summaryrefslogtreecommitdiff
path: root/www/wiki/extensions/ConfirmEdit
diff options
context:
space:
mode:
authorYaco <franco@reevo.org>2020-06-04 11:01:00 -0300
committerYaco <franco@reevo.org>2020-06-04 11:01:00 -0300
commitfc7369835258467bf97eb64f184b93691f9a9fd5 (patch)
treedaabd60089d2dd76d9f5fb416b005fbe159c799d /www/wiki/extensions/ConfirmEdit
first commit
Diffstat (limited to 'www/wiki/extensions/ConfirmEdit')
-rw-r--r--www/wiki/extensions/ConfirmEdit/AUTHORS.txt79
-rw-r--r--www/wiki/extensions/ConfirmEdit/CHANGELOG.md9
-rw-r--r--www/wiki/extensions/ConfirmEdit/CODE_OF_CONDUCT.md1
-rw-r--r--www/wiki/extensions/ConfirmEdit/COPYING339
-rw-r--r--www/wiki/extensions/ConfirmEdit/ConfirmEdit.alias.php139
-rw-r--r--www/wiki/extensions/ConfirmEdit/ConfirmEdit.php46
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha.php2
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/ApiFancyCaptchaReload.php34
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/FancyCaptcha.class.php465
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/FancyCaptcha.php14
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/HTMLFancyCaptchaField.php94
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/extension.json59
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ace.json11
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ady-cyrl.json13
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/aeb-latn.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/af.json16
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ais.json20
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/aln.json13
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/am.json9
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/an.json15
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ang.json9
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/anp.json11
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ar.json26
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/arq.json12
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/arz.json15
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/as.json19
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ast.json20
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/atj.json14
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/av.json10
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/awa.json11
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/az.json11
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/azb.json15
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ba.json23
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/bcc.json14
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/bcl.json16
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/be-tarask.json22
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/be.json15
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/bg.json23
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/bgn.json12
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/bho.json11
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/bn.json18
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/bqi.json11
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/br.json19
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/bs.json19
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/bto.json4
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ca.json20
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/cdo.json11
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ce.json17
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ceb.json9
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/chr.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ckb.json13
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/crh-cyrl.json5
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/crh-latn.json5
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/cs.json21
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/csb.json11
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/cu.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/cv.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/cy.json16
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/da.json19
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/de-formal.json16
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/de.json22
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/din.json12
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/diq.json22
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/dsb.json16
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/dty.json14
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ee.json5
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/egl.json9
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/el.json26
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/en.json18
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/eo.json20
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/es.json27
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/et.json19
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/eu.json18
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/fa.json26
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/fi.json24
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/fo.json13
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/fr.json27
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/frp.json17
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/frr.json11
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/fur.json11
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/fy.json10
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ga.json4
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/gcr.json11
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/gd.json12
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/gl.json23
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/glk.json10
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/gom-deva.json12
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/gom-latn.json12
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/gor.json11
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/got.json9
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/grc.json11
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/gsw.json19
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/gu.json20
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/hak.json11
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/haw.json5
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/he.json22
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/hi.json24
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/hif-latn.json11
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/hoc.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/hr.json18
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/hrx.json5
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/hsb.json16
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ht.json10
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/hu.json22
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/hy.json13
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/hyw.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ia.json19
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/id.json20
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ie.json9
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ilo.json18
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/inh.json11
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/io.json11
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/is.json16
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/it.json23
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ja.json25
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/jam.json11
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/jut.json17
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/jv.json20
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ka.json22
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/kaa.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/kab.json13
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/kbp.json11
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/kg.json4
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/khw.json11
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/kk-arab.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/kk-cyrl.json18
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/kk-latn.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/km.json17
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/kn.json12
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ko.json25
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/krc.json12
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/kri.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/krl.json13
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ksh.json19
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ku-latn.json10
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/kum.json12
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/kw.json11
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ky.json12
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/la.json16
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/lb.json19
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/lfn.json12
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/li.json17
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/lij.json19
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/lki.json19
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/lmo.json5
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/lo.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/lrc.json13
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/lt.json21
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/luz.json11
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/lv.json11
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/lzh.json9
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/mai.json12
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/map-bms.json5
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/mfe.json5
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/mg.json11
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/min.json10
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/mk.json20
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ml.json18
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/mn.json5
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/mo.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/mr.json20
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ms.json20
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/mt.json17
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/mwl.json12
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/my.json11
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/myv.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/mzn.json11
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/nan.json5
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/nap.json18
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/nb.json24
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/nds-nl.json16
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/nds.json12
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ne.json12
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/nl-informal.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/nl.json24
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/nn.json19
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/nys.json11
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/oc.json19
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/olo.json12
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/or.json17
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/os.json5
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ovd.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/pa.json14
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/pfl.json11
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/pl.json19
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/pms.json20
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/pnb.json17
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ppl.json4
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ps.json14
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/pt-br.json26
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/pt.json24
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/qqq.json25
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/qu.json13
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/rm.json11
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/rmf.json4
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ro.json20
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/roa-tara.json19
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ru.json25
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/rue.json15
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/rup.json5
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/sa.json17
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/sah.json16
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/sat.json13
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/sc.json5
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/scn.json12
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/sco.json11
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/sd.json11
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ses.json5
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/sgs.json11
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/sh.json11
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/shn.json12
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/si.json19
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/sk.json18
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/skr-arab.json13
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/sl.json18
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/so.json10
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/sq.json20
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/sr-ec.json24
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/sr-el.json21
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/stq.json12
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/sty.json11
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/su.json14
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/sv.json23
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/sw.json5
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/szl.json11
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ta.json17
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/tay.json11
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/tcy.json14
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/te.json17
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/tg-cyrl.json15
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/tg-latn.json12
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/th.json18
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/tk.json11
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/tl.json17
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/tr.json23
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/tt-cyrl.json12
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/tt-latn.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/tyv.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/udm.json12
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ug-arab.json10
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/uk.json26
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ur.json13
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/uz.json10
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/vec.json16
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/vep.json9
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/vi.json22
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/vo.json13
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/vro.json12
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/wa.json19
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/war.json12
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/wo.json11
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/wuu.json12
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/xmf.json11
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/yi.json13
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/yo.json13
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/yue.json20
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/zgh.json9
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/zh-hans.json24
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/zh-hant.json26
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/resources/ext.confirmEdit.fancyCaptcha.css42
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/resources/ext.confirmEdit.fancyCaptcha.js33
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/resources/images/ajax-loader-10x10.gifbin0 -> 6147 bytes
-rw-r--r--www/wiki/extensions/ConfirmEdit/FancyCaptcha/resources/images/fancycaptcha-reload-icon.pngbin0 -> 196 bytes
-rw-r--r--www/wiki/extensions/ConfirmEdit/Gruntfile.js41
-rw-r--r--www/wiki/extensions/ConfirmEdit/MathCaptcha.php2
-rw-r--r--www/wiki/extensions/ConfirmEdit/MathCaptcha/MathCaptcha.class.php126
-rw-r--r--www/wiki/extensions/ConfirmEdit/MathCaptcha/MathCaptcha.php14
-rw-r--r--www/wiki/extensions/ConfirmEdit/MathCaptcha/extension.json10
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha.php2
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha/QuestyCaptcha.class.php146
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha/QuestyCaptcha.php14
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha/extension.json16
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/aln.json14
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/ar.json18
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/ast.json14
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/ba.json17
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/be-tarask.json16
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/br.json15
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/bs.json16
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/ca.json10
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/cs.json15
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/cy.json14
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/de-formal.json16
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/de.json19
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/dsb.json14
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/el.json16
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/en.json13
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/eo.json13
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/es.json17
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/et.json14
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/eu.json9
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/fa.json15
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/fi.json15
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/fr.json19
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/gl.json15
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/gsw.json16
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/he.json15
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/hsb.json15
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/hu.json15
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/ia.json14
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/id.json17
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/ilo.json14
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/io.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/it.json16
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/ja.json17
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/ko.json18
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/ksh.json15
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/lb.json16
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/lij.json14
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/lt.json13
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/min.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/mk.json15
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/ml.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/ms.json15
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/mt.json14
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/nb.json18
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/nl-informal.json9
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/nl.json15
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/nn.json11
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/oc.json14
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/pl.json16
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/pms.json15
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/pt-br.json18
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/pt.json18
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/qqq.json17
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/ro.json14
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/roa-tara.json14
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/ru.json17
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/sk.json13
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/sl.json14
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/so.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/sr-ec.json15
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/sr-el.json14
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/sv.json16
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/te.json10
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/th.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/tl.json15
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/tr.json15
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/uk.json15
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/wa.json14
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/wuu.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/yi.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/zh-hans.json19
-rw-r--r--www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/zh-hant.json17
-rw-r--r--www/wiki/extensions/ConfirmEdit/README.md157
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptcha.php2
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptcha/HTMLReCaptchaField.php51
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptcha/HTMLSubmittedValueField.php31
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptcha/ReCaptcha.class.php200
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptcha/ReCaptcha.php14
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptcha/ReCaptchaAuthenticationRequest.php38
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptcha/extension.json25
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/ar.json17
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/ast.json20
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/ba.json16
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/be-tarask.json22
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/bn.json13
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/br.json14
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/bs.json14
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/cs.json16
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/cy.json13
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/de-formal.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/de.json23
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/dsb.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/en.json19
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/es.json18
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/fa.json14
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/fi.json14
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/fr.json26
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/gl.json22
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/gsw.json13
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/he.json15
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/hsb.json13
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/hu.json16
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/ia.json20
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/id.json13
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/it.json22
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/ja.json20
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/ko.json17
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/ksh.json13
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/lb.json13
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/lij.json20
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/lt.json20
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/mk.json21
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/ms.json13
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/mt.json13
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/nb.json13
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/nl-informal.json12
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/nl.json14
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/oc.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/pl.json15
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/pms.json14
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/pt-br.json20
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/pt.json22
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/qqq.json23
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/roa-tara.json20
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/ru.json24
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/si.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/sr-ec.json15
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/sr-el.json13
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/sv.json20
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/sw.json13
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/te.json13
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/tl.json14
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/uk.json24
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/vi.json14
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/zh-hans.json24
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/zh-hant.json24
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptcha/recaptchalib.php274
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha.php2
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/HTMLReCaptchaNoCaptchaField.php74
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/ReCaptchaNoCaptcha.class.php247
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/ReCaptchaNoCaptcha.php14
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/ReCaptchaNoCaptchaAuthenticationRequest.php30
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/extension.json20
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/ast.json16
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/ba.json10
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/ca.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/cs.json16
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/de.json16
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/en.json14
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/es.json14
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/fr.json19
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/gl.json16
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/ht.json9
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/hu.json16
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/ia.json16
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/it.json14
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/ja.json12
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/ko.json16
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/lb.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/lij.json16
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/lt.json16
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/mk.json16
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/nb.json16
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/pl.json13
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/pt-br.json16
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/pt.json18
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/qqq.json16
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/ru.json14
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/sv.json18
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/uk.json17
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/zh-hans.json16
-rw-r--r--www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/zh-hant.json17
-rw-r--r--www/wiki/extensions/ConfirmEdit/SimpleCaptcha/Captcha.php1170
-rw-r--r--www/wiki/extensions/ConfirmEdit/blacklist95
-rw-r--r--www/wiki/extensions/ConfirmEdit/captcha-old.py282
-rw-r--r--www/wiki/extensions/ConfirmEdit/captcha.py298
-rw-r--r--www/wiki/extensions/ConfirmEdit/composer.json22
-rw-r--r--www/wiki/extensions/ConfirmEdit/extension.json120
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/aa.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/ace.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/ady-cyrl.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/aeb-latn.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/af.json23
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/ais.json28
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/aln.json22
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/am.json11
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/an.json24
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/ang.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/anp.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/ar.json46
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/arq.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/arz.json22
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/as.json28
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/ast.json38
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/atj.json10
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/awa.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/az.json10
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/azb.json9
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/ba.json35
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/bcc.json21
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/bcl.json24
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/be-tarask.json29
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/be.json24
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/bg.json25
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/bgn.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/bho.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/bi.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/bn.json38
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/bqi.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/br.json32
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/bs.json30
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/ca.json28
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/cdo.json11
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/ce.json10
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/ceb.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/ch.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/chr.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/ckb.json10
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/cs.json42
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/csb.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/cv.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/cy.json23
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/da.json28
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/de-formal.json17
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/de.json43
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/din.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/diq.json44
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/dsb.json23
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/dty.json14
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/ee.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/el.json44
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/en-ca.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/en-gb.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/en.json36
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/eo.json39
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/es.json53
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/et.json26
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/eu.json25
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/fa.json42
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/fi.json40
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/fo.json19
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/fr.json52
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/frp.json23
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/frr.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/fur.json14
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/fy.json16
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/ga.json15
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/gcr.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/gd.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/gl.json41
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/glk.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/gom-deva.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/gom-latn.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/gor.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/grc.json10
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/gsw.json25
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/gu.json29
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/hak.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/he.json41
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/hi.json46
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/hif-latn.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/hr.json30
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/hrx.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/hsb.json23
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/ht.json15
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/hu.json34
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/hy.json9
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/ia.json37
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/id.json29
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/ie.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/ilo.json24
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/inh.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/io.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/is.json29
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/it.json43
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/ja.json46
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/jam.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/jut.json22
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/jv.json26
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/ka.json32
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/kaa.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/kab.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/kbp.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/khw.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/kk-arab.json12
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/kk-cyrl.json19
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/kk-latn.json12
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/km.json19
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/kn.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/ko.json41
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/krc.json9
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/krl.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/ksh.json26
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/ku-latn.json10
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/kum.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/kw.json12
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/ky.json11
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/la.json15
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/lad.json9
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/lag.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/lb.json33
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/lfn.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/li.json29
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/lij.json37
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/lki.json23
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/lkt.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/lo.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/lrc.json13
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/lt.json41
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/luz.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/lv.json24
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/mai.json14
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/mg.json9
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/min.json9
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/mk.json38
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/ml.json37
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/mn.json12
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/mr.json34
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/ms.json26
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/mt.json22
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/mwl.json9
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/my.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/myv.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/mzn.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/na.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/nah.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/nan.json10
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/nap.json36
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/nb.json43
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/nds-nl.json19
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/nds.json19
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/ne.json15
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/niu.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/nl-informal.json10
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/nl.json39
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/nn.json26
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/nys.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/oc.json24
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/olo.json12
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/or.json26
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/os.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/pa.json10
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/pam.json11
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/pdc.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/pfl.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/pih.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/pl.json45
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/pms.json25
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/pnb.json23
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/ps.json14
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/pt-br.json45
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/pt.json43
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/qqq.json49
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/qu.json10
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/rif.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/rm.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/ro.json28
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/roa-tara.json38
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/ru.json47
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/rue.json23
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/sa.json23
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/sah.json23
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/sat.json9
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/scn.json27
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/sco.json24
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/sd.json13
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/sgs.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/sh.json11
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/shi.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/shn.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/shy-latn.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/si.json26
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/sk.json23
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/skr-arab.json18
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/sl.json27
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/sm.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/sq.json27
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/sr-ec.json26
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/sr-el.json24
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/stq.json19
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/sty.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/su.json18
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/sv.json48
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/sw.json9
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/szl.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/ta.json27
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/tay.json12
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/tcy.json11
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/te.json24
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/tg-cyrl.json19
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/tg-latn.json19
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/th.json20
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/tk.json19
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/tl.json26
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/to.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/tr.json29
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/tru.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/tt-cyrl.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/udm.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/ug-arab.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/uk.json47
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/ur.json31
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/uz.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/vec.json24
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/vep.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/vi.json36
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/vo.json17
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/vro.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/wa.json27
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/war.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/wo.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/wuu.json18
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/xmf.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/yi.json14
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/yo.json10
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/yue.json28
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/zgh.json8
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/zh-hans.json45
-rw-r--r--www/wiki/extensions/ConfirmEdit/i18n/zh-hant.json48
-rw-r--r--www/wiki/extensions/ConfirmEdit/includes/CaptchaStore.php147
-rw-r--r--www/wiki/extensions/ConfirmEdit/includes/CaptchaTriggers.php17
-rw-r--r--www/wiki/extensions/ConfirmEdit/includes/CaptchaValue.php24
-rw-r--r--www/wiki/extensions/ConfirmEdit/includes/ConfirmEditHooks.php253
-rw-r--r--www/wiki/extensions/ConfirmEdit/includes/auth/CaptchaAuthenticationRequest.php87
-rw-r--r--www/wiki/extensions/ConfirmEdit/includes/auth/CaptchaPreAuthenticationProvider.php159
-rw-r--r--www/wiki/extensions/ConfirmEdit/includes/specials/SpecialCaptcha.php22
-rw-r--r--www/wiki/extensions/ConfirmEdit/includes/store/CaptchaCacheStore.php30
-rw-r--r--www/wiki/extensions/ConfirmEdit/includes/store/CaptchaHashStore.php28
-rw-r--r--www/wiki/extensions/ConfirmEdit/includes/store/CaptchaSessionStore.php26
-rw-r--r--www/wiki/extensions/ConfirmEdit/includes/store/CaptchaStore.php66
-rw-r--r--www/wiki/extensions/ConfirmEdit/maintenance/CountFancyCaptchas.php55
-rw-r--r--www/wiki/extensions/ConfirmEdit/maintenance/DeleteOldFancyCaptchas.php92
-rw-r--r--www/wiki/extensions/ConfirmEdit/maintenance/GenerateFancyCaptchas.php263
-rw-r--r--www/wiki/extensions/ConfirmEdit/phpcs.xml21
-rw-r--r--www/wiki/extensions/ConfirmEdit/resources/ext.confirmEdit.editPreview.ipwhitelist.styles.css7
-rw-r--r--www/wiki/extensions/ConfirmEdit/tests/CaptchaAuthenticationRequestTest.php52
-rw-r--r--www/wiki/extensions/ConfirmEdit/tests/CaptchaPreAuthenticationProviderTest.php294
-rw-r--r--www/wiki/extensions/ConfirmEdit/tests/HTMLFancyCaptchaFieldTest.php42
-rw-r--r--www/wiki/extensions/ConfirmEdit/tests/HTMLReCaptchaFieldTest.php23
-rw-r--r--www/wiki/extensions/ConfirmEdit/tests/HTMLReCaptchaNoCaptchaFieldTest.php29
-rw-r--r--www/wiki/extensions/ConfirmEdit/tests/HTMLSubmittedValueFieldTest.php29
-rw-r--r--www/wiki/extensions/ConfirmEdit/tests/QuestyCaptchaTest.php49
-rw-r--r--www/wiki/extensions/ConfirmEdit/tests/ReCaptchaAuthenticationRequestTest.php20
-rw-r--r--www/wiki/extensions/ConfirmEdit/tests/ReCaptchaNoCaptchaAuthenticationRequestTest.php18
-rw-r--r--www/wiki/extensions/ConfirmEdit/tests/phpunit/CaptchaAuthenticationRequestTest.php55
-rw-r--r--www/wiki/extensions/ConfirmEdit/tests/phpunit/CaptchaPreAuthenticationProviderTest.php304
-rw-r--r--www/wiki/extensions/ConfirmEdit/tests/phpunit/HTMLFancyCaptchaFieldTest.php45
-rw-r--r--www/wiki/extensions/ConfirmEdit/tests/phpunit/HTMLReCaptchaFieldTest.php26
-rw-r--r--www/wiki/extensions/ConfirmEdit/tests/phpunit/HTMLReCaptchaNoCaptchaFieldTest.php32
-rw-r--r--www/wiki/extensions/ConfirmEdit/tests/phpunit/HTMLSubmittedValueFieldTest.php32
-rw-r--r--www/wiki/extensions/ConfirmEdit/tests/phpunit/QuestyCaptchaTest.php57
-rw-r--r--www/wiki/extensions/ConfirmEdit/tests/phpunit/ReCaptchaAuthenticationRequestTest.php23
-rw-r--r--www/wiki/extensions/ConfirmEdit/tests/phpunit/ReCaptchaNoCaptchaAuthenticationRequestTest.php21
-rw-r--r--www/wiki/extensions/ConfirmEdit/tests/phpunit/SimpleCaptcha/CaptchaTest.php116
726 files changed, 18102 insertions, 0 deletions
diff --git a/www/wiki/extensions/ConfirmEdit/AUTHORS.txt b/www/wiki/extensions/ConfirmEdit/AUTHORS.txt
new file mode 100644
index 00000000..8a3ddb22
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/AUTHORS.txt
@@ -0,0 +1,79 @@
+Contributors (alphabetically)
+
+Aaron Schulz <aschulz@wikimedia.org>
+addshore <addshorewiki@gmail.com>
+Ævar Arnfjörð Bjarmason <avar@users.mediawiki.org>
+Alexandre Emsenhuber <ialex@users.mediawiki.org>
+Alex Monk <krenair@gmail.com>
+Alex Z. <mrzman@users.mediawiki.org>
+Amir E. Aharoni <amire80@users.mediawiki.org>
+Anders Wegge Jakobsen <wegge@users.mediawiki.org>
+Andrew Garrett <werdna@users.mediawiki.org>
+Antoine Musso <hashar@free.fr>
+Aryeh Gregor <simetrical@users.mediawiki.org>
+Bartosz Dziewoński <matma.rex@gmail.com>
+Bertrand Grondin <grondin@users.mediawiki.org>
+Brad Jorsch <anomie.wikipedia@gmail.com>
+Brian Wolff <bawolff+wn@gmail.com>
+Brion Vibber <brion@pobox.com>
+Bryan Tong Minh <btongminh@users.mediawiki.org>
+Chad Horohoe <chadh@wikimedia.org>
+Charles Melbye <charlie@users.mediawiki.org>
+CSteipp <csteipp@wikimedia.org>
+Derk-Jan Hartman <hartman@users.mediawiki.org>
+EBernhardson <ebernhardson@wikimedia.org>
+emufarmers <emufarmers@gmail.com>
+Federico Leva <federicoleva@tiscali.it>
+Florian Schmidt <florian.schmidt.stargatewissen@gmail.com>
+Gergő Tisza <gtisza@wikimedia.org>
+Gilles Dubuc <gdubuc@wikimedia.org>
+Glaisher <glaisher.wiki@gmail.com>
+Greg Sabino Mullane <greg@users.mediawiki.org>
+Happy-melon <happy-melon@users.mediawiki.org>
+Huji <huji@users.mediawiki.org>
+Ivan Lanin <ivanlanin@users.mediawiki.org>
+Jackmcbarn <jackmcbarn@gmail.com>
+jdlrobson <jdlrobson@gmail.com>
+Jeroen De Dauw <jeroendedauw@users.mediawiki.org>
+Jimmy Collins <collinj@users.mediawiki.org>
+John Du Hart <johnduhart@users.mediawiki.org>
+Kai_Nissen_(WMDE) <kai.nissen@wikimedia.de>
+Kunal Mehta <legoktm@gmail.com>
+lalei <kurarei@gmail.com>
+Leon Weber <leon@users.mediawiki.org>
+Luis Felipe Schenone <schenonef@gmail.com>
+Marius Hoch <hoo@online.de>
+Mark A. Hershberger <mah@everybody.org>
+Matthew Flaschen <mflaschen@wikimedia.org>
+Max Semenik <maxsem.wiki@gmail.com>
+Nick Jenkins <nickj@users.mediawiki.org>
+Niklas Laxström <niklas.laxstrom@gmail.com>
+Ori Livneh <ori@wikimedia.org>
+Paladox <thomasmulhall410@yahoo.com>
+Peter Gehres <pgehres@wikimedia.org>
+Platonides <platonides@gmail.com>
+Purodha B Blissenbach <purodha@users.mediawiki.org>
+Raimond Spekking <raimond.spekking@gmail.com>
+Ricordisamoa <ricordisamoa@openmailbox.org>
+River Tarnell <river@users.mediawiki.org>
+Roan Kattouw <roan.kattouw@gmail.com>
+Rob Church <robchurch@users.mediawiki.org>
+Rotem Liss <rotem@users.mediawiki.org>
+Sam Reed <reedy@wikimedia.org>
+Shinjiman <shinjiman@users.mediawiki.org>
+Siebrand Mazeland <siebrand@kitano.nl>
+Southparkfan <southparkfan223@hotmail.com>
+S Page <spage@wikimedia.org>
+Sumit Asthana <asthana.sumit23@gmail.com>
+Sven Heinemann <bachsau@users.mediawiki.org>
+Tacsipacsi <tacsipacsi@jnet.hu>
+tholam <t.lam@lamsinfosystem.com>
+Timo Tijhof <krinklemail@gmail.com>
+Tim Starling <tstarling@wikimedia.org>
+Tobias <churchofemacs@users.mediawiki.org>
+tonythomas01 <01tonythomas@gmail.com>
+Translation updater bot <l10n-bot@translatewiki.net>
+Umherirrender <umherirrender_de.wp@web.de>
+Yaron Koren <yaron57@gmail.com>
+Yuki Shira <shirayuking@gmail.com>
+YuviPanda <yuvipanda@gmail.com>
diff --git a/www/wiki/extensions/ConfirmEdit/CHANGELOG.md b/www/wiki/extensions/ConfirmEdit/CHANGELOG.md
new file mode 100644
index 00000000..328ef157
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/CHANGELOG.md
@@ -0,0 +1,9 @@
+ConfirmEdit Changelog
+=========
+
+### Changelog
+
+#### Version 1.2
+
+Fixes bug 46132 - ConfirmEdit fatal error when using MathCaptcha and current Math extension.
+See <https://phabricator.wikimedia.org/T48132>.
diff --git a/www/wiki/extensions/ConfirmEdit/CODE_OF_CONDUCT.md b/www/wiki/extensions/ConfirmEdit/CODE_OF_CONDUCT.md
new file mode 100644
index 00000000..d8e5d087
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/CODE_OF_CONDUCT.md
@@ -0,0 +1 @@
+The development of this software is covered by a [Code of Conduct](https://www.mediawiki.org/wiki/Code_of_Conduct).
diff --git a/www/wiki/extensions/ConfirmEdit/COPYING b/www/wiki/extensions/ConfirmEdit/COPYING
new file mode 100644
index 00000000..d159169d
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/COPYING
@@ -0,0 +1,339 @@
+ 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 Lesser 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.
+
+ GNU GENERAL PUBLIC LICENSE
+ 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 Lesser General
+Public License instead of this License.
diff --git a/www/wiki/extensions/ConfirmEdit/ConfirmEdit.alias.php b/www/wiki/extensions/ConfirmEdit/ConfirmEdit.alias.php
new file mode 100644
index 00000000..2b992cb8
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ConfirmEdit.alias.php
@@ -0,0 +1,139 @@
+<?php
+/**
+ * Aliases for special pages
+ *
+ * @file
+ * @ingroup Extensions
+ */
+
+$specialPageAliases = [];
+
+/** English (English) */
+$specialPageAliases['en'] = [
+ 'Captcha' => [ 'Captcha' ],
+];
+
+/** Arabic (العربية) */
+$specialPageAliases['ar'] = [
+ 'Captcha' => [ 'كابتشا' ],
+];
+
+/** Egyptian Arabic (مصرى) */
+$specialPageAliases['arz'] = [
+ 'Captcha' => [ 'كابتشا' ],
+];
+
+/** Western Balochi (بلوچی رخشانی) */
+$specialPageAliases['bgn'] = [
+ 'Captcha' => [ 'گپچا' ],
+];
+
+/** Min Dong Chinese (Mìng-dĕ̤ng-ngṳ̄) */
+$specialPageAliases['cdo'] = [
+ 'Captcha' => [ '驗證碼' ],
+];
+
+/** Zazaki (Zazaki) */
+$specialPageAliases['diq'] = [
+ 'Captcha' => [ 'Kodêİtımadi' ],
+];
+
+/** Esperanto (Esperanto) */
+$specialPageAliases['eo'] = [
+ 'Captcha' => [ 'Kontraŭspamilo' ],
+];
+
+/** Estonian (eesti) */
+$specialPageAliases['et'] = [
+ 'Captcha' => [ 'Robotilõks' ],
+];
+
+/** Persian (فارسی) */
+$specialPageAliases['fa'] = [
+ 'Captcha' => [ 'کپچا' ],
+];
+
+/** Finnish (suomi) */
+$specialPageAliases['fi'] = [
+ 'Captcha' => [ 'Ihmiskäyttäjävarmistus' ],
+];
+
+/** Galician (galego) */
+$specialPageAliases['gl'] = [
+ 'Captcha' => [ 'Captcha' ],
+];
+
+/** Hawaiian (Hawai`i) */
+$specialPageAliases['haw'] = [
+ 'Captcha' => [ 'Kapakā', 'Kapaka' ],
+];
+
+/** Hindi (हिन्दी) */
+$specialPageAliases['hi'] = [
+ 'Captcha' => [ 'कैप्चा', 'कैपचा' ],
+];
+
+/** Japanese (日本語) */
+$specialPageAliases['ja'] = [
+ 'Captcha' => [ '画像認証' ],
+];
+
+/** Korean (한국어) */
+$specialPageAliases['ko'] = [
+ 'Captcha' => [ '캡차' ],
+];
+
+/** Colognian (Ripoarisch) */
+$specialPageAliases['ksh'] = [
+ 'Captcha' => [ 'Kaptscha' ],
+];
+
+/** Cornish (kernowek) */
+$specialPageAliases['kw'] = [
+ 'Captcha' => [ 'Captcha' ],
+];
+
+/** Northern Luri (لۊری شومالی) */
+$specialPageAliases['lrc'] = [
+ 'Captcha' => [ 'رازینە_کأپچا' ],
+];
+
+/** Macedonian (македонски) */
+$specialPageAliases['mk'] = [
+ 'Captcha' => [ 'Captcha' ],
+];
+
+/** Malayalam (മലയാളം) */
+$specialPageAliases['ml'] = [
+ 'Captcha' => [ 'ക്യാപ്ച' ],
+];
+
+/** Serbian (Cyrillic script) (српски (ћирилица)‎) */
+$specialPageAliases['sr-ec'] = [
+ 'Captcha' => [ 'ПотврдниКод', 'Потврдни_код' ],
+];
+
+/** Turkish (Türkçe) */
+$specialPageAliases['tr'] = [
+ 'Captcha' => [ 'GüvenlikKodu' ],
+];
+
+/** Urdu (اردو) */
+$specialPageAliases['ur'] = [
+ 'Captcha' => [ 'کیپچا' ],
+];
+
+/** Cantonese (粵語) */
+$specialPageAliases['yue'] = [
+ 'Captcha' => [ '驗證碼' ],
+];
+
+/** Simplified Chinese (中文(简体)‎) */
+$specialPageAliases['zh-hans'] = [
+ 'Captcha' => [ '验证码' ],
+];
+
+/** Traditional Chinese (中文(繁體)‎) */
+$specialPageAliases['zh-hant'] = [
+ 'Captcha' => [ '驗證碼', '認證碼' ],
+];
diff --git a/www/wiki/extensions/ConfirmEdit/ConfirmEdit.php b/www/wiki/extensions/ConfirmEdit/ConfirmEdit.php
new file mode 100644
index 00000000..22cb25fe
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ConfirmEdit.php
@@ -0,0 +1,46 @@
+<?php
+
+/**
+ * ConfirmEdit MediaWiki extension.
+ *
+ * This is a framework that holds a variety of CAPTCHA tools. The
+ * default one, 'SimpleCaptcha', is not intended as a production-
+ * level CAPTCHA system, and another one of the options provided
+ * should be used in its place for any real usages.
+ *
+ * Copyright (C) 2005-2007 Brion Vibber <brion@wikimedia.org>
+ * http://www.mediawiki.org/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Extensions
+ */
+
+if ( function_exists( 'wfLoadExtension' ) ) {
+ wfLoadExtension( 'ConfirmEdit' );
+ // Keep i18n globals so mergeMessageFileList.php doesn't break
+ $wgMessagesDirs['ConfirmEdit'] = __DIR__ . '/i18n';
+ $wgExtensionMessagesFiles['ConfirmEditAlias'] = __DIR__ . '/ConfirmEdit.alias.php';
+ wfWarn(
+ 'Deprecated PHP entry point used for ConfirmEdit extension. ' .
+ 'Please use wfLoadExtension instead, ' .
+ 'see https://www.mediawiki.org/wiki/Extension_registration for more details.'
+ );
+ return;
+} else {
+ die( 'This version of the ConfirmEdit extension requires MediaWiki 1.25+' );
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha.php b/www/wiki/extensions/ConfirmEdit/FancyCaptcha.php
new file mode 100644
index 00000000..5d5da32d
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha.php
@@ -0,0 +1,2 @@
+<?php
+require_once __DIR__ . "/FancyCaptcha/FancyCaptcha.php";
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/ApiFancyCaptchaReload.php b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/ApiFancyCaptchaReload.php
new file mode 100644
index 00000000..f3e0d11b
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/ApiFancyCaptchaReload.php
@@ -0,0 +1,34 @@
+<?php
+/**
+ * Api module to reload FancyCaptcha
+ *
+ * @ingroup API
+ * @ingroup Extensions
+ */
+class ApiFancyCaptchaReload extends ApiBase {
+ public function execute() {
+ # Get a new FancyCaptcha form data
+ $captcha = new FancyCaptcha();
+ $info = $captcha->getCaptcha();
+ $captchaIndex = $captcha->storeCaptcha( $info );
+
+ $result = $this->getResult();
+ $result->addValue( null, $this->getModuleName(), [ 'index' => $captchaIndex ] );
+ return true;
+ }
+
+ public function getAllowedParams() {
+ return [];
+ }
+
+ /**
+ * @see ApiBase::getExamplesMessages()
+ * @return array
+ */
+ protected function getExamplesMessages() {
+ return [
+ 'action=fancycaptchareload'
+ => 'apihelp-fancycaptchareload-example-1',
+ ];
+ }
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/FancyCaptcha.class.php b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/FancyCaptcha.class.php
new file mode 100644
index 00000000..3010374f
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/FancyCaptcha.class.php
@@ -0,0 +1,465 @@
+<?php
+
+use MediaWiki\Auth\AuthenticationRequest;
+use MediaWiki\Auth\AuthManager;
+
+/**
+ * FancyCaptcha for displaying captchas precomputed by captcha.py
+ */
+class FancyCaptcha extends SimpleCaptcha {
+ // used for fancycaptcha-edit, fancycaptcha-addurl, fancycaptcha-badlogin,
+ // fancycaptcha-accountcreate, fancycaptcha-create, fancycaptcha-sendemail via getMessage()
+ protected static $messagePrefix = 'fancycaptcha-';
+
+ /**
+ * @return FileBackend
+ */
+ public function getBackend() {
+ global $wgCaptchaFileBackend, $wgCaptchaDirectory;
+
+ if ( $wgCaptchaFileBackend ) {
+ return FileBackendGroup::singleton()->get( $wgCaptchaFileBackend );
+ } else {
+ static $backend = null;
+ if ( !$backend ) {
+ $backend = new FSFileBackend( [
+ 'name' => 'captcha-backend',
+ 'wikiId' => wfWikiID(),
+ 'lockManager' => new NullLockManager( [] ),
+ 'containerPaths' => [ 'captcha-render' => $wgCaptchaDirectory ],
+ 'fileMode' => 777,
+ 'obResetFunc' => 'wfResetOutputBuffers',
+ 'streamMimeFunc' => [ 'StreamFile', 'contentTypeFromPath' ]
+ ] );
+ }
+ return $backend;
+ }
+ }
+
+ /**
+ * @deprecated Use getCaptchaCount instead for an accurate figure
+ * @return int Number of captcha files
+ */
+ public function estimateCaptchaCount() {
+ wfDeprecated( __METHOD__ );
+ return $this->getCaptchaCount();
+ }
+
+ /**
+ * @return int Number of captcha files
+ */
+ public function getCaptchaCount() {
+ $backend = $this->getBackend();
+ $files = $backend->getFileList(
+ [ 'dir' => $backend->getRootStoragePath() . '/captcha-render' ]
+ );
+
+ return iterator_count( $files );
+ }
+
+ /**
+ * Check if the submitted form matches the captcha session data provided
+ * by the plugin when the form was generated.
+ *
+ * @param string $answer
+ * @param array $info
+ * @return bool
+ */
+ function keyMatch( $answer, $info ) {
+ global $wgCaptchaSecret;
+
+ $digest = $wgCaptchaSecret . $info['salt'] . $answer . $wgCaptchaSecret . $info['salt'];
+ $answerHash = substr( md5( $digest ), 0, 16 );
+
+ if ( $answerHash == $info['hash'] ) {
+ wfDebug( "FancyCaptcha: answer hash matches expected {$info['hash']}\n" );
+ return true;
+ } else {
+ wfDebug( "FancyCaptcha: answer hashes to $answerHash, expected {$info['hash']}\n" );
+ return false;
+ }
+ }
+
+ /**
+ * @param array &$resultArr
+ */
+ function addCaptchaAPI( &$resultArr ) {
+ $info = $this->pickImage();
+ if ( !$info ) {
+ $resultArr['captcha']['error'] = 'Out of images';
+ return;
+ }
+ $index = $this->storeCaptcha( $info );
+ $title = SpecialPage::getTitleFor( 'Captcha', 'image' );
+ $resultArr['captcha'] = $this->describeCaptchaType();
+ $resultArr['captcha']['id'] = $index;
+ $resultArr['captcha']['url'] = $title->getLocalURL( 'wpCaptchaId=' . urlencode( $index ) );
+ }
+
+ /**
+ * @return array
+ */
+ public function describeCaptchaType() {
+ return [
+ 'type' => 'image',
+ 'mime' => 'image/png',
+ ];
+ }
+
+ /**
+ * @param int $tabIndex
+ * @return array
+ */
+ function getFormInformation( $tabIndex = 1 ) {
+ $modules = [];
+
+ $title = SpecialPage::getTitleFor( 'Captcha', 'image' );
+ $info = $this->getCaptcha();
+ $index = $this->storeCaptcha( $info );
+
+ // Loaded only for clients with JS enabled
+ $modules[] = 'ext.confirmEdit.fancyCaptcha';
+
+ $captchaReload = Html::element(
+ 'small',
+ [
+ 'class' => 'confirmedit-captcha-reload fancycaptcha-reload'
+ ],
+ wfMessage( 'fancycaptcha-reload-text' )->text()
+ );
+
+ $form = Html::openElement( 'div' ) .
+ Html::element( 'label', [
+ 'for' => 'wpCaptchaWord',
+ ],
+ wfMessage( 'captcha-label' )->text() . ' ' . wfMessage( 'fancycaptcha-captcha' )->text()
+ ) .
+ Html::openElement( 'div', [ 'class' => 'fancycaptcha-captcha-container' ] ) .
+ Html::openElement( 'div', [ 'class' => 'fancycaptcha-captcha-and-reload' ] ) .
+ Html::openElement( 'div', [ 'class' => 'fancycaptcha-image-container' ] ) .
+ Html::element( 'img', [
+ 'class' => 'fancycaptcha-image',
+ 'src' => $title->getLocalURL( 'wpCaptchaId=' . urlencode( $index ) ),
+ 'alt' => ''
+ ]
+ ) . $captchaReload . Html::closeElement( 'div' ) . Html::closeElement( 'div' ) . "\n" .
+ Html::element( 'input', [
+ 'name' => 'wpCaptchaWord',
+ 'class' => 'mw-ui-input',
+ 'id' => 'wpCaptchaWord',
+ 'type' => 'text',
+ 'size' => '12', // max_length in captcha.py plus fudge factor
+ 'autocomplete' => 'off',
+ 'autocorrect' => 'off',
+ 'autocapitalize' => 'off',
+ 'required' => 'required',
+ 'tabindex' => $tabIndex,
+ 'placeholder' => wfMessage( 'fancycaptcha-imgcaptcha-ph' )
+ ]
+ ); // tab in before the edit textarea
+ if ( $this->action == 'createaccount' ) {
+ // use raw element, because the message can contain links or some other html
+ $form .= Html::rawElement( 'small', [
+ 'class' => 'mw-createacct-captcha-assisted'
+ ], wfMessage( 'createacct-imgcaptcha-help' )->parse()
+ );
+ }
+ $form .= Html::element( 'input', [
+ 'type' => 'hidden',
+ 'name' => 'wpCaptchaId',
+ 'id' => 'wpCaptchaId',
+ 'value' => $index
+ ]
+ ) . Html::closeElement( 'div' ) . Html::closeElement( 'div' ) . "\n";
+
+ return [
+ 'html' => $form,
+ 'modules' => $modules,
+ // Uses addModuleStyles so it is loaded when JS is disabled.
+ 'modulestyles' => [ 'ext.confirmEdit.fancyCaptcha.styles' ],
+ ];
+ }
+
+ /**
+ * Select a previously generated captcha image from the queue.
+ * @return mixed tuple of (salt key, text hash) or false if no image to find
+ */
+ protected function pickImage() {
+ global $wgCaptchaDirectoryLevels;
+
+ $lockouts = 0; // number of times another process claimed a file before this one
+ $baseDir = $this->getBackend()->getRootStoragePath() . '/captcha-render';
+ return $this->pickImageDir( $baseDir, $wgCaptchaDirectoryLevels, $lockouts );
+ }
+
+ /**
+ * @param string $directory
+ * @param int $levels
+ * @param int &$lockouts
+ * @return array|bool
+ */
+ protected function pickImageDir( $directory, $levels, &$lockouts ) {
+ global $wgMemc;
+
+ if ( $levels <= 0 ) { // $directory has regular files
+ return $this->pickImageFromDir( $directory, $lockouts );
+ }
+
+ $backend = $this->getBackend();
+
+ $key = "fancycaptcha:dirlist:{$backend->getWikiId()}:" . sha1( $directory );
+ $dirs = $wgMemc->get( $key ); // check cache
+ if ( !is_array( $dirs ) || !count( $dirs ) ) { // cache miss
+ $dirs = []; // subdirs actually present...
+ foreach ( $backend->getTopDirectoryList( [ 'dir' => $directory ] ) as $entry ) {
+ if ( ctype_xdigit( $entry ) && strlen( $entry ) == 1 ) {
+ $dirs[] = $entry;
+ }
+ }
+ wfDebug( "Cache miss for $directory subdirectory listing.\n" );
+ if ( count( $dirs ) ) {
+ $wgMemc->set( $key, $dirs, 86400 );
+ }
+ }
+
+ if ( !count( $dirs ) ) {
+ // Remove this directory if empty so callers don't keep looking here
+ $backend->clean( [ 'dir' => $directory ] );
+ return false; // none found
+ }
+
+ $place = mt_rand( 0, count( $dirs ) - 1 ); // pick a random subdir
+ // In case all dirs are not filled, cycle through next digits...
+ $fancyCount = count( $dirs );
+ for ( $j = 0; $j < $fancyCount; $j++ ) {
+ $char = $dirs[( $place + $j ) % count( $dirs )];
+ $info = $this->pickImageDir( "$directory/$char", $levels - 1, $lockouts );
+ if ( $info ) {
+ return $info; // found a captcha
+ } else {
+ wfDebug( "Could not find captcha in $directory.\n" );
+ $wgMemc->delete( $key ); // files changed on disk?
+ }
+ }
+
+ return false; // didn't find any images in this directory... empty?
+ }
+
+ /**
+ * @param string $directory
+ * @param int &$lockouts
+ * @return array|bool
+ */
+ protected function pickImageFromDir( $directory, &$lockouts ) {
+ global $wgMemc;
+
+ $backend = $this->getBackend();
+
+ $key = "fancycaptcha:filelist:{$backend->getWikiId()}:" . sha1( $directory );
+ $files = $wgMemc->get( $key ); // check cache
+ if ( !is_array( $files ) || !count( $files ) ) { // cache miss
+ $files = []; // captcha files
+ foreach ( $backend->getTopFileList( [ 'dir' => $directory ] ) as $entry ) {
+ $files[] = $entry;
+ if ( count( $files ) >= 500 ) { // sanity
+ wfDebug( 'Skipping some captchas; $wgCaptchaDirectoryLevels set too low?.' );
+ break;
+ }
+ }
+ if ( count( $files ) ) {
+ $wgMemc->set( $key, $files, 86400 );
+ }
+ wfDebug( "Cache miss for $directory captcha listing.\n" );
+ }
+
+ if ( !count( $files ) ) {
+ // Remove this directory if empty so callers don't keep looking here
+ $backend->clean( [ 'dir' => $directory ] );
+ return false;
+ }
+
+ $info = $this->pickImageFromList( $directory, $files, $lockouts );
+ if ( !$info ) {
+ wfDebug( "Could not find captcha in $directory.\n" );
+ $wgMemc->delete( $key ); // files changed on disk?
+ }
+
+ return $info;
+ }
+
+ /**
+ * @param string $directory
+ * @param array $files
+ * @param int &$lockouts
+ * @return array|bool
+ */
+ protected function pickImageFromList( $directory, array $files, &$lockouts ) {
+ global $wgMemc, $wgCaptchaDeleteOnSolve;
+
+ if ( !count( $files ) ) {
+ return false; // none found
+ }
+
+ $backend = $this->getBackend();
+ $place = mt_rand( 0, count( $files ) - 1 ); // pick a random file
+ $misses = 0; // number of files in listing that don't actually exist
+ $fancyImageCount = count( $files );
+ for ( $j = 0; $j < $fancyImageCount; $j++ ) {
+ $entry = $files[( $place + $j ) % count( $files )];
+ if ( preg_match( '/^image_([0-9a-f]+)_([0-9a-f]+)\\.png$/', $entry, $matches ) ) {
+ if ( $wgCaptchaDeleteOnSolve ) { // captcha will be deleted when solved
+ $key = "fancycaptcha:filelock:{$backend->getWikiId()}:" . sha1( $entry );
+ // Try to claim this captcha for 10 minutes (for the user to solve)...
+ if ( ++$lockouts <= 10 && !$wgMemc->add( $key, '1', 600 ) ) {
+ continue; // could not acquire (skip it to avoid race conditions)
+ }
+ }
+ if ( !$backend->fileExists( [ 'src' => "$directory/$entry" ] ) ) {
+ if ( ++$misses >= 5 ) { // too many files in the listing don't exist
+ break; // listing cache too stale? break out so it will be cleared
+ }
+ continue; // try next file
+ }
+ return [
+ 'salt' => $matches[1],
+ 'hash' => $matches[2],
+ 'viewed' => false,
+ ];
+ }
+ }
+
+ return false; // none found
+ }
+
+ /**
+ * @return bool|StatusValue
+ */
+ function showImage() {
+ global $wgOut, $wgRequest;
+
+ $wgOut->disable();
+
+ $index = $wgRequest->getVal( 'wpCaptchaId' );
+ $info = $this->retrieveCaptcha( $index );
+ if ( $info ) {
+ $timestamp = new MWTimestamp();
+ $info['viewed'] = $timestamp->getTimestamp();
+ $this->storeCaptcha( $info );
+
+ $salt = $info['salt'];
+ $hash = $info['hash'];
+
+ return $this->getBackend()->streamFile( [
+ 'src' => $this->imagePath( $salt, $hash ),
+ 'headers' => [ "Cache-Control: private, s-maxage=0, max-age=3600" ]
+ ] )->isOK();
+ }
+
+ wfHttpError( 400, 'Request Error', 'Requested bogus captcha image' );
+ return false;
+ }
+
+ /**
+ * @param string $salt
+ * @param string $hash
+ * @return string
+ */
+ public function imagePath( $salt, $hash ) {
+ global $wgCaptchaDirectoryLevels;
+
+ $file = $this->getBackend()->getRootStoragePath() . '/captcha-render/';
+ for ( $i = 0; $i < $wgCaptchaDirectoryLevels; $i++ ) {
+ $file .= $hash{ $i } . '/';
+ }
+ $file .= "image_{$salt}_{$hash}.png";
+
+ return $file;
+ }
+
+ /**
+ * @param string $basename
+ * @return array (salt, hash)
+ * @throws Exception
+ */
+ public function hashFromImageName( $basename ) {
+ if ( preg_match( '/^image_([0-9a-f]+)_([0-9a-f]+)\\.png$/', $basename, $matches ) ) {
+ return [ $matches[1], $matches[2] ];
+ } else {
+ throw new Exception( "Invalid filename '$basename'.\n" );
+ }
+ }
+
+ /**
+ * Delete a solved captcha image, if $wgCaptchaDeleteOnSolve is true.
+ * @inheritDoc
+ */
+ protected function passCaptcha( $index, $word ) {
+ global $wgCaptchaDeleteOnSolve;
+
+ $info = $this->retrieveCaptcha( $index ); // get the captcha info before it gets deleted
+ $pass = parent::passCaptcha( $index, $word );
+
+ if ( $pass && $wgCaptchaDeleteOnSolve ) {
+ $this->getBackend()->quickDelete( [
+ 'src' => $this->imagePath( $info['salt'], $info['hash'] )
+ ] );
+ }
+
+ return $pass;
+ }
+
+ /**
+ * Returns an array with 'salt' and 'hash' keys. Hash is
+ * md5( $wgCaptchaSecret . $salt . $answer . $wgCaptchaSecret . $salt )[0..15]
+ * @return array
+ * @throws Exception When a captcha image cannot be produced.
+ */
+ public function getCaptcha() {
+ $info = $this->pickImage();
+ if ( !$info ) {
+ throw new UnderflowException( 'Ran out of captcha images' );
+ }
+ return $info;
+ }
+
+ /**
+ * @param array $captchaData
+ * @param string $id
+ * @return string
+ */
+ public function getCaptchaInfo( $captchaData, $id ) {
+ $title = SpecialPage::getTitleFor( 'Captcha', 'image' );
+ return $title->getLocalURL( 'wpCaptchaId=' . urlencode( $id ) );
+ }
+
+ /**
+ * @param array $requests
+ * @param array $fieldInfo
+ * @param array &$formDescriptor
+ * @param string $action
+ */
+ public function onAuthChangeFormFields(
+ array $requests, array $fieldInfo, array &$formDescriptor, $action
+ ) {
+ /** @var CaptchaAuthenticationRequest $req */
+ $req =
+ AuthenticationRequest::getRequestByClass( $requests,
+ CaptchaAuthenticationRequest::class, true );
+ if ( !$req ) {
+ return;
+ }
+
+ // HTMLFancyCaptchaField will include this
+ unset( $formDescriptor['captchaInfo' ] );
+
+ $formDescriptor['captchaWord'] = [
+ 'class' => HTMLFancyCaptchaField::class,
+ 'imageUrl' => $this->getCaptchaInfo( $req->captchaData, $req->captchaId ),
+ 'label-message' => $this->getMessage( $this->action ),
+ 'showCreateHelp' => in_array( $action, [
+ AuthManager::ACTION_CREATE,
+ AuthManager::ACTION_CREATE_CONTINUE
+ ], true ),
+ ] + $formDescriptor['captchaWord'];
+ }
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/FancyCaptcha.php b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/FancyCaptcha.php
new file mode 100644
index 00000000..81955bd6
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/FancyCaptcha.php
@@ -0,0 +1,14 @@
+<?php
+if ( function_exists( 'wfLoadExtension' ) ) {
+ wfLoadExtension( 'ConfirmEdit/FancyCaptcha' );
+ // Keep i18n globals so mergeMessageFileList.php doesn't break
+ $wgMessagesDirs['FancyCaptcha'] = __DIR__ . '/i18n';
+ /* wfWarn(
+ 'Deprecated PHP entry point used for FancyCaptcha extension. ' .
+ 'Please use wfLoadExtension instead, ' .
+ 'see https://www.mediawiki.org/wiki/Extension_registration for more details.'
+ ); */
+ return;
+} else {
+ die( 'This version of the FancyCaptcha extension requires MediaWiki 1.25+' );
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/HTMLFancyCaptchaField.php b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/HTMLFancyCaptchaField.php
new file mode 100644
index 00000000..52b0da38
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/HTMLFancyCaptchaField.php
@@ -0,0 +1,94 @@
+<?php
+
+/**
+ * Captcha input field for FancyCaptcha that displays a question and returns the answer.
+ * Does not include the captcha ID; that must be included in the form as a separate hidden field.
+ */
+class HTMLFancyCaptchaField extends HTMLFormField {
+ /** @var string */
+ protected $imageUrl;
+
+ /** @var bool */
+ protected $showCreateHelp;
+
+ protected $mClass = 'captcha';
+
+ /**
+ * Apart from normal HTMLFormField parameters, recognizes the following keys:
+ * - 'imageUrl': (string, required) src of the captcha image
+ * - 'showCreateHelp': (bool) show some extra messaging that's only relevant at account creation
+ * @param array $params
+ */
+ public function __construct( array $params ) {
+ parent::__construct( $params );
+ $this->imageUrl = $params['imageUrl'];
+ $this->showCreateHelp = !empty( $params['showCreateHelp'] );
+ }
+
+ public function getInputHTML( $value ) {
+ $out = $this->mParent->getOutput();
+
+ // Uses addModuleStyles so it is loaded even when JS is disabled.
+ $out->addModuleStyles( 'ext.confirmEdit.fancyCaptcha.styles' );
+
+ // Loaded only for clients with JS enabled
+ $out->addModules( 'ext.confirmEdit.fancyCaptcha' );
+
+ $captchaReload = Html::element(
+ 'small',
+ [ 'class' => 'confirmedit-captcha-reload fancycaptcha-reload' ],
+ $this->mParent->msg( 'fancycaptcha-reload-text' )->text()
+ );
+
+ $attribs = [
+ 'type' => 'text',
+ 'id' => $this->mID,
+ 'name' => $this->mName,
+ 'class' => 'mw-ui-input',
+ 'size' => '12', // max_length in captcha.py plus fudge factor
+ 'dir' => $this->mDir,
+ 'autocomplete' => 'off',
+ 'autocorrect' => 'off',
+ 'autocapitalize' => 'off',
+ 'placeholder' => $this->mParent->msg( 'fancycaptcha-imgcaptcha-ph' )->text()
+ ];
+ $attribs += $this->getAttributes( [ 'tabindex', 'required', 'autofocus' ] );
+
+ $html = Html::openElement( 'div', [ 'class' => 'fancycaptcha-captcha-container' ] )
+ . Html::openElement( 'div', [ 'class' => 'fancycaptcha-captcha-and-reload' ] )
+ . Html::openElement( 'div', [ 'class' => 'fancycaptcha-image-container' ] )
+ . Html::element( 'img', [
+ 'class' => 'fancycaptcha-image',
+ 'src' => $this->imageUrl,
+ 'alt' => ''
+ ] ) . $captchaReload . Html::closeElement( 'div' ) . Html::closeElement( 'div' ) . "\n"
+ . Html::element( 'input', $attribs );
+
+ if ( $this->showCreateHelp ) {
+ // use raw element, the message will contain a link
+ $html .= Html::rawElement( 'small', [
+ 'class' => 'mw-createacct-captcha-assisted'
+ ], $this->mParent->msg( 'createacct-imgcaptcha-help' )->parse() );
+ }
+
+ $html .= Html::closeElement( 'div' );
+
+ return $html;
+ }
+
+ public function getLabel() {
+ // slight abuse of what getLabel() should mean; $mLabel is used for the pre-label text
+ // as the actual label is always the same
+ return $this->mParent->msg( 'captcha-label' )->text() . ' '
+ . $this->mParent->msg( 'fancycaptcha-captcha' )->text();
+ }
+
+ public function getLabelHtml( $cellAttributes = [] ) {
+ $labelHtml = parent::getLabelHtml( $cellAttributes );
+ if ( $this->mLabel ) {
+ // use raw element, the message will contain a link
+ $labelHtml = Html::rawElement( 'p', [], $this->mLabel ) . $labelHtml;
+ }
+ return $labelHtml;
+ }
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/extension.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/extension.json
new file mode 100644
index 00000000..d69472f5
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/extension.json
@@ -0,0 +1,59 @@
+{
+ "name": "FancyCaptcha",
+ "author": [
+ "Brion Vibber",
+ "..."
+ ],
+ "url": "https://www.mediawiki.org/wiki/Extension:ConfirmEdit#FancyCaptcha",
+ "descriptionmsg": "fancycaptcha-desc",
+ "license-name": "GPL-2.0-or-later",
+ "type": "antispam",
+ "APIModules": {
+ "fancycaptchareload": "ApiFancyCaptchaReload"
+ },
+ "MessagesDirs": {
+ "FancyCaptcha": [
+ "i18n"
+ ]
+ },
+ "AutoloadClasses": {
+ "FancyCaptcha": "FancyCaptcha.class.php",
+ "HTMLFancyCaptchaField": "HTMLFancyCaptchaField.php",
+ "ApiFancyCaptchaReload": "ApiFancyCaptchaReload.php"
+ },
+ "ResourceModules": {
+ "ext.confirmEdit.fancyCaptcha.styles": {
+ "styles": "ext.confirmEdit.fancyCaptcha.css"
+ },
+ "ext.confirmEdit.fancyCaptcha": {
+ "scripts": "ext.confirmEdit.fancyCaptcha.js",
+ "dependencies": "mediawiki.api",
+ "targets": [
+ "mobile",
+ "desktop"
+ ]
+ },
+ "ext.confirmEdit.fancyCaptchaMobile": {
+ "scripts": "ext.confirmEdit.fancyCaptcha.js",
+ "targets": [
+ "mobile",
+ "desktop"
+ ],
+ "dependencies": "mobile.startup"
+ }
+ },
+ "ResourceFileModulePaths": {
+ "localBasePath": "resources",
+ "remoteExtPath": "ConfirmEdit/FancyCaptcha/resources"
+ },
+ "callback": "ConfirmEditHooks::onFancyCaptchaSetup",
+ "config": {
+ "CaptchaClass": "FancyCaptcha",
+ "CaptchaFileBackend": "",
+ "CaptchaDirectory": false,
+ "CaptchaDirectoryLevels": 0,
+ "CaptchaSecret": "CHANGE_THIS_SECRET!",
+ "CaptchaDeleteOnSolve": false
+ },
+ "manifest_version": 1
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ace.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ace.json
new file mode 100644
index 00000000..443c3f6d
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ace.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "Si Gam Acèh"
+ ]
+ },
+ "fancycaptcha-captcha": "Paréksa aman",
+ "fancycaptcha-accountcreate": "Mangat wiki nyoë teulindông nibak pumeugöt akun otomatis, neutulông pasoë narit nyang na di yup nyoë lam plôk nyang ka geuseudia ([[Special:Captcha/help|info leungkap]]):",
+ "fancycaptcha-imgcaptcha-ph": "Pasoë seunurat nyang neungieng bak gamba",
+ "fancycaptcha-reload-text": "Pubarô"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ady-cyrl.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ady-cyrl.json
new file mode 100644
index 00000000..40e84d53
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ady-cyrl.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "SamGamgee",
+ "Highlander45temp",
+ "Amire80"
+ ]
+ },
+ "fancycaptcha-captcha": "Щынэгъончъэгъэ уплъэкӀун",
+ "fancycaptcha-accountcreate": "Аккаунтмэ яаутоублэным ашӀоухъумэнэу, тыолъэӀу ычӀэгъ плӀэмыем ит гущыӀэхэр итхэх ([[Special:Captcha/help|къызгурӀонэу...]]):",
+ "fancycaptcha-imgcaptcha-ph": "ЫшъхьагъкӀэ плъэгъурэ текстыр итх",
+ "fancycaptcha-reload-text": "КӀэу шӀы"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/aeb-latn.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/aeb-latn.json
new file mode 100644
index 00000000..c3f31a8e
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/aeb-latn.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Csisc"
+ ]
+ },
+ "fancycaptcha-reload-text": "Aktüyalīzī"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/af.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/af.json
new file mode 100644
index 00000000..42fa160a
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/af.json
@@ -0,0 +1,16 @@
+{
+ "@metadata": {
+ "authors": [
+ "Naudefj",
+ "Arnobarnard",
+ "Fwolff"
+ ]
+ },
+ "fancycaptcha-addurl": "U Wysiging bevat nuwe eksterne skakels. Om die wiki teen geoutomatiseerde vandalisme te beskerm, tik asb. die woorde wat verskyn in die boksie onder ([[Special:Captcha/help|meer inligting]]):",
+ "fancycaptcha-captcha": "Veiligheidskontrole",
+ "fancycaptcha-accountcreate": "Om hierdie wiki teen geoutomatiseerde rekeningskepping te beskerm, vra ons u vriendelik om die woorde wat in die boks hieronder vertoon word in te voer ([[Special:Captcha/help|meer inligting]]):",
+ "fancycaptcha-create": "Om die bladsy te skep, tik asb. die woorde wat in die boksie hier onder verskyn ([[Special:Captcha/help|meer inligting]]):",
+ "fancycaptcha-edit": "Om die bladsy te wysig, tik asb. die woorde wat in die boksie hier onder verskyn ([[Special:Captcha/help|meer inligting]]):",
+ "fancycaptcha-imgcaptcha-ph": "Sleutel die teks hierbo in",
+ "fancycaptcha-reload-text": "Verfris"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ais.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ais.json
new file mode 100644
index 00000000..2a1dca59
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ais.json
@@ -0,0 +1,20 @@
+{
+ "@metadata": {
+ "authors": [
+ "Benel",
+ "Bunukwiki"
+ ]
+ },
+ "fancycaptcha-addurl": "mikawaway-kalumyiti nu misu pisaungay tu baluhay ihekalay a masasiketay.\nsaka mitena’ tatuni’ mikawaway-kalumyiti cengse,pisuliti isasa’ay a sahakuay paazihay a masatekeday sulit ([[Special:Captcha/help|yadahay a cesyun]]):",
+ "fancycaptcha-badlogin": "saka mitena’ mima mihulakay a cense, maydih kisu pisuliti isasa’ay sahakuay maazihay a masatekeday-sulit ([[Special:Captcha/help|kayadahay a cesyun]]):",
+ "fancycaptcha-captcha": "kazahkezan kinsa",
+ "fancycaptcha-accountcreate": "payni satena’ lunuk pangangan cengse, pakalibut kami kisuan misuzu i sasaay sahakuay paazihay tu nisulitan. ([[Special:Captcha/help|yadah cesyun]]):",
+ "fancycaptcha-create": "saka mitena’ lunuk patizeng kasabelih a cengse, kanca kisu misulit isasa’ sahakuay paazihay a masatekeday sulit ([[Special:Captcha/help|yadahay a cesyun]]):",
+ "fancycaptcha-edit": "amahica amikawaway-kalumyiti uyni a kasabelih, pisulittan isasa’ay a sahakuay paazihay a masatekeday sulit ([[Special:Captcha/help|yadah cesyun]])",
+ "fancycaptcha-imgcaptcha-ph": "pisuliti kisu i zunga maazihay i cudad",
+ "fancycaptcha-sendemail": "saka mitena’ tatuni’ mikawaway-kalumyiti a cense, maydih kisu pisuliti isasa’ay sahakuay maazihay a masatekeday-sulit ([[Special:Captcha/help| kayadahay a cesyun]]):",
+ "fancycaptcha-reload-text": "miliyaw misulimet",
+ "apihelp-fancycaptchareload-description": "maala baluhay FancyCaptcha",
+ "apihelp-fancycaptchareload-summary": "maala baluhay FancyCaptcha",
+ "apihelp-fancycaptchareload-example-1": "maala baluhay FancyCaptcha"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/aln.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/aln.json
new file mode 100644
index 00000000..d1c9334c
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/aln.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "Mdupont"
+ ]
+ },
+ "fancycaptcha-addurl": "Your redakto përfshin të jashtme lidhje të reja. Për të ndihmuar në mbrojtjen kundër spam automatizuar, ju lutem shkruani fjalët që shfaqen poshtë në kuti ([[Special:Captcha/help|më shumë informacion]]):",
+ "fancycaptcha-badlogin": "Për të ndihmuar në mbrojtjen kundër fjalëkalimin automatizuar plasaritje, ju lutem shkruani fjalët që shfaqen poshtë në kuti ([[Special:Captcha/help|më shumë informacion]]):",
+ "fancycaptcha-accountcreate": "Për të ndihmuar në mbrojtjen kundër krijimit llogari e automatizuar, ju lutem shkruani fjalët që shfaqen poshtë në kuti ([[Special:Captcha/help|më shumë informacion]]):",
+ "fancycaptcha-create": "Për të krijuar një faqe, ju lutem shkruani fjalët që shfaqen poshtë në kuti ([[Special:Captcha/help|më shumë informacion]]):",
+ "fancycaptcha-edit": "Për të redaktuar këtë faqe, ju lutem shkruani fjalët që shfaqen poshtë në kuti ([[Special:Captcha/help|më shumë informacion]]):",
+ "fancycaptcha-sendemail": "Për të ndihmuar në mbrojtjen kundër spamming automatizuar, ju lutem shkruani fjalët që shfaqen poshtë në kuti ([[Special:Captcha/help|më shumë informacion]]):"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/am.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/am.json
new file mode 100644
index 00000000..b7b9bfc6
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/am.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "Codex Sinaiticus"
+ ]
+ },
+ "fancycaptcha-accountcreate": "ያልተፈለገ የመኪናነት አባልነት ለመከላከል፥ አባል ለመሆን በዚህ ምስል የታዩት እንግሊዝኛ ቃላት ወይም ቁጥር መልስ በትክክል መጻፍ ግዴታ ነው። ([[Special:Captcha/help|ይህ ምንድነው?]]) (To help protect against automated spam, you must type in the words or correct number answer exactly as seen beneath here before registering your account:)<br />",
+ "fancycaptcha-imgcaptcha-ph": "ከላይ የሚታየውን ጽሁፍ ያስገቡ"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/an.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/an.json
new file mode 100644
index 00000000..9811e7a3
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/an.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": [
+ "Juanpabl"
+ ]
+ },
+ "fancycaptcha-desc": "Chenerador chocant de CAPTCHAs ta Confirmar Edicions.",
+ "fancycaptcha-addurl": "Ha encluyito vinclos esternos en a suya edición. Ta aduyar a protecher contra o spam automatico, escriba por favor as parolas que amaneixen en a caixa d'o cobaixo ([[Special:Captcha/help|más información]]):",
+ "fancycaptcha-badlogin": "Ta aduyar-nos en a protección contra o trenque automatico de claus d'acceso, escriba por favor as parolas que amaneixen en a caixa d'o cobaixo ([[Special:Captcha/help|más información]]):",
+ "fancycaptcha-accountcreate": "Ta aduyar a protecher contra a creyación automatica de cuentas, escriba por favor en o quatrón as parolas que amaneixen debaixo ([[Special:Captcha/help|más información]]):",
+ "fancycaptcha-create": "Ta creyar a pachina, escriba por favor as parolas que amaneixen en a caixa d'o cobaixo\n([[Special:Captcha/help|más información]]):",
+ "fancycaptcha-edit": "Ta editar ista pachina, escriba por favor as parolas que amaneixen en a caixa d'o cobaixo\n([[Special:Captcha/help|más información]]):",
+ "fancycaptcha-imgcaptcha-ph": "Escribe o texto d'alto",
+ "fancycaptcha-sendemail": "Ta protecher-nos contra o spam automatizau por favor escriba as parolas que amaneixen en o siguient quadro ([[Special:Captcha/help|mas información]]):"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ang.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ang.json
new file mode 100644
index 00000000..65f9249d
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ang.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "Gott wisst"
+ ]
+ },
+ "fancycaptcha-imgcaptcha-ph": "Besettan þone traht þe þū sīhst būfan",
+ "fancycaptcha-reload-text": "Ednīwian"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/anp.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/anp.json
new file mode 100644
index 00000000..73efa0da
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/anp.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "Angpradesh"
+ ]
+ },
+ "fancycaptcha-captcha": "सुरक्षा जाँच",
+ "fancycaptcha-accountcreate": "स्वचालित सदस्य पंजीकरण स॑ बचाव लेली हम्मं॑ आपना सं॑ निवेदन करै छियै कि नीचां देलऽ गेलऽ शब्द बक्सा मं॑ लिखऽ ([[Special:Captcha/help|जादा जानकारी]]):",
+ "fancycaptcha-imgcaptcha-ph": "उपरोक्त लौकी रहलऽ पाठ लिखऽ",
+ "fancycaptcha-reload-text": "रिफ़्रेश"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ar.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ar.json
new file mode 100644
index 00000000..c043aa8b
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ar.json
@@ -0,0 +1,26 @@
+{
+ "@metadata": {
+ "authors": [
+ "Aiman titi",
+ "Asaifm",
+ "Meno25",
+ "Abanima",
+ "علاء",
+ "Hhaboh162002",
+ "أحمد"
+ ]
+ },
+ "fancycaptcha-desc": "مولد فانسي كابتشا لConfirm Edit",
+ "fancycaptcha-addurl": "تعديلك يتضمن وصلات خارجية جديدة.\nللحماية من السخام الأوتوماتيكي، من فضلك أدخل الكلمات التي تظهر بالأسفل في الصندوق ([[Special:Captcha/help|مزيد من المعلومات]]):",
+ "fancycaptcha-badlogin": "للمساعدة في الحماية ضد سرقة كلمات السر، من فضلك أدخل الكلمات التي تظهر في الصندوق أدناه ([[Special:Captcha/help|مزيد من المعلومات]]):",
+ "fancycaptcha-captcha": "تحقق أمني",
+ "fancycaptcha-accountcreate": "لحماية الويكي من الحسابات المنشأة آليا، نرجو منك إدخال الكلمات الظاهرة فيما يلي في الحقل ([[Special:Captcha/help|مزيد من المعلومات]]):",
+ "fancycaptcha-create": "لإنشاء الصفحة، من فضلك أدخل الكلمات التي تظهر بالأسفل في الصندوق\n([[Special:Captcha/help|مزيد من المعلومات]]):",
+ "fancycaptcha-edit": "لتعديل هذه الصفحة، من فضلك أدخل الكلمات التي تظهر بالأسفل في الصندوق\n([[Special:Captcha/help|مزيد من المعلومات]]):",
+ "fancycaptcha-imgcaptcha-ph": "أدخل النص الذي تراه في الصورة",
+ "fancycaptcha-sendemail": "للمساعدة في منع إنشاء حسابات بطريقة أوتوماتيكية، قم من فضلك بإدخال الكلمات التي تظهر أدناه في الصندوق ([[Special:Captcha/help|مزيد من المعلومات]]):",
+ "fancycaptcha-reload-text": "تحديث",
+ "apihelp-fancycaptchareload-description": "احصل على FancyCaptcha جديدة.",
+ "apihelp-fancycaptchareload-summary": "الحصول على FancyCaptcha جديدة.",
+ "apihelp-fancycaptchareload-example-1": "احصل على FancyCaptcha جديدة."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/arq.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/arq.json
new file mode 100644
index 00000000..b74a720b
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/arq.json
@@ -0,0 +1,12 @@
+{
+ "@metadata": {
+ "authors": [
+ "Oldstoneage",
+ "ⵕⴰⵊⵉ"
+ ]
+ },
+ "fancycaptcha-captcha": "تحقق أمني",
+ "fancycaptcha-accountcreate": "باش نحافظو على الويكي من الحسابات الّي ينخلقو من عند نواضم داتيّة، نطلبو منّك باش تنقل فل قبيسة هنا، الكلمة المكتوبة لتحت. ([[Special:Captcha/help|زيد شوف شي معلومات]]):",
+ "fancycaptcha-imgcaptcha-ph": "دخّل النصّ الّي راك تشوفهُ فلفوطو",
+ "fancycaptcha-reload-text": "عاود شارجي الصفحة"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/arz.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/arz.json
new file mode 100644
index 00000000..3cae64bb
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/arz.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": [
+ "Meno25",
+ "Ramsis II",
+ "Ghaly"
+ ]
+ },
+ "fancycaptcha-addurl": "تعديلك فيه لينكات خارجية جديدة\nعلشان تساعد فى الحماية من السبام الاوتوماتيكى، لو سمحت تكتب الكلمات اللى باينة تحت فى الصندوء ([[Special:Captcha/help|معلومات زيادة]]):",
+ "fancycaptcha-badlogin": "علشان تساعد فى الحماية من السرقة الاتوماتيكية للباسورد، لو سمحت تدخل الكلمات اللى باينة تحت فى الصندوء ([[Special:Captcha/help|معلومات زيادة]]):",
+ "fancycaptcha-accountcreate": "علشان تساعد ف الحماية من الفتح الاوتوماتيكى للحسابات،لو سمحت تدخل الكلمات اللى باينه تحت ف الصندوء ([[Special:Captcha/help|معلومات زياده]]):",
+ "fancycaptcha-create": "علشان تبتدى صفحة جديدة، لو سمحت تدخل الكلمات اللى ظاهرة تحت فى الصندوق\n([[Special:Captcha/help|معلومات زيادة]]):",
+ "fancycaptcha-edit": "علشان تعدل فى الصفحة دى،لو سمحت تكتب الكلمات اللى باينة تحت فى الصندوء ([[Special:Captcha/help|معلومات زيادة]]):",
+ "fancycaptcha-reload-text": "تحديث"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/as.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/as.json
new file mode 100644
index 00000000..6586e7e0
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/as.json
@@ -0,0 +1,19 @@
+{
+ "@metadata": {
+ "authors": [
+ "Chaipau",
+ "Gitartha.bordoloi",
+ "Rajuonline",
+ "IKHazarika"
+ ]
+ },
+ "fancycaptcha-addurl": "আপোনাৰ সম্পাদনাত বাহ্যিক সংযোগ আছে।\nস্বয়ংক্ৰীয় সম্পাদনাৰ পৰা হাত সাৰিবলৈ, তলত দেখিবলৈ পোৱা শব্দটো বাকচৰ ভিতৰত লিখক। ([[Special:Captcha/help|অধিক তথ্য]]):",
+ "fancycaptcha-badlogin": "স্বয়ংক্ৰীয় গুপ্তশব্দ চুৰিৰ পৰা হাত সাৰিবলৈ,\nতলত দেখিবলৈ পোৱা শব্দটো বাকচৰ ভিতৰত লিখক। ([[Special:Captcha/help|অধিক তথ্য]]):",
+ "fancycaptcha-captcha": "সুৰক্ষা পৰীক্ষা",
+ "fancycaptcha-accountcreate": "স্বয়ংক্ৰীয় নতুন সদস্যভুক্তিৰ পৰা হাত সাৰিবলৈ, আমি আপুনাক অনুগ্ৰহ কৰি তলত দেখিবলৈ পোৱা শব্দটো বাকচৰ ভিতৰত লিখিবলৈ অনুৰোধ কৰিছো। ([[Special:Captcha/help|অধিক তথ্য]]):",
+ "fancycaptcha-create": "পৃষ্ঠাটো বনাবলৈ, তলত দেখিবলৈ পোৱা শব্দটো বাকচৰ ভিতৰত লিখক। ([[Special:Captcha/help|অধিক তথ্য]]):",
+ "fancycaptcha-edit": "এই পৃষ্ঠাটো সম্পাদনা কৰিবলৈ, তলত দেখিবলৈ পোৱা শব্দটো বাকচৰ ভিতৰত লিখক। ([[Special:Captcha/help|অধিক তথ্য]]):",
+ "fancycaptcha-imgcaptcha-ph": "ওপৰৰ ছবিত আপুনি দেখা পোৱা পাঠ্য লিখক",
+ "fancycaptcha-sendemail": "স্বয়ংক্ৰিয় স্পেমিঙৰ পৰা বাচিবলৈ অনুগ্ৰহ কৰি তলৰ বাকছটোৰ তলত ওলোৱা আখৰকেইটা লিখক ([[Special:Captcha/help|অধিক তথ্য]]):",
+ "fancycaptcha-reload-text": "ৰিফ্ৰেচ"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ast.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ast.json
new file mode 100644
index 00000000..aab7ea18
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ast.json
@@ -0,0 +1,20 @@
+{
+ "@metadata": {
+ "authors": [
+ "Esbardu",
+ "Xuacu"
+ ]
+ },
+ "fancycaptcha-addurl": "La so edición incluye nuevos enllaces esternos. Pa protexer la wiki escontra'l spam automatizáu, pidimos-y qu'escriba nel caxellu les pallabres qu'apaecen embaxo ([[Special:Captcha/help|más información]]):",
+ "fancycaptcha-badlogin": "Pa protexer la wiki escontra'l descifráu automáticu de claves, pidimos-y qu'escriba nel caxellu les pallabres qu'apaecen embaxo ([[Special:Captcha/help|más información]]):",
+ "fancycaptcha-captcha": "Comprobación de seguridá",
+ "fancycaptcha-accountcreate": "Pa protexer la wiki escontra la creación automática de cuentes, pidimos-y qu'escriba nel caxellu les pallabres qu'apaecen embaxo ([[Special:Captcha/help|más información]]):",
+ "fancycaptcha-create": "Pa crear la páxina, por favor escribi nel caxellu les pallabres qu'apaecen embaxo ([[Special:Captcha/help|más información]]):",
+ "fancycaptcha-edit": "Pa editar la páxina, por favor escribi nel caxellu les pallabres qu'apaecen embaxo ([[Special:Captcha/help|más información]]):",
+ "fancycaptcha-imgcaptcha-ph": "Escribe'l testu que ves na imaxe",
+ "fancycaptcha-sendemail": "Pa protexer la wiki escontra'l corréu puxarra automáticu, pidimos-y qu'escriba nel caxellu les pallabres qu'apaecen embaxo ([[Special:Captcha/help|más información]]):",
+ "fancycaptcha-reload-text": "Refrescar",
+ "apihelp-fancycaptchareload-description": "Solicitar un FancyCaptcha nuevu.",
+ "apihelp-fancycaptchareload-summary": "Solicitar un FancyCaptcha nuevu.",
+ "apihelp-fancycaptchareload-example-1": "Solicitar un FancyCaptcha nuevu"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/atj.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/atj.json
new file mode 100644
index 00000000..fafc3677
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/atj.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ninmeka",
+ "Jeannette Coocoo",
+ "Benoit Rochon",
+ "Nehirowisiw"
+ ]
+ },
+ "fancycaptcha-captcha": "e nanakatcitakaniwok",
+ "fancycaptcha-accountcreate": "Aka kitci piciwirakaniwitc wiki ka nicike pitakesinahotisonaniwok,ki ntoweritamatinan kitci pitakesinahamam nohwe itewin ke pe nokok nitc ([[Special:Captcha/help|more info]]):",
+ "fancycaptcha-imgcaptcha-ph": "Tapisinaha ka wapataman e masinatek masinasowinik",
+ "fancycaptcha-reload-text": "Ockita"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/av.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/av.json
new file mode 100644
index 00000000..8dde2834
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/av.json
@@ -0,0 +1,10 @@
+{
+ "@metadata": {
+ "authors": [
+ "Gazimagomedov"
+ ]
+ },
+ "fancycaptcha-captcha": "ХIинкъибукIунгутIиялъул хал гьаби",
+ "fancycaptcha-imgcaptcha-ph": "Дуда тIадехун бихьулеб бугеб текст, хъвай",
+ "fancycaptcha-reload-text": "ЦӀигьабизе"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/awa.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/awa.json
new file mode 100644
index 00000000..2795dff3
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/awa.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "1AnuraagPandey"
+ ]
+ },
+ "fancycaptcha-captcha": "सुरक्षा जाँच",
+ "fancycaptcha-accountcreate": "स्वचालित सदस्य पंजीकरण से बचाव के लिये हम आपसे निवेदन करते हैं की नीचे दिये शब्द बक्से में लिखें ([[Special:Captcha/help|अधिक जानकारी]]):",
+ "fancycaptcha-imgcaptcha-ph": "उपरा वाला पाठ लिखा जाय",
+ "fancycaptcha-reload-text": "रिफ़्रेश"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/az.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/az.json
new file mode 100644
index 00000000..c54082cb
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/az.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "Dağlı95"
+ ]
+ },
+ "fancycaptcha-captcha": "Təhlükəsizlik nəzarəti",
+ "fancycaptcha-accountcreate": "Vikidə avtomatik hesab yaradılmasının qarşısını almaq üçün xahiş edirik tələb olunan sözləri daxil edin ([[Special:Captcha/help|ətraflı məlumat]]):",
+ "fancycaptcha-imgcaptcha-ph": "Yuxarıda gördüyünüz mətni daxil edin",
+ "fancycaptcha-reload-text": "Yenilə"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/azb.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/azb.json
new file mode 100644
index 00000000..10fbb9df
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/azb.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": [
+ "Amir a57",
+ "Mousa",
+ "Alp Er Tunqa",
+ "Ilğım"
+ ]
+ },
+ "fancycaptcha-captcha": "امنیت یوخلاماسی",
+ "fancycaptcha-accountcreate": "ویکی‌پدیانی اوتومات اوْلاراق آچیلان حسابلاردان قوْروماق اۆچون٬ سیزدن آشاغیدا گؤرونن سؤزلرین قۇتودا یازماغینیزی ریجا ائدیریک. ([[Special:Captcha/help|آرتیق بیلگی]]):",
+ "fancycaptcha-edit": "بۇ صفحه‌نی دییشدیرمک اوچون، شکیلده گؤردوگونوز سؤزو یازین ([[Special:Captcha/help|آرتیق بیلگی]]):",
+ "fancycaptcha-imgcaptcha-ph": "یوخاریدا گؤردوگونوز یازینی یازین",
+ "fancycaptcha-reload-text": "یئنیله"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ba.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ba.json
new file mode 100644
index 00000000..e3ee97d8
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ba.json
@@ -0,0 +1,23 @@
+{
+ "@metadata": {
+ "authors": [
+ "Assele",
+ "Рустам Нурыев",
+ "Sagan",
+ "Янмурза Баки",
+ "Азат Хәлилов",
+ "Ләйсән"
+ ]
+ },
+ "fancycaptcha-addurl": "Һеҙҙең текстығыҙҙа яңы тышҡы һылтанмалар бар.\nАвтоматик спамдан һаҡлау маҡсатында, зинһар, күрһәтелгән һүҙҙәрҙе түбәндәге юлға керетегеҙ ([[Special:Captcha/help|тулыраҡ мәғлүмәт]]):",
+ "fancycaptcha-badlogin": "Серһүҙҙе автоматик ватыуҙан һаҡлау маҡсатында, зинһар, күрһәтелгән һүҙҙәрҙе түбәндәрәк рамкаға индереүегеҙҙе һорайбыҙ ([[Special:Captcha/help|more info]]):",
+ "fancycaptcha-captcha": "Хәүефһеҙлекте тикшереү",
+ "fancycaptcha-accountcreate": "Иҫәп яҙмаларын автоматик булдырыуҙан һаҡлау маҡсатында, зинһар, күрһәтелгән һүҙҙәрҙе түбәндәге юлға керетегеҙ ([[Special:Captcha/help|тулыраҡ мәғлүмәт]]):",
+ "fancycaptcha-create": "Яңы бит булдырыу өсөн, зинһар, күрһәтелгән һүҙҙәрҙе түбәндәге юлға керетегеҙ ([[Special:Captcha/help|тулыраҡ мәғлүмәт]]):",
+ "fancycaptcha-edit": "Был битте мөхәррирләү өсөн, зинһар, күрһәтелгән һүҙҙәрҙе түбәндәге юлға керетегеҙ ([[Special:Captcha/help|тулыраҡ мәғлүмәт]]):",
+ "fancycaptcha-imgcaptcha-ph": "Һүрәттә күргән тексты индерегеҙ",
+ "fancycaptcha-sendemail": "Автоматик спамдан һаҡлау маҡсатында, түбәндә килтерелгән һорауға яуап бирегеҙ ([[Special:Captcha/help|тулыраҡ мәғлүмәт]]):",
+ "fancycaptcha-reload-text": "Яңыртыу",
+ "apihelp-fancycaptchareload-description": "Яңы FancyCaptcha алырға.",
+ "apihelp-fancycaptchareload-example-1": "Яңы FancyCaptcha алырға"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/bcc.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/bcc.json
new file mode 100644
index 00000000..8d8e69b3
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/bcc.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Mostafadaneshvar"
+ ]
+ },
+ "fancycaptcha-addurl": "‎بست",
+ "fancycaptcha-badlogin": "په کمک په محافظت چه اتوماتیکی پروشگ کلمه رمز، لطفا کلماتی که ته جهلگی جعبه ظاهر انت واردش کنیت ([[Special:Captcha/help|گیشترین اطلاعات]]):",
+ "fancycaptcha-captcha": "سکیوریتی چک",
+ "fancycaptcha-accountcreate": "په کمک په محافظت چه اتوماتیکی شرکتن حساب، لطفا کلماتی که ته جهلگی جعبه ظاهر انت واردش کنیت ([[Special:Captcha/help|گیشترین اطلاعات]]):",
+ "fancycaptcha-create": "په شرکتن صفحه، لطفا کلماتی که ته جهلگی جعبه ظاهراند واردش کنیت ([[Special:Captcha/help|گیشتر اطلاعات]]):",
+ "fancycaptcha-edit": "په اصلاح کتن ای صفحه، لطفا کلماتی که ته جهلگی جعبه ظاهراند واردش کنیت ([[Special:Captcha/help|گیشتر اطلاعات]]):",
+ "fancycaptcha-imgcaptcha-ph": "برزین سیاهگء ادان بلک ات"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/bcl.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/bcl.json
new file mode 100644
index 00000000..b20bc4be
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/bcl.json
@@ -0,0 +1,16 @@
+{
+ "@metadata": {
+ "authors": [
+ "Geopoet"
+ ]
+ },
+ "fancycaptcha-addurl": "An saimong pagliwat minabale nin baguhong mga panluwas na sugpon.\nTanganing makatabang na protektaran kontra sa awtomatikong espam, pakikaag an mga tataramon na ipinapahiling sa ibaba sa laog nin kahon ([[Special:Captcha/help|kadagdagang impormasyon]]):",
+ "fancycaptcha-badlogin": "Tanganing makatabang na magprotekta kontra sa awtomatikong pagbaak kan pasa-taramon, pakikaag an mga tataramon na ipinapahiling sa ibaba sa laog nin kahon ([[Special:Captcha/help|kadagdagang impormasyon]]):",
+ "fancycaptcha-captcha": "Rikisang panseguridad",
+ "fancycaptcha-accountcreate": "Tanganing makatabang na magprotekta kontra sa awtomatikong pagmumukna nin panindog, pakikaag an mga tataramon na ipinapahiling sa ibaba sa laog nin kahon ([[Special:Captcha/help|kadagdagang impormasyon]]):",
+ "fancycaptcha-create": "Tanganing makapagmukna nin pahina, pakikaag kan mga tataramon na ipinapahiling sa ibaba sa laog nin kahon ([[Special:Captcha/help|kadagdagang impormasyon]]):",
+ "fancycaptcha-edit": "Tanganing makapagliwat kaining pahina, pakikaag an mga tataramon na ipinapahiling sa ibaba sa laog nin kahon ([[Special:Captcha/help|kadagdagang impormasyon]]):",
+ "fancycaptcha-imgcaptcha-ph": "Pakikaag an tekstong nahihiling mo sa ibabaw",
+ "fancycaptcha-sendemail": "Tanganing makatabang na magprotekta kontra sa awtomatikong pag-eespam, pakikaag an mga tataramon na ipinapahiling sa ibaba sa laog nin kahon ([[Special:Captcha/help|kadagdagang impormasyon]]):",
+ "fancycaptcha-reload-text": "Preskohon otro"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/be-tarask.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/be-tarask.json
new file mode 100644
index 00000000..6ed78100
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/be-tarask.json
@@ -0,0 +1,22 @@
+{
+ "@metadata": {
+ "authors": [
+ "EugeneZelenko",
+ "Jim-by",
+ "Red Winged Duck",
+ "Wizardist"
+ ]
+ },
+ "fancycaptcha-addurl": "Вашае рэдагаваньне ўтрымлівае новыя вонкавыя спасылкі.\nУ мэтах абароны ад спаму, мы просім вас увесьці словы, якія паказаныя ў полі ніжэй ([[Special:Captcha/help|болей інфармацыі]]):",
+ "fancycaptcha-badlogin": "У мэтах абароны вікі ад аўтаматычнага ўзлому пароляў, мы просім вас увесьці словы, якія паказаныя ў полі ніжэй ([[Special:Captcha/help|болей інфармацыі]]):",
+ "fancycaptcha-captcha": "Праверка бясьпекі",
+ "fancycaptcha-accountcreate": "У мэтах абароны вікі ад аўтаматычнага стварэньня рахункаў, мы просім вас увесьці словы, якія паказаныя ў полі ніжэй ([[Special:Captcha/help|болей інфармацыі]]):",
+ "fancycaptcha-create": "Для стварэньня старонкі, калі ласка, увядзіце словы, якія паказаныя ў выяве ([[Special:Captcha/help|болей інфармацыі]]):",
+ "fancycaptcha-edit": "Для рэдагаваньня гэтай старонкі, калі ласка, увядзіце словы, якія паказаныя ў выяве ([[Special:Captcha/help|болей інфармацыі]]):",
+ "fancycaptcha-imgcaptcha-ph": "Увядзіце тэкст, які бачыце на выяве",
+ "fancycaptcha-sendemail": "У мэтах абароны вікі ад аўтаматычнага спаму, мы просім вас увесьці словы, паказаныя ў полі ніжэй ([[Special:Captcha/help|дадатковая інфармацыя]]):",
+ "fancycaptcha-reload-text": "Абнавіць",
+ "apihelp-fancycaptchareload-description": "Атрымаць новую FancyCaptcha.",
+ "apihelp-fancycaptchareload-summary": "Атрымаць новую FancyCaptcha.",
+ "apihelp-fancycaptchareload-example-1": "Атрымаць новую FancyCaptcha"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/be.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/be.json
new file mode 100644
index 00000000..bf1132a2
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/be.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": [
+ "Чаховіч Уладзіслаў",
+ "Mikalai Udodau",
+ "Mechanizatar"
+ ]
+ },
+ "fancycaptcha-captcha": "Праверка бяспекі",
+ "fancycaptcha-accountcreate": "Для прадухілення аўтаматычнай рэгістрацыі ўліковых запісаў просім вас увесці словы, паказаныя ў полі ніжэй ([[Special:Captcha/help|падрабязней…]]):",
+ "fancycaptcha-create": "Для стварэння гэтай старонкі, увядзіце ў поле словы, якія з'яўляюцца на выяве ніжэй ([[Special:Captcha/help|больш падрабязна]])",
+ "fancycaptcha-imgcaptcha-ph": "Увядзіце тэкст, які вы бачыце на відарысе",
+ "fancycaptcha-reload-text": "Абнавіць",
+ "apihelp-fancycaptchareload-description": "Атрымаць новую FancyCaptcha."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/bg.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/bg.json
new file mode 100644
index 00000000..90a279f2
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/bg.json
@@ -0,0 +1,23 @@
+{
+ "@metadata": {
+ "authors": [
+ "Borislav",
+ "DCLXVI",
+ "Plamen",
+ "StanProg",
+ "ShockD"
+ ]
+ },
+ "fancycaptcha-addurl": "Текущата редакция включва нови външни препратки.\nКато защита на това уики от автоматизиран спам, ви молим да въведете думите, показани по-долу в текстовата кутия ([[Special:Captcha/help|повече информация]]):",
+ "fancycaptcha-badlogin": "За да защитим системата от автоматизирано кракване на пароли, учтиво Ви молим да въведете думите, които виждате в текстовата кутия ([[Special:Captcha/help|повече информация]]):",
+ "fancycaptcha-captcha": "Проверка за сигурност",
+ "fancycaptcha-accountcreate": "Системата за защита от автоматично създаване на потребителски сметки изисква да въведете това, което виждате в кутията по-долу ([[Special:Captcha/help|повече информация]]):",
+ "fancycaptcha-create": "За създаване на страницата е необходимо да се въведат думите от картинката в полето по-долу ([[Special:Captcha/help|повече информация]]):",
+ "fancycaptcha-edit": "За редактиране на страницата е необходимо да се въведат думите от картинката в полето по-долу ([[Special:Captcha/help|повече информация]]):",
+ "fancycaptcha-imgcaptcha-ph": "Въведете текста, който виждате на картинката",
+ "fancycaptcha-sendemail": "За да защитим системата от автоматизиран спам, учтиво Ви молим да въведете думите, които виждате в текстовата кутия ([[Special:Captcha/help|повече информация]]):",
+ "fancycaptcha-reload-text": "Опресняване",
+ "apihelp-fancycaptchareload-description": "Получаване на нова FancyCaptcha.",
+ "apihelp-fancycaptchareload-summary": "Получаване на нова FancyCaptcha.",
+ "apihelp-fancycaptchareload-example-1": "Получаване на нова FancyCaptcha"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/bgn.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/bgn.json
new file mode 100644
index 00000000..543d4cf1
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/bgn.json
@@ -0,0 +1,12 @@
+{
+ "@metadata": {
+ "authors": [
+ "Baloch Afghanistan",
+ "Ibrahim khashrowdi"
+ ]
+ },
+ "fancycaptcha-captcha": "امنیتِ چیک کورتین",
+ "fancycaptcha-accountcreate": "په کومک شه اوتوماتیکین کار زوروکئ حساب ئی جۆڑ بوتینی خاتیرا، هما شه شما په باز احترام لوٹن که همی کلمه ئانه که اکس ئی تا گیندیت بئ جهلگین جئبه تا داخل بکنیت ([[Special:Captcha/help|گیشتیرین مئلومات]]):",
+ "fancycaptcha-imgcaptcha-ph": "بُرزه گین متنا کي گیندیت، داخل بکنیت",
+ "fancycaptcha-reload-text": "نوک کورتین"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/bho.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/bho.json
new file mode 100644
index 00000000..0a46d0cd
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/bho.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "SatyamMishra"
+ ]
+ },
+ "fancycaptcha-captcha": "सुरक्षा जाँच",
+ "fancycaptcha-accountcreate": "आटोमेटिक खाता बनवले के रोके खातिर आ विकि के मशीन हमला से बचावे खातिर रउआँ से बाकस की नीचे लउकत शब्द डाले के अनुरोध बा ([[Special:Captcha/help|अउरी जानकारी]]):",
+ "fancycaptcha-imgcaptcha-ph": "चित्र में जवन पाठ लउकत बा ओकरा के डालीं",
+ "fancycaptcha-reload-text": "रिफ्रेश"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/bn.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/bn.json
new file mode 100644
index 00000000..1de0e40c
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/bn.json
@@ -0,0 +1,18 @@
+{
+ "@metadata": {
+ "authors": [
+ "Nasir8891",
+ "Zaheen",
+ "Aftabuzzaman"
+ ]
+ },
+ "fancycaptcha-addurl": "আপনার সম্পাদনাটিতে নতুন বহিঃসংযোগ আছে। স্বয়ংক্রিয় স্প্যামের বিরুদ্ধে সুরক্ষার খাতিরে অনুগ্রহ করে নিচের বাক্সে দেখানো শব্দগুলি প্রবেশ করান ([[Special:Captcha/help|আরও তথ্য]]):",
+ "fancycaptcha-badlogin": "স্বয়ংক্রিয় শব্দচাবি ক্র্যাকিং-এর বিরুদ্ধে সুরক্ষার খাতিরে অনুগ্রহ করে নিচের বাক্সে দেখানো শব্দগুলি প্রবেশ করান ([[Special:Captcha/help|আরও তথ্য]]):",
+ "fancycaptcha-captcha": "নিরাপত্তা পরীক্ষা",
+ "fancycaptcha-accountcreate": "স্বয়ংক্রিয় অ্যাকাউন্ট সৃষ্টির বিরুদ্ধে উইকি রক্ষা করার জন্য, আমরা আপনাকে নীচের বাক্সে প্রদর্শিত শব্দসমূহ লেখার জন্য অনুরোধ জানাচ্ছি ([[Special:Captcha/help|আরও তথ্য]]):",
+ "fancycaptcha-create": "পাতাটি সৃষ্টি করতে চাইলে অনুগ্রহ করে নিচের বাক্সে দেখানো শব্দগুলি প্রবেশ করান ([[Special:Captcha/help|আরও তথ্য]]):",
+ "fancycaptcha-edit": "পাতাটি সম্পাদনা করতে চাইলে অনুগ্রহ করে নিচের বাক্সে দেখানো শব্দগুলি প্রবেশ করান\n([[Special:Captcha/help|আরও তথ্য]]):",
+ "fancycaptcha-imgcaptcha-ph": "চিত্রে যে লেখা দেখতে পাচ্ছেন তা লিখুন",
+ "fancycaptcha-sendemail": "স্বয়ংক্রিয় স্প্যামিং এর বিরুদ্ধে উইকিকে সুরক্ষার খাতিরে অনুগ্রহ করে নিচের বাক্সে দেখানো শব্দগুলি প্রবেশ করান ([[Special:Captcha/help|আরও তথ্য]]):",
+ "fancycaptcha-reload-text": "পুনঃসতেজ"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/bqi.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/bqi.json
new file mode 100644
index 00000000..bf6aece7
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/bqi.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "Mogoeilor"
+ ]
+ },
+ "fancycaptcha-captcha": "ڤارسي أمنيتي",
+ "fancycaptcha-accountcreate": "سی پر و پیم کاری ویکی د ری وه ری حساو راس کنی خود انجوم، ایما وا نازاری دتو میهایم که کلیمه یایی که هان د جعوه ([[Special:رازینه کپچا/هومیاری|دونسمنیا هنی]]):ایچه بنیسیت",
+ "fancycaptcha-imgcaptcha-ph": "نڤشدإ مإن اي متن نأ ڤارڌ کو",
+ "fancycaptcha-reload-text": "ز نۉ كردن"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/br.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/br.json
new file mode 100644
index 00000000..3d557b11
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/br.json
@@ -0,0 +1,19 @@
+{
+ "@metadata": {
+ "authors": [
+ "Fohanno",
+ "Fulup",
+ "Gwendal",
+ "Y-M D"
+ ]
+ },
+ "fancycaptcha-addurl": "Liammoù diavaez nevez zo bet degaset ganeoc'h. Evit stourm a-enep d'ar strob emgefre, skrivit ar gerioù a zeu war wel er voest a-is ([[Special:Captcha/help|gouzout hiroc'h]]):",
+ "fancycaptcha-badlogin": "A-benn talañ ouzh ar preizhañ kontoù dre c'herioù-tremen emgefre, skrivit er vaezienn ar gerioù merket dindan ([[Special:Captcha/help|Petra eo se?]]):",
+ "fancycaptcha-captcha": "Gwiriekadur surentez",
+ "fancycaptcha-accountcreate": "Evit stourm a-enep d'ar c'hontoù krouet ent emgefre, skrivit ar gerioù\na zeu war wel er voest a-is ([[Special:Captcha/help|gouzout hiroc'h]]):",
+ "fancycaptcha-create": "Liammoù diavaez nevez zo bet degaset ganeoc'h. Evit stourm a-enep d'ar strob emgefre, skrivit ar gerioù a zeu war wel er voest a-is ([[Special:Captcha/help|gouzout hiroc'h]]):",
+ "fancycaptcha-edit": "Liammoù diavaez nevez zo bet degaset ganeoc'h. Evit stourm a-enep d'ar strob emgefre, skrivit ar gerioù a zeu war wel er voest a-is ([[Special:Captcha/help|gouzout hiroc'h]]):",
+ "fancycaptcha-imgcaptcha-ph": "Ebarzhit an destenn a welit war ar skeudenn",
+ "fancycaptcha-sendemail": "Evit hor skoazellañ da zizarbenn ar strob emgefre, adskrivit ar gerioù a welit er voest dindan ([[Special:Captcha/help|gouzout hiroc'h]]):",
+ "fancycaptcha-reload-text": "Freskaat"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/bs.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/bs.json
new file mode 100644
index 00000000..acac5c8f
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/bs.json
@@ -0,0 +1,19 @@
+{
+ "@metadata": {
+ "authors": [
+ "CERminator",
+ "DzWiki",
+ "Semso98",
+ "Srdjan m"
+ ]
+ },
+ "fancycaptcha-addurl": "Vaša izmjena uključuje nove vanjske linkove.\nDa bi se zaštitili wiki od automatskog spama, molimo da unesete riječi koje su prikazane u kutiji ispod ([[Special:Captcha/help|više informacija]]):",
+ "fancycaptcha-badlogin": "U cilju zaštite od automatiziranog probijanja lozinki, molimo Vas da unesete riječi koje su prikazane ispod u kutiji ([[Special:Captcha/help|više informacija]]):",
+ "fancycaptcha-captcha": "Sigurnosna provjera",
+ "fancycaptcha-accountcreate": "Da bi zaštitili wiki od automatiziranog pravljenja računa, ljubazno Vas molimo da unesete riječi koje će se pojaviti u kutiji ispod ([[Special:Captcha/help|više informacija]]):",
+ "fancycaptcha-create": "Da bi ste napravili stranicu, molimo Vas unesite riječi koje su prikazane u kutiji ispod ([[Special:Captcha/help|više informacija]]):",
+ "fancycaptcha-edit": "Da bi ste uređivali ovu stranicu, molimo Vas unesite riječi koje su prikazane u kutiji ispod ([[Special:Captcha/help|više informacija]]):",
+ "fancycaptcha-imgcaptcha-ph": "Unesite tekst koji vidite na slici",
+ "fancycaptcha-sendemail": "U cilju zaštite wikija od automatiziranog spamovanja, molimo Vas da unesete riječi koje su prikazane ispod u kutiji ([[Special:Captcha/help|više informacija]]):",
+ "fancycaptcha-reload-text": "Osvježi"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/bto.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/bto.json
new file mode 100644
index 00000000..a74181a2
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/bto.json
@@ -0,0 +1,4 @@
+{
+ "@metadata": [],
+ "fancycaptcha-imgcaptcha-ph": "Ibutang a tekstong nababayad mo sa ibabow"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ca.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ca.json
new file mode 100644
index 00000000..fd8efbf7
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ca.json
@@ -0,0 +1,20 @@
+{
+ "@metadata": {
+ "authors": [
+ "Davidpar",
+ "SMP",
+ "Ssola",
+ "Joan manel",
+ "Pgellida"
+ ]
+ },
+ "fancycaptcha-addurl": "La vostra modificació inclou nous enllaços externs. Com a protecció contra la propaganda automatitzada heu d'escriure en la caixa les paraules que apareixen a continuació ([[Special:Captcha/help|més informació]]):",
+ "fancycaptcha-badlogin": "Com a protecció contra l'obtenció automatitzada de contrasenyes cal que escriviu en la caixa les paraules que apareixen a continuació ([[Special:Captcha/help|més informació]]):",
+ "fancycaptcha-captcha": "Control de seguretat",
+ "fancycaptcha-accountcreate": "Com a protecció contra la creació automàtica de nous comptes cal que escriviu a la caixa les paraules que apareixen a continuació ([[Special:Captcha/help|més informació]]):",
+ "fancycaptcha-create": "Per a poder crear la pàgina heu d'escriure en la caixa les paraules que apareixen a continuació ([[Special:Captcha/help|més informació]]):",
+ "fancycaptcha-edit": "Per a poder modificar la pàgina heu d'escriure en la caixa les paraules que apareixen a continuació ([[Special:Captcha/help|més informació]]):",
+ "fancycaptcha-imgcaptcha-ph": "Introduïu el text que veieu a la imatge",
+ "fancycaptcha-sendemail": "Per ajudar a protegir contra el correu brossa automatitzat, si us plau, introduïu les paraules que apareixen a sota la caixa ([[Special:Captcha/help|més informació]]):",
+ "fancycaptcha-reload-text": "Actualitzar"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/cdo.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/cdo.json
new file mode 100644
index 00000000..e7066c19
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/cdo.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "Yejianfei",
+ "唐吉訶德的侍從"
+ ]
+ },
+ "fancycaptcha-badlogin": "為𡅏避免維基百科乞自動化其密碼破解,儂家起動汝拍出下底方框裡勢其驗證碼([[Special:Captcha/help|更価信息]]):",
+ "fancycaptcha-captcha": "安全檢查",
+ "fancycaptcha-imgcaptcha-ph": "將汝敆圖片上看見其文字拍出來"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ce.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ce.json
new file mode 100644
index 00000000..4015d0d0
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ce.json
@@ -0,0 +1,17 @@
+{
+ "@metadata": {
+ "authors": [
+ "Умар"
+ ]
+ },
+ "fancycaptcha-desc": "Тамашийна CAPTCHA-генератор тадар чӀагӀдаран",
+ "fancycaptcha-addurl": "Хьан нисдар чохь керла арахьара хьажоргаш ю. Спамах лардала дехар до лахахь гура чохь гайтан дешнаш язъе ([[Special:Captcha/help|ма-дарра…]]):",
+ "fancycaptcha-badlogin": "Шашеха паролаш йохорах ларъян Ӏалашонца дехар до, лахарчу гура чохь гайтина дош язде ([[Special:Captcha/help|мадарра…]]):",
+ "fancycaptcha-captcha": "Кхерамзалла хьажар",
+ "fancycaptcha-accountcreate": "Шашеха декъашхойн дӀаяздарш ца кхоллийта, дехар до, лахарчу гура чура дош язде ([[Special:Captcha/help|мадарра…]]):",
+ "fancycaptcha-create": "АгӀо кхолла, дехар до, лахара сурт тӀехь гуш долу элпаш язде ([[Special:Captcha/help|мадарра…]]):",
+ "fancycaptcha-edit": "АгӀо таян, дехар до, лахара сурт тӀехь гуш долу элпаш язде ([[Special:Captcha/help|мадарра…]]):",
+ "fancycaptcha-imgcaptcha-ph": "ДӀаязде хьайна лакхахь гуш долу йоза",
+ "fancycaptcha-sendemail": "Шашеха спамах лардала Ӏалашонца дехар до, лахарчу гура чохь гайтина дош язде ([[Special:Captcha/help|мадарра…]]):",
+ "fancycaptcha-reload-text": "Карлаяккха"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ceb.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ceb.json
new file mode 100644
index 00000000..37d36e7e
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ceb.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "Bentong Isles"
+ ]
+ },
+ "fancycaptcha-accountcreate": "Aron mapanalipdan ang wiki batok sa awtomatikong paghimo og akawnt, palihog sa pagtayp sa mga pulong nga nga makita sa kahon ([[Special:Captcha/help|dugang impormasyon]]):",
+ "fancycaptcha-reload-text": "Bag-oha"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/chr.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/chr.json
new file mode 100644
index 00000000..37d167c0
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/chr.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "R12ntech"
+ ]
+ },
+ "fancycaptcha-reload-text": "ᎯᏤᎲᏍᏓ"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ckb.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ckb.json
new file mode 100644
index 00000000..7fcc630b
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ckb.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "Asoxor",
+ "Sarchia",
+ "Muhammed taha"
+ ]
+ },
+ "fancycaptcha-captcha": "پشکنینی ئاسایشی",
+ "fancycaptcha-accountcreate": "بۆ پاراستنی ویکییەکە لە دروستکردنی ھەژمار بە شێوەی خۆکار، تکات لێ دەکەین ئەو وشانەی کە لە چوارچێوەکەدان داخل بکە ([[Special:Captcha/help|زانیاریی زیادتر]]):",
+ "fancycaptcha-imgcaptcha-ph": "ئەو دەقە بنووسە کە لە وێنەکەا دەیبینیت",
+ "fancycaptcha-reload-text": "نوێکردنەوە"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/crh-cyrl.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/crh-cyrl.json
new file mode 100644
index 00000000..2015f65a
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/crh-cyrl.json
@@ -0,0 +1,5 @@
+{
+ "@metadata": [],
+ "fancycaptcha-captcha": "Телюкесизлик контроли",
+ "fancycaptcha-imgcaptcha-ph": "Юкъарыда корьген метнинъизни язынъыз"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/crh-latn.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/crh-latn.json
new file mode 100644
index 00000000..c6849d5c
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/crh-latn.json
@@ -0,0 +1,5 @@
+{
+ "@metadata": [],
+ "fancycaptcha-captcha": "Telükesizlik kontroli",
+ "fancycaptcha-imgcaptcha-ph": "Yuqarıda körgen metniñizni yazıñız"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/cs.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/cs.json
new file mode 100644
index 00000000..ef8a38ff
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/cs.json
@@ -0,0 +1,21 @@
+{
+ "@metadata": {
+ "authors": [
+ "Mormegil",
+ "Tchoř",
+ "Dvorapa"
+ ]
+ },
+ "fancycaptcha-desc": "Pokročilý generátor captcha pro rozšíření „Confirm Edit“",
+ "fancycaptcha-addurl": "Vaše editace obsahuje nové odkazy formou URL.\nAbychom wiki ochránili před automatizovaným spamováním, žádáme vás o opsání textu z následujícího obrázku ([[Special:Captcha/help|více informací]]):",
+ "fancycaptcha-badlogin": "Abychom wiki ochránili proti automatizovaným pokusům uhodnout heslo, žádáme vás o opsání textu z následujícího obrázku ([[Special:Captcha/help|více informací]]):",
+ "fancycaptcha-captcha": "Bezpečnostní kontrola",
+ "fancycaptcha-accountcreate": "Abychom wiki ochránili proti automatizovanému zakládání účtů, žádáme vás o opsání textu z následujícího obrázku ([[Special:Captcha/help|více informací]]):",
+ "fancycaptcha-create": "Abyste mohli založit stránku, musíte opsat text z následujícího obrázku: ([[Special:Captcha/help|Co tohle znamená?]])",
+ "fancycaptcha-edit": "Abyste mohli editovat tuto stránku, musíte opsat text z následujícího obrázku: ([[Special:Captcha/help|Co tohle znamená?]])",
+ "fancycaptcha-imgcaptcha-ph": "Opište text, který vidíte na obrázku",
+ "fancycaptcha-sendemail": "Abychom wiki ochránili proti automatizovanému spamování, žádáme vás o opsání textu z následujícího obrázku ([[Special:Captcha/help|více informací]]):",
+ "fancycaptcha-reload-text": "Vygenerovat nový obrázek",
+ "apihelp-fancycaptchareload-description": "Získat novou FancyCaptcha.",
+ "apihelp-fancycaptchareload-example-1": "Získat novou FancyCaptcha."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/csb.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/csb.json
new file mode 100644
index 00000000..35895ef4
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/csb.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "Kaszeba"
+ ]
+ },
+ "fancycaptcha-captcha": "Kòntrola bezpiékù",
+ "fancycaptcha-accountcreate": "Przez òchronã przed automatym ùsôdzniem kònt, proszã wpisac słowa, co je widzysz niżi, do tekstowi kastczi ([[Special:Captcha/help|wicy wëdowiédzë]])",
+ "fancycaptcha-imgcaptcha-ph": "Wpiszë tekst z òbrôzka",
+ "fancycaptcha-reload-text": "Òdswierzë"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/cu.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/cu.json
new file mode 100644
index 00000000..6a9af915
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/cu.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "ОйЛ"
+ ]
+ },
+ "fancycaptcha-accountcreate": "блюдєниꙗ дѣл҄ьма на аѵтоматьно мѣстоꙁиданиѥ · авлѥнъ слова обраꙁъ нижьшиѥмь окънѣ напиши ⁙ ([[Special:Captcha/help|испльнѧщѧ вѣсти]]) :"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/cv.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/cv.json
new file mode 100644
index 00000000..94e0bdac
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/cv.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Chuvash2014"
+ ]
+ },
+ "fancycaptcha-reload-text": "Çĕнет"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/cy.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/cy.json
new file mode 100644
index 00000000..733a8d4b
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/cy.json
@@ -0,0 +1,16 @@
+{
+ "@metadata": {
+ "authors": [
+ "Lloffiwr"
+ ]
+ },
+ "fancycaptcha-addurl": "Mae eich golygiad yn cynnwys cyswllt allanol newydd.\nEr mwyn arbed y wici rhag peiriannau sbam, byddwch gystal â theipio'r geiriau a welwch isod yn y blwch ([[Special:Captcha/help|rhagor o wybodaeth]]):",
+ "fancycaptcha-badlogin": "Er mwyn arbed y wici rhag peiriannau datrys cyfrineiriau, byddwch gystal â theipio'r geiriau a welwch isod yn y blwch ([[Special:Captcha/help|rhagor o wybodaeth]]):",
+ "fancycaptcha-captcha": "Gwiriad diogelwch",
+ "fancycaptcha-accountcreate": "Er mwyn arbed y wici rhag peiriannau creu cyfrifon, byddwch gystal â theipio'r geiriau a welwch isod yn y blwch ([[Special:Captcha/help|rhagor o wybodaeth]]):",
+ "fancycaptcha-create": "Er mwyn creu'r dudalen, byddwch gystal â theipio'r geiriau a welwch isod yn y blwch ([[Special:Captcha/help|rhagor o wybodaeth]]):",
+ "fancycaptcha-edit": "Er mwyn gallu golygu'r dudalen hon, byddwch gystal â theipio'r geiriau a welwch isod yn y blwch ([[Special:Captcha/help|rhagor o wybodaeth]]):",
+ "fancycaptcha-imgcaptcha-ph": "Nodwch y testun a welwch uchod",
+ "fancycaptcha-sendemail": "Er mwyn arbed y wici rhag sbamio awtomatig, byddwch gystal â gwneud y swm isod ac ysgrifennu'r ateb yn y blwch ([[Special:Captcha/help|rhagor o wybodaeth]]):",
+ "fancycaptcha-reload-text": "Adnewyddu"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/da.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/da.json
new file mode 100644
index 00000000..e26c5969
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/da.json
@@ -0,0 +1,19 @@
+{
+ "@metadata": {
+ "authors": [
+ "Christian List",
+ "HenrikKbh",
+ "Kaare",
+ "Peter Alberti"
+ ]
+ },
+ "fancycaptcha-addurl": "Din ændring tilføjer nye eksterne henvisninger.\nFor at beskytte mod automatiseret spam, skal du indtaste ordene som vises i feltet nedenfor. ([[Special:Captcha/help|mere information]]):",
+ "fancycaptcha-badlogin": "For at beskytte mod automatiske forsøg på at gætte adgangskoden, skal du indtaste ordene som vises i feltet nedenfor. ([[Special:Captcha/help|mere information]]):",
+ "fancycaptcha-captcha": "Sikkerhedskontrol",
+ "fancycaptcha-accountcreate": "For at beskytte mod automatisk oprettelse af brugerkonti, der bruges til spam, skal du indtaste ordet som vises i feltet nedenfor. ([[Special:Captcha/help|mere information]]):",
+ "fancycaptcha-create": "For at oprette en ny side, skal du indtaste ordet som vises nedenfor i feltet under det. ([[Special:Captcha/help|mere information]]):",
+ "fancycaptcha-edit": "For at redigere denne side, indtast da venligst ordene, der står i feltet nedenfor ([[Special:Captcha/help|mere information]]):",
+ "fancycaptcha-imgcaptcha-ph": "Indtast venligst den tekst, du kan se på billedet",
+ "fancycaptcha-sendemail": "For at beskytte mod automatisk spam, skal du skrive ordene der vises i feltet herunder ([[Special:Captcha/help|mere information]]):",
+ "fancycaptcha-reload-text": "Opdater"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/de-formal.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/de-formal.json
new file mode 100644
index 00000000..0a444dad
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/de-formal.json
@@ -0,0 +1,16 @@
+{
+ "@metadata": {
+ "authors": [
+ "Imre",
+ "MichaelFrey",
+ "Umherirrender"
+ ]
+ },
+ "fancycaptcha-addurl": "Ihre Bearbeitung enthält neue externe Links.\nZum Schutz vor automatisiertem Spamming geben Sie das folgende Wort in das Feld unten ein. Klicken Sie dann erneut auf „Seite speichern“ ([[Special:Captcha/help|Fragen oder Probleme?]]).",
+ "fancycaptcha-badlogin": "Zum Schutz vor einer Kompromittierung Ihres Benutzerkontos geben Sie bitte das folgende Wort in das Feld unten ein [[Special:Captcha/help|(Haben Sie Fragen oder Probleme?)]]:",
+ "fancycaptcha-accountcreate": "Zum Schutz vor automatisierter Anlage von Benutzerkonten geben Sie bitte das folgende Wort in das Feld unten ein ([[Special:Captcha/help|Fragen oder Probleme?]]):",
+ "fancycaptcha-create": "Zur Erstellung der Seite geben Sie das folgende Wort in das Feld unten ein [[Special:Captcha/help|(Fragen oder Probleme?)]].",
+ "fancycaptcha-edit": "Zur Bearbeitung der Seite geben Sie das folgende Wort in das Feld unten ein [[Special:Captcha/help|(Fragen oder Probleme?)]].",
+ "fancycaptcha-imgcaptcha-ph": "Geben Sie den Text ein, den Sie oben sehen.",
+ "fancycaptcha-sendemail": "Um gegen automatischen Spam vorzugehen, geben Sie bitte die Wörter unten in das Feld ein ([[Special:Captcha/help|mehr Informationen]]):"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/de.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/de.json
new file mode 100644
index 00000000..e5835c90
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/de.json
@@ -0,0 +1,22 @@
+{
+ "@metadata": {
+ "authors": [
+ "Metalhead64",
+ "Raimond Spekking",
+ "Umherirrender"
+ ]
+ },
+ "fancycaptcha-desc": "Fancy-CAPTCHA-Generator für die Erweiterung „Confirm Edit“",
+ "fancycaptcha-addurl": "Deine Bearbeitung enthält neue externe Links.\nZum Schutz des Wikis vor automatisiertem Spamming bitten wir dich, das folgende Wort in das Feld unten einzugeben. Klicke dann erneut auf „Seite speichern“ ([[Special:Captcha/help|Fragen oder Probleme?]]).",
+ "fancycaptcha-badlogin": "Zum Schutz des Wikis vor einer Kompromittierung deines Benutzerkontos bitten wir dich, das folgende Wort in das Feld unten einzugeben [[Special:Captcha/help|(Fragen oder Probleme?)]]:",
+ "fancycaptcha-captcha": "Sicherheitsprüfung",
+ "fancycaptcha-accountcreate": "Zum Schutz des Wikis vor automatisierter Anlage von Benutzerkonten bitten wir dich, das folgende Wort in das Feld unten einzugeben ([[Special:Captcha/help|Fragen oder Probleme?]]):",
+ "fancycaptcha-create": "Zur Erstellung der Seite gib das folgende Wort in das Feld unten ein [[Special:Captcha/help|(Fragen oder Probleme?)]].",
+ "fancycaptcha-edit": "Zur Bearbeitung der Seite gib das folgende Wort in das Feld unten ein [[Special:Captcha/help|(Fragen oder Probleme?)]].",
+ "fancycaptcha-imgcaptcha-ph": "Gib den Text ein, den du auf dem Bild siehst.",
+ "fancycaptcha-sendemail": "Zum Schutz des Wikis vor automatischem Spamming bitten wir dich, die Wörter unten in das Feld einzugeben ([[Special:Captcha/help|mehr Informationen]]):",
+ "fancycaptcha-reload-text": "Aktualisieren",
+ "apihelp-fancycaptchareload-description": "Ruft ein neues FancyCaptcha ab.",
+ "apihelp-fancycaptchareload-summary": "Ruft ein neues FancyCaptcha ab.",
+ "apihelp-fancycaptchareload-example-1": "Ruft ein neues FancyCaptcha ab."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/din.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/din.json
new file mode 100644
index 00000000..5135f3e6
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/din.json
@@ -0,0 +1,12 @@
+{
+ "@metadata": {
+ "authors": [
+ "Dinkawiki",
+ "Amire80"
+ ]
+ },
+ "fancycaptcha-captcha": "Thëmpiath",
+ "fancycaptcha-accountcreate": "Wɛ̈t wïc wok buk wiki gël në cinakuɛ̈n ee aloony ke cak në makuënic, yïn awïcku ba wël cï ke gɔ̈t në thunduŋ tɔ piiny yic kueen ku gätëke ëtɛ̈n ([[Special:Captcha/help|more info]]):",
+ "fancycaptcha-imgcaptcha-ph": "Gɔ̈t gɛ̈t ee tïŋ në atiëpic",
+ "fancycaptcha-reload-text": "Bɛn tuɔɔc"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/diq.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/diq.json
new file mode 100644
index 00000000..e3ce23e3
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/diq.json
@@ -0,0 +1,22 @@
+{
+ "@metadata": {
+ "authors": [
+ "Gorizon",
+ "Mirzali",
+ "Xoser",
+ "Kumkumuk",
+ "Gırd"
+ ]
+ },
+ "fancycaptcha-addurl": "Vurnayışanê to de gıreyê teberiê newey estê. \nSeba pawıtışê spamê otomatiki ra, ma reca kenime ke çekuyanê cêrênan zerreyê qutiye de bınusê ([[Special:Captcha/help|zêde melumat]]):",
+ "fancycaptcha-badlogin": "Parolaşıkıtışo otomatik ra şeveknayışê wiki rê, ma şıma ra reca keni ke herfê ke qutiya cêri dı asenê inan bınuşê ([[Special:Captcha/help|tayêna informasyoni]]):",
+ "fancycaptcha-captcha": "Kontrolê emniyeti",
+ "fancycaptcha-accountcreate": "Qe otomatik hesab viraştişî ra pawitîş, ma rica keno çekuyanê ke qutiya cor de înan binuse ([[Special:Captcha/help|enformasyonê bînî]]):",
+ "fancycaptcha-create": "Qe pel viraştîşî, ma rica keno çekuyanê ke qutiya cor de înan binuse ([[Special:Captcha/help|enformasyonê bînî]]):",
+ "fancycaptcha-edit": "Qe pel vurnayîşî, ma rica keno çekuyanê ke qutiya cor de înan binuse ([[Special:Captcha/help|enformasyonê bînî]]):",
+ "fancycaptcha-imgcaptcha-ph": "Nuşteyo ke cor aseno ey resimi ser ke.",
+ "fancycaptcha-sendemail": "Qe spamê otomayoni ra pawitîşi, ma rica keno çekuyanê ke qutiya cor de înan binuse \n([[Special:Captcha/help|enformasyonê bînî]]):",
+ "fancycaptcha-reload-text": "Newe ke",
+ "apihelp-fancycaptchareload-description": "Şo newe FancyCaptcha.",
+ "apihelp-fancycaptchareload-example-1": "Şo newe FancyCaptcha"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/dsb.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/dsb.json
new file mode 100644
index 00000000..e221d49a
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/dsb.json
@@ -0,0 +1,16 @@
+{
+ "@metadata": {
+ "authors": [
+ "Michawiki"
+ ]
+ },
+ "fancycaptcha-addurl": "Twója změna wopśimujo nowe eksterne wótkaze.\nAby wiki pśeśiwo awtomatiskemu spamowanjeju šćitał, zapódaj pšosym słowa, kótarež pokazuju se dołojce w kašćiku ([[Special:Captcha/help|dalšne informacije]]):",
+ "fancycaptcha-badlogin": "Aby wiki pśeśiwo awtomatiskemu wugódanjeju gronidła šćitał, zapódaj pšosym słowa, kótarež pokazuju se dołojce w kašćiku ([[Special:Captcha/help|dalšne informacije]]):",
+ "fancycaptcha-captcha": "Wěstotna kontrola",
+ "fancycaptcha-accountcreate": "Aby wiki pśeśiwo awtomatiskemu załoženjeju kontow šćitał, zapódaj pšosym słowa, kótarež pokazuju se dołojce w kašćiku ([[Special:Captcha/help|dalšne informacije]]):",
+ "fancycaptcha-create": "Aby bok napórał, zapódaj pšosym słowa, kótarež pokazuju se dołojce w kašćiku ([[Special:Captcha/help|dalšne informacije]]):",
+ "fancycaptcha-edit": "Aby toś ten bok wobźěłał, zapódaj pšosym słowa, kótarež pokazuju se dołojce w kašćiku ([[Special:Captcha/help|dalšne informacije]]):",
+ "fancycaptcha-imgcaptcha-ph": "Zapódaj tekst, kótaryž wiźeš dołojce",
+ "fancycaptcha-sendemail": "Aby wiki pśeśiwo awtomatiskemu spamowanjeju šćitał, zapódaj pšosym słowa, kótarež pokazuju se dołojce w kašćiku ([[Special:Captcha/help|dalšne informacije]]):",
+ "fancycaptcha-reload-text": "Aktualizěrowaś"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/dty.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/dty.json
new file mode 100644
index 00000000..0e50913d
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/dty.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "रमेश सिंह बोहरा",
+ "जनक राज भट्ट",
+ "राम प्रसाद जोशी",
+ "Nirajan pant"
+ ]
+ },
+ "fancycaptcha-captcha": "सुरक्षा जाँच",
+ "fancycaptcha-accountcreate": "विकिलाई आफु मनपरी बनौन्या खाताबठे बचाउनलाई हाम तमलाई तलका बकसमी धेकिया वेबमी जान बिनम्र अनुरोध गधौ: ([[Special:Captcha/help|अधिक जानकारी]]):",
+ "fancycaptcha-imgcaptcha-ph": "तमले चित्रमी धेक्या: पाठ भर:",
+ "fancycaptcha-reload-text": "ताजागद्य्या"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ee.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ee.json
new file mode 100644
index 00000000..ade4e9b2
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ee.json
@@ -0,0 +1,5 @@
+{
+ "@metadata": [],
+ "fancycaptcha-captcha": "Dedienɔnɔ ƒe dodokpɔ",
+ "fancycaptcha-imgcaptcha-ph": "Ŋlɔ nya siwo le etame"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/egl.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/egl.json
new file mode 100644
index 00000000..533b856e
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/egl.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "Lévi"
+ ]
+ },
+ "fancycaptcha-captcha": "Cuntròl 'd sicurèsa",
+ "fancycaptcha-imgcaptcha-ph": "Mèt dèinter al tèst ch'ét vèd in sém a la figûra"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/el.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/el.json
new file mode 100644
index 00000000..724b7fac
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/el.json
@@ -0,0 +1,26 @@
+{
+ "@metadata": {
+ "authors": [
+ "Badseed",
+ "Consta",
+ "Geraki",
+ "Glavkos",
+ "ZaDiak",
+ "Evropi",
+ "Protnet",
+ "Nikosgranturismogt"
+ ]
+ },
+ "fancycaptcha-addurl": "Η επεξεργασία σας περιλαμβάνει νέους εξωτερικούς συνδέσμους.\nΩς βοήθεια για την προστασία του wiki από αυτόματα spam, παρακαλούμε γράψτε τις λέξεις που εμφανίζονται παρακάτω στο πλαίσιο ([[Special:Captcha/help|περισσότερες πληροφορίες]]):",
+ "fancycaptcha-badlogin": "Ως βοήθεια για την προστασία από αυτόματα προγράμματα σπασίματος κωδικών, παρακαλούμε γράψτε τις λέξεις που εμφανίζονται παρακάτω στο πλαίσιο ([[Special:Captcha/help|περισσότερες πληροφορίες]]):",
+ "fancycaptcha-captcha": "Έλεγχος ασφαλείας",
+ "fancycaptcha-accountcreate": "Για την προστασία του wiki ενάντια σε αυτοματοποιημένη δημιουργία λογαριασμών, σας ζητούμε ευγενικά να εισαγάγετε τις λέξεις που εμφανίζονται παρακάτω μέσα στο πλαίσιο ([[Special:Captcha/help|περισσότερες πληροφορίες]]):",
+ "fancycaptcha-create": "Για να δημιουργήσετε αυτήν την σελίδα, παρακαλούμε εισαγάγετε τις λέξεις που εμφανίζονται παρακάτω μέσα στο πλαίσιο\n([[Special:Captcha/help|περισσότερες πληροφορίες]]):",
+ "fancycaptcha-edit": "Για να επεξεργαστείτε αυτήν την σελίδα, παρακαλούμε εισαγάγετε τις λέξεις που εμφανίζονται παρακάτω μέσα στο πλαίσιο\n([[Special:Captcha/help|περισσότερες πληροφορίες]]):",
+ "fancycaptcha-imgcaptcha-ph": "Εισάγετε το κείμενο που βλέπετε στην εικόνα",
+ "fancycaptcha-sendemail": "Ως βοήθεια για την προστασία του wiki από αυτόματα προγράμματα σπασίματος κωδικών, παρακαλούμε γράψτε τις λέξεις που εμφανίζονται παρακάτω στο πλαίσιο ([[Special:Captcha/help|περισσότερες πληροφορίες]]):",
+ "fancycaptcha-reload-text": "Ανανέωση",
+ "apihelp-fancycaptchareload-description": "Πάρτε ένα νέο FancyCaptcha.",
+ "apihelp-fancycaptchareload-summary": "Πάρτε ένα νέο FancyCaptcha.",
+ "apihelp-fancycaptchareload-example-1": "Πάρτε ένα νέο FancyCaptcha."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/en.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/en.json
new file mode 100644
index 00000000..202ccf0f
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/en.json
@@ -0,0 +1,18 @@
+{
+ "@metadata": {
+ "authors": []
+ },
+ "fancycaptcha-desc": "Fancy CAPTCHA generator for Confirm Edit",
+ "fancycaptcha-addurl": "Your edit includes new external links.\nTo protect the wiki against automated spam, we kindly ask you to enter the words that appear below in the box ([[Special:Captcha/help|more info]]):",
+ "fancycaptcha-badlogin": "To protect the wiki against automated password cracking, we kindly ask you to enter the words that appear below in the box ([[Special:Captcha/help|more info]]):",
+ "fancycaptcha-captcha": "Security check",
+ "fancycaptcha-accountcreate": "To protect the wiki against automated account creation, we kindly ask you to enter the words that appear below in the box ([[Special:Captcha/help|more info]]):",
+ "fancycaptcha-create": "To create the page, please enter the words that appear below in the box ([[Special:Captcha/help|more info]]):",
+ "fancycaptcha-edit": "To edit this page, please enter the words that appear below in the box ([[Special:Captcha/help|more info]]):",
+ "fancycaptcha-imgcaptcha-ph": "Enter the text you see on the image",
+ "fancycaptcha-sendemail": "To protect the wiki against automated spamming, we kindly ask you to enter the words that appear below in the box ([[Special:Captcha/help|more info]]):",
+ "fancycaptcha-reload-text": "Refresh",
+ "apihelp-fancycaptchareload-description": "Get a new FancyCaptcha.",
+ "apihelp-fancycaptchareload-summary": "Get a new FancyCaptcha.",
+ "apihelp-fancycaptchareload-example-1": "Get a new FancyCaptcha"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/eo.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/eo.json
new file mode 100644
index 00000000..2cf1ca49
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/eo.json
@@ -0,0 +1,20 @@
+{
+ "@metadata": {
+ "authors": [
+ "Yekrats",
+ "Tlustulimu",
+ "NMaia"
+ ]
+ },
+ "fancycaptcha-addurl": "Via redakto inkluzivas novajn eksterajn ligilojn.\nPor preventi aŭtomatan spamon, bonvolu enigi la jenajn vortojn en la skatolo ([[Special:Captcha/help|plia informo]]):",
+ "fancycaptcha-badlogin": "Por protekti kontraŭ aŭtomata divenado de pasvortoj, bonvolu enigi la jenajn vortojn en la skatolo ([[Special:Captcha/help|plua informo]]):",
+ "fancycaptcha-captcha": "Sekureca kontrolo",
+ "fancycaptcha-accountcreate": "Por protekti kontraŭ aŭtomata kreado de kontoj, bonvolu enigi la jenajn vortojn en la skatolo ([[Special:Captcha/help|plia informo]]):",
+ "fancycaptcha-create": "Por krei la paĝon, bonvolu enigi la vortojn montritajn en la jena skatolo ([[Special:Captcha/help|plua informo]]):",
+ "fancycaptcha-edit": "Por redakti ĉi tiun paĝon, bonvolu enigi la vortojn jenajn en la kesto ([[Special:Captcha/help|plua informo]]):",
+ "fancycaptcha-imgcaptcha-ph": "Entajpu la tekston, kiun vi vidas en la bildo.",
+ "fancycaptcha-sendemail": "Por helpi protekti kontraŭ aŭtomata spamado, bonvolu enigi la jenajn vortojn de la skatolo ([[Special:Captcha/help|plia informo]]):",
+ "fancycaptcha-reload-text": "Refreŝigi",
+ "apihelp-fancycaptchareload-description": "Akiri novan FancyCaptcha.",
+ "apihelp-fancycaptchareload-example-1": "Akiri novan FancyCaptcha"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/es.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/es.json
new file mode 100644
index 00000000..f0bfea8e
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/es.json
@@ -0,0 +1,27 @@
+{
+ "@metadata": {
+ "authors": [
+ "Carlosz22",
+ "Fitoschido",
+ "Icvav",
+ "Pertile",
+ "Sanbec",
+ "Sporeunai",
+ "Macofe",
+ "Dgstranz"
+ ]
+ },
+ "fancycaptcha-desc": "Generador de CAPTCHAs vistosos para la confirmación de ediciones",
+ "fancycaptcha-addurl": "Tu edición incluye enlaces externos nuevos. \nPara protegernos contra el spam automatizado, escribe en el recuadro las palabras que aparecen debajo ([[Special:Captcha/help|más información]]):",
+ "fancycaptcha-badlogin": "Para proteger el wiki del descifrado de contraseñas automatizado, escribe en el recuadro las palabras que aparecen debajo ([[Special:Captcha/help|más información]]):",
+ "fancycaptcha-captcha": "Comprobación de seguridad",
+ "fancycaptcha-accountcreate": "Para proteger el wiki contra la creación automática de cuentas, escribe en el recuadro las palabras que se muestran debajo ([[Special:Captcha/help|más información]]):",
+ "fancycaptcha-create": "Para crear la página, escribe en el recuadro las palabras que aparecen debajo ([[Special:Captcha/help|más información]]):",
+ "fancycaptcha-edit": "Para editar esta página, escribe en el recuadro las palabras que aparecen debajo ([[Special:Captcha/help|más información]]):",
+ "fancycaptcha-imgcaptcha-ph": "Escribe el texto que ves en la imagen",
+ "fancycaptcha-sendemail": "Para proteger el wiki contra el spam automatizado, escribe en el recuadro las palabras que aparecen debajo ([[Special:Captcha/help|más información]]):",
+ "fancycaptcha-reload-text": "Actualizar",
+ "apihelp-fancycaptchareload-description": "Obtener un FancyCaptcha nuevo.",
+ "apihelp-fancycaptchareload-summary": "Obtener un FancyCaptcha nuevo.",
+ "apihelp-fancycaptchareload-example-1": "Obtener un FancyCaptcha nuevo"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/et.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/et.json
new file mode 100644
index 00000000..d7490b79
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/et.json
@@ -0,0 +1,19 @@
+{
+ "@metadata": {
+ "authors": [
+ "Pikne"
+ ]
+ },
+ "fancycaptcha-desc": "Kirevate piltidega robotilõks, kinnitamaks muudatuste õigsust.",
+ "fancycaptcha-addurl": "Sinu muudatus sisaldab uusi välislinke.\nPalun sisesta allpool olevas kastis kuvatud sõnad. Abinõu on kaitseks automaadistatud rämpsmuudatuste eest ([[Special:Captcha/help|lisateave]]):",
+ "fancycaptcha-badlogin": "Palun sisesta allpool olevas kastis kuvatud sõnad. Abinõu on kaitseks automaatsete parooliäraarvajate eest ([[Special:Captcha/help|lisateave]]):",
+ "fancycaptcha-captcha": "Turvakontroll",
+ "fancycaptcha-accountcreate": "Palun sisesta allpool olevas kastis kuvatud sõnad. Abinõu on kaitseks kontode automaatse loomise eest ([[Special:Captcha/help|lisateave]]):",
+ "fancycaptcha-create": "Lehekülje loomiseks sisesta palun allpool olevas kastis kuvatud sõnad ([[Special:Captcha/help|lisateave]]):",
+ "fancycaptcha-edit": "Selle lehekülje muutmiseks sisesta palun allpool olevas kastis kuvatud sõnad ([[Special:Captcha/help|lisateave]]):",
+ "fancycaptcha-imgcaptcha-ph": "Sisesta pildil nähtav tekst",
+ "fancycaptcha-sendemail": "Palun sisesta allpool olevas kastis kuvatud sõnad. Abinõu on kaitseks automaadistatud rämpsmuudatuste vastu ([[Special:Captcha/help|lisateave]]):",
+ "fancycaptcha-reload-text": "Vaheta",
+ "apihelp-fancycaptchareload-description": "Uue FancyCaptcha hankimine.",
+ "apihelp-fancycaptchareload-example-1": "Hangi uus FancyCaptcha"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/eu.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/eu.json
new file mode 100644
index 00000000..c57deb10
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/eu.json
@@ -0,0 +1,18 @@
+{
+ "@metadata": {
+ "authors": [
+ "An13sa",
+ "Xabier Armendaritz",
+ "Sator"
+ ]
+ },
+ "fancycaptcha-addurl": "Zure aldaketak kanpo lotura berriak ditu. Spam automatikoa saihestu ahal izateko, beheko koadroan ageri diren hitzak idatzi ([[Special:Captcha/help|informazio gehigarria]]):",
+ "fancycaptcha-badlogin": "Pasahitzen cracking automatikoa saihestu asmoz, beheko koadroan ageri diren hitzak idazteko eskatzen dizugu ([[Special:Captcha/help|informazio gehigarria]]):",
+ "fancycaptcha-captcha": "Segurtasun froga",
+ "fancycaptcha-accountcreate": "Erabiltzaile kontuak automatikoki sortzea saihestu asmoz, beheko koadroan ageri diren hitzak idazteko eskatzen dizugu ([[Special:Captcha/help|informazio gehigarria]]):",
+ "fancycaptcha-create": "Orri sortu ahal izateko, idatz itzazu beheko koadroan ageri diren hitzak ([[Special:Captcha/help|informazio gehigarria]]):",
+ "fancycaptcha-edit": "Orrialde hau aldatu ahal izateko, beheko koadroan ageri diren hitzak idatzi ([[Special:Captcha/help|informazio gehigarria]]):",
+ "fancycaptcha-imgcaptcha-ph": "Sartu irudian ikusten duzun testua",
+ "fancycaptcha-sendemail": "Wikia zabor-posta automatizatuaz babesteko, idatzi mesedez azpiko kutxako hitzak ([[Special:Captcha/help|informazio gehiago]]):",
+ "fancycaptcha-reload-text": "Eguneratu"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/fa.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/fa.json
new file mode 100644
index 00000000..87634841
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/fa.json
@@ -0,0 +1,26 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ebraminio",
+ "Huji",
+ "Ladsgroup",
+ "Meisam",
+ "Reza1615",
+ "Wayiran",
+ "فلورانس",
+ "MohammadtheEditor"
+ ]
+ },
+ "fancycaptcha-addurl": "ویرایش شما حاوی پیوند به بیرون جدیدی است.\nبرای جلوگیری از هرزنگاری خودکار ویکی، ما با احترام از شما می‌خواهیم واژه‌ای را که در تصویر می‌بینید در جعبهٔ زیر وارد کنید ([[Special:Captcha/help|اطلاعات بیشتر]]):",
+ "fancycaptcha-badlogin": "برای کمک به جلوگیری از شکستن خودکار گذرواژه، لطفاً واژه‌ای را که در تصویر می‌بینید را وارد کنید ([[Special:Captcha/help|اطلاعات بیشتر]]):",
+ "fancycaptcha-captcha": "بررسی امنیتی",
+ "fancycaptcha-accountcreate": "برای کمک به جلوگیری از ایجاد خودکار حساب کاربری، ما با احترام از شما می‌خواهیم واژه‌ای را که در تصویر می‌بینید را در جعبهٔ زیر وارد کنید ([[Special:Captcha/help|اطلاعات بیشتر]]):",
+ "fancycaptcha-create": "برای ایجاد این صفحه، لطفاً واژه‌ای را که در تصویر می‌بینید وارد کنید ([[Special:Captcha/help|اطلاعات بیشتر]]):",
+ "fancycaptcha-edit": "برای ویرایش این صفحه، لطفاً واژه‌ای را که در تصویر می‌بینید وارد کنید ([[Special:Captcha/help|اطلاعات بیشتر]]):",
+ "fancycaptcha-imgcaptcha-ph": "متنی را که در تصویر می‌بینید، وارد کنید",
+ "fancycaptcha-sendemail": "برای کمک به محافظت در برابر هرزه‌نگاری خودکار، ما با احترام از شما می‌خواهیم واژه‌هایی را که در جعبهٔ زیر نمایش داده می‌شوند وارد کنید ([[Special:Captcha/help|اطلاعات بیشتر]]):",
+ "fancycaptcha-reload-text": "تازه کردن",
+ "apihelp-fancycaptchareload-description": "یک FancyCaptcha جدید بیاور.",
+ "apihelp-fancycaptchareload-summary": "کپچای جدید دریافت کن.",
+ "apihelp-fancycaptchareload-example-1": "یک FancyCaptcha جدید بیاور."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/fi.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/fi.json
new file mode 100644
index 00000000..51214e6f
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/fi.json
@@ -0,0 +1,24 @@
+{
+ "@metadata": {
+ "authors": [
+ "Crt",
+ "Nike",
+ "Nedergard",
+ "Stryn",
+ "McSalama",
+ "01miki10",
+ "Alluk."
+ ]
+ },
+ "fancycaptcha-addurl": "Muokkauksesi sisältää uusia linkkejä muille sivuille. Kirjoita kuvan sisältämät sanat alla olevaan tekstikenttään ([[Special:Captcha/help|lisätietoja]]):",
+ "fancycaptcha-badlogin": "Automatisoidun salasanan murtamisen estämiseksi kirjoita kuvan sisältämät sanat alla olevaan tekstikenttään ([[Special:Captcha/help|lisätietoja]]):",
+ "fancycaptcha-captcha": "Roskapostisuojaus",
+ "fancycaptcha-accountcreate": "Automaattisen käyttäjätunnusten luonnin estämiseksi ratkaise alla oleva laskutoimitus ja kirjoita se kenttään ([[Special:Captcha/help|lisätietoa]]):",
+ "fancycaptcha-create": "Muokkauksesi sisältää uusia linkkejä muille sivuille. Kirjoita kuvan sisältämät sanat alla olevaan tekstikenttään ([[Special:Captcha/help|lisätietoja]]):",
+ "fancycaptcha-edit": "Muokkauksesi sisältää uusia linkkejä muille sivuille. Kirjoita kuvan sisältämät sanat alla olevaan tekstikenttään ([[Special:Captcha/help|lisätietoja]]):",
+ "fancycaptcha-imgcaptcha-ph": "Kirjoita kuvassa oleva teksti",
+ "fancycaptcha-sendemail": "Automatisoidun roskapostin lähettämisen vaikeuttamiseksi kirjoita kuvan sisältämät sanat alla olevaan tekstikenttään ([[Special:Captcha/help|lisätietoja]]):",
+ "fancycaptcha-reload-text": "Vaihda",
+ "apihelp-fancycaptchareload-description": "Hae uusi FancyCaptcha.",
+ "apihelp-fancycaptchareload-example-1": "Hae uusi FancyCaptcha"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/fo.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/fo.json
new file mode 100644
index 00000000..0cfff147
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/fo.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "EileenSanda",
+ "Spacebirdy"
+ ]
+ },
+ "fancycaptcha-addurl": "Tín rætting inniheldur nýggjar uttanhýsis slóðir.\nFyri at verja wikiina ímóti sjálvvirkandi kontoupprættan, vilja vit vinarliga biðja teg um at skriva inn tey orð, sum koma fyri í teiginum niðanfyri, til tess at stovna eina konto: <br />([[Special:Captcha/help|meira kunning]]):",
+ "fancycaptcha-captcha": "Trygdarkekk",
+ "fancycaptcha-accountcreate": "Fyri at verja wikiina ímóti sjálvvirkandi kontoupprættan, vilja vit vinarliga biðja teg um at skriva inn tey orð, sum koma fyri í teiginum niðanfyri, so at tú kanst stovna eina konto:\n([[Special:Captcha/help|meira kunning]]):",
+ "fancycaptcha-imgcaptcha-ph": "Skriva tekstin ið tú sært omanfyri",
+ "fancycaptcha-reload-text": "Dagfør"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/fr.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/fr.json
new file mode 100644
index 00000000..975ae5de
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/fr.json
@@ -0,0 +1,27 @@
+{
+ "@metadata": {
+ "authors": [
+ "Crochet.david",
+ "Gomoko",
+ "IAlex",
+ "Metroitendo",
+ "Sherbrooke",
+ "Urhixidur",
+ "Verdy p",
+ "Wladek92"
+ ]
+ },
+ "fancycaptcha-desc": "Générateur d’images ''captcha'' anti-robots demandant une confirmation humaine des modifications.",
+ "fancycaptcha-addurl": "Votre modification inclut de nouveaux liens externes.\nPour protéger le wiki contre les pourriels automatisés, nous vous demandons de bien vouloir entrer les mots qui apparaissent ci-dessous dans la boîte ([[Special:Captcha/help|plus d’informations]]) :",
+ "fancycaptcha-badlogin": "Pour protéger le wiki contre le forçage des mots de passe par des automates, nous vous demandons de bien vouloir entrer les mots qui apparaissent dans la boîte ci-dessous ([[Special:Captcha/help|plus d’informations]]) :",
+ "fancycaptcha-captcha": "Contrôle de sécurité",
+ "fancycaptcha-accountcreate": "Pour protéger le wiki contre les créations automatiques de comptes, nous vous demandons de bien vouloir entrer les mots qui apparaissent dans la boîte ci-dessous ([[Special:Captcha/help|plus d’informations]]) :",
+ "fancycaptcha-create": "Pour créer la page, veuillez entrer les mots qui apparaissent dans la boîte ci-dessous ([[Special:Captcha|plus d’informations]]) :",
+ "fancycaptcha-edit": "Pour modifier cette page, veuillez saisir les mots qui apparaissent dans la boîte ci-dessous ([[Special:Captcha/help|plus d’information]]) :",
+ "fancycaptcha-imgcaptcha-ph": "Entrez le texte que vous voyez sur l'image",
+ "fancycaptcha-sendemail": "Pour protéger le wiki contre l’envoi automatisé de pourriels, nous vous demandons de bien vouloir entrer les mots qui apparaissent dans la boîte ci-dessous ([[Special:Captcha/help|plus d’informations]]) :",
+ "fancycaptcha-reload-text": "Actualiser",
+ "apihelp-fancycaptchareload-description": "Obtenir un nouveau FancyCaptcha.",
+ "apihelp-fancycaptchareload-summary": "Obtenir un nouveau FancyCaptcha.",
+ "apihelp-fancycaptchareload-example-1": "Obtenir un nouveau FancyCaptcha"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/frp.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/frp.json
new file mode 100644
index 00000000..ad0555b5
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/frp.json
@@ -0,0 +1,17 @@
+{
+ "@metadata": {
+ "authors": [
+ "ChrisPtDe"
+ ]
+ },
+ "fancycaptcha-desc": "G·ènèrator d’émâges ''captch·a'' anti-robots que demande una confirmacion d’homo des changements.",
+ "fancycaptcha-addurl": "Voutron changement encllut de lims de defôr novéls.\nPor nos édiér a combatre contre lo spame ôtomatisâ, volyéd buchiér los mots qu’aparèssont dens la bouèta ce-desot ([[Special:Captcha/help|més d’enformacions]]) :",
+ "fancycaptcha-badlogin": "Por nos édiér a combatre contre lo cassâjo ôtomatisâ de contresegnos, volyéd buchiér los mots qu’aparèssont dedens la bouèta ce-desot ([[Special:Captcha/help|més d’enformacions]]) :",
+ "fancycaptcha-captcha": "Contrôlo de sècuritât",
+ "fancycaptcha-accountcreate": "Por protègiér lo vouiqui contre les crèacions ôtomatisâyes de comptios, se vos plét buchiéd los mots qu’aparèssont dedens la bouèta ce-desot ([[Special:Captcha/help|més d’enformacions]]) :",
+ "fancycaptcha-create": "Por fâre ceta pâge, volyéd buchiér los mots qu’aparèssont dens la bouèta ce-desot ([[Special:Captcha/help|més d’enformacions]]) :",
+ "fancycaptcha-edit": "Por changiér ceta pâge, volyéd buchiér los mots qu’aparèssont dens la bouèta ce-desot ([[Special:Captcha/help|més d’enformacions]]) :",
+ "fancycaptcha-imgcaptcha-ph": "Buchiéd lo tèxto que vos vêde sur l’émâge",
+ "fancycaptcha-sendemail": "Por nos édiér a combatre contre lo spame ôtomatisâ, volyéd buchiér los mots qu’aparèssont dens la bouèta ce-desot ([[Special:Captcha/help|més d’enformacions]]) :",
+ "fancycaptcha-reload-text": "Rafrèchir"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/frr.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/frr.json
new file mode 100644
index 00000000..7c9b2f22
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/frr.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "Murma174"
+ ]
+ },
+ "fancycaptcha-captcha": "Seekerhaidspreew",
+ "fancycaptcha-accountcreate": "Amdat diar nian automaatisk konten iinracht wurd, wees so gud an skriiw jodiar wurden oner iin uun det kasche ([[Special:Captcha/help|Muar diartu]]):",
+ "fancycaptcha-imgcaptcha-ph": "Skriiw di tekst, diar dü üüb det bil schochst",
+ "fancycaptcha-reload-text": "Nei loose"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/fur.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/fur.json
new file mode 100644
index 00000000..bca49466
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/fur.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "Tocaibon"
+ ]
+ },
+ "fancycaptcha-captcha": "Control di sigurece.",
+ "fancycaptcha-accountcreate": "Par difindi la wiki dai tentatîfs di creazion automatiche di identitâts falsis, ti domandin par plasê di scrivi la peraule che tu viodis tal ricuadri ([[Special:Captcha/help|more info]]):",
+ "fancycaptcha-imgcaptcha-ph": "Scrîf il test parsore",
+ "fancycaptcha-reload-text": "Inzorne"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/fy.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/fy.json
new file mode 100644
index 00000000..41d0d95b
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/fy.json
@@ -0,0 +1,10 @@
+{
+ "@metadata": {
+ "authors": [
+ "Snakesteuben"
+ ]
+ },
+ "fancycaptcha-badlogin": "As ekstra beskerming tsjin automatysk ûntsiferjen fan wachtwurden wurdt jo frege de ûndersteande letters oer te tikken. ([[Special:Captcha/help|mear ynformaasje]]).",
+ "fancycaptcha-captcha": "Feiligenshifking",
+ "fancycaptcha-imgcaptcha-ph": "Nim de tekst fan hjirboppe oer"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ga.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ga.json
new file mode 100644
index 00000000..161e2c63
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ga.json
@@ -0,0 +1,4 @@
+{
+ "@metadata": [],
+ "fancycaptcha-accountcreate": "Mar chosaint in éadan cuntais a chruthaítear go huathoibríoch, ionchuir na focail a thaispeántar san íomhá seo thíos: <br />([[Special:Captcha/help|tuilleadh eolais]])"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/gcr.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/gcr.json
new file mode 100644
index 00000000..acc2358a
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/gcr.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "LeGuyanaisPure"
+ ]
+ },
+ "fancycaptcha-captcha": "Kontrol di sékirité",
+ "fancycaptcha-accountcreate": "Pou protéjé wiki kont kréyasyon-yan otomatik di kont, nou ka doumandé zòt di byen lé antré mo-ya ki ka aparèt annan bwat-a ki anba ([[Special:Captcha/help|plis enfòrmasyon]]) :",
+ "fancycaptcha-imgcaptcha-ph": "Antré tèks-a ki zòt ka wè asou imaj-a",
+ "fancycaptcha-reload-text": "Atchwalizé"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/gd.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/gd.json
new file mode 100644
index 00000000..854bab77
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/gd.json
@@ -0,0 +1,12 @@
+{
+ "@metadata": {
+ "authors": [
+ "GunChleoc",
+ "Akerbeltz"
+ ]
+ },
+ "fancycaptcha-captcha": "Sgrùdadh tèarainteachd",
+ "fancycaptcha-accountcreate": "Gus an uicidh a dhìon an aghaidh cruthachadh chunntasan fèin-obrachail, bu mhiann leinn gun cuir thu na faclan a-steach a chì thu fon bhogsa ([[Special:Captcha/help|barrachd fiosrachaidh]]):",
+ "fancycaptcha-imgcaptcha-ph": "Cuir a-steach an teacsa a chì thu gu air an dealbh",
+ "fancycaptcha-reload-text": "Ath-nuadhaich"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/gl.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/gl.json
new file mode 100644
index 00000000..c48ab6e1
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/gl.json
@@ -0,0 +1,23 @@
+{
+ "@metadata": {
+ "authors": [
+ "Toliño",
+ "Xosé",
+ "Banjo",
+ "Elisardojm"
+ ]
+ },
+ "fancycaptcha-desc": "Xerador de imaxes CAPTCHA para Confirm Edit",
+ "fancycaptcha-addurl": "A súa edición inclúe novas ligazóns externas.\nPara protexer o wiki contra o spam automático, introduza as palabras que aparecen na caixa ([[Special:Captcha/help|máis información]]):",
+ "fancycaptcha-badlogin": "Para protexer o wiki contra o roubo de contrasinais, introduza as palabras que aparecen na caixa ([[Special:Captcha/help|máis información]]):",
+ "fancycaptcha-captcha": "Comprobación de seguridade",
+ "fancycaptcha-accountcreate": "Para protexer o wiki contra a creación automática de contas, introduza as palabras que aparecen na caixa ([[Special:Captcha/help|máis información]]):",
+ "fancycaptcha-create": "Para crear a páxina, introduza as palabras que aparecen na caixa ([[Special:Captcha/help|máis información]]):",
+ "fancycaptcha-edit": "Para editar esta páxina, introduza as palabras que aparecen na caixa ([[Special:Captcha/help|máis información]]):",
+ "fancycaptcha-imgcaptcha-ph": "Escriba o texto que ve na imaxe",
+ "fancycaptcha-sendemail": "Para protexer o wiki contra o spam automático, introduza as palabras que aparecen na caixa ([[Special:Captcha/help|máis información]]):",
+ "fancycaptcha-reload-text": "Refrescar",
+ "apihelp-fancycaptchareload-description": "Novo FancyCaptcha.",
+ "apihelp-fancycaptchareload-summary": "Obter un novo FancyCaptcha.",
+ "apihelp-fancycaptchareload-example-1": "Novo FancyCaptcha"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/glk.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/glk.json
new file mode 100644
index 00000000..41d2f3f4
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/glk.json
@@ -0,0 +1,10 @@
+{
+ "@metadata": {
+ "authors": [
+ "شیخ"
+ ]
+ },
+ "fancycaptcha-captcha": "أمنيتي وارسي",
+ "fancycaptcha-imgcaptcha-ph": "وؤتي گه تصويرˇ ميئن اينينه وارد بکۊنين",
+ "fancycaptcha-reload-text": "جؤنىتن"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/gom-deva.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/gom-deva.json
new file mode 100644
index 00000000..5e1df13a
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/gom-deva.json
@@ -0,0 +1,12 @@
+{
+ "@metadata": {
+ "authors": [
+ "Darshan kandolkar",
+ "Vaishali Parab"
+ ]
+ },
+ "fancycaptcha-captcha": "सुरक्षा तपासणी",
+ "fancycaptcha-accountcreate": "स्वयंचलीत वांगडी नोंद करपासावन वाचपा खातीर आमी तुमचेकडेन मागणी करता, सकयल दिल्लीं उतरां बॉक्सांत बरयात. ([[Special:Captcha/help|चड म्हायती]]):",
+ "fancycaptcha-imgcaptcha-ph": "चित्राचेर दिसता तो मजकूर बरय",
+ "fancycaptcha-reload-text": "ताजें करात"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/gom-latn.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/gom-latn.json
new file mode 100644
index 00000000..f54753df
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/gom-latn.json
@@ -0,0 +1,12 @@
+{
+ "@metadata": {
+ "authors": [
+ "The Discoverer"
+ ]
+ },
+ "fancycaptcha-badlogin": "Swaysanchalit gupitutor crack korpasavn vachchea khatir, ami tumche kode magtat ki khala dil'lim utram boxant boroiat ([[Special:Captcha/help|anik mahiti]]):",
+ "fancycaptcha-captcha": "Suraksha topasni",
+ "fancycaptcha-accountcreate": "Swaysanchalit vangdi nond korpasavn vachchea khatir, ami tumche kode magtat ki khala dil'lim utram boxant boroiat ([[Special:Captcha/help|anik mahiti]]):",
+ "fancycaptcha-imgcaptcha-ph": "Chitracher dista to mozkur boroi",
+ "fancycaptcha-reload-text": "Tajem korat"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/gor.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/gor.json
new file mode 100644
index 00000000..4e3b649d
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/gor.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "Marwan Mohamad"
+ ]
+ },
+ "fancycaptcha-captcha": "Momarakisa u aamani",
+ "fancycaptcha-accountcreate": "U mopo'aamani wiki to ta mohutu akun otomatis, Yi'o musti mopotuwoto tahe to tibawa botiye ode delomo kotak sadi-sadia ([[Special:Captcha/help|habari ganapu]]):",
+ "fancycaptcha-imgcaptcha-ph": "Tuwota hurupu u ilontonga to teekeni",
+ "fancycaptcha-reload-text": "Mopobohu"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/got.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/got.json
new file mode 100644
index 00000000..b2fa0b9b
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/got.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "Gothicspeaker"
+ ]
+ },
+ "fancycaptcha-accountcreate": "𐌳𐌿 𐌷𐌰𐌱𐌰𐌽 𐌼𐌿𐌽𐌳 𐍅𐌹𐌸𐍂𐌰 𐍃𐌹𐌻𐌱𐌰𐍄𐍉𐌾𐌰𐌽𐌳𐌴𐌹𐌽 𐌺𐌰𐍅𐍄𐍃𐌾𐍉𐌲𐌰𐍃𐌺𐌰𐍆𐍄 𐌹𐌽 𐌸𐌰𐌼𐌼𐌰 𐍅𐌹𐌺𐌾𐌰, 𐌱𐌹𐌳𐌾𐌰𐌼 𐌸𐌿𐌺 𐌴𐌹 𐌼𐌴𐌻𐌾𐌰𐌹𐍃 𐍅𐌰𐌿𐍂𐌳 𐌸𐌰𐍄𐌴𐌹 𐌲𐌰𐌱𐌰𐌹𐍂𐌷𐍄𐌴𐌹𐌸 𐌿𐍆 𐌹𐌽 𐌰𐍂𐌺𐌰𐌹 ([[special:captcha/help|𐌼𐌰𐌽𐌰𐌲𐌹𐌶𐍉 𐌺𐌿𐌽𐌸𐌹]]):",
+ "fancycaptcha-imgcaptcha-ph": "𐌼𐌴𐌻𐌴𐌹 𐌱𐍉𐌺𐍉𐍃 𐌸𐍉𐌶𐌴𐌹 𐍃𐌰𐌹𐍈𐌹𐍃 𐌰𐌽𐌰 𐍆𐍂𐌹𐍃𐌰𐌷𐍄𐌰𐌹"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/grc.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/grc.json
new file mode 100644
index 00000000..bb65f0eb
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/grc.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "Gts-tg"
+ ]
+ },
+ "fancycaptcha-captcha": "Ἔλεγχος ἀσφαλείας",
+ "fancycaptcha-accountcreate": "Διά την προστασίαν του βίκι ἔναντι αὐτομάτης δημιουργίας λογισμών, παρακαλούμε ὐμᾶς πρός συμπλήρωσιν τῶν λέξεων ἐμφανισθέντων εἴς το κάτωθιν κυτίο ([[Special:Captcha/help|πλείονας πληροφορίαι]]):",
+ "fancycaptcha-imgcaptcha-ph": "Παρέχειν το ἄνωθεν κείμενο",
+ "fancycaptcha-reload-text": "Ἀναψύχειν"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/gsw.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/gsw.json
new file mode 100644
index 00000000..6172af69
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/gsw.json
@@ -0,0 +1,19 @@
+{
+ "@metadata": {
+ "authors": [
+ "Als-Chlämens",
+ "Als-Holder",
+ "Melancholie",
+ "Terfili"
+ ]
+ },
+ "fancycaptcha-addurl": "In Dyynere Bearbeitig het s neiji externi Link.\nZum Schutz vor automatisiertem Spamming gib des Wort in s Fäld unten yy. Druck derno nomol uf „Syte spychere“. [[Special:Captcha/help|(Frogen oder Probläm?)]]",
+ "fancycaptcha-badlogin": "Zum Schutz vor ere Kompromittierig vu Dyynm Benutzerkonto gib des Wort in s Fäld unten yy [[Special:Captcha/help|(Frogen oder Probläm?)]]:",
+ "fancycaptcha-captcha": "Sicherheitspriefig",
+ "fancycaptcha-accountcreate": "Zum Schutz vum Wiki vor ere automatisierte Aalag vu Benutzerkonte gib bitte des Wort in s Fäld unten yy ([[Special:Captcha/help|Frogen oder Probläm?]]):",
+ "fancycaptcha-create": "Zum d Syten aalege gib des Wort in s Fäld unten yy. [[Special:Captcha/help|(Frogen oder Probläm?)]]",
+ "fancycaptcha-edit": "Zum d Syte bearbeite gib des Wort in s Fäld unten yy. [[Special:Captcha/help|(Frogen oder Probläm?)]]",
+ "fancycaptcha-imgcaptcha-ph": "Gib dr Tekscht yy, wu Du uff däm Bild siisch",
+ "fancycaptcha-sendemail": "As Schutz gege e automatischs Spamming, gib bitte des Wort in s Fäld unten yy ([[Special:Captcha/help|meh Informatione]]):",
+ "fancycaptcha-reload-text": "nej lade"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/gu.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/gu.json
new file mode 100644
index 00000000..371da557
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/gu.json
@@ -0,0 +1,20 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ashok modhvadia",
+ "Dsvyas",
+ "Sushant savla",
+ "Arbhatt",
+ "KartikMistry"
+ ]
+ },
+ "fancycaptcha-addurl": "તમે કરેલા ફેરફારોમાં નવી બાહ્ય કડીઓ સામેલ છે. \nવિકિને સ્વચાલિત સ્પેમ/સ્પામ(spam)થી બચાવવા માટે અમે તમને જણાવીએ છીએ કે કૃપયા નીચે આપેલા સરળ દાખલાનો જવાબ તેની બાજુના ખાનામાં લખો.\n([[Special:Captcha/help|વધુ વિગત]]):",
+ "fancycaptcha-badlogin": "આપોઆપ થતી ગુપ્તસંજ્ઞાની ચોરી (password cracking)થી વિકિને બચાવવા માટે અમે તમને જણાવીએ છીએ કે કૃપયા નીચે આપેલા શબ્દ તેની બાજુના ખાનામાં લખો. ([[Special:Captcha/help|વધુ વિગત]]):",
+ "fancycaptcha-captcha": "સલામતી ચકાસણી",
+ "fancycaptcha-accountcreate": "આપોઆપ નવા ખાતા ખુલતા રોકવા અને વિકીને તેનાથી બચાવવા માટે. અમે તમને જણાવીએ છીએ કે કૃપયા નીચે દેખાતા શબ્દો ખાનામાં લખો. ([[Special:Captcha/help|વધુ માહિતી]]):",
+ "fancycaptcha-create": "પાનું બનાવવા માટે નીચે દેખાતા શબ્દો ખાનામાં ટાઈપ કરો ([[Special:Captcha/help|વધુ માહિતી]]):",
+ "fancycaptcha-edit": "આ પાનામાં ફેરફાર કરવા માટે નીચે દેખાતા શબ્દો ખાનામાં ટાઈપ કરો ([[Special:Captcha/help|વધુ માહિતી]]):",
+ "fancycaptcha-imgcaptcha-ph": "તમે ચિત્ર પર જે લખાણ જુઓ છો તે દાખલ કરો",
+ "fancycaptcha-sendemail": "વિકિને આપોઆપ થતી સ્પૅમીંગથી બચાવવા માટે. અમે તમને જણાવીએ છીએ કે કૃપયા નીચે આપેલા શબ્દ તેની બાજુના ખાનામાં લખો ([[Special:Captcha/help|વધુ માહિતી]]):",
+ "fancycaptcha-reload-text": "પુનઃ તાજું"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/hak.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/hak.json
new file mode 100644
index 00000000..c44169b4
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/hak.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "Hakka"
+ ]
+ },
+ "fancycaptcha-captcha": "Ôn-chhiòn kiám-chhà",
+ "fancycaptcha-accountcreate": "Vi-chho̍k fòng-chṳ́ chhṳ-thûng chu-chhak chhàng-sṳt, ngài-têu oi mà-fàn Ngì sû-ngi̍p chhai hâ-mien ke fông-khiông tú hién-sṳ ke tân-sṳ  ([[Special:Captcha/help|kiên-tô chṳ̂-sín]]):",
+ "fancycaptcha-imgcaptcha-ph": "Sû-ngi̍p ngì chhai sông-poi khon-to ke sṳ-fù",
+ "fancycaptcha-reload-text": "Chhùng-sîn cháng-lî"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/haw.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/haw.json
new file mode 100644
index 00000000..91514fa9
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/haw.json
@@ -0,0 +1,5 @@
+{
+ "@metadata": [],
+ "fancycaptcha-captcha": "Hōʻoiana palekana",
+ "fancycaptcha-imgcaptcha-ph": "E kikokiko i ke kikokikona i luna"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/he.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/he.json
new file mode 100644
index 00000000..2892560f
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/he.json
@@ -0,0 +1,22 @@
+{
+ "@metadata": {
+ "authors": [
+ "Amire80",
+ "Rotem Liss",
+ "Guycn2"
+ ]
+ },
+ "fancycaptcha-desc": "מחולל תמונות CAPTCHA מגניבות בשביל ההרבחבה Confirm Edit",
+ "fancycaptcha-addurl": "עריכתך כוללת קישורים חיצוניים חדשים.\nכהגנה מפני ספאם אוטומטי, נא להקליד את המילים המופיעות בתיבה שלהלן ([[Special:Captcha/help|מידע נוסף]]):",
+ "fancycaptcha-badlogin": "כהגנה מפני פריצת סיסמאות אוטומטית, נא להקליד את המילים המופיעות בתיבה שלהלן ([[Special:Captcha/help|מידע נוסף]]):",
+ "fancycaptcha-captcha": "בדיקת אבטחה",
+ "fancycaptcha-accountcreate": "כהגנה מפני יצירת חשבונות אוטומטית, נא להקליד את המילים המופיעות בתיבה שלהלן ([[Special:Captcha/help|מידע נוסף]]):",
+ "fancycaptcha-create": "כדי ליצור את הדף, נא להקליד את המילים המופיעות בתיבה שלהלן ([[Special:Captcha/help|מידע נוסף]]):",
+ "fancycaptcha-edit": "כדי לערוך את הדף, נא להקליד את המילים המופיעות בתיבה שלהלן ([[Special:Captcha/help|מידע נוסף]]):",
+ "fancycaptcha-imgcaptcha-ph": "נא להקליד את הטקסט שמופיע בתמונה",
+ "fancycaptcha-sendemail": "כהגנה מפני ספאם אוטומטי, נא להקליד את המילים המופיעות בתיבה שלהלן ([[Special:Captcha/help|מידע נוסף]]):",
+ "fancycaptcha-reload-text": "החלפה",
+ "apihelp-fancycaptchareload-description": "קבלת FancyCaptcha חדשה.",
+ "apihelp-fancycaptchareload-summary": "קבלת FancyCaptcha חדשה.",
+ "apihelp-fancycaptchareload-example-1": "קבלת FancyCaptcha חדשה"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/hi.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/hi.json
new file mode 100644
index 00000000..a14fb101
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/hi.json
@@ -0,0 +1,24 @@
+{
+ "@metadata": {
+ "authors": [
+ "Kaustubh",
+ "Siddhartha Ghai",
+ "Hindustanilanguage",
+ "Sfic",
+ "संजीव कुमार",
+ "Innocentbunny"
+ ]
+ },
+ "fancycaptcha-addurl": "आपके सम्पादन में नई बाहरी कड़ियाँ हैं।\nस्वचालित अनचाहे से विकि को बचाने के लिए, हम आपको नीचे के सन्दूक में दिये गये शब्द को लिखने का आग्रह कर रहे हैं ([[Special:Captcha/help|अधिक जानकारी]]):",
+ "fancycaptcha-badlogin": "स्वचालित कूटशब्द चोरी से विकि को बचाने के लिए हम आपसे नीचे के सन्दूक में लिखे शब्द को डालने का आग्रह कर रहे हैं ([[Special:Captcha/help|अधिक जानकारी]]):",
+ "fancycaptcha-captcha": "सुरक्षा जाँच",
+ "fancycaptcha-accountcreate": "स्वचालित सदस्य पंजीकरण से बचाव के लिये हम आपसे निवेदन करते हैं की नीचे दिये शब्द बक्से में लिखें ([[Special:Captcha/help|अधिक जानकारी]]):",
+ "fancycaptcha-create": "यह पृष्ठ बनाने के लिये कृपया नीचे दिये शब्द बक्से में लिखें ([[Special:Captcha/help|अधिक जानकारी]]):",
+ "fancycaptcha-edit": "यह पृष्ठ बदलने के लिये, नीचे दिखने वाले अक्षर टेक्स्ट बक्सेमें लिखें ([[Special:Captcha/help|अधिक जानकारी]]):",
+ "fancycaptcha-imgcaptcha-ph": "छवि में दिये पाठ को यहाँ लिखें",
+ "fancycaptcha-sendemail": "अपने आप होने वाले स्पैम से बचाने के लिए हम आपसे नीचे दिये गए शब्द को भरने के लिए बोल रहे हैं। ([[Special:Captcha/help|अधिक जानकारी]]):",
+ "fancycaptcha-reload-text": "रिफ़्रेश",
+ "apihelp-fancycaptchareload-description": "नया लुभावना-कैपचा प्राप्त करें।",
+ "apihelp-fancycaptchareload-summary": "नया लुभावना-कैपचा प्राप्त करें।",
+ "apihelp-fancycaptchareload-example-1": "नया लुभावना-कैपचा प्राप्त करें।"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/hif-latn.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/hif-latn.json
new file mode 100644
index 00000000..913d7059
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/hif-latn.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "Abdul Kadir"
+ ]
+ },
+ "fancycaptcha-captcha": "Security check",
+ "fancycaptcha-accountcreate": "To protect the wiki against automated account creation, we kindly ask you to enter the words that appear below in the box ([[Special:Captcha/help|more info]]):",
+ "fancycaptcha-imgcaptcha-ph": "Dekhae waala text ke likho",
+ "fancycaptcha-reload-text": "Refresh karo"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/hoc.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/hoc.json
new file mode 100644
index 00000000..5882470d
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/hoc.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Singkiring57"
+ ]
+ },
+ "fancycaptcha-imgcaptcha-ph": "𑢧𑣖𑣗𑣈𑣚 𑣒𑣈 𑣓𑣈𑣚𑣉𑣄 𑣕𑣓𑣁𑣄 𑣉𑣚-𑣁𑣔𑣈𑣜𑣈"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/hr.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/hr.json
new file mode 100644
index 00000000..c50cc503
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/hr.json
@@ -0,0 +1,18 @@
+{
+ "@metadata": {
+ "authors": [
+ "SpeedyGonsales",
+ "MaGa",
+ "Roberta F."
+ ]
+ },
+ "fancycaptcha-addurl": "Vaše uređivanje sadrži nove vanjske poveznice. Kao zaštitu od automatskog spama,\nmolimo unesite slova koja vidite na slici dolje: ([[Special:Captcha/help|Pomoć]])",
+ "fancycaptcha-badlogin": "Da se spriječi automatiziranje pogađanja lozinki, molimo unesite\nslova koja vidite na slici dolje: <br />([[Special:Captcha/help|Pomoć]])",
+ "fancycaptcha-captcha": "Sigurnosna provjera",
+ "fancycaptcha-accountcreate": "Kao zaštitu wiki od automatskog otvaranja računa, pri otvaranju računa ljubazno Vas molimo upišite slova koja vidite na slici: <br />([[Special:Captcha/help|Pomoć]])",
+ "fancycaptcha-create": "Da bi stvorili novu stranicu, molimo unesite\nslova koja vidite na slici dolje: <br />([[Special:Captcha/help|Pomoć]])",
+ "fancycaptcha-edit": "Da bi uređivali ovu stranicu, molimo unesite slova koja vidite na slici dolje: <br />([[Special:Captcha/help|Pomoć]])",
+ "fancycaptcha-imgcaptcha-ph": "Unesite tekst koji vidite iznad",
+ "fancycaptcha-sendemail": "Da bi ste nam pomogli protiv automatskog spama, molimo unesite riječi koje su prikazane ispod u okvir ([[Special:Captcha/help|više informacija]]):",
+ "fancycaptcha-reload-text": "Učitaj ponovno"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/hrx.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/hrx.json
new file mode 100644
index 00000000..0534d785
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/hrx.json
@@ -0,0 +1,5 @@
+{
+ "@metadata": [],
+ "fancycaptcha-captcha": "Sicherheitsprüfung",
+ "fancycaptcha-imgcaptcha-ph": "Geb den Text ren, den wo du uwe siehst."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/hsb.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/hsb.json
new file mode 100644
index 00000000..3b17ec95
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/hsb.json
@@ -0,0 +1,16 @@
+{
+ "@metadata": {
+ "authors": [
+ "Michawiki"
+ ]
+ },
+ "fancycaptcha-addurl": "W twojej změnje su nowe eksterne wotkazy. Jako škitnu naprawu přećiwo awtomatiskemu spamej zapodaj prošu slědowace znamješka do kašćika ([[Special:Captcha/help|dalše informacije]]):",
+ "fancycaptcha-badlogin": "Zo by wiki přećiwo awtomatiskemu kradnjenju hesłow škitał, prosymy će, slědowace słowa do kašćika zapisować ([[Special:Captcha/help|dalše informacije]]):",
+ "fancycaptcha-captcha": "Wěstotna kontrola",
+ "fancycaptcha-accountcreate": "Jako škitna naprawa přećiwo awtomatiskemu wutworjenju wužiwarskich kontow, zapodaj prošu slědowace słowa do kašćika ([[Special:Captcha/help|dalše informacije]]):",
+ "fancycaptcha-create": "Zo by stronu wutworić móhł zapodaj prošu sćěhowace znamješka do kašćika ([[Special:Captcha/help|čehodla?]]):",
+ "fancycaptcha-edit": "Zo by stronu wobdźěłować móhł zapodaj prošu sćěhowace znamješka do kašćika ([[Special:Captcha/help|čehodla?]]):",
+ "fancycaptcha-imgcaptcha-ph": "Zapodaj tekst, kotryž na wobrazu widźiš",
+ "fancycaptcha-sendemail": "Za škit přećiwo awtomatiskemu spamowanju, zapodaj prošu słowa, kotrež so deleka w kašćiku jewja ([[Special:Captcha/help|dalše informacije]]):",
+ "fancycaptcha-reload-text": "Aktualizować"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ht.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ht.json
new file mode 100644
index 00000000..0b0cc960
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ht.json
@@ -0,0 +1,10 @@
+{
+ "@metadata": {
+ "authors": [
+ "Tisave"
+ ]
+ },
+ "fancycaptcha-captcha": "Verifikasyon sekirite",
+ "fancycaptcha-accountcreate": "Pou anpeche ke kont kreye otomatikman wou wiki, n ap mande ou tanpri souple ekri mo yo ki parèt nan bwat la ([[Special:Captcha/help|more info]]):",
+ "fancycaptcha-imgcaptcha-ph": "Rantre teks ke w anlè a"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/hu.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/hu.json
new file mode 100644
index 00000000..9646dc47
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/hu.json
@@ -0,0 +1,22 @@
+{
+ "@metadata": {
+ "authors": [
+ "Adam78",
+ "Dorgan",
+ "Glanthor Reviol",
+ "Dj",
+ "Tacsipacsi"
+ ]
+ },
+ "fancycaptcha-addurl": "A szerkesztésed új külső hivatkozásokat tartalmaz.\nAz automatizált spamek megelőzése miatt kérjük, hogy add meg a lenti keretben olvasható szavakat ([[Special:Captcha/help|további segítség]]):",
+ "fancycaptcha-badlogin": "Hogy az automatizált jelszófeltörési kísérleteket megelőzzük, kérjük, hogy add meg a lenti keretben olvasható szavakat ([[Special:Captcha/help|további segítség]]):",
+ "fancycaptcha-captcha": "Biztonsági ellenőrzés",
+ "fancycaptcha-accountcreate": "A felhasználói fiókok automatizált létrehozásának elkerülésére, kérlek, írd be az alább megjelenő szót a szövegdobozba ([[Special:Captcha/help|segítség]]):",
+ "fancycaptcha-create": "A lap létrehozásához kérjük, hogy add meg a lenti keretben olvasható szavakat ([[Special:Captcha/help|további segítség]]):",
+ "fancycaptcha-edit": "A szerkesztésed új külső linkeket tartalmaz. A spam-robotok elleni védekezés elősegítésére kérlek írd be az alább megjelenő szót a szövegdobozba ([[Special:Captcha/help|segítség]]):",
+ "fancycaptcha-imgcaptcha-ph": "Írd be a képen látható szöveget",
+ "fancycaptcha-sendemail": "Az automatizált spamek megelőzése miatt kérjük, hogy add meg a lenti keretben olvasható szavakat ([[Special:Captcha/help|további segítség]]):",
+ "fancycaptcha-reload-text": "Frissítés",
+ "apihelp-fancycaptchareload-description": "Új FancyCaptcha kérése",
+ "apihelp-fancycaptchareload-example-1": "Új FancyCaptcha kérése"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/hy.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/hy.json
new file mode 100644
index 00000000..190b3335
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/hy.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "Xelgen",
+ "Դավիթ Սարոյան",
+ "Irus"
+ ]
+ },
+ "fancycaptcha-captcha": "Անվտանգության ստուգում",
+ "fancycaptcha-accountcreate": "Վիքին մասնակցային հաշիվների ավտոմատ գրանցումից պաշտպանելու նպատակով, խնդրում ենք Ձեզ գրել ներքևի տուփում գրված բառերը ([[Special:Captcha/help|իմանալ ավելին]])։",
+ "fancycaptcha-imgcaptcha-ph": "Մուտքագրեք տեքստը, որը տեսնում եք նկարում",
+ "fancycaptcha-reload-text": "Մեկ այլ"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/hyw.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/hyw.json
new file mode 100644
index 00000000..8403abcf
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/hyw.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "ArmenBakkalian"
+ ]
+ },
+ "fancycaptcha-accountcreate": "Պաշտպանելու համար Ուիքին մեքենական ինքնագործ հաշիւներու ստեղծումէն, կը խնդրուի տուփիկին մէջ նշուած բառերը գրել: [[Special:Captcha/help|յաւելեալ տեղեկութիւն]]"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ia.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ia.json
new file mode 100644
index 00000000..2117f2de
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ia.json
@@ -0,0 +1,19 @@
+{
+ "@metadata": {
+ "authors": [
+ "McDutchie"
+ ]
+ },
+ "fancycaptcha-addurl": "Tu modification include nove ligamines externe.\nPro adjutar a proteger le wiki contra le spam automatisate, per favor entra le parolas que appare infra in le quadro ([[Special:Captcha/help|plus info]]):",
+ "fancycaptcha-badlogin": "Pro adjutar a proteger le wiki contra le furto automatisate de contrasignos, per favor entra le parolas que appare infra in le quadro ([[Special:Captcha/help|plus info]]):",
+ "fancycaptcha-captcha": "Controlo de securitate",
+ "fancycaptcha-accountcreate": "Pro adjutar a proteger le wiki contra le creation automatisate de contos, per favor entra le parolas que appare infra in le quadro ([[Special:Captcha/help|plus info]]):",
+ "fancycaptcha-create": "Pro crear le pagina, per favor entra le parolas que appare infra in le quadro ([[Special:Captcha/help|plus info]]):",
+ "fancycaptcha-edit": "Pro modificar iste pagina, per favor entra le parolas que appare infra in le quadro ([[Special:Captcha/help|plus info]]):",
+ "fancycaptcha-imgcaptcha-ph": "Scribe le texto que tu vide sur le imagine",
+ "fancycaptcha-sendemail": "Pro adjutar a proteger le wiki contra le spam automatisate, per favor entra le parolas que appare infra in le quadro ([[Special:Captcha/help|plus info]]):",
+ "fancycaptcha-reload-text": "Refrescar",
+ "apihelp-fancycaptchareload-description": "Obtener un nove FancyCaptcha.",
+ "apihelp-fancycaptchareload-summary": "Obtener un nove FancyCaptcha.",
+ "apihelp-fancycaptchareload-example-1": "Obtener un nove FancyCaptcha"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/id.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/id.json
new file mode 100644
index 00000000..e3679681
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/id.json
@@ -0,0 +1,20 @@
+{
+ "@metadata": {
+ "authors": [
+ "Bennylin",
+ "IvanLanin",
+ "Iwan Novirion",
+ "Rachmat.Wahidi",
+ "Rachmat04"
+ ]
+ },
+ "fancycaptcha-addurl": "Suntingan Anda mencantumkan pranala luar baru. Untuk pelindungan terhadap spam otomatis, harap masukkan kata di bawah ini ke dalam kotak yang tersedia ([[Special:Captcha/help|info lengkap]]):",
+ "fancycaptcha-badlogin": "Sebagai pelindungan terhadap pemecah kata kunci otomatis, harap masukkan kata di bawah ini ke dalam kotak yang tersedia ([[Special:Captcha/help|info lengkap]]):",
+ "fancycaptcha-captcha": "Pemeriksaan keamanan",
+ "fancycaptcha-accountcreate": "Untuk melindungi wiki terhadap pembuatan akun otomatis, kami mohon Anda masukkan kata di bawah ini ke dalam kotak yang disediakan ([[Special:Captcha/help|info lengkap]]):",
+ "fancycaptcha-create": "Untuk membuat halaman, silahkan masukkan kata-kata yang muncul di bawah ini ke dalam kotak yang tersedia ([[Special:Captcha/help|info lengkap]]):",
+ "fancycaptcha-edit": "Untuk menyunting halaman ini, silahkan masukkan kata-kata yang muncul di bawah ini ke dalam kotak yang tersedia ([[Special:Captcha/help|info lengkap]]):",
+ "fancycaptcha-imgcaptcha-ph": "Masukkan teks yang Anda lihat dalam gambar",
+ "fancycaptcha-sendemail": "Sebagai pelindungan terhadap spam otomatis, silahkan masukkan kata-kata yang muncul di bawah ini ke dalam kotak yang tersedia ([[Special:Captcha/help|info lengkap]]):",
+ "fancycaptcha-reload-text": "Perbaharui"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ie.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ie.json
new file mode 100644
index 00000000..14172bae
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ie.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "Stavanger7"
+ ]
+ },
+ "fancycaptcha-imgcaptcha-ph": "Provide li textu quo vu vide sur li image",
+ "fancycaptcha-reload-text": "Actualisar"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ilo.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ilo.json
new file mode 100644
index 00000000..c4c7d269
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ilo.json
@@ -0,0 +1,18 @@
+{
+ "@metadata": {
+ "authors": [
+ "Lam-ang"
+ ]
+ },
+ "fancycaptcha-addurl": "Dagiti inurnosmo ket aglaon kadagiti baro a silpo ti ruar.\nTapno masalakniban ti wiki kadagiti automatiko nga spam, naemmakami nga agdawat nga ikabilmo dagiti balikas nga agparang dita baba iti kahon ([[Special:Captcha/help|adu pay a pakaammo]]):",
+ "fancycaptcha-badlogin": "Tapno masalakniban kadagiti automatiko a panagsulbar ti kontrasenias, naemmakami nga agdawat nga ikabilmo dagiti balikas nga agparang dita baba iti kahon ([[Special:Captcha/help|adu pay a pakaammo]]):",
+ "fancycaptcha-captcha": "Panagpatalged ti seguridad",
+ "fancycaptcha-accountcreate": "Tapno makasalakniban ti wiki kadagiti automatiko a panagpartuat ti pakabilangan, naemmakami nga agdawat nga ikabilmo dagiti balikas nga agparang dita baba iti kahon ([[Special:Captcha/help|adu pay a pakaammo]]):",
+ "fancycaptcha-create": "Tapno makaaramid ti panid, pangaasim nga ikabil ti balikas nga agparang dita baba a kahon. ([[Special:Captcha/help|adu pay a pakaammo]]):",
+ "fancycaptcha-edit": "Tapno makaurnos daytoy a panid, pangaasim nga ikabil ti balikas nga agparang dita baba a kahon. ([[Special:Captcha/help|adu pay a pakaammo]]):",
+ "fancycaptcha-imgcaptcha-ph": "Ikabil ti teksto a makitam iti ladawan",
+ "fancycaptcha-sendemail": "Tapno makasalakniban ti wiki kadagiti automatiko a panag-spam, naemmakami nga agdawat nga ikabilmo dagiti balikas nga agparang dita baba iti kahon ([[Special:Captcha/help|adu pay a pakaammo]]):",
+ "fancycaptcha-reload-text": "Pasadiwaen",
+ "apihelp-fancycaptchareload-description": "Mangala iti baro a FancyCaptcha.",
+ "apihelp-fancycaptchareload-example-1": "Mangala iti baro a FancyCaptcha"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/inh.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/inh.json
new file mode 100644
index 00000000..6d6a9f5d
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/inh.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "Adam-Yourist"
+ ]
+ },
+ "fancycaptcha-captcha": "Кхерам цахилара тахкар",
+ "fancycaptcha-accountcreate": "Ше-ше дагара йоазонаш ца кхоллийтара бахьана, дехар ду, лохера гома чура дешаш Iочуязде ([[Special:Captcha/help|ма дарра…]]):",
+ "fancycaptcha-imgcaptcha-ph": "Сурта тIа гуш йола текст Iочуязъе",
+ "fancycaptcha-reload-text": "Кердадаккха"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/io.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/io.json
new file mode 100644
index 00000000..e9527d4a
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/io.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "Joao Xavier"
+ ]
+ },
+ "fancycaptcha-captcha": "Verifiko di sekureso",
+ "fancycaptcha-accountcreate": "Por protektar la wiki kontre l'automatala kreado di konti, ni bonvole pregas ke vu kopiez la vorti qui aparas en la buxo infre\n([[Special:Captcha/help|plusa informi]]):",
+ "fancycaptcha-imgcaptcha-ph": "Skribez la texto qua vu vidas en l'imajo",
+ "fancycaptcha-reload-text": "Rinovigar"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/is.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/is.json
new file mode 100644
index 00000000..32264983
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/is.json
@@ -0,0 +1,16 @@
+{
+ "@metadata": {
+ "authors": [
+ "Snævar"
+ ]
+ },
+ "fancycaptcha-addurl": "Breytingin þín inniheldur viðbætta ytri tengla.\nTil þess að verjast sjálfvirku auglýsingarusli, biðjum við þig vinsamlegast að slá inn orðin sem birtast hér fyrir neðan í reitinn ([[Special:Captcha/help|frekari upplýsingar]]):",
+ "fancycaptcha-badlogin": "Til þess að verjast gegn sjálfvirkum leyniorðaárásum, biðjum við þig vinsamlegast að slá inn orðin sem birtast hér fyrir neðan í reitinn ([[Special:Captcha/help|frekari upplýsingar]]):",
+ "fancycaptcha-captcha": "Öryggis athugun",
+ "fancycaptcha-accountcreate": "Til þess að verjast sjálfvirkri stofnun aðganga, biðjum við þig vinsamlegast að slá inn orðin sem birtast hér fyrir neðan í reitinn ([[Special:Captcha/help|frekari upplýsingar]]):",
+ "fancycaptcha-create": "Til þess að búa til þessa síðu, vinsamlegast sláðu inn orðin sem birtast hér fyrir neðan í reitinn ([[Special:Captcha/help|frekari upplýsingar]]):",
+ "fancycaptcha-edit": "Til þess að breyta þessari síðu, vinsamlegast sláðu inn orðin að neðan í reitinn ([[Special:Captcha/help|frekari upplýsingar]]):",
+ "fancycaptcha-imgcaptcha-ph": "Sláðu inn textann á myndinni",
+ "fancycaptcha-sendemail": "Til þess að verjast sjálfvirkum auglýsingapósti, biðjum við þig vinsamlegast að slá inn orðin hér fyrir neðan í reitinn ([[Special:Captcha/help|frekari upplýsinngar]]):",
+ "fancycaptcha-reload-text": "Endurhlaða"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/it.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/it.json
new file mode 100644
index 00000000..09a1f519
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/it.json
@@ -0,0 +1,23 @@
+{
+ "@metadata": {
+ "authors": [
+ "Beta16",
+ "BrokenArrow",
+ "Darth Kule",
+ "Nemo bis",
+ "Lucas2",
+ "Gianfranco"
+ ]
+ },
+ "fancycaptcha-addurl": "La modifica richiesta aggiunge dei collegamenti esterni alla pagina; come misura precauzionale contro l'inserimento automatico di spam, ti chiediamo gentilmente di inserire nella casella sottostante le parole che compaiono di seguito ([[Special:Captcha/help|come funziona?]]):",
+ "fancycaptcha-badlogin": "Come misura precauzionale contro i tentativi di forzatura automatica della password, ti chiediamo gentilmente di inserire nella casella sottostante le parole che compaiono di seguito ([[Special:Captcha/help|come funziona?]]):",
+ "fancycaptcha-captcha": "Controllo di sicurezza",
+ "fancycaptcha-accountcreate": "Come misura precauzionale contro i tentativi di registrazione automatica, ti chiediamo gentilmente di inserire nella casella sottostante le parole che compaiono di seguito ([[Special:Captcha/help|come funziona?]]):",
+ "fancycaptcha-create": "Per creare la pagina si prega di inserire nella casella sottostante le parole che compaiono nella casella di seguito ([[Special:Captcha/help|come funziona?]]):",
+ "fancycaptcha-edit": "Per modificare questa pagina si prega di inserire nella casella le parole che compaiono di seguito ([[Special:Captcha/help|informazioni]]):",
+ "fancycaptcha-imgcaptcha-ph": "Inserisci il testo che vedi sull'immagine",
+ "fancycaptcha-sendemail": "Come misura precauzionale nei confronti dei messaggi di spam automatici, ti chiediamo gentilmente di inserire nella casella sottostante le parole che compaiono di seguito ([[Special:Captcha/help|come funziona?]]):",
+ "fancycaptcha-reload-text": "Aggiorna",
+ "apihelp-fancycaptchareload-description": "Ottieni un nuovo FancyCaptcha.",
+ "apihelp-fancycaptchareload-example-1": "Ottieni un nuovo FancyCaptcha"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ja.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ja.json
new file mode 100644
index 00000000..3e7c0358
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ja.json
@@ -0,0 +1,25 @@
+{
+ "@metadata": {
+ "authors": [
+ "Aotake",
+ "Fryed-peach",
+ "Marine-Blue",
+ "Shirayuki",
+ "Takot",
+ "2nd-player",
+ "Whym"
+ ]
+ },
+ "fancycaptcha-desc": "Confirm Edit 用の装飾的な CAPTCHA ジェネレーター",
+ "fancycaptcha-addurl": "あなたは新しい外部リンクを追加しようとしています。\nウィキへの自動スパム攻撃を防ぐため、お手数をおかけしますが下記の確認用の文字列を欄に入力してください ([[Special:Captcha/help|詳細]]):",
+ "fancycaptcha-badlogin": "ウィキへの自動パスワードクラック攻撃を防ぐため、お手数をおかけしますが下記の確認用の文字列を欄に入力してください ([[Special:Captcha/help|詳細]]):",
+ "fancycaptcha-captcha": "自動作成防止チェック",
+ "fancycaptcha-accountcreate": "アカウント自動作成によるこのウィキへの被害を防ぐため、お手数をおかけしますが下記の枠内に表示された文字列の入力をお願いします ([[Special:Captcha/help|詳細]]):",
+ "fancycaptcha-create": "ページを新規作成するには、下記の確認用の文字列を欄に入力してください ([[Special:Captcha/help|詳細]]):",
+ "fancycaptcha-edit": "このページを編集するには、下記の確認用の文字列を欄に入力してください ([[Special:Captcha/help|詳細]]):",
+ "fancycaptcha-imgcaptcha-ph": "上の画像に表示されている文字列を入力",
+ "fancycaptcha-sendemail": "ウィキへの自動スパム攻撃を防ぐため、お手数をおかけしますが下記の確認用の文字列を欄に入力してください ([[Special:Captcha/help|詳細]]):",
+ "fancycaptcha-reload-text": "更新",
+ "apihelp-fancycaptchareload-description": "新しい FancyCaptcha を取得",
+ "apihelp-fancycaptchareload-example-1": "新しい FancyCaptcha を取得"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/jam.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/jam.json
new file mode 100644
index 00000000..f4ddbf15
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/jam.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "Katxis"
+ ]
+ },
+ "fancycaptcha-captcha": "Sikioriti chek",
+ "fancycaptcha-accountcreate": "Fi protek di wiki gens aatamietid akount krieshan, we kainli beg yu fi enta di woddem we apier biluo ina di bax ([[Special:Captcha/help|more info]]):‎",
+ "fancycaptcha-imgcaptcha-ph": "Enta di tex yu si op a tap",
+ "fancycaptcha-reload-text": "Rifresh"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/jut.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/jut.json
new file mode 100644
index 00000000..119de96e
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/jut.json
@@ -0,0 +1,17 @@
+{
+ "@metadata": {
+ "authors": [
+ "Christian List",
+ "Huslåke",
+ "Jyllanj"
+ ]
+ },
+ "fancycaptcha-addurl": "Din ændring tilføjer nye eksterne henvisninger. For at beskytte mod automatiseret spam, skal du indtaste ordet som vises nedenfor i feltet under det. ([[Special:Captcha/help|mere information]]):",
+ "fancycaptcha-badlogin": "For å beskøtt mod automatisk forsyeg på å djiet adgångskoden, skal du intast uerden som wises i feltje nierfor. ([[Special:Captcha/help|mier informasjon]]):",
+ "fancycaptcha-captcha": "Sikerhedskontroll",
+ "fancycaptcha-accountcreate": "For å beskøtt mod automatisk oprettels å brugenaun, som bruges te spam, skal du intast uerde som wises nierfor i feltje unje dä. ([[Special:Captcha/help|mier informasjon]]):",
+ "fancycaptcha-create": "For å oprett en ny siid, skal du intast uerde som wises nierfor i feltje unje dä. ([[Special:Captcha/help|mier informasjon]]):",
+ "fancycaptcha-edit": "For å redigiir siden, skal du intast uerden, som stor i feltje nierfor ([[Special:Captcha/help|mier informasjon]]):",
+ "fancycaptcha-imgcaptcha-ph": "Intast wenlist öwestoenje tekst",
+ "fancycaptcha-reload-text": "Opdatiir"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/jv.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/jv.json
new file mode 100644
index 00000000..37ff40d1
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/jv.json
@@ -0,0 +1,20 @@
+{
+ "@metadata": {
+ "authors": [
+ "Bennylin",
+ "Meursault2004",
+ "NoiX180"
+ ]
+ },
+ "fancycaptcha-addurl": "Besutané panjenengan kalebu pranala njaba anyar. \nSaperlu ngreksa wiki tumrap spam otomatis, kita aturi panjenengan ngisèkaké tembung sing katon ing ngisor nyang kothaké ([[Special:Captcha/help|katerangan liyané]]):",
+ "fancycaptcha-badlogin": "Kanggo ngreksa lawan parengkahan tembung sandhi otomatis, tulung lebokna ukara ing ngisor iki menyang sajroning kothak sing wis sumedya ([[Special:Captcha/help|info sabanjuré]]):",
+ "fancycaptcha-captcha": "Pamriksa kamanan",
+ "fancycaptcha-accountcreate": "Kanggo ngreksa wiki saka panggawé akun otomatis, tulung tembung sing katon ana ngisor iki panjenengan tulisaké ing kothak ngisor iki ([[Special:Captcha/help|katerangan candhaké]]):",
+ "fancycaptcha-create": "Suntingan panjenengan ngandhut pranala jaba anyar. Kanggo nggawé kaca iki, mangga isèkna tembung-tembung sing ana ing kothak iki ([[Special:Captcha/help|info jangkep]]):",
+ "fancycaptcha-edit": "Suntingan panjenengan ngandhut pranala jaba anyar. Kanggo nyunting kaca iki, mangga isèkna tembung-tembung sing ana ing kothak iki ([[Special:Captcha/help|info jangkep]]):",
+ "fancycaptcha-imgcaptcha-ph": "Isi tèks sing panjenengan deleng ing gambar",
+ "fancycaptcha-sendemail": "Kanggo ngreksa lawan spam otomatis, tulung lebokna ukara ing ngisor iki menyang sajroning kothak sing wis sumedya ([[Special:Captcha/help|info sabanjuré]]):",
+ "fancycaptcha-reload-text": "Anyarana",
+ "apihelp-fancycaptchareload-description": "Golèk FancyCaptcha anyar.",
+ "apihelp-fancycaptchareload-example-1": "Golèk FancyCaptcha anyar"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ka.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ka.json
new file mode 100644
index 00000000..cc3aae57
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ka.json
@@ -0,0 +1,22 @@
+{
+ "@metadata": {
+ "authors": [
+ "David1010",
+ "ITshnik",
+ "Tokoko",
+ "BRUTE",
+ "MIKHEIL"
+ ]
+ },
+ "fancycaptcha-addurl": "თქვენი ცვლილება შეიცავს ახალ გარე ბმულებს.\nვიკის ავტომატური სპამინგისგან თავდაცვის მიზნით, ჩვენ მოგიწოდებთ, შეიყვანოთ ქვემოთ მოცემული სიტყვები ყუთში ([[Special:Captcha/help|მეტი ინფორმაცია]]):",
+ "fancycaptcha-badlogin": "ვიკის პაროლების ავტომატური გატეხვისგან თავდაცვის მიზნით, ჩვენ მოგიწოდებთ, შეიყვანოთ ქვემოთ მოცემული სიტყვები ყუთში ([[Special:Captcha/help|მეტი ინფორმაცია]]):",
+ "fancycaptcha-captcha": "უსაფრთხოების შემოწმება",
+ "fancycaptcha-accountcreate": "ვიკის ანგარიშების ავტომატური რეგისტრაციისაგან თავდაცვის მიზნით, ჩვენ მოგიწოდებთ, შეიყვანოთ ნაჩვენები სიმბოლოები ტექსტურ ველში ([[Special:Captcha/help|დეტალურად]]):",
+ "fancycaptcha-create": "გვერდის შესაქმნელად, გთხოვთ, შეიყვანეთ ასოები, რომლებიც ნაჩვენებია ქვედა სურათზე ([[Special:Captcha/help|დეტალურად…]]):",
+ "fancycaptcha-edit": "გვერდის რედაქტირებისათვის, გთხოვთ, შეიყვანეთ ასოები, რომლებიც ნაჩვენებია ქვედა სურათზე ([[Special:Captcha/help|დეტალურად…]]):",
+ "fancycaptcha-imgcaptcha-ph": "შეიყვანეთ სურათზე მოცემული ტექსტი",
+ "fancycaptcha-sendemail": "ვიკის ავტომატური სპამისაგან თავდაცვის მიზნით, ჩვენ მოგიწოდებთ, შეიყვანოთ ქვევით ნაჩვენები სიტყვა ტექსტურ ველში ([[Special:Captcha/help|მეტი ინფორმაცია]]):",
+ "fancycaptcha-reload-text": "განახლება",
+ "apihelp-fancycaptchareload-description": "მიიღეთ ახალი FancyCaptcha.",
+ "apihelp-fancycaptchareload-example-1": "ახალი FancyCaptcha-ის მიღება"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/kaa.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/kaa.json
new file mode 100644
index 00000000..4d05e630
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/kaa.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Atabek"
+ ]
+ },
+ "fancycaptcha-accountcreate": "Jan'a akkauntlardın' avtomatik jaratılıwının' aldın alıw ushın, to'mendegi\nko'rsetilgen so'zlerdi kiritin'([[{{ns:special}}:Captcha/help|ko'birek mag'lıwmat]]):"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/kab.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/kab.json
new file mode 100644
index 00000000..e8a0c4f3
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/kab.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "Belkacem77"
+ ]
+ },
+ "fancycaptcha-captcha": "Asenqed n taɣellist",
+ "fancycaptcha-accountcreate": "Akken ad temmestneḍ awiki mgal timerna tawurmant n imiḍanen, ad d-nseter deg-k akken ad tmuddeḍ awalen id-yettbanen deg usfaylu ddaw-a ([[Special:Captcha/help|more info]]):",
+ "fancycaptcha-imgcaptcha-ph": "Sekcem aḍris i tettwaliḍ ɣef tugna",
+ "fancycaptcha-reload-text": "Smiren",
+ "apihelp-fancycaptchareload-description": "Awi FancyCaptcha amaynut",
+ "apihelp-fancycaptchareload-example-1": "Awi FancyCaptcha amaynut"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/kbp.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/kbp.json
new file mode 100644
index 00000000..ee4aca52
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/kbp.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "Gnangbade"
+ ]
+ },
+ "fancycaptcha-captcha": "Feŋuu",
+ "fancycaptcha-accountcreate": "Pɩsa nɛ pakandɩ Wiki yɔɔ nɛ koozasɩ nzɩ sɩtʋlʋʋ sɩ-tɩ yɔ yɔɔ sɩtaawɛ lɛ, ma tɔmbe wena alɩɩ kpata yɔɔ pɩ-tɛɛ yɔ. ([[Special:Captcha/help|kiheyitu taa tazʋʋ]]) :",
+ "fancycaptcha-imgcaptcha-ph": "Ma tɔm ndʋ ŋnaɣ ñʋʋ yɔɔ yɔ",
+ "fancycaptcha-reload-text": "Pɩsɩna sɔnɔ yɔɔ"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/kg.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/kg.json
new file mode 100644
index 00000000..911a44d8
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/kg.json
@@ -0,0 +1,4 @@
+{
+ "@metadata": [],
+ "fancycaptcha-imgcaptcha-ph": "Sonika bisono yina kele na zulu"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/khw.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/khw.json
new file mode 100644
index 00000000..136b0e83
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/khw.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "Rachitrali"
+ ]
+ },
+ "fancycaptcha-captcha": "حفاظتی تدبیر",
+ "fancycaptcha-accountcreate": "خودبخود غلط نوغ کھاتہ کھولاو کوریکو روک کوریکو بچے، مہربانی کوری ڈبا دیرو لوظان نیویشور ([[Special:Captcha/help|مزید معلومات]]):",
+ "fancycaptcha-imgcaptcha-ph": "تو توری لوڑی نیویشے",
+ "fancycaptcha-reload-text": "تازہ کورے"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/kk-arab.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/kk-arab.json
new file mode 100644
index 00000000..44a2c667
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/kk-arab.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": [],
+ "fancycaptcha-addurl": "تٷزەتۋٸڭٸزدە جاڭا سىرتقى سٸلتەمەلەر بار ەكەن. ٶزدٸك تٷردە «سپام» جاسالۋىنان قورعانۋ ٷشٸن,\nتٶمەندەگٸ كٶرسەتٸلگەن سٶزدەردٸ اۋماققا ەنگٸزٸڭٸز ([[{{ns:special}}:Captcha/help|كٶبٸرەك اقپارات]]):",
+ "fancycaptcha-badlogin": "قۇپييا سٶزدٸ ٶزدٸكتٸ بۇزدىرۋدان قورعانۋ ٷشٸن, تٶمەندەگٸ\nكٶرسەتٸلگەن سٶزدەردٸ اۋماققا ەنگٸزٸڭٸز ([[{{ns:special}}:Captcha/help|كٶبٸرەك اقپارات]]):",
+ "fancycaptcha-accountcreate": "جاڭا تٸركەلگٸ ٶزدٸكتٸ جاسالۋىنان قورعانۋ ٷشٸن, تٶمەندەگٸ\nكٶرسەتٸلگەن سٶزدەردٸ اۋماققا ەنگٸزٸڭٸز ([[{{ns:special}}:Captcha/help|كٶبٸرەك اقپارات]]):",
+ "fancycaptcha-create": "تٷزەتۋٸڭٸزدە جاڭا سىرتقى سٸلتەمەلەر بار ەكەن. ٶزدٸك تٷردە «سپام» جاسالۋىنان قورعانۋ ٷشٸن,\nتٶمەندەگٸ كٶرسەتٸلگەن سٶزدەردٸ اۋماققا ەنگٸزٸڭٸز ([[{{ns:special}}:Captcha/help|كٶبٸرەك اقپارات]]):",
+ "fancycaptcha-edit": "تٷزەتۋٸڭٸزدە جاڭا سىرتقى سٸلتەمەلەر بار ەكەن. ٶزدٸك تٷردە «سپام» جاسالۋىنان قورعانۋ ٷشٸن,\nتٶمەندەگٸ كٶرسەتٸلگەن سٶزدەردٸ اۋماققا ەنگٸزٸڭٸز ([[{{ns:special}}:Captcha/help|كٶبٸرەك اقپارات]]):"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/kk-cyrl.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/kk-cyrl.json
new file mode 100644
index 00000000..9c967229
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/kk-cyrl.json
@@ -0,0 +1,18 @@
+{
+ "@metadata": {
+ "authors": [
+ "Arystanbek"
+ ]
+ },
+ "fancycaptcha-addurl": "Түзетуіңізде жаңа сыртқы сілтемелер бар екен.\nАвтоматты спамға қарсы уикиді қорғау үшін,\nтөмендегі көрсетілген сөздерді енгізуіңізді сұраймыз ([[Special:Captcha/help|көбірек ақпарат]]):",
+ "fancycaptcha-badlogin": "Құпия сөзді өздікті бұздырудан қорғану үшін, төмендегі\nкөрсетілген сөздерді енгізуіңізді сұраймыз ([[Special:Captcha/help|көбірек ақпарат]]):",
+ "fancycaptcha-captcha": "Құпиялық тексеруі",
+ "fancycaptcha-accountcreate": "Жаңа тіркелгі өздікті жасалуынан қорғану үшін, төмендегі\nкөрсетілген сөздерді аумаққа енгізіңіз ([[Special:Captcha/help|көбірек ақпарат]]):",
+ "fancycaptcha-create": "Беті бастау үшін төмендегі көрсетілген сөздерді енгізіңіз ([[Special:Captcha/help|көбірек ақпарат]]):",
+ "fancycaptcha-edit": "Бұл бетті өңдеу үшін төмендегі көрсетілген сөздерді енгізіңіз ([[Special:Captcha/help|көбірек ақпарат]]):",
+ "fancycaptcha-imgcaptcha-ph": "Суреттегі мәтінді енгізіңіз",
+ "fancycaptcha-sendemail": "Уикиді автоматты спамдаудан қорғау үшін, төмендегі\nкөрсетілген сөздерді енгізуіңізді сұраймыз ([[Special:Captcha/help|көбірек ақпарат]]):",
+ "fancycaptcha-reload-text": "Жаңарту",
+ "apihelp-fancycaptchareload-description": "Жаңа FancyCaptcha алу.",
+ "apihelp-fancycaptchareload-example-1": "Жаңа FancyCaptcha алу"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/kk-latn.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/kk-latn.json
new file mode 100644
index 00000000..27dbb9ed
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/kk-latn.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": [],
+ "fancycaptcha-addurl": "Tüzetwiñizde jaña sırtqı siltemeler bar eken. Özdik türde «spam» jasalwınan qorğanw üşin,\ntömendegi körsetilgen sözderdi awmaqqa engiziñiz ([[{{ns:special}}:Captcha/help|köbirek aqparat]]):",
+ "fancycaptcha-badlogin": "Qupïya sözdi özdikti buzdırwdan qorğanw üşin, tömendegi\nkörsetilgen sözderdi awmaqqa engiziñiz ([[{{ns:special}}:Captcha/help|köbirek aqparat]]):",
+ "fancycaptcha-accountcreate": "Jaña tirkelgi özdikti jasalwınan qorğanw üşin, tömendegi\nkörsetilgen sözderdi awmaqqa engiziñiz ([[{{ns:special}}:Captcha/help|köbirek aqparat]]):",
+ "fancycaptcha-create": "Tüzetwiñizde jaña sırtqı siltemeler bar eken. Özdik türde «spam» jasalwınan qorğanw üşin,\ntömendegi körsetilgen sözderdi awmaqqa engiziñiz ([[{{ns:special}}:Captcha/help|köbirek aqparat]]):",
+ "fancycaptcha-edit": "Tüzetwiñizde jaña sırtqı siltemeler bar eken. Özdik türde «spam» jasalwınan qorğanw üşin,\ntömendegi körsetilgen sözderdi awmaqqa engiziñiz ([[{{ns:special}}:Captcha/help|köbirek aqparat]]):"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/km.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/km.json
new file mode 100644
index 00000000..dd3f38bb
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/km.json
@@ -0,0 +1,17 @@
+{
+ "@metadata": {
+ "authors": [
+ "Thearith",
+ "គីមស៊្រុន"
+ ]
+ },
+ "fancycaptcha-addurl": "កំណែប្រែរបស់អ្នកមានតំណភ្ជាប់ខាងក្រៅ។\n\nដើម្បីការពារវិគីពីស្ប៉ាមស្វ័យប្រវត្តិ សូមវាយបញ្ចូលពាក្យខាងក្រោមទៅក្នុងប្រអប់ ([[Special:Captcha/help|ព័ត៌មានបន្ថែម]])៖",
+ "fancycaptcha-badlogin": "ដើម្បីការពារការបំបែកពាក្យសម្ងាត់ដោយស្វ័យប្រវត្តិ សូមបញ្ជូលពាក្យខាងក្រោមទៅក្នុងប្រអប់ ([[Special:Captcha/help|ព័ត៌មានបន្ថែម]])៖",
+ "fancycaptcha-captcha": "ត្រួតពិនិត្យសុវត្ថិភាព",
+ "fancycaptcha-accountcreate": "ដើម្បីការពារការបង្កើតគណនីដោយស្វ័យប្រវត្តិ សូមវាយបញ្ចូលពាក្យខាងក្រោមទៅក្នុងប្រអប់ ([[Special:Captcha/help|ព័ត៌មានបន្ថែម]])៖",
+ "fancycaptcha-create": "ដើម្បីបង្កើតទំព័រនេះ សូមបញ្ជូលពាក្យខាងក្រោមទៅក្នុងប្រអប់ ([[Special:Captcha/help|ព័ត៌មានបន្ថែម]])៖",
+ "fancycaptcha-edit": "ដើម្បីកែប្រែទំព័រនេះ សូមវាយបញ្ចូលពាក្យខាងក្រោមទៅក្នុងប្រអប់ ([[Special:Captcha/help|ព័ត៌មានបន្ថែម]])៖",
+ "fancycaptcha-imgcaptcha-ph": "បញ្ចូលឃ្លាដែលអ្នកឃើញនៅលើរូប",
+ "fancycaptcha-sendemail": "ដើម្បីការពារវិគីពីស្ប៉ាមស្វ័យប្រវត្តិ សូមវាយបញ្ចូលពាក្យខាងក្រោមទៅក្នុងប្រអប់ ([[Special:Captcha/help|ព័ត៌មានបន្ថែម]])៖",
+ "fancycaptcha-reload-text": "ផ្ទុកឡើងវិញ"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/kn.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/kn.json
new file mode 100644
index 00000000..5a89cceb
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/kn.json
@@ -0,0 +1,12 @@
+{
+ "@metadata": {
+ "authors": [
+ "Omshivaprakash",
+ "Shushruth"
+ ]
+ },
+ "fancycaptcha-captcha": "ಸುರಕ್ಷಣಾ ಪರಿಶೀಲನೆ",
+ "fancycaptcha-accountcreate": "ಈ ವಿಕಿಯನ್ನು ಯಾಂತ್ರೀಕೃತ ಖಾತಾ ಸೃಷ್ಟಿಯಿಂದ ಸಂರಕ್ಷಿಸಲು, ದಯವಿಟ್ಟು ಕೆಳಗೆ ಕಾಣುವ ಪಠ್ಯವನ್ನು ಚೌಕದಲ್ಲಿ ನಮೂದಿಸಿ ([[Special:Captcha/help|ಹೆಚ್ಚಿನ ಮಾಹಿತಿ]]):",
+ "fancycaptcha-imgcaptcha-ph": "ಚಿತ್ರದಲ್ಲಿ ನಿಮಗೆ ಕಾಣುವ ಪಠ್ಯವನ್ನು ನಮೂದಿಸಿ",
+ "fancycaptcha-reload-text": "ಪುನಶ್ಚೇತನಗೊಳಿಸು"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ko.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ko.json
new file mode 100644
index 00000000..1c7156d5
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ko.json
@@ -0,0 +1,25 @@
+{
+ "@metadata": {
+ "authors": [
+ "Kwj2772",
+ "ToePeu",
+ "아라",
+ "Revi",
+ "Ykhwong",
+ "IRTC1015"
+ ]
+ },
+ "fancycaptcha-desc": "편집 확인에 대한 공상 CAPTCHA(캡차) 생성기",
+ "fancycaptcha-addurl": "편집에 새로운 바깥 링크가 포함되어 있습니다.\n자동화된 스팸으로부터 위키를 보호하기 위해, 아래 상자에 나타나는 낱말을 입력해주세요 ([[Special:Captcha/help|자세한 정보]]):",
+ "fancycaptcha-badlogin": "자동화된 비밀번호 깨기로부터 위키를 보호하기 위해, 아래 상자에 나타나는 낱말을 입력해주세요 ([[Special:Captcha/help|자세한 정보]]):",
+ "fancycaptcha-captcha": "보안 검사",
+ "fancycaptcha-accountcreate": "자동 계정 만들기로부터 위키를 보호하기 위해, 아래 상자에 보이는 낱말을 입력해 주시기 바랍니다 ([[Special:Captcha/help|자세한 정보]]):",
+ "fancycaptcha-create": "문서를 만드려면 아래의 상자 안에 있는 낱말을 입력해주세요 ([[Special:Captcha/help|자세한 정보]]):",
+ "fancycaptcha-edit": "이 문서를 편집하려면 아래의 상자 안에 있는 낱말을 입력해주세요 ([[Special:Captcha/help|자세한 정보]]):",
+ "fancycaptcha-imgcaptcha-ph": "그림에 보이는 글을 입력하세요",
+ "fancycaptcha-sendemail": "자동화된 스팸으로부터 위키를 보호하기 위해, 아래 상자에 나타나는 낱말을 입력해주세요 ([[Special:Captcha/help|자세한 정보]]):",
+ "fancycaptcha-reload-text": "새로 고침",
+ "apihelp-fancycaptchareload-description": "새 FancyCaptcha를 얻습니다.",
+ "apihelp-fancycaptchareload-summary": "새 FancyCaptcha를 가져옵니다.",
+ "apihelp-fancycaptchareload-example-1": "새 FancyCaptcha 얻기"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/krc.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/krc.json
new file mode 100644
index 00000000..7346ed36
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/krc.json
@@ -0,0 +1,12 @@
+{
+ "@metadata": {
+ "authors": [
+ "Iltever",
+ "Ernác"
+ ]
+ },
+ "fancycaptcha-captcha": "Къоркъуусузлукъну тинтиу",
+ "fancycaptcha-accountcreate": "Тергеу джазыуланы (аккаунтланы) автомат халда регистрация этиуню къоймаз ючюн, текстлик терезеде суратланнган символланы джазыгъыз ([[Special:Captcha/help|толуракъ]]):",
+ "fancycaptcha-imgcaptcha-ph": "Башыракъдагъы текстни джаз",
+ "fancycaptcha-reload-text": "Джангырт"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/kri.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/kri.json
new file mode 100644
index 00000000..70883e32
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/kri.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Protostar"
+ ]
+ },
+ "fancycaptcha-imgcaptcha-ph": "Rait whethin de abòv"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/krl.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/krl.json
new file mode 100644
index 00000000..0dee6190
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/krl.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "Likopiän tyttö",
+ "Varvana",
+ "Mashoi7"
+ ]
+ },
+ "fancycaptcha-captcha": "Turvatarkissuš",
+ "fancycaptcha-accountcreate": "Jotta šuojata wikie automattisešti luajittuloista tililöistä, kyšymmä šilma kirjuttamah alla olijat šanat luatikkoh ([[Special:Captcha/help|lisätietuo]]):",
+ "fancycaptcha-imgcaptcha-ph": "Kirjuta kuvašša olija teksti",
+ "fancycaptcha-reload-text": "Vaiha"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ksh.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ksh.json
new file mode 100644
index 00000000..256a795c
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ksh.json
@@ -0,0 +1,19 @@
+{
+ "@metadata": {
+ "authors": [
+ "Purodha"
+ ]
+ },
+ "fancycaptcha-desc": "Määt e nett <span style=\"text-transform:uppercase\" title=\"Jät zom Ennjävve, öm ze zeije, dadd ene Minsch vör em Kompjuhter sez\">Kaptscha</span> för dä <code lang=\"en\">Confirm Edit</code> Projramm-Zohsatz\n",
+ "fancycaptcha-addurl": "Do häß neuje Lengks op frembde Websigge dobei jedonn.\nMer schöze ons Wiki jäje automattesche <code lang=\"en\" xml:lang=\"en\">SPAM</code>, dröm\ndon di Wööter en dat Käßje endraare. ([[Special:Captcha/help|Verklierung]])",
+ "fancycaptcha-badlogin": "Mer schöze Metmaacher en unsem Wiki jäje automatesche\nPaßwoot-Knackerei, dröm don di Wööt onge en dat Käßje\nendraare. ([[Special:Captcha/help|Verklierung]])",
+ "fancycaptcha-captcha": "Zor Sescherheit",
+ "fancycaptcha-accountcreate": "Mer schöze uns Wiki dojäje, dat mer en Masse automatesch\nMetmaacher aanmeldt.\nDröm beß esu joot un\ndon di Wööt onge en dat Käßje endraare. ([[Special:Captcha/help|Verklierung]])",
+ "fancycaptcha-create": "Öm di Sigg neu aanzelääje, don di Wööt onge en dat Käßje endraare. (Verklierung)",
+ "fancycaptcha-edit": "Öm de Sigg ze ändere, don di Wööt onge en dat Käßje endraare. ([[Special:Captcha/help|Verklierung]])",
+ "fancycaptcha-imgcaptcha-ph": "Jiv dä Täx en, dä De op däm Beld heh sühs!",
+ "fancycaptcha-sendemail": "Öm et Wiki jääje automattesch enjedraare <code lang=\"en\" xml:lang=\"en\">SPAM</code> ze schötze,\nbes esu joot, donn di Wööter enjävve, di en däm Käßje heh dronger shtonn.\n([[Special:Captcha/help|Mieh Enfommazjuhne]])",
+ "fancycaptcha-reload-text": "Nöü Aanzeije!",
+ "apihelp-fancycaptchareload-description": "Maach en neu <i lang=\"en\" xml:lang=\"en\">FancyCaptcha</i>.",
+ "apihelp-fancycaptchareload-example-1": "Holl e neu <i lang=\"en\" xml:lang=\"en\">FancyCaptcha</i>"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ku-latn.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ku-latn.json
new file mode 100644
index 00000000..51a16fbf
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ku-latn.json
@@ -0,0 +1,10 @@
+{
+ "@metadata": {
+ "authors": [
+ "Bikarhêner"
+ ]
+ },
+ "fancycaptcha-captcha": "Kontrola asayîşê",
+ "fancycaptcha-imgcaptcha-ph": "Nivîsa ku tu li ser wêneyê dibînî binivîse",
+ "fancycaptcha-reload-text": "Nûkirin"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/kum.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/kum.json
new file mode 100644
index 00000000..4360472c
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/kum.json
@@ -0,0 +1,12 @@
+{
+ "@metadata": {
+ "authors": [
+ "Arsenekoumyk",
+ "ArslanX"
+ ]
+ },
+ "fancycaptcha-captcha": "Къавупсузлукъ тергевю",
+ "fancycaptcha-accountcreate": "Викини автоматик бет яратывдан къорумакъ учун тюпдеги къутукъдан сёзлени язмагъа тилейбиз ([[Special:Captcha/help|артыкъ инфо]]):",
+ "fancycaptcha-imgcaptcha-ph": "Суратда гёреген текстни бер",
+ "fancycaptcha-reload-text": "Янгыртмакъ"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/kw.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/kw.json
new file mode 100644
index 00000000..5bcf2f1f
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/kw.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "Kernoweger",
+ "Nrowe"
+ ]
+ },
+ "fancycaptcha-captcha": "Gwiryans sekerder",
+ "fancycaptcha-accountcreate": "Rag gwitha rag gwruthyl akontow yawtomategys, entrewgh an geryow a omdhiskwa a-woles y'n gist ([[Special:Captcha/help|moy kedhlow]]):",
+ "fancycaptcha-imgcaptcha-ph": "Entrewgh an tekst a welowgh a-ugh"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ky.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ky.json
new file mode 100644
index 00000000..082b1227
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ky.json
@@ -0,0 +1,12 @@
+{
+ "@metadata": {
+ "authors": [
+ "Chorobek",
+ "Janatkg"
+ ]
+ },
+ "fancycaptcha-captcha": "Коопсуздук текшерүүсү",
+ "fancycaptcha-imgcaptcha-ph": "Жогорудагы текстти териңиз",
+ "fancycaptcha-sendemail": "Автоматташтырылган спамдан коргонууга жардам катары бул сөздөрдү төмөндөгү көзөнөккө киргизиңиз ([[Special:Captcha/help|more info]]):",
+ "fancycaptcha-reload-text": "Жаңылоо"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/la.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/la.json
new file mode 100644
index 00000000..8373d2c8
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/la.json
@@ -0,0 +1,16 @@
+{
+ "@metadata": {
+ "authors": [
+ "SPQRobin",
+ "Laurentianus",
+ "UV"
+ ]
+ },
+ "fancycaptcha-addurl": "Recensio tua novos nexus externos induxit.\nUt automata arceantur a mercibus clamandis, quaesumus, verba infra posita in capsam inscribere velis ([[Special:Captcha/help|ad explanationem]]):",
+ "fancycaptcha-badlogin": "Ut vitemus ne tesserae frangantur, necesse est tibi in capsam inscribere verba quae sub capsa monstrantur ([[Special:Captcha/help|ad explanationem]]):",
+ "fancycaptcha-captcha": "Cautela",
+ "fancycaptcha-accountcreate": "Ut automata arceantur a nominibus sibi imponendis, verba infra visa inserere velis ([[Special:Captcha/help|ad explanationem]]):",
+ "fancycaptcha-create": "Ad paginam creandum, necesse est tibi in capsam inscribere verba quae sub capsa monstrantur ([[Special:Captcha/help|ad explanationem]]):",
+ "fancycaptcha-edit": "Ad hanc paginam recensendum, necesse est tibi in capsam inscribere verba quae sub capsa monstrantur ([[Special:Captcha/help|ad explanationem]]):",
+ "fancycaptcha-imgcaptcha-ph": "Inscribas textum, quem supra vides"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/lb.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/lb.json
new file mode 100644
index 00000000..bdd2a831
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/lb.json
@@ -0,0 +1,19 @@
+{
+ "@metadata": {
+ "authors": [
+ "Les Meloures",
+ "Robby"
+ ]
+ },
+ "fancycaptcha-addurl": "An Ärer Ännerung sinn nei extern Linken.\n\nFir dës Wiki géint automatiséierte Spam ze schütze froe mir Iech d'Wierder anzeginn, déi an der Këscht ënnendrënner stinn ([[Special:Captcha/help|méi Informatiounen]]):",
+ "fancycaptcha-badlogin": "Fir ze hëllefe fir d'automatiséiert Hacke vu Passwierder méi schwéier ze maachen, froe mir Iech fir d'Wierder anzeginn, déi an der Këscht ënnendrënner stinn ([[Special:Captcha/help|méi Informatiounen]]):",
+ "fancycaptcha-captcha": "Sécherheets-Check",
+ "fancycaptcha-accountcreate": "Fir d'Wiki géint automatiséiert Opmaache vu Benotzerkonte ze schützen, froe mir Iech d'Wierder déi an der Këscht ënnendrënner stinn anzeginn ([[Special:Captcha/help|méi Informatiounen]]):",
+ "fancycaptcha-create": "Fir dës Säit unzeleeën, gitt w.e.g. déi Wierder an, déi an der Këscht ënnendrënner stinn ([[Special:Captcha/help|méi Informatiounen]]):",
+ "fancycaptcha-edit": "Fir dës Säit z'änneren, gitt w.e.g. déi Wierder an, déi an der Këscht ënnendrënner stinn ([[Special:Captcha/help|méi Informatiounen]]):",
+ "fancycaptcha-imgcaptcha-ph": "Gitt den Text an deen Dir um Bild gesitt",
+ "fancycaptcha-sendemail": "Fir eis géint automatescht Spammen ze schützen, froe mir Iech fir d'Wierder déi an der Këscht ënnendrënner stinn anzeginn ([[Special:Captcha/help|méi Informatiounen]]):",
+ "fancycaptcha-reload-text": "Aktualiséieren",
+ "apihelp-fancycaptchareload-description": "En neie FancyCaptcha kréien,",
+ "apihelp-fancycaptchareload-example-1": "En neie FancyCaptcha kréien"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/lfn.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/lfn.json
new file mode 100644
index 00000000..05d20fcb
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/lfn.json
@@ -0,0 +1,12 @@
+{
+ "@metadata": {
+ "authors": [
+ "Cgboeree",
+ "Katxis"
+ ]
+ },
+ "fancycaptcha-captcha": "Proba de securia",
+ "fancycaptcha-accountcreate": "Per proteje la vici contra la crea automata de contas, nos solisita ce tu tape la parolas mostrada a su en la caxa ([[Special:Captcha/help|plu informa]]):",
+ "fancycaptcha-imgcaptcha-ph": "Tape la testo cual tu vide en la imaje",
+ "fancycaptcha-reload-text": "Refresci"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/li.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/li.json
new file mode 100644
index 00000000..d4f7dba9
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/li.json
@@ -0,0 +1,17 @@
+{
+ "@metadata": {
+ "authors": [
+ "Matthias",
+ "Ooswesthoesbes"
+ ]
+ },
+ "fancycaptcha-addurl": "Uw bewerking bevat nieuwe externe links. Voer de woorden die\nhieronder verschijnen in het invoerveld in als bescherming tegen automatische spam ([[Special:Captcha/help|meer informatie]]):",
+ "fancycaptcha-badlogin": "Voer de woorden die hieronder verschijnen in het invoerveld in als bescherming tegen het automatisch kraken van wachtwoorden ([[Special:Captcha/help|meer informatie]]):",
+ "fancycaptcha-captcha": "Veiligheidscontrole",
+ "fancycaptcha-accountcreate": "Voer de woorden die hieronder verschijnen in het invoerveld in\nter bescherming tegen het automatisch aanmaken van gebruikers ([[Special:Captcha/help|meer informatie]]):",
+ "fancycaptcha-create": "Uw bewerking bevat nieuwe externe links. Voer de woorden die\nhieronder verschijnen in het invoerveld in als bescherming tegen automatische spam ([[Special:Captcha/help|meer informatie]]):",
+ "fancycaptcha-edit": "Uw bewerking bevat nieuwe externe links. Voer de woorden die\nhieronder verschijnen in het invoerveld in als bescherming tegen automatische spam ([[Special:Captcha/help|mie informatie]]):",
+ "fancycaptcha-imgcaptcha-ph": "Veur de teks in die se op 't plaetje zuus",
+ "fancycaptcha-sendemail": "Veur de weurd die hie onger versjienen in 't inveurvèldj in es besjerming taege geautometiseerde spam ([[Special:Captcha/help|mier info]]):",
+ "fancycaptcha-reload-text": "Vernuuj"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/lij.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/lij.json
new file mode 100644
index 00000000..6a90f455
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/lij.json
@@ -0,0 +1,19 @@
+{
+ "@metadata": {
+ "authors": [
+ "Giromin Cangiaxo",
+ "S4b1nuz E.656"
+ ]
+ },
+ "fancycaptcha-addurl": "A to modiffica a l'includde di nœuvi inganci esterni; comme mezua precaoçionâ contra o spam aotomatico, te domandemmo gentilmente d'insei inta casella sottostante e paole che compàn chì de sotta ([[Special:Captcha/help|comm'o funçion-a?]]):",
+ "fancycaptcha-badlogin": "Pe proteze a wiki contra i tentativi de registraçion aotomattica, te domandemmo pe piaxei de insei inta casella sottostante e parolle che appan chì de sotta ([[Special:Captcha/help|comme l'è ch'o fonçion-a?]]):",
+ "fancycaptcha-captcha": "Controllo de segurtæ",
+ "fancycaptcha-accountcreate": "Pe proteze a wiki contra i tentativi de registrassion automattica, te domandemmo pe piaxei de insei inta casella sottostante e parolle che appan chì de sotta ([[Special:Captcha/help|comme l'è ch'o funçion-a?]]):",
+ "fancycaptcha-create": "Pe creâ a paggina se prega de scrive e parolle che compàn inta casella chì de sotta ([[Special:Captcha/help|comme l'è ch'o fonçion-a?]]):",
+ "fancycaptcha-edit": "Pe modificâ sta paggina se prega de scrive inta casella e paole che compàn chì aproeuvo ([[Special:Captcha/help|comme l'è ch'o fonçion-a?]]):",
+ "fancycaptcha-imgcaptcha-ph": "Scrivi quello che ti veddi chì de d'ato",
+ "fancycaptcha-sendemail": "Pe proteze o wiki da-a spam aotomatizâ, te preghemmo d'insei inta casella sottostante e paole che compàn chì aproeuvo ([[Special:Captcha/help|comme l'è ch'o fonçion-a?]]):",
+ "fancycaptcha-reload-text": "Agiorna",
+ "apihelp-fancycaptchareload-description": "Otegni un noeuvo FancyCaptcha.",
+ "apihelp-fancycaptchareload-example-1": "Otegni un noeuvo FancyCaptcha."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/lki.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/lki.json
new file mode 100644
index 00000000..01e28603
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/lki.json
@@ -0,0 +1,19 @@
+{
+ "@metadata": {
+ "authors": [
+ "Hosseinblue",
+ "Lakzon"
+ ]
+ },
+ "fancycaptcha-addurl": "ویرایش شما حاوی پیوند به بیرون جدیدی است.\nبرای جلوگیری از هرزنگاری خودکار ویکی، ما با احترام از شما می‌خواهیم واژه‌ای را که در تصویر می‌بینید در جعبهٔ زیر وارد کنید ([[Special:Captcha/help|اطلاعات بیشتر]]):",
+ "fancycaptcha-badlogin": "برای کمک به جلوگیری از شکستن خودکار گذرواژه، لطفاً واژه‌ای را که در تصویر می‌بینید را وارد کنید ([[Special:Captcha/help|اطلاعات بیشتر]]):",
+ "fancycaptcha-captcha": "بررسی امنیتی",
+ "fancycaptcha-accountcreate": "أڕانووآگرتن(جلوگیری) إژ ایجاد خودکار حساوو کاربەری، وە احترامآ إژ هۆمەمۆنە مإ واژه‌ای گإ وە عەسگە مۆینی بنۆیس جعبە ژێرێنە ([[Special:Captcha/help|زانستەنیەل فرەتر]]):",
+ "fancycaptcha-create": "برای ایجاد این صفحه، لطفاً واژه‌ای را که در تصویر می‌بینید وارد کنید ([[Special:Captcha/help|اطلاعات بیشتر]]):",
+ "fancycaptcha-edit": "برای ویرایش این صفحه، لطفاً واژه‌ای را که در تصویر می‌بینید وارد کنید ([[Special:Captcha/help|اطلاعات بیشتر]]):",
+ "fancycaptcha-imgcaptcha-ph": "متنی را که در بالا می‌بینید، وارد کنید",
+ "fancycaptcha-sendemail": "برای کمک به محافظت در برابر هرزه‌نگاری خودکار، ما با احترام از شما می‌خواهیم واژه‌هایی را که در جعبهٔ زیر نمایش داده می‌شوند وارد کنید ([[Special:Captcha/help|اطلاعات بیشتر]]):",
+ "fancycaptcha-reload-text": "تازۀآ کِردِن",
+ "apihelp-fancycaptchareload-description": "یک FancyCaptcha جدید بیاور.",
+ "apihelp-fancycaptchareload-example-1": "یک FancyCaptcha جدید بیاور."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/lmo.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/lmo.json
new file mode 100644
index 00000000..03eb825f
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/lmo.json
@@ -0,0 +1,5 @@
+{
+ "@metadata": [],
+ "fancycaptcha-captcha": "Contròl de sigürèsa",
+ "fancycaptcha-imgcaptcha-ph": "Mèt dét el tèst che te èdet ché sura"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/lo.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/lo.json
new file mode 100644
index 00000000..82ca2179
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/lo.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": [],
+ "fancycaptcha-addurl": "ການດັດແກ້ຂອງທ່ານ ມີລິ້ງຄ໌ພາຍນອກ. ເພື່ອປ້ອງກັນ ສະແປມອັດຕະໂນມັດ, ກະລຸນາ ພິມຄຳສັບຂ້າງລຸ່ມນີ້ ໃສ່ໃນກັບ ([[Special:Captcha/help|ຂໍ້ມູນເພີ່ມຕື່ມ]]):",
+ "fancycaptcha-badlogin": "ເພື່ອຊ່ອຍປ້ອງກັນ ການສືບຄົ້ນຫາລະຫັດຜ່ານແບບອັດຕະໂນມັດ, ກະລຸນາ ພິມຄຳສັບ ຂ້າງລຸ່ມນີ້ ໃສ່ໃນກັບ ([[Special:Captcha/help|ຂໍ້ມູນເພີ່ມຕື່ມ]]):",
+ "fancycaptcha-accountcreate": "ເພື່ອປ້ອງກັນ ການສ້າງບັນຊີແບບອັດຕະໂນມດ, ກະລຸນາພິມ ຄຳສັບຂ້າງລຸ່ມນີ້​ ໃສ່ໃນກັບ ([[Special:Captcha/help|ຂໍ້ມູນເພິ່ມຕືມ]]):",
+ "fancycaptcha-create": "ກະລຸນາ ພິມຄຳສັບຂ້າງລຸ່ມນີ້​ ໃສ່ໃນກັບ ເພື່ອສ້າງໜ້ານີ້ ([[Special:Captcha/help|more info]]):",
+ "fancycaptcha-edit": "ກະລຸນາ ພິມຄຳສັບຂ້າງລຸ່ມນີ້ ໃສ່ໃນກັບ ເພື່ອ ດັດແກ້ໜ້ານີ້ ([[Special:Captcha/help|ຂໍ້ມູນເພີ່ມຕື່ມ]]):"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/lrc.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/lrc.json
new file mode 100644
index 00000000..b65a4495
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/lrc.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "Mogoeilor"
+ ]
+ },
+ "fancycaptcha-captcha": "ۋارسی ٱمنیتی",
+ "fancycaptcha-accountcreate": "سی پر و پیم کاری ویکی د ری وه ری حساو راس کنی خود انجوم، ایما وا نازاری دتو میهایم که کلیمه یایی که هان د جعوه ([[Special:رازینه کپچا/هومیاری|دونسمنیا هنی]]):ایچه بنیسیت",
+ "fancycaptcha-imgcaptcha-ph": "نیسسٱیی ناٛ کاٛ د ٱسگ مینیت ۋارد بٱکیت",
+ "fancycaptcha-reload-text": "د نؤ كردن",
+ "apihelp-fancycaptchareload-description": "یه گل FancyCaptcha نه بیئریت.",
+ "apihelp-fancycaptchareload-example-1": "یه گل رازینه کپچا نازار تازه بئیرت."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/lt.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/lt.json
new file mode 100644
index 00000000..f5e6e714
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/lt.json
@@ -0,0 +1,21 @@
+{
+ "@metadata": {
+ "authors": [
+ "Eitvys200",
+ "Hugo.arg",
+ "Albertas",
+ "Tomasdd"
+ ]
+ },
+ "fancycaptcha-addurl": "Jūsų pakeitimuose yra nauja išorinė nuoroda.\nKad apsaugotume šį viki nuo automatizuoto brukalo, maloniai prašome jūsų įvesti žemiau nurodytus žodžius į langelį ([[Special:Captcha/help|daugiau informacijos]]):",
+ "fancycaptcha-badlogin": "Kad apsaugotume viki nuo automatizuoto slaptažodžių nulaužinėjimo, maloniai prašome įvesti žemiau nurodytus žodžius į langelį ([[Special:Captcha/help|daugiau informacijos]]):",
+ "fancycaptcha-captcha": "Saugumo patikrinimas",
+ "fancycaptcha-accountcreate": "Siekiant apsaugoti viki nuo automatinių paskyrų kūrimo, prašome jus įvesti žodžius, matomus rėmelyje apačioje ([[Special:Captcha/help|plačiau...]]):",
+ "fancycaptcha-create": "Kad sukurtumėte puslapį, prašome įvesti žemiau nurodytus žodžius į langelį ([[Special:Captcha/help|daugiau informacijos]]):",
+ "fancycaptcha-edit": "Kad atliktumėte šio puslapio pakeitimą, prašome įvesti žemiau nurodytus žodžius į langelį ([[Special:Captcha/help|daugiau informacijos]]):",
+ "fancycaptcha-imgcaptcha-ph": "Įveskite tekstą, kurį matote paveikslėlyje",
+ "fancycaptcha-sendemail": "Kad apsaugotumėme viki nuo automatizuoto brukalo, maloniai prašome jūsų įvesti žemiau nurodytus žodžius į langelį ([[Special:Captcha/help|daugiau informacijos]]):",
+ "fancycaptcha-reload-text": "Atnaujinti",
+ "apihelp-fancycaptchareload-description": "Gauti naują FancyCaptcha.",
+ "apihelp-fancycaptchareload-example-1": "Gauti naują FancyCaptcha"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/luz.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/luz.json
new file mode 100644
index 00000000..f261957d
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/luz.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "علی ساکی لرستانی"
+ ]
+ },
+ "fancycaptcha-captcha": "چیک کیردأن أمنیأتی",
+ "fancycaptcha-accountcreate": "سیکە ڤیکینە د بأرابأر ئیجاد حیسآۉ خۉدکار مۉحافیظأت بۉکۉنیم،ئیما مەربانوٙنە د ئیشا ئیخیم کە کلمە یلی کە دوٙمین ظاهیر ئیڤانە ڤارید بۉکۉنیت ([[Special:Captcha/help|more info]]):",
+ "fancycaptcha-imgcaptcha-ph": "ئی نشتنە کە دوٙمین سیل کی ڤارید کۉ",
+ "fancycaptcha-reload-text": "نۉ کیردأن"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/lv.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/lv.json
new file mode 100644
index 00000000..c67eec41
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/lv.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "Papuass"
+ ]
+ },
+ "fancycaptcha-captcha": "Drošības pārbaude",
+ "fancycaptcha-accountcreate": "Lai aizsargātu vikivietni pret automatizētu kontu veidošanu, mēs lūdzam ievadīt vārdus, kas parādās zem ievades lauka ([[Special:Captcha/help|vairāk informācijas]]):",
+ "fancycaptcha-imgcaptcha-ph": "Ievadi tekstu, kuru redzi attēlā",
+ "fancycaptcha-reload-text": "Atjaunināt"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/lzh.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/lzh.json
new file mode 100644
index 00000000..1ddcdcc1
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/lzh.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "Suchichi02"
+ ]
+ },
+ "fancycaptcha-captcha": "安檢",
+ "fancycaptcha-imgcaptcha-ph": "輸圖中文字"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/mai.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/mai.json
new file mode 100644
index 00000000..03c8d2b8
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/mai.json
@@ -0,0 +1,12 @@
+{
+ "@metadata": {
+ "authors": [
+ "Tulsi Bhagat",
+ "बिप्लब आनन्द"
+ ]
+ },
+ "fancycaptcha-captcha": "सुरक्षा जाँच",
+ "fancycaptcha-accountcreate": "स्वचालित प्रयोक्ता पञ्जजीकरणसँ बचावक लेल हम अहाँसँ निवेदन करैत छी की नीचा देल गेल शब्द बक्सामे लिखी ([[Special:Captcha/help|अधिक जानकारी]]):",
+ "fancycaptcha-imgcaptcha-ph": "चित्रमे देखाएल पाठ एतय लिखी",
+ "fancycaptcha-reload-text": "रिफ्रेश करी"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/map-bms.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/map-bms.json
new file mode 100644
index 00000000..bdef2cf4
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/map-bms.json
@@ -0,0 +1,5 @@
+{
+ "@metadata": [],
+ "fancycaptcha-captcha": "Priksa keamanan",
+ "fancycaptcha-imgcaptcha-ph": "Lebokna teks sing keton nang dhuwur"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/mfe.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/mfe.json
new file mode 100644
index 00000000..989a67af
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/mfe.json
@@ -0,0 +1,5 @@
+{
+ "@metadata": [],
+ "fancycaptcha-captcha": "Security check",
+ "fancycaptcha-imgcaptcha-ph": "Ekrir text ki ou pe truve en-ba"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/mg.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/mg.json
new file mode 100644
index 00000000..b482243f
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/mg.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "Jagwar"
+ ]
+ },
+ "fancycaptcha-captcha": "Fitsapana ny antoka",
+ "fancycaptcha-accountcreate": "Mba hiarovana ity wiki ity amin'ny famoronana kaonty ho azy, soraty ny teny hitanao amin'ny boaty eo embany ([[Special:Captcha/help|fampahalalana fanampiny]]):",
+ "fancycaptcha-imgcaptcha-ph": "Atsofohy ny teny hitanao eo amin'ilay sary",
+ "fancycaptcha-reload-text": "Vaozina"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/min.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/min.json
new file mode 100644
index 00000000..a8d95c99
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/min.json
@@ -0,0 +1,10 @@
+{
+ "@metadata": {
+ "authors": [
+ "Iwan Novirion"
+ ]
+ },
+ "fancycaptcha-captcha": "Pamarisoan kaamanan",
+ "fancycaptcha-accountcreate": "Untuak palinduangan tahadok pambuek akun otomatis, tolong masuakan kato di bawah ko ka kotak nan tasadio ([[Special:Captcha/help|info labiah lanjuik]]):",
+ "fancycaptcha-imgcaptcha-ph": "Masuakan teks nan Sanak caliak di ateh"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/mk.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/mk.json
new file mode 100644
index 00000000..925df084
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/mk.json
@@ -0,0 +1,20 @@
+{
+ "@metadata": {
+ "authors": [
+ "Bjankuloski06"
+ ]
+ },
+ "fancycaptcha-desc": "Збогатен создавач сликичка за потврда на уредувања",
+ "fancycaptcha-addurl": "Вашето уредување вклучува нови надворешни врски.\nСо цел да се заштитиме од автоматизиран спам, би ве замолиле да ги внесете зборовите на сликичката подолу ([[Special:Captcha/help|повеќе информации]]):",
+ "fancycaptcha-badlogin": "Со цел да се заштитиме од автоматизирано пробивање на лозинки, би ве замолиле да ги внесете зборовите на сликичката подолу ([[Special:Captcha/help|повеќе информации]]):",
+ "fancycaptcha-captcha": "Безбедносна проверка",
+ "fancycaptcha-accountcreate": "Со цел да се заштитиме од автоматизирано создавање на сметки, би ве замолиле да ги внесете зборовите на сликичката подолу ([[Special:Captcha/help|повеќе информации]]):",
+ "fancycaptcha-create": "За да создадете страница, внесете ги зборовите на сликичката подолу ([[Special:Captcha/help|повеќе информации]]):",
+ "fancycaptcha-edit": "За да ја уредите страницава, внесете ги зборовите на сликичката подолу ([[Special:Captcha/help|повеќе информации]]):",
+ "fancycaptcha-imgcaptcha-ph": "Внесете го текстот прикажан на сликата",
+ "fancycaptcha-sendemail": "За да се заштитиме од автоматизирано спамирање, би ве замолиле да ги внесете зборовите од сликичката во полето подолу ([[Special:Captcha/help|повеќе информации]]):",
+ "fancycaptcha-reload-text": "Превчитај",
+ "apihelp-fancycaptchareload-description": "Дај нова FancyCaptcha.",
+ "apihelp-fancycaptchareload-summary": "Дај нова FancyCaptcha.",
+ "apihelp-fancycaptchareload-example-1": "Дај нова FancyCaptcha."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ml.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ml.json
new file mode 100644
index 00000000..0c848e97
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ml.json
@@ -0,0 +1,18 @@
+{
+ "@metadata": {
+ "authors": [
+ "Praveenp",
+ "Shijualex",
+ "Jameela P."
+ ]
+ },
+ "fancycaptcha-addurl": "താങ്കളുടെ തിരുത്തലലിൽ പുറം കണ്ണികൾ ഉൾപ്പെട്ടിരിക്കുന്നു.\nയാന്ത്രിക സ്പാമിനെതിരെയുള്ള സം‌രക്ഷണത്തിന്റെ ഭാഗമായി, താഴെ കാണുന്ന വാക്കുകൾ പെട്ടിയിൽ ടൈപ്പു ചെയ്യുക ([[Special:Captcha/help|കൂടുതൽ വിവരങ്ങൾ]]):",
+ "fancycaptcha-badlogin": "രഹസ്യവാക്ക് യാന്ത്രികമായി പൊളിക്കുന്നത് തടയുന്നതിന്റെ ഭാഗമായി, താഴെ കാണുന്ന വാക്കുകൾ പെട്ടിയിൽ ടൈപ്പു ചെയ്യുക ([[Special:Captcha/help|കൂടുതൽ വിവരങ്ങൾ]]):",
+ "fancycaptcha-captcha": "സുരക്ഷാ പരിശോധന",
+ "fancycaptcha-accountcreate": "യാന്ത്രികമായി അംഗത്വം സൃഷ്ടിക്കുന്നതിൽ നിന്നും വിക്കിയെ സം‌രക്ഷിക്കുന്നതിന്റെ ഭാഗമായി, ദയവായി താഴെ കൊടുത്തിരിക്കുന്ന വാക്കുകൾ പെട്ടിയിൽ നൽകുക ([[Special:Captcha/help|കൂടുതൽ വിവരങ്ങൾ]]):",
+ "fancycaptcha-create": "ഈ താൾ സൃഷ്ടിക്കുവാൻ താഴെയുള്ള പെട്ടിയിൽ കാണുന്ന വാക്കുകൾ ടൈപ്പു ചെയ്യുക ([[Special:Captcha/help|കൂടുതൽ വിവരങ്ങൾ]]):",
+ "fancycaptcha-edit": "ഈ താൾ തിരുത്തുവാൻ ദയവായി താഴെ കാണുന്ന വാക്കുകൾ പെട്ടിയിൽ ടൈപ്പു ചെയ്യുക ([[Special:Captcha/help|കൂടുതൽ വിവരങ്ങൾ]]):",
+ "fancycaptcha-imgcaptcha-ph": "ചിത്രത്തിൽ കാണുന്ന എഴുത്ത് ഇവിടെ നൽകുക",
+ "fancycaptcha-sendemail": "യാന്ത്രികമായ പാഴെഴുത്ത് ഉൾപ്പെടുത്തലിനുള്ള പ്രതിരോധമെന്ന നിലയിൽ, താഴെ കാണുന്ന വാക്കുകൾ പെട്ടിയിൽ ടൈപ്പ് ചെയ്യുക ([[Special:Captcha/help|കൂടുതൽ വിവരങ്ങൾ]]):",
+ "fancycaptcha-reload-text": "പുതുക്കുക"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/mn.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/mn.json
new file mode 100644
index 00000000..06408eb6
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/mn.json
@@ -0,0 +1,5 @@
+{
+ "@metadata": [],
+ "fancycaptcha-captcha": "Аюулгүй байдлын хяналт",
+ "fancycaptcha-imgcaptcha-ph": "Дээр харагдаж буй бичвэрийг оруулна уу"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/mo.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/mo.json
new file mode 100644
index 00000000..0f151d81
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/mo.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "TheChampionMan1234"
+ ]
+ },
+ "fancycaptcha-reload-text": "Реынкаркэ"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/mr.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/mr.json
new file mode 100644
index 00000000..387a2311
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/mr.json
@@ -0,0 +1,20 @@
+{
+ "@metadata": {
+ "authors": [
+ "Kaustubh",
+ "Mahitgar",
+ "संतोष दहिवळ",
+ "BPositive",
+ "V.narsikar"
+ ]
+ },
+ "fancycaptcha-addurl": "तुमच्या संपादनात नवीन बाह्य दुवे आहेत.\nआपोआप होणार्‍या संपादनांपासून बचावासाठी, खाली दिसणारे शब्द दिलेल्या पृष्ठपेटी मध्ये लिहा ([[Special:Captcha/help|अधिक माहिती]]):",
+ "fancycaptcha-badlogin": "आपोआप होणार्‍या परवलीच्या शब्दाच्या चोरीपासून वाचण्यासाठी, खाली दिसणारे शब्द दिलेल्या पृष्ठपेटी मध्ये लिहा ([[Special:Captcha/help|अधिक माहिती]]):",
+ "fancycaptcha-captcha": "सुरक्षा तपासणी",
+ "fancycaptcha-accountcreate": "या विकिस, आपोआप होणार्‍या सदस्य नोंदणीपासून सुरक्षित राखण्यासाठी,आम्ही आपणास सांगतो कि खाली दिसणारे शब्द दिलेल्या पृष्ठपेटी मध्ये लिहा ([[Special:Captcha/help|अधिक माहिती]]):",
+ "fancycaptcha-create": "हे पान तयार करण्यासाठी, खाली दिसणारे शब्द दिलेल्या पृष्ठपेटी मध्ये लिहा ([[Special:Captcha/help|अधिक माहिती]]):",
+ "fancycaptcha-edit": "हे पान संपादित करण्यासाठी, खाली दिसणारे शब्द दिलेल्या पृष्ठपेटी मध्ये लिहा ([[Special:Captcha/help|अधिक माहिती]]):",
+ "fancycaptcha-imgcaptcha-ph": "चित्रावर दिसत असलेला मजकूर येथे टाका",
+ "fancycaptcha-sendemail": "आपोआप होणार्‍या उत्पातापासून वाचण्यासाठी, खाली दिसणारे शब्द दिलेल्या पृष्ठपेटी मध्ये लिहा ([[Special:Captcha/help|अधिक माहिती]]):",
+ "fancycaptcha-reload-text": "ताजेतवाने करा"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ms.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ms.json
new file mode 100644
index 00000000..e9caaa26
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ms.json
@@ -0,0 +1,20 @@
+{
+ "@metadata": {
+ "authors": [
+ "Anakmalaysia",
+ "Aviator",
+ "Pizza1016"
+ ]
+ },
+ "fancycaptcha-addurl": "Suntingan anda mengandungi pautan luar baru. Untuk membanteras kegiatan spam automatik, anda diminta mengisi huruf-huruf berikut dalam kotak yang disediakan ([[Special:Captcha/help|maklumat lanjut]]):",
+ "fancycaptcha-badlogin": "Untuk membanteras kegiatan meneka kata laluan secara automatik, anda diminta mengisi huruf-huruf berikut dalam kotak yang disediakan ([[Special:Captcha/help|maklumat lanjut]]):",
+ "fancycaptcha-captcha": "Pemeriksaan sekuriti",
+ "fancycaptcha-accountcreate": "Untuk melindungi wiki ini dari pembukaan akaun secara automatik, kami memohon anda untuk mengisi perkataan-perkataan berikut dalam kotak yang disediakan ([[Special:Captcha/help|maklumat lanjut]]):",
+ "fancycaptcha-create": "Untuk mencipta laman ini, anda diminta mengisi huruf-huruf berikut dalam kotak yang disediakan ([[Special:Captcha/help|maklumat lanjut]]):",
+ "fancycaptcha-edit": "Untuk menyunting laman ini, anda diminta mengisi huruf-huruf berikut dalam kotak yang disediakan ([[Special:Captcha/help|maklumat lanjut]]):",
+ "fancycaptcha-imgcaptcha-ph": "Isikan teks yang anda lihat di atas",
+ "fancycaptcha-sendemail": "Untuk membanteras kegiatan spam secara automatik, anda diminta mengisi huruf-huruf berikut dalam kotak yang disediakan ([[Special:Captcha/help|maklumat lanjut]]):",
+ "fancycaptcha-reload-text": "Muat semula",
+ "apihelp-fancycaptchareload-description": "Dapatkan FancyCaptcha baru.",
+ "apihelp-fancycaptchareload-example-1": "Dapatkan FancyCaptcha baru"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/mt.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/mt.json
new file mode 100644
index 00000000..74a5d713
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/mt.json
@@ -0,0 +1,17 @@
+{
+ "@metadata": {
+ "authors": [
+ "Chrisportelli",
+ "Leli Forte"
+ ]
+ },
+ "fancycaptcha-addurl": "Il-modifika tiegħek tinkludi ħoloq esterni ġodda.\nSabiex tipproteġi kontra spam awtomatiku, jekk jogħġbok solvi din is-somma sempliċi t'hawn taħt u daħħal ir-risposta fil-kaxxa ([[Special:Captcha/help|aktar informazzjoni]]):",
+ "fancycaptcha-badlogin": "Bħala prekawzjoni kontra l-infurzar awtomatiku tal-password, jekk jogħġbok daħħal il-kliem li jidhru hawn taħt fil-kaxxa ([[Special:Captcha/help|aktar informazzjoni]]):",
+ "fancycaptcha-captcha": "Kontroll tas-sigurtà",
+ "fancycaptcha-accountcreate": "Bħala miżura ta' prekawzjoni kontra l-ħolqien awtomatiku tal-kontijiet, jekk jogħġbok daħħal fil-kaxxa l-ittri li jidhru hawn taħt ([[Special:Captcha/help|aktar informazzjoni]]):",
+ "fancycaptcha-create": "Sabiex toħloq din il-paġna, jekk jogħġbok daħħal il-kliem li jidhru hawn taħt fil-kaxxa ([[Special:Captcha/help|aktar informazzjoni]]):",
+ "fancycaptcha-edit": "Sabiex timmodifika din il-paġna, jekk jogħġbok daħħal il-kliem li jidhru hawn taħt fil-kaxxa ([[Special:Captcha/help|aktar informazzjoni]]):",
+ "fancycaptcha-imgcaptcha-ph": "Daħħal it-test li qed tara hawn fuq",
+ "fancycaptcha-sendemail": "Bħala prekawzjoni kontra l-ispam awtomatiku, jekk jogħġbok daħħal fil-kaxxa l-ittri li jidhru hawn taħt ([[Special:Captcha/help|aktar informazzjoni]]):",
+ "fancycaptcha-reload-text": "Aġġorna"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/mwl.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/mwl.json
new file mode 100644
index 00000000..fd7191a3
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/mwl.json
@@ -0,0 +1,12 @@
+{
+ "@metadata": {
+ "authors": [
+ "MokaAkashiyaPT",
+ "Athena in Wonderland"
+ ]
+ },
+ "fancycaptcha-captcha": "Berificaçon de sigurança",
+ "fancycaptcha-accountcreate": "Pa porteger esta wiki contra la criaçon de cuontas outomatizada, por fabor, poner na caixa ambaixo las palabras apersentadas ([[Special:Captcha/help|mais anformaçones]]):",
+ "fancycaptcha-imgcaptcha-ph": "Screba l testo que stá a ber na eimaige",
+ "fancycaptcha-reload-text": "Atualizar"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/my.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/my.json
new file mode 100644
index 00000000..ad1e56cd
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/my.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ninjastrikers"
+ ]
+ },
+ "fancycaptcha-captcha": "လုံခြုံရေး စစ်ဆေးမှု",
+ "fancycaptcha-accountcreate": "ဝီကီတွင် အလိုအလျောက် အကောင့်ဖန်တီးခြင်းကို ကာကွယ်နိုင်ရန်အတွက် အောက်ပါအကွက်တွင်းရှိ စကားလုံးများကို ရိုက်ထည့်ပေးစေလိုပါသည် ([[Special:Captcha/help|ပိုမိုသိရှိရန်]]):",
+ "fancycaptcha-imgcaptcha-ph": "အပေါ်ရှိပုံတွင် မြင်ရသော စာသားကို ရေးထည့်ပါ",
+ "fancycaptcha-reload-text": "ရှင်းသန့်"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/myv.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/myv.json
new file mode 100644
index 00000000..aab7412b
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/myv.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Rueter"
+ ]
+ },
+ "fancycaptcha-reload-text": "Одкстомтомс"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/mzn.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/mzn.json
new file mode 100644
index 00000000..9746d66b
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/mzn.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "محک"
+ ]
+ },
+ "fancycaptcha-captcha": "امنیتی چک",
+ "fancycaptcha-accountcreate": "چون نخامبی که کاروری حیسابون ره روباتون بسازِن و خودکار بساته بَواشِن، شِما جه خامبی که این کلمه که عکس دله وینّی ره بنویسین([[Special:Captcha/help|کامل ِاطلاعات]]):",
+ "fancycaptcha-imgcaptcha-ph": "این بنویشته‌یی که بالا وینّی ره بنویسین",
+ "fancycaptcha-reload-text": "نو هاکردن"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/nan.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/nan.json
new file mode 100644
index 00000000..6e2ed9a3
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/nan.json
@@ -0,0 +1,5 @@
+{
+ "@metadata": [],
+ "fancycaptcha-captcha": "An-choân kiám-cha",
+ "fancycaptcha-imgcaptcha-ph": "Kā ē-kha lí khoàⁿ tio̍h--ê bûn-jī phah ji̍p lâi"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/nap.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/nap.json
new file mode 100644
index 00000000..9b4f9604
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/nap.json
@@ -0,0 +1,18 @@
+{
+ "@metadata": {
+ "authors": [
+ "C.R."
+ ]
+ },
+ "fancycaptcha-addurl": "'O cagnamiento vuosto include 'e cullegamiente 'e fore.\nPe' putè pruteggere annanz'a 'o spamm automateco, pe' piacere mettete 'e parole ccà abbascio ([[Special:Captcha/help|cchiù nfurmaziune]]):",
+ "fancycaptcha-badlogin": "Pe' ve putè pruteggere 'a wiki annanz'a coccheruno ca se futtesse 'a password cu nu computer, pe' piacere mettite ccà abbascio int' 'a casciulella 'e parole ccà ([[Special:Captcha/help|cchiù nfurmaziune]]):",
+ "fancycaptcha-captcha": "Cuntrollo 'e sicurezza",
+ "fancycaptcha-accountcreate": "Pe' ve putè pruteggere 'a wiki annanz'a criazione 'utente, pe' piacere mettite ccà abbascio int' 'a casciulella 'e parole ccà ([[Special:Captcha/help|cchiù nfurmaziune]]):",
+ "fancycaptcha-create": "Pe' crià sta paggena, pe' piacere mettite 'e parole ca cumpareno ccà abbascio int'a casciulella ([[Special:Captcha/help|cchiù nfurmaziune]]):",
+ "fancycaptcha-edit": "Pe' putè cagnà sta paggena, pe' piacere mettete 'e parole ca se trovano ccà abbascio int'a casciulella ([[Special:Captcha/help|cchiù nfurmaziune]]):",
+ "fancycaptcha-imgcaptcha-ph": "Scrivite 'o testo ca vedite ncopp'a l'immaggene",
+ "fancycaptcha-sendemail": "Pe' ve putè pruteggere 'a wiki annanz'a coccheruno ca facesse spam c' 'o computer, pe' piacere mettite ccà abbascio int' 'a casciulella 'e parole ccà ([[Special:Captcha/help|cchiù nfurmaziune]]):",
+ "fancycaptcha-reload-text": "Agghiuorna",
+ "apihelp-fancycaptchareload-description": "Pigliateve nu FancyCaptcha nuovo.",
+ "apihelp-fancycaptchareload-example-1": "Pigliateve nu FancyCaptcha nuovo"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/nb.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/nb.json
new file mode 100644
index 00000000..96b94f20
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/nb.json
@@ -0,0 +1,24 @@
+{
+ "@metadata": {
+ "authors": [
+ "Danmichaelo",
+ "Harald Khan",
+ "Laaknor",
+ "Njardarlogar",
+ "Jon Harald Søby"
+ ]
+ },
+ "fancycaptcha-desc": "CAPTCHA-generator for «Confirm Edit»",
+ "fancycaptcha-addurl": "Redigeringen din inneholder nye eksterne lenker. For å beskytte wikien mot automatisert spam, ber vi om at du skriver inn ordene i boksen under ([[Special:Captcha/help|mer informasjon]]):",
+ "fancycaptcha-badlogin": "Skriv inn ordene som dukker opp i boksen nedenfor for å hjelpe oss å beskytte oss mot passordtyveri ([[Special:Captcha/help|mer informasjon]]):",
+ "fancycaptcha-captcha": "Sikkerhetssjekk",
+ "fancycaptcha-accountcreate": "Skriv inn ordene som dukker opp i boksen nedenfor for å hjelpe oss å beskytte oss mot automatisk kontoopprettelse ([[Special:Captcha/help|mer informasjon]]):",
+ "fancycaptcha-create": "Skriv inn ordene som dukker opp i boksen nedenfor for å opprette siden ([[Special:Captcha/help|mer informasjon]]):",
+ "fancycaptcha-edit": "For å endre denne siden, vennligst skriv inn ordene som dukker opp i boksen nedenfor ([[Special:Captcha/help|mer informasjon]]):",
+ "fancycaptcha-imgcaptcha-ph": "Fyll inn teksten du ser i bildet",
+ "fancycaptcha-sendemail": "For å beskytte mot automatisert spam så må du skrive ordene under inn i tekstboksen ([[Special:Captcha/help|mer informasjon]]):",
+ "fancycaptcha-reload-text": "Last inn ny",
+ "apihelp-fancycaptchareload-description": "Få en ny FancyCaptcha.",
+ "apihelp-fancycaptchareload-summary": "Hent en ny FancyCaptcha.",
+ "apihelp-fancycaptchareload-example-1": "Få en ny FancyCaptcha"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/nds-nl.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/nds-nl.json
new file mode 100644
index 00000000..611815f8
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/nds-nl.json
@@ -0,0 +1,16 @@
+{
+ "@metadata": {
+ "authors": [
+ "Servien"
+ ]
+ },
+ "fancycaptcha-addurl": "Joew bewarking bevat uutgaonde verwiezingen. \nUm dit projekt te bescharmen tegen automatiese spam, mu'j t woord dat hieronder steet invullen ([[Special:Captcha/help|hulpe]]):",
+ "fancycaptcha-badlogin": "Um disse webstee te beveiligen tegen t kraken van wachtwoorden, mu'j de woorden die'j hieronder zien effen invullen ([[Special:Captcha/help|hulpe]]):",
+ "fancycaptcha-captcha": "Veiligheidskontraole",
+ "fancycaptcha-accountcreate": "Um disse wiki te bescharmen tegen t automaties anmaken van gebrukersprofielen mu'j t woord hieronder invullen ([[Special:Captcha/help|hulpe]]):",
+ "fancycaptcha-create": "Um n pagina an te maken, mö'j t woord dat hieronder steet invullen\n([[Special:Captcha/help|hulpe]]):",
+ "fancycaptcha-edit": "Vul de woorden die hieronder staon in um disse zied te bewarken ([[Special:Captcha/help|hulpe]]):",
+ "fancycaptcha-imgcaptcha-ph": "Voer de tekste in die'j op de aofbeelding zien",
+ "fancycaptcha-sendemail": "Voer de woorden die hieronder staon in t invoerveld in as bescharming tegen automatiese ongewunste reklame \n([[Special:Captcha/help|hulpe]]):",
+ "fancycaptcha-reload-text": "Verniejen"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/nds.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/nds.json
new file mode 100644
index 00000000..85c295de
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/nds.json
@@ -0,0 +1,12 @@
+{
+ "@metadata": {
+ "authors": [
+ "Slomox"
+ ]
+ },
+ "fancycaptcha-addurl": "In dien Ännern sünd ne’e Weblenken in.\nAs Schutz gegen automaatsch Spam, geev disse Bookstavenreeg in dat Feld ünnen in ([[Special:Captcha/help|mehr Infos]]).",
+ "fancycaptcha-badlogin": "As Schutz gegen Passwoord-Knackers, geev disse Bookstavenreeg in dat Feld ünnen in ([[Special:Captcha/help|mehr Infos]]).",
+ "fancycaptcha-accountcreate": "As Schutz gegen dat automaatsch Opstellen vun ne’e Brukerkonten, geev disse Bookstavenreeg in dat Feld ünnen in ([[Special:Captcha/help|mehr Infos]]).",
+ "fancycaptcha-create": "Disse Sied nee optostellen, geev disse Bookstavenreeg in dat Feld ünnen in ([[Special:Captcha/help|mehr Infos]]).",
+ "fancycaptcha-edit": "Disse Sied to ännern, geev disse Bookstavenreeg in dat Feld ünnen in ([[Special:Captcha/help|mehr Infos]])."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ne.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ne.json
new file mode 100644
index 00000000..1d0eb3ad
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ne.json
@@ -0,0 +1,12 @@
+{
+ "@metadata": {
+ "authors": [
+ "बिप्लब आनन्द",
+ "राम प्रसाद जोशी"
+ ]
+ },
+ "fancycaptcha-captcha": "सुरक्षा जाँच",
+ "fancycaptcha-accountcreate": "विकिलाई आफु मनपरी बनाउने खाताबाट बचाउनकोलागि हामी तपाईंलाई तलका बकसमा देखिने वेबमा जान बिनम्र अनुरोध गर्दछौं: ([[Special:Captcha/help|अधिक जानकारी]]):",
+ "fancycaptcha-imgcaptcha-ph": "चित्रमा देखिए अनुसारको पाठ भर्नुहोस्",
+ "fancycaptcha-reload-text": "ताजागर्ने"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/nl-informal.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/nl-informal.json
new file mode 100644
index 00000000..3ba85480
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/nl-informal.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Siebrand"
+ ]
+ },
+ "fancycaptcha-addurl": "Je bewerking bevat nieuwe externe koppelingen.\nVoer de woorden die hieronder verschijnen in het invoerveld in als bescherming tegen automatische spam ([[Special:Captcha/help|meer informatie]]):"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/nl.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/nl.json
new file mode 100644
index 00000000..04576945
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/nl.json
@@ -0,0 +1,24 @@
+{
+ "@metadata": {
+ "authors": [
+ "HanV",
+ "Siebrand",
+ "Esketti",
+ "Sjoerddebruin",
+ "Dinosaur918",
+ "Mar(c)"
+ ]
+ },
+ "fancycaptcha-desc": "Generator voor opgedirkte captcha's voor ConfirmEdit",
+ "fancycaptcha-addurl": "Uw bewerking bevat nieuwe externe koppelingen.\nVoer de woorden die hieronder verschijnen in het invoerveld in als bescherming tegen automatische spam ([[Special:Captcha/help|meer informatie]]):",
+ "fancycaptcha-badlogin": "Voer de woorden die hieronder getoond worden in het invoerveld in als bescherming tegen het automatisch kraken van wachtwoorden ([[Special:Captcha/help|meer informatie]]):",
+ "fancycaptcha-captcha": "Veiligheidscontrole",
+ "fancycaptcha-accountcreate": "Om de wiki te beschermen tegen het geautomatiseerd aanmaken van accounts, vragen wij u de woorden in te voeren die in het vak hieronder getoond worden ([[Special:Captcha/help|meer informatie]]):",
+ "fancycaptcha-create": "Voer de woorden die hieronder verschijnen in het invoerveld in om de pagina aan te maken ([[Special:Captcha/help|meer informatie]]):",
+ "fancycaptcha-edit": "Voer de woorden die hieronder verschijnen in het invoerveld in om deze pagina te bewerken ([[Special:Captcha/help|meer informatie]]):",
+ "fancycaptcha-imgcaptcha-ph": "Geef de tekst die u in de afbeelding ziet",
+ "fancycaptcha-sendemail": "Voer de woorden die hieronder getoond worden in het invoerveld in als bescherming tegen spam ([[Special:Captcha/help|meer informatie]]):",
+ "fancycaptcha-reload-text": "Vernieuwen",
+ "apihelp-fancycaptchareload-description": "Een nieuwe FancyCaptcha ophalen.",
+ "apihelp-fancycaptchareload-example-1": "Een nieuwe FancyCaptcha ophalen"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/nn.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/nn.json
new file mode 100644
index 00000000..c3563773
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/nn.json
@@ -0,0 +1,19 @@
+{
+ "@metadata": {
+ "authors": [
+ "Harald Khan",
+ "Njardarlogar",
+ "Ranveig",
+ "Jon Harald Søby"
+ ]
+ },
+ "fancycaptcha-addurl": "Endringa di inneheld nye utlenkjer.\nFor å hjelpa oss med å unngå automatisert spam, ver venleg og skriv inn orda som kjem til syne i boksen under ([[Special:Captcha/help|meir informasjon]]):",
+ "fancycaptcha-badlogin": "Skriv inn orda som kjem til syne i boksen nedanfor for å hjelpa oss med å unngå automatisert passordknekking ([[Special:Captcha/help|meir informasjon]]):",
+ "fancycaptcha-captcha": "Tryggingssjekk",
+ "fancycaptcha-accountcreate": "For å hindre automatisk kontooppretting må me be om at du skriv inn orda som kjem til syne i boksen nedanfor ([[Special:Captcha/help|meir informasjon]]):",
+ "fancycaptcha-create": "Skriv inn orda som kjem til syne i boksen nedanfor for å oppretta sida ([[Special:Captcha/help|meir informasjon]]):",
+ "fancycaptcha-edit": "For å endra denne sida, ver venleg og skriv inn orda som kjem til syne i boksen nedanfor ([[Special:Captcha/help|meir informasjon]]):",
+ "fancycaptcha-imgcaptcha-ph": "Skriv inn teksta du ser i biletet",
+ "fancycaptcha-sendemail": "For å hjelpa til mot sjølvgåande spamming, skriv inn orda som kjem til syne i boksen under ([[Special:Captcha/help|meir informasjon]]):",
+ "fancycaptcha-reload-text": "Oppdater"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/nys.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/nys.json
new file mode 100644
index 00000000..42d5f806
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/nys.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "Gnangarra"
+ ]
+ },
+ "fancycaptcha-captcha": "Security check",
+ "fancycaptcha-accountcreate": "To protect the wiki against automated account creation, we kindly ask you to enter the words that appear below in the box ([[Special:Captcha/help|more info]]):",
+ "fancycaptcha-imgcaptcha-ph": "Djarbiny text djinang il image",
+ "fancycaptcha-reload-text": "yyinang djinang"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/oc.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/oc.json
new file mode 100644
index 00000000..dd4fa5c4
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/oc.json
@@ -0,0 +1,19 @@
+{
+ "@metadata": {
+ "authors": [
+ "Cedric31"
+ ]
+ },
+ "fancycaptcha-desc": "Generador d’imatges ''captcha'' antirobòts que demandan una confirmacion umana de las modificacions.",
+ "fancycaptcha-addurl": "Vòstra modificacion inclutz de ligams extèrnes novèls. Per protegir lo wiki contra los corrièls indesirables automatics, vos demandam d'entrar los mots qu'apareisson dins la bóstia\n([[Special:Captcha/help|mai d’entresenhas]]) :",
+ "fancycaptcha-badlogin": "Per protegir lo wiki contra lo copatge de senhals per d'automats, mercés de picar los mots que s’afichan dins aquesta bóstia \n([[Special:Captcha/help|Mai d'entresenhas]]) :",
+ "fancycaptcha-captcha": "Contraròtle de seguretat",
+ "fancycaptcha-accountcreate": "Per protegir lo wiki contra las creacions automaticas de comptes, vos demandam d'entrar los mots qu'apareisson çaijós dins la bóstia ([[Special:Captcha/help|mai d’entresenhas]]) :",
+ "fancycaptcha-create": "Vòstra modificacion inclutz de ligams extèrnes novèls. Per verificar que s’agisson pas de spams automatics, picatz los mots qu'apareisson dins la bóstia çaijós ([[Special:Captcha/help|mai d’entresenhas]]) :",
+ "fancycaptcha-edit": "Vòstra modificacion inclutz de ligams extèrnes novèls. Per verificar que s’agís pas de spam automatic, picatz los mots qu'apareisson dins la bóstia çaijós ([[Special:Captcha/help|mai d’entresenhas]]) :",
+ "fancycaptcha-imgcaptcha-ph": "Entratz lo tèxte que vesètz sus l'imatge",
+ "fancycaptcha-sendemail": "Per tal de nos ajudar a prevenir lo spam automatic, entratz los mots qu'apareisson dins la bóstia çaijós ([[Special:Captcha/help|mai d’informacions]]) :",
+ "fancycaptcha-reload-text": "Actualizar",
+ "apihelp-fancycaptchareload-description": "Obténer un novèl FancyCaptcha.",
+ "apihelp-fancycaptchareload-example-1": "Obténer un novèl FancyCaptcha."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/olo.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/olo.json
new file mode 100644
index 00000000..d596477f
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/olo.json
@@ -0,0 +1,12 @@
+{
+ "@metadata": {
+ "authors": [
+ "Mashoi7",
+ "Ilja.mos"
+ ]
+ },
+ "fancycaptcha-captcha": "Turvalližusvarmistus",
+ "fancycaptcha-accountcreate": "Ku suojata wikii automuattizesti luajittulois tililöis, kyzymmö sinuu kirjuttamah al olijat sanat ramkah ([[Special:Captcha/help|ližätieduo]]):",
+ "fancycaptcha-imgcaptcha-ph": "Kirjuta ylähän olii tekstu",
+ "fancycaptcha-reload-text": "Päivitä"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/or.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/or.json
new file mode 100644
index 00000000..da04c940
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/or.json
@@ -0,0 +1,17 @@
+{
+ "@metadata": {
+ "authors": [
+ "Psubhashish",
+ "Jnanaranjan Sahu"
+ ]
+ },
+ "fancycaptcha-addurl": "ଆପଣଙ୍କ ସମ୍ପାଦନାରେ ନୂଆ ବାହାର ଲିଙ୍କ ରହିଛି ।\nଆପେଆପେ ହେଉଥିବା ସ୍ପାମର ପ୍ରତିରୋଧ କରିବା ନିମନ୍ତେ ଘର ତଳେ ଥିବା ଶବ୍ଦସବୁ ଦିଅନ୍ତୁ ([[Special:Captcha/help|ଅଧିକ ବିବରଣୀ]]):",
+ "fancycaptcha-badlogin": "ଆପେଆପେ ହେଉଥିବା ପାସବାର୍ଡ଼ ଚୋରାଇବାକୁ ପ୍ରତିରୋଧ କରିବା ନିମନ୍ତେ ଦୟାକରି ଏହି ଘରଭିତରେ ଥିବା ଶବ୍ଦସବୁକୁ ତାହା ତଳେ ଥିବା ବାକ୍ସରେ ଟାଇପ କରନ୍ତୁ । ([[Special:Captcha/help|ଅଧିକ ସୂଚନା]]):",
+ "fancycaptcha-captcha": "ନିରାପତ୍ତା ଯାଞ୍ଚ",
+ "fancycaptcha-accountcreate": "ଆପେଆପେ ଖାତା ଖୋଲିବାକୁ ଅଟକାଇବା ପାଇଁ ଦୟାକରି ଏହି ଘରଭିତରେ ଥିବା ଶବ୍ଦସବୁକୁ ତାହା ତଳେ ଥିବା ବାକ୍ସରେ ଟାଇପ କରନ୍ତୁ । ([[Special:Captcha/help|ଅଧିକ ସୂଚନା]]):",
+ "fancycaptcha-create": "ଏହି ପୃଷ୍ଠାଟିକୁ ତିଆରିବା ନିମନ୍ତେ, ଘର ତଳେ ଥିବା ଶବ୍ଦଟିକୁ ଏଠାରେ ଦିଅନ୍ତୁ ([[Special:Captcha/help|ଅଧିକ ଜାଣନ୍ତୁ]]):",
+ "fancycaptcha-edit": "ଏହି ପୃଷ୍ଠାଟିକୁ ବଦଳାଇବା ନିମନ୍ତେ, ଘର ତଳେ ଥିବା ଶବ୍ଦଟିକୁ ଏଠାରେ ଦିଅନ୍ତୁ ([[Special:Captcha/help|ଅଧିକ ଜାଣନ୍ତୁ]]):",
+ "fancycaptcha-imgcaptcha-ph": "ଏହି ଛବିରେ ଦିଶୁଥିବା ଲେଖାଟି ଟାଇପକରନ୍ତୁ",
+ "fancycaptcha-sendemail": "ଆପେଆପେ ହେଉଥିବା ସ୍ପାମକୁ ରୋକିବା ନିମନ୍ତେ ଦୟାକରି ଏହି ଘରଭିତରେ ଥିବା ଶବ୍ଦସବୁକୁ ତାହା ତଳେ ଥିବା ବାକ୍ସରେ ଟାଇପ କରନ୍ତୁ । ([[Special:Captcha/help|ଅଧିକ ସୂଚନା]]):",
+ "fancycaptcha-reload-text": "ରିଫ୍ରେସ"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/os.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/os.json
new file mode 100644
index 00000000..dd347c9b
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/os.json
@@ -0,0 +1,5 @@
+{
+ "@metadata": [],
+ "fancycaptcha-captcha": "Æдасдзинад бæлвырдгæнæн",
+ "fancycaptcha-imgcaptcha-ph": "Уæлдæр цы текст уыныс, уый бафысс"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ovd.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ovd.json
new file mode 100644
index 00000000..5d6fac38
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ovd.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Martin Wiss"
+ ]
+ },
+ "fancycaptcha-reload-text": "Fǫ att"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/pa.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/pa.json
new file mode 100644
index 00000000..7bbf9fcd
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/pa.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Babanwalia",
+ "Satdeep gill",
+ "Jimidar",
+ "Tow"
+ ]
+ },
+ "fancycaptcha-captcha": "ਸੁਰੱਖਿਆ ਜਾਂਚ",
+ "fancycaptcha-accountcreate": "ਵਿਕੀ ਉੱਤੇ ਆਪ ਮੁਹਾਰੇ ਖਾਤੇ ਬਣਾਉਣ ਤੋਂ ਬਚਾਅ ਲਈ ਅਸੀਂ ਤੁਹਾਨੂੰ ਬੇਨਤੀ ਕਰਦੇ ਹਾਂ ਕਿ ਇੱਥੇ ਦਿਸ ਰਹੇ ਸ਼ਬਦਾਂ ਨੂੰ ਹੇਠਾਂ ਦਿੱਤੇ ਬਕਸੇ ਵਿੱਚ ਲਿਖੋ ([[Special:Captcha/help|ਹੋਰ ਜਾਣਕਾਰੀ]]):",
+ "fancycaptcha-imgcaptcha-ph": "ਤਸਵੀਰ ਉੱਤੇ ਤੁਹਾਨੂੰ ਵਿਖਾਈ ਦੇ ਰਿਹਾ ਸ਼ਬਦ ਭਰੋ",
+ "fancycaptcha-reload-text": "ਤਾਜ਼ਾ ਕਰੋ"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/pfl.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/pfl.json
new file mode 100644
index 00000000..072d2558
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/pfl.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "Manuae"
+ ]
+ },
+ "fancycaptcha-captcha": "Sischahaidsbriefung",
+ "fancycaptcha-accountcreate": "Fadde Schudz vum Wiki voa audomadisch oag'leeschde B'nudzakonde, gebb bidde unna s'Woad oi ([[Special:Captcha/help|Fooche odda Broblem?]]):",
+ "fancycaptcha-imgcaptcha-ph": "Gebbde Tegschd oi, wu owwe seje duschd",
+ "fancycaptcha-reload-text": "Agdualisiere"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/pl.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/pl.json
new file mode 100644
index 00000000..5fde0b88
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/pl.json
@@ -0,0 +1,19 @@
+{
+ "@metadata": {
+ "authors": [
+ "Chrumps",
+ "Sp5uhe",
+ "WTM"
+ ]
+ },
+ "fancycaptcha-desc": "Generator obrazka, którego odczytanie jest wymagane dla zatwierdzenia edycji.",
+ "fancycaptcha-addurl": "Twoja edycja zawiera nowe linki zewnętrzne. Ze względu na ochronę przed zautomatyzowanym spamem prosimy o wpisanie słów, które widzisz poniżej, do pola tekstowego ([[Special:Captcha/help|więcej informacji]]):",
+ "fancycaptcha-badlogin": "Ze względu na ochronę przed automatycznym łamaniem haseł prosimy o wpisanie słów, które widzisz poniżej, do pola tekstowego ([[Special:Captcha/help|więcej informacji]]):",
+ "fancycaptcha-captcha": "Kontrola bezpieczeństwa",
+ "fancycaptcha-accountcreate": "Ze względu na ochronę przed automatycznym tworzeniem kont prosimy o wpisanie słów, które widzisz poniżej, do pola tekstowego ([[Special:Captcha/help|więcej informacji]])",
+ "fancycaptcha-create": "Aby utworzyć tę stronę, przepisz słowa, które widzisz poniżej, do pola tekstowego ([[Special:Captcha/help|pomoc]]):",
+ "fancycaptcha-edit": "Aby edytować tę stronę, przepisz słowa, które widzisz poniżej, do pola tekstowego ([[Special:Captcha/help|pomoc]]):",
+ "fancycaptcha-imgcaptcha-ph": "Wpisz tekst widoczny na obrazku",
+ "fancycaptcha-sendemail": "Ze względu na ochronę przed zautomatyzowanym spamem prosimy o wpisanie słów, które widzisz poniżej, do pola tekstowego ([[Special:Captcha/help|więcej informacji]]).",
+ "fancycaptcha-reload-text": "Odśwież"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/pms.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/pms.json
new file mode 100644
index 00000000..d196c4b5
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/pms.json
@@ -0,0 +1,20 @@
+{
+ "@metadata": {
+ "authors": [
+ "Borichèt",
+ "Bèrto 'd Sèra",
+ "Dragonòt"
+ ]
+ },
+ "fancycaptcha-addurl": "Soa modìfica a l'ha andrinta dj'anliure esterne neuve.\nPër protege la wiki da la rumenta aotomatisà, për piasì, ch'a l'arbata le paròle ch'a s-ciàira ant la casela ([[Special:Captcha/help|për savejne dë pì]]):",
+ "fancycaptcha-badlogin": "Për protege la wiki dai programa ch'a sërco ëd freghé le ciav, për piasì, ch'a l'arbata le paròle ch'a s-ciàira ant la casela ambelessì-sota ([[Special:Captcha/help|për savejne dë pì]]):",
+ "fancycaptcha-captcha": "Contròl ëd sigurëssa",
+ "fancycaptcha-accountcreate": "Për protege la wiki dai programa ch'a deurbo ëd cont neuv n'aotomàtich, për piasì, ch'a l'arbata le paròle ch'a s-ciàira ant la casela ambelessì-sota ([[Special:Captcha/help|për savejne dë pì]]):",
+ "fancycaptcha-create": "Për creé sta pàgina-i d'amblé, për piasì, ch'a l'arbata le paròle ch'a s-ciàira ambelessì sota ([[Special:Captcha/help|për savejne dë pì]]):",
+ "fancycaptcha-edit": "Për fe-ie dle modìfiche ansima a sta pàgina-sì, për piasì, ch'a l'arbata le paròle ch'a s-ciàira ambelessì sota ([[Special:Captcha/help|për savejne dë pì]]):",
+ "fancycaptcha-imgcaptcha-ph": "Ch'a anserissa ël test ch'a s-ciàira an sla figura",
+ "fancycaptcha-sendemail": "Për protege la wiki contra la rumenta automàtica, për piasì ch'a anserissa le paròle che as vëddo ant la casela sì-sota ([[Special:Captcha/help|për savèjne ëd pi]]):",
+ "fancycaptcha-reload-text": "Agiorné",
+ "apihelp-fancycaptchareload-description": "Oten-e un neuv FancyCaptcha.",
+ "apihelp-fancycaptchareload-example-1": "Oten-e un neuv FancyCaptcha"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/pnb.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/pnb.json
new file mode 100644
index 00000000..24ad5c1c
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/pnb.json
@@ -0,0 +1,17 @@
+{
+ "@metadata": {
+ "authors": [
+ "Khalid Mahmood",
+ "Saanvel"
+ ]
+ },
+ "fancycaptcha-addurl": "تواڈی تبدیلی چ نویں بارلے جوڑ نیں۔\nاس صفحے نوں تبدیل کرن واسطے، مہربانی کر کے ڈبے چ دتے گۓ شبداں نوں لکھو ([[Special:Captcha/help|مزید جانکاری]]):",
+ "fancycaptcha-badlogin": "اپنے آپ کنجی توڑن دے خلاف مدد واسطے، مہربانی کر کے ڈبے چ دتے گۓ شبداں نوں لکھو ([[Special:Captcha/help|مزید جانکاری]]):",
+ "fancycaptcha-captcha": "بچاؤ روک",
+ "fancycaptcha-accountcreate": "اپنے آپ غلط نویں کھاتے بنان توں روکن لئی، مہربانی کر کے ڈبے چ دتے گۓ شبداں نوں لکھو ([[Special:Captcha/help|ہور جانکاری]]):",
+ "fancycaptcha-create": "صفحہ بنان واسطے، مہربانی کر کے ڈبے چ دتے گۓ شبداں نوں لکھو ([[Special:Captcha/help|مزید جانکاری]]):",
+ "fancycaptcha-edit": "اس صفحے تے تبدیلی کرن واسطے، مہربانی کر کے ڈبے چ دتے گۓ شبداں نوں لکھو ([[Special:Captcha/help|مزید جانکاری]]):",
+ "fancycaptcha-imgcaptcha-ph": "فوٹو چ دیتی ہوئی لکھت ایتھے پاؤ",
+ "fancycaptcha-sendemail": "اپنے آپ غلط مال آن نوں روکن واسطے، مہربانی کر کے ڈبے چ دتے گۓ شبداں نوں لکھو ([[Special:Captcha/help|مزید جانکاری]]):",
+ "fancycaptcha-reload-text": "سجرا"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ppl.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ppl.json
new file mode 100644
index 00000000..bd474c65
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ppl.json
@@ -0,0 +1,4 @@
+{
+ "@metadata": [],
+ "fancycaptcha-imgcaptcha-ph": "Shiktajkwilu ne pajpalabraj tikita ikajku"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ps.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ps.json
new file mode 100644
index 00000000..05dff8bc
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ps.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ahmed-Najib-Biabani-Ibrahimkhel",
+ "Baloch Khan"
+ ]
+ },
+ "fancycaptcha-captcha": "امنيتي کتنه",
+ "fancycaptcha-accountcreate": "په ويکي کې د خپلسري گڼون جوړېدنې د مخنيوي په خاطر موږ له تاسې غوښتنه کوو چې لانديني توري هماغسې په ورکړل شوي بکس کې وټاپئ څنگه چې تاسې ته ښکارېږي ([[Special:Captcha/help|لا نور مالومات]]):",
+ "fancycaptcha-create": "ددې مخ د جوړلو لپاره، لطفاً ورکړل شوي توري چې څنگه تاسې ته ښکاري هماغسې کټ مټ په لانديني چوکاټ کې وليکی ([[Special:Captcha/help|نور مالومات]]):",
+ "fancycaptcha-edit": "ددې مخ د سمولو لپاره، لطفاً ورکړل شوي توري چې څنگه تاسې ته ښکاري هماغسې کټ مټ په لانديني چوکاټ کې وليکی ([[Special:Captcha/help|نور مالومات]]):",
+ "fancycaptcha-imgcaptcha-ph": "په انځور کې ښکارېدونکی متن دلته وټاپئ",
+ "fancycaptcha-reload-text": "بياتازه کول"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/pt-br.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/pt-br.json
new file mode 100644
index 00000000..8def6a77
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/pt-br.json
@@ -0,0 +1,26 @@
+{
+ "@metadata": {
+ "authors": [
+ "Cainamarques",
+ "Eduardo.mps",
+ "Giro720",
+ "Dianakc",
+ "HenriqueCrang",
+ "!Silent",
+ "Felipe L. Ewald"
+ ]
+ },
+ "fancycaptcha-desc": "Gerador CAPTCHA extravagante para Confirm Edit",
+ "fancycaptcha-addurl": "A sua edição inclui novos links externos. Para proteger a wiki contra sistemas automatizados que inserem ''spam'', por favor, introduza as palavras mostradas na seguinte caixa ([[Special:Captcha/help|mais informações]]):",
+ "fancycaptcha-badlogin": "Para proteger a wiki contra programas automatizados de detecção de senhas, por favor, introduza as palavras exibidas na seguinte caixa ([[Special:Captcha/help|mais informações]]):",
+ "fancycaptcha-captcha": "Verificação de segurança",
+ "fancycaptcha-accountcreate": "Para proteger a wiki contra sistemas automatizados de criação de contas, solicitamos que introduza as palavras exibidas na seguinte caixa ([[Special:Captcha/help|mais informações]]):",
+ "fancycaptcha-create": "Para criar a página, por favor, introduza as palavras exibidas na seguinte caixa ([[Special:Captcha/help|mais informações]]):",
+ "fancycaptcha-edit": "Para editar esta página, por favor, introduza as palavras exibidas na seguinte caixa ([[Special:Captcha/help|mais informações]]):",
+ "fancycaptcha-imgcaptcha-ph": "Digite o texto de que você na imagem",
+ "fancycaptcha-sendemail": "Para ajudar a combater ''spam'' automatizado, pedimos que, por favor, introduza as palavras que aparecem abaixo ([[Special:Captcha/help|mais informações]]):",
+ "fancycaptcha-reload-text": "Atualizar",
+ "apihelp-fancycaptchareload-description": "Gerar um novo FancyCaptcha.",
+ "apihelp-fancycaptchareload-summary": "Gerar um novo FancyCaptcha.",
+ "apihelp-fancycaptchareload-example-1": "Gerar um novo FancyCaptcha"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/pt.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/pt.json
new file mode 100644
index 00000000..52fbdd53
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/pt.json
@@ -0,0 +1,24 @@
+{
+ "@metadata": {
+ "authors": [
+ "Hamilton Abreu",
+ "Malafaya",
+ "SandroHc",
+ "Fúlvio",
+ "Vitorvicentevalente"
+ ]
+ },
+ "fancycaptcha-desc": "Gerador sofisticado de captcha para o Confirm Edit",
+ "fancycaptcha-addurl": "A sua edição introduziu hiperligações externas novas.\nPara proteger esta wiki contra o spam automatizado, por favor, introduza na caixa abaixo as palavras apresentadas ([[Special:Captcha/help|mais informações]]):",
+ "fancycaptcha-badlogin": "Para proteger esta wiki contra os mecanismos automatizados de descoberta de palavras-passe, por favor, introduza na caixa abaixo as palavras apresentadas ([[Special:Captcha/help|mais informações]]):",
+ "fancycaptcha-captcha": "Verificação de segurança",
+ "fancycaptcha-accountcreate": "Para proteger esta wiki contra a criação de contas automatizada, por favor, introduza na caixa abaixo as palavras apresentadas ([[Special:Captcha/help|mais informações]]):",
+ "fancycaptcha-create": "Para criar a página, por favor, introduza na caixa abaixo as palavras apresentadas ([[Special:Captcha/help|mais informações]]):",
+ "fancycaptcha-edit": "Para editar esta página, por favor, introduza na caixa abaixo as palavras apresentadas ([[Special:Captcha/help|mais informações]]):",
+ "fancycaptcha-imgcaptcha-ph": "Introduza o texto que vê na imagem",
+ "fancycaptcha-sendemail": "Para proteger esta wiki contra o spam automatizado, por favor, introduza na caixa as palavras que aparecem abaixo ([[Special:Captcha/help|mais informações]]):",
+ "fancycaptcha-reload-text": "Atualizar",
+ "apihelp-fancycaptchareload-description": "Gerar novo FancyCaptcha.",
+ "apihelp-fancycaptchareload-summary": "Gerar novo FancyCaptcha.",
+ "apihelp-fancycaptchareload-example-1": "Gerar novo FancyCaptcha"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/qqq.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/qqq.json
new file mode 100644
index 00000000..246d8797
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/qqq.json
@@ -0,0 +1,25 @@
+{
+ "@metadata": {
+ "authors": [
+ "Fryed-peach",
+ "Hamilton Abreu",
+ "Purodha",
+ "Shirayuki",
+ "Liuxinyu970226",
+ "Umherirrender"
+ ]
+ },
+ "fancycaptcha-desc": "{{Optional}}\n{{desc|name=FancyCaptcha|url=https://www.mediawiki.org/wiki/Extension:ConfirmEdit}}",
+ "fancycaptcha-addurl": "{{Related|ConfirmEdit-addurl}}",
+ "fancycaptcha-badlogin": "{{Related|ConfirmEdit-badlogin}}",
+ "fancycaptcha-captcha": "Brief label for image CAPTCHA input field",
+ "fancycaptcha-accountcreate": "{{Related|ConfirmEdit-create}}",
+ "fancycaptcha-create": "{{Related|ConfirmEdit-create}}",
+ "fancycaptcha-edit": "{{Related|ConfirmEdit-edit}}",
+ "fancycaptcha-imgcaptcha-ph": "Placeholder text for image CAPTCHA input field.",
+ "fancycaptcha-sendemail": "{{Related|ConfirmEdit-sendemail}}",
+ "fancycaptcha-reload-text": "Prompts a click to get a new FancyCaptcha image.\n{{Identical|Refresh}}",
+ "apihelp-fancycaptchareload-description": "{{doc-apihelp-description|fancycaptchareload}}",
+ "apihelp-fancycaptchareload-summary": "{{doc-apihelp-summary|fancycaptchareload}}",
+ "apihelp-fancycaptchareload-example-1": "{{doc-apihelp-example|fancycaptchareload}}"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/qu.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/qu.json
new file mode 100644
index 00000000..9532fd3e
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/qu.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "AlimanRuna"
+ ]
+ },
+ "fancycaptcha-captcha": "Amachana llanchiy",
+ "fancycaptcha-accountcreate": "Kay wikitaqa kikinmanta rakiquna kichariymanta amachanapaqqa, ama hina kaspa, kay qatiq kahachapi rikch'ariq rimakunata yaykuchiy ([[Special:Captcha/help|astawan rikuy]]):",
+ "fancycaptcha-create": "P'anqata kamarinaykipaqqa kay qatiq kahachapi kaq rimakunata yaykuchiy ([[Special:Captcha/help|astawan yachay]]):",
+ "fancycaptcha-edit": "Kay p'anqata llamk'anaykipaqqa kay qatiq kahachapi kaq rimakunata yaykuchiy ([[Special:Captcha/help|astawan yachay]]):",
+ "fancycaptcha-imgcaptcha-ph": "Hanaqpi rikusqayki qillqata yaykuchiy",
+ "fancycaptcha-reload-text": "Musuqchay"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/rm.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/rm.json
new file mode 100644
index 00000000..7f227409
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/rm.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "Kazu89",
+ "Terfili"
+ ]
+ },
+ "fancycaptcha-captcha": "Controlla da segirezza",
+ "fancycaptcha-accountcreate": "Per impedir la creaziun automatica da contos d'utilisader, endatescha per plaschair ils bustabs che vegnan mussads sutvart ([[Special:Captcha/help|dapli infos]]):",
+ "fancycaptcha-imgcaptcha-ph": "Endatescha il text che vesas en il maletg"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/rmf.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/rmf.json
new file mode 100644
index 00000000..978dc628
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/rmf.json
@@ -0,0 +1,4 @@
+{
+ "@metadata": [],
+ "fancycaptcha-imgcaptcha-ph": "Ranne tekstos, so tu dikkeha naal"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ro.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ro.json
new file mode 100644
index 00000000..9e4e8848
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ro.json
@@ -0,0 +1,20 @@
+{
+ "@metadata": {
+ "authors": [
+ "Firilacroco",
+ "Mihai",
+ "Minisarm",
+ "ImGelu",
+ "Strainu"
+ ]
+ },
+ "fancycaptcha-addurl": "Modificarea dumneavoastră include legături externe noi.\nPentru a împiedica roboții de spam, vă rugăm să introduceți cuvintele care apar în căsuță ([[Special:Captcha/help|mai multe detalii]]):",
+ "fancycaptcha-badlogin": "Pentru a împiedica spargerea automată a parolelor, vă rugăm să introduceți cuvintele care apar mai jos în căsuță ([[Special:Captcha/help|mai multe detalii]]):",
+ "fancycaptcha-captcha": "Verificare de securitate",
+ "fancycaptcha-accountcreate": "Pentru a împiedica crearea automată de conturi, vă rugăm să introduceți cuvintele care apar mai jos în căsuță ([[Special:Captcha/help|mai multe detalii]]):",
+ "fancycaptcha-create": "Pentru a crea pagina, vă rugăm să introduceți în casetă cuvintele care apar mai jos ([[Special:Captcha/help|mai multe detalii]]):",
+ "fancycaptcha-edit": "Pentru a modifica această pagină, vă rugăm să introduceți în casetă cuvintele care apar mai jos ([[Special:Captcha/help|mai multe detalii]]):",
+ "fancycaptcha-imgcaptcha-ph": "Introduceți textul pe care îl vedeți în imagine",
+ "fancycaptcha-sendemail": "Pentru a împiedica roboții de spam, vă rugăm să introduceți cuvintele care apar mai jos în căsuță ([[Special:Captcha/help|mai multe detalii]]):",
+ "fancycaptcha-reload-text": "Reîncarcă"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/roa-tara.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/roa-tara.json
new file mode 100644
index 00000000..61a4717a
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/roa-tara.json
@@ -0,0 +1,19 @@
+{
+ "@metadata": {
+ "authors": [
+ "Joetaras"
+ ]
+ },
+ "fancycaptcha-addurl": "'U cangiamende tune 'nglude de le collegaminde de fore.\nPe proteggere condre a 'u spam automateche, pe piacere mitte le parole ca iessene sotte ([[Special:Captcha/help|cchiù 'mbormaziune]]):",
+ "fancycaptcha-badlogin": "Pe proteggere condre a futteminde automatece de passuord, pe piacere mitte le parole ca iessene aqquà sotte ([[Special:Captcha/help|cchiù 'mbormaziune]]):",
+ "fancycaptcha-captcha": "Verifiche de securezze",
+ "fancycaptcha-accountcreate": "Pe proteggere condre a ccreazione automateche de cunde utinde, pe piacere mitte le parole ca iessene aqquà sotte ([[Special:Captcha/help|cchiù 'mbormaziune]]):",
+ "fancycaptcha-create": "Pe ccrejà sta pàgene, pe piacere mitte le parole ca combare aqquà sotte ([[Special:Captcha/help|more info]]):",
+ "fancycaptcha-edit": "Pe cangià sta pàgene, pe piacere mitte le parole combare aqquà sotte ([[Special:Captcha/help|more info]]):",
+ "fancycaptcha-imgcaptcha-ph": "Mitte 'u teste ca tu 'ndruche sus a l'immaggine",
+ "fancycaptcha-sendemail": "Pe proteggere condre a spam automatece, pe piacere mitte le parole ca iessene aqquà sotte ([[Special:Captcha/help|cchiù 'mbormaziune]]):",
+ "fancycaptcha-reload-text": "Aggiorne",
+ "apihelp-fancycaptchareload-description": "Pigghie 'nu FancyCaptcha nuève.",
+ "apihelp-fancycaptchareload-summary": "Pigghie 'nu FancyCaptcha nuève.",
+ "apihelp-fancycaptchareload-example-1": "Pigghie 'nu FancyCaptcha nuève"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ru.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ru.json
new file mode 100644
index 00000000..a3b271b8
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ru.json
@@ -0,0 +1,25 @@
+{
+ "@metadata": {
+ "authors": [
+ "Dim Grits",
+ "Lockal",
+ "Okras",
+ "Александр Сигачёв",
+ "Ole Yves",
+ "Facenapalm"
+ ]
+ },
+ "fancycaptcha-desc": "Необычный CAPTCHA-генератор для подтверждения редактирования",
+ "fancycaptcha-addurl": "Ваша правка содержит новые внешние ссылки.\nВ целях защиты от спама просим вас ввести слова, показанные ниже в рамке ([[Special:Captcha/help|подробнее…]]):",
+ "fancycaptcha-badlogin": "В целях защиты от автоматического взлома паролей просим вас ввести слова, показанные ниже в рамке ([[Special:Captcha/help|подробнее…]]):",
+ "fancycaptcha-captcha": "Проверка безопасности",
+ "fancycaptcha-accountcreate": "Для предотвращения автоматической регистрации учётных записей просим вас ввести слова, показанные ниже в рамке ([[Special:Captcha/help|подробнее]]):",
+ "fancycaptcha-create": "Для создания страницы, пожалуйста, введите буквы, которые видны на изображении ниже ([[Special:Captcha/help|подробнее…]]):",
+ "fancycaptcha-edit": "Для редактирования страницы, пожалуйста, введите буквы, которые видны на изображении ниже ([[Special:Captcha/help|подробнее…]]):",
+ "fancycaptcha-imgcaptcha-ph": "Введите текст, который вы видите на картинке",
+ "fancycaptcha-sendemail": "В целях защиты от автоматического спама просим вас ввести слова, показанные ниже в рамке ([[Special:Captcha/help|подробнее…]]):",
+ "fancycaptcha-reload-text": "Обновить",
+ "apihelp-fancycaptchareload-description": "Получение новой FancyCaptcha.",
+ "apihelp-fancycaptchareload-summary": "Получение новой FancyCaptcha.",
+ "apihelp-fancycaptchareload-example-1": "Получить новую FancyCaptcha"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/rue.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/rue.json
new file mode 100644
index 00000000..dfa69ed7
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/rue.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": [
+ "Gazeb"
+ ]
+ },
+ "fancycaptcha-addurl": "Ваше едітованя обсягує новы одказы формов URL; про охорону перед автоматічным спамом мусите описати текст з наступного образку. ([[Special:Captcha/help|Што тото значіть?]])",
+ "fancycaptcha-badlogin": "В рамках охороны перед автоматічныма пробами угаднути гесло мусите описати текст з наступного образку. ([[Special:Captcha/help|Што тото значіть?]]):",
+ "fancycaptcha-captcha": "Перевірка беспекы",
+ "fancycaptcha-accountcreate": "В рамках охороны перед автоматічныма створёванями конт мусите про выконаня реґістрації описати текст з наступного образку. ([[Special:Captcha/help|Што тото значіть?]]):",
+ "fancycaptcha-create": "Жебы сьте могли створити сторінку, мусите описати текст з наступного образку:([[Special:Captcha/help|Што тото значіть?]])",
+ "fancycaptcha-edit": "Жебы сьте могли едітовати тоту сторінку, мусите описати текст з наступного образку: ([[Special:Captcha/help|Што тото значіть?]])",
+ "fancycaptcha-imgcaptcha-ph": "Опиште текст што видите высше",
+ "fancycaptcha-sendemail": "В рамках охороны перед автоматічным спамом мусите описати текст з наступного образку. ([[Special:Captcha/help|Што тото значіть?]]):"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/rup.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/rup.json
new file mode 100644
index 00000000..bde6ff13
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/rup.json
@@ -0,0 +1,5 @@
+{
+ "@metadata": [],
+ "fancycaptcha-captcha": "Duchimie (provâ) di securitati",
+ "fancycaptcha-imgcaptcha-ph": "Bagâ lu textu pi cari lu vedz disuprâ"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/sa.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/sa.json
new file mode 100644
index 00000000..65ca075a
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/sa.json
@@ -0,0 +1,17 @@
+{
+ "@metadata": {
+ "authors": [
+ "Shubha",
+ "NehalDaveND"
+ ]
+ },
+ "fancycaptcha-addurl": "भवतः सम्पादने नूतनबाह्यानुबन्धाः अन्तर्भूताः ।\nस्वचालितानिष्टसन्देशेभ्यः रक्षणस्य साहाय्यार्थं कृपया अधः मञ्जूषायां दृश्यमानानि पदानि लिखतु\n([[Special:Captcha/help|more info]]) :",
+ "fancycaptcha-badlogin": "स्वचालिताभ्यः कूटशब्दभेदनेभ्यः रक्षणस्य साहाय्यार्थं कृपया अधः मञ्जूषायां दृश्यमानानि पदानि लिखतु\n([[Special:Captcha/help|more info]]) :",
+ "fancycaptcha-captcha": "सुरक्षानिरीक्षणम्",
+ "fancycaptcha-accountcreate": "स्वचालितेभ्यः लेखासर्जनेभ्यः विकि-जालं रक्षयितुं वयं निवेदयामः यत्, कृपया अधः मञ्जूषायां दृश्यमानानि पदानि लिखन्तु\n([[Special:Captcha/help|more info]]) :",
+ "fancycaptcha-create": "पृष्ठस्य सर्जनाय, अधः मञ्जूषायां दृश्यमानानि पदानि लिखतु ([[Special:Captcha/help|more info]]):",
+ "fancycaptcha-edit": "अस्य पृष्ठस्य सम्पादनाय, अधः मञ्जूषायां दृश्यमानानि पदानि लिखतु ([[Special:Captcha/help|अधिक जानकारी]]):",
+ "fancycaptcha-imgcaptcha-ph": "चित्रे दृश्यमानाः वर्णाः लिख्यन्ताम्",
+ "fancycaptcha-sendemail": "स्वचालिताभ्यः अनिष्टसन्देशेभ्यः रक्षणस्य साहाय्यार्थं कृपया अधः मञ्जूषायां दृश्यमानानि पदानि लिखतु\n([[Special:Captcha/help|more info]]) :",
+ "fancycaptcha-reload-text": "नवीक्रियताम्"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/sah.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/sah.json
new file mode 100644
index 00000000..e5426ce6
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/sah.json
@@ -0,0 +1,16 @@
+{
+ "@metadata": {
+ "authors": [
+ "HalanTul"
+ ]
+ },
+ "fancycaptcha-addurl": "Эн көннөрүүҥ тас ыйынньыктаах эбит. Спаамтан көмүскэнэр соруктаах дьайыыны оҥор, манна баар тыллары хатылаа ([[Special:Captcha/help|сиһилии…]]):",
+ "fancycaptcha-badlogin": "Аһарыгы аптамаатынан алдьатыыттан көмүскэнэр дьайыыны оҥороргор көрдөһөбүт, манна ойууламмыт буукубалары хатылаа ([[Special:Captcha/help|сиһилии]]):",
+ "fancycaptcha-captcha": "Куттал суох буолуутун тургутуу",
+ "fancycaptcha-accountcreate": "Ааттары аптамаатынан бэлиэтиири суох оҥорор туһуттан, аллара көстөр тыллары хатылаа \n([[Special:Captcha/help|сиһилии]]):",
+ "fancycaptcha-create": "Эн көннөрүүҥ тас ыйынньыктардаах эбит. Спаамтан көмүскэнэр туһуттан манна баар тыллары хатылыыргар көрдөһөбүт ([[Special:Captcha/help|сиһилии…]]):",
+ "fancycaptcha-edit": "Эн көннөрүүҥ тас ыйынньыктардаах эбит. Спаамтан көмүскэнэр туһуттан манна баар тыллары хатылыыргар көрдөһөбүт ([[Special:Captcha/help|сиһилии…]]):",
+ "fancycaptcha-imgcaptcha-ph": "Ойууга көстөрү хатылаа",
+ "fancycaptcha-sendemail": "Аптамаат спаамтан көмүскэнэр дьайыыны оҥороргор көрдөһөбүт, манна ойууламмыт тыллары хатылаа ([[Special:Captcha/help|сиһилии]]):",
+ "fancycaptcha-reload-text": "Саҥарт"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/sat.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/sat.json
new file mode 100644
index 00000000..818bcdb2
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/sat.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "Albinus",
+ "Ramjit Tudu",
+ "Manik Soren"
+ ]
+ },
+ "fancycaptcha-captcha": "ᱥᱤᱠᱤᱣᱨᱤᱴᱤ ᱵᱤᱰᱟᱹᱣ",
+ "fancycaptcha-accountcreate": "ᱟᱡᱛᱮ ᱠᱷᱟᱛᱟ ᱛᱮᱭᱟᱨ ᱠᱷᱚᱱ ᱣᱤᱠᱤ ᱵᱟᱧᱪᱟᱣ ᱞᱟᱹᱜᱤᱫᱛᱮ, ᱞᱟᱛᱟᱨ ᱨᱮ ᱧᱮᱞᱚᱜ-ᱠᱟᱱ ᱵᱟᱠᱥᱟ ᱨᱮᱱᱟᱜ ᱚᱞ ᱟᱫᱮᱨ ᱞᱟᱹᱜᱤᱫ ᱞᱮ ᱱᱮᱦᱚᱸᱨᱮᱫ ᱢᱮᱭᱟ ([[Special:Captcha/help|ᱵᱟᱹᱲᱛᱤ ᱠᱟᱛᱷᱟ]]):",
+ "fancycaptcha-imgcaptcha-ph": "ᱪᱤᱛᱟᱹᱨᱨᱮ ᱡᱟᱸᱦᱟᱸᱢ ᱧᱮᱞ ᱫᱟ ᱚᱱᱟ ᱚᱞ ᱢᱮ",
+ "fancycaptcha-reload-text": "ᱯᱷᱟᱨᱱᱟᱣ"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/sc.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/sc.json
new file mode 100644
index 00000000..d52ca045
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/sc.json
@@ -0,0 +1,5 @@
+{
+ "@metadata": [],
+ "fancycaptcha-captcha": "Còmpudu de siguresa",
+ "fancycaptcha-imgcaptcha-ph": "Inseri su testu chi ses bidende in artu"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/scn.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/scn.json
new file mode 100644
index 00000000..1744241d
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/scn.json
@@ -0,0 +1,12 @@
+{
+ "@metadata": {
+ "authors": [
+ "Gmelfi",
+ "Pippinu"
+ ]
+ },
+ "fancycaptcha-captcha": "Cuntrollu di sicurizza",
+ "fancycaptcha-accountcreate": "Comu misura pricauzzionali contra li tintativa di riggistrazzioni automatica, t'addumannamu gintirmenti di nzirìri ntâ casedda cassutta li paroli ca cumpàrunu appressu ([[Special:Captcha/help|comu funziona?]]):",
+ "fancycaptcha-imgcaptcha-ph": "Nzirìsci lu testu ca vidi ccassupra",
+ "fancycaptcha-reload-text": "Aggiorna"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/sco.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/sco.json
new file mode 100644
index 00000000..c712c647
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/sco.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "AmaryllisGardener"
+ ]
+ },
+ "fancycaptcha-captcha": "Security check",
+ "fancycaptcha-accountcreate": "Tae pertect the wiki against automatit accoont creation, we kindly ask ye tae enter the wirds that appear ablo in the box ([[Special:Captcha/help|mair info]]):",
+ "fancycaptcha-imgcaptcha-ph": "Enter the text ye see on the eemage",
+ "fancycaptcha-reload-text": "Refresh"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/sd.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/sd.json
new file mode 100644
index 00000000..529060f6
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/sd.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "Mehtab ahmed"
+ ]
+ },
+ "fancycaptcha-captcha": "حفاظتي روڪ",
+ "fancycaptcha-accountcreate": "وڪيءَ کي خودڪار کاتن جي تخليق کان بچائڻ لاءِ، اسان توھان کي گذارش ڪريون ٿا تہ ھيٺ دبي ۾ نظر ايندڙ لفظ داخل ڪريو ([[Special:Captcha/help|وڌيڪ ڄاڻ]]):",
+ "fancycaptcha-imgcaptcha-ph": "عڪس ۾ ظاهر ٿيندڙ متن لکو",
+ "fancycaptcha-reload-text": "تازو ڪريو"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ses.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ses.json
new file mode 100644
index 00000000..18dbbf38
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ses.json
@@ -0,0 +1,5 @@
+{
+ "@metadata": [],
+ "fancycaptcha-captcha": "Saajaw korošiyan",
+ "fancycaptcha-imgcaptcha-ph": "Hantumoo kaŋ war ga dii y'a beene dam"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/sgs.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/sgs.json
new file mode 100644
index 00000000..bf225b60
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/sgs.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "Hugo.arg"
+ ]
+ },
+ "fancycaptcha-captcha": "Sargtėis patikrėnėms",
+ "fancycaptcha-accountcreate": "Ka wiki būtom apsergieta nu autuomatėška nauduotuojė padėrbėma ta Tamstas prašuom īrašītė žuodius, katrūs veizat apatiuo([[Special:Captcha/help|pagelba]]):",
+ "fancycaptcha-imgcaptcha-ph": "Ožrašīkėt znuokus, katrus veizat vėršou",
+ "fancycaptcha-reload-text": "Parkrautė"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/sh.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/sh.json
new file mode 100644
index 00000000..652dec48
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/sh.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "OC Ripper"
+ ]
+ },
+ "fancycaptcha-captcha": "Sigurnosna provjera",
+ "fancycaptcha-accountcreate": "Da bi zaštitili wiki od automatiziranog pravljenja računa, ljubazno Vas molimo da unesete riječi koje će se pojaviti u kutiji ispod ([[Special:Captcha/help|više informacija]]):",
+ "fancycaptcha-imgcaptcha-ph": "Unesite tekst koji vidite iznad",
+ "fancycaptcha-reload-text": "Osvježi"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/shn.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/shn.json
new file mode 100644
index 00000000..a5590814
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/shn.json
@@ -0,0 +1,12 @@
+{
+ "@metadata": {
+ "authors": [
+ "Saosukham",
+ "Saimawnkham"
+ ]
+ },
+ "fancycaptcha-captcha": "ၵူတ်ႇတူၺ်း လွင်ႈႁူမ်ႇလူမ်ႈ",
+ "fancycaptcha-accountcreate": "တႃႇၵႅတ်ႇၶႄႇ ဢၼ်ယႃႉၵဝ်းဝီႇၶီႇ မိူဝ်ႈႁဵတ်းဢၶွင်ႉ, ႁဝ်းၶႂ်ႈတုၵ်းယွၼ်း ၸဝ်ႈၵဝ်ႇ ႁႂ်ႈသႂ်ႇပၼ် တူဝ်လိၵ်ႈ ၸိူဝ်းဢွၵ်ႇမႃး တီႈၼႂ်းလွၵ်းတႂ်ႈၼႆႉ ([[Special:Captcha/help|more info]]):",
+ "fancycaptcha-imgcaptcha-ph": "ပေႃႉသႂ်ႇပၼ်လိၵ်ႈ ဢၼ်ၸဝ်ႈၵဝ်ႇ လႆႈႁၼ် ၵႃႈတီႈၼိူဝ် ၶႅပ်းႁၢင်ႈ",
+ "fancycaptcha-reload-text": "ၶိုၼ်းသၢၼ်ႉ"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/si.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/si.json
new file mode 100644
index 00000000..522f0d3a
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/si.json
@@ -0,0 +1,19 @@
+{
+ "@metadata": {
+ "authors": [
+ "Singhalawap",
+ "Thameera123",
+ "නන්දිමිතුරු",
+ "හරිත"
+ ]
+ },
+ "fancycaptcha-addurl": "ඔබගේ සංස්කරණයෙහි නව බාහිර සබැඳියන් අඩංගුයි.\nස්වයංක්‍රීය අයාචිත තැපෑලෙන් ආරක්ෂා වනු වස්, පහත පෙන්නුම් කෙරෙන වචන කොටුව තුල ඇතුලත් කරන්න ([[Special:Captcha/help|වැඩිමනත් තොරතුරු]]):",
+ "fancycaptcha-badlogin": "ස්වයංක්‍රීය මුරපද බිඳීම වලක්වනු වස්, පහත පෙන්නුම් කෙරෙන වචන කොටුව තුල ඇතුලත් කරන්න ([[Special:Captcha/help|වැඩිමනත් තොරතුරු]]):",
+ "fancycaptcha-captcha": "ආරක්‍ෂක පරික්‍ෂාව",
+ "fancycaptcha-accountcreate": "ස්වයංක්‍රීයව ගිණුම් තැනීමෙන් විකිය ආරක්ෂා කිරීමට, පහත පෙනෙන වචන කොටුව තුල ඇතුලත් කරන ලෙස ඉල්ලා සිටිමු ([[Special:Captcha/help|වැඩිමනත් තොරතුරු]]):",
+ "fancycaptcha-create": "පිටුව තනනු වස්, පහත පෙන්නුම් කෙරෙන වචන කොටුව තුල ඇතුලත් කරන්න ([[Special:Captcha/help|වැඩිමනත් තොරතුරු]]):",
+ "fancycaptcha-edit": "මෙම පිටුව සංස්කරණය කරනු වස්, පහත පෙන්නුම් කෙරෙන වචන කොටුව තුල ඇතුලත් කරන්න ([[Special:Captcha/help|වැඩිමනත් තොරතුරු]]):",
+ "fancycaptcha-imgcaptcha-ph": "ඉහත ඔබට පෙනෙන වචනය ඇතුළත් කරන්න",
+ "fancycaptcha-sendemail": "ස්වයංක්‍රීය ස්පෑම් කිරීම්වලින් ආරක්ෂා කිරීම සඳහා උදව් වීමට පහත කොටුවේ පෙන්වන වචන ඇතුළත් කරන්න ([[Special:Captcha/help|more info]]):",
+ "fancycaptcha-reload-text": "Refresh කරන්න"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/sk.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/sk.json
new file mode 100644
index 00000000..b68c2f60
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/sk.json
@@ -0,0 +1,18 @@
+{
+ "@metadata": {
+ "authors": [
+ "Helix84",
+ "Teslaton",
+ "TomášPolonec"
+ ]
+ },
+ "fancycaptcha-addurl": "Vaša úprava obsahuje nové URL odkazy; kvôli ochrane proti automatizovanému spamu je potrebné napísať slová zobrazené na tomto obrázku: <br />([[Special:Captcha/help|Čo je toto?]])",
+ "fancycaptcha-badlogin": "Ako ochranu proti automatizovanému lámaniu hesiel, prosím zadajte slová z nasledujúceho obrázka do poľa pre odpoveď ([[Special:Captcha/help|viac informácií]]):",
+ "fancycaptcha-captcha": "Bezpečnostná kontrola",
+ "fancycaptcha-accountcreate": "Kvôli ochrane proti automatizovanému spamu je potrebné napísať slová zobrazené na tomto obrázku, až potom bude vytvorený nový účet: <br />([[Special:Captcha/help|Čo je toto?]])",
+ "fancycaptcha-create": "Vaša úprava obsahuje nové URL odkazy; kvôli ochrane proti automatizovanému spamu je potrebné napísať slová zobrazené na tomto obrázku: <br />([[Special:Captcha/help|Čo je toto?]])",
+ "fancycaptcha-edit": "Vaša úprava obsahuje nové URL odkazy; kvôli ochrane proti automatizovanému spamu je potrebné napísať slová zobrazené na tomto obrázku: <br />([[Special:Captcha/help|Čo je toto?]])",
+ "fancycaptcha-imgcaptcha-ph": "Zadajte text, ktorý vidíte na obrázku",
+ "fancycaptcha-sendemail": "Ako ochranu proti automatizovanému spamu, prosím zadajte slová z nasledujúceho obrázka do poľa pre odpoveď ([[Special:Captcha/help|ďalšie informácie]]):",
+ "fancycaptcha-reload-text": "Vygenerovať nový kód"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/skr-arab.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/skr-arab.json
new file mode 100644
index 00000000..dffcb4b9
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/skr-arab.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "Saraiki"
+ ]
+ },
+ "fancycaptcha-captcha": "حفاظتی تدبیر",
+ "fancycaptcha-imgcaptcha-ph": "فوٹو وچ نظرݨ آلی لکھت درج کرو",
+ "fancycaptcha-reload-text": "سجرا، تازہ کرو",
+ "apihelp-fancycaptchareload-description": "نواں سوہݨاکیپچا گھنو",
+ "apihelp-fancycaptchareload-summary": "نواں سوہݨاکیپچا گھنو",
+ "apihelp-fancycaptchareload-example-1": "نواں سوہݨاکیپچا گھنو"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/sl.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/sl.json
new file mode 100644
index 00000000..9dced237
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/sl.json
@@ -0,0 +1,18 @@
+{
+ "@metadata": {
+ "authors": [
+ "Dbc334"
+ ]
+ },
+ "fancycaptcha-addurl": "Vaše urejanje vključuje nove zunanje povezave.\nZaradi zaščite wikija pred samodejnim smetjem vas prijazno naprošamo, da vnesete spodnje besede v polje ([[Special:Captcha/help|več informacij]]):",
+ "fancycaptcha-badlogin": "Zaradi zaščite wikija pred samodejnim ugotavljanjem gesel vas prijazno naprošamo, da vnesete spodnje besede v polje ([[Special:Captcha/help|več informacij]]):",
+ "fancycaptcha-captcha": "Varnostno preverjanje",
+ "fancycaptcha-accountcreate": "Zaradi zaščite wikija pred samodejnim ustvarjanjem računov vas prijazno naprošamo, da vnesete spodnje besede v polje ([[Special:Captcha/help|več informacij]]):",
+ "fancycaptcha-create": "Če želite ustvariti stran, prosimo vnesite spodnje besede v polje ([[Special:Captcha/help|več informacij]]):",
+ "fancycaptcha-edit": "Če želite urediti stran, prosimo vnesite spodnje besede v polje ([[Special:Captcha/help|več informacij]]):",
+ "fancycaptcha-imgcaptcha-ph": "Vnesite besedilo, ki ga vidite na sliki",
+ "fancycaptcha-sendemail": "Zaradi zaščite wikija pred samodejnim smetenjem vas prijazno naprošamo, da vnesete spodnje besede v polje ([[Special:Captcha/help|več informacij]]):",
+ "fancycaptcha-reload-text": "Osveži",
+ "apihelp-fancycaptchareload-description": "Pridobi novo FancyCaptcha.",
+ "apihelp-fancycaptchareload-example-1": "Pridobi novo FancyCaptcha"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/so.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/so.json
new file mode 100644
index 00000000..c397c1ba
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/so.json
@@ -0,0 +1,10 @@
+{
+ "@metadata": {
+ "authors": [
+ "Abshirdheere"
+ ]
+ },
+ "fancycaptcha-captcha": "Hubin amni",
+ "fancycaptcha-accountcreate": "Si aad u caawiso dhowritaanka in la iska samaysto Akoon,Fadlan meelaha banaan buux buuxi ee hoostaan ah ([[Special:Captcha/help|Macluumaad dheeraad ah]]):",
+ "fancycaptcha-imgcaptcha-ph": "Gali qoraalka aad kor ku aragto"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/sq.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/sq.json
new file mode 100644
index 00000000..09f5b826
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/sq.json
@@ -0,0 +1,20 @@
+{
+ "@metadata": {
+ "authors": [
+ "Dori",
+ "Olsi",
+ "Liridon",
+ "Kosovastar",
+ "Arianit"
+ ]
+ },
+ "fancycaptcha-addurl": "Redaktimi juaj ka lidhje URL të reja dhe si mbrojtje kundër abuzimeve automatike duhet të shtypni çfarë shfaqet tek figura e mëposhtme:<br /> ([[Special:Captcha|Çfarë është kjo?]])",
+ "fancycaptcha-badlogin": "Për tu mbrojtur nga metoda automatike të gjetjes së fjalëkalimeve ju kërkojmë të vendosni fjalët e figurës në kuti ([[Special:Captcha/help|më shumë informacion]]):",
+ "fancycaptcha-captcha": "Kontroll sigurie",
+ "fancycaptcha-accountcreate": "Për të mbrojtur wiki kundër krijimit të llogarive të automatizuara, ne mirësisht ju kërkojmë që të shkruani fjalët që shfaqen në kutinë poshtë ([[Special:Captcha/help|më shumë info]]):",
+ "fancycaptcha-create": "Për të krijuar një faqe, ju lutem shtypni çfarë shfaqet tek figura e mëposhtme ([[Special:Captcha|Çfarë është kjo?]]):",
+ "fancycaptcha-edit": "Për ta redaktuar këtë faqe të lutem fut fjalët që shfaqen tek figura e mëposhtme([[Special:Captcha/help|Çfarë është kjo?]]):",
+ "fancycaptcha-imgcaptcha-ph": "Shkruani tekstin që shihni në imazh",
+ "fancycaptcha-sendemail": "Për t'u mbrojtur nga metoda automatike e gjetjes së fjalëkalimeve ju kërkojmë të vendosni fjalët e figurës në kuti ([[Special:Captcha/help|më shumë informacion]]):",
+ "fancycaptcha-reload-text": "Rifresko"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/sr-ec.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/sr-ec.json
new file mode 100644
index 00000000..6a52e1fe
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/sr-ec.json
@@ -0,0 +1,24 @@
+{
+ "@metadata": {
+ "authors": [
+ "Millosh",
+ "Rancher",
+ "Жељко Тодоровић",
+ "Михајло Анђелковић",
+ "Milicevic01",
+ "Srdjan m",
+ "Сербијана",
+ "Obsuser"
+ ]
+ },
+ "fancycaptcha-desc": "Обогаћен стварач сликовног кода за потврду уређивања",
+ "fancycaptcha-addurl": "Ваша измена садржи нове спољашње везе.\nУ циљу заштите од непожељних порука, унесите речи са слике у поље испод ([[Special:Captcha/help|више информација]]):",
+ "fancycaptcha-badlogin": "Ради заштите од аутоматизованог разбијања шифри, унесите речи са слике у поље испод ([[Special:Captcha/help|више информација]]):",
+ "fancycaptcha-captcha": "Сигурносна провера",
+ "fancycaptcha-accountcreate": "У циљу заштите од аутоматског отварања налога, унесите речи са слике у поље испод ([[Special:Captcha/help|више информација]]):",
+ "fancycaptcha-create": "Да бисте направили страницу, унесите речи са слике у поље испод ([[Special:Captcha/help|више информација]]):",
+ "fancycaptcha-edit": "Да бисте уредили ову страницу, унесите речи са слике у поље испод ([[Special:Captcha/help|више информација]]):",
+ "fancycaptcha-imgcaptcha-ph": "Унесите текст",
+ "fancycaptcha-sendemail": "У циљу заштите од непожељних порука, унесите речи са слике у поље испод ([[Special:Captcha/help|више информација]]):",
+ "fancycaptcha-reload-text": "освежи"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/sr-el.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/sr-el.json
new file mode 100644
index 00000000..87743c13
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/sr-el.json
@@ -0,0 +1,21 @@
+{
+ "@metadata": {
+ "authors": [
+ "Michaello",
+ "Жељко Тодоровић",
+ "Milicevic01",
+ "Srdjan m",
+ "Сербијана"
+ ]
+ },
+ "fancycaptcha-desc": "Obogaćen stvarač slikovnog koda za potvrdu uređivanja",
+ "fancycaptcha-addurl": "Vaša izmena sadrži nove spoljašnje veze.\nU cilju zaštite od nepoželjnih poruka, unesite reči sa slike u polje ispod ([[Special:Captcha/help|više informacija]]):",
+ "fancycaptcha-badlogin": "Radi zaštite od automatizovanog razbijanja šifri, unesite reči sa slike u polje ispod ([[Special:Captcha/help|više informacija]]):",
+ "fancycaptcha-captcha": "Sigurnosna provera",
+ "fancycaptcha-accountcreate": "U cilju zaštite od automatskog otvaranja naloga, unesite reči sa slike u polje ispod ([[Special:Captcha/help|više informacija]]):",
+ "fancycaptcha-create": "Da bi se napravila stranica, potrebno je uneti reči koje se nalaze ispod kutije ([[Special:Captcha/help|detaljnije]]):",
+ "fancycaptcha-edit": "Za izmenu ove strane unesi reči koje se nalaze ispod kutije ([[Special:Captcha/help|detaljnije]]):",
+ "fancycaptcha-imgcaptcha-ph": "Unesite tekst koji vidite na slici",
+ "fancycaptcha-sendemail": "U cilju zaštite od nepoželjnih poruka, unesite reči sa slike u polje ispod ([[Special:Captcha/help|više informacija]]):",
+ "fancycaptcha-reload-text": "osveži"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/stq.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/stq.json
new file mode 100644
index 00000000..0f8780ab
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/stq.json
@@ -0,0 +1,12 @@
+{
+ "@metadata": {
+ "authors": [
+ "Pyt"
+ ]
+ },
+ "fancycaptcha-addurl": "Dien Beoarbaidenge änthaalt näie externe Ferbiendengen.\nTou Skuts foar automatisierde Spamminge reek dät foulgjende Woud in dät Fäild ien.\nKlik dan fonnäien ap „Siede spiekerje“ [[Special:Captcha/help|(Froagen of Probleme?)]].",
+ "fancycaptcha-badlogin": "Toun Skuts foar ne Kompromittierenge fon dien Benutserkonto reek dät foulgjende Woud in dät Fäild hierunner ien [[Special:Captcha/help|(Froagen of Probleme?)]]:",
+ "fancycaptcha-accountcreate": "Toun Skuts foar automatisierde Anloage fon Benutserkonten reek dät foulgjende Woud in dät Fäild hierunner ien [[Special:Captcha/help|(Froagen of Probleme?)]].",
+ "fancycaptcha-create": "Tou dät Moakjen fon ju Siede reek dät foulgjende Woud in dät Fäild hierunner ien\n[[Special:Captcha/help|(Froagen of Probleme?)]].",
+ "fancycaptcha-edit": "Tou Beoarbaidenge fon disse Siede reek dät foulgjende Woud in dät Fäild hierunner ien\n[[Special:Captcha/help|(Froagen of Probleme?)]]."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/sty.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/sty.json
new file mode 100644
index 00000000..8dee08d8
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/sty.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "Khanmarat"
+ ]
+ },
+ "fancycaptcha-captcha": "Ҡауапсыслыҡны тикшереү",
+ "fancycaptcha-accountcreate": "Иcәп йасмаларны автоматик регистрациялаутан саҡлар өцөн, астытағы рамката күргәселгән сүсләрне йасыуығысны сурайбыс ([[Special:Captcha/help|тулыраҡ]]):",
+ "fancycaptcha-imgcaptcha-ph": "Сүрәттә күренәтеген текстны кергесең",
+ "fancycaptcha-reload-text": "Йаңартҡалы"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/su.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/su.json
new file mode 100644
index 00000000..536fa864
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/su.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Irwangatot",
+ "Kandar",
+ "Uchup19"
+ ]
+ },
+ "fancycaptcha-captcha": "Pamariksaan kaamanan",
+ "fancycaptcha-accountcreate": "Pikeun ngajaga wikina tina akun jieunan otomatis, mangga asupkeun kecap anu némbongan dina kotak di handap ([[Special:Captcha/help|émbaran leuwih lengkep]]):",
+ "fancycaptcha-edit": "Pikeun ngédit ieu kaca, mangga asupkeun kecap-kecap anu némbongan dina kotak ([[Special:Captcha/help|salengkepna]]):",
+ "fancycaptcha-imgcaptcha-ph": "Asupkeun téks anu kabaca dina gambar",
+ "fancycaptcha-reload-text": "Segerkeun"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/sv.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/sv.json
new file mode 100644
index 00000000..0aa12e68
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/sv.json
@@ -0,0 +1,23 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ainali",
+ "Thurs",
+ "WikiPhoenix",
+ "Lokal Profil",
+ "Jopparn"
+ ]
+ },
+ "fancycaptcha-addurl": "Din ändring innehåller nya externa länkar.\nFör att skydda wikin mot automatisk spam ber vi dig att skriva orden som visas nedan i rutan ([[Special:Captcha/help|mer information]]):",
+ "fancycaptcha-badlogin": "För att skydda wikin mot automatiserad lösenordsknäckning ber vi dig att skriva\norden som visas nedan i rutan ([[Special:Captcha/help|mer information]]):",
+ "fancycaptcha-captcha": "Säkerhetskontroll",
+ "fancycaptcha-accountcreate": "För att skydda wikin mot automatskapade användarkonton ber vi dig att\nskriva orden som visas nedan i rutan ([[Special:Captcha/help|mer information]]):",
+ "fancycaptcha-create": "För att skapa den här sidan måste du först skriva orden som visas nedan i rutan\n([[Special:Captcha/help|mer information]]):",
+ "fancycaptcha-edit": "För att redigera den här sidan måste du först skriva orden som visas nedan i rutan\n([[Special:Captcha/help|mer information]]):",
+ "fancycaptcha-imgcaptcha-ph": "Fyll i texten du ser på bilden",
+ "fancycaptcha-sendemail": "För att skydda wikin mot automatiserad spam ber vi dig att skriva orden som visas nedan i rutan ([[Special:Captcha/help|mer information]]):",
+ "fancycaptcha-reload-text": "Uppdatera",
+ "apihelp-fancycaptchareload-description": "Hämta en ny FancyCaptcha.",
+ "apihelp-fancycaptchareload-summary": "Hämta en ny FancyCaptcha.",
+ "apihelp-fancycaptchareload-example-1": "Hämta en ny FancyCaptcha."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/sw.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/sw.json
new file mode 100644
index 00000000..8020a1b2
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/sw.json
@@ -0,0 +1,5 @@
+{
+ "@metadata": [],
+ "fancycaptcha-captcha": "Kuangalia usalama",
+ "fancycaptcha-imgcaptcha-ph": "Ingiza maandishi unayoyaona hapo juu"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/szl.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/szl.json
new file mode 100644
index 00000000..e9371e02
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/szl.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "Krol111"
+ ]
+ },
+ "fancycaptcha-captcha": "Zicherkontrola",
+ "fancycaptcha-accountcreate": "Coby chrůńić Wikipedyje uod automatycznygo tworzyńo kůnt prośimy Ća, wszkryflej tekst kery půńiżyj widisz we tekstowy plac ([[Special:Captcha/help|wjyncyj informacyji]])",
+ "fancycaptcha-imgcaptcha-ph": "Wszkryflej tekst, kery widoć powyżyj",
+ "fancycaptcha-reload-text": "Uodśwjyż"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ta.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ta.json
new file mode 100644
index 00000000..278ce0d7
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ta.json
@@ -0,0 +1,17 @@
+{
+ "@metadata": {
+ "authors": [
+ "Shanmugamp7",
+ "மதனாஹரன்",
+ "Jayarathina",
+ "தமிழ்க்குரிசில்"
+ ]
+ },
+ "fancycaptcha-badlogin": "தானியங்கு கடவுச் சொல் உடைத்தலிலிருந்து பாதுகாக்க உதவுவதற்காகத் தயவு செய்து கீழேயுள்ள பெட்டியில் தோன்றும் சொற்களை உள்ளிடவும் ([[Special:Captcha/help|கூடிய தகவல்]]):",
+ "fancycaptcha-captcha": "பாதுகாப்பு சோதனை",
+ "fancycaptcha-accountcreate": "தானியங்கியாக கணக்கு உருவாக்குவதிலிருந்து விக்கியினைப்பாதுகாக்க, தயவுசெய்து கீழே தெரியும் வார்த்தைகளை பெட்டியில் உள்ளிடவும் ([[Special:Captcha/help|மேலும் விவரங்களுக்கு]]):",
+ "fancycaptcha-create": "பக்கத்தை உருவாக்குவதற்காக, தயவு செய்து கீழே பெட்டியில் தோன்றுகின்ற சொற்களை உள்ளிடுங்கள் ([[Special:Captcha/help|கூடிய தகவல்]]):",
+ "fancycaptcha-edit": "இப்பக்கத்தைத் தொகுப்பதற்குத் தயவு செய்து கீழேயுள்ள பெட்டியில் தோன்றும் சொற்களை உள்ளிடவும் ([[Special:Captcha/help|கூடிய தகவல்]]):",
+ "fancycaptcha-imgcaptcha-ph": "மேலே காணும் உரையை உள்ளிடுக",
+ "fancycaptcha-reload-text": "புதுப்பி"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/tay.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/tay.json
new file mode 100644
index 00000000..dc2dedec
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/tay.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "Translatealcd"
+ ]
+ },
+ "fancycaptcha-captcha": "Kinsa’ squw musa’ niya’ sk’anzeng",
+ "fancycaptcha-accountcreate": "Yaquw kana wahiy ’mubu’ na iwan nasyup ruw, ana simuw galan cikay ryax maha brwaniy squw cyux niya syan sa bbrwan qutux quw lalu’ su’,ini’ ga pzyux biru’([[Special:Captcha/help|pzyux na Cryaw(pzyux cikay na Cryaw)]]):",
+ "fancycaptcha-imgcaptcha-ph": "Brwaniy quw biru’ na kintan su’ sa Syasing qaniy",
+ "fancycaptcha-reload-text": "T’aring sm’r’zyut"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/tcy.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/tcy.json
new file mode 100644
index 00000000..af87bbf3
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/tcy.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "VASANTH S.N.",
+ "Soundarya shetty s",
+ "Vishwanatha Badikana",
+ "Kiranpoojary"
+ ]
+ },
+ "fancycaptcha-captcha": "ಬದ್ರತೆದ ಪರೀಕ್ಷೆ",
+ "fancycaptcha-accountcreate": "ಅಟೋಮೆಟಿಕಾದ್ ಸದಸ್ಯೆರೆ ಖಾತೆ ಉಂಡಾಪಿನೆನ್ ಉಂತಾಯೆರೆಗಾದ್, ತಿರ್ತ್ ತೋಜಿದ್ ಬರ್ಪುನ ಪದೊಕುಲೆನ್ ಚೌಕದುಲಯಿ ಬರೆಯೊಡು ಪಂದ್ ಎಂಕುಲು ಮೋಕೆಡ್ ಕೇಂಡೊಂದುಲ್ಲ ([[Special:Captcha/help|ದಿಂಜದ ಮಾಹಿತಿ]]):",
+ "fancycaptcha-imgcaptcha-ph": "ಚಿತ್ರೊಡು ತೋಜುನ ಪಟ್ಯೊನು ಬರೆಲೆ",
+ "fancycaptcha-reload-text": "ರಿಫ್ರೆಶ್ ಮಲ್ಪುಲೆ"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/te.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/te.json
new file mode 100644
index 00000000..a59e6516
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/te.json
@@ -0,0 +1,17 @@
+{
+ "@metadata": {
+ "authors": [
+ "Mpradeep",
+ "రహ్మానుద్దీన్",
+ "WP MANIKHANTA"
+ ]
+ },
+ "fancycaptcha-addurl": "మీ దిద్దుబాటులో కొత్త బయటి లింకులున్నాయి. బాట్లద్వారా చేసే స్పాము నుండి రక్షణను ఏర్పరచేందుకు గాను,\nకింద కనిపించే బొమ్మలోని అక్షరాలను పెట్టెలో రాయండి ([[Special:Captcha/help|మరింత సమాచారం]]):",
+ "fancycaptcha-badlogin": "సంకేత పదాలను దొంగిలించే ఆటోమాటిక్ ప్రోగ్రాముల నుండి రక్షించేందుకు గాను, కింద కనిపించే బొమ్మలోని అక్షరాలను పెట్టెలో రాయండి ([[Special:Captcha/help|మరింత సమాచారం]]):",
+ "fancycaptcha-captcha": "భద్రతా తనిఖీ",
+ "fancycaptcha-accountcreate": "ఆటోమాటిగ్గా ఖాతాలను సృష్టించడాన్ని నివారించేందుకు, కింద కనిపించే పదాలను ఈ పెట్టెలో వ్రాయండి ([[Special:Captcha/help|మరింత సహాయం]]):",
+ "fancycaptcha-create": "కొత్త పేజీ సృష్టించేందుకు గాను, కింద కనిపించే బొమ్మలోని అక్షరాలను పెట్టెలో రాయండి\n([[Special:Captcha/help|మరింత సమాచారం]]):",
+ "fancycaptcha-edit": "ఈ పేజీలో దిద్దుబాటు చేసేందుకు, కింద కనిపించే బొమ్మలోని అక్షరాలను పెట్టెలో రాయండి\n([[Special:Captcha/help|మరింత సమాచారం]]):",
+ "fancycaptcha-imgcaptcha-ph": "బొమ్మ పైన కనబడే పాఠ్యాన్ని నమోదు చెయ్యండి",
+ "fancycaptcha-reload-text": "తాజాపరుచు"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/tg-cyrl.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/tg-cyrl.json
new file mode 100644
index 00000000..aa366d57
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/tg-cyrl.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ibrahim"
+ ]
+ },
+ "fancycaptcha-addurl": "Вироиши шумо пайвандҳои ҷадиди хориҷиро дар бар мегирад. Барои кӯмак ба пешгири аз ҳаразнигори худкор, лутфан вожаеро ки дар тасвир мебинед, ворид кунед ([[Special:Captcha/help|иттилооти бештар]]):",
+ "fancycaptcha-badlogin": "Барои кӯмак ба пешгири аз шикастани худкори калимаҳои убур, вожаеро ки дар тасвир мебинед, ворид кунед ([[Special:Captcha/help|иттилооти бештар]]):",
+ "fancycaptcha-captcha": "Бозрасии амниятӣ",
+ "fancycaptcha-accountcreate": "Барои кӯмак аз эҷоди худкори ҳисоби корбарӣ, вожаеро ки дар тасвир мебинед, ворид кунед ([[Special:Captcha/help|иттилооти бештар]]):",
+ "fancycaptcha-create": "Барои эҷоди саҳифа, вожаеро ки дар тасвир мебинед, ворид кунед ([[Special:Captcha/help|иттилооти бештар]]):",
+ "fancycaptcha-edit": "Барои вироиши ин саҳифа, вожаеро ки дар тасвир мебинед, ворид кунед ([[Special:Captcha/help|иттилооти бештар]]):",
+ "fancycaptcha-imgcaptcha-ph": "Матни болоро ворид кунед",
+ "fancycaptcha-reload-text": "Азнавкунӣ"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/tg-latn.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/tg-latn.json
new file mode 100644
index 00000000..629dd1b7
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/tg-latn.json
@@ -0,0 +1,12 @@
+{
+ "@metadata": {
+ "authors": [
+ "Liangent"
+ ]
+ },
+ "fancycaptcha-addurl": "Viroişi şumo pajvandhoi çadidi xoriçiro dar bar megirad. Baroi kūmak ba peşgiri az haraznigori xudkor, lutfan voƶaero ki dar tasvir mebined, vorid kuned ([[Special:Captcha/help|ittilooti beştar]]):",
+ "fancycaptcha-badlogin": "Baroi kūmak ba peşgiri az şikastani xudkori kalimahoi ubur, voƶaero ki dar tasvir mebined, vorid kuned ([[Special:Captcha/help|ittilooti beştar]]):",
+ "fancycaptcha-accountcreate": "Baroi kūmak az eçodi xudkori hisobi korbarī, voƶaero ki dar tasvir mebined, vorid kuned ([[Special:Captcha/help|ittilooti beştar]]):",
+ "fancycaptcha-create": "Baroi eçodi sahifa, voƶaero ki dar tasvir mebined, vorid kuned ([[Special:Captcha/help|ittilooti beştar]]):",
+ "fancycaptcha-edit": "Baroi viroişi in sahifa, voƶaero ki dar tasvir mebined, vorid kuned ([[Special:Captcha/help|ittilooti beştar]]):"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/th.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/th.json
new file mode 100644
index 00000000..6c2fc441
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/th.json
@@ -0,0 +1,18 @@
+{
+ "@metadata": {
+ "authors": [
+ "Harley Hartwell",
+ "Horus",
+ "Pon44695"
+ ]
+ },
+ "fancycaptcha-addurl": "การแก้ไขของคุณมีการเพิ่มลิงก์ไปเว็บไซต์อื่น \nเพื่อป้องกันวิกินี้จากสแปมอัตโนมัติ กรุณาพิมพ์ข้อความที่คุณเห็นด้านล่างในกล่องที่กำหนด ([[Special:Captcha/help|ข้อมูลเพิ่มเติม]])",
+ "fancycaptcha-badlogin": "เพื่อป้องกันวิกินี้จากการเจาะรหัสผ่าน กรุณาพิมพ์ข้อความที่คุณเห็นด้านล่างในกล่องที่กำหนด ([[Special:Captcha/help|ข้อมูลเพิ่มเติม]])",
+ "fancycaptcha-captcha": "ตรวจสอบความปลอดภัย",
+ "fancycaptcha-accountcreate": "เพื่อป้องกันวิกินี้จากการสร้างบัญชีอัตโนมัติ กรุณาพิมพ์ข้อความที่คุณเห็นด้านล่างในกล่องที่กำหนด ([[Special:Captcha/help|ข้อมูลเพิ่มเติม]])",
+ "fancycaptcha-create": "เพื่อสร้างหน้านี้ กรุณาพิมพ์ข้อความที่คุณเห็นด้านล่างลงในกล่องที่กำหนดให้ ([[Special:Captcha/help|ข้อมูลเพิ่มเติม]])",
+ "fancycaptcha-edit": "เพื่อแก้ไขหน้านี้ กรุณาพิมพ์ข้อความที่คุณเห็นด้านล่างลงในกล่องที่กำหนดให้ ([[Special:Captcha/help|ข้อมูลเพิ่มเติม]])",
+ "fancycaptcha-imgcaptcha-ph": "กรอกข้อความที่คุณเห็นในภาพ",
+ "fancycaptcha-sendemail": "เพื่อป้องกันวิกินี้จากสแปมอัตโนมัติ กรุณาพิมพ์ข้อความที่คุณเห็นด้านล่างในกล่องที่กำหนด ([[Special:Captcha/help|ข้อมูลเพิ่มเติม]])",
+ "fancycaptcha-reload-text": "รีเฟรช"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/tk.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/tk.json
new file mode 100644
index 00000000..cc4b0ce5
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/tk.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "Hanberke"
+ ]
+ },
+ "fancycaptcha-badlogin": "Awtomatik parol döwülmeginden goranmak üçin, aşakdaky sözleri gutunyň içine ýazyň ([[Special:Captcha/help|jikme-jik]]):",
+ "fancycaptcha-accountcreate": "Hasaby awtomatik parol döwülmeginden goramak üçin, aşakdaky sözleri gutunyň içine ýazyň ([[Special:Captcha/help|jikme-jik]]):",
+ "fancycaptcha-create": "Sahypa döretmek üçin, aşakdaky sözleri gutunyň içine ýazyň ([[Special:Captcha/help|jikme-jik]]):",
+ "fancycaptcha-edit": "Bu sahypany redaktirlemek üçin, aşakdaky sözleri gutunyň içine ýazyň ([[Special:Captcha/help|jikme-jik]]):"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/tl.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/tl.json
new file mode 100644
index 00000000..898bd518
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/tl.json
@@ -0,0 +1,17 @@
+{
+ "@metadata": {
+ "authors": [
+ "AnakngAraw",
+ "LR Guanzon"
+ ]
+ },
+ "fancycaptcha-desc": "Kaakit-akit na panlikha ng CAPTCHA para sa Pagtiyak ng Pagbago",
+ "fancycaptcha-addurl": "Kabilang sa ginawa mong pagbabago ang bagong panlabas na mga kawing.\nUpang makatulong sa pagsasanggalang laban sa kusang pinapadalang mga \"manlulusob\" (''spam''), pakilagay lamang ang mga salitang lumitaw sa ibaba papasok sa loob ng kahon ([[Special:Captcha/help|mas marami pang kabatiran]]):",
+ "fancycaptcha-badlogin": "Upang makatulong sa pagsasanggalang laban sa mga kusang paglutas ng hudyat, pakilagay lamang ang mga salitang lumitaw sa ibaba patungo sa loob ng kahon ([[Special:Captcha/help|mas marami pang kabatiran]]):",
+ "fancycaptcha-captcha": "Siyasatin ang seguridad",
+ "fancycaptcha-accountcreate": "Upang makatulong sa pagsasanggalang laban sa kusang paglikha ng kuwenta/akawnt, pakilagay lamang ang mga salitang lumitaw sa ibaba patungo sa loob ng kahon ([[Special:Captcha/help|mas marami pang kabatiran]]):",
+ "fancycaptcha-create": "Upang malikha ang pahina, pakilagay lamang ang mga salitang lumitaw sa ibaba patungo sa loob ng kahon ([[Special:Captcha/help|mas marami pang kabatiran]]):",
+ "fancycaptcha-edit": "Upang mabago ang pahinang ito, pakilagay lamang ang mga salitang lumitaw sa ibaba patungo sa loob ng kahon ([[Special:Captcha/help|mas marami pang kabatiran]]):",
+ "fancycaptcha-imgcaptcha-ph": "Ilagay ang tekstong makikita sa litrato.",
+ "fancycaptcha-sendemail": "Upang makatulong sa pagsasanggalang laban sa mga kusang pagsalakay ng ispam, pakilagay lamang ang mga salitang lumilitaw sa ibaba sa loob ng kahong ([[Special:Captcha/help|marami pang kabatiran]]):"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/tr.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/tr.json
new file mode 100644
index 00000000..48a68207
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/tr.json
@@ -0,0 +1,23 @@
+{
+ "@metadata": {
+ "authors": [
+ "Emperyan",
+ "Joseph",
+ "Runningfridgesrule",
+ "Stultiwikia",
+ "Arystanbek",
+ "Kumkumuk"
+ ]
+ },
+ "fancycaptcha-addurl": "Değişikliğiniz yeni dış bağlantılar içeriyor.\nVikiyi otomatik spamdan korumak için, aşağıdaki sözcükleri kutunun içine yazmanızı rica ediyoruz ([[Special:Captcha/help|ayrıntılı bilgi]]):",
+ "fancycaptcha-badlogin": "Vikiyi otomatik parola kırma yöntemine karşı korumak için, aşağıdaki sözcükleri kutunun içine yazmanızı rica ediyoruz ([[Special:Captcha/help|ayrıntılı bilgi]]):",
+ "fancycaptcha-captcha": "Güvenlik kontrolü",
+ "fancycaptcha-accountcreate": "Vikiyi otomatik hesap oluşturmaya karşı korumak için, aşağıdaki kutuda beliren sözcükleri yazmanızı rica ediyoruz ([[Special:Captcha/help|ayrıntılı bilgi]]):",
+ "fancycaptcha-create": "Sayfayı oluşturmak için, lütfen aşağıdaki kutuda görünen kelimeleri girin ([[Special:Captcha/help|daha fazla bilgi]]):",
+ "fancycaptcha-edit": "Bu sayfayı değiştirmek için, lütfen aşağıdaki kutuda görünen kelimeleri girin ([[Special:Captcha/help|daha fazla bilgi]]):",
+ "fancycaptcha-imgcaptcha-ph": "Resimde gördüğünüz karakterleri giriniz",
+ "fancycaptcha-sendemail": "Vikiyi otomatik spamlerden korumak için, aşağıdaki sözcükleri kutunun içine yazmanızı rica ediyoruz ([[Special:Captcha/help|ayrıntılı bilgi]]):",
+ "fancycaptcha-reload-text": "Yenile",
+ "apihelp-fancycaptchareload-description": "Yeni bir FancyCaptcha.",
+ "apihelp-fancycaptchareload-example-1": "Yeni bir FancyCaptcha olsun"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/tt-cyrl.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/tt-cyrl.json
new file mode 100644
index 00000000..416e6bde
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/tt-cyrl.json
@@ -0,0 +1,12 @@
+{
+ "@metadata": {
+ "authors": [
+ "Derslek",
+ "Ильнар"
+ ]
+ },
+ "fancycaptcha-captcha": "Саклыкны тикшерү",
+ "fancycaptcha-accountcreate": "Кулланучы язмалары автоматик рәвештә ясалудан саклар өчен, почмакта курәсәтелгән сузләрне кертүне сорыйбыз ([[Special:Captcha/help|тулырак…]]):",
+ "fancycaptcha-imgcaptcha-ph": "Рәсемдә күрсәтелгән текстны кертегез",
+ "fancycaptcha-reload-text": "Яңарту"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/tt-latn.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/tt-latn.json
new file mode 100644
index 00000000..d6cefda2
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/tt-latn.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Frhdkazan"
+ ]
+ },
+ "fancycaptcha-reload-text": "Yañartu"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/tyv.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/tyv.json
new file mode 100644
index 00000000..d81a43e7
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/tyv.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Монгуш Салим"
+ ]
+ },
+ "fancycaptcha-reload-text": "Чаартыр"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/udm.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/udm.json
new file mode 100644
index 00000000..3380590b
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/udm.json
@@ -0,0 +1,12 @@
+{
+ "@metadata": {
+ "authors": [
+ "Irus",
+ "Wadorgurt"
+ ]
+ },
+ "fancycaptcha-captcha": "Кышкыттэмлыкез эскерон",
+ "fancycaptcha-accountcreate": "Учётной записьёсыз автоматической кылдытонлэсь викиез возьман понна куриськомы тӥледыз гожтыны кылъёсыз, кудъёсыз адӟиськизы улӥ рамкаын ([[Special:Captcha/help|тупенгес…]]):",
+ "fancycaptcha-imgcaptcha-ph": "Гожтэ текстэз, кудзэ тӥ суредын адӟиськоды",
+ "fancycaptcha-reload-text": "Выльдыны"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ug-arab.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ug-arab.json
new file mode 100644
index 00000000..d3492df9
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ug-arab.json
@@ -0,0 +1,10 @@
+{
+ "@metadata": {
+ "authors": [
+ "Uzdil"
+ ]
+ },
+ "fancycaptcha-captcha": "بىخەتەرلىك تەكشۈرۈش",
+ "fancycaptcha-imgcaptcha-ph": "ئۈستىدىكى رەسىمدە كۆرگەن يېزىقنى كىرگۈزۈڭ",
+ "fancycaptcha-reload-text": "يېڭىلاش"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/uk.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/uk.json
new file mode 100644
index 00000000..394484f1
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/uk.json
@@ -0,0 +1,26 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ahonc",
+ "Andriykopanytsia",
+ "Base",
+ "Dim Grits",
+ "Ytsukeng Fyvaprol",
+ "Ата",
+ "Piramidion"
+ ]
+ },
+ "fancycaptcha-desc": "Чудернацький CAPTCHA-генератор для підтвердження редагування",
+ "fancycaptcha-addurl": "Ваше редагування містить нові зовнішні посилання.\nІз метою захисту вікі від спаму просимо вас ввести у текстове поле слова, зображені на картинці ([[Special:Captcha/help|докладніше]]):",
+ "fancycaptcha-badlogin": "Із метою захисту вікі від автоматичного злому пароля, просимо вас ввести у текстове поле слова, зображені на картинці ([[Special:Captcha/help|докладніше]]):",
+ "fancycaptcha-captcha": "Перевірка безпеки",
+ "fancycaptcha-accountcreate": "Із метою захисту вікі від автоматичного створення облікових записів, просимо вас ввести у текстове поле слова, зображені на картинці ([[Special:Captcha/help|докладніше]]):",
+ "fancycaptcha-create": "Щоб створити сторінку, будь ласка, введіть у текстове поле слова, зображені на картинці: ([[Special:Captcha/help|докладніше]]):",
+ "fancycaptcha-edit": "Щоб редагувати цю сторінку, будь ласка, введіть у текстове поле слова, зображені на картинці: ([[Special:Captcha/help|докладніше]]):",
+ "fancycaptcha-imgcaptcha-ph": "Введіть текст, який Ви бачите на зображенні",
+ "fancycaptcha-sendemail": "Для захисту вікі від автоматичного спаму просимо вас ввести слова, які показані нижче в полі ([[Special:Captcha/help|more info]]):",
+ "fancycaptcha-reload-text": "Оновити",
+ "apihelp-fancycaptchareload-description": "Отримати нову FancyCaptcha.",
+ "apihelp-fancycaptchareload-summary": "Отримати нову FancyCaptcha.",
+ "apihelp-fancycaptchareload-example-1": "Отримати нову FancyCaptcha"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ur.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ur.json
new file mode 100644
index 00000000..74679592
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/ur.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "عثمان خان شاہ",
+ "محمد افضل",
+ "Muhammad Shuaib"
+ ]
+ },
+ "fancycaptcha-captcha": "حفاظتی تدبیر",
+ "fancycaptcha-accountcreate": "خودکار کھاتہ سازی سے اس ویکی کو تحفظ فراہم کرنے کے لیے ہماری آپ سے درخواست ہے کہ براہ کرم ذیل میں موجود خانہ میں نظر آنے والے الفاظ درج کریں ([[Special:Captcha/help|مزید معلومات]]):",
+ "fancycaptcha-imgcaptcha-ph": "تصویر میں نظر آنے والا متن درج کریں",
+ "fancycaptcha-reload-text": "تازہ کریں"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/uz.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/uz.json
new file mode 100644
index 00000000..d27e9236
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/uz.json
@@ -0,0 +1,10 @@
+{
+ "@metadata": {
+ "authors": [
+ "Sociologist"
+ ]
+ },
+ "fancycaptcha-captcha": "Xavfsizlik tekshiruvi",
+ "fancycaptcha-imgcaptcha-ph": "Yuqoridagi yozuvni bu yerga kiriting",
+ "fancycaptcha-reload-text": "Yangilash"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/vec.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/vec.json
new file mode 100644
index 00000000..cd5d2a1c
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/vec.json
@@ -0,0 +1,16 @@
+{
+ "@metadata": {
+ "authors": [
+ "Candalua"
+ ]
+ },
+ "fancycaptcha-addurl": "La to modifica la include dei novi colegamenti esterni.\nPar jutarne a conbàtar el spam, par piaser inserissi ne la casela le parole che vien fora qua soto ([[Special:Captcha/help|magiori informazion]]):",
+ "fancycaptcha-badlogin": "Par precauzion contro i tentativi de forzatura automatica de le password, par piaser inserissi ne la casela le parole che vien fora qua soto ([[Special:Captcha/help|magiori informazion]]):",
+ "fancycaptcha-captcha": "Controlo de sicuresa",
+ "fancycaptcha-accountcreate": "Par deféndar la wiki da la creazion automatica dei account, te domandemo par piaser de inserir ne la casela le parole che vien fora qua soto ([[Special:Captcha/help|piassè informazion]]):",
+ "fancycaptcha-create": "Par crear la pagina, par piaser inserissi ne la casela le parole che vien fora qua soto ([[Special:Captcha/help|magiori informazion]]):",
+ "fancycaptcha-edit": "Par modificar la pagina, par piaser inserissi ne la casela le parole che vien fora qua soto ([[Special:Captcha/help|magiori informazion]]):",
+ "fancycaptcha-imgcaptcha-ph": "Scrivi el testo che te vedi in te la figura",
+ "fancycaptcha-sendemail": "Par precauzion contro i tentativi de forzatura automatica de le password, par piaser inserissi ne la casela le parole che vien fora qua soto ([[Special:Captcha/help|magiori informazion]]):",
+ "fancycaptcha-reload-text": "Ajorna"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/vep.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/vep.json
new file mode 100644
index 00000000..12dac80b
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/vep.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ghiutun"
+ ]
+ },
+ "fancycaptcha-captcha": "Varuitomuden kodvind",
+ "fancycaptcha-imgcaptcha-ph": "Kirjutagat tekst, kudamb kacut kuval"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/vi.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/vi.json
new file mode 100644
index 00000000..f7cff454
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/vi.json
@@ -0,0 +1,22 @@
+{
+ "@metadata": {
+ "authors": [
+ "Cheers!",
+ "Minh Nguyen",
+ "Vinhtantran",
+ "Nguyên Lê"
+ ]
+ },
+ "fancycaptcha-desc": "Trình sản xuất hình CAPTCHA đặc biệt cho ConfirmEdit",
+ "fancycaptcha-addurl": "Sửa đổi của bạn có chứa các liên kết ngoài. Để giúp chúng tôi chống lại spam tự động, xin vui lòng nhập những từ xuất hiện ở dưới vào ô ([[Special:Captcha/help|thông tin thêm]]):",
+ "fancycaptcha-badlogin": "Để giúp chúng tôi tránh bẻ mật khẩu tự động, xin vui lòng nhập những từ xuất hiện ở dưới vào ô ([[Special:Captcha/help|thông tin thêm]]):",
+ "fancycaptcha-captcha": "Kiểm tra an ninh",
+ "fancycaptcha-accountcreate": "Để giúp chúng tôi tránh mở tài khoản tự động, xin vui lòng nhập những chữ xuất hiện ở dưới vào ô ([[Special:Captcha/help|thông tin thêm]]):",
+ "fancycaptcha-create": "Để tạo trang, xin hãy nhập những chữ xuất hiện ở dưới vào ô ([[Special:Captcha/help|thông tin thêm]]):",
+ "fancycaptcha-edit": "Để sửa trang này, xin hãy nhập những từ xuất hiện ở dưới vào ô ([[Special:Captcha/help|thông tin thêm]]):",
+ "fancycaptcha-imgcaptcha-ph": "Nhập dòng chữ bạn thấy ở trong hình",
+ "fancycaptcha-sendemail": "Để giúp chúng tôi chống lại spam tự động, xin vui lòng nhập những từ xuất hiện ở dưới vào ô ([[Special:Captcha/help|thông tin thêm]]):",
+ "fancycaptcha-reload-text": "Làm tươi",
+ "apihelp-fancycaptchareload-description": "Lấy FancyCaptcha mới.",
+ "apihelp-fancycaptchareload-example-1": "Lấy FancyCaptcha mới."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/vo.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/vo.json
new file mode 100644
index 00000000..794f882a
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/vo.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "Smeira"
+ ]
+ },
+ "fancycaptcha-addurl": "Redakam olik keninükon yümis plödik nulik. Ad jelön siti ta peneds itjäfidik, penolös vödis sököl in bokil ([[Special:Captcha/help|nüns pluik]]):",
+ "fancycaptcha-badlogin": "Ad jelön siti ta daget itjäfidik letavödas, penolös, begö! vödis dono pejonölis in bokil ([[Special:Captcha/help|nüns pluik]]):",
+ "fancycaptcha-accountcreate": "Ad jelön siti ta kalijafam itjäfidik, penolös, begö! vödis dono pejonölis in bokil ([[Special:Captcha/help|nüns pluik]]):",
+ "fancycaptcha-create": "Ad jafön padi at, penolös, begö! vödis dono pejonöls in bokil ([[Special:Captcha/help|nüns pluik]]):",
+ "fancycaptcha-edit": "Ad redakön padi at, penolös, begö! vödis dono pejonölis ini bokil ([[Special:Captcha/help|nüns pluik]]):",
+ "fancycaptcha-imgcaptcha-ph": "Penolöd vödemi, keli logol löpo"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/vro.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/vro.json
new file mode 100644
index 00000000..593c45b5
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/vro.json
@@ -0,0 +1,12 @@
+{
+ "@metadata": {
+ "authors": [
+ "Võrok"
+ ]
+ },
+ "fancycaptcha-badlogin": "Salasõna automaatsõ vällänuhkmisõ vasta kirodaq pildi päält sõnaq alanolõvahe kasti\n([[Special:Captcha/help|Abiteedüs]]):",
+ "fancycaptcha-captcha": "Kaitsõkontroll",
+ "fancycaptcha-accountcreate": "Olõq hää, kirodaq alanpuul kastin olõvaq sõnaq. Seo om kaitsõs kontodõ automaatsõ luumisõ iist ([[Special:Captcha/help|lisateedüs]]):",
+ "fancycaptcha-imgcaptcha-ph": "Kirodaq seo tekst, midä tan näet",
+ "fancycaptcha-reload-text": "Vaihtaq"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/wa.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/wa.json
new file mode 100644
index 00000000..e5545b79
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/wa.json
@@ -0,0 +1,19 @@
+{
+ "@metadata": {
+ "authors": [
+ "Srtxg",
+ "Reptilien.19831209BE1"
+ ]
+ },
+ "fancycaptcha-addurl": "Dins vos candjmints i gn a des dfoûtrinnès hårdêyes (URL).\nPo mete li wiki a houte des robots di spam, nos vs dimandans d' bén vleur acertiner ki vos estoz bén ene djin, po çoula tapez les mots k' aparexhèt chal pa dzo ([[Special:Captcha/help|pus di racsegnes]]):",
+ "fancycaptcha-badlogin": "Po mete li wiki a houte des des robots ki sayèt d' adviner les screts, nos vs dimandans d' bén vleur acertiner ki vos estoz bén ene djin, po çoula tapez les mots k' aperexhèt chal pa dzo ([[Special:Captcha/help|pus di racsegnes]]):",
+ "fancycaptcha-captcha": "Acertinaedje di såvrité",
+ "fancycaptcha-accountcreate": "Po mete li wiki a houte des robots k' ahivèt des contes otomaticmint, nos vs dimandans d' bén vleur acertiner ki vos estoz bén ene djin, po çoula tapez les mots k' aparexhèt chal pa dzo ([[Special:Captcha/help|pus di racsegnes]]):",
+ "fancycaptcha-create": "Por vos poleur ahiver l' pådje, vos dvoz taper les mots k' aparexhèt e l' boesse chal pa dzo ([[Special:Captcha/help|pus di racsegnes]]):",
+ "fancycaptcha-edit": "Po candjî cisse pådje ci, vos dvoz taper les mots k' aparexhèt e l' boesse chal pa dzo ([[Special:Captcha/help|pus di racsegnes]]):",
+ "fancycaptcha-imgcaptcha-ph": "Tapez l' tecse ki vos veyoz so l' imådje",
+ "fancycaptcha-sendemail": "Po s' mete a houte des robots di spam, nos vs dimandans d' acertiner ki vos estoz bén ene djin, po çoula tapez les mots k' aparexhèt chal pa dzo ([[Special:Captcha/help|pus di racsegnes]]):",
+ "fancycaptcha-reload-text": "Rafrister",
+ "apihelp-fancycaptchareload-description": "Vey èn ôte FancyCaptcha.",
+ "apihelp-fancycaptchareload-example-1": "Vey èn ôte FancyCaptcha"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/war.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/war.json
new file mode 100644
index 00000000..2191b402
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/war.json
@@ -0,0 +1,12 @@
+{
+ "@metadata": {
+ "authors": [
+ "JinJian",
+ "Harvzsf"
+ ]
+ },
+ "fancycaptcha-captcha": "Pagkita han seguridad",
+ "fancycaptcha-accountcreate": "Para maprotektahan an wiki kontra hin automated account creation, nahangyo kami nga igbutang an mga nakasurat nga nagawas ha ubos han kahon ([[Special:Captcha/help|dugang nga impormasyon]]):",
+ "fancycaptcha-imgcaptcha-ph": "Igbutang an sinurat nga nakikita mo didâ hit hulágway",
+ "fancycaptcha-reload-text": "Refresh"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/wo.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/wo.json
new file mode 100644
index 00000000..7e8c124b
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/wo.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ibou"
+ ]
+ },
+ "fancycaptcha-captcha": "Caytug kaaraange",
+ "fancycaptcha-accountcreate": "Ngir aar wiki bi ci sosum sàq ci anam gu boppu, Danu laay ñaan nga duggal baat yiy feeñ ci néeg biy toftal \n([[Special:Captcha/help|yeneeni xibaar]]):",
+ "fancycaptcha-imgcaptcha-ph": "Duggalal mbind miy toftal mi ngay gis",
+ "fancycaptcha-reload-text": "Yeesal"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/wuu.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/wuu.json
new file mode 100644
index 00000000..e42dbc31
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/wuu.json
@@ -0,0 +1,12 @@
+{
+ "@metadata": {
+ "authors": [
+ "Poiuyt",
+ "飞舞回堂前"
+ ]
+ },
+ "fancycaptcha-captcha": "安全检查",
+ "fancycaptcha-accountcreate": "为著保护本站弗畀自动化建账号,阿拉要麻烦侬输入下底只框里向显示个文字([[Special:Captcha/help|更多信息]]):",
+ "fancycaptcha-imgcaptcha-ph": "拿图片上个文字打勒里",
+ "fancycaptcha-reload-text": "刷新"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/xmf.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/xmf.json
new file mode 100644
index 00000000..01de998e
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/xmf.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "Silovan"
+ ]
+ },
+ "fancycaptcha-captcha": "თხილუაშ კონტროლი",
+ "fancycaptcha-accountcreate": "ვიკიშ ანგარიშეფიშ ავტომატური რეგისტრაციაშე თხილუაშ ღანკით, ჩქი ალაიჩანთ, გენშიჸონათ მოჩამილი სიმბოლოეფი ტექსტურ ველს ([[Special:Captcha/help|დეტალურო]]):",
+ "fancycaptcha-imgcaptcha-ph": "გემშიონით ჟი მოჩამილი ტექსტი",
+ "fancycaptcha-reload-text": "გოახალაფა"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/yi.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/yi.json
new file mode 100644
index 00000000..4260b4f0
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/yi.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "פוילישער"
+ ]
+ },
+ "fancycaptcha-captcha": "פארזיכערן קאנטראל",
+ "fancycaptcha-accountcreate": "צו שיצן די וויקי קעגן שאַפֿן קאנטעס אויטאמאַטיש, בעטן מיר אײַך אריינקלאַפן די ווערטער אונטן אינעם קעסטל. ([[Special:Captcha/help|נאך אינפֿארמאַציע]]):",
+ "fancycaptcha-create": "צו שאַפֿן דעם בלאַט, זײַט אזוי גוט און קלאַפט אַרײַן די ווערטער וואָס זענען אינעם קעסטל אונטן ([[Special:Captcha/help|מער אינפֿארמאַציע]]):",
+ "fancycaptcha-edit": "צו רעדאִקטירן דעם בלאַט, זײַט אזוי גוט און קלאַפט אַרײַן די ווערטער וואָס שטייען אינעם קעסטל אונטן ([[Special:Captcha/help|מער אינפֿארמאַציע]]):",
+ "fancycaptcha-imgcaptcha-ph": "קלאפט ארײַן דעם טעקסט איר זעט אויפֿן בילד",
+ "fancycaptcha-reload-text": "דערפֿרישן"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/yo.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/yo.json
new file mode 100644
index 00000000..83a4ea4e
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/yo.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "Demmy",
+ "Wikicology"
+ ]
+ },
+ "fancycaptcha-addurl": "Àwọn àtúnṣe yín ní àwọn ìjápọ̀ òde nínú.\nLáti ṣèránwọ́ láti kojú spam aṣefúnrararẹ̀, ẹ jọ̀wọ́ ẹ fi àwọn ọ̀rọ̀ tí wọ́n hàn nísàlẹ̀ sínú ààyè ([[Special:Captcha/help|ẹ̀kúnrẹ́rẹ́]]):",
+ "fancycaptcha-captcha": "Àyẹ̀wò àbò",
+ "fancycaptcha-accountcreate": "Kí a lè dá ààbò bo wiki yìí lọ́wọ́ àdààṣe ìdá oníṣẹ́, a rọ̀ yín wípé kí ẹ tẹ àwọn ọ̀rọ̀ tí ẹ rí nínú àpótí tí ó wà ní ìsàlẹ̀ yìí ([[Special:Captcha/help|àlàyé síwájú si]]):",
+ "fancycaptcha-imgcaptcha-ph": "Ẹ kọ ìkọ̀rọ̀ tí ẹ rí lókè",
+ "fancycaptcha-reload-text": "Tún ojú ewé ṣí"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/yue.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/yue.json
new file mode 100644
index 00000000..32ced56b
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/yue.json
@@ -0,0 +1,20 @@
+{
+ "@metadata": {
+ "authors": [
+ "Yueman",
+ "Ktchankt"
+ ]
+ },
+ "fancycaptcha-addurl": "你嘅編輯包括咗新嘅出面連結。\n為咗防止自動化嘅濫貼,請響下面個盒度輸入下面嘅字 ([[Special:Captcha/help|更多資訊]]):",
+ "fancycaptcha-badlogin": "為咗防止不當程式破解密碼,請響下面個盒度輸入下面嘅字 ([[Special:Captcha/help|更多資訊]]):",
+ "fancycaptcha-captcha": "安全檢查",
+ "fancycaptcha-accountcreate": "為咗防止自動化開新戶口,請響下面個盒度輸入下面嘅文字 ([[Special:Captcha/help|更多資訊]]):",
+ "fancycaptcha-create": "要開一個新版,請響下面個盒度輸入下面嘅文字 ([[Special:Captcha/help|更多資訊]]):",
+ "fancycaptcha-edit": "要編輯呢一版,請響下面個盒度輸入下面嘅文字 ([[Special:Captcha/help|更多資訊]]):",
+ "fancycaptcha-imgcaptcha-ph": "入你喺幅圖見到嘅字",
+ "fancycaptcha-sendemail": "為咗防止自動化嘅濫貼,請響下面個盒度輸入下面嘅字 ([[Special:Captcha/help|更多資訊]]):",
+ "fancycaptcha-reload-text": "重新整理",
+ "apihelp-fancycaptchareload-description": "攞個新FancyCaptcha。",
+ "apihelp-fancycaptchareload-summary": "攞個新FancyCaptcha。",
+ "apihelp-fancycaptchareload-example-1": "攞個新FancyCaptcha。"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/zgh.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/zgh.json
new file mode 100644
index 00000000..7749dce1
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/zgh.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "Brahim-essaidi"
+ ]
+ },
+ "fancycaptcha-imgcaptcha-ph": "ⴰⵔⴰ ⴰⴹⵔⵉⵚ ⴷⴰ ⵜⵥⵔⵔⴰⴷ ⴳ ⵜⵡⵍⴰⴼⵜ",
+ "fancycaptcha-reload-text": "ⵙⵎⴰⵢⵏⵓ"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/zh-hans.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/zh-hans.json
new file mode 100644
index 00000000..f98cb4a4
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/zh-hans.json
@@ -0,0 +1,24 @@
+{
+ "@metadata": {
+ "authors": [
+ "Bencmq",
+ "Cwek",
+ "Mywood",
+ "Impersonator 1",
+ "Liuxinyu970226"
+ ]
+ },
+ "fancycaptcha-desc": "用于确认编辑的扭曲验证码生成器",
+ "fancycaptcha-addurl": "您的编辑包含新的外部链接。为保护本wiki免受自动垃圾程序的破坏,我们恳请您输入下面方框中显示的文字([[Special:Captcha/help|更多信息]]):",
+ "fancycaptcha-badlogin": "为保护本wiki免受自动密码破解的破坏,我们恳请你输入下面方框中显示的文字([[Special:Captcha/help|更多信息]]):",
+ "fancycaptcha-captcha": "安全检查",
+ "fancycaptcha-accountcreate": "为保护本wiki免受自动账户创建的破坏,我们恳请您输入下面方框中显示的文字([[Special:Captcha/help|更多信息]]):",
+ "fancycaptcha-create": "要创建页面,请输入下面方框中显示的文字([[Special:Captcha/help|更多信息]]):",
+ "fancycaptcha-edit": "要编辑该页面,请输入下面方框中显示的文字([[Special:Captcha/help|更多信息]]):",
+ "fancycaptcha-imgcaptcha-ph": "请输入您在图片中看见的文字",
+ "fancycaptcha-sendemail": "为保护本wiki免受自动垃圾程序的破坏,我们恳请您输入下面方框中显示的文字([[Special:Captcha/help|更多信息]]):",
+ "fancycaptcha-reload-text": "刷新",
+ "apihelp-fancycaptchareload-description": "获得一个新的FancyCaptcha。",
+ "apihelp-fancycaptchareload-summary": "获得一个新的FancyCaptcha。",
+ "apihelp-fancycaptchareload-example-1": "获得一个新的FancyCaptcha"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/zh-hant.json b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/zh-hant.json
new file mode 100644
index 00000000..5278ee4f
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/i18n/zh-hant.json
@@ -0,0 +1,26 @@
+{
+ "@metadata": {
+ "authors": [
+ "Horacewai2",
+ "Justincheng12345",
+ "Liuxinyu970226",
+ "Waihorace",
+ "Cwlin0416",
+ "LNDDYL",
+ "Suchichi02",
+ "Kly"
+ ]
+ },
+ "fancycaptcha-addurl": "您的編輯使用了新的外部連結。\n為了防止垃圾編輯程式,我們要麻煩您輸入在下面的方框中顯示的單字 ([[Special:Captcha/help|更多資訊]]):",
+ "fancycaptcha-badlogin": "為了防止密碼破解程式,我們要麻煩您輸入在下面的方框中顯示的單字 ([[Special:Captcha/help|更多資訊]]):",
+ "fancycaptcha-captcha": "安全性檢查",
+ "fancycaptcha-accountcreate": "為了防止自動註冊程式,我們要麻煩您輸入在下面的方框中顯示的單字 ([[Special:Captcha/help|更多資訊]]):",
+ "fancycaptcha-create": "為了防止自動建立頁面程式,我們要麻煩您輸入在下面的方框中顯示的單字 ([[Special:Captcha/help|更多資訊]]):",
+ "fancycaptcha-edit": "若要編輯此頁面,請輸入在下面的方框中顯示的單字 ([[Special:Captcha/help|更多資訊]]):",
+ "fancycaptcha-imgcaptcha-ph": "輸入您在圖中看到的文字",
+ "fancycaptcha-sendemail": "為了防止垃圾編輯程式,我們要麻煩您輸入在下面的方框中顯示的單字 ([[Special:Captcha/help|更多資訊]]):",
+ "fancycaptcha-reload-text": "重新整理",
+ "apihelp-fancycaptchareload-description": "取得新 FancyCaptcha。",
+ "apihelp-fancycaptchareload-summary": "取得新的 FancyCaptcha。",
+ "apihelp-fancycaptchareload-example-1": "取得新 FancyCaptcha。"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/resources/ext.confirmEdit.fancyCaptcha.css b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/resources/ext.confirmEdit.fancyCaptcha.css
new file mode 100644
index 00000000..3be89338
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/resources/ext.confirmEdit.fancyCaptcha.css
@@ -0,0 +1,42 @@
+.fancycaptcha-wrapper {
+ display: table;
+ background-color: #fff;
+}
+
+/* Prevents the size of the container from changing, affecting page
+layout, for normal CAPTCHA sizes. */
+.fancycaptcha-image-container {
+ min-height: 95px;
+ position: relative; /* to position Reload link within this */
+ display: inline-block;
+}
+
+.fancycaptcha-reload {
+ /* @embed */
+ background: url( images/fancycaptcha-reload-icon.png ) no-repeat scroll left center transparent;
+
+ margin: 0 0 0 3px;
+ padding: 1px 2px 1px 12px;
+ color: #0645ad;
+ cursor: pointer;
+ cursor: hand;
+}
+
+.client-nojs .fancycaptcha-reload {
+ display: none;
+}
+
+.fancycaptcha-reload:hover {
+ text-decoration: underline;
+}
+
+.fancycaptcha-reload-loading {
+ /* @embed */
+ background: url( images/ajax-loader-10x10.gif ) no-repeat scroll left center transparent;
+}
+
+.fancycaptcha-image-container .fancycaptcha-reload {
+ position: absolute;
+ bottom: 0;
+ right: 4px;
+}
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/resources/ext.confirmEdit.fancyCaptcha.js b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/resources/ext.confirmEdit.fancyCaptcha.js
new file mode 100644
index 00000000..689c88ec
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/resources/ext.confirmEdit.fancyCaptcha.js
@@ -0,0 +1,33 @@
+( function ( $, mw ) {
+ $( document ).on( 'click', '.fancycaptcha-reload', function () {
+ var $this = $( this ),
+ $root = $this.closest( '.fancycaptcha-captcha-container' ),
+ $captchaImage = $root.find( '.fancycaptcha-image' );
+
+ $this.addClass( 'fancycaptcha-reload-loading' );
+
+ // AJAX request to get captcha index key
+ new mw.Api().post( { action: 'fancycaptchareload' } ).done( function ( data ) {
+ var captchaIndex = data.fancycaptchareload.index,
+ imgSrc;
+ if ( typeof captchaIndex === 'string' ) {
+ // replace index key with a new one for captcha image
+ imgSrc = $captchaImage.attr( 'src' ).replace( /(wpCaptchaId=)\w+/, '$1' + captchaIndex );
+ $captchaImage.attr( 'src', imgSrc );
+
+ // replace index key with a new one for hidden tag
+ $( '#mw-input-captchaId' ).val( captchaIndex );
+ $( '#mw-input-captchaWord' ).val( '' ).focus();
+
+ // now do the same with a selector that works for pre-1.27 login forms
+ $root.find( '[name="wpCaptchaId"]' ).val( captchaIndex );
+ $root.find( '[name="wpCaptchaWord"]' ).val( '' ).focus();
+ }
+ } )
+ .always( function () {
+ $this.removeClass( 'fancycaptcha-reload-loading' );
+ } );
+
+ return false;
+ } );
+}( jQuery, mediaWiki ) );
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/resources/images/ajax-loader-10x10.gif b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/resources/images/ajax-loader-10x10.gif
new file mode 100644
index 00000000..772e9a55
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/resources/images/ajax-loader-10x10.gif
Binary files differ
diff --git a/www/wiki/extensions/ConfirmEdit/FancyCaptcha/resources/images/fancycaptcha-reload-icon.png b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/resources/images/fancycaptcha-reload-icon.png
new file mode 100644
index 00000000..e894aa87
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/FancyCaptcha/resources/images/fancycaptcha-reload-icon.png
Binary files differ
diff --git a/www/wiki/extensions/ConfirmEdit/Gruntfile.js b/www/wiki/extensions/ConfirmEdit/Gruntfile.js
new file mode 100644
index 00000000..9154a45f
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/Gruntfile.js
@@ -0,0 +1,41 @@
+/* eslint-env node */
+module.exports = function ( grunt ) {
+ grunt.loadNpmTasks( 'grunt-banana-checker' );
+ grunt.loadNpmTasks( 'grunt-jsonlint' );
+ grunt.loadNpmTasks( 'grunt-eslint' );
+ grunt.loadNpmTasks( 'grunt-stylelint' );
+
+ grunt.initConfig( {
+ eslint: {
+ all: [
+ '**/*.js',
+ '!node_modules/**',
+ '!vendor/**'
+ ]
+ },
+ stylelint: {
+ all: [
+ '**/*.css',
+ '!node_modules/**',
+ '!vendor/**'
+ ]
+ },
+ banana: {
+ all: [
+ 'i18n/',
+ '**/i18n/'
+ ]
+ },
+ jsonlint: {
+ all: [
+ '*.json',
+ '**/*.json',
+ '!node_modules/**',
+ '!vendor/**'
+ ]
+ }
+ } );
+
+ grunt.registerTask( 'test', [ 'eslint', 'stylelint', 'jsonlint', 'banana' ] );
+ grunt.registerTask( 'default', 'test' );
+};
diff --git a/www/wiki/extensions/ConfirmEdit/MathCaptcha.php b/www/wiki/extensions/ConfirmEdit/MathCaptcha.php
new file mode 100644
index 00000000..dd34d53e
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/MathCaptcha.php
@@ -0,0 +1,2 @@
+<?php
+require_once __DIR__ . "/MathCaptcha/MathCaptcha.php";
diff --git a/www/wiki/extensions/ConfirmEdit/MathCaptcha/MathCaptcha.class.php b/www/wiki/extensions/ConfirmEdit/MathCaptcha/MathCaptcha.class.php
new file mode 100644
index 00000000..0c7dee0a
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/MathCaptcha/MathCaptcha.class.php
@@ -0,0 +1,126 @@
+<?php
+
+use MediaWiki\Auth\AuthenticationRequest;
+
+class MathCaptcha extends SimpleCaptcha {
+
+ /**
+ * Validate a captcha response
+ * @param string $answer
+ * @param array $info
+ * @return bool
+ */
+ function keyMatch( $answer, $info ) {
+ return (int)$answer == (int)$info['answer'];
+ }
+
+ /**
+ * @param array &$resultArr
+ */
+ function addCaptchaAPI( &$resultArr ) {
+ list( $sum, $answer ) = $this->pickSum();
+ $html = $this->fetchMath( $sum );
+ $index = $this->storeCaptcha( [ 'answer' => $answer ] );
+ $resultArr['captcha'] = $this->describeCaptchaType();
+ $resultArr['captcha']['id'] = $index;
+ $resultArr['captcha']['question'] = $html;
+ }
+
+ /**
+ * @return array
+ */
+ public function describeCaptchaType() {
+ return [
+ 'type' => 'math',
+ 'mime' => 'text/html',
+ ];
+ }
+
+ /**
+ * @param int $tabIndex
+ * @return array
+ */
+ function getFormInformation( $tabIndex = 1 ) {
+ list( $sum, $answer ) = $this->pickSum();
+ $index = $this->storeCaptcha( [ 'answer' => $answer ] );
+
+ $form = '<table><tr><td>' . $this->fetchMath( $sum ) . '</td>';
+ $form .= '<td>' . Html::input( 'wpCaptchaWord', false, false, [
+ 'tabindex' => $tabIndex,
+ 'autocomplete' => 'off',
+ 'required'
+ ] ) . '</td></tr></table>';
+ $form .= Html::hidden( 'wpCaptchaId', $index );
+ return [ 'html' => $form ];
+ }
+
+ /**
+ * Pick a random sum
+ * @return array
+ */
+ function pickSum() {
+ $a = mt_rand( 0, 100 );
+ $b = mt_rand( 0, 10 );
+ $op = mt_rand( 0, 1 ) ? '+' : '-';
+ $sum = "{$a} {$op} {$b} = ";
+ $ans = $op == '+' ? ( $a + $b ) : ( $a - $b );
+ return [ $sum, $ans ];
+ }
+
+ /**
+ * Fetch the math
+ * @param int $sum
+ * @return string
+ */
+ function fetchMath( $sum ) {
+ if ( class_exists( 'MathRenderer' ) ) {
+ $math = MathRenderer::getRenderer( $sum, [], 'png' );
+ } else {
+ throw new LogicException(
+ 'MathCaptcha requires the Math extension for MediaWiki versions 1.18 and above.' );
+ }
+ $math->render();
+ $html = $math->getHtmlOutput();
+ return preg_replace( '/alt=".*?"/', '', $html );
+ }
+
+ /**
+ * @return array
+ */
+ public function getCaptcha() {
+ list( $sum, $answer ) = $this->pickSum();
+ return [ 'question' => $sum, 'answer' => $answer ];
+ }
+
+ /**
+ * @param array $captchaData
+ * @param string $id
+ * @return mixed
+ */
+ public function getCaptchaInfo( $captchaData, $id ) {
+ $sum = $captchaData['question'];
+ return $this->fetchMath( $sum );
+ }
+
+ /**
+ * @param array $requests
+ * @param array $fieldInfo
+ * @param array &$formDescriptor
+ * @param string $action
+ */
+ public function onAuthChangeFormFields( array $requests, array $fieldInfo,
+ array &$formDescriptor, $action ) {
+ /** @var CaptchaAuthenticationRequest $req */
+ $req = AuthenticationRequest::getRequestByClass(
+ $requests,
+ CaptchaAuthenticationRequest::class,
+ true
+ );
+ if ( !$req ) {
+ return;
+ }
+
+ $formDescriptor['captchaInfo']['raw'] = true;
+ $formDescriptor['captchaWord']['label-message'] = null;
+ }
+}
diff --git a/www/wiki/extensions/ConfirmEdit/MathCaptcha/MathCaptcha.php b/www/wiki/extensions/ConfirmEdit/MathCaptcha/MathCaptcha.php
new file mode 100644
index 00000000..7a5ef8da
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/MathCaptcha/MathCaptcha.php
@@ -0,0 +1,14 @@
+<?php
+if ( function_exists( 'wfLoadExtension' ) ) {
+ wfLoadExtension( 'ConfirmEdit/MathCaptcha' );
+ // Keep i18n globals so mergeMessageFileList.php doesn't break
+ $wgMessagesDirs['MathCaptcha'] = __DIR__ . '/i18n';
+ /* wfWarn(
+ 'Deprecated PHP entry point used for MathCaptcha extension. ' .
+ 'Please use wfLoadExtension instead, ' .
+ 'see https://www.mediawiki.org/wiki/Extension_registration for more details.'
+ ); */
+ return;
+} else {
+ die( 'This version of the MathCaptcha extension requires MediaWiki 1.25+' );
+}
diff --git a/www/wiki/extensions/ConfirmEdit/MathCaptcha/extension.json b/www/wiki/extensions/ConfirmEdit/MathCaptcha/extension.json
new file mode 100644
index 00000000..8ef10c53
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/MathCaptcha/extension.json
@@ -0,0 +1,10 @@
+{
+ "name": "MathCaptcha",
+ "AutoloadClasses": {
+ "MathCaptcha": "MathCaptcha.class.php"
+ },
+ "config": {
+ "CaptchaClass": "MathCaptcha"
+ },
+ "manifest_version": 1
+}
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha.php b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha.php
new file mode 100644
index 00000000..e51266be
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha.php
@@ -0,0 +1,2 @@
+<?php
+require_once __DIR__ . "/QuestyCaptcha/QuestyCaptcha.php";
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/QuestyCaptcha.class.php b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/QuestyCaptcha.class.php
new file mode 100644
index 00000000..a42992e4
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/QuestyCaptcha.class.php
@@ -0,0 +1,146 @@
+<?php
+
+/**
+ * QuestyCaptcha class
+ *
+ * @file
+ * @author Benjamin Lees <emufarmers@gmail.com>
+ * @ingroup Extensions
+ */
+
+use MediaWiki\Auth\AuthenticationRequest;
+
+class QuestyCaptcha extends SimpleCaptcha {
+ // used for questycaptcha-edit, questycaptcha-addurl, questycaptcha-badlogin,
+ // questycaptcha-createaccount, questycaptcha-create, questycaptcha-sendemail via getMessage()
+ protected static $messagePrefix = 'questycaptcha-';
+
+ /**
+ * Validate a captcha response
+ * @param string $answer
+ * @param array $info
+ * @return bool
+ */
+ function keyMatch( $answer, $info ) {
+ if ( is_array( $info['answer'] ) ) {
+ return in_array( strtolower( $answer ), array_map( 'strtolower', $info['answer'] ) );
+ } else {
+ return strtolower( $answer ) == strtolower( $info['answer'] );
+ }
+ }
+
+ /**
+ * @param array &$resultArr
+ */
+ function addCaptchaAPI( &$resultArr ) {
+ $captcha = $this->getCaptcha();
+ $index = $this->storeCaptcha( $captcha );
+ $resultArr['captcha'] = $this->describeCaptchaType();
+ $resultArr['captcha']['id'] = $index;
+ $resultArr['captcha']['question'] = $captcha['question'];
+ }
+
+ /**
+ * @return array
+ */
+ public function describeCaptchaType() {
+ return [
+ 'type' => 'question',
+ 'mime' => 'text/html',
+ ];
+ }
+
+ /**
+ * @return array
+ */
+ function getCaptcha() {
+ global $wgCaptchaQuestions;
+ global $wgLang;
+ $currentlang = $wgLang->getCode();
+
+ if (array_key_exists($currentlang,$wgCaptchaQuestions)) {
+ $wgCaptchaQuestions = $wgCaptchaQuestions[$currentlang];
+ } else {
+ $default = array_key_first($wgCaptchaQuestions);
+ $wgCaptchaQuestions = $wgCaptchaQuestions[$default];
+ }
+
+ // Backwards compatibility
+ if ( $wgCaptchaQuestions === array_values( $wgCaptchaQuestions ) ) {
+ return $wgCaptchaQuestions[ mt_rand( 0, count( $wgCaptchaQuestions ) - 1 ) ];
+ }
+
+ $question = array_rand( $wgCaptchaQuestions, 1 );
+ $answer = $wgCaptchaQuestions[ $question ];
+ return [ 'question' => $question, 'answer' => $answer ];
+ }
+
+ /**
+ * @param int $tabIndex
+ * @return array
+ */
+ function getFormInformation( $tabIndex = 1 ) {
+ $captcha = $this->getCaptcha();
+ if ( !$captcha ) {
+ die(
+ "No questions found; set some in LocalSettings.php using the format from QuestyCaptcha.php."
+ );
+ }
+ $index = $this->storeCaptcha( $captcha );
+ return [
+ 'html' => "<p><label for=\"wpCaptchaWord\">{$captcha['question']}</label> " .
+ Html::element( 'input', [
+ 'name' => 'wpCaptchaWord',
+ 'id' => 'wpCaptchaWord',
+ 'class' => 'mw-ui-input',
+ 'required',
+ 'autocomplete' => 'off',
+ 'tabindex' => $tabIndex ] ) . // tab in before the edit textarea
+ "</p>\n" .
+ Xml::element( 'input', [
+ 'type' => 'hidden',
+ 'name' => 'wpCaptchaId',
+ 'id' => 'wpCaptchaId',
+ 'value' => $index ] )
+ ];
+ }
+
+ function showHelp() {
+ global $wgOut;
+ $wgOut->setPageTitle( wfMessage( 'captchahelp-title' )->text() );
+ $wgOut->addWikiMsg( 'questycaptchahelp-text' );
+ if ( CaptchaStore::get()->cookiesNeeded() ) {
+ $wgOut->addWikiMsg( 'captchahelp-cookies-needed' );
+ }
+ }
+
+ /**
+ * @param array $captchaData
+ * @param string $id
+ * @return mixed
+ */
+ public function getCaptchaInfo( $captchaData, $id ) {
+ return $captchaData['question'];
+ }
+
+ /**
+ * @param array $requests
+ * @param array $fieldInfo
+ * @param array &$formDescriptor
+ * @param string $action
+ */
+ public function onAuthChangeFormFields( array $requests, array $fieldInfo,
+ array &$formDescriptor, $action ) {
+ /** @var CaptchaAuthenticationRequest $req */
+ $req =
+ AuthenticationRequest::getRequestByClass( $requests,
+ CaptchaAuthenticationRequest::class, true );
+ if ( !$req ) {
+ return;
+ }
+
+ // declare RAW HTML output.
+ $formDescriptor['captchaInfo']['raw'] = true;
+ $formDescriptor['captchaWord']['label-message'] = null;
+ }
+}
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/QuestyCaptcha.php b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/QuestyCaptcha.php
new file mode 100644
index 00000000..730f4b10
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/QuestyCaptcha.php
@@ -0,0 +1,14 @@
+<?php
+if ( function_exists( 'wfLoadExtension' ) ) {
+ wfLoadExtension( 'ConfirmEdit/QuestyCaptcha' );
+ // Keep i18n globals so mergeMessageFileList.php doesn't break
+ $wgMessagesDirs['QuestyCaptcha'] = __DIR__ . '/i18n';
+ /* wfWarn(
+ 'Deprecated PHP entry point used for QuestyCaptcha extension. ' .
+ 'Please use wfLoadExtension instead, ' .
+ 'see https://www.mediawiki.org/wiki/Extension_registration for more details.'
+ ); */
+ return;
+} else {
+ die( 'This version of the QuestyCaptcha extension requires MediaWiki 1.25+' );
+}
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/extension.json b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/extension.json
new file mode 100644
index 00000000..88284d69
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/extension.json
@@ -0,0 +1,16 @@
+{
+ "name": "QuestyCaptcha",
+ "MessagesDirs": {
+ "QuestyCaptcha": [
+ "i18n"
+ ]
+ },
+ "AutoloadClasses": {
+ "QuestyCaptcha": "QuestyCaptcha.class.php"
+ },
+ "config": {
+ "CaptchaClass": "QuestyCaptcha",
+ "CaptchaQuestions": []
+ },
+ "manifest_version": 1
+}
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/aln.json b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/aln.json
new file mode 100644
index 00000000..515ef020
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/aln.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Mdupont"
+ ]
+ },
+ "questycaptcha-addurl": "Your redakto përfshin të jashtme lidhje të reja. Për të ndihmuar në mbrojtjen kundër spam automatizuar, ju lutem përgjigje pyetjes që duket më poshtë ([[Special:Captcha/help|më shumë informacion]]):",
+ "questycaptcha-badlogin": "Për të ndihmuar në mbrojtjen kundër fjalëkalimin automatizuar plasaritje, ju lutem përgjigje pyetjes që duket më poshtë ([[Special:Captcha/help|më shumë informacion]]):",
+ "questycaptcha-createaccount": "Për të ndihmuar në mbrojtjen kundër krijimit llogari e automatizuar, ju lutemi përgjigje pyetjes që duket më poshtë ([[Special:Captcha/help|më shumë informacion]]):",
+ "questycaptcha-create": "Për të krijuar një faqe, ju lutem përgjigje të pyetjes që duket më poshtë ([[Special:Captcha/help|më shumë informacion]]):",
+ "questycaptcha-edit": "Për të redaktuar këtë faqe, ju lutem përgjigje të pyetjes që duket më poshtë ([[Special:Captcha/help|më shumë informacion]]):",
+ "questycaptcha-sendemail": "Për të ndihmuar në mbrojtjen kundër spamming automatizuar, ju lutem përgjigje pyetjes që duket më poshtë ([[Special:Captcha/help|më shumë informacion]]):",
+ "questycaptchahelp-text": "Web faqet që të pranojë kontribute nga publiku, si ky wiki, shpesh keqtrajtohen nga spammers që përdorin mjete të automatizuar për të shtuar lidhjet e tyre me shumë vende. Përderisa këto lidhje spam mund të hiqen, ata janë një ngatërresë të rëndësishme. Ndonjëherë, sidomos kur duke shtuar të reja web lidhje me një faqe, wiki mund të kërkojë që për t'iu përgjigjur një pyetje. Ngaqë kjo është një detyrë që është e vështirë për të automatizuar, ajo do të lejojë të vërtetë njerëzit më të japin kontribute të tyre, ndërsa ndaluar spammers më dhe robotik sulmuesit të tjera. Ju lutem kontaktoni [[Special:ListAdmins|faqe administratorët]] për ndihmë, nëse kjo është e papritur në parandalimin e ju nga bërja e kontributeve të ligjshme. Kliko 'butonin mbrapa në shfletuesin tuaj për t'u kthyer në faqen e redaktorit."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/ar.json b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/ar.json
new file mode 100644
index 00000000..f085d847
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/ar.json
@@ -0,0 +1,18 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ciphers",
+ "Meno25",
+ "OsamaK",
+ "ديفيد"
+ ]
+ },
+ "questycaptcha-desc": "مولد كويستي كابتشا لConfirm Edit",
+ "questycaptcha-addurl": "يحتوي تعديلك على وصلات خارجية جديدة،\nللمساعدة في الحماية من السبام التلقائي; من فضلك أجب على السؤال الذي يظهر أدناه ([[Special:Captcha/help|مزيد من المعلومات]]):",
+ "questycaptcha-badlogin": "للمساعدة في الحماية من السبام التلقائي; من فضلك أجب على السؤال الذي يظهر أدناه ([[Special:Captcha/help|مزيد من المعلومات]]):",
+ "questycaptcha-createaccount": "للمساعدة في الحماية من إنشاء الحسابات التلقائي; من فضلك أجب على السؤال الذي يظهر أدناه ([[Special:Captcha/help|مزيد من المعلومات]]):",
+ "questycaptcha-create": "لتنشئ الصفحة، من فضلك أجب على السؤال الذي يظهر أدناه ([[Special:Captcha/help|مزيد من المعلومات]]):",
+ "questycaptcha-edit": "لتحرّر هذه الصفحة، من فضلك أجب على السؤال الذي يظهر أدناه ([[Special:Captcha/help|مزيد من المعلومات]]):",
+ "questycaptcha-sendemail": "لحماية الويكي من السبام الآلي; الرجاء الإجابة على السؤال الذي يظهر أدناه ([[Special:Captcha/help|المزيد من المعلومات]]):",
+ "questycaptchahelp-text": "عادة ما يتم في المواقع التي تقبل الردود والرسائل من العامة، كهذا الويكي، تخريب الموقع عن طريق الأشخاص الذين يستعملون آليات معينة لإرسال وصلاتهم لمواقع متعددة بصورة آلية.\nوعلى الرغم من أن هذا يمكن إزالته ولكنه مزعج للغاية.\n\nفي بعض الأحيان، خصوصا عند إضافة وصلات لصفحة، ربما يعرض الويكي صورة ملونة أو مشوشة ويطلب منك إدخال كلمات موجودة بالصورة أو يعرض عليك مسألة رياضية عشوائية ويطلب منك حلها.\nولأن هذه المهمة صعبة للغاية لأن يقوم بها برنامج، سيسمح هذا للأشخاص الآدميين بإضافة تحريراتهم بينما ستوقف البرامج التخريبية والهجمات الآلية الأخرى.\n\nللأسف سيكون هذا صعبا بالنسبة لمستخدمي المتصفحات المحدودة أو التي تعتمد على النصوص فقط أو قراءة النصوص.\nفي الوقت الحالي لا يوجد لدينا بديل سمعي.\nمن فضلك راسل [[Special:ListAdmins|إداريي الموقع]] للمساعدة إذا كان هذا الأمر يمنعك من التعديل ووضع وصلات قانونية.\n\nإذا كنت تحرر صفحة معينة: اضغط زر 'العودة' في متصفحك للعودة إلى التحرير."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/ast.json b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/ast.json
new file mode 100644
index 00000000..122b2d7a
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/ast.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Xuacu"
+ ]
+ },
+ "questycaptcha-addurl": "La so edición incluye nuevos enllaces esternos. Pa protexer la wiki escontra'l spam d'edición automatizáu, pidimos-y que conteste la entruga qu'apaez embaxo ([[Special:Captcha/help|más información]]):",
+ "questycaptcha-badlogin": "Pa protexer la wiki escontra'l descifráu automáticu de claves, pidimos-y que conteste la entruga qu'apaez embaxo ([[Special:Captcha/help|más información]]):",
+ "questycaptcha-createaccount": "Pa protexer la wiki escontra la creación automática de cuentes, pidimos-y que conteste la entruga qu'apaez embaxo ([[Special:Captcha/help|más información]]):",
+ "questycaptcha-create": "Pa crear la páxina, por favor conteste la entruga qu'apaez embaxo ([[Special:Captcha/help|más información]]):",
+ "questycaptcha-edit": "Pa editar la páxina, por favor conteste la entruga qu'apaez embaxo ([[Special:Captcha/help|más información]]):",
+ "questycaptcha-sendemail": "Pa protexer la wiki escontra'l corréu puxarra automáticu, pidimos-y que conteste la entruga qu'apaez embaxo ([[Special:Captcha/help|más información]]):",
+ "questycaptchahelp-text": "Los sitios web qu'aceuten collaboración del públicu, como esta wiki, sufren de vezu l'abusu de «spammers» qu'usen ferramientes automátiques p'amestar los sos enllaces en munchos sitios.\nMentanto qu'esos enllaces puen desaniciase, suponen una bultable molestia.\n\nDacuando, especialmente al amestar enllaces nuevos a una páxina, la wiki pue pidi-y que conteste una entruga.\nComo esta ye una xera difícil d'automatizar, permitirá que la mayor parte de persones faiga collaboraciones mentanto torga a la mayor parte de «spammers» y otros atacantes robotizaos .\n\nPor favor, pongase'n contautu colos [[Special:ListAdmins|alministradores del sitiu]] pa pidir ayuda si esto ta torgando-y de mou inesperáu facer collaboraciones llexítimes.\n\nCalque nel botón «atrás» del navegador pa volver al editor de páxines."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/ba.json b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/ba.json
new file mode 100644
index 00000000..ffda7dee
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/ba.json
@@ -0,0 +1,17 @@
+{
+ "@metadata": {
+ "authors": [
+ "Assele",
+ "Рустам Нурыев",
+ "Sagan",
+ "Ләйсән"
+ ]
+ },
+ "questycaptcha-addurl": "Һеҙҙең тексығыҙҙа яңы тышҡы һылтанмалар бар.\nАвтоматик спамдан һаҡлау маҡсатында, түбәндә килтерелгән һорауға яуап бирегеҙ ([[Special:Captcha/help|тулыраҡ мәғлүмәт]]):",
+ "questycaptcha-badlogin": "Автоматик спамдан һаҡлау маҡсатында, зинһар, түбәндә килтерелгән һорауға яуап бирегеҙ ([[Special:Captcha/help|тулыраҡ мәғлүмәт]]):",
+ "questycaptcha-createaccount": "Иҫәп яҙмаларын автоматик булдырыуҙан һаҡлау маҡсатында, зинһар, түбәндә килтерелгән һорауға яуап бирегеҙ ([[Special:Captcha/help|тулыраҡ мәғлүмәт]]):",
+ "questycaptcha-create": "Яңы бит булдырыу өсөн, зинһар, түбәндә килтерелгән һорауға яуап бирегеҙ ([[Special:Captcha/help|тулыраҡ мәғлүмәт]]):",
+ "questycaptcha-edit": "Был битте мөхәррирләү өсөн, зинһар, түбәндә килтерелгән һорауға яуап бирегеҙ ([[Special:Captcha/help|тулыраҡ мәғлүмәт]]):",
+ "questycaptcha-sendemail": "Автоматик спамдан һаҡлау маҡсатында, зинһар, түбәндә килтерелгән һорауға яуап бирегеҙ ([[Special:Captcha/help|тулыраҡ мәғлүмәт]]):",
+ "questycaptchahelp-text": "Үҙенә эстәлек өҫтәргә һәм эстәлеген мөхәррирләргә мөмкинлек биргән веб-сайттар, шул иҫәптән был вики, йыш ҡына сайттарға автоматик һылтанмалар өҫтәү өсөн программалар ҡулланған спамлаусыларҙың маҡсатына әйләнә.\nБындай һылтанмалар юйыла ала, әммә улар һиҙелерлек уңайһыҙлыҡ килтерә.\n\nҠайһы бер ғәмәлдәрҙе башҡарған ваҡытта — мәҫәлән, биткә һылтанма өҫтәгән ваҡытта — вики һеҙгә һорауға яуап бирергә тәҡдим итә ала. Был мәсьәләне автоматик рәүештә сисеү ауыр булғанға күрә, ул күпселек кешеләргә мөхәррирләүҙе башҡарырға мөмкинлек бирәсәк, һәм шул уҡ ваҡытта спамлаусыларҙың һәм башҡа автоматлаштырылған зыян килтереүселәрҙең күпселеген туҡтатасаҡ.\n\nЗинһар, әгәр бындай тикшереү һеҙгә сайтта намыҫ менән эшләргә ҡамасаулаһа, [[Special:ListAdmins|хәкимдәргә]] мөрәжәғәт итегеҙ.\n\nМөхәррирләүгә кире ҡайтыу өсөн, браузерығыҙҙа кире ҡайтыу төймәһенә баҫығыҙ."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/be-tarask.json b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/be-tarask.json
new file mode 100644
index 00000000..a312214a
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/be-tarask.json
@@ -0,0 +1,16 @@
+{
+ "@metadata": {
+ "authors": [
+ "EugeneZelenko",
+ "Jim-by",
+ "Red Winged Duck"
+ ]
+ },
+ "questycaptcha-addurl": "Вашае рэдагаваньне ўтрымлівае новыя вонкавыя спасылкі.\nКаб абараніць вікі ад аўтаматычнага спаму ў праўках, мы просім вас адказаць на пытаньне, паказанае ніжэй ([[Special:Captcha/help|дадатковая інфармацыя]]):",
+ "questycaptcha-badlogin": "Для абароны вікі ад аўтаматычнага падбору пароля, мы просім вас адказаць на пытаньне, паказанае ніжэй ([[Special:Captcha/help|дадатковая інфармацыя]]):",
+ "questycaptcha-createaccount": "Для абароны вікі ад аўтаматычнага стварэньня рахункаў, мы просім вас адказаць на пытаньне, паказанае ніжэй ([[Special:Captcha/help|дадатковая інфармацыя]]):",
+ "questycaptcha-create": "Для стварэньня старонкі, калі ласка, адкажыце на пытаньне, паказанае ніжэй ([[Special:Captcha/help|дадатковая інфармацыя]]):",
+ "questycaptcha-edit": "Для рэдагаваньня гэтай старонкі, калі ласка, адкажыце на пытаньне, паказанае ніжэй ([[Special:Captcha/help|дадатковая інфармацыя]]):",
+ "questycaptcha-sendemail": "У мэтах абароны вікі ад аўтаматычнага спаму, мы просім вас адказаць на пытаньне, паказанае ніжэй ([[Special:Captcha/help|дадатковая інфармацыя]]):",
+ "questycaptchahelp-text": "Вэб-сайты, якія прымаюць запісы ад грамадзкасьці, падобныя на {{GRAMMAR:вінавальны|{{SITENAME}}}}, часта атакуюцца спамэрамі, якія ўжываюць аўтаматызаваныя інструмэнты, каб зьмяшчаць свае спасылкі на шмат сайтаў.\nІ хаця гэтыя спасылкі могуць быць прыбраныя, яны выклікаюць значныя нязручнасьці.\n\nЧасам, асабліва калі Вы дадаеце новыя вонкавыя спасылкі на старонку, {{SITENAME}} можа паказаць Вам выяву з каляровым ці скажоным тэкстам і папрасіць увесьці гэты тэкст.\nПраз тое, што гэтае заданьне цяжка аўтаматызаваць, яно дазволіць большасьці рэальных людзей рабіць запісы, але спыніць большасьць спамэраў і іншых аўтаматызаваных робатаў.\n\nНа жаль, гэта можа выклікаць нязручнасьці для ўдзельнікаў з абмежаваньнямі па зроку і для тых, хто ўжывае тэкставыя ці моўныя браўзэры.\nНа гэты момант мы ня маем аўдыё-альтэрнатывы гэтай праверцы.\nКалі ласка, зьвяжыцеся з [[Special:ListAdmins|адміністратарамі]], калі гэтая праверка перашкаджае Вам рабіць слушныя запісы.\n\nНацісьніце кнопку «назад» у Вашым браўзэры, каб вярнуцца да рэдагаваньня старонкі."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/br.json b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/br.json
new file mode 100644
index 00000000..fa3b0571
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/br.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": [
+ "Fohanno",
+ "Fulup"
+ ]
+ },
+ "questycaptcha-addurl": "Degaset hoc'h liammoù diavaez nevez.\nA-benn hor skoazellañ da stourm a-enep d'ar strob emgefre, respontit d'ar goulenn a-is ([[Special:Captcha/help|muioc'h a ditouroù]]) :",
+ "questycaptcha-badlogin": "Evit hor sikour da stourm a-enep ar freuzañ gerioù-tremen gant ardivinkoù, respontit d'ar goulenn a-is ([[Special:Captcha/help|muioc'h a ditouroù]]) :",
+ "questycaptcha-createaccount": "Evit hor sikour da stourm a-enep ar c'hrouiñ kontoù emgefre, respontit d'ar goulenn a-is ([[Special:Captcha/help|muioc'h a ditouroù]]) :",
+ "questycaptcha-create": "A-benn gellout krouiñ ar bajenn, respontit d'ar goulenn a-is ([[Special:Captcha/help|muioc'h a ditouroù]]) :",
+ "questycaptcha-edit": "A-benn gellout degas kemmoù er bajenn-mañ, respontit d'ar goulenn a-is ([[Special:Captcha/help|muioc'h a ditouroù]]) :",
+ "questycaptcha-sendemail": "Evit hor sikour da zizarbenn ar strob emgefre, respontit d'ar goulenn skrivet dindan ([[Special:Captcha/help|gouzout hiroc'h]]) :",
+ "questycaptchahelp-text": "Alies e vez taget al lec'hiennoù a zegemer kemennadennoù a-berzh an holl, evel ar wiki-mañ, gant ar stroberien a implij ostilhoù emgefre evit postañ o liammoù war-du lec'hiennoù a bep seurt. Ha pa c'hallfent bezañ diverket, kazus-mat ez eo ar stroboù-se memes tra.\n\nA-wezhioù, dreist-holl pa vez ouzhpennet liammoù Web nevez war ur bajenn, e c'hallo ar wiki-mañ sevel ur goulenn ouzhoc'h. \nUn trevell start da emgefrekaat eo hemañ. Gant se e c'hallo an implijerien wirion postañ ar pezh a fell dezho tra ma vo lakaet un harz d'an darn vrasañ eus ar stroberien pe d'an dagerien robotek all.\n\nKit e darempred gant [[Special:ListAdmins|merourien al lec'hienn]] evit bezañ skoazellet m'hoc'h eus diaesterioù da gemer perzh da vat abalamour d'an teknik-se.\n\nPouezit war bouton 'kent' ho merdeer evit distreiñ d'ar bajenn gemmañ."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/bs.json b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/bs.json
new file mode 100644
index 00000000..a4510992
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/bs.json
@@ -0,0 +1,16 @@
+{
+ "@metadata": {
+ "authors": [
+ "CERminator",
+ "KWiki",
+ "Srdjan m"
+ ]
+ },
+ "questycaptcha-addurl": "Vaša izmjena sadrži nove vanjske linkove.\nU cilju zaštite wikija od automatiziranog neželjenog sadržaja, molimo odgovorite na pitanje koje je prikazano ispod ([[Special:Captcha/help|više informacija]]):",
+ "questycaptcha-badlogin": "U cilju zaštite wikija od automatiziranog probijanja lozinki, molimo Vas da odgovorite na pitanje koje je prikazano ispod ([[Special:Captcha/help|više informacija]]):",
+ "questycaptcha-createaccount": "U cilju zaštite wikija od automatiziranog pravljenja računa, molimo Vas da odgovorite na pitanje koje je prikazano ispod ([[Special:Captcha/help|više informacija]]):",
+ "questycaptcha-create": "Da biste napravili stranicu, molimo Vas da odgovorite na pitanje koje je prikazano ispod ([[Special:Captcha/help|više informacija]]):",
+ "questycaptcha-edit": "Da biste uredili ovu stranicu, molimo Vas da odgovorite na pitanje koje je prikazano ispod ([[Special:Captcha/help|više informacija]]):",
+ "questycaptcha-sendemail": "U cilju zaštite wikija od automatiziranog spamovanja, molimo Vas da odgovorite na pitanje koje je prikazano ispod ([[Special:Captcha/help|više informacija]]):",
+ "questycaptchahelp-text": "Websajtovi koji podržavaju doprinose iz javnosti, kao što je ovaj viki, često zloupotrebljavaju vandali koji koriste automatizovane alate da šalju svoje linkove ka mnogim sajtovima.\nIako se ovi neželjeni linkovi mogu ukloniti, oni ipak zadaju veliku muku.\n\nPonekad, pogotovo kad se dodaju novi internet linkovi na stranicu, wiki može tražiti od Vas da odgovorite na pitanje. Pošto je teško automatizovati ovakav zadatak, on omogućuje svim pravim ljudima da vrše svoje izmjene, ali će zato spriječiti vandale i ostale robotske napadače.\n\nMolimo Vas da kontaktirate [[Special:ListAdmins|administratore stranice]] za pomoć ako je ovo prepreka za Vas da pravite uobičajene izmjene.\n\nKliknite 'nazad' ('back') dugme vašeg preglednika da se vratite na polje za unos teksta."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/ca.json b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/ca.json
new file mode 100644
index 00000000..75efba70
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/ca.json
@@ -0,0 +1,10 @@
+{
+ "@metadata": {
+ "authors": [
+ "Paucabot",
+ "Toniher"
+ ]
+ },
+ "questycaptcha-addurl": "L'edició inclou enllaços externs nous.\nPer ajudar a protegir-se contra la brossa automàtica, responeu la pregunta que apareix a continuació ([[Special:Captcha/help|més informació]]):",
+ "questycaptcha-create": "Per crear la pàgina, per favor responeu la pregunta que apareix a continuació ([[Special:Captcha/help|més informació]]):"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/cs.json b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/cs.json
new file mode 100644
index 00000000..7ebe2e95
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/cs.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": [
+ "Mormegil",
+ "Ilimanaq29"
+ ]
+ },
+ "questycaptcha-addurl": "Vaše editace obsahuje nové externí odkazy.\nV zájmu ochrany této wiki před automatickým spamováním vás prosíme o zodpovězení níže uvedené otázky ([[Special:Captcha/help|další informace]]):",
+ "questycaptcha-badlogin": "V zájmu ochrany této wiki proti automatickým pokusům uhodnout heslo vás prosíme o zodpovězení níže uvedené otázky ([[Special:Captcha/help|další informace]]):",
+ "questycaptcha-createaccount": "V zájmu ochrany této wiki před automatickým vytvářením účtů vás prosíme o zodpovězení níže uvedené otázky ([[Special:Captcha/help|další informace]]):",
+ "questycaptcha-create": "Abyste mohli založit stránku, musíte zodpovědět níže uvedenou otázku ([[Special:Captcha/help|další informace]]):",
+ "questycaptcha-edit": "Abyste mohli editovat tuto stránku, musíte zodpovědět níže uvedenou otázku ([[Special:Captcha/help|další informace]]):",
+ "questycaptcha-sendemail": "V zájmu ochrany této wiki před automatickým spamováním vás prosíme o zodpovězení níže uvedené otázky ([[Special:Captcha/help|další informace]]):",
+ "questycaptchahelp-text": "Webové stránky, do kterých mohou přispívat jejich návštěvníci (jako například tato wiki), jsou často terčem spammerů, kteří pomocí automatických nástrojů vkládají své odkazy na velké množství stránek. Přestože lze tento spam odstranit, představuje nepříjemné obtěžování.\n\nNěkdy, zvláště při přidávání nových webových odkazů, vás wiki může požádat o zodpovězení otázky.\nJelikož takovou úlohu lze jen těžko automatizovat, skuteční lidé mohou dále přispívat, zatímco většinu spammerů a jiných robotických útočníků to zastaví.\n\nPokud vám to brání v užitečných příspěvcích a potřebujete pomoc, kontaktujte prosím [[Special:ListAdmins|správce serveru]].\n\nPro návrat na předchozí stránku stiskněte ve svém prohlížeči tlačítko „zpět“."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/cy.json b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/cy.json
new file mode 100644
index 00000000..89ed9520
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/cy.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Lloffiwr"
+ ]
+ },
+ "questycaptcha-addurl": "Mae eich golygiad yn cynnwys o leiaf un cyswllt allanol newydd.\nEr mwyn arbed y wici rhag peiriannau sbam, byddwch gystal ag ateb y cwestiwn a welwch isod ([[Special:Captcha/help|rhagor o wybodaeth]]):",
+ "questycaptcha-badlogin": "Er mwyn arbed y wici rhag peiriannau datrys cyfrineiriau, byddwch gystal ag ateb y cwestiwn a welwch isod ([[Special:Captcha/help|rhagor o wybodaeth]]):",
+ "questycaptcha-createaccount": "Er mwyn arbed y wici rhag peiriannau creu cyfrifon, byddwch gystal ag ateb y cwestiwn a welwch isod ([[Special:Captcha/help|rhagor o wybodaeth]]):",
+ "questycaptcha-create": "Er mwyn dechrau'r dudalen, byddwch gystal ag ateb y cwestiwn a welwch isod ([[Special:Captcha/help|rhagor o wybodaeth]]):",
+ "questycaptcha-edit": "Er mwyn golygu'r dudalen, byddwch gystal ag ateb y cwestiwn a welwch isod ([[Special:Captcha/help|rhagor o wybodaeth]]):",
+ "questycaptcha-sendemail": "Er mwyn arbed y wici rhag sbamio awtomatig, byddwch gystal ag ateb y cwestiwn a welwch isod ([[Special:Captcha/help|rhagor o wybodaeth]]):",
+ "questycaptchahelp-text": "Mae safleoedd gwe fel y wici hon, sy'n caniatau i'r cyhoedd ysgrifennu iddi, yn darged beunyddiol i sbamwyr sy'n defnyddio rhaglenni arbennig i bostio eu cysylltiadau ar wefannau lu. Gellir dileu'r dolenni o'r tudalennau, ond mae hynny'n waith trafferthus.\n\nO dro i dro, yn enwedig wrth ychwanegu dolenni at safleoedd gwe eraill, fe fydd y wici hon yn gofyn i chi ateb cwestiwn. Mae hyn yn dasg anodd iawn i raglenni cyfrifiadurol, felly dylai'r rhan fwyaf o olygwyr go iawn gyflawni'r dasg yn ddi-drafferth, yn wahanol i'r mwyafrif o'r rhaglenni sbam ac ymosodwyr automatig eraill.\n\nCysylltwch â [[Special:ListAdmins|gweinyddwyr y safle]] os ydi'r nodwedd hon yn eich rhwystro rhag ychwanegu golygiadau dilys.\n\nGwasgwch botwm \"nôl\" eich porwr er mwyn dychwelyd at y dudalen olygu."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/de-formal.json b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/de-formal.json
new file mode 100644
index 00000000..4af39921
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/de-formal.json
@@ -0,0 +1,16 @@
+{
+ "@metadata": {
+ "authors": [
+ "Imre",
+ "Umherirrender",
+ "Kghbln"
+ ]
+ },
+ "questycaptcha-addurl": "Ihre Bearbeitung enthält neue externe Links.\nZum Schutz vor automatisiertem Spam beantworten Sie bitte die untenstehende Frage ([[Special:Captcha/help|weitere Informationen]]):",
+ "questycaptcha-badlogin": "Zum Schutz vor einer Kompromittierung Ihres Benutzerkontos beantworten Sie bitte die folgende Frage ([[Special:Captcha/help|weitere Informationen]]):",
+ "questycaptcha-createaccount": "Zum Schutz des Wikis vor einer automatisierten Anlage von Benutzerkonten bitten wir Sie, die folgende Frage zu beantworten ([[Special:Captcha/help|weitere Informationen]]):",
+ "questycaptcha-create": "Bitte beantworten Sie die folgende Frage, um diese Seite erstellen zu können ([[Special:Captcha/help|weitere Informationen]]):",
+ "questycaptcha-edit": "Bitte beantworten Sie die folgende Frage, um diese Seite bearbeiten zu können ([[Special:Captcha/help|weitere Informationen]]):",
+ "questycaptcha-sendemail": "Zum Schutz vor automatisiertem Spam bitten wir Sie, die folgende Frage zu beantworten ([[Special:Captcha/help|weitere Informationen]]):",
+ "questycaptchahelp-text": "Internetangebote, die — wie dieses Wiki — für Beiträge von praktisch jedem offen sind, werden häufig von Spammern missbraucht, welche versuchen, mithilfe entsprechender Werkzeuge ihre Links automatisch auf vielen Webseiten zu platzieren.\nZwar können derartige Spam-Links wieder entfernt werden, doch stellen sie trotzdem ein erhebliches Ärgernis dar.\n\nIn manchen Fällen, meist beim Versuch, neue Weblinks zu einer Seite hinzuzufügen, kann es vorkommen, dass Sie um die Beantwortung einer Frage gebeten wirst.\nDa es kaum möglich ist, dies zu automatisieren, können hierdurch die meisten Spammer aufgehalten werden. Menschlichen Benutzer sollten ihre Bearbeitungen hingegen durchführen können.\n\nSollte Sie dieses Verfahren beim Vornehmen erwünschter Bearbeitungen behindern, wenden Sie sich bitte an einen [[Special:ListAdmins|Administrator]], um Unterstützung zu erhalten.\n\nDer „Zurück“-Knopf des Browsers führt zurück zum Bearbeitungsfenster."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/de.json b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/de.json
new file mode 100644
index 00000000..11046e86
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/de.json
@@ -0,0 +1,19 @@
+{
+ "@metadata": {
+ "authors": [
+ "Geitost",
+ "Kghbln",
+ "Metalhead64",
+ "Pill",
+ "Umherirrender"
+ ]
+ },
+ "questycaptcha-desc": "Questy-CAPTCHA-Generator für die Erweiterung „Confirm Edit“",
+ "questycaptcha-addurl": "Deine Bearbeitung enthält neue externe Links.\nZum Schutz des Wikis vor automatisiertem Spam bitten wir dich, die untenstehende Frage zu beantworten, um die Seite speichern zu können ([[Special:Captcha/help|weitere Informationen]]):",
+ "questycaptcha-badlogin": "Zum Schutz des Wikis vor einer Kompromittierung deines Benutzerkontos bitten wir dich, die untenstehende Frage zu beantworten, um dich anmelden zu können ([[Special:Captcha/help|weitere Informationen]]):",
+ "questycaptcha-createaccount": "Zum Schutz des Wikis vor einer automatisierten Anlage von Benutzerkonten bitten wir dich, die folgende Frage zu beantworten ([[Special:Captcha/help|weitere Informationen]]):",
+ "questycaptcha-create": "Bitte beantworte die folgende Frage, um diese Seite erstellen zu können ([[Special:Captcha/help|weitere Informationen]]):",
+ "questycaptcha-edit": "Bitte beantworte die folgende Frage, um diese Seite speichern zu können ([[Special:Captcha/help|weitere Informationen]]):",
+ "questycaptcha-sendemail": "Zum Schutz des Wikis vor automatisiertem Spam bitten wir dich, die untenstehende Frage zu beantworten ([[Special:Captcha/help|weitere Informationen]]):",
+ "questycaptchahelp-text": "Internetangebote, die – wie dieses Wiki – für Beiträge von praktisch jedem offen sind, werden häufig von Spammern missbraucht, welche versuchen, mithilfe entsprechender Werkzeuge ihre Links automatisch auf vielen Webseiten zu platzieren.\nZwar können derartige Spam-Links wieder entfernt werden, doch stellen sie trotzdem ein erhebliches Ärgernis dar.\n\nIn manchen Fällen, meist beim Versuch, neue Weblinks zu einer Seite hinzuzufügen, kann es vorkommen, dass du um die Beantwortung einer Frage gebeten wirst.\nDa es kaum möglich ist, dies zu automatisieren, können hierdurch die meisten Spammer aufgehalten werden. Menschlichen Benutzer sollten ihre Bearbeitungen hingegen durchführen können.\n\nSollte dich dieses Verfahren beim Vornehmen erwünschter Bearbeitungen behindern, wende dich bitte an einen [[Special:ListAdmins|Administrator]], um Unterstützung zu erhalten.\n\nDie Schaltfläche „Zurück“ des Browsers führt zurück zum vorherigen Bearbeitungsfenster."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/dsb.json b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/dsb.json
new file mode 100644
index 00000000..795a1184
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/dsb.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Michawiki"
+ ]
+ },
+ "questycaptcha-addurl": "Twója změna wopśimujo nowe eksterne wótkaze.\nAby wiki pśeśiwo zawtomatizěrowanemu spamoju šćitał, wótegroń pšosym na pšašanje, kótarež pokazujo se dołojce ([[Special:Captcha/help|dalšne informacije]]):",
+ "questycaptcha-badlogin": "Aby wiki pśeśiwo zawtomatizěrowanemu wusnuchlenjeju gronidła šćitał, wótegroń pšosym na pšašanje, kótarež pokazujo se dołojce ([[Special:Captcha/help|dalšne informacije]]):",
+ "questycaptcha-createaccount": "Aby wiki pśeśiwo zawtomatizěrowanemu napóranjeju kontow šćitał, wótegroń pšosym na pšašanje, kótarež pokazujo se dołojce ([[Special:Captcha/help|dalšne informacije]]):",
+ "questycaptcha-create": "Aby napórał bok, wótegroń pšosym na pšašanje, kótarež pokazujo se dołojce ([[Special:Captcha/help|dalšne informacije]]):",
+ "questycaptcha-edit": "Aby wobźěłał toś ten bok, wótegroń pšosym na pšašanje, kótarež pokazujo se dołojce ([[Special:Captcha/help|dalšne informacije]]):",
+ "questycaptcha-sendemail": "Aby wiki pśeśiwo awtomatiskemu spamowanjeju šćitał, wótegroń pšosym pšašanje, kótarež pokazujo se dołojce ([[Special:Captcha/help|dalšne informacije]]):",
+ "questycaptchahelp-text": "Websedła, kótarež akceptěruju zjawne pśinoski, ako toś ten wiki, znjewužywaju se cesto wót spamowarjow, kótarež wužywaju zawtomatizěrowane rědy, aby pśidali swóje wótkaze na wjele sedłow. Lěcrownož toś te spamowe wótkaze daju se wótpóraś, su wóne bejna pógóršota. \n\nWótergi, wósebnje, gaž se nowe wótkaze pśidawaju bokoju, jo móžno, až se śi wiki něco pšaša. \nDokulaž to jo nadawk, kótaryž dajo se śěžko awtomatizěrowaś, dowólujo to napšawdnym luźam jich pśinoski wótpósłaś, nejwěcej spamowarjow a robotowe ataki pak se zaźaržyju. \n\nStaj se pšosym z [[Special:ListAdmins|administratorami sedła]] z pšosbu wó pomoc do zwiska, jolic to śi njewócakane zawobarujo słanje legitimnych pśinoskow. \n\nKlikni na tłocašk \"Slědk\" we swójom wobglědowaku, aby wróśił se k wobźěłowańskemu woknoju."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/el.json b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/el.json
new file mode 100644
index 00000000..eb6d6b90
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/el.json
@@ -0,0 +1,16 @@
+{
+ "@metadata": {
+ "authors": [
+ "Omnipaedista",
+ "Protnet"
+ ]
+ },
+ "questycaptcha-desc": "Γεννήτρια Questy CAPTCHA για το Confirm Edit",
+ "questycaptcha-addurl": "Η επεξεργασία σας περιλαμβάνει νέους εξωτερικούς συνδέσμους.\nΓια την προστασία του wiki ενάντια σε αυτοματοποιημένη επεξεργασία spam, σας παρακαλούμε να απαντήσετε στην παρακάτω ερώτηση ([[Special:Captcha/help|περισσότερες πληροφορίες]]):",
+ "questycaptcha-badlogin": "Για την προστασία του wiki ενάντια σε αυτοματοποιημένο σπάσιμο κωδικών, σας παρακαλούμε να απαντήσετε στην παρακάτω ερώτηση ([[Special:Captcha/help|περισσότερες πληροφορίες]]):",
+ "questycaptcha-createaccount": "Για την προστασία του wiki ενάντια σε αυτοματοποιημένη δημιουργία λογαριασμών, σας παρακαλούμε να απαντήσετε στην παρακάτω ερώτηση ([[Special:Captcha/help|περισσότερες πληροφορίες]]):",
+ "questycaptcha-create": "Για να δημιουργήσετε τη σελίδα, σας παρακαλούμε να απαντήσετε στην παρακάτω ερώτηση ([[Special:Captcha/help|περισσότερες πληροφορίες]]):",
+ "questycaptcha-edit": "Για να επεξεργαστείτε αυτή τη σελίδα, σας παρακαλούμε να απαντήσετε στην παρακάτω ερώτηση ([[Special:Captcha/help|περισσότερες πληροφορίες]]):",
+ "questycaptcha-sendemail": "Για την προστασία του wiki ενάντια σε αυτοματοποιημένο σπαμάρισμα, σας παρακαλούμε να απαντήσετε στην παρακάτω ερώτηση ([[Special:Captcha/help|περισσότερες πληροφορίες]]):",
+ "questycaptchahelp-text": "Οι ιστότοποι που επιτρέπουν δημόσιες συνεισφορές, όπως αυτό το wiki, παραβιάζονται συχνά από spammers που χρησιμοποιούν αυτοματοποιημένα εργαλεία για να δημοσιεύουν μαζικά υπερσυνδέσμους σε πλήθος ιστοτόπων. Αν και αυτοί οι σύνδεσμοι spam μπορούν να αφαιρεθούν, είναι μεγάλος μπελάς.\n\nΜερικές φορές, ειδικά κατά την προσθήκη νέων συνδέσμων σε μια σελίδα, το wiki μπορεί να σας ζητήσει να απαντήσετε σε μια ερώτηση. Δεδομένου ότι αυτή η εργασία είναι δύσκολο να αυτοματοποιηθεί, θα επιτρέψει στους περισσότερους πραγματικούς ανθρώπους να κάνουν τις δημοσιεύσεις τους, σταματώντας όμως spammers και άλλους ρομποτικά επιτιθέμενους.\n\nΠαρακαλούμε επικοινωνήστε με τους [[Special:ListAdmins|διαχειριστές του ιστότοπου]] για βοήθεια εάν αυτό για κάποιο λόγο σας αποτρέπει να εκτελέσετε θεμιτές ενέργειες.\n\nΠατήστε το κουμπί «πίσω» στον περιηγητή σας για να επιστρέψετε στον επεξεργαστή σελίδων."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/en.json b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/en.json
new file mode 100644
index 00000000..551dc056
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/en.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": []
+ },
+ "questycaptcha-desc": "Questy CAPTCHA generator for Confirm Edit",
+ "questycaptcha-addurl": "Your edit includes new external links.\nTo protect the wiki against automated edit spam, we kindly ask you to answer the question that appears below ([[Special:Captcha/help|more info]]):",
+ "questycaptcha-badlogin": "To protect the wiki against automated password cracking, we kindly ask you to answer the question that appears below ([[Special:Captcha/help|more info]]):",
+ "questycaptcha-createaccount": "To protect the wiki against automated account creation, we kindly ask you to answer the question that appears below ([[Special:Captcha/help|more info]]):",
+ "questycaptcha-create": "To create the page, please answer the question that appears below ([[Special:Captcha/help|more info]]):",
+ "questycaptcha-edit": "To edit this page, please answer the question that appears below ([[Special:Captcha/help|more info]]):",
+ "questycaptcha-sendemail": "To protect the wiki against automated spamming, we kindly ask you to answer the question that appears below ([[Special:Captcha/help|more info]]):",
+ "questycaptchahelp-text": "Web sites that accept contributions from the public, like this wiki, are often abused by spammers who use automated tools to add their links to many sites.\nWhile these spam links can be removed, they are a significant nuisance.\n\nSometimes, especially when adding new web links to a page, the wiki may ask you to answer a question.\nSince this is a task that is hard to automate, it will allow most real humans to make their contributions while stopping most spammers and other robotic attackers.\n\nPlease contact the [[Special:ListAdmins|site administrators]] for assistance if this is unexpectedly preventing you from making legitimate contributions.\n\nClick the \"back\" button in your browser to return to the page editor."
+} \ No newline at end of file
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/eo.json b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/eo.json
new file mode 100644
index 00000000..53815a97
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/eo.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "Castelobranco"
+ ]
+ },
+ "questycaptcha-addurl": "Via redakto entenas novajn eksterajn ligilojn. \nPor helpi protekti kontraŭ aŭtomatan spamadon, bonvolu respondu la demandon sube ([[Special:Captcha/help|pli da informo]]):",
+ "questycaptcha-badlogin": "Por helpi protekti kontraŭ aŭtomata divenado de pasvortoj, bonvolu respondu la demandon sube ([[Special:Captcha/help|pli da informo]]):",
+ "questycaptcha-createaccount": "Por helpi protekti kontraŭ aŭtomata konto-kreado, bonvolu respondu la demandon sube ([[Special:Captcha/help|pli da informo]]):",
+ "questycaptcha-create": "Por krei la paĝon, bonvolu respondu la demandon sube ([[Special:Captcha/help|pli da informo]]):",
+ "questycaptcha-edit": "Por redakti ĉi tiun paĝon, bonvolu respondu la demandon sube ([[Special:Captcha/help|pli da informo]]):",
+ "questycaptchahelp-text": "Retejoj kiuj akcepti informon de publiko, kiel ĉi tiu vikio, estas ofte misuzitaj de spamistoj kiu uzas aŭtomatajn ilojn por afiŝi ligilojn al multaj retejoj. Kvankam ĉi tiu spam-ligiloj estas forigeblaj, ili estas granda ĝeno.\n\nIufoje, ja kiam aldonante novajn retligilojn al paĝo, la vikio eble petos al vi respondi demandon. Tial ĉi tiu tasko estas malfacila por fari aŭtomate, ebligos al realaj homoj fari aldonaĵojn, kaj malebligos spamistojn kaj aliajn robotajn atakilojn.\n\nBonvolu kontakti la [[Special:ListAdmins|administrantojn de la retejo]] por helpo se ĉi tio malebligas al vi fari bonan aldonon.\n\nKlaku la 'reiru' butonon en via retumilo por reiri al la paĝo-redaktilo."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/es.json b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/es.json
new file mode 100644
index 00000000..16de64e1
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/es.json
@@ -0,0 +1,17 @@
+{
+ "@metadata": {
+ "authors": [
+ "Crazymadlover",
+ "Pertile",
+ "Sporeunai",
+ "Macofe"
+ ]
+ },
+ "questycaptcha-addurl": "Tu edición incluye enlaces externos nuevos. \nPara proteger el wiki contra el spam automatizado, te pedimos que respondas la pregunta que aparece debajo ([[Special:Captcha/help|más información]]):",
+ "questycaptcha-badlogin": "Para proteger el wiki contra el descifrado automatizado de contraseñas, te pedimos que respondas la pregunta que aparece debajo ([[Special:Captcha/help|más información]]):",
+ "questycaptcha-createaccount": "Para proteger el wiki contra la creación automatizada de cuentas, te pedimos que respondas la pregunta que aparece debajo ([[Special:Captcha/help|más información]]):",
+ "questycaptcha-create": "Para crear la página, por favor responde la pregunta que aparece abajo ([[Special:Captcha/help|más información]]):",
+ "questycaptcha-edit": "Para editar esta página, responde la pregunta que aparece abajo ([[Special:Captcha/help|más información]]):",
+ "questycaptcha-sendemail": "Para proteger el wiki contra el spam automatizado, te pedimos que respondas la pregunta que aparece debajo ([[Special:Captcha/help|más información]]):",
+ "questycaptchahelp-text": "Sitios Web que aceptan contribuciones del público, como este wiki, son constantemente abusadas por enviadores de spam quienes usan herramientas automáticas para agregar sus enlaces a muchos sitios.\nAsí estos enlaces spam puedan ser borrados, son una molestia significativa.\n\nA veces, especialmente cuando se agregan nuevos enlaces web a una página, el wiki puede pedirte que respondas a una pregunta.\nYa que esta es una tarea que es difícil de automatizar, eso permitirá que más seres humanos reales hagan sus contribuciones mientras detiene a la mayor parte de enviadores de spam y otros atacantes robóticos.\n\nPor favor contacta a los [[Special:ListAdmins|administradores del sitio]] para asistencia si esto está impidiéndote hacer contribuciones legítimas.\n\nHaz click en el botón 'atrás' en tu navegador para regresar al editor de página."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/et.json b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/et.json
new file mode 100644
index 00000000..b49c450f
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/et.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Pikne"
+ ]
+ },
+ "questycaptcha-addurl": "Sinu muudatus sisaldab uusi välislinke.\nPalun vasta alljärgnevale küsimusele. Abinõu on kaitseks automaadistatud rämpsmuudatuste eest ([[Special:Captcha/help|lisateave]]):",
+ "questycaptcha-badlogin": "Palun vasta alljärgnevale küsimusele. Abinõu on kaitseks automaatsete parooliäraarvajate eest ([[Special:Captcha/help|lisateave]]):",
+ "questycaptcha-createaccount": "Palun vasta alljärgnevale küsimusele. Abinõu on kaitseks kontode automaatse loomise eest ([[Special:Captcha/help|lisateave]]):",
+ "questycaptcha-create": "Lehekülje loomiseks vasta palun alljärgnevale küsimusele ([[Special:Captcha/help|lisateave]]):",
+ "questycaptcha-edit": "Selle lehekülje muutmiseks vasta palun alljärgnevale küsimusele ([[Special:Captcha/help|lisateave]]):",
+ "questycaptcha-sendemail": "Palun vasta alljärgnevale küsimusele. Abinõu on kaitseks automaadistatud rämpsmuudatuste eest ([[Special:Captcha/help|lisateave]]):",
+ "questycaptchahelp-text": "Võrgukohti, mis lubavad külastajatel sisu muuta, nagu ka see viki, kasutavad sageli rämpsposti levitajad, kes lisavad lehekülgedele näiteks reklaamlinke. Kuigi neid linke saab eemaldada, on nad siiski tülikad.\n\nKui registreerid kasutajakonto või lisad mõnele leheküljele uusi veebilinke, võidakse paluda sul küsimusele vastata.\nKuna küsimusele vastamist on raske automaadistada, on see tõhusaks kaitseks rämpspostirobotite vastu ja lubab samas tavakasutajatel rahus muudatusi teha.\n\nKui sul tekib raskusi muudatuste tegemisel, võta palun ühendust selle võrgukoha [[Special:ListAdmins|administraatoritega]].\n\nRedigeerimislehele naasmiseks klõpsa brauseri ''tagasi''-nuppu."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/eu.json b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/eu.json
new file mode 100644
index 00000000..5630e49c
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/eu.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "Kobazulo"
+ ]
+ },
+ "questycaptcha-create": "Orrialdea sortzeko, behean agertzen den galdera erantzun ezazu mesedez ([[Special:Captcha/help|informazio gehiago]]):",
+ "questycaptcha-edit": "Orrialde hau aldatzeko, behean agertzen den galdera erantzun ezazu mesedez ([[Special:Captcha/help|informazio gehiago]]):"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/fa.json b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/fa.json
new file mode 100644
index 00000000..e83a9a5c
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/fa.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ebraminio",
+ "Omidh"
+ ]
+ },
+ "questycaptcha-addurl": "ویرایش شما شامل پیوندهای جدید به بیرون است.\nبرای محافظت از ویکی در برابر هرزنامه‌های خودکار، ما از شما خواهش می‌کنیم که به سوال زیر پاسخ دهید ([[Special:Captcha/help|اطلاعات بیشتر]]):",
+ "questycaptcha-badlogin": "برای محافظت ویکی از شکستن خودکار گذرواژه، ما با احترام از شما خواهش می‌کنیم که به سوال زیر پاسخ دهید ([[Special:Captcha/help|اطلاعات بیشتر]]):",
+ "questycaptcha-createaccount": "برای جلوگیری از ایجاد خودکار حساب کاربری، از شما خواهش می‌کنیم که به سوال زیر پاسخ دهید ([[Special:Captcha/help|اطلاعات بیشتر]]):",
+ "questycaptcha-create": "برای ایجاد صفحه، لطفاً به سوالی که در زیر آمده‌است پاسخ دهید ([[Special:Captcha/help|اطلاعات بیشتر]]):",
+ "questycaptcha-edit": "برای ویرایش این صفحه، لطفاً به سوال زیر پاسخ دهید ([[Special:Captcha/help|اطلاعات بیشتر]]):",
+ "questycaptcha-sendemail": "برای حفاظت از ویکی در برابر هرزنامه‌های خودکار، از شما خواهش می‌کنیم که به سوال زیر پاسخ دهید ([[Special:Captcha/help|اطلاعات بیشتر]]):",
+ "questycaptchahelp-text": "وب‌گاه‌هایی که به عموم اجازهٔ نوشتن مطلب می‌دهند، مانند این ویکی، معمولاً توسط هرزنامه فرستندگانی که از ابزارهای خودکار برای افزودن پیوندهایشان به وب‌گاه‌های متعدد استفاده می‌کنند، مورد سوءاستفاده قرار می‌گیرند.\nاگر چه این پیوندهای هرزنامه را می‌توان حذف کرد ولی باعث اعصاب‌خوردی می‌شوند.\n\nگاهی اوقات، بخصوص زمانی که در یک صفحه پیوند جدیدی اضافه می‌کنید، ویکی ممکن‌است از شما سوالی بپرسد.\nبدلیل این که انجام اینکار برای ابزارهای خودکار سخت است، اجازه می‌دهد که انسان‌های واقعی در ویکی شرکت کنند در حالی که بیشتر هرزنامه‌ها و حمله‌های خودکار متوقف می‌شود.\n\nدر صورتی که سامانه به صورت پیش‌بینی‌نشده‌ای از مشارکت‌های صحیح شما جلوگیری می‌کند لطفاً با [[Special:ListAdmins|مدیران وب‌گاه]] تماس بگیرید.\n\nبر روی دکمهٔ «بازگشت» در مرورگر خود فشار دهید تا به صفحهٔ ویرایش برگردید."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/fi.json b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/fi.json
new file mode 100644
index 00000000..6307316d
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/fi.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": [
+ "Crt",
+ "Nike"
+ ]
+ },
+ "questycaptcha-addurl": "Muokkauksesi sisältää uusia ulkoisia linkkejä.\nAutomatisoitujen roskamuokkausten välttämiseksi vastaa alla olevaan kysymykseen ([[Special:Captcha/help|lisätietoja]]):",
+ "questycaptcha-badlogin": "Automatisoidun salasanan murtamisen estämiseksi vastaa alla olevaan kysymykseen ([[Special:Captcha/help|lisätietoja]]):",
+ "questycaptcha-createaccount": "Automaattisen käyttäjätunnusten luonnin estämiseksi vastaa alla olevaan kysymykseen ([[Special:Captcha/help|lisätietoja]]):",
+ "questycaptcha-create": "Luodaksesi sivun vastaa alla olevaan kysymykseen ([[Special:Captcha/help|lisätietoja]]):",
+ "questycaptcha-edit": "Muokataksesi tätä sivua vastaa alla olevaan kysymykseen ([[Special:Captcha/help|lisätietoja]]):",
+ "questycaptcha-sendemail": "Automatisoidun roskapostin lähettämisen estämiseksi vastaa alla olevaan kysymykseen ([[Special:Captcha/help|lisätietoja]]):",
+ "questycaptchahelp-text": "Web-sivustot, jotka hyväksyvät materiaalia yleisöltä, kuten tämä wiki, joutuvat usein automaattisia työkaluja käyttävien \"spämmääjien\" kohteeksi jotka lisäävät linkkejä eri sivustoille. Vaikka nämä roskalinkit voidaan poistaa, ne ovat merkittävä haittatekijä.\n\nJoskus, erityisesti kun lisäät uusia Web-linkkejä sivulle, wiki saattaa pyytää sinua vastaamaan kysymykseen.\nKoska tämä on vaikeasti automatisoitava tehtävä, se antaa useimpien oikeiden henkilöiden osallistua estäen roskamuokkausten ja muiden automaattisten hyökkäysten tekijöitä.\n\nOta yhteyttä [[Special:ListAdmins|ylläpitäjiin]] saadaksesi avustusta jos tämä odottamattomasti estää sinua tekemästä asiallisia muokkauksia.\n\nNapsauta selaimesi 'takaisin'-painiketta palataksesi sivumuokkaimeen."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/fr.json b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/fr.json
new file mode 100644
index 00000000..98408474
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/fr.json
@@ -0,0 +1,19 @@
+{
+ "@metadata": {
+ "authors": [
+ "Gomoko",
+ "IAlex",
+ "Nicolas NALLET",
+ "Verdy p",
+ "Urhixidur"
+ ]
+ },
+ "questycaptcha-desc": "Générateur de questions ''captcha'' pour confirmer les modifications",
+ "questycaptcha-addurl": "Votre modification inclut de nouveaux liens externes.\nPour protéger le wiki contre le pourriel de modification automatisé, nous vous demandons de bien vouloir répondre à la question ci-dessous ([[Special:Captcha/help|plus d’informations]]) :",
+ "questycaptcha-badlogin": "Afin de protéger le wiki contre le cassage automatisé des mots de passe, nous vous demandons de bien vouloir répondre à la question ci-dessous ([[Special:Captcha/help|plus d’informations]]) :",
+ "questycaptcha-createaccount": "Afin de protéger le wiki contre les créations automatiques de comptes, nous vous demandons de bien vouloir répondre à la question qui apparaît ci-dessous ([[Special:Captcha/help|plus d’informations]]) :",
+ "questycaptcha-create": "Pour créer la page, veuillez répondre à la question ci-dessous ([[Special:Captcha/help|plus d’informations]]) :",
+ "questycaptcha-edit": "Pour créer, modifier ou publier cette page, veuillez répondre à la question ci-dessous ([[Special:Captcha/help|plus d’informations]]) :",
+ "questycaptcha-sendemail": "Afin de protéger le wiki contre le pourriel automatique, nous vous demandons de bien vouloir répondre à la question ci-dessous ([[Special:Captcha/help|plus d’informations]]) :",
+ "questycaptchahelp-text": "Les sites web qui acceptent des contributions du public, tels que ce wiki, sont souvent victimes de polluposteurs qui utilisent des outils automatisés pour placer de nombreux liens vers leurs sites.\nMême si cette pollution peut être effacée, elle n’en reste pas moins irritante.\n\nParfois, particulièrement lors de l’ajout de nouveaux liens externes dans une page, le wiki peut vous demander de répondre à une question.\nCette tâche étant difficile à accomplir de façon automatisée, cela permet à la plupart des humains de réaliser leurs contributions tout en stoppant la plupart des polluposteurs et autres attaquants robotisés.\n\nVeuillez contacter [[Special:ListAdmins|les administrateurs du site]] si cela vous empêche de façon inattendue de faire des contributions légitimes.\n\nCliquez sur le bouton « Précédent » de votre navigateur pour revenir à la page de modification."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/gl.json b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/gl.json
new file mode 100644
index 00000000..b29505e4
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/gl.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": [
+ "Toliño"
+ ]
+ },
+ "questycaptcha-desc": "Xerador de preguntas CAPTCHA para Confirm Edit",
+ "questycaptcha-addurl": "A súa edición inclúe novas ligazóns externas.\nPara protexer o wiki contra o spam automático, conteste a pregunta que aparece a continuación ([[Special:Captcha/help|máis información]]):",
+ "questycaptcha-badlogin": "Para protexer o wiki contra o roubo de contrasinais, conteste a pregunta que aparece a continuación ([[Special:Captcha/help|máis información]]):",
+ "questycaptcha-createaccount": "Para protexer o wiki contra a creación automática de contas, conteste a pregunta que aparece a continuación ([[Special:Captcha/help|máis información]]):",
+ "questycaptcha-create": "Para crear a páxina, conteste a pregunta que aparece a continuación ([[Special:Captcha/help|máis información]]):",
+ "questycaptcha-edit": "Para editar esta páxina, conteste a pregunta que aparece a continuación ([[Special:Captcha/help|máis información]]):",
+ "questycaptcha-sendemail": "Para protexer o wiki contra o spam automático, conteste a pregunta que aparece a continuación ([[Special:Captcha/help|máis información]]):",
+ "questycaptchahelp-text": "Os sitios web que aceptan publicar as contribucións dos usuarios, coma este wiki, sofren, con frecuencia, o abuso por parte de spammers que usan ferramentas que automatizan a inclusión de lixo en forma de ligazóns publicitarias, nunha chea de páxinas, en pouco tempo.\nMentres as devanditas ligazóns non son eliminadas supoñen unha molestia e unha perda de tempo.\n\nEn ocasións, en particular cando engada algunha nova ligazón externa, o wiki pode pedirlle que conteste unha pregunta.\nComo esta tarefa é difícil de automatizar, permite distinguir entre persoas e robots e dificulta os ataques automatizados dos spammers.\n\nPor favor, póñase en contacto cun [[Special:ListAdmins|administrador do sitio]] para solicitar axuda se o sistema lle impide rexistrarse para facer contribucións lexítimas.\n\nPrema no botón \"Atrás\" do seu navegador para volver á páxina de edición."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/gsw.json b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/gsw.json
new file mode 100644
index 00000000..c1c7583a
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/gsw.json
@@ -0,0 +1,16 @@
+{
+ "@metadata": {
+ "authors": [
+ "Als-Chlämens",
+ "Als-Holder",
+ "J. 'mach' wust"
+ ]
+ },
+ "questycaptcha-addurl": "In Dynere Bearbeitig het s neji extärni Links.\nAs Schutz gege automatischi Spam, beantwort bitte d Frog, wu do unter gnännt wird ([[Special:Captcha/help|meh Informatione]]):",
+ "questycaptcha-badlogin": "As Schutz gege ne automatisch Passwort-Knacke, beantwort bitte d Frog, wu do unte gnännt wird ([[Special:Captcha/help|meh Informatione]]):",
+ "questycaptcha-createaccount": "As Schutz gege ne automatisch Aalege vu Benutzerkonte, beantwort bitte d Frog, wu do unte gnännt wird ([[Special:Captcha/help|meh Informatione]]):",
+ "questycaptcha-create": "Go d Syte aalege, beantwort bitte d Frog, wu do unte gnännt wird ([[Special:Captcha/help|meh Informatione]]):",
+ "questycaptcha-edit": "Go die Syte bearbeite, beantwort bitte d Frog, wu do unte gnännt wird ([[Special:Captcha/help|meh Informatione]]):",
+ "questycaptcha-sendemail": "As Schutz gege e automatischs Spamming, beantwort bitte d Frog, wu do unte gnännt wird ([[Special:Captcha/help|meh Informatione]]):",
+ "questycaptchahelp-text": "Websyte, wu alli chenne byytrage, wie des Wiki, wäre vylmol missbrucht vu Spammer, wu automatischi Wärchzyg bruche go ihri Link in meglischt vyli Syte yyfiege.\nAu wänn die Spamlink chenne wider uusegnuu wäre, sin si einewäg e zimlig Ärgernis.\n\nAb un zue, vor allem wänn neji Weblink in e Syte yygfiegt wäre, forderet s Wiki Di villicht uf, e Frog z beantworte.\nWel des e Ufgab isch, wu mer schwär cha automatisiere, isch des e Megligkeit, Spammer un anderi automatischi Attacke z verhindere, derwylscht di meischte mänschlige Benutzer ihri Bearbeitige chenne byytrage.\n\nBitte nimm Kontakt uf zue dr [[Special:ListAdmins|Website-Administratore]] fir Hilf, wänn des unerwarteterwys verhinderet, ass Du chasch rächtmäßigi Bearbeitige mache.\n\nDruck dr 'Zruck'-Chnopf in Dyym Browser go zuem Bearbeitigsfänschter zruckgoh."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/he.json b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/he.json
new file mode 100644
index 00000000..c5588b17
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/he.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": [
+ "Rotemliss",
+ "YaronSh"
+ ]
+ },
+ "questycaptcha-addurl": "עריכתכם כוללת קישורים חיצוניים חדשים.\nכהגנה מפני ספאם אוטומטי, אנא ענו על השאלה המופיעה להלן ([[Special:Captcha/help|מידע נוסף]]):",
+ "questycaptcha-badlogin": "כהגנה מפני פריצת סיסמאות אוטומטית, אנא ענו על השאלה המופיעה להלן ([[Special:Captcha/help|מידע נוסף]]):",
+ "questycaptcha-createaccount": "כהגנה מפני יצירת חשבונות אוטומטית, אנא ענו על השאלה המופיעה להלן ([[Special:Captcha/help|מידע נוסף]]):",
+ "questycaptcha-create": "כדי ליצור את הדף, אנא ענו על השאלה המופיעה להלן ([[Special:Captcha/help|מידע נוסף]]):",
+ "questycaptcha-edit": "כדי לערוך את הדף, אנא ענו על השאלה המופיעה להלן ([[Special:Captcha/help|מידע נוסף]]):",
+ "questycaptcha-sendemail": "כדי לסייע בהגנה מפני הודעות ספאם אוטומטיות, נא לענות על השאלה המופיעה להלן ([[Special:Captcha/help|מידע נוסף]]):",
+ "questycaptchahelp-text": "פעמים רבות מנצלים ספאמרים אתרים שמקבלים תוכן מהציבור, כמו אתר הוויקי הזה, כדי להוסיף את הקישורים שלהם לאתרים רבים באינטרנט, באמצעות כלים אוטומטיים.\nאמנם ניתן להסיר את קישורי הספאם הללו, אך הם מהווים מטרד משמעותי.\n\nלעתים, בעיקר כשאתם מכניסים קישורי אינטרנט חדשים לתוך עמוד, אתר הוויקי עשוי לבקש מכם לענות על שאלה.\nכיוון שזו משימה שקשה לבצעה בצורה אוטומטית, הדבר יאפשר לבני־אדם אמיתיים לשלוח את הדפים, אך יעצור את רוב הספאמרים והמתקיפים הרובוטיים האחרים.\n\nאנא צרו קשר עם [[Special:ListAdmins|מפעילי המערכת]] לעזרה אם המערכת מונעת מכם באופן בלתי צפוי לבצע עריכות לגיטימיות.\n\nלחצו על הכפתור 'Back' בדפדפן שלכם כדי לחזור לדף העריכה."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/hsb.json b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/hsb.json
new file mode 100644
index 00000000..db3fda1a
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/hsb.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": [
+ "Michawiki",
+ "J budissin"
+ ]
+ },
+ "questycaptcha-addurl": "Twoja změna wobsahuje nowe eksterne wotkazy.\nZa škit přećiwo awtomatizowanemu spamej, wotmołw prošu na prašenje, kotrež so deleka jewi ([[Special:Captcha/help|dalše informacije]]):",
+ "questycaptcha-badlogin": "Za škit přećiwo awtomatiskemu kradnjenju hesła, wotmołw prošu na prašenje, kotrež so deleka jewi ([[Special:Captcha/help|dalše informacije]]):",
+ "questycaptcha-createaccount": "Za škit přećiwo awtomatizowanemu tworjenju kontow, wotmołw prošu na prašenje, kotrež so deleka jewi ([[Special:Captcha/help|dalše informacije]]):",
+ "questycaptcha-create": "Zo by stronu wutworił, wotmołw prošu na prašenje, kotrež so deleka jewi ([[Special:Captcha/help|dalše informacije]]):",
+ "questycaptcha-edit": "Zo by tutu stronu změnił, wotmołw prošu na prašenje, kotrež so deleka jewi ([[Special:Captcha/help|dalše informacije]]):",
+ "questycaptcha-sendemail": "Za škit přećiwo awtomatiskemu spamowanju, wotmołw prošu na prašenje, kotrež so deleka jewi ([[Special:Captcha/help|dalše informacije]]):",
+ "questycaptchahelp-text": "Websydła, kotrež přinoški ze zjawnosće akceptuja, kaž tutón wiki, so často wot spamarjow znjewužiwaja, kotřiž awtomatizowane nastroje wužiwaja, zo bychu swoje wotkazy wjele sydłam přidali. Hačrunjež so tute spamowe wotkazy hodźa wotstronić, su wone njesnadnje mjerzace.\n\nDruhdy, wosebje, hdyž so stronje nowe webwotkazy přidawaja, wiki so će něšto praša.\nDokelž je to nadawk, kotryž hodźi so jenož ćežko awtomatizować, dowoluje to woprawdźitym wosobam swoje přinoški wotpósłać, mjeztym zo so najwjace spamarjow a druhich nadpadowacych botow blokuje. \n\nProšu přińdź z [[Special:ListAdmins|administratorami sydła]] do rozmołwy wo pomoc, jeli to će haći legitimne přinoški wotpósłać. \n\nKlikń na tłóčatko \"Wróćo\" w swojim wobhladowaku, zo by so k wobdźěłowanskemu woknu wróćił."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/hu.json b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/hu.json
new file mode 100644
index 00000000..10763341
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/hu.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": [
+ "Glanthor Reviol",
+ "Tacsipacsi"
+ ]
+ },
+ "questycaptcha-addurl": "A szerkesztésed új külső hivatkozásokat tartalmaz.\nAz automatizált spamek megelőzése miatt kérjük, válaszolj az alábbi kérdésre ([[Special:Captcha/help|további segítség]]):",
+ "questycaptcha-badlogin": "Hogy az automatizált jelszófeltörési kísérleteket megelőzzük, kérjük, válaszolj az alábbi kérdésre ([[Special:Captcha/help|további segítség]]):",
+ "questycaptcha-createaccount": "A felhasználói fiókok automatizált létrehozásának elkerülésére kérjük, válaszolj az alábbi kérdésre ([[Special:Captcha/help|segítség]]):",
+ "questycaptcha-create": "Kérlek válaszolj az alábbi kérdésre a lap létrehozásához ([[Special:Captcha/help|további információk]]):",
+ "questycaptcha-edit": "A lap szerkesztéséhez kérlek válaszolj az alábbi kérdésre ([[Special:Captcha/help|további információk]]):",
+ "questycaptcha-sendemail": "Az automatizált spamek megelőzése miatt kérjük, válaszolj az alábbi kérdésre ([[Special:Captcha/help|további segítség]]):",
+ "questycaptchahelp-text": "Az olyan weboldalakat, amelyekre bárki írhat, gyakran támadják meg spammerek olyan eszközök felhasználásával, amelyek képesek automatikusan, emberi felügyelet nélkül elhelyezni hivatkozásokat sok különböző oldalon. \n\nNéha, különösen ha egy új külső hivatkozást teszel egy szócikkbe, a wiki egy egy kérdés megválaszolására kérhet.\nMivel ezt nehéz automatizálni, a valódi szerkesztőknek lehetőségük lesz szerkeszteni, miközben kiszűri a legtöbb spammert és más automatizált kártevőket.\n\nHa ez nem várt módon akadályoz a hasznos közreműködéseidben, segítségért kérlek vedd fel a kapcsolatot [[Special:ListAdmins|az oldal adminisztrátoraival]].\n\nHasználd a böngésződ „vissza” gombját a szöveg szerkesztéséhez való visszalépéshez."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/ia.json b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/ia.json
new file mode 100644
index 00000000..b90c222e
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/ia.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "McDutchie"
+ ]
+ },
+ "questycaptcha-addurl": "Tu modification include nove ligamines externe.\nPro adjutar a proteger le wiki contra le spam automatisate, per favor responde al question que appare infra ([[Special:Captcha/help|plus info]]):",
+ "questycaptcha-badlogin": "Pro adjutar a proteger le wiki contra le furto automatisate de contrasignos, per favor responde al question que appare infra ([[Special:Captcha/help|plus info]]):",
+ "questycaptcha-createaccount": "Pro adjutar a proteger le wiki contra le creation automatisate de contos, per favor responde al question que appare infra ([[Special:Captcha/help|plus info]]):",
+ "questycaptcha-create": "Pro crear le pagina, per favor responde al question ci infra ([[Special:Captcha/help|plus info]]):",
+ "questycaptcha-edit": "Pro modificar iste pagina, per favor responde al question ci infra ([[Special:Captcha/help|plus info]]):",
+ "questycaptcha-sendemail": "Pro adjutar a proteger le wiki contra le spam automatisate, per favor responde al question que appare infra ([[Special:Captcha/help|plus info]]):",
+ "questycaptchahelp-text": "Le sitos web que accepta contributiones del publico, como iste wiki, es frequentemente abusate per spammatores que usa instrumentos automatic pro publicar lor ligamines in multe sitos.\nBen que iste ligamines spam pote esser eliminate, illos constitue un considerabile molestia.\n\nAlcun vices, specialmente quando tu adde nove ligamines web a un pagina, le wiki pote demandar te de responder a un question.\nPost que isto es un carga difficile de automatisar, isto permittera al major parte del humanos real de facer lor contributiones, durante que le major parte del spammatores e altere attaccatores robotic es stoppate.\n\nPer favor contacta le [[Special:ListAdmins|administratores del sito]] pro assistentia si isto insperatemente te impedi de facer contributiones legitime.\n\nClicca le button 'retro' in tu navigator pro retornar al editor de paginas."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/id.json b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/id.json
new file mode 100644
index 00000000..9b815287
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/id.json
@@ -0,0 +1,17 @@
+{
+ "@metadata": {
+ "authors": [
+ "Bennylin",
+ "Irwangatot",
+ "IvanLanin",
+ "Iwan Novirion"
+ ]
+ },
+ "questycaptcha-addurl": "Suntingan Anda menambahkan pranala eksternal yang baru.\nUntuk melindungi dari spam otomatis, mohon jawab pertanyaan di bawah ini\n([[Special:Captcha/help|info lebih lanjut]]):",
+ "questycaptcha-badlogin": "Untuk melindungi dari pemecah kata sandi otomatis, mohon jawab pertanyaan di bawah ini\n([[Special:Captcha/help|info lebih lanjut]]):",
+ "questycaptcha-createaccount": "Untuk melindungi dari pembuatan akun otomatis, mohon jawab pertanyaan di bawah ini\n([[Special:Captcha/help|info lebih lanjut]]):",
+ "questycaptcha-create": "Untuk membuat halaman, mohon jawab pertanyaan di bawah ini\n([[Special:Captcha/help|info lebih lanjut]]):",
+ "questycaptcha-edit": "Untuk menyunting halaman ini, mohon jawab pertanyaan di bawah ini\n([[Special:Captcha/help|info lebih lanjut]]):",
+ "questycaptcha-sendemail": "Sebagai pelindungan terhadap spam otomatis, silahkan jawab pertanyaan di bawah ini ([[Special:Captcha/help|info lengkap]]):",
+ "questycaptchahelp-text": "Situs-situs web yang menerima tulisan dari publik, seperti wiki ini, kerapkali disalahgunakan oleh pengguna-pengguna yang tidak bertanggungjawab untuk mengirimkan spam dengan menggunakan program-program otomatis guna membahkan prnala mereka pada berbagai situs web.\nWalaupun pranala-pranala spam tersebut dapat dibuang, tetapi tetap saja menimbulkan gangguan yang berarti.\n\nKadang-kadang, terutama sat menambahkan pranala web baru ke suatu halaman, wiki akan meminta anda menjawab suatu pertanyaan. \nKarena ini merupakan suatu pekerjaan yang sulit diotomatisasi, pembatasan ini akan dapat dengan mudah dilalui oleh manusia, sekaligus juga dapat menghentikan hampir semua serangan spam dan robot otomatis lainnya.\n\nSilakan hubungi [[Special:ListAdmins|pengurus]] untuk meminta bantuan jika hal ini menghambat anda untuk mengirimkan suntingan yang layak.\n\nTekan tombol 'back' di penjelajah web Anda untuk kembali ke halaman penyuntingan."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/ilo.json b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/ilo.json
new file mode 100644
index 00000000..ddf34740
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/ilo.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Lam-ang"
+ ]
+ },
+ "questycaptcha-addurl": "Ti unurnosmo ket mangiraman kadagiti silpo ti ruar.\nTapno masalakniban ti wiki kadagiti spam nga automatiko a naurnos, naemmakami nga agkiddaw kenka nga ikabilmo dagiti balikas nga agparang dita baba ([[Special:Captcha/help|adu ay a pakaammo]]):",
+ "questycaptcha-badlogin": "Tapno makasalakniban ti wiki kadagiti automatiko a pinagsulbar ti kontrasenias, naemmakami nga agkiddaw kenka a sungbatam ti saludsod nga agparang dita baba. ([[Special:Captcha/help|adu pay a pakaammo]]):",
+ "questycaptcha-createaccount": "Tapno makasalakniban ti wiki kadagiti automatiko a panagpartuat ti pakabilangan, naemmakami nga agkiddaw kenka a sungbatam ti saludsod nga agparang dita baba. ([[Special:Captcha/help|adu pay a pakaammo]]):",
+ "questycaptcha-create": "Tapno makaaramid ti panid, pangaasim a sungbatan ti saludsud a nagparang dita baba. ([[Special:Captcha/help|adu pay a pakaammo]]):",
+ "questycaptcha-edit": "Tapno makaurnoy ditoya panid, pangaasim a sungbatan ti saludsud a nagparang dita baba. ([[Special:Captcha/help|adu pay a pakaammo]]):",
+ "questycaptcha-sendemail": "Tapno makasalakniban ti wiki kadagiti automatiko a panag-spam, naemmakami nga agkiddaw kenka a sungbatam ti saludsod nga agparang dita baba. ([[Special:Captcha/help|adu pay a pakaammo]]):",
+ "questycaptchahelp-text": "Dagiti sapot a pagsaadan nga agaw-awat kadagiti maipablaak iti publiko, kasla daytoy a wiki, ket kanayon nga inabuso dagiti spammers nga agus-usar ti automatiko a ramramit ti pinagipablaak da kadagiti kukua da a panilpo ti adu a pagsasaadan. \nMaikkat met dagitoy a panilpo, mgen makariri da unay.\n\nNo sagpaminsan pay, nangruna no agikabil kadagiti baro a panilpo ti sapot iti panid, ti wiki ket agdamag kenka nga agsungbat ti maysa a saludsod. \nYantangay daytoy ket obra a narigat a ma-automatiko, agpalubos kadagiti agpayso a tattao ti agipablaak bayat nga agpasardeng ti kaaduan a spammers ken dagiti robot nga agraraut.\n\nPangngaasi a kontaken ti [[Special:ListAdmins|administrador ti pagsaadan ]] para iti pannulong no daytoy ket saan a napadpadaanan a pawilan na ti agpayso a pinagbaplaak mo.\n\nPeslen ti 'agsubli' a buton dita pagbasabasam (browser) ti agsubli idiay panid ti pinagurnos."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/io.json b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/io.json
new file mode 100644
index 00000000..577b8d7c
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/io.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Joao Xavier"
+ ]
+ },
+ "questycaptchahelp-text": "Pagini de l'interreto qui aceptas kontributaji del publiko, exemple ica Wiki, freque atakesas dal 'spammers', qui uzas programachi por komputeri qui adjuntas lia ligili a multa retpagini.\nMalgre ke la ligili 'spam' povas efacesar, li esas signifikiva jeno.\n\nKelkafoye, note kande vu adjuntos nova interretala ligili en ula pagino, la Wiki povos questionar vu.\nPro ke esas nefacila automatigar la respondi a la questioni, la questionado impedos la maxim multa ataki da 'spammers' ed altra automatala ataki, dum ke ol permisos la maxim multa homi kontributar.\n\nVoluntez demandar helpo del [[Special:ListAdmins|administreri di ca Wiki]] se ca procedo impedus vu sendor vua yusta kontributaji.\n\nKliktez la butono \"retroirar\" (\"back\") de vua retnavigilo por retroirar a la redakto-pagino."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/it.json b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/it.json
new file mode 100644
index 00000000..274ae3fa
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/it.json
@@ -0,0 +1,16 @@
+{
+ "@metadata": {
+ "authors": [
+ "Beta16",
+ "Darth Kule",
+ "Nemo bis"
+ ]
+ },
+ "questycaptcha-addurl": "La modifica richiesta aggiunge dei collegamenti esterni alla pagina.\nPer proteggere il wiki dallo spam automatico, ti chiediamo gentilmente di rispondere alla domanda che compare di seguito ([[Special:Captcha/help|come funziona?]]):",
+ "questycaptcha-badlogin": "Per proteggere il wiki dalla forzatura automatica delle password, ti chiediamo gentilmente di rispondere alla domanda che compare di seguito ([[Special:Captcha/help|come funziona?]]):",
+ "questycaptcha-createaccount": "Per proteggere il wiki dalla creazione automatica di nuovi accessi, ti chiediamo gentilmente di rispondere alla domanda che compare di seguito ([[Special:Captcha/help|come funziona?]]):",
+ "questycaptcha-create": "Per creare la pagina si prega di rispondere alla domanda che compare di seguito ([[Special:Captcha/help|come funziona?]]):",
+ "questycaptcha-edit": "Per modificare questa pagina si prega di rispondere alla domanda che compare di seguito ([[Special:Captcha/help|come funziona?]]):",
+ "questycaptcha-sendemail": "Per proteggere il wiki dalle modifiche automatiche che aggiungono spam, ti chiediamo gentilmente di rispondere alla domanda che compare di seguito ([[Special:Captcha/help|come funziona?]]):",
+ "questycaptchahelp-text": "Capita spesso che i siti web che accettano contributi pubblici, come questo wiki, siano presi di mira da persone che usano strumenti automatici per inserire collegamenti pubblicitari verso un gran numero di siti (spam). Per quanto i collegamenti indesiderati si possano rimuovere, si tratta comunque di una seccatura non indifferente. \n\nIn alcuni casi, ad esempio quando si tenta di aggiungere nuovi collegamenti web in una pagina, il software wiki può richiedere di rispondere a una domanda. Poiché si tratta di un'azione difficile da replicare da parte di un computer, questo meccanismo consente a (quasi tutti) gli utenti reali di effettuare i proprio contributi, impedendo l'accesso alla maggior parte degli spammer e degli altri attacchi automatizzati. \n\nSe queste procedure impediscono contributi che si ritengono legittimi, si prega di contattare gli [[Special:ListAdmins|amministratori del sito]] e chiedere loro assistenza. \n\nFare clic sul pulsante \"indietro\" del browser per tornare alla pagina di modifica."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/ja.json b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/ja.json
new file mode 100644
index 00000000..7c81976a
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/ja.json
@@ -0,0 +1,17 @@
+{
+ "@metadata": {
+ "authors": [
+ "Aotake",
+ "Fryed-peach",
+ "Shirayuki"
+ ]
+ },
+ "questycaptcha-desc": "Confirm Edit 用の質問形式 CAPTCHA ジェネレーター",
+ "questycaptcha-addurl": "あなたは新しい外部リンクを追加しようとしています。\nウィキへの自動スパム攻撃を防ぐため、お手数をおかけしますが下記の確認用の質問に回答してください ([[Special:Captcha/help|詳細]]):",
+ "questycaptcha-badlogin": "ウィキへの自動パスワードクラック攻撃を防ぐため、お手数をおかけしますが下記の確認用の質問に回答してください ([[Special:Captcha/help|詳細]]):",
+ "questycaptcha-createaccount": "ウィキでのアカウント自動作成を防ぐため、お手数をおかけしますが下記の確認用の質問に回答してください ([[Special:Captcha/help|詳細]]):",
+ "questycaptcha-create": "ページを新規作成するには、下記の確認用の質問に回答してください ([[Special:Captcha/help|詳細]]):",
+ "questycaptcha-edit": "このページを編集するには、下記の確認用の質問に回答してください ([[Special:Captcha/help|詳細]]):",
+ "questycaptcha-sendemail": "ウィキへの自動スパム攻撃を防ぐため、お手数をおかけしますが下記の確認用の質問に回答してください ([[Special:Captcha/help|詳細]]):",
+ "questycaptchahelp-text": "一般からの投稿を受け付けるこのウィキのようなウェブサイトは、自動投稿ツールを使って多くのサイトにリンクを張ってまわるスパマーにより荒らされがちです。このようなスパムは除去できるものの、その作業は大変に面倒なものです。\n\nこのため、このウィキではときどき、特に新しい外部リンクがページに追加されたときなどに、質問に答えていただくようお願いすることがあります。この作業は自動化が難しいため、スパマーなどのプログラムを用いた攻撃をほぼ阻止しつつ、大半の生身の人間による投稿を可能にします。\n\n正当な投稿をするにあたって本機能が障害となっている場合、[[Special:ListAdmins|サイト管理者]]に連絡して協力を求めてください。\n\nページの編集に戻るには、ブラウザーの「戻る」ボタンを押してください。"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/ko.json b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/ko.json
new file mode 100644
index 00000000..61e3b877
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/ko.json
@@ -0,0 +1,18 @@
+{
+ "@metadata": {
+ "authors": [
+ "Kwj2772",
+ "Priviet",
+ "아라",
+ "Revi"
+ ]
+ },
+ "questycaptcha-desc": "편집 확인에 대한 탐구적인 CAPCHA(캡차) 생성기",
+ "questycaptcha-addurl": "편집에 새로운 바깥 고리가 포함되어 있습니다.\n자동 편집 스팸으로부터 보호하기 위해, 아래에 보이는 질문에 답해주세요 ([[Special:Captcha/help|자세한 정보]]):",
+ "questycaptcha-badlogin": "자동 비밀번호 크래킹으로부터 보호하기 위해, 아래에 보이는 질문에 답해주세요 ([[Special:Captcha/help|자세한 정보]]):",
+ "questycaptcha-createaccount": "자동 계정 만들기로부터 보호하기 위해, 아래에 보이는 질문에 답해주세요 ([[Special:Captcha/help|자세한 정보]]):",
+ "questycaptcha-create": "문서를 만드려면 아래에 보이는 질문에 답해주세요 ([[Special:Captcha/help|자세한 정보]]):",
+ "questycaptcha-edit": "이 문서를 편집하려면 아래에 보이는 질문에 답해주세요 ([[Special:Captcha/help|자세한 정보]]):",
+ "questycaptcha-sendemail": "자동화된 스팸으로부터 보호하기 위해, 아래에 보이는 질문에 답해주세요 ([[Special:Captcha/help|자세한 정보]]):",
+ "questycaptchahelp-text": "이 위키와 같이 사람의 공개적인 참여가 가능한 웹 사이트에서는 자동 프로그램이 스팸을 뿌리는 경우가 있습니다.\n물론 이러한 스팸은 제거할 수는 있지만 번거로운 작업이 늘어납니다.\n\n이러한 스팸을 방지하기 위해서, 이 위키의 문서에 웹 사이트 주소를 추가하는 등의 행동을 할 경우에는 질문에 답해달라고 하는 경우가 있습니다.\n이 글자 입력 작업은 자동 프로그램을 만들기가 힘들기 때문에 스팸을 효과적으로 막으면서 일반 사용자를 막지 않을 수 있습니다.\n\n예기치않게 정당한 행동을 하지 못하도록 막는다면 [[Special:ListAdmins|사이트 관리자]]에게 도움을 요청해 주세요.\n\n이전 화면으로 돌아가려면 웹 브라우저의 \"뒤로\" 버튼을 클릭하세요."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/ksh.json b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/ksh.json
new file mode 100644
index 00000000..63ddbcdf
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/ksh.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": [
+ "Purodha"
+ ]
+ },
+ "questycaptcha-desc": "Dä <span style=\"text-transform:uppercase\" title=\"Jät zom Ennjävve, öm ze zeije, dadd ene Minsch vör em Kompjuhter sez\">Kaptscha</span>-Jennerahtor för et Zohsazprojramm Confirm Edit",
+ "questycaptcha-addurl": "Ding Änderung säz neu Lengks noh ußerhallef vum Wiki.\nÖm uns jäje der automattesch dobeijedonn <i lang=\"en\">SPAM</i> ze hellefe,\nbes esu joot un donn di Frooch be_anntwoode, di heh dronger shteiht.\n([[Special:Captcha/help|Mieh Enfommazjuhne]])",
+ "questycaptcha-badlogin": "Öm uns jäje et automattesche Paßwootknacke ze hellefe,\nbes esu joot un donn di Frooch be_anntwoode, di heh dronge shteiht.\n([[Special:Captcha/help|Mieh Enfommazjuhne]])",
+ "questycaptcha-createaccount": "Öm uns jäje et maßesch automattesch neu Metmaacher Aanlääje ze hellefe,\nbes esu joot un donn di Frooch be_anntwoode, di heh dronger shteiht.\n([[Special:Captcha/help|Mieh Enfommazjuhne]])",
+ "questycaptcha-create": "Öm di Sigg aanzelääje,\nbes esu joot, donn di Frooch be_anntwoode, di heh dronge shteiht.\n([[Special:Captcha/help|Mieh Enfommazjuhne]])",
+ "questycaptcha-edit": "Öm di Sigg ze änderee,\nbes esu joohd, donn di Frohch be_anntwoode, di heh dronge schhteiht.\n([[Special:Captcha/help|Mih Enfommazjuhne]])",
+ "questycaptcha-sendemail": "Öm et Wiki jääje automattesch enjedraare SPAM ze schötze,\nbes esu joot, donn di Frooch be_anntwoode, di heh dronger shteiht.\n([[Special:Captcha/help|Mieh Enfommazjuhne]])",
+ "questycaptchahelp-text": "Websigge, di Beijdrääsch vun de Öffentleschkeit aannämme, wi dat Wiki heh,\nwääde öff vun <i lang=\"en\">SPAM</i>mer heimjesöhk. Di bruche Projramme\nför ier Lengks udder annder Jedrieße automattesch en dousende Wikis erin\nze bränge. Der <i lang=\"en\">SPAM</i> kam_mer wider fott maache, ävver dä\nblief e Ärjeneß.\n\nManschmohl, besönders, wann De neu Lengks en en Sigg donn wells, künnt et\nWiki Desch bedde, en Frooch ze be_antwoode. Nohdämm dat schwiiresch mem\nautomattesche Projramm henzekrijje es, löht et de Minsche ier Beidrääsch\nmaache, deiht ävver de miehßte <i lang=\"en\">SPAM</i>mer un ander Robots affhallde.\n\nDonn Desh aan de [[Special:ListAdmins|Köbeße vum Wiki]] wende,\nwann et Der trozdämm en de Fööß kütt, un De Dinge aanshtändejje Beijdraach\nnit en et Wiki kriß!\n\nDä „Retuur“-Lengk udder -Knopp vun Dingem Brauser brängk Desch wider op\ndi Sigg zom Ändere, woh De jraad wohß."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/lb.json b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/lb.json
new file mode 100644
index 00000000..d2a81535
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/lb.json
@@ -0,0 +1,16 @@
+{
+ "@metadata": {
+ "authors": [
+ "Les Meloures",
+ "Robby",
+ "Soued031"
+ ]
+ },
+ "questycaptcha-addurl": "An Ärer Ännerung sinn nei extern Linken.\nFir d'Wiki géint automatesche Spam-Ännerungen ze schützen, froe mir Iech d'Fro hei ënnendrënner ze beäntweren ([[Special:Captcha/help|méi Informatiounen]]):",
+ "questycaptcha-badlogin": "Fir dës Wiki géint d'automatiséiert Knacke vu Passwierder ze schütze, froe mir Iech d'Fro hei ënnendrënner ze beäntweren ([[Special:Captcha/help|méi Informatiounen]]):",
+ "questycaptcha-createaccount": "Fir d'Wiki géint d'automatiséiert Uleeë vu Benotzerkonten ze schützen, froe mir Iech d'Fro hei ënnendrënner ze beäntweren ([[Special:Captcha/help|méi Informatiounen]]):",
+ "questycaptcha-create": "Fir d'Säit unzeleeën, beäntwert w.e.g. déi Fro hei ënnedrënner ([[Special:Captcha/help|méi Informatiounen]]):",
+ "questycaptcha-edit": "Fir dës Säit z'änneren, beäntwert w.e.g. déi Fro hei ënnedrënner ([[Special:Captcha/help|méi Informatiounen]]):",
+ "questycaptcha-sendemail": "Fir ze hëllefe dës Wiki géint automatiséierte Spam ze schütze, beäntwert w.e.g. déi Fro hei ënnendrënner ([[Special:Captcha/help|méi Informatiounen]]):",
+ "questycaptchahelp-text": "Websäiten, déi et jiddwerengem erlaben Ännerunge virzehuelen, sou wéi dës Wiki, ginn dacks vu sougenannte Spammer mëssbraucht, déi automatiséiert hir Linken op vill Internetsäite setzen.\nSou Spam-Linke kënne wuel geläscht ginn, mä si sinn trotzdeem eng grouss Plo.\n\nHeiansdo, besonnesch wann nei Internet-Linken op eng Säit dobäigesat ginn, freet dës Wiki Iech eng Fro ze beäntwerten.\nWell dëst eng Aufgab ass déi schwéier z'automatiséieren ass, erlaabt dëst datt Mënschen hir Ännerunge kënnen agi während déi meescht Spammer an aner Roboter-Attacke kënnen ofgewiert ginn.\n\nKontaktéiert w.e.g. d'[[Special:ListAdmins|Administrateure vun dësem Site]] fir Hëllef wann dëst Iech onerwaarter Weis vu legitimen Editten ofhält.\n\nDréckt op den 'Zréck' Knäppche vun ärem Browser fir an d'Beaarbechtungsfënster zréckzekommen."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/lij.json b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/lij.json
new file mode 100644
index 00000000..85c5f545
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/lij.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Giromin Cangiaxo"
+ ]
+ },
+ "questycaptcha-addurl": "A modiffica domandâ a l'azonze di colegamenti esterni a-a paggina.\nPe proteze o wiki da-o spam automatico, te domandemmo gentilmente de risponde a-a domanda ch'a compâ chì aproeuvo ([[Special:Captcha/help|comme l'è ch'o fonçion-a?]]):",
+ "questycaptcha-badlogin": "Pe proteze a wiki da-a sforçatua aotomatizâ de password, te preghemmo de risponde a-a domanda ch'a compâ chì de sotta ([[Special:Captcha/help|comme l'è ch'o fonçion-a?]]):",
+ "questycaptcha-createaccount": "Pe proteze a wiki da-i tentativi de registraçion aotomatizâ, te domandemmo pe piaxei de risponde a-a domanda ch'a compâ chì de sotta ([[Special:Captcha/help|comme l'è ch'o funçion-a?]]):",
+ "questycaptcha-create": "Pe creâ a paggina se prega de risponde a-a domanda ch'a compâ chì de sotta ([[Special:Captcha/help|comme l'è ch'o fonçion-a?]]):",
+ "questycaptcha-edit": "Pe modificâ sta paggina se prega de risponde a-a domanda ch'a compâ chì aproeuvo ([[Special:Captcha/help|comme l'è ch'o fonçion-a?]]):",
+ "questycaptcha-sendemail": "Pe proteze o wiki da-a spam aotomatizâ, te preghemmo de risponde a-a domanda ch'a compâ chì de sotta ([[Special:Captcha/help|comme l'è ch'o fonçion-a?]]):",
+ "questycaptchahelp-text": "Sucede soventi che i sciti web ch'acettan de contribuçioin da-o pubbrico, comme questa wiki, seggian ascidiæ da di spammers ch'adoeuvian di strumenti aotomatizæ pe insei di inganci verso un muggio de sciti. Pe quante se posse levâ sti collegamenti indexidiæ, se tratta comunque de 'n fastiddio no indiferente. \n\nIn çerti caxi, presempio quande se tenta d'azonze di noeuvi collegamenti web inte 'na pagina, o software wiki o poriæ domandâte de risponde a 'na domanda. Scicomme se tratta de 'n'açion difiççile da aotomatizâ, sto meccanismo o consente a-a ciu gran parte di utenti reali de fâ e sò contribuçioin, impedindo l'accesso a-a ciu gran parte di spammer e di atri attacchi aotomatizæ. \n\nSe queste procedue t'impediscian de contriboî legittimamente, pe piaxei contatta i [[Special:ListAdmins|amministratoî do scito]] e domandighe ascistença. \n\nClicca o pomello \"inderê\" do navegatô pe tornâ a-a paggina de modiffica."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/lt.json b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/lt.json
new file mode 100644
index 00000000..0373f2bf
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/lt.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "Eitvys200"
+ ]
+ },
+ "questycaptcha-addurl": "Jūsų keitime yra naujų išorinių nuorodų.\nKad apsaugotume šią vikį nuo automatinio keitimų šlamšto, prašome atsakyti į klausimą esantį žemiau ([[Special:Captcha/help|daugiau informacijos]]):",
+ "questycaptcha-badlogin": "Kad apsaugotume vikį nuo automatizuoto slaptažodžių spėjimo, prašome atsakyti į klausimą esantį žemiau ([[Special:Captcha/help|daugiau informacijos]]):",
+ "questycaptcha-createaccount": "Kad apsaugotume šią vikį nuo automatinio paskyrų kūrimo, prašome atsakyti į klausimą žemiau ([[Special:Captcha/help|daugiau informacijos]]):",
+ "questycaptcha-create": "Kad sukurtumėte puslapį, prašome atsakyti į klausimą žemiau ([[Special:Captcha/help|daugiau informacijos]]):",
+ "questycaptcha-edit": "Kad pakeistumėte šį puslapį, prašome atsakyti į klausimą žemiau ([[Special:Captcha/help|daugiau informacijos]]):",
+ "questycaptcha-sendemail": "Kad apsaugotume vikį nuo automatizuoto šlamšto, prašome atsakyti į klausimą esantį žemiau ([[Special:Captcha/help|daugiau informacijos]]):"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/min.json b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/min.json
new file mode 100644
index 00000000..b0847c57
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/min.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Iwan Novirion"
+ ]
+ },
+ "questycaptchahelp-text": "Laman-laman web nan manarimo tulisan dari urang banyak (publik), samacam wiki ko, acok kali disalahgunoan dek pangguno-pangguno nan indak batangguang-jawek untuak mangiriman spam manggunoan program-program otomatis. Walaupun pautan-pautan spam tasabuik dapek sajo dihapuih, tapi tatap sajo manimbulan gangguan.\n\nKadang-kadang, sangkek tangah manambahan pautan web baru ka suatu laman, wiki ko akan mangagiah sabuah patanyaan untuak Sanak jawek.\nDek iko marupoan suatu karajo nan sulik untuak dibuek sacaro otomatis, pakaro ko akan mudah dilalui dek urang (manusia), sakaliguih dapek manghantian hampiang kasado sarangan spam dan robot otomatis lainnyo.\n\nSilakan hubuangi panguruih untuak mintak bantuan koq pakaro ko manghambaik Sanak untuak mambuek suntiangan nan layak.\n\nTakan tombol \"back\" di paramban web Sanak untuak baliak ka laman panyuntiangan."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/mk.json b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/mk.json
new file mode 100644
index 00000000..d02f3b11
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/mk.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": [
+ "Bjankuloski06"
+ ]
+ },
+ "questycaptcha-desc": "Создавач на сликички со текнувало за потврда на уредувања",
+ "questycaptcha-addurl": "Вашето уредување содржи нови надворешни врски.\nЗа го заштитиме викито од автоматизиран спам, би ве замолиле да одговорите на прашањето подолу ([[Special:Captcha/help|повеќе инфо]]):",
+ "questycaptcha-badlogin": "За да ни помогнете да се заштитиме од автоматизирано пробивање на лозинки, би ве замолиле да одговорите на прашањето подолу ([[Special:Captcha/help|повеќе инфо]]):",
+ "questycaptcha-createaccount": "За да ни помогнете да се заштитиме од автоматизирано создавање на сметки, би ве замолиле да одговорите на прашањето подолу ([[Special:Captcha/help|повеќе инфо]]):",
+ "questycaptcha-create": "За да ја создадете страницата, одговорете на прашањето подолу ([[Special:Captcha/help|повеќе инфо]]):",
+ "questycaptcha-edit": "За да ја уредите страницава, одговорете на прашањето подолу ([[Special:Captcha/help|повеќе инфо]]):",
+ "questycaptcha-sendemail": "За да се заштитиме од автоматизирано спамирање, би ве замолиле да одговорите на прашањето подолу ([[Special:Captcha/help|повеќе информации]]):",
+ "questycaptchahelp-text": "Мрежните места кои прифаќаат учество на јавноста, како ова вики, честопати страдаат од спамери кои користат автоматизирани алатки за да ги додаваат нивните врски на голем број мрежни места.\nИако врските на спамерот може да се отстранат, тие значително ја пореметуваат нашата работа.\n\nПонекогаш, особено кога додава нови врски на страница, викито може да ви побара да одговорите на прашање.\nБидејќи ова е задача која е тешко да се автоматизира, им овозможува вистинските корисници да придонесуваат, а им попречува на спамерите и другите роботски напаѓачи.\n\nКонтактирајте ги [[Special:ListAdmins|администраторите на страната]] за помош доколку ова неочекувано ве спречува во правењето на искрени придонеси.\n\nСтиснете на копчето „назад“ во вашиот прелисувач за да се вратите на уредувањето на страницата."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/ml.json b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/ml.json
new file mode 100644
index 00000000..36dad278
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/ml.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Junaidpv"
+ ]
+ },
+ "questycaptcha-addurl": "താങ്കളുടെ തിരുത്തലുകളിൽ പുറം കണ്ണികൾ ഉൾപ്പെട്ടിരിക്കുന്നു.\nയാന്ത്രിക സ്പാമിനെതിരെയുള്ള സം‌രക്ഷണത്തിന്റെ ഭാഗമായി, താഴെ കാണുന്ന വാക്കുകൾ പെട്ടിയിൽ ടൈപ്പു ചെയ്യുക ([[Special:Captcha/help|കൂടുതൽ വിവരങ്ങൾ]]):"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/ms.json b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/ms.json
new file mode 100644
index 00000000..f62403e1
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/ms.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": [
+ "Anakmalaysia",
+ "Pizza1016"
+ ]
+ },
+ "questycaptcha-addurl": "Suntingan anda mengandungi pautan luar baru.\nUntuk membanteras kegiatan spam automatik, anda diminta menjawab soalan yang berikut ([[Special:Captcha/help|maklumat lanjut]]):",
+ "questycaptcha-badlogin": "Untuk membanteras kegiatan meneka kata laluan secara automatik, anda diminta menjawab soalan berikut ([[Special:Captcha/help|maklumat lanjut]]):",
+ "questycaptcha-createaccount": "Untuk membanteras kegiatan pembukaan akaun secara automatik, anda diminta menjawab soalan berikut ([[Special:Captcha/help|maklumat lanjut]]):",
+ "questycaptcha-create": "Untuk mencipta laman ini, anda diminta menjawab soalan berikut ([[Special:Captcha/help|maklumat lanjut]]):",
+ "questycaptcha-edit": "Untuk menyunting laman ini, anda diminta menjawab soalan berikut ([[Special:Captcha/help|maklumat lanjut]]):",
+ "questycaptcha-sendemail": "Untuk membanteras kegiatan spam secara automatik, anda diminta menjawab soalan berikut ([[Special:Captcha/help|maklumat lanjut]]):",
+ "questycaptchahelp-text": "Tapak-tapak web yang menerima sumbangan dari orang awam, misalnya wiki ini, sering disalahgunakan oleh penghantar spam yang menggunakan peralatan berautomasi untuk menambah pautan-pautan mereka ke banyak tapak.\nWalaupun pautan-pautan spam ini boleh dipadamkan, namun ia amat menyusahkan.\n\nAdakalanya, terutamanya apabila menambah pautan web baru kepada sesebuah laman, wiki ini mungkin akan menanya anda satu soalan.\nOleh sebab tugas ini sukar dilakukan secara automatik, ia akan membolehkan kebanyakan manusia sebenar untuk membuat sumbangan mereka sambil menghalang penghantar spam dan serangan robotik yang seumpamanya.\n\nSila hubungi [[Special:ListAdmins|penyelia-penyelia tapak]] untuk mendapat bantuan jika ia menghalang anda daripada membuat sumbangan yang munasabah tanpa dijangka.\n\nSila tekan butang 'balik' dalam pelayar web anda untuk kembali ke penyunting laman."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/mt.json b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/mt.json
new file mode 100644
index 00000000..797ce0e7
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/mt.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Chrisportelli"
+ ]
+ },
+ "questycaptcha-addurl": "Il-modifika tiegħek tinkludi ħoloq esterni ġodda.\nSabiex tipproteġi kontra spam awtomatiku, jekk jogħġbok irrispondi l-mistoqsija li tidher hawn taħt ([[Special:Captcha/help|aktar informazzjoni]]):",
+ "questycaptcha-badlogin": "Bħala prekawzjoni kontra l-infurzar awtomatiku tal-password, jekk jogħġbok irrispondi l-mistoqsija li tidher hawn taħt ([[Special:Captcha/help|aktar informazzjoni]]):",
+ "questycaptcha-createaccount": "Bħala miżura ta' prekawzjoni kontra l-ħolqien awtomatiku tal-kontijiet, jekk jogħġbok irrispondi l-mistoqsija li tidher hawn taħt ([[Special:Captcha/help|aktar informazzjoni]]):",
+ "questycaptcha-create": "Sabiex toħloq din il-paġna, jekk jogħġbok irrispondi l-mistoqsija li tidher hawn taħt ([[Special:Captcha/help|aktar informazzjoni]]):",
+ "questycaptcha-edit": "Sabiex timmodifika din il-paġna, jekk jogħġbok irrispondi l-mistoqsija li tidher hawn taħt ([[Special:Captcha/help|aktar informazzjoni]]):",
+ "questycaptcha-sendemail": "Bħala prekawzjoni kontra l-ispam awtomatiku, jekk jogħġbok irrispondi l-mistoqsija li tidher hawn taħt ([[Special:Captcha/help|aktar informazzjoni]]):",
+ "questycaptchahelp-text": "Siti elettroniċi li jaċċettaw kontribuzzjonijiet mill-pubbliku, bħal din il-wiki, huma ħafna drabi abbużati minn ''spammers'' li jużaw għodda awtomatiċi sabiex idaħħlu ħoloq lejn ħafna siti.\nWaqt li dawn il-ħoloq ta' spam jistgħu jitneħħew, dan huwa xorta waħda xogħol għalxejn.\n\nXi drabi, speċjalment meta żżid ħoloq esterni ġodda f'paġna, il-paġna wiki tista' tistaqsik biex tirrispondi mistoqsija.\nMinħabba li din hija azzjoni li diffiċli li tiġi replikata min-naħa ta' kompjuter, dan il-mekkaniżmu jippermetti lil (kważi) kull utent li jeżisti li jagħmel il-kontribuzzjonijiet tiegħu waqt li ħafna ''spammers'' u attakki awtomatiċi jiġu mwaqqfa.\n\nJekk jogħġbok ikkuntatja lill-[[Special:ListAdmins|amministraturi tas-sit]] għall-għajnuna fuq jekk din il-proċedura hix qed tipprevjeni milli tagħmel kontribuzzjonijiet leġittimi.\n\nIklikkja fuq il-buttuna 'lura' tal-browżer tiegħek sabiex tirritorna għall-editur ta-paġna."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/nb.json b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/nb.json
new file mode 100644
index 00000000..49a3cfaf
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/nb.json
@@ -0,0 +1,18 @@
+{
+ "@metadata": {
+ "authors": [
+ "Helland",
+ "Nghtwlkr",
+ "Simny",
+ "Danmichaelo",
+ "Jon Harald Søby"
+ ]
+ },
+ "questycaptcha-addurl": "Redigeringen din inneholder nye eksterne lenker. For å beskytte wikien mot automatisert spam, ber vi om at du svarer på spørsmålet som vises under ([[Special:Captcha/help|mer informasjon]]):",
+ "questycaptcha-badlogin": "For å hindre passordtyveri, ber vi deg å svare på spørsmålet under ([[Special:Captcha/help|mer informasjon]]):",
+ "questycaptcha-createaccount": "For å beskytte wikien mot automatisert spam, ber vi deg om å svare på spørsmålet som vises under ([[Special:Captcha/help|mer informasjon]]):",
+ "questycaptcha-create": "For å opprette siden, vennligst svar på spørsmålet som vises under ([[Special:Captcha/help|mer informasjon]]):",
+ "questycaptcha-edit": "For å endre denne siden, vennligst svar på spørsmålet som vises under ([[Special:Captcha/help|mer informasjon]]):",
+ "questycaptcha-sendemail": "For å beskytte wikien mot automatisert søppelpost, ber vi deg å svare på spørsmålet som vises nedenfor ([[Special:Captcha/help|mer info]]):",
+ "questycaptchahelp-text": "Nettsteder som tar imot bidrag fra allmennheten, som denne wikien, er ofte utsatt for angrep fra spammere som bruker automatiserte verktøy for å legge til lenker til mange sider.\nSelv om disse spam-lenkene kan fjernes er de en stor plage.\n\nIblant, spesielt ved tillegg av nye lenker til en side, kan wikien be deg svare på et spørsmål.\nSiden dette er en oppgave som er vanskelig å automatisere, vil den tillate de fleste virkelige personer å bidra mens den stopper de fleste spammere og andre robotangrep.\n\nVennligst kontakt [[Special:ListAdmins|sideadministratorer]] for hjelp dersom dette er uventet hindrer deg fra å bidra med legitime bidrag.\n\nKlikk på 'tilbake'-knappen i nettleseren din for å gå tilbake til sideeditoren."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/nl-informal.json b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/nl-informal.json
new file mode 100644
index 00000000..88cb921c
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/nl-informal.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "Siebrand"
+ ]
+ },
+ "questycaptcha-addurl": "Je bewerking bevat nieuwe externe koppelingen.\nBeantwoord de onderstaande vraag als bescherming tegen automatische spam ([[Special:Captcha/help|meer informatie]]):",
+ "questycaptchahelp-text": "Websites die vrij te bewerken zijn, zoals deze wiki, worden vaak misbruikt door spammers die er met hun programma's automatisch koppelingen op zetten naar vele websites.\nHoewel deze externe koppelingen weer verwijderd kunnen worden, leveren ze wel veel hinder en administratief werk op.\n\nSoms, en in het bijzonder bij het toevoegen van externe koppelingen op pagina's, vraag de wiki je een vraag te beantwoorden.\nOmdat dit proces lastig te automatiseren is, zijn vrijwel alleen mensen in staat dit proces succesvol te doorlopen en worden hiermee spammers en andere geautomatiseerde aanvallen geweerd.\n\nVraag assistentie van de [[Special:ListAdmins|sitebeheerders]] als dit proces je verhindert een nuttige bijdrage te leveren.\n\nKlik op de knop \"terug\" in je browser om terug te gaan naar het tekstbewerkingsscherm."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/nl.json b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/nl.json
new file mode 100644
index 00000000..aacd31c7
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/nl.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": [
+ "HanV",
+ "Siebrand"
+ ]
+ },
+ "questycaptcha-addurl": "Uw bewerking bevat nieuwe externe koppelingen.\nBeantwoord de onderstaande vraag als bescherming tegen automatische spam ([[Special:Captcha/help|meer informatie]]):",
+ "questycaptcha-badlogin": "Beantwoord de onderstaande vraag als bescherming tegen het automatisch kraken van wachtwoorden ([[Special:Captcha/help|meer informatie]]):",
+ "questycaptcha-createaccount": "Beantwoord de onderstaande vraag als bescherming tegen het geautomatiseerd aanmaken van gebruikers ([[Special:Captcha/help|meer informatie]]):",
+ "questycaptcha-create": "Beantwoord de onderstaande vraag om de pagina aan te maken ([[Special:Captcha/help|meer informatie]]):",
+ "questycaptcha-edit": "Beantwoord de onderstaande vraag om deze pagina te bewerken ([[Special:Captcha/help|meer informatie]]):",
+ "questycaptcha-sendemail": "Beantwoord de onderstaande vraag als bescherming tegen geautomatiseerde spam ([[Special:Captcha/help|meer informatie]]):",
+ "questycaptchahelp-text": "Websites die vrij te bewerken zijn, zoals deze wiki, worden vaak misbruikt door spammers die er met hun programma's automatisch koppelingen op zetten naar vele websites.\nHoewel deze externe koppelingen weer verwijderd kunnen worden, leveren ze wel veel hinder en administratief werk op.\n\nSoms, en in het bijzonder bij het toevoegen van externe koppelingen op pagina's, vraag de wiki u een vraag te beantwoorden.\nOmdat dit proces lastig te automatiseren is, zijn vrijwel alleen mensen in staat dit proces succesvol te doorlopen en worden hiermee spammers en andere geautomatiseerde aanvallen geweerd.\n\nVraag assistentie van de [[Special:ListAdmins|sitebeheerders]] als dit proces u verhindert een nuttige bijdrage te leveren.\n\nKlik op de knop \"terug\" in uw browser om terug te gaan naar het tekstbewerkingsscherm."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/nn.json b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/nn.json
new file mode 100644
index 00000000..97a52e38
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/nn.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "Gunnernett"
+ ]
+ },
+ "questycaptcha-addurl": "Endringa di inneheld nye lenkjer ut. \nSom ei hjelp til å unngå automatisert spam, ver venleg og skiv inn spørsmålet som er synt nedanfor ([[Special:Captcha/help|meir informasjon]]):",
+ "questycaptcha-createaccount": "For å hjelpa til med å hindra automatisk kontooppretting, ver venleg og svar på spørsmålet nedanfor ([[Special:Captcha/help|more info]]):",
+ "questycaptcha-create": "For å oppretta sida, ver venleg og svar på spørsmålet nedanfor ([[Special:Captcha/help|meir informasjon]]):",
+ "questycaptcha-edit": "For å endra sida, ver venleg og svar på spørsmålet som er synt nedanfor ([[Special:Captcha/help|meir informasjon]]):"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/oc.json b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/oc.json
new file mode 100644
index 00000000..b274d22c
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/oc.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Cedric31"
+ ]
+ },
+ "questycaptcha-addurl": "Vòstra modificacion inclutz de ligams extèrnes novèls.\nPer nos ajudar dins la proteccion contra lo spam automatizat, respondètz a la question çaijós ([[Special:Captcha/help|mai d’entresenhas]]) :",
+ "questycaptcha-badlogin": "Per nos ajudar a prevenir la copadura dels senhals per d'automats, respondètz a la question çaijós ([[Special:Captcha/help|mai d’entresenhas]]) :",
+ "questycaptcha-createaccount": "Per nos ajudar a luchar contra las creacions automaticas de comptes, respondètz a la question qu'apareis çaijós ([[Special:Captcha/help|mai d’entresenhas]]) :",
+ "questycaptcha-create": "Per crear la pagina, respondètz a la question çaijós ([[Special:Captcha/help|mai d’entresenhas]]) :",
+ "questycaptcha-edit": "Per modificar aquesta pagina, respondètz a la question çaijós ([[Special:Captcha/help|mai d’entresenhas]]) :",
+ "questycaptcha-sendemail": "Per tal de nos ajudar a prevenir lo spam automatic, entratz los mots qu'apareisson dins la bóstia çaijós ([[Special:Captcha/help|mai d’informacions]]) :",
+ "questycaptchahelp-text": "Los sites web qu'acceptan de contribucions del public, coma aqueste wiki, son sovent victimas de polluposteires qu'utilizan d'aisinas automatizadas per plaçar de ligams nombroses cap a lors sites.\nQuitament s'aquesta pollucion pòt èsser escafada, es irritanta.\n\nDe còps, particularament al moment de l’apondon de ligams extèrnes novèls dins una pagina, lo wiki vos pòt demandar de respondre a una question.\nAqueste prètzfait es pas de bon acomplir d'un biais automatizat, aquò permet a la màger part dels umans de realizar lors contribucions tot en empachant la màger part dels polluposteires e autres atacants robotizats.\n\nContactatz [[Special:ListAdmins|los administrators del site]] s'aquò vos empacha de faiçon imprevista de far de contribucions legitimas.\n\nClicatz sul boton « Precedent » de vòstre navigador per tornar a la pagina de modificacion."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/pl.json b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/pl.json
new file mode 100644
index 00000000..74e74566
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/pl.json
@@ -0,0 +1,16 @@
+{
+ "@metadata": {
+ "authors": [
+ "Sp5uhe",
+ "WTM",
+ "Tsca"
+ ]
+ },
+ "questycaptcha-addurl": "Wprowadzony przez Ciebie tekst zawiera nowe linki zewnętrzne. Ochrona przed zautomatyzowanym spamem wymaga odpowiedzi na poniższe pytanie ([[Special:Captcha/help|więcej informacji]])",
+ "questycaptcha-badlogin": "Ochrona przed zautomatyzowanym łamaniem haseł wymaga odpowiedzi na poniższe pytanie ([[Special:Captcha/help|więcej informacji]])",
+ "questycaptcha-createaccount": "Ochrona przed zautomatyzowanym tworzeniem kont wymaga odpowiedzi na poniższe pytanie ([[Special:Captcha/help|więcej informacji]])",
+ "questycaptcha-create": "Utworzenie strony jest możliwe po udzieleniu odpowiedzi na poniższe pytanie ([[Special:Captcha/help|więcej informacji]])",
+ "questycaptcha-edit": "Edycja strony jest możliwa po udzieleniu odpowiedzi na poniższe pytanie ([[Special:Captcha/help|więcej informacji]])",
+ "questycaptcha-sendemail": "Z uwagi na ochronę przed automatycznym spamem, należy odpowiedzieć na znajdujące się poniżej pytanie ([[Special:Captcha/help|pomoc]])",
+ "questycaptchahelp-text": "Witryny, które publicznie udostępniają możliwość wprowadzania zmian, tak jak ta wiki, często są wykorzystywane przez spamerów, którzy korzystają ze zautomatyzowanych narzędzi, aby dodawać swoje linki do wielu stron.\nPomimo tego, że takie linki mogą zostać usunięte, jest to jednak uciążliwe.\n\nCzasami, zwłaszcza jeśli dodano nowe linki zewnętrzne, wiki może poprosić o udzielenie odpowiedzi na pytanie.\nPonieważ odpowiadanie na pytania jest czynnością trudną do zautomatyzowania, pozwala większości ludziom na wykonywanie edycji, zarazem uniemożliwiając ją spamerom i innym atakującym automatom.\n\nSkontaktuj się z [[Special:ListAdmins|administratorami]], jeśli potrzebujesz pomocy ponieważ mechanizm ten uniemożliwia Ci dokonywania uzasadnionych edycji.\n\nKliknij przycisk 'wstecz' w przeglądarce, aby wrócić do strony edycji."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/pms.json b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/pms.json
new file mode 100644
index 00000000..f493dc65
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/pms.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": [
+ "Borichèt",
+ "Dragonòt"
+ ]
+ },
+ "questycaptcha-addurl": "Toa modìfica a conten na neuva anliura esterna.\nPër giuté a protegi contra spam automàtich, për piasì arspond a la custion che a-i é sì sota ([[Special:Captcha/help|për savèjne ëd pì]]):",
+ "questycaptcha-badlogin": "Për giuté a protegi contra ël crack ëd ciav automatisà, për piasì arspond a la custion che a ven fòra sota ([[Special:Captcha/help|për savèjne ëd pì]]):",
+ "questycaptcha-createaccount": "Për giuté a protegi contra la creassion automàtica ëd cont, për piasì arspond a la custion che a ven fòra sota ([[Special:Captcha/help|për savejne ëd pì]]):",
+ "questycaptcha-create": "Për creé la pàgina, për piasì arspond a la custion che a ven fòra sota: ([[Special:Captcha/help|për savejne ëd pì]]):",
+ "questycaptcha-edit": "Për modifiché sta pàgina-sì, për piasì arspond a la custion che a ven fòra sota ([[Special:Captcha/help|për savejne ëd pì]]):",
+ "questycaptcha-sendemail": "Për giuté a protegi contra la rumenta automàtica, për piasì ch'a risponda a la chestion ch'as vëdd sì-sota ([[Special:Captcha/help|për savèjne ëd pi]]):",
+ "questycaptchahelp-text": "Soèns a-i riva che ij sit dla Ragnà che la gent a peul dovré për ëscrive chèich-còs, coma sta wiki-sì, a resto ambërlifà d'areclam da 'd màchine che a cario soa ròba dadsà e dadlà n'automàtich. \nPër tant che sti areclam un a peula peuj gaveje, a resta sempe un gran fastudi. \n\nDle vire, dzortut quand un a caria dj'anliure esterne neuve ansime a na pàgina, la wiki a peul ciameje ëd rësponde a na chestion. \nDa già ch'a l'é grama scrive un programa ch'a lo fasa, a ven che la pì gran part dla gent a-i la fa a scrive, ma la pi part dle màchine a-i la fa pa. \n\nPër piasì ch'a contata j'[[Special:ListAdmins|aministrator dël sit]] për d'assistensa se sòn a-j përmet nen ëd fé na contribussion legìtima.\n\nCh'a-i bata ansima al boton «andré» ant sò navigator për torné andré a l'editor dla pàgina."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/pt-br.json b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/pt-br.json
new file mode 100644
index 00000000..447f4e7f
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/pt-br.json
@@ -0,0 +1,18 @@
+{
+ "@metadata": {
+ "authors": [
+ "Eduardo.mps",
+ "Giro720",
+ "Luckas",
+ "555",
+ "Felipe L. Ewald"
+ ]
+ },
+ "questycaptcha-addurl": "Sua edição inclui novos links externos.\nPara proteger a wiki contra spam automatizado de edição, nós lhe pedimos gentilmente que responda a pergunta que aparece abaixo ([[Special:Captcha/help|mais informações]]):",
+ "questycaptcha-badlogin": "Para proteger a wiki contra spam automatizado de edição, nós lhe pedimos gentilmente que responda a pergunta que aparece abaixo ([[Special:Captcha/help|mais informações]]):",
+ "questycaptcha-createaccount": "Para proteger o wiki contra a quebra automática de senha, nós lhe pedimos gentilmente que responda a pergunta que aparece abaixo ([[Special:Captcha/help|mais informações]]):",
+ "questycaptcha-create": "Para criar a página, por favor responda a questão que aparece abaixo ([[Special:Captcha/help|more info]]):",
+ "questycaptcha-edit": "Para editar esta página, por favor responda a questão que aparece abaixo ([[Special:Captcha/help|more info]]):",
+ "questycaptcha-sendemail": "Para proteger a wiki contra o spam automatizado, nós lhe pedimos gentilmente que responda a pergunta que aparece abaixo ([[Special:Captcha/help|mais informações]]):",
+ "questycaptchahelp-text": "Sites que aceitam contribuições públicas, como este wiki, são vulneráveis a spammers que utilizam ferramentas automatizadas para inserir os seus links em diversos locais. \nApesar de ser possível remover tais links, eles são um incômodo significativo.\n\nAlgumas vezes, especialmente ao adicionar novos links externos a uma página, o wiki pode pedir a você que responda a uma pergunta. \nUma vez que essa é uma tarefa um tanto difícil de ser automatizada, ela possibilita que a maioria dos humanos faça as suas contribuições ao mesmo tempo que inibe as que forem feitas por spammers e mecanismos automatizados.\n\nEntre em contato com os [[Special:ListAdmins|administradores do site]] para pedir ajuda caso isso esteja te impedindo de realizar contribuições legítimas.\n\nClique no botão 'voltar' de seu navegador para retornar ao editor de páginas."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/pt.json b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/pt.json
new file mode 100644
index 00000000..ff1cf0c3
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/pt.json
@@ -0,0 +1,18 @@
+{
+ "@metadata": {
+ "authors": [
+ "Crazymadlover",
+ "Giro720",
+ "Hamilton Abreu",
+ "Fúlvio",
+ "Athena in Wonderland"
+ ]
+ },
+ "questycaptcha-addurl": "A sua edição introduziu hiperligações externas novas.\nPara proteger esta wiki contra o spam automatizado, por favor, responda à questão apresentada abaixo ([[Special:Captcha/help|mais informações]]):",
+ "questycaptcha-badlogin": "Para proteger esta wiki contra mecanismos automatizados de descoberta de palavras-passe, por favor, responda à questão apresentada abaixo ([[Special:Captcha/help|mais informações]]):",
+ "questycaptcha-createaccount": "Para proteger esta wiki contra a criação de contas automatizada, por favor, responda à questão apresentada abaixo ([[Special:Captcha/help|mais informações]]):",
+ "questycaptcha-create": "Para criar a página, por favor, responda à questão apresentada abaixo ([[Special:Captcha/help|mais informações]]):",
+ "questycaptcha-edit": "Para editar esta página, por favor, responda à questão apresentada abaixo ([[Special:Captcha/help|mais informações]]):",
+ "questycaptcha-sendemail": "Para proteger esta wiki contra o spam automatizado, por favor, responda à seguinte pergunta ([[Special:Captcha/help|mais informações]]):",
+ "questycaptchahelp-text": "Sítios na Internet abertos a edição pública, como é o caso desta wiki, são frequentemente abusados por ''spammers'' que utilizam ferramentas automatizadas para inserção em massa de hiperligações em muitos sítios.\nEmbora essas hiperligações possam ser removidas, representam um incómodo significativo.\n\nPor vezes, especialmente quando introduzir hiperligações externas novas numa página, a wiki pedirá que responda a uma pergunta.\nPorque esta é uma tarefa difícil de automatizar, permite que a maioria das pessoas façam as suas edições, ao mesmo tempo que inibe edições feitas por ''spammers'' e outros mecanismos automatizados.\n\nPor favor, contacte os [[Special:ListAdmins|administradores]] para assistência, caso esta funcionalidade esteja a impedi-lo de fazer edições legítimas.\n\nClique o botão 'voltar' do seu browser para voltar à página de edição."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/qqq.json b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/qqq.json
new file mode 100644
index 00000000..1050f275
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/qqq.json
@@ -0,0 +1,17 @@
+{
+ "@metadata": {
+ "authors": [
+ "Fryed-peach",
+ "Hamilton Abreu",
+ "Shirayuki"
+ ]
+ },
+ "questycaptcha-desc": "{{Optional}}\n{{desc}}",
+ "questycaptcha-addurl": "{{Related|ConfirmEdit-addurl}}",
+ "questycaptcha-badlogin": "{{Related|ConfirmEdit-badlogin}}",
+ "questycaptcha-createaccount": "{{Related|ConfirmEdit-createaccount}}",
+ "questycaptcha-create": "{{Related|ConfirmEdit-create}}",
+ "questycaptcha-edit": "{{Related|ConfirmEdit-edit}}",
+ "questycaptcha-sendemail": "{{Related|ConfirmEdit-sendemail}}",
+ "questycaptchahelp-text": "See also {{msg-mw|Captchahelp-text}}."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/ro.json b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/ro.json
new file mode 100644
index 00000000..3bf468a4
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/ro.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Minisarm"
+ ]
+ },
+ "questycaptcha-addurl": "Modificarea dumneavoastră include legături externe noi.\nPentru a împiedica roboții de spam, vă rugăm să răspundeți la întrebarea de mai jos ([[Special:Captcha/help|mai multe detalii]]):",
+ "questycaptcha-badlogin": "Pentru a împiedica spargerea automată a parolelor, vă rugăm să răspundeți la întrebarea de mai jos ([[Special:Captcha/help|mai multe detalii]]):",
+ "questycaptcha-createaccount": "Pentru a împiedica crearea automată de conturi, vă rugăm să răspundeți la întrebarea de mai jos ([[Special:Captcha/help|mai multe detalii]]):",
+ "questycaptcha-create": "Pentru a crea pagina, vă rugăm să răspundeți la întrebarea de mai jos ([[Special:Captcha/help|mai multe detalii]]):",
+ "questycaptcha-edit": "Pentru a modifica această pagină, vă rugăm să răspundeți la întrebarea de mai jos ([[Special:Captcha/help|mai multe detalii]]):",
+ "questycaptcha-sendemail": "Pentru a împiedica roboții de spam, vă rugăm să răspundeți la întrebarea de mai jos ([[Special:Captcha/help|mai multe detalii]]):",
+ "questycaptchahelp-text": "Siturile web care acceptă contribuții din partea publicului, precum acest wiki, sunt de obicei victime ale persoanelor care folosesc unelte automate pentru a introduce legături către multe alte situri. \nDeși aceste legături de spam pot fi îndepărtate, acest lucru reprezintă o bătaie de cap semnificativă.\n\nUneori, mai ales la adăugarea de noi legături web într-o pagină, situl wiki vă poate cere să răspundeți la o anumită întrebare. Întrucât rezolvarea acestei cerințe este dificil de automatizat, ea permite majorității persoanelor reale să-și trimită contribuțiile și va opri majoritatea atacatorilor.\n\nÎn cazul în care această practică vă împiedică în mod neașteptat să faceți contribuții legitime, vă rugăm să contactați [[Special:ListAdmins|administratorii sitului]].\n\nApăsați butonul „Înapoi” al navigatorului pentru a vă reîntoarce la pagina de editare."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/roa-tara.json b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/roa-tara.json
new file mode 100644
index 00000000..18a8ebd9
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/roa-tara.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Joetaras"
+ ]
+ },
+ "questycaptcha-addurl": "'U cangiamende tune 'nglude de le collegaminde de fore.\nPeproteggere condre a 'u spam automateche, pe piacere respunne a 'a domande ca iesse sotte ([[Special:Captcha/help|cchiù 'mbormaziune]]):",
+ "questycaptcha-badlogin": "Pe proteggere condre a futteminde automatece de password, pe piacere respunne a 'a domande ca iesse aqquà sotte ([[Special:Captcha/help|cchiù 'mbormaziune]]):",
+ "questycaptcha-createaccount": "Pe proteggere condre a ccreazione automateche de cunde utinde, pe piacere respunne a 'a domande ca iesse aqquà sotte ([[Special:Captcha/help|cchiù 'mbormaziune]]):",
+ "questycaptcha-create": "Pe ccrejà sta pàgene, pe piacere respunne a 'a domande ca combare aqquà sotte ([[Special:Captcha/help|more info]]):",
+ "questycaptcha-edit": "Pe cangià sta pàgene, pe piacere respunne a 'a domande ca combare aqquà sotte ([[Special:Captcha/help|more info]]):",
+ "questycaptcha-sendemail": "Pe proteggere condre a spam automatece, pe piacere respunne a 'a domande ca iesse aqquà sotte ([[Special:Captcha/help|cchiù 'mbormaziune]]):",
+ "questycaptchahelp-text": "Le site web ca accettane condrebbute da 'u pubbleche, cumme sta Uicchi, sonde spesse abusate da le ''spammer'' ca ausane struminde automatece e aggiungene le lore collegaminde a 'nu sacche de site.<br />\nPure ca chiste collegaminde de spam ponne essere luate, lore sò sembre 'nu scassamende de palle.<br />\n<br />\nCerte vote, specialmende quanne aggiunge 'nu nuève collegamende web a 'na pàgene, Uicchi te pò chiedere de responnere a 'na domande.<br />\nAccussì addeviene 'nu combete cchiù defficile da automatizzà, accussì se permette a le cristiane de fà cangiaminde reale e se blocchene de cchiù le ''spammer'' e otre attacche de robot.<br />\n<br />\nPe piacere condatte le [[Special:ListAdmins|amministrature d'u site]] pe assistenze ce stu fatte non ge funzione accume se deve e no te face fà le cangiaminde legittime.<br />\n<br />\nCazze 'u buttone 'rrete' jndr'à 'u browser tue pe turnà 'a pàgene d'u cangiamende."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/ru.json b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/ru.json
new file mode 100644
index 00000000..862d6908
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/ru.json
@@ -0,0 +1,17 @@
+{
+ "@metadata": {
+ "authors": [
+ "Lockal",
+ "Okras",
+ "Александр Сигачёв",
+ "Kaganer"
+ ]
+ },
+ "questycaptcha-addurl": "Ваша правка содержит новые внешние ссылки.\nВ целях защиты от автоматического спама просим вас ответить на вопрос, показанный ниже ([[Special:Captcha/help|подробнее…]]):",
+ "questycaptcha-badlogin": "В целях защиты от автоматического подбора пароля просим вас ответить на вопрос, показанный ниже ([[Special:Captcha/help|подробнее…]]):",
+ "questycaptcha-createaccount": "В целях защиты от автоматического создания учётных записей просим вас ответить на вопрос, показанный ниже ([[Special:Captcha/help|подробнее…]]):",
+ "questycaptcha-create": "Для создания страницы, пожалуйста, ответьте на приведённый ниже вопрос ([[Special:Captcha/help|подробнее]]):",
+ "questycaptcha-edit": "Чтобы изменить эту страницу, пожалуйста, ответьте на приведённый ниже вопрос ([[Special:Captcha/help|подробнее]]):",
+ "questycaptcha-sendemail": "В целях защиты от автоматического спама просим вас ответить на вопрос, показанный ниже ([[Special:Captcha/help|подробнее…]]):",
+ "questycaptchahelp-text": "Веб-сайты, позволяющие добавлять и изменять своё содержание, в том числе эта вики, часто становятся целью спамеров, использующих программы для автоматического добавления ссылок на сайты. Хотя такие ссылки могут быть впоследствии удалены, они представляют собой существенную помеху.\n\nПри некоторых действиях (например, при добавлении на страницу новой ссылки на сайт) вики может попросить вас ответить на вопрос. Поскольку эта задача сложна для автоматизации, большинство спамерских и вандальных программ не могут с ней справиться, в то время как люди справляются легко.\n\nПожалуйста, обратитесь за помощью к [[Special:ListAdmins|администраторам]], если подобная проверка мешает вам добросовестно работать с сайтом.\n\nНажмите кнопку «Назад» в своём браузере, чтобы вернуться к редактированию."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/sk.json b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/sk.json
new file mode 100644
index 00000000..71540c3d
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/sk.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "Helix84"
+ ]
+ },
+ "questycaptcha-addurl": "Vaša úprava obsahuje nové externé odkazy.\nAko opatrenie proti automatizovanému spamu musíte zodpovedať dolu uvedenú otázku\n([[Special:Captcha/help|ďalšie informácie]]):",
+ "questycaptcha-badlogin": "Ako opatrenie proti automatizovanému lámaniu hesiel musíte zodpovedať dolu uvedenú otázku\n([[Special:Captcha/help|ďalšie informácie]]):",
+ "questycaptcha-createaccount": "Ako opatrenie proti automatizovanému vytváraniu účtov musíte zodpovedať dolu uvedenú otázku\n([[Special:Captcha/help|ďalšie informácie]]):",
+ "questycaptcha-create": "Ak chcete vytvoriť stránku, musíte zodpovedať dolu uvedenú otázku\n([[Special:Captcha/help|ďalšie informácie]]):",
+ "questycaptcha-edit": "Ak chcete upraviť túto stránku, musíte zodpovedať dolu uvedenú otázku\n([[Special:Captcha/help|ďalšie informácie]]):",
+ "questycaptchahelp-text": "Webstránky, ktoré prijímajú príspevky od verejnosti ako táto wiki, sú často cieľom zneužitia spammermi, ktorí používajú automatizované nástroje na pridávanie odkazov na svoje stránku na mnohé lokality.\nHoci je možné odkazy na spam odstrániť, je to významná nepríjemnosť.\n\nNiekedy, obzvlášť pri pridávaní nových webových odkazov na stránku, vás wiki môže požiadať o zodpovedanie otázky.\nPretože takúto úlohu je ťažké zautomatizovať, umožní väčšine skutočných ľudí prispievať a zastaví vačšinu spammerov a robotických útočníkov.\n\nKontaktujte prosím [[Special:ListAdmins|správcov lokality]] ak potrebujete pomoc v prípade, že vám táto funkcia neočakávaným spôsobom bráni v právoplatných príspevkoch.\n\nSpäť na úpravu stránky sa vrátite kliknutím na tlačidlo „Späť“ vo vašom prehliadači."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/sl.json b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/sl.json
new file mode 100644
index 00000000..ef859b64
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/sl.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Dbc334"
+ ]
+ },
+ "questycaptcha-addurl": "Vaše urejanje vključuje nove zunanje povezave.\nZaradi zaščite wikija pred samodejnim smetjem vas prijazno naprošamo, da odgovorite na spodaj zastavljeno vprašanje ([[Special:Captcha/help|več informacij]]):",
+ "questycaptcha-badlogin": "Zaradi zaščite wikija pred samodejnim ugotavljanjem gesel vas prijazno naprošamo, da odgovorite na spodaj zastavljeno vprašanje ([[Special:Captcha/help|več informacij]]):",
+ "questycaptcha-createaccount": "Zaradi zaščite wikija pred samodejnim ustvarjanjem računov vas prijazno naprošamo, da odgovorite na spodaj zastavljeno vprašanje ([[Special:Captcha/help|več informacij]]):",
+ "questycaptcha-create": "Če želite ustvariti stran, prosimo odgovorite na spodaj zastavljeno vprašanje ([[Special:Captcha/help|več informacij]]):",
+ "questycaptcha-edit": "Če želite urediti stran, prosimo odgovorite na spodaj zastavljeno vprašanje ([[Special:Captcha/help|več informacij]]):",
+ "questycaptcha-sendemail": "Zaradi zaščite wikija pred samodejnim smetenjem vas prijazno naprošamo, da odgovorite na spodaj zastavljeno vprašanje ([[Special:Captcha/help|več informacij]]):",
+ "questycaptchahelp-text": "Spletne strani, ki omogočajo prispevanje širši javnosti, kot na primer ta wiki, pogosto zlorabljajo spamerji, ki za dodajanje svojih povezav na mnoge strani uporabljajo avtomatizirana orodja.\nČeprav je neželene povezave mogoče odstraniti, so precejšnja nadloga.\n\nVčasih, zlasti pri dodajanju novih spletnih povezav na stran, vam bo wiki morda zastavil vprašanje.\nKer je to opravilo težko avtomatizirati, bo s tem večini ljudi prispevanje dovoljeno, spamerji in drugi robotski napadalci pa bodo ustavljeni.\n\nČe vam to nepričakovano preprečuje legitimno prispevanje, prosimo, da se obrnete na [[Special:ListAdmins|administratorje spletišča]].\n\nZa vrnitev v urejevalnik izberite gumb »nazaj« v vašem brskalniku."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/so.json b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/so.json
new file mode 100644
index 00000000..18d7b902
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/so.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Abshirdheere"
+ ]
+ },
+ "questycaptcha-createaccount": "Si aad u caawiso dhowritaanka in la iska samaysto Akoon,Fadlan ka jawaan su'aalahaan hoos ku qoran ([[Special:Captcha/help|Macluumaad dheeraad ah]]):"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/sr-ec.json b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/sr-ec.json
new file mode 100644
index 00000000..61c61486
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/sr-ec.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": [
+ "Rancher",
+ "Milicevic01"
+ ]
+ },
+ "questycaptcha-desc": "Стварач сликовног кода за потврду уређивања",
+ "questycaptcha-addurl": "Ваша измена садржи нове спољашње везе.\nУ циљу заштите од непожељних порука, љубазно Вас молимо да одговорите на питање приказано испод ([[Special:Captcha/help|помоћ]]):",
+ "questycaptcha-badlogin": "Да би онемогућили аутоматизовано пробијање лозинки, љубазно Вас молимо да одговорите на питање приказано испод ([[Special:Captcha/help|помоћ]]):",
+ "questycaptcha-createaccount": "Да би онемогућили аутоматизовано отварање налога, љубазно Вас молимо да одговорите на питање приказано испод ([[Special:Captcha/help|помоћ]]):",
+ "questycaptcha-create": "Да би направили страницу, молимо Вас да одговорите на питање приказано испод ([[Special:Captcha/help|помоћ]]):",
+ "questycaptcha-edit": "Да би уредили ову страницу, молимо Вас да одговорите на питање приказано испод ([[Special:Captcha/help|помоћ]]):",
+ "questycaptcha-sendemail": "Да би онемогућили аутоматизовано спамовање, љубазно Вас молимо да одговорите на питање приказано испод ([[Special:Captcha/help|помоћ]]):"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/sr-el.json b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/sr-el.json
new file mode 100644
index 00000000..29691586
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/sr-el.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Milicevic01"
+ ]
+ },
+ "questycaptcha-desc": "Stvarač slikovnog koda za potvrdu uređivanja",
+ "questycaptcha-addurl": "Vaša izmena sadrži nove spoljašnje veze.\nU cilju zaštite od nepoželjnih poruka, ljubazno Vas molimo da odgovorite na pitanje prikazano ispod ([[Special:Captcha/help|pomoć]]):",
+ "questycaptcha-badlogin": "Da bi onemogućili automatizovano probijanje lozinki, ljubazno Vas molimo da odgovorite na pitanje prikazano ispod ([[Special:Captcha/help|pomoć]]):",
+ "questycaptcha-createaccount": "Da bi onemogućili automatizovano otvaranje naloga, ljubazno Vas molimo da odgovorite na pitanje prikazano ispod ([[Special:Captcha/help|pomoć]]):",
+ "questycaptcha-create": "Da bi napravili stranicu, molimo Vas da odgovorite na pitanje prikazano ispod ([[Special:Captcha/help|pomoć]]):",
+ "questycaptcha-edit": "Da bi uredili ovu stranicu, molimo Vas da odgovorite na pitanje prikazano ispod ([[Special:Captcha/help|pomoć]]):",
+ "questycaptcha-sendemail": "Da bi onemogućili automatizovano spamovanje, ljubazno Vas molimo da odgovorite na pitanje prikazano ispod ([[Special:Captcha/help|pomoć]]):"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/sv.json b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/sv.json
new file mode 100644
index 00000000..57cfbdfe
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/sv.json
@@ -0,0 +1,16 @@
+{
+ "@metadata": {
+ "authors": [
+ "Boivie",
+ "Rotsee",
+ "WikiPhoenix"
+ ]
+ },
+ "questycaptcha-addurl": "Din redigering inkluderar nya externa länkar.\nFör att skydda wikin mot automatisk spam ber vi dig att svara på frågan här ([[Special:Captcha/help|mer information]]):",
+ "questycaptcha-badlogin": "För att skydda wikin mot automatisk lösenordsknäckning ber vi dig att svara på frågan som finns nedan ([[Special:Captcha/help|mer information]]):",
+ "questycaptcha-createaccount": "För att skydda wikin mot automatiskt kontoskapande ber vi dig att svara på frågan som finns nedan ([[Special:Captcha/help|mer information]]):",
+ "questycaptcha-create": "För att skapa sidan, vänligen svara på frågan som finns nedan ([[Special:Captcha/help|mer information]]):",
+ "questycaptcha-edit": "För att redigera denna sida, vänligen svara på frågan som finns nedan ([[Special:Captcha/help|mer information]]):",
+ "questycaptcha-sendemail": "För att skydda wikin mot automatiskt spam ber vid dig att svara på frågan som visas nedan ([[Special:Captcha/help|mer information]]):",
+ "questycaptchahelp-text": "Webbplatser som accepterar bidrag från allmänheten, som denna wiki, blir ofta utnyttjade av spammare som använder automatiska verktyg för att lägga till sina linkar till många sajter.\nÄven om dessa spam-länkar kan tas bort är de väldigt störande.\n\nIbland, särskilt vid tillägg av nya webblänkar till en sida, kan wikin be dig svara på en fråga.\nEftersom denna uppgift är svår att automatisera, låter den de flesta riktiga människor göra sina bidrag medan den stoppar de flesta spammare och andra robotattackerare.\n\nVänligen kontakta [[Special:ListAdmins|sajtens administratörer]] för hjälp ifall detta oväntat förhindrar dig från att göra tillåtna bidrag.\n\nKlicka 'tillbaka'-knappen i din webbläsare för att återvända till sidredigeraren."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/te.json b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/te.json
new file mode 100644
index 00000000..ec35d437
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/te.json
@@ -0,0 +1,10 @@
+{
+ "@metadata": {
+ "authors": [
+ "Kiranmayee",
+ "Veeven"
+ ]
+ },
+ "questycaptcha-addurl": "మీరు చేసిన మార్పులో కొత్త బయటి లింకులు ఉన్నాయి.\nఆటోమేటెడ్ స్పాము నుండి రక్షణకై, క్రింద కనిపించే ప్రశ్నకు సమాధానమివ్వండి ([[Special:Captcha/help|మరింత సమాచారం]]):",
+ "questycaptcha-edit": "ఈ పేజీని సరిదిద్దడానికి, క్రింద కనిపించే ప్రశ్నకి జవాబివ్వండి ([[Special:Captcha/help|మరింత సమాచారం]]):"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/th.json b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/th.json
new file mode 100644
index 00000000..6484f1ac
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/th.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Harley Hartwell"
+ ]
+ },
+ "questycaptchahelp-text": "เว็บไซต์ที่บุคคลภายนอกเข้ามาช่วยเขียนได้ เช่น วิกินี้ มักถูกสแปมโดยผู้ใช้ที่ใช้บอตหรือโปรแกรมอัตโนมัติเพื่อเพิ่มลิงก์ไปยังเว็บไซต์หลาย ๆ เว็บไซต์ แม้เราจะสามารถนำลิงก์ที่สแปมออกได้ก็ตาม แต่ก็ย่ิอมก่อให้เกิดความรำคาญต่อผู้ใช้ได้เช่นกัน\n\nเนื่องจากการใส่ลิงก์เป็นเรื่องยากในการดูแลโดยอัตโนมัติ ในบางครั้ง โดยเฉพาะเมื่อคุณใส่ลิงก์เว็บภายนอก ระบบวิกิอาจขอให้คุณตอบคำถาม เพื่อป้องกันนักสแปมและโรบอตโจมตีอื่น ๆ ทำการแก้ไข แต่จะอนุญาตให้ผู้ที่ใกล้เคียงมนุษย์มากทีุ่สุดแก้ไขได้\n\nกรุณาติดต่อ [[Special:ListAdmins|ผู้ดูแลระบบ]] หากกระบวนการนี้ไม่สามารถทำให้คุณแก้ไขข้อมูลให้ถูกต้องได้\n\nกดปุ่ม 'Back' บนเบราเซอร์ของคุณเพื่อกลับไปยังหน้าแก้ไข"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/tl.json b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/tl.json
new file mode 100644
index 00000000..2eba96a4
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/tl.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": [
+ "AnakngAraw"
+ ]
+ },
+ "questycaptcha-desc": "Kaakit-akit na panlikha ng CAPTCHA na Questy para sa Pagtiyak ng Pagbago",
+ "questycaptcha-addurl": "Kasali sa pagbago mo ang bagong panglabas na mga kawing.\nUpang makatulong sa pagsanggalang laban sa kusang panglulusob, pakisagot ang tanong na nakalitaw sa ibaba ([[Special:Captcha/help|more info]]):",
+ "questycaptcha-badlogin": "Upang makatulong sa pagsasanggalang laban sa mga kusang paglutas ng hudyat, pakisagot lamang ang tanong na nakalitaw sa ibaba ([[Special:Captcha/help|marami pang kabatiran]]):",
+ "questycaptcha-createaccount": "Upang makatulong sa pagsasanggalang laban sa kusang paglikha ng akawnt, pakisagot ang tanong na nakalitaw sa ibaba ([[Special:Captcha/help|marami pang kabatiran]]):",
+ "questycaptcha-create": "Upang malikha ang pahina, pakisagot ang tanong na nakalitaw sa ibaba ([[Special:Captcha/help|marami pang kabatiran]]):",
+ "questycaptcha-edit": "Upang mabago ang pahina, pakisagot ang tanong na nakalitaw sa ibaba ([[Special:Captcha/help|marami pang kabatiran]]):",
+ "questycaptcha-sendemail": "Upang makatulong sa pagsasanggalang laban sa mga kusang paglusob, pakisagot lamang ang tanong na nakalitaw sa ibaba ([[Special:Captcha/help|marami pang kabatiran]]):",
+ "questycaptchahelp-text": "Ang mga websayt na tumatanggap ng mga ambag mula sa madla, katulad ng wiking ito, ay madalas abusuhin ng mga manlulusob na gumagamit ng kasangkapang pangkusa upang madagdag ang kanilang mga kawing sa maraming mga sayt.\n\nKung minsan, partikular na kapag nagdaragdag ng bagong mga kawing pangweb sa isang pahina, maaaring humiling ang wiki na sagutin mo ang isang tanong. \nDahil isa itong gawaing mahirap ikusa, magpapahintulot ito ng karamihan sa tunay na mga tao na gawin ang kanilang mga kontribusyon habang pinahihinto ang karamihan sa mga ispamer at iba pang mga makarobot na mga panglusob.\n\nMangyaring makipag-ugnayan sa [[Special:ListAdmins|mga tagapangasiwa ng sayt]] para sa pagtulong kung hindi inaasahang pigilan ka mula sa paggawa ng tunay na mga ambag.\n\nPindutin ang pindutang 'bumalik' sa iyong pantingin-tingin upang makabalik sa pambago ng pahina."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/tr.json b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/tr.json
new file mode 100644
index 00000000..982e97c5
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/tr.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": [
+ "Joseph",
+ "Vito Genovese"
+ ]
+ },
+ "questycaptcha-addurl": "Değişikliğiniz yeni dış bağlantı içeriyor.\nOtomatik reklama karşı korunmaya yardımcı olmak için, lütfen ([[Special:Captcha/help|daha fazla bilgi]]) bölümünün altında yer alan soruya cevap verin:",
+ "questycaptcha-badlogin": "Otomatik şifre kırmaya karşı korunmaya yardımcı olmak için, lütfen ([[Special:Captcha/help|daha fazla bilgi]]) bölümünün altında yer alan soruya cevap verin:",
+ "questycaptcha-createaccount": "Otomatik hesap oluşturmaya karşı korunmaya yardımcı olmak için, lütfen ([[Special:Captcha/help|daha fazla bilgi]]) bölümünün altında yer alan soruya cevap verin:",
+ "questycaptcha-create": "Sayfayı oluşturmak için, lütfen ([[Special:Captcha/help|daha fazla bilgi]]) bölümünün altında yer alan soruya cevap verin:",
+ "questycaptcha-edit": "Sayfayı değiştirmek için, lütfen ([[Special:Captcha/help|daha fazla bilgi]]) bölümünün altında yer alan soruya cevap verin:",
+ "questycaptcha-sendemail": "Otomatik spamlerden korunmaya yardımcı olmak için, lütfen aşağıda görünen soruyu cevaplayın ([[Special:Captcha/help|daha fazla bilgi]]):",
+ "questycaptchahelp-text": "Bu viki gibi herkesin katkı yapmasına izin veren web siteleri, genellikle bir çok siteye verilen bağlantıları ekleyen otomatik araçlar kullanan reklam amaçlı kullanıcılar tarafından istismar edilmektedir.\nBu reklam bağlantıları kaldırılabiliyor olsa da, önemli bir sıkıntı yaratmaktadırlar.\n\nBazen, özellikle bir sayfaya yeni web bağlantıları eklenirken, viki size bir soru sorabilir.\nBu, otomatikleştirilmesi zor bir iş olduğu için, insanların katkılarını yapmasını mümkün kılarken çoğu reklam amaçlı kullanıcıyı ya da robot saldırganı durduracaktır.\n\nBu durumun sizi normal katkılarınızı yapmaktan olağandışı bir şekilde alıkoyması halinde, lütfen destek için [[Special:ListAdmins|site hizmetlileri]] ile irtibata geçin.\n\nSayfa editörüne dönmek için tarayıcınızın 'geri' düğmesine tıklayın."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/uk.json b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/uk.json
new file mode 100644
index 00000000..80f71182
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/uk.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": [
+ "Andriykopanytsia",
+ "Diemon.ukr"
+ ]
+ },
+ "questycaptcha-addurl": "Ваше редагування містить нові зовнішні посилання.\nІз метою захисту вікі від спаму просимо вас дати відповідь на питання, що наводиться нижче ([[Special:Captcha/help|докладніше]]):",
+ "questycaptcha-badlogin": "Із метою захисту вікі від автоматичного підбору пароля, просимо вас дати відповідь на питання, що наводиться нижче ([[Special:Captcha/help|докладніше]]):",
+ "questycaptcha-createaccount": "Із метою захисту вікі від автоматичного створення облікових записів просимо вас дати відповідь на питання, що наводиться нижче ([[Special:Captcha/help|докладніше]]):",
+ "questycaptcha-create": "Щоб створити сторінку, будь ласка, дайте відповідь на питання, що наводиться нижче ([[Special:Captcha/help|докладніше]]):",
+ "questycaptcha-edit": "Щоб редагувати цю сторінку, будь ласка, дайте відповідь на питання, що наводиться нижче ([[Special:Captcha/help|докладніше]]):",
+ "questycaptcha-sendemail": "Із метою захисту вікі від автоматичного спаму просимо вас дати відповідь на питання, що наводиться нижче ([[Special:Captcha/help|докладніше]]):",
+ "questycaptchahelp-text": "Сайти, які надають можливість змінювати свій зміст, як це вікі, часто є місцем зловживання спамерів, які використовують автоматизовані інструменти для додавання посилань на інші сайти. \nХоча ці спам-посилання можуть бути вилучені, вони є суттєвим негативним чинником. \n\nІноді, особливо при додаванні нових посилань веб-сторінки, вікі може попросити вас відповісти на запитання. \nЦе є завданням, яке важко автоматизувати, тому воно дозволить більшості реальних людей зробити свій внесок, і в той же час зупинить більшість спамерів та інших роботизованих нападників. \n\nБудь ласка, зв'яжіться з [[Special:ListAdmins|адміністраторами сайту]] по допомогу, якщо ця система не дозволяє вам робити допустимий внесок. \n\nНатисніть на кнопку \"назад\" у браузері, щоб повернутися на сторінку редагування."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/wa.json b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/wa.json
new file mode 100644
index 00000000..6251a46a
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/wa.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Srtxg"
+ ]
+ },
+ "questycaptcha-addurl": "Dins vos candjmints i gn a des novelès dfoûtrinnès hårdêyes (URL).\nPo mete li wiki a houte des robots di spam, nos vs dimandans d' acertiner ki vos estoz bén ene djin, po çoula respondez al kesse chal pa dzo ([[Special:Captcha/help|pus di racsegnes]]):",
+ "questycaptcha-badlogin": "Po mete li wiki a houte des des robots ki sayèt d' adviner les screts, nos vs dimandans d' acertiner ki vos estoz bén ene djin, po çoula respondoz al kesse chal pa dzo ([[Special:Captcha/help|pus di racsegnes]]):",
+ "questycaptcha-createaccount": "Po mete li wiki a houte des des robots k' ahivèt des contes otomaticmint, nos vs dimandans d' acertiner ki vos estoz bén ene djin, po çoula respondoz al kesse chal pa dzi ([[Special:Captcha/help|pus di racsegnes]]):",
+ "questycaptcha-create": "Por vos poleur ahiver l' pådje, vos dvoz responde al kesse chal pa dzo ([[Special:Captcha/help|pus di racsegnes]]):",
+ "questycaptcha-edit": "Po candjî cisse pådje ci, vos dvoz responde al kesse chal pa dzo ([[Special:Captcha/help|pus di racsegnes]]):",
+ "questycaptcha-sendemail": "Po mete li wiki a houte des robots di spam, nos vs dimandans d' acertiner ki vos estoz bén ene djin, po çoula respondoz al kesse chal pa dzo ([[Special:Captcha/help|pus di racsegnes]]):",
+ "questycaptchahelp-text": "Les waibes k' acceptèt des messaedjes do publik, come ci wiki chal, sont sovint eployîs pa des må-fjhants spameus, po pleur mete, avou des usteyes otomatikes, des loyéns di rclame viè les sites da zels.\nBén seur, on pout todi les disfacer al mwin, mins c' est on soyant ovraedje.\n\nAdon, pa côps, copurade cwand vos radjoutez des hårdêyes a ene pådje, on eployrè ene passete d' acertinaedje, dj' ô bén k' on vs dimandrè d' responde a ene kesse. Come çoula est ene sacwè d' målåjheye a fé otomaticmint pa on robot, çoula permete di leyî les vraiyès djins fé leus candjmints tot arestant l' plupårt des spameus et des sfwaitès atakes pa robot.\n\nS' i vs plait contactez les [[Special:ListAdmins|manaedjeus do site]] po d' l' aidance si çoula vos espaitche di fé vos candjmints ledjitimes.\n\nClitchîz sol boton «En erî» di vosse betchteu waibe po rivni al pådje di dvant."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/wuu.json b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/wuu.json
new file mode 100644
index 00000000..121cd07b
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/wuu.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "飞舞回堂前"
+ ]
+ },
+ "questycaptcha-sendemail": "为著保护本站弗畀自动化程序破坏,阿拉要麻烦侬回答下底只问题([[Special:Captcha/help|更多信息]]):"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/yi.json b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/yi.json
new file mode 100644
index 00000000..4e6f4386
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/yi.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "פוילישער"
+ ]
+ },
+ "questycaptcha-create": "צו שאַפֿן דעם בלאַט, ביטע ענטפֿערט די פֿראַגע אונטן ([[Special:Captcha/help|מער אינפֿארמאַציע]]):"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/zh-hans.json b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/zh-hans.json
new file mode 100644
index 00000000..c736d078
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/zh-hans.json
@@ -0,0 +1,19 @@
+{
+ "@metadata": {
+ "authors": [
+ "Cwek",
+ "Fantasticfears",
+ "Mywood",
+ "Impersonator 1",
+ "Liuxinyu970226"
+ ]
+ },
+ "questycaptcha-desc": "用于确认编辑的问题验证码生成器",
+ "questycaptcha-addurl": "您的编辑包含新的外部链接。为保护本wiki免受自动垃圾程序的破坏,我们恳请您回答下面显示的问题([[Special:Captcha/help|更多信息]]):",
+ "questycaptcha-badlogin": "为保护本wiki免受自动密码破解的破坏,我们恳请你回答下面显示的问题([[Special:Captcha/help|更多信息]]):",
+ "questycaptcha-createaccount": "为保护本wiki免受自动账户创建的破坏,我们恳请您回答下面显示的问题([[Special:Captcha/help|更多信息]]):",
+ "questycaptcha-create": "要创建页面,请回答下面显示的问题([[Special:Captcha/help|更多信息]]):",
+ "questycaptcha-edit": "要编辑该页面,请回答下面显示的问题([[Special:Captcha/help|更多信息]]):",
+ "questycaptcha-sendemail": "为保护本wiki免受自动垃圾程序的破坏,我们恳请您回答下面显示的问题([[Special:Captcha/help|更多信息]]):",
+ "questycaptchahelp-text": "接受公众贡献者的网站,比如本wiki,经常受到使用自动工具添加垃圾网站链接的垃圾制造者的破坏。尽管这些链接可以被删除,它们仍然极其麻烦。\n\n有时,特别是给页面添加新的网络链接时,本wiki可能需要你回答问题。由于这是一项难以用自动工具完成的任务,它可以允许在大多数真人做出贡献的同时,阻止大多数垃圾制造者和其他自动攻击者。\n\n如果这项措施意外地阻止你进行正常的贡献,请与[[Special:ListAdmins|网站管理员]]联系获取帮助。\n\n点击浏览器的“后退”按钮返回页面编辑器。"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/zh-hant.json b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/zh-hant.json
new file mode 100644
index 00000000..e8453078
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/QuestyCaptcha/i18n/zh-hant.json
@@ -0,0 +1,17 @@
+{
+ "@metadata": {
+ "authors": [
+ "Horacewai2",
+ "Justincheng12345",
+ "Waihorace",
+ "Cwlin0416"
+ ]
+ },
+ "questycaptcha-addurl": "您的編輯使用了新的外部連結。為了防止垃圾編輯程式,我們要麻煩您回答以下的問題 ([[Special:Captcha/help|更多資訊]]):",
+ "questycaptcha-badlogin": "為了防止密碼破解程式,我們要麻煩您回答以下的問題 ([[Special:Captcha/help|更多資訊]]):",
+ "questycaptcha-createaccount": "為了防止自動註冊程式,我們要麻煩您回答以下的問題 ([[Special:Captcha/help|更多資訊]]):",
+ "questycaptcha-create": "若要建立此頁面,請回答以下的問題 ([[Special:Captcha/help|更多資訊]]):",
+ "questycaptcha-edit": "若要編輯此頁面,請回答以下的問題 ([[Special:Captcha/help|更多資訊]]):",
+ "questycaptcha-sendemail": "為了防止垃圾編輯程式,我們要麻煩您回答以下的問題 ([[Special:Captcha/help|更多資訊]]):",
+ "questycaptchahelp-text": "開放大眾編輯的網站,如本 Wiki,時常會遭受惡意的人士使用自動化的程式將他們的垃圾連結散步到許多網站。\n雖然這些垃圾可以手動移除,但十足造成了困擾。\n\n某些時候,特別是在頁面新增網站連結時,Wiki 可能會詢問您一些問題,讓自動化的程式難以回答,這讓真實的使用者可進行編輯貢獻的同時,阻止大部份自動化程式的攻擊。\n\n若這個功能在預料之外阻止你進行正常編輯,請與 [[Special:ListAdmins|管理員]] 聯繫取得協助。\n\n請點選瀏覽器的 \"返回\" 按鈕返回頁面編輯器。"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/README.md b/www/wiki/extensions/ConfirmEdit/README.md
new file mode 100644
index 00000000..09d83c83
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/README.md
@@ -0,0 +1,157 @@
+ConfirmEdit
+=========
+
+ConfirmEdit extension for MediaWiki
+
+This extension provides various CAPTCHA tools for MediaWiki, to allow
+for protection against spambots and other automated tools.
+
+For more information, see the extension homepage at:
+http://www.mediawiki.org/wiki/Extension:ConfirmEdit
+
+### Overview
+
+The following modules are included in ConfirmEdit:
+
+* SimpleCaptcha - users have to solve an arithmetic math problem
+* MathCaptcha - users have to solve a math problem that's displayed as
+an image
+* FancyCaptcha - users have to identify a series of characters, displayed
+in a stylized way
+* QuestyCaptcha - users have to answer a question, out of a series of
+questions defined by the administrator(s)
+* ReCaptcha - users have to identify a series of characters, either
+visually or audially, from a widget provided by the reCAPTCHA service. This
+plugin is depreacted since MediaWiki 1.28! Please switch to the new
+ReCaptchaNoCaptcha version of ReCaptcha (which is supported by Google and
+ConfirmEdit).
+* ReCaptchaNoCaptcha - users have to solve different types of visually or
+audially tasks.
+
+### License
+
+ConfirmEdit is published under the GPL license.
+
+### Authors
+
+The main framework, and the SimpleCaptcha and FancyCaptcha modules, were
+written by Brion Vibber.
+
+The MathCaptcha module was written by Rob Church.
+
+The QuestyCaptcha module was written by Benjamin Lees.
+
+The reCAPTCHA module was written by Mike Crawford and Ben Maurer.
+
+Additional maintenance work was done by Yaron Koren.
+
+### Configuration comments
+```php
+/**
+ * List of IP ranges to allow to skip the captcha, similar to the group setting:
+ * "$wgGroupPermission[...]['skipcaptcha'] = true"
+ *
+ * Specific IP addresses or CIDR-style ranges may be used,
+ * for instance:
+ * $wgCaptchaWhitelistIP = array('192.168.1.0/24', '10.1.0.0/16');
+ */
+$wgCaptchaWhitelistIP = false;
+
+/**
+ * Actions which can trigger a captcha
+ *
+ * If the 'edit' trigger is on, *every* edit will trigger the captcha.
+ * This may be useful for protecting against vandalbot attacks.
+ *
+ * If using the default 'addurl' trigger, the captcha will trigger on
+ * edits that include URLs that aren't in the current version of the page.
+ * This should catch automated linkspammers without annoying people when
+ * they make more typical edits.
+ *
+ * The captcha code should not use $wgCaptchaTriggers, but CaptchaTriggers()
+ * which also takes into account per namespace triggering.
+ */
+$wgCaptchaTriggers = array();
+$wgCaptchaTriggers['edit'] = false; // Would check on every edit
+$wgCaptchaTriggers['create'] = false; // Check on page creation.
+$wgCaptchaTriggers['sendemail'] = false; // Special:Emailuser
+$wgCaptchaTriggers['addurl'] = true; // Check on edits that add URLs
+$wgCaptchaTriggers['createaccount'] = true; // Special:Userlogin&type=signup
+$wgCaptchaTriggers['badlogin'] = true; // Special:Userlogin after failure
+
+/**
+ * You may wish to apply special rules for captcha triggering on some namespaces.
+ * $wgCaptchaTriggersOnNamespace[<namespace id>][<trigger>] forces an always on /
+ * always off configuration with that trigger for the given namespace.
+ * Leave unset to use the global options ($wgCaptchaTriggers).
+ *
+ * Shall not be used with 'createaccount' (it is not checked).
+ */
+$wgCaptchaTriggersOnNamespace = array();
+
+# Example:
+# $wgCaptchaTriggersOnNamespace[NS_TALK]['create'] = false; //Allow creation of talk pages without captchas.
+# $wgCaptchaTriggersOnNamespace[NS_PROJECT]['edit'] = true; //Show captcha whenever editing Project pages.
+
+/**
+ * Indicate how to store per-session data required to match up the
+ * internal captcha data with the editor.
+ *
+ * 'CaptchaSessionStore' uses PHP's session storage, which is cookie-based
+ * and may fail for anons with cookies disabled.
+ *
+ * 'CaptchaCacheStore' uses $wgMemc, which avoids the cookie dependency
+ * but may be fragile depending on cache configuration.
+ */
+$wgCaptchaStorageClass = 'CaptchaSessionStore';
+
+/**
+ * Number of seconds a captcha session should last in the data cache
+ * before expiring when managing through CaptchaCacheStore class.
+ *
+ * Default is a half hour.
+ */
+$wgCaptchaSessionExpiration = 30 * 60;
+
+/**
+ * Number of seconds after a bad login that a captcha will be shown to
+ * that client on the login form to slow down password-guessing bots.
+ *
+ * Has no effect if 'badlogin' is disabled in $wgCaptchaTriggers or
+ * if there is not a caching engine enabled.
+ *
+ * Default is five minutes.
+ */
+$wgCaptchaBadLoginExpiration = 5 * 60;
+
+/**
+ * Allow users who have confirmed their email addresses to post
+ * URL links without being harassed by the captcha.
+ */
+$wgAllowConfirmedEmail = false;
+
+/**
+ * Number of bad login attempts before triggering the captcha. 0 means the
+ * captcha is presented on the first login.
+ */
+$wgCaptchaBadLoginAttempts = 3;
+
+/**
+ * Regex to whitelist URLs to known-good sites...
+ * For instance:
+ * $wgCaptchaWhitelist = '#^https?://([a-z0-9-]+\\.)?(wikimedia|wikipedia)\.org/#i';
+ * Local admins can define a whitelist under [[MediaWiki:captcha-addurl-whitelist]]
+ */
+$wgCaptchaWhitelist = false;
+
+/**
+ * Additional regexes to check for. Use full regexes; can match things
+ * other than URLs such as junk edits.
+ *
+ * If the new version matches one and the old version doesn't,
+ * toss up the captcha screen.
+ *
+ * @fixme Add a message for local admins to add items as well.
+ */
+$wgCaptchaRegexes = array();
+```
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptcha.php b/www/wiki/extensions/ConfirmEdit/ReCaptcha.php
new file mode 100644
index 00000000..0ecabd25
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptcha.php
@@ -0,0 +1,2 @@
+<?php
+require_once __DIR__ . "/ReCaptcha/ReCaptcha.php";
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptcha/HTMLReCaptchaField.php b/www/wiki/extensions/ConfirmEdit/ReCaptcha/HTMLReCaptchaField.php
new file mode 100644
index 00000000..0859f066
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptcha/HTMLReCaptchaField.php
@@ -0,0 +1,51 @@
+<?php
+
+/**
+ * Creates a ReCaptcha widget. Does not return any data; handling the data submitted by the
+ * widget is callers' responsibility.
+ */
+class HTMLReCaptchaField extends HTMLFormField {
+ /** @var string Public key parameter to be passed to ReCaptcha. */
+ protected $key;
+
+ /** @var string Theme parameter to be passed to ReCaptcha. */
+ protected $theme;
+
+ /** @var bool Use secure connection to ReCaptcha. */
+ protected $secure;
+
+ /** @var string Error returned by ReCaptcha in the previous round. */
+ protected $error;
+
+ /**
+ * Parameters:
+ * - key: (string, required) ReCaptcha public key
+ * - theme: (string, required) ReCaptcha theme
+ * - secure: (bool) Use secure connection to ReCaptcha
+ * - error: (string) ReCaptcha error from previous round
+ * @param array $params
+ */
+ public function __construct( array $params ) {
+ $params += [
+ 'secure' => true,
+ 'error' => null,
+ ];
+ parent::__construct( $params );
+
+ $this->key = $params['key'];
+ $this->theme = $params['theme'];
+ $this->secure = $params['secure'];
+ $this->error = $params['error'];
+ }
+
+ public function getInputHTML( $value ) {
+ $attribs = $this->getAttributes( [ 'tabindex' ] ) + [ 'theme' => $this->theme ];
+ $js = 'var RecaptchaOptions = ' . Xml::encodeJsVar( $attribs );
+ $widget = recaptcha_get_html( $this->key, $this->error, $this->secure );
+ return Html::inlineScript( $js ) . $widget;
+ }
+
+ public function skipLoadData( $request ) {
+ return true;
+ }
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptcha/HTMLSubmittedValueField.php b/www/wiki/extensions/ConfirmEdit/ReCaptcha/HTMLSubmittedValueField.php
new file mode 100644
index 00000000..2c8d3cdf
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptcha/HTMLSubmittedValueField.php
@@ -0,0 +1,31 @@
+<?php
+
+/**
+ * Do not generate any input element, just accept a value. How that value gets submitted is someone
+ * else's responsibility.
+ */
+class HTMLSubmittedValueField extends HTMLFormField {
+ public function getTableRow( $value ) {
+ return '';
+ }
+
+ public function getDiv( $value ) {
+ return '';
+ }
+
+ public function getRaw( $value ) {
+ return '';
+ }
+
+ public function getInputHTML( $value ) {
+ return '';
+ }
+
+ public function canDisplayErrors() {
+ return false;
+ }
+
+ public function hasVisibleOutput() {
+ return false;
+ }
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptcha/ReCaptcha.class.php b/www/wiki/extensions/ConfirmEdit/ReCaptcha/ReCaptcha.class.php
new file mode 100644
index 00000000..a62633e0
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptcha/ReCaptcha.class.php
@@ -0,0 +1,200 @@
+<?php
+
+use MediaWiki\Auth\AuthenticationRequest;
+
+class ReCaptcha extends SimpleCaptcha {
+ // used for recaptcha-edit, recaptcha-addurl, recaptcha-badlogin, recaptcha-createaccount,
+ // recaptcha-create, recaptcha-sendemail via getMessage()
+ protected static $messagePrefix = 'recaptcha-';
+
+ // reCAPTHCA error code returned from recaptcha_check_answer
+ private $recaptcha_error = null;
+
+ /**
+ * Displays the reCAPTCHA widget.
+ * If $this->recaptcha_error is set, it will display an error in the widget.
+ * @param int $tabIndex
+ * @return array
+ */
+ function getFormInformation( $tabIndex = 1 ) {
+ global $wgReCaptchaPublicKey, $wgReCaptchaTheme;
+
+ wfDeprecated( 'ConfirmEdit module ReCaptcha', '1.28' );
+ $useHttps = ( isset( $_SERVER['HTTPS'] ) && $_SERVER['HTTPS'] == 'on' );
+ $js = 'var RecaptchaOptions = ' . Xml::encodeJsVar(
+ [ 'theme' => $wgReCaptchaTheme, 'tabindex' => $tabIndex ]
+ );
+
+ return [
+ 'html' => Html::inlineScript( $js ) .
+ recaptcha_get_html( $wgReCaptchaPublicKey, $this->recaptcha_error, $useHttps )
+ ];
+ }
+
+ /**
+ * @param WebRequest $request
+ * @return array
+ */
+ protected function getCaptchaParamsFromRequest( WebRequest $request ) {
+ // API is hardwired to return captchaId and captchaWord,
+ // so use that if the standard two are empty
+ $challenge = $request->getVal( 'recaptcha_challenge_field', $request->getVal( 'captchaId' ) );
+ $response = $request->getVal( 'recaptcha_response_field', $request->getVal( 'captchaWord' ) );
+ return [ $challenge, $response ];
+ }
+
+ /**
+ * Calls the library function recaptcha_check_answer to verify the users input.
+ * Sets $this->recaptcha_error if the user is incorrect.
+ * @param string $challenge Challenge value
+ * @param string $response Response value
+ * @return bool
+ */
+ function passCaptcha( $challenge, $response ) {
+ global $wgReCaptchaPrivateKey, $wgRequest;
+
+ if ( $response === null ) {
+ // new captcha session
+ return false;
+ }
+
+ $ip = $wgRequest->getIP();
+
+ $recaptcha_response =
+ recaptcha_check_answer( $wgReCaptchaPrivateKey, $ip, $challenge, $response );
+
+ if ( !$recaptcha_response->is_valid ) {
+ $this->recaptcha_error = $recaptcha_response->error;
+ return false;
+ }
+
+ $recaptcha_error = null;
+
+ return true;
+ }
+
+ /**
+ * @param array &$resultArr
+ */
+ function addCaptchaAPI( &$resultArr ) {
+ $resultArr['captcha'] = $this->describeCaptchaType();
+ $resultArr['captcha']['error'] = $this->recaptcha_error;
+ }
+
+ /**
+ * @return array
+ */
+ public function describeCaptchaType() {
+ global $wgReCaptchaPublicKey;
+ return [
+ 'type' => 'recaptcha',
+ 'mime' => 'image/png',
+ 'key' => $wgReCaptchaPublicKey,
+ ];
+ }
+
+ /**
+ * @param ApiBase &$module
+ * @param array &$params
+ * @param int $flags
+ * @return bool
+ */
+ public function APIGetAllowedParams( &$module, &$params, $flags ) {
+ if ( $flags && $this->isAPICaptchaModule( $module ) ) {
+ $params['recaptcha_challenge_field'] = [
+ ApiBase::PARAM_HELP_MSG => 'recaptcha-apihelp-param-recaptcha_challenge_field',
+ ];
+ $params['recaptcha_response_field'] = [
+ ApiBase::PARAM_HELP_MSG => 'recaptcha-apihelp-param-recaptcha_response_field',
+ ];
+ }
+
+ return true;
+ }
+
+ /**
+ * @return null
+ */
+ public function getError() {
+ // do not treat failed captcha attempts as errors
+ if ( in_array( $this->recaptcha_error, [
+ 'invalid-request-cookie', 'incorrect-captcha-sol',
+ ], true ) ) {
+ return null;
+ }
+
+ return $this->recaptcha_error;
+ }
+
+ public function storeCaptcha( $info ) {
+ // ReCaptcha is stored by Google; the ID will be generated at that time as well, and
+ // the one returned here won't be used. Just pretend this worked.
+ return 'not used';
+ }
+
+ public function retrieveCaptcha( $index ) {
+ // just pretend it worked
+ return [ 'index' => $index ];
+ }
+
+ public function getCaptcha() {
+ // ReCaptcha is handled by frontend code + an external provider; nothing to do here.
+ return [];
+ }
+
+ /**
+ * @param array $captchaData
+ * @param string $id
+ * @return Message
+ */
+ public function getCaptchaInfo( $captchaData, $id ) {
+ return wfMessage( 'recaptcha-info' );
+ }
+
+ /**
+ * @return ReCaptchaAuthenticationRequest
+ */
+ public function createAuthenticationRequest() {
+ return new ReCaptchaAuthenticationRequest();
+ }
+
+ /**
+ * @param array $requests
+ * @param array $fieldInfo
+ * @param array &$formDescriptor
+ * @param string $action
+ */
+ public function onAuthChangeFormFields(
+ array $requests, array $fieldInfo, array &$formDescriptor, $action
+ ) {
+ global $wgReCaptchaPublicKey, $wgReCaptchaTheme;
+
+ $req = AuthenticationRequest::getRequestByClass( $requests,
+ CaptchaAuthenticationRequest::class, true );
+ if ( !$req ) {
+ return;
+ }
+
+ // ugly way to retrieve error information
+ $captcha = ConfirmEditHooks::getInstance();
+
+ $formDescriptor['captchaInfo'] = [
+ 'class' => HTMLReCaptchaField::class,
+ 'key' => $wgReCaptchaPublicKey,
+ 'theme' => $wgReCaptchaTheme,
+ 'secure' => isset( $_SERVER['HTTPS'] ) && $_SERVER['HTTPS'] === 'on',
+ 'error' => $captcha->getError(),
+ ] + $formDescriptor['captchaInfo'];
+
+ // the custom form element cannot return multiple fields; work around that by
+ // "redirecting" ReCaptcha names to standard names
+ $formDescriptor['captchaId'] = [
+ 'class' => HTMLSubmittedValueField::class,
+ 'name' => 'recaptcha_challenge_field',
+ ];
+ $formDescriptor['captchaWord'] = [
+ 'class' => HTMLSubmittedValueField::class,
+ 'name' => 'recaptcha_response_field',
+ ];
+ }
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptcha/ReCaptcha.php b/www/wiki/extensions/ConfirmEdit/ReCaptcha/ReCaptcha.php
new file mode 100644
index 00000000..4d88d107
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptcha/ReCaptcha.php
@@ -0,0 +1,14 @@
+<?php
+if ( function_exists( 'wfLoadExtension' ) ) {
+ wfLoadExtension( 'ConfirmEdit/ReCaptcha' );
+ // Keep i18n globals so mergeMessageFileList.php doesn't break
+ $wgMessagesDirs['ReCaptcha'] = __DIR__ . '/i18n';
+ /* wfWarn(
+ 'Deprecated PHP entry point used for ReCaptcha extension. ' .
+ 'Please use wfLoadExtension instead, ' .
+ 'see https://www.mediawiki.org/wiki/Extension_registration for more details.'
+ ); */
+ return;
+} else {
+ die( 'This version of the Re^Captcha extension requires MediaWiki 1.25+' );
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptcha/ReCaptchaAuthenticationRequest.php b/www/wiki/extensions/ConfirmEdit/ReCaptcha/ReCaptchaAuthenticationRequest.php
new file mode 100644
index 00000000..5455ea79
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptcha/ReCaptchaAuthenticationRequest.php
@@ -0,0 +1,38 @@
+<?php
+
+use MediaWiki\Auth\AuthenticationRequest;
+
+/**
+ * Authentication request for ReCaptcha v1. Unlike the parent class, no session storage is used;
+ * that's handled by Google.
+ */
+class ReCaptchaAuthenticationRequest extends CaptchaAuthenticationRequest {
+ public function __construct() {
+ parent::__construct( null, null );
+ }
+
+ public function loadFromSubmission( array $data ) {
+ // unhack the hack in parent
+ return AuthenticationRequest::loadFromSubmission( $data );
+ }
+
+ public function getFieldInfo() {
+ $fieldInfo = parent::getFieldInfo();
+ if ( !$fieldInfo ) {
+ return false;
+ }
+
+ return array_merge( $fieldInfo, [
+ 'captchaId' => [
+ 'type' => 'string',
+ 'label' => wfMessage( 'recaptcha-id-label' ),
+ 'help' => wfMessage( 'recaptcha-id-help' ),
+ ],
+ 'captchaWord' => [
+ 'type' => 'string',
+ 'label' => wfMessage( 'recaptcha-label' ),
+ 'help' => wfMessage( 'recaptcha-help' ),
+ ],
+ ] );
+ }
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptcha/extension.json b/www/wiki/extensions/ConfirmEdit/ReCaptcha/extension.json
new file mode 100644
index 00000000..e3a4f128
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptcha/extension.json
@@ -0,0 +1,25 @@
+{
+ "name": "ReCaptcha",
+ "ExtensionFunctions": [
+ "ConfirmEditHooks::efReCaptcha"
+ ],
+ "MessagesDirs": {
+ "ReCaptcha": [
+ "i18n"
+ ]
+ },
+ "AutoloadClasses": {
+ "ReCaptcha": "ReCaptcha.class.php",
+ "HTMLReCaptchaField": "HTMLReCaptchaField.php",
+ "HTMLSubmittedValueField": "HTMLSubmittedValueField.php",
+ "ReCaptchaAuthenticationRequest": "ReCaptchaAuthenticationRequest.php"
+ },
+ "config": {
+ "CaptchaClass": "ReCaptcha",
+ "ReCaptchaPublicKey": "",
+ "ReCaptchaPrivateKey": "",
+ "ReCaptchaTheme": "red"
+ },
+ "callback": "ConfirmEditHooks::onReCaptchaSetup",
+ "manifest_version": 1
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/ar.json b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/ar.json
new file mode 100644
index 00000000..27da5763
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/ar.json
@@ -0,0 +1,17 @@
+{
+ "@metadata": {
+ "authors": [
+ "Alexknight12",
+ "Ciphers",
+ "Meno25",
+ "ديفيد"
+ ]
+ },
+ "recaptcha-desc": "موديل reCAPTCHA لConfirm Edit",
+ "recaptcha-edit": "لحماية الويكي من السبام الآلي; نطلب منك كتابة الكلمات التي تراها في المربع.",
+ "recaptcha-addurl": "إن تعديلك يتضمن وصلات خارجية جديدة، لحماية الويكي من السبام الآلي; نطلب منك كتابة الكلمات التي تراها في المربع.",
+ "recaptcha-badlogin": "لتحمي الويكي من تكسير كلمة المرور الآلي; نطلب منك كتابة الكلمات التي تراها في المربع.",
+ "recaptcha-createaccount": "لتحمي الويكي من الإنشاء الآلي للحسابات; نطلب منك كتابة الكلمات التي تراها في المربع.",
+ "recaptcha-createaccount-fail": "جواب reCAPTCHA غير صحيح أو مفقود.",
+ "recaptcha-create": "لتحمي الويكي من الإنشاء الآلي للصفحات; نطلب منك كتابة الكلمات التي تراها في المربع."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/ast.json b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/ast.json
new file mode 100644
index 00000000..b429f4b1
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/ast.json
@@ -0,0 +1,20 @@
+{
+ "@metadata": {
+ "authors": [
+ "Xuacu"
+ ]
+ },
+ "recaptcha-edit": "Pa protexer la wiki contra'l spam automáticu, te pidimos qu'escribas los dos palabres que ves nel cuadru siguiente:",
+ "recaptcha-addurl": "La to edición incluye enllaces esternos nuevos. Pa protexer la wiki contra'l spam automatizáu, te pidimos qu'escribas les palabres que ves nel cuadru siguiente:",
+ "recaptcha-badlogin": "Pa protexer la wiki contra'l descifráu automatizáu de contraseñes, te pidimos qu'escribas los dos palabres que ves nel cuadru siguiente:",
+ "recaptcha-createaccount": "Pa protexer la wiki contra la creación automatizada de cuentes, te pidimos qu'escribas les palabres que ves nel cuadru siguiente:",
+ "recaptcha-createaccount-fail": "Falta la rempuesta a la entruga de reCAPTCHA o ye incorreuta",
+ "recaptcha-create": "Pa protexer la wiki contra la creación automatizada de páxines, te pidimos qu'escribas les palabres que ves nel cuadru siguiente:",
+ "recaptcha-info": "Resuelve'l retu ReCaptcha y devuelve los valores de pregunta y respuesta como captchaId y captchaWord.",
+ "recaptcha-apihelp-param-recaptcha_challenge_field": "Campu del widget ReCaptcha",
+ "recaptcha-apihelp-param-recaptcha_response_field": "Campu del widget ReCaptcha",
+ "recaptcha-id-label": "Retu ReCaptcha",
+ "recaptcha-id-help": "Valor del retu ReCaptcha",
+ "recaptcha-label": "Solución del ReCaptcha",
+ "recaptcha-help": "Valor de la solución del ReCaptcha"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/ba.json b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/ba.json
new file mode 100644
index 00000000..24ff409f
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/ba.json
@@ -0,0 +1,16 @@
+{
+ "@metadata": {
+ "authors": [
+ "Sagan",
+ "Лилиә"
+ ]
+ },
+ "recaptcha-edit": "Спамдан һаҡланыу өсөн ике һүҙҙе яҙыуығыҙҙы һорайбыҙ:",
+ "recaptcha-addurl": "Һеҙҙең төҙәтеүҙә тышҡы һылтанма бар. Спамдан һаҡланыу өсөн ике һүҙҙе яҙыуығыҙҙы һорайбыҙ:",
+ "recaptcha-badlogin": "Автоматик рәүештә пароль һайлап алыуҙан һаҡланыу өсөн ике һүҙҙе яҙыуығыҙҙы һорайбыҙ:",
+ "recaptcha-createaccount": "Автоматик рәүештә иҫәп яҙмаһы булдырыуҙан һаҡланыу өсөн түбәндәге ике һүҙҙе яҙыуығыҙҙы һорайбыҙ:",
+ "recaptcha-createaccount-fail": "reCAPTCHA яуабы дөрөҫ түгел йәки юҡ.",
+ "recaptcha-create": "Автоматик рәүештә биттәр булдырыуҙан һаҡланыу өсөн түбәндәге ике һүҙҙе яҙыуығыҙҙы һорайбыҙ:",
+ "recaptcha-apihelp-param-recaptcha_challenge_field": "ReCaptcha виджитендағы ялан",
+ "recaptcha-apihelp-param-recaptcha_response_field": "ReCaptcha виджитындағы ялан"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/be-tarask.json b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/be-tarask.json
new file mode 100644
index 00000000..b4ead0ae
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/be-tarask.json
@@ -0,0 +1,22 @@
+{
+ "@metadata": {
+ "authors": [
+ "EugeneZelenko",
+ "Jim-by",
+ "Red Winged Duck"
+ ]
+ },
+ "recaptcha-edit": "Для абароны вікі ад аўтаматычнага спаму ў праўках, мы просім вас увесьці словы, якія вы бачыце ў полі.",
+ "recaptcha-addurl": "Вашае рэдагаваньне ўтрымлівае новыя вонкавыя спасылкі. Для абароны вікі ад аўтаматызаванага спаму, мы просім вас увесьці словы, якія вы бачыце ў полі.",
+ "recaptcha-badlogin": "Для абароны вікі ад аўтаматызаванага ўзлому паролю, мы просім вас увесьці словы, якія вы бачыце ў полі.",
+ "recaptcha-createaccount": "Для абароны вікі ад аўтаматычнага стварэньня рахункаў, мы просім вас увесьці словы, якія вы бачыце ў полі.",
+ "recaptcha-createaccount-fail": "Адказ reCAPTCHA няслушны ці адсутнічае.",
+ "recaptcha-create": "Для абароны вікі ад аўтаматычнага стварэньня старонак, мы просім вас увесьці словы, якія вы бачыце ў полі.",
+ "recaptcha-info": "Калі ласка, разьвяжыце заданьне ReCaptcha і вярніце заданьне і адказы ў выглядзе captchaId і captchaWord.",
+ "recaptcha-apihelp-param-recaptcha_challenge_field": "Поле зь віджэту ReCaptcha",
+ "recaptcha-apihelp-param-recaptcha_response_field": "Поле зь віджэту ReCaptcha",
+ "recaptcha-id-label": "Заданьне ReCaptcha",
+ "recaptcha-id-help": "Значэньне заданьня ReCaptcha",
+ "recaptcha-label": "Разьвязаньне ReCaptcha",
+ "recaptcha-help": "Значэньне разьвязаньня ReCaptcha"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/bn.json b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/bn.json
new file mode 100644
index 00000000..bcd27c8e
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/bn.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "Aftabuzzaman"
+ ]
+ },
+ "recaptcha-edit": "স্বয়ংক্রিয়ভাবে সম্পাদনা স্প্যামের বিরুদ্ধে উইকিকে রক্ষা করার জন্য, আমরা আপনাকে বাক্সের মধ্যে যে শব্দগুলি দেখতে পাচ্ছেন তা লেখার অনুরোধ করছি।",
+ "recaptcha-addurl": "আপনার সম্পাদনায় নতুন বাহ্যিক লিঙ্ক অন্তর্ভুক্ত করা হয়েছে। স্বয়ংক্রিয়ভাবে স্প্যামের বিরুদ্ধে উইকিকে রক্ষা করার জন্য, আমরা আপনাকে বাক্সের মধ্যে যে শব্দগুলি দেখতে পাচ্ছেন তা লেখার অনুরোধ করছি।",
+ "recaptcha-badlogin": "স্বয়ংক্রিয়ভাবে পাসওয়ার্ড ভাঙ্গার বিরুদ্ধে উইকিকে রক্ষা করার জন্য, আমরা আপনাকে বাক্সের মধ্যে যে শব্দগুলি দেখতে পাচ্ছেন তা লেখার অনুরোধ করছি।",
+ "recaptcha-createaccount": "স্বয়ংক্রিয়ভাবে অ্যাকাউন্ট সৃষ্টিকরণের বিরুদ্ধে উইকিকে রক্ষা করার জন্য, আমরা আপনাকে বাক্সের মধ্যে যে শব্দগুলি দেখতে পাচ্ছেন তা লেখার অনুরোধ করছি।",
+ "recaptcha-createaccount-fail": "reCAPTCHA-এর উত্তর ভুল অথবা অনুপস্থিত।",
+ "recaptcha-create": "স্বয়ংক্রিয়ভাবে পাতা সৃষ্টিকরণের বিরুদ্ধে উইকিকে রক্ষা করার জন্য, আমরা আপনাকে বাক্সের মধ্যে যে শব্দগুলি দেখতে পাচ্ছেন তা লেখার অনুরোধ করছি।"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/br.json b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/br.json
new file mode 100644
index 00000000..9f2a54e9
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/br.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Fohanno",
+ "Fulup"
+ ]
+ },
+ "recaptcha-edit": "Evit sikour en em wareziñ diouzh ar stroboù emgefre, merkit an daou c'her a welit er voest dindan :",
+ "recaptcha-addurl": "Liamm diavaez nevez zo bet degaset ganeoc'h. Evit sikour en em wareziñ diouzh ar stroboù, merkit an daou c'her a welit er voest dindan :",
+ "recaptcha-badlogin": "Evit sikour da wareziñ ar wiki diouzh an diskuliañ gerioù-tremen emgefre dre daolioù-esae, merkit an daou c'her a welit er voest dindan :",
+ "recaptcha-createaccount": "Evit sikour d'en em wareziñ diouzh ar c'hrouiñ kontoù emgefre, merkit an daou c'her a welit er voest dindan :",
+ "recaptcha-createaccount-fail": "Respont reCAPTHCA faziek pe ezvezant.",
+ "recaptcha-create": "Evit sikour d'en em wareziñ diouzh ar c'hrouiñ pajennoù emgefre, merkit an daou c'her a welit er voest dindan :"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/bs.json b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/bs.json
new file mode 100644
index 00000000..1c4aaa52
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/bs.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "CERminator",
+ "Srdjan m"
+ ]
+ },
+ "recaptcha-edit": "U cilju zaštite wikija od automatiziranog postavljanja neželjenog sadržaja, molimo Vas da upišite riječi koje vidite u kutiju ispod.",
+ "recaptcha-addurl": "Vaše izmjene uključuju nove vanjske linkove. U cilju zaštite wikija od automatiziranog neželjenog sadržaja, molimo Vas da upišite riječi koje vidite u kutiju ispod.",
+ "recaptcha-badlogin": "U cilju zaštite wikija od automatiziranog probijanja lozinki, molimo Vas da upišite riječi koje vidite u kutiju ispod.",
+ "recaptcha-createaccount": "U cilju zaštite wikija od automatiziranog pravljenja računa, molimo Vas da upišite riječi koje vidite u kutiju ispod.",
+ "recaptcha-createaccount-fail": "Neispravan ili nedostajući reCAPTCHA odgovor.",
+ "recaptcha-create": "U cilju zaštite wikija od automatiziranog pravljenja stranica, molimo Vas da upišite riječi koje vidite u kutiju ispod."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/cs.json b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/cs.json
new file mode 100644
index 00000000..a97e66c5
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/cs.json
@@ -0,0 +1,16 @@
+{
+ "@metadata": {
+ "authors": [
+ "Jkjk",
+ "Mormegil"
+ ]
+ },
+ "recaptcha-desc": "Podpora reCAPTCHA pro rozšíření Confirm Edit",
+ "recaptcha-edit": "V zájmu ochrany této wiki před automatickým spamováním vás prosíme o opsání slov, která vidíte v rámečku.",
+ "recaptcha-addurl": "Vaše editace obsahuje nové externí odkazy. V zájmu ochrany této wiki před automatickým spamováním vás prosíme o opsání slov, která vidíte v rámečku.",
+ "recaptcha-badlogin": "V zájmu ochrany této wiki proti automatickým pokusům uhodnout heslo vás prosíme o opsání slov, která vidíte v rámečku.",
+ "recaptcha-createaccount": "V zájmu ochrany této wiki před automatickým vytvářením účtů vás prosíme o opsání slov, která vidíte v rámečku.",
+ "recaptcha-createaccount-fail": "Nesprávná nebo chybějící odpověď na reCAPTCHA.",
+ "recaptcha-create": "V zájmu ochrany před automatickým zakládáním stránek vás prosíme o opsání slov, která vidíte v rámečku.",
+ "recaptcha-info": "Vyřešte výzvu ReCaptcha a vraťte hodnoty výzvy a odpovědi jako captchaId a captchaWord."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/cy.json b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/cy.json
new file mode 100644
index 00000000..27cef7cc
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/cy.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "Lloffiwr"
+ ]
+ },
+ "recaptcha-edit": "Er mwyn arbed y wici rhag i olygyddion awtomatig osod sbam, byddwch gystal â theipio'r ddau air sydd i'w gweld yn y blwch isod:",
+ "recaptcha-addurl": "Mae'ch golygiad yn cynnwys cysylltiadau allanol newydd. Er mwyn arbed y wici rhag sbam awtomatig, byddwch gystal â theipio'r ddau air sydd i'w gweld yn y blwch isod:",
+ "recaptcha-badlogin": "Er mwyn arbed y wici rhag peiriannau sy'n datrys cyfrineiriau'n awtomatig, byddwch gystal â theipio'r ddau air sydd i'w gweld yn y blwch isod:",
+ "recaptcha-createaccount": "Er mwyn arbed y wici rhag peiriannau sy'n dechrau cyfrifon yn awtomatig, byddwch gystal â theipio'r ddau air sydd i'w gweld yn y blwch isod:",
+ "recaptcha-createaccount-fail": "Mae'r ateb i'r pos CAPTCHA yn anghywir neu yn eisiau.",
+ "recaptcha-create": "Er mwyn arbed y wici rhag peiriannau sy'n dechrau tudalennau yn awtomatig, byddwch gystal â theipio'r ddau air sydd i'w gweld yn y blwch isod:"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/de-formal.json b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/de-formal.json
new file mode 100644
index 00000000..aacaf4f5
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/de-formal.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Kghbln"
+ ]
+ },
+ "recaptcha-createaccount": "Zum Schutz gegen die automatisierte Erstellung von Benutzerkonten bitten wir Sie, die folgenden beiden Wörter in das untenstehende Feld einzugeben:"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/de.json b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/de.json
new file mode 100644
index 00000000..8b15a6d5
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/de.json
@@ -0,0 +1,23 @@
+{
+ "@metadata": {
+ "authors": [
+ "Kghbln",
+ "Metalhead64",
+ "Umherirrender"
+ ]
+ },
+ "recaptcha-desc": "reCAPTCHA-Module für die Erweiterung „Confirm Edit“",
+ "recaptcha-edit": "Zum Schutz des Wikis vor automatisiertem Spam bitten wir dich, die folgenden Wörter in das untenstehende Feld einzugeben:",
+ "recaptcha-addurl": "Deine Bearbeitung enthält neue externe Links. Zum Schutz des Wikis vor automatisiertem Spam bitten wir dich, die folgenden Wörter in das folgende Feld einzugeben:",
+ "recaptcha-badlogin": "Zum Schutz des Wikis gegen automatisiertes Knacken von Passwörtern bitten wir dich, die folgenden Wörter in das folgende Feld einzugeben:",
+ "recaptcha-createaccount": "Zum Schutz des Wikis gegen die automatisierte Erstellung von Benutzerkonten bitten wir dich, die folgenden Wörter in das untenstehende Feld einzugeben:",
+ "recaptcha-createaccount-fail": "Fehlerhafte oder fehlende reCAPTCHA Antwort.",
+ "recaptcha-create": "Zum Schutz des Wikis gegen automatisierte Erstellung von Seiten bitten wir dich, die folgenden Wörter in das folgende Feld einzugeben:",
+ "recaptcha-info": "Bitte löse eine ReCaptcha-Herausforderung und gib die Herausforderungs- und Antwortwerte als captchaId und captchaWord zurück.",
+ "recaptcha-apihelp-param-recaptcha_challenge_field": "Feld von dem ReCaptcha-Widget",
+ "recaptcha-apihelp-param-recaptcha_response_field": "Feld von dem ReCaptcha-Widget",
+ "recaptcha-id-label": "ReCaptcha-Herausforderung",
+ "recaptcha-id-help": "Wert der ReCaptcha-Herausforderung",
+ "recaptcha-label": "ReCaptcha-Lösung",
+ "recaptcha-help": "Wert der ReCaptcha-Lösung"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/dsb.json b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/dsb.json
new file mode 100644
index 00000000..546db343
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/dsb.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Michawiki"
+ ]
+ },
+ "recaptcha-createaccount-fail": "Wopacne abo felujuce wótegrono reCAPTCHA."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/en.json b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/en.json
new file mode 100644
index 00000000..c600bc6a
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/en.json
@@ -0,0 +1,19 @@
+{
+ "@metadata": {
+ "authors": []
+ },
+ "recaptcha-desc": "reCAPTCHA module for Confirm Edit",
+ "recaptcha-edit": "To protect the wiki against automated edit spam, we kindly ask you to type the words you see in the box.",
+ "recaptcha-addurl": "Your edit includes new external links. To protect the wiki against automated spam, we kindly ask you to type the words you see in the box.",
+ "recaptcha-badlogin": "To protect the wiki against automated password cracking, we kindly ask you to type the words you see in the box.",
+ "recaptcha-createaccount": "To protect the wiki against automated account creation, we kindly ask you to type the words you see in the box.",
+ "recaptcha-createaccount-fail": "Incorrect or missing reCAPTCHA answer.",
+ "recaptcha-create": "To protect the wiki against automated page creation, we kindly ask you to type the words you see in the box.",
+ "recaptcha-info": "Please solve a ReCaptcha challenge and return the challenge and response values as captchaId and captchaWord.",
+ "recaptcha-apihelp-param-recaptcha_challenge_field": "Field from the ReCaptcha widget",
+ "recaptcha-apihelp-param-recaptcha_response_field": "Field from the ReCaptcha widget",
+ "recaptcha-id-label": "ReCaptcha challenge",
+ "recaptcha-id-help": "ReCaptcha challenge value",
+ "recaptcha-label": "ReCaptcha solution",
+ "recaptcha-help": "ReCaptcha solution value"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/es.json b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/es.json
new file mode 100644
index 00000000..d54337dd
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/es.json
@@ -0,0 +1,18 @@
+{
+ "@metadata": {
+ "authors": [
+ "Fitoschido",
+ "Sporeunai",
+ "Macofe",
+ "Rubentl134",
+ "Dgstranz"
+ ]
+ },
+ "recaptcha-edit": "Para proteger el wiki contra el spam automatizado, te pedimos que escribas las dos palabras que ves en el cuadro.",
+ "recaptcha-addurl": "Tu edición incluye enlaces externos nuevos. Para proteger el wiki contra el spam automatizado, te pedimos que escribas las palabras que ves en el cuadro.",
+ "recaptcha-badlogin": "Para proteger el wiki contra el descifrado automatizado de contraseñas, te pedimos que escribas las dos palabras que ves en el cuadro.",
+ "recaptcha-createaccount": "Para proteger el wiki contra la creación automatizada de cuentas, te pedimos que escribas las palabras que ves en el cuadro.",
+ "recaptcha-createaccount-fail": "ReCAPTCHA incorrecto o sin responder.",
+ "recaptcha-create": "Para proteger el wiki contra la creación automatizada de páginas, te pedimos que escribas las palabras que ves en el cuadro.",
+ "recaptcha-id-label": "Reto ReCaptcha"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/fa.json b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/fa.json
new file mode 100644
index 00000000..8e5e6ee1
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/fa.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Armin1392",
+ "Ebraminio"
+ ]
+ },
+ "recaptcha-edit": "برای محافظت ویکی دربرابر ویرایش خودکار اسپم، ما دوستانه از شما درخواست می‌کنیم که دو کلمه‌ای را که در جعبهٔ زیر می‌بینید را بنویسید:",
+ "recaptcha-addurl": "ویرایش شما شامل پیوندهای خارجی جدید است. برای محافظت ویکی در برابر هرزنگاری خودکار، ما دوستانه از شما درخواست می‌کنیم که دو کلمه‌ای را که در جعبهٔ زیر می‌بینید را بنویسید:",
+ "recaptcha-badlogin": "برای محافظت ویکی دربرابر رخنهٔ رمز عبور به طور خودکار، ما دوستانه از شما درخواست می‌کنیم که دو کلمه‌ای را که در جعبهٔ زیر می‌بینید را بنویسید:",
+ "recaptcha-createaccount": "برای محافظت ویکی دربرابر ایجاد حساب به طور خودکار، ما دوستانه از شما درخواست می‌کنیم که دو کلمه‌ای را که در جعبهٔ زیر می‌بینید را بنویسید:",
+ "recaptcha-createaccount-fail": "پاسخ نادرست یا عدم وجود ری‌سی‌اِی‌پی‌تی‌سی‌اچ‌اِی.",
+ "recaptcha-create": "برای محافظت ویکی دربرابر ایجاد صفحه به طور خودکار، ما دوستانه از شما درخواست می‌کنیم که دو کلمه‌ای را که در جعبهٔ زیر می‌بینید را بنویسید:"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/fi.json b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/fi.json
new file mode 100644
index 00000000..59ef145a
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/fi.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Nedergard",
+ "VezonThunder"
+ ]
+ },
+ "recaptcha-edit": "Suojana automaattisia roskamuokkauksia vastaan sinun on syötettävä kaksi näkemääsi sanaa laatikkoon alla:",
+ "recaptcha-addurl": "Muokkauksesi sisältää uusia ulkoisia linkkejä. Suojana automaattista roskapostia vastaan sinun on syötettävä kaksi näkemääsi sanaa laatikkoon alla:",
+ "recaptcha-badlogin": "Suojana automaattisia salasanamurtoja vastaan sinun on syötettävä kaksi näkemääsi sanaa laatikkoon alla:",
+ "recaptcha-createaccount": "Suojana automaattista tunnusten luontia vastaan sinun on syötettävä kaksi näkemääsi sanaa laatikkoon alla:",
+ "recaptcha-createaccount-fail": "Väärä tai puuttuva reCAPTCHA-vastaus.",
+ "recaptcha-create": "Suojana automaattista sivujen luontia vastaan sinun on syötettävä kaksi näkemääsi sanaa laatikkoon alla:"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/fr.json b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/fr.json
new file mode 100644
index 00000000..d9d35afe
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/fr.json
@@ -0,0 +1,26 @@
+{
+ "@metadata": {
+ "authors": [
+ "Gomoko",
+ "Urhixidur",
+ "Verdy p",
+ "Orlodrim",
+ "Wladek92",
+ "Yasten"
+ ]
+ },
+ "recaptcha-desc": "Module reCAPTCHA pour Confirm Edit",
+ "recaptcha-edit": "Afin de protéger le wiki contre les modifications automatiques des pourriels, nous vous demandons de bien vouloir écrire les mots que vous voyez dans le cadre.",
+ "recaptcha-addurl": "Votre modification contient de nouveaux liens vers des sites externes. Pour protéger le wiki contre le pourriel automatisé, nous vous demandons de bien vouloir écrire les mots que vous voyez dans le cadre.",
+ "recaptcha-badlogin": "Pour protéger le wiki contre les essais automatiques de découverte des mots de passe, nous vous demandons de bien vouloir écrire les mots que vous voyez dans le cadre.",
+ "recaptcha-createaccount": "Pour protéger le wiki des créations automatiques de compte, nous vous demandons de bien vouloir écrire les mots visibles dans le cadre.",
+ "recaptcha-createaccount-fail": "Réponse de reCAPTCHA fausse ou manquante.",
+ "recaptcha-create": "Pour protéger le wiki des créations automatiques de pages, nous vous demandons de bien vouloir écrire les mots visibles dans le cadre.",
+ "recaptcha-info": "Veuillez résoudre l'énigme ReCaptcha et retourner dans captchaId et captchaWord le test et les valeurs des réponses.",
+ "recaptcha-apihelp-param-recaptcha_challenge_field": "Champ du formulaire ReCaptcha",
+ "recaptcha-apihelp-param-recaptcha_response_field": "Champ du formulaire ReCaptcha",
+ "recaptcha-id-label": "Enigme ReCaptcha",
+ "recaptcha-id-help": "Valeur de l'énigme ReCaptcha",
+ "recaptcha-label": "Solution du ReCaptcha",
+ "recaptcha-help": "Valeur de la solution ReCaptcha"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/gl.json b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/gl.json
new file mode 100644
index 00000000..998acb4d
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/gl.json
@@ -0,0 +1,22 @@
+{
+ "@metadata": {
+ "authors": [
+ "Toliño",
+ "Elisardojm"
+ ]
+ },
+ "recaptcha-desc": "Módulo de reCAPTCHA para Confirm Edit",
+ "recaptcha-edit": "Para protexer o wiki contra a publicidade automática, por favor, introduza as palabras que ve na caixa.",
+ "recaptcha-addurl": "A súa edición inclúe novas ligazóns externas. Para protexer o wiki contra a publicidade automática, por favor, introduza as palabras que ve na caixa.",
+ "recaptcha-badlogin": "Para protexer o wiki contra o roubo de contrasinais, por favor, introduza as palabras que ve na caixa.",
+ "recaptcha-createaccount": "Para protexer o wiki contra a creación automática de contas, por favor, introduza as palabras que ve na caixa.",
+ "recaptcha-createaccount-fail": "Falta a resposta ao reCAPTCHA ou esta é incorrecta.",
+ "recaptcha-create": "Para protexer o wiki contra a creación automática de páxinas, por favor, introduza as palabras que ve na caixa.",
+ "recaptcha-info": "Por favor, resolva o enigma ReCaptcha e devolva os valores de resposta en captchaId e captchaWord.",
+ "recaptcha-apihelp-param-recaptcha_challenge_field": "Campo do formulario ReCaptcha",
+ "recaptcha-apihelp-param-recaptcha_response_field": "Campo do formulario ReCaptcha",
+ "recaptcha-id-label": "Reto ReCaptcha",
+ "recaptcha-id-help": "Valor do reto ReCaptcha",
+ "recaptcha-label": "Solución do ReCaptcha",
+ "recaptcha-help": "Valor da solución ReCaptcha"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/gsw.json b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/gsw.json
new file mode 100644
index 00000000..6407d0f7
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/gsw.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "Als-Holder"
+ ]
+ },
+ "recaptcha-edit": "Zum Schutz vor automatisiertem Spam, gib bitte di beide Werter in s Fäld unten yy:",
+ "recaptcha-addurl": "In Dyre Bearbeitg het s neji extärni Links. Zum Schutz vor automatisiertem Spam, gib bitte di beide Werter in s Fäld unten yy:",
+ "recaptcha-badlogin": "Zum Schutz gege automatisiert Knacken vu Passwerter, gib bitte di beide Werter in s Fäld unten yy:",
+ "recaptcha-createaccount": "Zum Schutz gege s automatisiert Aalege vu Benutzerkonte, gib bitte di beide Werter in s Fäld unten yy:",
+ "recaptcha-createaccount-fail": "D reCAPTCHA-Antwort isch fählerhaft oder si fählt.",
+ "recaptcha-create": "Zum Schutz gege s automatisiert Aalege vu Syte, gib bitte di beide Werter in s Fäld unten yy:"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/he.json b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/he.json
new file mode 100644
index 00000000..7c99d3e9
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/he.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": [
+ "Yona b",
+ "Guycn2",
+ "Or"
+ ]
+ },
+ "recaptcha-edit": "כדי להגן על האתר מפני ספאם אוטומטי, אנא הקלידו את המילים שמופיעות בתיבה.",
+ "recaptcha-addurl": "העריכה כוללת קישורים חיצוניים חדשים. כהגנה מפני ספאם אוטומטי, אנא הקלידו את שתי המילים שמופיעות בתיבה.",
+ "recaptcha-badlogin": "כהגנה מפני מפצחי סיסמאות אוטומטיים, אנא הקלידו את שתי המילים בתיבה.",
+ "recaptcha-createaccount": "כהגנה מפני יצירת חשבונות אוטומטית, אנא הקלידו את המילים שמופיעות בתיבה.",
+ "recaptcha-createaccount-fail": "לא הוקלדו מילות האישור, או שהוקלדו מילים לא נכונות. נסו שנית.",
+ "recaptcha-create": "כדי להגן על האתר מפני יצירת דפים אוטומטית, אנא הקלידו את המילים שמופיעות בתיבה."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/hsb.json b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/hsb.json
new file mode 100644
index 00000000..c37e61f2
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/hsb.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "Michawiki"
+ ]
+ },
+ "recaptcha-edit": "Zo by wiki přećiwo awtomatizowanemu spamej škitał, zapisaj prošu dwě słowje, kotrejž w slědowacym polu widźiš:",
+ "recaptcha-addurl": "Twoja změna wobsahuje nowe eksterne wotkazy. Zo by wiki přećiwo awtomatizowanemu spamej škitał, zapisaj prošu dwě słowje, kotrejž w slědowacym polu widźiš:",
+ "recaptcha-badlogin": "Zo by wiki přećiwo awtomatizowanemu złamanju hesłow škitał, zapisaj prošu dwě słowje, kotrejž widźiš, do slědowaceho pola:",
+ "recaptcha-createaccount": "Zo by wiki přećiwo awtomatiskemu wutworjenju konta škitał, zapisaj prošu dwě słowje, kotrejž w slědowacym polu widźiš:",
+ "recaptcha-createaccount-fail": "Wopačna abo falowaca wotmołwa reCAPTCHA.",
+ "recaptcha-create": "Zo by wiki přećiwo awtomatiskemu wutworjenju strony škitał, zapisaj prošu dwě słowje, kotrejž w slědowacym polu widźiš:"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/hu.json b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/hu.json
new file mode 100644
index 00000000..2dedb777
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/hu.json
@@ -0,0 +1,16 @@
+{
+ "@metadata": {
+ "authors": [
+ "Tacsipacsi"
+ ]
+ },
+ "recaptcha-edit": "Az automatizált spamek megelőzése miatt kérjük, hogy add meg a lenti keretben olvasható szavakat:",
+ "recaptcha-addurl": "A szerkesztésed új külső hivatkozásokat tartalmaz. Az automatizált spamek megelőzése miatt kérjük, hogy add meg a lenti keretben olvasható szavakat:",
+ "recaptcha-badlogin": "Hogy az automatizált jelszófeltörési kísérleteket megelőzzük, kérjük, hogy add meg a lenti keretben olvasható szavakat:",
+ "recaptcha-createaccount": "A felhasználói fiókok automatizált létrehozásának elkerülésére kérjük, írd be az alább megjelenő szavakat a szövegdobozba:",
+ "recaptcha-createaccount-fail": "Hibás vagy hiányzó reCAPTCHA-válasz.",
+ "recaptcha-create": "Az automatizált laplétrehozás megelőzése miatt kérjük, add meg a lenti keretben olvasható szavakat:",
+ "recaptcha-info": "Oldd meg a reCAPTCHA-feladatot, és küldd vissza a feladatot és a választ captchaId és captchaWord paraméterekként.",
+ "recaptcha-id-label": "ReCaptcha-feladat",
+ "recaptcha-label": "ReCaptcha-megoldás"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/ia.json b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/ia.json
new file mode 100644
index 00000000..513e458d
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/ia.json
@@ -0,0 +1,20 @@
+{
+ "@metadata": {
+ "authors": [
+ "McDutchie"
+ ]
+ },
+ "recaptcha-edit": "Pro proteger le wiki contra le spam automatisate, per favor, scribe le parolas que tu vide in le quadro.",
+ "recaptcha-addurl": "Iste modification include nove ligamines externe. Pro proteger le wiki contra le spam automatisate, per favor, scribe le parolas que tu vide in le quadro.",
+ "recaptcha-badlogin": "Pro proteger le wiki contra le furto automatisate de contrasignos, per favor, scribe le parolas que tu vide in le quadro.",
+ "recaptcha-createaccount": "Pro proteger le wiki contra le creation automatisate de contos, per favor, scribe le parolas que tu vide in le quadro.",
+ "recaptcha-createaccount-fail": "Responsa reCAPTCHA incorrecte o mancante.",
+ "recaptcha-create": "Pro proteger le wiki contra le creation automatisate de paginas, per favor, scribe le parolas que tu vide in le quadro.",
+ "recaptcha-info": "Per favor, resolve le defia ReCaptcha e retorna in captchaId e captchaWord le valores del defia e del responsa.",
+ "recaptcha-apihelp-param-recaptcha_challenge_field": "Campo del formulario ReCaptcha",
+ "recaptcha-apihelp-param-recaptcha_response_field": "Campo del formulario ReCaptcha",
+ "recaptcha-id-label": "Defia ReCaptcha",
+ "recaptcha-id-help": "Valor del defia ReCaptcha",
+ "recaptcha-label": "Solution del ReCaptcha",
+ "recaptcha-help": "Valor del solution del ReCaptcha"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/id.json b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/id.json
new file mode 100644
index 00000000..45b3df2d
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/id.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "IvanLanin"
+ ]
+ },
+ "recaptcha-edit": "Untuk membantu pelindungan terhadap spam penyuntingan otomatis, silakan ketik dua kata yang Anda lihat dalam kotak di bawah ini:",
+ "recaptcha-addurl": "Suntingan Anda menyertakan pranala eksternal baru. Untuk membantu pelindungan terhadap spam otomatis, silakan ketik dua kata yang Anda lihat dalam kotak di bawah ini:",
+ "recaptcha-badlogin": "Untuk membantu pelindungan terhadap perengkahan sandi otomatis, silakan ketik dua kata yang Anda lihat dalam kotak di bawah ini:",
+ "recaptcha-createaccount": "Untuk membantu pelindungan terhadap pembuatan akun otomatis, silakan ketik dua kata yang Anda lihat dalam kotak di bawah ini:",
+ "recaptcha-createaccount-fail": "Jawaban reCAPTCHA tidak benar atau tidak dimasukkan.",
+ "recaptcha-create": "Untuk membantu pelindungan terhadap pembuatan halaman otomatis, silakan ketik dua kata yang Anda lihat dalam kotak di bawah ini:"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/it.json b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/it.json
new file mode 100644
index 00000000..d15d3a6b
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/it.json
@@ -0,0 +1,22 @@
+{
+ "@metadata": {
+ "authors": [
+ "Beta16",
+ "Nemo bis",
+ "Selven"
+ ]
+ },
+ "recaptcha-edit": "Per proteggere il wiki dalle modifiche automatiche che aggiungono spam, ti chiediamo gentilmente di scrivere le parole mostrate nel riquadro.",
+ "recaptcha-addurl": "La tua modifica aggiunge qualche nuovo collegamento esterno. Per proteggere il wiki dallo spam automatico, ti chiediamo gentilmente di scrivere le parole mostrate nel riquadro.",
+ "recaptcha-badlogin": "Per proteggere il wiki dalla forzatura automatica delle password, ti chiediamo gentilmente di scrivere le parole mostrate nel riquadro.",
+ "recaptcha-createaccount": "Per proteggere il wiki dalla creazione automatica di nuove utenze, ti chiediamo gentilmente di scrivere le parole mostrate nel riquadro.",
+ "recaptcha-createaccount-fail": "Risposta reCAPTCHA mancante o errata.",
+ "recaptcha-create": "Per proteggere il wiki dalla creazione automatica di pagine, ti chiediamo gentilmente di scrivere le parole mostrate nel riquadro.",
+ "recaptcha-info": "Si prega di risolvere una sfida ReCaptcha e di riportare, i valori di sfida e risposta come captchaId e captchaWord.",
+ "recaptcha-apihelp-param-recaptcha_challenge_field": "Campo dal widget ReCaptcha",
+ "recaptcha-apihelp-param-recaptcha_response_field": "Campo dal widget ReCaptcha",
+ "recaptcha-id-label": "Sfida ReCaptcha",
+ "recaptcha-id-help": "Valore sfida ReCaptcha",
+ "recaptcha-label": "Soluzione ReCaptcha",
+ "recaptcha-help": "Valore soluzione ReCaptcha"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/ja.json b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/ja.json
new file mode 100644
index 00000000..62a3a22f
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/ja.json
@@ -0,0 +1,20 @@
+{
+ "@metadata": {
+ "authors": [
+ "Shirayuki",
+ "Otokoume",
+ "ネイ",
+ "Yusuke1109"
+ ]
+ },
+ "recaptcha-desc": "Confirm Edit 用 reCAPTCHA モジュール",
+ "recaptcha-edit": "ウィキへの自動編集スパム攻撃を防ぐため、お手数をおかけしますが画像に表示されている単語を入力してください。",
+ "recaptcha-addurl": "あなたは新しい外部リンクを追加しようとしています。ウィキへの自動スパム攻撃を防ぐため、お手数をおかけしますが画像に表示されている単語を入力してください。",
+ "recaptcha-badlogin": "ウィキへの自動パスワードクラック攻撃を防ぐため、お手数をおかけしますが画像に表示されている単語を入力してください。",
+ "recaptcha-createaccount": "ウィキでのアカウント自動作成を防ぐため、お手数をおかけしますが画像に表示されている単語を入力してください。",
+ "recaptcha-createaccount-fail": "文字列が正しくない、または入力されていません。",
+ "recaptcha-create": "ウィキでのページの自動作成を防ぐため、お手数をおかけしますが画像に表示されている単語を入力してください。",
+ "recaptcha-info": "ReCaptchaチャレンジを解決し、チャレンジとレスポンスの値をcaptchaIdとcaptchaWordとして返してください。",
+ "recaptcha-apihelp-param-recaptcha_challenge_field": "ReCaptchaウィジェットのフィールド",
+ "recaptcha-apihelp-param-recaptcha_response_field": "ReCaptchaウィジェットのフィールド"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/ko.json b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/ko.json
new file mode 100644
index 00000000..50807cd1
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/ko.json
@@ -0,0 +1,17 @@
+{
+ "@metadata": {
+ "authors": [
+ "Priviet",
+ "아라",
+ "Asdfqwer51",
+ "Ykhwong"
+ ]
+ },
+ "recaptcha-desc": "편집 확인에 대한 reCAPCHA 모듈",
+ "recaptcha-edit": "자동 편집 스팸을 방지하기 위해, 아래 상자에 보이는 낱말을 입력하세요:",
+ "recaptcha-addurl": "편집에 새로운 바깥 고리가 포함되어 있습니다. 자동 스팸으로부터 보호하기 위해, 아래 상자에 보이는 낱말을 입력하세요:",
+ "recaptcha-badlogin": "자동 비밀번호 크래킹을 방지하기 위해, 아래 상자에 보이는 낱말을 입력하세요:",
+ "recaptcha-createaccount": "자동 계정 생성을 방지하기 위해, 아래 상자에 보이는 낱말을 입력하세요:",
+ "recaptcha-createaccount-fail": "reCAPTCHA 답이 올바르지 않거나 없습니다.",
+ "recaptcha-create": "위키에서의 자동 문서 생성을 방지하기 위해 아래 상자에 보이는 낱말을 입력하세요:"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/ksh.json b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/ksh.json
new file mode 100644
index 00000000..8bb7cf94
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/ksh.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "Purodha"
+ ]
+ },
+ "recaptcha-edit": "Schrief di zwei Wööt en dä Kaste onge erin.\nDat sull jääje et automattesche Ändere un SPAM em Wiki schöze.",
+ "recaptcha-addurl": "Schrief di zwei Wööt en dä Kaste onge erin.\nDat sull jääje automattesch en et Wiki jebraate SPAM schöze, nohdämm en Dingem Beidraach {{PLURAL:$1|ene neue Lengk dren es|neue Lengks dren sin|kein neue Lengks dren sin}}.",
+ "recaptcha-badlogin": "Schrief di zwei Wööt en dä Kaste onge erin.\nDat sull jääje et automattesche Paßwoot Knacke em Wiki schöze.",
+ "recaptcha-createaccount": "Schrief di zwei Wööt en dä Kaste onge erin.\nDat sull jääje SPAM un automattesch aanjelaate Zohjäng nohm Wiki schöze.",
+ "recaptcha-createaccount-fail": "Dat wohr en verkehte udder jaa kei Antwoot op dat Kaptscha.",
+ "recaptcha-create": "Schrief di zwei Wööt en dä Kaste onge erin.\nDat sull jääje SPAM un automattesch aanjelaate Sigge em Wiki schöze."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/lb.json b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/lb.json
new file mode 100644
index 00000000..905660a3
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/lb.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "Robby"
+ ]
+ },
+ "recaptcha-edit": "Fir d'Wiki géint automatiséierte Spam ze schützen, froe mir Iech d'Wierder déi Dir gesitt an d'Këscht anzeginn.",
+ "recaptcha-addurl": "An Ärer Ännerung sinn nei extern Linken! Fir d'Wiki géint automatiséierte Spam ze schütze, froe mir Iech déi Wierder déi Dir gesitt an d'Këscht anzeginn.",
+ "recaptcha-badlogin": "Fir d'Wiki géint d'automatiséiert Hacke vu Passwierder ze schützen, froe mir Iech d'Wierder déi Dir gesitt an d'Këscht anzeginn.",
+ "recaptcha-createaccount": "Fir d'Wiki géint d'automatiséiert Uleeë vu Benotzerkonten ze schützen, froe mir Iech d'Wierder déi Dir gesitt an d'Këscht anzeginn.",
+ "recaptcha-createaccount-fail": "reCAPTCHA Äntwert feelt oder ass net korrekt.",
+ "recaptcha-create": "Fir d'Wiki géint d'automatiséiert Uleeë vu Säiten ze schützen, froe mir Iech d'Wierder déi Dir gesitt an d'Këscht anzeginn."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/lij.json b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/lij.json
new file mode 100644
index 00000000..9ab77945
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/lij.json
@@ -0,0 +1,20 @@
+{
+ "@metadata": {
+ "authors": [
+ "Giromin Cangiaxo"
+ ]
+ },
+ "recaptcha-edit": "Pe proteze a wiki da-e modiffiche de spam aotomatizou, te domandemmo gentilmente de scrive e paole che ti veddi inta casella sottostante:",
+ "recaptcha-addurl": "A to modiffica a l'azonze di noeuvi inganci esterni. Pe proteze a wiki da-o spam aotomatizou, te domandemmo gentilmente de scrive e paole che ti veddi inta casella sottostante:",
+ "recaptcha-badlogin": "Pe proteze a wiki da-a sforçatua aotomatizâ de password, te domandemmo gentilmente de scrive e paole che ti veddi inta casella sottostante:",
+ "recaptcha-createaccount": "Pe proteze a wiki da-a creaçion aotomatizâ de noeuve utençe, te domandemmo gentilmente de scrive e paole che ti veddi inta casella sottostante:",
+ "recaptcha-createaccount-fail": "Risposta reCAPTCHA mancante ò errâ.",
+ "recaptcha-create": "Pe proteze a wiki da-a creaçion aotomatizâ de paggine, te domandemmo gentilmente de scrive e paole che ti veddi inta casella sottostante:",
+ "recaptcha-info": "Se prega de resciorve una sfidda ReCaptcha e de riportâ, i valoî de sfidda e risposta comme captchaId e captchaWord.",
+ "recaptcha-apihelp-param-recaptcha_challenge_field": "Campo da-o widget ReCaptcha",
+ "recaptcha-apihelp-param-recaptcha_response_field": "Campo da-o widget ReCaptcha",
+ "recaptcha-id-label": "Sfidda ReCaptcha",
+ "recaptcha-id-help": "Valô sfidda ReCaptcha",
+ "recaptcha-label": "Soluçion ReCaptcha",
+ "recaptcha-help": "Valô soluçion ReCaptcha"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/lt.json b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/lt.json
new file mode 100644
index 00000000..25041cfd
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/lt.json
@@ -0,0 +1,20 @@
+{
+ "@metadata": {
+ "authors": [
+ "Eitvys200"
+ ]
+ },
+ "recaptcha-edit": "Kad apsaugotume vikį nuo automatinio keitimų šlamšto, prašome įvesti žodžius, kurios matote laukelyje.",
+ "recaptcha-addurl": "Jūsų keitime yra naujų išorinių nuorodų. Kad apsaugotume vikį nuo automatinio keitimų šlamšto, prašome įvesti žodžius, kurios matote laukelyje.",
+ "recaptcha-badlogin": "Kad apsaugotume vikį nuo automatinio slaptažodžių spėjimo, prašome įvesti žodžius, kurios matote laukelyje.",
+ "recaptcha-createaccount": "Kad apsaugotume vikį nuo automatinio paskyrų kūrimo, prašome įvesti žodžius, kurios matote laukelyje.",
+ "recaptcha-createaccount-fail": "Neteisingas arba nenurodytas reCAPTCHA atsakymas.",
+ "recaptcha-create": "Kad apsaugotume vikį nuo automatinio puslapių kūrimo, prašome įvesti žodžius, kurios matote laukelyje.",
+ "recaptcha-info": "Prašome išspręsti ReCaptcha iššūkį ir gražinti iššūkio ir atsakymo reikšmes kaip captchaId ir captchaWord.",
+ "recaptcha-apihelp-param-recaptcha_challenge_field": "Laukas iš ReCaptcha valdiklio",
+ "recaptcha-apihelp-param-recaptcha_response_field": "Laukas iš ReCaptcha valdiklio",
+ "recaptcha-id-label": "ReCaptcha iššūkis",
+ "recaptcha-id-help": "ReCaptcha iššūkio reikšmė",
+ "recaptcha-label": "ReCaptcha sprendimas",
+ "recaptcha-help": "ReCaptcha sprendimo reikšmė"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/mk.json b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/mk.json
new file mode 100644
index 00000000..4f156659
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/mk.json
@@ -0,0 +1,21 @@
+{
+ "@metadata": {
+ "authors": [
+ "Bjankuloski06"
+ ]
+ },
+ "recaptcha-desc": "Модул reCAPTCHA за потврда на уредувања",
+ "recaptcha-edit": "Како заштитна мерка против автоматизиран спам, би ве замолиле да ги внесете зборовите прикажани во полето:",
+ "recaptcha-addurl": "Во вашите измени има нови надворешни врски. Како заштитна мерка против автоматизиран спам, би ве замолиле да внесете зборовите прикажани во полето:",
+ "recaptcha-badlogin": "Како заштитна мерка против автоматизирано провалување на лозинки, би ве замолиле да внесете зборовите прикажани во полето:",
+ "recaptcha-createaccount": "Како заштитна мерка против автоматизирано создавање на сметки, би ве замолиле да внесете зборовите прикажани во полето:",
+ "recaptcha-createaccount-fail": "reCAPTCHA доби погрешен одговор или одговорот недостасува.",
+ "recaptcha-create": "Како заштитна мерка против автоматизирано создавање на страници, би ве замолиле да внесете зборовите прикажани во полето:",
+ "recaptcha-info": "Решете го предизвикот ReCaptcha и вратете ги вредностите на предизвикот и одговорот како captchaId и captchaWord.",
+ "recaptcha-apihelp-param-recaptcha_challenge_field": "Поле од поср. елемент ReCaptcha",
+ "recaptcha-apihelp-param-recaptcha_response_field": "Поле од поср. елемент ReCaptcha",
+ "recaptcha-id-label": "ReCaptcha-предизвик",
+ "recaptcha-id-help": "Вредност од ReCaptcha-предизвикот",
+ "recaptcha-label": "Решение од ReCaptcha",
+ "recaptcha-help": "Вредност на решението од ReCaptcha"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/ms.json b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/ms.json
new file mode 100644
index 00000000..5d43a353
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/ms.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "Anakmalaysia"
+ ]
+ },
+ "recaptcha-edit": "Untuk membanteras kegiatan spam automatik, sila taipkan dua perkataan yang anda lihat dalam petak di bawah:",
+ "recaptcha-addurl": "Suntingan anda termasuk pautan luar baru. Untuk membanteras kegiatan spam automatik, sila taipkan dua perkataan yang anda lihat dalam petak di bawah:",
+ "recaptcha-badlogin": "Untuk membanteras kegiatan meneka kata laluan secara automatik, sila taipkan dua perkataan yang anda lihat dalam petak di bawah:",
+ "recaptcha-createaccount": "Untuk membanteras kegiatan membuka akaun secara automatik, sila taipkan dua perkataan yang anda lihat dalam petak di bawah:",
+ "recaptcha-createaccount-fail": "Jawapan reCAPTCHA tidak betul atau tidak ada.",
+ "recaptcha-create": "Untuk membanteras kegiatan mencipta laman secara automatik, sila taipkan dua perkataan yang anda lihat dalam petak di bawah:"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/mt.json b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/mt.json
new file mode 100644
index 00000000..fd799424
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/mt.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "Chrisportelli"
+ ]
+ },
+ "recaptcha-edit": "Sabiex tgħinna nipproteġu kontra l-modifiki li jżidu spam, jekk jogħġbok ikteb iż-żewġ kelmiet li tara fil-kaxxa t'hawn taħt:",
+ "recaptcha-addurl": "Il-modifika tiegħek tinkludi ħoloq esterni ġodda. Sabiex tipproteġi kontra spam awtomatiku, jekk jogħġbok ikteb iż-żewġ kelmiet li tara fil-kaxxa t'hawn taħt:",
+ "recaptcha-badlogin": "Sabiex tgħinna nipproteġu kontra l-infurzar awtomatiku tal-passwords, jekk jogħġbok ikteb iż-żewġ kelmiet li tara fil-kaxxa t'hawn taħt:",
+ "recaptcha-createaccount": "Sabiex tgħinna nipproteġu kontra l-ħolqien awtomatiku ta' kontijiet ġodda, jekk jogħġbok ikteb iż-żewġ kelmiet li tara fil-kaxxa t'hawn taħt:",
+ "recaptcha-createaccount-fail": "Tweġiba reCAPTCHA ħażina jew nieqsa.",
+ "recaptcha-create": "Sabiex tgħinna nipproteġu kontra l-ħolqien awtomatiku ta' paġni, jekk jogħġbok ikteb iż-żewġ kelmiet li tara fil-kaxxa t'hawn taħt:"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/nb.json b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/nb.json
new file mode 100644
index 00000000..7cc7da16
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/nb.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "Event"
+ ]
+ },
+ "recaptcha-edit": "Som beskyttelse mot automatisk redigert spam, vennligst skriv inn de to ordene du ser i boksen under:",
+ "recaptcha-addurl": "Din redigering inneholder nye eksterne lenker. Som beskyttelse mot automatisk spam, vennligst skriv inn de to ordene du ser i boksen under:",
+ "recaptcha-badlogin": "Som beskyttelse mot automatisk passordknekking, vennligst skriv inn de to ordene du ser i boksen under:",
+ "recaptcha-createaccount": "Som beskyttelse mot automatisk opprettelse av brukerkonto, vennligst skriv inn de to ordene du ser i boksen under:",
+ "recaptcha-createaccount-fail": "Feil eller manglende reCAPTCHA-svar.",
+ "recaptcha-create": "Som beskyttelse mot automatisk opprettelse av side, vennligst skriv inn de to ordene du ser i boksen under:"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/nl-informal.json b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/nl-informal.json
new file mode 100644
index 00000000..f321d6a0
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/nl-informal.json
@@ -0,0 +1,12 @@
+{
+ "@metadata": {
+ "authors": [
+ "Siebrand"
+ ]
+ },
+ "recaptcha-edit": "Voer ter bescherming tegen geautomatiseerde spam de twee woorden die je ziet in het invoervenster in:",
+ "recaptcha-addurl": "Je bewerking bevat nieuwe externe koppelingen. Voer ter bescherming tegen geautomatiseerde spam de twee woorden die je ziet in het invoervenster in:",
+ "recaptcha-badlogin": "Voer ter bescherming tegen het automatisch kraken van wachtwoorden de twee woorden die je ziet in het invoervenster in:",
+ "recaptcha-createaccount": "Om het automatisch aanmaken van gebruikers tegen te gaan moet je de twee woorden die je ziet invoeren:",
+ "recaptcha-create": "Om het automatisch aanmaken van pagina's tegen te gaan moet je de twee woorden die je ziet invoeren:"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/nl.json b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/nl.json
new file mode 100644
index 00000000..a108f255
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/nl.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "HanV",
+ "Siebrand"
+ ]
+ },
+ "recaptcha-edit": "Voer ter bescherming tegen geautomatiseerde spam de twee woorden in die u in het onderstaande venster ziet:",
+ "recaptcha-addurl": "Uw bewerking bevat nieuwe externe koppelingen. Voer ter bescherming tegen geautomatiseerde spam de twee woorden in die u ziet in het onderstaande venster:",
+ "recaptcha-badlogin": "Voer ter bescherming tegen het automatisch kraken van wachtwoorden de twee woorden in die u ziet in het invoervenster:",
+ "recaptcha-createaccount": "Om het automatisch aanmaken van gebruikers tegen te gaan moet u de twee woorden in het onderstaande venster invoeren:",
+ "recaptcha-createaccount-fail": "Het reCAPTCHA-antwoord is onjuist of niet ingevoerd.",
+ "recaptcha-create": "Om het automatisch aanmaken van een pagina tegen te gaan moet u de twee woorden invoeren die in het onderstaande veld staan:"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/oc.json b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/oc.json
new file mode 100644
index 00000000..657f9f90
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/oc.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Cedric31"
+ ]
+ },
+ "recaptcha-createaccount-fail": "Responsa de reCAPTCHA faussa o mancanta."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/pl.json b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/pl.json
new file mode 100644
index 00000000..9db5f28b
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/pl.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": [
+ "WTM",
+ "Chrumps",
+ "Tsca"
+ ]
+ },
+ "recaptcha-edit": "W celu ochrony przed zautomatyzowanym spamem, proszę wpisać słowa widoczne w odpowiednim polu.",
+ "recaptcha-addurl": "Wprowadzony przez Ciebie tekst zawiera nowe linki zewnętrzne. W celu ochrony przed zautomatyzowanym spamem, proszę wpisać słowa widoczne w odpowiednim polu.",
+ "recaptcha-badlogin": "W celu ochrony przed zautomatyzowanym łamaniem haseł, proszę wpisać słowa widoczne w odpowiednim polu.",
+ "recaptcha-createaccount": "W celu ochrony przed zautomatyzowanym tworzeniem kont, proszę wpisać słowa widoczne w odpowiednim polu.",
+ "recaptcha-createaccount-fail": "Odpowiedź na reCAPTCHA jest fałszywa lub brakująca.",
+ "recaptcha-create": "W celu ochrony przed przed automatycznym tworzeniem stron, proszę wpisać słowa widoczne w odpowiednim polu."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/pms.json b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/pms.json
new file mode 100644
index 00000000..7f25a5f3
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/pms.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Borichèt",
+ "Dragonòt"
+ ]
+ },
+ "recaptcha-edit": "Për giuté a protege contra la rumenta dle modìfiche automàtiche, për piasì ch'a scriva le doe paròle ch'a s-ciàira ant ël quàder sì-sota:",
+ "recaptcha-addurl": "Soa modìfica a conten d'anliure esterne neuv. Për giuté a protege contra la rumenta dle modìfiche automàtiche, për piasì ch'a scriva le doe paròle ch'a s-ciàira ant ël quàder sì-sota:",
+ "recaptcha-badlogin": "Për giuté a protege contra la forsadura automatisà ëd le ciav, për piasì ch'a scriva le doe paròle ch'a s-ciàira ant ël formolari sì-sota:",
+ "recaptcha-createaccount": "Për giuté a protege contra la creassion automatisà ëd cont, për piasì ch'a scriva le doe paròle ch'a s-ciàira ant ël formolari sì-sota:",
+ "recaptcha-createaccount-fail": "Rispòsta ëd reCAPTCHA fàussa o mancanta.",
+ "recaptcha-create": "Për giuté a protege contra la creassion automatisà ëd pàgine, për piasì ch'a scriv le doe paròle ch'a s-ciàira ant la casela sì-sota:"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/pt-br.json b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/pt-br.json
new file mode 100644
index 00000000..10d0071e
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/pt-br.json
@@ -0,0 +1,20 @@
+{
+ "@metadata": {
+ "authors": [
+ "Felipe L. Ewald"
+ ]
+ },
+ "recaptcha-edit": "Para proteger a wiki contra edições automatizadas de spam, nós gentilmente pedimos que digite as palavras que você vê na caixa.",
+ "recaptcha-addurl": "A sua edição inclui ligações externas. Para proteger a wiki contra edições automatizadas de spam, nós gentilmente pedimos que digite as palavras que você vê na caixa.",
+ "recaptcha-badlogin": "Para proteger a wiki contra a quebra de senha automatizada, nós gentilmente pedimos que digite as palavras que você vê na caixa abaixo.",
+ "recaptcha-createaccount": "Para proteger a wiki contra criação automatizada de usuários, nós gentilmente pedimos que digite as palavras que você vê na caixa.",
+ "recaptcha-createaccount-fail": "Resposta incorreta ao reCAPTCHA.",
+ "recaptcha-create": "Para proteger a wiki contra criação automatizada de páginas, nós gentilmente pedimos que digite as palavras que você vê na caixa.",
+ "recaptcha-info": "Por favor, resolva um desafio do ReCaptcha e retorne os valores do desafio e da resposta como captchaId e captchaWord.",
+ "recaptcha-apihelp-param-recaptcha_challenge_field": "Campo do widget ReCaptcha",
+ "recaptcha-apihelp-param-recaptcha_response_field": "Campo do widget ReCaptcha",
+ "recaptcha-id-label": "Desafio do ReCaptcha",
+ "recaptcha-id-help": "Valor de desafio ReCaptcha",
+ "recaptcha-label": "Solução ReCaptcha",
+ "recaptcha-help": "Valor da solução ReCaptcha"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/pt.json b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/pt.json
new file mode 100644
index 00000000..13096ff1
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/pt.json
@@ -0,0 +1,22 @@
+{
+ "@metadata": {
+ "authors": [
+ "Hamilton Abreu",
+ "Fúlvio",
+ "Vitorvicentevalente"
+ ]
+ },
+ "recaptcha-edit": "Para proteger esta wiki contra <i>spam</i> automatizado, solicitamos que introduza as palavras que vê na caixa.",
+ "recaptcha-addurl": "A sua edição contém ligações externas novas. Para proteger a wiki contra <i>spam</i> automatizado, introduza as palavras que vê na caixa.",
+ "recaptcha-badlogin": "Para proteger esta wiki contra mecanismos automatizados de descoberta de palavras-passe, por favor introduza as palavras que vê na caixa.",
+ "recaptcha-createaccount": "Para proteger esta wiki contra a criação de contas automatizada, solicitamos que introduza as palavras que vê na caixa.",
+ "recaptcha-createaccount-fail": "A resposta ao reCAPTCHA está vazia ou errada.",
+ "recaptcha-create": "Para proteger esta wiki contra a criação de páginas automatizada, solicitamos que introduza as palavras que vê na caixa.",
+ "recaptcha-info": "Resolva o desafio do ReCaptcha e devolva os valores do desafio e da resposta como captchaId e captchaWord.",
+ "recaptcha-apihelp-param-recaptcha_challenge_field": "Campo do <i>widget</i> ReCaptcha",
+ "recaptcha-apihelp-param-recaptcha_response_field": "Campo do <i>widget</i> ReCaptcha",
+ "recaptcha-id-label": "Desafio do ReCaptcha",
+ "recaptcha-id-help": "Valor do desafio do ReCaptcha",
+ "recaptcha-label": "Solução do ReCaptcha",
+ "recaptcha-help": "Valor da solução do ReCaptcha"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/qqq.json b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/qqq.json
new file mode 100644
index 00000000..461a42b5
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/qqq.json
@@ -0,0 +1,23 @@
+{
+ "@metadata": {
+ "authors": [
+ "Raymond",
+ "Shirayuki",
+ "Umherirrender"
+ ]
+ },
+ "recaptcha-desc": "{{Optional}}\n{{desc}}",
+ "recaptcha-edit": "{{Related|ConfirmEdit-edit}}",
+ "recaptcha-addurl": "{{Related|ConfirmEdit-addurl}}",
+ "recaptcha-badlogin": "{{Related|ConfirmEdit-badlogin}}",
+ "recaptcha-createaccount": "{{Related|ConfirmEdit-createaccount}}",
+ "recaptcha-createaccount-fail": "{{Related|ConfirmEdit-createaccount-fail}}",
+ "recaptcha-create": "{{Related|ConfirmEdit-create}}",
+ "recaptcha-info": "Explanation of how to solve the CAPTCHA for API clients.",
+ "recaptcha-apihelp-param-recaptcha_challenge_field": "{{doc-apihelp-param|description=the \"recaptcha_challenge_field\" parameter added by [[mw:Extension:ConfirmEdit]]|noseealso=1}}\nSee also {{msg-mw|recaptcha-apihelp-param-recaptcha_response_field}}",
+ "recaptcha-apihelp-param-recaptcha_response_field": "{{doc-apihelp-param|description=the \"recaptcha_response_field\" parameter added by [[mw:Extension:ConfirmEdit]]|noseealso=1}}\nSee also {{msg-mw|recaptcha-apihelp-param-recaptcha_challenge_field}}",
+ "recaptcha-id-label": "API CAPTCHA challenge ID field label.",
+ "recaptcha-id-help": "API CAPTCHA challenge ID field help.",
+ "recaptcha-label": "API CAPTCHA solution ID field label.",
+ "recaptcha-help": "API CAPTCHA solution ID field help."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/roa-tara.json b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/roa-tara.json
new file mode 100644
index 00000000..cba54574
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/roa-tara.json
@@ -0,0 +1,20 @@
+{
+ "@metadata": {
+ "authors": [
+ "Joetaras"
+ ]
+ },
+ "recaptcha-edit": "Pe proteggere sta uicchi condre le cangiaminde automatece de le rummate, pe piacere scrive le parole ca 'ndruche jndr'à buatte aqquà sotte:",
+ "recaptcha-addurl": "Le cangiaminde tune ténene collegaminde de fore nuève. Pe proteggere condre le cangiaminde automatece de le rummate, pe piacere scrive le parole ca 'ndruche jndr'à buatte aqquà sotte:",
+ "recaptcha-badlogin": "Pe proteggere condre le futteminde automatece de le passuord, pe piacere scrive le parole ca 'ndruche jndr'à buatte aqquà sotte:",
+ "recaptcha-createaccount": "Pe proteggere condre le ccrejaziune automatece de le cunde, pe piacere scrive le parole ca 'ndruche jndr'à buatte aqquà sotte:",
+ "recaptcha-createaccount-fail": "Resposte reCAPTCHA ingorrette o mangande.",
+ "recaptcha-create": "Pe proteggere condre le ccrejaziune automatece de le pàggene, pe piacere scrive le parole ca 'ndruche jndr'à buatte aqquà sotte:",
+ "recaptcha-info": "Pe piacere resolve 'na sfide ReCaptcha e mitte, le valore d'a sfide e resposte cumme captchaId e captchaWord.",
+ "recaptcha-apihelp-param-recaptcha_challenge_field": "Cambe d'u uigget ReCaptcha",
+ "recaptcha-apihelp-param-recaptcha_response_field": "Cambe da 'u uigget ReCaptcha",
+ "recaptcha-id-label": "Sfide ReCaptcha",
+ "recaptcha-id-help": "Valore d'a sfide ReCaptcha",
+ "recaptcha-label": "Soluzione ReCaptcha",
+ "recaptcha-help": "Valore d'a soluzione ReCaptcha"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/ru.json b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/ru.json
new file mode 100644
index 00000000..d1be0ec5
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/ru.json
@@ -0,0 +1,24 @@
+{
+ "@metadata": {
+ "authors": [
+ "Okras",
+ "Александр Сигачёв",
+ "Metastasis",
+ "Irus",
+ "Facenapalm"
+ ]
+ },
+ "recaptcha-edit": "В целях защиты от автоматического спама в правках просим вас ввести слова, которые вы видите ниже.",
+ "recaptcha-addurl": "Ваша правка содержит новые внешние ссылки. В целях защиты от автоматического спама просим вас ввести слова, которые вы видите в рамке ниже.",
+ "recaptcha-badlogin": "В целях защиты от автоматического подбора пароля просим вас ввести слова, которые вы видите в рамке ниже.",
+ "recaptcha-createaccount": "В целях защиты от автоматического создания учётных записей просим вас ввести слова, которые вы видите в рамке ниже.",
+ "recaptcha-createaccount-fail": "Ответ reCAPTCHA неправильный или отсутствует.",
+ "recaptcha-create": "В целях защиты от автоматического создания страниц просим вас ввести слова, которые вы видите в рамке ниже.",
+ "recaptcha-info": "Пожалуйста, решите задачу ReCaptcha и верните значения задачи и ответа как captchaId и captchaWord.",
+ "recaptcha-apihelp-param-recaptcha_challenge_field": "Поле в виджете ReCaptcha",
+ "recaptcha-apihelp-param-recaptcha_response_field": "Поле в виджете ReCaptcha",
+ "recaptcha-id-label": "Задача ReCaptcha",
+ "recaptcha-id-help": "Значение задачи ReCaptcha",
+ "recaptcha-label": "Решение ReCaptcha",
+ "recaptcha-help": "Значение решения ReCaptcha"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/si.json b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/si.json
new file mode 100644
index 00000000..c6ab0ee2
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/si.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "පසිඳු කාවින්ද"
+ ]
+ },
+ "recaptcha-createaccount-fail": "වැරදි හෝ දක්නට නොමැති reCAPTCHA පිළිතුර."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/sr-ec.json b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/sr-ec.json
new file mode 100644
index 00000000..d3cb0c90
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/sr-ec.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": [
+ "Rancher",
+ "Milicevic01",
+ "Сербијана"
+ ]
+ },
+ "recaptcha-desc": "Модул reCAPTCHA за потврду уређивања",
+ "recaptcha-edit": "Да би заштитили вики од аутоматског спамовања, љубазно Вас молимо да упишете речи које видите у кутији.",
+ "recaptcha-addurl": "Ваша измена садржи нове спољашње везе. У циљу заштите викија од аутоматизованог спамовања, љубазно Вас молимо да упишете речи које видите у кутији.",
+ "recaptcha-badlogin": "Да би заштитили викију од аутоматизованог пробијања лозинки, љубазно Вас молимо да упишете речи које видите у кутији.",
+ "recaptcha-createaccount": "Да би заштитили викију од аутоматизованог отварања налога, љубазно Вас молимо да упишете речи које видите у кутији.",
+ "recaptcha-create": "Да би заштитили викију од аутоматизованог прављења страница, љубазно Вас молимо да упишете речи које видите у кутији."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/sr-el.json b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/sr-el.json
new file mode 100644
index 00000000..a14e4d4f
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/sr-el.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "Milicevic01"
+ ]
+ },
+ "recaptcha-desc": "Modul reCAPTCHA za potvrdu uređivanja",
+ "recaptcha-edit": "Da bi onemogućili automatizovano spamovanje, ljubazno Vas molimo da upišete dve reči koje vidite u kutijicu ispod:",
+ "recaptcha-addurl": "Vaša izmena sadrži nove spoljašnje veze. U cilju zaštite od automatizovanog spamovanja, ljubazno Vas molimo da upišete dve reči koje vidite u kutijicu ispod:",
+ "recaptcha-badlogin": "Da bi onemogućili automatizovano probijanje lozinki, ljubazno Vas molimo da upišete dve reči koje vidite u kutijicu ispod:",
+ "recaptcha-createaccount": "Da bi onemogućili automatizovano otvaranje naloga, ljubazno Vas molimo da upišete dve reči koje vidite u kutijicu ispod:",
+ "recaptcha-create": "Da bi onemogućili automatizovano pravljenje stranica, ljubazno Vas molimo da upišete dve reči koje vidite u kutijicu ispod:"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/sv.json b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/sv.json
new file mode 100644
index 00000000..5663abb7
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/sv.json
@@ -0,0 +1,20 @@
+{
+ "@metadata": {
+ "authors": [
+ "WikiPhoenix"
+ ]
+ },
+ "recaptcha-edit": "För att skydda wikin mot automatiskt redigeringsspam ber vi dig att skriva orden du ser i rutan.",
+ "recaptcha-addurl": "Din redigering innehåller nya externa länkar. För att skydda wikin mot automatiserat spam ber vi dig att skriva orden du ser i rutan.",
+ "recaptcha-badlogin": "För att skydda wikin mot automatiserade försök att knäcka lösenord ber vi dig att skriva in orden du ser i rutan.",
+ "recaptcha-createaccount": "För att skydda wikin mot automatiskt kontoskapande ber vi dig att skriva orden som du ser i rutan.",
+ "recaptcha-createaccount-fail": "Du har angivit ett felaktig svar för reCAPTCHA.",
+ "recaptcha-create": "För att skydda wikin mot att sidor skapas automatiskt ber vi dig att skriva in de två orden du ser i rutan.",
+ "recaptcha-info": "Lös en ReCaptcha-utmaning och returnera utmanings- och svarsvärdet som captchaId och captchaWord.",
+ "recaptcha-apihelp-param-recaptcha_challenge_field": "Fält från ReCaptcha-widgeten",
+ "recaptcha-apihelp-param-recaptcha_response_field": "Fält från ReCaptcha-widgeten",
+ "recaptcha-id-label": "ReCaptcha-utmaning",
+ "recaptcha-id-help": "ReCaptcha-utmaningsvärde",
+ "recaptcha-label": "ReCaptcha-lösning",
+ "recaptcha-help": "ReCaptcha-lösningsvärde"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/sw.json b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/sw.json
new file mode 100644
index 00000000..245de04c
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/sw.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "Lloffiwr"
+ ]
+ },
+ "recaptcha-edit": "Ili kusaidia kuzuia mashine zisihariri, tafadhali andika maneno mawili yanayoonekana katika kisanduku pakipo chini:",
+ "recaptcha-addurl": "Haririo lako lina viungo vipya vya nje. Ili kusaidia katika kuzuisha viungo visivyotakiwa visiwekwe na mashine, tafadhali andika maneno mawili yanayoonekana katika kisanduku pakipo chini:",
+ "recaptcha-badlogin": "Ili kusaidia katika kuzuia neno lako la siri lisigunduliwe na mashine, tafadhali andika maneno mawili yanayoonekana katika kisanduku pakipo chini:",
+ "recaptcha-createaccount": "Ili kusaidia kuzuia akaunti zisifunguliwe nyingi na mashine, tafadhali andika maneno mawili yanayoonekana katika kisanduku pakipo chini:",
+ "recaptcha-createaccount-fail": "Jibu la swali la CAPTCHA si sahihi au halipo.",
+ "recaptcha-create": "Ili kusaidia kuzuia kurasa zisianzishwe nyingi na mashine, tafadhali andika maneno mawili yanayoonekana katika kisanduku pakipo chini:"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/te.json b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/te.json
new file mode 100644
index 00000000..9b994825
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/te.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ravichandra"
+ ]
+ },
+ "recaptcha-edit": "వికీలో యాంత్రికంగా మార్పులు చేసే స్పామర్లను నియంత్రించడానికి కింద పెట్టెలో ఉన్న రెండు పదాలను టైపు చెయ్యండి:",
+ "recaptcha-addurl": "మీ మార్పులు కొత్త బాహ్య లింకులు కలిగి ఉన్నాయి. వికీలో యాంత్రికంగా మార్పులు చేసే స్పామర్లను నియంత్రించడానికి కింద పెట్టెలో ఉన్న రెండు పదాలను టైపు చెయ్యండి:",
+ "recaptcha-badlogin": "వికీలో పాస్‌వర్డ్ దొంగిలించే స్పామర్లను నియంత్రించడానికి కింద పెట్టెలో ఉన్న రెండు పదాలను టైపు చెయ్యండి:",
+ "recaptcha-createaccount": "వికీలో యాంత్రికంగా ఖాతా సృష్టించేవారిని నియంత్రించడానికి కింద పెట్టెలో ఉన్న రెండు పదాలను టైపు చెయ్యండి:",
+ "recaptcha-createaccount-fail": "reCAPTCHA సమాధానం తప్పుగా ఇచ్చారు లేదా అసలే ఇవ్వలేదు.",
+ "recaptcha-create": "వికీలో యాంత్రికంగా పేజీ సృష్టించేవారిని నియంత్రించడానికి కింద పెట్టెలో ఉన్న రెండు పదాలను టైపు చెయ్యండి:"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/tl.json b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/tl.json
new file mode 100644
index 00000000..6b843b72
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/tl.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "AnakngAraw"
+ ]
+ },
+ "recaptcha-desc": "Modulo ng reCAPTCHA para sa Pagtiyak ng Pagbago",
+ "recaptcha-edit": "Upang makatulong sa pagprutekta laban sa kusang basurang pamamatnugot, paki imakinilya ang dalawang mga salitang nakikita mo sa loob ng kahong nasa ibaba:",
+ "recaptcha-addurl": "Ang pagbabago mo ay nagsasama ng bagong panlabas na mga kawing. Upang makatulong sa pagprutekta laban sa kusang paglusob ng basurang-liham, paki imakinilya ang dalawang mga salitang nakikita sa loob ng kahong nasa ibaba:",
+ "recaptcha-badlogin": "Upang makatulong sa pagsasanggalang laban sa kusang panghuhula ng hudyat, paki imakinilya ang dalawang mga salitang nakikita mo sa loob ng kahong nasa ibaba:",
+ "recaptcha-createaccount": "Upang makatulong sa pagprutekta laban sa kusang paglikha ng akawnt, paki imakinilya ang dalawang mga salitang nakikita mo sa loob ng kahong nasa ibaba:",
+ "recaptcha-createaccount-fail": "Hindi tama o nawawalang sagot sa reCAPTCHA.",
+ "recaptcha-create": "Upang makatulong sa pagprutekta laban sa kusang paglikha ng pahina, paki imakinilya ang dalawang mga salitang nakikita mo sa loob ng kahong nasa ibaba:"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/uk.json b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/uk.json
new file mode 100644
index 00000000..13cc233e
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/uk.json
@@ -0,0 +1,24 @@
+{
+ "@metadata": {
+ "authors": [
+ "Andriykopanytsia",
+ "Base",
+ "Тест",
+ "Piramidion",
+ "Ата"
+ ]
+ },
+ "recaptcha-edit": "Для запобігання автоматичному спаму у редагуваннях просимо Вас ввести слова, які Ви бачите у поданому блоці.",
+ "recaptcha-addurl": "Ваше редагування містить зовнішні посилання. Для запобігання автоматичному спаму у редагуваннях просимо Вас ввести слова, які Ви бачите у блоці поданому блоці.",
+ "recaptcha-badlogin": "Для запобігання автоматичному підбору паролю просимо Вас ввести слова, які Ви бачите у поданому блоці.",
+ "recaptcha-createaccount": "Для запобігання автоматичному створенню облікових записів просимо Вас ввести слова, які Ви бачите у поданому блоці.",
+ "recaptcha-createaccount-fail": "Відповідь reCAPTCHA неправильна або відсутня.",
+ "recaptcha-create": "З метою захисту вікі від автоматичного створення сторінки просимо Вас ввести слова, які Ви бачите у блоці поданому блоці.",
+ "recaptcha-info": "Будь ласка, вирішіть завдання ReCaptcha і введіть значення завдання та відповіді як captchaId та captchaWord.",
+ "recaptcha-apihelp-param-recaptcha_challenge_field": "Поле із віджета ReCaptcha",
+ "recaptcha-apihelp-param-recaptcha_response_field": "Поле із віджета ReCaptcha",
+ "recaptcha-id-label": "Завдання ReCaptcha",
+ "recaptcha-id-help": "Значення завдання ReCaptcha",
+ "recaptcha-label": "Відповідь ReCaptcha",
+ "recaptcha-help": "Значення відповіді ReCaptcha"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/vi.json b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/vi.json
new file mode 100644
index 00000000..a8888c40
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/vi.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Minh Nguyen"
+ ]
+ },
+ "recaptcha-desc": "Mô đun reCAPTCHA cho Confirm Edit",
+ "recaptcha-edit": "Để giúp tránh các sửa đổi spam tự động, xin vui lòng gõ hai từ mà bạn nhìn thấy vào hộp dưới đây:",
+ "recaptcha-addurl": "Sửa đổi của bạn có chứa liên kết ngoài mới. Để giúp tránh các sửa đổi spam tự động, xin vui lòng gõ hai từ mà bạn nhìn vào hộp dưới đây:",
+ "recaptcha-badlogin": "Để giúp tránh bẻ khóa mật khẩu tự động, xin vui lòng gõ hai từ mà bạn nhìn vào hộp dưới đây:",
+ "recaptcha-createaccount": "Để giúp tránh việc mở tài khoản tự động, xin vui lòng gõ hai từ mà bạn nhìn vào hộp dưới đây:",
+ "recaptcha-createaccount-fail": "Thiếu câu trả lời reCAPTCHA hoặc câu trả lời không đúng.",
+ "recaptcha-create": "Để giúp tránh việc tạo trang tự động, xin vui lòng gõ hai từ mà bạn nhìn vào hộp dưới đây:"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/zh-hans.json b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/zh-hans.json
new file mode 100644
index 00000000..b5e074d2
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/zh-hans.json
@@ -0,0 +1,24 @@
+{
+ "@metadata": {
+ "authors": [
+ "Hydra",
+ "Hzy980512",
+ "Onecountry",
+ "Liuxinyu970226"
+ ]
+ },
+ "recaptcha-desc": "用于确认编辑的reCAPTCHA模块",
+ "recaptcha-edit": "为了避免垃圾用户自动编辑,我们恳请您输入在框中看到的字词。",
+ "recaptcha-addurl": "您的编辑包含新的外部链接。为了避免垃圾用户自动编辑,我们恳请您输入框中看到的字词。",
+ "recaptcha-badlogin": "为避免自动密码破解,我们恳请您输入框中看到的字词。",
+ "recaptcha-createaccount": "为了避免创建自动垃圾用户,我们恳请您输入在框中看到的字词。",
+ "recaptcha-createaccount-fail": "reCAPTCHA 答案不正确或未填写。",
+ "recaptcha-create": "为了避免垃圾用户自动创建页面,我们恳请您输入在框中看到的字词。",
+ "recaptcha-info": "请解决ReCaptcha挑战,返回挑战并将值作为验证码ID和验证码文字回应。",
+ "recaptcha-apihelp-param-recaptcha_challenge_field": "来自ReCaptcha小部件的字段",
+ "recaptcha-apihelp-param-recaptcha_response_field": "来自ReCaptcha小部件的字段",
+ "recaptcha-id-label": "ReCaptcha挑战",
+ "recaptcha-id-help": "ReCaptcha挑战值",
+ "recaptcha-label": "ReCaptcha解决",
+ "recaptcha-help": "ReCaptcha解决值"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/zh-hant.json b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/zh-hant.json
new file mode 100644
index 00000000..ee21e120
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptcha/i18n/zh-hant.json
@@ -0,0 +1,24 @@
+{
+ "@metadata": {
+ "authors": [
+ "StephDC",
+ "Cwlin0416",
+ "Suchichi02",
+ "Liuxinyu970226",
+ "Kly"
+ ]
+ },
+ "recaptcha-edit": "為保護 wiki 防止自動化垃圾內容編輯程式,我們要麻煩您輸入在方塊中顯示的單字。",
+ "recaptcha-addurl": "您的編輯使用了新的外部連結。為了防止自動化垃圾內容編輯程式,我們要麻煩您輸入在方塊中顯示的單字。",
+ "recaptcha-badlogin": "為保護 wiki 防止密碼破解程式,我們要麻煩您輸入在方塊中顯示的單字。",
+ "recaptcha-createaccount": "為保護 wiki 防止自動註冊程式,我們要麻煩您輸入在方塊中顯示的單字。",
+ "recaptcha-createaccount-fail": "不正確或者未輸入 reCAPTCHA 答案。",
+ "recaptcha-create": "為了防止自動建立頁面程式,我們要麻煩您輸入在方塊中顯示的單字。",
+ "recaptcha-info": "請解決 ReCaptcha 的盤問,並回傳作為驗證碼 ID、驗證碼文字的盤問值與回應值。",
+ "recaptcha-apihelp-param-recaptcha_challenge_field": "自 ReCaptcha 小工具的欄位",
+ "recaptcha-apihelp-param-recaptcha_response_field": "自 ReCaptcha 小工具的欄位",
+ "recaptcha-id-label": "ReCaptcha 盤問",
+ "recaptcha-id-help": "ReCaptcha 盤問值",
+ "recaptcha-label": "ReCaptcha 處理",
+ "recaptcha-help": "ReCaptcha 處理值"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptcha/recaptchalib.php b/www/wiki/extensions/ConfirmEdit/ReCaptcha/recaptchalib.php
new file mode 100644
index 00000000..e5636ddd
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptcha/recaptchalib.php
@@ -0,0 +1,274 @@
+<?php
+/**
+ * This is a PHP library that handles calling reCAPTCHA.
+ * - Documentation and latest version
+ * http://recaptcha.net/plugins/php/
+ * - Get a reCAPTCHA API Key
+ * https://www.google.com/recaptcha/admin/create
+ * - Discussion group
+ * http://groups.google.com/group/recaptcha
+ *
+ * Copyright (c) 2007 reCAPTCHA -- http://recaptcha.net
+ * AUTHORS:
+ * Mike Crawford
+ * Ben Maurer
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+/**
+ * The reCAPTCHA server URL's
+ */
+define( "RECAPTCHA_API_SERVER", "http://www.google.com/recaptcha/api" );
+define( "RECAPTCHA_API_SECURE_SERVER", "https://www.google.com/recaptcha/api" );
+define( "RECAPTCHA_VERIFY_SERVER", "www.google.com" );
+
+/**
+ * Encodes the given data into a query string format
+ * @param $data - array of string elements to be encoded
+ * @return string - encoded request
+ */
+function _recaptcha_qsencode ( $data ) {
+ $req = "";
+ foreach ( $data as $key => $value )
+ $req .= $key . '=' . urlencode( stripslashes( $value ) ) . '&';
+
+ // Cut the last '&'
+ $req = substr( $req, 0, strlen( $req ) -1 );
+ return $req;
+}
+
+
+
+/**
+ * Submits an HTTP POST to a reCAPTCHA server
+ * @param string $host
+ * @param string $path
+ * @param array $data
+ * @param int port
+ * @return array response
+ */
+function _recaptcha_http_post( $host, $path, $data, $port = 80 ) {
+
+ $req = _recaptcha_qsencode ( $data );
+
+ $http_request = "POST $path HTTP/1.0\r\n";
+ $http_request .= "Host: $host\r\n";
+ $http_request .= "Content-Type: application/x-www-form-urlencoded;\r\n";
+ $http_request .= "Content-Length: " . strlen( $req ) . "\r\n";
+ $http_request .= "User-Agent: reCAPTCHA/PHP\r\n";
+ $http_request .= "\r\n";
+ $http_request .= $req;
+
+ $response = '';
+ if ( false == ( $fs = @fsockopen( $host, $port, $errno, $errstr, 10 ) ) ) {
+ die ( 'Could not open socket' );
+ }
+
+ fwrite( $fs, $http_request );
+
+ while ( !feof( $fs ) )
+ $response .= fgets( $fs, 1160 ); // One TCP-IP packet
+ fclose( $fs );
+ $response = explode( "\r\n\r\n", $response, 2 );
+
+ return $response;
+}
+
+
+
+/**
+ * Gets the challenge HTML (javascript and non-javascript version).
+ * This is called from the browser, and the resulting reCAPTCHA HTML widget
+ * is embedded within the HTML form it was called from.
+ * @param string $pubkey A public key for reCAPTCHA
+ * @param string $error The error given by reCAPTCHA (optional, default is null)
+ * @param boolean $use_ssl Should the request be made over ssl? (optional, default is false)
+
+ * @return string - The HTML to be embedded in the user's form.
+ */
+function recaptcha_get_html ( $pubkey, $error = null, $use_ssl = false )
+{
+ if ( $pubkey == null || $pubkey == '' ) {
+ die ( "To use reCAPTCHA you must get an API key from <a href='https://www.google.com/recaptcha/admin/create'>https://www.google.com/recaptcha/admin/create</a>" );
+ }
+
+ if ( $use_ssl ) {
+ $server = RECAPTCHA_API_SECURE_SERVER;
+ } else {
+ $server = RECAPTCHA_API_SERVER;
+ }
+
+ $errorpart = "";
+ if ( $error ) {
+ $errorpart = "&amp;error=" . $error;
+ }
+ return '<script type="text/javascript" src="' . $server . '/challenge?k=' . $pubkey . $errorpart . '"></script>
+
+ <noscript>
+ <iframe src="' . $server . '/noscript?k=' . $pubkey . $errorpart . '" height="300" width="500" frameborder="0"></iframe><br/>
+ <textarea name="recaptcha_challenge_field" rows="3" cols="40"></textarea>
+ <input type="hidden" name="recaptcha_response_field" value="manual_challenge"/>
+ </noscript>';
+}
+
+
+
+
+/**
+ * A ReCaptchaResponse is returned from recaptcha_check_answer()
+ */
+class ReCaptchaResponse {
+ public $is_valid;
+ public $error;
+}
+
+
+/**
+ * Calls an HTTP POST function to verify if the user's guess was correct
+ * @param string $privkey
+ * @param string $remoteip
+ * @param string $challenge
+ * @param string $response
+ * @param array $extra_params an array of extra variables to post to the server
+ * @return ReCaptchaResponse
+ */
+function recaptcha_check_answer ( $privkey, $remoteip, $challenge, $response, $extra_params = array() )
+{
+ if ( $privkey == null || $privkey == '' ) {
+ die ( "To use reCAPTCHA you must get an API key from <a href='https://www.google.com/recaptcha/admin/create'>https://www.google.com/recaptcha/admin/create</a>" );
+ }
+
+ if ( $remoteip == null || $remoteip == '' ) {
+ die ( "For security reasons, you must pass the remote ip to reCAPTCHA" );
+ }
+
+
+
+ // discard spam submissions
+ if ( $challenge == null || strlen( $challenge ) == 0 || $response == null || strlen( $response ) == 0 ) {
+ $recaptcha_response = new ReCaptchaResponse();
+ $recaptcha_response->is_valid = false;
+ $recaptcha_response->error = 'incorrect-captcha-sol';
+ return $recaptcha_response;
+ }
+
+ $response = _recaptcha_http_post ( RECAPTCHA_VERIFY_SERVER, "/recaptcha/api/verify",
+ array (
+ 'privatekey' => $privkey,
+ 'remoteip' => $remoteip,
+ 'challenge' => $challenge,
+ 'response' => $response
+ ) + $extra_params
+ );
+
+ $answers = explode ( "\n", $response [1] );
+ $recaptcha_response = new ReCaptchaResponse();
+
+ if ( trim ( $answers [0] ) == 'true' ) {
+ $recaptcha_response->is_valid = true;
+ }
+ else {
+ $recaptcha_response->is_valid = false;
+ $recaptcha_response->error = $answers [1];
+ }
+ return $recaptcha_response;
+
+}
+
+/**
+ * gets a URL where the user can sign up for reCAPTCHA. If your application
+ * has a configuration page where you enter a key, you should provide a link
+ * using this function.
+ * @param string $domain The domain where the page is hosted
+ * @param string $appname The name of your application
+ */
+function recaptcha_get_signup_url ( $domain = null, $appname = null ) {
+ return "https://www.google.com/recaptcha/admin/create?" . _recaptcha_qsencode ( array ( 'domains' => $domain, 'app' => $appname ) );
+}
+
+function _recaptcha_aes_pad( $val ) {
+ $block_size = 16;
+ $numpad = $block_size - ( strlen ( $val ) % $block_size );
+ return str_pad( $val, strlen ( $val ) + $numpad, chr( $numpad ) );
+}
+
+/* Mailhide related code */
+
+function _recaptcha_aes_encrypt( $val, $ky ) {
+ if ( ! function_exists ( "mcrypt_encrypt" ) ) {
+ die ( "To use reCAPTCHA Mailhide, you need to have the mcrypt php module installed." );
+ }
+ $mode = MCRYPT_MODE_CBC;
+ $enc = MCRYPT_RIJNDAEL_128;
+ $val = _recaptcha_aes_pad( $val );
+ return mcrypt_encrypt( $enc, $ky, $val, $mode, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" );
+}
+
+
+function _recaptcha_mailhide_urlbase64 ( $x ) {
+ return strtr( base64_encode ( $x ), '+/', '-_' );
+}
+
+/* gets the reCAPTCHA Mailhide url for a given email, public key and private key */
+function recaptcha_mailhide_url( $pubkey, $privkey, $email ) {
+ if ( $pubkey == '' || $pubkey == null || $privkey == "" || $privkey == null ) {
+ die ( "To use reCAPTCHA Mailhide, you have to sign up for a public and private key, " .
+ "you can do so at <a href='http://www.google.com/recaptcha/mailhide/apikey'>http://www.google.com/recaptcha/mailhide/apikey</a>" );
+ }
+
+
+ $ky = pack( 'H*', $privkey );
+ $cryptmail = _recaptcha_aes_encrypt ( $email, $ky );
+
+ return "http://www.google.com/recaptcha/mailhide/d?k=" . $pubkey . "&c=" . _recaptcha_mailhide_urlbase64 ( $cryptmail );
+}
+
+/**
+ * gets the parts of the email to expose to the user.
+ * eg, given johndoe@example,com return ["john", "example.com"].
+ * the email is then displayed as john...@example.com
+ */
+function _recaptcha_mailhide_email_parts ( $email ) {
+ $arr = preg_split( "/@/", $email );
+
+ if ( strlen ( $arr[0] ) <= 4 ) {
+ $arr[0] = substr ( $arr[0], 0, 1 );
+ } elseif ( strlen ( $arr[0] ) <= 6 ) {
+ $arr[0] = substr ( $arr[0], 0, 3 );
+ } else {
+ $arr[0] = substr ( $arr[0], 0, 4 );
+ }
+ return $arr;
+}
+
+/**
+ * Gets html to display an email address given a public an private key.
+ * to get a key, go to:
+ *
+ * http://www.google.com/recaptcha/mailhide/apikey
+ */
+function recaptcha_mailhide_html( $pubkey, $privkey, $email ) {
+ $emailparts = _recaptcha_mailhide_email_parts ( $email );
+ $url = recaptcha_mailhide_url ( $pubkey, $privkey, $email );
+
+ return htmlentities( $emailparts[0] ) . "<a href='" . htmlentities ( $url ) .
+ "' onclick=\"window.open('" . htmlentities ( $url ) . "', '', 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=0,width=500,height=300'); return false;\" title=\"Reveal this e-mail address\">...</a>@" . htmlentities ( $emailparts [1] );
+
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha.php b/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha.php
new file mode 100644
index 00000000..17796e57
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha.php
@@ -0,0 +1,2 @@
+<?php
+require_once __DIR__ . "/ReCaptchaNoCaptcha/ReCaptchaNoCaptcha.php";
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/HTMLReCaptchaNoCaptchaField.php b/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/HTMLReCaptchaNoCaptchaField.php
new file mode 100644
index 00000000..e1a39a60
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/HTMLReCaptchaNoCaptchaField.php
@@ -0,0 +1,74 @@
+<?php
+
+/**
+ * Creates a ReCaptcha v2 widget. Does not return any data; handling the data submitted by the
+ * widget is callers' responsibility.
+ */
+class HTMLReCaptchaNoCaptchaField extends HTMLFormField {
+ /** @var string Public key parameter to be passed to ReCaptcha. */
+ protected $key;
+
+ /** @var string Error returned by ReCaptcha in the previous round. */
+ protected $error;
+
+ /**
+ * Parameters:
+ * - key: (string, required) ReCaptcha public key
+ * - error: (string) ReCaptcha error from previous round
+ * @param array $params
+ */
+ public function __construct( array $params ) {
+ $params += [ 'error' => null ];
+ parent::__construct( $params );
+
+ $this->key = $params['key'];
+ $this->error = $params['error'];
+
+ $this->mName = 'g-recaptcha-response';
+ }
+
+ public function getInputHTML( $value ) {
+ $out = $this->mParent->getOutput();
+ $lang = htmlspecialchars( urlencode( $this->mParent->getLanguage()->getCode() ) );
+
+ // Insert reCAPTCHA script, in display language, if available.
+ // Language falls back to the browser's display language.
+ // See https://developers.google.com/recaptcha/docs/faq
+ $out->addHeadItem(
+ 'g-recaptchascript',
+ "<script src=\"https://www.google.com/recaptcha/api.js?hl={$lang}\" async defer></script>"
+ );
+ $output = Html::element( 'div', [
+ 'class' => [
+ 'g-recaptcha',
+ 'mw-confirmedit-captcha-fail' => !!$this->error,
+ ],
+ 'data-sitekey' => $this->key,
+ ] );
+ $htmlUrlencoded = htmlspecialchars( urlencode( $this->key ) );
+ $output .= <<<HTML
+<noscript>
+ <div>
+ <div style="width: 302px; height: 422px; position: relative;">
+ <div style="width: 302px; height: 422px; position: absolute;">
+ <iframe src="https://www.google.com/recaptcha/api/fallback?k={$htmlUrlencoded}&hl={$lang}"
+ frameborder="0" scrolling="no"
+ style="width: 302px; height:422px; border-style: none;">
+ </iframe>
+ </div>
+ </div>
+ <div style="width: 300px; height: 60px; border-style: none;
+ bottom: 12px; left: 25px; margin: 0px; padding: 0px; right: 25px;
+ background: #f9f9f9; border: 1px solid #c1c1c1; border-radius: 3px;">
+ <textarea id="g-recaptcha-response" name="g-recaptcha-response"
+ class="g-recaptcha-response"
+ style="width: 250px; height: 40px; border: 1px solid #c1c1c1;
+ margin: 10px 25px; padding: 0px; resize: none;" >
+ </textarea>
+ </div>
+ </div>
+</noscript>
+HTML;
+ return $output;
+ }
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/ReCaptchaNoCaptcha.class.php b/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/ReCaptchaNoCaptcha.class.php
new file mode 100644
index 00000000..19aa1093
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/ReCaptchaNoCaptcha.class.php
@@ -0,0 +1,247 @@
+<?php
+
+use MediaWiki\Auth\AuthenticationRequest;
+
+class ReCaptchaNoCaptcha extends SimpleCaptcha {
+ // used for renocaptcha-edit, renocaptcha-addurl, renocaptcha-badlogin, renocaptcha-createaccount,
+ // renocaptcha-create, renocaptcha-sendemail via getMessage()
+ protected static $messagePrefix = 'renocaptcha-';
+
+ private $error = null;
+ /**
+ * Get the captcha form.
+ * @param int $tabIndex
+ * @return array
+ */
+ function getFormInformation( $tabIndex = 1 ) {
+ global $wgReCaptchaSiteKey, $wgLang;
+ $lang = htmlspecialchars( urlencode( $wgLang->getCode() ) );
+
+ $output = Html::element( 'div', [
+ 'class' => [
+ 'g-recaptcha',
+ 'mw-confirmedit-captcha-fail' => !!$this->error,
+ ],
+ 'data-sitekey' => $wgReCaptchaSiteKey
+ ] );
+ $htmlUrlencoded = htmlspecialchars( urlencode( $wgReCaptchaSiteKey ) );
+ $output .= <<<HTML
+<noscript>
+ <div>
+ <div style="width: 302px; height: 422px; position: relative;">
+ <div style="width: 302px; height: 422px; position: absolute;">
+ <iframe src="https://www.google.com/recaptcha/api/fallback?k={$htmlUrlencoded}&hl={$lang}"
+ frameborder="0" scrolling="no"
+ style="width: 302px; height:422px; border-style: none;">
+ </iframe>
+ </div>
+ </div>
+ <div style="width: 300px; height: 60px; border-style: none;
+ bottom: 12px; left: 25px; margin: 0px; padding: 0px; right: 25px;
+ background: #f9f9f9; border: 1px solid #c1c1c1; border-radius: 3px;">
+ <textarea id="g-recaptcha-response" name="g-recaptcha-response"
+ class="g-recaptcha-response"
+ style="width: 250px; height: 40px; border: 1px solid #c1c1c1;
+ margin: 10px 25px; padding: 0px; resize: none;" >
+ </textarea>
+ </div>
+ </div>
+</noscript>
+HTML;
+ return [
+ 'html' => $output,
+ 'headitems' => [
+ // Insert reCAPTCHA script, in display language, if available.
+ // Language falls back to the browser's display language.
+ // See https://developers.google.com/recaptcha/docs/faq
+ "<script src=\"https://www.google.com/recaptcha/api.js?hl={$lang}\" async defer></script>"
+ ]
+ ];
+ }
+
+ /**
+ * @param Status|array|string $info
+ */
+ protected function logCheckError( $info ) {
+ if ( $info instanceof Status ) {
+ $errors = $info->getErrorsArray();
+ $error = $errors[0][0];
+ } elseif ( is_array( $info ) ) {
+ $error = implode( ',', $info );
+ } else {
+ $error = $info;
+ }
+
+ wfDebugLog( 'captcha', 'Unable to validate response: ' . $error );
+ }
+
+ /**
+ * @param WebRequest $request
+ * @return array
+ */
+ protected function getCaptchaParamsFromRequest( WebRequest $request ) {
+ $index = 'not used'; // ReCaptchaNoCaptcha combines captcha ID + solution into a single value
+ // API is hardwired to return captchaWord, so use that if the standard isempty
+ $response = $request->getVal( 'g-recaptcha-response', $request->getVal( 'captchaWord' ) );
+ return [ $index, $response ];
+ }
+
+ /**
+ * Check, if the user solved the captcha.
+ *
+ * Based on reference implementation:
+ * https://github.com/google/recaptcha#php
+ *
+ * @param mixed $_ Not used (ReCaptcha v2 puts index and solution in a single string)
+ * @param string $word captcha solution
+ * @return bool
+ */
+ function passCaptcha( $_, $word ) {
+ global $wgRequest, $wgReCaptchaSecretKey, $wgReCaptchaSendRemoteIP;
+
+ $url = 'https://www.google.com/recaptcha/api/siteverify';
+ // Build data to append to request
+ $data = [
+ 'secret' => $wgReCaptchaSecretKey,
+ 'response' => $word,
+ ];
+ if ( $wgReCaptchaSendRemoteIP ) {
+ $data['remoteip'] = $wgRequest->getIP();
+ }
+ $url = wfAppendQuery( $url, $data );
+ $request = MWHttpRequest::factory( $url, [ 'method' => 'GET' ] );
+ $status = $request->execute();
+ if ( !$status->isOK() ) {
+ $this->error = 'http';
+ $this->logCheckError( $status );
+ return false;
+ }
+ $response = FormatJson::decode( $request->getContent(), true );
+ if ( !$response ) {
+ $this->error = 'json';
+ $this->logCheckError( $this->error );
+ return false;
+ }
+ if ( isset( $response['error-codes'] ) ) {
+ $this->error = 'recaptcha-api';
+ $this->logCheckError( $response['error-codes'] );
+ return false;
+ }
+
+ return $response['success'];
+ }
+
+ /**
+ * @param array &$resultArr
+ */
+ function addCaptchaAPI( &$resultArr ) {
+ $resultArr['captcha'] = $this->describeCaptchaType();
+ $resultArr['captcha']['error'] = $this->error;
+ }
+
+ /**
+ * @return array
+ */
+ public function describeCaptchaType() {
+ global $wgReCaptchaSiteKey;
+ return [
+ 'type' => 'recaptchanocaptcha',
+ 'mime' => 'image/png',
+ 'key' => $wgReCaptchaSiteKey,
+ ];
+ }
+
+ /**
+ * Show a message asking the user to enter a captcha on edit
+ * The result will be treated as wiki text
+ *
+ * @param string $action Action being performed
+ * @return string Wikitext
+ */
+ public function getMessage( $action ) {
+ $msg = parent::getMessage( $action );
+ if ( $this->error ) {
+ $msg = new RawMessage( '<div class="error">$1</div>', [ $msg ] );
+ }
+ return $msg;
+ }
+
+ /**
+ * @param ApiBase &$module
+ * @param array &$params
+ * @param int $flags
+ * @return bool
+ */
+ public function APIGetAllowedParams( &$module, &$params, $flags ) {
+ if ( $flags && $this->isAPICaptchaModule( $module ) ) {
+ $params['g-recaptcha-response'] = [
+ ApiBase::PARAM_HELP_MSG => 'renocaptcha-apihelp-param-g-recaptcha-response',
+ ];
+ }
+
+ return true;
+ }
+
+ public function getError() {
+ return $this->error;
+ }
+
+ public function storeCaptcha( $info ) {
+ // ReCaptcha is stored by Google; the ID will be generated at that time as well, and
+ // the one returned here won't be used. Just pretend this worked.
+ return 'not used';
+ }
+
+ public function retrieveCaptcha( $index ) {
+ // just pretend it worked
+ return [ 'index' => $index ];
+ }
+
+ public function getCaptcha() {
+ // ReCaptcha is handled by frontend code + an external provider; nothing to do here.
+ return [];
+ }
+
+ /**
+ * @param array $captchaData
+ * @param string $id
+ * @return Message
+ */
+ public function getCaptchaInfo( $captchaData, $id ) {
+ return wfMessage( 'renocaptcha-info' );
+ }
+
+ /**
+ * @return ReCaptchaNoCaptchaAuthenticationRequest
+ */
+ public function createAuthenticationRequest() {
+ return new ReCaptchaNoCaptchaAuthenticationRequest();
+ }
+
+ /**
+ * @param array $requests
+ * @param array $fieldInfo
+ * @param array &$formDescriptor
+ * @param string $action
+ */
+ public function onAuthChangeFormFields(
+ array $requests, array $fieldInfo, array &$formDescriptor, $action
+ ) {
+ global $wgReCaptchaSiteKey;
+
+ $req = AuthenticationRequest::getRequestByClass( $requests,
+ CaptchaAuthenticationRequest::class, true );
+ if ( !$req ) {
+ return;
+ }
+
+ // ugly way to retrieve error information
+ $captcha = ConfirmEditHooks::getInstance();
+
+ $formDescriptor['captchaWord'] = [
+ 'class' => HTMLReCaptchaNoCaptchaField::class,
+ 'key' => $wgReCaptchaSiteKey,
+ 'error' => $captcha->getError(),
+ ] + $formDescriptor['captchaWord'];
+ }
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/ReCaptchaNoCaptcha.php b/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/ReCaptchaNoCaptcha.php
new file mode 100644
index 00000000..9654dee8
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/ReCaptchaNoCaptcha.php
@@ -0,0 +1,14 @@
+<?php
+if ( function_exists( 'wfLoadExtension' ) ) {
+ wfLoadExtension( 'ConfirmEdit/ReCaptchaNoCaptcha' );
+ // Keep i18n globals so mergeMessageFileList.php doesn't break
+ $wgMessagesDirs['ReCaptchaNoCaptcha'] = __DIR__ . '/i18n';
+ /* wfWarn(
+ 'Deprecated PHP entry point used for ReCaptchaNoCaptcha extension. ' .
+ 'Please use wfLoadExtension instead, ' .
+ 'see https://www.mediawiki.org/wiki/Extension_registration for more details.'
+ ); */
+ return;
+} else {
+ die( 'This version of the ReCaptchaNoCaptcha extension requires MediaWiki 1.25+' );
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/ReCaptchaNoCaptchaAuthenticationRequest.php b/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/ReCaptchaNoCaptchaAuthenticationRequest.php
new file mode 100644
index 00000000..01b845dd
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/ReCaptchaNoCaptchaAuthenticationRequest.php
@@ -0,0 +1,30 @@
+<?php
+
+use MediaWiki\Auth\AuthenticationRequest;
+
+/**
+ * Authentication request for ReCaptcha v2. Unlike the parent class, no session storage is used
+ * and there is no ID; Google provides a single proof string after successfully solving a captcha.
+ */
+class ReCaptchaNoCaptchaAuthenticationRequest extends CaptchaAuthenticationRequest {
+ public function __construct() {
+ parent::__construct( null, null );
+ }
+
+ public function loadFromSubmission( array $data ) {
+ // unhack the hack in parent
+ return AuthenticationRequest::loadFromSubmission( $data );
+ }
+
+ public function getFieldInfo() {
+ $fieldInfo = parent::getFieldInfo();
+
+ return [
+ 'captchaWord' => [
+ 'type' => 'string',
+ 'label' => $fieldInfo['captchaInfo']['label'],
+ 'help' => wfMessage( 'renocaptcha-help' ),
+ ],
+ ];
+ }
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/extension.json b/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/extension.json
new file mode 100644
index 00000000..23bbf5ac
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/extension.json
@@ -0,0 +1,20 @@
+{
+ "name": "ReCaptchaNoCaptcha",
+ "MessagesDirs": {
+ "ReCaptchaNoCaptcha": [
+ "i18n"
+ ]
+ },
+ "AutoloadClasses": {
+ "ReCaptchaNoCaptcha": "ReCaptchaNoCaptcha.class.php",
+ "HTMLReCaptchaNoCaptchaField": "HTMLReCaptchaNoCaptchaField.php",
+ "ReCaptchaNoCaptchaAuthenticationRequest": "ReCaptchaNoCaptchaAuthenticationRequest.php"
+ },
+ "config": {
+ "CaptchaClass": "ReCaptchaNoCaptcha",
+ "ReCaptchaSiteKey": "",
+ "ReCaptchaSecretKey": "",
+ "ReCaptchaSendRemoteIP": false
+ },
+ "manifest_version": 1
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/ast.json b/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/ast.json
new file mode 100644
index 00000000..d5bc558b
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/ast.json
@@ -0,0 +1,16 @@
+{
+ "@metadata": {
+ "authors": [
+ "Xuacu"
+ ]
+ },
+ "renocaptcha-edit": "Pa protexer la wiki escontra'l spam d'ediciones automatizáu, pidímoste que resuelvas el siguiente CAPTCHA:",
+ "renocaptcha-addurl": "La to edición incluye enllaces esternos nuevos. Pa protexer la wiki escontra'l spam automáticu, pidímoste que resuelvas el siguiente CAPTCHA:",
+ "renocaptcha-badlogin": "Para protexer la wiki escontra'l frayamientu automáticu de contraseñes, pidímoste amablemente que resuelvas el siguiente CAPTCHA:",
+ "renocaptcha-createaccount": "Pa protexer la wiki escontra la creación de cuentes automatizada, pidímoste que resuelvas el siguiente CAPTCHA:",
+ "renocaptcha-createaccount-fail": "Paez que nun resolvisti'l CAPTCHA.",
+ "renocaptcha-create": "Pa protexer la wiki escontra la creación de páxines automatizada, pidímoste que resuelvas el siguiente CAPTCHA:",
+ "renocaptcha-noscript": "Por desgracia desactivasti JavaScript, polo que nun podemos reconocer automáticamente si yes humanu o non. Resuelve'l CAPTCHA de más arriba y copia'l testu resultante nel siguiente cuadru de testu:",
+ "renocaptcha-help": "Por favor, resuelve l'enigma ReCaptcha NoCaptcha y devuelve los valores de respuesta como captchaWord.",
+ "renocaptcha-apihelp-param-g-recaptcha-response": "Campu del widget ReCaptcha."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/ba.json b/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/ba.json
new file mode 100644
index 00000000..95748bf3
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/ba.json
@@ -0,0 +1,10 @@
+{
+ "@metadata": {
+ "authors": [
+ "Азат Хәлилов",
+ "Айбикә"
+ ]
+ },
+ "renocaptcha-createaccount-fail": "Һеҙ CAPTCHA -ны сисә алманығыҙ",
+ "renocaptcha-apihelp-param-g-recaptcha-response": "ReCaptcha виджеты майҙаны"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/ca.json b/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/ca.json
new file mode 100644
index 00000000..aa4e8704
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/ca.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "QuimGil"
+ ]
+ },
+ "renocaptcha-createaccount": "Per a protegir el wiki contra la creació automatitzada de comptes, us demanem que resolgueu la següent CAPTCHA:"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/cs.json b/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/cs.json
new file mode 100644
index 00000000..ee5fca6f
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/cs.json
@@ -0,0 +1,16 @@
+{
+ "@metadata": {
+ "authors": [
+ "Mormegil"
+ ]
+ },
+ "renocaptcha-edit": "V zájmu ochrany této wiki před automatickým spamováním vás prosíme o vyřešení následujícího testu CAPTCHA:",
+ "renocaptcha-addurl": "Vaše editace obsahuje nové externí odkazy. V zájmu ochrany této wiki před automatickým spamováním vás prosíme o vyřešení následujícího testu CAPTCHA:",
+ "renocaptcha-badlogin": "V zájmu ochrany této wiki proti automatickým pokusům uhodnout heslo vás prosíme o vyřešení následujícího testu CAPTCHA:",
+ "renocaptcha-createaccount": "V zájmu ochrany této wiki před automatickým vytvářením účtů vás prosíme o vyřešení následujícího testu CAPTCHA:",
+ "renocaptcha-createaccount-fail": "Vypadá to, že jste nevyřešili test CAPTCHA.",
+ "renocaptcha-create": "V zájmu ochrany před automatickým zakládáním stránek vás prosíme o vyřešení následujícího testu CAPTCHA:",
+ "renocaptcha-noscript": "Bohužel máte vypnutý JavaScript, takže nedokážeme automaticky rozpoznat, jestli jste člověk nebo ne. Vyřešte prosím výše zobrazený test CAPTCHA a výsledný text zkopírujte do následujícího pole:",
+ "renocaptcha-help": "Vyřešte výzvu ReCaptcha NoCaptcha a vraťte hodnotu odpovědi jako captchaWord.",
+ "renocaptcha-apihelp-param-g-recaptcha-response": "Pole z widgetu ReCaptcha."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/de.json b/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/de.json
new file mode 100644
index 00000000..b4cfc1bc
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/de.json
@@ -0,0 +1,16 @@
+{
+ "@metadata": {
+ "authors": [
+ "Metalhead64"
+ ]
+ },
+ "renocaptcha-edit": "Um das Wiki vor automatisiertem Bearbeitungsspam zu schützen, bitten wir dich, das folgende CAPTCHA zu lösen:",
+ "renocaptcha-addurl": "Deine Bearbeitung enthält neue Weblinks. Um das Wiki vor automatisiertem Spam zu schützen, bitten wir dich, das folgende CAPTCHA zu lösen:",
+ "renocaptcha-badlogin": "Um das Wiki vor automatisiertem Knacken des Passwortes zu schützen, bitten wir dich, das folgende CAPTCHA zu lösen:",
+ "renocaptcha-createaccount": "Um das Wiki vor automatisiertem Spam zu schützen, bitten wir dich, das folgende CAPTCHA zu lösen:",
+ "renocaptcha-createaccount-fail": "Es scheint, als ob du das CAPTCHA nicht gelöst hast.",
+ "renocaptcha-create": "Um das Wiki vor automatisierter Seitenerstellung zu schützen, bitten wir dich, das folgende CAPTCHA zu lösen:",
+ "renocaptcha-noscript": "Da du leider JavaScript deaktiviert hast, konnten wir nicht feststellen, ob du ein Mensch bist oder nicht. Bitte löse das obige CAPTCHA und kopiere den resultierenden Text in das folgende Textfeld:",
+ "renocaptcha-help": "Bitte löse eine ReCaptcha-NoCaptcha-Herausforderung und gib den Antwortwert als captchaWord zurück.",
+ "renocaptcha-apihelp-param-g-recaptcha-response": "Feld von dem ReCaptcha-Widget."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/en.json b/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/en.json
new file mode 100644
index 00000000..68a57e82
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/en.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": []
+ },
+ "renocaptcha-edit": "To protect the wiki against automated edit spam, we kindly ask you to solve the following CAPTCHA:",
+ "renocaptcha-addurl": "Your edit includes new external links. To protect the wiki against automated spam, we kindly ask you to solve the following CAPTCHA:",
+ "renocaptcha-badlogin": "To protect the wiki against automated password cracking, we kindly ask you to solve the following CAPTCHA:",
+ "renocaptcha-createaccount": "To protect the wiki against automated account creation, we kindly ask you to solve the following CAPTCHA:",
+ "renocaptcha-createaccount-fail": "It seems you haven't solved the CAPTCHA.",
+ "renocaptcha-create": "To protect the wiki against automated page creation, we kindly ask you to solve the following CAPTCHA:",
+ "renocaptcha-noscript": "Unhappily you have disabled JavaScript, so we can't recognize automatically, if you're a human or not. Please solve the CAPTCHA above and copy the resulting text into the following textarea:",
+ "renocaptcha-help": "Please solve a ReCaptcha NoCaptcha challenge and return the response value as captchaWord.",
+ "renocaptcha-apihelp-param-g-recaptcha-response": "Field from the ReCaptcha widget."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/es.json b/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/es.json
new file mode 100644
index 00000000..c0ff07d7
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/es.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Macofe"
+ ]
+ },
+ "renocaptcha-edit": "Para proteger el wiki contra el spam automatizado, te pedimos que resuelvas el siguiente CAPTCHA:",
+ "renocaptcha-addurl": "Tu edición incluye enlaces externos nuevos. Para proteger el wiki contra el spam automatizado, te pedimos que resuelvas el siguiente CAPTCHA:",
+ "renocaptcha-badlogin": "Para proteger el wiki contra el descifrado automatizado de contraseñas, te pedimos que resuelvas el siguiente CAPTCHA:",
+ "renocaptcha-createaccount": "Para proteger el wiki contra la creación automatizada de cuentas, te pedimos que resuelvas el siguiente CAPTCHA:",
+ "renocaptcha-createaccount-fail": "Parece que no has resuelto el CAPTCHA.",
+ "renocaptcha-create": "Para proteger el wiki contra la creación automatizada de páginas, te pedimos que resuelvas el siguiente CAPTCHA:",
+ "renocaptcha-noscript": "Por desgracia has desactivado JavaScript, por lo que no se puede reconocer automáticamente, si eres un humano o no. Resuelve el CAPTCHA de arriba y copia el texto resultante en el siguiente cuadro:"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/fr.json b/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/fr.json
new file mode 100644
index 00000000..b3ba902e
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/fr.json
@@ -0,0 +1,19 @@
+{
+ "@metadata": {
+ "authors": [
+ "Wladek92",
+ "Orlodrim",
+ "Gomoko",
+ "Urhixidur"
+ ]
+ },
+ "renocaptcha-edit": "Pour protéger le wiki contre les pourriels de modification automatique, nous vous demandons de bien vouloir résoudre le CAPTCHA suivant :",
+ "renocaptcha-addurl": "Votre édition comprend de nouveaux liens externes. Pour protéger le wiki contre les pourriels automatisés, nous vous demandons de bien vouloir résoudre le CAPTCHA suivant :",
+ "renocaptcha-badlogin": "Pour protéger le wiki contre le craquage automatisé des mots de passe, nous vous prions de bien vouloir résoudre le CAPTCHA suivant :",
+ "renocaptcha-createaccount": "Pour protéger le wiki contre la création automatisée des pages, nous vous prions de bien vouloir résoudre le CAPTCHA suivant:",
+ "renocaptcha-createaccount-fail": "Il semble que vous n'ayiez pas résolu le CAPTCHA.",
+ "renocaptcha-create": "Pour protéger le wiki contre la création automatisée de pages, nous vous prions de bien vouloir résoudre le CAPTCHA suivant:",
+ "renocaptcha-noscript": "Malheureusement, vous avez désactivé JavaScript, donc nous ne pouvons pas reconnaître automatiquement, si vous êtes un humain ou pas. Veuillez résoudre le CAPTCHA ci-dessus et copiez le texte qui en résulte dans la zone de texte suivante :",
+ "renocaptcha-help": "Veuillez résoudre un défi ReCaptcha NoCaptcha et renvoyer la valeur de la réponse comme captchaWord.",
+ "renocaptcha-apihelp-param-g-recaptcha-response": "Champ du formulaire ReCaptcha."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/gl.json b/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/gl.json
new file mode 100644
index 00000000..84b0d397
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/gl.json
@@ -0,0 +1,16 @@
+{
+ "@metadata": {
+ "authors": [
+ "Elisardojm"
+ ]
+ },
+ "renocaptcha-edit": "Para protexer a wiki contra edicións de spam automatizadas, por iso pedímoslle amablemente que resolva o seguinte CAPTCHA:",
+ "renocaptcha-addurl": "A súa edición inclúe novas ligazóns externas. Para protexer a wiki contra o spam automático, pedímoslle amablemente que resolva o seguinte CAPTCHA:",
+ "renocaptcha-badlogin": "Para protexer a wiki contra a ruptura automática de contrasinais, pedímoslle amablemente que resolva o seguinte CAPTCHA:",
+ "renocaptcha-createaccount": "Para protexer a wiki contra a creación automática de contas, pedímoslle amablemente que resolva o seguinte CAPTCHA:",
+ "renocaptcha-createaccount-fail": "Parece que non resolveu o CAPTCHA.",
+ "renocaptcha-create": "Para protexer a wiki contra a creación automática de páxinas, pedímoslle amablemente que resolva o seguinte CAPTCHA:",
+ "renocaptcha-noscript": "Desafortunadamente desactivou o JavaScript, polo que non podemos recoñecer automaticamente se vostede é unha persoa ou non. Por favor, resolva o CAPTCHA de arriba e copie o texto coa solución na seguinte área de texto:",
+ "renocaptcha-help": "Por favor, resolva o enigma ReCaptcha NoCaptcha e devolva os valores de resposta como captchaWord.",
+ "renocaptcha-apihelp-param-g-recaptcha-response": "Campo do formulario ReCaptcha."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/ht.json b/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/ht.json
new file mode 100644
index 00000000..6ecc8918
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/ht.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "Bfpage"
+ ]
+ },
+ "renocaptcha-createaccount-fail": "Li sanble ou pa te rezoud CAPTCHA la.",
+ "renocaptcha-create": "Pou pwoteje wiki sa a nan paj kreyasyon fè pa yon machin oswa pwogram otomatik ki fonksyone, nou dous mande w yo rezoud CAPTCHA sa a:"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/hu.json b/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/hu.json
new file mode 100644
index 00000000..7587188b
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/hu.json
@@ -0,0 +1,16 @@
+{
+ "@metadata": {
+ "authors": [
+ "Tacsipacsi",
+ "Máté"
+ ]
+ },
+ "renocaptcha-edit": "Az automatizált spamek megelőzése miatt kérjük, oldd meg a következő CAPTCHA-t:",
+ "renocaptcha-addurl": "A szerkesztésed új külső hivatkozásokat tartalmaz. Az automatizált spamek megelőzése miatt kérjük, oldd meg a következő CAPTCHA-t:",
+ "renocaptcha-badlogin": "Hogy az automatizált jelszófeltörési kísérleteket megelőzzük, kérjük, oldd meg a következő CAPTCHA-t:",
+ "renocaptcha-createaccount": "A felhasználói fiókok automatizált létrehozásának elkerülésére kérjük, oldd meg a következő CAPTCHA-t:",
+ "renocaptcha-createaccount-fail": "Úgy tűnik, nem oldottad meg a CAPTCHA-t.",
+ "renocaptcha-create": "Az automatizált laplétrehozás megelőzése miatt kérjük, oldd meg a következő CAPTCHA-t:",
+ "renocaptcha-noscript": "Sajnos letiltottad a JavaScriptet, így nem tudjuk automatikusan felismerni, hogy ember vagy-e. Kérjük, oldd meg a fenti CAPTCHA-t, és másold be a megoldást az alábbi szövegmezőbe:",
+ "renocaptcha-help": "Oldd meg a ReCaptcha NoCaptcha-feladatot és küldd vissza a választ captchaWord paraméterként."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/ia.json b/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/ia.json
new file mode 100644
index 00000000..61ec038d
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/ia.json
@@ -0,0 +1,16 @@
+{
+ "@metadata": {
+ "authors": [
+ "McDutchie"
+ ]
+ },
+ "renocaptcha-edit": "Pro proteger le wiki contra le spam automatisate, per favor, resolve le CAPTCHA sequente:",
+ "renocaptcha-addurl": "Iste modification include nove ligamines externe. Pro proteger le wiki contra le spam automatisate, per favor, resolve le CAPTCHA sequente:",
+ "renocaptcha-badlogin": "Pro proteger le wiki contra le furto automatisate de contrasignos, per favor, resolve le CAPTCHA sequente:",
+ "renocaptcha-createaccount": "Pro proteger le wiki contra le creation automatisate de contos, per favor, resolve le CAPTCHA sequente:",
+ "renocaptcha-createaccount-fail": "Pare que tu non ha resolvite le CAPTCHA.",
+ "renocaptcha-create": "Pro proteger le wiki contra le creation automatisate de paginas, per favor, resolve le CAPTCHA sequente:",
+ "renocaptcha-noscript": "Infelicemente tu ha disactivate JavaScript, dunque nos non pote recognoscer automaticamente si tu es un humano o non. Per favor, resolve le CAPTCHA hic supra e copia le texto resultante in le quadro sequente:",
+ "renocaptcha-help": "Per favor, resolve un defia ReCaptcha NoCaptcha e retorna le valor del responsa como captchaWord.",
+ "renocaptcha-apihelp-param-g-recaptcha-response": "Campo del formulario ReCaptcha."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/it.json b/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/it.json
new file mode 100644
index 00000000..260f1109
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/it.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Selven",
+ "Beta16"
+ ]
+ },
+ "renocaptcha-edit": "Per proteggere il wiki contro modifiche automatizzate di spam, ti chiediamo gentilmente di risolvere il seguente CAPTCHA:",
+ "renocaptcha-addurl": "La tua modifica aggiunge nuovi collegamenti esterni. Per proteggere il wiki contro modifiche automatizzate di spam, ti chiediamo gentilmente di risolvere il seguente CAPTCHA:",
+ "renocaptcha-badlogin": "Per proteggere il wiki contro tentativi automatizzati di violazione password, ti chiediamo gentilmente di risolvere il seguente CAPTCHA:",
+ "renocaptcha-createaccount": "Per proteggere il wiki contro la creazione automatizzata di utenze, ti chiediamo gentilmente di risolvere il seguente CAPTCHA:",
+ "renocaptcha-createaccount-fail": "Sembra che non hai risolto il CAPTCHA.",
+ "renocaptcha-create": "Per proteggere il wiki contro la creazione automatizzata di pagine, ti chiediamo gentilmente di risolvere il seguente CAPTCHA:"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/ja.json b/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/ja.json
new file mode 100644
index 00000000..fcecaaed
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/ja.json
@@ -0,0 +1,12 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ayame"
+ ]
+ },
+ "renocaptcha-edit": "Wikiを自動編集スパムから保護するために、下のチェックボックスをクリックしてください。",
+ "renocaptcha-addurl": "あなたは新しい外部リンクを追加しました。Wikiを自動投稿スパムから保護するために、下のチェックボックスをクリックしてください。",
+ "renocaptcha-badlogin": "あなたのアカウントを攻撃から保護するために、下のチェックボックスをクリックしてください。",
+ "renocaptcha-createaccount": "Wikiをアカウント自動作成から保護するために、下のチェックボックスをクリックしてください。",
+ "renocaptcha-create": "Wikiを記事の自動作成から保護するために、下のチェックボックスをクリックしてください。"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/ko.json b/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/ko.json
new file mode 100644
index 00000000..ac1bdc32
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/ko.json
@@ -0,0 +1,16 @@
+{
+ "@metadata": {
+ "authors": [
+ "Hwangjy9",
+ "Yearning",
+ "아라"
+ ]
+ },
+ "renocaptcha-edit": "자동 편집 스팸으로부터 위키를 보호하기 위해, 다음 CAPTCHA를 풀어주세요:",
+ "renocaptcha-addurl": "편집에 새로운 바깥 고리가 포함되어 있습니다. 자동 스팸으로부터 위키를 보호하기 위해, 다음 CAPTCHA를 풀어주세요:",
+ "renocaptcha-badlogin": "자동화된 비밀번호 깨기로부터 위키를 보호하기 위해, 다음 CAPTCHA를 풀어주세요:",
+ "renocaptcha-createaccount": "자동 계정 만들기로부터 위키를 보호하기 위해, 다음 CAPTCHA를 풀어주세요:",
+ "renocaptcha-createaccount-fail": "보안문자가 틀렸습니다.",
+ "renocaptcha-create": "자동 문서 만들기로부터 위키를 보호하기 위해, 다음 CAPTCHA를 풀어주세요:",
+ "renocaptcha-noscript": "당신은 자바스크립트를 비활성화하여 저희는 당신이 사람인지 자동으로 판별하지 못합니다. 다음 글상자에 위 보안문자를 입력하세요:"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/lb.json b/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/lb.json
new file mode 100644
index 00000000..09884e6e
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/lb.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Robby"
+ ]
+ },
+ "renocaptcha-createaccount-fail": "Et schéngt wéi wann Dir de CAPTCHA net geléist hätt."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/lij.json b/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/lij.json
new file mode 100644
index 00000000..41077744
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/lij.json
@@ -0,0 +1,16 @@
+{
+ "@metadata": {
+ "authors": [
+ "Giromin Cangiaxo"
+ ]
+ },
+ "renocaptcha-edit": "Pe proteze a wiki contra e modiffiche aotomatizæ de spam, te domandemmo gentilmente de resciorve o seguente CAPTCHA:",
+ "renocaptcha-addurl": "A to modiffica a l'azonze di noeuvi inganci esterni. Pe proteze a wiki da-o spam aotomatizou, te domandemmo gentilmente de resciorve o seguente CAPTCHA:",
+ "renocaptcha-badlogin": "Pe proteze a wiki da-a sforçatua aotomatizâ de password, te domandemmo gentilmente de resciorve o seguente CAPTCHA:",
+ "renocaptcha-createaccount": "Pe proteze a wiki da-a creaçion aotomatizâ de noeuve utençe, te domandemmo gentilmente de resciorve o seguente CAPTCHA:",
+ "renocaptcha-createaccount-fail": "Pâ che ti no t'aggi resciorto o CAPTCHA.",
+ "renocaptcha-create": "Pe proteze a wiki da-a creaçion aotomatizâ de paggine, te domandemmo gentilmente de resciorve o seguente CAPTCHA:",
+ "renocaptcha-noscript": "Purtroppo t'hæ disattivou o JavaScript e no poemo riconosce aotomaticamente se t'ê uman o no. Pe piaxei resciorvi o CAPTCHA chì de d'ato e coppia o scrito risultante inta casella chì aproeuvo.",
+ "renocaptcha-help": "Pe piaxei resciorvi a sfidda ReCaptcha NoCaptcha e riporta o valô de risposta comme captchaWord.",
+ "renocaptcha-apihelp-param-g-recaptcha-response": "Campo da-o widget ReCaptcha."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/lt.json b/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/lt.json
new file mode 100644
index 00000000..5cb7fe4c
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/lt.json
@@ -0,0 +1,16 @@
+{
+ "@metadata": {
+ "authors": [
+ "Eitvys200"
+ ]
+ },
+ "renocaptcha-edit": "Kad apsaugotume vikį nuo automatinio keitimų šlamšto, prašome išspręsti šį CAPTCHA:",
+ "renocaptcha-addurl": "Jūsų keitime yra naujų išorinių nuorodų. Kad apsaugotume vikį nuo automatinio šlamšto, prašome išspręsti šį CAPTCHA:",
+ "renocaptcha-badlogin": "Kad apsaugotume vikį nuo automatinio slaptažodžių spėjimo, prašome išspręsti šį CAPTCHA:",
+ "renocaptcha-createaccount": "Kad apsaugotume vikį nuo automatinio paskyrų kūrimo, prašome išspręsti šį CAPTCHA:",
+ "renocaptcha-createaccount-fail": "Atrodo, kad jūs neišsprendėte CAPTCHA.",
+ "renocaptcha-create": "Kad apsaugotume vikį nuo automatinio puslapių kūrimo, prašome išspręsti šį CAPTCHA:",
+ "renocaptcha-noscript": "Deja, jūs išjungėte JavaScript, todėl negalime automatiškai atpažinti ar esate žmogus ar ne. Prašome išspręsti CAPTCHA, esantį aukščiau, ir nukopijuoti atsiradusį tekstą į šį teksto lauką:",
+ "renocaptcha-help": "Prašome išspręsti ReCaptcha NoCaptcha iššūkį ir gražinti atsakymo reikšmę kaip captchaWord.",
+ "renocaptcha-apihelp-param-g-recaptcha-response": "Laukas iš ReCaptcha valdiklio."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/mk.json b/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/mk.json
new file mode 100644
index 00000000..ed14aec4
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/mk.json
@@ -0,0 +1,16 @@
+{
+ "@metadata": {
+ "authors": [
+ "Bjankuloski06"
+ ]
+ },
+ "renocaptcha-edit": "Со цел да го заштитиме викито од автоматизирани спам-уредувања, би ве замолиле да го решите прикажаното на сликичката:",
+ "renocaptcha-addurl": "Во уредувањето имате ставено нови надворешни врски. Со цел да го заштитиме викито од автоматизиран спам, би ве замолиле да го решите прикажаното на сликичката:",
+ "renocaptcha-badlogin": "Со цел да го заштитиме викито од автоматизирано пробивање на лозинки, би ве замолиле да го решите прикажаното на сликичката:",
+ "renocaptcha-createaccount": "Со цел да го заштитиме викито од автоматизирано создавање на сметки, би ве замолиле да го решите прикажаното на сликичката:",
+ "renocaptcha-createaccount-fail": "Го немате решено прикажаното на сликичката.",
+ "renocaptcha-create": "Со цел да го заштитиме викито од автоматизирано создавање на страници, би ве замолиле да го решите прикажаното на сликичката:",
+ "renocaptcha-noscript": "За несреќа, ја имате исклучено JavaScript, па затоа не можеме автоматски да одредиме дали сте човек или не. Решете го прикажаното на сликичката погоре и прекопирајте го добиеното во следново поле:",
+ "renocaptcha-help": "Решете го предизвикот ReCaptcha NoCaptcha и вратете а вреднсота на одговорот како captchaWord.",
+ "renocaptcha-apihelp-param-g-recaptcha-response": "Поле од поср. елемент ReCaptcha."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/nb.json b/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/nb.json
new file mode 100644
index 00000000..edc7c4af
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/nb.json
@@ -0,0 +1,16 @@
+{
+ "@metadata": {
+ "authors": [
+ "Jon Harald Søby"
+ ]
+ },
+ "renocaptcha-edit": "For å beskytte wikien mot automatisk redigeringsspam ber vi deg å løse følgende CAPTCHA:",
+ "renocaptcha-addurl": "Redigeringen din inneholder nye eksterne lenker. For å beskytte wikien mot automatisk spam ber vi deg løse følgende CAPTCHA:",
+ "renocaptcha-badlogin": "For å beskytte wikien mot automatisk passordknekking ber vi deg løse følgende CAPTCHA:",
+ "renocaptcha-createaccount": "For å beskytte wikien mot automatisk kontooppretting ber vi deg løse følgende CAPTCHA:",
+ "renocaptcha-createaccount-fail": "Det ser ut til at du ikke løste CAPTCHA-en.",
+ "renocaptcha-create": "For å beskytte wikien mot automatisk sideoppretting ber vi deg løse følgende CAPTCHA:",
+ "renocaptcha-noscript": "Du har dessverre slått av JavaScript, så vi kan ikke automatisk oppdage om du er et menneske eller ikke. Løs CAPTCHA-en ovenfor og kopier den resulterende teksten i følgende tekstboks:",
+ "renocaptcha-help": "Løs en ReCaptcha NoCaptcha-oppgave og returner svarverdien som captchaWord.",
+ "renocaptcha-apihelp-param-g-recaptcha-response": "Felt fra ReCaptcha-widgeten."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/pl.json b/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/pl.json
new file mode 100644
index 00000000..56263a4a
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/pl.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "Chrumps"
+ ]
+ },
+ "renocaptcha-edit": "W celu ochrony przed zautomatyzowanym spamem edycyjnym, proszę wpisać poniższy tekst CAPTCHA:",
+ "renocaptcha-addurl": "Wprowadzony przez Ciebie tekst zawiera nowe linki zewnętrzne. W celu ochrony przed zautomatyzowanym spamem, proszę wpisać poniższy tekst CAPTCHA:",
+ "renocaptcha-badlogin": "W celu ochrony przed zautomatyzowanym łamaniem hasła, proszę wpisać poniższy tekst CAPTCHA:",
+ "renocaptcha-createaccount": "W celu ochrony przed zautomatyzowanym utworzeniem konta, proszę wpisać poniższy tekst CAPTCHA:",
+ "renocaptcha-createaccount-fail": "Wydaje się, że CAPTCHA nie został wpisany prawidłowo.",
+ "renocaptcha-create": "W celu ochrony przed zautomatyzowanym utworzeniem strony, proszę wpisać poniższy tekst CAPTCHA:"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/pt-br.json b/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/pt-br.json
new file mode 100644
index 00000000..eddee511
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/pt-br.json
@@ -0,0 +1,16 @@
+{
+ "@metadata": {
+ "authors": [
+ "Eduardo Addad de Oliveira"
+ ]
+ },
+ "renocaptcha-edit": "Para proteger a wiki contra a edição automatizada de spam, pedimos gentilmente que resolva o seguinte código CAPTCHA:",
+ "renocaptcha-addurl": "A sua edição inclui novas ligações externas. Para proteger a wiki contra o spam automático, pedimos gentilmente que resolva o seguinte código CAPTCHA:",
+ "renocaptcha-badlogin": "Para proteger a wiki da quebra de senha automatizada, pedimos que resolva o seguinte CAPTCHA:",
+ "renocaptcha-createaccount": "Para proteger a wiki contra a criação automatizada de conta, pedimos que resolva o seguinte código CAPTCHA:",
+ "renocaptcha-createaccount-fail": "Parece que não resolveu o código CAPTCHA ainda.",
+ "renocaptcha-create": "Para proteger a wiki contra a criação automatizada de páginas novas, pedimos que resolva o seguinte código CAPTCHA:",
+ "renocaptcha-noscript": "Infelizmente desativou o JavaScript, o que nos impossibilita de reconhecer automaticamente se é um humano ou não. Por favor, resolva o código CAPTCHA abaixo e copie o resultado para o campo de texto seguinte:",
+ "renocaptcha-help": "Resolva um desafio ReCaptcha NoCaptcha e devolva o valor da resposta como captchaWord.",
+ "renocaptcha-apihelp-param-g-recaptcha-response": "Campo do <i>widget</i> ReCaptcha."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/pt.json b/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/pt.json
new file mode 100644
index 00000000..862cae31
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/pt.json
@@ -0,0 +1,18 @@
+{
+ "@metadata": {
+ "authors": [
+ "Vitorvicentevalente",
+ "Fúlvio",
+ "Hamilton Abreu"
+ ]
+ },
+ "renocaptcha-edit": "Para proteger a wiki contra a edição automatizada de spam, pedimos gentilmente que resolva o seguinte código CAPTCHA:",
+ "renocaptcha-addurl": "A sua edição inclui novas ligações externas. Para proteger a wiki contra o spam automático, pedimos gentilmente que resolva o seguinte código CAPTCHA:",
+ "renocaptcha-badlogin": "Para proteger a wiki da quebra de palavras-passe automatizada, pedimos que resolva o seguinte CAPTCHA:",
+ "renocaptcha-createaccount": "Para proteger a wiki contra a criação automatizada de conta, pedimos que resolva o seguinte código CAPTCHA:",
+ "renocaptcha-createaccount-fail": "Parece que não resolveu o código CAPTCHA ainda.",
+ "renocaptcha-create": "Para proteger a wiki contra a criação automatizada de páginas novas, pedimos que resolva o seguinte código CAPTCHA:",
+ "renocaptcha-noscript": "Infelizmente desativou o JavaScript, o que nos impossibilita de reconhecer automaticamente se é um humano ou não. Por favor, resolva o código CAPTCHA abaixo e copie o resultado para o campo de texto seguinte:",
+ "renocaptcha-help": "Resolva um desafio ReCaptcha NoCaptcha e devolva o valor da resposta como captchaWord.",
+ "renocaptcha-apihelp-param-g-recaptcha-response": "Campo do <i>widget</i> ReCaptcha."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/qqq.json b/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/qqq.json
new file mode 100644
index 00000000..cf0c6cc0
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/qqq.json
@@ -0,0 +1,16 @@
+{
+ "@metadata": {
+ "authors": [
+ "Liuxinyu970226"
+ ]
+ },
+ "renocaptcha-edit": "Message above the CAPTCHA for edit action.\n{{related|ConfirmEdit-edit}}",
+ "renocaptcha-addurl": "Message above the CAPTCHA for addurl (user added new external links to the page) action.\n{{related|ConfirmEdit-addurl}}",
+ "renocaptcha-badlogin": "Message above the CAPTCHA for badlogin action.\n{{related|ConfirmEdit-badlogin}}",
+ "renocaptcha-createaccount": "Message above the CAPTCHA for createaccount (user creates a new account) action.\n{{related|ConfirmEdit-createaccount}}",
+ "renocaptcha-createaccount-fail": "Error message, when the CAPTCHA isn't solved correctly.\n{{related|ConfirmEdit-createaccount-fail}}",
+ "renocaptcha-create": "Message above the CAPTCHA for create (user creates a new page) action.\n{{related|ConfirmEdit-create}}",
+ "renocaptcha-noscript": "This messages is warning you have javascript disabled so you have to manualy input the text into the textbox.",
+ "renocaptcha-help": "Explanation of how to solve the CAPTCHA for API clients.",
+ "renocaptcha-apihelp-param-g-recaptcha-response": "{{doc-apihelp-param|description=the \"g-recaptcha-response\" parameter added by [[mw:Extension:ConfirmEdit]]|noseealso=1}}"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/ru.json b/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/ru.json
new file mode 100644
index 00000000..e899d141
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/ru.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Okras",
+ "Facenapalm"
+ ]
+ },
+ "renocaptcha-edit": "В целях защиты вики от автоматического спама в правках просим вас решить следующую каптчу:",
+ "renocaptcha-addurl": "Ваша правка содержит новые внешние ссылки. В целях защиты от автоматического спама просим вас решить следующую каптчу:",
+ "renocaptcha-badlogin": "В целях защиты от автоматического подбора пароля просим вас решить следующую каптчу:",
+ "renocaptcha-createaccount": "В целях защиты от автоматического создания учётных записей просим вас решить следующую каптчу:",
+ "renocaptcha-createaccount-fail": "Похоже, вы не разгадали капчу.",
+ "renocaptcha-apihelp-param-g-recaptcha-response": "Поле от виджета ReCaptcha."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/sv.json b/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/sv.json
new file mode 100644
index 00000000..0aa3b168
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/sv.json
@@ -0,0 +1,18 @@
+{
+ "@metadata": {
+ "authors": [
+ "Jopparn",
+ "Lokal Profil",
+ "WikiPhoenix"
+ ]
+ },
+ "renocaptcha-edit": "För att skydda wikin mot automatiserad redigeringsspam ber vi dig att lösa följande CAPTCHA:",
+ "renocaptcha-addurl": "Din redigering innehåller nya externa länkar. För att skydda wikin mot automatiserat spam ber vi dig att lösa följande CAPTCHA:",
+ "renocaptcha-badlogin": "För att skydda wikin mot automatiserat knäckande av lösenord, ber vi dig att lösa följande CAPTCHA:",
+ "renocaptcha-createaccount": "För att skydda wikin mot automatiserat kontoskapande, ber vi dig att lösa följande CAPTCHA:",
+ "renocaptcha-createaccount-fail": "Det verkar som att du inte har löst CAPTCHA.",
+ "renocaptcha-create": "För att skydda wikin mot automatiserat sidskapande, ber vi dig att lösa följande CAPTCHA:",
+ "renocaptcha-noscript": "Olyckligtvis har du inaktiverat JavaScript, så vi kan inte automatiskt känna igen om du är en människa eller inte. Vänligen lös CAPTCHAN ovan och kopiera den resulterande texten i följande textruta:",
+ "renocaptcha-help": "Lös en ReCaptcha NoCaptcha-utmaning och returnera lösningsvärdet som captchaWord.",
+ "renocaptcha-apihelp-param-g-recaptcha-response": "Fält från ReCaptcha-widgeten."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/uk.json b/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/uk.json
new file mode 100644
index 00000000..d95c8183
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/uk.json
@@ -0,0 +1,17 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ата",
+ "Piramidion"
+ ]
+ },
+ "renocaptcha-edit": "Щоб захистити вікі від автоматичного спаму в редагуваннях, ми уклінно просимо Вас ввести CAPTCHA:",
+ "renocaptcha-addurl": "Ваше редагування містить нові зовнішні посилання. Щоб захистити вікі від автоматичного спаму в редагуваннях, ми уклінно просимо Вас ввести CAPTCHA:",
+ "renocaptcha-badlogin": "Щоб захистити вікі від автоматичного зламування паролів, ми уклінно просимо Вас ввести CAPTCHA:",
+ "renocaptcha-createaccount": "Щоб захистити вікі від автоматичного створення облікових записів, ми уклінно просимо Вас ввести CAPTCHA:",
+ "renocaptcha-createaccount-fail": "Схоже, Вам не вдалося ввести CAPTCHA.",
+ "renocaptcha-create": "Щоб захистити вікі від автоматичного створення сторінок, ми уклінно просимо Вас ввести CAPTCHA:",
+ "renocaptcha-noscript": "На жаль, Ви вимкнули JavaScript, і ми не можемо розпізнати автоматично, людина Ви чи ні. Будь ласка, введіть текст із CAPTCHA, що вгорі, у відповідне текстове поле:",
+ "renocaptcha-help": "Будь ласка, вирішіть завдання ReCaptcha NoCaptcha і введіть значення відповіді як captchaWord.",
+ "renocaptcha-apihelp-param-g-recaptcha-response": "Поле із віджета ReCaptcha."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/zh-hans.json b/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/zh-hans.json
new file mode 100644
index 00000000..557d77cd
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/zh-hans.json
@@ -0,0 +1,16 @@
+{
+ "@metadata": {
+ "authors": [
+ "Liuxinyu970226"
+ ]
+ },
+ "renocaptcha-edit": "为保护wiki免于自动化编辑破坏,我们恳请您输入下面的验证码:",
+ "renocaptcha-addurl": "您的编辑包含新的外部链接。为保护wiki免于自动化破坏,我们恳请您输入下面的验证码:",
+ "renocaptcha-badlogin": "为保护wiki免于自动化密码破解,我们希望您输入下面的验证码:",
+ "renocaptcha-createaccount": "为保护wiki免于自动化账户创建,我们恳请您输入下面的验证码:",
+ "renocaptcha-createaccount-fail": "看起来您未输入正确的验证码。",
+ "renocaptcha-create": "为保护wiki免于自动化页面创建,我们恳请您输入下面的验证码:",
+ "renocaptcha-noscript": "不幸的是,您禁用了JavaScript,因此我们不能自动识别您是否是一个人。请识别上方的验证码,并将结果文本复制至下面的文本区域:",
+ "renocaptcha-help": "请识别ReCaptcha无验证码挑战,并将响应值作为验证码文本返回。",
+ "renocaptcha-apihelp-param-g-recaptcha-response": "来自ReCaptcha小部件的字段。"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/zh-hant.json b/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/zh-hant.json
new file mode 100644
index 00000000..38eb5d82
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/zh-hant.json
@@ -0,0 +1,17 @@
+{
+ "@metadata": {
+ "authors": [
+ "A2093064",
+ "Kly"
+ ]
+ },
+ "renocaptcha-edit": "為保護 wiki 防止自動化垃圾內容編輯程式,我們希望您輸入下面的驗證碼:",
+ "renocaptcha-addurl": "您的編輯使用了新的外部連結。為了防止自動化垃圾內容編輯程式,我們要麻煩您輸入在下面方塊中顯示的單字。",
+ "renocaptcha-badlogin": "為保護wiki免遭自動化的密碼破解,我們希望您輸入下面的驗證碼:",
+ "renocaptcha-createaccount": "為保護 wiki 防止自動化帳號建立程式,我們希望您輸入下面的驗證碼:",
+ "renocaptcha-createaccount-fail": "看來您的驗證碼似乎不正確。",
+ "renocaptcha-create": "為保護 wiki 防止自動化頁面建立程式,我們希望您輸入下面的驗證碼:",
+ "renocaptcha-noscript": "很遺憾地,因為您停用了 JavaScript 功能,因此我們無法自動識別出您是否是非機器人的正常個人用戶。請解決上方的驗證碼,並複製結果的文字內容到以下文字方框裡:",
+ "renocaptcha-help": "請解決 ReCaptcha NoCaptcha 的盤問並回傳作為驗證碼文字的回應值。",
+ "renocaptcha-apihelp-param-g-recaptcha-response": "自 ReCaptcha 小工具的欄位。"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/SimpleCaptcha/Captcha.php b/www/wiki/extensions/ConfirmEdit/SimpleCaptcha/Captcha.php
new file mode 100644
index 00000000..db6c583a
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/SimpleCaptcha/Captcha.php
@@ -0,0 +1,1170 @@
+<?php
+
+use MediaWiki\Auth\AuthenticationRequest;
+
+/**
+ * Demo CAPTCHA (not for production usage) and base class for real CAPTCHAs
+ */
+class SimpleCaptcha {
+ protected static $messagePrefix = 'captcha-';
+
+ /** @var boolean|null Was the CAPTCHA already passed and if yes, with which result? */
+ private $captchaSolved = null;
+
+ /**
+ * Used to select the right message.
+ * One of sendmail, createaccount, badlogin, edit, create, addurl.
+ * @var string
+ */
+ protected $action;
+
+ /** @var string Used in log messages. */
+ protected $trigger;
+
+ /**
+ * @param string $action
+ */
+ public function setAction( $action ) {
+ $this->action = $action;
+ }
+
+ /**
+ * @param string $trigger
+ */
+ public function setTrigger( $trigger ) {
+ $this->trigger = $trigger;
+ }
+
+ /**
+ * Return the error from the last passCaptcha* call.
+ * Not implemented but needed by some child classes.
+ * @return mixed
+ */
+ public function getError() {
+ return null;
+ }
+
+ /**
+ * Returns an array with 'question' and 'answer' keys.
+ * Subclasses might use different structure.
+ * Since MW 1.27 all subclasses must implement this method.
+ * @return array
+ */
+ function getCaptcha() {
+ $a = mt_rand( 0, 100 );
+ $b = mt_rand( 0, 10 );
+
+ /* Minus sign is used in the question. UTF-8,
+ since the api uses text/plain, not text/html */
+ $op = mt_rand( 0, 1 ) ? '+' : '−';
+
+ // No space before and after $op, to ensure correct
+ // directionality.
+ $test = "$a$op$b";
+ $answer = ( $op == '+' ) ? ( $a + $b ) : ( $a - $b );
+ return [ 'question' => $test, 'answer' => $answer ];
+ }
+
+ /**
+ * @param array &$resultArr
+ */
+ function addCaptchaAPI( &$resultArr ) {
+ $captcha = $this->getCaptcha();
+ $index = $this->storeCaptcha( $captcha );
+ $resultArr['captcha'] = $this->describeCaptchaType();
+ $resultArr['captcha']['id'] = $index;
+ $resultArr['captcha']['question'] = $captcha['question'];
+ }
+
+ /**
+ * Describes the captcha type for API clients.
+ * @return array An array with keys 'type' and 'mime', and possibly other
+ * implementation-specific
+ */
+ public function describeCaptchaType() {
+ return [
+ 'type' => 'simple',
+ 'mime' => 'text/plain',
+ ];
+ }
+
+ /**
+ * Insert a captcha prompt into the edit form.
+ * This sample implementation generates a simple arithmetic operation;
+ * it would be easy to defeat by machine.
+ *
+ * Override this!
+ *
+ * It is not guaranteed that the CAPTCHA will load synchronously with the main page
+ * content. So you can not rely on registering handlers before page load. E.g.:
+ *
+ * NOT SAFE: $( window ).on( 'load', handler )
+ * SAFE: $( handler )
+ *
+ * However, if the HTML is loaded dynamically via AJAX, the following order will
+ * be used.
+ *
+ * headitems => modulestyles + modules => add main HTML to DOM when modulestyles +
+ * modules are ready.
+ *
+ * @param int $tabIndex Tab index to start from
+ *
+ * @return array Associative array with the following keys:
+ * string html - Main HTML
+ * array modules (optional) - Array of ResourceLoader module names
+ * array modulestyles (optional) - Array of ResourceLoader module names to be
+ * included as style-only modules.
+ * array headitems (optional) - Head items (see OutputPage::addHeadItems), as a numeric array
+ * of raw HTML strings. Do not use unless no other option is feasible.
+ */
+ public function getFormInformation( $tabIndex = 1 ) {
+ $captcha = $this->getCaptcha();
+ $index = $this->storeCaptcha( $captcha );
+
+ return [
+ 'html' => "<p><label for=\"wpCaptchaWord\">{$captcha['question']} = </label>" .
+ Xml::element( 'input', [
+ 'name' => 'wpCaptchaWord',
+ 'class' => 'mw-ui-input',
+ 'id' => 'wpCaptchaWord',
+ 'size' => 5,
+ 'autocomplete' => 'off',
+ 'tabindex' => $tabIndex ] ) . // tab in before the edit textarea
+ "</p>\n" .
+ Xml::element( 'input', [
+ 'type' => 'hidden',
+ 'name' => 'wpCaptchaId',
+ 'id' => 'wpCaptchaId',
+ 'value' => $index ] )
+ ];
+ }
+
+ /**
+ * Uses getFormInformation() to get the CAPTCHA form and adds it to the given
+ * OutputPage object.
+ *
+ * @param OutputPage $out The OutputPage object to which the form should be added
+ * @param int $tabIndex See self::getFormInformation
+ */
+ public function addFormToOutput( OutputPage $out, $tabIndex = 1 ) {
+ $this->addFormInformationToOutput( $out, $this->getFormInformation( $tabIndex ) );
+ }
+
+ /**
+ * Processes the given $formInformation array and adds the options (see getFormInformation())
+ * to the given OutputPage object.
+ *
+ * @param OutputPage $out The OutputPage object to which the form should be added
+ * @param array $formInformation
+ */
+ public function addFormInformationToOutput( OutputPage $out, array $formInformation ) {
+ if ( !$formInformation ) {
+ return;
+ }
+ if ( isset( $formInformation['html'] ) ) {
+ $out->addHTML( $formInformation['html'] );
+ }
+ if ( isset( $formInformation['modules'] ) ) {
+ $out->addModules( $formInformation['modules'] );
+ }
+ if ( isset( $formInformation['modulestyles'] ) ) {
+ $out->addModuleStyles( $formInformation['modulestyles'] );
+ }
+ if ( isset( $formInformation['headitems'] ) ) {
+ $out->addHeadItems( $formInformation['headitems'] );
+ }
+ }
+
+ /**
+ * @param array $captchaData Data given by getCaptcha
+ * @param string $id ID given by storeCaptcha
+ * @return string Description of the captcha. Format is not specified; could be text, HTML, URL...
+ */
+ public function getCaptchaInfo( $captchaData, $id ) {
+ return $captchaData['question'] . ' =';
+ }
+
+ /**
+ * Show error message for missing or incorrect captcha on EditPage.
+ * @param EditPage &$editPage
+ * @param OutputPage &$out
+ */
+ function showEditFormFields( &$editPage, &$out ) {
+ $page = $editPage->getArticle()->getPage();
+ if ( !isset( $page->ConfirmEdit_ActivateCaptcha ) ) {
+ return;
+ }
+
+ if ( $this->action !== 'edit' ) {
+ unset( $page->ConfirmEdit_ActivateCaptcha );
+ $out->addWikiText( $this->getMessage( $this->action )->text() );
+ $this->addFormToOutput( $out );
+ }
+ }
+
+ /**
+ * Insert the captcha prompt into an edit form.
+ * @param EditPage $editPage
+ */
+ function editShowCaptcha( $editPage ) {
+ $context = $editPage->getArticle()->getContext();
+ $page = $editPage->getArticle()->getPage();
+ $out = $context->getOutput();
+ if ( isset( $page->ConfirmEdit_ActivateCaptcha ) ||
+ $this->shouldCheck( $page, '', '', $context )
+ ) {
+ $out->addWikiText( $this->getMessage( $this->action )->text() );
+ $this->addFormToOutput( $out );
+ }
+ unset( $page->ConfirmEdit_ActivateCaptcha );
+ }
+
+ /**
+ * Show a message asking the user to enter a captcha on edit
+ * The result will be treated as wiki text
+ *
+ * @param string $action Action being performed
+ * @return Message
+ */
+ public function getMessage( $action ) {
+ // one of captcha-edit, captcha-addurl, captcha-badlogin, captcha-createaccount,
+ // captcha-create, captcha-sendemail
+ $name = static::$messagePrefix . $action;
+ $msg = wfMessage( $name );
+ // obtain a more tailored message, if possible, otherwise, fall back to
+ // the default for edits
+ return $msg->isDisabled() ? wfMessage( static::$messagePrefix . 'edit' ) : $msg;
+ }
+
+ /**
+ * Inject whazawhoo
+ * @fixme if multiple thingies insert a header, could break
+ * @param HTMLForm &$form
+ * @return bool true to keep running callbacks
+ */
+ function injectEmailUser( &$form ) {
+ $out = $form->getOutput();
+ $user = $form->getUser();
+ if ( $this->triggersCaptcha( CaptchaTriggers::SENDEMAIL ) ) {
+ $this->action = 'sendemail';
+ if ( $user->isAllowed( 'skipcaptcha' ) ) {
+ wfDebug( "ConfirmEdit: user group allows skipping captcha on email sending\n" );
+ return true;
+ }
+ $formInformation = $this->getFormInformation();
+ $formMetainfo = $formInformation;
+ unset( $formMetainfo['html'] );
+ $this->addFormInformationToOutput( $out, $formMetainfo );
+ $form->addFooterText(
+ "<div class='captcha'>" .
+ $out->parse( $this->getMessage( 'sendemail' )->text() ) .
+ $formInformation['html'] .
+ "</div>\n" );
+ }
+ return true;
+ }
+
+ /**
+ * Increase bad login counter after a failed login.
+ * The user might be required to solve a captcha if the count is high.
+ * @param string $username
+ * TODO use Throttler
+ */
+ public function increaseBadLoginCounter( $username ) {
+ global $wgCaptchaBadLoginExpiration, $wgCaptchaBadLoginPerUserExpiration;
+
+ $cache = ObjectCache::getLocalClusterInstance();
+
+ if ( $this->triggersCaptcha( CaptchaTriggers::BAD_LOGIN ) ) {
+ $key = $this->badLoginKey();
+ $count = ObjectCache::getLocalClusterInstance()->get( $key );
+ if ( !$count ) {
+ $cache->add( $key, 0, $wgCaptchaBadLoginExpiration );
+ }
+
+ $cache->incr( $key );
+ }
+
+ if ( $this->triggersCaptcha( CaptchaTriggers::BAD_LOGIN_PER_USER ) && $username ) {
+ $key = $this->badLoginPerUserKey( $username );
+ $count = $cache->get( $key );
+ if ( !$count ) {
+ $cache->add( $key, 0, $wgCaptchaBadLoginPerUserExpiration );
+ }
+
+ $cache->incr( $key );
+ }
+ }
+
+ /**
+ * Reset bad login counter after a successful login.
+ * @param string $username
+ */
+ public function resetBadLoginCounter( $username ) {
+ if ( $this->triggersCaptcha( CaptchaTriggers::BAD_LOGIN_PER_USER ) && $username ) {
+ $cache = ObjectCache::getLocalClusterInstance();
+ $cache->delete( $this->badLoginPerUserKey( $username ) );
+ }
+ }
+
+ /**
+ * Check if a bad login has already been registered for this
+ * IP address. If so, require a captcha.
+ * @return bool
+ * @access private
+ */
+ public function isBadLoginTriggered() {
+ global $wgCaptchaBadLoginAttempts;
+
+ $cache = ObjectCache::getLocalClusterInstance();
+ return $this->triggersCaptcha( CaptchaTriggers::BAD_LOGIN )
+ && (int)$cache->get( $this->badLoginKey() ) >= $wgCaptchaBadLoginAttempts;
+ }
+
+ /**
+ * Is the per-user captcha triggered?
+ *
+ * @param User|string $u User object, or name
+ * @return bool|null False: no, null: no, but it will be triggered next time
+ */
+ public function isBadLoginPerUserTriggered( $u ) {
+ global $wgCaptchaBadLoginPerUserAttempts;
+
+ $cache = ObjectCache::getLocalClusterInstance();
+
+ if ( is_object( $u ) ) {
+ $u = $u->getName();
+ }
+ return $this->triggersCaptcha( CaptchaTriggers::BAD_LOGIN_PER_USER )
+ && (int)$cache->get( $this->badLoginPerUserKey( $u ) ) >= $wgCaptchaBadLoginPerUserAttempts;
+ }
+
+ /**
+ * Check if the current IP is allowed to skip captchas. This checks
+ * the whitelist from two sources.
+ * 1) From the server-side config array $wgCaptchaWhitelistIP
+ * 2) From the local [[MediaWiki:Captcha-ip-whitelist]] message
+ *
+ * @return bool true if whitelisted, false if not
+ */
+ function isIPWhitelisted() {
+ global $wgCaptchaWhitelistIP, $wgRequest;
+ $ip = $wgRequest->getIP();
+
+ if ( $wgCaptchaWhitelistIP ) {
+ if ( IP::isInRanges( $ip, $wgCaptchaWhitelistIP ) ) {
+ return true;
+ }
+ }
+
+ $whitelistMsg = wfMessage( 'captcha-ip-whitelist' )->inContentLanguage();
+ if ( !$whitelistMsg->isDisabled() ) {
+ $whitelistedIPs = $this->getWikiIPWhitelist( $whitelistMsg );
+ if ( IP::isInRanges( $ip, $whitelistedIPs ) ) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * Get the on-wiki IP whitelist stored in [[MediaWiki:Captcha-ip-whitelist]]
+ * page from cache if possible.
+ *
+ * @param Message $msg whitelist Message on wiki
+ * @return array whitelisted IP addresses or IP ranges, empty array if no whitelist
+ */
+ private function getWikiIPWhitelist( Message $msg ) {
+ $cache = ObjectCache::getMainWANInstance();
+ $cacheKey = $cache->makeKey( 'confirmedit', 'ipwhitelist' );
+
+ $cachedWhitelist = $cache->get( $cacheKey );
+ if ( $cachedWhitelist === false ) {
+ // Could not retrieve from cache so build the whitelist directly
+ // from the wikipage
+ $whitelist = $this->buildValidIPs(
+ explode( "\n", $msg->plain() )
+ );
+ // And then store it in cache for one day. This cache is cleared on
+ // modifications to the whitelist page.
+ // @see ConfirmEditHooks::onPageContentSaveComplete()
+ $cache->set( $cacheKey, $whitelist, 86400 );
+ } else {
+ // Whitelist from the cache
+ $whitelist = $cachedWhitelist;
+ }
+
+ return $whitelist;
+ }
+
+ /**
+ * From a list of unvalidated input, get all the valid
+ * IP addresses and IP ranges from it.
+ *
+ * Note that only lines with just the IP address or IP range is considered
+ * as valid. Whitespace is allowed but if there is any other character on
+ * the line, it's not considered as a valid entry.
+ *
+ * @param string[] $input
+ * @return string[] of valid IP addresses and IP ranges
+ */
+ private function buildValidIPs( array $input ) {
+ // Remove whitespace and blank lines first
+ $ips = array_map( 'trim', $input );
+ $ips = array_filter( $ips );
+
+ $validIPs = [];
+ foreach ( $ips as $ip ) {
+ if ( IP::isIPAddress( $ip ) ) {
+ $validIPs[] = $ip;
+ }
+ }
+
+ return $validIPs;
+ }
+
+ /**
+ * Internal cache key for badlogin checks.
+ * @return string
+ */
+ private function badLoginKey() {
+ global $wgRequest;
+ $ip = $wgRequest->getIP();
+ return wfGlobalCacheKey( 'captcha', 'badlogin', 'ip', $ip );
+ }
+
+ /**
+ * Cache key for badloginPerUser checks.
+ * @param string $username
+ * @return string
+ */
+ private function badLoginPerUserKey( $username ) {
+ $username = User::getCanonicalName( $username, 'usable' ) ?: $username;
+ return wfGlobalCacheKey( 'captcha', 'badlogin', 'user', md5( $username ) );
+ }
+
+ /**
+ * Check if the submitted form matches the captcha session data provided
+ * by the plugin when the form was generated.
+ *
+ * Override this!
+ *
+ * @param string $answer
+ * @param array $info
+ * @return bool
+ */
+ function keyMatch( $answer, $info ) {
+ return $answer == $info['answer'];
+ }
+
+ // ----------------------------------
+
+ /**
+ * @param Title $title
+ * @param string $action (edit/create/addurl...)
+ * @return bool true if action triggers captcha on $title's namespace
+ * @deprecated since 1.5.1 Use triggersCaptcha instead
+ */
+ public function captchaTriggers( $title, $action ) {
+ return $this->triggersCaptcha( $action, $title );
+ }
+
+ /**
+ * Checks, whether the passed action should trigger a CAPTCHA. The optional $title parameter
+ * will be used to check namespace specific CAPTCHA triggers.
+ *
+ * @param string $action The CAPTCHA trigger to check (see CaptchaTriggers for ConfirmEdit
+ * built-in triggers)
+ * @param Title|null $title An optional Title object, if the namespace specific triggers
+ * should be checked, too.
+ * @return bool True, if the action should trigger a CAPTCHA, false otherwise
+ */
+ public function triggersCaptcha( $action, $title = null ) {
+ global $wgCaptchaTriggers, $wgCaptchaTriggersOnNamespace;
+
+ $result = false;
+ $triggers = $wgCaptchaTriggers;
+ $attributeCaptchaTriggers = ExtensionRegistry::getInstance()
+ ->getAttribute( CaptchaTriggers::EXT_REG_ATTRIBUTE_NAME );
+ if ( is_array( $attributeCaptchaTriggers ) ) {
+ $triggers += $attributeCaptchaTriggers;
+ }
+
+ if ( isset( $triggers[$action] ) ) {
+ $result = $triggers[$action];
+ }
+
+ if (
+ $title !== null &&
+ isset( $wgCaptchaTriggersOnNamespace[$title->getNamespace()][$action] )
+ ) {
+ $result = $wgCaptchaTriggersOnNamespace[$title->getNamespace()][$action];
+ }
+
+ return $result;
+ }
+
+ /**
+ * @param WikiPage $page
+ * @param Content|string $content
+ * @param string $section
+ * @param IContextSource $context
+ * @param string $oldtext The content of the revision prior to $content When
+ * null this will be loaded from the database.
+ * @return bool true if the captcha should run
+ */
+ function shouldCheck( WikiPage $page, $content, $section, $context, $oldtext = null ) {
+ global $wgAllowConfirmedEmail;
+
+ if ( !$context instanceof IContextSource ) {
+ $context = RequestContext::getMain();
+ }
+
+ $request = $context->getRequest();
+ $user = $context->getUser();
+
+ // captcha check exceptions, which will return always false
+ if ( $user->isAllowed( 'skipcaptcha' ) ) {
+ wfDebug( "ConfirmEdit: user group allows skipping captcha\n" );
+ return false;
+ } elseif ( $this->isIPWhitelisted() ) {
+ wfDebug( "ConfirmEdit: user IP is whitelisted" );
+ return false;
+ } elseif ( $wgAllowConfirmedEmail && $user->isEmailConfirmed() ) {
+ wfDebug( "ConfirmEdit: user has confirmed mail, skipping captcha\n" );
+ return false;
+ }
+
+ $title = $page->getTitle();
+ $this->trigger = '';
+
+ if ( $content instanceof Content ) {
+ if ( $content->getModel() == CONTENT_MODEL_WIKITEXT ) {
+ $newtext = $content->getNativeData();
+ } else {
+ $newtext = null;
+ }
+ $isEmpty = $content->isEmpty();
+ } else {
+ $newtext = $content;
+ $isEmpty = $content === '';
+ }
+
+ if ( $this->triggersCaptcha( 'edit', $title ) ) {
+ // Check on all edits
+ $this->trigger = sprintf( "edit trigger by '%s' at [[%s]]",
+ $user->getName(),
+ $title->getPrefixedText() );
+ $this->action = 'edit';
+ wfDebug( "ConfirmEdit: checking all edits...\n" );
+ return true;
+ }
+
+ if ( $this->triggersCaptcha( 'create', $title ) && !$title->exists() ) {
+ // Check if creating a page
+ $this->trigger = sprintf( "Create trigger by '%s' at [[%s]]",
+ $user->getName(),
+ $title->getPrefixedText() );
+ $this->action = 'create';
+ wfDebug( "ConfirmEdit: checking on page creation...\n" );
+ return true;
+ }
+
+ // The following checks are expensive and should be done only,
+ // if we can assume, that the edit will be saved
+ if ( !$request->wasPosted() ) {
+ wfDebug(
+ "ConfirmEdit: request not posted, assuming that no content will be saved -> no CAPTCHA check"
+ );
+ return false;
+ }
+
+ if ( !$isEmpty && $this->triggersCaptcha( 'addurl', $title ) ) {
+ // Only check edits that add URLs
+ if ( $content instanceof Content ) {
+ // Get links from the database
+ $oldLinks = $this->getLinksFromTracker( $title );
+ // Share a parse operation with Article::doEdit()
+ $editInfo = $page->prepareContentForEdit( $content );
+ if ( $editInfo->output ) {
+ $newLinks = array_keys( $editInfo->output->getExternalLinks() );
+ } else {
+ $newLinks = [];
+ }
+ } else {
+ // Get link changes in the slowest way known to man
+ $oldtext = isset( $oldtext ) ? $oldtext : $this->loadText( $title, $section );
+ $oldLinks = $this->findLinks( $title, $oldtext );
+ $newLinks = $this->findLinks( $title, $newtext );
+ }
+
+ $unknownLinks = array_filter( $newLinks, [ $this, 'filterLink' ] );
+ $addedLinks = array_diff( $unknownLinks, $oldLinks );
+ $numLinks = count( $addedLinks );
+
+ if ( $numLinks > 0 ) {
+ $this->trigger = sprintf( "%dx url trigger by '%s' at [[%s]]: %s",
+ $numLinks,
+ $user->getName(),
+ $title->getPrefixedText(),
+ implode( ", ", $addedLinks ) );
+ $this->action = 'addurl';
+ return true;
+ }
+ }
+
+ global $wgCaptchaRegexes;
+ if ( $newtext !== null && $wgCaptchaRegexes ) {
+ if ( !is_array( $wgCaptchaRegexes ) ) {
+ throw new UnexpectedValueException(
+ '$wgCaptchaRegexes is required to be an array, ' . gettype( $wgCaptchaRegexes ) . ' given.'
+ );
+ }
+ // Custom regex checks. Reuse $oldtext if set above.
+ $oldtext = isset( $oldtext ) ? $oldtext : $this->loadText( $title, $section );
+
+ foreach ( $wgCaptchaRegexes as $regex ) {
+ $newMatches = [];
+ if ( preg_match_all( $regex, $newtext, $newMatches ) ) {
+ $oldMatches = [];
+ preg_match_all( $regex, $oldtext, $oldMatches );
+
+ $addedMatches = array_diff( $newMatches[0], $oldMatches[0] );
+
+ $numHits = count( $addedMatches );
+ if ( $numHits > 0 ) {
+ $this->trigger = sprintf( "%dx %s at [[%s]]: %s",
+ $numHits,
+ $regex,
+ $user->getName(),
+ $title->getPrefixedText(),
+ implode( ", ", $addedMatches ) );
+ $this->action = 'edit';
+ return true;
+ }
+ }
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * Filter callback function for URL whitelisting
+ * @param string $url string to check
+ * @return bool true if unknown, false if whitelisted
+ * @access private
+ */
+ function filterLink( $url ) {
+ global $wgCaptchaWhitelist;
+ static $regexes = null;
+
+ if ( $regexes === null ) {
+ $source = wfMessage( 'captcha-addurl-whitelist' )->inContentLanguage();
+
+ $regexes = $source->isDisabled()
+ ? []
+ : $this->buildRegexes( explode( "\n", $source->plain() ) );
+
+ if ( $wgCaptchaWhitelist !== false ) {
+ array_unshift( $regexes, $wgCaptchaWhitelist );
+ }
+ }
+
+ foreach ( $regexes as $regex ) {
+ if ( preg_match( $regex, $url ) ) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ /**
+ * Build regex from whitelist
+ * @param string $lines string from [[MediaWiki:Captcha-addurl-whitelist]]
+ * @return array Regexes
+ * @access private
+ */
+ function buildRegexes( $lines ) {
+ # Code duplicated from the SpamBlacklist extension (r19197)
+ # and later modified.
+
+ # Strip comments and whitespace, then remove blanks
+ $lines = array_filter( array_map( 'trim', preg_replace( '/#.*$/', '', $lines ) ) );
+
+ # No lines, don't make a regex which will match everything
+ if ( count( $lines ) == 0 ) {
+ wfDebug( "No lines\n" );
+ return [];
+ } else {
+ # Make regex
+ # It's faster using the S modifier even though it will usually only be run once
+ // $regex = 'http://+[a-z0-9_\-.]*(' . implode( '|', $lines ) . ')';
+ // return '/' . str_replace( '/', '\/', preg_replace('|\\\*/|', '/', $regex) ) . '/Si';
+ $regexes = [];
+ $regexStart = [
+ 'normal' => '/^(?:https?:)?\/\/+[a-z0-9_\-.]*(?:',
+ 'noprotocol' => '/^(?:',
+ ];
+ $regexEnd = [
+ 'normal' => ')/Si',
+ 'noprotocol' => ')/Si',
+ ];
+ $regexMax = 4096;
+ $build = [];
+ foreach ( $lines as $line ) {
+ # Extract flags from the line
+ $options = [];
+ if ( preg_match( '/^(.*?)\s*<([^<>]*)>$/', $line, $matches ) ) {
+ if ( $matches[1] === '' ) {
+ wfDebug( "Line with empty regex\n" );
+ continue;
+ }
+ $line = $matches[1];
+ $opts = preg_split( '/\s*\|\s*/', trim( $matches[2] ) );
+ foreach ( $opts as $opt ) {
+ $opt = strtolower( $opt );
+ if ( $opt == 'noprotocol' ) {
+ $options['noprotocol'] = true;
+ }
+ }
+ }
+
+ $key = isset( $options['noprotocol'] ) ? 'noprotocol' : 'normal';
+
+ // FIXME: not very robust size check, but should work. :)
+ if ( !isset( $build[$key] ) ) {
+ $build[$key] = $line;
+ } elseif ( strlen( $build[$key] ) + strlen( $line ) > $regexMax ) {
+ $regexes[] = $regexStart[$key] .
+ str_replace( '/', '\/', preg_replace( '|\\\*/|', '/', $build[$key] ) ) .
+ $regexEnd[$key];
+ $build[$key] = $line;
+ } else {
+ $build[$key] .= '|' . $line;
+ }
+ }
+ foreach ( $build as $key => $value ) {
+ $regexes[] = $regexStart[$key] .
+ str_replace( '/', '\/', preg_replace( '|\\\*/|', '/', $build[$key] ) ) .
+ $regexEnd[$key];
+ }
+ return $regexes;
+ }
+ }
+
+ /**
+ * Load external links from the externallinks table
+ * @param Title $title
+ * @return array
+ */
+ function getLinksFromTracker( $title ) {
+ $dbr = wfGetDB( DB_REPLICA );
+ $id = $title->getArticleID(); // should be zero queries
+ $res = $dbr->select( 'externallinks', [ 'el_to' ],
+ [ 'el_from' => $id ], __METHOD__ );
+ $links = [];
+ foreach ( $res as $row ) {
+ $links[] = $row->el_to;
+ }
+ return $links;
+ }
+
+ /**
+ * Backend function for confirmEditMerged()
+ * @param WikiPage $page
+ * @param string $newtext
+ * @param string $section
+ * @param IContextSource $context
+ * @return bool false if the CAPTCHA is rejected, true otherwise
+ */
+ private function doConfirmEdit( WikiPage $page, $newtext, $section, IContextSource $context ) {
+ global $wgUser, $wgRequest;
+ $request = $context->getRequest();
+
+ // FIXME: Stop using wgRequest in other parts of ConfirmEdit so we can
+ // stop having to duplicate code for it.
+ if ( $request->getVal( 'captchaid' ) ) {
+ $request->setVal( 'wpCaptchaId', $request->getVal( 'captchaid' ) );
+ $wgRequest->setVal( 'wpCaptchaId', $request->getVal( 'captchaid' ) );
+ }
+ if ( $request->getVal( 'captchaword' ) ) {
+ $request->setVal( 'wpCaptchaWord', $request->getVal( 'captchaword' ) );
+ $wgRequest->setVal( 'wpCaptchaWord', $request->getVal( 'captchaword' ) );
+ }
+ if ( $this->shouldCheck( $page, $newtext, $section, $context ) ) {
+ return $this->passCaptchaLimitedFromRequest( $wgRequest, $wgUser );
+ } else {
+ wfDebug( "ConfirmEdit: no need to show captcha.\n" );
+ return true;
+ }
+ }
+
+ /**
+ * An efficient edit filter callback based on the text after section merging
+ * @param RequestContext $context
+ * @param Content $content
+ * @param Status $status
+ * @param string $summary
+ * @param User $user
+ * @param bool $minorEdit
+ * @return bool
+ */
+ function confirmEditMerged( $context, $content, $status, $summary, $user, $minorEdit ) {
+ if ( !$context->canUseWikiPage() ) {
+ // we check WikiPage only
+ // try to get an appropriate title for this page
+ $title = $context->getTitle();
+ if ( $title instanceof Title ) {
+ $title = $title->getFullText();
+ } else {
+ // otherwise it's an unknown page where this function is called from
+ $title = 'unknown';
+ }
+ // log this error, it could be a problem in another extension,
+ // edits should always have a WikiPage if
+ // they go through EditFilterMergedContent.
+ wfDebug( __METHOD__ . ': Skipped ConfirmEdit check: No WikiPage for title ' . $title );
+ return true;
+ }
+ $page = $context->getWikiPage();
+ if ( !$this->doConfirmEdit( $page, $content, false, $context ) ) {
+ $status->value = EditPage::AS_HOOK_ERROR_EXPECTED;
+ $status->apiHookResult = [];
+ // give an error message for the user to know, what goes wrong here.
+ // this can't be done for addurl trigger, because this requires one "free" save
+ // for the user, which we don't know, when he did it.
+ if ( $this->action === 'edit' ) {
+ $status->fatal(
+ new RawMessage(
+ Html::element(
+ 'div',
+ [ 'class' => 'errorbox' ],
+ $context->msg( 'captcha-edit-fail' )->text()
+ )
+ )
+ );
+ }
+ $this->addCaptchaAPI( $status->apiHookResult );
+ $page->ConfirmEdit_ActivateCaptcha = true;
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * Logic to check if we need to pass a captcha for the current user
+ * to create a new account, or not
+ *
+ * @param User $creatingUser
+ * @return bool true to show captcha, false to skip captcha
+ */
+ public function needCreateAccountCaptcha( User $creatingUser = null ) {
+ global $wgUser;
+ $creatingUser = $creatingUser ?: $wgUser;
+
+ if ( $this->triggersCaptcha( CaptchaTriggers::CREATE_ACCOUNT ) ) {
+ if ( $creatingUser->isAllowed( 'skipcaptcha' ) ) {
+ wfDebug( "ConfirmEdit: user group allows skipping captcha on account creation\n" );
+ return false;
+ }
+ if ( $this->isIPWhitelisted() ) {
+ return false;
+ }
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * Check the captcha on Special:EmailUser
+ * @param MailAddress $from
+ * @param MailAddress $to
+ * @param string $subject
+ * @param string $text
+ * @param string &$error
+ * @return bool true to continue saving, false to abort and show a captcha form
+ */
+ function confirmEmailUser( $from, $to, $subject, $text, &$error ) {
+ global $wgUser, $wgRequest;
+
+ if ( $this->triggersCaptcha( CaptchaTriggers::SENDEMAIL ) ) {
+ if ( $wgUser->isAllowed( 'skipcaptcha' ) ) {
+ wfDebug( "ConfirmEdit: user group allows skipping captcha on email sending\n" );
+ return true;
+ }
+ if ( $this->isIPWhitelisted() ) {
+ return true;
+ }
+
+ if ( defined( 'MW_API' ) ) {
+ # API mode
+ # Asking for captchas in the API is really silly
+ $error = Status::newFatal( 'captcha-disabledinapi' );
+ return false;
+ }
+ $this->trigger = "{$wgUser->getName()} sending email";
+ if ( !$this->passCaptchaLimitedFromRequest( $wgRequest, $wgUser ) ) {
+ $error = Status::newFatal( 'captcha-sendemail-fail' );
+ return false;
+ }
+ }
+ return true;
+ }
+
+ /**
+ * @param ApiBase $module
+ * @return bool
+ */
+ protected function isAPICaptchaModule( $module ) {
+ return $module instanceof ApiEditPage;
+ }
+
+ /**
+ * @param ApiBase &$module
+ * @param array &$params
+ * @param int $flags
+ * @return bool
+ */
+ public function APIGetAllowedParams( &$module, &$params, $flags ) {
+ if ( $this->isAPICaptchaModule( $module ) ) {
+ $params['captchaword'] = [
+ ApiBase::PARAM_HELP_MSG => 'captcha-apihelp-param-captchaword',
+ ];
+ $params['captchaid'] = [
+ ApiBase::PARAM_HELP_MSG => 'captcha-apihelp-param-captchaid',
+ ];
+ }
+
+ return true;
+ }
+
+ /**
+ * Checks, if the user reached the amount of false CAPTCHAs and give him some vacation
+ * or run self::passCaptcha() and clear counter if correct.
+ *
+ * @param WebRequest $request
+ * @param User $user
+ * @return bool
+ */
+ public function passCaptchaLimitedFromRequest( WebRequest $request, User $user ) {
+ list( $index, $word ) = $this->getCaptchaParamsFromRequest( $request );
+ return $this->passCaptchaLimited( $index, $word, $user );
+ }
+
+ /**
+ * @param WebRequest $request
+ * @return array [ captcha ID, captcha solution ]
+ */
+ protected function getCaptchaParamsFromRequest( WebRequest $request ) {
+ $index = $request->getVal( 'wpCaptchaId' );
+ $word = $request->getVal( 'wpCaptchaWord' );
+ return [ $index, $word ];
+ }
+
+ /**
+ * Checks, if the user reached the amount of false CAPTCHAs and give him some vacation
+ * or run self::passCaptcha() and clear counter if correct.
+ *
+ * @param string $index Captcha idenitifier
+ * @param string $word Captcha solution
+ * @param User $user User for throttling captcha solving attempts
+ * @return bool
+ * @see self::passCaptcha()
+ */
+ public function passCaptchaLimited( $index, $word, User $user ) {
+ // don't increase pingLimiter here, just check, if CAPTCHA limit exceeded
+ if ( $user->pingLimiter( 'badcaptcha', 0 ) ) {
+ // for debugging add an proper error message, the user just see an false captcha error message
+ $this->log( 'User reached RateLimit, preventing action' );
+ return false;
+ }
+
+ if ( $this->passCaptcha( $index, $word ) ) {
+ return true;
+ }
+
+ // captcha was not solved: increase limit and return false
+ $user->pingLimiter( 'badcaptcha' );
+ return false;
+ }
+
+ /**
+ * Given a required captcha run, test form input for correct
+ * input on the open session.
+ * @param WebRequest $request
+ * @param User $user
+ * @return bool if passed, false if failed or new session
+ */
+ public function passCaptchaFromRequest( WebRequest $request, User $user ) {
+ list( $index, $word ) = $this->getCaptchaParamsFromRequest( $request );
+ return $this->passCaptcha( $index, $word );
+ }
+
+ /**
+ * Given a required captcha run, test form input for correct
+ * input on the open session.
+ * @param string $index Captcha idenitifier
+ * @param string $word Captcha solution
+ * @return bool if passed, false if failed or new session
+ */
+ protected function passCaptcha( $index, $word ) {
+ // Don't check the same CAPTCHA twice in one session,
+ // if the CAPTCHA was already checked - Bug T94276
+ if ( isset( $this->captchaSolved ) ) {
+ return $this->captchaSolved;
+ }
+
+ $info = $this->retrieveCaptcha( $index );
+ if ( $info ) {
+ if ( $this->keyMatch( $word, $info ) ) {
+ $this->log( "passed" );
+ $this->clearCaptcha( $index );
+ $this->captchaSolved = true;
+ return true;
+ } else {
+ $this->clearCaptcha( $index );
+ $this->log( "bad form input" );
+ $this->captchaSolved = false;
+ return false;
+ }
+ } else {
+ $this->log( "new captcha session" );
+ return false;
+ }
+ }
+
+ /**
+ * Log the status and any triggering info for debugging or statistics
+ * @param string $message
+ */
+ function log( $message ) {
+ wfDebugLog( 'captcha', 'ConfirmEdit: ' . $message . '; ' . $this->trigger );
+ }
+
+ /**
+ * Generate a captcha session ID and save the info in PHP's session storage.
+ * (Requires the user to have cookies enabled to get through the captcha.)
+ *
+ * A random ID is used so legit users can make edits in multiple tabs or
+ * windows without being unnecessarily hobbled by a serial order requirement.
+ * Pass the returned id value into the edit form as wpCaptchaId.
+ *
+ * @param array $info data to store
+ * @return string captcha ID key
+ */
+ public function storeCaptcha( $info ) {
+ if ( !isset( $info['index'] ) ) {
+ // Assign random index if we're not udpating
+ $info['index'] = strval( mt_rand() );
+ }
+ CaptchaStore::get()->store( $info['index'], $info );
+ return $info['index'];
+ }
+
+ /**
+ * Fetch this session's captcha info.
+ * @param string $index
+ * @return array|false array of info, or false if missing
+ */
+ public function retrieveCaptcha( $index ) {
+ return CaptchaStore::get()->retrieve( $index );
+ }
+
+ /**
+ * Clear out existing captcha info from the session, to ensure
+ * it can't be reused.
+ * @param string $index
+ */
+ public function clearCaptcha( $index ) {
+ CaptchaStore::get()->clear( $index );
+ }
+
+ /**
+ * Retrieve the current version of the page or section being edited...
+ * @param Title $title
+ * @param string $section
+ * @param int $flags Flags for Revision loading methods
+ * @return string
+ * @access private
+ */
+ function loadText( $title, $section, $flags = Revision::READ_LATEST ) {
+ global $wgParser;
+
+ $rev = Revision::newFromTitle( $title, false, $flags );
+ if ( is_null( $rev ) ) {
+ return "";
+ }
+
+ $content = $rev->getContent();
+ $text = ContentHandler::getContentText( $content );
+ if ( $section !== '' ) {
+ return $wgParser->getSection( $text, $section );
+ }
+
+ return $text;
+ }
+
+ /**
+ * Extract a list of all recognized HTTP links in the text.
+ * @param Title $title
+ * @param string $text
+ * @return array of strings
+ */
+ function findLinks( $title, $text ) {
+ global $wgParser, $wgUser;
+
+ $options = new ParserOptions();
+ $text = $wgParser->preSaveTransform( $text, $title, $wgUser, $options );
+ $out = $wgParser->parse( $text, $title, $options );
+
+ return array_keys( $out->getExternalLinks() );
+ }
+
+ /**
+ * Show a page explaining what this wacky thing is.
+ */
+ function showHelp() {
+ global $wgOut;
+ $wgOut->setPageTitle( wfMessage( 'captchahelp-title' )->text() );
+ $wgOut->addWikiMsg( 'captchahelp-text' );
+ if ( CaptchaStore::get()->cookiesNeeded() ) {
+ $wgOut->addWikiMsg( 'captchahelp-cookies-needed' );
+ }
+ }
+
+ /**
+ * @return CaptchaAuthenticationRequest
+ */
+ public function createAuthenticationRequest() {
+ $captchaData = $this->getCaptcha();
+ $id = $this->storeCaptcha( $captchaData );
+ return new CaptchaAuthenticationRequest( $id, $captchaData );
+ }
+
+ /**
+ * Modify the apprearance of the captcha field
+ * @param AuthenticationRequest[] $requests
+ * @param array $fieldInfo Field description as given by AuthenticationRequest::mergeFieldInfo
+ * @param array &$formDescriptor A form descriptor suitable for the HTMLForm constructor
+ * @param string $action One of the AuthManager::ACTION_* constants
+ */
+ public function onAuthChangeFormFields(
+ array $requests, array $fieldInfo, array &$formDescriptor, $action
+ ) {
+ $req = AuthenticationRequest::getRequestByClass( $requests,
+ CaptchaAuthenticationRequest::class );
+ if ( !$req ) {
+ return;
+ }
+
+ $formDescriptor['captchaWord'] = [
+ 'label-message' => null,
+ 'autocomplete' => false,
+ 'persistent' => false,
+ 'required' => true,
+ ] + $formDescriptor['captchaWord'];
+ }
+}
diff --git a/www/wiki/extensions/ConfirmEdit/blacklist b/www/wiki/extensions/ConfirmEdit/blacklist
new file mode 100644
index 00000000..cab5451e
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/blacklist
@@ -0,0 +1,95 @@
+allah
+altar
+anus
+ass
+bitch
+blow
+bitch
+boob
+breast
+bum
+burn
+butt
+christ
+clit
+cock
+crazy
+cross
+cum
+cunt
+daemon
+demon
+devil
+dick
+dirty
+dog
+dope
+douche
+dumb
+fag
+fat
+fool
+fuck
+gook
+groin
+hag
+hang
+hole
+holy
+horny
+idiot
+islam
+jerk
+jesus
+judea
+kill
+labia
+lie
+lust
+mad
+naked
+nasty
+nazi
+negro
+nerd
+nigger
+nude
+nuke
+nut
+pain
+penis
+pig
+piss
+poo
+porn
+punch
+pussy
+rape
+retard
+satan
+scam
+scum
+sex
+shit
+silly
+slap
+slave
+slime
+slut
+smut
+stab
+strip
+stupid
+suck
+tit
+tits
+trash
+troll
+turd
+twat
+vagina
+vamp
+vulva
+wench
+whore
+witch
diff --git a/www/wiki/extensions/ConfirmEdit/captcha-old.py b/www/wiki/extensions/ConfirmEdit/captcha-old.py
new file mode 100644
index 00000000..9d0b618c
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/captcha-old.py
@@ -0,0 +1,282 @@
+#!/usr/bin/python
+#
+# Script to generate distorted text images for a captcha system.
+#
+# Copyright (C) 2005 Neil Harris
+#
+# 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
+#
+# Further tweaks by Brion Vibber <brion@pobox.com>:
+# 2006-01-26: Add command-line options for the various parameters
+# 2007-02-19: Add --dirs param for hash subdirectory splits
+# Tweaks by Greg Sabino Mullane <greg@turnstep.com>:
+# 2008-01-06: Add regex check to skip words containing other than a-z
+
+import random
+import math
+import hashlib
+from optparse import OptionParser
+import os
+import sys
+import re
+import multiprocessing
+import time
+
+try:
+ from PIL import Image
+ from PIL import ImageFont
+ from PIL import ImageDraw
+ from PIL import ImageEnhance
+ from PIL import ImageOps
+except:
+ sys.exit("This script requires the Python Imaging Library - http://www.pythonware.com/products/pil/")
+
+nonalpha = re.compile('[^a-z]') # regex to test for suitability of words
+
+# Does X-axis wobbly copy, sandwiched between two rotates
+def wobbly_copy(src, wob, col, scale, ang):
+ x, y = src.size
+ f = random.uniform(4*scale, 5*scale)
+ p = random.uniform(0, math.pi*2)
+ rr = ang+random.uniform(-30, 30) # vary, but not too much
+ int_d = Image.new('RGB', src.size, 0) # a black rectangle
+ rot = src.rotate(rr, Image.BILINEAR)
+ # Do a cheap bounding-box op here to try to limit work below
+ bbx = rot.getbbox()
+ if bbx == None:
+ return src
+ else:
+ l, t, r, b= bbx
+ # and only do lines with content on
+ for i in range(t, b+1):
+ # Drop a scan line in
+ xoff = int(math.sin(p+(i*f/y))*wob)
+ xoff += int(random.uniform(-wob*0.5, wob*0.5))
+ int_d.paste(rot.crop((0, i, x, i+1)), (xoff, i))
+ # try to stop blurring from building up
+ int_d = int_d.rotate(-rr, Image.BILINEAR)
+ enh = ImageEnhance.Sharpness(int_d)
+ return enh.enhance(2)
+
+
+def gen_captcha(text, fontname, fontsize, file_name):
+ """Generate a captcha image"""
+ # white text on a black background
+ bgcolor = 0x0
+ fgcolor = 0xffffff
+ # create a font object
+ font = ImageFont.truetype(fontname,fontsize)
+ # determine dimensions of the text
+ dim = font.getsize(text)
+ # create a new image significantly larger that the text
+ edge = max(dim[0], dim[1]) + 2*min(dim[0], dim[1])
+ im = Image.new('RGB', (edge, edge), bgcolor)
+ d = ImageDraw.Draw(im)
+ x, y = im.size
+ # add the text to the image
+ d.text((x/2-dim[0]/2, y/2-dim[1]/2), text, font=font, fill=fgcolor)
+ k = 3
+ wob = 0.20*dim[1]/k
+ rot = 45
+ # Apply lots of small stirring operations, rather than a few large ones
+ # in order to get some uniformity of treatment, whilst
+ # maintaining randomness
+ for i in range(k):
+ im = wobbly_copy(im, wob, bgcolor, i*2+3, rot+0)
+ im = wobbly_copy(im, wob, bgcolor, i*2+1, rot+45)
+ im = wobbly_copy(im, wob, bgcolor, i*2+2, rot+90)
+ rot += 30
+
+ # now get the bounding box of the nonzero parts of the image
+ bbox = im.getbbox()
+ bord = min(dim[0], dim[1])/4 # a bit of a border
+ im = im.crop((bbox[0]-bord, bbox[1]-bord, bbox[2]+bord, bbox[3]+bord))
+ # and turn into black on white
+ im = ImageOps.invert(im)
+
+ # save the image, in format determined from filename
+ im.save(file_name)
+
+def gen_subdir(basedir, md5hash, levels):
+ """Generate a subdirectory path out of the first _levels_
+ characters of _hash_, and ensure the directories exist
+ under _basedir_."""
+ subdir = None
+ for i in range(0, levels):
+ char = md5hash[i]
+ if subdir:
+ subdir = os.path.join(subdir, char)
+ else:
+ subdir = char
+ fulldir = os.path.join(basedir, subdir)
+ if not os.path.exists(fulldir):
+ os.mkdir(fulldir)
+ return subdir
+
+def try_pick_word(words, blacklist, verbose, nwords, min_length, max_length):
+ if words is not None:
+ word = words[random.randint(0,len(words)-1)]
+ while nwords > 1:
+ word2 = words[random.randint(0,len(words)-1)]
+ word = word + word2
+ nwords = nwords - 1
+ else:
+ word = ''
+ max_length = max_length if max_length > 0 else 10
+ for i in range(0, random.randint(min_length, max_length)):
+ word = word + chr(97 + random.randint(0,25))
+
+ if verbose:
+ print("word is %s" % word)
+
+ if len(word) < min_length:
+ if verbose:
+ print("skipping word pair '%s' because it has fewer than %d characters" % (word, min_length))
+ return None
+
+ if max_length > 0 and len(word) > max_length:
+ if verbose:
+ print("skipping word pair '%s' because it has more than %d characters" % (word, max_length))
+ return None
+
+ if nonalpha.search(word):
+ if verbose:
+ print("skipping word pair '%s' because it contains non-alphabetic characters" % word)
+ return None
+
+ for naughty in blacklist:
+ if naughty in word:
+ if verbose:
+ print("skipping word pair '%s' because it contains blacklisted word '%s'" % (word, naughty))
+ return None
+ return word
+
+def pick_word(words, blacklist, verbose, nwords, min_length, max_length):
+ for x in range(1000): # If we can't find a valid combination in 1000 tries, just give up
+ word = try_pick_word(words, blacklist, verbose, nwords, min_length, max_length)
+ if word:
+ return word
+ sys.exit("Unable to find valid word combinations")
+
+def read_wordlist(filename):
+ f = open(filename)
+ words = [x.strip().lower() for x in f.readlines()]
+ f.close()
+ return words
+
+def run_in_thread(object):
+ count = object[0];
+ words = object[1]
+ blacklist = object[2]
+ opts = object[3]
+ font = object[4]
+ fontsize = object[5]
+
+ for i in range(count):
+ word = pick_word(words, blacklist, verbose, opts.number_words, opts.min_length, opts.max_length)
+ salt = "%08x" % random.randrange(2**32)
+ # 64 bits of hash is plenty for this purpose
+ md5hash = hashlib.md5((key+salt+word+key+salt).encode('utf-8')).hexdigest()[:16]
+ filename = "image_%s_%s.png" % (salt, md5hash)
+ if dirs:
+ subdir = gen_subdir(output, md5hash, dirs)
+ filename = os.path.join(subdir, filename)
+ if verbose:
+ print(filename)
+ gen_captcha(word, font, fontsize, os.path.join(output, filename))
+
+if __name__ == '__main__':
+ """This grabs random words from the dictionary 'words' (one
+ word per line) and generates a captcha image for each one,
+ with a keyed salted hash of the correct answer in the filename.
+
+ To check a reply, hash it in the same way with the same salt and
+ secret key, then compare with the hash value given.
+ """
+ script_dir = os.path.dirname(os.path.realpath(__file__))
+ parser = OptionParser()
+ parser.add_option("--wordlist", help="A list of words (required)", metavar="WORDS.txt")
+ parser.add_option("--random", help="Use random charcters instead of a wordlist", action="store_true")
+ parser.add_option("--key", help="The passphrase set as $wgCaptchaSecret (required)", metavar="KEY")
+ parser.add_option("--output", help="The directory to put the images in - $wgCaptchaDirectory (required)", metavar="DIR")
+ parser.add_option("--font", help="The font to use (required)", metavar="FONT.ttf")
+ parser.add_option("--font-size", help="The font size (default 40)", metavar="N", type='int', default=40)
+ parser.add_option("--count", help="The maximum number of images to make (default 20)", metavar="N", type='int', default=20)
+ parser.add_option("--blacklist", help="A blacklist of words that should not be used", metavar="FILE", default=os.path.join(script_dir, "blacklist"))
+ parser.add_option("--fill", help="Fill the output directory to contain N files, overrides count, cannot be used with --dirs", metavar="N", type='int')
+ parser.add_option("--dirs", help="Put the images into subdirectories N levels deep - $wgCaptchaDirectoryLevels", metavar="N", type='int')
+ parser.add_option("--verbose", "-v", help="Show debugging information", action='store_true')
+ parser.add_option("--number-words", help="Number of words from the wordlist which make a captcha challenge (default 2)", type='int', default=2)
+ parser.add_option("--min-length", help="Minimum length for a captcha challenge", type='int', default=1)
+ parser.add_option("--max-length", help="Maximum length for a captcha challenge", type='int', default=-1)
+ parser.add_option("--threads", help="Maximum number of threads to be used to generate captchas.", type='int', default=1)
+
+ opts, args = parser.parse_args()
+
+ if opts.wordlist:
+ wordlist = opts.wordlist
+ elif opts.random:
+ wordlist = None
+ else:
+ sys.exit("Need to specify a wordlist")
+ if opts.key:
+ key = opts.key
+ else:
+ sys.exit("Need to specify a key")
+ if opts.output:
+ output = opts.output
+ else:
+ sys.exit("Need to specify an output directory")
+ if opts.font and os.path.exists(opts.font):
+ font = opts.font
+ else:
+ sys.exit("Need to specify the location of a font")
+
+ blacklist = read_wordlist(opts.blacklist)
+ count = opts.count
+ fill = opts.fill
+ dirs = opts.dirs
+ verbose = opts.verbose
+ fontsize = opts.font_size
+ threads = opts.threads
+
+ if fill:
+ count = max(0, fill - len(os.listdir(output)))
+
+ words = None
+ if wordlist:
+ words = read_wordlist(wordlist)
+ words = [x for x in words
+ if len(x) in (4,5) and x[0] != "f"
+ and x[0] != x[1] and x[-1] != x[-2]]
+
+ if count == 0:
+ sys.exit("No need to generate CAPTCHA images.")
+
+ if count < threads:
+ chunks = 1
+ threads = 1
+ else:
+ chunks = int(count / threads)
+
+ p = multiprocessing.Pool(threads);
+ data = []
+ print("Generating %s CAPTCHA images separated in %s image(s) per chunk run by %s threads..." % (count, chunks, threads))
+ for i in range(0, threads):
+ data.append([chunks, words, blacklist, opts, font, fontsize])
+
+ p.map(run_in_thread, data)
+
diff --git a/www/wiki/extensions/ConfirmEdit/captcha.py b/www/wiki/extensions/ConfirmEdit/captcha.py
new file mode 100644
index 00000000..3a246aec
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/captcha.py
@@ -0,0 +1,298 @@
+#!/usr/bin/python
+#
+# Script to generate distorted text images for a captcha system.
+#
+# Copyright (C) 2005 Neil Harris
+#
+# 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
+#
+# Further tweaks by Brion Vibber <brion@pobox.com>:
+# 2006-01-26: Add command-line options for the various parameters
+# 2007-02-19: Add --dirs param for hash subdirectory splits
+# Tweaks by Greg Sabino Mullane <greg@turnstep.com>:
+# 2008-01-06: Add regex check to skip words containing other than a-z
+
+import random
+import math
+import hashlib
+from optparse import OptionParser
+import os
+import sys
+import re
+import multiprocessing
+import time
+
+try:
+ from PIL import Image
+ from PIL import ImageFont
+ from PIL import ImageDraw
+ from PIL import ImageEnhance
+ from PIL import ImageOps
+ from PIL import ImageMath
+except:
+ sys.exit("This script requires the Python Imaging Library - http://www.pythonware.com/products/pil/")
+
+nonalpha = re.compile('[^a-z]') # regex to test for suitability of words
+
+# Does X-axis wobbly copy, sandwiched between two rotates
+def wobbly_copy(src, wob, col, scale, ang):
+ x, y = src.size
+ f = random.uniform(4*scale, 5*scale)
+ p = random.uniform(0, math.pi*2)
+ rr = ang+random.uniform(-10, 10) # vary, but not too much
+ int_d = Image.new('RGB', src.size, 0) # a black rectangle
+ rot = src.rotate(rr, Image.BILINEAR)
+ # Do a cheap bounding-box op here to try to limit work below
+ bbx = rot.getbbox()
+ if bbx == None:
+ return src
+ else:
+ l, t, r, b= bbx
+ # and only do lines with content on
+ for i in range(t, b+1):
+ # Drop a scan line in
+ xoff = int(math.sin(p+(i*f/y))*wob)
+ xoff += int(random.uniform(-wob*0.5, wob*0.5))
+ int_d.paste(rot.crop((0, i, x, i+1)), (xoff, i))
+ # try to stop blurring from building up
+ int_d = int_d.rotate(-rr, Image.BILINEAR)
+ enh = ImageEnhance.Sharpness(int_d)
+ return enh.enhance(2)
+
+
+def gen_captcha(text, fontname, fontsize, file_name):
+ """Generate a captcha image"""
+ # white text on a black background
+ bgcolor = 0x0
+ fgcolor = 0xffffff
+ # create a font object
+ font = ImageFont.truetype(fontname,fontsize)
+ # determine dimensions of the text
+ dim = font.getsize(text)
+ # create a new image significantly larger that the text
+ edge = max(dim[0], dim[1]) + 2*min(dim[0], dim[1])
+ im = Image.new('RGB', (edge, edge), bgcolor)
+ d = ImageDraw.Draw(im)
+ x, y = im.size
+ # add the text to the image
+ d.text((x/2-dim[0]/2, y/2-dim[1]/2), text, font=font, fill=fgcolor)
+ k = 2
+ wob = 0.09*dim[1]
+ rot = 45
+ # Apply lots of small stirring operations, rather than a few large ones
+ # in order to get some uniformity of treatment, whilst
+ # maintaining randomness
+ for i in range(k):
+ im = wobbly_copy(im, wob, bgcolor, i*2+3, rot+0)
+ im = wobbly_copy(im, wob, bgcolor, i*2+1, rot+45)
+ im = wobbly_copy(im, wob, bgcolor, i*2+2, rot+90)
+ rot += 30
+
+ # now get the bounding box of the nonzero parts of the image
+ bbox = im.getbbox()
+ bord = min(dim[0], dim[1])/4 # a bit of a border
+ im = im.crop((bbox[0]-bord, bbox[1]-bord, bbox[2]+bord, bbox[3]+bord))
+
+ # Create noise
+ nblock = 4
+ nsize = (im.size[0] / nblock, im.size[1] / nblock)
+ noise = Image.new('L', nsize, bgcolor)
+ data = noise.load()
+ for x in range(nsize[0]):
+ for y in range(nsize[1]):
+ r = random.randint(0, 65)
+ gradient = 70 * x / nsize[0]
+ data[x, y] = r + gradient
+ # Turn speckles into blobs
+ noise = noise.resize(im.size, Image.BILINEAR)
+ # Add to the image
+ im = ImageMath.eval('convert(convert(a, "L") / 3 + b, "RGB")', a=im, b=noise)
+
+ # and turn into black on white
+ im = ImageOps.invert(im)
+
+ # save the image, in format determined from filename
+ im.save(file_name)
+
+def gen_subdir(basedir, md5hash, levels):
+ """Generate a subdirectory path out of the first _levels_
+ characters of _hash_, and ensure the directories exist
+ under _basedir_."""
+ subdir = None
+ for i in range(0, levels):
+ char = md5hash[i]
+ if subdir:
+ subdir = os.path.join(subdir, char)
+ else:
+ subdir = char
+ fulldir = os.path.join(basedir, subdir)
+ if not os.path.exists(fulldir):
+ os.mkdir(fulldir)
+ return subdir
+
+def try_pick_word(words, blacklist, verbose, nwords, min_length, max_length):
+ if words is not None:
+ word = words[random.randint(0,len(words)-1)]
+ while nwords > 1:
+ word2 = words[random.randint(0,len(words)-1)]
+ word = word + word2
+ nwords = nwords - 1
+ else:
+ word = ''
+ max_length = max_length if max_length > 0 else 10
+ for i in range(0, random.randint(min_length, max_length)):
+ word = word + chr(97 + random.randint(0,25))
+
+ if verbose:
+ print("word is %s" % word)
+
+ if len(word) < min_length:
+ if verbose:
+ print("skipping word pair '%s' because it has fewer than %d characters" % (word, min_length))
+ return None
+
+ if max_length > 0 and len(word) > max_length:
+ if verbose:
+ print("skipping word pair '%s' because it has more than %d characters" % (word, max_length))
+ return None
+
+ if nonalpha.search(word):
+ if verbose:
+ print("skipping word pair '%s' because it contains non-alphabetic characters" % word)
+ return None
+
+ for naughty in blacklist:
+ if naughty in word:
+ if verbose:
+ print("skipping word pair '%s' because it contains blacklisted word '%s'" % (word, naughty))
+ return None
+ return word
+
+def pick_word(words, blacklist, verbose, nwords, min_length, max_length):
+ for x in range(1000): # If we can't find a valid combination in 1000 tries, just give up
+ word = try_pick_word(words, blacklist, verbose, nwords, min_length, max_length)
+ if word:
+ return word
+ sys.exit("Unable to find valid word combinations")
+
+def read_wordlist(filename):
+ f = open(filename)
+ words = [x.strip().lower() for x in f.readlines()]
+ f.close()
+ return words
+
+def run_in_thread(object):
+ count = object[0];
+ words = object[1]
+ blacklist = object[2]
+ opts = object[3]
+ font = object[4]
+ fontsize = object[5]
+
+ for i in range(count):
+ word = pick_word(words, blacklist, verbose, opts.number_words, opts.min_length, opts.max_length)
+ salt = "%08x" % random.randrange(2**32)
+ # 64 bits of hash is plenty for this purpose
+ md5hash = hashlib.md5((key+salt+word+key+salt).encode('utf-8')).hexdigest()[:16]
+ filename = "image_%s_%s.png" % (salt, md5hash)
+ if dirs:
+ subdir = gen_subdir(output, md5hash, dirs)
+ filename = os.path.join(subdir, filename)
+ if verbose:
+ print(filename)
+ gen_captcha(word, font, fontsize, os.path.join(output, filename))
+
+if __name__ == '__main__':
+ """This grabs random words from the dictionary 'words' (one
+ word per line) and generates a captcha image for each one,
+ with a keyed salted hash of the correct answer in the filename.
+
+ To check a reply, hash it in the same way with the same salt and
+ secret key, then compare with the hash value given.
+ """
+ script_dir = os.path.dirname(os.path.realpath(__file__))
+ parser = OptionParser()
+ parser.add_option("--wordlist", help="A list of words (required)", metavar="WORDS.txt")
+ parser.add_option("--random", help="Use random charcters instead of a wordlist", action="store_true")
+ parser.add_option("--key", help="The passphrase set as $wgCaptchaSecret (required)", metavar="KEY")
+ parser.add_option("--output", help="The directory to put the images in - $wgCaptchaDirectory (required)", metavar="DIR")
+ parser.add_option("--font", help="The font to use (required)", metavar="FONT.ttf")
+ parser.add_option("--font-size", help="The font size (default 40)", metavar="N", type='int', default=40)
+ parser.add_option("--count", help="The maximum number of images to make (default 20)", metavar="N", type='int', default=20)
+ parser.add_option("--blacklist", help="A blacklist of words that should not be used", metavar="FILE", default=os.path.join(script_dir, "blacklist"))
+ parser.add_option("--fill", help="Fill the output directory to contain N files, overrides count, cannot be used with --dirs", metavar="N", type='int')
+ parser.add_option("--dirs", help="Put the images into subdirectories N levels deep - $wgCaptchaDirectoryLevels", metavar="N", type='int')
+ parser.add_option("--verbose", "-v", help="Show debugging information", action='store_true')
+ parser.add_option("--number-words", help="Number of words from the wordlist which make a captcha challenge (default 2)", type='int', default=2)
+ parser.add_option("--min-length", help="Minimum length for a captcha challenge", type='int', default=1)
+ parser.add_option("--max-length", help="Maximum length for a captcha challenge", type='int', default=-1)
+ parser.add_option("--threads", help="Maximum number of threads to be used to generate captchas.", type='int', default=1)
+
+ opts, args = parser.parse_args()
+
+ if opts.wordlist:
+ wordlist = opts.wordlist
+ elif opts.random:
+ wordlist = None
+ else:
+ sys.exit("Need to specify a wordlist")
+ if opts.key:
+ key = opts.key
+ else:
+ sys.exit("Need to specify a key")
+ if opts.output:
+ output = opts.output
+ else:
+ sys.exit("Need to specify an output directory")
+ if opts.font and os.path.exists(opts.font):
+ font = opts.font
+ else:
+ sys.exit("Need to specify the location of a font")
+
+ blacklist = read_wordlist(opts.blacklist)
+ count = opts.count
+ fill = opts.fill
+ dirs = opts.dirs
+ verbose = opts.verbose
+ fontsize = opts.font_size
+ threads = opts.threads
+
+ if fill:
+ count = max(0, fill - len(os.listdir(output)))
+
+ words = None
+ if wordlist:
+ words = read_wordlist(wordlist)
+ words = [x for x in words
+ if len(x) in (4,5) and x[0] != "f"
+ and x[0] != x[1] and x[-1] != x[-2]]
+
+ if count == 0:
+ sys.exit("No need to generate CAPTCHA images.")
+
+ if count < threads:
+ chunks = 1
+ threads = 1
+ else:
+ chunks = (count / threads)
+
+ p = multiprocessing.Pool(threads);
+ data = []
+ print("Generating %s CAPTCHA images separated in %s image(s) per chunk run by %s threads..." % (count, chunks, threads))
+ for i in range(0, threads):
+ data.append([chunks, words, blacklist, opts, font, fontsize])
+
+ p.map(run_in_thread, data)
diff --git a/www/wiki/extensions/ConfirmEdit/composer.json b/www/wiki/extensions/ConfirmEdit/composer.json
new file mode 100644
index 00000000..c7805653
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/composer.json
@@ -0,0 +1,22 @@
+{
+ "require-dev": {
+ "jakub-onderka/php-parallel-lint": "1.0.0",
+ "mediawiki/mediawiki-codesniffer": "18.0.0",
+ "jakub-onderka/php-console-highlighter": "0.3.2",
+ "mediawiki/minus-x": "0.3.1"
+ },
+ "scripts": {
+ "test": [
+ "parallel-lint . --exclude vendor --exclude node_modules",
+ "phpcs -p -s",
+ "minus-x check ."
+ ],
+ "fix": [
+ "phpcbf",
+ "minus-x fix ."
+ ]
+ },
+ "extra": {
+ "phan-taint-check-plugin": "1.2.0"
+ }
+}
diff --git a/www/wiki/extensions/ConfirmEdit/extension.json b/www/wiki/extensions/ConfirmEdit/extension.json
new file mode 100644
index 00000000..3a18b5c5
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/extension.json
@@ -0,0 +1,120 @@
+{
+ "@doc": "Please read README.md",
+ "name": "ConfirmEdit",
+ "version": "1.5.1",
+ "author": [
+ "Brion Vibber",
+ "Florian Schmidt",
+ "Sam Reed",
+ "..."
+ ],
+ "url": "https://www.mediawiki.org/wiki/Extension:ConfirmEdit",
+ "descriptionmsg": "captcha-desc",
+ "license-name": "GPL-2.0-or-later",
+ "type": "antispam",
+ "requires": {
+ "MediaWiki": ">= 1.28"
+ },
+ "GroupPermissions": {
+ "*": {
+ "skipcaptcha": false
+ },
+ "user": {
+ "skipcaptcha": false
+ },
+ "autoconfirmed": {
+ "skipcaptcha": false
+ },
+ "bot": {
+ "skipcaptcha": true
+ },
+ "sysop": {
+ "skipcaptcha": true
+ }
+ },
+ "AvailableRights": [
+ "skipcaptcha"
+ ],
+ "ExtensionFunctions": [
+ "ConfirmEditHooks::confirmEditSetup"
+ ],
+ "SpecialPages": {
+ "Captcha": "CaptchaSpecialPage"
+ },
+ "MessagesDirs": {
+ "ConfirmEdit": [
+ "i18n"
+ ]
+ },
+ "ExtensionMessagesFiles": {
+ "ConfirmEditAlias": "ConfirmEdit.alias.php"
+ },
+ "AutoloadClasses": {
+ "ConfirmEditHooks": "includes/ConfirmEditHooks.php",
+ "SimpleCaptcha": "SimpleCaptcha/Captcha.php",
+ "CaptchaStore": "includes/store/CaptchaStore.php",
+ "CaptchaSessionStore": "includes/store/CaptchaSessionStore.php",
+ "CaptchaCacheStore": "includes/store/CaptchaCacheStore.php",
+ "CaptchaHashStore": "includes/store/CaptchaHashStore.php",
+ "CaptchaTriggers": "includes/CaptchaTriggers.php",
+ "CaptchaSpecialPage": "includes/specials/SpecialCaptcha.php",
+ "CaptchaPreAuthenticationProvider": "includes/auth/CaptchaPreAuthenticationProvider.php",
+ "CaptchaAuthenticationRequest": "includes/auth/CaptchaAuthenticationRequest.php"
+ },
+ "ResourceModules": {
+ "ext.confirmEdit.editPreview.ipwhitelist.styles": {
+ "styles": "ext.confirmEdit.editPreview.ipwhitelist.styles.css"
+ }
+ },
+ "ResourceFileModulePaths": {
+ "localBasePath": "resources",
+ "remoteExtPath": "ConfirmEdit/resources"
+ },
+ "Hooks": {
+ "EditPageBeforeEditButtons": "ConfirmEditHooks::confirmEditPage",
+ "EmailUserForm": "ConfirmEditHooks::injectEmailUser",
+ "EmailUser": "ConfirmEditHooks::confirmEmailUser",
+ "PageContentSaveComplete": "ConfirmEditHooks::onPageContentSaveComplete",
+ "EditPage::showEditForm:fields": "ConfirmEditHooks::showEditFormFields",
+ "EditFilterMergedContent": "ConfirmEditHooks::confirmEditMerged",
+ "APIGetAllowedParams": "ConfirmEditHooks::APIGetAllowedParams",
+ "TitleReadWhitelist": "ConfirmEditHooks::onTitleReadWhitelist",
+ "AlternateEditPreview": "ConfirmEditHooks::onAlternateEditPreview",
+ "AuthChangeFormFields": "ConfirmEditHooks::onAuthChangeFormFields"
+ },
+ "AuthManagerAutoConfig": {
+ "preauth": {
+ "CaptchaPreAuthenticationProvider":{
+ "class": "CaptchaPreAuthenticationProvider",
+ "sort": 10
+ }
+ }
+ },
+ "config": {
+ "CaptchaWhitelistIP": false,
+ "Captcha": null,
+ "CaptchaTriggers": {
+ "edit": false,
+ "create": false,
+ "sendemail": false,
+ "addurl": true,
+ "createaccount": true,
+ "badlogin": true,
+ "badloginperuser": true,
+ "_merge_strategy": "array_plus"
+ },
+ "CaptchaTriggersOnNamespace": {
+ "_merge_strategy": "array_plus_2d"
+ },
+ "CaptchaStorageClass": "CaptchaSessionStore",
+ "CaptchaSessionExpiration": 1800,
+ "CaptchaBadLoginExpiration": 300,
+ "CaptchaBadLoginPerUserExpiration": 600,
+ "AllowConfirmedEmail": false,
+ "CaptchaBadLoginAttempts": 3,
+ "CaptchaBadLoginPerUserAttempts": 20,
+ "CaptchaWhitelist": false,
+ "CaptchaRegexes": []
+ },
+ "manifest_version": 1
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/aa.json b/www/wiki/extensions/ConfirmEdit/i18n/aa.json
new file mode 100644
index 00000000..6f5e7ccd
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/aa.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Fanjiayi"
+ ]
+ },
+ "captcha-label": "CAPTCHA"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/ace.json b/www/wiki/extensions/ConfirmEdit/i18n/ace.json
new file mode 100644
index 00000000..07375451
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/ace.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Si Gam Acèh"
+ ]
+ },
+ "captcha-label": "CAPTCHA"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/ady-cyrl.json b/www/wiki/extensions/ConfirmEdit/i18n/ady-cyrl.json
new file mode 100644
index 00000000..67350961
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/ady-cyrl.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "GR44 Luc"
+ ]
+ },
+ "captcha-label": "CAPTCHA"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/aeb-latn.json b/www/wiki/extensions/ConfirmEdit/i18n/aeb-latn.json
new file mode 100644
index 00000000..b63587c6
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/aeb-latn.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Csisc"
+ ]
+ },
+ "captcha-label": "CAPTCHA"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/af.json b/www/wiki/extensions/ConfirmEdit/i18n/af.json
new file mode 100644
index 00000000..3c2ad4cc
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/af.json
@@ -0,0 +1,23 @@
+{
+ "@metadata": {
+ "authors": [
+ "BrokenArrow",
+ "Naudefj",
+ "පසිඳු කාවින්ද"
+ ]
+ },
+ "captcha-edit": "U wysiging bevat nuwe webskakels. Neem kennis dat blote reklame van u werf, produk of besigheid as vandalisme beskou kan word. As beskerming teen outomatiese gemorsbydraes, sal u die woorde wat onder verskyn in die prentjie moet intik: <br />([[Special:Captcha/help|Wat is hierdie?]])",
+ "captcha-desc": "Implementeer CAPTCHA-tegnieke om beskerming teen spam en die raai van wagwoorde te bied",
+ "captcha-label": "CAPTCHA",
+ "captcha-addurl": "U wysiging bevat nuwe webskakels.\nAs beskerming teen outomatiese gemorsbydraes, sal u die woorde wat onder verskyn in die prentjie moet intik ([[Special:Captcha/help|Wat is hierdie?]]):",
+ "captcha-badlogin": "Los asseblief die onderstaande eenvoudige som op en voer die antwoord in die blokkie in ter beskerming teen die outomatiese kraak van wagwoorde ([[Special:Captcha/help|meer inligting]]):",
+ "captcha-createaccount": "As 'n beskerming teen geoutomatiseerde gemors, tik asseblief die woorde wat in die beeld verskyn in om 'n rekening te skep: <br />([[Special:Captcha/help|Wat is hierdie?]])",
+ "captcha-createaccount-fail": "Verkeerde of geen bevestigingkode.",
+ "captcha-create": "U wysiging bevat nuwe webskakels. Neem kennis dat blote reklame van u werf, produk of besigheid as vandalisme beskou kan word. As beskerming teen outomatiese gemorsbydraes, sal u die woorde wat onder verskyn in die prentjie moet intik: <br />([[Special:Captcha/help|Wat is hierdie?]])",
+ "captcha-sendemail-fail": "Verkeerde of ontbrekende bevestigingskode.",
+ "captcha-disabledinapi": "Hierdie aksie vereis dat 'n captcha, so dit kan nie uitgevoer word deur die API nie.",
+ "captchahelp-title": "Captcha-hulp",
+ "captchahelp-cookies-needed": "U moet koekies in u webblaaier aanskakel hê om dit te laat werk.",
+ "captchahelp-text": "Webwerwe wat bydraes van die publiek aanvaar (soos hierdie wiki) word soms lastig geval deur kwaaddoeners met programme wat outomaties skakels in 'n klomp werwe plaas. Alhoewel hierdie gemors verwyder kan word, is dit lastig.\n\nIn party gevalle, veral as u skakels by 'n blad voeg, sal die wiki dalk 'n beeld met verwronge teks vertoon en vra dat u die woorde daarin intik. Omdat hierdie taak moeilik geoutomatiseer word, laat dit meeste regte mense toe om bydraes te maak terwyl dit meeste kwaaddoeners stop.\n\nHierdie kan ongelukkig lastig wees vir mense met beperkte sig, of diegene wat teks- of spraakgebaseerde blaaiers gebruik. Tans is daar nog nie 'n klankalternatief beskikbaar nie. Kontak asseblief die [[Special:ListAdmins|werfadministrateurs]] vir hulp as hierdie u onverwags belemmer om legitieme bydraes te maak.\n\nGebruik die \"terug\"-knoppie van u blaaier om na die vorige blad terug te keer.",
+ "right-skipcaptcha": "Captcha-handelinge uitvoer sonder om die captcha te hoef oplos"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/ais.json b/www/wiki/extensions/ConfirmEdit/i18n/ais.json
new file mode 100644
index 00000000..4e45209a
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/ais.json
@@ -0,0 +1,28 @@
+{
+ "@metadata": {
+ "authors": [
+ "Benel",
+ "Bunukwiki",
+ "Matma Rex"
+ ]
+ },
+ "captcha-edit-fail": "CAPTCHA mungangaw saca mahedaw.",
+ "captcha-desc": "nipabeli CAPTCHA sitaneng sapikawa babakahen a sulit atu mizatneg tu mima",
+ "captcha-label": "CAPTCHA",
+ "captcha-help": "patukil nu yincenma",
+ "captcha-info-help": "CAPTCHA ID sapuelac",
+ "captcha-id-label": "CAPTCHA ID",
+ "captcha-id-help": "yasulyang manakanca panukas akapasumad.",
+ "captcha-createaccount-fail": "CAPTCHA mungangaw saca mahedaw.",
+ "captcha-sendemail-fail": "CAPTCHA mungangaw saca mahedaw.",
+ "captcha-disabledinapi": "tina saungay maydih pisaungay CAPTCHA sawantan, sisa la’cus micaliw API misaungay.",
+ "captcha-error": "nay labuay a mungangaw, CAPTCHA ID malucek mungangaw: $1",
+ "captchahelp-title": "CAPTCHA buhci tu kamu",
+ "captchahelp-cookies-needed": "maydih kisu miwawah saazihay-sakaluk a Cookies kya kapah pisaungay tina sasahicaan.",
+ "captchahelp-text": "layapen pabinawlan pazepit palatuh a calay-kakacawan(wangcan), maleca tina Wiki, sawsawni apatahtah nu tatuni’ palatuh payakayakay a tademaw pisaungay lunukan sakaluk, i yadah calay-kakacawan(wangcan) pazepit tatuni’ masasiket.\nhaca kapah misipu uyniyay tatuni’ masasiket, uyzasa tina tatenga’ izaw ku libut.\n\nsisa,hatizaay a lawad, uzuma i kasabelih cunus calay-kakacawan(wangcan) masasiket, Wiki apaazih izaw kulikulitan kisu saca malingangu’ sulit a zunga, maydih kisu misulit kya paazihay a sulit.\nu nanu tina saungay utiih malunukay, taneng ngay tatenga’ay a misaungayay pazepit palatuh atu miliyas sayadahay a tatuni’ palatuh payakayakay atu malunukay sakaluk a debungan.\n\nkasaetiman, tina hakay utiih sakay caayka kapah ku mataay saca pisaungay ku sulit palana’an saca ngiha’palana’an a saazihay-sakaluk.\nuyzasa ayzasa caay henay kami nipabeli mibalic tu ngiha’ay a sakaluk.\namahica saungay ilabu’ nu hulic nu misu talibahalay misuayaw tu kelec, pipatakus [[Special:ListAdmins|calay-kakacawan(wangcan) mikuwanay]] papatun miedap.\n\npipecec saazihay-sakaluk a “tatiku” pipenecan kya tatiku kasabelih sakawaw-kalumyiti-sakaluk",
+ "captcha-addurl-whitelist": "#<!-- amana misaimed tina silsil --> <pre>\n#kamu-sakilul kese mahiza isasa’:\n# * amahicahica nay \"#\" tatebanan nu nisulitan angangan katukuh izikuz dayhiw buhci tu kamu \n# * amahicahica caay nayi’ ku cacan silsil dayhiw liyad tatungusay pakatineng a zateng,apahica sasutili’ URL a angangan-kikay\n#</pre> <!-- amana misaimed tina silsil -->",
+ "right-skipcaptcha": "mileku amateka’ CAPTCHA ID a saungay amana milawat CAPTCHA ID cyinyin",
+ "captcha-apihelp-param-captchaword": "patukil ku yincenma",
+ "captcha-apihelp-param-captchaid": "milunguc nuayaway a kodo nu ID",
+ "confirmedit-preview-content": "lacul"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/aln.json b/www/wiki/extensions/ConfirmEdit/i18n/aln.json
new file mode 100644
index 00000000..fc8c4eac
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/aln.json
@@ -0,0 +1,22 @@
+{
+ "@metadata": {
+ "authors": [
+ "Mdupont"
+ ]
+ },
+ "captcha-edit": "Për të redaktuar këtë faqe, ju lutem zgjidh shuma e thjeshtë më poshtë dhe të hyjë në përgjigjen në kuti ([[Special:Captcha/help|më shumë informacion]]):",
+ "captcha-desc": "captcha Simple zbatimin e",
+ "captcha-addurl": "Your redakto përfshin të jashtme lidhje të reja. Për të ndihmuar në mbrojtjen kundër spam automatizuar, ju lutem zgjidh shuma e thjeshtë më poshtë dhe të hyjë në përgjigjen në kuti ([[Special:Captcha/help|më shumë informacion]]):",
+ "captcha-badlogin": "Për të ndihmuar në mbrojtjen kundër fjalëkalimin automatizuar plasaritje, ju lutem zgjidh shuma e thjeshtë më poshtë dhe të hyjë në përgjigjen në kuti ([[Special:Captcha/help|më shumë informacion]]):",
+ "captcha-createaccount": "Për të ndihmuar në mbrojtjen kundër krijimit llogari e automatizuar, ju lutem zgjidh shuma e thjeshtë më poshtë dhe të hyjë në përgjigjen në kuti ([[Special:Captcha/help|më shumë informacion]]):",
+ "captcha-createaccount-fail": "Pasakta ose të humbur Kodi i shifruar.",
+ "captcha-create": "Për të krijuar një faqe, ju lutem zgjidh shuma e thjeshtë më poshtë dhe të hyjë në përgjigjen në kuti ([[Special:Captcha/help|më shumë informacion]]):",
+ "captcha-sendemail": "Për të ndihmuar në mbrojtjen kundër spamming automatizuar, ju lutem zgjidh shuma e thjeshtë më poshtë dhe të hyjë në përgjigjen në kuti ([[Special:Captcha/help|më shumë informacion]]):",
+ "captcha-sendemail-fail": "Pasakta ose të humbur Kodi i shifruar.",
+ "captcha-disabledinapi": "Ky veprim kërkon një captcha, kështu që nuk mund të kryhet përmes API.",
+ "captchahelp-title": "Captcha ndihmë",
+ "captchahelp-cookies-needed": "Ju duhet të keni cookies të aktivizuara në shfletuesin tuaj për këtë për të punuar.",
+ "captchahelp-text": "Web faqet që pranojnë postings nga publiku, si ky wiki, shpesh keqtrajtohen nga spammers që përdorin mjete të automatizuar të postoni lidhjet e tyre me shumë vende. Përderisa këto lidhje spam mund të hiqen, ata janë një ngatërresë të rëndësishme. Ndonjëherë, sidomos kur duke shtuar të reja lidhje interneti në një faqe, wiki mund të tregojë se një imazh i ose deformuar tekst me ngjyra dhe kërkoni ju që të shtypni fjalë të treguar. Ngaqë kjo është një detyrë që është e vështirë për të automatizuar, ajo do të lejojë të vërtetë njerëzit më të për të bërë detyrat e tyre, ndërsa ndaluar më spammers dhe robotik sulmuesit të tjera. Për fat të keq kjo bezdi përdoruesit mund me vizion të kufizuar ose duke përdorur me bazë ose shprehjeje me bazë shfletuesit tekst. Për momentin ne nuk kemi një alternativë audio në dispozicion. Ju lutemi të kontaktoni [[{{MediaWiki:Grouppage-sysop}} site administratorët) |]] për ndihmë, nëse kjo është e papritur në parandalimin e ju prej bërë postimet legjitime. Hit 'butonin mbrapa në shfletuesin tuaj për t'u kthyer në faqen e redaktorit.",
+ "captcha-addurl-whitelist": "# <!-- leave this line exactly as it is --><pre>\n# Sintaksa është si më poshtë:\n# * Çdo gjë nga një \"karakter #\" në fund të linjës është një koment\n# * Çdo linjës jo të zbrazët është një fragment regex i cili vetëm do të përputhen me pret brenda URL\n # </pre><!-- leave this line exactly as it is -->",
+ "right-skipcaptcha": "captcha Kryerja e veprimeve të shkaktuar pa pasur nevojë të shkojë nëpër captcha"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/am.json b/www/wiki/extensions/ConfirmEdit/i18n/am.json
new file mode 100644
index 00000000..1d9086d3
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/am.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "Codex Sinaiticus"
+ ]
+ },
+ "captcha-edit": "ይህንን ድርሰት ለማረም፣ እባክዎን የሚቀጥለውን ቀላል የመደመር ጥያቄ መልስ ሳጥን ውስጥ ይጻፉ። ([[Special:Captcha/help|ተጨማሪ መረጃ]])",
+ "captcha-createaccount": "ያልተፈለገ የመኪናነት አባልነት ለመከላከል፥ አባል ለመሆን በዚህ ምስል የታዩት እንግሊዝኛ ቃላት ወይም ቁጥር መልስ በትክክል መጻፍ ግዴታ ነው። ([[Special:Captcha/help|ይህ ምንድነው?]]):",
+ "captchahelp-title": "የ'ካፕቻ' መግለጫ",
+ "captchahelp-text": "አንዳንዴ 'ስፓም' የተባሉት ያልተፈለጉ መልእክቶች የሚላኩ ሰዎች በመኪናነት አማካይነት በብዙ ድረገጽ ላይ የማይገባ ማስታወቂያ በመልጠፍ ላይ እየተገኘ ነው። ይህን የማይገባ መያያዣ ማስወገድ ቢቻለም አስቸጋሪ ናቸው።\n\nስለዚህ በመጀመርያ አባልነት ሲገቡ ወይም አንዳንዴ የውጭ ድረገጽ አድራሻ ሲጨመር የፕሮግራሙ ሶፍትዌር 'ካፕቻ' የእንግሊዝኛን ቃላት ወይም የቁጥር መልስ እንዲዳግሙ ለፈተና ይጠይቃል። ይህ አደራረግ ለመኪናነት ቀላል ተግባር ሰላማይሆን፥ እውነተኛ ሰው ከሆነ ለመልጠፍ ያስችለዋል ነገር ግን መኪናነት ከሆነ ዕንቅፋት ይሆንበታል።\n\nይህ ዘዴ ከመልጠፍ ያለግባብ ቢከለክልዎ እባክዎ መጋቢን ይጠይቁ።\n\nአሁን ( <= 'back' ) በbrowserዎ ላይ ይጫኑ።"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/an.json b/www/wiki/extensions/ConfirmEdit/i18n/an.json
new file mode 100644
index 00000000..232f3bd9
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/an.json
@@ -0,0 +1,24 @@
+{
+ "@metadata": {
+ "authors": [
+ "Juanpabl",
+ "Carlos Cristia"
+ ]
+ },
+ "captcha-edit": "Ta editar ista pachina, faiga por favor a suma simpla que apareixe contino y escriba a solución en a caixa ([[Special:Captcha/help|más información]]):",
+ "captcha-desc": "Implementación de CAPTCHA ta protecher contra o spam y dovinanza de claus.",
+ "captcha-label": "CAPTCHA",
+ "captcha-addurl": "A suya edición encluye vinclos esternos. Ta aduyar-nos en a proteción contra o spam automatizato, por favor, faiga a suma simpla que s'amuestra contino y escriba a respuesta en a caixa ([[Special:Captcha/help|más información]]):",
+ "captcha-badlogin": "Ta aduyar-nos en a protección contra a obtención automatizata de claus d'acceso, por favor faiga a suma simpla que amaneixe contino y escriba a respuesta en a caixa ([[Special:Captcha/help|más información]]):",
+ "captcha-createaccount": "Ta aduyar-nos en a proteción contra a creyación automatica de cuentas, por favor faiga a suma simpla que s'amuestra contino y escriba a respuesta en a caixa ([[Special:Captcha/help|más información]]):",
+ "captcha-createaccount-fail": "No ha escrito o codigo de confirmación, u iste ye incorreuto.",
+ "captcha-create": "Ta creyar a pachina, por favor faiga a suma simpla que s'amuestra contino y escriba a respuesta en a caixa ([[Special:Captcha/help|más información]]):",
+ "captcha-sendemail": "Ta protecher-nos contra o spam automatizau, resuelva a suma facil que se presienta contino y escriba a respuesta en o quadro de texto ([[Special:Captcha/help|mas información]]):",
+ "captcha-sendemail-fail": "O codigo de confirmación falta u ye incorrecto.",
+ "captcha-disabledinapi": "Ista acción requiere un captcha, asinas que no puede estar executada a traviés d'un API.",
+ "captchahelp-title": "Aduya sobre o \"captcha\"",
+ "captchahelp-cookies-needed": "Ta que o sistema funcione le cal tener as cookies activatas en o navegador.",
+ "captchahelp-text": "Os sitios web que acceptan mensaches d'o publico, como iste wiki, son a ormino obchecto d'abusos por spammers que fan servir ferramientas automatizatas ta encluyir-ie vinclos ta a-saber-los sitios. Encara que istos vinclos se pueden sacar, son un gran estorbo.\n\nBellas vegadas, especialment quan se mire de adhibir nuevos vinclos a una pachina, o wiki talment le amuestre una imachen con testo en color y distorsionato, y le pregunte quáls son as parolas amostratas. Como ista ye una fayena de mal automatizar, premitirá a os usuarios humanos fer as suyas edicions de vez que aturará a muitos spammers y atacants automaticos.\n\nManimenos, isto puede estar un barrache ta usuarios con visión limitata u que faigan ser navegadors basatos en texto u en a voz. Por l'inte no tenemos garra alternativa de audio. Por favor, contacte con os [[Special:ListAdmins|administradors]] d'o wiki ta demandar aduya si isto le ye privando de fer as suyas edicions lechitimas.\n\nPunche o botón 'enta zaga' d'o suyo navegador ta tornar ta l'editor de pachinas.",
+ "captcha-addurl-whitelist": " #<!-- leave this line exactly as it is --> <pre>\n# A sintaxi ye asinas:\n# * Tot o que bi ha dende un carácter \"#\" dica a fin d'a linia ye un comentario\n# * Qualsiquier linia con testo un troz d'expresión regular (regex) que sólo concordará con os hosts aintro d'URLs\n #</pre> <!-- leave this line exactly as it is -->",
+ "right-skipcaptcha": "Fer accions que requieren o captcha sin fer servir o captcha"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/ang.json b/www/wiki/extensions/ConfirmEdit/i18n/ang.json
new file mode 100644
index 00000000..92dc5946
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/ang.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Gott wisst"
+ ]
+ },
+ "captcha-label": "CAPTCHA"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/anp.json b/www/wiki/extensions/ConfirmEdit/i18n/anp.json
new file mode 100644
index 00000000..1a4dadec
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/anp.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Angpradesh"
+ ]
+ },
+ "captcha-label": "कैप्चा"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/ar.json b/www/wiki/extensions/ConfirmEdit/i18n/ar.json
new file mode 100644
index 00000000..177f0079
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/ar.json
@@ -0,0 +1,46 @@
+{
+ "@metadata": {
+ "authors": [
+ "Aiman titi",
+ "Alnokta",
+ "Loya",
+ "Meno25",
+ "Mido",
+ "OsamaK",
+ "Samer",
+ "Zanatos",
+ "Izoozo",
+ "Moud hosny"
+ ]
+ },
+ "captcha-edit": "لتعديل هذه الصفحة، من فضلك قم بحل المهمة بالأسفل وأدخل الإجابة في الصندوق ([[Special:Captcha/help|مزيد من المعلومات]]):",
+ "captcha-edit-fail": "كود تأكيد غير صحيح أو مفقود.",
+ "captcha-desc": "يوفر تقنيات كابتشا للحماية ضد السبام وتخمين كلمات السر",
+ "captcha-label": "كابتشا",
+ "captcha-help": "حل لكلمة التحقق.",
+ "captcha-info-help": "وصف لكلمة التحقق.",
+ "captcha-id-label": "رقم CAPTCHA",
+ "captcha-id-help": "ينبغي أن ترسل هذه القيمة مرة أخرى بدون تغيير.",
+ "captcha-addurl": "تعديلك يحتوي على وصلات خارجية جديدة.\nلحماية الويكي من السبام الأوتوماتيكي، من فضلك حل المهمة التالية بالأسفل وأدخل الإجابة في الصندوق لكي يتم حفظ تعديلك ([[Special:Captcha/help|مزيد من المعلومات]]):",
+ "captcha-badlogin": "لحماية الويكي ضد سرقة كلمات السر، من فضلك حل المهمة التالية بالأسفل وأدخل الحل في الصندوق ([[Special:Captcha/help|مزيد من المعلومات]]):",
+ "captcha-createaccount": "لحماية الويكي ضد إنشاء الحسابات الأوتوماتيكي، من فضلك حل المهمة التالية بالأسفل وأدخل الإجابة في الصندوق ([[Special:Captcha/help|مزيد من المعلومات]]):",
+ "captcha-createaccount-fail": "كابتشا غير صحيحة أو مفقودة.",
+ "captcha-create": "لإنشاء هذه الصفحة، من فضلك حل المهمة التالية بالأسفل وأدخل\nالإجابة في الصندوق ([[Special:Captcha/help|مزيد من المعلومات]]):",
+ "captcha-sendemail": "لحماية الويكي ضد السخام الأتوماتيكي، من فضلك حل المهمة التالية بالأسفل وأدخل الإجابة في الصندوق ([[Special:Captcha/help|مزيد من المعلومات]]):",
+ "captcha-sendemail-fail": "كابتشا غير صحيحة أو مفقودة.",
+ "captcha-disabledinapi": "هذا الإجراء يتطلب تحقيق , لذلك لايمكن أعتمادها من API.",
+ "captcha-error": "فشل التحقق من صحة كلمة التحقق بسبب خطأ داخلي: $1",
+ "captchahelp-title": "مساعدة الكابتشا",
+ "captchahelp-cookies-needed": "ستحتاج إلى أن تكون الكوكيز مفعلة في متصفحك لكي يعمل هذا",
+ "captchahelp-text": "عادة ما يتم في المواقع التي تقبل الردود والرسائل من العامة، كهذا الويكي، تخريب الموقع عن طريق الأشخاص الذين يستعملون آليات معينة لإرسال وصلاتهم لمواقع متعددة بصورة آلية.\nوعلى الرغم من أن هذا يمكن إزالته ولكنه مزعج للغاية.\n\nفي بعض الأحيان، خصوصا عند إضافة وصلات لصفحة، ربما يعرض الويكي صورة ملونة أو مشوشة ويطلب منك إدخال كلمات موجودة بالصورة أو يعرض عليك مسألة رياضية عشوائية ويطلب منك حلها.\nولأن هذه المهمة صعبة للغاية لأن يقوم بها برنامج، سيسمح هذا للأشخاص الآدميين بإضافة تحريراتهم بينما ستوقف البرامج التخريبية والهجمات الآلية الأخرى.\n\nللأسف سيكون هذا صعبا بالنسبة لمستخدمي المتصفحات المحدودة أو التي تعتمد على النصوص فقط أو قراءة النصوص.\nفي الوقت الحالي لا يوجد لدينا بديل سمعي.\nمن فضلك راسل [[Special:ListAdmins|إداريي الموقع]] للمساعدة إذا كان هذا الأمر يمنعك من التعديل ووضع وصلات قانونية.\n\nإذا كنت تحرر صفحة معينة: اضغط زر 'العودة' في متصفحك للعودة إلى التحرير.",
+ "captcha-addurl-whitelist": " #<!-- اترك هذا السطر تماما كما هو --> <pre>\n# الصيغة كما يلي:\n# * كل شيء من علامة \"#\" لنهاية السطر تعليق\n# * كل سطر غير فارغ هو جزء تعبير نمطي والذي سوف يطابق فقط المضيفين داخل العناوين\n #</pre> <!-- اترك هذا السطر تماما كما هو -->",
+ "right-skipcaptcha": "أداء أفعال تستوجب تنفيذ كابتشا دون المرور بها",
+ "captcha-apihelp-param-captchaword": "الإجابة على الكابتشا",
+ "captcha-apihelp-param-captchaid": "معرف الكابتشا من طلب سابق",
+ "confirmedit-preview-line": "رقم السطر",
+ "confirmedit-preview-content": "محتوى",
+ "confirmedit-preview-validity": "الصلاحية",
+ "confirmedit-preview-valid": "صحيح",
+ "confirmedit-preview-invalid": "غير صحيح",
+ "confirmedit-preview-description": "الجدول التالي يعرض قائمة الخطوط على هذه الصفحة وما إذا كانت عنوان أيبي أو نطاق أيبي صحيح. لو أن الخط هو عنوان أيبي أو نطاق أيبي صحيح، فستتم إضافته للقائمة البيضاء للCAPTCHA لكن السطور غير الصحيحة سيتم تجاهلها. كمثال على نطاق أيبي صحيح: 69.208.0.0/16 والذي يبدأ من 69.208.0.0 إلى 69.208.255.255. [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Range_blocks#Calculating_the_CIDR_suffix المزيد من المعلومات] حول حساب نطاق عناوين أيبي."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/arq.json b/www/wiki/extensions/ConfirmEdit/i18n/arq.json
new file mode 100644
index 00000000..a44fa5f9
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/arq.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Oldstoneage"
+ ]
+ },
+ "captcha-label": "كابتشا"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/arz.json b/www/wiki/extensions/ConfirmEdit/i18n/arz.json
new file mode 100644
index 00000000..90030c38
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/arz.json
@@ -0,0 +1,22 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ghaly",
+ "Meno25",
+ "Ramsis II"
+ ]
+ },
+ "captcha-edit": "علشان تعدل فى الصفحة دى، لو سمحت تحل المسالة الرياضية البسيطة اللى تحت و اكتب الاجاية فى الصندوء ([[Special:Captcha/help|معلومات اكتر]]):",
+ "captcha-desc": "تطبيق بسيط لـ كابتشا",
+ "captcha-label": "كابتشا",
+ "captcha-addurl": "التعديل بتاعك فيه لينكات خارجية جديدة.\nعلشان تساعد فى الحماية من السبام الاوتوماتيكى،لو سمحت تحل المسالة الرياضية البسيطة اللى تحت و اكتب الاجابة فى الصندوء([[Special:Captcha/help|معلومات اكتر]]):",
+ "captcha-badlogin": "علشان تساعد فى الحماية من السرقة الاوتوماتيكية للباسورد، لو سمجت تحل المسألة الرياضية البسيطة اللى تحت و تكتب الاجابة جوه الصندوء([[Special:Captcha/help|معلومات اكتر]]):",
+ "captcha-createaccount": "علشان تساعد فى الحماية من فتح الحساب الاوتوماتيكى،لو سمحت تحل المسألة الرياضية البسيطة اللى تحت و تكتب الاجابة جوه الصندوء ([[Special:Captcha/help|معلومات اكتر]]):",
+ "captcha-createaccount-fail": "كود التأكيد مش صحيح أو ضايع.",
+ "captcha-create": "علشان تبتدى الصفحة دى، لو سمحت تحل السألة الرياضية البسيطة اللى تحت و تكتب الاجابة جوه الصندوء ([[Special:Captcha/help|معلومات اكتر]]):",
+ "captchahelp-title": "مساعدة الكابتشا",
+ "captchahelp-cookies-needed": "لازم تكون الكوكيز بتاعتك متفعلة فى البراوزر علشان دا يشتغل.",
+ "captchahelp-text": "مواقع الويب اللى بتقبل رسايل من عامة الناس،زى الويكى دا،غالبا ما بيتعرضو لسوء استعمال عن طريق السبامرز اللى بيستخدمو اليات اوتوماتيكية علشان يبعتو لينكات لكذا موقع.\nعلى الرغم من ان السبام لينك ممكن يتشال، بس هى بتسبب ازعاج كبير .\n\nساعات،و خصوصا لما بتضيف ويب لينك جديدة لاى صفحة،الويكى ممكن يعرض لك صورة لنص متشوه او متلون و يطلب منك انك تكتب الكلمات المعروضة.\nو علشان دى عملية من الصعب يقوم بها برنامج، فهى بتسمح لمعظم البنى ادمين انهم يبعتو مشاركتهم و بتمنع معظم السبامرز و المهاجمين الاوتوماتيكيين التانيين.\n\nللاسف،دا ممكن يسبب ازعاج لليوزرو اللى نظرهم ضعيف او اللى بيستعملو براوز معتمد على الكلام او النصوص.\nفى الوقت الحالى احنا ما عندناش اى بديل سمعى متوافر.\nلو سمحت تتصل [[Special:ListAdmins|بلاداريين]] بتوع الموقع علشان يساعدوك لو دا منعك بشكل مش متوقع من انك تشارك بشكل قانونى.\n\nدوس على زرار 'back'اللى فى البراوزر بتاعك علشان ترجع لتحرير الصفحة.",
+ "captcha-addurl-whitelist": " #<!-- سيب السطر دا زى ما هو كدا بالظبط--> <pre>\n# الصيغة كدا:\n# * كل حاجة من علامة \"#\" لحد نهاية السطر هى تعليق\n# * كل سطر مش فاضى هو جزء ريجيكس و اللى ح يطابق بس المضيفين جوه URLs\n #</pre> <!-- سيب السطر دا زى ما هو كدا بالظبط -->",
+ "right-skipcaptcha": "عمل حاجات بتنشط الكابتشا من غير ما تضطر تمر بالكابتشا"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/as.json b/www/wiki/extensions/ConfirmEdit/i18n/as.json
new file mode 100644
index 00000000..f7f7979d
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/as.json
@@ -0,0 +1,28 @@
+{
+ "@metadata": {
+ "authors": [
+ "Bishnu Saikia",
+ "Chaipau",
+ "Gitartha.bordoloi",
+ "Rajuonline",
+ "Dibya Dutta"
+ ]
+ },
+ "captcha-edit": "এই পৃষ্ঠাটো সম্পাদনা কৰিবলৈ তলৰ সহজ অংকটো কৰি উত্তৰতো বাকছৰ ভিতৰত লিখক\n([[Special:Captcha/help|অধিক তথ্য]]):",
+ "captcha-edit-fail": "অশুদ্ধ বা অস্তিত্বহীন CAPTCHA।",
+ "captcha-desc": "স্পাম আৰু গুপ্তশব্দ অনুমানৰ পৰা ৰক্ষা কৰিবলৈ CAPTCHA কৌশলৰ ব্যৱহাৰ",
+ "captcha-label": "কেপছা",
+ "captcha-addurl": "আপোনাৰ সম্পাদনাত বাহিৰলৈ সংযোগ আছে।\nৱিকিখন স্বয়ংক্ৰীয় স্পামৰ পৰা বাচিবলৈ, তলৰ সহজ অংকটো কৰি উত্তৰতো বাকছৰ ভিতৰত লিখক ([[Special:Captcha/help|অধিক তথ্য]]):",
+ "captcha-badlogin": "ৱিকিত স্বয়ংক্ৰিয়ভাবে গুপ্তশব্দ ভঙাৰ পৰা বাচিবলৈ, তলৰ সহজ অংকটো কৰি উত্তৰটো বাকছৰ ভিতৰত লিখক\n([[Special:Captcha/help|অধিক তথ্য]]):",
+ "captcha-createaccount": "ৱিকিত স্বয়ংক্ৰিয়ভাৱে হোৱা সদস্যভুক্তি ৰোধ কৰিবলৈ অনুগ্ৰহ কৰি তলৰ সহজ অংকটো কৰক আৰু উত্তৰতো বাকছৰ ভিতৰত লিখক\n([[Special:Captcha/help|অধিক তথ্য]]):",
+ "captcha-createaccount-fail": "ভুল বা খালী নিশ্বিতকৰণ শব্দ",
+ "captcha-create": "এই পৃষ্ঠাটো তৈয়াৰ কৰিবলৈ, তলৰ সহজ অংকটো কৰি উত্তৰতো বাকছৰ ভিতৰত লিখক\n([[Special:Captcha/help|অধিক তথ্য]]):",
+ "captcha-sendemail": "স্বয়ংক্ৰিয় স্পামিঙৰ পৰা ৱিকিখন বচাবৰ বাবে অনুগ্ৰহ কৰি তলৰ সৰল অংকটো কৰক আৰু বাকছটোত উত্তৰ লিখক ([[Special:Captcha/help|অধিক তথ্য]]):",
+ "captcha-sendemail-fail": "ভুল বা খালী নিশ্চিতকৰণ সংকেত",
+ "captcha-disabledinapi": "এই কামটোৰ বাবে captchaৰ প্ৰয়োজন, গতিকে ইয়াক APIৰ মাধ্যমেৰে কৰিব পৰা নাযাব।",
+ "captchahelp-title": "ক্যাপচা সাহায্য",
+ "captchahelp-cookies-needed": "এই কামতো সম্পন্ন কৰিবলৈ, আপোনাৰ ব্ৰাউজাৰত কুকী সক্ৰীয় থাকিব লাগিব",
+ "captchahelp-text": "যিবোৰ ৱেবচাইটত জনতাই পাঠ্য ভৰাব পাৰে, যেনে এই ৱিকি, সেইবোৰক প্ৰায়ে দুষ্কৃতিকাৰী স্পেমাৰবোৰে স্বয়ংক্ৰীয় আহিলাৰ দ্বাৰা তেওলোকৰ চাইটলৈ সংযোগ ভৰাই আক্ৰমণ কৰে।\nযদিও তেনে স্পাম সংযোগ গুচাব পাৰি, পিছে এয়া এক ডাঙৰ উপদ্ৰৱ।\n\nসাধাৰণতে যেতিয়া কোনো পৃষ্ঠালৈ নতুন সংযোগ সৃষ্টি কৰা হয়, তেতিয়া ৱিকিয়ে এটা ৰঙীন বা বিকৃত চবি দেখুৱাই তাত থকা শব্দখিনি আপোনাক টাইপ কৰিবলৈ ক'ব পাৰে।\nযিহেতু এই কামতো স্বয়ংক্ৰিয়ভাৱে কৰা প্ৰায়ে অসম্ভব, ই বেছিভাগ প্ৰকৃত ব্যক্তিক পাঠ্য ভৰাব দিয়াৰ লগতে স্বয়ংক্ৰিয় আহিলাৰ দ্বাৰা পাঠ্য ভৰোৱা দুষ্কৃতিকাৰীসকলক ৰোধ কৰিব পাৰে।\n\nদুৰ্ভাগ্যক্ৰমে, সীমিত দৃষ্টিশক্তি থকা ব্যক্তিসকলে, বা পাঠ্য-আধাৰিত অথবা ধ্বনি-আধাৰিত ব্ৰাউজাৰ ব্যৱহাৰ কৰা ব্যক্তিসকলে ইয়াৰ পৰা অসুবিধা পাব পাৰে।\nএই সময়ত ইয়াৰ কোনো ধ্বনি-আধাৰিত বিকল্প আমাৰ হাতত নাই।\nইয়াৰ বাবে যদি আপুনি যুক্তিসন্মত পাঠ্য ভৰাবলৈ অসুবিধা পাইছে, তেনেহলে [[Special:ListAdmins|চাইট প্ৰশাসকৰ]] লগত যোগাযোগ কৰক।\n\nপৃষ্ঠা সম্পাদনালৈ ঘূৰি যাবলৈ আপোনাৰ ব্ৰাউজাৰৰ 'back' বুটামত টিপা মাৰক।",
+ "captcha-addurl-whitelist": " #<!-- leave this line exactly as it is --> <pre>\n# চিনটেক্স তলত দিয়া ধৰনে হ’ব:\n# * \"#\" কেৰেক্টাৰৰ পৰা আৰম্ভ হৈ লাইনৰ শেষ পৰ্যন্ত সকলোবোৰ এটাই মন্তব্য\n# * প্ৰতিটো খালী-নোহোৱা শাৰী একোটা ৰেজেক্স খণ্ডাংশ যিটো ইউ.আৰ.এল. সমূহৰ ভিতৰৰ হষ্টসমূহৰ লগত মিলি যাব।\n #</pre> <!-- leave this line exactly as it is -->",
+ "right-skipcaptcha": "CAPTCHAৰ মাজেৰে নোযোৱাকৈ CAPTCHA সক্ৰিয় কৰা কাম কৰক"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/ast.json b/www/wiki/extensions/ConfirmEdit/i18n/ast.json
new file mode 100644
index 00000000..af4388c0
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/ast.json
@@ -0,0 +1,38 @@
+{
+ "@metadata": {
+ "authors": [
+ "Esbardu",
+ "Xuacu"
+ ]
+ },
+ "captcha-edit": "Pa editar esta páxina, resuelvi la siguiente operación y pon la rempuesta nel caxellu ([[Special:Captcha/help|más información]]):",
+ "captcha-edit-fail": "CAPTCHA incorreutu o ausente.",
+ "captcha-desc": "Ufre téuniques de CAPTCHA pa protexese escontra'l spam y descubrimientu de contraseñes",
+ "captcha-label": "CAPTCHA",
+ "captcha-help": "Solución del CAPTCHA.",
+ "captcha-info-help": "Descripción del CAPTCHA.",
+ "captcha-id-label": "ID del CAPTCHA",
+ "captcha-id-help": "Este valor tien de devolvese ensin cambiar.",
+ "captcha-addurl": "La to edición incluye nuevos enllaces esternos. Pa protexer la wiki escontra'l spam automatizáu, pidímoste por favor que resuelvas la siguiente operación y pongas la rempuesta na caxella pa guardar la edición ([[Special:Captcha/help|más información]]):",
+ "captcha-badlogin": "Pa protexer la wiki escontra'l descifráu automáticu de claves, pidímoste por favor que resuelvas la siguiente operación y pongas la rempuesta na caxella ([[Special:Captcha/help|más información]]):",
+ "captcha-createaccount": "Pa protexer la wiki escontra la creación automática de cuentes, pidímoste por favor que resuelvas la siguiente operación y pongas la rempuesta na caxella ([[Special:Captcha/help|más información]]):",
+ "captcha-createaccount-fail": "CAPTCHA incorreutu o ausente.",
+ "captcha-create": "Pa crear la páxina, por favor resuelvi la siguiente operación y pon la rempuesta nel caxellu ([[Special:Captcha/help|más información]]):",
+ "captcha-sendemail": "Pa protexer la wiki escontra la puxarra automatizada, pidímoste por favor que resuelvas la siguiente operación y pongas la rempuesta na caxella ([[Special:Captcha/help|más información]]):",
+ "captcha-sendemail-fail": "CAPTCHA incorreutu o ausente.",
+ "captcha-disabledinapi": "Esta aición requier un captcha y, poro, nun pue facese pel API",
+ "captcha-error": "La comprobación del CAPTCHA falló por un error internu: $1",
+ "captchahelp-title": "Ayuda tocante al CAPTCHA",
+ "captchahelp-cookies-needed": "Has tener les cookies habilitaes nel to navegador pa que'l sistema funcione.",
+ "captchahelp-text": "Los sitios web qu'aceuten mensaxes del publicu, como esta wiki, davezu son oxetu d'abusu por spammers qu'usen programes pa incluyir los sos enllaces automáticamente.\nMientres qu'estos enllaces de puxarra puen desaniciase, son enforma cafiantes.\n\nDacuando, especialmente al amestar nuevos enllaces web nuna páxina, la wiki pue amosate una imaxe de testu coloreáu o distorsionáu y va pidite qu'escribas les pallabres que s'amuesen.\nYá qu'esti ye un llabor difícil d'automatizar, permitirá a les más de les persones reales unviar los sos testos, al empar que llenden los más de los spammers y otros atacantes automáticos.\n\nPor desgracia, esto pue ser un inconveniente pa los usuarios con visión llimitada o qu'usen navegadores de testu o voz. De momentu nun tenemos disponible una alternativa de soníu. Por favor, ponte'n contautu colos [[Special:ListAdmins|alministradores del sitiu]] pa pidir ayuda si esto te torgare facer ediciones llexítimes.\n\nCalca nel botón 'atrás' del to navegador pa volver a la páxina d'edición.",
+ "captcha-addurl-whitelist": " #<!-- dexa esta llinia exautamente como ta --> <pre>\n# La sintaxis ye como sigue:\n# * Too dende'l carauter \"#\" hasta la fin de la llinia ye un comentariu\n# * Toa llinia non vacia ye un fragmentu regex que namái buscará hosts n'URLs\n #</pre> <!-- dexa esta llinia exautamente como ta -->",
+ "right-skipcaptcha": "Facer les acciones que requieren captcha ensin tener que lu introducir",
+ "captcha-apihelp-param-captchaword": "Respuesta al CAPTCHA",
+ "captcha-apihelp-param-captchaid": "Identificador de CAPTCHA de la consulta anterior",
+ "confirmedit-preview-line": "Númberu de llinia",
+ "confirmedit-preview-content": "Conteníu",
+ "confirmedit-preview-validity": "Validez",
+ "confirmedit-preview-valid": "válida",
+ "confirmedit-preview-invalid": "non válida",
+ "confirmedit-preview-description": "La tabla siguiente amuesa la llista de llinies d'esta páxina y si ye una direición o rangu de direiciones IP válida. Si la llinia ye una direición o rangu de direiciones IP válida, pondráse na llista blanca de CAPTCHA, pero les llinies inválides van inorase. Un exemplu d'un rangu de direiciones IP válidu sedría: 69.208.0.0/16 que va de 69.208.0.0 fasta 69.208.255.255. [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Range_blocks#Calculating_the_CIDR_suffix Más información] tocante a cómo calcular un rangu de direiciones IP."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/atj.json b/www/wiki/extensions/ConfirmEdit/i18n/atj.json
new file mode 100644
index 00000000..1d35f23c
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/atj.json
@@ -0,0 +1,10 @@
+{
+ "@metadata": {
+ "authors": [
+ "Amqui",
+ "Benoit Rochon"
+ ]
+ },
+ "captcha-label": "CAPTCHA",
+ "confirmedit-preview-content": "Tekaci ecinakok"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/awa.json b/www/wiki/extensions/ConfirmEdit/i18n/awa.json
new file mode 100644
index 00000000..18eeb7c3
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/awa.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "1AnuraagPandey"
+ ]
+ },
+ "captcha-label": "कैप्चा"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/az.json b/www/wiki/extensions/ConfirmEdit/i18n/az.json
new file mode 100644
index 00000000..cc044de0
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/az.json
@@ -0,0 +1,10 @@
+{
+ "@metadata": {
+ "authors": [
+ "Vugar 1981",
+ "Dağlı95"
+ ]
+ },
+ "captcha-label": "CAPTCHA",
+ "captchahelp-title": "CAPTCHA kömək"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/azb.json b/www/wiki/extensions/ConfirmEdit/i18n/azb.json
new file mode 100644
index 00000000..7c9fdb38
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/azb.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "Amir a57"
+ ]
+ },
+ "captcha-label": "CAPTCHA",
+ "captchahelp-title": "Captcha کؤمک"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/ba.json b/www/wiki/extensions/ConfirmEdit/i18n/ba.json
new file mode 100644
index 00000000..9bd88bc5
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/ba.json
@@ -0,0 +1,35 @@
+{
+ "@metadata": {
+ "authors": [
+ "Assele",
+ "Рустам Нурыев",
+ "ҒатаУлла",
+ "Айсар",
+ "Вильданова Гюзель",
+ "Янмурза Баки",
+ "Ләйсән"
+ ]
+ },
+ "captcha-edit": "Был битте мөхәррирләү өсөн, мәсьәләне сисегеҙ һәм яуабын түбәндәге юлға керетегеҙ ([[Special:Captcha/help|тулыраҡ мәғлүмәт]]):",
+ "captcha-edit-fail": "Раҫлау коды керетелмәгән йәки дөрөҫ түгел.",
+ "captcha-desc": "Спамдан һәм серһүҙҙе һайлып алыуҙан һаҡланыу өсөн CAPTCHA ысулдары менән тәьмин итә",
+ "captcha-label": "CAPTCHA",
+ "captcha-addurl": "Һеҙ тышҡы сайттарға яңы һылтанмалар өҫтәйһегеҙ.\nАвтоматик спамдан һаҡланыу маҡсатында, индерелгән үҙгәртеүҙәр һаҡланһын өсөн, мәсьәләне сисегеҙ һәм яуабын түбәндәге юлға керетегеҙ ([[Special:Captcha/help|тулыраҡ мәғлүмәт]]):",
+ "captcha-badlogin": "Серһүҙҙе автоматик ватыуҙан һаҡлау маҡсатында, мәсьәләне сисегеҙ һәм яуабын түбәндәге юлға керетегеҙ ([[Special:Captcha/help|тулыраҡ мәғлүмәт]]):",
+ "captcha-createaccount": "Иҫәп яҙмаларын автоматик булдырыуҙан һаҡлау маҡсатында,мәсьәләне сисегеҙ һәм яуабын түбәндәге юлға яҙығыҙ ([[Special:Captcha/help|тулыраҡ мәғлүмәт]]):",
+ "captcha-createaccount-fail": "Контроль комбинция дөрөҫ түгел йәки керетелмәгән.",
+ "captcha-create": "Яңы бит булдырыу өсөн, мәсьәләне сисегеҙ һәм яуабын түбәндәге юлға керетегеҙ ([[Special:Captcha/help|тулыраҡ мәғлүмәт]]):",
+ "captcha-sendemail": "Иҫәп яҙмаларын автоматик булдырыуҙан һаҡлау маҡсатында, мәсьәләне сисегеҙ һәм яуабын түбәндәге юлға яҙығыҙ ([[Special:Captcha/help|тулыраҡ мәғлүмәт]]):",
+ "captcha-sendemail-fail": "Раҫлау коды керетелмәгән йәки дөрөҫ түгел.",
+ "captcha-disabledinapi": "Был ғәмәл captcha тикшереүен талап итә, шуға күрә API аша башҡарыла алмай.",
+ "captchahelp-title": "Captcha тураһында белешмә",
+ "captchahelp-cookies-needed": "Бының эшләүе өсөн һеҙҙең браузерығыҙҙа куки булыуы кәрәк.",
+ "captchahelp-text": "Үҙенә эстәлек өҫтәргә һәм эстәлеген мөхәррирләргә мөмкинлек биргән веб-сайттар, шул иҫәптән был вики, йыш ҡына сайттарға автоматик һылтанмалар өҫтәү өсөн программалар ҡулланған спамлаусыларҙың маҡсатына әйләнә.\n\nҠайһы бер ғәмәлдәрҙе башҡарған ваҡытта — мәҫәлән, биткә һылтанма өҫтәгән ваҡытта — һеҙ төҫлө йәки боҙолған текстлы махсус рәсем күрә алаһығыҙ, һеҙгә ошо текстты керетергә тәҡдим ителәсәк.\nПрограммалар өсөн боҙолған текстты уҡыу ауыр мәсьәлә булып торғанға күрә, спамлау һәм вандал программаларының күпселеге быны хәл итә алмаясаҡ, ә кешеләр еңел башҡарасаҡ.\n\nҮкенескә ҡаршы, бындай һаҡлыҡ саралары күҙҙәре насар күреүсе кешеләргә йәки текстлы йәки уҡыусы браузерҙар ҡулланған кешеләргә уңайһыҙлыҡ килтереүе мөмкин.\nӘлеге ваҡытта беҙҙең бындай тикшереүҙе тауыш менән алыштырыу мөмкинлеге юҡ.\nЗинһар, әгәр бындай тикшереү һеҙгә сайтта намыҫ менән эшләргә ҡамасаулаһа, [[Special:ListAdmins|хәкимдәргә]] мөрәжәғәт итегеҙ.\n\nМөхәррирләүгә кире ҡайтыу өсөн, браузерығыҙҙа кире ҡайтыу төймәһенә баҫығыҙ.",
+ "captcha-addurl-whitelist": "#<!-- leave this line exactly as it is --> <pre>\n# Синтаксистың тасуирламаһы:\n# * \"#\" тамғаһынан алып юл аҙағына тиклем аңлатма тип һанала\n# * Һәр буш булмаған юл URL адресындағы үҙәк исеменең регуляр аңлатмаһы тип һанала \n #</pre> <!-- leave this line exactly as it is -->",
+ "right-skipcaptcha": "Captcha тикшереүен талап иткән ғәмәлдәрҙе тикшереүһеҙ башҡарыу",
+ "captcha-apihelp-param-captchaword": "Капсаға яуап",
+ "captcha-apihelp-param-captchaid": "Алдағы һорауҙан CAPTCHA ID",
+ "confirmedit-preview-content": "Йөкмәтке",
+ "confirmedit-preview-valid": "яраҡлы",
+ "confirmedit-preview-invalid": "яраҡһыҙ"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/bcc.json b/www/wiki/extensions/ConfirmEdit/i18n/bcc.json
new file mode 100644
index 00000000..b4e2d492
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/bcc.json
@@ -0,0 +1,21 @@
+{
+ "@metadata": {
+ "authors": [
+ "Mostafadaneshvar",
+ "Baloch Afghanistan"
+ ]
+ },
+ "captcha-edit": "به اصلاح کتن ای صفحه،لطفا ای جمع ساده حل کنیت و جوابء جهلا وارد کنیت ([[Special:Captcha/help|گیشتر اطلاعات]]):",
+ "captcha-desc": " کاربرد ساده captcha",
+ "captcha-label": "کپچا",
+ "captcha-addurl": "شمی اصلاح شامل نوکین درای لینک انت.\nپه کمک په حمایت چه اتوماتیکی اسپم، لطفا جمع ساده حل کینت و جواب جهلء وارد کنیت ([[Special:Captcha/help|گیشتر اطلاعات]]):",
+ "captcha-badlogin": "په کمک په حمایت چه اتوماتیکی کلمه رمز پروشوک، لطفا ای جمع ساده حل کنیت. جوابء جهلء وارد کنید ([[Special:Captcha/help|گیشتر اطلاعات]]):",
+ "captcha-createaccount": "په کمک په حمایت چه اتوماتیکی حساب شرکتن، لطفا ای جهلی ساده جمع حل کنیت و جواب بنویسیت ([[Special:Captcha/help|گیشترین مئلومات]]):",
+ "captcha-createaccount-fail": "اشتباه یا گارین کد تایید",
+ "captcha-create": "په شرکتن صفحه، لطفا ای جمع ساده حل کنیت و جواب ادان بنویسیت ([[Special:Captcha/help|گیشتر اطلاعات]]):",
+ "captchahelp-title": "کمک Captcha",
+ "captchahelp-cookies-needed": "شمی نیاز بیت که ته وتی بروزر کوکی فعال کنیت په ای کارء",
+ "captchahelp-text": "وب سایتانی که چه عام نوشته قبول کننت، په داب ای ویکی، اغلب چه طرف اسپمرآن که چه وسایل اتوماتیکی په دیم دهگ لینکانش په بازگین سایت سوء استفاده کنگ بیت.\nاگر که ای لینک اسپمی دور کنگ بینت،بله باز اذیت کننت.\n\nلهتی وهد به خصوصی وهدی که نوکین لینک وبی په یک صفحه اضافه بیت،ویکی شاید یک عکس رنگی یا هورت هورین متنی شما ار پیش داریت و چه شما لوٹیت پیش داشتگین کلمات وارد کنیت.\nچه آ جاهی که ای کاری سختنت په اتوماتیک کتن،آی واقعی ترین انسان اجازت دنت تا وتی نوشتانک دیم دهنت چه آ دیم گیشترین اسپمر و هکرآنء متوقف کنت.\n\nمتاسفانه شی شاید کاربرانء ناراحت کنت ته یک دید محدود یا استفاده کتن چه بروزرآن متنی و گپی.\nهنو ما را تواری جایگزین نیست.\nلطفا مدیران سایت تماس گریت په کمک اگر شی یک ناخواسته این جلوگیری چه دیم دهگ قانونی انت.\nدکمه 'back' ته وتی بروزر بجنیت دان په صفحه اصلاح تریت.",
+ "captcha-addurl-whitelist": " #<!-- leave this line exactly as it is --> <pre>\n# Syntax is as follows:\n# * Everything from a \"#\" character to the end of the line is a comment\n# * Every non-blank line is a regex fragment which will only match hosts inside URLs\n #</pre> <!-- leave this line exactly as it is -->",
+ "right-skipcaptcha": "اجرای کاران کپچا بی شی که چه طریق کپچا بروت"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/bcl.json b/www/wiki/extensions/ConfirmEdit/i18n/bcl.json
new file mode 100644
index 00000000..52583dfc
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/bcl.json
@@ -0,0 +1,24 @@
+{
+ "@metadata": {
+ "authors": [
+ "Filipinayzd",
+ "Geopoet"
+ ]
+ },
+ "captcha-edit": "Sa pagliwat kaining pahina, pakisimbag an simplehong sumada sa ibaba asin pakikaag an simbag sa laog nin kahon ([[Special:Captcha/help|more info]]):",
+ "captcha-desc": "Minatao nin mga tekniko para sa CAPTCHA tanganing protektaran kontra sa espam asin pagtutuod kan pasa-taramon",
+ "captcha-label": "CAPTCHA",
+ "captcha-addurl": "An saimong pagliwat minabale nin baguhong panluwas na mga kasugpunan.\nTanganing protektaran an wiki kontra sa awtomatikong espam, kami tabi minahagad saimo na simbagan an simplehong suma sa ibaba asin pakikaag an simbag sa laog nin kahon tanganing itagama an saimong pagliwat ([[Special:Captcha/help|more info]]):",
+ "captcha-badlogin": "Tanganing protektaran an wiki kontra sa awtomatikong pagbaak kan pasa-taramon, kami tabi minahagad saimo na simbagan an simplehong suma sa ibaba asin pakikaag an simbag sa laog nin kahon ([[Special:Captcha/help|more info]]):",
+ "captcha-createaccount": "Tanganing protektaran an wiki kontra sa awtomatikong pagmumukna nin panindog, kami tabi minahagad saimon na simbagan an simplehong suma sa ibaba asin pakikaag an simbag sa laog nin kahon ([[Special:Captcha/help|more info]]):",
+ "captcha-createaccount-fail": "Bakong tama o nawawara an koda sa kumpirmasyon.",
+ "captcha-create": "Tanganing makamukna nin pahina, pakisimbagan tabi an simpleng suma sa ibaba asin ikaag an simbag sa laog kan kahon ([[Special:Captcha/help|more info]]):",
+ "captcha-sendemail": "Tanganing protektaran an wiki kontra sa awtomatikong pag-eespam, kami tabi minahagad saimo na simbagan an simplehong suma sa ibaba asin pakikaag an simbag sa laog nin kahon ([[Special:Captcha/help|more info]]):",
+ "captcha-sendemail-fail": "Bakong tama o nawawara an koda sa kumpirmasyon.",
+ "captcha-disabledinapi": "Ining aksyon minahagad nin sarong captcha, kaya ini dae magigibo sa paagi kan API.",
+ "captchahelp-title": "Tabang sa Captcha",
+ "captchahelp-cookies-needed": "Kinakaipuhan mong paganahon an mga kokies sa saimong kilyawan para ini mapadalagan.",
+ "captchahelp-text": "An mga websityo na nag-aakseptar nin mga paskil gikan sa publiko, arog kaining wiki, paminsan pinag-aabuso nin mga para-espam na minagamit nin awtomatikong mga palindong tanganing maipaskil an saindang mga sugpon sa kadakulon na mga sityo. Mantang ining mga sugpon kan espam mapuwedeng pagtangkason, sinda baya sarong signipikanteng mga pasawayon.\n\nPaminsan, espesyalmente kunsoarin magdudugang nin baguhong mga sugpon sa web sa sarong pahina, an wiki mapatanaw saimo nin sarong imahe na may kolor o distortadong teksto asin maghagad saimo na itipa an mga tataramon na ipinatanaw. Mantang ini sarong gibohon na masakiton na i-awtomatiko, ini minatuggot sa kadakling mga tunay na tawo na himoon an saindang mga pamaskil mantang pinagpupundo an kadakling mga para-espam asin iba pang robotikong mga para-atake.\n\nSa kademalasan ini makakapagtao nin inkombeniyensya sa mga paragamit na igwang limitadong paghilingon o naggagamit nin base sa teksto o base sa pagtaram na mga kilyawan.\nSa momentong ini kami mayo nin pandangog na alternatibong makukua.\nPaki-kontak tabi an [[Special:ListAdmins|mga administrador kan sityo]] para sa katabangan kun ini dae pinag-aasahan na makapagpugol saimo sa paghihimo nin lehitimong mga aksyon.\n\nPinduta an \"pabalik\" na pindutan sa saimong kilyawan tanganing makabalik sa pahina nin paraliwat.",
+ "captcha-addurl-whitelist": "#<!-- pabayae ining linya na eksaktong siring sana --> <pre> \n# An sintaks iyo an mga minasunod: \n# * Gabos na bagay gikan sa sarong \"#\" na karakter sagkod sa tapos kaining linya iyo an sarong komento \n# * An lambang linya na bakong blangko iyo an sarong pragmentong regex na magtatampad sana nin mga parabunsod sa laog kan mga URLs \n#</pre> <!-- pabayae ining linya na eksaktong siring sana -->",
+ "right-skipcaptcha": "Himoon an kiblitong aksyon nin CAPTCHA na dae minaagi sa paagi kan CAPTCHA"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/be-tarask.json b/www/wiki/extensions/ConfirmEdit/i18n/be-tarask.json
new file mode 100644
index 00000000..cea639bc
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/be-tarask.json
@@ -0,0 +1,29 @@
+{
+ "@metadata": {
+ "authors": [
+ "EugeneZelenko",
+ "Jim-by",
+ "Red Winged Duck",
+ "Wizardist"
+ ]
+ },
+ "captcha-edit": "Каб рэдагаваць гэтую старонку, калі ласка, разьвяжыце наступнае заданьне і ўвядзіце адказ у поле ([[Special:Captcha/help|падрабязнасьці]]):",
+ "captcha-edit-fail": "CAPTCHA няслушная або адсутнічае.",
+ "captcha-desc": "Дадае мэтад CAPTCHA для абароны супраць спаму і падбору пароляў",
+ "captcha-label": "CAPTCHA",
+ "captcha-addurl": "Вашае рэдагаваньне ўтрымлівае новыя вонкавыя спасылкі.\nУ мэтах абароны ад аўтаматычнага спаму, мы просім вас разьвязаць наступнае заданьне і ўвесьці вынік у поле, каб захаваць зьмены ([[Special:Captcha/help|падрабязнасьці]]):",
+ "captcha-badlogin": "У мэтах абароны ад аўтаматычнага ўзлому пароляў, мы просім вас разьвязаць наступную задачу і ўвесьці вынік у поле ([[Special:Captcha/help|дадатковая інфармацыя]]):",
+ "captcha-createaccount": "У мэтах абароны ад аўтаматычнага стварэньня рахункаў, мы просім вас разьвязаць наступную задачу і ўвесьці вынік у поле ([[Special:Captcha/help|дадатковая інфармацыя]]):",
+ "captcha-createaccount-fail": "Код пацьверджаньня няслушны альбо адсутнічае.",
+ "captcha-create": "Каб стварыць старонку, калі ласка, разьвяжыце наступную задачу і ўвядзіце адказ у поле ([[Special:Captcha/help|падрабязнасьці]]):",
+ "captcha-sendemail": "У мэтах абароны супраць аўтаматычнага спаму, мы просім вас разьвязаць наступную задачу і ўвесьці адказ у поле ([[Special:Captcha/help|дадатковая інфармацыя]]):",
+ "captcha-sendemail-fail": "Код пацьверджаньня няслушны альбо адсутнічае.",
+ "captcha-disabledinapi": "Гэтае дзеяньне патрабуе праверкі captcha, і з-за гэтага ня можа быць выкананае праз API.",
+ "captchahelp-title": "Дапамога ў captcha",
+ "captchahelp-cookies-needed": "Вам трэба дазволіць файлы-кукі ў Вашым браўзэры, каб гэтая функцыя працавала.",
+ "captchahelp-text": "Вэб-сайты, якія прымаюць запісы ад грамадзкасьці, падобныя на {{GRAMMAR:вінавальны|{{SITENAME}}}}, часта атакуюцца спамэрамі, якія ўжываюць аўтаматызаваныя інструмэнты, каб зьмяшчаць свае спасылкі на шмат сайтаў.\nІ хаця гэтыя спасылкі могуць быць прыбраныя, яны выклікаюць значныя нязручнасьці.\n\nЧасам, асабліва калі Вы дадаеце новыя вонкавыя спасылкі на старонку, {{SITENAME}} можа паказаць Вам выяву з каляровым ці скажоным тэкстам і папрасіць увесьці гэты тэкст.\nПраз тое, што гэтае заданьне цяжка аўтаматызаваць, яно дазволіць большасьці рэальных людзей рабіць запісы, але спыніць большасьць спамэраў і іншых аўтаматызаваных робатаў.\n\nНа жаль, гэта можа выклікаць нязручнасьці для ўдзельнікаў з абмежаваньнямі па зроку і для тых, хто ўжывае тэкставыя ці моўныя браўзэры.\nНа гэты момант мы ня маем аўдыё-альтэрнатывы гэтай праверцы.\nКалі ласка, зьвяжыцеся з [[Special:ListAdmins|адміністратарамі]], калі гэтая праверка перашкаджае Вам рабіць слушныя запісы.\n\nНацісьніце кнопку «назад» у Вашым браўзэры, каб вярнуцца да рэдагаваньня старонкі.",
+ "captcha-addurl-whitelist": " #<!-- leave this line exactly as it is --> <pre>\n# Сынтаксіс наступны:\n# * Усё, што пачынаецца з «#» і да канца радку, зьяўляецца камэнтарам\n# * Усе непустыя радкі зьяўляюцца часткамі рэгулярнага выразу, які будзе выкарыстоўвацца толькі\n# ў дачыненьні да назваў сэрвэраў у вонкавых спасылках\n #</pre> <!-- leave this line exactly as it is -->",
+ "right-skipcaptcha": "выкананьне дзеяньняў без праверкі CAPTCHA, дзе яна патрабуецца",
+ "captcha-apihelp-param-captchaword": "Адказ на CAPTCHA",
+ "captcha-apihelp-param-captchaid": "CAPTCHA ID з папярэдняга запыту"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/be.json b/www/wiki/extensions/ConfirmEdit/i18n/be.json
new file mode 100644
index 00000000..b4a6d377
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/be.json
@@ -0,0 +1,24 @@
+{
+ "@metadata": {
+ "authors": [
+ "Yury Tarasievich",
+ "Хомелка",
+ "Чаховіч Уладзіслаў",
+ "Mechanizatar"
+ ]
+ },
+ "captcha-edit": "Для змянення гэтай старонцы, калі ласка, вырашыце наступную задачу ніжэй і ўвядзіце адказ у поле ([[Special:Captcha/help|больш падрабязна]]):",
+ "captcha-edit-fail": "Капча няправільныя або адсутнічае.",
+ "captcha-desc": "Забяспечвае метады CAPTCHA для абароны ад спаму і падбора пароля",
+ "captcha-label": "CAPTCHA",
+ "captcha-help": "Рашэнне капчы",
+ "captcha-info-help": "Апісанне капчы",
+ "captcha-id-label": "ID капчы",
+ "captcha-addurl": "Ваша праўка ўтрымлівае новыя вонкавыя спасылкі.\nУ мэтах абароны ад аўтаматычнага спаму, мы просім вас вырашыць наступнае заданне і ўвесці адказ у поле, каб захаваць змены ([[Special:Captcha/help|падрабязнасці]]):",
+ "captcha-badlogin": "У мэтах абароны ад аўтаматычнага ўзлому пароляў, мы просім вас вырашыць наступнае заданне і ўвесці адказ у поле ([[Special:Captcha/help|дадатковая інфармацыя]]):",
+ "captcha-createaccount": "У мэтах абароны ад аўтаматычнага стварэння ўліковых запісаў, мы просім вас вырашыць наступнае заданне і ўвесці адказ у поле ([[Special:Captcha/help|дадатковая інфармацыя]]):",
+ "captcha-create": "Каб стварыць старонку, вырашыце наступную задачу, што ніжэй, і ўпішыце адказ у адпаведнае поле ([[Special:Captcha/help|больш падрабязна]]):",
+ "captchahelp-title": "Даведка Капчы",
+ "captchahelp-cookies-needed": "Каб гэтая магчымасць працавала, належыць дазволіць у браўзеры апрацоўку квіткоў (\"кукі\").",
+ "captcha-addurl-whitelist": " #<!-- радок абавязкова пакінуць як ёсць (у т.л., з прагалам у пачатку) --> <pre>\n# Сінтаксіс наступны:\n# * Усё ад знаку \"#\" да канца радка гэта каментар\n# * Кожны непусты радок гэта частковы рэгулярны выраз, які параўноўваецца з адрасамі сервераў унутры URL-яў\n #</pre> <!-- радок абавязкова пакінуць як ёсць (у т.л., з прагалам у пачатку) -->"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/bg.json b/www/wiki/extensions/ConfirmEdit/i18n/bg.json
new file mode 100644
index 00000000..b6a5be29
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/bg.json
@@ -0,0 +1,25 @@
+{
+ "@metadata": {
+ "authors": [
+ "DCLXVI",
+ "Spiritia",
+ "StanProg",
+ "Vodnokon4e",
+ "Termininja"
+ ]
+ },
+ "captcha-edit": "За редактиране на страницата е необходимо да се реши задачата и да се въведе отговорът в кутията ([[Special:Captcha/help|повече информация]]):",
+ "captcha-edit-fail": "Погрешен или липсващ код за потвърждение.",
+ "captcha-desc": "Предоставя опростена captcha технология като защита срещу спам и налучкване на пароли",
+ "captcha-label": "CAPTCHA",
+ "captcha-addurl": "Вашата редакция съдържа нови външни препратки.\nЗа да защитим системата от автоматизиран спам, учтиво Ви молим да решите следната задача и да въведете отговора в текстовата кутия,\n за да може редакцията Ви да бъде съхранена ([[Special:Captcha/help|повече информация]]):",
+ "captcha-badlogin": "За да защитим системата от автоматизирано кракване на пароли, учтиво Ви молим да решите задача по-долу и да въведете отговора в текстовата кутия ([[Special:Captcha/help|повече информация]]):",
+ "captcha-createaccount": "За да защитим системата от автоматизирано създаване на акаунти, учтиво Ви молим да решите задача по-долу и да въведете отговора в текстовата кутия ([[Special:Captcha/help|повече информация]]):",
+ "captcha-createaccount-fail": "Погрешен или липсващ код за потвърждение.",
+ "captcha-create": "За да създадете страницата, моля решете задачата по-долу и въведете отговора в текстовата кутия ([[Special:Captcha/help|повече информация]]):",
+ "captcha-sendemail-fail": "Погрешен или липсващ код за потвърждение.",
+ "captcha-disabledinapi": "Това действие изисква CAPTCHA, следователно не може да бъде извършено през приложния програмен интерфейс.",
+ "captchahelp-title": "Помощ за CAPTCHA",
+ "captchahelp-cookies-needed": "За да работи това, необходимо е бисквитките на вашия браузър да са включени.",
+ "captchahelp-text": "Уеб сайтовете, които позволяват свободно да се редактира и добавя ново съдържание (като това уики), често са обект на атаки от страна на спамъри, които използват средства за автоматизирано редактиране за публикуване на препратки към много сайтове. Въпреки че тези препратки могат да бъдат премахнати, те са особено неприятни за потребителите.\n\nПонякога, особено когато се добавят нови препратки към страниците, е възможно уикито да покаже картинка с текст, който трябва да бъде въведен в посоченото поле. Тъй като това е стъпка, която е трудно да бъде прескочена при автоматизирано редактиране, тя затруднява и спира повечето спамъри и роботи, но допуска истинските потребителите да правят редакции.\n\nЗа съжаление тази стъпка може да затрудни незрящи потребители или потребители, които използват текстови или речеви браузъри. За момента системата не разполага с възможност за гласова алтернатива. Обърнете се за помощ към [[Special:ListAdmins|администратор на сайта]], ако това изискване на системата ви затруднява да допринасяте легитимно.\n\nНатиснете бутона „back“ на вашия браузър, за да се върнете към редактора на страници."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/bgn.json b/www/wiki/extensions/ConfirmEdit/i18n/bgn.json
new file mode 100644
index 00000000..e081ece5
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/bgn.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Baloch Afghanistan"
+ ]
+ },
+ "captcha-label": "کپچا"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/bho.json b/www/wiki/extensions/ConfirmEdit/i18n/bho.json
new file mode 100644
index 00000000..30660fab
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/bho.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Nepaboy"
+ ]
+ },
+ "captcha-label": "कैप्चा"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/bi.json b/www/wiki/extensions/ConfirmEdit/i18n/bi.json
new file mode 100644
index 00000000..6f5e7ccd
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/bi.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Fanjiayi"
+ ]
+ },
+ "captcha-label": "CAPTCHA"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/bn.json b/www/wiki/extensions/ConfirmEdit/i18n/bn.json
new file mode 100644
index 00000000..3efdc576
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/bn.json
@@ -0,0 +1,38 @@
+{
+ "@metadata": {
+ "authors": [
+ "Bellayet",
+ "Leemon2010",
+ "Nasir8891",
+ "Prometheus.pyrphoros",
+ "Usarker",
+ "Zaheen",
+ "Aftab1995",
+ "Aftabuzzaman"
+ ]
+ },
+ "captcha-edit": "এই নিবন্ধটি সম্পাদনা করতে দয়া করে নিচের কার্যটি সমাধান করুন এবং ফলাফলটি বাক্সটিতে প্রবেশ করান ([[Special:Captcha/help|আরও তথ্য]]):",
+ "captcha-edit-fail": "ক্যাপচা ভুল অথবা অনুপস্থিত।",
+ "captcha-desc": "স্প্যাম এবং পাসওয়ার্ড অনুমান প্রতিরোধে ক্যাপচা প্রযুক্তি ব্যবহার",
+ "captcha-label": "ক্যাপচা",
+ "captcha-addurl": "আপনার সম্পাদনায় নতুন বহিঃসংযোগ বিদ্যমান।\nস্বয়ংক্রিয় স্প্যামের বিরুদ্ধে সুরক্ষার খাতিরে অনুগ্রহ নিচের কার্যটি সমাধান করুন এবং উত্তরটি বাক্সে প্রবেশ করান ([[Special:Captcha/help|আরও তথ্য]]):",
+ "captcha-badlogin": "স্বয়ংক্রিয় পাসওয়ার্ড ক্র‌্যাকিং-এর বিরুদ্ধে সুরক্ষার খাতিরে অনুগ্রহ করে নিচের কার্যটি সমাধান করুন এবং উত্তরটি বাক্সে প্রবেশ করান ([[Special:Captcha/help|আরও তথ্য]]):",
+ "captcha-createaccount": "স্বয়ংক্রিয় অ্যাকাউন্ট সৃষ্টি রোধ করার জন্য অনুগ্রহ করে নিচের কার্যটি সমাধান করুন এবং উত্তরটি বাক্সে প্রবেশ করান ([[Special:Captcha/help|আরও তথ্য]]):",
+ "captcha-createaccount-fail": "ক্যাপচা ভুল অথবা অনুপস্থিত",
+ "captcha-create": "পাতাটি সৃষ্টি করতে চাইলে অনুগ্রহ করে নিচের কার্যটি সমাধান করুন এবং উত্তরটি বাক্সে প্রবেশ করান ([[Special:Captcha/help|আরও তথ্য]]):",
+ "captcha-sendemail": "স্বয়ংক্রিয় স্প্যাম থেকে উইকিকে সুরক্ষার জন্য, অনুগ্রহ করে নিচের কার্যটি সমাধান করুন এবং উত্তরটি বাক্সে প্রবেশ করান ([[Special:Captcha/help|আরও তথ্য]]):",
+ "captcha-sendemail-fail": "ক্যাপচা ভুল অথবা অনুপস্থিত",
+ "captcha-disabledinapi": "এই কাজটি করার জন্য একটি ক্যাপচা প্রয়োজন, তাই এটি এপিআই দ্বারা করা যাবে না।",
+ "captchahelp-title": "ক্যাপচা সাহায্য",
+ "captchahelp-cookies-needed": "এই কাজটি করার জন্য আপনাকে আপনার ব্রাউজারের কুকি সক্রিয় করতে হবে।",
+ "captchahelp-text": "যেসব ওয়েবসাইট পোস্টিং-এর জন্য উন্মুক্ত, যেমন এই উইকিটি, সেগুলি প্রায়ই স্প্যামারদের আক্রমণের শিকার হয়। স্প্যামাররা স্বয়ংক্রিয় সরঞ্জাম ব্যবহার করে তাদের সংযোগগুলি বহু সাইটে পোস্ট করে। এই স্প্যাম সংযোগগুলি মুছে ফেলা সম্ভব, কিন্তু এগুলি যথেষ্ট বিরক্তির উদ্রেক করে।\n\nকখনো কখনো, বিশেষ করে কোন পাতায় নতুন ওয়েব সংযোগ যোগ করার সময়, উইকিটি আপনাকে রঙিন বা বিকৃত টেক্সটবিশিষ্ট ছবি দেখিয়ে আপনাকে শব্দটি টাইপ করতে বলতে পারে। যেহেতু এই কাজটি স্বয়ংক্রিয়ভাবে সম্পাদন করা দুরূহ, তাই এই ব্যবস্থার ফলে প্রকৃত মানুষেরা পোস্ট করতে পারবেন কিন্তু বেশির ভাগ স্প্যামার বা রোবটভিত্তিক আক্রমণ বাধাপ্রাপ্ত হবে।\n\nযারা চোখে কম দেখতে পান কিংবা টেক্সটভিত্তিক বা উক্তিভিত্তিক ব্রাউজার ব্যবহার করছেন, দুর্ভাগ্যবশত এই ব্যবস্থাটি তাদের জন্য সমস্যার সৃষ্টি করবে। এই মুহূর্তে আমাদের কাছে এই ব্যবস্থাটির কোন অডিও বিকল্প নেই। যদি ব্যবস্থাটি আপনাকে বৈধ পোস্ট করতে অযাচিত বাধা দেয়, অনুগ্রহ করে [[Special:ListAdmins|সাইটের প্রশাসকদের]] কাছে সাহায্য চান।\n\nআপনি এখন ব্রাউজারের পিছন বোতাম চেপে পাতা সম্পাদকে ফেরত যেতে পারেন।",
+ "captcha-addurl-whitelist": " #<!-- এই লাইনটি যে রকম আছে ঠিক সেই রকম রেখে দিন --> <pre>\n# সিনট্যাক্স নিম্নরূপ:\n# * \"#\" ক্যারেক্টার থেকে শুরু হয়ে লাইনের শেষ পর্যন্ত সবকিছু একটি মন্তব্য\n# * খালি নয় এমন প্রতিটি লাইন একটি রেজেক্স খণ্ডাংশ যেটি URLগুলির ভেতরে হোস্টগুলির সাথে মিলে যাবে।\n #</pre> <!-- এই লাইনটি যে রকম আছে ঠিক সেই রকম রেখে দিন -->",
+ "right-skipcaptcha": "ক্যাপচাতে না গিয়ে ক্যাপচা ট্রিগারিং এর কাজ করুন",
+ "captcha-apihelp-param-captchaword": "ক্যাপচার উত্তর দেয়া",
+ "captcha-apihelp-param-captchaid": "পূর্ববর্তী অনুরোধ থেকে ক্যাপচা আইডি",
+ "confirmedit-preview-line": "লাইন নম্বর",
+ "confirmedit-preview-content": "বিষয়বস্তু",
+ "confirmedit-preview-validity": "বৈধতা",
+ "confirmedit-preview-valid": "বৈধ",
+ "confirmedit-preview-invalid": "অবৈধ"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/bqi.json b/www/wiki/extensions/ConfirmEdit/i18n/bqi.json
new file mode 100644
index 00000000..bb590149
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/bqi.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Mogoeilor"
+ ]
+ },
+ "captcha-label": "كپچا"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/br.json b/www/wiki/extensions/ConfirmEdit/i18n/br.json
new file mode 100644
index 00000000..5cc181ab
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/br.json
@@ -0,0 +1,32 @@
+{
+ "@metadata": {
+ "authors": [
+ "BrokenArrow",
+ "Fohanno",
+ "Fulup",
+ "VIGNERON",
+ "Y-M D"
+ ]
+ },
+ "captcha-edit": "A-raok gellout kemmañ ar bajenn-mañ e c'houlenner ouzhoc'h respont d'ar jedadenn eeun a-is ha lakaat an disoc'h er vaezienn ([[Special:Captcha/help|Petra eo se?]])",
+ "captcha-desc": "Pourchas a ra teknikoù CAPTCHA evit en em wareziñ diouzh ar strob hag an diskuliañ gerioù-tremen",
+ "captcha-label": "CAPTCHA",
+ "captcha-addurl": "Liammoù diavaez nevez zo bet ouzhpennet ganeoc'h. A-benn talañ ouzh ar strob emgefre skrivit disoc'h ar jedadennig eeun-mañ er stern : <br />([[Special:Captcha/help|Petra eo se?]])",
+ "captcha-badlogin": "A-benn talañ ouzh preizhadur emgefre ar gerioù-tremen e c'houlenner ouzhoc'h jediñ an tamm oberiadenn ha skrivañ an disoc'h anezhi er vaezienn a-is ([[Special:Captcha/help|Petra eo se ?]]):",
+ "captcha-createaccount": "A-benn hor sikour da dalañ ouzh ar c'hrouiñ kontoù emgefre, jedit an tamm oberiadenn ha skrivañ an disoc'h anezhi er vaezienn a-is ([[Special:Captcha/help|gouzout hiroc'h]]) :",
+ "captcha-createaccount-fail": "Pe e vank ar c'hod CAPTCHA pe ez eo fall.",
+ "captcha-create": "A-benn krouiñ ar bajenn, skrivit disoc'h ar jedadennig eeun-mañ er vaezienn : <br />([[Special:Captcha/help|Petra eo se?]])",
+ "captcha-sendemail": "Evit hor sikourda zizarbenn ar strob emgefre, sammit ar sifroù a-is ha skrivit an disoc'h er voest ([[Special:Captcha/help|gouzout hiroc'h]]) :",
+ "captcha-sendemail-fail": "Pe e vank ar c'hod CAPTCHA pe ez eo fall.",
+ "captcha-disabledinapi": "Evit an obererezh-mañ ez eus ezhomm ur captcha, dre-se ne c'hell ket bezañ graet dre an API.",
+ "captchahelp-title": "Skoazell Capcha",
+ "captchahelp-cookies-needed": "Ret eo deoc'h gweredekaet an toupinoù war ho merdeer Web evit ma'z afe en-dro.",
+ "captchahelp-text": "Alies e vez taget al lec'hiennoù a zegemer kemennadennoù a-berzh an holl, evel ar wiki-mañ, gant ar stroberien a implij ostilhoù emgefre evit postañ o liammoù war lec'hiennoù a bep seurt. \nHa pa c'hallfent bezañ diverket, kazus-mat ez int memes tra. \n\nA-wezhioù, dreist-holl pa vez ouzhpennet liammoù Web nevez war ur bajenn, e c'hallo ar wiki-mañ diskouez deoc'h ur skeudenn warni un tamm testenn liv pe a-dreuz. Goulennet e vo diganeoc'h skrivañ ar gerioù a welit. \nUn trevell start da emgefrekaat eo hemañ. Gant se e c'hallo an implijerien wirion postañ ar pezh a fell dezho tra ma vo lakaet un harz d'an darn vrasañ eus ar stroberien pe d'an dagerien robotek all. \n\nKoulskoude e c'hallo an implijerien berr o gweled pe ar re a implij merdeerioù diazezet war ar skrid pe war ar vouezh bezañ strafuilhet gant se. N'omp ket evit kinnig un diskoulm dre glevet evit c'hoazh. \nKit e darempred gant [[Special:ListAdmins|merourien al lec'hienn]] m'hoc'h eus diaesterioù evit kemer perzh abalamour d'an teknik-se. \n\nPouezit war bouton 'kent' ho merdeer evit distreiñ d'ar bajenn gemmañ.",
+ "captcha-addurl-whitelist": " #<!-- laoskit al linenn-mañ tre evel m'emañ --> <pre>\n# Setu penaos emañ an ereadur :\n# * Kement tra war-lerc'h an arouezenn \"#\" zo un urzhiad, betek penn all al linenn\n# * Kement linenn n'eo ket goullo zo ur c'hod regex a vo implijet e diabarzh al liammoù gourdskrid hepken\n #</pre> <!-- laoskit al linenn-mañ tre evel m'emañ -->",
+ "right-skipcaptcha": "Lañsañ a ra an oberoù captcha hep bezañ rediet da dremen drezañ",
+ "confirmedit-preview-line": "Niverenn linenn",
+ "confirmedit-preview-content": "Danvez",
+ "confirmedit-preview-validity": "Reizhder",
+ "confirmedit-preview-valid": "reizh",
+ "confirmedit-preview-invalid": "direizh"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/bs.json b/www/wiki/extensions/ConfirmEdit/i18n/bs.json
new file mode 100644
index 00000000..b92131bb
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/bs.json
@@ -0,0 +1,30 @@
+{
+ "@metadata": {
+ "authors": [
+ "BrokenArrow",
+ "CERminator",
+ "Palapa",
+ "Semso98",
+ "OC Ripper",
+ "Srdjan m"
+ ]
+ },
+ "captcha-edit": "Da biste uredili ovu stranicu, riješite sljedeći zadatak ispod i upišite odgovor u kutiju ([[Special:Captcha/help|detaljnije]]):",
+ "captcha-desc": "Omogućava CAPTCHA tehnike za zaštitu protiv spama i probijanja šifre",
+ "captcha-label": "CAPTCHA",
+ "captcha-addurl": "Vaša izmjena sadrži nove vanjske linkove.\nU cilju zaštite wikija od automatiziranog neželjenog sadržaja, molimo Vas da riješite naredni zadatak ispod i upišete rezultat u kutiju da biste sačuvali izmjenu ([[Special:Captcha/help|detaljnije]]):",
+ "captcha-badlogin": "U cilju zaštite wikija od automatiziranog probijanja lozinki, molimo naredni zadatak ispod i upišite rezultat u kutiju ([[Special:Captcha/help|detaljnije]]):",
+ "captcha-createaccount": "U cilju zaštite wikija od automatiziranog pravljenja računa, ljubazno Vas molimo da riješite naredni zadatak ispod i upišite odgovor u donju kutiju ([[Special:Captcha/help|detaljnije]]):",
+ "captcha-createaccount-fail": "Netačna ili nepotpuna CAPTCHA.",
+ "captcha-create": "Da biste napravili stranicu, riješite naredni zadatak ispod i upišite odgovor u donju kutiju ([[Special:Captcha/help|detaljnije]]):",
+ "captcha-sendemail": "U cilju zaštite wikija od automatiziranog postavljanja neželjenog sadržaja, ljubazno Vas molimo da riješite naredni zadatak ispod i upišete rezultat u kutiju ([[Special:Captcha/help|detaljnije]]):",
+ "captcha-sendemail-fail": "Netačan unos ili nedostajući CAPTCHA.",
+ "captcha-disabledinapi": "Ova akcija zahtjeva captchu, tako da se ne može izvršiti preko API.",
+ "captchahelp-title": "Pomoć u vezi s CAPTCHA-om",
+ "captchahelp-cookies-needed": "Da bi ste ovo mogli raditi potrebno je da omogućite kolačiće (cookies) u Vašem pregledniku.",
+ "captchahelp-text": "Websajtovi koji podržavaju slanje sadržaja iz javnosti, kao što je ovaj viki, često zloupotrebljavaju vandali koji koriste automatizovane alate da šalju svoje linkove ka mnogim sajtovima.\nIako se ovi neželjeni linkovi mogu ukloniti, one ipak zadaju veliku muku.\n\nPonekad, pogotovo kad se dodaju novi internet linkovi na stranicu, wiki softver Vam može pokazati sliku obojenog i izvrnutog teksta i tražiti da ukucate traženu riječ.\nPošto je teško automatizovati ovakav zadatak, on omogućuje svim pravim ljudima da vrše svoje izmjene, ali će zato spriječiti vandale i ostale robotske napadače.\n\nNažalost, ovo može da bude nepovoljno za korisnike sa ograničenim vidom i za one koji koriste preglednike bazirane na tekstu ili govoru.\nU ovom trenutku, audio alternativa nije dostupna.\nMolimo Vas da kontaktirate [[Special:ListAdmins|administratore sajta]] radi pomoći ako Vas ovo neočekivano ometa u pravljenju dobrih izmjena.\n\nKliknite 'nazad' ('back') dugme vašeg preglednika da se vratite na polje za unos teksta.",
+ "captcha-addurl-whitelist": " #<!-- ostavite ovaj red onakav kakav je --> <pre>\n# Sintaksa je slijedeća:\n# * Sve od znaka \"#\" do kraja reda je komentar\n# * Svaki neprazni red je regex fragment koji će odgovarati samo domaćinima unutar URLova\n #</pre> <!-- ostavite ovaj red onakav kakav je -->",
+ "right-skipcaptcha": "Izvođenje radnji koje zahtijevaju unos CAPTCHA kôda bez unošenja CAPTCHA kôda",
+ "confirmedit-preview-line": "Broj reda",
+ "confirmedit-preview-content": "Sadržaj"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/ca.json b/www/wiki/extensions/ConfirmEdit/i18n/ca.json
new file mode 100644
index 00000000..1968c38a
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/ca.json
@@ -0,0 +1,28 @@
+{
+ "@metadata": {
+ "authors": [
+ "Arnaugir",
+ "El libre",
+ "Paucabot",
+ "SMP",
+ "Ssola",
+ "Toniher"
+ ]
+ },
+ "captcha-edit": "Per a poder modificar aquesta pàgina cal que resolgueu aquesta simple suma i introduïu el resultat en el quadre ([[Special:Captcha/help|més informació]]):",
+ "captcha-desc": "Proporciona tècniques CAPTCHA per a protegir contra la publicitat no desitjada i l'obtenció de contrasenyes",
+ "captcha-label": "CAPTCHA",
+ "captcha-addurl": "La vostra modificació conté enllaços externs nous.\nCom a protecció contra la brossa de propaganda automàtica, cal que resolgueu aquesta simple suma i introduïu el resultat en el quadre a continuació ([[Special:Captcha/help|més informació]]):",
+ "captcha-badlogin": "Com a protecció contra l'obtenció automatitzada de contrasenyes, cal que resolgueu aquesta simple suma i introduïu el resultat en el quadre a continuació ([[Special:Captcha/help|més informació]]):",
+ "captcha-createaccount": "Com a protecció contra la creació automàtica de comptes d'usuari, cal que resolgueu aquesta simple suma i introduïu el resultat en el quadre a continuació ([[Special:Captcha/help|més informació]]):",
+ "captcha-createaccount-fail": "Hi manca el CAPTCHA o bé eś incorrecte.",
+ "captcha-create": "La vostra modificació conté enllaços externs nous. Com a protecció contra la brossa de propaganda automàtica, cal que resolgueu aquesta simple suma i introduïu el resultat en el quadre a continuació ([[Special:Captcha/help|més informació]]):",
+ "captcha-sendemail": "Com a protecció contra la brossa de propaganda automàtica, cal que resolgueu aquesta simple suma i introduïu el resultat en el quadre a continuació ([[Special:Captcha/help|més informació]]):",
+ "captcha-sendemail-fail": "Hi manca el CAPTCHA o bé és incorrecte.",
+ "captcha-disabledinapi": "Aquesta acció requereix un captcha (codi d'imatge), per la qual cosa no es pot realitzar a través de l'API.",
+ "captchahelp-title": "Ajuda amb el sistema captcha",
+ "captchahelp-cookies-needed": "Heu d'activar les galetes al vostre navegador per a que funcioni.",
+ "captchahelp-text": "Els webs que accepten la publicació de missatges per part del seu públic, com aquest wiki, són sovint víctimes de spam per part de robots automàtics que hi posen enllaços cap als seus webs. Aquests enllaços es poden anar eliminant, però suposen un important destorb.\n\nQuan creeu nous comptes d'usuari o afegiu enllaços a una pàgina se us demanarà que respongueu una pregunta fàcil, una suma o que teclegeu el text que apareix en una imatge distorsionada. És difícil programar un robot per aquest tipus de tasques, i gràcies a açò, es poden aturar la majoria d'atacants robots.\n\nMalauradament, aquest sistema pot suposar un inconvenient per a usuaris amb problemes de visió o que utilitzin navegadors de text simple o de veu. Actualment no disposem de cap alternativa auditiva disponible. Contacteu els [[Special:ListAdmins|administradors del web]] si aquest sistema us impedeix de fer edicions legítimes.\n\nNecessitareu tenir les galetes (''cookies'') activades al vostre navegador per a realitzar aquestes accions.\n\nCliqueu el botó de retrocedir del vostre navegador per a tornar al formulari.",
+ "captcha-addurl-whitelist": " #<!-- deixeu aquesta línia tal com està --> <pre>\n# La sintaxi és la següent:\n# * Totes les línies que comencen amb un # son considerades comentaris\n# * Tota línia no buida és un fragment d'expressió regular (regexp) que enllaçarà amb els hosts de les URL\n #</pre> <!-- deixeu aquesta línia tal com està -->",
+ "right-skipcaptcha": "Fer les accions que requereixen de captcha sense haver-lo de passar"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/cdo.json b/www/wiki/extensions/ConfirmEdit/i18n/cdo.json
new file mode 100644
index 00000000..b082bd8d
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/cdo.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "Yejianfei",
+ "唐吉訶德的侍從"
+ ]
+ },
+ "captcha-edit": "Nṳ̄ gă-tiĕng lāu sĭng gì nguôi-buô lièng-giék. Ôi lāu ê̤ṳ-huòng ô tiàng-sê̤ṳ cê̤ṳ-dông huák-buó bóng-só̤ séng-sék (''spam''), kī-dâe̤ng nṳ̄ gié-sáung â-dā̤ gāng-dăng gì gă-huák, gái ciŏng dák-áng siā diē gáh-gáh diē-sié ([[Special:Captcha/help|gó sâ̤ séng-sék]]):",
+ "captchahelp-title": "驗證碼幫助",
+ "captchahelp-text": "Chiông wiki dēng kăi-huóng gì uōng-câng sèu-sèu ké̤ṳk bóng-só̤ séng-sék huák-buó-nè̤ng (\\'\\'spammer\\'\\') páh-chā: ĭ-gáuk-nè̤ng kĕk cê̤ṳ-dông-huá gì gă-sĭ táik bóng-só̤ guōng-gó̤ lièng gáu ĭ gì uōng-câng. Chŭi-iòng cī piĕ bóng-só̤ séng-sék â̤ dù lâi gì, dáng-sê iâ cêng-go̤ tō̤-iéng.\n\nÔ sèng-hâiu, dĕk-biék sê găk nṳ̄ gă-tiĕng sĭng gì nguôi-buô lièng-giék gáu wiki gì sèng-hâiu, wiki â̤ hiēng-sê sáik-ké gáuk-iông hĕ̤k-ciā sê hìng-câung ô gāi-biéng gì ùng-cê dù-chiông, giéu nṳ̄ páh diē nṳ̄ sū káng giéng gì cê hĕ̤k sṳ̀ (hô̤ lō̤ \"captcha\"). Ĭng-ôi gĭ-ké-nè̤ng mâ̤ chiàng ciā êng-ô, gó-chṳ̄ cêu â̤ huòng-cī duâi-buô-hông iù gĭ-ké-nè̤ng huák-buó bóng-só̤ séng-sék (bók-guó, cĭng nè̤ng huák-buó bóng-só̤ séng-sék, ciā huŏng-huák huòng mâ̤ lì).\n\nCĭng mì-hâng, dó̤i hī piĕ mĕ̤k-ciŭ mâ̤ hō̤, hĕ̤k-ciā sê sāi-ê̤ṳng gĭ-ṳ̀ ùng-buōng (\\'\\'text-based\\'\\') hĕ̤k gĭ-ṳ̀ siăng-ĭng (\\'\\'speech-based\\'\\') gì báuk-lāng-ké (\\'\\'browser\\'\\') gì ê̤ṳng-hô lì gōng, cūng-kuāng cĭng mâ̤ lê-biêng. Cī òng, nàng-gă gó mò̤ 1 cṳ̄ng gá hō̤ gì huŏng-huák. Nâ sê gōng, cuòi īng-hiōng nṳ̄ ciáng-siòng piĕng-cĭk, chiāng nṳ̄ lièng-hiê guāng-lī-uòng.\n\nÔi lāu captcha gì ciáng-siòng gĕ̤ng-cáuk, nṳ̄ diŏh páh kŭi báuk-lāng-ké gì cookie.\n\nBuóh diōng kó̤ piĕng-cĭk hiĕk-miêng, áik \"diōng kó̤ sèng 1 hiĕk\" (\\'\\'back\\'\\')."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/ce.json b/www/wiki/extensions/ConfirmEdit/i18n/ce.json
new file mode 100644
index 00000000..57612779
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/ce.json
@@ -0,0 +1,10 @@
+{
+ "@metadata": {
+ "authors": [
+ "Умар"
+ ]
+ },
+ "captcha-desc": "Спамах ларо а, пароль харжа а CAPTCHA таронаш хуьлуьйту",
+ "captcha-label": "CAPTCHA",
+ "right-skipcaptcha": "CAPTCHA-хьажар кхочушдар, CAPTCHA чекхдалар доцуш"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/ceb.json b/www/wiki/extensions/ConfirmEdit/i18n/ceb.json
new file mode 100644
index 00000000..3a0271b3
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/ceb.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Bentong Isles"
+ ]
+ },
+ "captcha-label": "CAPTCHA"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/ch.json b/www/wiki/extensions/ConfirmEdit/i18n/ch.json
new file mode 100644
index 00000000..6f5e7ccd
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/ch.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Fanjiayi"
+ ]
+ },
+ "captcha-label": "CAPTCHA"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/chr.json b/www/wiki/extensions/ConfirmEdit/i18n/chr.json
new file mode 100644
index 00000000..58760534
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/chr.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "R12ntech"
+ ]
+ },
+ "captcha-label": "CAPTCHA"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/ckb.json b/www/wiki/extensions/ConfirmEdit/i18n/ckb.json
new file mode 100644
index 00000000..cd128a87
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/ckb.json
@@ -0,0 +1,10 @@
+{
+ "@metadata": {
+ "authors": [
+ "Calak",
+ "Muhammed taha"
+ ]
+ },
+ "captcha-label": "کاپچا",
+ "right-skipcaptcha": "جێبەجێکردنی کردەوەکانی پێویست بە کاپچا بەبێ بەکارھێنانی کاپچا"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/cs.json b/www/wiki/extensions/ConfirmEdit/i18n/cs.json
new file mode 100644
index 00000000..23622142
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/cs.json
@@ -0,0 +1,42 @@
+{
+ "@metadata": {
+ "authors": [
+ "Danny B.",
+ "Li-sung",
+ "Matěj Grabovský",
+ "Mormegil",
+ "Dvorapa",
+ "Ilimanaq29"
+ ]
+ },
+ "captcha-edit": "Abyste mohli editovat tuto stránku, musíte vyřešit následující úkol níže a napsat výsledek do políčka ([[Special:Captcha/help|Co tohle znamená?]]):",
+ "captcha-edit-fail": "Chybějící či neplatný potvrzovací kód.",
+ "captcha-desc": "Poskytuje techniky CAPTCHA pro ochranu před spamem a hádáním hesel",
+ "captcha-label": "CAPTCHA",
+ "captcha-help": "Řešení CAPTCHA.",
+ "captcha-info-help": "Popis CAPTCHA.",
+ "captcha-id-label": "ID CAPTCHA",
+ "captcha-id-help": "Tato hodnota by měla být beze změny poslána zpět.",
+ "captcha-addurl": "Vaše editace obsahuje nové externí odkazy.\nV zájmu ochrany této wiki před automatickým spamováním vás prosíme o vyřešení následujícího úkolu a napsání výsledku, abychom mohli vaši editaci uložit. ([[Special:Captcha/help|Co tohle znamená?]])",
+ "captcha-badlogin": "V zájmu ochrany této wiki proti automatickým pokusům uhodnout heslo vás prosíme o vyřešení následujícího úkolu a napsání výsledku. ([[Special:Captcha/help|Co tohle znamená?]])",
+ "captcha-createaccount": "V zájmu ochrany této wiki před automatickým vytvářením účtů vás prosíme o vyřešení následujícího úkolu a napsání výsledku. ([[Special:Captcha/help|Co tohle znamená?]])",
+ "captcha-createaccount-fail": "Chybějící či neplatný potvrzovací kód.",
+ "captcha-create": "Abyste mohli založit stránku, musíte vyřešit následující úkol níže a napsat výsledek do políčka ([[Special:Captcha/help|Co tohle znamená?]]):",
+ "captcha-sendemail": "V zájmu ochrany této wiki před automatickým spamováním vás prosíme o vyřešení následujícího úkolu a napsání výsledku. ([[Special:Captcha/help|Co tohle znamená?]])",
+ "captcha-sendemail-fail": "Chybějící či neplatný potvrzovací kód.",
+ "captcha-disabledinapi": "Tato operace vyžaduje splnění CAPTCHA, takže ji nelze provést prostřednictvím API.",
+ "captcha-error": "Ověření CAPTCHA se nezdařilo kvůli vnitřní chybě: $1",
+ "captchahelp-title": "Nápověda ke captcha",
+ "captchahelp-cookies-needed": "Aby to fungovalo, musíte mít ve svém prohlížeči zapnuty cookies.",
+ "captchahelp-text": "Webové stránky, do kterých mohou přispívat jejich návštěvníci (jako například tato wiki), jsou často terčem spammerů, kteří pomocí automatických nástrojů vkládají své odkazy na velké množství stránek. Přestože lze tento spam odstranit, představuje nepříjemné obtěžování.\n\nNěkdy, zvláště při přidávání nových webových odkazů, vám může wiki ukázat obrázek barevného či pokrouceného textu a požádat vás o opsání zobrazených znaků. Jelikož takovou úlohu lze jen těžko automatizovat, skuteční lidé mohou dále přispívat, zatímco většinu spammerů a jiných robotických útočníků to zastaví.\n\nBohužel to však může představovat nepříjemný problém pro uživatele se zrakovým postižením či uživatele používající textové prohlížeče či hlasové čtečky. V současné době nemáme alternativní zvukovou verzi. Kontaktujte prosím [[Special:ListAdmins|správce serveru]], pokud vám to brání v užitečných příspěvcích a potřebujete pomoc.\n\nPro návrat na předchozí stránku stiskněte ve svém prohlížeči tlačítko „zpět“.",
+ "captcha-addurl-whitelist": " #<!-- Nechte tento řádek přesně tak jak je --> <pre>\n# Syntaxe je následující:\n# * Všechno od znaku „#“ do konce řádku je komentář\n# * Každý neprázdný řádek je fragment regulárního výrazu, který se aplikuje pouze na název stroje v URL\n #</pre> <!-- Nechte tento řádek přesně tak jak je -->",
+ "right-skipcaptcha": "Vykonávání akcí spojených s CAPTCHA bez nutnosti jejího řešení",
+ "captcha-apihelp-param-captchaword": "Odpověď na CAPTCHA",
+ "captcha-apihelp-param-captchaid": "ID CAPTCHA z předchozího požadavku",
+ "confirmedit-preview-line": "Číslo řádku",
+ "confirmedit-preview-content": "Obsah",
+ "confirmedit-preview-validity": "Platnost",
+ "confirmedit-preview-valid": "platný",
+ "confirmedit-preview-invalid": "neplatný",
+ "confirmedit-preview-description": "Následující tabulka zobrazuje seznam řádků na této stránce a zda se jedná o platné IP adresy či rozsahy adres. Pokud je řádka platná IP adresa nebo rozsah, bude osvobozena od CAPTCHA, ale neplatné řádky budou ignorovány. Příkladem platného rozsahu IP adres by bylo 69.208.0.0/16, což pokrývá adresy od 69.208.0.0 do 69.208.255.255. [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Range_blocks#Calculating_the_CIDR_suffix Více informací] k počítání rozsahů IP adres."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/csb.json b/www/wiki/extensions/ConfirmEdit/i18n/csb.json
new file mode 100644
index 00000000..d7e5113f
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/csb.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Kaszeba"
+ ]
+ },
+ "captcha-label": "CAPTCHA"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/cv.json b/www/wiki/extensions/ConfirmEdit/i18n/cv.json
new file mode 100644
index 00000000..4c2f2683
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/cv.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Chuvash2014"
+ ]
+ },
+ "captcha-label": "CAPTCHA"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/cy.json b/www/wiki/extensions/ConfirmEdit/i18n/cy.json
new file mode 100644
index 00000000..6f506946
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/cy.json
@@ -0,0 +1,23 @@
+{
+ "@metadata": {
+ "authors": [
+ "Lloffiwr"
+ ]
+ },
+ "captcha-edit": "Er mwyn gallu golygu'r dudalen, gwnewch y swm isod a gosodwch y canlyniad yn y blwch ([[Special:Captcha/help|rhagor o wybodaeth]]):",
+ "captcha-desc": "Yn gweithredu technegau CAPTCHA i arbed rhag sbam a dyfalu cyfrineiriau",
+ "captcha-label": "CAPTCHA",
+ "captcha-addurl": "Mae eich golygiad yn cynnwys cysylltiadau allanol newydd. \nEr mwyn gwarchod y wici rhag peiriant sbam, byddwch gystal â theipio cyfanswm y swm canlynol yn y blwch isod i roi eich golygiad ar gadw ([[Special:Captcha/help|mwy o wybodaeth]]):",
+ "captcha-badlogin": "Er mwyn arbed y wici rhag peiriannau datrys cyfrineiriau, byddwch gystal â gwneud y swm syml isod a gosod yr ateb yn y blwch ([[Special:Captcha/help|rhagor o wybodaeth]]):",
+ "captcha-createaccount": "Er mwyn arbed y wici rhag peiriannau dechrau cyfrifon, byddwch gystal â gwneud y swm syml isod a gosod yr ateb yn y blwch ([[Special:Captcha/help|mwy o wybodaeth]]):",
+ "captcha-createaccount-fail": "CAPTCHA ar goll neu'n anghywir.",
+ "captcha-create": "Er mwyn gallu creu'r dudalen, gwnewch y swm isod a gosodwch y canlyniad yn y blwch ([[Special:Captcha/help|rhagor o wybodaeth]]):",
+ "captcha-sendemail": "Er mwyn arbed y wici rhag sbamio awtomatig, byddwch gystal â gwneud y swm syml isod ac ysgrifennu'r ateb yn y blwch ([[Special:Captcha/help|rhagor o wybodaeth]]):",
+ "captcha-sendemail-fail": "CAPTCHA yn anghywir neu yn eisiau.",
+ "captcha-disabledinapi": "Mae angen \"captcha\" i gyflawni'r weithred hon, felly nid oes modd ei gyflawni trwy'r API.",
+ "captchahelp-title": "Cymorth \"captcha\"",
+ "captchahelp-cookies-needed": "Er mwyn i hyn weithio mae'n rhaid bod cookies wedi eu galluogi ar eich gwe-lywiwr.",
+ "captchahelp-text": "Yn anffodus, mae safleoedd gwe fel y wici hon, sy'n caniatau i'r cyhoedd ysgrifennu iddi, yn darged beunyddiol i sbamwyr sy'n defnyddio rhaglenni arbennig i bostio eu cysylltiadau ar wefannau lu. Gellir dileu'r dolenni o'r tudalennau, ond byddai hynny'n waith trafferthus.\n\nO dro i dro, yn enwedig wrth ychwanegu dolenni at safleoedd gwe eraill, fe fydd y safle hon yn dangos delwedd o destun, ac fe fydd yn rhaid i chi deipio'r geiriau a ddangosir. Mae hyn yn dasg anodd iawn i raglenni cyfrifiadurol, felly dylai'r rhan fwyaf o olygwyr go iawn gyflawni'r dasg yn ddi-drafferth, yn wahanol i'r rhaglenni sbam.\n\nYn anffodus, mae hyn yn creu trafferthion i'r rhai sydd yn defnyddio porwyr testun neu borwyr sain, neu sydd yn colli eu golwg.\nAr hyn o bryd nid oes fersiwn sain ar gael.\nCysylltwch â [[Special:ListAdmins|gweinyddwyr y safle]] os ydi'r nodwedd hon yn eich rhwystro rhag ychwanegu golygiadau dilys.\n\nGwasgwch botwm 'nôl' eich porwr er mwyn dychwelyd at y dudalen golygu.",
+ "captcha-addurl-whitelist": "#<!-- leave this line exactly as it is --> <pre>\n#\n# Dyma'r gystrawen:\n# * Mae popeth o nod \"#\" hyd at ddiwedd y llinell yn sylwad\n# * Mae pob llinell nad yw'n wag yn ddarn regex sydd ddim ond yn cydweddu\n# * gwesteiwyr tu mewn i gyfeiriadau URL\n\n #</pre> <!-- leave this line exactly as it is -->",
+ "right-skipcaptcha": "Gwneud rhyw weithred, sy'n arfer deffro meddalwedd y captcha, heb ei ddeffro."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/da.json b/www/wiki/extensions/ConfirmEdit/i18n/da.json
new file mode 100644
index 00000000..b6cede5a
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/da.json
@@ -0,0 +1,28 @@
+{
+ "@metadata": {
+ "authors": [
+ "Aputtu",
+ "Byrial",
+ "Christian List",
+ "Hylle",
+ "Kaare",
+ "Peter Alberti"
+ ]
+ },
+ "captcha-edit": "For at redigere denne side, skal du give svaret på regnestykket nedenfor, og angive resultatet i feltet under det. ([[Special:Captcha/help|mere information]]):",
+ "captcha-desc": "Giver CAPTCHA-teknikker til at beskytte mod spam og gætning af adgangskoder",
+ "captcha-label": "CAPTCHA",
+ "captcha-addurl": "Din redigering tilføjer nye eksterne henvisninger.\nSom beskyttelse af wikien mod automatiseret spam, skal du løse det enkle regnestykke nedenfor og skrive resultatet i boksen, for at kunne gemme din redigering ([[Special:Captcha/help|flere oplysninger]]):",
+ "captcha-badlogin": "For at beskytte wikien mod automatiseret adgangskodegætning, skal du løse det enkle regnestykke nedenfor og skrive resultatet i boksen ([[Special:Captcha/help|flere oplysninger]]):",
+ "captcha-createaccount": "For at beskytte wikien mod automatisk oprettelse af brugernavne, skal du løse det enkle regnestykke nedenfor og skrive resultatet i boksen ([[Special:Captcha/help|flere oplysninger]]):",
+ "captcha-createaccount-fail": "Forkert eller manglende CAPTCHA.",
+ "captcha-create": "For at oprette en ny side, skal du give svaret på regnestyket nedenfor, og angive resultatet i feltet under det. ([[Special:Captcha/help|mere information]]):",
+ "captcha-sendemail": "For at beskytte wikien mod automatisk spamning, skal du løse det enkle regnestykke nedenfor og skrive resultatet i boksen ([[Special:Captcha/help|flere oplysninger]]):",
+ "captcha-sendemail-fail": "Forkert eller manglende CAPTCHA.",
+ "captcha-disabledinapi": "Denne handling kræver en captcha, så det ikke kan udføres via API'en.",
+ "captchahelp-title": "Captcha-hjælp",
+ "captchahelp-cookies-needed": "Din browser skal have cookies slået til, før dette kan virke.",
+ "captchahelp-text": "Websites der accepterer indhold fra offentligheden, bliver ofte udsat for angreb fra spammere. Disse angreb sker med automatiske værktøjer, der anbringer de samme links på et stort antal websites på kort tid. Selvom disse links kan fjernes, er de en vedligeholdelsesmæssig byrde.\n\nI visse tilfælde, specielt når der tilføjes nye links til denne wiki, vil softwaren vise dig et billede af et stykke forvredet og sløret tekst. Du skal indtaste det ord, der vises, før du kan gennemføre handlingen. Formålet er at skelne mellem mennesker og automatiserede værktøjer, da de sidste har meget svært ved at genkende ordene.\n\nDesværre kan dette medføre problemer for svagtseende brugere, og brugere der bruger software der oplæser indholdet af siden. For øjeblikket findes der ikke et lydbaseret alternativ. Kontakt venligst en [[Special:ListAdmins|administrator]] med henblik på at få hjælp, hvis dette forhindrer tilføjelsen af godartet materiale.\n\nTryk på 'tilbage'-knappen i din browser for at returnere til redigeringssiden.",
+ "captcha-addurl-whitelist": " #<!-- Undlad at rette denne linie --> <pre>\n# Vejledning:\n# * Alt fra et \"#\"-tegn til slutningen af en linie er en kommentar\n# * Alle ikke-blanke linier benyttes som regulært udtryk, der anvendes på hostnavne i URLer\n #</pre> <!-- Undlad at rette denne linie -->",
+ "right-skipcaptcha": "Udføre handlinger som normalt kræver \"captcha\"-bekræftelse uden at bruge \"captcha\""
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/de-formal.json b/www/wiki/extensions/ConfirmEdit/i18n/de-formal.json
new file mode 100644
index 00000000..981338e0
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/de-formal.json
@@ -0,0 +1,17 @@
+{
+ "@metadata": {
+ "authors": [
+ "Imre",
+ "Kghbln",
+ "Raimond Spekking",
+ "The Evil IP address"
+ ]
+ },
+ "captcha-edit": "Zur Bearbeitung der Seite lösen Sie die nachfolgende Rechenaufgabe und tragen Sie das Ergebnis in das Feld unten ein [[Special:Captcha/help|(Fragen oder Probleme?)]].",
+ "captcha-addurl": "Ihre Bearbeitung enthält neue externe Links.\nUm das Wiki vor automatisiertem Spam zu schützen, bitten wir Sie die untenstehende einfache Rechenaufgabe zu lösen und Ihre Antwort in das Feld einzugeben, damit Ihre Bearbeitung gespeichert werden kann ([[Special:Captcha/help|mehr Informationen …]]):",
+ "captcha-badlogin": "Um das Wiki vor der automatisierten Kompromittierung der Benutzerkonten zu schützen, bitten wir Sie die untenstehende einfache Rechenaufgabe zu lösen und Ihre Antwort in das Feld einzugeben ([[Special:Captcha/help|mehr Informationen …]]):",
+ "captcha-createaccount": "Um das Wiki vor der automatisierten Erstellung von Benutzerkonten zu schützen, bitten wir Sie die untenstehende einfache Rechenaufgabe zu lösen und Ihre Antwort in das Feld einzugeben ([[Special:Captcha/help|mehr Informationen …]]):",
+ "captcha-create": "Zur Erstellung der Seite lösen Sie die nachfolgende Rechenaufgabe und tragen Sie das Ergebnis in das Feld unten ein [[Special:Captcha/help|(Fragen oder Probleme?)]].",
+ "captcha-sendemail": "Um das Wiki vor automatisiertem Spam zu schützen, bitten wir Sie die untenstehende einfache Rechenaufgabe zu lösen und Ihre Antwort in das Feld einzugeben ([[Special:Captcha/help|mehr Informationen …]]):",
+ "captchahelp-text": "Internetangebote, die für Beiträge von praktisch jedem offen sind — so wie dieses Wiki — werden oft von Spammern missbraucht, die ihre Links automatisch auf vielen Webseiten platzieren. Diese Spam-Links können wieder entfernt werden, sie sind aber ein erhebliches Ärgernis.\n\nIn manchen Fällen, insbesondere beim Hinzufügen von neuen Weblinks zu einer Seite, kann es vorkommen, dass dieses Wiki ein Bild mit einem farbigen und verzerrten Text anzeigt und dazu auffordert, die angezeigten Wörter einzutippen.\nDa eine solche Aufgabe nur schwer automatisch erledigt werden kann, werden dadurch die meisten Spammer, die mit automatischen Werkzeugen arbeiten, gestoppt, wogegen menschliche Benutzer ihren Beitrag absenden können.\n\nLeider kann dies zu Schwierigkeiten für Personen führen, die über eine eingeschränkte Sehfähigkeit verfügen oder text- oder sprachbasierte Browser verwenden. Aktuell sind keine Audio-Captchas verfügbar.\n\nBitte kontaktieren Sie einen [[Special:ListAdmins|Administratoren]] für weitere Hilfe, wenn dies es unmöglich macht, erwünschte Bearbeitungen vorzunehmen.\n\nDer „Zurück“-Knopf des Browsers führt zurück zum Bearbeitungsfenster."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/de.json b/www/wiki/extensions/ConfirmEdit/i18n/de.json
new file mode 100644
index 00000000..f1883a1c
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/de.json
@@ -0,0 +1,43 @@
+{
+ "@metadata": {
+ "authors": [
+ "Imre",
+ "Kghbln",
+ "Metalhead64",
+ "MichaelFrey",
+ "Raimond Spekking",
+ "The Evil IP address",
+ "Umherirrender"
+ ]
+ },
+ "captcha-edit": "Zur Bearbeitung der Seite löse bitte die nachfolgende Aufgabe und trage die Antwort in das Feld ein [[Special:Captcha/help|(Fragen oder Probleme?)]].",
+ "captcha-edit-fail": "Falsches oder fehlendes CAPTCHA.",
+ "captcha-desc": "Ermöglicht verschiedene CAPTCHA-Techniken zum Schutz vor Spam und dem Erraten von Passwörtern",
+ "captcha-label": "CAPTCHA",
+ "captcha-help": "Lösung des CAPTCHAs.",
+ "captcha-info-help": "Beschreibung des CAPTCHAs.",
+ "captcha-id-label": "CAPTCHA-Kennung",
+ "captcha-id-help": "Dieser Wert sollte unverändert zurückgesandt werden.",
+ "captcha-addurl": "Deine Bearbeitung enthält neue externe Links.\nUm das Wiki vor automatisiertem Spam zu schützen, bitten wir dich, die folgende Aufgabe zu lösen und deine Antwort in das Feld einzugeben, damit deine Bearbeitung gespeichert werden kann ([[Special:Captcha/help|mehr Informationen …]]):",
+ "captcha-badlogin": "Um das Wiki vor der automatisierten Kompromittierung der Benutzerkonten zu schützen, bitten wir dich, die folgende Aufgabe zu lösen und deine Antwort in das Feld einzugeben ([[Special:Captcha/help|mehr Informationen …]]):",
+ "captcha-createaccount": "Um das Wiki vor der automatisierten Erstellung von Benutzerkonten zu schützen, bitten wir dich, die untenstehende Aufgabe zu lösen und deine Antwort in das Feld einzugeben ([[Special:Captcha/help|mehr Informationen …]]):",
+ "captcha-createaccount-fail": "Falsches oder fehlendes CAPTCHA.",
+ "captcha-create": "Zur Erstellung der Seite löse die nachfolgende Aufgabe und trage die Antwort in das Feld unten ein [[Special:Captcha/help|(Fragen oder Probleme?)]].",
+ "captcha-sendemail": "Um das Wiki vor automatisiertem Spam zu schützen, bitten wir dich, die untenstehende Aufgabe zu lösen und deine Antwort in das Feld einzugeben ([[Special:Captcha/help|mehr Informationen …]]):",
+ "captcha-sendemail-fail": "Falsches oder fehlendes CAPTCHA.",
+ "captcha-disabledinapi": "Diese Aktion benötigt ein CAPTCHA. Sie kann nicht über die API ausgeführt werden.",
+ "captcha-error": "CAPTCHA-Verifizierung aufgrund eines internen Fehlers fehlgeschlagen: $1",
+ "captchahelp-title": "CAPTCHA-Hilfe",
+ "captchahelp-cookies-needed": "'''Wichtiger Hinweis:''' Es müssen Cookies im Browser erlaubt sein.",
+ "captchahelp-text": "Internetangebote, die für Beiträge von praktisch jedem offen sind – so wie dieses Wiki – werden oft von Spammern missbraucht, die ihre Links automatisch auf vielen Webseiten platzieren. Diese Spam-Links können wieder entfernt werden, sie sind aber ein erhebliches Ärgernis.\n\nIn manchen Fällen, insbesondere beim Hinzufügen von neuen Weblinks zu einer Seite, kann es vorkommen, dass dieses Wiki ein Bild mit einem farbigen und verzerrten Text anzeigt und dazu auffordert, die angezeigten Wörter einzutippen.\nDa eine solche Aufgabe nur schwer automatisch erledigt werden kann, werden dadurch die meisten Spammer, die mit automatischen Werkzeugen arbeiten, gestoppt, wogegen menschliche Benutzer ihren Beitrag absenden können.\n\nLeider kann dies zu Schwierigkeiten für Personen führen, die über eine eingeschränkte Sehfähigkeit verfügen oder text- oder sprachbasierte Browser verwenden. Aktuell sind keine Audio-CAPTCHAs verfügbar.\n\nBitte kontaktiere einen [[Special:ListAdmins|Administrator]] für weitere Hilfe, wenn dies es unmöglich macht, erwünschte Bearbeitungen vorzunehmen.\n\nDer „Zurück“-Knopf des Browsers führt zurück zum Bearbeitungsfenster.",
+ "captcha-addurl-whitelist": " #<!-- Diese Zeile darf nicht verändert werden! --> <pre>\n# Syntax:\n# * Alles von einem #-Zeichen bis zum Ende der Zeile ist ein Kommentar\n# * Jede nicht-leere Zeile ist ein Regex-Fragment, das gegenüber den Hostnamen einer URL geprüft wird\n #</pre> <!-- Diese Zeile darf nicht verändert werden! -->",
+ "right-skipcaptcha": "Überspringen der CAPTCHA-Eingabe",
+ "captcha-apihelp-param-captchaword": "Antwort an das CAPTCHA",
+ "captcha-apihelp-param-captchaid": "CAPTCHA-Kennung der vorherigen Anfrage",
+ "confirmedit-preview-line": "Zeilennummer",
+ "confirmedit-preview-content": "Inhalt",
+ "confirmedit-preview-validity": "Gültigkeit",
+ "confirmedit-preview-valid": "gültig",
+ "confirmedit-preview-invalid": "ungültig",
+ "confirmedit-preview-description": "Die folgende Tabelle zeigt die Liste der Zeilen auf dieser Seite an und ob es eine gültige IP-Adresse oder ein gültiger IP-Adressbereich ist. Falls die Zeile eine gültige IP-Adresse oder ein gültiger IP-Adressbereich ist, wird sie/er für das CAPTCHA weißgelistet, aber ungültige Zeilen werden ignoriert. Ein Beispiel für einen gültigen IP-Adressbereich wäre 69.208.0.0/16, der von 69.208.0.0 bis 69.208.255.255 geht. [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Range_blocks#Calculating_the_CIDR_suffix Weitere Informationen] zur Berechnung eines IP-Adressbereichs."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/din.json b/www/wiki/extensions/ConfirmEdit/i18n/din.json
new file mode 100644
index 00000000..2781d680
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/din.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Dinkawiki"
+ ]
+ },
+ "captcha-label": "CAPTCHA"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/diq.json b/www/wiki/extensions/ConfirmEdit/i18n/diq.json
new file mode 100644
index 00000000..d293a8e8
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/diq.json
@@ -0,0 +1,44 @@
+{
+ "@metadata": {
+ "authors": [
+ "Asmen",
+ "Aspar",
+ "Erdemaslancan",
+ "Marmase",
+ "Xoser",
+ "Kumkumuk",
+ "Mirzali",
+ "Gırd"
+ ]
+ },
+ "captcha-edit": "Qe ena pel vurnayîşî, ma rica keno cewabê problemî qutiyê ke cor de zerre ey ra binuse ([[Special:Captcha/help|enformasyonê bînî]]):",
+ "captcha-edit-fail": "CAPTCHA ğeleto ya ki kemio",
+ "captcha-desc": "Rehat CAPTCHA teknoloci u dezgina parola-ezayan",
+ "captcha-label": "Kodê itımadi (CAPTCHA)",
+ "captcha-help": "Agozê CAPTCHA.",
+ "captcha-info-help": "Şınasiya CAPTCHA",
+ "captcha-id-label": "CAPTCHA ID",
+ "captcha-id-help": "Ena lazımo ke nêvuriyo u peys bırışi yo",
+ "captcha-addurl": "Vurnayışa şıma gray teberiya newi muhtewa kena.\nOtomatik spamî ra pawitîş, ma rica keno cewabê problemî qutiyê ke cor de zerre ey ra binuse ([[Special:Captcha/help|malumato detayın]]):",
+ "captcha-badlogin": "Otomatik spam ra pawıtışi, ma rica keno cewabê problemî qutiyê ke cor de zerre ey ra binuse \n([[Special:Captcha/help|malumato detayın]]):",
+ "captcha-createaccount": "Otomatik spam ra pawıtışi, ma rica keno cewabê problemî qutiyê ke cor de zerre ey ra binuse \n([[Special:Captcha/help|malumato detayın]]):",
+ "captcha-createaccount-fail": "CAPTCHA ğeleto ya ki kemio",
+ "captcha-create": "Qe pel viraştîşî, ma rica keno cewabê problemî qutiyê ke cor de zerre ey ra binuse ([[Special:Captcha/help|enformasyonê bînî]]):",
+ "captcha-sendemail": "Otomatik spam ra pawıtışi, ma rica keno cewabê problemî qutiyê ke cor de zerre ey ra binuse \n([[Special:Captcha/help|malumato detayın]]):",
+ "captcha-sendemail-fail": "CAPTCHA ğeleto ya ki kemio",
+ "captcha-disabledinapi": "Ena hereket de captcha lazim o, aye ra ser API ra ena hereket nibena.",
+ "captcha-error": "Raşt kerdışa CAPTCHA de xırabey vıci yê:$1",
+ "captchahelp-title": "Yardimê captchayî",
+ "captchahelp-cookies-needed": "Eger şıma wazenê bıkewê perra Wikipediya, programê internetê şıma de cookiesi gani aktifi bê.",
+ "captchahelp-text": "Siteyan ke kamu ra aleknayişê îlanî ra destur dano, ze ena wiki, spam kerdogan ke xacetane otomatiki ser kar keno inan ra atak beno.\nMa eşkeno linkane inan wedarno, feqat hewna inan problem zeman ma geno. \n\nMavaci, key ti yew pele de linkane newi darneno, wiki belki ti ra yew resim mucneno u ti ra wazeno cekuyan ke resimda inan binusi. \nEka ena process otomatik nibeno, ena process otomatik spam kerogan vinderneno feqay sexsi spam kerdogan nieşkeno vindaro.\n\nMa ef bikeri ena process belki ti ra zehmeti. belki cim tu ra şcekuyan hewl niesno. \nNika ma da sistemê vengî cinoke ti ra vaci resim da kamci cekuyan esto. \nMa rica keno ti yew [[Special:ListAdmins|idarekar]] ra yew mesaj bişavî u o ra yardim bivaci eka ti yew linkê hewlî darnone.\n\nBrowser xo de goceke 'back' rê klik bike şo pela editorî.",
+ "captcha-addurl-whitelist": " #<!-- leave this line exactly as it is --> <pre>\n#Sîntaks ze ena yo: \n# * Nişanê \"#\" ra nişanê ke bînê xetî de pêran piya xulasa yo\n# * Her xetî ke veng niyo fragmento regex u teyna URLan de hostan match keno\n #</pre> <!-- leave this line exactly as it is -->",
+ "right-skipcaptcha": "Herekatanê captcha trigger perform bike ke ti ser captcha meşo",
+ "captcha-apihelp-param-captchaword": "Cewabê CAPTCHA",
+ "captcha-apihelp-param-captchaid": "CAPTCHA ID Ra waştışê verêni",
+ "confirmedit-preview-line": "Numreyê xete",
+ "confirmedit-preview-content": "Zerrek",
+ "confirmedit-preview-validity": "Vêrdış",
+ "confirmedit-preview-valid": "vêrde",
+ "confirmedit-preview-invalid": "nêvêrde",
+ "confirmedit-preview-description": "Tabloy cêri, listanê satıranê ena perer asne no u ravêrde ju IP yana adresa IP wa bı bo. Çıkı CAPTHCA de sıpe listed bê se xizi do peygos bê \n\nMesela ena IP bena: 69.208.0.0 ra 69.208.255.255 hetana 69.208.0.0/16 şına. \n\n[https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Range_blocks#Calculating_the_CIDR_suffix deha na zaf malumat] bıvinê."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/dsb.json b/www/wiki/extensions/ConfirmEdit/i18n/dsb.json
new file mode 100644
index 00000000..e44fc43f
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/dsb.json
@@ -0,0 +1,23 @@
+{
+ "@metadata": {
+ "authors": [
+ "Michawiki"
+ ]
+ },
+ "captcha-edit": "Aby wobźěłował toś ten bok, rozwěž pšosym slědujucy jadnory liceński nadawk a zapódaj wuslědk do kašćika ([[Special:Captcha/help|Dalšne info]]):",
+ "captcha-desc": "Staja techniki CAPTCHA za šćit pśeśiwo spamoju a wugódanjoju gronidłow k dispoziciji",
+ "captcha-label": "CAPTCHA",
+ "captcha-addurl": "Twója změna wopśimujo nowe eksterne wótkaze.\nZa šćit pśeśiwo zawtomatizěrowanemu spamoju, pšosymy śi slědujucy jadnory liceński nadawk rozwězaś a zapódaj wuslědk do kašćika, aby swóju změnu składował ([[Special:Captcha/help|dalšne info]]):",
+ "captcha-badlogin": "Aby wiki pśeśiwo zawtomatizěrowanemu wuzgónjowanjeju gronidła šćitał, pšosymy śi slědujucy jadnory liceński nadawk rozwězaś a zapódaj wuslědk do kašćika ([[Special:Captcha/help|dalšne info]]):",
+ "captcha-createaccount": "Aby wiki pśeśiwo zawtomatizěrowanemu załoženjeju kontow šćitał, pšosymy śi slědujucy jadnory liceński nadawk rozwězaś a zapódaj wuslědk do kašćika ([[Special:Captcha/help|dalšne info]]):",
+ "captcha-createaccount-fail": "Wopacny abo felujucy wobkšuśeński kod CAPTCHA.",
+ "captcha-create": "Aby napórał bok, rozwěž pšosym slědujucy jadnory liceński nadawk a zapódaj wuslědk do kašćika ([[Special:Captcha/help|dalšne info]]):",
+ "captcha-sendemail": "Aby wiki pśeśiwo awtomatiskemu spamowanjeju šćitał, pšosymy śi jadnory liceński nadawk rozwězaś a zapódaj wótegrono do kašćika ([[Special:Captcha/help|dalšne informacije]]):",
+ "captcha-sendemail-fail": "Wopacny abo felujucy wobkšuśeński kod CAPTCHA.",
+ "captcha-disabledinapi": "Toś ta akcija pomina se captcha, togodla njedajo se pśez API wuwjasć.",
+ "captchahelp-title": "Pomoc wó captcha",
+ "captchahelp-cookies-needed": "Aby to funkcioněrowało, muse cookieje dowólone byś.",
+ "captchahelp-text": "Websedła, kótarež akceptěruju zjawne pśinoski, ako toś ten wiki, znjewužywaju se cesto wót spamowarjow, kótarež wužywaju zawtomatizěrowane rědy, aby słali swóje wótkaze na wjele sedłow.\nLěcrownož toś te spamowe wótkaze daju se wótpóraś, su wóne bejna pógóršota.\n\nWótergi, wósebnje, gaž se nowe wótkaze pśidawaju bokoju, jo móžno, až wiki śi pokazujo wobraz barwojtego abo spryšćonego teksta a pšosy śe, aby zapódał zwobraznjone słowa.\nDokulaž to jo nadawk, kótaryž dajo se śěžko awtomatizěrowaś, dówolujo to napšawdnym luźam jich pśinoski wótpósłaś, nejwěcej spamowarjow a robotowe ataki pak se zaźaržyju.\n\nBóžko to móžo kazyś wužywarjow z wobgraniwoneju zamóžnosću wiźenja pśi wužywanju wobglědowakow, kótarež bazěruju na teksće abo rěcnem wudaśu.\nTuchylu njamamy awdioalternatiwu.\nStaj se pšosym z [[Special:ListAdmins|administratorami sedła]] z pšosbu wó pomoc do zwiska, jolic to śi njewócakane zawobarujo słanje legitimnych pśinoskow.\n\nKlikni na tłocašk \"Slědk\" we swójom wobglědowaku, aby wróśił k bokowemu editoroju.",
+ "captcha-addurl-whitelist": " #<!-- wóstaj toś tu smužku rowno ako jo --> <pre>\n # Syntaksa jo ako slědujo:\n # * Wšykno wót znamuška \"#\" ku kóńcoju smužki jo komentar\n # * Kužda smužka, kótaraž njejo prozna, jo fragment regularnego wuraza, kótaryž nastupa jano hostam w URL\n #</pre> <!-- wóstaj toś tu smužku rowno ako jo -->",
+ "right-skipcaptcha": "Akcije wugbaś, kótarež zapušćiju captcha, mimo až se nadawk captcha rozwěžo."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/dty.json b/www/wiki/extensions/ConfirmEdit/i18n/dty.json
new file mode 100644
index 00000000..060ad648
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/dty.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "रमेश सिंह बोहरा",
+ "Nirajan pant"
+ ]
+ },
+ "captcha-label": "क्याप्चा",
+ "confirmedit-preview-line": "लैन सङ्ख्या",
+ "confirmedit-preview-content": "सामाग्री",
+ "confirmedit-preview-validity": "म्याद",
+ "confirmedit-preview-valid": "मान्य",
+ "confirmedit-preview-invalid": "अमान्य"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/ee.json b/www/wiki/extensions/ConfirmEdit/i18n/ee.json
new file mode 100644
index 00000000..71af2431
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/ee.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Natsubee"
+ ]
+ },
+ "captcha-edit": "Ne enye wò didi bena yea ɖɔ axa sia ɖo la, mía ve nuwò be na bu akɔnta si le nuŋɔŋlɔ sia gɔme, eye na ŋlɔ nusi wòkpɔ ɖe go sia me ([[Special:Captcha/help|gbeƒãɖeɖe]]):"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/el.json b/www/wiki/extensions/ConfirmEdit/i18n/el.json
new file mode 100644
index 00000000..1c07b31c
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/el.json
@@ -0,0 +1,44 @@
+{
+ "@metadata": {
+ "authors": [
+ "Badseed",
+ "Consta",
+ "Dada",
+ "Geraki",
+ "Glavkos",
+ "Kiriakos",
+ "Omnipaedista",
+ "Protnet",
+ "ZaDiak",
+ "Περίεργος",
+ "Nikosgranturismogt"
+ ]
+ },
+ "captcha-edit": "Για να επεξεργαστείτε αυτή τη σελίδα, παρακαλούμε υπολογίστε την παρακάτω εργασία και γράψτε την απάντηση στο πλαίσιο ([[Special:Captcha/help|περισσότερες πληροφορίες]]):",
+ "captcha-edit-fail": "Εσφαλμένο ή αγνοούμενο CAPTCHA.",
+ "captcha-desc": "Παρέχει τεχνικές CAPTCHA για την προστασία από spam και προσπάθειες σπασίματος κωδικών πρόσβασης",
+ "captcha-label": "CAPTCHA",
+ "captcha-help": "Λήση του CAPTCHA.",
+ "captcha-info-help": "Περιγραφή του CAPTCHA.",
+ "captcha-id-label": "Αναγνωριστικό του CAPTCHA",
+ "captcha-addurl": "Η επεξεργασία σας περιλαμβάνει νέους εξωτερικούς συνδέσμους. Για λόγους προστασίας κατά αυτοματοποιημένων ανεπιθύμητων δημοσιεύσεων, παρακαλούμε υπολογίστε την ακόλουθη εργασία και γράψτε την απάντηση στο κουτάκι ώστε να αποθηκευτεί η επεξεργασία σας ([[Special:Captcha/help|περισσότερες πληροφορίες]]):",
+ "captcha-badlogin": "Για την προστασία του wiki απέναντι σε σπάσιμο κωδικών πρόσβασης, παρακαλούμε λύστε τη παρακάτω εργασία και γράψτε την απάντηση στο πλαίσιο ([[Special:Captcha/help|περισσότερες πληροφορίες]]):",
+ "captcha-createaccount": "Για την προστασία του wiki απέναντι σε αυτοματοποιημένη δημιουργία λογαριασμών, παρακαλούμε λύστε τη παρακάτω εργασία και γράψτε την απάντηση στο πλαίσιο ([[Special:Captcha/help|περισσότερες πληροφορίες]]):",
+ "captcha-createaccount-fail": "Εσφαλμένος ή μη διαθέσιμο CAPTCHA.",
+ "captcha-create": "Για να δημιουργήσετε τη σελίδα, παρακαλούμε λύστε τη παρακάτω εργασία και γράψτε την απάντηση στο πλαίσιο ([[Special:Captcha/help|περισσότερες πληροφορίες]]):",
+ "captcha-sendemail": "Για την προστασία του βίκι απέναντι σε αυτοματοποιημένες ανεπιθύμητες δημοσιεύσεις, παρακαλούμε λύστε την παρακάτω εργασία και γράψτε την απάντηση στο πλαίσιο ([[Special:Captcha/help|περισσότερες πληροφορίες]]):",
+ "captcha-sendemail-fail": "Λανθασμένος ή μη πληκτρολογημένος κωδικός οπτικής επαλήθευσης (CAPTCHA).",
+ "captcha-disabledinapi": "Η ενέργεια αυτή απαιτεί επαλήθευση λεκτικού κειμένου και για αυτό δεν μπορεί να γίνει μέσω του API.",
+ "captcha-error": "Η επαλήθευση του CAPTCHA απέτυχε λόγω εσωτερικού σφάλματος: $1",
+ "captchahelp-title": "Βοήθεια για CAPTCHA",
+ "captchahelp-cookies-needed": "Θα πρέπει να έχετε τα cookies ενεργοποιημένα στον περιηγητή σας για να εκτελεστεί η λειτουργία.",
+ "captchahelp-text": "Οι ιστότοποι που επιτρέπουν δημόσια επεξεργασία, όπως αυτό το wiki, παραβιάζονται συχνά από κακόβουλους χρήστες (spammer) που χρησιμοποιούν αυτοματοποιημένα εργαλεία για να δημοσιεύουν μαζικά υπερσυνδέσμους σε πλήθος ιστοτόπων. Αν και αυτοί οι σύνδεσμοι spam μπορούν να αφαιρεθούν, είναι μεγάλος μπελάς.\n\nΜερικές φορές, ειδικά κατά την προσθήκη νέων συνδέσμων σε μια σελίδα, το wiki μπορεί να σας παρουσιάσει μια εικόνα με χρωματισμένο ή διαστρεβλωμένο κείμενο και να σας ζητήσει να πληκτρολογήσετε τις λέξεις που διακρίνετε. Δεδομένου ότι αυτή η εργασία είναι δύσκολο να αυτοματοποιηθεί, θα επιτρέψει στους περισσότερους πραγματικούς ανθρώπους να κάνουν τις δημοσιεύσεις τους, σταματώντας όμως spammer και άλλους ρομποτικά επιτιθέμενους.\n\nΔυστυχώς αυτό μπορεί να προκαλέσει δυσχέρεια σε χρήστες με προβλήματα όρασης τους ή όσους χρησιμοποιούν περιηγητές αποκλειστικά κειμένου ή περιηγητές με ομιλία. Προς το παρόν δεν έχουμε κάποια ηχητική εναλλακτική λύση διαθέσιμη. Παρακαλούμε επικοινωνήστε με τους [[Special:ListAdmins|διαχειριστές]] του ιστοτόπου για βοήθεια, εάν αυτό για κάποιο λόγο σας αποτρέπει να εκτελέσετε θεμιτές ενέργειες.\n\nΠατήστε το κουμπί «πίσω» στον περιηγητή σας για να επιστρέψετε στον επεξεργαστή σελίδων.",
+ "captcha-addurl-whitelist": " #<!-- αφήστε αυτή την γραμμή ακριβώς όπως είναι --> <pre>\n# Η σύνταξη είναι ως ακολούθως:\n# * Οποιαδήποτε γραμμή ξεκινάει με χαρακτήρα \"#\" είναι σχόλιο\n# * Κάθε μη κενή γραμμή αποτελεί μέρος κανονικής έκφρασης η οποία αντιστοιχεί σε διευθύνσεις URL\n #</pre> <!-- αφήστε αυτή την γραμμή ακριβώς όπως είναι -->",
+ "right-skipcaptcha": "Πραγματοποίηση ενεργειών που ενεργοποιούν CAPTCHA χωρίς να χρειάζεται πέρασμα από το CAPTCHA",
+ "captcha-apihelp-param-captchaword": "Απάντηση του CAPTCHA",
+ "confirmedit-preview-line": "Αριθμός γραμμής",
+ "confirmedit-preview-content": "Περιεχόμενο",
+ "confirmedit-preview-validity": "Εγκυρότητα",
+ "confirmedit-preview-valid": "ισχύει",
+ "confirmedit-preview-invalid": "Μη έγκυρο"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/en-ca.json b/www/wiki/extensions/ConfirmEdit/i18n/en-ca.json
new file mode 100644
index 00000000..73cc8bed
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/en-ca.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Techman224"
+ ]
+ },
+ "captchahelp-text": "Web sites that accept postings from the public, like this wiki, are often abused by spammers who use automated tools to post their links to many sites.\nWhile these spam links can be removed, they are a significant nuisance.\n\nSometimes, especially when adding new web links to a page, the wiki may show you an image of coloured or distorted text and ask you to type the words shown.\nSince this is a task that's hard to automate, it will allow most real humans to make their posts while stopping most spammers and other robotic attackers.\n\nUnfortunately this may inconvenience users with limited vision or using text-based or speech-based browsers.\nAt the moment we do not have an audio alternative available.\nPlease contact the [[Special:ListAdmins|site administrators]] for assistance if this is unexpectedly preventing you from making legitimate posts.\n\nHit the 'back' button in your browser to return to the page editor."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/en-gb.json b/www/wiki/extensions/ConfirmEdit/i18n/en-gb.json
new file mode 100644
index 00000000..83c1f0eb
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/en-gb.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Lcawte"
+ ]
+ },
+ "captchahelp-text": "Web sites that accept postings from the public, like this wiki, are often abused by spammers who use automated tools to post their links to many sites.\nWhile these spam links can be removed, they are a significant nuisance.\n\nSometimes, especially when adding new web links to a page, the wiki may show you an image of coloured or distorted text and ask you to type the words shown.\nSince this is a task that's hard to automate, it will allow most real humans to make their posts while stopping most spammers and other robotic attackers.\n\nUnfortunately this may inconvenience users with limited vision or using text-based or speech-based browsers.\nAt the moment we do not have an audio alternative available.\nPlease contact the [[Special:ListAdmins|site administrators]] for assistance if this is unexpectedly preventing you from making legitimate posts.\n\nHit the 'back' button in your browser to return to the page editor."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/en.json b/www/wiki/extensions/ConfirmEdit/i18n/en.json
new file mode 100644
index 00000000..99f68e43
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/en.json
@@ -0,0 +1,36 @@
+{
+ "@metadata": {
+ "authors": []
+ },
+ "captcha-edit": "To edit this page, please solve the following task below and enter the answer in the box ([[Special:Captcha/help|more info]]):",
+ "captcha-edit-fail": "Incorrect or missing CAPTCHA.",
+ "captcha-desc": "Provides CAPTCHA techniques to protect against spam and password-guessing",
+ "captcha-label": "CAPTCHA",
+ "captcha-help": "Solution of the CAPTCHA.",
+ "captcha-info-help": "Description of the CAPTCHA.",
+ "captcha-id-label": "CAPTCHA ID",
+ "captcha-id-help": "This value should be sent back unchanged.",
+ "captcha-ip-whitelist": "-",
+ "captcha-addurl": "Your edit includes new external links.\nTo protect the wiki against automated spam, we kindly ask you to solve the following task below and enter the answer in the box in order to save your edit ([[Special:Captcha/help|more info]]):",
+ "captcha-badlogin": "To protect the wiki against automated password cracking, we kindly ask you to solve the following task below and enter the answer in the box ([[Special:Captcha/help|more info]]):",
+ "captcha-createaccount": "To protect the wiki against automated account creation, we kindly ask you to solve the following task below and enter the answer in the box ([[Special:Captcha/help|more info]]):",
+ "captcha-createaccount-fail": "Incorrect or missing CAPTCHA.",
+ "captcha-create": "To create the page, please solve the following task below and enter the answer in the box ([[Special:Captcha/help|more info]]):",
+ "captcha-sendemail": "To protect the wiki against automated spamming, we kindly ask you to solve the following task below and enter the answer in the box ([[Special:Captcha/help|more info]]):",
+ "captcha-sendemail-fail": "Incorrect or missing CAPTCHA.",
+ "captcha-disabledinapi": "This action requires a CAPTCHA, so it cannot be performed through the API.",
+ "captcha-error": "CAPTCHA verification failed due to internal error: $1",
+ "captchahelp-title": "CAPTCHA help",
+ "captchahelp-cookies-needed": "You will need to have cookies enabled in your browser for this to work.",
+ "captchahelp-text": "Web sites that accept postings from the public, like this wiki, are often abused by spammers who use automated tools to post their links to many sites.\nWhile these spam links can be removed, they are a significant nuisance.\n\nSometimes, especially when adding new web links to a page, the wiki may show you an image of colored or distorted text and ask you to type the words shown.\nSince this is a task that's hard to automate, it will allow most real humans to make their posts while stopping most spammers and other robotic attackers.\n\nUnfortunately this may inconvenience users with limited vision or using text-based or speech-based browsers.\nAt the moment we do not have an audio alternative available.\nPlease contact the [[Special:ListAdmins|site administrators]] for assistance if this is unexpectedly preventing you from making legitimate actions.\n\nHit the \"back\" button in your browser to return to the page editor.",
+ "captcha-addurl-whitelist": " #<!-- leave this line exactly as it is --> <pre>\n# Syntax is as follows:\n# * Everything from a \"#\" character to the end of the line is a comment\n# * Every non-blank line is a regex fragment which will only match hosts inside URLs\n #</pre> <!-- leave this line exactly as it is -->",
+ "right-skipcaptcha": "Perform CAPTCHA-triggering actions without having to go through the CAPTCHA",
+ "captcha-apihelp-param-captchaword": "Answer to the CAPTCHA",
+ "captcha-apihelp-param-captchaid": "CAPTCHA ID from previous request",
+ "confirmedit-preview-line": "Line number",
+ "confirmedit-preview-content": "Content",
+ "confirmedit-preview-validity": "Validity",
+ "confirmedit-preview-valid": "valid",
+ "confirmedit-preview-invalid": "invalid",
+ "confirmedit-preview-description": "The following table shows the list of lines on this page and whether it's a valid IP address or IP address range. If the line is a valid IP address or IP address range, it will be whitelisted from CAPTCHA but invalid lines will be ignored. An example of a valid IP address range would be: 69.208.0.0/16 which goes from 69.208.0.0 to 69.208.255.255. [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Range_blocks#Calculating_the_CIDR_suffix More information] about calculating an IP address range."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/eo.json b/www/wiki/extensions/ConfirmEdit/i18n/eo.json
new file mode 100644
index 00000000..cc5d7cef
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/eo.json
@@ -0,0 +1,39 @@
+{
+ "@metadata": {
+ "authors": [
+ "Castelobranco",
+ "Petrus Adamus",
+ "Yekrats",
+ "KuboF",
+ "Robin van der Vliet",
+ "NMaia"
+ ]
+ },
+ "captcha-edit": "Por redakti ĉi tiun paĝon, bonvolu solvi la simplan sumon jenan kaj enigi la respondon en la skatolo ([[Special:Captcha/help|plua informo]]):",
+ "captcha-edit-fail": "Neĝusta aŭ mankata CAPTCHA.",
+ "captcha-desc": "Disponigas ilojn de Captcha por kontraŭigi spamaĵojn kaj pasvorto-divenadon",
+ "captcha-label": "CAPTCHA",
+ "captcha-help": "Solvo de la CAPTCHA.",
+ "captcha-info-help": "Priskribo de la CAPTCHA.",
+ "captcha-id-label": "CAPTCHA-identigilo",
+ "captcha-id-help": "Ĉi tiu valoro estu sendita reen senŝanĝe.",
+ "captcha-addurl": "Via redakto entenas novajn eksterajn ligilojn.\nPor protekti la vikion kontraux aŭtomata spamado, bonvolu solvi la jenan taskon sube kaj entajpu la respondon en la kesto por konservi vian redakton ([[Special:Captcha/help|pli da informo]]):",
+ "captcha-badlogin": "Por protekti kontraŭ aŭtomata divenado de pasvortoj, bonvolu solvi la jenan taskon kaj enigi la respondon en la skatolo ([[Special:Captcha/help|plua informo]]):",
+ "captcha-createaccount": "Por protekti kontraŭ aŭtomata konto-kreado, bonvolu solvi la jenan taskon suben kaj enigi la respondon en la skatolo ([[Special:Captcha/help|plua informo]]):",
+ "captcha-createaccount-fail": "Malĝusta aŭ mankanta CAPTCHA.",
+ "captcha-create": "Por krei la paĝon, bonvolu solvi la simplan sumon jenan kaj enigi la respondon en la skatolo ([[Special:Captcha/help|plua informo]]):",
+ "captcha-sendemail": "Por helpi protekti kontraŭ aŭtomata spamado, bonvolu solvi la simplan sumon kaj enigi la respondon en la skatolo ([[Special:Captcha/help|plua informo]]):",
+ "captcha-sendemail-fail": "Malĝusta aŭ mankanta konfirma kodo.",
+ "captcha-disabledinapi": "Ĉi tiu ago bezonas captcha, tial ĝi ne estas farebla per API.",
+ "captchahelp-title": "Helpo pri CAPTCHA",
+ "captchahelp-cookies-needed": "Vi devas permesi kuketojn en via retumilo por funkciigi ĉi tion.",
+ "captchahelp-text": "Retejoj kiuj akcepti informon de publiko, kiel ĉi tiu vikio, estas ofte misuzitaj de spamistoj kiu uzas aŭtomatajn ilojn por afiŝi ligilojn al multaj retejoj.\nKvankam ĉi tiu spam-ligiloj estas forigeblaj, ili estas granda ĝeno.\n\nIufoje, ja kiam aldonante novajn retligilojn al paĝo, la vikio eble montros al vi bildon de bunta aŭ misformita teksto, kaj petos al vi tajpi la vortojn montratajn.\nTial ĉi tiu tasko estas malfacila por fari aŭtomate, ebligos al realaj homoj fari aldonaĵojn, kaj malebligos spamistojn kaj aliajn robotajn atakilojn.\n\nBedaŭrinde, ĉi tio eble ĝenetos uzantojn kun malbona vidkapablo kiu utiligas tekstajn aŭ voĉajn retumilojn.\nĈi-momente, neniu aŭda alternativo estas havebla.\nBonvolu kontakti la [[Special:ListAdmins|administrantojn de la retejo]] por helpo se ĉi tio malebligas al vi fari bonan aldonon.\n\nKlaku la 'reiru' butonon en via retumilo por reiri al la paĝo-redaktilo.",
+ "captcha-addurl-whitelist": " #<!-- ne ŝanĝu ĉi tiun linion iel ajn --> <pre>\n# Sintakso estas jen:\n# * Ĉio ekde \"#\" signo al la fino de linio estas komento\n# * Ĉiu linio ne malplena estas ero de regex kiu kongruos retnodojn nur ene de ttt-adresoj\n #</pre> <!-- ne ŝanĝu ĉi tiun linion iel ajn -->",
+ "right-skipcaptcha": "Faru ''captcha''-spronantaj agoj sen farante la ''captcha''-on",
+ "captcha-apihelp-param-captchaword": "Respondo al la CAPTCHA",
+ "confirmedit-preview-line": "Linia nombro",
+ "confirmedit-preview-content": "Enhavo",
+ "confirmedit-preview-validity": "Valideco",
+ "confirmedit-preview-valid": "valida",
+ "confirmedit-preview-invalid": "nevalida"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/es.json b/www/wiki/extensions/ConfirmEdit/i18n/es.json
new file mode 100644
index 00000000..f45e0626
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/es.json
@@ -0,0 +1,53 @@
+{
+ "@metadata": {
+ "authors": [
+ "Armando-Martin",
+ "Ciencia Al Poder",
+ "Crazymadlover",
+ "Drini",
+ "Icvav",
+ "Jatrobat",
+ "Lin linao",
+ "Locos epraix",
+ "Muro de Aguas",
+ "Pertile",
+ "Sanbec",
+ "Fitoschido",
+ "Luis Felipe Schenone",
+ "Macofe",
+ "Lemondoge",
+ "Sophivorus",
+ "Dgstranz",
+ "-jem-"
+ ]
+ },
+ "captcha-edit": "Para editar esta página, realiza la siguiente tarea y escribe el resultado en la casilla ([[Special:Captcha/help|más información]]):",
+ "captcha-edit-fail": "Incorrecta o falta de CAPTCHA.",
+ "captcha-desc": "Provee técnicas CAPTCHA para proteger contra spam y adivinación de contraseña.",
+ "captcha-label": "CAPTCHA",
+ "captcha-help": "Solución del CAPTCHA.",
+ "captcha-info-help": "Descripción del CAPTCHA.",
+ "captcha-id-label": "Identificador del CAPTCHA",
+ "captcha-id-help": "Este valor debería devolverse sin cambios.",
+ "captcha-addurl": "Tu edición incluye nuevos enlaces externos.\nPara proteger el wiki contra el spam automatizado, realiza la siguiente tarea y escribe el resultado en la casilla para poder guardar tu edición ([[Special:Captcha/help|más información]]):",
+ "captcha-badlogin": "Para proteger el wiki del descifrado de contraseñas automatizado, por favor realiza la siguiente tarea e ingresa la respuesta en la casilla ([[Special:Captcha/help|más información]]):",
+ "captcha-createaccount": "Para proteger el wiki de la creación automática de cuentas, realiza la siguiente tarea y escribe el resultado en la casilla ([[Special:Captcha/help|más información]]):",
+ "captcha-createaccount-fail": "Falta el código CAPTCHA, o éste es incorrecto.",
+ "captcha-create": "Para crear la página, realiza la siguiente tarea y escribe el resultado en la casilla ([[Special:Captcha/help|más información]]):",
+ "captcha-sendemail": "Para proteger el wiki contra el spam automatizado, realiza la siguiente tarea y escribe el resultado en la casilla ([[Special:Captcha/help|más información]]):",
+ "captcha-sendemail-fail": "Falta el código CAPTCHA, o éste es incorrecto.",
+ "captcha-disabledinapi": "Esta acción requiere un captcha, así que no puede ser ejecutada a través de un API.",
+ "captcha-error": "La comprobación del CAPTCHA falló debido a un error interno: $1",
+ "captchahelp-title": "Ayuda sobre el sistema CAPTCHA",
+ "captchahelp-cookies-needed": "Deberás tener las cookies activadas en el navegador para que esto funcione.",
+ "captchahelp-text": "Los sitios web que aceptan mensajes del público, como esta wiki, son a menudo objeto de abusos por spammers que utilizan programas para incluir automáticamente sus enlaces. Si bien estos enlaces pueden quitarse, son una gran molestia.\n\nEn ocasiones, especialmente cuando añada nuevos enlaces a una página, la wiki le mostrará una imagen de texto coloreado o distorsionado y le pedirá que escriba las palabras que muestra. Dado que esta es una tarea difícil de automatizar, permite a la mayoría de las personas enviar sus textos, a la vez que detiene a la mayoría de los spammers y otros atacantes automáticos.\n\nDesafortunadamente esto puede ser un inconveniente para usuarios con visión limitada o para navegadores basados en texto o en voz.\nEn este momento no tenemos una alternativa de audio disponible.\nPor favor contacte a los [[Special:ListAdmins|administradores del sitio]] para asistencia si esto está impidiendo inesperadamente que hagas mensajes legítimos.\n\nPresione el botón 'atrás' en su navegador para retornar al editor de página.",
+ "captcha-addurl-whitelist": " #<!-- deje esta línea exactamente como está --> <pre>\n# La sintaxis es la siguiente:\n# * Todo desde un carácter \"#\" hasta el final de la línea, es un comentario\n# * Toda línea que no esté en blanco, es un fragmento de expresión regular que solo coincidirá con equipos dentro de URL\n #</pre> <!-- deje esta línea exactamente como está -->",
+ "right-skipcaptcha": "Realizar acciones que disparan un captcha sin tener que pasarlo",
+ "captcha-apihelp-param-captchaword": "Respuesta a la CAPTCHA",
+ "captcha-apihelp-param-captchaid": "CAPTCHA de IDENTIFICACIÓN de la solicitud anterior",
+ "confirmedit-preview-line": "Número de línea",
+ "confirmedit-preview-content": "Contenido",
+ "confirmedit-preview-validity": "Validez",
+ "confirmedit-preview-valid": "válida",
+ "confirmedit-preview-invalid": "no válida"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/et.json b/www/wiki/extensions/ConfirmEdit/i18n/et.json
new file mode 100644
index 00000000..2c8649b6
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/et.json
@@ -0,0 +1,26 @@
+{
+ "@metadata": {
+ "authors": [
+ "BrokenArrow",
+ "Jaan513",
+ "Pikne"
+ ]
+ },
+ "captcha-edit": "Et seda lehekülge redigeerida, lahenda palun järgmine ülesanne ja sisesta vastus kasti ([[Special:Captcha/help|lisateave]]).",
+ "captcha-edit-fail": "Robotilõksu vastus on vale või puudub.",
+ "captcha-desc": "Pakub robotilõksu abil kaitset rämpspostituste ja paroolide äraarvamise vastu.",
+ "captcha-label": "Robotilõks",
+ "captcha-addurl": "Sinu muudatus sisaldab uusi välislinke.\nPalun lahenda allpool järgmine ülesanne ja sisesta vastus kasti, et saaksid muudatuse salvestada. Abinõu on viki kaitseks automaadistatud rämpsmuudatuste eest ([[Special:Captcha/help|lisateave]]):",
+ "captcha-badlogin": "Palun lahenda allpool järgmine ülesanne ja sisesta vastus kasti. Abinõu on viki kaitseks automaatsete parooliäraarvajate eest ([[Special:Captcha/help|lisateave]]):",
+ "captcha-createaccount": "Palun lahenda allpool järgmine ülesanne ja sisesta vastus kasti. Abinõu on viki kaitseks kontode automaatse loomise eest ([[Special:Captcha/help|lisateave]]):",
+ "captcha-createaccount-fail": "Puuduv või valesti sisestatud robotilõksu tekst.",
+ "captcha-create": "Et lehekülg luua, lahenda palun allpool järgmine ülesanne ja sisesta vastus kasti ([[Special:Captcha/help|lisateave]]):",
+ "captcha-sendemail": "Palun lahenda allpool järgmine ülesanne ja sisesta vastus kasti. Abinõu on viki kaitseks automaadistatud rämpsmuudatuste eest ([[Special:Captcha/help|lisateave]]):",
+ "captcha-sendemail-fail": "Vigane või puuduv robotilõksu tekst.",
+ "captcha-disabledinapi": "Ühes selle toiminguga tuleb läbida robotilõks ja seetõttu ei saa seda API kaudu sooritada.",
+ "captchahelp-title": "Mis on robotilõks?",
+ "captchahelp-cookies-needed": "Selle toimimiseks peab brauser lubama küpsiseid.",
+ "captchahelp-text": "Võrgukohti, mis lubavad külastajatel sisu muuta, nagu ka see viki, kasutavad sageli rämpsposti levitajad, kes lisavad lehekülgedele näiteks reklaamlinke. Kuigi neid linke saab eemaldada, on nad siiski tülikad.\n\nKui registreerid kasutajakonto või lisad mõnele leheküljele uusi veebilinke, näidatakse sulle värvilise või moonutatud tekstiga pilti ning palutakse sisestada sellel kuvatud sõnad. Kuna arvutil on raske pildilt teksti välja lugeda, on see tõhusaks kaitseks rämpspostirobotite vastu ja lubab samas tavakasutajatel rahus muudatusi teha.\n\nKahjuks võib see tekitada ebamugavusi nägemisraskustega inimestele või neile, kes kasutavad tehiskõneseadet või tekstipõhist brauserit. Hetkel pole meil helipõhist alternatiivi.\nKui sul tekib raskusi muudatuste tegemisel, võta palun ühendust selle võrgukoha [[Special:ListAdmins|administraatoritega]].\n\nKonto registreerimise lehele või redigeerimislehele naasmiseks klõpsa brauseri ''tagasi''-nuppu.",
+ "captcha-addurl-whitelist": " #<!-- Jäta see rida muutmata kujule. --> <pre>\n# Süntaks:\n# * Kõik alates märgist \"#\" kuni rea lõpuni on kommentaar\n# * Iga rida, mis ei ole tühi, on regulaaravaldise osa, milleks sobib internetiaadressi osadest ainult hostinimi\n #</pre> <!-- Jäta see rida muutmata kujule. -->",
+ "right-skipcaptcha": "Sooritada robotilõksu vallapäästvaid toiminguid testi läbimata"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/eu.json b/www/wiki/extensions/ConfirmEdit/i18n/eu.json
new file mode 100644
index 00000000..cf4a458a
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/eu.json
@@ -0,0 +1,25 @@
+{
+ "@metadata": {
+ "authors": [
+ "An13sa",
+ "BrokenArrow",
+ "Kobazulo",
+ "Pi",
+ "Xabier Armendaritz",
+ "Subi",
+ "Sator",
+ "Osoitz"
+ ]
+ },
+ "captcha-edit": "Orri hau editatzeko, ebatz ezazu beheko batuketa erraz hau, eta idatz ezazu erantzuna kutxan ([[Special:Captcha/help|argibide gehiago]]):",
+ "captcha-desc": "CAPTCHA teknika erabiltzen ditu, spametik eta pasahitz-asmatzeetatik babesteko",
+ "captcha-label": "CAPTCHA",
+ "captcha-addurl": "Zure aldaketan kanpo loturak daude. Wikia spam automatikotik babesteko, honako eginkizun hau ebatzi behar duzu zure edizioa gorde dadin ([[Special:Captcha/help|info gehiago]]):",
+ "captcha-createaccount": "Wikian kontuen sorkuntza automatikoa saihesteko, mesedez, azpiko taulan agertzen den batura erraz hori egin eta sartu erantzuna taulatxoan ([[Special:Captcha/help|Zer da hau?]]):",
+ "captcha-createaccount-fail": "CAPTCHA kodea falta da, edo desegokia da.",
+ "captcha-create": "Orri hau sortzeko, ebatz ezazu beheko batuketa erraz hau, eta idatz ezazu erantzuna kutxan ([[Special:Captcha/help|argibide gehiago]]):",
+ "captcha-sendemail-fail": "CAPTCHA kodea falta da, edo desegokia da.",
+ "captchahelp-title": "Captcha laguntza",
+ "captchahelp-cookies-needed": "Beharrezkoa da nabigatzailean cookieak gaituta izatea honek funtzionatzeko.",
+ "captchahelp-text": "Publikoki aldaketak egiteko aukerak dituzten webguneetan, wiki honetan bezalaxe, spam testuak gehitzen dira sarritan tresna automatikoak erabiliz.\nLotura horiek ezabatu egin daitezkeen arren, traba dira.\n\nBatzuetan, eta bereziki webgune berri bateko loturak gehitzen dituzunean, hitz batzuk dituen irudi bat agertuko zaizu, eta bertan ageri den testua idazteko eskatuko zaizu. Lan hori automatizatzeko zaila da, eta pertsonei ezer kostatzen ez zaigunez, spam testuak saihesteko lagungarria da.\n\nZoritxarrez, ikusmen mugatua edo testu bidezko nabigatzaileak erabiltzen dituzten erabiltzeek arazoak izan ditzakete. Horrelako zerbait gertatzen bazaizu, mesedez, jarri [[Special:ListAdmins|administratzaileekin]] harremanetan.\n\nZure nabigatzaileko 'atzera' lotura erabili aldaketen orrialdera itzultzeko."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/fa.json b/www/wiki/extensions/ConfirmEdit/i18n/fa.json
new file mode 100644
index 00000000..db9acc74
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/fa.json
@@ -0,0 +1,42 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ebraminio",
+ "Huji",
+ "Mjbmr",
+ "Reza1615",
+ "Wayiran",
+ "Ladsgroup",
+ "Arash"
+ ]
+ },
+ "captcha-edit": "برای ویرایش این مقاله، لطفاً نتیجهٔ عمل زیر را حساب کنید و آن را در جعبه وارد کنید ([[Special:Captcha/help|اطلاعات بیشتر]]):",
+ "captcha-edit-fail": "کد تائیدی نادرست یا ناموجود",
+ "captcha-desc": "روش‌های مبتنی بر CAPTCHA برای مقابله با هرزنگاری و کشف گذرواژه فراهم می‌کند",
+ "captcha-label": "کپچا",
+ "captcha-help": "پاسخ کپچا",
+ "captcha-info-help": "توضیح کپچا",
+ "captcha-id-label": "شناسه کپچا",
+ "captcha-id-help": "این مقدار بدون تغییر باید بازگردانده شود",
+ "captcha-addurl": "ویرایش شما شامل پیوندهای تازه‌ای به بیرون است.\nبرای کمک به جلوگیری از ارسال خودکار هرزنامه‌ها، لطفاً عملیات زیر را انجام دهید و نتیجه را در جعبه وارد کنید ([[Special:Captcha/help|اطلاعات بیشتر]]):",
+ "captcha-badlogin": "برای کمک به جلوگیری از شکستن خودکار گذرواژه، لطفاً عملیات زیر را انجام دهید و نتیجه را وارد کنید ([[Special:Captcha/help|اطلاعات بیشتر]]):",
+ "captcha-createaccount": "برای جلوگیری از ایجاد خودکار حساب کاربری، لطفاً عملیات زیر را انجام دهید و نتیجه را در جعبه وارد کنید ([[Special:Captcha/help|اطلاعات بیشتر]]):",
+ "captcha-createaccount-fail": "کد تأییدی وجود ندارد یا نادرست است.",
+ "captcha-create": "برای ایجاد صفحه، لطفاً نتیجهٔ عمل زیر را حساب کنید و آن را در جعبه وارد کنید ([[Special:Captcha/help|اطلاعات بیشتر]]):",
+ "captcha-sendemail": "برای کمک به حفاظت ویکی در برابر هرزنامه‌های خودکار، لطفاً نتیجهٔ عمل زیر را حساب کنید و آن را در جعبه وارد کنید ([[Special:Captcha/help|اطلاعات بیشتر]]):",
+ "captcha-sendemail-fail": "کد تأییدی وجود ندارد یا نادرست است.",
+ "captcha-disabledinapi": "این اقدام به کپچا نیاز دارد، بنابراین نمی‌تواند از طریق رابط برنامه‌نویسی انجام شود.",
+ "captcha-error": "تأییدیهٔ کپچا به‌دلیل خطای داخلی ناموفق بود: $1",
+ "captchahelp-title": "راهنمای Captcha",
+ "captchahelp-cookies-needed": "برای کار کردن آن، شما باید کوکی‌های مرورگرتان را فعال کنید.",
+ "captchahelp-text": "تارنماهایی مثل این ویکی که به عموم اجازهٔ نوشتن مطلب می‌دهند، غالباً مورد سوءاستفادهٔ هرزفرستندگانی می‌شوند که با ابزارهای خودکار پیوندهای بیرونی به تارنماهای موردنظرشان وارد می‌کنند.\nاگر چه این پیوندهای هرز و تبلیغاتی را می‌توان دستی حذف کرد، ولی به هر حال باعث اعصاب‌خردی زیادی می‌شوند.\n\nگاهی اوقات، خصوصاً هنگامی که پیوندهای بیرونی جدیدی به صفحه اضافه می‌شود، ویکی ممکن است به شما تصویری رنگی و کج‌وکوله از متنی نشان بدهد و از شما بخواهد که کلمه‌های نشان‌داده‌شده را تایپ کنید.\nاز آنجا که خودکارسازی این کار دشوار است، انسانهای واقعی می‌توانند پیوندهاشان را وارد کنند ولی برنامه‌های خودکار تبلیغاتی از خرابکاری باز خواهند ماند.\n\nمتأسفانه این امر ممکن است باعث مزاحمت برای کاربرانی شود که چشمشان ضعیف است یا از مرورگرهای متنی یا گفتاری استفاده می‌کنند.\nدر حال حاضر ما جایگزین صوتی‌ای برای این کار نداریم. لطفاً اگر برای واردساختن پیوندهای مشروع دچار مشکل شده‌اید با [[Special:ListAdmins|مدیران این تارنما]] تماس بگیرید.\n\nدکمهٔ «بازگشت» را در مرورگر خود فشار دهید تا به صفحهٔ ویرایش بازگردید.",
+ "captcha-addurl-whitelist": " #<!-- این سطر را همان‌گونه که هست رها کنید --> <pre>\n# قواعد به این شکل است:\n# * همه‌چیز از «#» تا آخر سطر یک توضیح در نظر گرفته می‌شود.\n# * هر سطری که خالی نباشد یک قطعه در نظر گرفته می‌شود که فقط با نام میزبان اینترنتی سنجیده می‌شود.\n #</pre> <!-- این سطر را همان‌گونه که هست رها کنید -->",
+ "right-skipcaptcha": "انجام کارهایی که CAPTCHA را فعال می‌کنند بدون نیاز به گذر از CAPTCHA",
+ "captcha-apihelp-param-captchaword": "پاسخ کپچا را بدهید",
+ "captcha-apihelp-param-captchaid": "شناسهٔ کپچا از درخواست قبلی",
+ "confirmedit-preview-line": "شماره خط",
+ "confirmedit-preview-content": "محتوا",
+ "confirmedit-preview-validity": "اعتبار",
+ "confirmedit-preview-valid": "معتبر",
+ "confirmedit-preview-invalid": "نامعتبر"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/fi.json b/www/wiki/extensions/ConfirmEdit/i18n/fi.json
new file mode 100644
index 00000000..8396ba69
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/fi.json
@@ -0,0 +1,40 @@
+{
+ "@metadata": {
+ "authors": [
+ "Agony",
+ "Centerlink",
+ "Crt",
+ "Linnea",
+ "Nedergard",
+ "Nike",
+ "Stryn",
+ "Varusmies",
+ "Syreeni",
+ "Pxos",
+ "Jack Phoenix",
+ "01miki10",
+ "Alluk.",
+ "Pahkiqaz"
+ ]
+ },
+ "captcha-edit": "Ratkaise alla oleva laskutoimitus muokataksesi tätä sivua ([[Special:Captcha/help|lisätietoja]]):",
+ "captcha-edit-fail": "Virheellinen tai puuttuva CAPTCHA.",
+ "captcha-desc": "Tarjoaa CAPTCHA-tekniikoita suojaamaan mainoslinkkejä ja salasana-arvailua vastaan.",
+ "captcha-label": "CAPTCHA",
+ "captcha-addurl": "Muokkauksesi sisältää uusia linkkejä muille sivuille.\nAutomatisoitujen roskamuokkausten välttämiseksi ratkaise alla oleva laskutoimitus ja kirjoita vastauksesi kenttään, jotta voisit tallentaa muokkauksesi ([[Special:Captcha/help|lisätietoa]]):",
+ "captcha-badlogin": "Automatisoidun salasanan murtamisen estämiseksi ratkaise alla oleva laskutoimitus ja kirjoita vastaus kenttään ([[Special:Captcha/help|lisätietoa]]):",
+ "captcha-createaccount": "Automaattisen käyttäjätunnusten luonnin estämiseksi ratkaise alla oleva laskutoimitus ja kirjoita se kenttään ([[Special:Captcha/help|lisätietoa]]):",
+ "captcha-createaccount-fail": "CAPTCHA on virheellinen tai puuttuu.",
+ "captcha-create": "Luodaksesi sivun, ratkaise alla oleva laskutoimitus ([[Special:Captcha/help|lisätietoa]]):",
+ "captcha-sendemail": "Suojataksemme wikiä automaattisia mainoslinkkejä vastaan, pyydämme sinua ratkaisemaan alla olevan yksinkertaisen laskutoimituksen ja kirjoittamaan vastauksen laatikkoon ([[Special:Captcha/help|lisätietoa]]):",
+ "captcha-sendemail-fail": "CAPTCHA on virheellinen tai puuttuu.",
+ "captcha-disabledinapi": "Tämä toiminto vaatii kuvavarmennusta, joten et voi suorittaa sitä API:n kautta.",
+ "captchahelp-title": "CAPTCHA-ohje",
+ "captchahelp-cookies-needed": "Tämä toiminto vaatii evästeiden hyväksymistä selaimessa.",
+ "captchahelp-text": "Kenen tahansa muokkaukselle avoimet verkkosivut joutuvat usein roskapostihyökkäysten kohteeksi, joissa roskapostittajat käyttävät ohjelmistoja jotka lisäävät automaattisesti linkkejä muille sivuille. Vaikka nämä linkit voidaan poistaa, aiheutuu niistä silti merkittävää haittaa.\n\nJoissakin tilanteissa, erityisesti lisättäessä artikkeliin poikkeavaa sisältöä sisältäviä linkkejä vieraille sivustoille, sinua pyydetään suorittamaan roskapostitarkastus. Tietokone-ohjelmiston on vaikeaa läpäistä tarkastusta, joten se estää automaattiset lisäykset sallien kuitenkin ihmisten tehdä muutoksia sivustoon.\n\nValitettavasti tämä saattaa haitata käyttäjiä, joilla on rajoittunut näkökyky tai käyttäjiä, jotka käyttävät teksti- tai puhepohjaisia selaimia. \nTällä hetkellä ei ole käytettävissä puhepohjaista vaihtoehtoa. \nOta yhteyttä [[Special:ListAdmins|sivuston ylläpitäjiin]], jos et pysty tekemään asianmukaisia muutoksia.\n\nVarmistus ei toimi, jos evästeet eivät ole selaimessa käytössä.\n\nVoit palata muokkaustilaan selaimen paluutoiminnolla.",
+ "captcha-addurl-whitelist": " #<!-- jätä tämä rivi juuri näin kuin se on --> <pre>\n# Syntaksi on seuraava:\n# * Kaikki #-merkistä eteenpäin on kommenttia\n# * Jokainen ei-tyhjä rivi on säännöllisen lausekkeen osa, joka suoritetaan vain linkeissä esiintyville verkkonimille.\n #</pre> <!-- jätä tämä rivi juuri näin kuin se on -->",
+ "right-skipcaptcha": "Suorittaa ilman CAPTCHA-kysymystä toimintoja, jotka normaalisti vaatisivat tarkastusta",
+ "captcha-apihelp-param-captchaword": "Vastaus CAPTCHAan",
+ "captcha-apihelp-param-captchaid": "CAPTCHA ID edellisestä pyynnöstä",
+ "confirmedit-preview-content": "Sisältö"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/fo.json b/www/wiki/extensions/ConfirmEdit/i18n/fo.json
new file mode 100644
index 00000000..1c4f8f16
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/fo.json
@@ -0,0 +1,19 @@
+{
+ "@metadata": {
+ "authors": [
+ "EileenSanda",
+ "Spacebirdy"
+ ]
+ },
+ "captcha-edit": "Fyri at rætta hesa síðu, vinarliga loys tað einfalda roknistykki niðanfyri og skriva svarið í teigin ([[Special:Captcha/help|meira kunning]]):",
+ "captcha-desc": "Gevur CAPTCHA teknikkir fyri at verja ímóti spamming og ímóti giting av loyniorði",
+ "captcha-label": "CAPTCHA",
+ "captcha-createaccount": "Fyri at verja wikiina ímóti sjálvvirkandi spam kontoupprættan, vilja vit vinarliga heita á teg um at loysa ta einføldu rokniuppgávuna niðanfyri og skriva svarið í teigin\n([[Special:Captcha/help|meira kunning]]):",
+ "captcha-createaccount-fail": "Skeiv ella manglandi váttanar loyniorð.",
+ "captcha-create": "Fyri at upprætta síðuna, vinarliga loys tað einfalda roknistykki niðanfyri og skriva svarið í teigin ([[Special:Captcha/help|meira kunning]]):",
+ "captcha-sendemail": "Fyri at hjálpa okkum at sleppa undan sjálvvirkandi upprættan av brúkaranavni (spamm), so verður tú vinarliga biðin um at loysa tað einfalda roknistykki og skriva svarið í teigin ([[Special:Captcha/help|meira kunning]]):",
+ "captcha-sendemail-fail": "Skeiv ella manglandi váttanar loyniorð.",
+ "captcha-disabledinapi": "Henda handling krevur ein captcha, so tað kann ikki verða framt við API'inum.",
+ "captchahelp-title": "Captcha hjálp",
+ "captchahelp-cookies-needed": "Tín kagi (brovsari) má góðtaka cookies, fyri at hetta kann virka."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/fr.json b/www/wiki/extensions/ConfirmEdit/i18n/fr.json
new file mode 100644
index 00000000..59c09a8d
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/fr.json
@@ -0,0 +1,52 @@
+{
+ "@metadata": {
+ "authors": [
+ "Crochet.david",
+ "Gomoko",
+ "Grondin",
+ "IAlex",
+ "Meithal",
+ "Nicolas NALLET",
+ "PieRRoMaN",
+ "Seb35",
+ "Sherbrooke",
+ "Tititou36",
+ "Urhixidur",
+ "Verdy p",
+ "Wyz",
+ "Zetud",
+ "Orlodrim",
+ "Wladek92"
+ ]
+ },
+ "captcha-edit": "Pour modifier cette page, résolvez la tâche ci-dessous et inscrivez le résultat dans le champ ([[Special:Captcha/help|plus d’informations]]):",
+ "captcha-edit-fail": "CAPTCHA incorrect ou manquant.",
+ "captcha-desc": "Offre des techniques CAPTCHA pour protéger contre le pollupostage et la découverte des mots de passe par essais multiples",
+ "captcha-label": "CAPTCHA",
+ "captcha-help": "Solution du CAPTCHA.",
+ "captcha-info-help": "Description du CAPTCHA.",
+ "captcha-id-label": "Identificateur CAPTCHA",
+ "captcha-id-help": "Cette valeur devrait être retournée non modifiée.",
+ "captcha-addurl": "Votre modification inclut de nouveaux liens externes.\nPour protéger le wiki contre le pourriel automatisé, veuillez résoudre la tâche suivante et inscrire le résultat dans le champ pour sauvegarder vos modifications ([[Special:Captcha/help|plus d’informations]]) :",
+ "captcha-badlogin": "Pour protéger le wiki contre la découverte automatique des mots de passe, nous vous demandons de bien vouloir résoudre la tâche ci_dessous et d'écrire la réponse dans le champ ([[Special:Captcha/help|plus d’informations]]) :",
+ "captcha-createaccount": "Afin de nous aider à lutter contre les créations automatiques de comptes, veuillez résoudre la tâche ci-dessous et inscrire le résultat dans le champ ([[Special:Captcha/help|plus d’informations]]) :",
+ "captcha-createaccount-fail": "CAPTCHA erroné ou manquant.",
+ "captcha-create": "Pour créer la page, veuillez résoudre la tâche ci-dessous et inscrire le résultat dans le champ ([[Special:Captcha/help|plus d’informations]]) :",
+ "captcha-sendemail": "Afin de nous aider à prévenir le pollupostage automatisé, veuillez résoudre la tâche et inscrire le résultat dans le champ ([[Special:Captcha/help|plus d’informations]]) :",
+ "captcha-sendemail-fail": "CAPTCHA incorrect ou absent.",
+ "captcha-disabledinapi": "Cette action requiert un CAPTCHA, donc elle ne peut pas être effectuée via l’API.",
+ "captcha-error": "La vérification CAPTCHA a échoué avec l'erreur interne: $1",
+ "captchahelp-title": "Aide sur le CAPTCHA",
+ "captchahelp-cookies-needed": "Il vous faudra autoriser les témoins (''cookies'') dans votre navigateur pour que cela fonctionne.",
+ "captchahelp-text": "Les sites web qui acceptent des contributions du public, tels que ce wiki, sont souvent victimes de spammeurs qui utilisent des outils automatisés pour placer de nombreux liens vers leurs sites.\nMême si cette pollution peut être effacée, elle n’en reste pas moins irritante.\n\nParfois, particulièrement lors de l’ajout de nouveaux liens externes dans une page, le wiki peut vous montrer une image d’un texte embrouillé, déformé ou coloré et vous demander de taper les mots indiqués.\nCette tâche étant difficile à accomplir de façon automatisée, cela permet à la plupart des humains de réaliser leurs contributions tout en stoppant la plupart des spammeurs et autres attaquants robotisés.\n\nMalheureusement, cette solution peut gêner les utilisateurs malvoyants ou qui utilisent un navigateur en texte seul ou vocal. Nous ne disposons pas d’alternative audio pour l’instant.\nVeuillez contacter [[Special:ListAdmins|les administrateurs du site]] si cela vous empêche de façon inattendue de faire des contributions légitimes.\n\nCliquez sur le bouton « Précédent » de votre navigateur pour revenir à la page de modification.",
+ "captcha-addurl-whitelist": " #<!-- laissez cette ligne exactement telle quelle --><pre>\n# La syntaxe est la suivante :\n# * Tout caractère depuis « # » jusqu’à la fin de la ligne est interprété comme un commentaire.\n# * Toute ligne non vide est un fragment d’expression rationnelle qui ne correspondra qu’aux hôtes dans les liens hypertextes.\n #</pre><!-- laissez cette ligne exactement telle quelle -->",
+ "right-skipcaptcha": "Réaliser des actions qui déclenchent un CAPTCHA sans avoir à passer celui-ci",
+ "captcha-apihelp-param-captchaword": "Réponse au CAPTCHA",
+ "captcha-apihelp-param-captchaid": "Identifiant de CAPTCHA de la requête précédente",
+ "confirmedit-preview-line": "Numéro de ligne",
+ "confirmedit-preview-content": "Contenu",
+ "confirmedit-preview-validity": "Validité",
+ "confirmedit-preview-valid": "valide",
+ "confirmedit-preview-invalid": "non valide",
+ "confirmedit-preview-description": "Le tableau suivant montre la liste des lignes de cette page et si c’est une adresse ou une plage d’adresses IP valide. Si la ligne est une adresse ou une plage d’adresses IP valide, elle sera en liste blanche pour CAPTCHA, mais les lignes non valides seront ignorées. Un exemple de plage d’adresse IP valide est : 69.208.0.0/16 qui va de 69.208.0.0 à 69.208.255.255. [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Range_blocks#Calculating_the_CIDR_suffix Plus d’information] sur le calcul d’une plage d’adresse IP."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/frp.json b/www/wiki/extensions/ConfirmEdit/i18n/frp.json
new file mode 100644
index 00000000..9256ef28
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/frp.json
@@ -0,0 +1,23 @@
+{
+ "@metadata": {
+ "authors": [
+ "ChrisPtDe"
+ ]
+ },
+ "captcha-edit": "Por changiér ceta pâge, volyéd calcular l’opèracion simpla ce-desot et pués nen buchiér lo rèsultat dens la bouèta ([[Special:Captcha/help|més d’enformacions]]) :",
+ "captcha-desc": "Semond des tècniques CAPTCHA por protègiér contre lo spame et la dècuvèrta des contresegnos per un mouél de tentatives.",
+ "captcha-label": "CAPTCHA",
+ "captcha-addurl": "Voutron changement encllut de lims de defôr novéls.\nPor nos édiér a combatre contre lo spame ôtomatisâ, volyéd calcular l’opèracion simpla ce-desot et pués nen buchiér lo rèsultat dens la bouèta ([[Special:Captcha/help|més d’enformacions]]) :",
+ "captcha-badlogin": "Por nos édiér a combatre contre lo cassâjo ôtomatisâ de contresegnos, volyéd calcular l’opèracion simpla ce-desot et pués nen buchiér lo rèsultat dedens la bouèta ([[Special:Captcha/help|més d’enformacions]]) :",
+ "captcha-createaccount": "Por nos édiér a combatre contre les crèacions ôtomatisâs de comptos, volyéd calcular l’opèracion simpla ce-desot et pués nen buchiér lo rèsultat dedens la bouèta ([[Special:Captcha/help|més d’enformacions]]) :",
+ "captcha-createaccount-fail": "Code de confirmacion fôx ou ben manquent.",
+ "captcha-create": "Por fâre ceta pâge, volyéd calcular l’opèracion simpla ce-desot et pués nen buchiér lo rèsultat dens la bouèta ([[Special:Captcha/help|més d’enformacions]]) :",
+ "captcha-sendemail": "Por nos édiér a combatre contre lo spame ôtomatisâ, volyéd calcular l’opèracion simpla ce-desot et pués nen buchiér lo rèsultat dedens la bouèta ([[Special:Captcha/help|més d’enformacions]]) :",
+ "captcha-sendemail-fail": "Code de confirmacion fôx ou ben manquent.",
+ "captcha-disabledinapi": "Ceta accion at fôta d’un captch·a, donc pôt pas étre fêta per l’API.",
+ "captchahelp-title": "Éde sur lo captch·a",
+ "captchahelp-cookies-needed": "Vos fôdrat ôtorisar los tèmouens (''cookies'') de voutron navigator por que cen fonccione.",
+ "captchahelp-text": "Los setos vouèbe qu’accèptont des contribucions du publico, coment ceti vouiqui, sont sovent victimos de spamors qu’utilisont des outils ôtomatisâs por betar tot plen de lims de vers lors setos.\nMémo se celos lims de spame pôvont étre suprimâs, nen réstont pas muens una nuésence visibla.\n\nDes côps, particuliérement pendent l’aponsa de lims de defôr novéls dens una pâge, lo vouiqui vos pôt montrar una émâge d’un tèxto colorâ, dèformâ ou ben tordu et pués vos demandar de buchiér los mots montrâs.\nMâlésiê a fâre de façon ôtomatisâ cél travâly, cen pèrmèt a la plepârt des homos de rèalisar lors contribucions tot en empachient la plepârt des spamors et des ôtros ataquents robotisâs.\n\nMâlherosament, ceta solucion pôt gênar los usanciérs mâl-veyents ou qu’utilisont un navigator en tèxto solèt ou ben vocal.\nPor lo moment, nos avens gins d’altèrnativa ôdiô.\nVos volyéd veriér vers los [[Special:ListAdmins|administrators du seto]] se cen vos empache de façon emprèvua de fâre des contribucions lèg·itimes.\n\nClicâd sur lo boton « Devant » de voutron navigator por tornar a la bouèta d’èdicion.",
+ "captcha-addurl-whitelist": " #<!-- lèssiéd ceta legne justo d’ense --> <pre>\n# La sintaxa est ceta :\n# * Tot caractèro dês « # » tant qu’a la fin de la legne est considèrâ coment un comentèro.\n# * Tota legne pas voueda est un bocon d’èxprèssion racionèla (*RegEx*) qu’analiserat ren que los hôtos dedens los lims hipèrtèxtos.\n #</pre> <!-- lèssiéd ceta legne justo d’ense -->",
+ "right-skipcaptcha": "Rèalisar des accions que dècllenchont un captch·a sen avêr a passar ceti"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/frr.json b/www/wiki/extensions/ConfirmEdit/i18n/frr.json
new file mode 100644
index 00000000..81d2184a
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/frr.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Murma174"
+ ]
+ },
+ "captcha-label": "CAPTCHA"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/fur.json b/www/wiki/extensions/ConfirmEdit/i18n/fur.json
new file mode 100644
index 00000000..32e78a9b
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/fur.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Klenje",
+ "Tocaibon"
+ ]
+ },
+ "captcha-edit": "Par cambiâ cheste pagjine, tu âs di risolvi cheste facile some e inserî la rispueste inte casele ([[Special:Captcha/help|altris informazions]]):",
+ "captcha-label": "CAPTCHA",
+ "captcha-addurl": "Il to cambiament al inclût gnûfs leams esternis.\nPar judânus cuintri la creazion automatiche di spam, tu âs di risolvi cheste facile some e inserî la rispueste inte casele ([[Special:Captcha/help|altris informazions]]):",
+ "captcha-badlogin": "Par judânus cuintri dai atacs automotics a lis peraulis clâfs, tu âs di risolvi cheste facile some e inserî la rispueste inte casele ([[Special:Captcha/help|altris informazions]]):",
+ "captcha-createaccount-fail": "Il codiç di control al mancje o nol è just.",
+ "captcha-create": "Par creâ cheste pagjine, tu âs di risolvi cheste facile some e inserî la rispueste inte casele ([[Special:Captcha/help|altris informazions]]):"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/fy.json b/www/wiki/extensions/ConfirmEdit/i18n/fy.json
new file mode 100644
index 00000000..debb68cd
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/fy.json
@@ -0,0 +1,16 @@
+{
+ "@metadata": {
+ "authors": [
+ "Snakesteuben",
+ "Robin0van0der0vliet",
+ "Robin van der Vliet"
+ ]
+ },
+ "captcha-label": "CAPTCHA",
+ "captcha-addurl": "Jo hawwe keppelings om utens oanpast/taheakke. As ekstra beskerming tsjin automatysk oanmakke reklame (SPAM) wurdt jo frege it antwurd op de ûndersteande som te jaan ([[Special:Captcha/help|meer ynformaasje]]):",
+ "captcha-createaccount": "As beskerming tsjin it automatysk oanmeitsjen fan meidochnammen wurdt jo frege it antwurd op de ûndersteande som te jaan ([[Special:Captcha/help|meer ynformaasje]]):",
+ "captcha-createaccount-fail": "De CAPTCHA ûntbrekt of is ûnkrekt.",
+ "captcha-create": "Om de side oan te meitsjen wurdt jo frege it antwurd op de ûndersteande som te jaan ([[Special:Captcha/help|meer ynformaasje]]).",
+ "captchahelp-title": "Lettertoets-help",
+ "captchahelp-text": "Websteeën dêr't it publyk op skriuwe kin, lykas dizze {{SITENAME}}-wiki, kinne lêst hawwe fan lju dy't automatysk keppelings oan de websiden tafoegje. Op dizze wiki kinne sokke feroarings maklik weromset wurde, mar dat nimt al tiid dy't ek oars brûkt wurde kin.\n\nBy it oanmelden as meidogger, en fierders benammen at jo keppelings om utens oan in side tafoegje, kinne jo fan de wiki in lettertoets krije. De wiki lit dan kleurde of ferwrongen letters sjen, en jo wurdt frege dy oer te tikken. Om't dit net maklik automatisearre wurde kin, hâldt dit it automatysk tafoegjen tsjin. It spitegernôch ek in lytse lêst foar de meidoggers.\n\nIn probleem dêr't noch gjin oplossing foar is it dat it in tûkelteam is foar minsken dy't net goed sjen kinne of dy't in tekst-blêder of lûd-blêder brûke. Hjir soe in lûd-ferzje foar komme moatte, mar dy is der noch net. Oerlis mei in behearder at dit foar jo problemen jout.\n\nGean tebek mei de tebek-knop fan jo blêder."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/ga.json b/www/wiki/extensions/ConfirmEdit/i18n/ga.json
new file mode 100644
index 00000000..6f26bd06
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/ga.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": [
+ "Alison",
+ "Tem"
+ ]
+ },
+ "captcha-edit": "Tá naisc URL nua san athrú seo atá tú ar tí a dhéanamh; mar chosaint in éadan turscair uathoibrithe, caithfidh tú an suim shimplí a réitigh agus a ionchur: <br />([[Special:Captcha/help|Céard é seo?]])",
+ "captcha-label": "CAPTCHA",
+ "captcha-addurl": "Tá naisc URL nua san athrú seo atá tú ar tí a dhéanamh; mar chosaint in éadan turscair uathoibrithe, caithfidh tú na focail san íomhá seo a ionchur: <br />([[Special:Captcha/help|Céard é seo?]])",
+ "captcha-createaccount": "Mar chosaint in éadan turscair uathoibrithe, caithfidh tú na focail san íomhá seo a ionchur chun cuntas a chlárú: <br />([[Special:Captcha/help|Céard é seo?]])",
+ "captcha-createaccount-fail": "Ní raibh an cód deimhnithe ceart sa bhosca, nó ní raibh aon chód ann ar chor ar bith.",
+ "captcha-create": "Tá naisc URL nua san athrú seo atá tú ar tí a dhéanamh; mar chosaint in éadan turscair uathoibrithe, caithfidh tú na focail san íomhá seo a ionchur: <br />([[Special:Captcha/help|Céard é seo?]])",
+ "captchahelp-title": "Cabhair maidir le Captcha"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/gcr.json b/www/wiki/extensions/ConfirmEdit/i18n/gcr.json
new file mode 100644
index 00000000..3a3c21ec
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/gcr.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "LeGuyanaisPure"
+ ]
+ },
+ "captcha-label": "CAPTCHA"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/gd.json b/www/wiki/extensions/ConfirmEdit/i18n/gd.json
new file mode 100644
index 00000000..4ce90edf
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/gd.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "GunChleoc"
+ ]
+ },
+ "captcha-label": "CAPTCHA"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/gl.json b/www/wiki/extensions/ConfirmEdit/i18n/gl.json
new file mode 100644
index 00000000..36b9068d
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/gl.json
@@ -0,0 +1,41 @@
+{
+ "@metadata": {
+ "authors": [
+ "Alma",
+ "Elisardojm",
+ "Toliño",
+ "Xosé",
+ "Banjo"
+ ]
+ },
+ "captcha-edit": "Para editar esta páxina, resolva a operación que aparece a continuación e introduza a resposta na caixa ([[Special:Captcha/help|máis información]]):",
+ "captcha-edit-fail": "Falta o código de confirmación (CAPTCHA) ou é incorrecto.",
+ "captcha-desc": "Proporciona CAPTCHA como protección fronte ao spam e ao descubrimento de contrasinais",
+ "captcha-label": "CAPTCHA",
+ "captcha-help": "Solución do CAPTCHA.",
+ "captcha-info-help": "Descrición do CAPTCHA.",
+ "captcha-id-label": "Identificador do CAPTCHA",
+ "captcha-id-help": "Este valor debe enviarse de novo sen cambiar.",
+ "captcha-addurl": "A súa edición inclúe novas ligazóns externas.\nPara protexer o wiki contra o spam automático, resolva operación que aparece a continuación e introduza a resposta na caixa ([[Special:Captcha/help|máis información]]):",
+ "captcha-badlogin": "Para protexer o wiki contra o roubo de contrasinais, resolva a operación que aparece a continuación e introduza a resposta na caixa ([[Special:Captcha/help|máis información]]):",
+ "captcha-createaccount": "Para protexer o wiki contra a creación automática de contas, resolva a operación que aparece a continuación e introduza a resposta na caixa ([[Special:Captcha/help|máis información]]):",
+ "captcha-createaccount-fail": "Falta o código de confirmación (CAPTCHA) ou é incorrecto.",
+ "captcha-create": "Para crear a páxina, resolva a operación que aparece a continuación e introduza a resposta na caixa ([[Special:Captcha/help|máis información]]):",
+ "captcha-sendemail": "Para protexer o wiki contra o spam automático, resolva a operación que aparece a continuación e introduza a resposta na caixa ([[Special:Captcha/help|máis información]]):",
+ "captcha-sendemail-fail": "Falta o código de confirmación (CAPTCHA) ou é incorrecto.",
+ "captcha-disabledinapi": "Esta acción necesita o captcha, polo que non se pode realizar a través da API.",
+ "captcha-error": "A verificación CAPTCHA fallou debido a un erro interno: $1",
+ "captchahelp-title": "Axuda acerca do CAPTCHA",
+ "captchahelp-cookies-needed": "Necesita ter as cookies habilitadas no seu navegador para que funcione.",
+ "captchahelp-text": "Os sitios web que aceptan publicar as contribucións dos usuarios, coma este wiki, sofren, con frecuencia, o abuso por parte de spammers que usan ferramentas que automatizan a inclusión de lixo en forma de ligazóns publicitarias, nunha chea de páxinas, en pouco tempo.\nMentres as devanditas ligazóns non son eliminadas supoñen unha molestia e unha perda de tempo.\n\nEn ocasións, en particular cando engada algunha nova ligazón externa, o wiki pode mostrar unha imaxe dun texto coloreado e distorsionado e pedirlle que introduza as palabras que se vexa.\nComo esta tarefa é difícil de automatizar, permite distinguir entre persoas e robots e dificulta os ataques automatizados dos spammers.\n\nPor desgraza, isto é un inconveniente para aqueles usuarios con dificultades de visión ou que utilicen navegadores de texto ou navegadores baseados en sistemas de voz.\nPolo de agora non dispoñemos dunha alternativa de son.\nPor favor, póñase en contacto cun [[Special:ListAdmins|administrador do sitio]] para solicitar axuda se o sistema lle impide rexistrarse para facer contribucións lexítimas.\n\nPrema no botón \"Atrás\" do seu navegador para volver á páxina de edición.",
+ "captcha-addurl-whitelist": " #<!-- Deixe esta liña tal e como está --> <pre>\n# A sintaxe é a seguinte:\n# * Todo o que vaia despois dun carácter \"#\" ata o final da liña é un comentario\n# * Toda liña que non estea en branco é un fragmento de expresión regular que só coincide con dominios dentro de enderezos URL\n #</pre> <!-- Deixe esta liña tal e como está -->",
+ "right-skipcaptcha": "Levar a cabo as accións que requiren CAPTCHA sen ter que introducilo",
+ "captcha-apihelp-param-captchaword": "Resposta ó CAPTCHA",
+ "captcha-apihelp-param-captchaid": "Identificador de CAPTCHA da consulta anterior",
+ "confirmedit-preview-line": "Número de liña",
+ "confirmedit-preview-content": "Contido",
+ "confirmedit-preview-validity": "Validez",
+ "confirmedit-preview-valid": "válida",
+ "confirmedit-preview-invalid": "non válida",
+ "confirmedit-preview-description": "A táboa seguinte amosa a lista de liñas nesta páxina e se é un enderezo IP válido ou un rango de enderezos IP. Se a liña é un enderezo IP válido ou rango de enderezos IP, pasará a unha lista branca para o CAPTCHA, pero as liñas non válidas serán ignoradas. Un exemplo dun rango de enderezos IP válido sería: 69.208.0.0/16 que vai desde 69.208.0.0 ata 69.208.255.255. [https://www.mediawiki.org/wiki/Especial:MyLanguage/Axuda:a gama_bloquea#Calcular_o_sufixo_de CIDR Máis información] sobre como calcular un rango de enderezos IP."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/glk.json b/www/wiki/extensions/ConfirmEdit/i18n/glk.json
new file mode 100644
index 00000000..6bb858c4
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/glk.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "V6rg"
+ ]
+ },
+ "captcha-label": "کأپچا"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/gom-deva.json b/www/wiki/extensions/ConfirmEdit/i18n/gom-deva.json
new file mode 100644
index 00000000..d85ae36a
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/gom-deva.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Santhosh.thottingal"
+ ]
+ },
+ "captcha-label": "कैप्चा"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/gom-latn.json b/www/wiki/extensions/ConfirmEdit/i18n/gom-latn.json
new file mode 100644
index 00000000..714a3548
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/gom-latn.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "The Discoverer"
+ ]
+ },
+ "captcha-label": "CAPTCHA"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/gor.json b/www/wiki/extensions/ConfirmEdit/i18n/gor.json
new file mode 100644
index 00000000..f8abd884
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/gor.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Marwan Mohamad"
+ ]
+ },
+ "captcha-label": "CAPTCHA"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/grc.json b/www/wiki/extensions/ConfirmEdit/i18n/grc.json
new file mode 100644
index 00000000..660b72e8
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/grc.json
@@ -0,0 +1,10 @@
+{
+ "@metadata": {
+ "authors": [
+ "Omnipaedista",
+ "Gts-tg"
+ ]
+ },
+ "captcha-label": "CAPTCHA",
+ "captchahelp-title": "Βοήθεια περὶ τοῦ captcha"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/gsw.json b/www/wiki/extensions/ConfirmEdit/i18n/gsw.json
new file mode 100644
index 00000000..8859ede7
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/gsw.json
@@ -0,0 +1,25 @@
+{
+ "@metadata": {
+ "authors": [
+ "Als-Chlämens",
+ "Als-Holder",
+ "Melancholie"
+ ]
+ },
+ "captcha-edit": "Zum d Syte bearbeite lees die Rächenufgab un trag s Ergebnis in s Fäld unten yy. [[Special:Captcha/help|(Frogen oder Probläm?)]]",
+ "captcha-desc": "Stellt CAPTCHA-Tächnike zum Schutz vor Spam un em Rote vu Passwerter z Verfiegig",
+ "captcha-label": "CAPTCHA",
+ "captcha-addurl": "In Dyynere Bearbeitig het s neiji externi Link.\nZum Schutz vor automatisiertem Spamming lees die Rächenufgab un trag s Ergebnis in s Fäld unten yy. Druck drno nomol uf „Syte spychere“. ([[Special:Captcha/help|meh Informatione …]]):",
+ "captcha-badlogin": "Zum Schutz vor ere Kompromittierig vu Dyynem Benutzerkonto lees die Rächenufgab un trag s Ergebnis in s Fäld unten yy ([[Special:Captcha/help|meh Informatione]]):",
+ "captcha-createaccount": "Zum Schutz vor automatisiertem Aalege vu Benutzerkonte lees die Rächenufgab un trag s Ergebnis in s Fäld unten yy. ([[Special:Captcha/help|meh Informatione]]):",
+ "captcha-createaccount-fail": "Bestätigungscode isch falsch oder fählt.",
+ "captcha-create": "Zum d Syten aalege lees die Rächenufgab un trag s Ergebnis in s Fäld unten yy. [[Special:Captcha/help|(Frogen oder Probläm?)]]",
+ "captcha-sendemail": "As Schutz gege e automatischs Spamming, lees die Rächenufgab un trag s Ergebnis in s Fäld unten yy ([[Special:Captcha/help|meh Informatione]]):",
+ "captcha-sendemail-fail": "Bestätigungscode isch falsch oder fählt.",
+ "captcha-disabledinapi": "Die Aktion brucht e Captcha. Si cha nit iber d API uusgfiert wäre.",
+ "captchahelp-title": "Captcha-Hilf",
+ "captchahelp-cookies-needed": "'''Wichtiger Hiiwyys:''' Im Browser mien Cookiers erlaubt syy.",
+ "captchahelp-text": "Internetaagebot, wu uf sin fir Byytreg vu jedem, wie z. B. des Wiki, wäre vyylmol vu Spammer missbruucht, wu ihri Links automatisch uf vyylene Netzsyte platziere. Die Spam-Links cha mer wider useneh, si stere aber zimli un nämme Arbetszyt in Aaspruch.\n\nIn e Teil Fäll, v. a. wänn neiji Link in e Syte dryygfiegt wäre, cha s syy, ass des Wiki derno ne Bild mit eme farbige un verzerrte Täxt aazeigt un dezue ufforderet, di aazeigte Werte yyzgee. Wel sonigi Ufgabe nit automatische chenne usgfiert wäre, cha mer eso di meischte Spammer, wu mit automatische Wärchzyyg schaffe, ufhalte, aber normali Benutzer chenne ihri Byytreg einewäg yygee.\n\nLeider cha des derzue fiere, ass Lyt Probläm iberchemme, wu ne yygschränkti Sähfähigkeit oder e Browser bruche, wu täxt- oder sprochbasiert isch.\nIm Momänt hän mir kei Audioalternative z Verfiegig.\nBitte nimm Kontakt uf zum [[Special:ListAdmins|Syteadministrator]] fir Unterstitzig wänn des Di uuerwartet abhaltet vu berächtigte Byyträg.\n\nIns Bearbeitigsfänschter chunnt mer derno eifach wider mit em „Zruck“-Chnopf.",
+ "captcha-addurl-whitelist": " #<!-- Die Zyyle derf nit gänderet wäre! --> <pre>\n# Syntax:\n# * Alles vun eme #-Zeiche bis zum Änd vu dr Zyyle isch e Kommentar\n# * Jedi nit-lääri Zyyle isch e Regex-Fragment, wu gegeniber dr dr Hostnäme vun ere URL prieft wird\n #</pre> <!-- Die Zyyle derf nit gänderet wäre! -->",
+ "right-skipcaptcha": "Iberspringe vu dr Captcha-Yygab"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/gu.json b/www/wiki/extensions/ConfirmEdit/i18n/gu.json
new file mode 100644
index 00000000..454806fe
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/gu.json
@@ -0,0 +1,29 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ashok modhvadia",
+ "Dsvyas",
+ "KartikMistry",
+ "Sushant savla",
+ "Arbhatt",
+ "Bhatakati aatma"
+ ]
+ },
+ "captcha-edit": "આ લેખમાં ફેરફાર કરવા માટે નીચે આપેલા સરળ દાખલાનો જવાબ તેની બાજુના ખાનામાં લખો ([[Special:Captcha/help|more info]]):",
+ "captcha-desc": "Provides CAPTCHA techniques to protect against spam and password-guessing",
+ "captcha-label": "કેપ્ચા",
+ "captcha-addurl": "તમે કરેલા ફેરફારોમાં નવી બાહ્ય કડીઓ સામેલ છે. સ્વચાલિત સ્પેમ/સ્પામ(spam) થી વિકિના બચાવ માટે, કૃપયા નીચે આપેલા સરળ દાખલાનો જવાબ તેની બાજુના ખાનામાં લખો અને આપનું સંપાદન સાચવો ([[Special:Captcha/help|more info]]):",
+ "captcha-badlogin": "આપોઆપ થતી ગુપ્તસંજ્ઞાની ચોરી (password cracking)થી વિકિના બચાવ માટે, કૃપયા નીચે આપેલા સરળ દાખલાનો જવાબ તેની બાજુના ખાનામાં લખો ([[Special:Captcha/help|more info]]):",
+ "captcha-createaccount": "આપોઆપ નવા ખાતા ખુલવાથી વિકિના બચાવ માટે નીચે આપેલા સરળ દાખલાનો જવાબ તેની બાજુના ખાનામાં લખો ([[Special:Captcha/help|વધુ વિગત]]):",
+ "captcha-createaccount-fail": "અયોગ્ય અથવા ખૂટતો CAPTCHA.",
+ "captcha-create": "નવું પાનું બનાવવા માટે નીચે આપેલા સરળ દાખલાનો જવાબ તેની બાજુના ખાનામાં લખો ([[Special:Captcha/help|more info]]):",
+ "captcha-sendemail": "આપોઆપ થતી સ્પેમિંગથી વિકિના બચાવ માટે, કૃપયા નીચે આપેલા સરળ દાખલાનો જવાબ તેની બાજુના ખાનામાં લખો ([[Special:Captcha/help|વધુ વિગત]]):",
+ "captcha-sendemail-fail": "અયોગ્ય અથવા ખૂટતો CAPTCHA.",
+ "captcha-disabledinapi": "આ ક્રિયા માટે કેપ્ચાની જરૂર છે, માટે તે API દ્વારા પાર પાડી શકાય તેમ નથી.",
+ "captchahelp-title": "કેપ્ટ્ચા/કેપ્ચા (CAPTCHA) મદદ",
+ "captchahelp-cookies-needed": "આ વ્યવસ્થિત રીતે જોઇ શકાય તે માટે તમારા બ્રાઉઝરમાં કુકીઝ એનેબલ કરેલી હોવી જોઇશે.",
+ "captchahelp-text": "આપણી વિકિ જેવી વૅબ સાઇટો કે જે લોકોને યોગદાન કરવાની પરવાનગી આપે છે, તેમનો સ્પામરો દ્વારા દુરૂપયોગ થતો આવ્યો છે. આવા સ્પામરો તેમની કડીઓ એક સાથે અનેક વૅબ સાઇટો પર મુકવા માટે સ્વચાલિત સાધનો વાપરે છે. આવી કડીઓ ખરેખર એક દૂષણ છે અને તેને દૂર કરવાના ઉપાય કરવા જોઇએ.\n\nક્યારેક, ખાસ કરીને જ્યારે તમે તમારા લેખમાં બાહ્ય કડી ઉમેરતા હોવ ત્યારે, વિકિ તમને એક રંગીન કે તુટેલા-ફુટેલા અક્ષરો કે શબ્દોનું ચિત્ર બતાવે અને તેમા વંચાતા શબ્દો બાજુનાં ખાનામાં લખવા માટે પુછે એવું બને. આનું કારણ એ છે કે આ એક એવી પદ્ધતિ છે જે સ્વચાલિત રીતે કરવી લગભગ અશક્ય છે, અને ફક્ત વ્યક્તિગત રીતે જ થઇ શકે છે, જે સ્પામરો અને અન્ય ઘુસણખોરો ના હુમલાને ખાળે છે.\n\nકમભાગ્યે આ પદ્ધતિ, એવા લોકોને તકલીફ આપે તેમ છે જેઓની દ્રષ્ટિ નબળી છે અથવા તો જેઓ વાચા આધારીત કે સાદા બ્રાઉઝરનો ઉપયોગ કરે છે. હાલમાં અમારી પાસે આવા ચિત્રોની વાચા આધારિત વ્યવસ્થા નથી. જો આ કારણે આપ કોઇ લેખમાં પ્રદાન ન કરી શકતા હોવ તો વધુ સહાય માટે કૃપા કરી [[Special:ListAdmins|site administrators]] નો સંપર્ક સાધો.\n\nલેખમા ફેરફાર કરવાના પાના ઉપર પાછા ફરવા માટે આપના બ્રાઉઝરના \"પાછા જાવ\" બટન ઉપર ક્લિક કરો.",
+ "captcha-addurl-whitelist": " #<!-- આ લીટીને જેમ છે તેમ જ રહેવા દો --> <pre>\n# સીન્ટેક્સ (Syntax) આ પ્રમાણે છે :\n# * \"#\" સંજ્ઞાથી શરૂ કરીને લીટીના અંત સુધીનું વર્ણન એક ટીપ્પણી છે\n# * ખાલી ન હોય તેવી દરેક લીટી રેજેક્સનો ભાગ છે, જે ફક્ત URLsમાંના હોસ્ટ સાથે જ મેળ ખાશે\n #</pre> <!-- આ લીટીને જેમ છે તેમ જ રહેવા દો -->",
+ "right-skipcaptcha": "કૈપ્ચા માધ્યમમાં ગયા વિના કૈપ્ચા કાર્યાન્વયન ક્રિયા અમલમાં મુકો",
+ "captcha-apihelp-param-captchaword": "કૈપ્ચામાં દેખાતો કૉડ પ્રવિષ્ઠ કરો"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/hak.json b/www/wiki/extensions/ConfirmEdit/i18n/hak.json
new file mode 100644
index 00000000..60fc4b1b
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/hak.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Hakka"
+ ]
+ },
+ "captcha-label": "CAPTCHA"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/he.json b/www/wiki/extensions/ConfirmEdit/i18n/he.json
new file mode 100644
index 00000000..b38255f2
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/he.json
@@ -0,0 +1,41 @@
+{
+ "@metadata": {
+ "authors": [
+ "Amire80",
+ "Guycn2",
+ "Rotem Liss",
+ "Rotemliss",
+ "YaronSh"
+ ]
+ },
+ "captcha-edit": "כדי לערוך את הדף, נא לפתור את המשימה הבאה ולהקליד את התשובה בתיבה ([[Special:Captcha/help|מידע נוסף]]):",
+ "captcha-edit-fail": "קוד אישור שגוי או חסר.",
+ "captcha-desc": "מתן טכניקות CAPTCHA להגנה נגד ספאם וניחוש סיסמאות",
+ "captcha-label": "CAPTCHA",
+ "captcha-help": "פתרון ה־CAPTCHA.",
+ "captcha-info-help": "תיאור של ה־CAPTCHA.",
+ "captcha-id-label": "מזהה ה־CAPTCHA",
+ "captcha-id-help": "הערך הזה אמור להישלח חזרה ללא שינוי.",
+ "captcha-addurl": "העריכה שלך כוללת קישורים חיצוניים חדשים.\nכהגנה מפני ספאם אוטומטי, נא לפתור את המשימה הבאה ולהקליד את התשובה בתיבה על מנת לשמור את העריכה שלך ([[Special:Captcha/help|מידע נוסף]]):",
+ "captcha-badlogin": "כהגנה מפני פריצת סיסמאות אוטומטית, נא לפתור את המשימה הבאה ולהקליד את התשובה בתיבה ([[Special:Captcha/help|מידע נוסף]]):",
+ "captcha-createaccount": "כהגנה מפני יצירת חשבונות אוטומטית, נא לפתור את המשימה הבאה ולהקליד את התשובה בתיבה ([[Special:Captcha/help|מידע נוסף]]):",
+ "captcha-createaccount-fail": "קוד אישור שגוי או חסר.",
+ "captcha-create": "כדי ליצור את הדף, נא לפתור את המשימה הבאה ולהקליד את התשובה בתיבה ([[Special:Captcha/help|מידע נוסף]]):",
+ "captcha-sendemail": "כהגנה מפני ספאם אוטומטי, נא לפתור את המשימה הבאה ולהקליד את התשובה בתיבה ([[Special:Captcha/help|מידע נוסף]]):",
+ "captcha-sendemail-fail": "קוד האישור שגוי או חסר.",
+ "captcha-disabledinapi": "פעולה זו דורשת פתרון CAPTCHA ולא ניתן לבצע אותה דרך ה־API.",
+ "captcha-error": "אישור CAPTCHA נכשל בגלל שגיאה פנימית: $1",
+ "captchahelp-title": "עזרה במערכת CAPTCHA",
+ "captchahelp-cookies-needed": "עליכם להפעיל את תכונת העוגיות (cookies) בדפדפן שלכם כדי שזה יעבוד.",
+ "captchahelp-text": "פעמים רבות מנצלים מפיצי תוכן זבל (\"ספאם\") אתרים שמקבלים תוכן מהציבור, כמו אתר הוויקי הזה, כדי לפרסם את הקישורים שלהם לאתרים רבים באינטרנט, באמצעות כלים אוטומטיים.\nאמנם ניתן להסיר את קישורי הספאם הללו, אך הם מהווים מטרד משמעותי.\n\nלעתים, במיוחד בעת הכנסת קישורי אינטרנט חדשים לתוך עמוד, אתר הוויקי עשוי להראות לך תמונה של טקסט צבעוני או מעוקם ולבקש להקליד את המילים המוצגות.\nכיוון שזו משימה שקשה לבצעה בצורה אוטומטית, הדבר יאפשר לבני־אדם אמתיים לשלוח את הדפים, אך יעצור את רוב מפיצי תוכן הזבל והמתקיפים הרובוטיים האחרים.\n\nלרוע המזל, הדבר עשוי לגרום לאי־נוחות למשתמשים עם דפדפן בגרסה מוגבלת, או שמשתמשים בדפדפנים מבוססי טקסט או דיבור.\nכרגע, אין לנו חלופה קולית זמינה.\nאנא צרו קשר עם [[Special:ListAdmins|מפעילי המערכת]] כדי לקבל עזרה אם המערכת מונעת מכם באופן בלתי צפוי לבצע עריכות לגיטימיות.\n\nלחצו על הכפתור \"חזרה\" בדפדפן שלכם כדי לחזור לדף העריכה.",
+ "captcha-addurl-whitelist": " #<!-- יש להשאיר שורה זו בדיוק כפי שהיא כתובה --> <pre>\n# זהו תחביר ההודעה:\n# * כל דבר בשורה שנכתב לאחר סימן \"#\" הוא הערה\n# * כל שורה לא ריקה היא ביטוי רגולרי שיתאים לאתרים בכתובות URL\n #</pre> <!-- יש להשאיר שורה זו בדיוק כפי שהיא כתובה -->",
+ "right-skipcaptcha": "ביצוע פעולות הדורשות פתרון CAPTCHA ללא צורך בפתרונו",
+ "captcha-apihelp-param-captchaword": "תשובה ל־CAPTCHA",
+ "captcha-apihelp-param-captchaid": "מזהה ב־CAPTCHA מהבקשה הקודמת",
+ "confirmedit-preview-line": "מספר השורה",
+ "confirmedit-preview-content": "תוכן",
+ "confirmedit-preview-validity": "תוקף",
+ "confirmedit-preview-valid": "תקף",
+ "confirmedit-preview-invalid": "לא תקף",
+ "confirmedit-preview-description": "הטבלה הבאה מציגה רשימה של שורות בדף הזה והאם זוהי כתובת IP תקינה או טווח IP תקין. אם השורה היא כתובת IP תקינה או טווח IP תקין, היא תהיה ברשימה לבנה של CAPTCHA, אבל לשורות בלתי־תקינות לא תהיה השפעה. דוגמה לטווח כתובות IP תקין היא 69.208.0.0/16, שהולך מ־69.208.0.0 עד 69.208.255.255. [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Range_blocks#Calculating_the_CIDR_suffix מידע נוסף] על חישוב טווח כתובות IP."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/hi.json b/www/wiki/extensions/ConfirmEdit/i18n/hi.json
new file mode 100644
index 00000000..7f3b3d0e
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/hi.json
@@ -0,0 +1,46 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ansumang",
+ "Kaustubh",
+ "Shyam",
+ "Siddhartha Ghai",
+ "आलोक",
+ "संजीव कुमार",
+ "Sfic",
+ "NehalDaveND",
+ "Jayprakash12345",
+ "Anamdas",
+ "Innocentbunny"
+ ]
+ },
+ "captcha-edit": "यह पन्ना संपादित करने के लिये नीचे दिये हुए आसान सवाल को हल करके उत्तर दिए गए बॉक्स में लिखें ([[Special:Captcha/help|अधिक जानकारी]]):",
+ "captcha-edit-fail": "केप्चा गलत या खाली है।",
+ "captcha-desc": "आसानसे कॅपचा (captcha) का इस्तेमाल\nस्पैम और कुट शब्द-अनुमान से बचने के लिए कॅपचा (CAPTCHA) तकनीक प्रदान करता है",
+ "captcha-label": "कैप्चा",
+ "captcha-help": "कैप्चा का समाधान",
+ "captcha-info-help": "कैप्चा का विवरण",
+ "captcha-id-label": "कैप्चा आईडी",
+ "captcha-id-help": "यह मान वापस अपरिवर्तित भेजा जाना चाहिए।",
+ "captcha-addurl": "आपके सम्पादन में नई बाहरी कड़ियाँ हैं।\nस्वचालित स्पॅम से बचाव में सहायता के लिये नीचे दिये हुए आसान गणित प्रश्न का उत्तर बक्से में लिखें ([[Special:Captcha/help|अधिक जानकारी]]):",
+ "captcha-badlogin": "स्वचालित कूटशब्द भेदन से बचाव में सहायता के लिये आपसे निवेदन है कि नीचे दिये हुए आसान प्रश्न का उत्तर बक्से में लिखें ([[Special:Captcha/help|अधिक जानकारी]]):",
+ "captcha-createaccount": "स्वचालित सदस्य पंजीकरण से बचाव में सहायता के लिये नीचे दिये हुए आसान प्रश्न का उत्तर बक्से में लिखें ([[Special:Captcha/help|अधिक जानकारी]]):",
+ "captcha-createaccount-fail": "केप्चा गलत या खाली है।",
+ "captcha-create": "यह पन्ना बनाने के लिये, नीचे दिये आसान प्रश्न का उत्तर बक्से में लिखें ([[Special:Captcha/help|अधिक जानकारी]]):",
+ "captcha-sendemail": "स्वचालित स्पैमिंग से बचाव के लिये कृपया नीचे दिये प्रश्न का उत्तर बक्से में लिखें\n([[Special:Captcha/help|अधिक जानकारी]]):",
+ "captcha-sendemail-fail": "केप्चा गलत या खाली है।",
+ "captcha-disabledinapi": "इस कार्रवाई हेतु CAPTCHA आवश्यक है, अतः एपीआई द्वारा इसे कार्यान्वित नहीं कर सकते हैं।",
+ "captcha-error": "आंतरिक त्रुटि के कारण कैप्चा सत्यापन विफल रहा: $1",
+ "captchahelp-title": "कॅप्टचा सहायता",
+ "captchahelp-cookies-needed": "यह कार्य करने के लिये आपने कूकीज (cookies) एनेबल किया होना आवश्यक हैं।",
+ "captchahelp-text": "इस विकि जैसे जालस्थल, जो जनता जनार्दन से लेख स्वीकार करते हैं, बहुधा रद्दी काम करने वालों के फंदे में आ जाते हैं, जो स्वचालित यंत्रों से कई स्थलों पर अपनी कड़ियाँ छापने की कोशिश करते हैं।\nयूँ तो ये रद्दी कड़ियाँ हटाई जा सकती हैं, पर फिर भी ये झंझट तो खड़ा करती ही हैं।\n\nकुछ बार, खासकर जब किसी पन्ने पृष्ठ पर एक नया जाल पता जोड़ा जाता है, तब विकी आपको एक रंगीन या टेढ़े मेढ़े लेख की तस्वीर दिखा के आपको उस तस्वीर में लिखी सामग्री को पढ़ के टंकित करने को कह सकती है।\nऐसी तस्वीर को यंत्र द्वारा पढ़ पाना मुश्किल होता है, इसलिए इसके जरिए अधिकतर मानव अपने लेख छाप पाएँगे और साथ ही अधितकर रद्दी वाले और यांत्रिक उपकरण नहीं छाप पाएँगे।\n\nदुर्भाग्यवश इससे सीमित चक्षु-दृष्टि वाले सदस्यों या पाठ-आधारित या वाचन-आधारित विचरकों का प्रयोग करने वाले सदस्यों को समस्या आती है।\nइस समय हमारे पास इसका श्रव्य विकल्प उपलब्ध नहीं है।\nयदि इसकी वजह से आपको वैध लेख लिखने में अवरोध आ रहा हो तो कृपया सहायता के लिए [[Special:ListAdmins|स्थल प्रबंधकों]] से संपर्क करें।\n\nपन्ना संपादन पर वापस जाने के लिए अपने विचरक पर 'एक पृष्ठ पीछे जाएँ' वाली कुंजी का प्रयोग करें।",
+ "captcha-addurl-whitelist": " #<!-- leave this line exactly as it is --> <pre>\n# इसकी रुपरेषा इस प्रकार हैं:\n# * \"#\" से शुरु होनेवाली सभी लाईनें टिप्पणीयाँ हैं।\n# * हर अन्य लाईन regex fragment हैं जो सिर्फ URL के होस्टस्‌ को जोडता हैं\n #</pre> <!-- leave this line exactly as it is -->",
+ "right-skipcaptcha": "Captcha में जाये बिना Captcha का इस्तेमाल करने के लिये मजबूर करें",
+ "captcha-apihelp-param-captchaword": "इस केप्चा का जवाब दो",
+ "captcha-apihelp-param-captchaid": "पिछले अनुरोध का कैप्चा आईडी",
+ "confirmedit-preview-line": "लाइन नंबर",
+ "confirmedit-preview-content": "सामग्री",
+ "confirmedit-preview-validity": "मान्यता",
+ "confirmedit-preview-valid": "मान्य",
+ "confirmedit-preview-invalid": "अमान्य"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/hif-latn.json b/www/wiki/extensions/ConfirmEdit/i18n/hif-latn.json
new file mode 100644
index 00000000..1ca4c179
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/hif-latn.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Girmitya"
+ ]
+ },
+ "captcha-label": "CAPTCHA"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/hr.json b/www/wiki/extensions/ConfirmEdit/i18n/hr.json
new file mode 100644
index 00000000..5068fa22
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/hr.json
@@ -0,0 +1,30 @@
+{
+ "@metadata": {
+ "authors": [
+ "Dalibor Bosits",
+ "Dnik",
+ "Ex13",
+ "Herr Mlinka",
+ "Roberta F.",
+ "SpeedyGonsales",
+ "Bugoslav",
+ "MaGa"
+ ]
+ },
+ "captcha-edit": "Da uredite ovu stranicu, molimo riješite jednostavno zbrajanje ispod i unesite rezultat u rubriku ([[Special:Captcha/help|više informacija]]):",
+ "captcha-desc": "Pruža CAPTCHA tehnike za zaštitu od neželjene pošte (spam-a) i pogađanja zaporke",
+ "captcha-label": "CAPTCHA",
+ "captcha-addurl": "Vaše uređivanje sadrži nove vanjske poveznice. Kao zaštitu od automatskog spama, trebate unijeti slova koja vidite na slici: <br />([[Special:Captcha/help|Pomoć?]])",
+ "captcha-badlogin": "Da se spriječi automatizirano pogađanje lozinki,\nmolimo zbrojite donje brojeve i upišite rezultat ([[Special:Captcha/help|pomoć]]):",
+ "captcha-createaccount": "Kao zaštitu od automatskog spama, pri otvaranju računa trebate unijeti slova koja vidite na slici: <br />([[Special:Captcha/help|Pomoć]])",
+ "captcha-createaccount-fail": "Nepotpun ili netočan CAPTCHA.",
+ "captcha-create": "Vaše uređivanje sadrži nove vanjske poveznice. Kao zaštitu od automatskog spama, trebate unijeti slova koja vidite na slici: <br />([[Special:Captcha/help|Pomoć?]])",
+ "captcha-sendemail": "Da bi ste nam pomogli protiv automatskog spama, molimo riješite jednostavan zadatak zbrajanja ispod i unesite rezultat u okvir ([[Special:Captcha/help|više informacija]]):",
+ "captcha-sendemail-fail": "Nepotpun ili netočan CAPTCHA.",
+ "captcha-disabledinapi": "Ova akcija traži captchu, tako da se ne može izvršiti preko API-ja.",
+ "captchahelp-title": "Antispam pomoć",
+ "captchahelp-cookies-needed": "Trebate imati uključene kolačiće (''cookies'') u vašem web pregledniku za ovu funkciju.",
+ "captchahelp-text": "Internetske stranice koje prihvaćaju doprinose čitatelja, poput ovoga wikija, često zloupotrebljavaju spameri, zlorabeći automatizirane alate pomoću kojih postavljaju svoje poveznice na mnoge stranice.\nIako se te spam poveznice mogu uklanjati, one predstavljaju značajne neugodnost pri radu.\n\nPonekad, a naročito kad se dodaje web poveznica na stranicu, wiki može prikazati sliku obojenog ili iskrivljenog teksta uz zahtjev za unos prikazanih riječi.\nBudući da je takvu radnju teško automatizirati, to će omogućiti istinskim suradnicima nastavak u pridonošenju, dok će zaustaviti većinu spamera i robotskih napadača.\n\nNa žalost, ovo može smetati suradnicima koji koriste tekstualne preglednike ili one glasovno bazirane. Trenutačno ne postoji glasovna podrška za to.\nMolimo obratite se [[Special:ListAdmins|administratorima]] za pomoć, ukoliko Vas ovo ometa pri dodavanju valjana sadržaja.\n\nPritisnite u svom pregledniku 'nazad' kako bi se vratili na uređivač stranice.",
+ "captcha-addurl-whitelist": " #<!-- leave this line exactly as it is --> <pre>\n# Rabi se sljedeća sintaksa:\n# * Sve od \"#\" znaka do kraja linije je komentar\n# * Svaki je neprazni redak regularni izraz (regex) koji odgovara poslužitelju unutar URL-a\n #</pre> <!-- leave this line exactly as it is -->",
+ "right-skipcaptcha": "Izvođenje akcija koje pokreću captcha bez prolaženja kroz captcha sustav"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/hrx.json b/www/wiki/extensions/ConfirmEdit/i18n/hrx.json
new file mode 100644
index 00000000..08ae787e
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/hrx.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Midnight Gambler"
+ ]
+ },
+ "captcha-label": "CAPTCHA"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/hsb.json b/www/wiki/extensions/ConfirmEdit/i18n/hsb.json
new file mode 100644
index 00000000..8861e46a
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/hsb.json
@@ -0,0 +1,23 @@
+{
+ "@metadata": {
+ "authors": [
+ "Michawiki"
+ ]
+ },
+ "captcha-edit": "Zo by stronu wobdźěłał, rozrisaj prošu slědowacy ličenski nadawk a zapodaj wuslědk do kašćika ([[Special:Captcha/help|Dalše informacije]]):",
+ "captcha-desc": "Staja CAPTCHA-techniki za škit přećiwo spamej a zhódowanju hesłow k dispoziciji",
+ "captcha-label": "CAPTCHA",
+ "captcha-addurl": "W twojej změnje su nowe eksterne wotkazy. Zo by wiki přećiwo awtomatizowanemu spamej škitał, prosymy će slědowacy nadawk wuličić a wuslědk do kašćika zapisować, zo by so twoja změna składowała ([[Special:Captcha/help|dalše informacije]]).",
+ "captcha-badlogin": "Zo by wiki přećiwo awtomatiskemu zadobywanju do hesłow škitał, prosymy će slědowacy nadawk wuličeć a wuslědk do kašćika zapisować ([[Special:Captcha/help|dalše informacije]]):",
+ "captcha-createaccount": "Zo by wiki přećiwo awtomatiskemu wutworjenju wužiwarskich kontow škitał, prosymy će slědowacy nadawk nadawk rozrisać a wuslědk do kašćika zapisować ([[Special:Captcha/help|dalše informacije]]):",
+ "captcha-createaccount-fail": "Wopačny abo falowacy wobkrućenski kod CAPTCHA.",
+ "captcha-create": "Zo by stronu wutworił, rozrisaj prošu slědowacy ličenski nadawk a zapodaj wuslědk do kašćika ([[Special:Captcha/help|Dalše informacije]]):",
+ "captcha-sendemail": "Za škit přećiwo awtomatiskemu spamowanju, rozrisaj prošu slědowacy jednory ličenski nadawk a zapodaj wotmołwu do kašćika ([[Special:Captcha/help|dalše informacije]]):",
+ "captcha-sendemail-fail": "Wopačny abo falowacy wobkrućenski kod CAPTCHA.",
+ "captcha-disabledinapi": "Tuta akcija wužaduje sej captcha, tohodla njeda so přez API wuwjesć.",
+ "captchahelp-title": "Pomoc za CAPTCHA",
+ "captchahelp-cookies-needed": "Dyrbiš placki (cookies) w swojim wobhladowaku zmóžnić.",
+ "captchahelp-text": "Websydła, kotrež powěsće wot kóždeho akceptuja, so často wot spamarjow znjewužiwaja, kotřiž swoje wotkazy awtomatisce na wjele sydłach rozdźěleja. Hačrunjež so tute spamwotkazy hodźa wotstronić, su wone njesnadne mjerzanje.\n\nDruhdy, wosebje, hdyž so nowe webwotkazy stronje přidawaja, móže so stać, zo pokazuje tutón wiki wobraz z barbnym abo skomolenym tekstom a će prosy, zo by pokazane słowa zapodał.\nDokelž to je nadawk, kotryž hodźi so jenož ćežko awtomatizować, dowoluje to woprawdźitym wosobam swoje powěsći wotpósłać, mjeztym zo so najwjace spamarjow a druhich nadpadowacych botow blokuje.\n\nBohužel móže to k wobćežnosćam za tutych wužiwarjow wjesć, kotrychž kmanosć widźenja je wobmjezowana abo kotřiž wobhladowaki wužiwaja, kotrež na tekst abo rěčne wudawanje bazěruja.\nTuchwilu njedisponujemy wo awdioalternatiwje.\nProšu staj so z [[Special:ListAdmins|administratorami sydła]] z prostwu wo pomoc do zwiska, jeli to će haći legitimne powěsće pósłać.\n\nKlikń na tłócatko \"Wróćo\" w swojim wobhladowaku, zo by so k editorej wróćił.",
+ "captcha-addurl-whitelist": " #<!-- leave this line exactly as it is --> <pre>\n# Syntaksa je slědowaca:\n# * Wšo wot znamješka \"#\" hač do kónca linky je komentar\n# * Kóžda popisana linka je fragment regex (regularneho wuraza) kotryž so z mjenom hosta wěsteje URL přirunuje\n #</pre> <!-- leave this line exactly as it is -->",
+ "right-skipcaptcha": "Captcha přeskočić"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/ht.json b/www/wiki/extensions/ConfirmEdit/i18n/ht.json
new file mode 100644
index 00000000..a0bfc442
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/ht.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": [
+ "Boukman",
+ "Masterches",
+ "Tisave"
+ ]
+ },
+ "captcha-edit": "Pou ou kapab modifye paj sa, nou mande w kalkile ti adisyon fasil sa epitou mete rezilta, repons ou an nan bwat ki bò kote l ([[Special:Captcha/help|konnen plis sou fonksyon sa]]):",
+ "captcha-desc": "Yon enplemantasyon captcha senp",
+ "captcha-label": "CAPTCHA",
+ "captcha-addurl": "Edisyon ou an genyen nouvo lyen pou andeyò.\nPou ede nou pwoteje sistèm an kont pouryèl, tanpri, fè ti adisyon fasil sa epi bay repons ou an nan bwat ([[Special:Captcha/help|plis èd sou fonksyon sa]]):",
+ "captcha-badlogin": "Pou ede nou lite kont òdinatè ki ap krake, pirate mopas yo, tanpri rezoud ti adisyon fasil sa epi mete repons ou an nan bwat ([[Special:Captcha/help|konnen plis sou fonksyon sa]]):",
+ "captcha-createaccount": "Pou ede nou lite kont kreyasyon kont otomatik yo, souple rezoud ti adisyon sa epi mete nan bwat an repons ou an ([[Special:Captcha/help|konnen plis sou fonksyon sa]]):"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/hu.json b/www/wiki/extensions/ConfirmEdit/i18n/hu.json
new file mode 100644
index 00000000..76de3ea4
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/hu.json
@@ -0,0 +1,34 @@
+{
+ "@metadata": {
+ "authors": [
+ "Dani",
+ "Dj",
+ "Glanthor Reviol",
+ "Tacsipacsi"
+ ]
+ },
+ "captcha-edit": "A lap szerkesztéséhez meg kell, hogy kérjünk, írd be a lenti dobozba az alábbi egyszerű összeadás eredményét ([[Special:Captcha/help|segítség]]):",
+ "captcha-edit-fail": "Hibás vagy hiányzó CAPTCHA.",
+ "captcha-desc": "CAPTCHA-technológiák a spamek és a jelszókitalálási technikák ellen",
+ "captcha-label": "CAPTCHA",
+ "captcha-help": "A CAPTCHA megoldása.",
+ "captcha-info-help": "A CAPTCHA leírása.",
+ "captcha-id-label": "CAPTCHA-azonosító",
+ "captcha-id-help": "Ezt az értéket változatlanul vissza kell küldeni.",
+ "captcha-addurl": "Szerkesztésed új külső linket tartalmaz. A reklámokat elhelyező robotok kiszűrése érdekében tisztelettel megkérünk, hogy írd be a lenti dobozba az alábbi egyszerű összeadás eredményét. ([[Special:Captcha/help|segítség]])",
+ "captcha-badlogin": "Az automatikus jelszófeltörés kiszűrése érdekében tisztelettel megkérünk, írd be a lenti dobozba az alábbi egyszerű összeadás eredményét ([[Special:Captcha/help|segítség]]):",
+ "captcha-createaccount": "A felhasználói fiókok automatizált létrehozásának kiszűrése érdekében meg kell, hogy kérjünk, írd be a lenti dobozba az alábbi egyszerű összeadás eredményét ([[Special:Captcha/help|segítség]]):",
+ "captcha-createaccount-fail": "Hibás vagy hiányzó ellenőrző kód.",
+ "captcha-create": "Az oldal elkészítéséhez meg kell, hogy kérjünk, írd be a lenti dobozba az alábbi egyszerű számtani művelet eredményét. ([[Special:Captcha/help|segítség]])",
+ "captcha-sendemail": "Hogy védjük a wikit az automatizált spammelés ellen, kérünk oldd meg az alábbi egyszerű összeadást, és írd be az eredményt a szövegdobozba ([[Special:Captcha/help|segítség]]):",
+ "captcha-sendemail-fail": "Hibás vagy hiányzó ellenőrző kód.",
+ "captcha-disabledinapi": "Ez a művelet captcha megoldásához kötött, így nem lehet végrehajtani az API-n keresztül.",
+ "captcha-error": "A CAPTCHA ellenőrzése sikertelen belső hiba miatt: $1",
+ "captchahelp-title": "Captcha-segítség",
+ "captchahelp-cookies-needed": "Engedélyezned kell a böngésződben a sütiket.",
+ "captchahelp-text": "Az olyan weboldalakat, amelyekre bárki írhat, gyakran támadják meg spammerek olyan eszközök felhasználásával, amelyek képesek automatikusan, emberi felügyelet nélkül elhelyezni egy linket sok különböző oldalon.\n\nAz ilyen linkek kézi eltávolítása rengeteg energiát emésztene fel, ezért néha, különösen ha egy külső linket teszel egy cikkbe, a wiki egy valamilyen módon eltorzított szöveget (captcha-t) jelenít meg, és arra kér, hogy gépeld be azt. Mivel ezt automatikusan nagyon nehéz megtenni, a valódi szerkesztők így könnyen megkülönböztethetőek a spammerek robotjaitól.\n\nSajnos ez komoly kényelmetlenséget jelenthet azoknak a felhasználóknak, akik gyengén látnak, vagy szöveges/hang-alapú böngészőt használnak. Jelenleg nem tudunk hang-alapú alternatívával szolgálni; ha a captcha megakadályoz abban, hogy szerkeszd a wikit, vedd fel a kapcsolatot az [[Special:ListAdmins|adminisztrátorokkal]].\n\nHa a captcha megoldása helyett inkább visszatérnél a szöveg szerkesztéséhez, használd a böngésződ „vissza” gombját.",
+ "captcha-addurl-whitelist": " #<!-- ezt a sort hagyd pontosan így --> <pre>\n# A szintaktika a következő:\n# * Minden „#” karakterrel kezdődő sor megjegyzés\n# * Minden nem üres sor egy reguláris kifejezés darabja, amely csak az URL-ekben található kiszolgálókra keres\n #</pre> <!-- ezt a sort hagyd pontosan így -->",
+ "right-skipcaptcha": "captcha átugrása",
+ "captcha-apihelp-param-captchaword": "Válasz a CAPTCHA-ra",
+ "captcha-apihelp-param-captchaid": "CAPTCHA-azonosító az előző kérésből"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/hy.json b/www/wiki/extensions/ConfirmEdit/i18n/hy.json
new file mode 100644
index 00000000..f1243cfd
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/hy.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "Vadgt"
+ ]
+ },
+ "captcha-label": "Անվտանգության կոդ",
+ "captchahelp-title": "Անվտանգության կոդի օգնություն"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/ia.json b/www/wiki/extensions/ConfirmEdit/i18n/ia.json
new file mode 100644
index 00000000..2265a492
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/ia.json
@@ -0,0 +1,37 @@
+{
+ "@metadata": {
+ "authors": [
+ "McDutchie"
+ ]
+ },
+ "captcha-edit": "Pro modificar iste pagina, resolve le carga hic infra e scribe le responsa in le quadro ([[Special:Captcha/help|plus info]]):",
+ "captcha-edit-fail": "Codice de confirmation (CAPTCHA) incorrecte o mancante.",
+ "captcha-desc": "Forni technicas CAPTCHA de protection contra spam e discoperta de contrasignos",
+ "captcha-label": "CAPTCHA",
+ "captcha-help": "Solution del CAPTCHA.",
+ "captcha-info-help": "Description del CAPTCHA.",
+ "captcha-id-label": "ID del CAPTCHA",
+ "captcha-id-help": "Iste valor debe esser retornate sin modification.",
+ "captcha-addurl": "Tu modification include nove ligamines externe.\nPro proteger le wiki contra le spam automatisate, per favor, resolve le carga hic infra e scribe le responsa in le quadro a fin de salveguardar tu modification ([[Special:Captcha/help|plus info]]):",
+ "captcha-badlogin": "Pro proteger le wiki contra le furto automatisate de contrasignos, per favor, resolve le carga hic infra e scribe le responsa in le quadro ([[Special:Captcha/help|plus info]]):",
+ "captcha-createaccount": "Pro proteger le wiki contra le creation automatisate de contos, per favor, resolve le carga hic infra e scribe le responsa in le quadro ([[Special:Captcha/help|plus info]]):",
+ "captcha-createaccount-fail": "Codice de confirmation (CAPTCHA) incorrecte o mancante.",
+ "captcha-create": "Pro crear le pagina, resolve le carga hic infra e scribe le responsa in le quadro ([[Special:Captcha/help|plus info]]):",
+ "captcha-sendemail": "Pro proteger le wiki contra le spam automatisate, per favor, resolve le carga hic infra e scribe le responsa in le quadro ([[Special:Captcha/help|plus info]]):",
+ "captcha-sendemail-fail": "Codice de confirmation (CAPTCHA) incorrecte o mancante.",
+ "captcha-disabledinapi": "Iste action require un captcha, dunque illo non pote esser exequite per medio del API.",
+ "captcha-error": "Le verification del CAPTCHA ha fallite a causa de un error interne: $1",
+ "captchahelp-title": "Adjuta super le captcha",
+ "captchahelp-cookies-needed": "Tu debe haber le cookies activate in tu navigator a fin que isto pote functionar.",
+ "captchahelp-text": "Le sitos web que accepta contributiones del publico, como iste wiki, es frequentemente abusate per spammatores que usa instrumentos automatic pro publicar lor ligamines in multe sitos.\nBen que iste ligamines spam pote esser eliminate, illos constitue un considerabile molestia.\n\nAlcun vices, specialmente quando tu adde nove ligamines web a un pagina, le wiki pote monstrar te un imagine de texto colorate o distorquite e demandar que tu entra le parolas monstrate.\nPost que isto es un carga difficile de automatisar, isto permittera al major parte del humanos real de facer lor contributiones, durante que le major parte del spammatores e altere attaccatores robotic es stoppate.\n\nInfelicemente isto pote incommodar le usatores con vision limitate o usante navigatores a base de texto o synthese vocal.\nAl momento nos non dispone de un alternativa audio.\nPer favor contacta le [[Special:ListAdmins|administratores del sito]] pro assistentia si isto insperatemente te impedi de facer contributiones legitime.\n\nClicca le button 'retro' in tu navigator pro retornar al pagina de modification.",
+ "captcha-addurl-whitelist": " #<!-- non modificar in alcun modo iste linea --> <pre>\n# Le syntaxe es lo sequente:\n# * Toto a partir de un character \"#\" usque al fin del linea es un commento\n# * Omne linea non vacue es un fragmento regex applicabile solmente a nomines de host intra adresses URL\n #</pre> <!-- non modificar in alcun modo iste linea -->",
+ "right-skipcaptcha": "Executar le actiones que activarea le captcha sin deber passar per le captcha",
+ "captcha-apihelp-param-captchaword": "Responsa al CAPTCHA",
+ "captcha-apihelp-param-captchaid": "Le ID de CAPTCHA del requesta precedente",
+ "confirmedit-preview-line": "Numero de linea",
+ "confirmedit-preview-content": "Contento",
+ "confirmedit-preview-validity": "Validitate",
+ "confirmedit-preview-valid": "valide",
+ "confirmedit-preview-invalid": "invalide",
+ "confirmedit-preview-description": "Le tabella sequente monstra un lista de lineas sur iste pagina e si se tracta de un adresse o intervallo IP valide. Si le linea es un adresse o intervallo IP valide, illo essera dispensate del verification CAPTCHA, ma le lineas invalide essera ignorate. Un exemplo de un intervallo IP valide es: 69.208.0.0/16 le qual coperi le adresses de 69.208.0.0 a 69.208.255.255. [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Range_blocks#Calculating_the_CIDR_suffix Lege plus] sur le calculation de un intervallo de adresses IP."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/id.json b/www/wiki/extensions/ConfirmEdit/i18n/id.json
new file mode 100644
index 00000000..df7e39a1
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/id.json
@@ -0,0 +1,29 @@
+{
+ "@metadata": {
+ "authors": [
+ "Borgx",
+ "Farras",
+ "Ilham151096",
+ "IvanLanin",
+ "Iwan Novirion",
+ "Kenrick95",
+ "Rex"
+ ]
+ },
+ "captcha-edit": "Untuk menyunting halaman ini, harap pecahkan penjumlahan sederhana di bawah ini dan masukkan jawaban di kotak yang tersedia ([[Special:Captcha/help|info lengkap]]):",
+ "captcha-desc": "Menyediakan teknik captcha untuk melindungi terhadap spam dan penebakan sandi",
+ "captcha-label": "CAPTCHA",
+ "captcha-addurl": "Suntingan Anda menyertakan pranala luar baru.\nSebagai pelindungan terhadap ''spam'' otomatis, Anda harus mengetikkan hasil perhitungan sederhana berikut ini \n([[Special:Captcha/help|info lengkap]]):",
+ "captcha-badlogin": "Untuk melindungi wiki ini dari perengkahan kunci sandi otomatis, harap masukkan hasil perhitungan sederhana berikut dalam kotak yang tersedia ([[Special:Captcha/help|info lengkap]]):",
+ "captcha-createaccount": "Untuk melindungi wiki ini dari pembuatan akun otomatis, kami meminta Anda untuk mengetikkan hasil perhitungan sederhana di bawah ini dalam kotak yang tersedia \n([[Special:Captcha/help|info lengkap]]):",
+ "captcha-createaccount-fail": "Kode konfirmasi salah atau belum diisi.",
+ "captcha-create": "Untuk menyunting halaman ini, silakan pecahkan penjumlahan sederhana di bawah ini dan masukkan jawaban di kotak yang tersedia ([[Special:Captcha/help|info lengkap]]):",
+ "captcha-sendemail": "Untuk melindungi wiki ini dari spam otomatis, kami meminta Anda untuk memecahkan penjumlahan sederhana di bawah ini dan masukkan jawaban di kotak yang tersedia ([[Special:Captcha/help|more info]]):",
+ "captcha-sendemail-fail": "Kode konfirmasi salah atau belum diisi.",
+ "captcha-disabledinapi": "Tindakan ini membutuhkan captcha, sehingga tidak dapat dilakukan melalui API.",
+ "captchahelp-title": "Mengenai Captcha",
+ "captchahelp-cookies-needed": "Anda perlu mengaktifkan kuki pada peramban web Anda untuk menggunakan fitur ini.",
+ "captchahelp-text": "Situs-situs web yang menerima tulisan dari publik, seperti wiki ini, kerapkali disalahgunakan oleh pengguna-pengguna yang tidak bertanggungjawab untuk mengirimkan spam dengan menggunakan program-program otomatis.\nWalaupun pranala-pranala spam tersebut dapat dibuang, tetapi tetap saja menimbulkan gangguan berarti.\n\nKadang-kadang, terutama ketika sedang menambahkan pranala web baru ke suatu halaman, wiki ini akan menampilkan sebuah bentuk gambar dari tulisan berwarna atau terdistorsi dan meminta Anda untuk mengetikkan kata yang ditampilkan.\nKarena ini merupakan suatu pekerjaan yang sulit diotomatisasi, pembatasan ini akan dapat dengan mudah dilalui oleh manusia, sekaligus juga dapat menghentikan hampir semua serangan spam dan robot otomatis lainnya.\n\nSayangnya, hal ini dapat menimbulkan kesulitan bagi pengguna dengan keterbatasan penglihatan atau pengguna yang menggunakan penjelajah web berbasis-teks atau berbasis-suara.\nSaat ini, kami belum memiliki suatu alternatif suara untuk hal ini.\nSilakan hubungi [[Special:ListAdmins|pengurus]] untuk meminta bantuan jika hal ini menghambat Anda untuk mengirimkan suntingan yang layak.\n\nTekan tombol 'back' di penjelajah web Anda untuk kembali ke halaman penyuntingan.",
+ "captcha-addurl-whitelist": " #<!-- biarkan baris ini sebagaimana adanya --> <pre>\n# Sintaksisnya adalah sebagai berikut:\n# * Semua yang diawali dengan karakter \"#\" hingga akhir baris adalah komentar\n# * Semua baris yang tidak kosong adalah fragmen regex yang hanya akan dicocokkan dengan nama host di dalam URL\n #</pre> <!-- biarkan baris ini sebagaimana adanya -->",
+ "right-skipcaptcha": "Melakukan tindakan pemicu captcha tanpa melalui Captcha"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/ie.json b/www/wiki/extensions/ConfirmEdit/i18n/ie.json
new file mode 100644
index 00000000..e81e2e76
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/ie.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Stavanger7"
+ ]
+ },
+ "captcha-label": "CAPTCHA"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/ilo.json b/www/wiki/extensions/ConfirmEdit/i18n/ilo.json
new file mode 100644
index 00000000..c46747c6
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/ilo.json
@@ -0,0 +1,24 @@
+{
+ "@metadata": {
+ "authors": [
+ "Lam-ang"
+ ]
+ },
+ "captcha-edit": "Tapno maurnos daytoy a panid, pangaasim a sulbaren ti nalaka a dagup dita baba ken ikabil ti sungbat mo dita kahon ([[Special:Captcha/help|adu pay a pakaammo]]):",
+ "captcha-edit-fail": "Saan a husto wenno awan a CAPTCHA.",
+ "captcha-desc": "Ikkan na kadagiti CAPTCHA a pamay-ay tapno masalakniban kadagiti spam ken agpugpugto ti kontrasenias",
+ "captcha-label": "CAPTCHA",
+ "captcha-addurl": "Ti inurnosmo ket nangiraman kadagiti baro a panilpo.\nTapno masalakniban ti wiki kadagiti automatiko a spam, agpangpanga-asi kami kaniam a sulbaren ti nalaka a dagup dita baba ken ikabil ti sungbat dita kahon tapno maidulin ti inurnosmo ([[Special:Captcha/help|adu pay a pakaammo]]):",
+ "captcha-badlogin": "Tapno makasalakniban ti wiki kadagiti automatiko a panagsulbar ti kontrasenias, agpangpangnga-asi kami kaniam a sulbaren ti nalaka a dagup dita baba ken ikabil ti sungbat dita kahon ([[Special:Captcha/help|adu pay a pakaammo]]):",
+ "captcha-createaccount": "Tapno masalakniban ti wiki kadagiti automatiko a panagaramid ti pakabilangan, agpangpanga-asi kami kaniam a sulbaren ti nalaka a dagup dita baba ken ikabil ti sungbat dita kahon ([[Special:Captcha/help|adu pay a pakaammo]]):",
+ "captcha-createaccount-fail": "Saan a husto wenno awan a CAPTCHA.",
+ "captcha-create": "Tapno maramid ti panid, pangaasim a sulbaren ti nalaka a dagup dita baba ken ikabil ti sungbat dita kahon ([[Special:Captcha/help|adu pay a pakaammo]]):",
+ "captcha-sendemail": "Tapno makasalaknib ti wiki kadagiti automatiko a panagspam, agpangpangnga-asi kami kaniam a sulbaren ti nalaka a dagup dita baba ken ikabil ti sungbat dita kahon ([[Special:Captcha/help|adu pay a pakaammo]]):",
+ "captcha-sendemail-fail": "Saan a husto wenno awan a CAPTCHA.",
+ "captcha-disabledinapi": "Daytoy nga aramid ket nasken ti captcha, saan a mabalin a maaramid idiay API.",
+ "captchahelp-title": "Tulong ti CAPTCHA",
+ "captchahelp-cookies-needed": "Masapul nga adda galietas ti pagbasabasam tapno mabalin daytoy.",
+ "captchahelp-text": "Dagiti website nga agaw-awat kadagiti maipablaak manipud iti publiko, kasla iti daytoy a wiki, ket masansan nga abusuen dagiti spammer nga agus-usar kadagiti automatiko a ramit tapno agipablaak kadagiti bukodda a silpo kadagiti adu a sitio. Bayat a mabalin a maikkat dagitoy a silpo, dagitoy ket nakaro a makariro.\n\nIti sagpaminsan, nangruna no agikabil kadagiti baro a silpo ti web iti panid, mabalin nga agiparang kenka ti wiki iti maysa a ladawan a namarisan wenno bakkaweng a teksto ken agdamag kenka nga agimakinilya kadagiti maiparang a balikas.\n\nYantangay a daytoy ket obra a narigat a ma-automatiko, kaaduan a mangipalubos nga agipablaak kadagiti pudno a tao bayat nga agpasardeng kadagiti kaaduan nga spammer ken dagiti dadduma nga agraraut a robot.\n\nDaksangasat met a parigatenna dagiti agar-aramat a saan unay a makakita wenno agus-usar kadagiti pagbasabasa a naibatay iti teksto wenno naibatay iti bitla.\nIti agdama awan kami pay iti maysa a magun-od a pagpilian nga audio.\nPangngaasi a kontaken dagiti [[Special:ListAdmins|administrador ti sitio]] para iti tulong no daytoy ket nabigla a mangpawil kenka manipud iti panagaramid kadagiti lehitimado a tignaymo.\n\nPinduten ti buton ti \"back\" dita pagbasabasam tapno makasubli iti editor ti panid.",
+ "captcha-addurl-whitelist": " #<!-- baybayam nga kasta daytoy nga linia --> <pre>\n# Dagiti sumaganad a gramatika:\n# * Amin-amin a naggapu iti \"#\" a kabalinan inggana ti kalpasan ti linia ket komentario\n# * Amin a saan a blanko a linia ket regex fragment a mangipada laeng ti naggapuan a nagsangailian iti uneg ti URLs\n #</pre> <!-- baybay-am a kasta daytoy a linia -->",
+ "right-skipcaptcha": "Pakabaelan ti agkalbit ti CAPTCHA kadagiti aramid a saan a mapan ti CAPTCHA."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/inh.json b/www/wiki/extensions/ConfirmEdit/i18n/inh.json
new file mode 100644
index 00000000..875b4b48
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/inh.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Adam-Yourist"
+ ]
+ },
+ "captcha-label": "CAPTCHA"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/io.json b/www/wiki/extensions/ConfirmEdit/i18n/io.json
new file mode 100644
index 00000000..be6a0763
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/io.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Joao Xavier"
+ ]
+ },
+ "captcha-label": "CAPTCHA"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/is.json b/www/wiki/extensions/ConfirmEdit/i18n/is.json
new file mode 100644
index 00000000..752884f0
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/is.json
@@ -0,0 +1,29 @@
+{
+ "@metadata": {
+ "authors": [
+ "S.Örvarr.S",
+ "Snævar",
+ "Sveinn í Felli"
+ ]
+ },
+ "captcha-edit": "Til að breyta þessari síðu, vinsamlegast leystu verkefnið að neðan og skrifaðu svarið í\nreitinn ([[Special:Captcha/help|frekari upplýsingar]]):",
+ "captcha-edit-fail": "Staðfestingarkóðinn var rangur eða ekki til staðar.",
+ "captcha-label": "CAPTCHA",
+ "captcha-addurl": "Breyting þín felur í sér viðbætta ytri tengla. Til að verjast sjálfvirku\nauglýsingarusli, biðjum við þig vinsamlegast að leysa verkefnið að neðan og skrifa svarið í reitinn til að vista breytinguna þína. ([[Special:Captcha/help|frekari upplýsingar]]):",
+ "captcha-badlogin": "Til að verjast sjálfvirkum leyniorðaárásum, biðjum við þig vinsamlegast að leysa verkefnið að neðan og skrifa svarið í reitinn ([[Special:Captcha/help|frekari upplýsingar]]):",
+ "captcha-createaccount": "Til að verjast sjálfvirkri stofnun aðganga, biðjum þig vinsamlegast að leysa verkefnið að neðan og skrifa svarið í reitinn ([[Special:Captcha/help|frekari upplýsingar]]):",
+ "captcha-createaccount-fail": "Staðfestingarkóðinn var rangur eða ekki til staðar.",
+ "captcha-create": "Til að búa síðuna til, vinsamlegast leystu verkefnið að neðan og skrifaðu svarið í reitinn ([[Special:Captcha/help|frekari upplýsingar]]):",
+ "captcha-sendemail": "Til að verjast sjálfvirkri gerð aðganga, biðjum við þig vinsamlegast að leysa verkefnið að neðan og skrifa svarið í kassann ([[Special:Captcha/help|frekari upplýsingar]]):",
+ "captcha-sendemail-fail": "Staðfestingarkóðinn var rangur eða ekki til staðar.",
+ "captcha-disabledinapi": "Þessi aðgerð þarfnast kæfuvarnar og því er ekki hægt að framkvæma hana í gegnum API.",
+ "captchahelp-title": "Captcha-hjálp",
+ "captchahelp-cookies-needed": "Þú verður að leyfa vefkökur til þess að þetta virki.",
+ "captchahelp-text": "Vefsíður sem að leyfa framlög frá frá almenningi, líkt og þessi wiki-vefur, eru oft misnotaðar af svokölluðum „spömmurum“ sem nota sjálfvirk tól til þess að setja inn tengla á aðrar vefsíður. Aðrir notendur geta fjarlægt þessa tengla en töluverð truflun er af þeim.\n\nStundum þegar þú breytir síðum, sérstaklega ef breytingin felur í sér nýja tengla á aðra vefi, getur gerst að þú sért beðin(n) um að skrifa inn orð sem birtast á lituðum eða óskýrum myndum. Fyrir flesta mannlega notendur er þetta lítið mál en sjálfvirk tól ráða ekki við þetta.\n\nÞví miður kann þetta að valda notendum óþægindum sem hafa skerta sjón eða notast við talmálsvafra. Enn sem komið er eru ekki til aðrir valkostir fyrir þau tilvik. \nVinsamlegast hafðu samband við [[Special:ListAdmins|stjórnanda síðunnar]] til að fá aðstoð ef þetta kemur í veg fyrir lögmætar breytingar af þinni hálfu.\n\nNotaðu „til-baka“-hnapp vafrans til að breyta síðunni.",
+ "right-skipcaptcha": "Geta gert aðgerðir án þess að nota kæfuvörn",
+ "confirmedit-preview-line": "Línunúmer",
+ "confirmedit-preview-content": "Efni",
+ "confirmedit-preview-validity": "Gildi",
+ "confirmedit-preview-valid": "gilt",
+ "confirmedit-preview-invalid": "ógilt"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/it.json b/www/wiki/extensions/ConfirmEdit/i18n/it.json
new file mode 100644
index 00000000..cf5ddaf1
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/it.json
@@ -0,0 +1,43 @@
+{
+ "@metadata": {
+ "authors": [
+ "Beta16",
+ "BrokenArrow",
+ "Darth Kule",
+ "Nemo bis",
+ "Lucas2",
+ "Matteocng",
+ "Selven"
+ ]
+ },
+ "captcha-edit": "Per modificare la pagina è necessario risolvere l'attività presentata di seguito e inserire la risposta nella casella\n([[Special:Captcha/help|maggiori informazioni]]):",
+ "captcha-edit-fail": "Codice di verifica errato o mancante.",
+ "captcha-desc": "Fornisce tecniche CAPTCHA per la protezione contro lo spam e l'individuazione delle password",
+ "captcha-label": "CAPTCHA",
+ "captcha-help": "Soluzione del CAPTCHA.",
+ "captcha-info-help": "Descrizione del CAPTCHA.",
+ "captcha-id-label": "ID CAPTCHA",
+ "captcha-id-help": "Questo valore dovrebbe essere restituito invariato.",
+ "captcha-addurl": "La modifica richiesta aggiunge dei nuovi collegamenti esterni alla pagina; come misura precauzionale contro l'inserimento automatico di spam, si prega di risolvere l'attività presentata di seguito e inserire la risposta nella casella ([[Special:Captcha/help|maggiori informazioni]]):",
+ "captcha-badlogin": "Come misura precauzionale contro i tentativi di forzatura automatica della password, si prega di risolvere l'attività presentata di seguito e inserire la risposta nella casella ([[Special:Captcha/help|maggiori informazioni]]):",
+ "captcha-createaccount": "Come misura precauzionale contro i tentativi di registrazione automatica, si prega di risolvere l'attività presentata di seguito e inserire la risposta nella casella ([[Special:Captcha/help|maggiori informazioni]]):",
+ "captcha-createaccount-fail": "Codice di verifica errato o mancante.",
+ "captcha-create": "Per creare la pagina è necessario risolvere l'attività presentata di seguito e inserire la risposta nella casella:<br />\n([[Special:Captcha/help|maggiori informazioni]]):",
+ "captcha-sendemail": "Come misura precauzionale nei confronti dei messaggi di spam automatici, si prega di risolvere l'attività presentata di seguito e inserire la risposta nella casella ([[Special:Captcha/help|maggiori informazioni]]):",
+ "captcha-sendemail-fail": "Codice di verifica errato o mancante.",
+ "captcha-disabledinapi": "Questa azione richiede un captcha, quindi non può essere eseguita tramite API.",
+ "captcha-error": "Verifica CAPTCHA fallita a causa di un errore interno: $1",
+ "captchahelp-title": "Cos'è il captcha?",
+ "captchahelp-cookies-needed": "È necessario abilitare i cookie sul proprio browser per proseguire",
+ "captchahelp-text": "Capita spesso che i siti web che accettano contributi pubblici, come questo wiki, siano presi di mira da spammer che usano strumenti automatici per inserire collegamenti pubblicitari verso un gran numero di siti. Per quanto i collegamenti indesiderati si possano rimuovere, si tratta comunque di una seccatura non indifferente.\n\nIn alcuni casi, specie quando si tenta di aggiungere nuovi collegamenti web in una pagina, il software wiki può mostrare una immagine con un breve testo colorato e/o distorto chiedendo di riscriverlo in un'apposita casella. Poiché l'interpretazione dell'immagine è un'azione difficile da far eseguire a un programma, tale sistema permette agli utenti reali di completare l'inserimento desiderato, impedendo l'accesso alla maggior parte degli spammer e degli altri attacchi automatizzati.\n\nSfortunatamente, queste misure di sicurezza possono mettere in difficoltà gli utenti con problemi visivi o coloro che utilizzano browser testuali o basati sulla sintesi vocale. Purtroppo al momento non è disponibile un meccanismo alternativo basato su messaggi audio; se queste procedure impediscono l'inserimento di informazioni appropriate, si prega di contattare gli [[Special:ListAdmins|amministratori del sito]] e chiedere loro assistenza.\n\nFare clic sul pulsante \"indietro\" del browser per tornare alla pagina di modifica.",
+ "captcha-addurl-whitelist": " #<!-- non modificare in alcun modo questa riga --> <pre>\n# La sintassi è la seguente:\n# * Tutto ciò che segue un carattere \"#\" è un commento, fino al termine della riga\n# * Tutte le righe non vuote sono frammenti di espressioni regolari che si applicano al solo nome dell'host nelle URL\n #</pre> <!-- non modificare in alcun modo questa riga -->",
+ "right-skipcaptcha": "Compie le azioni che attiverebbero il captcha senza dover passare per il captcha",
+ "captcha-apihelp-param-captchaword": "Risposta al CAPTCHA",
+ "captcha-apihelp-param-captchaid": "ID CAPTCHA dalla precedente richiesta",
+ "confirmedit-preview-line": "Numero di riga",
+ "confirmedit-preview-content": "Contenuto",
+ "confirmedit-preview-validity": "Validità",
+ "confirmedit-preview-valid": "valido",
+ "confirmedit-preview-invalid": "non valido",
+ "confirmedit-preview-description": "La seguente tabella mostra la lista delle linee su questa pagina e se è un indirizzo IP o un intervallo di indirizzi IP. Se la linea è un indirizzo IP valido o un intervallo di indirizzi IP, sarà inserito nella whitelist dal CAPTCHA, ma le linee non valide saranno ignorate. Un esempio di intervallo di indirizzi IP valido potrebbe essere: 69.208.0.0/16 che va da 69.208.0.0 a 69.208.255.255. [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Range_blocks#Calculating_the_CIDR_suffix Ulteriori informazioni] sul calcolo di un intervallo di indirizzi IP."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/ja.json b/www/wiki/extensions/ConfirmEdit/i18n/ja.json
new file mode 100644
index 00000000..e2c95e28
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/ja.json
@@ -0,0 +1,46 @@
+{
+ "@metadata": {
+ "authors": [
+ "Aotake",
+ "Fryed-peach",
+ "Hosiryuhosi",
+ "JtFuruhata",
+ "Shirayuki",
+ "Whym",
+ "Ridmevo",
+ "Otokoume",
+ "Yusuke1109",
+ "Omotecho"
+ ]
+ },
+ "captcha-edit": "このページを編集するには、下記の数式を計算してその答えを欄に入力してください ([[Special:Captcha/help|ヘルプ]]):",
+ "captcha-edit-fail": "CAPTCHA が正しくない、または入力されていません。",
+ "captcha-desc": "スパム攻撃やパスワード推定攻撃を防ぐための CAPTCHA 技術を提供する",
+ "captcha-label": "CAPTCHA",
+ "captcha-help": "CAPTCHAの解決策。",
+ "captcha-info-help": "CAPTCHAの説明。",
+ "captcha-id-label": "CAPTCHA ID",
+ "captcha-id-help": "この値は変更されずに戻されます。",
+ "captcha-addurl": "新しい外部リンクを追加しようとしています。\n自動でのスパム攻撃を防ぐため、お手数ですが下記の数式を計算してその答えを欄に入力してください ([[Special:Captcha/help|ヘルプ]]):",
+ "captcha-badlogin": "自動でのパスワードクラック攻撃からウィキを保護するため、お手数ですが下記の簡単な数式を計算してその答えを欄に入力してください ([[Special:Captcha/help|詳細]]):",
+ "captcha-createaccount": "アカウントの自動登録からウィキを保護するため、お手数ですが下記の簡単な数式を計算してその答えを欄に入力してください ([[Special:Captcha/help|ヘルプ]]):",
+ "captcha-createaccount-fail": "CAPTCHA が正しくない、または入力されていません。",
+ "captcha-create": "ページを新規作成するには、下記の簡単な数式を計算してその答えを欄に入力してください ([[Special:Captcha/help|ヘルプ]]):",
+ "captcha-sendemail": "自動でのスパム攻撃からウィキを保護するため、お手数ですが下記の簡単な数式を計算してその答えを欄に入力してください ([[Special:Captcha/help|詳細]]):",
+ "captcha-sendemail-fail": "CAPTCHA が正しくない、または入力されていません。",
+ "captcha-disabledinapi": "この操作には CAPTCHA 認証が必要なため、API では実行できません。",
+ "captcha-error": "内部エラーのためCAPTCHAの確認に失敗しました:$1",
+ "captchahelp-title": "CAPTCHA (画像認証) ヘルプ",
+ "captchahelp-cookies-needed": "ブラウザーの Cookie を有効にする必要があります。",
+ "captchahelp-text": "一般からの投稿を受け付けるこのウィキのようなウェブサイトは、自動投稿ツールを使って多くのサイトにリンクを張ってまわるスパマーにより荒らされがちです。\nこのようなスパムは除去できるものの、その作業は大変に面倒なものです。\n\nこのため、このウィキではときどき、特に新しい外部リンクがページに追加されたときなどに、色の付いた、あるいは形のゆがんだ文字の画像を提示し、何と書いてあるか入力をお願いすることがあります。\nこの作業は自動化が難しいため、スパマーなどのプログラムを用いた攻撃をほぼ阻止しつつ、大半の生身の人間による投稿ができるようにします。\n\nしかし、残念なことに、この方法により、視力が低い利用者や、テキストベースあるいは音声ベースのブラウザーを使用している利用者にご不便をおかけする場合があります。\n現時点では、音声による代替方法はありません。\n正当な操作をするにあたって本機能が障害となっている場合、[[Special:ListAdmins|サイト管理者]]に連絡して協力を求めてください。\n\nページの編集に戻るには、ブラウザーの「戻る」ボタンを押してください。",
+ "captcha-addurl-whitelist": " #<!-- この行は変更しないでください --> <pre>\n# 構文は以下の通りです:\n# * 「#」文字から行末まではコメントとして扱われます\n# * 空白を含まない行は、URLに含まれるホスト名との一致を検出する正規表現です\n #</pre> <!-- この行は変更しないでください -->",
+ "right-skipcaptcha": "CAPTCHAが必要な場面でCAPTCHAをスキップして操作を実行",
+ "captcha-apihelp-param-captchaword": "CAPTCHAに答える",
+ "captcha-apihelp-param-captchaid": "以前のリクエストのCAPTCHA ID",
+ "confirmedit-preview-line": "行番号",
+ "confirmedit-preview-content": "内容",
+ "confirmedit-preview-validity": "検証",
+ "confirmedit-preview-valid": "有効",
+ "confirmedit-preview-invalid": "無効",
+ "confirmedit-preview-description": "次の表は、このページの行のリストと、有効なIPアドレスかIPアドレスの範囲かを示しています。 回線が有効なIPアドレスまたはIPアドレス範囲の場合、CAPTCHAからホワイトリストになりますが、無効な回線は無視されます。 有効なIPアドレス範囲の例は、69.208.0.0/69.208.0.0/69.208.255.255になります。 IPアドレス範囲の計算については、[https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Range_blocks#Calculating_the_CIDR_suffix 詳細]を参照してください。"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/jam.json b/www/wiki/extensions/ConfirmEdit/i18n/jam.json
new file mode 100644
index 00000000..09ed2944
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/jam.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Katxis"
+ ]
+ },
+ "captcha-label": "CAPTCHA"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/jut.json b/www/wiki/extensions/ConfirmEdit/i18n/jut.json
new file mode 100644
index 00000000..c93633aa
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/jut.json
@@ -0,0 +1,22 @@
+{
+ "@metadata": {
+ "authors": [
+ "Christian List",
+ "Huslåke",
+ "Ælsån",
+ "Jyllanj"
+ ]
+ },
+ "captcha-edit": "For å redigiir siden, skal du djie sware på rejnestøkke nierfor, å åndjie resultate i feltje unje dä. ([[Special:Captcha/help|mier informasjon]]):",
+ "captcha-desc": "Semple captcha implementåsje",
+ "captcha-label": "CAPTCHA",
+ "captcha-addurl": "Din redigering tilføjer nye eksterne henvisninger til artiklen. Som beskyttelse mod automatiseret spam, skal du give svaret på regnestyket nedenfor, og angive resultatet i feltet under det. ([[Special:Captcha/help|mere information]]):",
+ "captcha-badlogin": "For å beskøtt wikien mod automatisiirtje adgångskodedjietneng, skal du lös dä enkel rejnestøkke nierfor å skriiw resultate i boksi ([[Special:Captcha/help|flier opløsnenge]]):",
+ "captcha-createaccount": "For at beskytte mod automatisk oprettelse af brugernavne, skal du give svaret på regnestyket nedenfor, og angive resultatet i feltet under det. ([[Special:Captcha/help|mere information]]):",
+ "captcha-createaccount-fail": "Forkert eller manglende bekræftelseskode.",
+ "captcha-create": "For å oprett en ny siid, skal du djie sware på rejnestøkke nierfor, å åndjie resultate i feltje unje dä. ([[Special:Captcha/help|mier informasjon]]):",
+ "captchahelp-title": "Captcha-hjälp",
+ "captchahelp-cookies-needed": "Dej browser skal ha cookies slotj til, føj detj kan wirk.",
+ "captchahelp-text": "Websites der accepterer indhold fra offentligheden, bliver ofte udsat for angreb fra spammere. Disse angreb sker med automatiske værktøjer, der anbringer de samme links på et stort antal websites på kort tid. Selvom disse links kan fjernes, er de en vedligeholdelsesmæssig byrde.\n\nI visse tilfælde, specielt når der tilføjes nye links til denne wiki, vil softwaren vise dig et billede af et stykke forvredet og sløret tekst. Du skal indtaste det ord, der vises, før du kan gennemføre handlingen. Formålet er at skelne mellem mennesker og automatiserede værktøjer, da de sidste har meget svært ved at genkende ordene.\n\nDesværre kan dette medføre problemer for svagtseende brugere, og brugere der bruger software der oplæser indholdet af siden. For øjeblikket findes der ikke et lydbaseret alternativ. Kontakt venligst en administrator med henblik på at få hjælp, hvis dette forhindrer tilføjelsen af godartet materiale.\n\nTryk på 'tilbage'-knappen i din browser for at returnere til redigeringssiden.",
+ "captcha-addurl-whitelist": " #<!-- Unlad å rett denn linie --> <pre>\n# Wejliedneng:\n# * Ållt fra e \"#\"-tejn te slutnengen å en linie ä i kommentar\n# * Åll intj-blank linie benøtts som regulær uttrykk, där anwenjs på hostnaun i URLe\n #</pre> <!-- Unlad å rett denn linie -->"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/jv.json b/www/wiki/extensions/ConfirmEdit/i18n/jv.json
new file mode 100644
index 00000000..f86f4b24
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/jv.json
@@ -0,0 +1,26 @@
+{
+ "@metadata": {
+ "authors": [
+ "Bennylin",
+ "Meursault2004",
+ "NoiX180",
+ "Pras"
+ ]
+ },
+ "captcha-edit": "Saperlu mbesut kaca iki, sumangga rampungaké ayahan ing ngisor iki lan isi jawabané ing kothaké ([[Special:Captcha/help|katerangan pepaké]]):",
+ "captcha-desc": "Nyepakaké tèknik CAPTCHA kanggo ngreksa saka spam lan pambedhèk-tembung-wadi",
+ "captcha-label": "CAPTCHA",
+ "captcha-addurl": "Suntingan panjenengan iku nyertakaké pranala jaba anyar.\nKanggo ngéwangi ngreksa lawan ''spam'' otomatis, tulung pecahna itung-itungan ing ngisor iki lan lebokna kasilna sajroning kothak ([[Special:Captcha/help|info sabanjuré]]):",
+ "captcha-badlogin": "Kanggo ngreksa lawan parengkahan tembung sandhi otomatis, tulung lebokna tembung utawa kasil itung-itungan gampang ing ngisor sajroning kothak sing wis sumedya ([[Special:Captcha/help|info sabanjuré]]):",
+ "captcha-createaccount": "Kanggo ngreksa wiki saka panggawé akun otomatis, tulung jawab ètung-ètungan ana ngisor iki lan tulisaké ing kothak ngisor ([[Special:Captcha/help|katerangan jangkep]]):",
+ "captcha-createaccount-fail": "Kode CAPTCHA salah utawa durung diisi.",
+ "captcha-create": "Kanggo nggawé kaca iki, mangga itung-itungan ing ngisor iki diwangsuli sajroning kothak ([[Special:Captcha/help|info sabanjuré]]):",
+ "captcha-sendemail": "Kanggo ngreksa lawan spam otomatis, tulung lebokna tembung utawa kasil itung-itungan gampang ing ngisor sajroning kothak sing wis sumedya ([[Special:Captcha/help|info sabanjuré]]):",
+ "captcha-sendemail-fail": "Kode CAPTCHA salah utawa durung diisi.",
+ "captcha-disabledinapi": "Tindakan ini membutuhkan CAPTCHA, sehingga tidak dapat dilakukan melalui API.",
+ "captchahelp-title": "Pitulung Captcha",
+ "captchahelp-cookies-needed": "Panjenengan perlu ngaktifaké cookie ing panjlajah wèb panjenengan kanggo nganggo fitur iki.",
+ "captchahelp-text": "Situs-situs wèb sing nampa data saka umum, kaya ta wiki iki, kerep disalahgunakaké déning panganggo-panganggo sing ora bertanggungjawab kanggo ngirimaké ''spam'' mawa program-program otomatis. Senadyan spam-spam iku bisa dibuang kabèh, nanging waé tetep ngrusuhi lan dianggep gawé masalah.\n\nKadhangkala, utamané yèn mènèhi pranala wèb anyar ing sawijinig kaca, wiki iki bisa nuduhaké gambar sawijining gambar tulisan sing ana wernané utawa sing rusak lan njaluk panjenengan ngetik ulang tembung sing ana gambar iki.\nAmerga pagawéyan iki angèl diotomatisasi, pawatesan iki bisa ngidinaké mèh kabèh wong asli mbanjuraké sumbangsihé ngirim suntingan nanging menggak para pangirim spam lan robot otomatis.\n\nÉmané, perkara iki bisa nggawé sawetara panganggo kangélan nyunting kaca iki, utamané sing daya pandelengané kurang utawa para panganggo sing nganggo panjlajah tèks adhedhasar tèks utawa swara. Saiki iki awaké dhéwé ora duwé alternatif audio kanggo iki. Mangga nyuwun pitulung karo [[Special:ListAdmins|para pangurus]] yèn perkara iki menggak panjenengan ngirimaké suntingan sing layak.\n\nPencèten tombol 'back' ing panjlajah wèb panjenengan kanggo bali menyang kaca panyuntingan.",
+ "captcha-addurl-whitelist": " #<!-- leave this line exactly as it is --> <pre>\n# Sintaksisé kaya mengkéné:\n# * Kabèh sing diawali mawa karakter \"#\" nganti pungkasané baris iku komentar\n# * Kabèh garis sing ora kosong iku fragmèn regex sing namung cocog karo jeneng host sajroning URL\n #</pre> <!-- leave this line exactly as it is -->",
+ "right-skipcaptcha": "Nglakokaké aksi-aksi sing murupaké captcha tanpa kudu ngliwati captcha"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/ka.json b/www/wiki/extensions/ConfirmEdit/i18n/ka.json
new file mode 100644
index 00000000..d9a7f9ff
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/ka.json
@@ -0,0 +1,32 @@
+{
+ "@metadata": {
+ "authors": [
+ "David1010",
+ "ITshnik",
+ "BRUTE"
+ ]
+ },
+ "captcha-edit": "ამ გვერდის რედაქტირებისათვის, გთხოვთ, ამოხსნათ ქვემოთ მოცემული მარტივი მაგალითი და პასუხი შეიყვანოთ ყუთში ([[Special:Captcha/help|მეტი ინფორმაცია]]):",
+ "captcha-desc": "უზრუნველყოფს CAPTCHA-ს მეთოდების გამოყენებას სპამისა და პაროლის გამოცნობისაგან დასაცავად",
+ "captcha-label": "CAPTCHA",
+ "captcha-addurl": "თქვენი ცვლილება შეიცავს ახალ გარე ბმულებს.\nვიკის ავტომატური სპამინგისგან თავდაცვის მიზნით, ჩვენ გთხოვთ, ამოხსნათ ქვემოთ მოცემული მარტივი მაგალითი და პასუხი შეიყვანოთ გრაფაში, რათა თქვენი რედაქტირება შეინახოს ([[Special:Captcha/help|მეტი ინფორმაცია]]):",
+ "captcha-badlogin": "ვიკის პაროლების ავტომატური გატეხვისგან თავდაცვის მიზნით, ჩვენ გთხოვთ, ამოხსნათ ქვემოთ მოცემული მარტივი მაგალითი და პასუხი შეიყვანოთ გრაფაში ([[Special:Captcha/help|მეტი ინფორმაცია]]):",
+ "captcha-createaccount": "ვიკის ანგარიშების ავტომატური შექმნისგან თავდაცვის მიზნით, ჩვენ გთხოვთ, ამოხსნათ ქვემოთ მოცემული მარტივი მაგალითი და პასუხი შეიყვანოთ გრაფაში ([[Special:Captcha/help|მეტი ინფორმაცია]]):",
+ "captcha-createaccount-fail": "დადასტურების კოდი არასწორია ან დაკარგულია.",
+ "captcha-create": "გვერდის შესაქმნელად, გთხოვთ, ამოხსნათ ქვემოთ მოცემული მარტივი მაგალითი და პასუხი შეიყვანოთ ყუთში ([[Special:Captcha/help|მეტი ინფორმაცია]]):",
+ "captcha-sendemail": "ვიკის ავტომატური სპამინგისგან თავდაცვის მიზნით, ჩვენ გთხოვთ, ამოხსნათ ქვემოთ მოცემული მარტივი მაგალითი და პასუხი შეიყვანოთ გრაფაში ([[Special:Captcha/help|მეტი ინფორმაცია]]):",
+ "captcha-sendemail-fail": "დადასტურების კოდი არასწორია ან დაკარგულია.",
+ "captcha-disabledinapi": "ეს მოქმედება მოითხოვს CAPTCHA-ს შემოწმებას და ამიტომ შეუძლებელია მისი შესრულება API-ით.",
+ "captchahelp-title": "CAPTCHA-ს დახმარება",
+ "captchahelp-cookies-needed": "თქვენ უნდა ჩართოთ ბრაუზერში კუკი, რათა ფუქცია ამოქმედდეს.",
+ "captchahelp-text": "ვებ-გვერდები, რომლებიც მათი შინაარსის დამატებისა და ცვლილებების საშუალებას იძლევიან, მათ შორის ეს ვიკიც, ხშირად ხდებიან სპამერების სამიზნე, რომლებიც იყენებენ საიტზე ავტომატური ბმულების დამატების პროგრამებს.\nმიუხედავად იმისა, რომ ასეთი ბმულების წაშლა შეიძლება, ისინი მაინც არსებით შემაფერხებელს წარმადგენს.\n\nზოგიერთი ქმედებისას — მაგალითად, გვერდზე ახალი ვებ-ბმულის დამატებისას — თქვენ შეგიძლიათ იხილოთ სპეციალური სურათი ფერადი ან დამახინჯებული ტექსტით და თქვენ შემოგეთავაზებათ ამ დამახინჯებული ტექსტის შეყვანა.\nრადგანაც დამახინჯებული ტექსტის ამოცნობა პროგრამისათვის რთულ ამოცანას წარმოადგენს, სპამისა და ვანდალური პროგრამების უმრავლესობისათვის მათთან გამკლავება შეუძლებელი იქნება, მაშინ როდესაც ადამიანები მას იოლად უმკლავდებიან.\n\nსამწუხაროდ, მსგავსმა დაცვამ შეიძლება დისკომფორტი შეუქმნას სუსტი მხედველობის მქონე ადამიანებს, ან მათ ვინც იყენებს ტექსტურ ან კითხვად ბრაუზერებს.\nამჟამად ჩვენ არ გვაქვს ამ შემოწმების ხმოვანი ალტერნატივა.\nგთხოვთ, თუ მსგავსი შემოწმება ხელს გიშლით საიტზე კეთილსინდისიერ მუშაობაში, დახმარებისათვის მიმართეთ [[Special:ListAdmins|ადმინისტრატორებს]].\n\nთქვენ ბრაუზერში დააჭირეთ ღილაკს „უკან“, რათა დაუბრუნდეთ რედაქტირებას.",
+ "captcha-addurl-whitelist": " #<!-- leave this line exactly as it is --> <pre>\n# სინტაქსის აღწერა:\n# * ყველაფერი, დაწყებული \"#\" სიმბოლოდან - ხაზის ბოლომდე ითვლება კომენტარად\n# * ყველა არაცარიელი ხაზი ითვლება URL-ში კვანძის შესაბამისი სახელის რეგულარული გამონათქვამის ფრაგმენტად\n #</pre> <!-- leave this line exactly as it is -->",
+ "right-skipcaptcha": "CAPTCHA-შემოწმების მოთხოვნილი მოქმედებების შესრულება CAPTCHA-ს გავლის გარეშე",
+ "captcha-apihelp-param-captchaword": "პასუხი CAPTCHA-ზე",
+ "captcha-apihelp-param-captchaid": "CAPTCHA-ს ID წინა მოთხოვნიდან",
+ "confirmedit-preview-line": "ხაზის ნომერი",
+ "confirmedit-preview-content": "შინაარსი",
+ "confirmedit-preview-validity": "მოქმედების ვადა",
+ "confirmedit-preview-valid": "სწორი",
+ "confirmedit-preview-invalid": "არასწორი"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/kaa.json b/www/wiki/extensions/ConfirmEdit/i18n/kaa.json
new file mode 100644
index 00000000..e8342e39
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/kaa.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Atabek"
+ ]
+ },
+ "captcha-createaccount-fail": "Tastıyıqlawshı kodın'ız nadurıs yamasa jazılmag'an"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/kab.json b/www/wiki/extensions/ConfirmEdit/i18n/kab.json
new file mode 100644
index 00000000..2eee8439
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/kab.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Belkacem77"
+ ]
+ },
+ "captcha-label": "CAPTCHA"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/kbp.json b/www/wiki/extensions/ConfirmEdit/i18n/kbp.json
new file mode 100644
index 00000000..796ee8ca
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/kbp.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Gnangbade"
+ ]
+ },
+ "captcha-label": "KAPƖCA"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/khw.json b/www/wiki/extensions/ConfirmEdit/i18n/khw.json
new file mode 100644
index 00000000..cffeff40
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/khw.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Rachitrali"
+ ]
+ },
+ "captcha-label": "کیپچا"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/kk-arab.json b/www/wiki/extensions/ConfirmEdit/i18n/kk-arab.json
new file mode 100644
index 00000000..51b7987a
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/kk-arab.json
@@ -0,0 +1,12 @@
+{
+ "@metadata": [],
+ "captcha-edit": "بۇل بەتتٸ ٶڭدەۋ ٷشٸن, تٶمەندەگٸ قوسىندىلاۋدى شەشٸڭٸز دە, نٵتيجەسٸن\nاۋماققا ەنگٸزٸڭٸز ([[{{ns:special}}:Captcha/help|كٶبٸرەك اقپارات]]):",
+ "captcha-addurl": "تٷزەتۋٸڭٸزدە جاڭا سىرتقى سٸلتەمەلەر بار ەكەن. ٶزدٸكتٸك «سپام» جاسالۋىنان قورعانۋ ٷشٸن,\nتٶمەندەگٸ قاراپايىم قوسىندىلاۋدى شەشٸڭٸز دە, نٵتيجەسٸن اۋماققا ەنگٸزٸڭٸز ([[{{ns:special}}:Captcha/help|كٶبٸرەك اقپارات]]):",
+ "captcha-badlogin": "قۇپييا سٶزدٸ ٶزدٸكتٸك قيراتۋدان قورعانۋ ٷشٸن,\nتٶمەندەگٸ قاراپايىم قوسىندىلاۋدى شەشٸڭٸز دە, نٵتيجەسٸن اۋماققا ەنگٸزٸڭٸز ([[{{ns:special}}:Captcha/help|كٶبٸرەك اقپارات]]):",
+ "captcha-createaccount": "جاڭا تٸركەلگٸ ٶزدٸكتٸك جاسالۋىنان قورعانۋ ٷشٸن, تٶمەندەگٸ قاراپايىم قوسىندىلاۋدى\nشەشٸڭٸز دە, نٵتيجەسٸن اۋماققا ەنگٸزٸڭٸز ([[{{ns:special}}:Captcha/help|كٶبٸرەك اقپارات]]):",
+ "captcha-createaccount-fail": "كۋٵلاندىرۋ كودى دۇرىس ەمەس نەمەسە جوق.",
+ "captcha-create": "جاڭا بەتتٸ باستاۋ ٷشٸن, تٶمەندەگٸ قاراپايىم قوسىندىلاۋدى شەشٸڭٸز دە,\nنٵتيجەسٸن اۋماققا ەنگٸزٸڭٸز ([[{{ns:special}}:Captcha/help|كٶبٸرەك اقپارات]]):",
+ "captchahelp-title": "CAPTCHA انىقتاماسى",
+ "captchahelp-cookies-needed": "بۇل جۇمىس ٸستەۋ ٷشٸن, شولعىشىڭىزدا «cookies» دەگەندٸ ەندٸرٸڭٸز.",
+ "captchahelp-text": "ٶزدٸكتٸك قۇرالدارى بار «سپاممەرلەر», بارشادان جٸبەرٸلگەن حاباردى قابىلدايتىن, بۇل ۋيكي سيياقتى, ۆەب-توراپتارعا سٸلتەمەلەرٸمەن جيٸ جاۋدىرادى. وسىنداي «سپام» سٸلتەمەلەرٸن الاستاۋ بولعاندا دا, بۇل مٵندٸ ىزا كەلتٸرەدٸ.\n\nكەيدە, ٵسٸرەسە بەتكە جاڭا ۆەب سٸلتەمەسٸن قوسقاندا, ۋيكي ٶڭٸ ٶزگەرگەن نە قيسايعان مٵتٸندٸ كٶرسەتٸپ جٵنە سول سٶزدەردٸ ەنگٸزۋ سۇراۋى مٷمكٸن. بۇل تاپسىرىس ٶزدٸك تٷردە اتقارۋ ٶتە قيىن, سوندىقتان بۇل يماندى ادام كٶپشٸلٸگٸنە كەدەرگٸ بولمايدى, بٸراق «سپاممەرلەردٸ» جٵنە بۇزاقى بوتپەن باسقا شابۋىل جاساعانداردى توقتاتادى.\n\nٶكٸنٸشكە وراي, بۇل كٶرۋٸ تٶمەندەگەن, نەمەسە مٵتٸن نە داۋىس نەگٸزٸندەگٸ شولعىشتى قولداناتىن پايدالانۋشىعا ىڭعايسىزدىق كەلتٸرۋگە مٷمكٸن. وسى قازٸر بٸزدە دىبىستى بالاما جوق. ەگەر بۇل ادال جازۋىڭىزعا كەدەرگٸلەسە, توراپ باقىلاۋشىلارىنا قاتىناسىڭىز.\n\nبۇل جۇمىستى ٸستەۋ ٷشٸن شولعىشىڭىزدا «cookies» دەگەندٸ ەندٸرۋ قاجەت.\n\nبەت ٶڭدەۋٸنە قايتۋ بارۋ ٷشٸن «ارتقا» دەگەن تٷيمەسٸن باسىڭىز."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/kk-cyrl.json b/www/wiki/extensions/ConfirmEdit/i18n/kk-cyrl.json
new file mode 100644
index 00000000..8795850d
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/kk-cyrl.json
@@ -0,0 +1,19 @@
+{
+ "@metadata": {
+ "authors": [
+ "Arystanbek"
+ ]
+ },
+ "captcha-edit": "Бұл бетті өңдеу үшін төмендегі қарапайым қосындыны шешіңіз де жауабын аумаққа енгізіңіз ([[Special:Captcha/help|көбірек ақпарат]]):",
+ "captcha-label": "CAPTCHA",
+ "captcha-addurl": "Өңдемеңізде жаңа сыртқы сілтемелер бар екен. \nӨздіктік уики «спам» жасалуынан қорғану үшін төмендегі қарапайым қосындыны шешіңіз де нәтижесін аумаққа енгізіңіз ([[Special:Captcha/help|көбірек ақпарат]]):",
+ "captcha-badlogin": "Уики құпия сөзді өздіктік бұзудан қорғану үшін төмендегі қарапайым қосындыны шешіңіз де нәтижесін аумаққа енгізіңіз ([[Special:Captcha/help|көбірек ақпарат]]):",
+ "captcha-createaccount": "Уики өздіктік тіркелгі жасалуынан қорғану үшін төмендегі қарапайым қосындыны\nшешіңіз де нәтижесін аумаққа енгізіңіз ([[Special:Captcha/help|көбірек ақпарат]]):",
+ "captcha-createaccount-fail": "CAPTCHA дұрыс емес немесе қажет етеді.",
+ "captcha-create": "Бетті бастау үшін төмендегі қарапайым қосындыны шешіңіз де нәтижесін аумаққа енгізіңіз ([[Special:Captcha/help|көбірек ақпарат]]):",
+ "captcha-sendemail": "Өздіктік уики «спам» жасалуынан қорғану үшін төмендегі қарапайым қосындыны шешіңіз де нәтижесін аумаққа енгізіңіз ([[Special:Captcha/help|көбірек ақпарат]]):",
+ "captcha-sendemail-fail": "CAPTCHA дұрыс емес немесе қажет етеді.",
+ "captchahelp-title": "CAPTCHA анықтамасы",
+ "captchahelp-cookies-needed": "Бұл жұмыс істеу үшін, шолғышыңызда «cookies» дегенді ендіріңіз.",
+ "captchahelp-text": "Өздіктік құралдары бар «спаммерлер», баршадан жіберілген хабарды қабылдайтын, бұл уики сияқты, веб-тораптарға сілтемелерімен жиі жаудырады. Осындай «спам» сілтемелерін аластау болғанда да, бұл мәнді ыза келтіреді.\n\nКейде, әсіресе бетке жаңа веб сілтемесін қосқанда, уики өңі өзгерген не қисайған мәтінді көрсетіп және сол сөздерді енгізу сұрауы мүмкін. Бұл тапсырыс өздік түрде атқару өте қиын, сондықтан бұл иманды адам көпшілігіне кедергі болмайды, бірақ «спаммерлерді» және бұзақы ботпен басқа шабуыл жасағандарды тоқтатады.\n\nӨкінішке орай, бұл көруі төмендеген, немесе мәтін не дауыс негізіндегі шолғышты қолданатын пайдаланушыға ыңғайсыздық келтіруге мүмкін. Осы қазір бізде дыбысты балама жоқ. Егер бұл адал жазуыңызға кедергілесе, торап бақылаушыларына қатынасыңыз.\n\nБұл жұмысты істеу үшін шолғышыңызда «cookies» дегенді ендіру қажет.\n\nБет өңдеуіне қайту бару үшін «Артқа» деген түймесін басыңыз."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/kk-latn.json b/www/wiki/extensions/ConfirmEdit/i18n/kk-latn.json
new file mode 100644
index 00000000..5b5a9728
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/kk-latn.json
@@ -0,0 +1,12 @@
+{
+ "@metadata": [],
+ "captcha-edit": "Bul betti öñdew üşin, tömendegi qosındılawdı şeşiñiz de, nätïjesin\nawmaqqa engiziñiz ([[{{ns:special}}:Captcha/help|köbirek aqparat]]):",
+ "captcha-addurl": "Tüzetwiñizde jaña sırtqı siltemeler bar eken. Özdiktik «spam» jasalwınan qorğanw üşin,\ntömendegi qarapaýım qosındılawdı şeşiñiz de, nätïjesin awmaqqa engiziñiz ([[{{ns:special}}:Captcha/help|köbirek aqparat]]):",
+ "captcha-badlogin": "Qupïya sözdi özdiktik qïratwdan qorğanw üşin,\ntömendegi qarapaýım qosındılawdı şeşiñiz de, nätïjesin awmaqqa engiziñiz ([[{{ns:special}}:Captcha/help|köbirek aqparat]]):",
+ "captcha-createaccount": "Jaña tirkelgi özdiktik jasalwınan qorğanw üşin, tömendegi qarapaýım qosındılawdı\nşeşiñiz de, nätïjesin awmaqqa engiziñiz ([[{{ns:special}}:Captcha/help|köbirek aqparat]]):",
+ "captcha-createaccount-fail": "Kwälandırw kodı durıs emes nemese joq.",
+ "captcha-create": "Jaña betti bastaw üşin, tömendegi qarapaýım qosındılawdı şeşiñiz de,\nnätïjesin awmaqqa engiziñiz ([[{{ns:special}}:Captcha/help|köbirek aqparat]]):",
+ "captchahelp-title": "CAPTCHA anıqtaması",
+ "captchahelp-cookies-needed": "Bul jumıs istew üşin, şolğışıñızda «cookies» degendi endiriñiz.",
+ "captchahelp-text": "Özdiktik quraldarı bar «spammerler», barşadan jiberilgen xabardı qabıldaýtın, bul wïkï sïyaqtı, veb-toraptarğa siltemelerimen jïi jawdıradı. Osındaý «spam» siltemelerin alastaw bolğanda da, bul mändi ıza keltiredi.\n\nKeýde, äsirese betke jaña veb siltemesin qosqanda, wïkï öñi özgergen ne qïsaýğan mätindi körsetip jäne sol sözderdi engizw surawı mümkin. Bul tapsırıs özdik türde atqarw öte qïın, sondıqtan bul ïmandı adam köpşiligine kedergi bolmaýdı, biraq «spammerlerdi» jäne buzaqı botpen basqa şabwıl jasağandardı toqtatadı.\n\nÖkinişke oraý, bul körwi tömendegen, nemese mätin ne dawıs negizindegi şolğıştı qoldanatın paýdalanwşığa ıñğaýsızdıq keltirwge mümkin. Osı qazir bizde dıbıstı balama joq. Eger bul adal jazwıñızğa kedergilese, torap baqılawşılarına qatınasıñız.\n\nBul jumıstı istew üşin şolğışıñızda «cookies» degendi endirw qajet.\n\nBet öñdewine qaýtw barw üşin «Artqa» degen tüýmesin basıñız."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/km.json b/www/wiki/extensions/ConfirmEdit/i18n/km.json
new file mode 100644
index 00000000..53ed0d2c
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/km.json
@@ -0,0 +1,19 @@
+{
+ "@metadata": {
+ "authors": [
+ "Lovekhmer",
+ "Thearith",
+ "គីមស៊្រុន"
+ ]
+ },
+ "captcha-edit": "ដើម្បីកែប្រែ​ទំព័រនេះ សូមដោះស្រាយ​ប្រមាណវិធីបូក​ខាងក្រោម​នេះរួច​បញ្ជូលចម្លើយ​ទៅក្នុង​ប្រអប់សិន([[Special:Captcha/help|ព័ត៌មាន​បន្ថែម]])៖",
+ "captcha-desc": "ផ្ដល់បច្ចេកទេស CAPTCHA ដើម្បីការពារពីស្ប៉ាមនិងការការទាយពាក្យសំងាត់",
+ "captcha-label": "CAPTCHA",
+ "captcha-addurl": "កំណែ​របស់អ្នក​មាន​តំណភ្ជាប់ក្រៅ​ថ្មី។ ដើម្បី​ជួយបង្ការ​ស្ប៉ាម​ស្វ័យប្រវត្តិ សូមដោះស្រាយ​ប្រមាណវិធីបូក​ខាងក្រោម​នេះរួច​បញ្ជូលចម្លើយ​ទៅក្នុង​ប្រអប់សិនមុនពេលរក្សាទុកកំណែរបស់អ្នក([[Special:Captcha/help|ព័ត៌មាន​បន្ថែម]])៖",
+ "captcha-badlogin": "ដើម្បីការពារការបំបែកពាក្យសម្ងាត់ដោយស្វ័យប្រវត្តិ សូមដោះស្រាយផលបូកខាងក្រោមរួចបញ្ជូលចម្លើយទៅក្នុងប្រអប់ ([[Special:Captcha/help|ព័ត៌មានបន្ថែម]])៖",
+ "captcha-createaccount": "ដើម្បី​បង្ការការបង្កើត​គណនី​ស្វ័យប្រវត្តិ សូមដោះស្រាយ​ប្រមាណវិធីបូក​ខាងក្រោម​នេះរួច​បញ្ជូលចម្លើយ​ទៅក្នុង​ប្រអប់សិន([[Special:Captcha/help|ព័ត៌មាន​បន្ថែម]])៖",
+ "captcha-createaccount-fail": "CAPTCHAបាត់ឬមិនត្រឹមត្រូវ។",
+ "captcha-create": "ដើម្បី​បង្កើត​ទំព័រ សូមដោះស្រាយ​ប្រមាណវិធីបូក​ខាងក្រោម​នេះរួច​បញ្ជូលចម្លើយ​ទៅក្នុង​ប្រអប់សិន([[Special:Captcha/help|ព័ត៌មាន​បន្ថែម]])៖",
+ "captcha-sendemail": "ដើម្បីការពារវិគីពីស្ប៉ាមស្វ័យប្រវត្តិ សូមដោះស្រាយចំណោទងាយៗខាងក្រោមរួចវាយបញ្ជូលចម្លើយទៅក្នុងប្រអប់ ([[Special:Captcha/help|ព័ត៌មានបន្ថែម]])៖",
+ "captchahelp-title": "ជំនួយអំពី Captcha"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/kn.json b/www/wiki/extensions/ConfirmEdit/i18n/kn.json
new file mode 100644
index 00000000..b3c9fc22
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/kn.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Omshivaprakash"
+ ]
+ },
+ "captcha-label": "ಕ್ಯಾಪ್ಚಾ"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/ko.json b/www/wiki/extensions/ConfirmEdit/i18n/ko.json
new file mode 100644
index 00000000..4bdeaee7
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/ko.json
@@ -0,0 +1,41 @@
+{
+ "@metadata": {
+ "authors": [
+ "IRTC1015",
+ "Klutzy",
+ "Kwj2772",
+ "Priviet",
+ "ToePeu",
+ "아라",
+ "Revi",
+ "Ykhwong"
+ ]
+ },
+ "captcha-edit": "글을 편집하려면 아래의 간단한 덧셈 값을 입력 상자에 적어 주세요 ([[Special:Captcha/help|자세한 정보]]):",
+ "captcha-edit-fail": "CAPTCHA 답이 올바르지 않거나 입력되지 않았습니다.",
+ "captcha-desc": "스팸과 비밀번호 탈취를 방지하기 위한 CAPTCHA(캡차) 기술을 제공합니다",
+ "captcha-label": "CAPTCHA(캡차)",
+ "captcha-help": "캡차 솔루션.",
+ "captcha-info-help": "캡차 설명.",
+ "captcha-id-label": "캡차 ID",
+ "captcha-addurl": "편집에 새로운 바깥 링크가 포함되어 있습니다.\n자동화된 스팸으로부터 위키를 보호하기 위해, 편집을 저장하려면 아래의 간단한 계산 값을 입력 상자에 적어 주세요 ([[Special:Captcha/help|자세한 정보]]):",
+ "captcha-badlogin": "자동화된 비밀번호 깨기로부터 위키를 보호하기 위해, 아래의 간단한 계산 값을 입력 상자에 입력해주세요 ([[Special:Captcha/help|자세한 정보]]):",
+ "captcha-createaccount": "자동화된 계정 만들기로부터 위키를 보호하기 위해, 아래의 간단한 계산 값을 입력 상자에 적어 주세요 ([[Special:Captcha/help|자세한 정보]]):",
+ "captcha-createaccount-fail": "CAPTCHA가 올바르지 않거나 입력되지 않았습니다.",
+ "captcha-create": "문서를 만드려면 아래의 간단한 계산 값을 입력 상자에 적어 주세요 ([[Special:Captcha/help|자세한 정보]]):",
+ "captcha-sendemail": "자동화된 스팸으로부터 위키를 보호하기 위해, 아래의 간단한 계산 값을 입력 상자에 적어 주세요 ([[Special:Captcha/help|자세한 정보]]):",
+ "captcha-sendemail-fail": "CAPTCHA가 올바르지 않거나 입력되지 않았습니다.",
+ "captcha-disabledinapi": "이 동작은 캡차를 거쳐야 하기 때문에 API로 이 작업을 수행할 수 없습니다.",
+ "captchahelp-title": "CAPTCHA(캡차) 도움말",
+ "captchahelp-cookies-needed": "정상적으로 작동하려면 웹 브라우저의 쿠키 사용이 활성화되어 있어야 합니다.",
+ "captchahelp-text": "이 위키와 같이 사람의 공개적인 참여가 가능한 웹 사이트에서는 자동 프로그램이 스팸을 뿌리는 경우가 있습니다.\n물론 이러한 스팸은 제거할 수는 있지만 번거로운 작업이 늘어납니다.\n\n이러한 스팸을 방지하기 위해서, 이 위키의 문서에 웹 사이트 주소를 추가하는 등의 행동을 할 경우에는 비틀린 글자가 들어있는 그림을 보여주고 그 그림의 글자를 입력해 달라고 하는 경우가 있습니다.\n이 글자 입력 작업은 자동 프로그램을 만들기가 힘들기 때문에 스팸을 효과적으로 막으면서 일반 사용자를 막지 않을 수 있습니다.\n\n웹 브라우저에서 그림을 완벽하게 표시할 수 없거나, 그림이 나오지 않는 텍스트 방식이나 음성 합성 방식 웹 브라우저를 사용하는 경우에는 이러한 입력이 불가능합니다.\n아직까지는 이런 경우에 대한 대안이 없습니다.\n예기치않게 정당한 행동을 하지 못하도록 막는다면 [[Special:ListAdmins|사이트 관리자]]에게 도움을 요청해 주세요.\n\n이전 화면으로 돌아가려면 웹 브라우저의 \"뒤로\" 버튼을 누르세요.",
+ "captcha-addurl-whitelist": " #<!-- 이 줄은 그대로 두십시오 --> <pre>\n# 문법은 다음과 같습니다:\n# * \"#\" 문자에서 줄의 끝까지는 주석입니다\n# * 빈 줄이 아닌 줄은 정규식으로, URL의 호스트만을 검사합니다\n #</pre> <!-- 이 줄은 그대로 두십시오 -->",
+ "right-skipcaptcha": "캡차 과정을 거치지 않고 캡차 과정을 거친 것으로 간주",
+ "captcha-apihelp-param-captchaword": "CAPTCHA에 응답",
+ "captcha-apihelp-param-captchaid": "이전 요청의 CAPTCHA ID",
+ "confirmedit-preview-line": "줄 번호",
+ "confirmedit-preview-content": "내용",
+ "confirmedit-preview-validity": "유효성",
+ "confirmedit-preview-valid": "유효함",
+ "confirmedit-preview-invalid": "유효하지 않음"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/krc.json b/www/wiki/extensions/ConfirmEdit/i18n/krc.json
new file mode 100644
index 00000000..2f27c0d5
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/krc.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "Iltever",
+ "Ernác"
+ ]
+ },
+ "captcha-label": "CAPTCHA"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/krl.json b/www/wiki/extensions/ConfirmEdit/i18n/krl.json
new file mode 100644
index 00000000..d2fb93be
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/krl.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Mashoi7"
+ ]
+ },
+ "captcha-label": "CAPTCHA"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/ksh.json b/www/wiki/extensions/ConfirmEdit/i18n/ksh.json
new file mode 100644
index 00000000..5f0517e3
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/ksh.json
@@ -0,0 +1,26 @@
+{
+ "@metadata": {
+ "authors": [
+ "Purodha"
+ ]
+ },
+ "captcha-edit": "Öm de Sigg ze ändere, don di Zahle onge zosamme zälle un don de Antwoot en dat Käßje endraare. ([[Special:Captcha/help|Verklierung]])",
+ "captcha-edit-fail": "Di Beschtähtejong (et <span style=\"text-transform:uppercase\" title=\"Jät zom Ennjävve, öm ze zeije, dadd ene Minsch vör em Kompjuhter sez\">Kaptscha</span>) fähld udder es verkihrt.",
+ "captcha-desc": "Brängk en „<span style=\"text-transform:uppercase\" title=\"Jät zom Ennjävve, öm ze zeije, dadd ene Minsch vör em Kompjuhter sez\">Kaptscha</span>“ en et Wikki, öm jähje der <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"„för jewöhnlesch angmaß övverdrahre Nohreeschte udder Meddeijlonge, di wä se kritt jaa nit han well,“\">SPAM</i> un jähje et Paßwööter-Dorschprobehre ze schöze.",
+ "captcha-label": "<span style=\"text-transform:uppercase\" title=\"Jät zom Ennjävve, öm ze zeije, dadd ene Minsch vör em Kompjuhter sez\">Kaptscha</span>",
+ "captcha-help": "Ennjahbe för_t <span style=\"text-transform:uppercase\" title=\"Jät zom Ennjävve, öm ze zeije, dadd ene Minsch vör em Kompjuhter sez\">Kaptscha</span>",
+ "captcha-id-label": "<span style=\"text-transform:uppercase\" title=\"Jät zom Ennjävve, öm ze zeije, dadd ene Minsch vör em Kompjuhter sez\">Kaptscha</span>-Kännong",
+ "captcha-addurl": "Do häß neu Lingks op frembde Websigge dobei jedonn.\nMer schöze uns Wiki jäje automatesche SPAM, dröm\ndon di Zahle onge zosamme träcke un don de Antwoot\nen dat Käßje endraare. ([[Special:Captcha/help|Verklierung]])",
+ "captcha-badlogin": "Mer schöze Metmaacher en unsem Wiki jäje automatesche\nPaßwoot-Knackerei, dröm don di Zahle onge zosamme zälle,\nun de Antwoot en dat Käßje endraare. ([[Special:Captcha/help|Verklierung]])",
+ "captcha-createaccount": "Mer schöze uns Wiki dojäje, dat mer en Masse automatesch\nMetmaacher aanmeldt. Dröm beß esu joot un\ndon di Zahle onge zosamme zälle un don de Antwoot\nen dat Käßje endraare. ([[Special:Captcha/help|Verklierung]])",
+ "captcha-createaccount-fail": "Di Beschtähtejong (et <span style=\"text-transform:uppercase\" title=\"Jät zom Ennjävve, öm ze zeije, dadd ene Minsch vör em Kompjuhter sez\">Kaptscha</span>) fähld udder es verkihert.",
+ "captcha-create": "Öm di Sigg neu aanzelääje, don di Zahle onge zosamme zälle,\nun don de Antwoot en dat Käßje endraare. (Verklierung)",
+ "captcha-sendemail": "För automettesche SPAM ze verhendere, donn di Zahle onge zosamme zälle,\nun don de Antwoot en dat Käßje endraare. ([[Special:Captcha/help|Verklierung]])",
+ "captcha-sendemail-fail": "Di Beschtähtejong (et <span style=\"text-transform:uppercase\" title=\"Jät zom Ennjävve, öm ze zeije, dadd ene Minsch vör em Kompjuhter sez\">Kaptscha</span>) fähld udder es verkihrt.",
+ "captcha-disabledinapi": "För di Aufjab moss en äxtra Beschtähtejong pä <span style=\"text-transform:uppercase\" title=\"Jät zom Ennjävve, öm ze zeije, dadd ene Minsch vör em Kompjuhter sez\">Kaptscha</span> ennjejovve wähde, un dat künne mer nit övver er <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Application Programming Interface\">API</i> maache.",
+ "captchahelp-title": "Äklihrong zom <span style=\"text-transform:uppercase\" title=\"Jät zom Ennjävve, öm ze zeije, dadd ene Minsch vör em Kompjuhter sez\">Kaptscha</span>-<i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"„för jewöhnlesch angmaß övverdrahre Nohreeschte udder Meddeijlonge, di wä se kritt jaa nit han well,“\">SPAM</i>-Schotz",
+ "captchahelp-cookies-needed": "Do moß <i lang=\"en\">Cookies</i> en Dingem Brauser enjeschalldt han, domet da hee fluppe kann.",
+ "captchahelp-text": "Op Web Saits wi dat Wiki hee, wo jeder jät beidraare kann, do kumme se öff wi de Fleeje un don met Projramme un fun Hand Lengks op de eije Websigge bloß fö Reklahme affläje, der ohne Senn un Verschtand. Esu ene <i lang=\"en\" xml:lang=\"en\" title=\"\">SPAM</i> kam_mer widder fott maache, dat määt ävver Ärjer un Opwand.\n\nSu jät wulle_mer nit hann, un donn_et jlish widder fottschmiiße.\n\nDomet mer do_met nidd_esu fill Ärrbed hann,\nmaache_mer dänne Autmaate et Lävve schwer.\nWann uns Wikki merk, et künnd_esu jet em Bösch sinn, dann zeisch et e Belldsche med jät dren, un fröhsch, dat mer dat jenau esu ennjävve sullt,\nwi et do schteiht. För_enne Minsch eß dat eifach, ävver dat es fodammp schwierich ze projrammehre.\nDat es e beßßje läßtish för der Minsch, ävver de Robbotter hälld et unß bahl kumplett fum Lief, un su jesinn, ess et netto enne Jewenn.\n\nWann De Dich ens fordeis, es och nit schlimm, De wees norr_enß jefrooch, un wat De jetipp häs, kütt nit fott.\n\nSchaad es, mer hann noch keine Wääsch, dat met Schprohch udder sönswi ze maache, su dat Lück met Schprohch_Ußßjaave, Braille, un met nur Tex em Brauser oohne Bellder, em Räähn schtonn künnte. Dooht Ühr Zeush eets enß oohne Lengk schpeischere, un saat dä [[Special:ListAdmins|Wikki_Köbesse]],\nwann Ühr Probbleme hatt. Do weed_Üch jehollfe weede.\n\nJetz kanns De met Dingem Brauser singem „Zeröck“-Knopp wigger maache, wo De fürher wohß.",
+ "captcha-addurl-whitelist": " #<!-- Lohß di Reih he jenou esu wi se es --> <pre>\n# Dä Opbou es:\n# * Alles fun enem #-Zeiche bes an et Engk fun ene Reih es ene Kommentaa för de Minsche\n# * Jede Reih met jet dren es en Stöck rejolähre Ußdrok, wat Domains en URL treffe kann\n #</pre> <!-- Lohß di Reih he jenou esu wi se es -->",
+ "right-skipcaptcha": "De Opforderung fum <span style=\"text-transform:uppercase\" title=\"Jät zom Ennjävve, öm ze zeije, dadd ene Minsch vör em Kompjuhter sez\">Kaptscha</span> överjonn"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/ku-latn.json b/www/wiki/extensions/ConfirmEdit/i18n/ku-latn.json
new file mode 100644
index 00000000..30d2fa42
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/ku-latn.json
@@ -0,0 +1,10 @@
+{
+ "@metadata": {
+ "authors": [
+ "George Animal",
+ "Bikarhêner"
+ ]
+ },
+ "captcha-label": "CAPTCHA",
+ "captchahelp-title": "Alîkariya CAPTCHA'yê"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/kum.json b/www/wiki/extensions/ConfirmEdit/i18n/kum.json
new file mode 100644
index 00000000..ac70dfad
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/kum.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Arsenekoumyk"
+ ]
+ },
+ "captcha-label": "CAPTCHA"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/kw.json b/www/wiki/extensions/ConfirmEdit/i18n/kw.json
new file mode 100644
index 00000000..d677b41e
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/kw.json
@@ -0,0 +1,12 @@
+{
+ "@metadata": {
+ "authors": [
+ "Kernoweger",
+ "Nrowe",
+ "Kw-Moon"
+ ]
+ },
+ "captcha-label": "CAPTCHA",
+ "captcha-createaccount-fail": "Koden afydhya kamm po gwag.",
+ "captcha-sendemail-fail": "Koden afydhya kamm po gwag."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/ky.json b/www/wiki/extensions/ConfirmEdit/i18n/ky.json
new file mode 100644
index 00000000..8de22049
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/ky.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "Chorobek",
+ "Janatkg"
+ ]
+ },
+ "captcha-edit": "Бул баракты оңдош үчүн бул жөнөкөй эсепти чыгарып, жообун көзөнөккө жазыңыз ([[Special:Captcha/help|more info]]):",
+ "captcha-desc": "Сырсөздү жандыруудан жана керексиз маалыматтардан (спам) коргонуу максатында CAPTCHA ыкмасы колдонулат",
+ "captcha-label": "Каптча"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/la.json b/www/wiki/extensions/ConfirmEdit/i18n/la.json
new file mode 100644
index 00000000..cb8fe8fc
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/la.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": [
+ "UV",
+ "Laurentianus"
+ ]
+ },
+ "captcha-edit": "Ad hanc paginam recensendum, necesse est tibi solvere calculationem subter et responsum in capsam inscribere ([[Special:Captcha/help|ad explanationem]]):",
+ "captcha-addurl": "Recensio tua novos nexus externos inducit.\nUt automata arceantur a clamandis mercibus, quaesumus, hanc simplicem calculationem supra scriptam solvere et summam in capsam inscribere velis ([[Special:Captcha/help|ad explanationem]]):",
+ "captcha-badlogin": "Ut vitemus ne tesserae frangantur, necesse est tibi solvere calculationem subter et responsum in capsam inscribere ([[Special:Captcha/help|ad explanationem]]):",
+ "captcha-createaccount": "Ut automata arceantur a nominibus sibi imponendis, necesse est calculatiunculam infra scriptam solvas et summam inseras ([[Special:Captcha/help|ad explanationem]]):",
+ "captcha-createaccount-fail": "Codex affirmationis aut non scriptus est aut male.",
+ "captcha-create": "Ad paginam creandum, necesse est tibi solvere calculationem subter et responsum in capsam inscribere ([[Special:Captcha/help|ad explanationem]]):",
+ "captchahelp-title": "Captcha auxilium"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/lad.json b/www/wiki/extensions/ConfirmEdit/i18n/lad.json
new file mode 100644
index 00000000..7e142979
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/lad.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "Menachem.Moreira"
+ ]
+ },
+ "captcha-label": "CAPTCHA",
+ "captchahelp-title": "Ayudo de CAPTCHA"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/lag.json b/www/wiki/extensions/ConfirmEdit/i18n/lag.json
new file mode 100644
index 00000000..4bcb4380
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/lag.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Baba Tabita"
+ ]
+ },
+ "captcha-label": "CAPTCHA"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/lb.json b/www/wiki/extensions/ConfirmEdit/i18n/lb.json
new file mode 100644
index 00000000..6bb3ef64
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/lb.json
@@ -0,0 +1,33 @@
+{
+ "@metadata": {
+ "authors": [
+ "Les Meloures",
+ "Robby",
+ "Soued031"
+ ]
+ },
+ "captcha-edit": "Fir dës Säit z'änneren, léist w.e.g. déi Aufgab hei ënnendrënner a gitt d'Äntwert an d'Këscht an ([[Special:Captcha/help|méi Informatiounen]]):",
+ "captcha-edit-fail": "Falschen oder kee CAPTCHA.",
+ "captcha-desc": "Stellt Captcha-Techniken zur Verfügung fir géint Spam an Errode vu Passwierder ze schützen",
+ "captcha-label": "CAPTCHA",
+ "captcha-info-help": "Beschreiwung vum CAPTCHA.",
+ "captcha-addurl": "An Ärer Ännerung sinn nei extern Linken.\nFir dës Wiki virun automatiséiertem Spam ze schütze froe mir Iech fir d'Aufgab hei drënner ze léisen an d'Resultat an d'Këscht anzedroen fir Är Ännerung ze späicheren ([[Special:Captcha/help|méi Informatiounen]]):",
+ "captcha-badlogin": "Fir dës Wiki géint automatescht Hacke vu Passwierder ze schützen, léist w.e.g. déi Aufgab hei ënnendrënner an tippt d'Äntwert an d'Këscht ([[Special:Captcha/help|méi Informatiounen]]):",
+ "captcha-createaccount": "Fir dës Wiki géint d'automatescht Uleeë vu Benotzerkonten ze schützen, léist w.e.g. déi Aufgab hei ënnendrënner, an tippt d'Äntwert an d'Këscht ([[Special:Captcha/help|méi Informatiounen]]):",
+ "captcha-createaccount-fail": "Falschen oder kee CAPTCHA.",
+ "captcha-create": "Fir eng Nei Säit unzeleeën, léist w.e.g. déi Aufgab hei ënnendrënner an tippt d'Äntwert an d'Këscht ([[Special:Captcha/help|méi Informatiounen]]):",
+ "captcha-sendemail": "Fir dës Wiki géint automatescht Spammen ze schützen, léist w.e.g. déi Aufgab hei ënnendrënner an tippt d'Äntwert an d'Këscht ([[Special:Captcha/help|méi Informatiounen]]):",
+ "captcha-sendemail-fail": "Falschen oder kee CAPTCHA.",
+ "captcha-disabledinapi": "Dës Aktioun brauch e Captcha, dofir ka se net mat enger API gemaach ginn.",
+ "captchahelp-title": "Captcha-Hëllef",
+ "captchahelp-cookies-needed": "Dir musst Cookien an Ärem Browser erlabe fir dat dëst funktionéiert.",
+ "captchahelp-text": "Websäiten, déi et jiddwerengem erlaben Ännerunge virzehuelen, sou wéi op dëser Wiki, ginn dacks vu sougenannte Spammer mëssbraucht, déi automatiséiert hir Linken op vill Internetsäite setzen. Sou Spam-Linke kënne wuel geläscht ginn, mä se sinn trotzdeem eng grouss Plo.\n\nHeiansdo, besonnesch wann nei Internet-Linken op eng Säit dobäigesat ginn, weist dës Wiki Iech e Bild mat faarwegem oder verzerrtem Text a freet Iech fir déi gewise Wierder anzetippen. Well dëst eng Aufgab ass déi schwéier ze automatiséieren ass, erlaabt dëst, datt Mënschen hir Ännerunge kënnen agi während déi meescht Spammer an aner Roboter-Attacke kënnen ofgewiert ginn.\n\nLeider kann dat zu Schwieregkeete féiere fir Persounen déi net sou gutt gesinn oder déi text-baséiert oder sprooch-baséiert Browser benotzen.\nZu dësem Zäitpunkt hu mir leider keng audio-Alternativ zu eiser Verfügung.\nKontaktéiert w.e.g. [[Special:ListAdmins|een Administrateur]] fir Hëllef wann dëst iech onerwaarter Weis vu legitimmen Ännerungen ofhält.\n\nDréckt op den 'Zréck' Knäppche vun ärem Browser fir an d'Beaarbechtungsfënster zréckzekommen.",
+ "captcha-addurl-whitelist": " #<!-- Dës Linn onverännert loossen --> <pre>\n# Syntax:\n# * Alles vun engem #-Zeechen u bis zum Enn vun där Zeil ass eng Bemierkung\n# * All Zeil déi net eidel ass, ass ee Regex-Fragment, dat nëmme mat Hosten bannent URLe funktionéiert\n #</pre> <!-- Dës Linn onverännert loossen -->",
+ "right-skipcaptcha": "Aktiounen déi eng Captcha-Aktioun verlaangen ausféieren, ouni dës maachen ze mussen",
+ "captcha-apihelp-param-captchaword": "Äntwert op de CAPTCHA",
+ "confirmedit-preview-line": "Zeilennummer",
+ "confirmedit-preview-content": "Inhalt",
+ "confirmedit-preview-validity": "Validitéit",
+ "confirmedit-preview-valid": "valabel",
+ "confirmedit-preview-invalid": "net valabel"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/lfn.json b/www/wiki/extensions/ConfirmEdit/i18n/lfn.json
new file mode 100644
index 00000000..09ed2944
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/lfn.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Katxis"
+ ]
+ },
+ "captcha-label": "CAPTCHA"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/li.json b/www/wiki/extensions/ConfirmEdit/i18n/li.json
new file mode 100644
index 00000000..f1b76159
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/li.json
@@ -0,0 +1,29 @@
+{
+ "@metadata": {
+ "authors": [
+ "Matthias",
+ "Ooswesthoesbes"
+ ]
+ },
+ "captcha-edit": "Geer wil dees pazjena bewerke. Veur estebleef 't antjwaord op de óngerstäönde einveljige som in 't inveurvenster in ([[Special:Captcha/help|mieë informatie]]):",
+ "captcha-edit-fail": "Ónjuuste of óntbraekende CAPTCHA.",
+ "captcha-desc": "Bied CAPTCHA-technieke óm besjörming te beje taenge spam en 't raoje van wachweurd.",
+ "captcha-label": "CAPTCHA",
+ "captcha-help": "CAPTCHA-oplossing.",
+ "captcha-info-help": "CAPTCHA-ómsjrieving.",
+ "captcha-id-label": "CAPTCHA-id",
+ "captcha-id-help": "Dees waerd mót ónverangerd waere trökgesjik.",
+ "captcha-addurl": "Dien bewirking bevat nuuj extern linke (URL's).\nVeur es besjurming taenge geautomatiseerde spam 't antjwaord op de óngerstäönde opdrach in in 't inveurveld veur dien bewirking op te slaon ([[Special:Captcha/help|mieër infermasie]]):",
+ "captcha-badlogin": "Los de óngerstäönde opdrach op en veur 't antjwaord in in 't inveurvinster ter besjurming taenge 't autematis krake van wachwäörd ([[Special:Captcha/help|mieër informatie]]):",
+ "captcha-createaccount": "Veur t'r besjurming taenge 't aanmake van geautomatiseerde gebroekers 't antjwaord op de óngerstäönde opdrach in in 't inveurvinster ([[Special:Captcha/help|mieër informatie]]):",
+ "captcha-createaccount-fail": "Ónjuuste of óntbraekende CAPTCHA.",
+ "captcha-create": "U wilt een nieuwe pagina aanmaken. Voer het antwoord op de onderstaande eenvoudige som in het invoervenster in ([[Special:Captcha/help|meer informatie]]):",
+ "captcha-sendemail": "Veur ter besjerming taege geautomatiseerde spam 't antjwaord op de ongerstaonde einvawdige som in 't inveurvinster in ([[Special:Captcha/help|mier informatie]]):",
+ "captcha-sendemail-fail": "De bevestigingscode ontbrèk of is ónjuus.",
+ "captcha-disabledinapi": "Veur dees actie is 'n captcha neudig die neet aafgehanjeldj kin waere via de API.",
+ "captchahelp-title": "Captcha-hölp",
+ "captchahelp-cookies-needed": "Ge dient in uw browser cookies ingeschakeld te hebbe om dit te laote werke.",
+ "captchahelp-text": "Websites die vrie te bewèrke zeen, wie deze wiki, waere döks misbroek door spammers die d'r met hun programma's automatisch links op zetten naar vele websites. Hoewel deze externe links weer verwijderd kunnen worden, leveren ze wel veel hinder en administratief werk op.\n\nSoms, en in het bijzonder bij het toevoegen van externe links op pagina's, krijgt u een afbeelding te zien met gekleurde of vervormde tekst en wordt u gevraagd de weergegeven tekst in te voeren. Omdat dit proces lastig te automatiseren is, zijn vrijwel alleen mensen in staat dit proces succesvol te doorlopen en worden hiermee spammers en andere geautomatiseerde aanvallen geweerd.\n\nHelaas levert deze bevestiging voor gebruikers met een visuele handicap of een tekst- of spraakgebaseerde browser problemen op. Op het moment is er geen alternatief met geluid beschikbaar. Vraag assistentie van de [[Special:ListAdmins|sitebeheerders]] als dit proces u verhindert een nuttige bijdrage te leveren.\n\nKlik óppe 'trök'-knoep in uw browser om terug te gaan naar het tekstbewerkingsscherm.",
+ "captcha-addurl-whitelist": " #<!-- laot deze regel --> <pre>\n# De syntaxis is as volgt:\n# * Alle tekst vanaaf 't karakter \"#\" tot het einde van de regels wordt gezien als opmerking\n# * Iedere niet-lege regel is een fragment van een reguliere uitdrukking die alleen van toepassing is op hosts binnen URL's\n #</pre> <!-- laot deze regel -->",
+ "right-skipcaptcha": "Captchahandelinge oetveure zonder captcha te hove oplosse"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/lij.json b/www/wiki/extensions/ConfirmEdit/i18n/lij.json
new file mode 100644
index 00000000..8adb3691
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/lij.json
@@ -0,0 +1,37 @@
+{
+ "@metadata": {
+ "authors": [
+ "Giromin Cangiaxo"
+ ]
+ },
+ "captcha-edit": "Pe modificâ a paggina l'è necessaio resciorve o façile calcolo chì de sotta e insei o risultato inta casella\n([[Special:Captcha/help|ciu informaçioin]]):",
+ "captcha-edit-fail": "Codiçe de veriffica errou ò mancante.",
+ "captcha-desc": "O fornisce de tecniche CAPTCHA pe-a proteçion contra o spam e l'individoaçion de password",
+ "captcha-label": "CAPTCHA",
+ "captcha-help": "Soluçion do CAPTCHA.",
+ "captcha-info-help": "Descriçion do CAPTCHA.",
+ "captcha-id-label": "ID CAPTCHA",
+ "captcha-id-help": "Questo valô o doviæ ese restitoio invariou.",
+ "captcha-addurl": "A to modiffica a l'azonze di noeuvi inganci esterni.\nPe proteze a wiki da-o spam aotomatizou se prega de resciorve o faççile calcolo chì de sotta e insei o risultato inta casella ([[Special:Captcha/help|comme l'è ch'o funçion-a?]]):",
+ "captcha-badlogin": "Pe proteze a wiki da-a sforçatua aotomatizâ de password, te preghemmo de resciorve a faççile somma ch'a compâ chì de sotta e scrive a risposta inta casella ([[Special:Captcha/help|ciu informaçioin]]):",
+ "captcha-createaccount": "Pe proteze a wiki da-i tentativi de registraçion aotomatizâ, te preghemmo de resciorve a faççile somma chì de sotta e scrive a risposta inta casella ([[Special:Captcha/help|ciu informaçioin]]):",
+ "captcha-createaccount-fail": "Codiçe de veriffica errou ò mancante.",
+ "captcha-create": "Pe creâ a paggina l'è necessaio resciorve o sempliçe calcolo chì de sotta e insei o risultato inta casella:<br />\n([[Special:Captcha/help|ciu informaçioin]]):",
+ "captcha-sendemail": "Pe proteze o wiki da-a spam aotomatizâ, te preghemmo de resciorve a faççile somma chì aproeuvo e scrive a risposta inta casella ([[Special:Captcha/help|ciu informaçioin]]):",
+ "captcha-sendemail-fail": "Codiçe de veriffica errou ò mancante.",
+ "captcha-disabledinapi": "Pe uesta açion ghe voeu un CAPTCHA, quindi a no poeu ese eseguia tramite l'API.",
+ "captcha-error": "Veriffica CAPTCHA fallia a caosa de 'n aro interno: $1",
+ "captchahelp-title": "Cos'o l'è o CAPTCHA?",
+ "captchahelp-cookies-needed": "Pe continoâ ti g'hæ da abilitâ i cookie into toeu navegatô.",
+ "captchahelp-text": "Succede soventi che i sciti web ch'açettan de contribuçioin da-o pubbrico, comme questa wiki, seggian ascidiæ da di spammer ch'adœuvian di strumenti aotomatizæ pe insei i so inganci verso un gran nummero de sciti. Pe quante se posse levâ sti collegamenti indexidiæ, se tratta comunque de 'na sciugata miga da ninte.\n\nIn çerti caxi, specce quande se tenta d'azonze di nœuvi inganci web inte 'na paggina, o software wiki o pœu mostrâ 'n'inmaggine co-in breve scrito colorou e/ò distorto domandando de riscrîvilo inte 'n'apoxita casella. Scicomme l'interpretaçion de l'inmaggine a l'è 'n'açion difiççile da fâ eseguî a un programma, questo scistema o permette a-i utenti reali de completâ l'inseimento dexidiou, impedindo l'accesso a-a ciu gran parte di spammer e di atri attacchi aotomatizæ.\n\nPurtroppo, ste mezûe de segueça pœuan mette in difficortæ i utenti con di problemi vixivi ò chi adœuvia di navegatoî testoæ ò bazæ in sciâ scintexi vocale. A-o momento no l'è disponibbile un meccanismo alternativo basou insce di messaggi audio; se queste procedue impediscian l'inseimento d'informaçioin apropiæ, se prega de contattâ i [[Special:ListAdmins|amministroei do scito]] e domandâghe ascistença.\n\nClicca o pomello \"inderê\" do navegatô pe tornâ a-a paggina de modiffica.",
+ "captcha-addurl-whitelist": " #<!-- lascia sta riga coscì comm'a l'è --> <pre>\n# A scintasci a l'è a seguente:\n# * Tutto quello che ven dopp'un carattere \"#\" o l'è un commento, scin a-o terme da riga\n# * Tutte e righe non vœue son frammenti d'esprescioin regolæ che s'appricano a-o solo nomme de l'host inte URL\n #</pre> <!-- lascia sta riga coscì comm'a l'è -->",
+ "right-skipcaptcha": "O compisce i açioin ch'attivieivan o CAPTCHA sença dovei passâ pe-o CAPTCHA",
+ "captcha-apihelp-param-captchaword": "Risposta a-o CAPTCHA",
+ "captcha-apihelp-param-captchaid": "ID CAPTCHA da-a precedente recesta",
+ "confirmedit-preview-line": "Nummero de riga",
+ "confirmedit-preview-content": "Contegnuo",
+ "confirmedit-preview-validity": "Validitæ",
+ "confirmedit-preview-valid": "vallido",
+ "confirmedit-preview-invalid": "non vallido",
+ "confirmedit-preview-description": "A seguente tabella a mostra a lista de righe de sta paggina e s'a l'è 'n adresso IP ò 'n intervallo d'adressi IP. Se a riga a l'è 'n adresso IP vallido ò 'n intervallo d'adressi IP, questo o saiâ inseio da-o CAPTCHA inta \"lista gianca\", ma e righe non vallide saian ignoræ. Un esempio d'intervallo d'adressi IP vallido o poriæ ese: 69.208.0.0/16 ch'o va da 69.208.0.0 a 69.208.255.255. [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Range_blocks#Calculating_the_CIDR_suffix Ulterioî informaçioin] in sciô calcolo de 'n intervallo d'adressi IP."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/lki.json b/www/wiki/extensions/ConfirmEdit/i18n/lki.json
new file mode 100644
index 00000000..a3610eaf
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/lki.json
@@ -0,0 +1,23 @@
+{
+ "@metadata": {
+ "authors": [
+ "Hosseinblue"
+ ]
+ },
+ "captcha-edit": "برای ویرایش این مقاله، لطفاً حاصل جمع زیر را حساب کنید و نتیجه را در جعبه وارد کنید ([[Special:Captcha/help|اطلاعات بیشتر]]):",
+ "captcha-desc": "روش‌های مبتنی بر CAPTCHA برای مقابله با هرزنگاری و کشف گذرواژه فراهم می‌کند",
+ "captcha-label": "کپچا",
+ "captcha-addurl": "ویرایش شما شامل پیوندهای تازه‌ای به بیرون است.\nبرای کمک به جلوگیری از ارسال خودکار هرزنامه‌ها، لطفاً حاصل جمع زیر را حساب کنید و نتیجه را در جعبه وارد کنید ([[Special:Captcha/help|اطلاعات بیشتر]]):",
+ "captcha-badlogin": "برای کمک به جلوگیری از شکستن خودکار گذرواژه، لطفاً حاصل جمع زیر را حساب کنید و نتیجه را وارد کنید ([[Special:Captcha/help|اطلاعات بیشتر]]):",
+ "captcha-createaccount": "برای جلوگیری از ایجاد خودکار حساب کاربری، لطفاً حاصل جمع زیر را حساب کنید و نتیجه را در جعبه وارد کنید ([[Special:Captcha/help|اطلاعات بیشتر]]):",
+ "captcha-createaccount-fail": "کد تأییدی وجود ندارد یا نادرست است.",
+ "captcha-create": "برای ایجاد صفحه لطفاً حاصل جمع زیر را حساب کنید و نتیجه را در جعبه وارد کنید ([[Special:Captcha/help|اطلاعات بیشتر]]):",
+ "captcha-sendemail": "برای کمک به حفاظت ویکی در برابر هرزنامه‌های خودکار، لطفاً جمع سادهٔ زیر را حل کنید و جواب را در جعبه وارد کنید ([[Special:Captcha/help|اطلاعات بیشتر]]):",
+ "captcha-sendemail-fail": "کد تأییدی وجود ندارد یا نادرست است.",
+ "captcha-disabledinapi": "این اقدام به کپچا نیاز دارد، بنابراین نمی‌تواند از طریق API انجام شود.",
+ "captchahelp-title": "راهنمای Captcha",
+ "captchahelp-cookies-needed": "برای کار کردن آن، شما باید کوکی‌های مرورگرتان را فعال کنید.",
+ "captchahelp-text": "تارنماهایی مثل این ویکی که به عموم اجازهٔ نوشتن مطلب می‌دهند، غالباً مورد سوءاستفادهٔ هرزفرستندگانی می‌شوند که با ابزارهای خودکار پیوندهای بیرونی به تارنماهای موردنظرشان وارد می‌کنند.\nاگر چه این پیوندهای هرز و تبلیغاتی را می‌توان دستی حذف کرد، ولی به هر حال باعث اعصاب‌خردی زیادی می‌شوند.\n\nگاهی اوقات، خصوصاً هنگامی که پیوندهای بیرونی جدیدی به صفحه اضافه می‌شود، ویکی ممکن است به شما تصویری رنگی و کج‌وکوله از متنی نشان بدهد و از شما بخواهد که کلمه‌های نشان‌داده‌شده را تایپ کنید.\nاز آنجا که خودکارسازی این کار دشوار است، انسانهای واقعی می‌توانند پیوندهاشان را وارد کنند ولی برنامه‌های خودکار تبلیغاتی از خرابکاری باز خواهند ماند.\n\nمتأسفانه این امر ممکن است باعث مزاحمت برای کاربرانی شود که چشمشان ضعیف است یا از مرورگرهای متنی یا گفتاری استفاده می‌کنند.\nدر حال حاضر ما جایگزین صوتی‌ای برای این کار نداریم. لطفاً اگر برای واردساختن پیوندهای مشروع دچار مشکل شده‌اید با [[Special:ListAdmins|مدیران این تارنما]] تماس بگیرید.\n\nدکمهٔ «بازگشت» را در مرورگر خود فشار دهید تا به صفحهٔ ویرایش بازگردید.",
+ "captcha-addurl-whitelist": " #<!-- این سطر را همان‌گونه که هست رها کنید --> <pre>\n# قواعد به این شکل است:\n# * همه‌چیز از «#» تا آخر سطر یک توضیح در نظر گرفته می‌شود.\n# * هر سطری که خالی نباشد یک قطعه در نظر گرفته می‌شود که فقط با نام میزبان اینترنتی سنجیده می‌شود.\n #</pre> <!-- این سطر را همان‌گونه که هست رها کنید -->",
+ "right-skipcaptcha": "انجام کارهایی که CAPTCHA را فعال می‌کنند بدون نیاز به گذر از CAPTCHA"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/lkt.json b/www/wiki/extensions/ConfirmEdit/i18n/lkt.json
new file mode 100644
index 00000000..58760534
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/lkt.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "R12ntech"
+ ]
+ },
+ "captcha-label": "CAPTCHA"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/lo.json b/www/wiki/extensions/ConfirmEdit/i18n/lo.json
new file mode 100644
index 00000000..d35d336a
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/lo.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": [],
+ "captcha-edit": "ການດັດແກ້ ຂອງ ທ່ານ ມີລິ້ງູຄ໌ພາຍນອກ. ເພື່ອ ເປັນການຊ່ອຍປ້ອງກັນ ສະແປມອັດຕະໂນມັດ, ກະລຸນາແກ້ເລກບວກ ງ່າຍໆຂ້າງລຸ່ມນີ້ ແລ້ວ ພິມຄຳຕອບໃສ່ໃນ ກັບ ([[Special:Captcha/help|more info]]):",
+ "captcha-addurl": "ການດັດແກ້ຂອງທ່ານ ມີ ການກາງລິ້ງຄ໌ຫາພາຍນອກ. ເພື່ອເປັນການຊ່ອຍປ້ອງກັນ ສະແປມອັດຕະໂນມັດ ກະລຸນາ ແກ້ເລກບວກງ່າຍໆຂ້າງລຸ່ມນີ້ ແລ້ວ ພິມຜົນບວກ ໃສ່ ກັບ ([[Special:Captcha/help|ຂໍ້ມູນເພີ່ມເຕີມ]]):",
+ "captcha-createaccount": "ເພື່ອປ້ອງກັນ ການສ້າງບັນຊີແບບອັດຕະໂນມັດ, ກະລຸນາ ແກ້ເລກບວກງ່າຍໆ ຂ້າງລຸ່ມ ແລ້ວ ພິມຄຳຕອບໃສ່ ກັບ ([[Special:Captcha/help|more info]]):",
+ "captcha-createaccount-fail": "ບໍ່ຖືກ ຫຼື ບໍ່ມີລະຫັດຢືນຢັນ.",
+ "captcha-create": "ກະລຸນາ ແກ້ເລກບວກງ່າຍໆລຸ່ມນີ້ ແລະ ພິມຜົນບວກໃສ່ໃນກັບ ເພື່ອ ສ້າງໜ້ານີ້ ([[Special:Captcha/help|ຂໍ້ມູນເພີ່ມເຕີມ]]):"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/lrc.json b/www/wiki/extensions/ConfirmEdit/i18n/lrc.json
new file mode 100644
index 00000000..b00dd1c6
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/lrc.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "Mogoeilor"
+ ]
+ },
+ "captcha-edit": "سی ویرایشت ای بلگه،لطف بکیت جم هاری نه انجوم بئیتو و جواو نه د جعوه وارد بکید:([[Special:Captcha/هومیاری|دونسمنیا هنی]])",
+ "captcha-label": "كپچا",
+ "captcha-createaccount-fail": "کد کپچا غلط یا گم بیه.",
+ "captcha-sendemail-fail": "کد کپچا غلط یا گم بیه.",
+ "captchahelp-title": "هومياری كپچا",
+ "captchahelp-cookies-needed": "شما با کوکیانه د جاگرد تو فعال بکید سی یه وه کار بکه."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/lt.json b/www/wiki/extensions/ConfirmEdit/i18n/lt.json
new file mode 100644
index 00000000..b2253aef
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/lt.json
@@ -0,0 +1,41 @@
+{
+ "@metadata": {
+ "authors": [
+ "Eitvys200",
+ "Garas",
+ "Homo",
+ "Matasg",
+ "Albertas",
+ "Zygimantus"
+ ]
+ },
+ "captcha-edit": "Kad redaguotumėte šį straipsnį, apskaičiuokite šią paprastą sumą ir įveskite atsakymą į laukelį ([[Special:Captcha/help|daugiau informacijos]]):",
+ "captcha-edit-fail": "Neteisingas arba nenurodytas patvirtinimo kodas.",
+ "captcha-desc": "Pateikia CAPTCHA metodikas, kaip apsisaugoti nuo brukalo ir slaptažodžių spėliojimo",
+ "captcha-label": "CAPTCHA",
+ "captcha-help": "CAPTCHA sprendimas.",
+ "captcha-info-help": "CAPTCHA aprašymas.",
+ "captcha-id-label": "CAPTCHA ID",
+ "captcha-id-help": "Ši reikšmė turėtų būti siunčiama atgal nepakeista.",
+ "captcha-addurl": "Jūsų pakeitimuose yra nauja išorinė nuoroda.\nKad apsaugotume viki nuo automatinio brukalo, mes maloniai prašome jūsų suskaičiuoti paprastą sumą, pateiktą žemiau, ir įvesti atsakymą į langelį, kad Jūsų pakeitimai būtų išsaugoti, ([[Special:Captcha/help|daugiau informacijos]]):",
+ "captcha-badlogin": "Kad apsaugotume viki nuo automatinio slaptažodžių nulaužinėjimo, mes maloniai prašome jūsų apskaičiuoti paprastą sumą, pateiktą žemiau, ir įvesti atsakymą į langelį ([[Special:Captcha/help|daugiau informacijos]]):",
+ "captcha-createaccount": "Kad apsaugotume viki nuo automatinio paskyrų kūrimo, mes maloniai prašome apskaičiuoti paprastą sumą, pateiktą žemiau, ir įvesti atsakymą į langelį ([[Special:Captcha/help|daugiau informacijos]]):",
+ "captcha-createaccount-fail": "Neteisingas arba nenurodytas patvirtinimo kodas.",
+ "captcha-create": "Kad sukurtumėte puslapį, prašome apskaičiuoti paprastą sumą, pateiktą žemiau, ir įvesti atsakymą į langelį ([[Special:Captcha/help|daugiau informacijos]]):",
+ "captcha-sendemail": "Kad apsaugotume viki nuo automatinio brukalo, maloniai prašome apskaičiuoti paprastą sumą, pateiktą žemiau, ir įvesti atsakymą į langelį ([[Special:Captcha/help|daugiau informacijos]]):",
+ "captcha-sendemail-fail": "Neteisingas arba nenurodytas CAPTCHA.",
+ "captcha-disabledinapi": "Šis veiksmas reikalauja nurodyti patvirtinimo kodą, todėl jis negali būti atliktas per API.",
+ "captcha-error": "CAPTCHA patvirtinimas nepavyko dėl vidinės klaidos: $1",
+ "captchahelp-title": "CAPTCHA pagalba",
+ "captchahelp-cookies-needed": "Jums reikia būti įjungus sausainėlius savo naršyklėje kad tai veiktu",
+ "captchahelp-text": "Tinklapis, kuris priima įrašus iš viešumos, kaip šis vikis, yra dažnai išnaudojamas brukalių, kurie naudoja automatizuotus įrankius savo nuorodoms įrašyti į daugelį tinklapių. Nors šios brukalo nuorodos gali būti pašalintos, bet tai daryti yra labai nemalonu.\n\nKartais, ypač kai į puslapį įrašoma nauja internetinė nuoroda, vikis gali parodyti paveikslėlį su nuspalvintu ar sudarkytu tekstu ir paprašyti įvesti rodomus žodžius. Tai yra sunkiai automatizuojama užduotis, todėl dauguma tikrų žmonių galės pateikti įrašus, o dauguma brukalių ir kitų robotizuotų atakuotojų bus sustabdyti.\n\nDeja, tai gali sukelti sunkumų naudotojams, kurie prastai mato arba naudoja tekstu-grįstas arba kalba-grįstas naršykles.\nŠiuo metu negalime pasiūlyti audio alternatyvos.\nPrašome susisiekti su [[Special:ListAdmins|tinklapio administratoriais]] dėl pagalbos, jeigu tai netikėtai trukdo Jums atlikti teisėtus veiksmus.\n\nPaspauskite \"Atgal\" mygtuką savo naršyklėje, kad grįžtumėte į puslapio redaktorių.",
+ "captcha-addurl-whitelist": " #<!-- palikite šią eilutę tiksliai tokią, kokia ji yra --> <pre>\n# Sintaksė tokia:\n# * Viskas nuo \"#\" simbolio iki eilutės pabaigos yra komentaras\n# * Kiekviena netuščia eilutė yra reguliariosios išraiškos fragmentas, kuris atitinka tik serverių vardus esančius URL adresuose\n #</pre> <!-- palikite šią eilutę tiksliai tokią, kokia ji yra -->",
+ "right-skipcaptcha": "Atlikti apsaugos teksto reikalaujančius veiksmus, nereikalaujant nurodyti apsaugos teksto",
+ "captcha-apihelp-param-captchaword": "Atsakyti į CAPTCHA",
+ "captcha-apihelp-param-captchaid": "CAPTCHA ID iš prieš tai buvusios užklausos",
+ "confirmedit-preview-line": "Eilutės numeris",
+ "confirmedit-preview-content": "Turinys",
+ "confirmedit-preview-validity": "Galiojimas",
+ "confirmedit-preview-valid": "galiojantis",
+ "confirmedit-preview-invalid": "neteisingas"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/luz.json b/www/wiki/extensions/ConfirmEdit/i18n/luz.json
new file mode 100644
index 00000000..f71703a6
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/luz.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "علی ساکی لرستانی"
+ ]
+ },
+ "captcha-label": "کپچآۉ"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/lv.json b/www/wiki/extensions/ConfirmEdit/i18n/lv.json
new file mode 100644
index 00000000..ee637e9f
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/lv.json
@@ -0,0 +1,24 @@
+{
+ "@metadata": {
+ "authors": [
+ "BrokenArrow",
+ "Edgars2007",
+ "Marozols",
+ "Yyy",
+ "Papuass"
+ ]
+ },
+ "captcha-edit": "Lai izmainītu šo lapu, atrisini šo vienādojumu un iegūto skaitli ieraksti šajā lodziņā: <br />([[Special:Captcha/help|Kāpēc tā?]])",
+ "captcha-label": "CAPTCHA",
+ "captcha-id-label": "CAPTCHA ID",
+ "captcha-addurl": "Tavas izmaiņas ietver jaunu URL saiti.\nLai pasargātos no automātiskas mēstuļošanas, Tev ir jāieraksta te redzamā vienādojuma rezultāts: <br />([[Special:Captcha/help|vairāk informācijas]])",
+ "captcha-badlogin": "Lai pasargātos no automātiskiem paroļu lauzējiem, lūdzu aprēķini šīs izteiksmes vērtību un rezultātu ieraksti apakšā esošajā lodziņā ([[Special:Captcha/help|papildus informācija]]):",
+ "captcha-createaccount": "Lai pasargātos no automātiskas mēstuļošanas, Tev reģistrējoties ir jāieraksta šī vienādojuma rezultāts: <br />([[Special:Captcha/help|Kāpēc tā?]])",
+ "captcha-createaccount-fail": "Nepareizs apstiprinājuma kods vai arī tas nav ievadīts.",
+ "captcha-create": "Lai izveidotu šo lapu, atrisini šo vienādojumu un rezulātu ieraksti šajā lodziņā: <br />([[Special:Captcha/help|Kāpēc tā?]])",
+ "captchahelp-title": "CAPTCHA palīdzība",
+ "captchahelp-cookies-needed": "Lai šis darbotos, pārlūkprogrammā jābūt iespējotām (''enabled'') sīkdatnēm (''cookies'').",
+ "captchahelp-text": "Interneta lapas, kurās iespējams pievienot tekstu, kā šajā wiki, bieži cieš no mēstuļotājiem, kuri izmanto automatizētus līdzekļus, lai pievienotu savus saites daudzās jo daudzās interneta lapās.\nKaut arī šīs saites var viegli dzēst, tomēr tās ir nozīmīgs traucēklis.\n\nReizēm, jo īpaši pievienojot jaunas interneta saites, wiki programmatūra var parādīt Tev attēlu, kurā ir krāsains vai sagrozīts teksts. Šis teksts ir jāpārraksta un to ir ļoti grūti izdarīt automātiski, tā apgrūtinot lielāko daļu mēstuļotāju, savukārt gandrīz visi parastie lietotāji to var izdarīt bez grūtībām.\n\nDiemžēl tas var apgrūtināt lietotājus, kuriem ir redzes traucējumi vai kuri izmanto teksta pārlūkus vai dzirdes pārlūkus. Šobrīd nav pieejama audio alternatīva, bet sazinies ar [[Special:ListAdmins|wiki administratoriem]], ja tas liedz Tev veikt labi domātus papildinājumus.\n\nSpied pārlūka pogu \"Atpakaļ\" (''Back''), lai atgrieztos iepriekšējā lapā.",
+ "confirmedit-preview-content": "Saturs",
+ "confirmedit-preview-invalid": "nederīgs"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/mai.json b/www/wiki/extensions/ConfirmEdit/i18n/mai.json
new file mode 100644
index 00000000..c56b822e
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/mai.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "बिप्लब आनन्द"
+ ]
+ },
+ "captcha-label": "सहमति कोड (क्याप्चा)",
+ "captcha-createaccount-fail": "गलत या खालि सहमति कोड।",
+ "captcha-create": "इ पृष्ठ बनाबए के लेल, निचा देल हल्लुक गणित प्रश्न के उत्तर बक्सा में लिखु ([[Special:Captcha/help|अधिक जानकारी]]):",
+ "captcha-sendemail-fail": "गलत या खालि सहमति कोड।",
+ "captchahelp-title": "सहमति कोड (क्याप्चा) सहायता",
+ "captchahelp-cookies-needed": "इ कार्य करए के लेल अहाँ के कूकीज (cookies) सक्षम केनाए आवश्यक अछि।",
+ "right-skipcaptcha": "सहमति कोड में नै जा सहमति कोड के प्रयोग करए के लेल आग्रह करू"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/mg.json b/www/wiki/extensions/ConfirmEdit/i18n/mg.json
new file mode 100644
index 00000000..13705c05
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/mg.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "Jagwar"
+ ]
+ },
+ "captcha-label": "CAPTCHA",
+ "right-skipcaptcha": "Manao tao mampisy ny captcha fa tsy mila mameno azy"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/min.json b/www/wiki/extensions/ConfirmEdit/i18n/min.json
new file mode 100644
index 00000000..a4c21746
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/min.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "Iwan Novirion"
+ ]
+ },
+ "captchahelp-text": "Laman-laman web nan manarimo tulisan dari urang banyak (publik), samacam wiki ko, acok kali disalahgunoan dek pangguno-pangguno nan indak batangguang-jawek untuak mangiriman spam manggunoan program-program otomatis.\nWalaupun pautan-pautan spam tasabuik dapek sajo dihapuih, tapi tatap sajo manimbulan gangguan.\n\nKadang-kadang, sangkek tangah manambahan pautan web baru ka suatu laman, wiki ko akan manampilan sabantuak gambar dari tulisan nan bawarna ataupun tadistorsi. Dan sudah tu, Sanak dimintak untuak mangetikkan tulisan nan nampak tu.\nDek iko marupoan suatu karajo nan sulik untuak dibuek sacaro otomatis, pakaro ko akan mudah dilalui dek urang (manusia), sakaliguih dapek manghantian hampiang kasado sarangan spam dan robot otomatis lainnyo.\n\nSayangnyo, hal iko mambuek sarik bagi pangguno nan tabateh panglihatannyo atau dek pangguno nan manggunoan paramban web babasis-teks ataupun babasis-suaro.\nKini ko, kami alun dapek alternatip lain untuak manggunoan suaro buek pakaro ko.\nSilakan hubuangi [[Special:ListAdmins|panguruih]] untuak mintak bantuan koq pakaro ko manghambaik Sanak untuak mambuek suntiangan nan layak.\n\nTakan tombol \"back\" di paramban web Sanak untuak baliak ka laman panyuntiangan.",
+ "right-skipcaptcha": "Mamicu CAPTCHA tanpa malaluinyo"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/mk.json b/www/wiki/extensions/ConfirmEdit/i18n/mk.json
new file mode 100644
index 00000000..0c7feeef
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/mk.json
@@ -0,0 +1,38 @@
+{
+ "@metadata": {
+ "authors": [
+ "Bjankuloski06",
+ "Brest"
+ ]
+ },
+ "captcha-edit": "За да ја уредите оваа страница потребно е да го најдете решението на задачата поставена подолу и да го внесете одговорот во полето ([[Special:Captcha/help|повеќе инфо]]):",
+ "captcha-edit-fail": "Внесеното е неточно или недостасува",
+ "captcha-desc": "Овозможува техники од проверка со сликичка за заштита од спам и погодување на лозинки",
+ "captcha-label": "Сликичка за проверка",
+ "captcha-help": "Решение на CAPTCHA-та",
+ "captcha-info-help": "Опис на CAPTCHA-та",
+ "captcha-id-label": "Назнака на CAPTCHA-та",
+ "captcha-id-help": "Оваа вредност треба да се врати непроменета.",
+ "captcha-addurl": "Вашето уредување содржи нови надворешни врски.\nЗа да ни помогнете да се заштитиме од автоматизиран спам, би ве замолиле да ја решите простата задача подолу и да го внесете одговорот во полето за да можете да го зачувате уредувањето ([[Special:Captcha/help|повеќе инфо]]):",
+ "captcha-badlogin": "За да ни помогнете да се заштитиме од автоматизирано пробивање на лозинки, би ве замолиле да ја решите простата задача подолу и внесете одговорот во полето ([[Special:Captcha/help|повеќе информации]]):",
+ "captcha-createaccount": "За да ни помогнете да се заштитиме од автоматизирано создавање на сметки, би ве замолиле да ја решите простата задача подолу и да го внесете одговорот во полето ([[Special:Captcha/help|повеќе инфо]]):",
+ "captcha-createaccount-fail": "Внесеното е неточно или недостасува",
+ "captcha-create": "За да ја создадете остраницата, прво решете ја задачата подолу и внесете го решението во полето ([[Special:Captcha/help|повеќе инфо]]):",
+ "captcha-sendemail": "За да се заштитиме од автоматизирано спамирање, би сакале да ве замолиме да ја решите простата задача подолу и да го внесете одговорот во полето ([[Special:Captcha/help|повеќе информации]]):",
+ "captcha-sendemail-fail": "Внесеното е неточно или недостасува",
+ "captcha-disabledinapi": "Ова дејство бара проверка со сликичка, така што не може да се изврши преку иавршник.",
+ "captcha-error": "Заверката на CAPTCHA-та не успеа поради внатрешна грешка: $1",
+ "captchahelp-title": "Помош со проверката",
+ "captchahelp-cookies-needed": "Треба да имате овозможено колачиња за да може ова да работи.",
+ "captchahelp-text": "Семрежните места кои прифаќаат учество на јавноста, како ова вики, честопати страдаат од спамери кои користат автоматизирани алатки за да ги додаваат нивните врски на голем број мережни страници. Иако врските на спамерот може да се отстранат, тие значително ја пореметуваат нашата работа.\n\nПонекогаш, особено кога додава нови врски на страница, викито може да ви прикаже обоен или извитоперен текст и да ви побара да ги впишете прикажаните зборови. \nБидејќи ова е задача која е тешко да се автоматизира, им овозможува вистинските корисници да придонесуваат, а им попречува на спамерите и другите роботски напаѓачи.\n\nЗа жал, ова може да е проблем за корисници со лош вид, или оние кои користат прелистувачи на основа на текст или гласовни наредби.\nВо моментов немаме аудио-алтернатива за ова.\nКонтактирајте ги [[Special:ListAdmins|администраторите на страната]] за помош доколку ова неочекувано ве спречува во правењето на искрени придонеси. \n\nСтиснете на копчето „назад“ во вашиот прелисувач за да се вратите на уредувањето на страницата.",
+ "captcha-addurl-whitelist": " #<!-- leave this line exactly as it is --> <pre>\n# Опис на синтаксата:\n# * Сето она што стои по знакот „#“, па до крајот на редот е коментар\n# * Секој непразен ред се смета за фрагмент од регуларен израз кој одговара само на имиња во URL адреси\n #</pre> <!-- leave this line exactly as it is -->",
+ "right-skipcaptcha": "Изведување на дејства кои повикуваат сликичка без да одат преку нејзиниот систем",
+ "captcha-apihelp-param-captchaword": "Одговор на сликичката",
+ "captcha-apihelp-param-captchaid": "Назнака на сликичката од претходно барање",
+ "confirmedit-preview-line": "Број редот",
+ "confirmedit-preview-content": "Содржина",
+ "confirmedit-preview-validity": "Полноважност",
+ "confirmedit-preview-valid": "важечка",
+ "confirmedit-preview-invalid": "неважечка",
+ "confirmedit-preview-description": "Следнава табела прикажува список на редови во страницата и дали е важечка IPжадреса или опсег. Ако опегот е таков, ќе биде изземен од проверка со CAPTCHA, но неважечките редови ќе се занемарат. Пример за важечки IP-опсег: 69.208.0.0/16 кој се движи од 69.208.0.0 до 69.208.255.255. [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Range_blocks#Calculating_the_CIDR_suffix Повеќе информации] за пресметување на опсези на IP-адреси."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/ml.json b/www/wiki/extensions/ConfirmEdit/i18n/ml.json
new file mode 100644
index 00000000..29c92b4e
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/ml.json
@@ -0,0 +1,37 @@
+{
+ "@metadata": {
+ "authors": [
+ "Praveenp",
+ "Shijualex"
+ ]
+ },
+ "captcha-edit": "ഈ താൾ തിരുത്തുവാൻ, ദയവായി താഴെ കൊടുത്തിരിക്കുന്ന ക്രിയ ചെയ്ത് അതിന്റെ ഉത്തരം താഴെയുള്ള പെട്ടിയിൽ ടൈപ്പു ചെയ്യുക ([[Special:Captcha/help|കൂടുതൽ വിവരങ്ങൾ]]):",
+ "captcha-edit-fail": "തെറ്റായതോ ലഭ്യമല്ലാത്തതോ ആയ കാപ്ച്ച.",
+ "captcha-desc": "പാഴെഴുത്ത് ഉൾപ്പെടുത്തലിനും രഹസ്യവാക്ക് ഊഹിക്കലിനുമെതിരെ സംരക്ഷണം തരുന്ന കാപ്ച സംവിധാനം നൽകുന്നു",
+ "captcha-label": "കാപ്ച",
+ "captcha-help": "കാപ്ചയുടെ ഉത്തരം.",
+ "captcha-info-help": "കാപ്ചയുടെ വിശദീകരണം.",
+ "captcha-id-label": "കാപ്ച ഐ.ഡി.",
+ "captcha-id-help": "ഈ വില മാറ്റമില്ലാതെ തിരിച്ചയക്കേണ്ടതാണ്.",
+ "captcha-addurl": "താങ്കളുടെ തിരുത്തലിൽ പുറം കണ്ണികൾ ഉൾപ്പെട്ടിരിക്കുന്നു.\nയാന്ത്രികമായി പാഴെഴുത്തുൾപ്പെടുത്തുന്നതിൽ നിന്നും വിക്കി സം‌രക്ഷിക്കുന്നതിന്റെ ഭാഗമായി, ദയവായി താഴെ കൊടുത്തിരിക്കുന്ന ക്രിയ ചെയ്ത് അതിന്റെ ഉത്തരം താഴെയുള്ള പെട്ടിയിൽ ടൈപ്പു ചെയ്യുക ([[Special:Captcha/help|കൂടുതൽ വിവരങ്ങൾ]]):",
+ "captcha-badlogin": "യാന്ത്രികമായി രഹസ്യവാക്ക് പൊളിക്കുന്നതിൽ നിന്നും വിക്കി സംരക്ഷിക്കുന്നതിന്റെ ഭാഗമായി, ദയവായി താഴെ കൊടുത്തിരിക്കുന്ന ക്രിയ ചെയ്ത്, ഉത്തരം താഴെയുള്ള പെട്ടിയിൽ ടൈപ്പു ചെയ്യുക ([[Special:Captcha/help|കൂടുതൽ വിവരങ്ങൾ]]):",
+ "captcha-createaccount": "യാന്ത്രികമായി അംഗത്വം സൃഷ്ടിക്കുന്നതിൽ നിന്നും വിക്കി സം‌രക്ഷിക്കുന്നതിന്റെ ഭാഗമായി, ദയവായി താഴെ കൊടുത്തിരിക്കുന്ന ചെയ്ത് അതിന്റെ ഉത്തരം താഴെയുള്ള പെട്ടിയിൽ ടൈപ്പു ചെയ്യുക ([[Special:Captcha/help|കൂടുതൽ വിവരങ്ങൾ]]):",
+ "captcha-createaccount-fail": "തെറ്റായതോ ലഭ്യമല്ലാത്തതോ ആയ കാപ്ച്ച.",
+ "captcha-create": "ഈ താൾ സൃഷ്ടിക്കുവാൻ, ദയവായി താഴെ കൊടുത്തിരിക്കുന്ന ക്രിയയുടെ ഉത്തരം താഴെയുള്ള പെട്ടിയിൽ എഴുതുക ([[Special:Captcha/help|കൂടുതൽ വിവരങ്ങൾ]]):",
+ "captcha-sendemail": "യാന്ത്രികമായ പാഴെഴുത്ത് ഉൾപ്പെടുത്തുന്നതിൽ നിന്നും വിക്കി സംരക്ഷിക്കുന്നതിന്റെ ഭാഗമായി, ദയവായി താഴെ കൊടുത്തിരിക്കുന്ന ക്രിയ ചെയ്ത്, ഉത്തരം പെട്ടിയിൽ എഴുതുക ([[Special:Captcha/help|കൂടുതൽ വിവരങ്ങൾ]]):",
+ "captcha-sendemail-fail": "തെറ്റായതോ ലഭ്യമല്ലാത്തതോ ആയ കാപ്ച്ച.",
+ "captcha-disabledinapi": "ഈ പ്രവൃത്തി പൂർണ്ണമാകാൻ കാപ്ച ആവശ്യമാണ്, അതുകൊണ്ടിത് എ.പി.ഐ. ഉപയോഗിച്ച് ചെയ്യാൻ കഴിയില്ല.",
+ "captcha-error": "ആന്തരികപിഴവിനാൽ കാപ്ച പരിശോധന പരാജയപ്പെട്ടു:$1",
+ "captchahelp-title": "കാപ്ച്ച സഹായം",
+ "captchahelp-cookies-needed": "ഇതു പ്രവർത്തിക്കണമെങ്കിൽ താങ്കളുടെ ബ്രൗസറിൽ കുക്കികൾ സജ്ജീകരിച്ചിരിക്കണം.",
+ "captchahelp-text": "ഈ വിക്കിപോലെ പൊതുജനങ്ങളിൽ നിന്നും പ്രസിദ്ധപ്പെടുത്തലുകൾ സ്വീകരിക്കുന്ന വെബ്‌‌സൈറ്റുകൾ, സ്വയം പ്രവർത്തിക്കുന്ന ഉപകരണങ്ങൾ ഉപയോഗിച്ച് കണ്ണികളും മറ്റും പ്രസിദ്ധപ്പെടുത്തുന്ന സ്പാമർമാർ സാധാരണ ദുരുപയോഗം ചെയ്യാറുണ്ട്.\nഇത്തരത്തിലുള്ള പാഴെഴുത്ത് കണ്ണികൾ നീക്കംചെയ്യപ്പെട്ടുപോകുമെങ്കിലും, അവ ശരിക്കും ശല്യമാണ്.\n\nചിലപ്പോൾ, പ്രത്യേകിച്ച് ഒരു വെബ് കണ്ണി താളിൽ കൂട്ടിച്ചേർക്കുമ്പോൾ, നിറങ്ങൾ ചേർത്തതോ വികലമാക്കിയതോ ആയ എഴുത്തുകൾ താങ്കളെ കാണിച്ച് അവ ടൈപ്പ് ചെയ്യാൻ താങ്കളോട് ആവശ്യപ്പെട്ടേക്കാം.\nഇത് മനുഷ്യസഹായമില്ലാതെ ചെയ്യാൻ ബുദ്ധിമുട്ടായതിനാൽ, ശരിക്കും മനുഷ്യരായിട്ടുള്ളവർക്ക് തങ്ങളുദ്ദേശിക്കുന്നത് ചേർക്കാനും അതേസമയം ബഹുഭൂരിപക്ഷം സ്പാമർമാരേയും യന്ത്രങ്ങളുപയോഗിച്ച് ആക്രമിക്കുന്നവരേയും തടയാനും കഴിയുന്നതാണ്.\n\nദൗർഭാഗ്യകരമെന്നു പറയട്ടെ ഇത് ചിലപ്പോൾ ദൃഷ്ടിവൈകല്യം കൊണ്ടോ മറ്റോ, എഴുത്തുകൾ മാത്രമനുവദിക്കുന്ന ബ്രൗസറുകൾ ഉപയോഗിക്കുന്നവർ, ശബ്ദം കേട്ട് മനസ്സിലാക്കുന്നവർ തുടങ്ങിയവർക്ക് ബുദ്ധിമുട്ടായേക്കാം.\nഇപ്പോൾ ഞങ്ങൾക്ക് ഇതിനു പകരം ശബ്ദം നൽകുന്ന സംവിധാനമില്ല.\n\nഇത് ന്യായമായ പ്രസിദ്ധപ്പെടുത്തലുകൾ ഇടുന്നതിൽ നിന്നും അപ്രതീക്ഷിതമായി താങ്കളെ തടയുന്നുവെങ്കിൽ ദയവായി [[Special:ListAdmins|സൈറ്റിന്റെ കാര്യനിർവാഹകരെ]] ബന്ധപ്പെടുക.\n\nബ്രൗസറിലെ 'ബാക്ക്' ബട്ടൺ ഞെക്കിയാൽ താങ്കൾക്ക് താൾ തിരുത്തുവാനുള്ള സംവിധാനത്തിലേയ്ക്ക് മടങ്ങിപ്പോകാവുന്നതാണ്.",
+ "captcha-addurl-whitelist": " #<!-- ഈ വരി ഇതുപോലെ തന്നെ നിലനിർത്തുക --> <pre>\n# സിന്റാക്സ് താഴെ കാണുന്ന പ്രകാരമാണ്‌:\n# * \"#\" എന്ന അക്ഷരത്തിൽ തുടങ്ങുന്ന എല്ലാ വരികളും കുറിപ്പുകളായിരിക്കും\n# * ശൂന്യമല്ലാത്ത എല്ലാ വരികളും യു.ആർ.എല്ലിനു അകത്തെ ഹോസ്റ്റുകളുമായി മാത്രം ഒത്തുനോക്കുന്ന റെജെക്സ് ഘടകങ്ങളായിരിക്കും\n #</pre> <!-- ഈ വരി ഇതുപോലെ തന്നെ നിലനിർത്തുക -->",
+ "right-skipcaptcha": "കാപ്ച ഉപയോഗിക്കേണ്ട പ്രവൃത്തികൾ കാപ്ചയിലൂടെ കടന്നു പോകാതെ തന്നെ ചെയ്യാൻ കഴിയുക",
+ "captcha-apihelp-param-captchaword": "കാപ്ച്ചയ്ക്ക് മറുപടി നൽകുക",
+ "captcha-apihelp-param-captchaid": "പഴയ അഭ്യർത്ഥനയിൽ നിന്നുള്ള കാപ്ച്ച ഐ.ഡി.",
+ "confirmedit-preview-line": "വരികളുടെ ക്രമസംഖ്യ",
+ "confirmedit-preview-content": "ഉള്ളടക്കം",
+ "confirmedit-preview-validity": "സാധുത",
+ "confirmedit-preview-valid": "സാധുതയുള്ളത്",
+ "confirmedit-preview-invalid": "അസാധു"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/mn.json b/www/wiki/extensions/ConfirmEdit/i18n/mn.json
new file mode 100644
index 00000000..19ba3d12
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/mn.json
@@ -0,0 +1,12 @@
+{
+ "@metadata": {
+ "authors": [
+ "Chinneeb"
+ ]
+ },
+ "captcha-createaccount": "Автоматаар хэрэглэгчийн бүртгэл үүсгэхээс сэргийлэхийн тулд дараах хялбар нийлбэрийг бодож хайрцагт хариуг нь оруулна уу\n([[Special:Captcha/help|дэлгэрэнгүй мэдээлэл]]):",
+ "captcha-createaccount-fail": "Баталгаажуулах код алдаатай, эсвэл байхгүй байна.",
+ "captchahelp-title": "Captcha-н талаар тусламж",
+ "captchahelp-cookies-needed": "Үүнийг ажиллуулахын тулд та вэб хөтөчийнхөө күүкиг идэвхижүүлэх хэрэгтэй.",
+ "captchahelp-text": "Энэ вики шиг хүссэн хүн болгон засварлах боломжтой вэбсайтуудад спаммерууд янз бүрийн сайтын холбоосыг автоматаар олноор нь оруулдаг.\nЭдгээр спам холбоосуудыг устгах боломжтой ч маш их төвөг учирдаг.\n\nЗаримдаа, ялангуяа шинэ вэб холбоосууд оруулж байх үед, вики нь өнгөт буюу мушгирсан бичиг гаргаж таныг энэ бичгийг шивж оруул гэдэг.\nЭнэ үйлдлийг автоматаар хийх нь хэцүү учраас жинхэнэ хүмүүс өөрсдийн засваруудыг оруулах боломж олгодог ч спаммерүүд болоод автомат халдлага үйлдэгчдийг зогсоож байдаг.\n\nХарамсалтай нь хараа муутай буюу бичигт эсвэл ярианд тулгуурласан вэб хөтөч ашигладаг хэрэглэгчдэд хүндрэл учирна.\nОдоогийн байдлаар дуун сонголт алга байна.\nТаньд бодит засвар хийхэд хүндрэл учирч байвал [[Special:ListAdmins|сайтын администраторуудаас]] тусламж авч холбогдоно уу.\n\nХуудасны засварлагч руу буцахын тулд вэб хөтөчийнхөө \"буцаах\" товч дээр дарна уу."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/mr.json b/www/wiki/extensions/ConfirmEdit/i18n/mr.json
new file mode 100644
index 00000000..355bca82
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/mr.json
@@ -0,0 +1,34 @@
+{
+ "@metadata": {
+ "authors": [
+ "Kaustubh",
+ "Mahitgar",
+ "V.narsikar",
+ "संतोष दहिवळ",
+ "अभय नातू"
+ ]
+ },
+ "captcha-edit": "हे पान संपादित करण्यासाठी, खाली दिलेले सोपे गणित सोडवून त्याचे उत्तर दिलेल्या पृष्ठपेटी मध्ये लिहा ([[Special:Captcha/help|अधिक माहिती]]):",
+ "captcha-edit-fail": "चूकिचा किंवा हरवलेला कॅप्चा",
+ "captcha-desc": "उत्पात आणि परवलीच्या शब्दांच्या चोरी पासून सूरक्षीत ठेवणाऱ्या ओळखपटवा-पद्धती CAPTCHA techniques पुरवते.",
+ "captcha-label": "कॅप्चा",
+ "captcha-addurl": "तुमच्या संपादनात नवीन बाह्यदुवे आहेत. आपोआप होणार्‍या स्पॅम पासून वाचण्यासाठी, खाली दिलेले सोपे गणित सोडवून संपादन जतन करण्यास, त्याचे उत्तर दिलेल्या पृष्ठपेटी मध्ये लिहा ([[Special:Captcha/help|अधिक माहिती]]):",
+ "captcha-badlogin": "या विकिस आपोआप परवलीच्या शब्दास फोडण्यापासून वाचण्यासाठी, खाली दिलेले सोपे गणित सोडवून त्याचे उत्तर दिलेल्या पृष्ठपेटी मध्ये लिहा ([[Special:Captcha/help|अधिक माहिती]]):",
+ "captcha-createaccount": "या विकिस आपोआप होणार्‍या सदस्य नोंदणीपासून सुरक्षित ठेवण्यासाठी, खाली दिलेले सोपे गणित सोडवून त्याचे उत्तर दिलेल्या पृष्ठपेटी मध्ये लिहा ([[Special:Captcha/help|अधिक माहिती]]):",
+ "captcha-createaccount-fail": "चुकीचा अथवा रिकामा कॅपचा.",
+ "captcha-create": "हे पान तयार करण्यासाठी, खाली दिलेले सोपे गणित सोडवून त्याचे उत्तर दिलेल्या पृष्ठपेटी मध्ये लिहा ([[Special:Captcha/help|अधिक माहिती]]):",
+ "captcha-sendemail": "आपोआप होणार्‍या उत्पातापासून या विकिस सुरक्षित ठेवण्यासाठी, खाली दिलेले सोपे गणित सोडवून त्याचे उत्तर दिलेल्या पृष्ठपेटी मध्ये लिहा ([[Special:Captcha/help|अधिक माहिती]]):",
+ "captcha-sendemail-fail": "चुकीचा अथवा रिकामा कॅपचा.",
+ "captcha-disabledinapi": "या क्रियेसाठी कॅप्चा हवी.API मार्फत हे शक्य नाही.",
+ "captchahelp-title": "कॅप्टचा साहाय्य",
+ "captchahelp-cookies-needed": "हे काम करण्यासाठी तुम्ही कूकीज (cookies) एनेबल केलेल्या असणे गरजेचे आहे.",
+ "captchahelp-text": "ज्या संकेतस्थळांवर जसे की हा विकि, सर्वसामान्य लोकांकडून संपादने करण्याची परवानगी असते, तिथे आपोआप होणारी स्वत:च्या संकेतस्थळांचे दुवे देणारी उत्पात संपादने (Spam) कायम होत असतात.\nअशी संपादने जरी काढता आली तरी ती एक डोकेदुखी होऊ शकते.\n\nकाहीवेळा, जेव्हा एखाद्या पानावर नवीन बाह्यदुवा देताना, विकि तुम्हाला एक चित्र दाखवून त्यांतील शब्द भरण्यास सांगू शकतो.\nहे काम संगणकाकरवी करून घेण्यास अवघड असल्याने, फक्त खरी माणसेच संपादने करू शकतील व स्पॅमर्सना आळा बसू शकेल.\n\nपण खेदाची गोष्ट अशी की ह्यामुळे अर्धांध व्यक्ती तसेच ज्या व्यक्ती फक्त मजकूर दाखविणारा न्याहाळक वापरतात, अशांना असुविधा होऊ शकते.\nसध्या आमच्याकडे आवाज ऐकण्याची सुविधा नाही.\nकृपया [[Special:ListAdmins|संस्थळ प्रचालकांशी]] या बाबतीत संपर्क करावा.\n\nपृष्ठ संपादनाकडे परत जाण्यासाठी आपल्या ब्राउझरची ’Back' ही कळ दाबा.",
+ "captcha-addurl-whitelist": " #<!-- leave this line exactly as it is --> <pre>\n# रुपरेषा खालीलप्रमाणे:\n# * \"#\" ने सुरु होणारे व ओळीच्या शेवटपर्यंत जाणारे वाक्य सूचना (Comment) आहे.\n# * प्रत्येक रिकामी नसलेली ओळ ही regex fragment आहे जी फक्त URLमधील होस्टसच्या जोड्या लावेल\n #</pre> <!-- leave this line exactly as it is -->",
+ "right-skipcaptcha": "कॅपचा मध्ये न जाता कॅपचाचा वापर करणार्‍या क्रिया करा",
+ "captcha-apihelp-param-captchaword": "कॅप्चाचे उत्तर द्या",
+ "confirmedit-preview-line": "ओळ क्रमांक",
+ "confirmedit-preview-content": "आशय",
+ "confirmedit-preview-validity": "वैधता",
+ "confirmedit-preview-valid": "वैध",
+ "confirmedit-preview-invalid": "अवैध"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/ms.json b/www/wiki/extensions/ConfirmEdit/i18n/ms.json
new file mode 100644
index 00000000..865e98da
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/ms.json
@@ -0,0 +1,26 @@
+{
+ "@metadata": {
+ "authors": [
+ "Anakmalaysia",
+ "Aurora",
+ "Aviator",
+ "Pizza1016"
+ ]
+ },
+ "captcha-edit": "Untuk menyunting laman ini, sila selesaikan kira-kira di bawah dan masukkan jawapannya dalam kotak yang disediakan ([[Special:Captcha/help|maklumat lanjut]]):",
+ "captcha-desc": "Menyediakan teknik CAPTCHA untuk melindungi daripada spam dan teka kata laluan",
+ "captcha-label": "CAPTCHA",
+ "captcha-addurl": "Suntingan anda mengandungi pautan luar baru.\nUntuk melindungi wiki daripada spam automatik, anda diminta supaya menyelesaikan kira-kira di bawah dan memasukkan jawapannya dalam kotak yang disediakan untuk menyimpan suntingan anda ([[Special:Captcha/help|maklumat lanjut]]):",
+ "captcha-badlogin": "Untuk melindungi wiki daripada kegiatan meneka kata laluan secara automatik, anda diminta supaya menyelesaikan kira-kira di bawah dan masukkan jawapannya dalam kotak yang disediakan ([[Special:Captcha/help|maklumat lanjut]]):",
+ "captcha-createaccount": "Untuk melindungi wiki daripada pembukaan akaun secara automatik, anda diminta supaya menyelesaikan kira-kira di bawah dan masukkan jawapannya dalam kotak yang disediakan ([[Special:Captcha/help|maklumat lanjut]]):",
+ "captcha-createaccount-fail": "Kod CAPTCHA tidak betul atau tidak ada.",
+ "captcha-create": "Untuk mencipta laman tersebut, sila selesaikan kira-kira di bawah dan masukkan jawapannya dalam kotak yang disediakan ([[Special:Captcha/help|maklumat lanjut]]):",
+ "captcha-sendemail": "Untuk melindungi wiki daripada spam automatik, anda diminta supaya menyelesaikan kira-kira di bawah dan masukkan jawapannya dalam kotak yang disediakan ([[Special:Captcha/help|maklumat lanjut]]):",
+ "captcha-sendemail-fail": "Kod CAPTCHA tidak betul atau tidak ada.",
+ "captcha-disabledinapi": "Tindakan ini memerlukan captcha, maka ia tidak boleh dilakukan melalui API.",
+ "captchahelp-title": "Bantuan CAPTCHA",
+ "captchahelp-cookies-needed": "Sila aktifkan ''cookies'' pada pelayar web anda.",
+ "captchahelp-text": "Tapak web yang menerima pos-pos dari orang awam, misalnya wiki ini, sering disalahgunakan oleh penghantar spam yang menggunakan peralatan berautomasi untuk mengepos pautan-pautan mereka ke banyak tapak.\nWalaupun pautan-pautan spam ini boleh dipadamkan, namun ia amat menyusahkan.\n\nAdakalanya, terutamanya apabila menambah pautan web baharu kepada sesebuah laman, wiki ini mungkin akan memaparkan suatu imej yang mengandungi teks yang berwarna atau samar-samar dan meminta anda untuk menaip perkataan-perkataan yang ditunjukkan.\nOleh sebab tugas ini sukar dilakukan secara automatik, ia akan membolehkan kebanyakan manusia sebenar untuk membuat pos-pos mereka sambil menghalang penghantar spam dan serangan robotik yang seumpamanya.\n\nMalangnya ini boleh menyukarkan pengguna yang mengalami masalah penglihatan atau sedang menggunakan pelayar web teks atau tuturan.\nPada masa ini kami tidak mempunyai alternatif audio.\nSila hubungi [[Special:ListAdmins|penyelia-penyelia tapak]] untuk mendapat bantuan jika ia menghalang anda daripada membuat sumbangan yang munasabah tanpa dijangka.\n\nSila tekan butang 'balik' dalam pelayar web anda untuk kembali ke penyunting laman.",
+ "captcha-addurl-whitelist": " #<!-- jangan ubah baris ini --> <pre>\n# Sintaks:\n# * Aksara \"#\" sampai akhir baris diabaikan\n# * Ungkapan nalar dibaca daripada setiap baris dan dipadankan dengan nama hos sahaja\n #</pre> <!-- jangan ubah baris ini -->",
+ "right-skipcaptcha": "Melepasi pemeriksaan CAPTCHA"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/mt.json b/www/wiki/extensions/ConfirmEdit/i18n/mt.json
new file mode 100644
index 00000000..c18448e2
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/mt.json
@@ -0,0 +1,22 @@
+{
+ "@metadata": {
+ "authors": [
+ "Chrisportelli"
+ ]
+ },
+ "captcha-edit": "Sabiex timmodifika din il-paġna, jekk jogħġbok solvi din is-somma sempliċi t'hawn taħt u daħħal ir-risposta fil-kaxxa ([[Special:Captcha/help|aktar informazzjoni]]):",
+ "captcha-desc": "Tipprovidi tekniki tal-CAPTCHA sabiex tipproteġi kontra spam u l-għarfien ta' passwords",
+ "captcha-label": "CAPTCHA",
+ "captcha-addurl": "Il-modifika tiegħek tinkludi ħoloq esterni ġodda.\nSabiex tipproteġi kontra spam awtomatiku, jekk jogħġbok solvi din is-somma sempliċi t'hawn taħt u daħħal ir-risposta fil-kaxxa ([[Special:Captcha/help|aktar informazzjoni]]):",
+ "captcha-badlogin": "Bħala prekawzjoni kontra l-infurzar awtomatiku tal-password, jekk jogħġbok solvi din is-somma sempliċi t'hawn taħt u daħħal ir-risposta fil-kaxxa ([[Special:Captcha/help|aktar informazzjoni]]):",
+ "captcha-createaccount": "Bħala miżura ta' prekawzjoni kontra l-ħolqien awtomatiku tal-kontijiet, jekk jogħġbok solvi din is-somma sempliċi t'hawn taħt u daħħal ir-risposta fil-kaxxa ([[Special:Captcha/help|aktar informazzjoni]]):",
+ "captcha-createaccount-fail": "Kodiċi ta' konferma ħażin jew nieqes.",
+ "captcha-create": "Sabiex toħloq din il-paġna, jekk jogħġbok solvi din is-somma sempliċi t'hawn taħt u daħħal ir-risposta fil-kaxxa ([[Special:Captcha/help|aktar informazzjoni]]):",
+ "captcha-sendemail": "Bħala prekawzjoni kontra l-''ispam'' awtomatiku, jekk jogħġbok solvi din is-somma sempliċi t'hawn taħt u daħħal ir-risposta fil-kaxxa ([[Special:Captcha/help|aktar informazzjoni]]):",
+ "captcha-sendemail-fail": "Kodiċi ta' konferma ħażin jew nieqes.",
+ "captcha-disabledinapi": "Din l-azzjoni għandha bżonn il-captcha, għalhekk ma tistax issir permezz tal-API.",
+ "captchahelp-title": "X'inhi l-captcha?",
+ "captchahelp-cookies-needed": "Irid ikollok il-''cookies'' attivati sabiex tkompli",
+ "captcha-addurl-whitelist": " #<!-- ħalli din il-linja kif inhi --> <pre>\n# Is-sintassi hi din li jmiss:\n# * Kull ħaġa wara l-karattru \"#\" huwa kumment, sat-tmiem tal-linja\n# * Kull linja li mhijiex vojta huma frammeti ta' espressjonijiet regolari (''regex'') li japplikaw biss għall-isem tal-ospitu fil-URLs\n #</pre> <!-- ħalli din il-linja kif inhi -->",
+ "right-skipcaptcha": "Jagħmel l-azzjonijiet li jattivaw il-CAPTCHA mingħajr m'għandu bżonn jgħaddi mill-CAPTCHA"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/mwl.json b/www/wiki/extensions/ConfirmEdit/i18n/mwl.json
new file mode 100644
index 00000000..5ccb1605
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/mwl.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "MokaAkashiyaPT",
+ "Athena in Wonderland"
+ ]
+ },
+ "captcha-label": "CAPTCHA"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/my.json b/www/wiki/extensions/ConfirmEdit/i18n/my.json
new file mode 100644
index 00000000..62b0cba4
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/my.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ninjastrikers"
+ ]
+ },
+ "captcha-label": "CAPTCHA"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/myv.json b/www/wiki/extensions/ConfirmEdit/i18n/myv.json
new file mode 100644
index 00000000..6859e8e7
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/myv.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Rueter"
+ ]
+ },
+ "captcha-label": "CAPTCHA"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/mzn.json b/www/wiki/extensions/ConfirmEdit/i18n/mzn.json
new file mode 100644
index 00000000..df6a95ec
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/mzn.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "محک"
+ ]
+ },
+ "captcha-label": "کپچا"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/na.json b/www/wiki/extensions/ConfirmEdit/i18n/na.json
new file mode 100644
index 00000000..6f5e7ccd
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/na.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Fanjiayi"
+ ]
+ },
+ "captcha-label": "CAPTCHA"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/nah.json b/www/wiki/extensions/ConfirmEdit/i18n/nah.json
new file mode 100644
index 00000000..6de8cda2
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/nah.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Fluence"
+ ]
+ },
+ "captchahelp-title": "Captchatechcopa tēpalēhuiliztli"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/nan.json b/www/wiki/extensions/ConfirmEdit/i18n/nan.json
new file mode 100644
index 00000000..4a3fa27f
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/nan.json
@@ -0,0 +1,10 @@
+{
+ "@metadata": {
+ "authors": [
+ "Luuva"
+ ]
+ },
+ "captcha-label": "CAPTCHA",
+ "captcha-createaccount": "Ūi beh ī-hông lâng iōng ke-si chū-tōng chù-chheh koh tah kóng-kò, chhiáⁿ lí kā chhut-hiān tī ang-á lāi-bīn ê jī phah 1 piàn (thang chèng-bêng lí m̄ sī ki-khì-lâng): <br />\n([[Special:Captcha/help|Che sī siáⁿ-hòe?]])",
+ "captcha-createaccount-fail": "Khak-jīn-bé chhò-gō· iah-sī làu-kau."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/nap.json b/www/wiki/extensions/ConfirmEdit/i18n/nap.json
new file mode 100644
index 00000000..359816f8
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/nap.json
@@ -0,0 +1,36 @@
+{
+ "@metadata": {
+ "authors": [
+ "C.R."
+ ]
+ },
+ "captcha-edit": "Pe' putè cagnà sta paggena, pe' piacere facite sta somma semprice semprice ccà abbascio e mettite 'a risposta int' 'a casciulella 'e testo ([[Special:Captcha/help|cchiù nfurmaziune]]):",
+ "captcha-edit-fail": "Codece 'e cunferma CAPTCHA errato o mancante.",
+ "captcha-desc": "Dàje 'e tecniche CAPTCHA pe' putè pruteggere annanz' 'o spam e 'o futtimento r' 'a password",
+ "captcha-label": "CAPTCHA",
+ "captcha-help": "Soluzione d' 'o CAPTCHA.",
+ "captcha-info-help": "Descriziona d' 'o CAPTCHA",
+ "captcha-id-label": "ID d' 'o CAPTCHA",
+ "captcha-id-help": "Stu valore s'adda mannà arreto senza cagnà.",
+ "captcha-addurl": "'O cagnamiento tuojo azzecca cullegamiente 'e fore.\nPe' putè aiutà a pruteggere annanz' 'o spam automateco, pe' piacere rispunnette 'e dumanne ca cumpareno abbascio 'a casciulella ([[Special:Captcha/help|cchiù nfurmaziune]]):",
+ "captcha-badlogin": "Pe' pruteggere sta wiki 'a coccheruno ca se futtesse 'e password automaticamente, ve cercammo gentilmente 'e ve ffà sta somma facile facile ccà abbascio e nce miettere 'a risposta int' 'a casciulella ([[Special:Captcha/help|cchiù nfurmaziune]]):",
+ "captcha-createaccount": "Pe' pruteggere sta wiki 'a coccheruno ca se criase nu melione 'e cunte, ve cercammo gentilmente 'e ve ffà sta somma facile facile ccà abbascio e nce miettere 'a risposta int' 'a casciulella ([[Special:Captcha/help|cchiù nfurmaziune]]):",
+ "captcha-createaccount-fail": "Codece 'e cunferma CAPTCHA errato o mancante.",
+ "captcha-create": "Pe' putè crià sta paggena, pe' piacere facite sta somma semprice semprice ccà abascio e mettite 'a risposta int' 'a casciulella 'e testo ([[Special:Captcha/help|cchiù nfurmaziune]]):",
+ "captcha-sendemail": "Pe' pruteggere sta wiki 'a coccheruno ca mannasse spam automaticamente, ve cercammo gentilmente 'e ve ffà sta somma facile facile ccà abbascio e nce miettere 'a risposta int' 'a casciulella ([[Special:Captcha/help|cchiù nfurmaziune]]):",
+ "captcha-sendemail-fail": "CAPTCHA abbacante o sbagliato.",
+ "captcha-disabledinapi": "Pe' putè fà st'azione ce buò 'o CAPTCHA, sinò nun se può ffà pe' bbìa 'e ll'API.",
+ "captcha-error": "'O cuntrollo 'e verifica 'e CAPTCHA guastaje a causa 'e n'errore interno: $1",
+ "captchahelp-title": "Ajuto p' 'o CAPTCHA",
+ "captchahelp-cookies-needed": "Pe' ffà chesto tenite bbesogno 'e v'appiccià 'e cookies dint' 'o navigatore.",
+ "captchahelp-text": "'E site web c'accettano mmasciata 'a 'o pubbleco, comm'a stu wiki, songo spisso abbusate 'a 'e spammer c'auseno strumiente automatece e computer pe' putè mannà 'e link lloro a nu cuofeno 'e site. Pe' tramente ca sti mmasciate se ponno levà, songo però nu scasso.\n\nCerti vote, spicialmente quanno s'azzeccano cullegamiente nuove ncopp'a na paggena, 'a wiki ve putesse fà vedé n'immaggene 'e testo culurato o sciummato ca te cercasse e te fà scrivere 'e parole ca verite. Pure si sta fatica è difficultosa pe' ne putè fà ll'automazione, permettesse ll'utente umane a ffà 'e fatiche suoje pe' tramente ca se fermassero tutt' 'e spammer e ati robbot.\n\n'A malasciorta stu fatto putesse dà n'inconveniente a ll'utente cu visione lemmetata o c'ausano 'o browser surtanto cu nu testo o parlanno. Int'a stu mumento nun ce tenimmo n'alternativa audio. Pe' piacere, cuntattate cu ll'[[Special:ListAdmins|amministrature d' o sito]] pe' ce putè aiutà 'e chiste annanz' 'e leggittime aziune voste.\n\nFacite click 'o buttòne \"arreto\" ncopp' 'o navigatore pe' ffà 'e turnà 'o cagnamiento d' 'a paggena.",
+ "captcha-addurl-whitelist": " #<!-- leave this line exactly as it is --> <pre>\n# 'A sintasse è comme segue:\n# * Ogneccosa 'a 'nu carattere \"#\" 'mponta a fine d' 'a linea è 'nu cummanno\n# * Ogne linea chiena è 'nu piezzo 'e regex 'o quale s'addà sulamente cunfruntà ch' 'e host int'a l'URL\n #</pre> <!-- leave this line exactly as it is -->",
+ "right-skipcaptcha": "Facite appiccià tutto comme fosse c'avite miso 'o CAPTCHA senza avé 'e ghì pe' bbìa d' 'o CAPTCHA",
+ "captcha-apihelp-param-captchaword": "Rispunne a 'o CAPTCHA",
+ "captcha-apihelp-param-captchaid": "ID CAPTCHA d' 'o request 'e primma",
+ "confirmedit-preview-line": "Nummero 'e riga",
+ "confirmedit-preview-content": "Cuntenute",
+ "confirmedit-preview-validity": "Validità",
+ "confirmedit-preview-valid": "valido",
+ "confirmedit-preview-invalid": "nun valido"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/nb.json b/www/wiki/extensions/ConfirmEdit/i18n/nb.json
new file mode 100644
index 00000000..bf49f600
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/nb.json
@@ -0,0 +1,43 @@
+{
+ "@metadata": {
+ "authors": [
+ "Audun",
+ "Danmichaelo",
+ "Event",
+ "Laaknor",
+ "Nghtwlkr",
+ "Haakon K",
+ "Jon Harald Søby"
+ ]
+ },
+ "captcha-edit": "Skriv inn summen i boksen nedenfor for å kunne redigere denne siden ([[Special:Captcha/help|mer informasjon]]):",
+ "captcha-edit-fail": "Feil eller manglende CAPTCHA.",
+ "captcha-desc": "Gir tilgang til CAPTCHA-teknikker for å beskytte mot søppel og passordgjetting",
+ "captcha-label": "CAPTCHA",
+ "captcha-help": "Løsning på CAPTCHA-en.",
+ "captcha-info-help": "Beskrivelse av CAPTCHA-en.",
+ "captcha-id-label": "CAPTCHA-ID",
+ "captcha-id-help": "Denne verdien bør sendes tilbake uendret.",
+ "captcha-addurl": "Din redigering inneholder nye eksterne lenker.\nLøs den enkle oppgava i boksen nedenfor for å beskytte mot automatisk spam ([[Special:Captcha/help|mer informasjon]]):",
+ "captcha-badlogin": "Løs den enkle oppgava i boksen nedenfor for å beskytte mot automatisk passordtyveri ([[Special:Captcha/help|mer informasjon]]):",
+ "captcha-createaccount": "Løs den enkle oppgava i boksen nedenfor for å beskytte mot automatisk kontoopprettelse ([[Special:Captcha/help|mer informasjon]]):",
+ "captcha-createaccount-fail": "Feil eller manglende CAPTCHA-svar.",
+ "captcha-create": "Løs den enkle oppgava i boksen nedenfor for å opprette siden ([[Special:Captcha/help|mer informasjon]]):",
+ "captcha-sendemail": "Løs den enkle oppgava i boksen nedenfor for å beskytte mot automatisk spamming ([[Special:Captcha/help|mer informasjon]]):",
+ "captcha-sendemail-fail": "Feil eller manglende CAPTCHA-svar.",
+ "captcha-disabledinapi": "Denne handlinger krever en captcha, så den kan ikke bli gjort gjennom API-et.",
+ "captcha-error": "CAPTCHA-verifiseringen mislyktes på grunn av en intern feil: $1",
+ "captchahelp-title": "Hjelp med Captcha",
+ "captchahelp-cookies-needed": "Du må slå på informasjonskapsler for at dette skal fungere.",
+ "captchahelp-text": "Internettsider som kan redigeres av alle, som denne wikien, blir ofte misbrukt av spammere som bruker roboter for å poste massive antall lenker. Selv om slike spamlenker kan fjernes er de til stor irritasjon.\n\nNoen ganger, særlig hvis du vil legge til nye internettlenker til en side, kan wikien vise deg et bilde av en farge eller ujevn tekst og be deg skrive inn ordene som vises. Siden det er vanskelig å automatisere denne oppgaven, vil funksjonen slippe de fleste virkelige mennesker igjennom, men stoppe spammere.\n\nDessverre finnes det i øyeblikket ikke noe audioalternativ for brukere med begrenset syn som som bruker tekst- eller talebaserte nettlesere. Vennligst kontakt [[Special:ListAdmins|administratorene]] hvis denne funksjonen forhindrer deg i å foreta legitime endringer.\n\nTrykk på 'tilbake'-knappen for å komme tilbake til redigeringssiden.",
+ "captcha-addurl-whitelist": " #<!-- leave this line exactly as it is --> <pre>\n# Syntaksen er som følger:\n# * Alle linjer som begynner med «#» er kommentarer\n# * Alle linjer som ikke er blanke er fragmenter av regulære uttrykk som sjekker verter i URL-er\n #</pre> <!-- leave this line exactly as it is -->",
+ "right-skipcaptcha": "Utføre handlinger som normalt krever «captcha»-bekreftelse uten å bruke «captcha»",
+ "captcha-apihelp-param-captchaword": "Svar på CAPTCHA-en",
+ "captcha-apihelp-param-captchaid": "CAPTCHA-ID fra forrige forespørsel",
+ "confirmedit-preview-line": "Linjenummer",
+ "confirmedit-preview-content": "Innhold",
+ "confirmedit-preview-validity": "Gyldighet",
+ "confirmedit-preview-valid": "gyldig",
+ "confirmedit-preview-invalid": "ugyldig",
+ "confirmedit-preview-description": "Følgende tabell viser listen over linjer på denne siden og hvorvidt det er en gyldig IP-adresse eller IP-blokk. Om linja er en gyldig IP-adresse eller IP-blokk vil det bli hvitelistet fra CAPTCHA, men ugyldige linjer vil ignoreres. Et eksempel på en gyldig IP-blokk vil være: 69.208.0.0/16, som går fra 69.208.0.0 til 69.208.255.255. [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Range_blocks#Calculating_the_CIDR_suffix Mer informasjon] om kalkulering av en IP-blokk."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/nds-nl.json b/www/wiki/extensions/ConfirmEdit/i18n/nds-nl.json
new file mode 100644
index 00000000..121241b3
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/nds-nl.json
@@ -0,0 +1,19 @@
+{
+ "@metadata": {
+ "authors": [
+ "Servien"
+ ]
+ },
+ "captcha-edit": "Um disse zied te bewarken, mu'j eerst t antwoord op disse eenvoudige somme invullen ([[Special:Captcha/help|meer informasie]]):",
+ "captcha-desc": "Biedt CAPTCHA-technieken um bescharming te biejen tegen spam en t raojen van wachtwoorden",
+ "captcha-label": "CAPTCHA",
+ "captcha-addurl": "In joew bewarking staon nieje uutgaonde verwiezingen.\nVul ter de bescharming van disse wiki tegen automatiese moekbiedragen t antwoord op de somme in, in t invoerveld dat hieronder steet, um joew bewarking op te slaon:<br />\n([[Special:Captcha/help|meer informasie]])",
+ "captcha-badlogin": "Vul ter de bescharming van disse wiki tegen t automaties kraken van wachtwoorden t antwoord op de somme in, in t invoerveld ([[Special:Captcha/help|meer informasie]]):",
+ "captcha-createaccount": "Vul ter bescharming van disse wiki tegen t automaties anmaken van gebrukers t antwoord op de somme in, in t invoerveld ([[Special:Captcha/help|meer informasie]]):",
+ "captcha-createaccount-fail": "Verkeerde of ontbrekende bevestigingskode.",
+ "captcha-create": "Je bin n nieje zied an t maken.\nVoer t antwoord van disse eenvoudige rekensomme in bie t invoervienster\n([[Special:Captcha/help|meer informasie]]).",
+ "captchahelp-title": "Lettertoetshulpe",
+ "captchahelp-cookies-needed": "Je mutten scheumbestaanden (cookies) an hebben staon um disse funksie te gebruken.",
+ "captchahelp-text": "Websteeën waor iederene an kan biedragen, zo as disse {{SITENAME}}-wiki, wörden vake misbruukt deurdat der ongewunste verwiezingen op ezet wörden. Op disse wiki kunnen zokken bewarkingen makkelik weerummezet wörden, mer t nimp wel tied in beslag die aanders gebruukt kan wörden.\n\nSoms, veural a'j nieje verwiezingen op n zied zetten, zie'j n aofbeelding mit ekleurden vervormde tekste en wördt joe evreugen um de tekste in te voeren. Umdat dit proses lastig te automatiseren is, kunnen haost allinnig meensen dit proses suksesvol uutvoeren, en wörden hiermee ongewunste wiezigingen en geautomatiseerden anvallen eweerd.\n\nSpietig genog levert disse bevestiging veur gebrukers mit n visuele beparking of n tekst- of spraakebaseerden webkieker problemen op.\nOp t moment is der gien alternatief mit geluud beschikbaor.\nVraag um hulpe van de [[Special:ListAdmins|websteebeheerders]] as dit proses joe in de weg steet n nuttige biedrage te leveren.\n\n(Klik op de 'weerumme'-knoppe in joew webkieker, um weer naor t tekstbewarkingscharm te gaon.)",
+ "captcha-addurl-whitelist": " #<!-- laot disse regel zo as t is --> <pre>\n# De syntaxis is as volgt:\n# * Alle tekste vanaof t karakter \"#\" tot t einde van de regels wörden ezien as opmarking\n# * Alle regels die niet leeg bin, wörden ezien as n reguliere uutdrokking die veur delen van de domein staon.\n #</pre> <!-- laot disse regel zo as t is -->"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/nds.json b/www/wiki/extensions/ConfirmEdit/i18n/nds.json
new file mode 100644
index 00000000..29ad8ca6
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/nds.json
@@ -0,0 +1,19 @@
+{
+ "@metadata": {
+ "authors": [
+ "Slomox"
+ ]
+ },
+ "captcha-edit": "Disse Siet to ännern, musst du disse lütte Rekenopgaav lösen un dat Resultat in dat Feld ingeven ([[Special:Captcha/help|mehr dorto]]):",
+ "captcha-desc": "Eenfach Captcha",
+ "captcha-addurl": "In dien Ännern sünd ne’e Weblenken in.\nAs Schutz gegen automaatsch Spam, löös disse lüttje Rekenopgaav un geev dat Resultat in dat Feld ünnen in ([[Special:Captcha/help|mehr Infos]]).",
+ "captcha-badlogin": "As Schutz gegen Passwoord-Knackers, löös disse lüttje Rekenopgaav un geev dat Resultat in dat Feld ünnen in ([[Special:Captcha/help|mehr Infos]]).",
+ "captcha-createaccount": "Dat hier nich Brukers automaatsch anleggt warrt, musst du disse lütte Rekenopgaav lösen ([[Special:Captcha/help|mehr dorto]]):",
+ "captcha-createaccount-fail": "Kood to’n Bestätigen is verkehrt oder fehlt.",
+ "captcha-create": "De Sied nee optostellen, löös disse lüttje Rekenopgaav un geev dat Resultat in dat Feld ünnen in ([[Special:Captcha/help|mehr Infos]]).",
+ "captchahelp-title": "Help to Captchas",
+ "captchahelp-cookies-needed": "Dien Browser mutt Cookies ünnerstütten un aktiveert hebben, dat dat geiht.",
+ "captchahelp-text": "Websteden, de Bidrääg vun elkereen tolaten doot, so as dit Wiki, hebbt faken mit Spammers to doon, de en Computer-Programm bruukt, dat se jümmer Text oder Warf op mööglichst veel Sieden ünnerbringt.\nOk wenn dat gau wedder rutnahmen warrt, stöört dat doch de Arbeid op dat Wiki.\n\nAf un to, besünners wenn du Lenken op Websteden in Sieden inföögst, wiest di de Software en Bild mit bunte un verdreihte Bookstaven un fraagt di, dat du de Bookstaven in dat Textfeld ingiffst.\nEn Computer-Programm kann disse Bookstaven normalerwies nich lesen, aver de mehrsten Minschen köönt dat. Dormit sünd de Spammers vun de Sied utslaten.\n\nDat kann aver ok angahn, dat nu ok Lüüd, de nich so good sehn köönt oder villicht Text- oder Vörlees-Browsers bruukt, mit disse Biller nich torecht kaamt.\nOpstunns gifft dat noch keen Audio-Alternativ för de Biller. Wenn du mit de Biller nich torechtkummst, denn schriev man an de Administraters vun de sied un beed jem üm Help.\n\nMit den „Trüch“-Knopp vun dien Browser kummst du trüch na dat Ännerfinster.",
+ "captcha-addurl-whitelist": " #<!-- leave this line exactly as it is --> <pre>\n# Op disse Siet staht de Websteden, bi de en Bruker,\n# de nich anmellt is un en ne’en Lenk in de Siet infögen deit,\n# keen Captcha utfüllen mutt.\n#\n# Syntax is disse:\n# * Allens vun en „#“-Teken bet na’t Enn vun de Reeg is en Kommentar\n# * All de annern Regen, de nich leddig sünd, warrt as regulären Utdruck bekeken,\n# de för Delen vun de Domään steiht.\n\n #</pre> <!-- leave this line exactly as it is -->",
+ "right-skipcaptcha": "Överspringen vun Captchas"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/ne.json b/www/wiki/extensions/ConfirmEdit/i18n/ne.json
new file mode 100644
index 00000000..970d207b
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/ne.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": [
+ "बिप्लब आनन्द",
+ "Nirajan pant"
+ ]
+ },
+ "captcha-label": "क्याप्चा",
+ "captchahelp-title": "क्याप्चा सहायता",
+ "confirmedit-preview-line": "हरफ सङ्ख्या",
+ "confirmedit-preview-content": "सामाग्री",
+ "confirmedit-preview-validity": "म्याद",
+ "confirmedit-preview-valid": "मान्य",
+ "confirmedit-preview-invalid": "अमान्य"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/niu.json b/www/wiki/extensions/ConfirmEdit/i18n/niu.json
new file mode 100644
index 00000000..6f5e7ccd
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/niu.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Fanjiayi"
+ ]
+ },
+ "captcha-label": "CAPTCHA"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/nl-informal.json b/www/wiki/extensions/ConfirmEdit/i18n/nl-informal.json
new file mode 100644
index 00000000..eecb444c
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/nl-informal.json
@@ -0,0 +1,10 @@
+{
+ "@metadata": {
+ "authors": [
+ "Siebrand"
+ ]
+ },
+ "captcha-addurl": "Je bewerking bevat nieuwe externe koppelingen (URL's).\nVoer ter bescherming tegen geautomatiseerde spam het antwoord op de onderstaande eenvoudige som in in het invoerveld om je bewerking op te slaan ([[Special:Captcha/help|meer informatie]]):",
+ "captchahelp-cookies-needed": "Je moet in je browser cookies ingeschakeld te hebben om dit te laten werken.",
+ "captchahelp-text": "Websites die vrij te bewerken zijn, zoals deze wiki, worden vaak misbruikt door spammers die er met hun programma's automatisch verwijzigen op zetten naar vele websites.\nHoewel deze externe koppelingen weer verwijderd kunnen worden, leveren ze wel veel hinder en administratief werk op.\n\nSoms, en in het bijzonder bij het toevoegen van externe koppelingen op pagina's, zie je een afbeelding met gekleurde of vervormde tekst en wordt je gevraagd de weergegeven tekst in te voeren.\nOmdat dit proces lastig te automatiseren is, zijn vrijwel alleen mensen in staat dit proces succesvol te doorlopen en worden hiermee spammers en andere geautomatiseerde aanvallen geweerd.\n\nHelaas levert deze bevestiging voor gebruikers met een visuele handicap of een tekst- of spraakgebaseerde browser problemen op.\nOp het moment is er geen alternatief met geluid beschikbaar.\nVraag assistentie van de [[Special:ListAdmins|sitebeheerders]] als dit proces je verhindert een nuttige bijdrage te leveren.\n\nKlik op de knop 'terug' in je browser om terug te gaan naar het tekstbewerkingsscherm."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/nl.json b/www/wiki/extensions/ConfirmEdit/i18n/nl.json
new file mode 100644
index 00000000..6c3c1811
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/nl.json
@@ -0,0 +1,39 @@
+{
+ "@metadata": {
+ "authors": [
+ "SPQRobin",
+ "Siebrand",
+ "Sjoerddebruin",
+ "Mainframe98"
+ ]
+ },
+ "captcha-edit": "U wilt deze pagina bewerken.\nVoer het antwoord op de onderstaande eenvoudige som in het invoervenster in ([[Special:Captcha/help|meer informatie]]):",
+ "captcha-edit-fail": "Onjuiste of ontbrekende CAPTCHA.",
+ "captcha-desc": "Biedt CAPTCHA-technieken om bescherming te bieden tegen spam en het raden van wachtwoorden",
+ "captcha-label": "CAPTCHA",
+ "captcha-help": "Oplossing van de CAPTCHA.",
+ "captcha-info-help": "Beschrijving van de CAPTCHA.",
+ "captcha-id-label": "CAPTCHA-ID",
+ "captcha-id-help": "Deze waarde moet ongewijzigd worden teruggestuurd.",
+ "captcha-addurl": "Uw bewerking bevat nieuwe externe koppelingen (URL's).\nVoer ter bescherming tegen geautomatiseerde spam het antwoord op de onderstaande opdracht in in het invoerveld om uw bewerking op te slaan ([[Special:Captcha/help|meer informatie]]):",
+ "captcha-badlogin": "Los de onderstaande opdracht op en voer het antwoord in het invoervenster in ter bescherming tegen het automatisch kraken van wachtwoorden ([[Special:Captcha/help|meer informatie]]):",
+ "captcha-createaccount": "Voer ter bescherming tegen het geautomatiseerd gebruikers aanmaken, het antwoord op de onderstaande opdracht in, in het invoervenster ([[Special:Captcha/help|meer informatie]]):",
+ "captcha-createaccount-fail": "De CAPTCHA ontbreekt of is onjuist.",
+ "captcha-create": "U wilt een nieuwe pagina aanmaken.\nVoer het antwoord op de onderstaande opdracht in het invoervenster in ([[Special:Captcha/help|meer informatie]]):",
+ "captcha-sendemail": "Voer ter bescherming tegen geautomatiseerde spam het antwoord op de onderstaande opdracht in het invoervenster in ([[Special:Captcha/help|meer informatie]]):",
+ "captcha-sendemail-fail": "De CAPTCHA ontbreekt of is onjuist.",
+ "captcha-disabledinapi": "Voor deze handeling is een captcha nodig die niet afgehandeld kan worden via de API.",
+ "captcha-error": "CAPTCHA-verificatie is mislukt vanwege een interne fout: $1",
+ "captchahelp-title": "Captcha-hulppagina",
+ "captchahelp-cookies-needed": "U dient in uw browser cookies ingeschakeld te hebben om dit te laten werken.",
+ "captchahelp-text": "Websites die vrij te bewerken zijn, zoals deze wiki, worden vaak misbruikt door spammers die er met hun programma's automatisch verwijzigen op zetten naar vele websites.\nHoewel deze externe koppelingen weer verwijderd kunnen worden, leveren ze wel veel hinder en administratief werk op.\n\nSoms, en in het bijzonder bij het toevoegen van externe koppelingen op pagina's, ziet u een afbeelding met gekleurde of vervormde tekst en wordt u gevraagd de weergegeven tekst in te voeren.\nOmdat dit proces lastig te automatiseren is, zijn vrijwel alleen mensen in staat dit proces succesvol te doorlopen en worden hiermee spammers en andere geautomatiseerde aanvallen geweerd.\n\nHelaas levert deze bevestiging voor gebruikers met een visuele handicap of een tekst- of spraakgebaseerde browser problemen op.\nOp het moment is er geen alternatief met geluid beschikbaar.\nVraag assistentie van de [[Special:ListAdmins|sitebeheerders]] als dit proces u verhindert een nuttige bijdrage te leveren.\n\nKlik op de knop 'terug' in uw browser om terug te gaan naar het tekstbewerkingsscherm.",
+ "captcha-addurl-whitelist": " #<!-- laat deze regel zoals hij is --> <pre>\n# De syntaxis is als volgt:\n# * Alle tekst vanaf het teken \"#\" tot het einde van de regels wordt gezien als opmerking\n# * Iedere niet-lege regel is een fragment van een reguliere expressie die alleen van toepassing is op hosts binnen URL's\n #</pre> <!-- laat deze regel zoals hij is -->",
+ "right-skipcaptcha": "Captchahandelingen uitvoeren zonder captcha te hoeven oplossen",
+ "captcha-apihelp-param-captchaword": "Antwoord op de CAPTCHA",
+ "captcha-apihelp-param-captchaid": "CAPTCHA-ID van de vorige aanvraag",
+ "confirmedit-preview-line": "Regelnummer",
+ "confirmedit-preview-content": "Inhoud",
+ "confirmedit-preview-validity": "Geldigheid",
+ "confirmedit-preview-valid": "geldig",
+ "confirmedit-preview-invalid": "ongeldig"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/nn.json b/www/wiki/extensions/ConfirmEdit/i18n/nn.json
new file mode 100644
index 00000000..162d671a
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/nn.json
@@ -0,0 +1,26 @@
+{
+ "@metadata": {
+ "authors": [
+ "Eirik",
+ "Frokor",
+ "Harald Khan",
+ "Nghtwlkr",
+ "Njardarlogar"
+ ]
+ },
+ "captcha-edit": "For å endre denne sida, ver venleg og løys det enkle reknestykket nedanfor og skriv svaret i ruta ([[Special:Captcha/help|meir informasjon]]):",
+ "captcha-desc": "Enkel implementering av captcha-system.",
+ "captcha-label": "CAPTCHA",
+ "captcha-addurl": "Endringa di inkluderer nye lenkjer; som eit vern mot automatisert reklame (spam) er du nøydd til skrive inn orda i dette bildet: <br />([[Special:Captcha/help|Kva er dette?]])",
+ "captcha-badlogin": "For å sikra oss mot automatisk passordtjuveri, ver venleg og skriv inn svaret på det enkle reknestykket i boksen nedanfor ([[Special:Captcha/help|meir informasjon]]):",
+ "captcha-createaccount": "For å verna wikien mot automatisk kontooppretting, bed me deg om at du løyser det enkle reknestykket under og skriv inn svaret i boksen ([[Special:Captcha/help|meir info]]):",
+ "captcha-createaccount-fail": "Feil eller manglande godkjenningskode.",
+ "captcha-create": "For å opprette denne sida, ver venleg og løys det enkle reknestykket nedanfor og skriv svaret i ruta ([[Special:Captcha/help|Kva er dette?]]):",
+ "captcha-sendemail-fail": "Rang eller manglande stadfestingskode.",
+ "captcha-disabledinapi": "Handlinga krev ein captcha og kan difor ikkje utførast gjennom API-en.",
+ "captchahelp-title": "Captcha-hjelp",
+ "captchahelp-cookies-needed": "Du må ha informasjonskapslar aktivert i nettlesaren din for at dette skal verke.",
+ "captchahelp-text": "Internettsider som kan verte endra av alle, som denne wikien, vert ofte misbrukte av reklameinnleggjarar (spammarar) som nyttar bottar til å poste mange lenkjer om gongen.\nSjølv om slike reklamelenkjer kan verte fjerna er dei til stor irritasjon.\n\nNokre gonger, særleg viss du vil leggje til nye internettlenkjer til ei side, kan wikien vise deg eit bilete av ein farga eller ujamn tekst og be deg skrive inn orda som vert viste.\nSidan det er vanskeleg å automatisere denne oppgåva, vil funksjonen sleppe dei fleste verkelege menneska gjennom, men stoppe reklamerobotar.\n\nDiverre finst det i augeblikket ikkje noko lydalternativ for brukarar med nedsett syn som brukar tekst- eller talebaserte nettlesarar.\nVer venleg å kontakte [[Special:ListAdmins|administratorane]] viss denne funksjonen hindrar deg i å gjere skikkelege endringar.\nTrykk på «attende»-knappen for å kome tilbake til endringssida.",
+ "captcha-addurl-whitelist": " #<!-- leave this line exactly as it is --> <pre>\n# Syntaksen er slik:\n# * Alt frå teiknet «#» til enden av lina er ein kommentar\n# * Alle liner som ikkje er tomme er fragment av regulære uttrykk som sjekkar vertar i URL-ar\n #</pre> <!-- leave this line exactly as it is -->",
+ "right-skipcaptcha": "Utføre handlingar som normalt krever «captcha»-stadfesting utan å bruke «captcha»"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/nys.json b/www/wiki/extensions/ConfirmEdit/i18n/nys.json
new file mode 100644
index 00000000..663f8d84
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/nys.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Gnangarra"
+ ]
+ },
+ "captcha-label": "CAPTCHA"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/oc.json b/www/wiki/extensions/ConfirmEdit/i18n/oc.json
new file mode 100644
index 00000000..b06b7bd8
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/oc.json
@@ -0,0 +1,24 @@
+{
+ "@metadata": {
+ "authors": [
+ "Cedric31",
+ "Nicolas Eynaud"
+ ]
+ },
+ "captcha-edit": "Per modificar aquesta pagina, vos cal efectuar lo calcul çaijós e n'inscriure lo resultat dins lo camp ([[Special:Captcha/help|Mai d’entresenhas]]) :",
+ "captcha-desc": "Ofèrta de tecnicas CAPTCHA per protegir contra lo spam e la descobèrta dels senhals per ensages multiples",
+ "captcha-label": "CAPTCHA",
+ "captcha-addurl": "Vòstra modificacion inclutz de ligams extèrnes.\nPer nos ajudar dins la proteccion contra lo corrièr indesirable automatizat, calculatz l'operacion simpla çaijós e inscrivissètz-ne lo resultat dins lo camp ([[Special:Captcha/help|mai d'informacions]]) :",
+ "captcha-badlogin": "Per nos ajudar a empachar lo copatge automatizat dels senhal, calculatz l’operacion simpla çaijós e inscrivètz-ne lo resultat dins lo camp ([[Special:Captcha/help|mai d’informacions]]) :",
+ "captcha-createaccount": "Per nos ajudar a empachar la creacion automatizada de comptes, calculatz l’operacion simpla çaijós e inscrivètz-ne lo resultat dins lo camp ([[Special:Captcha/help|mai d’informacions]]) :",
+ "captcha-createaccount-fail": "CAPTCHA erronèu o mancant.",
+ "captcha-create": "Per modificar la pagina, vos cal de resòldre l'operacion çaijós e n'inscriure lo resultat dins lo camp ([[Special:Captcha/help|Mai d'infòs]]) :",
+ "captcha-sendemail-fail": "CAPTCHA erronèu o mancant.",
+ "captchahelp-title": "Ajuda suls Captcha",
+ "captchahelp-cookies-needed": "Vos cal aver los cookies activats dins vòstre navigador per qu'aquò foncione.",
+ "captchahelp-text": "Los sites webs qu'accèptan de contribucions del public, coma aqueste wiki, sovent son atacats per de spammers qu'utilizan d'aisinas automatizadas per plaçar de ligams nombroses cap a de sites.\nQuitament se son de bon suprimir, demòran una noisença significativa.\n\nDe còps, particularament quora apondètz de ligams extèrnes dins una pagina, lo wiki vos pòt mostrar un imatge amb un tèxte coloriat, desformat o torçut e vos demandar de picar los mots indicats.\nAquesta tasca es complicada d'automatizar, çò que permet de diferenciar un uman real d'un logicial automatic malvolent.\n\nMalurosament, aquesta solucion pòt geinar d'utilizaires malvesents o qu'utilizan un navigador textual o vocal.\nDispausam pas d’alternativa àudio pel moment.\nContactatz [[Special:ListAdmins|los administrators del site]] se aquò vos empacha d'un biais imprevist de postar de contribucions legitimas.\n\nClicatz sul boton « Precedent » de vòstre navigador per tornar a la pagina de modificacion.",
+ "captcha-addurl-whitelist": "#<!-- daissatz aquesta linha exactament tala coma es --> <pre> # La sintaxi es la seguenta: # * Tot caractèr seguissent \"#\" fins a la fin de la linha serà interpretat coma un comentari # * Tota linha non voida es un còdi regex que serà utilizat unicament a l'interior dels ligams hypertext. #</pre> <!-- daissatz aquesta linha exactament tala coma es -->",
+ "right-skipcaptcha": "Acomplís lo desenclavament de las accions de captcha sens dever passar per l'intermediari aqueste darrièr",
+ "confirmedit-preview-valid": "valida",
+ "confirmedit-preview-invalid": "invalida"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/olo.json b/www/wiki/extensions/ConfirmEdit/i18n/olo.json
new file mode 100644
index 00000000..ecc5b162
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/olo.json
@@ -0,0 +1,12 @@
+{
+ "@metadata": {
+ "authors": [
+ "Denö",
+ "Mashoi7",
+ "Ilja.mos"
+ ]
+ },
+ "captcha-label": "CAPTCHA",
+ "captcha-sendemail-fail": "CAPTCHA on hairavolline libo sidä ei ole.",
+ "captchahelp-title": "CAPTCHA-abu"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/or.json b/www/wiki/extensions/ConfirmEdit/i18n/or.json
new file mode 100644
index 00000000..e7d50f6c
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/or.json
@@ -0,0 +1,26 @@
+{
+ "@metadata": {
+ "authors": [
+ "Jnanaranjan Sahu",
+ "Psubhashish",
+ "Shisir 1945",
+ "Matma Rex"
+ ]
+ },
+ "captcha-edit": "ଏହି ପୃଷ୍ଠାଟିକୁ ବଦଳାଇବା ନିମନ୍ତେ, ତଳେ ଥିବା ସହଜ ଅଙ୍କଟିର ସମାଧାନ କରନ୍ତୁ ଓ ଘରଟିରେ ଫଳାଫଳ ଦିଅନ୍ତୁ ([[Special:Captcha/help|ଅଧିକ ଜାଣନ୍ତୁ]]):",
+ "captcha-desc": "CAPTCHA କାରିଗରି ଉପାୟରେ ସ୍ପାମ ଓ ପାସବାର୍ଡ଼ ରକ୍ଷା କରିଥାଏ ।",
+ "captcha-label": "କ୍ୟାପ୍‌ଚା",
+ "captcha-addurl": "ଆପଣଙ୍କ ସମ୍ପାଦନାରେ ନୂଆ ବାହାର ଲିଙ୍କ ରହିଛି ।\nଏହି ଉଇକିରେ ଆପେଆପେ ହେଉଥିବା ସ୍ପାମର ପ୍ରତିରୋଧ କରିବା ନିମନ୍ତେ ଆମେ ଆପଣଙ୍କୁ ଅନୁରୋଧ କରୁଛୁ ଯେ ବଦଳକୁ ସାଇତିବା ପାଇଁ ତଳେ ଥିବା ଗଣିତର ସମାଧାନ କରନ୍ତୁ ଓ ତଳେ ଥିବା ଘରେ ଉତ୍ତର ଦିଅନ୍ତୁ ([[Special:Captcha/help|ଅଧିକ ବିବରଣୀ]]):",
+ "captcha-badlogin": "ଏହି ଉଇକିରେ ଆପେଆପେ ହେଉଥିବା ପାସବାର୍ଡ଼ ପରଖକୁ ପ୍ରତିରୋଧ କରିବାରେ ସାହାଯ୍ୟ କରିବା ନିମନ୍ତେ ଆମେ ଆପଣଙ୍କୁ ଅନୁରୋଧ କରୁଛୁ ଯେ ତଳେ ଥିବା ସରଳ ଗଣିତର ସମାଧାନ କରନ୍ତୁ ଏବଂ ଉତ୍ତରକୁ ବାକ୍ସରେ ଲେଖନ୍ତୁ ([[Special:Captcha/help|ଅଧିକ ସୂଚନା]]):",
+ "captcha-createaccount": "ଏହି ଉଇକିରେ ଆପେଆପେ ଖାତାଗୁଡିକର ତିଆରିକୁ ପ୍ରତିରୋଧ କରିବାରେ ସାହାଯ୍ୟ କରିବା ନିମନ୍ତେ ଆମେ ଆପଣଙ୍କୁ ଅନୁରୋଧ କରୁଛୁ ଯେ ତଳେ ଥିବା ସରଳ ଗଣିତର ସମାଧାନ କରନ୍ତୁ ଏବଂ ଉତ୍ତରକୁ ବାକ୍ସରେ ଲେଖନ୍ତୁ ([[Special:Captcha/help|ଅଧିକ ସୂଚନା]]):",
+ "captcha-createaccount-fail": "ନିଶ୍ଚିତ କରିବା କୋଡ଼ଟି ଭୁଲ ଅଛି ବା ମୂଳରୁ ନାହିଁ ।",
+ "captcha-create": "ଏହି ପୃଷ୍ଠାଟିକୁ ତିଆରିବା ନିମନ୍ତେ, ତଳେ ଥିବା ସହଜ ଅଙ୍କଟିର ସମାଧାନ କରନ୍ତୁ ଓ ଘରଟିରେ ଫଳାଫଳ ଦିଅନ୍ତୁ ([[Special:Captcha/help|ଅଧିକ ଜାଣନ୍ତୁ]]):",
+ "captcha-sendemail": "ଏହି ଉଇକିରେ ଆପେଆପେ ହେଉଥିବା ସ୍ପାମକୁ ପ୍ରତିରୋଧ କରିବାରେ ସାହାଯ୍ୟ କରିବା ନିମନ୍ତେ ଆମେ ଆପଣଙ୍କୁ ଅନୁରୋଧ କରୁଛୁ ଯେ ତଳେ ଥିବା ସରଳ ଗଣିତର ସମାଧାନ କରନ୍ତୁ ଏବଂ ଉତ୍ତରକୁ ବାକ୍ସରେ ଲେଖନ୍ତୁ ([[Special:Captcha/help|ଅଧିକ ସୂଚନା]]):",
+ "captcha-sendemail-fail": "ନିଶ୍ଚିତ କରିବା କୋଡ଼ଟି ଭୁଲ ଅଛି ବା ମୂଳରୁ ନାହିଁ ।",
+ "captcha-disabledinapi": "ଏହି କାମଟି ପାଇଁ ଏକ କ୍ୟାପଚା ଦରକାର, ଏହା API ଦେଇ କେଭେହେଁ ହୋଇପାରିବ ନାହିଁ ।",
+ "captchahelp-title": "CAPTCHA ସହଯୋଗ",
+ "captchahelp-cookies-needed": "ଏହି କାମଟି କରିବା ପାଇଁ ଆପଣଙ୍କ ବ୍ରାଉଜରରେ କୁକି ସଚଳ କରିବାକୁ ପଡ଼ିବ ।",
+ "captchahelp-text": "ଏହି ଉଇକି ପରି ଜନସାଧାରଣଙ୍କ ଠାରୁ ଲେଖା ଗ୍ରହଣ କରୁଥିବା ସାଇଟ ସବୁରେ ବହୁବାର ସ୍ପାମମାନେ ଆପେଆପେ ନିଜ ନିଜର ଉପକରଣ ମାଧ୍ୟମରେ ଅଦରକାରୀ ଲିଙ୍କମାନ ଦେଇଥାନ୍ତି ।\nଯଦିଓ ସ୍ପାମ ଲିଙ୍କ ସବୁ ହଟାଇଦିଆଯାଇ ପାରିବ ସେସବୁ ବହୁ ଅସୁବିଧା ତିଆରି କରିଥାଏ ।\n\nବେଳେବେଳେ, ବିଶେଷ କରି ଏକ ପୃଷ୍ଠାରେ ନୂଆ ୱେବ ଲିଙ୍କ ଦେଲାବେଳେ ଉଇକିଟି ଆପଣଙ୍କୁ ଏକ ରଙ୍ଗିନ ବା ଭଙ୍ଗାରୁଜା ଲେଖା ଦେଖାଇ ଆପଣଙ୍କୁ ତାହାକୁ ଟାଇପ କରିବାକୁ କହିଥାଏ ।\nଯେହେତୁ ଏହି କାମକୁ ମଣିଷ ବିନା ଆପେଆପେ କରିବା ସମ୍ଭବପର ନୁହେଁ, ଏହି ବାସ୍ତବ ମଣିଷମାନଙ୍କୁ ଲେଖିବାରେ ସହଯୋଗ କରିଥାଏ ଓ ସ୍ପାମର ଓ ବାକି ରୋବଟ ଆକ୍ରମଣକୁ ପ୍ରତିହତ କରିପାରେ ।\n\nଅପରାପକ୍ଷେ ଏହା ସୀମିତ ଦୃଷ୍ଟିଥିବା ବା ଲେଖା କିମ୍ବା କଥା କୁହ ବ୍ରାଉଜର ବ୍ୟବହାର କରୁଥିବା ସଭ୍ୟମାନଙ୍କୁ ଅସୁବିଧାରେ ପକାଇଥାଏ ।\nଅଧୁନା ଏଠାରେ ଧ୍ୱନିଚଳିତ ବିକଳ୍ପଟିଏ ଦେଇନାହୁଁ ।\nଆପଣଙ୍କୁ ଉପଯୁକ୍ତ ଲେଖା ଦେବାରେ ସହଯୋଗ କରିବା ନିମନ୍ତେ ଦୟାକରି [[Special:ListAdmins|ସାଇଟ ପରିଛା]]ମାନଙ୍କୁ ଯୋହଗାଯୋଗ କରନ୍ତୁ ।\n\nଆପଣଙ୍କ ବ୍ରାଉଜରରେ ଥିବା 'back' ଚିପି ପୃଷ୍ଠା ସମ୍ପାଦକକୁ ଲେଉଟିଯାନ୍ତୁ ।",
+ "captcha-addurl-whitelist": " #<!-- ଏହି ଧାଡ଼ିଟି ଯେମିତି ଅଛି ସେମିତି ଛାଡ଼ି ଦିଅନ୍ତୁ --> <pre>\n# ତଳେ ସିଣ୍ଟାକ୍ସଟି ଦିଆଗଲା:\n# * ଧାଡ଼ିର ଶେଷରେ \"#\" ଚିହ୍ନ ଦିଆଥିବା ସବୁକିଛି ଏକ ମତାମତ\n# * ପ୍ରତିଟି ଅଣ-ଖାଲି ଧାଡ଼ି ଏକ regex ଖଣ୍ଡ ଯାହା କେବଳ URL ବାହାରେ ଥିବା ହୋଷ୍ଟ ମାନଙ୍କ ସଙ୍ଗେ ମେଲ ଖାଇଥାଏ\n #</pre> <!-- ଏହି ଧାଡ଼ିଟି ଯେମିତି ଅଛି ସେମିତି ଛାଡ଼ି ଦିଅନ୍ତୁ -->",
+ "right-skipcaptcha": "CAPTCHA ଭିତରେ ନଯାଇ CAPTCHA ଦେଇ ସଞ୍ଚାଳିତ କାମ କରିବେ"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/os.json b/www/wiki/extensions/ConfirmEdit/i18n/os.json
new file mode 100644
index 00000000..b08a5ff8
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/os.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Amikeco"
+ ]
+ },
+ "captcha-label": "CAPTCHA"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/pa.json b/www/wiki/extensions/ConfirmEdit/i18n/pa.json
new file mode 100644
index 00000000..be57c639
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/pa.json
@@ -0,0 +1,10 @@
+{
+ "@metadata": {
+ "authors": [
+ "Babanwalia",
+ "Tow"
+ ]
+ },
+ "captcha-label": "ਕੈਪਚਾ",
+ "captchahelp-title": "ਕੈਪਚਾ ਮਦਦ"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/pam.json b/www/wiki/extensions/ConfirmEdit/i18n/pam.json
new file mode 100644
index 00000000..1fd1b1ab
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/pam.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "Leeheonjin"
+ ]
+ },
+ "captcha-label": "CAPTCHA",
+ "captcha-createaccount": "Bang ala na kabud laltong account, pakipakibatan me ing papacuenta ra king lalam at ibili me ing pakibat ketang cahun ([[Special:Captcha/help|more info]]):",
+ "captcha-createaccount-fail": "E ustu o ala yu ing confirmation code.",
+ "captchahelp-text": "Maralas, mayayabusu la reng karinan king Aptas (websites) kareng spammer a gagamit automatic a paralan ba rong ipasquil kareng dakal a karinan deng karelang suglung. Lipat ning malyari lang ilako deti, maragul la muring sakit buntuk.\n\nNeng kayi, lalu na neng mangibiling karagdagang suglung king metung a bulung, mapalyaring magpalto yang larawan ning sulat a maki kule o anting medisporma ing wiki, at pakisabi nang i-type me itang makasulat. Uling e malagwang gawang automatic ing dapat a iti, paintulutan nong magpasquil deng keraklan kareng tau, kabang sasabatan no reng keraklan kareng spammer at lulub a robot.\n\nMakalungkut mu pin at magkasakit la uli na niti deng gagamit a mapula mata o maki paglibut ( browser) a makabasi king sulat (text-based) o king siwala (speech-based). Ala keng alternatibu o kayaliling pakiramdaman king salukuyan. Nung malyari, pasaup ko sana ketang manibala king kekayung karinan (site administrator) nung magkasakit kayung magpasquil ulin na niti.\n\nMangaylangan kang manyalanging cookie king kekang paglibut (browser) para king obrang iti.\n\nTimid me ing 'back' button king kekang browser bang mibalik ketang panaliling bulung (page editor)."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/pdc.json b/www/wiki/extensions/ConfirmEdit/i18n/pdc.json
new file mode 100644
index 00000000..e7c07379
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/pdc.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Xqt"
+ ]
+ },
+ "captchahelp-title": "Captcha-Hilf"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/pfl.json b/www/wiki/extensions/ConfirmEdit/i18n/pfl.json
new file mode 100644
index 00000000..5aa51af7
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/pfl.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Manuae"
+ ]
+ },
+ "captcha-label": "CAPTCHA"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/pih.json b/www/wiki/extensions/ConfirmEdit/i18n/pih.json
new file mode 100644
index 00000000..6f5e7ccd
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/pih.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Fanjiayi"
+ ]
+ },
+ "captcha-label": "CAPTCHA"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/pl.json b/www/wiki/extensions/ConfirmEdit/i18n/pl.json
new file mode 100644
index 00000000..bdf78c9d
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/pl.json
@@ -0,0 +1,45 @@
+{
+ "@metadata": {
+ "authors": [
+ "BeginaFelicysym",
+ "Derbeth",
+ "Leinad",
+ "Matma Rex",
+ "Sp5uhe",
+ "WTM",
+ "Alan ffm",
+ "Chrumps",
+ "Woytecr"
+ ]
+ },
+ "captcha-edit": "Aby edytować tę stronę, najpierw musisz rozwiązać poniższe zadanie i wpisać odpowiedź do pola tekstowego ([[Special:Captcha/help|więcej informacji]]):",
+ "captcha-edit-fail": "Nieprawidłowy kod lub brak kodu potwierdzającego.",
+ "captcha-desc": "Dodaje CAPTCHA – zabezpieczenie przed spamującymi automatami oraz odgadywaniem haseł",
+ "captcha-label": "CAPTCHA",
+ "captcha-help": "Rozwiązanie CAPTCHA.",
+ "captcha-info-help": "Opis CAPTCHA.",
+ "captcha-id-label": "Identyfikator CAPTCHA",
+ "captcha-id-help": "Ta wartość powinna zostać wysyłana z powrotem bez zmiany.",
+ "captcha-addurl": "Twoje zmiany zawierają nowe linki zewnętrzne.\nZe względu na ochronę przed zautomatyzowanym spamem, aby twoja edycja została zapisana, należy rozwiązać poniższe zadanie i wpisać odpowiedź do pola tekstowego ([[Special:Captcha/help|więcej informacji]]):",
+ "captcha-badlogin": "Ze względu na ochronę przed zautomatyzowanym łamaniem haseł, należy rozwiązać poniższe zadanie i wpisać odpowiedź do pola tekstowego ([[Special:Captcha/help|więcej informacji]]):",
+ "captcha-createaccount": "Ze względu na ochronę przed zautomatyzowanym tworzeniem konta, należy rozwiązać poniższe zadanie i odpowiedź wynik do pola tekstowego ([[Special:Captcha/help|więcej informacji]]):",
+ "captcha-createaccount-fail": "Nieprawidłowy kod lub brak kodu potwierdzającego.",
+ "captcha-create": "Aby utworzyć stronę, najpierw musisz rozwiązać poniższe zadanie i wpisać odpowiedź do pola tekstowego ([[Special:Captcha/help|więcej informacji]]):",
+ "captcha-sendemail": "Ze względu na ochronę przed zautomatyzowanym spamem, należy rozwiązać poniższe zadanie i wpisać odpowiedź do pola tekstowego ([[Special:Captcha/help|więcej informacji]]):",
+ "captcha-sendemail-fail": "Nieprawidłowy kod lub brak kodu potwierdzającego.",
+ "captcha-disabledinapi": "Ta czynność wymaga potwierdzenia capcha i z tego względu nie może być przeprowadzona z użyciem API.",
+ "captcha-error": "Weryfikacja CAPTCHA nie powiodła się z powodu wewnętrznego błędu: $1",
+ "captchahelp-title": "Pomoc dla ochrony antyspamowej",
+ "captchahelp-cookies-needed": "Musisz mieć włączone w przeglądarce cookies (ciasteczka), aby ta opcja działała.",
+ "captchahelp-text": "Strony internetowe akceptujące edycje dokonywane przez każdego, tak jak ta wiki, są często atakowane przez spamerów, którzy używają automatycznych narzędzi, aby dodawać linki prowadzące do ich stron.\nChociaż te linki mogą zostać usunięte, jest to uciążliwe.\n\nCzasami, zwłaszcza przy dodawaniu nowych linków do strony albo przy rejestracji, wiki może pokazać obrazek z kolorowym lub zniekształconym tekstem i poprosić Cię o przepisanie zamieszczonego na nim wyrazu.\nPonieważ są to zadania trudne do zautomatyzowania, takie zabezpieczenia umożliwia ludziom dokonywania edycji, jednocześnie skutecznie powstrzymując większość spamerów i inne automatyczne ataki.\n\nNiestety, może być to niewygodne dla użytkowników z wadą wzroku lub używających przeglądarek tekstowych lub głosowych.\nObecnie nie mamy alternatywnego rozwiązania audio.\nSkontaktuj się z [[Special:ListAdmins|administratorami strony]] by uzyskać pomoc, jeśli nie możesz z tego powodu dokonywać uprawnionych edycji.\n\nWciśnij przycisk „wstecz” w przeglądarce by powrócić do edycji strony.",
+ "captcha-addurl-whitelist": " #<!-- nie modyfikuj tej linii --> <pre>\n# Składnia jest następująca:\n# * Linie zaczynające się od znaku „#” są komentarzami\n# * Każda linia, która nie jest pusta, jest wyrażeniem regularnym, które ma pasować do adresu serwera (fragmentu URL)\n #</pre> <!-- nie modyfikuj tej linii -->",
+ "right-skipcaptcha": "Dostęp do czynności zabezpieczonych pytaniem o treść obrazka lub rozwiązanie zadania, z pominięciem zabezpieczenia",
+ "captcha-apihelp-param-captchaword": "Rozwiąż CAPTCHA",
+ "captcha-apihelp-param-captchaid": "CAPTCHA ID z poprzedniego żądania",
+ "confirmedit-preview-line": "Numer linii",
+ "confirmedit-preview-content": "Treść",
+ "confirmedit-preview-validity": "Poprawność",
+ "confirmedit-preview-valid": "poprawny",
+ "confirmedit-preview-invalid": "nieprawidłowy",
+ "confirmedit-preview-description": "Poniższa tabela pokazuje listę linii na tej stronie z wskazaniem czy jest to prawidłowy adres IP lub zakres adresów IP. Jeżeli dana linia będzie poprawnym adresem IP lub zakresem adresów IP, będzie dodana do białej listy CAPTCHA, natomiast nieprawidłowe linie będą ignorowane. Przykładem prawidłowego zakresu adresów IP może być: 69.208.0.0/16 który zaczyna się od 69.208.0.0, a kończy na 69.208.255.255. [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Range_blocks#Calculating_the_CIDR_suffix Więcej informacji] na temat przeliczania zakresów adresów IP."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/pms.json b/www/wiki/extensions/ConfirmEdit/i18n/pms.json
new file mode 100644
index 00000000..2098fa0b
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/pms.json
@@ -0,0 +1,25 @@
+{
+ "@metadata": {
+ "authors": [
+ "Borichèt",
+ "Bèrto 'd Sèra",
+ "Dragonòt"
+ ]
+ },
+ "captcha-edit": "Për fe-ie dle modìfiche ansima a st'artìcol-sì, për piasì ch'a fasa ël total ambelessì sota\ne ch'a buta l'arzulta ant ël quadrèt ([[Special:Captcha/help|për savejne dë pì]]):",
+ "captcha-desc": "A dà dle técniche CAPTCHA për protege contra la rumenta e ij tentativ d'andviné la ciav",
+ "captcha-label": "CAPTCHA",
+ "captcha-addurl": "Soa modìfica a la gionta dj'anliure esterne. Për goerné la wiki da j'areclam aotomatisà, i-j ciamoma për piasì ch'a fasa ël total ambelessì-sota e ch'a buta l'arzultà ant ël quadrèt për salvé soa modìfica ([[Special:Captcha/help|për savejne dë pì]]):",
+ "captcha-badlogin": "Për goerné la wiki da ij programa ch'a fan ciav fàusse n'automàtich, i-j ciamoma për piasì ch'a fasa ël total ambelessì-sota e ch'a buta l'arzultà ant ël quadrèt ([[Special:Captcha/help|për savejne dë pì]]):",
+ "captcha-createaccount": "Për goerné la wiki da ij programa ch'a deurbo dij cont n'automàtich, i-j ciamoma për piasì ch'a fasa ël total ambelessì-sota\ne ch'a buta l'arzultà ant ël quadrèt ([[Special:Captcha/help|për savejne dë pì]]):",
+ "captcha-createaccount-fail": "Ël còde tërbol ò ch'a manca d'autut ò ch'a l'é pa bon.",
+ "captcha-create": "Për creé d'amblé sta pàgina-sì, për piasì ch'a fasa ël total ambelessì sota e ch'a buta l'arzultà<br />\nant ël quadrèt ([[Special:Captcha/help|për savejne dë pì]]):",
+ "captcha-sendemail": "Për protegi la wiki contra la rumenta automàtica, i-j ciamoma për piasì ch'a fasa l'adission sempia sì-sota e ch'a buta l'arspòsta ant la casela ([[Special:Captcha/help|për savèjne ëd pi]]):",
+ "captcha-sendemail-fail": "Ël còdes tërbol ò ch'a manca d'autut ò ch'a l'é pa bon.",
+ "captcha-disabledinapi": "St'assion-sì a ciama na captcha, parèj a peul pa esse fàita con na API.",
+ "captchahelp-title": "Còs é-lo mai ës captcha?",
+ "captchahelp-cookies-needed": "Për podej dovré sossì a l'ha da manca che sò navigator (browser) a pija ij cookies.",
+ "captchahelp-text": "Soèns a-i riva che ij sit dla Ragnà che la gent a peul dovré për ëscrive chèich-còs, coma sta wiki-sì, a resto ambërlifà d'areclam da 'd màchine che a cario soa ròba dadsà e dadlà n'aotomàtich. Për tant che sti areclam un a peula peuj gavela, a resta sempe un gran fastudi.\n\nDle vire, dzortut quand un a caria dj'anliure esterne neuve ansime a na pàgina, la wiki a peul ësmon-je na figurin-a con dël test colora ò pura tut ëstòrt e ciameje d'arbate lòn ch'a-i é scrit andrinta. Da già ch'a l'é grama scrive un programa ch'a lo fasa, a ven che la pì gran part dla gent a-i la fa a scrive, ma la pi part dle màchine a-i la fa pa.\n\nPër maleur sossì a peul fastudié j'utent ch'a s-ciàiro nen tant bin, coj ch'a deuvro dij navigator mach a test ò pura dij navigator vocaj. Për adess i l'oma nen n'alternativa disponìbil ch'a fasa lese ël test a vos. Për piasì, ch'a contata j'[[Special:ListAdmins|aministrator dël sit]] se sossì a dovèissa mai nen lasseje carié dël test ch'a sia legìtim (visadì, nen dj'areclam).\n\nCh'a-i bata ansima al boton «andré» ant sò navigator për torné andré a l'editor dla pàgina.",
+ "captcha-addurl-whitelist": " #<!-- leave this line exactly as it is --> <pre>\n# La sintassi a l'é costa:\n# * tut lòn ch'a-i ven dapress a un caràter \"#\" (fin-a a la fin dla riga) a l'é mach ëd coment\n# * minca riga nen veujda a l'é un frament d'espression regolar ch'as dòvra për identifiché j'adrësse dle màchine servente ant j'anliure\n #</pre> <!-- leave this line exactly as it is -->",
+ "right-skipcaptcha": "A fà j'assion che a ativo la captcha sensa avèj da passé da la captcha"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/pnb.json b/www/wiki/extensions/ConfirmEdit/i18n/pnb.json
new file mode 100644
index 00000000..4583e67b
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/pnb.json
@@ -0,0 +1,23 @@
+{
+ "@metadata": {
+ "authors": [
+ "Khalid Mahmood"
+ ]
+ },
+ "captcha-edit": "اس صفحے نوں تبدیل کرن واسطے، مہربانی کر کے اے سادہ جۓ سوال نوں حل کر کے ڈبے چ جواب لکھ دیو ([[Special:Captcha/help|مزید جانکاری]]):",
+ "captcha-desc": "کیپچا ول سپام تے کنجی اندازے توں بچن لئی دیندا اے۔",
+ "captcha-label": "کیپچا",
+ "captcha-addurl": "تواڈی تبدیلی چ نویں بارلے جوڑ نیں۔\nاس صفحے نوں تبدیل کرن واسطے، مہربانی کر کے اے سادہ جۓ سوال نوں حل کر کے ڈبے چ جواب لکھ دیو ([[Special:Captcha/help|مزید جانکاری]]):",
+ "captcha-badlogin": "اپنے آپ کنجی توڑن دے خلاف مدد واسطے، مہربانی کر کے اے سادہ جۓ سوال نوں حل کر کے ڈبے چ جواب لکھ دیو ([[Special:Captcha/help|مزید جانکاری]]):",
+ "captcha-createaccount": "اپنے آپ غلط نویں کھاتے بنان نوں روکن واسطے، مہربانی کر کے اے سادہ جۓ سوال نوں حل کر کے ڈبے چ جواب لکھ دیو ([[Special:Captcha/help|مزید جانکاری]]):",
+ "captcha-createaccount-fail": "غلط کنفرمیشن کوڈ۔",
+ "captcha-create": "اس صفحے نوں بنان واسطے، مہربانی کر کے اے سادہ جۓ سوال نوں حل کر کے ڈبے چ جواب لکھ دیو ([[Special:Captcha/help|مزید جانکاری]]):",
+ "captcha-sendemail": "اپنے آپ غلط مال آن نوں روکن واسطے، مہربانی کر کے اے سادہ جۓ سوال نوں حل کر کے ڈبے چ جواب لکھ دیو ([[Special:Captcha/help|مزید جانکاری]]):",
+ "captcha-sendemail-fail": "غلط یا چھوٹے کنفرمیشن کوڈ",
+ "captcha-disabledinapi": "ایس کم لئی کیپچا چائیدا اے، ایس لئی ایہ اے پی آئی نال نئیں چل سکدا۔",
+ "captchahelp-title": "کیپچا مدد",
+ "captchahelp-cookies-needed": "توانوں اپنے براؤزر چ ککیاں چلانیاں پین گیاں ایس نوں چلان لئی۔",
+ "captchahelp-text": "ویب سائیٹاں جیہڑیاں لوکاں کولوں ڈاک لیندیاں نیں جیویں ایہ وکی، ایناں تے خراب ڈاک پیجن والے ہلے بولدے ریندے نیں تے کئی سائیٹاں دے جوڑ جوڑدے ریندے نیں۔ ایہ سپام جوڑ ہٹاۓ جاسکدے نیں پر ایہ اک رپھڑ تے ہے نیں۔\n\nکدے کدے، خاص طور تے کسے صفے نال نویں ویب جوڑ جوڑدیاں ہویاں، وکی توانوں اک رنگ والی یا خراب لکھت دسدا اے تے توانوں پچھدا اے جے ٹائپ ہویا بول لکھو۔\nاے کم ایسا اے جیہڑا چلانا اوکھا اے، اے چوکھے سارے لوکاں نوں اپنی ڈاک پیجن دیوے گا تے سپامراں نوں روک دیوے گا،\n\nبدقسمستی نال اے تھوڑی سوچ رکھن والے ورتنوالیاں یا لکھت ورتن والے یا گل بات والے براؤزر نوں چنگا ناں لگے۔\nایس ویلے ساڈے کول ایدے تھاں تے ورتیا جان والا آڈیو نئیں۔ مہربانی کرکے [[Special:ListAdmins|site administrators]] نال ملو مدد لئی اگ ایہ اچانک تواڈی ٹھیک ڈاک نوں روکدا اے۔\nبیک بٹن نوں دباؤ اپنے براؤزر چ صفہ لکھاری تک اپڑن لئی۔",
+ "captcha-addurl-whitelist": " #<!-- leave this line exactly as it is --> <pre>\n# Syntax is as follows:\n# * Everything from a \"#\" character to the end of the line is a comment\n# * Every non-blank line is a regex fragment which will only match hosts inside URLs\n #</pre> <!-- leave this line exactly as it is -->",
+ "right-skipcaptcha": "کیپچا ٹورن والے کم کیپچا چوں گۓ بنا کرو۔"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/ps.json b/www/wiki/extensions/ConfirmEdit/i18n/ps.json
new file mode 100644
index 00000000..aef984a8
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/ps.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ahmed-Najib-Biabani-Ibrahimkhel"
+ ]
+ },
+ "captcha-label": "کپچا",
+ "captcha-create": "ددې لپاره چې نوی ليکنه ترسره کړی، لطفاً د همدغه ساده شمېرو ځواب په ورکړ شوي چوکاټ کې وليکی ([[Special:Captcha/help|نور مالومات]]):",
+ "captchahelp-title": "CAPTCHA لارښود",
+ "captchahelp-cookies-needed": "ددې کړنې د ترسره کېدلو لپاره تاسو ته پکار ده چې د خپل کتنمل (browser) کوکيز (cookies) چارن کړی.",
+ "captchahelp-text": "هغه وېبځايونه چې د ټولو وگړو پر لور د ليکنو د ليکلو لپاره پرانيستي دي، لکه همدا ويکي، ډېر ځل د سپمرگرو لخوا چې اتوماتيک اوزارونه د خپلو د تړنو او وېبپاڼو د خبرتياو په خپرولو کې کاروي، په ناوړه توگه کارېږي. تر هغه وخت پورې چې همدا سپمونه او هماغه تړنې راموندل کېږي او ليرې کېږي، نو تر هغه وخته پورې همدا سپمونه ډېر سرخوږی جوړوي.\n\nپه ځانگړي توگه په يوه مخ کې د يوه وېبځي د تړنې د ورگډولو په وخت کې به ويکي يو ډول گډوډ رنگين متن ښکاره کړي او له کارن نه به د هماغه متن د ټاپلو غوښتنه شوې وي. \n\nڅرنگه چې جوته ده چې اصلي وگړي کولی شي چې په دې کار کې بريالي شي، خو دې ته ناورته سپامگر ماشينونه او روبوټونه دا ډول کار په خپلکاره توگه نه شي ترسره کولی او پدې توگه د سپامگرو او روبوټونو د غورځنگ مخ نيول کېږي.\n\nبدبختانه چې دا کار د کارنانو لپاره ستونزه جوړولای شي او هغه څوک چې د سترگو نظر يې کمزوری دی او يا هم د متن پر بنسټ او يا هم د غږ پر بنسټ جوړ شوي کتنملونه کاروي نه شي کولی په آسانۍ سره خپلې سمونې او خپرونې ترسره کړي.\n\nدم مهال موږ د داسې متنونو غږيز انډول نه لرو.\n\nکه چېرته دا کار تاسې له سمونو او ليکنو خپرولو پاتې راولي نو لطفاً د مرستې لپاره د [[Special:ListAdmins|پازوالانو]] سره اړيکه ټينگه کړۍ.\n\nپه خپل کتنمل کې د 'شاکېدلو' تڼۍ کېښکاږۍ چې بېرته پخواني مخ ته وگرځۍ.",
+ "confirmedit-preview-line": "د کرښې شمېره",
+ "confirmedit-preview-content": "منځپانگه"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/pt-br.json b/www/wiki/extensions/ConfirmEdit/i18n/pt-br.json
new file mode 100644
index 00000000..f233aae6
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/pt-br.json
@@ -0,0 +1,45 @@
+{
+ "@metadata": {
+ "authors": [
+ "Eduardo.mps",
+ "Giro720",
+ "Helder.wiki",
+ "Jesielt",
+ "555",
+ "Dianakc",
+ "He7d3r",
+ "Eduardo Addad de Oliveira",
+ "Felipe L. Ewald"
+ ]
+ },
+ "captcha-edit": "Para editar esta página, por favor, resolva a seguinte tarefa abaixo e insira a resposta na caixa ([[Special:Captcha/help|mais informações]]):",
+ "captcha-edit-fail": "Código CAPTCHA incorreto ou não preenchido.",
+ "captcha-desc": "Fornece técnicas captcha para proteção contra spam e tentativas de obtenção de senhas",
+ "captcha-label": "CAPTCHA",
+ "captcha-help": "Solução do CAPTCHA.",
+ "captcha-info-help": "Descrição do CAPTCHA.",
+ "captcha-id-label": "ID DO CAPTCHA",
+ "captcha-id-help": "Esse valor deve ser enviado de volta sem alteração.",
+ "captcha-addurl": "Sua edição inclui novos links externos.\nComo prevenção contra sistemas automatizados que inserem spam, será necessário resolver a simples soma abaixo e inserir sua resposta no respectivo campo ([[Special:Captcha/help|detalhes]]):",
+ "captcha-badlogin": "Para proteger a wiki contra a quebra automática de senha, nós gentilmente pedimos que resolva a seguinte tarefa abaixo e digite a resposta na caixa ([[Special:Captcha/help|mais informações]]):",
+ "captcha-createaccount": "Para proteger a wiki contra sistemas automatizados de criação de contas, nós genteilmente pedimos que você resolva a seguinte tarefa abaixo e digite a resposta na caixa ([[Special:Captcha/help|mais informações]]):",
+ "captcha-createaccount-fail": "Código CAPTCHA incorreto ou não preenchido.",
+ "captcha-create": "Para criar a página, por favor, resolva a seguinte tarefa abaixo e insira a resposta na caixa ([[Special:Captcha/help|mais informações]]):",
+ "captcha-sendemail": "Para proteger a wiki contra o spam automatizado, nós gentilmente pedimos que resolva a seguinte tarefa abaixo e insira a resposta na caixa ([[Special:Captcha/help|mais informações]]):",
+ "captcha-sendemail-fail": "Código CAPTCHA incorreto ou não preenchido.",
+ "captcha-disabledinapi": "Esta operação necessita de captcha, por isso não pode ser realizada através da API.",
+ "captcha-error": "A verificação CAPTCHA falhou devido a erro interno: $1",
+ "captchahelp-title": "Ajuda com o Captcha",
+ "captchahelp-cookies-needed": "Você precisa ter cookies habilitados em seu navegador para que isso possa funcionar.",
+ "captchahelp-text": "Sites abertos a inserções públicas, como é o caso desta wiki, são vulneráveis a spammers que utilizam ferramentas automatizadas para inserir seus links em diversos locais.\nRemover tais ligações posteriormente pode ser um incômodo significativo.\n\nAlgumas vezes, especialmente ao adicionar novas ligações externas a uma página, o wiki exibirá uma imagem com um texto colorido ou distorcido e pedirá que você introduza as palavras exibidas.\nUma vez que essa é uma tarefa um tanto difícil de ser automatizada, ela possibilita que a maioria dos humanos faça as suas inserções ao mesmo tempo que inibe as que forem feitas por spammers e mecanismos automatizados.\n\nInfelizmente, isso pode ser um inconveniente para usuários com limitações visuais ou que naveguem através de mecanismos baseados em texto ou baseados em voz.\nNo momento, não está disponível uma alternativa em áudio.\nPor favor, contate os [[Special:ListAdmins|administradores do sítio]] em casos que seja necessária a assistência de alguém para que você possa fazer as suas inserções legítimas.\n\nPressione o botão 'voltar' de seu navegador para retornar à página de edição.",
+ "captcha-addurl-whitelist": "#<!-- deixe este linha exatamente como está --> <pre>\n# A sintaxe é a que se segue:\n# * Tudo desde o caractere \"#\" até ao fim da linha é um comentário\n# * Qualquer linha não vazia é um fragmento de regex que irá apenas verificar o servidor dentro das URLs\n #</pre> <!-- deixe este linha exatamente como está -->",
+ "right-skipcaptcha": "Executar ações disparadoras de captcha sem ter que passar pelo captcha",
+ "captcha-apihelp-param-captchaword": "Responder ao CAPTCHA",
+ "captcha-apihelp-param-captchaid": "CAPTCHA ID do pedido anterior",
+ "confirmedit-preview-line": "Número de linha",
+ "confirmedit-preview-content": "Conteúdo",
+ "confirmedit-preview-validity": "Validade",
+ "confirmedit-preview-valid": "válido",
+ "confirmedit-preview-invalid": "inválido",
+ "confirmedit-preview-description": "A tabela a seguir mostra a lista de linhas nesta página e se é um endereço IP válido ou um intervalo de endereço IP. Se a linha for um endereço IP válido ou um intervalo de endereço IP, ele será listado na lista branca de CAPTCHA, mas as linhas inválidas serão ignoradas. Um exemplo de um intervalo de endereço IP válido seria: 69.208.0.0/16 que vai de 69.208.0.0 a 69.208.255.255. [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Range_blocks#Calculating_the_CIDR_suffix Mais informações] sobre o cálculo de um intervalo de endereços IP."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/pt.json b/www/wiki/extensions/ConfirmEdit/i18n/pt.json
new file mode 100644
index 00000000..1fb4f4c7
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/pt.json
@@ -0,0 +1,43 @@
+{
+ "@metadata": {
+ "authors": [
+ "Hamilton Abreu",
+ "Helder.wiki",
+ "Luckas",
+ "Malafaya",
+ "555",
+ "Vitorvicentevalente",
+ "Athena in Wonderland"
+ ]
+ },
+ "captcha-edit": "Para editar esta página resolva a tarefa apresentada abaixo e introduza a resposta na caixa ([[Special:Captcha/help|mais informações]]):",
+ "captcha-edit-fail": "O código CAPTCHA está incorreto ou não foi preenchido.",
+ "captcha-desc": "Fornece técnicas CAPTCHA para proteção contra <i>spam</i> e tentativas de adivinhar a palavra-passe",
+ "captcha-label": "CAPTCHA",
+ "captcha-help": "Solução do CAPTCHA.",
+ "captcha-info-help": "Descrição do CAPTCHA.",
+ "captcha-id-label": "Identificador do CAPTCHA",
+ "captcha-id-help": "Este valor deve ser devolvido inalterado.",
+ "captcha-addurl": "A sua edição introduziu hiperligações externas novas.\nPara proteger a wiki contra sistemas automatizados de inserção de <i>spam</i>, antes de gravar a sua edição pedimos que resolva a tarefa apresentada abaixo e introduza a resposta na caixa ([[Special:Captcha/help|mais informações]]):",
+ "captcha-badlogin": "Para proteger a wiki contra sistemas automatizados de descoberta de palavras-passe, pedimos que resolva a tarefa apresentada abaixo e introduza a resposta na caixa ([[Special:Captcha/help|mais informações]]):",
+ "captcha-createaccount": "Para proteger a wiki contra sistemas automatizados de criação de contas, pedimos que resolva a tarefa apresentada abaixo e introduza a resposta na caixa ([[Special:Captcha/help|mais informações]]):",
+ "captcha-createaccount-fail": "O código CAPTCHA está incorreto ou não foi preenchido.",
+ "captcha-create": "Para criar a página, resolva a tarefa apresentada abaixo e introduza a resposta na caixa ([[Special:Captcha/help|mais informações]]):",
+ "captcha-sendemail": "Para proteger a wiki contra sistemas automatizados de inserção de ''spam'', pedimos que resolva a tarefa apresentada abaixo e introduza a resposta na caixa ([[Special:Captcha/help|mais informações]]):",
+ "captcha-sendemail-fail": "O código CAPTCHA está incorreto ou não foi preenchido.",
+ "captcha-disabledinapi": "Esta operação necessita de CAPTCHA, por isso não pode ser realizada através da API.",
+ "captcha-error": "A verificação CAPTCHA falhou devido ao erro interno: $1",
+ "captchahelp-title": "Ajuda sobre o CAPTCHA",
+ "captchahelp-cookies-needed": "É necessário possibilitar o uso de ''cookies'' no seu browser para que o ''captcha'' funcione.",
+ "captchahelp-text": "Sítios na Internet abertos a edição pública, como é o caso desta wiki, são frequentemente abusados por ''spammers'' que usam ferramentas automatizadas para inserção em massa de hiperligações, em muitos sítios.\nEmbora essas hiperligações possam ser removidas, representam um incómodo significativo.\n\nPor vezes, especialmente quando introduzir hiperligações externas novas numa página, a wiki apresentará a imagem de um texto colorido ou distorcido e pedirá que escreva o texto apresentado.\nPorque a interpretação do texto apresentado nas imagens é uma tarefa difícil de automatizar, este pedido feito pela wiki permite que a maioria das pessoas façam as suas edições, ao mesmo tempo que inibe edições feitas por ''spammers'' e outros mecanismos automatizados.\n\nInfelizmente, esta funcionalidade pode revelar-se um inconveniente para utilizadores com limitações visuais ou que utilizam browsers baseados em texto ou voz.\nNeste momento, não temos disponível uma alternativa em áudio.\nCaso esta funcionalidade esteja a impedi-lo de fazer edições legítimas, contacte os [[Special:ListAdmins|administradores]] para assistência, por favor.\n\nClique o botão \"voltar\" do seu browser para voltar à página de edição.",
+ "captcha-addurl-whitelist": " #<!-- deixe esta linha exactamente como está --> <pre>\n# A sintaxe é a seguinte:\n# * Tudo desde um símbolo de cardinal (#) até ao fim da linha é um comentário\n# * Qualquer linha que não esteja em branco é um fragmento de expressão regular (regex) que será comparado com o servidor dos URL\n #</pre> <!-- deixe esta linha exactamente como está -->",
+ "right-skipcaptcha": "Executar operações desencadeadoras do CAPTCHA sem ter que passar pelo CAPTCHA",
+ "captcha-apihelp-param-captchaword": "Resposta ao CAPTCHA",
+ "captcha-apihelp-param-captchaid": "Identificador CAPTCHA do pedido anterior",
+ "confirmedit-preview-line": "Número de linha",
+ "confirmedit-preview-content": "Conteúdo",
+ "confirmedit-preview-validity": "Validade",
+ "confirmedit-preview-valid": "válido",
+ "confirmedit-preview-invalid": "inválido",
+ "confirmedit-preview-description": "A seguinte tabela mostra cada linha nesta página e se ela é um endereço IP válido, ou uma gama de endereços IP válida. Se a linha for um endereço IP válido, ou uma gama de endereços IP válida, o endereço ou gama serão dispensados (<i>white listed</i>) da verificação CAPTCHA, mas linhas inválidas serão ignoradas. Um exemplo de uma gama de endereços IP válidos é 69.208.0.0/16, que vai de 69.208.0.0 a 69.208.255.255. [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Range_blocks#Calculating_the_CIDR_suffix Mais informação] sobre o cálculo de gamas de endereços IP."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/qqq.json b/www/wiki/extensions/ConfirmEdit/i18n/qqq.json
new file mode 100644
index 00000000..0a40bb12
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/qqq.json
@@ -0,0 +1,49 @@
+{
+ "@metadata": {
+ "authors": [
+ "Aotake",
+ "Hamilton Abreu",
+ "MF-Warburg",
+ "Meithal",
+ "Meno25",
+ "Purodha",
+ "Shirayuki",
+ "Siebrand",
+ "The Evil IP address",
+ "Toliño",
+ "Umherirrender",
+ "Liuxinyu970226"
+ ]
+ },
+ "captcha-edit": "This message will be shown when editing if the wiki requires solving a captcha for editing.\n{{Related|ConfirmEdit-edit}}",
+ "captcha-edit-fail": "Used as failure message.\n\nSee also:\n* {{msg-mw|Captcha-createaccount-fail}}\n* {{msg-mw|Captcha-sendemail-fail}}",
+ "captcha-desc": "{{desc|name=Confirm Edit|url=https://www.mediawiki.org/wiki/Extension:ConfirmEdit}}",
+ "captcha-label": "Label field for input field shown in forms\n{{Identical|Captcha}}",
+ "captcha-help": "API help text for the input field.",
+ "captcha-info-help": "API help text for the description.",
+ "captcha-id-label": "Label for the CAPTCHA id (only shown in the API).",
+ "captcha-id-help": "API help text for the CAPTCHA id.",
+ "captcha-ip-whitelist": "{{Notranslate}} This message is used for storing a list of IP addresses and IP address ranges whitelisted from CAPTCHA on the wiki. New entries should be separated by newlines and the line should contain only a valid IP address or IP address range. Leading and trailing whitespace is allowed but if there is any other character, that line will be ignored.",
+ "captcha-addurl": "The explanation of CAPTCHA shown to users trying to add new external links.\n{{Related|ConfirmEdit-addurl}}",
+ "captcha-badlogin": "The explanation of CAPTCHA shown to users failed three times to type in correct password.\n{{Related|ConfirmEdit-badlogin}}",
+ "captcha-createaccount": "The explanation of CAPTCHA shown to users trying to create a new account.\n{{Related|ConfirmEdit-createaccount}}",
+ "captcha-createaccount-fail": "Used as failure message.\n{{Related|ConfirmEdit-createaccount-fail}}",
+ "captcha-create": "This message will be shown when creating a page if the wiki requires solving a captcha for that.\n{{Related|ConfirmEdit-create}}",
+ "captcha-sendemail": "Used as footer text.\n{{Related|ConfirmEdit-sendemail}}",
+ "captcha-sendemail-fail": "Used as failure message.\n\nSee also:\n* {{msg-mw|Captcha-createaccount-fail}}",
+ "captcha-disabledinapi": "Used as error message when in the API mode.",
+ "captcha-error": "Error message shown when a CAPTCHA check failed for reasons the user cannot do anything about (e.g. the server could not contact the captcha provider). $1 is the error message.",
+ "captchahelp-title": "The page title of [[Special:Captcha/help]]",
+ "captchahelp-cookies-needed": "The page title for this message is {{msg-mw|Captchahelp-title}}.\n\nThis message follows the following help message:\n* {{msg-mw|Captchahelp-text}}.",
+ "captchahelp-text": "This is the help text shown on [[Special:Captcha/help]].",
+ "captcha-addurl-whitelist": "See also: [[MediaWiki:Spam-blacklist]] and [[MediaWiki:Spam-whitelist]].\n\nLeave all the wiki markup, including the spaces, as is.\nYou can translate the text, including 'Leave this line exactly as it is'.\nThe first line of this messages has one (1) leading space.\n\n\"regex\" stands for \"regular expression\".",
+ "right-skipcaptcha": "{{doc-right|skipcaptcha}}",
+ "captcha-apihelp-param-captchaword": "{{doc-apihelp-param|description=the \"captchaword\" parameter added by [[mw:Extension:ConfirmEdit]]|noseealso=1}}\nSee also {{msg-mw|captcha-apihelp-param-captchaid}}",
+ "captcha-apihelp-param-captchaid": "{{doc-apihelp-param|description=the \"captchaid\" parameter added by [[mw:Extension:ConfirmEdit]]|noseealso=1}}\nSee also {{msg-mw|captcha-apihelp-param-captchaword}}",
+ "confirmedit-preview-line": "Used as a table heading for the edit preview of [[MediaWiki:Captcha-ip-whitelist]] to indicate the line number (1, 2, 3, ...).",
+ "confirmedit-preview-content": "Used as a table heading for the edit preview of [[MediaWiki:Captcha-ip-whitelist]] to indicate the content of a line.\n{{Identical|Content}}",
+ "confirmedit-preview-validity": "Used as a table heading for the edit preview of [[MediaWiki:Captcha-ip-whitelist]] to indicate the validity of a content of a line (if it's an IP address or not).\n{{Identical|Validity}}",
+ "confirmedit-preview-valid": "Used to indicate a valid IP address in the edit preview of [[MediaWiki:Captcha-ip-whitelist]].\n{{Identical|Valid}}",
+ "confirmedit-preview-invalid": "Used to indicate an invalid IP address in the edit preview of [[MediaWiki:Captcha-ip-whitelist]].\n{{Identical|Invalid}}",
+ "confirmedit-preview-description": "Explains the edit preview of [[MediaWiki:Captcha-ip-whitelist]]."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/qu.json b/www/wiki/extensions/ConfirmEdit/i18n/qu.json
new file mode 100644
index 00000000..0c5dd201
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/qu.json
@@ -0,0 +1,10 @@
+{
+ "@metadata": {
+ "authors": [
+ "AlimanRuna"
+ ]
+ },
+ "captcha-label": "CAPTCHA",
+ "captcha-badlogin": "Wikita kikinmanta millay ruraq yaykuna rima chamqaymanta amachanapaqqa, kay qatiq yapayta ruraspa yapasqata kahachapi yaykuchiy ([[Special:Captcha/help|astawan yachay]]):",
+ "captchahelp-title": "Captcha nisqamanta yanapay"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/rif.json b/www/wiki/extensions/ConfirmEdit/i18n/rif.json
new file mode 100644
index 00000000..642eb2a0
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/rif.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Amara-Amaziɣ"
+ ]
+ },
+ "captcha-label": "ⴽⴰⴱⵜⵛⴰ"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/rm.json b/www/wiki/extensions/ConfirmEdit/i18n/rm.json
new file mode 100644
index 00000000..2cb765ce
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/rm.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Terfili"
+ ]
+ },
+ "captcha-label": "CAPTCHA"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/ro.json b/www/wiki/extensions/ConfirmEdit/i18n/ro.json
new file mode 100644
index 00000000..fe842595
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/ro.json
@@ -0,0 +1,28 @@
+{
+ "@metadata": {
+ "authors": [
+ "BrokenArrow",
+ "Firilacroco",
+ "KlaudiuMihaila",
+ "Mihai",
+ "Minisarm",
+ "Strainu"
+ ]
+ },
+ "captcha-edit": "Pentru a edita această pagină, vă rugăm să rezolvați sarcina de mai jos și să introduceți rezultatul în căsuță ([[Special:Captcha/help|detalii]]):",
+ "captcha-desc": "Oferă implementare de tip CAPTCHA împotriva spamului și încercărilor de aflare a parolelor",
+ "captcha-label": "CAPTCHA",
+ "captcha-addurl": "Modificarea dumneavoastră include legături externe noi.\nPentru a proteja wikiul împotriva spamului automat, vă rugăm să rezolvați sarcina de mai jos și introduceți rezultatul în căsuță pentru a salva modificarea ([[Special:Captcha/help|detalii]]):",
+ "captcha-badlogin": "Ca măsură de protecție împotriva spargerii de parole, vă rugăm să rezolvați sarcina de mai jos și să introduceți rezultatul în căsuță ([[Special:Captcha/help|detalii]]):",
+ "captcha-createaccount": "Pentru a evita crearea automată de conturi, vă rugăm să rezolvați sarcina de mai jos și să introduceți rezultatul în căsuță ([[Special:Captcha/help|detalii]]):",
+ "captcha-createaccount-fail": "CAPTCHA incorect sau lipsă.",
+ "captcha-create": "Pentru a crea pagina, vă rugăm să rezolvați sarcina de mai jos și să introduceți rezultatul în căsuță ([[Special:Captcha/help|detalii]]):",
+ "captcha-sendemail": "Pentru a proteja wikiul împotriva roboților de spam, vă rugăm să rezolvați sarcina de mai jos și să introduceți răspunsul în căsuță ([[Special:Captcha/help|mai multe detalii]]):",
+ "captcha-sendemail-fail": "Codul de confirmare lipsește sau este incorect.",
+ "captcha-disabledinapi": "Această acțiune necesită rezolvarea unui captcha, deci nu poate fi efectuată prin API.",
+ "captchahelp-title": "Despre „Captcha”",
+ "captchahelp-cookies-needed": "Trebuie ca browserul dumneavoastră să accepte cookie-uri pentru ca aceasta să funcționeze.",
+ "captchahelp-text": "Siturile web care acceptă contribuții din partea publicului, precum acest wiki, sunt de obicei victime ale persoanelor care folosesc unelte automate pentru a introduce legături către multe alte situri. \nDeși aceste legături de spam pot fi îndepărtate, acest lucru reprezintă o bătaie de cap semnificativă.\n\nUneori, mai ales la adăugarea de noi legături web într-o pagină, situl wiki vă poate arăta o imagine cu un text colorat sau distorsionat și veți fi rugat să introduceți cuvintele indicate.\nÎntrucât rezolvarea acestei cerințe este dificil de automatizat, ea permite majorității persoanelor reale să-și trimită contribuțiile și va opri majoritatea atacatorilor.\n\nDin nefericire, această metodă îi poate deranja pe utilizatorii cu probleme vizuale sau care folosesc navigatoare bazate pe text sau sunet. În acest moment nu avem o alternativă audio disponibilă.\nÎn cazul în care această practică vă împiedică în mod neașteptat să faceți contribuții legitime, vă rugăm să contactați [[Special:ListAdmins|administratorii sitului]].\n\nApăsați butonul „Înapoi” al navigatorului pentru a vă reîntoarce la pagina de editare.",
+ "captcha-addurl-whitelist": " #<!-- lăsați această linie așa cum este --> <pre>\n# Sintaxa este așa cum urmează:\n# * Toate liniile care încep cu „#” sunt considerate comentarii\n# * Toate liniile care nu sunt goale sunt fragmente RegEx care vor găsi doar gazda din interiorul URL-urilor\n #</pre> <!-- lăsați această linie așa cum este -->",
+ "right-skipcaptcha": "Efectuează acțiuni care necesită completarea unui cod CAPTCHA fără a fi nevoie să facă acest lucru"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/roa-tara.json b/www/wiki/extensions/ConfirmEdit/i18n/roa-tara.json
new file mode 100644
index 00000000..dd2fec61
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/roa-tara.json
@@ -0,0 +1,38 @@
+{
+ "@metadata": {
+ "authors": [
+ "Joetaras",
+ "Reder"
+ ]
+ },
+ "captcha-edit": "Pe cangià sta pàgene, pe piacere fa sta combite facile facile aqquà sotte e mitte 'a resposte jndr'à sckatele ([[Special:Captcha/help|maggiore 'mbormaziune]]):",
+ "captcha-edit-fail": "Codece de conferme CAPTCHA non corrette o mangande.",
+ "captcha-desc": "Dèje le tecniche d'u CAPTCHA pe proteggere condre a 'u spam e 'u futtimende d'a passuord",
+ "captcha-label": "CAPTCHA",
+ "captcha-help": "Soluzione d'u CAPTCHA.",
+ "captcha-info-help": "Descrizione d'u CAPTCHA.",
+ "captcha-id-label": "ID CAPTCHA",
+ "captcha-id-help": "Stu valore adda essere date senze ca cange.",
+ "captcha-addurl": "'U cangiamende tune 'nglude de le collegaminde de fore.\nPe aiutà a proteggere condre a 'u spam automateche, pe piacere respunne a 'a domande ca combare sotte jndr'à sckatole ([[Special:Captcha/help|cchiù 'mbormaziune]]):",
+ "captcha-badlogin": "Pe proteggere sta uicchi da le futteminde de passuord automateche, nuje te cercame gendilmende de fa stu combite facile facile aqquà sotte e mitte 'a resposte jndr'à sckatele ([[Special:Captcha/help|maggiore 'mbormaziune]]):",
+ "captcha-createaccount": "Pe proteggere sta uicchi da 'a ccrejazione automateche de le cunde, nuje te cercame gendilmende de fa stu combite facile facile aqquà sotte e mitte 'a resposte jndr'à sckatele ([[Special:Captcha/help|maggiore 'mbormaziune]]):",
+ "captcha-createaccount-fail": "Codece de conferme CAPTCHA non corrette o mangande.",
+ "captcha-create": "Pe ccrejà sta pàgene, pe piacere fa stu combite facile facile aqquà sotte e mitte 'a resposte jndr'à sckatele ([[Special:Captcha/help|maggiore 'mbormaziune]]):",
+ "captcha-sendemail": "Pe proteggere sta uicchi da 'a munnezze automateche, nuje te cercame gendilmende de fa stu combite facile facile aqquà sotte e mitte 'a resposte jndr'à sckatele ([[Special:Captcha/help|maggiore 'mbormaziune]]):",
+ "captcha-sendemail-fail": "Codece de conferme CAPTCHA non corrette o mangande.",
+ "captcha-disabledinapi": "St'azione ave abbesogne de 'nu captcha, accussì non g'è possibbele eseguirle cu le API.",
+ "captcha-error": "Verifiche CAPTCHA fallite pe colpe de 'n'errore 'nderne: $1",
+ "captchahelp-title": "Aijute pu captcha",
+ "captchahelp-cookies-needed": "Tu è abbesogne de avè le cookie abbilitate jndr'à 'u browser tune pe sta fatìe.",
+ "captchahelp-text": "Le site web ca accettane messàgge da 'u pubbleche, le piace sta uicchi, assaije vote purcé abbusane de spam a ce ause struminde automatece pe mannà le lore collegaminde a 'nu sacche de site.\nMendre ca ste collegaminde de spam se ponne luà, lore comungue sò 'nu sckassamende de palle.\n\nCerte vote, specialmende quanne aggiunge collegaminde nuève sus a a'na pàgene, 'a uicchi te pò fà vedè 'n'immaggine de teste colorate o sciummate e te cerche de scrivere le parole ca vedite.\nQuiste jè 'nu combite difficile da automatizzà, ce sò le umane a scettà merde invece de le attacche robbot riuscime a bloccà cchiù facilmende.\n\nSfortunatamende stu fatte pò da inconveniende a le utinde cu visiune limitate o ca ausane le browser de sole teste o ca parlane. Jndr'à stu mumende non ge tenime 'n'alternative audie.\nPe piacere condatte le [[Special:ListAdmins|amministrature d'u site]] pe assistenze ce quiste jè condre a le leggittime aziune tune.\n\nCazze 'u buttonne \"rrete\" (back) sus a 'u browser tune pe turnà a 'u cangiamende d'a pàgene.",
+ "captcha-addurl-whitelist": " #<!-- leave this line exactly as it is --> <pre>\n# 'A sindasse jè a cumme segue:\n# * Ogneccose da 'nu carattere \"#\" 'mbonde a fine d'a linèe jè 'nu commende\n# * Ogne linèe chiene jè 'nu frammende de regex 'u quale addà sulamende combrondarse cu le host jndr'à l'URL\n #</pre> <!-- leave this line exactly as it is -->",
+ "right-skipcaptcha": "Comblete le aziune CAPTCHA senze ca a scè ausanne 'u CAPTCHA",
+ "captcha-apihelp-param-captchaword": "Resposta a 'u CAPTCHA",
+ "captcha-apihelp-param-captchaid": "ID CAPTCHA da 'a richieste d'apprime.",
+ "confirmedit-preview-line": "Numere d'a linée",
+ "confirmedit-preview-content": "Condenute",
+ "confirmedit-preview-validity": "Validità",
+ "confirmedit-preview-valid": "valide",
+ "confirmedit-preview-invalid": "invalide",
+ "confirmedit-preview-description": "'A tabbelle ca avéne face 'ndrucà l'elenghe de le linée sus a sta pàgene e ce jè 'n'indirizze IP o 'n'indervalle de indirizze IP. Ce 'a linée jè 'n'indirizze IP valide o 'n'indervalle de indirizze IP, avène sckaffate jndr'à ''whitelist'' da 'u CAPTCHA, ma le linée ca no sò valide avènene cacate. 'N'esembie de indervalle de indirizze IP valide pò essere: 69.208.0.0/16 ca vèje da 69.208.0.0 'nzigne a 69.208.255.255. [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Range_blocks#Calculating_the_CIDR_suffix Cchiù 'mbormaziune] sus a 'u calcole de 'n'indervalle de indirizze IP."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/ru.json b/www/wiki/extensions/ConfirmEdit/i18n/ru.json
new file mode 100644
index 00000000..d733ac8a
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/ru.json
@@ -0,0 +1,47 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ahonc",
+ "Aleksandrit",
+ "Amire80",
+ "Ignatus",
+ "Kalan",
+ "Ole Yves",
+ "Александр Сигачёв",
+ "Kaganer",
+ "Okras",
+ "Metastasis",
+ "Mailman"
+ ]
+ },
+ "captcha-edit": "Чтобы отредактировать эту страницу, пожалуйста, решите следующее задание и введите ответ в текстовое поле ([[Special:Captcha/help|подробнее]]):",
+ "captcha-edit-fail": "Код подтверждения неправильный или отсутствует.",
+ "captcha-desc": "Предоставляет методы CAPTCHA для защиты от спама и подбора пароля",
+ "captcha-label": "CAPTCHA",
+ "captcha-help": "Решение CAPTCHA.",
+ "captcha-info-help": "Описание CAPTCHA.",
+ "captcha-id-label": "Идентификатор CAPTCHA.",
+ "captcha-id-help": "Это значение должно быть отправлено обратно без изменений.",
+ "captcha-addurl": "Вы добавляете новые ссылки на внешние сайты.\nВ целях защиты от автоматического спама необходимо решить следующее задание и записать ответ в поле рядом, чтобы правка была сохранена ([[Special:Captcha/help|подробнее]]):",
+ "captcha-badlogin": "В целях защиты вики-проекта от автоматического взлома пароля, пожалуйста, решите простой пример и введите ответ в текстовое поле ниже ([[Special:Captcha/help|подробнее]]):",
+ "captcha-createaccount": "Для защиты от автоматической спам-регистрации необходимо решить следующее задание и записать ответ в поле рядом ([[Special:Captcha/help|подробнее]]):",
+ "captcha-createaccount-fail": "Контрольная комбинация неверна или не введена.",
+ "captcha-create": "Чтобы создать страницу, решите следующее задание и введите ответ в текстовое поле ([[Special:Captcha/help|подробнее]]):",
+ "captcha-sendemail": "В целях защиты от автоматического спама, пожалуйста, решите следующее ниже задание и введите ответ ([[Special:Captcha/help| подробнее]]):",
+ "captcha-sendemail-fail": "Код подтверждения неправильный или отсутствует.",
+ "captcha-disabledinapi": "Это действие требует проверки CAPTCHA, и поэтому не может быть выполнено через API.",
+ "captcha-error": "Не удалось проверить CAPTCHA из-за внутренней ошибки: $1",
+ "captchahelp-title": "О контрольной последовательности (CAPTCHA)",
+ "captchahelp-cookies-needed": "Вам нужно включить куки в браузере, чтобы эта функция заработала.",
+ "captchahelp-text": "Веб-сайты, позволяющие добавлять и изменять своё содержание, в том числе эта вики, часто становятся целью спамеров, использующих программы для автоматического добавления ссылок на сайты.\nХотя такие ссылки могут быть впоследствии удалены, они представляют собой существенную помеху.\n\nПри некоторых действиях (например, при добавлении на страницу новой ссылки на сайт) вы можете увидеть специальную картинку с цветным или искажённым текстом, и вам будет предложено ввести этот искажённый текст.\nТак как распознавание искажённого текста трудно поддаётся автоматизации, большинство спамерских и вандальных программ не могут справиться с этой задачей, в то время как люди справляются легко.\n\nК сожалению, подобная защита может причинить неудобства людям с ограничениями по зрению или тем, кто использует текстовые или читающие браузеры.\nВ настоящее время у нас нет звуковой альтернативы данной проверке.\nПожалуйста, обратитесь за помощью к [[Special:ListAdmins|администраторам]], если подобная проверка мешает вам добросовестно работать с сайтом.\n\nНажмите кнопку «Назад» в своём браузере, чтобы вернуться к редактированию.",
+ "captcha-addurl-whitelist": " #<!-- leave this line exactly as it is --> <pre>\n# Описание синтаксиса:\n# * Всё, начиная с символа \"#\" и до конца строки считается комментарием\n# * Каждая непустая строка считается фрагментом регулярного выражения соответствующего имени узла в URL\n #</pre> <!-- leave this line exactly as it is -->",
+ "right-skipcaptcha": "выполнение требующих CAPTCHA-проверки действий без прохождения CAPTCHA",
+ "captcha-apihelp-param-captchaword": "Ответ на капчу",
+ "captcha-apihelp-param-captchaid": "CAPTCHA ID из предыдущего запроса",
+ "confirmedit-preview-line": "Номер строки",
+ "confirmedit-preview-content": "Содержание",
+ "confirmedit-preview-validity": "Корректность",
+ "confirmedit-preview-valid": "корректный",
+ "confirmedit-preview-invalid": "некорректный",
+ "confirmedit-preview-description": "Следующая таблица показывает список строк на этой странице и то, являются ли IP-адрес или диапазон IP-адресов корректными. Если строка содержит допустимый IP-адрес или диапазон IP-адресов, он попадёт в белый список для капчи. Некорректные строки будут проигнорированы. Пример допустимого диапазона IP-адресов: 69.208.0.0/16, который включает в себя адреса с 69.208.0.0 по 69.208.255.255. [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Range_blocks#Calculating_the_CIDR_suffix См. более подробную информацию] о вычислении диапазона IP-адресов."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/rue.json b/www/wiki/extensions/ConfirmEdit/i18n/rue.json
new file mode 100644
index 00000000..8aadc191
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/rue.json
@@ -0,0 +1,23 @@
+{
+ "@metadata": {
+ "authors": [
+ "Gazeb"
+ ]
+ },
+ "captcha-edit": "Жебысьте могли едітовати тоту сторінку, мусите вырїшыти наступну просту суму і написати резултат. ([[Special:Captcha/help|Што тото значіть?]])",
+ "captcha-desc": "Забезпечує техніку CAPTCHA про охрану перед спамом і гаданём гесел",
+ "captcha-label": "CAPTCHA",
+ "captcha-addurl": "Ваше едітованя обсягує новы одказы формов URL; про охорону перед автоматічным спамом мусите вырїшыти наступну просту суму і написати резултат. ([[Special:Captcha/help|Што тото значіть?]])",
+ "captcha-badlogin": "В рамках охороны перед автоматічныма пробами угаднути гесло мусите вырїшыти наступну просту суму і написати резултат. ([[Special:Captcha/help|Што тото значіть?]]):",
+ "captcha-createaccount": "В рамках охороны перед автоматічныма створёванями конт мусите про выконаня реґістрації вырїшыти наступну просту суму і написати резултат. ([[Special:Captcha/help|Што тото значіть?]]):",
+ "captcha-createaccount-fail": "Хыблячій ці неправилный код підтверджіня.",
+ "captcha-create": "Жебысьте могли створити тоту сторінку, мусите вырїшыти наступну просту суму і написати резултат. ([[Special:Captcha/help|Што тото значіть?]])",
+ "captcha-sendemail": "В рамках охороны перед автоматічным спамом мусите вырїшыти наступну просту суму і написати резултат. ([[Special:Captcha/help|Што тото значіть?]]):",
+ "captcha-sendemail-fail": "Хыблячій ці неправилный код підтверджіня.",
+ "captcha-disabledinapi": "Тота операція потребує сповнїня CAPTCHA, также ся не дасть выконати средством API.",
+ "captchahelp-title": "Поміч про CAPTCHA",
+ "captchahelp-cookies-needed": "Абы то фунґовало, мусите мати у своїм переглядачу запнуты кукі.",
+ "captchahelp-text": "Вебовы сторінкы, до котрых можуть приспівати їх навщівници (як наприклад тота вікі), суть часто цілём спамерів, котры за помочі автоматічных інштрументів вкладають свої одказы на велике множество сторінок. І наперек тому, же тот спам ся дасть одстранити, представлює неприємне отровованя.\n\nДаколи, окремо почас придаваня новых вебовых одказів, вам може вікі указати образок фаребного ці поскручаного тексту і пожадати вас о описаня зображеных знаків. Кідьже таку задачу не годен легко автоматізовати, реалны люде можуть дале приспівати, але векшыну спамерів і іншых роботічных атакерів тото заставить.\n\nНа жаль тото може представляти неприємный проблем про хоснователїв постиженых зраково ці голосовы чітачкы. В сучасній добі не маєме алтернатівни звукову верзію. Просиме, контактуйте [[Special:ListAdmins|адміністратора сервера]], кідь вам то боронить в хосновным вкладї і треба вам поміч.\n\nПро навернутя на попередню сторінку стиснийте у своїм переглядачі клапку „назад“.",
+ "captcha-addurl-whitelist": " #<!-- зохабте тот рядок точно так як є --> <pre>\n# Сінтаксіс є наслїдня:\n# * Вшытко од знаку „#“ до кінце рядка є коментарь\n# * Каждый непорожнїй рядок є фраґмент реґуларного выразу, котры ся аплікує лем на назву госта в URL\n #</pre> <!-- зохабте тот рядок точно так як є -->",
+ "right-skipcaptcha": "Выконованя дїй споєных з CAPTCHA без потребы їх рїшіня"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/sa.json b/www/wiki/extensions/ConfirmEdit/i18n/sa.json
new file mode 100644
index 00000000..765a380c
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/sa.json
@@ -0,0 +1,23 @@
+{
+ "@metadata": {
+ "authors": [
+ "Shubha"
+ ]
+ },
+ "captcha-edit": "इदं पृष्ठं सम्पादयितुं कृपया अधः दत्तायाः गणितसमस्यायाः उत्तरं कोष्टके लिख्यताम् ([[Special:Captcha/help|अधिकविवरणाय]]):",
+ "captcha-desc": "अनिष्टसन्देशानां कूटशब्दस्य ऊहनं च निवारयितुं क्याप्चा(CAPTCHA)तन्त्रांशः उपलभ्यते",
+ "captcha-label": "क्याप्चा(CAPTCHA)तन्त्रांशः",
+ "captcha-addurl": "भवतः सम्पादने नूतनबाह्यानुबन्धाः अन्तर्भूताः ।\nस्वचालितानिष्टसन्देशेभ्यः रक्षणस्य साहाय्यार्थं कृपया अधः दत्तायाः गणितसमस्यायाः उत्तरं मञ्जूषायां लिखतु\n([[Special:Captcha/help|more info]]) :",
+ "captcha-badlogin": "स्वचालिताभ्यः कूटशब्दभेदनेभ्यः रक्षणस्य साहाय्यार्थं कृपया अधः दत्तायाः गणितसमस्यायाः उत्तरं मञ्जूषायां लिखतु\n([[Special:Captcha/help|more info]]) :",
+ "captcha-createaccount": "स्वचालिताभ्यः लेखासर्जनेभ्यः रक्षणस्य साहाय्यार्थं कृपया अधः दत्तायाः गणितसमस्यायाः उत्तरं मञ्जूषायां लिखतु\n([[Special:Captcha/help|more info]]) :",
+ "captcha-createaccount-fail": "दृढीकरणकूटशब्दः दोषयुक्तः अथवा नष्टः ।",
+ "captcha-create": "इदं पृष्ठं स्रष्टुं, कृपया अधः दत्तायाः गणितसमस्यायाः उत्तरं कोष्टके लिख्यताम् ([[Special:Captcha/help|अधिकविवरणाय]]):",
+ "captcha-sendemail": "स्वचालिताभ्यः अनिष्टसन्देशेभ्यः रक्षणस्य साहाय्यार्थं कृपया अधः दत्तायाः गणितसमस्यायाः उत्तरं मञ्जूषायां लिखतु\n([[Special:Captcha/help|more info]]) :",
+ "captcha-sendemail-fail": "दृढीकरणकूटशब्दः दोषयुक्तः अथवा नष्टः ।",
+ "captcha-disabledinapi": "अस्य कार्यस्य निमित्तं क्याप्चातन्त्रांशः अपेक्षितः, अतः इदम् ए पि ऐ द्वारा कर्तुं न शक्यते ।",
+ "captchahelp-title": "क्याप्चासाहाय्यम्",
+ "captchahelp-cookies-needed": "अस्य कार्यस्य सम्पादनाय भवतां विचरके कुकीस् इत्येतत् सक्रियं स्यात् ।",
+ "captchahelp-text": "वीकिसदृशानि जालक्षेत्राणि यत्र सार्वजनिकानां लेखाः अङ्गीक्रियन्ते तानि स्वचालितोपकरणैः बहुक्षेत्रेभ्यः सम्पर्कप्रेषकैः अनिष्टसन्देशप्रेषकैः निन्द्यन्ते ।\nएते अनिष्टसन्देशाः निष्कासयितुं शक्याः, तथापि इदं कार्यं शिरोवेदनायै ।\nकदाचित्, पृष्ठाय नूतनजालानुबन्धानां योजनावसरे, वीक्या वर्णयुक्तचित्रम् अव्यवस्थितं पाठं वा दर्शयित्वा शब्दलेखनाय सूचयेत् ।\nइदं कार्यं स्वचालितरूपेण कर्तुं न शक्यते, मानवैः एव करणीयम् इत्यतः अनिष्टसन्देशप्रेषकाः यन्त्रचालितकार्याणि अवरुद्धानि भवन्ति ।\nदुरदृष्टवशात् एतेन परिमितसंस्करणयुक्तानां योजकानां क्लेशः भवेत् अथवा पाठाधारितानां भाषणाधारितानां जालगवेषकप्रयोक्तॄणामपि कष्टाय भवेत् ।\nसम्प्रति श्रव्यविकल्पः अस्मत्सविधे न उपलभ्यते ।\nयोग्यलेखानाम् उत्पूरणे अनिरीक्षितक्लेशाः यदि भवन्ति तर्हि साहाय्यार्थम् एतेषां साहाय्यं प्राप्नुवन्तु [[Special:ListAdmins|क्षेत्रनिर्वाहकाः]] ।\nपृष्ठसम्पादकं प्रति गमनाय भवतः जालगवेषके 'पूर्वतनम्' इत्येतं पिञ्जं नुदतु ।",
+ "captcha-addurl-whitelist": " #<!-- leave this line exactly as it is --> <pre>\n# अस्य प्रारूपम् एवमस्ति:\n# * \"#\" इत्यनेन आरभ्यमाणाः सर्वाः टिप्पण्यः ।\n# * सर्वा पङ्क्तिः regex fragment विद्यते याः सार्वसङ्केते विद्यमानैः होस्ट्-नामकैः सह संयोजयति\n #</pre> <!-- leave this line exactly as it is -->",
+ "right-skipcaptcha": "क्याप्चातन्त्रांशस्य प्रवेशं विना क्याप्चा-उद्दीपककार्याणि क्रियन्ताम्"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/sah.json b/www/wiki/extensions/ConfirmEdit/i18n/sah.json
new file mode 100644
index 00000000..947fcf54
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/sah.json
@@ -0,0 +1,23 @@
+{
+ "@metadata": {
+ "authors": [
+ "HalanTul"
+ ]
+ },
+ "captcha-edit": "Сирэйи уларытыаххын баҕардаххына, манна баар примеры суоттаа уонна эппиэтин аналлаах сиргэ суруй ([[Special:Captcha/help|сиһилии]]):",
+ "captcha-desc": "CAPTCHA көмөтүнэн спаамтан уонна аһарыгы уорууттан көмүскэли хааччыйар",
+ "captcha-label": "CAPTCHA",
+ "captcha-addurl": "Тас саайка ыйынньык туруорбуккун; \nспаамтан көмүскэнэр соруктаах суолу толор - ойууга баар буукубалары хатылаа: <br />\n([[Special:Captcha/help|Сиһилии]])",
+ "captcha-badlogin": "Аһарыгы аптамаат алдьаппатын туһугар оҥоһуллубут харыстыыр дьайыыны толор, манна баар холобуру суоттаа уонна хоруйун анал сиргэ суруй ([[Special:Captcha/help|сиһилии]]):",
+ "captcha-createaccount": "Бэлиэтэнэргэр аптамаатынан алдьатыыттан (спаамтан) харыстыыр соруктаах дьайыыны оҥор, ойууга көстөр буукубалары анал сиргэ киллэр:<br />\n([[Special:Captcha/help|Сиһилии]])",
+ "captcha-createaccount-fail": "Бигэргэтии куода суох эбэтэр атын.",
+ "captcha-create": "Сирэйи оҥорорго бу примеры суоттаа ([[Special:Captcha/help|сиһилии]]):",
+ "captcha-sendemail": "Аптамаат спаамтан көмүскэнэр туһугар, бука диэн, бу дьайыыны суоттаа уонна эппиэтин суруй ([[Special:Captcha/help|сиһилии]]):",
+ "captcha-sendemail-fail": "Бигэргэтии куода суох эбэтэр атын.",
+ "captcha-disabledinapi": "Бу дьайыы CAPTCHA нөҥүө эрэ оҥоһуллар, онон API нөҥүө толоруллубат.",
+ "captchahelp-title": "Captcha көмөтө",
+ "captchahelp-cookies-needed": "Бу дьайыы үлэлиирин курдук браузергар куукины холбоо.",
+ "captchahelp-text": "Биһиги саайпыт курдук иһинээҕитин уларытары көҥүллүүр саайтарга сороҕор спам ыытар программалар аптамаатынан бэйэлэрин ыйынньыктарын угаллар.\nОннук аптамаатынан эбиллибит ыйынньыктары суох оҥорор кыах баар эрээри, ол биллэн турар син биир мэһэйдэри үөскэтэр.\n\nОл иһин сороҕор, холобур саҥа ыйынньыгы эбэргэ, программа өҥнөөх эбэтэр хаанньары барбыт тиэкистээх ойууну көрдөрөн, ол тиэкиһи анал түннүккэ хатылатыан сөп.\nМаннык көрдөһүүнү аптамаат кыайан толорбот, оттон киһи чэпчэкитик толорор.\n\nОл гынан баран маннык көмүскэл сорох дьоҥҥо (көрбөт эбэтэр ааҕар браузердары туһанар дьоҥҥо) моһоллору үөскэтиэн сөп.\nБилигин бу моһолу суох оҥорор кыах суох.\nОннук мэһэй таҕыстаҕына бука диэн баалама, биир эмит [[Special:ListAdmins|дьаһабылга (администраатарга)]] этээр, көмөлөһүө.\n\nКөннөрүүгэ төттөрү тиийэргэ браузерыҥ «Назад» тимэҕин баттаа.",
+ "captcha-addurl-whitelist": " #<!-- leave this line exactly as it is --> <pre>\n# Синтаксиһын быһаарыыта:\n# * \"#\" бэлиэттэн строка бүтүөр дылы барыта хос быһаарыы курдук ааҕыллар\n# * Хас биирдии кураанах буолбатах строка URL сорҕотун курдук ааҕыллар\n #</pre> <!-- leave this line exactly as it is -->",
+ "right-skipcaptcha": "CAPTCHA-бэрэбиэркэни ааһыахтаах дьайыылары CAPTCHA-та суох толоруу"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/sat.json b/www/wiki/extensions/ConfirmEdit/i18n/sat.json
new file mode 100644
index 00000000..1a082682
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/sat.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ramjit Tudu"
+ ]
+ },
+ "captcha-label": "CAPTCHA",
+ "confirmedit-preview-line": "ᱫᱷᱟᱹᱲ ᱮᱞ"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/scn.json b/www/wiki/extensions/ConfirmEdit/i18n/scn.json
new file mode 100644
index 00000000..aa50eba9
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/scn.json
@@ -0,0 +1,27 @@
+{
+ "@metadata": {
+ "authors": [
+ "Melos",
+ "Santu",
+ "Gmelfi",
+ "Pippinu",
+ "Sarvaturi"
+ ]
+ },
+ "captcha-edit": "Pi putiri canciari sta pàggina, pi favuri arrisorvi la summa fàcili ca c'è ccassutta e scrivi lu risurtatu ntâ casedda\n([[Special:Captcha/help|àutri nfurmazzioni]]):",
+ "captcha-desc": "Furnisci miccanismi CAPTCHA pi prutèggiri dû spam e di cui prova a nzirtari li password",
+ "captcha-label": "CAPTCHA",
+ "captcha-addurl": "Lu tò canciamentu cunteni lijami pi fora novi.\nP'addifènniri la wiki dû spam autumatizzatu, t'addumannamu pi curtisìa d'arrisòrviri la summa fàcili ca c'è ccassutta e scrìviri lu risurtatu ntâ casedda, avanti di putiri sarvari lu canciamentu ([[Special:Captcha/help|àutri nfurmazzioni]]):",
+ "captcha-badlogin": "P'addifènniri la wiki dî tintativi di furzatura autumàtica dî password, t'addumannamu pi curtisìa d'arrisòrviri la summa fàcili ca c'è ccassutta e scrìviri lu risurtatu ntâ casedda ([[Special:Captcha/help|àutri nfurmazzioni]]):",
+ "captcha-createaccount": "P'addifènniri la wiki dâ criazzioni autumàtica di cunti, t'addumannamu pi curtisìa d'arrisòrviri la summa fàcili ca c'è ccassutta e scrìviri lu risurtatu ntâ casedda ([[Special:Captcha/help|àutri nfurmazzioni]]):",
+ "captcha-createaccount-fail": "CAPTCHA sbagghiatu o ammancanti.",
+ "captcha-create": "Pi putiri criari la pàggina, pi favuri arrisorvi la summa fàcili ca c'è ccassutta e scrivi lu risurtatu ntâ casedda ([[Special:Captcha/help|àutri nfurmazzioni]]):",
+ "captcha-sendemail": "P'addifènniri la wiki dû spam autumatizzatu, t'addumannamu pi curtisìa d'arrisòrviri la summa fàcili ca c'è ccassutta e scrìviri lu risurtatu ntâ casedda ([[Special:Captcha/help|àutri nfurmazzioni]]):",
+ "captcha-sendemail-fail": "CAPTCHA sbagghiatu o mancanti.",
+ "captcha-disabledinapi": "St’azzioni addumanna nu CAPTCHA, dunca nun si pò esèguiri pi menzu di l'API.",
+ "captchahelp-title": "Guida pî CAPTCHA",
+ "captchahelp-cookies-needed": "S’hannu a attivari li cookie ntô browser pi fari funziunari stu miccanismu.",
+ "captchahelp-text": "Quannu li siti Web accèttanu cuntinuti dû pùbblicu, comu fa sta wiki, ammatti spissu ca vèninu sfruttati di malintinziunati ch'adòpiranu strummenti autumatizzati pi carricari liami versu li sò siti.\nCu tuttu ca sti liami si ponnu livari, sunnu sempri na siccatura.\n\nCerti voti, spicialmenti quannu s'agghiùncinu liami novi nta na pàggina, la wiki pò ammustrari na mmàggini cûn testu culuratu o sdillabbratu, e t'addumanna di scrìviri li palori ca cunteni.\nComu chi è diffìcili fari st'azzioni di manera autumàtica, stu miccanismu cunzenti ê cristiani di pubblicari li sò cuntinuti, ô tempu stissu bluccannu la maiur parti dî spammer e di bot ca fannu dammaggi.\n\nPurtroppu, chistu pò dari prubblemi a l'utenti ca nun vìdinu bonu o a chiddi ca adòpiranu browser tistuali o sintitizzatura vucali.\nComu a ora nun avemu n'altirnativa àudiu a dispusizzioni. Si nun s'arrinesci a purtari a tèrmini n'opirazzioni liggìttima, cuntattari pi favuri [[Special:ListAdmins|l'amministratura dû situ]] e addumannari assistenza.\n\nCarcari lu buttuni «arreri» dû browser pi turnari â pàggina di canciamentu.",
+ "captcha-addurl-whitelist": " #<!-- lassari sta riga pricisa pi com'è --> <pre>\n# La sintassi è chista:\n# * Tuttu chiddu ca c'è di nu caràttiri \"#\" fina â fini dâ riga è nu cummentu\n# * Ogni riga nun vacanti è nu frammentu di sprissioni rigulari ca havi a currispùnniri ô sulu host di l'URL\n #</pre> <!-- lassari sta riga pricisa pi com'è -->",
+ "right-skipcaptcha": "Esiguiri l'azzioni c'addumànnanu nu CAPTCHA senza aviri a passari pû CAPTCHA"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/sco.json b/www/wiki/extensions/ConfirmEdit/i18n/sco.json
new file mode 100644
index 00000000..3bcacfd1
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/sco.json
@@ -0,0 +1,24 @@
+{
+ "@metadata": {
+ "authors": [
+ "John Reid",
+ "OchAyeTheNoo"
+ ]
+ },
+ "captcha-edit": "Tae eedit this page, please solve the simple sum ablo aen enter the answer in the kist ([[Special:Captcha/help|mair info]]):",
+ "captcha-desc": "Provides CAPTCHA techniques fer tae protect again spam n passwaird-guessin",
+ "captcha-label": "CAPTCHA.",
+ "captcha-addurl": "Yer eedit incluids new ootby airtins.\nTae protect the wiki again autæmatit spam, we kyndlie speir that ye solve the simple sum ablo n enter the answer in the kist in order tae hain yer eedit ([[Special:Captcha/help|mair info]]):",
+ "captcha-badlogin": "Tae protect the wiki fae autæmatit passwaird crackin, we kyndlie request that ye solve the simple sum ablo n enter the answer in the kist ([[Special:Captcha/help|mair info]]):",
+ "captcha-createaccount": "Tae protect the wiki fae autæmatit accoont cræftin, we kyndlie request that ye solve the simple sum ablo n enter the answer in the kist ([[Special:Captcha/help|mair info]]):",
+ "captcha-createaccount-fail": "Oncorrect or missing CAPTCHA.",
+ "captcha-create": "Tae cræft the page, please solve the symple sum ablo aen enter the answer in the kist ([[Special:Captcha/help|mair info]]):",
+ "captcha-sendemail": "Tae protect the wiki fae autæmatit spammin, we kyndlie request that ye solve the simple sum ablo n enter the answer in the kist ([[Special:Captcha/help|mair info]]):",
+ "captcha-sendemail-fail": "Oncorrect or missing CAPTCHA.",
+ "captcha-disabledinapi": "This action needs ae CAPTCHA, sae it canna be performed through the API.",
+ "captchahelp-title": "CAPTCHA heelp",
+ "captchahelp-cookies-needed": "Ye'll need tae haee cookies enabled in yer brouser fer this tae wairk.",
+ "captchahelp-text": "Wab steids that accept postins fae the publeec, like this wiki, ar aften abuised bi spammers that uise autæmatit tuils tae post thair airtins til monie sites.\nWhile thir spam airtins can be remuived, thay ar ae signeeficant nuisance.\n\nSometimes, especiallie whan eikin new wab airtins til ae page, the wiki micht shaw ye aen eemage o colored or distorted tex n speir ye tae type the wairds shawn.\nSin this is ae task that's haurd tae autæmate, it will permit maist real bodies tae mak thair posts while stappin maist spammers n ither roboteec attackers.\n\nOnfortunatelie this can onconveeneeance uisers wi limited veesion or uisin tex-based or speech-based brousers.\nAt the moment we dinna hae aen audio alternateeve available.\nPlease contact the [[Special:ListAdmins|site admeenistraters]] fer assistance gif this is onexpectedlie stapin ye fae daein legeetimate actions.\n\nHit the \"back\" button in yer brouser tae return til the page eediter.",
+ "captcha-addurl-whitelist": " #<!-- lea this line exactly aes it is --> <pre>\n# Syntax is aes follows:\n# * Awthin fae ae \"#\" chairacter til the end o the line is ae comment\n# * Ilka no-blank line is ae regex fragment that will yinly match hosts inside URLs\n #</pre> <!-- lea this line exactly aes it is -->",
+ "right-skipcaptcha": "Perform CAPTCHA-triggering actions wiout haein tae gae through the CAPTCHA"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/sd.json b/www/wiki/extensions/ConfirmEdit/i18n/sd.json
new file mode 100644
index 00000000..79cced6a
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/sd.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "Aursani",
+ "Mehtab ahmed"
+ ]
+ },
+ "captcha-edit-fail": "ڪيپچا گُم يا غير درست.",
+ "captcha-label": "ڪيپچا",
+ "confirmedit-preview-content": "مواد",
+ "confirmedit-preview-valid": "قابلِڪار",
+ "confirmedit-preview-invalid": "ناقابلِڪار"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/sgs.json b/www/wiki/extensions/ConfirmEdit/i18n/sgs.json
new file mode 100644
index 00000000..9ccd2f0d
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/sgs.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Hugo.arg"
+ ]
+ },
+ "captcha-label": "CAPTCHA"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/sh.json b/www/wiki/extensions/ConfirmEdit/i18n/sh.json
new file mode 100644
index 00000000..95f1822d
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/sh.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "Kolega2357",
+ "OC Ripper"
+ ]
+ },
+ "captcha-label": "CAPTCHA",
+ "captcha-createaccount-fail": "Netačan unos ili nedostatak koda za potvrđivanje.",
+ "captcha-sendemail": "Da bi zaštitli wiki od automatskog spamiranja, ljubazno vas molimo da riješite jednostavno sabiranje/zbrajanje ispod i odgovor unesete u kutijicu ([[Special:Captcha/help|više informacija]]):"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/shi.json b/www/wiki/extensions/ConfirmEdit/i18n/shi.json
new file mode 100644
index 00000000..642eb2a0
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/shi.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Amara-Amaziɣ"
+ ]
+ },
+ "captcha-label": "ⴽⴰⴱⵜⵛⴰ"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/shn.json b/www/wiki/extensions/ConfirmEdit/i18n/shn.json
new file mode 100644
index 00000000..2f0ed01a
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/shn.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Saimawnkham"
+ ]
+ },
+ "captcha-label": "လိၵ်ႈၼႄႉၼွၼ်း"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/shy-latn.json b/www/wiki/extensions/ConfirmEdit/i18n/shy-latn.json
new file mode 100644
index 00000000..5a0c7234
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/shy-latn.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Vikoula5"
+ ]
+ },
+ "captcha-label": "CAPTCHA"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/si.json b/www/wiki/extensions/ConfirmEdit/i18n/si.json
new file mode 100644
index 00000000..0c1aa019
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/si.json
@@ -0,0 +1,26 @@
+{
+ "@metadata": {
+ "authors": [
+ "Budhajeewa",
+ "Singhalawap",
+ "නන්දිමිතුරු",
+ "පසිඳු කාවින්ද"
+ ]
+ },
+ "captcha-edit": "මෙම පිටුව සංස්කරණය කිරීමට, කරුණාකර පහත දැක්වෙන සරල එකතුකිරීම විසඳා පිලිතුර කොටුවේ ඇතුලත් කරන්න ([[Special:Captcha/help|වැඩි විස්තර]]):",
+ "captcha-desc": "ස්පෑම් සහ මුරපද-අනුමාන වලන් ආරක්ෂාව සදහා කැප්චා තාක්ෂණය සපයනු ලැබේ",
+ "captcha-label": "කැප්චා",
+ "captcha-addurl": "ඔබගේ සංස්කරණයෙහි නව බාහිර සබැඳියන් අඩංගුයි.\nස්වයංක්‍රීය අයාචිත තැපෑලෙන් ආරක්ෂා වනු වස්, පහත සරල ගණිත ගැටළුව විසඳා පිළිතුර කොටුවෙහි ඇතුලත් කරන්න ([[Special:Captcha/help|වැඩිමනත් තොරතුරු]]):",
+ "captcha-badlogin": "ස්වයංක්‍රීය මුරපද බිඳීම වලක්වනු වස්, පහත සරල ගණිත ගැටළුව විසඳා පිළිතුර කොටුවෙහි ඇතුලත් කරන්න ([[Special:Captcha/help|වැඩිමනත් තොරතුරු]]):",
+ "captcha-createaccount": "ස්වයංක්‍රීය ගිණුම් තැනීමෙන් ආරක්ෂා කිරීමට උදවු කරනු වස්, කරුණාකර පහත දැක්වෙන සරල එකතුකිරීම විසඳා පිලිතුර කොටුවේ ඇතුලත් කරන්න ([[Special:Captcha/help|වැඩි විස්තර]]):",
+ "captcha-createaccount-fail": "තහවුරුකිරීමේ කේතය එක්කෝ සාවද්‍යයි නැතිනම් සො‍යාගත නොහැක.",
+ "captcha-create": "මෙම පිටුව තැනීමට, කරුණාකර පහත දැක්වෙන සරල එකතුකිරීම විසඳා පිලිතුර කොටුවේ ඇතුලත් කරන්න ([[Special:Captcha/help|වැඩි විස්තර]]):",
+ "captcha-sendemail": "ස්‍වයංක්‍රීය ස්පෑම්කරණයන්ගෙන් වැලකීමට, කරුණාකර පහත දැක්වෙන සරල එකතුකිරීම විසඳා පිලිතුර කොටුවේ ඇතුලත් කරන්න ([[Special:Captcha/help|වැඩි විස්තර]]):",
+ "captcha-sendemail-fail": "තහවුරුකෙරුම් කේතය සොයාගත නොහැකි හෝ වැරදිය.",
+ "captcha-disabledinapi": "මෙම ක්‍රියාවට කැප්චාවක් අවැසි නිසා එය API හරහා කළ නොහැක.",
+ "captchahelp-title": "Captcha උදවු",
+ "captchahelp-cookies-needed": "මෙය ක්‍රියාත්මක වීමට නම් ඔබ විසින් ඔබගේ බ්‍රවුසරයෙහි කුකීස් සක්‍රිය කොට තිබිය යුතුය.",
+ "captchahelp-text": "මහජනයාගේ පළකෙරුම් පිළිගන්නා මෙවන් විකි වැනි අඩවි තමන්ගේ අඩවියන් වෙත සබැඳි ඇතුලත් කිරීමට ස්‍වයංක්‍රීය මෙවලම් භාවිතා කරන ස්පෑම්කරුවන්ගේ අයතා භාවිතයට ගොදුරු වේ. මෙම සබැඳියන් ඉවත් කළ හැකි වුවද, ඒවා ඉතාමත් කරදරකාරීය.\n\nඇතැම් විට, විශේෂයෙන්ම පිටුවකට සබැඳියක් එක් කරනා විට, විකිය විසින් ඔබට වර්ණිත හෝ විකෘතිත පෙළක් පෙන්වා එහි සඳහන් වදන් යතුරුලියන ලෙස ඔබෙන් ඉල්ලනු ඇති.\nඑය ස්‍වයංකෙරුමට අසීරු ක්‍රියාවක් බැවින් එය මගින් සැබෑ මිනිසුන්ට ලිපි ලියුමට ඉඩ දෙන අතරම බොහෝමයක් ස්පෑම්කරුවන් හා ස්‍වයංක්‍රීය පහරදීම් වලක්වනු ඇති.\n\nනමුත් අවාසනාවකට මෙය නිසා දෘෂ්ඨි දෝෂ සහිත හෝ පෙළ-පාදක හෝ කථන-පාදක වෙබ් පිරික්සක භාවිතා කරන පරිශීලකයන් අපහසුතාවට පත් වනු ඇත.\nමේ වන විට අප සතුව ශ්‍රව්‍ය විකල්පයක් නොමැත.\n\nමෙය නිසා ඔබට ලිපි ලිවීම දැඩි ලෙස කරදරකාරී වී ඇත්නම් කරුණාකර සහය සඳහා [[Special:ListAdmins|අඩවි පරිපාලකයන්]] සම්බන්ධ කරගන්න.\n\nපිටු සකසනයට ආපසු යාම සඳහා ඔබේ වෙබ් පිරික්සකයේ \"පසුපසට\" බොත්තම තද කරන්න.",
+ "captcha-addurl-whitelist": "#<!-- මෙම පේළිය මෙලෙසින්ම තිබීමට ඉඩ හරින්න --> <pre>\n# වාග් රීතිය පහත පරිදි වේ:\n# * \"#\" අක්ෂරයක සිට පේළියක අග දක්වා සියල්ල පරිකථනයක් වේ\n# * සෑම නො-හිස් පේළියක්ම, කලාප ලිපිනයන් (URL) තුල සත්කාරකයන් පමණක් ගලපන නිත්ප්‍රකා (නිත්‍ය ප්‍රකාශන) ඛණ්ඩයක් වේ\n #</pre> <!-- මෙම පේළිය එලෙසින්ම පැවතීමට ඉඩ හරින්න -->",
+ "right-skipcaptcha": "captcha පරික්ෂා කීරීම සිදුකිරීමෙන් වැලකෙමින් captcha පූරනකාරක ක්‍රියාවලීන් සිදුකරන්න"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/sk.json b/www/wiki/extensions/ConfirmEdit/i18n/sk.json
new file mode 100644
index 00000000..9fd10a19
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/sk.json
@@ -0,0 +1,23 @@
+{
+ "@metadata": {
+ "authors": [
+ "Helix84"
+ ]
+ },
+ "captcha-edit": "Aby ste mohli upravovať túto stránku, vyriešte prosím tento jednoduchý súčet a napíšte výsledok do poľa ([[Special:Captcha/help|viac informácií]]):",
+ "captcha-desc": "Poskytuje techniky captcha na ochranu pred spamom a hádaním hesla",
+ "captcha-label": "CAPTCHA",
+ "captcha-addurl": "Vaša úprava obsahuje nové externé odkazy. Ako pomoc pri ochrane pred automatickým spamom vyriešte prosím tento jednoduchý súčet a zadajte výsledok do poľa ([[Special:Captcha/help|viac informácií]]):",
+ "captcha-badlogin": "Ako ochranu proti automatizovanému lámaniu hesiel, prosím vyriešte nasledujúci súčet a zadajte ho do poľa pre odpoveď ([[Special:Captcha/help|viac informácií]]):",
+ "captcha-createaccount": "Kvôli ochrane proti automatizovanému spamu je potrebné napísať slová zobrazené na tomto obrázku, až potom bude vytvorený nový účet:\n<br />([[Special:Captcha/help|Čo je toto?]])",
+ "captcha-createaccount-fail": "Nesprávny alebo chýbajúci potvrdzovací kód.",
+ "captcha-create": "Aby ste mohli vytvoriť túto stránku, vyriešte prosím tento jednoduchý súčet a napíšte výsledok do poľa ([[Special:Captcha/help|viac informácií]]):",
+ "captcha-sendemail": "Ako pomoc pri ochrane pred automatickým spamom, prosím, vyriešite nasledujúci jednoduchý súčet a napíšte odpoveď do poľa ([[Special:Captcha/help|ďalšie informácie]]):",
+ "captcha-sendemail-fail": "Nesprávny alebo chýbajúci potvrdzovací kód.",
+ "captcha-disabledinapi": "Táto operácia vyžaduje captcha, preto nemôže byť vykonaná prostredníctvom rozhrania API.",
+ "captchahelp-title": "Pomocník ku captcha",
+ "captchahelp-cookies-needed": "Aby toto fungovalo, budete si musieť v prehliadači zapnúť koláčiky (cookies).",
+ "captchahelp-text": "Webstránky prijímajúce príspevky od verejnosti ako táto wiki sú často cieľom zneužitia spammermi, ktorí používajú automatizované nástroje na to, aby svoje odkazy umiestnili na množstvo stránok. Hoci je možné tieto odkazy odstrániť, zbytočne to zaťažuje používateľov.\n\nNiekedy, obzvlášť keď pridávate webové odkazy k článkom, wiki vám môže zobraziť obrázok so zafarbeným alebo pokriveným textom a požiadať vás o prepísanie zobrazených slov. Keďže takúto úlohu je ťažké zautomatizovať a umožní skutočným ľuďom poslať svoje príspevky, zastaví to väčšinu spammerov a iných robotických útočníkov.\n\nNanešťastie, môže to byť prekážkou pre používateľov so zrakovým postihnutím alebo tých, ktorí používajú textové alebo hovoriace prehliadače. Momentálne nemáme dostupnú audio zvukovú alternatívu. Kontaktujte prosím [[Special:ListAdmins|správcov stránok]] ak vám to neočakávane komplikuje umiestňovanie oprávnených príspevkov.\n\nStlačením tlačidla „späť“ vo vašom prehliadači sa vrátite do editora stránky.",
+ "captcha-addurl-whitelist": " #<!-- leave this line exactly as it is --> <pre>\n# Syntax je nasledovná:\n# * Všetko od znaku „#“ do konca riadka je komentár\n# * Každý neprázdny riadok je fragment regulárneho výrazu, ktorého zhody budú iba stroje v rámci URL\n #</pre> <!-- leave this line exactly as it is -->",
+ "right-skipcaptcha": "Vykonávať činnosti spúšťajúce captcha bez toho, aby bolo potrebné vyriešiť captcha"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/skr-arab.json b/www/wiki/extensions/ConfirmEdit/i18n/skr-arab.json
new file mode 100644
index 00000000..c387c1fa
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/skr-arab.json
@@ -0,0 +1,18 @@
+{
+ "@metadata": {
+ "authors": [
+ "Saraiki"
+ ]
+ },
+ "captcha-label": "کیپچا",
+ "captcha-help": "کیپچا دا حل",
+ "captcha-info-help": "کیپچا دی وضاحت",
+ "captcha-id-label": "کیپچا آئی ڈی",
+ "captchahelp-title": "کیپچا مدد",
+ "captcha-apihelp-param-captchaword": "کیپچا دا جواب",
+ "confirmedit-preview-line": "لکیر عدد",
+ "confirmedit-preview-content": "شامل حصے",
+ "confirmedit-preview-validity": "جواز",
+ "confirmedit-preview-valid": "جائز",
+ "confirmedit-preview-invalid": "غلط"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/sl.json b/www/wiki/extensions/ConfirmEdit/i18n/sl.json
new file mode 100644
index 00000000..3ae30f2a
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/sl.json
@@ -0,0 +1,27 @@
+{
+ "@metadata": {
+ "authors": [
+ "BrokenArrow",
+ "Dbc334"
+ ]
+ },
+ "captcha-edit": "Če želite urejati stran, prosimo rešite spodnjo nalogo in odgovor vpišite v polje ([[Special:Captcha/help|več informacij]]):",
+ "captcha-edit-fail": "Napačen ali manjkajoč CAPTCHA",
+ "captcha-desc": "Nudi pristope CAPTCHA za zaščito proti smetju in ugibanju gesel",
+ "captcha-label": "CAPTCHA",
+ "captcha-addurl": "Vaše urejanje vključuje nove zunanje povezave.\nDa zaščitimo wiki pred samodejno navlako, vas prijazno prosimo, da rešite spodnjo nalogo in odgovor vnesete v polje, če želite shraniti svoje urejanje ([[Special:Captcha/help|več informacij]]):",
+ "captcha-badlogin": "Da zaščitimo wiki pred samodejnim ugotavljanjem gesel, vas prijazno prosimo, da rešite spodnjo nalogo in odgovor vnesete v polje ([[Special:Captcha/help|več informacij]]):",
+ "captcha-createaccount": "Da zaščitimo wiki pred samodejnim ustvarjanjem računov, vas prijazno prosimo, da rešite spodnjo nalogo in odgovor vnesete v polje ([[Special:Captcha/help|več informacij]]):",
+ "captcha-createaccount-fail": "Napačna ali manjkajoča CAPTCHA.",
+ "captcha-create": "Če želite ustvariti stran, prosimo rešite spodnjo nalogo in odgovor vpišite v polje ([[Special:Captcha/help|več informacij]]):",
+ "captcha-sendemail": "Da zaščitimo wiki pred samodejnim smetenjem, vas prijazno prosimo, da rešite spodnjo nalogo in odgovor vnesete v polje ([[Special:Captcha/help|več informacij]]):",
+ "captcha-sendemail-fail": "Napačna ali manjkajoča CAPTCHA.",
+ "captcha-disabledinapi": "To dejanje zahteva preverjanje captcha, zato ga ni mogoče izvesti preko API.",
+ "captchahelp-title": "Pomoč za captcha",
+ "captchahelp-cookies-needed": "Če želite, da to deluje, boste morali v svojem brskalniku omogočiti piškotke.",
+ "captchahelp-text": "Spletne strani, ki omogočajo objavljanje širši javnosti, kot na primer ta wiki, pogosto zlorabljajo spamerji, ki za objavo svojih povezav na mnoge strani uporabljajo avtomatizirana orodja.\nČeprav je neželene povezave mogoče odstraniti, so precejšnja nadloga.\n\nVčasih, zlasti pri dodajanju novih spletnih povezav na stran, vam bo wiki morda prikazal sliko obarvanega ali popačenega besedila in zahteval vpis prikazanih besed.\nKer je to opravilo težko avtomatizirati, bo s tem večini ljudi objavljanje dovoljeno, spamerji in drugi robotski napadalci pa bodo ustavljeni.\n\nŽal lahko to povzroči nevšečnosti uporabnikom s slabim vidom in tistim, ki uporabljajo besedilne ali govorne brskalnike.\nGlasovna možnost trenutno še ni na razpolago.\nČe vam to nepričakovano preprečuje legitimno objavo, prosimo, da se obrnete na [[Special:ListAdmins|administratorje spletišča]].\n\nZa vrnitev v urejevalnik izberite gumb »nazaj« v vašem brskalniku.",
+ "captcha-addurl-whitelist": " #<!-- pustite to vrstico takšno, kot je --> <pre>\n# Skladnja je sledeča:\n# * Vse od znaka »#« do konca vrstice je pripomba\n# * Vsaka neprazna vrstica je delec regularnega izraza, ki se bo ujemal samo z gostitelji v URL-jih\n #</pre> <!-- pustite to vrstico takšno, kot je -->",
+ "right-skipcaptcha": "Izvaja dejanja, ki sprožijo preverjanje captcha, brez da bi moral opraviti preverjanje",
+ "captcha-apihelp-param-captchaword": "Odgovorite na CAPTCHA",
+ "captcha-apihelp-param-captchaid": "CAPTCHA ID iz prejšnje zahteve"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/sm.json b/www/wiki/extensions/ConfirmEdit/i18n/sm.json
new file mode 100644
index 00000000..6f5e7ccd
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/sm.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Fanjiayi"
+ ]
+ },
+ "captcha-label": "CAPTCHA"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/sq.json b/www/wiki/extensions/ConfirmEdit/i18n/sq.json
new file mode 100644
index 00000000..d5f49d16
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/sq.json
@@ -0,0 +1,27 @@
+{
+ "@metadata": {
+ "authors": [
+ "BrokenArrow",
+ "Dori",
+ "Mikullovci11",
+ "Olsi",
+ "Liridon"
+ ]
+ },
+ "captcha-edit": "Për të redaktuar këtë faqe ju lutem zgjidhni shumën e mëposhtme dhe vendosni përgjigjen në kuti ([[Special:Captcha/help|më shumë informacion]]):",
+ "captcha-desc": "Siguron teknika CAPTCHA për të mbrojtur kundër spam",
+ "captcha-label": "CAPTCHA",
+ "captcha-addurl": "Redaktimi juaj ka lidhje URL të reja dhe si mbrojtje kundër abuzimeve automatike duhet të shtypni çfarë shfaqet tek figura e mëposhtme:<br /> ([[Special:Captcha|Çfarë është kjo?]])",
+ "captcha-badlogin": "Për tu mbrojtur nga metoda automatike të gjetjes së fjalëkalimeve ju kërkojmë të gjeni zgjidhni shumën e mëposhtme dhe të vendosni përgjigjen në kuti ([[Special:Captcha/help|më shumë informacion]]):",
+ "captcha-createaccount": "Për mbrojtje kundër regjistrimeve automatike duhet të zgjidhni ekuacionin e mëposhtëm para se të hapni llogarinë:<br />([[Special:Captcha|Çfarë është kjo?]])",
+ "captcha-createaccount-fail": "Mesazhi që duhej shtypur mungon ose nuk është shtypur siç duhet.",
+ "captcha-create": "Për të krijuar këtë faqe ju lutem zgjidhni shumën e mëposhtme dhe vendosni përgjigjen në kuti ([[Special:Captcha/help|më shumë informacion]]):",
+ "captcha-sendemail": "Për të ndihmuar në mbrojtjen kundër spamit të automatizuar, ju lutemi zgjidhni këtë më poshtë dhe shkruani përgjigjen në kuti\n([[Special:Captcha/help|më shumë informacion]]):",
+ "captcha-sendemail-fail": "Mungon kodi i konfirmimit ose është i pasaktë.",
+ "captcha-disabledinapi": "Ky veprim kërkon një captcha, kështu që nuk mund të kryhet nëpërmjet API.",
+ "captchahelp-title": "Ndihmë rreth sistemit \"Captcha\"",
+ "captchahelp-cookies-needed": "Duhet të pranoni \"biskota\" nga shfletuesi juaj për këtë veprim.",
+ "captchahelp-text": "Faqet e rrjetit që pranojnë shkrime nga publiku, siç është edhe kjo wiki, shpesh abuzohen nga njerëz që duan të përfitojnë duke reklamuar ose promovuar lidhjet e tyre. Këto lloj abuzimesh mund të hiqen kollaj por janë një bezdi dhe shpenzim kohe i papranueshëm.\n\nNdonjëherë, sidomos kur po hapni një llogari të re apo kur po shtoni lidhje të reja nëpërmjet redaktimit tuaj, sistemi mund t'ju shfaqi një figurë që përmban fjalë me gërma ose numra të shtrembruara ose me ngjyra të ndryshme të cilat ju duhet të shtypni para se të mund të kryeni veprimin në fjalë. Kjo bëhet pasi është shumë e vështirë për një robot ose mjet automatik të kryejë të njëjtën punë. Kështu mund të dallohet nëse jeni me të vërtetë një njeri apo një robot. Ky lloj sistemi s'mund të ndalojë tërë abuzimet por ndalon një pjesë të mirë të tyre, sidomos ato që janë automatike dhe të shumta në numër.\n\nFatkeqësisht ky lloj sistemi mund të bezdisi përdoruesit me pamje të kufizuar ose ata që përdorin mjete teksti ose shfletues leximi me zë. Tani për tani nuk kemi mundësi për të ofruar një sistem me zë në vend të figurave. Ju lutem lidhuni me [[Special:ListAdmins|administruesit]] nëse ky sistem po ju ndalon të jepni kontribute të vlefshme.\n\nShtypni butonin \"prapa\" (\"back\") të shfletuesit tuaj për tu kthyer tek faqja e mëparshme.",
+ "captcha-addurl-whitelist": " #<!-- lëreni këtë rresht siç është --> <pre>\n# Sintaksa është si më poshtë:\n# * Çdo gjë nga simboli \"#\" deri në fund të rreshtit është koment\n# * Çdo rresht jo-bosh është një pjesë regex që duhet t'i përputhet emrat të shërbyesve brenda një URL-i\n #</pre> <!-- lëreni këtë rresht siç është -->",
+ "right-skipcaptcha": "Kryen veprime CAPTCHA-triggering pa pasur nevojë të shkojë nëpërmjet CAPTCHA"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/sr-ec.json b/www/wiki/extensions/ConfirmEdit/i18n/sr-ec.json
new file mode 100644
index 00000000..f78211e6
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/sr-ec.json
@@ -0,0 +1,26 @@
+{
+ "@metadata": {
+ "authors": [
+ "Milicevic01",
+ "Millosh",
+ "Rancher",
+ "Srdjan m",
+ "Сербијана"
+ ]
+ },
+ "captcha-edit": "За измену ове стране, реши следећи задатак испод и унеси одговор у кутију ([[Special:Captcha/help|детаљније]]):",
+ "captcha-desc": "Пружа заштиту против непожељних порука у виду потврдног кода",
+ "captcha-label": "КАПЧА",
+ "captcha-addurl": "Ваша измена садржи нове спољашње везе.\nУ циљу заштите од непожељних порука, решите следећи задатак испод и унесите одговор у поље ([[Special:Captcha/help|више информација]]):",
+ "captcha-badlogin": "У циљу заштите од пробијања лозинки, решите следећи задатак испод и унесите одговор у поље ([[Special:Captcha/help|више информација]]):",
+ "captcha-createaccount": "У циљу заштите од аутоматизованог вандализма, решите следећи задатак испод и унесите одговор у поље ([[Special:Captcha/help|више информација]]):",
+ "captcha-createaccount-fail": "Погрешан или непостојећи код за потврду.",
+ "captcha-create": "Да бисте направили страницу, решите следећи задатак испод и унесите одговор у поље ([[Special:Captcha/help|више информација]]):",
+ "captcha-sendemail": "У циљу заштите од слања непожељних порука, решите следећи задатак испод и унесите одговор у поље ([[Special:Captcha/help|више информација]]):",
+ "captcha-sendemail-fail": "Неправилан или непостојећи код за потврду.",
+ "captchahelp-title": "Помоћ око потврдног кoда",
+ "captchahelp-cookies-needed": "Потребно је да омогућите колачиће да би ово радило.",
+ "captchahelp-text": "Веб-сајтове који подржавају слање садржаја из јавности, као што је овај вики, често злоупотребљавају вандали који користе аутоматизоване алате да шаљу своје везе ка многим сајтовима.\nИако се ове нежељене везе могу уклонити, оне задају велику муку.\n\nПонекад, поготово када се додају нове интернет везе на страну, вики софтвер вам може показати слику обојеног и изврнутог текста и тражити да укуцате тражену реч.\nПошто је тешко аутоматизовати овакав задатак, он омогућује свим правим људима да врше своје измене, али ће зато спречити вандале и остале роботске нападаче.\n\nНажалост, ово може да буде неповољно за кориснике са ограниченим видом и за оне који користе прегледаче базиране на тексту или говору.\nУ овом тренутку, аудио алтернатива није доступна.\nКонтактирајте [[Special:ListAdmins|администраторе сајта]] ради помоћи ако вас ово неочекивано омета у прављењу добрих измена.\n\nКликните на дугме „назад“ вашег прегледача да се вратите на поље за унос текста.",
+ "captcha-addurl-whitelist": " #<!-- ову линију не дирајте--> <pre>\n# Синтакса је следећа:\n# * Све од знака „#“ до краја линије је коментар\n# * Свака линија која није празна је део регуларног израза (regex fragment) која одговара имену хоста у URL-у\n\n #</pre> <!-- ову линију не дирајте -->",
+ "right-skipcaptcha": "прескакање радњи које захтевају унос потврдног кода"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/sr-el.json b/www/wiki/extensions/ConfirmEdit/i18n/sr-el.json
new file mode 100644
index 00000000..7a7f20eb
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/sr-el.json
@@ -0,0 +1,24 @@
+{
+ "@metadata": {
+ "authors": [
+ "Michaello",
+ "Milicevic01",
+ "Srdjan m",
+ "Сербијана"
+ ]
+ },
+ "captcha-edit": "Za izmenu ove strane, reši jednostavan zbri ispod i unesi odgovor u kutiju ([[Special:Captcha/help|detaljnije]]):",
+ "captcha-desc": "Pruža zaštitu protiv nepoželjnih poruka u vidu potvrdnog koda",
+ "captcha-label": "KAPČA",
+ "captcha-addurl": "Tvoja izmena uključuje nove spoljašnje veze. U cilju zaštite protiv automatskog spama, reši jednostavan zbir ispod i upiši odgovor u kutiju ([[Special:Captcha/help|detaljnije]]):",
+ "captcha-badlogin": "U cilju zaštite od automatske provale u lozinku, reši jednostavan zbir ispod i unesi odgovor u kutiju ([[Special:Captcha/help|detaljnije]]):",
+ "captcha-createaccount": "U cilju zaštite od automatizovanog vandalizma, rešite prostu računicu ispod i unesite odgovor u polje ([[Special:Captcha/help|više informacija]]):",
+ "captcha-createaccount-fail": "Pogrešan ili nepostojeći kod za potvrdu.",
+ "captcha-create": "Da biste napravili stranicu, rešite prostu računicu ispod i unesite odgovor u polje ([[Special:Captcha/help|više informacija]]):",
+ "captcha-sendemail-fail": "Nepravilan ili nepostojeći kod za potvrdu.",
+ "captchahelp-title": "Pomoć oko potvrdnog koda",
+ "captchahelp-cookies-needed": "Da bi ovo uradio, neophodno je da su ti kolačići omogućeni u brauzeru.",
+ "captchahelp-text": "Veb-sajtove koji podržavaju slanje sadržaja iz javnosti, kao što je ovaj viki, često zloupotrebljavaju vandali koji koriste automatizovane alate da šalju svoje veze ka mnogim sajtovima.\nIako se ove neželjene veze mogu ukloniti, one zadaju veliku muku.\n\nPonekad, pogotovo kada se dodaju nove internet veze na stranu, viki softver vam može pokazati sliku obojenog i izvrnutog teksta i tražiti da ukucate traženu reč.\nPošto je teško automatizovati ovakav zadatak, on omogućuje svim pravim ljudima da vrše svoje izmene, ali će zato sprečiti vandale i ostale robotske napadače.\n\nNažalost, ovo može da bude nepovoljno za korisnike sa ograničenim vidom i za one koji koriste pregledače bazirane na tekstu ili govoru.\nU ovom trenutku, audio alternativa nije dostupna.\nKontaktirajte [[Special:ListAdmins|administratore sajta]] radi pomoći ako vas ovo neočekivano ometa u pravljenju dobrih izmena.\n\nKliknite na dugme „nazad“ vašeg pregledača da se vratite na polje za unos teksta.",
+ "captcha-addurl-whitelist": " #<!-- ovu liniju ne dirajte--> <pre>\n# Sintaksa je sledeća:\n# * Sve od znaka „#“ do kraja linije je komentar\n# * Svaka linija koja nije prazna je deo regularnog izraza (regex fragment) koja odgovara imenu hosta u URL-u\n\n #</pre> <!-- ovu liniju ne dirajte -->",
+ "right-skipcaptcha": "preskakanje radnji koje zahtevaju unos potvrdnog koda"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/stq.json b/www/wiki/extensions/ConfirmEdit/i18n/stq.json
new file mode 100644
index 00000000..cd33f9e7
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/stq.json
@@ -0,0 +1,19 @@
+{
+ "@metadata": {
+ "authors": [
+ "Pyt"
+ ]
+ },
+ "captcha-edit": "Tou Beoarbaidenge fon ju Siede löös ätterfoulgjende Reekenapgoawe un dräch dät Resultoat in dät Fäild hierunner ien [[Special:Captcha/help|(Froagen of Probleme?)]]:",
+ "captcha-desc": "Eenfache Captcha-Implementierenge",
+ "captcha-addurl": "Dien Beoarbaidenge änthaalt näie externe Ferbiendengen.\nToun Skuts foar automatisierde Spammenge löös ju ätterfoulgjende Reekenapgoawe un dräch dät Resultoat in dät Fäild hierunner ien.\nKlik dan fonnäien ap „Siede spiekerje“ [[Special:Captcha/help|(Froagen of Probleme?)]].",
+ "captcha-badlogin": "Toun Skuts foar ne Kompromittierenge fon dien Benutserkonto löös ju ätterfoulgjende Reekenapgoawe un dräch dät Resultoat in dät Fäild hierunner ien [[Special:Captcha/help|(Froagen of Probleme?)]].",
+ "captcha-createaccount": "Toun Skuts foar automatisierden Anloage fon Benutserkonten löös ju ätterfoulgjende Reekenapgoawe un dräch dät Resultoat in dät Fäild hierunner ien [[Special:Captcha/help|(Froagen of Probleme?)]].",
+ "captcha-createaccount-fail": "Falske of failjende Bestäätigengscode.",
+ "captcha-create": "Uum disse Siede tou moakjen, löös ju ätterfoulgjende Reekenapgoawe ap un dräch dät Resultoat in dät Fäild hier unner ien [[Special:Captcha/help|(Froagen of Probleme?)]].",
+ "captchahelp-title": "Captcha-Hälpe",
+ "captchahelp-cookies-needed": "'''Wichtige Waiwiesenge:''' Der mouten Cookies in dän Browser ferlööwed weese.",
+ "captchahelp-text": "Internetsteeden, do der foar Biedraage fon praktisk älkuneen eepen sunt - so as dät {{SITENAME}}-Wiki — wäide oafte fon Spammere misbruukt, do hiere Ferbiendengen automatisk ap fuul Websieden platzierje. Disse Spam-Ferbiendengen konnen wier wächhoald wäide, man jo sunt n groot Ferträit.\n\nIn fuul Falle, besunners bie dät Bietouföigjen fon näie Webferbiendengen tou ne Siede, kon dät foarkuume, dät dit Wiki ne Bielde mäd n faawigen un fertroalden Text anwiest un deertou apfoardert, do anwiesde Woude ientoutippen. Deer sun Apgoawe man stuur automatisk ouhonneld wäide kon, wäide deertruch do maaste Spammere, do der mäd automatiske Reewen oarbaidje, stopped, wierjuun moanskelke Benutsere hieren Biedraach ouseende konnen.\n\nSpietelk genouch kon dät tou Meelasje foar Persoone fiere, do der minner goud sjo konnen of text- of sproakbasierde Browsere ferweende. Apstuuns hääbe wie neen Audio-Alternative ferföigboar.\nKontaktier do [[Special:ListAdmins|Site-Administratore]] foar Hälpe, wan dit jou Moite rakt bie dät Hoochleeden fon Biedraage.\n\nKlik ap dän 'Tourääch'-Knoop in jou Browser uum ätter dän Sieden-Editor touräächtougungen.",
+ "captcha-addurl-whitelist": " #<!-- leave this line exactly as it is --> <pre>\n# Syntax:\n# * Alles fon n #-Teeken bit tou dän Eend fon ju Riege is n Kommentoar\n# * Älke nit-loose Riege is n Regex-Fragment, dät juunuur den Hostnoome fon ne URL wröiged wäd\n #</pre> <!-- leave this line exactly as it is -->",
+ "right-skipcaptcha": "Uurspringen fon ju Captcha-Iengoawe"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/sty.json b/www/wiki/extensions/ConfirmEdit/i18n/sty.json
new file mode 100644
index 00000000..9ea35a66
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/sty.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Khanmarat"
+ ]
+ },
+ "captcha-label": "CAPTCHA"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/su.json b/www/wiki/extensions/ConfirmEdit/i18n/su.json
new file mode 100644
index 00000000..c15904ef
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/su.json
@@ -0,0 +1,18 @@
+{
+ "@metadata": {
+ "authors": [
+ "Irwangatot",
+ "Kandar"
+ ]
+ },
+ "captcha-edit": "Pikeun ngédit artikel ieu, mangga eusian itungan di handap ([[Special:Captcha/help|émbaran lengkep]]):",
+ "captcha-desc": "Implementasi basajan captcha",
+ "captcha-label": "CAPTCHA",
+ "captcha-addurl": "Éditan anjeun ngawengku tumbu kaluar anyar.\nPikeun nyegah spam, mangga eusian itungan di handap ieu\n([[Special:Captcha/help|émbaran lengkep]]):",
+ "captcha-createaccount": "Pikeun nyegah dijieunna rekening sacara otomatis, mangga eusian itungan di handap ieu ([[Special:Captcha/help|émbaran lengkep]]):",
+ "captcha-createaccount-fail": "Sandi konfirmasina salah atawa can dieusian.",
+ "captcha-create": "Pikeun nyieun kacana, mangga eusian itungan di handap ieu ([[Special:Captcha/help|émbaran lengkep]]):",
+ "captchahelp-title": "Pitulung Captcha",
+ "captchahelp-text": "Ramatloka nu nampa tulisan ti masarakat umum kawas ieu wiki mindeng diganggu ku spammer nu maké pakakas otomatis pikeun midangkeun tumbu-tumbuna ka loba loka. Najan tumbu spam ieu bisa dihapus, ari loba-loba teuing mah matak nyapékeun.\n\nSometimes, especially when adding new web links to a page, the wiki may show you an image of colored or distorted text and ask you to type the words shown. Since this is a task that's hard to automate, it will allow most real humans to make their posts while stopping most spammers and other robotic attackers.\n\nUnfortunately this may inconvenience users with limited vision or using text-based or speech-based browsers. At the moment we do not have an audio alternative available. Please contact the site administrators for assistance if this is unexpectedly preventing you from making legitimate posts.\n\nYou will need to have cookies enabled in your browser for this to work.\n\nHit the 'back' button in your browser to return to the page editor.",
+ "right-skipcaptcha": "Ngalakonan pamicu captcha tanpa ngaliwatan Captcha"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/sv.json b/www/wiki/extensions/ConfirmEdit/i18n/sv.json
new file mode 100644
index 00000000..9c9e19ee
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/sv.json
@@ -0,0 +1,48 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ainali",
+ "Boivie",
+ "Lejonel",
+ "M.M.S.",
+ "MagnusA",
+ "Martinwiss",
+ "Per",
+ "Rotsee",
+ "WikiPhoenix",
+ "Lokal Profil",
+ "Jopparn",
+ "Josve05a"
+ ]
+ },
+ "captcha-edit": "För att redigera den här sidan måste du först lösa följande uppgift och skriva svaret i rutan ([[Special:Captcha/help|mer information]]):",
+ "captcha-edit-fail": "Felaktig eller saknad captcha.",
+ "captcha-desc": "Tillhandahåller CAPTCHA-metoder för att skydda mot spam och lösenordsgissning",
+ "captcha-label": "CAPTCHA",
+ "captcha-help": "Lösning på captchan.",
+ "captcha-info-help": "Beskrivning av captchan.",
+ "captcha-id-label": "CAPTCHA-ID",
+ "captcha-id-help": "Detta värde bör skickas tillbaka oförändrat.",
+ "captcha-addurl": "Din redigering inkluderar nya externa länkar.\nFör att skydda wikin mot automatisk spam måste du lösa följande uppgift och ange svaret i rutan ([[Special:Captcha/help|mer information]]):",
+ "captcha-badlogin": "För att skydda wikin mot försök att knäcka lösenord på automatisk väg, måste du lösa följande uppgift och ange svaret i rutan ([[Special:Captcha/help|mer information]]):",
+ "captcha-createaccount": "För att skydda wikin mot automatiskt skapade användarkonton, måste du lösa följande uppgift och ange svaret i rutan ([[Special:Captcha/help|mer information]]):",
+ "captcha-createaccount-fail": "Felaktig eller saknad CAPTCHA.",
+ "captcha-create": "För att skapa den här sidan måste du lösa följande uppgift och ange svaret i rutan ([[Special:Captcha/help|mer information]]):",
+ "captcha-sendemail": "För att skydda wikin mot automatiserad spam, ber vi dig att lösa följande uppgift och skriva in svaret i rutan ([[Special:Captcha/help|mer information]]):",
+ "captcha-sendemail-fail": "Felaktig eller saknad CAPTCHA.",
+ "captcha-disabledinapi": "Denna åtgärd kräver en CAPTCHA, så den kan inte utföras genom API:et.",
+ "captcha-error": "CAPTCHA-verifiering misslyckades p.g.a. ett internt fel: $1",
+ "captchahelp-title": "CAPTCHA-hjälp",
+ "captchahelp-cookies-needed": "Du måste ha kakor aktiverade i din webbläsare för att det här ska fungera.",
+ "captchahelp-text": "Webbplatser som tillåter inlägg från allmänheten, som den här wikin gör, missbrukas ofta av spammare som använder automatiserade verktyg för att lägga till länkar på många webbplatser.\nÄven om dessa spamlänkar kan tas bort är de till stort besvär.\n\nIbland, speciellt då du lägger till nya externa länkar på en sida, visar wikin en bild på en färgad eller förvriden text och ber dig skriva in orden som visas.\nEftersom detta är en uppgiften som är svår att automatisera, låter den de flesta riktiga människor göra sina redigeringar medan spammare och andra robotattacker stoppas.\n\nTyvärr kan det här orsaka problem för användare med nedsatt syn eller som använder text- eller talbaserade webbläsare.\nFör nävarande finns inga ljudbaserade alternativ tillgängliga.\nVänligen kontakta [[Special:ListAdmins|webbplatsens administratörer]] för hjälp om det här hindrar dig från att göra legitima ändringar.\n\nTryck på bakåtknappen i din webbläsare för att gå tillbaks till sidredigeringsläget.",
+ "captcha-addurl-whitelist": " #<!-- lämna denna rad precis som den är --> <pre>\n# Syntaxen är följande:\n# * Allting från ett \"#\"-tecken till slutet av en rad är en kommentar\n# * Varje icke-tom rad är ett fragment av ett reguljärt uttryck som endast matchar domänen i en URL\n #</pre> <!-- lämna denna rad precis som den är -->",
+ "right-skipcaptcha": "Utföra CAPTCHA-utlösande handlingar utan att behöva gå igenom CAPTCHA",
+ "captcha-apihelp-param-captchaword": "Svar till CAPTCHA",
+ "captcha-apihelp-param-captchaid": "CAPTCHA-ID från föregående begäran",
+ "confirmedit-preview-line": "Radnummer",
+ "confirmedit-preview-content": "Innehåll",
+ "confirmedit-preview-validity": "Giltighet",
+ "confirmedit-preview-valid": "giltig",
+ "confirmedit-preview-invalid": "ogiltig",
+ "confirmedit-preview-description": "Följande tabell visar listan över rader på denna sida och om det finns en giltig IP-adress eller IP-adressintervall. Om raden är en giltig IP-adress eller IP-adressintervall, kommer den att vitlistas från CAPTCHA men ogiltiga rader kommer att ignoreras. Ett exempel på ett ogiltigt IP-adressintervall är: 69.208.0.0/16 vilket går från 69.208.0.0 till 69.208.255.255. [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Range_blocks#Calculating_the_CIDR_suffix Mer information] om hur ett IP-adressintervall beräknas."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/sw.json b/www/wiki/extensions/ConfirmEdit/i18n/sw.json
new file mode 100644
index 00000000..343c2d9e
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/sw.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "Stephenwanjau"
+ ]
+ },
+ "captcha-label": "CAPTCHA",
+ "captchahelp-title": "Usaidizi wa CAPTCHA"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/szl.json b/www/wiki/extensions/ConfirmEdit/i18n/szl.json
new file mode 100644
index 00000000..6ec0983b
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/szl.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Krol111"
+ ]
+ },
+ "captcha-label": "CAPTCHA"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/ta.json b/www/wiki/extensions/ConfirmEdit/i18n/ta.json
new file mode 100644
index 00000000..89206acb
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/ta.json
@@ -0,0 +1,27 @@
+{
+ "@metadata": {
+ "authors": [
+ "Balajijagadesh",
+ "Karthi.dr",
+ "Shanmugamp7",
+ "செல்வா",
+ "மதனாஹரன்",
+ "ElangoRamanujam"
+ ]
+ },
+ "captcha-edit": "இப்பக்கத்தைத் தொகுப்பதற்குத் தயவு செய்து கீழேயுள்ள எளிய கூட்டலைத் தீர்த்துப் பெட்டியினுள் விடையை உள்ளிடவும் ([[Special:Captcha/help|கூடிய தகவல்]]):",
+ "captcha-label": "காப்ச்சா",
+ "captcha-addurl": "உங்கள் தொகுப்பானது புதிய வெளியிணைப்புகளைக் கொண்டுள்ளது.\nதானியங்கு எரிதத்திலிருந்து பாதுகாக்க உதவுவதற்காகத் தயவு செய்து கீழேயுள்ள எளிய கூட்டலைத் தீர்த்துப் பெட்டியில் விடையை உள்ளிடவும் ([[Special:Captcha/help|கூடிய தகவல்]]):",
+ "captcha-badlogin": "தானியங்கு கடவுச் சொல் உடைத்தலிலிருந்து பாதுகாக்க உதவுவதற்காகத் தயவு செய்து கீழேயுள்ள எளிய கூட்டலைத் தீர்த்துப் பெட்டியினுள் விடையை உள்ளிடவும் ([[Special:Captcha/help|கூடிய தகவல்]]):",
+ "captcha-createaccount": "தானியங்கு கணக்கு உருவாக்கத்திலிருந்து பாதுகாக்க உதவுவதற்காகத் தயவு செய்து கீழேயுள்ள எளிய கூட்டலைத் தீர்த்து விடையைப் பெட்டியினுள் உள்ளிடவும் ([[Special:Captcha/help|கூடிய தகவல்]]):",
+ "captcha-createaccount-fail": "தவறான அல்லது குறையுடைய உறுதிப்படுத்தல் குறியீடு.",
+ "captcha-create": "பக்கத்தை உருவாக்குவதற்குத் தயவு செய்து கீழேயுள்ள எளிய கூட்டலைத் தீர்த்துப் பெட்டியினுள் விடையை உள்ளிடவும் ([[Special:Captcha/help|கூடிய தகவல்]]):",
+ "captcha-sendemail-fail": "தவறான அல்லது குறையுடைய உறுதிப்படுத்தல் குறியீடு.",
+ "captcha-disabledinapi": "இச்செயற்பாட்டிற்கு காப்சா (நெளியெழுத்து) தேவை, ஆகவே இதனை ஏபிஐ (API) வழியாக செய்ய முடியாது.",
+ "captchahelp-title": "CAPTCHA உதவி",
+ "captchahelp-cookies-needed": "உங்கள் உலாவியில் நினைவிகளைச் செயல்படுத்தினால் தான் இது வேலை செய்யும்.",
+ "captchahelp-text": "பொதுமக்கள் பங்களிப்பைப் பெறும் இது போன்ற இணையத்தளங்கள் பல நேரங்களில் விசமிகளால் தவறாகப் பயன்படுத்தப்படுகின்றன. விசமிகள் தானியங்கி மூலம் தங்கள் இணைப்புகளைப் பதிவேற்றுகின்றனர். இவற்றை நீக்க முடியுமென்றாலும் இது ஒரு முக்கியமான தொல்லையே.\n\nஎனவே, சில நேரங்களில் விக்கியில் புதிய இணைய இணைப்பை நீங்கள் சேர்க்கும் போது உங்களுக்குக் காட்டப்படும் சற்று கோணலான அல்லது பல்வண்ண எண்ணெழுத்துப் படத்தை நீங்கள் சரியாகத் தட்டச்சு செய்ய வேண்டியிருக்கும். \n\nபார்வைக் குறைபாடு உடையோர், முதியோர் மற்றும் வெறும் வார்த்தைகள் அல்லது ஒலி அடிப்படையிலான உலாவிகளைப் பயன்படுத்துவோருக்கு இது துரதிஷ்டவசமாகத் தொல்லையளிக்கக் கூடும். \n\nஇச்சமயத்தில் எழுத்துகளுக்கான ஒலி மாற்று எங்களிடம் இல்லை. உங்களுக்கு ஏதேனும் உதவி தேவைப்பட்டால் [[Special:ListAdmins|site administrators]] ஐத் தொடர்பு கொள்ளவும். \n\nதொகுத்தல் பக்கத்திற்குச் செல்ல உங்கள் உலாவியில் “பின்செல்” பொத்தானை அழுத்தவும்.",
+ "confirmedit-preview-line": "வரி எண்",
+ "confirmedit-preview-content": "உள்ளடக்கம்",
+ "confirmedit-preview-valid": "செல்லத்தக்கது"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/tay.json b/www/wiki/extensions/ConfirmEdit/i18n/tay.json
new file mode 100644
index 00000000..473a5449
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/tay.json
@@ -0,0 +1,12 @@
+{
+ "@metadata": {
+ "authors": [
+ "Translatealcd",
+ "Hitaypayan"
+ ]
+ },
+ "captcha-label": "CAPTCHA",
+ "captcha-id-label": "Yencng mima ID",
+ "captcha-apihelp-param-captchaword": "Brwaniy quw yencng ma",
+ "confirmedit-preview-content": "Tay qsahuy"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/tcy.json b/www/wiki/extensions/ConfirmEdit/i18n/tcy.json
new file mode 100644
index 00000000..18745780
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/tcy.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "VASANTH S.N.",
+ "BHARATHESHA ALASANDEMAJALU"
+ ]
+ },
+ "captcha-label": "ಕ್ಯಾಪ್ಚಾ",
+ "confirmedit-preview-content": "ಪರಿವಿಡಿ",
+ "confirmedit-preview-invalid": "ಸರಿ ಇಜ್ಜಿ"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/te.json b/www/wiki/extensions/ConfirmEdit/i18n/te.json
new file mode 100644
index 00000000..10990c36
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/te.json
@@ -0,0 +1,24 @@
+{
+ "@metadata": {
+ "authors": [
+ "Chaduvari",
+ "Kiranmayee",
+ "Mpradeep",
+ "Veeven",
+ "రహ్మానుద్దీన్"
+ ]
+ },
+ "captcha-edit": "ఈ పేజీని సరిదిద్దడానికి, కింది ఇచ్చిన చిన్న లెక్కని చేసి జవాబుని పక్కనున్న పెట్టెలో టైపు చెయ్యండి ([[ప్రత్యేక:Captcha/help|మరింత సమాచారం]]):",
+ "captcha-desc": "సరళమైన అమకవేప అమలు",
+ "captcha-label": "క్యాప్చా",
+ "captcha-addurl": "మీ దిద్దుబాటులో కొత్త బయటి లింకులు ఉన్నాయి. ఆటోమేటెడ్ స్పాము నుండి రక్షించేందుకు గాను, కింద ఇచ్చిన లెక్క యొక్క జవాబును ఇక్కడున్న పెట్టెలో రాయండి ([[Special:Captcha/help|మరింత సహాయం]]):",
+ "captcha-badlogin": "పాసువోర్డును బాట్ల ద్వారా తెలుసుకోకుండా ఉండేందుకు, కింద ఇచ్చిన లెక్క యొక్క జవాబును ఇక్కడున్న పెట్టెలో రాయండి ([[Special:Captcha/help|మరింత సహాయం]]):",
+ "captcha-createaccount": "బాట్ల ద్వారా ఖాతాలను సృష్టించకుండా నిరోధించటానికి, కింద ఇచ్చిన లెక్క యొక్క జవాబును ఇక్కడున్న పెట్టెలో రాయండి ([[Special:Captcha/help|మరింత సహాయం]]):",
+ "captcha-createaccount-fail": "దృవీకరించుకోవడానికి విలువ ఇవ్వలేదు లేదా దానిని తప్పుగా ఇచ్చారు.",
+ "captcha-create": "కొత్తపేజీని సృష్టించడానికి, కింద ఇచ్చిన లెక్క యొక్క జవాబును ఇక్కడున్న పెట్టెలో రాయండి ([[Special:Captcha/help|మరింత సహాయం]]):",
+ "captchahelp-title": "ఆమకవేప సహాయం",
+ "captchahelp-cookies-needed": "ఇది పని చెయ్యాలంటే మీ బ్రౌజరులో కూకీలు సశక్తమై ఉండాలి.",
+ "captchahelp-text": "ప్రజలనుండి రచనలను స్వీకరించే ఈ వికీ వంటి వెబ్‌సైట్లు, ఆటోమాటిక్ ప్రోగ్రాములతో తమ స్వంత లింకులను చేర్చే స్పాము ముష్కరుల దాడులకు గురవడం తరచూ జరుగుతూ ఉంటుంది. ఆ లింకులను తీసేయడం పెద్ద విషయం కాకపోయినప్పటికీ, అవి తలనెప్పి అనేది మాత్రం నిజం.\n\nకొన్నిసార్లు, ముఖ్యంగా ఏదైనా పేజీ నుండి బయటకు లింకులు ఇచ్చేటపుడు, వంకర్లు తిరిగిపోయి ఉన్న పదాల బొమ్మను చూపించి ఆ పదాన్ని టైపు చెయ్యమని వికీ మిమ్మల్ని అడగవచ్చు. దీన్ని ఆటోమాటిక్ టూల్సుతో చెయ్యడం చాలా కష్టం కాబట్టి, స్పాము జిత్తులు చెల్లవు; మనుష్యులు మాత్రం మామూలుగానే చెయ్యగలరు.\n\nదురదృష్టవశాత్తూ, చూపు సరిగా లేనివారికి, టెక్స్టు బ్రౌజర్లు మాత్రమే వాడేవారికి ఇది అసౌకర్యం కలిగిస్తుంది. ప్రస్తుతానికి శబ్దం వినిపించే వెసులుబాటు మాకు లేదు. మీరు రచనలు చెయ్యకుండా ఇది అడ్డుపడుతుంటే, సహాయం కోసం సైటు నిర్వాహకుణ్ణి సంప్రదించండి.\nమీరు చెసే విలువయిన, సమ్మతమయిన వ్యాస మార్పులు భద్రపరచటము కుదరకపొతె, దయచేసి [[Special:ListAdmins|సైటు నిర్వహణాధికారి]]కి లేఖ రాయండి.\n\nమీ బ్రౌజర్లోని బ్యాక్(back) మీటను నొక్కి ఇంతకు ముందరి పేజీకి వెళ్ళండి.",
+ "captcha-addurl-whitelist": " #<!-- ఈ పంక్తిని ఉన్నదున్నట్లు ఇలాగే వదిలివేయండి --> <pre>\n# ఇక్కడ రాయాల్సిన విధానం ఇదీ:\n# * \"#\" అనే అక్షరం నుండి ఆ పంక్తి చివరివరకూ వ్యాఖ్యానం\n# * ఖాళీగా లేని ప్రతీ పంక్తీ ఒక regex భాగము, ఇది పేజీలో ఉన్న URLల్ల యొక్క హోస్టుతో మాత్రమే సరిచూడబడుతుంది\n #</pre> <!-- ఈ పంక్తిని ఉన్నదున్నట్లు ఇలాగే వదిలివేయండి -->",
+ "right-skipcaptcha": "ఆమకవేప ద్వారా పోకుండానే దాని ట్రిగ్గరు చర్యలను అమలు చెయ్యి"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/tg-cyrl.json b/www/wiki/extensions/ConfirmEdit/i18n/tg-cyrl.json
new file mode 100644
index 00000000..2acbd783
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/tg-cyrl.json
@@ -0,0 +1,19 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ibrahim",
+ "Matma Rex"
+ ]
+ },
+ "captcha-edit": "Барои вироиши ин мақола, лутфан ҳосили ҷамъи зеринро ҳисоб кунед ва натиҷаро дар ҷаъба ворид кунед ([[Special:Captcha/help|иттилооти бештар]]):",
+ "captcha-desc": "Татбиқи соддаи CAPTCHA",
+ "captcha-addurl": "Вироиши шумо пайвандҳои ҷадиди хориҷиро дар бар мегирад. Барои кӯмак ба пешгири аз ирсоли худкори ҳаразномаҳо, лутфан ҳосили ҷамъи зеринро ҳисоб кунед ва натиҷаро дар ҷаъба ворид кунед ([[Special:Captcha/help|иттилооти бештар]]):",
+ "captcha-badlogin": "Барои кӯмак ба пешгири аз шикастани калимаи убур, лутфан ҳосили ҷамъи зеринро ҳисоб кунед ва натиҷаро дар ҷаъба ворид кунед ([[Special:Captcha/help|иттилооти бештар]]):",
+ "captcha-createaccount": "Барои кӯмак ба пешгири аз эҷоди худкори ҳисоби корбарӣ, лутфан ҳосили ҷамъи зеринро ҳисоб кунед ва натиҷаро дар ҷаъба ворид кунед ([[Special:Captcha/help|иттилооти бештар]]):",
+ "captcha-createaccount-fail": "Коди таъйид нодуруст ё гумшуда.",
+ "captcha-create": "Барои эҷоди саҳифа, лутфан ҳосили ҷамъи зеринро ҳисоб кунед ва натиҷаро дар ҷаъба ворид кунед ([[Special:Captcha/help|иттилооти бештар]]):",
+ "captchahelp-title": "Роҳнамои Captcha",
+ "captchahelp-cookies-needed": "Барои кор кардани он, шумо бояд кукиҳои мурургаратонро фаъол кунед.",
+ "captchahelp-text": "Сомонаҳое, ки имкони тағйир тавассути ҳамагон дар онҳо вуҷуд дорад, монанди ин вики, гоҳ ё ногоҳ тавассути ҳаразнигориҳое, ки тавассути абзорҳои худкор пайванди худро дар чандин сомонаҳо мефиристанд, мавриди сӯъистифода қарор мегиранд.\n\nДар пораи аз маворид, ба вижа замоне, ки як пайванди интернетии ҷадид ба саҳифа изофа мешавад, вики метавонад, як тасвир аз ҳуруфи рангӣ ё матни бенурро ба шумо нишон бидиҳад ва аз шумо ворид кардани калимаи нишондодашударо пурсон мешавад. Ба хотири ин ки анҷоми ин кор ба шакли худкор душвор аст, ин амал ба аксари инсонҳое иҷозат медиҳад, ки ба ирсоли матолиб бипардозанд, дар ҳоле ки бештар роботҳои ҳамлакунанда ва ҳаразнигорҳоро мутавақиф мекунад.\n\nМутассифона ин равиш мумкин аст, корбароне, ки қувваи босираашон суст ё аз мурургарҳои матнӣ ё овозӣ истифода мекунанд, дучори маҳдудиятҳое бикунад. Дар ҳоли ҳозир ҳеҷ чойгузини савтӣ барои ин равиш мавҷуд нест. Чунончи ин масъала шуморо дучори маҳдудияте дур аз интизор дар ирсоли навиштаҳои миҷоз мекунад, бо мудирони сомона оиди кӯмак тамос бигиред.\n\nДар муругаратон тугмаи 'бозгашт'-ро бо пахш кардан ба саҳифаи вироишгар баргардед.",
+ "captcha-addurl-whitelist": " #<!-- ин сатрро ҳамон гуна, ки ҳаст раҳо кунед --> <pre>\n# Қоида ба ин шакл аст:\n# * Ҳама чиз аз \"#\" то охири сатр як тавзеҳ ба назар гирифта мешавад\n# * Ҳар сатре, ки холӣ набошад як қитъа дар назар гирифта мешавад, ки фақат бо номи мизбони интернетӣ санҷида мешавад\n #</pre> <!-- ин сатрро ҳамон гуна, ки ҳаст раҳо кунед-->"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/tg-latn.json b/www/wiki/extensions/ConfirmEdit/i18n/tg-latn.json
new file mode 100644
index 00000000..fc3f7d5b
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/tg-latn.json
@@ -0,0 +1,19 @@
+{
+ "@metadata": {
+ "authors": [
+ "Liangent",
+ "Matma Rex"
+ ]
+ },
+ "captcha-edit": "Baroi viroişi in maqola, lutfan hosili çam'i zerinro hisob kuned va natiçaro dar ça'ba vorid kuned ([[Special:Captcha/help|ittilooti beştar]]):",
+ "captcha-desc": "Tatbiqi soddai CAPTCHA",
+ "captcha-addurl": "Viroişi şumo pajvandhoi çadidi xoriçiro dar bar megirad. Baroi kūmak ba peşgiri az irsoli xudkori haraznomaho, lutfan hosili çam'i zerinro hisob kuned va natiçaro dar ça'ba vorid kuned ([[Special:Captcha/help|ittilooti beştar]]):",
+ "captcha-badlogin": "Baroi kūmak ba peşgiri az şikastani kalimai ubur, lutfan hosili çam'i zerinro hisob kuned va natiçaro dar ça'ba vorid kuned ([[Special:Captcha/help|ittilooti beştar]]):",
+ "captcha-createaccount": "Baroi kūmak ba peşgiri az eçodi xudkori hisobi korbarī, lutfan hosili çam'i zerinro hisob kuned va natiçaro dar ça'ba vorid kuned ([[Special:Captcha/help|ittilooti beştar]]):",
+ "captcha-createaccount-fail": "Kodi ta'jid nodurust jo gumşuda.",
+ "captcha-create": "Baroi eçodi sahifa, lutfan hosili çam'i zerinro hisob kuned va natiçaro dar ça'ba vorid kuned ([[Special:Captcha/help|ittilooti beştar]]):",
+ "captchahelp-title": "Rohnamoi Captcha",
+ "captchahelp-cookies-needed": "Baroi kor kardani on, şumo bojad kukihoi mururgaratonro fa'ol kuned.",
+ "captchahelp-text": "Somonahoe, ki imkoni taƣjir tavassuti hamagon dar onho vuçud dorad, monandi in viki, goh jo nogoh tavassuti haraznigorihoe, ki tavassuti abzorhoi xudkor pajvandi xudro dar candin somonaho mefiristand, mavridi sū'istifoda qaror megirand.\n\nDar porai az mavorid, ba viƶa zamone, ki jak pajvandi internetiji çadid ba sahifa izofa meşavad, viki metavonad, jak tasvir az hurufi rangī jo matni benurro ba şumo nişon bidihad va az şumo vorid kardani kalimai nişondodaşudaro purson meşavad. Ba xotiri in ki ançomi in kor ba şakli xudkor duşvor ast, in amal ba aksari insonhoe içozat medihad, ki ba irsoli matolib bipardozand, dar hole ki beştar robothoi hamlakunanda va haraznigorhoro mutavaqif mekunad.\n\nMutassifona in raviş mumkin ast, korbarone, ki quvvai bosiraaşon sust jo az mururgarhoi matnī jo ovozī istifoda mekunand, ducori mahdudijathoe bikunad. Dar holi hozir heç cojguzini savtī baroi in raviş mavçud nest. Cunonci in mas'ala şumoro ducori mahdudijate dur az intizor dar irsoli naviştahoi miçoz mekunad, bo mudironi somona oidi kūmak tamos bigired.\n\nDar murugaraton tugmai 'bozgaşt'-ro bo paxş kardan ba sahifai viroişgar bargarded.",
+ "captcha-addurl-whitelist": "#<!-- in satrro hamon guna, ki hast raho kuned --> <pre>\n# Qoida ba in şakl ast:\n# * Hama ciz az \"#\" to oxiri satr jak tavzeh ba nazar girifta meşavad\n# * Har satre, ki xolī naboşad jak qit'a dar nazar girifta meşavad, ki faqat bo nomi mizboni internetī sançida meşavad\n#</pre> <!-- in satrro hamon guna, ki hast raho kuned-->"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/th.json b/www/wiki/extensions/ConfirmEdit/i18n/th.json
new file mode 100644
index 00000000..34ffbad3
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/th.json
@@ -0,0 +1,20 @@
+{
+ "@metadata": {
+ "authors": [
+ "Passawuth",
+ "Horus",
+ "Octahedron80"
+ ]
+ },
+ "captcha-edit": "เพื่อที่จะแก้ไขหน้านี้ กรุณาตอบโจทย์ปัญหาทางคณิตศาสตร์ข้างล่าง และใส่คำตอบลงในกล่อง ([[Special:Captcha/help|รายละเอียดเพิ่มเติม]]) :",
+ "captcha-label": "แคปต์ชา",
+ "captcha-addurl": "การแก้ไขของคุณมีลิงก์็ไปยังเว็บไซต์ภายนอกด้วย\nเพื่อที่จะป้องกันสแปม กรุณาแก้โจทย์ด้านล่าง และพิมพ์คำตอบลงในกล่อง ([[Special:Captcha/help|รายละเอียด]]):",
+ "captcha-badlogin": "กรุณาแก้โจทย์ด้านล่าง และพิมพ์คำตอบลงในกล่อง เพื่อที่จะป้องกันกา่รแอบแฮครหัสผ่านโดยผู้ไม่หวังดี ([[Special:Captcha/help|รายละเอียด]]):",
+ "captcha-createaccount": "กรุณาแก้โจทย์ด้านล่าง และพิมพ์คำตอบลงในกล่อง เพื่อที่จะป้องกันการสร้างบัญชีผู้ใช้โดยผู้ไม่หวังดี ([[Special:Captcha/help|รายละเอียด]]):",
+ "captcha-createaccount-fail": "แคปท์ชาไม่ถูกต้องหรือยังไม่ได้กรอก",
+ "captcha-create": "กรุณาแก้โจทย์ด้านล่าง และพิมพ์คำตอบลงในกล่อง เพื่อที่จะสร้างหน้า\n([[Special:Captcha/help|รายละเอียด]]):",
+ "captcha-sendemail-fail": "แคปท์ชาไม่ถูกต้องหรือยังไม่ได้กรอก",
+ "captchahelp-title": "เกี่ยวกับแคปต์ชา",
+ "captchahelp-cookies-needed": "คุณต้องอนุญาตคุกกี้บนเว็บบราวเซอร์ของคุณ เพื่อที่คุณจะสามารถล็อกอินได้",
+ "captcha-addurl-whitelist": "#<!-- อย่าแก้ไขบรรทัดนี้ --> <pre>\n# วากยสัมพันธ์เป็นดังนี้:\n# * ทั้งหมดที่ขึ้นต้นด้วยอักขระ \"#\" จนสุดบรรทัดนั้นเป็นความเห็น\n# * ทุกบรรทัดที่ไม่ว่างเป็นส่วนนิพจน์ปรกติซึ่งจะจับคู่แม่ข่ายภายในยูอาร์แอล\n #</pre> <!-- อย่าแก้ไขบรรทัดนี้ -->"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/tk.json b/www/wiki/extensions/ConfirmEdit/i18n/tk.json
new file mode 100644
index 00000000..f3da4859
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/tk.json
@@ -0,0 +1,19 @@
+{
+ "@metadata": {
+ "authors": [
+ "Hanberke"
+ ]
+ },
+ "captcha-edit": "Bu sahypany redaktirlemek üçin, aşakdaky meselni çözüň we jogaby gutynyň içine ýazyň ([[Special:Captcha/help|jikme-jik]]):",
+ "captcha-desc": "Ýönekeý captcha ama aşyrylyşy",
+ "captcha-addurl": "Özgerdişiňizde täze daşarky çykgytlar bar.\nAwtomatik spamdan goranmak üçin, aşakdaky ýönekeý soraga jogap beriň we jogaby gutynyň içine ýazyň ([[Special:Captcha/help|giňişleýin maglumat]]):",
+ "captcha-badlogin": "Awtomat parol döwmeklikden goranmaga kömekleşmek üçin, aşakdaky meseläni çözüň we jogaby gutynyň içine ýazyň ([[Special:Captcha/help|jikme-jik]]):",
+ "captcha-createaccount": "Awtomat hasap döredilmeginden goranmaga kömekleşmek üçin, aşakdaky meseläni çözüň we jogaby gutynyň içine ýazyň ([[Special:Captcha/help|jikme-jik]]):",
+ "captcha-createaccount-fail": "Nädogry ýa-da kem tassyklama kody.",
+ "captcha-create": "Sahypany döretmek üçin, aşakdaky meseläni çözüň we jogaby gutynyň içine ýazyň ([[Special:Captcha/help|jikme-jik]]):",
+ "captcha-sendemail": "Awtomat spamdan goranmaga kömekleşmek üçin, aşakdaky meseläni çözüň we jogaby gutynyň içine ýazyň ([[Special:Captcha/help|giňişleýin maglumat]]):",
+ "captcha-sendemail-fail": "Nädogry ýa-da kem tassyklama kody.",
+ "captcha-disabledinapi": "Bu iş captcha talap edýär, şonuň üçin hem ony API bilen berjaý edip bolmaýar.",
+ "captchahelp-title": "Captcha ýardamy",
+ "captchahelp-cookies-needed": "Munuň işlemegi üçin brauzeriňiziň kukileri kabul etmegi gerek."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/tl.json b/www/wiki/extensions/ConfirmEdit/i18n/tl.json
new file mode 100644
index 00000000..4ece0f02
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/tl.json
@@ -0,0 +1,26 @@
+{
+ "@metadata": {
+ "authors": [
+ "AnakngAraw",
+ "Jojit fb",
+ "Leeheonjin"
+ ]
+ },
+ "captcha-edit": "Para magawaan ng pagbabago ang pahinang ito, pakisagot lamang ang payak na pagtutuos na nasa ibaba at ipasok ang sagot sa loob ng kahon ([[Special:Captcha/help|mas marami pang kabatiran]]):",
+ "captcha-edit-fail": "Di-tama o nawawalang CAPTCHA.",
+ "captcha-desc": "Nagbibigay ng mga pamamaraan ng CAPTCHA upang maisanggalang laban sa mga basurang email o spam at panghuhula ng password",
+ "captcha-label": "CAPTCHA",
+ "captcha-addurl": "Kasama sa mga pagbabagong ginawa mo ang bagong panlabas na mga kawing.\nUpang makatulong sa pagsasanggalang laban sa mga kusang dumarating na \"manlulusob\" (''spam''), pakisagot ang payak na pagtutuos sa ibaba at ipasok ang sagot sa loob ng kahon ([[Special:Captcha/help|mas marami pang kabatiran]]):",
+ "captcha-badlogin": "Upang makatulong sa pagsasanggalang laban sa mga kusang paglutas ng password, pakisagot lamang payak na kabuuan na nasa ibaba at ipasok ang sagot sa loob ng kahon ([[Special:Captcha/help|mas marami pang kabatiran]]):",
+ "captcha-createaccount": "Upang makatulong sa pagsasanggalang laban sa kusang paglikha ng account, pakisagot ang payak na kabuuan na nasa ibaba at ipasok ang sagot sa loob ng kahon ([[Special:Captcha/help|mas marami pang kabatiran]]):",
+ "captcha-createaccount-fail": "Hindi tama o nawawalang kodigo ng pagpapatotoo.",
+ "captcha-create": "Upang malikha ang pahina, pakisagot lamang ang payak na pagtutuos na nasa ibaba at ipasok ang sagot sa loob ng kahon ([[Special:Captcha/help|mas marami pang kabatiran]]):",
+ "captcha-sendemail": "Upang makatulong sa pagsasanggalang laban sa mga kusang pagsalakay ng ispam, pakisagot ang payak na pagtutuos na nasa ibaba at ipasok ang sagot sa loob ng kahong ([[Special:Captcha/help|mas marami pang kabatiran]]):",
+ "captcha-sendemail-fail": "Hindi tama o nawawalang kodigo ng pagpapatotoo.",
+ "captcha-disabledinapi": "Ang aksyon na ito ay nangangailangan ng isang captcha, kaya hindi ito maaring gawin sa pamamagitan ng API.",
+ "captchahelp-title": "Tulong na pangpagsusuring ''captcha''",
+ "captchahelp-cookies-needed": "Kinakailangan mong magkaroon ng mga gumaganang mga \"otap\" (''cookies'') sa loob ng pantingin-tingin (''browser'') mo upang maisagawa ito.",
+ "captchahelp-text": "Ang mga websayt na tumatanggap ng mga pagpapaskil mula sa madla, katulad ng wiking ito, ay kalimitang inaabuso ng mga tagapagpadala ng mga manlulusob na gumagamit ng kusang mga kagamitan upang makapagpaskil ng kanilang mga kawing sa maraming mga sityo.\nBagaman maaaring matanggal ang mga kawing na pangmanlulusob na ito, isa silang malaking abala.\n\nKung minsan, lalo na kapag nagdaragdag ng bagong mga kawing na pangweb sa isang pahina, maaaring magpakita sa iyo ang wiki ng isang larawan ng may kulay o may masamang hubog na teksto at hihilingin kang magmakinilya ng ipinapakitang mga salita.\nDahil sa isa itong gawaing mahirap na gawing kusa, napapahintulutan nito ang halos lahat ng mga tunay na tao upang magawa ang kanilang mga pagpapaskil habang pinipigil ang karamihan sa mga nagpapadala ng mga ispam' at iba pang mala-robot na mga manlulusob.\n\nSa kasawiang palad maaaring hindi makaginhawa ito sa mga tagagamit na may malabong paningin o gumagamit ng pangteksto o pangpagsasalitang mga pantingin-tingin.\nSa ngayon wala pa kaming pamalit na isang pangpandinig.\nMakipag-ugnayan lamang sa [[Special:ListAdmins|mga tagapangasiwa ng sityo]] para humingi ng tulong kapag hindi inaasahang mapigilan ka sa pagsasagawa ng mga tunay na pagpapaskil.\n\nPindutin ang pindutang 'bumalik' sa iyong pantingin-tingin upang makabalik sa pahinang pampatnugot.",
+ "captcha-addurl-whitelist": " #<!-- leave this line exactly as it is --> <pre>\n# Ang palaugnayan ay ayon sa mga sumusunod:\n# * Lahat ng bagay mula sa isang \"#\" na panitik hanggang sa wakas ng isang guhit/hanay ay isang puna (kumento)\n# * Bawat hindi/walang patlang na guhit/hanay ay isang piraso ng karaniwang pagsasaad (''regex'') na tutugma lamang sa mga tagapagpasinaya sa loob ng mga URL\n #</pre> <!-- leave this line exactly as it is -->",
+ "right-skipcaptcha": "Gawin ang mga galaw na nakapagsasanhi ng pagsusuring ''captcha'' na hindi kinakailangang dumaan sa ''captcha''"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/to.json b/www/wiki/extensions/ConfirmEdit/i18n/to.json
new file mode 100644
index 00000000..6f5e7ccd
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/to.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Fanjiayi"
+ ]
+ },
+ "captcha-label": "CAPTCHA"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/tr.json b/www/wiki/extensions/ConfirmEdit/i18n/tr.json
new file mode 100644
index 00000000..dffb4abf
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/tr.json
@@ -0,0 +1,29 @@
+{
+ "@metadata": {
+ "authors": [
+ "Emperyan",
+ "Joseph",
+ "Runningfridgesrule",
+ "Stultiwikia",
+ "HakanIST",
+ "Sadrettin"
+ ]
+ },
+ "captcha-edit": "Bu sayfayı değiştirebilmek için lütfen aşağıdaki basit soruyu yanıtlayın ve yanıtı kutunun içine yazın ([[Special:Captcha/help|ayrıntılı bilgi]]):",
+ "captcha-edit-fail": "Yanlış veya eksik CAPTCHA",
+ "captcha-desc": "Spam ve parola tahminine karşı korunmak için \"Güvenlik Kodu\" (CAPTCHA) tekniği sağlar.",
+ "captcha-label": "CAPTCHA",
+ "captcha-addurl": "Değişikliğiniz yeni dış bağlantılar içeriyor.\nVikiyi otomatik spamdan korumak ve değişikliğinizi kaydetmek için, aşağıdaki basit toplamı çözmenizi ve yanıtı kutunun içine yazmanızı rica ediyoruz ([[Special:Captcha/help|ayrıntılı bilgi]]):",
+ "captcha-badlogin": "Vikiyi otomatik parola çözülmesine karşı korumak için, aşağıdaki basit toplamı çözmenizi ve yanıtı kutunun içine yazmanızı rica ediyoruz ([[Special:Captcha/help|ayrıntılı bilgi]]):",
+ "captcha-createaccount": "Vikiyi otomatik hesap oluşturmaya karşı korumak için, aşağıdaki basit toplamı çözmenizi ve yanıtı kutunun içine yazmanızı rica ediyoruz ([[Special:Captcha/help|ayrıntılı bilgi]]):",
+ "captcha-createaccount-fail": "Hatalı ya da eksik CAPTCHA.",
+ "captcha-create": "Bu sayfayı oluşturmak için, lütfen aşağıdaki basit soruyu yanıtlayın ve kutunun içinde yanıtı yazın ([[Special:Captcha/help|ayrıntılı bilgi]]):",
+ "captcha-sendemail": "Vikiyi otomatik spamlara karşı korumaya yardımcı olmak için, aşağıdaki basit toplamı çözmenizi ve yanıtı kutunun içine yazmanızı rica ediyoruz ([[Special:Captcha/help|ayrıntılı bilgi]]):",
+ "captcha-sendemail-fail": "Hatalı ya da eksik CAPTCHA.",
+ "captcha-disabledinapi": "Bu eylem güvenlik kodu gerektiriyor, dolayısıyla API aracılığıyla yapılamaz.",
+ "captchahelp-title": "Güvenlik kodu yardımı",
+ "captchahelp-cookies-needed": "Bunun çalışabilmesi için tarayıcınızın çerezleri etkinleştirilmelidir.",
+ "captchahelp-text": "Bu viki gibi açık katılım siteleri, pek çok siteye bağlantılar yaratan otomatik araçlarını çalıştıran spamcıların saldırılarına sıklıkla maruz kalırlar.\nBu spam nitelikli bağlantılar silinebilir, fakat bu temizlik önemli bir iş yükü oluşturmaktadır.\n\nBazen, özellikle bir başka internet sitesine bağlantı eklerken, görünümü bozulmuş ve renklendirilmiş harflerden oluşan bir resim gösterilebilir ve sizden bu harfleri kutucuğa girmenizi istenir.\nBu işlem otomatik olarak yaoılması oldukça zor bir iş olduğu için, gerçek insanlar bu işlemi yerine getirebilirken, spam yapmaya yarayan araçlar bunu yapmakta zorlanacaklardır.\n\nNe var ki bu durum, görme sorunları yaşayan kişiler ve salt metin tabanlı ya da salt ses tabanlı internet tarayıcı programları kullanan kimseler için rahatsızlık yaratmaktadır. Ne yazık ki, şu an için sesli bir alternatifimiz bulunmamaktadır.\nEğer bu, sizin geçerli gönderiler yapmanıza beklenmedik bir şekilde engel oluyorsa, lütfen destek için [[Special:ListAdmins|site yöneticileriyle]] irtibata geçin.\n\nSayfa düzenleyiciye dönmek için tarayıcınızın 'geri' tuşuna basınız.",
+ "captcha-addurl-whitelist": " #<!-- bu satırı olduğu gibi bırakın --> <pre>\n# Sözdizimi aşağıdaki gibidir:\n# * \"#\" karakterinden satır sonuna kadar her şey yorumdur\n# * Her boş olmayan satır, URL'ler içinde sadece host ile eşleşen regex parçalarıdır\n #</pre> <!-- bu satırı olduğu gibi bırakın -->",
+ "right-skipcaptcha": "Güvenlik kodu ile tetiklenen hareketleri, güvenlik kodunu geçme zorunluluğu olmadan yap"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/tru.json b/www/wiki/extensions/ConfirmEdit/i18n/tru.json
new file mode 100644
index 00000000..4358718d
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/tru.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ariyo"
+ ]
+ },
+ "captcha-label": "CAPTCHA"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/tt-cyrl.json b/www/wiki/extensions/ConfirmEdit/i18n/tt-cyrl.json
new file mode 100644
index 00000000..373f7494
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/tt-cyrl.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ильнар"
+ ]
+ },
+ "captcha-label": "CAPTCHA"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/udm.json b/www/wiki/extensions/ConfirmEdit/i18n/udm.json
new file mode 100644
index 00000000..80d12364
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/udm.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Wadorgurt"
+ ]
+ },
+ "captcha-label": "CAPTCHA"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/ug-arab.json b/www/wiki/extensions/ConfirmEdit/i18n/ug-arab.json
new file mode 100644
index 00000000..6c5c3477
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/ug-arab.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Uzdil"
+ ]
+ },
+ "captcha-label": "تەستىق كودى"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/uk.json b/www/wiki/extensions/ConfirmEdit/i18n/uk.json
new file mode 100644
index 00000000..8fcbdd33
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/uk.json
@@ -0,0 +1,47 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ahonc",
+ "Alex Khimich",
+ "Andriykopanytsia",
+ "NickK",
+ "Olvin",
+ "Riwnodennyk",
+ "Ата",
+ "Тест",
+ "Piramidion",
+ "Base",
+ "Максим Підліснюк"
+ ]
+ },
+ "captcha-edit": "Щоб відредагувати цю сторінку, будь ласка, розв'яжіть подану задачу і введіть відповідь у текстове поле ([[Special:Captcha/help|докладніше]]):",
+ "captcha-edit-fail": "Неправильна або відсутня капча.",
+ "captcha-desc": "Забезпечує методи CAPTCHA для захисту від спаму і підбору пароля",
+ "captcha-label": "CAPTCHA",
+ "captcha-help": "Вирішення CAPTCHA.",
+ "captcha-info-help": "Опис CAPTCHA",
+ "captcha-id-label": "Ідентифікатор CAPTCHA",
+ "captcha-id-help": "Це значення повинно надсилатись назад незміненим.",
+ "captcha-addurl": "Ви додали нові посилання на зовнішні сайти.\nІз метою захисту від автоматичного спаму, будь ласка, розв'яжіть подану задачу і введіть відповідь у текстове поле, щоб редагування було збережене ([[Special:Captcha/help|докладніше]]):",
+ "captcha-badlogin": "Із метою захисту від автоматичного злому пароля, будь ласка, розв'яжіть подану задачу і введіть відповідь у текстове поле ([[Special:Captcha/help|докладніше]]):",
+ "captcha-createaccount": "Із метою захисту від автоматичного створення облікового запису просимо Вас розв'язати подану задачу і ввести відповідь у текстове поле ([[Special:Captcha/help|докладніше]]):",
+ "captcha-createaccount-fail": "Неправильна або відсутня капча.",
+ "captcha-create": "Щоб створити сторінку, будь ласка, розв'яжіть подану задачу і введіть відповідь у текстове поле ([[Special:Captcha/help|докладніше]]):",
+ "captcha-sendemail": "Із метою захисту вікі від автоматичного спаму просимо розв'язати подану задачу і ввести відповідь ([[Special:Captcha/help|деталі]]):",
+ "captcha-sendemail-fail": "Неправильна або відсутня капча.",
+ "captcha-disabledinapi": "Ця дія потребує перевірки CAPTCHA, тому не може бути здійснена за допомогою API.",
+ "captcha-error": "Перевірка за CAPTCHA провалилась через внутрішню помилку: $1",
+ "captchahelp-title": "Довідка про CAPTCHA",
+ "captchahelp-cookies-needed": "Вам потрібно ввімкнути куки у браузері, щоб ця функція запрацювала.",
+ "captchahelp-text": "Веб-сайти, що дозволяють додавати або змінювати свій вміст, у тому числі вікі, часто стають ціллю спамерів, які використовують програми для автоматичного додавання посилань.\nХоча такі посилання і можуть бути вилучені, вони є істотною вадою.\n\nІноді, наприклад при додаванні на сторінку нового веб-посилання, вікі може показати вам картинку з кольоровим або спотвореним текстом і запропонувати ввести текст, який ви бачите.\nОскільки подібну задачу важко автоматизувати, це дає можливість більшості людей робити свої зміни, в той час як більшість спамерських і вандальних програм не можуть цього зробити.\n\nНа жаль, подібний захист може спричинити незручності для людей із вадами зору. Зараз у нас нема звукової альтернативи для такої перевірки. Будь ласка, зверніться по допомогу до [[Special:ListAdmins|адміністраторів]], якщо подібна перевірка заважає вам добросовісно працювати з сайтом.\n\nНатисніть кнопку «Назад» у вашому браузері, щоб повернутися до редагування.",
+ "captcha-addurl-whitelist": "#<!-- leave this line exactly as it is --> <pre>\n# Опис синтаксису:\n# * Все, що починається з символу \"#\" до кінця рядка, вважається коментарем\n# * Кожний непорожній рядок вважається фрагментом регулярного виразу відповідної назви вузла в URL\n #</pre> <!-- leave this line exactly as it is -->",
+ "right-skipcaptcha": "виконання дій, що вимагають CAPTCHA-перевірки, без проходження CAPTCHA",
+ "captcha-apihelp-param-captchaword": "Відповідь на CAPTCHA",
+ "captcha-apihelp-param-captchaid": "Ідентифікатор CAPTCHA з попереднього запиту",
+ "confirmedit-preview-line": "Номер рядка",
+ "confirmedit-preview-content": "Вміст",
+ "confirmedit-preview-validity": "Перевірка",
+ "confirmedit-preview-valid": "дійсна",
+ "confirmedit-preview-invalid": "недійсна",
+ "confirmedit-preview-description": "Подана таблиця відображає список рядків на цій сторінці, і чи це дійсна IP-адреси, чи діапазон IP-адрес. Якщо рядок є дійсною IP-адресою або діапазоном, він потрапить у білий список для CAPTCHA, тоді як недійсні адреси будуть проігноровані. Прикладом дійсного діапазону IP-адрес може бути: 69.208.0.0/16, який починається з 69.208.0.0 і закінчується 69.208.255.255. [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Range_blocks#Calculating_the_CIDR_suffix Більше інформації] про вираховування діапазону IP-адрес."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/ur.json b/www/wiki/extensions/ConfirmEdit/i18n/ur.json
new file mode 100644
index 00000000..0a4c7ae6
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/ur.json
@@ -0,0 +1,31 @@
+{
+ "@metadata": {
+ "authors": [
+ "عثمان خان شاہ",
+ "Muhammad Shuaib"
+ ]
+ },
+ "captcha-edit": "اس صفحہ میں ترمیم کرنے کے لیے ذیل میں موجود سوال کو حل کریں اور اس کا جواب تحریر کریں ([[Special:Captcha/help|مزید تفصیل]]):",
+ "captcha-edit-fail": "نادرست یا غیر موجود کیپچا",
+ "captcha-label": "کیپچا",
+ "captcha-help": "کیپچا کا حل",
+ "captcha-info-help": "کیپچا کی وضاحت",
+ "captcha-id-label": "کیپچا کا شناختی نمبر",
+ "captcha-addurl": "آپ کی ترمیم میں بیرونی روابط شامل ہیں۔\nویکی کو خودکار فاضل کاری سے محفوظ رکھنے کے خاطر آپ کی اس ترمیم کو محفوظ کرنے کے لیے ہماری آپ سے درخواست ہے کہ ذیل میں موجود سوال کو حل کرکے اس کا جواب تحریر کریں ([[Special:Captcha/help|مزید تفصیل]]):",
+ "captcha-badlogin": "ویکی کو خودکار پاس ورڈ چوری سے محفوظ رکھنے کے خاطر ہماری آپ سے درخواست ہے کہ ذیل میں موجود سوال کو حل کرکے اس کا جواب تحریر کریں ([[Special:Captcha/help|مزید تفصیل]]):",
+ "captcha-createaccount": "ویکی کو خودکار تخلیق کھاتہ سے محفوظ رکھنے کے خاطر ہماری آپ سے درخواست ہے کہ ذیل میں موجود سوال کو حل کرکے اس کا جواب تحریر کریں ([[Special:Captcha/help|مزید تفصیل]]):",
+ "captcha-createaccount-fail": "کیپچا نادرست یا غیر موجود",
+ "captcha-create": "اس صفحہ کو بنانے کے لیے براہ کرم ذیل میں موجود سوال حل کرکے اس کا جواب تحریر کریں ([[Special:Captcha/help|مزید تفصیل]]):",
+ "captcha-sendemail": "ویکی کو خودکار فاضل کاری سے محفوظ رکھنے کے خاطر ہماری آپ سے درخواست ہے کہ ذیل میں موجود سوال کو حل کرکے اس کا جواب تحریر کریں ([[Special:Captcha/help|مزید تفصیل]]):",
+ "captcha-sendemail-fail": "کیپچا نادرست یا غیر موجود",
+ "captcha-error": "کسی داخلی نقص کی بنا پر کیپچا کی تصدیق ناکام رہی: $1",
+ "captchahelp-title": "معاونت کیپچا",
+ "captchahelp-cookies-needed": "اسے انجام دینے کے لیے آپ کو اپنے براؤزر کے کوکیز فعال کرنا ہوگا۔",
+ "right-skipcaptcha": " کیپچا سے گزرے بغیر کیپچا فعال کرنے والے اقدمات کی انجام دہی",
+ "captcha-apihelp-param-captchaword": "کیپچا کا جواب دیں",
+ "confirmedit-preview-line": "سطر نمبر",
+ "confirmedit-preview-content": "مندرجات",
+ "confirmedit-preview-validity": "معتبریت",
+ "confirmedit-preview-valid": "معتبر",
+ "confirmedit-preview-invalid": "غیر معتبر"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/uz.json b/www/wiki/extensions/ConfirmEdit/i18n/uz.json
new file mode 100644
index 00000000..8aa9337f
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/uz.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Sociologist"
+ ]
+ },
+ "captcha-label": "CAPTCHA"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/vec.json b/www/wiki/extensions/ConfirmEdit/i18n/vec.json
new file mode 100644
index 00000000..27dd98f5
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/vec.json
@@ -0,0 +1,24 @@
+{
+ "@metadata": {
+ "authors": [
+ "Candalua",
+ "GatoSelvadego"
+ ]
+ },
+ "captcha-edit": "Par modificar la pagina te ghè da risòlvar sto senplice calcolo presentà de seguito e inserir el risultato ne la casela\n([[Special:Captcha/help|magiori informazion]]):",
+ "captcha-desc": "Fornise teniche CAPTCHA pa' ła protesion contro el spam e l'individuasion de łe password",
+ "captcha-label": "CAPTCHA",
+ "captcha-addurl": "Ła modifega dimandà xonta de i novi ligamenti foresti a ła pàjina; come mixura precausionałe contro 'l inserimento automatego de spam, se prega de risolvare el senplise calcoło prexentà de seguito e inserir el rexultà inte ła caxeła ([[Special:Captcha/help|come funsiona?]]):",
+ "captcha-badlogin": "Come misura precausionałe contro i tentativi de forzadura automatega de ła password, se prega de risolvare el senplise calcoło prexentà de seguito e inserir el rexultà inte ła caxeła ([[Special:Captcha/help|come funsiona?]]):",
+ "captcha-createaccount": "Come mixura precausionałe contro i tentativi de creasion automatega de i account, se prega de risolvare el senplise calcoło prexentà de seguito e inserir el rexultà inte ła caxeła ([[Special:Captcha/help|come funsiona?]]):",
+ "captcha-createaccount-fail": "Codice de verifica sbaglià o mancante.",
+ "captcha-create": "Per crear la pagina te ghè da risòlvar sto senplice calcolo presentà de seguito e inserir el risultato ne la casela ([[Special:Captcha/help|magiori informazion]]):",
+ "captcha-sendemail": "Come mixura precausionałe contro i mesaji de spam automatesi, se prega de risolvare el senplise calcoło prexentà de seguito e inserir el rexultà inte ła caxeła ([[Special:Captcha/help|come funsiona?]]):",
+ "captcha-sendemail-fail": "Codice de verifica sbaglià o mancante.",
+ "captcha-disabledinapi": "Sta azion la richiede un captcha, quindi no se pole farla tramite API.",
+ "captchahelp-title": "Coss'èlo sto captcha?",
+ "captchahelp-cookies-needed": "Te ghè da verghe i cookies abilità sul to browser par proseguir.",
+ "captchahelp-text": "Sucéde spesso che i siti web che i acèta messagi publici, come sta wiki, i sia tolti de mira da spammer che dòpara strumenti automatici par inserir colegamenti publicitari verso un gran nùmaro de siti. Anca se i colegamenti insiderài i se pol cavar, se trata comunque de na secadura mìa da póco.\n\nIn çerti casi, par esenpio quando se çerca de zontar novi colegamenti web in te na pagina, el software wiki el pol mostrar na imagine con un breve testo colorà e/o distorto, domandàndoghe a l'utente de riscrìvarlo drento na casela fata aposta. Sicome i computer no i xe mìa boni de replicar a la perfezion sta azion, sto mecanismo el ghe consente a (quasi tuti) i utenti reali de conpletar l'inserimento che i volea, inpedéndoghe l'acesso a la magior parte dei spammer e dei altri atachi automatizà.\n\nSfortunatamente, ste misure de sicureza le pole métar in dificoltà i utenti che gà problemi de vista o quei che dòpara browser testuali o basà su la sintesi vocale. Purtropo al momento no xe disponibile nissun mecanismo alternativo basà su messagio audio; se ste procedure le inpedisse l'inserimento de informazion che se ritien legìtime, se prega de contatar i [[Special:ListAdmins|aministradori del sito]] e domandarghe assistensa.\n\nStruca el boton \"Indrìo\" del to browser par tornar a la pagina de modifica.",
+ "captcha-addurl-whitelist": " #<!-- no sta modificar in alcun modo sta riga --> <pre>\n# La sintassi la xe la seguente:\n# * Tuto quel che segue un caràtere \"#\" el xe un comento, fin a la fine de la riga\n# * Tute le righe mìa vode le xe framenti de espressioni regolari che se àplica al solo nome de l'host ne le URL\n #</pre> <!-- no sta modificar in alcun modo sta riga -->",
+ "right-skipcaptcha": "Esegui le funsion de triggering del captcha sensa passar par el captcha"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/vep.json b/www/wiki/extensions/ConfirmEdit/i18n/vep.json
new file mode 100644
index 00000000..34013b98
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/vep.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Игорь Бродский"
+ ]
+ },
+ "captcha-label": "CAPTCHA"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/vi.json b/www/wiki/extensions/ConfirmEdit/i18n/vi.json
new file mode 100644
index 00000000..b71748b6
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/vi.json
@@ -0,0 +1,36 @@
+{
+ "@metadata": {
+ "authors": [
+ "Minh Nguyen",
+ "Vinhtantran",
+ "Nguyên Lê"
+ ]
+ },
+ "captcha-edit": "Để sửa đổi trang này, xin hãy giải phép cộng đơn giản dưới đây và gõ câu trả lời vào ô ([[Special:Captcha/help|thông tin thêm]]):",
+ "captcha-edit-fail": "CAPTCHA bị thiếu hoặc không chính xác.",
+ "captcha-desc": "Chống spam và sự đoán mật khẩu dùng CAPTCHA",
+ "captcha-label": "CAPTCHA",
+ "captcha-id-label": "ID CAPTCHA",
+ "captcha-id-help": "Giá trị này phải được gửi lại không thay đổi.",
+ "captcha-addurl": "Sửa đổi của bạn có chứa các liên kết ra bên ngoài. Để tránh spam tự động trong wiki, xin bạn vui lòng giải phép toán đơn giản ở dưới và nhập kết quả vào ô để lưu giữ các sửa đổi của bạn ([[Special:Captcha/help|thông tin thêm]]):",
+ "captcha-badlogin": "Để tránh vụ tự động bẻ mật khẩu của người dùng wiki, xin bạn vui lòng giải phép cộng đơn giản ở dưới và nhập kết quả vào ô ([[Special:Captcha/help|thông tin thêm]]):",
+ "captcha-createaccount": "Để tránh vụ tự động mở tài khoản trong wiki, xin bạn vui lòng giải phép cộng đơn giản ở dưới và nhập kết quả vào ô ([[Special:Captcha/help|thông tin thêm]]):",
+ "captcha-createaccount-fail": "CAPTCHA bị thiếu hoặc không chính xác.",
+ "captcha-create": "Để tạo mới trang, xin hãy giải phép cộng đơn giản ở dưới và gõ\ncâu trả lời vào ô ([[Special:Captcha/help|thông tin thêm]]):",
+ "captcha-sendemail": "Để xác nhận rằng bạn không phải là tay spam, xin bạn vui lòng giải phép cộng đơn giản ở dưới và nhập kết quả vào ô ([[Special:Captcha/help|thông tin thêm]]):",
+ "captcha-sendemail-fail": "CAPTCHA bị thiếu hoặc không chính xác.",
+ "captcha-disabledinapi": "Tác vụ này đòi người dùng giải CAPTCHA trước tiên, nên không thể thực hiện nó qua API.",
+ "captcha-error": "Thất bại khi xác minh CAPTCHA vì lỗi nội bộ: $1",
+ "captchahelp-title": "Trợ giúp Captcha",
+ "captchahelp-cookies-needed": "Bạn cần phải bật cookie trong trình duyệt để chức năng này hoạt động được.",
+ "captchahelp-text": "Những website cho phép bất kỳ ai cũng có thể gửi thông tin, như wiki này, thường bị các tay spam dùng công cụ tự động để gửi các liên kết của họ tới rất nhiều trang.\nTuy chúng ta có thể xóa các liên kết này khỏi trang, chúng vẫn gây nhiều phiền toái.\n\nĐôi khi, nhất là khi bạn bổ sung liên kết mới vào trang, wiki có thể hiển thị một hình có chữ dạng màu mè và méo mó rồi yêu cầu bạn gõ lại các chữ trong hình này.\nDo các phần mềm tự động khó đọc những hình này, nên mọi người bình thường có thể tiếp tục gửi thông tin, mà vẫn chặn được các spam và robot phá hoại.\n\nTuy vậy, tính năng này có thể bất tiện đối với những độc giả có thị giác yếu hay đang sử dụng trình duyệt bằng văn bản thuần hay trình duyệt bằng tiếng nói.\nHiện tại chúng tôi chưa có chức năng phát âm thay thế.\nXin hãy liên lạc với [[Special:ListAdmins|người quản trị trang web]] để được trợ giúp nếu điều này vô tình ngăn cản bạn đóng góp nội dung tốt.\n\nNhấn chuột vào nút “Back” của trình duyệt để trở lại trang soạn thảo.",
+ "captcha-addurl-whitelist": " #<!-- xin để dòng này đừng thay đổi --> <pre>\n# Cú pháp như sau:\n# * Mọi thứ bắt đầu bằng ký tự “#” là lời chú thích\n# * Mọi hàng không trắng là một đoạn biểu thức chính quy (regex) sẽ chỉ được so trùng với tên máy chủ trong URL\n #</pre> <!-- xin để dòng này đừng thay đổi -->",
+ "right-skipcaptcha": "Tự động bỏ qua các hình CAPTCHA",
+ "captcha-apihelp-param-captchaword": "Lời giải đúng của CAPTCHA",
+ "captcha-apihelp-param-captchaid": "ID CAPTCHA từ yêu cầu truớc",
+ "confirmedit-preview-line": "Số dòng",
+ "confirmedit-preview-content": "Nội dung",
+ "confirmedit-preview-validity": "Tính hợp lệ",
+ "confirmedit-preview-valid": "hợp lệ",
+ "confirmedit-preview-invalid": "không hợp lệ"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/vo.json b/www/wiki/extensions/ConfirmEdit/i18n/vo.json
new file mode 100644
index 00000000..b0b0c9c4
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/vo.json
@@ -0,0 +1,17 @@
+{
+ "@metadata": {
+ "authors": [
+ "Malafaya",
+ "Smeira"
+ ]
+ },
+ "captcha-edit": "Ad redakön yegedi at, dunolös, begö! saedami dono e penolös saedoti in bokil ([[Special:Captcha/help|nüns pluik]]):",
+ "captcha-addurl": "Redakam olik keninükon yümis plödik nulik.\nAd jelön siti ta peneds badik itjäfidik, dunolös, begö! saedami balugik sököl, e penolös saedoti in bokil ad dakipön redakam ola ([[Special:Captcha/help|nüns pluik]]):",
+ "captcha-badlogin": "Ad jelön siti ta daget itjäfidik letavödas, dunolös, begö! saedami sököl e penolös saedoti in bokil ([[Special:Captcha/help|nüns pluik]]):",
+ "captcha-createaccount": "Ad jelön siti ta kalijafam itjäfidik, dunolös, begö! saedami sököl e penolös saedoti in bokil ([[Special:Captcha/help|nüns pluik]]):",
+ "captcha-createaccount-fail": "Kot fümükama paneveräton u paseleton.",
+ "captcha-create": "Ad jafön padi, dunolös saedami balugik dono e penolös saedoti in bokil ([[Special:Captcha/help|nüns pluik]]):",
+ "captchahelp-title": "Yuf ela Captcha",
+ "captchahelp-cookies-needed": "Nedol mögükön „kekilis“ bevüresodanaföme olik ad dunön atosi.",
+ "captcha-addurl-whitelist": " #<!-- leave this line exactly as it is --> <pre>\n# Süntag binon sökölos:\n# * Valikos de malat: „#“ jü fin liena binon küpet\n# * Lien no vägik alik binon brekot: „regex“, kel poleigodon te ko vöds ninü els URLs\n #</pre> <!-- leave this line exactly as it is -->"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/vro.json b/www/wiki/extensions/ConfirmEdit/i18n/vro.json
new file mode 100644
index 00000000..ee27780d
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/vro.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Võrok"
+ ]
+ },
+ "captcha-label": "CAPTCHA"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/wa.json b/www/wiki/extensions/ConfirmEdit/i18n/wa.json
new file mode 100644
index 00000000..2157fc2a
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/wa.json
@@ -0,0 +1,27 @@
+{
+ "@metadata": {
+ "authors": [
+ "BrokenArrow",
+ "Srtxg"
+ ]
+ },
+ "captcha-edit": "Po candjî cisse pådje ci, vos dvoz fé l' carcul simpe chal pa dzo eyet scrire li rzultat dins l' boesse ([[Special:Captcha/help|pus di racsegnes]]):",
+ "captcha-edit-fail": "Côde d' acertinaedje (CAPTCHA) ki manke ou nén corek.",
+ "captcha-desc": "Fornixh des tecnikes di waerantixhaedje pa passete d' acertinaedje (''captcha'') siconte les spams et les sayes d' advinaedje di screts.",
+ "captcha-label": "Côde d' acertinaedje (CAPTCHA)",
+ "captcha-addurl": "Dins vos candjmints i gn a des dfoûtrinnès hårdêyes (URL).\nPo mete li wiki a houte des robots di spam, nos vs dimandans di bén vleur acertiner ki vos estoz bén ene djin, po çoula dinez l' rizultat di ç' carcul simpe ci po poleur schaper l' pådje ([[Special:Captcha/help|pus di racsegnes]]):",
+ "captcha-badlogin": "Po mete li wiki a houte des des robots ki sayèt d' adviner les screts, nos vs dimandans d' bén vleur acertiner ki vos estoz bén ene djin, po çoula dinez l' rizultat di ç' carcul simpe ci ([[Special:Captcha/help|pus di racsegnes]]):",
+ "captcha-createaccount": "Po mete li wiki a houte des des robots k' ahivèt des contes otomaticmint, nos vs dimandans d' bén vleur acertiner ki vos estoz bén ene djin, po çoula dinez l' rizultat di ç' carcul simpe ci ([[Special:Captcha/help|pus di racsegnes]]):",
+ "captcha-createaccount-fail": "Li côde d' acertinaedje (CAPTCHA) est incorek ou mancant.",
+ "captcha-create": "Por vos poleur ahiver l' pådje, metoz dins l' boesse li rzultat do carcul simpe chal pa dzo ([[Special:Captcha/help|pus di racsegnes]]):",
+ "captcha-sendemail": "Po mete li wiki a houte des des robots di spam, nos vs dimandans d' bén vleur acertiner ki vos estoz bén ene djin, po çoula dinez l' rizultat di ç' carcul simpe ci ([[Special:Captcha/help|pus di racsegnes]]):",
+ "captcha-sendemail-fail": "Côde d' acertinaedje (CAPTCHA) ki manke ou nén corek.",
+ "captcha-disabledinapi": "Cisse accion a mezåjhe d' aveuri ene passete d' acertinaedje (captcha), ça fwait ki ça n' pout nén esse fwait åd triviè d' l' API.",
+ "captchahelp-title": "Aidance passete d' acertinaedje",
+ "captchahelp-cookies-needed": "Vos dvoz aveur les coûkes en alaedje so vosse betchteu waibe po k' ça rote.",
+ "captchahelp-text": "Les waibes k' acceptèt des messaedjes do publik, come ci wiki chal, sont sovint eployîs pa des må-fjhants spameus, po pleur mete, avou des usteyes otomatikes, des loyéns di rclame viè les sites da zels.\nBén seur, on pout todi les disfacer al mwin, mins c' est on soyant ovraedje.\n\nAdon, pa côps, copurade cwand vos radjoutez des hårdêyes a ene pådje, ou å moumint d' ahiver on novea conte sol wiki, on eployrè ene passete d' acertinaedje, dj' ô bén k' on vos mostere ene imådje avou on tecse kitoirdou eyet vs dimander di taper les mots so l' imådje. Come li ricnoxhance di ç' tecse la est målåjheye a fé otomaticmint pa on robot, çoula permete di leyî les vraiyès djins fé leus candjmints tot arestant l' plupårt des spameus et des sfwaitès atakes pa robot.\n\nMålureuzmint çoula apoite eto des målåjhminces po les cis k' ont des problinmes po vey, ou k' eployèt des betchteus e môde tecse ou båzés sol vwès. Pol moumint, nos n' avans nén ene alternative odio.\nS' i vs plait contactez les [[Special:ListAdmins|manaedjeus do site]] po d' l' aidance si çoula vos espaitche di fé vos candjmints ledjitimes.\n\nClitchîz sol boton «En erî» di vosse betchteu waibe po rivni al pådje di dvant.",
+ "captcha-addurl-whitelist": " #<!-- leyîz cisse roye chal come elle est (oyi, i gn a-st on vude al comince) --><pre>\n# Li sintacse est come çouci :\n# * Tot caractere a pårti d' on «#» disk' al fén del roye c' est on comintaire.\n# * Tote roye nén vude est on boket d' erîlêye ratourneure (regexp) po loukî a des corespondances avou les nos d' lodjoe dins les hårdêyes.\n #</pre><!-- leyîz cisse roye chal come elle est (oyi, i gn a-st on vude al comince) -->",
+ "right-skipcaptcha": "Pou fé les accions k' enondèt normålmint ene passete d' acertinaedje (captcha) sins k' ele ni soeye enondêye",
+ "captcha-apihelp-param-captchaword": "Response",
+ "captcha-apihelp-param-captchaid": "Idintifiant di CAPTCHA del dimande di dvant"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/war.json b/www/wiki/extensions/ConfirmEdit/i18n/war.json
new file mode 100644
index 00000000..49f92508
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/war.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "JinJian"
+ ]
+ },
+ "captcha-label": "CAPTCHA"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/wo.json b/www/wiki/extensions/ConfirmEdit/i18n/wo.json
new file mode 100644
index 00000000..f15cd4e2
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/wo.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ibou"
+ ]
+ },
+ "captcha-label": "CAPTCHA"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/wuu.json b/www/wiki/extensions/ConfirmEdit/i18n/wuu.json
new file mode 100644
index 00000000..002f2cf7
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/wuu.json
@@ -0,0 +1,18 @@
+{
+ "@metadata": {
+ "authors": [
+ "Poiuyt",
+ "飞舞回堂前"
+ ]
+ },
+ "captcha-edit": "要编辑该页面,请完成下底个任务,勒框里输入答案([[Special:Captcha/help|更多资料]]):",
+ "captcha-label": "验证码",
+ "captcha-addurl": "侬个编辑包括新个外部链接。为保护本wiki弗受自动垃圾程序个破坏,请答出下底个简单加法个答案([[Special:Captcha/help|更多信息]]):",
+ "captcha-badlogin": "为仔保护本wiki弗畀自动密码破解程序破坏,请答出一个简单个加法,再勒框内输入([[Special:Captcha/help|更多个资料]]):",
+ "captcha-createaccount": "为仔保护本wiki弗畀自动账号创建程序破坏,请答出一个简单个加法,再勒框内输入([[Special:Captcha/help|更多个资料]]):",
+ "captcha-createaccount-fail": "验证码错误或落脱。",
+ "captcha-create": "要创建页面,请输入下底简单加法个答案([[Special:Captcha/help|更多个资料]]):",
+ "captchahelp-cookies-needed": "侬要开启浏览器上个cookie才好使用迭个工具。",
+ "captchahelp-text": "搭本站一样,对公众开放编辑个网站常朝畀垃圾链接骚扰。箇星人使用自动化垃圾程序拿伊拉个链接撘到交关网站。虽然箇星链接可以清除脱,但箇星物事真真较讨惹厌。\n\n有辰光,特别是帮一只页面添加新个网页链接个辰光,本站会叫侬看一幅有颜色个也作兴是有变形文字个图像,还要叫侬输入所显示个文字。因为该个是难以自动完成个一项任务,渠允许人保存渠侬个编辑,同时阻止大多数发送垃圾链接者搭其他机器人个攻击。\n\n叫人遗憾个是,箇会得使视力弗好个人,或者使用基于文本或者基于声音个浏览器个用户觉着弗方便。而目前我侬还弗曾提供音频个选择。假使迭个正好阻止侬进行正常个编辑,请联系[[Special:ListAdmins|网站管理员]]获得帮助。\n\n点击浏览器上个“后退”揿钮返回页面编辑器。",
+ "captcha-addurl-whitelist": " #<!-- 拿本行保持原样 --> <pre>\n# 语法像下底一样:\n# * 所有“#”字符开头个行侪是注解\n# * 所有非空白行是正则表达式片段,只会匹配URL里向个域名\n #</pre> <!-- 拿本行保持原样 -->"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/xmf.json b/www/wiki/extensions/ConfirmEdit/i18n/xmf.json
new file mode 100644
index 00000000..5dfe1981
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/xmf.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Silovan"
+ ]
+ },
+ "captcha-label": "CAPTCHA"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/yi.json b/www/wiki/extensions/ConfirmEdit/i18n/yi.json
new file mode 100644
index 00000000..0e331e56
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/yi.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "פוילישער"
+ ]
+ },
+ "captcha-label": "CAPTCHA",
+ "captcha-addurl": "אײַער רעדאַקטירונג אַנטהאַלט נײַע דרויסנדיקע לינקען. \nצו שיצן די וויקי קעגן אויטאמזירטן ספאַם, בעטן מיר אײַך צו לייזן די פֿאלגנדע אויפֿגאַבע אונטן און קלאַפט אײַן דעם ענטפֿער אינעם קעסטל כדי אויפצוהיטן אײַער רעדאקטירונג. ([[Special:Captcha/help|נאך אינפֿארמאַציע]]):",
+ "captcha-badlogin": "צו שיצן די וויקי קעגן אויטאמאַטישן ברעכן פאַסווערטער, בעטן מיר אײַך צו לייזן די פֿאלגנדע אויפֿגאַבע אונטן און קלאַפט אײַן דעם ענטפֿער אינעם קעסטל כדי אויפצוהיטן אײַער רעדאקטירונג. ([[Special:Captcha/help|נאך אינפֿארמאַציע]]):",
+ "captcha-createaccount": "צו שיצן די וויקי קעגן אויטאמאַטישע שאַפֿן קאנטעס, בעטן מיר אײַך צו לייזן די פֿאלגנדע אויפֿגאַבע אונטן און אריינקלאַפן דעם ענטפֿער אינעם קעסטל כדי אויפצוהיטן אײַער רעדאקטירונג. ([[Special:Captcha/help|נאך אינפֿארמאַציע]]):",
+ "captcha-createaccount-fail": "גרײַזיקער אָדער פֿעלנדיקער באַשטעטיק־קאָד",
+ "captchahelp-title": "CAPTCHA הילף",
+ "confirmedit-preview-content": "אינהאַלט"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/yo.json b/www/wiki/extensions/ConfirmEdit/i18n/yo.json
new file mode 100644
index 00000000..c768500b
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/yo.json
@@ -0,0 +1,10 @@
+{
+ "@metadata": {
+ "authors": [
+ "Demmy"
+ ]
+ },
+ "captcha-label": "CAPTCHA",
+ "captchahelp-title": "Ìrànwọ́ Captcha",
+ "captchahelp-cookies-needed": "Ẹ gbọ́jọ̀ gba cookies láyé nínú agbétàkùn yín kí èyí ó tó ṣiṣẹ́."
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/yue.json b/www/wiki/extensions/ConfirmEdit/i18n/yue.json
new file mode 100644
index 00000000..168a9c42
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/yue.json
@@ -0,0 +1,28 @@
+{
+ "@metadata": {
+ "authors": [
+ "Yueman",
+ "CRCHF",
+ "Wong128hk",
+ "Ktchankt",
+ "Waihorace"
+ ]
+ },
+ "captcha-edit": "要編輯呢一篇文,請答出一個簡單嘅加數和,跟住響個盒度打入 ([[Special:Captcha/help|更多資料]]):",
+ "captcha-edit-fail": "錯咗或者漏咗CAPTCHA。",
+ "captcha-desc": "簡單嘅 captcha 實行",
+ "captcha-label": "CAPTCHA",
+ "captcha-addurl": "你編輯嘅內容裏面有新嘅URL連結;為咗避免受到自動垃圾程式的侵擾,請答出一個簡單嘅加數和,跟住響個盒度打入 ([[Special:Captcha/help|更多資料]]):",
+ "captcha-badlogin": "為咗防止程式自動破解密碼,請答出一個簡單嘅加數和,跟住響個盒度打入 ([[Special:Captcha/help|更多資料]]):",
+ "captcha-createaccount": "為咗防止程式自動註冊,請答出一個簡單嘅加數和,跟住響個盒度打入 ([[Special:Captcha/help|更多資料]]):",
+ "captcha-createaccount-fail": "驗證碼錯咗或者唔見咗。",
+ "captcha-create": "要開呢一版,請答出一個簡單嘅加數和,跟住響個盒度打入 ([[Special:Captcha/help|更多資料]]):",
+ "captcha-sendemail": "為咗防止機械式濫貼,請喺個盒道答以下爾條簡單嘅加數([[Special:Captcha/help|更多資料]])︰",
+ "captcha-sendemail-fail": "驗證碼錯咗或者唔見咗。",
+ "captcha-disabledinapi": "呢個動作需要驗證碼,所以唔可以用 API 做。",
+ "captchahelp-title": "Captcha 幫助",
+ "captchahelp-cookies-needed": "你需要開咗響瀏覽器度嘅cookies先至可以用呢樣嘢。",
+ "captchahelp-text": "就好似呢個wiki噉,任何人都可以改嘢嘅網站成日都會畀垃圾連結騷擾。有啲人用自動化垃圾程序將佢哋嘅連結周圍貼去好多網站。雖然呢啲連結可以剷走佢,但呢啲嘢確實好乞人憎。\n\n有時,特別係響一頁加新嘅網頁連結嗰陣,呢個網站會畀你睇一幅有色或者有變形文字嘅圖,跟住要你打返圖入面所顯示嘅字,因為噉係好難自動搞掂嘅任務。佢畀真正人類保存佢哋嘅編輯,同時亦都阻止大多數周圍貼連結嘅破壞者同埋其它機械人嘅攻擊。\n\n唔好彩嘅係,對視力唔好嘅人或用基於文本或聲嘅瀏覽器用戶可能唔方便,而到呢刻為止我哋重未可以揀到音頻。如果咁啱阻到你搞嘅正常編輯行為,請搵[[Special:ListAdmins|管理員]]幫手。\n\n撳一下響瀏覽器嘅「後退」掣去返你之前改緊嗰版。",
+ "captcha-addurl-whitelist": " #<!-- leave this line exactly as it is --> <pre>\n# 語法好似下面噉:\n# * 所有由 \"#\" 字元之後嘅嘢到行尾係註解\n# * 所有非空白行係一個regex部份,只係會同裏面嘅URL主機相符\n #</pre> <!-- leave this line exactly as it is -->",
+ "right-skipcaptcha": "執行captcha引發嘅動作時唔需要經過captcha"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/zgh.json b/www/wiki/extensions/ConfirmEdit/i18n/zgh.json
new file mode 100644
index 00000000..25e94a69
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/zgh.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Amara-Amaziɣ"
+ ]
+ },
+ "captcha-label": "ⵜⴰⴳⵓⵔⵉ ⵏ ⵜⵎⵏⵥⵉⵜ"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/zh-hans.json b/www/wiki/extensions/ConfirmEdit/i18n/zh-hans.json
new file mode 100644
index 00000000..9907b68c
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/zh-hans.json
@@ -0,0 +1,45 @@
+{
+ "@metadata": {
+ "authors": [
+ "Bencmq",
+ "Hzy980512",
+ "Liangent",
+ "PhiLiP",
+ "Xiaomingyan",
+ "Yfdyh000",
+ "Liuxinyu970226",
+ "Mywood",
+ "Impersonator 1"
+ ]
+ },
+ "captcha-edit": "要编辑该页面,请完成下面的任务,并在框中输入答案([[Special:Captcha/help|更多信息]]):",
+ "captcha-edit-fail": "验证码错误或丢失。",
+ "captcha-desc": "提供验证码技术防止垃圾信息和密码破解破坏",
+ "captcha-label": "验证码",
+ "captcha-help": "验证码的解决方案。",
+ "captcha-info-help": "验证码的描述。",
+ "captcha-id-label": "验证码ID",
+ "captcha-id-help": "该值应被发回不变。",
+ "captcha-addurl": "您的编辑包含新的外部链接。为保护本wiki免受自动垃圾程序的破坏,我们恳请您完成下面的任务,并在框中输入答案([[Special:Captcha/help|更多信息]]):",
+ "captcha-badlogin": "为保护本wiki免受自动密码破解的破坏,我们恳请您完成下面的任务,并在框中输入答案([[Special:Captcha/help|更多信息]]):",
+ "captcha-createaccount": "为保护本wiki免受自动账户创建的破坏,我们恳请您完成下面的任务,并在框中输入答案([[Special:Captcha/help|更多信息]]):",
+ "captcha-createaccount-fail": "验证码错误或丢失。",
+ "captcha-create": "要创建页面,请完成下面的任务,并在框中输入答案([[Special:Captcha/help|更多信息]]):",
+ "captcha-sendemail": "为保护本wiki免受自动垃圾程序的破坏,我们恳请您完成下面的任务,并在框中输入答案([[Special:Captcha/help|更多信息]]):",
+ "captcha-sendemail-fail": "验证码错误或丢失。",
+ "captcha-disabledinapi": "该操作需要验证码,因此无法通过API执行。",
+ "captcha-error": "由于内部错误,验证码确认失败:$1",
+ "captchahelp-title": "验证码帮助",
+ "captchahelp-cookies-needed": "您需要启用您的浏览器的cookie使该程序工作。",
+ "captchahelp-text": "接受公众贡献的网站,比如本wiki,经常受到使用自动工具添加垃圾网站链接的垃圾制造者的破坏。尽管这些垃圾链接可以被删除,它们仍然极其麻烦。\n\n有时,特别是给页面添加新的网络链接时,本wiki可能会向您展示一张有多种颜色或扭曲的文字的图像,并要求您输入展示的文字。由于这是一项难以用自动工具完成的任务,它可以允许在大多数真人做出贡献的同时,阻止大多数垃圾制造者和其他自动攻击者。\n\n遗憾地是,这可能会对视力受限或是使用纯文本或阅读浏览器的用户造成不便。目前我们还没替代的声音选择。如果这项措施意外地阻止您进行正常的贡献,请与[[Special:ListAdmins|网站管理员]]联系获取帮助。\n\n点击浏览器的“后退”按钮返回页面编辑器。",
+ "captcha-addurl-whitelist": " #<!-- 请将本行保持原样 --> <pre>\n# 语法如下:\n# * 所有以“#”字符开头的行都是注释\n# * 所有非空白行是正则表达式片段,只会对URL中的内容进行匹配\n #</pre> <!-- 请将本行保持原样 -->",
+ "right-skipcaptcha": "执行触发验证码的操作时无需验证",
+ "captcha-apihelp-param-captchaword": "回答验证码",
+ "captcha-apihelp-param-captchaid": "之前请求的验证码ID",
+ "confirmedit-preview-line": "行号",
+ "confirmedit-preview-content": "内容",
+ "confirmedit-preview-validity": "有效性",
+ "confirmedit-preview-valid": "有效",
+ "confirmedit-preview-invalid": "无效",
+ "confirmedit-preview-description": "以下表格显示此页面的行列表,以及是否为有效IP地址或IP地址段。如果某一行是有效IP地址或IP地址段,它将从验证码程序中被白名单,但无效行将被忽略。举一个有效IP地址段的例子:69.208.0.0/16,这是从69.208.0.0至69.208.255.255。更多有关计算IP地址段的[https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Range_blocks#Calculating_the_CIDR_suffix 信息]。"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/i18n/zh-hant.json b/www/wiki/extensions/ConfirmEdit/i18n/zh-hant.json
new file mode 100644
index 00000000..9df84930
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/i18n/zh-hant.json
@@ -0,0 +1,48 @@
+{
+ "@metadata": {
+ "authors": [
+ "Horacewai2",
+ "Hydra",
+ "Liangent",
+ "Mark85296341",
+ "Simon Shek",
+ "Waihorace",
+ "Cwlin0416",
+ "LNDDYL",
+ "Liuxinyu970226",
+ "Bowleerin",
+ "Wbxshiori",
+ "Kly"
+ ]
+ },
+ "captcha-edit": "要編輯這篇文章,請完成以下項目,然後在框內輸入 ([[Special:Captcha/help|更多資料]]) :",
+ "captcha-edit-fail": "錯誤或未輸入 CAPTCHA",
+ "captcha-desc": "提供 CAPTCHA 技術來阻止垃圾訊息和密碼猜解",
+ "captcha-label": "CAPTCHA",
+ "captcha-help": "驗證碼答案。",
+ "captcha-info-help": "驗證碼的描述。",
+ "captcha-id-label": "驗證碼ID",
+ "captcha-id-help": "該值應該發回不變。",
+ "captcha-addurl": "你編輯的內容中含有一個新的外部連結;為了免受自動垃圾程式的侵擾,請完成以下項目,然後在框內輸入 ([[Special:Captcha/help|更多資料]]) :",
+ "captcha-badlogin": "為防止程式自動破解密碼,請完成以下項目,然後在框內輸入 ([[Special:Captcha/help|更多資料]]) :",
+ "captcha-createaccount": "為防止程式自動註冊,請完成以下項目,然後在框內輸入 ([[Special:Captcha/help|更多資料]]) :",
+ "captcha-createaccount-fail": "CAPTCHA 錯誤或遺失。",
+ "captcha-create": "要建立頁面,請完成以下項目,然後在框內輸入 ([[Special:Captcha/help|更多資料]]) :",
+ "captcha-sendemail": "為防止程式進行破壞,請完成以下項目,然後在框內輸入 ([[Special:Captcha/help|更多資料]]) :",
+ "captcha-sendemail-fail": "CAPTCHA 錯誤或遺失。",
+ "captcha-disabledinapi": "此操作需要使用 CAPTCHA 驗証,因此無法透過 API 執行。",
+ "captcha-error": "由於內部錯誤,驗證碼確認失敗:$1",
+ "captchahelp-title": "Captcha 說明",
+ "captchahelp-cookies-needed": "您需要開啟瀏覽器上的 Cookies 方可使用此功能。",
+ "captchahelp-text": "接受公開張貼訊息的網站,同本 Wiki,通常會被垃圾訊息散佈者使用自動化工具所濫用,在多個網站張貼垃圾連結。\n雖然可以移除這些垃圾連結,但這實著造成困擾。\n\n因此,部份時候,特別是在頁面新增網站連結時,Wiki 會顯示您有彩色或扭曲文字的圖片,要求您輸顯示的文字。\n由於這個動作難以自動化,它可在讓實際的使用者張貼訊息的同時避免多數垃圾訊息散佈者及自動化工具的攻擊。\n\n可惜的是,這仍可能對視力有障礙或者使用以文字基礎或語音基礎的瀏覽器造成不便。\n但目前我們還尚未提供語音的替代方案。\n若您的合法操作在預期之外受到限制,請聯絡 [[Special:ListAdmins|網站管理員]] 尋求協助。\n\n請點選瀏覽器的「返回」按鈕以返回頁面編輯器。",
+ "captcha-addurl-whitelist": " #<!-- 請勿更動此行 --> <pre>\n# 語法格式如下:\n# * 任何以 \"#\" 字元開頭至結尾代表註解\n# * 任何非空白行代表部份正規表示法,會用來比對 URL 中的主機\n #</pre> <!-- 請勿更動此行 -->",
+ "right-skipcaptcha": "執行會觸發驗證碼的動作時無需經過驗證碼檢驗",
+ "captcha-apihelp-param-captchaword": "回答驗證碼",
+ "captcha-apihelp-param-captchaid": "之前請求的驗證碼ID",
+ "confirmedit-preview-line": "行號",
+ "confirmedit-preview-content": "內容",
+ "confirmedit-preview-validity": "有效性",
+ "confirmedit-preview-valid": "有效",
+ "confirmedit-preview-invalid": "無效",
+ "confirmedit-preview-description": "以下表格顯示出有關此頁面行數的清單,以及是否為有效的 IP 位址或 IP 位址範圍。如果某行是有效的 IP 位址或 IP 位址範圍,這會從驗證碼流程來被列入在白名單裡,若如果是無效的行則會被忽略。例如:來自於 69.208.0.0 至 69.208.255.255 網段的有效 IP 位址範圍會是 69.208.0.0/16。有關計算 IP 位址範圍更多方面訊息[https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Range_blocks#Calculating_the_CIDR_suffix 可查看此]。"
+}
diff --git a/www/wiki/extensions/ConfirmEdit/includes/CaptchaStore.php b/www/wiki/extensions/ConfirmEdit/includes/CaptchaStore.php
new file mode 100644
index 00000000..5a78e466
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/includes/CaptchaStore.php
@@ -0,0 +1,147 @@
+<?php
+
+use MediaWiki\Session\SessionManager;
+
+abstract class CaptchaStore {
+ /**
+ * Store the correct answer for a given captcha
+ * @param $index String
+ * @param $info String the captcha result
+ */
+ abstract public function store( $index, $info );
+
+ /**
+ * Retrieve the answer for a given captcha
+ * @param $index String
+ * @return String|false
+ */
+ abstract public function retrieve( $index );
+
+ /**
+ * Delete a result once the captcha has been used, so it cannot be reused
+ * @param $index
+ */
+ abstract public function clear( $index );
+
+ /**
+ * Whether this type of CaptchaStore needs cookies
+ * @return Bool
+ */
+ abstract public function cookiesNeeded();
+
+ /**
+ * The singleton instance
+ * @var CaptchaStore
+ */
+ private static $instance;
+
+ /**
+ * Get somewhere to store captcha data that will persist between requests
+ *
+ * @throws Exception
+ * @return CaptchaStore
+ */
+ final public static function get() {
+ if ( !self::$instance instanceof self ) {
+ global $wgCaptchaStorageClass;
+ if ( in_array( 'CaptchaStore', class_parents( $wgCaptchaStorageClass ) ) ) {
+ self::$instance = new $wgCaptchaStorageClass;
+ } else {
+ throw new Exception( "Invalid CaptchaStore class $wgCaptchaStorageClass" );
+ }
+ }
+ return self::$instance;
+ }
+
+ final public static function unsetInstanceForTests() {
+ if ( !defined( 'MW_PHPUNIT_TEST' ) ) {
+ throw new MWException( 'Cannot unset ' . __CLASS__ . ' instance in operation.' );
+ }
+ self::$instance = null;
+ }
+
+ /**
+ * Protected constructor: no creating instances except through the factory method above
+ */
+ protected function __construct() {
+ }
+}
+
+class CaptchaSessionStore extends CaptchaStore {
+ protected function __construct() {
+ // Make sure the session is started
+ SessionManager::getGlobalSession()->persist();
+ }
+
+ function store( $index, $info ) {
+ SessionManager::getGlobalSession()->set( 'captcha' . $index, $info );
+ }
+
+ function retrieve( $index ) {
+ return SessionManager::getGlobalSession()->get( 'captcha' . $index, false );
+ }
+
+ function clear( $index ) {
+ SessionManager::getGlobalSession()->remove( 'captcha' . $index );
+ }
+
+ function cookiesNeeded() {
+ return true;
+ }
+}
+
+class CaptchaCacheStore extends CaptchaStore {
+ function store( $index, $info ) {
+ global $wgCaptchaSessionExpiration;
+
+ ObjectCache::getMainStashInstance()->set(
+ wfMemcKey( 'captcha', $index ),
+ $info,
+ $wgCaptchaSessionExpiration
+ );
+ }
+
+ function retrieve( $index ) {
+ $info = ObjectCache::getMainStashInstance()->get( wfMemcKey( 'captcha', $index ) );
+ if ( $info ) {
+ return $info;
+ } else {
+ return false;
+ }
+ }
+
+ function clear( $index ) {
+ ObjectCache::getMainStashInstance()->delete( wfMemcKey( 'captcha', $index ) );
+ }
+
+ function cookiesNeeded() {
+ return false;
+ }
+}
+
+class CaptchaHashStore extends CaptchaStore {
+ protected $data = [];
+
+ public function store( $index, $info ) {
+ $this->data[$index] = $info;
+ }
+
+ public function retrieve( $index ) {
+ if ( array_key_exists( $index, $this->data ) ) {
+ return $this->data[$index];
+ }
+ return false;
+ }
+
+ public function clear( $index ) {
+ unset( $this->data[$index] );
+ }
+
+ public function cookiesNeeded() {
+ return false;
+ }
+
+ public function clearAll() {
+ $this->data = [];
+ }
+}
diff --git a/www/wiki/extensions/ConfirmEdit/includes/CaptchaTriggers.php b/www/wiki/extensions/ConfirmEdit/includes/CaptchaTriggers.php
new file mode 100644
index 00000000..d88ca223
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/includes/CaptchaTriggers.php
@@ -0,0 +1,17 @@
+<?php
+
+/**
+ * A class with constants of the CAPTCHA triggers built-in in ConfirmEdit. Other extensions may
+ * add more possible triggers, which are not included in this class.
+ */
+abstract class CaptchaTriggers {
+ const EDIT = 'edit';
+ const CREATE = 'create';
+ const SENDEMAIL = 'sendemail';
+ const ADD_URL = 'addurl';
+ const CREATE_ACCOUNT = 'createaccount';
+ const BAD_LOGIN = 'badlogin';
+ const BAD_LOGIN_PER_USER = 'badloginperuser';
+
+ const EXT_REG_ATTRIBUTE_NAME = 'CaptchaTriggers';
+}
diff --git a/www/wiki/extensions/ConfirmEdit/includes/CaptchaValue.php b/www/wiki/extensions/ConfirmEdit/includes/CaptchaValue.php
new file mode 100644
index 00000000..87302009
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/includes/CaptchaValue.php
@@ -0,0 +1,24 @@
+<?php
+
+/**
+ * Simple value object for storing a captcha question + answer.
+ */
+class CaptchaValue {
+ /**
+ * ID that is used to store the captcha in cache.
+ * @var string
+ */
+ protected $id;
+
+ /**
+ * Answer to the captcha.
+ * @var string
+ */
+ protected $solution;
+
+ /**
+ * @var mixed
+ */
+ protected $data;
+
+}
diff --git a/www/wiki/extensions/ConfirmEdit/includes/ConfirmEditHooks.php b/www/wiki/extensions/ConfirmEdit/includes/ConfirmEditHooks.php
new file mode 100644
index 00000000..0b9464f7
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/includes/ConfirmEditHooks.php
@@ -0,0 +1,253 @@
+<?php
+
+class ConfirmEditHooks {
+ protected static $instanceCreated = false;
+
+ /**
+ * Get the global Captcha instance
+ *
+ * @return SimpleCaptcha
+ */
+ public static function getInstance() {
+ global $wgCaptcha, $wgCaptchaClass;
+
+ $class = $wgCaptchaClass;
+ if ( $class == null ) {
+ $class = 'SimpleCaptcha';
+ }
+ if ( !static::$instanceCreated ) {
+ static::$instanceCreated = true;
+ $wgCaptcha = new $class;
+ }
+
+ return $wgCaptcha;
+ }
+
+ static function confirmEditMerged( $context, $content, $status, $summary, $user, $minorEdit ) {
+ return self::getInstance()->confirmEditMerged( $context, $content, $status, $summary,
+ $user, $minorEdit );
+ }
+
+ /**
+ * PageContentSaveComplete hook handler.
+ * Clear IP whitelist cache on page saves for [[MediaWiki:Captcha-ip-whitelist]].
+ *
+ * @param WikiPage $wikiPage
+ * @param User $user
+ * @param Content $content
+ * @param string $summary
+ * @param bool $isMinor
+ * @param bool $isWatch
+ * @param string $section
+ * @param int $flags
+ * @param int $revision
+ * @param Status $status
+ * @param int $baseRevId
+ *
+ * @return bool true
+ */
+ static function onPageContentSaveComplete( WikiPage $wikiPage, User $user, Content $content,
+ $summary, $isMinor, $isWatch, $section, $flags, $revision, Status $status, $baseRevId
+ ) {
+ $title = $wikiPage->getTitle();
+ if ( $title->getText() === 'Captcha-ip-whitelist' && $title->getNamespace() === NS_MEDIAWIKI ) {
+ $cache = ObjectCache::getMainWANInstance();
+ $cache->delete( $cache->makeKey( 'confirmedit', 'ipwhitelist' ) );
+ }
+
+ return true;
+ }
+
+ static function confirmEditPage( $editpage, $buttons, $tabindex ) {
+ self::getInstance()->editShowCaptcha( $editpage );
+ }
+
+ static function showEditFormFields( &$editPage, &$out ) {
+ self::getInstance()->showEditFormFields( $editPage, $out );
+ }
+
+ static function injectEmailUser( &$form ) {
+ return self::getInstance()->injectEmailUser( $form );
+ }
+
+ static function confirmEmailUser( $from, $to, $subject, $text, &$error ) {
+ return self::getInstance()->confirmEmailUser( $from, $to, $subject, $text, $error );
+ }
+
+ // Default $flags to 1 for backwards-compatible behavior
+ public static function APIGetAllowedParams( &$module, &$params, $flags = 1 ) {
+ return self::getInstance()->APIGetAllowedParams( $module, $params, $flags );
+ }
+
+ public static function onAuthChangeFormFields(
+ array $requests, array $fieldInfo, array &$formDescriptor, $action
+ ) {
+ self::getInstance()->onAuthChangeFormFields( $requests, $fieldInfo, $formDescriptor, $action );
+ }
+
+ public static function confirmEditSetup() {
+ // @codingStandardsIgnoreStart MediaWiki.NamingConventions.ValidGlobalName.wgPrefix
+ global $wgCaptchaTriggers, $wgAllowConfirmedEmail,
+ $wgWikimediaJenkinsCI, $ceAllowConfirmedEmail;
+ // @codingStandardsIgnoreEnd
+
+ // There is no need to run (core) tests with enabled ConfirmEdit - bug T44145
+ if ( isset( $wgWikimediaJenkinsCI ) && $wgWikimediaJenkinsCI === true ) {
+ $wgCaptchaTriggers = array_fill_keys( array_keys( $wgCaptchaTriggers ), false );
+ }
+
+ // $ceAllowConfirmedEmail is deprecated and should be replaced by $wgAllowConfirmedEmail.
+ // For backward-compatibility, keep the value for some time. T162641
+ if ( isset( $ceAllowConfirmedEmail ) ) {
+ wfDeprecated(
+ 'Using $ceAllowConfirmedEmail is deprecated, ' .
+ 'please migrate to $wgAllowConfirmedEmail as a replacement.' );
+ $wgAllowConfirmedEmail = $ceAllowConfirmedEmail;
+ }
+ }
+
+ /**
+ * TitleReadWhitelist hook handler.
+ *
+ * @param Title $title
+ * @param User $user
+ * @param bool &$whitelisted
+ */
+ public static function onTitleReadWhitelist( Title $title, User $user, &$whitelisted ) {
+ $image = SpecialPage::getTitleFor( 'Captcha', 'image' );
+ $help = SpecialPage::getTitleFor( 'Captcha', 'help' );
+ if ( $title->equals( $image ) || $title->equals( $help ) ) {
+ $whitelisted = true;
+ }
+ }
+
+ /**
+ *
+ * Callback for extension.json of FancyCaptcha to set a default captcha directory,
+ * which depends on wgUploadDirectory
+ */
+ public static function onFancyCaptchaSetup() {
+ global $wgCaptchaDirectory, $wgUploadDirectory;
+ if ( !$wgCaptchaDirectory ) {
+ $wgCaptchaDirectory = "$wgUploadDirectory/captcha";
+ }
+ }
+
+ /**
+ * Callback for extension.json of ReCaptcha to require the recaptcha library php file.
+ * FIXME: This should be done in a better way, e.g. only load the libraray, if really needed.
+ */
+ public static function onReCaptchaSetup() {
+ require_once __DIR__ . '/../ReCaptcha/recaptchalib.php';
+ }
+
+ /**
+ * Extension function, moved from ReCaptcha.php when that was decimated.
+ * Make sure the keys are defined.
+ */
+ public static function efReCaptcha() {
+ global $wgReCaptchaPublicKey, $wgReCaptchaPrivateKey;
+ // @codingStandardsIgnoreStart
+ global $recaptcha_public_key, $recaptcha_private_key;
+ // @codingStandardsIgnoreEnd
+ global $wgServerName;
+
+ // Backwards compatibility
+ if ( $wgReCaptchaPublicKey == '' ) {
+ $wgReCaptchaPublicKey = $recaptcha_public_key;
+ }
+ if ( $wgReCaptchaPrivateKey == '' ) {
+ $wgReCaptchaPrivateKey = $recaptcha_private_key;
+ }
+
+ if ( $wgReCaptchaPublicKey == '' || $wgReCaptchaPrivateKey == '' ) {
+ die(
+ 'You need to set $wgReCaptchaPrivateKey and $wgReCaptchaPublicKey in LocalSettings.php to ' .
+ "use the reCAPTCHA plugin. You can sign up for a key <a href='" .
+ htmlentities( recaptcha_get_signup_url( $wgServerName, "mediawiki" ) ) .
+ "'>here</a>."
+ );
+ }
+ }
+
+ /**
+ * AlternateEditPreview hook handler.
+ *
+ * Replaces the preview with a check of all lines for the [[MediaWiki:Captcha-ip-whitelist]]
+ * interface message, if it validates as an IP address.
+ *
+ * @param EditPage $editor
+ * @param Content &$content
+ * @param string &$html
+ * @param ParserOutput &$po
+ * @return bool
+ */
+ public static function onAlternateEditPreview( EditPage $editor, &$content, &$html, &$po ) {
+ $title = $editor->getTitle();
+ $exceptionTitle = Title::makeTitle( NS_MEDIAWIKI, 'Captcha-ip-whitelist' );
+
+ if ( !$title->equals( $exceptionTitle ) ) {
+ return true;
+ }
+
+ $ctx = $editor->getArticle()->getContext();
+ $out = $ctx->getOutput();
+ $lang = $ctx->getLanguage();
+
+ $lines = explode( "\n", $content->getNativeData() );
+ $html .= Html::rawElement(
+ 'div',
+ [ 'class' => 'warningbox' ],
+ $ctx->msg( 'confirmedit-preview-description' )->parse()
+ ) .
+ Html::openElement(
+ 'table',
+ [ 'class' => 'wikitable sortable' ]
+ ) .
+ Html::openElement( 'thead' ) .
+ Html::element( 'th', [], $ctx->msg( 'confirmedit-preview-line' )->text() ) .
+ Html::element( 'th', [], $ctx->msg( 'confirmedit-preview-content' )->text() ) .
+ Html::element( 'th', [], $ctx->msg( 'confirmedit-preview-validity' )->text() ) .
+ Html::closeElement( 'thead' );
+
+ foreach ( $lines as $count => $line ) {
+ $ip = trim( $line );
+ if ( $ip === '' || strpos( $ip, '#' ) !== false ) {
+ continue;
+ }
+ if ( IP::isIPAddress( $ip ) ) {
+ $validity = $ctx->msg( 'confirmedit-preview-valid' )->escaped();
+ $css = 'valid';
+ } else {
+ $validity = $ctx->msg( 'confirmedit-preview-invalid' )->escaped();
+ $css = 'notvalid';
+ }
+ $html .= Html::openElement( 'tr' ) .
+ Html::element(
+ 'td',
+ [],
+ $lang->formatNum( $count + 1 )
+ ) .
+ Html::element(
+ 'td',
+ [],
+ // IPv6 max length: 8 groups * 4 digits + 7 delimiter = 39
+ // + 11 chars for safety
+ $lang->truncate( $ip, 50 )
+ ) .
+ Html::rawElement(
+ 'td',
+ // possible values:
+ // mw-confirmedit-ip-valid
+ // mw-confirmedit-ip-notvalid
+ [ 'class' => 'mw-confirmedit-ip-' . $css ],
+ $validity
+ ) .
+ Html::closeElement( 'tr' );
+ }
+ $html .= Html::closeElement( 'table' );
+ $out->addModuleStyles( 'ext.confirmEdit.editPreview.ipwhitelist.styles' );
+
+ return false;
+ }
+}
diff --git a/www/wiki/extensions/ConfirmEdit/includes/auth/CaptchaAuthenticationRequest.php b/www/wiki/extensions/ConfirmEdit/includes/auth/CaptchaAuthenticationRequest.php
new file mode 100644
index 00000000..d5d6e5a1
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/includes/auth/CaptchaAuthenticationRequest.php
@@ -0,0 +1,87 @@
+<?php
+
+use MediaWiki\Auth\AuthenticationRequest;
+use MediaWiki\Auth\AuthManager;
+
+/**
+ * Generic captcha authentication request class. A captcha consist some data stored in the session
+ * (e.g. a question and its answer), an ID that references the data, and a solution.
+ */
+class CaptchaAuthenticationRequest extends AuthenticationRequest {
+ /** @var string Identifier of the captcha. Used internally to remember which captcha was used. */
+ public $captchaId;
+
+ /** @var array Information about the captcha (e.g. question text; solution). Exact semantics
+ * differ between types. */
+ public $captchaData;
+
+ /** @var string Captcha solution submitted by the user. */
+ public $captchaWord;
+
+ public function __construct( $id, $data ) {
+ $this->captchaId = $id;
+ $this->captchaData = $data;
+ }
+
+ public function loadFromSubmission( array $data ) {
+ $success = parent::loadFromSubmission( $data );
+ if ( $success ) {
+ // captchaId and captchaWord was set from the submission but captchaData was not.
+ $captcha = ConfirmEditHooks::getInstance();
+ $this->captchaData = $captcha->retrieveCaptcha( $this->captchaId );
+ if ( !$this->captchaData ) {
+ return false;
+ }
+ }
+ return $success;
+ }
+
+ public function getFieldInfo() {
+ $captcha = ConfirmEditHooks::getInstance();
+
+ $action = 'generic'; // doesn't actually exist but *Captcha::getMessage will handle that
+ switch ( $this->action ) {
+ case AuthManager::ACTION_LOGIN:
+ $action = 'badlogin';
+ break;
+ case AuthManager::ACTION_CREATE:
+ $action = 'createaccount';
+ break;
+ }
+
+ $fields = [
+ 'captchaId' => [
+ 'type' => 'hidden',
+ 'value' => $this->captchaId,
+ 'label' => wfMessage( 'captcha-id-label' ),
+ 'help' => wfMessage( 'captcha-id-help' ),
+ ],
+ 'captchaInfo' => [
+ 'type' => 'null',
+ 'label' => $captcha->getMessage( $action ),
+ 'value' => $captcha->getCaptchaInfo( $this->captchaData, $this->captchaId ),
+ 'help' => wfMessage( 'captcha-info-help' ),
+ ],
+ 'captchaWord' => [
+ 'type' => 'string',
+ 'label' => wfMessage( 'captcha-label' ),
+ 'help' => wfMessage( 'captcha-help' ),
+ ],
+ ];
+
+ return $fields;
+ }
+
+ public function getMetadata() {
+ $captcha = ConfirmEditHooks::getInstance();
+ return $captcha->describeCaptchaType();
+ }
+
+ public static function __set_state( $data ) {
+ $ret = new static( null, null );
+ foreach ( $data as $k => $v ) {
+ $ret->$k = $v;
+ }
+ return $ret;
+ }
+}
diff --git a/www/wiki/extensions/ConfirmEdit/includes/auth/CaptchaPreAuthenticationProvider.php b/www/wiki/extensions/ConfirmEdit/includes/auth/CaptchaPreAuthenticationProvider.php
new file mode 100644
index 00000000..38a2e681
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/includes/auth/CaptchaPreAuthenticationProvider.php
@@ -0,0 +1,159 @@
+<?php
+
+use MediaWiki\Auth\AbstractPreAuthenticationProvider;
+use MediaWiki\Auth\AuthenticationRequest;
+use MediaWiki\Auth\AuthenticationResponse;
+use MediaWiki\Auth\AuthManager;
+use MediaWiki\Logger\LoggerFactory;
+
+class CaptchaPreAuthenticationProvider extends AbstractPreAuthenticationProvider {
+ public function getAuthenticationRequests( $action, array $options ) {
+ $captcha = ConfirmEditHooks::getInstance();
+ $user = User::newFromName( $options['username'] );
+
+ $needed = false;
+ switch ( $action ) {
+ case AuthManager::ACTION_CREATE:
+ $needed = $captcha->needCreateAccountCaptcha( $user ?: new User() );
+ if ( $needed ) {
+ $captcha->setAction( 'accountcreate' );
+ LoggerFactory::getInstance( 'authevents' )
+ ->info( 'Captcha shown on account creation', [
+ 'event' => 'captcha.display',
+ 'eventType' => 'accountcreation',
+ ] );
+ }
+ break;
+ case AuthManager::ACTION_LOGIN:
+ // Captcha is shown on login when there were too many failed attempts from the
+ // current IP or user. The latter is a bit awkward because we don't know the
+ // username yet. The username from the last successful login is stored in a cookie,
+ // but we still must make sure to not lock out other usernames so we use a session
+ // flag. This will result in confusing error messages if the browser cannot persist
+ // the session, but then login would be impossible anyway so no big deal.
+
+ // If the username ends to be one that does not trigger the captcha, that will
+ // result in weird behavior (if the user leaves the captcha field open, they get
+ // a required field error, if they fill it with an invalid answer, it will pass)
+ // - again, not a huge deal.
+ $session = $this->manager->getRequest()->getSession();
+ $sessionFlag = $session->get( 'ConfirmEdit:loginCaptchaPerUserTriggered' );
+ $suggestedUsername = $session->suggestLoginUsername();
+ if (
+ $captcha->isBadLoginTriggered()
+ || $sessionFlag
+ || $suggestedUsername && $captcha->isBadLoginPerUserTriggered( $suggestedUsername )
+ ) {
+ $needed = true;
+ $captcha->setAction( 'badlogin' );
+ LoggerFactory::getInstance( 'authevents' )
+ ->info( 'Captcha shown on account creation', [
+ 'event' => 'captcha.display',
+ 'eventType' => 'accountcreation',
+ ] );
+ break;
+ }
+ break;
+ }
+
+ if ( $needed ) {
+ return [ $captcha->createAuthenticationRequest() ];
+ } else {
+ return [];
+ }
+ }
+
+ public function testForAuthentication( array $reqs ) {
+ $captcha = ConfirmEditHooks::getInstance();
+ $username = AuthenticationRequest::getUsernameFromRequests( $reqs );
+ $success = true;
+ $isBadLoginPerUserTriggered = $username ?
+ $captcha->isBadLoginPerUserTriggered( $username ) : false;
+
+ if ( $captcha->isBadLoginTriggered() || $isBadLoginPerUserTriggered ) {
+ $captcha->setAction( 'badlogin' );
+ $captcha->setTrigger( "post-badlogin login '$username'" );
+ $success = $this->verifyCaptcha( $captcha, $reqs, new User() );
+ LoggerFactory::getInstance( 'authevents' )->info( 'Captcha submitted on login', [
+ 'event' => 'captcha.submit',
+ 'eventType' => 'login',
+ 'successful' => $success,
+ ] );
+ }
+
+ if ( $isBadLoginPerUserTriggered || $isBadLoginPerUserTriggered === null ) {
+ $session = $this->manager->getRequest()->getSession();
+ $session->set( 'ConfirmEdit:loginCaptchaPerUserTriggered', true );
+ }
+
+ // Make brute force attacks harder by not telling whether the password or the
+ // captcha failed.
+ return $success ? Status::newGood() : $this->makeError( 'wrongpassword', $captcha );
+ }
+
+ public function testForAccountCreation( $user, $creator, array $reqs ) {
+ $captcha = ConfirmEditHooks::getInstance();
+
+ if ( $captcha->needCreateAccountCaptcha( $creator ) ) {
+ $username = $user->getName();
+ $captcha->setAction( 'accountcreate' );
+ $captcha->setTrigger( "new account '$username'" );
+ $success = $this->verifyCaptcha( $captcha, $reqs, $user );
+ LoggerFactory::getInstance( 'authevents' )->info( 'Captcha submitted on account creation', [
+ 'event' => 'captcha.submit',
+ 'eventType' => 'accountcreation',
+ 'successful' => $success,
+ ] );
+ if ( !$success ) {
+ return $this->makeError( 'captcha-createaccount-fail', $captcha );
+ }
+ }
+ return Status::newGood();
+ }
+
+ public function postAuthentication( $user, AuthenticationResponse $response ) {
+ $captcha = ConfirmEditHooks::getInstance();
+ switch ( $response->status ) {
+ case AuthenticationResponse::PASS:
+ case AuthenticationResponse::RESTART:
+ $session = $this->manager->getRequest()->getSession();
+ $session->remove( 'ConfirmEdit:loginCaptchaPerUserTriggered' );
+ $captcha->resetBadLoginCounter( $user ? $user->getName() : null );
+ break;
+ case AuthenticationResponse::FAIL:
+ $captcha->increaseBadLoginCounter( $user ? $user->getName() : null );
+ break;
+ }
+ }
+
+ /**
+ * Verify submitted captcha.
+ * Assumes that the user has to pass the capctha (permission checks are caller's responsibility).
+ * @param SimpleCaptcha $captcha
+ * @param AuthenticationRequest[] $reqs
+ * @param User $user
+ * @return bool
+ */
+ protected function verifyCaptcha( SimpleCaptcha $captcha, array $reqs, User $user ) {
+ /** @var CaptchaAuthenticationRequest $req */
+ $req = AuthenticationRequest::getRequestByClass( $reqs,
+ CaptchaAuthenticationRequest::class, true );
+ if ( !$req ) {
+ return false;
+ }
+ return $captcha->passCaptchaLimited( $req->captchaId, $req->captchaWord, $user );
+ }
+
+ /**
+ * @param string $message Message key
+ * @param SimpleCaptcha $captcha
+ * @return Status
+ */
+ protected function makeError( $message, SimpleCaptcha $captcha ) {
+ $error = $captcha->getError();
+ if ( $error ) {
+ return Status::newFatal( wfMessage( 'captcha-error', $error ) );
+ }
+ return Status::newFatal( $message );
+ }
+}
diff --git a/www/wiki/extensions/ConfirmEdit/includes/specials/SpecialCaptcha.php b/www/wiki/extensions/ConfirmEdit/includes/specials/SpecialCaptcha.php
new file mode 100644
index 00000000..f188ae27
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/includes/specials/SpecialCaptcha.php
@@ -0,0 +1,22 @@
+<?php
+class CaptchaSpecialPage extends UnlistedSpecialPage {
+ public function __construct() {
+ parent::__construct( 'Captcha' );
+ }
+
+ function execute( $par ) {
+ $this->setHeaders();
+
+ $instance = ConfirmEditHooks::getInstance();
+
+ switch ( $par ) {
+ case "image":
+ if ( method_exists( $instance, 'showImage' ) ) {
+ return $instance->showImage();
+ }
+ case "help":
+ default:
+ return $instance->showHelp();
+ }
+ }
+}
diff --git a/www/wiki/extensions/ConfirmEdit/includes/store/CaptchaCacheStore.php b/www/wiki/extensions/ConfirmEdit/includes/store/CaptchaCacheStore.php
new file mode 100644
index 00000000..d6661b3c
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/includes/store/CaptchaCacheStore.php
@@ -0,0 +1,30 @@
+<?php
+
+class CaptchaCacheStore extends CaptchaStore {
+ function store( $index, $info ) {
+ global $wgCaptchaSessionExpiration;
+
+ ObjectCache::getMainStashInstance()->set(
+ wfMemcKey( 'captcha', $index ),
+ $info,
+ $wgCaptchaSessionExpiration
+ );
+ }
+
+ function retrieve( $index ) {
+ $info = ObjectCache::getMainStashInstance()->get( wfMemcKey( 'captcha', $index ) );
+ if ( $info ) {
+ return $info;
+ } else {
+ return false;
+ }
+ }
+
+ function clear( $index ) {
+ ObjectCache::getMainStashInstance()->delete( wfMemcKey( 'captcha', $index ) );
+ }
+
+ function cookiesNeeded() {
+ return false;
+ }
+}
diff --git a/www/wiki/extensions/ConfirmEdit/includes/store/CaptchaHashStore.php b/www/wiki/extensions/ConfirmEdit/includes/store/CaptchaHashStore.php
new file mode 100644
index 00000000..f28d4314
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/includes/store/CaptchaHashStore.php
@@ -0,0 +1,28 @@
+<?php
+
+class CaptchaHashStore extends CaptchaStore {
+ protected $data = [];
+
+ public function store( $index, $info ) {
+ $this->data[$index] = $info;
+ }
+
+ public function retrieve( $index ) {
+ if ( array_key_exists( $index, $this->data ) ) {
+ return $this->data[$index];
+ }
+ return false;
+ }
+
+ public function clear( $index ) {
+ unset( $this->data[$index] );
+ }
+
+ public function cookiesNeeded() {
+ return false;
+ }
+
+ public function clearAll() {
+ $this->data = [];
+ }
+}
diff --git a/www/wiki/extensions/ConfirmEdit/includes/store/CaptchaSessionStore.php b/www/wiki/extensions/ConfirmEdit/includes/store/CaptchaSessionStore.php
new file mode 100644
index 00000000..a02f569c
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/includes/store/CaptchaSessionStore.php
@@ -0,0 +1,26 @@
+<?php
+
+use MediaWiki\Session\SessionManager;
+
+class CaptchaSessionStore extends CaptchaStore {
+ protected function __construct() {
+ // Make sure the session is started
+ SessionManager::getGlobalSession()->persist();
+ }
+
+ function store( $index, $info ) {
+ SessionManager::getGlobalSession()->set( 'captcha' . $index, $info );
+ }
+
+ function retrieve( $index ) {
+ return SessionManager::getGlobalSession()->get( 'captcha' . $index, false );
+ }
+
+ function clear( $index ) {
+ SessionManager::getGlobalSession()->remove( 'captcha' . $index );
+ }
+
+ function cookiesNeeded() {
+ return true;
+ }
+}
diff --git a/www/wiki/extensions/ConfirmEdit/includes/store/CaptchaStore.php b/www/wiki/extensions/ConfirmEdit/includes/store/CaptchaStore.php
new file mode 100644
index 00000000..20cb6a26
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/includes/store/CaptchaStore.php
@@ -0,0 +1,66 @@
+<?php
+
+abstract class CaptchaStore {
+ /**
+ * Store the correct answer for a given captcha
+ * @param string $index
+ * @param string $info the captcha result
+ */
+ abstract public function store( $index, $info );
+
+ /**
+ * Retrieve the answer for a given captcha
+ * @param string $index
+ * @return string|false
+ */
+ abstract public function retrieve( $index );
+
+ /**
+ * Delete a result once the captcha has been used, so it cannot be reused
+ * @param string $index
+ */
+ abstract public function clear( $index );
+
+ /**
+ * Whether this type of CaptchaStore needs cookies
+ * @return bool
+ */
+ abstract public function cookiesNeeded();
+
+ /**
+ * The singleton instance
+ * @var CaptchaStore
+ */
+ private static $instance;
+
+ /**
+ * Get somewhere to store captcha data that will persist between requests
+ *
+ * @throws Exception
+ * @return CaptchaStore
+ */
+ final public static function get() {
+ if ( !self::$instance instanceof self ) {
+ global $wgCaptchaStorageClass;
+ if ( in_array( 'CaptchaStore', class_parents( $wgCaptchaStorageClass ) ) ) {
+ self::$instance = new $wgCaptchaStorageClass;
+ } else {
+ throw new Exception( "Invalid CaptchaStore class $wgCaptchaStorageClass" );
+ }
+ }
+ return self::$instance;
+ }
+
+ final public static function unsetInstanceForTests() {
+ if ( !defined( 'MW_PHPUNIT_TEST' ) ) {
+ throw new MWException( 'Cannot unset ' . __CLASS__ . ' instance in operation.' );
+ }
+ self::$instance = null;
+ }
+
+ /**
+ * Protected constructor: no creating instances except through the factory method above
+ */
+ protected function __construct() {
+ }
+}
diff --git a/www/wiki/extensions/ConfirmEdit/maintenance/CountFancyCaptchas.php b/www/wiki/extensions/ConfirmEdit/maintenance/CountFancyCaptchas.php
new file mode 100644
index 00000000..05be844b
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/maintenance/CountFancyCaptchas.php
@@ -0,0 +1,55 @@
+<?php
+/**
+ * Counts the number of fancy captchas remaining.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Maintenance
+ */
+if ( getenv( 'MW_INSTALL_PATH' ) ) {
+ $IP = getenv( 'MW_INSTALL_PATH' );
+} else {
+ $IP = __DIR__ . '/../../..';
+}
+
+require_once "$IP/maintenance/Maintenance.php";
+
+/**
+ * Maintenance script that counts the number of captchas remaining.
+ *
+ * @ingroup Maintenance
+ */
+class CountFancyCaptchas extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Counts the number of fancy aptchas in storage";
+ $this->requireExtension( "FancyCaptcha" );
+ }
+
+ public function execute() {
+ $instance = ConfirmEditHooks::getInstance();
+ if ( !( $instance instanceof FancyCaptcha ) ) {
+ $this->error( "\$wgCaptchaClass is not FancyCaptcha.\n", 1 );
+ }
+
+ $countAct = $instance->getCaptchaCount();
+ $this->output( "Current number of captchas is $countAct.\n" );
+ }
+}
+
+$maintClass = "CountFancyCaptchas";
+require_once RUN_MAINTENANCE_IF_MAIN;
diff --git a/www/wiki/extensions/ConfirmEdit/maintenance/DeleteOldFancyCaptchas.php b/www/wiki/extensions/ConfirmEdit/maintenance/DeleteOldFancyCaptchas.php
new file mode 100644
index 00000000..23745a5c
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/maintenance/DeleteOldFancyCaptchas.php
@@ -0,0 +1,92 @@
+<?php
+/**
+ * Deletes fancy captchas from storage
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Maintenance
+ */
+if ( getenv( 'MW_INSTALL_PATH' ) ) {
+ $IP = getenv( 'MW_INSTALL_PATH' );
+} else {
+ $IP = __DIR__ . '/../../..';
+}
+
+require_once "$IP/maintenance/Maintenance.php";
+
+/**
+ * Maintenance script that deletes old fancy captchas from storage
+ *
+ * @ingroup Maintenance
+ */
+class DeleteOldFancyCaptchas extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Deletes old fancy captchas from storage";
+ $this->addOption(
+ "date",
+ 'Delete fancy captchas that were created before this date (e.g. 20170101000000)',
+ true,
+ true
+ );
+ $this->requireExtension( "FancyCaptcha" );
+ }
+
+ public function execute() {
+ $instance = ConfirmEditHooks::getInstance();
+ if ( !( $instance instanceof FancyCaptcha ) ) {
+ $this->error( "\$wgCaptchaClass is not FancyCaptcha.\n", 1 );
+ }
+
+ $countAct = $instance->getCaptchaCount();
+ $this->output( "Current number of captchas is $countAct.\n" );
+
+ $backend = $instance->getBackend();
+ $dir = $backend->getRootStoragePath() . '/captcha-render';
+
+ $filesToDelete = [];
+ $deleteDate = $this->getOption( 'date' );
+ foreach (
+ $backend->getFileList( [ 'dir' => $dir ] ) as $file
+ ) {
+ $fullPath = $dir . '/' . $file;
+ $timestamp = $backend->getFileTimestamp( [ 'src' => $fullPath ] );
+ if ( $timestamp < $deleteDate ) {
+ $filesToDelete[] = [ 'op' => 'delete', 'src' => $fullPath, ];
+ }
+ }
+
+ $count = count( $filesToDelete );
+
+ if ( !$count ) {
+ $this->output( "No old fancy captchas to delete!\n" );
+ return;
+ }
+
+ $ret = $backend->doQuickOperations( $filesToDelete );
+
+ if ( $ret->isOK() ) {
+ $this->output( "$count old fancy captchas deleted.\n" );
+ } else {
+ $this->output( "Deleting old captchas errored.\n" );
+ $this->output( implode( "\n", $ret->getErrors() ) );
+ }
+ }
+}
+
+$maintClass = "DeleteOldFancyCaptchas";
+require_once RUN_MAINTENANCE_IF_MAIN;
diff --git a/www/wiki/extensions/ConfirmEdit/maintenance/GenerateFancyCaptchas.php b/www/wiki/extensions/ConfirmEdit/maintenance/GenerateFancyCaptchas.php
new file mode 100644
index 00000000..dfe09b76
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/maintenance/GenerateFancyCaptchas.php
@@ -0,0 +1,263 @@
+<?php
+/**
+ * Generate fancy captchas using a python script and copy them into storage.
+ *
+ * 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
+ * @ingroup Maintenance
+ */
+if ( getenv( 'MW_INSTALL_PATH' ) ) {
+ $IP = getenv( 'MW_INSTALL_PATH' );
+} else {
+ $IP = __DIR__ . '/../../..';
+}
+
+require_once "$IP/maintenance/Maintenance.php";
+
+/**
+ * Maintenance script to generate fancy captchas using a python script and copy them into storage.
+ *
+ * @ingroup Maintenance
+ */
+class GenerateFancyCaptchas extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+
+ // See captcha.py for argument usage
+ $this->addOption( "wordlist", 'A list of words', true, true );
+ $this->addOption( "font", "The font to use", true, true );
+ $this->addOption( "font-size", "The font size ", false, true );
+ $this->addOption( "blacklist", "A blacklist of words that should not be used", false, true );
+ $this->addOption( "fill", "Fill the captcha container to N files", true, true );
+ $this->addOption( "verbose", "Show debugging information" );
+ $this->addOption(
+ "oldcaptcha",
+ "Whether to use captcha-old.py which doesn't have OCR fighting improvements"
+ );
+ $this->addOption( "delete", "Delete the old captches" );
+ $this->addOption( "threads", "The number of threads to use to generate the images",
+ false, true );
+ $this->mDescription = "Generate new fancy captchas and move them into storage";
+
+ $this->requireExtension( "FancyCaptcha" );
+ }
+
+ public function execute() {
+ global $wgCaptchaSecret, $wgCaptchaDirectoryLevels;
+
+ $totalTime = -microtime( true );
+
+ $instance = ConfirmEditHooks::getInstance();
+ if ( !( $instance instanceof FancyCaptcha ) ) {
+ $this->error( "\$wgCaptchaClass is not FancyCaptcha.\n", 1 );
+ }
+ $backend = $instance->getBackend();
+
+ $deleteOldCaptchas = $this->getOption( 'delete' );
+
+ $countGen = (int)$this->getOption( 'fill' );
+ if ( !$deleteOldCaptchas ) {
+ $countAct = $instance->getCaptchaCount();
+ $this->output( "Current number of captchas is $countAct.\n" );
+ $countGen -= $countAct;
+ }
+
+ if ( $countGen <= 0 ) {
+ $this->output( "No need to generate anymore captchas.\n" );
+ return;
+ }
+
+ $tmpDir = wfTempDir() . '/mw-fancycaptcha-' . time() . '-' . wfRandomString( 6 );
+ if ( !wfMkdirParents( $tmpDir ) ) {
+ $this->error( "Could not create temp directory.\n", 1 );
+ }
+
+ $captchaScript = 'captcha.py';
+
+ if ( $this->hasOption( 'oldcaptcha' ) ) {
+ $captchaScript = 'captcha-old.py';
+ }
+
+ $cmd = sprintf( "python %s --key %s --output %s --count %s --dirs %s",
+ wfEscapeShellArg( dirname( __DIR__ ) . '/' . $captchaScript ),
+ wfEscapeShellArg( $wgCaptchaSecret ),
+ wfEscapeShellArg( $tmpDir ),
+ wfEscapeShellArg( $countGen ),
+ wfEscapeShellArg( $wgCaptchaDirectoryLevels )
+ );
+ foreach (
+ [ 'wordlist', 'font', 'font-size', 'blacklist', 'verbose', 'threads' ] as $par
+ ) {
+ if ( $this->hasOption( $par ) ) {
+ $cmd .= " --$par " . wfEscapeShellArg( $this->getOption( $par ) );
+ }
+ }
+
+ $this->output( "Generating $countGen new captchas.." );
+ $retVal = 1;
+ $captchaTime = -microtime( true );
+ wfShellExec( $cmd, $retVal, [], [ 'time' => 0 ] );
+ if ( $retVal != 0 ) {
+ wfRecursiveRemoveDir( $tmpDir );
+ $this->error( "Could not run generation script.\n", 1 );
+ }
+
+ $captchaTime += microtime( true );
+ $this->output( " Done.\n" );
+
+ $this->output(
+ sprintf(
+ "\nGenerated %d captchas in %.1f seconds\n",
+ $countGen,
+ $captchaTime
+ )
+ );
+
+ $filesToDelete = [];
+ if ( $deleteOldCaptchas ) {
+ $this->output( "Getting a list of old captchas to delete..." );
+ $path = $backend->getRootStoragePath() . '/captcha-render';
+ foreach ( $backend->getFileList( [ 'dir' => $path ] ) as $file ) {
+ $filesToDelete[] = [
+ 'op' => 'delete',
+ 'src' => $path . '/' . $file,
+ ];
+ }
+ $this->output( " Done.\n" );
+ }
+
+ $this->output( "Copying the new captchas to storage..." );
+
+ $storeTime = -microtime( true );
+ $iter = new RecursiveIteratorIterator(
+ new RecursiveDirectoryIterator(
+ $tmpDir,
+ FilesystemIterator::SKIP_DOTS
+ ),
+ RecursiveIteratorIterator::LEAVES_ONLY
+ );
+
+ $captchasGenerated = iterator_count( $iter );
+ $filesToStore = [];
+ /**
+ * @var $fileInfo SplFileInfo
+ */
+ foreach ( $iter as $fileInfo ) {
+ if ( !$fileInfo->isFile() ) {
+ continue;
+ }
+ list( $salt, $hash ) = $instance->hashFromImageName( $fileInfo->getBasename() );
+ $dest = $instance->imagePath( $salt, $hash );
+ $backend->prepare( [ 'dir' => dirname( $dest ) ] );
+ $filesToStore[] = [
+ 'op' => 'store',
+ 'src' => $fileInfo->getPathname(),
+ 'dst' => $dest,
+ ];
+ }
+
+ $ret = $backend->doQuickOperations( $filesToStore );
+
+ $storeTime += microtime( true );
+
+ $storeSuceeded = true;
+ if ( $ret->isOK() ) {
+ $this->output( " Done.\n" );
+ $this->output(
+ sprintf(
+ "\nCopied %d captchas to storage in %.1f seconds\n",
+ $ret->successCount,
+ $storeTime
+ )
+ );
+ if ( !$ret->isGood() ) {
+ $this->output(
+ "Non fatal errors:\n" .
+ Status::wrap( $ret )->getWikiText( null, null, 'en' ) .
+ "\n"
+ );
+ }
+ if ( $ret->failCount ) {
+ $storeSuceeded = false;
+ $this->error( sprintf( "\nFailed to copy %d captchas\n", $ret->failCount ) );
+ }
+ if ( $ret->successCount + $ret->failCount !== $captchasGenerated ) {
+ $storeSuceeded = false;
+ $this->error(
+ sprintf( "Internal error: captchasGenerated: %d, successCount: %d, failCount: %d\n",
+ $captchasGenerated, $ret->successCount, $ret->failCount
+ )
+ );
+ }
+ } else {
+ $storeSuceeded = false;
+ $this->output( "Errored.\n" );
+ $this->error(
+ Status::wrap( $ret )->getWikiText( null, null, 'en' ) .
+ "\n"
+ );
+ }
+
+ if ( $storeSuceeded && $deleteOldCaptchas ) {
+ $numOriginalFiles = count( $filesToDelete );
+ $this->output( "Deleting {$numOriginalFiles} old captchas...\n" );
+ $deleteTime = -microtime( true );
+ $ret = $backend->doQuickOperations( $filesToDelete );
+
+ $deleteTime += microtime( true );
+ if ( $ret->isOK() ) {
+ $this->output( "Done.\n" );
+ $this->output(
+ sprintf(
+ "\nDeleted %d old captchas in %.1f seconds\n",
+ $numOriginalFiles,
+ $deleteTime
+ )
+ );
+ if ( !$ret->isGood() ) {
+ $this->output(
+ "Non fatal errors:\n" .
+ Status::wrap( $ret )->getWikiText( null, null, 'en' ) .
+ "\n"
+ );
+ }
+ } else {
+ $this->output( "Errored.\n" );
+ $this->error(
+ Status::wrap( $ret )->getWikiText( null, null, 'en' ) .
+ "\n"
+ );
+ }
+
+ }
+ $this->output( "Removing temporary files..." );
+ wfRecursiveRemoveDir( $tmpDir );
+ $this->output( " Done.\n" );
+
+ $totalTime += microtime( true );
+ $this->output(
+ sprintf(
+ "\nWhole captchas generation process took %.1f seconds\n",
+ $totalTime
+ )
+ );
+ }
+}
+
+$maintClass = "GenerateFancyCaptchas";
+require_once RUN_MAINTENANCE_IF_MAIN;
diff --git a/www/wiki/extensions/ConfirmEdit/phpcs.xml b/www/wiki/extensions/ConfirmEdit/phpcs.xml
new file mode 100644
index 00000000..bc77fda2
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/phpcs.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<ruleset>
+ <rule ref="./vendor/mediawiki/mediawiki-codesniffer/MediaWiki">
+ <exclude name="MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic" />
+ <exclude name="MediaWiki.Commenting.FunctionComment.MissingParamComment" />
+ <exclude name="MediaWiki.Commenting.FunctionComment.MissingParamName" />
+ <exclude name="MediaWiki.Commenting.FunctionComment.MissingParamTag" />
+ <exclude name="MediaWiki.Commenting.FunctionComment.MissingReturn" />
+ <exclude name="MediaWiki.Commenting.FunctionComment.MissingReturnType" />
+ <exclude name="MediaWiki.Commenting.FunctionComment.ParamNameNoMatch" />
+ <exclude name="MediaWiki.Commenting.FunctionComment.WrongStyle" />
+ <exclude name="MediaWiki.Files.ClassMatchesFilename.NotMatch" />
+ <exclude name="MediaWiki.Files.OneClassPerFile.MultipleFound" />
+ <exclude name="MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName"/>
+ <exclude name="MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment"/>
+ </rule>
+ <file>.</file>
+ <arg name="extensions" value="php,php5,inc"/>
+ <arg name="encoding" value="UTF-8"/>
+ <exclude-pattern>ReCaptcha/recaptchalib\.php</exclude-pattern>
+</ruleset>
diff --git a/www/wiki/extensions/ConfirmEdit/resources/ext.confirmEdit.editPreview.ipwhitelist.styles.css b/www/wiki/extensions/ConfirmEdit/resources/ext.confirmEdit.editPreview.ipwhitelist.styles.css
new file mode 100644
index 00000000..b4d4c5c1
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/resources/ext.confirmEdit.editPreview.ipwhitelist.styles.css
@@ -0,0 +1,7 @@
+.mw-confirmedit-ip-notvalid {
+ background-color: #ff6c6c;
+}
+
+.mw-confirmedit-ip-valid {
+ background-color: #90ee90;
+}
diff --git a/www/wiki/extensions/ConfirmEdit/tests/CaptchaAuthenticationRequestTest.php b/www/wiki/extensions/ConfirmEdit/tests/CaptchaAuthenticationRequestTest.php
new file mode 100644
index 00000000..d32b3ba9
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/tests/CaptchaAuthenticationRequestTest.php
@@ -0,0 +1,52 @@
+<?php
+
+use MediaWiki\Auth\AuthenticationRequestTestCase;
+use MediaWiki\Auth\AuthManager;
+
+class CaptchaAuthenticationRequestTest extends AuthenticationRequestTestCase {
+ public function setUp() {
+ parent::setUp();
+ $this->setMwGlobals( [
+ 'wgCaptchaClass' => 'SimpleCaptcha',
+ 'wgCaptchaStorageClass' => CaptchaHashStore::class,
+ ] );
+ CaptchaStore::get()->clearAll();
+ CaptchaStore::get()->store( '345', [ 'question' => '2+2', 'answer' => '4' ] );
+ }
+
+ protected function getInstance( array $args = [] ) {
+ return new CaptchaAuthenticationRequest( $args[0], $args[1] );
+ }
+
+ public static function provideGetFieldInfo() {
+ return [
+ [ [ '123', [ 'question' => '1+2', 'answer' => '3' ] ] ],
+ ];
+ }
+
+ public function provideLoadFromSubmission() {
+ return [
+ 'no id' => [
+ [ '123', [ 'question' => '1+2', 'answer' => '3' ] ],
+ [],
+ false,
+ ],
+ 'no answer' => [
+ [ '123', [ 'question' => '1+2', 'answer' => '3' ] ],
+ [ 'captchaId' => '345' ],
+ false,
+ ],
+ 'missing' => [
+ [ '123', [ 'question' => '1+2', 'answer' => '3' ] ],
+ [ 'captchaId' => '234', 'captchaWord' => '5' ],
+ false,
+ ],
+ 'normal' => [
+ [ '123', [ 'question' => '1+2', 'answer' => '3' ] ],
+ [ 'captchaId' => '345', 'captchaWord' => '5' ],
+ [ 'captchaId' => '345', 'captchaData' => [ 'question' => '2+2', 'answer' => '4' ],
+ 'captchaWord' => '5' ],
+ ],
+ ];
+ }
+}
diff --git a/www/wiki/extensions/ConfirmEdit/tests/CaptchaPreAuthenticationProviderTest.php b/www/wiki/extensions/ConfirmEdit/tests/CaptchaPreAuthenticationProviderTest.php
new file mode 100644
index 00000000..9606bb56
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/tests/CaptchaPreAuthenticationProviderTest.php
@@ -0,0 +1,294 @@
+<?php
+
+use MediaWiki\Auth\AuthManager;
+use MediaWiki\Auth\UsernameAuthenticationRequest;
+
+/**
+ * @group Database
+ */
+class CaptchaPreAuthenticationProviderTest extends MediaWikiTestCase {
+ public function setUp() {
+ global $wgDisableAuthManager;
+ if ( !class_exists( AuthManager::class ) || $wgDisableAuthManager ) {
+ $this->markTestSkipped( 'AuthManager is disabled' );
+ }
+
+ parent::setUp();
+ $this->setMwGlobals( [
+ 'wgCaptchaClass' => SimpleCaptcha::class,
+ 'wgCaptchaBadLoginAttempts' => 1,
+ 'wgCaptchaBadLoginPerUserAttempts' => 1,
+ 'wgCaptchaStorageClass' => CaptchaHashStore::class,
+ 'wgMainCacheType' => __METHOD__,
+ ] );
+ CaptchaStore::get()->clearAll();
+ ObjectCache::$instances[__METHOD__] = new HashBagOStuff();
+ }
+
+ public function tearDown() {
+ parent::tearDown();
+ // make sure $wgCaptcha resets between tests
+ TestingAccessWrapper::newFromClass( 'ConfirmEditHooks' )->instanceCreated = false;
+ }
+
+ /**
+ * @dataProvider provideGetAuthenticationRequests
+ */
+ public function testGetAuthenticationRequests(
+ $action, $username, $triggers, $needsCaptcha, $preTestCallback = null
+ ) {
+ $this->setTriggers( $triggers );
+ if ( $preTestCallback ) {
+ $fn = array_shift( $preTestCallback );
+ call_user_func_array( [ $this, $fn ], $preTestCallback );
+ }
+
+ /** @var FauxRequest $request */
+ $request = RequestContext::getMain()->getRequest();
+ $request->setCookie( 'UserName', $username );
+
+ $provider = new CaptchaPreAuthenticationProvider();
+ $provider->setManager( AuthManager::singleton() );
+ $reqs = $provider->getAuthenticationRequests( $action, [ 'username' => $username ] );
+ if ( $needsCaptcha ) {
+ $this->assertCount( 1, $reqs );
+ $this->assertInstanceOf( CaptchaAuthenticationRequest::class, $reqs[0] );
+ } else {
+ $this->assertEmpty( $reqs );
+ }
+ }
+
+ public function provideGetAuthenticationRequests() {
+ return [
+ [ AuthManager::ACTION_LOGIN, null, [], false ],
+ [ AuthManager::ACTION_LOGIN, null, [ 'badlogin' ], false ],
+ [ AuthManager::ACTION_LOGIN, null, [ 'badlogin' ], true, [ 'blockLogin', 'Foo' ] ],
+ [ AuthManager::ACTION_LOGIN, null, [ 'badloginperuser' ], false, [ 'blockLogin', 'Foo' ] ],
+ [ AuthManager::ACTION_LOGIN, 'Foo', [ 'badloginperuser' ], false, [ 'blockLogin', 'Bar' ] ],
+ [ AuthManager::ACTION_LOGIN, 'Foo', [ 'badloginperuser' ], true, [ 'blockLogin', 'Foo' ] ],
+ [ AuthManager::ACTION_LOGIN, null, [ 'badloginperuser' ], true, [ 'flagSession' ] ],
+ [ AuthManager::ACTION_CREATE, null, [], false ],
+ [ AuthManager::ACTION_CREATE, null, [ 'createaccount' ], true ],
+ [ AuthManager::ACTION_CREATE, 'UTSysop', [ 'createaccount' ], false ],
+ [ AuthManager::ACTION_LINK, null, [], false ],
+ [ AuthManager::ACTION_CHANGE, null, [], false ],
+ [ AuthManager::ACTION_REMOVE, null, [], false ],
+ ];
+ }
+
+ public function testGetAuthenticationRequests_store() {
+ $this->setTriggers( [ 'createaccount' ] );
+ $captcha = new SimpleCaptcha();
+ $provider = new CaptchaPreAuthenticationProvider();
+ $provider->setManager( AuthManager::singleton() );
+
+ $reqs = $provider->getAuthenticationRequests( AuthManager::ACTION_CREATE,
+ [ 'username' => 'Foo' ] );
+
+ $this->assertCount( 1, $reqs );
+ $this->assertInstanceOf( CaptchaAuthenticationRequest::class, $reqs[0] );
+
+ $id = $reqs[0]->captchaId;
+ $data = TestingAccessWrapper::newFromObject( $reqs[0] )->captchaData;
+ $this->assertEquals( $captcha->retrieveCaptcha( $id ), $data + [ 'index' => $id ] );
+ }
+
+ /**
+ * @dataProvider provideTestForAuthentication
+ */
+ public function testTestForAuthentication( $req, $isBadLoginTriggered,
+ $isBadLoginPerUserTriggered, $result
+ ) {
+ $this->setMwHook( 'PingLimiter', function ( $user, $action, &$result ) {
+ $result = false;
+ return false;
+ } );
+ CaptchaStore::get()->store( '345', [ 'question' => '2+2', 'answer' => '4' ] );
+ $captcha = $this->getMock( SimpleCaptcha::class,
+ [ 'isBadLoginTriggered', 'isBadLoginPerUserTriggered' ] );
+ $captcha->expects( $this->any() )->method( 'isBadLoginTriggered' )
+ ->willReturn( $isBadLoginTriggered );
+ $captcha->expects( $this->any() )->method( 'isBadLoginPerUserTriggered' )
+ ->willReturn( $isBadLoginPerUserTriggered );
+ $this->setMwGlobals( 'wgCaptcha', $captcha );
+ TestingAccessWrapper::newFromClass( 'ConfirmEditHooks' )->instanceCreated = true;
+ $provider = new CaptchaPreAuthenticationProvider();
+ $provider->setManager( AuthManager::singleton() );
+
+ $status = $provider->testForAuthentication( $req ? [ $req ] : [] );
+ $this->assertEquals( $result, $status->isGood() );
+ }
+
+ public function provideTestForAuthentication() {
+ $fallback = new UsernameAuthenticationRequest();
+ $fallback->username = 'Foo';
+ return [
+ // [ auth request, bad login?, bad login per user?, result ]
+ 'no need to check' => [ $fallback, false, false, true ],
+ 'badlogin' => [ $fallback, true, false, false ],
+ 'badloginperuser, no username' => [ null, false, true, true ],
+ 'badloginperuser' => [ $fallback, false, true, false ],
+ 'non-existent captcha' => [ $this->getCaptchaRequest( '123', '4' ), true, true, false ],
+ 'wrong captcha' => [ $this->getCaptchaRequest( '345', '6' ), true, true, false ],
+ 'correct captcha' => [ $this->getCaptchaRequest( '345', '4' ), true, true, true ],
+ ];
+ }
+
+ /**
+ * @dataProvider provideTestForAccountCreation
+ */
+ public function testTestForAccountCreation( $req, $creator, $result, $disableTrigger = false ) {
+ $this->setMwHook( 'PingLimiter', function ( &$user, $action, &$result ) {
+ $result = false;
+ return false;
+ } );
+ $this->setTriggers( $disableTrigger ? [] : [ 'createaccount' ] );
+ CaptchaStore::get()->store( '345', [ 'question' => '2+2', 'answer' => '4' ] );
+ $user = User::newFromName( 'Foo' );
+ $provider = new CaptchaPreAuthenticationProvider();
+ $provider->setManager( AuthManager::singleton() );
+
+ $status = $provider->testForAccountCreation( $user, $creator, $req ? [ $req ] : [] );
+ $this->assertEquals( $result, $status->isGood() );
+ }
+
+ public function provideTestForAccountCreation() {
+ $user = User::newFromName( 'Bar' );
+ $sysop = User::newFromName( 'UTSysop' );
+ return [
+ // [ auth request, creator, result, disable trigger? ]
+ 'no captcha' => [ null, $user, false ],
+ 'non-existent captcha' => [ $this->getCaptchaRequest( '123', '4' ), $user, false ],
+ 'wrong captcha' => [ $this->getCaptchaRequest( '345', '6' ), $user, false ],
+ 'correct captcha' => [ $this->getCaptchaRequest( '345', '4' ), $user, true ],
+ 'user is exempt' => [ null, $sysop, true ],
+ 'disabled' => [ null, $user, true, 'disable' ],
+ ];
+ }
+
+ public function testPostAuthentication() {
+ $this->setTriggers( [ 'badlogin', 'badloginperuser' ] );
+ $captcha = new SimpleCaptcha();
+ $user = User::newFromName( 'Foo' );
+ $anotherUser = User::newFromName( 'Bar' );
+ $provider = new CaptchaPreAuthenticationProvider();
+ $provider->setManager( AuthManager::singleton() );
+
+ $this->assertFalse( $captcha->isBadLoginTriggered() );
+ $this->assertFalse( $captcha->isBadLoginPerUserTriggered( $user ) );
+
+ $provider->postAuthentication( $user, \MediaWiki\Auth\AuthenticationResponse::newFail(
+ wfMessage( '?' ) ) );
+
+ $this->assertTrue( $captcha->isBadLoginTriggered() );
+ $this->assertTrue( $captcha->isBadLoginPerUserTriggered( $user ) );
+ $this->assertFalse( $captcha->isBadLoginPerUserTriggered( $anotherUser ) );
+
+ $provider->postAuthentication( $user, \MediaWiki\Auth\AuthenticationResponse::newPass( 'Foo' ) );
+
+ $this->assertFalse( $captcha->isBadLoginPerUserTriggered( $user ) );
+ }
+
+ public function testPostAuthentication_disabled() {
+ $this->setTriggers( [] );
+ $captcha = new SimpleCaptcha();
+ $user = User::newFromName( 'Foo' );
+ $provider = new CaptchaPreAuthenticationProvider();
+ $provider->setManager( AuthManager::singleton() );
+
+ $this->assertFalse( $captcha->isBadLoginTriggered() );
+ $this->assertFalse( $captcha->isBadLoginPerUserTriggered( $user ) );
+
+ $provider->postAuthentication( $user, \MediaWiki\Auth\AuthenticationResponse::newFail(
+ wfMessage( '?' ) ) );
+
+ $this->assertFalse( $captcha->isBadLoginTriggered() );
+ $this->assertFalse( $captcha->isBadLoginPerUserTriggered( $user ) );
+ }
+
+ /**
+ * @dataProvider providePingLimiter
+ */
+ public function testPingLimiter( array $attempts ) {
+ $this->mergeMwGlobalArrayValue( 'wgRateLimits', [ 'badcaptcha' => 1 ] );
+ $provider = new CaptchaPreAuthenticationProvider();
+ $provider->setManager( AuthManager::singleton() );
+ $providerAccess = TestingAccessWrapper::newFromObject( $provider );
+
+ foreach ( $attempts as $attempt ) {
+ if ( !empty( $attempts[3] ) ) {
+ $this->setMwHook( 'PingLimiter', function ( &$user, $action, &$result ) {
+ $result = false;
+ return false;
+ } );
+ } else {
+ $this->setMwHook( 'PingLimiter', function () {
+ } );
+ }
+
+ $captcha = new SimpleCaptcha();
+ CaptchaStore::get()->store( '345', [ 'question' => '7+7', 'answer' => '14' ] );
+ $success = $providerAccess->verifyCaptcha( $captcha, [ $attempts[0] ], $attempts[1] );
+ $this->assertEquals( $attempts[2], $success );
+ }
+ }
+
+ public function providePingLimiter() {
+ $sysop = User::newFromName( 'UTSysop' );
+ return [
+ // sequence of [ auth request, user, result, disable ping limiter? ]
+ 'no failure' => [
+ [ $this->getCaptchaRequest( '345', '14' ), new User(), true ],
+ [ $this->getCaptchaRequest( '345', '14' ), new User(), true ],
+ ],
+ 'limited' => [
+ [ $this->getCaptchaRequest( '345', '33' ), new User(), false ],
+ [ $this->getCaptchaRequest( '345', '14' ), new User(), false ],
+ ],
+ 'exempt user' => [
+ [ $this->getCaptchaRequest( '345', '33' ), $sysop, false ],
+ [ $this->getCaptchaRequest( '345', '14' ), $sysop, true ],
+ ],
+ 'pinglimiter disabled' => [
+ [ $this->getCaptchaRequest( '345', '33' ), new User(), false, 'disable' ],
+ [ $this->getCaptchaRequest( '345', '14' ), new User(), true, 'disable' ],
+ ],
+ ];
+ }
+
+ protected function getCaptchaRequest( $id, $word, $username = null ) {
+ $req = new CaptchaAuthenticationRequest( $id, [ 'question' => '?', 'answer' => $word ] );
+ $req->captchaWord = $word;
+ $req->username = $username;
+ return $req;
+ }
+
+ protected function blockLogin( $username ) {
+ $captcha = new SimpleCaptcha();
+ $captcha->increaseBadLoginCounter( $username );
+ }
+
+ protected function flagSession() {
+ RequestContext::getMain()->getRequest()->getSession()
+ ->set( 'ConfirmEdit:loginCaptchaPerUserTriggered', true );
+ }
+
+ protected function setTriggers( $triggers ) {
+ $types = [ 'edit', 'create', 'sendemail', 'addurl', 'createaccount', 'badlogin',
+ 'badloginperuser' ];
+ $captchaTriggers = array_combine( $types, array_map( function ( $type ) use ( $triggers ) {
+ return in_array( $type, $triggers, true );
+ }, $types ) );
+ $this->setMwGlobals( 'wgCaptchaTriggers', $captchaTriggers );
+ }
+
+ /**
+ * Set a $wgHooks handler for a given hook and remove all other handlers (though not ones
+ * set via Hooks::register). The original state will be restored after the test.
+ * @param string $hook Hook name
+ * @param callable $callback Hook method
+ */
+ protected function setMwHook( $hook, callable $callback ) {
+ $this->mergeMwGlobalArrayValue( 'wgHooks', [ $hook => $callback ] );
+ }
+}
diff --git a/www/wiki/extensions/ConfirmEdit/tests/HTMLFancyCaptchaFieldTest.php b/www/wiki/extensions/ConfirmEdit/tests/HTMLFancyCaptchaFieldTest.php
new file mode 100644
index 00000000..016302bc
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/tests/HTMLFancyCaptchaFieldTest.php
@@ -0,0 +1,42 @@
+<?php
+
+require_once __DIR__ . '/../FancyCaptcha/HTMLFancyCaptchaField.php';
+
+class HTMLFancyCaptchaFieldTest extends PHPUnit_Framework_TestCase {
+ public function testGetHTML() {
+ $html = $this->getForm( [ 'imageUrl' => 'https://example.com/' ] )->getHTML( false );
+ $this->assertRegExp( '/"fancycaptcha-image"/', $html );
+ $this->assertRegExp( '#src="https://example.com/"#', $html );
+ $this->assertNotRegExp( '/"mw-createacct-captcha-assisted"/', $html );
+
+ $html = $this->getForm( [ 'imageUrl' => '', 'showCreateHelp' => true ] )->getHTML( false );
+ $this->assertRegExp( '/"mw-createacct-captcha-assisted"/', $html );
+
+ $html = $this->getForm( [ 'imageUrl' => '', 'label' => 'FooBarBaz' ] )->getHTML( false );
+ $this->assertRegExp( '/FooBarBaz/', $html );
+ }
+
+ public function testValue() {
+ $mockClosure = $this->getMockBuilder( 'object' )->setMethods( [ '__invoke' ] )->getMock();
+ $request = new FauxRequest( [ 'wpcaptchaWord' => 'abc' ], true );
+ $form = $this->getForm( [ 'imageUrl' => 'https://example.com/' ], $request );
+ $form->setSubmitCallback( $mockClosure );
+
+ $mockClosure->expects( $this->once() )->method( '__invoke' )
+ ->with( [ 'captchaWord' => 'abc' ] )->willReturn( true );
+ $form->trySubmit();
+ }
+
+ protected function getForm( $params = [], WebRequest $request = null ) {
+ $params['class'] = HTMLFancyCaptchaField::class;
+ $form = new HTMLForm( [ 'captchaWord' => $params ] );
+ if ( $request ) {
+ $context = new DerivativeContext( RequestContext::getMain() );
+ $context->setRequest( $request );
+ $form->setContext( $context );
+ }
+ $form->setTitle( Title::newFromText( 'Foo' ) );
+ $form->prepareForm();
+ return $form;
+ }
+}
diff --git a/www/wiki/extensions/ConfirmEdit/tests/HTMLReCaptchaFieldTest.php b/www/wiki/extensions/ConfirmEdit/tests/HTMLReCaptchaFieldTest.php
new file mode 100644
index 00000000..a97b17a5
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/tests/HTMLReCaptchaFieldTest.php
@@ -0,0 +1,23 @@
+<?php
+
+require_once __DIR__ . '/../ReCaptcha/HTMLReCaptchaField.php';
+
+class HTMLReCaptchaFieldTest extends PHPUnit_Framework_TestCase {
+ public function testSubmit() {
+ $form = new HTMLForm( [
+ 'foo' => [
+ 'class' => HTMLReCaptchaField::class,
+ 'key' => '123',
+ 'theme' => 'x',
+ ],
+ ] );
+ $mockClosure = $this->getMockBuilder( 'object' )->setMethods( [ '__invoke' ] )->getMock();
+ $mockClosure->expects( $this->once() )->method( '__invoke' )
+ ->with( [] )->willReturn( true );
+
+ $form->setTitle( Title::newFromText( 'Title' ) );
+ $form->setSubmitCallback( $mockClosure );
+ $form->prepareForm();
+ $form->trySubmit();
+ }
+}
diff --git a/www/wiki/extensions/ConfirmEdit/tests/HTMLReCaptchaNoCaptchaFieldTest.php b/www/wiki/extensions/ConfirmEdit/tests/HTMLReCaptchaNoCaptchaFieldTest.php
new file mode 100644
index 00000000..5305db22
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/tests/HTMLReCaptchaNoCaptchaFieldTest.php
@@ -0,0 +1,29 @@
+<?php
+
+require_once __DIR__ . '/../ReCaptchaNoCaptcha/HTMLReCaptchaNoCaptchaField.php';
+
+class HTMLReCaptchaNoCaptchaFieldTest extends PHPUnit_Framework_TestCase {
+ public function testSubmit() {
+ $form = new HTMLForm( [
+ 'foo' => [
+ 'class' => HTMLReCaptchaNoCaptchaField::class,
+ 'key' => '123',
+ ],
+ ] );
+ $request = new FauxRequest( [
+ 'foo' => 'abc',
+ 'g-recaptcha-response' => 'def',
+ ], true );
+ $mockClosure = $this->getMockBuilder( 'object' )->setMethods( [ '__invoke' ] )->getMock();
+ $mockClosure->expects( $this->once() )->method( '__invoke' )
+ ->with( [ 'foo' => 'def' ] )->willReturn( true );
+
+ $context = new DerivativeContext( RequestContext::getMain() );
+ $context->setRequest( $request );
+ $form->setTitle( Title::newFromText( 'Title' ) );
+ $form->setContext( $context );
+ $form->setSubmitCallback( $mockClosure );
+ $form->prepareForm();
+ $form->trySubmit();
+ }
+}
diff --git a/www/wiki/extensions/ConfirmEdit/tests/HTMLSubmittedValueFieldTest.php b/www/wiki/extensions/ConfirmEdit/tests/HTMLSubmittedValueFieldTest.php
new file mode 100644
index 00000000..1fdb015a
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/tests/HTMLSubmittedValueFieldTest.php
@@ -0,0 +1,29 @@
+<?php
+
+require_once __DIR__ . '/../ReCaptcha/HTMLSubmittedValueField.php';
+
+class HTMLSubmittedValueFieldTest extends PHPUnit_Framework_TestCase {
+ public function testSubmit() {
+ $form = new HTMLForm( [
+ 'foo' => [
+ 'class' => HTMLSubmittedValueField::class,
+ 'name' => 'bar',
+ ],
+ ] );
+ $request = new FauxRequest( [
+ 'foo' => '123',
+ 'bar' => '456',
+ ], true );
+ $mockClosure = $this->getMockBuilder( 'object' )->setMethods( [ '__invoke' ] )->getMock();
+ $mockClosure->expects( $this->once() )->method( '__invoke' )
+ ->with( [ 'foo' => '456' ] )->willReturn( true );
+
+ $context = new DerivativeContext( RequestContext::getMain() );
+ $context->setRequest( $request );
+ $form->setTitle( Title::newFromText( 'Title' ) );
+ $form->setContext( $context );
+ $form->setSubmitCallback( $mockClosure );
+ $form->prepareForm();
+ $form->trySubmit();
+ }
+}
diff --git a/www/wiki/extensions/ConfirmEdit/tests/QuestyCaptchaTest.php b/www/wiki/extensions/ConfirmEdit/tests/QuestyCaptchaTest.php
new file mode 100644
index 00000000..b5567bda
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/tests/QuestyCaptchaTest.php
@@ -0,0 +1,49 @@
+<?php
+
+class QuestyCaptchaTest extends MediaWikiTestCase {
+ /**
+ * @covers QuestyCaptcha::getCaptcha
+ * @dataProvider provideGetCaptcha
+ */
+ public function testGetCaptcha( $config, $expected ) {
+
+ # setMwGlobals() requires $wgCaptchaQuestion to be set
+ if ( !isset( $GLOBALS['wgCaptchaQuestions'] ) ) {
+ $GLOBALS['wgCaptchaQuestions'] = [];
+ }
+ $this->setMwGlobals( 'wgCaptchaQuestions', $config );
+ $this->mergeMwGlobalArrayValue(
+ 'wgAutoloadClasses',
+ [ 'QuestyCaptcha' => __DIR__ . '/../QuestyCaptcha/QuestyCaptcha.class.php' ]
+ );
+
+ $qc = new QuestyCaptcha();
+ $this->assertEquals( $expected, $qc->getCaptcha() );
+ }
+
+ public static function provideGetCaptcha() {
+ return [
+ [
+ [
+ [
+ 'question' => 'FooBar',
+ 'answer' => 'Answer!',
+ ],
+ ],
+ [
+ 'question' => 'FooBar',
+ 'answer' => 'Answer!',
+ ],
+ ],
+ [
+ [
+ 'FooBar' => 'Answer!',
+ ],
+ [
+ 'question' => 'FooBar',
+ 'answer' => 'Answer!',
+ ],
+ ]
+ ];
+ }
+}
diff --git a/www/wiki/extensions/ConfirmEdit/tests/ReCaptchaAuthenticationRequestTest.php b/www/wiki/extensions/ConfirmEdit/tests/ReCaptchaAuthenticationRequestTest.php
new file mode 100644
index 00000000..c2e3b42e
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/tests/ReCaptchaAuthenticationRequestTest.php
@@ -0,0 +1,20 @@
+<?php
+
+use MediaWiki\Auth\AuthenticationRequestTestCase;
+
+require_once __DIR__ . '/../ReCaptcha/ReCaptchaAuthenticationRequest.php';
+
+class ReCaptchaAuthenticationRequestTest extends AuthenticationRequestTestCase {
+ protected function getInstance( array $args = [] ) {
+ return new ReCaptchaAuthenticationRequest();
+ }
+
+ public function provideLoadFromSubmission() {
+ return [
+ 'no challange id' => [ [], [ 'captchaWord' => 'abc' ], false ],
+ 'no solution' => [ [], [ 'captchaId' => '123' ], false ],
+ 'normal' => [ [], [ 'captchaId' => '123', 'captchaWord' => 'abc' ],
+ [ 'captchaId' => '123', 'captchaWord' => 'abc' ] ],
+ ];
+ }
+}
diff --git a/www/wiki/extensions/ConfirmEdit/tests/ReCaptchaNoCaptchaAuthenticationRequestTest.php b/www/wiki/extensions/ConfirmEdit/tests/ReCaptchaNoCaptchaAuthenticationRequestTest.php
new file mode 100644
index 00000000..fe3fe2e7
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/tests/ReCaptchaNoCaptchaAuthenticationRequestTest.php
@@ -0,0 +1,18 @@
+<?php
+
+use MediaWiki\Auth\AuthenticationRequestTestCase;
+
+require_once __DIR__ . '/../ReCaptchaNoCaptcha/ReCaptchaNoCaptchaAuthenticationRequest.php';
+
+class ReCaptchaNoCaptchaAuthenticationRequestTest extends AuthenticationRequestTestCase {
+ protected function getInstance( array $args = [] ) {
+ return new ReCaptchaNoCaptchaAuthenticationRequest();
+ }
+
+ public function provideLoadFromSubmission() {
+ return [
+ 'no proof' => [ [], [], false ],
+ 'normal' => [ [], [ 'captchaWord' => 'abc' ], [ 'captchaWord' => 'abc' ] ],
+ ];
+ }
+}
diff --git a/www/wiki/extensions/ConfirmEdit/tests/phpunit/CaptchaAuthenticationRequestTest.php b/www/wiki/extensions/ConfirmEdit/tests/phpunit/CaptchaAuthenticationRequestTest.php
new file mode 100644
index 00000000..380716fe
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/tests/phpunit/CaptchaAuthenticationRequestTest.php
@@ -0,0 +1,55 @@
+<?php
+
+use MediaWiki\Auth\AuthenticationRequestTestCase;
+
+/**
+ * @covers CaptchaAuthenticationRequest
+ */
+class CaptchaAuthenticationRequestTest extends AuthenticationRequestTestCase {
+ public function setUp() {
+ parent::setUp();
+ $this->setMwGlobals( [
+ 'wgCaptchaClass' => 'SimpleCaptcha',
+ 'wgCaptchaStorageClass' => CaptchaHashStore::class,
+ ] );
+ CaptchaStore::unsetInstanceForTests();
+ CaptchaStore::get()->clearAll();
+ CaptchaStore::get()->store( '345', [ 'question' => '2+2', 'answer' => '4' ] );
+ }
+
+ protected function getInstance( array $args = [] ) {
+ return new CaptchaAuthenticationRequest( $args[0], $args[1] );
+ }
+
+ public static function provideGetFieldInfo() {
+ return [
+ [ [ '123', [ 'question' => '1+2', 'answer' => '3' ] ] ],
+ ];
+ }
+
+ public function provideLoadFromSubmission() {
+ return [
+ 'no id' => [
+ [ '123', [ 'question' => '1+2', 'answer' => '3' ] ],
+ [],
+ false,
+ ],
+ 'no answer' => [
+ [ '123', [ 'question' => '1+2', 'answer' => '3' ] ],
+ [ 'captchaId' => '345' ],
+ false,
+ ],
+ 'missing' => [
+ [ '123', [ 'question' => '1+2', 'answer' => '3' ] ],
+ [ 'captchaId' => '234', 'captchaWord' => '5' ],
+ false,
+ ],
+ 'normal' => [
+ [ '123', [ 'question' => '1+2', 'answer' => '3' ] ],
+ [ 'captchaId' => '345', 'captchaWord' => '5' ],
+ [ 'captchaId' => '345', 'captchaData' => [ 'question' => '2+2', 'answer' => '4' ],
+ 'captchaWord' => '5' ],
+ ],
+ ];
+ }
+}
diff --git a/www/wiki/extensions/ConfirmEdit/tests/phpunit/CaptchaPreAuthenticationProviderTest.php b/www/wiki/extensions/ConfirmEdit/tests/phpunit/CaptchaPreAuthenticationProviderTest.php
new file mode 100644
index 00000000..8e56c369
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/tests/phpunit/CaptchaPreAuthenticationProviderTest.php
@@ -0,0 +1,304 @@
+<?php
+
+use MediaWiki\Auth\AuthManager;
+use MediaWiki\Auth\UsernameAuthenticationRequest;
+use Wikimedia\TestingAccessWrapper;
+
+/**
+ * @covers CaptchaPreAuthenticationProvider
+ * @group Database
+ */
+class CaptchaPreAuthenticationProviderTest extends MediaWikiTestCase {
+ public function setUp() {
+ parent::setUp();
+ $this->setMwGlobals( [
+ 'wgCaptchaClass' => SimpleCaptcha::class,
+ 'wgCaptchaBadLoginAttempts' => 1,
+ 'wgCaptchaBadLoginPerUserAttempts' => 1,
+ 'wgCaptchaStorageClass' => CaptchaHashStore::class,
+ 'wgMainCacheType' => __METHOD__,
+ ] );
+ CaptchaStore::unsetInstanceForTests();
+ CaptchaStore::get()->clearAll();
+ $services = \MediaWiki\MediaWikiServices::getInstance();
+ if ( method_exists( $services, 'getLocalClusterObjectCache' ) ) {
+ $this->setService( 'LocalClusterObjectCache', new HashBagOStuff() );
+ } else {
+ ObjectCache::$instances[__METHOD__] = new HashBagOStuff();
+ }
+ }
+
+ public function tearDown() {
+ parent::tearDown();
+ // make sure $wgCaptcha resets between tests
+ TestingAccessWrapper::newFromClass( 'ConfirmEditHooks' )->instanceCreated = false;
+ }
+
+ /**
+ * @dataProvider provideGetAuthenticationRequests
+ */
+ public function testGetAuthenticationRequests(
+ $action, $username, $triggers, $needsCaptcha, $preTestCallback = null
+ ) {
+ $this->setTriggers( $triggers );
+ if ( $preTestCallback ) {
+ $fn = array_shift( $preTestCallback );
+ call_user_func_array( [ $this, $fn ], $preTestCallback );
+ }
+
+ /** @var FauxRequest $request */
+ $request = RequestContext::getMain()->getRequest();
+ $request->setCookie( 'UserName', $username );
+
+ $provider = new CaptchaPreAuthenticationProvider();
+ $provider->setManager( AuthManager::singleton() );
+ $reqs = $provider->getAuthenticationRequests( $action, [ 'username' => $username ] );
+ if ( $needsCaptcha ) {
+ $this->assertCount( 1, $reqs );
+ $this->assertInstanceOf( CaptchaAuthenticationRequest::class, $reqs[0] );
+ } else {
+ $this->assertEmpty( $reqs );
+ }
+ }
+
+ public function provideGetAuthenticationRequests() {
+ return [
+ [ AuthManager::ACTION_LOGIN, null, [], false ],
+ [ AuthManager::ACTION_LOGIN, null, [ 'badlogin' ], false ],
+ [ AuthManager::ACTION_LOGIN, null, [ 'badlogin' ], true, [ 'blockLogin', 'Foo' ] ],
+ [ AuthManager::ACTION_LOGIN, null, [ 'badloginperuser' ], false, [ 'blockLogin', 'Foo' ] ],
+ [ AuthManager::ACTION_LOGIN, 'Foo', [ 'badloginperuser' ], false, [ 'blockLogin', 'Bar' ] ],
+ [ AuthManager::ACTION_LOGIN, 'Foo', [ 'badloginperuser' ], true, [ 'blockLogin', 'Foo' ] ],
+ [ AuthManager::ACTION_LOGIN, null, [ 'badloginperuser' ], true, [ 'flagSession' ] ],
+ [ AuthManager::ACTION_CREATE, null, [], false ],
+ [ AuthManager::ACTION_CREATE, null, [ 'createaccount' ], true ],
+ [ AuthManager::ACTION_CREATE, 'UTSysop', [ 'createaccount' ], false ],
+ [ AuthManager::ACTION_LINK, null, [], false ],
+ [ AuthManager::ACTION_CHANGE, null, [], false ],
+ [ AuthManager::ACTION_REMOVE, null, [], false ],
+ ];
+ }
+
+ public function testGetAuthenticationRequests_store() {
+ $this->setTriggers( [ 'createaccount' ] );
+ $captcha = new SimpleCaptcha();
+ $provider = new CaptchaPreAuthenticationProvider();
+ $provider->setManager( AuthManager::singleton() );
+
+ $reqs = $provider->getAuthenticationRequests( AuthManager::ACTION_CREATE,
+ [ 'username' => 'Foo' ] );
+
+ $this->assertCount( 1, $reqs );
+ $this->assertInstanceOf( CaptchaAuthenticationRequest::class, $reqs[0] );
+
+ $id = $reqs[0]->captchaId;
+ $data = TestingAccessWrapper::newFromObject( $reqs[0] )->captchaData;
+ $this->assertEquals( $captcha->retrieveCaptcha( $id ), $data + [ 'index' => $id ] );
+ }
+
+ /**
+ * @dataProvider provideTestForAuthentication
+ */
+ public function testTestForAuthentication( $req, $isBadLoginTriggered,
+ $isBadLoginPerUserTriggered, $result
+ ) {
+ $this->setMwHook( 'PingLimiter', function ( $user, $action, &$result ) {
+ $result = false;
+ return false;
+ } );
+ CaptchaStore::get()->store( '345', [ 'question' => '2+2', 'answer' => '4' ] );
+ $captcha = $this->getMock( SimpleCaptcha::class,
+ [ 'isBadLoginTriggered', 'isBadLoginPerUserTriggered' ] );
+ $captcha->expects( $this->any() )->method( 'isBadLoginTriggered' )
+ ->willReturn( $isBadLoginTriggered );
+ $captcha->expects( $this->any() )->method( 'isBadLoginPerUserTriggered' )
+ ->willReturn( $isBadLoginPerUserTriggered );
+ $this->setMwGlobals( 'wgCaptcha', $captcha );
+ TestingAccessWrapper::newFromClass( 'ConfirmEditHooks' )->instanceCreated = true;
+ $provider = new CaptchaPreAuthenticationProvider();
+ $provider->setManager( AuthManager::singleton() );
+
+ $status = $provider->testForAuthentication( $req ? [ $req ] : [] );
+ $this->assertEquals( $result, $status->isGood() );
+ }
+
+ public function provideTestForAuthentication() {
+ $fallback = new UsernameAuthenticationRequest();
+ $fallback->username = 'Foo';
+ return [
+ // [ auth request, bad login?, bad login per user?, result ]
+ 'no need to check' => [ $fallback, false, false, true ],
+ 'badlogin' => [ $fallback, true, false, false ],
+ 'badloginperuser, no username' => [ null, false, true, true ],
+ 'badloginperuser' => [ $fallback, false, true, false ],
+ 'non-existent captcha' => [ $this->getCaptchaRequest( '123', '4' ), true, true, false ],
+ 'wrong captcha' => [ $this->getCaptchaRequest( '345', '6' ), true, true, false ],
+ 'correct captcha' => [ $this->getCaptchaRequest( '345', '4' ), true, true, true ],
+ ];
+ }
+
+ /**
+ * @dataProvider provideTestForAccountCreation
+ */
+ public function testTestForAccountCreation( $req, $creator, $result, $disableTrigger = false ) {
+ $this->setMwHook( 'PingLimiter', function ( &$user, $action, &$result ) {
+ $result = false;
+ return false;
+ } );
+ $this->setTriggers( $disableTrigger ? [] : [ 'createaccount' ] );
+ CaptchaStore::get()->store( '345', [ 'question' => '2+2', 'answer' => '4' ] );
+ $user = User::newFromName( 'Foo' );
+ $provider = new CaptchaPreAuthenticationProvider();
+ $provider->setManager( AuthManager::singleton() );
+
+ $status = $provider->testForAccountCreation( $user, $creator, $req ? [ $req ] : [] );
+ $this->assertEquals( $result, $status->isGood() );
+ }
+
+ public function provideTestForAccountCreation() {
+ $user = User::newFromName( 'Bar' );
+ $sysop = User::newFromName( 'UTSysop' );
+ return [
+ // [ auth request, creator, result, disable trigger? ]
+ 'no captcha' => [ null, $user, false ],
+ 'non-existent captcha' => [ $this->getCaptchaRequest( '123', '4' ), $user, false ],
+ 'wrong captcha' => [ $this->getCaptchaRequest( '345', '6' ), $user, false ],
+ 'correct captcha' => [ $this->getCaptchaRequest( '345', '4' ), $user, true ],
+ 'user is exempt' => [ null, $sysop, true ],
+ 'disabled' => [ null, $user, true, 'disable' ],
+ ];
+ }
+
+ public function testPostAuthentication() {
+ $this->setTriggers( [ 'badlogin', 'badloginperuser' ] );
+ $captcha = new SimpleCaptcha();
+ $user = User::newFromName( 'Foo' );
+ $anotherUser = User::newFromName( 'Bar' );
+ $provider = new CaptchaPreAuthenticationProvider();
+ $provider->setManager( AuthManager::singleton() );
+
+ $this->assertFalse( $captcha->isBadLoginTriggered() );
+ $this->assertFalse( $captcha->isBadLoginPerUserTriggered( $user ) );
+
+ $provider->postAuthentication( $user, \MediaWiki\Auth\AuthenticationResponse::newFail(
+ wfMessage( '?' ) ) );
+
+ $this->assertTrue( $captcha->isBadLoginTriggered() );
+ $this->assertTrue( $captcha->isBadLoginPerUserTriggered( $user ) );
+ $this->assertFalse( $captcha->isBadLoginPerUserTriggered( $anotherUser ) );
+
+ $provider->postAuthentication( $user, \MediaWiki\Auth\AuthenticationResponse::newPass( 'Foo' ) );
+
+ $this->assertFalse( $captcha->isBadLoginPerUserTriggered( $user ) );
+ }
+
+ public function testPostAuthentication_disabled() {
+ $this->setTriggers( [] );
+ $captcha = new SimpleCaptcha();
+ $user = User::newFromName( 'Foo' );
+ $provider = new CaptchaPreAuthenticationProvider();
+ $provider->setManager( AuthManager::singleton() );
+
+ $this->assertFalse( $captcha->isBadLoginTriggered() );
+ $this->assertFalse( $captcha->isBadLoginPerUserTriggered( $user ) );
+
+ $provider->postAuthentication( $user, \MediaWiki\Auth\AuthenticationResponse::newFail(
+ wfMessage( '?' ) ) );
+
+ $this->assertFalse( $captcha->isBadLoginTriggered() );
+ $this->assertFalse( $captcha->isBadLoginPerUserTriggered( $user ) );
+ }
+
+ /**
+ * @dataProvider providePingLimiter
+ */
+ public function testPingLimiter( array $attempts ) {
+ $this->mergeMwGlobalArrayValue(
+ 'wgRateLimits',
+ [
+ 'badcaptcha' => [
+ 'user' => [ 1, 1 ],
+ ],
+ ]
+ );
+ $provider = new CaptchaPreAuthenticationProvider();
+ $provider->setManager( AuthManager::singleton() );
+ $providerAccess = TestingAccessWrapper::newFromObject( $provider );
+
+ foreach ( $attempts as $attempt ) {
+ if ( !empty( $attempts[3] ) ) {
+ $this->setMwHook( 'PingLimiter', function ( &$user, $action, &$result ) {
+ $result = false;
+ return false;
+ } );
+ } else {
+ $this->setMwHook( 'PingLimiter', function () {
+ } );
+ }
+
+ $captcha = new SimpleCaptcha();
+ CaptchaStore::get()->store( '345', [ 'question' => '7+7', 'answer' => '14' ] );
+ $success = $providerAccess->verifyCaptcha( $captcha, [ $attempts[0] ], $attempts[1] );
+ $this->assertEquals( $attempts[2], $success );
+ }
+ }
+
+ public function providePingLimiter() {
+ $sysop = User::newFromName( 'UTSysop' );
+ return [
+ // sequence of [ auth request, user, result, disable ping limiter? ]
+ 'no failure' => [
+ [ $this->getCaptchaRequest( '345', '14' ), new User(), true ],
+ [ $this->getCaptchaRequest( '345', '14' ), new User(), true ],
+ ],
+ 'limited' => [
+ [ $this->getCaptchaRequest( '345', '33' ), new User(), false ],
+ [ $this->getCaptchaRequest( '345', '14' ), new User(), false ],
+ ],
+ 'exempt user' => [
+ [ $this->getCaptchaRequest( '345', '33' ), $sysop, false ],
+ [ $this->getCaptchaRequest( '345', '14' ), $sysop, true ],
+ ],
+ 'pinglimiter disabled' => [
+ [ $this->getCaptchaRequest( '345', '33' ), new User(), false, 'disable' ],
+ [ $this->getCaptchaRequest( '345', '14' ), new User(), true, 'disable' ],
+ ],
+ ];
+ }
+
+ protected function getCaptchaRequest( $id, $word, $username = null ) {
+ $req = new CaptchaAuthenticationRequest( $id, [ 'question' => '?', 'answer' => $word ] );
+ $req->captchaWord = $word;
+ $req->username = $username;
+ return $req;
+ }
+
+ protected function blockLogin( $username ) {
+ $captcha = new SimpleCaptcha();
+ $captcha->increaseBadLoginCounter( $username );
+ }
+
+ protected function flagSession() {
+ RequestContext::getMain()->getRequest()->getSession()
+ ->set( 'ConfirmEdit:loginCaptchaPerUserTriggered', true );
+ }
+
+ protected function setTriggers( $triggers ) {
+ $types = [ 'edit', 'create', 'sendemail', 'addurl', 'createaccount', 'badlogin',
+ 'badloginperuser' ];
+ $captchaTriggers = array_combine( $types, array_map( function ( $type ) use ( $triggers ) {
+ return in_array( $type, $triggers, true );
+ }, $types ) );
+ $this->setMwGlobals( 'wgCaptchaTriggers', $captchaTriggers );
+ }
+
+ /**
+ * Set a $wgHooks handler for a given hook and remove all other handlers (though not ones
+ * set via Hooks::register). The original state will be restored after the test.
+ * @param string $hook Hook name
+ * @param callable $callback Hook method
+ */
+ protected function setMwHook( $hook, callable $callback ) {
+ $this->mergeMwGlobalArrayValue( 'wgHooks', [ $hook => $callback ] );
+ }
+}
diff --git a/www/wiki/extensions/ConfirmEdit/tests/phpunit/HTMLFancyCaptchaFieldTest.php b/www/wiki/extensions/ConfirmEdit/tests/phpunit/HTMLFancyCaptchaFieldTest.php
new file mode 100644
index 00000000..b123d214
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/tests/phpunit/HTMLFancyCaptchaFieldTest.php
@@ -0,0 +1,45 @@
+<?php
+
+require_once __DIR__ . '/../../FancyCaptcha/HTMLFancyCaptchaField.php';
+
+/**
+ * @covers HTMLFancyCaptchaField
+ */
+class HTMLFancyCaptchaFieldTest extends PHPUnit\Framework\TestCase {
+ public function testGetHTML() {
+ $html = $this->getForm( [ 'imageUrl' => 'https://example.com/' ] )->getHTML( false );
+ $this->assertRegExp( '/"fancycaptcha-image"/', $html );
+ $this->assertRegExp( '#src="https://example.com/"#', $html );
+ $this->assertNotRegExp( '/"mw-createacct-captcha-assisted"/', $html );
+
+ $html = $this->getForm( [ 'imageUrl' => '', 'showCreateHelp' => true ] )->getHTML( false );
+ $this->assertRegExp( '/"mw-createacct-captcha-assisted"/', $html );
+
+ $html = $this->getForm( [ 'imageUrl' => '', 'label' => 'FooBarBaz' ] )->getHTML( false );
+ $this->assertRegExp( '/FooBarBaz/', $html );
+ }
+
+ public function testValue() {
+ $mockClosure = $this->getMockBuilder( 'object' )->setMethods( [ '__invoke' ] )->getMock();
+ $request = new FauxRequest( [ 'wpcaptchaWord' => 'abc' ], true );
+ $form = $this->getForm( [ 'imageUrl' => 'https://example.com/' ], $request );
+ $form->setSubmitCallback( $mockClosure );
+
+ $mockClosure->expects( $this->once() )->method( '__invoke' )
+ ->with( [ 'captchaWord' => 'abc' ] )->willReturn( true );
+ $form->trySubmit();
+ }
+
+ protected function getForm( $params = [], WebRequest $request = null ) {
+ $params['class'] = HTMLFancyCaptchaField::class;
+ $form = new HTMLForm( [ 'captchaWord' => $params ] );
+ if ( $request ) {
+ $context = new DerivativeContext( RequestContext::getMain() );
+ $context->setRequest( $request );
+ $form->setContext( $context );
+ }
+ $form->setTitle( Title::newFromText( 'Foo' ) );
+ $form->prepareForm();
+ return $form;
+ }
+}
diff --git a/www/wiki/extensions/ConfirmEdit/tests/phpunit/HTMLReCaptchaFieldTest.php b/www/wiki/extensions/ConfirmEdit/tests/phpunit/HTMLReCaptchaFieldTest.php
new file mode 100644
index 00000000..601168ed
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/tests/phpunit/HTMLReCaptchaFieldTest.php
@@ -0,0 +1,26 @@
+<?php
+
+require_once __DIR__ . '/../../ReCaptcha/HTMLReCaptchaField.php';
+
+/**
+ * @covers HTMLReCaptchaField
+ */
+class HTMLReCaptchaFieldTest extends PHPUnit\Framework\TestCase {
+ public function testSubmit() {
+ $form = new HTMLForm( [
+ 'foo' => [
+ 'class' => HTMLReCaptchaField::class,
+ 'key' => '123',
+ 'theme' => 'x',
+ ],
+ ] );
+ $mockClosure = $this->getMockBuilder( 'object' )->setMethods( [ '__invoke' ] )->getMock();
+ $mockClosure->expects( $this->once() )->method( '__invoke' )
+ ->with( [] )->willReturn( true );
+
+ $form->setTitle( Title::newFromText( 'Title' ) );
+ $form->setSubmitCallback( $mockClosure );
+ $form->prepareForm();
+ $form->trySubmit();
+ }
+}
diff --git a/www/wiki/extensions/ConfirmEdit/tests/phpunit/HTMLReCaptchaNoCaptchaFieldTest.php b/www/wiki/extensions/ConfirmEdit/tests/phpunit/HTMLReCaptchaNoCaptchaFieldTest.php
new file mode 100644
index 00000000..e6626f75
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/tests/phpunit/HTMLReCaptchaNoCaptchaFieldTest.php
@@ -0,0 +1,32 @@
+<?php
+
+require_once __DIR__ . '/../../ReCaptchaNoCaptcha/HTMLReCaptchaNoCaptchaField.php';
+
+/**
+ * @covers HTMLReCaptchaNoCaptchaField
+ */
+class HTMLReCaptchaNoCaptchaFieldTest extends PHPUnit\Framework\TestCase {
+ public function testSubmit() {
+ $form = new HTMLForm( [
+ 'foo' => [
+ 'class' => HTMLReCaptchaNoCaptchaField::class,
+ 'key' => '123',
+ ],
+ ] );
+ $request = new FauxRequest( [
+ 'foo' => 'abc',
+ 'g-recaptcha-response' => 'def',
+ ], true );
+ $mockClosure = $this->getMockBuilder( 'object' )->setMethods( [ '__invoke' ] )->getMock();
+ $mockClosure->expects( $this->once() )->method( '__invoke' )
+ ->with( [ 'foo' => 'def' ] )->willReturn( true );
+
+ $context = new DerivativeContext( RequestContext::getMain() );
+ $context->setRequest( $request );
+ $form->setTitle( Title::newFromText( 'Title' ) );
+ $form->setContext( $context );
+ $form->setSubmitCallback( $mockClosure );
+ $form->prepareForm();
+ $form->trySubmit();
+ }
+}
diff --git a/www/wiki/extensions/ConfirmEdit/tests/phpunit/HTMLSubmittedValueFieldTest.php b/www/wiki/extensions/ConfirmEdit/tests/phpunit/HTMLSubmittedValueFieldTest.php
new file mode 100644
index 00000000..70cf2f3c
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/tests/phpunit/HTMLSubmittedValueFieldTest.php
@@ -0,0 +1,32 @@
+<?php
+
+require_once __DIR__ . '/../../ReCaptcha/HTMLSubmittedValueField.php';
+
+/**
+ * @covers HTMLSubmittedValueField
+ */
+class HTMLSubmittedValueFieldTest extends PHPUnit\Framework\TestCase {
+ public function testSubmit() {
+ $form = new HTMLForm( [
+ 'foo' => [
+ 'class' => HTMLSubmittedValueField::class,
+ 'name' => 'bar',
+ ],
+ ] );
+ $request = new FauxRequest( [
+ 'foo' => '123',
+ 'bar' => '456',
+ ], true );
+ $mockClosure = $this->getMockBuilder( 'object' )->setMethods( [ '__invoke' ] )->getMock();
+ $mockClosure->expects( $this->once() )->method( '__invoke' )
+ ->with( [ 'foo' => '456' ] )->willReturn( true );
+
+ $context = new DerivativeContext( RequestContext::getMain() );
+ $context->setRequest( $request );
+ $form->setTitle( Title::newFromText( 'Title' ) );
+ $form->setContext( $context );
+ $form->setSubmitCallback( $mockClosure );
+ $form->prepareForm();
+ $form->trySubmit();
+ }
+}
diff --git a/www/wiki/extensions/ConfirmEdit/tests/phpunit/QuestyCaptchaTest.php b/www/wiki/extensions/ConfirmEdit/tests/phpunit/QuestyCaptchaTest.php
new file mode 100644
index 00000000..e76469ba
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/tests/phpunit/QuestyCaptchaTest.php
@@ -0,0 +1,57 @@
+<?php
+
+/**
+ * @covers QuestyCaptcha
+ */
+class QuestyCaptchaTest extends MediaWikiTestCase {
+
+ public function setUp() {
+ parent::setUp();
+
+ $this->mergeMwGlobalArrayValue(
+ 'wgAutoloadClasses',
+ [ 'QuestyCaptcha' => __DIR__ . '/../../QuestyCaptcha/QuestyCaptcha.class.php' ]
+ );
+ }
+
+ /**
+ * @covers QuestyCaptcha::getCaptcha
+ * @dataProvider provideGetCaptcha
+ */
+ public function testGetCaptcha( $config, $expected ) {
+ # setMwGlobals() requires $wgCaptchaQuestion to be set
+ if ( !isset( $GLOBALS['wgCaptchaQuestions'] ) ) {
+ $GLOBALS['wgCaptchaQuestions'] = [];
+ }
+ $this->setMwGlobals( 'wgCaptchaQuestions', $config );
+
+ $qc = new QuestyCaptcha();
+ $this->assertEquals( $expected, $qc->getCaptcha() );
+ }
+
+ public static function provideGetCaptcha() {
+ return [
+ [
+ [
+ [
+ 'question' => 'FooBar',
+ 'answer' => 'Answer!',
+ ],
+ ],
+ [
+ 'question' => 'FooBar',
+ 'answer' => 'Answer!',
+ ],
+ ],
+ [
+ [
+ 'FooBar' => 'Answer!',
+ ],
+ [
+ 'question' => 'FooBar',
+ 'answer' => 'Answer!',
+ ],
+ ]
+ ];
+ }
+}
diff --git a/www/wiki/extensions/ConfirmEdit/tests/phpunit/ReCaptchaAuthenticationRequestTest.php b/www/wiki/extensions/ConfirmEdit/tests/phpunit/ReCaptchaAuthenticationRequestTest.php
new file mode 100644
index 00000000..bc645b89
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/tests/phpunit/ReCaptchaAuthenticationRequestTest.php
@@ -0,0 +1,23 @@
+<?php
+
+use MediaWiki\Auth\AuthenticationRequestTestCase;
+
+require_once __DIR__ . '/../../ReCaptcha/ReCaptchaAuthenticationRequest.php';
+
+/**
+ * @covers ReCaptchaAuthenticationRequest
+ */
+class ReCaptchaAuthenticationRequestTest extends AuthenticationRequestTestCase {
+ protected function getInstance( array $args = [] ) {
+ return new ReCaptchaAuthenticationRequest();
+ }
+
+ public function provideLoadFromSubmission() {
+ return [
+ 'no challange id' => [ [], [ 'captchaWord' => 'abc' ], false ],
+ 'no solution' => [ [], [ 'captchaId' => '123' ], false ],
+ 'normal' => [ [], [ 'captchaId' => '123', 'captchaWord' => 'abc' ],
+ [ 'captchaId' => '123', 'captchaWord' => 'abc' ] ],
+ ];
+ }
+}
diff --git a/www/wiki/extensions/ConfirmEdit/tests/phpunit/ReCaptchaNoCaptchaAuthenticationRequestTest.php b/www/wiki/extensions/ConfirmEdit/tests/phpunit/ReCaptchaNoCaptchaAuthenticationRequestTest.php
new file mode 100644
index 00000000..d4917b51
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/tests/phpunit/ReCaptchaNoCaptchaAuthenticationRequestTest.php
@@ -0,0 +1,21 @@
+<?php
+
+use MediaWiki\Auth\AuthenticationRequestTestCase;
+
+require_once __DIR__ . '/../../ReCaptchaNoCaptcha/ReCaptchaNoCaptchaAuthenticationRequest.php';
+
+/**
+ * @covers ReCaptchaNoCaptchaAuthenticationRequest
+ */
+class ReCaptchaNoCaptchaAuthenticationRequestTest extends AuthenticationRequestTestCase {
+ protected function getInstance( array $args = [] ) {
+ return new ReCaptchaNoCaptchaAuthenticationRequest();
+ }
+
+ public function provideLoadFromSubmission() {
+ return [
+ 'no proof' => [ [], [], false ],
+ 'normal' => [ [], [ 'captchaWord' => 'abc' ], [ 'captchaWord' => 'abc' ] ],
+ ];
+ }
+}
diff --git a/www/wiki/extensions/ConfirmEdit/tests/phpunit/SimpleCaptcha/CaptchaTest.php b/www/wiki/extensions/ConfirmEdit/tests/phpunit/SimpleCaptcha/CaptchaTest.php
new file mode 100644
index 00000000..6837bfc4
--- /dev/null
+++ b/www/wiki/extensions/ConfirmEdit/tests/phpunit/SimpleCaptcha/CaptchaTest.php
@@ -0,0 +1,116 @@
+<?php
+
+/**
+ * @covers SimpleCaptcha
+ */
+class CaptchaTest extends MediaWikiTestCase {
+ /**
+ * @dataProvider provideSimpleTriggersCaptcha
+ */
+ public function testTriggersCaptcha( $action, $expectedResult ) {
+ $captcha = new SimpleCaptcha();
+ $this->setMwGlobals( [
+ 'wgCaptchaTriggers' => [
+ $action => $expectedResult,
+ ]
+ ] );
+ $this->assertEquals( $expectedResult, $captcha->triggersCaptcha( $action ) );
+ }
+
+ public function provideSimpleTriggersCaptcha() {
+ $data = [];
+ $captchaTriggers = new ReflectionClass( CaptchaTriggers::class );
+ $constants = $captchaTriggers->getConstants();
+ foreach ( $constants as $const ) {
+ $data[] = [ $const, true ];
+ $data[] = [ $const, false ];
+ }
+ return $data;
+ }
+
+ /**
+ * @dataProvider provideNamespaceOverwrites
+ */
+ public function testNamespaceTriggersOverwrite( $trigger, $expected ) {
+ $captcha = new SimpleCaptcha();
+ $this->setMwGlobals( [
+ 'wgCaptchaTriggers' => [
+ $trigger => !$expected,
+ ],
+ 'wgCaptchaTriggersOnNamespace' => [
+ 0 => [
+ $trigger => $expected,
+ ],
+ ],
+ ] );
+ $title = Title::newFromText( 'Main' );
+ $this->assertEquals( $expected, $captcha->triggersCaptcha( $trigger, $title ) );
+ }
+
+ public function provideNamespaceOverwrites() {
+ return [
+ [ 'edit', true ],
+ [ 'edit', false ],
+ ];
+ }
+
+ private function setCaptchaTriggersAttribute( $trigger, $value ) {
+ $info = [
+ 'globals' => [],
+ 'callbacks' => [],
+ 'defines' => [],
+ 'credits' => [],
+ 'attributes' => [
+ 'CaptchaTriggers' => [
+ $trigger => $value
+ ]
+ ],
+ 'autoloaderPaths' => []
+ ];
+ $registry = new ExtensionRegistry();
+ $class = new ReflectionClass( 'ExtensionRegistry' );
+ $instanceProperty = $class->getProperty( 'instance' );
+ $instanceProperty->setAccessible( true );
+ $instanceProperty->setValue( $registry );
+ $method = $class->getMethod( 'exportExtractedData' );
+ $method->setAccessible( true );
+ $method->invokeArgs( $registry, [ $info ] );
+ }
+
+ /**
+ * @dataProvider provideAttributeSet
+ */
+ public function testCaptchaTriggersAttributeSetTrue( $trigger, $value ) {
+ $this->setCaptchaTriggersAttribute( $trigger, $value );
+ $captcha = new SimpleCaptcha();
+ $this->assertEquals( $value, $captcha->triggersCaptcha( $trigger ) );
+ }
+
+ public function provideAttributeSet() {
+ return [
+ [ 'test', true ],
+ [ 'test', false ],
+ ];
+ }
+
+ /**
+ * @dataProvider provideAttributeOverwritten
+ */
+ public function testCaptchaTriggersAttributeGetsOverwritten( $trigger, $expected ) {
+ $this->setMwGlobals( [
+ 'wgCaptchaTriggers' => [
+ $trigger => $expected
+ ]
+ ] );
+ $this->setCaptchaTriggersAttribute( $trigger, !$expected );
+ $captcha = new SimpleCaptcha();
+ $this->assertEquals( $expected, $captcha->triggersCaptcha( $trigger ) );
+ }
+
+ public function provideAttributeOverwritten() {
+ return [
+ [ 'edit', true ],
+ [ 'edit', false ],
+ ];
+ }
+}