summaryrefslogtreecommitdiff
path: root/www/wiki/extensions/AbuseFilter
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/AbuseFilter
first commit
Diffstat (limited to 'www/wiki/extensions/AbuseFilter')
-rw-r--r--www/wiki/extensions/AbuseFilter/.eslintrc.json10
-rw-r--r--www/wiki/extensions/AbuseFilter/.gitignore24
-rw-r--r--www/wiki/extensions/AbuseFilter/.gitreview5
-rw-r--r--www/wiki/extensions/AbuseFilter/.phpcs.xml15
-rw-r--r--www/wiki/extensions/AbuseFilter/.stylelintrc.json6
-rw-r--r--www/wiki/extensions/AbuseFilter/AbuseFilter.alias.php518
-rw-r--r--www/wiki/extensions/AbuseFilter/CODE_OF_CONDUCT.md1
-rw-r--r--www/wiki/extensions/AbuseFilter/COPYING339
-rw-r--r--www/wiki/extensions/AbuseFilter/Gruntfile.js39
-rw-r--r--www/wiki/extensions/AbuseFilter/abusefilter.tables.pg.sql86
-rw-r--r--www/wiki/extensions/AbuseFilter/abusefilter.tables.sql83
-rw-r--r--www/wiki/extensions/AbuseFilter/abusefilter.tables.sqlite.sql70
-rw-r--r--www/wiki/extensions/AbuseFilter/composer.json28
-rw-r--r--www/wiki/extensions/AbuseFilter/db_patches/patch-abuse_filter_history.pg.sql29
-rw-r--r--www/wiki/extensions/AbuseFilter/db_patches/patch-abuse_filter_history.sql20
-rw-r--r--www/wiki/extensions/AbuseFilter/db_patches/patch-abuse_filter_history.sqlite.sql18
-rw-r--r--www/wiki/extensions/AbuseFilter/db_patches/patch-af_actions.sql4
-rw-r--r--www/wiki/extensions/AbuseFilter/db_patches/patch-af_deleted.sql2
-rw-r--r--www/wiki/extensions/AbuseFilter/db_patches/patch-af_group.sql5
-rw-r--r--www/wiki/extensions/AbuseFilter/db_patches/patch-afh_changed_fields.sql3
-rw-r--r--www/wiki/extensions/AbuseFilter/db_patches/patch-afl-namespace_int.sql1
-rw-r--r--www/wiki/extensions/AbuseFilter/db_patches/patch-afl_action_id.sql8
-rw-r--r--www/wiki/extensions/AbuseFilter/db_patches/patch-afl_change_deleted_patrolled.sql3
-rw-r--r--www/wiki/extensions/AbuseFilter/db_patches/patch-fix-indexes.sql18
-rw-r--r--www/wiki/extensions/AbuseFilter/db_patches/patch-fix-indexes.sqlite.sql18
-rw-r--r--www/wiki/extensions/AbuseFilter/db_patches/patch-global_filters.sql6
-rw-r--r--www/wiki/extensions/AbuseFilter/db_patches/patch-global_logging_wiki-index.sql3
-rw-r--r--www/wiki/extensions/AbuseFilter/db_patches/patch-global_logging_wiki-index.sqlite.sql3
-rw-r--r--www/wiki/extensions/AbuseFilter/db_patches/patch-hide_patrol.sql5
-rw-r--r--www/wiki/extensions/AbuseFilter/extension.json378
-rw-r--r--www/wiki/extensions/AbuseFilter/gitinfo.json1
-rw-r--r--www/wiki/extensions/AbuseFilter/hooks.txt45
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/ab.json9
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/ace.json8
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/aeb-arab.json8
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/af.json295
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/ais.json17
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/aln.json79
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/am.json81
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/an.json19
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/ar.json550
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/arc.json143
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/ary.json8
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/arz.json354
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/as.json119
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/ast.json508
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/atj.json13
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/av.json12
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/awa.json111
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/az.json247
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/azb.json386
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/ba.json413
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/bar.json19
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/bcl.json389
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/be-tarask.json405
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/be.json39
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/bg.json458
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/bgn.json67
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/bho.json8
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/bn.json249
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/bo.json43
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/br.json387
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/bs.json399
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/ca.json416
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/ce.json362
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/ckb.json243
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/co.json12
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/crh-cyrl.json9
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/crh-latn.json9
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/cs.json520
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/csb.json8
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/cu.json31
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/cv.json80
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/cy.json96
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/da.json418
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/de-ch.json13
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/de-formal.json34
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/de.json546
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/diq.json455
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/dsb.json393
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/dtp.json29
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/dty.json13
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/dv.json9
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/ee.json41
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/el.json413
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/en-gb.json19
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/en.json527
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/eo.json398
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/es-formal.json11
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/es.json553
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/et.json445
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/eu.json229
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/fa.json531
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/fi.json465
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/fo.json210
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/fr.json560
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/frc.json56
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/frp.json377
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/frr.json22
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/fur.json15
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/fy.json71
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/ga.json22
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/gan-hans.json5
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/gan-hant.json9
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/gl.json466
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/gom-deva.json9
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/grc.json97
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/gsw.json380
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/gu.json180
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/gv.json11
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/ha.json6
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/hak.json10
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/haw.json14
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/he.json534
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/hi.json432
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/hif-latn.json20
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/hr.json408
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/hrx.json344
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/hsb.json400
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/ht.json10
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/hu.json420
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/hy.json10
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/ia.json456
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/id.json405
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/ig.json51
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/ike-latn.json4
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/ilo.json436
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/inh.json33
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/io.json98
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/is.json304
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/it.json483
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/ja.json473
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/jv.json345
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/ka.json413
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/kab.json54
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/kg.json10
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/khw.json89
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/kiu.json8
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/kk-cyrl.json289
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/kl.json9
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/km.json221
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/kn.json132
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/ko.json516
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/krc.json28
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/kri.json11
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/krl.json8
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/ksh.json435
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/ku-latn.json86
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/ky.json54
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/la.json53
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/lad.json52
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/lag.json9
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/lb.json417
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/lez.json20
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/lfn.json19
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/li.json361
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/lij.json21
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/lki.json19
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/lmo.json14
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/ln.json11
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/lrc.json11
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/lt.json431
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/ltg.json18
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/lv.json372
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/lzh.json14
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/mai.json241
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/map-bms.json194
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/mg.json129
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/mhr.json13
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/min.json123
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/mk.json529
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/ml.json397
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/mn.json20
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/mr.json391
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/ms.json402
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/mt.json376
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/mwl.json12
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/my.json14
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/myv.json143
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/mzn.json10
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/nah.json19
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/nan.json8
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/nap.json70
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/nb.json477
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/nds-nl.json184
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/nds.json343
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/ne.json279
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/new.json47
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/niu.json8
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/nl-informal.json33
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/nl.json496
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/nn.json401
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/nqo.json8
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/nrm.json8
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/nso.json14
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/oc.json400
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/or.json343
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/os.json39
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/pa.json83
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/pam.json24
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/pcd.json8
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/pdc.json40
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/pdt.json9
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/pfl.json386
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/pl.json485
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/pms.json384
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/ps.json148
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/pt-br.json551
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/pt.json550
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/qqq.json560
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/qu.json16
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/rif.json10
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/rm.json12
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/ro.json422
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/roa-tara.json462
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/rtm.json8
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/ru.json557
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/rue.json379
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/sa.json189
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/sah.json377
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/sc.json30
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/scn.json432
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/sco.json15
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/sd.json38
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/sdc.json14
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/se.json13
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/sh.json181
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/shi.json15
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/si.json356
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/sk.json405
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/skr-arab.json45
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/sl.json391
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/so.json11
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/sq.json314
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/sr-ec.json420
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/sr-el.json387
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/stq.json203
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/su.json48
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/sv.json554
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/sw.json158
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/szl.json18
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/ta.json292
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/tay.json10
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/tcy.json94
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/te.json351
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/tet.json12
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/tg-cyrl.json18
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/tg-latn.json12
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/th.json388
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/tk.json329
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/tl.json382
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/tly.json9
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/tpi.json17
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/tr.json405
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/tru.json8
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/tt-cyrl.json16
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/tt-latn.json8
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/tyv.json8
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/tzm.json25
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/udm.json19
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/ug-arab.json385
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/ug-latn.json4
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/uk.json480
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/ur.json201
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/uz.json17
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/vec.json368
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/vep.json85
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/vi.json449
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/vo.json46
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/wa.json78
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/war.json101
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/wuu.json16
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/xal.json8
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/xmf.json112
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/yi.json283
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/yo.json82
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/yue.json356
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/zh-hans.json569
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/zh-hant.json535
-rw-r--r--www/wiki/extensions/AbuseFilter/i18n/zu.json8
-rw-r--r--www/wiki/extensions/AbuseFilter/includes/AFComputedVariable.php445
-rw-r--r--www/wiki/extensions/AbuseFilter/includes/AbuseFilter.php2796
-rw-r--r--www/wiki/extensions/AbuseFilter/includes/AbuseFilterChangesList.php118
-rw-r--r--www/wiki/extensions/AbuseFilter/includes/AbuseFilterHooks.php851
-rw-r--r--www/wiki/extensions/AbuseFilter/includes/AbuseFilterModifyLogFormatter.php53
-rw-r--r--www/wiki/extensions/AbuseFilter/includes/AbuseFilterPreAuthenticationProvider.php46
-rw-r--r--www/wiki/extensions/AbuseFilter/includes/AbuseFilterVariableHolder.php226
-rw-r--r--www/wiki/extensions/AbuseFilter/includes/AbuseLogHitFormatter.php60
-rw-r--r--www/wiki/extensions/AbuseFilter/includes/TableDiffFormatterFullContext.php36
-rw-r--r--www/wiki/extensions/AbuseFilter/includes/Views/AbuseFilterView.php112
-rw-r--r--www/wiki/extensions/AbuseFilter/includes/Views/AbuseFilterViewDiff.php387
-rw-r--r--www/wiki/extensions/AbuseFilter/includes/Views/AbuseFilterViewEdit.php1252
-rw-r--r--www/wiki/extensions/AbuseFilter/includes/Views/AbuseFilterViewExamine.php219
-rw-r--r--www/wiki/extensions/AbuseFilter/includes/Views/AbuseFilterViewHistory.php85
-rw-r--r--www/wiki/extensions/AbuseFilter/includes/Views/AbuseFilterViewImport.php24
-rw-r--r--www/wiki/extensions/AbuseFilter/includes/Views/AbuseFilterViewList.php267
-rw-r--r--www/wiki/extensions/AbuseFilter/includes/Views/AbuseFilterViewRevert.php299
-rw-r--r--www/wiki/extensions/AbuseFilter/includes/Views/AbuseFilterViewTestBatch.php207
-rw-r--r--www/wiki/extensions/AbuseFilter/includes/Views/AbuseFilterViewTools.php56
-rw-r--r--www/wiki/extensions/AbuseFilter/includes/api/ApiAbuseFilterCheckMatch.php94
-rw-r--r--www/wiki/extensions/AbuseFilter/includes/api/ApiAbuseFilterCheckSyntax.php49
-rw-r--r--www/wiki/extensions/AbuseFilter/includes/api/ApiAbuseFilterEvalExpression.php30
-rw-r--r--www/wiki/extensions/AbuseFilter/includes/api/ApiAbuseFilterUnblockAutopromote.php62
-rw-r--r--www/wiki/extensions/AbuseFilter/includes/api/ApiQueryAbuseFilters.php218
-rw-r--r--www/wiki/extensions/AbuseFilter/includes/api/ApiQueryAbuseLog.php313
-rw-r--r--www/wiki/extensions/AbuseFilter/includes/pagers/AbuseFilterExaminePager.php72
-rw-r--r--www/wiki/extensions/AbuseFilter/includes/pagers/AbuseFilterHistoryPager.php204
-rw-r--r--www/wiki/extensions/AbuseFilter/includes/pagers/AbuseFilterPager.php260
-rw-r--r--www/wiki/extensions/AbuseFilter/includes/pagers/AbuseLogPager.php79
-rw-r--r--www/wiki/extensions/AbuseFilter/includes/pagers/GlobalAbuseFilterPager.php70
-rw-r--r--www/wiki/extensions/AbuseFilter/includes/parser/AFPData.php497
-rw-r--r--www/wiki/extensions/AbuseFilter/includes/parser/AFPException.php4
-rw-r--r--www/wiki/extensions/AbuseFilter/includes/parser/AFPParserState.php10
-rw-r--r--www/wiki/extensions/AbuseFilter/includes/parser/AFPToken.php61
-rw-r--r--www/wiki/extensions/AbuseFilter/includes/parser/AFPTreeNode.php126
-rw-r--r--www/wiki/extensions/AbuseFilter/includes/parser/AFPTreeParser.php611
-rw-r--r--www/wiki/extensions/AbuseFilter/includes/parser/AFPUserVisibleException.php40
-rw-r--r--www/wiki/extensions/AbuseFilter/includes/parser/AbuseFilterCachingParser.php279
-rw-r--r--www/wiki/extensions/AbuseFilter/includes/parser/AbuseFilterParser.php1560
-rw-r--r--www/wiki/extensions/AbuseFilter/includes/parser/AbuseFilterTokenizer.php258
-rw-r--r--www/wiki/extensions/AbuseFilter/includes/special/SpecialAbuseFilter.php134
-rw-r--r--www/wiki/extensions/AbuseFilter/includes/special/SpecialAbuseLog.php1049
-rw-r--r--www/wiki/extensions/AbuseFilter/maintenance/addMissingLoggingEntries.php98
-rw-r--r--www/wiki/extensions/AbuseFilter/maintenance/purgeOldLogIPData.php61
-rw-r--r--www/wiki/extensions/AbuseFilter/modules/ext.abuseFilter.css120
-rw-r--r--www/wiki/extensions/AbuseFilter/modules/ext.abuseFilter.edit.js428
-rw-r--r--www/wiki/extensions/AbuseFilter/modules/ext.abuseFilter.examine.js101
-rw-r--r--www/wiki/extensions/AbuseFilter/modules/ext.abuseFilter.tools.js109
-rw-r--r--www/wiki/extensions/AbuseFilter/modules/mode-abusefilter.js117
-rw-r--r--www/wiki/extensions/AbuseFilter/modules/red_x.pngbin0 -> 356 bytes
-rw-r--r--www/wiki/extensions/AbuseFilter/modules/yes_check.pngbin0 -> 339 bytes
-rw-r--r--www/wiki/extensions/AbuseFilter/package.json16
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/legacyParserTest.php52
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/almost-empty.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/almost-empty.t1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/arith.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/arith.t27
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/arrays.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/arrays.t12
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/bool-assoc.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/bool-assoc.t1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/bug25373.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/bug25373.t1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/cast.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/cast.t1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/ccnorm-contains-all.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/ccnorm-contains-all.t1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/ccnorm-contains-any.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/ccnorm-contains-any.t1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/ccnorm.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/ccnorm.t1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/comment.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/comment.t4
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/contains-all.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/contains-all.t1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/contains-any.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/contains-any.t1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/contains.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/contains.t1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/count.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/count.t6
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/empty.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/empty.t0
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/eq.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/eq.t1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/expn.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/expn.t2
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/float.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/float.t1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/get-matches.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/get-matches.t4
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/ifthen.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/ifthen.t1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/in.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/in.t1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/lcase.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/lcase.t1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/length.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/length.t1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/like.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/like.t1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/list-assignment.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/list-assignment.t6
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/list-comparisons.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/list-comparisons.t11
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-arithmetic.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-arithmetic.t8
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-bools.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-bools.t13
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-comparisons.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-comparisons.t20
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-functions.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-functions.t22
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-keywords.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-keywords.t9
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-lists.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-lists.t10
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/norm.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/norm.t1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/numbers.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/numbers.t1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/ord.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/ord.t8
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/prec.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/prec.t1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/regex.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/regex.t1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/rmdoubles.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/rmdoubles.t1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/rmspecials.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/rmspecials.t1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/shortcircuit-and.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/shortcircuit-and.t2
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/shortcircuit-or.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/shortcircuit-or.t2
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/specialratio.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/specialratio.t1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/string.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/string.t1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/tern.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/tern.t1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/ucase.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/ucase.t1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/utf8.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/utf8.t1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/vars.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/vars.t5
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/whitespace1.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/whitespace1.t1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/wptest1.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/wptest1.t9
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/wptest2.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/wptest2.t21
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/wptest3.r1
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/parserTests/wptest3.t28
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/phpunit/AbuseFilterParserTest.php222
-rw-r--r--www/wiki/extensions/AbuseFilter/version4
437 files changed, 65077 insertions, 0 deletions
diff --git a/www/wiki/extensions/AbuseFilter/.eslintrc.json b/www/wiki/extensions/AbuseFilter/.eslintrc.json
new file mode 100644
index 00000000..48432407
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/.eslintrc.json
@@ -0,0 +1,10 @@
+{
+ "extends": "wikimedia",
+ "env": {
+ "browser": true,
+ "jquery": true
+ },
+ "globals": {
+ "mediaWiki": false
+ }
+}
diff --git a/www/wiki/extensions/AbuseFilter/.gitignore b/www/wiki/extensions/AbuseFilter/.gitignore
new file mode 100644
index 00000000..3361170a
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/.gitignore
@@ -0,0 +1,24 @@
+/extensions/
+/vendor/
+node_modules/
+/composer.lock
+
+# Editors
+*.kate-swp
+*~
+\#*#
+.#*
+.*.swp
+.project
+.buildpath
+.classpath
+.settings
+cscope.files
+cscope.out
+*.orig
+## NetBeans
+nbproject*
+project.index
+## Sublime
+sublime-*
+sftp-config.json
diff --git a/www/wiki/extensions/AbuseFilter/.gitreview b/www/wiki/extensions/AbuseFilter/.gitreview
new file mode 100644
index 00000000..03322f83
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/.gitreview
@@ -0,0 +1,5 @@
+[gerrit]
+host=gerrit.wikimedia.org
+port=29418
+project=mediawiki/extensions/AbuseFilter.git
+track=1
diff --git a/www/wiki/extensions/AbuseFilter/.phpcs.xml b/www/wiki/extensions/AbuseFilter/.phpcs.xml
new file mode 100644
index 00000000..40cca63c
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/.phpcs.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+<ruleset>
+ <rule ref="./vendor/mediawiki/mediawiki-codesniffer/MediaWiki">
+ <exclude name="MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic" />
+ <exclude name="MediaWiki.VariableAnalysis.ForbiddenGlobalVariables.ForbiddenGlobal$wgTitle" />
+ <exclude name="MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment" />
+ <exclude name="Squiz.Scope.MethodScope.Missing" />
+ </rule>
+ <rule ref="Generic.Files.LineLength">
+ <exclude-pattern>AbuseFilter\.alias\.php</exclude-pattern>
+ </rule>
+ <file>.</file>
+ <arg name="extensions" value="php,php5,inc"/>
+ <arg name="encoding" value="UTF-8"/>
+</ruleset>
diff --git a/www/wiki/extensions/AbuseFilter/.stylelintrc.json b/www/wiki/extensions/AbuseFilter/.stylelintrc.json
new file mode 100644
index 00000000..b681cd2e
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/.stylelintrc.json
@@ -0,0 +1,6 @@
+{
+ "extends": "stylelint-config-wikimedia",
+ "rules": {
+ "selector-max-id": null
+ }
+}
diff --git a/www/wiki/extensions/AbuseFilter/AbuseFilter.alias.php b/www/wiki/extensions/AbuseFilter/AbuseFilter.alias.php
new file mode 100644
index 00000000..7895b6d4
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/AbuseFilter.alias.php
@@ -0,0 +1,518 @@
+<?php
+/**
+ * Aliases for special pages
+ *
+ * @file
+ * @ingroup Extensions
+ */
+
+$specialPageAliases = [];
+
+/** English (English) */
+$specialPageAliases['en'] = [
+ 'AbuseLog' => [ 'AbuseLog' ],
+ 'AbuseFilter' => [ 'AbuseFilter' ],
+];
+
+/** Arabic (العربية) */
+$specialPageAliases['ar'] = [
+ 'AbuseLog' => [ 'سجل_الإساءة' ],
+ 'AbuseFilter' => [ 'مرشح_الإساءة', 'فلتر_الإساءة' ],
+];
+
+/** Aramaic (ܐܪܡܝܐ) */
+$specialPageAliases['arc'] = [
+ 'AbuseLog' => [ 'ܡܟܬܒܘܬܐ_ܕܚܘܒܠܐ' ],
+ 'AbuseFilter' => [ 'ܡܨܦܝܢܝܬܐ_ܕܚܘܒܠܐ' ],
+];
+
+/** Egyptian Arabic (مصرى) */
+$specialPageAliases['arz'] = [
+ 'AbuseLog' => [ 'سجل_الاساءه' ],
+ 'AbuseFilter' => [ 'فيلتر_الاساءه' ],
+];
+
+/** Assamese (অসমীয়া) */
+$specialPageAliases['as'] = [
+ 'AbuseLog' => [ 'অপব্যৱহাৰৰ_অভিলেখ' ],
+ 'AbuseFilter' => [ 'অপব্যৱহাৰৰ_চেকনী' ],
+];
+
+/** Avaric (авар) */
+$specialPageAliases['av'] = [
+ 'AbuseLog' => [ 'Ихтияразда_мугъ_чІван_бегьуоарел_пишаби_гьабиялъул_журнал' ],
+ 'AbuseFilter' => [ 'Ихтияразда_мугъ_чІван_бегьуоарел_пишаби_гьабиял_рацІцІин' ],
+];
+
+/** Bashkir (башҡортса) */
+$specialPageAliases['ba'] = [
+ 'AbuseLog' => [ 'Насарға_ҡулланыуҙар_журналы' ],
+ 'AbuseFilter' => [ 'Насарға_ҡулланыуҙар_фильтры' ],
+];
+
+/** Bulgarian (български) */
+$specialPageAliases['bg'] = [
+ 'AbuseLog' => [ 'Дневник_на_филтъра' ],
+ 'AbuseFilter' => [ 'Филтър_срещу_злоупотреби' ],
+];
+
+/** Western Balochi (بلوچی رخشانی) */
+$specialPageAliases['bgn'] = [
+ 'AbuseLog' => [ 'خرابکاری_ئی_سیاهه' ],
+ 'AbuseFilter' => [ 'خرابکاری_ئی_پیلتر' ],
+];
+
+/** Bhojpuri (भोजपुरी) */
+$specialPageAliases['bho'] = [
+ 'AbuseLog' => [ 'दुरुपयोगी_छनित_पृष्ठ' ],
+ 'AbuseFilter' => [ 'दुरुपयोगी_छनित_फिल्टर' ],
+];
+
+/** Banjar (Bahasa Banjar) */
+$specialPageAliases['bjn'] = [
+ 'AbuseLog' => [ 'Catatan_panyalahgunaan' ],
+ 'AbuseFilter' => [ 'Filter_panyalahgunaan' ],
+];
+
+/** Bengali (বাংলা) */
+$specialPageAliases['bn'] = [
+ 'AbuseLog' => [ 'অপব্যবহার_লগ' ],
+ 'AbuseFilter' => [ 'অপব্যবহার_ছাঁকনি' ],
+];
+
+/** Bosnian (bosanski) */
+$specialPageAliases['bs'] = [
+ 'AbuseLog' => [ 'ZapisZloupotrebe' ],
+ 'AbuseFilter' => [ 'FilterZloupotrebe' ],
+];
+
+/** Catalan (català) */
+$specialPageAliases['ca'] = [
+ 'AbuseLog' => [ 'Registre_dels_abusos' ],
+];
+
+/** Min Dong Chinese (Mìng-dĕ̤ng-ngṳ̄) */
+$specialPageAliases['cdo'] = [
+ 'AbuseLog' => [ '亂使其日誌' ],
+ 'AbuseFilter' => [ '亂使其過濾' ],
+];
+
+/** Chechen (нохчийн) */
+$specialPageAliases['ce'] = [
+ 'AbuseLog' => [ 'Зулам_литтаран_тептар' ],
+ 'AbuseFilter' => [ 'Зулам_литтар' ],
+];
+
+/** Czech (čeština) */
+$specialPageAliases['cs'] = [
+ 'AbuseLog' => [ 'Záznam_filtrů_zneužití' ],
+ 'AbuseFilter' => [ 'Filtry_zneužití' ],
+];
+
+/** German (Deutsch) */
+$specialPageAliases['de'] = [
+ 'AbuseLog' => [ 'Missbrauchsfilter-Logbuch' ],
+ 'AbuseFilter' => [ 'Missbrauchsfilter' ],
+];
+
+/** Zazaki (Zazaki) */
+$specialPageAliases['diq'] = [
+ 'AbuseLog' => [ 'QeydêKedweriye' ],
+ 'AbuseFilter' => [ 'ParzûnêKedweriye' ],
+];
+
+/** Lower Sorbian (dolnoserbski) */
+$specialPageAliases['dsb'] = [
+ 'AbuseLog' => [ 'Protokol_znjewužywanjow' ],
+ 'AbuseFilter' => [ 'Filter_znjewužywanjow' ],
+];
+
+/** Greek (Ελληνικά) */
+$specialPageAliases['el'] = [
+ 'AbuseLog' => [ 'ΑρχείοΠαρενόχλησης' ],
+ 'AbuseFilter' => [ 'ΦίλτροΠαρενόχλησης', 'ΦίλτροΚαταχρήσεων' ],
+];
+
+/** Esperanto (Esperanto) */
+$specialPageAliases['eo'] = [
+ 'AbuseLog' => [ 'Protokolo_pri_misuzado' ],
+ 'AbuseFilter' => [ 'Filtrilo_kontraŭ_misuzado' ],
+];
+
+/** Spanish (español) */
+$specialPageAliases['es'] = [
+ 'AbuseLog' => [ 'RegistroAbusos' ],
+ 'AbuseFilter' => [ 'FiltroAntiAbusos' ],
+];
+
+/** Estonian (eesti) */
+$specialPageAliases['et'] = [
+ 'AbuseLog' => [ 'Väärtarvituslogi' ],
+ 'AbuseFilter' => [ 'Väärtarvitusfilter' ],
+];
+
+/** Persian (فارسی) */
+$specialPageAliases['fa'] = [
+ 'AbuseLog' => [ 'سیاههٔ_خرابکاری', 'سیاهه_خرابکاری' ],
+ 'AbuseFilter' => [ 'پالایهٔ_خرابکاری', 'پالایه_خرابکاری' ],
+];
+
+/** Finnish (suomi) */
+$specialPageAliases['fi'] = [
+ 'AbuseLog' => [ 'Väärinkäyttöloki' ],
+ 'AbuseFilter' => [ 'Väärinkäyttösuodatin' ],
+];
+
+/** French (français) */
+$specialPageAliases['fr'] = [
+ 'AbuseLog' => [ 'Journal_du_filtre_antiabus', 'Journal_du_filtre_anti-abus', 'JournalFiltreAntiabus', 'Journal_des_abus', 'JournalDesAbus' ],
+ 'AbuseFilter' => [ 'Filtre_antiabus', 'Filtre_anti-abus', 'FiltreAntiabus', 'Filtre_d\'abus', 'FiltredAbus', 'FilterAbus' ],
+];
+
+/** Arpitan (arpetan) */
+$specialPageAliases['frp'] = [
+ 'AbuseLog' => [ 'Jornal_des_abus', 'JornalDesAbus' ],
+ 'AbuseFilter' => [ 'Filtro_d\'abus', 'FiltroDAbus' ],
+];
+
+/** Galician (galego) */
+$specialPageAliases['gl'] = [
+ 'AbuseLog' => [ 'Rexistro_de_abusos' ],
+ 'AbuseFilter' => [ 'Filtro_de_abusos' ],
+];
+
+/** Swiss German (Alemannisch) */
+$specialPageAliases['gsw'] = [
+ 'AbuseLog' => [ 'Missbruchsfilter-Logbuech' ],
+ 'AbuseFilter' => [ 'Missbruchsfilter' ],
+];
+
+/** Gujarati (ગુજરાતી) */
+$specialPageAliases['gu'] = [
+ 'AbuseLog' => [ 'દુરુપયોગ_લોગ' ],
+ 'AbuseFilter' => [ 'દુરુપયોગ_ગળણી' ],
+];
+
+/** Hebrew (עברית) */
+$specialPageAliases['he'] = [
+ 'AbuseLog' => [ 'יומן_ההשחתות' ],
+ 'AbuseFilter' => [ 'מסנן_ההשחתות' ],
+];
+
+/** Hindi (हिन्दी) */
+$specialPageAliases['hi'] = [
+ 'AbuseLog' => [ 'दुरुपयोग_लॉग', 'दुरुपयोग_लौग' ],
+ 'AbuseFilter' => [ 'दुरुपयोग_फ़िल्टर', 'दुरुपयोग_फिल्टर' ],
+];
+
+/** Croatian (hrvatski) */
+$specialPageAliases['hr'] = [
+ 'AbuseLog' => [ 'Evidencija_zloporaba' ],
+ 'AbuseFilter' => [ 'Filtar_zloporaba' ],
+];
+
+/** Upper Sorbian (hornjoserbsce) */
+$specialPageAliases['hsb'] = [
+ 'AbuseLog' => [ 'Protokol_znjewužiwanjow' ],
+ 'AbuseFilter' => [ 'Filter_znjewužiwanjow' ],
+];
+
+/** Xiang Chinese (湘语) */
+$specialPageAliases['hsn'] = [
+ 'AbuseLog' => [ '滥用日志' ],
+ 'AbuseFilter' => [ '滥用过滤器' ],
+];
+
+/** Haitian (Kreyòl ayisyen) */
+$specialPageAliases['ht'] = [
+ 'AbuseLog' => [ 'JounalAbi' ],
+ 'AbuseFilter' => [ 'FiltAbi' ],
+];
+
+/** Hungarian (magyar) */
+$specialPageAliases['hu'] = [
+ 'AbuseLog' => [ 'Vandálszűrő-napló' ],
+ 'AbuseFilter' => [ 'Vandálszűrő' ],
+];
+
+/** Interlingua (interlingua) */
+$specialPageAliases['ia'] = [
+ 'AbuseLog' => [ 'Registro_de_abusos' ],
+ 'AbuseFilter' => [ 'Filtro_anti-abuso', 'Filtro_antiabuso' ],
+];
+
+/** Indonesian (Bahasa Indonesia) */
+$specialPageAliases['id'] = [
+ 'AbuseLog' => [ 'Catatan_penyalahgunaan', 'CatatanPenyalahgunaan' ],
+ 'AbuseFilter' => [ 'Filter_penyalahgunaan', 'FilterPenyalahgunaan' ],
+];
+
+/** Icelandic (íslenska) */
+$specialPageAliases['is'] = [
+ 'AbuseLog' => [ 'Misnotkunarskrá' ],
+ 'AbuseFilter' => [ 'Misnotkunarsía' ],
+];
+
+/** Italian (italiano) */
+$specialPageAliases['it'] = [
+ 'AbuseLog' => [ 'RegistroAbusi' ],
+ 'AbuseFilter' => [ 'FiltroAntiAbusi' ],
+];
+
+/** Japanese (日本語) */
+$specialPageAliases['ja'] = [
+ 'AbuseLog' => [ '不正利用記録' ],
+ 'AbuseFilter' => [ '不正利用フィルター' ],
+];
+
+/** Korean (한국어) */
+$specialPageAliases['ko'] = [
+ 'AbuseLog' => [ '편집필터기록', '부정행위기록' ],
+ 'AbuseFilter' => [ '편집필터', '부정행위필터' ],
+];
+
+/** Colognian (Ripoarisch) */
+$specialPageAliases['ksh'] = [
+ 'AbuseLog' => [ 'Logbooch_vum_Meßbruchsfellter' ],
+ 'AbuseFilter' => [ 'Meßbruchsfellter' ],
+];
+
+/** Cornish (kernowek) */
+$specialPageAliases['kw'] = [
+ 'AbuseLog' => [ 'KovnotenAbusyans' ],
+ 'AbuseFilter' => [ 'SidhlaAbusyans' ],
+];
+
+/** Ladino (Ladino) */
+$specialPageAliases['lad'] = [
+ 'AbuseLog' => [ 'Rējistros_de_abuso' ],
+ 'AbuseFilter' => [ 'FiltroAbuso' ],
+];
+
+/** Luxembourgish (Lëtzebuergesch) */
+$specialPageAliases['lb'] = [
+ 'AbuseLog' => [ 'Lëscht_vum_Mëssbrauch' ],
+ 'AbuseFilter' => [ 'Mëssbrauchsfilter' ],
+];
+
+/** Northern Luri (لۊری شومالی) */
+$specialPageAliases['lrc'] = [
+ 'AbuseLog' => [ 'پئھرستنوٙمە_خئراڤکاری' ],
+ 'AbuseFilter' => [ 'فیلتئر_خئراڤکاری' ],
+];
+
+/** Lithuanian (lietuvių) */
+$specialPageAliases['lt'] = [
+ 'AbuseLog' => [ 'Piktnaudžiavimų_sąrašas' ],
+ 'AbuseFilter' => [ 'Piktnaudžiavimų_filtras' ],
+];
+
+/** Malagasy (Malagasy) */
+$specialPageAliases['mg'] = [
+ 'AbuseLog' => [ 'Tati-panararaotana' ],
+ 'AbuseFilter' => [ 'Fanakanam-panararaotana' ],
+];
+
+/** Minangkabau (Baso Minangkabau) */
+$specialPageAliases['min'] = [
+ 'AbuseLog' => [ 'CatatanPanyalahgunoan' ],
+ 'AbuseFilter' => [ 'SariangPanyalahgunoan' ],
+];
+
+/** Macedonian (македонски) */
+$specialPageAliases['mk'] = [
+ 'AbuseLog' => [ 'ДневникНаЗлоупотреба' ],
+ 'AbuseFilter' => [ 'ФилтерНаЗлоупотреба' ],
+];
+
+/** Malayalam (മലയാളം) */
+$specialPageAliases['ml'] = [
+ 'AbuseLog' => [ 'ദുരുപയോഗരേഖ' ],
+ 'AbuseFilter' => [ 'ദുരുപയോഗയരിപ്പ', 'ദുരുപയോഗ‌‌അരിപ്പ' ],
+];
+
+/** Marathi (मराठी) */
+$specialPageAliases['mr'] = [
+ 'AbuseLog' => [ 'संपादनगाळणी_नोंदी' ],
+ 'AbuseFilter' => [ 'संपादन_गाळणी' ],
+];
+
+/** Malay (Bahasa Melayu) */
+$specialPageAliases['ms'] = [
+ 'AbuseLog' => [ 'Log_penyalahgunaan' ],
+ 'AbuseFilter' => [ 'Penapis_penyalahgunaan' ],
+];
+
+/** Maltese (Malti) */
+$specialPageAliases['mt'] = [
+ 'AbuseLog' => [ 'ReġistruAbbuż' ],
+ 'AbuseFilter' => [ 'FiltruAbbuż' ],
+];
+
+/** Erzya (эрзянь) */
+$specialPageAliases['myv'] = [
+ 'AbuseLog' => [ 'АТевсНолдамодо' ],
+ 'AbuseFilter' => [ 'АТевсНолдамоньФильтра' ],
+];
+
+/** Norwegian Bokmål (norsk bokmål) */
+$specialPageAliases['nb'] = [
+ 'AbuseLog' => [ 'Misbrukslogg' ],
+ 'AbuseFilter' => [ 'Misbruksfilter' ],
+];
+
+/** Low Saxon (Netherlands) (Nedersaksies) */
+$specialPageAliases['nds-nl'] = [
+ 'AbuseLog' => [ 'Misbruuklogboek' ],
+ 'AbuseFilter' => [ 'Misbruukfilter' ],
+];
+
+/** Dutch (Nederlands) */
+$specialPageAliases['nl'] = [
+ 'AbuseLog' => [ 'Filterlogboek', 'Misbruiklogboek' ],
+ 'AbuseFilter' => [ 'Filter', 'Misbruikfilter' ],
+];
+
+/** Norwegian Nynorsk (norsk nynorsk) */
+$specialPageAliases['nn'] = [
+ 'AbuseLog' => [ 'Endringsfilterlogg', 'Misbrukslogg' ],
+ 'AbuseFilter' => [ 'Endringsfilter', 'Misbruksfilter' ],
+];
+
+/** Occitan (occitan) */
+$specialPageAliases['oc'] = [
+ 'AbuseLog' => [ 'Jornal_dels_abuses', 'JornalDelsAbuses' ],
+ 'AbuseFilter' => [ 'Filtre_d\'abuses', 'FiltredAbuses', 'FilterAbus' ],
+];
+
+/** Punjabi (ਪੰਜਾਬੀ) */
+$specialPageAliases['pa'] = [
+ 'AbuseLog' => [ 'ਕੁਵਰਤੋਂ_ਦਾ_ਚਿੱਠਾ' ],
+ 'AbuseFilter' => [ 'ਕੁਵਰਤੋਂ_ਛਣਨੀ' ],
+];
+
+/** Polish (polski) */
+$specialPageAliases['pl'] = [
+ 'AbuseLog' => [ 'Rejestr_nadużyć' ],
+ 'AbuseFilter' => [ 'Filtr_nadużyć' ],
+];
+
+/** Brazilian Portuguese (português do Brasil) */
+$specialPageAliases['pt-br'] = [
+ 'AbuseLog' => [ 'Registro_de_abusos' ],
+ 'AbuseFilter' => [ 'Filtro_de_abusos' ],
+];
+
+/** Romanian (română) */
+$specialPageAliases['ro'] = [
+ 'AbuseLog' => [ 'Jurnal_abuzuri' ],
+ 'AbuseFilter' => [ 'Filtru_abuzuri' ],
+];
+
+/** Russian (русский) */
+$specialPageAliases['ru'] = [
+ 'AbuseLog' => [ 'Журнал_злоупотреблений' ],
+ 'AbuseFilter' => [ 'Фильтр_злоупотреблений' ],
+];
+
+/** Sanskrit (संस्कृतम्) */
+$specialPageAliases['sa'] = [
+ 'AbuseLog' => [ 'दुरुपयोगअङ्कन' ],
+ 'AbuseFilter' => [ 'दुरुपयोगशोधबन्धन' ],
+];
+
+/** Sicilian (sicilianu) */
+$specialPageAliases['scn'] = [
+ 'AbuseLog' => [ 'RegistroAbusi' ],
+ 'AbuseFilter' => [ 'FiltroAntiAbusi' ],
+];
+
+/** Serbo-Croatian (srpskohrvatski / српскохрватски) */
+$specialPageAliases['sh'] = [
+ 'AbuseLog' => [ 'Evidencija_zloupotreba' ],
+ 'AbuseFilter' => [ 'Filter_zloupotreba' ],
+];
+
+/** Sinhala (සිංහල) */
+$specialPageAliases['si'] = [
+ 'AbuseLog' => [ 'අපයෙදුම්_ලඝු-සටහන' ],
+ 'AbuseFilter' => [ 'අපයෙදුම්_පෙරහන' ],
+];
+
+/** Slovak (slovenčina) */
+$specialPageAliases['sk'] = [
+ 'AbuseLog' => [ 'ZáznamZneužití' ],
+ 'AbuseFilter' => [ 'FilterZneužití' ],
+];
+
+/** Swedish (svenska) */
+$specialPageAliases['sv'] = [
+ 'AbuseLog' => [ 'Missbrukslogg' ],
+ 'AbuseFilter' => [ 'Missbruksfilter' ],
+];
+
+/** Thai (ไทย) */
+$specialPageAliases['th'] = [
+ 'AbuseLog' => [ 'ปูมการละเมิด' ],
+ 'AbuseFilter' => [ 'ตัวกรองการละเมิด' ],
+];
+
+/** Tagalog (Tagalog) */
+$specialPageAliases['tl'] = [
+ 'AbuseLog' => [ 'Talaan_ng_pang-aabuso' ],
+ 'AbuseFilter' => [ 'Talaan_ng_pansala' ],
+];
+
+/** Turkish (Türkçe) */
+$specialPageAliases['tr'] = [
+ 'AbuseLog' => [ 'İstismarGünlüğü', 'DeğişiklikGünlüğü' ],
+ 'AbuseFilter' => [ 'İstismarSüzgeci', 'DeğişiklikSüzgeci' ],
+];
+
+/** Ukrainian (українська) */
+$specialPageAliases['uk'] = [
+ 'AbuseLog' => [ 'Журнал_зловживань', 'Журнал_злоупотреблений' ],
+ 'AbuseFilter' => [ 'Фільтр_редагувань', 'Фільтр_зловживань', 'Фильтр_злоупотреблений' ],
+];
+
+/** Urdu (اردو) */
+$specialPageAliases['ur'] = [
+ 'AbuseLog' => [ 'نوشتہ_غلط_کاری' ],
+ 'AbuseFilter' => [ 'مقطار_غلط_کاری' ],
+];
+
+/** Venetian (vèneto) */
+$specialPageAliases['vec'] = [
+ 'AbuseLog' => [ 'RegistroAbusi' ],
+ 'AbuseFilter' => [ 'FiltroAbusi' ],
+];
+
+/** Vietnamese (Tiếng Việt) */
+$specialPageAliases['vi'] = [
+ 'AbuseLog' => [ 'Nhật_trình_sai_phạm' ],
+ 'AbuseFilter' => [ 'Bộ_lọc_sai_phạm' ],
+];
+
+/** Yiddish (ייִדיש) */
+$specialPageAliases['yi'] = [
+ 'AbuseLog' => [ 'שעדיקונג_לאגבוך' ],
+ 'AbuseFilter' => [ 'שעדיקונג_פילטער' ],
+];
+
+/** Cantonese (粵語) */
+$specialPageAliases['yue'] = [
+ 'AbuseLog' => [ '濫用日誌' ],
+ 'AbuseFilter' => [ '濫用過濾器' ],
+];
+
+/** Simplified Chinese (中文(简体)‎) */
+$specialPageAliases['zh-hans'] = [
+ 'AbuseLog' => [ '滥用日志', '过滤日志' ],
+ 'AbuseFilter' => [ '滥用过滤器', '防滥用过滤器' ],
+];
+
+/** Traditional Chinese (中文(繁體)‎) */
+$specialPageAliases['zh-hant'] = [
+ 'AbuseLog' => [ '濫用日誌' ],
+ 'AbuseFilter' => [ '濫用過濾器' ],
+];
diff --git a/www/wiki/extensions/AbuseFilter/CODE_OF_CONDUCT.md b/www/wiki/extensions/AbuseFilter/CODE_OF_CONDUCT.md
new file mode 100644
index 00000000..d8e5d087
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/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/AbuseFilter/COPYING b/www/wiki/extensions/AbuseFilter/COPYING
new file mode 100644
index 00000000..d159169d
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/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/AbuseFilter/Gruntfile.js b/www/wiki/extensions/AbuseFilter/Gruntfile.js
new file mode 100644
index 00000000..39559a79
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/Gruntfile.js
@@ -0,0 +1,39 @@
+/* eslint-env node */
+module.exports = function ( grunt ) {
+ grunt.loadNpmTasks( 'grunt-jsonlint' );
+ grunt.loadNpmTasks( 'grunt-banana-checker' );
+ grunt.loadNpmTasks( 'grunt-eslint' );
+ grunt.loadNpmTasks( 'grunt-stylelint' );
+
+ grunt.initConfig( {
+ jsonlint: {
+ all: [
+ '**/*.json',
+ '!node_modules/**',
+ '!vendor/**'
+ ]
+ },
+ banana: {
+ all: 'i18n/'
+ },
+ eslint: {
+ all: [
+ '**/*.js',
+ '!node_modules/**',
+ '!modules/mode-abusefilter.js',
+ '!vendor/**'
+ ]
+ },
+ stylelint: {
+ all: [
+ '**/*.css',
+ '!node_modules/**',
+ '!modules/mode-abusefilter.js',
+ '!vendor/**'
+ ]
+ }
+ } );
+
+ grunt.registerTask( 'test', [ 'jsonlint', 'banana', 'eslint', 'stylelint' ] );
+ grunt.registerTask( 'default', 'test' );
+};
diff --git a/www/wiki/extensions/AbuseFilter/abusefilter.tables.pg.sql b/www/wiki/extensions/AbuseFilter/abusefilter.tables.pg.sql
new file mode 100644
index 00000000..45d68233
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/abusefilter.tables.pg.sql
@@ -0,0 +1,86 @@
+-- SQL tables for AbuseFilter extension (Postgres version)
+
+-- Note: This does not currently work, as the extension generates queries
+-- like this: SELECT af_hidden FROM abuse_filter WHERE af_id = 'new' LIMIT 1
+-- Which makes no sense as af_id is a BIGINT in the MySQL version of the schema
+
+BEGIN;
+
+CREATE SEQUENCE abuse_filter_af_id_seq;
+CREATE TABLE abuse_filter (
+ af_id INTEGER NOT NULL PRIMARY KEY DEFAULT nextval('abuse_filter_af_id_seq'),
+ af_pattern TEXT NOT NULL,
+ af_user INTEGER NOT NULL,
+ af_user_text TEXT NOT NULL,
+ af_timestamp TIMESTAMPTZ NOT NULL,
+ af_enabled SMALLINT NOT NULL DEFAULT 1,
+ af_comments TEXT,
+ af_public_comments TEXT,
+ af_hidden SMALLINT NOT NULL DEFAULT 0,
+ af_hit_count INTEGER NOT NULL DEFAULT 0,
+ af_throttled SMALLINT NOT NULL DEFAULT 0,
+ af_deleted SMALLINT NOT NULL DEFAULT 0,
+ af_actions TEXT NOT NULL DEFAULT '',
+ af_global SMALLINT NOT NULL DEFAULT 0,
+ af_group TEXT NOT NULL DEFAULT 'default'
+);
+CREATE INDEX abuse_filter_user ON abuse_filter(af_user);
+CREATE INDEX abuse_filter_group_enabled_id ON abuse_filter(af_group,af_enabled,af_id);
+
+
+CREATE TABLE abuse_filter_action (
+ afa_filter INTEGER NOT NULL,
+ afa_consequence TEXT NOT NULL,
+ afa_parameters TEXT NOT NULL,
+ PRIMARY KEY (afa_filter,afa_consequence)
+);
+CREATE INDEX abuse_filter_action_consequence ON abuse_filter_action(afa_consequence);
+
+
+CREATE SEQUENCE abuse_filter_log_afl_id_seq;
+CREATE TABLE abuse_filter_log (
+ afl_id INTEGER NOT NULL PRIMARY KEY DEFAULT nextval('abuse_filter_log_afl_id_seq'),
+ afl_filter TEXT NOT NULL,
+ afl_user INTEGER NOT NULL,
+ afl_user_text TEXT NOT NULL,
+ afl_ip TEXT NOT NULL,
+ afl_action TEXT NOT NULL,
+ afl_actions TEXT NOT NULL,
+ afl_var_dump TEXT NOT NULL,
+ afl_timestamp TIMESTAMPTZ NOT NULL,
+ afl_namespace INTEGER NOT NULL,
+ afl_title TEXT NOT NULL,
+ afl_wiki TEXT NULL,
+ afl_deleted SMALLINT NULL
+);
+CREATE INDEX abuse_filter_log_filter ON abuse_filter_log(afl_filter);
+CREATE INDEX abuse_filter_log_ip ON abuse_filter_log(afl_ip);
+CREATE INDEX abuse_filter_log_timestamp ON abuse_filter_log(afl_timestamp);
+CREATE INDEX abuse_filter_log_title ON abuse_filter_log(afl_namespace, afl_title);
+CREATE INDEX abuse_filter_log_user ON abuse_filter_log(afl_user);
+CREATE INDEX abuse_filter_log_user_text ON abuse_filter_log(afl_user_text);
+CREATE INDEX abuse_filter_log_wiki ON abuse_filter_log(afl_wiki);
+
+CREATE SEQUENCE abuse_filter_history_afh_id_seq;
+CREATE TABLE abuse_filter_history (
+ afh_id INTEGER NOT NULL PRIMARY KEY DEFAULT nextval('abuse_filter_history_afh_id_seq'),
+ afh_filter INTEGER NOT NULL,
+ afh_user INTEGER NOT NULL,
+ afh_user_text TEXT NOT NULL,
+ afh_timestamp TIMESTAMPTZ NOT NULL,
+ afh_pattern TEXT NOT NULL,
+ afh_comments TEXT NOT NULL,
+ afh_flags TEXT NOT NULL,
+ afh_public_comments TEXT NOT NULL,
+ afh_actions TEXT NOT NULL,
+ afh_deleted SMALLINT NOT NULL DEFAULT 0,
+ afh_changed_fields TEXT NOT NULL DEFAULT '',
+ afh_group TEXT NULL
+);
+CREATE INDEX abuse_filter_history_filter ON abuse_filter_history(afh_filter);
+CREATE INDEX abuse_filter_history_user ON abuse_filter_history(afh_user);
+CREATE INDEX abuse_filter_history_user_text ON abuse_filter_history(afh_user_text);
+CREATE INDEX abuse_filter_history_timestamp ON abuse_filter_history(afh_timestamp);
+
+COMMIT;
+
diff --git a/www/wiki/extensions/AbuseFilter/abusefilter.tables.sql b/www/wiki/extensions/AbuseFilter/abusefilter.tables.sql
new file mode 100644
index 00000000..ff9bdb3d
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/abusefilter.tables.sql
@@ -0,0 +1,83 @@
+-- SQL tables for AbuseFilter extension
+
+CREATE TABLE /*$wgDBprefix*/abuse_filter (
+ af_id BIGINT unsigned NOT NULL AUTO_INCREMENT,
+ af_pattern BLOB NOT NULL,
+ af_user BIGINT unsigned NOT NULL,
+ af_user_text varchar(255) binary NOT NULL,
+ af_timestamp binary(14) NOT NULL,
+ af_enabled tinyint(1) not null default 1,
+ af_comments BLOB,
+ af_public_comments TINYBLOB,
+ af_hidden tinyint(1) not null default 0,
+ af_hit_count bigint not null default 0,
+ af_throttled tinyint(1) NOT NULL default 0,
+ af_deleted tinyint(1) NOT NULL DEFAULT 0,
+ af_actions varchar(255) NOT NULL DEFAULT '',
+ af_global tinyint(1) NOT NULL DEFAULT 0,
+ af_group varchar(64) binary NOT NULL DEFAULT 'default',
+
+ PRIMARY KEY (af_id),
+ KEY (af_user),
+ KEY (af_group,af_enabled,af_id)
+) /*$wgDBTableOptions*/;
+
+CREATE TABLE /*$wgDBprefix*/abuse_filter_action (
+ afa_filter BIGINT unsigned NOT NULL,
+ afa_consequence varchar(255) NOT NULL,
+ afa_parameters TINYBLOB NOT NULL,
+
+ PRIMARY KEY (afa_filter,afa_consequence),
+ KEY (afa_consequence)
+) /*$wgDBTableOptions*/;
+
+CREATE TABLE /*$wgDBprefix*/abuse_filter_log (
+ afl_id BIGINT unsigned NOT NULL AUTO_INCREMENT,
+ afl_filter varchar(64) binary NOT NULL,
+ afl_user BIGINT unsigned NOT NULL,
+ afl_user_text varchar(255) binary NOT NULL,
+ afl_ip varchar(255) not null,
+ afl_action varbinary(255) not null,
+ afl_actions varbinary(255) not null,
+ afl_var_dump BLOB NOT NULL,
+ afl_timestamp binary(14) NOT NULL,
+ afl_namespace int NOT NULL,
+ afl_title varchar(255) binary NOT NULL,
+ afl_wiki varchar(64) binary NULL,
+ afl_deleted tinyint(1) NOT NULL DEFAULT 0,
+ afl_patrolled_by int unsigned NULL,
+ afl_rev_id int unsigned,
+ afl_log_id int unsigned,
+
+ PRIMARY KEY (afl_id),
+ KEY filter_timestamp (afl_filter,afl_timestamp),
+ KEY user_timestamp (afl_user,afl_user_text,afl_timestamp),
+ KEY (afl_timestamp),
+ KEY page_timestamp (afl_namespace, afl_title, afl_timestamp),
+ KEY ip_timestamp (afl_ip, afl_timestamp),
+ KEY (afl_rev_id),
+ KEY (afl_log_id),
+ KEY wiki_timestamp (afl_wiki, afl_timestamp)
+) /*$wgDBTableOptions*/;
+
+CREATE TABLE /*$wgDBprefix*/abuse_filter_history (
+ afh_id BIGINT unsigned NOT NULL AUTO_INCREMENT,
+ afh_filter BIGINT unsigned NOT NULL,
+ afh_user BIGINT unsigned NOT NULL,
+ afh_user_text varchar(255) binary NOT NULL,
+ afh_timestamp binary(14) NOT NULL,
+ afh_pattern BLOB NOT NULL,
+ afh_comments BLOB NOT NULL,
+ afh_flags TINYBLOB NOT NULL,
+ afh_public_comments TINYBLOB,
+ afh_actions BLOB,
+ afh_deleted tinyint(1) NOT NULL DEFAULT 0,
+ afh_changed_fields varchar(255) NOT NULL DEFAULT '',
+ afh_group varchar(64) binary NULL,
+
+ PRIMARY KEY (afh_id),
+ KEY (afh_filter),
+ KEY (afh_user),
+ KEY (afh_user_text),
+ KEY (afh_timestamp)
+) /*$wgDBTableOptions*/;
diff --git a/www/wiki/extensions/AbuseFilter/abusefilter.tables.sqlite.sql b/www/wiki/extensions/AbuseFilter/abusefilter.tables.sqlite.sql
new file mode 100644
index 00000000..6c82370f
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/abusefilter.tables.sqlite.sql
@@ -0,0 +1,70 @@
+-- SQL tables for AbuseFilter extension
+
+CREATE TABLE /*$wgDBprefix*/abuse_filter (
+ af_id BIGINT unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
+ af_pattern BLOB NOT NULL,
+ af_user BIGINT unsigned NOT NULL,
+ af_user_text varchar(255) binary NOT NULL,
+ af_timestamp binary(14) NOT NULL,
+ af_enabled tinyint(1) not null default 1,
+ af_comments BLOB,
+ af_public_comments TINYBLOB,
+ af_hidden tinyint(1) not null default 0,
+ af_hit_count bigint not null default 0,
+ af_throttled tinyint(1) NOT NULL default 0,
+ af_deleted tinyint(1) NOT NULL DEFAULT 0,
+ af_actions varchar(255) NOT NULL DEFAULT '',
+ af_global tinyint(1) NOT NULL DEFAULT 0
+) /*$wgDBTableOptions*/;
+CREATE INDEX af_user ON /*$wgDBprefix*/abuse_filter (af_user);
+
+CREATE TABLE /*$wgDBprefix*/abuse_filter_action (
+ afa_filter BIGINT unsigned NOT NULL,
+ afa_consequence varchar(255) NOT NULL,
+ afa_parameters TINYBLOB NOT NULL,
+
+ PRIMARY KEY (afa_filter,afa_consequence)
+) /*$wgDBTableOptions*/;
+CREATE INDEX afa_consequence ON /*$wgDBprefix*/abuse_filter_action (afa_consequence);
+
+CREATE TABLE /*$wgDBprefix*/abuse_filter_log (
+ afl_id BIGINT unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
+ afl_filter varchar(64) binary NOT NULL,
+ afl_user BIGINT unsigned NOT NULL,
+ afl_user_text varchar(255) binary NOT NULL,
+ afl_ip varchar(255) not null,
+ afl_action varbinary(255) not null,
+ afl_actions varbinary(255) not null,
+ afl_var_dump BLOB NOT NULL,
+ afl_timestamp binary(14) NOT NULL,
+ afl_namespace int NOT NULL,
+ afl_title varchar(255) binary NOT NULL,
+ afl_wiki varchar(64) binary NULL,
+ afl_deleted tinyint(1) NOT NULL DEFAULT 0,
+ afl_patrolled_by int unsigned NULL
+) /*$wgDBTableOptions*/;
+CREATE INDEX afl_filter_timestamp ON /*$wgDBprefix*/abuse_filter_log (afl_filter,afl_timestamp);
+CREATE INDEX afl_user_timestamp ON /*$wgDBprefix*/abuse_filter_log (afl_user,afl_user_text,afl_timestamp);
+CREATE INDEX afl_timestamp ON /*$wgDBprefix*/abuse_filter_log (afl_timestamp);
+CREATE INDEX afl_page_timestamp ON /*$wgDBprefix*/abuse_filter_log (afl_namespace, afl_title, afl_timestamp);
+CREATE INDEX afl_ip_timestamp ON /*$wgDBprefix*/abuse_filter_log (afl_ip, afl_timestamp);
+CREATE INDEX afl_wiki_timestamp ON /*$wgDBprefix*/abuse_filter_log (afl_wiki, afl_timestamp);
+
+CREATE TABLE /*$wgDBprefix*/abuse_filter_history (
+ afh_id BIGINT unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
+ afh_filter BIGINT unsigned NOT NULL,
+ afh_user BIGINT unsigned NOT NULL,
+ afh_user_text varchar(255) binary NOT NULL,
+ afh_timestamp binary(14) NOT NULL,
+ afh_pattern BLOB NOT NULL,
+ afh_comments BLOB NOT NULL,
+ afh_flags TINYBLOB NOT NULL,
+ afh_public_comments TINYBLOB,
+ afh_actions BLOB,
+ afh_deleted tinyint(1) NOT NULL DEFAULT 0,
+ afh_changed_fields varchar(255) NOT NULL DEFAULT ''
+) /*$wgDBTableOptions*/;
+CREATE INDEX afh_filter ON /*$wgDBprefix*/abuse_filter_history (afh_filter);
+CREATE INDEX afh_user ON /*$wgDBprefix*/abuse_filter_history (afh_user);
+CREATE INDEX afh_user_text ON /*$wgDBprefix*/abuse_filter_history (afh_user_text);
+CREATE INDEX afh_timestamp ON /*$wgDBprefix*/abuse_filter_history (afh_timestamp);
diff --git a/www/wiki/extensions/AbuseFilter/composer.json b/www/wiki/extensions/AbuseFilter/composer.json
new file mode 100644
index 00000000..95b25ade
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/composer.json
@@ -0,0 +1,28 @@
+{
+ "name": "mediawiki/abuse-filter",
+ "type": "mediawiki-extension",
+ "description": "The AbuseFilter extension allows privileged users to set specific controls on actions by users, such as edits, and create automated reactions for certain behaviors.",
+ "homepage": "https://www.mediawiki.org/wiki/Extension:AbuseFilter",
+ "license": "GPL-2.0-or-later",
+ "require": {
+ "php": ">=5.4",
+ "wikimedia/equivset": "^1.0"
+ },
+ "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": {
+ "fix": [
+ "phpcbf",
+ "minus-x fix ."
+ ],
+ "test": [
+ "parallel-lint . --exclude node_modules --exclude vendor",
+ "phpcs -p -s",
+ "minus-x check ."
+ ]
+ }
+}
diff --git a/www/wiki/extensions/AbuseFilter/db_patches/patch-abuse_filter_history.pg.sql b/www/wiki/extensions/AbuseFilter/db_patches/patch-abuse_filter_history.pg.sql
new file mode 100644
index 00000000..fbc27584
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/db_patches/patch-abuse_filter_history.pg.sql
@@ -0,0 +1,29 @@
+-- Patch to add abuse_filter_history table (Postgres version)
+
+BEGIN;
+
+
+CREATE SEQUENCE abuse_filter_history_afh_id_seq;
+CREATE TABLE abuse_filter_history (
+ afh_id INTEGER NOT NULL PRIMARY KEY DEFAULT nextval('abuse_filter_history_afh_id_seq'),
+ afh_filter INTEGER NOT NULL,
+ afh_user INTEGER NOT NULL,
+ afh_user_text TEXT NOT NULL,
+ afh_timestamp TIMESTAMPTZ NOT NULL,
+ afh_pattern TEXT NOT NULL,
+ afh_comments TEXT NOT NULL,
+ afh_flags TEXT NOT NULL,
+ afh_public_comments TEXT NOT NULL,
+ afh_actions TEXT NOT NULL,
+ afh_deleted SMALLINT NOT NULL DEFAULT 0,
+ afh_changed_fields TEXT NOT NULL DEFAULT ''
+);
+CREATE INDEX abuse_filter_history_filter ON abuse_filter_history(afh_filter);
+CREATE INDEX abuse_filter_history_user ON abuse_filter_history(afh_user);
+CREATE INDEX abuse_filter_history_user_text ON abuse_filter_history(afh_user_text);
+CREATE INDEX abuse_filter_history_timestamp ON abuse_filter_history(afh_timestamp);
+
+
+COMMIT;
+
+
diff --git a/www/wiki/extensions/AbuseFilter/db_patches/patch-abuse_filter_history.sql b/www/wiki/extensions/AbuseFilter/db_patches/patch-abuse_filter_history.sql
new file mode 100644
index 00000000..0cd7f07a
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/db_patches/patch-abuse_filter_history.sql
@@ -0,0 +1,20 @@
+-- Patch to add abuse_filter_history table
+
+CREATE TABLE /*$wgDBprefix*/abuse_filter_history (
+ afh_id BIGINT unsigned NOT NULL AUTO_INCREMENT,
+ afh_filter BIGINT unsigned NOT NULL,
+ afh_user BIGINT unsigned NOT NULL,
+ afh_user_text varchar(255) binary NOT NULL,
+ afh_timestamp binary(14) NOT NULL,
+ afh_pattern BLOB NOT NULL,
+ afh_comments BLOB NOT NULL,
+ afh_flags TINYBLOB NOT NULL,
+ afh_public_comments TINYBLOB,
+ afh_actions BLOB,
+
+ PRIMARY KEY (afh_id),
+ KEY (afh_filter),
+ KEY (afh_user),
+ KEY (afh_user_text),
+ KEY (afh_timestamp)
+) /*$wgDBTableOptions*/;
diff --git a/www/wiki/extensions/AbuseFilter/db_patches/patch-abuse_filter_history.sqlite.sql b/www/wiki/extensions/AbuseFilter/db_patches/patch-abuse_filter_history.sqlite.sql
new file mode 100644
index 00000000..c1d26508
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/db_patches/patch-abuse_filter_history.sqlite.sql
@@ -0,0 +1,18 @@
+-- Patch to add abuse_filter_history table
+
+CREATE TABLE /*$wgDBprefix*/abuse_filter_history (
+ afh_id BIGINT unsigned NOT NULL AUTO_INCREMENT,
+ afh_filter BIGINT unsigned NOT NULL,
+ afh_user BIGINT unsigned NOT NULL,
+ afh_user_text varchar(255) binary NOT NULL,
+ afh_timestamp binary(14) NOT NULL,
+ afh_pattern BLOB NOT NULL,
+ afh_comments BLOB NOT NULL,
+ afh_flags TINYBLOB NOT NULL,
+ afh_public_comments TINYBLOB,
+ afh_actions BLOB
+) /*$wgDBTableOptions*/;
+CREATE INDEX afh_filter ON /*$wgDBprefix*/abuse_filter_history (afh_filter);
+CREATE INDEX afh_user ON /*$wgDBprefix*/abuse_filter_history (afh_user);
+CREATE INDEX afh_user_text ON /*$wgDBprefix*/abuse_filter_history (afh_user_text);
+CREATE INDEX afh_timestamp ON /*$wgDBprefix*/abuse_filter_history (afh_timestamp);
diff --git a/www/wiki/extensions/AbuseFilter/db_patches/patch-af_actions.sql b/www/wiki/extensions/AbuseFilter/db_patches/patch-af_actions.sql
new file mode 100644
index 00000000..e1662dfe
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/db_patches/patch-af_actions.sql
@@ -0,0 +1,4 @@
+--- Adds an af_actions field to the abuse_filter table, so we don't need to LEFT JOIN on abuse_filter_action and use a GROUP_CONCAT, which isn't compatible with mysql 4.0
+--- Andrew Garrett, 2009-01-27
+
+ALTER TABLE /*_*/abuse_filter add column af_actions varchar(255) NOT NULL DEFAULT '';
diff --git a/www/wiki/extensions/AbuseFilter/db_patches/patch-af_deleted.sql b/www/wiki/extensions/AbuseFilter/db_patches/patch-af_deleted.sql
new file mode 100644
index 00000000..bde61633
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/db_patches/patch-af_deleted.sql
@@ -0,0 +1,2 @@
+ALTER TABLE /*_*/abuse_filter ADD COLUMN af_deleted tinyint(1) NOT NULL DEFAULT 0;
+ALTER TABLE /*_*/abuse_filter_history ADD COLUMN afh_deleted tinyint(1) NOT NULL DEFAULT 0;
diff --git a/www/wiki/extensions/AbuseFilter/db_patches/patch-af_group.sql b/www/wiki/extensions/AbuseFilter/db_patches/patch-af_group.sql
new file mode 100644
index 00000000..40e3ada4
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/db_patches/patch-af_group.sql
@@ -0,0 +1,5 @@
+-- Add af_group field to abuse_filter table
+ALTER TABLE /*_*/abuse_filter add column af_group varchar(64) binary NOT NULL DEFAULT 'default';
+ALTER TABLE /*_*/abuse_filter_history add column afh_group varchar(64) binary NULL;
+
+CREATE INDEX /*i*/af_group ON /*_*/abuse_filter (af_group,af_enabled,af_id); \ No newline at end of file
diff --git a/www/wiki/extensions/AbuseFilter/db_patches/patch-afh_changed_fields.sql b/www/wiki/extensions/AbuseFilter/db_patches/patch-afh_changed_fields.sql
new file mode 100644
index 00000000..6f1360b3
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/db_patches/patch-afh_changed_fields.sql
@@ -0,0 +1,3 @@
+--- 2009-01-26, Andrew Garrett
+--- Adds a 'changed fields' field to the abuse filter history, so that we can highlight fields which changed!
+ALTER TABLE /*_*/abuse_filter_history add column afh_changed_fields varchar(255) NOT NULL DEFAULT '';
diff --git a/www/wiki/extensions/AbuseFilter/db_patches/patch-afl-namespace_int.sql b/www/wiki/extensions/AbuseFilter/db_patches/patch-afl-namespace_int.sql
new file mode 100644
index 00000000..418cab91
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/db_patches/patch-afl-namespace_int.sql
@@ -0,0 +1 @@
+ALTER TABLE /*_*/abuse_filter_log MODIFY afl_namespace INT NOT NULL; \ No newline at end of file
diff --git a/www/wiki/extensions/AbuseFilter/db_patches/patch-afl_action_id.sql b/www/wiki/extensions/AbuseFilter/db_patches/patch-afl_action_id.sql
new file mode 100644
index 00000000..85eab834
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/db_patches/patch-afl_action_id.sql
@@ -0,0 +1,8 @@
+-- Store the ID of successful actions in the abuse_filter_log table.
+ALTER TABLE /*_*/abuse_filter_log
+ ADD COLUMN afl_rev_id int unsigned;
+CREATE INDEX /*i*/afl_rev_id ON /*_*/abuse_filter_log (afl_rev_id);
+
+ALTER TABLE /*_*/abuse_filter_log
+ ADD COLUMN afl_log_id int unsigned;
+CREATE INDEX /*i*/afl_log_id ON /*_*/abuse_filter_log (afl_log_id); \ No newline at end of file
diff --git a/www/wiki/extensions/AbuseFilter/db_patches/patch-afl_change_deleted_patrolled.sql b/www/wiki/extensions/AbuseFilter/db_patches/patch-afl_change_deleted_patrolled.sql
new file mode 100644
index 00000000..e96ab95f
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/db_patches/patch-afl_change_deleted_patrolled.sql
@@ -0,0 +1,3 @@
+ALTER TABLE /*_*/abuse_filter_log MODIFY afl_deleted tinyint(1) NOT NULL DEFAULT 0;
+ALTER TABLE /*_*/abuse_filter_log MODIFY afl_patrolled_by int unsigned NOT NULL DEFAULT 0;
+
diff --git a/www/wiki/extensions/AbuseFilter/db_patches/patch-fix-indexes.sql b/www/wiki/extensions/AbuseFilter/db_patches/patch-fix-indexes.sql
new file mode 100644
index 00000000..16dea669
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/db_patches/patch-fix-indexes.sql
@@ -0,0 +1,18 @@
+-- Fixes abuse_filter_log indices.
+
+--# PRIMARY KEY (afl_id),
+--# KEY (afl_filter,afl_timestamp),
+--# KEY (afl_user,afl_user_text,afl_timestamp),
+--# KEY (afl_timestamp),
+--# KEY (afl_namespace, afl_title, afl_timestamp),
+--# KEY (afl_ip, afl_timestamp)
+
+ALTER TABLE /*_*/abuse_filter_log ADD KEY filter_timestamp (afl_filter,afl_timestamp);
+ALTER TABLE /*_*/abuse_filter_log ADD KEY user_timestamp (afl_user,afl_user_text,afl_timestamp);
+ALTER TABLE /*_*/abuse_filter_log ADD KEY page_timestamp (afl_namespace, afl_title, afl_timestamp);
+ALTER TABLE /*_*/abuse_filter_log ADD KEY ip_timestamp (afl_ip, afl_timestamp);
+
+ALTER TABLE /*_*/abuse_filter_log DROP KEY afl_filter;
+ALTER TABLE /*_*/abuse_filter_log DROP KEY afl_user;
+ALTER TABLE /*_*/abuse_filter_log DROP KEY afl_namespace;
+ALTER TABLE /*_*/abuse_filter_log DROP KEY afl_ip;
diff --git a/www/wiki/extensions/AbuseFilter/db_patches/patch-fix-indexes.sqlite.sql b/www/wiki/extensions/AbuseFilter/db_patches/patch-fix-indexes.sqlite.sql
new file mode 100644
index 00000000..f490bf9c
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/db_patches/patch-fix-indexes.sqlite.sql
@@ -0,0 +1,18 @@
+-- Fixes abuse_filter_log indices.
+
+--# PRIMARY KEY (afl_id),
+--# KEY (afl_filter,afl_timestamp),
+--# KEY (afl_user,afl_user_text,afl_timestamp),
+--# KEY (afl_timestamp),
+--# KEY (afl_namespace, afl_title, afl_timestamp),
+--# KEY (afl_ip, afl_timestamp)
+
+CREATE INDEX afl_filter_timestamp ON /*$wgDBprefix*/abuse_filter_log (afl_filter,afl_timestamp);
+CREATE INDEX afl_user_timestamp ON /*$wgDBprefix*/abuse_filter_log (afl_user,afl_user_text,afl_timestamp);
+CREATE INDEX afl_page_timestamp ON /*$wgDBprefix*/abuse_filter_log (afl_namespace, afl_title, afl_timestamp);
+CREATE INDEX afl_ip_timestamp ON /*$wgDBprefix*/abuse_filter_log (afl_ip, afl_timestamp);
+
+ALTER TABLE /*_*/abuse_filter_log DROP KEY afl_filter;
+ALTER TABLE /*_*/abuse_filter_log DROP KEY afl_user;
+ALTER TABLE /*_*/abuse_filter_log DROP KEY afl_namespace;
+ALTER TABLE /*_*/abuse_filter_log DROP KEY afl_ip;
diff --git a/www/wiki/extensions/AbuseFilter/db_patches/patch-global_filters.sql b/www/wiki/extensions/AbuseFilter/db_patches/patch-global_filters.sql
new file mode 100644
index 00000000..7706015e
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/db_patches/patch-global_filters.sql
@@ -0,0 +1,6 @@
+-- Patch to add support for global filters
+
+ALTER TABLE /*_*/abuse_filter ADD COLUMN af_global tinyint(1) NOT NULL DEFAULT 0;
+
+ALTER TABLE /*_*/abuse_filter_log ADD COLUMN afl_wiki varchar(64) binary NULL;
+ALTER TABLE /*_*/abuse_filter_log CHANGE COLUMN afl_filter afl_filter varchar(64) binary NOT NULL;
diff --git a/www/wiki/extensions/AbuseFilter/db_patches/patch-global_logging_wiki-index.sql b/www/wiki/extensions/AbuseFilter/db_patches/patch-global_logging_wiki-index.sql
new file mode 100644
index 00000000..690d034e
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/db_patches/patch-global_logging_wiki-index.sql
@@ -0,0 +1,3 @@
+-- Add abuse_filter_log idex for afl_wiki.
+
+ALTER TABLE /*_*/abuse_filter_log ADD KEY wiki_timestamp (afl_wiki, afl_timestamp);
diff --git a/www/wiki/extensions/AbuseFilter/db_patches/patch-global_logging_wiki-index.sqlite.sql b/www/wiki/extensions/AbuseFilter/db_patches/patch-global_logging_wiki-index.sqlite.sql
new file mode 100644
index 00000000..45c619c6
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/db_patches/patch-global_logging_wiki-index.sqlite.sql
@@ -0,0 +1,3 @@
+-- Add abuse_filter_log idex for afl_wiki.
+
+CREATE INDEX afl_wiki_timestamp ON /*$wgDBprefix*/abuse_filter_log (afl_wiki, afl_timestamp);
diff --git a/www/wiki/extensions/AbuseFilter/db_patches/patch-hide_patrol.sql b/www/wiki/extensions/AbuseFilter/db_patches/patch-hide_patrol.sql
new file mode 100644
index 00000000..0bc34ad8
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/db_patches/patch-hide_patrol.sql
@@ -0,0 +1,5 @@
+-- Add hiding and patrolling ability to abuse filter log
+-- Andrew Garrett, June 2009
+
+ALTER TABLE /*_*/abuse_filter_log ADD COLUMN afl_deleted tinyint(1) NOT NULL DEFAULT 0;
+ALTER TABLE /*_*/abuse_filter_log ADD COLUMN afl_patrolled_by int unsigned NOT NULL DEFAULT 0;
diff --git a/www/wiki/extensions/AbuseFilter/extension.json b/www/wiki/extensions/AbuseFilter/extension.json
new file mode 100644
index 00000000..5ae55c7c
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/extension.json
@@ -0,0 +1,378 @@
+{
+ "name": "Abuse Filter",
+ "author": [
+ "Andrew Garrett",
+ "River Tarnell",
+ "Victor Vasiliev",
+ "Marius Hoch"
+ ],
+ "url": "https://www.mediawiki.org/wiki/Extension:AbuseFilter",
+ "descriptionmsg": "abusefilter-desc",
+ "license-name": "GPL-2.0-or-later",
+ "type": "antispam",
+ "requires": {
+ "MediaWiki": ">= 1.31.0"
+ },
+ "AvailableRights": [
+ "abusefilter-modify",
+ "abusefilter-log-detail",
+ "abusefilter-view",
+ "abusefilter-log",
+ "abusefilter-private",
+ "abusefilter-private-log",
+ "abusefilter-modify-restricted",
+ "abusefilter-revert",
+ "abusefilter-view-private",
+ "abusefilter-log-private",
+ "abusefilter-hidden-log",
+ "abusefilter-hide-log",
+ "abusefilter-modify-global"
+ ],
+ "GroupPermissions": {
+ "*": {
+ "abusefilter-view": true,
+ "abusefilter-log": true
+ },
+ "sysop": {
+ "abusefilter-log-detail": true,
+ "abusefilter-modify": true
+ }
+ },
+ "GrantPermissions": {
+ "basic": {
+ "abusefilter-log": true,
+ "abusefilter-log-detail": true,
+ "abusefilter-view": true
+ },
+ "rollback": {
+ "abusefilter-revert": true
+ },
+ "viewrestrictedlogs": {
+ "abusefilter-hidden-log": true,
+ "abusefilter-view-private": true
+ }
+ },
+ "SpecialPages": {
+ "AbuseLog": "SpecialAbuseLog",
+ "AbuseFilter": "SpecialAbuseFilter"
+ },
+ "LogTypes": [
+ "abusefilter",
+ "abusefilterprivatedetails"
+ ],
+ "LogNames": {
+ "abusefilter": "abusefilter-log-name",
+ "abusefilterprivatedetails": "abusefilterprivatedetails-log-name"
+ },
+ "LogHeaders": {
+ "abusefilter": "abusefilter-log-header"
+ },
+ "LogActions": {
+ "suppress/hide-afl": "abusefilter-logentry-suppress",
+ "suppress/unhide-afl": "abusefilter-logentry-unsuppress"
+ },
+ "LogActionsHandlers": {
+ "abusefilter/hit": "AbuseLogHitFormatter",
+ "abusefilter/modify": "AbuseFilterModifyLogFormatter",
+ "abusefilter/create": "AbuseFilterModifyLogFormatter",
+ "abusefilterprivatedetails/access": "LogFormatter"
+ },
+ "ActionFilteredLogs": {
+ "abusefilter": {
+ "modify": [
+ "modify"
+ ],
+ "create": [
+ "create"
+ ]
+ }
+ },
+ "LogRestrictions": {
+ "abusefilterprivatedetails": "abusefilter-private-log"
+ },
+ "APIModules": {
+ "abusefilterchecksyntax": "ApiAbuseFilterCheckSyntax",
+ "abusefilterevalexpression": "ApiAbuseFilterEvalExpression",
+ "abusefilterunblockautopromote": "ApiAbuseFilterUnblockAutopromote",
+ "abusefiltercheckmatch": "ApiAbuseFilterCheckMatch"
+ },
+ "APIListModules": {
+ "abuselog": "ApiQueryAbuseLog",
+ "abusefilters": "ApiQueryAbuseFilters"
+ },
+ "MessagesDirs": {
+ "AbuseFilter": [
+ "i18n"
+ ]
+ },
+ "ExtensionMessagesFiles": {
+ "AbuseFilterAliases": "AbuseFilter.alias.php"
+ },
+ "AutoloadClasses": {
+ "AbuseFilter": "includes/AbuseFilter.php",
+ "AbuseFilterCachingParser" : "includes/parser/AbuseFilterCachingParser.php",
+ "AbuseFilterParser": "includes/parser/AbuseFilterParser.php",
+ "AbuseFilterTokenizer": "includes/parser/AbuseFilterTokenizer.php",
+ "AbuseFilterHooks": "includes/AbuseFilterHooks.php",
+ "AbuseFilterPreAuthenticationProvider": "includes/AbuseFilterPreAuthenticationProvider.php",
+ "SpecialAbuseLog": "includes/special/SpecialAbuseLog.php",
+ "AbuseLogPager": "includes/pagers/AbuseLogPager.php",
+ "SpecialAbuseFilter": "includes/special/SpecialAbuseFilter.php",
+ "AbuseLogHitFormatter": "includes/AbuseLogHitFormatter.php",
+ "AbuseFilterModifyLogFormatter": "includes/AbuseFilterModifyLogFormatter.php",
+ "AbuseFilterViewList": "includes/Views/AbuseFilterViewList.php",
+ "AbuseFilterPager": "includes/pagers/AbuseFilterPager.php",
+ "GlobalAbuseFilterPager": "includes/pagers/GlobalAbuseFilterPager.php",
+ "AbuseFilterView": "includes/Views/AbuseFilterView.php",
+ "AbuseFilterViewEdit": "includes/Views/AbuseFilterViewEdit.php",
+ "AbuseFilterViewTools": "includes/Views/AbuseFilterViewTools.php",
+ "AbuseFilterViewHistory": "includes/Views/AbuseFilterViewHistory.php",
+ "AbuseFilterHistoryPager": "includes/pagers/AbuseFilterHistoryPager.php",
+ "AbuseFilterViewRevert": "includes/Views/AbuseFilterViewRevert.php",
+ "AbuseFilterViewTestBatch": "includes/Views/AbuseFilterViewTestBatch.php",
+ "AbuseFilterViewExamine": "includes/Views/AbuseFilterViewExamine.php",
+ "AbuseFilterExaminePager": "includes/pagers/AbuseFilterExaminePager.php",
+ "AbuseFilterChangesList": "includes/AbuseFilterChangesList.php",
+ "AbuseFilterViewDiff": "includes/Views/AbuseFilterViewDiff.php",
+ "TableDiffFormatterFullContext": "includes/TableDiffFormatterFullContext.php",
+ "AbuseFilterViewImport": "includes/Views/AbuseFilterViewImport.php",
+ "AbuseFilterVariableHolder": "includes/AbuseFilterVariableHolder.php",
+ "AFComputedVariable": "includes/AFComputedVariable.php",
+ "AFPData": "includes/parser/AFPData.php",
+ "AFPException": "includes/parser/AFPException.php",
+ "AFPParserState": "includes/parser/AFPParserState.php",
+ "AFPToken": "includes/parser/AFPToken.php",
+ "AFPTreeNode": "includes/parser/AFPTreeNode.php",
+ "AFPTreeParser": "includes/parser/AFPTreeParser.php",
+ "AFPUserVisibleException": "includes/parser/AFPUserVisibleException.php",
+ "ApiQueryAbuseLog": "includes/api/ApiQueryAbuseLog.php",
+ "ApiQueryAbuseFilters": "includes/api/ApiQueryAbuseFilters.php",
+ "ApiAbuseFilterCheckSyntax": "includes/api/ApiAbuseFilterCheckSyntax.php",
+ "ApiAbuseFilterEvalExpression": "includes/api/ApiAbuseFilterEvalExpression.php",
+ "ApiAbuseFilterUnblockAutopromote": "includes/api/ApiAbuseFilterUnblockAutopromote.php",
+ "ApiAbuseFilterCheckMatch": "includes/api/ApiAbuseFilterCheckMatch.php"
+ },
+ "ResourceModules": {
+ "ext.abuseFilter": {
+ "styles": "ext.abuseFilter.css"
+ },
+ "ext.abuseFilter.edit": {
+ "scripts": "ext.abuseFilter.edit.js",
+ "messages": [
+ "abusefilter-edit-syntaxok",
+ "abusefilter-edit-syntaxerr",
+ "abusefilter-http-error",
+ "unknown-error"
+ ],
+ "dependencies": [
+ "mediawiki.util",
+ "mediawiki.api",
+ "mediawiki.api.parse",
+ "jquery.textSelection",
+ "jquery.spinner"
+ ]
+ },
+ "ext.abuseFilter.tools": {
+ "scripts": "ext.abuseFilter.tools.js",
+ "messages": [
+ "abusefilter-reautoconfirm-notallowed",
+ "abusefilter-reautoconfirm-none",
+ "abusefilter-reautoconfirm-done",
+ "abusefilter-http-error",
+ "unknown-error"
+ ],
+ "dependencies": [
+ "mediawiki.api",
+ "mediawiki.notify",
+ "user.tokens",
+ "jquery.spinner"
+ ]
+ },
+ "ext.abuseFilter.examine": {
+ "scripts": "ext.abuseFilter.examine.js",
+ "messages": [
+ "abusefilter-examine-match",
+ "abusefilter-examine-nomatch",
+ "abusefilter-examine-syntaxerror",
+ "abusefilter-examine-notfound",
+ "abusefilter-mustbeeditor",
+ "abusefilter-http-error",
+ "unknown-error"
+ ],
+ "dependencies": [
+ "jquery.spinner",
+ "mediawiki.api"
+ ]
+ },
+ "ext.abuseFilter.ace": {
+ "scripts": "mode-abusefilter.js",
+ "dependencies": "ext.codeEditor.ace"
+ }
+ },
+ "ResourceFileModulePaths": {
+ "localBasePath": "modules",
+ "remoteExtPath": "AbuseFilter/modules"
+ },
+ "callback": "AbuseFilterHooks::onRegistration",
+ "Hooks": {
+ "EditFilterMergedContent": "AbuseFilterHooks::onEditFilterMergedContent",
+ "GetAutoPromoteGroups": "AbuseFilterHooks::onGetAutoPromoteGroups",
+ "MovePageCheckPermissions": "AbuseFilterHooks::onMovePageCheckPermissions",
+ "ArticleDelete": "AbuseFilterHooks::onArticleDelete",
+ "RecentChange_save": "AbuseFilterHooks::onRecentChangeSave",
+ "ListDefinedTags": "AbuseFilterHooks::onListDefinedTags",
+ "ChangeTagsListActive": "AbuseFilterHooks::onChangeTagsListActive",
+ "LoadExtensionSchemaUpdates": "AbuseFilterHooks::onLoadExtensionSchemaUpdates",
+ "ContributionsToolLinks": "AbuseFilterHooks::onContributionsToolLinks",
+ "UploadVerifyUpload": "AbuseFilterHooks::onUploadVerifyUpload",
+ "UploadStashFile": "AbuseFilterHooks::onUploadStashFile",
+ "MakeGlobalVariablesScript": "AbuseFilterHooks::onMakeGlobalVariablesScript",
+ "PageContentSaveComplete": "AbuseFilterHooks::onPageContentSaveComplete",
+ "UserMergeAccountFields": "AbuseFilterHooks::onUserMergeAccountFields",
+ "ParserOutputStashForEdit": "AbuseFilterHooks::onParserOutputStashForEdit"
+ },
+ "config": {
+ "AbuseFilterActions": {
+ "value": {
+ "throttle": true,
+ "warn": true,
+ "disallow": true,
+ "blockautopromote": true,
+ "block": true,
+ "rangeblock": false,
+ "degroup": true,
+ "tag": true
+ },
+ "_merge_strategy": "array_plus",
+ "description": "Array of enabled actions in the form [action name => is enabled?]. At the end of setup, false values will be filtered out"
+ },
+ "AbuseFilterConditionLimit": {
+ "value": 1000,
+ "description": "The maximum number of 'conditions' that can be used each time the filters are run against a change. (More complex filters require more 'conditions')."
+ },
+ "AbuseFilterParserClass": {
+ "value": "AbuseFilterParser",
+ "description": "Class of the parser to use"
+ },
+ "AbuseFilterEmergencyDisableThreshold": {
+ "value": {
+ "default": 0.05
+ },
+ "_merge_strategy": "array_plus",
+ "description": "Disable filters if they match more than X edits, constituting more than Y% of the last Z edits, if they have been changed in the last S seconds."
+ },
+ "AbuseFilterEmergencyDisableCount": {
+ "value": {
+ "default": 2
+ },
+ "_merge_strategy": "array_plus",
+ "description": "See description for AbuseFilterEmergencyDisableThreshold"
+ },
+ "AbuseFilterEmergencyDisableAge": {
+ "value": {
+ "default": 86400
+ },
+ "_merge_strategy": "array_plus",
+ "description": "See description for AbuseFilterEmergencyDisableThreshold"
+ },
+ "AbuseFilterRestrictions": {
+ "value": {
+ "flag": false,
+ "throttle": false,
+ "warn": false,
+ "disallow": false,
+ "blockautopromote": true,
+ "block": true,
+ "rangeblock": true,
+ "degroup": true,
+ "tag": false
+ },
+ "_merge_strategy": "array_plus",
+ "description": "Do users need 'abusefilter-modify-restricted' user right as well as 'abusefilter-modify' in order to create or modify filters which carry out this action? Array like [action name => is restricted?]"
+ },
+ "AbuseFilterNotifications": {
+ "value": false,
+ "description": "Allows to configure the extension to send hit notifications to Special:RecentChanges or UDP. Available options: rc, udp, rcandudp"
+ },
+ "AbuseFilterNotificationsPrivate": {
+ "value": false,
+ "description": "Enable notifications for private filters"
+ },
+ "AbuseFilterCentralDB": {
+ "value": null,
+ "description": "Name of a database where global abuse filters will be stored in"
+ },
+ "AbuseFilterIsCentral": {
+ "value": false,
+ "description": "Set this variable to true for the wiki where global AbuseFilters are stored in"
+ },
+ "AbuseFilterDisallowGlobalLocalBlocks": {
+ "value": false,
+ "description": "Disallow centralised filters from taking actions that locally block, remove from groups, or revoke permissions"
+ },
+ "AbuseFilterBlockDuration": {
+ "value": "indefinite",
+ "description": "Old standard block duration for logged in users. Kept for backward compatibility after T32024."
+ },
+ "AbuseFilterAnonBlockDuration": {
+ "value": null,
+ "description": "Old standard block duration for anonymous users, $wgAbuseFilterBlockDuration will be used if null. Kept for backward compatibility after T32024."
+ },
+ "AbuseFilterCustomActionsHandlers": {
+ "value": [],
+ "description": "Callback functions for custom actions"
+ },
+ "AbuseFilterValidGroups": {
+ "value": [ "default" ],
+ "description": "The list of 'groups' filters can be divided into – used for applying edit filters to certain types of actions. By default there is only one group."
+ },
+ "AbuseFilterDefaultWarningMessage": {
+ "value": {
+ "default": "abusefilter-warning"
+ },
+ "_merge_strategy": "array_plus",
+ "description": "Default warning messages, per filter group"
+ },
+ "AbuseFilterLogIPMaxAge": {
+ "value": 7776000,
+ "description": "Age used as cutoff when purging old IP log data, defaults to 3 months. Used by maintenance script purgeOldLogIPData.php"
+ },
+ "AbuseFilterProfile": {
+ "value": false,
+ "description": "Whether to record the average time taken and average number of conditions used by each filter."
+ },
+ "AbuseFilterRuntimeProfile": {
+ "value": false,
+ "description": "Whether to record runtime metrics for all filters combined."
+ },
+ "AbuseFilterSlowFilterRuntimeLimit": {
+ "value": 500,
+ "description": "Runtime in milliseconds before a filter is considered slow."
+ },
+ "AbuseFilterProfileActionsCap": {
+ "value": 10000,
+ "description": "Number of action that determines when to reset profiling stats."
+ },
+ "AbuseFilterRangeBlockSize" : {
+ "value": {
+ "IPv4": 16,
+ "IPv6": 19
+ },
+ "description": "Size of the range blocked by 'rangeblock' action."
+ },
+ "AbuseFilterPrivateLog": {
+ "value": false,
+ "description": "Whether users are allowed to access private information from a filter log entry."
+ },
+ "AbuseFilterForceSummary": {
+ "value": false,
+ "description": "Whether users are forced to provide a reason for accessing private information from a filter log entry."
+ },
+ "AbuseFilterLogIP": {
+ "value": true,
+ "description": "Whether to include IP in the abuse_filter_log"
+ }
+ },
+ "load_composer_autoloader": true,
+ "manifest_version": 2
+}
diff --git a/www/wiki/extensions/AbuseFilter/gitinfo.json b/www/wiki/extensions/AbuseFilter/gitinfo.json
new file mode 100644
index 00000000..3cd629bd
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/gitinfo.json
@@ -0,0 +1 @@
+{"branch": "adc078946322291d65d1bab2850b93c5dee5548a\n", "headCommitDate": "1551033298", "remoteURL": "https://gerrit.wikimedia.org/r/mediawiki/extensions/AbuseFilter", "head": "adc078946322291d65d1bab2850b93c5dee5548a\n", "headSHA1": "adc078946322291d65d1bab2850b93c5dee5548a\n"} \ No newline at end of file
diff --git a/www/wiki/extensions/AbuseFilter/hooks.txt b/www/wiki/extensions/AbuseFilter/hooks.txt
new file mode 100644
index 00000000..e3cd9c95
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/hooks.txt
@@ -0,0 +1,45 @@
+This document describes how event hooks work in the AbuseFilter extension.
+
+For a more comprehensive guide to hooks, navigate to your root MediaWiki
+directory and read docs/hooks.txt.
+
+== Events and parameters ==
+This is a list of known events and parameters; please add to it if you're going
+to add events to the AbuseFilter extension.
+
+'AbuseFilter-builder': Allows overwriting of the builder values returned by AbuseFilter::getBuilderValues
+&$realValues: Builder values
+
+'AbuseFilter-computeVariable': Like AbuseFilter-interceptVariable but called if the requested method wasn't found.
+Return true to indicate that the method is known to the hook and was computed successful.
+$method: Method to generate the variable
+$vars: AbuseFilterVariableHolder
+$parameters: Parameters with data to compute the value
+&$result: Result of the computation
+
+'AbuseFilter-contentToString': Called when converting a Content object to a string to which
+filters can be applied. If the hook function returns true, Content::getTextForSearchIndex()
+will be used for non-text content.
+$content: The Content object
+&$text: Set this to the desired text.
+
+'AbuseFilter-filterAction': Allows overwriting of abusefilter variables in AbuseFilter::filterAction just
+before they're checked against filters.
+$vars: AbuseFilterVariableHolder with variables
+$title: Title object
+
+'AbuseFilter-generateTitleVars': Allows altering the variables generated for a title
+$vars: AbuseFilterVariableHolder
+$title: Title object
+$prefix: Variable name prefix
+
+'AbuseFilter-generateUserVars': Allows altering the variables generated for a specific user
+$vars: AbuseFilterVariableHolder
+$user: User object
+
+'AbuseFilter-interceptVariable': Called before a variable is set in AFComputedVariable::compute to be able to set
+it before the core code runs. Return false to make the function return right after.
+$method: Method to generate the variable
+$vars: AbuseFilterVariableHolder
+$parameters: Parameters with data to compute the value
+&$result: Result of the computation
diff --git a/www/wiki/extensions/AbuseFilter/i18n/ab.json b/www/wiki/extensions/AbuseFilter/i18n/ab.json
new file mode 100644
index 00000000..e67b75d4
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/ab.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "Irus"
+ ]
+ },
+ "abusefilter": "Фиҟьльҭә азлоупоҭреблении",
+ "abusefilter-list-edit": "Ариашамҭа"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/ace.json b/www/wiki/extensions/AbuseFilter/i18n/ace.json
new file mode 100644
index 00000000..2ff58e0d
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/ace.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Si Gam Acèh"
+ ]
+ },
+ "abusefilter-log-search-submit": "Mita"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/aeb-arab.json b/www/wiki/extensions/AbuseFilter/i18n/aeb-arab.json
new file mode 100644
index 00000000..cd3aeece
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/aeb-arab.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Csisc"
+ ]
+ },
+ "abusefilter-list-edit": "بدّل"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/af.json b/www/wiki/extensions/AbuseFilter/i18n/af.json
new file mode 100644
index 00000000..7d1af8d5
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/af.json
@@ -0,0 +1,295 @@
+{
+ "@metadata": {
+ "authors": [
+ "Naudefj",
+ "පසිඳු කාවින්ද",
+ "Fwolff"
+ ]
+ },
+ "abusefilter-desc": "Pas outomatiese heuristiek te wysigings",
+ "abusefilter": "Opstelling van misbruikfilter",
+ "abuselog": "Misbruiklogboek",
+ "abusefilter-intro": "Welkom by die misbruik Filter beheer jou.\nDie misbruik Filter is 'n outomatiese sagteware meganisme van die toepassing van outomatiese heuristiek aan alle aksies.\nHierdie koppelvlak toon 'n lys van gedefinieer filters, en kan hulle verander word.",
+ "abusefilter-mustbeeditor": "Vir sekuriteit kan slegs gebruikers met die reg om misbruik filters te verander gebruik van hierdie koppelvlak.",
+ "abusefilter-blocker": "Misbruikfilter",
+ "abusefilter-accountreserved": "Hierdie rekeningnaam is gereserveer vir gebruik deur die misbruikfilter.",
+ "right-abusefilter-modify": "Wysig misbruikfilters",
+ "right-abusefilter-view": "Wys misbruikfilters",
+ "right-abusefilter-log": "Die misbruiklogboek bekyk",
+ "right-abusefilter-private": "Private data in die misbruik log",
+ "right-abusefilter-modify-restricted": "Verander misbruik filters met 'n beperkte aksies",
+ "right-abusefilter-hidden-log": "View verborge misbruik log inskrywings",
+ "action-abusefilter-modify": "misbruik filters verander",
+ "action-abusefilter-view": "sien misbruik filters",
+ "action-abusefilter-log": "sien die misbruik Wikiquote",
+ "action-abusefilter-log-detail": "gedetailleerde misbruik log inskrywings",
+ "action-abusefilter-private": "private data in die misbruik log",
+ "action-abusefilter-modify-restricted": "verander misbruik filters met 'n beperkte aksies",
+ "action-abusefilter-revert": "terugkeer om al die veranderinge deur 'n gegewe misbruik filter",
+ "action-abusefilter-view-private": "View misbruik filters gemerk as privaat",
+ "abusefilter-log": "Misbruiklogboek",
+ "abusefilter-log-summary": "Hierdie log toon 'n lys van al die aksies wat deur die filters gevang.",
+ "abusefilter-log-search": "Die misbruiklogboek deursoek",
+ "abusefilter-log-search-user": "Gebruiker:",
+ "abusefilter-log-search-filter": "Filternommer:",
+ "abusefilter-log-search-title": "Titel:",
+ "abusefilter-log-search-wiki": "Wiki:",
+ "abusefilter-log-search-submit": "Soek",
+ "abusefilter-log-detailedentry-global": "globale filter $1",
+ "abusefilter-log-detailedentry-local": "filter $1",
+ "abusefilter-log-detailslink": "details",
+ "abusefilter-log-hidelink": "pas sigbaarheid aan",
+ "abusefilter-log-details-legend": "Details vir logboekinskrywing $1",
+ "abusefilter-log-details-var": "Veranderlike",
+ "abusefilter-log-details-val": "Waarde",
+ "abusefilter-log-details-vars": "Aksie parameters",
+ "abusefilter-log-details-private": "Private data",
+ "abusefilter-log-details-ip": "IP-adres",
+ "abusefilter-log-noactions": "geen",
+ "abusefilter-log-details-diff": "Wysigings gemaak in wysig",
+ "abusefilter-log-linkoncontribs": "misbruiklogboek",
+ "abusefilter-log-linkoncontribs-text": "Misbruik log vir hierdie gebruiker",
+ "abusefilter-log-hidden": "(inskrywing versteek)",
+ "abusefilter-log-cannot-see-details": "Jy hoef nie toestemming om die besonderhede van enige inskrywings te sien.",
+ "abusefilter-log-details-hidden": "Jy kan nie die besonderhede vir hierdie inskrywing, want dit is weggesteek uit die openbare oog.",
+ "abusefilter-log-hide-legend": "Versteek logboekinskrywing",
+ "abusefilter-log-hide-id": "Logboek inskrywing-ID:",
+ "abusefilter-log-hide-hidden": "Adres hierdie item uit die publieke oog",
+ "abusefilter-log-hide-reason": "Rede:",
+ "abusefilter-log-hide-forbidden": "Jy hoef nie toestemming om misbruik logitems te verberg.",
+ "abusefilter-logentry-suppress": "het [[$1]] versteek",
+ "abusefilter-logentry-unsuppress": "het [[$1]] sigbaar gemaak",
+ "abusefilter-management": "Misbruik filter bestuur",
+ "abusefilter-list": "Alle filters",
+ "abusefilter-list-id": "Filternommer",
+ "abusefilter-list-status": "Status",
+ "abusefilter-list-public": "Publieke beskrywing",
+ "abusefilter-list-consequences": "Gevolge",
+ "abusefilter-list-visibility": "Sigbaarheid",
+ "abusefilter-list-hitcount": "hit tel",
+ "abusefilter-list-edit": "Wysig",
+ "abusefilter-list-details": "Details",
+ "abusefilter-list-limit": "Aantal per bladsy:",
+ "abusefilter-list-lastmodified": "Laaste wysiging",
+ "abusefilter-list-group": "Filtergroep",
+ "abusefilter-hidden": "Privaat",
+ "abusefilter-unhidden": "Publiek",
+ "abusefilter-enabled": "Geaktiveer",
+ "abusefilter-deleted": "Geskrap",
+ "abusefilter-disabled": "Afgeskakel",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|keer|kere}}",
+ "abusefilter-new": "Skep 'n nuwe filter",
+ "abusefilter-return": "Terug na die filterbestuur",
+ "abusefilter-status-global": "Globaal",
+ "abusefilter-list-options": "Opsies",
+ "abusefilter-list-options-deleted": "Geskrapte filters:",
+ "abusefilter-list-options-deleted-only": "Wys slegs verwyderde filters",
+ "abusefilter-list-options-deleted-hide": "Versteek verwyderde filters",
+ "abusefilter-list-options-deleted-show": "Sluit verwyderde filters in",
+ "abusefilter-list-options-disabled": "Gedeaktiveerde filters:",
+ "abusefilter-list-options-hidedisabled": "Versteek gedeaktiveerde filters",
+ "abusefilter-list-options-submit": "Opdateer",
+ "abusefilter-tools-text": "Hier is 'n paar instrumente wat nuttig kan wees in die formulering en ontfouting misbruik filters.",
+ "abusefilter-tools-expr": "Expression tester",
+ "abusefilter-tools-submitexpr": "Evalueer",
+ "abusefilter-tools-reautoconfirm": "Herstel motor confirmed status",
+ "abusefilter-tools-reautoconfirm-user": "Gebruiker:",
+ "abusefilter-reautoconfirm-notallowed": "U word nie toegelaat om motor confirmed status te herstel.",
+ "abusefilter-reautoconfirm-done": "Die rekening se motor confirmed status is herstel",
+ "abusefilter-edit-subtitle": "Besig met wysiging van filter $1",
+ "abusefilter-edit-status-label": "Statistieke:",
+ "abusefilter-edit-new": "Nuwe filter",
+ "abusefilter-edit-save": "Stoor filter",
+ "abusefilter-edit-id": "Filternommer:",
+ "abusefilter-edit-description": "Beskrywing:\n:''(publiek sigbaar)''",
+ "abusefilter-edit-flags": "Vlae:",
+ "abusefilter-edit-enabled": "Skakel die filter aan",
+ "abusefilter-edit-deleted": "Merk as geskrap",
+ "abusefilter-edit-hidden": "Versteek details van die filter vir die publiek",
+ "abusefilter-edit-global": "Pas die filter globaal toe",
+ "abusefilter-edit-rules": "Voorwaardes:",
+ "abusefilter-edit-notes": "Notas:\n:''(privaat)''",
+ "abusefilter-edit-lastmod": "Filter laas gewysig:",
+ "abusefilter-edit-lastmod-text": "$1 deur $2",
+ "abusefilter-edit-consequences": "Aksies wat geneem is toe ooreenstem",
+ "abusefilter-edit-action-warn": "Trigger hierdie aksies nadat die gebruiker 'n waarskuwing",
+ "abusefilter-edit-action-disallow": "Verhoed dat die gebruiker van die uitvoering van die aksie in die vraag",
+ "abusefilter-edit-action-blockautopromote": "Die gebruiker se intrek motor confirmed status",
+ "abusefilter-edit-action-degroup": "Verwyder die gebruiker van alle bevoorregte groepe",
+ "abusefilter-edit-action-throttle": "Trigger aksies slegs indien die gebruiker 'n koers limiet reise",
+ "abusefilter-edit-action-tag": "Tag die wysig vir verdere hersiening",
+ "abusefilter-edit-throttle-count": "Aantal aksies om toe te laat:",
+ "abusefilter-edit-throttle-period": "Tydperk:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|sekonde|sekondes}}",
+ "abusefilter-edit-warn-message": "Stelsel boodskap te gebruik vir die waarskuwing:",
+ "abusefilter-edit-warn-other": "Ander boodskap",
+ "abusefilter-edit-warn-actions": "Handelinge:",
+ "abusefilter-edit-warn-preview": "Voorskou gekose boodskap",
+ "abusefilter-edit-warn-edit": "Skep/wysig gekose boodskap",
+ "abusefilter-edit-tag-tag": "Tags om aansoek te doen (een per lyn):",
+ "abusefilter-edit-denied": "Jy kan nie view details van hierdie filter nie, want dit is weggesteek uit die openbare oog.",
+ "abusefilter-edit-main": "Filter-parameters",
+ "abusefilter-edit-done-subtitle": "Filter gewysig",
+ "abusefilter-edit-restricted": "Jy kan dit nie wysig hierdie filter, want dit bevat een of meer beperkte aksies.\nVra asseblief 'n gebruiker met die toestemming van beperkte aksies by te voeg om die verandering te maak vir jou.",
+ "abusefilter-edit-viewhistory": "Wys die filter se geskiedenis",
+ "abusefilter-edit-history": "Geskiedenis:",
+ "abusefilter-edit-check": "Kontroleer sintaks",
+ "abusefilter-edit-badfilter": "Die aangegewe filter bestaan nie",
+ "abusefilter-edit-revert": "Aksies wat geneem is deur die filter terugzetten",
+ "abusefilter-edit-tools": "Gereedskap:",
+ "abusefilter-edit-test-link": "Toets dit filter teen onlangse wysigings",
+ "abusefilter-edit-export": "Die uitvoer van hierdie filter na 'n ander wiki",
+ "abusefilter-edit-syntaxok": "Geen sintaksfoute is opgespoor nie.",
+ "abusefilter-edit-syntaxerr": "Sintaksfout opgespoor: $1",
+ "abusefilter-edit-bad-tags": "Een of meer van die etikette wat deur u verskaf is nie geldig nie.\nTags moet kort wees, en hulle moet geen spesiale karakters bevat.",
+ "abusefilter-edit-builder-select": "Kies 'n opsie om dit toe te voeg op die wyser",
+ "abusefilter-edit-builder-group-op-arithmetic": "Wiskundige operatore",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Optelling (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Aftrekking (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Vermenigvuldiging (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Deel (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Modulus (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Magsverheffing (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Operateurs vir vergelyking",
+ "abusefilter-edit-builder-op-comparison-equal": "Gelyk aan (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Nie gelyk aan (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "Kleiner as (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Groter as (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Kleiner as of gelyk aan (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Groter as of gelyk aan (>=)",
+ "abusefilter-edit-builder-group-op-bool": "Booleaanse operatore",
+ "abusefilter-edit-builder-op-bool-not": "Nie (!)",
+ "abusefilter-edit-builder-op-bool-and": "En (&)",
+ "abusefilter-edit-builder-op-bool-or": "Of (|)",
+ "abusefilter-edit-builder-group-misc": "Ander",
+ "abusefilter-edit-builder-misc-in": "vervat in string (in)",
+ "abusefilter-edit-builder-misc-like": "Voldoen aan patroon (like)",
+ "abusefilter-edit-builder-misc-rlike": "Voldoen aan regulêre uitdrukking (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "Voldoen aan regulêre uitdrukking, nie gevoelig vir hoofletters nie (irlike)",
+ "abusefilter-edit-builder-misc-contains": "Die linker string bevat die regter string (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "Letterlike teks (\"\")",
+ "abusefilter-edit-builder-misc-tern": "Drieledige operator (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "Kondisie (as X dan Y anders Z)",
+ "abusefilter-edit-builder-group-funcs": "Funksies",
+ "abusefilter-edit-builder-funcs-length": "Tekslengte (length)",
+ "abusefilter-edit-builder-funcs-lcase": "Na kleinletters (lcase)",
+ "abusefilter-edit-builder-funcs-specialratio": "Spesiale karakters / totaal aantal karakters (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "Normaliseer (norm)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "Verwyder witspasie (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "Verwyder spesiale karakters (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "Is IP in die reeks? (Ip_in_range)",
+ "abusefilter-edit-builder-funcs-substr": "Substring (substr)",
+ "abusefilter-edit-builder-funcs-set_var": "Stel veranderlike (set_var)",
+ "abusefilter-edit-builder-group-vars": "Veranderlikes",
+ "abusefilter-edit-builder-vars-accountname": "Gebruikersnaam (on account creation)",
+ "abusefilter-edit-builder-vars-timestamp": "Unix die datum en tyd van verandering",
+ "abusefilter-edit-builder-vars-action": "Handeling",
+ "abusefilter-edit-builder-vars-addedlines": "Lyne bygevoeg in wysiging",
+ "abusefilter-edit-builder-vars-delta": "Verandering van grootte in wysig",
+ "abusefilter-edit-builder-vars-diff": "Unified verskil van die veranderinge wat gemaak is deur wysig",
+ "abusefilter-edit-builder-vars-newsize": "Nuwe bladsy grootte",
+ "abusefilter-edit-builder-vars-oldsize": "Ou bladsy grootte",
+ "abusefilter-edit-builder-vars-removedlines": "Lines verwyder in wysig",
+ "abusefilter-edit-builder-vars-summary": "Wysig opsomming/rede",
+ "abusefilter-edit-builder-vars-article-id": "Bladsy-ID",
+ "abusefilter-edit-builder-vars-article-ns": "Bladsy se naamruimte",
+ "abusefilter-edit-builder-vars-article-text": "Blaadsynaam (sonder naamruimte)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Volledige bladsynaam",
+ "abusefilter-edit-builder-vars-movedfrom-id": "Page ID beweging bron bladsy",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "Naamruimte van die skuif bron bladsy",
+ "abusefilter-edit-builder-vars-movedfrom-text": "Titel beweging bron bladsy",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "Volle naam van die beweging bron bladsy",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "Volle naam van die beweging bestemming bladsy",
+ "abusefilter-edit-builder-vars-user-editcount": "Gebruiker se aantal wysigings",
+ "abusefilter-edit-builder-vars-user-age": "Ouderdom van gebruiker se rekening",
+ "abusefilter-edit-builder-vars-user-name": "Gebruikersnaam",
+ "abusefilter-edit-builder-vars-user-groups": "Groepe (waaronder implisiete) waarvan gebruiker 'n lid is",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "Tyd e-posadres is bevestig",
+ "abusefilter-edit-builder-vars-recent-contributors": "Afgelope tien gebruikers by te dra tot die bladsy",
+ "abusefilter-edit-builder-vars-all-links": "Alle eksterne skakels in die nuwe teks",
+ "abusefilter-edit-builder-vars-added-links": "Alle eksterne skakels bygevoeg in die bewerking",
+ "abusefilter-edit-builder-vars-removed-links": "Alle eksterne skakels verwyder in die bewerking",
+ "abusefilter-edit-builder-vars-old-text": "Ou bladsy Text, voor die aangesig van die wysig",
+ "abusefilter-edit-builder-vars-new-text": "Nuwe blad Text, na die wysig",
+ "abusefilter-edit-builder-vars-minor-edit": "Of die wysig is gemerk as 'n kleinigheid",
+ "abusefilter-edit-builder-vars-file-sha1": "SHA1-hashkode van die lêerinhoud",
+ "abusefilter-filter-log": "Onlangse filterveranderinge",
+ "abusefilter-history-foruser": "Wysigings deur $1",
+ "abusefilter-history-hidden": "Verborge",
+ "abusefilter-history-enabled": "Geaktiveer",
+ "abusefilter-history-global": "Globaal",
+ "abusefilter-history-timestamp": "Tyd",
+ "abusefilter-history-user": "Gebruiker",
+ "abusefilter-history-public": "Openbare filterbeskrywing",
+ "abusefilter-history-flags": "Vlae",
+ "abusefilter-history-filter": "filter reël",
+ "abusefilter-history-comments": "Opmerkings",
+ "abusefilter-history-actions": "Maatreëls",
+ "abusefilter-history-backedit": "Terug na filters wysig",
+ "abusefilter-history-deleted": "Geskrap",
+ "abusefilter-history-filterid": "Filter",
+ "abusefilter-history-select-legend": "Verfyn soektog",
+ "abusefilter-history-select-user": "Gebruiker:",
+ "abusefilter-history-select-submit": "Verfyn",
+ "abusefilter-history-diff": "Wysigings",
+ "abusefilter-history-error-hidden": "Die filter wat jy aangevra het weggesteek is, en jy kan nie sien sy geskiedenis.",
+ "abusefilter-action-tag": "Etiket",
+ "abusefilter-action-throttle": "Throttle",
+ "abusefilter-action-warn": "Waarsku",
+ "abusefilter-action-blockautopromote": "Blok autopromote",
+ "abusefilter-action-block": "Blokkeer",
+ "abusefilter-action-degroup": "Verwyder uit groepe",
+ "abusefilter-action-rangeblock": "IP-reeks blokkeer",
+ "abusefilter-action-disallow": "Nie toegestaan",
+ "abusefilter-revert-preview-item": "$1: $2 het 'n $3 gemaak op $4.\nAksies wat teruggerol moet word: $5 ($6)",
+ "abusefilter-revert-search-legend": "Kies misbruikfilteraksies om ongedaan te maak",
+ "abusefilter-revert-periodstart": "Periode begin:",
+ "abusefilter-revert-periodend": "Periode eindig:",
+ "abusefilter-revert-search": "Kies aksies",
+ "abusefilter-revert-filter": "Filter:",
+ "abusefilter-revert-confirm": "Bevestig",
+ "abusefilter-revert-reasonfield": "Rede vir terugrol:",
+ "abusefilter-test": "Toets 'n filter teen die vorige wysiging",
+ "abusefilter-test-legend": "Filter toetsing",
+ "abusefilter-test-load-filter": "Laai filter-ID:",
+ "abusefilter-test-submit": "Toets",
+ "abusefilter-test-load": "Laai",
+ "abusefilter-test-user": "Wysigings deur gebruiker:",
+ "abusefilter-test-period-start": "Veranderinge gemaak na:",
+ "abusefilter-test-period-end": "Veranderinge gemaak nir:",
+ "abusefilter-test-page": "Wysigings aan bladsy:",
+ "abusefilter-test-shownegative": "Wys veranderinge wat nie aan die filter voldoen nie",
+ "abusefilter-changeslist-examine": "ondersoek",
+ "abusefilter-examine": "Ondersoek individuele veranderinge",
+ "abusefilter-examine-intro": "Hierdie bladsy laat jou toe om die veranderlikes wat gegenereer word deur die misbruik filter om 'n individuele verandering te ondersoek, en dit toets teen filters.",
+ "abusefilter-examine-legend": "Kies wysigings",
+ "abusefilter-examine-diff": "URL vir wysigings:",
+ "abusefilter-examine-user": "Gebruiker:",
+ "abusefilter-examine-title": "Bladsynaam:",
+ "abusefilter-examine-submit": "Soek",
+ "abusefilter-examine-vars": "Veranderlikes wat gegenereer is vir hierdie verandering",
+ "abusefilter-examine-test": "Toets hierdie verandering teen 'n filter",
+ "abusefilter-examine-test-button": "Toets filter",
+ "abusefilter-examine-match": "Die verandering voldoen aan die filter.",
+ "abusefilter-examine-nomatch": "Die filter voldoen nie aan die verandering nie.",
+ "abusefilter-examine-syntaxerror": "Die filter het ongeldige sintaks",
+ "abusefilter-examine-notfound": "Die verandering wat jy aangevra het kon nie gevind word nie.",
+ "abusefilter-examine-incompatible": "Die verandering wat jy versoek word nie ondersteun nie deur die Misbruik Filter",
+ "abusefilter-examine-noresults": "Geen resultate gevind vir die soektog parameters wat u verskaf het.",
+ "abusefilter-topnav-home": "Tuisblad",
+ "abusefilter-topnav-test": "Batch toets",
+ "abusefilter-topnav-examine": "Ondersoek vorige wysigings",
+ "abusefilter-topnav-log": "Filterlogboek",
+ "abusefilter-topnav-tools": "ontfouting gereedskap",
+ "abusefilter-topnav-import": "import filter",
+ "abusefilter-log-name": "Misbruikfilter se logboek",
+ "abusefilter-log-noresults": "Geen resultate nie",
+ "abusefilter-diff-title": "Verskille tussen weergawes",
+ "abusefilter-diff-item": "Item",
+ "abusefilter-diff-version": "Weergawe van $1 deur $2",
+ "abusefilter-diff-info": "Basiese inligting",
+ "abusefilter-diff-pattern": "Filter voorwaardes",
+ "abusefilter-diff-invalid": "Kan nie die versoek weergawes te gaan haal",
+ "abusefilter-diff-backhistory": "Terug na die filtergeskiedenis",
+ "abusefilter-import-submit": "Importeer data"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/ais.json b/www/wiki/extensions/AbuseFilter/i18n/ais.json
new file mode 100644
index 00000000..37cc4af3
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/ais.json
@@ -0,0 +1,17 @@
+{
+ "@metadata": {
+ "authors": [
+ "Bunukwiki",
+ "Benel",
+ "Tokoabibi"
+ ]
+ },
+ "abusefilter-log-search-title": "satangahan:",
+ "abusefilter-log-search-wiki": "Wiki:",
+ "abusefilter-log-search-submit": "kilim",
+ "abusefilter-log-noactions": "nayi’",
+ "abusefilter-edit-tools": "sakaluk:",
+ "abusefilter-edit-builder-group-vars": "masumaday-sausi",
+ "abusefilter-test-load": "miasip",
+ "abusefilter-topnav-home": "saayaway a belih"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/aln.json b/www/wiki/extensions/AbuseFilter/i18n/aln.json
new file mode 100644
index 00000000..5e4b136d
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/aln.json
@@ -0,0 +1,79 @@
+{
+ "@metadata": {
+ "authors": [
+ "Mdupont"
+ ]
+ },
+ "abusefilter-edit-global": "Apliko këtë filtër globalisht",
+ "abusefilter-edit-throttle-count": "Numri i veprimeve të lejojë:",
+ "abusefilter-edit-throttle-period": "Periudha kohore:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|sekonda|dytë}}",
+ "abusefilter-edit-throttle-groups": "Grupi mbyt nga::''(një për çdo rresht, të kombinuar me presje)''",
+ "abusefilter-edit-warn-message": "mesazh Sistemit për t'u përdorur për paralajmërim:",
+ "abusefilter-edit-warn-other": "mesazh të tjera",
+ "abusefilter-edit-warn-other-label": "Faqe Emri i mesazhit të tjera::''(pa prefiksin MediaWiki)''",
+ "abusefilter-edit-warn-actions": "Veprimet:",
+ "abusefilter-edit-warn-preview": "Preview zgjedhur mesazh",
+ "abusefilter-edit-warn-edit": "Krijo / Edito mesazhin e zgjedhur",
+ "abusefilter-edit-tag-tag": "Tags për të aplikuar (një për çdo rresht):",
+ "abusefilter-edit-denied": "Ju nuk mund të shihni detajet e këtij filtri, sepse ajo është e fshehur prej pamjes publike.",
+ "abusefilter-edit-main": "parametrave Filter",
+ "abusefilter-edit-done-subtitle": "Filter redaktuar",
+ "abusefilter-edit-done": "Ju keni ruajtur me sukses ndryshimet tuaja për të filtruar $1.",
+ "abusefilter-edit-badsyntax": "Nuk është një gabim i sintaksës në filtër të caktuar. Prodhimit nga parser ishte: <pre>$1</pre>",
+ "abusefilter-edit-restricted": "Ju nuk mund të modifikoni këtë filtër, sepse përmban një ose më shumë veprime të kufizuara. Ju lutem, kërkoni një përdorues me leje për të shtuar veprime të kufizuara për të bërë ndryshimin për ju.",
+ "abusefilter-edit-viewhistory": "Shiko historinë e këtij filtri i",
+ "abusefilter-edit-history": "Historia:",
+ "abusefilter-edit-check": "Kontrollo sintaksë",
+ "abusefilter-edit-badfilter": "Filtri ju i specifikuar nuk ekziston",
+ "abusefilter-edit-revert": "veprimet e ndërmarra nga rikthej këtë filtër",
+ "abusefilter-edit-tools": "Tools:",
+ "abusefilter-edit-test-link": "Test këtë filtër kundër së fundmi",
+ "abusefilter-edit-export": "Eksporti këtë filtër në një tjetër wiki",
+ "abusefilter-edit-syntaxok": "Nuk ka gabime sintaksore zbuluar.",
+ "abusefilter-edit-syntaxerr": "Gabim sintaksor zbuluar: $1",
+ "abusefilter-edit-bad-tags": "Një ose më shumë nga ju tags specifikuar nuk është i vlefshëm. Tags duhet të jetë i shkurtër, dhe ata nuk duhet të përmbajë karaktere speciale.",
+ "abusefilter-edit-notallowed": "Ju nuk jeni i lejuar për të krijuar ose për të redaktuar filtrat e abuzim",
+ "abusefilter-edit-builder-select": "Zgjidh një opsion për të shtuar se në kursorin",
+ "abusefilter-edit-builder-group-op-arithmetic": "operatorët aritmetike",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Shtim (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Zbritja (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Shumëzimit (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Divizioni (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Modulo (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Power (**)",
+ "abusefilter-edit-builder-group-op-comparison": "operatorët Krahasimi",
+ "abusefilter-edit-builder-op-comparison-equal": "Barabartë me (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Nuk është e barabartë me (! =)",
+ "abusefilter-edit-builder-op-comparison-lt": "Më pak se (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Më e madhe se (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Më pak ose e barabartë me (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Më e madhe se, ose e barabartë me (>=)",
+ "abusefilter-edit-builder-group-op-bool": "operatorët Boolean",
+ "abusefilter-edit-builder-op-bool-not": "Jo (!)",
+ "abusefilter-edit-builder-op-bool-and": "E (&)",
+ "abusefilter-edit-builder-op-bool-or": "Ose (|)",
+ "abusefilter-edit-builder-group-misc": "I llojllojshëm",
+ "abusefilter-examine-syntaxerror": "Filtri ka sintaksë të pavlefshme",
+ "abusefilter-examine-notfound": "Ndryshimi ju kërkuar nuk mund të gjendet.",
+ "abusefilter-examine-incompatible": "Ndryshimi ju kërkuar nuk është i mbështetur nga Filter Abuse",
+ "abusefilter-examine-noresults": "Asnjë rezultat nuk u gjet për parametrat e kërkimit keni dhënë.",
+ "abusefilter-topnav": "Abuse navigacion'''Filter'''",
+ "abusefilter-topnav-home": "Shtëpi",
+ "abusefilter-topnav-test": "testimi Batch",
+ "abusefilter-topnav-examine": "Ekzaminimi i redaktimet e kaluara",
+ "abusefilter-topnav-log": "Abuse Hyni",
+ "abusefilter-topnav-tools": "Debugging tools",
+ "abusefilter-topnav-import": "filtër Import",
+ "abusefilter-log-name": "log Abuse Filter",
+ "abusefilter-log-header": "Kjo log tregon një përmbledhje të ndryshimet e bëra në filtra. Për hollësi të plota, shikoni [[Special:AbuseFilter/history|lista]] filtër të ndryshimeve të fundit.",
+ "abusefilter-diff-title": "Dallimet midis versioneve",
+ "abusefilter-diff-item": "Artikull",
+ "abusefilter-diff-version": "Version nga $1 nga $2",
+ "abusefilter-diff-info": "informata themelore",
+ "abusefilter-diff-pattern": "Kushtet Filter",
+ "abusefilter-diff-invalid": "Në pamundësi për të shkoj të marr versionet e kërkuar",
+ "abusefilter-diff-backhistory": "Kthehu në filtër historisë",
+ "abusefilter-import-intro": "Ju mund të përdorni këtë ndërfaqe për të importuar filtra nga wikis tjera. Në burimi wiki, klikoni \"{{int:abusefilter-edit-export}}\" nën \"{{int:abusefilter-edit-tools}}\" në interface redaktimi. Kopje nga textbox që duket, dhe ngjitur në këtë textbox, pastaj kliko \"{{int:abusefilter-import-submit}}\".",
+ "abusefilter-import-submit": "Të dhënat e importit"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/am.json b/www/wiki/extensions/AbuseFilter/i18n/am.json
new file mode 100644
index 00000000..8f5b90fc
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/am.json
@@ -0,0 +1,81 @@
+{
+ "@metadata": {
+ "authors": [
+ "Codex Sinaiticus"
+ ]
+ },
+ "abuselog": "የጥፋቶች መዝገብ",
+ "abusefilter-blocker": "የጥፋቶች ማጣሪያ",
+ "right-abusefilter-modify": "የጥፋት ማጣሪያዎችን ለመቀይር",
+ "right-abusefilter-view": "የጥፋት ማጣሪያዎችን ለማየት",
+ "right-abusefilter-log": "የጥፋትን መዝገብ ለማየት",
+ "action-abusefilter-modify": "የጥፋት ማጣሪያዎችን ለመቀይር",
+ "action-abusefilter-view": "የጥፋት ማጣሪያዎችን ለማየት",
+ "action-abusefilter-log": "የጥፋትን መዝገብ ለማየት",
+ "abusefilter-log": "የጥፋት ማጣሪያዎች መዝገብ",
+ "abusefilter-log-search": "የጥፋቶች መዝገብ መፈልግ",
+ "abusefilter-log-search-user": "ተጠቃሚ:",
+ "abusefilter-log-search-filter": "የማጣሪያ መታወቂያ፦",
+ "abusefilter-log-search-title": "አርዕስት፡",
+ "abusefilter-log-search-wiki": "ዊኪ፦",
+ "abusefilter-log-search-submit": "ፍለጋ",
+ "abusefilter-log-detailedentry-local": "ማጣሪያ $1",
+ "abusefilter-log-detailslink": "ዝርዝር",
+ "abusefilter-log-diff": "ለውጡ",
+ "abusefilter-log-details-var": "ተለዋጭ",
+ "abusefilter-log-noactions": "የለም",
+ "abusefilter-log-linkoncontribs": "የጥፋቶች መዝገብ",
+ "abusefilter-log-hide-reason": "ምክንያቱ፦",
+ "abusefilter-list": "ማጣሪያዎች ሁሉ",
+ "abusefilter-list-status": "ሁኔታ",
+ "abusefilter-list-edit": "አርም",
+ "abusefilter-list-details": "ዝርዝር",
+ "abusefilter-list-limit": "ቁጥር በየገጹ፦",
+ "abusefilter-list-lastmodified": "መጨረሻ የተለወጠ",
+ "abusefilter-hidden": "የግል",
+ "abusefilter-enabled": "የተቻለ",
+ "abusefilter-deleted": "የጠፋ",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|ጊዜ|ጊዜዎች}}",
+ "abusefilter-new": "አዲስ ማጣሪያ ለመፍጠር",
+ "abusefilter-list-options": "ምርጫዎች",
+ "abusefilter-list-options-deleted": "የጠፉት ማጣሪያዎች፦",
+ "abusefilter-list-options-deleted-only": "የጠፉት ማጣሪያዎች ብቻ ይታዩ",
+ "abusefilter-list-options-deleted-hide": "የጠፉት ማጣሪያዎች ይደበቁ",
+ "abusefilter-list-options-deleted-show": "ከነጠፉት ማጣሪያዎች",
+ "abusefilter-list-options-scope": "ማጣሪያዎች ከዚህ ይታዩ፦",
+ "abusefilter-list-options-submit": "ለማሳደስ",
+ "abusefilter-tools-reautoconfirm-user": "ተጠቃሚ:",
+ "abusefilter-edit-subtitle": "ማጣሪያ $1 ማዘጋጀት",
+ "abusefilter-edit-subtitle-new": "ማጣሪያ መፍጠር",
+ "abusefilter-edit-new": "አዲስ ማጣሪያ",
+ "abusefilter-edit-save": "ማጣሪያው ይቆጠብ",
+ "abusefilter-edit-id": "የማጣሪያ መታወቂያ፦",
+ "abusefilter-edit-warn-other": "ሌላ መልእክት",
+ "abusefilter-edit-warn-actions": "ድርጊቶች፦",
+ "abusefilter-edit-warn-edit": "የተመረጠው መልእክት ለመፍጠር/ማስተካከል",
+ "abusefilter-edit-done-subtitle": "ማጣሪያ ተለወጠ",
+ "abusefilter-edit-history": "ታሪክ",
+ "abusefilter-edit-tools": "መሳርያዎች፦",
+ "abusefilter-edit-builder-op-bool-and": "እና (&)",
+ "abusefilter-edit-builder-op-bool-or": "ወይም (|)",
+ "abusefilter-edit-builder-vars-summary": "ማጠቃልያ / ምክንያት",
+ "abusefilter-edit-builder-vars-article-id": "የገጽ መታወቂያ",
+ "abusefilter-edit-builder-vars-article-ns": "የገጽ ክፍለ-ዊኪ",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "የገጽ ሙሉ አርዕስት",
+ "abusefilter-history-foruser": "የ$1 ለውጦች",
+ "abusefilter-history-hidden": "የተደበቀ",
+ "abusefilter-history-timestamp": "ጊዜ",
+ "abusefilter-history-user": "ተጠቃሚ",
+ "abusefilter-history-actions": "ድርጊቶች",
+ "abusefilter-history-backedit": "ወደ ማጣሪያ ማዘጋጃ ለመመለስ",
+ "abusefilter-history-deleted": "የጠፋ",
+ "abusefilter-history-filterid": "ማጣሪያ",
+ "abusefilter-history-select-user": "ተጠቃሚ:",
+ "abusefilter-history-diff": "ለውጦች",
+ "abusefilter-revert-filter": "ማጣሪያ፦",
+ "abusefilter-revert-reasonfield": "ምክንያቱ፦",
+ "abusefilter-examine-user": "ተጠቃሚ:",
+ "abusefilter-examine-title": "የገጽ አርዕስት፦",
+ "abusefilter-examine-submit": "ፈልግ",
+ "abusefilter-topnav-home": "መኖርያ"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/an.json b/www/wiki/extensions/AbuseFilter/i18n/an.json
new file mode 100644
index 00000000..219105b5
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/an.json
@@ -0,0 +1,19 @@
+{
+ "@metadata": {
+ "authors": [
+ "Juanpabl",
+ "Carlos Cristia"
+ ]
+ },
+ "abusefilter-log-search-wiki": "Biwi:",
+ "abusefilter-log-search-submit": "Mirar",
+ "abusefilter-log-details-var": "Variable",
+ "abusefilter-log-noactions": "garra",
+ "abusefilter-list-edit": "Editar",
+ "abusefilter-edit-warn-actions": "Accions:",
+ "abusefilter-edit-history": "Historial:",
+ "abusefilter-edit-builder-group-vars": "Variables",
+ "abusefilter-edit-builder-vars-action": "Acción",
+ "abusefilter-history-actions": "Accions",
+ "abusefilter-revert-filter": "Filtro:"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/ar.json b/www/wiki/extensions/AbuseFilter/i18n/ar.json
new file mode 100644
index 00000000..ffc213b4
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/ar.json
@@ -0,0 +1,550 @@
+{
+ "@metadata": {
+ "authors": [
+ ";Hiba;1",
+ "Abanima",
+ "Aiman titi",
+ "Alnokta",
+ "Asaifm",
+ "Bassem JARKAS",
+ "Ciphers",
+ "Claw eg",
+ "DRIHEM",
+ "Loya",
+ "Meno25",
+ "Mido",
+ "Orango",
+ "OsamaK",
+ "Tarawneh",
+ "Zack wadghiri",
+ "Zanatos",
+ "ترجمان05",
+ "زكريا",
+ "وهراني",
+ "محمد أحمد عبد الفتاح",
+ "أحمد",
+ "Matma Rex",
+ "علاء",
+ "ديفيد"
+ ]
+ },
+ "abusefilter-desc": "يطبق قواعد آلية على التعديلات.",
+ "abusefilter": "ضبط مرشح الإساءة",
+ "abuselog": "سجل الإساءة",
+ "abusefilter-intro": "مرحبا بك إلى واجهة التحكم بمرشح الإساءة.\nمرشح الإساءة هو ميكانيكية برمجية آلية لتطبيق ضوابط تلقائية لكل الأفعال.\nهذه الواجهة تعرض قائمة بالمرشحات المعرفة، وتسمح بتعديلها.",
+ "abusefilter-mustbeeditor": "لأسباب أمنية، فالمستخدمون ذوو صلاحية تعديل مرشّحات الإساءة وحدهم يمكنهم استخدام هذه الواجهة.",
+ "abusefilter-warning": "'''تحذير''': حُسِب هذا الفعل ضارًّا.\nالأفعال غير البناءة سريعا ما تُسترجَع،\nومواصلة عمل تعديلات غير بنّاءة أو الإصرار عليها سيؤدي إلى منع حسابك أو عنوان الآيبي الخاص بك،\nإذا كنت تعتقد أن هذا الإجراء بناء، يمكنك إرساله مرة أخرى لتأكيده،\nالوصف المختصر لقاعدة الإساءة التي طابقها فعلك: $1",
+ "abusefilter-disallowed": "هذا الفعل تم التعرف عليه تلقائيا كضار، ولذا تم منعه.\nإذا كنت ترى أن تعديلك بناء، من فضلك اتصل بإداري، وأخبره بما كنت تحاول أن تفعل.\nوصف مختصر لقاعدة الإساءة التي طابقها فعلك هو: $1",
+ "abusefilter-blocked-display": "هذا الفعل تم التعرف عليه تلقائيا كضار،\nوأنت تم منعك من تنفيذه.\nبالإضافة إلى ذلك، لحماية {{SITENAME}}، حسابك وكل عناوين الأيبي الملحقة تم منعها من التحرير.\nلو أن هذا حدث بطريق الخطأ، من فضلك اتصل بإداري.\nوصف مختصر لقاعدة الإساءة التي طابقها فعلك هو: $1",
+ "abusefilter-degrouped": "هذا الفعل تم التعرف عليه تلقائيا كضار.\nوبالتالي، تم منعه، و، بما أن حسابك مشكوك في أنه قد تم اختراقه، كل الصلاحيات تم سحبها.\nلو أنك تعتقد أن هذا خطأ، من فضلك اتصل ببيروقراط بتفسير لهذا الفعل، وصلاحياتك ربما تتم استعادتها.\nوصف مختصر لقاعدة الإساءة التي طابقها فعلك هو: $1",
+ "abusefilter-autopromote-blocked": "هذا الفعل تم التعرف عليه تلقائيا كضار، وتم منعه.\nبالإضافة إلى ذلك، كإجراء أمني، بعض المميزات التي يتم منحها روتينيا للحسابات تمت إزالتها مؤقتا من حسابك.\nوصف مختصر لقاعدة الإساءة التي طابقها فعلك هو: $1",
+ "abusefilter-blocker": "مرشح الإساءة",
+ "abusefilter-blockreason": "ممنوع تلقائيا بواسطة مرشح الإساءة. وصف القاعدة المطابقة: $1",
+ "abusefilter-degroupreason": "الصلاحيات تمت إزالتها تلقائيا بواسطة مرشح الإساءة. وصف القاعدة: $1",
+ "abusefilter-accountreserved": "اسم الحساب هذا محجوز للاستخدام بواسطة مرشح الإساءة.",
+ "right-abusefilter-modify": "عدل مرشحات الإساءة",
+ "right-abusefilter-view": "عرض مرشحات الإساءة",
+ "right-abusefilter-log": "عرض سجل الإساءة",
+ "right-abusefilter-log-detail": "عرض مدخلات سجل الإساءة المفصلة",
+ "right-abusefilter-private": "عرض البيانات السرية في سجل الإساءة",
+ "right-abusefilter-private-log": "عرض سجل دخول التفاصيل الخاصة لمرشح الإساءة",
+ "right-abusefilter-modify-restricted": "عدل مرشحات الإساءة مع الأفعال المحظورة",
+ "right-abusefilter-revert": "استرجع كل التعديلات لمرشح إساءة محدد.",
+ "right-abusefilter-view-private": "اعرض مرشحات الإساءة المعلّمة كخاصة",
+ "right-abusefilter-log-private": "عرض إدخالات السجل لمرشحات الإساءة المعلمة كخاصة",
+ "right-abusefilter-hide-log": "إخفاء إدخالات سجل الإساءة",
+ "right-abusefilter-hidden-log": "عرض مدخلات سجل الإساءة المخفية",
+ "right-abusefilter-modify-global": "إنشاء أو تعديل مرشحات الإساءة العالمية",
+ "action-abusefilter-modify": "تعديل مرشحات الإساءة",
+ "action-abusefilter-view": "رؤية مرشحات الإساءة",
+ "action-abusefilter-log": "رؤية سجل الإساءة",
+ "action-abusefilter-log-detail": "رؤية مدخلات سجل الإساءة المفصلة",
+ "action-abusefilter-private": "رؤية البيانات السرية في سجل الإساءة",
+ "action-abusefilter-private-log": "عرض سجل دخول التفاصيل الخاصة لمرشح الإساءة",
+ "action-abusefilter-modify-restricted": "تعديل مرشحات الإساءة بالأفعال المحظورة",
+ "action-abusefilter-revert": "استرجاع كل التغييرات بواسطة مرشح إساءة معطى",
+ "action-abusefilter-view-private": "اعرض مرشحات الإساءة المعلّمة كخاصة",
+ "action-abusefilter-log-private": "عرض سجلات مرشحات الإساءة المعلَّمة كخاصة",
+ "abusefilter-log": "سجل مرشح الإساءة",
+ "abusefilter-log-summary": "هذا السجل يعرض قائمة بكل الأفعال المُكتشفة بواسطة المرشحات.",
+ "abusefilter-log-search": "بحث سجل الإساءة",
+ "abusefilter-log-search-user": "المستخدم:",
+ "abusefilter-log-search-filter": "أرقام المُرشِّح (مفصولة بشريط عمودي):",
+ "abusefilter-log-search-title": "العنوان:",
+ "abusefilter-log-search-wiki": "الويكي:",
+ "abusefilter-log-search-impact": "التأثير:",
+ "abusefilter-log-search-impact-all": "جميع الإجراءات",
+ "abusefilter-log-search-impact-saved": "التغييرات المحفوظة فقط",
+ "abusefilter-log-search-impact-not-saved": "بدون التغييرات المحفوظة",
+ "abusefilter-log-search-entries-label": "الرؤية:",
+ "abusefilter-log-search-entries-all": "جميع المدخلات",
+ "abusefilter-log-search-entries-hidden": "المدخلات المخفية فقط",
+ "abusefilter-log-search-entries-visible": "المدخلات المرئية فقط",
+ "abusefilter-log-search-action-taken-label": "الإجراءات المتخذة:",
+ "abusefilter-log-search-action-taken-any": "أيٌ منها",
+ "abusefilter-log-search-submit": "بحث",
+ "abusefilter-log-entry": "$1: $2 {{GENDER:$8|فعل}} مرشح إساءة، {{GENDER:$8|مؤديا}} الفعل \"$3\" في $4.\nالأفعال المتخذة: $5،\nوصف المرشح: $6",
+ "abusefilter-log-entry-withdiff": "$1: $2 {{GENDER:$8|فعل}} مرشح إساءة، {{GENDER:$8|مؤديا}} الفعل \"$3\" في $4.\nالأفعال المتخذة: $5،\nوصف المرشح: $6 ($7)",
+ "abusefilter-log-detailedentry-meta": "$1: $2 {{GENDER:$9|أطلق}} $3; {{GENDER:$9|مؤديا}} الفعل \"$4\" في $5.\nالأفعال المتخذة: $6;\nوصف المرشح: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "المرشح العام $1",
+ "abusefilter-log-detailedentry-local": "المرشح $1",
+ "abusefilter-log-detailslink": "التفاصيل",
+ "abusefilter-log-diff": "فرق",
+ "abusefilter-log-hidelink": "أضبط الرؤية",
+ "abusefilter-log-details-legend": "التفاصيل لمدخلة السجل $1",
+ "abusefilter-log-details-var": "متغير",
+ "abusefilter-log-details-val": "قيمة",
+ "abusefilter-log-details-vars": "محددات الفعل",
+ "abusefilter-log-details-private": "تفاصيل السجل الخاص",
+ "abusefilter-log-details-ip": "عنوان الأيبي المصدر",
+ "abusefilter-log-details-checkuser": "تدقيق المستخدم",
+ "abusefilter-log-noactions": "لا شيء",
+ "abusefilter-log-details-diff": "التغييرات التي أجريت في التعديل",
+ "abusefilter-log-linkoncontribs": "سجل الإساءة",
+ "abusefilter-log-linkoncontribs-text": "سجل الإساءة ل{{GENDER:$1|هذا المستخدم}}",
+ "abusefilter-log-hidden": "(السجل مخفي)",
+ "abusefilter-log-hidden-implicit": "(مخفي لأنه تم حذف مراجعة)",
+ "abusefilter-log-cannot-see-details": "ليس لديك الإذن لمعرفة تفاصيل هذا الإدخال.",
+ "abusefilter-log-cannot-see-private-details": "ليست لديك صلاحية للاطلاع على تفاصيل خاصة لهذا الإدخال.",
+ "abusefilter-log-nonexistent": "إدخال مع معرف مقدم غير موجود.",
+ "abusefilter-log-details-hidden": "لا يمكنك رؤية تفاصيل هذا المدخل، لأنه مخفي من العرض العلني",
+ "abusefilter-log-private-not-included": "إن معرف مرشح أو أكثر مما حددت خاص. ولأنه غير مسموح لك بعرض تفاصيل المرشحات الخاصة، لم يجري البحث عن هذه المرشحات.",
+ "abusefilter-log-hide-legend": "إخفاء السجل",
+ "abusefilter-log-hide-id": "هوية مدخلة لسجل:",
+ "abusefilter-log-hide-hidden": "إخفاء هذا المدخل من العرض العلني",
+ "abusefilter-log-hide-reason": "السبب:",
+ "abusefilter-log-hide-reason-other": "سبب آخر/إضافي:",
+ "abusefilter-log-hide-forbidden": "ليس لديك صلاحية لإخفاء إدخالات سجل الإساءة",
+ "abusefilter-logentry-suppress": "تم إخفاء \"[[$1]]\"",
+ "abusefilter-logentry-unsuppress": "تم إظهار \"[[$1]]\"",
+ "logentry-abusefilter-hit": "$1 {{GENDER:$2|أطلق}} $4; {{GENDER:$2|مؤديا}} الفعل \"$5\" في $3، الإجراءات المتخذة: $6 ($7)",
+ "log-action-filter-abusefilter": "نوع تغيير المرشح:",
+ "log-action-filter-abusefilter-create": "إنشاء مرشح جديد",
+ "log-action-filter-abusefilter-modify": "تعديل المرشح",
+ "logentry-abusefilterprivatedetails-access": "$1 {{GENDER:$2|وصل إلى}} التفاصيل الخاصة ل$3",
+ "abusefilterprivatedetails-log-name": "سجل الوصول للتفاصيل الخاصة بمرشح الإساءة",
+ "abusefilter-management": "التحكم بمرشح الإساءة",
+ "abusefilter-list": "كل المرشحات",
+ "abusefilter-list-id": "رقم المُرشِّح",
+ "abusefilter-list-pattern": "النمط",
+ "abusefilter-list-status": "الحالة",
+ "abusefilter-list-public": "وصف علني",
+ "abusefilter-list-consequences": "العواقب",
+ "abusefilter-list-visibility": "رؤية",
+ "abusefilter-list-hitcount": "عدد الضربات",
+ "abusefilter-list-edit": "عدل",
+ "abusefilter-list-details": "التفاصيل",
+ "abusefilter-list-limit": "الرقم لكل صفحة:",
+ "abusefilter-list-lastmodified": "آخر تعديل",
+ "abusefilter-list-group": "تصفية المجموعة",
+ "abusefilter-hidden": "سري",
+ "abusefilter-unhidden": "علني",
+ "abusefilter-enabled": "مفعل",
+ "abusefilter-deleted": "محذوف",
+ "abusefilter-disabled": "معطل",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|ضربة|ضربة}}",
+ "abusefilter-new": "إنشاء مرشح جديد",
+ "abusefilter-return": "رجوع إلى إدارة المرشح",
+ "abusefilter-status-global": "عام",
+ "abusefilter-list-options": "خيارات",
+ "abusefilter-list-options-deleted": "المرشحات المحذوفة:",
+ "abusefilter-list-options-deleted-only": "اعرض فقط المرشحات المحذوفة",
+ "abusefilter-list-options-deleted-hide": "أخفِ المرشحات المحذوفة",
+ "abusefilter-list-options-deleted-show": "ضمن المرشحات المحذوفة",
+ "abusefilter-list-options-scope": "إظهار المرشحات:",
+ "abusefilter-list-options-scope-local": "القواعد المحلية فقط",
+ "abusefilter-list-options-scope-global": "القواعد العامة فقط",
+ "abusefilter-list-options-scope-all": "القواعد المحلية والعالمية",
+ "abusefilter-list-options-disabled": "المرشحات المعطلة:",
+ "abusefilter-list-options-hidedisabled": "أخفِ المرشحات المعطلة",
+ "abusefilter-list-options-searchfield": "البحث في القواعد:",
+ "abusefilter-list-options-searchpattern": "إدراج نمط",
+ "abusefilter-list-options-searchoptions": "وضع البحث:",
+ "abusefilter-list-options-search-like": "استعلام عادي",
+ "abusefilter-list-options-search-rlike": "تعبير نمطي",
+ "abusefilter-list-options-search-irlike": "تعبير نمطي غير حساس لحالة الأحرف",
+ "abusefilter-list-regexerror": "حدث خطأ أثناء البحث: خطأ في صياغة التعبير النمطي.",
+ "abusefilter-list-options-submit": "حدّث",
+ "abusefilter-tools-text": "هنا بعض الأدوات التي ربما تكون مفيدة في صياغة وتصليح مرشحات الإساءة.",
+ "abusefilter-tools-expr": "مختبر التعبير",
+ "abusefilter-tools-submitexpr": "تقييم",
+ "abusefilter-tools-reautoconfirm": "استرجاع حالة التأكيد التلقائي",
+ "abusefilter-tools-reautoconfirm-user": "المستخدم:",
+ "abusefilter-tools-reautoconfirm-submit": "إعادة التأكيد التلقائي",
+ "abusefilter-reautoconfirm-none": "{{GENDER:$1|هذا المستخدم|هذه المستخدمة}} لم يتم تعليق حالة {{GENDER:$1|تأكيده|تأكيدها}} التلقائي.",
+ "abusefilter-reautoconfirm-notallowed": "أنت غير مسموح لك باسترجاع حالة التأكيد التلقائي.",
+ "abusefilter-reautoconfirm-done": "حالة التأكيد التلقائي للحساب تمت استعادتها",
+ "abusefilter-status": "من آخر $1 {{PLURAL:$1|فعل|فعل}}، $2 ($3%) {{PLURAL:$2|وصل|وصل}} إلى حد الحالة ل$4. $5 ($6%) {{PLURAL:$5|طابق|طابق}} واحدا من المرشحات المفعلة حاليا.",
+ "abusefilter-edit": "تحرير مرشح الإساءة",
+ "abusefilter-edit-subtitle": "تعديل المُرشِّح $1",
+ "abusefilter-edit-subtitle-new": "أنشئ مُرشِّحًا",
+ "abusefilter-edit-oldwarning": "<strong>أنت تعدل نسخة قديمة من هذا المرشح.\nالإحصاءات الموجودة هي لأحدث نسخة من المرشح.\nلو أنك حفظت تغييراتك، فستكتب على كل التغييرات منذ المراجعة التي تعدلها.</strong> &bull; [[Special:AbuseFilter/history/$2|رجوع إلى تاريخ هذا المرشح]]",
+ "abusefilter-edit-status-label": "إحصاءات:",
+ "abusefilter-edit-status": "من آخر $1 {{PLURAL:$1|تعديل}}، هذا المرشح طابق $2 ($3%).",
+ "abusefilter-edit-status-profile": "من آخر $1 {{PLURAL:$1|تعديل|تعديل}}، هذا المرشح طابق $2 ($3%).\nفي المتوسط، زمن تشغيله هو $4 مللي ثانية، ويستهلك $5 {{PLURAL:$5|شرط|شرط}} من شرط الحد.",
+ "abusefilter-edit-throttled-warning": "'''تحذير:'''تم التعليم على هذا المرشح تلقائيا على أنه ضار; كتدبير أمان، لن يتم تنفيذ الإجراءات التالية ($1)، تُرجَى مراجعة و[[mw:Extension:AbuseFilter/Conditions|تحسين]] شروطك لإزالة هذا التقييد",
+ "abusefilter-edit-new": "مرشح جديد",
+ "abusefilter-edit-save": "حفظ المُرشِّح",
+ "abusefilter-edit-id": "رقم المُرشِّح:",
+ "abusefilter-edit-switch-editor": "تبديل المحرر",
+ "abusefilter-edit-description": "الوصف:\n:''(معروض علنيا)''",
+ "abusefilter-edit-field-description": "وصف",
+ "abusefilter-edit-group": "تصفية المجموعة:",
+ "abusefilter-edit-flags": "الأعلام:",
+ "abusefilter-edit-enabled": "فعّل هذا المُرشِّح",
+ "abusefilter-edit-deleted": "التعليم كمحذوف",
+ "abusefilter-edit-hidden": "إخفاء تفاصيل هذا المرشح من العرض العلني",
+ "abusefilter-edit-global": "مرشح عام",
+ "abusefilter-edit-rules": "الشروط:",
+ "abusefilter-edit-field-conditions": "الشروط",
+ "abusefilter-edit-notes": "ملاحظات:",
+ "abusefilter-edit-lastmod": "رشح المعدل آخرا",
+ "abusefilter-edit-lastmod-text": "$1 بواسطة $2",
+ "abusefilter-edit-hitcount": "ضربات المُرشِّح:",
+ "abusefilter-edit-consequences": "الأفعال المتخذة عند التطابق",
+ "abusefilter-edit-action-warn": "نفذ هذه الأفعال بعد إعطاء المستخدم تحذيرا",
+ "abusefilter-edit-action-disallow": "امنع المستخدم من عمل الفعل المقصود",
+ "abusefilter-edit-action-blockautopromote": "اسحب حالة التأكيد التلقائي من المستخدم",
+ "abusefilter-edit-action-degroup": "أزل المستخدم من كل المجموعات المميزة",
+ "abusefilter-edit-action-block": "امنع المستخدم و/أو عنوان الأيبي من التحرير",
+ "abusefilter-edit-action-blocktalk": "منع المستخدم و/أو عنوان الآيبي من تحرير صفحة نقاشهم الخاصة",
+ "abusefilter-edit-action-throttle": "نفذ الأفعال فقط إذا ما تجاوز المستخدم حد المعدل",
+ "abusefilter-edit-action-rangeblock": "امنع نطاق الآيبي المخصص الذي يأتي منه المستخدم.",
+ "abusefilter-edit-action-tag": "اوسم التعديل لمراجعة أخرى.",
+ "abusefilter-edit-throttle-count": "عدد الأفعال المسموح بها:",
+ "abusefilter-edit-throttle-period": "فترة من الزمن:",
+ "abusefilter-edit-throttle-seconds": "{{PLURAL:$1|أقل من ثانية|ثانية واحدة|ثانيتان|$1 ثوانٍ|$1 ثانية}}",
+ "abusefilter-edit-throttle-groups": "حد المجموعة بواسطة:\n:''(واحدة لكل سطر، ادمج بالفاصلات)''",
+ "abusefilter-edit-warn-message": "رسالة النظام للاستخدام عند التحذير:",
+ "abusefilter-edit-warn-other": "رسالة أخرى",
+ "abusefilter-edit-warn-other-label": "اسم الصفحة للرسالة الأخرى:\n:''(بدون بادئة ميدياويكي)''",
+ "abusefilter-edit-warn-actions": "أفعال:",
+ "abusefilter-edit-warn-preview": "أظهر العرض المسبق للرسالة المختارة",
+ "abusefilter-edit-warn-edit": "أنشيء/عدل الرسالة المختارة",
+ "abusefilter-edit-tag-tag": "[[Special:Tags|وسوم]] للتطبيق (واحد لكل سطر):",
+ "abusefilter-edit-block-anon-durations": "فترة منع المستخدمين المجهولين:",
+ "abusefilter-edit-block-user-durations": "فترة منع المستخدمين المجهولين:",
+ "abusefilter-block-anon": "المستخدمون المجهولون",
+ "abusefilter-block-user": "المستخدمون المسجلون",
+ "abusefilter-edit-denied": "قد لا يمكنك رؤية تفاصيل هذا المرشح، لأنه مخفي من العرض العلني.",
+ "abusefilter-edit-main": "مُحدّدات المُرشِّح",
+ "abusefilter-edit-done-subtitle": "تم تعديل المُرشِّح",
+ "abusefilter-edit-done": "[[Special:AbuseFilter/history/$1/diff/prev/$2|تغييراتك]] إلى [[Special:AbuseFilter/$1|filter $3]] قد حفظت.",
+ "abusefilter-edit-badsyntax": "هناك خطأ صياغة في المرشح الذي حددته. الخرج من المحلل كان: <pre>$1</pre>",
+ "abusefilter-edit-missingfields": "الحقول التالية مطلوبة ويجب ملؤها: $1",
+ "abusefilter-edit-restricted": "أنت لا يمكنك تعديل هذا المرشح، لأنه يحتوي على واحد أو أكثر من الأفعال المحظورة.\nمن فضلك سل مستخدما ذا سماح إضافة الأفعال المحظورة ليفعل التغيير لك.",
+ "abusefilter-edit-viewhistory": "عرض تاريخ هذا المرشح",
+ "abusefilter-edit-history": "التاريخ:",
+ "abusefilter-edit-check": "تحقق من الصياغة",
+ "abusefilter-edit-badfilter": "المرشح الذي حددته غير موجود",
+ "abusefilter-edit-revert": "استرجاع الأفعال التي قام بها هذا المرشح",
+ "abusefilter-edit-tools": "أدوات:",
+ "abusefilter-edit-test-link": "اختبر هذا المرشح ضد التعديلات الحديثة",
+ "abusefilter-edit-export": "صدر هذا المرشح لويكي آخر",
+ "abusefilter-edit-syntaxok": "لم يُكتشف أي خطأ صياغي.",
+ "abusefilter-edit-syntaxerr": "أكشفت خطأ صياغة: $1",
+ "abusefilter-edit-bad-tags": "واحدة أو أكثر من الوسوم التي حددتها غير صالحة،\nيجب أن تكون الوسوم قصيرة وألا تحتوي على أحرف خاصة، ويجب ألا يتم حجزها بواسطة برامج أخرى، جرب اختيار اسم وسم جديد",
+ "abusefilter-edit-notallowed": "لا يسمح لك بإنشاء أو تعديل مرشحات الإساءة",
+ "abusefilter-edit-notallowed-global": "لا يسمح لك بإنشاء أو تعديل مرشحات الإساءة الشاملة",
+ "abusefilter-edit-notallowed-global-custom-msg": "رسائل تحذير مخصصة غير معتمدة للمرشحات العالمية",
+ "abusefilter-edit-builder-select": "اختر خيارا لإضافته عند البكرة",
+ "abusefilter-edit-builder-group-op-arithmetic": "معاملات حسابية",
+ "abusefilter-edit-builder-op-arithmetic-addition": "جمع (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "طرح (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "ضرب (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "قسمة (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "مودولو (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "أس (**)",
+ "abusefilter-edit-builder-group-op-comparison": "معاملات مقارنة",
+ "abusefilter-edit-builder-op-comparison-equal": "القيمة تساوي (==)",
+ "abusefilter-edit-builder-op-comparison-equal-strict": "القيمة والنوع يساويان (===)",
+ "abusefilter-edit-builder-op-comparison-notequal": "القيمة لا تساوي (!=)",
+ "abusefilter-edit-builder-op-comparison-notequal-strict": "القيمة والنوع لا يساويان (!==)",
+ "abusefilter-edit-builder-op-comparison-lt": "أقل من (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "أكبر من (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "أصغر من أو يساوي (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "أكبر من أو يساوي (>=)",
+ "abusefilter-edit-builder-group-op-bool": "معاملات منطقية",
+ "abusefilter-edit-builder-op-bool-not": "ليس (!)",
+ "abusefilter-edit-builder-op-bool-and": "و (&)",
+ "abusefilter-edit-builder-op-bool-or": "أو (|)",
+ "abusefilter-edit-builder-op-bool-xor": "حصري أو (^)",
+ "abusefilter-edit-builder-group-misc": "منوعات",
+ "abusefilter-edit-builder-misc-in": "موجود في سلسلة (in)",
+ "abusefilter-edit-builder-misc-like": "يطابق النمط (like)",
+ "abusefilter-edit-builder-misc-rlike": "يطابق تعبيرا منتظما (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "مطابقة التعبيرات الأساسية، غير حساس لحالة الأحرف (irlike)",
+ "abusefilter-edit-builder-misc-contains": "السلسلة اليسرى تحتوي على السلسلة اليمنى (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "سلسلة حرفية (\"\")",
+ "abusefilter-edit-builder-misc-tern": "معامل تيرنيري (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "شرطي (if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "دوال",
+ "abusefilter-edit-builder-funcs-length": "طول السلسلة (length)",
+ "abusefilter-edit-builder-funcs-lcase": "إلى حروف صغيرة (lcase)",
+ "abusefilter-edit-builder-funcs-ucase": "إستخدام أحرف كبيرة",
+ "abusefilter-edit-builder-funcs-ccnorm": "معادلة الحروف المختلطة (ccnorm)",
+ "abusefilter-edit-builder-funcs-ccnorm-contains-any": "تطبيع وبحث سلسلة لسلاسل فرعية متعددة في وضع أور (ccnorm_contains_any)",
+ "abusefilter-edit-builder-funcs-ccnorm-contains-all": "تطبيع وبحث سلسلة لسلاسل فرعية متعددة في وضع أند (ccnorm_contains_all)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "إزالة الحروف المزدوجة (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "حروف خاصة / إجمالي الحروف (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "معادلة (norm)",
+ "abusefilter-edit-builder-funcs-count": "عدد المرات التي تظهر فيها السلسلة X في السلسلة Y (count)",
+ "abusefilter-edit-builder-funcs-rcount": "عدد المرات الريجيكس X يظهر في السلسلة Y (rcount)",
+ "abusefilter-edit-builder-funcs-get_matches": "مجموعة التعبيرات النمطية في نص لكل مجموعة التقاط (get_matches)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "أزل الفراغات البيضاء (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "إزالة الحروف الخاصة (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "هل الأيبي في النطاق؟ (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "ابحث في السلسلة عن سلاسل فرعية متعددة في وضع أور (contains_any)",
+ "abusefilter-edit-builder-funcs-contains-all": "ابحث في السلسلة عن سلاسل فرعية متعددة في وضع أند (contains_all)",
+ "abusefilter-edit-builder-funcs-substr": "سلسلة فرعية (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "موضع السلسلة الفرعية في السلسلة (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "استبدال السلسلة الفرعية بسلسلة (str_replace)",
+ "abusefilter-edit-builder-funcs-rescape": "سلسلة الهروب كالحرفية في regex (rescape)",
+ "abusefilter-edit-builder-funcs-set_var": "ضبط المتغير (set_var)",
+ "abusefilter-edit-builder-group-vars": "متغيرات",
+ "abusefilter-edit-builder-vars-accountname": "اسم الحساب (on account creation)",
+ "abusefilter-edit-builder-vars-timestamp": "طابع زمن التغيير ليونكس",
+ "abusefilter-edit-builder-vars-timestamp-expanded": "الطابع الزمني للسجل",
+ "abusefilter-edit-builder-vars-action": "فعل",
+ "abusefilter-edit-builder-vars-addedlines": "السطور المضافة في التعديل",
+ "abusefilter-edit-builder-vars-delta": "الحجم المتغير في التعديل",
+ "abusefilter-edit-builder-vars-diff": "فرق موحد للتغييرات المصنوعة بواسطة التعديل",
+ "abusefilter-edit-builder-vars-newsize": "حجم الصفحة الجديد",
+ "abusefilter-edit-builder-vars-oldsize": "حجم الصفحة القديم",
+ "abusefilter-edit-builder-vars-old-content-model": "نموذج المحتوى القديم",
+ "abusefilter-edit-builder-vars-new-content-model": "نموذج المحتوى الجديد",
+ "abusefilter-edit-builder-vars-removedlines": "السطور المزالة في التعديل",
+ "abusefilter-edit-builder-vars-summary": "ملخص التعديل/السبب",
+ "abusefilter-edit-builder-vars-article-id": "هوية الصفحة",
+ "abusefilter-edit-builder-vars-article-ns": "نطاق الصفحة",
+ "abusefilter-edit-builder-vars-article-text": "عنوان الصفحة (بدون نطاق)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "عنوان الصفحة الكامل",
+ "abusefilter-edit-builder-vars-article-views": "عدد مشاهدات الصفحة",
+ "abusefilter-edit-builder-vars-movedfrom-id": "هوية الصفحة لنقل صفحة المصدر",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "نطاق الصفحة المصدر للنقل",
+ "abusefilter-edit-builder-vars-movedfrom-text": "عنوان الصفحة المصدر للنقل",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "العنوان الكامل للصفحة المصدر للنقل",
+ "abusefilter-edit-builder-vars-movedto-id": "هوية الصفحة لنقل صفحة الهدف",
+ "abusefilter-edit-builder-vars-movedto-ns": "نطاق الصفحة الهدف للنقل",
+ "abusefilter-edit-builder-vars-movedto-text": "عنوان الصفحة الهدف للنقل",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "العنوان الكامل للصفحة الهدف للنقل",
+ "abusefilter-edit-builder-vars-user-editcount": "عدد التعديلات للمستخدم",
+ "abusefilter-edit-builder-vars-user-age": "عمر حساب المستخدم",
+ "abusefilter-edit-builder-vars-user-name": "اسم حساب المستخدم",
+ "abusefilter-edit-builder-vars-user-groups": "المجموعات (متضمنة غير المباشرة) التي المستخدم فيها",
+ "abusefilter-edit-builder-vars-user-rights": "الصلاحيات التي يمتلكها المستخدم",
+ "abusefilter-edit-builder-vars-user-blocked": "ما إذا كان المستخدم ممنوعاً",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "وقت تأكيد عنوان البريد الإلكتروني",
+ "abusefilter-edit-builder-vars-recent-contributors": "آخر عشرة مساهمين في الصفحة",
+ "abusefilter-edit-builder-vars-first-contributor": "أول مستخدم ساهم في الصفحة",
+ "abusefilter-edit-builder-vars-movedfrom-recent-contributors": "آخر عشرة مستخدمين مساهمة في نقل صفحة المصدر",
+ "abusefilter-edit-builder-vars-movedfrom-first-contributor": "المستخدم الأول في المساهمة في نقل صفحة المصدر",
+ "abusefilter-edit-builder-vars-movedto-recent-contributors": "آخر عشرة مستخدمين في المساهمة في نقل صفحة الوجهة",
+ "abusefilter-edit-builder-vars-movedto-first-contributor": "المستخدم الأول في المساهمة في نقل صفحة الوجهة",
+ "abusefilter-edit-builder-vars-all-links": "كل الوصلات الخارجية في النص الجديد",
+ "abusefilter-edit-builder-vars-added-links": "كل الوصلات الخارجية المضافة في التعديل",
+ "abusefilter-edit-builder-vars-removed-links": "كل الوصلات الخارجية المزالة في التعديل",
+ "abusefilter-edit-builder-vars-old-text": "نص الويكي القديم للصفحة، قبل التعديل",
+ "abusefilter-edit-builder-vars-new-text": "نص الويكي الجديد للصفحة، بعد التعديل",
+ "abusefilter-edit-builder-vars-new-pst": "نص الويكي للصفحة الجديدة، تحول قبل الحفظ",
+ "abusefilter-edit-builder-vars-diff-pst": "الفرق الموحد للتغييرات التي تم إجراؤها بواسطة التعديل، تحول قبل الحفظ",
+ "abusefilter-edit-builder-vars-addedlines-pst": "الخطوط المضافة في التحرير، تحول قبل الحفظ",
+ "abusefilter-edit-builder-vars-new-text-stripped": "نص الصفحة الجديد، مجردا من أي تهيئة",
+ "abusefilter-edit-builder-vars-new-html": "مصدر HTML المعروض للمراجعة الجديدة",
+ "abusefilter-edit-builder-vars-restrictions-edit": "مستوى حماية التعديل للصفحة",
+ "abusefilter-edit-builder-vars-restrictions-move": "مستوى حماية النقل للصفحة",
+ "abusefilter-edit-builder-vars-restrictions-create": "مستوى حماية الإنشاء للصفحة",
+ "abusefilter-edit-builder-vars-restrictions-upload": "مستوى حماية الرفع للملف",
+ "abusefilter-edit-builder-vars-movedfrom-restrictions-edit": "مستوى حماية نقل صفحة المصدر",
+ "abusefilter-edit-builder-vars-movedfrom-restrictions-move": "مستوى حماية نقل صفحة المصدر",
+ "abusefilter-edit-builder-vars-movedfrom-restrictions-create": "حماية إنشاء صفحة مصدر النقل",
+ "abusefilter-edit-builder-vars-movedfrom-restrictions-upload": "حماية رفع ملف مصدر النقل",
+ "abusefilter-edit-builder-vars-movedto-restrictions-edit": "مستوى حماية تعديل صفحة الوجهة",
+ "abusefilter-edit-builder-vars-movedto-restrictions-move": "مستوى حماية نقل صفحة الوجهة",
+ "abusefilter-edit-builder-vars-movedto-restrictions-create": "مستوى حماية إنشاء صفحة الوجهة",
+ "abusefilter-edit-builder-vars-movedto-restrictions-upload": "مستوى حماية رفع ملف الوجهة",
+ "abusefilter-edit-builder-vars-old-text-stripped": "نص الصفحة القديم، منزوع منه أي تهيئة",
+ "abusefilter-edit-builder-vars-old-links": "الوصلات في الصفحة، قبل التعديل",
+ "abusefilter-edit-builder-vars-old-html": "نص ويكي الصفحة القديم، محلل إلى HTML",
+ "abusefilter-edit-builder-vars-minor-edit": "ما إذا كان التعديل معلم عليه كطفيف أم لا",
+ "abusefilter-edit-builder-vars-file-sha1": "هاش SHA1 لمحتويات الملف",
+ "abusefilter-edit-builder-vars-file-size": "حجم الملف بالبايت",
+ "abusefilter-edit-builder-vars-file-mime": "نوع MIME للملف",
+ "abusefilter-edit-builder-vars-file-mediatype": "نوع الوسائط للملف",
+ "abusefilter-edit-builder-vars-file-width": "عرض الملف بالبكسل",
+ "abusefilter-edit-builder-vars-file-height": "ارتفاع الملف بالبكسل",
+ "abusefilter-edit-builder-vars-file-bits-per-channel": "بت لكل قناة لون للملف",
+ "abusefilter-edit-block-options": "خيارات المنع:",
+ "abusefilter-filter-log": "تغييرات المرشح الأخيرة",
+ "abusefilter-history": "غير التاريخ لمرشح الإساءة #$1",
+ "abusefilter-history-foruser": "تغييرات من قبل $1",
+ "abusefilter-history-hidden": "مخفي",
+ "abusefilter-history-enabled": "مفعل",
+ "abusefilter-history-global": "عام",
+ "abusefilter-history-timestamp": "وقت",
+ "abusefilter-history-user": "مستخدم",
+ "abusefilter-history-public": "وصف المرشح العلني",
+ "abusefilter-history-flags": "أعلام",
+ "abusefilter-history-filter": "قاعدة المرشح",
+ "abusefilter-history-comments": "تعليقات",
+ "abusefilter-history-actions": "أفعال",
+ "abusefilter-history-backedit": "رجوع إلى محرر المرشح",
+ "abusefilter-history-deleted": "محذوف",
+ "abusefilter-history-filterid": "مرشح",
+ "abusefilter-history-select-legend": "تصفية البحث",
+ "abusefilter-history-select-user": "مستخدم:",
+ "abusefilter-history-select-filter": "معرف المرشح:",
+ "abusefilter-history-select-submit": "تصفية",
+ "abusefilter-history-diff": "تغييرات",
+ "abusefilter-history-error-hidden": "المرشح الذي طلبته مخفي، وأنت لا يمكنك رؤية تاريخه.",
+ "abusefilter-exception-unexpectedatend": "\"$2\" غير متوقع عند الحرف $1.",
+ "abusefilter-exception-expectednotfound": "توقع $2 عند الحرف $1، لم يتم العثور عليه (عثر على $3 $4 بدلا منه).",
+ "abusefilter-exception-unrecognisedkeyword": "كلمة مفتاحية غير متعرف عليها $2 عند الحرف $1.",
+ "abusefilter-exception-unexpectedtoken": "نص غير متوقع \"$3\" (من النوع $2) عند الحرف $1.",
+ "abusefilter-exception-unclosedstring": "سلسلة غير مغلقة تبدأ عند الحرف $1.",
+ "abusefilter-exception-invalidoperator": "معامل غير صحيح \"$2\" عند الحرف $1.",
+ "abusefilter-exception-unrecognisedtoken": "نص غير متعرف عليه \"$2\" عند الحرف $1.",
+ "abusefilter-exception-noparams": "لا محددات معطاة للدالة \"$2\" عند الحرف $1.",
+ "abusefilter-exception-dividebyzero": "محاولة غير قانونية لقسمة $2 على صفر عند الحرف $1.",
+ "abusefilter-exception-unrecognisedvar": "متغير غير متعرف عليه $2 عند الحرف $1",
+ "abusefilter-exception-notenoughargs": "لا محددات كافية للدالة $2 المطلوبة عند الحرف $1.\nتوقع $3 {{PLURAL:$3|محدد|محدد}}، حصل على $4",
+ "abusefilter-exception-regexfailure": "خطأ في التعبير المنتظم \"$3\" عند الحرف $1: \"$2\"",
+ "abusefilter-exception-overridebuiltin": "تجاوز غير قانوني لمتغير موجود مسبقا \"$2\" عند الحرف $1.",
+ "abusefilter-exception-outofbounds": "طلب مدخلة قائمة غير موجودة $2 (حجم القائمة = $3) عند الحرف $1.",
+ "abusefilter-exception-notlist": "طلب مدخلة مصفوفة لغير مصفوفة عند الحرف $1.",
+ "abusefilter-exception-unclosedcomment": "تعليق غير مغلق في الحرف $1.",
+ "abusefilter-action-tag": "وسم",
+ "abusefilter-action-throttle": "حد",
+ "abusefilter-action-warn": "تحذير",
+ "abusefilter-action-blockautopromote": "منع الترقية التلقائية",
+ "abusefilter-action-block": "منع",
+ "abusefilter-action-degroup": "أزل من المجموعات",
+ "abusefilter-action-rangeblock": "منع نطاق",
+ "abusefilter-action-disallow": "عدم السماح",
+ "abusefilter-revert-title": "استرجاع كامل التعديلات للمرشح $1",
+ "abusefilter-revert-intro": "هذه الاستمارة تسمح لك باسترجاع كل التغييرات التي أجراها مرشح الإساءة بسبب المرشح $1.\nمن فضلك احترس عند استخدام هذه الأداة.",
+ "abusefilter-revert-preview-item": "$1: $2 {{GENDER:$7|فعل}} $3 في $4.\nالأفعال للاسترجاع: $5 ($6)",
+ "abusefilter-revert-search-legend": "اختر أفعال مرشح الإساءة التي تريد استرجاعها",
+ "abusefilter-revert-periodstart": "فترة البداية:",
+ "abusefilter-revert-periodend": "فترة النهاية:",
+ "abusefilter-revert-search": "اختر الأفعال",
+ "abusefilter-revert-filter": "معرف المرشح:",
+ "abusefilter-revert-preview-intro": "بالأسفل الأفعال المتخذة بواسطة مرشح الإساءة والتي سيتم استرجاعها بواسطة هذا الفعل،\nمن فضلك تحقق منها بحرص، واضغط \"{{int:abusefilter-revert-confirm}}\" لتأكيد اختيارك.",
+ "abusefilter-revert-confirm-legend": "تأكيد التراجع",
+ "abusefilter-revert-confirm": "تأكيد",
+ "abusefilter-revert-success": "لقد قمت باسترجاع كامل التعديلات التي قام بها مرشح الإساءة وفقا [[Special:AbuseFilter/$1|للمرشح $2]].",
+ "abusefilter-revert-reason": "استرجاع تلقائي لكل الأفعال المتخذة بواسطة مرشح الإساءة بسبب المرشح $1.\nالسبب المعطى: $2",
+ "abusefilter-revert-reasonfield": "السبب:",
+ "abusefilter-test": "اختبار المرشح على تعديلات سابقة",
+ "abusefilter-test-intro": "هذه الصفحة تسمح لك بالتحقق من مرشح مدخل في الصندوق بالأسفل ضد آخر $1 {{PLURAL:$1|تغيير}}.\nلتحميل مرشح موجود; اكتب رقم المرشح الخاص به في الصندوق بأسفل صندوق نص التعديل، واضغط زر \"{{int:abusefilter-test-load}}\".",
+ "abusefilter-test-legend": "اختبار المرشح",
+ "abusefilter-test-load-filter": "تحميل رمز تعريف المرشح:",
+ "abusefilter-test-submit": "اختبار",
+ "abusefilter-test-load": "تحميل",
+ "abusefilter-test-user": "التغييرات بواسطة المستخدم:",
+ "abusefilter-test-period-start": "التغييرات التي أجريت بعد:",
+ "abusefilter-test-period-end": "التغييرات التي أجريت قبل:",
+ "abusefilter-test-page": "التغييرات التي أجريت على الصفحة:",
+ "abusefilter-test-shownegative": "اعرض التغييرات التي لا تطابق المرشح",
+ "abusefilter-test-syntaxerr": "المرشح الذي أدخلته يحتوي على خطأ صياغة.\nيمكنك تلقي تفسير كامل بواسطة الضغط على زر \"{{int:abusefilter-edit-check}}\" .",
+ "abusefilter-test-badtitle": "عنوان الصفحة الذي أدخلته غير صالح. قد يحتوي على حرف أو أكثر لا يمكن استخدامه في العناوين.",
+ "abusefilter-changeslist-examine": "افحص",
+ "abusefilter-examine": "افحص التغييرات الفردية",
+ "abusefilter-examine-intro": "هذه الصفحة تسمح لك بفحص المتغيرات المولدة بواسطة مرشح الإساءة لتغيير فردي، واختبارها ضد المرشحات.",
+ "abusefilter-examine-legend": "اختيار التغييرات",
+ "abusefilter-examine-diff": "مسار الفرق:",
+ "abusefilter-examine-user": "المستخدم:",
+ "abusefilter-examine-title": "عنوان الصفحة:",
+ "abusefilter-examine-submit": "بحث",
+ "abusefilter-examine-vars": "المتغيرات المولدة لهذا التغيير",
+ "abusefilter-examine-test": "اختبر هذا التغيير ضد مرشح",
+ "abusefilter-examine-test-button": "اختبار المرشح",
+ "abusefilter-examine-match": "المرشح طابق هذا التغيير.",
+ "abusefilter-examine-nomatch": "المرشح لم يطابق هذا التغيير.",
+ "abusefilter-examine-syntaxerror": "المرشح به صيغة غير صحيحة",
+ "abusefilter-examine-notfound": "التغيير الذي طلبته لم يمكن إيجاده.",
+ "abusefilter-examine-incompatible": "التغيير الذي طلبته غير مدعوم بواسطة مرشح الإساءة",
+ "abusefilter-examine-noresults": "لا نتائج تم الحصول عليها لمحددات البحث التي وفرتها.",
+ "abusefilter-topnav": "'''تصفح مرشح الإساءة'''",
+ "abusefilter-topnav-home": "الرئيسية",
+ "abusefilter-topnav-test": "اختبار الباتش",
+ "abusefilter-topnav-examine": "افحص التعديلات الماضية",
+ "abusefilter-topnav-log": "سجل الإساءة",
+ "abusefilter-topnav-tools": "أدوات الإصلاح",
+ "abusefilter-topnav-import": "استيراد المرشح",
+ "abusefilter-log-name": "سجل مرشح الإساءة",
+ "abusefilter-log-header": "هذا السجل يعرض ملخصا للتغييرات التي أجريت للمرشحات.\nللتفاصيل الكاملة، انظر [[Special:AbuseFilter/history|قائمة]] تغييرات المرشحات الحديثة.",
+ "abusefilter-logentry-create": "$1 {{GENDER:$2|أنشأ}} $4 ($5)",
+ "abusefilter-logentry-modify": "$1 {{GENDER:$2|عدل|عدلت}} $4 ($5)",
+ "abusefilter-log-noresults": "لا توجد نتائج.",
+ "abusefilter-diff-title": "فروقات بين النسخ",
+ "abusefilter-diff-item": "عنصر",
+ "abusefilter-diff-version": "نسخة من $1 {{GENDER:$3|بواسطة}} $2",
+ "abusefilter-diff-info": "معلومات أساسية",
+ "abusefilter-diff-pattern": "شروط المرشح",
+ "abusefilter-diff-invalid": "ليس بالإمكان إحضار النسخ المطلوبة",
+ "abusefilter-diff-backhistory": "عودة إلى تاريخ المرشح",
+ "abusefilter-diff-prev": "التعديل السابق",
+ "abusefilter-diff-next": "التعديل اللاحق",
+ "abusefilter-import-intro": "يمكنك استخدام هذه الواجهة لاستيراد المرشحات من الويكيات الأخرى.\nفي الويكي المصدر، اضغط \"{{int:abusefilter-edit-export}}\" تحت \"{{int:abusefilter-edit-tools}}\" في واجهة التعديل.\nانسخ من صندوق النص الذي سيظهر، والصقه إلى صندوق النص هذا، ثم اضغط \"{{int:abusefilter-import-submit}}\",",
+ "abusefilter-import-submit": "استيراد البيانات",
+ "abusefilter-group-default": "افتراضي",
+ "abusefilter-http-error": "حدث خطأ HTTP: $1.",
+ "abusefilter-view-private-submit": "عرض التفاصيل الخاصة",
+ "abusefilter-view-private": "عرض التفاصيل الخاصة",
+ "abusefilter-view-private-reason": "سبب الدخول إلى التفاصيل الخاصة:",
+ "abusefilter-log-details-id": "معرف السجل",
+ "abusefilter-invalid-request": "طلب غير صالح! يجب عليك الوصول إلى تفاصيل السجل الخاص من خلال النموذج في [[Special:AbuseLog/$1]] وتقديم سبب.",
+ "abusefilter-invalid-request-noid": "طلب غير صالح! يجب عليك الوصول إلى تفاصيل السجل الخاص من خلال النموذج الموجود في صفحة تفاصيل سجل الإساءة وتقديم سبب.",
+ "log-description-abusefilterprivatedetails": "يظهر السجل قائمة بالمرات التي وصل إليها المستخدم إلى التفاصيل الخاصة لسجل الإساءة.",
+ "abusefilter-noreason": "تحذير: لمشاهدة التفاصيل الخاصة لهذا السجل; يجب تقديم سبب.",
+ "abusefilter-log-ip-not-available": "غير متاح",
+ "tag-abusefilter-condition-limit": "تم التوصل إلى حد الشرط",
+ "tag-abusefilter-condition-limit-description": "التعديلات أو الأحداث الأخرى التي لا يمكن التحقق منها من قبل جميع [[Special:AbuseFilter|مرشحات الإساءة]] النشطة ([[mw:Extension:AbuseFilter/Conditions|مساعدة]]).",
+ "apihelp-abusefiltercheckmatch-description": "تحقق لمعرفة ما إذا كان مرشح الإساءة يطابق مجموعة من المتغيرات، محرر حدث مرشح إساءة مسجل،\nvars أو rcid أو logid مطلوبون ولكن يمكن استخدام واحد فقط.",
+ "apihelp-abusefiltercheckmatch-summary": "تحقق لمعرفة ما إذا كان مرشح الإساءة يطابق مجموعة من المتغيرات، محرر حدث مرشح إساءة مسجل.",
+ "apihelp-abusefiltercheckmatch-extended-description": "vars أو rcid أو logid مطلوبون ولكن يمكن استخدام واحد فقط.",
+ "apihelp-abusefiltercheckmatch-param-filter": "نص المرشح الكامل للتحقق من وجود تطابق.",
+ "apihelp-abusefiltercheckmatch-param-vars": "جسون مجموعة من المتغيرات للاختبار ضده.",
+ "apihelp-abusefiltercheckmatch-param-rcid": "معرف التغيير الأخير للتحقق ضده.",
+ "apihelp-abusefiltercheckmatch-param-logid": "معرف سجل مرشح إساءة للتحقق منه.",
+ "apihelp-abusefiltercheckmatch-example-1": "اختبار إذا كان معرف التغيير الأخير 15 يطابق مرشحا بسيطا",
+ "apihelp-abusefilterchecksyntax-description": "تحقق من بناء جملة مرشح الإساءة.",
+ "apihelp-abusefilterchecksyntax-summary": "تحقق من بناء جملة مرشح الإساءة.",
+ "apihelp-abusefilterchecksyntax-param-filter": "النص الكامل للمرشح للتحقق من بناء الجملة.",
+ "apihelp-abusefilterchecksyntax-example-1": "تحقق من بناء جملة مرشح صالح",
+ "apihelp-abusefilterchecksyntax-example-2": "تحقق من بناء جملة غير مرشح صالح",
+ "apihelp-abusefilterevalexpression-description": "تقييم تعبير مرشح إساءة.",
+ "apihelp-abusefilterevalexpression-summary": "تقييم تعبير مرشح إساءة.",
+ "apihelp-abusefilterevalexpression-param-expression": "التعبير لتقييمه.",
+ "apihelp-abusefilterevalexpression-example-1": "تقييم تعبير بسيط",
+ "apihelp-abusefilterunblockautopromote-description": "يرفع منع المستخدم من تلقي ترقيات تلقائية بسبب نتيجة مرشح إساءة.",
+ "apihelp-abusefilterunblockautopromote-summary": "يرفع منع المستخدم من تلقي ترقيات تلقائية بسبب نتيجة مرشح إساءة.",
+ "apihelp-abusefilterunblockautopromote-param-user": "اسم المستخدم للمستخدم الذي تريد إلغاء منعه.",
+ "apihelp-abusefilterunblockautopromote-example-1": "إزالة المنع عن الترقية التلقائية لـ[[User:Example]]",
+ "apihelp-query+abusefilters-description": "عرض تفاصيل مرشحات الإساءة.",
+ "apihelp-query+abusefilters-summary": "عرض تفاصيل مرشحات الإساءة.",
+ "apihelp-query+abusefilters-param-startid": "معرف المرشح لبدء التعداد منه.",
+ "apihelp-query+abusefilters-param-endid": "معرف المرشح لإيقاف التعداد فيه.",
+ "apihelp-query+abusefilters-param-show": "عرض المرشحات التي تستوفي هذه المعايير فقط.",
+ "apihelp-query+abusefilters-param-limit": "الحد الأقصى لعدد المرشحات للقائمة.",
+ "apihelp-query+abusefilters-param-prop": "أي خصائص للحصول عليها.",
+ "apihelp-query+abusefilters-example-1": "سرد المرشحات العامة المفعلة",
+ "apihelp-query+abusefilters-example-2": "عرض بعض التفاصيل عن المرشحات",
+ "apihelp-query+abuselog-description": "عرض الأحداث التي تم التقاطها بواسطة أحد مرشحات الإساءة.",
+ "apihelp-query+abuselog-summary": "عرض الأحداث التي تم التقاطها بواسطة أحد مرشحات الإساءة.",
+ "apihelp-query+abuselog-param-start": "الطابع الزمني لبدء تعداد منه.",
+ "apihelp-query+abuselog-param-end": "الطابع الزمني لوقف التعداد فيه.",
+ "apihelp-query+abuselog-param-user": "إظهار الإدخالات من قبل مستخدم معين أو عنوان آيبي فقط.",
+ "apihelp-query+abuselog-param-title": "إظهار الإدخالات التي تحدث في صفحة معينة فقط.",
+ "apihelp-query+abuselog-param-filter": "إظهار الإدخالات التي تم التقاطها بواسطة معرف مرشح معين فقط.",
+ "apihelp-query+abuselog-param-limit": "الحد الأقصى لعدد الإدخالات للقائمة.",
+ "apihelp-query+abuselog-param-prop": "أي خصائص للحصول عليها.",
+ "apihelp-query+abuselog-param-wiki": "ويكي لإظهار نتائج منه.",
+ "apihelp-query+abuselog-example-1": "أظهر مدخلات السجل الأخيرة",
+ "apihelp-query+abuselog-example-2": "عرض إدخالات السجل الأخيرة لـ[[API]]",
+ "apierror-abusefilter-canttest": "ليست لديك الصلاحية لاختبار مرشحات الإساءة.",
+ "apierror-abusefilter-cantcheck": "ليست لديك الصلاحية للتحقق من بناء مرشحات الإساءة.",
+ "apierror-abusefilter-nosuchlogid": "ليس هناك إدخال سجل إساءة بالمعرف $1.",
+ "apierror-abusefilter-badsyntax": "يحتوي المرشح على بنية غير صالحة."
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/arc.json b/www/wiki/extensions/AbuseFilter/i18n/arc.json
new file mode 100644
index 00000000..177c4afb
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/arc.json
@@ -0,0 +1,143 @@
+{
+ "@metadata": {
+ "authors": [
+ "Basharh",
+ "Michaelovic"
+ ]
+ },
+ "abusefilter": "ܛܟܣ ܡܨܦܝܢܝܬܐ ܕܚܘܒܠܐ",
+ "abuselog": "ܡܟܬܒܘܬܐ ܕܚܘܒܠܐ",
+ "abusefilter-blocker": "ܡܨܦܝܢܝܬܐ ܕܚܘܒܠܐ",
+ "abusefilter-log": "ܣܓܠܐ ܕܡܨܦܝܢܝܬܐ ܕܚܘܒܠܐ",
+ "abusefilter-log-summary": "ܗܢܐ ܣܓܠܐ ܬܚܘܝ ܡܟܬܒܘܬܐ ܕܟܠ ܥܒܕ̈ܐ ܕܒܝܩܝܢ ܒܝܕ ܡܨܦܝܢܝܬ̈ܐ.",
+ "abusefilter-log-search": "ܒܨܝ ܡܟܬܒܘܬܐ ܕܚܘܒܠܐ",
+ "abusefilter-log-search-user": "ܡܦܠܚܢܐ:",
+ "abusefilter-log-search-filter": "ܗܝܝܘܬܐ ܕܡܨܦܝܢܝܬܐ:",
+ "abusefilter-log-search-title": "ܟܘܢܝܐ:",
+ "abusefilter-log-search-wiki": "ܘܝܩܝ:",
+ "abusefilter-log-search-submit": "ܒܨܝ",
+ "abusefilter-log-detailedentry-local": "ܡܨܦܝܢܝܬ̈ܐ $1",
+ "abusefilter-log-detailslink": "ܐܪ̈ܝܟܬܐ",
+ "abusefilter-log-diff": "ܦܘܪܫܐ",
+ "abusefilter-log-hidelink": "ܐܚܘܕ ܚܙܬܐ",
+ "abusefilter-log-details-val": "ܛܝܡܐ",
+ "abusefilter-log-details-private": "ܓܠܝܬ̈ܐ ܐܪ̈ܙܢܝܬܐ",
+ "abusefilter-log-noactions": "ܠܐ ܡܕܡ",
+ "abusefilter-log-linkoncontribs": "ܡܟܬܒܘܬܐ ܕܚܘܒܠܐ",
+ "abusefilter-log-hide-reason": "ܥܠܬܐ:",
+ "abusefilter-management": "ܕܘܒܪܐ ܕܡܨܦܝܢܝܬܐ ܕܚܘܒܠܐ",
+ "abusefilter-list": "ܟܠ ܡܨܦܝܢܝܬ̈ܐ",
+ "abusefilter-list-id": "ܗܝܝܘܬܐ ܕܡܨܦܝܢܝܬܐ",
+ "abusefilter-list-status": "ܐܝܟܢܝܘܬܐ",
+ "abusefilter-list-public": "ܫܘܡܗܐ ܓܠܝܐ",
+ "abusefilter-list-consequences": "ܐܚܪ̈ܝܬܐ",
+ "abusefilter-list-visibility": "ܚܙܬܐ",
+ "abusefilter-list-hitcount": "ܡܢܝܢܐ ܕܡܚܘܬ̈ܐ",
+ "abusefilter-list-edit": "ܫܚܠܦ",
+ "abusefilter-list-details": "ܐܪ̈ܝܟܬܐ",
+ "abusefilter-list-limit": "ܡܢܝܢܐ ܠܟܠ ܦܐܬܐ:",
+ "abusefilter-list-lastmodified": "ܫܘܚܠܦܐ ܐܚܪܝܐ",
+ "abusefilter-hidden": "ܕܝܠܢܝܐ",
+ "abusefilter-unhidden": "ܓܠܝܐ",
+ "abusefilter-enabled": "ܬܘܦܥܠܐ",
+ "abusefilter-deleted": "ܫܝܦܐ",
+ "abusefilter-disabled": "ܠܐ ܬܘܦܥܠܐ",
+ "abusefilter-new": "ܒܪܝ ܡܨܦܝܢܝܬܐ ܚܕܬܐ",
+ "abusefilter-status-global": "ܓܘܢܝܐ",
+ "abusefilter-list-options": "ܓܒܝܬ̈ܐ",
+ "abusefilter-list-options-deleted": "ܡܨܦܝܢܝܬ̈ܐ ܫܝܦܬ̈ܐ:",
+ "abusefilter-list-options-deleted-only": "ܚܘܝ ܡܨܦܝܢܝܬ̈ܐ ܫܝܦܬ̈ܐ ܒܠܚܘܕ",
+ "abusefilter-list-options-deleted-hide": "ܛܫܝ ܡܨܦܝܢܝܬ̈ܐ ܫܝܦܬ̈ܐ",
+ "abusefilter-list-options-deleted-show": "ܚܒܘܫ ܡܨܦܝܢܝܬ̈ܐ ܫܝܦܬ̈ܐ",
+ "abusefilter-list-options-disabled": "ܡܨܦܝܢܝܬ̈ܐ ܠܐ ܬܘܦܥܠܬ̈ܐ:",
+ "abusefilter-list-options-hidedisabled": "ܛܫܝ ܡܨܦܝܢܝܬ̈ܐ ܠܐ ܬܘܦܥܠܬ̈ܐ",
+ "abusefilter-list-options-submit": "ܚܘܕܬܐ",
+ "abusefilter-tools-reautoconfirm-user": "ܡܦܠܚܢܐ:",
+ "abusefilter-status": "ܡܢ $1 {{PLURAL:$1|ܥܒܕܐ ܐܚܪܝܐ|ܥܒܕ̈ܐ ܐܚܪ̈ܝܐ}}، $2 ($3%) {{PLURAL:$2|ܬܡܛܐ}} ܠܬܚܘܡܐ ܕܐܝܟܢܝܘܬܐ ܕ$4. $5 ($6%) {{PLURAL:$5|ܬܐܘܐ}} ܚܕ ܡܢ ܡܨܦܝܢܝܬ̈ܐ ܬܘܦܥܠܬ̈ܐ ܗܫܐܝܬ.",
+ "abusefilter-edit-subtitle": "ܫܚܠܦ ܡܨܦܝܢܝܬܐ $1",
+ "abusefilter-edit-subtitle-new": "ܒܪܝܐ ܕܡܨܦܝܢܝܬܐ",
+ "abusefilter-edit-status-label": "ܚܒܝܫܘܬ ܡܢܝܢܐ",
+ "abusefilter-edit-new": "ܡܨܦܝܢܝܬܐ ܚܕܬܐ",
+ "abusefilter-edit-save": "ܠܒܘܟ ܡܨܦܝܢܝܬܐ",
+ "abusefilter-edit-id": "ܗܝܝܘܬܐ ܕܡܨܦܝܢܝܬܐ:",
+ "abusefilter-edit-flags": "ܐܬܘܬ̈ܐ:",
+ "abusefilter-edit-enabled": "ܬܦܥܠ ܡܨܦܝܢܝܬܐ ܗܕܐ",
+ "abusefilter-edit-rules": "ܬܢܘ̈ܝ",
+ "abusefilter-edit-lastmod-text": "$1 ܒܝܕ $2",
+ "abusefilter-edit-throttle-period": "ܡܬܚܐ ܡܢ ܙܒܢܐ:",
+ "abusefilter-edit-warn-other": "ܐܓܪܬܐ ܐܚܪܬܐ",
+ "abusefilter-edit-warn-actions": "ܥܒܕ̈ܐ:",
+ "abusefilter-edit-warn-edit": "ܒܪܝ/ܫܚܠܦ ܐܓܪܬܐ ܓܒܝܬܐ",
+ "abusefilter-edit-history": "ܬܫܥܝܬܐ:",
+ "abusefilter-edit-tools": "ܡܐܢ̈ܐ:",
+ "abusefilter-edit-builder-op-comparison-equal": "ܫܘܝܐ ܠ(==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "ܠܐ ܫܘܝܐ ܠ(!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "ܒܨܝܪ ܡܢ (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "ܪܒ ܡܢ (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "ܒܨܝܪ ܡܢ ܐܘ ܫܘܝܐ ܠ(<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "ܪܒ ܡܢ ܐܘ ܫܘܝܐ ܠ(>=)",
+ "abusefilter-edit-builder-op-bool-and": "ܘ (&)",
+ "abusefilter-edit-builder-op-bool-or": "ܐܘ (|)",
+ "abusefilter-edit-builder-group-misc": "ܦܪ̈ܝܫܬܐ",
+ "abusefilter-edit-builder-vars-newsize": "ܥܓܪܐ ܕܦܐܬܐ ܚܕܬܐ",
+ "abusefilter-edit-builder-vars-oldsize": "ܥܓܪܐ ܕܦܐܬܐ ܥܬܝܩܬܐ",
+ "abusefilter-edit-builder-vars-article-id": "ܗܝܝܘܬܐ ܕܦܐܬܐ",
+ "abusefilter-edit-builder-vars-article-ns": "ܚܩܠܐ ܕܦܐܬܐ",
+ "abusefilter-edit-builder-vars-article-text": "ܟܘܢܝܐ ܕܦܐܬܐ (ܕܠܐ ܚܩܠܐ)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "ܟܘܢܝܐ ܓܡܝܪܐ ܕܦܐܬܐ",
+ "abusefilter-edit-builder-vars-user-age": "ܥܘܡܪܐ ܕܚܘܫܒܢܐ ܕܡܦܠܚܢܐ",
+ "abusefilter-edit-builder-vars-user-name": "ܫܡܐ ܕܚܘܫܒܢܐ ܕܡܦܠܚܢܐ",
+ "abusefilter-filter-log": "ܫܘܚܠܦ̈ܐ ܕܡܨܦܝܢܝܬܐ ܚܕ̈ܬܐ",
+ "abusefilter-history-hidden": "ܛܘܫܝܐ",
+ "abusefilter-history-global": "ܓܘܢܝܐ",
+ "abusefilter-history-timestamp": "ܙܒܢܐ",
+ "abusefilter-history-user": "ܡܦܠܚܢܐ",
+ "abusefilter-history-public": "ܫܘܡܗܐ ܓܠܝܐ ܕܡܨܦܝܢܝܬܐ",
+ "abusefilter-history-flags": "ܐܬܘܬ̈ܐ:",
+ "abusefilter-history-actions": "ܥܒܕ̈ܐ",
+ "abusefilter-history-deleted": "ܫܝܦܐ",
+ "abusefilter-history-filterid": "ܡܨܦܝܢܝܬܐ",
+ "abusefilter-history-select-legend": "ܨܦܝ ܒܨܝܐ",
+ "abusefilter-history-select-user": "ܡܦܠܚܢܐ:",
+ "abusefilter-history-select-submit": "ܨܦܝ",
+ "abusefilter-history-diff": "ܫܘܚܠܦ̈ܐ",
+ "abusefilter-action-warn": "ܙܘܗܪܐ",
+ "abusefilter-action-block": "ܚܪܘܡ",
+ "abusefilter-action-degroup": "ܠܚܝ ܡܢ ܟܢܘܫܬ̈ܐ",
+ "abusefilter-revert-periodstart": "ܡܬܚܐ ܕܫܘܪܝܐ:",
+ "abusefilter-revert-periodend": "ܡܬܚܐ ܕܫܘܠܡܐ:",
+ "abusefilter-revert-search": "ܓܒܝ ܥܒܕ̈ܐ",
+ "abusefilter-revert-filter": "ܡܨܦܝܢܝܬܐ:",
+ "abusefilter-revert-confirm": "ܫܪܪ",
+ "abusefilter-revert-reasonfield": "ܥܠܬܐ:",
+ "abusefilter-test": "ܢܣܝܘܢܐ ܕܡܨܦܝܢܝܬܐ ܥܠ ܫܘܚܠܦ̈ܐ ܕܩܕܡ",
+ "abusefilter-test-submit": "ܢܣܝܘܢܐ",
+ "abusefilter-test-user": "ܫܘܚܠܦ̈ܐ ܒܝܕ ܡܦܠܚܢܐ:",
+ "abusefilter-test-period-start": "ܫܘܚܠܦ̈ܐ ܡܢ ܒܬܪ:",
+ "abusefilter-test-period-end": "ܫܘܚܠܦ̈ܐ ܡܢ ܩܕܡ:",
+ "abusefilter-test-page": "ܫܘܚܠܦ̈ܐ ܥܠ ܦܐܬܐ:",
+ "abusefilter-test-shownegative": "ܚܘܝ ܫܘܚܠܦ̈ܐ ܕܠܐ ܐܘܝܢ ܥܡ ܡܨܦܝܢܝܬܐ",
+ "abusefilter-changeslist-examine": "ܒܚܘܪ",
+ "abusefilter-examine": "ܒܚܘܪ ܫܘܚܠܦ̈ܐ ܦܪ̈ܨܘܦܝܐ",
+ "abusefilter-examine-intro": "ܦܐܬܐ ܗܕܐ ܬܦܣܐ ܠܟ ܬܒܚܘܪ ܡܫܬܚܠܦܢ̈ܐ ܕܒܪܝܝܢ ܒܝܕ ܡܨܦܝܢܝܬܐ ܕܚܘܒܠܐ ܕܫܘܚܠܦܐ ܦܪܨܘܦܝܐ، ܘܬܢܣܗ ܠܩܒܘܠ ܡܨܦܝܢܝܬ̈ܐ.",
+ "abusefilter-examine-legend": "ܓܒܝ ܫܘܚܠܦ̈ܐ",
+ "abusefilter-examine-user": "ܡܦܠܚܢܐ:",
+ "abusefilter-examine-title": "ܟܘܢܝܐ ܕܦܐܬܐ:",
+ "abusefilter-examine-submit": "ܒܨܝ",
+ "abusefilter-examine-test-button": "ܒܚܘܪ ܡܨܦܝܢܝܬܐ",
+ "abusefilter-topnav": "ܐܠܦܪܘܬܐ ܒܡܟܬܒܘܬܐ ܕܚܘܒܠܐ",
+ "abusefilter-topnav-home": "ܒܝܬܐ",
+ "abusefilter-topnav-test": "ܢܘܣܝܐ ܕܒܐܟ̮",
+ "abusefilter-topnav-examine": "ܒܚܘܪ ܫܘܚܠܦ̈ܐ ܕܕܥܒܪ",
+ "abusefilter-topnav-log": "ܡܟܬܒܘܬܐ ܕܚܘܒܠܐ",
+ "abusefilter-topnav-tools": "ܡܐܢ̈ܐ ܕܚܕܬܘܬܐ",
+ "abusefilter-topnav-import": "ܡܥܠܢܘܬܐ ܕܡܨܦܝܢܝܬܐ",
+ "abusefilter-log-name": "ܣܓܠܐ ܕܡܨܦܝܢܝܬܐ ܕܚܘܒܠܐ",
+ "abusefilter-log-noresults": "ܠܝܬ ܦܠܛ̈ܐ",
+ "abusefilter-diff-title": "ܦܘܪ̈ܫܐ ܒܝܢܬ ܨܚܚ̈ܐ",
+ "abusefilter-diff-item": "ܐܣܛܘܟܣܐ",
+ "abusefilter-diff-version": "ܨܚܚܐ ܡܢ $1 {{GENDER:$3|ܒܝܕ}} $2",
+ "abusefilter-diff-info": "ܝܕ̈ܥܬܐ ܪ̈ܫܝܬܐ",
+ "abusefilter-diff-pattern": "ܬܢܘ̈ܝ ܕܡܨܦܝܢܝܬܐ",
+ "abusefilter-import-submit": "ܡܥܠܢܘܬܐ ܕܓܠܝܬ̈ܐ"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/ary.json b/www/wiki/extensions/AbuseFilter/i18n/ary.json
new file mode 100644
index 00000000..f5d3af69
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/ary.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "زكريا"
+ ]
+ },
+ "abusefilter-log-search-submit": "bheṫ"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/arz.json b/www/wiki/extensions/AbuseFilter/i18n/arz.json
new file mode 100644
index 00000000..059b6703
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/arz.json
@@ -0,0 +1,354 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ghaly",
+ "Meno25",
+ "OsamaK",
+ "Ramsis II",
+ "Matma Rex"
+ ]
+ },
+ "abusefilter-desc": "يطبق قواعد آليه على التعديلات.",
+ "abusefilter": "ضبط مرشح الإساءة",
+ "abuselog": "سجل الإساءة",
+ "abusefilter-intro": "مرحبا بك إلى واجهه التحكم بمرشح الإساءه.\nمرشح الإساءه هو ميكانيكيه برمجيه آليه لتطبيق ضوابط تلقائيه لكل الأفعال.\nهذه الواجهه تعرض قائمه بالمرشحات المعرفه، وتسمح بتعديلها.",
+ "abusefilter-mustbeeditor": "لأسباب أمنيه، المستخدمون ذوو صلاحيه تعديل مرشّحات الإساءه فقط يمكنهم استخدام هذه الواجهه.",
+ "abusefilter-warning": "'''تحذير''': الإجراء ده أُعتبر مضر.\nهايتم استرجاع التعديلات المضره بسرعه،\nوالتعديل المضر المتكرر أو المستمر هايتسبب فيى منع حسابك أو الكمبيوتر بتاعك .\nإذا كنت فاكر إن التعديل ده كويس، فممكن تضغط \"أرسل\" مرة تانيه.\nوصف مختصر لقاعدة الإساءه : $1",
+ "abusefilter-disallowed": "هذا الفعل تم التعرف عليه تلقائيا كضار،\nولذا تم منعه.\nلو كنت تعتقد أن تعديلك بناء، من فضلك اتصل بإدارى، وأخبره بما كنت تحاول أن تفعل.\nوصف مختصر لقاعده الإساءه التى طابقها فعلك هو: $1",
+ "abusefilter-blocked-display": "هذا الفعل تم التعرف عليه تلقائيا كضار،\nوأنت تم منعك من تنفيذه.\nبالإضافه إلى ذلك، لحمايه {{SITENAME}}، حسابك وكل عناوين الأيبى الملحقه تم منعها من التحرير.\nلو أن هذا حدث بطريق الخطأ، من فضلك اتصل بإدارى.\nوصف مختصر لقاعده الإساءه التى طابقها فعلك هو: $1",
+ "abusefilter-degrouped": "هذا الفعل تم التعرف عليه تلقائيا كضار.\nوبالتالى، تم منعه، و، بما أن حسابك مشكوك فى أنه قد تم اختراقه، كل الصلاحيات تم سحبها.\nلو أنك تعتقد أن هذا خطأ، من فضلك اتصل ببيروقراط بتفسير لهذا الفعل، وصلاحياتك ربما تتم استعادتها.\nوصف مختصر لقاعده الإساءه التى طابقها فعلك هو: $1",
+ "abusefilter-autopromote-blocked": "هذا الفعل تم التعرف عليه تلقائيا كضار، وتم منعه.\nبالإضافه إلى ذلك، كإجراء أمنى، بعض المميزات التى يتم منحها روتينيا للحسابات تمت إزالتها مؤقتا من حسابك.\nوصف مختصر لقاعده الإساءه التى طابقها فعلك هو: $1",
+ "abusefilter-blocker": "مرشح الإساءة",
+ "abusefilter-blockreason": "ممنوع تلقائيا بواسطه مرشح الإساءه. وصف القاعده المطابقة: $1",
+ "abusefilter-degroupreason": "الصلاحيات تمت إزالتها تلقائيا بواسطه مرشح الإساءه. وصف القاعدة: $1",
+ "abusefilter-accountreserved": "اسم الحساب هذا محجوز للاستخدام بواسطه مرشح الإساءه.",
+ "right-abusefilter-modify": "عدل مرشحات الإساءة",
+ "right-abusefilter-view": "اعرض مرشحات الإساءة",
+ "right-abusefilter-log": "عرض سجل الإساءة",
+ "right-abusefilter-log-detail": "عرض مدخلات سجل الإساءه المفصلة",
+ "right-abusefilter-private": "عرض البيانات السريه فى سجل الإساءة",
+ "right-abusefilter-modify-restricted": "عدل مرشحات الإساءه مع الأفعال المحظورة",
+ "right-abusefilter-revert": "استرجع كل التعديلات لمرشح إساءه محدد.",
+ "right-abusefilter-view-private": "اعرض مرشحات الإساءه المعلّمه كخاصة",
+ "right-abusefilter-hide-log": "تخبيية التعديلات من سجل الإساءة",
+ "action-abusefilter-modify": "تعديل مرشحات الإساءة",
+ "action-abusefilter-view": "رؤيه مرشحات الإساءة",
+ "action-abusefilter-log": "رؤيه سجل الإساءة",
+ "action-abusefilter-log-detail": "رؤيه مدخلات سجل الإساءه المفصلة",
+ "action-abusefilter-private": "رؤيه البيانات السريه فى سجل الإساءة",
+ "action-abusefilter-modify-restricted": "تعديل مرشحات الإساءه بالأفعال المحظورة",
+ "action-abusefilter-revert": "استرجاع كل التغييرات بواسطه مرشح إساءه معطى",
+ "action-abusefilter-view-private": "اعرض مرشحات الإساءه المعلّمه كخاصة",
+ "abusefilter-log": "سجل مرشح الإساءة",
+ "abusefilter-log-summary": "هذا السجل يعرض قائمه بكل الأفعال الممسوكه بواسطه المرشحات.",
+ "abusefilter-log-search": "بحث سجل الإساءة",
+ "abusefilter-log-search-user": "المستخدم:",
+ "abusefilter-log-search-filter": "رقم المُرشِّح:",
+ "abusefilter-log-search-title": "العنوان:",
+ "abusefilter-log-search-wiki": "ويكى",
+ "abusefilter-log-search-submit": "ابحث",
+ "abusefilter-log-entry": "$1: $2 فعل مرشح إساءه، مؤديا الفعل \"$3\" فى $4.\nالأفعال المتخذة: $5;\nوصف المرشح: $6",
+ "abusefilter-log-detailedentry-meta": "$1: $2 أطلق $3، مؤديا الفعل \"$4\" فى $5.\nالأفعال المتخذة: $6;\nوصف المرشح: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "المرشح العام $1",
+ "abusefilter-log-detailedentry-local": "المرشح $1",
+ "abusefilter-log-detailslink": "التفاصيل",
+ "abusefilter-log-diff": "التغيير",
+ "abusefilter-log-details-legend": "التفاصيل لمدخله السجل $1",
+ "abusefilter-log-details-var": "متغير",
+ "abusefilter-log-details-val": "قيمة",
+ "abusefilter-log-details-vars": "محددات الفعل",
+ "abusefilter-log-details-private": "بيانات سرية",
+ "abusefilter-log-details-ip": "عنوان الأيبى المصدر",
+ "abusefilter-log-noactions": "لا شيء",
+ "abusefilter-log-details-diff": "التغييرات المعموله فى التعديل",
+ "abusefilter-log-linkoncontribs": "سجل الإساءة",
+ "abusefilter-log-linkoncontribs-text": "سجل الإساءه لهذا المستخدم",
+ "abusefilter-management": "التحكم بمرشح الإساءة",
+ "abusefilter-list": "كل المرشحات",
+ "abusefilter-list-id": "رقم المُرشِّح",
+ "abusefilter-list-status": "الحالة",
+ "abusefilter-list-public": "وصف علني",
+ "abusefilter-list-consequences": "العواقب",
+ "abusefilter-list-visibility": "رؤية",
+ "abusefilter-list-hitcount": "عدد الضربات",
+ "abusefilter-list-edit": "عدل",
+ "abusefilter-list-details": "التفاصيل",
+ "abusefilter-list-limit": "الرقم لكل صفحة:",
+ "abusefilter-list-lastmodified": "آخر تعديل",
+ "abusefilter-hidden": "سري",
+ "abusefilter-unhidden": "علني",
+ "abusefilter-enabled": "مفعل",
+ "abusefilter-deleted": "محذوف",
+ "abusefilter-disabled": "معطل",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|ضربة|ضربة}}",
+ "abusefilter-new": "إنشاء مرشح جديد",
+ "abusefilter-return": "رجوع إلى إداره المرشح",
+ "abusefilter-status-global": "عام",
+ "abusefilter-list-options": "خيارات",
+ "abusefilter-list-options-deleted": "المرشحات المحذوفة:",
+ "abusefilter-list-options-deleted-only": "اعرض فقط المرشحات المحذوفة",
+ "abusefilter-list-options-deleted-hide": "أخفِ المرشحات المحذوفة",
+ "abusefilter-list-options-deleted-show": "ضمن المرشحات المحذوفة",
+ "abusefilter-list-options-disabled": "المرشحات المعطلة:",
+ "abusefilter-list-options-hidedisabled": "أخفِ المرشحات المعطلة",
+ "abusefilter-list-options-submit": "تحديث",
+ "abusefilter-tools-text": "هنا بعض الأدوات التى ربما تكون مفيده فى صياغه وتصليح مرشحات الإساءه.",
+ "abusefilter-tools-expr": "مختبر التعبير",
+ "abusefilter-tools-submitexpr": "تقييم",
+ "abusefilter-tools-reautoconfirm": "استرجاع حاله التأكيد التلقائي",
+ "abusefilter-tools-reautoconfirm-user": "المستخدم:",
+ "abusefilter-tools-reautoconfirm-submit": "إعاده التأكيد التلقائي",
+ "abusefilter-reautoconfirm-none": "{{GENDER:$1|هذا المستخدم|هذه المستخدمة}} لم يتم تعليق حاله {{GENDER:$1|تأكيده|تأكيدها}} التلقائى.",
+ "abusefilter-reautoconfirm-notallowed": "أنت غير مسموح لك باسترجاع حاله التأكيد التلقائى.",
+ "abusefilter-reautoconfirm-done": "حاله التأكيد التلقائى للحساب تمت استعادتها",
+ "abusefilter-status": "من آخر $1 {{PLURAL:$1|فعل|فعل}}، $2 ($3%) {{PLURAL:$2|وصل|وصل}} إلى حد الحاله ل$4. $5 ($6%) {{PLURAL:$5|طابق|طابق}} واحدا من المرشحات المفعله حاليا.",
+ "abusefilter-edit-subtitle": "تعديل المُرشِّح $1",
+ "abusefilter-edit-oldwarning": "<strong>أنت تعدل نسخه قديمه من هذا المرشح.\nالإحصاءات الموجوده هى لأحدث نسخه من المرشح.\nلو أنك حفظت تغييراتك، فستكتب على كل التغييرات منذ المراجعه التى تعدلها.</strong> &bull; [[Special:AbuseFilter/history/$2|رجوع إلى تاريخ هذا المرشح]]",
+ "abusefilter-edit-status-label": "إحصاءات:",
+ "abusefilter-edit-status": "من آخر $1 {{PLURAL:$1|تعديل|تعديل}}، هذا المرشح طابق $2 ($3%).",
+ "abusefilter-edit-status-profile": "من آخر $1 {{PLURAL:$1|تعديل|تعديل}}، هذا المرشح طابق $2 ($3%).\nفى المتوسط، زمن تشغيله هو $4 مللى ثانيه، ويستهلك $5 {{PLURAL:$5|شرط|شرط}} من شرط الحد.",
+ "abusefilter-edit-new": "مرشح جديد",
+ "abusefilter-edit-save": "حفظ المُرشِّح",
+ "abusefilter-edit-id": "رقم المُرشِّح:",
+ "abusefilter-edit-description": "الوصف:\n:''(معروض علنيا)''",
+ "abusefilter-edit-flags": "الأعلام:",
+ "abusefilter-edit-enabled": "فعّل هذا المُرشِّح",
+ "abusefilter-edit-deleted": "التعليم كمحذوفة",
+ "abusefilter-edit-hidden": "إخفاء تفاصيل هذا المرشح من العرض العلني",
+ "abusefilter-edit-global": "طبق هذا المرشح بشكل عام",
+ "abusefilter-edit-rules": "الشروط:",
+ "abusefilter-edit-notes": "ملاحظات:\n:''(سرية)",
+ "abusefilter-edit-lastmod": "رشح المعدل آخرا",
+ "abusefilter-edit-lastmod-text": "$1 بواسطه $2",
+ "abusefilter-edit-hitcount": "ضربات المُرشِّح:",
+ "abusefilter-edit-consequences": "الأفعال المتخذه عند التطابق",
+ "abusefilter-edit-action-warn": "نفذ هذه الأفعال بعد إعطاء المستخدم تحذيرا",
+ "abusefilter-edit-action-disallow": "امنع المستخدم من عمل الفعل المقصود",
+ "abusefilter-edit-action-blockautopromote": "اسحب حاله التأكيد التلقائى من المستخدم",
+ "abusefilter-edit-action-degroup": "أزل المستخدم من كل المجموعات المميزة",
+ "abusefilter-edit-action-block": "امنع المستخدم و/أو عنوان الأيبى من التحرير",
+ "abusefilter-edit-action-throttle": "نفذ الأفعال فقط إذا ما تجاوز المستخدم حد المعدل",
+ "abusefilter-edit-action-rangeblock": "امنع نطاق ال/16 الذى يأتى منه المستخدم.",
+ "abusefilter-edit-action-tag": "اوسم التعديل لمراجعه أخرى.",
+ "abusefilter-edit-throttle-count": "عدد الأفعال المسموح بها:",
+ "abusefilter-edit-throttle-period": "فتره من الزمن:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|ثانية|ثانية}}",
+ "abusefilter-edit-throttle-groups": "حد المجموعه بواسطة:\n:''(واحده لكل سطر، ادمج بالفاصلات)''",
+ "abusefilter-edit-warn-message": "رساله النظام للاستخدام عند التحذير:",
+ "abusefilter-edit-warn-other": "رساله أخرى",
+ "abusefilter-edit-warn-other-label": "اسم الصفحه للرساله الأخرى:\n:''(بدون بادئه ميدياويكي)''",
+ "abusefilter-edit-warn-actions": "أفعال:",
+ "abusefilter-edit-warn-preview": "أظهر العرض المسبق للرساله المختارة",
+ "abusefilter-edit-warn-edit": "أنشيء/عدل الرساله المختارة",
+ "abusefilter-edit-tag-tag": "الوسوم للتنفيذ (واحد لكل سطر):",
+ "abusefilter-edit-denied": "أنت لا يمكنك رؤيه تفاصيل هذا المرشح، لأنه مخفى من العرض العلني",
+ "abusefilter-edit-main": "مُحدّدات المُرشِّح",
+ "abusefilter-edit-done-subtitle": "تم تعديل المُرشِّح",
+ "abusefilter-edit-done": "أنت حفظت بنجاح تغييراتك للمرشح $1.",
+ "abusefilter-edit-badsyntax": "هناك خطأ صياغه فى المرشح الذى حددته. الخرج من المحلل كان: <pre>$1</pre>",
+ "abusefilter-edit-restricted": "أنت لا يمكنك تعديل هذا المرشح، لأنه يحتوى على واحد أو أكثر من الأفعال المحظوره.\nمن فضلك سل مستخدما ذا سماح إضافه الأفعال المحظوره ليفعل التغيير لك.",
+ "abusefilter-edit-viewhistory": "عرض تاريخ هذا المرشح",
+ "abusefilter-edit-history": "التاريخ:",
+ "abusefilter-edit-check": "تحقق من الصياغة",
+ "abusefilter-edit-badfilter": "المرشح الذى حددته غير موجود",
+ "abusefilter-edit-revert": "استرجاع الأفعال التى قام بها هذا المرشح",
+ "abusefilter-edit-tools": "أدوات:",
+ "abusefilter-edit-test-link": "اختبر هذا المرشح ضد التعديلات الحديثة",
+ "abusefilter-edit-export": "صدر هذا المرشح لويكى آخر",
+ "abusefilter-edit-syntaxok": "لم يُكتشف أى خطأ صياغى.",
+ "abusefilter-edit-syntaxerr": "أكشفت خطأ صياغة: $1",
+ "abusefilter-edit-bad-tags": "واحده أو أكثر من الوسوم التى حددتها غير صالحه.\nيجب أن تكون الوسوم قصيره ويجب ألا تحتوى محارف خاصه.",
+ "abusefilter-edit-notallowed": "لا يسمح لك بإنشاء أو تعديل مرشحات الإساءة",
+ "abusefilter-edit-builder-select": "اختر خيارا لإضافته عند البكرة",
+ "abusefilter-edit-builder-group-op-arithmetic": "معاملات حسابية",
+ "abusefilter-edit-builder-op-arithmetic-addition": "جمع (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "طرح (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "ضرب (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "قسمه (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "مودولو (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "أس (**)",
+ "abusefilter-edit-builder-group-op-comparison": "معاملات مقارنة",
+ "abusefilter-edit-builder-op-comparison-equal": "مساوى ل(==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "غير مساوى ل(!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "أقل من (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "أكبر من (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "أصغر من أو يساوى (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "أكبر من أو يساوى (>=)",
+ "abusefilter-edit-builder-group-op-bool": "معاملات منطقية",
+ "abusefilter-edit-builder-op-bool-not": "ليس (!)",
+ "abusefilter-edit-builder-op-bool-and": "و (&)",
+ "abusefilter-edit-builder-op-bool-or": "أو (|)",
+ "abusefilter-edit-builder-op-bool-xor": "حصرى أو (^)",
+ "abusefilter-edit-builder-group-misc": "منوعات",
+ "abusefilter-edit-builder-misc-in": "موجود فى سلسله (in)",
+ "abusefilter-edit-builder-misc-like": "يطابق النمط (like)",
+ "abusefilter-edit-builder-misc-rlike": "يطابق تعبيرا منتظما (rlike)",
+ "abusefilter-edit-builder-misc-contains": "السلسله اليسرى تحتوى على السلسله اليمنى (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "سلسله حرفيه (\"\")",
+ "abusefilter-edit-builder-misc-tern": "معامل تيرنيرى (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "شرطى (if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "دوال",
+ "abusefilter-edit-builder-funcs-length": "طول السلسله (length)",
+ "abusefilter-edit-builder-funcs-lcase": "إلى حروف صغيره (lcase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "معادله الحروف المختلطه (ccnorm)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "إزاله الحروف المزدوجه (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "حروف خاصه / إجمالى الحروف (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "معادله (norm)",
+ "abusefilter-edit-builder-funcs-count": "عدد المرات التى تظهر فيها السلسله X فى السلسله Y (count)",
+ "abusefilter-edit-builder-funcs-rcount": "عدد المرات الريجيكس X يظهر فى السلسله Y (rcount)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "أزل الفراغات البيضاء (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "إزاله الحروف الخاصه (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "هل الأيبى فى النطاق؟ (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "ابحث فى السلسله عن سلاسل فرعيه متعدده (contains_any)",
+ "abusefilter-edit-builder-funcs-substr": "سلسله فرعيه (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "موضع السلسله الفرعيه فى السلسله (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "استبدال السلسله الفرعيه بسلسله (str_replace)",
+ "abusefilter-edit-builder-funcs-set_var": "ضبط المتغير (set_var)",
+ "abusefilter-edit-builder-group-vars": "متغيرات",
+ "abusefilter-edit-builder-vars-accountname": "اسم الحساب (on account creation)",
+ "abusefilter-edit-builder-vars-timestamp": "طابع زمن التغيير ليونكس",
+ "abusefilter-edit-builder-vars-action": "فعل",
+ "abusefilter-edit-builder-vars-addedlines": "السطور المضافه فى التعديل",
+ "abusefilter-edit-builder-vars-delta": "الحجم المتغير فى التعديل",
+ "abusefilter-edit-builder-vars-diff": "فرق موحد للتغييرات المصنوعه بواسطه التعديل",
+ "abusefilter-edit-builder-vars-newsize": "حجم الصفحه الجديد",
+ "abusefilter-edit-builder-vars-oldsize": "حجم الصفحه القديم",
+ "abusefilter-edit-builder-vars-removedlines": "السطور المزاله فى التعديل",
+ "abusefilter-edit-builder-vars-summary": "ملخص التعديل/السبب",
+ "abusefilter-edit-builder-vars-article-id": "هويه الصفحة",
+ "abusefilter-edit-builder-vars-article-ns": "نطاق الصفحة",
+ "abusefilter-edit-builder-vars-article-text": "عنوان الصفحه (بدون نطاق)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "عنوان الصفحه الكامل",
+ "abusefilter-edit-builder-vars-movedfrom-id": "هويه الصفحه لنقل صفحه المصدر",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "نطاق الصفحه المصدر للنقل",
+ "abusefilter-edit-builder-vars-movedfrom-text": "عنوان الصفحه المصدر للنقل",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "العنوان الكامل للصفحه المصدر للنقل",
+ "abusefilter-edit-builder-vars-movedto-id": "هويه الصفحه لنقل صفحه الهدف",
+ "abusefilter-edit-builder-vars-movedto-ns": "نطاق الصفحه الهدف للنقل",
+ "abusefilter-edit-builder-vars-movedto-text": "عنوان الصفحه الهدف للنقل",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "العنوان الكامل للصفحه الهدف للنقل",
+ "abusefilter-edit-builder-vars-user-editcount": "عدد التعديلات للمستخدم",
+ "abusefilter-edit-builder-vars-user-age": "عمر حساب المستخدم",
+ "abusefilter-edit-builder-vars-user-name": "اسم حساب المستخدم",
+ "abusefilter-edit-builder-vars-user-groups": "المجموعات (متضمنه غير المباشرة) التى المستخدم فيها",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "وقت تأكيد عنوان البريد الإلكتروني",
+ "abusefilter-edit-builder-vars-recent-contributors": "آخر خمسه مساهمين فى الصفحة",
+ "abusefilter-edit-builder-vars-all-links": "كل الوصلات الخارجيه فى النص الجديد",
+ "abusefilter-edit-builder-vars-added-links": "كل الوصلات الخارجيه المضافه فى التعديل",
+ "abusefilter-edit-builder-vars-removed-links": "كل الوصلات الخارجيه المزاله فى التعديل",
+ "abusefilter-edit-builder-vars-old-text": "نص الويكى القديم للصفحه، قبل التعديل",
+ "abusefilter-edit-builder-vars-new-text": "نص الويكى الجديد للصفحه، بعد التعديل",
+ "abusefilter-edit-builder-vars-new-text-stripped": "نص الصفحه الجديد، مجردا من أى تهيئة",
+ "abusefilter-edit-builder-vars-new-html": "مصدر HTML المعروض للمراجعه الجديدة",
+ "abusefilter-edit-builder-vars-restrictions-edit": "مستوى حمايه التعديل للصفحة",
+ "abusefilter-edit-builder-vars-restrictions-move": "مستوى حمايه النقل للصفحة",
+ "abusefilter-edit-builder-vars-old-text-stripped": "نص الصفحه القديم، منزوع منه أى تهيئة",
+ "abusefilter-edit-builder-vars-old-links": "الوصلات فى الصفحه، قبل التعديل",
+ "abusefilter-edit-builder-vars-old-html": "نص ويكى الصفحه القديم، محلل إلى HTML",
+ "abusefilter-edit-builder-vars-minor-edit": "ما إذا كان التعديل معلم عليه كطفيف أم لا",
+ "abusefilter-edit-builder-vars-file-sha1": "هاش SHA1 لمحتويات الملف",
+ "abusefilter-filter-log": "تغييرات المرشح الأخيرة",
+ "abusefilter-history": "غير التاريخ لمرشح الإساءه #$1",
+ "abusefilter-history-foruser": "تغييرات من قبل $1",
+ "abusefilter-history-hidden": "مخفي",
+ "abusefilter-history-enabled": "مفعل",
+ "abusefilter-history-global": "عام",
+ "abusefilter-history-timestamp": "وقت",
+ "abusefilter-history-user": "مستخدم",
+ "abusefilter-history-public": "وصف المرشح العلني",
+ "abusefilter-history-flags": "أعلام",
+ "abusefilter-history-filter": "قاعده المرشح",
+ "abusefilter-history-comments": "تعليقات",
+ "abusefilter-history-actions": "أفعال",
+ "abusefilter-history-backedit": "رجوع إلى محرر المرشح",
+ "abusefilter-history-deleted": "محذوف",
+ "abusefilter-history-filterid": "مرشح",
+ "abusefilter-history-select-legend": "تصفيه البحث",
+ "abusefilter-history-select-user": "مستخدم:",
+ "abusefilter-history-select-submit": "تصفية",
+ "abusefilter-history-diff": "تغييرات",
+ "abusefilter-history-error-hidden": "المرشح الذى طلبته مخفى، وأنت لا يمكنك رؤيه تاريخه.",
+ "abusefilter-exception-unexpectedatend": "\"$2\" غير متوقع عند الحرف $1.",
+ "abusefilter-exception-expectednotfound": "توقع $2 عند الحرف $1، لم يتم العثور عليه (عثر على $3 $4 بدلا منه).",
+ "abusefilter-exception-unrecognisedkeyword": "كلمه مفتاحيه غير متعرف عليها $2 عند الحرف $1.",
+ "abusefilter-exception-unexpectedtoken": "نص غير متوقع \"$3\" (من النوع $2) عند الحرف $1.",
+ "abusefilter-exception-unclosedstring": "سلسله غير مغلقه تبدأ عند الحرف $1.",
+ "abusefilter-exception-invalidoperator": "معامل غير صحيح \"$2\" عند الحرف $1.",
+ "abusefilter-exception-unrecognisedtoken": "نص غير متعرف عليه \"$2\" عند الحرف $1.",
+ "abusefilter-exception-noparams": "لا محددات معطاه للداله \"$2\" عند الحرف $1.",
+ "abusefilter-exception-dividebyzero": "محاوله غير قانونيه لقسمه $2 على صفر عند الحرف $1.",
+ "abusefilter-exception-unrecognisedvar": "متغير غير متعرف عليه $2 عند الحرف $1",
+ "abusefilter-exception-notenoughargs": "لا محددات كافيه للداله $2 المطلوبه عند الحرف $1.\nتوقع $3 {{PLURAL:$3|محدد|محدد}}، حصل على $4",
+ "abusefilter-exception-regexfailure": "خطأ فى التعبير المنتظم \"$3\" عند الحرف $1: \"$2\"",
+ "abusefilter-exception-overridebuiltin": "تجاوز غير قانونى لمتغير موجود مسبقا \"$2\" عند الحرف $1.",
+ "abusefilter-exception-outofbounds": "طلب مدخله قائمه غير موجوده $2 (حجم القائمه = $3) عند الحرف $1.",
+ "abusefilter-exception-notlist": "طلب مدخله مصفوفه لغير مصفوفه عند الحرف $1.",
+ "abusefilter-action-tag": "وسم",
+ "abusefilter-action-throttle": "حد",
+ "abusefilter-action-warn": "تحذير",
+ "abusefilter-action-blockautopromote": "منع الترقيه التلقائية",
+ "abusefilter-action-block": "منع",
+ "abusefilter-action-degroup": "أزل من المجموعات",
+ "abusefilter-action-rangeblock": "منع نطاق",
+ "abusefilter-action-disallow": "عدم السماح",
+ "abusefilter-revert-title": "استرجاع كامل التعديلات للمرشح $1",
+ "abusefilter-revert-intro": "هذه الاستماره تسمح لك باسترجاع كل التغييرات المعموله بواسطه مرشح الإساءه بسبب المرشح $1.\nمن فضلك احترس عند استخدام هذه الأداه.",
+ "abusefilter-revert-preview-item": "$1: $2 عمل $3 فى $4.\nالأفعال للاسترجاع: $5 ($6)",
+ "abusefilter-revert-search-legend": "اختر أفعال مرشح الإساءه التى تريد استرجاعها",
+ "abusefilter-revert-periodstart": "فتره البداية:",
+ "abusefilter-revert-periodend": "فتره النهاية:",
+ "abusefilter-revert-search": "اختر الأفعال",
+ "abusefilter-revert-filter": "مرشح:",
+ "abusefilter-revert-preview-intro": "بالأسفل الأفعال المتخذه بواسطه مرشح الإساءه والتى سيتم استرجاعها بواسطه هذا الفعل.\nمن فضلك تحقق منها بحرص، واضغط \"تأكيد\" لتأكيد اختيارك.",
+ "abusefilter-revert-confirm": "تأكيد",
+ "abusefilter-revert-success": "لقد قمت باسترجاع كامل التعديلات التى قام بها مرشح الإساءه وفقا [[Special:AbuseFilter/$1|للمرشح $2]].",
+ "abusefilter-revert-reason": "استرجاع تلقائى لكل الأفعال المتخذه بواسطه مرشح الإساءه بسبب المرشح $1.\nالسبب المعطى: $2",
+ "abusefilter-revert-reasonfield": "سبب الاسترجاع",
+ "abusefilter-test": "اختبار المرشح على تعديلات سابقة",
+ "abusefilter-test-intro": "هذه الصفحه تسمح لك بالتحقق من مرشح مدخل فى الصندوق بالأسفل ضد آخر $1 {{PLURAL:$1|تغيير|تغيير}}.\nلتحميل مرشح موجود، اكتب رقم المرشح الخاص به فى الصندوق بأسفل صندوق نص التعديل، واضغط زر \"تحميل\".",
+ "abusefilter-test-legend": "اختبار المرشح",
+ "abusefilter-test-load-filter": "تحميل رمز تعريف المرشح:",
+ "abusefilter-test-submit": "اختبار",
+ "abusefilter-test-load": "تحميل",
+ "abusefilter-test-user": "التغييرات بواسطه المستخدم:",
+ "abusefilter-test-period-start": "التغييرات المعموله بعد:",
+ "abusefilter-test-period-end": "التغييرات المعموله قبل:",
+ "abusefilter-test-page": "التغييرات المعموله للصفحة:",
+ "abusefilter-test-shownegative": "اعرض التغييرات التى لا تطابق المرشح",
+ "abusefilter-test-syntaxerr": "المرشح الذى أدخلته يحتوى على خطأ صياغه.\nيمكنك تلقى تفسير كامل بواسطه الضغط على زر \"التحقق من الصياغة\".",
+ "abusefilter-changeslist-examine": "افحص",
+ "abusefilter-examine": "افحص التغييرات الفردية",
+ "abusefilter-examine-intro": "هذه الصفحه تسمح لك بفحص المتغيرات المولده بواسطه مرشح الإساءه لتغيير فردى، واختبارها ضد المرشحات.",
+ "abusefilter-examine-legend": "اختيار التغييرات",
+ "abusefilter-examine-diff": "مسار الفرق:",
+ "abusefilter-examine-user": "المستخدم:",
+ "abusefilter-examine-title": "عنوان الصفحة:",
+ "abusefilter-examine-submit": "ابحث",
+ "abusefilter-examine-vars": "المتغيرات المولده لهذا التغيير",
+ "abusefilter-examine-test": "اختبر هذا التغيير ضد مرشح",
+ "abusefilter-examine-test-button": "اختبار المرشح",
+ "abusefilter-examine-match": "المرشح طابق هذا التغيير.",
+ "abusefilter-examine-nomatch": "المرشح لم يطابق هذا التغيير.",
+ "abusefilter-examine-syntaxerror": "المرشح به صيغه غير صحيحة",
+ "abusefilter-examine-notfound": "التغيير الذى طلبته لم يمكن إيجاده.",
+ "abusefilter-examine-incompatible": "التغيير الذى طلبته غير مدعوم بواسطه مرشح الإساءة",
+ "abusefilter-examine-noresults": "لا نتائج تم الحصول عليها لمحددات البحث التى وفرتها.",
+ "abusefilter-topnav": "'''الإبحار فى مرشح الإساءة'''",
+ "abusefilter-topnav-home": "البيت",
+ "abusefilter-topnav-test": "اختبار الباتش",
+ "abusefilter-topnav-examine": "افحص التعديلات الماضية",
+ "abusefilter-topnav-log": "سجل الإساءة",
+ "abusefilter-topnav-tools": "أدوات الإصلاح",
+ "abusefilter-topnav-import": "استيراد المرشح",
+ "abusefilter-log-name": "سجل مرشح الإساءة",
+ "abusefilter-log-header": "هذا السجل يعرض ملخصا للتغييرات المعموله للمرشحات.\nللتفاصيل الكامله، انظر [[Special:AbuseFilter/history|قائمة]] تغييرات المرشحات الحديثه.",
+ "abusefilter-diff-title": "فروقات بين النسخ",
+ "abusefilter-diff-item": "عنصر",
+ "abusefilter-diff-version": "نسخه من $1 من قبل $2",
+ "abusefilter-diff-info": "معلومات أساسية",
+ "abusefilter-diff-pattern": "شروط المرشح",
+ "abusefilter-diff-invalid": "ليس بالإمكان إحضار النسخ المطلوبة",
+ "abusefilter-diff-backhistory": "عوده إلى تاريخ المرشح",
+ "abusefilter-import-intro": "يمكنك استخدام هذه الواجهه لاستيراد المرشحات من الويكيات الأخرى.\nفى الويكى المصدر، اضغط \"{{int:abusefilter-edit-export}}\" تحت \"{{int:abusefilter-edit-tools}}\" فى واجهه التعديل.\nانسخ من صندوق النص الذى سيظهر، والصقه إلى صندوق النص هذا، ثم اضغط \"{{int:abusefilter-import-submit}}\",",
+ "abusefilter-import-submit": "استيراد البيانات"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/as.json b/www/wiki/extensions/AbuseFilter/i18n/as.json
new file mode 100644
index 00000000..8f33a50c
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/as.json
@@ -0,0 +1,119 @@
+{
+ "@metadata": {
+ "authors": [
+ "Bishnu Saikia",
+ "Britul",
+ "Chaipau",
+ "Gitartha.bordoloi",
+ "Psneog"
+ ]
+ },
+ "abusefilter": "অপব্যৱহাৰ চেকনী বিন্যাস",
+ "abuselog": "অপব্যৱহাৰ অভিলেখ",
+ "abusefilter-blocker": "অপব্যহাৰ পৰিশ্ৰাৱক",
+ "right-abusefilter-modify": "অপব্যৱহাৰ ফিল্টাৰ সালসলনি কৰক ।",
+ "right-abusefilter-view": "অপব্যৱহাৰ চেকনী চাওক",
+ "action-abusefilter-modify": "অপব্যৱহাৰ ফিল্টাৰ সালসলনি কৰক ।",
+ "action-abusefilter-view": "অপব্যৱহাৰ ছেকনী চাওক ।",
+ "abusefilter-log": "অপব্যৱহাৰ পৰিশ্ৰাৱক অভিলেখ",
+ "abusefilter-log-search-user": "সদস্য:",
+ "abusefilter-log-search-filter": "পৰিশ্ৰাৱক আইডি:",
+ "abusefilter-log-search-title": "শিৰোনামা",
+ "abusefilter-log-search-wiki": "ৱিকি",
+ "abusefilter-log-search-submit": "সন্ধান",
+ "abusefilter-log-detailedentry-local": "পৰিশ্ৰাৱক $1",
+ "abusefilter-log-detailslink": "বিস্তাৰিত",
+ "abusefilter-log-diff": "পাৰ্থক্য",
+ "abusefilter-log-hidelink": "প্রদর্শনযোগ্যতা ঠিক কৰক",
+ "abusefilter-log-details-var": "চলক",
+ "abusefilter-log-details-val": "মান",
+ "abusefilter-log-details-vars": "কার্য্যৰ প্রাচলসমূহ",
+ "abusefilter-log-details-private": "ব্যক্তিগত তথ্য",
+ "abusefilter-log-details-ip": "আইপি ঠিকনা সংৰক্ষন কৰা হৈছে",
+ "abusefilter-log-noactions": "একো নাই",
+ "abusefilter-log-details-diff": "সম্পাদনাত কৰা সালসলনিসমূহ ।",
+ "abusefilter-log-linkoncontribs": "অপব্যৱহাৰ অভিলেখ",
+ "abusefilter-log-linkoncontribs-text": "এই সদস্যৰ বাবে অপব্যবহাৰ অভিলেখ",
+ "abusefilter-log-hidden": "(সংযোজন লুকায়িত)",
+ "abusefilter-log-cannot-see-details": "ইয়াৰ সবিশেষ চোৱাৰ বাবে অনুমতি নাই ।",
+ "abusefilter-log-details-hidden": "আপনি এই সংযোজনটো বিস্তাৰিত ভাৱে চাব নোৱাৰে, কাৰণ এইটো জনসাধাৰনক প্ৰদৰ্শনৰ পৰা লুকুৱাই ৰখা হৈছে।",
+ "abusefilter-log-hide-legend": "অভিলেখ সংযোজন লুকুৱাই ৰাখক",
+ "abusefilter-log-hide-id": "অভিলেখ সংযোজনৰ আইডি:",
+ "abusefilter-log-hide-reason": "কাৰণ:",
+ "abusefilter-logentry-suppress": "\"[[$1]]\" লু্কুৱাই ৰাখক",
+ "abusefilter-logentry-unsuppress": "\"[[$1]]\" দেখুৱাওক",
+ "abusefilter-list": "সকলোৱোৰ ছেকনী",
+ "abusefilter-list-status": "স্থিতি",
+ "abusefilter-list-visibility": "দৃশ্যমান",
+ "abusefilter-list-edit": "সম্পাদনা",
+ "abusefilter-list-details": "বিৱৰণসমূহ",
+ "abusefilter-list-limit": "পৃষ্ঠাৰ সংখ্যা",
+ "abusefilter-list-lastmodified": "অন্তিম সংশোধন",
+ "abusefilter-hidden": "ব্যক্তিগত",
+ "abusefilter-unhidden": "সৰ্বসাধাৰণ",
+ "abusefilter-enabled": "সক্ৰিয়",
+ "abusefilter-deleted": "মচি পেলোৱা হৈছে",
+ "abusefilter-disabled": "নিষ্ক্ৰিয়",
+ "abusefilter-new": "নতুন ফিল্টাৰ সৃষ্টি কৰক",
+ "abusefilter-status-global": "গোলকীয়",
+ "abusefilter-list-options": "বিকল্পসমূহ",
+ "abusefilter-list-options-deleted": "মচি পেলোৱা ছেকনীসমূহ",
+ "abusefilter-list-options-deleted-only": "অকল মচি পেলোৱা ছেকনীসমূহ দেখুৱাওক",
+ "abusefilter-list-options-deleted-hide": "মচি পেলোৱা ছেকনীসমূহ লুকুৱাওক",
+ "abusefilter-list-options-scope-local": "স্থানীয় ৱিকি",
+ "abusefilter-list-options-submit": "আপডেট",
+ "abusefilter-tools-reautoconfirm-user": "সদস্য:",
+ "abusefilter-edit-subtitle": "$1 পৰিশ্ৰাৱক সম্পাদনা",
+ "abusefilter-edit-subtitle-new": "পৰিশ্ৰাৱক সৃষ্টি কৰা হৈ আছে",
+ "abusefilter-edit-status-label": "পৰিসংখ্যাসমূহ:",
+ "abusefilter-edit-new": "নতুন পৰিশ্ৰাৱক",
+ "abusefilter-edit-save": "পৰিশ্ৰাৱক সংৰক্ষণ কৰক",
+ "abusefilter-edit-description": "বিৱৰণ:\n:''(জনসাধাৰণৰ বাবে উন্মুক্ত)''",
+ "abusefilter-edit-rules": "চৰ্তসমূহ:",
+ "abusefilter-edit-notes": "টোকা:\n:''(ব্যক্তিগত)''",
+ "abusefilter-edit-lastmod-text": "$1-য়ে $2",
+ "abusefilter-edit-hitcount": "পৰিশ্ৰাৱক হিট গণনা:",
+ "abusefilter-edit-warn-other": "অন্য সংবাদসমূহ",
+ "abusefilter-edit-warn-actions": "কাৰ্যসমূহ",
+ "abusefilter-edit-history": "ইতিহাস:",
+ "abusefilter-edit-tools": "সঁজুলিসমূহ:",
+ "abusefilter-edit-builder-op-arithmetic-addition": "যোগ (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "বিয়োগ (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "পূৰণ(*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "হৰণ (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "শতাংশ (%)",
+ "abusefilter-edit-builder-op-comparison-equal": "সমান (==)",
+ "abusefilter-edit-builder-op-bool-not": "নহয় (!)",
+ "abusefilter-edit-builder-op-bool-and": "আৰু (&)",
+ "abusefilter-edit-builder-op-bool-or": "বা (|)",
+ "abusefilter-edit-builder-group-misc": "অন্যান্য",
+ "abusefilter-edit-builder-vars-action": "কাৰ্য",
+ "abusefilter-edit-builder-vars-user-name": "সদস্যৰ নাম",
+ "abusefilter-history-hidden": "অদৃশ্য",
+ "abusefilter-history-enabled": "সক্ৰিয়",
+ "abusefilter-history-global": "গোলকীয়",
+ "abusefilter-history-timestamp": "সময়",
+ "abusefilter-history-user": "সদস্য",
+ "abusefilter-history-comments": "মন্তব্যসমূহ",
+ "abusefilter-history-actions": "কাৰ্যসমূহ",
+ "abusefilter-history-deleted": "অপসাৰিত",
+ "abusefilter-history-select-user": "সদস্য:",
+ "abusefilter-history-diff": "পৰিবৰ্তনসমূহ",
+ "abusefilter-action-tag": "টেগ",
+ "abusefilter-action-warn": "সতৰ্ক কৰক",
+ "abusefilter-action-block": "বাৰণ কৰক",
+ "abusefilter-action-degroup": "গোটৰ পৰা আতৰাওক",
+ "abusefilter-revert-filter": "ছেকনী:",
+ "abusefilter-revert-confirm": "নিশ্চিত কৰক",
+ "abusefilter-test-submit": "পৰীক্ষা",
+ "abusefilter-changeslist-examine": "পৰীক্ষা",
+ "abusefilter-examine-user": "সদস্য:",
+ "abusefilter-examine-title": "পৃষ্ঠাৰ শিৰোনামা:",
+ "abusefilter-examine-submit": "সন্ধান কৰক",
+ "abusefilter-examine-noresults": "আপুনি দিয়া সন্ধান পাৰামিটাৰৰ বাবে একো ফলাফল পোৱা নগ'ল",
+ "abusefilter-topnav-home": "বেটুপাত",
+ "abusefilter-topnav-log": "অপব্যৱহাৰ অভিলেখ",
+ "abusefilter-log-noresults": "ফলাফল নাই",
+ "abusefilter-import-submit": "তথ্য আমদানী কৰক",
+ "abusefilter-group-default": "অবিচল"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/ast.json b/www/wiki/extensions/AbuseFilter/i18n/ast.json
new file mode 100644
index 00000000..30607f38
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/ast.json
@@ -0,0 +1,508 @@
+{
+ "@metadata": {
+ "authors": [
+ "Mr.Ajedrez",
+ "Xuacu",
+ "Matma Rex"
+ ]
+ },
+ "abusefilter-desc": "Aplica heurística automática a les ediciones.",
+ "abusefilter": "Configuración de la peñera d'abusos",
+ "abuselog": "Rexistru d'abusos",
+ "abusefilter-intro": "Bienveníu a la interfaz d'alministración de la peñera d'abusos.\nLa peñera d'abusos ye un mecanismu de software automatizáu p'aplicar heurística automática a toles aiciones.\nEsta interfaz amuesa la llista de les peñeres definíes, y permite camudales.",
+ "abusefilter-mustbeeditor": "Por razones de seguridá, solamente los usuarios con permisu pa camudar les peñeres d'abusu pueden usar esta interfaz.",
+ "abusefilter-warning": "'''Avisu''': Esta aición identificóse automáticamente como perxudicial.\nLes aiciones non constructives revertiránse dafechu,\ny la repetición d'ediciones non constructives tendrá como resultáu el bloquéu de la to cuenta o direición IP.\nSi crees qu'esta aición ye constructiva, pues volver a unviala pa confirmala.\nLa descripción curtia de la regla d'abusu que s'activó cola to aición ye: $1",
+ "abusefilter-disallowed": "Esta aición identificóse automáticamente como perxudicial y, poro, nun se permite.\nSi pienses que la to aición foi constructiva, por favor, informa a un alministrador de lo que queríes facer.\nEsta ye una descripción curtia de la regla d'abusu que casa cola to aición: $1",
+ "abusefilter-blocked-display": "Esta aición identificóse automáticamente como perxudicial, y torgósete executala.\nAmás, pa protexer a {{SITENAME}}, a la to cuenta d'usuariu y toles direiciones IP asociaes se-yos torgó editar.\nSi esto asocedió por un fallu, por favor, ponte'n contautu con un alministrador.\nEquí hai una descripción curtia de la regla d'abusu que casa cola to aición: $1",
+ "abusefilter-degrouped": "Esta aición identificóse automáticamente como perxudicial.\nComo consecuencia, nun se permitió y, como se sospecha que la to cuenta ta comprometida, tolos tos permisos queden torgaos.\nSi crees qu'esto foi por un error, por favor, ponte en contautu con un burócrata apurriendo-y una esplicación d'esta aición y seique se restaurarán los tos permisos.\nEquí hai una descripción curtia de la regla d'abusu que casa cola to aición: $1",
+ "abusefilter-autopromote-blocked": "Esta aición identificóse automaticamente como perxudicial, y nun se permitió.\nAmás, como midida de seguridá, se-y torgaron de mou temporal a la to cuenta dellos permisos que de vezu se conceden a les cuentes establecíes.\nEquí hai una descripción curtia de la regla d'abusu cola que casa la to aición: $1",
+ "abusefilter-blocker": "Peñera d'abusos",
+ "abusefilter-blockreason": "Bloquiáu automáticamente pola peñera d'abusu.\nDescripción de la regla aplicada: $1",
+ "abusefilter-degroupreason": "Permisos retiraos automáticamente pola peñera d'abusu.\nDescripción de la regla: $1",
+ "abusefilter-accountreserved": "Esti nome de cuenta ta acutáu pa que lu use la peñera d'abusos.",
+ "right-abusefilter-modify": "Camudar les peñeres d'abusu",
+ "right-abusefilter-view": "Ver les peñeres d'abusu",
+ "right-abusefilter-log": "Ver el rexistru d'abusos",
+ "right-abusefilter-log-detail": "Ver los detalles de les entraes del rexistru d'abusos",
+ "right-abusefilter-private": "Ver los datos privaos del rexistru d'abusos",
+ "right-abusefilter-private-log": "Ver el rexistru d'accesu a detalles privaos d'AbuseFilter",
+ "right-abusefilter-modify-restricted": "Camudar les peñeres d'abusu con aiciones restrinxíes",
+ "right-abusefilter-revert": "Revertir tolos cambios fechos por una determinada peñera d'abusu",
+ "right-abusefilter-view-private": "Ver les peñeres d'abusu marcaes como privaes",
+ "right-abusefilter-log-private": "Ver entraes del rexistru d'abusos marcaes como privaes",
+ "right-abusefilter-hide-log": "Anubrir entraes del rexistru d'abusos",
+ "right-abusefilter-hidden-log": "Ver les entraes anubríes del rexistru d'abusos",
+ "right-abusefilter-modify-global": "Crear o camudar los filtros d'abusu globales",
+ "action-abusefilter-modify": "camudar les peñeres d'abusu",
+ "action-abusefilter-view": "ver les peñeres d'abusu",
+ "action-abusefilter-log": "ver el rexistru d'abusos",
+ "action-abusefilter-log-detail": "ver los detalles de les entraes del rexistru d'abusos",
+ "action-abusefilter-private": "ver los datos privaos del rexistru d'abusos",
+ "action-abusefilter-private-log": "ver el rexistru d'accesu a detalles privaos d'AbuseFilter",
+ "action-abusefilter-modify-restricted": "camudar les peñeres d'abusu con aiciones restrinxíes",
+ "action-abusefilter-revert": "revertir tolos cambios fechos por una determinada peñera d'abusu",
+ "action-abusefilter-view-private": "ver les peñeres d'abusu marcaes como privaes",
+ "action-abusefilter-log-private": "ver rexistros de les peñeres d'abusu marcaes como privaes",
+ "abusefilter-log": "Rexistru de la peñera d'abusos",
+ "abusefilter-log-summary": "Esti rexistru amuesa una llista de toles aiciones detectaes poles peñeres.",
+ "abusefilter-log-search": "Guetar nel rexistru d'abusos",
+ "abusefilter-log-search-user": "Usuariu:",
+ "abusefilter-log-search-filter": "IDs del filtru (separar con barres verticales):",
+ "abusefilter-log-search-title": "Títulu:",
+ "abusefilter-log-search-wiki": "Wiki:",
+ "abusefilter-log-search-impact": "Impactu:",
+ "abusefilter-log-search-impact-all": "Toles aiciones",
+ "abusefilter-log-search-impact-saved": "Namái los cambios guardaos",
+ "abusefilter-log-search-impact-not-saved": "Ensin cambios guardaos",
+ "abusefilter-log-search-entries-label": "Visibilidá:",
+ "abusefilter-log-search-entries-all": "Toles entraes",
+ "abusefilter-log-search-entries-hidden": "Sólo les entraes tapecíes",
+ "abusefilter-log-search-entries-visible": "Sólo les entraes visibles",
+ "abusefilter-log-search-action-taken-label": "Aición fecha:",
+ "abusefilter-log-search-action-taken-any": "Cualquiera",
+ "abusefilter-log-search-submit": "Guetar",
+ "abusefilter-log-entry": "$1: $2 {{GENDER:$8|disparó}} una peñera d'abusu {{GENDER:$8|al facer}} l'aición «$3» en $4.\nMidíes tomaes: $5;\nDescripción de la peñera: $6",
+ "abusefilter-log-entry-withdiff": "$1: $2 {{GENDER:$8|disparó}} un filtru d'abusu, {{GENDER:$8|al facer}} l'aición «$3» en $4.\nMidíes tomaes: $5;\nDescripción del filtru: $6 ($7)",
+ "abusefilter-log-detailedentry-meta": "$1: $2 {{GENDER:$9|disparó}} $3 {{GENDER:$9|al facer}} l'aición «$4» en $5.\nMidíes tomaes: $6;\nDescripción de la peñera: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "peñera global $1",
+ "abusefilter-log-detailedentry-local": "filtru $1",
+ "abusefilter-log-detailslink": "detalles",
+ "abusefilter-log-diff": "dif",
+ "abusefilter-log-hidelink": "axustar la visibilidá",
+ "abusefilter-log-details-legend": "Detalles de la entrada del rexistru $1",
+ "abusefilter-log-details-var": "Variable",
+ "abusefilter-log-details-val": "Valor",
+ "abusefilter-log-details-vars": "Parámetros de l'aición",
+ "abusefilter-log-details-private": "Detalles privaos del rexistru",
+ "abusefilter-log-details-ip": "Direición IP d'orixe",
+ "abusefilter-log-details-checkuser": "Comprobar usuariu",
+ "abusefilter-log-noactions": "dengún",
+ "abusefilter-log-details-diff": "Cambios fechos na edición",
+ "abusefilter-log-linkoncontribs": "rexistru d'abusos",
+ "abusefilter-log-linkoncontribs-text": "Rexistru d'abusos d'{{GENDER:$1|esti usuariu|esta usuaria}}",
+ "abusefilter-log-hidden": "(entrada anubría)",
+ "abusefilter-log-hidden-implicit": "(anubríu porque se desanició la revisión)",
+ "abusefilter-log-cannot-see-details": "Nun tienes permisu pa ver los detalles d'esta entrada.",
+ "abusefilter-log-cannot-see-private-details": "Nun tienes permisu pa ver los detalles privaos d'esta entrada.",
+ "abusefilter-log-nonexistent": "Nun esiste nenguna entrada cola ID proporcionada.",
+ "abusefilter-log-details-hidden": "Nun pues ver los detalles d'esta entrada porque ta anubría de la vista pública.",
+ "abusefilter-log-private-not-included": "Una o más de les IDs del filtru qu'especificasti ye privada. Como nun tienes permisu para ver los detalles de los filtros privaos, nun se buscó ente esos filtros.",
+ "abusefilter-log-hide-legend": "Anubrir entrada del rexistru",
+ "abusefilter-log-hide-id": "ID de la entrada del rexistru:",
+ "abusefilter-log-hide-hidden": "Anubrir esta entrada de la vista pública",
+ "abusefilter-log-hide-reason": "Motivu:",
+ "abusefilter-log-hide-forbidden": "Nun tienes permisu p'anubrir entraes del rexistru d'abusos.",
+ "abusefilter-logentry-suppress": "anubre \"[[$1]]\"",
+ "abusefilter-logentry-unsuppress": "amuesa \"[[$1]]\"",
+ "logentry-abusefilter-hit": "$1 {{GENDER:$2|disparó}} $4, {{GENDER:$2|al facer}} l'aición «$5» en $3. Aiciones feches: $6 ($7)",
+ "log-action-filter-abusefilter": "Tipu de cambéu de filtru:",
+ "log-action-filter-abusefilter-create": "Creación de filtru nuevu",
+ "log-action-filter-abusefilter-modify": "Cambéu de filtru",
+ "logentry-abusefilterprivatedetails-access": "$1 {{GENDER:$2|tuvo accesu}} a los detalles privaos de $3",
+ "abusefilterprivatedetails-log-name": "Rexistru d'accesu a detalles privaos d'AbuseFilter",
+ "abusefilter-management": "Xestión del filtru d'abusu",
+ "abusefilter-list": "Tolos filtros",
+ "abusefilter-list-id": "ID del filtru",
+ "abusefilter-list-pattern": "Patrón",
+ "abusefilter-list-status": "Estáu",
+ "abusefilter-list-public": "Descripción pública",
+ "abusefilter-list-consequences": "Consecuencies",
+ "abusefilter-list-visibility": "Visibilidá",
+ "abusefilter-list-hitcount": "Recuentu de visites",
+ "abusefilter-list-edit": "Editar",
+ "abusefilter-list-details": "Detalles",
+ "abusefilter-list-limit": "Númberu per páxina",
+ "abusefilter-list-lastmodified": "Último cambéu",
+ "abusefilter-list-group": "Grupu del filtru",
+ "abusefilter-hidden": "Priváu",
+ "abusefilter-unhidden": "Públicu",
+ "abusefilter-enabled": "Activáu",
+ "abusefilter-deleted": "Desaniciáu",
+ "abusefilter-disabled": "Desactivao",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|activación|activaciones}}",
+ "abusefilter-new": "Crear un nuevu filtru",
+ "abusefilter-return": "Volver a l'alministración del filtru",
+ "abusefilter-status-global": "Global",
+ "abusefilter-list-options": "Opciones",
+ "abusefilter-list-options-deleted": "Filtros borraos:",
+ "abusefilter-list-options-deleted-only": "Amosar sólo los filtros desaniciaos",
+ "abusefilter-list-options-deleted-hide": "Despintar filtros borraos",
+ "abusefilter-list-options-deleted-show": "Incluyir filtros borraos",
+ "abusefilter-list-options-scope": "Amosar los filtros:",
+ "abusefilter-list-options-scope-local": "Sólo regles llocales",
+ "abusefilter-list-options-scope-global": "Sólo regles globales",
+ "abusefilter-list-options-scope-all": "Regles llocales y globales",
+ "abusefilter-list-options-disabled": "Filtros desactivaos:",
+ "abusefilter-list-options-hidedisabled": "Despintar filtros desactivaos",
+ "abusefilter-list-options-searchfield": "Buscar nes regles:",
+ "abusefilter-list-options-searchpattern": "Insertar un patrón",
+ "abusefilter-list-options-searchoptions": "Mou de gueta:",
+ "abusefilter-list-options-search-like": "Consulta simple",
+ "abusefilter-list-options-search-rlike": "Espresión regular",
+ "abusefilter-list-options-search-irlike": "Espresión regular ensin estremar lletres mayúscules",
+ "abusefilter-list-regexerror": "Hebo un fallu cuando se buscaba: error de sintaxis na espresión regular.",
+ "abusefilter-list-options-submit": "Anovar",
+ "abusefilter-tools-text": "Equí hai delles ferramientes que puen ser afayadices pa formular y depurar los filtros d'abusu.",
+ "abusefilter-tools-expr": "Probador d'espresiones",
+ "abusefilter-tools-submitexpr": "Evaluar",
+ "abusefilter-tools-reautoconfirm": "Restaurar l'estáu autoconfirmáu",
+ "abusefilter-tools-reautoconfirm-user": "Usuariu:",
+ "abusefilter-tools-reautoconfirm-submit": "Re-autoconfirmar",
+ "abusefilter-reautoconfirm-none": "{{GENDER:$1|Esi usuariu|Esa usuaria}} nun tuvo l'estáu d'autoconfirmación suspendíu.",
+ "abusefilter-reautoconfirm-notallowed": "Nun tienes permisu pa restaurar l'estáu d'autoconfirmación.",
+ "abusefilter-reautoconfirm-done": "Restauróse l'estáu d'autoconfirmación de la cuenta",
+ "abusefilter-status": "{{PLURAL:$1|De la última aición|De les últimes $1 aiciones}}, $2 ($3%) {{PLURAL:$2|llegó|llegaron}} a condición llende de $4, y $5 ($6%) {{PLURAL:$5|coincidió|coincidieron}} con unu de los filtros actualmente activaos.",
+ "abusefilter-edit": "Editando la peñera d'abusos",
+ "abusefilter-edit-subtitle": "Editando'l filtru $1",
+ "abusefilter-edit-subtitle-new": "Crear un filtru",
+ "abusefilter-edit-oldwarning": "<strong>Tas editando una versión antigua d'esti filtru.\nLes estadístiques citaes son de la versión más nueva del filtru.\nSi guardes los cambios, escribirás enriba de tolos cambios dende la revisión que tas editando.</strong> &bull;\n[[Special:AbuseFilter/history/$2|Volver al historial d'esti filtru]].",
+ "abusefilter-edit-status-label": "Estadístiques:",
+ "abusefilter-edit-status": "De {{PLURAL:$1|la última aición|les $1 últimes aiciones}}, esti filtru coincidió con $2 ($3%).",
+ "abusefilter-edit-status-profile": "De {{PLURAL:$1|la última aición|les $1 últimes aiciones}}, esti filtru coincidió con $2 ($3%).\nDe media, el so tiempu d'execución ye de $4ms, y consume {{PLURAL:$5|una condición|$5 condiciones}} de la llende de condiciones.",
+ "abusefilter-edit-throttled-warning": "'''Atención:''' Esti filtru marcóse automáticamente como dañible. Como midida de seguridá, nun s'executarán les aiciones siguientes ($1). Revisa y [[mw:Extension:AbuseFilter/Conditions|ameyora]] les condiciones pa desaniciar esta torga",
+ "abusefilter-edit-new": "Filtru nuevu",
+ "abusefilter-edit-save": "Guardar el filtru",
+ "abusefilter-edit-id": "ID del filtru:",
+ "abusefilter-edit-switch-editor": "Cambiar d'editor",
+ "abusefilter-edit-description": "Descripción:\n:''(visible de mou públicu)''",
+ "abusefilter-edit-group": "Grupu de filtros:",
+ "abusefilter-edit-flags": "Marques:",
+ "abusefilter-edit-enabled": "Activar esti filtru",
+ "abusefilter-edit-deleted": "Marcar como desaniciáu",
+ "abusefilter-edit-hidden": "Tapecer los detalles d'esti filtru de la vista pública",
+ "abusefilter-edit-global": "Filtru global",
+ "abusefilter-edit-rules": "Condiciones:",
+ "abusefilter-edit-notes": "Notes:",
+ "abusefilter-edit-lastmod": "Últimu cambiu del filtru:",
+ "abusefilter-edit-lastmod-text": "$3 a les $4 por $2",
+ "abusefilter-edit-hitcount": "Activaciones del filtru:",
+ "abusefilter-edit-consequences": "Midíes a tomar cuando salte",
+ "abusefilter-edit-action-warn": "Disparar les aiciones después d'avisar al usuariu",
+ "abusefilter-edit-action-disallow": "Torgar que l'usuariu faiga l'aición en cuestión",
+ "abusefilter-edit-action-blockautopromote": "Revocar l'estáu autoconfirmáu del usuariu",
+ "abusefilter-edit-action-degroup": "Retirar al usuariu de tolos grupos con privilexos",
+ "abusefilter-edit-action-block": "Bloquiar les ediciones del usuariu o direición IP",
+ "abusefilter-edit-action-blocktalk": "Bloquiar al usuariu y/o direición IP la edición na so propia páxina d'alderique",
+ "abusefilter-edit-action-throttle": "Disparar les aiciones sólo si l'usuariu pasa una llende de porcentaxe",
+ "abusefilter-edit-action-rangeblock": "Bloquiar el' respeutivu intervalu d'IP d'orixe del usuariu",
+ "abusefilter-edit-action-tag": "Etiquetar la edición pa revisión posterior",
+ "abusefilter-edit-throttle-count": "Númberu d'aiciones a permitir:",
+ "abusefilter-edit-throttle-period": "Periodu de tiempu:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|segundu|segundos}}",
+ "abusefilter-edit-throttle-groups": "Agrupar la regulación por:\n:''(unu por llinia, combinar con comes)''",
+ "abusefilter-edit-warn-message": "Mensaxe del sistema a usar pal avisu:",
+ "abusefilter-edit-warn-other": "Otru mensaxe",
+ "abusefilter-edit-warn-other-label": "Nome de páxina del otru mensaxe:\n:''(ensin el prefixu MediaWiki)''",
+ "abusefilter-edit-warn-actions": "Aiciones:",
+ "abusefilter-edit-warn-preview": "Vista previa del mensaxe seleicionáu",
+ "abusefilter-edit-warn-edit": "Crear/Editar el mensaxe seleicionáu",
+ "abusefilter-edit-tag-tag": "[[Special:Tags|Etiquetes]] a aplicar (una por llinia):",
+ "abusefilter-edit-block-anon-durations": "Duración del bloquéu pa usuarios anónimos:",
+ "abusefilter-edit-block-user-durations": "Duración del bloquéu pa usuarios rexistraos:",
+ "abusefilter-block-anon": "usuarios anónimos",
+ "abusefilter-block-user": "usuarios rexistraos",
+ "abusefilter-edit-denied": "Nun puedes ver los detalles d'esti filtru, porque tien torgada la vista pública.",
+ "abusefilter-edit-main": "Parámetros del filtru",
+ "abusefilter-edit-done-subtitle": "Filtru editáu",
+ "abusefilter-edit-done": "Guardáronse [[Special:AbuseFilter/history/$1/diff/prev/$2|los tos cambios]] nel [[Special:AbuseFilter/$1|filtru $3]].",
+ "abusefilter-edit-badsyntax": "Hai un error de sintaxis nel filtru qu'especificasti.\nLa salida del analizador foi: <pre>$1</pre>",
+ "abusefilter-edit-restricted": "Nun puedes editar esti filtru, porque contien una o más aiciones restrinxíes.\nPor favor pide a un usuariu con permisu p'amestar aiciones restrinxíes que faiga el cambiu.",
+ "abusefilter-edit-viewhistory": "Ver l'historial d'esti filtru",
+ "abusefilter-edit-history": "Historial:",
+ "abusefilter-edit-check": "Comprobar la sintaxis",
+ "abusefilter-edit-badfilter": "El filtru qu'especificasti nun esiste.",
+ "abusefilter-edit-revert": "Revertir les aiciones feches por esti filtru",
+ "abusefilter-edit-tools": "Ferramientes:",
+ "abusefilter-edit-test-link": "Probar esti filtru coles ediciones recientes",
+ "abusefilter-edit-export": "Esportar esti filtru a otra wiki",
+ "abusefilter-edit-syntaxok": "Nun se deteutaron errores de sintaxis.",
+ "abusefilter-edit-syntaxerr": "Deteutóse un error de sintaxis: $1",
+ "abusefilter-edit-bad-tags": "Una o más de les etiquetes qu'especificasti nun ye válida.\nLes etiquetes tendríen de ser curties, nun pueden contener caráuteres especiales y nun pueden tar acutaes pa otru software. Tenta escoyer otru nome pa la etiqueta.",
+ "abusefilter-edit-notallowed": "Nun tienes permisu pa crear o editar filtros d'abusos",
+ "abusefilter-edit-notallowed-global": "Nun tienes permisu pa crear o editar filtros d'abusos globales",
+ "abusefilter-edit-notallowed-global-custom-msg": "Nun se permiten los mensaxes personalizaos pa filtros globales",
+ "abusefilter-edit-builder-select": "Seleiciona una opción p'amestala nel cursor",
+ "abusefilter-edit-builder-group-op-arithmetic": "Operadores aritméticos",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Suma (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Resta (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Multiplicación (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "División (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Módulu (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Potencia (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Operadores de comparancia",
+ "abusefilter-edit-builder-op-comparison-equal": "Igual a (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Non igual a (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "Menor que (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Mayor que (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Menor o igual que (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Mayor o igual que (>=)",
+ "abusefilter-edit-builder-group-op-bool": "Operadores booleanos",
+ "abusefilter-edit-builder-op-bool-not": "Non (!)",
+ "abusefilter-edit-builder-op-bool-and": "Y (&)",
+ "abusefilter-edit-builder-op-bool-or": "O (|)",
+ "abusefilter-edit-builder-group-misc": "Variaos",
+ "abusefilter-edit-builder-misc-in": "conteníu na cadena (in)",
+ "abusefilter-edit-builder-misc-like": "Coincide col patrón (like)",
+ "abusefilter-edit-builder-misc-rlike": "Coincide con espresión regular (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "Coincide cola espresión regular, ensin distinguir mayúscules y minúscules (irlike)",
+ "abusefilter-edit-builder-misc-contains": "La cadena izquierda contien la cadena drecha (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "Cadena lliteral (\"\")",
+ "abusefilter-edit-builder-misc-tern": "Operador ternariu (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "Condicional (if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "Funciones",
+ "abusefilter-edit-builder-funcs-length": "Llonxitú de la cadena (length)",
+ "abusefilter-edit-builder-funcs-lcase": "A minúscules (lcase)",
+ "abusefilter-edit-builder-funcs-ucase": "A mayúscules (ucase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "Normalizar los caráuteres confusos (ccnorm)",
+ "abusefilter-edit-builder-funcs-ccnorm-contains-any": "Normalizar y buscar una cadena pa distintes subcadenes en mou OR (ccnorm_contains_any)",
+ "abusefilter-edit-builder-funcs-ccnorm-contains-all": "Normalizar y buscar una cadena pa distintes subcadenes en mou AND (ccnorm_contains_all)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "Desaniciar los caráuteres dobles (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "Caráuteres especiales / caráuteres totales (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "Normalizar (norm)",
+ "abusefilter-edit-builder-funcs-count": "Númberu de veces que la cadena X apaez na cadena Y (count)",
+ "abusefilter-edit-builder-funcs-rcount": "Númberu de veces que la espresión regular X apaez na cadena Y (rcount)",
+ "abusefilter-edit-builder-funcs-get_matches": "Matriz de correspondencies d'espresiones regulares nun testu pa cada grupu d'atropamientu (get_matches)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "Desaniciar espaciu en blanco (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "Desaniciar los caráuteres especiales (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "¿Ta la IP nel rangu? (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "Buscar la cadena pa múltiples subcadenes en mou OR (contains_any)",
+ "abusefilter-edit-builder-funcs-contains-all": "Buscar la cadena pa múltiples subcadenes en mou AND (contains_all)",
+ "abusefilter-edit-builder-funcs-substr": "Subcadena (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "Posición de la subcadena na cadena (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "Trocar subcadena por cadena (str_replace)",
+ "abusefilter-edit-builder-funcs-rescape": "Cadena d'escape como lliteral en espresión regular (rescape)",
+ "abusefilter-edit-builder-funcs-set_var": "Definir variable (set_var)",
+ "abusefilter-edit-builder-group-vars": "Variables",
+ "abusefilter-edit-builder-vars-accountname": "Nome de la cuenta (al crear la cuenta)",
+ "abusefilter-edit-builder-vars-timestamp": "Hora Unix del cambiu",
+ "abusefilter-edit-builder-vars-timestamp-expanded": "Marca de tiempu del rexistru",
+ "abusefilter-edit-builder-vars-action": "Aición",
+ "abusefilter-edit-builder-vars-addedlines": "Llinies amestaes na edición",
+ "abusefilter-edit-builder-vars-delta": "Cambiu de tamañu na edición",
+ "abusefilter-edit-builder-vars-diff": "Diff unificáu de los cambios fechos pola edición",
+ "abusefilter-edit-builder-vars-newsize": "Nuevu tamañu de la páxina",
+ "abusefilter-edit-builder-vars-oldsize": "Antiguu tamañu de la páxina",
+ "abusefilter-edit-builder-vars-old-content-model": "Antiguu modelu de conteníu",
+ "abusefilter-edit-builder-vars-new-content-model": "Nuevu modelu de conteníu",
+ "abusefilter-edit-builder-vars-removedlines": "Llinies desaniciaes na edición",
+ "abusefilter-edit-builder-vars-summary": "Resumen d'edición/motivu",
+ "abusefilter-edit-builder-vars-article-id": "ID de la páxina",
+ "abusefilter-edit-builder-vars-article-ns": "Espaciu de nomes de la páxina",
+ "abusefilter-edit-builder-vars-article-text": "Títulu de la páxina (ensin l'espaciu de nomes)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Títulu completu de la páxina",
+ "abusefilter-edit-builder-vars-article-views": "Visites a la páxina",
+ "abusefilter-edit-builder-vars-movedfrom-id": "ID de la páxina orixinal a treslladar",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "Espaciu de nomes de la páxina orixinal a treslladar",
+ "abusefilter-edit-builder-vars-movedfrom-text": "Títulu de la páxina orixinal a treslladar",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "Títulu completu de la páxina orixinal a treslladar",
+ "abusefilter-edit-builder-vars-movedto-id": "ID de la páxina destín del treslláu",
+ "abusefilter-edit-builder-vars-movedto-ns": "Espaciu de nomes de la páxina destín del treslláu",
+ "abusefilter-edit-builder-vars-movedto-text": "Títulu de la páxina destín del treslláu",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "Títulu completu de la páxina destín del treslláu",
+ "abusefilter-edit-builder-vars-user-editcount": "Cuenta d'ediciones del usuariu",
+ "abusefilter-edit-builder-vars-user-age": "Antigüedá de la cuenta del usuariu",
+ "abusefilter-edit-builder-vars-user-name": "Nome de la cuenta del usuariu",
+ "abusefilter-edit-builder-vars-user-groups": "Grupos (incluyendo los implícitos) nos que ta l'usuariu",
+ "abusefilter-edit-builder-vars-user-rights": "Permisos que tien un usuariu",
+ "abusefilter-edit-builder-vars-user-blocked": "Si l'usuariu ta bloquiáu",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "Data de confirmación de la direición de corréu electrónicu",
+ "abusefilter-edit-builder-vars-recent-contributors": "Últimos diez usuarios en collaboraron na páxina",
+ "abusefilter-edit-builder-vars-first-contributor": "Primer usuariu que collaboró na páxina",
+ "abusefilter-edit-builder-vars-all-links": "Tolos enllaces esternos del nuevu testu",
+ "abusefilter-edit-builder-vars-added-links": "Tolos enllaces esternos amestaos na edición",
+ "abusefilter-edit-builder-vars-removed-links": "Tolos enllaces esternos desaniciaos na edición",
+ "abusefilter-edit-builder-vars-old-text": "Testu wiki antiguu de la páxina, antes de la edición",
+ "abusefilter-edit-builder-vars-new-text": "Testu wiki nuevu de la páxina, dempués de la edición",
+ "abusefilter-edit-builder-vars-new-pst": "Nuevu testu wiki de la páxina, tresformáu por pre-guardar",
+ "abusefilter-edit-builder-vars-diff-pst": "Diff unificáu de los cambios fechos por edición, tresformaos por pre-guardáu",
+ "abusefilter-edit-builder-vars-addedlines-pst": "Llinies amestaes na edición, tresformaes por pre-guardáu",
+ "abusefilter-edit-builder-vars-new-text-stripped": "Testu nuevu de la páxina, ensin dengún formatu",
+ "abusefilter-edit-builder-vars-new-html": "Fonte HTML analizada de la nueva revisión",
+ "abusefilter-edit-builder-vars-restrictions-edit": "Nivel de protección d'edición de la páxina",
+ "abusefilter-edit-builder-vars-restrictions-move": "Nivel de protección de treslláu de la páxina",
+ "abusefilter-edit-builder-vars-restrictions-create": "Protección de creación de la páxina",
+ "abusefilter-edit-builder-vars-restrictions-upload": "Protección de carga del ficheru",
+ "abusefilter-edit-builder-vars-old-text-stripped": "Testu antiguu de la páxina, ensin dengún formatu",
+ "abusefilter-edit-builder-vars-old-links": "Enllaces de la páxina, enantes de la edición",
+ "abusefilter-edit-builder-vars-old-html": "Testu wiki antiguu de la páxina, pasáu a HTML",
+ "abusefilter-edit-builder-vars-minor-edit": "Si la edición ta marcada como menor o non",
+ "abusefilter-edit-builder-vars-file-sha1": "Hash SHA1 del conteníu del ficheru",
+ "abusefilter-edit-builder-vars-file-size": "Tamañu del ficheru en bytes",
+ "abusefilter-edit-builder-vars-file-mime": "Tipu MIME del ficheru",
+ "abusefilter-edit-builder-vars-file-mediatype": "Tipu de multimedia del ficheru",
+ "abusefilter-edit-builder-vars-file-width": "Anchor del ficheru en pixels",
+ "abusefilter-edit-builder-vars-file-height": "Altor del ficheru en pixels",
+ "abusefilter-edit-builder-vars-file-bits-per-channel": "Bits per canal de color del ficheru",
+ "abusefilter-edit-block-options": "Opciones de bloquéu:",
+ "abusefilter-filter-log": "Cambios de recién nos filtros",
+ "abusefilter-history": "Historial de cambios de la peñera d'abusos #$1",
+ "abusefilter-history-foruser": "Cambios de $1",
+ "abusefilter-history-hidden": "Tapecío",
+ "abusefilter-history-enabled": "Activáu",
+ "abusefilter-history-global": "Global",
+ "abusefilter-history-timestamp": "Data",
+ "abusefilter-history-user": "Usuariu",
+ "abusefilter-history-public": "Descripción pública del filtru",
+ "abusefilter-history-flags": "Marques",
+ "abusefilter-history-filter": "Regla del filtru",
+ "abusefilter-history-comments": "Comentarios",
+ "abusefilter-history-actions": "Aiciones",
+ "abusefilter-history-backedit": "Volver al editor de filtros",
+ "abusefilter-history-deleted": "Desaniciáu",
+ "abusefilter-history-filterid": "Filtru",
+ "abusefilter-history-select-legend": "Afinar la gueta",
+ "abusefilter-history-select-user": "Usuariu:",
+ "abusefilter-history-select-filter": "ID del filtru:",
+ "abusefilter-history-select-submit": "Afinar",
+ "abusefilter-history-diff": "Cambios",
+ "abusefilter-history-error-hidden": "El filtru que pidisti ta tapecíu y nun puedes ver el so historial.",
+ "abusefilter-exception-unexpectedatend": "\"$2\" inesperáu nel caráuter $1.",
+ "abusefilter-exception-expectednotfound": "Esperabase un $2 nel caráuter $1, y nun s'alcontró (en cambio alcontróse $3 $4).",
+ "abusefilter-exception-unrecognisedkeyword": "Pallabra clave non reconocida $2 nel caráuter $1.",
+ "abusefilter-exception-unexpectedtoken": "Pase \"$3\" inesperáu (de tipu $2) nel caráuter $1.",
+ "abusefilter-exception-unclosedstring": "Cadena de caráuteres ensin zarrar que principia nel caráuter $1.",
+ "abusefilter-exception-invalidoperator": "Operador inválidu \"$2\" nel caráuter $1.",
+ "abusefilter-exception-unrecognisedtoken": "Pase \"$2\" non reconocíu nel caráuter $1.",
+ "abusefilter-exception-noparams": "Nun se dieron parámetros a la función \"$2\" nel caráuter $1.",
+ "abusefilter-exception-dividebyzero": "Intentu illegal de dividir $2 por cero nel caráuter $1.",
+ "abusefilter-exception-unrecognisedvar": "Variable $2 non reconocida nel caráuter $1.",
+ "abusefilter-exception-notenoughargs": "Non hai argumentos abondo pa la función $2 llamada nel caráuter $1.\n\t{{PLURAL:$3|Esperabase un argumentu|Esperabense $3 argumentos}}, tienense $4",
+ "abusefilter-exception-regexfailure": "Error na espresión regular \"$3\" nel caráuter $1: \"$2\"",
+ "abusefilter-exception-overridebuiltin": "Anulación illegal de la variable interna \"$2\" nel caráuter $1.",
+ "abusefilter-exception-outofbounds": "Solicitando l'elementu inesistente $2 de la llista (tamañu de la llista = $3) nel caráuter $1.",
+ "abusefilter-exception-notlist": "Solicitando un elementu de matriz d'una non-matriz nel caráuter $1.",
+ "abusefilter-action-tag": "Etiqueta",
+ "abusefilter-action-throttle": "Frenar",
+ "abusefilter-action-warn": "Avisar",
+ "abusefilter-action-blockautopromote": "Bloquiar auto-promoción",
+ "abusefilter-action-block": "Bloquiar",
+ "abusefilter-action-degroup": "Desaniciar de grupos",
+ "abusefilter-action-rangeblock": "Bloquiar rangu",
+ "abusefilter-action-disallow": "Nun permitir",
+ "abusefilter-revert-title": "Tornar tolos cambios del filtru $1",
+ "abusefilter-revert-intro": "Esti formulariu permite tornar tolos cambios fechos pola peñera d'abusos por aciu del filtru $1.\nPor favor ten procuru al usar esta ferramienta.",
+ "abusefilter-revert-preview-item": "$1: $2 {{GENDER:$7|fexo}} una aición $3 en $4. Aiciones a revertir: $5 ($6)",
+ "abusefilter-revert-search-legend": "Seleiciona les aiciones de la peñera d'abusos a tornar",
+ "abusefilter-revert-periodstart": "Principiu del periodu:",
+ "abusefilter-revert-periodend": "Fin del periodu:",
+ "abusefilter-revert-search": "Seleicionar aiciones",
+ "abusefilter-revert-filter": "ID del filtru:",
+ "abusefilter-revert-preview-intro": "Más abaxo tan les aiciones feches pola peñera d'abusos que se tornarán con esta aición.\nPor favor, compruébales con procuru y primi «{{int:abusefilter-revert-confirm}}» pa confirmar la seleición.",
+ "abusefilter-revert-confirm-legend": "Confirmar la reversión",
+ "abusefilter-revert-confirm": "Confirmar",
+ "abusefilter-revert-success": "Tornasti toles aiciones feches pola peñera d'abusos xeneraes pol [[Special:AbuseFilter/$1|filtru $2]].",
+ "abusefilter-revert-reason": "Torna automática de toles aiciones feches pola peñera d'abusos debíes al filtru $1.\nMotivu dau: $2",
+ "abusefilter-revert-reasonfield": "Motivu:",
+ "abusefilter-test": "Probar un filtru coles ediciones anteriores",
+ "abusefilter-test-intro": "Esta páxina permite probar el filtru escritu nel cuadru d'abaxo {{PLURAL:$1|col últimu cambiu|colos últimos $1 cambios}}.\nPa cargar un filtru esistiente, escribi la ID del filtru nel cuadru que ta abaxo del cuadru d'edición de testu, y primi nel botón \"{{int:abusefilter-test-load}}\".",
+ "abusefilter-test-legend": "Prueba de filtru",
+ "abusefilter-test-load-filter": "Cargar el filtru con ID:",
+ "abusefilter-test-submit": "Probar",
+ "abusefilter-test-load": "Cargar",
+ "abusefilter-test-user": "Cambios del usuariu:",
+ "abusefilter-test-period-start": "Cambios fechos dempués de:",
+ "abusefilter-test-period-end": "Cambios fechos antes de:",
+ "abusefilter-test-page": "Cambios fechos na páxina:",
+ "abusefilter-test-shownegative": "Ver los cambios que nun casen col filtru",
+ "abusefilter-test-syntaxerr": "El filtru qu'escribisti contenía un error de sintaxis.\nPues recibir una esplicación completa calcando nel botón \"{{int:abusefilter-edit-check}}\".",
+ "abusefilter-test-badtitle": "El títulu de páxina qu'escribisti ye inválidu. Pué contener unu o más caráuteres que nun pueden usase nos títulos.",
+ "abusefilter-changeslist-examine": "esaminar",
+ "abusefilter-examine": "Esaminar los cambios individuales",
+ "abusefilter-examine-intro": "Esta páxina permite-y esaminar les variables xeneraes pola Peñera d'abusos pa un cambiu individual, y probalu escontra los filtros.",
+ "abusefilter-examine-legend": "Seleicionar cambios",
+ "abusefilter-examine-diff": "URL de les diferencies:",
+ "abusefilter-examine-user": "Usuariu:",
+ "abusefilter-examine-title": "Títulu de la páxina:",
+ "abusefilter-examine-submit": "Guetar",
+ "abusefilter-examine-vars": "Variables xeneraes pa esti cambiu",
+ "abusefilter-examine-test": "Probar esti cambiu escontra un filtru",
+ "abusefilter-examine-test-button": "Probar el filtru",
+ "abusefilter-examine-match": "El filtru casó con esti cambiu.",
+ "abusefilter-examine-nomatch": "El filtru nun casó con esti cambiu.",
+ "abusefilter-examine-syntaxerror": "El filtru tien una sintaxis inválida",
+ "abusefilter-examine-notfound": "El cambiu que solicitó nun pudo alcontrase.",
+ "abusefilter-examine-incompatible": "El cambiu que solicitasti nun tien encontu de la Peñera d'abusos",
+ "abusefilter-examine-noresults": "Nun s'alcontraron resultaos pa los parámetros de gueta que disti.",
+ "abusefilter-topnav": "'''Navegación de la Peñera d'abusos'''",
+ "abusefilter-topnav-home": "Entamu",
+ "abusefilter-topnav-test": "Conxuntu de pruebes",
+ "abusefilter-topnav-examine": "Esaminar les ediciones pasaes",
+ "abusefilter-topnav-log": "Rexistru d'abusos",
+ "abusefilter-topnav-tools": "Ferramientes de depuración",
+ "abusefilter-topnav-import": "Importar un filtru",
+ "abusefilter-log-name": "Rexistru de la peñera d'abusos",
+ "abusefilter-log-header": "Esti rexistru amuesa un resume de los cambios fechos nos filtros.\nPara ver los detalles completos, visita [[Special:AbuseFilter/history|la llista]] de los cambios recién fechos nos filtros.",
+ "abusefilter-logentry-create": "$1 {{GENDER:$2|creó}}'l $4 ($5)",
+ "abusefilter-logentry-modify": "$1 {{GENDER:$2|cambió}} el $4 ($5)",
+ "abusefilter-log-noresults": "Nun hai resultaos",
+ "abusefilter-diff-title": "Diferencies ente versiones",
+ "abusefilter-diff-item": "Elementu",
+ "abusefilter-diff-version": "Versión del $1 fecha {{GENDER:$3|por}} $2",
+ "abusefilter-diff-info": "Información básica",
+ "abusefilter-diff-pattern": "Condiciones del filtru",
+ "abusefilter-diff-invalid": "Nun pueden baxase les versiones solicitaes",
+ "abusefilter-diff-backhistory": "Volver al historial del filtru",
+ "abusefilter-diff-prev": "Cambiu más antiguu",
+ "abusefilter-diff-next": "Cambiu más nuevu",
+ "abusefilter-import-intro": "Pues emplegar esta interfaz pa importar filtros d'otres wikis.\nNa wiki d'orixe, primi \"{{int:abusefilter-edit-export}}\" baxo \"{{int:abusefilter-edit-tools}}\" na interfaz d'edición.\nCopia del cuadru de testu qu'apaez y pégalo nesti cuadru de testu, y darréu calca \"{{int:abusefilter-import-submit}}\".",
+ "abusefilter-import-submit": "Importar datos",
+ "abusefilter-group-default": "Predetermináu",
+ "abusefilter-http-error": "Hebo un error HTTP: $1.",
+ "abusefilter-view-private-submit": "Ver detalles privaos",
+ "abusefilter-view-private": "Ver detalles privaos",
+ "abusefilter-view-private-reason": "Motivu del accesu a los detalles privaos:",
+ "abusefilter-log-details-id": "ID del rexistru",
+ "abusefilter-invalid-request": "¡Solicitú inválida! Tienes de facer l'accesu a los detalles privaos del rexistru col formulariu [[Special:AbuseLog/$1]] y dar un motivu.",
+ "abusefilter-invalid-request-noid": "¡Solicitú inválida! Tienes de facer l'accesu a los detalles privaos del rexistru col formulariu de la páxina de detalles del rexistru d'abusos y dar un motivu.",
+ "log-description-abusefilterprivatedetails": "Esti rexistru amuesa una llista de les veces qu'un usuariu tuvo accesu a los detalles privaos d'un rexistru d'abusos.",
+ "abusefilter-noreason": "Atención: Pa ver los detalles privaos d'esti rexistru, tienes de dar un motivu.",
+ "abusefilter-log-ip-not-available": "Non disponible",
+ "tag-abusefilter-condition-limit": "aportóse a la llende de condición",
+ "tag-abusefilter-condition-limit-description": "Ediciones o otres actividaes que nun pudieron comprobase por tolos [[Special:AbuseFilter|filtros d'abusos]] activos ([[mw:Extension:AbuseFilter/Conditions|ayuda]]).",
+ "apihelp-abusefiltercheckmatch-description": "Revisa pa ver si un AbuseFilter casa con un conxuntu de variables, socesu d'editor rexistráu d'AbuseFilter.\n\nNecesítase vars, rcid o logid, anque sólo pue usase unu.",
+ "apihelp-abusefiltercheckmatch-summary": "Comprobar si un filtru d'abusos casa con un conxuntu de variables, o socesu d'AbuseFilter rexistráu nel editor.",
+ "apihelp-abusefiltercheckmatch-extended-description": "Ríquese vars, rcid o logid, pero sólo pué usase unu d'ellos.",
+ "apihelp-abusefiltercheckmatch-param-filter": "El testu completu del filtru a comprobar pa una coincidencia.",
+ "apihelp-abusefiltercheckmatch-param-vars": "Matriz de variables codificaes en JSON escontra la que comprobar.",
+ "apihelp-abusefiltercheckmatch-param-rcid": "ID del cambiu reciente nel que comprobar.",
+ "apihelp-abusefiltercheckmatch-param-logid": "ID del rexistru de la peñera d'abusos nel que comprobar o filtro.",
+ "apihelp-abusefiltercheckmatch-example-1": "Comprobar si'l cambiu reciente cola ID 15 concuaya con un filtru simple",
+ "apihelp-abusefilterchecksyntax-description": "Comprobar la sintaxis d'un filtru de la Peñera d'abusos.",
+ "apihelp-abusefilterchecksyntax-summary": "Comprobar la sintaxis d'un filtru de la Peñera d'abusos.",
+ "apihelp-abusefilterchecksyntax-param-filter": "El testu completu del filtru nel que comprobar la sintaxis.",
+ "apihelp-abusefilterchecksyntax-example-1": "Comprobar la sintaxis d'un filtru válidu",
+ "apihelp-abusefilterchecksyntax-example-2": "Comprobar la sintaxis d'un filtru inválidu",
+ "apihelp-abusefilterevalexpression-description": "Evaluar una espresión de la Peñera d'abusos.",
+ "apihelp-abusefilterevalexpression-summary": "Evaluar una espresión de la Peñera d'abusos.",
+ "apihelp-abusefilterevalexpression-param-expression": "La espresión a evaluar.",
+ "apihelp-abusefilterevalexpression-example-1": "Evaluar una espresión simple",
+ "apihelp-abusefilterunblockautopromote-description": "Desbloquia a un usuariu de recibir autopromociones como consecuencia de la peñera d'abusos.",
+ "apihelp-abusefilterunblockautopromote-summary": "Desbloquia a un usuariu de recibir autopromociones como consecuencia de la peñera d'abusos.",
+ "apihelp-abusefilterunblockautopromote-param-user": "Nome del usuariu que vas desbloquiar.",
+ "apihelp-abusefilterunblockautopromote-example-1": "Quitar el bloquéu por auto-promoción de [[User:Example]]",
+ "apihelp-query+abusefilters-description": "Amosar detalles de los filtros d'abusos.",
+ "apihelp-query+abusefilters-summary": "Amosar detalles de los filtros d'abusos.",
+ "apihelp-query+abusefilters-param-startid": "ID del filtru dende'l que principiar la enumeración.",
+ "apihelp-query+abusefilters-param-endid": "ID del filtru nel que finar la enumeración.",
+ "apihelp-query+abusefilters-param-show": "Amosar sólo los filtros que cumplan con estos criterios.",
+ "apihelp-query+abusefilters-param-limit": "El númberu máximu de filtros a poner na llista.",
+ "apihelp-query+abusefilters-param-prop": "Qué propiedaes algamar.",
+ "apihelp-query+abusefilters-example-1": "Llista de los filtros públicos activaos",
+ "apihelp-query+abusefilters-example-2": "Amosar dellos detalles de los filtros",
+ "apihelp-query+abuselog-description": "Amostrar los socesos que deteutó unu de los filtros antiabusu.",
+ "apihelp-query+abuselog-summary": "Amostrar los socesos que detectó unu de los filtros antiabusu.",
+ "apihelp-query+abuselog-param-start": "La marca horaria dende la que principiar la enumeración.",
+ "apihelp-query+abuselog-param-end": "La marca horaria na que finar la enumeración.",
+ "apihelp-query+abuselog-param-user": "Amosar solo les entraes feches por un determináu usuariu o IP.",
+ "apihelp-query+abuselog-param-title": "Amosar solo les entraes correspondientes a una páxina determinada.",
+ "apihelp-query+abuselog-param-filter": "Amostrar solo les entraes recoyíes por un identificador de filtru determináu.",
+ "apihelp-query+abuselog-param-limit": "La cantidá máxima d'entraes qu'apaecerán.",
+ "apihelp-query+abuselog-param-prop": "Qué propiedaes algamar.",
+ "apihelp-query+abuselog-param-wiki": "Wiki de la qu'amosar les detecciones.",
+ "apihelp-query+abuselog-example-1": "Amosar les entraes recientes del rexistru",
+ "apihelp-query+abuselog-example-2": "Amosar les entraes recientes del rexistru pa la [[API]]",
+ "apierror-abusefilter-canttest": "Nun tienes permisu pa probar peñeres d'abusu.",
+ "apierror-abusefilter-cantcheck": "Nun tienes permisu pa comprobar la sintaxis de les peñeres d'abusu.",
+ "apierror-abusefilter-nosuchlogid": "Nun hai nenguna entrada nos rexistros de les peñeres d'abusu con id $1.",
+ "apierror-abusefilter-badsyntax": "El filtru tien una sintaxis inválida."
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/atj.json b/www/wiki/extensions/AbuseFilter/i18n/atj.json
new file mode 100644
index 00000000..2724f231
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/atj.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "Benoit Rochon"
+ ]
+ },
+ "abusefilter-log-search-submit": "Nantona",
+ "abusefilter-deleted": "Nesitc wepina",
+ "abusefilter-disabled": "Manisinaha",
+ "abusefilter-history-deleted": "Nesitc wepina",
+ "abusefilter-examine-submit": "Nantona",
+ "abusefilter-topnav-home": "Otitikowin"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/av.json b/www/wiki/extensions/AbuseFilter/i18n/av.json
new file mode 100644
index 00000000..067a1df0
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/av.json
@@ -0,0 +1,12 @@
+{
+ "@metadata": {
+ "authors": [
+ "Умар",
+ "Аль-Гимравий"
+ ]
+ },
+ "abusefilter-log-hide-reason": "ГӀилла:",
+ "abusefilter-list-edit": "Хисизабизе",
+ "abusefilter-edit-action-block": "ГІахьалчи яги IP-адрес блокалда лъезе",
+ "abusefilter-revert-reasonfield": "ГІилла:"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/awa.json b/www/wiki/extensions/AbuseFilter/i18n/awa.json
new file mode 100644
index 00000000..837d5122
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/awa.json
@@ -0,0 +1,111 @@
+{
+ "@metadata": {
+ "authors": [
+ "1AnuraagPandey"
+ ]
+ },
+ "abusefilter-desc": "संपादनों पर स्वतः शोध प्रणाली का प्रयोग लागू करता है",
+ "abusefilter": "दुरुपयोग फ़िल्टर विन्यास",
+ "abuselog": "दुरुपयोग लॉग",
+ "abusefilter-blocker": "दुरुपयोग फ़िल्टर",
+ "abusefilter-blockreason": "दुरुपयोग फ़िल्टर द्वारा स्वचालित रूप से अवरुद्ध।\nपकड़य वाले नियम कय संक्षिप्त विवरण है: $1",
+ "abusefilter-degroupreason": "सदस्य अधिकार दुरुपयोग फ़िल्टर द्वारा स्वचालित रूप से वापिस लई लिहा हैं।\nपकड़य वाले नियम कय संक्षिप्त विवरण है: $1",
+ "abusefilter-accountreserved": "ई सदस्य नाँव दुरुपयोग फ़िल्टर कय उपयोग कय लिए आरक्षित है।",
+ "right-abusefilter-modify": "दुरुपयोग फ़िल्टर संशोधित करा जाय",
+ "right-abusefilter-view": "दुरुपयोग फ़िल्टर देखा जाय",
+ "right-abusefilter-log": "दुरुपयोग लॉग देखा जाय",
+ "right-abusefilter-log-detail": "दुरुपयोग लॉग कय प्रविष्टि विस्तार में देखा जाय",
+ "right-abusefilter-private": "दुरुपयोग लॉग में निजी डेटा देखा जाय",
+ "right-abusefilter-modify-restricted": "दुरुपयोग फ़िल्टर कय प्रतिबन्धित काम सहित सम्पादित करा जाय",
+ "right-abusefilter-revert": "किसी एक दिए गए दुरुपयोग फ़िल्टर द्वारा किये सभी परिवर्तनों को वापिस लें",
+ "right-abusefilter-view-private": "वो दुरुपयोग फ़िल्टर देखें जिन्हें निजी चिन्हित किया गया है",
+ "right-abusefilter-log-private": "निजी फ़िल्टरन् कय लॉग प्रविष्टि देखा जाय",
+ "right-abusefilter-hide-log": "दुरुपयोग लॉग में प्रविष्टि लुकुआवा जाय",
+ "right-abusefilter-hidden-log": "लुकुआवल दुरुपयोग लॉग प्रविष्टि देखा जाय",
+ "right-abusefilter-modify-global": "वैश्विक दुरुपयोग फ़िल्टर बनावा जाय या संशोधित करा जाय",
+ "action-abusefilter-modify": "दुरुपयोग फ़िल्टर संशोधित करा जाय",
+ "action-abusefilter-view": "दुरुपयोग फ़िल्टर देखा जाय",
+ "action-abusefilter-log": "दुरुपयोग लॉग देखा जाय",
+ "action-abusefilter-log-detail": "दुरुपयोग लॉग कय प्रविष्टि विस्तार में देखा जाय",
+ "action-abusefilter-private": "दुरुपयोग लॉग में निजी डेटा देखा जाय",
+ "action-abusefilter-modify-restricted": "दुरुपयोग फ़िल्टर कय प्रतिबन्धित काम सहित सम्पादित करा जाय",
+ "action-abusefilter-revert": "किसी एक दिए गए दुरुपयोग फ़िल्टर द्वारा किये सभी परिवर्तनों को वापिस लें",
+ "action-abusefilter-view-private": "वो दुरुपयोग फ़िल्टर देखें जिन्हें निजी चिन्हित किया गया है",
+ "abusefilter-log": "दुरुपयोग फ़िल्टर लॉग",
+ "abusefilter-log-summary": "ई लॉग फ़िल्टरन् द्वारा पकड़ान् कुल काम कय सूची देखावत है।",
+ "abusefilter-log-search": "दुरुपयोग लॉग खोज",
+ "abusefilter-log-search-user": "सदस्य:",
+ "abusefilter-log-search-filter": "फ़िल्टर IDs (पाइप कय साथे अलग):",
+ "abusefilter-log-search-title": "शीर्षक:",
+ "abusefilter-log-search-wiki": "विकी:",
+ "abusefilter-log-search-submit": "खोज",
+ "abusefilter-log-detailedentry-global": "वैश्विक फ़िल्टर $1",
+ "abusefilter-log-detailedentry-local": "फ़िल्टर $1",
+ "abusefilter-log-detailslink": "विस्तृत विवरण",
+ "abusefilter-log-diff": "अंतर",
+ "abusefilter-log-hidelink": "दृश्यता समयोजित करा जाय",
+ "abusefilter-log-details-legend": "लॉग प्रविष्टि $1 कय लिए विवरण",
+ "abusefilter-log-details-var": "प्राचल",
+ "abusefilter-log-details-val": "मूल्य",
+ "abusefilter-log-details-vars": "काम कय प्राचल",
+ "abusefilter-log-details-private": "निजी डेटा",
+ "abusefilter-log-details-ip": "स्रोत आइ॰पी ठहर",
+ "abusefilter-log-noactions": "केहु नाई",
+ "abusefilter-log-details-diff": "सम्पादन में करल़ बदलाव",
+ "abusefilter-log-linkoncontribs": "दुरुपयोग लॉग",
+ "abusefilter-log-linkoncontribs-text": "इ सदस्य कय लिए दुरुपयोग लॉग",
+ "abusefilter-log-hidden": "(प्रविष्टि लुकुआवा है)",
+ "abusefilter-log-hide-legend": "लॉग प्रविष्टि लुकुआवा जाय",
+ "abusefilter-log-hide-id": "लॉग प्रविष्टि आइ॰डी:",
+ "abusefilter-log-hide-reason": "कारण:",
+ "abusefilter-management": "दुरुपयोग फ़िल्टर प्रबंधन",
+ "abusefilter-list": "कुल फ़िल्टर",
+ "abusefilter-list-id": "फ़िल्टर आइ॰डी",
+ "abusefilter-list-status": "स्थिति",
+ "abusefilter-list-public": "सार्वजनिक विवरण",
+ "abusefilter-list-consequences": "परिणाम",
+ "abusefilter-list-visibility": "दृष्टता",
+ "abusefilter-list-hitcount": "हिट गिनती",
+ "abusefilter-list-edit": "सम्पादन करा जाय",
+ "abusefilter-list-details": "विवरण",
+ "abusefilter-list-limit": "प्रति पन्ना संख्या:",
+ "abusefilter-list-lastmodified": "पिछला संशोधन",
+ "abusefilter-list-group": "फ़िल्टर समूह",
+ "abusefilter-hidden": "निजी",
+ "abusefilter-unhidden": "सार्वजनिक",
+ "abusefilter-enabled": "सक्षम",
+ "abusefilter-deleted": "मेटावल",
+ "abusefilter-disabled": "अक्षम करा है",
+ "abusefilter-new": "नँवा फ़िल्टर बनावा जाय",
+ "abusefilter-return": "फ़िल्टर प्रबंधन पे लौटा जाय",
+ "abusefilter-status-global": "वैश्विक",
+ "abusefilter-list-options": "विकल्प",
+ "abusefilter-list-options-deleted": "हटावल फ़िल्टर:",
+ "abusefilter-list-options-deleted-only": "खाली हटावल फ़िल्टर देखावा जाअ",
+ "abusefilter-list-options-deleted-hide": "हटावल फ़िल्टर लुकुआवा जाय",
+ "abusefilter-list-options-deleted-show": "हटावल फ़िल्टर शामिल करा जाय",
+ "abusefilter-list-options-scope": "इ श्रेणी से फ़िल्टर देखावा जाय:",
+ "abusefilter-list-options-scope-local": "स्थानीय विकि",
+ "abusefilter-list-options-scope-global": "वैश्विक नियम",
+ "abusefilter-list-options-disabled": "अक्षम करल फ़िल्टर:",
+ "abusefilter-list-options-hidedisabled": "अक्षम करल फ़िल्टर लुकुआवा जाय",
+ "abusefilter-list-options-submit": "अपडेट",
+ "abusefilter-tools-expr": "अभिव्यक्ति परीक्षक",
+ "abusefilter-tools-submitexpr": "जाँचा जाय",
+ "abusefilter-tools-reautoconfirm-user": "सदस्य:",
+ "abusefilter-edit": "दुरुपयोग फ़िल्टर सम्पादन",
+ "abusefilter-edit-subtitle": "फ़िल्टर $1 सम्पादन",
+ "abusefilter-edit-subtitle-new": "फ़िल्टर बनावा जाय",
+ "abusefilter-edit-status-label": "आँकड़ा:",
+ "abusefilter-edit-new": "नँवा फ़िल्टर",
+ "abusefilter-edit-save": "फ़िल्टर सहेजा जाय",
+ "abusefilter-edit-id": "फ़िल्टर आइ॰डी",
+ "abusefilter-edit-description": "विवरण:\n:''(सार्वजनिक)''",
+ "abusefilter-edit-group": "फ़िल्टर समूह",
+ "abusefilter-edit-flags": "झंडा:",
+ "abusefilter-edit-global": "वैश्विक फ़िल्टर",
+ "abusefilter-edit-rules": "शर्त:",
+ "abusefilter-edit-notes": "नोट्स:",
+ "abusefilter-edit-lastmod-text": "$2 से $1 कय",
+ "abusefilter-edit-hitcount": "फ़िल्टर हिट गिनती:"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/az.json b/www/wiki/extensions/AbuseFilter/i18n/az.json
new file mode 100644
index 00000000..2e48a8cf
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/az.json
@@ -0,0 +1,247 @@
+{
+ "@metadata": {
+ "authors": [
+ "AZISS",
+ "Cekli829",
+ "Hydra",
+ "PPerviz",
+ "Sortilegus",
+ "Vago",
+ "Vugar 1981",
+ "Wertuose"
+ ]
+ },
+ "abusefilter-desc": "Düzəlişlərə evristik filtrlərin tətbiq olunmasına imkan verir.",
+ "abusefilter": "Təhqir süzgəcinin tənzimlənməsi",
+ "abuselog": "Təhqir jurnalı",
+ "abusefilter-intro": "Təhqir süzgəcinin idarəetmə səhifəsinə xoş gəlmisiniz.\nTəhqir süzgəci istifadəçilərin fəaliyyətinə avtomatik evristika tətbiq edən avtomatlaşdırılmış proqram mexanizmidir.\nBurada bütün süzgəclərin siyahısı verilib və onların dəyişdirilməsi mümkündür.",
+ "abusefilter-mustbeeditor": "Təhlükəsizliyin qorunması məqsədilə bu interfeysi yalnız təhqir süzgəclərini dəyişdirmək hüququ olan istifadəçilər istifadə edə bilərlər.",
+ "abusefilter-warning": "'''Diqqət'''. Bu fəaliyyət avtomatik olaraq zərərli fəaliyyət kimi təyin olunmuşdur.\nQeyri-konstruktiv dəyişikliklər tezliklə ləğv ediləcək,\nkobud və ya təkrarlanan qeyri-konstruktiv düzəlişlər sizin hesabınızın və ya IP ünvanınızın bloklanmasına gətirib çıxara bilər.\nƏgər siz bunun konstruktiv düzəliş olduğuna əminsinizsə, onda bir daha təsdiq edin.\nFəaliyyətinizə müvafiq olan qaydaların qısa təsviri: $1",
+ "abusefilter-disallowed": "Bu fəaliyyət avtomatik olaraq zərərli fəaliyyət kimi təyin olunmuş və buna görə də qəbul edilməmişdir.\nƏgər siz öz düzəlişinizin konstruktiv olduğuna əminsinizsə, zəhmət olmasa, nə etmək istədiyinizi idarəçilərdən birinə izah edin.\nFəaliyyətinizə müvafiq olan qaydaların qısa təsviri: $1",
+ "abusefilter-autopromote-blocked": "Bu fəaliyyət avtomatik olaraq zərərli fəaliyyət kimi təyin olunmuş və qəbul edilməmişdir.\nBundan əlavə, təhlükəsizlik məqsədilə, adətən qeydə alınmış istifadəçi hesablarına verilən bəzi imkanlar sizin istifadəçi hesabınızda məhdudlaşdırılmışdır.\nFəaliyyətinizə müvafiq olan qaydaların qısa təsviri: $1",
+ "abusefilter-blocker": "Təhqir süzgəci",
+ "abusefilter-blockreason": "Təhqir süzgəci tərəfindən avtomatik bloklanmışdır.\nMüvafiq qaydanın təsviri: $1",
+ "abusefilter-degroupreason": "Hüquqlar təhqir süzgəci tərəfindən avtomatik olaraq məhdudlaşdırıldı.\nQaydaların təsviri: $1",
+ "abusefilter-accountreserved": "Bu hesab adı təhqir süzgəcinin istifadəsi üçün nəzərdə tutulub.",
+ "right-abusefilter-modify": "Təhqir süzgəcinin dəyişdirilməsi",
+ "right-abusefilter-view": "Təhqir süzgəclərinə baxış",
+ "right-abusefilter-log": "Təhqir jurnalına baxış",
+ "right-abusefilter-log-detail": "Təhqir jurnalındakı qeydlərə ətraflı baxış",
+ "right-abusefilter-private": "Təhqir jurnalındakı şəxsi məlumatlara baxış",
+ "right-abusefilter-modify-restricted": "Fəaliyyəti məhdudlaşdıran süzgəclərin dəyişdirilməsi",
+ "right-abusefilter-revert": "Təhqir süzgəcinin düzəlişlərini geri qaytar",
+ "right-abusefilter-view-private": "Gizli kimi işarələnmiş təhqir süzgəclərinə bax",
+ "right-abusefilter-log-private": "Şəxsi kimi işarələnmiş təhqir süzgəclərinə bax",
+ "right-abusefilter-hide-log": "Təhqir jurnalındakı qeydləri gizlət",
+ "right-abusefilter-hidden-log": "Təhqir jurnalındakı gizli qeydlərə bax",
+ "right-abusefilter-modify-global": "Qlobal təhqir süzgəcləri yaradın və ya redaktə edin",
+ "action-abusefilter-modify": "təhqir süzgəcini dəyişmək",
+ "action-abusefilter-view": "təhqir süzgəcinə baxmaq",
+ "action-abusefilter-log": "təhqir jurnalına baxmaq",
+ "action-abusefilter-log-detail": "təhqir jurnalındakı ətraflı məlumatlara baxmaq",
+ "action-abusefilter-private": "təhqir jurnalındakı şəxsi məlumatlara baxmaq",
+ "action-abusefilter-modify-restricted": "hərəkəti məhdudlaşdıran təhqir süzgəclərini dəyişmək",
+ "action-abusefilter-revert": "bu təhqir süzgəcinin bütün düzəlişlərini ləğv etmək",
+ "action-abusefilter-view-private": "\"gizlidir\" kimi qeyd olunmuş təhqir süzgəcinə baxmaq",
+ "abusefilter-log": "Təhqir süzgəci jurnalı",
+ "abusefilter-log-summary": "Bu jurnalda süzgəclər tərəfindən müəyyən olunmuş bütün fəaliyyətlər təsvir olunub.",
+ "abusefilter-log-search": "Təhqir jurnalında axtarış",
+ "abusefilter-log-search-user": "İstifadəçi:",
+ "abusefilter-log-search-filter": "Süzgəc nömrələri (şaquli xətlərlə ayrılır):",
+ "abusefilter-log-search-title": "Başlıq:",
+ "abusefilter-log-search-submit": "Axtar",
+ "abusefilter-log-entry": "$1: $2 $4 səhifəsində \"$3\" fəaliyyətini {{GENDER:$8|yerinə yetirməklə}} təhqir süzgəcini işə salıb.\nGörülmüş tədbirlər: $5; \nSüzgəcin təsviri: $6",
+ "abusefilter-log-entry-withdiff": "$1: $2 $4 səhifəsində \"$3\" fəaliyyətini {{GENDER:$8|yerinə yetirməklə}} təhqir süzgəcini işə salıb.\nGörülmüş tədbirlər: $5; \nSüzgəcin təsviri: $6 ($7)",
+ "abusefilter-log-detailedentry-meta": "$1: $2 $5 səhifəsində \"$4\" fəaliyyətini yerinə yetirməklə $3 {{GENDER:$9|işə salıb}}.\nGörülmüş tədbirlər: $6; \nSüzgəcin təsviri: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "$1 qlobal süzgəci",
+ "abusefilter-log-detailedentry-local": "$1 nömrəli süzgəci",
+ "abusefilter-log-detailslink": "ətraflı",
+ "abusefilter-log-hidelink": "görünməni tənzimlə",
+ "abusefilter-log-details-legend": "$1 nömrəli jurnaldakı qeydlərin detalları",
+ "abusefilter-log-details-var": "Dəyişən",
+ "abusefilter-log-details-val": "Əhəmiyyəti",
+ "abusefilter-log-details-vars": "Fəaliyyət parametrləri",
+ "abusefilter-log-details-private": "Şəxsi məlumatlar",
+ "abusefilter-log-details-ip": "İstifadə olunduğu IP ünvanı",
+ "abusefilter-log-noactions": "heç biri",
+ "abusefilter-log-details-diff": "Redaktə zamanı edilən dəyişikliklər",
+ "abusefilter-log-linkoncontribs": "təhqir jurnalı",
+ "abusefilter-log-linkoncontribs-text": "Bu istifadəçi üçün təhqir jurnalındakı qeydlər",
+ "abusefilter-log-hidden": "(qeydlər gizlədilib)",
+ "abusefilter-log-details-hidden": "Bu qeydlər gizlədildiyindən, ona ətraflı baxa bilməzsiniz.",
+ "abusefilter-log-hide-legend": "Jurnaldakı qeydləri gizlət",
+ "abusefilter-log-hide-id": "Jurnaldakı qeydlərin ID-si:",
+ "abusefilter-log-hide-hidden": "Bu qeydə ictimai şəkildə baxılmanı əngəllə",
+ "abusefilter-log-hide-reason": "Səbəb:",
+ "abusefilter-log-hide-forbidden": "Təhqir jurnalındakı qeydləri gizlətmək hüququnuz yoxdur.",
+ "abusefilter-logentry-suppress": "\"[[$1]]\" gizlət",
+ "abusefilter-logentry-unsuppress": "\"[[$1]]\" göstər",
+ "abusefilter-management": "Təhqir süzgəclərinin idarə olunması",
+ "abusefilter-list": "Bütün süzgəclər",
+ "abusefilter-list-id": "Süzgəc nömrəsi",
+ "abusefilter-list-status": "Status",
+ "abusefilter-list-public": "İctimai istifadənin təsviri",
+ "abusefilter-list-consequences": "Nəticələr",
+ "abusefilter-list-visibility": "Görünüş",
+ "abusefilter-list-hitcount": "Redaktə sayı",
+ "abusefilter-list-edit": "Redaktə",
+ "abusefilter-list-details": "Detallar",
+ "abusefilter-list-limit": "Səhifədə miqdarı:",
+ "abusefilter-list-lastmodified": "Sonuncu düzəliş",
+ "abusefilter-hidden": "Xüsusi",
+ "abusefilter-unhidden": "İctimai",
+ "abusefilter-enabled": "Qoşulub",
+ "abusefilter-deleted": "Sil",
+ "abusefilter-disabled": "Söndürülüb",
+ "abusefilter-hitcount": "$1 dəfə {{PLURAL:$1|işə düşüb}}",
+ "abusefilter-new": "Yeni süzəc yarat",
+ "abusefilter-return": "Süzgəclərin idarə olunmasına qayıtmaq",
+ "abusefilter-status-global": "Qlobal",
+ "abusefilter-list-options": "Parametrlər:",
+ "abusefilter-list-options-deleted": "Silinmiş süzgəclər:",
+ "abusefilter-list-options-deleted-only": "Yalnız silinmiş süzgəcləri göstərin",
+ "abusefilter-list-options-deleted-hide": "Silinmiş süzgəcləri gizlət",
+ "abusefilter-list-options-deleted-show": "Silinmiş süzgəcləri göstər",
+ "abusefilter-list-options-disabled": "Ayrılmış filtrlər",
+ "abusefilter-list-options-hidedisabled": "Ayrılmış filtrləri gizlət",
+ "abusefilter-list-options-submit": "Yenilə",
+ "abusefilter-tools-expr": "İfadənin yoxlanılması",
+ "abusefilter-tools-submitexpr": "Sınamaq",
+ "abusefilter-tools-reautoconfirm-user": "İstifadəçi:",
+ "abusefilter-tools-reautoconfirm-submit": "Yenidən avtotəsdiqlənmə",
+ "abusefilter-edit-subtitle": "$1 süzgəcinin redaktəsi",
+ "abusefilter-edit-status-label": "Statistika:",
+ "abusefilter-edit-new": "Yeni süzgəc",
+ "abusefilter-edit-save": "Süzgəci yadda saxla",
+ "abusefilter-edit-id": "Süzgəcin nömrəsi:",
+ "abusefilter-edit-flags": "Bayraqlar:",
+ "abusefilter-edit-enabled": "Bu süzgəci aktivləşdir",
+ "abusefilter-edit-deleted": "Silinmiş kimi qeyd et",
+ "abusefilter-edit-hidden": "Bu süzgəcin detallarını adi istifadəçilərdən gizlə",
+ "abusefilter-edit-rules": "Şərtlər:",
+ "abusefilter-edit-notes": "Qeydlər:",
+ "abusefilter-edit-lastmod": "Süzgəcdə son dəyişiklik:",
+ "abusefilter-edit-lastmod-text": "$1 tarixində $2 tərəfindən",
+ "abusefilter-edit-hitcount": "Filtrin işləməsi:",
+ "abusefilter-edit-consequences": "Uyğungəlmə zamanı yerinə yetirilməli olan fəaliyyət",
+ "abusefilter-edit-action-disallow": "İstifadçinin bu fəaliyyəti icra etməsinin qarşısını alın",
+ "abusefilter-edit-action-blockautopromote": "İstifadəçinin avtotəsdiqlənmiş statusunu ləğv et",
+ "abusefilter-edit-action-block": "İstifadəçini və/və ya IP ünvanı blokla",
+ "abusefilter-edit-throttle-count": "İcazə verilmiş fəaliyyətlərin sayı:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|saniyə|saniyə}}",
+ "abusefilter-edit-warn-other": "Digər mesaj",
+ "abusefilter-edit-warn-actions": "Fəaliyyətlər:",
+ "abusefilter-edit-warn-preview": "Seçilmiş bildirişə ilkin baxış",
+ "abusefilter-edit-warn-edit": "Seçilmiş bildirişi yarat/dəyişdir",
+ "abusefilter-edit-main": "Süzgəcin xüsusiyyətləri",
+ "abusefilter-edit-done-subtitle": "Filtr düzəldilib",
+ "abusefilter-edit-viewhistory": "Bu süzgəcin tarixçəsinə bax",
+ "abusefilter-edit-history": "Tarixçə:",
+ "abusefilter-edit-tools": "Alətlər:",
+ "abusefilter-edit-test-link": "Bu süzgəci son dəyişikliklər üzərində sınaqdan keçir",
+ "abusefilter-edit-export": "Bu süzgəci başqa vikiyə ixrac et",
+ "abusefilter-edit-builder-group-op-arithmetic": "Riyazi əməliyyatlar",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Toplama (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Çıxma (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Vurma (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Bölmə (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Modul (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Üstlü qüvvət (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Müqayisə əməliyyatları",
+ "abusefilter-edit-builder-op-comparison-equal": "Bərabərdir (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Fərqlidir (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "Kiçikdir (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Böyükdür (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Kiçik bərabərdir (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Böyük bərabərdir (>=)",
+ "abusefilter-edit-builder-group-op-bool": "Bul əməliyyatları",
+ "abusefilter-edit-builder-op-bool-not": "Qeyd (!)",
+ "abusefilter-edit-builder-op-bool-and": "Və (&)",
+ "abusefilter-edit-builder-op-bool-or": "Və ya (|)",
+ "abusefilter-edit-builder-op-bool-xor": "XOR (^)",
+ "abusefilter-edit-builder-group-misc": "Müxtəlif",
+ "abusefilter-edit-builder-misc-in": "Sətirdə var (in)",
+ "abusefilter-edit-builder-misc-like": "Şablona müvafiq (like)",
+ "abusefilter-edit-builder-misc-rlike": "Müntəzəm ifadə (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "Registr nəzərə alınmasa, müntəzəm ifadəyə müvafiqdir (irlike)",
+ "abusefilter-edit-builder-misc-stringlit": "Sətir ifadəsi (\"\")",
+ "abusefilter-edit-builder-misc-tern": "Ternar operator (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "Şərt (if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "Funksiyalar",
+ "abusefilter-edit-builder-funcs-length": "Sətrin uzunluğu (length)",
+ "abusefilter-edit-builder-funcs-lcase": "kiçik hərlərlə (lcase)",
+ "abusefilter-edit-builder-funcs-substr": "Alt sətir (substr)",
+ "abusefilter-edit-builder-group-vars": "Dəyişənlər",
+ "abusefilter-edit-builder-vars-action": "Fəaliyyət",
+ "abusefilter-edit-builder-vars-addedlines": "Redaktə zamanı əlavə olunan xətlər",
+ "abusefilter-edit-builder-vars-delta": "Redaktə zamanı ölçünün dəyişməsi",
+ "abusefilter-edit-builder-vars-newsize": "Yeni səhifənin ölçüsü",
+ "abusefilter-edit-builder-vars-oldsize": "Köhnə səhifənin ölçüsü",
+ "abusefilter-edit-builder-vars-removedlines": "Silinən sətirlər",
+ "abusefilter-edit-builder-vars-summary": "Düzəlişlərin təsviri",
+ "abusefilter-edit-builder-vars-article-id": "Səhifənin identifikatoru",
+ "abusefilter-edit-builder-vars-article-ns": "Səhifə adları sahəsi",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Səhifənin tam adı",
+ "abusefilter-edit-builder-vars-user-editcount": "İstifadəçinin redaktə sayı",
+ "abusefilter-edit-builder-vars-user-age": "Hesabın yaşı",
+ "abusefilter-edit-builder-vars-user-name": "Hesabın adı",
+ "abusefilter-edit-builder-vars-all-links": "Yeni mətndəki bütün xarici keçidlər",
+ "abusefilter-edit-builder-vars-added-links": "Düzəliş zamanı əlavə olunmuş bütün xarici keçidlər",
+ "abusefilter-edit-builder-vars-removed-links": "Düzəliş zamanı silinmiş bütün xarici keçidlər",
+ "abusefilter-history-foruser": "$1-ə görə dəyiş",
+ "abusefilter-history-hidden": "Gizlədilib",
+ "abusefilter-history-enabled": "Qoşulub",
+ "abusefilter-history-global": "Qlobal",
+ "abusefilter-history-timestamp": "Zaman",
+ "abusefilter-history-user": "İstifadəçi",
+ "abusefilter-history-flags": "Bayraqlar:",
+ "abusefilter-history-filter": "Süzgəc qaydası",
+ "abusefilter-history-comments": "Şərhlər",
+ "abusefilter-history-actions": "Fəaliyyətlər",
+ "abusefilter-history-backedit": "Süzgəc redaktəsinə geri dön",
+ "abusefilter-history-deleted": "Silinib",
+ "abusefilter-history-filterid": "Süzgəc",
+ "abusefilter-history-select-legend": "Axtarışı dəqiqləşdirmək",
+ "abusefilter-history-select-user": "İstifadəçi:",
+ "abusefilter-history-select-submit": "Dəqiqləşdirmək",
+ "abusefilter-history-diff": "Dəyişikliklər",
+ "abusefilter-action-tag": "Nişan",
+ "abusefilter-action-throttle": "Sürüşmə",
+ "abusefilter-action-warn": "Xəbərdarlıq",
+ "abusefilter-action-block": "Bloklama",
+ "abusefilter-action-degroup": "Qruplardan sil",
+ "abusefilter-action-rangeblock": "Diapozonun bloklanması",
+ "abusefilter-action-disallow": "İmtina",
+ "abusefilter-revert-title": "$1 süzgəcinin etdiyi bütün dəyişiklikləri geri qaytar",
+ "abusefilter-revert-search-legend": "Təhqir süzgəclərinin ləğv olunacaq fəaliyyətlərini seç",
+ "abusefilter-revert-periodstart": "Dövrün başlanğıcı:",
+ "abusefilter-revert-periodend": "Dövrün sonu:",
+ "abusefilter-revert-search": "Fəaliyyətlərin seçilməsi",
+ "abusefilter-revert-filter": "Süzgəc:",
+ "abusefilter-revert-confirm": "Təsdiq et",
+ "abusefilter-test-legend": "Süzgəcin yoxlanılması",
+ "abusefilter-test-load-filter": "ID-si bu olan süzgəci yüklə:",
+ "abusefilter-test-submit": "Test",
+ "abusefilter-test-load": "Yüklə",
+ "abusefilter-test-user": "Dəyişikliyi edən istifadəçi:",
+ "abusefilter-test-period-start": "Dəyişikliklər bundan sonra edilib:",
+ "abusefilter-test-period-end": "Dəyişikliklər bundan əvvəl edilib:",
+ "abusefilter-test-page": "Dəyişikliklər bu səhifədə edilib:",
+ "abusefilter-examine-legend": "Dəyişiklikləri seçilməsi",
+ "abusefilter-examine-diff": "URL-in fərqi:",
+ "abusefilter-examine-user": "İstifadəçi:",
+ "abusefilter-examine-title": "Səhifə başlığı:",
+ "abusefilter-examine-submit": "Axtar",
+ "abusefilter-examine-test-button": "Süzgəci yoxla",
+ "abusefilter-examine-syntaxerror": "Süzgəcdə sintaksis xəta",
+ "abusefilter-topnav-home": "Əvvələ",
+ "abusefilter-topnav-test": "Paket testləşdirmə",
+ "abusefilter-topnav-log": "Təhqir jurnalı",
+ "abusefilter-topnav-import": "Süzgəc idxalı",
+ "abusefilter-log-noresults": "Nəticə yoxdur",
+ "abusefilter-diff-title": "Versiyalar arasındakı fərqlər",
+ "abusefilter-diff-item": "Element",
+ "abusefilter-diff-version": "$2 adlı istifadəçinin $1 tarixli versiyası",
+ "abusefilter-diff-info": "Əsas məlumatlar",
+ "abusefilter-diff-pattern": "Süzgəcləmə şərtləri"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/azb.json b/www/wiki/extensions/AbuseFilter/i18n/azb.json
new file mode 100644
index 00000000..34ca4ef4
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/azb.json
@@ -0,0 +1,386 @@
+{
+ "@metadata": {
+ "authors": [
+ "Amir a57",
+ "E THP",
+ "Ebrahimi-amir",
+ "Mousa",
+ "Koroğlu",
+ "Macofe",
+ "Matma Rex",
+ "Alp Er Tunqa"
+ ]
+ },
+ "abusefilter-desc": "دوزلیش‌لره ائوریستیک فیلترلرین تطبیق اولونماسینا ایمکان وئریر.",
+ "abusefilter": "سوی-ایستیفاده سوزگجی‌نین تنزیملنمه‌سی",
+ "abuselog": "سوی-ایستیفاده ژورنا‌لی",
+ "abusefilter-intro": "سوی-ایستیفاده سوزگجی‌نین ایدره اولونماسی صحیفه‌سینه خوش گلمیسینیز.\nسوی-ایستیفاده سوزگجی اؤزونده ایستیفاده‌چی‌لرین فالیتینه آوتوماتیک ائوریستیک تطبیقی مئخانیزمینی عکس ائتدیریر.\nبورادا بوتون سوزگج‌لرین سیاهی‌سی وئریلیب و اونلارین دییشیلمه‌سی مومکون‌دور.",
+ "abusefilter-mustbeeditor": "تهلیکه سیزلیگین قورونماسی مقصدیله بو اینتئرفئیسی یالنیز سوی-ایستیفاده سوزگج‌لرینی دییش‌دیرمک حقوقو اولان ایستیفاده‌چی‌لر ایستیفاده ائده بیلرلر.",
+ "abusefilter-warning": "'دیققت. بو فالیت آوتوماتیک اولا‌راق آرزو اوئدیلمه‌ین کیمی تعیین اولونور.\nکونستروکتیو اولمایان دییشیک‌لیک‌لر تئزلیکله لغو ائدیله‌جک،\nکوبود و یا تکرار کونستروکتیو اولمایان دوزلیش‌لر سیزین حسابینیزین و یا ایپ اونوانینیزین بلوکلانماسینا گتیریب چیخارا بیلر.\nاگر سیز بونون کونستروکتیو دوزلیش اولدوغونا امینسینیزسه، اوندا بیر داها «گؤندر» دویمه‌سینه باسین،\nفالیتینیزه مووافیق اولان قایدا‌لارین قیسا تصویری: $1",
+ "abusefilter-disallowed": "بو حرکت آوتوماتیک اولا‌راق زررلی اولا‌راق تعیین اولونموش‌دور،\nو بو سببله ایجازه وئریلمیر.\nاگر دئغیشیکلیغینیزین قورولوش‌چو اولدوغونا اینانیرسینیزسا، لطفاً بیر ایداره‌چی ایله علاقه قورون، و نه ائتمه‌یه چالیشدیغینیز حاقیندا معلوماتلان‌دیرین.\nائیلئمینیزین ائشلئشتیغی سوی-ایستیفاده قایداسینین قیسا بیر شرحی: $1",
+ "abusefilter-blocked-display": "بو حرکت آوتوماتیک اولا‌راق زررلی اولا‌راق تعیین اولونموش‌دور،\nو بونو ائتمه‌نیز اؤنلندی.\nعلاوه اولا‌راق، {{سیتئنامئ}} سایتینی قوروماق اوچون، ایستیفاده‌چی حسابینیز و بوتون علاقه‌دار ایپ اونوان‌لاری دییشیک‌لیک ائتمه‌یه مانعه تؤردیلدی.\nاگر بو بیر سهوله میدانا، لطفاً بیر ایداره‌چی ایله علاقه قورون.\nائیلئمینیزین ائشلئشتیغی سوی-ایستیفاده قایداسینین قیسا بیر شرحی: $1",
+ "abusefilter-degrouped": "بو حرکت آوتوماتیک اولا‌راق زررلی اولا‌راق تعیین اولونموش‌دور،\nبو سبب‌دن، ایجازه وئریلممیش‌دیر، و، اونوانینیز تهلوکه‌لی اولدوغون‌دان شوبهلنیلدیگی اوچون، بوتون حقوق‌لار گئری آلیندی​​.\nاگر بونون بیر سهو اولدوغونو دوشونورسونوزسه، خاهیش ائدیریک بو حرکتین شرهیله بیرلیکده بیر بوروکراتلا علاقه قورون، و حاق‌لارینیز بلکه گئری وئریله بیلر.\nائیلئمینیزین ائشلئشتیغی سوی-ایستیفاده قایداسینین قیسا بیر شرحی: $1",
+ "abusefilter-autopromote-blocked": "بو فالیت آوتوماتیک اولا‌راق زیانوئریجی حرکت کیمی دیرلن‌دیریله‌رک قاداغان ائدیلمیش‌دیر.\nبون‌دان باشقا، تهلوکه‌سیزلیک مقصدیله ایستیفاده‌چی حسابینیزدان عادتن قئیده آلینمیش ایستیفاده‌چی حساب‌لاریندا تصویر اولونان بعضی ایمکان‌لار مهدودلاشدیریلمیش‌دیر.\nحرکت‌لرینیزده سوزگج طرفین‌دن مویین اولونموش سوی-ایستیفاده‌لرین تصویری: $1",
+ "abusefilter-blocker": "سوی-ایستیفاده سوزگجی",
+ "abusefilter-blockreason": "سوی-ایستیفاده سوزگجی طرفین‌دن آوتوماتیک بلوکلانمیش‌دیر.\nتفسیلاتی $1 قایداسینا مووافیق‌دیر.",
+ "abusefilter-degroupreason": "سوی-ایستیفاده سوزگجی آوتوماتیک حقوقا مالیک اولور.\nقایدا‌لارین تصویری: $1",
+ "abusefilter-accountreserved": "بو حساب آدی سوی-ایستیفاده سوزگجی طرفین‌دن رئزئرو ائدیلدی.",
+ "right-abusefilter-modify": "سوی-ایستیفاده سوزگجی‌نین دییشدیریلمه‌سی",
+ "right-abusefilter-view": "سوی-ایستیفاده سوزگجینه باخماق",
+ "right-abusefilter-log": "سوی-ایستیفاده ژورنالینا باخماق",
+ "right-abusefilter-log-detail": "سوی-ایستیفاده سوزگجی ژورنالیندا اطراف‌لی معلومات‌لارا باخماق",
+ "right-abusefilter-private": "سوی-ایستیفاده ژورنالیدنا شخصی معلومات‌لارا باخماق",
+ "right-abusefilter-modify-restricted": "حرکتی مهدودلاش‌دیران سوزگج‌لرین دییشدیریلمه‌سی",
+ "right-abusefilter-revert": "سوی-ایستیفاده سوزگجی‌نین دوزلیش‌لرینی گئری قایتارماق",
+ "right-abusefilter-view-private": "گیزلی‌دیر کیمی قئید اولونان سوی-ایستیفاده سوزگجینه باخماق",
+ "right-abusefilter-log-private": "خصوصی خرابکارلیق گیریش گورنتو سیاهه لری",
+ "right-abusefilter-hide-log": "سوی-ایستیفاده ژورنالین‌داکی قئیدلری گیزلتمه",
+ "right-abusefilter-hidden-log": "سوی-ایستیفاده سوزگجی ژورنالیندا گیزلدیلمیش قئیدلره باخماق",
+ "action-abusefilter-modify": "سوی-ایستیفاده سوزگجی‌نین دییشدیریلمه‌سی",
+ "action-abusefilter-view": "سوی-ایستیفاده سوزگجینه باخماق",
+ "action-abusefilter-log": "سوی-ایستیفاده ژورنالینا باخماق",
+ "action-abusefilter-log-detail": "سوی-ایستیفاده سوزگجی ژورنالیندا اطراف‌لی معلومات‌لارا باخماق",
+ "action-abusefilter-private": "سوی-ایستیفاده ژورنالیدنا شخصی معلومات‌لارا باخماق",
+ "action-abusefilter-modify-restricted": "حرکتی مهدودلاش‌دیران سوی-ایستیفاده سوزگج‌لرین دییشدیریلمه‌سی",
+ "action-abusefilter-revert": "گؤستریلن سوی-ایستیفاده سوزگجی‌نین بوتون دوزلیش‌لرینی لغو ائتمک",
+ "action-abusefilter-view-private": "گیزلی‌دیر کیمی قئید اولونان سوی-ایستیفاده سوزگجینه باخماق",
+ "abusefilter-log": "سوی-ایستیفاده سوزگجی ژورنا‌لی",
+ "abusefilter-log-summary": "بو ژورنالدا فیلتر بللی ائتمیش بوتون چالیشمالار گؤروشور.",
+ "abusefilter-log-search": "سوی-ایستیفاده ژورنالیندا آختاریش",
+ "abusefilter-log-search-user": "ایشلدنː",
+ "abusefilter-log-search-filter": "آی-دی سوزگجی:",
+ "abusefilter-log-search-title": "باشلیق:",
+ "abusefilter-log-search-wiki": "ویکی:",
+ "abusefilter-log-search-submit": "آختار",
+ "abusefilter-log-entry": "$1: $2 سوی-ایستیفاده سوزگجی‌نین ایشلتمه‌یه مراجعت ائدیب، «$3»-اون فالیتی سدیفه $4-ده.\nگؤرولموش تدبیرلر: $5.\nسوزگجین تصویری: $6",
+ "abusefilter-log-detailedentry-meta": "$1: $2 $3-اون ایشلمه‌سی اوچون مراجعت ائدیب، «$4»-اون فالیتی صحیفه $5-ده.\nگؤرولموش تدبیرلر: $6.\nسوزگجین تصویری: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "$1 قلوبال سوزگجی",
+ "abusefilter-log-detailedentry-local": "$1 سوزگجی",
+ "abusefilter-log-detailslink": "اطراف‌لی",
+ "abusefilter-log-diff": "فرق",
+ "abusefilter-log-hidelink": "گؤرونمنی تنزیمله",
+ "abusefilter-log-details-legend": "$1 جورنالین‌داکی قئیدلر اطراف‌لی شکیلده",
+ "abusefilter-log-details-var": "دییشن",
+ "abusefilter-log-details-val": "اهمیتی",
+ "abusefilter-log-details-vars": "فعالیت پارامئترلری",
+ "abusefilter-log-details-private": "شخصی معلومات‌لار",
+ "abusefilter-log-details-ip": "ایستیفاده اولوندوغو ای پی آدرسی",
+ "abusefilter-log-noactions": "هئچ بیری",
+ "abusefilter-log-details-diff": "رئداکته زامانی ائدیلن دییشیک‌لیک‌لر",
+ "abusefilter-log-linkoncontribs": "سوی-ایستیفاده ژورنا‌لی",
+ "abusefilter-log-linkoncontribs-text": "بو ایستیفاده‌چی اوچون سوی-ایستیفاده ژورنالین‌داکی قئیدلر",
+ "abusefilter-log-hidden": "(قئیدلر گیزلدیلیب)",
+ "abusefilter-log-hidden-implicit": "گیزلنن سیلینن نسخه کیمی اولوب",
+ "abusefilter-log-cannot-see-details": "بو گیریش دئتال‌لارینی گؤره بیلمک اوچون ایجازه‌نیز یوخ‌دور.",
+ "abusefilter-log-details-hidden": "بو قئیدلر گیزلدیلدیگین‌دن، اونا اطراف‌لی باخا بیلمزسینیز.",
+ "abusefilter-log-hide-legend": "ژورنال‌داکی قئیدلری گیزلت",
+ "abusefilter-log-hide-id": "ژورنال‌داکی قئیدلرین اید-سی:",
+ "abusefilter-log-hide-hidden": "بو قئیده اجتماعی شکیلده باخیلمانی انگلله",
+ "abusefilter-log-hide-reason": "سبب:",
+ "abusefilter-log-hide-forbidden": "سوی-ایستیفاده ژورنالین‌داکی قئیدلری گیزلتمک هوقوقونوز یوخ‌دور.",
+ "abusefilter-logentry-suppress": "\"[[$1]]\" گیزلت",
+ "abusefilter-logentry-unsuppress": "\"[[$1]]\" گؤستر",
+ "logentry-abusefilter-hit": "$1 باعث $4 ، ایش گورمک \" $5 \" در $3 . اقداملار: $6 ( $7 )",
+ "abusefilter-management": "سوی-ایستیفاده سوزگج‌لری‌نین ایداره اولونماسی",
+ "abusefilter-list": "بوتون سوزگج‌لر",
+ "abusefilter-list-id": "اید سوزگجی:",
+ "abusefilter-list-status": "وضعیت",
+ "abusefilter-list-public": "اجتماعی ایستیفاده‌نین تصویری",
+ "abusefilter-list-consequences": "نتیجه‌لر",
+ "abusefilter-list-visibility": "باخینمالی",
+ "abusefilter-list-hitcount": "دییشدیرمه سایی",
+ "abusefilter-list-edit": "دَییشدیر",
+ "abusefilter-list-details": "دئتال‌لار",
+ "abusefilter-list-limit": "صحیفه‌ده میقداری:",
+ "abusefilter-list-lastmodified": "سونونجو دوزلیش",
+ "abusefilter-list-group": "سوزگج گروهو",
+ "abusefilter-hidden": "خصوصی",
+ "abusefilter-unhidden": "عومومی",
+ "abusefilter-enabled": "قوشولوب",
+ "abusefilter-deleted": "سیل",
+ "abusefilter-disabled": "آیریلیب",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|اولدو|اولدولار}}",
+ "abusefilter-new": "یئنی سوزگج یارات",
+ "abusefilter-return": "سوزگج‌لرین ایداره اولونماسینا قاییتماق",
+ "abusefilter-status-global": "قلوبال",
+ "abusefilter-list-options": "پارامئترلر:",
+ "abusefilter-list-options-deleted": "سیلینمیش سوزگج‌لر:",
+ "abusefilter-list-options-deleted-only": "یالنیز سیلینمیش سوزگج‌لری گؤسترین",
+ "abusefilter-list-options-deleted-hide": "سیلینمیش سوزگج‌لری گیزلت",
+ "abusefilter-list-options-deleted-show": "سیلینمیش سوزگج‌لری گؤستر",
+ "abusefilter-list-options-scope": "قیلترلری بوردان گؤستر:",
+ "abusefilter-list-options-scope-local": "یئرلی ویکی",
+ "abusefilter-list-options-scope-global": "پرینسیپ‌لر",
+ "abusefilter-list-options-disabled": "آيریلمیش فیلترلر",
+ "abusefilter-list-options-hidedisabled": "آيریلمیش فیلترلری گیزلت",
+ "abusefilter-list-options-submit": "گونجل‌له",
+ "abusefilter-tools-text": "بونلار، سوی-ایستیفاده فیلترلرینی دوستورا ائدرکن و سهو آيیرد ائدرکن فايدالی اولا بیله‌جک .",
+ "abusefilter-tools-expr": "ایفادئ تئستی",
+ "abusefilter-tools-submitexpr": "سیناماق",
+ "abusefilter-tools-reautoconfirm": "اوتوماتیک اونايلی دورومو گئری گئتیر",
+ "abusefilter-tools-reautoconfirm-user": "ایشلدن:",
+ "abusefilter-tools-reautoconfirm-submit": "يئنیدن آوتوماتیک تسدیقلن‌مه",
+ "abusefilter-reautoconfirm-none": "بو {{GENDER:$1|اوز|اوز|اوز}} آوتوماتیک اونای‌لی دورومو آسکییا آلینمادی.",
+ "abusefilter-reautoconfirm-notallowed": "آوتوماتیک اونای‌لی دورومو گئتیرمئیئ یئتکینیز یوخ‌دور.",
+ "abusefilter-reautoconfirm-done": "حسابین آوتوماتیک اونای‌لی دورومو گئری گئتیریلدی",
+ "abusefilter-status": "سون 1$ {{جمع: $1 | ائیلمدئ | ائیلمدئ}} $2 (% $3) فیلترئ $4 کوشول سینیرینا ائریشتی، و $5 (% $6) ائیلئم شواندا ائففئکتیو بیر فیلترئیلئ ائشلئشتی.",
+ "abusefilter-edit-subtitle": "$1 سوزگجی‌نین رئداکته‌سی",
+ "abusefilter-edit-subtitle-new": "فیلترئ اولوشتورما",
+ "abusefilter-edit-oldwarning": "<strong>بو فیلترئنین ائسکی بیر سورومونو دئغیشتیریورسونوز.\nگؤستئریلئن ایستاتیستیکلئر بو فیلترئنین ائن سون وئرسیاسی اوچون‌دور.\nاگر دئغیشیکلیکلئرینیزی کایدئدئرسئنیز، دئغیشیک‌لیک ائتدیگینیز رئویزیون‌دان ایتیبارئن بوتون دئغیشیکلیکلئرین اوزئرینئ یازاجاکسینیز.</strong> &bull;\n[[Special:AbuseFilter/history/$2|بو فیلترئنین گئچمیشینئ گئری قاییت]].",
+ "abusefilter-edit-status-label": "ایستاتیستیکا‌لار:",
+ "abusefilter-edit-status": "سون 1$ {{جمع: $1 | ائیلئمدئ | ائیلئمدئ}} بو فیلترئیلئ ائشلئشئن $2 ($3%).",
+ "abusefilter-edit-status-profile": "سون 1$ {{جمع: $1 | ائیلئمدئ | ائیلئمدئ}} بو فیلترئیلئ ائشلئشئن $2 ($3%).\nاورتالامادا، ایش واختی $4مس، و کوشول سینیرینین $5 کوشولونو توکئتیور.",
+ "abusefilter-edit-new": "یئنی سوزگج",
+ "abusefilter-edit-save": "سوزگجی یاددا ساخلا",
+ "abusefilter-edit-id": "آی-دی سوزگجی:",
+ "abusefilter-edit-description": "آچیکلاما:\n:' (اومومی اولا‌راق گؤرونئبیلیر)'",
+ "abusefilter-edit-group": "فیلتر گروهو",
+ "abusefilter-edit-flags": "بایراق‌لار:",
+ "abusefilter-edit-enabled": "بو سوزگجی آکتیولش‌دیر",
+ "abusefilter-edit-deleted": "سیلینمیش کیمی قئید ائت",
+ "abusefilter-edit-hidden": "بو سوزگئجین آیرینتی‌لارینی عمومی گؤروشتئن گیزلئ",
+ "abusefilter-edit-global": "! سلیس! بو فیلترئیی قلوبال اولا‌راق اویگولا",
+ "abusefilter-edit-rules": "شرط‌لر:",
+ "abusefilter-edit-notes": "نوتلار:",
+ "abusefilter-edit-lastmod": "سون دییشیک‌لیک‌لر سوزگجی:",
+ "abusefilter-edit-lastmod-text": "$1 طرفین‌دن $2",
+ "abusefilter-edit-hitcount": "فیلترین ایشلمه‌سی:",
+ "abusefilter-edit-consequences": "ائشلئشتیغیندئ حرکت‌لر ائدیلیر",
+ "abusefilter-edit-action-warn": "ایستیفاده‌چییه بیر خبردارلیق وئردیک‌دن سونرا بو حرکت‌لری تئتیکلئ",
+ "abusefilter-edit-action-disallow": "ایستیفاده‌چی‌نین، سوال‌داکی حرکتی ائتمه‌سینی مانعه",
+ "abusefilter-edit-action-blockautopromote": "ایستیفاده‌چی‌نین آوتوماتیک تسدیق ائدیلمیش دورمونو گئری آل",
+ "abusefilter-edit-action-degroup": "ایستیفادچینی بوتون ایمتیازلی گروه لاردان چیخار",
+ "abusefilter-edit-action-block": "ایستیفادچینی و / و یا ایپ اونوانینی دییشیک‌لیک ائتمه‌یه مانعه",
+ "abusefilter-edit-action-throttle": "حرکت‌لری یالنیز، اگر ایستیفاده‌چی بیر درجه سرحدینه تاکیلیرسا تئتیکلئ",
+ "abusefilter-edit-action-rangeblock": "ایستیفاده‌چی‌نین گلدیگی / 16 آرا‌لیغینی مانعه",
+ "abusefilter-edit-action-tag": "İrəlidə gözdən keçirmə üçün dəyişikliyi etiketlə.",
+ "abusefilter-edit-throttle-count": "ایجازه وئریلمیش فالیت‌لرین سایی:",
+ "abusefilter-edit-throttle-period": "زامان پئریودو:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|ثانیه|ثانیه}}",
+ "abusefilter-edit-throttle-groups": "قروپ حیسه‌یه ائدن:\n:' (هر سطره بیر دنه، وئرگولله بیرلش‌دیرین)'",
+ "abusefilter-edit-warn-message": "خبردارلیق اوچون ایستیفاده ائدیلن سیستئم مئساژی:",
+ "abusefilter-edit-warn-other": "دیگر مئساژ",
+ "abusefilter-edit-warn-other-label": "دیگر مئساژین صحیفه آدی:\n:' (مئدیاویکی اؤنئکی اولما‌دان)'",
+ "abusefilter-edit-warn-actions": "فعالیت‌لر:",
+ "abusefilter-edit-warn-preview": "سئچیلمیش مئساژی باخما",
+ "abusefilter-edit-warn-edit": "سئچیلمیش مئساژی یارات / دییش‌دیر",
+ "abusefilter-edit-tag-tag": "تطبیق اولونا‌جاق ائتیکئتلئر (هر سطره بیر دنه):",
+ "abusefilter-edit-denied": "بو سوزگج اوچون دئتال‌لاری گؤره بیلمزسینیز، چونکی عمومی گؤرونوش‌دن گیزلنمیش",
+ "abusefilter-edit-main": "سوزگج دییشن‌لری",
+ "abusefilter-edit-done-subtitle": "فیلتر دوزلدیلیب",
+ "abusefilter-edit-done": "$1 سوزگئجی ایچین دئغیشیکلیکلئرینیز باشارییلا کایدئدیلدی.",
+ "abusefilter-edit-badsyntax": "ایفاده ائتدیگینیز فیلتردن بیر سینتاکسیس سهوی وار.\nدئرلئییجی‌نین چیکتی‌سی: <پرئ> $ 1 </ پرئ>",
+ "abusefilter-edit-restricted": "بو فیلترئیی دئغیشتیرئمئزسینیز، چونکو بیر وئیا داها فازلا کیسیت‌لی ائیلئم ایچئریور.\nلوتفئن کیسیت‌لی ائیلئملئری ائکلئمئیئ ایزنی اولان بیر کوللانیجی‌دان، سیزین ایچین دئغیشیکلیغی یاپماسینی ایستئیین.",
+ "abusefilter-edit-viewhistory": "بو سوزگئجین گئچمیشینی گؤر",
+ "abusefilter-edit-history": "گئچمیش:",
+ "abusefilter-edit-check": "سؤزدیزیمینی کونترول ائت",
+ "abusefilter-edit-badfilter": "بلیرتدیگینیز فیلتِر یوخدور",
+ "abusefilter-edit-revert": "بو فیلترئ تارافین‌دان آلینان ائیلئملئری گئری آل",
+ "abusefilter-edit-tools": "آلت‌لر",
+ "abusefilter-edit-test-link": "سون دئغیشیکلیکلئرئ قارشی بو سوزگئجی تئست ائت",
+ "abusefilter-edit-export": "بو فیلترئیی باشقا بیر ویکیئ آکتار",
+ "abusefilter-edit-syntaxok": "هئچ بیر سؤزدیزیمی هاتاسی آلگیلانمادی.",
+ "abusefilter-edit-syntaxerr": "سؤزدیزیمی هاتاسی آلگیلاندی: $ 1",
+ "abusefilter-edit-bad-tags": "بئلیرتتیغینیز ائتیکئتلئرین بیر و یا داها چوخ گئچئرسیز.\nو ائتیکئتلئر قیسا اولما‌لی‌دیر، خصوصی کاراکتئر ایچئرمئمئ‌لی‌دیر.",
+ "abusefilter-edit-notallowed": "سویستیمال فیلترئلئرینی اولوشتورمایا و یا دئغیشتیرمئیئ ایزنینیز یوخ‌دور",
+ "abusefilter-edit-builder-select": "ایشاره‌چی‌یه اکله‌مک اوچون بیر سئچیم سئچین",
+ "abusefilter-edit-builder-group-op-arithmetic": "رياضی عملیاتلار",
+ "abusefilter-edit-builder-op-arithmetic-addition": "توپلاما (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "چیخما (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "وورما (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "بؤلمه (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "مودول (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "اوست‌لو قوت (**)",
+ "abusefilter-edit-builder-group-op-comparison": "موقاییسه عملیات‌لاری",
+ "abusefilter-edit-builder-op-comparison-equal": "برابردیر (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "فرق‌لی‌دیر (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "کیچیک‌دیر (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "بؤیوک‌دور (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "کیچیک برابردیر (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "بؤیوک برابردیر (>=)",
+ "abusefilter-edit-builder-group-op-bool": "بول عملیات‌لاری",
+ "abusefilter-edit-builder-op-bool-not": "قئید (!)",
+ "abusefilter-edit-builder-op-bool-and": "و (و)",
+ "abusefilter-edit-builder-op-bool-or": "و یا (|)",
+ "abusefilter-edit-builder-group-misc": "موختلیف",
+ "abusefilter-edit-builder-misc-in": "سطرده وار (این)",
+ "abusefilter-edit-builder-misc-like": "شابلونا مووافیق (لیکئ)",
+ "abusefilter-edit-builder-misc-rlike": "مونتزم ایفاده (رلیکئ)",
+ "abusefilter-edit-builder-misc-irlike": "رئگیستر نظره آلینماسا، مونتزم ایفاده‌یه مووافیق‌دیر (ایرلیکئ)",
+ "abusefilter-edit-builder-misc-contains": "سول دیزی ساغ سئریا‌لی ائهتیوا ائدیر (جونتاینس)",
+ "abusefilter-edit-builder-misc-stringlit": "سطر ایفاده‌سی (\"\")",
+ "abusefilter-edit-builder-misc-tern": "اوچلو ایشلتمن (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "شرطی (if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "فونکسیا‌لار",
+ "abusefilter-edit-builder-funcs-length": "سترین اوزون‌لوغو (لئنگته)",
+ "abusefilter-edit-builder-funcs-lcase": "کیچیک حرفلرله (lcase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "قاریش‌دیریلا کاراکتئرلری نورماللئشتیر (ججنورم)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "جوت-کاراکتئرلری چیخار (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "خصوصی سیموول‌لار / جمعی کاراکتئرلر (ایسپئجیالراتیو)",
+ "abusefilter-edit-builder-funcs-norm": "نورماللئشتیر (نورما)",
+ "abusefilter-edit-builder-funcs-count": "X سئریالینین ی دیزی‌سی ایچینده گؤرونمه سایی (جوونت",
+ "abusefilter-edit-builder-funcs-rcount": "X نیزام‌لی ایفاده‌سی‌نین ی سئریالیندا گؤرولمه سایی (رجوونت)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "بئیازبوش‌لوغو چیخار (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "شخصی کاراکتئرلری چیخار (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "ایپ دئکابردا می؟ (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "دیزئ بیردن چوخ آلتدیزئ اوچون آرا (contains_any)",
+ "abusefilter-edit-builder-funcs-substr": "آلت سطر (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "آلتدیزی‌نین سئریال‌داکی یئری (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "آلتدیزیگی دیزی ایله دییش (str_replace)",
+ "abusefilter-edit-builder-funcs-rescape": "تحت الفظی متنی لغو ائت (لغو)",
+ "abusefilter-edit-builder-funcs-set_var": "دییشنی نیزاملا (set_var)",
+ "abusefilter-edit-builder-group-vars": "دییشن‌لر",
+ "abusefilter-edit-builder-vars-accountname": "حساب آدی (حساب یارادیلدیغیندا)",
+ "abusefilter-edit-builder-vars-timestamp": "دییشیکلیگین اونیخ زامان دامغاسی",
+ "abusefilter-edit-builder-vars-action": "فعالیت",
+ "abusefilter-edit-builder-vars-addedlines": "رئداکته زامانی علاوه اولونان خت‌لر",
+ "abusefilter-edit-builder-vars-delta": "رئداکته زامانی اؤلچونون دییشمه‌سی",
+ "abusefilter-edit-builder-vars-diff": "دییشیک‌لیک طرفین‌دن ائدیلن دییشیک‌لیک‌لرین بیرلشمیش فرقی",
+ "abusefilter-edit-builder-vars-newsize": "یئنی صحیفه‌نین اؤلچوسو",
+ "abusefilter-edit-builder-vars-oldsize": "کؤهنه صحیفه‌نین اؤلچوسو",
+ "abusefilter-edit-builder-vars-removedlines": "سیلینن سطرلر",
+ "abusefilter-edit-builder-vars-summary": "دوزلیش‌لرین تصویری",
+ "abusefilter-edit-builder-vars-article-id": "صفحه آی‌دی-سی",
+ "abusefilter-edit-builder-vars-article-ns": "صحیفه آدلاری ساحه‌سی",
+ "abusefilter-edit-builder-vars-article-text": "صحیفه باش‌لیغی (آد ساحه‌سی اولما‌دان)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "صحیفه‌نین تام آدی",
+ "abusefilter-edit-builder-vars-article-views": "صفحه دن گؤروشلر",
+ "abusefilter-edit-builder-vars-movedfrom-id": "قایناق داشیما صحیفه‌سی‌نین صحیفه ایدسی",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "قایناق داشیما صحیفه‌سی‌نین آد ساحه‌سی",
+ "abusefilter-edit-builder-vars-movedfrom-text": "قایناق داشیما صحیفه‌سی باش‌لیغی",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "قایناق داشیما صحیفه‌ نین تام باش‌لیغی",
+ "abusefilter-edit-builder-vars-movedto-id": "هدف داشیما صحیفه‌سی‌نین صحیفه ایدسی",
+ "abusefilter-edit-builder-vars-movedto-ns": "هدف داشیما صحیفه‌سی‌نین آد ساحه‌سی",
+ "abusefilter-edit-builder-vars-movedto-text": "هدف داشیما صحیفه‌سی‌نین باش‌لیغی",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "هدف داشیما صحیفه‌سی‌نین تام باش‌لیغی",
+ "abusefilter-edit-builder-vars-user-editcount": "ایشلدنین دییشدیرمه سایی‌سی",
+ "abusefilter-edit-builder-vars-user-age": "حسابین یاشی",
+ "abusefilter-edit-builder-vars-user-name": "حسابین آدی",
+ "abusefilter-edit-builder-vars-user-groups": "ایستیفاده‌چی‌نین اولدوغو گروه‌لار (ایچینده اولدوق‌لاری داخیل)",
+ "abusefilter-edit-builder-vars-user-blocked": "ایشلدنین بلوک اولماغی",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "ایمیل پوست عنوانینین دوغرولانما زامانی",
+ "abusefilter-edit-builder-vars-recent-contributors": "صحیفنی یئنی‌دن ایشتیراک ائدن سون اون ایستیفاده‌چی",
+ "abusefilter-edit-builder-vars-first-contributor": "صحفه ده چالیشان ایلک ایشلدن",
+ "abusefilter-edit-builder-vars-all-links": "یئنی متن‌دکی بوتون خاریجی کئچیدلر",
+ "abusefilter-edit-builder-vars-added-links": "دوزلیش زامانی علاوه اولونموش بوتون خاریجی کئچیدلر",
+ "abusefilter-edit-builder-vars-removed-links": "دوزلیش زامانی سیلینمیش بوتون خاریجی کئچیدلر",
+ "abusefilter-edit-builder-vars-old-text": "کؤهنه صحیفه ویکی متنی، دییشیک‌لیک‌دن قاباق",
+ "abusefilter-edit-builder-vars-new-text": "یئنی صحیفه ویکی متنی، دییشیک‌لیک‌دن سونرا",
+ "abusefilter-edit-builder-vars-addedlines-pst": "خطلر دَییشدیرمه یه آرتیریلیبدی، هر ذخیره اولان کؤچورولوبدور",
+ "abusefilter-edit-builder-vars-new-text-stripped": "یئنی صحیفه متنی، هر هانسی بیر فورمالاندیرما اولما‌دان",
+ "abusefilter-edit-builder-vars-new-html": "یئنی رئویزیونو ییغیلمیش اچ تی ام ال قایناغی",
+ "abusefilter-edit-builder-vars-restrictions-edit": "صحیفه‌نین قوروما سویه‌سینی دییش‌دیر",
+ "abusefilter-edit-builder-vars-restrictions-move": "صحیفه‌نین قوروما سویه‌سینی داشی",
+ "abusefilter-edit-builder-vars-old-text-stripped": "کؤهنه صحیفه متنی، هر هانسی بیر فورمالاندیرما اولما‌دان",
+ "abusefilter-edit-builder-vars-old-links": "صحیفه‌دکی علاقه‌لر، دییشیک‌لیک‌دن قاباق",
+ "abusefilter-edit-builder-vars-old-html": "کؤهنه صحیفه ویکی متنی، اچ تی ام ال ییغیلدی",
+ "abusefilter-edit-builder-vars-minor-edit": "دییشیکلیگین کیچیک اولا‌راق ایشارئتلئنیپ ایشارئتلئنمئیئجئغی",
+ "abusefilter-edit-builder-vars-file-sha1": "فایل مزمون‌لارینین SHA1 هاسهی",
+ "abusefilter-edit-builder-vars-file-size": "پرونده نین اندازه سی بایت ایله",
+ "abusefilter-filter-log": "سون فیلترلر دییشیک‌لیک‌لری",
+ "abusefilter-history": "سویستیمال فیلتری # $ 1 اوچون دییشیک‌لیک کئچمیشی",
+ "abusefilter-history-foruser": "$1 ایله دَییشیکلیکلر",
+ "abusefilter-history-hidden": "گیزله‌دیلیب",
+ "abusefilter-history-enabled": "قوشولوب",
+ "abusefilter-history-global": "باشاباشجا",
+ "abusefilter-history-timestamp": "زامان",
+ "abusefilter-history-user": "ایشلدن",
+ "abusefilter-history-public": "فیلتر عمومی توضیحاتی",
+ "abusefilter-history-flags": "بایراق‌لار:",
+ "abusefilter-history-filter": "سوزگج قایداسی",
+ "abusefilter-history-comments": "یوروملار",
+ "abusefilter-history-actions": "چالیشمالار",
+ "abusefilter-history-backedit": "سوزگج دییشدیر‌سینه گئری دؤن",
+ "abusefilter-history-deleted": "سیلینیب",
+ "abusefilter-history-filterid": "فیلتر",
+ "abusefilter-history-select-legend": "آختاریشی دقیقلش‌دیرمک",
+ "abusefilter-history-select-user": "ایشلدنː",
+ "abusefilter-history-select-submit": "دقیقلشدیرمک",
+ "abusefilter-history-diff": "ديَیشیکلیک‌لر",
+ "abusefilter-history-error-hidden": "ایستدیگینیز فیلتر گیزلی، و کئچمیشینی گؤرونتولئیئمئزسینیز.",
+ "abusefilter-exception-unexpectedatend": "$1 کاراکتئرینده گؤزلنیلمز \"$2\".",
+ "abusefilter-exception-expectednotfound": "$1 کاراکتئرینده بیر $2 گؤزلنیلیردی، تاپیلا بیلمه‌دی (یئرینه $3 $4 تاپیلدی).",
+ "abusefilter-exception-unrecognisedkeyword": "$ 1 کاراکتئرینده تانینمایان آچار سؤز $ 2.",
+ "abusefilter-exception-unexpectedtoken": "$ 1 کاراکتئرینده گؤزلنیلمه‌ین سیمبول \"$ 3\" ($ 2 تیپینده).",
+ "abusefilter-exception-unclosedstring": "$ 1 کاراکتئرینده باشلایان کاپانمامیش دیزی",
+ "abusefilter-exception-invalidoperator": "$ 1 کاراکتئرینده اعتبارسیز اوپئراتور \"$ 2\".",
+ "abusefilter-exception-unrecognisedtoken": "$1 کاراکتئریندئ تانینمایان سیمگئ \"$2\".",
+ "abusefilter-exception-noparams": "\"$ 2\" فونکسیاسینا $ 1 کاراکتئرینده هئچ پارامئتر وئریلمه‌دی.",
+ "abusefilter-exception-dividebyzero": "$ 1 کاراکتئرینده $ 2 ایله کورالدیشی صیفیرا بؤلمه جهدی.",
+ "abusefilter-exception-unrecognisedvar": "$ 1 کاراکتئرینده تانینمایان دییشن $ 2",
+ "abusefilter-exception-notenoughargs": "$ 1 کاراکتئرینده چاغیریلان $ 2 فونکسیاسی اوچون کافی دییشن یوخ.\n$ 3 {{پلورال: $ 3 | دییشن | دییشن}} گؤزلنیلیردی، $ 4 آلیندی",
+ "abusefilter-exception-regexfailure": "\"$ 3\" نیزام‌لی ایفاده‌سی‌نین $ 1 کاراکتئرینده سهو: \"$ 2\"",
+ "abusefilter-exception-overridebuiltin": "$ 1 کاراکتئرینده \"$ 2\" مسکون دئغیشکئنی‌نین کورالدیشی اعتبارسیز قیلینماسی.",
+ "abusefilter-exception-outofbounds": "$1 کاراکتئرین‌دکی مؤوجود اولمایان سیاهی ائلئمئنتی $2 (سیاهی اؤلچوسو = $3) ایستنیر.",
+ "abusefilter-exception-notlist": "$ 1 کاراکتئرینده دیزی اولمایان دیزی ائلئمئنتی ایستنیر.",
+ "abusefilter-action-tag": "نیشان",
+ "abusefilter-action-throttle": "سوروشمه",
+ "abusefilter-action-warn": "خبردارلیق",
+ "abusefilter-action-blockautopromote": "مانعه تؤرتمه اوتوماتیک-قالخما",
+ "abusefilter-action-block": "بلوک",
+ "abusefilter-action-degroup": "گروه‌لاردان سیل",
+ "abusefilter-action-rangeblock": "دیاپوزونون بلوکلانماسی",
+ "abusefilter-action-disallow": "ساپما",
+ "abusefilter-revert-title": "$1 سوزگجی‌نین ائتدیگی بوتون دییشیک‌لیک‌لری گئری قایتار",
+ "abusefilter-revert-intro": "بو فورما، $ 1 فیلتری اوزون‌دن سوی-فیلتری طرفین‌دن ائدیلن بوتون دییشیک‌لیک‌لری گئری آلماغینیزا ایجازه وئریر.\nخاهیش ائدیریک بو واسطه‌سی ایستیفاده ائتمکده دقت‌لی چالیشین.",
+ "abusefilter-revert-preview-item": "$ 1: $ 2، $ 4 اوزرینده بیر $ 3 ائتدی.\nگئری آلینا‌جاق تدبیرلر: $ 5 ($ 6)",
+ "abusefilter-revert-search-legend": "سوی-ایستیفاده سوزگج‌لری‌نین لغو اولونا‌جاق فعالیت‌لرینی سئچ",
+ "abusefilter-revert-periodstart": "دؤورون باشلانغیجی:",
+ "abusefilter-revert-periodend": "دؤورون سونو:",
+ "abusefilter-revert-search": "فعالیت‌لرین سئچیلمه‌سی",
+ "abusefilter-revert-filter": "فیلتر:",
+ "abusefilter-revert-preview-intro": "آشاغی‌داکی‌لار، سوی-ایستیفاده فیلتری طرفین‌دن آلینان و بو حرکتله گئری آلینا‌جاق تدبیرلردیر.\nخاهیش ائدیریک دقتله نظارت ائدین، و سئچیمینیزی تسدیق ائتمک اوچون \"تصدیق\" یا باسین.",
+ "abusefilter-revert-confirm": "تصدیق ائت",
+ "abusefilter-revert-success": "[[Special: AbuseFilter / $1 | $1 filtrindən]] اؤتری سوی-فیلتری طرفین‌دن آلینان بوتون حرکت‌لری گئری آلدینیز.",
+ "abusefilter-revert-reason": "$1 فیلترین‌دن گؤره سوی-ایستیفاده فیلتری طرفین‌دن آلینان بوتون حرکت‌لرین آوتوماتیک گئری آلیشی.\nوئریلن سبب: $2",
+ "abusefilter-revert-reasonfield": "قایتارما سببی:",
+ "abusefilter-test": "اوولکی دییشیک‌لیک‌لر اوچون بیر سوزگجی دئنئ",
+ "abusefilter-test-intro": "بو صحیفه، آشاغی‌داکی قوتویا گیریلن بیر فیلتری سون $ 1 {{PLURAL:$1 | دییشیک‌لییه | دییشیک‌لییه}} قارشی ایداره ائتمه‌نیزه ایجازه وئرر.\nمؤوجود بیر فیلتری یوکلمک اوچون، فیلتر ایدسینی دییشیک‌لیک متن قوتوسونون آلتین‌داکی قوتویا داخیل ائدین، و \"یوکلئ\" دویمه‌سینی باسین.",
+ "abusefilter-test-legend": "فیلترین تستی",
+ "abusefilter-test-load-filter": "اید-سی بو اولان سوزگجی یوکله:",
+ "abusefilter-test-submit": "سیناق",
+ "abusefilter-test-load": "یوکله",
+ "abusefilter-test-user": "دییشیک‌لیگی ائدن ایشلدن:",
+ "abusefilter-test-period-start": "دییشیک‌لیک‌لر بون‌دان سونرا ائدیلیب:",
+ "abusefilter-test-period-end": "دییشیک‌لیک‌لر بون‌دان قاباق ائدیلیب:",
+ "abusefilter-test-page": "دییشیک‌لیک‌لر بو صحیفه‌ده ائدیلیب:",
+ "abusefilter-test-shownegative": "سوزگئچلئ ائشلئشمئیئن دئییشیک لیک لری گؤستئر",
+ "abusefilter-test-syntaxerr": "داخیل فیلتر سؤز سهوی ایچردی.\n\"سؤزدیزیمینی ایداره ائت\" دویمه‌سینه باسا‌راق تام بیر شرح آلا بیلرسینیز.",
+ "abusefilter-changeslist-examine": "اینجئلئ",
+ "abusefilter-examine": "بیر-بیر دییشیک‌لیک‌لری یوخلا",
+ "abusefilter-examine-intro": "بو صفحه، خارابکارلیق فیلتری طرفین‌دن خاص بیر دییشیک‌لیک اوچون یارادیلان معیارلاری یوخلاماق و فیلترلر قاباغیندا ایمتحانلاما اجازه سینی وئریر.",
+ "abusefilter-examine-legend": "دییشیک‌لیک‌لر سئچیلمه‌سی",
+ "abusefilter-examine-diff": "URL-in فرقی:",
+ "abusefilter-examine-user": "ایستفاده‌چی:",
+ "abusefilter-examine-title": "صحیفه باشلیقی",
+ "abusefilter-examine-submit": "آختار",
+ "abusefilter-examine-vars": "بو دییشیک‌لیک اوچون یارادیلان دییشن‌لر",
+ "abusefilter-examine-test": "بو دییشیک‌لیگی بیر سوزگه‌جه قارشی دئنئ",
+ "abusefilter-examine-test-button": "فیلتر تستی",
+ "abusefilter-examine-match": "فیلتر بو دییشیک‌لیکله اویغونلاشدی.",
+ "abusefilter-examine-nomatch": "فیلتر بو دییشیک‌لیکله ائشلئشمئدی.",
+ "abusefilter-examine-syntaxerror": "فیلترده دوزلیش ختا",
+ "abusefilter-examine-notfound": "ایستدیگینیز دییشیک‌لیک تاپیلمادی.",
+ "abusefilter-examine-incompatible": "ایستدیگینیز دییشیک‌لیک سیستیمال فیلتری طرفین‌دن دستک‌لنمیر",
+ "abusefilter-examine-noresults": "ایستدینیز آختاریش پارامئترلرینه اویغون هئچ بیر نتیجه تاپیلمادی.",
+ "abusefilter-topnav": "'''خارابکارلیق فیلتری دولانماسی'''",
+ "abusefilter-topnav-home": "ائو",
+ "abusefilter-topnav-test": "پاکئت تئست لشدیرمه",
+ "abusefilter-topnav-examine": "گئچمیش دییشیک‌لیک‌لری ایمتحانلا",
+ "abusefilter-topnav-log": "سوی-ایستیفاده ژورنا‌لی",
+ "abusefilter-topnav-tools": "اشکال آییر ائتمه واسطه‌لری",
+ "abusefilter-topnav-import": "فیلتر ایدخا‌لی",
+ "abusefilter-log-name": "خارابکارلیق فیلتری ژورنالی",
+ "abusefilter-log-header": "بو ژورنال، فیلترلر دییشیک‌لیک‌لرین بیر قیساسینی گؤستریر.\nبوتون ایطلاعات اوچون، سون فیلتر دییشیک‌لیک‌لری [[Special:AbuseFilter/history|لیستینه]] باخین.",
+ "abusefilter-log-noresults": "نتیجه یوخ‌دور",
+ "abusefilter-diff-title": "نسخه لر آراسین‌داکی فرق‌لر",
+ "abusefilter-diff-item": "آیتم",
+ "abusefilter-diff-version": "$1-نین نسخه سی، $2",
+ "abusefilter-diff-info": "اصلی ایطلاعات",
+ "abusefilter-diff-pattern": "فیلتر شرط‌لری",
+ "abusefilter-diff-invalid": "ایستدیگینیز نسخه لر آلینا بیلمیر",
+ "abusefilter-diff-backhistory": "فیلتر کئچمیشینه گئری قاییت",
+ "abusefilter-import-intro": "بو اینتئرفئیسی دیگر ویکی فیلترلری ایچه کؤچورمک اوچون ایستیفاده ائده بیلرسینیز.\nقایناق ویکی، دییشدیرمه اینتئرفئیسینده \"{{int:abusefilter-edit-export}}\" این آلتین‌داکی \"{{int:abusefilter-edit-tools}}\" آ داخیل اولون.\nگؤرونن متن قوتوسون‌دان کؤچور، و بو متن قوتوسونا یاپیش‌دیرین، داها سونرا \"{{int:abusefilter-import-submit}}\" آ باسین،",
+ "abusefilter-import-submit": "معلومات‌لاری ایچری اؤتور",
+ "abusefilter-group-default": "فرض ائدیلن"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/ba.json b/www/wiki/extensions/AbuseFilter/i18n/ba.json
new file mode 100644
index 00000000..5bca4575
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/ba.json
@@ -0,0 +1,413 @@
+{
+ "@metadata": {
+ "authors": [
+ "Alfiya55",
+ "Assele",
+ "Comp1089",
+ "Haqmar",
+ "Sagan",
+ "Рустам Нурыев",
+ "Азат Хәлилов",
+ "З. ӘЙЛЕ",
+ "Лилиә",
+ "Ләйсән",
+ "Matma Rex"
+ ]
+ },
+ "abusefilter-desc": "Төҙәтеүҙәргә эвристик һөҙгөстәр ҡуйырға мөмкинлек бирә.",
+ "abusefilter": "Урынһыҙ файҙаланыуҙар һөҙгөсөн көйләү",
+ "abuselog": "Урынһыҙ файҙаланыуҙар яҙмалары журналы",
+ "abusefilter-intro": "Урынһыҙ файҙаланыуҙар һөҙгөсөн көйләү битенә рәхим итегеҙ!\nУрынһыҙ файҙаланыуҙар һөҙгөсө ҡатнашыусыларҙың ҡулланыуына яраҡлаштырылған автоматик механизм булып тора. Исемлектә бөтә ҡуйылған һөҙгөстәр күрһәтелгән, һәм уларҙы уҙгәртеү мөмкинлеге бирелгән.",
+ "abusefilter-mustbeeditor": "Хәүефһеҙлек маҡсаттарында был интерфейсты урынһыҙ файҙаланыуҙар һөҙгөсөн үҙгәртеү хоҡуғы булған ҡатнашыусылар ғына үҙгәртә ала.",
+ "abusefilter-warning": "'''Иғтибар!''' Был ғәмәл автоматик рәүештә зыянлы тип билдәләнде. Эшлекһеҙ ғәмәлдәр тиҙ арала юйыласаҡ, тупаҫ төҙәтеүҙәр һәм ҡабатланған эшлекһеҙ төҙәтеүҙәр һеҙҙең иҫәп яҙмағыҙ йәки IP-адресығыҙ бикләнеүгә килтерәсәк.\nӘгәр был төҙәтеү эшлекле тип уйлаһағыҙ, ебәреү йә һаҡлау төймәһенә тағы баҫығыҙ.\nҺеҙҙең ғәмәлегеҙҙе зыянлы тип билдәләүсе ҡағиҙәнең ҡыҫҡаса тасуирламаһы: $1",
+ "abusefilter-disallowed": "Был ғәмәл автоматик рәүештә зыянлы тип билдәләнде, шуға күрә рөхсәт ителмәй.\nӘгәр был төҙәтеү эшлекле тип уйлаһағыҙ, хакимгә мөрәжәғәт итегеҙ һәм нимә эшләргә тырышҡанығыҙҙы аңлатығыҙ.\nҺеҙҙең ғәмәлегеҙҙе зыянлы тип билдәләүсе ҡағиҙәнең ҡыҫҡаса тасуирламаһы: $1.",
+ "abusefilter-blocked-display": "Был ғәмәл автоматик рәүештә зыянлы тип билдәләнде, шуға күрә уны башҡарыу тыйылды.\nБынан тыш, {{SITENAME}} проектының именлеген һаҡлау өсөн, һеҙҙең иҫәп яҙмағыҙ һәм уға бәйле IP-адрестар бикләнде.\nӘгәр был хата буйынса килеп сыҡҡан, тип һанаһағыҙ, хакимгә мөрәжәғәт итегеҙ.\nҺеҙҙең ғәмәлегеҙҙе зыянлы тип билдәләүсе ҡағиҙәнең ҡыҫҡаса тасуирламаһы: $1.",
+ "abusefilter-degrouped": "Был ғәмәл автоматик рәүештә зыянлы тип билдәләнде.\nШуға ла үтәлмәй ҡалды, һеҙҙең иҫәп яҙмағыҙ зыянлы тип танылды, уның бар хоҡуҡтары кире алынды.\nӘгәр был хаталы тип уйлаһағыҙ, хакимға мөрәжәғәт итеп, нимә эшләргә теләгәнегеҙҙе аңлатығыҙ, һәм һеҙҙең хоҡуҡтарығыҙ тергеҙеләсәк.\nҺеҙҙең ғәмәлегеҙҙе зыянлы тип билдәләүсе ҡағиҙәнең ҡыҫҡаса тасуирламаһы: $1",
+ "abusefilter-autopromote-blocked": "Был ғәмәл автоматик рәүештә зыянлы тип танылды, шуға күрә ул үтәлеүҙән тыйылды.\nШулай уҡ хәүефһеҙлек маҡсаттарында теркәлгән иҫәп яҙыуҙарҙа ғәҙәттә бирелә торған ҡайһы бер мөмкилектәр һеҙҙең иҫәп яҙыуығыҙҙан ваҡытлыса кире алынды.\nҺеҙҙең ғәмәлегеҙҙе зыянлы тип билдәләүсе ҡағиҙәнең ҡыҫҡаса тасуирламаһы: $1",
+ "abusefilter-blocker": "Урынһыҙ файҙаланыуҙар һөҙгөсө",
+ "abusefilter-blockreason": "Урынһыҙ файҙаланыуҙар һөҙгөсө тарафынан бикләнгән.\nБикләүсе ҡағиҙәнең тасуирламаһы:: $1",
+ "abusefilter-degroupreason": "Урынһыҙ файҙаланыуҙар һөҙгөсө автоматик рәүештә хоҡуҡтарҙы кире алды.\nҠағиҙә тураһында мәғлүмәт: $1",
+ "abusefilter-accountreserved": "Был иҫәп яҙыуы урынһыҙ файҙаланыуҙар һөҙгөсө өсөн асылған.",
+ "right-abusefilter-modify": "Урынһыҙ файҙаланыуҙар һөҙгөстәрен үҙгәртеү",
+ "right-abusefilter-view": "Урынһыҙ файҙаланыуҙар һөҙгөстәрен ҡарау",
+ "right-abusefilter-log": "Урынһыҙ файҙаланыу яҙмалары журналын ҡарау",
+ "right-abusefilter-log-detail": "Урынһыҙ файҙаланыуҙар яҙмалары журналындағы ентекле яҙмаларҙы ҡарау",
+ "right-abusefilter-private": "Урынһыҙ файҙаланыуҙар яҙмалары журналындағы шәхси мәғлүмәтте ҡарау",
+ "right-abusefilter-modify-restricted": "Сикләү ғәмәлдәрен башҡарған һөҙгөстәрҙе үҙгәртеү",
+ "right-abusefilter-revert": "Урынһыҙ файҙаланыуҙар һөҙгөсө башҡарған үҙгәрештәрҙе кире алыу",
+ "right-abusefilter-view-private": "Шәхси тип билдәләнгән урынһыҙ файҙаланыу һөҙгөстәрен ҡарау",
+ "right-abusefilter-log-private": "Шәхси тип билдәләнгән насар ҡулланыу фильтры журналының яҙмаларын ҡарау",
+ "right-abusefilter-hide-log": "Урынһыҙ файҙаланыуҙар яҙмалары журналындағы яҙмаларҙы йәшереү",
+ "right-abusefilter-hidden-log": "Урынһыҙ файҙаланыуҙар яҙмалары журналындағы йәшерен яҙмаларҙы ҡарау",
+ "right-abusefilter-modify-global": "Намыҫһыҙ ҡулланыу глобаль фильтрын булдырыу йәки үҙгәртеү",
+ "action-abusefilter-modify": "Урынһыҙ файҙаланыу һөҙгөстәрен үҙгәртеү",
+ "action-abusefilter-view": "Урынһыҙ файҙаланыу һөҙгөстәрен ҡарау",
+ "action-abusefilter-log": "Урынһыҙ файҙаланыу яҙмалары журналын ҡарау",
+ "action-abusefilter-log-detail": "Урынһыҙ файҙаланыуҙар яҙмалары журналындағы ентекле яҙмаларҙы ҡарау",
+ "action-abusefilter-private": "Урынһыҙ файҙаланыуҙар яҙмалары журналындағы шәхси мәғлүмәтте ҡарау",
+ "action-abusefilter-modify-restricted": "Сикләү ғәмәлдәрен башҡарған һөҙгөстәрҙе үҙгәртеү",
+ "action-abusefilter-revert": "Урынһыҙ файҙаланыуҙар һөҙгөсө башҡарған үҙгәрештәрҙе кире алыу",
+ "action-abusefilter-view-private": "Шәхси тип билдәләнгән урынһыҙ файҙаланыу һөҙгөстәрен ҡарау",
+ "abusefilter-log": "Урынһыҙ файҙаланыуҙар яҙмалары журналы",
+ "abusefilter-log-summary": "Был журналда барлыҡ һөҙгөстәр тарафынан тотолған ғәмәлдәр исемлеге күрһәтелгән.",
+ "abusefilter-log-search": "Урынһыҙ файҙаланыуҙар яҙмалары журналында эҙләү",
+ "abusefilter-log-search-user": "Ҡатнашыусы:",
+ "abusefilter-log-search-filter": "Фильтр идентификаторы:(вертикаль һыҙат символы менән айырылған)",
+ "abusefilter-log-search-title": "Исеме:",
+ "abusefilter-log-search-wiki": "Вики:",
+ "abusefilter-log-search-submit": "Табырға",
+ "abusefilter-log-entry": "$1: $4 битендә «$3» ғәмәлен башҡарып, $2 урынһыҙ файҙаланыуҙар һөҙгөсө эшләүенә {{GENDER:$8|вызвал|килтерҙе}}.\nБашҡарылған ғәмәлдәр: $5;\nҺөҙгөс тасуирламаһы: $6",
+ "abusefilter-log-entry-withdiff": "$1: $2 фильтр эшләүенә килтерҙе, \"$3\" өсөн $4 ғәмәле башҡарылды.\nБашҡарылған ғәмәл: $5;\nФильтрҙың тасуирламаһы: $6 ($7)",
+ "abusefilter-log-detailedentry-meta": "$1: $2 $5 битендә \"$4\" ғәмәлен башҡарып, $3 һөҙгөсө эшләүенә килтерҙе.\nҺөҙгөс тарафынан башҡарылған ғәмәлдәр: $6;\nҺөҙгөстөң тасуирламаһы: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "$1 дөйөм һөҙгөсө",
+ "abusefilter-log-detailedentry-local": "$1 фильтрын",
+ "abusefilter-log-detailslink": "ентеклерәк",
+ "abusefilter-log-diff": "айыр.",
+ "abusefilter-log-hidelink": "күренеште көйләргә",
+ "abusefilter-log-details-legend": "Журналдың $1 яҙмаһы тураһында ентекле мәғлүмәт",
+ "abusefilter-log-details-var": "Үҙгәреүсән дәүмәл",
+ "abusefilter-log-details-val": "Ҡиммәт",
+ "abusefilter-log-details-vars": "Ғәмәлдең параметрҙары",
+ "abusefilter-log-details-private": "Шәхси мәғлүмәттәр",
+ "abusefilter-log-details-ip": "Сығанаҡ IP адрес",
+ "abusefilter-log-noactions": "юҡ",
+ "abusefilter-log-details-diff": "Мөхәррирләүҙә башҡарылған үҙгәртеүҙәр",
+ "abusefilter-log-linkoncontribs": "урынһыҙ файҙаланыуҙар яҙмалары журналы",
+ "abusefilter-log-linkoncontribs-text": "Был ҡатнашыусы өсөн урынһыҙ файҙаланыуҙар журналы яҙмалары",
+ "abusefilter-log-hidden": "(яҙма йәшерелгән)",
+ "abusefilter-log-hidden-implicit": "(йәшерелгән, сөнки төҙәтеү юйылған)",
+ "abusefilter-log-cannot-see-details": "Был яҙманың ентекле мәғлүмәттәрен ҡарау өсөн хоҡуғығыҙ юҡ.",
+ "abusefilter-log-details-hidden": "Һеҙ был яҙма тураһында ентекле мәғлүмәт ҡарай алмайһығыҙ, сөнки ул йәшерелгән.",
+ "abusefilter-log-private-not-included": "Һеҙ һораған бер йәки бер нисә һөҙгәс индентификаторы шәхси булып тора. Шәхси һөҙгөстәрҙең мәғлүмәттәрен ҡарай алмағанлыҡтан, улар эҙләүҙә файҙаланылмаясаҡ.",
+ "abusefilter-log-hide-legend": "Яҙманы йәшерергә",
+ "abusefilter-log-hide-id": "Яҙманың идентификаторы:",
+ "abusefilter-log-hide-hidden": "Был яҙманы дөйөм ҡарауҙан йәшерергә",
+ "abusefilter-log-hide-reason": "Сәбәп:",
+ "abusefilter-log-hide-forbidden": "Һеҙҙең урынһыҙ файҙаланыуҙар яҙмалары журналындағы яҙмаларҙы йәшереү хоҡуғығыҙ юҡ.",
+ "abusefilter-logentry-suppress": "\"[[$1]]\" яҙмаһын йәшерергә",
+ "abusefilter-logentry-unsuppress": "\"[[$1]]\" яҙмаһын күрһәтергә",
+ "logentry-abusefilter-hit": "$1 ҡулланыусыһы $3 битендә \"$5\" ғәмәлен эшләп $4 фильтрын хәрәкәткә килтерҙе. Башҡарылған хәрәкәт: $6 ($7)",
+ "abusefilter-management": "Урынһыҙ файҙаланыуҙар һөҙгөсө менән идара итеү",
+ "abusefilter-list": "Бар һөҙгөстәр",
+ "abusefilter-list-id": "Һөҙгөс идентификаторы",
+ "abusefilter-list-status": "Статус",
+ "abusefilter-list-public": "Дөйөм тасуирлама",
+ "abusefilter-list-consequences": "Эҙемтәләр",
+ "abusefilter-list-visibility": "Күренеүсәнлек",
+ "abusefilter-list-hitcount": "Башҡарылыу һаны",
+ "abusefilter-list-edit": "Үҙгәртергә",
+ "abusefilter-list-details": "Ентеклерәк",
+ "abusefilter-list-limit": "Бер биткә һөҙгөстәр һаны:",
+ "abusefilter-list-lastmodified": "Һуңғы үҙгәртеү",
+ "abusefilter-list-group": "Фильтр төркөмө",
+ "abusefilter-hidden": "Шәхси",
+ "abusefilter-unhidden": "Дөйөм",
+ "abusefilter-enabled": "Асыҡ",
+ "abusefilter-deleted": "Юйылған",
+ "abusefilter-disabled": "Ябыҡ",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|эшләп китеү|эшләп китеүҙәр}}",
+ "abusefilter-new": "Яңы һөҙгөс булдырырға",
+ "abusefilter-return": "Һөҙгөстәр менән идаралауға ҡайтырға",
+ "abusefilter-status-global": "Дөйөм",
+ "abusefilter-list-options": "Көйләүҙәр",
+ "abusefilter-list-options-deleted": "Юйылған һөҙгөстәр:",
+ "abusefilter-list-options-deleted-only": "Юйылған һөҙгөстәрҙе генә күрһәтергә",
+ "abusefilter-list-options-deleted-hide": "Юйылған һөҙгөстәрҙе йәшерергә",
+ "abusefilter-list-options-deleted-show": "Юйылған һөҙгөстәрҙе күрһәтергә",
+ "abusefilter-list-options-scope": "Фильтрҙарҙы күрһәтергә:",
+ "abusefilter-list-options-scope-local": "Бары тик урындағы ҡағиҙәләр",
+ "abusefilter-list-options-scope-global": "Бары тик глобаль ҡағиҙәләр",
+ "abusefilter-list-options-scope-all": "Урындағы һәм глобаль ҡағиҙәләр",
+ "abusefilter-list-options-disabled": "Ябылған һөҙгөстәр:",
+ "abusefilter-list-options-hidedisabled": "Ябылған һөҙгөстәрҙе йәшерергә",
+ "abusefilter-list-options-submit": "Яңыртырға",
+ "abusefilter-tools-text": "Бында урынһыҙ файҙаланыуҙар һөҙгөсөн билдәләүҙә һәм төҙәтеүҙә файҙалы булырлыҡ ҡайһы бер ҡоралдар урынлашҡан.",
+ "abusefilter-tools-expr": "Аңлатманы тикшереү",
+ "abusefilter-tools-submitexpr": "Баһаларға",
+ "abusefilter-tools-reautoconfirm": "\"Үҙенән-үҙе раҫланған\" торошон тергеҙергә",
+ "abusefilter-tools-reautoconfirm-user": "Ҡатнашыусы:",
+ "abusefilter-tools-reautoconfirm-submit": "Яңынан автоматик раҫларға",
+ "abusefilter-reautoconfirm-none": "Был {{GENDER:$1|ҡатнашыусының}} \"үҙенән-үҙе раҫланған\" торошо һүндерелмәгән.",
+ "abusefilter-reautoconfirm-notallowed": "Һеҙгә \"үҙенән-үҙе раҫланған\" торошон тергеҙеү рөхсәт ителмәй.",
+ "abusefilter-reautoconfirm-done": "Иҫәп яҙмаһының \"үҙенән-үҙе раҫланған\" торошо тергеҙелгән.",
+ "abusefilter-status": "Һуңғы $1 {{PLURAL:$1|ғәмәлдән}} $2 ғәмәл ($3%) $4 сикләү шартына эләкте, $5 ғәмәл ($6%) хәҙерге ваҡытта эшләүсе һөҙгөстәрҙең береһенә тап килә.",
+ "abusefilter-edit": "Яуыз ниәттә файҙаланыуҙар һөҙгөсөн төҙәтергә",
+ "abusefilter-edit-subtitle": "$1 һөҙгөсөн үҙгәртеү",
+ "abusefilter-edit-subtitle-new": "Фильтр яһау",
+ "abusefilter-edit-oldwarning": "<strong>Һеҙ был һөҙгөстөң иҫке өлгөһөн үҙгәртәһегеҙ.\nКилтерелгән статистика — һөҙгөстөң һуңғы өлгөһө өсөн.\nӘгәр үҙгәртеүҙәрегеҙҙе һаҡлаһағыҙ, һеҙ әле үҙгәрткән өлгөнән һуңғы барлыҡ үҙгәртеүҙәрҙең өҫтөнә яҙҙырасаҡһығыҙ.</strong> &bull;\n[[Special:AbuseFilter/history/$2|Һөҙгөстөң тарихы битенә кире ҡайтырға]].",
+ "abusefilter-edit-status-label": "Статистика:",
+ "abusefilter-edit-status": " {{PLURAL:$1|һуңғы $1 ғәмәленән|һуңғы $1 ғәмәлдәренән}} был фильтр $2-гә ($3%) тап килә.",
+ "abusefilter-edit-status-profile": "Һуңғы $1 {{PLURAL:$1|1=ғәмәлдән}} был һөҙгөс $2 ғәмәл менән ($3%) тап килә.\nУның уртаса башҡарылыу ваҡыты — $4 мс, ул сикләү шартынан $5 {{PLURAL:$5|шарт}} ҡуллана.",
+ "abusefilter-edit-new": "Яңы һөҙгөс",
+ "abusefilter-edit-save": "Һөҙгөстө һаҡларға",
+ "abusefilter-edit-id": "Һөҙгөс идентификаторы:",
+ "abusefilter-edit-description": "Тасуирлама:\n:''(дөйөм асыҡ)''",
+ "abusefilter-edit-group": "Фильтр төркөмө:",
+ "abusefilter-edit-flags": "Билдәләр:",
+ "abusefilter-edit-enabled": "Был һөҙгөстө асырға",
+ "abusefilter-edit-deleted": "Юйылған тип билдәләргә",
+ "abusefilter-edit-hidden": "Был һөҙгөс тураһында ентекле мәғлүмәтте дөйөм ҡарауҙан йәшерергә",
+ "abusefilter-edit-global": "Глобаль фильтр",
+ "abusefilter-edit-rules": "Шарттар:",
+ "abusefilter-edit-notes": "Иҫкәрмәләр",
+ "abusefilter-edit-lastmod": "Һөҙгөстөң һүңғы үҙгәртеүҙәре:",
+ "abusefilter-edit-lastmod-text": "$1 $2 тарафынан",
+ "abusefilter-edit-hitcount": "Һөҙгөстөң башҡарылыу һаны:",
+ "abusefilter-edit-consequences": "Тап килгәндә башҡарыла торған ғәмәлдәр",
+ "abusefilter-edit-action-warn": "Был ғәмәлдәрҙе ҡатнашыусыны иҫкәрткәндән һуң башҡарырға",
+ "abusefilter-edit-action-disallow": "Ҡатнашыусыға һоратылған ғәмәде башҡарырға рөхсәт итмәҫкә",
+ "abusefilter-edit-action-blockautopromote": "Ҡатнашыусынан \"үҙенән-үҙе раҫланған\" торошон алырға",
+ "abusefilter-edit-action-degroup": "Ҡатнашыусыны бөтә өҫтөнлөклө төркөмдәрҙан сығарырға",
+ "abusefilter-edit-action-block": "Ҡатнашыусыны һәм/йәки IP адресты бикләргә",
+ "abusefilter-edit-action-throttle": "Ғәмәлде ҡатнашыусы билдәләнгән сикте уҙһа ғына башҡарырға",
+ "abusefilter-edit-action-rangeblock": "Ҡатнашыусы эшләгән /16 адрестар арауығын бикләргә",
+ "abusefilter-edit-action-tag": "Үҙгәртеүҙе артабанғы тикшереү өсөн билдәләргә",
+ "abusefilter-edit-throttle-count": "Рөхсәт ителгән ғәмәлдәр һаны:",
+ "abusefilter-edit-throttle-period": "Ваҡыт арауығы:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|1=секунд|секунд}}",
+ "abusefilter-edit-throttle-groups": "Группалар буйынса тарайтыу:\n:''(һәр юлға берҙе, өтөрҙәр менән айырырға)''",
+ "abusefilter-edit-warn-message": "Иҫкәрмә өсөн ҡулланылған система хәбәре:",
+ "abusefilter-edit-warn-other": "Башҡа хәбәр",
+ "abusefilter-edit-warn-other-label": "Башҡа хәбәр битенең исеме:\n: ''(MediaWiki ҡушылмаһын яҙмаҫҡа)''",
+ "abusefilter-edit-warn-actions": "Ғәмәлдәр:",
+ "abusefilter-edit-warn-preview": "Һайланған хәбәрҙе ҡарап сығыу",
+ "abusefilter-edit-warn-edit": "Һайланған хәбәрҙе Булдырырға/Үҙгәртергә",
+ "abusefilter-edit-tag-tag": "Ҡулланылыусылар [[Special:Tags|билдәләр]] (һәр юлға берҙе):",
+ "abusefilter-edit-denied": "Һеҙ был һөҙгөс тураһында ентекле мәғлүмәт ҡарай алмайһығыҙ, сөнки ул дөйөм ҡарауҙан йәшерелгән.",
+ "abusefilter-edit-main": "Һөҙгөстөң параметрҙары",
+ "abusefilter-edit-done-subtitle": "Һөҙгөс үҙгәртелде",
+ "abusefilter-edit-done": "Һеҙ [[Special:AbuseFilter/$1|һөҙгөсөндә $3]] [[Special:AbuseFilter/history/$1/diff/prev/$2үҙгәртеүҙәрҙе]] уңышлы һаҡланығыҙ.",
+ "abusefilter-edit-badsyntax": "Билдәләнгән һөҙгөстә синтаксик хаталар бар.\nУҡыу ҡоралы түбәндәге хәбәрҙе ҡайтарҙы: $1",
+ "abusefilter-edit-restricted": "Һеҙ был һөҙгөстө үҙгәртә алмайһығыҙ, сөнки уның бер йәки бер нисә сикләүсе ғәмәле бар.\nЗинһар, хоҡуҡтары булған ҡатнашыусынан һөҙгөстө үҙгәртеү ғәмәлен өҫтәүен һорағыҙ.",
+ "abusefilter-edit-viewhistory": "Был һөҙгөстөң тарихын ҡарарға",
+ "abusefilter-edit-history": "Тарих:",
+ "abusefilter-edit-check": "Синтаксисты тикшерергә",
+ "abusefilter-edit-badfilter": "Һеҙ күрһәткән һөҙгөс юҡ.",
+ "abusefilter-edit-revert": "Был һөҙгөс тарафынан башҡарылған ғәмәлдәрҙе кире алырға",
+ "abusefilter-edit-tools": "Ҡоралдар:",
+ "abusefilter-edit-test-link": "Был һөҙгөстө һуңғы үҙгәртеүҙәрҙә тикшерергә",
+ "abusefilter-edit-export": "Был һөҙгөстө башҡа вики проектҡа сығарырға",
+ "abusefilter-edit-syntaxok": "Синтаксик хаталар табылманы.",
+ "abusefilter-edit-syntaxerr": "Синтаксик хата табылды: $1",
+ "abusefilter-edit-bad-tags": "Һеҙ күрһәткән бер йәки бер нисә билдә дөрөс түгел.\nБилдә ҡыҫҡа булырға тейеш, һам унда махсус хәрефтәр булмаҫҡа тейеш.",
+ "abusefilter-edit-notallowed": "Һеҙҙең урынһыҙ файҙаланыу һөҙгөстәрен булдырыу йәки үҙгәртеү хоҡуғығыҙ юҡ.",
+ "abusefilter-edit-notallowed-global": "Һеҙҙең урынһыҙ файҙаланыу һөҙгөстәрен булдырыу йәки үҙгәртеү хоҡуғығыҙ юҡ.",
+ "abusefilter-edit-notallowed-global-custom-msg": "Файҙаланыусыларға иҫкәртеү хәбәрҙәре өсөн глобаль һөҙгөстәр ҡулланылмай",
+ "abusefilter-edit-builder-select": "Исемлектән өҫтәр өсөн юл һайлағыҙ",
+ "abusefilter-edit-builder-group-op-arithmetic": "Арифметик операторҙар",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Ҡушыу (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Алыу (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Ҡабатлау (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Бүлеү (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Модуль (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Дәрәжә (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Сағыштырыу операторҙары",
+ "abusefilter-edit-builder-op-comparison-equal": "Тигеҙ (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Тигеҙ түгел (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "Бәләкәйерәк (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Ҙурыраҡ (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Бәләкәйерәк йәки тигеҙ (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Ҙурыраҡ йәки тигеҙ (<=)",
+ "abusefilter-edit-builder-group-op-bool": "Булево операторҙары",
+ "abusefilter-edit-builder-op-bool-not": "ТҮГЕЛ (!)",
+ "abusefilter-edit-builder-op-bool-and": "Һәм (&)",
+ "abusefilter-edit-builder-op-bool-or": "Йәки (|)",
+ "abusefilter-edit-builder-group-misc": "Төрлө",
+ "abusefilter-edit-builder-misc-in": "юлында бар (in)",
+ "abusefilter-edit-builder-misc-like": "Ҡалыпҡа тап килә (like)",
+ "abusefilter-edit-builder-misc-rlike": "Регуляр аңлатмаға тап килә (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "Регуляр аңлатмаға тап килә, ҙур/бәләкәй хәрефкә һиҙгер түгел (irlike)",
+ "abusefilter-edit-builder-misc-contains": "Һул яҡ юл уң яҡ юлды үҙ эсенә ала (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "Хәрефле аңлатма (\"\")",
+ "abusefilter-edit-builder-misc-tern": "Өсәүле оператор (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "Шартлы (if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "Функциялар",
+ "abusefilter-edit-builder-funcs-length": "Юл оҙонлоғо (length)",
+ "abusefilter-edit-builder-funcs-lcase": "Бәләкәй хәрефтәргә күсерергә (lcase)",
+ "abusefilter-edit-builder-funcs-ucase": "Юғарғы регистрға",
+ "abusefilter-edit-builder-funcs-ccnorm": "Күп мәғәнәле хәрефтәрҙе нормалләштерегә (ccnorm)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "Ҡабатланған хәрефтәрҙе юйырға (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "Махсус хәрефтәр / бөтә хәрефтәр (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "Нормалләштерергә (norm)",
+ "abusefilter-edit-builder-funcs-count": "X юлының Y юлында осрауҙары һаны (count)",
+ "abusefilter-edit-builder-funcs-rcount": "X регуляр аңлатмаһының Y юлында осрауҙары һаны (rcount)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "Буш юлдарҙы юйырға (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "Махсус хәрефтәрҙе юйырға (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "IP адрестың арауыҡҡа кереүе (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "Күрһәтелгән юлдар теҙеменең ҡайһыһы булһа ла юлда осрай (contains_any)",
+ "abusefilter-edit-builder-funcs-substr": "Эске юл (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "Эске юлдың юлдағы урыны (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "Эске юлды икенсе юл менән алыштырыу (str_replace)",
+ "abusefilter-edit-builder-funcs-rescape": "Юлды һүҙбәйләнеш кеүек һаҡларға (rescape)",
+ "abusefilter-edit-builder-funcs-set_var": "Үҙгәреүсән дәүмәлде билдәләргә (set_var)",
+ "abusefilter-edit-builder-group-vars": "Үҙгәреүсән дәүмәлдәр",
+ "abusefilter-edit-builder-vars-accountname": "Иҫәп яҙмаһының исеме (иҫәп яҙмаһы булдырғанда)",
+ "abusefilter-edit-builder-vars-timestamp": "Үҙгәртеүҙең Unix-ваҡыты",
+ "abusefilter-edit-builder-vars-action": "Ғәмәл",
+ "abusefilter-edit-builder-vars-addedlines": "Үҙгәртеүҙә өҫтәлгән юлдар",
+ "abusefilter-edit-builder-vars-delta": "Үҙгәртеүҙә күләмдең үҙгәреүе",
+ "abusefilter-edit-builder-vars-diff": "Үҙгәртеүҙең бер төрләштерелгән айырмаһы",
+ "abusefilter-edit-builder-vars-newsize": "Биттең яңы күләме",
+ "abusefilter-edit-builder-vars-oldsize": "Биттең элекке күләме",
+ "abusefilter-edit-builder-vars-removedlines": "Үҙгәртеүҙә юйылған юлдар",
+ "abusefilter-edit-builder-vars-summary": "Үҙгәртеүҙең тасуирламаһы/сәбәбе",
+ "abusefilter-edit-builder-vars-article-id": "Биттең идентификаторы",
+ "abusefilter-edit-builder-vars-article-ns": "Биттең исемдәр арауығы",
+ "abusefilter-edit-builder-vars-article-text": "Биттең исеме (исемдәр арауыҡһыҙ)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Биттең тулы исеме",
+ "abusefilter-edit-builder-vars-article-views": "Биттәрҙе байҡау",
+ "abusefilter-edit-builder-vars-movedfrom-id": "Исеме үҙгәртелә торған биттең идентификаторы",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "Исеме үҙгәртелә торған биттең исемдәр арауығы",
+ "abusefilter-edit-builder-vars-movedfrom-text": "Исеме үҙгәртелә торған биттең исеме",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "Исеме үҙгәртелә торған биттең тулы исеме",
+ "abusefilter-edit-builder-vars-movedto-id": "Исеме үҙгәртелгән биттең идентификаторы",
+ "abusefilter-edit-builder-vars-movedto-ns": "Исеме үҙгәртелгән биттең исемдәр арауығы",
+ "abusefilter-edit-builder-vars-movedto-text": "Исеме үҙгәртелгән биттең исеме",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "Исеме үҙгәртелгән биттең тулы исеме",
+ "abusefilter-edit-builder-vars-user-editcount": "Ҡатнашыусының үҙгәртеүҙәр һаны",
+ "abusefilter-edit-builder-vars-user-age": "Иҫәп яҙмаһының йәше",
+ "abusefilter-edit-builder-vars-user-name": "Иҫәп яҙмаһының исеме",
+ "abusefilter-edit-builder-vars-user-groups": "Ҡатнашыусы ингән төркөмдәр (асыҡ булмағандар менән бергә)",
+ "abusefilter-edit-builder-vars-user-rights": "Ҡатнашыусылың хоҡуҡтары",
+ "abusefilter-edit-builder-vars-user-blocked": "Ҡулланыусы блокланғанмы",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "Электрон почта адресының раҫланыу ваҡыты",
+ "abusefilter-edit-builder-vars-recent-contributors": "Битте мөхәррирләгән һуңғы ун ҡатнашыусы",
+ "abusefilter-edit-builder-vars-first-contributor": "Биткә үҙ өлөшөн индергән беренсе ҡатнашыусы",
+ "abusefilter-edit-builder-vars-all-links": "Яңы эстәлектәге бөтә тышҡы һылтанмалар",
+ "abusefilter-edit-builder-vars-added-links": "Үҙгәртеүҙә өҫтәлгән бөтә тышҡы һылтанмалар",
+ "abusefilter-edit-builder-vars-removed-links": "Үҙгәртеүҙә юйылған бөтә тышҡы һылтанмалар",
+ "abusefilter-edit-builder-vars-old-text": "Элекке викитекст, битте үҙгәрткәнгә тиклем",
+ "abusefilter-edit-builder-vars-new-text": "Яңы викитекст, битте үҙгәрткәндән һуң",
+ "abusefilter-edit-builder-vars-new-pst": "Яңы биттең һаҡлар алдынан үҙгәртелгән викитексы",
+ "abusefilter-edit-builder-vars-diff-pst": "Мөхәррирләү барышында унификацияланған, һаҡлау алдынан үҙгәртелгән diff үҙгәрештәр",
+ "abusefilter-edit-builder-vars-addedlines-pst": "Мөхәррирләү барышында өҫтәлгән, һаҡлау алдынан үҙгәртелгән юлдар",
+ "abusefilter-edit-builder-vars-new-text-stripped": "Биттең яңы эстәлеге, билдәләрҙән таҙартылған",
+ "abusefilter-edit-builder-vars-new-html": "Яңы өлгөнөң HTML-сығанағы",
+ "abusefilter-edit-builder-vars-restrictions-edit": "Биттең үҙгәртеүҙәрҙән һаҡланыу дәрәжәһе",
+ "abusefilter-edit-builder-vars-restrictions-move": "Биттең исемен үҙгәртеүҙәрҙән һаҡланыу дәрәжәһе",
+ "abusefilter-edit-builder-vars-restrictions-create": "Битте һаҡларға",
+ "abusefilter-edit-builder-vars-restrictions-upload": "Файл һаҡлауын йөкләргә",
+ "abusefilter-edit-builder-vars-old-text-stripped": "Биттең элекке эстәлеге, билдәләрҙән таҙартылған",
+ "abusefilter-edit-builder-vars-old-links": "Биттәге һылтанмалар, үҙгәртеүгә тиклем",
+ "abusefilter-edit-builder-vars-old-html": "Иҫке биттең викитексты, HTML-ға үҙгәртелгән",
+ "abusefilter-edit-builder-vars-minor-edit": "Үҙгәртеү \"әҙ үҙгәртеүҙәр\" тип билдәләнгәнме, юҡмы",
+ "abusefilter-edit-builder-vars-file-sha1": "Файл эстәлегенең SHA1-хэшы",
+ "abusefilter-edit-builder-vars-file-size": "Файлдың байттарҙағы күләме",
+ "abusefilter-filter-log": "Һөҙгөстәрҙә һүңғы үҙгәртеүҙәр",
+ "abusefilter-history": "№$1 урынһыҙ ҡулланыуҙар һөҙгөсөн үҙгәртеүҙәр тарихы",
+ "abusefilter-history-foruser": "$1 тарафынан керетелгән үҙгәртеүҙәр",
+ "abusefilter-history-hidden": "Йәшерен",
+ "abusefilter-history-enabled": "Асыҡ",
+ "abusefilter-history-global": "Дөйөм",
+ "abusefilter-history-timestamp": "Ваҡыт",
+ "abusefilter-history-user": "Ҡулланыусы",
+ "abusefilter-history-public": "Дөйөм һөҙгөс тасуирламаһы",
+ "abusefilter-history-flags": "Билдәләр",
+ "abusefilter-history-filter": "Һөҙгөстөң ҡағиҙәләре",
+ "abusefilter-history-comments": "Иҫкәрмәләр",
+ "abusefilter-history-actions": "Ғәмәлдәр",
+ "abusefilter-history-backedit": "Һөҙгөстө мөхәррирләү ҡоралына кире ҡайтырға",
+ "abusefilter-history-deleted": "Юйылған",
+ "abusefilter-history-filterid": "Һөҙгөс",
+ "abusefilter-history-select-legend": "Эҙләүҙе яҡшыртырға",
+ "abusefilter-history-select-user": "Ҡулланыусы:",
+ "abusefilter-history-select-submit": "Яҡшыртырға",
+ "abusefilter-history-diff": "Үҙгәрештәр",
+ "abusefilter-history-error-hidden": "Һоратылған һөҙгөс йәшерелгән, һеҙ уның тарихын ҡарай алмайһығыҙ.",
+ "abusefilter-exception-unexpectedatend": "$1 урында көтөлмәгән \"$2\".",
+ "abusefilter-exception-expectednotfound": "$1 урында көтөлгән $2 табылманы (урынына $3 $4 табылды).",
+ "abusefilter-exception-unrecognisedkeyword": "$1 урында танылмаған $2 асҡыс һүҙе.",
+ "abusefilter-exception-unexpectedtoken": "$1 урында көтөлмәгән \"$3\" билдәһе ($2 төрө).",
+ "abusefilter-exception-unclosedstring": "$1 урында ябылмаған хәрефле аңлатма.",
+ "abusefilter-exception-invalidoperator": "$1 урында \"$2\" операторы дөрөҫ түгел.",
+ "abusefilter-exception-unrecognisedtoken": "$1 урында танылмаған \"$2\" билдәһе.",
+ "abusefilter-exception-noparams": "$1 урында \"$2\" функцияһының параметрҙары бирелмәгән.",
+ "abusefilter-exception-dividebyzero": "$1 урында $2 һанын нулгә бүлеү хатаһы.",
+ "abusefilter-exception-unrecognisedvar": "$1 урында танылмаған $2 үҙгәреүсән дәүмәле.",
+ "abusefilter-exception-notenoughargs": "$1 позицияһында алынған $2 функцияһында дәлилдәр етешмәй. \n$3 {{PLURAL:$3|дәлил|дәлилдәр|дәлиле}} көтөлә, $4 {{PLURAL:$4|алынған|}}",
+ "abusefilter-exception-regexfailure": "$1 урында \"$3\" регуляр аңлатмаһында хата: \"$2\"",
+ "abusefilter-exception-overridebuiltin": "$1 урында $2 индерелгән үҙгәреүсән дәүмәленең өҫтөнә яҙҙырылыуы хатаһы.",
+ "abusefilter-exception-outofbounds": "$1 урында исемлектә булмаған $2 есемен һорау (исемлектең күләме = $3).",
+ "abusefilter-exception-notlist": "$1 урында исемлек булмаған есемдән исемлек есемен һорау.",
+ "abusefilter-action-tag": "Билдә",
+ "abusefilter-action-throttle": "Тарайтырға",
+ "abusefilter-action-warn": "Киҫәтергә",
+ "abusefilter-action-blockautopromote": "Автоматик күтәреүҙе бикләргә",
+ "abusefilter-action-block": "Бикләргә",
+ "abusefilter-action-degroup": "Төркөмдәрҙән сығарырға",
+ "abusefilter-action-rangeblock": "Арауыҡты бикләргә",
+ "abusefilter-action-disallow": "Рөхсәт итмәҫкә",
+ "abusefilter-revert-title": "$1 һөҙгөсө тарафынан керетелгән бөтә үҙгәртеүҙәрҙе кире алырға",
+ "abusefilter-revert-intro": "Был форма һеҙгә $1 урынһыҙ ҡулланыуҙар һөҙгөсө тарафынан керетелгән үҙгәртеүҙәрҙе кире алырға мөмкинлек бирә.\nБыл ҡоралды ҡулланғанда, һаҡ булығыҙ.",
+ "abusefilter-revert-preview-item": "$1: $2 $3 ғәмәлен $4 битендә үтәгән.\nКире алынасаҡ ғәмәлдәр: $5 ($6)",
+ "abusefilter-revert-search-legend": "Урынһыҙ ҡулланыуҙар һөҙгөсөнөң кире алына торған ғәмәлдәрен һайлағыҙ",
+ "abusefilter-revert-periodstart": "Арауыҡтың башы:",
+ "abusefilter-revert-periodend": "Арауыҡтың аҙағы:",
+ "abusefilter-revert-search": "Ғәмәлдәрҙе һайларға",
+ "abusefilter-revert-filter": "Һөҙгөс:",
+ "abusefilter-revert-preview-intro": "Түбәндә зыянлы ғәмәлдәр һөҙгөсө тарафынан башҡарылған һәм кире алынасаҡ ғәмәлдәре килтерелгән.\nЗинһар, уны иғтибар менән тикшерегеҙ һәм һайлауығыҙҙы раҫлау өсөн «{{int:abusefilter-revert-confirm}}» төймәһенә баҫығыҙ.",
+ "abusefilter-revert-confirm": "Раҫларға",
+ "abusefilter-revert-success": "Һеҙ [[Special:AbuseFilter/$1| $2 урынһыҙ файҙаланыуҙар һөҙгөсө]] тарафынан башҡарылған бөтә ғәмәлдәрҙе кире алдығыҙ.",
+ "abusefilter-revert-reason": "$1 урынһыҙ файҙаланыуҙар һөҙгөсө тарафынан башҡарылған бөтә ғәмәлдәрҙе автоматик рәүештә кире алыу.\nКүрһәтелгән сәбәбе: $2",
+ "abusefilter-revert-reasonfield": "Сәбәп:",
+ "abusefilter-test": "Һөҙгөстө керетелгән үҙгәртеүҙәрҙә тикшерергә",
+ "abusefilter-test-intro": "Был бит һеҙгә түбәндәге {{PLURAL:$1|һуңғы үҙгәртеүҙә}} юлына керетелгән һөҙгөстө тикшерергә мөмкинлек бирә.\nКәрәкле һөҙгөстө сығарыу өсөн, уның идентификаторын мөхәррирләү юлы аҫтындағы юлға керетегеҙ һәм \"Сығарырға\" «{{int:abusefilter-test-load}}» төймәһенә баҫығыҙ.",
+ "abusefilter-test-legend": "Һөҙгөстө тикшереү",
+ "abusefilter-test-load-filter": "Сығарыла торған һөҙгөстөң идентификаторы:",
+ "abusefilter-test-submit": "Тикшерергә",
+ "abusefilter-test-load": "Сығарырға",
+ "abusefilter-test-user": "Ҡулланыусының үҙгәртеүҙәре:",
+ "abusefilter-test-period-start": "Аҙаҡтан эшләнгән үҙгәрештәр:",
+ "abusefilter-test-period-end": "Алдан эшләнгән үҙгәрештәр:",
+ "abusefilter-test-page": "Үҙгәрештәр керетелгән бит:",
+ "abusefilter-test-shownegative": "Һөҙгөскә эләкмәгән үҙгәртеүҙәрҙе күрһәтергә",
+ "abusefilter-test-syntaxerr": "Һеҙ кереткән һөҙгөстә синтаксик хата бар.\nҺеҙ \"Синтаксисты тикшерергә\" «{{int:abusefilter-edit-check}}» төймәһенә баҫып, ентекле аңлатма ала алаһығыҙ.",
+ "abusefilter-test-badtitle": "Һеҙ индергән бит исемдәре уңышлы түгел. Моғайын, ул атамаларҙа файҙаланырға ярамаған бер йә күберәк символды үҙ эсенә алалыр.",
+ "abusefilter-changeslist-examine": "ҡарап сығырға",
+ "abusefilter-examine": "Айырым үҙгәртеүҙәрҙе ҡарап сығыу",
+ "abusefilter-examine-intro": "Был бит урынһыҙ файҙаланыуҙар һөҙгөсө тарафынан айырым үҙгәртеү өсөн булдырылған уҙгәреүсән дәүмәлдәрҙе ҡарап сығырға һәм уларҙы Һөҙгөстәрҙә тикшерергә мөмкинлек бирә.",
+ "abusefilter-examine-legend": "Үҙгәртеүҙәрҙе һайлау",
+ "abusefilter-examine-diff": "Айырма URL-ы:",
+ "abusefilter-examine-user": "Ҡулланыусы:",
+ "abusefilter-examine-title": "Биттең исеме:",
+ "abusefilter-examine-submit": "Эҙләү",
+ "abusefilter-examine-vars": "Был үҙгәртеү өсөн булдырылған үҙгәреүсән дәүмәлдәр:",
+ "abusefilter-examine-test": "Был үҙгәртеүҙе һөҙгөстә тикшерергә",
+ "abusefilter-examine-test-button": "Һөҙгөстө тикшерергә",
+ "abusefilter-examine-match": "Был үҙгәртеү һөҙгөскә эләгә.",
+ "abusefilter-examine-nomatch": "Был үҙгәртеү һөҙгөскә эләкмәй.",
+ "abusefilter-examine-syntaxerror": "Һөҙгөстә синтаксик хата бар",
+ "abusefilter-examine-notfound": "Һеҙ һоратҡан үҙгәртеү табылманы.",
+ "abusefilter-examine-incompatible": "Һеҙ һоратҡан үҙгәртеү урынһыҙ файҙаланыуҙар һөҙгөсө тарафынан ҡулланылмай.",
+ "abusefilter-examine-noresults": "Һеҙ билдәләгән шарттар менән һөҙөмтәләр табылманы.",
+ "abusefilter-topnav": "'''Урынһыҙ файҙаланыуҙар һөҙгөсө эсендә йүнәлештәр'''",
+ "abusefilter-topnav-home": "Иң башҡа",
+ "abusefilter-topnav-test": "Йыйынтыҡты тикшереү",
+ "abusefilter-topnav-examine": "Һуңғы үҙгәртеүҙәрҙе ҡарап сығыу",
+ "abusefilter-topnav-log": "Урынһыҙ файҙаланыуҙар яҙмалары журналы",
+ "abusefilter-topnav-tools": "Төҙәтеү ҡоралдары",
+ "abusefilter-topnav-import": "Һөҙгөс индереү",
+ "abusefilter-log-name": "Урынһыҙ файҙаланыуҙар һөҙгөсө яҙмалары журналы",
+ "abusefilter-log-header": "Был журналға һөҙгөстәргә керетелгән үҙгәртеүҙәрҙең тасуирламаһы яҙыла.\nТулыраҡ мәғлүмәт өсөн һуңғы һөҙгөстәрҙе үҙгәртеүҙәр [[Special:AbuseFilter/history|исемлеген]] ҡарағыҙ.",
+ "abusefilter-log-noresults": "Һөҙөмтә юҡ",
+ "abusefilter-diff-title": "Өлгөләр араһында айырма",
+ "abusefilter-diff-item": "Есем",
+ "abusefilter-diff-version": "$2 {{GENDER:$3|ҡатнашыусыһының}} $1 өлгөһө",
+ "abusefilter-diff-info": "Төп мәғлүмәт",
+ "abusefilter-diff-pattern": "Һөҙөү шарттары",
+ "abusefilter-diff-invalid": "Һоратылған өлгөләрҙе алып булмай",
+ "abusefilter-diff-backhistory": "Һөҙгөстөң тарихына кире ҡайтырға",
+ "abusefilter-diff-prev": "Элекке үҙгәрештәр",
+ "abusefilter-diff-next": "Яңы үҙгәрештәр",
+ "abusefilter-import-intro": "Һеҙ был интерфейсты башҡа вики проекттарҙан Һөҙгөстәрҙе индереү өсөн ҡуллана алаһығыҙ.\nСығанаҡ вики проектта, мөхәррирләү ҡоралының \"{{int:abusefilter-edit-tools}}\" бүлегендә \"{{int:abusefilter-edit-export}}\" төймәһенә баҫығыҙ.\nКилеп сыҡҡан юлдың эстәлеген был юлға күсерегеҙ һәм \"{{int:abusefilter-import-submit}}\" төймәһенә баҫығыҙ.",
+ "abusefilter-import-submit": "Мәғлүмәтте индерергә",
+ "abusefilter-group-default": "Ғәҙәттәге",
+ "abusefilter-http-error": "HTTP хата килеп сыҡты: $1",
+ "apihelp-abusefilterchecksyntax-description": "AbuseFilter фильтры синтаксисын тикшереү",
+ "apihelp-abusefilterunblockautopromote-param-user": "Һеҙ блокировкаһын алырға теләгән ҡатнашыусының исеме (логин).",
+ "apihelp-query+abusefilters-param-prop": "Ниндәй үҙенсәлекте мотлаҡ алырға:",
+ "apihelp-query+abuselog-param-limit": "Исемлектәге яҙмаларҙың иң ҙур күләме.",
+ "apihelp-query+abuselog-param-prop": "Ниндәй үҙенсәлектәрҙе мотлаҡ алырға:",
+ "apihelp-query+abuselog-example-1": "Журналдағы һуңғы яҙмаларҙы күрһәтергә",
+ "apihelp-query+abuselog-example-2": " [[API]] журналындағы һуңғы яҙманы күрһәтергә"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/bar.json b/www/wiki/extensions/AbuseFilter/i18n/bar.json
new file mode 100644
index 00000000..d8ad737c
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/bar.json
@@ -0,0 +1,19 @@
+{
+ "@metadata": {
+ "authors": [
+ "Mucalexx"
+ ]
+ },
+ "abusefilter-desc": "Wendt autómaatiche \"Heuristiken\" auf Änderrungen å",
+ "abusefilter": "Missbrauchsfüter-Eihstöungen",
+ "abuselog": "Missbrauchsfüter-Lógbiaché",
+ "abusefilter-intro": "Griass Enk auf da Missbrauchsfüterter-Management-Ówerflächen.\nDa Missbrauchsfüter is a autómaatischer Mechanismus, der autómaatische Heiristiken auf olle Änderrungen auhwendt.\nDé Ówerflächen zoagt a Listen voh olle definierden Füter und dalaabts, dé z' vaändern.",
+ "abusefilter-mustbeeditor": "Aus Sicherheitsgrynd derffm netter Benutzer mim Recht zur Änderrung voh Missbrauchsfütern dé Schnitstö vawenden.",
+ "abusefilter-log-search-user": "Benutzer:",
+ "abusefilter-log-search-title": "Titel:",
+ "abusefilter-log-search-submit": "Suachen",
+ "abusefilter-log-linkoncontribs": "Missbrauchsfüter-Lógbiaché",
+ "abusefilter-log-hide-reason": "Grund:",
+ "abusefilter-list-edit": "werkeln",
+ "abusefilter-edit-builder-op-bool-xor": "XOR (^)"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/bcl.json b/www/wiki/extensions/AbuseFilter/i18n/bcl.json
new file mode 100644
index 00000000..05287cf8
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/bcl.json
@@ -0,0 +1,389 @@
+{
+ "@metadata": {
+ "authors": [
+ "Filipinayzd",
+ "Geopoet",
+ "Matma Rex"
+ ]
+ },
+ "abusefilter-desc": "Pinapadanay an awtomatikong gana sa boot na mga pagliliwat",
+ "abusefilter": "Saraan sa abuso nin kasalansanan",
+ "abuselog": "Talaan nin abuso",
+ "abusefilter-intro": "Marhay na pag-abot sa olay-panlaog sa manihamento kan Saraan nin Abuso.\nAn Saraan nin Abuso sarong awtomatikong mekanismo nin panuklob na awtomatikong pinag-aaplikar na gana sa boot sa gabos na aksyon.\nIning olay-panlaog minapahiling nin listahan kan pinagpapasabot na mga saraan, asin minatugot na sinda modipikaron.",
+ "abusefilter-mustbeeditor": "Para sa panseguridad na mga rason, an mga paragamit sana na igwang karapatan na magmodipikar kan mga saraan nin abuso an makakagamit kaining olay-panlaog.",
+ "abusefilter-warning": "'''Patanid''': Ining aksyon awtomatikong pinagpamidbid bilang pano nin kadelikaduhan.\nAn bakong konstraktibong mga pagliliwat tulos-tulos na pinagbabalik, asin an bantadan o pauro-otrong pagliliwat na bakong konstraktibo magreresulta sa pagkukubkod kan sadire mong panindog o estada kan IP.\nKun ika nagtutubod na ining aksyon konstraktibo, \nmapuwede mong isumite ini giraray tanganing ikumpirma ini.\nSarong halipoton na deskripsyon kan patakaran nin abuso na an saimong aksyon nainuknó iyo an: $1",
+ "abusefilter-disallowed": "Ining aksyon awtomatikong pinagpamidbid na pano nin kadelikaduhan, asin kaya dae pinagtutugutan.\nKun ika nagtutubod na an saimong aksyon konstraktibo, pakipasabot sa administrador kun ano an saimong pinagprubaran na gigibohon.\nSarong halipoton na deskripsyon kan patakaran nin abuso na an saimong aksyon nainuknó iyo an: $1",
+ "abusefilter-blocked-display": "Ining aksyon awtomatikong pinagmidbid na pano nin kadelikaduhan, asin ika pinagpupugulan na papangyarihon ini.\nSa kadagdagan, tanganing protektaran an {{SITENAME}}, an saimong paragamit na panindog asin an gabos na asosyadong IP na mga estada pinagkubkob gikan sa pagliliwat.\nKun ini nangyari sa kasalaan, pakikontak an administrador.\nSarong halipoton na deskripsyon kan patakaran nin abuso na an saimong aksyon naipag-ampad iyo an: $1",
+ "abusefilter-degrouped": "Ining aksyon awtomatikong pinagmimidbid na pano nin kadelikaduhan.\nBilang panunod, ini dae pinagtutugutan, asin, ta an saimong panindog pinagsususpetsahan na nakompromiso na, an gabos na mga karapatan pinaghale na.\nKun ika nagtutubod na ini yaon sa kasalaan, pakikontak an burokrata na igwa nin kapaliwanagan kaining aksyon, asin ta an saimong mga karapatan mapuwedeng ipagbalik.\nSarong halipoton na deskripsyon kan patakaran sa abuso na an saimong aksyon naipag-ampad iyo na: $1",
+ "abusefilter-autopromote-blocked": "Ining aksyon awtomatikong pinagmimidbid na pano nin kadelikaduhan, asin ini dae pinagtutugutan.\nSa kadagdagan, bilang pasegurong sukol, an ibang mga pribilihiyo na pirmehan nang ipinagtatao sa establisadong nang mga panindog temporaryong pinaghale nguna sa saimong panindog.\nSarong halipoton na deskripsyon kan patakaran sa abuso na an saimong aksyon naipag-ampad iyo na: $1",
+ "abusefilter-blocker": "Saraan nin abuso",
+ "abusefilter-blockreason": "Awtomatikong pinagkubkob kan saraan nin abuso.\nDeskripsyon sa ipinag-ampad na patakaran: $1",
+ "abusefilter-degroupreason": "An mga karapatan awtomatikong pinagharale kan saraan nin abuso.\nDeskripsyon nin patakaran: $1",
+ "abusefilter-accountreserved": "Ining pangaran nin panindog pinagreserba na para gamiton kan saraan nin abuso.",
+ "right-abusefilter-modify": "Modipikaron an mga saraan nin abuso",
+ "right-abusefilter-view": "Patanaw kan mga saraan nin abuso",
+ "right-abusefilter-log": "Tanawon an talaan nin abuso",
+ "right-abusefilter-log-detail": "Tanawon an detalyadong mga entrada sa talaan nin abuso",
+ "right-abusefilter-private": "Tanawon an pribadong datos na yaon sa talaan nin abuso",
+ "right-abusefilter-modify-restricted": "Hirahon an mga saraan nin abuso na igwang ipinagpapangalad na mga aksyon",
+ "right-abusefilter-revert": "Ibuwelta an gabos na mga kaliwatan kan itinaong saraan nin abuso",
+ "right-abusefilter-view-private": "Tanawon an mga saraan nin abuso na pinagmarkahan na pribado",
+ "right-abusefilter-log-private": "Tanawon an mga entrada sa talaan kan mga saraan nin abuso na pinagmarkahan na pribado",
+ "right-abusefilter-hide-log": "Itinagong mga entrada na yaon sa talaan nin abuso",
+ "right-abusefilter-hidden-log": "Tanawon an itinagong entrada sa talaan kan abuso",
+ "right-abusefilter-modify-global": "Muknaon o modipikaron an pankinaban na mga saraan nin abuso",
+ "action-abusefilter-modify": "Hirahon an mga saraan nin abuso",
+ "action-abusefilter-view": "Tanawon an mga saraan nin abuso",
+ "action-abusefilter-log": "Tanawon an talaan nin abuso",
+ "action-abusefilter-log-detail": "Tanawon an detalyadong mga entrada sa talaan nin abuso",
+ "action-abusefilter-private": "Tanawon an pribadong datos sa laog kan talaan nin abuso",
+ "action-abusefilter-modify-restricted": "Hirahon an mga saraan nin abuso na igwang ipinapangalad na mga aksyon",
+ "action-abusefilter-revert": "isulit sa dati an gabos na mga pagbàgo na itinao kan saraan nin abuso",
+ "action-abusefilter-view-private": "Tanawon an mga saraan nin abuso na markadong pribado",
+ "abusefilter-log": "Talaan nin saraan sa abuso",
+ "abusefilter-log-summary": "Ining talaan nagpapahiling nin sarong listahan kan gabos na mga aksyon na nadakop kan mga saraan",
+ "abusefilter-log-search": "Hanapon an talaan nin abuso",
+ "abusefilter-log-search-user": "Paragamit:",
+ "abusefilter-log-search-filter": "ID nin Saraan:",
+ "abusefilter-log-search-title": "Titulo:",
+ "abusefilter-log-search-wiki": "Wiki:",
+ "abusefilter-log-search-submit": "Hanapon",
+ "abusefilter-log-entry": "$1: $2 nagkiblit kan saraan nin abuso, pinaghihimo an aksyon na \"$3\" sa $4.\nPinaghimong aksyon: $5;\nDeskripsyon kan saraan: $6",
+ "abusefilter-log-detailedentry-meta": "$1: $2 pinagkiblit an $3, pinaghihimo an aksyon na \"$4\" sa $5.\nPinaghimong aksyon: $6;\nDeskripsyon kan saraan: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "pankinabang na saraan $1",
+ "abusefilter-log-detailedentry-local": "saraan $1",
+ "abusefilter-log-detailslink": "mga detalye",
+ "abusefilter-log-diff": "kaibhan",
+ "abusefilter-log-hidelink": "nultulon an bisibilidad",
+ "abusefilter-log-details-legend": "Mga detalye para sa entrada nin talaan $1",
+ "abusefilter-log-details-var": "Kapilyan",
+ "abusefilter-log-details-val": "Kantidad",
+ "abusefilter-log-details-vars": "Mga parametro nin aksyon",
+ "abusefilter-log-details-private": "Pribadong datos",
+ "abusefilter-log-details-ip": "Pinaggikanan na estada nin IP",
+ "abusefilter-log-noactions": "Mayo man",
+ "abusefilter-log-details-diff": "Mga kaliwatan na pinaghimo sa pagliliwat",
+ "abusefilter-log-linkoncontribs": "talaan nin abuso",
+ "abusefilter-log-linkoncontribs-text": "Talaan nin abuso para kaining paragamit",
+ "abusefilter-log-hidden": "(itinagong entrada)",
+ "abusefilter-log-hidden-implicit": "(itinago nin huli ta an rebisyon pinagpura na)",
+ "abusefilter-log-cannot-see-details": "Ika mayong permiso na hilingon an mga detalye kaining entrada.",
+ "abusefilter-log-details-hidden": "Ika da makakahiling sa mga detalye kaining entrada nin huli ta ini itinago sa paghiling nin publiko.",
+ "abusefilter-log-hide-legend": "Itago an entrada nin talaan",
+ "abusefilter-log-hide-id": "ID kan entrada sa talaan:",
+ "abusefilter-log-hide-hidden": "Itago ining entrada sa paghiling kan publiko",
+ "abusefilter-log-hide-reason": "Rason:",
+ "abusefilter-log-hide-forbidden": "Ika mayong permiso na magtago kan mga entrada sa talaan nin abuso.",
+ "abusefilter-logentry-suppress": "ipinagtago \"[[$1]]\"",
+ "abusefilter-logentry-unsuppress": "dae ipinagtago \"[[$1]]",
+ "logentry-abusefilter-hit": "$1 kiniblit an $4, pinaghihimo an aksyon na \"$5\" sa $3. Pinaghimong mga aksyon: $6 ($7)",
+ "abusefilter-management": "Pagmamaneho kan saraan nin abuso",
+ "abusefilter-list": "Gabos na mga saraan",
+ "abusefilter-list-id": "ID kan Saraan",
+ "abusefilter-list-status": "Estado",
+ "abusefilter-list-public": "Pampublikong paglaladawan",
+ "abusefilter-list-consequences": "Mga kaaabtan",
+ "abusefilter-list-visibility": "Bisibilidad",
+ "abusefilter-list-hitcount": "Bilang nin tama",
+ "abusefilter-list-edit": "Liwaton",
+ "abusefilter-list-details": "Mga detalye",
+ "abusefilter-list-limit": "Numero lambang pahina",
+ "abusefilter-list-lastmodified": "Huring pinaghira",
+ "abusefilter-list-group": "Grupo nin saraan",
+ "abusefilter-hidden": "Pribado",
+ "abusefilter-unhidden": "Publiko",
+ "abusefilter-enabled": "Pinagpa-andar",
+ "abusefilter-deleted": "Pinagpura",
+ "abusefilter-disabled": "Pinagpauntok",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|igo|mga igo}}",
+ "abusefilter-new": "Magmukna nin baguhong saraan",
+ "abusefilter-return": "Magbuwelta sa manihamento nin saraan",
+ "abusefilter-status-global": "Pankinaban",
+ "abusefilter-list-options": "Mga Pagpipilian",
+ "abusefilter-list-options-deleted": "Pinagpurang mga saraan:",
+ "abusefilter-list-options-deleted-only": "Ipahiling sana an pinagpurang mga saraan",
+ "abusefilter-list-options-deleted-hide": "Itago an pinagpurang mga saraan",
+ "abusefilter-list-options-deleted-show": "Balihon an pinagpurang mga saraan",
+ "abusefilter-list-options-scope": "Ipahiling an mga saraan gikan sa:",
+ "abusefilter-list-options-scope-local": "Lokal na wiki",
+ "abusefilter-list-options-scope-global": "Pankinaban na mga patakaran",
+ "abusefilter-list-options-disabled": "Pinagpauntok na mga saraan:",
+ "abusefilter-list-options-hidedisabled": "Itago na pinagpauntok na mga saraan",
+ "abusefilter-list-options-submit": "Panumpay",
+ "abusefilter-tools-text": "Uya an ibang mga kagamitan na bilog na magagamit sa pormulasyon asin paghihinguto kan mga saraan nin abuso.",
+ "abusefilter-tools-expr": "Tagaprobar nin pagpahayag",
+ "abusefilter-tools-submitexpr": "Ebaluwaron",
+ "abusefilter-tools-reautoconfirm": "Ibalik an awtomatikong pagkumpirma kan estado",
+ "abusefilter-tools-reautoconfirm-user": "Paragamit:",
+ "abusefilter-tools-reautoconfirm-submit": "Paotrohon an awtomatikong pagkumpirma",
+ "abusefilter-reautoconfirm-none": "Yang paragamit mayo kaidto nin {{GENDER:$1|saiyang|saiyang|saindang}} an estado nin awtomatikong pagkumpirma pinagsuspende.",
+ "abusefilter-reautoconfirm-notallowed": "Ika dae pinagtutugutan na mabalik kan estado nin awtomatikong pagkumpirma.",
+ "abusefilter-reautoconfirm-done": "An estado kan panindog sa awtomatikong pagkumpira ipinagbalik na",
+ "abusefilter-status": "Kan nakaaging $1 {{PLURAL:$1|aksyon|mga aksyon}}, $2 ($3%) {{PLURAL:$2|igwa nin|igwang}} kinaabtan na limitasyon nin kondisyon kan $4, asin $5 ($6%) {{PLURAL:$5|igwa nin|igwang}} pinag-ampadan na saro sa mga saraan na sa presente pinagpaandar.",
+ "abusefilter-edit": "Pagliliwat kan saraan nin abuso",
+ "abusefilter-edit-subtitle": "Saraan nin pagliliwat $1",
+ "abusefilter-edit-subtitle-new": "Saraan nin pagmumukna",
+ "abusefilter-edit-oldwarning": "<makusugon>Ika nagliliwat kan lumaong bersyon kaining saraan.\nAn estadistikong pinagsambit para sa pinakahuring bersyon kan saraan.\nKun saimong naitagama an saimong mga kaliwatan, saimong sasalambawan an gabos na mga kaliwatan magpoon pa sa rebisyon na saimong pinagliliwat. </makusugon> &bull;\n[[Special:AbuseFilter/history/$2|Magbalik pasiring sa historiya kaining saraan]].",
+ "abusefilter-edit-status-label": "Estadistika:",
+ "abusefilter-edit-status": "Kan nakaaging $1 {{PLURAL:$1|aksyon|mga aksyon}}, ining saraan nakapagtampad sa $2 ($3%).",
+ "abusefilter-edit-status-profile": "Kan nakaaging $1 {{PLURAL:$1|aksyon|mga aksyon}}, ini saraan nakapag-ampad sa $2 ($3%).\nSa katahawan, an oras nin padalagan $4 ms, asin ini minakonsumo nin $5 {{PLURAL:$5|kondisyon|mga kondisyon}} kan limitasyon sa kondisyon.",
+ "abusefilter-edit-new": "Baguhong saraan",
+ "abusefilter-edit-save": "Itagama an saraan",
+ "abusefilter-edit-id": "Pansarà nin ID",
+ "abusefilter-edit-description": ":''(pampublikong pagpapahiling)''",
+ "abusefilter-edit-group": "Grupo nin saraan",
+ "abusefilter-edit-flags": "Mga bandera",
+ "abusefilter-edit-enabled": "Paandaron ining saraan",
+ "abusefilter-edit-deleted": "Markadong pinagpura na",
+ "abusefilter-edit-hidden": "Tagoon an mga detalye kaining saraan sa pampublikong pagtanaw",
+ "abusefilter-edit-global": "Pankinaban na saraan",
+ "abusefilter-edit-rules": "Mga Kondisyon:",
+ "abusefilter-edit-notes": "Mga Giromdomon:\n:''(pribado)''",
+ "abusefilter-edit-lastmod": "Pinakahuring pagbabago kan saraan:",
+ "abusefilter-edit-lastmod-text": "$1 ni $2",
+ "abusefilter-edit-hitcount": "Mga igo nin saraan:",
+ "abusefilter-edit-consequences": "Nagibong mga aksyon kunsoaring naipag-ampad",
+ "abusefilter-edit-action-warn": "Makiblit kaining mga aksyon matapos matawanan an paragamit nin sarong patanid",
+ "abusefilter-edit-action-disallow": "Mapugol sa paragamit na gigibohon an aksyon na pinaghahapot",
+ "abusefilter-edit-action-blockautopromote": "Minabawi sa estado kan awtomatikong pagkumpirma sa paragamit",
+ "abusefilter-edit-action-degroup": "Minapahale sa paragamit gikan sa gabos na grupo na igwang pribilihiyo",
+ "abusefilter-edit-action-block": "Kubkubon and paragamit asin/o IP na estada gikan sa pagliliwat",
+ "abusefilter-edit-action-throttle": "Minakiblit nin mga aksyon sana kun an paragamit nakatibaklo nin sarong limit sa rata",
+ "abusefilter-edit-action-rangeblock": "Kubkubon an /16 gangha gikan sa mga pinaggigikanan nin paragamit",
+ "abusefilter-edit-action-tag": "I-tag an pagliliwat para sa kadagdagan na pagrepaso",
+ "abusefilter-edit-throttle-count": "Numero kan mga aksyon na ipapasunod:",
+ "abusefilter-edit-throttle-period": "Peryodo nin panahon:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|segundo|mga segundo}}",
+ "abusefilter-edit-throttle-groups": "Pangrupong ngutnol sa paagi nin:\n:''(saro kada linya, ibanhan nin kudlit)''",
+ "abusefilter-edit-warn-message": "Pansistemang mensahe na gamiton para sa patanid:",
+ "abusefilter-edit-warn-other": "Iba pang mensahe",
+ "abusefilter-edit-warn-other-label": "Pangaran nin pahina kan ibang mensahe:\n:''(mayo nin MediaWiki enot-panigmit)''",
+ "abusefilter-edit-warn-actions": "Mga gibohon:",
+ "abusefilter-edit-warn-preview": "Tanawon mga pinagpili na mensahe",
+ "abusefilter-edit-warn-edit": "Muknaon/Liwaton pinagpili na mensahe",
+ "abusefilter-edit-tag-tag": "Mga tatak na gamiton (saro kada linya):",
+ "abusefilter-edit-denied": "Ika dae makakahiling sa mga detalye kaining saraan, nin huli ta ini itinago gikan sa paghiling nin publiko.",
+ "abusefilter-edit-main": "Mga parametro nin saraan",
+ "abusefilter-edit-done-subtitle": "An saraan pinagliwat",
+ "abusefilter-edit-done": "[[Special:AbuseFilter/history/$1/diff/prev/$2|An Saimong mga kaliwatan]] pasiring sa [[Special:AbuseFilter/$1|filter $3]] pinagtagama na.",
+ "abusefilter-edit-badsyntax": "Igwa nin kasalaan sa sintaks sa laog kan saraan na saimong pinagkaag.\nAn kinaluwasan gikan sa parapasabot iyo na: <pre>$1</pre>",
+ "abusefilter-edit-restricted": "Ika dae makakaliwat kaining saraan, nin huli ta ini may laog na saro o dakol na pinagpangalad na mga aksyon.\nPakihapot sa sarong paragamit na igwang permiso tanganing magdugang kan pinagpangalad na mga aksyon sa paghimo nin kaliwatan para saimo.",
+ "abusefilter-edit-viewhistory": "Tanawon an historiya kaining saraan",
+ "abusefilter-edit-history": "An Usipon:",
+ "abusefilter-edit-check": "I-tsek an sintaks",
+ "abusefilter-edit-badfilter": "An saraan na saimong pinagkaag bakong eksistido",
+ "abusefilter-edit-revert": "Ibuwelta an mga aksyon na pinaghimo kaining saraan",
+ "abusefilter-edit-tools": "Mga gagamiton:",
+ "abusefilter-edit-test-link": "Prubaran ining saraan kontra sa pinakahuring mga pagliwat",
+ "abusefilter-edit-export": "Eksportaron ining saraan pasiring sa ibang wiki",
+ "abusefilter-edit-syntaxok": "Mayong sintaks na mga kasalaan an namansayan.",
+ "abusefilter-edit-syntaxerr": "Sintaks na kasalaan namansayan: $1",
+ "abusefilter-edit-bad-tags": "Sa or dakol kan mga tatak na saimong pinagkaag bakong balido.\nAn mga tatak dapat na halipot, asin sinda dapat mayong espesyal na mga karakter.",
+ "abusefilter-edit-notallowed": "Ika daeng permiso na magmukna o magliwat kan mga saraan nin abuso",
+ "abusefilter-edit-notallowed-global": "Ika mayong permiso na magmukna o magliwat kan pankinaban na mga saraan nin abuso",
+ "abusefilter-edit-notallowed-global-custom-msg": "An kustombre kan mga mensahe nin patanid bakong suportado para sa pankinabanon na mga saraan",
+ "abusefilter-edit-builder-select": "Pilion an opsyon na ipagdugang ini sa kursor",
+ "abusefilter-edit-builder-group-op-arithmetic": "Mga operador kan aritmetika",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Kadagdagan (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Kabawasan (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Kapagdakulan (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Kabarangaan (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Modulo (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Panustuson (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Pankumparang mga operador",
+ "abusefilter-edit-builder-op-comparison-equal": "Parehas sa (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Bakong parehas sa (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "Hababa kesa (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Halangkaw kesa (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Hababa kesa o parehas sa (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Halangkaw sa o parehas sa (>=)",
+ "abusefilter-edit-builder-group-op-bool": "Mga operador kan Boolean",
+ "abusefilter-edit-builder-op-bool-not": "Bako (!)",
+ "abusefilter-edit-builder-op-bool-and": "Asin (&)",
+ "abusefilter-edit-builder-op-bool-or": "O (|)",
+ "abusefilter-edit-builder-group-misc": "Manlaenlaen",
+ "abusefilter-edit-builder-misc-in": "pinaglaog sa kapisian (sa)",
+ "abusefilter-edit-builder-misc-like": "Kaampad nin desinyo (muya)",
+ "abusefilter-edit-builder-misc-rlike": "Kaampad nin regex (rmuya)",
+ "abusefilter-edit-builder-misc-irlike": "Kaampad nin regex, an dutdutan insensitibo (irmuya)",
+ "abusefilter-edit-builder-misc-contains": "Panwala na kapisian may laman na pantoong kapisian",
+ "abusefilter-edit-builder-misc-stringlit": "Kapisian literal (\"\")",
+ "abusefilter-edit-builder-misc-tern": "Ternaryong operador (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "Kalang-angan (kun X kaya Y o baya Z)",
+ "abusefilter-edit-builder-group-funcs": "Mga gibohon",
+ "abusefilter-edit-builder-funcs-length": "Laba nin kapisian (laba)",
+ "abusefilter-edit-builder-funcs-lcase": "Pasaradit na letra (lcase)",
+ "abusefilter-edit-builder-funcs-ucase": "Padarakulang letra (ucase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "Pasayunon an makaribong ng mga kurit (ccnorm)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "Halion an mga doble-kurit (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "Espessyal na mga kurit / kabilogan na mga kurit (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "Pasayunon (norm)",
+ "abusefilter-edit-builder-funcs-count": "Numero kan beses na an kapisian X minapahiling sa kapisian na Y (count)",
+ "abusefilter-edit-builder-funcs-rcount": "Numeron kan beses na an regex X minapahiling sa kapisian nin Y (rcount)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "Halion an puting espasyo (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "Halion an espesyal na mga kurit (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "Yaon daw an IP sa ganghaan? (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "Maghanap nin panunod para sa pankadaklang panrarom na mga kasundan (contains_any)",
+ "abusefilter-edit-builder-funcs-substr": "Panrarom na kasundan (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "Posisyon kan panrarom na kasundan nin panunod (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "Ribayan an panrarom na kasundan nin panunod (str_replace)",
+ "abusefilter-edit-builder-funcs-rescape": "Eskapo sa panunod bilang literal sa regex (rescape)",
+ "abusefilter-edit-builder-funcs-set_var": "Ipuwesto an kapilyangan (set_var)",
+ "abusefilter-edit-builder-group-vars": "Mga kapilyangan",
+ "abusefilter-edit-builder-vars-accountname": "Pangaran nin panindog (sa pagmukna nin panindog)",
+ "abusefilter-edit-builder-vars-timestamp": "Unix panmarkang oras nin kaliwatan",
+ "abusefilter-edit-builder-vars-action": "An aksyon",
+ "abusefilter-edit-builder-vars-addedlines": "Mga linya na pinagdagdag sa pagliliwat",
+ "abusefilter-edit-builder-vars-delta": "Paghihira nin kasukulan sa pagliliwat",
+ "abusefilter-edit-builder-vars-diff": "Pinagkakasararoan kalaenan sa mga kaliwatan na pinaghimo sa paagi nin pagliliwat",
+ "abusefilter-edit-builder-vars-newsize": "Sukol kan baguhong pahina",
+ "abusefilter-edit-builder-vars-oldsize": "Lumaong sukol kan pahina",
+ "abusefilter-edit-builder-vars-removedlines": "Mga linyang pinagharale sa pagliliwat",
+ "abusefilter-edit-builder-vars-summary": "Sumaryo/rason nin pagliliwat",
+ "abusefilter-edit-builder-vars-article-id": "ID kan pahina",
+ "abusefilter-edit-builder-vars-article-ns": "Pangarang espasyo kan pahina",
+ "abusefilter-edit-builder-vars-article-text": "Titulo kan Pahina (mayong pangarang espasyo)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Titulo kan Kabilogan nin pahina",
+ "abusefilter-edit-builder-vars-article-views": "Mga katanawan nin pahina",
+ "abusefilter-edit-builder-vars-movedfrom-id": "ID kan pahina nin pagbalyo sa ginikanang pahina",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "Espasyong-pangaran nin pagbalyo kan ginikanan",
+ "abusefilter-edit-builder-vars-movedfrom-text": "Titulo kan pagbalyo sa ginikanang pahina",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "Kabilogang titulo kan pagbalyo sa ginikanang pahina",
+ "abusefilter-edit-builder-vars-movedto-id": "ID kan Pahina nin pagbalyo sa destinasyon kan pahina",
+ "abusefilter-edit-builder-vars-movedto-ns": "Espasyong-pangaran kan pagbalyo sa pahina nin destinasyon",
+ "abusefilter-edit-builder-vars-movedto-text": "Titulo kan pagbalyong destinasyon nin pahina",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "Kabilogang titulo kan pagbalyo sa pahina nin destinasyon",
+ "abusefilter-edit-builder-vars-user-editcount": "Bilang nin pagliwat kan paragamit",
+ "abusefilter-edit-builder-vars-user-age": "Edad kan panindog nin paragamit",
+ "abusefilter-edit-builder-vars-user-name": "Pangaran kan panindog nin paragamit",
+ "abusefilter-edit-builder-vars-user-groups": "An mga grupo (including implicit) na paragamit yaon",
+ "abusefilter-edit-builder-vars-user-blocked": "Dawa an paragamit pinagkubkob",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "Oras an e-surat na estada pinagkumpirma",
+ "abusefilter-edit-builder-vars-recent-contributors": "Pinakahuring sampulong paragamit mag-aambag sa pahina",
+ "abusefilter-edit-builder-vars-all-links": "Gabos na panluwas na kasugpunan yaon sa baguhon na teksto",
+ "abusefilter-edit-builder-vars-added-links": "Gabos na panluwas na kasugpunan pinagdagdag sa pagliwat",
+ "abusefilter-edit-builder-vars-removed-links": "Gabos na panluwas na kasugpunan pinaghale sa pagliwat",
+ "abusefilter-edit-builder-vars-old-text": "Wiki-teksto kan lumaong pahina, bago pa man an pagliwat",
+ "abusefilter-edit-builder-vars-new-text": "Wiki-teksto kan baguhon na pahina, matapos na magliwat",
+ "abusefilter-edit-builder-vars-new-pst": "Bagong pahina kan wikiteksto, enot na tinagama pinagbago",
+ "abusefilter-edit-builder-vars-new-text-stripped": "Teksto kan baguhon na pahina, hinukwasan kan arin man ma markang patindog",
+ "abusefilter-edit-builder-vars-new-html": "Panabuton and ginikanan kan HTML kan baguhong rebisyon",
+ "abusefilter-edit-builder-vars-restrictions-edit": "Liwaton an grado nin proteksyon kan pahina",
+ "abusefilter-edit-builder-vars-restrictions-move": "Balyuhon an grade nin proteksyon kan pahina",
+ "abusefilter-edit-builder-vars-restrictions-create": "Magmukna nin proteksyon kan pahina",
+ "abusefilter-edit-builder-vars-restrictions-upload": "Ikarga an proteksyon kan sagunson",
+ "abusefilter-edit-builder-vars-old-text-stripped": "An lumang teksto nin pahina, pinagtanggalan nin arinman na markang panindog",
+ "abusefilter-edit-builder-vars-old-links": "Mga kasugponan na yaon sa pahina, bago pa man an pagliwat",
+ "abusefilter-edit-builder-vars-old-html": "An lumang pahina nin wikitext, pinagpakahulugan sa HTML",
+ "abusefilter-edit-builder-vars-minor-edit": "Dawa na bako an pagliwat markado bilang menor",
+ "abusefilter-edit-builder-vars-file-sha1": "SHA1 pinutulan kan mga laman nin sagunson",
+ "abusefilter-filter-log": "Dae pa sana nahahaloy na mga kaliwatan kan saraan",
+ "abusefilter-history": "Historiya nin kaliwatan para sa Saraan nin Abuso #$1",
+ "abusefilter-history-foruser": "Mga kaliwatan ni $1",
+ "abusefilter-history-hidden": "Nakatago",
+ "abusefilter-history-enabled": "Pinagpagana",
+ "abusefilter-history-global": "Pangkinaban",
+ "abusefilter-history-timestamp": "Oras",
+ "abusefilter-history-user": "An Paragamit",
+ "abusefilter-history-public": "Deskripsyon kan pampublikong saraan",
+ "abusefilter-history-flags": "Mga Bandera",
+ "abusefilter-history-filter": "Panandayan nin saraan",
+ "abusefilter-history-comments": "Mga Komento",
+ "abusefilter-history-actions": "Mga aksyon",
+ "abusefilter-history-backedit": "Magbuwelta sa paraliwat nin saraan",
+ "abusefilter-history-deleted": "Pinagpura na",
+ "abusefilter-history-filterid": "Pansara",
+ "abusefilter-history-select-legend": "Pinuhon an paghahanap",
+ "abusefilter-history-select-user": "Paragamit:",
+ "abusefilter-history-select-submit": "Pinuhon",
+ "abusefilter-history-diff": "Mga Kaliwatan",
+ "abusefilter-history-error-hidden": "An pansara na saimong pinaghahagad nakatago, asin dae mo mahihiling an historiya kaini.",
+ "abusefilter-exception-unexpectedatend": "Dae pinag-asahan \"$2\" sa panggurit na $1.",
+ "abusefilter-exception-expectednotfound": "Pinag-asahan an $2 sa panggurit na $1, dae nanagboan (lugod an natagboan an $3 $4).",
+ "abusefilter-exception-unrecognisedkeyword": "Bakong rekonisadong susing tataramon na $2 sa panggurit na $1.",
+ "abusefilter-exception-unexpectedtoken": "Dae pinag-asahan na pangilip \"$3\" (kan tipong $2) sa panggurit na $1.",
+ "abusefilter-exception-unclosedstring": "Dae nakaseradong pisî na nagpopoon sa panggurit na $1.",
+ "abusefilter-exception-invalidoperator": "Imbaliding operador \"$2\" sa panggurit na $1.",
+ "abusefilter-exception-unrecognisedtoken": "Bakong rekonisadong pangilip \"$2\" sa panggurit na $1.",
+ "abusefilter-exception-noparams": "Mayong mga parametrong itinao tanganing humirô sa \"$2\" sa panggurit na $1.",
+ "abusefilter-exception-dividebyzero": "Iligal na pagprubar na bangaon an $2 sa paagi nin sero sa panggurit na $1.",
+ "abusefilter-exception-unrecognisedvar": "Bakong rekonisadong kapilyangan na $2 sa panggurit na $1.",
+ "abusefilter-exception-notenoughargs": "Bakong igong mga argumento tanganing humirô $2 na pinag-apod sa panggurit na $1.\nPinag-asahan na $3{{PLURAL:$3|argumento|mga argumento}}, an nakua $4",
+ "abusefilter-exception-regexfailure": "Kasalaan sa regular na ekspresyon na \"$3\" sa panggurit na $1:\"$2\"",
+ "abusefilter-exception-overridebuiltin": "Iligal na pagsasalambaw kan nakasuknat na kapilyangan \"$2\" sa panggurit na $1.",
+ "abusefilter-exception-outofbounds": "Naghahagad kan dae pa nakamuknang lista nin aytem na $2 (listang sukol = $3) sa panggurit na $1.",
+ "abusefilter-exception-notlist": "Naghahagad palangkay nin aytem kan bakong palangkay sa panggurit na $1.",
+ "abusefilter-action-tag": "Tatak",
+ "abusefilter-action-throttle": "Pangutnol",
+ "abusefilter-action-warn": "Tanid",
+ "abusefilter-action-blockautopromote": "Bagaton an automatikong pagbalangibog",
+ "abusefilter-action-block": "Bagaton",
+ "abusefilter-action-degroup": "Tangkason gikan sa mga grupo",
+ "abusefilter-action-rangeblock": "Hikwas-nin-bagat",
+ "abusefilter-action-disallow": "Dae tinutugot",
+ "abusefilter-revert-title": "Balikon an gabos na mga kaliwatan sa paagi kan saraan na $1",
+ "abusefilter-revert-intro": "Ining porma minatugot saimo na balikon an gabos na mga kaliwatan na hinimo sa paagi kan saraan nin abuso nin huli sa saraan na $1.\nPaki-ingati tabi an paggagamit kaining palindô.",
+ "abusefilter-revert-preview-item": "$1:$2 pinaghimong $3 sa $4.\nAn aksyon mapupuwedeng balikon: $5($6)",
+ "abusefilter-revert-search-legend": "Pilion an aksyon kan saraan nin abuso na mapupuwedeng balikon",
+ "abusefilter-revert-periodstart": "Poon kan peryodo:",
+ "abusefilter-revert-periodend": "Tapos kan peryodo:",
+ "abusefilter-revert-search": "Pilion na mga aksyon",
+ "abusefilter-revert-filter": "Saraan:",
+ "abusefilter-revert-preview-intro": "Yaon sa ibaba an mga aksyon na ginibo kan saraan nin abuso na ipagbabalik sa paagi kaining aksyon.\nPakirikisaha sindang maigot, asin i-klik an \"kumpirma\" sa pagkumpirma kan saimong pinili.",
+ "abusefilter-revert-confirm": "Kumpirma",
+ "abusefilter-revert-success": "Saimong pinagbalik an gabos na mga aksyong ginibo sa paagi kan saraan nin abuso nin huli sa [[Special:AbuseFilter/$1|saraan $2]].",
+ "abusefilter-revert-reason": "Automatikong balikon an gabos na mga aksyon na ginibo sa paagi kan saraan nin abuso nin huli sa saraan $1.\nRason na itinao:$2",
+ "abusefilter-revert-reasonfield": "Rason:",
+ "abusefilter-test": "Testingon an sarong saraan kontra sa dating mga pagliwat",
+ "abusefilter-test-intro": "Ining pahina minatugot saimo na rikisahon an sarong saraan na pinag-entra sa laog kan kahon sa ibaba kontra sa huring $1{{PLURAL:$1|kaliwatan|mga kaliwatan}}.\nSa pagkarga kan eksistidong saraan, tipaho an ID kan saraan sa laog kan kahon na yaon sa ibaba kan pagliwat kan tekstong kahon, asin i-klik and \"karga\" na pindutan.",
+ "abusefilter-test-legend": "Pagprubar nin saraan",
+ "abusefilter-test-load-filter": "Ikarga an ID nin saraan:",
+ "abusefilter-test-submit": "Prubaran",
+ "abusefilter-test-load": "Kargahon",
+ "abusefilter-test-user": "Mga kaliwatan nin paragamit:",
+ "abusefilter-test-period-start": "Mga kaliwatan pinaghimo pagkatapos:",
+ "abusefilter-test-period-end": "Mga kaliwatan na pinaghimo bago pa man:",
+ "abusefilter-test-page": "Mga kaliwatan na pinaghimo sa pahina:",
+ "abusefilter-test-shownegative": "Ipahiling an mga kaliwatan na dae minaampad sa saraan",
+ "abusefilter-test-syntaxerr": "An saraan na saimong pinag-entra pinaglamanan nin sarong sintaks na kasalaan.\nIka makakaresibe nin sarong bilog na kapaliwanagan sa paagi nin pag-klik kan \"Rikisahan an Sintaks\" na pindutan.",
+ "abusefilter-changeslist-examine": "eksaminon",
+ "abusefilter-examine": "Eksaminon an indibidwal na mga kaliwatan",
+ "abusefilter-examine-intro": "Ining pahina minatugot saimo na eksaminon an mga kapilyangan na pinagpuyos sa paagi kan Saraan nin Abuso para sa indibidwal na kaliwatan, asin prubaran ini kontra sa mga saraan.",
+ "abusefilter-examine-legend": "Pilion an mga kaliwatan",
+ "abusefilter-examine-diff": "Laen na URL:",
+ "abusefilter-examine-user": "An Paragamit:",
+ "abusefilter-examine-title": "Titulo kan pahina:",
+ "abusefilter-examine-submit": "Hanapon",
+ "abusefilter-examine-vars": "Mga kapilyangan na pinagpuyos para kaining kaliwatan",
+ "abusefilter-examine-test": "Prubaran ining kaliwatan kontra sa sarong saraan",
+ "abusefilter-examine-test-button": "Prubaran an saraan",
+ "abusefilter-examine-match": "An saraan an nagtampad kaining kaliwatan",
+ "abusefilter-examine-nomatch": "An saraan dae nagtampad kaining kaliwatan",
+ "abusefilter-examine-syntaxerror": "An saraan igwa nin imbalidong sintaks",
+ "abusefilter-examine-notfound": "An kaliwatan na saimong pinaghagad dae natatagboan.",
+ "abusefilter-examine-incompatible": "An kaliwatan na saimong pinaghahagad bakong suportado kan Saraan nin Abuso",
+ "abusefilter-examine-noresults": "Mayong resultang nanagboan para sa mga parametro nin paghahanap na saimong pinagtao.",
+ "abusefilter-topnav": "'''Nabigasyon kan Saraan nin Abuso'''",
+ "abusefilter-topnav-home": "Haróng",
+ "abusefilter-topnav-test": "Pagpuprubar kan Grupo",
+ "abusefilter-topnav-examine": "Mansayon an nakaaging mga pagliliwat",
+ "abusefilter-topnav-log": "Katalaanan nin Abuso",
+ "abusefilter-topnav-tools": "Mga Gamit Panhirog",
+ "abusefilter-topnav-import": "Importaron an saraan",
+ "abusefilter-log-name": "Katalaanan kan Saraan nin Abuso",
+ "abusefilter-log-header": "Ining katalaanan nagpapatanaw nin sarong sumaryo nin mga kaliwatan na hinimo sa mga saraan.\nPara sa kabilogang detalye, hilngon an [[Special:AbuseFilter/history|an listahan]] kan pinakahurihan na kaliwatan nin saraan.",
+ "abusefilter-log-noresults": "Mayo nin mga resulta",
+ "abusefilter-diff-title": "Mga kalaenan sa tahaw kan mga bersyon",
+ "abusefilter-diff-item": "Aytem",
+ "abusefilter-diff-version": "Bersyon gikan sa $1 {{GENDER:$3|ni}} $2",
+ "abusefilter-diff-info": "Panandayang impormasyon",
+ "abusefilter-diff-pattern": "Mga kondisyon nin saraan",
+ "abusefilter-diff-invalid": "Dae tabi nakukua an pinaghahagad na mga bersyon",
+ "abusefilter-diff-backhistory": "Ibalik sa historiya nin saraan",
+ "abusefilter-diff-prev": "Lumaon na kaliwatan",
+ "abusefilter-diff-next": "Baguhon na kaliwatan",
+ "abusefilter-import-intro": "Saimong magagamit ining olay-panlaog sa pag-importa nin mga saraan gikan sa ibang wikis.\nSa ginikanang wiki, i-klik an \"{{int:abusefilter-edit-export}}\" na yaon sa \"{{int:abusefilter-edit-tools}}\" sa olay-panlaog nin pagliliwat.",
+ "abusefilter-import-submit": "Importaron an datos",
+ "abusefilter-group-default": "Panugmad",
+ "abusefilter-http-error": "Sarong HTTP na kasalaan an nangyari: $1."
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/be-tarask.json b/www/wiki/extensions/AbuseFilter/i18n/be-tarask.json
new file mode 100644
index 00000000..0f3f31ff
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/be-tarask.json
@@ -0,0 +1,405 @@
+{
+ "@metadata": {
+ "authors": [
+ "Cesco",
+ "EugeneZelenko",
+ "Jim-by",
+ "Red Winged Duck",
+ "Renessaince",
+ "Wizardist",
+ "Zedlik",
+ "Matma Rex"
+ ]
+ },
+ "abusefilter-desc": "Прыстасоўвае аўтаматычную эўрыстыку да рэдагаваньняў.",
+ "abusefilter": "Канфігурацыя фільтру злоўжываньняў",
+ "abuselog": "Журнал злоўжываньняў",
+ "abusefilter-intro": "Сардэчна запрашаем на старонку кіраваньня фільтрам злоўжываньняў.\nФільтар злоўжываньняў — аўтаматычны праграмны мэханізм ўжываньня аўтаматычных эўрыстык для ўсіх дзеяньняў.\nІнтэрфэйс паказвае сьпіс усталяваных фільтраў і дае магчымасьць іх зьмены.",
+ "abusefilter-mustbeeditor": "Зь меркаваньняў бясьпекі гэтым інтэрфэйсам могуць карыстацца толькі ўдзельнікі, якія маюць права зьмены фільтраў злоўжываньняў.",
+ "abusefilter-warning": "'''Увага''': гэтае дзеяньне будзе аўтаматычна лічыцца шкодным.\nНеканструктыўныя дзеяньні будуць скасаваныя,\nа значныя ці неаднаразовыя неканструктыўныя рэдагаваньні прывядуць да блякаваньня вашага рахунку ці кампутара.\nКалі вы лічыце гэтае дзеяньне канструктыўным, вам неабходна пацьвердзіць яго яшчэ раз.\nКароткі сьпіс злоўжываньняў, зь якімі суадносіцца вашае дзеяньне: $1",
+ "abusefilter-disallowed": "Гэтае дзеяньне было аўтаматычна ідэнтыфікаванае як шкоднае і таму было забароненае.\nКалі Вы ўпэўненыя, што гэта карыснае рэдагаваньне, калі ласка, зьвяжыцеся з адміністратарам і растлумачце яму, што Вы спрабуеце зрабіць.\nКароткае апісаньне шкоды, зь якой супала Вашае дзеяньне: $1",
+ "abusefilter-blocked-display": "Гэтае дзеяньне было аўтаматычна ідэнтыфікаванае як шкоднае і Вам было забароненае яго выкананьне.\nАкрамя гэтага, у мэтах абароны {{GRAMMAR:родны|{{SITENAME}}}}, Ваш рахунак і ўсе зьвязаныя зь ім ІР-адрасы былі заблякаваныя.\nКалі гэта адбылася памылкова, калі ласка, зьвяжыцеся з адміністратарам.\nКароткае апісаньне шкоды, зь якой супала Вашае дзеяньне: $1",
+ "abusefilter-degrouped": "Гэтае дзеяньне было аўтаматычна ідэнтыфікаванае як шкоднае.\nТакім чынам, дзеяньне было забароненае і, у выніку таго, што Ваш рахунак трапіў пад падазрэньне, зь яго былі зьнятыя ўсе правы.\nКалі Вы ўпэўнены, што гэта адбылося памылкова, калі ласка, зьвяжыцеся зь бюракратам і растлумачце яму Вашыя дзеяньні, тады Вашыя правы могуць быць адноўленыя.\nКароткае апісаньне шкоды, зь якой супала Вашае дзеяньне: $1",
+ "abusefilter-autopromote-blocked": "Гэтае дзеяньне было аўтаматычна ідэнтыфікаванае як шкоднае і было забароненае.\nАкрамя таго, у мэтах бясьпекі, з Вашага рахунку часова зьнятыя некаторыя правы, якія звычайна даюцца пад час рэгістрацыі.\nКароткае апісаньне шкоды, зь якой супала Вашае дзеяньне: $1",
+ "abusefilter-blocker": "Фільтар злоўжываньняў",
+ "abusefilter-blockreason": "Аўтаматычна заблякаваны фільтрам злоўжываньняў. Апісаньне адпаведнага правіла: $1",
+ "abusefilter-degroupreason": "Фільтар злоўжываньняў аўтаматычна зьняў правы. Апісаньне правіла: $1",
+ "abusefilter-accountreserved": "Назва гэтага рахунку зарэзэрвананая для выкарыстаньня фільтрам злоўжываньняў.",
+ "right-abusefilter-modify": "зьмена фільтраў злоўжываньняў",
+ "right-abusefilter-view": "прагляд фільтраў злоўжываньняў",
+ "right-abusefilter-log": "прагляд журнала злоўжываньняў",
+ "right-abusefilter-log-detail": "прагляд падрабязных запісаў у журнале злоўжываньняў",
+ "right-abusefilter-private": "Паказаць прыватныя зьвесткі ў журнале злоўжываньняў",
+ "right-abusefilter-modify-restricted": "зьмена фільтраў злоўжываньняў з абмежавальнымі дзеяньнямі",
+ "right-abusefilter-revert": "адкат усіх зьменаў, зробленых фільтрам злоўжываньняў",
+ "right-abusefilter-view-private": "прагляд фільтраў злоўжываньняў пазначаных як прыватныя",
+ "right-abusefilter-log-private": "Прагляд журнальных запісаў прыватных фільтраў злоўжываньня",
+ "right-abusefilter-hide-log": "хаваньне запісаў ў журнале злоўжываньняў",
+ "right-abusefilter-hidden-log": "прагляд схаваных запісаў у журнале злоўжываньняў",
+ "right-abusefilter-modify-global": "ствараць ці зьмяняць глябальныя фільтры злоўжываньняў",
+ "action-abusefilter-modify": "зьмяніць фільтры злоўжываньняў",
+ "action-abusefilter-view": "паказаць фільтры злоўжываньняў",
+ "action-abusefilter-log": "прагляд журнала злоўжываньняў",
+ "action-abusefilter-log-detail": "паказаць падрабязнасьці запісаў журналу злоўжываньняў",
+ "action-abusefilter-private": "паказаць прыватныя зьвесткі ў журнале злоўжываньняў",
+ "action-abusefilter-modify-restricted": "зьмяніць фільтры злоўжываньняў з абмежаванымі дзеяньнямі",
+ "action-abusefilter-revert": "скасаваць усе зьмены, зробленыя пазначаным фільтрам злоўжываньняў",
+ "action-abusefilter-view-private": "паказаць фільтры злоўжываньняў пазначаныя як прыватныя",
+ "abusefilter-log": "Журнал фільтру злоўжываньняў",
+ "abusefilter-log-summary": "Гэты журнал паказвае сьпіс усіх дзеяньняў, якія былі выяўленыя фільтрамі.",
+ "abusefilter-log-search": "Пошук у журнале злоўжываньняў",
+ "abusefilter-log-search-user": "Удзельнік:",
+ "abusefilter-log-search-filter": "Ідэнтыфікатары фільтру (падзеленыя вэртыкальнымі рысамі):",
+ "abusefilter-log-search-title": "Назва:",
+ "abusefilter-log-search-wiki": "Вікі:",
+ "abusefilter-log-search-submit": "Шукаць",
+ "abusefilter-log-entry": "$1: $2 {{GENDER:$8|выклікаў|выклікала}} фільтар злоўжываньняў пры выкананьні дзеяньня «$3» на старонцы $4.\nПрынятыя меры: $5;\nАпісаньне фільтру: $6",
+ "abusefilter-log-entry-withdiff": "$1: $2 {{GENDER:$8|выклікаў|выклікала}} фільтар пры выкананьні дзеяньня «$3» на старонцы $4.\nЗробленыя захады: $5;\nАпісаньне фільтру: $6 ($7)",
+ "abusefilter-log-detailedentry-meta": "$1: $2 {{GENDER:$9|выклікаў|выклікала}} $3 пры выкананьні дзеяньня «$4» на старонцы $5.\nПрынятыя меры: $6;\nАпісаньне фільтру: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "глябальны фільтар $1",
+ "abusefilter-log-detailedentry-local": "фільтар $1",
+ "abusefilter-log-detailslink": "падрабязнасьці",
+ "abusefilter-log-diff": "розьн",
+ "abusefilter-log-hidelink": "зьмяніць бачнасьць",
+ "abusefilter-log-details-legend": "Падрабязнасьці запісу ў журнале $1",
+ "abusefilter-log-details-var": "Зьменная",
+ "abusefilter-log-details-val": "Значэньне",
+ "abusefilter-log-details-vars": "Парамэтры дзеяньня",
+ "abusefilter-log-details-private": "Дэталі прыватнага журналу",
+ "abusefilter-log-details-ip": "Выходны ІР-адрас",
+ "abusefilter-log-noactions": "няма",
+ "abusefilter-log-details-diff": "Зьмены, зробленыя ў рэдагаваньні",
+ "abusefilter-log-linkoncontribs": "журнал злоўжываньняў",
+ "abusefilter-log-linkoncontribs-text": "Журнал злоўжываньняў {{GENDER:$1|гэтага ўдзельніка|гэтай удзельніцы}}",
+ "abusefilter-log-hidden": "(запіс схаваны)",
+ "abusefilter-log-hidden-implicit": "(схаваная, бо вэрсія была выдаленая)",
+ "abusefilter-log-cannot-see-details": "Вы ня маеце права глядзець падрабязнасьці гэтага запісу.",
+ "abusefilter-log-details-hidden": "Вы ня можаце праглядзець падрабязнасьці гэтага запісу,\nтаму што ён схаваны ад публічнага прагляду.",
+ "abusefilter-log-private-not-included": "Адзін ці болей ідэнтыфікатараў фільтру, пазначаных вамі, зьяўляюцца прыватнымі. Праз тое, што вы ня можаце праглядаць зьвесткі прыватных фільтраў, гэтыя фільтры ня будуць выкарыстаныя пры пошуку.",
+ "abusefilter-log-hide-legend": "Схаваць запіс у журнале",
+ "abusefilter-log-hide-id": "Ідэнтыфікатар запісу ў журнале:",
+ "abusefilter-log-hide-hidden": "Схаваць гэты запіс ад публічнага прагляду",
+ "abusefilter-log-hide-reason": "Прычына:",
+ "abusefilter-log-hide-forbidden": "Вы ня маеце права хаваць запісы\nў журнале злоўжываньняў.",
+ "abusefilter-logentry-suppress": "схаваў «[[$1]]»",
+ "abusefilter-logentry-unsuppress": "паказаў «[[$1]]»",
+ "logentry-abusefilter-hit": "$1 {{#GENDER:$2|выклікаў|выклікала}} спрацоўваньне фільтру $4 пры выкананьні дзеяньня «$5» на старонцы $3. Прынятыя меры: $6 ($7)",
+ "abusefilter-management": "Кіраваньне фільтрам злоўжываньняў",
+ "abusefilter-list": "Усе фільтры",
+ "abusefilter-list-id": "Ідэнтыфікатар фільтру",
+ "abusefilter-list-status": "Статус",
+ "abusefilter-list-public": "Публічнае апісаньне",
+ "abusefilter-list-consequences": "Наступствы",
+ "abusefilter-list-visibility": "Бачнасьць",
+ "abusefilter-list-hitcount": "Лічыльнік выкананьняў",
+ "abusefilter-list-edit": "Рэдагаваць",
+ "abusefilter-list-details": "Падрабязнасьці",
+ "abusefilter-list-limit": "Колькасьць на старонцы:",
+ "abusefilter-list-lastmodified": "Апошняя зьмена",
+ "abusefilter-list-group": "Група фільтраў",
+ "abusefilter-hidden": "Прыватнае",
+ "abusefilter-unhidden": "Публічнае",
+ "abusefilter-enabled": "Уключаны",
+ "abusefilter-deleted": "Выдалены",
+ "abusefilter-disabled": "Выключаны",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|выкананьне|выкананьні|выкананьняў}}",
+ "abusefilter-new": "Стварыць новы фільтар",
+ "abusefilter-return": "Вярнуцца да кіраваньня фільтрам",
+ "abusefilter-status-global": "Глябальны",
+ "abusefilter-list-options": "Парамэтры",
+ "abusefilter-list-options-deleted": "Выдаленыя фільтры:",
+ "abusefilter-list-options-deleted-only": "Паказаць толькі выдаленыя фільтры",
+ "abusefilter-list-options-deleted-hide": "Схаваць выдаленыя фільтры",
+ "abusefilter-list-options-deleted-show": "Уключыць выдаленыя фільтры",
+ "abusefilter-list-options-scope": "Паказаць фільтры:",
+ "abusefilter-list-options-scope-local": "Толькі лякальныя правілы",
+ "abusefilter-list-options-scope-global": "Толькі глябальныя правілы",
+ "abusefilter-list-options-disabled": "Выключаныя фільтры:",
+ "abusefilter-list-options-hidedisabled": "Схаваць выключаныя фільтры",
+ "abusefilter-list-options-submit": "Абнавіць",
+ "abusefilter-tools-text": "Тут знаходзяцца інструмэнты, якія могуць быць карыснымі ў фармуляваньні і праверцы фільтраў злоўжываньняў.",
+ "abusefilter-tools-expr": "Праверка выразаў",
+ "abusefilter-tools-submitexpr": "Паспрабаваць",
+ "abusefilter-tools-reautoconfirm": "Аднавіць статус аўтаматычнага пацьверджаньня",
+ "abusefilter-tools-reautoconfirm-user": "Удзельнік:",
+ "abusefilter-tools-reautoconfirm-submit": "Паўторнае аўтаматычнае пацьверджаньне",
+ "abusefilter-reautoconfirm-none": "{{GENDER:$1|Гэты ўдзельнік|Гэтая ўдзельніца}} ня мае адключанага статусу аўтаматычнага пацьверджаньня.",
+ "abusefilter-reautoconfirm-notallowed": "Вам не дазволена аднаўляць статус аўтаматычнага пацьверджаньня.",
+ "abusefilter-reautoconfirm-done": "Адноўлены статус аўтаматычнага пацьверджаньня рахунку",
+ "abusefilter-status": "З $1 {{PLURAL:$1|апошняга дзеяньня|апошніх дзеяньняў|апошніх дзеяньняў}}, $2 ($3%) {{PLURAL:$2|трапіла|трапілі|трапілі}} пад абмежаваньне $4, а $5 ($6%) {{PLURAL:$5|адпавядае|адпавядаюць|адпавядаюць}} аднаму з уключаных цяпер фільтраў.",
+ "abusefilter-edit": "Рэдагаваньне фільтру злоўжываньняў",
+ "abusefilter-edit-subtitle": "Рэдагаваньне фільтру $1",
+ "abusefilter-edit-subtitle-new": "Стварэньне фільтру",
+ "abusefilter-edit-oldwarning": "<strong>Вы рэдагуеце старую вэрсію гэтага фільтру.\nСтатыстыка падаецца для самай новай вэрсіі фільтру.\nКалі Вы захаваеце Вашыя зьмены, Вы скасуеце ўсе зьмены зробленыя раней.</strong> &bull;\n[[Special:AbuseFilter/history/$2|Вярнуцца да гісторыі гэтага фільтру]].",
+ "abusefilter-edit-status-label": "Статыстыка:",
+ "abusefilter-edit-status": "З $1 {{PLURAL:$1|апошняга дзеяньня|апошніх дзеяньняў}} $2 ($3%) {{PLURAL:$2|адпавядала гэтаму фільтру|адпавядалі гэтаму фільтру}}.",
+ "abusefilter-edit-status-profile": "З $1 {{PLURAL:$1|апошняга дзеяньня|апошніх дзеяньняў}} $2 ($3%) {{PLURAL:$2|адпавядала гэтаму фільтру|адпавядалі гэтаму фільтру}}.\nУ сярэднім, выкананьне фільтру працягвалася $4 мс і выкарыстоўвала $5 {{PLURAL:$5|умову|умовы|умоваў}} зь ліміту ўмоваў.",
+ "abusefilter-edit-new": "Новы фільтар",
+ "abusefilter-edit-save": "Захаваць фільтар",
+ "abusefilter-edit-id": "Ідэнтыфікатар фільтру:",
+ "abusefilter-edit-description": "Апісаньне:\n:''(агульнадаступнае)''",
+ "abusefilter-edit-group": "Група фільтраў:",
+ "abusefilter-edit-flags": "Сьцягі:",
+ "abusefilter-edit-enabled": "Уключыць гэты фільтар",
+ "abusefilter-edit-deleted": "Пазначыць як выдалены",
+ "abusefilter-edit-hidden": "Схаваць падрабязнасьці гэтага фільтру ад агульнага прагляду",
+ "abusefilter-edit-global": "Глябальны фільтар",
+ "abusefilter-edit-rules": "Умовы:",
+ "abusefilter-edit-notes": "Заўвагі:",
+ "abusefilter-edit-lastmod": "Апошняя зьмена фільтру:",
+ "abusefilter-edit-lastmod-text": "$1 удзельнікам $2",
+ "abusefilter-edit-hitcount": "Выкананьняў фільтру:",
+ "abusefilter-edit-consequences": "Дзеяньні, зьдзейсьненыя пры супадзеньні",
+ "abusefilter-edit-action-warn": "Выконваць гэтыя дзеяньні пасьля папярэджаньня ўдзельніка",
+ "abusefilter-edit-action-disallow": "Забараніць удзельніку выкананьне дзеяньня",
+ "abusefilter-edit-action-blockautopromote": "Зьняць з удзельніка статус аўтаматычнага пацьверджаньня",
+ "abusefilter-edit-action-degroup": "Выдаліць удзельніка з усіх прывілеяваных групаў",
+ "abusefilter-edit-action-block": "Заблякаваць удзельніка і/ці ІР-адрас",
+ "abusefilter-edit-action-throttle": "Выконваць дзеяньні, толькі калі ўдзельнік перайшоў дапушчальны ўзровень",
+ "abusefilter-edit-action-rangeblock": "Заблякаваць адпаведны IP-дыяпазон, зь якога працуе ўдзельнік",
+ "abusefilter-edit-action-tag": "Пазначыць рэдагаваньне для далейшай праверкі.",
+ "abusefilter-edit-throttle-count": "Колькасьць дазволеных дзеяньняў:",
+ "abusefilter-edit-throttle-period": "Пэрыяд часу:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|сэкунда|сэкунды|сэкундаў}}",
+ "abusefilter-edit-throttle-groups": "Звужэньне па групах:\n:''(па адным на радку, падзяляць коскамі)''",
+ "abusefilter-edit-warn-message": "Сыстэмнае паведамленьне для папярэджаньня:",
+ "abusefilter-edit-warn-other": "Іншае паведамленьне",
+ "abusefilter-edit-warn-other-label": "Назва старонкі іншага паведамленьня:\n:''(без прасторы назваў MediaWiki)''",
+ "abusefilter-edit-warn-actions": "Дзеяньні:",
+ "abusefilter-edit-warn-preview": "Папярэдні прагляд выбранага паведамленьня",
+ "abusefilter-edit-warn-edit": "Стварыць/рэдагаваць выбранае паведамленьне",
+ "abusefilter-edit-tag-tag": "Ужываемыя [[Special:Tags|тэгі]] (па адным на радок):",
+ "abusefilter-edit-denied": "Вы ня можаце праглядзець дэталі гэтага фільтру, таму што яны схаваныя ад агульнага прагляду.",
+ "abusefilter-edit-main": "Парамэтры фільтру",
+ "abusefilter-edit-done-subtitle": "Фільтар быў адрэдагаваны",
+ "abusefilter-edit-done": "[[Special:AbuseFilter/history/$1/diff/prev/$2|Вашыя зьмены]] [[Special:AbuseFilter/$1|фільтру $3]] былі захаваныя.",
+ "abusefilter-edit-badsyntax": "У пазначаным фільтры знойдзеная сынтаксычная памылка.\nПаведамленьне парсэра: <pre>$1</pre>",
+ "abusefilter-edit-restricted": "Вы ня можаце рэдагаваць гэты фільтар, таму што ён утрымлівае адно ці болей абмежаваных дзеяньняў.\nКалі ласка, зьвярніцеся да ўдзельніка з адпаведнымі правамі, каб дадаць абмежаванае дзеяньне.",
+ "abusefilter-edit-viewhistory": "Паказаць гісторыю гэтага фільтру",
+ "abusefilter-edit-history": "Гісторыя:",
+ "abusefilter-edit-check": "Праверыць сынтаксіс",
+ "abusefilter-edit-badfilter": "Пазначаны Вамі фільтар не існуе",
+ "abusefilter-edit-revert": "Адкаціць дзеяньні выкананыя гэтым фільтрам",
+ "abusefilter-edit-tools": "Інструмэнты:",
+ "abusefilter-edit-test-link": "Праверыць гэты фільтар на апошніх зьменах",
+ "abusefilter-edit-export": "Экспартаваць гэты фільтар у іншую вікі",
+ "abusefilter-edit-syntaxok": "Сынтаксычныя памылкі ня знойдзеныя.",
+ "abusefilter-edit-syntaxerr": "Знойдзеная сынтаксычная памылка: $1",
+ "abusefilter-edit-bad-tags": "Адна ці болей пазначаных вамі метак — няслушная.\nМеткі павінны быць кароткімі, і яны ня мусяць утрымліваць спэцыяльныя сымбалі і ня мусяць быць зарэзэрваваныя іншым праграмным забесьпячэньнем. Паспрабуйце абраць новую назву меткі.",
+ "abusefilter-edit-notallowed": "Вы ня маеце правоў на стварэньне альбо рэдагаваньне фільтраў злоўжываньняў",
+ "abusefilter-edit-notallowed-global": "Вы ня маеце правоў на стварэньне альбо рэдагаваньне глябальных фільтраў злоўжываньняў",
+ "abusefilter-edit-notallowed-global-custom-msg": "Пабочныя папярэджаньні ў глябальных фільтрах не падтрымліваюцца",
+ "abusefilter-edit-builder-select": "Выберыце парамэтар, каб дадаць яго",
+ "abusefilter-edit-builder-group-op-arithmetic": "Арытмэтычныя апэратары",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Складаньне (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Адыманьне (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Памнажэньне (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Дзяленьне (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Модуль (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Ступень (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Апэратары параўнаньня",
+ "abusefilter-edit-builder-op-comparison-equal": "Значэньне, роўнае (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Значэньне, ня роўнае (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "Меней чым (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Болей чым (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Меней ці роўныя (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Болей ці роўныя (>=)",
+ "abusefilter-edit-builder-group-op-bool": "Булеўскія апэратары",
+ "abusefilter-edit-builder-op-bool-not": "Не (!)",
+ "abusefilter-edit-builder-op-bool-and": "І (&)",
+ "abusefilter-edit-builder-op-bool-or": "Ці (|)",
+ "abusefilter-edit-builder-group-misc": "Розныя",
+ "abusefilter-edit-builder-misc-in": "знаходзіцца ў радку (in)",
+ "abusefilter-edit-builder-misc-like": "Супадзеньне з рэгулярным выразам (like)",
+ "abusefilter-edit-builder-misc-rlike": "Супадзеньне з рэгулярным выразам (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "Адпаведнасьць рэгулярнаму выразу, без уліку рэгістра (irlike)",
+ "abusefilter-edit-builder-misc-contains": "Левы радок ўтрымлівае правы радок (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "Радок сымбаляў (\"\")",
+ "abusefilter-edit-builder-misc-tern": "Тэрнарны апэратар (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "Умова (if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "Функцыі",
+ "abusefilter-edit-builder-funcs-length": "Даўжыня радку (length)",
+ "abusefilter-edit-builder-funcs-lcase": "У малыя літары (lcase)",
+ "abusefilter-edit-builder-funcs-ucase": "У вялікія літары (ucase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "Нармалізацыя шматзначных сымбаляў (ccnorm)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "Выдаленьне сымбаляў, што паўтараюцца (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "Спэцыяльных сымбаляў / усяго сымбаляў (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "Нармалізацыя (norm)",
+ "abusefilter-edit-builder-funcs-count": "Колькасьць уключэньняў радку Х у радок Y (count)",
+ "abusefilter-edit-builder-funcs-rcount": "Колькасьць адпаведнасьцяў рэгулярнаму выразу X у радку Y (rcount)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "Выдаліць прагалы (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "Выдаліць спэцыяльныя сымбалі (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "Ці знаходзіцца IP-адрас ў дыяпазоне? (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "Радок пошуку для шматлікіх падрадкоў у OR-рэжыме. (contains_any)",
+ "abusefilter-edit-builder-funcs-substr": "Падрадок (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "Пазыцыя падрадку ў радку (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "Замена падрадку ў радку (str_replace)",
+ "abusefilter-edit-builder-funcs-rescape": "Экранаваньне радка як літэрал у рэгулярных выразах (rescape)",
+ "abusefilter-edit-builder-funcs-set_var": "Устанавіць зьменную (set_var)",
+ "abusefilter-edit-builder-group-vars": "Зьменныя",
+ "abusefilter-edit-builder-vars-accountname": "Назва рахунку (on account creation)",
+ "abusefilter-edit-builder-vars-timestamp": "Unix-час зьмены",
+ "abusefilter-edit-builder-vars-action": "Дзеяньне",
+ "abusefilter-edit-builder-vars-addedlines": "Колькасьць радкоў, дададзеных пры рэдагаваньні",
+ "abusefilter-edit-builder-vars-delta": "Зьмена памеру пад час рэдагаваньня",
+ "abusefilter-edit-builder-vars-diff": "Розьніца ўсіх зьменаў зробленых пад час рэдагаваньня",
+ "abusefilter-edit-builder-vars-newsize": "Новы памер старонкі",
+ "abusefilter-edit-builder-vars-oldsize": "Стары памер старонкі",
+ "abusefilter-edit-builder-vars-old-content-model": "Старая мадэль зьместу",
+ "abusefilter-edit-builder-vars-new-content-model": "Новая мадэль зьместу",
+ "abusefilter-edit-builder-vars-removedlines": "Выдаленых радкоў у рэдагаваньні",
+ "abusefilter-edit-builder-vars-summary": "Кароткае апісаньне зьменаў/прычына",
+ "abusefilter-edit-builder-vars-article-id": "Ідэнтыфікатар старонкі",
+ "abusefilter-edit-builder-vars-article-ns": "Прастора назваў старонкі",
+ "abusefilter-edit-builder-vars-article-text": "Назва старонкі (без прасторы назваў)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Поўная назва старонкі",
+ "abusefilter-edit-builder-vars-article-views": "Праглядаў старонкі",
+ "abusefilter-edit-builder-vars-movedfrom-id": "Ідэнтыфікатар крыніцы перанесенай старонкі",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "Прастора назваў крыніцы перанесенай старонкі",
+ "abusefilter-edit-builder-vars-movedfrom-text": "Назва крыніцы перанесенай старонкі",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "Поўная назва крыніцы перанесенай старонкі",
+ "abusefilter-edit-builder-vars-movedto-id": "Ідэнтыфікатар мэтавай старонкі пераносу",
+ "abusefilter-edit-builder-vars-movedto-ns": "Прастора назваў мэтавай старонкі пераносу",
+ "abusefilter-edit-builder-vars-movedto-text": "Назва мэтавай старонкі пераносу",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "Поўная назва мэтавай старонкі пераносу",
+ "abusefilter-edit-builder-vars-user-editcount": "Колькасьць рэдагаваньняў удзельніка",
+ "abusefilter-edit-builder-vars-user-age": "Узрост рахунку ўдзельніка",
+ "abusefilter-edit-builder-vars-user-name": "Назва рахунку ўдзельніка",
+ "abusefilter-edit-builder-vars-user-groups": "Групы (уключаючы няяўныя) да якіх належыць удзельнік",
+ "abusefilter-edit-builder-vars-user-rights": "Правы, якія мае ўдзельнік",
+ "abusefilter-edit-builder-vars-user-blocked": "Ці заблякаваны ўдзельнік",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "Час пацьверджаньня адрасу электроннай пошты",
+ "abusefilter-edit-builder-vars-recent-contributors": "Апошнія дзесяць удзельнікаў, якія рэдагавалі старонку",
+ "abusefilter-edit-builder-vars-first-contributor": "Першы рэдактар старонкі",
+ "abusefilter-edit-builder-vars-all-links": "Усе вонкавыя спасылкі ў новым тэксьце",
+ "abusefilter-edit-builder-vars-added-links": "Усе вонкавыя спасылкі дададзеныя ў рэдагаваньні",
+ "abusefilter-edit-builder-vars-removed-links": "Усе вонкавыя спасылкі выдаленыя ў рэдагаваньні",
+ "abusefilter-edit-builder-vars-old-text": "Стары вікі-тэкст, да рэдагаваньня",
+ "abusefilter-edit-builder-vars-new-text": "Новы вікі-тэкст, пасьля рэдагаваньня",
+ "abusefilter-edit-builder-vars-new-pst": "Вікітэкст новай старонкі, трансфармаваны перад захаваньнем",
+ "abusefilter-edit-builder-vars-diff-pst": "Уніфікаваная розьніца зьменаў у працэсе рэдагаваньня, ператвораная перад захаваньнем",
+ "abusefilter-edit-builder-vars-addedlines-pst": "Радкі, дададзеныя пры рэдагаваньні, ператвораныя перад захаваньнем",
+ "abusefilter-edit-builder-vars-new-text-stripped": "Новы тэкст старонкі, ачышчаны ад усіх пазнакаў",
+ "abusefilter-edit-builder-vars-new-html": "Разабраны HTML-код новай вэрсіі",
+ "abusefilter-edit-builder-vars-restrictions-edit": "Узровень абароны старонкі ад рэдагаваньняў",
+ "abusefilter-edit-builder-vars-restrictions-move": "Узровень абароны старонкі ад пераносаў",
+ "abusefilter-edit-builder-vars-restrictions-create": "Абарона старонкі ад стварэньня",
+ "abusefilter-edit-builder-vars-restrictions-upload": "Абарона файла ад загрузкі",
+ "abusefilter-edit-builder-vars-old-text-stripped": "Стары зьмест старонкі, пазбаўлены ад усіх пазнакаў",
+ "abusefilter-edit-builder-vars-old-links": "Спасылкі на старонцы перад рэдагаваньнем",
+ "abusefilter-edit-builder-vars-old-html": "Стары вікі-тэкст старонкі, пераўтвораны ў фармат HTML",
+ "abusefilter-edit-builder-vars-minor-edit": "Ці пазначана рэдагаваньне як дробнае",
+ "abusefilter-edit-builder-vars-file-sha1": "SHA1-хэш зьместу файлаў",
+ "abusefilter-edit-builder-vars-file-size": "Памер файлу ў байтах",
+ "abusefilter-edit-builder-vars-file-mime": "MIME-тып файлу",
+ "abusefilter-edit-builder-vars-file-mediatype": "Мэдыя-тып файлу",
+ "abusefilter-filter-log": "Апошнія зьмены фільтру",
+ "abusefilter-history": "Гісторыя зьменаў фільтру злоўжываньняў $1",
+ "abusefilter-history-foruser": "Зьмены зробленыя $1",
+ "abusefilter-history-hidden": "Схаваны",
+ "abusefilter-history-enabled": "Уключаны",
+ "abusefilter-history-global": "Глябальны",
+ "abusefilter-history-timestamp": "Час",
+ "abusefilter-history-user": "Удзельнік",
+ "abusefilter-history-public": "Публічнае апісаньне фільтру",
+ "abusefilter-history-flags": "Сьцягі",
+ "abusefilter-history-filter": "Правілы фільтру",
+ "abusefilter-history-comments": "Камэнтары",
+ "abusefilter-history-actions": "Дзеяньні",
+ "abusefilter-history-backedit": "Вярнуцца да рэдактара фільтру",
+ "abusefilter-history-deleted": "Выдалены",
+ "abusefilter-history-filterid": "Фільтар",
+ "abusefilter-history-select-legend": "Удакладніць пошук",
+ "abusefilter-history-select-user": "Удзельнік:",
+ "abusefilter-history-select-submit": "Удакладніць",
+ "abusefilter-history-diff": "Зьмены",
+ "abusefilter-history-error-hidden": "Запытаны Вамі фільтар схаваны, і Вы ня можаце паглядзець яго гісторыю.",
+ "abusefilter-exception-unexpectedatend": "Нечаканая «$2» у канцы $1",
+ "abusefilter-exception-expectednotfound": "Чаканы $2 у пазыцыі $1 ня знойдзены (замест знойдзены $3 $4).",
+ "abusefilter-exception-unrecognisedkeyword": "Нераспазнанае ключавое слова $2 у пазыцыі $1.",
+ "abusefilter-exception-unexpectedtoken": "Нечаканы элемэнт «$3» (тыпу $2) у пазыцыі $1.",
+ "abusefilter-exception-unclosedstring": "Незакрыты радок выразу, які пачынаецца з пазыцыі $1.",
+ "abusefilter-exception-invalidoperator": "Няслушны апэратар «$2» у пазыцыі $1.",
+ "abusefilter-exception-unrecognisedtoken": "Нераспазнаны элемэнт «$2» у пазыцыі $1.",
+ "abusefilter-exception-noparams": "Няма парамэтраў для функцыі «$2» у пазыцыі $1.",
+ "abusefilter-exception-dividebyzero": "Спроба дзяленьня $2 на нуль у пазыцыі $1.",
+ "abusefilter-exception-unrecognisedvar": "Нераспазнаная зьменная $2 у пазыцыі $1",
+ "abusefilter-exception-notenoughargs": "Недастаткова аргумэнтаў для функцыі $2, якая выклікаецца ў пазыцыі $1.\nЧакаецца $3 {{PLURAL:$3|аргумэнт|аргумэнты|аргумэнтаў}}, атрымана $4",
+ "abusefilter-exception-regexfailure": "Памылка ў рэгулярным выразе «$3» у пазыцыі $1: «$2»",
+ "abusefilter-exception-overridebuiltin": "Недазволеная перавызначэньне ўбудаванай зьменнай «$2» ў пазыцыі $1.",
+ "abusefilter-exception-outofbounds": "Запыт неіснуючага элемэнту сьпісу $2 (памер сьпісу: $3) у пазыцыі $1.",
+ "abusefilter-exception-notlist": "Запыт элемэнту масіву для аб'екту, які не зьяўляецца масівам, у пазыцыі $1.",
+ "abusefilter-action-tag": "Метка",
+ "abusefilter-action-throttle": "Абмежаваць",
+ "abusefilter-action-warn": "Папярэдзіць",
+ "abusefilter-action-blockautopromote": "Заблякаваць аўтаматычнае наданьне правоў",
+ "abusefilter-action-block": "Заблякаваць",
+ "abusefilter-action-degroup": "Выдаліць з групаў",
+ "abusefilter-action-rangeblock": "Заблякаваць дыяпазон",
+ "abusefilter-action-disallow": "Не дазволіць",
+ "abusefilter-revert-title": "Адкаціць усе зьмены зробленыя фільтрам $1",
+ "abusefilter-revert-intro": "Гэта форма дазваляе Вам адкаціць усе зьмены зробленыя фільтрам злоўжываньняў $1.\nКалі ласка, карыстайцеся гэтым інструмэнтам асьцярожна.",
+ "abusefilter-revert-preview-item": "$1: $2 {{GENDER:$7|зрабіў|зрабіла}} $3 на $4.\nДзеяньні для адкату: $5 ($6)",
+ "abusefilter-revert-search-legend": "Пазначце дзеяньні фільтра злоўжываньняў для адкату",
+ "abusefilter-revert-periodstart": "Пачатак пэрыяду:",
+ "abusefilter-revert-periodend": "Канец пэрыяду:",
+ "abusefilter-revert-search": "Выбар дзеяньняў",
+ "abusefilter-revert-filter": "Ідэнтыфікатар фільтру:",
+ "abusefilter-revert-preview-intro": "Ніжэй знаходзяцца дзеяньні, выкананыя фільтрам злоўжываньняў, якія будуць адмененыя гэтым дзеяньнем.\nКалі ласка, праверце іх уважліва і націсьніце «{{int:abusefilter-revert-confirm}}», каб пацьвердзіць ваш выбар.",
+ "abusefilter-revert-confirm": "Пацьвердзіць",
+ "abusefilter-revert-success": "Вы адкацілі ўсе дзеяньні, выкананыя фільтрам злоўжываньняў [[Special:AbuseFilter/$1|filter $2]].",
+ "abusefilter-revert-reason": "Аўтаматычны адкат усіх дзеяньняў, выкананых фільтрам злоўжываньняў $1.\nПададзеная прычына: $2",
+ "abusefilter-revert-reasonfield": "Прычына:",
+ "abusefilter-test": "Праверыць фільтар на ўжо зробленых рэдагаваньнях",
+ "abusefilter-test-intro": "Гэтая старонка дазваляе Вам праверыць фільтар, пададзены ў полі ніжэй, на $1 {{PLURAL:$1|апошняй зьмене|апошніх зьменах}}.\nКаб загрузіць існы фільтар, увядзіце яго ідэнтыфікатар у поле, якое знаходзіцца ніжэй за тэкставае поле, і націсьніце кнопку «{{int:abusefilter-test-load}}».",
+ "abusefilter-test-legend": "Праверка фільтру",
+ "abusefilter-test-load-filter": "Загрузіць фільтар з ідэнтыфікатарам:",
+ "abusefilter-test-submit": "Праверыць",
+ "abusefilter-test-load": "Загрузіць",
+ "abusefilter-test-user": "Зьмены зробленыя ўдзельнікам:",
+ "abusefilter-test-period-start": "Зьмены зробленыя пасьля:",
+ "abusefilter-test-period-end": "Зьмены зробленыя перад:",
+ "abusefilter-test-page": "Зьмены, зробленыя на старонцы:",
+ "abusefilter-test-shownegative": "Паказаць зьмены, якія не супадаюць зь фільтрам",
+ "abusefilter-test-syntaxerr": "Фільтар, які Вы ўвялі, утрымлівае сынтаксычную памылку.\nВы можаце атрымаць поўнае тлумачэньне, калі націсьніце на кнопку «{{int:abusefilter-edit-check}}».",
+ "abusefilter-test-badtitle": "Загаловак старонкі, які вы ўвялі, зьяўляецца няслушным. Магчыма, ён утрымлівае адзін ці некалькі сымбаляў, якія нельга выкарыстоўваць у назвах.",
+ "abusefilter-changeslist-examine": "праверыць",
+ "abusefilter-examine": "Праверыць індывідуальныя зьмены",
+ "abusefilter-examine-intro": "Гэтая старонка дазваляе Вам праверыць зьменныя, створаныя фільтрам злоўжываньняў для індывідуальных зьменаў, і праверыць іх на фільтрах.",
+ "abusefilter-examine-legend": "Выбар зьменаў",
+ "abusefilter-examine-diff": "URL-адрас розьніцы паміж вэрсіямі:",
+ "abusefilter-examine-user": "Удзельнік:",
+ "abusefilter-examine-title": "Назва старонкі:",
+ "abusefilter-examine-submit": "Знайсьці",
+ "abusefilter-examine-vars": "Зьменныя, створаныя для гэтай зьмены",
+ "abusefilter-examine-test": "Праверыць гэту зьмену ў фільтры",
+ "abusefilter-examine-test-button": "Праверыць фільтар",
+ "abusefilter-examine-match": "Гэта зьмена адпавядае фільтру.",
+ "abusefilter-examine-nomatch": "Гэта зьмена не адпавядае фільтру.",
+ "abusefilter-examine-syntaxerror": "Сынтаксычная памылка ў фільтры",
+ "abusefilter-examine-notfound": "Пададзеная Вамі зьмена ня можа быць знойдзена.",
+ "abusefilter-examine-incompatible": "Пададзеная Вамі зьмена не падтрымліваецца фільтрам злоўжываньняў",
+ "abusefilter-examine-noresults": "Нічога ня знойдзена па запыту з пададзенымі Вамі парамэтрамі.",
+ "abusefilter-topnav": "'''Навігацыя фільтру злоўжываньняў'''",
+ "abusefilter-topnav-home": "Пачатак",
+ "abusefilter-topnav-test": "Пакетнае тэставаньне",
+ "abusefilter-topnav-examine": "Праверка апошніх рэдагаваньняў",
+ "abusefilter-topnav-log": "Журнал злоўжываньняў",
+ "abusefilter-topnav-tools": "Інструмэнты для наладкі",
+ "abusefilter-topnav-import": "Імпартаваць фільтар",
+ "abusefilter-log-name": "Журнал фільтру злоўжываньняў",
+ "abusefilter-log-header": "Гэты журнал паказвае кароткае апісаньне зьменаў у фільтрах.\nПоўную інфармацыю можна знайсьці ў [[Special:AbuseFilter/history|сьпісе]] апошніх зьменаў фільтраў.",
+ "abusefilter-log-noresults": "Вынікаў няма",
+ "abusefilter-diff-title": "Адрозьненьні паміж вэрсіямі",
+ "abusefilter-diff-item": "Элемэнт",
+ "abusefilter-diff-version": "Вэрсія {{GENDER:$3|ад}} $1 $2",
+ "abusefilter-diff-info": "Асноўныя зьвесткі",
+ "abusefilter-diff-pattern": "Умовы фільтру",
+ "abusefilter-diff-invalid": "Немагчыма атрымаць запытаныя вэрсіі",
+ "abusefilter-diff-backhistory": "Вярнуцца да гісторыі фільтру",
+ "abusefilter-diff-prev": "Папярэднія зьмены",
+ "abusefilter-diff-next": "Наступныя зьмены",
+ "abusefilter-import-intro": "Вы можаце выкарыстоўваць гэты інтэрфэйс для імпарту фільтраў зь іншых вікі.\nУ крынічнай вікі націсьніце «{{int:abusefilter-edit-export}}» у разьдзеле «{{int:abusefilter-edit-tools}}» інтэрфэйсу рэдагаваньня.\nСкапіруйце з узьнікшага тэкставага поля, і ўстаўце у гэта тэкставае поле, потым націсьніце «{{int:abusefilter-import-submit}}»,",
+ "abusefilter-import-submit": "Імпартаваць зьвесткі",
+ "abusefilter-group-default": "Перадвызначаная"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/be.json b/www/wiki/extensions/AbuseFilter/i18n/be.json
new file mode 100644
index 00000000..a1b7827a
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/be.json
@@ -0,0 +1,39 @@
+{
+ "@metadata": {
+ "authors": [
+ "LexArt",
+ "Тест",
+ "Mikalai Udodau",
+ "Дзяніс Тутэйшы",
+ "Artsiom91"
+ ]
+ },
+ "abusefilter": "Настройкі фільтра злоўжыванняў",
+ "abuselog": "Журнал злоўжыванняў",
+ "abusefilter-blocker": "Фільтр злоўжыванняў",
+ "right-abusefilter-log": "Глядзець журнал злоўжыванняў",
+ "abusefilter-log-search-user": "Удзельнік:",
+ "abusefilter-log-search-title": "Загаловак:",
+ "abusefilter-log-linkoncontribs": "журнал злоўжыванняў",
+ "abusefilter-log-hide-reason": "Прычына:",
+ "abusefilter-list-edit": "Правіць",
+ "abusefilter-new": "Стварыць новы фільтр",
+ "abusefilter-list-options-scope-local": "Толькі лакальныя правілы",
+ "abusefilter-list-options-submit": "Абнавіць",
+ "abusefilter-edit-status-label": "Статыстыка:",
+ "abusefilter-edit-new": "Новы фільтр",
+ "abusefilter-edit-save": "Запісаць фільтр",
+ "abusefilter-edit-throttle-period": "Перыяд часу:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|секунда|секунды|секунд}}",
+ "abusefilter-edit-warn-actions": "Дзеянні:",
+ "abusefilter-edit-history": "Гісторыя:",
+ "abusefilter-edit-builder-op-bool-not": "Не (!)",
+ "abusefilter-edit-builder-op-bool-and": "І (&)",
+ "abusefilter-edit-builder-op-bool-or": "Або (|)",
+ "abusefilter-edit-builder-group-funcs": "Функцыі",
+ "abusefilter-history-timestamp": "Час",
+ "abusefilter-history-flags": "Сцягі",
+ "abusefilter-history-comments": "Каментары",
+ "abusefilter-revert-filter": "Фільтр:",
+ "abusefilter-revert-confirm": "Пацвердзіць"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/bg.json b/www/wiki/extensions/AbuseFilter/i18n/bg.json
new file mode 100644
index 00000000..71349c61
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/bg.json
@@ -0,0 +1,458 @@
+{
+ "@metadata": {
+ "authors": [
+ "DCLXVI",
+ "Simona",
+ "Spiritia",
+ "Stanqo",
+ "Turin",
+ "Петър Петров",
+ "පසිඳු කාවින්ද",
+ "StanProg",
+ "Vodnokon4e",
+ "Matma Rex",
+ "ShockD"
+ ]
+ },
+ "abusefilter-desc": "Прилага автоматични евристики към редакциите.",
+ "abusefilter": "Конфигуриране на филтъра срещу злоупотреби",
+ "abuselog": "Дневник на злоупотребите",
+ "abusefilter-intro": "Добре дошли в административния интерфейс на Филтъра срещу злоупотреби.\nФилтърът срещу злоупотреби е автоматизиран софтуерен механизъм за прилагане на евристични оценки към разнообразни действия.\nТози интерфейс показва списък на дефинираните филтри с възможност те да бъдат променяни.",
+ "abusefilter-mustbeeditor": "От съображения за сигурност само потребители с права да променят филтрите срещу злоупотреби могат да използват този интерфейс.",
+ "abusefilter-warning": "<strong>Внимание:</strong> Извършваното действие беше автоматично разпознато като вредоносно.\nНеконструктивните действия бързо биват премахвани, а демонстративното или упоритото вредене може да доведе до блокиране на потребителската ви сметка или IP адрес.\nАко вярвате, че тази редакция е конструктивна, можете да натиснете бутона „Съхраняване“, за да я запазите.\nКратко описание на правилото, по което вашето действие беше разпознато: $1",
+ "abusefilter-disallowed": "Извършваното действие беше автоматично разпознато като вредно и не беше съхранено.\nАко вярвате, че действието ви е било конструктивно, моля, уведомете администраторите относно намеренията си.\nКратко описание на правилото, по което вашето действие беше разпознато: $1",
+ "abusefilter-blocked-display": "Извършваното действие беше автоматично разпознато като вредно и беше спряно.\nВ допълнение, с цел защита на {{SITENAME}}, вашата потребителска сметка и IP адрес бяха блокирани.\nАко смятате, че тази реакция на системата е погрешна, моля, свържете се с администратор.\nКратко описание на правилото, по което вашето действие беше разпознато: $1",
+ "abusefilter-degrouped": "Извършваното действие беше автоматично разпознато като вредно и беше спряно. В допълнение, настоящата потребителска сметка прилича на открадната и поради това беше лишена от всички потребителски привилегии.\nАко смятате, че тази реакция на системата е погрешна, моля свържете се с бюрократ, обяснете действията си и привилегиите ви може да бъдат възстановени.\nКратко описание на правилото, по което вашето действие беше разпознато: $1",
+ "abusefilter-autopromote-blocked": "Извършваното действие беше автоматично разпознато като вредно и беше спряно.\nЗа допълнителна защита, някои привилегии, които обикновено се дават на редовните потребители, временно бяха отнети от вашата потребителска сметка.\nКратко описание на правилото, по което вашето действие беше разпознато: $1",
+ "abusefilter-blocker": "Филтър срещу злоупотреби",
+ "abusefilter-blockreason": "Автоматично блокиране, извършено от филтъра срещу злоупотребите.\nОписание на причината: $1",
+ "abusefilter-degroupreason": "Автоматично отнемане на права, извършено от филтъра срещу злоупотребите.\nПричина: $1",
+ "abusefilter-accountreserved": "Това име на сметка е запазено за употреба от филтъра срещу злоупотреби.",
+ "right-abusefilter-modify": "Промяна на филтрите срещу злоупотреби",
+ "right-abusefilter-view": "Преглед на филтрите срещу злоупотреби",
+ "right-abusefilter-log": "Преглед на дневника на злоупотребите",
+ "right-abusefilter-log-detail": "Преглед на подробните записи в дневника на злоупотребите",
+ "right-abusefilter-private": "Преглед на скритите данни в дневника на злоупотребите",
+ "right-abusefilter-modify-restricted": "Промяна на филтрите срещу злоупотреби с ограничени действия",
+ "right-abusefilter-revert": "Възвръщане на всички промени, направени от филтъра срещу злоупотреби",
+ "right-abusefilter-view-private": "Преглед на означените като скрити филтри срещу злоупотреби",
+ "right-abusefilter-log-private": "Преглед на записите в дневника на означените като скрити филтри срещу злоупотреби",
+ "right-abusefilter-hide-log": "Скриване на записи в дневника на злоупотребите",
+ "right-abusefilter-hidden-log": "Преглед на скритите записи в дневника на злоупотребите",
+ "right-abusefilter-modify-global": "Създаване или промяна на глобалните филтри срещу злоупотреби",
+ "action-abusefilter-modify": "промяна на филтрите срещу злоупотреби",
+ "action-abusefilter-view": "преглед на филтрите срещу злоупотреби",
+ "action-abusefilter-log": "преглед на дневника на злоупотребите",
+ "action-abusefilter-log-detail": "подробен преглед на дневника на злоупотребите",
+ "action-abusefilter-private": "преглед на личните данни в дневника на злоупотребите",
+ "action-abusefilter-modify-restricted": "промяна на филтрите срещу злоупотреби с ограничени действия",
+ "action-abusefilter-revert": "възвръщане на всички промени, направени от даден филтър",
+ "action-abusefilter-view-private": "Преглед на означените като скрити филтри срещу злоупотреби",
+ "action-abusefilter-log-private": "Преглед на дневниците на означените като скрити филтри срещу злоупотреби",
+ "abusefilter-log": "Дневник на филтъра срещу злоупотреби",
+ "abusefilter-log-summary": "Този дневник показва списъка на всички действия, прехванати от филтрите.",
+ "abusefilter-log-search": "Търсене в Дневника на злоупотребите",
+ "abusefilter-log-search-user": "Потребител:",
+ "abusefilter-log-search-filter": "Идентификатори на филтър (разделени с вертикална линия):",
+ "abusefilter-log-search-title": "Заглавие:",
+ "abusefilter-log-search-wiki": "Уики:",
+ "abusefilter-log-search-impact": "Въздействие:",
+ "abusefilter-log-search-impact-all": "Всички действия",
+ "abusefilter-log-search-impact-saved": "Само съхранени промени",
+ "abusefilter-log-search-impact-not-saved": "Без съхранени промени",
+ "abusefilter-log-search-entries-label": "Видимост:",
+ "abusefilter-log-search-entries-all": "Всички записи",
+ "abusefilter-log-search-entries-hidden": "Само скрити записи",
+ "abusefilter-log-search-entries-visible": "Само видими записи",
+ "abusefilter-log-search-action-taken-label": "Предприето действие:",
+ "abusefilter-log-search-action-taken-any": "Всички",
+ "abusefilter-log-search-submit": "Търсене",
+ "abusefilter-log-entry": "$1: $2 {{GENDER:$8|задейства}} защитен филтър, {{GENDER:$8|извършвайки}} действие „$3“ на $4.\nПредприети действия: $5;\nОписание на филтъра: $6",
+ "abusefilter-log-entry-withdiff": "$1: $2 {{GENDER:$8|задейства}} защитен филтър, {{GENDER:$8|извършвайки}} действие „$3“ на $4.\nПредприети действия: $5;\nОписание на филтъра: $6 ($7)",
+ "abusefilter-log-detailedentry-meta": "$1: $2 {{GENDER:$9|задейства}} $3, {{GENDER:$9|извършвайки}} действие „$4“ на $5.\nПредприети действия: $6;\nОписание на филтъра: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "глобален филтър $1",
+ "abusefilter-log-detailedentry-local": "филтър $1",
+ "abusefilter-log-detailslink": "детайли",
+ "abusefilter-log-diff": "разлика",
+ "abusefilter-log-hidelink": "настройка на видимостта",
+ "abusefilter-log-details-legend": "Детайли за запис от дневника $1",
+ "abusefilter-log-details-var": "Променлива",
+ "abusefilter-log-details-val": "Стойност",
+ "abusefilter-log-details-vars": "Параметри на действието",
+ "abusefilter-log-details-private": "Скрити данни",
+ "abusefilter-log-details-ip": "Изходящ IP адрес",
+ "abusefilter-log-noactions": "няма",
+ "abusefilter-log-details-diff": "Промени, извършени в рамките на редакцията",
+ "abusefilter-log-linkoncontribs": "дневник на злоупотребите",
+ "abusefilter-log-linkoncontribs-text": "Дневник на злоупотребите за {{GENDER:$1|този потребител}}",
+ "abusefilter-log-hidden": "(скрит запис)",
+ "abusefilter-log-hidden-implicit": "(скрито заради изтрита версия)",
+ "abusefilter-log-cannot-see-details": "Нямате права за преглед на детайлите на този запис.",
+ "abusefilter-log-nonexistent": "Не съществува запис с посоченото ID.",
+ "abusefilter-log-details-hidden": "Не можете да прегледате детайлите за този запис, защото той е непубличен.",
+ "abusefilter-log-private-not-included": "Един или повече идентификатори на филтъра, които посочихте, са скрити. Тъй като не е разрешено да видите детайли за скритите филтри, тези филтри не са включени в търсенето.",
+ "abusefilter-log-hide-legend": "Скриване на записа в дневника",
+ "abusefilter-log-hide-id": "Идентификатор на запис от дневника:",
+ "abusefilter-log-hide-hidden": "Скриване на този запис от публичен преглед",
+ "abusefilter-log-hide-reason": "Причина:",
+ "abusefilter-log-hide-forbidden": "Нямате необходимите права да скривате записи от дневника на злоупотребите.",
+ "abusefilter-logentry-suppress": "скриване на „[[$1]]“",
+ "abusefilter-logentry-unsuppress": "показване на „[[$1]]“",
+ "logentry-abusefilter-hit": "$1: {{GENDER:$2|задейства}} $4, {{GENDER:$2|извършвайки}} действие „$5“ на $3.\nПредприети действия: $6 ($7)",
+ "log-action-filter-abusefilter": "Вид промяна на филтъра:",
+ "log-action-filter-abusefilter-create": "Създаване на нов филтър",
+ "log-action-filter-abusefilter-modify": "Промяна на филтъра",
+ "abusefilter-management": "Управление на филтъра срещу злоупотреби",
+ "abusefilter-list": "Всички филтри",
+ "abusefilter-list-id": "ID на филтър",
+ "abusefilter-list-status": "Статут",
+ "abusefilter-list-public": "Публично описание",
+ "abusefilter-list-consequences": "Последствия",
+ "abusefilter-list-visibility": "Видимост",
+ "abusefilter-list-hitcount": "Брой съвпадения",
+ "abusefilter-list-edit": "Редактиране",
+ "abusefilter-list-details": "Детайли",
+ "abusefilter-list-limit": "Брой филтри на страница:",
+ "abusefilter-list-lastmodified": "Последна промяна",
+ "abusefilter-list-group": "Група на филтъра",
+ "abusefilter-hidden": "Скрит",
+ "abusefilter-unhidden": "Видим",
+ "abusefilter-enabled": "Включен",
+ "abusefilter-deleted": "Изтрит",
+ "abusefilter-disabled": "Изключен",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|съвпадение|съвпадения}}",
+ "abusefilter-new": "Създаване на нов филтър",
+ "abusefilter-return": "Назад към управлението на филтъра",
+ "abusefilter-status-global": "На глобално ниво",
+ "abusefilter-list-options": "Настройки",
+ "abusefilter-list-options-deleted": "Изтрити филтри:",
+ "abusefilter-list-options-deleted-only": "Показване само на изтритите филтри",
+ "abusefilter-list-options-deleted-hide": "Скриване на изтритите филтри",
+ "abusefilter-list-options-deleted-show": "Включване на изтритите филтри",
+ "abusefilter-list-options-scope": "Показване на филтри:",
+ "abusefilter-list-options-scope-local": "Само локални правила",
+ "abusefilter-list-options-scope-global": "Само глобални правила",
+ "abusefilter-list-options-scope-all": "Локални и глобални правила",
+ "abusefilter-list-options-disabled": "Изключени филтри:",
+ "abusefilter-list-options-hidedisabled": "Скриване на изключените филтри",
+ "abusefilter-list-options-submit": "Обновяване",
+ "abusefilter-tools-text": "Тук има някои инструменти, които може да са полезни за създаване или поправяне на филтри срещу злоупотреби.",
+ "abusefilter-tools-expr": "Проверка на изрази",
+ "abusefilter-tools-submitexpr": "Проверка",
+ "abusefilter-tools-reautoconfirm": "Възстановяване на статута на автоматично одобрен потребител",
+ "abusefilter-tools-reautoconfirm-user": "Потребител:",
+ "abusefilter-tools-reautoconfirm-submit": "Възстановяване",
+ "abusefilter-reautoconfirm-none": "Този потребител няма изключен статут за автоматично потвърждение.",
+ "abusefilter-reautoconfirm-notallowed": "Нямате права да си възстановите статута на автоматично потвърден потребител.",
+ "abusefilter-reautoconfirm-done": "Статутът на автоматично потвърден потребител беше възстановен",
+ "abusefilter-status": "От {{PLURAL:$1|последното едно действие|последните $1 действия}}, $2 ($3%) {{PLURAL:$2|достигна|достигнаха}} условната граница от $4. $5 ($6%) от тях {{PLURAL:$5|съвпада|съвпадат}} с някой от текущо включените филтри.",
+ "abusefilter-edit": "Редактиране на филтъра за злоупотреби",
+ "abusefilter-edit-subtitle": "Редактиране на филтър $1",
+ "abusefilter-edit-subtitle-new": "Създаване на филтър",
+ "abusefilter-edit-oldwarning": "<strong>Редактирате остаряла версия на този филтър. Посочените статистики са за последната версия на филтъра. Ако съхраните промените си, ще отмените всички промени, направени след версията, която редактирате.</strong> &bull; [[Special:AbuseFilter/history/$2|Връщане към историята на филтъра]]",
+ "abusefilter-edit-status-label": "Статистики:",
+ "abusefilter-edit-status": "От {{PLURAL:$1|последното действие|последните $1 действия}}, този филтър съвпадна с $2 от тях ($3%).",
+ "abusefilter-edit-status-profile": "От {{PLURAL:$1|последното едно действие|последните $1 действия}}, този филтър съвпадна с $2 от тях ($3%).\nСредното му време за изпълнение е $4 ms и използва $5 от общия брой допустими условия.",
+ "abusefilter-edit-new": "Нов филтър",
+ "abusefilter-edit-save": "Съхраняване на филтъра",
+ "abusefilter-edit-id": "Идентификатор на филтър:",
+ "abusefilter-edit-switch-editor": "Смяна на редактора",
+ "abusefilter-edit-description": "Описание:\n:''(публично достъпно)''",
+ "abusefilter-edit-group": "Група на филтъра:",
+ "abusefilter-edit-flags": "Флагове:",
+ "abusefilter-edit-enabled": "Включване на този филтър",
+ "abusefilter-edit-deleted": "Отбелязване като изтрито",
+ "abusefilter-edit-hidden": "Скриване на детайлите за този филтър от публичен достъп",
+ "abusefilter-edit-global": "Глобален филтър",
+ "abusefilter-edit-rules": "Условия:",
+ "abusefilter-edit-notes": "Забележки:",
+ "abusefilter-edit-lastmod": "Последна промяна на филтъра:",
+ "abusefilter-edit-lastmod-text": "$1 от $2",
+ "abusefilter-edit-hitcount": "Съвпадения на филтъра:",
+ "abusefilter-edit-consequences": "Действия при съвпадение",
+ "abusefilter-edit-action-warn": "Извършване на следните действия след предупреждение на потребителя",
+ "abusefilter-edit-action-disallow": "Ограничаване на потребителя да извърши въпросното действие",
+ "abusefilter-edit-action-blockautopromote": "Отнемане на привилегията „Автоматично одобрен потребител“ (autoconfirmed)",
+ "abusefilter-edit-action-degroup": "Изключване на потребителя от всички привилегировани групи",
+ "abusefilter-edit-action-block": "Блокиране на потребителя и/или IP адреса",
+ "abusefilter-edit-action-throttle": "Изпълнение на действията само ако потребителят превиши определена честота на редакциите",
+ "abusefilter-edit-action-rangeblock": "Блокиране на съответния IP-диапазон, към който принадлежи потребителят",
+ "abusefilter-edit-action-tag": "Отбелязване на редакцията за понататъшно преглеждане",
+ "abusefilter-edit-throttle-count": "Брой позволени действия:",
+ "abusefilter-edit-throttle-period": "Период от време:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|секунда|секунди}}",
+ "abusefilter-edit-throttle-groups": "Ограничаване по групи:\n:„(по една на ред, комбинирани със запетаи)“",
+ "abusefilter-edit-warn-message": "Използвано системно съобщение за предупреждение:",
+ "abusefilter-edit-warn-other": "Друго съобщение",
+ "abusefilter-edit-warn-other-label": "Наименование на друго системно съобщение:\n:''(без представката MediaWiki)''",
+ "abusefilter-edit-warn-actions": "Действия:",
+ "abusefilter-edit-warn-preview": "Предварителен преглед на избраното съобщение",
+ "abusefilter-edit-warn-edit": "Създаване или редактиране на избраното съобщение",
+ "abusefilter-edit-tag-tag": "[[Special:Tags|Етикети]] за прилагане (по един на ред):",
+ "abusefilter-edit-denied": "Не може да видите детайлите на този филтър, тъй като са скрити от публичен достъп.",
+ "abusefilter-edit-main": "Параметри на филтъра",
+ "abusefilter-edit-done-subtitle": "Филтърът беше редактиран",
+ "abusefilter-edit-done": "[[Special:AbuseFilter/history/$1/diff/prev/$2|Вашите промени]] във [[Special:AbuseFilter/$1|филтър $3]] бяха съхранени успешно.",
+ "abusefilter-edit-badsyntax": "В зададения филтър има синтактична грешка. Резултатът от парсера е: <pre>$1</pre>",
+ "abusefilter-edit-restricted": "Не може да редактирате този филтър, понеже той съдържа едно или повече действия, ограничени по потребителска група.\nМоля, помолете потребител със съответните права за работа с такива действия да извърши промяната вместо вас.",
+ "abusefilter-edit-viewhistory": "Преглед на историята на този филтър",
+ "abusefilter-edit-history": "История:",
+ "abusefilter-edit-check": "Проверка на синтаксиса",
+ "abusefilter-edit-badfilter": "Избраният филтър не съществува",
+ "abusefilter-edit-revert": "Връщане (отмяна) на действията, направени от филтъра",
+ "abusefilter-edit-tools": "Инструменти:",
+ "abusefilter-edit-test-link": "Тестване на филтъра спрямо последните промени",
+ "abusefilter-edit-export": "Експортиране на този филтър към друго уики",
+ "abusefilter-edit-syntaxok": "Не са открити синтактични грешки.",
+ "abusefilter-edit-syntaxerr": "Открита синтактична грешка: $1",
+ "abusefilter-edit-bad-tags": "Един или повече от указаните етикети са невалидни.\nЕтикетите трябва да са кратки, да не съдържат специални символи и да не са запазени за друг софтуер. Изберете друго име за етикета",
+ "abusefilter-edit-notallowed": "Нямате права да създавате или редактирате филтъра срещу злоупотреби",
+ "abusefilter-edit-notallowed-global": "Нямате права да създавате или редактирате глобални филтри срещу злоупотреби",
+ "abusefilter-edit-notallowed-global-custom-msg": "Потребителските предупредителни съобщения не се поддържат за глобалните филтри",
+ "abusefilter-edit-builder-select": "Изберете опция и я добавете след курсора",
+ "abusefilter-edit-builder-group-op-arithmetic": "Аритметични оператори",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Събиране (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Изваждане (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Умножение (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Деление (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Пресмятане по модул (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Повдигане на степен (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Оператори за сравнение",
+ "abusefilter-edit-builder-op-comparison-equal": "Е равно на (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Не е равно на (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "По-малко от (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "По-голямо от (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "По-малко или равно на (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "По-голямо или равно на (>=)",
+ "abusefilter-edit-builder-group-op-bool": "Булеви оператори",
+ "abusefilter-edit-builder-op-bool-not": "Не (!)",
+ "abusefilter-edit-builder-op-bool-and": "И (&)",
+ "abusefilter-edit-builder-op-bool-or": "Или (|)",
+ "abusefilter-edit-builder-group-misc": "Разни",
+ "abusefilter-edit-builder-misc-in": "Съдържа се в низа (in)",
+ "abusefilter-edit-builder-misc-like": "Съвпада с шаблон (like)",
+ "abusefilter-edit-builder-misc-rlike": "Съвпада с регулярен израз (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "Съответства на регулярния израз, без значение от малки и главни букви (irlike)",
+ "abusefilter-edit-builder-misc-contains": "Левият низ съдържа десния низ (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "Низов литерал (\"\")",
+ "abusefilter-edit-builder-misc-tern": "Третичен оператор (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "Условен оператор (if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "Функции",
+ "abusefilter-edit-builder-funcs-length": "Дължина на низ (length)",
+ "abusefilter-edit-builder-funcs-lcase": "Замяна на всички главни букви с малки (lcase)",
+ "abusefilter-edit-builder-funcs-ucase": "Замяна на всички малки букви с главни (ucase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "Нормализация на знаци, които могат да бъдат сбъркани (ccnorm)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "Премахване на двойни знаци (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "Брой специални знаци/ общ брой знаци (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "Нормализация (norm)",
+ "abusefilter-edit-builder-funcs-count": "Брой пъти, в които низът X се среща в низа Y (count)",
+ "abusefilter-edit-builder-funcs-rcount": "Брой срещания на регулярния израз X в низа Y (rcount)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "Премахване на интервали (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "Премахване на специалните знаци (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "Проверка за IP-адрес в диапазона (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "Съдържа някой от следните низове (contains_any)",
+ "abusefilter-edit-builder-funcs-substr": "Подниз (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "Място на подниз в низ (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "Замяна на подниз с низ (str_replace)",
+ "abusefilter-edit-builder-funcs-rescape": "Изваждане на низ като литерал в регулярен израз (rescape)",
+ "abusefilter-edit-builder-funcs-set_var": "Инициализиране на променлива (set_var)",
+ "abusefilter-edit-builder-group-vars": "Променливи",
+ "abusefilter-edit-builder-vars-accountname": "Име на сметка (при създаването на сметката)",
+ "abusefilter-edit-builder-vars-timestamp": "Дата и час на редакцията",
+ "abusefilter-edit-builder-vars-action": "Действие",
+ "abusefilter-edit-builder-vars-addedlines": "Брой добавени редове в редакцията",
+ "abusefilter-edit-builder-vars-delta": "Промяна в обема при редакция",
+ "abusefilter-edit-builder-vars-diff": "Разликова препратка на промените, направени с редакцията",
+ "abusefilter-edit-builder-vars-newsize": "Нов размер на страницата",
+ "abusefilter-edit-builder-vars-oldsize": "Стар размер на страницата",
+ "abusefilter-edit-builder-vars-old-content-model": "Стар модел на съдържанието",
+ "abusefilter-edit-builder-vars-new-content-model": "Нов модел на съдържанието",
+ "abusefilter-edit-builder-vars-removedlines": "Брой премахнати редове в редакцията",
+ "abusefilter-edit-builder-vars-summary": "Редактиране на резюме/причина",
+ "abusefilter-edit-builder-vars-article-id": "Номер на страница",
+ "abusefilter-edit-builder-vars-article-ns": "Именно пространство на страницата",
+ "abusefilter-edit-builder-vars-article-text": "Заглавие на страницата (без именно пространство)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Пълно заглавие на страницата",
+ "abusefilter-edit-builder-vars-article-views": "Прегледи на страницата",
+ "abusefilter-edit-builder-vars-movedfrom-id": "Идентификатор на изходната за преместването страница",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "Именно пространство на изходната за преместването страница",
+ "abusefilter-edit-builder-vars-movedfrom-text": "Заглавие на изходната за преместването страница",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "Пълно заглавие на изходната за преместването страница",
+ "abusefilter-edit-builder-vars-movedto-id": "Идентификатор на целевата за преместването страница",
+ "abusefilter-edit-builder-vars-movedto-ns": "Именно пространство на целевата за преместването страница",
+ "abusefilter-edit-builder-vars-movedto-text": "Заглавие на целевата за преместването страница",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "Пълно заглавие на целевата за преместването страница",
+ "abusefilter-edit-builder-vars-user-editcount": "Брой редакции на потребителя",
+ "abusefilter-edit-builder-vars-user-age": "Възраст на потребителската сметка",
+ "abusefilter-edit-builder-vars-user-name": "Име на потребителската сметка",
+ "abusefilter-edit-builder-vars-user-groups": "Потребителски групи (включително имплицитни), към които принадлежи потребителят",
+ "abusefilter-edit-builder-vars-user-rights": "Права, които има потребителят",
+ "abusefilter-edit-builder-vars-user-blocked": "Дали потребителят е блокиран",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "Дата и час на потвърждаване на електронната поща",
+ "abusefilter-edit-builder-vars-recent-contributors": "Последните десет потребители, допринесли към страницата",
+ "abusefilter-edit-builder-vars-first-contributor": "Първият потребител с принос в страницата",
+ "abusefilter-edit-builder-vars-all-links": "Всички външни препратки в новия текст",
+ "abusefilter-edit-builder-vars-added-links": "Всички външни препратки, добавени при редакцията",
+ "abusefilter-edit-builder-vars-removed-links": "Всички външни препратки, премахнати при редакцията",
+ "abusefilter-edit-builder-vars-old-text": "Стар уикитекст преди редакцията",
+ "abusefilter-edit-builder-vars-new-text": "Нов уикитекст след редакцията",
+ "abusefilter-edit-builder-vars-new-pst": "Нов уикитекст на страницата, преобразуван преди съхранение",
+ "abusefilter-edit-builder-vars-diff-pst": "Унифицирани разлики на промените, причинени от редакция, преобразувани преди съхранение",
+ "abusefilter-edit-builder-vars-addedlines-pst": "Редове, добавени при редактиране, преобразувани преди съхранение",
+ "abusefilter-edit-builder-vars-new-text-stripped": "Нов текст на страницата, без форматиране",
+ "abusefilter-edit-builder-vars-new-html": "Разпознат HTML код на новата редакция",
+ "abusefilter-edit-builder-vars-restrictions-edit": "Ниво на защита срещу редактиране на страницата",
+ "abusefilter-edit-builder-vars-restrictions-move": "Ниво на защита срещу местене на страницата",
+ "abusefilter-edit-builder-vars-restrictions-create": "Създаване на защита за страницата",
+ "abusefilter-edit-builder-vars-old-text-stripped": "Стар текст на страницата, без форматиране",
+ "abusefilter-edit-builder-vars-old-links": "Препратки в страницата преди редакцията",
+ "abusefilter-edit-builder-vars-old-html": "Стар уикитекст, разпознат като HTML код",
+ "abusefilter-edit-builder-vars-minor-edit": "Отбелязана ли е редакцията като малка промяна или не",
+ "abusefilter-edit-builder-vars-file-sha1": "SHA1 хеш стойност на съдържанието на файла",
+ "abusefilter-edit-builder-vars-file-size": "Размер на файла в байтове",
+ "abusefilter-edit-builder-vars-file-mime": "MIME тип на файла",
+ "abusefilter-edit-builder-vars-file-mediatype": "Медиен тип на файла",
+ "abusefilter-edit-builder-vars-file-width": "Ширина на файла в пиксели",
+ "abusefilter-edit-builder-vars-file-height": "Височина на файла в пиксели",
+ "abusefilter-filter-log": "Последни промени на филтъра",
+ "abusefilter-history": "История на промените на защитен филтър #$1",
+ "abusefilter-history-foruser": "Промени от $1",
+ "abusefilter-history-hidden": "скрит",
+ "abusefilter-history-enabled": "включен",
+ "abusefilter-history-global": "Общ",
+ "abusefilter-history-timestamp": "Време",
+ "abusefilter-history-user": "Потребител",
+ "abusefilter-history-public": "Описание на публичен филтър",
+ "abusefilter-history-flags": "Флагове",
+ "abusefilter-history-filter": "Правило на филтъра",
+ "abusefilter-history-comments": "Коментари",
+ "abusefilter-history-actions": "Действия",
+ "abusefilter-history-backedit": "Връщане към редактора на филтри",
+ "abusefilter-history-deleted": "Изтрит",
+ "abusefilter-history-filterid": "Филтър",
+ "abusefilter-history-select-legend": "Подробно търсене",
+ "abusefilter-history-select-user": "Потребител:",
+ "abusefilter-history-select-submit": "Прецизиране",
+ "abusefilter-history-diff": "Промени",
+ "abusefilter-history-error-hidden": "Търсеният филтър е скрит и не можете да преглеждате историята му.",
+ "abusefilter-exception-unexpectedatend": "Неочаквано „$2“ при знака $1.",
+ "abusefilter-exception-expectednotfound": "Очакваното $2 при знак $1 не беше открито (вместо това открито $3 $4).",
+ "abusefilter-exception-unrecognisedkeyword": "Неразпозната ключова дума $2, започваща от знака $1.",
+ "abusefilter-exception-unexpectedtoken": "Неочакван идентификатор „$3“ (от тип $2) при знак $1.",
+ "abusefilter-exception-unclosedstring": "Незатворен низ, започващ от знака $1.",
+ "abusefilter-exception-invalidoperator": "Невалиден оператор „$2“ при знака $1.",
+ "abusefilter-exception-unrecognisedtoken": "Неразпознат идентификатор \"$2\" при знак $1.",
+ "abusefilter-exception-noparams": "Липсват параметри за функцията „$2“ при знака $1.",
+ "abusefilter-exception-dividebyzero": "Непозволен опит $2 да се раздели на нула при знак $1.",
+ "abusefilter-exception-unrecognisedvar": "Неразпозната променлива $2 при знака $1",
+ "abusefilter-exception-notenoughargs": "Недостатъчно аргументи за изпълнението на функция $2, извикана на знак $1.\n{{PLURAL:$3|Очакван е|Очаквани са}} $3 {{PLURAL:$3|аргумент|аргумента}}, {{PLURAL:$4|получен е|получени са}} $4",
+ "abusefilter-exception-regexfailure": "Грешка в регулярния израз „$3“ при знак $1: „$2“",
+ "abusefilter-exception-overridebuiltin": "Непозволено предефиниране на вградената променлива „$2“ при знак $1.",
+ "abusefilter-exception-outofbounds": "Опит да се извика несъществуващ елемент $2 от списък (с размер = $3) при знак $1.",
+ "abusefilter-exception-notlist": "Неуспешен опит за извикане на елемент от масив при знак $1.",
+ "abusefilter-action-tag": "Етикет",
+ "abusefilter-action-throttle": "Ограничение",
+ "abusefilter-action-warn": "Предупреждение",
+ "abusefilter-action-block": "Блокиране",
+ "abusefilter-action-degroup": "Премахване от групите",
+ "abusefilter-action-rangeblock": "Блокиране по IP диапазон",
+ "abusefilter-action-disallow": "Забраняване",
+ "abusefilter-revert-title": "Връщане на всички промени, направени по филтър $1",
+ "abusefilter-revert-intro": "Този формуляр ви позволява да възвърнете всички промени, направени от филтъра срещу злоупотреби, поради филтър $1.\nМоля, бъдете внимателни, когато използвате този инструмент.",
+ "abusefilter-revert-preview-item": "$1: $2 {{GENDER:$7|извърши}} $3 в $4.\nДействия за възстановяване: $5 ($6)",
+ "abusefilter-revert-search-legend": "Изберете действията на филтъра срещу злоупотреби, които искате да отмените",
+ "abusefilter-revert-periodstart": "Начало на периода:",
+ "abusefilter-revert-periodend": "Край на периода:",
+ "abusefilter-revert-search": "Избор на действия",
+ "abusefilter-revert-filter": "ID на филтъра:",
+ "abusefilter-revert-preview-intro": "По-долу е даден списък от действията, предприети от филтъра срещу злоупотреби, които ще бъдат върнати с това действие.\nМоля, внимателно ги проверете, и щракнете „{{int:abusefilter-revert-confirm}}“, за да потвърдите избора си.",
+ "abusefilter-revert-confirm": "Потвърждаване",
+ "abusefilter-revert-success": "Вие върнахте всички действия, предприети от филтъра срещу злоупотреби, поради [[Special:AbuseFilter/$1|филтър $2]].",
+ "abusefilter-revert-reason": "Автоматична отмяна на всички действия, извършени от филтъра срещу злоупотребите, по причина филтър $1.\nПосочена причина: $2",
+ "abusefilter-revert-reasonfield": "Причина:",
+ "abusefilter-test": "Тестване на филтъра спрямо предишни редакции",
+ "abusefilter-test-intro": "Тази страница позволява да се провери филтър, въведен в долната кутия спрямо {{PLURAL:$1|последната|последните}} $1 {{PLURAL:$1|промяна|промени}}.\nЗа да заредите съществуващ филтър, въведете идентификатора му в кутията под текстовата кутия за редактиране и щракнете на бутона „Зареждане“.",
+ "abusefilter-test-legend": "Изпробване на филтъра",
+ "abusefilter-test-load-filter": "Зареждане на филтър с ID:",
+ "abusefilter-test-submit": "Изпробване",
+ "abusefilter-test-load": "Зареждане",
+ "abusefilter-test-user": "Промени от потребител:",
+ "abusefilter-test-period-start": "Промени, направени след това:",
+ "abusefilter-test-period-end": "Промени, направени преди това:",
+ "abusefilter-test-page": "Промени по страницата:",
+ "abusefilter-test-shownegative": "Показване на промените, които не съвпадат с филтъра",
+ "abusefilter-test-syntaxerr": "Въведеният филтър съдържа синтактична грешка.\nПълно обяснение за грешката е достъпно при щракване на бутона „{{int:abusefilter-edit-check}}“.",
+ "abusefilter-test-badtitle": "Заглавието на страницата, което сте въвели, е невалидно. То може би съдържа един или повече знаци, които не могат да се използват в заглавия.",
+ "abusefilter-changeslist-examine": "изследване",
+ "abusefilter-examine": "Проверка на отделните промени",
+ "abusefilter-examine-intro": "Тази страница дава възможност да се изследват променливите, генерирани от Филтъра срещу злоупотреби за дадена отделна редакция, и тя да бъде тествана по отношение на филтрите.",
+ "abusefilter-examine-legend": "Избор на промени",
+ "abusefilter-examine-diff": "URL на разликовата препратка:",
+ "abusefilter-examine-user": "Потребител:",
+ "abusefilter-examine-title": "Заглавие на страницата:",
+ "abusefilter-examine-submit": "Търсене",
+ "abusefilter-examine-vars": "Променливи, генерирани за тази редакция",
+ "abusefilter-examine-test": "Проверяване на редакцията спрямо филтър",
+ "abusefilter-examine-test-button": "Изпробване на филтъра",
+ "abusefilter-examine-match": "Филтърът сигнализира за съответствие при тази редакция.",
+ "abusefilter-examine-nomatch": "Филтърът не съответства на тази промяна.",
+ "abusefilter-examine-syntaxerror": "Синтаксисът на филтъра е невалиден",
+ "abusefilter-examine-notfound": "Поисканата промяна не може да бъде намерена.",
+ "abusefilter-examine-incompatible": "Промяната, която заявихте, не се поддържа от Филтъра срещу злоупотреби",
+ "abusefilter-examine-noresults": "Не бяха намерени резултати за предоставените параметри за търсенето.",
+ "abusefilter-topnav": "Навигация на филтъра",
+ "abusefilter-topnav-home": "Начало",
+ "abusefilter-topnav-test": "Групово изпробване",
+ "abusefilter-topnav-examine": "Проверка на минали редакции",
+ "abusefilter-topnav-log": "Дневник на злоупотребите",
+ "abusefilter-topnav-tools": "Инструменти за проследяване на грешки",
+ "abusefilter-topnav-import": "Внасяне на филтър",
+ "abusefilter-log-name": "Дневник на филтъра срещу злоупотреби",
+ "abusefilter-log-header": "Този дневник показва резюме на промените, направени във филтрите. За всички подробности, вижте [[Special:AbuseFilter/history|списъка]] с последните промени по филтрите.",
+ "abusefilter-logentry-create": "$1 {{GENDER:$2|създаде}} $4 ($5)",
+ "abusefilter-logentry-modify": "$1 {{GENDER:$2|промени}} $4 ($5)",
+ "abusefilter-log-noresults": "Няма резултати",
+ "abusefilter-diff-title": "Разлики между версиите",
+ "abusefilter-diff-item": "Елемент",
+ "abusefilter-diff-version": "Версия от $1 {{GENDER:$3|на}} $2",
+ "abusefilter-diff-info": "Основна информация",
+ "abusefilter-diff-pattern": "Условия на филтъра",
+ "abusefilter-diff-invalid": "Не е възможно извличане на исканите версии",
+ "abusefilter-diff-backhistory": "Връщане към историята на филтъра",
+ "abusefilter-diff-prev": "По-стара промяна",
+ "abusefilter-diff-next": "По-нова промяна",
+ "abusefilter-import-intro": "Можете да използвате този интерфейс, за да импортирате филтри от други уикита.\nВ уикито-източник щракнете връзката \"{{int:abusefilter-edit-export}}\" под заглавието \"{{int:abusefilter-edit-tools}}\" в интерфейса за редактиране.\nКопирайте съдържанието от текстовата кутия, която ще се появи, и го поставете в тази текстова кутия. След това щракнете на \"{{int:abusefilter-import-submit}}\".",
+ "abusefilter-import-submit": "Внасяне на данни",
+ "abusefilter-group-default": "По подразбиране",
+ "abusefilter-http-error": "Възникна HTTP грешка: $1",
+ "apihelp-abusefiltercheckmatch-param-filter": "Пълния текст на филтър за проверка за съвпадение.",
+ "apihelp-abusefilterchecksyntax-description": "Проверка на синтаксиса на филтър срещу злоупотреби.",
+ "apihelp-abusefilterchecksyntax-example-1": "Проверка на синтаксиса на валиден филтър",
+ "apihelp-abusefilterchecksyntax-example-2": "Проверка на синтаксиса на невалиден филтър",
+ "apihelp-abusefilterevalexpression-description": "Изчисляване на израз от филтър срещу злоупотреби",
+ "apihelp-abusefilterevalexpression-param-expression": "Израз за изчисляване.",
+ "apihelp-abusefilterevalexpression-example-1": "Изчисляване на прост израз",
+ "apihelp-abusefilterunblockautopromote-param-user": "Име на потребителя, който искате да отблокирате.",
+ "apihelp-query+abusefilters-description": "Показване на детайлите на филтрите срещу злоупотреби",
+ "apihelp-query+abusefilters-param-startid": "Идентификатор на филтъра, от който да започне изчислението.",
+ "apihelp-query+abusefilters-param-endid": "Идентификатор на филтъра, при който да завърши изчислението.",
+ "apihelp-query+abusefilters-param-show": "Показване само на филтри, които отговарят на тези критерии.",
+ "apihelp-query+abusefilters-param-limit": "Максимален брой филтри в списъка.",
+ "apihelp-query+abusefilters-param-prop": "Какви свойства трябва да се получат.",
+ "apihelp-query+abusefilters-example-1": "Списък на активираните публични филтри",
+ "apihelp-query+abusefilters-example-2": "Показване на допълнителна информация за филтри",
+ "apihelp-query+abuselog-description": "Покажи събития, които отговарят на един от филтрите срещу злоупотреби.",
+ "apihelp-query+abuselog-param-start": "Времева отметка, от която да започва изчислението.",
+ "apihelp-query+abuselog-param-end": "Времева отметка, при която да спира изчислението.",
+ "apihelp-query+abuselog-param-user": "Показване само на записи, свързани с даден потребител или IP адрес.",
+ "apihelp-query+abuselog-param-title": "Показване само на записи, свързани с определена страница.",
+ "apihelp-query+abuselog-param-filter": "Покажи само записи, които отговарят на даден ID на филтър.",
+ "apihelp-query+abuselog-param-limit": "Максимален брой записи в списъка.",
+ "apihelp-query+abuselog-param-prop": "Какви свойства трябва да се получат.",
+ "apihelp-query+abuselog-example-1": "Покажи последните записи в дневника",
+ "apihelp-query+abuselog-example-2": "Покажи последните записи в дневника на [[API]]",
+ "apierror-abusefilter-canttest": "Нямате права за тестване на филтрите срещу злоупотреби.",
+ "apierror-abusefilter-cantcheck": "Нямате права за проверка на синтаксиса на филтрите срещу злоупотреби.",
+ "apierror-abusefilter-nosuchlogid": "В дневника за злоупотреби не съществува запис с ID $1.",
+ "apierror-abusefilter-badsyntax": "Синтаксисът на филтъра е невалиден"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/bgn.json b/www/wiki/extensions/AbuseFilter/i18n/bgn.json
new file mode 100644
index 00000000..4a6cfb00
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/bgn.json
@@ -0,0 +1,67 @@
+{
+ "@metadata": {
+ "authors": [
+ "Baloch Afghanistan"
+ ]
+ },
+ "abusefilter-log-search-user": "کار زوروک:",
+ "abusefilter-log-search-title": "ئنوان:",
+ "abusefilter-log-search-wiki": "ویکی:",
+ "abusefilter-log-search-submit": "گشتین",
+ "abusefilter-log-diff": "فرق",
+ "abusefilter-log-details-val": "اندازه گ",
+ "abusefilter-log-noactions": "(هیچ‌)",
+ "abusefilter-log-hidden": "(چیهرین مورد)",
+ "abusefilter-log-hide-reason": "دلیل:",
+ "abusefilter-logentry-suppress": "«[[$1]]» ئا چیهر دات",
+ "abusefilter-logentry-unsuppress": "«[[$1]]» ئا درا کورت",
+ "abusefilter-list": "موچین فیلتران",
+ "abusefilter-list-id": "فیلتر ئی آی دی",
+ "abusefilter-list-edit": "ایڈیٹ",
+ "abusefilter-list-limit": "اندازه گ بئ تاکدیمئ تا:",
+ "abusefilter-list-lastmodified": "آخیرئین ایڈیٹ",
+ "abusefilter-deleted": "پاک بوته",
+ "abusefilter-status-global": "سراسری",
+ "abusefilter-list-options": "تنظیمات",
+ "abusefilter-list-options-scope-local": "فقط محلی ئین ویکی",
+ "abusefilter-list-options-submit": "اپڈیٹ",
+ "abusefilter-tools-submitexpr": "ارزیابی",
+ "abusefilter-tools-reautoconfirm-user": "کار زوروک:",
+ "abusefilter-edit-flags": "بیرک هان:",
+ "abusefilter-edit-history": "تاریخچه:",
+ "abusefilter-edit-tools": "وسایللان:",
+ "abusefilter-edit-builder-op-arithmetic-addition": "اڈ کورتین (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "کم کورتین (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "ضرب (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "تقسیم (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "باقی‌مانده (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "توان (**)",
+ "abusefilter-edit-builder-op-comparison-equal": "برابر اینت گۆ\t (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "برابرنه اینت گۆ\t (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "کمتیر شه (>)",
+ "abusefilter-edit-builder-op-comparison-gt": "گیشتیر شه (<)",
+ "abusefilter-edit-builder-op-comparison-lte": "گونڈتیر یا مساوی (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "ٹووتیر یا مساوی (<=)",
+ "abusefilter-edit-builder-op-bool-not": "نه (!)",
+ "abusefilter-edit-builder-op-bool-and": "و (&)",
+ "abusefilter-edit-builder-op-bool-or": "یا (|)",
+ "abusefilter-edit-builder-misc-stringlit": "متنی ئین رشته (\"\")",
+ "abusefilter-edit-builder-vars-article-id": "تاکدیمی آی ڈی",
+ "abusefilter-edit-builder-vars-article-views": "تاکدیمئ دیسته بوتین",
+ "abusefilter-history-hidden": "چیهر داتین",
+ "abusefilter-history-global": "سراسری",
+ "abusefilter-history-timestamp": "وخت",
+ "abusefilter-history-user": "کار زوروک",
+ "abusefilter-history-flags": "بیرک هان",
+ "abusefilter-history-comments": "کومنیتان",
+ "abusefilter-history-deleted": "پاک بوته",
+ "abusefilter-history-filterid": "فیلتر",
+ "abusefilter-history-select-user": "کار زوروک:",
+ "abusefilter-revert-reasonfield": "دلیل:",
+ "abusefilter-test-submit": "آزمایش",
+ "abusefilter-examine-user": "کار زوروک:",
+ "abusefilter-examine-title": "تاکدیمئ ئنوان",
+ "abusefilter-examine-submit": "گشتین",
+ "abusefilter-topnav-home": "گیس",
+ "abusefilter-diff-item": "مورد"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/bho.json b/www/wiki/extensions/AbuseFilter/i18n/bho.json
new file mode 100644
index 00000000..7708cabc
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/bho.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Nepaboy"
+ ]
+ },
+ "abusefilter-edit-builder-vars-user-rights": "अधिकार जौन प्रयोगकर्ता के पास बा"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/bn.json b/www/wiki/extensions/AbuseFilter/i18n/bn.json
new file mode 100644
index 00000000..2b464f75
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/bn.json
@@ -0,0 +1,249 @@
+{
+ "@metadata": {
+ "authors": [
+ "Aftab1995",
+ "Bellayet",
+ "Ehsanulhb",
+ "Leemon2010",
+ "Nasir8891",
+ "Samritmaity",
+ "Wikitanvir",
+ "Aftabuzzaman",
+ "আজিজ"
+ ]
+ },
+ "abusefilter-desc": "সম্পাদনায় স্বয়ংক্রিয় অনুসন্ধানমূলক পদ্ধতি প্রযোজ্য।",
+ "abusefilter": "অপব্যবহার ফিল্টার কনফিগারেশন",
+ "abuselog": "অপব্যবহার লগ",
+ "abusefilter-blocker": "অপব্যবহার ফিল্টার",
+ "abusefilter-accountreserved": "অপব্যবহার ফিল্টারের জন্য এই একাউন্ট নামটি সংরক্ষিত।",
+ "right-abusefilter-modify": "অপব্যবহার ছাঁকনি পরিবর্তন",
+ "right-abusefilter-view": "অপব্যবহার ফিল্টার দেখাও",
+ "right-abusefilter-log": "অপব্যবহার লগ দেখা",
+ "right-abusefilter-log-detail": "অপব্যবহার লগটি বিস্তারিতভাবে দেখাও",
+ "right-abusefilter-private": "অপব্যবহার লগে ব্যক্তিগত তথ্যাদি দেখাও",
+ "right-abusefilter-modify-restricted": "সীমাবদ্ধ অ্যাকশন সহকারে অপব্যবহার ফিল্টার পরিবর্তন",
+ "right-abusefilter-revert": "প্রদানকৃত অপব্যবহার ফিল্টারের সকল পরিবর্তন বাতিল",
+ "right-abusefilter-view-private": "ব্যক্তিগত হিসেবে চিহ্নিত অপব্যবহার ফিল্টার দেখাও",
+ "right-abusefilter-hide-log": "অপব্যবহার লগের সংযোজন লুকাও",
+ "right-abusefilter-hidden-log": "লুকায়িত অপব্যবহার লগের সংযোজনটি দেখাও",
+ "action-abusefilter-modify": "অপব্যবহার ছাঁকনি পরিবর্তন করার",
+ "action-abusefilter-view": "অপব্যবহার ছাঁকনি দেখার",
+ "action-abusefilter-log": "অপব্যবহার লগ দেখার",
+ "action-abusefilter-log-detail": "অপব্যবহার লগের সংযোজন বিস্তারিতভাবে দেখাও",
+ "action-abusefilter-private": "অপব্যবহার লগে ব্যক্তিগত তথ্যাদি দেখাও",
+ "action-abusefilter-modify-restricted": "সীমাবদ্ধ অ্যাকশন সহকারে অপব্যবহার ফিল্টার পরিবর্তন",
+ "action-abusefilter-revert": "প্রদানকৃত অপব্যবহার ফিল্টারের সকল পরিবর্তন বাতিল",
+ "action-abusefilter-view-private": "ব্যক্তিগত হিসেবে চিহ্নিত অপব্যবহার ফিল্টার দেখাও",
+ "abusefilter-log": "অপব্যবহার ফিল্টার লগ",
+ "abusefilter-log-search": "অপব্যবহার লগে অনুসন্ধান করুন",
+ "abusefilter-log-search-user": "ব্যবহারকারী:",
+ "abusefilter-log-search-filter": "ফিল্টার আইডি (পাইপ দিয়ে আলাদা):",
+ "abusefilter-log-search-title": "শিরোনাম:",
+ "abusefilter-log-search-wiki": "উইকি:",
+ "abusefilter-log-search-submit": "অনুসন্ধান",
+ "abusefilter-log-detailedentry-global": "বৈশ্বিক ফিল্টার $1",
+ "abusefilter-log-detailedentry-local": "ছাঁকনি নং $1",
+ "abusefilter-log-detailslink": "বিস্তারিত",
+ "abusefilter-log-diff": "পার্থক্য",
+ "abusefilter-log-hidelink": "প্রদর্শনযোগ্যতা ঠিক করুন",
+ "abusefilter-log-details-legend": "$1-এর বিস্তারিত লগ প্রদর্শন",
+ "abusefilter-log-details-var": "চলক",
+ "abusefilter-log-details-val": "মান",
+ "abusefilter-log-details-vars": "অ্যাকশন প্যারামিটার",
+ "abusefilter-log-details-private": "ব্যক্তিগত লগের বিস্তারিত",
+ "abusefilter-log-details-ip": "আইপি ঠিকানা সংরক্ষন করা হচ্ছে",
+ "abusefilter-log-details-checkuser": "ব্যবহারকারী পরীক্ষণ",
+ "abusefilter-log-noactions": "কিছু নয়",
+ "abusefilter-log-details-diff": "সম্পাদনার সময় পরিবর্তিত হয়েছে",
+ "abusefilter-log-linkoncontribs": "অপব্যবহার লগ",
+ "abusefilter-log-linkoncontribs-text": "{{GENDER:$1|এই ব্যবহারকারীর}} জন্য অপব্যবহার লগ",
+ "abusefilter-log-hidden": "(সংযোজন লুকায়িত)",
+ "abusefilter-log-details-hidden": "আপনি এই সংযোজনটি বিস্তারিত দেখতে পারবেন না, কারণ এটি জনসাধারণের প্রদর্শনের থেকে লুকানো রয়েছে।",
+ "abusefilter-log-hide-legend": "লগ সংযোজন লুকাও",
+ "abusefilter-log-hide-id": "লগ সংযোজনের আইডি:",
+ "abusefilter-log-hide-hidden": "এই সংযোজনটি জনসাধারণের কাছ থেকে লুকাও",
+ "abusefilter-log-hide-reason": "কারণ:",
+ "abusefilter-log-hide-forbidden": "আপনার অপব্যবহার লগ সংযোজন লুকানোর অধিকার নেই।",
+ "abusefilter-logentry-suppress": "\"[[$1]]\" লুকাও",
+ "abusefilter-logentry-unsuppress": "\"[[$1]]\" দেখাও",
+ "abusefilter-management": "অপব্যবহার ফিল্টার ব্যবস্থাপনা",
+ "abusefilter-list": "সকল ফিল্টার",
+ "abusefilter-list-id": "ফিল্টার আইডি",
+ "abusefilter-list-status": "অবস্থা",
+ "abusefilter-list-public": "জনসাধারণের জন্য বিবরণ",
+ "abusefilter-list-consequences": "ফলাফল",
+ "abusefilter-list-visibility": "প্রদর্শনযোগ্যতা",
+ "abusefilter-list-hitcount": "হিট সংখ্যা",
+ "abusefilter-list-edit": "সম্পাদনা",
+ "abusefilter-list-details": "বিস্তারিত",
+ "abusefilter-list-limit": "প্রতি পাতায় নম্বর:",
+ "abusefilter-list-lastmodified": "সর্বশেষ পরিবর্তন",
+ "abusefilter-list-group": "ফিল্টার গ্রুপ",
+ "abusefilter-hidden": "ব্যক্তিগত",
+ "abusefilter-unhidden": "পাবলিক",
+ "abusefilter-enabled": "সক্রিয়",
+ "abusefilter-deleted": "অপসারণ",
+ "abusefilter-disabled": "নিস্ক্রিয়",
+ "abusefilter-hitcount": "$1টি {{PLURAL:$1|হিট}}",
+ "abusefilter-new": "নতুন ফিল্টার তৈরি করুন",
+ "abusefilter-return": "ফিল্টার ব্যবস্থাপনায় ফিরে যান",
+ "abusefilter-status-global": "বৈশ্বিক",
+ "abusefilter-list-options": "অপশন",
+ "abusefilter-list-options-deleted": "অপসারিত ফিল্টার:",
+ "abusefilter-list-options-deleted-only": "শুধুমাত্র অপসারিত ফিল্টারগুলো দেখাও",
+ "abusefilter-list-options-deleted-hide": "অপসারিত ফিল্টারগুলো লুকাও",
+ "abusefilter-list-options-deleted-show": "অপসারিত ফিল্টারগুলো যোগ করো",
+ "abusefilter-list-options-scope-local": "স্থানীয় নিয়ম শুধুমাত্র",
+ "abusefilter-list-options-scope-global": "বৈশ্বিক নিয়ম শুধুমাত্র",
+ "abusefilter-list-options-scope-all": "স্থানীয় এবং বৈশ্বিক নিয়ম",
+ "abusefilter-list-options-disabled": "ফিল্টারগুলো নিষ্ক্রিয় করো",
+ "abusefilter-list-options-hidedisabled": "নিষ্ক্রিয় ফিল্টারগুলো লুকাও",
+ "abusefilter-list-options-searchoptions": "অনুসন্ধান মোড:",
+ "abusefilter-list-options-submit": "হালনাগাদ",
+ "abusefilter-tools-expr": "এক্সপ্রেশন পরীক্ষক",
+ "abusefilter-tools-reautoconfirm-user": "ব্যবহারকারী:",
+ "abusefilter-tools-reautoconfirm-submit": "পুনরায়-স্বয়ংক্রিয়ভাবে নিশ্চিত",
+ "abusefilter-edit": "অপব্যবহার ফিল্টার সম্পাদনা করছেন",
+ "abusefilter-edit-subtitle": "$1 ফিল্টার সম্পাদনা",
+ "abusefilter-edit-subtitle-new": "নতুন ফিল্টার তৈরি করুন",
+ "abusefilter-edit-status-label": "পরিসংখ্যান:",
+ "abusefilter-edit-new": "নতুন ফিল্টার",
+ "abusefilter-edit-save": "ফিল্টার সংরক্ষণ",
+ "abusefilter-edit-id": "ফিল্টার আইডি:",
+ "abusefilter-edit-switch-editor": "সম্পাদক পরিবর্তন করুন",
+ "abusefilter-edit-description": "বিবরণ:\n:''(জনসাধারণের জন্য উন্মুক্ত)''",
+ "abusefilter-edit-field-description": "বিবরণ",
+ "abusefilter-edit-group": "ফিল্টার গ্রুপ:",
+ "abusefilter-edit-flags": "পতাকাসমূহ:",
+ "abusefilter-edit-enabled": "এই ফিল্টারটি সক্রিয় করো",
+ "abusefilter-edit-deleted": "অপসারিত হিসেবে চিহ্নিত করো",
+ "abusefilter-edit-hidden": "জনসাধারণের প্রদর্শনক্ষমতা থেকে এই ফিল্টারটি লুকাও",
+ "abusefilter-edit-global": "বৈশ্বিক ফিল্টার",
+ "abusefilter-edit-rules": "শর্ত:",
+ "abusefilter-edit-notes": "টীকা:",
+ "abusefilter-edit-lastmod": "ফিল্টার সর্বশেষ পরিবর্তিত হয়েছিলো:",
+ "abusefilter-edit-lastmod-text": "$1-এর মাধ্যমে $2",
+ "abusefilter-edit-hitcount": "ফিল্টার হিট:",
+ "abusefilter-edit-consequences": "সাদৃশ্যতা পাওয়া গেলে অ্যাকশন নেওয়া হয়েছে",
+ "abusefilter-edit-throttle-period": "সময়:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|সেকেন্ড}}",
+ "abusefilter-edit-warn-other": "অন্য বার্তা",
+ "abusefilter-edit-warn-actions": "অ্যাকশনসমূহ:",
+ "abusefilter-edit-warn-preview": "নির্বাচিত বার্তার প্রাকদর্শন",
+ "abusefilter-edit-warn-edit": "নির্বাচিত বার্তা তৈরি/সম্পাদনা করুন",
+ "abusefilter-edit-main": "ফিল্টার প্যারামিটারসমূহ",
+ "abusefilter-edit-done-subtitle": "ফিল্টার সম্পাদিত",
+ "abusefilter-edit-viewhistory": "এই ফিল্টারের ইতিহাস দেখুন",
+ "abusefilter-edit-history": "ইতিহাস:",
+ "abusefilter-edit-tools": "সরঞ্জাম:",
+ "abusefilter-edit-builder-op-arithmetic-addition": "যোগ (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "বিয়োগ (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "গুন (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "ভাগ (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "মডুলো (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "ঘাত (**)",
+ "abusefilter-edit-builder-group-op-comparison": "তুলনামূলক অপারেটরসমূহ",
+ "abusefilter-edit-builder-op-comparison-equal": "মান এটির সমান (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "সমান নয় (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "থেকে কম (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "থেকে বেশি (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "থেকে কম বা সমান (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "থেকে বেশি অথবা সমান (>=)",
+ "abusefilter-edit-builder-group-op-bool": "বুলিয়ান অপারেটরসমূহ",
+ "abusefilter-edit-builder-op-bool-not": "না (!)",
+ "abusefilter-edit-builder-op-bool-and": "এবং (&)",
+ "abusefilter-edit-builder-op-bool-or": "অথবা (|)",
+ "abusefilter-edit-builder-group-misc": "বিবিধ",
+ "abusefilter-edit-builder-misc-in": "স্ট্রিংয়ের ভেতর রয়েছে (in)",
+ "abusefilter-edit-builder-misc-like": "সাদৃশ্যপূর্ণ কাঠামো (like)",
+ "abusefilter-edit-builder-misc-rlike": "সাদৃশ্যপূর্ণ রিজেক্স (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "সাদৃশ্যপূর্ণ রিজেক্স, কেস সেনসিটিভ (irlike)",
+ "abusefilter-edit-builder-group-funcs": "ফাংশন",
+ "abusefilter-edit-builder-funcs-length": "স্ট্রিংয়ের দৈর্ঘ্য (length)",
+ "abusefilter-edit-builder-funcs-ccnorm-contains-any": "একাধিক উপস্ট্রিংয়ের জন্য একটি স্ট্রিং স্বাভাবিক করুন ও অনুসন্ধান করুন (ccnorm_contains_any)",
+ "abusefilter-edit-builder-funcs-set_var": "চলক নির্ধারণ (set_var)",
+ "abusefilter-edit-builder-group-vars": "চলক",
+ "abusefilter-edit-builder-vars-accountname": "অ্যাকাউন্টের নাম (অ্যাকাউন্ট তৈরির সময়)",
+ "abusefilter-edit-builder-vars-timestamp": "পরিবর্তনের ইউনিক্স সময়বার্তা",
+ "abusefilter-edit-builder-vars-timestamp-expanded": "লগের সময় ও তারিখ",
+ "abusefilter-edit-builder-vars-action": "অ্যাকশন",
+ "abusefilter-edit-builder-vars-addedlines": "সম্পাদনায় লাইন যোগ করা হয়েছে",
+ "abusefilter-edit-builder-vars-delta": "সম্পাদনায় আকৃতি পরিবর্তন করা হয়েছে",
+ "abusefilter-edit-builder-vars-newsize": "নতুন পাতার আকৃতি",
+ "abusefilter-edit-builder-vars-oldsize": "পুরোনো পাতার আকৃতি",
+ "abusefilter-edit-builder-vars-old-content-model": "পুরনো বিষয়বস্তুর মডেল",
+ "abusefilter-edit-builder-vars-new-content-model": "নতুন বিষয়বস্তুর মডেল",
+ "abusefilter-edit-builder-vars-removedlines": "সম্পাদনায় লাইন অপসারণ করা হয়েছে",
+ "abusefilter-edit-builder-vars-summary": "সম্পাদনা সারাংশ/কারণ",
+ "abusefilter-edit-builder-vars-article-id": "পাতার আইডি",
+ "abusefilter-edit-builder-vars-article-ns": "পাতার নামস্থান",
+ "abusefilter-edit-builder-vars-article-text": "পাতার শিরোনাম (নামস্থান ছাড়া)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "পাতার পুরো শিরোনাম",
+ "abusefilter-edit-builder-vars-article-views": "পাতা দর্শন",
+ "abusefilter-edit-builder-vars-movedfrom-id": "সরিয়ে নেওয়া পাতার উৎস পাতার আইডি",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "সরিয়ে নেওয়া পাতার উৎস পাতার নামস্থান",
+ "abusefilter-edit-builder-vars-movedfrom-text": "সরিয়ে নেওয়া পাতার উৎস পাতার শিরোনাম",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "সরিয়ে নেওয়া পাতার উৎস পাতার পূর্ণ শিরোনাম",
+ "abusefilter-edit-builder-vars-user-editcount": "ব্যবহারকারীর সম্পাদনা সংখ্যা",
+ "abusefilter-edit-builder-vars-user-age": "ব্যবহারকারীর বয়স",
+ "abusefilter-edit-builder-vars-user-name": "ব্যবহারকারীর নাম",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "সময়ে ই-মেইল ঠিকানা নিশ্চিত করা হয়েছিলো",
+ "abusefilter-edit-builder-vars-recent-contributors": "এই পাতার সম্পাদনাকারী সর্বশেষ দশ ব্যবহারকারী",
+ "abusefilter-edit-builder-vars-all-links": "নতুন লেখায় থাকা সকল বহিঃসংযোগ",
+ "abusefilter-edit-builder-vars-added-links": "সম্পাদনায় যুক্ত করা সকল বহিঃসংযোগ",
+ "abusefilter-edit-builder-vars-removed-links": "সম্পাদনায় অপসারণ করা সকল বহিঃসংযোগ",
+ "abusefilter-edit-builder-vars-old-text": "সম্পাদনার পূর্বে, পুরোনো পাতার উইকিটেক্সট",
+ "abusefilter-edit-builder-vars-new-text": "সম্পাদনার পর, নতুন পাতার উইকিটেক্সট",
+ "abusefilter-edit-builder-vars-restrictions-edit": "পাতার সুরক্ষা পর্যায় সম্পাদনা",
+ "abusefilter-edit-block-options": "বাধাদানের বিকল্প:",
+ "abusefilter-filter-log": "সাম্প্রতিক ফিল্টার পরিবর্তন",
+ "abusefilter-history-foruser": "$1 কর্তৃক পরিবর্তন হয়েছে",
+ "abusefilter-history-hidden": "লুকায়িত",
+ "abusefilter-history-enabled": "সক্রিয় করা",
+ "abusefilter-history-global": "বৈশ্বিক",
+ "abusefilter-history-timestamp": "সময়",
+ "abusefilter-history-user": "ব্যবহারকারী",
+ "abusefilter-history-flags": "পতাকা",
+ "abusefilter-history-filter": "ফিল্টারের নিয়ম",
+ "abusefilter-history-comments": "মন্তব্য",
+ "abusefilter-history-actions": "কর্ম",
+ "abusefilter-history-backedit": "ফিল্টার সম্পাদনায় ফিরে যান",
+ "abusefilter-history-deleted": "অপসারিত",
+ "abusefilter-history-filterid": "ফিল্টার",
+ "abusefilter-history-select-user": "ব্যবহারকারী:",
+ "abusefilter-history-diff": "পরিবর্তনসমূহ",
+ "abusefilter-action-tag": "ট্যাগ",
+ "abusefilter-action-throttle": "থ্রটল",
+ "abusefilter-action-warn": "সতর্ক",
+ "abusefilter-action-block": "বাধা দান",
+ "abusefilter-action-degroup": "দল থেকে অপসারণ",
+ "abusefilter-action-rangeblock": "রেঞ্জ-ব্লক",
+ "abusefilter-action-disallow": "বর্জন",
+ "abusefilter-revert-title": "ফিল্টার $1-এর সকল সম্পাদনা বাতিল করো",
+ "abusefilter-revert-periodstart": "সময় শুরু:",
+ "abusefilter-revert-filter": "ফিল্টার:",
+ "abusefilter-revert-confirm": "নিশ্চিত করুন",
+ "abusefilter-revert-reasonfield": "কারণ:",
+ "abusefilter-test-submit": "পরীক্ষণ",
+ "abusefilter-test-load": "লোড",
+ "abusefilter-examine-legend": "পরিবর্তন নির্বাচন",
+ "abusefilter-examine-diff": "পরিবর্তনের ইউআরএল:",
+ "abusefilter-examine-user": "ব্যবহারকারী:",
+ "abusefilter-examine-title": "পাতার শিরোনাম:",
+ "abusefilter-examine-submit": "অনুসন্ধান",
+ "abusefilter-topnav-home": "প্রধান পাতা",
+ "abusefilter-topnav-log": "অপব্যবহার লগ",
+ "abusefilter-topnav-import": "ফিল্টার আমদানী",
+ "abusefilter-log-name": "অপব্যবহার ফিল্টার লগ",
+ "abusefilter-logentry-modify": "$1 $4 {{GENDER:$2|সম্পাদনা করেছেন}} ($5)",
+ "abusefilter-log-noresults": "ফলাফল নাই",
+ "abusefilter-diff-version": "$2 {{GENDER:$3|কর্তৃক}} $1 থেকে সংস্করণ",
+ "abusefilter-diff-info": "সাধারণ তথ্য",
+ "abusefilter-diff-pattern": "ফিল্টারের শর্তসমূহ",
+ "abusefilter-diff-backhistory": "ফিল্টার ইতিহাসে ফিরে যান",
+ "abusefilter-import-submit": "উপাত্ত আমদানী",
+ "abusefilter-group-default": "পূর্বনির্ধারিত",
+ "abusefilter-http-error": "একটি HTTP ত্রুটি ঘটেছে: $1।",
+ "abusefilter-log-ip-not-available": "উপলব্ধ নয়"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/bo.json b/www/wiki/extensions/AbuseFilter/i18n/bo.json
new file mode 100644
index 00000000..ff27c97a
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/bo.json
@@ -0,0 +1,43 @@
+{
+ "@metadata": {
+ "authors": [
+ "Freeyak",
+ "YeshiTuhden"
+ ]
+ },
+ "abusefilter-log-search-user": "བཀོལ་མི།",
+ "abusefilter-log-search-title": "ཁ་ཡིག",
+ "abusefilter-log-search-wiki": "ལྦེ་ཁེ་",
+ "abusefilter-log-noactions": "གང་ཡང་མིན།",
+ "abusefilter-log-details-diff": "བཟོ་བཅོས་བྱས་བ།",
+ "abusefilter-list-status": "གནས་ས་",
+ "abusefilter-list-edit": "བཟོ་བཅོས་",
+ "abusefilter-list-details": "ཞིབ་ཁྲ་",
+ "abusefilter-hidden": "སྒེར་གཉེར་",
+ "abusefilter-unhidden": "དམངས་ཀྱི་",
+ "abusefilter-list-options": "འདམ་ང་",
+ "abusefilter-list-options-scope-local": "ས་གནས་ཀྱི་ལྦེ་ཁེ་",
+ "abusefilter-list-options-scope-global": "འཛམ་གླིང་གི་སྒྲིག་ཁྲིམས་",
+ "abusefilter-edit-subtitle-new": "ཤིག་ཚགས་བཟོ་ཞིན་",
+ "abusefilter-edit-new": "ཤོག་ཚགས་གསར་པ་",
+ "abusefilter-edit-group": "ཤོགཚགས་ཚོགས་པ་",
+ "abusefilter-edit-warn-other": "བརྡ་ཕྲིན་གཞན་",
+ "abusefilter-edit-done-subtitle": "ཤོག་ཚགས་རྩོམ་སྒྲིག་ཚར་",
+ "abusefilter-edit-tools": "ལག་ཅ་",
+ "abusefilter-edit-builder-op-comparison-equal": "མཚུངས་",
+ "abusefilter-edit-builder-op-bool-and": "དང་་",
+ "abusefilter-edit-builder-vars-user-editcount": "སྤྱོད་མིའི་གྲངས་ཚད་རྩོམ་སྒྲིག་",
+ "abusefilter-edit-builder-vars-user-age": "སྤྱོད་མིའི་ལོ་གྲངས་",
+ "abusefilter-history-hidden": "སྦས་སྐུང་བྱས་ཚར་བ་",
+ "abusefilter-history-global": "འཛམ་གླིང་།",
+ "abusefilter-history-timestamp": "དུས་ཚོད།",
+ "abusefilter-history-user": "ཁོངས་མི།",
+ "abusefilter-history-flags": "དར་ཆ།",
+ "abusefilter-history-comments": "བསམ་ཚུལ།",
+ "abusefilter-history-deleted": "གསུབ་ཟིན།",
+ "abusefilter-history-filterid": "ཤོག་ཚགས་",
+ "abusefilter-action-warn": "ཉེན་བརྡ།",
+ "abusefilter-action-block": "བཀག་པ་",
+ "abusefilter-revert-confirm": "གཏན་འབེབས།",
+ "abusefilter-log-noresults": "འབྲས་བུ་མེད་པ་"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/br.json b/www/wiki/extensions/AbuseFilter/i18n/br.json
new file mode 100644
index 00000000..c58d23d9
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/br.json
@@ -0,0 +1,387 @@
+{
+ "@metadata": {
+ "authors": [
+ "Fohanno",
+ "Fulup",
+ "Gwendal",
+ "VIGNERON",
+ "Y-M D",
+ "Matma Rex"
+ ]
+ },
+ "abusefilter-desc": "Lakaat a ra hentennoù klask emgefre da dalvezout evit ar c'hemmoù",
+ "abusefilter": "Kefluniadur ar siloù a-enep ar gwallimplij",
+ "abuselog": "Marilh ar siloù a-enep ar gwallimplij",
+ "abusefilter-intro": "Degemer mat en etrefas merañ ar siloù drougimplij.\nUr gwikedre meziantel emgefre eo ar sil a-enep an drougimplij. Talvezout a ra da lakaat hentennoù klask emgefre raktermenet evit pep ober.\nDiskouez a ra an etrefas-mañ ur roll eus ar siloù termenet, hag aotren a ra degas kemmoù enno.",
+ "abusefilter-mustbeeditor": "Evit abegoù surentez, n'eus nemet an implijerien ganto ar gwir da cheñch ar siloù a-enep d'ar gwallimplij a c'hell implijout an etrefas-mañ.",
+ "abusefilter-warning": "'''Diwallit''': an ober-mañ a zo anavezet evit bezañ noazus.\nAr c'hemmoù diyaus a vo nullet raktal,\nstanket e vo ho kont pe ho chomlec'h IP ma skrivit bleupajoù lies pe dismegañsus.\nMa soñjit eo ar c'hemm yaus, galloud a rit kinnig anezhañ en-dro evit kadarnaat.\nUn diskrivadur berr eus ar reolenn drougimplij dinoet gantañ ho ober : $1",
+ "abusefilter-disallowed": "Anavezet eo an ober-mañ evit bezañ noazus,\nharzet eo bet dre-se.\nMa soñj deoc'h e oa reizh ho kemm, trugarez da vont e darempred gant ur merour, a lavarit ar pezh ho poa c'hoant d'ober.\nSetu un deskrivadur berr eus ar reolenn diskoachañ an drougimplij eo bet dinoet ganti hoc'h oberiadenn : $1",
+ "abusefilter-blocked-display": "An ober-mañ a zo anavezet evit bezañ noazus,\nharzet oc'h bet dija war ar poent-mañ.\nDa eil, evit gwareziñ {{SITENAME}}, ho kont implijer hag ho holl chomlec'hioù IP implijet ganeoc'h a zo bet stanket.\nMard eo ur fazi, trugarez da vont e darempred gant ur merour.\nUn diskrivadur berr eus ar reolenn drougimplij dinoet gantañ ho ober : $1",
+ "abusefilter-degrouped": "An ober-mañ a zo anavezet evit bezañ noazus.\nE-se, berzet eo bet, ha, dre ma 'z eo ho kont diskredet da vezañ gwallhentet, holl ho kwirioù a zo bet tennet.\nMa soñjoc'h eo ur fazi, trugarez da vont e darempred gant ur bureviad gant un displegadenndiwar-benn an ober hag adlakaet e vo ho kwirioùe plas.\nUn diskrivadur berr eus ar reolenn drougimplij dinoet gantañ ho ober : $1",
+ "abusefilter-autopromote-blocked": "An ober-mañ a zo anavezet evit bezañ noazus, ha berzet eo bet.\nDa eil, evit ar surentez, gwirioù-dreist roet boaz a zo bet tennet diwar ho kont.\nUn diskrivadur berr eus ar reolenn drougimplij dinoet gantañ ho ober : $1",
+ "abusefilter-blocker": "Sil a-enep ar gwallimplij",
+ "abusefilter-blockreason": "Stanket ez emgefre gant ar sil a-enep ar gwallimplij.\nDeskrivadur ar reolenn kevreet : $1",
+ "abusefilter-degroupreason": "Gwirioù bet tennet ez emgefre gant ar sil a-enep ar gwallimplij.\nDeskrivadur ar reolenn kevreet : $1",
+ "abusefilter-accountreserved": "Miret eo an anv kont-mañ evit un implij gant ar siloù a-enep ar gwallimplij.",
+ "right-abusefilter-modify": "Kemmañ ar siloù a-enep ar gwallimplij",
+ "right-abusefilter-view": "Gwelet ar siloù a-enep ar gwallimplij",
+ "right-abusefilter-log": "Gwelet marilh ar siloù a-enep ar gwallimplij",
+ "right-abusefilter-log-detail": "Gwelet ar c'hasadennoù dre ar munud evit marilh ar siloù a-enep ar gwallimplij",
+ "right-abusefilter-private": "Gwelet ar roadennoù prevez er marilh a-enep ar gwallimplij",
+ "right-abusefilter-modify-restricted": "Kemmañ ar siloù a-enep ar gwallimplij gant oberoù bevennet",
+ "right-abusefilter-revert": "Disteurel holl kemmoù graet gant ur sil drougimplij",
+ "right-abusefilter-view-private": "Gwelet ar siloù gwallimplij merket evel prevez",
+ "right-abusefilter-hide-log": "Kuzhat ar monedoù e-barzh deizlevr ar gwallimplijoù",
+ "right-abusefilter-hidden-log": "Gwelet ar c'hasadennoù kuzhet evit marilh ar siloù a-enep ar gwallimplij",
+ "action-abusefilter-modify": "Kemmañ ar siloù a-enep ar gwallimplij",
+ "action-abusefilter-view": "Gwelet ar siloù a-enep ar gwallimplij",
+ "action-abusefilter-log": "Gwelet marilh ar siloù a-enep ar gwallimplij",
+ "action-abusefilter-log-detail": "gwelet ar c'hasadennoù dre ar munud evit marilh ar siloù a-enep ar gwallimplij",
+ "action-abusefilter-private": "gwelet ar roadennoù prevez e marilh ar siloù a-enep ar gwallimplij",
+ "action-abusefilter-modify-restricted": "kemmañ ar siloù a-enep ar gwallimplij gant oberoù bevennet",
+ "action-abusefilter-revert": "disteurel holl kemmoù graet gant ur sil gwallimplij roet",
+ "action-abusefilter-view-private": "gwelet ar siloù enep ar gwallimplij merket evel prevez",
+ "abusefilter-log": "Marilh ar sil a-enep ar gwallimplij",
+ "abusefilter-log-summary": "Diskouez a ra ar marilh-mañ ur roll eus an oberezhioù dinoet gant ar siloù.",
+ "abusefilter-log-search": "Klask e marilh ar siloù a-enep ar gwallimplij",
+ "abusefilter-log-search-user": "Implijer :",
+ "abusefilter-log-search-filter": "Niv. ar sil :",
+ "abusefilter-log-search-title": "Titl :",
+ "abusefilter-log-search-wiki": "Wiki :",
+ "abusefilter-log-search-submit": "Klask",
+ "abusefilter-log-entry": "$1: $2 en deus lañset ur sil gwallimplij, e-kerzh an ober \"$3\" war $4.\nOberoù kemeret : $5;\nDiskrivadenn ar sil : $6",
+ "abusefilter-log-detailedentry-meta": "$1 : $2 en deus lañset ar $3, e-kerzh an ober \"$4\" war $5.\nOberoù kemeret : $6;\nDiskrivadenn ar sil : $7 ($8)",
+ "abusefilter-log-detailedentry-global": "sil hollek $1",
+ "abusefilter-log-detailedentry-local": "sil a-enep ar gwallimplijoù $1",
+ "abusefilter-log-detailslink": "munudoù",
+ "abusefilter-log-diff": "dif",
+ "abusefilter-log-hidelink": "spisaat ar gwelusted",
+ "abusefilter-log-details-legend": "Munudoù evit kasadenn $1 ar marilh",
+ "abusefilter-log-details-var": "Argemmenn",
+ "abusefilter-log-details-val": "Talvoudenn",
+ "abusefilter-log-details-vars": "Arventennoù an oberezh",
+ "abusefilter-log-details-private": "Titouroù prevez",
+ "abusefilter-log-details-ip": "Chomlec'h IP a orin",
+ "abusefilter-log-noactions": "netra",
+ "abusefilter-log-details-diff": "Kemmoù graet er c'hemm",
+ "abusefilter-log-linkoncontribs": "Marilh ar siloù a-enep ar gwallimplij",
+ "abusefilter-log-linkoncontribs-text": "Marilh ar siloù a-enep ar gwallimplij evit an implijer-mañ",
+ "abusefilter-log-hidden": "(moned kuzhet)",
+ "abusefilter-log-hidden-implicit": "(kuzhet abalamour m'eo bet diverket ar reizhadenn)",
+ "abusefilter-log-cannot-see-details": "N'hoc'h ket aotreet da welet ar munudoù evit an enmont-mañ.",
+ "abusefilter-log-details-hidden": "Ne c'helloc'h ket gwelet munudoù ar moned-mañ dre ma 'z eo kuzhet d'ar selloù publik.",
+ "abusefilter-log-hide-legend": "Kuzhat ar moned en deizlevrioù",
+ "abusefilter-log-hide-id": "Anv eus moned an deizlevr :",
+ "abusefilter-log-hide-hidden": "Kuzhat ar moned-mañ eus ar selloù publik",
+ "abusefilter-log-hide-reason": "Abeg :",
+ "abusefilter-log-hide-forbidden": "N'hoc'h eus ket ar gwir da guzhat enmontoù e deizlevr ar gwallimplij.",
+ "abusefilter-logentry-suppress": "kuzhet \"[[$1]]\"",
+ "abusefilter-logentry-unsuppress": "diguzhat \"[[$1]]\"",
+ "abusefilter-management": "Merañ ar sil a-enep ar gwallimplij",
+ "abusefilter-list": "An holl siloù",
+ "abusefilter-list-id": "Niv. ar sil",
+ "abusefilter-list-status": "Statud",
+ "abusefilter-list-public": "Deskrivadur foran",
+ "abusefilter-list-consequences": "Heuliadoù",
+ "abusefilter-list-visibility": "Gwelusted",
+ "abusefilter-list-hitcount": "Niver a dizhadennoù",
+ "abusefilter-list-edit": "Kemmañ",
+ "abusefilter-list-details": "Munudoù",
+ "abusefilter-list-limit": "Niver dre bajenn",
+ "abusefilter-list-lastmodified": "Kemmet da ziwezhañ",
+ "abusefilter-list-group": "Strollad siloù",
+ "abusefilter-hidden": "Prevez",
+ "abusefilter-unhidden": "Foran",
+ "abusefilter-enabled": "Gweredekaet",
+ "abusefilter-deleted": "Dilamet",
+ "abusefilter-disabled": "Diweredekaet",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|dizhadenn|tizhadenn}}",
+ "abusefilter-new": "Sevel ur sil nevez",
+ "abusefilter-return": "Distreiñ d'ar merañ siloù",
+ "abusefilter-status-global": "Hollek",
+ "abusefilter-list-options": "Dibarzhioù",
+ "abusefilter-list-options-deleted": "Siloù dilamet :",
+ "abusefilter-list-options-deleted-only": "Diskouez ar siloù dilamet hepken",
+ "abusefilter-list-options-deleted-hide": "Kuzhar ar siloù dilamet",
+ "abusefilter-list-options-deleted-show": "Enklozañ ar siloù dilamet",
+ "abusefilter-list-options-scope": "Diskouez ar siloù adalek :",
+ "abusefilter-list-options-scope-local": "Wiki lec'hel",
+ "abusefilter-list-options-scope-global": "Reolennoù hollek",
+ "abusefilter-list-options-disabled": "Siloù diweredekaet :",
+ "abusefilter-list-options-hidedisabled": "Kuzhat ar siloù diweredekaet",
+ "abusefilter-list-options-submit": "Hizivaat",
+ "abusefilter-tools-text": "Sed aze binviji hag a c'hell servij evit da geriañ ha da zidraenañ ar siloù gwallimplij.",
+ "abusefilter-tools-expr": "Amprouer an estaoladennoù",
+ "abusefilter-tools-submitexpr": "Priziañ",
+ "abusefilter-tools-reautoconfirm": "Adsevel ar stad emkadarnet",
+ "abusefilter-tools-reautoconfirm-user": "Implijer :",
+ "abusefilter-tools-reautoconfirm-submit": "Gwiriañ emgefre adarre",
+ "abusefilter-reautoconfirm-none": "Ar statud kadarnaet emgefre eus an {{GENDER:$1|implijer|implijerezh}}-mañ a zo bet astalaet.",
+ "abusefilter-reautoconfirm-notallowed": "N'oc'h ket aotreet{{GENDER:||}} da adlakaat ar stad kadarnaet emgefre.",
+ "abusefilter-reautoconfirm-done": "Statudoù emkadarnet eus ar c'hont a zo bet adsavet",
+ "abusefilter-status": "E-touesk an/ar $1 {{PLURAL:$1|ober|ober}}, $2 ($3%) {{PLURAL:$2|en deus|ho deus}} tizhet termen ar $4 amplegad, ha $5 ($6%) {{PLURAL:$5|a zo bet|a zo bet}} dinoet gant unan eus ar siloù gweredekaet.",
+ "abusefilter-edit": "Aozañ ar sil drougimplij",
+ "abusefilter-edit-subtitle": "Oc'h aozañ ar sil $1",
+ "abusefilter-edit-subtitle-new": "O krouiñ ur sil",
+ "abusefilter-edit-oldwarning": "<strong>O embann emaoc'h ur stumm kozh eus ar sil-mañ.\nAr stadegoù diskouezet a zo evit ar stumm diwezhañ eus ar sil.\nMa enrollit ho kemmoù, e flastrit holl ar c'hemmoù bet graet abaoe ar stumm emaoc'h o kemm.</strong> &bull;\n[[Special:AbuseFilter/history/$2|Distreiñ da istor ar sil-mañ]].",
+ "abusefilter-edit-status-label": "Stadegoù :",
+ "abusefilter-edit-status": "E-barzh an {{PLURAL:$1|ober diwezhañ|$1 ober diwezhañ}}, ar sil-mañ en deus dinoet $2 ($3%).",
+ "abusefilter-edit-status-profile": "E-barzh an {{PLURAL:$1|ober diwezhañ|$1 ober diwezhañ}}, ar sil-mañ en deus dinoet $2 ($3%).\nDre geidenn, an padelezh da lañsañ anezhañ a zo $4ms, hag implijout a ra $5 {{PLURAL:$5|amplegad|amplegad}} eus termen an amplegadoù.",
+ "abusefilter-edit-new": "Sil nevez",
+ "abusefilter-edit-save": "Enrollañ ar sil",
+ "abusefilter-edit-id": "Niv. ar sil :",
+ "abusefilter-edit-description": "Deskrivadur :\n: ''(a-wel d'an holl)''",
+ "abusefilter-edit-group": "Strollad siloù :",
+ "abusefilter-edit-flags": "Bannieloù :",
+ "abusefilter-edit-enabled": "Gweredekaat ar sil-mañ",
+ "abusefilter-edit-deleted": "Merkañ evel diverket",
+ "abusefilter-edit-hidden": "Kuzhat munudoù ar sil-mañ d'ar selloù publik",
+ "abusefilter-edit-global": "Sil hollek",
+ "abusefilter-edit-rules": "Divizoù :",
+ "abusefilter-edit-notes": "Notennoù :",
+ "abusefilter-edit-lastmod": "Kemm diwezhañ degaset d'ar sil :",
+ "abusefilter-edit-lastmod-text": "$1 dre $2",
+ "abusefilter-edit-hitcount": "Niver a gavadennoù ar sil :",
+ "abusefilter-edit-consequences": "Oberezhioù kroget e-pad an dinoadenn",
+ "abusefilter-edit-action-warn": "Deluskañ an oberoù-mañ goude bezañ bet roet ur gouzavadenn d'an implijer",
+ "abusefilter-edit-action-disallow": "Harzañ an implijer d'ober an ober-mañ",
+ "abusefilter-edit-action-blockautopromote": "Disteurel ar stad emkadarn eus ar c'hont implijer",
+ "abusefilter-edit-action-degroup": "Dilemel an implijer eus an holl strolladoù brientekaet",
+ "abusefilter-edit-action-block": "Stankañ an implijer-mañ hag/pe ar chomlec'h IP evit ar c'hemmañ",
+ "abusefilter-edit-action-throttle": "Deluskañ an oberoù nemet ma za an implijer dreist d'ur feur termen",
+ "abusefilter-edit-action-rangeblock": "Stankañ al lijorenn IP /16 orin evit an implijer.",
+ "abusefilter-edit-action-tag": "Balizenniñ ar c'hemm evit un adlenn a-c'houdevezh.",
+ "abusefilter-edit-throttle-count": "Niver a oberiadennoù aotreet :",
+ "abusefilter-edit-throttle-period": "Prantad amzer :",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|eilenn|eilenn}}",
+ "abusefilter-edit-throttle-groups": "Stollañ ar merañ dre :\n:''(unan dre linenn, ha dispartiet gant virgulennoù)''",
+ "abusefilter-edit-warn-message": "Kemenn reizhiad da implijout da gemenn-diwall :",
+ "abusefilter-edit-warn-other": "Kemennadenn all",
+ "abusefilter-edit-warn-other-label": "Anv pajenn ur gemenadenn all :\n''(hep ar rakger MediaWiki)''",
+ "abusefilter-edit-warn-actions": "Oberoù :",
+ "abusefilter-edit-warn-preview": "Rakwelet ar gemennadenn dibabet",
+ "abusefilter-edit-warn-edit": "Krouiñ/Kemmañ ar gemennadenn diuzet",
+ "abusefilter-edit-tag-tag": "Balizenn da arloañ (unan dre linenn) :",
+ "abusefilter-edit-denied": "Ne c'helloc'h ket gwelet munudoù ar sil-mañ dre ma 'z eo kuzhet d'ar selloù publik.",
+ "abusefilter-edit-main": "Arventennoù ar sil",
+ "abusefilter-edit-done-subtitle": "Sil aozet",
+ "abusefilter-edit-done": "Enrollet-mat eo bet [[Special:AbuseFilter/history/$1/diff/prev/$2|ho kemmoù]] d'ar [[Special:AbuseFilter/$1|sil $3]].",
+ "abusefilter-edit-badsyntax": "Ur fazi ereadurezh a zo e-barzh ar sil-mañ.\nDisoc'h ar parser a oa : <pre>$1</pre>",
+ "abusefilter-edit-restricted": "Ne c'helloc'h ket kemmañ ar sil-mañ, peogwir ez eus unan pe meur a oberoù bevennet.\nGoulennit mar plij digant un impljier aotreet da ouzhpennañ oberoù bevennet evit ober ar c'hemmoù evidoc'h.",
+ "abusefilter-edit-viewhistory": "Gwelet istor ar sil-mañ",
+ "abusefilter-edit-history": "Istor :",
+ "abusefilter-edit-check": "Gwiriañ an ereadur",
+ "abusefilter-edit-badfilter": "N'eus ket eus ar sil spisaet ganeoc'h",
+ "abusefilter-edit-revert": "Disteurel an oberoù graet gant ar sil-mañ",
+ "abusefilter-edit-tools": "Ostilhoù :",
+ "abusefilter-edit-test-link": "Amprouiñ ar sil-se war ar c'hemmoù diwezhañ",
+ "abusefilter-edit-export": "Ezporzhiañ ar sil-mañ d'ur wiki all",
+ "abusefilter-edit-syntaxok": "N'eus bet dinoet fazi ereadur ebet.",
+ "abusefilter-edit-syntaxerr": "Fazi ereadur dinoet : $1",
+ "abusefilter-edit-bad-tags": "Unan eus an tikedennoù bet spisaet ganeoc'h, pe meur a hini, a zo direizh.\nBerr e rank bezañ an tikedennoù, hag hep arouezenn dibar ebet.",
+ "abusefilter-edit-notallowed": "N'oc'h ket aotreet evit krouiñ pe kemmañ ar siloù a-enep ar gwallimplij",
+ "abusefilter-edit-notallowed-global": "N'oc'h ket aotreet evit krouiñ pe kemmañ ar siloù hollek a-enep ar gwallimplij",
+ "abusefilter-edit-builder-select": "Diuzit un dibarzh evit e ouzhpennañ e lec'h ar reti",
+ "abusefilter-edit-builder-group-op-arithmetic": "Oberiataerioù niveroniel",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Sammadenn (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Lamadenn (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Lieskementadenn (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Rannadenn (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Modulo (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Gallouter (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Oberataerien keñveriañ",
+ "abusefilter-edit-builder-op-comparison-equal": "Par da (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Disheñvel diouzh (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "Bihanoc'h eget (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Brasoc'h eget (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Nebeutoc'h pe kevatal da (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Brasoc'h pe kevatal da (>=)",
+ "abusefilter-edit-builder-group-op-bool": "Oberataerien boulean",
+ "abusefilter-edit-builder-op-bool-not": "Ket (!)",
+ "abusefilter-edit-builder-op-bool-and": "Ha (&)",
+ "abusefilter-edit-builder-op-bool-or": "Pe (|)",
+ "abusefilter-edit-builder-group-misc": "A bep seurt",
+ "abusefilter-edit-builder-misc-in": "endalc'het er chadenn arouezennoù (in)",
+ "abusefilter-edit-builder-misc-like": "Kenglot gant ar stumm (like)",
+ "abusefilter-edit-builder-misc-rlike": "Kenglot gant (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "Sil gant riñvennoù aregel, hep teurel kont ouzh an doare ma 'z eo bet skrivet al lizherennoù (irlike)",
+ "abusefilter-edit-builder-misc-contains": "Ar chadenn a-gleiz a endalc'h an hini dehoù (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "Chadenn lizherennoù (\"\")",
+ "abusefilter-edit-builder-misc-tern": "Oberataer hoalad (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "Amplegadek (if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "Arc'hwelioù",
+ "abusefilter-edit-builder-funcs-length": "Hirder an neudennad (length)",
+ "abusefilter-edit-builder-funcs-lcase": "amdreiñ e lizherennoù bihan (lcase)",
+ "abusefilter-edit-builder-funcs-ucase": "amdreiñ e lizherennoù bras (ucase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "Reolata an arouezennoù fourgasus (ccnorm)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "Lemel an arouezennoù doubl (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "Arouezenn ispisial / hollad an arouezennoù (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "Reolata (norm)",
+ "abusefilter-edit-builder-funcs-count": "Niver a blegenn eus an hedad nodoù X en hedad Y (count)",
+ "abusefilter-edit-builder-funcs-rcount": "Niver a riñvennoù X o tont war-wel en hedad Y (rcount)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "Dilemel an esaouennoù (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "Dilemel an arouezennoù arbennik (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "Hag el lijorenn emañ ar chomlec'h IP ? (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "Klask liesishedadoù en un hedad (contains_any)",
+ "abusefilter-edit-builder-funcs-substr": "Isneudennad (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "Lec'hiadur an ishedad en hedad (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "Erlec'hiañ an hedad ouzh an ishedad (str_replace)",
+ "abusefilter-edit-builder-funcs-set_var": "Termeniñ ar varienn (set_var)",
+ "abusefilter-edit-builder-group-vars": "Argemmennoù",
+ "abusefilter-edit-builder-vars-accountname": "Anv ar gont (da vare krouadur ar gont)",
+ "abusefilter-edit-builder-vars-timestamp": "Timestamp Unix eus ar c'hemm",
+ "abusefilter-edit-builder-vars-action": "Ober",
+ "abusefilter-edit-builder-vars-addedlines": "Linennoù ouzhpennet da-geñver an aozadenn",
+ "abusefilter-edit-builder-vars-delta": "Cheñchamant ment en aozadenn",
+ "abusefilter-edit-builder-vars-diff": "Diff unvanet eus ar c'hemmoù graet gant ar c'hemm",
+ "abusefilter-edit-builder-vars-newsize": "Ment nevez ar bajenn",
+ "abusefilter-edit-builder-vars-oldsize": "Ment kozh ar bajenn",
+ "abusefilter-edit-builder-vars-removedlines": "Linennoù dilamet en aozadenn",
+ "abusefilter-edit-builder-vars-summary": "Diverrañ/Abeg ar c'hemm",
+ "abusefilter-edit-builder-vars-article-id": "Niv. ar bajenn",
+ "abusefilter-edit-builder-vars-article-ns": "Esaouenn anv ar bajenn",
+ "abusefilter-edit-builder-vars-article-text": "Titl ar bajenn (hep an esaouenn anv)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Titl klok ar bajenn",
+ "abusefilter-edit-builder-vars-article-views": "Pajennoù gwelet",
+ "abusefilter-edit-builder-vars-movedfrom-id": "Anv ar bajenn orin da adenvel",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "Esaouenn anv ar bajenn orin da adenvel",
+ "abusefilter-edit-builder-vars-movedfrom-text": "Titl ar bajenn orin da adenvel",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "Titl klok ar bajenn orin da adenvel",
+ "abusefilter-edit-builder-vars-movedto-id": "Niverenn pajenn pal an adenveladenn",
+ "abusefilter-edit-builder-vars-movedto-ns": "Egorenn anv eus pajenn pal an adenveladenn",
+ "abusefilter-edit-builder-vars-movedto-text": "Titl pajenn pal an adenvel",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "Titl klok eus pajenn pal an adenvel",
+ "abusefilter-edit-builder-vars-user-editcount": "Konter kemmoù an implijer",
+ "abusefilter-edit-builder-vars-user-age": "Oad ar gont implijer",
+ "abusefilter-edit-builder-vars-user-name": "Anv kont an implijer",
+ "abusefilter-edit-builder-vars-user-groups": "Strolladoù (ar re empleg ivez) e-lec'h ma vez an implijer ezel",
+ "abusefilter-edit-builder-vars-user-rights": "Gwirioù un implijer",
+ "abusefilter-edit-builder-vars-user-blocked": "Ma'z eo stanket an implijer",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "Amzer abaoe kadarnadur ar c'homlec'h postel",
+ "abusefilter-edit-builder-vars-recent-contributors": "An dek implijer diwezhañ o deus labouret war ar bajenn-mañ",
+ "abusefilter-edit-builder-vars-all-links": "An holl liammoù diavaez en destenn nevez",
+ "abusefilter-edit-builder-vars-added-links": "An holl liammoù diavaez ouzhpennet er c'hemmoù",
+ "abusefilter-edit-builder-vars-removed-links": "Lamet eo bet an holl liammoù diavaez en aozadenn",
+ "abusefilter-edit-builder-vars-old-text": "Testenn kozh ar bajenn, a-raok ar c'hemm",
+ "abusefilter-edit-builder-vars-new-text": "Testenn nevez ar bajenn, goude ar c'hemm",
+ "abusefilter-edit-builder-vars-new-text-stripped": "Testenn nevez ar bajenn, hep tamm furmad ebet",
+ "abusefilter-edit-builder-vars-new-html": "Mammenn HTML parset eus ar stumm nevez",
+ "abusefilter-edit-builder-vars-restrictions-edit": "Live gwareziñ ar bajenn evit an aozañ",
+ "abusefilter-edit-builder-vars-restrictions-move": "Live gwareziñ ar bajenn evit adenvel anezhi",
+ "abusefilter-edit-builder-vars-restrictions-create": "Krouiñ gwarez ar bajenn",
+ "abusefilter-edit-builder-vars-restrictions-upload": "Kargañ gwarez ar restr",
+ "abusefilter-edit-builder-vars-old-text-stripped": "Testenn kozh ar bajenn, hep tamm furmad ebet",
+ "abusefilter-edit-builder-vars-old-links": "Liammoù er bajenn, a-raok an aozadenn",
+ "abusefilter-edit-builder-vars-old-html": "Wikitestenn eus ar bajenn kent, parset e HTML",
+ "abusefilter-edit-builder-vars-minor-edit": "Ma 'z eo ar c'hemm anavezet e-giz bihan pe get",
+ "abusefilter-edit-builder-vars-file-sha1": "hachañ SHA1 eus danvez ar restr",
+ "abusefilter-filter-log": "Kemmoù diwezhañ ar siloù",
+ "abusefilter-history": "Istor kemmoù ar sil a-enep ar gwallimplij niv. $1",
+ "abusefilter-history-foruser": "Kemmoù gant $1",
+ "abusefilter-history-hidden": "Kuzhet",
+ "abusefilter-history-enabled": "Gweredekaet",
+ "abusefilter-history-global": "Hollek",
+ "abusefilter-history-timestamp": "Deiziad",
+ "abusefilter-history-user": "Implijer",
+ "abusefilter-history-public": "Deskrivadur foran ar sil",
+ "abusefilter-history-flags": "Bannieloù",
+ "abusefilter-history-filter": "Reolenn ar sil",
+ "abusefilter-history-comments": "Evezhiadennoù",
+ "abusefilter-history-actions": "Oberoù",
+ "abusefilter-history-backedit": "Distreiñ d'ar bajenn kemmañ ar sil",
+ "abusefilter-history-deleted": "Diverket",
+ "abusefilter-history-filterid": "Sil",
+ "abusefilter-history-select-legend": "Spisaat ar c'hlask",
+ "abusefilter-history-select-user": "Implijer :",
+ "abusefilter-history-select-submit": "Spisaat",
+ "abusefilter-history-diff": "Kemmoù",
+ "abusefilter-history-error-hidden": "Ar sil ho peus goulennet a zo kuzhet, ha ne c'helloc'h ket gwelout e istor.",
+ "abusefilter-exception-unexpectedatend": "« $2 » dic'hortoz en arouezenn $1.",
+ "abusefilter-exception-expectednotfound": "Mankout a ra $2 hag a oa gortozet en arouezenn $1 ($3 $4 kavet e plas).",
+ "abusefilter-exception-unrecognisedkeyword": "Ger-alc'hwez $2 nann-anavezet d'an arouezenn $1.",
+ "abusefilter-exception-unexpectedtoken": "Elfenn dic'hortoz \"$3\" (doare $2) en arouezenn $1.",
+ "abusefilter-exception-unclosedstring": "Hedad nann serret o kregiñ en arouezenn $1",
+ "abusefilter-exception-invalidoperator": "Oberataer direizh \"$2\" en arouezenn $1",
+ "abusefilter-exception-unrecognisedtoken": "Elfenn dianavezet $2 en arouezenn $1.",
+ "abusefilter-exception-noparams": "Arventenn ebet evit an arc'hwel \"$2\" en arouezenn $1.",
+ "abusefilter-exception-dividebyzero": "Rannadenn andezvek eus $2 dre zero en arouezenn $1.",
+ "abusefilter-exception-unrecognisedvar": "Argemm dianavezet $2 en arouezenn $1",
+ "abusefilter-exception-notenoughargs": "Diwer a arventenn evit an arc'hwel $2 galvet en arouezenn $1.\n$3 {{PLURAL:$3|arguzenn|arguzenn}} zo gortozet, $4 zo",
+ "abusefilter-exception-regexfailure": "Fazi er riñvenn reizh \"$3\" en arouezenn $1 : \"$2\"",
+ "abusefilter-exception-overridebuiltin": "Flastradeg berzet eus an argemmenn hegerz dre ziouer \"$2\" en arouezenn $1.",
+ "abusefilter-exception-outofbounds": "Elefenn ha n'eus ket anezhañ $2 goulennet (ment al listenn = $3) en arouezenn $1.",
+ "abusefilter-exception-notlist": "Un elfenn a zo goulennet ha n'emañ ket e-barzh un daolenn en arouezenn $1.",
+ "abusefilter-action-tag": "Tikedenniñ",
+ "abusefilter-action-throttle": "Bevenniñ ar c'hemmoù",
+ "abusefilter-action-warn": "Kas ur c'hemenn diwall",
+ "abusefilter-action-blockautopromote": "Stankañ ar brudañ emgefre",
+ "abusefilter-action-block": "Stankañ",
+ "abusefilter-action-degroup": "Lemel diouzh ar strolladoù",
+ "abusefilter-action-rangeblock": "Stankañ al lijorenn",
+ "abusefilter-action-disallow": "Nac'hañ ar c'hemm",
+ "abusefilter-revert-title": "Dizorniañ holl kemmoù ar sil $1",
+ "abusefilter-revert-intro": "Ar furmskrid-mañ a ro deoc'h ar gwir da zizober holl kemmoù graet gant ar sil gwallimplij $1.\nDiwallit mat en ur implijout an ostilh-mañ.",
+ "abusefilter-revert-preview-item": "$1: $2 en deus graet $3 war $4.\nOberezhioù da adlakaat : $5 ($6)",
+ "abusefilter-revert-search-legend": "Diuzit an oberoù da zizober eus ar sil gwallimplij",
+ "abusefilter-revert-periodstart": "Deroù ar prantad :",
+ "abusefilter-revert-periodend": "Dibenn ar prantad :",
+ "abusefilter-revert-search": "Dibab an obererezhioù",
+ "abusefilter-revert-filter": "Sil :",
+ "abusefilter-revert-preview-intro": "Sed aze an oberoù graet gant ar sil gwallimplij hag a vo diskaret gant an ober-mañ.\nTrugarez da wiriañ anezho gant aked, ha klikit war \"kadarnaat\" evit kadarnaat ho tibaboù.",
+ "abusefilter-revert-confirm": "Kadarnaat",
+ "abusefilter-revert-success": "Diskaret ho peus pep ober graet gant ar sil gwallimplij abalamour d'ar [[Special:AbuseFilter/$1|sil $2]].",
+ "abusefilter-revert-reason": "Disteurel en un doare emgefreek pep ober graet gant ar sil gwallimplij abalamour d'ar sil $1.\nAbeg roet : $2",
+ "abusefilter-revert-reasonfield": "Abeg :",
+ "abusefilter-test": "Amprouiñ ur sil war ar c'hemmoù kozh",
+ "abusefilter-test-intro": "Gant ar bajenn-mañ e c'helloc'h gwiriañ an/ar $1 {{PLURAL:$1|c'hemm|kemm}} diwezhañ enno ur sil roet er voest amañ dindan.\nEvit kargañ ur sil, roit e anv en hedad dindan an takad testenn, ha klikit war ar bouton \"{{int:abusefilter-test-load}}\".",
+ "abusefilter-test-legend": "Amprouadenn sil",
+ "abusefilter-test-load-filter": "Kargañ ar sil niverenn :",
+ "abusefilter-test-submit": "Amprouiñ",
+ "abusefilter-test-load": "Kargañ",
+ "abusefilter-test-user": "Kemmoù gant an implijer :",
+ "abusefilter-test-period-start": "Kemmoù graet goude :",
+ "abusefilter-test-period-end": "Kemmoù graet a-raok :",
+ "abusefilter-test-page": "Kemmoù graet war ar bajenn :",
+ "abusefilter-test-shownegative": "Diskouez ar c'hemmoù ha n'int ket kemeret e kont gant ar sil",
+ "abusefilter-test-syntaxerr": "Ar sil ho peus roet a zo ennañ ur fazi ereadurezh.\nGallout a rit resev un displegadenn glok dre glikañ war ar bouton \"{{int:abusefilter-edit-check}}\".",
+ "abusefilter-changeslist-examine": "arsellet",
+ "abusefilter-examine": "Studiañ ar c'hemmoù hiniennel",
+ "abusefilter-examine-intro": "Gant ar bajenn-mañ e c'heller ensellout an argemmennoù krouet gant ar sil gwallimplij evit ar c'hemmoù hinnienel, hag arnodiñ anezho gant ar siloù.",
+ "abusefilter-examine-legend": "Diuzañ kemmoù",
+ "abusefilter-examine-diff": "URL an diforc'h :",
+ "abusefilter-examine-user": "Implijer :",
+ "abusefilter-examine-title": "Titl ar bajenn :",
+ "abusefilter-examine-submit": "Klask",
+ "abusefilter-examine-vars": "Argemmennoù krouet evit ar c'hemm-mañ",
+ "abusefilter-examine-test": "Amprouiñ ar c'hemm-mañ gant ur sil",
+ "abusefilter-examine-test-button": "Amprouiñ ar sil",
+ "abusefilter-examine-match": "Gwelet eo bet ar c'hemm-mañ gant ar sil.",
+ "abusefilter-examine-nomatch": "N'eo ket bet kavet ar c'hemm-se gant ar sil.",
+ "abusefilter-examine-syntaxerror": "Direizh eo ereadur ar sil",
+ "abusefilter-examine-notfound": "N'eo ket bet kavet ar c'hemm ho peus goulennet.",
+ "abusefilter-examine-incompatible": "N'eo ket ar c'hemm ho peus goulennet embreget gant ar sil gwallimpij",
+ "abusefilter-examine-noresults": "N'eus disoc'h ebet evit an arventennoù klask roet ganeoc'h.",
+ "abusefilter-topnav": "'''Merdeiñ ar sil a-enep ar gwallimplij'''",
+ "abusefilter-topnav-home": "Degemer",
+ "abusefilter-topnav-test": "Amprouadenn a steudad",
+ "abusefilter-topnav-examine": "Studiañ ar c'hemmoù a-raok",
+ "abusefilter-topnav-log": "Marilh ar gwallimplij",
+ "abusefilter-topnav-tools": "Ostilhoù dizreinañ",
+ "abusefilter-topnav-import": "Enporzhiañ ur sil",
+ "abusefilter-log-name": "Marilh ar sil a-enep ar gwallimplij",
+ "abusefilter-log-header": "An deizlevr-mañ a ziskouez un diverradenn eus ar c'hemmoù graet d'ar siloù.\nEvit gouzout hiroc'h, gwelout [[Special:AbuseFilter/history|listenn]] eus kemmoù diwezhañ ar sil.",
+ "abusefilter-log-noresults": "Disoc'h ebet",
+ "abusefilter-diff-title": "Disheñvelderioù etre ar stummoù",
+ "abusefilter-diff-item": "Elfenn",
+ "abusefilter-diff-version": "Stumm eus $1 {{GENDER:$3|gant}} $2",
+ "abusefilter-diff-info": "Titouroù diazez",
+ "abusefilter-diff-pattern": "Amplegad ar sil",
+ "abusefilter-diff-invalid": "Ne c'haller ket adkavout ar stummoù goulennet",
+ "abusefilter-diff-backhistory": "Distreiñ da istor ar sil",
+ "abusefilter-diff-prev": "Kemm koshoc'h",
+ "abusefilter-diff-next": "Kemm nevesoc'h",
+ "abusefilter-import-intro": "Gallout a rit implijout an etrefas-mañ evit enporzhiañ siloù diwar wikioù all.\nEr wiki orin, klikit war \"{{int:abusefilter-edit-export}}\" e-barzh \"{{int:abusefilter-edit-tools}}\" en etrefas aozañ.\nEilit an takad testenn a teu war-well, ha pegit anezhañ e-barzh an takad testenn-mañ, da heul klikit war \"{{int:abusefilter-import-submit}}\".",
+ "abusefilter-import-submit": "Enporzhiañ roadennoù",
+ "abusefilter-group-default": "Dre ziouer",
+ "abusefilter-http-error": "Ur fazi HTTP zo bet : $1"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/bs.json b/www/wiki/extensions/AbuseFilter/i18n/bs.json
new file mode 100644
index 00000000..0a6b322d
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/bs.json
@@ -0,0 +1,399 @@
+{
+ "@metadata": {
+ "authors": [
+ "CERminator",
+ "Edinwiki",
+ "Palapa",
+ "Seha",
+ "Sociologist",
+ "KWiki",
+ "Srdjan m",
+ "Semso98",
+ "Matma Rex"
+ ]
+ },
+ "abusefilter-desc": "Dodaje automatske heuristike izmjenama.",
+ "abusefilter": "Konfiguracija filtera za zloupotrebu",
+ "abuselog": "Log zloupotrebe",
+ "abusefilter-intro": "Dobrodošli u interfejs upravljanja filterom zloupotreba.\nFilter zloupotreba je automatizirani softverski mehanizam za pravljenje automatskih heuristika za sve akcije.\nOvaj interfejs prikazuje spisak napravljenih filtera i omogućuje Vam da ih prilagodite.",
+ "abusefilter-mustbeeditor": "Iz sigurnosnih razloga, samo korisnici sa pravom da promijene filtere zloupotrebe mogu koristiti ovaj interfejs.",
+ "abusefilter-warning": "'''Upozorenje''': Ova je akcija automatski identificirana kao opasna.\nRadnje s lošim namjerama će biti brzo uklonjene,\ni zlonamjerne i destruktivne izmjene rezultiraju blokiranjem Vašeg korisničkog računa ili Vašeg računara.\nAko mislite da je ovo konstruktivna izmjena, onda je još jednom sačuvajte da bi bila dodana.\nOpis pravila zloupotrebe koje ste možda izmjenom prekršili je vidljiv ovdje: $1",
+ "abusefilter-disallowed": "Ova akcija je automatski identificirana kao štetna, i kao takva onemogućena.\nAko vjerujete da je Vaša izmjena konstruktivna, molimo Vas da kontaktirate administratora, i da ga obavijestite o onome šta namjeravate uraditi.\nKratki opis pravila ponašanja koje ogovara Vašoj akciji je: $1",
+ "abusefilter-blocked-display": "Ova akcija je automatski identificirana kao opasna,\ni kao takva onemogućena da se izvrši.\nDodatno, da bi se zaštitio {{SITENAME}}, Vaš korisnički račun i sve pripadajuće IP adrese su blokirane za uređivanje.\nAko se desila greška, molimo da kontaktirate administratora.\nKratki opis prekršenih pravila koja odgovaraju Vašoj akciji je: $1",
+ "abusefilter-degrouped": "Ova akcija je automatski prepoznata kao štetna.\nU skladu s tim je onemogućena, a sumnja se da je Vaš račun kompromitovan, sva Vaša prava su povučena.\nAko mislite da je ovo greška, molimo da kontaktirate birokratu sa objašnjenjem ove akcije te će tada Vaša prava biti vraćena.\nKratki opis kršenja pravila koja su prekršena Vašom akcijom je: $1",
+ "abusefilter-autopromote-blocked": "Ova akcija je automatski identificirana kao opasna i onemogućena je.\nDodatno, kao mjera zaštite, neke privilegije, koje su obično date potvrđenim računima su privremeno oduzete za Vaš račun.\nKratki opis prekršenih pravila koje se odnose na Vašu akciju je: $1",
+ "abusefilter-blocker": "Filter zloupotreba",
+ "abusefilter-blockreason": "Automatski blokirano od strane filtera za zloupoterbu. Opis povrijeđenog pravila: $1",
+ "abusefilter-degroupreason": "Prava su automatski oduzeta od strane filtera za zloupotrebu. Opis pravila: $1",
+ "abusefilter-accountreserved": "Ovaj korisnički račun je rezervisan za upotrebu od strane filtera za zloupotrebu.",
+ "right-abusefilter-modify": "Uređivanje filterâ protiv zloupotrebe",
+ "right-abusefilter-view": "Pregledanje filtera protiv zloupotrebe",
+ "right-abusefilter-log": "Pregledanje zapisnika zloupotrebe",
+ "right-abusefilter-log-detail": "Pregledanje detaljnih podataka u zapisniku zloupotrebe",
+ "right-abusefilter-private": "Pogledaj privatne podatke u logu zloupotrebe.",
+ "right-abusefilter-modify-restricted": "Mijenjanje filtera zloupotrebe sa ograničenim akcijama",
+ "right-abusefilter-revert": "Vrati sve izmjene date od filtera zloupotreba",
+ "right-abusefilter-view-private": "Pregled filtera zloupotrebe koji su označeni kao lični",
+ "right-abusefilter-log-private": "Vidi unose evidencije zloupotrebe koje su označene kao privatne",
+ "right-abusefilter-hide-log": "Sakrivanje unosa u zapisniku zloupotrebe",
+ "right-abusefilter-hidden-log": "Pregledanje skrivenih unosa u zapisniku zloupotrebe",
+ "right-abusefilter-modify-global": "Stvori ili promijeni globalni filter zloupotreba",
+ "action-abusefilter-modify": "uređujete filtere protiv zloupotrebe",
+ "action-abusefilter-view": "pregledate filtere protiv zloupotrebe",
+ "action-abusefilter-log": "pregledate zapisnik zloupotrebe",
+ "action-abusefilter-log-detail": "pregledate detaljne unose u zapisniku zloupotrebe",
+ "action-abusefilter-private": "vidi privatne podatke u zapisniku zloupotreba",
+ "action-abusefilter-modify-restricted": "izmijeni filtere zloupotrebe sa ograničenim akcijama",
+ "action-abusefilter-revert": "vrati sve izmjene po datom filteru zloupotrebe",
+ "action-abusefilter-view-private": "pregledate filtere zloupotrebe koji su označeni kao lični",
+ "abusefilter-log": "Log filtera zloupotrebe",
+ "abusefilter-log-summary": "Ovaj zapisnik prikazuje spisak svih akcija koje su zadržali filteri.",
+ "abusefilter-log-search": "Pretraži log zloupotrebe",
+ "abusefilter-log-search-user": "Korisnik:",
+ "abusefilter-log-search-filter": "Filtriraj ID-ove (odvoji sa cijevima):",
+ "abusefilter-log-search-title": "Naslov:",
+ "abusefilter-log-search-wiki": "Wiki:",
+ "abusefilter-log-search-submit": "Traži",
+ "abusefilter-log-entry": "$1: $2 je {{GENDER:$8|aktivirao|aktivirala}} filter protiv zloupotrebe, izvodeći radnju \"$3\" na $4.\nPoduzete radnje: $5;\nOpis filtera: $6",
+ "abusefilter-log-entry-withdiff": "$1: $2 je {{GENDER:$8|aktivirao|aktivirala}} filter protiv zloupotrebe, izvodeći radnju \"$3\" na stranici $4.\nPoduzete radnje: $5;\nOpis filtera: $6 ($7)",
+ "abusefilter-log-detailedentry-meta": "$1: $2 je {{GENDER:$9|aktivirao|aktivirala}} $3, izvodeći radnju \"$4\" na $5.\nPoduzete radnje: $6;\nOpis filtera: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "globalni filter $1",
+ "abusefilter-log-detailedentry-local": "filter $1",
+ "abusefilter-log-detailslink": "detalji",
+ "abusefilter-log-diff": "razl",
+ "abusefilter-log-hidelink": "podesi vidljivost",
+ "abusefilter-log-details-legend": "Detalji podataka u logu $1",
+ "abusefilter-log-details-var": "Varijabla (promjenjiva)",
+ "abusefilter-log-details-val": "Vrijednost",
+ "abusefilter-log-details-vars": "Parametri akcije",
+ "abusefilter-log-details-private": "Privatni podaci",
+ "abusefilter-log-details-ip": "Izvorna IP adresa",
+ "abusefilter-log-noactions": "ništa",
+ "abusefilter-log-details-diff": "Izmjene napravljene pri uređivanju",
+ "abusefilter-log-linkoncontribs": "zapisnik zloupotrebe",
+ "abusefilter-log-linkoncontribs-text": "Zapisnik zloupotrebe za {{GENDER:$1|ovog korisnika|ovu korisnicu}}",
+ "abusefilter-log-hidden": "(stavka sakrivena)",
+ "abusefilter-log-hidden-implicit": "(sakriveno jer je izmjena obrisana)",
+ "abusefilter-log-cannot-see-details": "Nemate dopuštenje da vidite detalje ovog unosa.",
+ "abusefilter-log-details-hidden": "Možda nećete vidjeti detalje ove stavke, zato što je sakrivena za javni pregled.",
+ "abusefilter-log-hide-legend": "Sakrij stavku zapisnika",
+ "abusefilter-log-hide-id": "ID stavke zapisnika:",
+ "abusefilter-log-hide-hidden": "Sakrij ovu stavku od javnog pregleda",
+ "abusefilter-log-hide-reason": "Razlog:",
+ "abusefilter-log-hide-forbidden": "Nemate dopuštenje da sakrivate stavke zapisnika zloupotrebe.",
+ "abusefilter-logentry-suppress": "sakr [[$1]]",
+ "abusefilter-logentry-unsuppress": "otkr [[$1]]",
+ "logentry-abusefilter-hit": "$1 je {{GENDER:$2|aktivirao|aktivirala}} filter $4, izvodeći radnju \"$5\" na stranici $3. Poduzete radnje: $6 ($7)",
+ "abusefilter-management": "Upravljanje filterom protiv zloupotrebe",
+ "abusefilter-list": "Svi filteri",
+ "abusefilter-list-id": "ID filtera",
+ "abusefilter-list-status": "Stanje",
+ "abusefilter-list-public": "Javni opis",
+ "abusefilter-list-consequences": "Posljedice",
+ "abusefilter-list-visibility": "Vidljivost",
+ "abusefilter-list-hitcount": "Brojač pogodaka",
+ "abusefilter-list-edit": "Uredi",
+ "abusefilter-list-details": "Detalji",
+ "abusefilter-list-limit": "Broj po stranici:",
+ "abusefilter-list-lastmodified": "Posljednja modifikacija",
+ "abusefilter-list-group": "Grupa filtera",
+ "abusefilter-hidden": "Privatno",
+ "abusefilter-unhidden": "Javno",
+ "abusefilter-enabled": "Uključen/a",
+ "abusefilter-deleted": "Obrisan/a",
+ "abusefilter-disabled": "Isključeno",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|pogodak|pogotka|pogodaka}}",
+ "abusefilter-new": "Napravi novi filter",
+ "abusefilter-return": "Nazad na upravljanje filterima",
+ "abusefilter-status-global": "Globalni",
+ "abusefilter-list-options": "Opcije",
+ "abusefilter-list-options-deleted": "Obrisani filteri:",
+ "abusefilter-list-options-deleted-only": "Prikaži samo obrisane filtere",
+ "abusefilter-list-options-deleted-hide": "Sakrij obrisane filtere",
+ "abusefilter-list-options-deleted-show": "Pripoji i obrisane filtere",
+ "abusefilter-list-options-scope": "Prikaži filtere:",
+ "abusefilter-list-options-scope-local": "Samo lokalna pravila",
+ "abusefilter-list-options-scope-global": "Samo globalna pravila",
+ "abusefilter-list-options-disabled": "Isključeni filteri:",
+ "abusefilter-list-options-hidedisabled": "Sakrij isključene filtere",
+ "abusefilter-list-options-submit": "Ažuriraj",
+ "abusefilter-tools-text": "Ovdje imate neke alate koji su korisni za formuliranje i prepravku filtera za zloupotrebu.",
+ "abusefilter-tools-expr": "Tester širenja",
+ "abusefilter-tools-submitexpr": "Odmjerite",
+ "abusefilter-tools-reautoconfirm": "Povrati automatski potvrđen status",
+ "abusefilter-tools-reautoconfirm-user": "Korisnik:",
+ "abusefilter-tools-reautoconfirm-submit": "Revert automatski potvrđenog",
+ "abusefilter-reautoconfirm-none": "{{GENDER:$1|Ovaj korisnik|Ova korisnica}} nije {{GENDER:$1|odustao|odustala}} od svog automatski potvrđenog statusa.",
+ "abusefilter-reautoconfirm-notallowed": "Vi nemate ovlašćenje da povratite automatski potvrđen status.",
+ "abusefilter-reautoconfirm-done": "Status potvrđenog korisnika je vraćen",
+ "abusefilter-status": "Od {{PLURAL:$1|posljednje radnje|posljednje $1 radnje|posljednjih $1 radnji}}, $2 ($3%) {{PLURAL:$2|dostigla je|dostigle su|dostiglo je}} uvjetno ograničenje od $4, a $5 ($6%) {{PLURAL:$5|podudara se|podudaraju se|podudara se}} s jednim od trenutno uključenih filtera.",
+ "abusefilter-edit": "Uređivanje filtera zloupotrebe",
+ "abusefilter-edit-subtitle": "Uredi filter $1",
+ "abusefilter-edit-subtitle-new": "Pravim filter",
+ "abusefilter-edit-oldwarning": "<strong>Mijenjate staru verziju ovog filtera.\nNavedene statistike odnose se na najnoviju verziju filtera.\nAko sačuvate izmjenu obrisat ćete sve izmjene napravljene od verzije koju uređujete.</strong> &bull;\n[[Special:AbuseFilter/history/$2|Vrati se na historiju ovog filtera]]",
+ "abusefilter-edit-status-label": "Statistike:",
+ "abusefilter-edit-status": "Od {{PLURAL:$1|posljednje $1 akcije|posljednje $1 akcije|posljednjih $1 akcija}} ovaj filter je pogođen $2 puta ($3%).",
+ "abusefilter-edit-status-profile": "Od {{PLURAL:$1|posljednje $1 akcije|posljednje $1 akcije|posljednjih $1 akcija}} ovaj filter je pogođen $2 puta ($3%). Prosječno, njegovo vrijeme pokretanja je $4ms, a utrošio je $5 {{PLURAL:$5|uvjet|uvjeta}} unutar ograničenja uvjeta.",
+ "abusefilter-edit-new": "Novi filter",
+ "abusefilter-edit-save": "Sačuvaj filter",
+ "abusefilter-edit-id": "ID filtera:",
+ "abusefilter-edit-description": "Opis:\n:''(javno vidljiv)''",
+ "abusefilter-edit-group": "Grupa filtera",
+ "abusefilter-edit-flags": "Zastave:",
+ "abusefilter-edit-enabled": "Uključi ovaj filter",
+ "abusefilter-edit-deleted": "Markiraj kao obrisano",
+ "abusefilter-edit-hidden": "Sakrij detalje ovog filter za javne preglede",
+ "abusefilter-edit-global": "Globalni filter",
+ "abusefilter-edit-rules": "Uslovi:",
+ "abusefilter-edit-notes": "Note:",
+ "abusefilter-edit-lastmod": "Filter posljednji put modificiran:",
+ "abusefilter-edit-lastmod-text": "$1 od strane $2",
+ "abusefilter-edit-hitcount": "Pogotci filtera:",
+ "abusefilter-edit-consequences": "Radnje koje se poduzimaju pri slaganju",
+ "abusefilter-edit-action-warn": "Pokreću se ove akcije nakon upozorenja korisniku",
+ "abusefilter-edit-action-disallow": "Zabranjuje korisniku od pokretanja zahtijevanih akcija",
+ "abusefilter-edit-action-blockautopromote": "Povrati korisnikov automatski potvrđen status",
+ "abusefilter-edit-action-degroup": "Ukloni korisnika iz svih privilegovanih grupa",
+ "abusefilter-edit-action-block": "Blokiraj korisnika i/ili IP adresu od izmjenjivanja",
+ "abusefilter-edit-action-throttle": "Povuci akcije ako je korisnik prešao limit učestalosti",
+ "abusefilter-edit-action-rangeblock": "Blokiraj /16 dio u kojem je korisnik izvorno.",
+ "abusefilter-edit-action-tag": "Označi izmjenu za buduće preglede.",
+ "abusefilter-edit-throttle-count": "Broja akcija za dozvolu:",
+ "abusefilter-edit-throttle-period": "Vremenski period:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|sekunda|sekunde|sekundi}}",
+ "abusefilter-edit-throttle-groups": "Grupa ukočena kod:\n:''(jedan po liniji, kombiniran sa zarezima)''",
+ "abusefilter-edit-warn-message": "Sistemska poruka koja se koristi za upozorenje:",
+ "abusefilter-edit-warn-other": "ostale poruke",
+ "abusefilter-edit-warn-other-label": "Naslov stranice ostalih poruka:\n:''(bez MediaWiki prefiksa)''",
+ "abusefilter-edit-warn-actions": "Akcije:",
+ "abusefilter-edit-warn-preview": "Pregledaj odabranu poruku",
+ "abusefilter-edit-warn-edit": "Napravi/uredi odabranu poruku",
+ "abusefilter-edit-tag-tag": "[[Special:Tags|Oznake]] za primjenu (jedna po redu):",
+ "abusefilter-edit-denied": "Možda nećete vidjeti detalje ovog filtera, zato što su sakriveni za javni pregled.",
+ "abusefilter-edit-main": "Parametri filtera",
+ "abusefilter-edit-done-subtitle": "Filter izmjenjen",
+ "abusefilter-edit-done": "[[Special:AbuseFilter/history/$1/diff/prev/$2|Vaše izmjene]] na [[Special:AbuseFilter/$1|filteru $3]] su sačuvane.",
+ "abusefilter-edit-badsyntax": "Sintaksna greška u filteru koji ste označili. Posljednji izgled gramatičke definicije bio je:\n<pre>$1</pre>",
+ "abusefilter-edit-restricted": "Ne možete uređivati ovaj filter, jer on sadrži jednu ili više ograničenih akcija.\nZamolite korisnika sa dopuštenjima za dodavanje ograničenih akcija da napravi izmjene umjesto Vas.",
+ "abusefilter-edit-viewhistory": "Pogledajte historiju ovog filtera",
+ "abusefilter-edit-history": "Historija:",
+ "abusefilter-edit-check": "Provjeri sintaksu",
+ "abusefilter-edit-badfilter": "Filter koji ste naveli ne postoji",
+ "abusefilter-edit-revert": "Vrati akcije koje je učinio ovaj filter",
+ "abusefilter-edit-tools": "Alati:",
+ "abusefilter-edit-test-link": "Provjerite ovaj filter protiv nedavnih izmjena",
+ "abusefilter-edit-export": "Izvezi ovaj filter na drugu wiki",
+ "abusefilter-edit-syntaxok": "Nisu otkrivene sintaksne greške.",
+ "abusefilter-edit-syntaxerr": "Otkrivena sintaksa greška: $1",
+ "abusefilter-edit-bad-tags": "Jedna ili više oznaka koje ste naveli nije valjana.\nOznake trebaju biti kratke i ne bi smjele sadržavati posebne znakove.",
+ "abusefilter-edit-notallowed": "Nije Vam dopušteno da pravite ili uređujete filtere zloupotrebe",
+ "abusefilter-edit-notallowed-global": "Nije Vam dopušteno da pravite ili uređujete globalne filtere zloupotrebe",
+ "abusefilter-edit-notallowed-global-custom-msg": "Posebne poruke za upozorenja nisu podržane za globalne filtere",
+ "abusefilter-edit-builder-select": "Izaberite jednu opciju da biste je dodali na kursor",
+ "abusefilter-edit-builder-group-op-arithmetic": "Aritmetički operatori",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Sabiranje (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Oduzimanje (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Množenje (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Dijeljenje (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Proračun pocenata (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Snaga (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Operatori poređenja",
+ "abusefilter-edit-builder-op-comparison-equal": "Jednako (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Nije jednako sa (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "Manje nego (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Veće nego (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Manje ili jednako sa (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Veće ili jednako sa (>=)",
+ "abusefilter-edit-builder-group-op-bool": "Bulovi operatori (Boolean)",
+ "abusefilter-edit-builder-op-bool-not": "Ne (!)",
+ "abusefilter-edit-builder-op-bool-and": "I (&)",
+ "abusefilter-edit-builder-op-bool-or": "Ili (|)",
+ "abusefilter-edit-builder-op-bool-xor": "Više/ili (^)",
+ "abusefilter-edit-builder-group-misc": "Različito",
+ "abusefilter-edit-builder-misc-in": "Nalazi se u liniji (in)",
+ "abusefilter-edit-builder-misc-like": "Šema pogodaka (like)",
+ "abusefilter-edit-builder-misc-rlike": "Regex pogoci (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "Regex koji se slaže, ne razlikuje velika slova (irlike)",
+ "abusefilter-edit-builder-misc-contains": "Lijevi string sadrži desni string (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "Linija riječi (\"\")",
+ "abusefilter-edit-builder-misc-tern": "Tercijarni operator (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "Uslovljeno (if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "funkcije",
+ "abusefilter-edit-builder-funcs-length": "Dužina linije (dužina)",
+ "abusefilter-edit-builder-funcs-lcase": "Mala slova (lcase)",
+ "abusefilter-edit-builder-funcs-ucase": "Velika slova (ucase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "Normaliziraj zbunjujuće karaktere (ccnorm)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "Skloni duple karaktere (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "Specijalni karakteri/ svi karakteri (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "Normaliziraj (norm)",
+ "abusefilter-edit-builder-funcs-count": "Broj vremenske linije X dodaje u liniju Y (count)",
+ "abusefilter-edit-builder-funcs-rcount": "Broj koliko se puta regex X pojavljuje u tekstu Y (rcount)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "Ukloni praznine (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "Ukloni posebne znakove (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "Da li je IP u okviru? (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "Traži znakove za više podznakova (contains_any)",
+ "abusefilter-edit-builder-funcs-substr": "Podznakovi (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "Pozicija podgrupe unutar grupe znakova (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "Zamijeni podznakove sa znakovima (str_replace)",
+ "abusefilter-edit-builder-funcs-rescape": "Izbjegni doslovne niske u regexu (rescape)",
+ "abusefilter-edit-builder-funcs-set_var": "Postavi varijable (set_var)",
+ "abusefilter-edit-builder-group-vars": "Promijenjive",
+ "abusefilter-edit-builder-vars-accountname": "Broj računa (on account creation)",
+ "abusefilter-edit-builder-vars-timestamp": "Unix vremenski pečat izmjene",
+ "abusefilter-edit-builder-vars-action": "akcija",
+ "abusefilter-edit-builder-vars-addedlines": "Linije dodane u izmjeni",
+ "abusefilter-edit-builder-vars-delta": "Veličina promjenjena pri izmjeni",
+ "abusefilter-edit-builder-vars-diff": "Sastavi razlike promjena pri izmjeni",
+ "abusefilter-edit-builder-vars-newsize": "Veličina nove stranice",
+ "abusefilter-edit-builder-vars-oldsize": "Veličina stare stranice",
+ "abusefilter-edit-builder-vars-removedlines": "Linije sklonjene pri izmjeni",
+ "abusefilter-edit-builder-vars-summary": "Suma izmjena/razlog",
+ "abusefilter-edit-builder-vars-article-id": "ID stranice",
+ "abusefilter-edit-builder-vars-article-ns": "Imenski prostor stranice",
+ "abusefilter-edit-builder-vars-article-text": "Naslov stanice (without namespace)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Puni naslov stranice",
+ "abusefilter-edit-builder-vars-article-views": "Pregleda stranice",
+ "abusefilter-edit-builder-vars-movedfrom-id": "ID preusmjerene izvorne stranice",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "Imenski prostor izvorne stranice",
+ "abusefilter-edit-builder-vars-movedfrom-text": "Naslov premještene izvorne stranice",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "Puni naslov izvorne stranice koja se premješta",
+ "abusefilter-edit-builder-vars-movedto-id": "ID stranice na koju se premješta",
+ "abusefilter-edit-builder-vars-movedto-ns": "Imenski prostor stranice na koju se premješta",
+ "abusefilter-edit-builder-vars-movedto-text": "Naslov stranice na koju se premješta",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "Puni naslov stranice na koju se premješta",
+ "abusefilter-edit-builder-vars-user-editcount": "Brojač izmjena korisnika",
+ "abusefilter-edit-builder-vars-user-age": "Starost korisničkog računa",
+ "abusefilter-edit-builder-vars-user-name": "Ime korisničkog računa",
+ "abusefilter-edit-builder-vars-user-groups": "Grupiraj (including implicit) korisnike u",
+ "abusefilter-edit-builder-vars-user-rights": "Prava koja korisnik ima",
+ "abusefilter-edit-builder-vars-user-blocked": "Da li je korisnik blokiran",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "Vrijeme u kojem je e-mail adresa bila potvrđena",
+ "abusefilter-edit-builder-vars-recent-contributors": "Posljednjih pet urednika stranice",
+ "abusefilter-edit-builder-vars-all-links": "Svi linkovi kao tekst nove stranice",
+ "abusefilter-edit-builder-vars-added-links": "Linkovi dodani na stranicu",
+ "abusefilter-edit-builder-vars-removed-links": "Linkovi uklonjeni sa stranice",
+ "abusefilter-edit-builder-vars-old-text": "Stari wikitekst stranice, prije uređivanja",
+ "abusefilter-edit-builder-vars-new-text": "Nova stranica wikiteksta, nakon uređivanja",
+ "abusefilter-edit-builder-vars-new-pst": "Novi wikitekst stranice, prilagođeno za sačuvanje",
+ "abusefilter-edit-builder-vars-new-text-stripped": "Tekst nove stranice, bez ikakvih obilježavanja",
+ "abusefilter-edit-builder-vars-new-html": "Parsirani HTML izvor nove izmjene",
+ "abusefilter-edit-builder-vars-restrictions-edit": "Uredi nivo zaštite stranice",
+ "abusefilter-edit-builder-vars-restrictions-move": "Premjesti nivo zaštite stranice",
+ "abusefilter-edit-builder-vars-restrictions-create": "Zaštita za pravljenje stranice",
+ "abusefilter-edit-builder-vars-restrictions-upload": "Zaštita za postavljanje datoteke",
+ "abusefilter-edit-builder-vars-old-text-stripped": "Tekst sa stare stranice, uklonjene sve oznake",
+ "abusefilter-edit-builder-vars-old-links": "Linkovi na stranici, prije uređivanja",
+ "abusefilter-edit-builder-vars-old-html": "Wikitekst stare stranice, parsiran u HTML",
+ "abusefilter-edit-builder-vars-minor-edit": "Da li je izmjena označena kao mala ili ne",
+ "abusefilter-edit-builder-vars-file-sha1": "SHA1 haš sadržaja datoteke",
+ "abusefilter-filter-log": "Nedavne izmjene filtera",
+ "abusefilter-history": "Historija izmjena za Abuse Filter $1",
+ "abusefilter-history-foruser": "Izmjene od strane {{GENDER:$1|korisnika|korisnice}} $1",
+ "abusefilter-history-hidden": "sakriveno",
+ "abusefilter-history-enabled": "uključeno",
+ "abusefilter-history-global": "Globalno",
+ "abusefilter-history-timestamp": "Vrijeme",
+ "abusefilter-history-user": "Korisnik",
+ "abusefilter-history-public": "Javni opis filtera",
+ "abusefilter-history-flags": "Zastave/oznake",
+ "abusefilter-history-filter": "Pravila filtera",
+ "abusefilter-history-comments": "Komentari",
+ "abusefilter-history-actions": "Akcije",
+ "abusefilter-history-backedit": "Vrati se stranici za izmjenu filtera",
+ "abusefilter-history-deleted": "Obrisano",
+ "abusefilter-history-filterid": "Filter",
+ "abusefilter-history-select-legend": "Pročisti pretragu",
+ "abusefilter-history-select-user": "Korisnik:",
+ "abusefilter-history-select-submit": "Pročisti",
+ "abusefilter-history-diff": "Promjene",
+ "abusefilter-history-error-hidden": "Filter koji ste zahtijevali je sakriven i ne možete vidjeti njegovu historiju.",
+ "abusefilter-exception-unexpectedatend": "Neočekivani \"$2\" na znaku $1.",
+ "abusefilter-exception-expectednotfound": "Očekivano $2 u znaku $1 nije nađeno (umjesto tog nađeno $3 $4).",
+ "abusefilter-exception-unrecognisedkeyword": "Neprepoznata ključna riječ $2 u znaku $1.",
+ "abusefilter-exception-unexpectedtoken": "Neočekivan token \"$3\" (tipa \"$2\") u znaku $1.",
+ "abusefilter-exception-unclosedstring": "Nezatvoreni skup koji počinje sa znakom $1.",
+ "abusefilter-exception-invalidoperator": "Nevaljan operator \"$2\" kod znaka $1.",
+ "abusefilter-exception-unrecognisedtoken": "Neprepoznat token \"$2\" na znaku $1.",
+ "abusefilter-exception-noparams": "Nisu dati parametri za funkciju \"$2\" na znaku $1.",
+ "abusefilter-exception-dividebyzero": "Nevaljan pokušaj dijeljenja $2 sa nulom kod znaka $1.",
+ "abusefilter-exception-unrecognisedvar": "Neprepoznata varijabla $2 u znaku $1.",
+ "abusefilter-exception-notenoughargs": "Nema dovoljno argumenata u funkciji $2 pozvani na znaku $1.\nOčekivano $3 {{PLURAL:$3|argument|argumenta|argumenata}}, navedeno $4",
+ "abusefilter-exception-regexfailure": "Greška u regularnom izrazu \"$3\" u znaku $1: \"$2\"",
+ "abusefilter-exception-overridebuiltin": "Nevaljano zaobilažanje ugrađene varijable \"$2\" kod znaka $1.",
+ "abusefilter-exception-outofbounds": "Zahtijevana nepostojeća stavka spiska $2 (veličina spiska = $3) kod znaka $1.",
+ "abusefilter-exception-notlist": "Zahtijevana stavka niza izvan niza kod znaka $1.",
+ "abusefilter-action-tag": "Oznaka",
+ "abusefilter-action-throttle": "Ograničenje",
+ "abusefilter-action-warn": "Upozorenje",
+ "abusefilter-action-blockautopromote": "Blokiraj samopromociju",
+ "abusefilter-action-block": "Blokiranje",
+ "abusefilter-action-degroup": "Ukloni iz grupa",
+ "abusefilter-action-rangeblock": "Blokiranje raspona",
+ "abusefilter-action-disallow": "Onemogući",
+ "abusefilter-revert-title": "Vrati sve izmjene iz filtera $1",
+ "abusefilter-revert-intro": "Ovaj obrazac omogućuje Vam vraćanje svih izmjena koje je napravio filter zloupotreba zbog filtera $1.\nMolimo Vas da dobro pazite pri korištenju ovoj alata.",
+ "abusefilter-revert-preview-item": "$1: $2 je {{GENDER:$7|napravio|napravila}} $3 dana $4. Radnje za vraćanje: $5 ($6)",
+ "abusefilter-revert-search-legend": "Odaberi akcije filtera zloupotreba za vraćanje",
+ "abusefilter-revert-periodstart": "Početak perioda:",
+ "abusefilter-revert-periodend": "Kraj perioda:",
+ "abusefilter-revert-search": "Odaberi akcije",
+ "abusefilter-revert-filter": "Filter:",
+ "abusefilter-revert-preview-intro": "Ispod su prikazane akcije koje je poduzeo filter zloupotreba koje će se vratiti putem ove akcije.\nMolimo da ih pažljivo provjerite, te kliknete \"{{int:abusefilter-revert-confirm}}\" da potvrdite Vaš odabir.",
+ "abusefilter-revert-confirm": "Potvrdi",
+ "abusefilter-revert-success": "Vratili ste sve akcije koje je poduzeo filter zloupotreba zbog [[Special:AbuseFilter/$1|filtera $2]].",
+ "abusefilter-revert-reason": "Automatskp vraćanje svih akcija koje je načinio filter zloupotreba zbog filtera $1.\nNavedeni razlog: $2",
+ "abusefilter-revert-reasonfield": "Razlog:",
+ "abusefilter-test": "Testiraj filter protiv ranijih izmjena",
+ "abusefilter-test-intro": "Ova stranica Vam omogućava da provjerite filter koji je unesen u kutiju ispod protiv {{PLURAL:$1|zadnje $1 izmjene|zadnje $1 izmjene|zadnjih $1 izmjena}}. Da napunite postojeći filter, unesite filter ID u kutiju ispod kutije za uređivanje i pritisnite dugme \"Napuni\".",
+ "abusefilter-test-legend": "Testiranje filtera",
+ "abusefilter-test-load-filter": "Učitaj filter ID:",
+ "abusefilter-test-submit": "Testiraj",
+ "abusefilter-test-load": "Napuni",
+ "abusefilter-test-user": "Izmjene od strane korisnika:",
+ "abusefilter-test-period-start": "Izmjene načinjene poslije:",
+ "abusefilter-test-period-end": "Izmjene načinjene poslije:",
+ "abusefilter-test-page": "Izmjene napravljene na stranici:",
+ "abusefilter-test-shownegative": "Prikaži promjene koje ne odgovaraju filteru",
+ "abusefilter-test-syntaxerr": "Filter koji ste unijeli sadrži sintaksnu grešku.\nMožete dobiti potpuno objašnjenje klikom na dugme \"{{int:abusefilter-edit-check}}\".",
+ "abusefilter-changeslist-examine": "ispitaj",
+ "abusefilter-examine": "Ispitaj lične promjene",
+ "abusefilter-examine-intro": "Ova stranica Vam omogućuje da ispitate promjenjive koje je napravio filter zloupotreba za određeno uređivanje i da ih isprobate na filterima.",
+ "abusefilter-examine-legend": "Odaberi izmjene",
+ "abusefilter-examine-diff": "URL razlika:",
+ "abusefilter-examine-user": "Korisnik:",
+ "abusefilter-examine-title": "Naslov stranice:",
+ "abusefilter-examine-submit": "Traži",
+ "abusefilter-examine-vars": "Promjenjive koje su napravljene za ovu izmjenu",
+ "abusefilter-examine-test": "Isprobaj ovu izmjenu putem filtera",
+ "abusefilter-examine-test-button": "Isprobaj filter",
+ "abusefilter-examine-match": "Filter je odgovarao ovoj izmjeni.",
+ "abusefilter-examine-nomatch": "Filter nije odgovarao ovoj izmjeni.",
+ "abusefilter-examine-syntaxerror": "Filter ima nevaljanu sintaksu",
+ "abusefilter-examine-notfound": "Izmjena koju ste tražili nije mogla biti pronađena.",
+ "abusefilter-examine-incompatible": "Izmjena koju ste tražili nije podržana od filtera zloupotreba",
+ "abusefilter-examine-noresults": "Nisu pronađeni rezultati za parametre pretrage koje ste naveli.",
+ "abusefilter-topnav": "'''Navigacija po filteru protiv zloupotrebe'''",
+ "abusefilter-topnav-home": "Početna strana",
+ "abusefilter-topnav-test": "Grupno testiranje",
+ "abusefilter-topnav-examine": "Ispitaj prošle izmjene",
+ "abusefilter-topnav-log": "Zapisnik zloupotrebe",
+ "abusefilter-topnav-tools": "Alati za debugiranje",
+ "abusefilter-topnav-import": "Filter uvoza",
+ "abusefilter-log-name": "Zapisnik filtera zloupotrebe",
+ "abusefilter-log-header": "Ovaj zapisnik prikazuje sažetak izmjena napravljenih na filterima.\nZa sve detalje, pogledajte [[Special:AbuseFilter/history|spisak]] nedavnih izmjena filtera.",
+ "abusefilter-logentry-modify": "$1 {{GENDER:$2|izmijenio|izmijenila}} je $4 ($5)",
+ "abusefilter-log-noresults": "Nema rezultata",
+ "abusefilter-diff-title": "Razlike između verzija",
+ "abusefilter-diff-item": "Stavka",
+ "abusefilter-diff-version": "Verzija od $1 {{GENDER:$3|od strane}} $2",
+ "abusefilter-diff-info": "Osnovne informacije",
+ "abusefilter-diff-pattern": "Uslovi filtera",
+ "abusefilter-diff-invalid": "Tražene vezije nisu mogle biti učitane",
+ "abusefilter-diff-backhistory": "Nazad na historiju filtera",
+ "abusefilter-diff-prev": "Starije uređivanje",
+ "abusefilter-diff-next": "Novije uređivanje",
+ "abusefilter-import-intro": "Možete koristiti ovaj interfejs za uvoz filtera sa drugih wikija.\nU izvornoj wiki, kliknite na \"{{int:abusefilter-edit-export}}\" u meniju \"{{int:abusefilter-edit-tools}}\" u interfejsu uređivanja.\nKopirajte iz tekstualne kutije koja se pojavi i zalijepite u ovu kutiju, zatim kliknite na \"{{int:abusefilter-import-submit}}\",",
+ "abusefilter-import-submit": "Uvezi podatke",
+ "abusefilter-group-default": "Standardno",
+ "abusefilter-http-error": "Pojavila se HTTP greška: $1."
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/ca.json b/www/wiki/extensions/AbuseFilter/i18n/ca.json
new file mode 100644
index 00000000..326cf86c
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/ca.json
@@ -0,0 +1,416 @@
+{
+ "@metadata": {
+ "authors": [
+ "Aleator",
+ "Alvaro Vidal-Abarca",
+ "Arnaugir",
+ "Ciencia Al Poder",
+ "El libre",
+ "Gemmaa",
+ "Loupeter",
+ "Papapep",
+ "Paucabot",
+ "Pintor Smeargle",
+ "Pitort",
+ "Qllach",
+ "SMP",
+ "Sociologist",
+ "Solde",
+ "Ssola",
+ "Vriullop",
+ "Fitoschido",
+ "Jmarchn",
+ "Toniher",
+ "Macofe",
+ "Jaumeortola",
+ "Matma Rex"
+ ]
+ },
+ "abusefilter-desc": "Aplica heurística automàtica a les edicions",
+ "abusefilter": "Configuració del filtre d’abusos",
+ "abuselog": "Registre del filtre d’abusos",
+ "abusefilter-intro": "Benvinguts a la interfície de gestió del filtre d'abusos.\nAquest filtre és un mecanisme del programari per aplicar heurística automàtica a totes les accions.\nAquesta interfície mostra una llista dels filtres definits i permet modificar-los.",
+ "abusefilter-mustbeeditor": "Per raons de seguretat, només poden utilitzar aquesta interfície els usuaris amb permisos per a modificar els filtres d'abusos.",
+ "abusefilter-warning": "'''Atenció:''' Aquesta acció ha estat identificada automàticament com a perniciosa.\nLes edicions no constructives seran revertides ràpidament,\ni la reiterada edició de forma no constructiva comportarà el blocatge del vostre compte o adreça IP.\nSi creieu que aquesta acció és constructiva, podeu tornar-la a enviar per a confirmar-la.\nUna breu descripció de la regla d'abús que ha identificat la vostra acció és: $1",
+ "abusefilter-disallowed": "Aquesta acció ha estat automàticament identificada com a nociva i per tant rebutjada.\nSi creieu que la vostra acció era constructiva, si us plau informeu un administrador de què estàveu intentant fer.\nUna breu descripció de la regla d'abús amb què coincidia la vostra acció és: $1",
+ "abusefilter-blocked-display": "Aquesta acció s'ha identificat automàticament com perjudicials\n i li ha impedit executar-lo.\nA més a més, per protegir {{SITENAME}}, el seu compte d'usuari i tots associats adreces d'IP s'han blocat des d'edició.\nSi això s'ha produït en l'error, si us plau en contacte amb un administrador.\nUna breu descripció de la regla de l'abús que coincidien amb la seva acció és:$1",
+ "abusefilter-degrouped": "Aquesta acció s'ha identificat automàticament com a perillosa.\nTenim sospites que el vostre compte ha estat compromès i hem revocat tots els vostres drets.\nSi creieu que això és un error, contacteu amb un buròcrata amb una explicació d'aquesta acció i es podrien restablir els vostres drets.\nUna breu descripció de la regla de l'abús que coincidien amb la vostra acció és: $1",
+ "abusefilter-autopromote-blocked": "Aquesta acció s'ha identificat automàticament com perjudicial, i ha estat deshabilitat.\nA més a més, com a mesura de seguretat, alguns privilegis concedits habitualment per establir comptes han estat revocats temporalment del seu compte.\nUna breu descripció de la regla de l'abús que coincidien amb la seva acció és:$1",
+ "abusefilter-blocker": "Filtre d’abusos",
+ "abusefilter-blockreason": "Blocat automàticament pel filtre d'abús.\nDescripció de la regla aplicada: $1",
+ "abusefilter-degroupreason": "Drets retirats automàticament pel filtre d'abús.\nDescripció de la regla: $1",
+ "abusefilter-accountreserved": "Aquest compte està reservat per al seu ús pel filtre d'abús.",
+ "right-abusefilter-modify": "Modificar els filtres d'abús",
+ "right-abusefilter-view": "Veure filtres d'abús",
+ "right-abusefilter-log": "Veure el registre d'abusos",
+ "right-abusefilter-log-detail": "Veure entrades detallades del registre d'abusos",
+ "right-abusefilter-private": "Veure dades privades al registre d'abusos",
+ "right-abusefilter-modify-restricted": "Modificar els filtres d'abús amb accions restringides",
+ "right-abusefilter-revert": "Revertir totes les modificacions efectuades per un filtre d'abús concret",
+ "right-abusefilter-view-private": "Veure filtres d'abús marcats com a privats",
+ "right-abusefilter-log-private": "Mostra les entrades del registre pels filtres d'abús marcats com a privats",
+ "right-abusefilter-hide-log": "Ocultar entrades al registre d'abusos",
+ "right-abusefilter-hidden-log": "Veure entrades ocultes al registre d'abusos",
+ "right-abusefilter-modify-global": "Crear o modificar filtres d'abusos global",
+ "action-abusefilter-modify": "modifica els filtres d'abús",
+ "action-abusefilter-view": "Veure filtres d'abús",
+ "action-abusefilter-log": "veure el registre d'abusos",
+ "action-abusefilter-log-detail": "veure entrades detallades del registre d'abusos",
+ "action-abusefilter-private": "veure dades privades al registre d'abusos",
+ "action-abusefilter-modify-restricted": "modifica els filtres d'abús amb accions restringides",
+ "action-abusefilter-revert": "reverteix tots els canvis d'un filtre d'abús donat",
+ "action-abusefilter-view-private": "veure filtres d'abús marcats com a privats",
+ "abusefilter-log": "Registre del filtre d’abusos",
+ "abusefilter-log-summary": "Aquest registre mostra una llista de totes les accions detectades pels filtres.",
+ "abusefilter-log-search": "Cerca al registre d'abusos",
+ "abusefilter-log-search-user": "Usuari:",
+ "abusefilter-log-search-filter": "Identificadors de filtres (separats amb barres verticals):",
+ "abusefilter-log-search-title": "Títol:",
+ "abusefilter-log-search-wiki": "Wiki:",
+ "abusefilter-log-search-submit": "Cerca",
+ "abusefilter-log-entry": "$1: $2 {{GENDER:$8|ha disparat}} un filtre d'abusos {{GENDER:$8|durant}} l'acció «$3» a $4.\nAccions preses: $5;\nDescripció del filtre: $6",
+ "abusefilter-log-detailedentry-meta": "$1: $2 {{GENDER:$9|ha disparat}} el $3 {{GENDER:$9|durant}} l'acció «$4» a $5.\nAccions preses: $6;\nDescripció del filtre: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "Filtre global $1",
+ "abusefilter-log-detailedentry-local": "filtre $1",
+ "abusefilter-log-detailslink": "detalls",
+ "abusefilter-log-diff": "dif",
+ "abusefilter-log-hidelink": "ajustar la visibilitat",
+ "abusefilter-log-details-legend": "Detalls de l'entrada de registre $1",
+ "abusefilter-log-details-var": "Variable",
+ "abusefilter-log-details-val": "Valor",
+ "abusefilter-log-details-vars": "Paràmetres de l'acció",
+ "abusefilter-log-details-private": "Dades privades",
+ "abusefilter-log-details-ip": "Adreça IP d'origen",
+ "abusefilter-log-noactions": "cap",
+ "abusefilter-log-details-diff": "Canvis fets en l'edició",
+ "abusefilter-log-linkoncontribs": "registre d'abusos",
+ "abusefilter-log-linkoncontribs-text": "Registre d'abusos d'{{GENDER:$1|aquest usuari|aquesta usuària}}",
+ "abusefilter-log-hidden": "(entrada amagada)",
+ "abusefilter-log-hidden-implicit": "(ocult perquè s'ha suprimit la revisió)",
+ "abusefilter-log-cannot-see-details": "No tens permisos per veure els detalls d'aquesta entrada.",
+ "abusefilter-log-details-hidden": "No podeu veure els detalls d’aquesta entrada ja que està restringit el seu accés públic.",
+ "abusefilter-log-hide-legend": "Amaga entrada de registre",
+ "abusefilter-log-hide-id": "ID de l'entrada de registre:",
+ "abusefilter-log-hide-hidden": "Amaga aquesta entrada de la vista pública",
+ "abusefilter-log-hide-reason": "Motiu:",
+ "abusefilter-log-hide-forbidden": "No teniu permisos per ocultar entrades al registre d'abusos.",
+ "abusefilter-logentry-suppress": "amaga \"[[$1]]\"",
+ "abusefilter-logentry-unsuppress": "mostra \"[[$1]]\"",
+ "log-action-filter-abusefilter": "Tipus de canvi de filtre:",
+ "log-action-filter-abusefilter-create": "Creació d’un filtre nou",
+ "log-action-filter-abusefilter-modify": "Modificació de filtre",
+ "abusefilter-management": "Gestió del filtre d’abusos",
+ "abusefilter-list": "Tots els filtres",
+ "abusefilter-list-id": "Núm.",
+ "abusefilter-list-status": "Estat",
+ "abusefilter-list-public": "Descripció pública",
+ "abusefilter-list-consequences": "Conseqüències",
+ "abusefilter-list-visibility": "Visibilitat",
+ "abusefilter-list-hitcount": "Deteccions",
+ "abusefilter-list-edit": "Modifica",
+ "abusefilter-list-details": "Detalls",
+ "abusefilter-list-limit": "Nombre per pàgina:",
+ "abusefilter-list-lastmodified": "Última modificació",
+ "abusefilter-list-group": "Grup del filtre",
+ "abusefilter-hidden": "Privat",
+ "abusefilter-unhidden": "Públic",
+ "abusefilter-enabled": "Habilitat",
+ "abusefilter-deleted": "Eliminat",
+ "abusefilter-disabled": "Deshabilitat",
+ "abusefilter-hitcount": "$1 vegad{{PLURAL:$1|a|es}}",
+ "abusefilter-new": "Creau un nou filtre",
+ "abusefilter-return": "Torna a la gestió del filtre",
+ "abusefilter-status-global": "Global",
+ "abusefilter-list-options": "Opcions",
+ "abusefilter-list-options-deleted": "Filtres eliminats:",
+ "abusefilter-list-options-deleted-only": "Mostra només els filtres eliminats",
+ "abusefilter-list-options-deleted-hide": "Amaga els filtres eliminats",
+ "abusefilter-list-options-deleted-show": "Mostra els filtres eliminats",
+ "abusefilter-list-options-scope": "Mostra els filtres:",
+ "abusefilter-list-options-scope-local": "Només normes locals",
+ "abusefilter-list-options-scope-global": "Només normes globals",
+ "abusefilter-list-options-disabled": "Filtres deshabilitats:",
+ "abusefilter-list-options-hidedisabled": "Oculta filtres deshabilitats",
+ "abusefilter-list-options-searchoptions": "Mode de cerca:",
+ "abusefilter-list-options-submit": "Actualitza",
+ "abusefilter-tools-text": "Aquí hi ha algunes eines que poden ser útils en la formulació i depuració dels filtres d'abusos.",
+ "abusefilter-tools-expr": "Provador d'expressions",
+ "abusefilter-tools-submitexpr": "Avalua",
+ "abusefilter-tools-reautoconfirm": "Restaura l'estat autoconfirmat",
+ "abusefilter-tools-reautoconfirm-user": "Usuari:",
+ "abusefilter-tools-reautoconfirm-submit": "Reautoconfirma",
+ "abusefilter-reautoconfirm-none": "Que l'usuari no ha tingut {{GENDER:$1| his|her|their}} autoconfirmed estat suspès.",
+ "abusefilter-reautoconfirm-notallowed": "No estàs autoritzat/da a recuperar un estat autoconfirmat.",
+ "abusefilter-reautoconfirm-done": "S'ha restaurat l'estat de compte autoconfirmat",
+ "abusefilter-status": "De {{PLURAL:$1|la darrera acció|les darreres $1 accions}}, $2 ($3%) ha{{PLURAL:$2||n}} sobrepassat el límit de $4 condicions autoritzades, i $5 ($6%) ha{{PLURAL:$5||n}} disparat algun dels filtres actualment activats.",
+ "abusefilter-edit": "Edició del filtre d’abusos",
+ "abusefilter-edit-subtitle": "Edició del filtre $1",
+ "abusefilter-edit-subtitle-new": "Creació d’un filtre",
+ "abusefilter-edit-oldwarning": "<strong>Esteu editant una versió vella d'aquest filtre.\nLes estadístiques indicades són de la versió més recent del filtre.\nSi deseu els vostres canvis, revertireu tots els canvis posteriors a aquesta versió.</strong> &bull;\n[[Special:AbuseFilter/history/$2|Torna a l'historial d'aquest filtre]].",
+ "abusefilter-edit-status-label": "Estadístiques:",
+ "abusefilter-edit-status": "De {{PLURAL:$1|la darrera acció|les $1 darreres accions}} aquest filtre n'ha detectat $2 ($3%).",
+ "abusefilter-edit-status-profile": "De {{PLURAL:$1|la darrera acció|les $1 darreres accions}} aquest filtre n'ha detectat $2 ($3%).\nDe mitjana, la seva durada d'execució és de $4 ms i utilitza $5 {{PLURAL:$5|condició|condicions}} del límit total.",
+ "abusefilter-edit-new": "Nou filtre",
+ "abusefilter-edit-save": "Desa filtre",
+ "abusefilter-edit-id": "Núm. del filtre:",
+ "abusefilter-edit-description": "Descripció:\n:''(visible públicament)''",
+ "abusefilter-edit-field-description": "descripció",
+ "abusefilter-edit-group": "Grup del filtre:",
+ "abusefilter-edit-flags": "Marques:",
+ "abusefilter-edit-enabled": "Habilita aquest filtre",
+ "abusefilter-edit-deleted": "Marca com a eliminat",
+ "abusefilter-edit-hidden": "Amaga detalls d'aquest filtre de la vista pública",
+ "abusefilter-edit-global": "Filtre global",
+ "abusefilter-edit-rules": "Condicions:",
+ "abusefilter-edit-field-conditions": "condicions",
+ "abusefilter-edit-notes": "Notes:",
+ "abusefilter-edit-lastmod": "Última modificació del filtre:",
+ "abusefilter-edit-lastmod-text": "$1 de $2",
+ "abusefilter-edit-hitcount": "Execucions del filtre:",
+ "abusefilter-edit-consequences": "Accions a emprendre quan s'activi",
+ "abusefilter-edit-action-warn": "Provoca aquestes accions després de donar a l'usuari/a un avís",
+ "abusefilter-edit-action-disallow": "Evita que l'usuari realitzi l'acció en qüestió",
+ "abusefilter-edit-action-blockautopromote": "Revoca l'estat del compte autoconfirmat de l'usuari/a",
+ "abusefilter-edit-action-degroup": "Retira l'usuari/a de tots els grups de privilegis",
+ "abusefilter-edit-action-block": "Bloca les edicions de l'usuari o adreça IP",
+ "abusefilter-edit-action-throttle": "Desencadena les accions només si l'usuari sobrepassa un límit de reiteracions",
+ "abusefilter-edit-action-rangeblock": "Bloca el rang /16 que origina l'usuari",
+ "abusefilter-edit-action-tag": "Marca l'edició per a una revisió posterior",
+ "abusefilter-edit-throttle-count": "Nombre d'accions a permetre:",
+ "abusefilter-edit-throttle-period": "Període de temps:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|segon|segons}}",
+ "abusefilter-edit-throttle-groups": "Agrupar la reiteració per:\n:''(un per línia, separat per comes)''",
+ "abusefilter-edit-warn-message": "Missatge del sistema a usar com a avís:",
+ "abusefilter-edit-warn-other": "Un altre missatge",
+ "abusefilter-edit-warn-other-label": "Nom de la pàgina de l’altre missatge:\n:''(sense el prefix «MediaWiki»)''",
+ "abusefilter-edit-warn-actions": "Accions:",
+ "abusefilter-edit-warn-preview": "Previsualitza el missatge seleccionat",
+ "abusefilter-edit-warn-edit": "Crea o modifica el missatge seleccionat",
+ "abusefilter-edit-tag-tag": "[[Special:Tags|Etiquetes]] a aplicar (una per línia):",
+ "abusefilter-edit-denied": "No podeu veure els detalls d’aquest filtre ja que està restringit el seu accés públic.",
+ "abusefilter-edit-main": "Paràmetres de filtre",
+ "abusefilter-edit-done-subtitle": "Filtre editat",
+ "abusefilter-edit-done": "[[Special:AbuseFilter/history/$1/diff/prev/$2|Els vostres canvis]] al [[Special:AbuseFilter/$1|filtre $3]] s'han desat correctament.",
+ "abusefilter-edit-badsyntax": "Hi ha un error de sintaxi en el filtre que heu especificat.\nLa producció de l'analitzador era:<pre>$1</pre>",
+ "abusefilter-edit-restricted": "No podeu modificar aquest filtre perquè conté una o més accions restringides.\nDemaneu a un usuari amb permís per a afegir accions restringides que faci el canvi.",
+ "abusefilter-edit-viewhistory": "Mostra l'historial d'aquest filtre",
+ "abusefilter-edit-history": "Historial:",
+ "abusefilter-edit-check": "Comprova la sintaxi",
+ "abusefilter-edit-badfilter": "El filtre especificat no existeix",
+ "abusefilter-edit-revert": "Reverteix les accions realitzades per aquest filtre",
+ "abusefilter-edit-tools": "Eines:",
+ "abusefilter-edit-test-link": "Prova aquest filtre amb les edicions recents",
+ "abusefilter-edit-export": "Exporta aquest filtre a un altre wiki",
+ "abusefilter-edit-syntaxok": "No s'han detectat errors de sintaxi.",
+ "abusefilter-edit-syntaxerr": "S'ha detectat un error de sintaxi: $1",
+ "abusefilter-edit-bad-tags": "Una o més de les etiquetes que heu especificat no és vàlida.\nLes etiquetes han de ser curtes, no han de contenir caràcters especials i no han d'estar reservades per un altre programa. Proveu-ho amb un altre nom.",
+ "abusefilter-edit-notallowed": "No teniu permisos per crear o modificar filtres d'abusos",
+ "abusefilter-edit-notallowed-global": "No teniu permís per crear o editar els filtres d’abusos globals",
+ "abusefilter-edit-builder-select": "Seleccionau una opció per afegir-la al cursor",
+ "abusefilter-edit-builder-group-op-arithmetic": "Operadors aritmètics",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Suma (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Resta (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Multiplicació (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Divisió (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Mòdul (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Potència (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Operadors de comparació",
+ "abusefilter-edit-builder-op-comparison-equal": "Igual a (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Diferent a (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "Menor que (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Major que (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Menor o igual que (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Major o igual que (>=)",
+ "abusefilter-edit-builder-group-op-bool": "Operadors booleans",
+ "abusefilter-edit-builder-op-bool-not": "No (!)",
+ "abusefilter-edit-builder-op-bool-and": "I (&)",
+ "abusefilter-edit-builder-op-bool-or": "O (|)",
+ "abusefilter-edit-builder-group-misc": "Miscel·lània",
+ "abusefilter-edit-builder-misc-in": "contingut a la cadena (in)",
+ "abusefilter-edit-builder-misc-like": "Coincideix amb el patró (like)",
+ "abusefilter-edit-builder-misc-rlike": "Coincideix amb l'expressió regular (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "Coincideix amb expressions regulars,no en majúscules i minúscules (irlike)",
+ "abusefilter-edit-builder-misc-contains": "La cadena de l'esquerra conté la cadena de la dreta (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "Cadena literal (\"\")",
+ "abusefilter-edit-builder-misc-tern": "Operador ternari (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "Condicional (si X llavors Y sinó Z)",
+ "abusefilter-edit-builder-group-funcs": "Funcions",
+ "abusefilter-edit-builder-funcs-length": "Longitud de la cadena (length)",
+ "abusefilter-edit-builder-funcs-lcase": "A minúscules (lcase)",
+ "abusefilter-edit-builder-funcs-ucase": "A majúscules (ucase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "Normalitza els caràcters que es poden confondre (ccnorm)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "Treu els doble-caràcters (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "Caràcters especials / caràcters totals (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "Normalitza (norm)",
+ "abusefilter-edit-builder-funcs-count": "Nombre de vegades que la cadena X apareix dins la cadena Y (count)",
+ "abusefilter-edit-builder-funcs-rcount": "Nombre de vegades regex x apareix en cadena Y (rcount)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "Elimina els espais en blanc (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "Suprimeix els caràcters especials (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "Està la IP dins l’interval? (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "Cerca Cadena per a subcadenes múltiples (contains_any)",
+ "abusefilter-edit-builder-funcs-substr": "Subcadena (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "Posició de la subcadena a la cadena (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "Reemplaçar subcadena per cadena (str_replace)",
+ "abusefilter-edit-builder-funcs-set_var": "Defineix variable (set_var)",
+ "abusefilter-edit-builder-group-vars": "Variables",
+ "abusefilter-edit-builder-vars-accountname": "Nom del compte (a la creació del compte)",
+ "abusefilter-edit-builder-vars-timestamp": "Datació Unix del canvi",
+ "abusefilter-edit-builder-vars-action": "Acció",
+ "abusefilter-edit-builder-vars-addedlines": "Línies afegides en l'edició",
+ "abusefilter-edit-builder-vars-delta": "Canvi de mida en l'edició",
+ "abusefilter-edit-builder-vars-diff": "Dif. unificat dels canvis fets en l'edició",
+ "abusefilter-edit-builder-vars-newsize": "Mida nova de la pàgina",
+ "abusefilter-edit-builder-vars-oldsize": "Mida anterior de la pàgina",
+ "abusefilter-edit-builder-vars-removedlines": "Línies eliminades en la modificació",
+ "abusefilter-edit-builder-vars-summary": "Resum de l'edició",
+ "abusefilter-edit-builder-vars-article-id": "ID de la pàgina",
+ "abusefilter-edit-builder-vars-article-ns": "Espai de noms de la pàgina",
+ "abusefilter-edit-builder-vars-article-text": "Nom de la pàgina (sense espai de noms)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Nom complet de la pàgina",
+ "abusefilter-edit-builder-vars-article-views": "Vistes de la pàgina",
+ "abusefilter-edit-builder-vars-movedfrom-id": "ID de la pàgina de la font del moviment",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "Espai pel nom de la pàgina font a traslladar",
+ "abusefilter-edit-builder-vars-movedfrom-text": "Títol de la pàgina font del moviment",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "Títol Complet de la pàgina font del moviment",
+ "abusefilter-edit-builder-vars-movedto-id": "ID de la pàgina de destinació del moviment",
+ "abusefilter-edit-builder-vars-movedto-ns": "Nom de l’espai de la pàgina de destinació del moviment",
+ "abusefilter-edit-builder-vars-movedto-text": "Títol de la pàgina de destinació del moviment",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "Títol Complet de la pàgina de destinació del moviment",
+ "abusefilter-edit-builder-vars-user-editcount": "Comptador d'edicions de l'usuari",
+ "abusefilter-edit-builder-vars-user-age": "Antiguitat del compte d'usuari",
+ "abusefilter-edit-builder-vars-user-name": "Nom del compte d'usuari",
+ "abusefilter-edit-builder-vars-user-groups": "Grups (inclosos els implícits) als que pertany l'usuari",
+ "abusefilter-edit-builder-vars-user-rights": "Permisos que té un usuari",
+ "abusefilter-edit-builder-vars-user-blocked": "Si l'usuari està blocat",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "Temps des de la confirmació de l'adreça de correu electrònic",
+ "abusefilter-edit-builder-vars-recent-contributors": "Darrers deu usuaris que han contribuït a la pàgina",
+ "abusefilter-edit-builder-vars-all-links": "Tots els enllaços externs al nou text",
+ "abusefilter-edit-builder-vars-added-links": "Tots els enllaços externs afegits en l'edició",
+ "abusefilter-edit-builder-vars-removed-links": "Tots els enllaços externs esborrats en l'edició",
+ "abusefilter-edit-builder-vars-old-text": "Text anterior de la pàgina, abans de l'edició",
+ "abusefilter-edit-builder-vars-new-text": "Nou text de la pàgina, després de l'edició",
+ "abusefilter-edit-builder-vars-new-text-stripped": "Nova pàgina de text, sense cap format",
+ "abusefilter-edit-builder-vars-new-html": "Font HTML analitzada de la nova revisió",
+ "abusefilter-edit-builder-vars-restrictions-edit": "Nivell de protecció per a edicions de la pàgina",
+ "abusefilter-edit-builder-vars-restrictions-move": "Nivell de protecció per a reanomenaments de la pàgina",
+ "abusefilter-edit-builder-vars-restrictions-create": "Nivell de protecció per a la creació de la pàgina",
+ "abusefilter-edit-builder-vars-restrictions-upload": "Nivell de protecció per carregar un fitxer",
+ "abusefilter-edit-builder-vars-old-text-stripped": "Antiga pàgina de text, sense qualsevol format",
+ "abusefilter-edit-builder-vars-old-links": "Enllaços a la pàgina, abans de l'edició",
+ "abusefilter-edit-builder-vars-old-html": "Antiga pàgina de wikitext, passada a HTML",
+ "abusefilter-edit-builder-vars-minor-edit": "Si l'edició s'ha marcat com a menor o no",
+ "abusefilter-edit-builder-vars-file-sha1": "Identificació SHA1 dels continguts de l'arxiu",
+ "abusefilter-filter-log": "Canvis recents als filtres",
+ "abusefilter-history": "Historial de les modificacions del filtre d'abusos #$1",
+ "abusefilter-history-foruser": "Canvis per $1",
+ "abusefilter-history-hidden": "Amagat",
+ "abusefilter-history-enabled": "Activat",
+ "abusefilter-history-global": "Global",
+ "abusefilter-history-timestamp": "Data",
+ "abusefilter-history-user": "Usuari",
+ "abusefilter-history-public": "Descripció pública del filtre",
+ "abusefilter-history-flags": "Marques:",
+ "abusefilter-history-filter": "Regla de filtrat",
+ "abusefilter-history-comments": "Comentaris",
+ "abusefilter-history-actions": "Accions",
+ "abusefilter-history-backedit": "Torna a l'editor de filtres",
+ "abusefilter-history-deleted": "Eliminat",
+ "abusefilter-history-filterid": "Filtre",
+ "abusefilter-history-select-legend": "Afina la cerca",
+ "abusefilter-history-select-user": "Usuari:",
+ "abusefilter-history-select-submit": "Afina",
+ "abusefilter-history-diff": "Canvis",
+ "abusefilter-history-error-hidden": "El filtre que heu demanat s’ha amagat, i no podeu veure’n l’historial.",
+ "abusefilter-exception-unexpectedatend": "Inesperat \"$2\" al caràcter $1.",
+ "abusefilter-exception-expectednotfound": "S'esperava un $2 a les de caràcter $1 , que no es troba (s'ha trobat $3 $4 en el seu lloc).",
+ "abusefilter-exception-unrecognisedkeyword": "Paraula clau no reconeguda $2 al caràcter $1 .",
+ "abusefilter-exception-unexpectedtoken": "Element inesperat \"$3\" (del tipus $2) al caràcter $1.",
+ "abusefilter-exception-unclosedstring": "Cadena no tancada que comença al caràcter $1.",
+ "abusefilter-exception-invalidoperator": "Operador no vàlid \"$2\" al caràcter $1.",
+ "abusefilter-exception-unrecognisedtoken": "No es reconeix el símbol \"$2\" al caràcter $1.",
+ "abusefilter-exception-noparams": "No hi ha paràmetres donats a la funció \"$2\" al caràcter $1.",
+ "abusefilter-exception-dividebyzero": "Intent il·legal per dividir $2 per zero al caràcter $1.",
+ "abusefilter-exception-unrecognisedvar": "Variable no reconeguda $2 al caràcter $1",
+ "abusefilter-exception-notenoughargs": "No hi ha prou arguments per funcionar $2 anomenat a caràcter $1 .\n\tEspera que $3 {{PLURAL:$3| argument|arguments}}, got $4",
+ "abusefilter-exception-regexfailure": "Error en l'expressió regular \"$3\" al caràcter $1: \"$2\"",
+ "abusefilter-exception-overridebuiltin": "Anul·lació incorrecta de la variable incorporada «$2» al caràcter $1.",
+ "abusefilter-exception-outofbounds": "S'està sol·licitant l'element inexistent llista $2 (llista de mida = $3 ) a les de caràcter $1 .",
+ "abusefilter-exception-notlist": "Sol. licitant element de matriu de no-matriu a caràcter $1 .",
+ "abusefilter-action-tag": "Etiqueta",
+ "abusefilter-action-throttle": "Limitador",
+ "abusefilter-action-warn": "Avisa",
+ "abusefilter-action-blockautopromote": "Bloca la promoció automàtica",
+ "abusefilter-action-block": "Bloca",
+ "abusefilter-action-degroup": "Elimina dels grups",
+ "abusefilter-action-rangeblock": "Interval del blocatge",
+ "abusefilter-action-disallow": "No permetre",
+ "abusefilter-revert-title": "Reverteix tots els canvis fets pel filtre $1",
+ "abusefilter-revert-intro": "Aquest formulari permet vostè tornar tots els canvis realitzats pel filtre d'abús a causa de filtre de $1 .\nSi us plau, l'exercici cura en l'ús d'aquesta eina.",
+ "abusefilter-revert-preview-item": "$1: $2 made a $3 on $4.\nAccions de ser tornat: $5 ( $6 )",
+ "abusefilter-revert-search-legend": "Selecciona les accions del filtre d'abusos per revertir",
+ "abusefilter-revert-periodstart": "Inici del període:",
+ "abusefilter-revert-periodend": "Fi del període:",
+ "abusefilter-revert-search": "Seleccionau les accions",
+ "abusefilter-revert-filter": "Filtre:",
+ "abusefilter-revert-preview-intro": "A continuació es presenten les mesures adoptades pel filtre d'abús que es revertiran amb aquesta acció.\nComproveu-les amb cura i feu clic a \"{{int:abusefilter-revert-confirm}}\" per a confirmar la vostra selecció.",
+ "abusefilter-revert-confirm": "Confirma",
+ "abusefilter-revert-success": "Heu revertit totes les accions del filtre d'abusos generades pel [[Special:AbuseFilter/$1|filtre $2]].",
+ "abusefilter-revert-reason": "Automatic tornar de totes les mesures adoptades pel filtre d'abús a causa de filtre de $1 .\nMotiu donat:$2",
+ "abusefilter-revert-reasonfield": "Motiu:",
+ "abusefilter-test": "Prova un filtre contra les edicions anteriors",
+ "abusefilter-test-intro": "Aquesta pàgina us permet comprovar un filtre entrar en el camp de sota respecte els últims $1 {{PLURAL:$1|canvi|canvis}}.\nPer carregar un filtre existent, escriviu el seu número d'identificació en el camp sota la caixa de text i cliqueu el botó \"{{int:abusefilter-test-load}}\".",
+ "abusefilter-test-legend": "Prova de filtre",
+ "abusefilter-test-load-filter": "Carrega el filtre número:",
+ "abusefilter-test-submit": "Prova",
+ "abusefilter-test-load": "Carrega",
+ "abusefilter-test-user": "Canvis per usuari:",
+ "abusefilter-test-period-start": "Canvis fets després de:",
+ "abusefilter-test-period-end": "Canvis fets abans de:",
+ "abusefilter-test-page": "Canvis fets a la pàgina:",
+ "abusefilter-test-shownegative": "Mostra els canvis que no coincideixen amb el filtre",
+ "abusefilter-test-syntaxerr": "El filtre que heu escrit conté un error de sintaxi.\nVostè pot rebre una explicació completa fent clic al botó de \"{{int:abusefilter-edit-check}}\".",
+ "abusefilter-test-badtitle": "El títol de la pàgina que heu introduït no era vàlid. Pot contenir un o més caràcters que no es poden utilitzar en els títols.",
+ "abusefilter-changeslist-examine": "examinar",
+ "abusefilter-examine": "Examinar els canvis individuals",
+ "abusefilter-examine-intro": "Aquesta pàgina us permet examinar les variables generades pel filtre d'abusos per a una modificació concreta i provar-les amb els filtres.",
+ "abusefilter-examine-legend": "Seleccioneu els canvis",
+ "abusefilter-examine-diff": "Adreça URL de diferències:",
+ "abusefilter-examine-user": "Usuari:",
+ "abusefilter-examine-title": "Títol de la pàgina:",
+ "abusefilter-examine-submit": "Cerca",
+ "abusefilter-examine-vars": "Variables generades per aquest canvi",
+ "abusefilter-examine-test": "Prova aquest canvi contra un filtre",
+ "abusefilter-examine-test-button": "Prova el filtre",
+ "abusefilter-examine-match": "El filtre va marcar aquest canvi.",
+ "abusefilter-examine-nomatch": "El filtre no va marcar aquest canvi.",
+ "abusefilter-examine-syntaxerror": "El filtre té una sintaxi no vàlida",
+ "abusefilter-examine-notfound": "El canvi que heu demanat no es pot trobar.",
+ "abusefilter-examine-incompatible": "El canvi que heu demanat no és compatible amb el filtre d'abusos",
+ "abusefilter-examine-noresults": "No s'ha trobat cap resultat per als paràmetres de cerca que heu proporcionat.",
+ "abusefilter-topnav": "'''Navegació del filtre d’abusos'''",
+ "abusefilter-topnav-home": "Inici",
+ "abusefilter-topnav-test": "Test en sèrie",
+ "abusefilter-topnav-examine": "Examinar les edicions",
+ "abusefilter-topnav-log": "Registre d'abusos",
+ "abusefilter-topnav-tools": "Eines de depuració",
+ "abusefilter-topnav-import": "Importa un filtre",
+ "abusefilter-log-name": "Registre del filtre d’abusos",
+ "abusefilter-log-header": "Aquest registre mostra un resum dels canvis fets als filtres.\nPer a més detalls, vegeu [[Special:AbuseFilter/history|la llista]] de canvis recents dels filtres.",
+ "abusefilter-log-noresults": "No hi ha resultats",
+ "abusefilter-diff-title": "Diferències entre versions",
+ "abusefilter-diff-item": "Ítem",
+ "abusefilter-diff-version": "Versió de $1 {{GENDER:$3|per}} $2",
+ "abusefilter-diff-info": "Informació bàsica",
+ "abusefilter-diff-pattern": "Condicions del filtre",
+ "abusefilter-diff-invalid": "No es pot portar les versions sol·licitada",
+ "abusefilter-diff-backhistory": "Torna a l'historial del filtre",
+ "abusefilter-diff-prev": "Vell canvi",
+ "abusefilter-diff-next": "Nou canvi",
+ "abusefilter-import-intro": "Podeu utilitzar aquesta interfície per importar filtres d'altres wikis.\nEn el wiki d'origen, feu clic a «{{int:abusefilter-edit-export}}» sota «{{int:abusefilter-edit-tools}}» en la interfície d'edició.\nCopieu del quadre de text que apareix i enganxeu-lo a aquest quadre de text, a continuació feu clic a «{{int:abusefilter-import-submit}}».",
+ "abusefilter-import-submit": "Importa dades",
+ "abusefilter-group-default": "Per defecte",
+ "abusefilter-http-error": "S’ha produït un error d’HTTP: $1.",
+ "apihelp-query+abusefilters-param-prop": "Quines propietats obtenir.",
+ "apihelp-query+abusefilters-example-1": "Llista els filtres públics habilitats",
+ "apihelp-query+abusefilters-example-2": "Mostra alguns detalls dels filtres"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/ce.json b/www/wiki/extensions/AbuseFilter/i18n/ce.json
new file mode 100644
index 00000000..4d1df95f
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/ce.json
@@ -0,0 +1,362 @@
+{
+ "@metadata": {
+ "authors": [
+ "Sasan700",
+ "Умар",
+ "Исмаил Садуев",
+ "Matma Rex"
+ ]
+ },
+ "abusefilter-desc": "Нисдарийн тӀе литтарш тоха йиш хуьлуьйту.",
+ "abusefilter": "Зулам луьттург нисдар",
+ "abuselog": "Зуламаш долу тéптар",
+ "abusefilter-intro": "Марша догӀийла, зулам луьттурган Урхаллин агӀон тӀе.\nЗулам луьттург, декъашхоша деш долу, зуламан дуьхьала, шаьшха болх бо гӀирс бу.\nКхузахь балийна, массо а, литтарийн могӀам, хийца аьтто а болуш.",
+ "abusefilter-mustbeeditor": "Кхерамазаллин Ӏалашонца, зулам луьттургаш хийца йиш йолу декъашхойн бен, бакъо яц хӀара интерфейс лело.",
+ "abusefilter-warning": "''Тидаме'''. ХӀара динарг, шаьшха къастийна ца оьшуш санна.\nХӀоттам боцу нийсдарш хира ду, сиха дӀадаьхна,\nморса йа, дуккха хӀоттам боцу нийсдарш дича, хьан декъашхочун дӀаяздар ле IP-адресна блоктухур ю.\nХьо тешна валахь, хӀара нийсдара хӀоттам болуш хиларна, юхаъ «ДӀайахьийта» тӀе таӀа йе.\nАш дечуьнца догӀуш хилар бакъонца билгалла даьккхина: $1",
+ "abusefilter-disallowed": "ХӀара динарг, шаьшха зуламе санна къастийна,\nцун дера ца магийна.\nНагахь, шу тешна делахь, хӀара нийсдар хӀоттам болуш хиларна, дехар до, куьйгалхочуьнга дийцар, шу дан гӀертарг.\nЗуламах лаьцна хаам, аш дечуьнца догӀуш хилар билгалла даьккхина: $1",
+ "abusefilter-blocked-display": "ХӀара дешдерг автоматически зулам санна билгалдина,\nхьуна и кхочушдан ца маго.\nЦул совнаха ларор Ӏалашонца {{grammar:genitive|{{SITENAME}}}} хьан дӀаздарна а цуьнца долу IP-адресна а блоктоьхна.\nХьайна и иштта дац аьлла хетахь, дехар до куьйгалхочунга язде.\nБилгалйина литтаран зуламах доца лаьцна, хӀинца ахьа динчух: $1",
+ "abusefilter-blocker": "Зулам луьттург",
+ "abusefilter-blockreason": "Зулам литтаро автоматически блоктоьхна. Цунах лаьцна: $1",
+ "abusefilter-degroupreason": "Зулам литтаро бакъонаш авто-схьаяьхна. Бакъонах лаьцна: $1",
+ "abusefilter-accountreserved": "ХӀара декъашхочун дӀаяздар билгал дина зулам литтаро лела да.",
+ "right-abusefilter-modify": "зулам литтаран хийцам",
+ "right-abusefilter-view": "зулам литтарршка хьажар",
+ "right-abusefilter-log": "зулам литтаран тептаре хьажар",
+ "right-abusefilter-log-detail": "зулам литтаран тептар чура ма-дарра долу дӀаяздаршка хьажар",
+ "right-abusefilter-private": "Долара хаамашка тептар чохь хьажар",
+ "right-abusefilter-modify-restricted": "дихкина долу зулам литтарш хийцар",
+ "right-abusefilter-revert": "зулам литтарс бина хийцамаш юхабахар",
+ "right-abusefilter-view-private": "къайлаха долу зуламан литтаршка хьажар",
+ "right-abusefilter-log-private": "Зулам литтаран тептар чура долахь хилар билгал дина долу дӀаяздаршка хьажар",
+ "right-abusefilter-hide-log": "зулам литтаран тептар чура къайлаха долу дӀаяздаршка хьажар",
+ "right-abusefilter-hidden-log": "зулам литтаран тептар чура къайлаха долу дӀаяздаршка хьажар",
+ "right-abusefilter-modify-global": "зулам литтарш кхоллар я хийцар",
+ "action-abusefilter-modify": "зулам литтаран хийцам бан",
+ "action-abusefilter-view": "зулам литтарршка хьажар",
+ "action-abusefilter-log": "зулам литтаран тептаре хьажар",
+ "action-abusefilter-log-detail": "зулам литтаран тептаре ма-дарра долу хьажар",
+ "action-abusefilter-private": "зулам литтаран тептар чура долара хаамашка хьажар",
+ "action-abusefilter-modify-restricted": "дихкина долу зулам литтарш хийцар",
+ "action-abusefilter-revert": "зулам литтарс бина хийцамаш юхабаха",
+ "action-abusefilter-view-private": "къайлаха долу зулам литтаршка хьажар",
+ "abusefilter-log": "Зулам литтаран тептар",
+ "abusefilter-log-summary": "ХӀокху тептар чохь гойту литтаран карийнарш.",
+ "abusefilter-log-search": "Зуламан тептар чохь лахар",
+ "abusefilter-log-search-user": "Декъашхо:",
+ "abusefilter-log-search-filter": "ID литтаран:",
+ "abusefilter-log-search-title": "Корта:",
+ "abusefilter-log-search-wiki": "Википроект:",
+ "abusefilter-log-search-submit": "Лахар",
+ "abusefilter-log-entry": "$1: $2 зулам литтаре болх балийтина, дийнарг «$3» агӀона $4 чохь.\nКхочушъ дийнарг: $5.\nЛиттарах лаьцна: $6",
+ "abusefilter-log-entry-withdiff": "$1: $2 зулам литтаре болх балийтина, дийнарг «$3» агӀона $4 чохь.\nКхочушъ дийнарг: $5.\nЛиттарах лаьцна: $6 ($7)",
+ "abusefilter-log-detailedentry-meta": "$1: $2 болх бола балийтина $3, дийнарг «$4» агӀона $5 чохь.\nКхочушъ дийнарг: $6.\nЛиттарах лаьцна: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "глобальни луьттург $1",
+ "abusefilter-log-detailedentry-local": "луьттург $1",
+ "abusefilter-log-detailslink": "мадарра",
+ "abusefilter-log-diff": "хийц.",
+ "abusefilter-log-hidelink": "схьагар нисде",
+ "abusefilter-log-details-legend": "$1 тептаран дӀаяздаршка ма-дарра хьажар",
+ "abusefilter-log-details-var": "Хийцаме",
+ "abusefilter-log-details-val": "МаьӀна",
+ "abusefilter-log-details-vars": "Дечунна параметраш",
+ "abusefilter-log-details-private": "Долара хаамаш",
+ "abusefilter-log-details-ip": "ДӀадохуьйту IP-адрес",
+ "abusefilter-log-noactions": "цаоьшу",
+ "abusefilter-log-details-diff": "Нисдар чохь бина хийцамаш",
+ "abusefilter-log-linkoncontribs": "зуламаш долу тéптар",
+ "abusefilter-log-linkoncontribs-text": "ХӀокху декъашхочун тептар чур зуламан дӀаяздарш",
+ "abusefilter-log-hidden": "(дӀаяздар хьулдина)",
+ "abusefilter-log-hidden-implicit": "(нисдар дӀадаккхар бахьнехь хьулдина)",
+ "abusefilter-log-cannot-see-details": "ХӀокху дӀаяздаре мадарра хьажа хьа бакъо яц.",
+ "abusefilter-log-details-hidden": "Хьокху дӀаяздаре мадарра хьажа хьа таро яц и хьулдар бахьнехь.",
+ "abusefilter-log-hide-legend": "Къайладаккха тептар чура дӀаяздар",
+ "abusefilter-log-hide-id": "Тептаран ID дӀаяздарш:",
+ "abusefilter-log-hide-hidden": "Къайладаккха хӀара дӀаяздар",
+ "abusefilter-log-hide-reason": "Бахьана:",
+ "abusefilter-log-hide-forbidden": "Зуламан тептар чура дӀаяздарш къайладаха хьа бакъо яц.",
+ "abusefilter-logentry-suppress": "къайладаккха [[$1]]",
+ "abusefilter-logentry-unsuppress": "гайта [[$1]]",
+ "logentry-abusefilter-hit": "$1 {{#gender:$1|болх бола балийтина}} литтаре $4, кхочушъ дийнарг «$5» агӀона $3 чохь. Дийнарг: $6 ($7)",
+ "abusefilter-management": "Зулам литтаран урхалла",
+ "abusefilter-list": "Дерриг литтарш",
+ "abusefilter-list-id": "ID литтаран",
+ "abusefilter-list-status": "Хьал",
+ "abusefilter-list-public": "Массарна гуш долу дийцар",
+ "abusefilter-list-consequences": "ТӀаьхье",
+ "abusefilter-list-visibility": "Гуш хилар",
+ "abusefilter-list-hitcount": "Болх бар",
+ "abusefilter-list-edit": "Нисъе",
+ "abusefilter-list-details": "Мадарра",
+ "abusefilter-list-limit": "Дукхалла:",
+ "abusefilter-list-lastmodified": "Тlаьххьара хийцамаш",
+ "abusefilter-list-group": "Литтаран тоба",
+ "abusefilter-hidden": "Къайладаьккхинарг",
+ "abusefilter-unhidden": "Массарна лело йиш йолуш",
+ "abusefilter-enabled": "Юкъадалийна",
+ "abusefilter-deleted": "ДӀаяьккхина",
+ "abusefilter-disabled": "ДӀадайина",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|болх бар}}",
+ "abusefilter-new": "Кхолла керла луьттург",
+ "abusefilter-return": "Юха гӀо литтарийн урхале",
+ "abusefilter-status-global": "Глобальни",
+ "abusefilter-list-options": "Параметраш",
+ "abusefilter-list-options-deleted": "ДӀадаьхина долу литтарш:",
+ "abusefilter-list-options-deleted-only": "ДӀадаьхина литтарш бен ца гойту",
+ "abusefilter-list-options-deleted-hide": "ДӀадяхина литтарш дӏахьулданн",
+ "abusefilter-list-options-deleted-show": "Гайта дӀадаьхина литтарш",
+ "abusefilter-list-options-scope": "Гайта литтарш чура:",
+ "abusefilter-list-options-scope-local": "ХӀара википроект",
+ "abusefilter-list-options-scope-global": "Глобальни бакъонаш",
+ "abusefilter-list-options-scope-all": "Локальни а, глобальни а бакъонаш",
+ "abusefilter-list-options-disabled": "ДӀадайина литтарш:",
+ "abusefilter-list-options-hidedisabled": "ДӀадайина литтарш дӀахьулданн",
+ "abusefilter-list-options-searchoptions": "Лахаран раж:",
+ "abusefilter-list-options-submit": "Карлаяккха",
+ "abusefilter-tools-text": "Кхузахь бу зулуман литтарш кепе дало гӀо деш болу гӀисрсаш.",
+ "abusefilter-tools-expr": "Гайтам хьажар",
+ "abusefilter-tools-submitexpr": "Луьттург зен",
+ "abusefilter-tools-reautoconfirm": "МеттахӀотае статус «autoconfirmed»",
+ "abusefilter-tools-reautoconfirm-user": "Декъашхо:",
+ "abusefilter-tools-reautoconfirm-submit": "Юху ша тӀелацар",
+ "abusefilter-reautoconfirm-none": "ХӀокху {{GENDER:$1|декъашхочун}} дӀаяздар ша бакъдеш йолу статус йолуш ю.",
+ "abusefilter-reautoconfirm-notallowed": "Шабакъдар статус меттахӀотто хьуна ца магийна.",
+ "abusefilter-reautoconfirm-done": "Декъашхочун дӀаяздар шабакъаран статус меттахӀоттина.",
+ "abusefilter-status": "$1 нах {{PLURAL:$1|1=тӀехьара динарг|тӀехьара динарш}}, $2 ($3%) {{PLURAL:$2|нисделла}} литтаран дӀакъовлар чу хӀокху $4 хьолехь, кхин $5 ($6%) {{PLURAL:$5|цхьаьнадогӀуш}} ду хӀинца долуш долу цхьан литтаран дӀакъовларца.",
+ "abusefilter-edit": "Зулам литтаран хийцамбар",
+ "abusefilter-edit-subtitle": "Литтаран хийцам $1",
+ "abusefilter-edit-subtitle-new": "Литтаран хьал",
+ "abusefilter-edit-status-label": "Статистика:",
+ "abusefilter-edit-status": "{{PLURAL:$1|ТӀеххьара $1 диначух}}, хӀара луьттург цхьаьнайогӀуш ю $2 ($3%).",
+ "abusefilter-edit-status-profile": "{{PLURAL:$1|ТӀехьара $1 диначух|ТӀехьара $1 диначарах|ТӀехьара $1 диначарах}}, хӀара литтар цхьаьнадогӀуш ду $2 ($3%).\nЦунна белхан юккъера хан — $4 мс, иза цхьаьнайогӀуш ю $5 {{PLURAL:$5|хьолаца}}.",
+ "abusefilter-edit-new": "Керла луьттург",
+ "abusefilter-edit-save": "Ӏалашъе луьттург",
+ "abusefilter-edit-id": "ID литтаран",
+ "abusefilter-edit-description": "Цуьнах лаьцна:\n:''(Массарна гуш)''",
+ "abusefilter-edit-group": "Литтаран тоба:",
+ "abusefilter-edit-flags": "Байракхаш:",
+ "abusefilter-edit-enabled": "Доладалийта хӀара луьттург",
+ "abusefilter-edit-deleted": "Билгалъе дӀаяьккхина",
+ "abusefilter-edit-hidden": "Ма гайта ма-дарра бакъонаш йоцачу декъашхошна",
+ "abusefilter-edit-global": "глобальни луьттург",
+ "abusefilter-edit-rules": "Хьал:",
+ "abusefilter-edit-notes": "Билгалдахарш:",
+ "abusefilter-edit-lastmod": "Тlаьххьара литтаран хийцам:",
+ "abusefilter-edit-lastmod-text": "$1 — $2",
+ "abusefilter-edit-hitcount": "Литтаран болх бола балийтар:",
+ "abusefilter-edit-consequences": "Кхочушбеш болу барам",
+ "abusefilter-edit-action-warn": "Кхочушде декъашхочунга дӀахьедар динчултӀехьа",
+ "abusefilter-edit-action-disallow": "Бехкам-бе декъашхочо дечунна",
+ "abusefilter-edit-action-blockautopromote": "Схьаяккха декъашхочун дӀаяздар ша бакъдеш йолу статус",
+ "abusefilter-edit-action-degroup": "ДӀаваккха (яккха) декъашхо тобашан юкъар",
+ "abusefilter-edit-action-block": "Блоктоха декъашхочун я IP-адресан",
+ "abusefilter-edit-action-throttle": "Кхочушде декъашхочо тӀех дукха зулум деш делахь",
+ "abusefilter-edit-action-rangeblock": "Декъашхочо болхбеш йолу диапазонан /16 блоктоха.",
+ "abusefilter-edit-action-tag": "Билгалде нисдар кхин хьажа",
+ "abusefilter-edit-throttle-count": "Шордина динаршан дуккхалла:",
+ "abusefilter-edit-throttle-period": "Хенан дакъа:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|секунд}}",
+ "abusefilter-edit-warn-message": "ДӀахьедарна системин хаамаш:",
+ "abusefilter-edit-warn-other": "Кхин хаам",
+ "abusefilter-edit-warn-other-label": "Кхечу хааман агӀон цӀе:\n:''(MediaWiki префикс йоцуш)''",
+ "abusefilter-edit-warn-actions": "Дийраш:",
+ "abusefilter-edit-warn-preview": "Хаьржина хаам хьалха муха бу хьажар",
+ "abusefilter-edit-warn-edit": "Къайлабаккха/Хийца хаьржина хаам",
+ "abusefilter-edit-tag-tag": "Лелош йолу [[Special:Tags|билгалонаш]] (могӀанна цхьац):",
+ "abusefilter-edit-main": "Литтаран параметраш",
+ "abusefilter-edit-done-subtitle": "Луьттург нисйина",
+ "abusefilter-edit-done": "Ахьа [[Special:AbuseFilter/$1|$3 литтаран]] [[Special:AbuseFilter/history/$1/diff/prev/$2|хийцамаш]] кхиамца Ӏалашбина.",
+ "abusefilter-edit-viewhistory": "ХӀокху литтаран истори гайта",
+ "abusefilter-edit-history": "Истори:",
+ "abusefilter-edit-check": "Синтаксисе хьажа",
+ "abusefilter-edit-badfilter": "Ахьа билгалйина луьттург йоцуш ю",
+ "abusefilter-edit-tools": "ГӀирсаш:",
+ "abusefilter-edit-test-link": "Хьажа литтаре керла нисдарш дуй",
+ "abusefilter-edit-export": "Экспорт де хӀара луьттург кхечу вики чу",
+ "abusefilter-edit-syntaxok": "Синтаксисан гӀалаташ ца карийна.",
+ "abusefilter-edit-syntaxerr": "Синтаксисан гӀалаташ карийна: $1",
+ "abusefilter-edit-notallowed-global": "Хьан бакъонаш яц зулам литтарш кхолла я хийца",
+ "abusefilter-edit-builder-select": "ТӀетоха харжа пункт",
+ "abusefilter-edit-builder-group-op-arithmetic": "Арифметикан оператораш",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Вовшахтохар (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "ТӀерадаккхар (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Дебор (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Декъар (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Модуль (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Барам (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Дустаран оператораш",
+ "abusefilter-edit-builder-op-comparison-equal": "Хуьлурш (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Хуьлурш дац (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "КӀезиг (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Цул (>) дуккха",
+ "abusefilter-edit-builder-op-comparison-lte": "Къезиг я нийса (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Дуккха я нийса (>=)",
+ "abusefilter-edit-builder-group-op-bool": "Боолен оператораш",
+ "abusefilter-edit-builder-op-bool-not": "Дац (!)",
+ "abusefilter-edit-builder-op-bool-and": "А (&)",
+ "abusefilter-edit-builder-op-bool-or": "Я (|)",
+ "abusefilter-edit-builder-op-bool-xor": "Юкъарайохурш Я (^)",
+ "abusefilter-edit-builder-group-misc": "Тайп-тайпанара",
+ "abusefilter-edit-builder-misc-in": "МогӀан (in) чохь ю",
+ "abusefilter-edit-builder-misc-like": "Кепац (like) ма-доггӀу",
+ "abusefilter-edit-builder-misc-rlike": "Рожера дош (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "Регистр (irlike) ца лоруш рожера могӀанца догӀуш",
+ "abusefilter-edit-builder-misc-contains": "Харцахьара могӀан чохь бу бакъахьара могӀа (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "МогӀанан дош (\"\")",
+ "abusefilter-edit-builder-misc-tern": "Тернаран оператор (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "Хьал (if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "Функцеш",
+ "abusefilter-edit-builder-funcs-length": "МогӀан бохалла (length)",
+ "abusefilter-edit-builder-funcs-lcase": "Лахара регистр (lcase)",
+ "abusefilter-edit-builder-funcs-ucase": "Лакхара регистр",
+ "abusefilter-edit-builder-funcs-ccnorm": "Дукху маьӀнаш долу символаш (ccnorm) нисяр",
+ "abusefilter-edit-builder-funcs-rmdoubles": "Цхьатерра символаш (rmdoubles) дӀаяхар",
+ "abusefilter-edit-builder-funcs-specialratio": "Леррина символаш / массо символаш (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "ЛартӀа далор (norm)",
+ "abusefilter-edit-builder-funcs-count": "Бухара могӀан юькъатухучера дукхалла X могӀан чохь Y (count)",
+ "abusefilter-edit-builder-funcs-rmspecials": "ДӀаяха леррина символаш (rmspecials)",
+ "abusefilter-edit-builder-funcs-contains-any": "МогӀанан юкъахь ю кхунах (contains_any) муьлха цхьаъ",
+ "abusefilter-edit-builder-funcs-substr": "Бухара могӀа (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "(strpos) могӀамехь могӀа болу меттиг",
+ "abusefilter-edit-builder-funcs-str_replace": "(str_replace) могӀамехь бухара могӀа хийцар",
+ "abusefilter-edit-builder-funcs-set_var": "ДӀахӀоттае хийцалун (set_var)",
+ "abusefilter-edit-builder-group-vars": "Хийцаме",
+ "abusefilter-edit-builder-vars-accountname": "Декъашхочун дӀаяздаран цӀе (кхуллучу хенахь)",
+ "abusefilter-edit-builder-vars-timestamp": "Хийцам бина Unix-хан",
+ "abusefilter-edit-builder-vars-action": "Дийраш",
+ "abusefilter-edit-builder-vars-addedlines": "ТӀетоьхна могӀамаш",
+ "abusefilter-edit-builder-vars-delta": "Нисдаро хийцина барам (йокхаллин)",
+ "abusefilter-edit-builder-vars-diff": "Унифицировани хийцамашан нисдаран башхала",
+ "abusefilter-edit-builder-vars-newsize": "АгӀонан керла барам",
+ "abusefilter-edit-builder-vars-oldsize": "АгӀонан шира барам",
+ "abusefilter-edit-builder-vars-removedlines": "ДӀадаьхна могӀамаш",
+ "abusefilter-edit-builder-vars-summary": "Нисдарах лаьцна",
+ "abusefilter-edit-builder-vars-article-id": "АгӀона ID",
+ "abusefilter-edit-builder-vars-article-ns": "АгӀона цӀерийн меттиг",
+ "abusefilter-edit-builder-vars-article-text": "АгӀона цӀе (цӀерийн меттиг йоцуш)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "АгӀона юьзина цӀе",
+ "abusefilter-edit-builder-vars-article-views": "АгӀонашка хьовсийна",
+ "abusefilter-edit-builder-vars-movedfrom-id": "ЦӀе хуьйцуш йолу агӀонан ID",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "ЦӀе хуьйцуш йолу агӀонан цӀерийн меттиг",
+ "abusefilter-edit-builder-vars-movedfrom-text": "ЦӀе хуьйцуш йолу агӀона цӀе",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "ЦӀе хуьйцуш йолу агӀона юьззина цӀе",
+ "abusefilter-edit-builder-vars-movedto-id": "ЦӀе хуьйцуш йолу Ӏалашонан агӀонан ID",
+ "abusefilter-edit-builder-vars-movedto-ns": "ЦӀе хуьйцуш йолу коьрта агӀонан цӀерийн меттиг",
+ "abusefilter-edit-builder-vars-movedto-text": "ЦӀе хуьйцуш йолу коьрта агӀона цӀе",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "ЦӀе хуьйцуш йолу коьрта агӀона юьззина цӀе",
+ "abusefilter-edit-builder-vars-user-editcount": "Декъашхочун нисдарийн дукхалла",
+ "abusefilter-edit-builder-vars-user-age": "Декъашхочун дӀаяздаран хан",
+ "abusefilter-edit-builder-vars-user-name": "Декъашхочун цӀе",
+ "abusefilter-edit-builder-vars-user-groups": "Декъашхочун тобанаш",
+ "abusefilter-edit-builder-vars-user-rights": "Декъашхочун йолу бакъонаш",
+ "abusefilter-edit-builder-vars-user-blocked": "Блоктоьхна юй",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "Электронан поштан адрес бакъдина хан",
+ "abusefilter-edit-builder-vars-recent-contributors": "ТӀаьххьара агӀона хийцамаш бина итт декъашхо",
+ "abusefilter-edit-builder-vars-first-contributor": "Дуьххьара агӀонгахь къахьегнарг",
+ "abusefilter-edit-builder-vars-all-links": "Йозанан арахьара хьажоргаш",
+ "abusefilter-edit-builder-vars-added-links": "Нисдар чохь тӀетоьхина ерриге арахьара хьажоргаш",
+ "abusefilter-edit-builder-vars-removed-links": "Нисдар чохь дӀаяхна арахьара хьажоргаш",
+ "abusefilter-edit-builder-vars-old-text": "Шира викийоза, агӀо нисяле",
+ "abusefilter-edit-builder-vars-new-text": "Керла викийоза, агӀо нисйинчул тӀехьа",
+ "abusefilter-edit-builder-vars-new-text-stripped": "АгӀона керла йоза, цӀандина билгалонах",
+ "abusefilter-edit-builder-vars-new-html": "Керла версин вовшахъяккхина HTML-код",
+ "abusefilter-edit-builder-vars-restrictions-edit": "АгӀона нисдарийн дуьхьала диначу гӀораллийн барам",
+ "abusefilter-edit-builder-vars-restrictions-move": "АгӀона цӀе хийца ца яйта диначу гӀораллийн барам",
+ "abusefilter-edit-builder-vars-restrictions-create": "АгӀо кхолларна гӀорала",
+ "abusefilter-edit-builder-vars-restrictions-upload": "Файл чуяхар лардар",
+ "abusefilter-edit-builder-vars-old-links": "Нисяле хийла хьажоргаш",
+ "abusefilter-edit-builder-vars-minor-edit": "«Жима хийцам» аьлла билгала дина дуй нисдар",
+ "abusefilter-filter-log": "Литтаран тӀаьххьара бина хийцамаш",
+ "abusefilter-history": "Зулам литтаран хийцамашан истори #$1",
+ "abusefilter-history-foruser": "Хийцамаш бина $1",
+ "abusefilter-history-hidden": "къайлаяьккхина",
+ "abusefilter-history-enabled": "юкъадалийна",
+ "abusefilter-history-global": "Глобальни",
+ "abusefilter-history-timestamp": "Хан",
+ "abusefilter-history-user": "Декъашхо",
+ "abusefilter-history-public": "Литтаран тӀекхочуш болу хаам",
+ "abusefilter-history-flags": "Байракхаш",
+ "abusefilter-history-filter": "Литтаран бакъонаш",
+ "abusefilter-history-comments": "Къамелаш",
+ "abusefilter-history-actions": "Дийраш",
+ "abusefilter-history-backedit": "ЮхагӀо луьттург таечу",
+ "abusefilter-history-deleted": "ДӀаяьккхина",
+ "abusefilter-history-filterid": "Луьттург",
+ "abusefilter-history-select-legend": "Лахар дӀанисдар",
+ "abusefilter-history-select-user": "Декъашхо:",
+ "abusefilter-history-select-submit": "Билгалдаккха",
+ "abusefilter-history-diff": "Хийцамаш",
+ "abusefilter-exception-unrecognisedkeyword": "Дойзуш доцу оьшуш долу дош $2 оцу меттигца $1.",
+ "abusefilter-exception-unexpectedtoken": "Евзаш йоцу знак «$3» (тайп: $2) оцу $1 меттигца.",
+ "abusefilter-exception-unrecognisedtoken": "Евзаш йоцу знак «$2» оцу $1 меттигца.",
+ "abusefilter-action-tag": "Билгало",
+ "abusefilter-action-throttle": "Гатдар",
+ "abusefilter-action-warn": "ДӀахьедар",
+ "abusefilter-action-blockautopromote": "Авто леларна блоктоха",
+ "abusefilter-action-block": "Блоктохар",
+ "abusefilter-action-degroup": "Тобан чура дӀадаккхар",
+ "abusefilter-action-rangeblock": "Диапазонан блоктохар",
+ "abusefilter-action-disallow": "ДӀадайар",
+ "abusefilter-revert-title": "$1 литтарс бина массо хийцамаш юха баха",
+ "abusefilter-revert-search-legend": "Юхадаккха деза зуламан литтаро динарг харжа",
+ "abusefilter-revert-periodstart": "Муьран юьхь:",
+ "abusefilter-revert-periodend": "Муьран чаккхе:",
+ "abusefilter-revert-search": "Харжа дийриг",
+ "abusefilter-revert-filter": "Луьттург:",
+ "abusefilter-revert-confirm": "Бакъдан",
+ "abusefilter-revert-reasonfield": "Бахьана:",
+ "abusefilter-test": "Литтаран нисдарш хьажа",
+ "abusefilter-test-intro": "ХӀокху агӀорахь хьан йиш ю лахахь гайтинчу {{PLURAL:$1|1=тӀехьарчу $1 хийцаман|тӀехьарчу $1 хийцамашан}} луьттургаш хьажа.\nДолуш долу луьттург чуяккха тадаран коран лахахь дӀаязде цуьнан ID тӀакха тӀетаӀе кнопка «{{int:abusefilter-test-load}}»",
+ "abusefilter-test-legend": "Литтаре хьажар",
+ "abusefilter-test-load-filter": "Чудаккха луьттург ID тӀера:",
+ "abusefilter-test-submit": "Хьажа",
+ "abusefilter-test-load": "Чуяккха",
+ "abusefilter-test-user": "Декъашхочо бина хийцамаш:",
+ "abusefilter-test-period-start": "ТӀаьхьа хийцамаш бина хан:",
+ "abusefilter-test-period-end": "Хьалхо хийцамаш бина хан:",
+ "abusefilter-test-page": "Хийцамаш бийна агӀо:",
+ "abusefilter-test-shownegative": "Литтаран юкъахь боцу хийцамаш гайта",
+ "abusefilter-changeslist-examine": "хьажа",
+ "abusefilter-examine": "Хийцамашка къестош хьажар",
+ "abusefilter-examine-intro": "ХӀокху агӀоно йиш хуьлуьйту зулуман литтаро кхолийна хийцамашка хьажа нисдарш къестош.",
+ "abusefilter-examine-legend": "Хийцам харжар",
+ "abusefilter-examine-diff": "URL версин башхалла:",
+ "abusefilter-examine-user": "Декъашхо:",
+ "abusefilter-examine-title": "АгӀона корта:",
+ "abusefilter-examine-submit": "Лахар",
+ "abusefilter-examine-vars": "ХӀокху хийцаман кхоьллина хийцалун",
+ "abusefilter-examine-test": "Хьажа хӀокху хийцаме луьттург чохь",
+ "abusefilter-examine-test-button": "Хьажа литтаре",
+ "abusefilter-examine-match": "ХӀара хийцам литтаран юкъа богӀу.",
+ "abusefilter-examine-nomatch": "ХӀара хийцам литтаран юкъа ца богӀу.",
+ "abusefilter-examine-syntaxerror": "Литтаран синтаксийн гӀалат",
+ "abusefilter-examine-notfound": "Ахьа билгалбина хийцам каро йиш яц.",
+ "abusefilter-examine-incompatible": "Ахьа билгалбина хийцам зуламан литтаро ловш бац",
+ "abusefilter-examine-noresults": "Жоп дехарца хӀума ца карийна оцу параметаршца.",
+ "abusefilter-topnav": "Зуламан литтаран навигаци",
+ "abusefilter-topnav-home": "Юьхьигé",
+ "abusefilter-topnav-test": "Зеран гулам",
+ "abusefilter-topnav-examine": "Хийцамашка къестош хьажар",
+ "abusefilter-topnav-log": "Зуламаш долу тéптар",
+ "abusefilter-topnav-tools": "Нисяран гӀирс",
+ "abusefilter-topnav-import": "Литтаран импорт",
+ "abusefilter-log-name": "Зулам литтаран тептар",
+ "abusefilter-log-header": "ХӀокху тептар чохь гойту литтаран чохь бина хийцамаш.\nМадарра [[Special:AbuseFilter/history|хьажа тӀеххьара бина литтаран хийцамашка]].",
+ "abusefilter-log-noresults": "ХӀума ца карийна",
+ "abusefilter-diff-title": "Версийн башхалла",
+ "abusefilter-diff-item": "Элемент",
+ "abusefilter-diff-version": "{{GENDER:$3|Декъашхочун}} $2 верси цу $1 хан",
+ "abusefilter-diff-info": "АгӀонан хаам",
+ "abusefilter-diff-pattern": "Литтаран хьал",
+ "abusefilter-diff-invalid": "Йохуш йолу версеш схьаэца цало",
+ "abusefilter-diff-backhistory": "ЮхагӀо литтаран истори йолче",
+ "abusefilter-diff-prev": "Шира хийцамаш",
+ "abusefilter-diff-next": "Керла хийцамаш",
+ "abusefilter-import-intro": "ХӀокху агӀонехь хьан йиш ю кхечу вики чура литтарш импорт дан.\nДӀайолалун вики чохь «{{int:abusefilter-edit-tools}}» чохь тӀетаӀе «{{int:abusefilter-edit-export}}».\nЧулацаман копи якхкхе хӀокху агӀона чу йилина тӀетаӀе «{{int:abusefilter-import-submit}}».",
+ "abusefilter-import-submit": "Хаамаш импорт бе",
+ "abusefilter-group-default": "Ӏадйитаран кеп",
+ "abusefilter-http-error": "Даьлла гӀалат HTTP: $1",
+ "apihelp-query+abusefilters-param-prop": "Муьлха билгалонаш оьшуш ю.",
+ "apihelp-query+abuselog-param-prop": "Муьлха билгалонаш оьшуш ю.",
+ "apihelp-query+abuselog-example-1": "Гайта тептар чура тӀеххьара дӀаяздарш",
+ "apihelp-query+abuselog-example-2": "Гайта [[API]] тептар чура тӀеххьара дӀаяздарш"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/ckb.json b/www/wiki/extensions/AbuseFilter/i18n/ckb.json
new file mode 100644
index 00000000..acbf97ca
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/ckb.json
@@ -0,0 +1,243 @@
+{
+ "@metadata": {
+ "authors": [
+ "Asoxor",
+ "Calak",
+ "Pirehelokan",
+ "Matma Rex",
+ "Sarchia",
+ "Muhammed taha"
+ ]
+ },
+ "abuselog": "پاڵوێنەی کەڵکاوەژوو",
+ "abusefilter-intro": "بەخێربێی بۆ پەڕەی بەڕیوەبردنی پاڵوێنەی کەڵکاوەژوو.\nپاڵوێنەی کەڵکاوەژوو ڕێوشوێنێکی نەرمامێرییە بۆ بەکاربردنی پێزانینە خۆگەڕەکان لە سەر ھەموو کردەوەکان.\nئەم پەڕەیە پێرستی ھەموو پاڵوێنەکان نیشان دەدات و ڕێگە دەدات گۆڕانکارییان تێدا بکرێت.",
+ "abusefilter-blocker": "پاڵوێنەی کەڵکاوەژوو",
+ "abusefilter-accountreserved": "ئەم ناوە بەکارھێنەرییە بۆ کەڵک وەرگرتن لە پاڵوێنەی کەڵکاوەژوودا گیراوەتەوە.",
+ "right-abusefilter-modify": "دەستکاریی پاڵوێنەکانی کەڵکاوەژوو",
+ "right-abusefilter-view": "دیتنی پاڵوێنەکانی کەڵکاوەژوو",
+ "right-abusefilter-log": "دیتنی لۆگی کەڵکاوەژوو",
+ "right-abusefilter-log-detail": "دیتنی وردەکارییەکانی بابەتەکانی لۆگی کەڵکاوەژوو",
+ "right-abusefilter-modify-restricted": "دەستکاریی پاڵوێنەکانی کەڵکاوەژوو بە کردەوە سنووردارکەرەکان",
+ "right-abusefilter-revert": "گەڕاندنەوەی ھەموو گۆڕانکارییەکان لە لایەن پاڵوێنەیەکی کەڵکاوەژووی دەستنیشان‌کراو",
+ "right-abusefilter-view-private": "دیتنی پاڵوێنەکانی کەڵکاوەژووی نیشانکراو وەک تایبەتی",
+ "right-abusefilter-log-private": "دیتنی لۆگی داکراوەکانی پاڵوێنەکانی کەڵکاوەژووی نیشانکراو وەک تایبەتی",
+ "right-abusefilter-hide-log": "شاردنەوەی بابەتەکانی لۆگی کەڵکاوەژوو",
+ "right-abusefilter-hidden-log": "دیتنی بابەتە شاردراوەکانی لۆگی کەڵکاوەژوو",
+ "action-abusefilter-modify": "دەستکاریی پاڵوێنەکانی کەڵکاوەژوو",
+ "action-abusefilter-view": "دیتنی پاڵوێنەکانی کەڵکاوەژوو",
+ "action-abusefilter-log": "دیتنی لۆگی کەڵکاوەژوو",
+ "abusefilter-log": "لۆگی پاڵوێنەی کەڵکاوەژوو",
+ "abusefilter-log-summary": "ئەم لۆگە پێرستێک لە ھەموو کردەوەکانی پاڵوێنەکان نیشان دەدات.",
+ "abusefilter-log-search": "گەڕانی لۆگی کەڵکاوەژوو",
+ "abusefilter-log-search-user": "بەکارھێنەر:",
+ "abusefilter-log-search-filter": "پێناسەی پاڵوێنە:",
+ "abusefilter-log-search-title": "ناونیشان:",
+ "abusefilter-log-search-wiki": "ویکی:",
+ "abusefilter-log-search-submit": "بگەڕێ",
+ "abusefilter-log-entry": "$1: $2 پاڵوێنەیەکی کەڵکاوەژووی چالاککرد، خەریکی کردەوەی «$3» لەسەر $4 بوو.\nکردەوەی بەڕێوەچوو: $5؛\nتێبینیی پاڵوێنە: $6",
+ "abusefilter-log-detailedentry-meta": "$1: $2 $3ی چالاککرد، خەریکی کردەوەی «$4» لەسەر $5 بوو.\nکردەوەی بەڕێوەچوو: $6؛\nتێبینیی پاڵوێنە: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "پاڵوێنەی سەرانسەریی $1",
+ "abusefilter-log-detailedentry-local": "پاڵوێنەی $1",
+ "abusefilter-log-detailslink": "وردەکارییەکان",
+ "abusefilter-log-diff": "جیاوازی",
+ "abusefilter-log-details-legend": "وردەکارییەکان بۆ لۆگی بابەتی $1",
+ "abusefilter-log-details-var": "بگۆڕ",
+ "abusefilter-log-details-val": "نرخ",
+ "abusefilter-log-details-vars": "پارامەترەکانی کردەوە",
+ "abusefilter-log-details-private": "زانیاریی تاکەکەسی",
+ "abusefilter-log-noactions": "ھیچ",
+ "abusefilter-log-linkoncontribs": "پاڵوێنەی کەڵکاوەژوو",
+ "abusefilter-log-linkoncontribs-text": "پاڵوێنەی کەڵکاوەژوو بۆ ئەم بەکارھێنەرە",
+ "abusefilter-log-hidden": "(بابەتی شاردراو)",
+ "abusefilter-log-hidden-implicit": "(شاردراوەتەوە چون پێداچوونەوە سڕدراوەتەوە)",
+ "abusefilter-log-cannot-see-details": "ناتوانی وردەکارییەکانی ئەم بابەتە ببینی.",
+ "abusefilter-log-details-hidden": "ناتوانی وردەکارییەکانی ئەم بابەتە ببینی، چونکوو لەبەر چاوی گشتی شاردراوەتەوە.",
+ "abusefilter-log-hide-legend": "لوگی بابەت بشارەوە",
+ "abusefilter-log-hide-hidden": "وردەکارییەکانی ئەم بابەتە لە بەرچاوی گشتی لا ببە",
+ "abusefilter-log-hide-reason": "هۆکار:",
+ "abusefilter-log-hide-forbidden": "ناتوانی بابەتەکانی لۆگی کەڵکاوەژوو بشارییەوە.",
+ "abusefilter-logentry-suppress": "\"[[$1]]\"ی شاردەوە",
+ "abusefilter-logentry-unsuppress": "\"[[$1]]\"ی ئاشکرا کرد",
+ "logentry-abusefilter-hit": "$1 $4ی چالاککرد، خەریکی کردەوەی «$5» لەسەر $3 بوو. کردەوەی بەڕێوەچوو: $6 ($7)",
+ "abusefilter-management": "بەڕێوەبردنی پاڵوێنەی کەڵکاوەژوو",
+ "abusefilter-list": "ھەموو پاڵوێنەکان",
+ "abusefilter-list-id": "پێناسەی پاڵوێنە",
+ "abusefilter-list-status": "ڕەوش",
+ "abusefilter-list-public": "تێبینیی گشتی",
+ "abusefilter-list-consequences": "ئاکام",
+ "abusefilter-list-visibility": "دەرکەوتن",
+ "abusefilter-list-hitcount": "ژمارەی ئەنگاوتن",
+ "abusefilter-list-edit": "دەستکاری",
+ "abusefilter-list-details": "وردەکارییەکان",
+ "abusefilter-list-limit": "ژمارە لە پەڕەیەکەدا",
+ "abusefilter-list-lastmodified": "دوایین دەستکاری",
+ "abusefilter-list-group": "گرووپی پاڵوێنە",
+ "abusefilter-hidden": "تایبەتی",
+ "abusefilter-unhidden": "گشتی",
+ "abusefilter-enabled": "ڕێگەپێدراو",
+ "abusefilter-deleted": "سڕدراو",
+ "abusefilter-disabled": "ڕێگەپێنەدراو",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|جار|جار}}",
+ "abusefilter-new": "پاڵوێنەیەکی نوێ دروست بکە",
+ "abusefilter-return": "بگەڕێوە بۆ بەڕێوبەرایەتیی پاڵوێنە",
+ "abusefilter-status-global": "سەرانسەری",
+ "abusefilter-list-options": "ھەڵبژاردەکان",
+ "abusefilter-list-options-deleted": "پاڵوێنە سڕدراوەکان:",
+ "abusefilter-list-options-deleted-only": "تەنیا پاڵوێنە سڕدراوەکان نیشان بدە",
+ "abusefilter-list-options-deleted-hide": "پاڵوێنە سڕدراوەکان بشارەوە",
+ "abusefilter-list-options-deleted-show": "پاڵوێنە سڕدراوەکان لەخۆبگرەوە",
+ "abusefilter-list-options-scope": "پاڵوێنەکان نیشان بدە:",
+ "abusefilter-list-options-scope-local": "تەنھا ڕێسا خۆماڵییەکان",
+ "abusefilter-list-options-disabled": "پاڵوێنە ناچالاکەکان:",
+ "abusefilter-list-options-hidedisabled": "پاڵوێنە ناچالاکەکان بشارەوە",
+ "abusefilter-list-options-submit": "نوێکردنەوە",
+ "abusefilter-tools-text": "لێرەدا ھەندێک ئامراز ھەیە کە لەوانەیە بەکەڵک بێت بۆ ڕێسلمەندکردن و سڕینەوەی ھەڵەکانی پاڵوێنەکانی کەڵکاوەژوو.",
+ "abusefilter-tools-expr": "تاقیکەری دەستەواژە",
+ "abusefilter-tools-submitexpr": "ھەڵسەنگاندن",
+ "abusefilter-tools-reautoconfirm": "گەڕاندنەوەی ڕەوشی پەسندکراوی خۆگەڕ",
+ "abusefilter-tools-reautoconfirm-user": "بەکارھێنەر:",
+ "abusefilter-edit-subtitle": "دەستکاریی پاڵوێنەی $1",
+ "abusefilter-edit-subtitle-new": "دروستکردنی پاڵوێنە",
+ "abusefilter-edit-status-label": "ئامارەکان:",
+ "abusefilter-edit-status": "لە دوایین $1 {{PLURAL:$1|کردەوە}}دا، ئەم پاڵوێنەیە لەگەڵ $2 ($3٪) گونجاوە.",
+ "abusefilter-edit-status-profile": "لە دوایین $1 {{PLURAL:$1|کردەوە}}دا، ئەم پاڵوێنەیە لەگەڵ $2 ($3٪) گونجاوە.\nبە شێوەی ناونجی، کاتی جێبەجێبوونی $4 میلی چرکەیە و $5 {{PLURAL:$5|مەرج}} لە سنووری مەرجی بەکاربردووە.",
+ "abusefilter-edit-new": "پاڵوێنەیەکی نوێ",
+ "abusefilter-edit-save": "پاڵوێنە پاشەکەوت بکە",
+ "abusefilter-edit-id": "پێناسەی پاڵوێنە:",
+ "abusefilter-edit-description": "وەسف:\n:''(بۆ ھەموو کەس دەبینرێ)''",
+ "abusefilter-edit-group": "گرووپی پاڵوێنە:",
+ "abusefilter-edit-flags": "ئاڵاکان:",
+ "abusefilter-edit-enabled": "ئەم پاڵوێنەیە چالاک بکە",
+ "abusefilter-edit-deleted": "وەک سڕدراو دیاریی بکە",
+ "abusefilter-edit-hidden": "وردەکارییەکانی ئەم پاڵوێنەیە لەبەر چاوی گشتی لا ببە",
+ "abusefilter-edit-global": "پاڵوێنەی سەرانسەری",
+ "abusefilter-edit-rules": "مەرجەکان:",
+ "abusefilter-edit-notes": "تێبینییەکان:",
+ "abusefilter-edit-lastmod": "پاڵوێنە دواجار گۆڕدراوە لە:",
+ "abusefilter-edit-lastmod-text": "$1 بەدەستی $2",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|چرکە|چرکە}}",
+ "abusefilter-edit-warn-message": "پەیامی سیستەم بۆ بەکارھێنان لە وشیارکردنەوەدا:",
+ "abusefilter-edit-warn-other": "پەیامی تر",
+ "abusefilter-edit-warn-other-label": "ناوی پەڕەی پەیامی تر:\n:''(بێ پێشگری میدیاویکی)''",
+ "abusefilter-edit-warn-actions": "کردەوەکان:",
+ "abusefilter-edit-warn-preview": "پێشبینینی پەیامی ھەڵبژێردراو نیشانبدە",
+ "abusefilter-edit-warn-edit": "پەیامی ھەڵبژێردراو دروست/دەستکاری بکە",
+ "abusefilter-edit-tag-tag": "[[Special:Tags|تاگەکان]] بۆ چەسپاندن (ھەر کامیان لە دێڕێکدا):",
+ "abusefilter-edit-denied": "ناتوانی وردەکارییەکانی ئەم پاڵوێنەیە ببینی، چونکوو لەبەر چاوی گشتی شاردراوەتەوە.",
+ "abusefilter-edit-main": "پارامەترەکانی پاڵوێنە",
+ "abusefilter-edit-done-subtitle": "پاڵوێنە دەستکاری کرا",
+ "abusefilter-edit-done": "سەرکەوتووانە [[Special:AbuseFilter/history/$1/diff/prev/$2|گۆڕانکارییەکانت]] لە [[Special:AbuseFilter/$1|پاڵوێنەی $3]]دا پاشەکەوت کرا.",
+ "abusefilter-edit-badsyntax": "ھەڵەیەکی ڕێنووسی ھەیە لەو پاڵوێنەیە دەستنیشانت کردوە.\nدەرھاتی پاڵوێنە ئەمە بوو: <pre>$1</pre>",
+ "abusefilter-edit-viewhistory": "مێژووی ئەم پاڵوێنەیە ببینە",
+ "abusefilter-edit-history": "مێژوو:",
+ "abusefilter-edit-check": "ڕێزمان تاوتوێ بکە",
+ "abusefilter-edit-badfilter": "ئەو پاڵوێنەیە دەستنیشانت کردووە بوونی نیە.",
+ "abusefilter-edit-revert": "ئەو کردارانە بە دەستی ئەم پاڵوێنە ڕووی داوە وەربگێڕەوە",
+ "abusefilter-edit-tools": "ئامرازەکان:",
+ "abusefilter-edit-test-link": "ئەم پاڵوێنەیە لەسەر دوایین گۆڕانکارییەکاندا تاقی بکەوە",
+ "abusefilter-edit-export": "ئەم پاڵوێنەیە ھەناردە بکە بۆ ویکییەکی تر",
+ "abusefilter-edit-syntaxok": "ھیچ ھەڵەیەکی ڕێزمان نەدۆزرایەوە.",
+ "abusefilter-edit-syntaxerr": "ھەڵەی ڕێزمانی دۆزراو: $1",
+ "abusefilter-edit-notallowed": "ناتوانی پاڵوێنەکانی کەڵکاوەژوو دروست با دەستکاری بکەی",
+ "abusefilter-edit-builder-group-op-arithmetic": "کردارەکان حیسابکردن",
+ "abusefilter-edit-builder-op-arithmetic-addition": "کۆکردنەوە (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "لێدەرکردن (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "لێکدان (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "دابەشکردن (/)",
+ "abusefilter-edit-builder-group-op-comparison": "کردارەکانی ھەڵسەنگاندن",
+ "abusefilter-edit-builder-op-comparison-equal": "بەرامبەرە لەگەڵ (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "بەرامبەر نییە لەگەڵ (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "کەمتر لە (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "گەورەتر لە (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "کەمتر یان بەرامبەر لەگەڵ (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "گەورەتر لە یان بەرامبەر لەگەڵ (>=)",
+ "abusefilter-edit-builder-op-bool-and": "و (&)",
+ "abusefilter-edit-builder-op-bool-or": "یان (|)",
+ "abusefilter-edit-builder-group-misc": "جۆربەجۆر",
+ "abusefilter-edit-builder-group-vars": "بگۆڕەکان",
+ "abusefilter-edit-builder-vars-accountname": "ناوی ھەژمار (لە کاتی دروستکردنی ھەژمار)",
+ "abusefilter-edit-builder-vars-action": "کردەوە",
+ "abusefilter-edit-builder-vars-addedlines": "دێڕە زیادکراوەکان لە دەستکاریدا",
+ "abusefilter-edit-builder-vars-delta": "گۆڕانکاریی قەبارە لە دەستکاریدا",
+ "abusefilter-edit-builder-vars-newsize": "قەبارەی نوێی پەڕە",
+ "abusefilter-edit-builder-vars-oldsize": "قەبارەی کۆنی پەڕە",
+ "abusefilter-edit-builder-vars-summary": "کورتەی دەستکاری/ھۆکار",
+ "abusefilter-edit-builder-vars-article-id": "پێناسەی پەڕە",
+ "abusefilter-edit-builder-vars-article-ns": "بۆشاییی ناوی پەڕە",
+ "abusefilter-edit-builder-vars-article-text": "سەرناوی پەڕە (بەبێ بۆشاییی ناو)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "سەرناوی تەواوی پەڕە",
+ "abusefilter-edit-builder-vars-user-editcount": "ژمارەی دەستکارییەکانی بەکارھێنەر",
+ "abusefilter-edit-builder-vars-user-age": "تەمەنی ھەژماری بەکارھێنەر",
+ "abusefilter-edit-builder-vars-user-name": "ناوی ھەژماری بەکارھێنەر",
+ "abusefilter-filter-log": "دوایین گۆڕانکارییەکانی پاڵوێنە",
+ "abusefilter-history": "مێژووی گۆڕانکاری بۆ پاڵوێنەی کەڵکاوەژوو #$1",
+ "abusefilter-history-foruser": "گۆڕانکارییەکان لە لایەن $1",
+ "abusefilter-history-hidden": "شاراوە",
+ "abusefilter-history-enabled": "ڕێگەپێدراو",
+ "abusefilter-history-global": "سەرانسەری",
+ "abusefilter-history-timestamp": "کات",
+ "abusefilter-history-user": "بەکارھێنەر",
+ "abusefilter-history-public": "وەسفی پاڵوێنەی گشتی",
+ "abusefilter-history-flags": "ئاڵاکان",
+ "abusefilter-history-filter": "یاساکانی پاڵوێنە",
+ "abusefilter-history-comments": "بۆچوونەکان",
+ "abusefilter-history-actions": "کردارەکان",
+ "abusefilter-history-backedit": "گەڕانەوە بۆ دەستکاریکردنی پاڵوێنە",
+ "abusefilter-history-deleted": "سڕدراو",
+ "abusefilter-history-filterid": "پاڵوێنە",
+ "abusefilter-history-select-legend": "باشکردنەوەی گەڕان",
+ "abusefilter-history-select-user": "بەکارھێنەر:",
+ "abusefilter-history-select-submit": "چاکسازی",
+ "abusefilter-history-diff": "گۆڕانکارییەکان",
+ "abusefilter-action-tag": "تاگ",
+ "abusefilter-action-throttle": "سنووردارێتیی خێرایی",
+ "abusefilter-action-warn": "ھۆشدار",
+ "abusefilter-action-block": "بەربەستن",
+ "abusefilter-action-degroup": "لایبە لە گرووپەکان",
+ "abusefilter-action-rangeblock": "بەربەستنی چوارچێوەیەک",
+ "abusefilter-action-disallow": "بەرگرتن",
+ "abusefilter-revert-title": "ھەموو گۆڕانکارییەکان لە لایەن پاڵوێنەی $1ەوە بگەڕێنەوە",
+ "abusefilter-revert-search": "ھەڵبژاردنی کردەوەکان",
+ "abusefilter-revert-filter": "پاڵوێنە:",
+ "abusefilter-revert-confirm": "پشتدار بکەرەوە",
+ "abusefilter-revert-reasonfield": "ھۆکار:",
+ "abusefilter-test": "ئەم پاڵوێنەیە لەسەر دەستکارییەکانی پێشوو تاقی بکەوە",
+ "abusefilter-test-legend": "تاقیکردنەوەی پاڵوێنە",
+ "abusefilter-test-load-filter": "بارکردنی پێناسەی پاڵوێنە:",
+ "abusefilter-test-submit": "تاقیکردنەوە",
+ "abusefilter-test-load": "باربکە",
+ "abusefilter-test-user": "گۆڕانکارییەکانی بەکارھێنەر:",
+ "abusefilter-test-period-start": "گۆڕانکارییەکانی پاش:",
+ "abusefilter-test-period-end": "گۆڕانکارییەکانی پێش:",
+ "abusefilter-test-page": "گۆڕانکارییەکانی پەڕەی:",
+ "abusefilter-changeslist-examine": "تاقیکردنەوە",
+ "abusefilter-examine": "تاقیکردنەوەی یەکەیەکەی گۆڕانکارییەکان",
+ "abusefilter-examine-legend": "ھەڵبژاردنی گۆڕانکارییەکان",
+ "abusefilter-examine-diff": "ناونیشانی ئینتەرنێتی جیاوازی:",
+ "abusefilter-examine-user": "بەکارھێنەر:",
+ "abusefilter-examine-title": "سەرناوی پەڕە:",
+ "abusefilter-examine-submit": "گەڕان",
+ "abusefilter-examine-test": "تاقیکردنەوەی ئەم گۆڕانکارییە لەسەر پاڵوێنەیەک",
+ "abusefilter-examine-test-button": "تاقیکردنەوەی پاڵوێنە",
+ "abusefilter-examine-syntaxerror": "ڕێزمانی پاڵوێنە نادروستە.",
+ "abusefilter-topnav": "ڕێدۆزیی پاڵوێنەی کەڵکاوەژوو",
+ "abusefilter-topnav-home": "ماڵەوە",
+ "abusefilter-topnav-test": "تاقیکردنەوەی بەکۆمەڵ",
+ "abusefilter-topnav-examine": "تاقیکردنەوەی دەستکارییەکانی پێشوو",
+ "abusefilter-topnav-log": "لۆگی کەڵکاوەژوو",
+ "abusefilter-topnav-tools": "ئامرازەکانی سڕینەوەی کەموکووڕی",
+ "abusefilter-topnav-import": "ھاوردنی پاڵوێنە",
+ "abusefilter-log-name": "لۆگی پاڵوێنەی کەڵکاوەژوو",
+ "abusefilter-log-noresults": "هیچ ئەنجامێک نییە",
+ "abusefilter-diff-title": "جیاوازیی نێوان پێداچوونەوەکان",
+ "abusefilter-diff-item": "بابەت",
+ "abusefilter-diff-version": "پێداچوونەوە لە $1 {{GENDER:$3|لە لایەن}} $2",
+ "abusefilter-diff-info": "زانیاریی سەرەتایی",
+ "abusefilter-diff-pattern": "مەرجەکانی پاڵوێنە",
+ "abusefilter-diff-backhistory": "گەڕانەوە بۆ مێژووی پاڵوێنە",
+ "abusefilter-diff-prev": "گۆڕانکاریی کۆنتر",
+ "abusefilter-diff-next": "گۆڕانکاریی نوێتر",
+ "abusefilter-import-intro": "دەتوانی لەم پێوەندەرە بۆ ھاوردنی پاڵوێنەکان لە ویکییەکانی تردا کەڵک وەربگری.\nلە ویکیی ژێدەردا لە سەر «{{int:abusefilter-edit-export}}» لە ژێرەوەی «{{int:abusefilter-edit-tools}}» لە پێوەندەری دەستکاریدا کرتە بکە.\nدەقی ئەو بۆکسە کە دەردەکەوێ، کۆپی بکە ناو ئەم بۆکسەی ئێرەوە، پاشان لە سەر «{{int:abusefilter-import-submit}}» کرتە بکە.",
+ "abusefilter-import-submit": "ھاوردنی زانیاری",
+ "abusefilter-group-default": "بنچینەیی"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/co.json b/www/wiki/extensions/AbuseFilter/i18n/co.json
new file mode 100644
index 00000000..28b0f291
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/co.json
@@ -0,0 +1,12 @@
+{
+ "@metadata": {
+ "authors": [
+ "Paulu"
+ ]
+ },
+ "abusefilter-log-search-user": "Utilizatore:",
+ "abusefilter-list-edit": "Mudificà",
+ "abusefilter-edit-history": "Cronolugia:",
+ "abusefilter-history-user": "Utilizatore",
+ "abusefilter-examine-user": "Cuntributore:"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/crh-cyrl.json b/www/wiki/extensions/AbuseFilter/i18n/crh-cyrl.json
new file mode 100644
index 00000000..e9ccf3c1
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/crh-cyrl.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "Don Alessandro"
+ ]
+ },
+ "abusefilter-history-foruser": "$1 тарафындан япылгъан денъиштирмелер",
+ "abusefilter-topnav-home": "Баш саифе"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/crh-latn.json b/www/wiki/extensions/AbuseFilter/i18n/crh-latn.json
new file mode 100644
index 00000000..ca9e81b5
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/crh-latn.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "Don Alessandro"
+ ]
+ },
+ "abusefilter-history-foruser": "$1 tarafından yapılğan deñiştirmeler",
+ "abusefilter-topnav-home": "Baş saife"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/cs.json b/www/wiki/extensions/AbuseFilter/i18n/cs.json
new file mode 100644
index 00000000..d4203061
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/cs.json
@@ -0,0 +1,520 @@
+{
+ "@metadata": {
+ "authors": [
+ "Chmee2",
+ "Matěj Grabovský",
+ "Matěj Suchánek",
+ "Michaelbrabec",
+ "Mormegil",
+ "Paxt",
+ "Tchoř",
+ "Vks",
+ "Cvanca",
+ "Urbanecm",
+ "Matma Rex",
+ "Martin Urbanec",
+ "Dvorapa",
+ "Danny B.",
+ "Ilimanaq29",
+ "Patriccck"
+ ]
+ },
+ "abusefilter-desc": "Podrobuje editace automatickým heuristikám",
+ "abusefilter": "Konfigurace filtrů zneužití",
+ "abuselog": "Protokol zneužití",
+ "abusefilter-intro": "Vítejte v rozhraní pro správu filtrů zneužití.\nFiltry zneužití jsou automatický softwarový mechanismus, prostřednictvím kterého se všechny operace testují pomocí automatických heuristik.\nV tomto rozhraní můžete vidět seznam definovaných filtrů a měnit je.",
+ "abusefilter-mustbeeditor": "Z bezpečnostních důvodů mohou toto rozhraní používat pouze uživatelé s oprávněním spravovat filtry zneužití.",
+ "abusefilter-warning": "'''Upozornění:''' Tato činnost byla automaticky identifikována jako škodlivá.\nNeužitečné aktivity budou rychle revertovány, v&nbsp;opakovaných nebo závažných případech mohou být váš uživatelský účet či IP adresa zablokovány.\nPokud považujete svou editaci za správnou, můžete ji potvrdit opětovným kliknutím na Uložit změny.\nStručný popis pravidla, které vaši činnost označilo za škodlivou: $1",
+ "abusefilter-disallowed": "Tato činnost byla automaticky identifikována jako škodlivá, a&nbsp;proto zakázána.\nPokud považujete svou editaci za správnou, kontaktujte správce a&nbsp;sdělte jim, o&nbsp;co jste se {{GENDER:|snažil|snažila|snažili}}.\nStručný popis pravidla, které vaši činnost označilo za škodlivou: $1",
+ "abusefilter-blocked-display": "Tato činnost byla automaticky identifikována jako škodlivá, a&nbsp;proto vám bylo zabráněno v&nbsp;jejím provedení.\nKvůli ochraně {{grammar:2sg|{{SITENAME}}}} byla navíc vašemu uživatelskému účtu a&nbsp;všem s&nbsp;ním spojeným IP adresám zablokována možnost editace.\nPokud se domníváte, že se jedná o&nbsp;omyl, kontaktujte správce.\nStručný popis pravidla, které vaši činnost označilo za škodlivou: $1",
+ "abusefilter-degrouped": "Tato činnost byla automaticky identifikována jako škodlivá.\nByla proto zakázána a&nbsp;kvůli podezření na ohrožení vašeho uživatelského účtu vám byla odebrána všechna práva.\nPokud se domníváte, že se jedná o&nbsp;omyl, kontaktujte byrokrata s&nbsp;vysvětlením této činnosti a&nbsp;práva vám mohou být vrácena.\nStručný popis pravidla, které vaši činnost označilo za škodlivou: $1",
+ "abusefilter-autopromote-blocked": "Tato činnost byla automaticky identifikována jako škodlivá, a&nbsp;proto zakázána.\nJako bezpečnostní opatření byla navíc vašemu účtu dočasně odebrána některá oprávnění běžně přidělovaná všem zavedeným uživatelům.\nStručný popis pravidla, které vaši činnost označilo za škodlivou: $1",
+ "abusefilter-blocker": "Filtr zneužití",
+ "abusefilter-blockreason": "Automaticky zablokováno filtrem zneužití.\nPopis použitého pravidla: $1",
+ "abusefilter-degroupreason": "Práva automaticky odebrána filtrem zneužití.\nPopis pravidla: $1",
+ "abusefilter-accountreserved": "Toto uživatelské jméno je vyhrazeno pro filtr zneužití.",
+ "right-abusefilter-modify": "Upravování filtrů zneužití",
+ "right-abusefilter-view": "Prohlížení filtrů zneužití",
+ "right-abusefilter-log": "Prohlížení protokolu zneužití",
+ "right-abusefilter-log-detail": "Prohlížení podrobností v protokolu zneužití",
+ "right-abusefilter-private": "Prohlížení tajných údajů v protokolu zneužití",
+ "right-abusefilter-private-log": "Prohlížení záznamů přístupu k soukromým detailům filtrů zneužití",
+ "right-abusefilter-modify-restricted": "Upravování filtrů zneužití s omezenými opatřeními",
+ "right-abusefilter-revert": "Revertování všech změn provedených vybraným filtrem zneužití",
+ "right-abusefilter-view-private": "Prohlížení filtrů zneužití označených jako tajné",
+ "right-abusefilter-log-private": "Prohlížení protokolovacích záznamů filtrů zneužití označených jako tajné",
+ "right-abusefilter-hide-log": "Skrývání záznamů v protokolu zneužití",
+ "right-abusefilter-hidden-log": "Prohlížení skrytých záznamů v protokolu zneužití",
+ "right-abusefilter-modify-global": "Vytváření a editace globálních filtrů zneužití",
+ "action-abusefilter-modify": "upravovat filtry zneužití",
+ "action-abusefilter-view": "prohlížet si filtry zneužití",
+ "action-abusefilter-log": "prohlížet si protokol zneužití",
+ "action-abusefilter-log-detail": "prohlížet si podrobnosti v protokolu zneužití",
+ "action-abusefilter-private": "prohlížet si tajné údaje v protokolu zneužití",
+ "action-abusefilter-private-log": "prohlížet si záznamy přístupu k soukromým detailům filtrů zneužití",
+ "action-abusefilter-modify-restricted": "upravovat filtry zneužití s omezenými opatřeními",
+ "action-abusefilter-revert": "revertovat všechny změny provedené vybraným filtrem zneužití",
+ "action-abusefilter-view-private": "prohlížet si filtry zneužití označené jako tajné",
+ "action-abusefilter-log-private": "prohlížet protokoly filtrů zneužití označených jako tajné",
+ "abusefilter-log": "Protokol filtrů zneužití",
+ "abusefilter-log-summary": "Tento protokol obsahuje seznam všech operací zachycených filtry.",
+ "abusefilter-log-search": "Hledat v protokolu zneužití",
+ "abusefilter-log-search-user": "Uživatel:",
+ "abusefilter-log-search-filter": "ID filtrů (oddělte svislítky):",
+ "abusefilter-log-search-title": "Název:",
+ "abusefilter-log-search-wiki": "Wiki:",
+ "abusefilter-log-search-impact": "Účinek:",
+ "abusefilter-log-search-impact-all": "Všechny akce",
+ "abusefilter-log-search-impact-saved": "Pouze uložené změny",
+ "abusefilter-log-search-impact-not-saved": "Bez uložených změn",
+ "abusefilter-log-search-entries-label": "Viditelnost:",
+ "abusefilter-log-search-entries-all": "Všechny záznamy",
+ "abusefilter-log-search-entries-hidden": "Jen skryté záznamy",
+ "abusefilter-log-search-entries-visible": "Jen viditelné záznamy",
+ "abusefilter-log-search-action-taken-label": "Provedená akce:",
+ "abusefilter-log-search-action-taken-any": "Všechny",
+ "abusefilter-log-search-submit": "Hledat",
+ "abusefilter-log-entry": "$1: $2 {{GENDER:$8|spustil|spustila|spustil(a)}} filtr zneužití při činnosti „$3“ na $4.\nProvedená opatření: $5; popis filtru: $6",
+ "abusefilter-log-entry-withdiff": "$1: $2 {{GENDER:$8|spustil|spustila|spustil(a)}} filtr zneužití při činnosti „$3“ na $4.\nProvedená opatření: $5;\npopis filtru: $6 ($7)",
+ "abusefilter-log-detailedentry-meta": "$1: $2 {{GENDER:$9|spustil|spustila|spustil(a)}} $3 při činnosti „$4“ na $5.\nProvedená opatření: $6; popis filtru: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "globální filtr $1",
+ "abusefilter-log-detailedentry-local": "filtr $1",
+ "abusefilter-log-detailslink": "podrobnosti",
+ "abusefilter-log-diff": "rozdíl",
+ "abusefilter-log-hidelink": "upravit viditelnost",
+ "abusefilter-log-details-legend": "Podrobnosti záznamu $1",
+ "abusefilter-log-details-var": "Proměnná",
+ "abusefilter-log-details-val": "Hodnota",
+ "abusefilter-log-details-vars": "Parametry akce",
+ "abusefilter-log-details-private": "Soukromé detaily záznamu",
+ "abusefilter-log-details-ip": "Zdrojová IP adresa",
+ "abusefilter-log-details-checkuser": "Zkontrolovat uživatele",
+ "abusefilter-log-noactions": "žádná",
+ "abusefilter-log-details-diff": "Změny provedené editací",
+ "abusefilter-log-linkoncontribs": "protokol zneužití",
+ "abusefilter-log-linkoncontribs-text": "Protokol zneužití pro {{GENDER:$1|tohoto uživatele|tuto uživatelku}}",
+ "abusefilter-log-hidden": "(skrytý záznam)",
+ "abusefilter-log-hidden-implicit": "(skryto, protože byla odstraněna revize)",
+ "abusefilter-log-cannot-see-details": "Nemáte oprávnění k prohlížení podrobností tohoto záznamu.",
+ "abusefilter-log-cannot-see-private-details": "Nemáte dovoleno prohlížet si soukromé detaily tohoto záznamu.",
+ "abusefilter-log-nonexistent": "Záznam s uvedeným ID neexistuje.",
+ "abusefilter-log-details-hidden": "U tohoto záznamu si nemůžete prohlédnout podrobnosti, protože byly před veřejností skryty.",
+ "abusefilter-log-private-not-included": "Jeden nebo více filtrů uvedených ID jsou tajné. Protože nemáte dovoleno prohlížet si podrobnosti tajných filtrů, nebyly tyto filtry prohledávány.",
+ "abusefilter-log-hide-legend": "Skrýt záznam protokolu",
+ "abusefilter-log-hide-id": "ID záznamu:",
+ "abusefilter-log-hide-hidden": "Skrýt tento záznam před veřejností",
+ "abusefilter-log-hide-reason": "Důvod:",
+ "abusefilter-log-hide-reason-other": "Jiný/další důvod:",
+ "abusefilter-log-hide-forbidden": "Nemáte oprávnění ke skrývání záznamů v protokolu zneužití.",
+ "abusefilter-logentry-suppress": "skryl „[[$1]]“",
+ "abusefilter-logentry-unsuppress": "odkryl „[[$1]]“",
+ "logentry-abusefilter-hit": "$1 {{GENDER:$2|spustil|spustila|spustil(a)}} $4 při činnosti „$5“ na $3. Provedená opatření: $6 ($7)",
+ "log-action-filter-abusefilter": "Typ změny filtru:",
+ "log-action-filter-abusefilter-create": "Vytvoření nového filtru",
+ "log-action-filter-abusefilter-modify": "Úprava filtru",
+ "logentry-abusefilterprivatedetails-access": "$1 si {{GENDER:$2|prohlédl|prohlédla}} soukromé detaily k $3",
+ "abusefilterprivatedetails-log-name": "Kniha přístupů k soukromým detailům filtrů zneužití",
+ "abusefilter-management": "Správa filtrů zneužití",
+ "abusefilter-list": "Všechny filtry",
+ "abusefilter-list-id": "ID filtru",
+ "abusefilter-list-pattern": "Výraz",
+ "abusefilter-list-status": "Stav",
+ "abusefilter-list-public": "Veřejný popis",
+ "abusefilter-list-consequences": "Důsledky",
+ "abusefilter-list-visibility": "Viditelnost",
+ "abusefilter-list-hitcount": "Počet zásahů",
+ "abusefilter-list-edit": "Upravit",
+ "abusefilter-list-details": "Podrobnosti",
+ "abusefilter-list-limit": "Položek na stránku:",
+ "abusefilter-list-lastmodified": "Poslední změna",
+ "abusefilter-list-group": "Skupina filtrů",
+ "abusefilter-hidden": "Tajný",
+ "abusefilter-unhidden": "Veřejný",
+ "abusefilter-enabled": "Zapnutý",
+ "abusefilter-deleted": "Smazaný",
+ "abusefilter-disabled": "Vypnutý",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|zásah|zásahy|zásahů}}",
+ "abusefilter-new": "Vytvořit nový filtr",
+ "abusefilter-return": "Vrátit se na správu filtrů",
+ "abusefilter-status-global": "Globální",
+ "abusefilter-list-options": "Možnosti",
+ "abusefilter-list-options-deleted": "Smazané filtry:",
+ "abusefilter-list-options-deleted-only": "Zobrazit pouze smazané filtry",
+ "abusefilter-list-options-deleted-hide": "Skrýt smazané filtry",
+ "abusefilter-list-options-deleted-show": "Zobrazit i smazané filtry",
+ "abusefilter-list-options-scope": "Zobrazit filtry:",
+ "abusefilter-list-options-scope-local": "Jen místní pravidla",
+ "abusefilter-list-options-scope-global": "Jen globální pravidla",
+ "abusefilter-list-options-scope-all": "Místní i globální pravidla",
+ "abusefilter-list-options-disabled": "Vypnuté filtry:",
+ "abusefilter-list-options-hidedisabled": "Skrýt vypnuté filtry",
+ "abusefilter-list-options-searchfield": "Hledat v podmínkách:",
+ "abusefilter-list-options-searchpattern": "Vložte výraz",
+ "abusefilter-list-options-searchoptions": "Způsob hledání:",
+ "abusefilter-list-options-search-like": "Obyčejný výraz",
+ "abusefilter-list-options-search-rlike": "Regulární výraz",
+ "abusefilter-list-options-search-irlike": "Regulární výraz nerozlišující velikost písmen",
+ "abusefilter-list-regexerror": "Při hledání došlo k chybě: Chyba v syntaxi regulárního výrazu.",
+ "abusefilter-list-options-submit": "Aktualizovat",
+ "abusefilter-tools-text": "Zde jsou uvedeny některé nástroje, které se mohou hodit při přípravě a ladění filtrů zneužití.",
+ "abusefilter-tools-expr": "Testování výrazů",
+ "abusefilter-tools-submitexpr": "Vyhodnotit",
+ "abusefilter-tools-reautoconfirm": "Obnovit příznak schváleného uživatele",
+ "abusefilter-tools-reautoconfirm-user": "Uživatel:",
+ "abusefilter-tools-reautoconfirm-submit": "Obnovit schválení",
+ "abusefilter-reautoconfirm-none": "{{GENDER:$1|Tomuto uživateli|Této uživatelce|Tomuto uživateli}} nebyl příznak schváleného uživatele odebrán.",
+ "abusefilter-reautoconfirm-notallowed": "Nemáte oprávnění obnovovat příznak schváleného uživatele.",
+ "abusefilter-reautoconfirm-done": "Příznak schváleného uživatele byl obnoven",
+ "abusefilter-status": "{{PLURAL:$1|Při poslední operaci|Z posledních $1 operací}} {{PLURAL:$2|překročila|překročily|překročilo}} $2 ($3 %) limit $4 podmínek a $5 ($6 %) {{PLURAL:$5|byla zachycena|byly zachyceny|bylo zachyceno}} jedním ze zapnutých filtrů.",
+ "abusefilter-edit": "Editace filtru zneužití",
+ "abusefilter-edit-subtitle": "Editace filtru $1",
+ "abusefilter-edit-subtitle-new": "Vytvoření filtru",
+ "abusefilter-edit-oldwarning": "<strong>Editujete starší verzi tohoto filtru. Uvedené statistiky platí pro aktuální verzi. Pokud uložíte své změny, přepíšete všechny novější úpravy.</strong> &bull; [[Special:AbuseFilter/history/$2|Vrátit se na historii tohoto filtru]].",
+ "abusefilter-edit-status-label": "Statistika:",
+ "abusefilter-edit-status": "Z {{PLURAL:$1|1 poslední operace|posledních $1 operací}} tomuto filtru {{PLURAL:$2|odpovídala|odpovídaly|odpovídalo}} $2 ($3 %).",
+ "abusefilter-edit-status-profile": "Z {{PLURAL:$1|1 poslední operace|posledních $1 operací}} tomuto filtru {{PLURAL:$2|odpovídala|odpovídaly|odpovídalo}} $2 ($3 %).\nPrůměrná doba běhu filtru je $4 ms, filtr potřebuje $5 z dovoleného počtu podmínek.",
+ "abusefilter-edit-throttled-warning": "'''Varování:''' Tento filtr byl automaticky označen jako škodlivý. Z bezpečnostních důvodů nebudou vykonávány následující akce: $1. Pro odstranění tohoto omezení prosím zkontrolujte a [[mw:Extension:AbuseFilter/Conditions|optimalizujte]] podmínky.",
+ "abusefilter-edit-new": "Nový filtr",
+ "abusefilter-edit-save": "Uložit filtr",
+ "abusefilter-edit-id": "ID filtru:",
+ "abusefilter-edit-switch-editor": "Přepnout editor",
+ "abusefilter-edit-description": "Popis:\n:''(veřejně viditelný)''",
+ "abusefilter-edit-field-description": "popis",
+ "abusefilter-edit-group": "Skupina filtrů:",
+ "abusefilter-edit-flags": "Příznaky:",
+ "abusefilter-edit-enabled": "Zapnout tento filtr",
+ "abusefilter-edit-deleted": "Označit filtr za smazaný",
+ "abusefilter-edit-hidden": "Skrýt podrobnosti tohoto filtru před veřejností",
+ "abusefilter-edit-global": "Globální filtr",
+ "abusefilter-edit-rules": "Podmínky:",
+ "abusefilter-edit-field-conditions": "podmínky",
+ "abusefilter-edit-notes": "Poznámky:",
+ "abusefilter-edit-lastmod": "Poslední změna filtru:",
+ "abusefilter-edit-lastmod-text": "$1, $2",
+ "abusefilter-edit-hitcount": "Zásahy filtru:",
+ "abusefilter-edit-consequences": "Opatření, která se mají provést při splnění podmínek",
+ "abusefilter-edit-action-warn": "Před provedením těchto opatření nejprve uživatele varovat",
+ "abusefilter-edit-action-disallow": "Znemožnit uživateli provést příslušnou činnost",
+ "abusefilter-edit-action-blockautopromote": "Odebrat uživateli příznak „schválený“",
+ "abusefilter-edit-action-degroup": "Vyjmout uživatele ze všech skupin s vyššími oprávněními",
+ "abusefilter-edit-action-block": "Zablokovat uživatele nebo IP adresu",
+ "abusefilter-edit-action-blocktalk": "Znemožnit uživateli a/nebo IP adrese editovat vlastní diskusní stránku",
+ "abusefilter-edit-action-throttle": "Provést opatření pouze při překročení dovolené četnosti",
+ "abusefilter-edit-action-rangeblock": "Zablokovat rozsah IP, do kterého patří IP adresa uživatele",
+ "abusefilter-edit-action-tag": "Označit editaci k dalšímu prověření.",
+ "abusefilter-edit-throttle-count": "Počet dovolených akcí:",
+ "abusefilter-edit-throttle-period": "Časový interval:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|sekunda|sekundy|sekund}}",
+ "abusefilter-edit-throttle-groups": "Limity počítat odděleně pro:\n:''(každý řádek jeden limit, skupiny oddělujte čárkami)''",
+ "abusefilter-edit-warn-message": "Systémové hlášení zobrazené jako varování:",
+ "abusefilter-edit-warn-other": "Jiné hlášení",
+ "abusefilter-edit-warn-other-label": "Název stránky jiného hlášení:\n:''(bez předpony MediaWiki)''",
+ "abusefilter-edit-warn-actions": "Operace:",
+ "abusefilter-edit-warn-preview": "Zobrazit náhled zvoleného hlášení",
+ "abusefilter-edit-warn-edit": "Vytvořit/editovat zvolené hlášení",
+ "abusefilter-edit-tag-tag": "[[Special:Tags|Značky]], které se mají přidat (jedna na řádek):",
+ "abusefilter-edit-block-anon-durations": "Doba trvání bloku pro anonymní uživatele:",
+ "abusefilter-edit-block-user-durations": "Doba trvání bloku pro registrované uživatele:",
+ "abusefilter-block-anon": "Anonymní uživatelé",
+ "abusefilter-block-user": "Registrovaní uživatelé",
+ "abusefilter-edit-denied": "Nemůžete se podívat na detaily tohoto filtru, protože není veřejný",
+ "abusefilter-edit-main": "Parametry filtru",
+ "abusefilter-edit-done-subtitle": "Filtr upraven",
+ "abusefilter-edit-done": "[[Special:AbuseFilter/history/$1/diff/prev/$2|Vaše úpravy]] [[Special:AbuseFilter/$1|filtru $3]] byly uloženy.",
+ "abusefilter-edit-badsyntax": "Zadaný filtr obsahuje syntaktickou chybu. Výstup z parseru: <pre>$1</pre>",
+ "abusefilter-edit-missingfields": "Následující pole jsou povinná a je nutné je vyplnit: $1",
+ "abusefilter-edit-restricted": "Nemáte oprávnění editovat tento filtr, neboť obsahuje jedno nebo více opatření s omezeným přístupem.\nPožádejte uživatele s oprávněním přidávat taková opatření, aby potřebnou změnu provedl za vás.",
+ "abusefilter-edit-viewhistory": "Zobrazit historii tohoto filtru",
+ "abusefilter-edit-history": "Historie:",
+ "abusefilter-edit-check": "Zkontrolovat syntaxi",
+ "abusefilter-edit-badfilter": "Uvedený filtr neexistuje",
+ "abusefilter-edit-revert": "Vrátit operace provedené tímto filtrem",
+ "abusefilter-edit-tools": "Nástroje:",
+ "abusefilter-edit-test-link": "Otestovat tento filtr na posledních změnách",
+ "abusefilter-edit-export": "Export tohoto filtru pro jinou wiki",
+ "abusefilter-edit-syntaxok": "Nebyly nalezeny žádné syntaktické chyby.",
+ "abusefilter-edit-syntaxerr": "Nalezena syntaktická chyba: $1",
+ "abusefilter-edit-bad-tags": "Jedna či více uvedených značek nejsou platné.\nZnačky by měly být krátké, nesmějí obsahovat žádné zvláštní znaky a nesmějí být obsazené softwarem. Zkuste značce vybrat jiný název.",
+ "abusefilter-edit-notallowed": "Nemáte oprávnění vytvářet nebo editovat filtry zneužití",
+ "abusefilter-edit-notallowed-global": "Nemáte oprávnění vytvářet nebo editovat globální filtry zneužití",
+ "abusefilter-edit-notallowed-global-custom-msg": "U globálních filtrů nejsou podporována vlastní varovná hlášení.",
+ "abusefilter-edit-builder-select": "Vyberte položku, bude přidána na místo, kde je kurzor",
+ "abusefilter-edit-builder-group-op-arithmetic": "Aritmetické operátory",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Sčítání (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Odčítání (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Násobení (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Dělení (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Zbytek po dělení (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Umocňování (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Porovnávací operátory",
+ "abusefilter-edit-builder-op-comparison-equal": "Hodnota se rovná (==)",
+ "abusefilter-edit-builder-op-comparison-equal-strict": "Hodnota a typ se rovnají (===)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Hodnota se nerovná (!=)",
+ "abusefilter-edit-builder-op-comparison-notequal-strict": "Hodnota a typs se nerovnají (!==)",
+ "abusefilter-edit-builder-op-comparison-lt": "Menší než (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Větší než (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Menší nebo rovno (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Větší nebo rovno (>=)",
+ "abusefilter-edit-builder-group-op-bool": "Booleovské operátory",
+ "abusefilter-edit-builder-op-bool-not": "Negace (!)",
+ "abusefilter-edit-builder-op-bool-and": "A (&)",
+ "abusefilter-edit-builder-op-bool-or": "Nebo (|)",
+ "abusefilter-edit-builder-group-misc": "Různé",
+ "abusefilter-edit-builder-misc-in": "Obsažen v řetězci (in)",
+ "abusefilter-edit-builder-misc-like": "Odpovídá vzoru (like)",
+ "abusefilter-edit-builder-misc-rlike": "Odpovídá regulárnímu výrazu (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "Odpovídá regexu s ignorováním velikosti písmen (irlike)",
+ "abusefilter-edit-builder-misc-contains": "Řetězec vpravo je obsažen v řetězci vlevo (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "Řetězcový literál (\"\")",
+ "abusefilter-edit-builder-misc-tern": "Ternární operátor (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "Podmínka (if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "Funkce",
+ "abusefilter-edit-builder-funcs-length": "Délka řetězce (length)",
+ "abusefilter-edit-builder-funcs-lcase": "Převést na malá písmena (lcase)",
+ "abusefilter-edit-builder-funcs-ucase": "Převést na velká písmena (ucase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "Normalizovat zaměnitelné znaky (ccnorm)",
+ "abusefilter-edit-builder-funcs-ccnorm-contains-any": "Normalizovat řetězec a hledat v něm několik podřetězců v režimu OR (ccnorm_contains_any)",
+ "abusefilter-edit-builder-funcs-ccnorm-contains-all": "Normalizovat řetězec a hledat v něm několik podřetězců v režimu AND (ccnorm_contains_all)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "Odstranit zdvojené znaky (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "Speciální znaky / celkem znaků (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "Normalizovat (norm)",
+ "abusefilter-edit-builder-funcs-count": "Počet výskytů řetězce X v řetězci Y (count)",
+ "abusefilter-edit-builder-funcs-rcount": "Kolikrát se regulární výraz X vyskytuje v řetězci Y (rcount)",
+ "abusefilter-edit-builder-funcs-get_matches": "Pole shod regulárních výrazů s textem pro každou skupinu zachycení (get_matches)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "Odstranit bílé znaky (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "Odstranit speciální znaky (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "Patří IP adresa do rozsahu? (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "Hledat několik podřetězců v řetězci v režimu OR (contains_any)",
+ "abusefilter-edit-builder-funcs-contains-all": "Hledat v řetězci více podřetězců v režimu AND. (contains_all)",
+ "abusefilter-edit-builder-funcs-substr": "Podřetězec (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "Pozice podřetězce v řetězci (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "Nahradit podřetězec jiným řetězcem (str_replace)",
+ "abusefilter-edit-builder-funcs-rescape": "Oescapovat řetězec jako literál do regexu (rescape)",
+ "abusefilter-edit-builder-funcs-set_var": "Nastavit proměnnou (set_var)",
+ "abusefilter-edit-builder-group-vars": "Proměnné",
+ "abusefilter-edit-builder-vars-accountname": "Uživatelské jméno (při zakládání nového účtu)",
+ "abusefilter-edit-builder-vars-timestamp": "Čas editace v unixovém formátu",
+ "abusefilter-edit-builder-vars-timestamp-expanded": "Čas záznamu",
+ "abusefilter-edit-builder-vars-action": "Operace",
+ "abusefilter-edit-builder-vars-addedlines": "Řádky přidané při editaci",
+ "abusefilter-edit-builder-vars-delta": "Změna velikosti způsobená editací",
+ "abusefilter-edit-builder-vars-diff": "Unifikovaný diff změn způsobených editací",
+ "abusefilter-edit-builder-vars-newsize": "Nová velikost stránky",
+ "abusefilter-edit-builder-vars-oldsize": "Původní velikost stránky",
+ "abusefilter-edit-builder-vars-old-content-model": "Původní model obsahu",
+ "abusefilter-edit-builder-vars-new-content-model": "Nový model obsahu",
+ "abusefilter-edit-builder-vars-removedlines": "Řádky odstraněné při editaci",
+ "abusefilter-edit-builder-vars-summary": "Shrnutí editace/zdůvodnění",
+ "abusefilter-edit-builder-vars-article-id": "ID stránky",
+ "abusefilter-edit-builder-vars-article-ns": "Jmenný prostor stránky",
+ "abusefilter-edit-builder-vars-article-text": "Název stránky (bez jmenného prostoru)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Úplný název stránky",
+ "abusefilter-edit-builder-vars-article-views": "Zobrazení stránky",
+ "abusefilter-edit-builder-vars-movedfrom-id": "ID přesouvané stránky",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "Původní jmenný prostor přesouvané stránky",
+ "abusefilter-edit-builder-vars-movedfrom-text": "Název přesouvané stránky",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "Úplný název přesouvané stránky",
+ "abusefilter-edit-builder-vars-movedto-id": "ID stránky, na kterou se přesouvá",
+ "abusefilter-edit-builder-vars-movedto-ns": "Jmenný prostor, do kterého se přesouvá",
+ "abusefilter-edit-builder-vars-movedto-text": "Název, na který se stránka přesouvá",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "Úplný název, na který se stránka přesouvá",
+ "abusefilter-edit-builder-vars-user-editcount": "Počet uživatelových editací",
+ "abusefilter-edit-builder-vars-user-age": "Stáří uživatelského účtu",
+ "abusefilter-edit-builder-vars-user-name": "Uživatelské jméno",
+ "abusefilter-edit-builder-vars-user-groups": "Skupiny (včetně implicitních), do kterých uživatel patří",
+ "abusefilter-edit-builder-vars-user-rights": "Práva, která má uživatel",
+ "abusefilter-edit-builder-vars-user-blocked": "Jestli je uživatel zablokovaný",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "Čas, kdy byla ověřena e-mailová adresa",
+ "abusefilter-edit-builder-vars-recent-contributors": "Posledních deset uživatelů, kteří editovali příslušnou stránku",
+ "abusefilter-edit-builder-vars-first-contributor": "První autor této stránky",
+ "abusefilter-edit-builder-vars-all-links": "Všechny externí odkazy ve výsledném textu",
+ "abusefilter-edit-builder-vars-added-links": "Všechny externí odkazy přidané při editaci",
+ "abusefilter-edit-builder-vars-removed-links": "Všechny externí odkazy odstraněné při editaci",
+ "abusefilter-edit-builder-vars-old-text": "Původní zdrojový text stránky před editací",
+ "abusefilter-edit-builder-vars-new-text": "Nový zdrojový text stránky po editaci",
+ "abusefilter-edit-builder-vars-new-pst": "Wikitext nové stránky po transformaci před uložením",
+ "abusefilter-edit-builder-vars-diff-pst": "Unifikovaný rozdíl změn způsobených editací, po transformaci před uložením",
+ "abusefilter-edit-builder-vars-addedlines-pst": "Řádky přidané při editaci, po transformaci před uložením",
+ "abusefilter-edit-builder-vars-new-text-stripped": "Nový text stránky zbavený formátování",
+ "abusefilter-edit-builder-vars-new-html": "Vygenerovaný HTML kód nové verze",
+ "abusefilter-edit-builder-vars-restrictions-edit": "Úroveň zamčení stránky pro editaci",
+ "abusefilter-edit-builder-vars-restrictions-move": "Úroveň zamčení stránky pro přesun",
+ "abusefilter-edit-builder-vars-restrictions-create": "Úroveň zamčení stránky pro založení",
+ "abusefilter-edit-builder-vars-restrictions-upload": "Úroveň zamčení souboru pro načtení",
+ "abusefilter-edit-builder-vars-old-text-stripped": "Původní text stránky bez všech značek",
+ "abusefilter-edit-builder-vars-old-links": "Odkazy na stránce před editací",
+ "abusefilter-edit-builder-vars-old-html": "Původní text stránky naformátovaný do HTML",
+ "abusefilter-edit-builder-vars-minor-edit": "Zda byla editace označena jako malá",
+ "abusefilter-edit-builder-vars-file-sha1": "SHA-1 otisk obsahu souboru",
+ "abusefilter-edit-builder-vars-file-size": "Velikost souboru v bajtech",
+ "abusefilter-edit-builder-vars-file-mime": "MIME typ souboru",
+ "abusefilter-edit-builder-vars-file-mediatype": "Typ obsahu tohoto souboru",
+ "abusefilter-edit-builder-vars-file-width": "Šířka souboru v pixelech",
+ "abusefilter-edit-builder-vars-file-height": "Výška souboru v pixelech",
+ "abusefilter-edit-builder-vars-file-bits-per-channel": "Barevná hloubka souboru v bitech na barevný kanál",
+ "abusefilter-edit-block-options": "Nastavení zablokování:",
+ "abusefilter-filter-log": "Poslední změny filtrů",
+ "abusefilter-history": "Historie změn filtru zneužití #$1",
+ "abusefilter-history-foruser": "Změny provedené uživatelem $1",
+ "abusefilter-history-hidden": "Skrytý",
+ "abusefilter-history-enabled": "Zapnutý",
+ "abusefilter-history-global": "Globální",
+ "abusefilter-history-timestamp": "Čas",
+ "abusefilter-history-user": "Uživatel",
+ "abusefilter-history-public": "Veřejný popis filtru",
+ "abusefilter-history-flags": "Příznaky",
+ "abusefilter-history-filter": "Definice filtru",
+ "abusefilter-history-comments": "Komentáře",
+ "abusefilter-history-actions": "Opatření",
+ "abusefilter-history-backedit": "Zpět na editaci filtru",
+ "abusefilter-history-deleted": "Smazaný",
+ "abusefilter-history-filterid": "Filtr",
+ "abusefilter-history-select-legend": "Upřesnit hledání",
+ "abusefilter-history-select-user": "Uživatel:",
+ "abusefilter-history-select-filter": "ID filtru:",
+ "abusefilter-history-select-submit": "Provést",
+ "abusefilter-history-diff": "Změny",
+ "abusefilter-history-error-hidden": "Požadovaný filtr je skrytý, takže si jeho historii prohlédnout nemůžete.",
+ "abusefilter-exception-unexpectedatend": "Na pozici $1 nebylo očekáváno „$2“.",
+ "abusefilter-exception-expectednotfound": "Na pozici $1 bylo očekáváno $2, ale nebylo nalezeno (místo toho bylo nalezeno $3 „$4“).",
+ "abusefilter-exception-unrecognisedkeyword": "Neznámé klíčové slovo $2 na pozici $1.",
+ "abusefilter-exception-unexpectedtoken": "Neočekávaný element „$3“ (typ $2) na pozici $1.",
+ "abusefilter-exception-unclosedstring": "Řetězec začínající na pozici $1 není ukončen.",
+ "abusefilter-exception-invalidoperator": "Neplatný operátor „$2“ na pozici $1.",
+ "abusefilter-exception-unrecognisedtoken": "Neznámý element „$2“ na pozici $1.",
+ "abusefilter-exception-noparams": "Funkce „$2“ na pozici $1 potřebuje parametry.",
+ "abusefilter-exception-dividebyzero": "Neplatný pokus o dělení čísla $2 nulou na pozici $1.",
+ "abusefilter-exception-unrecognisedvar": "Neznámá proměnná $2 na pozici $1",
+ "abusefilter-exception-notenoughargs": "Nedostatek parametrů při volání funkce $2 na pozici $1.\n{{PLURAL:$3|Očekáván 1 parametr|Očekávány $3 parametry|Očekáváno $3 parametrů}}, volání používá $4.",
+ "abusefilter-exception-regexfailure": "Chyba v regulárním výrazu „$3“ na znaku $1: „$2“",
+ "abusefilter-exception-overridebuiltin": "Nedovolené předefinování vestavěné proměnné „$2“ na pozici $1.",
+ "abusefilter-exception-outofbounds": "Na pozici $1 požadována neexistující $2. položka seznamu (velikost seznamu = $3).",
+ "abusefilter-exception-notlist": "Na pozici $1 požadován prvek pole po proměnné, která není pole.",
+ "abusefilter-action-tag": "Značka",
+ "abusefilter-action-throttle": "Omezení",
+ "abusefilter-action-warn": "Varování",
+ "abusefilter-action-blockautopromote": "Blokování automatického potvrzení",
+ "abusefilter-action-block": "Zablokování",
+ "abusefilter-action-degroup": "Vyjmutí ze skupin",
+ "abusefilter-action-rangeblock": "Zablokování rozsahu",
+ "abusefilter-action-disallow": "Zákaz",
+ "abusefilter-revert-title": "Vrátit všechny operace provedené filtrem $1",
+ "abusefilter-revert-intro": "Pomocí tohoto formuláře můžete vrátit všechny změny, které filtr zneužití provedl na základě filtru $1.\nPři používání tohoto nástroje buďte opatrní.",
+ "abusefilter-revert-preview-item": "$1: $2 {{GENDER:$7|prováděl|prováděla|prováděl(a)}} „$3“ na $4.\nOperace, které se mají vrátit: $5 ($6)",
+ "abusefilter-revert-search-legend": "Vyberte operace filtru zneužití, které se mají vrátit",
+ "abusefilter-revert-periodstart": "Začátek období:",
+ "abusefilter-revert-periodend": "Konec období:",
+ "abusefilter-revert-search": "Vybrat operace",
+ "abusefilter-revert-filter": "ID filtru:",
+ "abusefilter-revert-preview-intro": "Níže jsou uvedeny operace provedené filtrem zneužití, které budou tímto vráceny.\nPečlivě je zkontrolujte a kliknutím na „{{int:abusefilter-revert-confirm}}“ můžete jejich vrácení schválit.",
+ "abusefilter-revert-confirm": "Potvrdit",
+ "abusefilter-revert-success": "Všechny operace, které filtr zneužití provedl na základě [[Special:AbuseFilter/$1|filtru $2]], byly vráceny.",
+ "abusefilter-revert-reason": "Automatické vrácení všech operací, které filtr zneužití provedl kvůli filtru $1.\nUvedený důvod: $2",
+ "abusefilter-revert-reasonfield": "Důvod:",
+ "abusefilter-test": "Test filtru na posledních změnách",
+ "abusefilter-test-intro": "Na této stránce můžete otestovat filtr, který zadáte do editačního pole níže, na {{PLURAL:$1|poslední změně|posledních $1 změnách}}.\nUž existující filtr můžete použít tím, že jeho ID napíšete do rámečku pod editačním polem a kliknete na tlačítko „{{int:abusefilter-test-load}}“.",
+ "abusefilter-test-legend": "Test filtru",
+ "abusefilter-test-load-filter": "Načíst filtr s ID:",
+ "abusefilter-test-submit": "Otestovat",
+ "abusefilter-test-load": "Načíst",
+ "abusefilter-test-user": "Změny provedené uživatelem:",
+ "abusefilter-test-period-start": "Změny provedené po:",
+ "abusefilter-test-period-end": "Změny provedené před:",
+ "abusefilter-test-page": "Změněná stránka:",
+ "abusefilter-test-shownegative": "Zobrazit i změny, které filtru nevyhovují",
+ "abusefilter-test-syntaxerr": "Zadaný filtr obsahuje syntaktickou chybu.\nPodrobnější vysvětlení můžete získat kliknutím na tlačítko „{{int:abusefilter-edit-check}}“.",
+ "abusefilter-test-badtitle": "Zadaný název stránky je neplatný. Možná obsahuje jeden či více znaků, které nelze v názvech stránek používat.",
+ "abusefilter-changeslist-examine": "prozkoumat",
+ "abusefilter-examine": "Prozkoumat jednotlivé editace",
+ "abusefilter-examine-intro": "Na této stránce budete moci u zvolené editace prozkoumat proměnné, které pro ni Filtr zneužití vygeneroval, a otestovat na ní filtry.",
+ "abusefilter-examine-legend": "Výběr editací",
+ "abusefilter-examine-diff": "URL rozdílu:",
+ "abusefilter-examine-user": "Uživatel:",
+ "abusefilter-examine-title": "Název stránky:",
+ "abusefilter-examine-submit": "Hledat",
+ "abusefilter-examine-vars": "Proměnné vygenerované k této změně",
+ "abusefilter-examine-test": "Otestovat na této změně filtr",
+ "abusefilter-examine-test-button": "Otestovat filtr",
+ "abusefilter-examine-match": "Tento filtr by tuto změnu zachytil.",
+ "abusefilter-examine-nomatch": "Tento filtr by tuto změnu nezachytil.",
+ "abusefilter-examine-syntaxerror": "Filtr má neplatnou syntaxi.",
+ "abusefilter-examine-notfound": "Vámi požadovaná změna nebyla nalezena.",
+ "abusefilter-examine-incompatible": "Vámi požadovanou změnu Filtr zneužití nepodporuje.",
+ "abusefilter-examine-noresults": "Podle zadaných parametrů nebyly nalezeny žádné výsledky.",
+ "abusefilter-topnav": "'''Navigace po filtru zneužití'''",
+ "abusefilter-topnav-home": "Hlavní stránka",
+ "abusefilter-topnav-test": "Hromadné testování",
+ "abusefilter-topnav-examine": "Prozkoumat minulé editace",
+ "abusefilter-topnav-log": "Protokol filtrů zneužití",
+ "abusefilter-topnav-tools": "Ladicí nástroje",
+ "abusefilter-topnav-import": "Import filtru",
+ "abusefilter-log-name": "Kniha filtrů zneužití",
+ "abusefilter-log-header": "Tento protokol obsahuje přehled změn filtrů.\nÚplné podrobnosti naleznete v [[Special:AbuseFilter/history|seznamu posledních změn filtrů]].",
+ "abusefilter-logentry-create": "$1 {{GENDER:$2|vytvořil|vytvořila}} $4 ($5)",
+ "abusefilter-logentry-modify": "$1 {{GENDER:$2|upravil|upravila|upravil(a)}} $4 ($5)",
+ "abusefilter-log-noresults": "Žádné výsledky",
+ "abusefilter-diff-title": "Rozdíly mezi verzemi",
+ "abusefilter-diff-item": "Položka",
+ "abusefilter-diff-version": "Verze z $1 od {{GENDER:$3|uživatele|uživatelky}} $2",
+ "abusefilter-diff-info": "Základní informace",
+ "abusefilter-diff-pattern": "Podmínky filtru",
+ "abusefilter-diff-invalid": "Nepodařilo se načíst požadované verze",
+ "abusefilter-diff-backhistory": "Zpět na historii filtru",
+ "abusefilter-diff-prev": "Starší změna",
+ "abusefilter-diff-next": "Novější změna",
+ "abusefilter-import-intro": "Pomocí tohoto rozhraní můžete importovat filtry z jiných wiki.\nNa zdrojové wiki klikněte v editačním rozhraní na „{{int:abusefilter-edit-export}}“ v sekci „{{int:abusefilter-edit-tools}}“.\nZkopírujte si text, který se objeví v rámečku, vložte ho do tohoto formuláře a klikněte na „{{int:abusefilter-import-submit}}“.",
+ "abusefilter-import-submit": "Importovat data",
+ "abusefilter-group-default": "Výchozí",
+ "abusefilter-http-error": "Došlo k chybě HTTP: $1.",
+ "abusefilter-view-private-submit": "Zobrazit soukromé detaily",
+ "abusefilter-view-private": "Zobrazit soukromé detaily",
+ "abusefilter-view-private-reason": "Důvod přístupu k soukromým detailům:",
+ "abusefilter-log-details-id": "ID protokolovacího záznamu",
+ "abusefilter-invalid-request": "Neplatný požadavek! K soukromým detailům záznamu musíte jít skrze formulář na stránce [[Special:AbuseLog/$1]] a musíte uvést důvod.",
+ "abusefilter-invalid-request-noid": "Neplatný požadavek! K soukromým detailům záznamu musíte jít skrze formulář na stránce podrobností záznamu zneužití a musíte uvést důvod.",
+ "log-description-abusefilterprivatedetails": "Tento záznam ukazuje seznam pokusů uživatele prohlédnout si soukromé detaily protokolu zneužití.",
+ "abusefilter-noreason": "Varování: K prohlížení soukromých detailů tohoto záznamu musíte uvést důvod.",
+ "abusefilter-log-ip-not-available": "Nedostupná",
+ "tag-abusefilter-condition-limit": "překročen limit podmínek",
+ "tag-abusefilter-condition-limit-description": "Editace či jiné aktivity, které nebylo možné zkontrolovat všemi zapnutými [[Special:AbuseFilter|filtry zneužití]] ([[mw:Extension:AbuseFilter/Conditions|nápověda]]).",
+ "apihelp-abusefiltercheckmatch-description": "Zkontrolovat, zda se filtr zneužití shoduje se sadou proměnných, editor ve filtru zaznamenal změnu.\n\nJe vyžadována jedna z následujících možností: vars, rcid nebo logid.",
+ "apihelp-abusefiltercheckmatch-param-filter": "Plný text filtru, který se má kontrolovat na shodu.",
+ "apihelp-abusefiltercheckmatch-param-vars": "Pole proměnných vůči kterým chcete testovat, kódované v JSON.",
+ "apihelp-abusefiltercheckmatch-param-rcid": "ID poslední změny vůči které chcete testovat.",
+ "apihelp-abusefiltercheckmatch-param-logid": "ID filtru zneužití vůči kterému chcete testovat.",
+ "apihelp-abusefiltercheckmatch-example-1": "Otestovat, zda poslední změna s ID 15 odpovídá jednoduchému filtru",
+ "apihelp-abusefilterchecksyntax-description": "Zkontrolovat syntaxi filtru zneužití.",
+ "apihelp-abusefilterchecksyntax-summary": "Zkontroluje syntaxi filtru zneužití.",
+ "apihelp-abusefilterchecksyntax-param-filter": "Plný text filtru, na kterém se zkontroluje syntaxe",
+ "apihelp-abusefilterchecksyntax-example-1": "Zkontrolovat syntaxi platného filtru",
+ "apihelp-abusefilterchecksyntax-example-2": "Zkontrolovat syntaxi neplatného filtru",
+ "apihelp-abusefilterevalexpression-description": "Vyhodnotí výraz filtru zneužití.",
+ "apihelp-abusefilterevalexpression-summary": "Vyhodnotí výraz filtru zneužití.",
+ "apihelp-abusefilterevalexpression-param-expression": "Výraz, který se má vyhodnotit.",
+ "apihelp-abusefilterevalexpression-example-1": "Vyhodnotit jednoduchý výraz",
+ "apihelp-abusefilterunblockautopromote-description": "Odblokuje uživateli možnost získat automatické povýšení zablokovanou důsledkem filtru zneužití.",
+ "apihelp-abusefilterunblockautopromote-param-user": "Jméno uživatele, jehož chcete odblokovat.",
+ "apihelp-abusefilterunblockautopromote-example-1": "Zrušit blokování automatického povýšení uživatele [[User:Example]]",
+ "apihelp-query+abusefilters-description": "Zobrazit podrobnosti o filtrech zneužití.",
+ "apihelp-query+abusefilters-param-startid": "ID filtru, od kterého se začne s výčtem.",
+ "apihelp-query+abusefilters-param-endid": "ID filtru, u kterého výčet skončí.",
+ "apihelp-query+abusefilters-param-show": "Zobrazit pouze filtry, které splňují tato kritéria.",
+ "apihelp-query+abusefilters-param-limit": "Maximální počet zobrazených filtrů.",
+ "apihelp-query+abusefilters-param-prop": "Jaké vlastnosti získat.",
+ "apihelp-query+abusefilters-example-1": "Zobrazit zapnuté veřejné filtry",
+ "apihelp-query+abusefilters-example-2": "Zobrazit podrobnosti o filtrech",
+ "apihelp-query+abuselog-description": "Zobrazit události, které byly zachyceny filtrem zneužití.",
+ "apihelp-query+abuselog-param-start": "Časová značka, od které se začne s výčtem.",
+ "apihelp-query+abuselog-param-end": "Časová značka, u které výčet skončí.",
+ "apihelp-query+abuselog-param-user": "Zobrazit pouze změny provedené daným uživatelem nebo z příslušné IP adresy.",
+ "apihelp-query+abuselog-param-title": "Zobrazit pouze změny, které se vyskytují na dané stránce.",
+ "apihelp-query+abuselog-param-filter": "Zobrazit pouze změny, které byly zachyceny daným filtrem.",
+ "apihelp-query+abuselog-param-limit": "Maximální počet změn k zobrazení.",
+ "apihelp-query+abuselog-param-prop": "Jaké vlastnosti získat.",
+ "apihelp-query+abuselog-param-wiki": "Wiki, na nichž došlo k zásahům filtrů.",
+ "apihelp-query+abuselog-example-1": "Zobrazit poslední záznamy protokolu",
+ "apihelp-query+abuselog-example-2": "Zobrazit poslední záznamy protokolu pro stránku [[API]]",
+ "apierror-abusefilter-canttest": "Nemáte oprávnění testovat filtry zneužití.",
+ "apierror-abusefilter-cantcheck": "Nemáte oprávnění kontrolovat syntaxi filtrů zneužití.",
+ "apierror-abusefilter-badsyntax": "Filtr má neplatnou syntaxi."
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/csb.json b/www/wiki/extensions/AbuseFilter/i18n/csb.json
new file mode 100644
index 00000000..4373ca23
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/csb.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Kirsan"
+ ]
+ },
+ "abusefilter-disallowed": "Hewòtné dzejanie aùtomaticzno òstało ùznóné za szkòdlëwé i w związkù z tim òdrzuconé. Jeżlë ùwôżôsz równak, że twòja edicjô bëła bëlnô, zwróc sã do sprôwnika i pòinfòrmùj gò ò ti situacje. Krótczi opisënk reglë nadùżëcô zrzeszony z twòjim dzejanim: $1"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/cu.json b/www/wiki/extensions/AbuseFilter/i18n/cu.json
new file mode 100644
index 00000000..65e78602
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/cu.json
@@ -0,0 +1,31 @@
+{
+ "@metadata": {
+ "authors": [
+ "ОйЛ"
+ ]
+ },
+ "abusefilter-log-search-user": "польꙃєватєл҄ь :",
+ "abusefilter-log-search-title": "страницѧ имѧ :",
+ "abusefilter-log-search-submit": "ищи",
+ "abusefilter-log-hide-reason": "какъ съмꙑслъ :",
+ "abusefilter-list-edit": "исправлѥниѥ",
+ "abusefilter-list-options-submit": "оновити",
+ "abusefilter-tools-reautoconfirm-user": "польꙃєватєл҄ь :",
+ "abusefilter-edit-status-label": "статїстїка :",
+ "abusefilter-edit-history": "їсторїꙗ :",
+ "abusefilter-edit-tools": "орѫдиꙗ :",
+ "abusefilter-edit-builder-op-bool-not": "нѣтъ (!)",
+ "abusefilter-edit-builder-op-bool-and": "и (&)",
+ "abusefilter-edit-builder-op-bool-or": "или (|)",
+ "abusefilter-history-timestamp": "врѣмѧ",
+ "abusefilter-history-user": "польꙃєватєл҄ь",
+ "abusefilter-history-select-user": "польꙃєватєл҄ь :",
+ "abusefilter-history-diff": "мѣнꙑ",
+ "abusefilter-action-tag": "мѣтъка",
+ "abusefilter-action-block": "ꙁагради",
+ "abusefilter-revert-reasonfield": "какъ съмꙑслъ :",
+ "abusefilter-test-submit": "искоушєниѥ",
+ "abusefilter-examine-user": "польꙃєватєл҄ь :",
+ "abusefilter-examine-title": "страницѧ имѧ :",
+ "abusefilter-examine-submit": "исканиѥ"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/cv.json b/www/wiki/extensions/AbuseFilter/i18n/cv.json
new file mode 100644
index 00000000..a9000462
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/cv.json
@@ -0,0 +1,80 @@
+{
+ "@metadata": {
+ "authors": [
+ "Salam",
+ "Chuvash2014"
+ ]
+ },
+ "abusefilter-log-search-user": "Усă куракан:",
+ "abusefilter-log-search-filter": "Ала идентификаторӗ",
+ "abusefilter-log-search-title": "Пуҫелӗк:",
+ "abusefilter-log-search-wiki": "Википроект:",
+ "abusefilter-log-search-submit": "Шыра",
+ "abusefilter-log-detailedentry-global": "$1 глобаллӑ ала",
+ "abusefilter-log-detailedentry-local": "$1 алан",
+ "abusefilter-log-detailslink": "пайӑртарах",
+ "abusefilter-log-diff": "улш.",
+ "abusefilter-log-hidelink": "курӑнаслӑха майла",
+ "abusefilter-log-details-legend": "$1 журнал ҫырӑвӗн ӑнлантарӑвӗ",
+ "abusefilter-log-details-var": "Улшӑнакан",
+ "abusefilter-log-details-val": "Пӗлтерӗш",
+ "abusefilter-log-details-vars": "Ӗҫ ӗнерленӗвӗсем",
+ "abusefilter-log-details-private": "Харпӑр пӗлӗмлӗхӗ",
+ "abusefilter-log-details-ip": "Хутшӑнаканӑн IP адресӗ",
+ "abusefilter-log-noactions": "ҫук",
+ "abusefilter-log-details-diff": "Улшӑнури улӑштарӑвӗсем",
+ "abusefilter-log-hide-id": "Журнал ҫырӑвӗн идентификаторӗ:",
+ "abusefilter-log-hide-reason": "Сӑлтав:",
+ "abusefilter-logentry-suppress": "[[$1]] пытар",
+ "abusefilter-logentry-unsuppress": "\"[[$1]]\" кăтарт",
+ "abusefilter-list": "Мӗн пур ала",
+ "abusefilter-list-id": "Ала идентификаторӗ",
+ "abusefilter-list-status": "Лару-тӑру",
+ "abusefilter-list-public": "Пӗтӗмӗшле ӑнлантару",
+ "abusefilter-list-consequences": "Тӗлли-палли",
+ "abusefilter-list-visibility": "Курăнни",
+ "abusefilter-list-edit": "Тӳрлет",
+ "abusefilter-list-details": "Пайӑртарах",
+ "abusefilter-list-limit": "Страницӑри шучӗ:",
+ "abusefilter-list-lastmodified": "Юлашки улшӑну",
+ "abusefilter-list-group": "Ала ушкӑнӗ",
+ "abusefilter-hidden": "Курӑнман",
+ "abusefilter-unhidden": "Пӗтӗмӗшле",
+ "abusefilter-enabled": "Хускатнă",
+ "abusefilter-deleted": "Тӗплен",
+ "abusefilter-disabled": "Чарнă",
+ "abusefilter-tools-reautoconfirm-user": "Усă куракан:",
+ "abusefilter-edit-new": "Ҫӗнӗ ала",
+ "abusefilter-edit-save": "Алана ҫырса хур",
+ "abusefilter-edit-id": "Ала идентификаторӗ",
+ "abusefilter-edit-description": "Ӑнлантару:\n:''(пӗтӗмӗшле)''",
+ "abusefilter-edit-group": "Ала ушкӑнӗ:",
+ "abusefilter-edit-history": "Истори",
+ "abusefilter-edit-tools": "Хатӗрсем:",
+ "abusefilter-edit-builder-group-op-arithmetic": "Арифметика операторӗсем",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Хушни (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Кăларни (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Хутлани (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Пайлани (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Модуль (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Степень (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Танлаштарни операторӗсем",
+ "abusefilter-edit-builder-op-comparison-equal": "Танлӑ (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Танлӑ мар (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "Сахалрах (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Ытларах (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Сахалрах е танлӑ (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Ытларах е танлӑ (>=)",
+ "abusefilter-edit-builder-group-op-bool": "Буль операторӗсем",
+ "abusefilter-edit-builder-op-bool-not": "МАР (!)",
+ "abusefilter-edit-builder-op-bool-and": "ТАТА (&)",
+ "abusefilter-edit-builder-op-bool-or": "Е (|)",
+ "abusefilter-history-user": "Хутшăнакан",
+ "abusefilter-history-deleted": "Тӗпленӗ",
+ "abusefilter-history-filterid": "Ала",
+ "abusefilter-history-select-user": "Усă куракан:",
+ "abusefilter-history-diff": "Улшӑнусем",
+ "abusefilter-examine-user": "Усă куракан:",
+ "abusefilter-examine-submit": "Туп",
+ "abusefilter-topnav-home": "Килелле"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/cy.json b/www/wiki/extensions/AbuseFilter/i18n/cy.json
new file mode 100644
index 00000000..4135feca
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/cy.json
@@ -0,0 +1,96 @@
+{
+ "@metadata": {
+ "authors": [
+ "Cymrodor",
+ "Lloffiwr",
+ "Pwyll",
+ "Robin Owain"
+ ]
+ },
+ "abusefilter-desc": "Yn gosod tybiaethau i olygiadau'n awtomatig",
+ "abusefilter": "Ffurfweddiad hidlydd camddefnydd",
+ "abuselog": "Log camddefnydd",
+ "abusefilter-intro": "Croeso i'r rhyngwyneb rheoli'r Hidlydd Camddefnydd.\nMeddalwedd awtomatig sy'n ymateb yn dybiaethol i bobl gweithred yw'r Hildydd Camddefnydd.\nMae'r rhyngwyneb hwn yn arddangos rhestr o hidlyddion penodedig, sy'n eu galluogi i gael eu haddasu.",
+ "abusefilter-mustbeeditor": "Am resymau diogelwch, dim ond defnyddwyr sydd â'r hawl i addasu hidlyddion camddefnydd gaiff ddefnyddio'r rhyngwyneb hwn.",
+ "abusefilter-warning": "'''Rhybudd:''' Mae'r weithred hon wedi'i dyfarnu'n awtomatig fel gweithred niweidiol.\nBydd golygiadau anadeiladol yn cael eu gwrthdroi'n syth, a bydd cyfrif neu gyfeiriad IP defnyddwyr sy'n parhau i olygu'n anadeiladol yn cael eu blocio.\nOs ydych o'r farn fod y weithred hon yn adeiladol, gallwch ei chyflwyno unwaith eto er mwyn ei chadarnhau.\nDisgrifiad byr o'r rheol camddefnydd y mae'ch gweithred chi yn cyfateb ag ef yw: $1",
+ "abusefilter-disallowed": "Clustnododd y meddalwedd y weithred hon yn un niweidiol, felly ni weithredwyd hi.\nOs ydych yn meddwl bod y weithred o ddefnydd, rhowch wybod i weinyddwr am ddiben y weithred.\nDyma ddisgrifiad byr o'r rheol camddefnydd yr oedd y weithred yn cyfateb iddi: $1",
+ "abusefilter-blocker": "Hidlydd camddefnydd",
+ "abusefilter-blockreason": "Blociwyd yn awtomatig gan yr hidlydd camddefnydd.\nDisgrifiad o'r rheol sy'n cyfateb: $1",
+ "abusefilter-accountreserved": "Cedwir yr enw cyfrif hon ar gyfer yr hidlydd camddefnydd.",
+ "right-abusefilter-modify": "Addasu hidlyddion camddefnydd",
+ "right-abusefilter-view": "Gweler hidlyddion camddefnydd",
+ "right-abusefilter-log": "Gweler y log camddefnydd",
+ "right-abusefilter-log-detail": "Gweler cofnodion manwl y log camddefnydd",
+ "right-abusefilter-private": "Gweler data preifat yn y log camddefnydd",
+ "right-abusefilter-modify-restricted": "Addasu hidlyddion camddefnydd gyda gweithredoedd cyfyngedig.",
+ "right-abusefilter-revert": "Gwrthdroi pob newid a wnaed gan hidlydd camddefnydd penodol",
+ "right-abusefilter-view-private": "Gweler hidlyddion camddefnydd a nodwyd yn breifat",
+ "right-abusefilter-hide-log": "Cuddio cofnodion yn y log camddefnydd",
+ "right-abusefilter-hidden-log": "Gweler cofnodion cuddiedig y log camddefnydd",
+ "action-abusefilter-modify": "addasu hidlyddion camddefnydd",
+ "action-abusefilter-view": "gweler hidlyddion camddefnydd",
+ "action-abusefilter-log": "gweler y log camddefnydd",
+ "action-abusefilter-log-detail": "gweler cofnodion manwl y log camddefnydd",
+ "action-abusefilter-private": "gweler data preifat yn y log camddefnydd",
+ "action-abusefilter-modify-restricted": "addasu hidlyddion camddefnydd gyda gweithredoedd cyfyngedig.",
+ "action-abusefilter-revert": "gwrthdroi pob newid a wnaed gan hidlydd camddefnydd penodol",
+ "action-abusefilter-view-private": "gweler hidlyddion camddefnydd a nodwyd yn breifat",
+ "abusefilter-log": "Log hidlydd camddefnydd",
+ "abusefilter-log-summary": "Dengys y log hwn restr o'r holl weithredodd a nodwyd gan yr hidlyddion.",
+ "abusefilter-log-search": "Chwilier y log camddefnydd",
+ "abusefilter-log-search-user": "Defnyddiwr:",
+ "abusefilter-log-search-filter": "ID Hidlydd (gwahanwch gyda '|'):",
+ "abusefilter-log-search-title": "Teitl:",
+ "abusefilter-log-search-wiki": "Wici:",
+ "abusefilter-log-search-submit": "Chwilio",
+ "abusefilter-log-detailedentry-global": "hidlydd eang $1",
+ "abusefilter-log-detailedentry-local": "hidlydd $1",
+ "abusefilter-log-detailslink": "manylion",
+ "abusefilter-log-details-legend": "Manylion ar gyfer cofnodion log $1",
+ "abusefilter-log-details-var": "Newidyn",
+ "abusefilter-log-details-val": "Gwerth",
+ "abusefilter-log-details-private": "Data preifat",
+ "abusefilter-log-details-ip": "Cyfeiriad IP gwreiddiol",
+ "abusefilter-log-noactions": "Dim",
+ "abusefilter-log-details-diff": "Gwnaed newidiadau yn y golygiad",
+ "abusefilter-log-linkoncontribs": "log camddefnydd",
+ "abusefilter-log-linkoncontribs-text": "Log camddefnydd ar gyfer {{GENDER:$1|y defnyddiwr hwn}}",
+ "abusefilter-log-hidden": "(cofnod cuddiedig)",
+ "abusefilter-log-details-hidden": "Ni allwch weld manylion y cofnod hwn am ei fod wedi ei guddio o'r golwg.",
+ "abusefilter-log-hide-legend": "Cuddio cofnod log",
+ "abusefilter-log-hide-reason": "Rheswm:",
+ "abusefilter-list": "Pob hidl",
+ "abusefilter-list-id": "ID yr hidl",
+ "abusefilter-list-status": "Statws",
+ "abusefilter-list-public": "Disgrifiad cyhoeddus",
+ "abusefilter-list-edit": "Golygu",
+ "abusefilter-list-details": "Manylion",
+ "abusefilter-list-limit": "Nifer ar bob tudalen",
+ "abusefilter-list-lastmodified": "Newidiwyd diwethaf",
+ "abusefilter-hidden": "Preifat",
+ "abusefilter-unhidden": "Cyhoeddus",
+ "abusefilter-enabled": "Wedi ei alluogi",
+ "abusefilter-deleted": "Dilewyd",
+ "abusefilter-disabled": "Analluogi",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|hit|hits}}",
+ "abusefilter-new": "Crewch ffiltr newydd",
+ "abusefilter-return": "Dychwelyd i reoli'r ffiltrau",
+ "abusefilter-status-global": "Popeth",
+ "abusefilter-list-options": "Dewisiadau",
+ "abusefilter-list-options-deleted": "Ffiltrau wedi'u dileu:",
+ "abusefilter-list-options-deleted-only": "Dangos ffiltrau a ddilewyd yn unig",
+ "abusefilter-list-options-deleted-hide": "Cuddio'r ffiltrau a ddilewyd",
+ "abusefilter-list-options-submit": "Diweddaru",
+ "abusefilter-tools-submitexpr": "Gwerthuswch",
+ "abusefilter-tools-reautoconfirm-user": "Defnyddiwr",
+ "abusefilter-edit-status-label": "Ystadegau",
+ "abusefilter-edit-new": "Hidl newydd",
+ "abusefilter-edit-save": "Cadw'r hidlydd",
+ "abusefilter-edit-id": "ID yr hidl:",
+ "abusefilter-edit-description": "Disgrifiad:\n:\"(yn weladwy i'r cyhoedd)\"",
+ "abusefilter-edit-throttle-period": "Cyfnod",
+ "abusefilter-edit-warn-other": "Negeseuon eraill",
+ "abusefilter-history-user": "Defnyddiwr",
+ "abusefilter-history-diff": "Newidiadau",
+ "abusefilter-revert-filter": "Hidl:"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/da.json b/www/wiki/extensions/AbuseFilter/i18n/da.json
new file mode 100644
index 00000000..d6c3c720
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/da.json
@@ -0,0 +1,418 @@
+{
+ "@metadata": {
+ "authors": [
+ "Aputtu",
+ "Byrial",
+ "Christian List",
+ "Claus chr",
+ "Fnielsen",
+ "Froztbyte",
+ "Hylle",
+ "Lhademmor",
+ "Peter Alberti",
+ "Sarrus",
+ "Steenth",
+ "Tjernobyl",
+ "MGA73",
+ "Matma Rex",
+ "Cgtdk",
+ "Jorn Ari",
+ "Joedalton"
+ ]
+ },
+ "abusefilter-desc": "Anvender automatiske heuristikker på redigeringer",
+ "abusefilter": "Konfiguration af misbrugsfilter",
+ "abuselog": "Misbrugslog",
+ "abusefilter-intro": "Velkommen til grænsefladen for håndtering af misbrugsfilteret.\nMisbrugsfilteret er en automatisk mekanisme i softwaren som udfører automatisk tjek af alle handlinger.\nDenne grænseflade viser en liste over definerede filtre, og gør det muligt at ændre dem.",
+ "abusefilter-mustbeeditor": "Af sikkerhedsmæssige årsager kan denne grænseflade kun bruges af brugere med rettigheder til at ændre misbrugsfiltre.",
+ "abusefilter-warning": "'''Advarsel:''' Denne handling er automatisk blevet identificeret som skadelig.\nIkke-konstruktive redigeringer bliver fjernet hurtigt,\nog forstyrrende eller gentagende ikke-konstruktive redigeringer vil føre til at din konto eller IP-adresse bliver blokeret.\nHvis du mener at dette er en konstruktiv handling, så klik på \"Gem\" igen for at bekræfte.\nHer er kortfattet beskrivelse af misbrugsreglen som din handling udløste: $1",
+ "abusefilter-disallowed": "Denne handling er automatisk blevet identificeret som skadelig,\nog er derfor ikke tilladt.\nHvis du mener at din redigering var konstruktiv, så kontakt venligst en administrator, og informer denne om hvad du forsøgte at gøre.\nHer er en kortfattet beskrivelse af misbrugsreglen som din handling udløste: $1",
+ "abusefilter-blocked-display": "Denne handling er automatisk blevet identificeret som skadelig,\nog du er derfor blevet forhindret i at udføre den.\nHerudover, for at beskytte {{SITENAME}}, er din brugerkonto og alle associerede IP-adresser blevet blokeret fra at kunne redigere.\nHvis dette er sket som en fejl, så kontakt venligst en administrator.\nHer er en kortfattet beskrivelse af misbrugsreglen som din handling udløste: $1",
+ "abusefilter-degrouped": "Denne handling er automatisk blevet identificeret som skadelig.\nSom konsekvens heraf er den ikke tilladt, og på grund af mistanke om misbrug har din konto mistet alle rettigheder.\nHvis du mener at dette er sket på grund af en fejl, så kontakt en bureaukrat med en forklaring på denne handling, og dine rettigheder kan genoprettes.\nHer er en kortfattet beskrivelse af misbrugsreglen som din handling udløste: $1",
+ "abusefilter-autopromote-blocked": "Denne handling er automatisk blevet identificeret som skadelig, og den er blevet nægtet.\nHertil kommer, som en sikkerhedsforanstaltning, at nogle privilegier, som rutinemæssigt tildeles til oprettede konti, er blevet midlertidigt inddraget fra din konto.\nHer er kort beskrivelse af misbrugsreglen, som din handling udløste: $1",
+ "abusefilter-blocker": "Misbrugsfilter",
+ "abusefilter-blockreason": "Automatisk blokeret af misbrugsfilter.\nBeskrivelse af den udløste regel: $1",
+ "abusefilter-degroupreason": "Rettigheder fjernet automatisk af misbrugsfilter.\nRegelbeskrivelse: $1",
+ "abusefilter-accountreserved": "Dette kontonavn er reserveret til brug af misbrugsfilteret.",
+ "right-abusefilter-modify": "Redigér misbrugsfiltre",
+ "right-abusefilter-view": "Se misbrugsfiltre",
+ "right-abusefilter-log": "Se misbrugsloggen",
+ "right-abusefilter-log-detail": "Se detaljerede poster i misbrugsloggen",
+ "right-abusefilter-private": "Se privat information i misbrugsloggen",
+ "right-abusefilter-private-log": "Se misbrugsfiltret for private oplysningers adgangslog",
+ "right-abusefilter-modify-restricted": "Ændre misbrugsfiltre med begrænsede handlinger",
+ "right-abusefilter-revert": "Tilbagerul alle ændringer udført af et bestemt misbrugsfilter",
+ "right-abusefilter-view-private": "Se misbrugsfiltre markeret som private",
+ "right-abusefilter-log-private": "Se logposter fra misbrugsfiltre der er markeret som private",
+ "right-abusefilter-hide-log": "Skjule poster i misbrugslog",
+ "right-abusefilter-hidden-log": "Se skjulte poster i misbrugslog",
+ "right-abusefilter-modify-global": "Opret eller redigér globale misbrugsfiltre",
+ "action-abusefilter-modify": "redigér misbrugsfiltre",
+ "action-abusefilter-view": "se misbrugsfiltre",
+ "action-abusefilter-log": "se misbrugsloggen",
+ "action-abusefilter-log-detail": "vis detaljerede poster i misbrugsloggen",
+ "action-abusefilter-private": "se privat information i misbrugsloggen",
+ "action-abusefilter-modify-restricted": "ændre misbrugsfiltre med begrænsede handlinger",
+ "action-abusefilter-revert": "tilbagerulle alle ændringer udført af et bestemt misbrugsfilter",
+ "action-abusefilter-view-private": "se misbrugsfiltre markeret som private",
+ "abusefilter-log": "Log for misbrugsfilter",
+ "abusefilter-log-summary": "Denne log viser en liste over alle handlinger som filtrene har opfanget.",
+ "abusefilter-log-search": "Søg i misbrugsloggen",
+ "abusefilter-log-search-user": "Bruger:",
+ "abusefilter-log-search-filter": "Filter-id'er (adskil med lodrette streger):",
+ "abusefilter-log-search-title": "Titel:",
+ "abusefilter-log-search-wiki": "Wiki:",
+ "abusefilter-log-search-submit": "Søg",
+ "abusefilter-log-entry": "$1: $2 udløste et misbrugsfilter med handlingen \"$3\" på $4.\nForanstaltninger: $5.\nFilterbeskrivelse: $6",
+ "abusefilter-log-entry-withdiff": "$1: $2 udløste et misbrugsfilter med handlingen \"$3\" på $4.\nForanstaltninger: $5;\nFilterbeskrivelse: $6 ($7)",
+ "abusefilter-log-detailedentry-meta": "$1: $2 udløste $3 med handlingen \"$4\" på $5.\nForanstaltninger: $6.\nFilterbeskrivelse: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "globalt filter $1",
+ "abusefilter-log-detailedentry-local": "filter $1",
+ "abusefilter-log-detailslink": "detaljer",
+ "abusefilter-log-diff": "forskel",
+ "abusefilter-log-hidelink": "juster synlighed",
+ "abusefilter-log-details-legend": "Detaljer for logpunkt $1",
+ "abusefilter-log-details-var": "Variabel",
+ "abusefilter-log-details-val": "Værdi",
+ "abusefilter-log-details-vars": "Handlingsparametre",
+ "abusefilter-log-details-private": "Privat log information",
+ "abusefilter-log-details-ip": "Ophavs-IP",
+ "abusefilter-log-noactions": "ingen",
+ "abusefilter-log-details-diff": "Ændringer udført i redigeringen",
+ "abusefilter-log-linkoncontribs": "misbrugslog",
+ "abusefilter-log-linkoncontribs-text": "Misbrugslog for denne bruger",
+ "abusefilter-log-hidden": "(post skjult)",
+ "abusefilter-log-hidden-implicit": "(skjult da versionen er blevet slettet)",
+ "abusefilter-log-cannot-see-details": "Du har ikke tilladelse til at se detaljer om denne post.",
+ "abusefilter-log-cannot-see-private-details": "Du har ikke tilladelse til at se private oplysninger om denne andgang",
+ "abusefilter-log-details-hidden": "Du kan ikke se detaljerne for denne post, fordi den er skjult for offentligheden",
+ "abusefilter-log-hide-legend": "Skjul loghandlig",
+ "abusefilter-log-hide-id": "Loghandlings-id:",
+ "abusefilter-log-hide-hidden": "Skjul denne loghandling for offentligheden",
+ "abusefilter-log-hide-reason": "Årsag:",
+ "abusefilter-log-hide-forbidden": "Du har ikke rettigheder til at skjule poster i misbrugsfilteret",
+ "abusefilter-logentry-suppress": "Skjulte \"[[$1]]\"",
+ "abusefilter-logentry-unsuppress": "Gjorde \"[[$1]]\" synligt for offentligheden igen",
+ "logentry-abusefilter-hit": "$1 udløste $4 med handlingen \"$5\" på $3. Tiltag: $6 ($7)",
+ "abusefilterprivatedetails-log-name": "Misbrugsfilter for private oplysningers adgangslog",
+ "abusefilter-management": "Håndtering af misbrugsfilter",
+ "abusefilter-list": "Alle filtre",
+ "abusefilter-list-id": "Filter-ID",
+ "abusefilter-list-status": "Status",
+ "abusefilter-list-public": "Offentlig beskrivelse",
+ "abusefilter-list-consequences": "Konsekvenser",
+ "abusefilter-list-visibility": "Synlighed",
+ "abusefilter-list-hitcount": "Træftælling",
+ "abusefilter-list-edit": "Redigér",
+ "abusefilter-list-details": "Detaljer",
+ "abusefilter-list-limit": "Antal pr. side:",
+ "abusefilter-list-lastmodified": "Senest ændret",
+ "abusefilter-list-group": "Filtergruppe",
+ "abusefilter-hidden": "Privat",
+ "abusefilter-unhidden": "Offentlig",
+ "abusefilter-enabled": "Aktiveret",
+ "abusefilter-deleted": "Slettet",
+ "abusefilter-disabled": "Deaktiveret",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|træf|træf}}",
+ "abusefilter-new": "Opret et nyt filter",
+ "abusefilter-return": "Vend tilbage til filterhåndtering",
+ "abusefilter-status-global": "Globalt",
+ "abusefilter-list-options": "Indstillinger",
+ "abusefilter-list-options-deleted": "Slettede filtre:",
+ "abusefilter-list-options-deleted-only": "Vis kun slettede filtre",
+ "abusefilter-list-options-deleted-hide": "Skjul slettede filtre",
+ "abusefilter-list-options-deleted-show": "Inkluder slettede filtre",
+ "abusefilter-list-options-scope": "Vis filtre:",
+ "abusefilter-list-options-scope-local": "Kun lokale regler",
+ "abusefilter-list-options-scope-global": "Kun globale regler",
+ "abusefilter-list-options-scope-all": "Lokale og globale regler",
+ "abusefilter-list-options-disabled": "Deaktiverede filtre:",
+ "abusefilter-list-options-hidedisabled": "Skjul deaktiverede filtre",
+ "abusefilter-list-options-submit": "Opdatér",
+ "abusefilter-tools-text": "Her er nogle værktøjer som kan være nyttige til at formulere og fejlsøge misbrugsfiltre.",
+ "abusefilter-tools-expr": "Udtrykstester",
+ "abusefilter-tools-submitexpr": "Evaluér",
+ "abusefilter-tools-reautoconfirm": "Genopret status som registreret bruger",
+ "abusefilter-tools-reautoconfirm-user": "Bruger:",
+ "abusefilter-tools-reautoconfirm-submit": "Gen-registrer bruger",
+ "abusefilter-reautoconfirm-none": "Den bruger har ikke fået suspenderet sin status som registreret bruger.",
+ "abusefilter-reautoconfirm-notallowed": "Du har ikke tilladelse til at genoprette status som registreret bruger.",
+ "abusefilter-reautoconfirm-done": "Kontoens status som registreret bruger er blevet genoprettet",
+ "abusefilter-status": "Af {{PLURAL:$1|den seneste $1 handling|de seneste $1 handlinger}} har $2 ($3 %) nået betingelsesgrænsen på $4, og $5 ($6 %) har udløst et af de aktuelt aktiverede filtre.",
+ "abusefilter-edit": "Redigerer misbrugsfilter",
+ "abusefilter-edit-subtitle": "Redigerer filter $1",
+ "abusefilter-edit-subtitle-new": "Opretter filter",
+ "abusefilter-edit-oldwarning": "<strong>Du redigerer en gammel version af dette filter.\nDen citerede statistik er for den seneste version af filteret.\nHvis du gemmer dine ændringer, overskriver du alle ændringer siden den version du redigerer.</strong> &bull;\n[[Special:AbuseFilter/history/$2|Vend tilbage til dette filters historik]].",
+ "abusefilter-edit-status-label": "Statistik:",
+ "abusefilter-edit-status": "Af {{PLURAL:$1|den sidste handling|de sidste $1 handlinger}} har dette filter matchet $2 ($3 %).",
+ "abusefilter-edit-status-profile": "Af {{PLURAL:$1|den sidste handling|de sidste $1 handlinger}} har dette filter matchet $2 ($3 %).\nI gennemsnit er operationstiden $4 ms, og det optager $5 {{PLURAL:$5|tilstand|tilstande}} af tilstandsgrænsen.",
+ "abusefilter-edit-new": "Nyt filter",
+ "abusefilter-edit-save": "Gem filter",
+ "abusefilter-edit-id": "Filter-ID:",
+ "abusefilter-edit-description": "Beskrivelse:\n:''(vises offentligt)''",
+ "abusefilter-edit-group": "Filtergruppe:",
+ "abusefilter-edit-flags": "Flag:",
+ "abusefilter-edit-enabled": "Aktivér dette filter",
+ "abusefilter-edit-deleted": "Markér som slettet",
+ "abusefilter-edit-hidden": "Skjul detaljer om dette filter fra offentlig visning",
+ "abusefilter-edit-global": "Globalt filter",
+ "abusefilter-edit-rules": "Betingelser:",
+ "abusefilter-edit-notes": "Noter:",
+ "abusefilter-edit-lastmod": "Filter senest ændret:",
+ "abusefilter-edit-lastmod-text": "$1 af $2",
+ "abusefilter-edit-hitcount": "Filtertræf:",
+ "abusefilter-edit-consequences": "Handlinger som udføres ved træf",
+ "abusefilter-edit-action-warn": "Udfør disse handlinger efter at have givet brugeren en advarsel",
+ "abusefilter-edit-action-disallow": "Forhindre brugeren i at udføre den ønskede handling",
+ "abusefilter-edit-action-blockautopromote": "Fjern brugerens status som registreret bruger",
+ "abusefilter-edit-action-degroup": "Fjern brugeren fra alle priviligerede grupper",
+ "abusefilter-edit-action-block": "Bloker brugeren og/eller IP-adressen fra redigering",
+ "abusefilter-edit-action-throttle": "Udfør kun handlingerne hvis brugeren overstiger en rategrænse",
+ "abusefilter-edit-action-rangeblock": "Bloker det /16-interval, som brugeren kommer fra",
+ "abusefilter-edit-action-tag": "Mærk redigeringen til yderligere gennemgang",
+ "abusefilter-edit-throttle-count": "Antal tilladte handlinger:",
+ "abusefilter-edit-throttle-period": "Tidsrum:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|sekund|sekunder}}",
+ "abusefilter-edit-throttle-groups": "Gruppebegrænsning efter:\n:''(én pr. linje, kombiner med kommaer)''",
+ "abusefilter-edit-warn-message": "Systemmeddelelse som skal bruges til advarsel:",
+ "abusefilter-edit-warn-other": "Anden meddelelse",
+ "abusefilter-edit-warn-other-label": "Sidenavn på anden meddelelse:\n:''(uden MediaWiki-præfiks)''",
+ "abusefilter-edit-warn-actions": "Handlinger:",
+ "abusefilter-edit-warn-preview": "Forhåndsvis valgt meddelelse",
+ "abusefilter-edit-warn-edit": "Opret/redigér valgt meddelelse",
+ "abusefilter-edit-tag-tag": "Mærker som skal anvendes (et pr. linje):",
+ "abusefilter-edit-block-anon-durations": "Varighed på blokeringen for anonyme brugere:",
+ "abusefilter-block-anon": "anonyme brugere",
+ "abusefilter-block-user": "registrerede brugere",
+ "abusefilter-edit-denied": "Du kan ikke se detaljerne i dette filter, da det er skjult for offentligheden.",
+ "abusefilter-edit-main": "Filterparametre",
+ "abusefilter-edit-done-subtitle": "Filter redigeret",
+ "abusefilter-edit-done": "[[Special:AbuseFilter/history/$1/diff/prev/$2|Dine ændringer]] til [[Special:AbuseFilter/$1|filter $3]] er blevet gemt.",
+ "abusefilter-edit-badsyntax": "Der er en syntaksfejl i det filter du angav.\nResultatet fra parseren var: <pre>$1</pre>",
+ "abusefilter-edit-restricted": "Du kan ikke redigere dette filter, fordi det indeholder en eller flere begrænsede handlinger.\nBed en bruger med tilladelse til at tilføje begrænsede handlinger om at lave ændringen for dig.",
+ "abusefilter-edit-viewhistory": "Vis dette filters historik",
+ "abusefilter-edit-history": "Historik:",
+ "abusefilter-edit-check": "Tjek syntaks",
+ "abusefilter-edit-badfilter": "Det filter du har angivet findes ikke",
+ "abusefilter-edit-revert": "Tilbagerul handlinger udført af dette filter",
+ "abusefilter-edit-tools": "Værktøj:",
+ "abusefilter-edit-test-link": "Test dette filter mod seneste ændringer",
+ "abusefilter-edit-export": "Eksporter dette filter til en anden wiki",
+ "abusefilter-edit-syntaxok": "Ingen syntaksfejl fundet.",
+ "abusefilter-edit-syntaxerr": "Syntaksfejl fundet: $1",
+ "abusefilter-edit-bad-tags": "Et eller flere af de tags, du har angivet, er ikke gyldige.\nTags bør være korte, og de bør ikke indeholde specialtegn.",
+ "abusefilter-edit-notallowed": "Du har ikke tilladelse til at oprette eller redigere misbrugsfiltre",
+ "abusefilter-edit-notallowed-global": "Du har ikke tilladelse til at oprette eller redigere globale misbrugsfiltre",
+ "abusefilter-edit-notallowed-global-custom-msg": "Brugerdefinerede advarselsmeddelelser understøttes ikke for globale filtre",
+ "abusefilter-edit-builder-select": "Vælg en indstilling for at tilføje det ved markøren",
+ "abusefilter-edit-builder-group-op-arithmetic": "Aritmetiske operatører",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Addition (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Subtraktion (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Multiplikation (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Division (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Rest/modulo (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Potens (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Sammenligningsoperatører",
+ "abusefilter-edit-builder-op-comparison-equal": "Lig med (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Ikke lig med (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "Mindre end (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Større end (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Mindre end eller lig med (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Større end eller lig med (>=)",
+ "abusefilter-edit-builder-group-op-bool": "Boolske operatører",
+ "abusefilter-edit-builder-op-bool-not": "Ikke (!)",
+ "abusefilter-edit-builder-op-bool-and": "Og (&)",
+ "abusefilter-edit-builder-op-bool-or": "Eller (|)",
+ "abusefilter-edit-builder-group-misc": "Diverse",
+ "abusefilter-edit-builder-misc-in": "del af en streng (in)",
+ "abusefilter-edit-builder-misc-like": "Passer med mønster (like)",
+ "abusefilter-edit-builder-misc-rlike": "Passer med regulært udtryk (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "Stemmer overens med regulært udtryk, store og små bogstaver (irlike)",
+ "abusefilter-edit-builder-misc-contains": "Venstre streng indeholder højre streng (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "Ordret streng (\"\")",
+ "abusefilter-edit-builder-misc-tern": "Trefoldig operator (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "Betinget (if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "Funktioner",
+ "abusefilter-edit-builder-funcs-length": "Strenglængde (length)",
+ "abusefilter-edit-builder-funcs-lcase": "Konverter til små bogstaver (lcase)",
+ "abusefilter-edit-builder-funcs-ucase": "Konverter til store bogstaver (ucase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "Normaliser forvirrende tegn (ccnorm)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "Fjern dobbelte tegn (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "Specialtegn / samlet antal tegn (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "Normaliser (norm)",
+ "abusefilter-edit-builder-funcs-count": "Antal gange streng X findes i streng Y (count)",
+ "abusefilter-edit-builder-funcs-rcount": "Antal gange det regulære udtryk X findes i streng Y (rcount)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "Fjern tomrum (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "Fjern specialtegn (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "Er IP i intervallet? (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "Søgestreng for flere understrenge (contains_any)",
+ "abusefilter-edit-builder-funcs-substr": "Understreng (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "Placering af understreng i streng (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "Erstat understreng med streng (str_replace)",
+ "abusefilter-edit-builder-funcs-rescape": "Escape streng som ordret i regex (rescape)",
+ "abusefilter-edit-builder-funcs-set_var": "Sæt variabel (set_var)",
+ "abusefilter-edit-builder-group-vars": "Variabler",
+ "abusefilter-edit-builder-vars-accountname": "Kontonavn (on account creation)",
+ "abusefilter-edit-builder-vars-timestamp": "Unix-tidsstempel ved ændring",
+ "abusefilter-edit-builder-vars-timestamp-expanded": "Tidsstempel for loggen",
+ "abusefilter-edit-builder-vars-action": "Handling",
+ "abusefilter-edit-builder-vars-addedlines": "Linjer tilføjet i redigering",
+ "abusefilter-edit-builder-vars-delta": "Størrelse ændret i redigering",
+ "abusefilter-edit-builder-vars-diff": "Samlet diff af ændringer foretaget i redigering",
+ "abusefilter-edit-builder-vars-newsize": "Ny sidestørrelse",
+ "abusefilter-edit-builder-vars-oldsize": "Gammel sidestørrelse",
+ "abusefilter-edit-builder-vars-removedlines": "Linjer fjernet i redigering",
+ "abusefilter-edit-builder-vars-summary": "Redigeringssammenfatning",
+ "abusefilter-edit-builder-vars-article-id": "Side-ID",
+ "abusefilter-edit-builder-vars-article-ns": "Sidens navnerum",
+ "abusefilter-edit-builder-vars-article-text": "Sidetitel (uden navnerum)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Fuld sidetitel",
+ "abusefilter-edit-builder-vars-article-views": "Sidevisninger",
+ "abusefilter-edit-builder-vars-movedfrom-id": "Side-ID på kildeside ved flytning",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "Navnerum på kildeside ved flytning",
+ "abusefilter-edit-builder-vars-movedfrom-text": "Titel på kildeside ved flytning",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "Fuld titel på kildeside ved flytning",
+ "abusefilter-edit-builder-vars-movedto-id": "Side-ID på destinationsside ved flytning",
+ "abusefilter-edit-builder-vars-movedto-ns": "Navnerum på destinationsside ved flytning",
+ "abusefilter-edit-builder-vars-movedto-text": "Titel på destinationsside ved flytning",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "Fuld titel på destinationsside ved flytning",
+ "abusefilter-edit-builder-vars-user-editcount": "Brugerens redigeringsantal",
+ "abusefilter-edit-builder-vars-user-age": "Brugerkontoens alder",
+ "abusefilter-edit-builder-vars-user-name": "Brugerkontoens navn",
+ "abusefilter-edit-builder-vars-user-groups": "Grupper (heriblandt implicitte) som brugeren er i",
+ "abusefilter-edit-builder-vars-user-blocked": "Hvorvidt brugeren er blokeret",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "Tidspunkt e-mailadressen blev bekræftet",
+ "abusefilter-edit-builder-vars-recent-contributors": "Seneste ti brugere som har bidraget til siden",
+ "abusefilter-edit-builder-vars-all-links": "Alle eksterne henvisninger i den nye tekst",
+ "abusefilter-edit-builder-vars-added-links": "Alle eksterne henvisninger tilføjet i redigeringen",
+ "abusefilter-edit-builder-vars-removed-links": "Alle eksterne henvisninger fjernet i redigeringen",
+ "abusefilter-edit-builder-vars-old-text": "Den gamle sides wikitekst, før redigeringen",
+ "abusefilter-edit-builder-vars-new-text": "Den nye sides wikitekst, efter redigeringen",
+ "abusefilter-edit-builder-vars-new-pst": "Ny side wikitekst, transformeret før den er gemt",
+ "abusefilter-edit-builder-vars-new-text-stripped": "Ny sidetekst, uden opmarkering",
+ "abusefilter-edit-builder-vars-new-html": "Tolket HTML-kildekode for den nye revision",
+ "abusefilter-edit-builder-vars-restrictions-edit": "Beskyttelsesniveau for redigering af siden",
+ "abusefilter-edit-builder-vars-restrictions-move": "Beskyttelsesniveau for flytning af siden",
+ "abusefilter-edit-builder-vars-restrictions-create": "Beskyt siden mod oprettelse",
+ "abusefilter-edit-builder-vars-restrictions-upload": "Upload beskyttelse af filen",
+ "abusefilter-edit-builder-vars-old-text-stripped": "Gammel sidetekst, uden opmarkering",
+ "abusefilter-edit-builder-vars-old-links": "Henvisninger på siden, før redigeringen",
+ "abusefilter-edit-builder-vars-old-html": "Den gamle sides wikitekst, tolket til HTML",
+ "abusefilter-edit-builder-vars-minor-edit": "Om redigeringen er markeret som mindre ændring",
+ "abusefilter-edit-builder-vars-file-sha1": "SHA1-hash af filindhold",
+ "abusefilter-filter-log": "Seneste filterændringer",
+ "abusefilter-history": "Ændringshistorik for misbrugsfilter #$1",
+ "abusefilter-history-foruser": "Ændringer af $1",
+ "abusefilter-history-hidden": "Skjult",
+ "abusefilter-history-enabled": "Aktiveret",
+ "abusefilter-history-global": "Global",
+ "abusefilter-history-timestamp": "Tid",
+ "abusefilter-history-user": "Bruger",
+ "abusefilter-history-public": "Offentlig filterbeskrivelse",
+ "abusefilter-history-flags": "Flag",
+ "abusefilter-history-filter": "Filterregel",
+ "abusefilter-history-comments": "Kommentarer",
+ "abusefilter-history-actions": "Handlinger",
+ "abusefilter-history-backedit": "Tilbage til filterredigering",
+ "abusefilter-history-deleted": "Slettet",
+ "abusefilter-history-filterid": "Filter",
+ "abusefilter-history-select-legend": "Uddyb søgning",
+ "abusefilter-history-select-user": "Bruger:",
+ "abusefilter-history-select-submit": "Uddyb",
+ "abusefilter-history-diff": "Ændringer",
+ "abusefilter-history-error-hidden": "Filteret som du efterspurgte er skjult, og du kan ikke se dets historik.",
+ "abusefilter-exception-unexpectedatend": "Uventet \"$2\" ved tegn $1.",
+ "abusefilter-exception-expectednotfound": "Forventede et $2 ved tegn $1, ikke fundet (fandt $3 $4 i stedet).",
+ "abusefilter-exception-unrecognisedkeyword": "Ukendt nøgleord $2 ved tegn $1.",
+ "abusefilter-exception-unexpectedtoken": "Uventet token #$3\" (af type $2) ved tegn $1.",
+ "abusefilter-exception-unclosedstring": "Åben streng begyndende ved tegn $1.",
+ "abusefilter-exception-invalidoperator": "Ugyldig operator \"$2\" ved tegn $1.",
+ "abusefilter-exception-unrecognisedtoken": "Ukendt token \"$2\" ved tegn $1.",
+ "abusefilter-exception-noparams": "Ingen parametre givet til funktion \"$2\" ved tegn $1.",
+ "abusefilter-exception-dividebyzero": "Ulovligt forsøg på at dividere $2 med nul ved tegn $1.",
+ "abusefilter-exception-unrecognisedvar": "Ukendt variabel $2 ved tegn $1.",
+ "abusefilter-exception-notenoughargs": "Funktionskaldet $2 ved tegn $1 havde ikke nok argumenter.\nForventede {{PLURAL:$3|et argument|$3 argumenter}}, fik $4",
+ "abusefilter-exception-regexfailure": "Fejl i det regulære udtryk \"$3\" ved tegn $1: \"$2\"",
+ "abusefilter-exception-overridebuiltin": "Ulovlig overskrivning af den indbyggede variabel \"$2\" ved tegnet $1.",
+ "abusefilter-exception-outofbounds": "Anmoder om ikke-eksisterende listeelement $2 (listens størrelse = $3) ved tegnet $1.",
+ "abusefilter-exception-notlist": "Efterspørger tabelelement fra en ikke-tabel ved tegn $1.",
+ "abusefilter-action-tag": "Mærke",
+ "abusefilter-action-throttle": "Begrænsning af ændringshastighed",
+ "abusefilter-action-warn": "Advar",
+ "abusefilter-action-blockautopromote": "Blokering automatisk bekræftet",
+ "abusefilter-action-block": "Blokér",
+ "abusefilter-action-degroup": "Fjern fra grupper",
+ "abusefilter-action-rangeblock": "Intervalblokering",
+ "abusefilter-action-disallow": "Nægt",
+ "abusefilter-revert-title": "Tilbagerul alle ændringer af filter $1",
+ "abusefilter-revert-intro": "Med denne form kan du tilbagerulle alle ændringer foretaget af misbrugsfilteret $1.\nVær venligst forsigtig når du bruger dette værktøj.",
+ "abusefilter-revert-preview-item": "$1: $2 gjorde en $3 på $4.\nHandlinger som skal tilbagerulles: $5 ($6)",
+ "abusefilter-revert-search-legend": "Vælg misbrugsfilterhandlinger som skal tilbagerulles",
+ "abusefilter-revert-periodstart": "Periodestart:",
+ "abusefilter-revert-periodend": "Periodeslut:",
+ "abusefilter-revert-search": "Vælg handlinger",
+ "abusefilter-revert-filter": "Filter:",
+ "abusefilter-revert-preview-intro": "Nedenfor er de handlinger, som misbrugsfilteret har udført, der vil blive tilbagerullet af denne handling.\nKontrollér dem omhyggeligt, og klik på \"{{int:abusefilter-revert-confirm}}\" for at bekræfte dit valg.",
+ "abusefilter-revert-confirm": "Bekræft",
+ "abusefilter-revert-success": "Du har tilbagerullet alle handlinger udført af misbrugsfilteret på grund af [[Special:AbuseFilter/$1|filter $2]].",
+ "abusefilter-revert-reason": "Automatisk tilbagerulning af alle handlinger udført af misbrugsfilteret på grund af filter $1.\nBegrundelse: $2",
+ "abusefilter-revert-reasonfield": "Begrundelse:",
+ "abusefilter-test": "Test et filter mod tidligere redigeringer",
+ "abusefilter-test-intro": "På denne side kan du kontrollere et filter, der er indtastet i boksen nedenfor mod {{PLURAL:$1|den sidste ændring|de sidste $1 ændringer}}.\nFor at indlæse et eksisterende filter, skriv dets filter-ID i boksen under Rediger tekstboksen, og klik på knappen \"{{int:abusefilter-test-load}}\".",
+ "abusefilter-test-legend": "Filtertesting",
+ "abusefilter-test-load-filter": "Indlæs filter-ID:",
+ "abusefilter-test-submit": "Test",
+ "abusefilter-test-load": "Indlæs",
+ "abusefilter-test-user": "Ændringer af bruger:",
+ "abusefilter-test-period-start": "Ændringer udført efter:",
+ "abusefilter-test-period-end": "Ændringer udført før:",
+ "abusefilter-test-page": "Ændringer udført på side:",
+ "abusefilter-test-shownegative": "Vis ændringer som ikke matcher filteret",
+ "abusefilter-test-syntaxerr": "Det filter, du angav indeholdt en fejl i syntaksen.\nDu kan modtage en fuld forklaring ved at klikke på knappen \"{{int:abusefilter-edit-check}}\".",
+ "abusefilter-changeslist-examine": "undersøg",
+ "abusefilter-examine": "Undersøg enkelte ændringer",
+ "abusefilter-examine-intro": "Denne side lader dig undersøge variablerne genereret af misbrugsfilteret for en enkelt ændring, og teste den mod filtre.",
+ "abusefilter-examine-legend": "Vælg ændringer",
+ "abusefilter-examine-diff": "Diff-URL:",
+ "abusefilter-examine-user": "Bruger:",
+ "abusefilter-examine-title": "Sidetitel:",
+ "abusefilter-examine-submit": "Søg",
+ "abusefilter-examine-vars": "Variabler genereret for denne ændring",
+ "abusefilter-examine-test": "Test denne ændring mod et filter",
+ "abusefilter-examine-test-button": "Test filter",
+ "abusefilter-examine-match": "Filteret matchede denne ændring.",
+ "abusefilter-examine-nomatch": "Filteret matchede ikke denne ændring.",
+ "abusefilter-examine-syntaxerror": "Filteret har ugyldig syntaks",
+ "abusefilter-examine-notfound": "Ændringen du efterspurgte kunne ikke findes.",
+ "abusefilter-examine-incompatible": "Ændringen du efterspurgte understøttes ikke af misbrugsfilteret",
+ "abusefilter-examine-noresults": "Ingen resultater blev fundet for søgeparametrene du angav.",
+ "abusefilter-topnav": "'''Navigation for misbrugsfilter'''",
+ "abusefilter-topnav-home": "Hjem",
+ "abusefilter-topnav-test": "Gruppetesting",
+ "abusefilter-topnav-examine": "Undersøg tidligere ændringer",
+ "abusefilter-topnav-log": "Misbrugslog",
+ "abusefilter-topnav-tools": "Fejlsøgningsværktøjer",
+ "abusefilter-topnav-import": "Importer filter",
+ "abusefilter-log-name": "Log for misbrugsfilter",
+ "abusefilter-log-header": "Denne log viser en oversigt over ændringer i filtre.\nFor fuldstændige oplysninger, se [[Special:AbuseFilter/history|listen]] over de seneste ændringer for filtre.",
+ "abusefilter-log-noresults": "Ingen resultater",
+ "abusefilter-diff-title": "Forskelle mellem versioner",
+ "abusefilter-diff-item": "Element",
+ "abusefilter-diff-version": "Version fra $1 {{GENDER:$3|af}} $2",
+ "abusefilter-diff-info": "Grundlæggende information",
+ "abusefilter-diff-pattern": "Filterregler",
+ "abusefilter-diff-invalid": "Kunne ikke hente de ønskede versioner",
+ "abusefilter-diff-backhistory": "Tilbage til filterhistorik",
+ "abusefilter-diff-prev": "Ældre ændring",
+ "abusefilter-diff-next": "Nyere ændring",
+ "abusefilter-import-intro": "Du kan bruge denne grænseflade til at importere filtre fra andre wiki-websteder direkte.\nKlik på kilde wiki, \"{{int:abusefilter-edit-export}}\" under \"{{int:abusefilter-edit-tools}}\" i redigeringsgrænsefladen.\nKopiere fra tekstfeltet der vises, og indsætte det i denne tekstboks, og klik derefter på \"{{int:abusefilter-import-submit}}\".",
+ "abusefilter-import-submit": "Importer data",
+ "abusefilter-group-default": "Standard",
+ "abusefilter-view-private-submit": "Se private oplysninger",
+ "abusefilter-view-private": "Se private oplysninger",
+ "abusefilter-view-private-reason": "Grund for adgang til private oplysninger:",
+ "abusefilter-log-details-id": "Log ID",
+ "log-description-abusefilterprivatedetails": "Denne log viser en liste over gange, hvor en bruger havde adgang til de private oplysninger i en misbrugslog.",
+ "abusefilter-noreason": "Advarsel: For at se de private oplysninger i denne log, skal du angive en grund.",
+ "abusefilter-log-ip-not-available": "Ikke tilgængelig."
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/de-ch.json b/www/wiki/extensions/AbuseFilter/i18n/de-ch.json
new file mode 100644
index 00000000..cb6ef9d0
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/de-ch.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "Filzstift",
+ "Geitost"
+ ]
+ },
+ "abusefilter-log-entry": "$1: $2 löste durch die Aktion «$3» auf «$4» einen Missbrauchsfilter aus.\nFilteraktion: «$5»;\nFilterbeschreibung: «$6»",
+ "abusefilter-log-detailedentry-meta": "$1: $2 löste durch die Aktion «$4» auf die Seite «$5» den $3 aus.\nErgriffene Massnahmen: $6;\nFilterbeschreibung: $7 ($8)",
+ "abusefilter-edit-action-blockautopromote": "Den Status «Automatisch bestätigter Benutzer» entziehen.",
+ "abusefilter-edit-done": "[[Special:AbuseFilter/history/$1/diff/prev/$2|Deine Änderungen]] am [[Special:AbuseFilter/$1|Filter «$3»]] wurden erfolgreich gespeichert.",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "Leerschläge entfernen (rmwhitespace)"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/de-formal.json b/www/wiki/extensions/AbuseFilter/i18n/de-formal.json
new file mode 100644
index 00000000..5c6e8e73
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/de-formal.json
@@ -0,0 +1,34 @@
+{
+ "@metadata": {
+ "authors": [
+ "ChrisiPK",
+ "Giftpflanze",
+ "Kghbln",
+ "MichaelFrey",
+ "The Evil IP address",
+ "Umherirrender"
+ ]
+ },
+ "abusefilter-warning": "'''Achtung:''' Diese Aktion wurde als potentiell unkonstruktiv erkannt.\nSolche Beiträge werden meist sehr schnell entfernt. In wiederholten und besonders schlimmen Fällen wird Ihr Benutzerkonto bzw. Ihre IP-Adresse gesperrt.\nWenn Sie meinen, dass diese Aktion sinnvoll ist, können Sie sie zum Bestätigen erneut speichern.\nKurzbeschreibung der verletzten Regel: $1",
+ "abusefilter-disallowed": "Diese Aktion wurde automatisch als schädlich erkannt und deshalb nicht ausgeführt.\nSofern Sie denken, dass Ihr Beitrag konstruktiv war, wenden Sie sich bitte an einen Administrator und schildern ihm, was Sie beizutragen versucht haben.\nKurzbeschreibung der verletzten Regel: $1",
+ "abusefilter-blocked-display": "Diese Aktion wurde automatisch als schädlich erkannt und nicht ausgeführt.\nFerner wurden Ihr Benutzerkonto und alle Ihnen zugehörigen IP-Adressen gesperrt.\nWenn Sie denken, dass es sich hierbei um einen Fehler handelt, wenden Sie sich bitte an einen Administrator.\nKurzbeschreibung der verletzten Regel: $1",
+ "abusefilter-degrouped": "Diese Aktion wurde als schädlich erkannt und nicht ausgeführt.\nDa es möglich ist, dass Ihr Benutzerkonto kompromittiert wurde, wurden Ihnen alle gewährten Rechte genommen.\nWenn Sie denken, dass es sich hierbei um einen Fehler handelt, so wenden Sie sich bitte an einen Bürokraten und schilderen ihm, was Sie gerade getan haben, damit Ihre Rechte wiederhergestellt werden können.\nKurzbeschreibung der verletzten Regel: $1",
+ "abusefilter-autopromote-blocked": "Diese Aktion wurde als schädlich erkannt und nicht ausgeführt.\nZusätzlich wurden Ihnen als Sicherheitsmaßnahme einige automatisch vergebene Rechte kurzzeitig genommen.\nKurzbeschreibung der verletzten Regel: $1",
+ "abusefilter-blockreason": "Sie wurden durch einen Missbrauchsfilter automatisch gesperrt. Beschreibung der zutreffenden Regel: $1",
+ "abusefilter-degroupreason": "Ihre Berechtigungen wurden durch einen Missbrauchsfilter automatisch beschränkt.\nBeschreibung der Regel: $1",
+ "abusefilter-log-cannot-see-details": "Sie haben nicht die Berechtigung, Einzelheiten zur dieser Eingabe einzusehen.",
+ "abusefilter-log-details-hidden": "Sie können die Details dieses Eintrags nicht einsehen, da sie vor der Öffentlichkeit verborgen sind.",
+ "abusefilter-log-hide-forbidden": "Sie haben nicht die Berechtigung, die Einträge des Missbrauchsfilter-Logbuchs auszublenden.",
+ "abusefilter-reautoconfirm-notallowed": "Sie sind nicht berechtigt, Benutzer wieder zu automatisch bestätigten Benutzern zu machen.",
+ "abusefilter-edit-oldwarning": "<strong>Sie bearbeiten nicht die aktuelle, sondern eine ältere Version dieses Filters. Die Statistik gilt nur für die letzte Version des Filters. Wenn Sie speichern, wird diese als aktuelle Version neu gespeichert. </strong> &bull; [[Special:AbuseFilter/history/$2|Zurück zur Versionsgeschichte des Filters]]",
+ "abusefilter-edit-denied": "Sie können die Einzelheiten zu diesem Filter nicht einsehen, da sie verborgen sind.",
+ "abusefilter-edit-done": "[[Special:AbuseFilter/history/$1/diff/prev/$2|Ihre Änderungen]] am [[Special:AbuseFilter/$1|Filter „$3“]] wurden erfolgreich gespeichert.",
+ "abusefilter-edit-badsyntax": "Der von Ihnen spezifizierte Filter enthält einen Syntaxfehler. Die Parserausgabe lautete: <pre>$1</pre>",
+ "abusefilter-edit-restricted": "Sie können diesen Filter nicht bearbeiten, weil er eine oder mehrere verbotene Aktionen enthält.\nBitten Sie einen Benutzer, der verbotene Aktionen hinzufügen kann, darum, die Änderung für Sie vorzunehmen.",
+ "abusefilter-edit-notallowed": "Es ist Ihnen nicht erlaubt, Missbrauchsfilter zu erstellen oder zu bearbeiten",
+ "abusefilter-revert-intro": "Mit diesem Formular können alle Änderungen durch den Missbrauchsfilter aufgrund von Filter $1 rückgängig gemacht werden.\nBitte verwenden Sie dieses Werkzeug mit Vorsicht.",
+ "abusefilter-revert-preview-intro": "Unten sind die Aktionen des Missbrauchsfilters angegeben, die hiermit rückgängig gemacht werden.\nBitte überprüfen Sie sie sorgfältig und klicken Sie dann auf „{{int:abusefilter-revert-confirm}}“, um Ihre Auswahl zu bestätigen.",
+ "abusefilter-revert-success": "Sie haben alle Aktionen des Missbrauchsfilters, die aufgrund von [[Special:AbuseFilter/$1|Filter $2]] vorgenommen wurden, rückgängig gemacht.",
+ "abusefilter-test-intro": "Mit dieser Seite kann ein Filter probeweise auf die {{PLURAL:$1|letzte Änderung|letzten $1 Änderungen}} angewendet werden.\nUm einen bestehenden Filter zu laden, geben Sie seine Filter-ID in das Feld unterhalb des Bearbeiten-Textfeldes ein und klicken Sie auf den „Laden“-Button.",
+ "abusefilter-import-intro": "Sie können diese Schnittstelle verwenden, um Filter aus anderen Wikis zu importieren. Klicken Sie im Quellwiki auf die Schaltfläche „<abusefilter-edit-export>“ innerhalb von „<abusefilter-tools-subtitle>“. Kopieren Sie dort den erscheinenden Code, fügen Sie ihn hier ein und klicken Sie dann auf die Schaltfläche „<abusefilter-import-submit>“."
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/de.json b/www/wiki/extensions/AbuseFilter/i18n/de.json
new file mode 100644
index 00000000..59a9e313
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/de.json
@@ -0,0 +1,546 @@
+{
+ "@metadata": {
+ "authors": [
+ "Cedric31",
+ "ChrisiPK",
+ "Church of emacs",
+ "Geitost",
+ "Giftpflanze",
+ "Kghbln",
+ "Leithian",
+ "MF-Warburg",
+ "Merlissimo",
+ "Metalhead64",
+ "Pill",
+ "Purodha",
+ "Revolus",
+ "Servien",
+ "The Evil IP address",
+ "Umherirrender",
+ "W (aka Wuzur)",
+ "Wikifan",
+ "Xqt",
+ "Luke081515",
+ "J. 'mach' wust",
+ "Predatorix",
+ "Inkowik",
+ "Matma Rex",
+ "MGChecker",
+ "Daimona Eaytoy",
+ "ToBeFree"
+ ]
+ },
+ "abusefilter-desc": "Wendet Heuristiken automatisch auf Bearbeitungen an",
+ "abusefilter": "Missbrauchsfilter-Einstellungen",
+ "abuselog": "Missbrauchsfilter-Logbuch",
+ "abusefilter-intro": "Willkommen auf der Missbrauchsfilter-Management-Oberfläche.\nDer Missbrauchsfilter ist ein automatischer Mechanismus, welcher automatische Heuristiken auf alle Änderungen anwendet.\nDiese Oberfläche zeigt eine Liste aller definierten Filter und erlaubt es, diese zu verändern.",
+ "abusefilter-mustbeeditor": "Aus Sicherheitsgründen dürfen nur Benutzer mit dem Recht zur Änderung von Missbrauchsfiltern diese Schnittstelle verwenden.",
+ "abusefilter-warning": "'''Achtung:''' Diese Aktion wurde als potentiell unkonstruktiv erkannt.\nSolche Aktionen werden meist sehr schnell entfernt. In wiederholten und besonders schlimmen Fällen wird dein Benutzerkonto bzw. deine IP-Adresse gesperrt.\nWenn du meinst, dass diese Aktion sinnvoll ist, kannst du sie, um sie zu bestätigen, erneut speichern.\nKurzbeschreibung der verletzten Regel: $1",
+ "abusefilter-disallowed": "Diese Aktion wurde automatisch als schädlich erkannt und deshalb nicht ausgeführt.\nWenn du denkst, dass deine Aktion konstruktiv war, wende dich bitte an einen Administrator und schildere ihm, was du versucht hast beizutragen.\nKurzbeschreibung der verletzten Regel: $1",
+ "abusefilter-blocked-display": "Diese Aktion wurde automatisch als schädlich erkannt und nicht ausgeführt.\nFerner wurden dein Benutzerkonto und alle zugehörigen IP-Adressen gesperrt.\nWenn du denkst, dass es sich hierbei um einen Fehler handelt, wende dich bitte an einen Administrator.\nKurzbeschreibung der verletzten Regel: $1",
+ "abusefilter-degrouped": "Diese Aktion wurde als schädlich erkannt und nicht ausgeführt.\nDa es möglich ist, dass dein Benutzerkonto kompromittiert wurde, wurden dir alle gewährten Rechte genommen.\nWenn du denkst, dass es sich hierbei um einen Fehler handelt, so wende dich bitte an einen Bürokraten und schildere ihm, was du gerade getan hast, damit deine Rechte wiederhergestellt werden können.\nKurzbeschreibung der verletzten Regel: $1",
+ "abusefilter-autopromote-blocked": "Diese Aktion wurde als schädlich erkannt und nicht ausgeführt.\nZusätzlich wurden dir als Sicherheitsmaßnahme einige automatisch vergebene Rechte kurzzeitig genommen.\nKurzbeschreibung der verletzten Regel: $1",
+ "abusefilter-blocker": "Missbrauchsfilter",
+ "abusefilter-blockreason": "Du wurdest durch einen Missbrauchsfilter automatisch gesperrt. Beschreibung der zutreffenden Regel: $1",
+ "abusefilter-degroupreason": "Deine Berechtigungen wurden durch einen Missbrauchsfilter automatisch beschränkt.\nBeschreibung der Regel: $1",
+ "abusefilter-accountreserved": "Dieser Benutzername ist für den Missbrauchsfilter reserviert.",
+ "right-abusefilter-modify": "Missbrauchsfilter bearbeiten",
+ "right-abusefilter-view": "Missbrauchsfilter ansehen",
+ "right-abusefilter-log": "Missbrauchsfilter-Logbuch einsehen",
+ "right-abusefilter-log-detail": "Erweitertes Missbrauchsfilter-Logbuch einsehen",
+ "right-abusefilter-private": "Private Daten im Missbrauchsfilter-Logbuch einsehen",
+ "right-abusefilter-private-log": "Das Missbrauchsfilter-Private-Einzelheiten-Zugriffs-Logbuch ansehen",
+ "right-abusefilter-modify-restricted": "Missbrauchsfilter mit privilegierten Aktionen bearbeiten",
+ "right-abusefilter-revert": "Alle Bearbeitungen durch einen bestimmten Missbrauchsfilter rückgängig machen",
+ "right-abusefilter-view-private": "Als privat markierten Missbrauchsfilter einsehen",
+ "right-abusefilter-log-private": "Als privat markierten Einträge im Missbrauchsfilter einsehen",
+ "right-abusefilter-hide-log": "Einträge aus dem Missbrauchsfilter-Logbuch ausblenden",
+ "right-abusefilter-hidden-log": "Versteckte Einträge im Missbrauchsfilter-Logbuch einsehen",
+ "right-abusefilter-modify-global": "Globale Missbrauchsfilter erstellen oder verändern",
+ "action-abusefilter-modify": "den Missbrauchsfilter zu bearbeiten",
+ "action-abusefilter-view": "Missbrauchsfilter anzusehen",
+ "action-abusefilter-log": "das Missbrauchsfilter-Logbuch einzusehen",
+ "action-abusefilter-log-detail": "das erweiterte Missbrauchsfilter-Logbuch einzusehen",
+ "action-abusefilter-private": "private Daten im Missbrauchsfilter-Logbuch einzusehen",
+ "action-abusefilter-private-log": "das Missbrauchsfilter-Private-Einzelheiten-Zugriffs-Logbuch anzusehen",
+ "action-abusefilter-modify-restricted": "Missbrauchsfilter mit privilegierten Aktionen zu bearbeiten",
+ "action-abusefilter-revert": "alle Änderungen durch einen bestimmten Missbrauchsfilter rückgängig zu machen",
+ "action-abusefilter-view-private": "Missbrauchsfilter einzusehen, die als privat markiert wurden",
+ "action-abusefilter-log-private": "Missbrauchsfilter-Logbücher anzusehen, die als privat markiert wurden",
+ "abusefilter-log": "Missbrauchsfilter-Logbuch",
+ "abusefilter-log-summary": "Dieses Logbuch zeigt eine Liste aller Aktionen, die durch einen Filter aufgefangen wurden.",
+ "abusefilter-log-search": "Missbrauchsfilter-Logbuch durchsuchen",
+ "abusefilter-log-search-user": "Benutzer:",
+ "abusefilter-log-search-filter": "Filterkennungen (durch senkrechte Striche getrennt):",
+ "abusefilter-log-search-title": "Titel:",
+ "abusefilter-log-search-wiki": "Wiki:",
+ "abusefilter-log-search-impact": "Auswirkung:",
+ "abusefilter-log-search-impact-all": "Alle Aktionen",
+ "abusefilter-log-search-impact-saved": "Nur gespeicherte Änderungen",
+ "abusefilter-log-search-impact-not-saved": "Ohne gespeicherte Änderungen",
+ "abusefilter-log-search-entries-label": "Sichtbarkeit:",
+ "abusefilter-log-search-entries-all": "Alle Einträge",
+ "abusefilter-log-search-entries-hidden": "Nur versteckte Einträge",
+ "abusefilter-log-search-entries-visible": "Nur sichtbare Einträge",
+ "abusefilter-log-search-action-taken-label": "Aufgezeichnete Aktion:",
+ "abusefilter-log-search-action-taken-any": "Jede",
+ "abusefilter-log-search-submit": "Suchen",
+ "abusefilter-log-entry": "$1: $2 {{GENDER:$8|löste}} durch die Aktion „$3“ auf „$4“ einen Missbrauchsfilter aus.\nFilteraktion: „$5“;\nFilterbeschreibung: „$6“",
+ "abusefilter-log-entry-withdiff": "$1: $2 hat mit der Aktion „$3“ auf der Seite $4 einen Missbrauchsfilter {{GENDER:$8|ausgelöst}}.\nUnternommene Aktionen: $5;\nFilterbeschreibung: $6 ($7)",
+ "abusefilter-log-detailedentry-meta": "$1: $2 {{GENDER:$9|löste}} durch die Aktion „$4“ auf die Seite „$5“ den $3 aus.\nErgriffene Maßnahmen: $6;\nFilterbeschreibung: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "globalen Filter $1",
+ "abusefilter-log-detailedentry-local": "Filter $1",
+ "abusefilter-log-detailslink": "Details",
+ "abusefilter-log-diff": "Unterschied",
+ "abusefilter-log-hidelink": "Sichtbarkeit ändern",
+ "abusefilter-log-details-legend": "Einzelheiten zum Logbuch-Eintrag $1",
+ "abusefilter-log-details-var": "Variable",
+ "abusefilter-log-details-val": "Wert",
+ "abusefilter-log-details-vars": "Aktionsparameter",
+ "abusefilter-log-details-private": "Private Eintragseinzelheiten",
+ "abusefilter-log-details-ip": "IP-Adresse des Verursachers",
+ "abusefilter-log-details-checkuser": "Benutzer prüfen",
+ "abusefilter-log-noactions": "keine",
+ "abusefilter-log-details-diff": "Änderungen durch diese Bearbeitung",
+ "abusefilter-log-linkoncontribs": "Missbrauchsfilter-Logbuch",
+ "abusefilter-log-linkoncontribs-text": "Missbrauchsfilter-Logbuch für {{GENDER:$1|diesen Benutzer|diese Benutzerin}}",
+ "abusefilter-log-hidden": "(Eintrag versteckt)",
+ "abusefilter-log-hidden-implicit": "(versteckt, da die Version gelöscht wurde)",
+ "abusefilter-log-cannot-see-details": "Du hast nicht die Berechtigung, Einzelheiten zur dieser Eingabe einzusehen.",
+ "abusefilter-log-cannot-see-private-details": "Du hast keine Berechtigung, um private Einzelheiten für diesen Eintrag einzusehen.",
+ "abusefilter-log-nonexistent": "Ein Eintrag mit der angegebenen Kennung ist nicht vorhanden.",
+ "abusefilter-log-details-hidden": "Du kannst die Details dieses Eintrags nicht einsehen, da sie vor der Öffentlichkeit verborgen sind.",
+ "abusefilter-log-private-not-included": "Eine oder mehrere angegebene Filterkennungen sind privat. Da du nicht berechtigt bist, die Einzelheiten von privaten Filtern anzusehen, wurde nicht nach solchen Filtern gesucht.",
+ "abusefilter-log-hide-legend": "Logbucheintrag verstecken",
+ "abusefilter-log-hide-id": "Logbuch-Eintrags-ID:",
+ "abusefilter-log-hide-hidden": "Diesen Eintrag vor der Öffentlichkeit verbergen",
+ "abusefilter-log-hide-reason": "Grund:",
+ "abusefilter-log-hide-reason-other": "Anderer/Zusätzlicher Grund:",
+ "abusefilter-log-hide-forbidden": "Du hast nicht die Berechtigung, die Einträge des Missbrauchsfilter-Logbuchs auszublenden.",
+ "abusefilter-logentry-suppress": "hat „[[$1]]“ verborgen",
+ "abusefilter-logentry-unsuppress": "hat „[[$1]]“ sichtbar gemacht",
+ "logentry-abusefilter-hit": "$1 {{GENDER:$2|löste}} beim Ausführen der Aktion „$5“ auf $3 den Filter $4 aus. Auswirkung: $6 ($7)",
+ "log-action-filter-abusefilter": "Typ der Filteränderung:",
+ "log-action-filter-abusefilter-create": "Erstellung eines neuen Filters",
+ "log-action-filter-abusefilter-modify": "Filteränderung",
+ "logentry-abusefilterprivatedetails-access": "$1 {{GENDER:$2|hat}} auf private Einzelheiten für $3 zugegriffen",
+ "abusefilterprivatedetails-log-name": "Missbrauchsfilter-Private-Einzelheiten-Zugriffs-Logbuch",
+ "abusefilter-management": "Missbrauchsfilter-Verwaltung",
+ "abusefilter-list": "Alle Filter",
+ "abusefilter-list-id": "Filterkennung",
+ "abusefilter-list-pattern": "Muster",
+ "abusefilter-list-status": "Status",
+ "abusefilter-list-public": "Öffentliche Beschreibung",
+ "abusefilter-list-consequences": "Folgen",
+ "abusefilter-list-visibility": "Sichtbarkeit",
+ "abusefilter-list-hitcount": "Trefferzähler",
+ "abusefilter-list-edit": "Bearbeiten",
+ "abusefilter-list-details": "Details",
+ "abusefilter-list-limit": "Anzahl pro Seite:",
+ "abusefilter-list-lastmodified": "Zuletzt geändert",
+ "abusefilter-list-group": "Filtergruppe",
+ "abusefilter-hidden": "Privat",
+ "abusefilter-unhidden": "Öffentlich",
+ "abusefilter-enabled": "Aktiviert",
+ "abusefilter-deleted": "Gelöscht",
+ "abusefilter-disabled": "Deaktiviert",
+ "abusefilter-hitcount": "{{PLURAL:$1|Ein Treffer|$1 Treffer}}",
+ "abusefilter-new": "Neuen Filter erstellen",
+ "abusefilter-return": "Zurück zur Missbrauchsfilter-Verwaltung",
+ "abusefilter-status-global": "Global",
+ "abusefilter-list-options": "Optionen",
+ "abusefilter-list-options-deleted": "Gelöschte Filter:",
+ "abusefilter-list-options-deleted-only": "Nur gelöschte Filter anzeigen",
+ "abusefilter-list-options-deleted-hide": "Gelöschte Filter ausblenden",
+ "abusefilter-list-options-deleted-show": "Gelöschte Filter einbeziehen",
+ "abusefilter-list-options-scope": "Zeige Filter:",
+ "abusefilter-list-options-scope-local": "Nur lokale Regeln",
+ "abusefilter-list-options-scope-global": "Nur globale Regeln",
+ "abusefilter-list-options-scope-all": "Lokale und globale Regeln",
+ "abusefilter-list-options-disabled": "Deaktivierte Filter:",
+ "abusefilter-list-options-hidedisabled": "Deaktivierte Filter ausblenden",
+ "abusefilter-list-options-searchfield": "Innerhalb Regeln suchen:",
+ "abusefilter-list-options-searchpattern": "Ein Muster einfügen",
+ "abusefilter-list-options-searchoptions": "Suchmodus:",
+ "abusefilter-list-options-search-like": "Einfache Anfrage",
+ "abusefilter-list-options-search-rlike": "Regulärer Ausdruck",
+ "abusefilter-list-options-search-irlike": "Schreibungsunabhängiger regulärer Ausdruck",
+ "abusefilter-list-regexerror": "Bei der Suche ist ein Fehler aufgetreten: Syntaxfehler im regulären Ausdruck.",
+ "abusefilter-list-options-submit": "Aktualisieren",
+ "abusefilter-tools-text": "Auf dieser Seite finden sich einige Werkzeuge, die beim Erstellen von Missbrauchsfiltern und bei der Fehlersuche hilfreich sein können.",
+ "abusefilter-tools-expr": "Expression-Tester",
+ "abusefilter-tools-submitexpr": "Prüfen",
+ "abusefilter-tools-reautoconfirm": "„Automatisch bestätigte Benutzer“-Status wiederherstellen",
+ "abusefilter-tools-reautoconfirm-user": "Benutzer:",
+ "abusefilter-tools-reautoconfirm-submit": "Wieder zum automatisch bestätigten Benutzer machen",
+ "abusefilter-reautoconfirm-none": "{{GENDER:$1|Diesem Benutzer|Dieser Benutzerin}} ist der „Automatisch bestätigte Benutzer“-Status nicht entzogen worden.",
+ "abusefilter-reautoconfirm-notallowed": "Du bist nicht berechtigt, Benutzer wieder zu automatisch bestätigten Benutzern zu machen.",
+ "abusefilter-reautoconfirm-done": "„Automatisch bestätigte Benutzer“-Status wurde wiederhergestellt",
+ "abusefilter-status": "Von {{PLURAL:$1|der letzten Aktion|den letzten $1 Aktionen}} {{PLURAL:$2|hat eine|haben $2}} ($3 %) den Grenzwert von $4 erreicht.\n{{PLURAL:$5|Eine Aktion|$5 Aktionen}} ($6 %) {{PLURAL:$5|wurde|wurden}} von einem der aktivierten Filter erkannt.",
+ "abusefilter-edit": "Missbrauchsfilter bearbeiten",
+ "abusefilter-edit-subtitle": "Bearbeite Filter $1",
+ "abusefilter-edit-subtitle-new": "Filter erstellen",
+ "abusefilter-edit-oldwarning": "<strong>Du bearbeitest nicht die aktuelle, sondern eine ältere Version dieses Filters. Die Statistik gilt nur für die letzte Version des Filters. Wenn du speicherst, wird diese als aktuelle Version neu gespeichert. </strong> &bull; [[Special:AbuseFilter/history/$2|Zurück zur Versionsgeschichte des Filters]]",
+ "abusefilter-edit-status-label": "Statistik:",
+ "abusefilter-edit-status": "Von {{PLURAL:$1|der letzten Aktion|den letzten $1 Aktionen}} {{PLURAL:$2|wurde eine|wurden $2}} ($3 %) von diesem Filter erkannt.",
+ "abusefilter-edit-status-profile": "Von {{PLURAL:$1|der letzten Aktion|den letzten $1 Aktionen}} {{PLURAL:$2|wurde eine|wurden $2}} ($3 %) von diesem Filter erkannt.\nIm Durchschnitt betrug die Bearbeitungszeit $4 ms und sie benötigten {{PLURAL:$5|eine Bedingung|$5 Bedingungen}} der erlaubten Höchstzahl.",
+ "abusefilter-edit-throttled-warning": "'''Warnung:''' Dieser Filter wurde automatisch als schädlich markiert. Aus Sicherheitsgründen werden die folgenden Aktionen nicht ausgeführt ($1). Bitte überprüfe und [[mw:Extension:AbuseFilter/Conditions|optimiere]] deine Bedingungen, um diese Beschränkung aufzuheben.",
+ "abusefilter-edit-new": "Neuer Filter",
+ "abusefilter-edit-save": "Filter speichern",
+ "abusefilter-edit-id": "Filterkennung:",
+ "abusefilter-edit-switch-editor": "Editor wechseln",
+ "abusefilter-edit-description": "Beschreibung:\n:''(öffentlich sichtbar)''",
+ "abusefilter-edit-field-description": "Beschreibung",
+ "abusefilter-edit-group": "Filtergruppe:",
+ "abusefilter-edit-flags": "Flags:",
+ "abusefilter-edit-enabled": "Filter aktivieren",
+ "abusefilter-edit-deleted": "Als gelöscht markieren",
+ "abusefilter-edit-hidden": "Details des Filters nicht öffentlich anzeigen",
+ "abusefilter-edit-global": "Globaler Filter",
+ "abusefilter-edit-rules": "Bedingungen:",
+ "abusefilter-edit-field-conditions": "Bedingungen",
+ "abusefilter-edit-notes": "Notizen:",
+ "abusefilter-edit-lastmod": "Letzte Bearbeitung des Filters:",
+ "abusefilter-edit-lastmod-text": "$3, $4 Uhr von $2",
+ "abusefilter-edit-hitcount": "Treffer des Filters:",
+ "abusefilter-edit-consequences": "Bei Treffer auszuführende Aktionen",
+ "abusefilter-edit-action-warn": "Die Aktionen nach einem Warnhinweis an den Benutzer ausführen.",
+ "abusefilter-edit-action-disallow": "Die vom Benutzer vorgesehene Aktion nicht ausführen.",
+ "abusefilter-edit-action-blockautopromote": "Den Status „Automatisch bestätigter Benutzer“ entziehen.",
+ "abusefilter-edit-action-degroup": "Benutzer aus allen Gruppen mit Sonderrechten entfernen",
+ "abusefilter-edit-action-block": "IP-Adresse/Benutzer sperren",
+ "abusefilter-edit-action-blocktalk": "Den Benutzer und/oder die IP-Adresse für das Bearbeiten ihrer eigenen Diskussionsseite sperren",
+ "abusefilter-edit-action-throttle": "Die Aktion nur auslösen, sofern der Benutzer ein bestimmtes Limit überschreitet.",
+ "abusefilter-edit-action-rangeblock": "Den jeweiligen IP-Adressbereich sperren, aus dem der Benutzer stammt.",
+ "abusefilter-edit-action-tag": "Die Bearbeitung für eine spätere Überprüfung markieren.",
+ "abusefilter-edit-throttle-count": "Anzahl erlaubter Aktionen:",
+ "abusefilter-edit-throttle-period": "Zeitraum:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|Sekunde|Sekunden}}",
+ "abusefilter-edit-throttle-groups": "Regeln für die Gruppendrossel:\n:''(eine pro Zeile, verbinden mit Kommata)''",
+ "abusefilter-edit-warn-message": "Systemnachricht für die Warnung:",
+ "abusefilter-edit-warn-other": "Andere Systemnachricht",
+ "abusefilter-edit-warn-other-label": "Seitenname einer anderen Systemnachricht:\n:''(ohne MediaWiki-Präfix)''",
+ "abusefilter-edit-warn-actions": "Aktionen:",
+ "abusefilter-edit-warn-preview": "Vorschau der gewählten Systemnachricht",
+ "abusefilter-edit-warn-edit": "Gewählte Systemnachricht erstellen/bearbeiten",
+ "abusefilter-edit-tag-tag": "Gültige [[Special:Tags|Benennungen]] (eine pro Zeile):",
+ "abusefilter-edit-block-anon-durations": "Sperrdauer für anonyme Benutzer:",
+ "abusefilter-edit-block-user-durations": "Sperrdauer für angemeldete Benutzer:",
+ "abusefilter-block-anon": "anonyme Benutzer",
+ "abusefilter-block-user": "angemeldete Benutzer",
+ "abusefilter-edit-denied": "Du kannst die Einzelheiten zu diesem Filter nicht einsehen, weil sie versteckt sind.",
+ "abusefilter-edit-main": "Filterparameter",
+ "abusefilter-edit-done-subtitle": "Filter bearbeitet",
+ "abusefilter-edit-done": "[[Special:AbuseFilter/history/$1/diff/prev/$2|Deine Änderungen]] am [[Special:AbuseFilter/$1|Filter „$3“]] wurden erfolgreich gespeichert.",
+ "abusefilter-edit-badsyntax": "Der von dir spezifizierte Filter enthält einen Syntaxfehler. Die Parserausgabe lautete: <pre>$1</pre>",
+ "abusefilter-edit-missingfields": "Die folgenden Felder sind erforderlich und müssen ausgefüllt werden: $1",
+ "abusefilter-edit-restricted": "Du kannst diesen Filter nicht bearbeiten, weil er eine oder mehrere beschränkte Aktionen enthält.\nBitte einen Benutzer, der beschränkte Aktionen hinzufügen kann, darum, die Änderung für dich vorzunehmen.",
+ "abusefilter-edit-viewhistory": "Versionsgeschichte des Filters ansehen",
+ "abusefilter-edit-history": "Versionsgeschichte:",
+ "abusefilter-edit-check": "Syntaxprüfung",
+ "abusefilter-edit-badfilter": "Der angegebene Filter ist nicht vorhanden.",
+ "abusefilter-edit-revert": "Aktionen des Filters rückgängig machen",
+ "abusefilter-edit-tools": "Werkzeuge:",
+ "abusefilter-edit-test-link": "Diesen Filter probeweise auf letzte Bearbeitungen anwenden",
+ "abusefilter-edit-export": "Diesen Filter in ein anderes Wiki exportieren",
+ "abusefilter-edit-syntaxok": "Keine Syntaxfehler gefunden.",
+ "abusefilter-edit-syntaxerr": "Syntaxfehler gefunden: $1",
+ "abusefilter-edit-bad-tags": "Eine oder mehrere der angegebenen Markierungen sind nicht gültig.\nMarkierungen sollten kurz sein, sie dürfen keine Sonderzeichen enthalten und nicht durch eine andere Software reserviert sein. Versuche, einen neuen Markierungsnamen auszuwählen.",
+ "abusefilter-edit-notallowed": "Es ist dir nicht erlaubt, Missbrauchsfilter zu erstellen oder zu bearbeiten",
+ "abusefilter-edit-notallowed-global": "Du bist nicht berechtigt, globale Missbrauchsfilter zu erstellen oder zu verändern.",
+ "abusefilter-edit-notallowed-global-custom-msg": "Benutzerdefinierte Warnnachrichten werden für globale Filter nicht unterstützt.",
+ "abusefilter-edit-builder-select": "Wähle eine Option aus, um sie am Cursor einzufügen",
+ "abusefilter-edit-builder-group-op-arithmetic": "Arithmetische Operatoren",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Addition (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Subtraktion (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Multiplikation (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Division (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Modulo (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Potenz (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Vergleichsoperatoren",
+ "abusefilter-edit-builder-op-comparison-equal": "Wert ist gleich (==)",
+ "abusefilter-edit-builder-op-comparison-equal-strict": "Wert und Typ sind gleich (===)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Wert ist nicht gleich (!=)",
+ "abusefilter-edit-builder-op-comparison-notequal-strict": "Wert und Typ sind nicht gleich (!==)",
+ "abusefilter-edit-builder-op-comparison-lt": "Kleiner als (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Größer als (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Kleiner oder gleich (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Größer oder gleich (>=)",
+ "abusefilter-edit-builder-group-op-bool": "Boolesche Operatoren",
+ "abusefilter-edit-builder-op-bool-not": "Nicht (!)",
+ "abusefilter-edit-builder-op-bool-and": "Und (&)",
+ "abusefilter-edit-builder-op-bool-or": "Oder (|)",
+ "abusefilter-edit-builder-group-misc": "Verschiedenes",
+ "abusefilter-edit-builder-misc-in": "enthalten in Zeichenfolge (in)",
+ "abusefilter-edit-builder-misc-like": "Passt zu Muster (like)",
+ "abusefilter-edit-builder-misc-rlike": "Passt auf regulären Ausdruck (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "Passt auf regulären Ausdruck ohne Beachtung von Groß- und Kleinschreibung (irlike)",
+ "abusefilter-edit-builder-misc-contains": "Linke Zeichenkette beinhaltet rechte Zeichenkette (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "Feste Zeichenkette (\"\")",
+ "abusefilter-edit-builder-misc-tern": "Kurze Operatoren (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "Konditional (if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "Funktionen",
+ "abusefilter-edit-builder-funcs-length": "Länge der Zeichenfolge (length)",
+ "abusefilter-edit-builder-funcs-lcase": "In Kleinbuchstaben konvertieren (lcase)",
+ "abusefilter-edit-builder-funcs-ucase": "In Großbuchstaben konvertieren (ucase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "Verwirrende Zeichen normalisieren (ccnorm)",
+ "abusefilter-edit-builder-funcs-ccnorm-contains-any": "Normalisiert und sucht in der Zeichenfolge nach mehreren Unterzeichenfolgen im OR-Modus (ccnorm_contains_any)",
+ "abusefilter-edit-builder-funcs-ccnorm-contains-all": "Normalisiert und sucht in der Zeichenfolge nach mehreren Unterzeichenfolgen im AND-Modus (ccnorm_contains_all)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "Doppelte Zeichen entfernen (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "Sonderzeichen / Gesamtzahl der Zeichen (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "Normalisieren (norm)",
+ "abusefilter-edit-builder-funcs-count": "Anzahl der Vorkommnisse der Zeichenfolge X in der Zeichenfolge Y (count)",
+ "abusefilter-edit-builder-funcs-rcount": "Anzahl des regulären Ausdrucks X in Zeichenkette Y (rcount)",
+ "abusefilter-edit-builder-funcs-get_matches": "Anordnung von Regex-Treffern innerhalb eines Textes für jede Erfassungsgruppe (get_matches)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "Leerzeichen entfernen (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "Sonderzeichen entfernen (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "Befindet sich die IP-Adresse im angegebenen Adressbereich? (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "Sucht in der Zeichenfolge nach mehreren Unterzeichenfolgen im OR-Modus (contains_any)",
+ "abusefilter-edit-builder-funcs-contains-all": "Sucht in der Zeichenfolge nach mehreren Unterzeichenfolgen im AND-Modus (contains_all)",
+ "abusefilter-edit-builder-funcs-substr": "Teil-Zeichenkette (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "Position der Teil-Zeichenkette in der Zeichenkette (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "Ersetze Teil-Zeichenkette mit Zeichenkette (str_replace)",
+ "abusefilter-edit-builder-funcs-rescape": "Escape-Zeichenfolge als Buchstabensymbol in einem regulären Ausdruck (rescape)",
+ "abusefilter-edit-builder-funcs-set_var": "Variable setzen (set_var)",
+ "abusefilter-edit-builder-group-vars": "Variablen",
+ "abusefilter-edit-builder-vars-accountname": "Benutzername (bei Erstellung eines Benutzerkontos)",
+ "abusefilter-edit-builder-vars-timestamp": "Zeitstempel der Änderung im Unix-Format",
+ "abusefilter-edit-builder-vars-timestamp-expanded": "Zeitstempel des Logbuchs",
+ "abusefilter-edit-builder-vars-action": "Aktion",
+ "abusefilter-edit-builder-vars-addedlines": "Durch die Bearbeitung hinzugefügte Zeilen",
+ "abusefilter-edit-builder-vars-delta": "Größenänderung der Bearbeitung",
+ "abusefilter-edit-builder-vars-diff": "Vereinigter Versionsunterschied der Bearbeitung",
+ "abusefilter-edit-builder-vars-newsize": "Neue Seitengröße",
+ "abusefilter-edit-builder-vars-oldsize": "Alte Seitengröße",
+ "abusefilter-edit-builder-vars-old-content-model": "Altes Inhaltsmodell",
+ "abusefilter-edit-builder-vars-new-content-model": "Neues Inhaltsmodell",
+ "abusefilter-edit-builder-vars-removedlines": "Durch die Bearbeitung entfernte Zeilen",
+ "abusefilter-edit-builder-vars-summary": "Zusammenfassung",
+ "abusefilter-edit-builder-vars-article-id": "Seitenkennnummer",
+ "abusefilter-edit-builder-vars-article-ns": "Namensraum der Seite",
+ "abusefilter-edit-builder-vars-article-text": "Titel der Seite (ohne Namensraum)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Voller Seitenname",
+ "abusefilter-edit-builder-vars-article-views": "Seitenaufrufe",
+ "abusefilter-edit-builder-vars-movedfrom-id": "Seiten-ID der Quellseite",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "Namensraum der Quellseite",
+ "abusefilter-edit-builder-vars-movedfrom-text": "Titel der Quellseite",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "Vollständiger Titel der Quellseite",
+ "abusefilter-edit-builder-vars-movedto-id": "Seiten-ID der Zielseite",
+ "abusefilter-edit-builder-vars-movedto-ns": "Namensraum der Zielseite",
+ "abusefilter-edit-builder-vars-movedto-text": "Titel der Zielseite",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "Vollständiger Titel der Zielseite",
+ "abusefilter-edit-builder-vars-user-editcount": "Beitragszahl des Benutzers",
+ "abusefilter-edit-builder-vars-user-age": "Alter des Benutzerkontos",
+ "abusefilter-edit-builder-vars-user-name": "Name des Benutzerkontos",
+ "abusefilter-edit-builder-vars-user-groups": "Gruppen (auch implizite), in denen der Benutzer Mitglied ist",
+ "abusefilter-edit-builder-vars-user-rights": "Rechte, die ein Benutzer hat",
+ "abusefilter-edit-builder-vars-user-blocked": "Ob der Benutzer gesperrt ist",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "Zeitpunkt, an dem die E-Mail-Adresse bestätigt wurde",
+ "abusefilter-edit-builder-vars-recent-contributors": "Die letzten zehn Bearbeiter der Seite",
+ "abusefilter-edit-builder-vars-first-contributor": "Erster Autor der Seite",
+ "abusefilter-edit-builder-vars-movedfrom-recent-contributors": "Letzte zehn Benutzer, die zur Verschiebung der Quellseite beitragen.",
+ "abusefilter-edit-builder-vars-movedfrom-first-contributor": "Erster Benutzer, der zur Verschiebung der Quellseite beiträgt.",
+ "abusefilter-edit-builder-vars-movedto-recent-contributors": "Letzte zehn Benutzer, die zur Verschiebung der Zielseite beitragen.",
+ "abusefilter-edit-builder-vars-movedto-first-contributor": "Erster Benutzer, der zur Verschiebung der Zielseite beiträgt.",
+ "abusefilter-edit-builder-vars-all-links": "Alle externen Links im neuen Text",
+ "abusefilter-edit-builder-vars-added-links": "Alle durch die Bearbeitung hinzugefügten externen Links",
+ "abusefilter-edit-builder-vars-removed-links": "Alle durch die Bearbeitung entfernten externen Links",
+ "abusefilter-edit-builder-vars-old-text": "Alter Wikitext der Seite, vor der Bearbeitung",
+ "abusefilter-edit-builder-vars-new-text": "Neuer Wikitext der Seite, nach der Bearbeitung",
+ "abusefilter-edit-builder-vars-new-pst": "Neuer Seitenwikitext, vor dem Speichern umgewandelt",
+ "abusefilter-edit-builder-vars-diff-pst": "Vereinigter Änderungsunterschied nach Bearbeitung, vor dem Speichern umgewandelt",
+ "abusefilter-edit-builder-vars-addedlines-pst": "Zeilen in der Bearbeitung hinzugefügt, vor dem Speichern umgewandelt",
+ "abusefilter-edit-builder-vars-new-text-stripped": "Neuer Seitentext, von jeglicher Textauszeichnung befreit",
+ "abusefilter-edit-builder-vars-new-html": "HTML-Quelltext der neuen Version",
+ "abusefilter-edit-builder-vars-restrictions-edit": "Bearbeiten-Schutzstufe der Seite",
+ "abusefilter-edit-builder-vars-restrictions-move": "Verschieben-Schutzstufe der Seite",
+ "abusefilter-edit-builder-vars-restrictions-create": "Erstellschutz der Seite",
+ "abusefilter-edit-builder-vars-restrictions-upload": "Hochladeschutz der Datei",
+ "abusefilter-edit-builder-vars-movedfrom-restrictions-edit": "Bearbeitungs-Schutzstatus der Verschiebe-Quellseite",
+ "abusefilter-edit-builder-vars-movedfrom-restrictions-move": "Verschiebe-Schutzstatus der Verschiebe-Quellseite",
+ "abusefilter-edit-builder-vars-movedfrom-restrictions-create": "Erstellschutz der Verschiebe-Quellseite",
+ "abusefilter-edit-builder-vars-movedfrom-restrictions-upload": "Hochladeschutz der Verschiebe-Quelldatei",
+ "abusefilter-edit-builder-vars-movedto-restrictions-edit": "Bearbeitungs-Schutzstatus der Verschiebe-Zielseite",
+ "abusefilter-edit-builder-vars-movedto-restrictions-move": "Verschiebe-Schutzstatus der Verschiebe-Zielseite",
+ "abusefilter-edit-builder-vars-movedto-restrictions-create": "Erstellschutz der Verschiebe-Zielseite",
+ "abusefilter-edit-builder-vars-movedto-restrictions-upload": "Hochladeschutz der Verschiebe-Zieldatei",
+ "abusefilter-edit-builder-vars-old-text-stripped": "Alter Seitentext, von jeglicher Textauszeichnung befreit",
+ "abusefilter-edit-builder-vars-old-links": "Links der Seite, vor der Bearbeitung",
+ "abusefilter-edit-builder-vars-old-html": "HTML-Quelltext der alten Version",
+ "abusefilter-edit-builder-vars-minor-edit": "Bearbeitung wurde als Kleinigkeit markiert",
+ "abusefilter-edit-builder-vars-file-sha1": "SHA1-Hash von Dateiinhalt",
+ "abusefilter-edit-builder-vars-file-size": "Dateigröße in Bytes",
+ "abusefilter-edit-builder-vars-file-mime": "MIME-Typ der Datei",
+ "abusefilter-edit-builder-vars-file-mediatype": "Medientyp der Datei",
+ "abusefilter-edit-builder-vars-file-width": "Breite der Datei in Pixel",
+ "abusefilter-edit-builder-vars-file-height": "Höhe der Datei in Pixel",
+ "abusefilter-edit-builder-vars-file-bits-per-channel": "Bits pro Farbkanal der Datei",
+ "abusefilter-edit-block-options": "Sperroptionen:",
+ "abusefilter-filter-log": "Missbrauchsfilter-Änderungen",
+ "abusefilter-history": "Versionsgeschichte für Missbrauchsfilter $1",
+ "abusefilter-history-foruser": "Änderungen von $1",
+ "abusefilter-history-hidden": "Versteckt",
+ "abusefilter-history-enabled": "aktiviert",
+ "abusefilter-history-global": "Global",
+ "abusefilter-history-timestamp": "Zeit",
+ "abusefilter-history-user": "Benutzer",
+ "abusefilter-history-public": "Öffentliche Filterbeschreibung",
+ "abusefilter-history-flags": "Kennzeichen",
+ "abusefilter-history-filter": "Filterregel",
+ "abusefilter-history-comments": "Kommentare",
+ "abusefilter-history-actions": "Aktionen",
+ "abusefilter-history-backedit": "Zurück zum Filtereditor",
+ "abusefilter-history-deleted": "Gelöscht",
+ "abusefilter-history-filterid": "Filter",
+ "abusefilter-history-select-legend": "Suche einschränken",
+ "abusefilter-history-select-user": "Benutzer:",
+ "abusefilter-history-select-filter": "Filterkennung:",
+ "abusefilter-history-select-submit": "Anwenden",
+ "abusefilter-history-diff": "Änderungen",
+ "abusefilter-history-error-hidden": "Der angeforderte Filter ist versteckt. Seine Versionsgeschichte kann daher nicht eingesehen werden.",
+ "abusefilter-exception-unexpectedatend": "Unerwartetes „$2“ bei Zeichen „$1“.",
+ "abusefilter-exception-expectednotfound": "Auf Position $1 wurde ein „$2“ erwartet. Stattdessen wurde ein „$3“ mit dem Wert „$4“ gefunden.",
+ "abusefilter-exception-unrecognisedkeyword": "Unbekanntes Schlüsselwort $2 bei Zeichen $1.",
+ "abusefilter-exception-unexpectedtoken": "Unerwartetes Token „$3“ (vom Typ $2) bei Zeichen $1.",
+ "abusefilter-exception-unclosedstring": "Nicht abgeschlossene Zeichenkette, beginnt bei Zeichen $1.",
+ "abusefilter-exception-invalidoperator": "Ungültiger Operator „$2“ bei Zeichen $1.",
+ "abusefilter-exception-unrecognisedtoken": "Unbekanntes Token „$2“ bei Zeichen $1.",
+ "abusefilter-exception-noparams": "Keine Parameter an Funktion „$2“ bei Zeichen $1 übergeben.",
+ "abusefilter-exception-dividebyzero": "Division von $2 durch Null bei Zeichen $1.",
+ "abusefilter-exception-unrecognisedvar": "Unerkannte Variable $2 bei Zeichen $1",
+ "abusefilter-exception-notenoughargs": "Der Funktion $2 wurden an Zeichen $1 zu wenige Argumente übergeben.\nEs {{PLURAL:$3|wurde $3 Argument|wurden $3 Argumente}} erwartet, übergeben {{PLURAL:$4|wurde $4|wurden $4}}.",
+ "abusefilter-exception-regexfailure": "Fehler im regulären Ausdruck „$3“ an Zeichen $1: „$2“",
+ "abusefilter-exception-overridebuiltin": "Verbotenes Überschreiben der eingebauten Variable „$2“ an Zeichen $1.",
+ "abusefilter-exception-outofbounds": "Anforderung des nicht vorhandenen Listeneintrages $2 (Listengröße: $3) an Zeichen $1.",
+ "abusefilter-exception-notlist": "Anforderung eines Arrayelements aus einem Nicht-Array bei Zeichen „$1“.",
+ "abusefilter-exception-unclosedcomment": "Nicht abgeschlossener Kommentar bei Zeichen $1.",
+ "abusefilter-action-tag": "Markierung",
+ "abusefilter-action-throttle": "Drosseln",
+ "abusefilter-action-warn": "Warnen",
+ "abusefilter-action-blockautopromote": "Autopromote sperren",
+ "abusefilter-action-block": "Sperren",
+ "abusefilter-action-degroup": "Aus Gruppen entfernen",
+ "abusefilter-action-rangeblock": "Bereichssperre",
+ "abusefilter-action-disallow": "Verbieten",
+ "abusefilter-revert-title": "Alle Änderungen durch Filter $1 rückgängig machen",
+ "abusefilter-revert-intro": "Mit diesem Formular können alle Änderungen durch den Missbrauchsfilter aufgrund von Filter $1 rückgängig gemacht werden.\nBitte verwende dieses Werkzeug mit Vorsicht.",
+ "abusefilter-revert-preview-item": "$1: $2 hat ein $3 auf $4 {{GENDER:$7|gemacht}}.\nAktionen, die rückgängig gemacht werden: $5 ($6)",
+ "abusefilter-revert-search-legend": "Aktionen des Missbrauchsfilters auswählen, die rückgängig gemacht werden sollen",
+ "abusefilter-revert-periodstart": "Beginn des Zeitraums:",
+ "abusefilter-revert-periodend": "Ende des Zeitraums:",
+ "abusefilter-revert-search": "Aktionen auswählen:",
+ "abusefilter-revert-filter": "Filterkennung:",
+ "abusefilter-revert-preview-intro": "Unten sind die Aktionen des Missbrauchsfilters angegeben, die hiermit rückgängig gemacht werden.\nBitte überprüfe sie sorgfältig und klicke dann auf „{{int:abusefilter-revert-confirm}}“, um deine Auswahl zu bestätigen.",
+ "abusefilter-revert-confirm-legend": "Die Zurücksetzung bestätigen",
+ "abusefilter-revert-confirm": "Bestätigen",
+ "abusefilter-revert-success": "Du hast alle Aktionen des Missbrauchsfilters, die aufgrund von [[Special:AbuseFilter/$1|Filter $2]] vorgenommen wurden, rückgängig gemacht.",
+ "abusefilter-revert-reason": "Automatisches Zurücksetzen aller Aktionen des Missbrauchsfilters aufgrund von Filter $1.\nAngegebener Grund: $2",
+ "abusefilter-revert-reasonfield": "Grund:",
+ "abusefilter-test": "Filter testen",
+ "abusefilter-test-intro": "Mit dieser Seite kann ein Filter probeweise auf die {{PLURAL:$1|letzte Änderung|letzten $1 Änderungen}} angewendet werden.\nUm einen bestehenden Filter zu laden, gib seine Filter-ID in das Feld unterhalb des Bearbeiten-Textfeldes ein und klicke auf die „{{int:abusefilter-test-load}}“-Schaltfläche.",
+ "abusefilter-test-legend": "Filter testen",
+ "abusefilter-test-load-filter": "Filter-ID laden:",
+ "abusefilter-test-submit": "Testen",
+ "abusefilter-test-load": "Laden",
+ "abusefilter-test-user": "Änderungen von Benutzer:",
+ "abusefilter-test-period-start": "Änderungen nach:",
+ "abusefilter-test-period-end": "Änderungen vor:",
+ "abusefilter-test-page": "Änderungen an der Seite:",
+ "abusefilter-test-shownegative": "Änderungen anzeigen, die nicht auf den Filter passen",
+ "abusefilter-test-syntaxerr": "Der eingegebene Filter enthält einen Syntaxfehler.\nWeitere Erläuterungen gibt es bei Klick auf die Schaltfläche „{{int:abusefilter-edit-check}}“.",
+ "abusefilter-test-badtitle": "Der eingegebene Seitentitel war ungültig. Er enthält möglicherweise ein oder mehrere Zeichen, die nicht in Titeln verwendet werden können.",
+ "abusefilter-changeslist-examine": "untersuchen",
+ "abusefilter-examine": "Einzelne Änderungen untersuchen",
+ "abusefilter-examine-intro": "Auf dieser Seite können die Variablen, die der Missbrauchsfilter für eine Änderung generiert hat, untersucht werden und probeweise Filter darauf angewendet werden.",
+ "abusefilter-examine-legend": "Änderungen auswählen",
+ "abusefilter-examine-diff": "URL zum Versionsvergleich:",
+ "abusefilter-examine-user": "Benutzer:",
+ "abusefilter-examine-title": "Seitenname:",
+ "abusefilter-examine-submit": "Suchen",
+ "abusefilter-examine-vars": "Variablen, die für diese Änderung generiert wurden",
+ "abusefilter-examine-test": "Einen Filter probeweise auf diese Änderung anwenden",
+ "abusefilter-examine-test-button": "Filter probeweise anwenden",
+ "abusefilter-examine-match": "Der Filter erfasst diese Änderung.",
+ "abusefilter-examine-nomatch": "Der Filter erfasst diese Änderung nicht.",
+ "abusefilter-examine-syntaxerror": "Die Syntax des Filters ist ungültig",
+ "abusefilter-examine-notfound": "Die angegebene Änderung konnte nicht gefunden werden.",
+ "abusefilter-examine-incompatible": "Die angegebene Änderung wird vom Missbrauchsfilter nicht unterstützt",
+ "abusefilter-examine-noresults": "Es wurden keine Ergebnisse für die angegebenen Suchparameter gefunden.",
+ "abusefilter-topnav": "'''Missbrauchsfilter-Navigation'''",
+ "abusefilter-topnav-home": "Startseite",
+ "abusefilter-topnav-test": "Regeln testen",
+ "abusefilter-topnav-examine": "Untersuchung der letzten Änderungen",
+ "abusefilter-topnav-log": "Logbuch",
+ "abusefilter-topnav-tools": "Debugging",
+ "abusefilter-topnav-import": "Filter importieren",
+ "abusefilter-log-name": "Missbrauchsfilter-Logbuch",
+ "abusefilter-log-header": "Dieses Logbuch zeigt eine Zusammenfassung der Änderungen an Filtern.\nGenauere Einzelheiten sind in [[Special:AbuseFilter/history|der Liste]] der letzten Änderungen an Filtern zu finden.",
+ "abusefilter-logentry-create": "$1 {{GENDER:$2|erstellte}} $4 ($5)",
+ "abusefilter-logentry-modify": "$1 {{GENDER:$2|veränderte}} $4 ($5)",
+ "abusefilter-log-noresults": "Keine Ergebnisse",
+ "abusefilter-diff-title": "Unterschied zwischen Versionen",
+ "abusefilter-diff-item": "Element",
+ "abusefilter-diff-version": "Version vom $1 {{GENDER:$3|von}} $2",
+ "abusefilter-diff-info": "Basisinformationen",
+ "abusefilter-diff-pattern": "Filterregeln",
+ "abusefilter-diff-invalid": "Die angeforderten Versionen können nicht abgerufen werden",
+ "abusefilter-diff-backhistory": "Zurück zur Versionsgeschichte des Filters",
+ "abusefilter-diff-prev": "Ältere Änderung",
+ "abusefilter-diff-next": "Neuere Änderung",
+ "abusefilter-import-intro": "Du kannst diese Schnittstelle verwenden, um Filter aus anderen Wikis zu importieren.\nKlicke im Quellwiki auf die Schaltfläche „{{int:abusefilter-edit-export}}“ innerhalb von „{{int:abusefilter-edit-tools}}“.\nKopiere den dort erscheinenden Code, füge ihn hier ein und klicke dann auf die Schaltfläche „{{int:abusefilter-import-submit}}“.",
+ "abusefilter-import-submit": "Daten importieren",
+ "abusefilter-group-default": "Standard",
+ "abusefilter-http-error": "Ein HTTP-Fehler ist aufgetreten: $1.",
+ "abusefilter-view-private-submit": "Private Einzelheiten ansehen",
+ "abusefilter-view-private": "Private Einzelheiten ansehen",
+ "abusefilter-view-private-reason": "Grund für den Zugriff auf private Einzelheiten:",
+ "abusefilter-log-details-id": "Logbuchkennung",
+ "abusefilter-invalid-request": "Ungültige Anfrage! Du musst auf private Logbucheinzelheiten mit dem Formular auf [[Special:AbuseLog/$1]] zugreifen und einen Grund angeben.",
+ "abusefilter-invalid-request-noid": "Ungültige Anfrage! Du musst auf private Eintragseinzelheiten mit dem Formular auf der Missbrauchsfilter-Einzelheitenseite zugreifen und einen Grund angeben.",
+ "log-description-abusefilterprivatedetails": "Dieses Logbuch zeigt eine Liste darüber an, wie oft ein Benutzer auf private Einzelheiten eines Missbrauchfiltereintrags zugreift.",
+ "abusefilter-noreason": "Warnung: Um die privaten Einzelheiten dieses Eintrags einzusehen, musst du einen Grund angeben.",
+ "abusefilter-log-ip-not-available": "Nicht verfügbar",
+ "tag-abusefilter-condition-limit": "Bedingungsgrenze erreicht",
+ "tag-abusefilter-condition-limit-description": "Bearbeitungen oder andere Ereignisse, die nicht von allen aktiven [[Special:AbuseFilter|Missbrauchsfiltern]] überprüft werden konnten ([[mw:Extension:AbuseFilter/Conditions|Hilfe]]).",
+ "apihelp-abusefiltercheckmatch-extended-description": "Es ist vars, rcid oder logid erforderlich, jedoch kann nur eines verwendet werden.",
+ "apihelp-abusefiltercheckmatch-param-filter": "Der vollständige Filtertext, der für einen Treffer überprüft werden soll.",
+ "apihelp-abusefiltercheckmatch-param-vars": "JSON-kodierte Anordnung von Variablen, die gegengetestet werden sollen.",
+ "apihelp-abusefiltercheckmatch-param-rcid": "Zu gegenprüfende Letzte-Änderungs-Kennung.",
+ "apihelp-abusefiltercheckmatch-param-logid": "Zu gegenprüfende Missbrauchsfilter-Logbuch-Kennung.",
+ "apihelp-abusefiltercheckmatch-example-1": "Testet, ob die Letzte-Änderungen-Kennung 15 einem einfachen Filter entspricht.",
+ "apihelp-abusefilterchecksyntax-description": "Prüft die Syntax eines Missbrauchfilters.",
+ "apihelp-abusefilterchecksyntax-summary": "Überprüft die Syntax eines Missbrauchfilters.",
+ "apihelp-abusefilterchecksyntax-param-filter": "Der vollständige Filtertext, dessen Syntax überprüft werden soll.",
+ "apihelp-abusefilterchecksyntax-example-1": "Syntax eines gültigen Filters prüfen",
+ "apihelp-abusefilterchecksyntax-example-2": "Syntax eines ungültigen Filters prüfen",
+ "apihelp-abusefilterevalexpression-description": "Evaluiert einen Missbrauchsfilter-Ausdruck.",
+ "apihelp-abusefilterevalexpression-summary": "Bewertet einen Ausdruck des Missbrauchfilters.",
+ "apihelp-abusefilterevalexpression-param-expression": "Der zu evaluierende Ausdruck.",
+ "apihelp-abusefilterevalexpression-example-1": "Evaluiert einen einfachen Ausdruck",
+ "apihelp-abusefilterunblockautopromote-param-user": "Benutzername des Benutzers, den du entsperren möchtest.",
+ "apihelp-query+abusefilters-description": "Einzelheiten über die Missbrauchsfilter anzeigen.",
+ "apihelp-query+abusefilters-summary": "Zeigt Einzelheiten des Missbrauchfilters an.",
+ "apihelp-query+abusefilters-param-startid": "Die Filterkennung, bei der die Aufzählung beginnen soll.",
+ "apihelp-query+abusefilters-param-endid": "Die Filterkennung, bei der die Aufzählung enden soll.",
+ "apihelp-query+abusefilters-param-show": "Nur Filter anzeigen, die diese Kriterien erfüllen.",
+ "apihelp-query+abusefilters-param-limit": "Die maximale Anzahl aufzulistender Filter.",
+ "apihelp-query+abusefilters-param-prop": "Zurückzugebende Eigenschaften.",
+ "apihelp-query+abusefilters-example-1": "Aktivierte öffentliche Filter auflisten",
+ "apihelp-query+abusefilters-example-2": "Einige Einzelheiten über Filter anzeigen",
+ "apihelp-query+abuselog-description": "Ereignisse anzeigen, die von einem der Missbrauchsfilter erfasst wurden.",
+ "apihelp-query+abuselog-summary": "Zeigt Ereignisse an, die von einem der Missbrauchsfilter erfasst wurden.",
+ "apihelp-query+abuselog-param-start": "Der Zeitstempel, bei dem die Aufzählung begonnen werden soll.",
+ "apihelp-query+abuselog-param-end": "Der Zeitstempel, bei dem die Aufzählung beendet werden soll.",
+ "apihelp-query+abuselog-param-user": "Nur Einträge von einem angegebenen Benutzer oder einer IP-Adresse anzeigen.",
+ "apihelp-query+abuselog-param-title": "Zeigt nur Einträge, die auf einer angegebenen Seite erscheinen.",
+ "apihelp-query+abuselog-param-filter": "Zeigt nur Einträge an, die von einer angegebenen Filterkennung erfasst wurden.",
+ "apihelp-query+abuselog-param-limit": "Die maximale Anzahl der aufzulistenden Einträge.",
+ "apihelp-query+abuselog-param-prop": "Zurückzugebende Eigenschaften.",
+ "apihelp-query+abuselog-param-wiki": "Wiki, von dem Treffer angezeigt werden sollen.",
+ "apihelp-query+abuselog-example-1": "Zeigt die letzten Logbucheinträge",
+ "apihelp-query+abuselog-example-2": "Zeigt die letzten Logbucheinträge für [[API]]",
+ "apierror-abusefilter-canttest": "Du hast keine Berechtigung, Missbrauchsfilter zu testen.",
+ "apierror-abusefilter-cantcheck": "Du hast keine Berechtigung, die Syntax von Missbrauchsfiltern zu überprüfen.",
+ "apierror-abusefilter-nosuchlogid": "Es gibt keinen Missbrauchsfilter-Logbuch-Eintrag mit der Kennung $1.",
+ "apierror-abusefilter-badsyntax": "Der Filter hat eine ungültige Syntax."
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/diq.json b/www/wiki/extensions/AbuseFilter/i18n/diq.json
new file mode 100644
index 00000000..ccf03232
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/diq.json
@@ -0,0 +1,455 @@
+{
+ "@metadata": {
+ "authors": [
+ "Aspar",
+ "Erdemaslancan",
+ "Gorizon",
+ "Marmase",
+ "Mirzali",
+ "Xoser",
+ "Matma Rex",
+ "Kumkumuk",
+ "1917 Ekim Devrimi",
+ "Gırd",
+ "Gambollar",
+ "Asmen"
+ ]
+ },
+ "abusefilter-desc": "Vurnayışa rê terzê otomatik vınakari dezge keno",
+ "abusefilter": "Vıraştışê gırwenayışê xırabi",
+ "abuselog": "Qeydê parzumi",
+ "abusefilter-intro": "Îdareyê filitreyê abuseyî şima xeyr ameyî.\nFilitreyê abuseyî yew softwareyê otomatikî ke otomatik heuristics applikasyon keno.\nEna pele yew listeyê filitreyî mucneno u vurnayîşan rê destur dano.",
+ "abusefilter-mustbeeditor": "Qe pawitişî, teyna kerberanê ke pê desturî eşkeno filitreyê abuseyî bivurne.",
+ "abusefilter-warning": "'''Balantış''': Eno hereket otomatikmen zerarın tesbit bi yo.\nVurnayışê zerarıni be lez do peyd bıgêri yo,\nu vurnayışo xırabın ya zi zerarın neticey xo hesabê şıma de vêneno ya zi afresa IP ya şıma bloqe bena.\nŞıma ke fıkıriyenê no vurnayış hewlo, şenê be tesdiq kerdış ney qeyd kerê.\nSuistımal kerdışê qeydey sero yew arezekerdışo kılmo ke hereketê şıma eyar keno: $1",
+ "abusefilter-disallowed": "Eno kerdış otomatikmên zey zerarın ameyo motış u coka izıne nêameya gırewtış.\nEger şıma bawer kenê ke enê kerdış biyo hewl, şıma se kerdêne , reca bena ke yew admin ra xebere bıdê.\nYew şınasnayışo kılmo ke be ixlalê şıma ra bestiyeno, zey wıni mocniyeno: $1",
+ "abusefilter-blocked-display": "Ena hereket hewl niyo u zerar dano,\naye ra ti niekeno qeyd bike.\nEyni zemun de, qe pawitişê {{SITENAME}}î hesab u IPyê tu blok biyo.\nEka ti van ma yew ğeletî keno, yew îdare kerdoğê sîteyî rê mesaj bişirave.\nYew deskripsiyonê hereketê tu zerarin: $1",
+ "abusefilter-degrouped": "Ena hereket hewl niya u zerar dana.\nEger ke destur şıma çini yo u heqanê şıma yê pêron ma şıma ra grot o. \nEka şıma van ma yew ğeletey kerd o, ju idarekarê sita rê mesaj bırışê. Eka yew ğelet esto, ma heqanê şıma pêron fına peyser dam.\nJu şınasiya hereketa şıma ya zerarın: $1",
+ "abusefilter-autopromote-blocked": "Ena hereket hewl niyo u zerar dano u aye ra destur tu çini yo.\nQe pawitişê sîte, heqanê tu yê nime ma ti ra grewt.\nYew deskripsiyonê hereketê tu zerarin: $1",
+ "abusefilter-blocker": "Filtreyê peygoşi",
+ "abusefilter-blockreason": "Filtre de peygoşkerdışira otomatikmen vındarneya.\nŞertê şınasiye: $1",
+ "abusefilter-degroupreason": "Filtreyê peygoşkerdışi ra heki otomatikmen wedaryay.\nŞertê şınasiye: $1",
+ "abusefilter-accountreserved": "Nameyê nê hesabî Filtreyê peygoş kerdışi xo karfiyo deye istifyayo.",
+ "right-abusefilter-modify": "Filtreyê peygoşi bıvurnê",
+ "right-abusefilter-view": "Filtreyê peygoş kerıdşi bıvinê",
+ "right-abusefilter-log": "Rocekanê peygoş kerdışa bıvinê",
+ "right-abusefilter-log-detail": "Teferruatanê cıkewtışanê peygoş kerdışa bıvin",
+ "right-abusefilter-private": "Xısusi melamata rocekan de peyoşkerdışa bıvinê",
+ "right-abusefilter-modify-restricted": "Filitreyê abuseyî bivurne, pê aksiyonê restrictî",
+ "right-abusefilter-revert": "Vurnayîşî ke pê filitreyê abuseyî biy, inan reyna biyar",
+ "right-abusefilter-view-private": "Filitreyê abuse yê xasî bivine",
+ "right-abusefilter-log-private": "Xısusi qeydê parzunê ke şıma nışan kerdê ena mocneno",
+ "right-abusefilter-hide-log": "Logê abuseyi de vurnayişi binumne",
+ "right-abusefilter-hidden-log": "Logê abuse yê numnayî bivine",
+ "right-abusefilter-modify-global": "Global filtrya nenga vıraz yana timar ke",
+ "action-abusefilter-modify": "filitreyê abuseyî bivurne",
+ "action-abusefilter-view": "Filitreyê abuseyî bivine",
+ "action-abusefilter-log": "Rocekanê peygoş kerdışa bıvinê",
+ "action-abusefilter-log-detail": "Qeydé detayan de rocekan de nenga bıvin",
+ "action-abusefilter-private": "Bağse malumaté qeydané nenga bıvin",
+ "action-abusefilter-modify-restricted": "filitreyê abuseyî bivurne, pê aksiyonê restrictî",
+ "action-abusefilter-revert": "vurnayîşî ke pê filitreyê abuseyî biy, inan reyna biyar",
+ "action-abusefilter-view-private": "Filitreyê abuse yê xasî bivine",
+ "action-abusefilter-log-private": "Xısusi qeydê parzunê ke şıma nışan kerdê ena mosneno",
+ "abusefilter-log": "Rocekê filtre de peygoş kerdışan",
+ "abusefilter-log-summary": "Ena log de yew di hereket estê ke pê filitreyî tepişiyo.",
+ "abusefilter-log-search": "Bıgeyr qeydé rocekan dé nenga",
+ "abusefilter-log-search-user": "Karber:",
+ "abusefilter-log-search-filter": "Kamiya parzûni (boriyan ra ciya):",
+ "abusefilter-log-search-title": "Sername:",
+ "abusefilter-log-search-wiki": "Wiki:",
+ "abusefilter-log-search-submit": "Cı geyre",
+ "abusefilter-log-entry": "$1: $2 filtraya nengan akerd, $4 de {{GENDER:$8|hereketê}} \"$3\"i kerd.\nHereket: $5;\nŞınasiya filtra: $6",
+ "abusefilter-log-entry-withdiff": "$1: $2 avrêca nenga akerda, ser $4 de {{GENDER:$8|hereketê}} \"$3\"i {{GENDER:$8|kerd ser}} .\nHereket: $5;\nŞılasnayışa avrêci: $6($7)",
+ "abusefilter-log-detailedentry-meta": "$1: $2 kerd $3, ser $5 de {{GENDER:$9|hereketê}} \"$4\"i {{GENDER:$9|kerd ser }} .\nHereket: $6;\nŞınasiya parzumi: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "parzûno global $1",
+ "abusefilter-log-detailedentry-local": "filitreyê $1î",
+ "abusefilter-log-detailslink": "teferruati",
+ "abusefilter-log-diff": "ferq",
+ "abusefilter-log-hidelink": "vinayişi eyar bike",
+ "abusefilter-log-details-legend": "Detayî ser log entryê $1î",
+ "abusefilter-log-details-var": "Vurnayiye",
+ "abusefilter-log-details-val": "Erc",
+ "abusefilter-log-details-vars": "Parametereyê hereketî",
+ "abusefilter-log-details-private": "Datayê xasî",
+ "abusefilter-log-details-ip": "Adresê IPyê oricinalî",
+ "abusefilter-log-noactions": "ne",
+ "abusefilter-log-details-diff": "Ena nuşteyî de vurnayîşî",
+ "abusefilter-log-linkoncontribs": "Qeydê parzumi",
+ "abusefilter-log-linkoncontribs-text": "Qeydé karberi roceka nengan",
+ "abusefilter-log-hidden": "(vurnayiş numnayeye)",
+ "abusefilter-log-hidden-implicit": "(nımteyo deye rewizyon besterneya)",
+ "abusefilter-log-cannot-see-details": "Miyan kewtıştê enay rê mısade çıno.",
+ "abusefilter-log-nonexistent": "ID'a Kerdeki Dekeweki ya zey pê niya.",
+ "abusefilter-log-details-hidden": "Ti nieşkeno detayanê ena filitre bivîne, çunkî ena filitre kamu ra nimniyayo.",
+ "abusefilter-log-private-not-included": "Nışanyaye kamiya filtreyan bağseyê. Şıma wazenê ke detayanê fiktreya bıvinê yana Cıgeyre se eno mıkum niyo, çıkı cı geyrayış red biyo icazet nêdeya yo",
+ "abusefilter-log-hide-legend": "Miyan kewtışa bınımne",
+ "abusefilter-log-hide-id": "Huviyetê logê vurnayişi:",
+ "abusefilter-log-hide-hidden": "Ena vurnayişi şar ra binumne",
+ "abusefilter-log-hide-reason": "Sebeb:",
+ "abusefilter-log-hide-forbidden": "Tu ra destur cini ke logê xirabi bikefilne.",
+ "abusefilter-logentry-suppress": "\"[[$1]]\" nımneya",
+ "abusefilter-logentry-unsuppress": "Nımnayışê \"[[$1]]\" hewadeya",
+ "logentry-abusefilter-hit": "Sebebê $1'i $4 {{GENDER:$2|bı}} , \"$5\" kerdo $3 {{GENDER:$2|ser}} . verkewtışê ke gêriyayê: $6 ($7)",
+ "abusefilter-management": "idarayê filitreyê abuseyî",
+ "abusefilter-list": "Parzûni pêro",
+ "abusefilter-list-id": "IDyê Filitreyî",
+ "abusefilter-list-status": "Weziyet",
+ "abusefilter-list-public": "Deskripsiyonê şarî",
+ "abusefilter-list-consequences": "Qerar",
+ "abusefilter-list-visibility": "Vinayîşî",
+ "abusefilter-list-hitcount": "Amarê reytingi",
+ "abusefilter-list-edit": "Bıvırne",
+ "abusefilter-list-details": "Teferruati",
+ "abusefilter-list-limit": "Amarî ser yew pel:",
+ "abusefilter-list-lastmodified": "Vurnayîşê tewr penî",
+ "abusefilter-list-group": "Parzûnê grube",
+ "abusefilter-hidden": "Xısusi",
+ "abusefilter-unhidden": "Şar",
+ "abusefilter-enabled": "Aktifiyaye",
+ "abusefilter-deleted": "Esteriya",
+ "abusefilter-disabled": "Astengın",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|cıgêno|cıgênê}}",
+ "abusefilter-new": "Yew filitreyê newî viraze",
+ "abusefilter-return": "Peyser şo idareyê parzûni",
+ "abusefilter-status-global": "Global",
+ "abusefilter-list-options": "Weçinegi",
+ "abusefilter-list-options-deleted": "Filtreyan ke wedariya",
+ "abusefilter-list-options-deleted-only": "Teyna filitreyê wedariyayî bimucne",
+ "abusefilter-list-options-deleted-hide": "Filitreyê wedariyayî binimne",
+ "abusefilter-list-options-deleted-show": "Filitreyê wedariyayî de biker",
+ "abusefilter-list-options-scope": "Avrêci tiya ra bıasne:",
+ "abusefilter-list-options-scope-local": "Tenya qeydeyê mehaliyi",
+ "abusefilter-list-options-scope-global": "Twyna global rolan",
+ "abusefilter-list-options-scope-all": "Rolê lokal u globali",
+ "abusefilter-list-options-disabled": "Filitreyê qefilnaye",
+ "abusefilter-list-options-hidedisabled": "Filitreyê qefilnaye binimne",
+ "abusefilter-list-options-submit": "Rocane ke",
+ "abusefilter-tools-text": "wexta ke filtreya suistimali formule bena nê hacet lazım beni.",
+ "abusefilter-tools-expr": "Testê ifadi",
+ "abusefilter-tools-submitexpr": "Bercınê",
+ "abusefilter-tools-reautoconfirm": "Weziyetê xob xo araşt kerdışi peyser biya",
+ "abusefilter-tools-reautoconfirm-user": "Karber:",
+ "abusefilter-tools-reautoconfirm-submit": "Reyna otoconfirme bike",
+ "abusefilter-reautoconfirm-none": "halê otomatik-tesdiqkerdış {{GENDER:$1|karberi|karberi|karberan}} battal nêbı.",
+ "abusefilter-reautoconfirm-notallowed": "desthelatiyê şıma çino şıma otomatik-tesdiqkerdış biyari.",
+ "abusefilter-reautoconfirm-done": "halê otomatik-tesdiqkerdışê hesabi tepiya ameyo",
+ "abusefilter-status": "$1 {{PLURAL:$1|karo|karo}} peyin de, $2 (%$3) filtre $4 resa sinorê şerti u $5 (%$6) kar yew filtreya aktif de hemcıt bı.",
+ "abusefilter-edit": "Filtreya nengan timar kerış",
+ "abusefilter-edit-subtitle": "Filitreyê $1î ho vurneno",
+ "abusefilter-edit-subtitle-new": "Vıraştışê parzûni",
+ "abusefilter-edit-oldwarning": "<strong>şıma (hê) revizyonê no filtreyi vurneni.\nnê istatiski qey na filtreya.\n.</strong> &bull;\n[[Special:AbuseFilter/history/$2|agêr hal-verinê na filtre]].",
+ "abusefilter-edit-status-label": "İstatistiki:",
+ "abusefilter-edit-status": "{{PLURAL:$1|Karo peyên|Karanê peyenan}} $1 de, karo $2 nısbetê ($3%) de nê parzûn ra piya bi be yew.",
+ "abusefilter-edit-status-profile": "{{PLURAL:$1|Karo peyên|Karanê peyenan}} $1 de, karo $2 nısbetê ($3%) de nê parzûn ra piya bi be yew.\nMudetê karê miyanêniyo ke $4ms domneno, sinorê şerti $5 qedneno.",
+ "abusefilter-edit-new": "Filtreyê newî",
+ "abusefilter-edit-save": "Parzumi qeyd ke",
+ "abusefilter-edit-id": "IDyê filitreyî",
+ "abusefilter-edit-description": "Deskripsiyon:\n:''(herkes eşkenî bivîne)''",
+ "abusefilter-edit-group": "Parzûnê grube:",
+ "abusefilter-edit-flags": "Îkazî:",
+ "abusefilter-edit-enabled": "Ena filitre a bike",
+ "abusefilter-edit-deleted": "Nîşanê wedariyaye da",
+ "abusefilter-edit-hidden": "Detayanê ena filitre şar ra binumne",
+ "abusefilter-edit-global": "Global avrêc",
+ "abusefilter-edit-rules": "Şartî:",
+ "abusefilter-edit-notes": "Noti:",
+ "abusefilter-edit-lastmod": "Ena filitre ke twer peni de vurnaye biya:",
+ "abusefilter-edit-lastmod-text": "pê $2, $1",
+ "abusefilter-edit-hitcount": "Reytingê filitreyî",
+ "abusefilter-edit-consequences": "Pêamyayen dı kerdışi benê",
+ "abusefilter-edit-action-warn": "Peni ra karber îkaz biy, enê herketan biker",
+ "abusefilter-edit-action-disallow": "Ena karber rê destur medî ke ena herket biker",
+ "abusefilter-edit-action-blockautopromote": "Weziyetê karberiê otomatik-tesdiqkerdey peyser bıgê",
+ "abusefilter-edit-action-degroup": "Ena karber grupan ra wedarne",
+ "abusefilter-edit-action-block": "Karber yaz zi adresê karberi bloke ke",
+ "abusefilter-edit-action-throttle": "Eka karber yew limit ra zafyer şino, enê herketan biker",
+ "abusefilter-edit-action-rangeblock": "Mabeynê karberiyo /16ıne kılit ke",
+ "abusefilter-edit-action-tag": "Qe kontrole raverî ena vurnayîşî etiket bike",
+ "abusefilter-edit-throttle-count": "Amarê hereketan ke destur guret:",
+ "abusefilter-edit-throttle-period": "Wext:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|saniye|saniyeyan}}",
+ "abusefilter-edit-throttle-groups": ":''(her satır re yew heb, pê virgul piyawanê-piya besnê)''",
+ "abusefilter-edit-warn-message": "Mesajê sistemî ke qe îkaz kerdişî viraziyo:",
+ "abusefilter-edit-warn-other": "mesajo bin",
+ "abusefilter-edit-warn-other-label": "nameyê pelê mesaji yo binı:\n:''(wa prefixê medyawiki çinibo)''",
+ "abusefilter-edit-warn-actions": "Kerdışi:",
+ "abusefilter-edit-warn-preview": "Verqaytê mesacê weçinıteyi",
+ "abusefilter-edit-warn-edit": "Mesacê weçinıteyi vıraze/bıvurne",
+ "abusefilter-edit-tag-tag": "[[Special:Tags|Etiketan]] tetbiq ke (herg xetrê yu) :",
+ "abusefilter-edit-denied": "Ti nieşkeno detayanê ena filitre bivîne, çunkî ena filitre kamu ra nimniyayo.",
+ "abusefilter-edit-main": "Parametreyan filitre bike",
+ "abusefilter-edit-done-subtitle": "Vurnayîşî filitre bike",
+ "abusefilter-edit-done": "[[Special:AbuseFilter/history/$1/diff/prev/$2|Vırnayışê şıma]] [[Special:AbuseFilter/$1|filtra $3]] rê ameyo seveknayış.",
+ "abusefilter-edit-badsyntax": "filtreya ke şıma nişane kerdo tede xetay sentaksi esta.\nwesikay arêdayoxi: <pre>$1</pre>",
+ "abusefilter-edit-restricted": "şıma nêeşkeni na filtre bıvurni çunke tede karo qedexebiyaye esto.",
+ "abusefilter-edit-viewhistory": "Tarixê ena filitre bivîne",
+ "abusefilter-edit-history": "Tarix:",
+ "abusefilter-edit-check": "Syntax kontrol bike",
+ "abusefilter-edit-badfilter": "Parzumo ke şımayê vanê mewcud niyo.",
+ "abusefilter-edit-revert": "Vurnayîşî ke ena filitre kerd înan tekrar biyar",
+ "abusefilter-edit-tools": "Xecetî:",
+ "abusefilter-edit-test-link": "Ena filitre ser vurnayîşê newî test bike",
+ "abusefilter-edit-export": "Ena filitre yew nw wîkî rê împort bike",
+ "abusefilter-edit-syntaxok": "ğelatê syntax çin o",
+ "abusefilter-edit-syntaxerr": "Ğeletê syntax esto: $1",
+ "abusefilter-edit-bad-tags": "etiketê ke şıma nişane kerdo tede nemeqbuli esti.\ngani etiketi kılm bıbi u tede karakterê xususi çinibi.",
+ "abusefilter-edit-notallowed": "desturê şıma çino şıma filtreya suistimali vırazi ya zi bıvurni",
+ "abusefilter-edit-notallowed-global": "desturê şıma çino şıma filtreya nenga vırazi ya zi bıvurni",
+ "abusefilter-edit-notallowed-global-custom-msg": "Masecé bağse ikazan qandé global avréca tesdiq névinené",
+ "abusefilter-edit-builder-select": "İmleçte eklemek için bir seçenek seçin",
+ "abusefilter-edit-builder-group-op-arithmetic": "Operasyonê arîtmetîkî",
+ "abusefilter-edit-builder-op-arithmetic-addition": "De kerdiş (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Vetiş (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Qatkerdış (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "barkerdış (÷)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Se de (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Ser (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Operatoranê miqayeseyî",
+ "abusefilter-edit-builder-op-comparison-equal": "Fit (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Fit niyo (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "Tayêr (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Zafyer (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "tayêr ya zi fit (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "zafyer ya zi fit (>=)",
+ "abusefilter-edit-builder-group-op-bool": "Operatoranê booleanî",
+ "abusefilter-edit-builder-op-bool-not": "Ne (!)",
+ "abusefilter-edit-builder-op-bool-and": "U (&)",
+ "abusefilter-edit-builder-op-bool-or": "Ya zi (|)",
+ "abusefilter-edit-builder-op-bool-xor": "XOR (^)",
+ "abusefilter-edit-builder-group-misc": "Binan",
+ "abusefilter-edit-builder-misc-in": "rêza de esto (in)",
+ "abusefilter-edit-builder-misc-like": "Pattern meç keno",
+ "abusefilter-edit-builder-misc-rlike": "Reqex meç keno (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "Şıkiyeno ra ifadeyo nizamın, nuştışo qıc u gırd (irlike)",
+ "abusefilter-edit-builder-misc-contains": "Sol dizi sağ diziyi içeriyor (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "Literalê stringî (\"\")",
+ "abusefilter-edit-builder-misc-tern": "Operatorê ternaryî (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "Kordinator (eka X o wext Y ya zi Z)",
+ "abusefilter-edit-builder-group-funcs": "Fonksiyonî",
+ "abusefilter-edit-builder-funcs-length": "Derganîyê stringî (dergî)",
+ "abusefilter-edit-builder-funcs-lcase": "Herfê qickekî (lcase)",
+ "abusefilter-edit-builder-funcs-ucase": "Herfa gırd (ucase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "Karektaran ke karberan şweş kenî înan normalize bike (ccnorm)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "Karektaranê herdi wedarne (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "Karekteranê xasî / karekteranê hemî (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "Mormal bike (norm)",
+ "abusefilter-edit-builder-funcs-count": "Amarê wextî ke stringê Xî stringê Yî de esen (count)",
+ "abusefilter-edit-builder-funcs-rcount": "Amarê wextî ke regexê Xî stringê Yî de esen (rcount)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "cayê sipe wedarne (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "Karekteranê xasî wedarne (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "Eka IP range de? (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "Bınlayanê zafın rê layan bıgeyrê (contains_any)",
+ "abusefilter-edit-builder-funcs-substr": "Substring (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "Lay de caygey bınlayan (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "Pê stringî, substringî degiş bike (str_replace)",
+ "abusefilter-edit-builder-funcs-rescape": "Literal remayış timar (rescape) biyo",
+ "abusefilter-edit-builder-funcs-set_var": "Variable eyar bike (set_var)",
+ "abusefilter-edit-builder-group-vars": "Vurnegeri",
+ "abusefilter-edit-builder-vars-accountname": "Nameyê hesabî (ser hesab viraştîşî)",
+ "abusefilter-edit-builder-vars-timestamp": "Vurnayîşê unix pulê wextî",
+ "abusefilter-edit-builder-vars-action": "Kerdış",
+ "abusefilter-edit-builder-vars-addedlines": "Dizeyan ke nuşte de debiyo",
+ "abusefilter-edit-builder-vars-delta": "Vurnayîşê ebatî ke nuştiş de",
+ "abusefilter-edit-builder-vars-diff": "Yewbiyayışê ferqê ke vıriyayışê ke vırnayışi ê vıraştê.",
+ "abusefilter-edit-builder-vars-newsize": "Ebadê perra newiye",
+ "abusefilter-edit-builder-vars-oldsize": "Ebatê pel ê kihanî",
+ "abusefilter-edit-builder-vars-old-content-model": "Modelê zerrekiyo kehan",
+ "abusefilter-edit-builder-vars-new-content-model": "Modelê zerrekiyo newe",
+ "abusefilter-edit-builder-vars-removedlines": "Dizeyan ke nuşte de wedarne",
+ "abusefilter-edit-builder-vars-summary": "Qissayê vurnayîşî/sebeb",
+ "abusefilter-edit-builder-vars-article-id": "Nımrey pela",
+ "abusefilter-edit-builder-vars-article-ns": "Cayê namey perre",
+ "abusefilter-edit-builder-vars-article-text": "Sernameyê ripelî (bê cayênameyî)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Sernamey pêro perre",
+ "abusefilter-edit-builder-vars-article-views": "Perer bıvin",
+ "abusefilter-edit-builder-vars-movedfrom-id": "Perra IDyê çımey kırıştışi",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "Cayê nameyî ke ripelê çimeyî ke neqil biyo",
+ "abusefilter-edit-builder-vars-movedfrom-text": "Sernameyê ripelê çimeyî ke neqil biyo",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "Sernameyê ripelê çimeyî ke neqil biyo",
+ "abusefilter-edit-builder-vars-movedto-id": "IDyê ripelî ke ripelê destinasyonî ke neqil biyo",
+ "abusefilter-edit-builder-vars-movedto-ns": "Cayênameyî ripelê destinasyonî ke neqil biyo",
+ "abusefilter-edit-builder-vars-movedto-text": "Sernameyê ripelê destinasyonî ke neqil biyo",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "Sernameyê ripelê destinasyonî ke neqil biyo",
+ "abusefilter-edit-builder-vars-user-editcount": "Amarê karberi bıvurne",
+ "abusefilter-edit-builder-vars-user-age": "Serra hesabê karberi",
+ "abusefilter-edit-builder-vars-user-name": "Namey hesabê karberi",
+ "abusefilter-edit-builder-vars-user-groups": "Grubê ke karber tedero (êyê ke tedero inan ra piya)",
+ "abusefilter-edit-builder-vars-user-rights": "Heqê ke karber wayirê inanê",
+ "abusefilter-edit-builder-vars-user-blocked": "Karber bloke bo-mebo",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "Wextê ke adresê emaîlî konfirme biy",
+ "abusefilter-edit-builder-vars-recent-contributors": "Des karberê penî ser ena ripel de hebitiyê",
+ "abusefilter-edit-builder-vars-first-contributor": "İştiraka sıfti ya karberi",
+ "abusefilter-edit-builder-vars-all-links": "Nuşteyê newey de gıreyê teberi pêro",
+ "abusefilter-edit-builder-vars-added-links": "Vurnayîşê newe de linkanê hericiyan ê de biy",
+ "abusefilter-edit-builder-vars-removed-links": "Vurnayîşê newe de linkanê hericiyan ê wedariyaye",
+ "abusefilter-edit-builder-vars-old-text": "Wîkîtextê ripel kihan, verniyê vurnayîşî",
+ "abusefilter-edit-builder-vars-new-text": "pelê wikimetni yo newe: badê vurnayiş",
+ "abusefilter-edit-builder-vars-new-pst": "Wiki metina perda newi, çerğé verqayt bi",
+ "abusefilter-edit-builder-vars-diff-pst": "Vurnayışi ra timar kerdışê ferqê Yewbiyayışi, nêferqızya yo",
+ "abusefilter-edit-builder-vars-addedlines-pst": "Vurnayışê xate debya, babetna bıyo qeyd",
+ "abusefilter-edit-builder-vars-new-text-stripped": "Nuştêyê pel ê newî, te de markup çini yo",
+ "abusefilter-edit-builder-vars-new-html": "Yeni revizyonun derlenmiş HTML kaynağı",
+ "abusefilter-edit-builder-vars-restrictions-edit": "Seviyeyê kilit kerdişê pele",
+ "abusefilter-edit-builder-vars-restrictions-move": "Seviyeyê berdişê pele",
+ "abusefilter-edit-builder-vars-restrictions-create": "Sıtarkerdışê na pele vıraze",
+ "abusefilter-edit-builder-vars-restrictions-upload": "Sıtarkerdışê pele bar ke",
+ "abusefilter-edit-builder-vars-old-text-stripped": "Nuştêyê pel ê kihanî, te de markup çini yo",
+ "abusefilter-edit-builder-vars-old-links": "gıreyê ke pel deyi, verê vurnayişi",
+ "abusefilter-edit-builder-vars-old-html": "pelê vikimetni yo kehen, qey HTML arêdiya",
+ "abusefilter-edit-builder-vars-minor-edit": "vurnayiş bı qıci işaret beno nê nêbeno",
+ "abusefilter-edit-builder-vars-file-sha1": "Tedeesteyê dosya yê SHA1 hashî",
+ "abusefilter-edit-builder-vars-file-size": "Ebata bayta dosya",
+ "abusefilter-edit-builder-vars-file-mime": "MIME babeta dosya",
+ "abusefilter-edit-builder-vars-file-mediatype": "Madya babeta dosya",
+ "abusefilter-edit-builder-vars-file-width": "Herayeya pikselê dosya",
+ "abusefilter-edit-builder-vars-file-height": "Berzeya pikselê dosya",
+ "abusefilter-edit-builder-vars-file-bits-per-channel": "Şo reng kenala dosya",
+ "abusefilter-filter-log": "Vurnayîşanê penî ke ser filitre",
+ "abusefilter-history": "qey filtreya suistimali #$1vurnayişê hal-verini",
+ "abusefilter-history-foruser": "$1 ra vurnayîşan",
+ "abusefilter-history-hidden": "Nımıte",
+ "abusefilter-history-enabled": "A biya",
+ "abusefilter-history-global": "Global",
+ "abusefilter-history-timestamp": "Wext",
+ "abusefilter-history-user": "Karber",
+ "abusefilter-history-public": "Deskripsiyonê filtre yê şarî",
+ "abusefilter-history-flags": "Îkazî",
+ "abusefilter-history-filter": "Qeideyê filitre",
+ "abusefilter-history-comments": "Mışewreyi",
+ "abusefilter-history-actions": "Kerdışi",
+ "abusefilter-history-backedit": "Peyser şo vurnayoğê parzûni",
+ "abusefilter-history-deleted": "Esteriya",
+ "abusefilter-history-filterid": "Avrêc",
+ "abusefilter-history-select-legend": "Cı geyrayışi amyayeney fi",
+ "abusefilter-history-select-user": "Karber:",
+ "abusefilter-history-select-submit": "Amyayeney fi",
+ "abusefilter-history-diff": "Vurnayışi",
+ "abusefilter-history-error-hidden": "filtreya ke şıma waşto nımteyo u şıma nêeşkeni hal-verinê aye bıvini.",
+ "abusefilter-exception-unexpectedatend": "Karakterê $1 de \"$2\" texmin nêbeno.",
+ "abusefilter-exception-expectednotfound": "$1 karakterinde bir $2 bekleniyordu, bulunamadı (yerine $3 $4 bulundu).",
+ "abusefilter-exception-unrecognisedkeyword": "karakterê $1'i de keywordo nêşınasnaye $2.",
+ "abusefilter-exception-unexpectedtoken": "karakterê $1'i de simgeya bêtexmin \"$3\" (no $2 tip de).",
+ "abusefilter-exception-unclosedstring": "$1 karakterinde başlayan kapanmamış dizi",
+ "abusefilter-exception-invalidoperator": "Karektarê $1î de operatorê çewtî \"$2\".",
+ "abusefilter-exception-unrecognisedtoken": "Karektarê $1î de unrecognised token \"$2\".",
+ "abusefilter-exception-noparams": "fonksiyonê \"$2\" i re no $1 karakter de çı parametrecı nêdiya.",
+ "abusefilter-exception-dividebyzero": "karakterê $1'i de pê $2 sıfır re teqsim kerdış .",
+ "abusefilter-exception-unrecognisedvar": "karakterê $1'i de parametreya nêşınasnaye $2",
+ "abusefilter-exception-notenoughargs": "$1 karakterinde çağrılan $2 fonksiyonu için yeterli değişken yok.\n$3 {{PLURAL:$3|değişken|değişken}} bekleniyordu, $4 alındı",
+ "abusefilter-exception-regexfailure": "ifadeya \"$3\" de karakter $1'i de xeta: \"$2\"",
+ "abusefilter-exception-overridebuiltin": "$1 karakterinde \"$2\" yerleşik değişkeninin kuraldışı geçersiz kılınması.",
+ "abusefilter-exception-outofbounds": "$1 karakterindeki mevcut olmayan liste öğesi $2 (liste boyutu = $3) isteniyor.",
+ "abusefilter-exception-notlist": "Ser karekterê $1î, wazeno adetê array ê nearrayî.",
+ "abusefilter-action-tag": "Etiket",
+ "abusefilter-action-throttle": "Taynkerdış",
+ "abusefilter-action-warn": "Îkaz",
+ "abusefilter-action-blockautopromote": "Wedarnayışi acı asıknı",
+ "abusefilter-action-block": "Wedarnê",
+ "abusefilter-action-degroup": "Gruban ra wedarne",
+ "abusefilter-action-rangeblock": "Blokê menzili",
+ "abusefilter-action-disallow": "Destur med",
+ "abusefilter-revert-title": "Vuranayîşan ke pê filitreyê $1 biye înan reyna biyar",
+ "abusefilter-revert-intro": "no form, vurnayişê ke semedê filtreya $1'i biye newe ra tepiya ardışê ninan de destur dano şıma.",
+ "abusefilter-revert-preview-item": "$1: $2 {{GENDER:$7|biya}} yew $3 ser $4.\nHereketan ke te wazeni reyna biyar: $5 ($6)",
+ "abusefilter-revert-search-legend": "Hereketanê filitreyan ke te wazeni reyna biyar înan weçine",
+ "abusefilter-revert-periodstart": "Periyod ke başli ken:",
+ "abusefilter-revert-periodend": "Periyod ke qediyen:",
+ "abusefilter-revert-search": "Hereketan biweçine",
+ "abusefilter-revert-filter": "Avrêc:",
+ "abusefilter-revert-preview-intro": "Cérdé, na icraat qeydé nengan sera édé peysr bıgériyé.\nReca keme qontrol keré u weçınişa ğo \"{{int:abusefilter-revert-confirm}}\" bıploğné.",
+ "abusefilter-revert-confirm": "Tesdiq ke",
+ "abusefilter-revert-success": "[[Special:AbuseFilter/$1|$2 filtresinden]] dolayı suistimal filtresi tarafından alınan tüm eylemleri geri aldınız.",
+ "abusefilter-revert-reason": "$1 filtresinden dolayı suistimal filtresi tarafından alınan tüm eylemlerin otomatik geri alımı.\nVerilen sebep: $2",
+ "abusefilter-revert-reasonfield": "Sebeb:",
+ "abusefilter-test": "Duştê vurnayîşan rê yew filitre test bike",
+ "abusefilter-test-intro": "Na per, cerra şına zu filtreda qutuyer u peyni $1 {{PLURAL:$1|vırnayışer|vırnayışan}} qontrol kerdışiré şımaré icazet dano.\nMevcud zu filtra barkerdışiré, vırnayışa ID'a filtré dekeré qutiya metini miyan u \"{{int:abusefilter-test-load}}\" bıploğné.",
+ "abusefilter-test-legend": "Testê filitreyî",
+ "abusefilter-test-load-filter": "Kamiya filtreyi bar ke:",
+ "abusefilter-test-submit": "Test",
+ "abusefilter-test-load": "Bar ke",
+ "abusefilter-test-user": "Vurnayîşê eno karber:",
+ "abusefilter-test-period-start": "Vurnayişan ke peni de biyê:",
+ "abusefilter-test-period-end": "Vurnayişan ke verni de biyê:",
+ "abusefilter-test-page": "Vurnayişan ser pelan:",
+ "abusefilter-test-shownegative": "Vurnayîşan ke filitre match nikena înan bimucne",
+ "abusefilter-test-syntaxerr": "Filitreyê tu de yew ğeletê syntaxî esto.\nQe yew deskripsiyonê ğeletî, \"{{int:abusefilter-edit-check}}\" rê bitexne.",
+ "abusefilter-test-badtitle": "Sernamey perer nêravêrde yo. Eno zerrek yu yana zeder peran dı dehana veror karıya yo.",
+ "abusefilter-changeslist-examine": "kontrol bike",
+ "abusefilter-examine": "Vurnayişanê şexsî kontrol bike",
+ "abusefilter-examine-intro": "Ena pele ti ra yardim keno ke ti eşkeno variableyan kontrol bike u filitre test bike.",
+ "abusefilter-examine-legend": "Vurnayîşê biweçine",
+ "abusefilter-examine-diff": "Ferqê URL'i:",
+ "abusefilter-examine-user": "Karber:",
+ "abusefilter-examine-title": "Sernameyê pele:",
+ "abusefilter-examine-submit": "Cı geyre",
+ "abusefilter-examine-vars": "Ser ena vurnayîşê opsiyonî",
+ "abusefilter-examine-test": "Ena vurnayîşî ser filitre ra test bike",
+ "abusefilter-examine-test-button": "Filitre test bike",
+ "abusefilter-examine-match": "Filitre, ena vurnayiş match keno.",
+ "abusefilter-examine-nomatch": "Filitre, ena vurnayiş match nikeno.",
+ "abusefilter-examine-syntaxerror": "Ena filter de yew syntakê ğeletî esta",
+ "abusefilter-examine-notfound": "Vurnayîşê ke ti wazenî nieşkenî bivine.",
+ "abusefilter-examine-incompatible": "Vurnayışo ke tı wazenay terefê Abuse Filteri ra desteg nêbeno",
+ "abusefilter-examine-noresults": "Parametreyê cıgeyrayışiyê ke to saye kerdi, inan miyan de netice çıniyo.",
+ "abusefilter-topnav": "'''Pusulayê Filtre dê peygoş kerdışa'''",
+ "abusefilter-topnav-home": "Keye",
+ "abusefilter-topnav-test": "Testê batchî",
+ "abusefilter-topnav-examine": "Vurnayîşê verinî analiz bike",
+ "abusefilter-topnav-log": "Roceke peygoş kerdışa",
+ "abusefilter-topnav-tools": "Hacetê texmîr kerdişî",
+ "abusefilter-topnav-import": "Filitre împort bike",
+ "abusefilter-log-name": "Qeydé filtran dé nengan",
+ "abusefilter-log-header": "Ena log yew qisse mucneno ke ey de vurnayîşê filitreyî esta.\nQe detayanê hemî, bivine [[Special:AbuseFilter/history|liste]]yê vurnayîşê filitreyî.",
+ "abusefilter-log-noresults": "Netice çıno",
+ "abusefilter-diff-title": "Benatê versiyonan de ferqan",
+ "abusefilter-diff-item": "Unsur",
+ "abusefilter-diff-version": "{{GENDER:$3|Rêza}} $2 ra versiyoni $1",
+ "abusefilter-diff-info": "Seron zanayış",
+ "abusefilter-diff-pattern": "Kondisyonê filitre",
+ "abusefilter-diff-invalid": "Nêşeno versiyono ke waziyeno ey bıgêro.",
+ "abusefilter-diff-backhistory": "Peyser şo parzûnê tarixi",
+ "abusefilter-diff-prev": "vırnayışey vereyni",
+ "abusefilter-diff-next": "Vırnayışy newyeni",
+ "abusefilter-import-intro": "Ti eşkeno ser ena ripel de wîkîyî binan ra filitre împort bike.\nWîkî çimeyî de bine \"{{int:abusefilter-edit-tools}}\" de \"{{int:abusefilter-edit-export}}\" klik bike.\nKutiyê nuştîşî kopye bike u ena kutiyê nuştîş rê na pa u klik bike \"{{int:abusefilter-import-submit}}\".",
+ "abusefilter-import-submit": "Malumata zerre ke",
+ "abusefilter-group-default": "Hesabiyaye",
+ "abusefilter-http-error": "Yew xırabeya HTTP'i biyo: $1",
+ "apihelp-abusefiltercheckmatch-description": "Ratena Fiktrandê nengan dı têversanayış esto se, filtrey nengan de vurnayış vurnayışi kontrol kerê \n\nVurnayoğê RCID ya na LOGID eger ke icab krno se karêno",
+ "apihelp-abusefiltercheckmatch-param-filter": "Ful filtreya metini çımraravyarnayışi ke",
+ "apihelp-abusefiltercheckmatch-param-vars": "Vurnayerê kod kerdena JSON fına do test bo.",
+ "apihelp-abusefiltercheckmatch-param-rcid": "Têverşanaene rê vırnayışê IDy'o peyên",
+ "apihelp-abusefiltercheckmatch-param-logid": "Têverşanaene rê IDy qeydê filtrey heqareti",
+ "apihelp-abusefiltercheckmatch-example-1": "Vurnayışê peyêni kamiya basit filtre de 15 ra vêşi se test ke",
+ "apihelp-abusefilterchecksyntax-description": "Filtreya nengan parzuna syntaxi çımraravyarn",
+ "apihelp-abusefilterchecksyntax-param-filter": "Ful filtreya metini çımraravyarn syntaxi",
+ "apihelp-abusefilterchecksyntax-example-1": "Filtreya ravêrdi syntaxi çım ra ravyarn",
+ "apihelp-abusefilterchecksyntax-example-2": "Rêzê yew filtreyo ke muteber niyo, çım ra raviyarne",
+ "apihelp-abusefilterevalexpression-description": "Erca ifadeya Filtreya nengan",
+ "apihelp-abusefilterevalexpression-param-expression": "Erceya ifadeyan",
+ "apihelp-abusefilterevalexpression-example-1": "Erca gasit ifadeyan",
+ "apihelp-abusefilterunblockautopromote-description": "Filtreya nengan karberi neticeya bloqe bıyayışa cı otomatik kerdau gêriya ya",
+ "apihelp-abusefilterunblockautopromote-param-user": "Şıma qayılê ke bloqey kanci bamaey karberi wedarne.",
+ "apihelp-abusefilterunblockautopromote-example-1": "Otomatik [[User:Example]] bloqey cı wedarnê",
+ "apihelp-query+abusefilters-description": "Detaya filtreya nengan bıvin",
+ "apihelp-query+abusefilters-param-startid": "Kamiya filtre nımre kerdışmra start ke",
+ "apihelp-query+abusefilters-param-endid": "Kamiya filtri nımre kedışi vındarn",
+ "apihelp-query+abusefilters-param-show": "Kanci filtrey teyna ena kriterer anê bıvin",
+ "apihelp-query+abusefilters-param-limit": "Listeya filtranndı maksimum numre",
+ "apihelp-query+abusefilters-param-prop": "Kamci xısusiyeta ke gê no",
+ "apihelp-query+abusefilters-example-1": "Listey filtreya şari aktiva",
+ "apihelp-query+abusefilters-example-2": "Heqdê filtranndı tayna detaya bıvin",
+ "apihelp-query+abuselog-description": "Filtreya nengan yew merdımi teref ra tepêşyaya bıvin",
+ "apihelp-query+abuselog-param-start": "Mora zemani nımre kerdışmra start ke",
+ "apihelp-query+abuselog-param-end": "Mora zemani nımre kedışi vındarn",
+ "apihelp-query+abuselog-param-user": "Teyna qeydé dekerdena grotena IP adresa karberi bıvin",
+ "apihelp-query+abuselog-param-title": "Dekerdenanê perer teyna bıvin",
+ "apihelp-query+abuselog-param-filter": "Teyna dekerdenanê kamiya filtrande tepêştena grotışa bıvin",
+ "apihelp-query+abuselog-param-limit": "Azami miktarê dekerdena liste ke",
+ "apihelp-query+abuselog-param-prop": "Kamci xısusiyeta ke gê no",
+ "apihelp-query+abuselog-example-1": "Qeydanê dekerdanê peyênan bıasne",
+ "apihelp-query+abuselog-example-2": "Qandé [[API]] Qeydanê dekerdanê peyênan bıasne",
+ "apierror-abusefilter-canttest": "Testê qeydê nengan rê izinê şıma çıni yo.",
+ "apierror-abusefilter-cantcheck": "rêz kerdena qeydanê nengan rê izinê şıma çıni yo.",
+ "apierror-abusefilter-nosuchlogid": "Tiya ra qeydê nengan nêdebêno kamiya $1",
+ "apierror-abusefilter-badsyntax": "Ena filter de yew rêza xelat esta."
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/dsb.json b/www/wiki/extensions/AbuseFilter/i18n/dsb.json
new file mode 100644
index 00000000..93eb3dc9
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/dsb.json
@@ -0,0 +1,393 @@
+{
+ "@metadata": {
+ "authors": [
+ "Derbeth",
+ "Michawiki",
+ "Matma Rex"
+ ]
+ },
+ "abusefilter-desc": "Nałožujo awtomatisku heuristiku na změny.",
+ "abusefilter": "Konfiguracija znjewužywańskego filtra",
+ "abuselog": "Protokol znjewužywanjow",
+ "abusefilter-intro": "Witaj do pówjercha zastojanja znjewužywańskich filtrow.\nZnjewužywański filter jo awtomatizěrowany softwarowy mechanizm za nałoženje awtomatiskeje heuristiki na wše akcije.\nToś ten pówjerch pokazujo lisćinu definěrowanych filtrow a zmóžnja je změniś.",
+ "abusefilter-mustbeeditor": "Z wěstotnych pśicynow mógu jano wužywarje z pšawom znjewužywaśnke filtry změniś toś ten interfejs wužywaś.",
+ "abusefilter-warning": "'''Warnowanje''': Toś ta akcija jo se awtomatiski identificěrowała ako škódna.\nNjekonstruktiwne změny budu se spěšnje anulěrowaś, a njesromne abo wóspjetowane njekonstruktiwne wobźěłowanje buźo k tomu wjasć, až twójo konto abo twója IP-adresa se blokěrujo.\nJolic se mysliš, až toś ta akcija jo konstruktiwna, móžoš ju znowego składowaś, aby ju wobkšuśił. \nKrotke wopisanje znjewužywańskego pšawidła, kótaremuž twója akcija wótpowědujo, jo: $1",
+ "abusefilter-disallowed": "Toś ta akcija jo se awtomatiski identificěrowała ako škódna, a togodla znjemóžniła.\nJolic se měniš, až twója akcija jo była konstruktiwna, informěruj administratora, což sy wopytał cyniś.\nKrotke wopisanje znjewužywańskego pšawidła, kótaremuž twója akcija wótpowědujo, jo: $1",
+ "abusefilter-blocked-display": "Toś ta akcija jo se awtomatiski identificěrowała ako škódna, a jo se śi zawoborało ju wuwjasć.\nPśidatnje, aby {{SITENAME}} šćitało, blokěruju se twójo wužywarske konto a wše zwězane IP-adrese pśeśiwo wobźěłowanjoju.\nJolic jo se to zamólnje stało, staj se pšosym z administratorom do zwiska.\nKrotke wopisanje znjewužywańskego pšawidła, kótaremuž twója akcija wótpowědujo, jo: $1",
+ "abusefilter-degrouped": "Toś ta akcija jo se awtomatiski identificěrowała ako škódna.\nPótakem jo se znjemóžniła, a, dokulaž twójo konto ma se za wobgrozone, wše pšawa su se pšec wzeli.\nJolic se mysliš, až jo so to zamólnje stało, staj se pšosym z běrokratom do zwiska a pśidaj rozjasnjenje toś teje akcije a twóje pšawa budu se wótnowiś.\nKrotke wopisanje znjewužywańskego pšawidła, kótaremuž twója akcija wótpowědujo, jo: $1",
+ "abusefilter-autopromote-blocked": "Toś ta akcija jo se awtomatiski identificěrowała ako škódna a jo se znjemóžniła.\nPśidatnje, ako wěstotna napšawa, su se někotare priwilegije, kótarež se powšyknje napóranym kontam dawaju, pšec wzeli twójomu kontoju.\nKrotke wopisanje znjewužywańskego pšawidła, kótaremuž twója akcija wótpowědujo, jo: $1",
+ "abusefilter-blocker": "Znjewužywański filter",
+ "abusefilter-blockreason": "Awtomatiski pśez znjewužywański filter zablokěrowany. Wopisanje pśitrjefjecego pšawidła: $1",
+ "abusefilter-degroupreason": "Pšawa awtomatiski pśez znjewužywański filter zajmjone. Wopisanje pšawidła: $1",
+ "abusefilter-accountreserved": "Toś to kontowe mě jo za wužywanje pśez znjewužywański filter wuměnjone.",
+ "right-abusefilter-modify": "Znjewužywańske filtry změniś",
+ "right-abusefilter-view": "Znjewužywańske filtry se woglědaś",
+ "right-abusefilter-log": "Protokol znjewužywanjow zwobrazniś",
+ "right-abusefilter-log-detail": "Detailěrowane zapiski protokola znjewužywanjow zwbrazniś",
+ "right-abusefilter-private": "Priwatne daty w protokolu znjewužywanjow zwobrazniś",
+ "right-abusefilter-modify-restricted": "Znjewužywańske filtry z wobgranicowanymi akcijami změniś",
+ "right-abusefilter-revert": "Wše změny wót danego znjewužywańskego filtra anulěrowaś",
+ "right-abusefilter-view-private": "Znjewužiwańske filtry se woglědaś, kótarež su ako priwatne markěrowane",
+ "right-abusefilter-log-private": "Ako priwatne markěrowane protokolowe zapiski znjewužywańskich filtrow se woglědaś",
+ "right-abusefilter-hide-log": "Zapiski w znjewužywańskem protokolu schowaś",
+ "right-abusefilter-hidden-log": "Schowane zapiski znjewužywańskego protokola pokazaś",
+ "right-abusefilter-modify-global": "Globalne znjewužywańske filtry napóraś abo změniś",
+ "action-abusefilter-modify": "znjewužywańske filtry změniś",
+ "action-abusefilter-view": "znjewužywańske filtry se woglědaś",
+ "action-abusefilter-log": "znjewužywański protokol se woglědaś",
+ "action-abusefilter-log-detail": "nadrobne zapiski znjewužywańskego protokola se woglědaś",
+ "action-abusefilter-private": "priwatne daty w znjewužywańskem protokolu se woglědaś",
+ "action-abusefilter-modify-restricted": "znjewužywańske filtry z wobgranicowanymi akcijami změniś",
+ "action-abusefilter-revert": "wše změny pśez dany znjewužywański filter pśewobrośiś",
+ "action-abusefilter-view-private": "znjewužywańske filtry se woglědaś, kótarež su ako priwatne markěrowane",
+ "abusefilter-log": "Protokol znjewužywańskich filtrow",
+ "abusefilter-log-summary": "Toś ten protokol pokazujo liscínu wšych pśez filtry pópadnjonych akcijow.",
+ "abusefilter-log-search": "Protokol znjewužywanjow pytaś",
+ "abusefilter-log-search-user": "Wužywaŕ:",
+ "abusefilter-log-search-filter": "ID filtrow (źělone pśez padorowne smužki):",
+ "abusefilter-log-search-title": "Titel:",
+ "abusefilter-log-search-wiki": "Wiki:",
+ "abusefilter-log-search-submit": "Pytaś",
+ "abusefilter-log-entry": "$1: $2 jo znjewužywański filter zapušćił a cynił akciju $3 na $4. Wuwjeźone akcije: $5; Wopisanje filtra: $6",
+ "abusefilter-log-entry-withdiff": "$1: $2 jo znjewužywański filter zapušćił a cynił akciju $3 na $4.\nWuwjeźone akcije: $5;\nWopisanje filtra: $6 ($7)",
+ "abusefilter-log-detailedentry-meta": "$1: $2 jo zapušćił $3 a jo pśewjadł akciju \"$4\" na $5. Wuwjeźone akcije: $6; Wopisanje filtra: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "globalny filter $1",
+ "abusefilter-log-detailedentry-local": "filter $1",
+ "abusefilter-log-detailslink": "Drobnosći",
+ "abusefilter-log-diff": "Rozdźěl",
+ "abusefilter-log-hidelink": "widobnosć změniś",
+ "abusefilter-log-details-legend": "Drobnosći za protokolowy zapisk $1",
+ "abusefilter-log-details-var": "Wariabla",
+ "abusefilter-log-details-val": "Gódnota",
+ "abusefilter-log-details-vars": "Akcijne parametry",
+ "abusefilter-log-details-private": "Priwatne daty",
+ "abusefilter-log-details-ip": "Wuchadna adresa IP",
+ "abusefilter-log-noactions": "žeden",
+ "abusefilter-log-details-diff": "Pśi wobźěłanju cynjone změny",
+ "abusefilter-log-linkoncontribs": "znjewužywański protokol",
+ "abusefilter-log-linkoncontribs-text": "Znjwužywański protokol za toś togo wužywarja",
+ "abusefilter-log-hidden": "(zapisk schowany)",
+ "abusefilter-log-hidden-implicit": "(schowany, dokulaž wersija jo se wulašowała)",
+ "abusefilter-log-cannot-see-details": "Njamaš pšawo se drobnostki toś togo zapiska woglědaś.",
+ "abusefilter-log-details-hidden": "Njamóžoš drobnostki za toś ten zapisk pokazaś, dokulaž jo pśed zjawnosću schowany.",
+ "abusefilter-log-private-not-included": "Jaden filtrowy ID abo někotare ID, kótarež sy pódał, su priwatne. Dokulaž njesmějośo se drobnostki priwatnch filtrow woglědaś, se toś te filtry njepytaju.",
+ "abusefilter-log-hide-legend": "Protokolowy zapisk schowaś",
+ "abusefilter-log-hide-id": "ID protokolowego zapiska:",
+ "abusefilter-log-hide-hidden": "Toś ten zapisk zjawnje schowaś",
+ "abusefilter-log-hide-reason": "Pśicyna:",
+ "abusefilter-log-hide-forbidden": "Njamaš pšawo zapiski znjewužywańskego protokola schowaś.",
+ "abusefilter-logentry-suppress": "jo \"[[$1]]\" schował",
+ "abusefilter-logentry-unsuppress": "jo \"[[$1]]\" pokazał",
+ "logentry-abusefilter-hit": "$1 jo pśi wuwjeźenju akcije \"$5\" na $3 $4 zapušćił. Statkowanje: $6 ($7)",
+ "abusefilter-management": "Zastojanje znjewužywańskich filtrow",
+ "abusefilter-list": "Wše filtry",
+ "abusefilter-list-id": "ID filtra",
+ "abusefilter-list-status": "Status",
+ "abusefilter-list-public": "Zjawne wopisanje",
+ "abusefilter-list-consequences": "Konsekwence",
+ "abusefilter-list-visibility": "Widobnosć",
+ "abusefilter-list-hitcount": "Trjefarje licyś",
+ "abusefilter-list-edit": "Wobźěłaś",
+ "abusefilter-list-details": "Drobnosći",
+ "abusefilter-list-limit": "Licba na bok:",
+ "abusefilter-list-lastmodified": "Slědny raz změnjony:",
+ "abusefilter-list-group": "Filtrowa kupka",
+ "abusefilter-hidden": "Priwatny",
+ "abusefilter-unhidden": "Zjawny",
+ "abusefilter-enabled": "Zmóžnjony",
+ "abusefilter-deleted": "Wulašowany",
+ "abusefilter-disabled": "Znjemóžnjony",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|trjefaŕ|trjefarja|trjefarje|trjefarjow}}",
+ "abusefilter-new": "Nowy filter napóraś",
+ "abusefilter-return": "Slědk k zastojanjoju filtrow",
+ "abusefilter-status-global": "Globalny",
+ "abusefilter-list-options": "Opcije",
+ "abusefilter-list-options-deleted": "Wulašowane filtry:",
+ "abusefilter-list-options-deleted-only": "Jano wulašowane filtry pokazaś",
+ "abusefilter-list-options-deleted-hide": "Wulašowane filtry schowaś",
+ "abusefilter-list-options-deleted-show": "Wulašowane filtry zapśěgnuś",
+ "abusefilter-list-options-scope": "Filtry pokazaś z:",
+ "abusefilter-list-options-scope-local": "Lokalny wiki",
+ "abusefilter-list-options-scope-global": "Globalne pšawidła",
+ "abusefilter-list-options-disabled": "Znjemóžnjone filtry:",
+ "abusefilter-list-options-hidedisabled": "Znjemóžnjone filtry schowaś",
+ "abusefilter-list-options-submit": "Aktualizěrowaś",
+ "abusefilter-tools-text": "How su někotare rědy, kótarež by mógli pśi formulěrowanju znjewužywańskich filtrow a za pytanje za zmólkimi w nich wužytne byś.",
+ "abusefilter-tools-expr": "Testowak wurazow",
+ "abusefilter-tools-submitexpr": "Wugódnośiś",
+ "abusefilter-tools-reautoconfirm": "Awtomatiski wobkšuśony status wótnowiś",
+ "abusefilter-tools-reautoconfirm-user": "Wužywaŕ:",
+ "abusefilter-tools-reautoconfirm-submit": "Znowego awtomatiski wobkšuśiś",
+ "abusefilter-reautoconfirm-none": "{{GENDER:$1Toś ten wužywaŕ||Toś tomu wužywarjeju|Toś tej wužywarce}} njejo se změnił {{GENDER:$1|jogo|jeje}} awtomatiski wobkšuśony status.",
+ "abusefilter-reautoconfirm-notallowed": "Njesmějoš awtomatiski wobkšuśony status wótnowiś",
+ "abusefilter-reautoconfirm-done": "Status awtomatiskego wobkšuśenja konta jo se wótnowił",
+ "abusefilter-status": "Ze {{PLURAL:$1|slědneje akcije|slědneju $1 akciji|slědnych $1 akcijow|slědnych $1 akcijow}} $2 ($3 %) {{PLURAL:$2|jo dojśpiła|stej dojśpiłej|su dojśpili|jo dojśpiło}} limit wuměnjenja $4 a $5 ($6 %) {{PLURAL:$5|jo wótpowědowała|stej wótpowědowałej|su wótpowědowali|jo wótpowědowało}} jadnomu z filtrow, kótarež su tuchylu zmóžnjone.",
+ "abusefilter-edit": "Znjewužiwański filter wobźěłaś",
+ "abusefilter-edit-subtitle": "Filter $1 se wobźěłujo",
+ "abusefilter-edit-subtitle-new": "Filter se napórajo",
+ "abusefilter-edit-oldwarning": "<strong>Wobźěłujoš staru wersiju toś togo filtra.\nStatistiske pódaśa su za nejnowšu wersiju filtra.\nJolic składujoš swóje změny, buźoš wše změny pśepisowaś, kótarež sy cynił wót wersije, kótaruž wobźěłujoš.</strong> &bull;\n[[Special:AbuseFilter/history/$2|Slědk k stawiznam toś togo filtra]].",
+ "abusefilter-edit-status-label": "Statistika:",
+ "abusefilter-edit-status": "Ze {{PLURAL:$1|slědneje akcije|slědneju $1 akcijowu|slědnych $1 akcijow|slědnych $1 akcijow}} toś ten filter jo spóznał $2 ($3 %). Jogo cas wužywanja jo pśerěznje $4 ms a docynja $5 {{PLURAL:$5|wuměnjenje|wuměnjeni|wuměnjenja|wuměnjenjow}} limita wuměnjenjow.",
+ "abusefilter-edit-status-profile": "Ze {{PLURAL:$1|slědneje akcije|slědneju $1 akcijowu|slědnych $1 akcijow|slědnych $1 akcijow}} toś ten filter jo spóznał $2 ($3 %). Jogo cas wužywanja jo pśerěznje $4 ms a docynja $5 {{PLURAL:$5|wuměnjenje|wuměnjeni|wuměnjenja|wuměnjenjow}} limita wuměnjenjow.",
+ "abusefilter-edit-new": "Nowy filter",
+ "abusefilter-edit-save": "Filter składowaś",
+ "abusefilter-edit-id": "ID filtra:",
+ "abusefilter-edit-description": "Wopisanje:\n:''(zjawnje widobne)''",
+ "abusefilter-edit-group": "Filtrowa kupka:",
+ "abusefilter-edit-flags": "Wobznamjenja:",
+ "abusefilter-edit-enabled": "Toś ten filter zmóžniś",
+ "abusefilter-edit-deleted": "Ako wulašowany markěrowaś",
+ "abusefilter-edit-hidden": "Drobnosći toś togo filtra pśed zjawnym zwobraznjenim schowaś",
+ "abusefilter-edit-global": "Globalny filter",
+ "abusefilter-edit-rules": "Wuměnjenja::",
+ "abusefilter-edit-notes": "Pśipomnjeśa:",
+ "abusefilter-edit-lastmod": "filter slědny raz změnjony:",
+ "abusefilter-edit-lastmod-text": "$1 wót $2",
+ "abusefilter-edit-hitcount": "Licba filtrowych trefarjow:",
+ "abusefilter-edit-consequences": "Akcije wuwjeźone pśi trjefarju",
+ "abusefilter-edit-action-warn": "Toś te akcije pó warnowanju do wužiwarja zapušćiś",
+ "abusefilter-edit-action-disallow": "Wužywarjeju wugbanje daneje akcije zawobaraś",
+ "abusefilter-edit-action-blockautopromote": "Wužywarjeju awtomatiski wobkšuśony status zajmjeś",
+ "abusefilter-edit-action-degroup": "Wužywarja ze wšych priwilegěrowanych kupkow wótwónoźeś",
+ "abusefilter-edit-action-block": "Wužywarjeju a/abo IP wobźěłanje zawobaraś",
+ "abusefilter-edit-action-throttle": "Akcije jano zapušćiś, jolic wužywaŕ pśekšaca progowy gódnotu",
+ "abusefilter-edit-action-rangeblock": "Wobcerk /16 blokěrowaś, z kótaregož wužywaŕ póchada.",
+ "abusefilter-edit-action-tag": "Změnu za dalšne pśeglědanje markěrowaś.",
+ "abusefilter-edit-throttle-count": "Licba dowólonych akcijow:",
+ "abusefilter-edit-throttle-period": "Casowy interwal:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|sekunda|sekunźe|sekundy|sekundow}}",
+ "abusefilter-edit-throttle-groups": "Wobgranicowanje spěšnosći wobźěłanja kupki pśez:\n:''(jadna na smužku, někotare z komami)''",
+ "abusefilter-edit-warn-message": "Systemowa powěźeńka za warnowanje:",
+ "abusefilter-edit-warn-other": "Druga powěźeńka",
+ "abusefilter-edit-warn-other-label": "Mě boka drugeje powěźeńki:\n:''(bźez prefiksa MediaWiki)''",
+ "abusefilter-edit-warn-actions": "Akcije:",
+ "abusefilter-edit-warn-preview": "Pśeglěd wubraneje powěźeńki",
+ "abusefilter-edit-warn-edit": "Wubranu powěźeńku napóraś/wobźěłaś",
+ "abusefilter-edit-tag-tag": "Toflicki, kótarež maju se nałožyś (jadna na smužku):",
+ "abusefilter-edit-denied": "Njamóžoš se drobnostki toś togo filtra woglědaś, dokulaž jo pśed zjawnym woglědanim schowany.",
+ "abusefilter-edit-main": "Filtrowe parametry",
+ "abusefilter-edit-done-subtitle": "Filter wobźěłany",
+ "abusefilter-edit-done": "[[Special:AbuseFilter/history/$1/diff/prev/$2|Twóje změny]] na [[Special:AbuseFilter/$1|filtrje $3]] su se składowali.",
+ "abusefilter-edit-badsyntax": "W filtrje, kótaryž sy pódał, wopśimujo zmólku.\nWudaśe parsera jo było: <pre>$1</pre>",
+ "abusefilter-edit-restricted": "Njamóžoš toś ten filter wobźěłaś, dokulaž wopśimujo jadnu wobgranicowanu akciju abo někotare wobgranicowane akcije.\nPšosym pšos wužywarja z pšawom wobgranicowane akcije pśidaś, aby cynił změnu za tebje.",
+ "abusefilter-edit-viewhistory": "Stawizny toś togo filtra se woglědaś",
+ "abusefilter-edit-history": "Stawizny:",
+ "abusefilter-edit-check": "Syntaksu pśeglědaś",
+ "abusefilter-edit-badfilter": "Filter, kótaryž sy pódał, njeeksistěrujo.",
+ "abusefilter-edit-revert": "Akcije, kótarež toś ten filter jo pśewjadł, anulěrowaś",
+ "abusefilter-edit-tools": "Rědy:",
+ "abusefilter-edit-test-link": "Toś ten filter pśeśiwo aktualnym změnam testowaś",
+ "abusefilter-edit-export": "Toś ten filter do drugego wikija eksportěrowaś",
+ "abusefilter-edit-syntaxok": "Žedne syntaksowe zmólki namakane.",
+ "abusefilter-edit-syntaxerr": "Syntaksowa zmólka namakana: $1",
+ "abusefilter-edit-bad-tags": "Jadna abo někotare z pódanych toflickow njejo płaśiwa.\nToflicki by mógli krotke byś a njeby mógli specielne znamuška wopśimjeś.",
+ "abusefilter-edit-notallowed": "Njesmějoš znjewužywańske filtry napóraś abo wobźěłaś",
+ "abusefilter-edit-notallowed-global": "Njesmějoš globalne znjewužywańske filtry napóraś abo wobźěłaś",
+ "abusefilter-edit-notallowed-global-custom-msg": "Swójske warnowańske filtry njepódpěraju se za globalne filtry",
+ "abusefilter-edit-builder-select": "Wubjeŕ opciju, aby ju zasajźił pla kursora",
+ "abusefilter-edit-builder-group-op-arithmetic": "Aritmetiske operatory",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Adicija (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Subtrakcija (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Multiplikacija (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Diwizija (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Modulo (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Potenca (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Pśirownańske operatory",
+ "abusefilter-edit-builder-op-comparison-equal": "Jo jadnak (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Njejo jadnak (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "Mjeńšy ako (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Wětšy ako (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Mjeńšy ako abo jadnak (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Wětšy ako abo jadnak (>=)",
+ "abusefilter-edit-builder-group-op-bool": "Boolske operatory",
+ "abusefilter-edit-builder-op-bool-not": "Njejo (!)",
+ "abusefilter-edit-builder-op-bool-and": "A (&)",
+ "abusefilter-edit-builder-op-bool-or": "Abo (|)",
+ "abusefilter-edit-builder-group-misc": "Wšake",
+ "abusefilter-edit-builder-misc-in": "wopśimjony w znamjenjowem rěźe (in)",
+ "abusefilter-edit-builder-misc-like": "Pasujo k mustroju (like)",
+ "abusefilter-edit-builder-misc-rlike": "Pasujo k regularnemu wurazoju (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "Wotpowědujo regularnemu wurazoju, njeźiwa na wjelikopisanje (irlike)",
+ "abusefilter-edit-builder-misc-contains": "Lěwy znamješkowy rěd wopśimujo pšawy znamješkowy rěd (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "Tekstowy literal (\"\")",
+ "abusefilter-edit-builder-misc-tern": "Ternerny operator (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "z wuměnjenim (if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "Funkcije",
+ "abusefilter-edit-builder-funcs-length": "Dłujkosć znamjenjowego rěda (length)",
+ "abusefilter-edit-builder-funcs-lcase": "Do małych pismikow pśeměniś (lcase)",
+ "abusefilter-edit-builder-funcs-ucase": "Do wjelikich pismikow konwertěrowaś (ucase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "Zaměnjujobne znamješka normalizěrowaś (ccnorm)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "Dwójne znamješka wótpóraś (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "Specialne znamješka / znamješka dogromady (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "Normalizěrowaś (norm)",
+ "abusefilter-edit-builder-funcs-count": "Kak wjele razow znamješkowy rěd X wustupujo w znamješkowem rěźe Y (count)",
+ "abusefilter-edit-builder-funcs-rcount": "Wjele raz se regularny wuraz pokazujo w znamješkowem rěźe (rcount)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "Mjazyrum wótpóraś (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "Specialne znamješka wótpóraś (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "Jo IP we wobcerku? (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "Znamješkowy rěd za někotarymi źělnymi znamješkowymi rědami pśepytaś (contains_any)",
+ "abusefilter-edit-builder-funcs-substr": "Źělny znamješkowy rěd (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "Pozicija źělnego znamješkowego rěeda w znamješkowem rěźe (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "Źělny znamješkowy rěd pśez znamješkowy rěd narownaś (str_replace)",
+ "abusefilter-edit-builder-funcs-rescape": "Maskěrowany znamuškowy rjeśazk ako literal w regulnarnem wurazu (rescape)",
+ "abusefilter-edit-builder-funcs-set_var": "Wariablu stajiś (set_var)",
+ "abusefilter-edit-builder-group-vars": "Wariable",
+ "abusefilter-edit-builder-vars-accountname": "Kontowe mě (on account creation)",
+ "abusefilter-edit-builder-vars-timestamp": "Unix casowy kołk změny",
+ "abusefilter-edit-builder-vars-action": "Akcija",
+ "abusefilter-edit-builder-vars-addedlines": "Smužki pśidane pśi wobźěłowanju",
+ "abusefilter-edit-builder-vars-delta": "Změnjenje wjelikosći pśi wobźěłowanju",
+ "abusefilter-edit-builder-vars-diff": "Zjadnośony rozdźěl změnow pó wobźěłowanju",
+ "abusefilter-edit-builder-vars-newsize": "Nowa wjelikosć boka",
+ "abusefilter-edit-builder-vars-oldsize": "Stara wjelikosć boka",
+ "abusefilter-edit-builder-vars-removedlines": "Smužki, kótarež su wótporali pśi wobźěłanju",
+ "abusefilter-edit-builder-vars-summary": "Zespominanje/pśicyna wobźěłanja",
+ "abusefilter-edit-builder-vars-article-id": "ID boka",
+ "abusefilter-edit-builder-vars-article-ns": "Mjenjowy rum boka",
+ "abusefilter-edit-builder-vars-article-text": "Titel boka (bźez mjenjowego ruma)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Dopołny titel boka",
+ "abusefilter-edit-builder-vars-article-views": "Wobglědanja boka",
+ "abusefilter-edit-builder-vars-movedfrom-id": "Bokowy ID žrědłowego boka",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "Mjenjowy rum žrědłowego boka",
+ "abusefilter-edit-builder-vars-movedfrom-text": "Titel žrědłowego boka",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "Dopołny titel žrědłowego boka",
+ "abusefilter-edit-builder-vars-movedto-id": "Bokowy ID celowego boka",
+ "abusefilter-edit-builder-vars-movedto-ns": "Mjenjowy rum celowego boka",
+ "abusefilter-edit-builder-vars-movedto-text": "Titel celowego boka",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "Dopołny titel celowego boka",
+ "abusefilter-edit-builder-vars-user-editcount": "Licenje změnow wužywarja",
+ "abusefilter-edit-builder-vars-user-age": "Starstwo wužywarskego konta",
+ "abusefilter-edit-builder-vars-user-name": "Mě wužywarskego konta",
+ "abusefilter-edit-builder-vars-user-groups": "Kupki (teke implicitne), w kótarychž wužywaŕ jo cłonk",
+ "abusefilter-edit-builder-vars-user-blocked": "Lěc wužywaŕ jo blokěrowany",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "Cas, gaž e-mailowa adresa jo se wobkšuśiła",
+ "abusefilter-edit-builder-vars-recent-contributors": "Slědnych pěś wobźěłarjow boka",
+ "abusefilter-edit-builder-vars-all-links": "Wše eksterne wótkaze w nowem teksće",
+ "abusefilter-edit-builder-vars-added-links": "Wše eksterne wótkaze, kótarež su se pśidali pśez změnu",
+ "abusefilter-edit-builder-vars-removed-links": "Wše eksterne wótkaze, kótarež su se wótpórali pśez změnu",
+ "abusefilter-edit-builder-vars-old-text": "Stary wikitekst boka, do wobźěłanja",
+ "abusefilter-edit-builder-vars-new-text": "Nowy wikitekst boka, pó wobźěłanju",
+ "abusefilter-edit-builder-vars-new-pst": "Nowy wikitekst boka, pśed składowanim pśetwórjony",
+ "abusefilter-edit-builder-vars-diff-pst": "Zjadnośony rozdźěl změnow pó wobźěłowanju, pśed składowanim pśetwórjony",
+ "abusefilter-edit-builder-vars-addedlines-pst": "Smužki pśidane we wobźěłowanju, pśed składowanim pśetwórjone",
+ "abusefilter-edit-builder-vars-new-text-stripped": "Nowy tekst boka, bźez wobznamjenjeńskego teksta",
+ "abusefilter-edit-builder-vars-new-html": "Analyzěrowane HTML-žrědło noweje wersije",
+ "abusefilter-edit-builder-vars-restrictions-edit": "Šćitny schójźeńk za wobźěłowanje boka",
+ "abusefilter-edit-builder-vars-restrictions-move": "Šćitny schóźeńk za pśesuwanje boka",
+ "abusefilter-edit-builder-vars-restrictions-create": "Napórański šćit boka",
+ "abusefilter-edit-builder-vars-restrictions-upload": "Nagrawański šćit dataje",
+ "abusefilter-edit-builder-vars-old-text-stripped": "Tekst starego boka, bźez wobznamjenjenjow",
+ "abusefilter-edit-builder-vars-old-links": "Wótkaze w boku, pśed wobźěłanim",
+ "abusefilter-edit-builder-vars-old-html": "Wikitekst starego boka, do HTML analyzěrowany",
+ "abusefilter-edit-builder-vars-minor-edit": "Lěc změna markěrujo se ako snadna abo nic",
+ "abusefilter-edit-builder-vars-file-sha1": "Haš SHA1 datajowego wopśimjeśa",
+ "abusefilter-filter-log": "Nejnowše změny pśez filter",
+ "abusefilter-history": "Stawizny za znjewužywański filter #$1 změniś",
+ "abusefilter-history-foruser": "Změny wót $1",
+ "abusefilter-history-hidden": "Schowany",
+ "abusefilter-history-enabled": "Zmóžnjony",
+ "abusefilter-history-global": "Globalny",
+ "abusefilter-history-timestamp": "Cas",
+ "abusefilter-history-user": "Wužywaŕ",
+ "abusefilter-history-public": "Zjawne wopisanje filtra",
+ "abusefilter-history-flags": "Chórgojcki",
+ "abusefilter-history-filter": "Filtrowa pšawidło",
+ "abusefilter-history-comments": "Komentary",
+ "abusefilter-history-actions": "Akcije",
+ "abusefilter-history-backedit": "Slědk k filtrowemu editoroju",
+ "abusefilter-history-deleted": "Wulašowany",
+ "abusefilter-history-filterid": "Filter",
+ "abusefilter-history-select-legend": "Pytanje zlěpšyś",
+ "abusefilter-history-select-user": "Wužywaŕ:",
+ "abusefilter-history-select-submit": "Zlěpšyś",
+ "abusefilter-history-diff": "Změny",
+ "abusefilter-history-error-hidden": "Filter, kótaryž sy pominał, jo schowany, a njamóžoš se jogo stawizny woglědaś.",
+ "abusefilter-exception-unexpectedatend": "Njewócakowany \"$2\" pla znamuška $1.",
+ "abusefilter-exception-expectednotfound": "Wócakowany $2 pla znamuška $1 njenamakany (město togo $3 $4).",
+ "abusefilter-exception-unrecognisedkeyword": "Njespóznaty klucowe słowo $2 pla znamuška $1.",
+ "abusefilter-exception-unexpectedtoken": "Njewócakowany token \"$3\" (typa $2) pla znamješka $1.",
+ "abusefilter-exception-unclosedstring": "Njeskóńcony znamješkowy rěd, zachopinajucy se pla znamješka $1.",
+ "abusefilter-exception-invalidoperator": "Njepłaśiwy operator \"$2\" pla znamuška $1.",
+ "abusefilter-exception-unrecognisedtoken": "Njepóznaty token \"$2\" pla znamješka $1.",
+ "abusefilter-exception-noparams": "Funkciji \"$2\" pla znamješka $1 njejsu se pśepódali žedne parametry.",
+ "abusefilter-exception-dividebyzero": "Njedowólony wopyt $2 pla znamuška $1 pśez nul diwiděrowaś.",
+ "abusefilter-exception-unrecognisedvar": "Njespóznata wariabla $2 pla znamješka $1",
+ "abusefilter-exception-notenoughargs": "Nic dosć argumentow za funkciju $2 wuwołanu pla znamješka $1.\n$3 {{PLURAL:$3|argument wócakowany|argumenta wócakowanej|argumenty wócakowane|argumentow wócakowanych}}, $4 {{PLURAL:$4|dostany|dostanej|dostane|dostanych}}",
+ "abusefilter-exception-regexfailure": "Zmólka w regularnem wurazu \"$3\" pla znamješka $1: \"$2\"",
+ "abusefilter-exception-overridebuiltin": "Njedowólone wótpóranje zaźěłaneje wariable \"$2\" pla znamuška $1.",
+ "abusefilter-exception-outofbounds": "Pomina se njeeksistěrujucy lisćinowy zapisk $2 (lisćinowa wjelikosć = $3) pla znamuška $1.",
+ "abusefilter-exception-notlist": "Pomina se zapisk pólneje wariable pla znamuška $1, za objekt, kótaryž njejo pólna wariabla.",
+ "abusefilter-action-tag": "Toflicka",
+ "abusefilter-action-throttle": "Pódušyś",
+ "abusefilter-action-warn": "Warnowaś",
+ "abusefilter-action-blockautopromote": "Awtomatiske pówušenje blokěrowaś",
+ "abusefilter-action-block": "Blokěrowaś",
+ "abusefilter-action-degroup": "Z kupkow wupóraś",
+ "abusefilter-action-rangeblock": "Blokěrowanje wobcerka",
+ "abusefilter-action-disallow": "Zakazaś",
+ "abusefilter-revert-title": "Wše změny wót filtra $1 anulěrowaś",
+ "abusefilter-revert-intro": "Toś ten formular śi zmóžnja wše změny anulěrowaś, kótarež su se pśewjadli wot znjewužywański filter na zakłaźe filtra $1. Pšosym wužywaj toś ten rěd wobglědniwje.",
+ "abusefilter-revert-preview-item": "$1: $2 jo cynił $3 na $4.\nAkcije, kótarež maju se anulěrowaś: $5 ($6)",
+ "abusefilter-revert-search-legend": "Wubjeŕ akcije znjewužywańskego filtra, kótarež maju se anulěrowaś",
+ "abusefilter-revert-periodstart": "Zachopjeńk periody:",
+ "abusefilter-revert-periodend": "Kóńc periody:",
+ "abusefilter-revert-search": "Akcije wubraś",
+ "abusefilter-revert-filter": "Filter:",
+ "abusefilter-revert-preview-intro": "Dołojce su pśez znjewužywański filter pśewjeźone akcije, kótarež budu se pśez toś tu akciju anulěrowaś. Pšosym kontrolěruj je kradosćiwje a klikni na \"{{int:abusefilter-revert-confirm}}\", aby wobkšuśił swój wuběrk.",
+ "abusefilter-revert-confirm": "Wobkšuśiś",
+ "abusefilter-revert-success": "Sy anulěrował wše akcije, kótarež su se pśewjadli pśez znjewužywański filter na zakłaźe [[Special:AbuseFilter/$1|filtra $2]].",
+ "abusefilter-revert-reason": "Awtomatiske anulěrowanje wšych akcijow, kótarež su se pśewjadli pśez znjewužywański filter na zakłaźe filtra $1. Pódana pśicyna: $2",
+ "abusefilter-revert-reasonfield": "Pśicyna:",
+ "abusefilter-test": "Filter pśeśiwo pjerwjejšnym tm;enam testowaś",
+ "abusefilter-test-intro": "Toś ten bok śi zmóžnja filter, kótaryž sy zapódał w slědujucem kašćiku, pśeśiwo {{PLURAL:$1|slědnej změnje|slědnyma změnoma|slědnym změnam}} pśekontrolěrowaś.\nAby zacytał eksistěrujucy filter, zapódaj jogo filtrowy ID do kašćika pód wobźěłańskim tekstowym kašćikom a klikni na tłocašk \"{{int:abusefilter-test-load}}\".",
+ "abusefilter-test-legend": "Testowanje filtrow",
+ "abusefilter-test-load-filter": "Zacytaj filter z ID:",
+ "abusefilter-test-submit": "Test",
+ "abusefilter-test-load": "Zacytaś",
+ "abusefilter-test-user": "Změny wót wužywarja:",
+ "abusefilter-test-period-start": "Změny pśewjeźone pó:",
+ "abusefilter-test-period-end": "Změny pśewjeźone do:",
+ "abusefilter-test-page": "Změny pśewjeźone na boku:",
+ "abusefilter-test-shownegative": "Změny pokazaś, kótarež njewótpowěduju filtroju",
+ "abusefilter-test-syntaxerr": "Filter, kótaryž sy zapódał, jo wopśimjeł syntaksowu zmólku.\nPśez kliknjenje na tłocašk \"{{int:abusefilter-edit-check}} móžoš połne wujasnjenje dostaś.",
+ "abusefilter-test-badtitle": "Titel boka, kótaryž sy zapódał, jo njepłaśiwy był. Wopśimujo snaź znamuška, kótarež njedaju se w titelu wužywaś.",
+ "abusefilter-changeslist-examine": "pśepytowaś",
+ "abusefilter-examine": "Jadnotliwe změny pśepytowaś",
+ "abusefilter-examine-intro": "Toś ten bok śi zmóžnja wariable pśespytowaś, kótarež su se napórali pśez znjewužywański filter za jadnotliwu změnu a ju pśeśiwo tiltram testowaś.",
+ "abusefilter-examine-legend": "Změny wubraś",
+ "abusefilter-examine-diff": "URL rozdźěla:",
+ "abusefilter-examine-user": "Wužywaŕ:",
+ "abusefilter-examine-title": "Titel boka:",
+ "abusefilter-examine-submit": "Pytaś",
+ "abusefilter-examine-vars": "Wariable napórane za toś tu změnu",
+ "abusefilter-examine-test": "Toś tu změnu pśeśiwo filtroju testowaś",
+ "abusefilter-examine-test-button": "Filter testowaś",
+ "abusefilter-examine-match": "Filter jo pasował na toś tu změnu.",
+ "abusefilter-examine-nomatch": "Filter njejo pasował na toś tu změnu.",
+ "abusefilter-examine-syntaxerror": "Filter ma njepłaśiwu syntaksu",
+ "abusefilter-examine-notfound": "Změna, kótaruž sy pominał, njejo se dała namakaś.",
+ "abusefilter-examine-incompatible": "Změna, kótaruž sy pominał, njepódpěra se pśez znjewužywański filter",
+ "abusefilter-examine-noresults": "Za pytańske parametry, kótarež sy pódał, žedne wuslědki njejsu se namakali.",
+ "abusefilter-topnav": "'''Nawigacija znjewužywańskego filtra'''",
+ "abusefilter-topnav-home": "Domoj",
+ "abusefilter-topnav-test": "Składkowe testowanje",
+ "abusefilter-topnav-examine": "Zachadne změny pśekontrolěrowaś",
+ "abusefilter-topnav-log": "Znjewužywański protokol",
+ "abusefilter-topnav-tools": "Rědy za wótpóranje zmólkow",
+ "abusefilter-topnav-import": "Filter importěrowaś",
+ "abusefilter-log-name": "Protokol znjewužywańskego filtra",
+ "abusefilter-log-header": "Toś ten protokol pokazujo zespominanje změnow, kótarež su se pśewjadli na filtrach.\nZa połne drobnostki glědaj [[Special:AbuseFilter/history|lisćinu]] nejnowšych filtrowych změnow.",
+ "abusefilter-log-noresults": "Žedne wuslědki",
+ "abusefilter-diff-title": "Rozdźěle mjazy wersijami",
+ "abusefilter-diff-item": "Zapisk",
+ "abusefilter-diff-version": "Wersija wót $1 {{GENDER:$3|wót}} $2",
+ "abusefilter-diff-info": "Zakładne informacije",
+ "abusefilter-diff-pattern": "Filtrowe wuměnjenja",
+ "abusefilter-diff-invalid": "Njemóžno pominane wersije wobstaraś",
+ "abusefilter-diff-backhistory": "Slědk k filtrowym stawiznam",
+ "abusefilter-diff-prev": "Starša změna",
+ "abusefilter-diff-next": "Nowša změna",
+ "abusefilter-import-intro": "Móžoš toś ten interfejs wužywaś, aby importěrował filtry z drugich wikijow.\nKlikni w žrědłowem wikiju na \"{{int:abusefilter-edit-export}}\" pód \"{{int:abusefilter-edit-tools}}\" na wobźěłowańskem interfejsu. Kopěruj z tekstowego póla, kótarež se pokazujo do toś togo tekstowego póla a klikni pótom na \"{{int:abusefilter-import-submit}}\",",
+ "abusefilter-import-submit": "Daty importěrowaś",
+ "abusefilter-group-default": "Standard"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/dtp.json b/www/wiki/extensions/AbuseFilter/i18n/dtp.json
new file mode 100644
index 00000000..4329a210
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/dtp.json
@@ -0,0 +1,29 @@
+{
+ "@metadata": {
+ "authors": [
+ "FRANCIS5091",
+ "FRANELYA"
+ ]
+ },
+ "abusefilter-desc": "Pokianu huristik mimpoporion hilo niditan",
+ "abusefilter": "Manahas sinalaguno nuludan",
+ "abuselog": "Log sinalaguno",
+ "abusefilter-intro": "Kopiwosian mongoi id kouroso mangaraja Manahas Sinalaguno.\nManahas Sinalaguno nopo nga doungkaralano kumaraja dit posusuangon momoripori iri numaan pokionuo id huristik mimpoporion montok oinsanan it maan.\nKouroso diti popokito do lis panahas potumboyo, om pabanar dilo do maan modipaito.",
+ "abusefilter-mustbeeditor": "Montok do kotingoligan, iri mongongoguno miampai kasagaan do mongodipait panahas sinalaguno no milo do momoguno diti kouroso.",
+ "abusefilter-warning": "'''Ponorohon''': Kinaraja diti noporianan nointutunan do kikoligogon.\nNiditan di awu nopongo maan pogulio do tiinu,\nom opinsugutan nu nopo do awu momongo niditan nga karaag do akaun nu toi ko maan antabai porotokol intonit ''IP''nu.\nOtumbayaan ko nopo do nopongo iti niditannu, maai nopo kaagu kotiko Pootodo do papatatap dilo.\nKointalangan do sinalaguno diti kooturan di kohompit do niditannu nopo nga oboyo do: $1",
+ "abusefilter-disallowed": "Kinaraja diti noporianan nointutunan do kikoligogon, om ilo no do awu pasagaon.\nNiditan di awu nopongo maan pogulio do tiinu,\nOtumbayaan ko nopo do nopongo iti niditannu, maai gia sunudai it mintatamong do nunu daa umbalan nu momonsoi. Kointalangan do sinalaguno diti kooturan di kohompit do kinarajanu nopo nga oboyo do: $1",
+ "abusefilter-blocked-display": "Kinaraja diti noporianan nointutunan do kikoligogon, om nantaban ko do popotilombus dilo.\nMooi do otingolig ilo {{SITENAME}} akaun momomogunonu om oinsanan porotokol intonit toi ''IP''nu nga nantaban do mongidit.\nNung nokosilap iti, maai posunudo do mintatamong.\nKointalangan do sinalaguno diti kooturan di kohompit do kinarajanu nopo nga oboyo do: $1",
+ "right-abusefilter-modify": "Alanai gagagan salahguno",
+ "right-abusefilter-view": "Intaai gagagan salaguno",
+ "right-abusefilter-log": "Intaai log salaguno",
+ "abusefilter-log-search-user": "Momoguno:",
+ "abusefilter-log-search-submit": "Ihumo",
+ "abusefilter-log-linkoncontribs": "Log nasalaguno",
+ "abusefilter-log-hide-reason": "Sabab:",
+ "abusefilter-list-edit": "Idito",
+ "abusefilter-deleted": "Nopugas",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|kotik|kokotik}}",
+ "abusefilter-list-options-submit": "Inwoguai",
+ "abusefilter-tools-reautoconfirm-user": "Momoguno:",
+ "abusefilter-edit-tools": "Tangakakamot:"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/dty.json b/www/wiki/extensions/AbuseFilter/i18n/dty.json
new file mode 100644
index 00000000..cdcc444f
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/dty.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "राम प्रसाद जोशी",
+ "Nirajan pant"
+ ]
+ },
+ "abusefilter-edit-badfilter": "तमीले खुलायाको फिल्टर उपलब्ध छैन ।",
+ "abusefilter-edit-builder-vars-user-age": "प्रयोगकर्ता खाताइ उमर",
+ "abusefilter-edit-builder-vars-user-name": "प्रयोगकर्ता खाताआ नाउँ",
+ "abusefilter-edit-builder-vars-user-rights": "प्रयोगकर्ता सित भयाआ अधिकारअन",
+ "abusefilter-history-comments": "टिप्पणीहरू"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/dv.json b/www/wiki/extensions/AbuseFilter/i18n/dv.json
new file mode 100644
index 00000000..782359cf
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/dv.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ushau97"
+ ]
+ },
+ "abusefilter-log-detailslink": "ތަފްސީލް",
+ "abusefilter-log-hide-reason": "ސަބަބު:"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/ee.json b/www/wiki/extensions/AbuseFilter/i18n/ee.json
new file mode 100644
index 00000000..d9809972
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/ee.json
@@ -0,0 +1,41 @@
+{
+ "@metadata": {
+ "authors": [
+ "Enock4seth",
+ "Natsubee"
+ ]
+ },
+ "abusefilter-log-search-user": "Ezãla:",
+ "abusefilter-log-search-title": "Tanya:",
+ "abusefilter-log-search-submit": "Dii",
+ "abusefilter-log-cannot-see-details": "Mɔɖeɖe meli bena wòa kpɔ nusiwo woŋlɔ ɖe afisia o.",
+ "abusefilter-log-details-hidden": "Wò mateŋu akpɔ nusiwo woŋlɔ ɖe afisia o elabena woɣla wo.",
+ "abusefilter-log-hide-hidden": "Ɣla nusiawo tso amewo gbɔ",
+ "abusefilter-logentry-suppress": "ɣla \"[[$1]]\"",
+ "abusefilter-logentry-unsuppress": "mega ‎ɣla \"[[$1]]\" o",
+ "abusefilter-list-edit": "Trɔ asi le eŋu",
+ "abusefilter-list-lastmodified": "Tɔtrɔ mamlea",
+ "abusefilter-deleted": "Wo tutui",
+ "abusefilter-tools-reautoconfirm-user": "Ezãla",
+ "abusefilter-edit-status-label": "Akɔntawo",
+ "abusefilter-edit-warn-preview": "Kpɔ du tatia do ŋgɔ",
+ "abusefilter-edit-warn-edit": "Ŋlɔ/trɔ du tatia",
+ "abusefilter-edit-history": "Xoxoawo",
+ "abusefilter-edit-tools": "Dɔwɔnuwo",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Kpekpeɖeŋu (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Ɖeɖetsome (-)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Mamame (/)",
+ "abusefilter-edit-builder-op-comparison-equal": "esɔ kpli (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "mesɔ kpli o (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "Ele sue wu (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Elolo wu (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Ele sue alo esɔ kple (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Elolo alo esɔ kple (>=)",
+ "abusefilter-edit-builder-op-bool-and": "Kple(&)",
+ "abusefilter-edit-builder-op-bool-or": "Alo (|)",
+ "abusefilter-test-submit": "Do Kpɔ",
+ "abusefilter-test-user": "Ezãla ƒe nutɔtrɔwo",
+ "abusefilter-examine-user": "Ezãla:",
+ "abusefilter-examine-submit": "Dii",
+ "abusefilter-topnav-home": "Aƒeme"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/el.json b/www/wiki/extensions/AbuseFilter/i18n/el.json
new file mode 100644
index 00000000..bd8526d1
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/el.json
@@ -0,0 +1,413 @@
+{
+ "@metadata": {
+ "authors": [
+ "Aitolos",
+ "Badseed",
+ "Consta",
+ "Crazymadlover",
+ "Flyax",
+ "Geraki",
+ "Glavkos",
+ "K sal 15",
+ "Konsnos",
+ "Lou",
+ "Omnipaedista",
+ "Protnet",
+ "ZaDiak",
+ "Αντιγόνη",
+ "Matma Rex",
+ "KATRINE1992",
+ "Nikosgranturismogt"
+ ]
+ },
+ "abusefilter-desc": "Εφαρμόζει αυτόματη ανίχνευση σε επεξεργασίες",
+ "abusefilter": "Διαμόρφωση φίλτρου καταχρήσεων",
+ "abuselog": "Ιστορικό καταχρήσεων",
+ "abusefilter-intro": "Καλωσήρθατε στη διεπαφή διαχείρισης του Φίλτρου Καταχρήσεων.\nΤο Φίλτρο Καταχρήσεων είναι ένα αυτοματοποιημένο λογισμικό που εφαρμόζει αυτόματες ευρετικές μεθόδους σε όλες τις ενέργειες.\nΑυτή η διεπαφή παρουσιάζει μία σειρά καθορισμένων φίλτρων και επιτρέπει την μετατροπή τους.",
+ "abusefilter-mustbeeditor": "Για λόγους ασφαλείας, μόνο χρήστες με το δικαίωμα να τροποποιούν φίλτρα καταχρήσεων είναι σε θέση να χρησιμοποιούν αυτήν την διεπαφή.",
+ "abusefilter-warning": "''' Προειδοποίηση:''' αυτή η ενέργεια έχει αυτόματα εντοπιστεί ως επιβλαβής.\nΜη εποικοδομητικές επεξεργασίες θα αναστραφούν γρήγορα,\nκαι σκανδαλώδεις ή κατ ' επανάληψη μη εποικοδομητικές επεξεργασίες θα οδηγήσουν το λογαριασμό σας ή τη διεύθυνση IP σας να αποκλειστεί.\nΕάν πιστεύετε ότι αυτή η ενέργεια είναι εποικοδομητική, μπορείτε να την υποβάλετε και πάλι για να την επιβεβαιώσετε.\nΕίναι μια σύντομη περιγραφή της παραβίασης με την οποία η ενέργειά σας ταιριάζει είναι: $1",
+ "abusefilter-disallowed": "Αυτή η ενέργεια ταυτοποιήθηκε αυτόματα ως επιβλαβής, και άρα απαγορεύεται.\nΑν πιστεύετε ότι αυτή η επεξεργασία είναι εποικοδομητική, παρακαλώ επικοινωνήστε με έναν διαχειριστή, και πληροφορήστε τον για το τι προσπαθείτε να κάνετε.\nΜια σύντομη περιγραφή του κανόνα καταχρήσεων στο οποίο αντιστοιχήθηκε η ενέργειά σας είναι η εξής: $1",
+ "abusefilter-blocked-display": "Αυτή η ενέργεια ταυτοποιήθηκε αυτόματα ως επιβλαβής,\nκαι αποτραπήκατε από το να την εκτελέσετε.\nΕπιπλέον, για να προστατευθεί το {{SITENAME}}, ο λογαριασμός χρήστη σας και όλες οι σχετιζόμενες διευθύνσεις IP έχουν φραγεί από τη δυνατότητα επεξεργασίας.\nΑν πιστεύετε ότι έχει γίνει κάποιο λάθος, παρακαλούμε επικοινωνήστε με κάποιον διαχειριστή.\nΜια σύντομη περιγραφή του κανόνα καταχρήσεων στο οποίο αντιστοίχησε η ενέργειά σας είναι η εξής: $1",
+ "abusefilter-degrouped": "Αυτή η ενέργεια αναγνωρίστηκε ως επιβλαβής αυτόματα.\nΣυνεπώς απαγορεύεται, και εφόσον ο λογαριασμός σας μάλλον έχει εκτεθεί, όλα τα δικαιώματά του ανακλήθηκαν.\nΑν πιστεύετε ότι έχει γίνει κάποιο λάθος, παρακαλούμε επικοινωνήστε με κάποιο γραφειοκράτη εξηγώντας το τι προσπαθείτε να κάνετε και τα δικαιώματά σας θα αποκατασταθούν.\nΜια σύντομη περιγραφή του κανόνα καταχρήσεων με τον οποίο βρήκε αντιστοιχία η ενέργειά σας είναι η εξής: $1",
+ "abusefilter-autopromote-blocked": "Αυτή η ενέργεια ταυτοποιήθηκε αυτόματα ως επιβλαβής, και άρα απαγορεύεται.\nΕπιπλέον, ως μέτρο ασφαλείας, κάποια από τα συνήθη δικαιώματά του ανακλήθηκαν προσωρινά.\nΜια σύντομη περιγραφή του κανόνα καταχρήσεων στο οποίο αντιστοίχησε η ενέργειά σας είναι η εξής: $1",
+ "abusefilter-blocker": "Φίλτρο κατάχρησης",
+ "abusefilter-blockreason": "Αυτόματη φραγή από το φίλτρο κατάχρησης.\nΠεριγραφή του σχετικού κανόνα: $1",
+ "abusefilter-degroupreason": "Τα δικαιώματα αφαιρέθηκαν αυτόματα από το φίλτρο κατάχρησης.\nΠεριγραφή κανόνα: $1",
+ "abusefilter-accountreserved": "Αυτό το όνομα λογαριασμού είναι δεσμευμένο για χρήση από το φίλτρο κατάχρησης.",
+ "right-abusefilter-modify": "Τροποποίηση φίλτρων καταχρήσεων",
+ "right-abusefilter-view": "Προβολή φίλτρων καταχρήσεων",
+ "right-abusefilter-log": "Εμφάνιση ιστορικού καταχρήσεων",
+ "right-abusefilter-log-detail": "Εμφάνιση λεπτομερειακών καταχωρήσεων του ιστορικού καταχρήσεων",
+ "right-abusefilter-private": "Εμφάνιση προσωπικών δεδομένων στο ιστορικό καταχρήσεων",
+ "right-abusefilter-modify-restricted": "Τροποποίηση φίλτρων καταχρήσεων με περιορισμένες ενέργειες",
+ "right-abusefilter-revert": "Αναστροφή όλων των αλλαγών από ένα δεδομένο φίλτρο καταχρήσεων",
+ "right-abusefilter-view-private": "Προβολἠ φίλτρων κατάχρησης που έχουν σημανθεί ως ιδιωτικά",
+ "right-abusefilter-hide-log": "Απόκρυψε τις καταχωρήσεις στο αρχείο καταγραφής παραβιάσεων",
+ "right-abusefilter-hidden-log": "Εμφάνιση των κρυμμένων καταχωρήσεων του ιστορικού παραβιάσεων",
+ "right-abusefilter-modify-global": "Δημιουργία ή τροποποίηση καθολικών φίλτρων κατάχρησης",
+ "action-abusefilter-modify": "τροποποίηση φίλτρων καταχρήσεων",
+ "action-abusefilter-view": "προβάλετε φίλτρα καταχρήσεων",
+ "action-abusefilter-log": "εμφάνιση του φίλτρου καταχρήσεων",
+ "action-abusefilter-log-detail": "εμφάνιση λεπτομερειακών καταχωρήσεων φίλτρων καταχρήσεων",
+ "action-abusefilter-private": "εμφάνιση απόρρητων δεδομένων στο φίλτρο κατάχρησεων",
+ "action-abusefilter-modify-restricted": "τροποποίηση φίλτρων κατάχρησεων με περιορισμένες ενέργειες",
+ "action-abusefilter-revert": "αναστροφή όλων των αλλαγών από ένα δεδομένο φίλτρο κατάχρησεων",
+ "action-abusefilter-view-private": "προβολἠ φίλτρων κατάχρησης που έχουν σημανθεί ως ιδιωτικά",
+ "abusefilter-log": "Ιστορικό φίλτρων καταχρήσεων",
+ "abusefilter-log-summary": "Αυτό το ιστορικό εμφανίζει μία λίστα όλων των ενεργειών που συνελήφθησαν από τα φίλτρα.",
+ "abusefilter-log-search": "Αναζήτηση φίλτρου καταχρήσεων",
+ "abusefilter-log-search-user": "Χρήστης:",
+ "abusefilter-log-search-filter": "Αναγνωριστικά φίλτρου (διαχωρισμένα με την κατακόρυφη κάθετο):",
+ "abusefilter-log-search-title": "Τίτλος:",
+ "abusefilter-log-search-wiki": "Wiki:",
+ "abusefilter-log-search-submit": "Αναζήτηση",
+ "abusefilter-log-entry": "$1: Ο $2 προκάλεσε ένα φίλτρο καταχρήσεων, εκτελώντας την ενέργεια \"$3\" στο $4.\nΕνέργειες που λήφθηκαν: $5;\nΠεριγραφή φίλτρου: $6",
+ "abusefilter-log-detailedentry-meta": "$1: Ο $2 προκάλεσε το $3, εκτελώντας την ενέργεια \"$4\" στο $5.\nΕνέργειες που λήφθηκαν: $6;\nΠεριγραφή φίλτρου: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "καθολικό φίλτρο $1",
+ "abusefilter-log-detailedentry-local": "φίλτρο $1",
+ "abusefilter-log-detailslink": "λεπτομέρειες",
+ "abusefilter-log-diff": "διαφορά",
+ "abusefilter-log-hidelink": "ρυθμίσετε την ορατότητα",
+ "abusefilter-log-details-legend": "Λεπτομέρειες για την καταχώρηση ιστορικού $1",
+ "abusefilter-log-details-var": "Μεταβλητή",
+ "abusefilter-log-details-val": "Τιμή",
+ "abusefilter-log-details-vars": "Παράμετροι ενεργειών",
+ "abusefilter-log-details-private": "Ιδιωτικές λεπτομέρειες μητρώου",
+ "abusefilter-log-details-ip": "Διεύθυνση IP της προέλευσης",
+ "abusefilter-log-noactions": "καμία",
+ "abusefilter-log-details-diff": "Αλλαγές που πραγματοποιήθηκαν κατά την επεξεργασία",
+ "abusefilter-log-linkoncontribs": "καταγραφές καταχρήσεων",
+ "abusefilter-log-linkoncontribs-text": "Καταγραφές καταχρήσεων για αυτόν τον χρήστη",
+ "abusefilter-log-hidden": "(κρυφή εγγραφή)",
+ "abusefilter-log-hidden-implicit": "(κρυφά επειδή αναθεώρηση έχει διαγραφεί)",
+ "abusefilter-log-cannot-see-details": "Δεν έχετε δικαιώματα για να δείτε λεπτομέρειες σχετικά με αυτή την εγγραφή.",
+ "abusefilter-log-details-hidden": "Δεν μπορείτε να δείτε τις λεπτομέρειες για αυτήν την καταχώρηση, διότι είναι κρυμμένες από τη δημόσια θέα.",
+ "abusefilter-log-hide-legend": "Αποκρύψτε το αρχείο καταγραφής",
+ "abusefilter-log-hide-id": "Σύνδεση εισόδου ID:",
+ "abusefilter-log-hide-hidden": "Απόκρυψη αυτής της εγγραφής από την κοινή θέα",
+ "abusefilter-log-hide-reason": "Αιτία:",
+ "abusefilter-log-hide-forbidden": "Δεν έχετε άδεια για να κρύψετε τις καταχωρήσεις κατάχρησης του αρχείου καταγραφής",
+ "abusefilter-logentry-suppress": "έκρυψε το \"[[$1]] \"",
+ "abusefilter-logentry-unsuppress": "αποκάλυψε \"[[$1]]\"",
+ "abusefilter-management": "Διαχείριση φίλτρου καταχρήσεων",
+ "abusefilter-list": "Όλα τα φίλτρα",
+ "abusefilter-list-id": "Ταυτότητα φίλτρου",
+ "abusefilter-list-status": "Κατάσταση",
+ "abusefilter-list-public": "Δημόσια περιγραφή",
+ "abusefilter-list-consequences": "Συνέπειες",
+ "abusefilter-list-visibility": "Ορατότητα",
+ "abusefilter-list-hitcount": "Μέτρηση αποτελεσμάτων",
+ "abusefilter-list-edit": "Επεξεργασία",
+ "abusefilter-list-details": "Λεπτομέρειες",
+ "abusefilter-list-limit": "Αριθμός ανά σελίδα:",
+ "abusefilter-list-lastmodified": "Τροποποιήθηκε τελευταία φορά",
+ "abusefilter-list-group": "Ομάδα φίλτρου",
+ "abusefilter-hidden": "Ιδιωτικό",
+ "abusefilter-unhidden": "Δημόσιο",
+ "abusefilter-enabled": "Ενεργοποιημένο",
+ "abusefilter-deleted": "Διαγεγραμμένο",
+ "abusefilter-disabled": "Απενεργοποιημένο",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|αποτέλεσμα|αποτελέσματα}}",
+ "abusefilter-new": "Δημιουργία νέου φίλτρου",
+ "abusefilter-return": "Επιστροφή στη διαχείριση φίλτρων",
+ "abusefilter-status-global": "Καθολικό",
+ "abusefilter-list-options": "Επιλογές",
+ "abusefilter-list-options-deleted": "Διαγεγραμμένα φίλτρα:",
+ "abusefilter-list-options-deleted-only": "Εμφάνιση μόνο διαγεγραμμένων φίλτρων",
+ "abusefilter-list-options-deleted-hide": "Απόκρυψη διαγεγραμμένων φίλτρων",
+ "abusefilter-list-options-deleted-show": "Συμπερίληψη διαγεγραμμένων φίλτρων",
+ "abusefilter-list-options-scope": "Εμφάνιση φίλτρων:",
+ "abusefilter-list-options-scope-local": "Μόνο τοπικοί κανόνες",
+ "abusefilter-list-options-scope-global": "Μόνο καθολικοί κανόνες",
+ "abusefilter-list-options-disabled": "Απενεργοποιημένα φίλτρα:",
+ "abusefilter-list-options-hidedisabled": "Απόκρυψη απενεργοποιημένων φίλτρων",
+ "abusefilter-list-options-searchfield": "Αναζήτηση εντός των κανόνων:",
+ "abusefilter-list-options-searchpattern": "Εισαγάγετε μια συνθήκη",
+ "abusefilter-list-options-searchoptions": "Λειτουργία αναζήτησης:",
+ "abusefilter-list-options-search-rlike": "Τακτική έκφραση",
+ "abusefilter-list-options-submit": "Ενημέρωση",
+ "abusefilter-tools-text": "Εδώ βρίσκονται κάποια εργαλεία τα οποία ενδέχεται να είναι χρἠσιμα στην διατύπωση και την εκσφαλμἀτωση φίλτρων καταχρἠσεων.",
+ "abusefilter-tools-expr": "Ελεγκτής εκφράσεων",
+ "abusefilter-tools-submitexpr": "Εκτίμηση",
+ "abusefilter-tools-reautoconfirm": "αποκατάσταση αυτομάτως επιβεβαιωμένης κατάστασης",
+ "abusefilter-tools-reautoconfirm-user": "Χρήστης:",
+ "abusefilter-tools-reautoconfirm-submit": "Αυτόματη επιβεβαίωση ξανά",
+ "abusefilter-reautoconfirm-none": "Η ιδιότητα αυτοεπιβεβαιωμένου χρήστη {{GENDER:$1|αυτού του χρήστη|αυτής της χρήστριας|αυτών των χρηστών}} δεν ανεστάλη.",
+ "abusefilter-reautoconfirm-notallowed": "Δεν σας επιτρέπεται η αποκατάσταση της αυτόματης επιβεβαίωσης",
+ "abusefilter-reautoconfirm-done": "Η αυτομάτως επιβεβαιωμένη κατάσταση του λογαριασμού αποκαταστάθηκε",
+ "abusefilter-status": "Από {{PLURAL:$1|την τελευταία|τις τελευταίες}} $1 {{PLURAL:$1|ενέργεια|ενέργειες}}, $2 ($3%) {{PLURAL:$2|έχει|έχουν}} φτάσει το προϋποτιθέμενο όριο $4, και $5 ($6%) {{PLURAL:$5|έχει|έχουν}} ταιριάξει με ένα από τα φίλτρα που είναι ενεργοποιημένα.",
+ "abusefilter-edit": "Επεξεργασία φίλτρου κατάχρησης",
+ "abusefilter-edit-subtitle": "Επεξεργασία φίλτρου $1",
+ "abusefilter-edit-subtitle-new": "Δημιουργία φίλτρου",
+ "abusefilter-edit-oldwarning": "<strong>Επεξεργάζεστε μια παλιά έκδοση αυτού του φίλτρου.\nΟι στατιστικές που αναφέρονται είναι για την πιο πρόσφατη έκδοση του φίλτρου.\nΑν αποθηκεύσετε τις αλλαγές σας, θα παρακάμψετε όλες τι επεξεργασίες από την έκδοση που επεξεργάζεστε.</strong> &bull;\n[[Special:AbuseFilter/history/$2|Επιστροφή στο ιστορικό του φίλτρου]].",
+ "abusefilter-edit-status-label": "Στατιστικά:",
+ "abusefilter-edit-status": "Από {{PLURAL:$1|τη $1 τελευταία ενέργεια|τις $1 τελευταίες ενέργειες}}, αυτό το φίλτρο έχει αντιστοιχίσει $2 ($3%).",
+ "abusefilter-edit-status-profile": "Από {{PLURAL:$1|τη $1 τελευταία ενέργεια|τις $1 τελευταίες ενέργειες}}, αυτό το φίλτρο έχει αντιστοιχίσει $2 ($3%).\nΣτο μέσο όρο, ο χρόνος απόκρισης της είναι $4ms, και καταναλώνει $5 {{PLURAL:$5|όρο|όρους}} από το όριο όρων.",
+ "abusefilter-edit-new": "Νέο φίλτρο",
+ "abusefilter-edit-save": "Αποθήκευση φίλτρου",
+ "abusefilter-edit-id": "Ταυτότητα φίλτρου:",
+ "abusefilter-edit-switch-editor": "Εναλλαγή επεξεργαστή",
+ "abusefilter-edit-description": "Περιγραφή:\n:''(σε δημόσια θέα)''",
+ "abusefilter-edit-field-description": "Περιγραφή",
+ "abusefilter-edit-group": "Ομάδα φίλτρου:",
+ "abusefilter-edit-flags": "Σημαίες:",
+ "abusefilter-edit-enabled": "Ενεργοποίηση αυτού του φίλτρου",
+ "abusefilter-edit-deleted": "Σήμανση ως διαγεγραμμένο",
+ "abusefilter-edit-hidden": "Απόκρυψη λεπτομερειών αυτού του φίλτρου από τη δημόσια θέα",
+ "abusefilter-edit-global": "Καθολικό φίλτρο",
+ "abusefilter-edit-rules": "Συνθήκες:",
+ "abusefilter-edit-field-conditions": "Συνθήκες",
+ "abusefilter-edit-notes": "Σημειώσεις:",
+ "abusefilter-edit-lastmod": "Το φίλτρο τροποποιήθηκε τελευταία φορά:",
+ "abusefilter-edit-lastmod-text": "$1 από $2",
+ "abusefilter-edit-hitcount": "Αποτελέσματα φίλτρου:",
+ "abusefilter-edit-consequences": "Εκτέλεση της ένεργειας όταν εντοπισθεί το αποτέλεσμα",
+ "abusefilter-edit-action-warn": "Πρόκληση τέτοιων ενεργειών αφού δοθεί στον χρήστη μια προειδοποίηση",
+ "abusefilter-edit-action-disallow": "Αποτροπή του χρήστη από την εκτέλεση της συγκεκριμένης ενέργειας",
+ "abusefilter-edit-action-blockautopromote": "Ανάκληση της ιδιότητας αυτοεπιβεβαιωμένου χρήστη",
+ "abusefilter-edit-action-degroup": "Αφαίρεσε τον χρήστη από όλες τις ομάδες δικαιωμάτων",
+ "abusefilter-edit-action-block": "Φραγή χρήστη ή/και διεύθυνσης IP από την επεξεργασία",
+ "abusefilter-edit-action-throttle": "Πρόκληση τέτοιων ενεργειών μόνο αν ο χρήστης ξεπεράσει ένα όριο ρυθμού",
+ "abusefilter-edit-action-rangeblock": "Φραγή της εμβέλειας IP /16 από όπου προέρχεται ο χρήστης.",
+ "abusefilter-edit-action-tag": "Σήμανση της επεξεργασίας με ετικέτα για περαιτέρω επιθεώρηση",
+ "abusefilter-edit-throttle-count": "Αριθμός επιτρεπόμενων ενεργειών:",
+ "abusefilter-edit-throttle-period": "Χρονική περίοδος:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|δευτερόλεπτο|δευτερόλεπτα}}",
+ "abusefilter-edit-throttle-groups": "Εμπόδιση ομάδας από:\n:''(ένα ανά γραμμή, συνδυασμός με κόμματα)''",
+ "abusefilter-edit-warn-message": "Μήνυμα συστήματος για χρησιμοποίηση για προειδοποίηση:",
+ "abusefilter-edit-warn-other": "Άλλο μήνυμα",
+ "abusefilter-edit-warn-other-label": "Όνομα σελίδας άλλου μηνύματος:\n:''(χωρίς πρόθεμα MediaWiki)''",
+ "abusefilter-edit-warn-actions": "Ενέργειες:",
+ "abusefilter-edit-warn-preview": "Προεπισκόπηση του επιλεγμένου μηνύματος",
+ "abusefilter-edit-warn-edit": "Δημιουργία/Επεξεργασία επιλεγμένων μηνυμάτων",
+ "abusefilter-edit-tag-tag": "Ετικέτες για να επικολληθούν (μία ανά γραμμή):",
+ "abusefilter-edit-denied": "Δεν μπορείτε να δείτε τις λεπτομέρειες αυτού του φίλτρου, γιατί αυτές έχουν αποκρυφθεί από τη δημόσια θέα.",
+ "abusefilter-edit-main": "Παράμετροι φίλτρου",
+ "abusefilter-edit-done-subtitle": "Επεξεργασμένο φίλτρο",
+ "abusefilter-edit-done": "Οι [[Special:AbuseFilter/history/$1/diff/prev/$2|αλλαγές]] σας στο [[Special:AbuseFilter/$1|φίλτρο $3]] έχουν αποθηκευτεί επιτυχώς.",
+ "abusefilter-edit-badsyntax": "Υπάρχει ένα συντακτικό λάθος στο φίλτρο που δώσατε.\nΤο αποτέλεσμα από τον λεξιαναλυτή ήταν: <pre>$1</pre>",
+ "abusefilter-edit-restricted": "Δεν μπορείτε να επεξεργαστείτε αυτό το φίλτρο, γιατί περιέχει μία ή περισσότερες μη επιτρεπτές ενέργειες.\nΠαρακαλούμε ζητήστε από ένα χρήστη με δικαιοδοσία να εκτελεί μη επιτρεπτές ενέργειες να κάνει την αλλαγή για σας.",
+ "abusefilter-edit-viewhistory": "Εμφάνιση του ιστορικού αυτού του φίλτρου",
+ "abusefilter-edit-history": "Ιστορικό:",
+ "abusefilter-edit-check": "Έλεγχος σύνταξης",
+ "abusefilter-edit-badfilter": "Το φίλτρο που καθορίσατε δεν υπάρχει",
+ "abusefilter-edit-revert": "Αναστροφή των ενεργειών αυτού του φίλτρου",
+ "abusefilter-edit-tools": "Εργαλεία:",
+ "abusefilter-edit-test-link": "Δοκιμή αυτού του φίλτρου ενάντια σε πρόσφατες επεξεργασίες",
+ "abusefilter-edit-export": "Εξαγάγετε αυτό το φίλτρο σε άλλο wiki",
+ "abusefilter-edit-syntaxok": "Δεν εντοπίστηκε κανένα συντακτικό σφάλμα.",
+ "abusefilter-edit-syntaxerr": "Εντοπίστηκε συντακτικό σφάλμα: $1",
+ "abusefilter-edit-bad-tags": "Μία ή περισσότερες από τις ετικέτες που καθόρισες δεν είναι έγκυρο.\nΟι ετικέτες θα πρέπει να είναι βραχείες και θα πρέπει να μην περιέχουν ειδικούς χαρακτήρες.",
+ "abusefilter-edit-notallowed": "Δεν σου επιτρέπεται να δημιουργήσεις ή να επεξεργαστείς φίλτρα καταχρήσεων",
+ "abusefilter-edit-notallowed-global": "Δεν σου επιτρέπεται να δημιουργήσεις ή να επεξεργαστείς καθολικά φίλτρα καταχρήσεων",
+ "abusefilter-edit-notallowed-global-custom-msg": "Προσαρμοσμένα μηνύματα προειδοποίησης δεν υποστηρίζονται για τα καθολικά φίλτρα",
+ "abusefilter-edit-builder-select": "Διαλέξτε μια επιλογή για να την προσθέσετε στο δρομέα",
+ "abusefilter-edit-builder-group-op-arithmetic": "Αριθμητικοί τελεστές",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Πρόσθεση (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Αφαίρεση (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Πολλαπλασιασμός (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Διαίρεση (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Υπόλοιπο (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Δύναμη (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Τελεστές σύγκρισης",
+ "abusefilter-edit-builder-op-comparison-equal": "Τιμή ίση προς (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Τιμή μη ίση προς (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "Μικρότερο από (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Μεγαλύτερο από (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Μικρότερο από ή ίσο με (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Μεγαλύτερο από ή ίσο με (>=)",
+ "abusefilter-edit-builder-group-op-bool": "Τελεστές Boole",
+ "abusefilter-edit-builder-op-bool-not": "Όχι (!)",
+ "abusefilter-edit-builder-op-bool-and": "Και (&)",
+ "abusefilter-edit-builder-op-bool-or": "Ή (|)",
+ "abusefilter-edit-builder-group-misc": "Άλλο",
+ "abusefilter-edit-builder-misc-in": "περιλαμβανόμενο στον ορμαθό (in)",
+ "abusefilter-edit-builder-misc-like": "Αντιστοιχεί στο μοτίβο (like)",
+ "abusefilter-edit-builder-misc-rlike": "Αντιστοιχεί στην τακτική έκφραση (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "Ταιριαστό regex, μη ευαίσθητη περίπτωση (irlike)",
+ "abusefilter-edit-builder-misc-contains": "Η αριστερή συμβολοσειρά περιέχει τη δεξιά συμβολοσειρά (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "Αλφαριθμητική τιμή (\"\")",
+ "abusefilter-edit-builder-misc-tern": "Τριαδικός τελεστής (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "Υποθετικό (εάν X ειδάλλως Y ή Z)",
+ "abusefilter-edit-builder-group-funcs": "Λειτουργίες",
+ "abusefilter-edit-builder-funcs-length": "Μήκος ορμαθού (length)",
+ "abusefilter-edit-builder-funcs-lcase": "Μετατροπή σε μικρογράμματη γραφή (lcase)",
+ "abusefilter-edit-builder-funcs-ucase": "Σε κεφαλαία (ucase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "Κανονικοποίηση συγχύσιμων χαρακτήρων (ccnorm)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "Αφαίρεση διπλών χαρακτήρων (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "Ειδικοί χαρακτήρες / συνολικοί χαρακτήρες (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "Κανονικοποίηση (norm)",
+ "abusefilter-edit-builder-funcs-count": "Αριθμός φορών που η συμβολοσειρά X εμφανίζεται στη συμβολοσειρά Y (count)",
+ "abusefilter-edit-builder-funcs-rcount": "Ο αριθμός των φορών που η τακτική έκφραση Χ εμφανίζεται στον ορμαθό Υ (rcount)",
+ "abusefilter-edit-builder-funcs-get_matches": "Σειρά από συνδυασμούς regex μέσα σε ένα κείμενο για κάθε ομάδα που έχει πρόσβαση σε αυτό (get_matches)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "Aφαίρεση κενού διαστήματος (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "Αφαίρεση ειδικών χαρακτήρων (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "Είναι η IP εντός εμβέλειας; (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "Αναζήτηση ορμαθού για πολλαπλούς υποορμαθούς (contains_any)",
+ "abusefilter-edit-builder-funcs-substr": "Υποορμαθός (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "Θέση του υποορμαθού στον ορμαθό (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "Αντικατάσταση υποορμαθού με ορμαθό (str_replace)",
+ "abusefilter-edit-builder-funcs-set_var": "Ορισμός μεταβλητής (set_var)",
+ "abusefilter-edit-builder-group-vars": "Μεταβλητές",
+ "abusefilter-edit-builder-vars-accountname": "Όνομα λογαριασμού (κατά την δημιουργία λογαριασμού)",
+ "abusefilter-edit-builder-vars-timestamp": "Χρονική σφραγίδα Unix της επεξεργασίας",
+ "abusefilter-edit-builder-vars-action": "Ενέργεια",
+ "abusefilter-edit-builder-vars-addedlines": "Γραμμές που προστέθηκαν στην επεξεργασία",
+ "abusefilter-edit-builder-vars-delta": "Αλλαγή μεγέθους κατά την επεξεργασία",
+ "abusefilter-edit-builder-vars-diff": "Ενοποιημένη διαφ αλλαγών που επέφερε η επεξεργασία",
+ "abusefilter-edit-builder-vars-newsize": "Μέγεθος νέας σελίδας",
+ "abusefilter-edit-builder-vars-oldsize": "Μέγεθος παλαιάς σελίδας",
+ "abusefilter-edit-builder-vars-removedlines": "Γραμμές που αφαιρέθηκαν κατά την επεξεργασία",
+ "abusefilter-edit-builder-vars-summary": "Περίληψη επεξεργασίας/αιτιολογία",
+ "abusefilter-edit-builder-vars-article-id": "Ταυτότητα σελίδας",
+ "abusefilter-edit-builder-vars-article-ns": "Περιοχή ονομάτων της σελίδας",
+ "abusefilter-edit-builder-vars-article-text": "Όνομα σελίδας (χωρίς περιοχή ονόματος)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Πλἠρης τίτλος σελίδας",
+ "abusefilter-edit-builder-vars-article-views": "Προβολές σελίδων",
+ "abusefilter-edit-builder-vars-movedfrom-id": "Σελίδα ταυτότητα της σελίδας προς μετακίνηση",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "Χώροι ονομάτων της σελίδας-πηγής προς μετακίνηση",
+ "abusefilter-edit-builder-vars-movedfrom-text": "Τίτλος της μετακίνηησης της σελίδας πηγής",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "Πλήρης τίτλος της μετακινούμενης σελίδας πηγής",
+ "abusefilter-edit-builder-vars-movedto-id": "Ταυτότητα σελίδας του προορισμού της μετακινούμενης σελίδας",
+ "abusefilter-edit-builder-vars-movedto-ns": "Περιοχή του προορισμού της μετακινούμενης σελίδας",
+ "abusefilter-edit-builder-vars-movedto-text": "Τίτλος της σελίδας προορισμού",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "Πλήρης τίτλος του προορισμού της μετακίνησης της σελίδας",
+ "abusefilter-edit-builder-vars-user-editcount": "Αριθμός επεξεργασιών χρήστη",
+ "abusefilter-edit-builder-vars-user-age": "Ηλικία του λογαριασμού χρήστη",
+ "abusefilter-edit-builder-vars-user-name": "Όνομα του λογαριασμού χρήστη",
+ "abusefilter-edit-builder-vars-user-groups": "Ομάδες (των εν δυνάμει ομάδων συμπεριλαμβανομένων) στις οποίες ανήκει ο χρήστης",
+ "abusefilter-edit-builder-vars-user-rights": "Δικαιώματα που έχει ο χρήστης",
+ "abusefilter-edit-builder-vars-user-blocked": "Αιτία φραγής χρήστη",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "Ώρα επαλήθευσης της ηλεκτρονικής διεύθυνσης",
+ "abusefilter-edit-builder-vars-recent-contributors": "Οι δέκα τελευταίοι χρήστες που συνεισέφεραν στη σελίδα",
+ "abusefilter-edit-builder-vars-all-links": "Όλες οι εξωτερικές συνδέσεις στο νέο κείμενο",
+ "abusefilter-edit-builder-vars-added-links": "Όλες οι εξωτερικές συνδέσεις που προστέθηκαν στην επεξεργασία",
+ "abusefilter-edit-builder-vars-removed-links": "Όλες οι εξωτερικές συνδέσεις που αφαιρέθηκαν στην επεξεργασία",
+ "abusefilter-edit-builder-vars-old-text": "Παλιο βικικείμενο σελίδας, πριν την επεξεργασία",
+ "abusefilter-edit-builder-vars-new-text": "Νέα σελίδα βικικειμένου, μετά την επεξεργασία",
+ "abusefilter-edit-builder-vars-new-text-stripped": "Νέο κείμενο σελίδας, γυμνό από κάθε σημείωση (markup)",
+ "abusefilter-edit-builder-vars-new-html": "Λεξιανάλυση της πηγής HTML της νέας αναθεώρησης",
+ "abusefilter-edit-builder-vars-restrictions-edit": "Επεξεργασία του επιπέδου προστασίας της σελίδας",
+ "abusefilter-edit-builder-vars-restrictions-move": "Μετακίνηση του επιπέδου προστασίας της σελίδας",
+ "abusefilter-edit-builder-vars-restrictions-create": "Δημιουργία προστασίας της σελίδας",
+ "abusefilter-edit-builder-vars-restrictions-upload": "Προστασία ανεβάσματος του αρχείου",
+ "abusefilter-edit-builder-vars-old-text-stripped": "Παλιό κείμενο σελίδας, χώρις κάποια σύνταξη markup",
+ "abusefilter-edit-builder-vars-old-links": "Σύνδεσμοι στην σελίδα πριν από την επεξεργασία",
+ "abusefilter-edit-builder-vars-old-html": "Παλιό βικικείμενο σελίδας, λεξιαναλυμένο σε HTML",
+ "abusefilter-edit-builder-vars-minor-edit": "Εάν ή όχι η επεξεργασία σημειώνεται ως μικροεπεξεργασία",
+ "abusefilter-edit-builder-vars-file-sha1": "SHA1 hash των περιεχομένων του αρχείου",
+ "abusefilter-edit-builder-vars-file-size": "Το μέγεθος του αρχείου σε bytes",
+ "abusefilter-filter-log": "Πρόσφατες αλλαγές φίλτρων",
+ "abusefilter-history": "Αλλαγή ιστορικού για το Φίλτρο Καταχρήσεων #$1",
+ "abusefilter-history-foruser": "Αλλαγές από τον $1",
+ "abusefilter-history-hidden": "Κρυμμένος",
+ "abusefilter-history-enabled": "Ενεργοποιημένο",
+ "abusefilter-history-global": "Καθολικό",
+ "abusefilter-history-timestamp": "Χρόνος",
+ "abusefilter-history-user": "Χρήστης",
+ "abusefilter-history-public": "Δημόσια περιγραφή του φίλτρου",
+ "abusefilter-history-flags": "Σημαίες",
+ "abusefilter-history-filter": "Κανόνας φίλτρου",
+ "abusefilter-history-comments": "Σχόλια",
+ "abusefilter-history-actions": "Ενέργειες",
+ "abusefilter-history-backedit": "Πίσω στη σελίδα τροποποίησης του φίλτρου",
+ "abusefilter-history-deleted": "Διαγεγραμμένος",
+ "abusefilter-history-filterid": "Φίλτρο",
+ "abusefilter-history-select-legend": "Διύλιση αναζήτησης",
+ "abusefilter-history-select-user": "Χρήστης:",
+ "abusefilter-history-select-submit": "Διύλιση",
+ "abusefilter-history-diff": "Αλλαγές",
+ "abusefilter-history-error-hidden": "Το φίλτρο που ζητήσατε είναι κρυφό, και δεν μπορείτε να δείτε το ιστορικό του.",
+ "abusefilter-exception-unexpectedatend": "Μη αναμενόμενο \"$2\" στον χαρακτήρα $1.",
+ "abusefilter-exception-expectednotfound": "Αναμενόταν ένα $2 στο χαρακτήρα $1, δεν βρέθηκε (βρέθηκε το $3 $4 στη θέση του).",
+ "abusefilter-exception-unrecognisedkeyword": "Μη αναγνωρίσιμη λέξη-κλειδί $2 στον χαρακτήρα $1.",
+ "abusefilter-exception-unexpectedtoken": "Απρόσμενο σύμβολο \"$3\" (του τύπου $2) στο χαρακτήρα $1.",
+ "abusefilter-exception-unclosedstring": "Μη κλεισμένα εισαγωγικά στην αλφαριθμητική τιμή που ξεκινάει από τον χαρακτήρα $1.",
+ "abusefilter-exception-invalidoperator": "Μη έγκυρος τελεστής \"$2\" στον χαρακτήρα $1.",
+ "abusefilter-exception-unrecognisedtoken": "Μη αναγνωρίσιμο σύμβολο (token) $2 στον χαρακτήρα $1.",
+ "abusefilter-exception-noparams": "Δεν δόθηκαν παράμετροι για τη συνάρτηση \"$2\" στο χαρακτήρα $1.",
+ "abusefilter-exception-dividebyzero": "Παράνομη προσπάθεια να διαχωριστεί τοe $2 μέσω μηδέν στον χαρακτήρα $1.",
+ "abusefilter-exception-unrecognisedvar": "Μη αναγνωρίσιμη μεταβλητή $2 στον χαρακτήρα $1.",
+ "abusefilter-exception-notenoughargs": "Όχι αρκετά ορίσματα στη συνάρτηση $2 που κλήθηκε στον χαρακτήρα $1.\n$3 {{PLURAL:$3|αναμενόμενο κατηγορούμενο|αναμενόμενα κατηγορούμενα}}, $4 αποκτημένα.",
+ "abusefilter-exception-regexfailure": "Σφάλμα στην κανονική έκφραση \"$3\" στον χαρακτήρα $1: \"$2\"",
+ "abusefilter-exception-overridebuiltin": "Παράνομη τοπική υπερκάλυψη της ενσωματωμένης μεταβλητής \"$2\" στον χαρακτήρα $1.",
+ "abusefilter-exception-outofbounds": "Η ζήτηση μη υπαρχόντων αντικειμένων λίστας $2 (μέγεθος λίστας = $3) στο χαρακτήρα $1.",
+ "abusefilter-exception-notlist": "Αίτηση για ένα αντικείμενο μέσα σε κάτι διαφορετικό από πίνακα στον χαρακτήρα $1.",
+ "abusefilter-action-tag": "Ετικέτα",
+ "abusefilter-action-throttle": "Εμπόδιση",
+ "abusefilter-action-warn": "Προειδοποίηση",
+ "abusefilter-action-blockautopromote": "Φραγή αυτόματης προώθησης",
+ "abusefilter-action-block": "Φραγή",
+ "abusefilter-action-degroup": "Αφαιρέστε από τις ομάδες",
+ "abusefilter-action-rangeblock": "Φάσμα φραγής",
+ "abusefilter-action-disallow": "Απαγόρευση",
+ "abusefilter-revert-title": "Αναστροφή όλων των αλλαγών από το φίλτρο $1",
+ "abusefilter-revert-intro": "Αυτή η φόρμα σας επιτρέπει να αναστρέψετε όλες τις αλλαγές που έγιναν από το φίλτρο καταχρήσεων εξ αιτίας του φίλτρου $1.\nΠαρακαλούμε να χρησιμοποιείτε προσεκτικά αυτό το εργαλείο.",
+ "abusefilter-revert-preview-item": "$1: $2 έκανε ένα $3 στο $4.\nΕνέργειες προς αναστροφή: $5 ($6)",
+ "abusefilter-revert-search-legend": "Επιλογή ενεργειών του φίλτρου κατάχρησης προς αναστροφή",
+ "abusefilter-revert-periodstart": "Έναρξη περιόδου:",
+ "abusefilter-revert-periodend": "Λήξη περιόδου:",
+ "abusefilter-revert-search": "Επιλογή ενεργειών",
+ "abusefilter-revert-filter": "Ταυτότητα φίλτρου:",
+ "abusefilter-revert-preview-intro": "Παρακάτω είναι οι ενέργειες που πάρθηκαν από το φίλτρο καταχρήσεων που θα αναστραφούν με αυτή την ενέργεια.\nΠαρακαλώ ελέγξτε τις προσεκτικά, και πατήστε \"{{int:abusefilter-revert-confirm}}\" για να ολοκληρώσετε την επιλογή σας.",
+ "abusefilter-revert-confirm-legend": "Επιβεβαίωση της αναστροφής",
+ "abusefilter-revert-confirm": "Επιβεβαίωση",
+ "abusefilter-revert-success": "Έχετε αναστρέψει όλες τις ενέργειες που πάρθηκαν από το φίλτρο καταχρήσεων εξαιτίας του [[Special:AbuseFilter/$1|φίλτρου $2]].",
+ "abusefilter-revert-reason": "Αυτόματη μεταστροφή όλων των δράσεων που ανέλαβε το φίλτρο καταχρήσεων εξ αιτίας του φίλτρου $1.\nΗ αιτία που δόθηκε: $2",
+ "abusefilter-revert-reasonfield": "Αιτία:",
+ "abusefilter-test": "Έλεγχος ενός φίλτρου ενάντια σε προηγούμενες επεξεργασίες",
+ "abusefilter-test-intro": "Αυτή η σελίδα σας επιτρέπει να ελέγξετε ένα φίλτρο που δόθηκε στο παρακάτω πλαίσιο έναντι {{PLURAL:$1|στη $1 τελευταία αλλαγή|στις $1 τελευταίες αλλαγές}}.\nΓια να φορτώσετε ένα υπάρχον φίλτρο, πληκτρολογήστε το αναγνωριστικό ID του στο κουτί κάτω από το πλαίσιο κειμένου επεξεργασίας, και πατήστε το πλήκτρο \"{{int:abusefilter-test-load}}\"",
+ "abusefilter-test-legend": "Έλεγχος φίλτρου",
+ "abusefilter-test-load-filter": "Φόρτωση ταυτότητας φίλτρου:",
+ "abusefilter-test-submit": "Δοκιμή",
+ "abusefilter-test-load": "Φορτώστε",
+ "abusefilter-test-user": "Αλλαγές από τον χρήστη:",
+ "abusefilter-test-period-start": "Αλλαγές που έγιναν μετά:",
+ "abusefilter-test-period-end": "Αλλαγές που έγιναν πριν:",
+ "abusefilter-test-page": "Αλλαγές στις οποίες υποβλήθηκε η σελίδα:",
+ "abusefilter-test-shownegative": "Εμφάνιση αλλαγών που δεν αντιστοιχούν στο φίλτρο",
+ "abusefilter-test-syntaxerr": "Το φίλτρο που δώσατε περιέχει ένα συντακτικό λάθος.\nΜπορείτε να λάβετε μια πλήρη εξήγηση πατώντας το κουμπί \"{{int:abusefilter-edit-check}}\".",
+ "abusefilter-changeslist-examine": "εξετάστε",
+ "abusefilter-examine": "Εξέταση μεμονωμένων αλλαγών",
+ "abusefilter-examine-intro": "Αυτή η σελίδα σας επιτρέπει να εξετάσετε μεταβλητές που έχουν παραχθεί από Φίλτρο Καταχρήσεων για μία μεμονωμένη αλλαγή και να την εξετάσετε κόντρα σε φίλτρα.",
+ "abusefilter-examine-legend": "Επιλέξτε τις αλλαγές",
+ "abusefilter-examine-diff": "URL διαφ:",
+ "abusefilter-examine-user": "Χρήστης:",
+ "abusefilter-examine-title": "Τίτλος σελίδων:",
+ "abusefilter-examine-submit": "Αναζήτηση",
+ "abusefilter-examine-vars": "Μεταβλητές παραγόμενες για αυτήν την αλλαγή",
+ "abusefilter-examine-test": "Έλεγχος αυτής της αλλαγής ενάντια σε ένα φίλτρο",
+ "abusefilter-examine-test-button": "Έλεγχος φίλτρου",
+ "abusefilter-examine-match": "Το φίλτρο αντιστοιχεί σε αυτήν την αλλαγή.",
+ "abusefilter-examine-nomatch": "Το φίλτρο δεν αντιστοιχεί σε αυτήν την αλλαγή.",
+ "abusefilter-examine-syntaxerror": "Το φίλτρο έχει μη έγκυρο συντακτικό",
+ "abusefilter-examine-notfound": "Η αλλαγή που ζητήσατε δεν ήταν δυνατό να βρεθεί",
+ "abusefilter-examine-incompatible": "Η αλλαγή που ζητήσατε δεν υποστηρίζεται από το Φίλτρο Καταχρήσεων",
+ "abusefilter-examine-noresults": "Δεν βρέθηκαν αποτελέσματα για τις παραμέτρους αναζήτησης που συμπληρώσατε.",
+ "abusefilter-topnav": "'''Πλοήγηση Φίλτρου Κατάχρησης'''",
+ "abusefilter-topnav-home": "Κεντρική σελίδα",
+ "abusefilter-topnav-test": "Μαζικός έλεγχος",
+ "abusefilter-topnav-examine": "Εξέταση περασμένων επεξεργασιών",
+ "abusefilter-topnav-log": "Ιστορικό καταχρήσεων",
+ "abusefilter-topnav-tools": "Εργαλεία εκσφαλμάτωσης",
+ "abusefilter-topnav-import": "Εισαγωγή φίλτρου",
+ "abusefilter-log-name": "Ιστορικό Φίλτρου Καταχρήσεων",
+ "abusefilter-log-header": "Αυτή η καταγραφή εμφανίζει μια σύνοψη από αλλαγές που έγιναν στα φίλτρα.\nΓια πλήρεις λεπτομέρειες, δείτε [[Special:AbuseFilter/history|τη λίστα]] των πρόσφατων αλλαγών φίλτρου.",
+ "abusefilter-log-noresults": "Κανένα αποτέλεσμα",
+ "abusefilter-diff-title": "Διαφορές μεταξύ των εκδόσεων",
+ "abusefilter-diff-item": "Αντικείμενο",
+ "abusefilter-diff-version": "Έκδοση από $1 από {{GENDER:$3|τον|την}} $2",
+ "abusefilter-diff-info": "Βασικές πληροφορίες",
+ "abusefilter-diff-pattern": "Όροι φίλτρων",
+ "abusefilter-diff-invalid": "Αδύνατη η εξαγωγή των ζητουμένων εκδοχών",
+ "abusefilter-diff-backhistory": "Πίσω στο ιστορικό φίλτρου",
+ "abusefilter-diff-prev": "Παλαιότερη αλλαγή",
+ "abusefilter-diff-next": "Νεότερη αλλαγή",
+ "abusefilter-import-intro": "Μπορείτε να χρησιμοποιήσετε αυτή την διεπιφάνεια για να εισαγάγετε φίλτρα από άλλα wiki.\nΣτο wiki προέλευσης, κάντε κλικ στο «{{int:abusefilter-edit-export}}» κάτω από το «{{int:abusefilter-edit-tools}}» στην διεπιφάνεια επεξεργασίας.\nΑντιγράψτε από το πλαίσιο κειμένου που εμφανίζεται και επικολλήστε το σε αυτό το πλαίσιο κειμένου και μετά κάντε κλικ στο «{{int:abusefilter-import-submit}}».",
+ "abusefilter-import-submit": "Εισαγωγή δεδομένων",
+ "abusefilter-group-default": "Προεπιλογή",
+ "apihelp-abusefilterchecksyntax-param-filter": "Το πλήρες φίλτρου κειμένου για να ελέγξετε τη σύνταξη.",
+ "apihelp-abusefilterchecksyntax-example-1": "Ελέγξτε τη σύνταξη ενός έγκυρου φίλτρου",
+ "apihelp-abusefilterchecksyntax-example-2": "Ελέγξτε τη σύνταξη ενός μη έγκυρου φίλτρου",
+ "apihelp-abusefilterevalexpression-param-expression": "Η έκφραση προς αξιολόγηση."
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/en-gb.json b/www/wiki/extensions/AbuseFilter/i18n/en-gb.json
new file mode 100644
index 00000000..43ffba89
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/en-gb.json
@@ -0,0 +1,19 @@
+{
+ "@metadata": {
+ "authors": [
+ "Shirayuki",
+ "Chase me ladies, I'm the Cavalry",
+ "Caliburn"
+ ]
+ },
+ "abusefilter-desc": "Applies automatic heuristics to edits",
+ "abusefilter": "Abuse filter configuration",
+ "abuselog": "Abuse log",
+ "right-abusefilter-modify": "Modify abuse filters",
+ "abusefilter-log-search-user": "User:",
+ "abusefilter-edit-builder-funcs-ccnorm": "Normalise confusable characters (ccnorm)",
+ "abusefilter-edit-builder-funcs-norm": "Normalise (norm)",
+ "abusefilter-exception-unrecognisedkeyword": "Unrecognised keyword $2 at character $1.",
+ "abusefilter-exception-unrecognisedtoken": "Unrecognised token \"$2\" at character $1.",
+ "abusefilter-exception-unrecognisedvar": "Unrecognised variable $2 at character $1"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/en.json b/www/wiki/extensions/AbuseFilter/i18n/en.json
new file mode 100644
index 00000000..bfc6e400
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/en.json
@@ -0,0 +1,527 @@
+{
+ "@metadata": {
+ "authors": [
+ "Andrew Garrett",
+ "Kunal Mehta"
+ ]
+ },
+ "abusefilter-desc": "Applies automatic heuristics to edits",
+ "abusefilter": "Abuse filter configuration",
+ "abuselog": "Abuse log",
+ "abusefilter-intro": "Welcome to the Abuse Filter management interface.\nThe Abuse Filter is an automated software mechanism of applying automatic heuristics to all actions.\nThis interface shows a list of defined filters, and allows them to be modified.",
+ "abusefilter-mustbeeditor": "For security reasons, only users with the right to modify abuse filters may use this interface.",
+ "abusefilter-warning": "'''Warning:''' This action has been automatically identified as harmful.\nUnconstructive actions will be quickly reverted,\nand egregious or repeated unconstructive editing will result in your account or IP address being blocked.\nIf you believe this action to be constructive, you may submit it again to confirm it.\nA brief description of the abuse rule which your action matched is: $1",
+ "abusefilter-disallowed": "This action has been automatically identified as harmful, and therefore disallowed.\nIf you believe your action was constructive, please inform an administrator of what you were trying to do.\nA brief description of the abuse rule which your action matched is: $1",
+ "abusefilter-blocked-display": "This action has been automatically identified as harmful,\nand you have been prevented from executing it.\nIn addition, to protect {{SITENAME}}, your user account and all associated IP addresses have been blocked from editing.\nIf this has occurred in error, please contact an administrator.\nA brief description of the abuse rule which your action matched is: $1",
+ "abusefilter-degrouped": "This action has been automatically identified as harmful.\nConsequently, it has been disallowed, and, since your account is suspected of being compromised, all rights have been revoked.\nIf you believe this to have been in error, please contact a bureaucrat with an explanation of this action, and your rights may be restored.\nA brief description of the abuse rule which your action matched is: $1",
+ "abusefilter-autopromote-blocked": "This action has been automatically identified as harmful, and it has been disallowed.\nIn addition, as a security measure, some privileges routinely granted to established accounts have been temporarily revoked from your account.\nA brief description of the abuse rule which your action matched is: $1",
+ "abusefilter-blocker": "Abuse filter",
+ "abusefilter-blockreason": "Automatically blocked by abuse filter.\nDescription of matched rule: $1",
+ "abusefilter-degroupreason": "Rights automatically stripped by abuse filter.\nRule description: $1",
+ "abusefilter-accountreserved": "This account name is reserved for use by the abuse filter.",
+ "right-abusefilter-modify": "Modify abuse filters",
+ "right-abusefilter-view": "View abuse filters",
+ "right-abusefilter-log": "View the abuse log",
+ "right-abusefilter-log-detail": "View detailed abuse log entries",
+ "right-abusefilter-private": "View private data in the abuse log",
+ "right-abusefilter-private-log": "View the AbuseFilter private details access log",
+ "right-abusefilter-modify-restricted": "Modify abuse filters with restricted actions",
+ "right-abusefilter-revert": "Revert all changes by a given abuse filter",
+ "right-abusefilter-view-private": "View abuse filters marked as private",
+ "right-abusefilter-log-private": "View log entries of abuse filters marked as private",
+ "right-abusefilter-hide-log": "Hide entries in the abuse log",
+ "right-abusefilter-hidden-log": "View hidden abuse log entries",
+ "right-abusefilter-modify-global": "Create or modify global abuse filters",
+ "action-abusefilter-modify": "modify abuse filters",
+ "action-abusefilter-view": "view abuse filters",
+ "action-abusefilter-log": "view the abuse log",
+ "action-abusefilter-log-detail": "view detailed abuse log entries",
+ "action-abusefilter-private": "view private data in the abuse log",
+ "action-abusefilter-private-log": "view the AbuseFilter private details access log",
+ "action-abusefilter-modify-restricted": "modify abuse filters with restricted actions",
+ "action-abusefilter-revert": "revert all changes by a given abuse filter",
+ "action-abusefilter-view-private": "view abuse filters marked as private",
+ "action-abusefilter-log-private": "view logs of abuse filters marked as private",
+ "abusefilter-log": "Abuse filter log",
+ "abusefilter-log-summary": "This log shows a list of all actions caught by the filters.",
+ "abusefilter-log-search": "Search the abuse log",
+ "abusefilter-log-search-user": "User:",
+ "abusefilter-log-search-filter": "Filter IDs (separate with pipes):",
+ "abusefilter-log-search-title": "Title:",
+ "abusefilter-log-search-wiki": "Wiki:",
+ "abusefilter-log-search-impact": "Impact:",
+ "abusefilter-log-search-impact-all": "All actions",
+ "abusefilter-log-search-impact-saved": "Saved changes only",
+ "abusefilter-log-search-impact-not-saved": "Without saved changes",
+ "abusefilter-log-search-entries-label": "Visibility:",
+ "abusefilter-log-search-entries-all": "All entries",
+ "abusefilter-log-search-entries-hidden": "Hidden entries only",
+ "abusefilter-log-search-entries-visible": "Visible entries only",
+ "abusefilter-log-search-action-taken-label": "Action taken:",
+ "abusefilter-log-search-action-taken-any": "Any",
+ "abusefilter-log-search-submit": "Search",
+ "abusefilter-log-entry": "$1: $2 {{GENDER:$8|triggered}} an abuse filter, {{GENDER:$8|performing}} the action \"$3\" on $4.\nActions taken: $5;\nFilter description: $6",
+ "abusefilter-log-entry-withdiff": "$1: $2 {{GENDER:$8|triggered}} an abuse filter, {{GENDER:$8|performing}} the action \"$3\" on $4.\nActions taken: $5;\nFilter description: $6 ($7)",
+ "abusefilter-log-detailedentry-meta": "$1: $2 {{GENDER:$9|triggered}} $3, {{GENDER:$9|performing}} the action \"$4\" on $5.\nActions taken: $6;\nFilter description: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "global filter $1",
+ "abusefilter-log-detailedentry-local": "filter $1",
+ "abusefilter-log-detailslink": "details",
+ "abusefilter-log-diff": "diff",
+ "abusefilter-log-hidelink": "adjust visibility",
+ "abusefilter-log-details-legend": "Details for log entry $1",
+ "abusefilter-log-details-var": "Variable",
+ "abusefilter-log-details-val": "Value",
+ "abusefilter-log-details-vars": "Action parameters",
+ "abusefilter-log-details-private": "Private log details",
+ "abusefilter-log-details-ip": "Originating IP address",
+ "abusefilter-log-details-checkuser": "Check user",
+ "abusefilter-log-noactions": "none",
+ "abusefilter-log-details-diff": "Changes made in edit",
+ "abusefilter-log-linkoncontribs": "abuse log",
+ "abusefilter-log-linkoncontribs-text": "Abuse log for {{GENDER:$1|this user}}",
+ "abusefilter-log-hidden": "(entry hidden)",
+ "abusefilter-log-hidden-implicit": "(hidden because revision has been deleted)",
+ "abusefilter-log-cannot-see-details": "You do not have permission to see details of this entry.",
+ "abusefilter-log-cannot-see-private-details": "You do not have permission to see private details of this entry.",
+ "abusefilter-log-nonexistent": "An entry with the provided ID does not exist.",
+ "abusefilter-log-details-hidden": "You cannot view the details for this entry because it is hidden from public view.",
+ "abusefilter-log-private-not-included": "One or more of the filter IDs you specified are private. Because you are not allowed to view details of private filters, these filters have not been searched for.",
+ "abusefilter-log-hide-legend": "Hide log entry",
+ "abusefilter-log-hide-id": "Log entry ID:",
+ "abusefilter-log-hide-hidden": "Hide this entry from public view",
+ "abusefilter-log-hide-reason": "Reason:",
+ "abusefilter-log-hide-reason-other": "Other/additional reason:",
+ "abusefilter-log-hide-forbidden": "You do not have permission to hide abuse log entries.",
+ "abusefilter-logentry-suppress": "hid \"[[$1]]\"",
+ "abusefilter-logentry-unsuppress": "unhid \"[[$1]]\"",
+ "logentry-abusefilter-hit": "$1 {{GENDER:$2|triggered}} $4, {{GENDER:$2|performing}} the action \"$5\" on $3. Actions taken: $6 ($7)",
+ "log-action-filter-abusefilter": "Type of filter change:",
+ "log-action-filter-abusefilter-create": "New filter creation",
+ "log-action-filter-abusefilter-modify": "Filter modification",
+ "logentry-abusefilterprivatedetails-access": "$1 {{GENDER:$2|accessed}} private details for $3",
+ "abusefilterprivatedetails-log-name": "AbuseFilter private details access log",
+ "abusefilter-management": "Abuse filter management",
+ "abusefilter-list": "All filters",
+ "abusefilter-list-id": "Filter ID",
+ "abusefilter-list-pattern": "Pattern",
+ "abusefilter-list-status": "Status",
+ "abusefilter-list-public": "Public description",
+ "abusefilter-list-consequences": "Consequences",
+ "abusefilter-list-visibility": "Visibility",
+ "abusefilter-list-hitcount": "Hit count",
+ "abusefilter-list-edit": "Edit",
+ "abusefilter-list-details": "Details",
+ "abusefilter-list-limit": "Number per page:",
+ "abusefilter-list-lastmodified": "Last modified",
+ "abusefilter-list-group": "Filter group",
+ "abusefilter-hidden": "Private",
+ "abusefilter-unhidden": "Public",
+ "abusefilter-enabled": "Enabled",
+ "abusefilter-deleted": "Deleted",
+ "abusefilter-disabled": "Disabled",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|hit|hits}}",
+ "abusefilter-new": "Create a new filter",
+ "abusefilter-return": "Return to filter management",
+ "abusefilter-status-global": "Global",
+ "abusefilter-list-options": "Options",
+ "abusefilter-list-options-deleted": "Deleted filters:",
+ "abusefilter-list-options-deleted-only": "Show only deleted filters",
+ "abusefilter-list-options-deleted-hide": "Hide deleted filters",
+ "abusefilter-list-options-deleted-show": "Include deleted filters",
+ "abusefilter-list-options-scope": "Show filters:",
+ "abusefilter-list-options-scope-local": "Local rules only",
+ "abusefilter-list-options-scope-global": "Global rules only",
+ "abusefilter-list-options-scope-all": "Local and global rules",
+ "abusefilter-list-options-disabled": "Disabled filters:",
+ "abusefilter-list-options-hidedisabled": "Hide disabled filters",
+ "abusefilter-list-options-searchfield": "Search within rules:",
+ "abusefilter-list-options-searchpattern": "Insert a pattern",
+ "abusefilter-list-options-searchoptions": "Search mode:",
+ "abusefilter-list-options-search-like": "Plain query",
+ "abusefilter-list-options-search-rlike": "Regular expression",
+ "abusefilter-list-options-search-irlike": "Case-insensitive regular expression",
+ "abusefilter-list-regexerror": "An error has occurred while searching: Regular expression syntax error.",
+ "abusefilter-list-options-submit": "Update",
+ "abusefilter-tools-text": "Here are some tools which may be useful in formulating and debugging abuse filters.",
+ "abusefilter-tools-expr": "Expression tester",
+ "abusefilter-tools-submitexpr": "Evaluate",
+ "abusefilter-tools-reautoconfirm": "Restore autoconfirmed status",
+ "abusefilter-tools-reautoconfirm-user": "User:",
+ "abusefilter-tools-reautoconfirm-submit": "Re-autoconfirm",
+ "abusefilter-reautoconfirm-none": "That user has not had {{GENDER:$1|his|her|their}} autoconfirmed status suspended.",
+ "abusefilter-reautoconfirm-notallowed": "You are not allowed to restore autoconfirmed status.",
+ "abusefilter-reautoconfirm-done": "Account's autoconfirmed status has been restored",
+ "abusefilter-status": "Of the last $1 {{PLURAL:$1|action|actions}}, $2 ($3%) {{PLURAL:$2|has|have}} reached the condition limit of $4, and $5 ($6%) {{PLURAL:$5|has|have}} matched one of the filters currently enabled.",
+ "abusefilter-edit": "Editing abuse filter",
+ "abusefilter-edit-subtitle": "Editing filter $1",
+ "abusefilter-edit-subtitle-new": "Creating filter",
+ "abusefilter-edit-oldwarning": "<strong>You are editing an old version of this filter.\nThe statistics quoted are for the most recent version of the filter.\nIf you save your changes, you will overwrite all changes since the revision you are editing.</strong> &bull;\n[[Special:AbuseFilter/history/$2|Return to this filter's history]].",
+ "abusefilter-edit-status-label": "Statistics:",
+ "abusefilter-edit-status": "Of the last $1 {{PLURAL:$1|action|actions}}, this filter has matched $2 ($3%).",
+ "abusefilter-edit-status-profile": "Of the last $1 {{PLURAL:$1|action|actions}}, this filter has matched $2 ($3%).\nOn average, its run time is $4 ms, and it consumes $5 {{PLURAL:$5|condition|conditions}} of the condition limit.",
+ "abusefilter-edit-throttled-warning": "'''Warning:''' This filter was automatically flagged as harmful. As a safety measure, the following actions will not execute ($1). Please review and [[mw:Extension:AbuseFilter/Conditions|optimize]] your conditions to remove this restriction",
+ "abusefilter-edit-new": "New filter",
+ "abusefilter-edit-save": "Save filter",
+ "abusefilter-edit-id": "Filter ID:",
+ "abusefilter-edit-switch-editor": "Switch editor",
+ "abusefilter-edit-description": "Description:\n:''(publicly viewable)''",
+ "abusefilter-edit-field-description": "description",
+ "abusefilter-edit-group": "Filter group:",
+ "abusefilter-edit-flags": "Flags:",
+ "abusefilter-edit-enabled": "Enable this filter",
+ "abusefilter-edit-deleted": "Mark as deleted",
+ "abusefilter-edit-hidden": "Hide details of this filter from public view",
+ "abusefilter-edit-global": "Global filter",
+ "abusefilter-edit-rules": "Conditions:",
+ "abusefilter-edit-field-conditions": "conditions",
+ "abusefilter-edit-notes": "Notes:",
+ "abusefilter-edit-lastmod": "Filter last modified:",
+ "abusefilter-edit-lastmod-text": "$1 by $2",
+ "abusefilter-edit-hitcount": "Filter hits:",
+ "abusefilter-edit-consequences": "Actions to take when matched",
+ "abusefilter-edit-action-warn": "Trigger these actions after giving the user a warning",
+ "abusefilter-edit-action-disallow": "Prevent the user from performing the action in question",
+ "abusefilter-edit-action-blockautopromote": "Revoke the user's autoconfirmed status",
+ "abusefilter-edit-action-degroup": "Remove the user from all privileged groups",
+ "abusefilter-edit-action-block": "Block the user and/or IP address from editing",
+ "abusefilter-edit-action-blocktalk": "Block the user and/or IP address from editing their own talk page",
+ "abusefilter-edit-action-throttle": "Trigger actions only if the user trips a rate limit",
+ "abusefilter-edit-action-rangeblock": "Block the respective IP range from which the user originates",
+ "abusefilter-edit-action-tag": "Tag the edit for further review",
+ "abusefilter-edit-throttle-count": "Number of actions to allow:",
+ "abusefilter-edit-throttle-period": "Period of time:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|second|seconds}}",
+ "abusefilter-edit-throttle-groups": "Group throttle by:\n:''(one per line, combine with commas)''",
+ "abusefilter-edit-warn-message": "System message to use for warning:",
+ "abusefilter-edit-warn-other": "Other message",
+ "abusefilter-edit-warn-other-label": "Page name of other message:\n:''(without MediaWiki prefix)''",
+ "abusefilter-edit-warn-actions": "Actions:",
+ "abusefilter-edit-warn-preview": "Preview selected message",
+ "abusefilter-edit-warn-edit": "Create/Edit selected message",
+ "abusefilter-edit-tag-tag": "[[Special:Tags|Tags]] to apply (one per line):",
+ "abusefilter-edit-block-anon-durations": "Block duration for anonymous users:",
+ "abusefilter-edit-block-user-durations": "Block duration for registered users:",
+ "abusefilter-block-anon": "anonymous users",
+ "abusefilter-block-user": "registered users",
+ "abusefilter-edit-denied": "You may not view details of this filter, because it is hidden from public view.",
+ "abusefilter-edit-main": "Filter parameters",
+ "abusefilter-edit-done-subtitle": "Filter edited",
+ "abusefilter-edit-done": "[[Special:AbuseFilter/history/$1/diff/prev/$2|Your changes]] to [[Special:AbuseFilter/$1|filter $3]] have been saved.",
+ "abusefilter-edit-badsyntax": "There is a syntax error in the filter you specified.\nThe output from the parser was: <pre>$1</pre>",
+ "abusefilter-edit-missingfields": "The following fields are required and must be filled: $1",
+ "abusefilter-edit-restricted": "You cannot edit this filter, because it contains one or more restricted actions.\nPlease ask a user with permission to add restricted actions to make the change for you.",
+ "abusefilter-edit-viewhistory": "View this filter's history",
+ "abusefilter-edit-history": "History:",
+ "abusefilter-edit-check": "Check syntax",
+ "abusefilter-edit-badfilter": "The filter you specified does not exist",
+ "abusefilter-edit-revert": "Revert actions taken by this filter",
+ "abusefilter-edit-tools": "Tools:",
+ "abusefilter-edit-test-link": "Test this filter against recent edits",
+ "abusefilter-edit-export": "Export this filter to another wiki",
+ "abusefilter-edit-syntaxok": "No syntax errors detected.",
+ "abusefilter-edit-syntaxerr": "Syntax error detected: $1",
+ "abusefilter-edit-bad-tags": "One or more of the tags you specified is not valid.\nTags should be short, they must not contain special characters, and they must not be reserved by other software. Try choosing a new tag name.",
+ "abusefilter-edit-notallowed": "You are not permitted to create or edit abuse filters",
+ "abusefilter-edit-notallowed-global": "You are not permitted to create or edit global abuse filters",
+ "abusefilter-edit-notallowed-global-custom-msg": "Custom warning messages are not supported for global filters",
+ "abusefilter-edit-builder-select": "Select an option to add it at the cursor",
+ "abusefilter-edit-builder-group-op-arithmetic": "Arithmetic operators",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Addition (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Subtraction (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Multiplication (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Division (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Modulo (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Power (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Comparison operators",
+ "abusefilter-edit-builder-op-comparison-equal": "Value equal to (==)",
+ "abusefilter-edit-builder-op-comparison-equal-strict": "Value and type equal to (===)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Value not equal to (!=)",
+ "abusefilter-edit-builder-op-comparison-notequal-strict": "Value and type not equal to (!==)",
+ "abusefilter-edit-builder-op-comparison-lt": "Less than (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Greater than (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Less than or equal to (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Greater than or equal to (>=)",
+ "abusefilter-edit-builder-group-op-bool": "Boolean operators",
+ "abusefilter-edit-builder-op-bool-not": "Not (!)",
+ "abusefilter-edit-builder-op-bool-and": "And (&)",
+ "abusefilter-edit-builder-op-bool-or": "Or (|)",
+ "abusefilter-edit-builder-op-bool-xor": "XOR (^)",
+ "abusefilter-edit-builder-group-misc": "Miscellaneous",
+ "abusefilter-edit-builder-misc-in": "contained in string (in)",
+ "abusefilter-edit-builder-misc-like": "Matches pattern (like)",
+ "abusefilter-edit-builder-misc-rlike": "Matches regex (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "Matches regex, case insensitive (irlike)",
+ "abusefilter-edit-builder-misc-contains": "Left string contains right string (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "String literal (\"\")",
+ "abusefilter-edit-builder-misc-tern": "Ternary operator (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "Conditional (if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "Functions",
+ "abusefilter-edit-builder-funcs-length": "String length (length)",
+ "abusefilter-edit-builder-funcs-lcase": "To lower case (lcase)",
+ "abusefilter-edit-builder-funcs-ucase": "To upper case (ucase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "Normalize confusable characters (ccnorm)",
+ "abusefilter-edit-builder-funcs-ccnorm-contains-any": "Normalize and search a string for multiple substrings in OR mode (ccnorm_contains_any)",
+ "abusefilter-edit-builder-funcs-ccnorm-contains-all": "Normalize and search a string for multiple substrings in AND mode (ccnorm_contains_all)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "Remove double-characters (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "Special characters / total characters (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "Normalize (norm)",
+ "abusefilter-edit-builder-funcs-count": "Number of times string X appears in string Y (count)",
+ "abusefilter-edit-builder-funcs-rcount": "Number of times regex X appears in string Y (rcount)",
+ "abusefilter-edit-builder-funcs-get_matches": "Array of regex matches within a text for each capturing group (get_matches)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "Remove whitespace (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "Remove special characters (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "Is IP in range? (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "Search string for multiple substrings in OR mode. (contains_any)",
+ "abusefilter-edit-builder-funcs-contains-all": "Search string for multiple substrings in AND mode. (contains_all)",
+ "abusefilter-edit-builder-funcs-substr": "Substring (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "Position of substring in string (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "Replace substring with string (str_replace)",
+ "abusefilter-edit-builder-funcs-rescape": "Escape string as literal in regex (rescape)",
+ "abusefilter-edit-builder-funcs-set_var": "Set variable (set_var)",
+ "abusefilter-edit-builder-group-vars": "Variables",
+ "abusefilter-edit-builder-vars-accountname": "Account name (on account creation)",
+ "abusefilter-edit-builder-vars-timestamp": "Unix timestamp of change",
+ "abusefilter-edit-builder-vars-timestamp-expanded": "Timestamp of the log",
+ "abusefilter-edit-builder-vars-action": "Action",
+ "abusefilter-edit-builder-vars-addedlines": "Lines added in edit",
+ "abusefilter-edit-builder-vars-delta": "Size change in edit",
+ "abusefilter-edit-builder-vars-diff": "Unified diff of changes made by edit",
+ "abusefilter-edit-builder-vars-newsize": "New page size",
+ "abusefilter-edit-builder-vars-oldsize": "Old page size",
+ "abusefilter-edit-builder-vars-old-content-model": "Old content model",
+ "abusefilter-edit-builder-vars-new-content-model": "New content model",
+ "abusefilter-edit-builder-vars-removedlines": "Lines removed in edit",
+ "abusefilter-edit-builder-vars-summary": "Edit summary/reason",
+ "abusefilter-edit-builder-vars-article-id": "Page ID",
+ "abusefilter-edit-builder-vars-article-ns": "Page namespace",
+ "abusefilter-edit-builder-vars-article-text": "Page title (without namespace)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Full page title",
+ "abusefilter-edit-builder-vars-article-views": "Page views",
+ "abusefilter-edit-builder-vars-movedfrom-id": "Page ID of move source page",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "Namespace of move source page",
+ "abusefilter-edit-builder-vars-movedfrom-text": "Title of move source page",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "Full title of move source page",
+ "abusefilter-edit-builder-vars-movedto-id": "Page ID of move destination page",
+ "abusefilter-edit-builder-vars-movedto-ns": "Namespace of move destination page",
+ "abusefilter-edit-builder-vars-movedto-text": "Title of move destination page",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "Full title of move destination page",
+ "abusefilter-edit-builder-vars-user-editcount": "Edit count of the user",
+ "abusefilter-edit-builder-vars-user-age": "Age of the user account",
+ "abusefilter-edit-builder-vars-user-name": "Name of the user account",
+ "abusefilter-edit-builder-vars-user-groups": "Groups (including implicit) the user is in",
+ "abusefilter-edit-builder-vars-user-rights": "Rights that the user has",
+ "abusefilter-edit-builder-vars-user-blocked": "Whether the user is blocked",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "Time email address was confirmed",
+ "abusefilter-edit-builder-vars-recent-contributors": "Last ten users to contribute to the page",
+ "abusefilter-edit-builder-vars-first-contributor": "First user to contribute to the page",
+ "abusefilter-edit-builder-vars-movedfrom-recent-contributors": "Last ten users to contribute to move source page",
+ "abusefilter-edit-builder-vars-movedfrom-first-contributor": "First user to contribute to move source page",
+ "abusefilter-edit-builder-vars-movedto-recent-contributors": "Last ten users to contribute to move destination page",
+ "abusefilter-edit-builder-vars-movedto-first-contributor": "First user to contribute to move destination page",
+ "abusefilter-edit-builder-vars-all-links": "All external links in the new text",
+ "abusefilter-edit-builder-vars-added-links": "All external links added in the edit",
+ "abusefilter-edit-builder-vars-removed-links": "All external links removed in the edit",
+ "abusefilter-edit-builder-vars-old-text": "Old page wikitext, before the edit",
+ "abusefilter-edit-builder-vars-new-text": "New page wikitext, after the edit",
+ "abusefilter-edit-builder-vars-new-pst": "New page wikitext, pre-save transformed",
+ "abusefilter-edit-builder-vars-diff-pst": "Unified diff of changes made by edit, pre-save transformed",
+ "abusefilter-edit-builder-vars-addedlines-pst": "Lines added in edit, pre-save transformed",
+ "abusefilter-edit-builder-vars-new-text-stripped": "New page text, stripped of any markup",
+ "abusefilter-edit-builder-vars-new-html": "Parsed HTML source of the new revision",
+ "abusefilter-edit-builder-vars-restrictions-edit": "Edit protection level of the page",
+ "abusefilter-edit-builder-vars-restrictions-move": "Move protection level of the page",
+ "abusefilter-edit-builder-vars-restrictions-create": "Create protection of the page",
+ "abusefilter-edit-builder-vars-restrictions-upload": "Upload protection of the file",
+ "abusefilter-edit-builder-vars-movedfrom-restrictions-edit": "Edit protection level of move source page",
+ "abusefilter-edit-builder-vars-movedfrom-restrictions-move": "Move protection level of move source page",
+ "abusefilter-edit-builder-vars-movedfrom-restrictions-create": "Create protection of move source page",
+ "abusefilter-edit-builder-vars-movedfrom-restrictions-upload": "Upload protection of move source file",
+ "abusefilter-edit-builder-vars-movedto-restrictions-edit": "Edit protection level of move destination page",
+ "abusefilter-edit-builder-vars-movedto-restrictions-move": "Move protection level of move destination page",
+ "abusefilter-edit-builder-vars-movedto-restrictions-create": "Create protection of move destination page",
+ "abusefilter-edit-builder-vars-movedto-restrictions-upload": "Upload protection of move destination file",
+ "abusefilter-edit-builder-vars-old-text-stripped": "Old page text, stripped of any markup",
+ "abusefilter-edit-builder-vars-old-links": "Links in the page, before the edit",
+ "abusefilter-edit-builder-vars-old-html": "Old page wikitext, parsed into HTML",
+ "abusefilter-edit-builder-vars-minor-edit": "Whether or not the edit is marked as minor",
+ "abusefilter-edit-builder-vars-file-sha1": "SHA1 hash of file contents",
+ "abusefilter-edit-builder-vars-file-size": "Size of the file in bytes",
+ "abusefilter-edit-builder-vars-file-mime": "MIME type of the file",
+ "abusefilter-edit-builder-vars-file-mediatype": "Media type of the file",
+ "abusefilter-edit-builder-vars-file-width": "Width of the file in pixels",
+ "abusefilter-edit-builder-vars-file-height": "Height of the file in pixels",
+ "abusefilter-edit-builder-vars-file-bits-per-channel": "Bits per color channel of the file",
+ "abusefilter-edit-block-options": "Block options:",
+ "abusefilter-filter-log": "Recent filter changes",
+ "abusefilter-history": "Change history for Abuse Filter #$1",
+ "abusefilter-history-foruser": "Changes by $1",
+ "abusefilter-history-hidden": "Hidden",
+ "abusefilter-history-enabled": "Enabled",
+ "abusefilter-history-global": "Global",
+ "abusefilter-history-timestamp": "Time",
+ "abusefilter-history-user": "User",
+ "abusefilter-history-public": "Public filter description",
+ "abusefilter-history-flags": "Flags",
+ "abusefilter-history-filter": "Filter rule",
+ "abusefilter-history-comments": "Comments",
+ "abusefilter-history-actions": "Actions",
+ "abusefilter-history-backedit": "Back to filter editor",
+ "abusefilter-history-deleted": "Deleted",
+ "abusefilter-history-filterid": "Filter",
+ "abusefilter-history-select-legend": "Refine search",
+ "abusefilter-history-select-user": "User:",
+ "abusefilter-history-select-filter": "Filter ID:",
+ "abusefilter-history-select-submit": "Refine",
+ "abusefilter-history-diff": "Changes",
+ "abusefilter-history-error-hidden": "The filter you requested is hidden, and you cannot view its history.",
+ "abusefilter-exception-unexpectedatend": "Unexpected \"$2\" at character $1.",
+ "abusefilter-exception-expectednotfound": "Expected a $2 at character $1, not found (found $3 $4 instead).",
+ "abusefilter-exception-unrecognisedkeyword": "Unrecognized keyword $2 at character $1.",
+ "abusefilter-exception-unexpectedtoken": "Unexpected token \"$3\" (of type $2) at character $1.",
+ "abusefilter-exception-unclosedstring": "Unclosed string starting at character $1.",
+ "abusefilter-exception-invalidoperator": "Invalid operator \"$2\" at character $1.",
+ "abusefilter-exception-unrecognisedtoken": "Unrecognized token \"$2\" at character $1.",
+ "abusefilter-exception-noparams": "No parameters given to function \"$2\" at character $1.",
+ "abusefilter-exception-dividebyzero": "Illegal attempt to divide $2 by zero at character $1.",
+ "abusefilter-exception-unrecognisedvar": "Unrecognized variable $2 at character $1.",
+ "abusefilter-exception-notenoughargs": "Not enough arguments to function $2 called at character $1.\nExpected $3 {{PLURAL:$3|argument|arguments}}, got $4",
+ "abusefilter-exception-regexfailure": "Error in regular expression \"$3\" at character $1: \"$2\"",
+ "abusefilter-exception-overridebuiltin": "Illegal overriding of built-in variable \"$2\" at character $1.",
+ "abusefilter-exception-outofbounds": "Requesting non-existent list item $2 (list size = $3) at character $1.",
+ "abusefilter-exception-notlist": "Requesting array item of non-array at character $1.",
+ "abusefilter-exception-unclosedcomment": "Unclosed comment at character $1.",
+ "abusefilter-action-tag": "Tag",
+ "abusefilter-action-throttle": "Throttle",
+ "abusefilter-action-warn": "Warn",
+ "abusefilter-action-blockautopromote": "Block autopromote",
+ "abusefilter-action-block": "Block",
+ "abusefilter-action-degroup": "Remove from groups",
+ "abusefilter-action-rangeblock": "Range-block",
+ "abusefilter-action-disallow": "Disallow",
+ "abusefilter-revert-title": "Revert all changes by filter $1",
+ "abusefilter-revert-intro": "This form allows you to revert all changes made by the abuse filter due to filter $1.\nPlease exercise care in using this tool.",
+ "abusefilter-revert-preview-item": "$1: $2 {{GENDER:$7|made}} a $3 on $4.\nActions to be reverted: $5 ($6)",
+ "abusefilter-revert-search-legend": "Select abuse filter actions to be reverted",
+ "abusefilter-revert-periodstart": "Period start:",
+ "abusefilter-revert-periodend": "Period end:",
+ "abusefilter-revert-search": "Select actions",
+ "abusefilter-revert-filter": "Filter ID:",
+ "abusefilter-revert-preview-intro": "Below are the actions taken by the abuse filter that will be reverted by this action.\nPlease check them carefully, and click \"{{int:abusefilter-revert-confirm}}\" to confirm your selection.",
+ "abusefilter-revert-confirm-legend": "Confirm the revert",
+ "abusefilter-revert-confirm": "Confirm",
+ "abusefilter-revert-success": "You have reverted all actions taken by the abuse filter due to [[Special:AbuseFilter/$1|filter $2]].",
+ "abusefilter-revert-reason": "Automatic revert of all actions taken by the abuse filter due to filter $1.\nReason given: $2",
+ "abusefilter-revert-reasonfield": "Reason:",
+ "abusefilter-test": "Test a filter against previous edits",
+ "abusefilter-test-intro": "This page allows you to check a filter entered in the box below against the last $1 {{PLURAL:$1|change|changes}}.\nTo load an existing filter, type its filter ID into the box below the edit textbox, and click the \"{{int:abusefilter-test-load}}\" button.",
+ "abusefilter-test-legend": "Filter testing",
+ "abusefilter-test-load-filter": "Load filter ID:",
+ "abusefilter-test-submit": "Test",
+ "abusefilter-test-load": "Load",
+ "abusefilter-test-user": "Changes by user:",
+ "abusefilter-test-period-start": "Changes made after:",
+ "abusefilter-test-period-end": "Changes made before:",
+ "abusefilter-test-page": "Changes made to page:",
+ "abusefilter-test-shownegative": "Show changes that do not match the filter",
+ "abusefilter-test-syntaxerr": "The filter you entered contained a syntax error.\nYou can receive a full explanation by clicking the \"{{int:abusefilter-edit-check}}\" button.",
+ "abusefilter-test-badtitle": "The page title you entered was invalid. It may contain one or more characters that cannot be used in titles.",
+ "abusefilter-changeslist-examine": "examine",
+ "abusefilter-examine": "Examine individual changes",
+ "abusefilter-examine-intro": "This page allows you to examine the variables generated by the Abuse Filter for an individual change, and test it against filters.",
+ "abusefilter-examine-legend": "Select changes",
+ "abusefilter-examine-diff": "Diff URL:",
+ "abusefilter-examine-user": "User:",
+ "abusefilter-examine-title": "Page title:",
+ "abusefilter-examine-submit": "Search",
+ "abusefilter-examine-vars": "Variables generated for this change",
+ "abusefilter-examine-test": "Test this change against a filter",
+ "abusefilter-examine-test-button": "Test filter",
+ "abusefilter-examine-match": "The filter matched this change.",
+ "abusefilter-examine-nomatch": "The filter did not match this change.",
+ "abusefilter-examine-syntaxerror": "The filter has invalid syntax",
+ "abusefilter-examine-notfound": "The change you requested could not be found.",
+ "abusefilter-examine-incompatible": "The change you requested is not supported by the Abuse Filter",
+ "abusefilter-examine-noresults": "No results were found for the search parameters you provided.",
+ "abusefilter-topnav": "'''Abuse Filter navigation'''",
+ "abusefilter-topnav-home": "Home",
+ "abusefilter-topnav-test": "Batch testing",
+ "abusefilter-topnav-examine": "Examine past edits",
+ "abusefilter-topnav-log": "Abuse log",
+ "abusefilter-topnav-tools": "Debugging tools",
+ "abusefilter-topnav-import": "Import filter",
+ "abusefilter-log-name": "Abuse filter log",
+ "abusefilter-log-header": "This log shows a summary of changes made to filters.\nFor full details, see [[Special:AbuseFilter/history|the list]] of recent filter changes.",
+ "abusefilter-logentry-create": "$1 {{GENDER:$2|created}} $4 ($5)",
+ "abusefilter-logentry-modify": "$1 {{GENDER:$2|modified}} $4 ($5)",
+ "abusefilter-log-noresults": "No results",
+ "abusefilter-diff-title": "Differences between versions",
+ "abusefilter-diff-item": "Item",
+ "abusefilter-diff-version": "Version from $1 {{GENDER:$3|by}} $2",
+ "abusefilter-diff-info": "Basic information",
+ "abusefilter-diff-pattern": "Filter conditions",
+ "abusefilter-diff-invalid": "Unable to fetch the requested versions",
+ "abusefilter-diff-backhistory": "Back to filter history",
+ "abusefilter-diff-prev": "Older change",
+ "abusefilter-diff-next": "Newer change",
+ "abusefilter-import-intro": "You can use this interface to import filters from other wikis.\nOn the source wiki, click \"{{int:abusefilter-edit-export}}\" under \"{{int:abusefilter-edit-tools}}\" on the editing interface.\nCopy from the textbox that appears, and paste it into this textbox, then click \"{{int:abusefilter-import-submit}}\".",
+ "abusefilter-import-submit": "Import data",
+ "abusefilter-group-default": "Default",
+ "abusefilter-http-error": "An HTTP error occurred: $1.",
+ "abusefilter-view-private-submit": "View private details",
+ "abusefilter-view-private": "View private details",
+ "abusefilter-view-private-reason": "Reason for accessing private details:",
+ "abusefilter-log-details-id": "Log ID",
+ "abusefilter-invalid-request": "Invalid request! You must access private log details through the form on [[Special:AbuseLog/$1]] and provide a reason.",
+ "abusefilter-invalid-request-noid": "Invalid request! You must access private log details through the form on the abuse log details page and provide a reason.",
+ "log-description-abusefilterprivatedetails": "This log shows a list of times when a user accessed the private details of an abuse log.",
+ "abusefilter-noreason": "Warning: To see the private details of this log, you must provide a reason.",
+ "abusefilter-log-ip-not-available": "Not Available",
+ "tag-abusefilter-condition-limit": "condition limit reached",
+ "tag-abusefilter-condition-limit-description": "Edits or other events that couldn't be checked by all active [[Special:AbuseFilter|abuse filters]] ([[mw:Extension:AbuseFilter/Conditions|help]]).",
+ "apihelp-abusefiltercheckmatch-description": "Check to see if an AbuseFilter matches a set of variables, editor logged AbuseFilter event.\n\nvars, rcid or logid is required however only one may be used.",
+ "apihelp-abusefiltercheckmatch-summary": "Check to see if an AbuseFilter matches a set of variables, editor logged AbuseFilter event.",
+ "apihelp-abusefiltercheckmatch-extended-description": "vars, rcid or logid is required however only one may be used.",
+ "apihelp-abusefiltercheckmatch-param-filter": "The full filter text to check for a match.",
+ "apihelp-abusefiltercheckmatch-param-vars": "JSON encoded array of variables to test against.",
+ "apihelp-abusefiltercheckmatch-param-rcid": "Recent change ID to check against.",
+ "apihelp-abusefiltercheckmatch-param-logid": "Abuse filter log ID to check against.",
+ "apihelp-abusefiltercheckmatch-example-1": "Test if recent change ID 15 matches a simple filter",
+ "apihelp-abusefilterchecksyntax-description": "Check syntax of an AbuseFilter filter.",
+ "apihelp-abusefilterchecksyntax-summary": "Check syntax of an AbuseFilter filter.",
+ "apihelp-abusefilterchecksyntax-param-filter": "The full filter text to check syntax on.",
+ "apihelp-abusefilterchecksyntax-example-1": "Check syntax of a valid filter",
+ "apihelp-abusefilterchecksyntax-example-2": "Check syntax of an invalid filter",
+ "apihelp-abusefilterevalexpression-description": "Evaluates an AbuseFilter expression.",
+ "apihelp-abusefilterevalexpression-summary": "Evaluates an AbuseFilter expression.",
+ "apihelp-abusefilterevalexpression-param-expression": "The expression to evaluate.",
+ "apihelp-abusefilterevalexpression-example-1": "Evaluate a simple expression",
+ "apihelp-abusefilterunblockautopromote-description": "Unblocks a user from receiving autopromotions due to an abusefilter consequence.",
+ "apihelp-abusefilterunblockautopromote-summary": "Unblocks a user from receiving autopromotions due to an abusefilter consequence.",
+ "apihelp-abusefilterunblockautopromote-param-user": "Username of the user you want to unblock.",
+ "apihelp-abusefilterunblockautopromote-example-1": "Remove the block on [[User:Example]]'s autopromotion",
+ "apihelp-query+abusefilters-description": "Show details of the abuse filters.",
+ "apihelp-query+abusefilters-summary": "Show details of the abuse filters.",
+ "apihelp-query+abusefilters-param-startid": "The filter ID to start enumerating from.",
+ "apihelp-query+abusefilters-param-endid": "The filter ID to stop enumerating at.",
+ "apihelp-query+abusefilters-param-show": "Show only filters which meet these criteria.",
+ "apihelp-query+abusefilters-param-limit": "The maximum number of filters to list.",
+ "apihelp-query+abusefilters-param-prop": "Which properties to get.",
+ "apihelp-query+abusefilters-example-1": "List enabled public filters",
+ "apihelp-query+abusefilters-example-2": "Show some details about filters",
+ "apihelp-query+abuselog-description": "Show events that were caught by one of the abuse filters.",
+ "apihelp-query+abuselog-summary": "Show events that were caught by one of the abuse filters.",
+ "apihelp-query+abuselog-param-start": "The timestamp to start enumerating from.",
+ "apihelp-query+abuselog-param-end": "The timestamp to stop enumerating at.",
+ "apihelp-query+abuselog-param-user": "Show only entries done by a given user or IP address.",
+ "apihelp-query+abuselog-param-title": "Show only entries occurring on a given page.",
+ "apihelp-query+abuselog-param-filter": "Show only entries that were caught by a given filter ID.",
+ "apihelp-query+abuselog-param-limit": "The maximum amount of entries to list.",
+ "apihelp-query+abuselog-param-prop": "Which properties to get.",
+ "apihelp-query+abuselog-param-wiki": "Wiki to show hits from.",
+ "apihelp-query+abuselog-example-1": "Show recent log entries",
+ "apihelp-query+abuselog-example-2": "Show recent log entries for [[API]]",
+ "apierror-abusefilter-canttest": "You don't have permission to test abuse filters.",
+ "apierror-abusefilter-cantcheck": "You don't have permission to check syntax of abuse filters.",
+ "apierror-abusefilter-nosuchlogid": "There is no abuselog entry with the id $1.",
+ "apierror-abusefilter-badsyntax": "The filter has invalid syntax."
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/eo.json b/www/wiki/extensions/AbuseFilter/i18n/eo.json
new file mode 100644
index 00000000..2b7a0e85
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/eo.json
@@ -0,0 +1,398 @@
+{
+ "@metadata": {
+ "authors": [
+ "AVRS",
+ "Amikeco",
+ "Blahma",
+ "KuboF",
+ "Objectivesea",
+ "Tlustulimu",
+ "Tradukisto",
+ "Yekrats",
+ "Matma Rex",
+ "Robin van der Vliet",
+ "Rafaneta",
+ "Psychoslave"
+ ]
+ },
+ "abusefilter-desc": "Aplikas aŭtomatan heŭristikon al redaktoj.",
+ "abusefilter": "Konfiguri filtrilon de misuzado",
+ "abuselog": "Protokolo pri misuzado",
+ "abusefilter-intro": "Bonvenon al la administra interfaco de la Misuzada Filtrilo.\nLa Misuzada Filtrilo estas aŭtomata programara ilo por apliki aŭtomata heŭristiko al ĉiuj agoj.\nĈi tiu interfaco montras liston de difinitaj filtriloj, kaj permesas ilin esti modifita.",
+ "abusefilter-mustbeeditor": "Pro sekurecaj kialoj, nur uzantoj kun la rajto modifi maluzadajn filtrilojn povas uzi ĉi tiun interfacon.",
+ "abusefilter-warning": "'''Averto''': Ĉi tiu ago estis aŭtomate identigita kiel malhelpema.\nMalkonstruktivaj redaktoj rapide estos malfaritaj,\nkaj ĉi tia ega aŭ ripetita malkonstruktiva redaktado rezultos, ke via konto aŭ komputilo estos forbarita.\nSe vi kredas ke ĉi tiu redakto estas ja konstruktiva, vi povas klaki Konservi denove por konfirmi ĝin.\nMallonga priskribo pri la regulo de misuzado kiun via ago kongruis estas: $1",
+ "abusefilter-disallowed": "Ĉi tiu ago estis aŭtomate identigita kiel damaĝa, kaj do estis malpermesita.\nSe vi kredas ke via redakto estis konstruktiva, bonvolu kontakti administranton, kaj informi lin pri kion vi provis fari.\nMallonga priskribo de la misuza regulo, kiun via ago kongruis, estas: $1",
+ "abusefilter-blocked-display": "Ĉi tiu ago estis aŭtomate taksita kiel malhelpa,\nkaj vi estis preventita farinte ĝin.\nPlue, por protekti {{SITENAME}}n, via uzanto-konto kaj ĉiuj ĉi-ligitaj IP-adresoj estis forbaritaj de redaktado.\nSe ĉi tiu okazis erare, bonvolu kontakti administranton.\nMallonga priskribo de la regulo de misuzado kiun via ago kongruis estas: $1",
+ "abusefilter-degrouped": "Ĉi tiu ago estis aŭtomate identigita kiel malhelpema.\nRezulte, ĝi estis malpermesita, kaj, ĉar via konto suspektite esti kaperita, ĉiuj rajtoj estis forigitaj.\nSe vi kredas ke ĉi tiel eraras, bonvolu kontakti burokraton kun ekspliko de ĉi tiu ago, kaj viaj rajtoj eble estos restarigitaj.\nMallonga priskribo de la misuzada regulo kiu kongruas vian agon estas: $1",
+ "abusefilter-autopromote-blocked": "Ĉi tiu ago estis aŭtomate identigita kiel malhelpema, kaj ĉi tiel ĝi estis malpermesita.\nPlue por sekureco, iom rajtoj ordinare donita al establitaj kontoj estas provizore prenita de via konto.\nMallonga resumo de la misuzada regulo kiu kongruis vian agon estas: $1",
+ "abusefilter-blocker": "Filtrilo de misuzo",
+ "abusefilter-blockreason": "Aŭtomate blokita de la misuzada filtrilo. Resumo de kongrua regulo: $1",
+ "abusefilter-degroupreason": "Rajtoj estis aŭtomate forigitaj de misuzadaj filtriloj.\nPriskribo de regulo: $1",
+ "abusefilter-accountreserved": "Ĉi tiu konta nomo estas rezervita por uzo de la misuzada filtrilo.",
+ "right-abusefilter-modify": "Modifi filtrilojn de misuzo",
+ "right-abusefilter-view": "Rigardi filtrilojn de misuzo",
+ "right-abusefilter-log": "Rigardi la protokolon de misuzo",
+ "right-abusefilter-log-detail": "Rigardi detalojn en la protokolo de misuzo",
+ "right-abusefilter-private": "Rigardi privatajn datenojn en la protokolo de misuzo",
+ "right-abusefilter-modify-restricted": "Modifi misuzadajn filtrilojn kun limigitaj agoj",
+ "right-abusefilter-revert": "Malfari ĉiujn ŝanĝojn de elektota misuzada filtrilo",
+ "right-abusefilter-view-private": "Vidi misuzadajn filtrilojn markitajn kiel privatajn",
+ "right-abusefilter-log-private": "Vidi protokoleroj de misuzadaj filtriloj, kiuj estas markitaj kiel privataj",
+ "right-abusefilter-hide-log": "Kaŝi liniojn en la protokolo de misuzado",
+ "right-abusefilter-hidden-log": "Vidi kaŝitajn liniojn en la protokolo de misuzado",
+ "right-abusefilter-modify-global": "Krei aŭ modifi ĝeneralajn misuzajn filtrilojn",
+ "action-abusefilter-modify": "modifi misuzadajn filtrilojn",
+ "action-abusefilter-view": "vidi misuzadajn filtrilojn",
+ "action-abusefilter-log": "vidi la protokolon pri misuzado",
+ "action-abusefilter-log-detail": "vidi detalojn el linioj de protokolo pri misuzado",
+ "action-abusefilter-private": "vidi privatajn datenojn en la protokolo de misuzado",
+ "action-abusefilter-modify-restricted": "modifi misuzadajn filtrilojn kun limigitaj agoj",
+ "action-abusefilter-revert": "malfari ĉiujn ŝanĝojn de donita misuzada filtrilo",
+ "action-abusefilter-view-private": "vidi misuzadajn filtrilojn markitajn kiel privatajn",
+ "abusefilter-log": "Protokolo pri Filtrilo de Misuzo",
+ "abusefilter-log-summary": "Ĉi tiu protokolo montras liston de ĉiuj agoj kaptitaj de la filtriloj.",
+ "abusefilter-log-search": "Serĉi la protokolon de misuzo",
+ "abusefilter-log-search-user": "Uzanto:",
+ "abusefilter-log-search-filter": "Identigo de filtrilo (apartiĝi per vertikalaj strekoj):",
+ "abusefilter-log-search-title": "Titolo:",
+ "abusefilter-log-search-wiki": "Vikio:",
+ "abusefilter-log-search-submit": "Serĉi",
+ "abusefilter-log-entry": "$1: $2 ekagigis misuzadan filtrilon, farante agon \"$3\" en $4.\nAgoj faritaj: $5;\nFiltrila priskribo: $6",
+ "abusefilter-log-detailedentry-meta": "$1: $2 ŝpronis $3, farante agon \"$4\" en $5.\nAgoj fariĝis: $6;\nFiltrila priskribo: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "ĝenerala filtrilo $1",
+ "abusefilter-log-detailedentry-local": "filtrilo $1",
+ "abusefilter-log-detailslink": "detaloj",
+ "abusefilter-log-diff": "malsamoj",
+ "abusefilter-log-hidelink": "Ŝanĝi videblecon",
+ "abusefilter-log-details-legend": "Detaloj por protokola listano $1",
+ "abusefilter-log-details-var": "Variablo",
+ "abusefilter-log-details-val": "Valoro",
+ "abusefilter-log-details-vars": "Parametroj de ago",
+ "abusefilter-log-details-private": "Privataj datenoj",
+ "abusefilter-log-details-ip": "Originala IP-adreso",
+ "abusefilter-log-noactions": "neniu",
+ "abusefilter-log-details-diff": "Ŝanĝoj faritaj en redaktoj",
+ "abusefilter-log-linkoncontribs": "protokolo pri misuzado",
+ "abusefilter-log-linkoncontribs-text": "Protokolaĵoj en la Protokolo pri Misuzado por ĉi tiu uzanto",
+ "abusefilter-log-hidden": "(linio kaŝita)",
+ "abusefilter-log-hidden-implicit": "(kaŝita ĉar revizio estis forigita)",
+ "abusefilter-log-cannot-see-details": "Vi ne havas rajton por vidi detalojn de ĉi tiuj konkursaĵoj.",
+ "abusefilter-log-details-hidden": "Vi ne rajtas vidi detalojn pri ĉi tiu protokolero, ĉar ĝi estas kaŝita de publika vido.",
+ "abusefilter-log-hide-legend": "Kaŝi protokoleron",
+ "abusefilter-log-hide-id": "Identigo de protokolero:",
+ "abusefilter-log-hide-hidden": "Kaŝi ĉi tiun protokoleron de publika vido",
+ "abusefilter-log-hide-reason": "Kialo:",
+ "abusefilter-log-hide-forbidden": "Vi ne havas permeson kaŝi liniojn en la protokolo de misuzado.",
+ "abusefilter-logentry-suppress": "kaŝis \"[[$1]]\"",
+ "abusefilter-logentry-unsuppress": "malkaŝis \"[[$1]]\"",
+ "logentry-abusefilter-hit": "$1 ekagis $4, farante agon \"$5\" ĉe $3. Agoj faritaj: $6 ($7)",
+ "abusefilter-management": "Administrado de filtriloj de misuzo",
+ "abusefilter-list": "Ĉiuj filtriloj",
+ "abusefilter-list-id": "Identigo de Filtrilo",
+ "abusefilter-list-status": "Statuso",
+ "abusefilter-list-public": "Publika priskribo",
+ "abusefilter-list-consequences": "Konsekvencoj",
+ "abusefilter-list-visibility": "Videbleco",
+ "abusefilter-list-hitcount": "Nombro de trafoj",
+ "abusefilter-list-edit": "Redakti",
+ "abusefilter-list-details": "Detaloj",
+ "abusefilter-list-limit": "Nombro po paĝo:",
+ "abusefilter-list-lastmodified": "Laste ŝanĝita",
+ "abusefilter-list-group": "Grupo de filtrado",
+ "abusefilter-hidden": "Privata",
+ "abusefilter-unhidden": "Publika",
+ "abusefilter-enabled": "Ŝalta",
+ "abusefilter-deleted": "Forigita",
+ "abusefilter-disabled": "Malŝalta",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|trovo|trovoj}}",
+ "abusefilter-new": "Krei novan filtrilon",
+ "abusefilter-return": "Reiri al filtrila administrado",
+ "abusefilter-status-global": "Ĝenerala",
+ "abusefilter-list-options": "Opcioj",
+ "abusefilter-list-options-deleted": "Forigitaj filtriloj:",
+ "abusefilter-list-options-deleted-only": "Montri nur forigitajn filtrilojn",
+ "abusefilter-list-options-deleted-hide": "Kaŝi forigitajn filtrilojn",
+ "abusefilter-list-options-deleted-show": "Inkluzivi forigitajn filtrilojn",
+ "abusefilter-list-options-scope": "Montri filtrilojn el:",
+ "abusefilter-list-options-scope-local": "Loka vikio",
+ "abusefilter-list-options-scope-global": "Ĝeneralaj reguloj",
+ "abusefilter-list-options-disabled": "Malŝaltitaj filtriloj:",
+ "abusefilter-list-options-hidedisabled": "Kaŝi malŝaltitajn filtrilojn",
+ "abusefilter-list-options-submit": "Ĝisdatigi",
+ "abusefilter-tools-text": "Jen iloj kiuj eble estos utilaj formigi kaj sencimigi misuzadajn filtrilojn.",
+ "abusefilter-tools-expr": "Esprimo-testilo",
+ "abusefilter-tools-submitexpr": "Taksi",
+ "abusefilter-tools-reautoconfirm": "Restarigi aŭtomate konfirmitan statuson",
+ "abusefilter-tools-reautoconfirm-user": "Uzanto:",
+ "abusefilter-tools-reautoconfirm-submit": "Aŭtomate rekonfirmi",
+ "abusefilter-reautoconfirm-none": "Tiu uzanto ne havis {{GENDER:$1|sian}} statuson pri aŭtomata konfirmado haltitan.",
+ "abusefilter-reautoconfirm-notallowed": "Vi ne rajtas restarigi statuson de aŭtomata konfirmado",
+ "abusefilter-reautoconfirm-done": "Statuso de aŭtomata konfirmado estis restarigita",
+ "abusefilter-status": "El la lastaj $1 {{PLURAL:$1|lasta 1 ago|lastaj $1 agoj}}, $2 ($3%) atingis la kondiĉa limo de $4, kaj $5 ($6%) kongruis unu el la ŝaltataj filtriloj.",
+ "abusefilter-edit": "Redakti misuzan filtrilon",
+ "abusefilter-edit-subtitle": "Redaktis filtrilon $1",
+ "abusefilter-edit-subtitle-new": "Krei filtron",
+ "abusefilter-edit-oldwarning": "<strong>Vi redaktas malnovan version de ĉi tiu filtrilo.\nĈi tiuj statistikoj estas por la plej lasta versio de la filtrilo.\nSe vi konservus ŝanĝojn, vi anstataŭigus ĉiujn ŝanĝojn ekde la version vi redaktas.</strong> &bull;\n[[Special:AbuseFilter/history/$2|Reiri al la historio de ĉi tiu filtrilo]].",
+ "abusefilter-edit-status-label": "Statistikoj:",
+ "abusefilter-edit-status": "El la {{PLURAL:$1|lasta 1 ago|lastaj $1 agoj}}, ĉi tiu filtrilo kongruis $2 ($3%).",
+ "abusefilter-edit-status-profile": "El la {{PLURAL:$1|lasta 1 ago|lastaj $1 agoj}}, ĉi tiu filtrilo kongruis $2 ($3%).\nAveraĝe, ĝia plenumtempo estas $4ms, kaj ĝi konsumas $5 {{PLURAL:$5|kondiĉon|kondiĉojn}} de la kondiĉa limo.",
+ "abusefilter-edit-new": "Nova filtrilo",
+ "abusefilter-edit-save": "Konservi filtrilon",
+ "abusefilter-edit-id": "Identigo de filtrilo:",
+ "abusefilter-edit-description": "Priskribo:\n:''(publike videbla)''",
+ "abusefilter-edit-group": "Grupo de filtrado:",
+ "abusefilter-edit-flags": "Flagoj:",
+ "abusefilter-edit-enabled": "Ŝalti ĉi tiun filtrilon",
+ "abusefilter-edit-deleted": "Marki kiel forigitan",
+ "abusefilter-edit-hidden": "Kaŝi detalojn pri ĉi tiu filtrilo de publika vido",
+ "abusefilter-edit-global": "Filtrilo ĝenerala",
+ "abusefilter-edit-rules": "Kondiĉoj:",
+ "abusefilter-edit-notes": "Notoj:",
+ "abusefilter-edit-lastmod": "Filtri laste modifitajn:",
+ "abusefilter-edit-lastmod-text": "$1 de $2",
+ "abusefilter-edit-hitcount": "Filtrilaj trafoj:",
+ "abusefilter-edit-consequences": "Agoj farotaj kiam kongrua",
+ "abusefilter-edit-action-warn": "Plenumi ĉi tiun agojn post averti la uzanton",
+ "abusefilter-edit-action-disallow": "Preventi la uzanton fari tian agon",
+ "abusefilter-edit-action-blockautopromote": "Maldoni la aŭtomate konfirmitan statuson de uzanto",
+ "abusefilter-edit-action-degroup": "Forigi la uzanton de ĉiuj altrajtaj grupoj",
+ "abusefilter-edit-action-block": "Forbari la uzanton kaj/aŭ IP-adreson de redaktado",
+ "abusefilter-edit-action-throttle": "Plenumi agojn nur se la uzanto atingas rapidlimon",
+ "abusefilter-edit-action-rangeblock": "Forbari la /16 intervalon kie la uzanto originas",
+ "abusefilter-edit-action-tag": "Flagi la redakton por plua kontrolado",
+ "abusefilter-edit-throttle-count": "Nombro de agoj por permisigi",
+ "abusefilter-edit-throttle-period": "Tempdaŭro:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|sekundo|sekundoj}}",
+ "abusefilter-edit-throttle-groups": "Trafike limigi de:\n:''(po unu por linio, kombini per komoj)''",
+ "abusefilter-edit-warn-message": "Sistema mesaĝo por uzi kiel averto:",
+ "abusefilter-edit-warn-other": "Alia mesaĝo",
+ "abusefilter-edit-warn-other-label": "Paĝa nomo de alia mesaĝo:\n:''(sen prefikso de MediaWiki)''",
+ "abusefilter-edit-warn-actions": "Agoj:",
+ "abusefilter-edit-warn-preview": "Antaŭvidi elektitan mesaĝon",
+ "abusefilter-edit-warn-edit": "Krei/Redakti elektitan mesaĝon",
+ "abusefilter-edit-tag-tag": "Etikedoj por aldoni (po unu por linio):",
+ "abusefilter-edit-denied": "Vi ne rajtas vidi detalojn pri ĉi tiu filtrilo, ĉar ĝi estas kaŝita de publika vido",
+ "abusefilter-edit-main": "Filtraj parametroj",
+ "abusefilter-edit-done-subtitle": "Filtrilo redaktita",
+ "abusefilter-edit-done": "[[Special:AbuseFilter/history/$1/diff/prev/$2|Viaj ŝanĝoj]] de [[Special:AbuseFilter/$1|filtrilo $3]] estis konservitaj.",
+ "abusefilter-edit-badsyntax": "Estas sintaksa eraro en la filtrilo kiun vi specifigis.\nLa eligo de la sintaksa analizilo estis: <pre>$1</pre>",
+ "abusefilter-edit-restricted": "Vi ne povas redakti ĉi tiun filtrilon, ĉar ĝi enhavas unu aŭ pliajn limigitajn agojn.\nBonvolu peti uzanton kun rajto, aldoni limigitajn agojn, fari ĉi tian ŝanĝon por vi.",
+ "abusefilter-edit-viewhistory": "Vidi historion de ĉi tiu filtrilo",
+ "abusefilter-edit-history": "Historio:",
+ "abusefilter-edit-check": "Kontroli sintakson",
+ "abusefilter-edit-badfilter": "La filtrilo kiun vi donis ne ekzistas.",
+ "abusefilter-edit-revert": "Malfari agojn faritajn de ĉi tiu filtrilo",
+ "abusefilter-edit-tools": "Iloj:",
+ "abusefilter-edit-test-link": "Testi ĉi tiun filtrilon kontraŭ lastatempaj redaktoj",
+ "abusefilter-edit-export": "Elporti ĉi tiun filtrilon al alia vikio",
+ "abusefilter-edit-syntaxok": "Neniuj sintaksaj eraroj troviĝis.",
+ "abusefilter-edit-syntaxerr": "Sintaksa eraro troviĝis: $1",
+ "abusefilter-edit-bad-tags": "Unu aŭ pliaj de la etikedoj kiun vi specifigis ne estas valida.\nEtikedoj devas esti mallonga, kaj ili ne devas enhavi specialajn signojn.",
+ "abusefilter-edit-notallowed": "Vi ne rajtas krei aŭ redakti misuzadajn filtrilojn",
+ "abusefilter-edit-notallowed-global": "Vi ne rajtas krei aŭ redakti ĝeneralajn misuzadajn filtrilojn.",
+ "abusefilter-edit-notallowed-global-custom-msg": "Propraj avertaj mesaĝoj ne estas subtenataj por ĝeneralaj filtriloj.",
+ "abusefilter-edit-builder-select": "Elektu opcion por aldoni ĝin ĉe la kursoro",
+ "abusefilter-edit-builder-group-op-arithmetic": "Matematikaj operacioj",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Adicio (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Subtraho (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Multipliko (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Divizio (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Modulo (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Potenco (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Komparaj operacioj",
+ "abusefilter-edit-builder-op-comparison-equal": "Egalas (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Malegalas (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "Pli malgranda ol (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Pli granda ol (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Malpli granda ol aŭ egala",
+ "abusefilter-edit-builder-op-comparison-gte": "Pli granda ol aŭ egala al (>=)",
+ "abusefilter-edit-builder-group-op-bool": "Buleaj operacioj",
+ "abusefilter-edit-builder-op-bool-not": "Logika ne (!)",
+ "abusefilter-edit-builder-op-bool-and": "Logika Kaj (&)",
+ "abusefilter-edit-builder-op-bool-or": "Logika Aŭ (|)",
+ "abusefilter-edit-builder-group-misc": "Diversaĵoj",
+ "abusefilter-edit-builder-misc-in": "enhava en bitĉeno (in)",
+ "abusefilter-edit-builder-misc-like": "Kongruas paternon (like)",
+ "abusefilter-edit-builder-misc-rlike": "Kongruas regularan esprimon (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "Kongruas regularan esprimon, usklec-maldistinge (irlike)",
+ "abusefilter-edit-builder-misc-contains": "Maldekstra signoĉeno enhavas dekstran signoĉenon (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "Signoĉena literalo (\"\")",
+ "abusefilter-edit-builder-misc-tern": "Ternara operacio (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "Kondiĉa operacio (if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "Funkcioj",
+ "abusefilter-edit-builder-funcs-length": "Longeco de bitĉeno (length)",
+ "abusefilter-edit-builder-funcs-lcase": "Minuskligi (lcase)",
+ "abusefilter-edit-builder-funcs-ucase": "Konverti al majuskloj (ucase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "Normaligi konfuzeblajn signojn (ccnorm)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "Forigi duoblajn signojn (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "Specialaj signoj / ĉiuj signoj (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "Normigi (norm)",
+ "abusefilter-edit-builder-funcs-count": "Nombro de fojoj ke bitĉeno X aperas en bitĉeno Y (count)",
+ "abusefilter-edit-builder-funcs-rcount": "Kiom da fojoj regulara esprimo X aperas en signoĉeno Y (rcount)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "Forigi blankspacon (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "Forigi specialajn signojn (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "Ĉu IP-adreso estas en intervalo? (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "Serĉi signoĉeno por pluraj subsignoĉenoj (contains_any)",
+ "abusefilter-edit-builder-funcs-substr": "Subĉeno (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "Posicio de subsignoĉeno en signoĉeno (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "Anstataŭigi subsignoĉeno per signoĉeno (str_replace)",
+ "abusefilter-edit-builder-funcs-rescape": "Kodŝanĝa signoĉeno kiel laŭlitera en regex (rescape)",
+ "abusefilter-edit-builder-funcs-set_var": "Agordi variablon (set_var)",
+ "abusefilter-edit-builder-group-vars": "Variabloj",
+ "abusefilter-edit-builder-vars-accountname": "Salutnomo (dum konta kreado)",
+ "abusefilter-edit-builder-vars-timestamp": "Uniksa tempindiko de ŝanĝo",
+ "abusefilter-edit-builder-vars-action": "Ago",
+ "abusefilter-edit-builder-vars-addedlines": "Linioj aldonitaj en redakto",
+ "abusefilter-edit-builder-vars-delta": "Grandeca ŝanĝo en redakto",
+ "abusefilter-edit-builder-vars-diff": "Unigita diferenco de ŝanĝoj faritaj de redakto",
+ "abusefilter-edit-builder-vars-newsize": "Nova grandeco de paĝo",
+ "abusefilter-edit-builder-vars-oldsize": "Malnova grandeco de paĝo",
+ "abusefilter-edit-builder-vars-removedlines": "Linioj forigitaj en redakto",
+ "abusefilter-edit-builder-vars-summary": "Redakta resumo/kialo",
+ "abusefilter-edit-builder-vars-article-id": "Paĝa identigo",
+ "abusefilter-edit-builder-vars-article-ns": "Paĝa nomspaco",
+ "abusefilter-edit-builder-vars-article-text": "Paĝa titolo (sen nomspaco)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Plena paĝa titolo",
+ "abusefilter-edit-builder-vars-article-views": "Rigardado de paĝoj",
+ "abusefilter-edit-builder-vars-movedfrom-id": "Paĝa identigo de movota fonta paĝo",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "Nomspaco de movada fontpaĝo",
+ "abusefilter-edit-builder-vars-movedfrom-text": "Titolo de mova fonta paĝo",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "Plena titolo de alinoma fonta paĝo",
+ "abusefilter-edit-builder-vars-movedto-id": "Paĝo-identigo de mova cela paĝo",
+ "abusefilter-edit-builder-vars-movedto-ns": "Nomspaco de la destino-paĝo",
+ "abusefilter-edit-builder-vars-movedto-text": "Titolo de cela paĝo de alinomado",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "Plena titolo de alinomigita cela paĝo",
+ "abusefilter-edit-builder-vars-user-editcount": "Redakto-kontado de uzanto",
+ "abusefilter-edit-builder-vars-user-age": "Aĝo de uzula konto",
+ "abusefilter-edit-builder-vars-user-name": "Nomo de uzula konto",
+ "abusefilter-edit-builder-vars-user-groups": "Grupoj (inkluzivante implicaj) de uzanto",
+ "abusefilter-edit-builder-vars-user-rights": "Rajtoj de la uzanto",
+ "abusefilter-edit-builder-vars-user-blocked": "Ĉu uzanto estas blokita",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "Tempo kiam adreso estis konfirmita",
+ "abusefilter-edit-builder-vars-recent-contributors": "Lastaj dek uzantoj kontribuantaj al la paĝo",
+ "abusefilter-edit-builder-vars-all-links": "Ĉiuj ekteraj ligiloj en la nova teksto",
+ "abusefilter-edit-builder-vars-added-links": "Ĉiuj eksteraj ligiloj aldonitaj en la redakto",
+ "abusefilter-edit-builder-vars-removed-links": "Ĉiuj eksteraj ligiloj forigitaj en la redakto",
+ "abusefilter-edit-builder-vars-old-text": "Malnova paĝa vikiteksto, antaŭ la redakto",
+ "abusefilter-edit-builder-vars-new-text": "Nova paĝo de vikiteksto, post la redakto",
+ "abusefilter-edit-builder-vars-new-pst": "Nova vikiteksto de paĝo, transformita antaŭ la konservado",
+ "abusefilter-edit-builder-vars-new-text-stripped": "Nova paĝa teksto, forviŝita de iuj marklingvaĵoj",
+ "abusefilter-edit-builder-vars-new-html": "Sintakse analizita HTML-fonto de la nova revizio",
+ "abusefilter-edit-builder-vars-restrictions-edit": "Ŝanĝi protektnivelon de la paĝo",
+ "abusefilter-edit-builder-vars-restrictions-move": "Movprotekta nivelo de la paĝo",
+ "abusefilter-edit-builder-vars-restrictions-create": "Kread-protekto de ĉi tiu paĝo",
+ "abusefilter-edit-builder-vars-restrictions-upload": "Alŝut-protekto de ĉi tiu dosiero",
+ "abusefilter-edit-builder-vars-old-text-stripped": "Teksto de malnova paĝo, sen iu ajn marklingvo",
+ "abusefilter-edit-builder-vars-old-links": "Ligiloj en la paĝo, antaŭ la redakto",
+ "abusefilter-edit-builder-vars-old-html": "Malnova paĝa vikiteksto, sintakse reformigita en HTML",
+ "abusefilter-edit-builder-vars-minor-edit": "Ĉu aŭ ne la redakto estas markita kiel eta",
+ "abusefilter-edit-builder-vars-file-sha1": "SHA1-haketo de dosiera enhavo",
+ "abusefilter-filter-log": "Lastaj filtrilaj ŝanĝoj",
+ "abusefilter-history": "ŝanĝada historio por Misuzada Filtrilo #$1",
+ "abusefilter-history-foruser": "Ŝanĝoj de $1",
+ "abusefilter-history-hidden": "kaŝita",
+ "abusefilter-history-enabled": "Ŝalta",
+ "abusefilter-history-global": "Ĝenerala",
+ "abusefilter-history-timestamp": "Tempo",
+ "abusefilter-history-user": "Uzanto",
+ "abusefilter-history-public": "Publika priskribo de filtrilo",
+ "abusefilter-history-flags": "Flagoj",
+ "abusefilter-history-filter": "Filtrila regulo",
+ "abusefilter-history-comments": "Komentoj",
+ "abusefilter-history-actions": "Agoj",
+ "abusefilter-history-backedit": "Reiri al filtrila redaktilo",
+ "abusefilter-history-deleted": "Forigita",
+ "abusefilter-history-filterid": "Filtro",
+ "abusefilter-history-select-legend": "Rafini serĉon",
+ "abusefilter-history-select-user": "Uzanto:",
+ "abusefilter-history-select-submit": "Rafini",
+ "abusefilter-history-diff": "Ŝanĝoj",
+ "abusefilter-history-error-hidden": "La filtrilo kiun vi petis estas kaŝita, kaj vi ne povas vidi ĝian historion.",
+ "abusefilter-exception-unexpectedatend": "Neatendita \"$2\" ĉe signo $1.",
+ "abusefilter-exception-expectednotfound": "Atentis $2 ĉe signo $1, ne estis trovita (trovis $3 $4 anstataŭe).",
+ "abusefilter-exception-unrecognisedkeyword": "Nekonata ŝlosilvorto $2 ĉe signo $1.",
+ "abusefilter-exception-unexpectedtoken": "Neatentita tokeno \"$3\" (de tipo $2) ĉe signo $1.",
+ "abusefilter-exception-unclosedstring": "Malfermita signoĉeno komencante ĉe signo $1.",
+ "abusefilter-exception-invalidoperator": "Malvalida operatoro \"$2\" ĉe signo $1.",
+ "abusefilter-exception-unrecognisedtoken": "Nekonata tokeno \"$2\" ĉe signo $1.",
+ "abusefilter-exception-noparams": "Neniuj parametroj donitaj al funkcio \"$2\" ĉe signo $1.",
+ "abusefilter-exception-dividebyzero": "Malpermesita provo dividigi $2 de nulo ĉe signo $1.",
+ "abusefilter-exception-unrecognisedvar": "Nekonata variablo $2 ĉe signo $1",
+ "abusefilter-exception-notenoughargs": "Ne sufiĉaj argumentoj por funkcio $2 vokita ĉe signo $1.\nAtentis $3 {{PLURAL:$3|argumenton|argumentojn}}, ricevis $4",
+ "abusefilter-exception-regexfailure": "Eraro en regulara esprimo \"$3\" ĉe signo $1: \"$2\"",
+ "abusefilter-exception-overridebuiltin": "Malpermesita transpasado de integrita variablo \"$2\" ĉe signo $1.",
+ "abusefilter-exception-outofbounds": "Petante mankantan listeron $2 (lista grandeco = $3) ĉe signo $1.",
+ "abusefilter-exception-notlist": "Petante tabelan eron de netabelaĵo ĉe signo $1.",
+ "abusefilter-action-tag": "Etikedo",
+ "abusefilter-action-throttle": "Trafik-limigilo",
+ "abusefilter-action-warn": "Averti",
+ "abusefilter-action-blockautopromote": "Forbari aŭtomatajn altrangigadojn",
+ "abusefilter-action-block": "Forbari",
+ "abusefilter-action-degroup": "Forigi el grupoj",
+ "abusefilter-action-rangeblock": "Forbari intervalon de IP-adresoj",
+ "abusefilter-action-disallow": "Malpermesi",
+ "abusefilter-revert-title": "Restarigi ĉiujn ŝanĝojn de filtrilo $1",
+ "abusefilter-revert-intro": "Ĉi tiu formularo permesas al vi restarigi ĉiujn ŝanĝojn faritajn de la misuzada filtrilo per filtrilo $1.\nBonvolu zorgemi uzante ĉi tiun ilon.",
+ "abusefilter-revert-preview-item": "$1: $2 faris $3n je $4.\nAgoj por malfari: $5 ($6)",
+ "abusefilter-revert-search-legend": "Elekti agojn de misuzadaj filtriloj por malfari",
+ "abusefilter-revert-periodstart": "Komenco de periodo:",
+ "abusefilter-revert-periodend": "Fino de periodo:",
+ "abusefilter-revert-search": "Elekti agojn",
+ "abusefilter-revert-filter": "Filtrilo:",
+ "abusefilter-revert-preview-intro": "Malsupre estas la agoj de la misuza filtrilo, kiuj estos malfarataj per ĉi tiu ago.\nBonvolu kontroli ilin zorgeme kaj klaku sur „{{int:abusefilter-revert-confirm}}“, por konfirmi vian elekton.",
+ "abusefilter-revert-confirm": "Konfirmi",
+ "abusefilter-revert-success": "Vi malfaris ĉiujn agojn faritajn de la misuzada filtrilo de [[Special:AbuseFilter/$1|filtrilo $2]].",
+ "abusefilter-revert-reason": "Aŭtomata restarigo de ĉiuj agoj faritaj de la misuzada filtrilo pro filtrilo $1.\nKialo donita: $2",
+ "abusefilter-revert-reasonfield": "Kialo:",
+ "abusefilter-test": "Testi filtrilon kontraŭ antaŭaj redaktoj",
+ "abusefilter-test-intro": "Ĉi tiu paĝo ebligas al vi konsulti filtrilon enigitan en la malsupra skatolo kontraŭ la {{PLURAL:$1|lasta ŝanĝo|lastaj $1 ŝanĝoj}}.\nPor ŝarĝi ekzistantan filtrilon, tajpu ĝian filtrilan identigilon en la malsupra skatolo sub la redakta ilobreto, kaj klaku la butonon \"{{int:abusefilter-test-load}}\".",
+ "abusefilter-test-legend": "Filtrila testado",
+ "abusefilter-test-load-filter": "Filtrila identigo por ŝarĝi:",
+ "abusefilter-test-submit": "Testi",
+ "abusefilter-test-load": "Ŝarĝi",
+ "abusefilter-test-user": "Ŝanĝoj de uzanto:",
+ "abusefilter-test-period-start": "Ŝanĝoj faritaj post:",
+ "abusefilter-test-period-end": "Ŝanĝoj faritaj antaŭ:",
+ "abusefilter-test-page": "Ŝanĝoj faritaj al paĝo:",
+ "abusefilter-test-shownegative": "Montri ŝanĝojn ne kongrantajn la filtrilon",
+ "abusefilter-test-syntaxerr": "La filtrilo, kiun vi enigis, enhavis sintaksan eraron.\nVi povas ricevi plenan eksplikon per klakado al la butono \"{{int:abusefilter-edit-check}}\".",
+ "abusefilter-changeslist-examine": "vidi",
+ "abusefilter-examine": "Rigardi individuajn ŝanĝojn",
+ "abusefilter-examine-intro": "Ĉi tiu paĝo permesas al vi rigardi la variablojn generitajn de la Misuzada Filtrilo por individua ŝanĝo, kaj testi ĝin per filtriloj.",
+ "abusefilter-examine-legend": "Elekti ŝanĝojn",
+ "abusefilter-examine-diff": "URL-o de diferenco:",
+ "abusefilter-examine-user": "Uzanto:",
+ "abusefilter-examine-title": "Titolo de paĝo:",
+ "abusefilter-examine-submit": "Serĉi",
+ "abusefilter-examine-vars": "Variabloj generitaj por ĉi tiu ŝanĝo",
+ "abusefilter-examine-test": "Testi ĉi tiun ŝanĝon kontraŭ filtrilo",
+ "abusefilter-examine-test-button": "Testi filtrilon",
+ "abusefilter-examine-match": "La filtrilo kongruis ĉi tiun ŝanĝon.",
+ "abusefilter-examine-nomatch": "La filtrilo ne kongruis ĉi tiun ŝanĝon.",
+ "abusefilter-examine-syntaxerror": "La filtrilo havas malvalidan sintakson.",
+ "abusefilter-examine-notfound": "La ŝango petita ne eblis esti trovita.",
+ "abusefilter-examine-incompatible": "Via petita ŝanĝo ne estas subtenata de la Misuzada Filtrilo",
+ "abusefilter-examine-noresults": "Neniuj rezultoj estis trovitaj de la serĉ-parametroj donitaj.",
+ "abusefilter-topnav": "'''Navigado de Misuza Filtrilo'''",
+ "abusefilter-topnav-home": "Hejmo",
+ "abusefilter-topnav-test": "Stapla testado",
+ "abusefilter-topnav-examine": "Vidi antaŭajn redaktojn",
+ "abusefilter-topnav-log": "Protokolo de Misuzado",
+ "abusefilter-topnav-tools": "Sencimigadaj iloj",
+ "abusefilter-topnav-import": "Importi filtrilon",
+ "abusefilter-log-name": "Protokolo pri misuzadaj filtriloj",
+ "abusefilter-log-header": "Ĉi tiu protokolo montras resumon de ŝanĝoj faritaj al filtriloj.\nPor plenaj detaloj, vidu [[Special:AbuseFilter/history|la liston]] de lastaj filtrilaj ŝanĝoj.",
+ "abusefilter-log-noresults": "Mankas rezultoj",
+ "abusefilter-diff-title": "Diferencoj inter versioj",
+ "abusefilter-diff-item": "Ero",
+ "abusefilter-diff-version": "Versio de $1 {{GENDER:$3|fare de}} $2",
+ "abusefilter-diff-info": "Baza informo",
+ "abusefilter-diff-pattern": "Filtrilaj kondiĉoj",
+ "abusefilter-diff-invalid": "Ne eblas akiri la petitajn versiojn",
+ "abusefilter-diff-backhistory": "Reiri al filtrila historio",
+ "abusefilter-diff-prev": "Pli frua ŝanĝo",
+ "abusefilter-diff-next": "Pli malfrua ŝanĝo",
+ "abusefilter-import-intro": "Vi povas uzi ĉi tiun interfacon por enporti filtrilojn de aliaj vikioj.\nEn la fonta vikio, klaku \"{{int:abusefilter-edit-export}}\" sub \"{{int:abusefilter-edit-tools}}\" en la redakta interfaco.\nKopiu de la tekstujo kiu aperas, kaj gluu ĝin en ĉi tiun tekstujon, kaj klaku \"{{int:abusefilter-import-submit}}\".",
+ "abusefilter-import-submit": "Importi datenojn",
+ "abusefilter-group-default": "Defaŭlta"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/es-formal.json b/www/wiki/extensions/AbuseFilter/i18n/es-formal.json
new file mode 100644
index 00000000..e8ea164b
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/es-formal.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "MarcoAurelio"
+ ]
+ },
+ "abusefilter-intro": "Sea bienvenido a la interfaz de administración del filtro antiabusos.\nEl filtro antiabusos es un programa que aplica heurística a todas las ediciones.\nLa intrerfaz muestra una lista de filtros definidos, y le permite modificarlos.",
+ "abusefilter-mustbeeditor": "Por razones de seguridad, sólo los usuarios con permisos para modificar filtros antiabusos pueden utilizar esta interfaz.",
+ "abusefilter-warning": "'''Atención:''' Esta acción ha sido automáticamente identificada como dañina.\nLas ediciones contraproducentes son rápidamente revertidas y los sucesivos intentos de persistir en su adición resultarán en que su cuenta y/o direcciones IP sean bloqueadas.\nSi usted cree que la edición era constructiva, puede volver a intentar enviarla para confirmarla.\nUna breve referencia de la regla del filtro antiabusos que su edición ha disparado es: $1",
+ "abusefilter-disallowed": "Esta acción ha sido automáticamente identificada como dañina y su ejecución ha sido deshabilitada.\nSi usted cree que su acción por contra resultaba constructiva por favor informe a un administrador acerca de lo que usted intentaba realizar.\nUna breve descripción de la regla del filtro antiabusos que se ha disparado es: $1"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/es.json b/www/wiki/extensions/AbuseFilter/i18n/es.json
new file mode 100644
index 00000000..6b8615e4
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/es.json
@@ -0,0 +1,553 @@
+{
+ "@metadata": {
+ "authors": [
+ "-jem-",
+ "Aleator",
+ "Alvaro qc",
+ "Armando-Martin",
+ "Baiji",
+ "Benfutbol10",
+ "BicScope",
+ "Carlitosag",
+ "Ciencia Al Poder",
+ "Crazymadlover",
+ "Dalton2",
+ "Dferg",
+ "Fitoschido",
+ "Ihojose",
+ "Imre",
+ "Invadinado",
+ "Locos epraix",
+ "Luis Felipe Schenone",
+ "Manuelt15",
+ "MarcoAurelio",
+ "McDutchie",
+ "Miguel2706",
+ "Mor",
+ "Pertile",
+ "PieRRoMaN",
+ "Platonides",
+ "Ralgis",
+ "Remember the dot",
+ "Sanbec",
+ "Savh",
+ "Sethladan",
+ "TheBITLINK",
+ "Tifinaghes",
+ "Translationista",
+ "Vivaelcelta",
+ "Themasterriot",
+ "Macofe",
+ "Ryo567",
+ "AlvaroMolina",
+ "Matma Rex",
+ "Indiralena",
+ "Dgstranz",
+ "Sophivorus",
+ "Fortega",
+ "Josecurioso",
+ "RicardoSGZ",
+ "Daimona Eaytoy"
+ ]
+ },
+ "abusefilter-desc": "Aplica heurísticas automáticas a las ediciones",
+ "abusefilter": "Configuración del filtro antiabusos",
+ "abuselog": "Registro del filtro antiabusos",
+ "abusefilter-intro": "Te damos la bienvenida a la interfaz de administración del filtro antiabusos.\nEl filtro antiabusos es un mecanismo de software automatizado que aplica heurística a todas las acciones.\nEsta interfaz muestra una lista de filtros definidos, que pueden ser modificados.",
+ "abusefilter-mustbeeditor": "Por razones de seguridad, solamente los usuarios con derechos para modificar filtros antiabuso pueden usar esta interfaz.",
+ "abusefilter-warning": "'''Atención''': Esta acción ha sido identificada automáticamente como dañina.\nLas acciones no constructivas serán revertidas rápidamente y\nla repetición de dichas acciones tendrá como consecuencia que tu cuenta o dirección IP sean bloqueadas.\nSi crees que esta acción es constructiva, puedes guardar de nuevo los cambios para confirmarlo.\nUna breve explicación acerca de la regla del filtro antiabusos que se ha disparado con tu acción es: $1",
+ "abusefilter-disallowed": "Esta acción ha sido identificada automáticamente como dañina, y por tanto ha sido deshabilitada.\nSi crees que tu acción es legítima, por favor, ponte en contacto con un administrador e infórmale de lo que intentabas hacer.\nUna breve explicación acerca de la regla del filtro antiabusos que se ha disparado con tu acción es: $1",
+ "abusefilter-blocked-display": "Esta acción ha sido identificada automáticamente como dañina, y ha sido cancelada.\nAdemás, con el objetivo de proteger {{SITENAME}}, tu cuenta de usuario y todas tus direcciones IP asociadas han sido bloqueadas.\nSi la acción ha sido erróneamente identificada como dañina, por favor, contacta con un administrador.\nUna breve explicación acerca de la regla del filtro antiabusos que se ha disparado con tu acción es: $1",
+ "abusefilter-degrouped": "Esta acción se identificó automáticamente como dañina.\nSospechamos que tu cuenta ha sido comprometida y hemos revocado todos tus privilegios.\nSi crees que esto es un error, ponte en contacto con un burócrata y explícale la situación; así, se podrían restaurar tus privilegios.\nUna breve descripción de la regla antiabusos que coincide con la acción es: $1",
+ "abusefilter-autopromote-blocked": "Esta acción ha sido identificada automáticamente como dañina, y ha sido cancelada.\nAdemás, como medida de seguridad, algunos permisos de usuario que se otorgan automáticamente a cuentas de usuario que contribuyen regularmente en el proyecto, te han sido revocados temporalmente.\nUna breve explicación acerca de la regla del filtro antiabusos que se ha disparado con tu acción es: $1",
+ "abusefilter-blocker": "Filtro antiabusos",
+ "abusefilter-blockreason": "Bloqueado automáticamente por el filtro antiabusos.\nDescripción del filtro que se ha disparado: $1",
+ "abusefilter-degroupreason": "Permisos de usuario automáticamente revocados por el filtro antiabusos.\nDescripción de la regla disparada: $1",
+ "abusefilter-accountreserved": "Este nombre de cuenta está reservado para su uso por el filtro antiabusos.",
+ "right-abusefilter-modify": "Modificar filtros antiabusos",
+ "right-abusefilter-view": "Ver filtros antiabusos",
+ "right-abusefilter-log": "Ver el registro del filtro antiabusos",
+ "right-abusefilter-log-detail": "Ver entradas del registro detalladas del filtro antiabusos",
+ "right-abusefilter-private": "Ver datos privados en el registro del filtro antiabusos",
+ "right-abusefilter-private-log": "Ver el registro de acceso a datos privados del filtro antiabusos",
+ "right-abusefilter-modify-restricted": "Modificar filtros antiabusos con acciones restringidas",
+ "right-abusefilter-revert": "Revertir todos los cambios realizados por un determinado filtro antiabusos",
+ "right-abusefilter-view-private": "Ver filtros antiabusos marcados como privados",
+ "right-abusefilter-log-private": "Ver las entradas del registro de filtros antiabusos marcadas como privadas",
+ "right-abusefilter-hide-log": "Ocultar entradas en el registro del filtro antiabusos",
+ "right-abusefilter-hidden-log": "Ver entradas ocultas en el registro del filtro antiabusos",
+ "right-abusefilter-modify-global": "Crear o modificar filtros antiabusos globales.",
+ "action-abusefilter-modify": "modificar los filtros antiabusos",
+ "action-abusefilter-view": "ver los filtros antiabusos",
+ "action-abusefilter-log": "ver registro del filtro antiabusos",
+ "action-abusefilter-log-detail": "ver entradas detalladas del filtro antiabusos",
+ "action-abusefilter-private": "ver datos privados en el registro del filtro antiabusos",
+ "action-abusefilter-private-log": "ver el registro de acceso a datos privados del filtro antiabusos",
+ "action-abusefilter-modify-restricted": "modificar filtros antiabusos con acciones restringidas",
+ "action-abusefilter-revert": "revertir todos los cambios realizados por un determinado filtro antiabusos",
+ "action-abusefilter-view-private": "ver filtros antiabusos marcados como privados",
+ "action-abusefilter-log-private": "ver registros de filtros antiabusos marcados como privados",
+ "abusefilter-log": "Registro del filtro antiabusos",
+ "abusefilter-log-summary": "Este registro muestra una lista de todas las acciones detectadas por los filtros.",
+ "abusefilter-log-search": "Buscar en el registro del filtro antiabusos",
+ "abusefilter-log-search-user": "Usuario:",
+ "abusefilter-log-search-filter": "Ids. de filtros (separar con barras verticales):",
+ "abusefilter-log-search-title": "Título:",
+ "abusefilter-log-search-wiki": "Wiki:",
+ "abusefilter-log-search-impact": "Impacto:",
+ "abusefilter-log-search-impact-all": "Todas las acciones",
+ "abusefilter-log-search-impact-saved": "Solo cambios guardados",
+ "abusefilter-log-search-impact-not-saved": "Sin cambios guardados",
+ "abusefilter-log-search-entries-label": "Visibilidad:",
+ "abusefilter-log-search-entries-all": "Todas las entradas",
+ "abusefilter-log-search-entries-hidden": "Solo las entradas ocultas",
+ "abusefilter-log-search-entries-visible": "Solo las entradas visibles",
+ "abusefilter-log-search-action-taken-label": "Medida adoptada:",
+ "abusefilter-log-search-action-taken-any": "Cualquiera",
+ "abusefilter-log-search-submit": "Buscar",
+ "abusefilter-log-entry": "$1: $2 {{GENDER:$8|desencadenó}} un filtro antiabusos, {{GENDER:$8|al realizar}} la acción «$3» en $4.\nAcciones tomadas: $5.\nDescripción del filtro: $6",
+ "abusefilter-log-entry-withdiff": "$1: $2 {{GENDER:$8|desencadenó}} un filtro antiabusos {{GENDER:$8|al realizar}} la acción «$3» en $4.\nAcciones tomadas: $5.\nDescripción del filtro: $6 ($7)",
+ "abusefilter-log-detailedentry-meta": "$1: $2 {{GENDER:$9|desencadenó}} $3 {{GENDER:$9|al realizar}} la acción «$4» en $5.\nAcciones tomadas: $6.\nDescripción del filtro: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "filtro global $1",
+ "abusefilter-log-detailedentry-local": "filtro $1",
+ "abusefilter-log-detailslink": "detalles",
+ "abusefilter-log-diff": "dif",
+ "abusefilter-log-hidelink": "ajustar visibilidad",
+ "abusefilter-log-details-legend": "Detalles de la entrada del registro $1",
+ "abusefilter-log-details-var": "Variable",
+ "abusefilter-log-details-val": "Valor",
+ "abusefilter-log-details-vars": "Parámetros de acción",
+ "abusefilter-log-details-private": "Datos privados del registro",
+ "abusefilter-log-details-ip": "Dirección IP originante",
+ "abusefilter-log-details-checkuser": "Verificar usuario",
+ "abusefilter-log-noactions": "ninguna",
+ "abusefilter-log-details-diff": "Cambios hechos en la edición",
+ "abusefilter-log-linkoncontribs": "registro del filtro antiabusos",
+ "abusefilter-log-linkoncontribs-text": "Registro del filtro antiabusos para {{GENDER:$1|este usuario|esta usuaria}}",
+ "abusefilter-log-hidden": "(entrada oculta)",
+ "abusefilter-log-hidden-implicit": "(oculto porque se ha eliminado la revisión)",
+ "abusefilter-log-cannot-see-details": "No tienes permiso para ver los detalles de esta entrada.",
+ "abusefilter-log-cannot-see-private-details": "No tienes permiso para ver los detalles privados de esta entrada.",
+ "abusefilter-log-nonexistent": "No existe ninguna entrada con el identificador proporcionado.",
+ "abusefilter-log-details-hidden": "No puedes ver los detalles de esta entrada porque esta es privada.",
+ "abusefilter-log-private-not-included": "Uno o más de los identificadores de filtro que has especificado son privados. Debido a que no tienes permitido ver los detalles de los filtros privados, estos filtros no se han buscado.",
+ "abusefilter-log-hide-legend": "Ocultar entrada del registro",
+ "abusefilter-log-hide-id": "Id. de la entrada del registro:",
+ "abusefilter-log-hide-hidden": "Ocultar esta entrada de la vista pública",
+ "abusefilter-log-hide-reason": "Motivo:",
+ "abusefilter-log-hide-reason-other": "Otro motivo:",
+ "abusefilter-log-hide-forbidden": "No tienes permiso para ocultar entradas del registro de abusos",
+ "abusefilter-logentry-suppress": "ocultó «[[$1]]»",
+ "abusefilter-logentry-unsuppress": "reveló «[[$1]]»",
+ "logentry-abusefilter-hit": "$1 {{GENDER:$2|disparó}} $4 al {{GENDER:$2|realizar}} la acción «$5» en $3. Medidas adoptadas: $6 ($7)",
+ "log-action-filter-abusefilter": "Tipo de cambio de filtro:",
+ "log-action-filter-abusefilter-create": "Creación de filtro nuevo",
+ "log-action-filter-abusefilter-modify": "Modificación de filtro",
+ "logentry-abusefilterprivatedetails-access": "$1 {{GENDER:$2|accedió}} a los detalles privados de $3",
+ "abusefilterprivatedetails-log-name": "Registro de acceso a datos privados del filtro antiabusos",
+ "abusefilter-management": "Administración del filtro antiabusos",
+ "abusefilter-list": "Todos los filtros",
+ "abusefilter-list-id": "Identificación de filtro",
+ "abusefilter-list-pattern": "Patrón",
+ "abusefilter-list-status": "Estado",
+ "abusefilter-list-public": "Descripción pública",
+ "abusefilter-list-consequences": "Consecuencias",
+ "abusefilter-list-visibility": "Visibilidad",
+ "abusefilter-list-hitcount": "Contador de detecciones",
+ "abusefilter-list-edit": "Editar",
+ "abusefilter-list-details": "Detalles",
+ "abusefilter-list-limit": "Número por página:",
+ "abusefilter-list-lastmodified": "Última modificación",
+ "abusefilter-list-group": "Grupo de filtros",
+ "abusefilter-hidden": "Privado",
+ "abusefilter-unhidden": "Público",
+ "abusefilter-enabled": "Activado",
+ "abusefilter-deleted": "Eliminado",
+ "abusefilter-disabled": "Desactivado",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|detección|detecciones}}",
+ "abusefilter-new": "Crear un filtro nuevo",
+ "abusefilter-return": "Regresar a la gestión de filtros",
+ "abusefilter-status-global": "Global",
+ "abusefilter-list-options": "Opciones",
+ "abusefilter-list-options-deleted": "Filtros eliminados:",
+ "abusefilter-list-options-deleted-only": "Mostrar solo los filtros eliminados",
+ "abusefilter-list-options-deleted-hide": "Esconder filtros eliminados",
+ "abusefilter-list-options-deleted-show": "Incluir filtros eliminados",
+ "abusefilter-list-options-scope": "Mostrar filtros:",
+ "abusefilter-list-options-scope-local": "Solo reglas locales",
+ "abusefilter-list-options-scope-global": "Solo reglas globales",
+ "abusefilter-list-options-scope-all": "Reglas locales y globales",
+ "abusefilter-list-options-disabled": "Filtros desactivados:",
+ "abusefilter-list-options-hidedisabled": "Ocultar filtros desactivados",
+ "abusefilter-list-options-searchpattern": "Insertar un patrón",
+ "abusefilter-list-options-searchoptions": "Modo de búsqueda:",
+ "abusefilter-list-options-search-rlike": "Expresión regular",
+ "abusefilter-list-options-search-irlike": "Expresión regular sin distinción de uso de mayúsculas",
+ "abusefilter-list-regexerror": "Se produjo un problema al buscar: hay un error de sintaxis en la expresión regular.",
+ "abusefilter-list-options-submit": "Actualizar",
+ "abusefilter-tools-text": "Aquí hay algunas herramientas que pueden ser útiles formulando y reparando filtros antiabusos.",
+ "abusefilter-tools-expr": "Probador de expresiones",
+ "abusefilter-tools-submitexpr": "Evaluar",
+ "abusefilter-tools-reautoconfirm": "Restaurar el estado autoconfirmado",
+ "abusefilter-tools-reautoconfirm-user": "Usuario:",
+ "abusefilter-tools-reautoconfirm-submit": "Autoconfirmar de nuevo",
+ "abusefilter-reautoconfirm-none": "A {{GENDER:$1|este usuario|esta usuaria}} no se le ha suspendido su estado autoconfirmado.",
+ "abusefilter-reautoconfirm-notallowed": "No tienes autorización para restaurar el permiso autoconfirmado a los usuarios.",
+ "abusefilter-reautoconfirm-done": "El estado autoconfirmado de la cuenta ha sido restaurado",
+ "abusefilter-status": "De {{PLURAL:$1|la última acción|las últimas $1 acciones}}, $2 ($3&nbsp;%) {{PLURAL:$2|ha|han}} alcanzado el límite de $4 condiciones, y $5 ($6&nbsp;%) {{PLURAL:$5|ha|han}} coincidido con alguno de los filtros activados actualmente.",
+ "abusefilter-edit": "Editar el filtro antiabusos",
+ "abusefilter-edit-subtitle": "Editando filtro $1",
+ "abusefilter-edit-subtitle-new": "Creando un filtro",
+ "abusefilter-edit-oldwarning": "<strong>Estás editando una versión antigua de este filtro.\nLas estadísticas citadas son para la versión más reciente del filtro.\nSi grabas tus cambios, sobrescribirás todos los cambios realizados desde la revisión que estás editando.</strong> &bull;\n[[Special:AbuseFilter/history/$2|Volver al historial de este filtro]].",
+ "abusefilter-edit-status-label": "Estadísticas:",
+ "abusefilter-edit-status": "De {{PLURAL:$1|la última acción|las últimas $1 acciones}}, este filtro ha coincidido con $2 ($3 %).",
+ "abusefilter-edit-status-profile": "De {{PLURAL:$1|la última acción|las últimas $1 acciones}}, este filtro ha coincidido con $2 ($3 %).\nEn promedio, su tiempo de ejecución es de $4 ms, y consume $5 {{PLURAL:$5|condición|condiciones}} del límite de condiciones.",
+ "abusefilter-edit-throttled-warning": "'''Atención:''' este filtro se marcó automáticamente como perjudicial. Como medida de seguridad, no se ejecutarán las acciones siguientes ($1). Revisa y [[mw:Extension:AbuseFilter/Conditions|optimiza]] las condiciones para eliminar esta restricción",
+ "abusefilter-edit-new": "Filtro nuevo",
+ "abusefilter-edit-save": "Guardar filtro",
+ "abusefilter-edit-id": "Identificador de filtro:",
+ "abusefilter-edit-switch-editor": "Cambiar de editor",
+ "abusefilter-edit-description": "Descripción:\n:''(visible públicamente)''",
+ "abusefilter-edit-field-description": "descripción",
+ "abusefilter-edit-group": "Grupo de filtros:",
+ "abusefilter-edit-flags": "Opciones:",
+ "abusefilter-edit-enabled": "Activar este filtro",
+ "abusefilter-edit-deleted": "Marcar como eliminado",
+ "abusefilter-edit-hidden": "Ocultar los detalles de este filtro al público",
+ "abusefilter-edit-global": "Filtro global",
+ "abusefilter-edit-rules": "Condiciones:",
+ "abusefilter-edit-field-conditions": "condiciones",
+ "abusefilter-edit-notes": "Notas:",
+ "abusefilter-edit-lastmod": "Última modificación del filtro:",
+ "abusefilter-edit-lastmod-text": "$1 por $2",
+ "abusefilter-edit-hitcount": "Detecciones del filtro:",
+ "abusefilter-edit-consequences": "Medidas que tomar cuando las condiciones coincidan",
+ "abusefilter-edit-action-warn": "Desencadenar estas acciones tras alertar al usuario",
+ "abusefilter-edit-action-disallow": "Prevenir al usuario de realizar la acción en cuestión",
+ "abusefilter-edit-action-blockautopromote": "Revocar el estado autoconfirmado del usuario",
+ "abusefilter-edit-action-degroup": "Retirar al usuario todos los permisos de su cuenta",
+ "abusefilter-edit-action-block": "Bloquear al usuario o dirección IP",
+ "abusefilter-edit-action-blocktalk": "Bloquear al usuario o dirección IP impidiendo que pueda usar su página de discusión",
+ "abusefilter-edit-action-throttle": "Disparar el filtro solamente si el usuario sobrepasa un cierto límite de ritmo de edición",
+ "abusefilter-edit-action-rangeblock": "Bloquear el intervalo de IP respectivo del cual proviene el usuario",
+ "abusefilter-edit-action-tag": "Marcar la edición para una revisión posterior",
+ "abusefilter-edit-throttle-count": "Número de acciones a permitir:",
+ "abusefilter-edit-throttle-period": "Período de tiempo:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|segundo|segundos}}",
+ "abusefilter-edit-throttle-groups": "Agrupar limitador por:\n:''(uno por línea, combinar con comas)''",
+ "abusefilter-edit-warn-message": "Mensaje del sistema para usar por la advertencia:",
+ "abusefilter-edit-warn-other": "Otro mensaje",
+ "abusefilter-edit-warn-other-label": "Nombre de página de otro mensaje:\n:''(sin prefijo MediaWiki)''",
+ "abusefilter-edit-warn-actions": "Acciones:",
+ "abusefilter-edit-warn-preview": "Previsualizar mensaje seleccionado",
+ "abusefilter-edit-warn-edit": "Crear o editar el mensaje seleccionado",
+ "abusefilter-edit-tag-tag": "[[Special:Tags|Etiquetas]] que se aplicarán (una por renglón):",
+ "abusefilter-edit-block-anon-durations": "Duración del bloqueo para usuarios anónimos:",
+ "abusefilter-edit-block-user-durations": "Duración del bloqueo para usuarios registrados:",
+ "abusefilter-block-anon": "usuarios anónimos",
+ "abusefilter-block-user": "usuarios registrados",
+ "abusefilter-edit-denied": "No puedes ver detalles de este filtro porque es privado",
+ "abusefilter-edit-main": "Parámetros de filtro",
+ "abusefilter-edit-done-subtitle": "Filtro editado",
+ "abusefilter-edit-done": "[[Special:AbuseFilter/history/$1/diff/prev/$2|Tus cambios]] al [[Special:AbuseFilter/$1|filtro $3]] han sido guardados.",
+ "abusefilter-edit-badsyntax": "Hay un error de sintaxis en el filtro que especificaste.\nEl resultado del analizador fue: <pre>$1</pre>",
+ "abusefilter-edit-restricted": "No puedes editar este filtro, porque contiene una o más acciones restringidas.\nPor favor, solicita a un usuario con permisos suficientes para agregar acciones restringidas que haga el cambio por ti.",
+ "abusefilter-edit-viewhistory": "Ver el historial de este filtro",
+ "abusefilter-edit-history": "Historial:",
+ "abusefilter-edit-check": "Comprobar sintaxis",
+ "abusefilter-edit-badfilter": "El filtro especificado no existe",
+ "abusefilter-edit-revert": "Revertir acciones tomadas por este filtro",
+ "abusefilter-edit-tools": "Herramientas:",
+ "abusefilter-edit-test-link": "Probar este filtro contra ediciones recientes",
+ "abusefilter-edit-export": "Exportar este filtro a otro wiki",
+ "abusefilter-edit-syntaxok": "No se detectaron errores de sintaxis.",
+ "abusefilter-edit-syntaxerr": "Se detectó un error de sintaxis: $1",
+ "abusefilter-edit-bad-tags": "Una o más de las etiquetas que especificaste no son válidas.\nLas etiquetas deben ser breves, no deben contener caracteres especiales y no deben estar reservadas por otro programa. Prueba a elegir otro nombre de etiqueta.",
+ "abusefilter-edit-notallowed": "No se te permite crear o editar filtros antiabusos",
+ "abusefilter-edit-notallowed-global": "No se te permite crear o editar filtros antiabusos globales",
+ "abusefilter-edit-notallowed-global-custom-msg": "Los mensajes de alerta personalizados no admiten filtros globales",
+ "abusefilter-edit-builder-select": "Selecciona una opción para agregarla en el cursor",
+ "abusefilter-edit-builder-group-op-arithmetic": "Operadores aritméticos",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Adición (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Sustracción (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Multiplicación (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "División (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Módulo (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Exponente (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Operadores de comparación",
+ "abusefilter-edit-builder-op-comparison-equal": "Valor equivalente a (==)",
+ "abusefilter-edit-builder-op-comparison-equal-strict": "Valor y tipo equivalente a (===)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Valor diferente de (!=)",
+ "abusefilter-edit-builder-op-comparison-notequal-strict": "Valor y tipo diferente de (!==)",
+ "abusefilter-edit-builder-op-comparison-lt": "Menor que (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Mayor que (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Menor o igual a (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Mayor o igual que (>=)",
+ "abusefilter-edit-builder-group-op-bool": "Operadores booleanos",
+ "abusefilter-edit-builder-op-bool-not": "No (!)",
+ "abusefilter-edit-builder-op-bool-and": "Y (&)",
+ "abusefilter-edit-builder-op-bool-or": "O (|)",
+ "abusefilter-edit-builder-group-misc": "Miscelánea",
+ "abusefilter-edit-builder-misc-in": "contenido en la cadena (in)",
+ "abusefilter-edit-builder-misc-like": "Coincide con patrón (like)",
+ "abusefilter-edit-builder-misc-rlike": "Coincide con expresión regular (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "Coincide con la expresión regular, no distingue entre mayúsculas y minúsculas (irlike)",
+ "abusefilter-edit-builder-misc-contains": "La cadena izquierda contiene la cadena derecha (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "Cadena de caracteres literal (\"\")",
+ "abusefilter-edit-builder-misc-tern": "Operador ternario (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "Condicional (if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "Funciones",
+ "abusefilter-edit-builder-funcs-length": "Longitud de cadena de caracteres (length)",
+ "abusefilter-edit-builder-funcs-lcase": "A minúsculas (lcase)",
+ "abusefilter-edit-builder-funcs-ucase": "A mayúsculas (ucase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "Normalizar caracteres confusos (ccnorm)",
+ "abusefilter-edit-builder-funcs-ccnorm-contains-any": "Normalizar una cadena y buscar en ella varias subcadenas en el modo OR (ccnorm_contains_any)",
+ "abusefilter-edit-builder-funcs-ccnorm-contains-all": "Normalizar una cadena y buscar en ella varias subcadenas en el modo AND (ccnorm_contains_all)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "Quitar caracteres dobles (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "Caracteres especiales / caracteres totales (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "Normalizar (norm)",
+ "abusefilter-edit-builder-funcs-count": "Número de veces que la cadena X aparece en la cadena Y (count)",
+ "abusefilter-edit-builder-funcs-rcount": "Número de veces que la expresión regular X aparece en la cadena Y (rcount)",
+ "abusefilter-edit-builder-funcs-get_matches": "Matriz de correspondencias de expresiones regulares en un texto para cada grupo de captura (get_matches)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "Eliminar espacio en blanco (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "Eliminar caracteres especiales (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "¿Está la IP dentro del intervalo? (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "Buscar en una cadena varias subcadenas en el modo OR. (contains_any)",
+ "abusefilter-edit-builder-funcs-contains-all": "Buscar en una cadena varias subcadenas en el modo AND. (contains_all)",
+ "abusefilter-edit-builder-funcs-substr": "Subcadena (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "Posición de la subcadena en la cadena (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "Reemplazar subcadena con una cadena (str_replace)",
+ "abusefilter-edit-builder-funcs-rescape": "Cadena de escape como literal en una expresión regular (rescape)",
+ "abusefilter-edit-builder-funcs-set_var": "Establecer variable (set_var)",
+ "abusefilter-edit-builder-group-vars": "Variables",
+ "abusefilter-edit-builder-vars-accountname": "Nombre de usuario (en la creación de la cuenta)",
+ "abusefilter-edit-builder-vars-timestamp": "Hora Unix del cambio",
+ "abusefilter-edit-builder-vars-timestamp-expanded": "Fecha y hora del registro",
+ "abusefilter-edit-builder-vars-action": "Acción",
+ "abusefilter-edit-builder-vars-addedlines": "Renglones añadidos en la edición",
+ "abusefilter-edit-builder-vars-delta": "Cambio en tamaño en revisión",
+ "abusefilter-edit-builder-vars-diff": "Diff unificado de cambios hechos durante la edición",
+ "abusefilter-edit-builder-vars-newsize": "Nuevo tamaño de la página",
+ "abusefilter-edit-builder-vars-oldsize": "Antiguo tamaño de la página",
+ "abusefilter-edit-builder-vars-old-content-model": "Modelo de contenido antiguo",
+ "abusefilter-edit-builder-vars-new-content-model": "Modelo de contenido nuevo",
+ "abusefilter-edit-builder-vars-removedlines": "Líneas eliminadas en la edición",
+ "abusefilter-edit-builder-vars-summary": "Resumen de edición/razón",
+ "abusefilter-edit-builder-vars-article-id": "ID de la página",
+ "abusefilter-edit-builder-vars-article-ns": "Espacio de nombres de la página",
+ "abusefilter-edit-builder-vars-article-text": "Título de página (sin espacio de nombres)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Título completo de la página",
+ "abusefilter-edit-builder-vars-article-views": "Vistas de la página",
+ "abusefilter-edit-builder-vars-movedfrom-id": "ID de la página fuente a trasladar",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "Espacio de nombres de la página de origen que trasladar",
+ "abusefilter-edit-builder-vars-movedfrom-text": "Título de la página original del traslado",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "Título completo de la página original del traslado",
+ "abusefilter-edit-builder-vars-movedto-id": "ID de la página de destino del traslado",
+ "abusefilter-edit-builder-vars-movedto-ns": "Espacio de nombres de la página de destino del traslado",
+ "abusefilter-edit-builder-vars-movedto-text": "Título de la página de destino del traslado",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "Título completo de la página de destino del traslado",
+ "abusefilter-edit-builder-vars-user-editcount": "Contador de ediciones del usuario",
+ "abusefilter-edit-builder-vars-user-age": "Antigüedad de la cuenta de usuario",
+ "abusefilter-edit-builder-vars-user-name": "Nombre de la cuenta de usuario",
+ "abusefilter-edit-builder-vars-user-groups": "Grupos (incluidos aquellos implícitos) a los que pertenece el usuario",
+ "abusefilter-edit-builder-vars-user-rights": "Derechos que tiene un usuario",
+ "abusefilter-edit-builder-vars-user-blocked": "Si el usuario esta bloqueado",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "El tiempo que hace que la dirección de correo electrónico fue confirmada",
+ "abusefilter-edit-builder-vars-recent-contributors": "Últimos diez usuarios en contribuir en la página",
+ "abusefilter-edit-builder-vars-first-contributor": "Primer usuario en contribuir a la página",
+ "abusefilter-edit-builder-vars-all-links": "Todos los vínculos externos en el nuevo texto",
+ "abusefilter-edit-builder-vars-added-links": "Todos los vínculos externos agregados en la edición",
+ "abusefilter-edit-builder-vars-removed-links": "Todos los vínculos externos eliminados en la edición",
+ "abusefilter-edit-builder-vars-old-text": "Antiguo wikitexto de la página, antes de la edición",
+ "abusefilter-edit-builder-vars-new-text": "Nuevo wikitexto de la página, después de la edición",
+ "abusefilter-edit-builder-vars-new-pst": "Nuevo wikitexto de la página, aplicando transformaciones pre-guardado",
+ "abusefilter-edit-builder-vars-diff-pst": "Diff unificado de cambios por edición, pre-guardado transformado",
+ "abusefilter-edit-builder-vars-addedlines-pst": "Líneas añadidas en la edición, la edición pre-guardada fue transformada.",
+ "abusefilter-edit-builder-vars-new-text-stripped": "Nuevo texto de página, libre de cualquier elemento de marcado",
+ "abusefilter-edit-builder-vars-new-html": "Fuente HTML analizada de la nueva revisión",
+ "abusefilter-edit-builder-vars-restrictions-edit": "Nivel de protección para la edición de la página",
+ "abusefilter-edit-builder-vars-restrictions-move": "Nivel de protección para el traslado de la página",
+ "abusefilter-edit-builder-vars-restrictions-create": "Nivel de protección para la creación de la página",
+ "abusefilter-edit-builder-vars-restrictions-upload": "Nivel de protección para la subida del archivo",
+ "abusefilter-edit-builder-vars-old-text-stripped": "Texto antiguo de la página, libre de cualquier elemento de marcado",
+ "abusefilter-edit-builder-vars-old-links": "Vínculos en la página, antes de la edición",
+ "abusefilter-edit-builder-vars-old-html": "Antiguo wikitexto de la página, analizado en HTML",
+ "abusefilter-edit-builder-vars-minor-edit": "Si la edición ha sido marcada o no como menor",
+ "abusefilter-edit-builder-vars-file-sha1": "Hash SHA1 del contenido del archivo",
+ "abusefilter-edit-builder-vars-file-size": "Tamaño del archivo en bytes",
+ "abusefilter-edit-builder-vars-file-mime": "Tipo MIME del archivo",
+ "abusefilter-edit-builder-vars-file-mediatype": "Tipo del archivo multimedia",
+ "abusefilter-edit-builder-vars-file-width": "Anchura del archivo en píxeles",
+ "abusefilter-edit-builder-vars-file-height": "Altura del archivo en píxeles",
+ "abusefilter-edit-builder-vars-file-bits-per-channel": "Bits por canal de color del archivo",
+ "abusefilter-edit-block-options": "Opciones de bloqueo:",
+ "abusefilter-filter-log": "Cambios recientes de filtros",
+ "abusefilter-history": "Historial de cambios del filtro antiabusos n.º $1",
+ "abusefilter-history-foruser": "Cambios por $1",
+ "abusefilter-history-hidden": "Oculto",
+ "abusefilter-history-enabled": "Activado",
+ "abusefilter-history-global": "Global",
+ "abusefilter-history-timestamp": "Hora",
+ "abusefilter-history-user": "Usuario",
+ "abusefilter-history-public": "Descripción pública del filtro",
+ "abusefilter-history-flags": "Opciones",
+ "abusefilter-history-filter": "Regla del filtro",
+ "abusefilter-history-comments": "Comentarios",
+ "abusefilter-history-actions": "Acciones",
+ "abusefilter-history-backedit": "Regresar al gestor de filtros",
+ "abusefilter-history-deleted": "Borrado",
+ "abusefilter-history-filterid": "Filtro",
+ "abusefilter-history-select-legend": "Refinar búsqueda",
+ "abusefilter-history-select-user": "Usuario:",
+ "abusefilter-history-select-filter": "Identificador del filtro:",
+ "abusefilter-history-select-submit": "Refinar",
+ "abusefilter-history-diff": "Cambios",
+ "abusefilter-history-error-hidden": "El filtro que has solicitado está oculto y no puedes ver su historial.",
+ "abusefilter-exception-unexpectedatend": "«$2» inesperado en el carácter $1.",
+ "abusefilter-exception-expectednotfound": "Se esperaba un $2 en el carácter $1 (en su lugar se encontró $3 $4).",
+ "abusefilter-exception-unrecognisedkeyword": "Palabra clave $2 no reconocida en el carácter $1.",
+ "abusefilter-exception-unexpectedtoken": "Token «$3» inesperado (de tipo $2) en el carácter $1.",
+ "abusefilter-exception-unclosedstring": "Cadena no cerrada empezando en el carácter $1",
+ "abusefilter-exception-invalidoperator": "Operador no válido «$2» en el carácter $1.",
+ "abusefilter-exception-unrecognisedtoken": "Token \"$2\" no reconocido en el carácter $1.",
+ "abusefilter-exception-noparams": "No se ha introducido ningún parámetro a la función «$2» en el carácter $1.",
+ "abusefilter-exception-dividebyzero": "Intento ilegal de dividir $2 entre cero en carácter $1.",
+ "abusefilter-exception-unrecognisedvar": "Variable no reconocida $2 en el carácter $1",
+ "abusefilter-exception-notenoughargs": "No se han proporcionado todos los argumentos necesarios a la función $2, que fue llamada en el carácter $1.\nSe {{PLURAL:$3|esperaba|esperaban}} $3 {{PLURAL:$3|argumento|argumentos}} y se {{PLURAL:$4|ha|han}} proporcionado $4.",
+ "abusefilter-exception-regexfailure": "Error en la expresión regular «$3» en el carácter $1: «$2»",
+ "abusefilter-exception-overridebuiltin": "Anulación incorrecta de la variable «$2» en el carácter $1.",
+ "abusefilter-exception-outofbounds": "Solicitando objeto de listado no existente $2 (tamaño del listado = $3) en el carácter $1.",
+ "abusefilter-exception-notlist": "Solicitando un objeto de matriz en un objeto que no es una matriz, en el carácter $1.",
+ "abusefilter-action-tag": "Etiquetar",
+ "abusefilter-action-throttle": "Limitar",
+ "abusefilter-action-warn": "Advertir",
+ "abusefilter-action-blockautopromote": "Bloquear la recepción de permisos de usuario obtenidos automáticamente",
+ "abusefilter-action-block": "Bloquear",
+ "abusefilter-action-degroup": "Eliminar de los grupos",
+ "abusefilter-action-rangeblock": "Bloqueo por intervalo",
+ "abusefilter-action-disallow": "No permitir",
+ "abusefilter-revert-title": "Revertir todos los cambios hechos por el filtro $1",
+ "abusefilter-revert-intro": "Este formulario permite revertir todos los cambios hechos por el filtro antiabusos debido al filtro $1.\nPor favor ten cuidado al usar esta herramienta.",
+ "abusefilter-revert-preview-item": "$1: $2 {{GENDER:$7|hizo}} un $3 en $4.\nAcciones a revertir: $5 ($6)",
+ "abusefilter-revert-search-legend": "Seleccionar acciones del filtro antiabusos a ser revertidas",
+ "abusefilter-revert-periodstart": "Comienzo de periodo:",
+ "abusefilter-revert-periodend": "Fin de periodo:",
+ "abusefilter-revert-search": "Seleccionar acciones",
+ "abusefilter-revert-filter": "Id. de filtro:",
+ "abusefilter-revert-preview-intro": "Debajo están las acciones tomadas por el filtro antiabusos que serán revertidas por esta acción. Por favor verifícalas cuidadosamente, y haz clic en \"{{int:abusefilter-revert-confirm}}\" para confirmar tu selección.",
+ "abusefilter-revert-confirm-legend": "Confirmar la reversión",
+ "abusefilter-revert-confirm": "Confirmar",
+ "abusefilter-revert-success": "Has revertido todas las acciones tomadas por el filtro antiabusos debido al [[Special:AbuseFilter/$1|filtro $2]].",
+ "abusefilter-revert-reason": "Reversión automática de todas las acciones tomadas por el filtro antiabusos debido al filtro $1.\nRazón dada: $2",
+ "abusefilter-revert-reasonfield": "Motivo:",
+ "abusefilter-test": "Probar un filtro contra ediciones previas",
+ "abusefilter-test-intro": "Esta página te permite verificar un filtro introducido en la tabla de abajo contra {{PLURAL:$1|el último cambio|los últimos $1 cambios}}.\nPara cargar un filtro existente, escribe el ID del filtro dentro de la tabla debajo del texto de tabla, y pulsa en el botón «{{int:abusefilter-test-load}}».",
+ "abusefilter-test-legend": "Prueba de filtro",
+ "abusefilter-test-load-filter": "Cargar id. de filtro:",
+ "abusefilter-test-submit": "Prueba",
+ "abusefilter-test-load": "Cargar",
+ "abusefilter-test-user": "Cambios por usuario:",
+ "abusefilter-test-period-start": "Cambios hechos después:",
+ "abusefilter-test-period-end": "Cambios hechos antes:",
+ "abusefilter-test-page": "Cambios hechos a la página:",
+ "abusefilter-test-shownegative": "Mostrar cambios que no coincidan con el filtro",
+ "abusefilter-test-syntaxerr": "El filtro que has ingresado contiene un error de sintaxis.\nPuedes recibir una explicación completa haciendo clic en el botón \"{{int:abusefilter-edit-check}}\".",
+ "abusefilter-test-badtitle": "El título de página introducido no era válido. Puede contener uno o más caracteres que no se pueden utilizar en títulos.",
+ "abusefilter-changeslist-examine": "examinar",
+ "abusefilter-examine": "Examinar cambios individuales",
+ "abusefilter-examine-intro": "Esta página te permite examinar las variables generadas por el filtro antiabusos para un cambio individual, y probarlas contra los filtros.",
+ "abusefilter-examine-legend": "Seleccionar cambios",
+ "abusefilter-examine-diff": "URL de la diferencia:",
+ "abusefilter-examine-user": "Usuario:",
+ "abusefilter-examine-title": "Título de página:",
+ "abusefilter-examine-submit": "Buscar",
+ "abusefilter-examine-vars": "Variables generadas para este cambio",
+ "abusefilter-examine-test": "Probar este cambio contra un filtro",
+ "abusefilter-examine-test-button": "Probar filtro",
+ "abusefilter-examine-match": "El filtro coincidió con este cambio.",
+ "abusefilter-examine-nomatch": "El filtro no coincidió con este cambio.",
+ "abusefilter-examine-syntaxerror": "El filtro tiene una sintaxis no válida",
+ "abusefilter-examine-notfound": "El cambio que has solicitado no ha podido ser encontrado.",
+ "abusefilter-examine-incompatible": "El cambio solicitado no es compatible con el filtro antiabusos",
+ "abusefilter-examine-noresults": "No se ha encontrado ningún resultado para los parámetros de búsqueda que has proporcionado.",
+ "abusefilter-topnav": "'''Barra de navegación del filtro antiabusos'''",
+ "abusefilter-topnav-home": "Inicio",
+ "abusefilter-topnav-test": "Prueba de filtros",
+ "abusefilter-topnav-examine": "Examinar ediciones pasadas",
+ "abusefilter-topnav-log": "Registro de abusos",
+ "abusefilter-topnav-tools": "Herramientas de reparación",
+ "abusefilter-topnav-import": "Importar filtro",
+ "abusefilter-log-name": "Registro del filtro antiabusos",
+ "abusefilter-log-header": "Este registro muestra un resumen de cambios hechos a los filtros.\nPara detalles completos, ver [[Special:AbuseFilter/history|la lista]] de cambios recientes de filtros.",
+ "abusefilter-logentry-create": "$1 {{GENDER:$2|creó}} $4 ($5)",
+ "abusefilter-logentry-modify": "$1 {{GENDER:$2|modificó}} el $4 ($5)",
+ "abusefilter-log-noresults": "No hay resultados",
+ "abusefilter-diff-title": "Diferencias entre versiones",
+ "abusefilter-diff-item": "Elemento",
+ "abusefilter-diff-version": "Versión desde $1 {{GENDER:$3|por}} $2",
+ "abusefilter-diff-info": "Información básica",
+ "abusefilter-diff-pattern": "Condiciones de filtro",
+ "abusefilter-diff-invalid": "Incapaz de traer la versiones solicitadas",
+ "abusefilter-diff-backhistory": "Regresar al historial del filtro",
+ "abusefilter-diff-prev": "Cambio anterior",
+ "abusefilter-diff-next": "Cambio siguiente",
+ "abusefilter-import-intro": "Puedes usar esta interfaz para importar filtros de otros wikis.\nEn el wiki fuente, pulsa en «{{int:abusefilter-edit-export}}» bajo «{{int:abusefilter-edit-tools}}» en la interfaz de edición.\nCopia desde el cuadro de texto que aparece, y pégalo dentro de este cuadro de texto, luego pulsa en «{{int:abusefilter-import-submit}}».",
+ "abusefilter-import-submit": "Importar datos",
+ "abusefilter-group-default": "Predeterminado",
+ "abusefilter-http-error": "Se produjo un error de HTTP: $1.",
+ "abusefilter-view-private-submit": "Ver detalles privados",
+ "abusefilter-view-private": "Ver detalles privados",
+ "abusefilter-view-private-reason": "Razón para acceder a los detalles privados:",
+ "abusefilter-log-details-id": "Identificador del registro",
+ "abusefilter-invalid-request": "Solicitud inválida. Debes acceder a los detalles privados del registro a través del formulario en [[Special:AbuseLog/$1]] y consignar una razón para ello.",
+ "abusefilter-invalid-request-noid": "Solicitud inválida. Debes acceder a los detalles privados del registro a través del formulario en el registro del filtro antiabusos y consignar una razón.",
+ "log-description-abusefilterprivatedetails": "Este registro muestra un listado de ocasiones en el que un usuario accedió a los datos privados de un registro del filtro antiabusos.",
+ "abusefilter-noreason": "Aviso: Para ver los datos privados del registro debes proporcionar una razón.",
+ "abusefilter-log-ip-not-available": "No disponible",
+ "apihelp-abusefiltercheckmatch-description": "Comprueba si el filtro antiabusos coincide con un conjunto de variables, evento del registro del editor antiabusos.\n\nSe necesita \"vars\", \"rcid\" o \"logid\", pero solo se utiliza uno.",
+ "apihelp-abusefiltercheckmatch-summary": "Comprobar si un filtro antiabusos coincide con un conjunto de variables, una edición o un suceso registrado del filtro antiabusos.",
+ "apihelp-abusefiltercheckmatch-extended-description": "Se requieren vars, rcid o logid, pero sólo uno puede ser usado.",
+ "apihelp-abusefiltercheckmatch-param-filter": "El texto completo que se comprobará en busca de coincidencias.",
+ "apihelp-abusefiltercheckmatch-param-vars": "Matriz JSON codificada de variables para realizar la prueba.",
+ "apihelp-abusefiltercheckmatch-param-rcid": "Identificador del cambio reciente contra el cual verificar.",
+ "apihelp-abusefiltercheckmatch-param-logid": "ID del registro del filtro antiabusos para comprobarlo.",
+ "apihelp-abusefiltercheckmatch-example-1": "Prueba si el reciente cambio con identificador 15 coincide con un filtro simple",
+ "apihelp-abusefilterchecksyntax-description": "Comprobar la sintaxis de un filtro antiabusos.",
+ "apihelp-abusefilterchecksyntax-summary": "Verificar el código de un filtro antiabusos.",
+ "apihelp-abusefilterchecksyntax-param-filter": "El texto completo del filtro cuya sintaxis se comprobará.",
+ "apihelp-abusefilterchecksyntax-example-1": "Comprobar sintaxis de un filtro válido",
+ "apihelp-abusefilterchecksyntax-example-2": "Comprobar sintaxis de un filtro no válido",
+ "apihelp-abusefilterevalexpression-description": "Evalúa una expresión del filtro antiabusos.",
+ "apihelp-abusefilterevalexpression-summary": "Evalúa una expresión del filtro antiabusos.",
+ "apihelp-abusefilterevalexpression-param-expression": "La expresión que se evaluará.",
+ "apihelp-abusefilterevalexpression-example-1": "Evaluar una expresión simple",
+ "apihelp-abusefilterunblockautopromote-description": "Desbloquea un usuario de recibir autopromociones como consecuencia del filtro antiabusos.",
+ "apihelp-abusefilterunblockautopromote-summary": "Desbloquea a un usuario para que pueda recibir permisos de usuario otorgados automáticamente por el sistema, anteriormente impedido como consecuencia de un disparo del filtro antiabusos.",
+ "apihelp-abusefilterunblockautopromote-param-user": "El nombre del usuario que se desbloqueará.",
+ "apihelp-abusefilterunblockautopromote-example-1": "Eliminar el bloqueo en la autopromoción de [[User:Example]]",
+ "apihelp-query+abusefilters-description": "Mostrar detalles de los filtros antiabusos.",
+ "apihelp-query+abusefilters-summary": "Mostrar los detalles de los filtros antiabusos.",
+ "apihelp-query+abusefilters-param-startid": "El identificador de filtro para comenzar la enumeración.",
+ "apihelp-query+abusefilters-param-endid": "El identificador de filtro para detener la enumeración.",
+ "apihelp-query+abusefilters-param-show": "Sólo mostrar los filtros que cumplan con estos criterios.",
+ "apihelp-query+abusefilters-param-limit": "El número máximo de filtros a listar.",
+ "apihelp-query+abusefilters-param-prop": "Qué propiedades obtener",
+ "apihelp-query+abusefilters-example-1": "Listar los filtros públicos habilitados",
+ "apihelp-query+abusefilters-example-2": "Mostrar algunos detalles acerca de los filtros",
+ "apihelp-query+abuselog-description": "Mostrar eventos que fueron detectados por uno de los filtros antiabusos.",
+ "apihelp-query+abuselog-summary": "Mostrar los eventos que fueron detectados por uno de los filtros antiabusos.",
+ "apihelp-query+abuselog-param-start": "El sello de tiempo para comenzar la enumeración",
+ "apihelp-query+abuselog-param-end": "El sello de tiempo para detener la enumeración.",
+ "apihelp-query+abuselog-param-user": "Mostrar solo entradas correspondientes a un usuario o IP determinado.",
+ "apihelp-query+abuselog-param-title": "Mostrar solo entradas correspondientes a una página determinada.",
+ "apihelp-query+abuselog-param-filter": "Mostrar solo entradas capturadas por un identificador de filtro determinado.",
+ "apihelp-query+abuselog-param-limit": "La cantidad máxima de entradas que aparecerán.",
+ "apihelp-query+abuselog-param-prop": "Qué propiedades se obtendrán.",
+ "apihelp-query+abuselog-param-wiki": "Wiki del cual mostrar las detecciones.",
+ "apihelp-query+abuselog-example-1": "Mostrar entradas recientes del registro",
+ "apihelp-query+abuselog-example-2": "Mostrar entradas recientes del registro para [[API]]",
+ "apierror-abusefilter-canttest": "No tienes permiso para probar filtros antiabusos.",
+ "apierror-abusefilter-cantcheck": "No tienes permiso para comprobar la sintaxis de los filtros antiabusos.",
+ "apierror-abusefilter-nosuchlogid": "No existe ninguna entrada en el registro de abusos con la ID $1.",
+ "apierror-abusefilter-badsyntax": "El filtro contiene sintaxis no válida."
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/et.json b/www/wiki/extensions/AbuseFilter/i18n/et.json
new file mode 100644
index 00000000..68738747
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/et.json
@@ -0,0 +1,445 @@
+{
+ "@metadata": {
+ "authors": [
+ "Avjoska",
+ "Morel",
+ "Oop",
+ "Pikne",
+ "Matma Rex",
+ "Cumbril"
+ ]
+ },
+ "abusefilter-desc": "Rakendab muudatuste juures automaatset heuristikat.",
+ "abusefilter": "Väärtarvitusfiltri häälestus",
+ "abuselog": "Väärtarvituslogi",
+ "abusefilter-intro": "Tere tulemast väärtarvitusfiltri haldamisliidesesse.\nVäärtarvitusfilter on mehhanism, mis rakendab kõigi muudatuste juures automaatset heuristikat.\nLiidesega saab vaadata määratletud filtrite loendit ja filtreid muuta.",
+ "abusefilter-mustbeeditor": "Turvalisuskaalutlusel võivad seda liidest kasutada ainult kasutajad, kellel on väärtarvitusfiltri muutmise õigus.",
+ "abusefilter-warning": "'''Hoiatus''': See toiming on automaatselt kahjulikuks arvatud.\nEbaasjalikud tegevused pööratakse kiiresti tagasi\nning korduvate ja halvimate muudatuste tagajärjel blokeeritakse su konto või IP-aadress.\nKui arvad selle toimingu asjaliku olevat, võid kinnituseks selle uuesti salvestada.\nSinu toimingule vastanud väärtarvitusfiltri reegli lühikirjeldus: $1",
+ "abusefilter-disallowed": "See toiming on automaatselt kahjulikuks arvatud ja on seetõttu keelatud.\nKui arvad toimingu asjaliku olevat, võta palun teha soovitud muudatuse asjus administraatoriga ühendust.\nSinu toimingule vastanud väärtarvitusfiltri reegli lühikirjeldus: $1",
+ "abusefilter-blocked-display": "See toiming on automaatselt kahjulikuks arvatud\nja sul ei lastud seda sooritada.\nKaitsmaks {{GRAMMAR:partitive|{{SITENAME}}}} on lisaks sellele sinu konto ja kõikide seostuvate IP-aadresside redigeerimisõigus blokeeritud.\nKui tegu on eksitusega, võta palun ühendust administraatoriga.\nSinu toimingule vastanud väärtarvitusfiltri reegli lühikirjeldus: $1",
+ "abusefilter-degrouped": "See toiming on automaatselt kahjulikuks arvatud.\nToiming on keelatud, ja kuna su kontot võidakse kuritarvitada, on sellelt kõik õigused ära võetud.\nKui tegu on eksitusega, võta palun õiguste tagasisaamiseks bürokraadiga ühendust ja selgita talle, mis põhjusel muudatust teha soovisid.\nSinu toimingule vastanud väärtarvitusfiltri reegli lühikirjeldus: $1",
+ "abusefilter-autopromote-blocked": "See toiming on automaatselt kahjulikuks arvatud ja on seetõttu keelatud.\nLisaks on turvameetmena mõned kinnitatud kasutajatele vaikimisi antud õigused sinu kontolt ajutiselt ära võetud.\nSinu toimingule vastanud väärtarvitusfiltri reegli lühikirjeldus: $1",
+ "abusefilter-blocker": "Väärtarvitusfilter",
+ "abusefilter-blockreason": "Väärtarvitusfilter blokeeris su automaatselt.\nVastava reegli kirjeldus: $1",
+ "abusefilter-degroupreason": "Väärtarvitusfilter eemaldas automaatselt su kasutajaõigused.\nReegli kirjeldus: $1",
+ "abusefilter-accountreserved": "Seda kasutajanime hoitakse väärtarvitusfiltrile.",
+ "right-abusefilter-modify": "Muuta väärtarvitusfiltreid",
+ "right-abusefilter-view": "Vaadata väärtarvitusfiltreid",
+ "right-abusefilter-log": "Vaadata väärtarvituslogi",
+ "right-abusefilter-log-detail": "Vaadata väärtarvituslogi üksikasjalikke sissekandeid",
+ "right-abusefilter-private": "Vaadata väärtarvituslogis isiklikke andmeid",
+ "right-abusefilter-private-log": "Vaadata väärtarvitusfiltri isiklike üksikasjade juurdepääsu logi",
+ "right-abusefilter-modify-restricted": "Muuta piirangutega toimingute abil väärtarvitusfiltreid",
+ "right-abusefilter-revert": "Tühistada kõik kindla väärtarvitusfiltri tehtud muudatused",
+ "right-abusefilter-view-private": "Vaadata kinniseks märgitud väärtarvitusfiltreid",
+ "right-abusefilter-log-private": "Vaadata kinniseks märgitud väärtarvitusfiltrite sissekandeid",
+ "right-abusefilter-hide-log": "Peita väärtarvitusfiltri logisissekandeid",
+ "right-abusefilter-hidden-log": "Vaadata peidetud väärtarvitusfiltri logisissekandeid",
+ "right-abusefilter-modify-global": "Luua või muuta globaalseid filtreid",
+ "action-abusefilter-modify": "muuta väärtarvitusfiltreid",
+ "action-abusefilter-view": "vaadata väärtarvitusfiltreid",
+ "action-abusefilter-log": "vaadata väärtarvituslogi",
+ "action-abusefilter-log-detail": "vaadata väärtarvituslogi üksikasjalikke sissekandeid",
+ "action-abusefilter-private": "vaadata väärtarvituslogis isiklikke andmeid",
+ "action-abusefilter-private-log": "vaadata väärtarvitusfiltri isiklike üksikasjade juurdepääsu logi",
+ "action-abusefilter-modify-restricted": "muuta piirangutega toimingute abil väärtarvitusfiltreid",
+ "action-abusefilter-revert": "tühistada kõiki kindla väärtarvitusfiltri tehtud muudatusi",
+ "action-abusefilter-view-private": "vaadata kinniseks märgitud filtreid",
+ "action-abusefilter-log-private": "vaadata kinniseks märgitud väärtarvitusfiltrite logisid",
+ "abusefilter-log": "Väärtarvitusfiltri logi",
+ "abusefilter-log-summary": "Selles logis on loetletud tegevused, mille filtrid on tabanud.",
+ "abusefilter-log-search": "Otsimine väärtarvituslogist",
+ "abusefilter-log-search-user": "Kasutaja:",
+ "abusefilter-log-search-filter": "Filtrite ID-d (eraldatud püstkriipsudega):",
+ "abusefilter-log-search-title": "Pealkiri:",
+ "abusefilter-log-search-wiki": "Viki:",
+ "abusefilter-log-search-impact": "Mõju ulatus:",
+ "abusefilter-log-search-impact-all": "Kõik toimingud",
+ "abusefilter-log-search-impact-saved": "Ainult salvestatud muudatused",
+ "abusefilter-log-search-impact-not-saved": "Ilma salvestatud muudatusteta",
+ "abusefilter-log-search-entries-label": "Nähtavus:",
+ "abusefilter-log-search-entries-all": "Kõik sissekanded",
+ "abusefilter-log-search-entries-hidden": "Ainult peidetud sissekanded",
+ "abusefilter-log-search-entries-visible": "Ainult nähtavad sissekanded",
+ "abusefilter-log-search-action-taken-label": "Sooritatud toiming:",
+ "abusefilter-log-search-action-taken-any": "Mis tahes",
+ "abusefilter-log-search-submit": "Otsi",
+ "abusefilter-log-entry": "$1: $2 vallandas väärtarvitusfiltri, {{GENDER:$8|sooritades}} leheküljel \"$4\" tegevust \"$3\".\nFiltritoiming: $5;\nFiltri kirjeldus: $6",
+ "abusefilter-log-entry-withdiff": "$1: $2 vallandas väärtarvitusfiltri, {{GENDER:$8|sooritades}} leheküljel \"$4\" tegevust \"$3\".\nFiltri sooritatud toiming: $5;\nFiltri kirjeldus: $6 ($7)",
+ "abusefilter-log-detailedentry-meta": "$1: $2 vallandas $3, {{GENDER:$9|sooritades}} leheküljel $5 tegevust \"$4\".\nFiltri sooritatud toiming: $6;\nFiltri kirjeldus: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "globaalfiltri $1",
+ "abusefilter-log-detailedentry-local": "filtri $1",
+ "abusefilter-log-detailslink": "üksikasjad",
+ "abusefilter-log-diff": "erin",
+ "abusefilter-log-hidelink": "seadista nähtavust",
+ "abusefilter-log-details-legend": "Logisissekande $1 üksikasjad",
+ "abusefilter-log-details-var": "Muutuja",
+ "abusefilter-log-details-val": "Väärtus",
+ "abusefilter-log-details-vars": "Toimingu parameetrid",
+ "abusefilter-log-details-private": "Isiklikud logiüksikasjad",
+ "abusefilter-log-details-ip": "Põhjustaja IP-aadress",
+ "abusefilter-log-noactions": "ei midagi",
+ "abusefilter-log-details-diff": "Redigeerimisega tehtud muudatused",
+ "abusefilter-log-linkoncontribs": "väärtarvituslogi",
+ "abusefilter-log-linkoncontribs-text": "Väärtarvituslogi selle {{GENDER:$1|kasutaja}} jaoks",
+ "abusefilter-log-hidden": "sissekanne peidetud",
+ "abusefilter-log-hidden-implicit": "(peidetud, sest redaktsioon on kustutatud)",
+ "abusefilter-log-cannot-see-details": "Sul pole õigust näha üksikasju selle sissekande kohta.",
+ "abusefilter-log-cannot-see-private-details": "Sul pole lubatud näha selle sissekande isiklikke üksikasju.",
+ "abusefilter-log-nonexistent": "Toodud ID-ga sissekanne puudub.",
+ "abusefilter-log-details-hidden": "Sa ei saa selle sissekande üksikasju vaadata, sest see on üldsuse eest peidetud.",
+ "abusefilter-log-private-not-included": "Määratud identifikaatoritest vähemalt üks vastab kinnisele filtrile. Kuna sul pole lubatud vaadata kinniste filtrite andmeid, siis neid filtreid ei otsitud.",
+ "abusefilter-log-hide-legend": "Peida logisissekanne",
+ "abusefilter-log-hide-id": "Logisissekande ID:",
+ "abusefilter-log-hide-hidden": "Peida see sissekanne üldsuse eest",
+ "abusefilter-log-hide-reason": "Põhjus:",
+ "abusefilter-log-hide-forbidden": "Sul pole õigust peita väärtarvitusfiltri logisissekandeid.",
+ "abusefilter-logentry-suppress": "peitis sissekande \"[[$1]]\"",
+ "abusefilter-logentry-unsuppress": "tegi nähtavaks sissekande \"[[$1]]\"",
+ "logentry-abusefilter-hit": "$1 {{GENDER:$2|vallandas}} filtri $4, {{GENDER:$2|sooritades}} leheküljel $3 tegevust \"$5\". Toiming: $6 ($7)",
+ "log-action-filter-abusefilter": "Filtri muudatuse tüüp:",
+ "log-action-filter-abusefilter-create": "Uue filtri koostamine",
+ "log-action-filter-abusefilter-modify": "Filtri muutmine",
+ "logentry-abusefilterprivatedetails-access": "$1 {{GENDER:$2|pöördus}} logisissekande $3 isiklike üksikasjade poole",
+ "abusefilterprivatedetails-log-name": "Väärtarvitusfiltri isiklike üksikasjade juurdepääsu logi",
+ "abusefilter-management": "Väärtarvitusfiltri haldamine",
+ "abusefilter-list": "Kõik filtrid",
+ "abusefilter-list-id": "Filtri ID",
+ "abusefilter-list-status": "Olek",
+ "abusefilter-list-public": "Avalik kirjeldus",
+ "abusefilter-list-consequences": "Tagajärjed",
+ "abusefilter-list-visibility": "Nähtavus",
+ "abusefilter-list-hitcount": "Tabamused",
+ "abusefilter-list-edit": "Redigeeri",
+ "abusefilter-list-details": "Üksikasjad",
+ "abusefilter-list-limit": "Lehekülje kohta:",
+ "abusefilter-list-lastmodified": "Viimati muudetud",
+ "abusefilter-list-group": "Filtrirühm",
+ "abusefilter-hidden": "Kinnine",
+ "abusefilter-unhidden": "Avalik",
+ "abusefilter-enabled": "Lubatud",
+ "abusefilter-deleted": "Kustutatud",
+ "abusefilter-disabled": "Keelatud",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|tabamus|tabamust}}",
+ "abusefilter-new": "Koosta uus filter",
+ "abusefilter-return": "Naase filtri haldamise juurde",
+ "abusefilter-status-global": "Globaalne",
+ "abusefilter-list-options": "Sätted",
+ "abusefilter-list-options-deleted": "Kustutatud filtrid:",
+ "abusefilter-list-options-deleted-only": "Näita ainult kustutatud filtreid",
+ "abusefilter-list-options-deleted-hide": "Peida kustutatud filtrid",
+ "abusefilter-list-options-deleted-show": "Kaasa kustutatud filtrid",
+ "abusefilter-list-options-scope": "Näita filtreid:",
+ "abusefilter-list-options-scope-local": "Ainult kohalikud reeglid",
+ "abusefilter-list-options-scope-global": "Ainult globaalsed reeglid",
+ "abusefilter-list-options-scope-all": "Kohalikud ja globaalsed reeglid",
+ "abusefilter-list-options-disabled": "Keelatud filtrid:",
+ "abusefilter-list-options-hidedisabled": "Peida keelatud filtrid",
+ "abusefilter-list-options-searchoptions": "Otsirežiim:",
+ "abusefilter-list-options-search-like": "Lihtpäring",
+ "abusefilter-list-options-search-rlike": "Regulaaravaldis",
+ "abusefilter-list-options-search-irlike": "Tõstutundetu regulaaravaldis",
+ "abusefilter-list-options-submit": "Uuenda",
+ "abusefilter-tools-text": "Siin on mõned tööriistad, mis võivad olla väärtarvitusfiltrite koostamise ja veatõrje juures kasulikud.",
+ "abusefilter-tools-expr": "Avaldiste katsetamine",
+ "abusefilter-tools-submitexpr": "Leia väärtus",
+ "abusefilter-tools-reautoconfirm": "Automaatselt kinnitatud kasutaja ennistamine",
+ "abusefilter-tools-reautoconfirm-user": "Kasutaja:",
+ "abusefilter-tools-reautoconfirm-submit": "Ennista automaatselt kinnitatud kasutaja õigused",
+ "abusefilter-reautoconfirm-none": "Sellelt kasutajalt pole automaatselt kinnitatud kasutaja õiguseid ära võetud.",
+ "abusefilter-reautoconfirm-notallowed": "Sul pole lubatud automaatselt kinnitatud kasutaja õiguseid tagasi anda.",
+ "abusefilter-reautoconfirm-done": "Kontole on automaatselt kinnitatud kasutaja õigused tagasi antud",
+ "abusefilter-status": "Viimasest {{PLURAL:$1|ühest toimingust|$1 toimingust}} {{PLURAL:$2|üks|$2}} ($3%) on küündinud tingimuste ülemmäärani $4. {{PLURAL:$5|Üks toiming|$5 toimingut}} ($6%) on vastanud ühele praegu töötavale filtrile.",
+ "abusefilter-edit": "Väärtarvitusfiltri muutmine",
+ "abusefilter-edit-subtitle": "Filtri $1 muutmine",
+ "abusefilter-edit-subtitle-new": "Filtri koostamine",
+ "abusefilter-edit-oldwarning": "<strong>Muudad selle filtri vana versiooni.\nAllpool toodud arvandmed käivad filtri uusima versiooni kohta.\nKui oma muudatused salvestad, kirjutad üle kõik redigeeritavast redaktsioonist uuemad muudatused. </strong> &bull;\n[[Special:AbuseFilter/history/$2|Naase selle filtri ajaloo juurde]].",
+ "abusefilter-edit-status-label": "Arvandmed:",
+ "abusefilter-edit-status": "Viimasest {{PLURAL:$1|ühest toimingust|$1 toimingust}} on sellele filtrile vastanud $2 ($3%).",
+ "abusefilter-edit-status-profile": "Viimasest {{PLURAL:$1|ühest toimingust|$1 toimingust}} on sellele filtrile vastanud $2 ($3%).\nKeskmiselt on selle filtri tööaeg $4 ms ja see kasutab tingimuste ülemmäära {{PLURAL:$5|üht tingimust|$5 tingimust}}.",
+ "abusefilter-edit-new": "Uus filter",
+ "abusefilter-edit-save": "Salvesta filter",
+ "abusefilter-edit-id": "Filtri ID:",
+ "abusefilter-edit-description": "Kirjeldus:\n:''(avalikult nähtav)''",
+ "abusefilter-edit-group": "Filtrirühm:",
+ "abusefilter-edit-flags": "Sätted:",
+ "abusefilter-edit-enabled": "Luba see filter",
+ "abusefilter-edit-deleted": "Märgi kustutatuks",
+ "abusefilter-edit-hidden": "Peida selle filtri üksikasjad avalikust vaatest",
+ "abusefilter-edit-global": "Globaalne filter",
+ "abusefilter-edit-rules": "Tingimused:",
+ "abusefilter-edit-notes": "Märkmed:",
+ "abusefilter-edit-lastmod": "Filtrit viimati muudetud:",
+ "abusefilter-edit-lastmod-text": "$1. Muutja: $2",
+ "abusefilter-edit-hitcount": "Filtri tabamused:",
+ "abusefilter-edit-consequences": "Tabamuse korral sooritatavad toimingud",
+ "abusefilter-edit-action-warn": "Päästa toimingud valla pärast kasutaja hoiatamist",
+ "abusefilter-edit-action-disallow": "Takista kasutajal antud toimingu sooritamine",
+ "abusefilter-edit-action-blockautopromote": "Võta kasutajalt automaatselt kinnitatud kasutaja õigused ära",
+ "abusefilter-edit-action-degroup": "Eemalda kasutaja kõigist eesõigustatud rühmadest",
+ "abusefilter-edit-action-block": "Keela kasutajal ja/või IP-aadressil redigeerimine",
+ "abusefilter-edit-action-throttle": "Päästa toimingud vaid siis valla, kui kasutaja ületab limiidi",
+ "abusefilter-edit-action-rangeblock": "Blokeeri vastav IP-aadressivahemik, kust kasutaja pärineb",
+ "abusefilter-edit-action-tag": "Märgista muudatus edasiseks läbivaatuseks",
+ "abusefilter-edit-throttle-count": "Lubatud toimingute määr:",
+ "abusefilter-edit-throttle-period": "Ajavahemik:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|sekund|sekundit}}",
+ "abusefilter-edit-throttle-groups": "Rühma määratlus:\n:''(üks rea kohta, ühenda komadega)''",
+ "abusefilter-edit-warn-message": "Hoiatusena kasutatav süsteemisõnum:",
+ "abusefilter-edit-warn-other": "Muu sõnum",
+ "abusefilter-edit-warn-other-label": "Muu sõnumi lehekülje pealkiri:\n:''(MediaWiki-eesliiteta)''",
+ "abusefilter-edit-warn-actions": "Toimingud:",
+ "abusefilter-edit-warn-preview": "Valitud sõnumi eelvaade",
+ "abusefilter-edit-warn-edit": "Koosta valitud sõnum või muuda seda",
+ "abusefilter-edit-tag-tag": "Kasutatavad [[Special:Tags|märgised]] (rea kohta üks):",
+ "abusefilter-edit-denied": "Sa ei saa selle filtri üksikasju vaadata, sest need pole avalikud.",
+ "abusefilter-edit-main": "Filtri näitajad",
+ "abusefilter-edit-done-subtitle": "Filter muudetud",
+ "abusefilter-edit-done": "[[Special:AbuseFilter/history/$1/diff/prev/$2|Muudatused]], mille tegid [[Special:AbuseFilter/$1|filtrile $3]], on edukalt salvestatud.",
+ "abusefilter-edit-badsyntax": "Määratletud filtris on süntaksiviga.\nParseri väljund oli: <pre>$1</pre>",
+ "abusefilter-edit-restricted": "Sa ei saa seda filtrit muuta, sest see sisaldab üht või enamat piiratud ligipääsuga toimingut.\nPalu muudatus teha kasutajal, kellel on õigus lisada piiratud ligipääsuga toiminguid.",
+ "abusefilter-edit-viewhistory": "Vaata selle filtri ajalugu",
+ "abusefilter-edit-history": "Ajalugu:",
+ "abusefilter-edit-check": "Kontrolli süntaksit",
+ "abusefilter-edit-badfilter": "Kirjeldatud filtrit pole.",
+ "abusefilter-edit-revert": "Tühista selle filtri tehtud toimingud",
+ "abusefilter-edit-tools": "Riistad:",
+ "abusefilter-edit-test-link": "Katseta filtrit viimaste muudatuste peal",
+ "abusefilter-edit-export": "Ekspordi see filter teise vikisse",
+ "abusefilter-edit-syntaxok": "Süntaksitõrkeid ei leitud.",
+ "abusefilter-edit-syntaxerr": "Leiti süntaksitõrge: $1",
+ "abusefilter-edit-bad-tags": "Mõni määratud märgistest on sobimatu.\nMärgised peaks olema lühikesed, nad ei tohi sisaldada erimärke ja neid ei tohi kasutada muu tarkvara. Proovi valida märgisele uus nimi.",
+ "abusefilter-edit-notallowed": "Sul pole lubatud väärtarvitusfiltreid luua ega muuta.",
+ "abusefilter-edit-notallowed-global": "Sul pole lubatud globaalseid filtreid luua ega muuta.",
+ "abusefilter-edit-notallowed-global-custom-msg": "Globaalsed filtrid ei toeta kohandatud hoiatussõnumeid.",
+ "abusefilter-edit-builder-select": "Vali kursori kohale lisatav",
+ "abusefilter-edit-builder-group-op-arithmetic": "Aritmeetilised tehted",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Liitmine (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Lahutamine (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Korrutamine (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Jagamine (/)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Astendamine (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Võrdlustehted",
+ "abusefilter-edit-builder-op-comparison-equal": "Võrdne (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Ei võrdu (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "Väiksem kui (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Suurem kui (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Väiksem või võrdne (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Suurem või võrdne (>=)",
+ "abusefilter-edit-builder-group-op-bool": "Loogilised tehted",
+ "abusefilter-edit-builder-op-bool-not": "Mitte (!)",
+ "abusefilter-edit-builder-op-bool-and": "Ja (&)",
+ "abusefilter-edit-builder-op-bool-or": "Või (|)",
+ "abusefilter-edit-builder-group-misc": "Mitmesugune",
+ "abusefilter-edit-builder-misc-in": "sisaldub sõnes (in)",
+ "abusefilter-edit-builder-misc-like": "Vastab näidisele (like)",
+ "abusefilter-edit-builder-misc-rlike": "Vastab regulaaravaldisele (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "Vastab regulaaravaldisele, tõstutundetu (irlike)",
+ "abusefilter-edit-builder-misc-contains": "Vasakpoolne sõne sisaldab parempoolset sõne (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "Sõneliteraal (\"\")",
+ "abusefilter-edit-builder-misc-tern": "Kolmendoperaator (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "Loogikaavaldis (if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "Funktsioonid",
+ "abusefilter-edit-builder-funcs-length": "Sõne pikkus (length)",
+ "abusefilter-edit-builder-funcs-lcase": "Väiketähesta (lcase)",
+ "abusefilter-edit-builder-funcs-ucase": "Suurtähesta (ucase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "Normaliseeri segi aetavad märgid (ccnorm)",
+ "abusefilter-edit-builder-funcs-ccnorm-contains-any": "Normaliseeri ja otsi sõnest mitut alamsõnet režiimis OR (ccnorm_contains_any)",
+ "abusefilter-edit-builder-funcs-ccnorm-contains-all": "Normaliseeri ja otsi sõnest mitut alamsõnet režiimis AND (ccnorm_contains_all)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "Eemalda kahekordsed märgid (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "Erimärkide ja kõigi märkide suhe (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "Normaliseeri (norm)",
+ "abusefilter-edit-builder-funcs-count": "Sõne X esinemiste arv sõnes Y (count)",
+ "abusefilter-edit-builder-funcs-rcount": "Regulaaravaldise X esinemiste arv sõnes Y (rcount)",
+ "abusefilter-edit-builder-funcs-get_matches": "Massiiv regulaaravaldise vastetest tekstis iga hõiverühma kohta (get_matches)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "Eemalda tühemikud (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "Eemalda erimärgid (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "Kas IP-aadress on vahemikus? (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "Otsi sõnest mitut alamsõnet režiimis OR (contains_any)",
+ "abusefilter-edit-builder-funcs-contains-all": "Otsi sõnest mitut alamsõnet režiimis AND. (contains_all)",
+ "abusefilter-edit-builder-funcs-substr": "Alamsõne (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "Alamsõne asukoht sõnes (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "Asenda alamsõne sõnega (str_replace)",
+ "abusefilter-edit-builder-funcs-rescape": "Katkestussõne regulaaravaldise literaalina (rescape)",
+ "abusefilter-edit-builder-funcs-set_var": "Määra muutuja (set_var)",
+ "abusefilter-edit-builder-group-vars": "Muutujad",
+ "abusefilter-edit-builder-vars-accountname": "Kontonimi (konto loomisel)",
+ "abusefilter-edit-builder-vars-timestamp": "Muudatuse Unix-ajatempel",
+ "abusefilter-edit-builder-vars-action": "Toiming",
+ "abusefilter-edit-builder-vars-addedlines": "Muudatusega lisatud read",
+ "abusefilter-edit-builder-vars-delta": "Muudatusega kaasnev suuruse muutus",
+ "abusefilter-edit-builder-vars-diff": "Muudatusest lähtuva redaktsiooni erinevus",
+ "abusefilter-edit-builder-vars-newsize": "Uue lehekülje suurus",
+ "abusefilter-edit-builder-vars-oldsize": "Vana lehekülje suurus",
+ "abusefilter-edit-builder-vars-old-content-model": "Vana sisumudel",
+ "abusefilter-edit-builder-vars-new-content-model": "Uus sisumudel",
+ "abusefilter-edit-builder-vars-removedlines": "Muudatusega eemaldatud read",
+ "abusefilter-edit-builder-vars-summary": "Resümee või põhjus",
+ "abusefilter-edit-builder-vars-article-id": "Lehekülje ID",
+ "abusefilter-edit-builder-vars-article-ns": "Lehekülje nimeruum",
+ "abusefilter-edit-builder-vars-article-text": "Lehekülje pealkiri (nimeruumita)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Lehekülje kogupealkiri",
+ "abusefilter-edit-builder-vars-article-views": "Lehekülje vaatamisi",
+ "abusefilter-edit-builder-vars-movedfrom-id": "Teisaldamise lähtelehekülje ID",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "Teisaldamise lähtelehekülje nimeruum",
+ "abusefilter-edit-builder-vars-movedfrom-text": "Teisaldamise lähtelehekülje pealkiri",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "Teisaldamise lähtelehekülje kogupealkiri",
+ "abusefilter-edit-builder-vars-movedto-id": "Teisaldamise sihtlehekülje ID",
+ "abusefilter-edit-builder-vars-movedto-ns": "Teisaldamise sihtlehekülje nimeruum",
+ "abusefilter-edit-builder-vars-movedto-text": "Teisaldamise sihtlehekülje pealkiri",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "Teisaldamise sihtlehekülje kogupealkiri",
+ "abusefilter-edit-builder-vars-user-editcount": "Kasutaja kaastööde hulk",
+ "abusefilter-edit-builder-vars-user-age": "Kasutajakonto vanus",
+ "abusefilter-edit-builder-vars-user-name": "Kasutajakonto nimi",
+ "abusefilter-edit-builder-vars-user-groups": "Rühmad (ka varjatud), mille liige kasutaja on",
+ "abusefilter-edit-builder-vars-user-rights": "Õigused, mis kasutajal on",
+ "abusefilter-edit-builder-vars-user-blocked": "Kas kasutaja on blokeeritud?",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "E-posti aadressi kinnitamisaeg",
+ "abusefilter-edit-builder-vars-recent-contributors": "Viimased kümme lehekülge muutnud kasutajat",
+ "abusefilter-edit-builder-vars-first-contributor": "Kasutaja, kes lehekülge alustas",
+ "abusefilter-edit-builder-vars-all-links": "Kõik uues tekstis sisalduvad välislingid",
+ "abusefilter-edit-builder-vars-added-links": "Kõik muudatusega lisatud välislingid",
+ "abusefilter-edit-builder-vars-removed-links": "Kõik muudatusega eemaldatud välislingid",
+ "abusefilter-edit-builder-vars-old-text": "Muudatuse-eelse lehekülje vikitekst",
+ "abusefilter-edit-builder-vars-new-text": "Muudatuse-järgse lehekülje vikitekst",
+ "abusefilter-edit-builder-vars-new-pst": "Lehekülje uus vikitekst, salvestamiseelne tekst teisendatud",
+ "abusefilter-edit-builder-vars-diff-pst": "Tehtud muudatuste ühenderinevused, salvestamiseelne tekst teisendatud",
+ "abusefilter-edit-builder-vars-addedlines-pst": "Muudatusega lisatud read, salvestamiseelne tekst teisendatud",
+ "abusefilter-edit-builder-vars-new-text-stripped": "Uus lehekülje tekst igasuguse märgistuseta",
+ "abusefilter-edit-builder-vars-new-html": "Uue redaktsiooni liigendatud HTML-lähtekood",
+ "abusefilter-edit-builder-vars-restrictions-edit": "Lehekülje redigeerimiskaitsetase",
+ "abusefilter-edit-builder-vars-restrictions-move": "Lehekülje teisaldamiskaitsetase",
+ "abusefilter-edit-builder-vars-restrictions-create": "Lehekülje alustamise kaitse",
+ "abusefilter-edit-builder-vars-restrictions-upload": "Faili üleslaadimiskaitse",
+ "abusefilter-edit-builder-vars-old-text-stripped": "Vana lehekülje tekst igasuguse märgistuseta",
+ "abusefilter-edit-builder-vars-old-links": "Muudatuse-eelsel leheküljel olnud lingid",
+ "abusefilter-edit-builder-vars-old-html": "Lehekülje vana HTML-koodiks liigendaud vikitekst",
+ "abusefilter-edit-builder-vars-minor-edit": "Kas märgitud pisimuudatuseks?",
+ "abusefilter-edit-builder-vars-file-sha1": "Faili sisu SHA1-räsi",
+ "abusefilter-edit-builder-vars-file-size": "Faili suurus baitides",
+ "abusefilter-edit-builder-vars-file-mime": "Faili MIME tüüp",
+ "abusefilter-edit-builder-vars-file-mediatype": "Faili meediumitüüp",
+ "abusefilter-edit-builder-vars-file-width": "Faili laius pikslites",
+ "abusefilter-edit-builder-vars-file-height": "Faili kõrgus pikslites",
+ "abusefilter-edit-builder-vars-file-bits-per-channel": "Bitte faili värvuskanali kohta",
+ "abusefilter-filter-log": "Viimased filtri muudatused",
+ "abusefilter-history": "$1. väärtarvitusfiltri muudatuste ajalugu",
+ "abusefilter-history-foruser": "Kasutaja $1 muudatused",
+ "abusefilter-history-hidden": "Peidetud",
+ "abusefilter-history-enabled": "Lubatud",
+ "abusefilter-history-global": "Globaalne",
+ "abusefilter-history-timestamp": "Aeg",
+ "abusefilter-history-user": "Kasutaja",
+ "abusefilter-history-public": "Filtri avalik kirjeldus",
+ "abusefilter-history-flags": "Sätted",
+ "abusefilter-history-filter": "Filtrireegel",
+ "abusefilter-history-comments": "Kommentaarid",
+ "abusefilter-history-actions": "Toimingud",
+ "abusefilter-history-backedit": "Naase filtri muutmise juurde",
+ "abusefilter-history-deleted": "Kustutatud",
+ "abusefilter-history-filterid": "Filter",
+ "abusefilter-history-select-legend": "Täpsem otsimine",
+ "abusefilter-history-select-user": "Kasutaja:",
+ "abusefilter-history-select-filter": "Filtri ID:",
+ "abusefilter-history-select-submit": "Täpsusta",
+ "abusefilter-history-diff": "Muudatused",
+ "abusefilter-history-error-hidden": "Soovitud filter on peidetud ja sa ei saa selle ajalugu vaadata.",
+ "abusefilter-exception-unexpectedatend": "Ootamatu \"$2\" $1. märgi juures.",
+ "abusefilter-exception-expectednotfound": "Eeldatavat üksust \"$2\" ei leitud $1. märgi juurest (leiti hoopis $3 väärtusega \"$4\").",
+ "abusefilter-exception-unrecognisedkeyword": "Tundmatu võtmesõna \"$2\" $1. märgi juures.",
+ "abusefilter-exception-unexpectedtoken": "Ootamatu $2-tüüpi märk \"$3\" $1. märgi juures.",
+ "abusefilter-exception-unclosedstring": "Sulgemata sõne, mis algab $1. märgi juures.",
+ "abusefilter-exception-invalidoperator": "Vigane operaator \"$2\" $1. märgi juures.",
+ "abusefilter-exception-unrecognisedtoken": "Tundmatu märk \"$2\" $1. märgi juures.",
+ "abusefilter-exception-noparams": "$1. märgi juures puuduvad funktsiooni \"$2\" parameetrid.",
+ "abusefilter-exception-dividebyzero": "Lubamatu katse jagada $1. märgi juures väärtust $2 nulliga.",
+ "abusefilter-exception-unrecognisedvar": "Tundmatu muutuja \"$2\" $1. märgi juures",
+ "abusefilter-exception-notenoughargs": "Funktsiooni $2 jaoks ei kutsutud märgi $1 juures piisavalt argumente.\nOodati {{PLURAL:$3|üht|$3}} argumenti, oli aga $4",
+ "abusefilter-exception-regexfailure": "Tõrge regulaaravaldises \"$3\" $1. märgi juures: \"$2\"",
+ "abusefilter-exception-overridebuiltin": "Sisseehitatud muutuja \"$2\" reeglitevastane ülekirjutus märgi $1 juures.",
+ "abusefilter-exception-outofbounds": "Päring olematu loendiüksuse $2 (loendi suurus: $3) kohta $1. märgi juures.",
+ "abusefilter-action-tag": "Märgista",
+ "abusefilter-action-throttle": "Drosselda",
+ "abusefilter-action-warn": "Hoiata",
+ "abusefilter-action-blockautopromote": "Takista automaatset õiguste andmist",
+ "abusefilter-action-block": "Blokeeri",
+ "abusefilter-action-degroup": "Eemalda rühmadest",
+ "abusefilter-action-rangeblock": "Vahemiku blokeering",
+ "abusefilter-action-disallow": "Keela",
+ "abusefilter-revert-title": "Kõigi filtri $1 muudatuste eemaldamine",
+ "abusefilter-revert-intro": "See vorm võimaldab tühistada kõik muudatused, mille väärtarvitusfilter sooritas filtri $1 tõttu.\nPalun ole selle tööriista kasutamisel hoolikas.",
+ "abusefilter-revert-preview-item": "$1: $2 {{GENDER:$7|sooritas}} leheküljel $4 toimingu $3.\nTühistatavad toimingud: $5 ($6)",
+ "abusefilter-revert-search-legend": "Eemaldatavate väärtarvitusfiltri toimingute valimine",
+ "abusefilter-revert-periodstart": "Vahemiku algus:",
+ "abusefilter-revert-periodend": "Vahemiku lõpp:",
+ "abusefilter-revert-search": "Vali tegevused",
+ "abusefilter-revert-filter": "Filtri ID:",
+ "abusefilter-revert-preview-intro": "Allpool on loetletud väärtarvitusfiltri tegevused, mis tühistatakse selle toiminguga.\nPalun kontrolli neid hoolikalt ning klõpsa \"{{int:abusefilter-revert-confirm}}\", et oma valikut kinnitada.",
+ "abusefilter-revert-confirm": "Kinnita",
+ "abusefilter-revert-success": "Oled tühistanud kõik toimingud, mille väärtarvitusfilter sooritas [[Special:AbuseFilter/$1|filtri $2]] tõttu.",
+ "abusefilter-revert-reason": "Kõikide väärtarvitusfiltri (filter $1) sooritatud toimingute automaatne tühistamine.\nToodud põhjus: $2",
+ "abusefilter-revert-reasonfield": "Põhjus:",
+ "abusefilter-test": "Filtri katsetamine varasemate muudatuste peal",
+ "abusefilter-test-intro": "See lehekülg võimaldab katsetada allolevasse kasti sisestatud filtrit viimase {{PLURAL:$1|muudatuse|$1 muudatuse}} peal.\nEt laadida olemasolev filter, sisesta selle ID redigeerimiskasti all olevasse tekstikasti ja klõpsa nuppu \"{{int:abusefilter-test-load}}\".",
+ "abusefilter-test-legend": "Filtri katsetamine",
+ "abusefilter-test-load-filter": "Laaditava filtri ID:",
+ "abusefilter-test-submit": "Katseta",
+ "abusefilter-test-load": "Laadi",
+ "abusefilter-test-user": "Muudatuste tegija:",
+ "abusefilter-test-period-start": "Hilisemad muudatused kui:",
+ "abusefilter-test-period-end": "Varasemad muudatused kui:",
+ "abusefilter-test-page": "Muudetud lehekülg:",
+ "abusefilter-test-shownegative": "Näita muudatusi, mis ei vasta filtrile",
+ "abusefilter-test-syntaxerr": "Sisestatud filtris oli süntaksitõrge.\nLisaselgituse jaoks klõpsa nuppu \"{{int:abusefilter-edit-check}}\".",
+ "abusefilter-test-badtitle": "Lehekülje pealkiri, mille sisestasid, oli vigane. Võimalik, et see sisaldab märke, mida ei saa pealkirjades kasutada.",
+ "abusefilter-changeslist-examine": "uuri",
+ "abusefilter-examine": "Üksikute muudatuste uurimine",
+ "abusefilter-examine-intro": "See lehekülg võimaldab uurida üksikute muudatuste jaoks tekitatud muutujaid, mille loob väärtarvitusfilter, ja neid filtrite peal katsetada.",
+ "abusefilter-examine-legend": "Vali muudatused",
+ "abusefilter-examine-diff": "Erinevuse URL:",
+ "abusefilter-examine-user": "Kasutaja:",
+ "abusefilter-examine-title": "Lehekülje pealkiri:",
+ "abusefilter-examine-submit": "Otsi",
+ "abusefilter-examine-vars": "Selle muudatusega kaasnenud muutujad",
+ "abusefilter-examine-test": "Filtri katsetamine selle muudatuse peal",
+ "abusefilter-examine-test-button": "Katseta filtrit",
+ "abusefilter-examine-match": "See muudatus vastas filtrile.",
+ "abusefilter-examine-nomatch": "See muudatus ei vastanud filtrile.",
+ "abusefilter-examine-syntaxerror": "Filtri süntaks on vigane.",
+ "abusefilter-examine-notfound": "Soovitud muudatust ei leitud.",
+ "abusefilter-examine-incompatible": "Väärtarvitusfilter ei toeta soovitud muudatust.",
+ "abusefilter-examine-noresults": "Antud parameetritega otsimisele ei leitud vasteid.",
+ "abusefilter-topnav": "'''Väärtarvitusfiltri navigatsioon'''",
+ "abusefilter-topnav-home": "Pealeht",
+ "abusefilter-topnav-test": "Paki katsetamine",
+ "abusefilter-topnav-examine": "Varasemate muudatuste uurimine",
+ "abusefilter-topnav-log": "Väärtarvituslogi",
+ "abusefilter-topnav-tools": "Veatõrjeriistad",
+ "abusefilter-topnav-import": "Filtri importimine",
+ "abusefilter-log-name": "Väärtarvitusfiltri logi",
+ "abusefilter-log-header": "Selles logis kuvatakse kokkuvõte filtrite muudatustest.\nÜksikasjad leiad hiljutiste filtrimuudatuste [[Special:AbuseFilter/history|loendist]].",
+ "abusefilter-logentry-create": "$1 {{GENDER:$2|koostas}} $4 ($5)",
+ "abusefilter-logentry-modify": "$1 {{GENDER:$2|muutis}} $4 sätteid ($5)",
+ "abusefilter-log-noresults": "Tulemusi pole",
+ "abusefilter-diff-title": "Erinevused versioonide vahel",
+ "abusefilter-diff-item": "Üksus",
+ "abusefilter-diff-version": "Kasutaja $2 {{GENDER:$3|versioon;}} $1",
+ "abusefilter-diff-info": "Põhiteave",
+ "abusefilter-diff-pattern": "Filtri tingimused",
+ "abusefilter-diff-invalid": "Nõutud versioone ei saadud kätte",
+ "abusefilter-diff-backhistory": "Naase filtri ajaloo juurde",
+ "abusefilter-diff-prev": "Vanem muudatus",
+ "abusefilter-diff-next": "Uuem muudatus",
+ "abusefilter-import-intro": "Selle liidese abil saad teistest vikidest filtreid importida.\nAllikvikis klõpsa redigeerimisliidese asukohas \"{{int:abusefilter-edit-tools}}\" nuppu \"{{int:abusefilter-edit-export}}\".\nKopeeri ilmuva tekstikasti sisu, kleebi see sellesse tekstikasti ja seejärel klõpsa nuppu \"{{int:abusefilter-import-submit}}\".",
+ "abusefilter-import-submit": "Impordi andmed",
+ "abusefilter-group-default": "Tavaline",
+ "abusefilter-http-error": "Esines HTTP-tõrge: $1.",
+ "abusefilter-view-private-submit": "Vaata isiklikke üksikasju",
+ "abusefilter-view-private": "Isiklike üksikasjade vaatamine",
+ "abusefilter-view-private-reason": "Põhjus isiklike üksikasjade juurde pääseda:",
+ "abusefilter-log-details-id": "Logisissekande ID",
+ "log-description-abusefilterprivatedetails": "Siin on logitud korrad, mil kasutaja pöördub väärtarvitusfiltri isiklike üksikasjade poole.",
+ "abusefilter-noreason": "Hoiatus: Selleks et näha selle logi isiklikke üksikasju, pead esitama põhjuse.",
+ "tag-abusefilter-condition-limit": "Tingimuste ülempiir käes",
+ "tag-abusefilter-condition-limit-description": "Redaktsioonid või muud sündmused, mida polnud võimalik kõigi aktiivsete [[Special:AbuseFilter|väärtarvitusfiltritega]] kontrollida ([[mw:Extension:AbuseFilter/Conditions|spikker]])."
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/eu.json b/www/wiki/extensions/AbuseFilter/i18n/eu.json
new file mode 100644
index 00000000..00773a24
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/eu.json
@@ -0,0 +1,229 @@
+{
+ "@metadata": {
+ "authors": [
+ "Abel2es",
+ "An13sa",
+ "Joxemai",
+ "Kobazulo",
+ "Subi",
+ "Theklan",
+ "Unai Fdz. de Betoño",
+ "Xabier Armendaritz",
+ "පසිඳු කාවින්ද",
+ "Sator",
+ "Mikel Ibaiba"
+ ]
+ },
+ "abusefilter-desc": "Edizioei heuristika automatikoa aplikatzen die",
+ "abusefilter": "Gehiegikerien iragazkiaren konfigurazioa",
+ "abuselog": "Gehiegikerien erregistroa",
+ "abusefilter-mustbeeditor": "Segurtasun arrazoiak direla eta, gehiegikeria-filtroak aldatzeko eskumena duten erabiltzaileek soilik balia dezakete interfaze hau.",
+ "abusefilter-blocker": "Gehiegikeria iragazkia",
+ "right-abusefilter-modify": "Gehiegikeria iragazkiak aldatu",
+ "right-abusefilter-view": "Gehiegikeria iragazkiak ikusi",
+ "right-abusefilter-log": "Gehiegikeria loga ikusi",
+ "right-abusefilter-log-detail": "Gehiegikeria log sarrera detailatua ikusi",
+ "right-abusefilter-private": "Ikusi datu pribatuak gehiegikeria logean",
+ "action-abusefilter-modify": "gehiegikeria iragazkiak aldatu",
+ "action-abusefilter-view": "Gehiegikeria iragazkiak ikusi",
+ "action-abusefilter-log": "Gehiegikeria loga ikusi",
+ "action-abusefilter-log-detail": "Gehiegikeria log sarrera detailatuak ikusi",
+ "action-abusefilter-private": "Ikusi datu pribatuak gehiegikeria logean",
+ "abusefilter-log": "Gehiegikeria iragazki loga",
+ "abusefilter-log-search": "Bilatu gehiegikeria loga",
+ "abusefilter-log-search-user": "Lankide:",
+ "abusefilter-log-search-filter": "ID iragazkia (barra bertikalekin banatu):",
+ "abusefilter-log-search-title": "Izenburua:",
+ "abusefilter-log-search-wiki": "Wiki:",
+ "abusefilter-log-search-entries-label": "Ikusgarritasuna:",
+ "abusefilter-log-search-entries-all": "Sarrera guztiak",
+ "abusefilter-log-search-entries-hidden": "Ezkutuko sarrerak soilik",
+ "abusefilter-log-search-entries-visible": "Ikusi daitezkeen sarrerak soilik",
+ "abusefilter-log-search-submit": "Bilatu",
+ "abusefilter-log-detailedentry-global": "$1 iragazi globala",
+ "abusefilter-log-detailedentry-local": "$1 iragazkia",
+ "abusefilter-log-detailslink": "zehaztapenak",
+ "abusefilter-log-diff": "ezb",
+ "abusefilter-log-hidelink": "ikusgarritasuna egokitu",
+ "abusefilter-log-details-legend": "$1 log sarreraren zehaztapenak",
+ "abusefilter-log-details-var": "Aldagarria",
+ "abusefilter-log-details-val": "Balioa",
+ "abusefilter-log-details-vars": "Ekintzaren parametroak",
+ "abusefilter-log-details-private": "Datu pribatuak",
+ "abusefilter-log-details-ip": "IP helbide sortzailea",
+ "abusefilter-log-noactions": "bat ere ez",
+ "abusefilter-log-details-diff": "Aldaketan egindako aldaketak",
+ "abusefilter-log-linkoncontribs": "gehiegikerien erregistroa",
+ "abusefilter-log-linkoncontribs-text": "{{GENDER:$1|erabiltzaile honentzako}} gehiegikerien erregistroa",
+ "abusefilter-log-hidden": "(sarrera ezkutatua)",
+ "abusefilter-log-hide-reason": "Arrazoia:",
+ "abusefilter-management": "Gehiegikeria iragazkiaren kudeaketa",
+ "abusefilter-list": "Iragazki guztiak",
+ "abusefilter-list-id": "Iragazkiaren IDa",
+ "abusefilter-list-status": "Egoera",
+ "abusefilter-list-public": "Deskribapen publikoa",
+ "abusefilter-list-consequences": "Ondorioak",
+ "abusefilter-list-visibility": "Ikusgarritasuna",
+ "abusefilter-list-hitcount": "Hit kontadorea",
+ "abusefilter-list-edit": "Aldatu",
+ "abusefilter-list-details": "Xehetasunak",
+ "abusefilter-list-limit": "Kopurua orrialdeko:",
+ "abusefilter-list-lastmodified": "Azken aldaketa",
+ "abusefilter-list-group": "Iragazi taldea",
+ "abusefilter-hidden": "Pribatua",
+ "abusefilter-unhidden": "Publikoa",
+ "abusefilter-enabled": "Gaitua",
+ "abusefilter-deleted": "Ezabatuta",
+ "abusefilter-disabled": "Ezgaitua",
+ "abusefilter-hitcount": "{{PLURAL:$1|hit 1|$1 hit}}",
+ "abusefilter-new": "Iragazki berria sortu",
+ "abusefilter-return": "Iragazi kudeatzailera bueltatu",
+ "abusefilter-status-global": "Globala",
+ "abusefilter-list-options": "Aukerak",
+ "abusefilter-list-options-deleted": "Ezabatutako iragazkiak:",
+ "abusefilter-list-options-deleted-only": "Erakutsi ezbatutako iragazkiak bakarrik",
+ "abusefilter-list-options-deleted-hide": "Ezkutatu ezabatutako iragazkiak",
+ "abusefilter-list-options-deleted-show": "Sartu ezabatutako iragazkiak",
+ "abusefilter-list-options-scope": "Erakutsi iragazkiak:",
+ "abusefilter-list-options-scope-local": "Arau lokalak soilik",
+ "abusefilter-list-options-scope-global": "Arau globalak soilik",
+ "abusefilter-list-options-scope-all": "Arau lokal eta globalak",
+ "abusefilter-list-options-disabled": "Ezgaitutako iragazkiak:",
+ "abusefilter-list-options-hidedisabled": "Ezkutatu ezgaitutako iragazkiak",
+ "abusefilter-list-options-submit": "Eguneratu",
+ "abusefilter-tools-expr": "Espresio frogagailua",
+ "abusefilter-tools-submitexpr": "Ebaluatu",
+ "abusefilter-tools-reautoconfirm": "Berrezarri autokonfirmazio egoera",
+ "abusefilter-tools-reautoconfirm-user": "Lankidea:",
+ "abusefilter-tools-reautoconfirm-submit": "Berriro autokonfirmatu",
+ "abusefilter-edit": "Gehiegikeria iragazia aldatzen",
+ "abusefilter-edit-subtitle": "$1 iragazkia editatzen",
+ "abusefilter-edit-subtitle-new": "Iragazkiaren sorrera",
+ "abusefilter-edit-status-label": "Estatistikak:",
+ "abusefilter-edit-new": "Iragazki berria",
+ "abusefilter-edit-save": "Iragazkia gorde",
+ "abusefilter-edit-id": "Iragazkiaren identifikazioa (ID):",
+ "abusefilter-edit-description": "Deskribapena:\n:''(publikoki ikusgai)''",
+ "abusefilter-edit-group": "Iragazi taldea:",
+ "abusefilter-edit-flags": "Markak:",
+ "abusefilter-edit-enabled": "Gaitu iragazki hau",
+ "abusefilter-edit-deleted": "Markatu ezabatua gisa",
+ "abusefilter-edit-global": "Iragazi globala",
+ "abusefilter-edit-rules": "Baldintzak:",
+ "abusefilter-edit-notes": "Oharrak:",
+ "abusefilter-edit-lastmod": "Iragazia azkenekoz aldatua:",
+ "abusefilter-edit-lastmod-text": "$1 $2-(e)n bidez",
+ "abusefilter-edit-action-block": "Erabiltzailea eta/edo IP helbidea blokeatu ediziorik egin ez dezan",
+ "abusefilter-edit-throttle-count": "Baimendu beharreko ekintza kopurua",
+ "abusefilter-edit-throttle-period": "Denbora periodoa:",
+ "abusefilter-edit-throttle-seconds": "{{PLURAL:$1|segundu bat|$1 segundu}}",
+ "abusefilter-edit-warn-other": "Beste mezu bat",
+ "abusefilter-edit-warn-actions": "Ekintzak:",
+ "abusefilter-edit-warn-preview": "Hautatutako mezuaren aurrebista erakutsi",
+ "abusefilter-edit-warn-edit": "Sortu/Editatu hautatutako mezua",
+ "abusefilter-edit-main": "Iragazkiaren parametroak",
+ "abusefilter-edit-done-subtitle": "Iragazia aldatua",
+ "abusefilter-edit-viewhistory": "Iragazki honen historia begiratu",
+ "abusefilter-edit-history": "Historia:",
+ "abusefilter-edit-check": "Egiaztatu sintaxia",
+ "abusefilter-edit-tools": "Tresnak:",
+ "abusefilter-edit-export": "Esportatu iragazki hau beste wiki batera",
+ "abusefilter-edit-syntaxok": "Ez da sintaxi-errorerik aurkitu",
+ "abusefilter-edit-syntaxerr": "Sintaxi-errorea detektatu da: $1",
+ "abusefilter-edit-bad-tags": "Emandako etiketaren bat edo gehiago ez da baliogarria. Etiketak laburragoak izan behar dira, ezin dituzte karaktere berezirik eduki, eta beste software batek ezin izan ditu erreserbatu. Saiatu beste tiketa izen batekin",
+ "abusefilter-edit-builder-group-op-arithmetic": "Eragile aritmetikoak",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Batuketa (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Kenketa (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Biderketa (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Zatiketa (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Modulua (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Berreketa (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Konparaziozko eragileak",
+ "abusefilter-edit-builder-op-comparison-equal": "Berdintza (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Desberdintza (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "Txikiago baino (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Handiago baino (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Txikiago baino edo berdin (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Handiago baino edo berdin (>=)",
+ "abusefilter-edit-builder-group-op-bool": "Eragile boolearrak",
+ "abusefilter-edit-builder-op-bool-not": "Ez (!)",
+ "abusefilter-edit-builder-op-bool-and": "Eta (&)",
+ "abusefilter-edit-builder-op-bool-or": "Edo (|)",
+ "abusefilter-edit-builder-group-misc": "Denetarik",
+ "abusefilter-edit-builder-misc-stringlit": "Karaktere-kate osoa (\"\")",
+ "abusefilter-edit-builder-misc-tern": "Eragile hirutarra (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "Baldintza (if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "Funtzioak",
+ "abusefilter-edit-builder-funcs-length": "Karaktere-katearen luzera (length)",
+ "abusefilter-edit-builder-funcs-norm": "Normalizatu (norm)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "Kendu zuriunea (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "Kendu karaktere bereziak (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "IPa tartearen barruan dago? (ip_in_range)",
+ "abusefilter-edit-builder-funcs-substr": "Azpikatea (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "Azpikatearen kokalekua katean (strpos)",
+ "abusefilter-edit-builder-funcs-set_var": "Ezarri aldagaia (set_var)",
+ "abusefilter-edit-builder-group-vars": "Aldagaiak",
+ "abusefilter-edit-builder-vars-action": "Ekintza",
+ "abusefilter-edit-builder-vars-newsize": "Orrialdearen tamaina berria",
+ "abusefilter-edit-builder-vars-oldsize": "Orrialdearen tamaina zaharra",
+ "abusefilter-edit-builder-vars-summary": "Aldaketaren laburpena edo arrazoia",
+ "abusefilter-edit-builder-vars-article-id": "Orriaren IDa",
+ "abusefilter-edit-builder-vars-article-ns": "Orri izen-tartea",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Orrialdearen izenburu osoa",
+ "abusefilter-edit-builder-vars-user-editcount": "Erabiltzailearen edizioen kontagailua",
+ "abusefilter-edit-builder-vars-user-age": "Lankide kontuaren adina",
+ "abusefilter-edit-builder-vars-user-name": "Lankide kontuaren izena",
+ "abusefilter-edit-builder-vars-user-groups": "Lankidearen taldeak (inplizituak barne)",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "E-posta egiaztatu zenetik igarotako denbora",
+ "abusefilter-edit-builder-vars-file-width": "Fitxategiaren zabalera pixeletan",
+ "abusefilter-history-hidden": "ezkutatua",
+ "abusefilter-history-enabled": "Gaitua",
+ "abusefilter-history-global": "Globala",
+ "abusefilter-history-timestamp": "Ordua",
+ "abusefilter-history-user": "Erabiltzailea",
+ "abusefilter-history-flags": "Markak",
+ "abusefilter-history-filter": "Iragazi araua",
+ "abusefilter-history-comments": "Iruzkinak",
+ "abusefilter-history-actions": "Ekintzak",
+ "abusefilter-history-backedit": "Iragazi kudeatzailera bueltatu",
+ "abusefilter-history-deleted": "Ezabatua",
+ "abusefilter-history-filterid": "Iragazkia",
+ "abusefilter-history-select-user": "Lankide:",
+ "abusefilter-history-diff": "Aldaketak",
+ "abusefilter-action-tag": "Etiketa",
+ "abusefilter-action-warn": "Abisatu",
+ "abusefilter-action-block": "Blokeatu",
+ "abusefilter-action-degroup": "Taldeetatik kendu",
+ "abusefilter-action-disallow": "Debekatu",
+ "abusefilter-revert-periodstart": "Periodoaren hasiera:",
+ "abusefilter-revert-periodend": "Periodoaren amaiera:",
+ "abusefilter-revert-search": "Ekintzak hautatu",
+ "abusefilter-revert-filter": "Iragazkia:",
+ "abusefilter-revert-confirm": "Berretsi",
+ "abusefilter-revert-reasonfield": "Arrazoia:",
+ "abusefilter-test-submit": "Froga",
+ "abusefilter-test-load": "Kargatu",
+ "abusefilter-test-user": "Erabiltzaileak egindako aldaketak:",
+ "abusefilter-test-period-start": "Geroago egindako aldaketak:",
+ "abusefilter-test-period-end": "Lehenago egindako aldaketak:",
+ "abusefilter-test-page": "Orriari egindako aldaketak:",
+ "abusefilter-changeslist-examine": "aztertu",
+ "abusefilter-examine-legend": "Aldaketak aukeratu",
+ "abusefilter-examine-user": "Lankide:",
+ "abusefilter-examine-title": "Orriaren izenburua:",
+ "abusefilter-examine-submit": "Bilatu",
+ "abusefilter-examine-vars": "Aldaketa honetarako sortutako aldagaiak.",
+ "abusefilter-topnav-home": "Hasiera",
+ "abusefilter-topnav-examine": "Aztertu aurreko aldaketak",
+ "abusefilter-topnav-tools": "Arazketarako tresnak",
+ "abusefilter-topnav-import": "Iragazkia inportatu",
+ "abusefilter-log-noresults": "Emaitzik ez",
+ "abusefilter-diff-title": "Bertsioen arteko aldeak",
+ "abusefilter-diff-item": "Elementua",
+ "abusefilter-diff-info": "Oinarrizko informazioa",
+ "abusefilter-diff-prev": "Aldaketa zaharragoa",
+ "abusefilter-diff-next": "Aldaketa berriagoa",
+ "abusefilter-import-submit": "Datuak inportatu",
+ "abusefilter-group-default": "Lehenetsia",
+ "abusefilter-http-error": "HTTP errorea gertatu da: $1."
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/fa.json b/www/wiki/extensions/AbuseFilter/i18n/fa.json
new file mode 100644
index 00000000..7eb94310
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/fa.json
@@ -0,0 +1,531 @@
+{
+ "@metadata": {
+ "authors": [
+ "Alireza",
+ "Armin1392",
+ "Calak",
+ "Dalba",
+ "Ebraminio",
+ "Erdemaslancan",
+ "Hooshmand.hasannia",
+ "Huji",
+ "Ladsgroup",
+ "Leyth",
+ "Mahdiz",
+ "Mjbmr",
+ "Omidh",
+ "Pouyana",
+ "Reza1615",
+ "Sahim",
+ "Wayiran",
+ "ZxxZxxZ",
+ "جواد",
+ "Rtemis",
+ "Alirezaaa",
+ "Mehran",
+ "Hosseinblue",
+ "Matma Rex",
+ "Alifakoor"
+ ]
+ },
+ "abusefilter-desc": "اکتشافات خودکاری را بر روی ویرایش‌های انجام می‌دهد.",
+ "abusefilter": "پیکربندی پالایهٔ خرابکاری",
+ "abuselog": "سیاهه خرابکاری",
+ "abusefilter-intro": "به صفحهٔ مدیریت پالایهٔ خرابکاری خوش‌آمدید.\nپالایهٔ خرابکاری سازوکاری نرم‌افزاری برای اعمال اکتشافات خودکار روی تمامی اعمال است.\nاین صفحه تمام پالایه‌های تعریف‌شده را فهرست و امکان تغییر آن‌ها را فراهم می‌کند.",
+ "abusefilter-mustbeeditor": "به دلایل امنیتی تنها کاربران دارای دسترسی تغییر پالایه‌های خرابکاری اجازهٔ استفاده از این واسط را دارند.",
+ "abusefilter-warning": "'''هشدار''': این کار به طور خودکار نادرست تشخیص داده‌شده‌است.\nویرایش‌های غیرسازنده به سرعت واگردانی خواهند شد،\nو ویرایش‌های مخرب یا تکرار ویرایش‌های غیرسازنده منجر به بسته شدن حساب یا نشانی آی‌پی شما خواهد شد.\nاگر مطمئنید که این عمل مفید است، برای تأیید آن باید آن را دوباره ارسال کنید.\nخلاصه‌ای از توضیح قانون جلوگیری از خرابکاری که با کار شما مطابقت دارد چنین است: $1",
+ "abusefilter-disallowed": "این کار به طور خودکار نادرست تشخیص داده شده‌است و بنابراین نامجاز است.\nاگر فکر می‌کنید که عملتان درست بوده‌است لطفاً به یکی از مدیران بگویید که چه می‌خواهید بکنید.\nخلاصه‌ای از توضیح قانون جلوگیری از خرابکاری که با کار شما مطابقت دارد چنین است: $1",
+ "abusefilter-blocked-display": "این کار به طور خودکار نادرست تشخیص داده‌شده است، و شما از اجرای آن منع شدید.\nبه علاوه، برای حفاظت از {{SITENAME}}، حساب شما و آی‌پی‌های مرتبط با آن به طور خودکار بسته شده‌اند.\nاگر فکر می‌کنید اشتباهی شده با یکی از مدیران تماس بگیرید.\nخلاصه‌ای از توضیح قانون جلوگیری از خرابکاری که با کار شما مطابقت دارد چنین است: $1",
+ "abusefilter-degrouped": "این کار به طور خودکار نادرست تشخیص داده‌شده‌است،\nبرای همین شما اجازهٔ انجام‌دادن این کار را ندارید و به طور خودکار دسترسی‌تان به سامانه محدود می‌شود.\nدرصورتی که فکر می‌کنید اشتباهی شده‌است با یکی از دیوانسالاران تماس بگیرید و توضیح خود را دربارهٔ این عمل ارائه کنید تا اختیارات شما بازگردد.\nخلاصه‌ای از توضیح قانون جلوگیری از خرابکاری که با کار شما مطابقت دارد چنین است: $1",
+ "abusefilter-autopromote-blocked": "این کار به طور خودکار نادرست تشخیص داده شده و از آن جلوگیری شده‌است.\nبه علاوه، به منظور حفظ امنیت، برخی دسترسی‌ها که به طور معمول به حساب‌های کاربر قابل اطمینان داده شده موقتاً از حساب کاربری شما پس گرفته شده‌است.\nخلاصه‌ای از توضیح قانون جلوگیری از خرابکاری که با کار شما مطابقت دارد چنین است: $1",
+ "abusefilter-blocker": "پالایهٔ خرابکاری",
+ "abusefilter-blockreason": "به طور خودکار توسط پالایهٔ خرابکاری بسته شد.\nتوضیح قانون مطابقت‌یافته: $1",
+ "abusefilter-degroupreason": "دسترسی کاربر به طور خودکار توسط پالایهٔ خرابکاری گرفته شد.\nتوضیح قانون: $1",
+ "abusefilter-accountreserved": "این نام کاربری برای استفاده توسط پالایهٔ خرابکاری کنار گذاشته شده‌است.",
+ "right-abusefilter-modify": "تغییر پالایهٔ خرابکاری",
+ "right-abusefilter-view": "مشاهدهٔ پالایه خرابکاری",
+ "right-abusefilter-log": "مشاهدهٔ سیاههٔ خرابکاری",
+ "right-abusefilter-log-detail": "مشاهدهٔ سیاههٔ خرابکاری به همراه جزئیات",
+ "right-abusefilter-private": "مشاهدهٔ اطلاعات خصوصی در سیاههٔ خرابکاری",
+ "right-abusefilter-private-log": "نمایش جزئیات خصوصی سیاههٔ دسترسی به پالایهٔ سوءاستفاده",
+ "right-abusefilter-modify-restricted": "ویرایش پالایه‌های خرابکاری دارای اقدامات محدودکننده",
+ "right-abusefilter-revert": "واگردانی تمام تغییرات توسط یک پالایهٔ خرابکاری",
+ "right-abusefilter-view-private": "مشاهدهٔ پالایه‌های خرابکاری علامت خورده به عنوان خصوصی",
+ "right-abusefilter-log-private": "نمایش ورودی‌های خصوصی سیاهه‌های خرابکاری",
+ "right-abusefilter-hide-log": "پنهان کردن موارد سیاههٔ خرابکاری",
+ "right-abusefilter-hidden-log": "مشاهدهٔ موارد پنهان سیاههٔ خرابکاری",
+ "right-abusefilter-modify-global": "ایجاد یا تغییر پالایه‌های سراسری خرابکاری",
+ "action-abusefilter-modify": "ویرایش پالایه‌های خرابکاری",
+ "action-abusefilter-view": "مشاهدهٔ پالایه‌های خرابکاری",
+ "action-abusefilter-log": "مشاهدهٔ سیاههٔ خرابکاری",
+ "action-abusefilter-log-detail": "مشاهدهٔ سیاههٔ خرابکاری به همراه جزئیات",
+ "action-abusefilter-private": "مشاهدهٔ اطلاعات خصوصی در سیاههٔ خرابکاری",
+ "action-abusefilter-private-log": "مشاهده سیاههٔ دسترسی به جزئیات خصوصی سیاههٔ خرابکاری",
+ "action-abusefilter-modify-restricted": "ویرایش پالایه‌های خرابکاری دارای اقدامات محدودکننده",
+ "action-abusefilter-revert": "واگردانی تمام تغییرات توسط یک پالایهٔ خرابکاری",
+ "action-abusefilter-view-private": "مشاهدهٔ پالایه‌های خرابکاری علامت خورده به عنوان خصوصی",
+ "action-abusefilter-log-private": "دیدن سیاهه‌های پالایهٔ خرابکاری که خصوصی هستند",
+ "abusefilter-log": "سیاههٔ پالایهٔ خرابکاری",
+ "abusefilter-log-summary": "این سیاهه فهرستی از تمام کارهایی که توسط پالایه‌ها گرفته شده را نشان می‌دهد.",
+ "abusefilter-log-search": "جستجو در سیاههٔ خرابکاری",
+ "abusefilter-log-search-user": "کاربر:",
+ "abusefilter-log-search-filter": "شناسهٔ پالایه (با خط عمودی جدا کنید):",
+ "abusefilter-log-search-title": "عنوان:",
+ "abusefilter-log-search-wiki": "ویکی:",
+ "abusefilter-log-search-impact": "تأثیر:",
+ "abusefilter-log-search-impact-all": "تمام کنش‌ها",
+ "abusefilter-log-search-impact-saved": "تنها تغییرات ذخیره شده",
+ "abusefilter-log-search-impact-not-saved": "بدون تغییر ذخیره شده",
+ "abusefilter-log-search-entries-label": "پدیداری:",
+ "abusefilter-log-search-entries-all": "تمام ورودی‌ها",
+ "abusefilter-log-search-entries-hidden": "فقط ورودی‌های پنهان",
+ "abusefilter-log-search-entries-visible": "فقط ورودی‌های آشکار",
+ "abusefilter-log-search-action-taken-label": "اقدام صورت‌گرفته:",
+ "abusefilter-log-search-action-taken-any": "همه",
+ "abusefilter-log-search-submit": "جستجو",
+ "abusefilter-log-entry": "$1: $2 در حال {{GENDER:$8|انجام}} عمل «$3» بر روی $4 یک پالایهٔ خرابکاری را فعال {{GENDER:$8|کرد}}.\nاقدام صورت‌گرفته: $5؛\nتوضیحات پالایه: $6",
+ "abusefilter-log-entry-withdiff": "$1: $2 در حال {{GENDER:$8|انجام}} عمل «$3» بر روی $4 یک پالایهٔ خرابکاری را فعال {{GENDER:$8|کرد}}.‌\nاقدام صورت‌گرفته: $5؛\nتوضیحات پالایه: $6 ($7)",
+ "abusefilter-log-detailedentry-meta": "$1: $2 در حال {{GENDER:$9|انجام}} عمل «$4» روی $5 $3 را فعال {{GENDER:$9|کرد}}.\nاقدام صورت‌گرفته: $6؛\nتوضیحات پالایه: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "پالایهٔ سراسری $1",
+ "abusefilter-log-detailedentry-local": "پالایهٔ $1",
+ "abusefilter-log-detailslink": "جزئیات",
+ "abusefilter-log-diff": "تفاوت",
+ "abusefilter-log-hidelink": "تنظیم پدیداری",
+ "abusefilter-log-details-legend": "جزئیات برای سیاههٔ ثبت‌شدهٔ $1",
+ "abusefilter-log-details-var": "متغیر",
+ "abusefilter-log-details-val": "مقدار",
+ "abusefilter-log-details-vars": "پارامترهای عمل",
+ "abusefilter-log-details-private": "جزئیات خصوصی سیاهه",
+ "abusefilter-log-details-ip": "آدرس آی‌پی اصلی",
+ "abusefilter-log-details-checkuser": "بازرسی کاربر",
+ "abusefilter-log-noactions": "هیچ",
+ "abusefilter-log-details-diff": "تغییرات انجام شده در ویرایش",
+ "abusefilter-log-linkoncontribs": "سیاههٔ خرابکاری",
+ "abusefilter-log-linkoncontribs-text": "سیاههٔ خرابکاری‌ها برای {{GENDER:$1|این کاربر}}",
+ "abusefilter-log-hidden": "(مورد پنهان)",
+ "abusefilter-log-hidden-implicit": "(پنهان‌شده چون نسخه حذف شده است)",
+ "abusefilter-log-cannot-see-details": "برای مشاهده جزئیات این مورد دسترسی ندارید.",
+ "abusefilter-log-cannot-see-private-details": "شما اجازهٔ دیدن جزئیات خصوصی این مورد را ندارید.",
+ "abusefilter-log-nonexistent": "ورودی‌ای با شناسهٔ ارائه‌شده وجود ندارد.",
+ "abusefilter-log-details-hidden": "شما نمی‌توانید جزئیات این مورد را ببینید چون از دید عموم مخفی شده‌است.",
+ "abusefilter-log-private-not-included": "یک یا چند مورد از شناسه‌های پالایه‌ای که انتخاب کرده‌اید خصوصی هستند. به این دلیل که شما مجاز به دیدن جزئیات پالایه‌های خصوصی نیستند، این فیلترها جستجو نشدند.",
+ "abusefilter-log-hide-legend": "پنهان کردن مورد در سیاهه",
+ "abusefilter-log-hide-id": "شناسه مورد در سیاهه:",
+ "abusefilter-log-hide-hidden": "پنهان کردن این مورد از دید عموم",
+ "abusefilter-log-hide-reason": "دلیل:",
+ "abusefilter-log-hide-forbidden": "شما دسترسی لازم برای پنهان کردن موارد سیاههٔ خرابکاری را ندارید.",
+ "abusefilter-logentry-suppress": "«[[$1]]» را پنهان کرد",
+ "abusefilter-logentry-unsuppress": "«[[$1]]» را آشکار کرد",
+ "logentry-abusefilter-hit": "$1 در حال انجام {{GENDER:$2|دادن}} عمل «$5» در $3 $4 را فعال {{GENDER:$2|کرد}}. اقدامات صورت‌گرفته: $6 ($7)",
+ "log-action-filter-abusefilter": "نوع تغییر پالایه",
+ "log-action-filter-abusefilter-create": "ایجاد پالایهٔ جدید",
+ "log-action-filter-abusefilter-modify": "تغییر پالایه",
+ "logentry-abusefilterprivatedetails-access": "$1 به جزئیات خصوصی $3 {{GENDER:$2|دسترسی یافت}}",
+ "abusefilterprivatedetails-log-name": "سیاههٔ دسترسی به جزئیات خصوصی سیاههٔ خرابکاری",
+ "abusefilter-management": "مدیریت پالایهٔ خرابکاری",
+ "abusefilter-list": "تمام پالایه‌ها",
+ "abusefilter-list-id": "شناسهٔ پالایه",
+ "abusefilter-list-pattern": "\nالگو",
+ "abusefilter-list-status": "وضعیت",
+ "abusefilter-list-public": "توضیحات عمومی",
+ "abusefilter-list-consequences": "عواقب",
+ "abusefilter-list-visibility": "پدیداری",
+ "abusefilter-list-hitcount": "شمار موارد مطابق",
+ "abusefilter-list-edit": "ویرایش",
+ "abusefilter-list-details": "جزئیات",
+ "abusefilter-list-limit": "تعداد در صفحه:",
+ "abusefilter-list-lastmodified": "آخرین ویرایش",
+ "abusefilter-list-group": "گروه پالایه",
+ "abusefilter-hidden": "خصوصی",
+ "abusefilter-unhidden": "عمومی",
+ "abusefilter-enabled": "فعال",
+ "abusefilter-deleted": "حذف شده",
+ "abusefilter-disabled": "غیرفعال",
+ "abusefilter-hitcount": "$1 مورد پیدا {{PLURAL:$1|شد|شد}}",
+ "abusefilter-new": "ایجاد یک پالایهٔ تازه",
+ "abusefilter-return": "بازگشت به مدیریت پالایه",
+ "abusefilter-status-global": "سراسری",
+ "abusefilter-list-options": "تنظیمات",
+ "abusefilter-list-options-deleted": "پالایه‌های حذف‌شده:",
+ "abusefilter-list-options-deleted-only": "فقط نمایش پالایه‌های حذف‌شده",
+ "abusefilter-list-options-deleted-hide": "نهفتن پالایه‌های حذف‌شده",
+ "abusefilter-list-options-deleted-show": "شامل‌شدن پالایه‌های حذف‌شده",
+ "abusefilter-list-options-scope": "نمایش پالایه‌ها:",
+ "abusefilter-list-options-scope-local": "فقط قوانین محلی",
+ "abusefilter-list-options-scope-global": "فقط قوانین سراسری",
+ "abusefilter-list-options-scope-all": "قوانین محلی و سراسری",
+ "abusefilter-list-options-disabled": "پالایه‌های غیرفعال:",
+ "abusefilter-list-options-hidedisabled": "نهفتن پالایه‌های غیرفعال",
+ "abusefilter-list-options-searchfield": "جستجو در قواعد:",
+ "abusefilter-list-options-searchpattern": "افزودن یک الگو",
+ "abusefilter-list-options-searchoptions": "حالت جستجو:",
+ "abusefilter-list-options-search-like": "پرسمان تخت",
+ "abusefilter-list-options-search-rlike": "عبارت باقاعده",
+ "abusefilter-list-options-search-irlike": "عبارت باقاعده حساس به بزرگی و کوچکی حروف",
+ "abusefilter-list-regexerror": "خطایی در زمان جستجو رخ داد: خطا در ساختار عبارت با قاعده.",
+ "abusefilter-list-options-submit": "به‌روزرسانی",
+ "abusefilter-tools-text": "اینجا ابزارهایی برای قاعده‌مندکردن و اشکال‌زدایی پالایه‌های خرابکاری قرار دارند.",
+ "abusefilter-tools-expr": "آزمایشگر عبارت",
+ "abusefilter-tools-submitexpr": "ارزیابی",
+ "abusefilter-tools-reautoconfirm": "بازگرداندن وضعیت تأییدشده",
+ "abusefilter-tools-reautoconfirm-user": "کاربر:",
+ "abusefilter-tools-reautoconfirm-submit": "تأیید دوباره",
+ "abusefilter-reautoconfirm-none": "کاربر وضعیت تأییدشده {{GENDER:$1|خود}} را از دست نداده‌است.",
+ "abusefilter-reautoconfirm-notallowed": "شما اجازه ندارید حالت تأییدشده را بازگردانید.",
+ "abusefilter-reautoconfirm-done": "وضعیت تأییدشدهٔ حساب بازگردانده شد.",
+ "abusefilter-status": "از میان $1 {{PLURAL:$1|عمل|عمل}} آخر، $2 مورد ($3٪) به ظرفیت شرایط $4 {{PLURAL:$2|رسید|رسیدند}}، و $5 مورد ($6٪) با یکی از پالایه‌هایی که در حال حاضر فعال است مطابقت {{PLURAL:$5|داشت|داشتند}}.",
+ "abusefilter-edit": "ویرایش پالایهٔ خرابکاری",
+ "abusefilter-edit-subtitle": "ویرایش پالایهٔ $1",
+ "abusefilter-edit-subtitle-new": "ایجاد پالایه",
+ "abusefilter-edit-oldwarning": "<strong>شما مشغول ویرایش کردن بر روی نسخهٔ قدیمی از پالایه هستید.\nآمار نقل شده بر اساس آخرین نسخهٔ پالایه است.\nاگر دکمه ذخیره را بفشارید تمام تغییرات بعد از نسخه‌ای که ویرایش می‌کنید را رونویسی خواهید کرد.</strong> &bull;\n[[Special:AbuseFilter/history/$2|بازگشت به تاریخچهٔ این پالایه]].",
+ "abusefilter-edit-status-label": "آمار:",
+ "abusefilter-edit-status": "از بین $1 {{PLURAL:$1|عمل|عمل}} گذشته، این پالایه با $2 مورد ($3٪) مطابقت داشت.",
+ "abusefilter-edit-status-profile": "از آخرین $1 {{PLURAL:$1|عمل|عمل}}، این پالایه با $2 ($3٪) مطابقت داشت.\nبه طور متوسط این پالایه در مدت $4 میلی‌ثانیه اجرا می‌شود و $5 شرط از ظرفیت شرایط را مصرف می‌کند.",
+ "abusefilter-edit-throttled-warning": "'''هشدار:''' این پالایه به صورت خودکار مضر تشخیص داده شد. به منظور حفظ امنیت، اقدام‌های روبه‌رو اجرا نخواهند شد ($1). لطفاً شرط‌های پالایه را بررسی و [[mw:Extension:AbuseFilter/Conditions|بهینه‌سازی]] کنید تا این محدودیت برداشته شود",
+ "abusefilter-edit-new": "پالایه‌ای تازه",
+ "abusefilter-edit-save": "ذخیره‌سازی پالایه",
+ "abusefilter-edit-id": "شناسهٔ پالایه:",
+ "abusefilter-edit-switch-editor": "تغییر ویرایشگر",
+ "abusefilter-edit-description": "توضیحات:\n:''(قابل مشاهده توسط عموم)''",
+ "abusefilter-edit-group": "گروه پالایه:",
+ "abusefilter-edit-flags": "پرچم‌ها:",
+ "abusefilter-edit-enabled": "فعال کردن این پالایه",
+ "abusefilter-edit-deleted": "علامت زدن به عنوان حذف‌شده",
+ "abusefilter-edit-hidden": "پنهان کردن جزئیات این پالایه از دید عموم",
+ "abusefilter-edit-global": "پالایهٔ سراسری",
+ "abusefilter-edit-rules": "شروط:",
+ "abusefilter-edit-notes": "یادداشت‌ها:",
+ "abusefilter-edit-lastmod": "آخرین ویرایش پالایه:",
+ "abusefilter-edit-lastmod-text": "$1 توسط $2",
+ "abusefilter-edit-hitcount": "موارد مطابق با پالایه:",
+ "abusefilter-edit-consequences": "کارهایی که در صورت مطابقت انجام می‌شود",
+ "abusefilter-edit-action-warn": "این واکنش‌ها را تنها پس از نمایش یک هشدار به کاربر فعال کن",
+ "abusefilter-edit-action-disallow": "از انجام عمل مربوط توسط کاربر جلوگیری کن",
+ "abusefilter-edit-action-blockautopromote": "وضعیت تأییدشدهٔ کاربر را لغو کن",
+ "abusefilter-edit-action-degroup": "کاربر را از تمام گروه‌های دارای دسترسی ویژه خارج کن",
+ "abusefilter-edit-action-block": "دسترسی کاربر و/یا آی‌پی را از ویرایش قطع کن",
+ "abusefilter-edit-action-blocktalk": "جلوگیری از ویرایش صفحهٔ بحث توسط خود کاربر/آی‌پی در زمانی که بسته است",
+ "abusefilter-edit-action-throttle": "واکنش‌ها را تنها در صورتی که کاربر از یک حد سرعت تجاوز کرد فعال کن",
+ "abusefilter-edit-action-rangeblock": "بازهٔ آی‌پی مرتبطی که کاربر از آن می‌آید را ببند",
+ "abusefilter-edit-action-tag": "این ویرایش برای بازبینی بعدی علامت‌گذاری کن",
+ "abusefilter-edit-throttle-count": "تعداد اقدامات مجاز:",
+ "abusefilter-edit-throttle-period": "تناوب زمانی:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|ثانیه|ثانیه}}",
+ "abusefilter-edit-throttle-groups": "کنترل گروه توسط:\n:''(یکی در هر سطر بنویسید، با کاما تلفیق کنید)''",
+ "abusefilter-edit-warn-message": "پیغام سامانه برای استفاده در هشدار:",
+ "abusefilter-edit-warn-other": "پیام‌های دیگر",
+ "abusefilter-edit-warn-other-label": "نام صفحهٔ حاوی پیام‌های دیگر:\n: ''(بدون پیشوند مدیاویکی)''",
+ "abusefilter-edit-warn-actions": "اقدامات:",
+ "abusefilter-edit-warn-preview": "پیش‌نمایش پیام انتخاب‌شده",
+ "abusefilter-edit-warn-edit": "ایجاد/ویرایش پیام انتخاب‌شده",
+ "abusefilter-edit-tag-tag": "[[Special:Tags|برچسب‌ها]] (هر کدام در یک خط):",
+ "abusefilter-edit-block-anon-durations": "مدت قطع دسترسی برای کاربران گمنام:",
+ "abusefilter-edit-block-user-durations": "مدت قطع دسترسی برای کاربران ثبت‌نام‌کرده:",
+ "abusefilter-block-anon": "کاربران گمنام",
+ "abusefilter-block-user": "کاربران ثبت‌نام‌کرده",
+ "abusefilter-edit-denied": "شما نمی‌توانید جزئیات این پالایه را ببینید، زیرا از دید عموم پنهان شده‌است.",
+ "abusefilter-edit-main": "پارامترهای پالایه",
+ "abusefilter-edit-done-subtitle": "پالایه ویرایش شد",
+ "abusefilter-edit-done": "[[Special:AbuseFilter/history/$1/diff/prev/$2|تغییرات شما]] در [[Special:AbuseFilter/$1|پالایه $3]] ذخیره شده‌است.",
+ "abusefilter-edit-badsyntax": "یک خطای نحوی در پالایه‌ای که مشخص کردید وجود دارد.\nخروجی تحلیلگر این بود: <pre>$1</pre>",
+ "abusefilter-edit-restricted": "شما نمی‌توانید این پالایه را ویرایش کنید، چون حاوی یک یا چند اقدام محدودشده است.\nلطفاً به منظور انجام تغییر، از یک کاربر با دسترسی اقدام‌های محدودشده درخواست کنید.",
+ "abusefilter-edit-viewhistory": "نمایش تاریخچهٔ این پالایه",
+ "abusefilter-edit-history": "تاریخچه:",
+ "abusefilter-edit-check": "بررسی نحوی",
+ "abusefilter-edit-badfilter": "پالایهٔ مشخص شده وجود ندارد",
+ "abusefilter-edit-revert": "واگردانی کارهای انجام شده توسط این پالایه",
+ "abusefilter-edit-tools": "ابزارها:",
+ "abusefilter-edit-test-link": "آزمایش این پالایه روی ویرایش‌های اخیر",
+ "abusefilter-edit-export": "برون‌بری این پالایه برای یک ویکی دیگر",
+ "abusefilter-edit-syntaxok": "خطای نحوی پیدا نشد.",
+ "abusefilter-edit-syntaxerr": "خطای نحوی پیدا شد: $1",
+ "abusefilter-edit-bad-tags": "یک یا چند برچسب که شما مشخص کردید معتبر نیستند.\nبرچسب‌ها بهتر است کوتاه باشند، آنها نباید شامل نویسه‌های ویژه باشند و همچنین نباید در دیگر نرم‌افزارها رزرو شده باشند. برچسب دیگری انتخاب کنید.",
+ "abusefilter-edit-notallowed": "شما اجازه ندارید که پالایه‌های خرابکاری بسازید یا ویرایش کنید",
+ "abusefilter-edit-notallowed-global": "شما اجازه ندارید که پالایه‌های خرابکاری سراسری را بسازید یا ویرایش کنید",
+ "abusefilter-edit-notallowed-global-custom-msg": "پیام‌های هشدار سفارشی برای فیلترهای سراسری پشتیبانی نمی‌شوند",
+ "abusefilter-edit-builder-select": "گزینه‌ای را انتخاب کنید تا در محل نشانگر اضافه شود",
+ "abusefilter-edit-builder-group-op-arithmetic": "عملگرهای حسابی",
+ "abusefilter-edit-builder-op-arithmetic-addition": "افزودن (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "تفریق (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "ضرب (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "تقسیم (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "باقی‌مانده (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "توان (**)",
+ "abusefilter-edit-builder-group-op-comparison": "عملگرهای مقایسه‌ای",
+ "abusefilter-edit-builder-op-comparison-equal": "برابر است با (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "برابر نیست با (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "کمتر از (>)",
+ "abusefilter-edit-builder-op-comparison-gt": "بیشتر از (<)",
+ "abusefilter-edit-builder-op-comparison-lte": "کوچکتر یا مساوی (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "بزرگتر یا مساوی (<=)",
+ "abusefilter-edit-builder-group-op-bool": "عملگرهای بولی",
+ "abusefilter-edit-builder-op-bool-not": "نقیض (!)",
+ "abusefilter-edit-builder-op-bool-and": "و (&)",
+ "abusefilter-edit-builder-op-bool-or": "یا (|)",
+ "abusefilter-edit-builder-op-bool-xor": "XOR (^)",
+ "abusefilter-edit-builder-group-misc": "متفرقه",
+ "abusefilter-edit-builder-misc-in": "موجود در یک رشته (in)",
+ "abusefilter-edit-builder-misc-like": "مطابقت با یک الگو (like)",
+ "abusefilter-edit-builder-misc-rlike": "مطابقت با عبارات باقاعده (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "مطابقت با عبارات باقاعده، صرف نظر از کوچکی و بزرگی حروف (irlike)",
+ "abusefilter-edit-builder-misc-contains": "رشته چپ شامل رشته راست (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "رشته متنی (\"\")",
+ "abusefilter-edit-builder-misc-tern": "عملگر سه‌تایی (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "شرطی (اگر الف آنگاه ب وگرنه پ)",
+ "abusefilter-edit-builder-group-funcs": "توابع",
+ "abusefilter-edit-builder-funcs-length": "طول رشته (length)",
+ "abusefilter-edit-builder-funcs-lcase": "به حروف کوچک (lcase)",
+ "abusefilter-edit-builder-funcs-ucase": "به حروف بزرگ (ucase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "بهنجارش نویسه‌های مشوش (ccnorm)",
+ "abusefilter-edit-builder-funcs-ccnorm-contains-any": "نرمال‌سازی و جستجوی یک عبارت برای چندین عبارت یا حالت (ccnorm_contains_any)",
+ "abusefilter-edit-builder-funcs-ccnorm-contains-all": "نرمال‌سازی و جستجوی یک عبارت برای چندین عبارت و حالت (ccnorm_contains_all)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "حذف نویسه‌های دوتایی (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "نویسه‌های ویژه/مجموع نویسه‌ها(specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "بهنجاری (norm)",
+ "abusefilter-edit-builder-funcs-count": "تعداد تکرار رشته X در رشته Y (count)",
+ "abusefilter-edit-builder-funcs-rcount": "تعداد تکرار عبارت باقاعده X در رشته Y (rcount)",
+ "abusefilter-edit-builder-funcs-get_matches": "دستهٔ نتیجه‌های عبارت باقاعده از متن برای هر گروه بدست آمده (get_matches)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "حذف نویسه‌های خالی (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "حذف نویسه‌های ویژه (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "آیا آی‌پی در این محدوده است؟ (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "جستجوی رشته برای چند زیررشته با استفاده از شرط «یا» (contains_any)",
+ "abusefilter-edit-builder-funcs-contains-all": "جستجوی رشته برای چند زیررشته با استفاده از شرط «و» (contains_any)",
+ "abusefilter-edit-builder-funcs-substr": "زیررشته (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "موقعیت زیررشته در رشته (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "جایگزینی زیررشته با رشته (str_replace)",
+ "abusefilter-edit-builder-funcs-rescape": "گریز تحت‌الفظی متن به صورت یک عبارت باقاعده (rescape)",
+ "abusefilter-edit-builder-funcs-set_var": "نشاندن متغیر (set_var)",
+ "abusefilter-edit-builder-group-vars": "متغیرها",
+ "abusefilter-edit-builder-vars-accountname": "نام کاربری (در زمان ایجاد حساب کاربری)",
+ "abusefilter-edit-builder-vars-timestamp": "زمان یونیکسی تغییر",
+ "abusefilter-edit-builder-vars-timestamp-expanded": "برچسب زمان سیاهه",
+ "abusefilter-edit-builder-vars-action": "اقدام",
+ "abusefilter-edit-builder-vars-addedlines": "سطرهای اضافه‌شده در ویرایش",
+ "abusefilter-edit-builder-vars-delta": "تغییر اندازهٔ صفحه در ویرایش",
+ "abusefilter-edit-builder-vars-diff": "تفاوت یکسان‌سازی شده از تغییرات اعمال شده در ویرایش",
+ "abusefilter-edit-builder-vars-newsize": "اندازهٔ تازه صفحه",
+ "abusefilter-edit-builder-vars-oldsize": "اندازهٔ قدیمی صفحه",
+ "abusefilter-edit-builder-vars-old-content-model": "مدل محتوای قبلی",
+ "abusefilter-edit-builder-vars-new-content-model": "مدل محتوای جدید",
+ "abusefilter-edit-builder-vars-removedlines": "سطرهای حذف شده در ویرایش",
+ "abusefilter-edit-builder-vars-summary": "خلاصهٔ ویرایش / دلیل",
+ "abusefilter-edit-builder-vars-article-id": "شناسهٔ صفحه",
+ "abusefilter-edit-builder-vars-article-ns": "فضای نام صفحه",
+ "abusefilter-edit-builder-vars-article-text": "عنوان صفحه (بدون فضای نام)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "عنوان کامل صفحه",
+ "abusefilter-edit-builder-vars-article-views": "بازدیدهای صفحه",
+ "abusefilter-edit-builder-vars-movedfrom-id": "شناسهٔ صفحهٔ مبدأ انتقال",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "فضای نام صفحهٔ مبدأ انتقال",
+ "abusefilter-edit-builder-vars-movedfrom-text": "عنوان صفحهٔ مبدأ انتقال",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "عنوان کامل صفحهٔ مبدأ انتقال",
+ "abusefilter-edit-builder-vars-movedto-id": "شناسهٔ صفحهٔ مقصد انتقال",
+ "abusefilter-edit-builder-vars-movedto-ns": "فضای نام صفحهٔ مقصد انتقال",
+ "abusefilter-edit-builder-vars-movedto-text": "عنوان صفحهٔ مقصد انتقال",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "عنوان کامل صفحهٔ مقصد انتقال",
+ "abusefilter-edit-builder-vars-user-editcount": "شمار ویرایش‌های حساب کاربری",
+ "abusefilter-edit-builder-vars-user-age": "عمر حساب کاربری",
+ "abusefilter-edit-builder-vars-user-name": "نام حساب کاربری",
+ "abusefilter-edit-builder-vars-user-groups": "گروه‌هایی که کاربر (ولو به طور ضمنی) در آن است",
+ "abusefilter-edit-builder-vars-user-rights": "اختیاراتی که یک کاربر دارد",
+ "abusefilter-edit-builder-vars-user-blocked": "بسته‌بودن کاربر",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "نشانی ایمیل زمان تأیید شد",
+ "abusefilter-edit-builder-vars-recent-contributors": "آخرین ده کاربری که در صفحه مشارکت کرده‌اند",
+ "abusefilter-edit-builder-vars-first-contributor": "اولین کاربری که در صفحه مشارکت کرده‌است",
+ "abusefilter-edit-builder-vars-all-links": "تمام پیوندهای خارجی در متن تازه",
+ "abusefilter-edit-builder-vars-added-links": "تمام پیوندهای خارجی اضافه شده در ویرایش",
+ "abusefilter-edit-builder-vars-removed-links": "تمام پیوندهای خارجی حذف شده در ویرایش",
+ "abusefilter-edit-builder-vars-old-text": "ویکی‌متن قدیمی صفحه، قبل از ویرایش",
+ "abusefilter-edit-builder-vars-new-text": "ویکی‌متن تازه صفحه، بعد از ویرایش",
+ "abusefilter-edit-builder-vars-new-pst": "صفحهٔ تازه ویکی‌متن، پیش از ذخیره تغییر یافت",
+ "abusefilter-edit-builder-vars-diff-pst": "یکی کردن تفاوت تغییرات ساخته شده توسط ویرایش، از قبل ذخیره شده تبدیل شده",
+ "abusefilter-edit-builder-vars-addedlines-pst": "خطوط اضافه شده در ویرایش، از قبل ذخیره شده تبدیل شده",
+ "abusefilter-edit-builder-vars-new-text-stripped": "متن جدید صفحه، بدون نشانه‌گذاری‌ها",
+ "abusefilter-edit-builder-vars-new-html": "کد اچ‌تی‌ام‌ال تجزیه شده از نسخه جدید",
+ "abusefilter-edit-builder-vars-restrictions-edit": "سطح محافظت صفحه برای ویرایش",
+ "abusefilter-edit-builder-vars-restrictions-move": "سطح محافظت صفحه برای انتقال",
+ "abusefilter-edit-builder-vars-restrictions-create": "حفاظت صفحه در برابر ساخت",
+ "abusefilter-edit-builder-vars-restrictions-upload": "حفاظت پرونده در برابر بارگذاری",
+ "abusefilter-edit-builder-vars-old-text-stripped": "متن قبلی صفحه، بدون نشانه‌گذاری‌ها",
+ "abusefilter-edit-builder-vars-old-links": "پیوندهای صفحه، قبل از ویرایش",
+ "abusefilter-edit-builder-vars-old-html": "ویکی‌متن قدیمی صفحه، تجزیه شده به اچ‌تی‌ام‌ال",
+ "abusefilter-edit-builder-vars-minor-edit": "نشانه‌گذاری شدن ویرایش به عنوان جزئی",
+ "abusefilter-edit-builder-vars-file-sha1": "درهم‌سازی محتویات پرونده با SHA1",
+ "abusefilter-edit-builder-vars-file-size": "اندازهٔ پرونده به بایت",
+ "abusefilter-edit-builder-vars-file-mime": "نوع MIME پرونده",
+ "abusefilter-edit-builder-vars-file-mediatype": "نوع رسانهٔ پرونده",
+ "abusefilter-edit-builder-vars-file-width": "عرض پرونده به پیکسل",
+ "abusefilter-edit-builder-vars-file-height": "ارتفاع پرونده به پیکسل",
+ "abusefilter-edit-builder-vars-file-bits-per-channel": "تعداد بیت در هر کانال رنگ پرونده",
+ "abusefilter-edit-block-options": "گزینه‌های قطع دسترسی:",
+ "abusefilter-filter-log": "تغییرات اخیر پالایه‌ها",
+ "abusefilter-history": "تاریخچهٔ تغییرهای پالایهٔ خرابکاری #$1",
+ "abusefilter-history-foruser": "تغییرات توسط $1",
+ "abusefilter-history-hidden": "پنهان",
+ "abusefilter-history-enabled": "فعال",
+ "abusefilter-history-global": "سراسری",
+ "abusefilter-history-timestamp": "زمان",
+ "abusefilter-history-user": "کاربر",
+ "abusefilter-history-public": "توضیحات عمومی پالایه",
+ "abusefilter-history-flags": "پرچم‌ها",
+ "abusefilter-history-filter": "قواعد پالایه",
+ "abusefilter-history-comments": "توضیح",
+ "abusefilter-history-actions": "اقدامات",
+ "abusefilter-history-backedit": "بازگشت به ویرایشگر پالایه",
+ "abusefilter-history-deleted": "حذف شده",
+ "abusefilter-history-filterid": "پالایه",
+ "abusefilter-history-select-legend": "تصحیح جستجو",
+ "abusefilter-history-select-user": "کاربر:",
+ "abusefilter-history-select-filter": "شناسهٔ پالایه:",
+ "abusefilter-history-select-submit": "تصحیح",
+ "abusefilter-history-diff": "تغییرات",
+ "abusefilter-history-error-hidden": "پالایه‌ای که شما درخواست کرده‌اید پنهان شده‌است و شما نمی‌توانید تاریخچهٔ آن را ببینید.",
+ "abusefilter-exception-unexpectedatend": "«$2» غیرمنتظره در نویسهٔ $1.",
+ "abusefilter-exception-expectednotfound": "انتظار یک $2 در نویسهٔ $1 می‌رفت که یافت نشد (به‌جایش $3 $4 یافت شد).",
+ "abusefilter-exception-unrecognisedkeyword": "کلیدواژهٔ ناشناخته $2 در نویسهٔ $1.",
+ "abusefilter-exception-unexpectedtoken": "نشانهٔ غیرمنتظرهٔ «$3» (از نوع $2) در نویسهٔ $1.",
+ "abusefilter-exception-unclosedstring": "رشتهٔ بسته‌نشده با شروع از نویسهٔ $1.",
+ "abusefilter-exception-invalidoperator": "عملگر نامعتبر «$2» در نویسهٔ $1.",
+ "abusefilter-exception-unrecognisedtoken": "نشانهٔ ناشناختهٔ «$2» در نویسهٔ $1.",
+ "abusefilter-exception-noparams": "هیچ پارامتری به تابع «$2» در نویسهٔ $1 داده نشده‌است.",
+ "abusefilter-exception-dividebyzero": "تلاش غیر مجاز برای تقسیم $2 بر صفر در نویسهٔ $1.",
+ "abusefilter-exception-unrecognisedvar": "متغیر ناشناختهٔ $2 در نویسهٔ $1.",
+ "abusefilter-exception-notenoughargs": "پارامترهای داده‌شده به تابع $2 در نویسهٔ $1 کافی نبود.\nانتظار $3 {{PLURAL:$3|پارامتر}} می‌رفت، $4 پارامتر به‌دست آمد",
+ "abusefilter-exception-regexfailure": "خطا در عبارات باقاعده «$3» در نویسهٔ $1: «$2»",
+ "abusefilter-exception-overridebuiltin": "رونویسی غیر مجاز متغیر توکار «$2» در نویسه $1.",
+ "abusefilter-exception-outofbounds": "درخواست مورد ناموجود $2 از فهرست (اندازهٔ فهرست = $3) در نویسهٔ $1.",
+ "abusefilter-exception-notlist": "درخواست مورد آرایه از غیر آرایه در نویسه $1.",
+ "abusefilter-action-tag": "برچسب",
+ "abusefilter-action-throttle": "محدودیت سرعت",
+ "abusefilter-action-warn": "هشدار",
+ "abusefilter-action-blockautopromote": "قطع ارتقاء خودکار",
+ "abusefilter-action-block": "بستن",
+ "abusefilter-action-degroup": "حذف از گروه‌ها",
+ "abusefilter-action-rangeblock": "بستن یک بازه",
+ "abusefilter-action-disallow": "جلوگیری",
+ "abusefilter-revert-title": "واگردانی تمام تغییرهای انجام شده توسط پالایهٔ $1",
+ "abusefilter-revert-intro": "این فرم به شما اجازهٔ واگردانی همهٔ تغییرات انجام شده توسط پالایهٔ خرابکاری به دلیل پالایهٔ $1 را می‌دهد.\nلطفاً در استفاده از این ابزار دقت کنید.",
+ "abusefilter-revert-preview-item": "$1: $2 یک $3 بر $4 {{GENDER:$7|انجام داد}}.\nاقداماتی که واگردانی خواهند شد: $5 ($6)",
+ "abusefilter-revert-search-legend": "اقدامات پالایهٔ خرابکاری را که می‌خواهید واگردانی کنید برگزینید",
+ "abusefilter-revert-periodstart": "شروع بازه زمانی:",
+ "abusefilter-revert-periodend": "پایان بازه زمانی:",
+ "abusefilter-revert-search": "انتخاب اقدامات",
+ "abusefilter-revert-filter": "شناسهٔ پالایه:",
+ "abusefilter-revert-preview-intro": "در زیر اقدامات صورت گرفته توسط پالایهٔ خرابکاری آمده است که توسط این اقدام واگرادنی می‌شود.\nلطفاً با دقت آن‌ها را بررسی کنید، و به منظور تأیید انتخاب، روی «{{int:abusefilter-revert-confirm}}» کلیک نمایید.",
+ "abusefilter-revert-confirm-legend": "تأیید واگردانی",
+ "abusefilter-revert-confirm": "تأیید",
+ "abusefilter-revert-success": "شما همهٔ اقدام‌های صورت گرفته توسط پالایهٔ خرابکاری به دلیل [[Special:AbuseFilter/$1|پالایهٔ $2]] را واگردانی کرده‌اید.",
+ "abusefilter-revert-reason": "واگردانی خودکار همهٔ اقدام‌های صورت‌گرفته توسط پالایهٔ خرابکاری به دلیل پالایهٔ $1.\nعلت داده‌شده: $2",
+ "abusefilter-revert-reasonfield": "دلیل:",
+ "abusefilter-test": "آزمودن پالایه در برابر ویرایش‌های قبلی",
+ "abusefilter-test-intro": "این صفحه به شما اجازهٔ بررسی پالایهٔ واردشده در جعبهٔ زیر در برابر $1 {{PLURAL:$1|تغییر}} اخیر را می‌دهد.\nبرای بارکردن یکی از پالایه‌های موجود، شناسهٔ آن را در جعبهٔ زیر جعبهٔ ویرایش وارد کنید، و بر روی دکمهٔ «{{int:abusefilter-test-load}}» کلیک کنید.",
+ "abusefilter-test-legend": "آزمایش پالایه",
+ "abusefilter-test-load-filter": "بارگذاری پالایهٔ شماره:",
+ "abusefilter-test-submit": "آزمایش",
+ "abusefilter-test-load": "بارگیری",
+ "abusefilter-test-user": "تغییرات کاربر:",
+ "abusefilter-test-period-start": "تغییرات انجام شده بعد از:",
+ "abusefilter-test-period-end": "تغییرات انجام شده پیش از:",
+ "abusefilter-test-page": "تغییرات انجام شده در صفحه:",
+ "abusefilter-test-shownegative": "تغییراتی که با پالایه مطابقت ندارد را نشان بده",
+ "abusefilter-test-syntaxerr": "پالایه‌ای که وارد کردید دارای یک خطای نحوی است.\nشما می‌توانید توضیح کاملی را با کلیک کردن روی دکمه «{{int:abusefilter-edit-check}}» ببینید.",
+ "abusefilter-test-badtitle": "عنوان صفحه‌ای که وارد کردید، نامعتبر بود. ممکن است شامل یک یا چند نویسه باشد که نمی‌تواند در عنوان‌ها استفاده شود.",
+ "abusefilter-changeslist-examine": "آزمودن",
+ "abusefilter-examine": "بررسی تک تک تغییرات",
+ "abusefilter-examine-intro": "این صفحه اجازهٔ بررسی متغیرهای تولیدشده توسط پالایهٔ خرابکاری برای یک تغییر، و آزمودنش در برابر پالایه‌ها را می‌دهد.",
+ "abusefilter-examine-legend": "انتخاب تغییرات",
+ "abusefilter-examine-diff": "آدرس اینترنتی تفاوت:",
+ "abusefilter-examine-user": "کاربر:",
+ "abusefilter-examine-title": "عنوان صفحه:",
+ "abusefilter-examine-submit": "جستجو",
+ "abusefilter-examine-vars": "متغیرهای ایجاد شده برای این تغییر",
+ "abusefilter-examine-test": "آزمایش این تغییر بر روی یک پالایه",
+ "abusefilter-examine-test-button": "آزمایش پالایه",
+ "abusefilter-examine-match": "پالایه با این تغییر مطابقت داشت.",
+ "abusefilter-examine-nomatch": "پالایه با این تغییر مطابقت نداشت.",
+ "abusefilter-examine-syntaxerror": "پالایه ساختار نادرست دارد",
+ "abusefilter-examine-notfound": "تغییری که درخواست کردید پیدا نشد.",
+ "abusefilter-examine-incompatible": "تغییری که درخواست کردید توسط پالایهٔ خرابکاری‌ها پشتیبانی نمی‌شود",
+ "abusefilter-examine-noresults": "برای پارامترهای جستجویی که ارائه کردید هیچ نتیجه‌ای یافت نشد.",
+ "abusefilter-topnav": "'''ناوبری پالایهٔ خرابکاری'''",
+ "abusefilter-topnav-home": "خانه",
+ "abusefilter-topnav-test": "آزمودن دسته‌ای",
+ "abusefilter-topnav-examine": "آزمودن ویرایش‌های قبلی",
+ "abusefilter-topnav-log": "سیاههٔ خرابکاری",
+ "abusefilter-topnav-tools": "ابزارهای اشکال‌زدایی",
+ "abusefilter-topnav-import": "درون‌ریزی پالایه",
+ "abusefilter-log-name": "سیاههٔ پالایهٔ خرابکاری",
+ "abusefilter-log-header": "این سیاهه خلاصه‌ای از تغییرات پالایه‌ها را نمایش می‌دهد.\nبرای جزئیات کامل [[Special:AbuseFilter/history|فهرست]] تغییرات اخیر پالایه‌ها را ببینید.",
+ "abusefilter-logentry-create": "$1 $4 را {{GENDER:$2|ایجاد کرد}} ($5)",
+ "abusefilter-logentry-modify": "$1 {{GENDER:$2|تغییر داد}} $4 ($5)",
+ "abusefilter-log-noresults": "بدون نتیجه",
+ "abusefilter-diff-title": "تفاوت بین نسخه‌ها",
+ "abusefilter-diff-item": "مورد",
+ "abusefilter-diff-version": "نسخهٔ $1 {{GENDER:$3|توسط}} $2",
+ "abusefilter-diff-info": "اطلاعات اولیه",
+ "abusefilter-diff-pattern": "شروط پالایه",
+ "abusefilter-diff-invalid": "ناتوان از واکشی نسخهٔ درخواست شده",
+ "abusefilter-diff-backhistory": "بازگشت به تاریخچهٔ پالایه",
+ "abusefilter-diff-prev": "تغییر قدیمی‌تر",
+ "abusefilter-diff-next": "تغییر جدیدتر",
+ "abusefilter-import-intro": "شما می‌توانید از این رابط برای واردکردن پالایه‌ها از دیگر ویکی‌ها استفاده کنید.\nدر ویکی مبدأ روی «{{int:abusefilter-edit-export}}» زیر «{{int:abusefilter-edit-tools}}» در رابط ویرایشی کلیک کنید.\nاز جعبهٔ متنی که نشان داده می‌شود کپی کرده و در این جعبهٔ متن بچسبانید، سپس روی «{{int:abusefilter-import-submit}}» کلیک کنید.",
+ "abusefilter-import-submit": "درون‌ریزی اطلاعات",
+ "abusefilter-group-default": "پیش‌فرض",
+ "abusefilter-http-error": "خطای اچ‌تی‌تی‌پی رخ داد: $1",
+ "abusefilter-view-private-submit": "نمایش جزئیات خصوصی",
+ "abusefilter-view-private": "نمایش جزئیات خصوصی",
+ "abusefilter-view-private-reason": "دلیل برای دسترسی به جزئیات خصوصی:",
+ "abusefilter-log-details-id": "سیاهه شناسه",
+ "abusefilter-invalid-request": "درخواست غیرمجاز! شما باید جزئیات خصوصی پالایه را از طریق فرمی که در [[Special:AbuseLog/$1]] است درخواست کنید و دلیلی ارائه کنید.",
+ "abusefilter-invalid-request-noid": "درخواست غیرمجاز! شما باید جزئیات خصوصی پالایه را از طریق فرمی که در صفحهٔ جزئیات سیاهه است درخواست کنید و دلیلی ارائه کنید.",
+ "log-description-abusefilterprivatedetails": "این سیاهه فهرستی از مواردی را نشان می‌دهد که کاربری به جزئیات خصوصی یک سیاهه خرابکاری دسترسی یافته‌است.",
+ "abusefilter-noreason": "هشدار: برای دیدن جزئیات خصوصی این پالایه باید دلیلی ارائه کنید.",
+ "abusefilter-log-ip-not-available": "موجود نیست",
+ "tag-abusefilter-condition-limit": "محدودیت تعداد شرایط حاصل شد",
+ "tag-abusefilter-condition-limit-description": "ویرایش‌ها یا عملکردهای دیگری که توسط تمام [[Special:AbuseFilter|پالایه‌های]] فعال بررسی نشدند ([[mw:Extension:AbuseFilter/Conditions|راهنما]]).",
+ "apihelp-abusefiltercheckmatch-description": "بررسی کنید تا ببینید اگر پالایهٔ خرابکاری با مجموعه‌ای از متغییرها، رویداد سیاههٔ پالایهٔ خرابکاری کاربر مطابق است.\n\n متغییر، شناسهٔ تغییرات اخیر یا شناسهٔ ورود مورد نیاز است، اما فقط یکی از این سه می‌تواند استفاده شود.",
+ "apihelp-abusefiltercheckmatch-summary": "بررسی کنید اگر یک پالایهٔ خرابکاری با مجموعه‌ای از متغیرها مطابقت داشت، editor logged AbuseFilter event.",
+ "apihelp-abusefiltercheckmatch-extended-description": "vars، rcid، یا logid لازم است هرچند یکی از آنها استفاده می‌شود.",
+ "apihelp-abusefiltercheckmatch-param-filter": "متن کامل پالایه برای بررسی یک مورد مطابقت‌یافته.",
+ "apihelp-abusefiltercheckmatch-param-vars": "آرایه رمزگذاری شدهٔ به صورت جی‌سان از متغیرها برای آزمایش کردن.",
+ "apihelp-abusefiltercheckmatch-param-rcid": "شناسهٔ تغییرات اخیر برای بررسی.",
+ "apihelp-abusefiltercheckmatch-param-logid": "شناسهٔ سیاههٔ پالایهٔ خرابکاری برای بررسی.",
+ "apihelp-abusefiltercheckmatch-example-1": "آزمایش کنید که آیا تغییرات شمارهٔ ۱۵ با یک پالایهٔ ساده مطابقت دارد یا خیر",
+ "apihelp-abusefilterchecksyntax-description": "نحو یک پالایهٔ خرابکاری را بررسی کنید.",
+ "apihelp-abusefilterchecksyntax-summary": "نحو یک پالایهٔ خرابکاری را بررسی کنید.",
+ "apihelp-abusefilterchecksyntax-param-filter": "متن کامل پالایه برای بررسی کردن نحو",
+ "apihelp-abusefilterchecksyntax-example-1": "نحو یک پالایهٔ مجاز را بررسی کنید",
+ "apihelp-abusefilterchecksyntax-example-2": "نحو یک پالایهٔ غیر مجاز را بررسی کنید",
+ "apihelp-abusefilterevalexpression-description": "یک عبارت پالایهٔ خرابکاری را ارزشیابی می‌کند.",
+ "apihelp-abusefilterevalexpression-summary": "یک عبارت پالایهٔ خرابکاری را ارزشیابی می‌کند.",
+ "apihelp-abusefilterevalexpression-param-expression": "عبارت برای ارزشیابی.",
+ "apihelp-abusefilterevalexpression-example-1": "ارزشیابی یک عبارت ساده",
+ "apihelp-abusefilterunblockautopromote-description": "باز کردن یک کاربر از ارتقاء خودکار بر پایهٔ نتیجهٔ پالایهٔ خرابکاری.",
+ "apihelp-abusefilterunblockautopromote-summary": "باز کردن یک کاربر از ارتقاء خودکار بر پایهٔ نتیجهٔ پالایهٔ خرابکاری.",
+ "apihelp-abusefilterunblockautopromote-param-user": "نام کاربری‌ای که قصد باز کردن آن را دارید.",
+ "apihelp-abusefilterunblockautopromote-example-1": "برداشتن قفل بر روی ارتقاء خودکار [[User:Example]]",
+ "apihelp-query+abusefilters-description": "نمایش جزئیات پالایهٔ خرابکاری.",
+ "apihelp-query+abusefilters-summary": "نمایش جزئیات پالایهٔ خرابکاری.",
+ "apihelp-query+abusefilters-param-startid": "شناسهٔ پالایه برای شروع شمارش از آن.",
+ "apihelp-query+abusefilters-param-endid": "شناسهٔ پالایه برای توقف شمارش.",
+ "apihelp-query+abusefilters-param-show": "نمایش پالایه‌هایی که شامل این موضوع هستند.",
+ "apihelp-query+abusefilters-param-limit": "حداکثر تعداد پالایه‌ها برای فهرست کردن.",
+ "apihelp-query+abusefilters-param-prop": "خصوصیتی که باید گرفته شود.",
+ "apihelp-query+abusefilters-example-1": "نمایش پالایه‌های عمومی فعال",
+ "apihelp-query+abusefilters-example-2": "نمایش تعدادی از جزئیات دربارهٔ پالایه‌ها",
+ "apihelp-query+abuselog-description": "نمایش رویدادهایی که توسط پالایه جلوگیری شده‌اند.",
+ "apihelp-query+abuselog-summary": "نمایش رویدادهایی که توسط پالایه جلوگیری شده‌اند.",
+ "apihelp-query+abuselog-param-start": "تاریخی که از آن شمارش شروع شود.",
+ "apihelp-query+abuselog-param-end": "تاریخی که شمارش از آن متوقف شود.",
+ "apihelp-query+abuselog-param-user": "نمایش ورودی‌های انجام شده توسط کاربر یا آی‌پی.",
+ "apihelp-query+abuselog-param-title": "نمایش ورودی‌هایی که بر روی یک صفحهٔ مشخص اعمال شده اند.",
+ "apihelp-query+abuselog-param-filter": "نمایش ورودی‌هایی که توسط یک شناسهٔ پالایهٔ داده‌شده جلوگیری شده‌اند.",
+ "apihelp-query+abuselog-param-limit": "حداکثر تعداد ورودی‌هایی که نمایش داده شود.",
+ "apihelp-query+abuselog-param-prop": "خصوصیتی که باید گرفته شود.",
+ "apihelp-query+abuselog-param-wiki": "ویکی برای نمایش تأثیر گرفته از آن",
+ "apihelp-query+abuselog-example-1": "نمایش سیاههٔ آخرین ورودی‌ها",
+ "apihelp-query+abuselog-example-2": "نمایش آخرین موارد سیاهه از [[API]]",
+ "apierror-abusefilter-canttest": "شما اجازهٔ آزمایش پالایه‌های خرابکاری را ندارید.",
+ "apierror-abusefilter-cantcheck": "شما اجازهٔ آزمایش نحوی پالایه‌های خرابکاری را ندارید.",
+ "apierror-abusefilter-nosuchlogid": "هیچ موردی در سیاههٔ خرابکاری با شناسهٔ $1 وجود ندارد.",
+ "apierror-abusefilter-badsyntax": "نحو پالایه غیرمجاز است"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/fi.json b/www/wiki/extensions/AbuseFilter/i18n/fi.json
new file mode 100644
index 00000000..eda38b7d
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/fi.json
@@ -0,0 +1,465 @@
+{
+ "@metadata": {
+ "authors": [
+ "Cimon Avaro",
+ "Crt",
+ "Harriv",
+ "Ilaiho",
+ "Nedergard",
+ "Nike",
+ "Olli",
+ "Pxos",
+ "Samoasambia",
+ "Silvonen",
+ "Snidata",
+ "Str4nd",
+ "Stryn",
+ "VezonThunder",
+ "Vililikku",
+ "Zache",
+ "ZeiP",
+ "Matma Rex",
+ "01miki10",
+ "Pyscowicz"
+ ]
+ },
+ "abusefilter-desc": "Mahdollistaa muokkauksien suodattamisen automaattisella heuristiikalla.",
+ "abusefilter": "Väärinkäyttösuodattimen asetukset",
+ "abuselog": "Väärinkäyttöloki",
+ "abusefilter-intro": "Tervetuloa väärinkäyttösuodattimen hallintakäyttöliittymään.\nVäärinkäyttösuodatin (Abuse Filter) on automaattinen ohjelmistomekanismi, joka soveltaa automaattista heuristiikkaa kaikkiin toimintoihin.\nTämä käyttöliittymä näyttää luettelon määritetyistä suodattimista ja antaa mahdollisuuden muuttaa niiden asetuksia.",
+ "abusefilter-mustbeeditor": "Turvallisuussyistä vain käyttäjät, joilla on oikeus muuttaa väärinkäyttösuodattimia, saavat käyttää tätä käyttöliittymää.",
+ "abusefilter-warning": "'''Varoitus''': Tämä toiminto on automaattisesti tunnistettu haitalliseksi.\nEpäasialliset toiminnot kumotaan nopeasti ja törkeä tai toistuva häiriköinti johtaa tunnuksesi tai IP-osoitteesi estämiseen.\nJos tämä toiminto on mielestäsi asiallinen, napsauta Tallenna-painiketta uudelleen.\nLyhyt kuvaus säännöstä, jota sovellettiin: $1",
+ "abusefilter-disallowed": "Tämä toiminto on automaattisesti tunnistettu haitalliseksi ja tästä syystä sen suorittamista ei ole sallittu.\nJos olet sitä mieltä, että toimenpiteesi on asiallinen, ota yhteyttä ylläpitäjään ja kerro, mitä yritit tehdä.\nLaukaisemasi väärinkäyttösuodattimen säännön lyhyt kuvaus on: $1",
+ "abusefilter-blocked-display": "Muokkauksesi on automaattisesti tunnistettu haitalliseksi,\nja sen suorittaminen on estetty.\n{{GRAMMAR:genitive|{{SITENAME}}}} suojelemiseksi muokkaaminen on estetty tunnukseltasi ja kaikilta siihen liittyviltä IP-osoitteilta.\nOta yhteyttä ylläpitäjään mikäli on tapahtunut virhe.\nVäärinkäytön estämisen sääntölauseen lyhyt kuvausteksti on: $1",
+ "abusefilter-degrouped": "Tämä toimenpide on automaattisesti tunnistettu haitalliseksi.\nSiitä johtuen sitä ei ole sallittu, ja koska käyttäjätilisi on epäilty olevan murrettu, sen kaikki oikeudet on peruttu.\nMikäli tämä on ollut mielestäsi erehdys, ota yhteyttä byrokraattiin ja esitä perustelusi tälle toimenpiteelle, niin oikeutesi saatetaan palauttaa.\nLyhyt kuvaus väärinkäyttösuodattimen säännöstä, joka täsmää toimenpiteeseesi on: $1",
+ "abusefilter-autopromote-blocked": "Tämä toimenpide on automaattisesti tunnistettu haitalliseksi, ja sitä ei ole sallittu.\nTurvallisuussyistä jotkin rutiininomaisesti peruskäyttäjille myönnetyt etuoikeudet on väliaikaisesti poistettu käyttäjätunnukseltasi.\nVäärinkäyttösuodatinsäännön kuvaus, joka vastasi suorittamaasi toimenpidettä, on kuvattu lyhyesti täällä: $1",
+ "abusefilter-blocker": "Väärinkäyttösuodatin",
+ "abusefilter-blockreason": "Automaattisesti estetty väärinkäyttösuodattimella.\nToimintoa vastaavan säännön kuvaus: $1",
+ "abusefilter-degroupreason": "Oikeudet automaattisesti poistettu väärinkäyttösuodattimen toimesta.\nSäännön kuvaus: $1",
+ "abusefilter-accountreserved": "Tämä käyttäjätunnus on varattu väärinkäyttösuodattimen käyttöön.",
+ "right-abusefilter-modify": "Muokata väärinkäyttösuodattimia",
+ "right-abusefilter-view": "Nähdä väärinkäyttösuodattimien sisältö",
+ "right-abusefilter-log": "Nähdä väärinkäyttöloki",
+ "right-abusefilter-log-detail": "Nähdä yksityiskohtaisia lokimerkintöjä väärinkäyttölokissa",
+ "right-abusefilter-private": "Tarkastella yksityisiä tietoja väärinkäyttölokissa",
+ "right-abusefilter-modify-restricted": "Muokata väärinkäyttösuodattimia, joissa on rajoitettuja toimintoja",
+ "right-abusefilter-revert": "Peruuttaa kaikki muutokset, jotka on tehnyt määritelty väärinkäyttösuodatin",
+ "right-abusefilter-view-private": "Nähdä ne väärinkäyttösuodattimet, jotka on merkitty yksityisiksi",
+ "right-abusefilter-log-private": "Tarkastella yksityisten väärinkäyttösuodattimien lokitietoja",
+ "right-abusefilter-hide-log": "Piilottaa väärinkäyttölokin merkintöjä",
+ "right-abusefilter-hidden-log": "Nähdä väärinkäyttölokista piilotetut merkinnät",
+ "right-abusefilter-modify-global": "Luoda tai muokata järjestelmänlaajuisia väärinkäyttösuodattimia",
+ "action-abusefilter-modify": "muokata väärinkäyttösuodattimia",
+ "action-abusefilter-view": "nähdä väärinkäyttösuodattimien sisältöä",
+ "action-abusefilter-log": "nähdä väärinkäyttölokia",
+ "action-abusefilter-log-detail": "nähdä tarkempia tietoja väärinkäyttölokista",
+ "action-abusefilter-private": "tarkastella yksityisiä tietoja väärinkäyttölokista",
+ "action-abusefilter-modify-restricted": "muokata väärinkäyttösuodattimia, joissa on rajoitettuja toimintoja",
+ "action-abusefilter-revert": "palauttaa kaikkia muutoksia valitulla väärinkäyttösuodattimella",
+ "action-abusefilter-view-private": "nähdä niitä väärinkäyttösuodattimia, jotka on merkitty yksityisiksi",
+ "action-abusefilter-log-private": "tarkastella yksityisten väärinkäyttösuodattimien lokitietoja",
+ "abusefilter-log": "Väärinkäyttösuodattimen loki",
+ "abusefilter-log-summary": "Tämä loki näyttää luettelon kaikista suodattimiin tarttuneista toiminnoista.",
+ "abusefilter-log-search": "Etsi väärinkäyttölokista",
+ "abusefilter-log-search-user": "Käyttäjä:",
+ "abusefilter-log-search-filter": "Suodattimen numero (erota pystyviivoilla):",
+ "abusefilter-log-search-title": "Kohteen nimi:",
+ "abusefilter-log-search-wiki": "Wiki:",
+ "abusefilter-log-search-impact": "Vaikutus:",
+ "abusefilter-log-search-impact-all": "Kaikki toimenpiteet",
+ "abusefilter-log-search-impact-saved": "Vain tallennetut muutokset",
+ "abusefilter-log-search-impact-not-saved": "Muut kuin tallennetut muutokset",
+ "abusefilter-log-search-entries-label": "Näkyvyys:",
+ "abusefilter-log-search-entries-all": "Kaikki lokimerkinnät",
+ "abusefilter-log-search-entries-hidden": "Vain piilotetut lokimerkinnät",
+ "abusefilter-log-search-entries-visible": "Vain näkyvissä olevat lokimerkinnät",
+ "abusefilter-log-search-action-taken-label": "Suoritettu toimenpide:",
+ "abusefilter-log-search-action-taken-any": "Kaikki",
+ "abusefilter-log-search-submit": "Etsi",
+ "abusefilter-log-entry": "$1: $2 {{GENDER:$8|laukaisi}} väärinkäyttösuodattimen {{GENDER:$8|käyttäessään}} toimintoa ”$3” kohteessa $4.\nToimenpiteet: $5;\nSuodattimen kuvaus: $6",
+ "abusefilter-log-entry-withdiff": "$1: $2 {{GENDER:$8|laukaisi}} väärinkäyttösuodattimen {{GENDER:$8|käyttäessään}} toimintoa ”$3” kohteessa $4.\nToimenpiteet: $5;\nSuodattimen kuvaus: $6 ($7)",
+ "abusefilter-log-detailedentry-meta": "$1: $2 {{GENDER:$9|laukaisi}} suodattimen $3 {{GENDER:$9|käyttäessään}} toimintoa ”$4” kohteessa $5.\nToimenpiteet: $6;\nSuodattimen kuvaus: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "järjestelmänlaajuinen suodatin $1",
+ "abusefilter-log-detailedentry-local": "suodatin $1",
+ "abusefilter-log-detailslink": "tarkat tiedot",
+ "abusefilter-log-diff": "ero",
+ "abusefilter-log-hidelink": "säädä näkyvyyttä",
+ "abusefilter-log-details-legend": "Tarkemmat tiedot koskien lokimerkintää $1",
+ "abusefilter-log-details-var": "Muuttuja",
+ "abusefilter-log-details-val": "Arvo",
+ "abusefilter-log-details-vars": "Toimintoparametrit",
+ "abusefilter-log-details-private": "Yksityiset lokitiedot",
+ "abusefilter-log-details-ip": "Alkuperäinen IP-osoite",
+ "abusefilter-log-details-checkuser": "Osoitepaljastin",
+ "abusefilter-log-noactions": "ei mitään",
+ "abusefilter-log-details-diff": "Muutokset, jotka tehtiin muokkauksessa",
+ "abusefilter-log-linkoncontribs": "väärinkäyttöloki",
+ "abusefilter-log-linkoncontribs-text": "Väärinkäyttöloki {{GENDER:$1|tälle käyttäjälle}}",
+ "abusefilter-log-hidden": "(merkintä on piilotettu)",
+ "abusefilter-log-hidden-implicit": "(piilotettu, koska versio on poistettu)",
+ "abusefilter-log-cannot-see-details": "Sinulla ei ole oikeutta nähdä tämän lokimerkinnän tietoja.",
+ "abusefilter-log-cannot-see-private-details": "Sinulla ei ole lupaa tarkastella tämän lokimerkinnän yksityisiä tietoja.",
+ "abusefilter-log-details-hidden": "Et voi nähdä tämän lokimerkinnän tietoja, koska merkintä on piilotettu eikä ole julkisesti näkyvissä.",
+ "abusefilter-log-private-not-included": "Yksi tai useampi määrittämäsi suodattimen numero on suljettu ulkopuolisilta. Koska sinulla ei ole lupaa nähdä yksityisten suodattimien tietoja, näitä suodattimia ei ole haettu.",
+ "abusefilter-log-hide-legend": "Piilota lokitapahtuma",
+ "abusefilter-log-hide-id": "Lokimerkinnän tunnusnumero:",
+ "abusefilter-log-hide-hidden": "Piilota tämä merkintä julkiselta näkymiseltä",
+ "abusefilter-log-hide-reason": "Syy:",
+ "abusefilter-log-hide-forbidden": "Sinulla ei ole oikeutta piilottaa väärinkäyttölokin merkintöjä.",
+ "abusefilter-logentry-suppress": "piilotti merkinnän [[$1]]",
+ "abusefilter-logentry-unsuppress": "palautti merkinnän [[$1]] näkyviin",
+ "logentry-abusefilter-hit": "$1 {{GENDER:$2|laukaisi}} suodattimen $4 {{GENDER:$2|suorittaessaan}} toiminnon \"$5\" kohteessa $3. Toimenpiteet: $6 ($7)",
+ "log-action-filter-abusefilter": "Suodattimen muutoksen tyyppi:",
+ "log-action-filter-abusefilter-create": "Uuden suodattimen luonti",
+ "log-action-filter-abusefilter-modify": "Suodattimen muokkaus",
+ "abusefilter-management": "Väärinkäyttösuodattimen hallinta",
+ "abusefilter-list": "Kaikki suodattimet",
+ "abusefilter-list-id": "Suodatin nro",
+ "abusefilter-list-status": "Tila",
+ "abusefilter-list-public": "Julkinen kuvaus",
+ "abusefilter-list-consequences": "Seuraamukset",
+ "abusefilter-list-visibility": "Näkyvyys",
+ "abusefilter-list-hitcount": "Osumia",
+ "abusefilter-list-edit": "Muokkaa",
+ "abusefilter-list-details": "Tiedot",
+ "abusefilter-list-limit": "Lukumäärä sivulla:",
+ "abusefilter-list-lastmodified": "Viimeksi muokattu",
+ "abusefilter-list-group": "Suodatinryhmä",
+ "abusefilter-hidden": "Yksityinen",
+ "abusefilter-unhidden": "Julkinen",
+ "abusefilter-enabled": "Käytössä",
+ "abusefilter-deleted": "Poistettu",
+ "abusefilter-disabled": "Poistettu käytöstä",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|osuma|osumaa}}",
+ "abusefilter-new": "Luo uusi suodatin",
+ "abusefilter-return": "Palaa suodattimien hallintaan",
+ "abusefilter-status-global": "Järjestelmänlaajuinen",
+ "abusefilter-list-options": "Valinnat",
+ "abusefilter-list-options-deleted": "Poistetut suodattimet:",
+ "abusefilter-list-options-deleted-only": "Näytä vain poistetut suodattimet",
+ "abusefilter-list-options-deleted-hide": "Piilota poistetut suodattimet",
+ "abusefilter-list-options-deleted-show": "Sisällytä poistetut suodattimet",
+ "abusefilter-list-options-scope": "Näytä suodattimista:",
+ "abusefilter-list-options-scope-local": "Vain paikalliset säännöt",
+ "abusefilter-list-options-scope-global": "Vain järjestelmänlaajuiset säännöt",
+ "abusefilter-list-options-scope-all": "Paikalliset ja järjestelmänlaajuiset säännöt",
+ "abusefilter-list-options-disabled": "Käytöstä poistetut suodattimet:",
+ "abusefilter-list-options-hidedisabled": "Piilota käytöstä poistetut suodattimet",
+ "abusefilter-list-options-submit": "Päivitä",
+ "abusefilter-tools-text": "Tässä on työkaluja, jotka saattavat olla hyödyllisiä väärinkäyttösuodattimien muodostamisessa ja niiden virheenjäljityksessä.",
+ "abusefilter-tools-expr": "Lausekkeen kokeilu",
+ "abusefilter-tools-submitexpr": "Kokeile",
+ "abusefilter-tools-reautoconfirm": "Palauta käyttäjä ryhmään ''automaattisesti hyväksytty käyttäjä (autoconfirmed)''",
+ "abusefilter-tools-reautoconfirm-user": "Käyttäjä:",
+ "abusefilter-tools-reautoconfirm-submit": "Tee käyttäjästä uudelleen ''automaattisesti hyväksytty''",
+ "abusefilter-reautoconfirm-none": "Tätä käyttäjää ei ole poistettu ryhmästä ''automaattisesti hyväksytyt käyttäjät (autoconfirmed)''",
+ "abusefilter-reautoconfirm-notallowed": "Sinulla ei ole oikeutta palauttaa käyttäjätunnusta ryhmään ''automaattisesti hyväksytyt käyttäjät (autoconfirmed)''",
+ "abusefilter-reautoconfirm-done": "Käyttäjätunnus on nyt palautettu ryhmään ''automaattisesti hyväksytyt käyttäjät (autoconfirmed)''",
+ "abusefilter-status": "Viimeisestä $1 {{PLURAL:$1|toiminnosta}} $2 ($3 %) on {{PLURAL:$2|saavuttanut}} ehtorajan $4, ja $5 ($6 %) on {{PLURAL:$5|täsmännyt}} johonkin tällä hetkellä käytössä olevista suodattimista.",
+ "abusefilter-edit": "Muokataan väärinkäyttösuodatinta",
+ "abusefilter-edit-subtitle": "Muokataan suodatinta $1",
+ "abusefilter-edit-subtitle-new": "Luodaan suodatinta",
+ "abusefilter-edit-oldwarning": "<strong>Muokkaat tämän suodattimen vanhaa versiota.\nAnnetut tilastot ovat suodattimen uusimmalle versiolle.\nJos tallennat muutoksesi, tuhoat samalla kaikki tämän version jälkeen tehdyt muutokset.</strong> &bull;\n[[Special:AbuseFilter/history/$2|Palaa suodattimen historiaan]].",
+ "abusefilter-edit-status-label": "Tilastot:",
+ "abusefilter-edit-status": "Viimeisestä $1 {{PLURAL:$1|toiminnosta}} tämä suodatin täsmäsi $2 kertaa ($3 %).",
+ "abusefilter-edit-status-profile": "Viimeisestä $1 toiminnosta tämä suodatin täsmäsi $2 kertaa ($3 %).\nKeskimäärin sen ajoaika on $4 ms, ja se kuluttaa $5 {{PLURAL:$5|ehdon|ehtoa}} ehtorajasta.",
+ "abusefilter-edit-throttled-warning": "'''Varoitus:''' Tämä suodatin merkittiin automaattisesti haitalliseksi. Turvallisuussyistä seuraavia toimintoja ei suoriteta ($1). Tarkista ja [[mw:Extension:AbuseFilter/Conditions|optimoi]] ehtosi poistaaksesi tämän rajoituksen",
+ "abusefilter-edit-new": "Uusi suodatin",
+ "abusefilter-edit-save": "Tallenna suodatin",
+ "abusefilter-edit-id": "Suodatin nro:",
+ "abusefilter-edit-description": "Kuvaus:\n:''(julkisesti näkyvillä)''",
+ "abusefilter-edit-group": "Suodatinryhmä:",
+ "abusefilter-edit-flags": "Ominaisuudet:",
+ "abusefilter-edit-enabled": "Ota käyttöön tämä suodatin",
+ "abusefilter-edit-deleted": "Merkitse poistetuksi",
+ "abusefilter-edit-hidden": "Piilota suodattimen yksityiskohdat julkiselta näkyvyydeltä",
+ "abusefilter-edit-global": "Järjestelmänlaajuinen suodatin",
+ "abusefilter-edit-rules": "Ehtolauseet:",
+ "abusefilter-edit-notes": "Huomautukset:",
+ "abusefilter-edit-lastmod": "Suodatinta viimeksi muutettu:",
+ "abusefilter-edit-lastmod-text": "$1 – $2",
+ "abusefilter-edit-hitcount": "Suodattimen osumat:",
+ "abusefilter-edit-consequences": "Suoritettavat toimenpiteet, kun muokkaus on aktivoinut tämän suodattimen",
+ "abusefilter-edit-action-warn": "Käynnistä nämä toimenpiteet sen jälkeen, kun käyttäjälle on annettu varoitus",
+ "abusefilter-edit-action-disallow": "Estä käyttäjää suorittamasta kyseistä toimenpidettä",
+ "abusefilter-edit-action-blockautopromote": "Poista käyttäjä ryhmästä ''automaattisesti hyväksytyt käyttäjät (autoconfirmed)''",
+ "abusefilter-edit-action-degroup": "Poista käyttäjä kaikista ryhmistä, joilla on erityisoikeuksia",
+ "abusefilter-edit-action-block": "Aseta käyttäjälle ja/tai IP-osoitteelle muokkausesto",
+ "abusefilter-edit-action-throttle": "Laukaise toiminnot vain jos käyttäjä ylittää rajan",
+ "abusefilter-edit-action-rangeblock": "Estä /16-alue, josta käyttäjä tulee",
+ "abusefilter-edit-action-tag": "Merkkaa muokkaus lisätarkastelun kohteeksi",
+ "abusefilter-edit-throttle-count": "Toimintojen sallittu määrä:",
+ "abusefilter-edit-throttle-period": "Aikaväli:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|sekunti|sekuntia}}",
+ "abusefilter-edit-throttle-groups": "Ryhmän määritys:\n:''(yksi per rivi, yhdistä pilkun avulla)''",
+ "abusefilter-edit-warn-message": "Varoitukseen käytettävä järjestelmäviesti:",
+ "abusefilter-edit-warn-other": "Muu viesti",
+ "abusefilter-edit-warn-other-label": "Muun viestin sivun otsikko:\n:''(ilman Järjestelmäviesti-etuliitettä)''",
+ "abusefilter-edit-warn-actions": "Toiminnot:",
+ "abusefilter-edit-warn-preview": "Esikatsele valittua viestiä",
+ "abusefilter-edit-warn-edit": "Luo tai muokkaa valittua viestiä",
+ "abusefilter-edit-tag-tag": "Käytettävät [[Special:Tags|merkkaukset]] (yksi per rivi):",
+ "abusefilter-block-anon": "kirjautumattomat käyttäjät",
+ "abusefilter-block-user": "kirjautuneet käyttäjät",
+ "abusefilter-edit-denied": "Et voi tarkastella tämän suodattimen yksityiskohtia, koska ne eivät ole julkisesti näkyvillä.",
+ "abusefilter-edit-main": "Suodattimen parametrit",
+ "abusefilter-edit-done-subtitle": "Suodatinta muokattu",
+ "abusefilter-edit-done": "[[Special:AbuseFilter/history/$1/diff/prev/$2|Muutokset]] [[Special:AbuseFilter/$1|suodattimeen $3]] tallennettiin onnistuneesti.",
+ "abusefilter-edit-badsyntax": "Määrittämässäsi suodattimessa on syntaksivirhe.\nJäsentimen palaute: <pre>$1</pre>",
+ "abusefilter-edit-restricted": "Et voi muuttaa tätä suodatinta, koska se sisältää yhden tai useamman rajoitetun toiminnon.\nPyydä rajoitettujen toimintojen lisäämiseen tarvittavien oikeuksien haltijalta, että tämä tekee muutoksen puolestasi.",
+ "abusefilter-edit-viewhistory": "Näytä tämän suodattimen historia",
+ "abusefilter-edit-history": "Historia:",
+ "abusefilter-edit-check": "Tarkista syntaksi",
+ "abusefilter-edit-badfilter": "Määrittelemääsi suodatinta ei ole",
+ "abusefilter-edit-revert": "Peruuta tämän suodattimen tekemät toimenpiteet",
+ "abusefilter-edit-tools": "Työkalut:",
+ "abusefilter-edit-test-link": "Kokeile tätä suodatinta tuoreisiin muokkauksiin",
+ "abusefilter-edit-export": "Vie tämä suodatin toiseen wikiin",
+ "abusefilter-edit-syntaxok": "Ei syntaksivirheitä havaittu.",
+ "abusefilter-edit-syntaxerr": "Syntaksivirhe havaittu: $1",
+ "abusefilter-edit-bad-tags": "Yksi tai useampi määrittämistäsi merkkauksista (tags) ei kelpaa.\nMerkkausten tulisi olla lyhyitä ja ilman erikoismerkkejä.",
+ "abusefilter-edit-notallowed": "Sinulla ei ole oikeutta luoda tai muokata väärinkäyttösuodattimia",
+ "abusefilter-edit-notallowed-global": "Sinulla ei ole oikeutta luoda tai muokata järjestelmänlaajuisia väärinkäyttösuodattimia",
+ "abusefilter-edit-notallowed-global-custom-msg": "Räätälöityjä varoitusviestejä ei voi liittää järjestelmänlaajuisiin suodattimiin",
+ "abusefilter-edit-builder-select": "Valitse tästä vaihtoehto joka lisätään kohdistimen jälkeen",
+ "abusefilter-edit-builder-group-op-arithmetic": "Aritmeettiset operaattorit",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Lisäys (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Vähennys (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Kertominen (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Jakaminen (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Jakojäännös (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Potenssi (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Vertailuoperaattorit",
+ "abusefilter-edit-builder-op-comparison-equal": "Yhtäläinen (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Eroava (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "Pienempi kuin (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Suurempi kuin (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Pienempi tai yhtä suuri kuin (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Suurempi tai yhtä suuri kuin (>=)",
+ "abusefilter-edit-builder-group-op-bool": "Totuusarvojen operaattorit",
+ "abusefilter-edit-builder-op-bool-not": "Ei (!)",
+ "abusefilter-edit-builder-op-bool-and": "Ja (&)",
+ "abusefilter-edit-builder-op-bool-or": "Tai (|)",
+ "abusefilter-edit-builder-group-misc": "Sekalaiset",
+ "abusefilter-edit-builder-misc-in": "sisältyy merkkijonoon (in)",
+ "abusefilter-edit-builder-misc-like": "Täsmää hahmoon (like)",
+ "abusefilter-edit-builder-misc-rlike": "Täsmää säännölliseen lausekkeeseen (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "Täsmää säännölliseen lausekkeeseen – kirjainkoolla ei merkitystä (irlike)",
+ "abusefilter-edit-builder-misc-contains": "Vasen merkkijono sisältää oikean merkkijonon (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "Merkkijonovakio (\"\")",
+ "abusefilter-edit-builder-misc-tern": "Ehto-operaattori (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "Ehtolause (if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "Funktiot",
+ "abusefilter-edit-builder-funcs-length": "Merkkijonon pituus (length)",
+ "abusefilter-edit-builder-funcs-lcase": "Muuta pienaakkosiksi (lcase)",
+ "abusefilter-edit-builder-funcs-ucase": "Muuta suuraakkosiksi (ucase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "Normalisoi hämäävät merkit (ccnorm)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "Poista kaksoismerkit (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "Erikoismerkit / merkit yhteensä (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "Yhtenäistä (norm)",
+ "abusefilter-edit-builder-funcs-count": "Merkkijonon X esiintymiskerrat merkkijonossa Y (count)",
+ "abusefilter-edit-builder-funcs-rcount": "Säännöllisen lausekkeen X esiintymien määrä merkkijonossa Y (rcount)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "Poista tyhjä tila (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "Poista erikoismerkit (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "Onko IP-osoite osoiteavaruudessa? (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "Etsi merkkijonosta osamerkkijonoja (contains_any)",
+ "abusefilter-edit-builder-funcs-substr": "Osamerkkijono (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "Osamerkkijonon sijainti merkkijonossa (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "Korvaa osamerkkijono merkkijonolla (str_replace)",
+ "abusefilter-edit-builder-funcs-set_var": "Aseta muuttujalle arvo (set_var)",
+ "abusefilter-edit-builder-group-vars": "Muuttujat",
+ "abusefilter-edit-builder-vars-accountname": "Käyttäjätunnus (tunnuksen luomisessa)",
+ "abusefilter-edit-builder-vars-timestamp": "Muutoksen Unix-aikaleima",
+ "abusefilter-edit-builder-vars-action": "Toiminto",
+ "abusefilter-edit-builder-vars-addedlines": "Muokkauksessa lisättyjen rivien määrä",
+ "abusefilter-edit-builder-vars-delta": "Koon muutos muokkauksessa",
+ "abusefilter-edit-builder-vars-diff": "Muokkauksessa tehtyjen muutosten yhdistetty diff-tuloste",
+ "abusefilter-edit-builder-vars-newsize": "Uuden sivun koko",
+ "abusefilter-edit-builder-vars-oldsize": "Vanhan sivun koko",
+ "abusefilter-edit-builder-vars-old-content-model": "Vanha sisältömalli",
+ "abusefilter-edit-builder-vars-new-content-model": "Uusi sisältömalli",
+ "abusefilter-edit-builder-vars-removedlines": "Muokkauksessa poistettujen rivien määrä",
+ "abusefilter-edit-builder-vars-summary": "Muokkausyhteenveto tai syy",
+ "abusefilter-edit-builder-vars-article-id": "Sivun tunnistenumero",
+ "abusefilter-edit-builder-vars-article-ns": "Sivun nimiavaruus",
+ "abusefilter-edit-builder-vars-article-text": "Sivun nimi (ilman nimiavaruutta)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Sivun koko nimi",
+ "abusefilter-edit-builder-vars-article-views": "Sivulatauksia",
+ "abusefilter-edit-builder-vars-movedfrom-id": "Siirron lähdesivun tunnistenumero",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "Siirron lähdesivun nimiavaruus",
+ "abusefilter-edit-builder-vars-movedfrom-text": "Siirron lähdesivun nimi",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "Siirron lähdesivun koko nimi",
+ "abusefilter-edit-builder-vars-movedto-id": "Siirron kohdesivun tunnistenumero",
+ "abusefilter-edit-builder-vars-movedto-ns": "Siirron kohdesivun nimiavaruus",
+ "abusefilter-edit-builder-vars-movedto-text": "Siirron kohdesivun nimi",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "Siirron kohdesivun koko nimi",
+ "abusefilter-edit-builder-vars-user-editcount": "Käyttäjän muokkausmäärä",
+ "abusefilter-edit-builder-vars-user-age": "Käyttäjätunnuksen ikä",
+ "abusefilter-edit-builder-vars-user-name": "Käyttäjätunnuksen nimi",
+ "abusefilter-edit-builder-vars-user-groups": "Ryhmät (myös implisiittiset), joissa käyttäjä on",
+ "abusefilter-edit-builder-vars-user-rights": "Oikeudet, jotka käyttäjällä on",
+ "abusefilter-edit-builder-vars-user-blocked": "Onko käyttäjä estetty",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "Sähköpostiosoite vahvistettiin",
+ "abusefilter-edit-builder-vars-recent-contributors": "Sivun viimeisimmät kymmenen muokkaajaa",
+ "abusefilter-edit-builder-vars-first-contributor": "Sivun ensimmäinen muokkaaja",
+ "abusefilter-edit-builder-vars-movedto-recent-contributors": "Siirron kohdesivun 10 viimeistä muokkaajaa",
+ "abusefilter-edit-builder-vars-all-links": "Kaikki ulkoiset linkit uudessa tekstissä",
+ "abusefilter-edit-builder-vars-added-links": "Kaikki muokkauksessa lisätyt ulkoiset linkit",
+ "abusefilter-edit-builder-vars-removed-links": "Kaikki muokkauksessa poistetut ulkoiset linkit",
+ "abusefilter-edit-builder-vars-old-text": "Sivun vanha wikiteksti, ennen muokkausta",
+ "abusefilter-edit-builder-vars-new-text": "Sivun uusi wikiteksti, muokkauksen jälkeen",
+ "abusefilter-edit-builder-vars-new-pst": "Uuden sivun wikiteksti, \"pre-save transformed\"",
+ "abusefilter-edit-builder-vars-diff-pst": "Yhdistetty eroavaisuus (diffi) muutoksista, jotka on tehty muokkauksessa, \"pre-save transformed\"",
+ "abusefilter-edit-builder-vars-addedlines-pst": "Muokkauksessa lisätyt rivit, \"pre-save transformed\"",
+ "abusefilter-edit-builder-vars-new-text-stripped": "Sivun uusin tekstimuoto, riisuttuna kaikista koodimerkinnöistä",
+ "abusefilter-edit-builder-vars-new-html": "Jäsennetty uuden version HTML-lähdekoodi",
+ "abusefilter-edit-builder-vars-restrictions-edit": "Sivun muokkaussuojauksen taso",
+ "abusefilter-edit-builder-vars-restrictions-move": "Sivun siirtosuojauksen taso",
+ "abusefilter-edit-builder-vars-restrictions-create": "Sivun luontisuojaus",
+ "abusefilter-edit-builder-vars-restrictions-upload": "Tiedoston tallennussuojaus",
+ "abusefilter-edit-builder-vars-movedfrom-restrictions-move": "Siirron lähdesivun siirtosuojaus",
+ "abusefilter-edit-builder-vars-movedto-restrictions-move": "Siirron kohdesivun siirtosuojaus",
+ "abusefilter-edit-builder-vars-movedto-restrictions-create": "Siirron kohdesivun luontisuojaus",
+ "abusefilter-edit-builder-vars-old-text-stripped": "Sivun vanhempi teksti, riisuttuna koodimerkinnöistä",
+ "abusefilter-edit-builder-vars-old-links": "Linkit sivulla ennen muokkausta",
+ "abusefilter-edit-builder-vars-old-html": "Vanha sivun wikiteksti jäsennettynä HTML:ksi",
+ "abusefilter-edit-builder-vars-minor-edit": "Onko muokkaus merkitty pieneksi muutokseksi vai ei",
+ "abusefilter-edit-builder-vars-file-sha1": "Tiedoston sisällön SHA1-tiiviste",
+ "abusefilter-edit-builder-vars-file-size": "Tiedoston koko tavuina",
+ "abusefilter-edit-builder-vars-file-mime": "Tiedoston MIME-tyyppi",
+ "abusefilter-edit-builder-vars-file-mediatype": "Tiedoston mediatyyppi",
+ "abusefilter-edit-builder-vars-file-width": "Tiedoston leveys pikseleissä",
+ "abusefilter-edit-builder-vars-file-height": "Tiedoston korkeus pikseleissä",
+ "abusefilter-edit-block-options": "Eston asetukset:",
+ "abusefilter-filter-log": "Suodattimien viimeisimmät muutokset",
+ "abusefilter-history": "Muutoshistoria väärinkäyttösuodattimelle numero $1",
+ "abusefilter-history-foruser": "Käyttäjän $1 muokkaukset",
+ "abusefilter-history-hidden": "Piilotettu",
+ "abusefilter-history-enabled": "On käytössä",
+ "abusefilter-history-global": "Järjestelmänlaajuinen",
+ "abusefilter-history-timestamp": "Aika",
+ "abusefilter-history-user": "Käyttäjä",
+ "abusefilter-history-public": "Suodattimen julkinen kuvaus",
+ "abusefilter-history-flags": "Ominaisuudet",
+ "abusefilter-history-filter": "Suodatinsääntö",
+ "abusefilter-history-comments": "Kommentit",
+ "abusefilter-history-actions": "Toimenpiteet",
+ "abusefilter-history-backedit": "Palaa suodattimen muokkaamiseen",
+ "abusefilter-history-deleted": "Poistettu",
+ "abusefilter-history-filterid": "Suodatin",
+ "abusefilter-history-select-legend": "Tarkenna hakua",
+ "abusefilter-history-select-user": "Käyttäjä:",
+ "abusefilter-history-select-filter": "Suodatin nro:",
+ "abusefilter-history-select-submit": "Tarkenna",
+ "abusefilter-history-diff": "Muutokset",
+ "abusefilter-history-error-hidden": "Pyytämäsi suodatin on piilotettu näkyvistä, etkä voi tarkastella sen historiaa.",
+ "abusefilter-exception-unexpectedatend": "Odottamaton ”$2” merkissä $1.",
+ "abusefilter-exception-expectednotfound": "Odotettiin koodia $2 merkin $1 kohdalla, ei löytynyt. (Sen sijaan löytyi $3 $4.)",
+ "abusefilter-exception-unrecognisedkeyword": "Tunnistamaton avainsana $2 merkissä $1.",
+ "abusefilter-exception-unexpectedtoken": "Odottamaton sane ”$3” (tyyppiä $2) kohdassa $1.",
+ "abusefilter-exception-unclosedstring": "Sulkematon merkkijono alkaen merkistä $1.",
+ "abusefilter-exception-invalidoperator": "Virheellinen operaattori ”$2” merkissä $1.",
+ "abusefilter-exception-unrecognisedtoken": "Tunnistamaton sane ”$2” kohdassa $1.",
+ "abusefilter-exception-noparams": "Parametreja ei annettu funktiolle ”$2” merkissä $1.",
+ "abusefilter-exception-dividebyzero": "Laiton yritys jakaa $2 nollalla merkissä $1.",
+ "abusefilter-exception-unrecognisedvar": "Tunnistamaton muuttuja $2 merkissä $1",
+ "abusefilter-exception-notenoughargs": "Funktiolle $2 ei annettu tarpeeksi argumentteja kutsuttaessa merkissä $1.\nOdotettu $3 {{PLURAL:$3|argumenttia|argumenttia}}, saatu $4.",
+ "abusefilter-exception-regexfailure": "Virhe säännöllisessä lausekkeessa ”$3” merkin $1 kohdalla: ”$2”",
+ "abusefilter-exception-overridebuiltin": "Laiton sisäänrakennetun muuttujan ”$2” päällekirjoitus merkissä $1.",
+ "abusefilter-exception-outofbounds": "Pyydetty olematonta listaelementtiä $2 (listan koko on $3) merkissä $1.",
+ "abusefilter-exception-notlist": "Pyydetty taulukkoelementtiä ei-taulukolta merkissä $1.",
+ "abusefilter-action-tag": "Merkkaa",
+ "abusefilter-action-throttle": "Rajoita",
+ "abusefilter-action-warn": "Varoita",
+ "abusefilter-action-blockautopromote": "Estä autopromote",
+ "abusefilter-action-block": "Aseta muokkausesto",
+ "abusefilter-action-degroup": "Poista ryhmistä",
+ "abusefilter-action-rangeblock": "Aseta avaruusesto",
+ "abusefilter-action-disallow": "Älä salli",
+ "abusefilter-revert-title": "Peruuta kaikki suodattimen $1 tekemät muutokset",
+ "abusefilter-revert-intro": "Tämä lomake antaa sinun peruuttaa kaikki muutokset, jotka väärinkäyttösuodatin on tehnyt suodattimen $1 ehtojen perusteella.\nKäytä tätä työkalua varoen.",
+ "abusefilter-revert-preview-item": "$1: käyttäjä $2 {{GENDER:$7|käytti}} toimintoa \"$3\" kohteessa $4.\nPeruttavat toimenpiteet ovat: $5 ($6)",
+ "abusefilter-revert-search-legend": "Valitse suodattimen toimenpiteet, jotka haluat peruuttaa",
+ "abusefilter-revert-periodstart": "Aikaväli alkaa:",
+ "abusefilter-revert-periodend": "Aikaväli loppuu:",
+ "abusefilter-revert-search": "Valitse toimenpiteet",
+ "abusefilter-revert-filter": "Suodatin:",
+ "abusefilter-revert-preview-intro": "Alla ovat ne väärinkäyttösuodattimen suorittamat toimenpiteet, jotka peruutetaan tällä toiminnolla.\nTarkista ne huolellisesti ja paina \"{{int:abusefilter-revert-confirm}}\", niin toimenpiteet peruutetaan.",
+ "abusefilter-revert-confirm": "Vahvista",
+ "abusefilter-revert-success": "Olet peruuttanut kaikki toimenpiteet, jotka väärinkäyttösuodatin teki [[Special:AbuseFilter/$1|suodattimen $2]] ehtojen mukaisesti.",
+ "abusefilter-revert-reason": "Kaikkien toimenpiteiden automaattinen peruuttaminen, jotka väärinkäyttösuodatin oli tehnyt suodattimen $1 ehtojen mukaisesti.\nAnnettu syy: $2",
+ "abusefilter-revert-reasonfield": "Syy:",
+ "abusefilter-test": "Kokeile suodatinta aikaisempiin muokkauksiin",
+ "abusefilter-test-intro": "Tällä sivulla voit tutkia alla olevaan kenttään syötetyn suodattimen toimintaa viimeisintä $1 {{PLURAL:$1|muutosta}} vasten.\nLataa olemassa oleva suodatin kirjoittamalla sen tunnistenumero tekstikentän alapuolella olevaan kenttään ja napsauta ”{{int:abusefilter-test-load}}”-painiketta.",
+ "abusefilter-test-legend": "Suodattimen kokeilu",
+ "abusefilter-test-load-filter": "Lataa suodatin numero:",
+ "abusefilter-test-submit": "Kokeile",
+ "abusefilter-test-load": "Lataa",
+ "abusefilter-test-user": "Muutokset, jotka on tehnyt käyttäjä:",
+ "abusefilter-test-period-start": "Muutokset, jotka on tehty jälkeen:",
+ "abusefilter-test-period-end": "Muutokset, jotka on tehty ennen:",
+ "abusefilter-test-page": "Muutokset, jotka on tehty sivulle:",
+ "abusefilter-test-shownegative": "Näytä muutokset, jotka eivät täsmää suodattimen kanssa",
+ "abusefilter-test-syntaxerr": "Suodatin, jonka syötit, sisälsi syntaksivirheen.\nLisätietoja saat napsauttamalla painiketta ”{{int:abusefilter-edit-check}}”.",
+ "abusefilter-test-badtitle": "Syöttämäsi sivun nimi ei kelpaa. Siinä saattaa olla yksi tai useampia sellaisia kirjainmerkkejä, joita ei voi käyttää sivujen nimissä.",
+ "abusefilter-changeslist-examine": "tutki",
+ "abusefilter-examine": "Tutki yksittäisiä muutoksia",
+ "abusefilter-examine-intro": "Tällä sivulla voit tutkia väärinkäyttösuodattimen muuttujia yksittäisen muutoksen suhteen ja testata sitä suodattimilla.",
+ "abusefilter-examine-legend": "Valitse muutokset",
+ "abusefilter-examine-diff": "Eroavaisuuden URL:",
+ "abusefilter-examine-user": "Käyttäjä:",
+ "abusefilter-examine-title": "Sivun nimi:",
+ "abusefilter-examine-submit": "Etsi",
+ "abusefilter-examine-vars": "Tätä muutosta varten luodut muuttujat",
+ "abusefilter-examine-test": "Kokeile tätä muokkausta suodattimeen",
+ "abusefilter-examine-test-button": "Kokeile suodatinta",
+ "abusefilter-examine-match": "Suodatin osui tähän muutokseen.",
+ "abusefilter-examine-nomatch": "Suodatin ei osunut tähän muutokseen.",
+ "abusefilter-examine-syntaxerror": "Suodattimella on virheellinen syntaksi",
+ "abusefilter-examine-notfound": "Pyytämääsi muutosta ei löytynyt.",
+ "abusefilter-examine-incompatible": "Väärinkäyttösuodatin ei tue pyytämiäsi muutoksia",
+ "abusefilter-examine-noresults": "Antamillasi hakuehdoilla ei löytynyt yhtään tulosta.",
+ "abusefilter-topnav": "'''Väärinkäyttösuodattimen valikko'''",
+ "abusefilter-topnav-home": "Etusivu",
+ "abusefilter-topnav-test": "Suodatinsääntöjen testaus",
+ "abusefilter-topnav-examine": "Tutki aiempia muokkauksia",
+ "abusefilter-topnav-log": "Väärinkäyttöloki",
+ "abusefilter-topnav-tools": "Vianjäljitystyökalut",
+ "abusefilter-topnav-import": "Tuo suodatin",
+ "abusefilter-log-name": "Väärinkäyttösuodattimen loki",
+ "abusefilter-log-header": "Tässä lokissa esitetään yhteenveto suodattimiin tehdyistä muutoksista.\nLisätietoja saat suodattimen [[Special:AbuseFilter/history|viimeisimpien muutosten luettelosta]].",
+ "abusefilter-logentry-create": "$1 {{GENDER:$2|loi}} kohteen $4 ($5)",
+ "abusefilter-logentry-modify": "$1 {{GENDER:$2|muutti}} kohdetta $4 ($5)",
+ "abusefilter-log-noresults": "Ei tuloksia",
+ "abusefilter-diff-title": "Versioiden välinen ero",
+ "abusefilter-diff-item": "Kohde",
+ "abusefilter-diff-version": "Versio päivätty $1 {{GENDER:$3|käyttäjältä}} $2.",
+ "abusefilter-diff-info": "Perustiedot",
+ "abusefilter-diff-pattern": "Suodattimen ehdot",
+ "abusefilter-diff-invalid": "Pyydettyjä versioita ei voitu hakea",
+ "abusefilter-diff-backhistory": "Takaisin suodatinhistoriaan",
+ "abusefilter-diff-prev": "Vanhempi muutos",
+ "abusefilter-diff-next": "Uudempi muutos",
+ "abusefilter-import-intro": "Voit käyttää tätä käyttöliittymää suodattimien tuomiseksi muista wikeistä.\nNapsauta ”{{int:abusefilter-edit-export}}” kohdassa ”{{int:abusefilter-edit-tools}}” lähdewikin muokkausnäkymässä.\nKopioi ilmestyvän tekstikentän sisältö ja liitä se tähän tekstikenttään, jonka jälkeen napsauta ”{{int:abusefilter-import-submit}}”.",
+ "abusefilter-import-submit": "Tuo tiedot",
+ "abusefilter-group-default": "Yleinen",
+ "abusefilter-http-error": "Tapahtui HTTP-virhe: $1.",
+ "abusefilter-view-private-submit": "Näytä yksityiskohdat",
+ "abusefilter-view-private": "Näytä yksityiskohdat",
+ "abusefilter-view-private-reason": "Syy yksityiskohtien näyttämiseen:",
+ "abusefilter-log-details-id": "Lokin tunnistenumero",
+ "abusefilter-log-ip-not-available": "Ei saatavissa",
+ "tag-abusefilter-condition-limit": "ehtojen raja-arvo on saavutettu",
+ "apihelp-abusefilterchecksyntax-description": "Tarkista väärinkäyttösuodattimen syntaksi.",
+ "apihelp-abusefilterchecksyntax-example-1": "Tarkasta kelvollisen suodattimen ehtolauserakenne",
+ "apihelp-abusefilterchecksyntax-example-2": "Tarkasta epäkelvon suodattimen ehtolauserakenne",
+ "apihelp-abusefilterevalexpression-description": "Arvioi väärinkäyttösuodattimen lauseketta.",
+ "apihelp-abusefilterevalexpression-param-expression": "Arvioitava lauseke.",
+ "apihelp-abusefilterevalexpression-example-1": "Arvioi yksinkertaista lauseketta",
+ "apihelp-abusefilterunblockautopromote-param-user": "Käyttäjän, jolta haluat poistaa eston, käyttäjänimi.",
+ "apihelp-query+abusefilters-description": "Näytä väärinkäyttösuodatinten yksityiskohdat.",
+ "apihelp-query+abusefilters-example-1": "Luetteloi käytössä olevat julkiset suodattimet",
+ "apihelp-query+abusefilters-example-2": "Näytä joitain tietoja suodattimista",
+ "apihelp-query+abuselog-example-1": "Näytä viimeisimmät lokimerkinnät",
+ "apierror-abusefilter-badsyntax": "Suodattimella on virheellinen syntaksi."
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/fo.json b/www/wiki/extensions/AbuseFilter/i18n/fo.json
new file mode 100644
index 00000000..cae81420
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/fo.json
@@ -0,0 +1,210 @@
+{
+ "@metadata": {
+ "authors": [
+ "EileenSanda"
+ ]
+ },
+ "abusefilter-desc": "Brúkar sjálvvirkandi filtur til rættingar",
+ "abusefilter": "Konfigurasjón av misnýtslufilturi",
+ "abuselog": "Misnýtsluloggur",
+ "abusefilter-intro": "Vælkomin til markamótið til handfaring av misnýtslufilturinum.\nMisnýtslufilturið er ein sjálvvirkandi mekanisma í ritbúnaðinum, sum fremur sjálvvirkandi eftirlit við øllum sum fer fram.\nHetta markamótið vísir ein lista við útgreinaðum filtrum, og ger tað møguligt at broyta tey.",
+ "abusefilter-mustbeeditor": "Av trygdarávum eru tað bert brúkarar við rættindum til at broyta misnýtslufilturið, ið sleppa at brúka hetta markamótið.",
+ "abusefilter-warning": "'''Ávaring:''' Henda handlingin er sjálvvirkandi blivin sædd sum skaðilig.\nRættingar ið ikki eru konstruktivar verða skjótt afturstillaðar, \nog ekstremar ella endurtiknar ikki brúkbarar rættingar fara at føra til at tín IP adressa verður sperrað.\nUm tú meinar, at tað ið tú ger er konstuktivt, so kanst tú goyma enna einaferð fyri at vátta tað.\nEin stutt frágreiðing um tann misnýtsluregulin, ið tín handling passaði saman við er: $1",
+ "abusefilter-disallowed": "Henda gerð er sjálvvirkandi blivin fráboðað sum skaðilig, og verður tí ikki loyvd.\nUm tú meinar, at tað ið tú gjørdi var brúkbart, vinarliga boða so einum administatori frá um tað ið tú ætlaði tær at gera.\nEin stutt frágreiðing um misnýtsluregulin, sum tín gerð passaði saman við er: $1",
+ "abusefilter-blocked-display": "Tað ið tú gjørdi er sjálvvirkandi blivið identifiserað sum skaðiligt, \nog tú sleppur ikki at fremja tað í verki.\nHarumframt, fyri at verja {{SITENAME}}, er tín brúkarakonta og allar IP adressur, sum kunnu setast í samband við hana, blivin sperrað, so tú ikki sleppur at rætta.\nUm hetta er hent av misgáum, vinarliga set teg so í samband við ein administrator.\nEin stutt frágreiðing um tað slagið av misnýtslu, ið tín handling passaði saman við er: $1",
+ "abusefilter-degrouped": "Henda handlingin er sjálvvirkandi blivin skrásett sum skaðilig.\nTí varð hon ikki loyvd, og sum avleiðing av at tín konta er undir illgruna fyri at vera misbrúkt, hevur kontan hjá tær mist øll rættindi.\nUm tú heldur, at hetta er ein feilur, vinarliga set teg í samband við ein embætismann (byrokrat) har ið tú greiður frá um hesa hending, so kann tað henda, at tú fært tíni rættindi aftur.\nHer er ein stutt frágreiðing av misnýtsluregluni, ið tín handling útloysti: $1",
+ "abusefilter-blocker": "Misnýtslufiltur",
+ "abusefilter-blockreason": "Sjálvvirkandi sperrað av misnýtslufilturi.\nFrágreiðing av passandi reglu: $1",
+ "abusefilter-degroupreason": "Rættindi sjálvvirkandi tikin burtur av misnýtslufilturi.\nReglu frágreiðing: $1",
+ "abusefilter-accountreserved": "Hetta konto navnið er bert til nýtslu hjá misnýtslu filturinum.",
+ "right-abusefilter-modify": "Broyt misnýtslu filturini",
+ "right-abusefilter-view": "Vís misnýtslu filtur",
+ "right-abusefilter-log": "Vís misnýtslu loggin",
+ "right-abusefilter-log-detail": "Vís í smálutum postar í misnýtslu loggunum",
+ "right-abusefilter-private": "Vís privat dáta í misnýtslulogginum",
+ "right-abusefilter-modify-restricted": "Broyt misnýtslu filturini við avmarkaðum gerningum",
+ "right-abusefilter-revert": "Afturrulla allar broytingar sum eitt ávíst misnýtslufiltur hevur gjørt",
+ "right-abusefilter-view-private": "Vís misnýtslu filtur markaði sum privat",
+ "right-abusefilter-log-private": "Vís loggpostar frá misnýtslufiltrum, sum eru markað sum privat",
+ "right-abusefilter-hide-log": "Fjal postar í misnýtslu logginum",
+ "right-abusefilter-hidden-log": "Vís fjaldar postar í misnýtslu logginum",
+ "right-abusefilter-modify-global": "Upprætta ella broyt global misnýtslufiltur",
+ "action-abusefilter-modify": "broyt misnýtslu filtur",
+ "action-abusefilter-view": "vís misnýtslufiltur",
+ "action-abusefilter-log": "vís misnýtslu loggin",
+ "action-abusefilter-log-detail": "vís smálutir í misnýtslu loggunum",
+ "action-abusefilter-private": "vís privat dáta í misnýtslu logginum",
+ "abusefilter-log": "Loggur fyri misnýtslufiltur",
+ "abusefilter-log-summary": "Hesin loggurin vísir ein lista við øllum hendingum, sum misnýtslufilturi hevur fangað.",
+ "abusefilter-log-search": "Leita í misnýtslulogginum",
+ "abusefilter-log-search-user": "Brúkari:",
+ "abusefilter-log-search-filter": "Filtur ID (atskilt við lodrøttum strikum):",
+ "abusefilter-log-search-title": "Heiti:",
+ "abusefilter-log-search-wiki": "Wiki:",
+ "abusefilter-log-search-submit": "Leita",
+ "abusefilter-log-entry": "$1: $2 aktiveraði eitt misnýtslufiltur, við at fremja hesa handling \"$3\" á $4.\nFyrivarni tikið: $5;\nFilturfrágreiðing: $6",
+ "abusefilter-log-detailedentry-global": "globalt filtur $1",
+ "abusefilter-log-detailedentry-local": "filtur $1",
+ "abusefilter-log-detailslink": "smálutir",
+ "abusefilter-log-diff": "munur",
+ "abusefilter-log-hidelink": "tilpassa sjónligheit",
+ "abusefilter-log-details-legend": "Smálutir um loggpunkt $1",
+ "abusefilter-log-details-val": "Virði",
+ "abusefilter-log-details-private": "Privat dáta",
+ "abusefilter-log-details-ip": "Upphavs IP adressa",
+ "abusefilter-log-noactions": "ongin",
+ "abusefilter-log-details-diff": "Broytingar gjørdar í rætting",
+ "abusefilter-log-linkoncontribs": "Misnýtsluloggur",
+ "abusefilter-log-linkoncontribs-text": "Misnýtslulogur fyri henda brúkaran",
+ "abusefilter-log-hidden": "(postur fjaldur)",
+ "abusefilter-log-hidden-implicit": "(fjalt, tí at versjónin er blivin sletttað)",
+ "abusefilter-log-cannot-see-details": "Tú hevur ikki loyvi til at síggja smálutir um henda postin.",
+ "abusefilter-log-details-hidden": "Tú kanst ikki síggja smálutir um henda postin, tí hann verður ikki vístur alment.",
+ "abusefilter-log-hide-legend": "Fjal logghandling",
+ "abusefilter-log-hide-id": "Innritingar ID:",
+ "abusefilter-log-hide-hidden": "Fjal henda postin fyri almennum sýningum",
+ "abusefilter-log-hide-reason": "Orsøk:",
+ "abusefilter-log-hide-forbidden": "Tú hevur ikki loyvi til at fjala misnýtsluloggpostar.",
+ "abusefilter-logentry-suppress": "fjald \"[[$1]]\"",
+ "abusefilter-logentry-unsuppress": "gjørdi \"[[$1]]\" sjónligt aftur",
+ "logentry-abusefilter-hit": "$1 útloysti $4, sum førir til handling \"$5\" á $3. Tiltøk sett í verk: $6 ($7)",
+ "abusefilter-management": "Stýring av misnýtslufilturi",
+ "abusefilter-list": "Øll filtur",
+ "abusefilter-list-id": "Filtur ID",
+ "abusefilter-list-status": "Status",
+ "abusefilter-list-public": "Almenn frágreiðing",
+ "abusefilter-list-consequences": "Avleiðingar",
+ "abusefilter-list-visibility": "Sjónligheit",
+ "abusefilter-list-hitcount": "Treff-teljari",
+ "abusefilter-list-edit": "Rætta",
+ "abusefilter-list-details": "Smálutir",
+ "abusefilter-list-limit": "Mongd pr. síðu:",
+ "abusefilter-list-lastmodified": "Seinast broytt",
+ "abusefilter-list-group": "Filturbólkur",
+ "abusefilter-hidden": "Privat",
+ "abusefilter-unhidden": "Alment",
+ "abusefilter-enabled": "Virkið",
+ "abusefilter-deleted": "Er strikað",
+ "abusefilter-disabled": "Óvirkið",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|hit|hits}}",
+ "abusefilter-new": "Ger eitt nýtt filtur",
+ "abusefilter-return": "Far aftur til handfaran av filturi",
+ "abusefilter-status-global": "Globalt",
+ "abusefilter-list-options": "Møguleikar",
+ "abusefilter-list-options-deleted": "Slettaði filtur:",
+ "abusefilter-list-options-deleted-only": "Vís bara slettaði filtur",
+ "abusefilter-list-options-deleted-hide": "Krógva slettaði filtur",
+ "abusefilter-list-options-deleted-show": "Tak slettaði filtur við",
+ "abusefilter-list-options-scope": "Vís filtur:",
+ "abusefilter-list-options-scope-local": "Bert lokalar ásetingar",
+ "abusefilter-list-options-scope-global": "Bert alheims ásetingar",
+ "abusefilter-list-options-scope-all": "Lokalar og globalar ásetingar",
+ "abusefilter-list-options-disabled": "Óvirkin filtur:",
+ "abusefilter-list-options-hidedisabled": "Goym óvirkin filtur",
+ "abusefilter-list-options-submit": "Dagfør",
+ "abusefilter-tools-text": "Her eru nøkur tól, sum kunnu vera brúkbar til at formulera og feilsøkja misnýtslufiltur.",
+ "abusefilter-tools-expr": "Úttrykstestari",
+ "abusefilter-tools-submitexpr": "Evaluera",
+ "abusefilter-tools-reautoconfirm": "Endurskapa status sum sjálvvirkandi váttaður brúkari",
+ "abusefilter-tools-reautoconfirm-user": "Brúkari:",
+ "abusefilter-tools-reautoconfirm-submit": "Endur-skráset brúkara",
+ "abusefilter-reautoconfirm-none": "Hasin brúkarin hevur ikki fingið {{GENDER:$1|sín|sín|teirra}} status sum váttaður brúkari strikaðan.",
+ "abusefilter-reautoconfirm-notallowed": "Tú hevur ikki loyvi til at endurskapa status sum sjálvvirkandi váttaður brúkari.",
+ "abusefilter-reautoconfirm-done": "Status hjá kontuni sum sjálvvirkandi váttaður brúkari er nú endurstovnað",
+ "abusefilter-status": "Av seinastu $1 {{PLURAL:$1|handlingini|handlingunum}}, $2 ($3%) {{PLURAL:$2|hevur|hava}} nátt markið $4, og $5 ($6%) {{PLURAL:$5|hevur|hava}} útloyst eitt av filtrunum, sum í løtuni er gjørt virkið.",
+ "abusefilter-edit": "Rætta misnýtslufiltur",
+ "abusefilter-edit-subtitle": "Rætta filtur $1",
+ "abusefilter-edit-subtitle-new": "Stovna filtur",
+ "abusefilter-edit-status-label": "Hagtøl:",
+ "abusefilter-edit-new": "Nýtt filtur",
+ "abusefilter-edit-save": "Goym filtur",
+ "abusefilter-edit-id": "Filtur ID:",
+ "abusefilter-edit-flags": "Fløgg:",
+ "abusefilter-edit-enabled": "Ger hetta filtrið virkið",
+ "abusefilter-edit-deleted": "Merk sum slettað",
+ "abusefilter-edit-notes": "Viðmerkingar:",
+ "abusefilter-edit-lastmod": "Filturið seinast broytt:",
+ "abusefilter-edit-lastmod-text": "$1 av $2",
+ "abusefilter-edit-hitcount": "Filturtreff:",
+ "abusefilter-edit-action-blockautopromote": "Tak burtur støðu brúkarans sum sjálvvirkandi váttaður brúkari",
+ "abusefilter-edit-action-degroup": "Tak brúkaran burtur frá øllum bólkum við framíhjárættindum",
+ "abusefilter-edit-action-block": "Sperra brúkaran og/ella IP adressuna, so viðkomandi ikki sleppur at skriva",
+ "abusefilter-edit-throttle-period": "Tíðarskeið:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|sekund|sekundir}}",
+ "abusefilter-edit-warn-other": "Onnur boð",
+ "abusefilter-edit-warn-actions": "Handlingar:",
+ "abusefilter-edit-warn-preview": "Forskoðan av valdu boðum",
+ "abusefilter-edit-warn-edit": "Stovna/rætta valda boði",
+ "abusefilter-edit-viewhistory": "Vís søguna hjá hesum filturi",
+ "abusefilter-edit-history": "Søga:",
+ "abusefilter-edit-check": "Kanna setningsbygnaðin",
+ "abusefilter-edit-badfilter": "Nevnda filturið er ikki til.",
+ "abusefilter-edit-tools": "Tól:",
+ "abusefilter-edit-builder-op-comparison-equal": "Tað sama sum (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Ikki tað sama sum (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "Minni enn (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Størri enn (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Minni enn ella tað sama sum (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Størri enn ella tað sama sum (>=)",
+ "abusefilter-edit-builder-op-bool-not": "Ikki (!)",
+ "abusefilter-edit-builder-op-bool-and": "Og (&)",
+ "abusefilter-edit-builder-op-bool-or": "Ella (|)",
+ "abusefilter-edit-builder-vars-action": "Handling",
+ "abusefilter-edit-builder-vars-newsize": "Nýggj síðustødd",
+ "abusefilter-edit-builder-vars-oldsize": "Gomul síðustødd",
+ "abusefilter-edit-builder-vars-removedlines": "Linjur tiknar burtur í rætting",
+ "abusefilter-edit-builder-vars-summary": "Samandráttur av rætting",
+ "abusefilter-edit-builder-vars-article-id": "Síðu ID",
+ "abusefilter-edit-builder-vars-article-ns": "Navnarúmið hjá síðuni",
+ "abusefilter-edit-builder-vars-article-text": "Síðuheiti (uttan navnarúm)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Alt síðuheitið",
+ "abusefilter-edit-builder-vars-article-views": "Síðuvísingar",
+ "abusefilter-edit-builder-vars-user-editcount": "Tal av rættingum hjá brúkara",
+ "abusefilter-edit-builder-vars-user-age": "Kontoaldur",
+ "abusefilter-edit-builder-vars-user-name": "Navn á brúkarakonto",
+ "abusefilter-edit-builder-vars-user-rights": "Rættindi ið ein brúkari hevur",
+ "abusefilter-edit-builder-vars-user-blocked": "Hvørt brúkarin er sperraður",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "Tíðspunktið tá ið teldupostadressan varð váttað",
+ "abusefilter-edit-builder-vars-recent-contributors": "Seinastu tíggju brúkararnir ið góvu sítt íkast til síðuna",
+ "abusefilter-edit-builder-vars-first-contributor": "Fyrsti brúkarin ið skrivaði á síðuni",
+ "abusefilter-edit-builder-vars-restrictions-edit": "Rætta verjustøðuna hjá síðuni",
+ "abusefilter-edit-builder-vars-restrictions-move": "Flyt verjustøðuna hjá síðuni",
+ "abusefilter-edit-builder-vars-restrictions-create": "Upprætta verju av síðuni",
+ "abusefilter-edit-builder-vars-old-links": "Leinkjur á síðuni, áðrenn rættingina",
+ "abusefilter-edit-builder-vars-minor-edit": "Hvørt rættingin er merkt sum smárætting ella ikki",
+ "abusefilter-edit-builder-vars-file-size": "Støddin á fíluni í bytes",
+ "abusefilter-history-foruser": "Rættingar framdar av $1",
+ "abusefilter-history-hidden": "Fjalt",
+ "abusefilter-history-enabled": "Gjørt virkið",
+ "abusefilter-history-global": "Globalt",
+ "abusefilter-history-timestamp": "Tíð",
+ "abusefilter-history-user": "Brúkari",
+ "abusefilter-history-public": "Almen filturfrágreiðing",
+ "abusefilter-history-flags": "Flagg",
+ "abusefilter-history-filter": "Filturregul",
+ "abusefilter-history-comments": "Viðmerkingar",
+ "abusefilter-history-actions": "Handlingar",
+ "abusefilter-history-deleted": "Strikað",
+ "abusefilter-history-filterid": "Filtur",
+ "abusefilter-history-select-legend": "Víðka leitingina",
+ "abusefilter-history-select-user": "Brúkari:",
+ "abusefilter-history-diff": "Broytingar",
+ "abusefilter-exception-unexpectedatend": "Óvæntað \"$2\" við teknið $1.",
+ "abusefilter-exception-expectednotfound": "Væntaði ein $2 við nummar $1, varð ikki funnið (fann $3 $4 í staðin).",
+ "abusefilter-action-tag": "Frámerki",
+ "abusefilter-action-throttle": "Avmarking av broytingarferðini",
+ "abusefilter-action-warn": "Ávara",
+ "abusefilter-action-block": "Sperra",
+ "abusefilter-action-degroup": "Tak burtur frá bólkum",
+ "abusefilter-action-disallow": "Nokta",
+ "abusefilter-revert-title": "Afturstilla allar broytingar hjá filturinum $1",
+ "abusefilter-revert-periodstart": "Tíðarskeið byrjar:",
+ "abusefilter-revert-periodend": "Tíðarskeið endar:",
+ "abusefilter-revert-confirm": "Vátta",
+ "abusefilter-revert-reasonfield": "Orsøk:",
+ "abusefilter-examine-legend": "Vel broytingar",
+ "abusefilter-examine-diff": "Diff-URL:",
+ "abusefilter-examine-user": "Brúkari:",
+ "abusefilter-examine-title": "Síðuheiti:",
+ "abusefilter-examine-submit": "Leita"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/fr.json b/www/wiki/extensions/AbuseFilter/i18n/fr.json
new file mode 100644
index 00000000..d377e245
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/fr.json
@@ -0,0 +1,560 @@
+{
+ "@metadata": {
+ "authors": [
+ "ChrisPtDe",
+ "Cquoi",
+ "Crochet.david",
+ "DavidL",
+ "Dr Brains",
+ "Gomoko",
+ "Grondin",
+ "Hello71",
+ "IAlex",
+ "Isildur",
+ "Jean-Frédéric",
+ "Kropotkine 113",
+ "Ltrlg",
+ "McDutchie",
+ "Metroitendo",
+ "Peter17",
+ "PieRRoMaN",
+ "Robby",
+ "Sherbrooke",
+ "Tititou36",
+ "Urhixidur",
+ "VIGNERON",
+ "Verdy p",
+ "Wyz",
+ "Zetud",
+ "Orlodrim",
+ "0x010C",
+ "Nicolapps",
+ "Linedwell",
+ "Hercule",
+ "Macofe",
+ "TomT0m",
+ "Wladek92",
+ "Elfix",
+ "Matma Rex",
+ "Thibaut120094"
+ ]
+ },
+ "abusefilter-desc": "Applique des heuristiques automatiques aux modifications",
+ "abusefilter": "Configuration du filtre antiabus",
+ "abuselog": "Journal des filtres antiabus",
+ "abusefilter-intro": "Bienvenue dans l'interface de gestion des filtres antiabus.\nLe filtre antiabus est un mécanisme logiciel automatisé qui permet d'appliquer des heuristiques prédéfinies à toutes les actions.\nCette interface présente une liste des filtres définis, et donne la possibilité de les modifier.",
+ "abusefilter-mustbeeditor": "Pour des raisons de sécurité, seuls les utilisateurs avec le droit de modifier les filtres antiabus peuvent utiliser cette interface.",
+ "abusefilter-warning": "'''Avertissement :''' cette action a été automatiquement identifiée comme nuisible.\nLes actions non constructives seront rapidement annulées et les modifications non constructives répétées ou outrageantes provoqueront le blocage de votre compte ou de votre adresse IP.\nSi vous estimez que cette action est constructive, vous pouvez la soumettre une nouvelle fois pour la confirmer.\nVoici une brève description de la règle de filtrage antiabus ayant détecté votre action : $1",
+ "abusefilter-disallowed": "Cette action a été automatiquement identifiée comme nuisible, et a donc été empêchée.\nSi vous pensez que votre action était constructive, veuillez contacter un administrateur et l'informer de ce que vous avez essayé de faire.\nVoici une brève description de la règle de filtrage antiabus ayant détecté votre action : $1",
+ "abusefilter-blocked-display": "Cette action a été automatiquement identifée comme nuisible\net vous avez déjà été empêché de l'exécuter.\nDe plus, pour protéger {{SITENAME}}, votre compte utilisateur et toutes les adresses IP associées ont été bloqués contre toute modification.\nSi ceci est dû à une erreur, veuillez contacter un administrateur.\nVoici une brève description de la règle de filtrage antiabus ayant détecté votre action : $1",
+ "abusefilter-degrouped": "Cette action a été automatiquement identifiée comme nuisible.\nEn conséquence, elle a été interdite et, puisque votre compte est suspecté de compromission, tous vos droits ont été retirés.\nSi vous pensez que cela est dû à une erreur, veuillez contacter un bureaucrate avec une explication de cette action afin de rétablir vos droits.\nVoici une brève description de la règle de filtrage antiabus ayant détecté votre action : $1",
+ "abusefilter-autopromote-blocked": "Cette action a été automatiquement identifiée comme nuisible et a donc été empêchée.\nEn conséquence, à titre de mesure de sécurité, quelques privilèges accordés d'habitude pour les comptes établis ont été retirés temporairement de votre compte.\nVoici une brève description de la règle de filtrage antiabus ayant détecté votre action : $1",
+ "abusefilter-blocker": "Filtre antiabus",
+ "abusefilter-blockreason": "Bloqué automatiquement par le filtre antiabus.\nDescription de la règle associée : $1",
+ "abusefilter-degroupreason": "Droits automatiquement retirés par le filtre antiabus.\nDescription de la règle associée : $1",
+ "abusefilter-accountreserved": "Ce nom de compte est réservé à l'usage du filtre antiabus.",
+ "right-abusefilter-modify": "Modifier les filtres antiabus",
+ "right-abusefilter-view": "Voir les filtres antiabus",
+ "right-abusefilter-log": "Voir le journal des filtres antiabus",
+ "right-abusefilter-log-detail": "Voir les entrées détaillées du journal antiabus",
+ "right-abusefilter-private": "Voir les données privées dans le journal antiabus",
+ "right-abusefilter-private-log": "Afficher les détails confidentiels du journal d’accès de AbuseFilter",
+ "right-abusefilter-modify-restricted": "Modifier les filtres antiabus qui ont des actions restreintes",
+ "right-abusefilter-revert": "Révoquer toutes les modifications effectuées par un filtre antiabus donné",
+ "right-abusefilter-view-private": "Voir les filtres d'abus marqués comme privé",
+ "right-abusefilter-log-private": "Voir les entrées du journal des filtres antiabus marquées comme privées",
+ "right-abusefilter-hide-log": "Masquer des entrées dans le journal des abus",
+ "right-abusefilter-hidden-log": "Voir les entrées masquées du journal antiabus",
+ "right-abusefilter-modify-global": "Créer ou modifier les filtres globaux d'abus",
+ "action-abusefilter-modify": "modifier les filtres antiabus",
+ "action-abusefilter-view": "voir les filtres antiabus",
+ "action-abusefilter-log": "voir le journal des filtres antiabus",
+ "action-abusefilter-log-detail": "voir les entrées détaillées du journal des filtres antiabus",
+ "action-abusefilter-private": "voir les données privées dans le journal des filtres antiabus",
+ "action-abusefilter-private-log": "afficher le journal des accès aux détails confidentiels de AbuseFilter",
+ "action-abusefilter-modify-restricted": "modifier les filtres antiabus avec des actions restreintes",
+ "action-abusefilter-revert": "révoquer toutes les modifications selon un filtre antiabus donné",
+ "action-abusefilter-view-private": "voir les filtres antiabus marqués comme privés",
+ "action-abusefilter-log-private": "voir les entrées du journal des filtres antiabus marqués comme privés",
+ "abusefilter-log": "Journal des déclenchements du filtre antiabus",
+ "abusefilter-log-summary": "Ce journal affiche une liste des actions détectées par les filtres.",
+ "abusefilter-log-search": "Rechercher dans le journal des filtres antiabus",
+ "abusefilter-log-search-user": "Utilisateur :",
+ "abusefilter-log-search-filter": "IDs de filtre (séparés par des barres verticales) :",
+ "abusefilter-log-search-title": "Titre :",
+ "abusefilter-log-search-wiki": "Wiki :",
+ "abusefilter-log-search-impact": "Impact:",
+ "abusefilter-log-search-impact-all": "Toutes les actions",
+ "abusefilter-log-search-impact-saved": "Modifications sauvegardées uniquement",
+ "abusefilter-log-search-impact-not-saved": "Sans sauvegarder les modifications",
+ "abusefilter-log-search-entries-label": "Visibilité :",
+ "abusefilter-log-search-entries-all": "Toutes les entrées",
+ "abusefilter-log-search-entries-hidden": "Entrées masquées uniquement",
+ "abusefilter-log-search-entries-visible": "Entrées visibles uniquement",
+ "abusefilter-log-search-action-taken-label": "Mesure prise :",
+ "abusefilter-log-search-action-taken-any": "N’importe laquelle",
+ "abusefilter-log-search-submit": "Rechercher",
+ "abusefilter-log-entry": "$1 : $2 {{GENDER:$8:a déclenché}} un filtre antiabus, en {{GENDER:$8|effectuant}} l’action « $3 » sur $4.\nActions entreprises : $5 ;\nDescription du filtre : $6",
+ "abusefilter-log-entry-withdiff": "$1: $2 {{GENDER:$8:a déclenché}} un filtre antiabus, {{GENDER:$8|en effectuant}} l’action « $3 » sur $4.\nAction entreprise : $5  ;\nDescription du filtre : $6 ($7)",
+ "abusefilter-log-detailedentry-meta": "$1 : $2 {{GENDER:$9|a déclenché}} le $3, {{GENDER:$9|en effectuant}} l’action « $4 » sur $5.\nActions entreprises : $6 ;\nDescription du filtre : $7 ($8)",
+ "abusefilter-log-detailedentry-global": "filtre global $1",
+ "abusefilter-log-detailedentry-local": "filtre antiabus $1",
+ "abusefilter-log-detailslink": "détails",
+ "abusefilter-log-diff": "diff",
+ "abusefilter-log-hidelink": "ajuster la visibilité",
+ "abusefilter-log-details-legend": "Détails pour l'entrée $1 du journal",
+ "abusefilter-log-details-var": "Variable",
+ "abusefilter-log-details-val": "Valeur",
+ "abusefilter-log-details-vars": "Paramètres de l'action",
+ "abusefilter-log-details-private": "Données confidentiels du journal",
+ "abusefilter-log-details-ip": "Adresse IP d'origine",
+ "abusefilter-log-details-checkuser": "Vérifier l’utilisateur",
+ "abusefilter-log-noactions": "néant",
+ "abusefilter-log-details-diff": "Changements faits lors de la modification",
+ "abusefilter-log-linkoncontribs": "journal des abus",
+ "abusefilter-log-linkoncontribs-text": "Journal des abus de ce{{GENDER:$1|t utilisateur|tte utilisatrice}}",
+ "abusefilter-log-hidden": "(entrée masquée)",
+ "abusefilter-log-hidden-implicit": "(masquée car la version a été supprimée)",
+ "abusefilter-log-cannot-see-details": "Vous n'avez pas le droit de voir les détails de cette entrée.",
+ "abusefilter-log-cannot-see-private-details": "Vous n’avez pas le droit de voir les détails confidentiels de cette entrée.",
+ "abusefilter-log-nonexistent": "Il n’existe pas d’entrée associée à l’identifiant spécifié.",
+ "abusefilter-log-details-hidden": "Vous ne pouvez pas afficher les détails pour cette entrée parce qu'elle est cachée à la vue du public.",
+ "abusefilter-log-private-not-included": "Un ou plusieurs des IDs de filtre que vous avez spécifiés sont privés. Comme vous n’êtes pas autorisé à voir les détails des filtres privés, ces filtres n’ont pas été inclus dans la recherche.",
+ "abusefilter-log-hide-legend": "Masquer l'entrée dans les journaux",
+ "abusefilter-log-hide-id": "Identifiant de l'entrée de journal :",
+ "abusefilter-log-hide-hidden": "Masquer cette entrée à la vue du public",
+ "abusefilter-log-hide-reason": "Motif :",
+ "abusefilter-log-hide-reason-other": "Motif autre ou supplémentaire :",
+ "abusefilter-log-hide-forbidden": "Vous n'avez pas le droit de masquer des entrées du journal des abus.",
+ "abusefilter-logentry-suppress": "a masqué [[$1]]",
+ "abusefilter-logentry-unsuppress": "a démasqué [[$1]]",
+ "logentry-abusefilter-hit": "$1 {{GENDER:$2|a déclenché}} $4, {{GENDER:$2|en effectuant}} l’action « $5 » sur $3. Actions entreprises : $6 ($7)",
+ "log-action-filter-abusefilter": "Type de modification de filtre :",
+ "log-action-filter-abusefilter-create": "Création de nouveaux filtres",
+ "log-action-filter-abusefilter-modify": "Filtrer les notifications",
+ "logentry-abusefilterprivatedetails-access": "$1 {{GENDER:$2|a accédé}} aux détails confidentiels pour $3",
+ "abusefilterprivatedetails-log-name": "Détails confidentiels du journal d’accès de AbuseFilter",
+ "abusefilter-management": "Gestion du filtre antiabus",
+ "abusefilter-list": "Tous les filtres",
+ "abusefilter-list-id": "N° filtre",
+ "abusefilter-list-pattern": "Motif",
+ "abusefilter-list-status": "État",
+ "abusefilter-list-public": "Description publique",
+ "abusefilter-list-consequences": "Conséquences",
+ "abusefilter-list-visibility": "Visibilité",
+ "abusefilter-list-hitcount": "Nombre de détections",
+ "abusefilter-list-edit": "Modifier",
+ "abusefilter-list-details": "Détails",
+ "abusefilter-list-limit": "Nombre par page :",
+ "abusefilter-list-lastmodified": "Dernière modification",
+ "abusefilter-list-group": "Groupe du filtre",
+ "abusefilter-hidden": "Privé",
+ "abusefilter-unhidden": "Public",
+ "abusefilter-enabled": "Activé",
+ "abusefilter-deleted": "Supprimé",
+ "abusefilter-disabled": "Désactivé",
+ "abusefilter-hitcount": "$1 détection{{PLURAL:$1||s}}",
+ "abusefilter-new": "Créer un nouveau filtre",
+ "abusefilter-return": "Revenir à la gestion des filtres",
+ "abusefilter-status-global": "Global",
+ "abusefilter-list-options": "Options",
+ "abusefilter-list-options-deleted": "Filtres supprimés :",
+ "abusefilter-list-options-deleted-only": "Ne montrer que les filtres supprimés",
+ "abusefilter-list-options-deleted-hide": "Masquer les filtres supprimés",
+ "abusefilter-list-options-deleted-show": "Inclure les filtres supprimés",
+ "abusefilter-list-options-scope": "Afficher les filtres :",
+ "abusefilter-list-options-scope-local": "Règles locales uniquement",
+ "abusefilter-list-options-scope-global": "Règles globales uniquement",
+ "abusefilter-list-options-scope-all": "Règles locales et globales",
+ "abusefilter-list-options-disabled": "Filtres désactivés :",
+ "abusefilter-list-options-hidedisabled": "Masquer les filtres désactivés",
+ "abusefilter-list-options-searchfield": "Rechercher dans les règles :",
+ "abusefilter-list-options-searchpattern": "Insérer un motif",
+ "abusefilter-list-options-searchoptions": "Mode de recherche :",
+ "abusefilter-list-options-search-like": "Requête simple",
+ "abusefilter-list-options-search-rlike": "Expression régulière",
+ "abusefilter-list-options-search-irlike": "Expression régulière insensible à la casse",
+ "abusefilter-list-regexerror": "Une erreur s’est produite lors de la recherche : Erreur de syntaxe de l’expression régulière.",
+ "abusefilter-list-options-submit": "Mettre à jour",
+ "abusefilter-tools-text": "Voici quelques outils qui peuvent être utiles dans la formulation et le déboguage des filtres antiabus.",
+ "abusefilter-tools-expr": "Testeur d'expressions",
+ "abusefilter-tools-submitexpr": "Évaluer",
+ "abusefilter-tools-reautoconfirm": "Rétablir l'état autoconfirmé",
+ "abusefilter-tools-reautoconfirm-user": "Utilisateur :",
+ "abusefilter-tools-reautoconfirm-submit": "Autoconfirmer à nouveau",
+ "abusefilter-reautoconfirm-none": "Le statut autoconfirmé de {{GENDER:$1|cet utilisateur|cette utilisatrice}} n'a pas été suspendu.",
+ "abusefilter-reautoconfirm-notallowed": "Vous ne pouvez pas rétablir l'état autoconfirmé.",
+ "abusefilter-reautoconfirm-done": "L'état autoconfirmé du compte utilisateur a été rétabli",
+ "abusefilter-status": "{{PLURAL:$1|Dans la dernière action|Parmi les $1 dernières actions}}, $2 ($3 %) {{PLURAL:$2|a|ont}} atteint la limite des $4 conditions autorisées. Et $5 ($6 %) {{PLURAL:$5|a été détectée|ont été détectées}} par l'un des filtres actuellement activés.",
+ "abusefilter-edit": "Modifier le filtre d'abus",
+ "abusefilter-edit-subtitle": "Modification du filtre $1",
+ "abusefilter-edit-subtitle-new": "Créer un filtre",
+ "abusefilter-edit-oldwarning": "<strong>Vous êtes en train de modifier une ancienne version de ce filtre.\nLes statistiques affichées concernent la version la plus récente de celui-ci.\nSi vous enregistrez vos modifications, vous allez écraser tous les changements intervenus depuis la version que vous modifiez.</strong> &bull;\n[[Special:AbuseFilter/history/$2|Revenir à l’historique de ce filtre]]",
+ "abusefilter-edit-status-label": "Statistiques :",
+ "abusefilter-edit-status": "{{PLURAL:$1|Dans la dernière action|Parmi les $1 dernières actions}}, ce filtre a été déclenché $2 fois ($3 %).",
+ "abusefilter-edit-status-profile": "{{PLURAL:$1|Dans la dernière action|Parmi les $1 dernières actions}}, ce filtre a été déclenché $2 fois ($3 %).\nEn moyenne, la durée d'exécution de ce filtre est de $4 ms et il utilise $5 condition{{PLURAL:$5||s}} de la limite des conditions.",
+ "abusefilter-edit-throttled-warning": "'''Attention :''' Ce filtre a été marqué automatiquement comme nuisible. Par mesure de sûreté, les actions suivantes ne seront pas exécutées ($1). Veuillez relire et [[mw:Extension:AbuseFilter/Conditions|optimiser]] vos conditions pour supprimer cette restriction",
+ "abusefilter-edit-new": "Nouveau filtre",
+ "abusefilter-edit-save": "Enregistrer le filtre",
+ "abusefilter-edit-id": "N° filtre :",
+ "abusefilter-edit-switch-editor": "Basculer d’éditeur",
+ "abusefilter-edit-description": "Description :\n: ''(visible publiquement)''",
+ "abusefilter-edit-field-description": "description",
+ "abusefilter-edit-group": "Groupe du filtre :",
+ "abusefilter-edit-flags": "Drapeaux :",
+ "abusefilter-edit-enabled": "Activer ce filtre",
+ "abusefilter-edit-deleted": "Marquer comme supprimé",
+ "abusefilter-edit-hidden": "Cacher les détails de ce filtre à la vue publique",
+ "abusefilter-edit-global": "Filtre global",
+ "abusefilter-edit-rules": "Conditions :",
+ "abusefilter-edit-field-conditions": "conditions",
+ "abusefilter-edit-notes": "Notes :",
+ "abusefilter-edit-lastmod": "Dernière modification du filtre :",
+ "abusefilter-edit-lastmod-text": "$1 par $2",
+ "abusefilter-edit-hitcount": "Nombre de détections du filtre :",
+ "abusefilter-edit-consequences": "Actions entreprises si élément trouvé",
+ "abusefilter-edit-action-warn": "Déclencher ces actions après avoir donné un avertissement à l'utilisateur",
+ "abusefilter-edit-action-disallow": "Empêcher l'utilisateur d'effectuer l'action en question",
+ "abusefilter-edit-action-blockautopromote": "Révoquer l'état autoconfirmé du compte utilisateur",
+ "abusefilter-edit-action-degroup": "Retirer l'utilisateur de tous les groupes privilégiés",
+ "abusefilter-edit-action-block": "Bloquer en écriture l’utilisateur ou l’adresse IP",
+ "abusefilter-edit-action-blocktalk": "Empêcher l’utilisateur ou l’adresse IP de modifier sa propre page de discussion",
+ "abusefilter-edit-action-throttle": "Déclencher les actions uniquement si l'utilisateur a dépassé un taux limite",
+ "abusefilter-edit-action-rangeblock": "Bloquer la plage IP respective d’où provient l’utilisateur.",
+ "abusefilter-edit-action-tag": "Baliser la modification pour une relecture ultérieure.",
+ "abusefilter-edit-throttle-count": "Nombre d'actions autorisées :",
+ "abusefilter-edit-throttle-period": "Laps de temps :",
+ "abusefilter-edit-throttle-seconds": "$1 seconde{{PLURAL:$1||s}}",
+ "abusefilter-edit-throttle-groups": "Grouper la modération par :\n: ''(un par ligne, séparé par des virgules)''",
+ "abusefilter-edit-warn-message": "Message système à utiliser pour l'avertissement :",
+ "abusefilter-edit-warn-other": "Autre message",
+ "abusefilter-edit-warn-other-label": "Nom de page d'un autre message\n: ''(sans le préfixe MediaWiki)''",
+ "abusefilter-edit-warn-actions": "Actions :",
+ "abusefilter-edit-warn-preview": "Prévisualiser le message sélectionné",
+ "abusefilter-edit-warn-edit": "Créer ou modifier le message sélectionné",
+ "abusefilter-edit-tag-tag": "[[Special:Tags|Balises]] à appliquer (une par ligne) :",
+ "abusefilter-edit-block-anon-durations": "Durée de blocage pour les utilisateurs anonymes :",
+ "abusefilter-edit-block-user-durations": "Durée de blocage pour les utilisateurs enregistrés :",
+ "abusefilter-block-anon": "utilisateurs anonymes",
+ "abusefilter-block-user": "utilisateurs enregistrés",
+ "abusefilter-edit-denied": "Vous ne pouvez pas voir les détails de ce filtre, parce qu’il est caché à la vue du public",
+ "abusefilter-edit-main": "Paramètres du filtre",
+ "abusefilter-edit-done-subtitle": "Filtre modifié",
+ "abusefilter-edit-done": "[[Special:AbuseFilter/history/$1/diff/prev/$2|Vos modifications]] au [[Special:AbuseFilter/$1|filtre $3]] ont été enregistrées.",
+ "abusefilter-edit-badsyntax": "Le filtre que vous avez spécifié comporte une erreur de syntaxe.\nLe résultat de l'analyseur syntaxique était : <pre>$1</pre>",
+ "abusefilter-edit-missingfields": "Les champs suivants sont nécessaires et doivent être remplis : $1",
+ "abusefilter-edit-restricted": "Vous ne pouvez pas modifier ce filtre parce qu'il contient une ou plusieurs actions restreintes.\nDemandez à un utilisateur autorisé à ajouter des actions restreintes d'effectuer la modification pour vous.",
+ "abusefilter-edit-viewhistory": "Voir l’historique de ce filtre",
+ "abusefilter-edit-history": "Historique :",
+ "abusefilter-edit-check": "Vérifier la syntaxe",
+ "abusefilter-edit-badfilter": "Le filtre que vous avez spécifié n'existe pas",
+ "abusefilter-edit-revert": "Révoquer les actions entreprises par ce filtre",
+ "abusefilter-edit-tools": "Outils :",
+ "abusefilter-edit-test-link": "Tester ce filtre sur les modifications récentes",
+ "abusefilter-edit-export": "Exporter ce filtre vers un autre wiki",
+ "abusefilter-edit-syntaxok": "Aucune erreur de syntaxe détectée.",
+ "abusefilter-edit-syntaxerr": "Erreur de syntaxe détectée : $1",
+ "abusefilter-edit-bad-tags": "Au moins une des balises que vous avez spécifiées n’est pas valide.\nLes balises doivent être courtes, ne pas contenir de caractères spéciaux, ni être réservées par d’autres logiciels. Essayez en choisissant un autre nom de balise",
+ "abusefilter-edit-notallowed": "Vous n'êtes pas autorisé à créer ou modifier des filtres antiabus",
+ "abusefilter-edit-notallowed-global": "Vous n'avez pas le droit de créer ou de modifier les filtres globaux d'abus",
+ "abusefilter-edit-notallowed-global-custom-msg": "Les messages d’avertissement personnalisés ne sont pas pris en charge pour les filtres globaux",
+ "abusefilter-edit-builder-select": "Sélectionnez une option pour l'ajouter au curseur",
+ "abusefilter-edit-builder-group-op-arithmetic": "Opérateurs arithmétiques",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Addition (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Soustraction (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Multiplication (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Division (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Modulo (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Puissance (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Opérateurs de comparaison",
+ "abusefilter-edit-builder-op-comparison-equal": "Valeur égale à (==)",
+ "abusefilter-edit-builder-op-comparison-equal-strict": "Valeur et type égaux à (===)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Valeur non égale à (!=)",
+ "abusefilter-edit-builder-op-comparison-notequal-strict": "Valeur et type différents de (!==)",
+ "abusefilter-edit-builder-op-comparison-lt": "Inférieur à (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Supérieur à (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Inférieur ou égal à (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Supérieur ou égal à (>=)",
+ "abusefilter-edit-builder-group-op-bool": "Opérateurs booléens",
+ "abusefilter-edit-builder-op-bool-not": "Non (!)",
+ "abusefilter-edit-builder-op-bool-and": "Et (&)",
+ "abusefilter-edit-builder-op-bool-or": "Ou (|)",
+ "abusefilter-edit-builder-group-misc": "Divers",
+ "abusefilter-edit-builder-misc-in": "Contenu dans la chaîne de caractères (in)",
+ "abusefilter-edit-builder-misc-like": "Correspond au motif (like)",
+ "abusefilter-edit-builder-misc-rlike": "Correspond à l'expression rationnelle (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "Filtre avec des expressions rationnelles, sans tenir compte de la casse (irlike)",
+ "abusefilter-edit-builder-misc-contains": "La chaîne de gauche contient la chaîne de droite (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "Chaîne littérale (\"\")",
+ "abusefilter-edit-builder-misc-tern": "Opérateur ternaire (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "Conditionnel (if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "Fonctions",
+ "abusefilter-edit-builder-funcs-length": "Longueur de la chaîne de caractères (length)",
+ "abusefilter-edit-builder-funcs-lcase": "Convertir en minuscules (lcase)",
+ "abusefilter-edit-builder-funcs-ucase": "Convertir en majuscules (ucase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "Normaliser les caractères prêtant à confusion (ccnorm)",
+ "abusefilter-edit-builder-funcs-ccnorm-contains-any": "Normaliser et rechercher dans une chaîne de multiples sous-chaînes avec le critère OU (ccnorm_contains_any)",
+ "abusefilter-edit-builder-funcs-ccnorm-contains-all": "Normaliser et rechercher dans une chaîne des multiples sous-chaînes avec le critère ET (ccnorm_contains_all)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "Enlever les caractères doubles (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "Caractères spéciaux / total des caractères (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "Normaliser (norm)",
+ "abusefilter-edit-builder-funcs-count": "Nombre d'occurrences de la chaîne de caractères X dans la chaîne Y (count)",
+ "abusefilter-edit-builder-funcs-rcount": "Nombre de fois que l'expression rationnelle X apparaît dans la chaîne Y (rcount)",
+ "abusefilter-edit-builder-funcs-get_matches": "Tableau de correspondance d’expressions rationnelles avec un texte pour chaque groupe de capture (get_matches)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "Supprimer les espaces (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "Supprimer les caractères spéciaux (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "L'adresse IP est-elle dans la plage ? (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "Rechercher dans une chaîne des multiples sous-chaînes avec le critère OU (contains_any).",
+ "abusefilter-edit-builder-funcs-contains-all": "Rechercher dans une chaîne des multiples sous-chaînes avec le critère ET (contains_all).",
+ "abusefilter-edit-builder-funcs-substr": "Sous-chaîne (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "Position de la sous-chaîne dans la chaîne (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "Remplacer la sous-chaîne par la chaîne (str_replace)",
+ "abusefilter-edit-builder-funcs-rescape": "Échapper la chaîne comme littérale dans l'expression rationnelle (rescape)",
+ "abusefilter-edit-builder-funcs-set_var": "Définir la variable (set_var)",
+ "abusefilter-edit-builder-group-vars": "Variables",
+ "abusefilter-edit-builder-vars-accountname": "Nom du compte (lors de la création du compte)",
+ "abusefilter-edit-builder-vars-timestamp": "Horodatage Unix de la modification",
+ "abusefilter-edit-builder-vars-timestamp-expanded": "Horodatage du journal",
+ "abusefilter-edit-builder-vars-action": "Action",
+ "abusefilter-edit-builder-vars-addedlines": "Lignes ajoutées lors de la modification",
+ "abusefilter-edit-builder-vars-delta": "Différence de taille lors de la modification",
+ "abusefilter-edit-builder-vars-diff": "Diff unifié des changements faits lors de la modification",
+ "abusefilter-edit-builder-vars-newsize": "Nouvelle taille de la page",
+ "abusefilter-edit-builder-vars-oldsize": "Ancienne taille de la page",
+ "abusefilter-edit-builder-vars-old-content-model": "Ancien modèle de contenu",
+ "abusefilter-edit-builder-vars-new-content-model": "Nouveau modèle de contenu",
+ "abusefilter-edit-builder-vars-removedlines": "Lignes supprimées lors de la modification",
+ "abusefilter-edit-builder-vars-summary": "Résumé/motif de la modification",
+ "abusefilter-edit-builder-vars-article-id": "Numéro de la page",
+ "abusefilter-edit-builder-vars-article-ns": "Espace de noms de la page",
+ "abusefilter-edit-builder-vars-article-text": "Titre de la page (sans l'espace de noms)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Titre complet de la page",
+ "abusefilter-edit-builder-vars-article-views": "Pages vues",
+ "abusefilter-edit-builder-vars-movedfrom-id": "Numéro de la page d'origine à renommer",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "Espace de noms de la page d'origine à renommer",
+ "abusefilter-edit-builder-vars-movedfrom-text": "Titre de la page d'origine à renommer",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "Titre entier de la page d'origine à renommer",
+ "abusefilter-edit-builder-vars-movedto-id": "Numéro de la page de destination du renommage",
+ "abusefilter-edit-builder-vars-movedto-ns": "Espace de noms de la page de destination du renommage",
+ "abusefilter-edit-builder-vars-movedto-text": "Titre de la page de destination du renommage",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "Titre entier de la page de destination du renommage",
+ "abusefilter-edit-builder-vars-user-editcount": "Compteur de modifications de l'utilisateur",
+ "abusefilter-edit-builder-vars-user-age": "Âge du compte utilisateur",
+ "abusefilter-edit-builder-vars-user-name": "Nom du compte d’utilisateur",
+ "abusefilter-edit-builder-vars-user-groups": "Groupes (y compris implicites) dont l'utilisateur est membre",
+ "abusefilter-edit-builder-vars-user-rights": "Droits qu’a un utilisateur",
+ "abusefilter-edit-builder-vars-user-blocked": "Si l'utilisateur est bloqué",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "Temps depuis la confirmation de l'adresse courriel",
+ "abusefilter-edit-builder-vars-recent-contributors": "Les dix derniers contributeurs de la page",
+ "abusefilter-edit-builder-vars-first-contributor": "Premier utilisateur à contribuer à cette page",
+ "abusefilter-edit-builder-vars-movedfrom-recent-contributors": "Dix derniers utilisateurs ayant contribué à la page source déplacée",
+ "abusefilter-edit-builder-vars-movedfrom-first-contributor": "Premier utilisateur à contribuer à la page source déplacée",
+ "abusefilter-edit-builder-vars-movedto-recent-contributors": "Dix derniers utilisateurs ayant contribué à la page destination déplacée",
+ "abusefilter-edit-builder-vars-movedto-first-contributor": "Premier utilisateur à contribuer à la page destination déplacée",
+ "abusefilter-edit-builder-vars-all-links": "Tous les liens externes dans le nouveau texte",
+ "abusefilter-edit-builder-vars-added-links": "Tous les liens externes ajoutés dans la modification",
+ "abusefilter-edit-builder-vars-removed-links": "Tous les liens externes retirés lors de la modification",
+ "abusefilter-edit-builder-vars-old-text": "Ancien texte de la page, avant la modification",
+ "abusefilter-edit-builder-vars-new-text": "Nouveau texte de la page, après la modification",
+ "abusefilter-edit-builder-vars-new-pst": "Wikitexte de la nouvelle page, transformé avant enregistrement",
+ "abusefilter-edit-builder-vars-diff-pst": "Différence unifiée des modifications effectuées dans l’aperçu avant enregistrement transformé",
+ "abusefilter-edit-builder-vars-addedlines-pst": "Lignes ajoutées dans l’aperçu avant enregistrement de la modification",
+ "abusefilter-edit-builder-vars-new-text-stripped": "Nouveau texte de la page, sans aucun balisage",
+ "abusefilter-edit-builder-vars-new-html": "Source HTML analysée de la nouvelle version",
+ "abusefilter-edit-builder-vars-restrictions-edit": "Protection contre la modification",
+ "abusefilter-edit-builder-vars-restrictions-move": "Protection contre le renommage",
+ "abusefilter-edit-builder-vars-restrictions-create": "Protection contre la création",
+ "abusefilter-edit-builder-vars-restrictions-upload": "Protection contre le téléversement",
+ "abusefilter-edit-builder-vars-movedfrom-restrictions-edit": "Modifier le niveau de protection de la page source déplacée",
+ "abusefilter-edit-builder-vars-movedfrom-restrictions-move": "Déplacer le niveau de protection de la page source déplacée",
+ "abusefilter-edit-builder-vars-movedfrom-restrictions-create": "Créer la protection de la page source déplacée",
+ "abusefilter-edit-builder-vars-movedfrom-restrictions-upload": "Télécharger la protection du fichier source déplacé",
+ "abusefilter-edit-builder-vars-movedto-restrictions-edit": "Modifier le niveau de protection de la page de destination déplacée",
+ "abusefilter-edit-builder-vars-movedto-restrictions-move": "Déplacer le niveau de protection de la page de destination déplacée",
+ "abusefilter-edit-builder-vars-movedto-restrictions-create": "Créer la protection de la page de destination déplacée",
+ "abusefilter-edit-builder-vars-movedto-restrictions-upload": "Télécharger la protection du fichier de destination déplacé",
+ "abusefilter-edit-builder-vars-old-text-stripped": "Texte de l'ancienne page, dépourvu de toute mise en forme",
+ "abusefilter-edit-builder-vars-old-links": "Liens dans la page, avant la modification",
+ "abusefilter-edit-builder-vars-old-html": "Wikitexte de l'ancienne page, analysé en HTML",
+ "abusefilter-edit-builder-vars-minor-edit": "Si la modification est marquée comme mineure ou non",
+ "abusefilter-edit-builder-vars-file-sha1": "hachage SHA1 du contenu du fichier",
+ "abusefilter-edit-builder-vars-file-size": "Taille du fichier en octets",
+ "abusefilter-edit-builder-vars-file-mime": "Type MIME du fichier",
+ "abusefilter-edit-builder-vars-file-mediatype": "Type de média pour ce fichier",
+ "abusefilter-edit-builder-vars-file-width": "Largeur du fichier en pixels",
+ "abusefilter-edit-builder-vars-file-height": "Hauteur du fichier en pixels",
+ "abusefilter-edit-builder-vars-file-bits-per-channel": "Nombre de bits par canal de couleur dans le fichier",
+ "abusefilter-edit-block-options": "Options de blocage :",
+ "abusefilter-filter-log": "Modifications récentes des filtres",
+ "abusefilter-history": "Historique des modifications du filtre antiabus n° $1",
+ "abusefilter-history-foruser": "Modifications par $1",
+ "abusefilter-history-hidden": "Masqué",
+ "abusefilter-history-enabled": "Activé",
+ "abusefilter-history-global": "Global",
+ "abusefilter-history-timestamp": "Date",
+ "abusefilter-history-user": "Utilisateur",
+ "abusefilter-history-public": "Description publique du filtre",
+ "abusefilter-history-flags": "Drapeaux",
+ "abusefilter-history-filter": "Règle du filtre",
+ "abusefilter-history-comments": "Commentaires",
+ "abusefilter-history-actions": "Actions",
+ "abusefilter-history-backedit": "Retour à la page de modification du filtre",
+ "abusefilter-history-deleted": "Supprimé",
+ "abusefilter-history-filterid": "Filtre",
+ "abusefilter-history-select-legend": "Affiner la recherche",
+ "abusefilter-history-select-user": "Utilisateur :",
+ "abusefilter-history-select-filter": "ID du filtre :",
+ "abusefilter-history-select-submit": "Affiner",
+ "abusefilter-history-diff": "Changements",
+ "abusefilter-history-error-hidden": "Le filtre que vous avez demandé est caché, et vous ne pouvez pas afficher son historique.",
+ "abusefilter-exception-unexpectedatend": "« $2 » inattendu au caractère $1.",
+ "abusefilter-exception-expectednotfound": "Un $2 manquant était attendu au caractère $1 ($3 $4 trouvé à la place).",
+ "abusefilter-exception-unrecognisedkeyword": "Mot-clé $2 non reconnu au caractère $1.",
+ "abusefilter-exception-unexpectedtoken": "Élément inattendu « $3 » (de type $2) au caractère $1.",
+ "abusefilter-exception-unclosedstring": "Chaîne non fermée débutant au caractère $1.",
+ "abusefilter-exception-invalidoperator": "Opérateur invalide « $2 » au caractère $1.",
+ "abusefilter-exception-unrecognisedtoken": "Élément non reconnu « $2 » au caractère $1.",
+ "abusefilter-exception-noparams": "Aucun paramètre fourni pour la fonction « $2 » au caractère $1.",
+ "abusefilter-exception-dividebyzero": "Division illégale de $2 par zéro au caractère $1.",
+ "abusefilter-exception-unrecognisedvar": "Variable non reconnue $2 au caractère $1",
+ "abusefilter-exception-notenoughargs": "Pas assez de paramètres pour la fonction $2 appelée au caractère $1.\n$3 {{PLURAL:$3|argument demandé|arguments demandés}}, $4 obtenu{{PLURAL:$4||s}}",
+ "abusefilter-exception-regexfailure": "Erreur dans l'expression rationnelle « $3 » au caractère $1 : « $2 »",
+ "abusefilter-exception-overridebuiltin": "Écrasement interdit de la variable disponible par défaut « $2 » au caractère $1.",
+ "abusefilter-exception-outofbounds": "Demande de l'élément inexistant $2 (taille de la liste = $3) au caractère $1.",
+ "abusefilter-exception-notlist": "Demande d'un élément de tableau appliquée à un non-tableau au caractère $1.",
+ "abusefilter-exception-unclosedcomment": "Commentaire non fermé au caractère $1.",
+ "abusefilter-action-tag": "Baliser",
+ "abusefilter-action-throttle": "Limiter les modifications",
+ "abusefilter-action-warn": "Avertir l’utilisateur",
+ "abusefilter-action-blockautopromote": "Bloquer la promotion automatique",
+ "abusefilter-action-block": "Bloquer",
+ "abusefilter-action-degroup": "Exclure des groupes",
+ "abusefilter-action-rangeblock": "Bloquer la plage",
+ "abusefilter-action-disallow": "Interdire la modification",
+ "abusefilter-revert-title": "Révoquer toutes les modifications par le filtre $1",
+ "abusefilter-revert-intro": "Ce formulaire vous permet de révoquer toutes les modifications faites par le filtre antiabus $1.\nVeuillez faire très attention en utilisant cet outil.",
+ "abusefilter-revert-preview-item": "$1 : $2 {{GENDER:$7|a fait}} $3 sur $4.\nActions à révoquer : $5 ($6)",
+ "abusefilter-revert-search-legend": "Sélectionnez les actions à révoquer du filtre antiabus",
+ "abusefilter-revert-periodstart": "Début de la période :",
+ "abusefilter-revert-periodend": "Fin de la période :",
+ "abusefilter-revert-search": "Sélectionner les actions",
+ "abusefilter-revert-filter": "ID de filtre :",
+ "abusefilter-revert-preview-intro": "Voici les actions réalisées par le filtre antiabus, qui seront révoquées par cette action.\nVeuillez les vérifier attentivement, puis cliquez sur « {{int:abusefilter-revert-confirm}} » pour valider votre sélection.",
+ "abusefilter-revert-confirm-legend": "Confirmer le retour",
+ "abusefilter-revert-confirm": "Confirmer",
+ "abusefilter-revert-success": "Vous avez révoqué avec succès toutes les actions entreprises par le filtre antiabus et déclenchées par le [[Special:AbuseFilter/$1|filtre $2]].",
+ "abusefilter-revert-reason": "Révocation automatique de toutes les actions entreprises par le filtre antiabus et déclenchées par le filtre $1.\nMotif donné : $2",
+ "abusefilter-revert-reasonfield": "Motif :",
+ "abusefilter-test": "Tester un filtre sur les précédentes modifications",
+ "abusefilter-test-intro": "Cette page vous permet d’appliquer un filtre saisi dans la zone de texte ci-dessous {{PLURAL:$1|à la dernière modification|aux $1 dernières modifications}}.\nPour charger un filtre existant, entrez son identifiant dans le champ sous la zone de texte et cliquez sur le bouton « {{int:abusefilter-test-load}} ».",
+ "abusefilter-test-legend": "Test de filtre",
+ "abusefilter-test-load-filter": "Charger le filtre numéro :",
+ "abusefilter-test-submit": "Tester",
+ "abusefilter-test-load": "Charger",
+ "abusefilter-test-user": "Modifications par l'utilisateur :",
+ "abusefilter-test-period-start": "Changements faits après :",
+ "abusefilter-test-period-end": "Changements faits avant :",
+ "abusefilter-test-page": "Modifications apportées à la page :",
+ "abusefilter-test-shownegative": "Afficher les modifications non prises en compte par le filtre",
+ "abusefilter-test-syntaxerr": "Le filtre que vous avez saisi contient une erreur de syntaxe.\nVous pouvez recevoir une explication complète en cliquant sur le bouton « {{int:abusefilter-edit-check}} ».",
+ "abusefilter-test-badtitle": "La titre de page que vous avez saisi n’est pas valide. Il se peut qu’il contienne un ou plusieurs caractères interdits dans les titres.",
+ "abusefilter-changeslist-examine": "examiner",
+ "abusefilter-examine": "Examiner des modifications individuelles",
+ "abusefilter-examine-intro": "Cette page vous permet d'examiner les variables générées pour une modification individuelle par le filtre antiabus et de les tester avec les filtres.",
+ "abusefilter-examine-legend": "Sélectionner les modifications",
+ "abusefilter-examine-diff": "URL du diff :",
+ "abusefilter-examine-user": "Utilisateur :",
+ "abusefilter-examine-title": "Titre de la page :",
+ "abusefilter-examine-submit": "Rechercher",
+ "abusefilter-examine-vars": "Variables générées pour cette modification",
+ "abusefilter-examine-test": "Tester cette modification avec un filtre",
+ "abusefilter-examine-test-button": "Tester le filtre",
+ "abusefilter-examine-match": "Cette modification a été détectée par le filtre.",
+ "abusefilter-examine-nomatch": "Cette modification n'a pas été détectée par le filtre.",
+ "abusefilter-examine-syntaxerror": "Le filtre a une syntaxe incorrecte",
+ "abusefilter-examine-notfound": "La modification que vous avez demandée n'a pas été trouvée.",
+ "abusefilter-examine-incompatible": "La modification que vous avez demandée n’est pas prise en charge par le filtre antiabus.",
+ "abusefilter-examine-noresults": "Aucun résultat n'a été trouvé pour les paramètres de recherche que vous avez fourni.",
+ "abusefilter-topnav": "'''Navigation du filtre antiabus'''",
+ "abusefilter-topnav-home": "Accueil",
+ "abusefilter-topnav-test": "Test en série",
+ "abusefilter-topnav-examine": "Examiner les modifications précédentes",
+ "abusefilter-topnav-log": "Journal antiabus",
+ "abusefilter-topnav-tools": "Outils de déboguage",
+ "abusefilter-topnav-import": "Importer un filtre",
+ "abusefilter-log-name": "Journal des modifications du filtre antiabus",
+ "abusefilter-log-header": "Ce journal affiche un résumé des modifications faites aux filtres.\nPour plus de détails, voyez [[Special:AbuseFilter/history|la liste]] des modifications récentes du filtre.",
+ "abusefilter-logentry-create": "$1 a {{GENDER:$2|créé}} $4 ($5)",
+ "abusefilter-logentry-modify": "$1 {{GENDER:$2|a modifié}} $4 ($5)",
+ "abusefilter-log-noresults": "Aucun résultat",
+ "abusefilter-diff-title": "Différences entre les versions",
+ "abusefilter-diff-item": "Article",
+ "abusefilter-diff-version": "Version du $1 {{GENDER:$3|par}} $2",
+ "abusefilter-diff-info": "Informations de base",
+ "abusefilter-diff-pattern": "Conditions du filtre",
+ "abusefilter-diff-invalid": "Impossible de retrouver les versions demandées",
+ "abusefilter-diff-backhistory": "Retour à l’historique du filtre",
+ "abusefilter-diff-prev": "Changement antérieur",
+ "abusefilter-diff-next": "Changement ultérieur",
+ "abusefilter-import-intro": "Vous pouvez utiliser cette interface pour importer des filtres en provenance d'autres wikis.\nSur le wiki d'origine, cliquez sur « {{int:abusefilter-edit-export}} » dans « {{int:abusefilter-edit-tools}} » depuis l'interface d'édition.\nCopiez la zone de texte qui s'affiche et collez-le dans cette zone de texte, puis cliquez sur « {{int:abusefilter-import-submit}} »,",
+ "abusefilter-import-submit": "Importer des données",
+ "abusefilter-group-default": "Par défaut",
+ "abusefilter-http-error": "Une erreur HTTP s’est produite : $1.",
+ "abusefilter-view-private-submit": "Afficher les détails confidentiels",
+ "abusefilter-view-private": "Afficher les détails confidentiels",
+ "abusefilter-view-private-reason": "Motif pour accéder aux détails confidentiels :",
+ "abusefilter-log-details-id": "ID du journal",
+ "abusefilter-invalid-request": "Demande non valide ! Vous devez accéder aux détails confidentiels du journal d’accès via le formulaire sur [[Special:AbuseLog/$1]] et indiquer un motif.",
+ "abusefilter-invalid-request-noid": "Demande non valide ! Vous devez accéder aux détails confidentiels du journal via le formulaire sur la page de détails du journal des abus et indiquer un motif.",
+ "log-description-abusefilterprivatedetails": "Ce journal affiche une liste des horodatages auxquels un utilisateur a accédé aux détails confidentiels d’un journal d’abus.",
+ "abusefilter-noreason": "Avertissement : Pour voir les détails confidentiels de ce journal, vous devez indiquer un motif.",
+ "abusefilter-log-ip-not-available": "Non disponible",
+ "tag-abusefilter-condition-limit": "limite de condition atteinte",
+ "tag-abusefilter-condition-limit-description": "Modifications ou autres événements qui ne peuvent pas être vérifiés par tous les [[Special:AbuseFilter|filtres d’abus]] actifs ([[mw:Extension:AbuseFilter/Conditions|aide]]).",
+ "apihelp-abusefiltercheckmatch-description": "Cocher pour voir si un AbuseFilter correspond à un ensemble de variables, événement AbuseFilter tracé par l’éditeur.\n\nvars, rcid ou logid est obligatoire, mais un seul d’entre eux doit être utilisé.",
+ "apihelp-abusefiltercheckmatch-summary": "Vérifier pour voir si un AbuseFilter correspond à un ensemble de variables, événement AbuseFilter tracé pour l’éditeur.",
+ "apihelp-abusefiltercheckmatch-extended-description": "vars, rcid ou logid est nécessaire bien qu'un seul puisse être utilisé.",
+ "apihelp-abusefiltercheckmatch-param-filter": "Le texte complet du filtre pour vérifier une correspondance.",
+ "apihelp-abusefiltercheckmatch-param-vars": "Tableau JSON encodé de variables à tester.",
+ "apihelp-abusefiltercheckmatch-param-rcid": "ID de la modification récente sur laquelle tester le filtre.",
+ "apihelp-abusefiltercheckmatch-param-logid": "ID de l’entrée du journal du filtre antiabus sur laquelle tester le filtre.",
+ "apihelp-abusefiltercheckmatch-example-1": "Vérifie si la modification récente d’ID 15 est détectée par un filtre simple",
+ "apihelp-abusefilterchecksyntax-description": "Vérifier la syntaxe d’un filtre antiabus.",
+ "apihelp-abusefilterchecksyntax-summary": "Vérifier la syntaxe d’un filtre anti-abus.",
+ "apihelp-abusefilterchecksyntax-param-filter": "Le texte complet du filtre dont la syntaxe doit être vérifiée.",
+ "apihelp-abusefilterchecksyntax-example-1": "Vérifier la syntaxe d’un filtre valide",
+ "apihelp-abusefilterchecksyntax-example-2": "Vérifier la syntaxe d’un filtre invalide",
+ "apihelp-abusefilterevalexpression-description": "Évalue une expression du filtre antiabus.",
+ "apihelp-abusefilterevalexpression-summary": "Evalue l'expression d'un filtre anti-abus.",
+ "apihelp-abusefilterevalexpression-param-expression": "L’expression à évaluer.",
+ "apihelp-abusefilterevalexpression-example-1": "Évaluer une expression simple",
+ "apihelp-abusefilterunblockautopromote-description": "Annule le blocage par un filtre antiabus des promotions automatiques de statut d’un utilisateur.",
+ "apihelp-abusefilterunblockautopromote-summary": "Empêche un utilisateur de recevoir des auto-promotions résultant d'un filtre anti-abus.",
+ "apihelp-abusefilterunblockautopromote-param-user": "Nom de l’utilisateur à débloquer.",
+ "apihelp-abusefilterunblockautopromote-example-1": "Supprime le blocage des promotions automatiques de statut pour [[User:Example]]",
+ "apihelp-query+abusefilters-description": "Afficher les détails des filtres antiabus.",
+ "apihelp-query+abusefilters-summary": "Afficher les détails des filtres anti-abus.",
+ "apihelp-query+abusefilters-param-startid": "Numéro de filtre auquel commencer l’énumération.",
+ "apihelp-query+abusefilters-param-endid": "Numéro de filtre auquel terminer l’énumération.",
+ "apihelp-query+abusefilters-param-show": "Afficher seulement les filtres correspondant à ces critères.",
+ "apihelp-query+abusefilters-param-limit": "Le nombre maximum de filtres à renvoyer.",
+ "apihelp-query+abusefilters-param-prop": "Quelles propriétés obtenir.",
+ "apihelp-query+abusefilters-example-1": "Afficher les filtres publics activés.",
+ "apihelp-query+abusefilters-example-2": "Afficher certains détails sur les filtres.",
+ "apihelp-query+abuselog-description": "Afficher les événements détectés par l’un des filtres antiabus.",
+ "apihelp-query+abuselog-summary": "Affiche les événements capturés par un des filtres anti-abus.",
+ "apihelp-query+abuselog-param-start": "L’horodatage auquel commencer l’énumération.",
+ "apihelp-query+abuselog-param-end": "L’horodatage auquel terminer l’énumération.",
+ "apihelp-query+abuselog-param-user": "Afficher uniquement les entrées faites par un utilisateur ou une adresse IP donné.",
+ "apihelp-query+abuselog-param-title": "Afficher uniquement les entrées se produisant sur une page donnée.",
+ "apihelp-query+abuselog-param-filter": "Afficher uniquement les entrées capturées par un ID de filtre donné.",
+ "apihelp-query+abuselog-param-limit": "Le nombre maximal d’entrées à liter.",
+ "apihelp-query+abuselog-param-prop": "Quelles propriétés obtenir.",
+ "apihelp-query+abuselog-param-wiki": "Wiki depuis lequel afficher les visites",
+ "apihelp-query+abuselog-example-1": "Afficher les entrées récentes du journal",
+ "apihelp-query+abuselog-example-2": "Afficher les entrées récentes du journal pour [[API]]",
+ "apierror-abusefilter-canttest": "Vous n'avez pas la permission de tester les filtres antiabus.",
+ "apierror-abusefilter-cantcheck": "Vous n’avez pas la permission de vérifier la syntaxe des filtres antiabus.",
+ "apierror-abusefilter-nosuchlogid": "Il n'y a pas d'entrée dans le journal des abus avec l'identifiant $1.",
+ "apierror-abusefilter-badsyntax": "Le filtre a une syntaxe non valide."
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/frc.json b/www/wiki/extensions/AbuseFilter/i18n/frc.json
new file mode 100644
index 00000000..1e2cf6d2
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/frc.json
@@ -0,0 +1,56 @@
+{
+ "@metadata": {
+ "authors": [
+ "Hangmanwa7id"
+ ]
+ },
+ "abusefilter-blocker": "Filtre d'abus",
+ "abusefilter-blockreason": "Bloqué automatiquement par le filtre d'abus.\nDescription de la règle associée: $1",
+ "right-abusefilter-modify": "Changer les filtres d'abus",
+ "right-abusefilter-view": "Regarder les filtres d'abus",
+ "action-abusefilter-modify": "changer les filtres d'abus",
+ "action-abusefilter-view": "regarder les filtres d'abus",
+ "abusefilter-log-search-user": "Useur:",
+ "abusefilter-log-search-filter": "IDs de filtre (séparés par des barres verticales):",
+ "abusefilter-log-search-title": "Titre:",
+ "abusefilter-log-search-wiki": "Wiki:",
+ "abusefilter-log-search-submit": "Charcher",
+ "abusefilter-deleted": "Effacé",
+ "abusefilter-list-options": "Options",
+ "abusefilter-list-options-deleted": "Filtres effacés:",
+ "abusefilter-tools-reautoconfirm-user": "Useur:",
+ "abusefilter-edit-flags": "Flags:",
+ "abusefilter-edit-lastmod-text": "$1 par $2",
+ "abusefilter-edit-throttle-seconds": "$1 seconde{{PLURAL:$1||s}}",
+ "abusefilter-edit-tools": "Outils:",
+ "abusefilter-edit-builder-group-op-arithmetic": "Opérateurs arithmétiques",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Addition (+)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Modulo (%)",
+ "abusefilter-edit-builder-op-comparison-equal": "Égal à (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Différent de (!=)",
+ "abusefilter-edit-builder-op-bool-or": "Ou (|)",
+ "abusefilter-edit-builder-funcs-lcase": "Convertir en minuscules (lcase)",
+ "abusefilter-edit-builder-funcs-ucase": "Convertir en majuscules (ucase)",
+ "abusefilter-edit-builder-vars-action": "Action",
+ "abusefilter-edit-builder-vars-article-views": "Pages vues",
+ "abusefilter-edit-builder-vars-user-age": "Âge du compte useur",
+ "abusefilter-edit-builder-vars-user-name": "Nom du compte useur",
+ "abusefilter-history-hidden": "Caché",
+ "abusefilter-history-enabled": "Activé",
+ "abusefilter-history-global": "Global",
+ "abusefilter-history-timestamp": "Date",
+ "abusefilter-history-user": "Useur",
+ "abusefilter-history-flags": "Flags",
+ "abusefilter-history-filter": "Règle du filtre",
+ "abusefilter-history-actions": "Actions",
+ "abusefilter-history-deleted": "Effacé",
+ "abusefilter-history-filterid": "Filtre",
+ "abusefilter-history-select-user": "Useur:",
+ "abusefilter-history-diff": "Changements",
+ "abusefilter-action-block": "Bloquer",
+ "abusefilter-revert-filter": "Filtre:",
+ "abusefilter-examine-user": "Useur:",
+ "abusefilter-examine-title": "Titre de la page:",
+ "abusefilter-examine-submit": "Charcher",
+ "abusefilter-topnav-home": "Accueil"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/frp.json b/www/wiki/extensions/AbuseFilter/i18n/frp.json
new file mode 100644
index 00000000..8f459afb
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/frp.json
@@ -0,0 +1,377 @@
+{
+ "@metadata": {
+ "authors": [
+ "Cedric31",
+ "ChrisPtDe",
+ "McDutchie",
+ "Matma Rex"
+ ]
+ },
+ "abusefilter-desc": "Aplique des heristiques ôtomatiques ux changements.",
+ "abusefilter": "Configuracion du filtro d’abus",
+ "abuselog": "Jornal des abus",
+ "abusefilter-intro": "Benvegnua dens l’entèrface d’administracion des filtros d’abus.\nLo filtro d’abus est un mècanismo programeria ôtomatisâ que pèrmèt d’aplicar des heristiques prèdèfenies a totes les accions.\nCela entèrface presente una lista des filtros dèfenis, et pués balye la possibilitât de los changiér.",
+ "abusefilter-mustbeeditor": "Por des rêsons de sècuritât, solament los usanciérs avouéc lo drêt de changiér los filtros d’abus pôvont utilisar cela entèrface.",
+ "abusefilter-warning": "'''Avèrtissement :''' cela accion at étâ identifiâ ôtomaticament coment nuésibla.\nLos changements pas constructifs seront rêdo anulâs,\net pués les bètises rèpètâs ou ben que font enjura provoqueront lo blocâjo de voutron compto ou ben de voutra adrèce IP.\nSe vos éte de sûr que voutron changement est constructif, vos lo pouede tornar sometre por lo confirmar.\nVê-que una côrta dèscripcion de la règlla de filtracion d’abus qu’at dècelâ voutra accion : $1",
+ "abusefilter-disallowed": "Cela accion at étâ identifiâ ôtomaticament coment nuésibla et at vêr étâ empachiê.\nSe vos éte de sûr que voutron changement ére constructif, vos volyéd veriér vers un administrator et pués l’enformar de cen que vos éd tâchiê de fâre.\nVê-que una côrta dèscripcion de la règlla de filtracion d’abus qu’at dècelâ voutra accion : $1",
+ "abusefilter-blocked-display": "Cela accion at étâ identifiâ ôtomaticament coment nuésibla\net pués vos avéd ja étâ empachiê de l’ègzécutar.\nDe ples, por protègiér {{SITENAME}}, voutron compto usanciér et pués totes les adrèces IP associyês ont étâ blocâs contre tot changement.\nSe cen est diu a una èrror, vos volyéd veriér vers un administrator.\nVê-que una côrta dèscripcion de la règlla de filtracion d’abus qu’at dècelâ voutra accion : $1",
+ "abusefilter-degrouped": "Cela accion at étâ identifiâ ôtomaticament coment nuésibla.\nDu côp, el at étâ dèfendua et pués, dês que voutron compto est suspèctâ de compromission, tôs voutros drêts ont étâ enlevâs.\nSe vos éte de sûr qu’o est diu a una èrror, vos volyéd veriér vers un grata-papiér avouéc una èxplicacion de cela accion por rètablir voutros drêts.\nVê-que una côrta dèscripcion de la règlla de filtracion d’abus qu’at dècelâ voutra accion : $1",
+ "abusefilter-autopromote-blocked": "Cela accion at étâ identifiâ ôtomaticament coment nuésibla et at vêr étâ empachiê.\nDe ples, coment mesera de sècuritât, quârques privilèjos balyês d’habituda por los comptos ètablis ont étâ enlevâs temporèrament de voutron compto.\nVê-que una côrta dèscripcion de la règlla de filtracion d’abus qu’at dècelâ voutra accion : $1",
+ "abusefilter-blocker": "Filtro d’abus",
+ "abusefilter-blockreason": "Blocâ ôtomaticament per lo filtro d’abus.\nDèscripcion de la règlla associyê : $1",
+ "abusefilter-degroupreason": "Drêts enlevâs ôtomaticament per lo filtro d’abus.\nDèscripcion de la règlla associyê : $1",
+ "abusefilter-accountreserved": "Lo nom de cél compto est resèrvâ por l’usâjo per lo filtro d’abus.",
+ "right-abusefilter-modify": "Changiér los filtros d’abus",
+ "right-abusefilter-view": "Vêre los filtros d’abus",
+ "right-abusefilter-log": "Vêre lo jornal des abus",
+ "right-abusefilter-log-detail": "Vêre les entrâs dètalyês du jornal des abus",
+ "right-abusefilter-private": "Vêre les balyês privâs dens lo jornal des abus",
+ "right-abusefilter-modify-restricted": "Changiér los filtros d’abus avouéc des accions rètrentes",
+ "right-abusefilter-revert": "Rèvocar tôs los changements fêts per un filtro d’abus balyê",
+ "right-abusefilter-view-private": "Vêre los filtros d’abus marcâs coment privâs",
+ "right-abusefilter-hide-log": "Cachiér des entrâs dens lo jornal des abus",
+ "right-abusefilter-hidden-log": "Vêre les entrâs cachiês du jornal des abus",
+ "action-abusefilter-modify": "changiér los filtros d’abus",
+ "action-abusefilter-view": "vêre los filtros d’abus",
+ "action-abusefilter-log": "vêre lo jornal des abus",
+ "action-abusefilter-log-detail": "vêre les entrâs dètalyês du jornal des abus",
+ "action-abusefilter-private": "vêre les balyês privâs dens lo jornal des abus",
+ "action-abusefilter-modify-restricted": "changiér los filtros d’abus avouéc des accions rètrentes",
+ "action-abusefilter-revert": "rèvocar tôs los changements fêts per un filtro d’abus balyê",
+ "action-abusefilter-view-private": "vêre los filtros d’abus marcâs coment privâs",
+ "abusefilter-log": "Jornal du filtro d’abus",
+ "abusefilter-log-summary": "Ceti jornal montre una lista de les accions dècelâs per los filtros.",
+ "abusefilter-log-search": "Rechèrchiér dens lo jornal des abus",
+ "abusefilter-log-search-user": "Usanciér :",
+ "abusefilter-log-search-filter": "Numerô du filtro :",
+ "abusefilter-log-search-title": "Titro :",
+ "abusefilter-log-search-wiki": "Vouiqui :",
+ "abusefilter-log-search-submit": "Rechèrchiér",
+ "abusefilter-log-entry": "$1 : $2 at dècllenchiê un filtro d’abus, pendent l’accion « $3 » dessus $4.\nAccions prêses : $5 ;\nDèscripcion du filtro : $6",
+ "abusefilter-log-detailedentry-meta": "$1 : $2 at dècllenchiê lo $3, pendent l’accion « $4 » dessus $5.\nAccions prêses : $6 ;\nDèscripcion du filtro : $7 ($8)",
+ "abusefilter-log-detailedentry-global": "filtro globâl $1",
+ "abusefilter-log-detailedentry-local": "filtro $1",
+ "abusefilter-log-detailslink": "dètalys",
+ "abusefilter-log-diff": "dif",
+ "abusefilter-log-hidelink": "ajustar la visibilitât",
+ "abusefilter-log-details-legend": "Dètalys por l’entrâ $1 du jornal",
+ "abusefilter-log-details-var": "Variâbla",
+ "abusefilter-log-details-val": "Valor",
+ "abusefilter-log-details-vars": "Paramètres de l’accion",
+ "abusefilter-log-details-private": "Balyês privâs",
+ "abusefilter-log-details-ip": "Adrèce IP d’origina",
+ "abusefilter-log-noactions": "niona",
+ "abusefilter-log-details-diff": "Changements fêts dens lo changement",
+ "abusefilter-log-linkoncontribs": "jornal des abus",
+ "abusefilter-log-linkoncontribs-text": "Jornal des abus a ceti usanciér",
+ "abusefilter-log-hidden": "(entrâ cachiê)",
+ "abusefilter-log-hidden-implicit": "(cachiêye perce que la vèrsion est étâye suprimâye)",
+ "abusefilter-log-cannot-see-details": "Vos avéd pas la pèrmission de vêre los dètalys de cel’entrâ.",
+ "abusefilter-log-details-hidden": "Vos pouede pas vêre los dètalys por cela entrâ perce qu’el est cachiê a la vua du publico.",
+ "abusefilter-log-hide-legend": "Cachiér l’entrâ du jornal",
+ "abusefilter-log-hide-id": "Numerô de l’entrâ du jornal :",
+ "abusefilter-log-hide-hidden": "Cachiér cela entrâ a la vua du publico",
+ "abusefilter-log-hide-reason": "Rêson :",
+ "abusefilter-log-hide-forbidden": "Vos avéd pas la pèrmission de cachiér des entrâs du jornal des abus.",
+ "abusefilter-logentry-suppress": "at cachiê « [[$1]] »",
+ "abusefilter-logentry-unsuppress": "at montrâ « [[$1]] »",
+ "abusefilter-management": "Administracion du filtro d’abus",
+ "abusefilter-list": "Tôs los filtros",
+ "abusefilter-list-id": "Numerô du filtro",
+ "abusefilter-list-status": "Ètat",
+ "abusefilter-list-public": "Dèscripcion publica",
+ "abusefilter-list-consequences": "Consèquences",
+ "abusefilter-list-visibility": "Visibilitât",
+ "abusefilter-list-hitcount": "Comptor de dètèccions",
+ "abusefilter-list-edit": "Changiér",
+ "abusefilter-list-details": "Dètalys",
+ "abusefilter-list-limit": "Nombro per pâge :",
+ "abusefilter-list-lastmodified": "Dèrriér changement",
+ "abusefilter-list-group": "Groupo du filtro",
+ "abusefilter-hidden": "Privâ",
+ "abusefilter-unhidden": "Publico",
+ "abusefilter-enabled": "Activâ",
+ "abusefilter-deleted": "Suprimâ",
+ "abusefilter-disabled": "Dèsactivâ",
+ "abusefilter-hitcount": "$1 dètèccion{{PLURAL:$1||s}}",
+ "abusefilter-new": "Fâre un filtro novél",
+ "abusefilter-return": "Tornar a l’administracion des filtros",
+ "abusefilter-status-global": "Globâl",
+ "abusefilter-list-options": "Chouèx",
+ "abusefilter-list-options-deleted": "Filtros suprimâs :",
+ "abusefilter-list-options-deleted-only": "Montrar ren que los filtros suprimâs",
+ "abusefilter-list-options-deleted-hide": "Cachiér los filtros suprimâs",
+ "abusefilter-list-options-deleted-show": "Encllure los filtros suprimâs",
+ "abusefilter-list-options-scope": "Montrar los filtros dês :",
+ "abusefilter-list-options-scope-local": "Vouiqui local",
+ "abusefilter-list-options-scope-global": "Règlles globâles",
+ "abusefilter-list-options-disabled": "Filtros dèsactivâs :",
+ "abusefilter-list-options-hidedisabled": "Cachiér los filtros dèsactivâs",
+ "abusefilter-list-options-submit": "Betar a jorn",
+ "abusefilter-tools-text": "Vê-que quârques outils que pôvont étre utilos dens la formulacion et lo dècofierâjo des filtros d’abus.",
+ "abusefilter-tools-expr": "Èprovor d’èxprèssions",
+ "abusefilter-tools-submitexpr": "Èstimar",
+ "abusefilter-tools-reautoconfirm": "Rètablir l’ètat ôtoconfirmâ",
+ "abusefilter-tools-reautoconfirm-user": "Usanciér :",
+ "abusefilter-tools-reautoconfirm-submit": "Tornar ôtoconfirmar",
+ "abusefilter-reautoconfirm-none": "L’ètat ôtoconfirmâ a {{GENDER:$1|cél usanciér|cela usanciére}} at pas étâ pendu.",
+ "abusefilter-reautoconfirm-notallowed": "Vos éte pas ôtorisâ a rètablir l’ètat ôtoconfirmâ.",
+ "abusefilter-reautoconfirm-done": "L’ètat ôtoconfirmâ du compto usanciér at étâ rètabli",
+ "abusefilter-status": "{{PLURAL:$1|Dens la dèrriére accion|Entre-mié les $1 dèrriéres accions}}, $2 ($3 %) {{PLURAL:$2|at avengiê|ont avengiês}} la limita de les $4 condicions ôtorisâs, et pués $5 ($6 %) {{PLURAL:$5|at étâ dècelâ|ont étâ dècelâs}} per yon des filtros ora activâs.",
+ "abusefilter-edit-subtitle": "Changement du filtro $1",
+ "abusefilter-edit-subtitle-new": "Crèacion d’un filtro",
+ "abusefilter-edit-oldwarning": "<strong>Vos éte aprés changiér una vielye vèrsion de cél filtro.\nLes statistiques montrâs regârdont la vèrsion la ples novèla de ceti.\nSe vos encartâd voutros changements, vos voléd ècllafar tôs los changements arrevâs dês la vèrsion que vos changiéd.</strong> &bull;\n[[Special:AbuseFilter/history/$2|Tornar a l’historico de cél filtro]].",
+ "abusefilter-edit-status-label": "Statistiques :",
+ "abusefilter-edit-status": "{{PLURAL:$1|Dens la dèrriére accion|Entre-mié les $1 dèrriéres accions}}, cél filtro nen at dècelâ $2 ($3 %).",
+ "abusefilter-edit-status-profile": "{{PLURAL:$1|Dens la dèrriére accion|Entre-mié les $1 dèrriéres accions}}, cél filtro nen at dècelâ $2 ($3 %).\nEn moyena, lo temps d’ègzécucion de cél filtro est de $4 ms et pués utilise $5 condicion{{PLURAL:$5||s}} de la limita de les condicions.",
+ "abusefilter-edit-new": "Filtro novél",
+ "abusefilter-edit-save": "Encartar lo filtro",
+ "abusefilter-edit-id": "Numerô du filtro :",
+ "abusefilter-edit-description": "Dèscripcion :\n:''(visibla publicament)''",
+ "abusefilter-edit-group": "Groupo du filtro :",
+ "abusefilter-edit-flags": "Segnalements :",
+ "abusefilter-edit-enabled": "Activar ceti filtro",
+ "abusefilter-edit-deleted": "Marcar coment suprimâ",
+ "abusefilter-edit-hidden": "Cachiér los dètalys de ceti filtro a la vua du publico",
+ "abusefilter-edit-global": "Filtro globâl",
+ "abusefilter-edit-rules": "Condicions :",
+ "abusefilter-edit-notes": "Notes :\n:''(privâ)''",
+ "abusefilter-edit-lastmod": "Dèrriér changement du filtro :",
+ "abusefilter-edit-lastmod-text": "$1 per $2",
+ "abusefilter-edit-hitcount": "Nombro de dètèccions du filtro :",
+ "abusefilter-edit-consequences": "Accions entreprêses pendent la dètèccion",
+ "abusefilter-edit-action-warn": "Dècllenchiér celes accions aprés avêr balyê un avèrtissement a l’usanciér",
+ "abusefilter-edit-action-disallow": "Empachiér l’usanciér de fâre l’accion en quèstion",
+ "abusefilter-edit-action-blockautopromote": "Rèvocar l’ètat ôtoconfirmâ du compto usanciér",
+ "abusefilter-edit-action-degroup": "Enlevar l’usanciér de totes les tropes privilègiyês",
+ "abusefilter-edit-action-block": "Blocar en ècritura l’usanciér et / ou l’adrèce IP",
+ "abusefilter-edit-action-throttle": "Dècllenchiér les accions ren que se l’usanciér at dèpassâ una quota limita",
+ "abusefilter-edit-action-rangeblock": "Blocar la plage d’adrèces IP /16 d’origina a l’usanciér.",
+ "abusefilter-edit-action-tag": "Balisar lo changement por una rèvision a vegnir",
+ "abusefilter-edit-throttle-count": "Nombro d’accions ôtorisâs :",
+ "abusefilter-edit-throttle-period": "Moment :",
+ "abusefilter-edit-throttle-seconds": "$1 second{{PLURAL:$1|a|es}}",
+ "abusefilter-edit-throttle-groups": "Apondre la moderacion per :\n:''(yona per legne, sèparâ per des virgules)''",
+ "abusefilter-edit-warn-message": "Mèssâjo sistèmo a utilisar por l’avèrtissement :",
+ "abusefilter-edit-warn-other": "Ôtro mèssâjo",
+ "abusefilter-edit-warn-other-label": "Nom de la pâge d’un ôtro mèssâjo :\n:''(sen lo prèfixo MediaWiki)''",
+ "abusefilter-edit-warn-actions": "Accions :",
+ "abusefilter-edit-warn-preview": "Prèvisualisar lo mèssâjo chouèsi",
+ "abusefilter-edit-warn-edit": "Fâre / changiér lo mèssâjo chouèsi",
+ "abusefilter-edit-tag-tag": "Balises a aplicar (yona per legne) :",
+ "abusefilter-edit-denied": "Vos pouede pas vêre los dètalys de cél filtro perce qu’il est cachiê a la vua du publico.",
+ "abusefilter-edit-main": "Paramètres du filtro",
+ "abusefilter-edit-done-subtitle": "Filtro changiê",
+ "abusefilter-edit-done": "Vos éd encartâ avouéc reusséta voutros changements du filtro $1.",
+ "abusefilter-edit-badsyntax": "Lo filtro que vos éd spècefiâ at una èrror de sintaxa.\nLo rèsultat du parsor ére : <pre>$1</pre>",
+ "abusefilter-edit-restricted": "Vos pouede pas changiér cél filtro perce que contint yona ou ben un mouél d’accions rètrentes.\nDemandâd a un usanciér ôtorisâ a apondre des accions rètrentes de fâre lo changement por vos.",
+ "abusefilter-edit-viewhistory": "Vêre l’historico de ceti filtro",
+ "abusefilter-edit-history": "Historico :",
+ "abusefilter-edit-check": "Controlar la sintaxa",
+ "abusefilter-edit-badfilter": "Lo filtro que vos éd spècefiâ ègziste pas",
+ "abusefilter-edit-revert": "Rèvocar les accions entreprêses per ceti filtro",
+ "abusefilter-edit-tools": "Outils :",
+ "abusefilter-edit-test-link": "Èprovar ceti filtro sur los dèrriérs changements",
+ "abusefilter-edit-export": "Èxportar ceti filtro vers un ôtro vouiqui",
+ "abusefilter-edit-syntaxok": "Gins d’èrror de sintaxa dècelâ.",
+ "abusefilter-edit-syntaxerr": "Èrror de sintaxa dècelâ : $1",
+ "abusefilter-edit-bad-tags": "Yona ou ben un mouél de balises que vos éd spècefiâ est pas valida.\nLes balises dêvont étre côrtes et pués pas avêr de caractèros spèciâls.",
+ "abusefilter-edit-notallowed": "Vos éte pas ôtorisâ a fâre ou ben changiér des filtros d’abus",
+ "abusefilter-edit-builder-select": "Chouèsésséd un chouèx por l’apondre a la mouche",
+ "abusefilter-edit-builder-group-op-arithmetic": "Opèrators aritmèticos",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Adicion (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Sostraccion (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Multiplicacion (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Division (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Modulo (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Pouessience (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Opèrators de comparèson",
+ "abusefilter-edit-builder-op-comparison-equal": "Pariér a (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Difèrent de (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "Muens de (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Més de (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Muens de ou ben ègâl a (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Més de ou ben ègâl a (>=)",
+ "abusefilter-edit-builder-group-op-bool": "Opèrators boolèens",
+ "abusefilter-edit-builder-op-bool-not": "Nan (!)",
+ "abusefilter-edit-builder-op-bool-and": "Et (&)",
+ "abusefilter-edit-builder-op-bool-or": "Ou (|)",
+ "abusefilter-edit-builder-group-misc": "De tota sôrta",
+ "abusefilter-edit-builder-misc-in": "contegnu dens la chêna de caractèros (in)",
+ "abusefilter-edit-builder-misc-like": "Corrèspond u modèlo (like)",
+ "abusefilter-edit-builder-misc-rlike": "Corrèspond a l’èxprèssion racionèla (''RegEx'') (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "Filtro avouéc des èxprèssions racionèles, sen tegnir compto de la câssa (irlike)",
+ "abusefilter-edit-builder-misc-contains": "La chêna de gôche contint la chêna de drêta (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "Chêna litèrâla (\"\")",
+ "abusefilter-edit-builder-misc-tern": "Opèrator tèrnèro (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "Condicionèl (if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "Fonccions",
+ "abusefilter-edit-builder-funcs-length": "Longior de la chêna de caractèros (length)",
+ "abusefilter-edit-builder-funcs-lcase": "Convèrtir en petiôtes lètres (lcase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "Normalisar los caractèros que prétont a confusion (ccnorm)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "Enlevar los caractèros doblos (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "Caractèros spèciâls / soma des caractèros (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "Normalisar (norm)",
+ "abusefilter-edit-builder-funcs-count": "Nombro d’ocasions de la chêna de caractèros X dens la chêna Y (count)",
+ "abusefilter-edit-builder-funcs-rcount": "Nombro de côps que l’èxprèssion racionèla (''RegEx'') X aparêt dens la chêna Y (rcount)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "Suprimar los èspâços (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "Suprimar los caractèros spèciâls (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "L’adrèce IP est-el dens la plage d’adrèces IP ? (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "Rechèrchiér un mouél de sot-chênes dens una chêna (contains_any)",
+ "abusefilter-edit-builder-funcs-substr": "Sot-chêna (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "Posicion de la sot-chêna dens la chêna (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "Remplaciér la sot-chêna per la chêna (str_replace)",
+ "abusefilter-edit-builder-funcs-set_var": "Dèfenir la variâbla (set_var)",
+ "abusefilter-edit-builder-group-vars": "Variâbles",
+ "abusefilter-edit-builder-vars-accountname": "Nom du compto (pendent la crèacion du compto)",
+ "abusefilter-edit-builder-vars-timestamp": "Dâta Unix du changement",
+ "abusefilter-edit-builder-vars-action": "Accion",
+ "abusefilter-edit-builder-vars-addedlines": "Legnes apondues pendent lo changement",
+ "abusefilter-edit-builder-vars-delta": "Difèrence de talye pendent lo changement",
+ "abusefilter-edit-builder-vars-diff": "Dif unifiâ des changements fêts pendent lo changement",
+ "abusefilter-edit-builder-vars-newsize": "Talye de la pâge novèla",
+ "abusefilter-edit-builder-vars-oldsize": "Vielye talye de la pâge",
+ "abusefilter-edit-builder-vars-removedlines": "Legnes suprimâs pendent lo changement",
+ "abusefilter-edit-builder-vars-summary": "Rèsumâ de changement / rêson",
+ "abusefilter-edit-builder-vars-article-id": "Numerô de la pâge",
+ "abusefilter-edit-builder-vars-article-ns": "Èspâço de noms de la pâge",
+ "abusefilter-edit-builder-vars-article-text": "Titro de la pâge (sen l’èspâço de noms)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Titro complèt de la pâge",
+ "abusefilter-edit-builder-vars-movedfrom-id": "Numerô de la pâge d’origina a renomar",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "Èspâço de noms de la pâge d’origina a renomar",
+ "abusefilter-edit-builder-vars-movedfrom-text": "Titro de la pâge d’origina a renomar",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "Titro complèt de la pâge d’origina a renomar",
+ "abusefilter-edit-builder-vars-movedto-id": "Numerô de la pâge de dèstinacion du changement de nom",
+ "abusefilter-edit-builder-vars-movedto-ns": "Èspâço de noms de la pâge de dèstinacion du changement de nom",
+ "abusefilter-edit-builder-vars-movedto-text": "Titro de la pâge de dèstinacion du changement de nom",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "Titro complèt de la pâge de dèstinacion du changement de nom",
+ "abusefilter-edit-builder-vars-user-editcount": "Comptor de changements a l’usanciér",
+ "abusefilter-edit-builder-vars-user-age": "Âjo du compto usanciér",
+ "abusefilter-edit-builder-vars-user-name": "Nom du compto usanciér",
+ "abusefilter-edit-builder-vars-user-groups": "Tropes (emplicites avouéc) que l’usanciér est membro",
+ "abusefilter-edit-builder-vars-user-blocked": "Se l’utilisator est blocâ",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "Temps dês la confirmacion de l’adrèce èlèctronica",
+ "abusefilter-edit-builder-vars-recent-contributors": "Los diéx dèrriérs contributors de la pâge",
+ "abusefilter-edit-builder-vars-all-links": "Tôs los lims de defôr dens lo tèxto novél",
+ "abusefilter-edit-builder-vars-added-links": "Tôs los lims de defôr apondus dens lo changement",
+ "abusefilter-edit-builder-vars-removed-links": "Tôs los lims de defôr enlevâs dens lo changement",
+ "abusefilter-edit-builder-vars-old-text": "Viely vouiquitèxto de la pâge, devant lo changement",
+ "abusefilter-edit-builder-vars-new-text": "Vouiquitèxto de la pâge novél, aprés lo changement",
+ "abusefilter-edit-builder-vars-new-text-stripped": "Tèxto de la pâge novél, sen gins de balisâjo",
+ "abusefilter-edit-builder-vars-new-html": "Sôrsa HTML parsâ de la novèla vèrsion",
+ "abusefilter-edit-builder-vars-restrictions-edit": "Nivél de protèccion des changements de la pâge",
+ "abusefilter-edit-builder-vars-restrictions-move": "Nivél de protèccion des changements de nom de la pâge",
+ "abusefilter-edit-builder-vars-restrictions-create": "Protèccion de creacion de la pâge",
+ "abusefilter-edit-builder-vars-restrictions-upload": "Protèccion de tèlèchargement du fichiér",
+ "abusefilter-edit-builder-vars-old-text-stripped": "Viely tèxto de la pâge, sen gins de balisâjo",
+ "abusefilter-edit-builder-vars-old-links": "Lims dens la pâge, devant lo changement",
+ "abusefilter-edit-builder-vars-old-html": "Viely vouiquitèxto de la pâge, parsâ en HTML",
+ "abusefilter-edit-builder-vars-minor-edit": "Se lo changement est marcâ coment petiôt ou nan",
+ "abusefilter-edit-builder-vars-file-sha1": "chaplâjo SHA1 du contegnu du fichiér",
+ "abusefilter-filter-log": "Dèrriérs changements des filtros",
+ "abusefilter-history": "Historico des changements du filtro d’abus numerô $1",
+ "abusefilter-history-foruser": "Changements per $1",
+ "abusefilter-history-hidden": "Cachiê",
+ "abusefilter-history-enabled": "Activâ",
+ "abusefilter-history-global": "Globâl",
+ "abusefilter-history-timestamp": "Hora",
+ "abusefilter-history-user": "Usanciér",
+ "abusefilter-history-public": "Dèscripcion publica du filtro",
+ "abusefilter-history-flags": "Segnalements",
+ "abusefilter-history-filter": "Règlla du filtro",
+ "abusefilter-history-comments": "Comentèros",
+ "abusefilter-history-actions": "Accions",
+ "abusefilter-history-backedit": "Retôrn a la pâge de changement du filtro",
+ "abusefilter-history-deleted": "Suprimâ",
+ "abusefilter-history-filterid": "Filtro",
+ "abusefilter-history-select-legend": "Afinar la rechèrche",
+ "abusefilter-history-select-user": "Usanciér :",
+ "abusefilter-history-select-submit": "Afinar",
+ "abusefilter-history-diff": "Changements",
+ "abusefilter-history-error-hidden": "Lo filtro que vos éd demandâ est cachiê, et pués vos pouede pas fâre vêre son historico.",
+ "abusefilter-exception-unexpectedatend": "« $2 » emprèvu u caractèro $1.",
+ "abusefilter-exception-expectednotfound": "Un $2 manquent ére atendu u caractèro $1 ($3 $4 trovâ a la place).",
+ "abusefilter-exception-unrecognisedkeyword": "Mot-cllâf $2 pas recognu u caractèro $1.",
+ "abusefilter-exception-unexpectedtoken": "Jeton emprèvu « $3 » (de tipo $2) u caractèro $1.",
+ "abusefilter-exception-unclosedstring": "Chêna pas cllôsa que comence u caractèro $1.",
+ "abusefilter-exception-invalidoperator": "Opèrator envalido « $2 » u caractèro $1.",
+ "abusefilter-exception-unrecognisedtoken": "Jeton pas recognu « $2 » u caractèro $1.",
+ "abusefilter-exception-noparams": "Gins de paramètre balyê por la fonccion « $2 » u caractèro $1.",
+ "abusefilter-exception-dividebyzero": "Division ilègâla de $2 per zérô u caractèro $1.",
+ "abusefilter-exception-unrecognisedvar": "Variâbla pas recognua $2 u caractèro $1",
+ "abusefilter-exception-notenoughargs": "Pas prod de paramètres por la fonccion $2 apelâ u caractèro $1.\n$3 {{PLURAL:$3|argument demandâ|arguments demandâs}}, $4 avu{{PLURAL:$4||s}}",
+ "abusefilter-exception-regexfailure": "Èrror dens l’èxprèssion racionèla « $3 » u caractèro $1 : « $2 »",
+ "abusefilter-exception-overridebuiltin": "Ècllafâ dèfendua de la variâbla disponibla per dèfôt « $2 » u caractèro $1.",
+ "abusefilter-exception-outofbounds": "Demanda de l’èlèment pas ègzistent $2 (talye de la lista = $3) u caractèro $1.",
+ "abusefilter-exception-notlist": "Demanda d’un èlèment dens ôtra chousa qu’un tablô u caractèro $1.",
+ "abusefilter-action-tag": "Balisa",
+ "abusefilter-action-throttle": "Limitar los changements",
+ "abusefilter-action-warn": "Avèrtir l’usanciér",
+ "abusefilter-action-blockautopromote": "Blocar la nominacion ôtomatica",
+ "abusefilter-action-block": "Blocar",
+ "abusefilter-action-degroup": "Enlevar les tropes",
+ "abusefilter-action-rangeblock": "Blocar la plage",
+ "abusefilter-action-disallow": "Dèfendre lo changement",
+ "abusefilter-revert-title": "Rèvocar tôs los changements per lo filtro $1",
+ "abusefilter-revert-intro": "Ceti formulèro vos pèrmèt de rèvocar tôs los changements fêts per lo filtro d’abus $1.\nVolyéd chaouyér en utilisent cél outil.",
+ "abusefilter-revert-preview-item": "$1 : $2 at fêt $3 dessus $4.\nAccions a rr : $5 ($6)",
+ "abusefilter-revert-search-legend": "Chouèsésséd les accions a rèvocar du filtro d’abus",
+ "abusefilter-revert-periodstart": "Comencement du temps :",
+ "abusefilter-revert-periodend": "Fin du temps :",
+ "abusefilter-revert-search": "Chouèsir les accions",
+ "abusefilter-revert-filter": "Filtro :",
+ "abusefilter-revert-preview-intro": "Vê-que les accions rèalisâs per lo filtro d’abus, que seront rèvocâs per cela accion.\nLes volyéd controlar bien, et pués clicâd dessus « Confirmar » por validar voutron chouèx.",
+ "abusefilter-revert-confirm": "Confirmar",
+ "abusefilter-revert-success": "Vos éd rèvocâ avouéc reusséta totes les accions entreprêses per lo filtro d’abus et dècllenchiês per lo [[Special:AbuseFilter/$1|filtro $2]].",
+ "abusefilter-revert-reason": "Rèvocacion ôtomatica de totes les accions entreprêses per lo filtro d’abus et dècllenchiês per lo filtro $1.\nRêson balyê : $2",
+ "abusefilter-revert-reasonfield": "Rêson :",
+ "abusefilter-test": "Èprovar un filtro sur los changements devant",
+ "abusefilter-test-intro": "Ceta pâge vos pèrmèt de controlar sur {{PLURAL:$1|lo dèrriér changement|los $1 dèrriérs changements}} un filtro buchiê dens la zona de tèxto ce-desot.\nPor chargiér un filtro ègzistent, buchiéd son numerô dens lo champ desot la zona de tèxto et pués clicâd sur lo boton « Chargiér ».",
+ "abusefilter-test-legend": "Èprôva de filtro",
+ "abusefilter-test-load-filter": "Chargiér lo filtro numerô :",
+ "abusefilter-test-submit": "Èprovar",
+ "abusefilter-test-load": "Chargiér",
+ "abusefilter-test-user": "Changements per l’usanciér :",
+ "abusefilter-test-period-start": "Changements fêts aprés :",
+ "abusefilter-test-period-end": "Changements fêts devant :",
+ "abusefilter-test-page": "Changements aplicâs a la pâge :",
+ "abusefilter-test-shownegative": "Fâre vêre los changements pas prês en compto per lo filtro",
+ "abusefilter-test-syntaxerr": "Lo filtro que vos éd buchiê contint una èrror de sintaxa.\nVos pouede recêvre una èxplicacion complèta en cliquent sur lo boton « Controlar la sintaxa ».",
+ "abusefilter-changeslist-examine": "ègzamenar",
+ "abusefilter-examine": "Ègzamenar des changements particuliérs",
+ "abusefilter-examine-intro": "Ceta pâge vos pèrmèt d’ègzamenar les variâbles fêtes por un changement particuliér per lo filtro d’abus et pués de les èprovar avouéc los filtros.",
+ "abusefilter-examine-legend": "Chouèsir los changements",
+ "abusefilter-examine-diff": "URL du dif :",
+ "abusefilter-examine-user": "Usanciér :",
+ "abusefilter-examine-title": "Titro de la pâge :",
+ "abusefilter-examine-submit": "Rechèrchiér",
+ "abusefilter-examine-vars": "Variâbles fêtes por ceti changement",
+ "abusefilter-examine-test": "Èprovar ceti changement avouéc un filtro",
+ "abusefilter-examine-test-button": "Èprovar lo filtro",
+ "abusefilter-examine-match": "Ceti changement at étâ dècelâ per lo filtro.",
+ "abusefilter-examine-nomatch": "Ceti changement at pas étâ dècelâ per lo filtro.",
+ "abusefilter-examine-syntaxerror": "Lo filtro at una sintaxa fôssa",
+ "abusefilter-examine-notfound": "Lo changement que vos éd demandâ at pas étâ trovâ.",
+ "abusefilter-examine-incompatible": "Lo changement que vos éd demandâ est pas recognu per lo filtro d’abus.",
+ "abusefilter-examine-noresults": "Nion rèsultat at étâ trovâ por los paramètres de rechèrche que vos éd balyê.",
+ "abusefilter-topnav": "'''Navigacion du filtro d’abus'''",
+ "abusefilter-topnav-home": "Reçua",
+ "abusefilter-topnav-test": "Èprôva en sèria",
+ "abusefilter-topnav-examine": "Ègzamenar los changements devant",
+ "abusefilter-topnav-log": "Jornal des abus",
+ "abusefilter-topnav-tools": "Outils de dècofierâjo",
+ "abusefilter-topnav-import": "Importar un filtro",
+ "abusefilter-log-name": "Jornal du filtro d’abus",
+ "abusefilter-log-header": "Ceti jornal montre un rèsumâ des changements fêts ux filtros.\nPor més de dètalys, vêde la [[Special:AbuseFilter/history|lista]] des dèrriérs changements du filtro.",
+ "abusefilter-log-noresults": "Gins de rèsultat",
+ "abusefilter-diff-title": "Difèrences entre les vèrsions",
+ "abusefilter-diff-item": "Articllo",
+ "abusefilter-diff-version": "Vèrsion du $1 {{GENDER:$3|per}} $2",
+ "abusefilter-diff-info": "Enformacions de bâsa",
+ "abusefilter-diff-pattern": "Condicions du filtro",
+ "abusefilter-diff-invalid": "Empossiblo de retrovar les vèrsions demandâs",
+ "abusefilter-diff-backhistory": "Retôrn a l’historico du filtro",
+ "abusefilter-import-intro": "Vos pouede utilisar cela entèrface por importar des filtros que vegnont d’ôtros vouiquis.\nSur lo vouiqui d’origina, clicâd dessus « {{int:abusefilter-edit-export}} » dens « {{int:abusefilter-edit-tools}} » dês l’entèrface d’èdicion.\nCopiyéd la zona de tèxto que sè montre et pués côlâd-lo dens cela zona de tèxto, et pués clicâd dessus « {{int:abusefilter-import-submit}} ».",
+ "abusefilter-import-submit": "Importar des balyês",
+ "abusefilter-group-default": "Per dèfôt"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/frr.json b/www/wiki/extensions/AbuseFilter/i18n/frr.json
new file mode 100644
index 00000000..c26aef9f
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/frr.json
@@ -0,0 +1,22 @@
+{
+ "@metadata": {
+ "authors": [
+ "Murma174"
+ ]
+ },
+ "abusefilter": "Masbrük-filter",
+ "abuselog": "Masbrük-filter logbuk",
+ "abusefilter-blocker": "Masbrük-filter",
+ "right-abusefilter-log": "Masbrükfilter-logbuk uunluke",
+ "right-abusefilter-log-detail": "Ütjwidjet masbrükfilter-logbuk uunluke",
+ "action-abusefilter-log": "at masbrükfilter-logbuk uuntulukin",
+ "action-abusefilter-log-detail": "det ütjwidjet masbrükfilter-logbuk uuntulukin",
+ "abusefilter-log": "Masbrükfilter-logbuk",
+ "abusefilter-log-search": "Masbrükfilter-logbuk trochschük",
+ "abusefilter-log-linkoncontribs": "Masbrükfilter-logbuk",
+ "abusefilter-log-linkoncontribs-text": "Masbrükfilter-logbuk för didiar brüker",
+ "abusefilter-management": "Masbrük-filter auersicht",
+ "abusefilter-list": "Aaltumaal",
+ "abusefilter-log-name": "Masbrükfilter-logbuk",
+ "abusefilter-diff-info": "Grünjdooten"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/fur.json b/www/wiki/extensions/AbuseFilter/i18n/fur.json
new file mode 100644
index 00000000..8243df2a
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/fur.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": [
+ "Klenje"
+ ]
+ },
+ "abusefilter-log-search-user": "Utent:",
+ "abusefilter-log-search-title": "Titul:",
+ "abusefilter-log-search-submit": "Cîr",
+ "abusefilter-log-detailslink": "detais",
+ "abusefilter-log-details-var": "Variabil",
+ "abusefilter-log-noactions": "nissune",
+ "abusefilter-log-hide-reason": "Reson:",
+ "abusefilter-list-status": "Stât"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/fy.json b/www/wiki/extensions/AbuseFilter/i18n/fy.json
new file mode 100644
index 00000000..dbe261d2
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/fy.json
@@ -0,0 +1,71 @@
+{
+ "@metadata": {
+ "authors": [
+ "Pyt",
+ "Snakesteuben",
+ "Robin0van0der0vliet",
+ "PiefPafPier",
+ "Robin van der Vliet"
+ ]
+ },
+ "abusefilter-desc": "Fiert automatyske heuristyske analyse út op bewurkings",
+ "abusefilter": "Ynstellings foar it misbrûkfilter",
+ "abusefilter-blocker": "Misbrûkfilter",
+ "abusefilter-accountreserved": "Dizze meidochnamme wurdt frijholden foar it misbrûkfilter.",
+ "abusefilter-log-search-user": "Meidogger:",
+ "abusefilter-log-search-title": "Titel:",
+ "abusefilter-log-search-wiki": "Wiki:",
+ "abusefilter-log-search-submit": "Sykje",
+ "abusefilter-log-detailslink": "details",
+ "abusefilter-log-diff": "ferskil",
+ "abusefilter-log-details-var": "Fariabel",
+ "abusefilter-log-details-val": "Wearde",
+ "abusefilter-log-noactions": "gjin",
+ "abusefilter-log-hide-reason": "Reden:",
+ "abusefilter-list-status": "Status",
+ "abusefilter-list-edit": "Bewurkje",
+ "abusefilter-list-details": "Details",
+ "abusefilter-unhidden": "Iepenbier",
+ "abusefilter-enabled": "Ynskeakele",
+ "abusefilter-deleted": "Fuortsmite",
+ "abusefilter-disabled": "Utskeakele",
+ "abusefilter-status-global": "Globaal",
+ "abusefilter-list-options": "Opsjes",
+ "abusefilter-list-options-submit": "Bywurkje",
+ "abusefilter-tools-reautoconfirm-user": "Brûker:",
+ "abusefilter-edit-status-label": "Statistiken:",
+ "abusefilter-edit-new": "Nije filter",
+ "abusefilter-edit-save": "Filter bewarje",
+ "abusefilter-edit-id": "Filternûmer:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|sekonde|sekonden}}",
+ "abusefilter-edit-history": "Skiednis:",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Optelle (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Oftrekke (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Fermannichfâldigje (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Diele (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Modulus (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Machtsferheffe (**)",
+ "abusefilter-edit-builder-op-comparison-equal": "Gelyk oan (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Net gelyk oan (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "Lytser dan (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Grutter dan (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Lytser dan of gelyk oan (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Grutter dan of gelyk oan (>=)",
+ "abusefilter-edit-builder-op-bool-not": "Net (!)",
+ "abusefilter-edit-builder-op-bool-and": "En (&)",
+ "abusefilter-edit-builder-op-bool-or": "Of (|)",
+ "abusefilter-edit-builder-group-misc": "Oare",
+ "abusefilter-edit-builder-group-funcs": "Funksjes",
+ "abusefilter-edit-builder-vars-action": "Aksje",
+ "abusefilter-history-enabled": "ynskeakele",
+ "abusefilter-history-global": "Globaal",
+ "abusefilter-history-timestamp": "Tiid",
+ "abusefilter-history-user": "Meidogger",
+ "abusefilter-history-select-user": "Brûker:",
+ "abusefilter-revert-reasonfield": "Reden:",
+ "abusefilter-examine-user": "Meidogger:",
+ "abusefilter-examine-submit": "Sykje",
+ "abusefilter-diff-title": "Ferskillen tusken ferzjes",
+ "abusefilter-group-default": "Standert",
+ "abusefilter-http-error": "Der is in HTTP-flater bard: $1."
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/ga.json b/www/wiki/extensions/AbuseFilter/i18n/ga.json
new file mode 100644
index 00000000..7ec7d9a2
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/ga.json
@@ -0,0 +1,22 @@
+{
+ "@metadata": {
+ "authors": [
+ "පසිඳු කාවින්ද"
+ ]
+ },
+ "abusefilter-log-search-user": "Úsáideoir:",
+ "abusefilter-log-search-title": "Teideal:",
+ "abusefilter-log-search-submit": "Cuardaigh",
+ "abusefilter-log-hide-reason": "Fáth:",
+ "abusefilter-list-edit": "Cuir in eagar",
+ "abusefilter-list-options": "Roghanna",
+ "abusefilter-tools-reautoconfirm-user": "Úsáideoir:",
+ "abusefilter-edit-history": "Stair:",
+ "abusefilter-edit-builder-vars-action": "Gníomh",
+ "abusefilter-history-user": "Úsáideoir",
+ "abusefilter-history-select-user": "Úsáideoir:",
+ "abusefilter-revert-confirm": "Deimhnigh",
+ "abusefilter-examine-user": "Úsáideoir:",
+ "abusefilter-examine-submit": "Cuardaigh",
+ "abusefilter-group-default": "réamhshocrú"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/gan-hans.json b/www/wiki/extensions/AbuseFilter/i18n/gan-hans.json
new file mode 100644
index 00000000..43fa6f00
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/gan-hans.json
@@ -0,0 +1,5 @@
+{
+ "@metadata": [],
+ "abusefilter-log-search-submit": "寻吖",
+ "abusefilter-examine-submit": "寻吖"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/gan-hant.json b/www/wiki/extensions/AbuseFilter/i18n/gan-hant.json
new file mode 100644
index 00000000..55a8939a
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/gan-hant.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "Symane"
+ ]
+ },
+ "abusefilter-log-search-submit": "尋吖",
+ "abusefilter-examine-submit": "尋吖"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/gl.json b/www/wiki/extensions/AbuseFilter/i18n/gl.json
new file mode 100644
index 00000000..4c6bab02
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/gl.json
@@ -0,0 +1,466 @@
+{
+ "@metadata": {
+ "authors": [
+ "Elisardojm",
+ "Toliño",
+ "Banjo",
+ "Matma Rex",
+ "Navhy"
+ ]
+ },
+ "abusefilter-desc": "Aplica heurísticas automáticas ás edicións",
+ "abusefilter": "Configuración do filtro de abusos",
+ "abuselog": "Rexistro de abusos",
+ "abusefilter-intro": "Benvido á interface do xestor do filtro de abusos.\nO filtro de abusos é un software mecánico automático que aplica heurísticas automáticas a todas as accións.\nEsta interface mostra unha lista dos filtros definidos e permite que estes sexan modificados.",
+ "abusefilter-mustbeeditor": "Por razóns de seguridade, só os usuarios cos dereitos necesarios para modificar os filtros de abusos poden empregar esta interface.",
+ "abusefilter-warning": "'''Atención:''' Esta acción foi identificada automaticamente como prexudicial.\nAs accións non construtivas serán revertidas decontado,\ne a repetición destas edicións dará como resultado o bloqueo da súa conta ou do seu enderezo IP.\nSe cre que esta acción é construtiva, pode enviala outra vez para confirmalo.\nVelaquí hai unha breve descrición da regra de abuso coa que coincide a súa acción: $1",
+ "abusefilter-disallowed": "Esta acción foi identificada automaticamente como prexudicial e por iso non está permitida.\nSe cre que a súa acción foi construtiva, por favor, informe a un administrador do que estaba intentando facer.\nVelaquí hai unha breve descrición da regra de abuso coa que coincide a súa acción: $1",
+ "abusefilter-blocked-display": "Esta acción foi identificada automaticamente como prexudicial\ne impedíuselle que a executase.\nAdemais, para protexer a {{SITENAME}}, a súa conta de usuario e todos os enderezos IP asociados foron bloqueados fronte á edición.\nSe isto ocorreu por erro, por favor, póñase en contacto cun administrador.\nVelaquí hai unha breve descrición da regra de abuso coa que coincide a súa acción: $1",
+ "abusefilter-degrouped": "Esta acción foi identificada automaticamente como prexudicial.\nComo consecuencia, non está permitida e, desde que existe a sospeita de que a súa conta está comprometida, todos os seus dereitos foron revogados.\nSe cre que isto foi un erro, por favor, póñase en contacto cun burócrata cunha explicación desta acción e os seus dereitos serán restaurados.\nVelaquí hai unha breve descrición da regra de abuso coa que coincide a súa acción: $1",
+ "abusefilter-autopromote-blocked": "Esta acción foi identificada automaticamente como prexudicial e non está permitida.\nAdemais, como medida de seguridade, fóronlle revogados temporalmente algúns privilexios que habitualmente se lles conceden ás contas establecidas, como a súa.\nVelaquí hai unha breve descrición da regra de abuso coa que coincide a súa acción: $1",
+ "abusefilter-blocker": "Filtro de abusos",
+ "abusefilter-blockreason": "Bloqueado automaticamente polo filtro de abusos. Descrición da coincidencia da regra: $1",
+ "abusefilter-degroupreason": "Os dereitos foron retirados automaticamente polo filtro de abusos. Descrición da regra: $1",
+ "abusefilter-accountreserved": "Este nome de conta está reservado para ser usado polo filtro de abusos.",
+ "right-abusefilter-modify": "Modificar os filtros de abusos",
+ "right-abusefilter-view": "Ver os filtros de abusos",
+ "right-abusefilter-log": "Ver o rexistro de abusos",
+ "right-abusefilter-log-detail": "Ver os detalles das entradas do rexistro de abusos",
+ "right-abusefilter-private": "Ver os datos privados no rexistro de abusos",
+ "right-abusefilter-modify-restricted": "Modificar os filtros de abusos con accións restrinxidas",
+ "right-abusefilter-revert": "Reverter todos os cambios dun filtro de abusos dado",
+ "right-abusefilter-view-private": "Ver os filtros de abusos marcados como privados",
+ "right-abusefilter-log-private": "Ver as entradas no rexistro dos filtros de abusos marcados como privados",
+ "right-abusefilter-hide-log": "Agochar entradas no rexistro de abusos",
+ "right-abusefilter-hidden-log": "Ver as entradas agochadas do rexistro de abusos",
+ "right-abusefilter-modify-global": "Crear ou modificar os filtros de abusos globais",
+ "action-abusefilter-modify": "modificar os filtros de abusos",
+ "action-abusefilter-view": "ver os filtros de abusos",
+ "action-abusefilter-log": "ver o rexistro de abusos",
+ "action-abusefilter-log-detail": "ver as entradas detalladas do rexistro de abusos",
+ "action-abusefilter-private": "ver os datos privados do rexistro de abusos",
+ "action-abusefilter-modify-restricted": "modificar o filtro de abusos con accións restrinxidas",
+ "action-abusefilter-revert": "reverter todo os cambios feitos por un filtro de abusos",
+ "action-abusefilter-view-private": "ver os filtros de abusos marcados como privados",
+ "action-abusefilter-log-private": "ver rexistros de filtros de abusos marcados como privados",
+ "abusefilter-log": "Rexistro do filtro de abusos",
+ "abusefilter-log-summary": "Este rexistro mostra unha lista de todas as accións capturadas polos filtros.",
+ "abusefilter-log-search": "Procurar no rexistro de abusos",
+ "abusefilter-log-search-user": "Usuario:",
+ "abusefilter-log-search-filter": "Identificadores dos filtros (separados por barras verticais):",
+ "abusefilter-log-search-title": "Título:",
+ "abusefilter-log-search-wiki": "Wiki:",
+ "abusefilter-log-search-entries-label": "Visibilidade:",
+ "abusefilter-log-search-entries-all": "Todas as entradas",
+ "abusefilter-log-search-entries-hidden": "Só as entradas ocultas",
+ "abusefilter-log-search-entries-visible": "Só as entradas visibles",
+ "abusefilter-log-search-submit": "Procurar",
+ "abusefilter-log-entry": "$1: $2 {{GENDER:$8|accionou}} un filtro de abusos, {{GENDER:$8|levando}} a cabo a acción \"$3\" na páxina $4.\nMedidas tomadas: $5\nDescrición do filtro: $6",
+ "abusefilter-log-entry-withdiff": "$1: $2 {{GENDER:$8|accionou}} un filtro de abusos, ao {{GENDER:$8|levar}} a cabo a acción \"$3\" na páxina $4.\nMedidas tomadas: $5.\nDescrición do filtro: $6 ($7)",
+ "abusefilter-log-detailedentry-meta": "$1: $2 accionou $3, ao {{GENDER:$9|levar}} a cabo a acción \"$4\" na páxina \"$5\".\nMedidas tomadas: $6.\nDescrición do filtro: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "filtro global $1",
+ "abusefilter-log-detailedentry-local": "filtro $1",
+ "abusefilter-log-detailslink": "detalles",
+ "abusefilter-log-diff": "dif",
+ "abusefilter-log-hidelink": "axustar a visibilidade",
+ "abusefilter-log-details-legend": "Detalles para a entrada $1 do rexistro",
+ "abusefilter-log-details-var": "Variable",
+ "abusefilter-log-details-val": "Valor",
+ "abusefilter-log-details-vars": "Parámetros de acción",
+ "abusefilter-log-details-private": "Datos privados",
+ "abusefilter-log-details-ip": "Enderezo IP de orixe",
+ "abusefilter-log-noactions": "ningunha",
+ "abusefilter-log-details-diff": "Cambios feitos na edición",
+ "abusefilter-log-linkoncontribs": "rexistro de abusos",
+ "abusefilter-log-linkoncontribs-text": "Rexistro de abusos para {{GENDER:$1|este usuario}}",
+ "abusefilter-log-hidden": "(entrada agochada)",
+ "abusefilter-log-hidden-implicit": "(agochado porque se borrou a revisión)",
+ "abusefilter-log-cannot-see-details": "Non ten os permisos necesarios para ver os detalles desta entrada.",
+ "abusefilter-log-nonexistent": "Non existe ningunha entrada co ID proporcionado.",
+ "abusefilter-log-details-hidden": "Non pode ollar os detalles desta entrada porque está agochada da vista pública.",
+ "abusefilter-log-private-not-included": "Un ou varios dos filtros especificados son privados. Dado que non ten os permisos necesarios para consultar os detalles dos filtros privados, estes filtros non aparecen nos resultados da procura.",
+ "abusefilter-log-hide-legend": "Agochar a entrada no rexistro",
+ "abusefilter-log-hide-id": "ID da entrada no rexistro:",
+ "abusefilter-log-hide-hidden": "Agochar esta entrada da vista pública",
+ "abusefilter-log-hide-reason": "Motivo:",
+ "abusefilter-log-hide-forbidden": "Non ten os permisos necesarios para agochar entradas do rexistro de abusos.",
+ "abusefilter-logentry-suppress": "agochou \"[[$1]]\"",
+ "abusefilter-logentry-unsuppress": "descubriu \"[[$1]]\"",
+ "logentry-abusefilter-hit": "$1 {{GENDER:$2|accionou}} $4, ao {{GENDER:$2|levar}} a cabo a acción \"$5\" na páxina \"$3\". Medidas tomadas: $6 ($7)",
+ "log-action-filter-abusefilter": "Tipo de cambio de filtro:",
+ "log-action-filter-abusefilter-create": "Creación de novo filtro",
+ "log-action-filter-abusefilter-modify": "Modificación de filtro",
+ "abusefilter-management": "Xestión do filtro de abusos",
+ "abusefilter-list": "Todos os filtros",
+ "abusefilter-list-id": "ID do filtro",
+ "abusefilter-list-status": "Estado",
+ "abusefilter-list-public": "Descrición pública",
+ "abusefilter-list-consequences": "Consecuencias",
+ "abusefilter-list-visibility": "Visibilidade",
+ "abusefilter-list-hitcount": "Contador de deteccións",
+ "abusefilter-list-edit": "Editar",
+ "abusefilter-list-details": "Detalles",
+ "abusefilter-list-limit": "Número por páxina:",
+ "abusefilter-list-lastmodified": "Última modificación",
+ "abusefilter-list-group": "Grupo de filtros",
+ "abusefilter-hidden": "Privado",
+ "abusefilter-unhidden": "Público",
+ "abusefilter-enabled": "Activado",
+ "abusefilter-deleted": "Borrado",
+ "abusefilter-disabled": "Desactivado",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|detección|deteccións}}",
+ "abusefilter-new": "Crear un novo filtro",
+ "abusefilter-return": "Volver ao xestor de filtros",
+ "abusefilter-status-global": "Global",
+ "abusefilter-list-options": "Opcións",
+ "abusefilter-list-options-deleted": "Filtros eliminados:",
+ "abusefilter-list-options-deleted-only": "Mostrar só os filtros eliminados",
+ "abusefilter-list-options-deleted-hide": "Agochar os filtros eliminados",
+ "abusefilter-list-options-deleted-show": "Incluír os filtros eliminados",
+ "abusefilter-list-options-scope": "Mostrar os filtros:",
+ "abusefilter-list-options-scope-local": "Só regras locais",
+ "abusefilter-list-options-scope-global": "Só regras globais",
+ "abusefilter-list-options-scope-all": "Regras locais e globais",
+ "abusefilter-list-options-disabled": "Filtros desactivados:",
+ "abusefilter-list-options-hidedisabled": "Agochar os filtros deshabilitados",
+ "abusefilter-list-options-submit": "Actualizar",
+ "abusefilter-tools-text": "Aquí hai algunhas ferramentas que poden ser de utilidade na formulación e depuración dos filtros de abusos.",
+ "abusefilter-tools-expr": "Verificador de expresións",
+ "abusefilter-tools-submitexpr": "Avaliar",
+ "abusefilter-tools-reautoconfirm": "Restaurar o estado de autoconfirmación",
+ "abusefilter-tools-reautoconfirm-user": "Usuario:",
+ "abusefilter-tools-reautoconfirm-submit": "Volver autoconfirmar",
+ "abusefilter-reautoconfirm-none": "{{GENDER:$1|Ese usuario|Esa usuaria}} non tivo o seu estado de autoconfirmación suspendido.",
+ "abusefilter-reautoconfirm-notallowed": "Non ten os permisos necesarios para restaurar o estado de autoconfirmación.",
+ "abusefilter-reautoconfirm-done": "Restaurouse o estado de autoconfirmación da conta",
+ "abusefilter-status": "{{PLURAL:$1|Da última acción|Das $1 últimas accións}}, $2 (o $3%) {{PLURAL:$2|atinxiu|atinxiron}} a condición límite de $4, e $5 (o $6%) {{PLURAL:$5|coincidiu|coincidiron}} cun dos filtros actualmente activados.",
+ "abusefilter-edit": "Editando o filtro de abusos",
+ "abusefilter-edit-subtitle": "Editando o filtro $1",
+ "abusefilter-edit-subtitle-new": "Creando un filtro",
+ "abusefilter-edit-oldwarning": "<strong>Está a editar unha versión vella deste filtro.\nAs estatísticas citadas son da versión máis recente do filtro.\nSe garda os seus cambios, sobrescribirá todos os cambios desde a revisión que está editando.</strong> &bull;\n[[Special:AbuseFilter/history/$2|Volver ao historial deste filtro]].",
+ "abusefilter-edit-status-label": "Estatísticas:",
+ "abusefilter-edit-status": "{{PLURAL:$1|Da última acción|Das $1 últimas accións}}, este filtro coincidiu con $2 (o $3%).",
+ "abusefilter-edit-status-profile": "{{PLURAL:$1|Da última acción|Das $1 últimas accións}}, este filtro coincidiu con $2 (o $3%).\nDe media, o seu tempo de execución é de $4ms, e consome {{PLURAL:$5|unha condición|$5 condicións}} do límite de condicións.",
+ "abusefilter-edit-throttled-warning": "'''Atención:''' Este filtro foi marcado automáticamente como prexudicial. Como medida de seguridade, as seguintes accións non se executarán ($1). Por favor revisa e [[mw:Extension:AbuseFilter/Conditions|optimiza]] as túas condicións para eliminar esta restrición",
+ "abusefilter-edit-new": "Novo filtro",
+ "abusefilter-edit-save": "Gardar o filtro",
+ "abusefilter-edit-id": "ID do filtro:",
+ "abusefilter-edit-description": "Descrición:\n:''(visible publicamente)''",
+ "abusefilter-edit-group": "Grupo de filtros:",
+ "abusefilter-edit-flags": "Revisións:",
+ "abusefilter-edit-enabled": "Permitir este filtro",
+ "abusefilter-edit-deleted": "Marcar como borrado",
+ "abusefilter-edit-hidden": "Agochar os detalles deste filtro da vista pública",
+ "abusefilter-edit-global": "Filtro global",
+ "abusefilter-edit-rules": "Condicións:",
+ "abusefilter-edit-notes": "Notas:",
+ "abusefilter-edit-lastmod": "Última modificación do filtro:",
+ "abusefilter-edit-lastmod-text": "$3 ás $4 por $2",
+ "abusefilter-edit-hitcount": "Deteccións do filtro:",
+ "abusefilter-edit-consequences": "Accións a realizar na detección",
+ "abusefilter-edit-action-warn": "Desencadear estas accións despois de darlle ao usuario un aviso",
+ "abusefilter-edit-action-disallow": "Impedir que o usuario leve a cabo a acción en cuestión",
+ "abusefilter-edit-action-blockautopromote": "Revogar o estado de usuario autoconfirmado",
+ "abusefilter-edit-action-degroup": "Eliminar o usuario de todos os grupos con privilexios",
+ "abusefilter-edit-action-block": "Bloquear o usuario e/ou o enderezo IP fronte á edición",
+ "abusefilter-edit-action-throttle": "Desencadear as accións só se o usuario se salta un límite",
+ "abusefilter-edit-action-rangeblock": "Bloquear o rango IP respectivo do que é orixinario o usuario",
+ "abusefilter-edit-action-tag": "Etiquetar a edición para unha revisión posterior",
+ "abusefilter-edit-throttle-count": "Número de accións a permitir:",
+ "abusefilter-edit-throttle-period": "Período de tempo:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|segundo|segundos}}",
+ "abusefilter-edit-throttle-groups": "Grupo acelerado por:\n:''(un por liña, combinar con comas)''",
+ "abusefilter-edit-warn-message": "Mensaxe do sistema a usar para a advertencia:",
+ "abusefilter-edit-warn-other": "Outra mensaxe",
+ "abusefilter-edit-warn-other-label": "Nome da páxina doutra mensaxe:\n:''(sen o prefixo MediaWiki)''",
+ "abusefilter-edit-warn-actions": "Accións:",
+ "abusefilter-edit-warn-preview": "Vista previa da mensaxe seleccionada",
+ "abusefilter-edit-warn-edit": "Crear/Editar a mensaxe seleccionada",
+ "abusefilter-edit-tag-tag": "[[Special:Tags|Etiquetas]] a aplicar (unha por liña):",
+ "abusefilter-edit-denied": "Poida que non vexa os detalles deste filtro porque está agochado da vista pública.",
+ "abusefilter-edit-main": "Parámetros do filtro",
+ "abusefilter-edit-done-subtitle": "Filtro editado",
+ "abusefilter-edit-done": "Gardáronse correctamente [[Special:AbuseFilter/history/$1/diff/prev/$2|os cambios]] que fixo no [[Special:AbuseFilter/$1|filtro $3]].",
+ "abusefilter-edit-badsyntax": "Hai un erro de sintaxe no filtro que especificou. A función analítica de saída foi: <pre>$1</pre>",
+ "abusefilter-edit-restricted": "Non pode editar este filtro, dado que contén unha ou máis accións restrinxidas.\nPor favor, pregúntelle a un usuario cos permisos necesarios para engadir accións restrinxidas se pode facer o cambio por vostede.",
+ "abusefilter-edit-viewhistory": "Ver o historial deste filtro",
+ "abusefilter-edit-history": "Historial:",
+ "abusefilter-edit-check": "Comprobar a sintaxe",
+ "abusefilter-edit-badfilter": "O filtro que especificou non existe",
+ "abusefilter-edit-revert": "Reverter as accións levadas a cabo por este filtro",
+ "abusefilter-edit-tools": "Ferramentas:",
+ "abusefilter-edit-test-link": "Probar este filtro coas edicións recentes",
+ "abusefilter-edit-export": "Exportar este filtro a outro wiki",
+ "abusefilter-edit-syntaxok": "Non se detectaron erros de sintaxe.",
+ "abusefilter-edit-syntaxerr": "Detectouse un erro de sintaxe: $1",
+ "abusefilter-edit-bad-tags": "Unha ou máis das etiquetas que especificou non é/son válida(s).\nAs etiquetas deberían ser curtas, non conter caracteres especiais, e non deben estar reservadas por outros programas. Probe de novo con outro nome de etiqueta.",
+ "abusefilter-edit-notallowed": "Non ten os permisos necesarios para crear ou editar filtros de abusos",
+ "abusefilter-edit-notallowed-global": "Non ten os permisos necesarios para crear ou editar filtros de abusos globais",
+ "abusefilter-edit-notallowed-global-custom-msg": "Os filtros globais non soportan as mensaxes de aviso personalizadas",
+ "abusefilter-edit-builder-select": "Seleccione unha opción para engadila ao cursor",
+ "abusefilter-edit-builder-group-op-arithmetic": "Operadores aritméticos",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Suma (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Resta (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Multiplicación (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "División (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Porcentaxe (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Potencia (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Operadores de comparación",
+ "abusefilter-edit-builder-op-comparison-equal": "Igual a (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Desigual a (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "Menor que (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Maior que (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Menor que ou igual a (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Maior que ou igual a (>=)",
+ "abusefilter-edit-builder-group-op-bool": "Operadores booleanos",
+ "abusefilter-edit-builder-op-bool-not": "Non (!)",
+ "abusefilter-edit-builder-op-bool-and": "E (&)",
+ "abusefilter-edit-builder-op-bool-or": "Ou (|)",
+ "abusefilter-edit-builder-group-misc": "Varios",
+ "abusefilter-edit-builder-misc-in": "Contido na cadea de caracteres (in)",
+ "abusefilter-edit-builder-misc-like": "Coincide co patrón (like)",
+ "abusefilter-edit-builder-misc-rlike": "Coincide coa expresión regular (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "Coincide coa expresión regular, non distingue entre maiúsculas e minúsculas (irlike)",
+ "abusefilter-edit-builder-misc-contains": "A cadea da esquerda contén a cadea da dereita (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "Comiñas (\"\")",
+ "abusefilter-edit-builder-misc-tern": "Operador ternario (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "Condicional (if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "Funcións",
+ "abusefilter-edit-builder-funcs-length": "Lonxitude da cadea de caracteres (length)",
+ "abusefilter-edit-builder-funcs-lcase": "Caracteres en minúsculas (lcase)",
+ "abusefilter-edit-builder-funcs-ucase": "Caracteres en maiúsculas (ucase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "Normalizar os caracteres confusos (ccnorm)",
+ "abusefilter-edit-builder-funcs-ccnorm-contains-any": "Normalizar e procurar unha cadea de texto para subcadeas múltiples (ccnorm_contains_any)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "Eliminar os caracteres dobres (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "Caracteres especiais / caracteres totais (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "Normalizar (norm)",
+ "abusefilter-edit-builder-funcs-count": "Número de veces que a cadea de caracteres X aparece na Y (count)",
+ "abusefilter-edit-builder-funcs-rcount": "Número de veces que a expresión regular X aparece na cadea de caracteres Y (rcount)",
+ "abusefilter-edit-builder-funcs-get_matches": "Matriz de coincidencias regex dentro dun texto para cada grupo de captura (get_matches)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "Eliminar o espazo en branco (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "Eliminar os caracteres especiais (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "Quere ver se o enderezo IP está no rango? (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "Buscar a cadea para múltiples subcadeas (contains_any)",
+ "abusefilter-edit-builder-funcs-substr": "Subcadea (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "Posición da subcadea na cadea (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "Substituír a subcadea pola cadea (str_replace)",
+ "abusefilter-edit-builder-funcs-rescape": "Cadea de escape literal na expresión regular (rescape)",
+ "abusefilter-edit-builder-funcs-set_var": "Configurar a variable (set_var)",
+ "abusefilter-edit-builder-group-vars": "Variables",
+ "abusefilter-edit-builder-vars-accountname": "Nome da conta (na creación de contas)",
+ "abusefilter-edit-builder-vars-timestamp": "Hora Unix do cambio",
+ "abusefilter-edit-builder-vars-action": "Acción",
+ "abusefilter-edit-builder-vars-addedlines": "Liñas engadidas na edición",
+ "abusefilter-edit-builder-vars-delta": "Cambio do tamaño na edición",
+ "abusefilter-edit-builder-vars-diff": "Diferenzas unificadas dos cambios feitos por edición",
+ "abusefilter-edit-builder-vars-newsize": "Tamaño novo da páxina",
+ "abusefilter-edit-builder-vars-oldsize": "Tamaño vello da páxina",
+ "abusefilter-edit-builder-vars-old-content-model": "Modelo de contido antigo",
+ "abusefilter-edit-builder-vars-new-content-model": "Modelo de contido novo",
+ "abusefilter-edit-builder-vars-removedlines": "Liñas eliminadas na edición",
+ "abusefilter-edit-builder-vars-summary": "Resumo de edición/motivo",
+ "abusefilter-edit-builder-vars-article-id": "ID da páxina",
+ "abusefilter-edit-builder-vars-article-ns": "Espazo de nomes da páxina",
+ "abusefilter-edit-builder-vars-article-text": "Título da páxina (sen o espazo de nomes)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Título completo da páxina",
+ "abusefilter-edit-builder-vars-article-views": "Visitas á páxina",
+ "abusefilter-edit-builder-vars-movedfrom-id": "ID da páxina que vai ser movida",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "Espazo de nomes da páxina que non vai ser movida",
+ "abusefilter-edit-builder-vars-movedfrom-text": "Título da páxina que vai ser movida",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "Nome completo da páxina que vai ser movida",
+ "abusefilter-edit-builder-vars-movedto-id": "ID da páxina de destino da páxina que vai ser movida",
+ "abusefilter-edit-builder-vars-movedto-ns": "Espazo de nomes do destino da páxina que vai ser movida",
+ "abusefilter-edit-builder-vars-movedto-text": "Nome do destino da páxina que vai ser movida",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "Nome completo do destino da páxina que vai ser movida",
+ "abusefilter-edit-builder-vars-user-editcount": "Contador de edicións do usuario",
+ "abusefilter-edit-builder-vars-user-age": "Idade da conta de usuario",
+ "abusefilter-edit-builder-vars-user-name": "Nome da conta de usuario",
+ "abusefilter-edit-builder-vars-user-groups": "Grupos (incluíndo os implícitos) aos que pertence o usuario",
+ "abusefilter-edit-builder-vars-user-rights": "Dereitos que ten un usuario",
+ "abusefilter-edit-builder-vars-user-blocked": "Se o usuario está ou non bloqueado",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "Data de confirmación do enderezo de correo electrónico",
+ "abusefilter-edit-builder-vars-recent-contributors": "Os últimos dez editores do artigo",
+ "abusefilter-edit-builder-vars-first-contributor": "Primeiro editor en editar a páxina",
+ "abusefilter-edit-builder-vars-all-links": "Todas as ligazóns externas do novo texto",
+ "abusefilter-edit-builder-vars-added-links": "Todas as ligazóns externas engadidas na edición",
+ "abusefilter-edit-builder-vars-removed-links": "Todas as ligazóns externas eliminadas na edición",
+ "abusefilter-edit-builder-vars-old-text": "Texto wiki vello da páxina, antes da edición",
+ "abusefilter-edit-builder-vars-new-text": "Texto wiki novo da páxina, despois da edición",
+ "abusefilter-edit-builder-vars-new-pst": "Texto wiki novo da páxina, transformado antes de gardar",
+ "abusefilter-edit-builder-vars-diff-pst": "Diferenza unificada das modificacións feitas pola edición, transformada antes de gardar",
+ "abusefilter-edit-builder-vars-addedlines-pst": "Liñas engadidas na edición, transformadas antes de gardar",
+ "abusefilter-edit-builder-vars-new-text-stripped": "Texto novo da páxina, sen ningunha marca",
+ "abusefilter-edit-builder-vars-new-html": "Fonte HTML transformada na nova revisión",
+ "abusefilter-edit-builder-vars-restrictions-edit": "Nivel de protección de edición da páxina",
+ "abusefilter-edit-builder-vars-restrictions-move": "Nivel de protección de traslado da páxina",
+ "abusefilter-edit-builder-vars-restrictions-create": "Protección de creación desta páxina",
+ "abusefilter-edit-builder-vars-restrictions-upload": "Protección de carga deste ficheiro",
+ "abusefilter-edit-builder-vars-old-text-stripped": "Texto vello da páxina, carente de calquera marca",
+ "abusefilter-edit-builder-vars-old-links": "Ligazóns na páxina antes da edición",
+ "abusefilter-edit-builder-vars-old-html": "Texto wiki vello da páxina, analizado en HTML",
+ "abusefilter-edit-builder-vars-minor-edit": "Se a edición está marcada como menor ou non",
+ "abusefilter-edit-builder-vars-file-sha1": "Hash SHA1 dos contidos do ficheiro",
+ "abusefilter-edit-builder-vars-file-size": "Tamaño do ficheiro en bytes",
+ "abusefilter-edit-builder-vars-file-mime": "Tipo MIME do ficheiro",
+ "abusefilter-edit-builder-vars-file-mediatype": "Tipo multimedia do ficheiro",
+ "abusefilter-edit-builder-vars-file-width": "Ancho do ficheiro en píxeles",
+ "abusefilter-edit-builder-vars-file-height": "Altura do ficheiro en píxeles",
+ "abusefilter-edit-builder-vars-file-bits-per-channel": "Número de bits por canle de cor do ficheiro",
+ "abusefilter-filter-log": "Cambios recentes nos filtros",
+ "abusefilter-history": "Historial de cambios do filtro de abusos nº$1",
+ "abusefilter-history-foruser": "Cambios feitos por $1",
+ "abusefilter-history-hidden": "Agochado",
+ "abusefilter-history-enabled": "Activado",
+ "abusefilter-history-global": "Global",
+ "abusefilter-history-timestamp": "Hora",
+ "abusefilter-history-user": "Usuario",
+ "abusefilter-history-public": "Descrición pública do filtro",
+ "abusefilter-history-flags": "Marcas",
+ "abusefilter-history-filter": "Regra do filtro",
+ "abusefilter-history-comments": "Comentarios",
+ "abusefilter-history-actions": "Accións",
+ "abusefilter-history-backedit": "Volver ao editor do filtro",
+ "abusefilter-history-deleted": "Borrado",
+ "abusefilter-history-filterid": "Filtro",
+ "abusefilter-history-select-legend": "Procura refinada",
+ "abusefilter-history-select-user": "Usuario:",
+ "abusefilter-history-select-submit": "Refinar",
+ "abusefilter-history-diff": "Cambios",
+ "abusefilter-history-error-hidden": "O filtro que solicitou está agochado, polo que non pode ver o seu historial.",
+ "abusefilter-exception-unexpectedatend": "\"$2\" inesperado no carácter $1.",
+ "abusefilter-exception-expectednotfound": "Esperábase un $2 no carácter $1, e este non foi atopado (no canto atopouse: $3 $4).",
+ "abusefilter-exception-unrecognisedkeyword": "A palabra clave $2 non foi recoñecida no carácter $1.",
+ "abusefilter-exception-unexpectedtoken": "Pase \"$3\" non esperado (do tipo $2) no carácter $1.",
+ "abusefilter-exception-unclosedstring": "Cadea de caracteres sen pechar que comeza no carácter $1.",
+ "abusefilter-exception-invalidoperator": "Operador \"$2\" inválido no carácter $1.",
+ "abusefilter-exception-unrecognisedtoken": "Pase \"$2\" non recoñecido no carácter $1.",
+ "abusefilter-exception-noparams": "Non se lle deu ningún parámetro á función \"$2\" no carácter $1.",
+ "abusefilter-exception-dividebyzero": "Intento ilegal de dividir $2 entre cero no carácter $1.",
+ "abusefilter-exception-unrecognisedvar": "Variable $2 descoñecida no carácter $1",
+ "abusefilter-exception-notenoughargs": "Non hai argumentos dabondo para a función $2 chamada no carácter $1.\n{{PLURAL:$3|Agardábase o argumento|Agardábanse os argumentos}} $3, obtívose $4",
+ "abusefilter-exception-regexfailure": "Erro na expresión regular \"$3\" no carácter $1: \"$2\"",
+ "abusefilter-exception-overridebuiltin": "Ignorancia ilegal da variable incorporada \"$2\" no carácter $1.",
+ "abusefilter-exception-outofbounds": "O elemento $2 solicitado da lista non existe (tamaño da lista = $3) no carácter $1.",
+ "abusefilter-exception-notlist": "Conxunto de elementos solicitados de non conxunto no carácter $1.",
+ "abusefilter-action-tag": "Etiquetar",
+ "abusefilter-action-throttle": "Limitar",
+ "abusefilter-action-warn": "Avisar",
+ "abusefilter-action-blockautopromote": "Bloquear a autopromoción",
+ "abusefilter-action-block": "Bloquear",
+ "abusefilter-action-degroup": "Eliminar dos grupos",
+ "abusefilter-action-rangeblock": "Rango do bloqueo",
+ "abusefilter-action-disallow": "Impedir",
+ "abusefilter-revert-title": "Reverter todos os cambios feitos polo filtro $1",
+ "abusefilter-revert-intro": "Este formulario permítelle reverter todos os cambios feitos polo filtro de abusos $1.\nPor favor, teña coidado con esta ferramenta.",
+ "abusefilter-revert-preview-item": "$1: $2 {{GENDER:$7|fixo}} un $3 en $4. Accións a ser revertidas: $5 ($6)",
+ "abusefilter-revert-search-legend": "Seleccione as accións do filtro de abusos que quere reverter",
+ "abusefilter-revert-periodstart": "Comezo do período:",
+ "abusefilter-revert-periodend": "Fin do período:",
+ "abusefilter-revert-search": "Seleccionar as accións",
+ "abusefilter-revert-filter": "ID do filtro:",
+ "abusefilter-revert-preview-intro": "A continuación están as accións levadas a cabo polo filtro de abusos que serán revertidas con esta acción.\nPor favor, compróbeas con coidado e prema en \"{{int:abusefilter-revert-confirm}}\" para confirmar a súa selección.",
+ "abusefilter-revert-confirm": "Confirmar",
+ "abusefilter-revert-success": "Reverteu todas as accións feitas polo [[Special:AbuseFilter/$1|filtro de abusos $2]].",
+ "abusefilter-revert-reason": "Reversión automática de todas as accións feitas polo filtro de abusos $1.\nMotivo dado: $2",
+ "abusefilter-revert-reasonfield": "Motivo:",
+ "abusefilter-test": "Probar un filtro coas edicións anteriores",
+ "abusefilter-test-intro": "Esta páxina permítelle comprobar, {{PLURAL:$1|co último cambio|cos últimos $1 cambios}}, un filtro inserido na caixa de embaixo.\nPara cargar un filtro existente, escriba o seu ID na caixa que está por baixo da caixa de edición e prema no botón \"{{int:abusefilter-test-load}}\".",
+ "abusefilter-test-legend": "Proba do filtro",
+ "abusefilter-test-load-filter": "Cargar o filtro co ID:",
+ "abusefilter-test-submit": "Probar",
+ "abusefilter-test-load": "Cargar",
+ "abusefilter-test-user": "Cambios do usuario:",
+ "abusefilter-test-period-start": "Cambios feitos despois:",
+ "abusefilter-test-period-end": "Cambios feitos antes:",
+ "abusefilter-test-page": "Cambios feitos na páxina:",
+ "abusefilter-test-shownegative": "Mostrar os cambios que non coincidan co filtro",
+ "abusefilter-test-syntaxerr": "O filtro que introduciu contiña un erro na súa sintaxe.\nPode obter unha explicación completa premendo no botón \"{{int:abusefilter-edit-check}}\".",
+ "abusefilter-test-badtitle": "O título de páxina que inseriu non é válido. Se cadra, contén un ou máis caracteres que non se poden usar nos títulos.",
+ "abusefilter-changeslist-examine": "examinar",
+ "abusefilter-examine": "Examinar os cambios individuais",
+ "abusefilter-examine-intro": "Esta páxina permítelle examinar as variables xeradas polo filtro de abusos dos cambios dun individuo e probalos con outros filtros.",
+ "abusefilter-examine-legend": "Seleccionar os cambios",
+ "abusefilter-examine-diff": "URL das diferenzas:",
+ "abusefilter-examine-user": "Usuario:",
+ "abusefilter-examine-title": "Título da páxina:",
+ "abusefilter-examine-submit": "Procurar",
+ "abusefilter-examine-vars": "Variables xeradas por este cambio",
+ "abusefilter-examine-test": "Probar este cambio cun filtro",
+ "abusefilter-examine-test-button": "Probar o filtro",
+ "abusefilter-examine-match": "Este cambio activou o filtro.",
+ "abusefilter-examine-nomatch": "Este cambio non activou o filtro.",
+ "abusefilter-examine-syntaxerror": "A sintaxe do filtro non é válida",
+ "abusefilter-examine-notfound": "O cambio que solicitou non puido ser atopado.",
+ "abusefilter-examine-incompatible": "O cambio que solicitou non está soportado polo filtro de abusos",
+ "abusefilter-examine-noresults": "Non se atoparon resultados para os parámetros de busca que facilitou.",
+ "abusefilter-topnav": "'''Navegación do filtro de abusos'''",
+ "abusefilter-topnav-home": "Inicio",
+ "abusefilter-topnav-test": "Conxunto de probas",
+ "abusefilter-topnav-examine": "Examinar as edicións pasadas",
+ "abusefilter-topnav-log": "Rexistro de abusos",
+ "abusefilter-topnav-tools": "Ferramentas de depuración",
+ "abusefilter-topnav-import": "Importar un filtro",
+ "abusefilter-log-name": "Rexistro do filtro de abusos",
+ "abusefilter-log-header": "Este rexistro mostra un resumo dos cambios feitos aos filtros.\nPara obter máis detalles, vaia [[Special:AbuseFilter/history|á lista]] dos cambios feitos recentemente nos filtros.",
+ "abusefilter-logentry-create": "$1 {{GENDER:$2|creou}} $4 ($5)",
+ "abusefilter-logentry-modify": "$1 {{GENDER:$2|modificou}} $4 ($5)",
+ "abusefilter-log-noresults": "Non hai resultados",
+ "abusefilter-diff-title": "Diferenzas entre versións",
+ "abusefilter-diff-item": "Elemento",
+ "abusefilter-diff-version": "Versión do $1 feita por {{GENDER:$3|$2}}",
+ "abusefilter-diff-info": "Información básica",
+ "abusefilter-diff-pattern": "Condicións do filtro",
+ "abusefilter-diff-invalid": "Non se poden atopar as versións solicitadas",
+ "abusefilter-diff-backhistory": "Volver ao historial do filtro",
+ "abusefilter-diff-prev": "Edición máis vella",
+ "abusefilter-diff-next": "Edición máis nova",
+ "abusefilter-import-intro": "Pode empregar esta interface para importar filtros doutros wikis.\nNo wiki de orixe, prema en \"{{int:abusefilter-edit-export}}\" baixo a opción \"{{int:abusefilter-edit-tools}}\" na interface de edición.\nCopie a caixa de texto que aparece e péguea nestoutra caixa de texto, logo prema en \"{{int:abusefilter-import-submit}}\",",
+ "abusefilter-import-submit": "Importar os datos",
+ "abusefilter-group-default": "Predeterminado",
+ "abusefilter-http-error": "Produciuse un erro HTTP: $1",
+ "apihelp-abusefiltercheckmatch-description": "Revise se un AbuseFilter concorda cun conxunto de variables, evento de rexistro de editor AbuseFilter.\n\nvars, rcid ou logid se necesita aínda que só un pode ser usado.",
+ "apihelp-abusefiltercheckmatch-summary": "Verificar se un filtro de abusos coincide cun conxunto de variables, editor gardou evento AbuseFilter.",
+ "apihelp-abusefiltercheckmatch-extended-description": "É necesario un dos seguintesː vars, rcid ou logid, e só pode usarse un.",
+ "apihelp-abusefiltercheckmatch-param-filter": "O texto completo do filtro para verificar unha correspondencia.",
+ "apihelp-abusefiltercheckmatch-param-vars": "Matriz codificada JSON de variables contra as que facer a proba.",
+ "apihelp-abusefiltercheckmatch-param-rcid": "ID da modificación recente sobre a que verificar o filtro.",
+ "apihelp-abusefiltercheckmatch-param-logid": "ID da entrada do rexistro do filtro antiabusos sobre a que verificar o filtro.",
+ "apihelp-abusefiltercheckmatch-example-1": "Verificar se a modificación recente do ID 15 é detectada por un filtro simple",
+ "apihelp-abusefilterchecksyntax-description": "Revisar a sintaxe dun filtro Antiabuso.",
+ "apihelp-abusefilterchecksyntax-summary": "Revisar a sintaxe dun filtro Antiabuso.",
+ "apihelp-abusefilterchecksyntax-param-filter": "O texto completo do filtro para verificar a sintaxe.",
+ "apihelp-abusefilterchecksyntax-example-1": "Comprobar a sintaxe dun filtro válido",
+ "apihelp-abusefilterchecksyntax-example-2": "Comprobar a sintaxe dun filtro non válido",
+ "apihelp-abusefilterevalexpression-description": "Evaluar expresión dun Filtro de Abuso.",
+ "apihelp-abusefilterevalexpression-summary": "Avaliar a expresión dun Filtro de anti-abuso.",
+ "apihelp-abusefilterevalexpression-param-expression": "Expresión a evaluar.",
+ "apihelp-abusefilterevalexpression-example-1": "Evaluar una expresión simple",
+ "apihelp-abusefilterunblockautopromote-description": "Desbloquea a un usuario de recibir autopromocións debido a unha consecuencia do filtro de abusos.",
+ "apihelp-abusefilterunblockautopromote-summary": "Desbloquea a un usuario de recibir autopromocións debido a unha consecuencia do filtro de abusos.",
+ "apihelp-abusefilterunblockautopromote-param-user": "Nome de usuario que quere desbloquear.",
+ "apihelp-abusefilterunblockautopromote-example-1": "Quitar o bloqueo por autopromoción de [[User:Example]]",
+ "apihelp-query+abusefilters-description": "Mostrar detalles dos fitros de abuso.",
+ "apihelp-query+abusefilters-summary": "Mostrar detalles dos fitros de abuso.",
+ "apihelp-query+abusefilters-param-startid": "ID do filtro no que comezar a enumeración.",
+ "apihelp-query+abusefilters-param-endid": "Selo de tempo para rematar a enumeración.",
+ "apihelp-query+abusefilters-param-show": "Só mostrar filtros que cumplan con estos criterios.",
+ "apihelp-query+abusefilters-param-limit": "O número máximo de filtros a listar.",
+ "apihelp-query+abusefilters-param-prop": "Que propiedades obter",
+ "apihelp-query+abusefilters-example-1": "Listar os filtros públicos habilitados",
+ "apihelp-query+abusefilters-example-2": "Mostrar algúns detalles sobre os filtros",
+ "apihelp-query+abuselog-description": "Mostrar eventos que foron detectados por un dos filtros antiabusos.",
+ "apihelp-query+abuselog-summary": "Mostrar eventos que foron detectados por un dos filtros antiabusos.",
+ "apihelp-query+abuselog-param-start": "Selo de tempo para comezar a enumeración",
+ "apihelp-query+abuselog-param-end": "Selo de tempo para rematar a enumeración.",
+ "apihelp-query+abuselog-param-user": "Só mostrar entradas feitas por un usuario ou dirección IP dados.",
+ "apihelp-query+abuselog-param-title": "Só mostrar entradas ocorridas nunha páxina dada.",
+ "apihelp-query+abuselog-param-filter": "Só mostrar as entradas que foron capturadas por un ID de filtro indicado.",
+ "apihelp-query+abuselog-param-limit": "Máximo número de entradas a listar.",
+ "apihelp-query+abuselog-param-prop": "Que propiedades obter.",
+ "apihelp-query+abuselog-example-1": "Mostrar entradas recentes do rexistro",
+ "apihelp-query+abuselog-example-2": "Mostrar entradas recentes do rexistro para [[API]]",
+ "apierror-abusefilter-canttest": "Non tes permiso para probar filtros de abusos.",
+ "apierror-abusefilter-cantcheck": "Non tes permiso para comprobar a sintaxe de filtros de abusos.",
+ "apierror-abusefilter-nosuchlogid": "Non existe ningunha entrada no rexistro de abusos co ID $1.",
+ "apierror-abusefilter-badsyntax": "O filtro ten unha sintaxe non válida."
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/gom-deva.json b/www/wiki/extensions/AbuseFilter/i18n/gom-deva.json
new file mode 100644
index 00000000..f3d71e28
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/gom-deva.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "Vaishali Parab"
+ ]
+ },
+ "abusefilter-log-search-impact-saved": "फकत बदल सांबाळात",
+ "abusefilter-log-search-action-taken-any": "खंयचेय"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/grc.json b/www/wiki/extensions/AbuseFilter/i18n/grc.json
new file mode 100644
index 00000000..3e71fe4d
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/grc.json
@@ -0,0 +1,97 @@
+{
+ "@metadata": {
+ "authors": [
+ "Crazymadlover",
+ "LeighvsOptimvsMaximvs",
+ "Omnipaedista"
+ ]
+ },
+ "abusefilter": "Διαμόρφωσις διηθητηρίου καταχρήσεων",
+ "abuselog": "Κατάλογος καταχρήσεων",
+ "abusefilter-blocker": "Διηθητήριον καταχρήσεων",
+ "abusefilter-log": "Κατάλογος διηθητηρίου καταχρήσεων",
+ "abusefilter-log-search-user": "Χρώμενος:",
+ "abusefilter-log-search-title": "Ἐπιγραφή:",
+ "abusefilter-log-search-submit": "Ζητεῖν",
+ "abusefilter-log-detailedentry-global": "καθολικὸν διηθητήριον $1",
+ "abusefilter-log-detailedentry-local": "διηθητήριον $1",
+ "abusefilter-log-detailslink": "λεπτομέρειαι",
+ "abusefilter-log-details-var": "Μεταβλητή",
+ "abusefilter-log-details-val": "Τιμή",
+ "abusefilter-log-details-private": "Ἰδιωτικὰ δεδομένα",
+ "abusefilter-log-noactions": "οὐδέν",
+ "abusefilter-log-linkoncontribs": "κατάλογος καταχρήσεων",
+ "abusefilter-list": "Ἅπαντα τὰ διηθητήρια",
+ "abusefilter-list-status": "Καθεστώς",
+ "abusefilter-list-visibility": "Ὁρατότης",
+ "abusefilter-list-edit": "Μεταγράφειν",
+ "abusefilter-list-details": "Λεπτομέρειαι",
+ "abusefilter-hidden": "Ἰδιωτική",
+ "abusefilter-unhidden": "Δημοσία",
+ "abusefilter-deleted": "Διαγεγραμμένον",
+ "abusefilter-new": "Ποιεῖν νέον διηθητήριόν τι",
+ "abusefilter-status-global": "Καθολική",
+ "abusefilter-list-options": "Ἐπιλογαί",
+ "abusefilter-list-options-deleted": "Διαγεγραμμένα διηθητήρια:",
+ "abusefilter-list-options-submit": "Ἐνημέρωσις",
+ "abusefilter-tools-reautoconfirm-user": "Χρώμενος:",
+ "abusefilter-edit-status-label": "Στατιστικά:",
+ "abusefilter-edit-new": "Νέον διηθητήριον",
+ "abusefilter-edit-flags": "Σημαῖαι:",
+ "abusefilter-edit-rules": "Συνθῆκαι:",
+ "abusefilter-edit-notes": "Σημειώσεις:\n:''(ἰδιωτικόν)",
+ "abusefilter-edit-lastmod-text": "$1 ὑπὸ $2",
+ "abusefilter-edit-throttle-period": "Χρονικὴ περίοδος:",
+ "abusefilter-edit-warn-other": "Ἄλλον μήνυμα",
+ "abusefilter-edit-warn-actions": "Δράσεις:",
+ "abusefilter-edit-main": "Παράμετροι διηθητηρίου",
+ "abusefilter-edit-done-subtitle": "Διηθητήριον μεταγεγραμμένον.",
+ "abusefilter-edit-history": "Αἱ προτέραι:",
+ "abusefilter-edit-tools": "Ἐργαλεῖα:",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Πρόσθεσις (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Ἀφαίρεσις (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Πολλαπλασίασις (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Διαίρεσις (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Κατὰ μέτρον (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Δύναμις (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Τελεσταὶ συγκρίσεως",
+ "abusefilter-edit-builder-op-bool-not": "Οὐ (!)",
+ "abusefilter-edit-builder-op-bool-and": "Καί (&)",
+ "abusefilter-edit-builder-op-bool-or": "Ἤ (|)",
+ "abusefilter-edit-builder-group-funcs": "Τελέσεις",
+ "abusefilter-edit-builder-funcs-norm": "Κανονικοποιεῖν (norm)",
+ "abusefilter-edit-builder-funcs-strpos": "Θέσις τοῦ ὑφορμαθού ἐν τῷ ὁρμαθῷ (strpos)",
+ "abusefilter-edit-builder-group-vars": "Μεταβληταί",
+ "abusefilter-edit-builder-vars-action": "Δρᾶσις",
+ "abusefilter-edit-builder-vars-user-groups": "Ὁμάδες (τῶν ἐνδεχομένων συμπεριλαμβανομένων) αἷνπερ ἀνήκει ὁ χρώμενος",
+ "abusefilter-history-foruser": "Μεταβολαὶ ὑπὸ $1",
+ "abusefilter-history-hidden": "Κεκρυμμένη",
+ "abusefilter-history-global": "Καθολική",
+ "abusefilter-history-timestamp": "Χρόνος",
+ "abusefilter-history-user": "Χρώμενος",
+ "abusefilter-history-flags": "Σημαῖαι",
+ "abusefilter-history-comments": "Σχόλια",
+ "abusefilter-history-actions": "Δράσεις",
+ "abusefilter-history-deleted": "Διαγεγραμμένη",
+ "abusefilter-history-filterid": "Διηθητήριον",
+ "abusefilter-history-select-user": "Χρώμενος:",
+ "abusefilter-history-select-submit": "Ἐκλεπτύνειν",
+ "abusefilter-history-diff": "Μεταβολαί",
+ "abusefilter-action-tag": "Προσάρτημα",
+ "abusefilter-action-disallow": "Ἀπαγορεύειν",
+ "abusefilter-revert-filter": "Διηθητήριον:",
+ "abusefilter-revert-confirm": "Κυροῦν",
+ "abusefilter-revert-reason": "Αὐτόματος μεταστροφὴ ἁπάντων τῶν δράσεων τοῦ διηθητηρίου καταχρήσεων ἐξ αἰτίας τοῦ διηθητηρίου $1.\nΔεδομένη αἰτία: $2",
+ "abusefilter-test-submit": "Δοκιμή",
+ "abusefilter-test-load": "Φορτίζειν",
+ "abusefilter-changeslist-examine": "ἐξετάζειν",
+ "abusefilter-examine-diff": "URL διαφ.:",
+ "abusefilter-examine-user": "Χρώμενος:",
+ "abusefilter-examine-submit": "Ζητεῖν",
+ "abusefilter-topnav-home": "Οἰκία",
+ "abusefilter-log-name": "Κατάλογος Διηθητηρίου Καταχρήσεων",
+ "abusefilter-diff-item": "Τεμάχιον",
+ "abusefilter-diff-info": "Βασικὴ πεῦσις",
+ "abusefilter-diff-pattern": "Συνθῆκαι διηθητηρίου",
+ "abusefilter-import-submit": "Εἰσάγειν δεδομένα"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/gsw.json b/www/wiki/extensions/AbuseFilter/i18n/gsw.json
new file mode 100644
index 00000000..9fad304d
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/gsw.json
@@ -0,0 +1,380 @@
+{
+ "@metadata": {
+ "authors": [
+ "Als-Chlämens",
+ "Als-Holder",
+ "J. 'mach' wust",
+ "Melancholie",
+ "Matma Rex"
+ ]
+ },
+ "abusefilter-desc": "Wändet automatischi Heurischtike uf Änderigen aa.",
+ "abusefilter": "Missbruuchsfilter-Yystellige",
+ "abuselog": "Missbruuchs-Logbuech",
+ "abusefilter-intro": "Willchu uf dr Hauptsyte vu dr Missbruuchsfilter-Verwaltig.\nDr Missbruuchsfilter isch e automatische Software-Mechanismus, wu automatische Heurischtike an allene Aktion durfiert.\nDie Syte zeigt e Lischte vu definierte Filter. D Filter chenne uf däre Syte au gänderert wäre.",
+ "abusefilter-mustbeeditor": "Us Sicherheitsgrind derfe numme Benutzer die Oberflächi verwände, wu s Rächt hän, Missbruuchsfilter z ändere.",
+ "abusefilter-warning": "'''Obacht''': Die Aktion isch automatisch as schädlig erkannt wore.\nUnkonschtruktivi Byyträg wäre zmeischt zimli schnäll usegnuh. In widerholte un bsundersch schlimme Fäll wird Dyy Benutzerkonto bzw. Dyyni IP-Adräss gsperrt.\nWänn Du dänksch, ass Dyyni Änderig konschtruktiv gsi isch, chasch si aber bstätige, indäm Du nomol uf „{{int:savearticle}}“ drucksch.\n\nChurzbschryybig vu dr verletzte Regle: '''$1'''",
+ "abusefilter-disallowed": "Die Aktion isch automatisch as schädlig erkannt wore un isch wäge däm nit durgfiert wore.\nWänn Du dänksch, ass Dyyni Änderig konschtruktiv gsi isch, wänd Di bitte an e Ammann un schryyb em, was Du mit Dyynere Änderig hesch welle.\n\nChurzbschryybig vu dr verletzte Regle: $1",
+ "abusefilter-blocked-display": "Die Aktion isch automatisch as schädli erkannt wore un isch nit uusgfiert wore.\nDezue isch au no Dyy Benutzerkonto un alli IP-Adrässe wu derzue ghere gsperrt wore.\nWänn Du dänksch, ass des e Fähler isch, no wänd Di bitte an e Ammann.\n\nChurzbschryybig vu dr verletzte Regle: $1",
+ "abusefilter-degrouped": "Die Aktion isch automatisch as schädli erkannt wore un isch nit uusgfiert wore.\nWel s megli isch, ass Dyy Benutzerkonto kompromittiert woren isch, sin Dir alli gwährte Rächt gnuh wore.\nWänn Du dänksch, ass des e Fähler isch, no wänd Di bitte an e Bürokrat un schryyb em, was Du grad gmacht hesch, ass Dyyni Rächt widerhärgstellt chenne wäre.\n\nChurzbschryybig vu dr verletzte Regle: $1",
+ "abusefilter-autopromote-blocked": "Die Aktion isch as schädlig erkannt wore un isch nit uusgfiert wore.\nDezue sin Dir as Sicherheitsmaßnahm churzzytig e Teil Rächt gnuh wore, wu automatisch vergee wore sin.\n\nChurzbschryybig vu dr verletzte Regle: $1",
+ "abusefilter-blocker": "Missbruuchsfilter",
+ "abusefilter-blockreason": "Du bisch vum Missbruuchsfilter automatisch gsperrt wore. Bschryybig vu Regle, wu do zuetrifft: $1",
+ "abusefilter-degroupreason": "Dyyni Berächtigunge sin vum Missbruuchsfilter automatisch bschränkt wore. Byschryybig vu dr Regle: $1",
+ "abusefilter-accountreserved": "Dää Benutzername isch fir dr Missbruuchsfilter reserviert.",
+ "right-abusefilter-modify": "Missbruuchsfilter bearbeite",
+ "right-abusefilter-view": "Missbruuchsfilter aaluege",
+ "right-abusefilter-log": "Missbruuchs-Logbuech aaluege",
+ "right-abusefilter-log-detail": "Detailliert Missbruuchs-Logbuech aaluege",
+ "right-abusefilter-private": "Privati Date im Missbruuchs-Logbuech aaluege",
+ "right-abusefilter-modify-restricted": "Filter ändere mit bschränkte Aktione",
+ "right-abusefilter-revert": "Alli Änderige vum Missbruchsfilter, wu aagee isch, zruggsetze",
+ "right-abusefilter-view-private": "D Missbruchfilter aaluege, wu as privat markiert sin",
+ "right-abusefilter-log-private": "As privat markierti Yytreg im Missbruchsfilter aaluege",
+ "right-abusefilter-hide-log": "Yytreg im Missbruuchsfilter-Logbuech uusblände",
+ "right-abusefilter-hidden-log": "Uusbländeti Missbruuchsfilter-Logbuech-Yytreg aaluege",
+ "action-abusefilter-modify": "Missbruuchsfilter ändere",
+ "action-abusefilter-view": "Missbruuchsfilter aaluege",
+ "action-abusefilter-log": "Missbruuchsfilterlogbuech aaluege",
+ "action-abusefilter-log-detail": "Detaillierti Yyträg im Missbruuchsfilterlogbuech aaluege",
+ "action-abusefilter-private": "Privati Date im Missbruuchsfilterlogbuech aaluege",
+ "action-abusefilter-modify-restricted": "Missbruuchsfilter ändere mit yygschränkte Aktione",
+ "action-abusefilter-revert": "Alli Änderige vun eme Missbruuchsfilter zrucksetze",
+ "action-abusefilter-view-private": "d Missbruchsfilter aaluege, wu as privat markiert sin",
+ "abusefilter-log": "Missbruuchsfilter-Logbuech",
+ "abusefilter-log-summary": "Des Logbuech zeigt alli Aktione, wu vu dr Filter usegfilteret wore sin.",
+ "abusefilter-log-search": "Im Missbruuchs-Logbuech sueche",
+ "abusefilter-log-search-user": "Benutzer:",
+ "abusefilter-log-search-filter": "Filter-ID:",
+ "abusefilter-log-search-title": "Titel:",
+ "abusefilter-log-search-wiki": "Wiki:",
+ "abusefilter-log-search-submit": "Sueche",
+ "abusefilter-log-entry": "$1: $2 het e Missbrauchsfilter uusglest dur d Aawändig vu $3 uf $4. Aktion: $5; Filterbschryybig: $6",
+ "abusefilter-log-detailedentry-meta": "$1: $2 het dr $3 uusglest. Dees verursacht het e „$4“ uf $5. Ergriffeni Maßnahme: $6; Filterbschryybung: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "Wältwyte Filter $1",
+ "abusefilter-log-detailedentry-local": "Filter $1",
+ "abusefilter-log-detailslink": "Detail",
+ "abusefilter-log-diff": "Unterschid",
+ "abusefilter-log-hidelink": "Sichtbarkeit ändere",
+ "abusefilter-log-details-legend": "Detail fir dr Logbuech-Yytrag $1",
+ "abusefilter-log-details-var": "Variable",
+ "abusefilter-log-details-val": "Wärt",
+ "abusefilter-log-details-vars": "Aktionsparameter",
+ "abusefilter-log-details-private": "Privati Date",
+ "abusefilter-log-details-ip": "IP-Adräss vum Verursacher",
+ "abusefilter-log-noactions": "keini",
+ "abusefilter-log-details-diff": "Änderige, wu in dr Bearbeitig gmacht wore sin",
+ "abusefilter-log-linkoncontribs": "Missbruchs-Logbuech",
+ "abusefilter-log-linkoncontribs-text": "Missbruchs-Logbuech fir dää Benuzter",
+ "abusefilter-log-hidden": "(Yytrag versteckt)",
+ "abusefilter-log-hidden-implicit": "(versteckt, wel d Version glescht woren isch)",
+ "abusefilter-log-cannot-see-details": "Du derfsch d Einzelheite zue däre Yygab nit aaluege.",
+ "abusefilter-log-details-hidden": "Du chasch d Detail vu däm Yytrag nit bschaue, wel si uusbländet sin fir d Effentligkeit.",
+ "abusefilter-log-hide-legend": "Logbuechyytrag verstecke",
+ "abusefilter-log-hide-id": "Logbuech-Yytrags-ID:",
+ "abusefilter-log-hide-hidden": "Dää Yytrag fir d Effentligkeit uusblände",
+ "abusefilter-log-hide-reason": "Grund:",
+ "abusefilter-log-hide-forbidden": "Du derfsch d Yytreg vum Missbruuchsfilter-Logbuech nit uusblände.",
+ "abusefilter-logentry-suppress": "het [[$1]] uusbländet",
+ "abusefilter-logentry-unsuppress": "het [[$1]] sichtbar gmacht",
+ "logentry-abusefilter-hit": "$1 het bim Ussfüere vo de Aktion „$5“ uff $3 de Filter $4 ussglöst. Usswirkig: $6 ($7)",
+ "abusefilter-management": "Missbruuchsfilter-Verwaltig",
+ "abusefilter-list": "Alli Filter",
+ "abusefilter-list-id": "Filter-ID",
+ "abusefilter-list-status": "Status",
+ "abusefilter-list-public": "Effentligi Bschryybig",
+ "abusefilter-list-consequences": "Folge",
+ "abusefilter-list-visibility": "Sichtbarkeit",
+ "abusefilter-list-hitcount": "Träfferzeller",
+ "abusefilter-list-edit": "Bearbeite",
+ "abusefilter-list-details": "Detail",
+ "abusefilter-list-limit": "Aazahl pro Syte:",
+ "abusefilter-list-lastmodified": "Zletscht gänderet",
+ "abusefilter-list-group": "Filtergruppe",
+ "abusefilter-hidden": "Privat",
+ "abusefilter-unhidden": "Effentlig",
+ "abusefilter-enabled": "Aktiviert",
+ "abusefilter-deleted": "Glescht",
+ "abusefilter-disabled": "Deaktiviert",
+ "abusefilter-hitcount": "{{PLURAL:$1|1 Träffer|$1 Träffer}}",
+ "abusefilter-new": "E neje Filter aalege",
+ "abusefilter-return": "Zrugg zue dr Missbruuchsfilter-Verwaltig",
+ "abusefilter-status-global": "Wältwyt",
+ "abusefilter-list-options": "Optione",
+ "abusefilter-list-options-deleted": "Gelschti Filter:",
+ "abusefilter-list-options-deleted-only": "Nume gleschti Filter aazeige",
+ "abusefilter-list-options-deleted-hide": "Gleschti Filter uusblände",
+ "abusefilter-list-options-deleted-show": "Gleschti Filter mit dryy neh",
+ "abusefilter-list-options-scope": "Zeig Filter zue:",
+ "abusefilter-list-options-scope-local": "Lokal Wiki",
+ "abusefilter-list-options-scope-global": "Globali Regle",
+ "abusefilter-list-options-disabled": "Deaktivierti Filter:",
+ "abusefilter-list-options-hidedisabled": "Deaktivierti Filter uusblände",
+ "abusefilter-list-options-submit": "Spychere",
+ "abusefilter-tools-text": "Do sin e paar Wärchzyyg, wu hilfryych chenne syy bim Formuliere un bi dr Fählersuechi vu Missbruuchsfilter.",
+ "abusefilter-tools-expr": "Usdruck-Teschter",
+ "abusefilter-tools-submitexpr": "Priefe",
+ "abusefilter-tools-reautoconfirm": "„Bstätigter-Benutzer“-Status widerhärstelle",
+ "abusefilter-tools-reautoconfirm-user": "Benutzer:",
+ "abusefilter-tools-reautoconfirm-submit": "Wider zum bstätigte Benutzer mache",
+ "abusefilter-reautoconfirm-none": "{{GENDER:$1|Däm Benutzer|Däre Benutzeri}} isch dr Status „Bstätigter Benutzer“ nit entzoge wore.",
+ "abusefilter-reautoconfirm-notallowed": "Du bisch nit berächtigt, Benutzer wider zue bstätigte Benutzer z mache.",
+ "abusefilter-reautoconfirm-done": "Dr Status vum Benutzerkonto as \"bstätigte Benutzer\" isch widerhärgstellt wore",
+ "abusefilter-status": "Vu {{PLURAL:$1|dr letschte Aktion|dr letschte $1 Aktione}} {{PLURAL:$2|het eini|hän $2}} ($3 %) dr Gränzwärt vu $4 erreicht. $5 ($6 %) {{PLURAL:$5|isch|sin}} vu eim vu dr grad aktivierte Filter erkannt wore.",
+ "abusefilter-edit-subtitle": "Bearbeit Filter $1",
+ "abusefilter-edit-subtitle-new": "Dr Filter wird grad aagleit.",
+ "abusefilter-edit-oldwarning": "<strong>Du bearbeitsch nit di aktuäll, sundere ne elteri Version vu däm Filter. D Statischtik giltet nume fir di letscht Version vum Filter. Wänn Du spycheresch, wird die as aktuälli Version nej gspycheret. </strong> &bull; [[Special:AbuseFilter/history/$2|Zrugg zue dr Versionsgeschicht vum Filter]]",
+ "abusefilter-edit-status-label": "Statischtike:",
+ "abusefilter-edit-status": "Vu dr letschte {{PLURAL:$1|Aktion|$1 Aktione}} {{PLURAL:$2|isch|sin}} $2 ($3 %) vu däm Filter gchännt wore. Im Durschnitt het dr Filter e Laufzyt vu $4 ms, un är het $5 {{PLURAL:$5|Bedingig|Bedingige}} vum Bedingigslimit brucht.",
+ "abusefilter-edit-status-profile": "Vu dr letschte {{PLURAL:$1|Aktion|$1 Aktione}} {{PLURAL:$2|isch|sin}} $2 ($3 %) vu däm Filter gchännt wore. Im Durschnitt het dr Filter e Laufzyt vu $4 ms, un är het $5 {{PLURAL:$5|Bedingig|Bedingige}} vum Bedingigslimit brucht.",
+ "abusefilter-edit-new": "Neje Filter",
+ "abusefilter-edit-save": "Filter spychere",
+ "abusefilter-edit-id": "Filter-ID:",
+ "abusefilter-edit-description": "Bschryybig:\n:''(effentlig sichtbar)''",
+ "abusefilter-edit-group": "Filtergruppe:",
+ "abusefilter-edit-flags": "Flags:",
+ "abusefilter-edit-enabled": "Dää Filter aktiviere",
+ "abusefilter-edit-deleted": "As glescht markiere",
+ "abusefilter-edit-hidden": "Detail vu däm Filter nit effentlig aazeige",
+ "abusefilter-edit-global": "Globale Filter",
+ "abusefilter-edit-rules": "Bedingige:",
+ "abusefilter-edit-notes": "Notize:\n:''(privat)",
+ "abusefilter-edit-lastmod": "Letschti Bearbeitig vum Filter:",
+ "abusefilter-edit-lastmod-text": "$1 vu $2",
+ "abusefilter-edit-hitcount": "Träffer vum Filter:",
+ "abusefilter-edit-consequences": "Aktione, wu bi me Träffer uusgfiert wäre",
+ "abusefilter-edit-action-warn": "Aktione uusfiere noch ere Warnig an de Benutzer",
+ "abusefilter-edit-action-disallow": "Verhinderet d Aktion, wu vum Benutzer gmacht woren isch",
+ "abusefilter-edit-action-blockautopromote": "„Bstätiger-Benutzer“-Status entzieh",
+ "abusefilter-edit-action-degroup": "Benutzer us allene Gruppe mit Sonderrächt useneh",
+ "abusefilter-edit-action-block": "Benutzer/IP-Adrädd sperre",
+ "abusefilter-edit-action-throttle": "Aktion nume uuslese, wänn dr Benutzer e bstimmti Gränz erreicht het",
+ "abusefilter-edit-action-rangeblock": "/16-Range sperre, wu dr Benutzer drus stammt.",
+ "abusefilter-edit-action-tag": "Markier d Bearbeitig fir e speteri Iberpriefig.",
+ "abusefilter-edit-throttle-count": "Aazahl vun erlaubte Aktione:",
+ "abusefilter-edit-throttle-period": "Zytruum:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|Sekund|Sekunde}}",
+ "abusefilter-edit-throttle-groups": "Regle fir d Gruppedrossle:\n:''(eini pro Zyyle, verbinde mit Kommas)''",
+ "abusefilter-edit-warn-message": "Syschtemnochricht fir d Warnig:",
+ "abusefilter-edit-warn-other": "Anderi Nochricht",
+ "abusefilter-edit-warn-other-label": "Sytename vu dr andere Nochricht:\n:''(ohni MediaWiki-Präfix)''",
+ "abusefilter-edit-warn-actions": "Aktione:",
+ "abusefilter-edit-warn-preview": "Vorschau uusgwehlti Nochricht",
+ "abusefilter-edit-warn-edit": "Leg uusgwehlti Nochricht aa oder bearbeit si",
+ "abusefilter-edit-tag-tag": "Giltigi Label (eis pro Zyyle):",
+ "abusefilter-edit-denied": "Du chasch d Detail vu däm Filter nit bschaue, wel si versteckt sin.",
+ "abusefilter-edit-main": "Filterparameter",
+ "abusefilter-edit-done-subtitle": "Filter bearbeitet",
+ "abusefilter-edit-done": "Dyyni Änderige am Filter $1 sin erfolgryych gspycheret wore.",
+ "abusefilter-edit-badsyntax": "Im Filter, wu Du spezifiziert hesch, het s e Syntaxfähler. D Parseruusgab isch: <pre>$1</pre>",
+ "abusefilter-edit-restricted": "Du chasch dää Filter nit bearbeite, wel s do eini oder meh bschränkti Aktione din het. Bitte frog e Benutzer, wu s Rächt het, bschränkti Aktion zuezfiege, ass är des fir Dii macht.",
+ "abusefilter-edit-viewhistory": "Versionsgschicht vum Filter aaluege",
+ "abusefilter-edit-history": "Versionsgschicht:",
+ "abusefilter-edit-check": "Syntaxpriefig",
+ "abusefilter-edit-badfilter": "Dä Filter, wu Du aagee hesch, git s nit",
+ "abusefilter-edit-revert": "Aktione vu däm Filter zruggsetze",
+ "abusefilter-edit-tools": "Wärchzyyg:",
+ "abusefilter-edit-test-link": "Dää Filter versuechswys uf di letschte Bearbeitige aawände",
+ "abusefilter-edit-export": "Dää Filter in e ander Wiki exportiere",
+ "abusefilter-edit-syntaxok": "Kei Syntaxfähler gfunde.",
+ "abusefilter-edit-syntaxerr": "Syntaxfähler gfunde: $1",
+ "abusefilter-edit-bad-tags": "Ei oder mehreri vu dr Markierige, wu aagee sin, sin nit giltig.\nMarkierige sotte churz syy un s sotte kei Sonderzeiche din haa.",
+ "abusefilter-edit-notallowed": "Du derfsch kei Missbruuchsfilter aalege oder bearbeite",
+ "abusefilter-edit-builder-select": "Wehl e Option uus go si am Cursor yyzfiege",
+ "abusefilter-edit-builder-group-op-arithmetic": "Arithmetischi Operatore",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Addition (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Subtraktion (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Multiplikation (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Division (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Modulo (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Potenz (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Verglyychsoperatore",
+ "abusefilter-edit-builder-op-comparison-equal": "Isch glyych (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Isch nit glyych (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "Chleiner wie (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Greßer wie (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Chleiner oder glyych (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Greßer oder glyych (>=)",
+ "abusefilter-edit-builder-group-op-bool": "Boolesche Operatore",
+ "abusefilter-edit-builder-op-bool-not": "Nit (!)",
+ "abusefilter-edit-builder-op-bool-and": "Un (&)",
+ "abusefilter-edit-builder-op-bool-or": "Oder (|)",
+ "abusefilter-edit-builder-group-misc": "Verschidnigs",
+ "abusefilter-edit-builder-misc-in": "In Zeichefolg din (in)",
+ "abusefilter-edit-builder-misc-like": "Passt zue ma Muschter (like)",
+ "abusefilter-edit-builder-misc-rlike": "Passt uf regulären Uusdruck (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "Passt uf regulären Uusdruck, nit sensitiv uf Groß- un Chleischryybig (irlike)",
+ "abusefilter-edit-builder-misc-contains": "Im linke String het s e rächte String (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "Wortwertlicher String (\"\")",
+ "abusefilter-edit-builder-misc-tern": "Ternäre Operator (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "Konditional (wänn X derno Y au Z)",
+ "abusefilter-edit-builder-group-funcs": "Funktione",
+ "abusefilter-edit-builder-funcs-length": "Lengi vu dr Zeichefolg (length)",
+ "abusefilter-edit-builder-funcs-lcase": "In Chleibuechstabe konvertiere (lcase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "Zeiche, wu verwirre, normalisiere (ccnorm)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "Doppleti Zeichen useneh (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "Spezialzeiche / Zeiche insgsamt (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "Normalisiere (norm)",
+ "abusefilter-edit-builder-funcs-count": "Aazahl wievyylmol d Zeichenfolg X in dr Zeichenfolg Y vorchunnt (count)",
+ "abusefilter-edit-builder-funcs-rcount": "Aazahl wievyl Mol Regex X im String Y vorchunnt (rcount)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "Leerstelle uuseneh (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "Spezialzeiche uuseneh (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "Ghert die IP eme Beryych aa? (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "Suech in Zeichekette na mehrere Unterkette (contains_any)",
+ "abusefilter-edit-builder-funcs-substr": "Unterstring (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "Position vum Unterstring im String (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "Unterstring dur String ersetze (str_replace)",
+ "abusefilter-edit-builder-funcs-rescape": "Escape-Zeichechette as Buechstab in eme reguläre Uusdruck (rescape)",
+ "abusefilter-edit-builder-funcs-set_var": "Variable setze (set_var)",
+ "abusefilter-edit-builder-group-vars": "Variable",
+ "abusefilter-edit-builder-vars-accountname": "Benutzername (on account creation)",
+ "abusefilter-edit-builder-vars-timestamp": "Unix-Zytstämpfel vu dr Änderig",
+ "abusefilter-edit-builder-vars-action": "Aktion",
+ "abusefilter-edit-builder-vars-addedlines": "Zyyle bi dr Bearbeitig zuegfiegt",
+ "abusefilter-edit-builder-vars-delta": "Greßi bi dr Bearbeitig gänderet",
+ "abusefilter-edit-builder-vars-diff": "Vereinigte Versionsunterschid vu dr Bearbeitig",
+ "abusefilter-edit-builder-vars-newsize": "Neji Sytegreßi",
+ "abusefilter-edit-builder-vars-oldsize": "Alti Sytegreßi",
+ "abusefilter-edit-builder-vars-removedlines": "Zyyle bi dr Bearbeitig usegnuh",
+ "abusefilter-edit-builder-vars-summary": "Zämmefassig",
+ "abusefilter-edit-builder-vars-article-id": "Syten-ID",
+ "abusefilter-edit-builder-vars-article-ns": "Namensruum vu dr Syte",
+ "abusefilter-edit-builder-vars-article-text": "Titel vu dr Syte (ohni Namensruum)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Voller Sytename",
+ "abusefilter-edit-builder-vars-movedfrom-id": "Artikel-ID vu dr Quällsyte",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "Namensruum vu dr Quällsyte",
+ "abusefilter-edit-builder-vars-movedfrom-text": "Titel vu dr Quällsyte",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "Vollständige Titel vu dr Quällsyte",
+ "abusefilter-edit-builder-vars-movedto-id": "Artikel-ID vu dr Ziilsyte",
+ "abusefilter-edit-builder-vars-movedto-ns": "Namensruum vu dr Ziilsyte",
+ "abusefilter-edit-builder-vars-movedto-text": "Titel vu dr Ziilsyte",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "Vollständige Titel vu dr Ziilsyte",
+ "abusefilter-edit-builder-vars-user-editcount": "Byytragszellig vum Benutzer",
+ "abusefilter-edit-builder-vars-user-age": "Alter vum Benutzerkonto",
+ "abusefilter-edit-builder-vars-user-name": "Name vum Benutzerkonto",
+ "abusefilter-edit-builder-vars-user-groups": "Gruppe (au impliziti), wu dr Benutzer Mitglid isch",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "Zytpunkt, wu d E-Mail-Adräss bstätigt woren isch",
+ "abusefilter-edit-builder-vars-recent-contributors": "Di letschte fimf Bearbeiter vum Artikel",
+ "abusefilter-edit-builder-vars-all-links": "Alli extärne Links im neje Täxt",
+ "abusefilter-edit-builder-vars-added-links": "Alle extärne Links, wu dur d Bearbeitig zuegfiegt wore sin",
+ "abusefilter-edit-builder-vars-removed-links": "All extärne Links, wu dur d Bearbeitig usegnuh wore sin",
+ "abusefilter-edit-builder-vars-old-text": "Dr alt Sytetäxt vor dr Bearbeitig",
+ "abusefilter-edit-builder-vars-new-text": "Neje Sytetäxt no dr Bearbeitig",
+ "abusefilter-edit-builder-vars-new-text-stripped": "Neje Sytetäxt ohni Markierige",
+ "abusefilter-edit-builder-vars-new-html": "HTML-Quälltäxt vu dr neje Version",
+ "abusefilter-edit-builder-vars-restrictions-edit": "Schutzstatus vu däre Syte",
+ "abusefilter-edit-builder-vars-restrictions-move": "Schutzstatus vu däre Syte verschiebe",
+ "abusefilter-edit-builder-vars-restrictions-create": "Syteschutz aalege",
+ "abusefilter-edit-builder-vars-restrictions-upload": "Uffeladschutz vu dr Datei",
+ "abusefilter-edit-builder-vars-old-text-stripped": "Alte Sytetäkscht, wu alli Markierige uusegnuu sin",
+ "abusefilter-edit-builder-vars-old-links": "Links in dr Syte, vor dr Bearbeitig",
+ "abusefilter-edit-builder-vars-old-html": "Alte Sytetäkscht, parsed in HTML",
+ "abusefilter-edit-builder-vars-minor-edit": "Eb d Bearbeitig as \"chly\" markiert wird oder nit",
+ "abusefilter-edit-builder-vars-file-sha1": "SHA1-Hash vu Dateiinhalt",
+ "abusefilter-filter-log": "Missbruuchsfilter-Änderige",
+ "abusefilter-history": "Versionsgschicht fir Missbruuchsfilter $1 ändere",
+ "abusefilter-history-foruser": "Änderige vu $1",
+ "abusefilter-history-hidden": "Versteckt",
+ "abusefilter-history-enabled": "Aktiviert",
+ "abusefilter-history-global": "Wältwyt",
+ "abusefilter-history-timestamp": "Zyt",
+ "abusefilter-history-user": "Benutzer",
+ "abusefilter-history-public": "Effentligi Filterbschrybig",
+ "abusefilter-history-flags": "Flag",
+ "abusefilter-history-filter": "Filterregle",
+ "abusefilter-history-comments": "Kommentar",
+ "abusefilter-history-actions": "Aktione",
+ "abusefilter-history-backedit": "Zrugg zum Filtereditor",
+ "abusefilter-history-deleted": "Glescht",
+ "abusefilter-history-filterid": "Filter",
+ "abusefilter-history-select-legend": "Verbessereti Suechi",
+ "abusefilter-history-select-user": "Benutzer:",
+ "abusefilter-history-select-submit": "verbessere",
+ "abusefilter-history-diff": "Änderige",
+ "abusefilter-history-error-hidden": "Dr Filter, wu Du aafrogsch, isch versteckt un du chasch sy Gschicht nit bschaue.",
+ "abusefilter-exception-unexpectedatend": "Nit erwartet \"$2\" am Zeiche „$1“.",
+ "abusefilter-exception-expectednotfound": "Het e $2 bim Zeiche $1 erwartet, nit gfunde (statt däm $3 $4 gfunde).",
+ "abusefilter-exception-unrecognisedkeyword": "Nit bekannt Schlisselwort $2 bim Zeiche $1.",
+ "abusefilter-exception-unexpectedtoken": "Nit erwartet Token \"$3\" (vum Typ $2) bim Zeiche $1.",
+ "abusefilter-exception-unclosedstring": "Nit gschlosseni Chlammere fangt bim Zeiche $1 aa.",
+ "abusefilter-exception-invalidoperator": "Nit zuelässige Operator \"$2\" bim Zeiche $1.",
+ "abusefilter-exception-unrecognisedtoken": "Nit bekannt Token \"$2\" bim Zeiche $1.",
+ "abusefilter-exception-noparams": "Keini Parameter sin aagee zue dr Funkton \"$2\" bim Zeiche $1.",
+ "abusefilter-exception-dividebyzero": "Nit zuelässigi Division $2 dur Null bim Zeiche $1.",
+ "abusefilter-exception-unrecognisedvar": "Nit erkannti Variable $2 bim Zeiche $1",
+ "abusefilter-exception-notenoughargs": "Nit gnue Argumänt gruefe fir d Funktion $2 bim Zeiche $1.\nHet $3 {{PLURAL:$3|Argumänt|Argumänt}} erwartet, het $4 iberchu",
+ "abusefilter-exception-regexfailure": "Fähler im reguläre Uusdruck \"$3\" bim Zeiche $1: \"$2\"",
+ "abusefilter-exception-overridebuiltin": "Nit zuelässigs Uusschalte vu dr yyböute Variable „$2“ bim Zeiche $1.",
+ "abusefilter-exception-outofbounds": "Frogt noche eme Lischtepunkt $2 (Lischtegreßi = $3) bim Zeiche $1, wu s nit git.",
+ "abusefilter-exception-notlist": "Frogt noch eme Punkt in eme Dateberyych bim Zeiche $1, wu s kei Dateberyych het",
+ "abusefilter-action-tag": "Markierig",
+ "abusefilter-action-throttle": "Drossle",
+ "abusefilter-action-warn": "Warne",
+ "abusefilter-action-blockautopromote": "Autopromote sperre",
+ "abusefilter-action-block": "Sperre",
+ "abusefilter-action-degroup": "Us dr Gruppe useneh",
+ "abusefilter-action-rangeblock": "Range-Sperri",
+ "abusefilter-action-disallow": "Verbiete",
+ "abusefilter-revert-title": "Alli Änderige vum Filter $1 zruggsetze",
+ "abusefilter-revert-intro": "Die Form erlaubt Dir alli Änderige vum Missbruuchsfilter wäge em Filter $1 zruggzsetze.\nBitte bii sorgfältig, wänn Du des Wärchzyyg bruuchsch.",
+ "abusefilter-revert-preview-item": "$1: $2 het e $3 an $4 gmacht. Aktione, wu zrugggsetzt solle wäre: $5 ($6)",
+ "abusefilter-revert-search-legend": "Wehl Aktione vum Missbruuchsfilter uus, wu solle zrugggsetzt wäre",
+ "abusefilter-revert-periodstart": "Aafang vum Zytruum:",
+ "abusefilter-revert-periodend": "Änd vum Zytruum:",
+ "abusefilter-revert-search": "Wehl Aktione uus",
+ "abusefilter-revert-filter": "Filter:",
+ "abusefilter-revert-preview-intro": "Do unte sin d Aktion vum Missbruuchfilter, wu dur die Aktion zrugggsetzt wäre.\nBitte prief si sorgfältig un druck \"Bstätige\" go Dyyni Uuswahl bstätige.",
+ "abusefilter-revert-confirm": "Bstätige",
+ "abusefilter-revert-success": "Du hesch alli Aktionen zrugggsetzt, wu vum Missbruuchsfilter mgacht wore sin wäg em [[Special:AbuseFilter/$1|Filter $2]].",
+ "abusefilter-revert-reason": "Alli Aktione vum Missbruuchsfilter automatisch zrugggsetzt wäg em Filter $1.\nGrund: $2",
+ "abusefilter-revert-reasonfield": "Grund:",
+ "abusefilter-test": "E Filter gege friejeri Bearbeitige teschte",
+ "abusefilter-test-intro": "Die Syte macht s megli mit eme Filter, wu unte im Chäschtli yygee isch, di {{PLURAL:$1|letscht Änderig|letschte $1 Änderige}} z priefe. Go ne Filter lade, wu s het, gib d Filter-ID vun em in s Chäschtli unten yy un druck uf \"Lade\".",
+ "abusefilter-test-legend": "Filtertescht",
+ "abusefilter-test-load-filter": "Filter-ID lade:",
+ "abusefilter-test-submit": "Tescht",
+ "abusefilter-test-load": "Lade",
+ "abusefilter-test-user": "Änderige vum Benutzer:",
+ "abusefilter-test-period-start": "Speteri Änderige:",
+ "abusefilter-test-period-end": "Vorigi Änderige:",
+ "abusefilter-test-page": "Änderige an dr Syte:",
+ "abusefilter-test-shownegative": "Änderige zeige, wu nit zuem Filter stimme",
+ "abusefilter-test-syntaxerr": "Im Filter, wu Du yygee hesch, het s e Syntax-Fähler.\nDu chasch e vollständigi Erklärig iberchu, wänn du uf „Check Syntax” drucksch.",
+ "abusefilter-changeslist-examine": "Iberpriefe",
+ "abusefilter-examine": "Individuälli Änderige iberpriefe",
+ "abusefilter-examine-intro": "Die Syte erlaubt Dir, d Variable, wu vum Missbruuchsfilter aagleit wore sin, uf individuälli Änderige z iberpriefe un si nomol gege Filter z teschte.",
+ "abusefilter-examine-legend": "Änderige uuswehle",
+ "abusefilter-examine-diff": "Anderi URL:",
+ "abusefilter-examine-user": "Benutzer:",
+ "abusefilter-examine-title": "Sytetitel:",
+ "abusefilter-examine-submit": "Sueche",
+ "abusefilter-examine-vars": "Variable, wu fir die Änderig aagleit wore sin",
+ "abusefilter-examine-test": "Tescht die Änderige gege e Filter",
+ "abusefilter-examine-test-button": "Filter teschte",
+ "abusefilter-examine-match": "Dr Filter passt zue däre Änderig.",
+ "abusefilter-examine-nomatch": "Dr Filter passt nit zue däre Änderig.",
+ "abusefilter-examine-syntaxerror": "Dr Filter het e nit giltigi Syntax",
+ "abusefilter-examine-notfound": "D Änderig, wu Du aagfrogt hesch, git s nit.",
+ "abusefilter-examine-incompatible": "D Änderig, wu Du aagfrogt hesch, wird nit vum Missbruuchsfilter unterstitzt.",
+ "abusefilter-examine-noresults": "Zue däne Parameter, wu Du yygee hesch, sin kei Ergebnis ghfunde wore.",
+ "abusefilter-topnav": "'''Missbruuchsfilter-Navigation'''",
+ "abusefilter-topnav-home": "Zruck",
+ "abusefilter-topnav-test": "Regle teschte",
+ "abusefilter-topnav-examine": "Letschti Bearbeitige priefe",
+ "abusefilter-topnav-log": "Missbruuchsfilter-Logbuech",
+ "abusefilter-topnav-tools": "Wärchzyyg debugge",
+ "abusefilter-topnav-import": "Filter importiere",
+ "abusefilter-log-name": "Missbruuchsfilter-Logbuech",
+ "abusefilter-log-header": "Des Logbuech zeigt d Änderige, wu an Filter gmacht wore sin.\nFir meh Detail lueg d [[Special:AbuseFilter/history|Lischt vu dr letschte Filteränderige]].",
+ "abusefilter-log-noresults": "Kei Ergebniss",
+ "abusefilter-diff-title": "Unterschid zwische dr Versione",
+ "abusefilter-diff-item": "Yytrag",
+ "abusefilter-diff-version": "Version vum $1 {{GENDER:$3|vum|vur dr|vu}} $2",
+ "abusefilter-diff-info": "Basisinformatione",
+ "abusefilter-diff-pattern": "Filterbedingige",
+ "abusefilter-diff-invalid": "Cha di aagforderete Versione nit finde",
+ "abusefilter-diff-backhistory": "Zruck zue dr Filtergschicht",
+ "abusefilter-import-intro": "Du chasch die Schnittstell bruche go Filter vu andere Wikis importiere.\nDruck im Quällwiki bim Bearbeite uf „{{int:abusefilter-edit-export}}“ unter „{{int:abusefilter-edit-tools}}“.\nKopier de Kode, wu det erschynt, un fieg en do yy, derno druck „{{int:abusefilter-import-submit}}“.",
+ "abusefilter-import-submit": "Date importiere",
+ "abusefilter-group-default": "Standard"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/gu.json b/www/wiki/extensions/AbuseFilter/i18n/gu.json
new file mode 100644
index 00000000..93fafced
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/gu.json
@@ -0,0 +1,180 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ashok modhvadia",
+ "Dineshjk",
+ "Dsvyas",
+ "Harsh4101991",
+ "KartikMistry",
+ "Vasu thakker"
+ ]
+ },
+ "abusefilter-desc": "સંપાદનો પર સ્વચલિત સંશોધનાત્મક પ્રણાલી લાગુ કરે છે",
+ "abusefilter": "દુરુપયોગ ગળણી રૂપરેખા",
+ "abuselog": "દુરુપયોગ નોંધ",
+ "abusefilter-mustbeeditor": "સુરક્ષા કારણો ખાતર, ફક્ત એવા સભ્યો જેની પાસે ખરાબ ફીલ્ટર બદલવાના હક છે તે જ આ ઈન્ટરફેસ નો ઊપયોગ કરી શકે છે.",
+ "abusefilter-blocker": "દુરુપયોગ ગળણી",
+ "right-abusefilter-modify": "દુરુપયોગ ગાળકોમાં ફેરફાર કરો",
+ "right-abusefilter-view": "દુરુપયોગ ગળણી જુઓ",
+ "right-abusefilter-log": "દુરુપયોગ લોગ જુઓ",
+ "right-abusefilter-log-detail": "વિસ્તૃત દુરુપયોગ લોગ નોંધ જુઓ",
+ "right-abusefilter-private": "દુરુપયોગ લોગમાં ખાનગી માહિતી જુઓ",
+ "action-abusefilter-modify": "દુરુપયોગ ગાળકોમાં ફેરફાર કરો",
+ "action-abusefilter-view": "દુરુપયોગ ગળણી જુઓ",
+ "action-abusefilter-log": "દુરુપયોગ લોગ જુઓ",
+ "action-abusefilter-log-detail": "વિસ્તૃત દુરુપયોગ લોગ નોંધ જુઓ",
+ "action-abusefilter-private": "દુરુપયોગ લોગમાં ખાનગી માહિતી જુઓ",
+ "abusefilter-log": "દુરુપયોગ ગળણી નોંધ",
+ "abusefilter-log-search": "દુરુપયોગ નોંધ શોધો",
+ "abusefilter-log-search-user": "સભ્ય:",
+ "abusefilter-log-search-filter": "ગાળક ઓળખો (પાઇપ્સ વડે જુદી પાડેલ):",
+ "abusefilter-log-search-title": "શીર્ષક:",
+ "abusefilter-log-search-wiki": "વિકિ:",
+ "abusefilter-log-search-submit": "શોધ",
+ "abusefilter-log-detailedentry-global": "વૈશ્વિક ગાળક $1",
+ "abusefilter-log-detailedentry-local": "ગાળક $1",
+ "abusefilter-log-detailslink": "વિગતો",
+ "abusefilter-log-diff": "ભેદ",
+ "abusefilter-log-hidelink": "દ્રશ્યતા ગોઠવો",
+ "abusefilter-log-details-legend": "$1 લૉગ દાખલા માટેની વિગતો",
+ "abusefilter-log-details-var": "ચલ",
+ "abusefilter-log-details-val": "કિંમત",
+ "abusefilter-log-details-vars": "ક્રિયા પરિણામો",
+ "abusefilter-log-details-private": "અંગત માહિતી",
+ "abusefilter-log-details-ip": "આરંભિક IP સરનામું",
+ "abusefilter-log-noactions": "કોઇ નહીં",
+ "abusefilter-log-details-diff": "સંપાદનમાં કરેલ ફેરફારો",
+ "abusefilter-log-linkoncontribs": "દુરુપયોગ નોંધ",
+ "abusefilter-log-linkoncontribs-text": "આ સભ્ય માટેની દુરુપયોગ નોંધ",
+ "abusefilter-log-hidden": "(દાખલો છુપાયેલ)",
+ "abusefilter-log-hide-legend": "લૉગ દાખલો છુપાવો",
+ "abusefilter-log-hide-reason": "કારણ:",
+ "abusefilter-logentry-suppress": "છૂપાવો \"[[$1]]\"",
+ "abusefilter-logentry-unsuppress": "બતાવો \"[[$1]]\"",
+ "abusefilter-list": "બધાં ગળણાં",
+ "abusefilter-list-id": "ગાળક ID",
+ "abusefilter-list-status": "સ્થિતિ",
+ "abusefilter-list-public": "જાહેર વર્ણન",
+ "abusefilter-list-consequences": "પરિણામો",
+ "abusefilter-list-visibility": "દ્રશ્યતા",
+ "abusefilter-list-hitcount": "હિટ સંખ્યા",
+ "abusefilter-list-edit": "ફેરફાર",
+ "abusefilter-list-details": "વિગતો",
+ "abusefilter-list-limit": "પાનાંઓની સંખ્યા:",
+ "abusefilter-list-lastmodified": "છેલ્લે સુધારાયું",
+ "abusefilter-list-group": "ગાળક સમૂહ",
+ "abusefilter-hidden": "અંગત",
+ "abusefilter-unhidden": "જાહેર",
+ "abusefilter-enabled": "સક્રિય",
+ "abusefilter-deleted": "દૂર કરેલ",
+ "abusefilter-disabled": "નિષ્ક્રિય કરેલ",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|હિટ|હિટ્સ}}",
+ "abusefilter-new": "નવું ગાળક બનાવો",
+ "abusefilter-return": "ગાળક વ્યવસ્થાપનમાં પાછા જાઓ",
+ "abusefilter-status-global": "વૈશ્વિક",
+ "abusefilter-list-options": "વિકલ્પો",
+ "abusefilter-list-options-deleted": "દૂર કરેલ ગાળકો:",
+ "abusefilter-list-options-deleted-only": "માત્ર દૂર કરેલ ગાળકો બતાવો",
+ "abusefilter-list-options-deleted-hide": "દૂર કરેલ ગાળકો છુપાવો",
+ "abusefilter-list-options-deleted-show": "દૂર કરેલ ગાળકોનો સમાવેશ કરો",
+ "abusefilter-list-options-scope-local": "ફક્ત સ્થાનિક નિયમો",
+ "abusefilter-list-options-scope-global": "ફક્ત વૈશ્વિક નિયમો",
+ "abusefilter-list-options-disabled": "અસક્રિય ગાળકો:",
+ "abusefilter-list-options-hidedisabled": "નિષ્ક્રિય ગાળકો છુપાવો",
+ "abusefilter-list-options-submit": "સુધારો",
+ "abusefilter-tools-submitexpr": "પરખો",
+ "abusefilter-tools-reautoconfirm-user": "સભ્ય:",
+ "abusefilter-edit-subtitle-new": "ગાળક બનાવે છે",
+ "abusefilter-edit-status-label": "આંકડાકીય માહિતી:",
+ "abusefilter-edit-new": "નવું ગાળક",
+ "abusefilter-edit-save": "ગાળક સાચવો",
+ "abusefilter-edit-group": "ગાળક સમૂહ",
+ "abusefilter-edit-flags": "નિશાનીઓ",
+ "abusefilter-edit-enabled": "આ ગાળક સક્રિય કરો",
+ "abusefilter-edit-global": "વૈશ્વીક ગાળક",
+ "abusefilter-edit-rules": "શરતો:",
+ "abusefilter-edit-notes": "નોંધો:",
+ "abusefilter-edit-lastmod-text": "$1, $2 દ્વારા",
+ "abusefilter-edit-throttle-period": "સમયગાળો:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|સેકંડ|સેકંડો}}",
+ "abusefilter-edit-warn-other": "બીજા સંદેશ",
+ "abusefilter-edit-warn-actions": "ક્રિયાઓ:",
+ "abusefilter-edit-viewhistory": "આ ગાળકનો ઇતિહાસ જુઓ",
+ "abusefilter-edit-history": "ઇતિહાસ:",
+ "abusefilter-edit-check": "બંધારણ ચકાસો",
+ "abusefilter-edit-tools": "સાધનો:",
+ "abusefilter-edit-syntaxok": "કોઇપણ બંધારણીય ક્ષતિઓ મળી નહી.",
+ "abusefilter-edit-syntaxerr": "બંધારણ ખામી શોધવામાં આવી: $1",
+ "abusefilter-edit-builder-op-arithmetic-addition": "સરવાળો (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "બાદબાકી (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "ગુણાકાર (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "ભાગાકાર (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "શેષ (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "ઘાત (**)",
+ "abusefilter-edit-builder-op-comparison-equal": "બરાબર (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "બરાબર નહીં (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "ના કરતા નાનું (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "ના કરતાં મોટું (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "થી ઓછા અથવા બરાબર (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "થી વધારે અથવા બરાબર (>=)",
+ "abusefilter-edit-builder-op-bool-not": "નથી (!)",
+ "abusefilter-edit-builder-op-bool-and": "અને (&)",
+ "abusefilter-edit-builder-op-bool-or": "અથવા (|)",
+ "abusefilter-edit-builder-group-misc": "પરચૂરણ",
+ "abusefilter-edit-builder-group-funcs": "વિધેયો",
+ "abusefilter-edit-builder-group-vars": "ચલો",
+ "abusefilter-edit-builder-vars-action": "ક્રિયા",
+ "abusefilter-edit-builder-vars-newsize": "નવા પૃષ્ઠનું કદ",
+ "abusefilter-edit-builder-vars-oldsize": "જુનાં પૃષ્ઠનું કદ",
+ "abusefilter-edit-builder-vars-article-id": "પૃષ્ઠ ઓળખ",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "પૂર્ણ પાનાં શીર્ષક",
+ "abusefilter-edit-builder-vars-user-age": "સભ્ય ખાતાની વય",
+ "abusefilter-edit-builder-vars-user-name": "સભ્ય ખાતાનું નામ",
+ "abusefilter-history-foruser": "$1 દ્વારા ફેરફારો",
+ "abusefilter-history-hidden": "છુપાયેલ",
+ "abusefilter-history-enabled": "સક્રિય",
+ "abusefilter-history-global": "વૈશ્વિક",
+ "abusefilter-history-timestamp": "સમય",
+ "abusefilter-history-user": "સભ્ય",
+ "abusefilter-history-flags": "નિશાનીઓ",
+ "abusefilter-history-comments": "ટિપ્પણીઓ",
+ "abusefilter-history-actions": "ક્રિયાઓ",
+ "abusefilter-history-deleted": "દૂર કરેલ",
+ "abusefilter-history-filterid": "ચાળણી",
+ "abusefilter-history-select-legend": "સુધારેલી શોધ",
+ "abusefilter-history-select-user": "સભ્ય:",
+ "abusefilter-history-select-submit": "સુધારેલું",
+ "abusefilter-history-diff": "ફેરફારો",
+ "abusefilter-action-tag": "ટેગ",
+ "abusefilter-action-warn": "ચેતવણી",
+ "abusefilter-action-degroup": "સમૂહો માંથી દૂર કરો",
+ "abusefilter-action-disallow": "અસ્વીકૃત કરો",
+ "abusefilter-revert-search": "ક્રિયાઓ પસંદ કરો",
+ "abusefilter-revert-filter": "ચાળણી:",
+ "abusefilter-revert-confirm": "ખાતરી કરો",
+ "abusefilter-revert-reasonfield": "કારણ:",
+ "abusefilter-test-submit": "ચકાસણી",
+ "abusefilter-test-load": "લાવો",
+ "abusefilter-test-user": "સભ્ય દ્વારા થયેલા ફેરફારો:",
+ "abusefilter-changeslist-examine": "ચકાસો",
+ "abusefilter-examine-legend": "ફેરફારો પસંદ કરો",
+ "abusefilter-examine-diff": "તફાવત URL:",
+ "abusefilter-examine-user": "સભ્ય:",
+ "abusefilter-examine-title": "પાનાનું શીર્ષક:",
+ "abusefilter-examine-submit": "શોધો",
+ "abusefilter-examine-test": "આ ફેરફારને ગાળક સાથે ચકાસો",
+ "abusefilter-examine-test-button": "ચકાસણી ગાળક",
+ "abusefilter-topnav-home": "ઘર",
+ "abusefilter-topnav-test": "જથ્થાબંધ ચકાસણી",
+ "abusefilter-topnav-examine": "અગાઉના સંપાદનો ચકાસો",
+ "abusefilter-topnav-log": "દુરુપયોગ નોંધ",
+ "abusefilter-topnav-import": "આયાત ગાળક",
+ "abusefilter-log-name": "દુરુપયોગ ગળણી નોંધ",
+ "abusefilter-log-noresults": "કોઇ પરિણામો નહી",
+ "abusefilter-diff-item": "વસ્તુ",
+ "abusefilter-diff-info": "સામાન્ય માહિતી",
+ "abusefilter-diff-prev": "જૂનામાં જૂનો ફેરફાર",
+ "abusefilter-diff-next": "નવામાં નવો ફેરફાર",
+ "abusefilter-import-submit": "માહિતી આયાત કરો",
+ "abusefilter-group-default": "મૂળભૂત"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/gv.json b/www/wiki/extensions/AbuseFilter/i18n/gv.json
new file mode 100644
index 00000000..659df205
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/gv.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "MacTire02",
+ "Shimmin Beg"
+ ]
+ },
+ "abusefilter-log-search-user": "Ymmydeyr:",
+ "abusefilter-log-hide-reason": "Fa:",
+ "abusefilter-list-status": "Staydys"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/ha.json b/www/wiki/extensions/AbuseFilter/i18n/ha.json
new file mode 100644
index 00000000..ace78f40
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/ha.json
@@ -0,0 +1,6 @@
+{
+ "@metadata": [],
+ "abusefilter-log-search-submit": "Nema",
+ "abusefilter-log-hide-reason": "Dalili:",
+ "abusefilter-examine-submit": "Nema"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/hak.json b/www/wiki/extensions/AbuseFilter/i18n/hak.json
new file mode 100644
index 00000000..69d9959e
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/hak.json
@@ -0,0 +1,10 @@
+{
+ "@metadata": {
+ "authors": [
+ "Hakka",
+ "Jetlag"
+ ]
+ },
+ "abusefilter-list-edit": "編寫",
+ "abusefilter-topnav": "'''防濫用過濾器導航'''"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/haw.json b/www/wiki/extensions/AbuseFilter/i18n/haw.json
new file mode 100644
index 00000000..0e4badf9
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/haw.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Kalani",
+ "Kolonahe",
+ "Singularity"
+ ]
+ },
+ "abusefilter-log-search-submit": "Huli",
+ "abusefilter-list-edit": "Hoʻololi",
+ "abusefilter-edit-status-label": "ʻIkepilihelu",
+ "abusefilter-edit-history": "Mōʻaukala:",
+ "abusefilter-examine-submit": "Huli"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/he.json b/www/wiki/extensions/AbuseFilter/i18n/he.json
new file mode 100644
index 00000000..bd87ff28
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/he.json
@@ -0,0 +1,534 @@
+{
+ "@metadata": {
+ "authors": [
+ "Amire80",
+ "Guycn2",
+ "Ofrahod",
+ "Rotemliss",
+ "StuB",
+ "YaronSh",
+ "Yonidebest",
+ "אור שפירא",
+ "דולב",
+ "ערן",
+ "Inkbug",
+ "Matma Rex",
+ "Esh77"
+ ]
+ },
+ "abusefilter-desc": "החלת בדיקות אוטומטיות על עריכות",
+ "abusefilter": "ניהול מסנני ההשחתות",
+ "abuselog": "יומן השחתות",
+ "abusefilter-intro": "ברוך בואך לממשק הניהול של מסנן ההשחתות.\nמסנן ההשחתות הוא אמצעי אוטומטי להפעלת בדיקות אוטומטיות על כל הפעולות.\nממשק זה מציג רשימה של מסננים שהוגדרו, ומאפשר לשנות אותם.",
+ "abusefilter-mustbeeditor": "מסיבות אבטחה, רק משתמשים עם ההרשאה לשנות מסנני השחתות יכולים להשתמש בממשק זה.",
+ "abusefilter-warning": "'''אזהרה:''' פעולה זו זוהתה באופן אוטומטי כמזיקה.\nפעולות שאינן מועילות תשוחזרנה במהרה,\nועריכות גסות או חזרה על עריכות לא מועילות תגרומנה לחסימה של החשבון או של כתובת ה־IP שלך.\nאם לדעתך הפעולה הזאת מועילה, ניתן לאשר אותה באמצעות שליחה חוזרת.\nתיאור קצר של החוק שפעולתך הפרה: $1",
+ "abusefilter-disallowed": "פעולה זו זוהתה באופן אוטומטי כמזיקה, ולכן לא אופשרה.\nאם לדעתך הפעולה שלך הייתה מועילה, באפשרותך ליצור קשר עם מפעיל מערכת ולהודיע לו מה ניסית לעשות.\nתיאור קצר של החוק שפעולתך הפרה: $1",
+ "abusefilter-blocked-display": "פעולה זו זוהתה באופן אוטומטי כמזיקה,\nולכן אין באפשרותך לבצע אותה.\nבנוסף, כדי להגן על {{SITENAME}}, חשבון המשתמש שלך וכל כתובות ה־IP המשויכות אליו נחסמו מעריכה.\nאם זה אירע בטעות, נא ליצור קשר עם מפעיל מערכת.\nתיאור קצר של החוק שפעולתך הפרה: $1",
+ "abusefilter-degrouped": "פעולה זו זוהתה באופן אוטומטי כמזיקה.\nכתוצאה מכך, היא לא אופשרה, ומאחר שיש חשד שחשבונך נפרץ, כל ההרשאות שלך נשללו.\nאם לדעתך מדובר בשגיאה, נא ליצור קשר עם ביורוקרט עם הסבר של הפעולה הזאת, וייתכן שההרשאות שלך תשוחזרנה.\nתיאור קצר של החוק שפעולתך הפרה: $1",
+ "abusefilter-autopromote-blocked": "פעולה זו זוהתה באופן אוטומטי כמזיקה, ולכן לא אופשרה.\nבנוסף, כאמצעי בטיחות, מספר הרשאות שניתנות למשתמשים ותיקים נשללו באופן זמני מהחשבון שלך.\nתיאור קצר של החוק שפעולתך הפרה: $1",
+ "abusefilter-blocker": "מסנן השחתות",
+ "abusefilter-blockreason": "חסימה אוטומטית של מסנן ההשחתות.\nתיאור החוק התואם: $1",
+ "abusefilter-degroupreason": "ההרשאות נשללו אוטומטית על־ידי מסנן ההשחתות.\nתיאור החוק: $1",
+ "abusefilter-accountreserved": "שם המשתמש הזה שמור לשימושו של מסנן ההשחתות.",
+ "right-abusefilter-modify": "שינוי מסנני השחתות",
+ "right-abusefilter-view": "צפייה במסנני השחתות",
+ "right-abusefilter-log": "צפייה ביומן ההשחתות",
+ "right-abusefilter-log-detail": "צפייה ביומן ההשחתות המפורט",
+ "right-abusefilter-private": "צפייה בנתונים פרטיים ביומן ההשחתות",
+ "right-abusefilter-private-log": "הצגת יומן גישה לנתונים פרטיים של מסנן ההשחתות",
+ "right-abusefilter-modify-restricted": "שינוי מסנני השחתות עם פעולות מוגבלות",
+ "right-abusefilter-revert": "שחזור כל השינויים שבוצעו על־ידי מסנן השחתות מסוים",
+ "right-abusefilter-view-private": "צפייה במסנני השחתות שסומנו כפרטיים",
+ "right-abusefilter-log-private": "צפייה ברשומות יומן של מסנני השחתות שסומנו כפרטיים",
+ "right-abusefilter-hide-log": "הסתרת רשומות ביומן ההשחתות",
+ "right-abusefilter-hidden-log": "צפייה ברשומות מוסתרות ביומן ההשחתות",
+ "right-abusefilter-modify-global": "יצירה ושינוי של מסנני השחתות גלובליים",
+ "action-abusefilter-modify": "לשנות מסנני השחתות",
+ "action-abusefilter-view": "לצפות במסנני השחתות",
+ "action-abusefilter-log": "לצפות ביומן ההשחתות",
+ "action-abusefilter-log-detail": "לצפות ביומן ההשחתות המפורט",
+ "action-abusefilter-private": "לצפות בנתונים פרטיים ביומן ההשחתות",
+ "action-abusefilter-private-log": "להציג את יומן הגישה לנתונים פרטי של מסנן ההשחתות",
+ "action-abusefilter-modify-restricted": "לשנות מסנני השחתות עם פעולות מוגבלות",
+ "action-abusefilter-revert": "לשחזר את כל השינויים שבוצעו על־ידי מסנן השחתות מסוים",
+ "action-abusefilter-view-private": "לצפות במסנני השחתות שסומנו כפרטיים",
+ "action-abusefilter-log-private": "לצפות ביומנים של מסנני השחתות שסומנו כפרטיים",
+ "abusefilter-log": "יומן מסנן ההשחתות",
+ "abusefilter-log-summary": "יומן זה מציג רשימה של כל הפעולות שנתפסו על־ידי המסננים.",
+ "abusefilter-log-search": "חיפוש ביומן ההשחתות",
+ "abusefilter-log-search-user": "משתמש:",
+ "abusefilter-log-search-filter": "מספרי מסננים (מופרדים בתווי '|'):",
+ "abusefilter-log-search-title": "כותרת:",
+ "abusefilter-log-search-wiki": "אתר ויקי:",
+ "abusefilter-log-search-impact": "השפעה:",
+ "abusefilter-log-search-impact-all": "כל הפעולות",
+ "abusefilter-log-search-impact-saved": "רק שינויים שמורים",
+ "abusefilter-log-search-impact-not-saved": "ללא שינויים שמורים",
+ "abusefilter-log-search-entries-label": "נִראוּת:",
+ "abusefilter-log-search-entries-all": "כל הרשומות",
+ "abusefilter-log-search-entries-hidden": "רק רשומות מוסתרות",
+ "abusefilter-log-search-entries-visible": "רק רשומות נראות",
+ "abusefilter-log-search-action-taken-label": "הפעולה שננקטה:",
+ "abusefilter-log-search-action-taken-any": "הכול",
+ "abusefilter-log-search-submit": "חיפוש",
+ "abusefilter-log-entry": "$1: $2 {{GENDER:$8|הפעיל|הפעילה}} מסנן השחתות {{GENDER:$8|כשביצע|כשביצעה}} את הפעולה \"$3\" בדף $4.\nהפעולות שננקטו: $5;\nתיאור המסנן: $6",
+ "abusefilter-log-entry-withdiff": "$1: $2 {{GENDER:$8|הפעיל|הפעילה}} מסנן השחתות {{GENDER:$8|כשביצע|כשביצעה}} את הפעולה \"$3\" בדף $4.\nהפעולות שננקטו: $5;\nתיאור המסנן: $6 ($7)",
+ "abusefilter-log-detailedentry-meta": "$1: $2 {{GENDER:$9|הפעיל|הפעילה}} את $3 כש{{GENDER:$9|ביצע|ביצעה}} את הפעולה \"$4\" בדף $5.\nהפעולות שננקטו: $6;\nתיאור המסנן: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "המסנן הגלובלי $1",
+ "abusefilter-log-detailedentry-local": "מסנן $1",
+ "abusefilter-log-detailslink": "פרטים",
+ "abusefilter-log-diff": "השוואה",
+ "abusefilter-log-hidelink": "שינוי מצב התצוגה",
+ "abusefilter-log-details-legend": "פרטים עבור פריט היומן $1",
+ "abusefilter-log-details-var": "משתנה",
+ "abusefilter-log-details-val": "ערך",
+ "abusefilter-log-details-vars": "פרמטרים לפעולה",
+ "abusefilter-log-details-private": "נתוני יומן פרטי",
+ "abusefilter-log-details-ip": "כתובת ה־IP המקורית",
+ "abusefilter-log-details-checkuser": "בדיקת משתמש",
+ "abusefilter-log-noactions": "אין",
+ "abusefilter-log-details-diff": "שינויים שבוצעו בעריכה",
+ "abusefilter-log-linkoncontribs": "יומן מסנן ההשחתות",
+ "abusefilter-log-linkoncontribs-text": "יומן ההשחתות עבור {{GENDER:$1|משתמש זה|משתמשת זו}}",
+ "abusefilter-log-hidden": "(רשומה מוסתרת)",
+ "abusefilter-log-hidden-implicit": "(הוסתר כי הגרסה נמחקה)",
+ "abusefilter-log-cannot-see-details": "אין לך הרשאה לראות את פרטי הרשומה הזו.",
+ "abusefilter-log-cannot-see-private-details": "אין לך הרשאה לראות את הנתונים הפרטיים של הרשומה הזאת.",
+ "abusefilter-log-nonexistent": "רשומה עם המזהה שניתן אינה קיימת",
+ "abusefilter-log-details-hidden": "אין באפשרותך לצפות בפרטים של רשומה זו כי היא הוסתרה מעיני הציבור.",
+ "abusefilter-log-private-not-included": "חלק ממספרי המסננים שהגדרת פרטיים. מכיוון שאין לך הרשאה להציג נתונים של מסננים פרטיים, לא נעשה חיפוש במסננים האלה.",
+ "abusefilter-log-hide-legend": "הסתרת רשומת יומן",
+ "abusefilter-log-hide-id": "מספר רשומת היומן:",
+ "abusefilter-log-hide-hidden": "הסתרת רשומה זו מעיני הציבור",
+ "abusefilter-log-hide-reason": "סיבה:",
+ "abusefilter-log-hide-reason-other": "סיבה אחרת/נוספת:",
+ "abusefilter-log-hide-forbidden": "אין לך הרשאה להסתיר רשומות ביומן ההשחתות.",
+ "abusefilter-logentry-suppress": "\"[[$1]]\" הוסתר",
+ "abusefilter-logentry-unsuppress": "ההסתרה של \"[[$1]]\" בוטלה",
+ "logentry-abusefilter-hit": "$1 {{GENDER:$2|הפעיל|הפעילה}} את $4 {{GENDER:$2|כשביצע|כשביצעה}} את הפעולה \"$5\" בדף $3. הפעולות שננקטו: $6 ($7)",
+ "log-action-filter-abusefilter": "סוג שינוי המסנן:",
+ "log-action-filter-abusefilter-create": "יצירת מסנן חדש",
+ "log-action-filter-abusefilter-modify": "שינוי מסנן",
+ "logentry-abusefilterprivatedetails-access": "$1 {{GENDER:$2|ניגש|ניגשה}} לנתונים פרטיים עבור $3",
+ "abusefilterprivatedetails-log-name": "יומן גישה לנתונים פרטיים של מסנן ההשחתות",
+ "abusefilter-management": "ניהול מסנני ההשחתות",
+ "abusefilter-list": "כל המסננים",
+ "abusefilter-list-id": "מספר המסנן",
+ "abusefilter-list-pattern": "תבנית",
+ "abusefilter-list-status": "מצב",
+ "abusefilter-list-public": "תיאור ציבורי",
+ "abusefilter-list-consequences": "תוצאות",
+ "abusefilter-list-visibility": "תצוגה",
+ "abusefilter-list-hitcount": "מספר הפעולות שסוננו",
+ "abusefilter-list-edit": "עריכה",
+ "abusefilter-list-details": "נתונים",
+ "abusefilter-list-limit": "מספר הרשומות לדף:",
+ "abusefilter-list-lastmodified": "שינוי אחרון",
+ "abusefilter-list-group": "קבוצת מסננים",
+ "abusefilter-hidden": "פרטי",
+ "abusefilter-unhidden": "ציבורי",
+ "abusefilter-enabled": "מופעל",
+ "abusefilter-deleted": "מחוק",
+ "abusefilter-disabled": "מבוטל",
+ "abusefilter-hitcount": "{{PLURAL:$1|פעולה אחת סוננה|$1 פעולות סוננו}}",
+ "abusefilter-new": "יצירת מסנן חדש",
+ "abusefilter-return": "חזרה לניהול המסננים",
+ "abusefilter-status-global": "גלובלי",
+ "abusefilter-list-options": "אפשרויות",
+ "abusefilter-list-options-deleted": "מסננים שנמחקו:",
+ "abusefilter-list-options-deleted-only": "הצגת מסננים שנמחקו בלבד",
+ "abusefilter-list-options-deleted-hide": "הסתרת מסננים שנמחקו",
+ "abusefilter-list-options-deleted-show": "הכללת מסננים שנמחקו",
+ "abusefilter-list-options-scope": "אילו מסננים להציג:",
+ "abusefilter-list-options-scope-local": "מסננים מקומיים בלבד",
+ "abusefilter-list-options-scope-global": "מסננים גלובליים בלבד",
+ "abusefilter-list-options-scope-all": "מסננים גלובליים ומקומיים",
+ "abusefilter-list-options-disabled": "מסננים שבוטלו:",
+ "abusefilter-list-options-hidedisabled": "הסתרת מסננים שבוטלו",
+ "abusefilter-list-options-searchfield": "חיפוש בתוך החוקים:",
+ "abusefilter-list-options-searchpattern": "הוספת תבנית",
+ "abusefilter-list-options-searchoptions": "מצב החיפוש:",
+ "abusefilter-list-options-search-like": "שאילתה רגילה",
+ "abusefilter-list-options-search-rlike": "ביטוי רגולרי",
+ "abusefilter-list-options-search-irlike": "ביטוי רגולרי שאינו תלוי־רישיות",
+ "abusefilter-list-regexerror": "אירעה שגיאה בעת החיפוש: שגיאה בתחביר הביטוי הרגולרי.",
+ "abusefilter-list-options-submit": "עדכון",
+ "abusefilter-tools-text": "להלן מספר כלים שעשויים להיות שימושיים בניסוח ובניפוי השגיאות של מסנני ההשחתות.",
+ "abusefilter-tools-expr": "בודק הביטויים",
+ "abusefilter-tools-submitexpr": "הערכה",
+ "abusefilter-tools-reautoconfirm": "סימון המשתמש מחדש כמשתמש ותיק",
+ "abusefilter-tools-reautoconfirm-user": "משתמש:",
+ "abusefilter-tools-reautoconfirm-submit": "סימון מחדש",
+ "abusefilter-reautoconfirm-none": "{{GENDER:$1|למשתמש זה|למשתמשת זו}} לא בוטלו הרשאות {{GENDER:$1|המשתמש הוותיק|המשתמשת הוותיקה}}.",
+ "abusefilter-reautoconfirm-notallowed": "אין לך הרשאה להחזיר את הרשאות המשתמש הוותיק של המשתמש.",
+ "abusefilter-reautoconfirm-done": "החשבון סומן מחדש כמשתמש ותיק",
+ "abusefilter-status": "מתוך {{PLURAL:$1|הפעולה האחרונה|$1 הפעולות האחרונות}}, {{PLURAL:$2|אחת ($3%) הגיעה|$2 ($3%) הגיעו}} לגבול התנאי של $4, {{PLURAL:$5|ואחת ($6%) התאימה|ו־$5 ($6%) התאימו}} לאחד מהמסננים הפעילים כעת.",
+ "abusefilter-edit": "עריכת מסנן השחתות",
+ "abusefilter-edit-subtitle": "עריכת מסנן $1",
+ "abusefilter-edit-subtitle-new": "יצירת מסנן",
+ "abusefilter-edit-oldwarning": "<strong>זוהי גרסה ישנה של מסנן זה.\nהסטטיסטיקות המופיעות הן עבור הגרסה העדכנית ביותר של המסנן.\nשמירת השינויים שלך תדרוס את כל השינויים מאז הגרסה הזאת.</strong> &bull; [[Special:AbuseFilter/history/$2|חזרה להיסטוריית הגרסאות של מסנן זה]].",
+ "abusefilter-edit-status-label": "סטטיסטיקות:",
+ "abusefilter-edit-status": "מתוך {{PLURAL:$1|הפעולה האחרונה|$1 הפעולות האחרונות}}, מסנן זה התאים ל־$2 ($3%).",
+ "abusefilter-edit-status-profile": "מתוך {{PLURAL:$1|הפעולה האחרונה|$1 הפעולות האחרונות}}, מסנן זה התאים ל־$2 ($3%).\nבממוצע, זמן הריצה שלו הוא $4 מילישניות, והוא משתמש ב{{PLURAL:$5|תנאי אחד|־$5 תנאים}} מתוך מגבלת התנאים.",
+ "abusefilter-edit-throttled-warning": "'''אזהרה:''' המסנן הזה סומן אוטומטית בתור מזיק. בתור אמצעי זהירות, הפעולות הבאות לא תתבצענה ($1). נא לסקור ו[[mw:Extension:AbuseFilter/Conditions|לשפר]] את התנאים שלך כדי להסיר את המגבלה הזאת",
+ "abusefilter-edit-new": "מסנן חדש",
+ "abusefilter-edit-save": "שמירת המסנן",
+ "abusefilter-edit-id": "מספר המסנן:",
+ "abusefilter-edit-switch-editor": "החלפת עורך",
+ "abusefilter-edit-description": "תיאור:\n:''(ניתן לצפייה ציבורית)''",
+ "abusefilter-edit-field-description": "תיאור",
+ "abusefilter-edit-group": "קבוצת מסננים:",
+ "abusefilter-edit-flags": "אפשרויות:",
+ "abusefilter-edit-enabled": "הפעלת מסנן זה",
+ "abusefilter-edit-deleted": "סימון כמחוק",
+ "abusefilter-edit-hidden": "הסתרת פרטי מסנן זה מצפייה ציבורית",
+ "abusefilter-edit-global": "מסנן גלובלי",
+ "abusefilter-edit-rules": "תנאים:",
+ "abusefilter-edit-field-conditions": "תנאים",
+ "abusefilter-edit-notes": "הערות:",
+ "abusefilter-edit-lastmod": "המסנן שוּנה לאחרונה ב:",
+ "abusefilter-edit-lastmod-text": "$1 על־ידי $2",
+ "abusefilter-edit-hitcount": "פעולות שסוננו:",
+ "abusefilter-edit-consequences": "אילו פעולות לבצע בעת ההתאמה",
+ "abusefilter-edit-action-warn": "לבצע את הפעולות האלה לאחר אזהרת המשתמש",
+ "abusefilter-edit-action-disallow": "למנוע מהמשתמש לבצע את הפעולה הזאת",
+ "abusefilter-edit-action-blockautopromote": "לשלול מהמשתמש את הרשאות המשתמש הוותיק",
+ "abusefilter-edit-action-degroup": "לשלול את כל ההרשאות של המשתמש",
+ "abusefilter-edit-action-block": "לחסום את המשתמש ו/או כתובת ה־IP מעריכה",
+ "abusefilter-edit-action-blocktalk": "חסימת המשתמש ו/או כתובת ה־IP מעריכת דף השיחה של עצמם",
+ "abusefilter-edit-action-throttle": "לבצע פעולות רק אם המשתמש עובר מגבלה של קצב עריכות",
+ "abusefilter-edit-action-rangeblock": "לחסום את טווח המתאים שממנו פועל המשתמש",
+ "abusefilter-edit-action-tag": "לתייג את העריכה לבדיקה נוספת",
+ "abusefilter-edit-throttle-count": "מספר הפעולות המותרות:",
+ "abusefilter-edit-throttle-period": "משך הזמן:",
+ "abusefilter-edit-throttle-seconds": "{{PLURAL:$1|שנייה אחת|$1 שניות}}",
+ "abusefilter-edit-throttle-groups": "הגבלת פעילות לפי קבוצה:\n:''(קבוצה אחת בשורה, יש לשלב עם פסיקים)''",
+ "abusefilter-edit-warn-message": "הודעת המערכת המשמשת לאזהרה:",
+ "abusefilter-edit-warn-other": "הודעה אחרת",
+ "abusefilter-edit-warn-other-label": "שם הודעת המערכת:\n:''(ללא הקידומת \"מדיה ויקי:\")''",
+ "abusefilter-edit-warn-actions": "פעולות:",
+ "abusefilter-edit-warn-preview": "תצוגה מקדימה של ההודעה שנבחרה",
+ "abusefilter-edit-warn-edit": "יצירת/עריכת ההודעה שנבחרה",
+ "abusefilter-edit-tag-tag": "אילו [[Special:Tags|תגים]] להחיל (אחד בכל שורה):",
+ "abusefilter-edit-block-anon-durations": "משך החסימה עבור משתמשים אנונימיים:",
+ "abusefilter-edit-block-user-durations": "משך החסימה עבור משתמשים רשומים:",
+ "abusefilter-block-anon": "משתמשים אנונימיים",
+ "abusefilter-block-user": "משתמשים רשומים",
+ "abusefilter-edit-denied": "אין באפשרותך לצפות בפרטים של מסנן זה, כי הוא מוסתר מעיני הציבור.",
+ "abusefilter-edit-main": "הפרמטרים של המסנן",
+ "abusefilter-edit-done-subtitle": "המסנן נערך",
+ "abusefilter-edit-done": "[[Special:AbuseFilter/history/$1/diff/prev/$2|השינויים שלך]] במסנן [[Special:AbuseFilter/$1|$3]] נשמרו.",
+ "abusefilter-edit-badsyntax": "ישנה שגיאת תחביר במסנן שציינת.\nהפלט מהמפענח הוא: <pre>$1</pre>",
+ "abusefilter-edit-missingfields": "השדות הבאים נדרשים, וחובה למלא אותם: $1",
+ "abusefilter-edit-restricted": "אין באפשרותך לערוך מסנן זה, כי הוא מכיל פעולה מוגבלת אחת או יותר.\nנא לבקש ממשתמש עם הרשאה להוספת פעולות מוגבלות לבצע את השינוי עבורך.",
+ "abusefilter-edit-viewhistory": "צפייה בהיסטוריית הגרסאות של מסנן זה",
+ "abusefilter-edit-history": "היסטוריה:",
+ "abusefilter-edit-check": "בדיקת תחביר",
+ "abusefilter-edit-badfilter": "המסנן שציינת אינו קיים",
+ "abusefilter-edit-revert": "שחזור פעולות שבוצעו על־ידי מסנן זה",
+ "abusefilter-edit-tools": "כלים:",
+ "abusefilter-edit-test-link": "בדיקת מסנן זה מול עריכות אחרונות",
+ "abusefilter-edit-export": "ייצוא מסנן זה לאתר ויקי אחר",
+ "abusefilter-edit-syntaxok": "לא נמצאו שגיאות תחביר.",
+ "abusefilter-edit-syntaxerr": "נמצאה שגיאת תחביר: $1",
+ "abusefilter-edit-bad-tags": "ציינת תג בלתי־תקין.\nהתגים אמורים להיות קצרים, הם לא יכולים להכיל תווים מיוחדים והם לא יכולים להיות שמורים לתוכנה אחרת. נא לנסות לבחור שם חדש לתג.",
+ "abusefilter-edit-notallowed": "אין לך הרשאה ליצור או לערוך מסנני השחתות",
+ "abusefilter-edit-notallowed-global": "אין לך הרשאה ליצור או לערוך מסנני השחתות גלובליים",
+ "abusefilter-edit-notallowed-global-custom-msg": "הודעות אזהרה מותאמות אישית אינן נתמכות עבור מסננים גלובליים",
+ "abusefilter-edit-builder-select": "{{GENDER:|בחר|בחרי|בחרו}} באפשרות כדי להוסיף אותה",
+ "abusefilter-edit-builder-group-op-arithmetic": "אופרטורים חשבוניים",
+ "abusefilter-edit-builder-op-arithmetic-addition": "חיבור (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "חיסור (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "כפל (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "חילוק (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "שארית (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "חזקה (**)",
+ "abusefilter-edit-builder-group-op-comparison": "אופרטורים להשוואה",
+ "abusefilter-edit-builder-op-comparison-equal": "הערך שווה ל־ (‎==‎)",
+ "abusefilter-edit-builder-op-comparison-equal-strict": "הערך והסוג שווים ל־ (‎===‎)",
+ "abusefilter-edit-builder-op-comparison-notequal": "הערך לא שווה ל־ (‎!=‎)",
+ "abusefilter-edit-builder-op-comparison-notequal-strict": "הערך והסוג לא שווים ל־ (‎!==‎)",
+ "abusefilter-edit-builder-op-comparison-lt": "קטן מ־ (‎<‎)",
+ "abusefilter-edit-builder-op-comparison-gt": "גדול מ־ (‎>‎)",
+ "abusefilter-edit-builder-op-comparison-lte": "קטן מ־ או שווה ל־ (‎<=‎)",
+ "abusefilter-edit-builder-op-comparison-gte": "גדול מ־ או שווה ל־ (‎>=‎)",
+ "abusefilter-edit-builder-group-op-bool": "אופרטורים בוליאניים",
+ "abusefilter-edit-builder-op-bool-not": "לא (!)",
+ "abusefilter-edit-builder-op-bool-and": "וגם (&)",
+ "abusefilter-edit-builder-op-bool-or": "או (|)",
+ "abusefilter-edit-builder-group-misc": "שונות",
+ "abusefilter-edit-builder-misc-in": "האם נמצא במחרוזת (in)",
+ "abusefilter-edit-builder-misc-like": "האם תואם לתבנית (like)",
+ "abusefilter-edit-builder-misc-rlike": "תואם לביטוי רגולרי (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "ביטוי רגולרי, לא תלוי רישיות (irlike)",
+ "abusefilter-edit-builder-misc-contains": "המחרוזת השמאלית מכילה את המחרוזת הימנית (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "מחרוזת מילולית (\"\")",
+ "abusefilter-edit-builder-misc-tern": "האופרטור המשולש (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "תנאי (if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "פונקציות",
+ "abusefilter-edit-builder-funcs-length": "אורך המחרוזת (length)",
+ "abusefilter-edit-builder-funcs-lcase": "המרה לאותיות קטנות (lcase)",
+ "abusefilter-edit-builder-funcs-ucase": "המרה לאותיות רישיות (ucase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "נירמול תווים מבלבלים (ccnorm)",
+ "abusefilter-edit-builder-funcs-ccnorm-contains-any": "לנרמל ולחפש במחרוזת תת־מחרוזות מרובות במצב OR‏ (ccnorm_contains_any)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "הסרת תווים כפולים (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "תווים מיוחדים / סך כל התווים (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "נירמול (norm)",
+ "abusefilter-edit-builder-funcs-count": "מספר הפעמים שהמחרוזת X מופיעה במחרוזת Y‏ (count)",
+ "abusefilter-edit-builder-funcs-rcount": "מספר הפעמים שהביטוי הרגולרי X מופיע במחרוזת Y‏ (rcount)",
+ "abusefilter-edit-builder-funcs-get_matches": "מערך של התאמות ביטויים רגולריים בתו טקסט של כל קבוצת לכידה (get_matches)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "הסרת רווח לבן (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "הסרת תווים מיוחדים (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "האם כתובת ה־IP בטווח? (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "חיפוש מחרוזות משנה מרובות בתוך מחרוזת במצב OR‏ (contains_any)",
+ "abusefilter-edit-builder-funcs-substr": "מחרוזת משנה (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "מיקום מחרוזת משנה במחרוזת (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "החלפת מחרוזת משנה עם מחרוזת אחרת (str_replace)",
+ "abusefilter-edit-builder-funcs-rescape": "לחלף את המחרוזת בתור מחרוזת מפורשת בביטוי רגולרי (rescape)",
+ "abusefilter-edit-builder-funcs-set_var": "הגדרת משתנה (set_var)",
+ "abusefilter-edit-builder-group-vars": "משתנים",
+ "abusefilter-edit-builder-vars-accountname": "שם החשבון (בעת יצירת חשבון)",
+ "abusefilter-edit-builder-vars-timestamp": "זמן השינוי בפורמט יוניקס",
+ "abusefilter-edit-builder-vars-timestamp-expanded": "תאריך ושעה של היומן",
+ "abusefilter-edit-builder-vars-action": "פעולה",
+ "abusefilter-edit-builder-vars-addedlines": "שורות שנוספו בעריכה",
+ "abusefilter-edit-builder-vars-delta": "שינוי הגודל בעריכה",
+ "abusefilter-edit-builder-vars-diff": "פלט unified diff של השינויים שבוצעו בעריכה",
+ "abusefilter-edit-builder-vars-newsize": "גודל הדף החדש",
+ "abusefilter-edit-builder-vars-oldsize": "גודל הדף הישן",
+ "abusefilter-edit-builder-vars-old-content-model": "מודל התוכן הישן",
+ "abusefilter-edit-builder-vars-new-content-model": "מודל התוכן החדש",
+ "abusefilter-edit-builder-vars-removedlines": "שורות שהוסרו בעריכה",
+ "abusefilter-edit-builder-vars-summary": "תקציר עריכה/סיבה",
+ "abusefilter-edit-builder-vars-article-id": "מספר הדף",
+ "abusefilter-edit-builder-vars-article-ns": "מרחב השם של הדף",
+ "abusefilter-edit-builder-vars-article-text": "שם הדף (ללא מרחב השם)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "שם הדף המלא",
+ "abusefilter-edit-builder-vars-article-views": "מספר הצגות הדף",
+ "abusefilter-edit-builder-vars-movedfrom-id": "המספר המזהה (ID) של דף המקור בהעברה",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "מרחב השם של דף המקור בהעברה",
+ "abusefilter-edit-builder-vars-movedfrom-text": "שם דף המקור בהעברה",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "השם המלא של דף המקור בהעברה",
+ "abusefilter-edit-builder-vars-movedto-id": "מספר הדף של דף היעד בהעברה",
+ "abusefilter-edit-builder-vars-movedto-ns": "מרחב השם של דף היעד בהעברה",
+ "abusefilter-edit-builder-vars-movedto-text": "שם דף היעד בהעברה",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "השם המלא של דף היעד בהעברה",
+ "abusefilter-edit-builder-vars-user-editcount": "מספר העריכות של המשתמש",
+ "abusefilter-edit-builder-vars-user-age": "הזמן שעבר מאז הרשמת המשתמש",
+ "abusefilter-edit-builder-vars-user-name": "שם חשבון המשתמש",
+ "abusefilter-edit-builder-vars-user-groups": "קבוצות (כולל קבוצות משתמעות) בהן נמצא המשתמש",
+ "abusefilter-edit-builder-vars-user-rights": "הרשאות שיש למשתמש",
+ "abusefilter-edit-builder-vars-user-blocked": "האם המשתמש נחסם",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "הזמן שבו אומתה כתובת הדוא\"ל",
+ "abusefilter-edit-builder-vars-recent-contributors": "עשרת התורמים האחרונים לדף",
+ "abusefilter-edit-builder-vars-first-contributor": "המשתמש הראשון שתרם לדף",
+ "abusefilter-edit-builder-vars-movedfrom-recent-contributors": "עשרת המשתמשים האחרונים שתרמו בדף המקורי שיועבר",
+ "abusefilter-edit-builder-vars-movedfrom-first-contributor": "המשתמש הראשון שתרם בדף המקורי שיועבר",
+ "abusefilter-edit-builder-vars-movedto-recent-contributors": "עשרת המשתמשים האחרונים שתרמו בדף היעד בהעברה",
+ "abusefilter-edit-builder-vars-movedto-first-contributor": "המשתמש הראשון שתרם בדף היעד בהעברה",
+ "abusefilter-edit-builder-vars-all-links": "כל הקישורים החיצוניים בטקסט החדש",
+ "abusefilter-edit-builder-vars-added-links": "כל הקישורים החיצוניים שנוספו בעריכה",
+ "abusefilter-edit-builder-vars-removed-links": "כל הקישורים החיצוניים שהוסרו בעריכה",
+ "abusefilter-edit-builder-vars-old-text": "טקסט הדף הישן, לפני העריכה",
+ "abusefilter-edit-builder-vars-new-text": "טקסט הדף החדש, לאחר העריכה",
+ "abusefilter-edit-builder-vars-new-pst": "קוד הוויקי של הדף החדש, מומר לפני שמירה",
+ "abusefilter-edit-builder-vars-diff-pst": "הצגת השינויים שנעשו בעריכה, בצורת השוואה מאוחדת, עם התמרה לפני שמירה",
+ "abusefilter-edit-builder-vars-addedlines-pst": "שורות שנוספו בעריכה, עם התמרה לפני עריכה",
+ "abusefilter-edit-builder-vars-new-text-stripped": "טקסט הדף החדש, ללא סימני HTML",
+ "abusefilter-edit-builder-vars-new-html": "מקור ה־HTML המפוענח של הגרסה החדשה",
+ "abusefilter-edit-builder-vars-restrictions-edit": "רמת ההגנה על עריכת הדף",
+ "abusefilter-edit-builder-vars-restrictions-move": "רמת ההגנה על העברת הדף",
+ "abusefilter-edit-builder-vars-restrictions-create": "רמת ההגנה על יצירת הדף",
+ "abusefilter-edit-builder-vars-restrictions-upload": "רמת ההגנה על העלאת הקובץ",
+ "abusefilter-edit-builder-vars-movedfrom-restrictions-edit": "רמת ההגנה מפני עריכה של הדף המקורי שיועבר",
+ "abusefilter-edit-builder-vars-movedfrom-restrictions-move": "רמת ההגנה מפני העברה של הדף המקורי שיועבר",
+ "abusefilter-edit-builder-vars-movedfrom-restrictions-create": "הגנה מפני יצירה של הדף המקורי שיועבר",
+ "abusefilter-edit-builder-vars-movedfrom-restrictions-upload": "הגנה מפני העלאה של הקובץ המקורי שיועבר",
+ "abusefilter-edit-builder-vars-movedto-restrictions-edit": "רמת ההגנה מפני עריכה של דף היעד בהעברה",
+ "abusefilter-edit-builder-vars-movedto-restrictions-move": "רמת ההגנה מפני העברה של דף היעד בהעברה",
+ "abusefilter-edit-builder-vars-movedto-restrictions-create": "הגנה מפני יצירה של דף היעד בהעברה",
+ "abusefilter-edit-builder-vars-movedto-restrictions-upload": "הגנה מפני העלאה של קובץ היעד בהעברה",
+ "abusefilter-edit-builder-vars-old-text-stripped": "טקסט הדף הישן, ללא שום שפת סימון",
+ "abusefilter-edit-builder-vars-old-links": "קישורים בדף, לפני העריכה",
+ "abusefilter-edit-builder-vars-old-html": "טקסט הוויקי של הדף הישן, מפוענח ל־HTML",
+ "abusefilter-edit-builder-vars-minor-edit": "האם עריכה זו מסומנת כמשנית או לא",
+ "abusefilter-edit-builder-vars-file-sha1": "גיבוב SHA1 של תוכן הקובץ",
+ "abusefilter-edit-builder-vars-file-size": "גודל הקובץ בבתים",
+ "abusefilter-edit-builder-vars-file-mime": "סוג ה־MIME של הקובץ",
+ "abusefilter-edit-builder-vars-file-mediatype": "סוג המדיה של הקובץ",
+ "abusefilter-edit-builder-vars-file-width": "רוחב הקובץ בפיקסלים",
+ "abusefilter-edit-builder-vars-file-height": "גובה הקובץ בפיקסלים",
+ "abusefilter-edit-builder-vars-file-bits-per-channel": "ביטים לערוץ צבע של הקובץ",
+ "abusefilter-edit-block-options": "אפשרויות חסימה:",
+ "abusefilter-filter-log": "שינויים אחרונים במסננים",
+ "abusefilter-history": "היסטוריית השינויים של מסנן ההשחתות #$1",
+ "abusefilter-history-foruser": "שינויים שבוצעו על־ידי $1",
+ "abusefilter-history-hidden": "מוסתר",
+ "abusefilter-history-enabled": "פעיל",
+ "abusefilter-history-global": "גלובלי",
+ "abusefilter-history-timestamp": "זמן",
+ "abusefilter-history-user": "משתמש",
+ "abusefilter-history-public": "התיאור הציבורי של המסנן",
+ "abusefilter-history-flags": "אפשרויות",
+ "abusefilter-history-filter": "חוק מסנן",
+ "abusefilter-history-comments": "הערות",
+ "abusefilter-history-actions": "פעולות",
+ "abusefilter-history-backedit": "חזרה לעריכת המסנן",
+ "abusefilter-history-deleted": "נמחק",
+ "abusefilter-history-filterid": "מסמן",
+ "abusefilter-history-select-legend": "עידון החיפוש",
+ "abusefilter-history-select-user": "משתמש:",
+ "abusefilter-history-select-filter": "מספר המסנן:",
+ "abusefilter-history-select-submit": "עידון",
+ "abusefilter-history-diff": "הבדלים",
+ "abusefilter-history-error-hidden": "המסנן שביקשת מוסתר, ואין באפשרותך לצפות בהיסטוריה שלו.",
+ "abusefilter-exception-unexpectedatend": "\"$2\" בלתי־צפוי בתו מספר $1.",
+ "abusefilter-exception-expectednotfound": "צפוי $2 בתו מספר $1, לא נמצא (במקום זאת נמצא $3 $4).",
+ "abusefilter-exception-unrecognisedkeyword": "מילת מפתח בלתי־מזוהה $2 בתו מספר $1.",
+ "abusefilter-exception-unexpectedtoken": "סימן בלתי צפוי \"$3\" (מסוג $2) בתו מספר $1.",
+ "abusefilter-exception-unclosedstring": "מחרוזת שלא נסגרה, מתחילה בתו מספר $1.",
+ "abusefilter-exception-invalidoperator": "אופרטור בלתי־תקין \"$2\" בתו מספר $1.",
+ "abusefilter-exception-unrecognisedtoken": "סימן בלתי־מזוהה \"$2\" בתו מספר $1.",
+ "abusefilter-exception-noparams": "לא ניתנו פרמטרים לפונקציה \"$2\" בתו מספר $1.",
+ "abusefilter-exception-dividebyzero": "ניסיון בלתי־חוקי לחלק את $2 באפס בתו מספר $1.",
+ "abusefilter-exception-unrecognisedvar": "משתנה בלתי־מזוהה $2 בתו מספר $1",
+ "abusefilter-exception-notenoughargs": "לא הועברו מספיק ארגומנטים לפונקציה $2 שנקראה בתו מספר $1.\nיש צורך {{PLURAL:$3|בארגומנט אחד|ב־$3 ארגומנטים}}, {{PLURAL:$4|התקבל אחד|התקבלו $4}}",
+ "abusefilter-exception-regexfailure": "שגיאה בביטוי הרגולרי \"$3\" בתו מספר $1: \"$2\"",
+ "abusefilter-exception-overridebuiltin": "דריסה בלתי־תקינה של המשתנה המובנה \"$2\" בתו מספר $1.",
+ "abusefilter-exception-outofbounds": "ביקשו פריט רשימה בלתי קיים $2 (גודל הרשימה = $3) בתו מספר $1.",
+ "abusefilter-exception-notlist": "ביקשו פריט מערך מלא־מערך בתו מספר $1.",
+ "abusefilter-exception-unclosedcomment": "הערה בלתי־סגורה בתו מספר $1.",
+ "abusefilter-action-tag": "לתייג",
+ "abusefilter-action-throttle": "הגבלת תדירות פעולה",
+ "abusefilter-action-warn": "אזהרה",
+ "abusefilter-action-blockautopromote": "ביטול שיוך אוטומטי לקבוצות",
+ "abusefilter-action-block": "חסימה",
+ "abusefilter-action-degroup": "הסרה מקבוצות",
+ "abusefilter-action-rangeblock": "חסימת טווח",
+ "abusefilter-action-disallow": "מניעת פעולה",
+ "abusefilter-revert-title": "שחזור כל השינויים שבוצעו על־ידי מסנן $1",
+ "abusefilter-revert-intro": "טופס זה מאפשר לך לשחזר את כל השינויים שבוצעו על־ידי מסנן מספר $1.\nנא להיזהר בשימוש בכלי זה.",
+ "abusefilter-revert-preview-item": "$1: $2 {{GENDER:$7|ביצע|ביצעה}} $3 בדף $4.\nפעולות לביטול: $5 ($6)",
+ "abusefilter-revert-search-legend": "בחירת פעולות המסנן לשחזור",
+ "abusefilter-revert-periodstart": "החל מתאריך:",
+ "abusefilter-revert-periodend": "עד לתאריך:",
+ "abusefilter-revert-search": "בחירת פעולות",
+ "abusefilter-revert-filter": "מספר המסנן:",
+ "abusefilter-revert-preview-intro": "להלן הפעולות שבוצעו על־ידי מסנן ההשחתות ושישוחזרו על־ידי פעולה זו.\nנא לבדוק אותן בזהירות, וללחוץ על \"{{int:abusefilter-revert-confirm}}\" כדי לאשר את בחירתך.",
+ "abusefilter-revert-confirm-legend": "אישור השחזור",
+ "abusefilter-revert-confirm": "אישור",
+ "abusefilter-revert-success": "ביטלת את כל השינויים שבוצעו על־ידי [[Special:AbuseFilter/$1|מסנן מספר $2]].",
+ "abusefilter-revert-reason": "שחזור אוטומטי של כל הפעולות שבוצעו על־ידי מסנן מספר $1.\nהסיבה שניתנה: $2",
+ "abusefilter-revert-reasonfield": "סיבה:",
+ "abusefilter-test": "בדיקת מסנן מול עריכות קודמות",
+ "abusefilter-test-intro": "דף זה מאפשר לך לבדוק מסנן שהוכנס לתיבה להלן מול {{PLURAL:$1|השינוי האחרון|$1 השינויים האחרונים}}.\nכדי לטעון מסנן קיים, יש להזין את מספר המסנן לתוך התיבה שמתחת לתיבת העריכה שלהלן, וללחוץ על הכפתור \"{{int:abusefilter-test-load}}\".",
+ "abusefilter-test-legend": "בדיקת מסנן",
+ "abusefilter-test-load-filter": "טעינת מסנן מספר:",
+ "abusefilter-test-submit": "בדיקה",
+ "abusefilter-test-load": "טעינה",
+ "abusefilter-test-user": "שינויים שבוצעו על־ידי המשתמש:",
+ "abusefilter-test-period-start": "שינויים שנערכו לאחר:",
+ "abusefilter-test-period-end": "שינויים שנערכו לפני:",
+ "abusefilter-test-page": "שינויים שבוצעו בדף:",
+ "abusefilter-test-shownegative": "הצגת שינויים שאינם תואמים את המסנן",
+ "abusefilter-test-syntaxerr": "במסנן שהכנסת יש שגיאת תחביר.\nבאפשרותך לקבל הסבר מלא באמצעות לחיצה על הכפתור \"{{int:abusefilter-edit-check}}\".",
+ "abusefilter-test-badtitle": "כותרת הדף שהזנת אינה תקינה. ייתכן שהיא מכילה תו אחד או יותר שלא ניתנים לשימוש בכותרות.",
+ "abusefilter-changeslist-examine": "בדיקה",
+ "abusefilter-examine": "בדיקת שינויים ספציפיים",
+ "abusefilter-examine-intro": "דף זה מאפשר לך לבדוק את המשתנים שמייצר מסנן ההשחתות עבור שינוי ספציפי, ולבדוק זאת אל מול המסננים.",
+ "abusefilter-examine-legend": "בחירת השינויים",
+ "abusefilter-examine-diff": "כתובת ההשוואה בין הגרסאות:",
+ "abusefilter-examine-user": "משתמש:",
+ "abusefilter-examine-title": "שם הדף:",
+ "abusefilter-examine-submit": "חיפוש",
+ "abusefilter-examine-vars": "המשתנים שיוצרו לשינוי זה",
+ "abusefilter-examine-test": "בדיקת שינוי זה אל מול מסנן",
+ "abusefilter-examine-test-button": "בדיקת המסנן",
+ "abusefilter-examine-match": "המסנן תואם לשינוי זה.",
+ "abusefilter-examine-nomatch": "המסנן אינו תואם לשינוי זה.",
+ "abusefilter-examine-syntaxerror": "תחביר המסנן אינו תקין",
+ "abusefilter-examine-notfound": "לא ניתן לאתר את השינוי המבוקש.",
+ "abusefilter-examine-incompatible": "השינוי המבוקש אינו נתמך על־ידי מסנן ההשחתות",
+ "abusefilter-examine-noresults": "לא נמצאו תוצאות עבור הפרמטרים שסיפקת לחיפוש.",
+ "abusefilter-topnav": "'''ניווט במסנן ההשחתות'''",
+ "abusefilter-topnav-home": "הדף הראשי",
+ "abusefilter-topnav-test": "בדיקת מסנן",
+ "abusefilter-topnav-examine": "בדיקת עריכות קודמות",
+ "abusefilter-topnav-log": "יומן ההשחתות",
+ "abusefilter-topnav-tools": "כלי ניפוי שגיאות",
+ "abusefilter-topnav-import": "ייבוא מסנן",
+ "abusefilter-log-name": "יומן מסנן ההשחתות",
+ "abusefilter-log-header": "יומן זה מציג סיכום של השינויים שבוצעו במסנני ההשחתות.\nלפרטים מלאים, ראו את [[Special:AbuseFilter/history|רשימת]] השינויים האחרונים במסננים.",
+ "abusefilter-logentry-create": "$1 {{GENDER:$2|יצר|יצרה}} $4 ($5)",
+ "abusefilter-logentry-modify": "$1 {{GENDER:$2|שינה|שינתה}} את $4 ($5)",
+ "abusefilter-log-noresults": "אין תוצאות",
+ "abusefilter-diff-title": "הבדלים בין גרסאות",
+ "abusefilter-diff-item": "פריט",
+ "abusefilter-diff-version": "גרסה מ־$1 {{GENDER:$3|מאת}} $2",
+ "abusefilter-diff-info": "מידע בסיסי",
+ "abusefilter-diff-pattern": "תנאי המסננים",
+ "abusefilter-diff-invalid": "לא ניתן לקבל את הגרסאות המבוקשות",
+ "abusefilter-diff-backhistory": "חזרה להיסטוריית המסנן",
+ "abusefilter-diff-prev": "שינוי ישן יותר",
+ "abusefilter-diff-next": "שינוי חדש יותר",
+ "abusefilter-import-intro": "באפשרותך להשתמש בממשק זה כדי לייבא מסננים מאתרי ויקי אחרים.\nבאתר המקור, יש ללחוץ על \"{{int:abusefilter-edit-export}}\" תחת \"{{int:abusefilter-edit-tools}}\" בממשק העריכה.\nלאחר מכן יש להעתיק מתיבת הטקסט המופיעה שם, ולהדביק את הטקסט בתיבת הטקסט הזאת, ואז ללחוץ על \"{{int:abusefilter-import-submit}}\".",
+ "abusefilter-import-submit": "ייבוא הנתונים",
+ "abusefilter-group-default": "ברירת המחדל",
+ "abusefilter-http-error": "אירעה שגיאת HTTP: $1",
+ "abusefilter-view-private-submit": "הצגת נתונים פרטיים",
+ "abusefilter-view-private": "הצגת נתונים פרטיים",
+ "abusefilter-view-private-reason": "סיבה לגישה לנתונים הפרטיים:",
+ "abusefilter-log-details-id": "מזהה יומן",
+ "abusefilter-invalid-request": "בקשתך הייתה בלתי־חוקית! יש לגשת לנתוני היומן הפרטיים באמצעות הטופס שבדף [[Special:AbuseLog/$1]] ולהקליד סיבה.",
+ "abusefilter-invalid-request-noid": "בקשתך הייתה בלתי־חוקית! יש לגשת לנתוני היומן הפרטיים באמצעות הטופס שבדף הנתונים של יומן ההשחתות ולהקליד סיבה.",
+ "log-description-abusefilterprivatedetails": "יומן זה מציג את הגישה של משתמשים לנתונים פרטיים ביומן ההשחתות.",
+ "abusefilter-noreason": "אזהרה: כדי לצפות בנתונים פרטיים ביומן הזה, יש להקליד סיבה.",
+ "abusefilter-log-ip-not-available": "לא זמין",
+ "tag-abusefilter-condition-limit": "חריגה מתנאי ההגבלה",
+ "tag-abusefilter-condition-limit-description": "עריכות או פעולות אחרות שלא ניתן היה לבדוק אותן באמצעות כל [[Special:AbuseFilter|מסנני ההשחתות]] הפעילים ([[mw:Extension:AbuseFilter/Conditions|עזרה]]).",
+ "apihelp-abusefiltercheckmatch-description": "בדיקה אם מסנן ההשחתות מתאים לערכת משתנים, העורך רושם ביומן אירוע מסנן השחתות.\n\nvars‏, rcid או logid נדרש, אבל אפשר להשתמש רק באחד מהם.",
+ "apihelp-abusefiltercheckmatch-summary": "בדיקה האם מסנן השחתות מתאים לערכת משתנים, אירוע מסנן השחתות שנרשם ביומן על־די עורך.",
+ "apihelp-abusefiltercheckmatch-extended-description": "נחוץ vars או rcid או logid, אבל רק אחד מהם יכול לשמש.",
+ "apihelp-abusefiltercheckmatch-param-filter": "הטקסט המלא של המסנן שייבדק לחיפוש התאמה.",
+ "apihelp-abusefiltercheckmatch-param-vars": "מערך מקודד ב־JSON של משתנים שמולם תיערך בדיקה.",
+ "apihelp-abusefiltercheckmatch-param-rcid": "מזהה בשינויים האחרונים לבדוק מולו.",
+ "apihelp-abusefiltercheckmatch-param-logid": "מזהה ביומן מסנן ההשחתות שמולו הבדיקה תתבצע.",
+ "apihelp-abusefiltercheckmatch-example-1": "בדיקה האם שינוי אחרון עם המזהה 15 מתאים למסנן פשוט",
+ "apihelp-abusefilterchecksyntax-description": "בדיקת תחביר של מסנן השחתות.",
+ "apihelp-abusefilterchecksyntax-summary": "בדיקת תחביר של אחד ממסנני ההשחתות.",
+ "apihelp-abusefilterchecksyntax-param-filter": "הטקסט המלא של המסנן לבדיקת תחביר עבורו.",
+ "apihelp-abusefilterchecksyntax-example-1": "בדיקת תחביר למסנן תקין",
+ "apihelp-abusefilterchecksyntax-example-2": "בדיקת תחביר למסנן לא תקין",
+ "apihelp-abusefilterevalexpression-description": "הערכת ביטוח מסנן השחתות.",
+ "apihelp-abusefilterevalexpression-summary": "הערכת ביטוי מסנן השחתות.",
+ "apihelp-abusefilterevalexpression-param-expression": "איזה ביטוח להעריך.",
+ "apihelp-abusefilterevalexpression-example-1": "הערכת ביטוי פשוט",
+ "apihelp-abusefilterunblockautopromote-description": "ביטול מניעה ממשתמש לקבל קידום אוטומטי בעקבות תוצאה של פעולת מסנן השחתות.",
+ "apihelp-abusefilterunblockautopromote-summary": "מסיר ממשתמש את החסימה מפני קבלת קידום אוטומטי כתוצאה מפעולת מסנן השחתות.",
+ "apihelp-abusefilterunblockautopromote-param-user": "שם של משתמש שברצונך ליטול ממנו את המניעה.",
+ "apihelp-abusefilterunblockautopromote-example-1": "הסרת מניעת קידום אוטומטי של [[User:Example]]",
+ "apihelp-query+abusefilters-description": "הצגת פרטים על מסנן השחתה.",
+ "apihelp-query+abusefilters-summary": "הצגת פרטים על מסנני השחתות.",
+ "apihelp-query+abusefilters-param-startid": "מזהה המסנן שהמנייה תתחיל ממנו.",
+ "apihelp-query+abusefilters-param-endid": "מזהה המסנן שבו תסתיים המנייה.",
+ "apihelp-query+abusefilters-param-show": "הצגת מסננים שמתאימים לאמות המידה הבאות.",
+ "apihelp-query+abusefilters-param-limit": "המספר המרבי של מסננים שיירשמו.",
+ "apihelp-query+abusefilters-param-prop": "אילו מאפיינים לקבל.",
+ "apihelp-query+abusefilters-example-1": "רשימת מסננים ציבוריים מופעלים",
+ "apihelp-query+abusefilters-example-2": "הצגת פרטים מסוימים על מסננים",
+ "apihelp-query+abuselog-description": "הצגת אירועים שנתפסו על־ידי אחד ממסנני ההשחתות.",
+ "apihelp-query+abuselog-summary": "הצגת אירועים שנתפסו על־ידי אחד ממסנני ההשחתות.",
+ "apihelp-query+abuselog-param-start": "חותם־הזמן שהמנייה תתחיל ממנו.",
+ "apihelp-query+abuselog-param-end": "חותם־הזמן שבו תסתיים המנייה.",
+ "apihelp-query+abuselog-param-user": "להציג רק עיולים שנעשו על־ידי משתמש נתון או כתובת IP.",
+ "apihelp-query+abuselog-param-title": "להציג רק עיולים שאירעו בדך נתון.",
+ "apihelp-query+abuselog-param-filter": "להציג רק עיולים שנתפסו במסנן עם מזהה מסנן נתון.",
+ "apihelp-query+abuselog-param-limit": "מספר מרבי של עיולים שיהיו ברשימה.",
+ "apihelp-query+abuselog-param-prop": "אילו מאפיינים לקבל.",
+ "apihelp-query+abuselog-example-1": "להציג עיולי יומן אחרונים",
+ "apihelp-query+abuselog-example-2": "הצגת עיולי יומן אחרונים עבור [[API]]",
+ "apierror-abusefilter-canttest": "אין לך הרשאה לבחון מסנני השחתות.",
+ "apierror-abusefilter-cantcheck": "אין לך הרשאה לבדוק את התחביר של מסנני השחתות.",
+ "apierror-abusefilter-nosuchlogid": "אין רשומה ביומן ההשחתות עם המזהה $1.",
+ "apierror-abusefilter-badsyntax": "המסנן מכיל תחביר בלתי תקין."
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/hi.json b/www/wiki/extensions/AbuseFilter/i18n/hi.json
new file mode 100644
index 00000000..b47ccc06
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/hi.json
@@ -0,0 +1,432 @@
+{
+ "@metadata": {
+ "authors": [
+ "Akansha",
+ "Ansumang",
+ "Bhawani Gautam",
+ "Bhawani Gautam Rhk",
+ "Kaustubh",
+ "Kumar",
+ "Siddhartha Ghai",
+ "Wikiuser13",
+ "संजीव कुमार",
+ "Hindustanilanguage",
+ "Matma Rex",
+ "Sfic",
+ "Sachinkatiyar",
+ "ArmouredCyborg",
+ "Innocentbunny",
+ "Nitin1485",
+ "Smtchahal"
+ ]
+ },
+ "abusefilter-desc": "संपादनों पर स्वतः शोध प्रणाली का प्रयोग लागू करता है",
+ "abusefilter": "दुरुपयोग फ़िल्टर विन्यास",
+ "abuselog": "दुरुपयोग लॉग",
+ "abusefilter-intro": "दुरुपयोग फ़िल्टर प्रबंधन अंतरफल में आपका स्वागत है।\nदुरुपयोग फ़िल्टर सभी कार्यों पर स्वतः शोध प्रणाली लागू करने का एक स्वचालित सॉफ़्टवेयर है।\nयह अंतरफल परिभाषित फ़िल्टरों की एक सूची दिखाता है, और यहाँ पर उन्हें संपादित किया जा सकता है।",
+ "abusefilter-mustbeeditor": "सुरक्षा कारणों के लिए, इस पृष्ठ का प्रयोग केवल वही सदस्य कर सकते हैं जिन्हें दुरुपयोग फ़िल्टर को संपादित करने का अधिकार है।",
+ "abusefilter-warning": "'''चेतावनी''': इस कार्य को स्वचालित रूप से हानिकारक पाया गया है।\nअरचनात्मक संपादनों को शीघ्र पूर्ववत कर दिया जाएगा,\nऔर बार-बार अरचनात्मक और हानिकारक संपादन करने पर आपके सदस्य खाते अथवा आइ॰पी पते को अवरोधित भी किया जा सकता है।\nयदि आपका मानना है कि यह कार्य रचनात्मक है, तो इसे सहेजने के लिये फिर से \"पृष्ठ सहेजें\" का बटन दबाएँ।\nआपके संपादन को पकड़ने वाले नियम का संक्षिप्त विवरण है: $1",
+ "abusefilter-disallowed": "इस कार्य को स्वचालित रूप से हानिकारक पाया गया है, अतः इसे करने की अनुमति नहीं है।\nयदि आपका मानना है कि आपका कार्य रचनात्मक था, अपने कार्य की जानकारी कृपया किसी प्रबंधक को दें।\nआपके संपादन को पकड़ने वाले नियम का संक्षिप्त विवरण है: $1",
+ "abusefilter-blocked-display": "इस कार्य को स्वचालित रूप से हानिकारक पाया गया है,\nऔर आपको ऐसा करने से रोका गया है।\nइसके साथ, {{SITENAME}} की सुरक्षा के लिये आपके सदस्य खाते और सभी सम्बंधित आइ॰पी पतों को संपादन से अवरोधित कर दिया गया है।\nयदि यह गलती से हुआ है, कृपया किसी प्रबंधक से संपर्क करें।\nआपके संपादन को पकड़ने वाले नियम का संक्षिप्त विवरण है: $1",
+ "abusefilter-degrouped": "इस कार्य को स्वचालित रूप से हानिकारक पाया गया है।\nअतः, इसे रोक दिया गया है, और चूँकि इस बात का शक है कि आपके खाते के साथ छेड़-छाड़ हुई है, आपके सभी सदस्य अधिकार वापिस ले लिये गए हैं।\nयदि आपको लगता कि यह गलती से हुआ है, कृपया इस कार्य के विवरण के साथ किसी प्रशासक से संपर्क करें, और आपके सदस्य अधिकार वापिस दिये जा सकते हैं।\nआपके संपादन को पकड़ने वाले नियम का संक्षिप्त विवरण है: $1",
+ "abusefilter-autopromote-blocked": "इस कार्य को स्वचालित रूप से हानिकारक पाया गया है, अतः इसे करने की अनुमति नहीं है।\nसाथ ही, सुरक्षा कदम के तौर पे, पंजीकृत खातों को दिये जाने वाले कुछ आम अधिकार आपके खाते से अस्थायी रूप से वापिस ले लिये गए हैं।\nआपके संपादन को पकड़ने वाले नियम का संक्षिप्त विवरण है: $1",
+ "abusefilter-blocker": "दुरुपयोग फ़िल्टर",
+ "abusefilter-blockreason": "दुरुपयोग फ़िल्टर द्वारा स्वचालित रूप से अवरुद्ध।\nपकड़ने वाले नियम का संक्षिप्त विवरण है: $1",
+ "abusefilter-degroupreason": "सदस्य अधिकार दुरुपयोग फ़िल्टर द्वारा स्वचालित रूप से वापिस ले लिये गए हैं।\nपकड़ने वाले नियम का संक्षिप्त विवरण है: $1",
+ "abusefilter-accountreserved": "यह सदस्य नाम दुरुपयोग फ़िल्टर के उपयोग के लिए आरक्षित है।",
+ "right-abusefilter-modify": "दुरुपयोग फ़िल्टर संशोधित करें",
+ "right-abusefilter-view": "दुरुपयोग फ़िल्टर देखें",
+ "right-abusefilter-log": "दुरुपयोग लॉग देखें",
+ "right-abusefilter-log-detail": "दुरुपयोग लॉग की प्रविष्टियाँ विस्तार में देखें",
+ "right-abusefilter-private": "दुरुपयोग लॉग में निजी डेटा देखें",
+ "right-abusefilter-modify-restricted": "दुरुपयोग फ़िल्टर को प्रतिबन्धित कार्यों सहित सम्पादित करें",
+ "right-abusefilter-revert": "किसी एक दिए गए दुरुपयोग फ़िल्टर द्वारा किये सभी परिवर्तनों को वापिस लें",
+ "right-abusefilter-view-private": "वो दुरुपयोग फ़िल्टर देखें जिन्हें निजी चिन्हित किया गया है",
+ "right-abusefilter-log-private": "निजी फ़िल्टरों की लॉग प्रविष्टियाँ देखें",
+ "right-abusefilter-hide-log": "दुरुपयोग लॉग में प्रविष्टियाँ छिपाएँ",
+ "right-abusefilter-hidden-log": "छुपी हुई दुरुपयोग लॉग प्रविष्टियाँ देखें",
+ "right-abusefilter-modify-global": "वैश्विक दुरुपयोग फ़िल्टर बनाएँ अथवा संशोधित करें",
+ "action-abusefilter-modify": "दुरुपयोग फ़िल्टर संशोधित करें",
+ "action-abusefilter-view": "दुरुपयोग फ़िल्टर देखें",
+ "action-abusefilter-log": "दुरुपयोग लॉग देखें",
+ "action-abusefilter-log-detail": "दुरुपयोग लॉग की प्रविष्टियाँ विस्तार में देखें",
+ "action-abusefilter-private": "दुरुपयोग लॉग में निजी डेटा देखें",
+ "action-abusefilter-modify-restricted": "दुरुपयोग फ़िल्टर को प्रतिबन्धित कार्यों सहित सम्पादित करें",
+ "action-abusefilter-revert": "किसी एक दिए गए दुरुपयोग फ़िल्टर द्वारा किये सभी परिवर्तनों को वापिस लें",
+ "action-abusefilter-view-private": "वो दुरुपयोग फ़िल्टर देखें जिन्हें निजी चिन्हित किया गया है",
+ "abusefilter-log": "दुरुपयोग फ़िल्टर लॉग",
+ "abusefilter-log-summary": "यह लॉग फ़िल्टरों द्वारा पकड़े गए सभी कार्यों की सूची दिखाता है।",
+ "abusefilter-log-search": "दुरुपयोग लॉग खोज",
+ "abusefilter-log-search-user": "सदस्य:",
+ "abusefilter-log-search-filter": "फ़िल्टर IDs (पाइप के साथ अलग):",
+ "abusefilter-log-search-title": "शीर्षक:",
+ "abusefilter-log-search-wiki": "विकी:",
+ "abusefilter-log-search-impact-all": "सभी कार्य",
+ "abusefilter-log-search-entries-label": "दृश्यता:",
+ "abusefilter-log-search-entries-all": "सभी प्रविष्टियाँ",
+ "abusefilter-log-search-entries-hidden": "केवल छुपी प्रविष्टियां",
+ "abusefilter-log-search-action-taken-any": "कोई",
+ "abusefilter-log-search-submit": "खोज",
+ "abusefilter-log-entry": "$1: $2 द्वारा $4 पर किये कार्य \"$3\" को दुरुपयोग फ़िल्टर ने पकड़ा।\nफ़िल्टर द्वारा उठाया गया कदम: $5;\nफ़िल्टर विवरण: $6",
+ "abusefilter-log-detailedentry-meta": "$1: $2 द्वारा $5 पर किये कार्य \"$4\" को दुरुपयोग फ़िल्टर $3 ने पकड़ा।\nफ़िल्टर द्वारा उठाया गया कदम: $6;\nफ़िल्टर विवरण: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "वैश्विक फ़िल्टर $1",
+ "abusefilter-log-detailedentry-local": "फ़िल्टर $1",
+ "abusefilter-log-detailslink": "विस्तृत विवरण",
+ "abusefilter-log-diff": "अंतर",
+ "abusefilter-log-hidelink": "दृश्यता समयोजित करें",
+ "abusefilter-log-details-legend": "लॉग प्रविष्टि $1 के लिए विवरण",
+ "abusefilter-log-details-var": "प्राचल",
+ "abusefilter-log-details-val": "मूल्य",
+ "abusefilter-log-details-vars": "कार्य के प्राचल",
+ "abusefilter-log-details-private": "निजी डेटा",
+ "abusefilter-log-details-ip": "स्रोत आइ॰पी पता",
+ "abusefilter-log-noactions": "कोई नहीं",
+ "abusefilter-log-details-diff": "सम्पादन में किये बदलाव",
+ "abusefilter-log-linkoncontribs": "दुरुपयोग लॉग",
+ "abusefilter-log-linkoncontribs-text": "{{GENDER:$1|इस सदस्य}} के लिए दुरुपयोग लॉग",
+ "abusefilter-log-hidden": "(प्रविष्टि छिपी हुई)",
+ "abusefilter-log-hidden-implicit": "(प्रविष्टि छुपाई गई है क्योंकि अवतरण हटा दिया गया है)",
+ "abusefilter-log-cannot-see-details": "आपके पास इस प्रविष्टि का विस्तृत विवरण देखने की अनुमति नहीं है",
+ "abusefilter-log-cannot-see-private-details": "आपको इस प्रविष्टि के निजी विवरण देखने की अनुमति नहीं है।",
+ "abusefilter-log-details-hidden": "आप इस प्रविष्टि का विस्तृत विवरण नहीं देख सकते हैं क्योंकि इसे सार्वजनिक दृष्टि से छुपाया गया है",
+ "abusefilter-log-hide-legend": "लॉग प्रविष्टि छुपाएँ",
+ "abusefilter-log-hide-id": "लॉग प्रविष्टि आइ॰डी:",
+ "abusefilter-log-hide-hidden": "इस प्रविष्टि को सार्वजनिक दृष्टि से छुपाएँ",
+ "abusefilter-log-hide-reason": "कारण:",
+ "abusefilter-log-hide-forbidden": "आपके पास दुरुपयोग लॉग प्रविष्टियाँ छुपाने की अनुमति नहीं है।",
+ "abusefilter-logentry-suppress": "\"[[$1]]\" को छुपाया",
+ "abusefilter-logentry-unsuppress": "ना छुपाएँ \"[[$1]]\"",
+ "logentry-abusefilter-hit": "$1 ने $3 पर \"$5\" किया जिसे $4 ने पकड़ा और निम्न कदम उठाया: $6 ($7)",
+ "logentry-abusefilterprivatedetails-access": "$1 $3 के व्यक्तिगत विवरण तक {{{{GENDER:$2|पहुँचा}}",
+ "abusefilter-management": "दुरुपयोग फ़िल्टर प्रबंधन",
+ "abusefilter-list": "सभी फ़िल्टर",
+ "abusefilter-list-id": "फ़िल्टर आइ॰डी",
+ "abusefilter-list-status": "स्थिति",
+ "abusefilter-list-public": "सार्वजनिक विवरण",
+ "abusefilter-list-consequences": "परिणाम",
+ "abusefilter-list-visibility": "दृष्टता",
+ "abusefilter-list-hitcount": "हिट गिनती",
+ "abusefilter-list-edit": "संपादित करें",
+ "abusefilter-list-details": "विवरण",
+ "abusefilter-list-limit": "प्रति पृष्ठ संख्या:",
+ "abusefilter-list-lastmodified": "पिछला संशोधन",
+ "abusefilter-list-group": "फ़िल्टर समूह",
+ "abusefilter-hidden": "निजी",
+ "abusefilter-unhidden": "सार्वजनिक",
+ "abusefilter-enabled": "सक्षम",
+ "abusefilter-deleted": "हटाए गए",
+ "abusefilter-disabled": "अक्षम किया गया",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|हिट|हिट}}",
+ "abusefilter-new": "नया फ़िल्टर बनाएँ",
+ "abusefilter-return": "फ़िल्टर प्रबंधन को लौटें",
+ "abusefilter-status-global": "वैश्विक",
+ "abusefilter-list-options": "विकल्प",
+ "abusefilter-list-options-deleted": "हटाए गए फ़िल्टर:",
+ "abusefilter-list-options-deleted-only": "केवल हटाए गए फ़िल्टर दिखाएँ",
+ "abusefilter-list-options-deleted-hide": "हटाए गए फ़िल्टर छुपाएँ",
+ "abusefilter-list-options-deleted-show": "हटाए गए फ़िल्टर शामिल करें",
+ "abusefilter-list-options-scope": "फ़िल्टरों को दिखाएँ:",
+ "abusefilter-list-options-scope-local": "केवल स्थानीय नियम",
+ "abusefilter-list-options-scope-global": "केवल वैश्विक नियम",
+ "abusefilter-list-options-scope-all": "स्थानीय और वैश्विक नियम",
+ "abusefilter-list-options-disabled": "अक्षम किये गए फ़िल्टर:",
+ "abusefilter-list-options-hidedisabled": "अक्षम किये गए फ़िल्टर छुपाएँ",
+ "abusefilter-list-options-submit": "अद्यतन",
+ "abusefilter-tools-text": "ये कुछ उपकरण हैं जो दुरुपयोग फ़िल्टर बनाने और डीबग करने में सहायक होंगे।",
+ "abusefilter-tools-expr": "अभिव्यक्ति परीक्षक",
+ "abusefilter-tools-submitexpr": "जाँचें",
+ "abusefilter-tools-reautoconfirm": "स्वतः स्थापित स्थिति पर वापिस लाएँ",
+ "abusefilter-tools-reautoconfirm-user": "सदस्य:",
+ "abusefilter-tools-reautoconfirm-submit": "पुनः स्वतः स्थापित बनाएँ",
+ "abusefilter-reautoconfirm-none": "उस सदस्य का स्वतः स्थापित अधिकार वापिस नहीं लिया गया है।",
+ "abusefilter-reautoconfirm-notallowed": "आप स्वतः स्थापित अधिकार वापिस नहीं दे सकते।",
+ "abusefilter-reautoconfirm-done": "सदस्य का स्वतः स्थापित अधिकार लौटा दिया गया है",
+ "abusefilter-status": "पिछले $1 {{PLURAL:$1|कार्य|कार्यों}} में से $2 ($3%) ने $4 शर्तों की शर्त सीमा को पार किया है, और $5 ($6%) कार्य फ़िल्टरों द्वारा पकड़े गए हैं।",
+ "abusefilter-edit": "दुरुपयोग फ़िल्टर सम्पादन",
+ "abusefilter-edit-subtitle": "फ़िल्टर $1 सम्पादन",
+ "abusefilter-edit-subtitle-new": "फ़िल्टर बनायें",
+ "abusefilter-edit-oldwarning": "<strong>आप फ़िल्टर का एक पुराना अवतरण सम्पादित कर रहे हैं।\nदिये गए आँकड़े फ़िल्टर के नवीनतम अवतरण के लिये हैं।\nयदि आप अपने बदलाव संजोते हैं, आप इस अवतरण के बाद हुए सभी बदलावों को खारिज कर देंगे।</strong>&bull;\n[[Special:AbuseFilter/history/$2|इस फ़िल्टर के इतिहास को लौटें]]।",
+ "abusefilter-edit-status-label": "आँकड़े:",
+ "abusefilter-edit-status": "पिछले $1 {{PLURAL:$1|कार्य|कार्यों}} में से इस फ़िल्टर द्वारा $2 ($3%) पकड़े गए हैं।",
+ "abusefilter-edit-status-profile": "पिछले $1 {{PLURAL:$1|कार्य|कार्यों}} में से इस फ़िल्टर द्वारा $2 ($3%) पकड़े गए हैं।\nइसका औसत रन-टाइम $4 ms है, और यह शर्त सीमा में से $5 {{PLURAL:$5|शर्त|शर्तों}} का प्रयोग करता है।",
+ "abusefilter-edit-new": "नया फ़िल्टर",
+ "abusefilter-edit-save": "फ़िल्टर सहेजें",
+ "abusefilter-edit-id": "फ़िल्टर आइ॰डी:",
+ "abusefilter-edit-switch-editor": "संपादक बदलें",
+ "abusefilter-edit-description": "विवरण:\n:''(सार्वजनिक)''",
+ "abusefilter-edit-group": "फ़िल्टर समूह:",
+ "abusefilter-edit-flags": "झंडे:",
+ "abusefilter-edit-enabled": "इस फ़िल्टर को सक्षम करें",
+ "abusefilter-edit-deleted": "हटाया गया चिन्हित करें",
+ "abusefilter-edit-hidden": "सार्वजनिक दृश्य से इस फ़िल्टर का विवरण छिपाएँ",
+ "abusefilter-edit-global": "वैश्विक फ़िल्टर",
+ "abusefilter-edit-rules": "शर्तें:",
+ "abusefilter-edit-notes": "नोट्स:",
+ "abusefilter-edit-lastmod": "फ़िल्टर का अंतिम संशोधन:",
+ "abusefilter-edit-lastmod-text": "$2 द्वारा $1 को",
+ "abusefilter-edit-hitcount": "फ़िल्टर हिट गिनती:",
+ "abusefilter-edit-consequences": "मिलान होने पर किये कार्य",
+ "abusefilter-edit-action-warn": "सदस्य को चेतावनी देने के बाद ये कार्य करें",
+ "abusefilter-edit-action-disallow": "सदस्य को फ़िल्टर द्वारा पकड़ा कार्य करने से रोकें",
+ "abusefilter-edit-action-blockautopromote": "सदस्य का स्वतः स्थापित अधिकार वापिस लें",
+ "abusefilter-edit-action-degroup": "सदस्य को सभी सदस्य समूहों से हटाएँ",
+ "abusefilter-edit-action-block": "सदस्य और/या आइ॰पी पते को संपादन करने से अवरोधित करें",
+ "abusefilter-edit-action-throttle": "कदम तभी उठाएँ अगर सदस्य रेट सीमा के पार जाए",
+ "abusefilter-edit-action-tag": "समिक्षा के किए बदलाव को टैग करें",
+ "abusefilter-edit-throttle-count": "संख्या जितने कार्यों की अनुमति देनी है:",
+ "abusefilter-edit-throttle-period": "समय की अवधि:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|सॅकेंड|सॅकेंड}}",
+ "abusefilter-edit-warn-message": "चेतावनी के लिये प्रयोग किया जाने वाला अंतरफल संदेश:",
+ "abusefilter-edit-warn-other": "अन्य संदेश",
+ "abusefilter-edit-warn-other-label": "अन्य संदेश का पृष्ठ नाम:\n:''(मीडियाविकी उपसर्ग के बिना)''",
+ "abusefilter-edit-warn-actions": "क्रियाएँ:",
+ "abusefilter-edit-warn-preview": "चुने हुए सन्देश का पूर्वावलोकन करें",
+ "abusefilter-edit-warn-edit": "चुना हुआ सन्देश बनाएँ अथवा संपादित करें",
+ "abusefilter-edit-tag-tag": "लगाए जाने वाले [[special:tags|टैग]] (एक प्रति पंक्ति)",
+ "abusefilter-edit-denied": "आप इस फ़िल्टर का विवरण नहीं देख सकते हैं, क्योंकि यह सार्वजनिक दृष्टि से छुपा हुआ है।",
+ "abusefilter-edit-main": "फ़िल्टर प्राचल",
+ "abusefilter-edit-done-subtitle": "फ़िल्टर संपादित हो गया",
+ "abusefilter-edit-done": "आपके द्वारा [[Special:AbuseFilter/$1|फ़िल्टर $3]] में किये [[Special:AbuseFilter/history/$1/diff/prev/$2|बदलाव]] सहेजे गए हैं।",
+ "abusefilter-edit-badsyntax": "आपके द्वारा बताए फ़िल्टर में सिंटेक्स त्रुटि है।\nपार्सर की आउटपुट थी: <pre>$1</pre>",
+ "abusefilter-edit-restricted": "आप इस फ़िल्टर को सम्पादित नहीं कर सकते हैं, क्योंकि इसमें एक या अधिक प्रतिबन्धित कार्यों का प्रयोग है।\nकृपया बदलाव करने के लिये किसी ऐसे सदस्य से अनुरोध करें जिसे प्रतिबन्धित कार्यों सहित दुरुपयोग फ़िल्टर का सम्पादन करने का अधिकार हो।",
+ "abusefilter-edit-viewhistory": "इस फ़िल्टर का इतिहास देखें",
+ "abusefilter-edit-history": "इतिहास:",
+ "abusefilter-edit-check": "वाक्यविन्यास की जाँच करें",
+ "abusefilter-edit-badfilter": "आपके द्वारा निर्दिष्ट फ़िल्टर मौजूद नहीं है।",
+ "abusefilter-edit-revert": "इस फ़िल्टर द्वारा किये कार्य वापिस लें",
+ "abusefilter-edit-tools": "उपकरण:",
+ "abusefilter-edit-test-link": "इस फ़िल्टर को हाल में हुए संपादनों पर प्रयोग कर के जाँचें",
+ "abusefilter-edit-export": "इस फ़िल्टर को किसी अन्य विकी को निर्यात करें",
+ "abusefilter-edit-syntaxok": "कोई सिंटेक्स त्रुटियाँ नहीं मिली।",
+ "abusefilter-edit-syntaxerr": "वाक्यविन्यास त्रुटि मिली: $1",
+ "abusefilter-edit-bad-tags": "आपके द्वारा बताए गए टैग वैध नहीं हैं।\n टैग छोटे होने चाहियें, और उनमें विशेष कैरैक्टर नहीं होने चाहियें।",
+ "abusefilter-edit-notallowed": "आपको दुरुपयोग फ़िल्टर बनाने अथवा संपादित करने की अनुमति नहीं है",
+ "abusefilter-edit-notallowed-global": "आपको वैश्विक दुरुपयोग फ़िल्टर बनाने अथवा संशोधित करने की अनुमति नहीं है",
+ "abusefilter-edit-notallowed-global-custom-msg": "वैश्विक फ़िल्टरों में विशिष्ट चेतावनी सन्देश समर्थित नहीं हैं",
+ "abusefilter-edit-builder-select": "जहाँ कर्सर है वहाँ जोड़ने के लिये कोई विकल्प चुनें",
+ "abusefilter-edit-builder-group-op-arithmetic": "अंकगणित ऑपरेटर",
+ "abusefilter-edit-builder-op-arithmetic-addition": "योग (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "घटाव (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "गुणन (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "भाग (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "भाग का शेष (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "पावर (**)",
+ "abusefilter-edit-builder-group-op-comparison": "तुलना ऑपरेटर",
+ "abusefilter-edit-builder-op-comparison-equal": "बराबर (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "बराबर नहीं (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "से कम (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "से अधिक (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "इससे कम या बराबर (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "इससे अधिक या बराबर (>=)",
+ "abusefilter-edit-builder-group-op-bool": "बूलिअन ऑपरेटर",
+ "abusefilter-edit-builder-op-bool-not": "नहीं (!)",
+ "abusefilter-edit-builder-op-bool-and": "और (&)",
+ "abusefilter-edit-builder-op-bool-or": "या (|)",
+ "abusefilter-edit-builder-op-bool-xor": "एक या दूसरा, पर दोनो नहीं (^)",
+ "abusefilter-edit-builder-group-misc": "विविध",
+ "abusefilter-edit-builder-misc-in": "स्ट्रिंग में मौजूद (in)",
+ "abusefilter-edit-builder-misc-like": "पैटर्न को पकड़े (like)",
+ "abusefilter-edit-builder-misc-rlike": "regex को पकड़े (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "regex को पकड़े, case insensitive (irlike)",
+ "abusefilter-edit-builder-misc-contains": "बाईं ओर दिये स्ट्रिंग में दाहिनी ओर दिया स्ट्रिंग हो (contains)",
+ "abusefilter-edit-builder-misc-tern": "त्रिगुट ऑपरेटर (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "सशर्त (if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "फ़ंक्शन",
+ "abusefilter-edit-builder-funcs-length": "स्ट्रिंग लंबाई (length)",
+ "abusefilter-edit-builder-funcs-lcase": "लोअर केस को (lcase)",
+ "abusefilter-edit-builder-funcs-ucase": "बड़े अक्षरों की ओर (ucase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "उलझाने वाले कैरेक्टरों को साधारण रूप देना (ccnorm)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "बार-बार आए अक्षर सिर्फ़ एक बार लें (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "विशेष कैरैक्टर/कुल कैरैक्टर (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "नियमित (norm)",
+ "abusefilter-edit-builder-funcs-count": "स्ट्रिंग X के स्ट्रिंग Y में होने की संख्या (count)",
+ "abusefilter-edit-builder-funcs-rcount": "regex X के स्ट्रिंग Y में पाए जाने की संख्या (rcount)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "वाईट-स्पेस हटाएँ (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "विशेष कैरैक्टर हटाएँ (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "क्या आइ॰पी रेंज में है? (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "स्ट्रिंग में अनेक सबस्ट्रिंग खोजें (contains_any)",
+ "abusefilter-edit-builder-funcs-substr": "सबस्ट्रिंग (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "सबस्ट्रिंग की स्ट्रिंग में पोज़िशन (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "सबस्ट्रिंग की जगह स्ट्रिंग डालें (str_replace)",
+ "abusefilter-edit-builder-funcs-rescape": "छुटकारा स्ट्रिंग बतौर लिटेरेल रेगेक्स में (rescape)",
+ "abusefilter-edit-builder-funcs-set_var": "प्राचल सॅट करें (set_var)",
+ "abusefilter-edit-builder-group-vars": "प्राचल",
+ "abusefilter-edit-builder-vars-accountname": "खाता नाम (खाता निर्माण समय में)",
+ "abusefilter-edit-builder-vars-timestamp": "बदलाव की Unix timestamp",
+ "abusefilter-edit-builder-vars-action": "कार्य",
+ "abusefilter-edit-builder-vars-addedlines": "सम्पादन में जोड़ी गई लाइनें",
+ "abusefilter-edit-builder-vars-delta": "संपादन में आकार बदलाव",
+ "abusefilter-edit-builder-vars-diff": "सम्पादन से हुए बदलावों का एकत्रित अंतर देखिए",
+ "abusefilter-edit-builder-vars-newsize": "नया पृष्ठ आकार",
+ "abusefilter-edit-builder-vars-oldsize": "पुराना पृष्ठ आकार",
+ "abusefilter-edit-builder-vars-removedlines": "सम्पादन में हटाई गई लाइनें",
+ "abusefilter-edit-builder-vars-summary": "सम्पादन सारांश/कारण",
+ "abusefilter-edit-builder-vars-article-id": "पृष्ठ आइ॰डी",
+ "abusefilter-edit-builder-vars-article-ns": "पृष्ठ नामस्थान",
+ "abusefilter-edit-builder-vars-article-text": "पृष्ठ शीर्षक (बिना नामस्थान)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "पूर्ण पृष्ठ शीर्षक",
+ "abusefilter-edit-builder-vars-article-views": "पृष्ठ प्रदर्शन",
+ "abusefilter-edit-builder-vars-movedfrom-id": "स्थानान्तरण से पूर्व पृष्ठ आइ॰डी",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "स्थानान्तरण से पूर्व पृष्ठ का नामस्थान",
+ "abusefilter-edit-builder-vars-movedfrom-text": "स्थानांतरन शीर्षक का स्रोत पृष्ठ",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "स्थानांतरन के पूर्ण शीर्षक का स्रोत पृष्ठ",
+ "abusefilter-edit-builder-vars-movedto-id": "स्थानांतरन स्थान के पृष्ठ का आई०डी०",
+ "abusefilter-edit-builder-vars-movedto-ns": "स्थानांतरन स्थान के पृष्ठ का नामस्थान",
+ "abusefilter-edit-builder-vars-movedto-text": "स्थानांतरन स्थान पृष्ठ का शीर्षक",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "स्थानांतरन स्थान पृष्ठ का पूर्ण शीर्षक",
+ "abusefilter-edit-builder-vars-user-editcount": "सदस्य की सम्पादन गिनती",
+ "abusefilter-edit-builder-vars-user-age": "सदस्य खाते की आयु",
+ "abusefilter-edit-builder-vars-user-name": "सदस्यखाते का नाम",
+ "abusefilter-edit-builder-vars-user-groups": "समूह (अंतर्निहित जोड़कर) जिसमें सदस्य है",
+ "abusefilter-edit-builder-vars-user-rights": "अधिकार जो सदस्य रखता है",
+ "abusefilter-edit-builder-vars-user-blocked": "क्या सदस्य को अवरोधित किया गया है",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "समय जब ई-मेल पते की पुष्टि की गई थी",
+ "abusefilter-edit-builder-vars-recent-contributors": "पृष्ठ पर योगदान देने वाले अंतिम दस सदस्य",
+ "abusefilter-edit-builder-vars-first-contributor": "पृष्ठ पर योगदान देने वाला पहला सदस्य",
+ "abusefilter-edit-builder-vars-all-links": "नए टेक्स्ट में सभी बाहरी कड़ियाँ",
+ "abusefilter-edit-builder-vars-added-links": "सम्पादन में जोड़ी गई सभी बाहरी कड़ियाँ",
+ "abusefilter-edit-builder-vars-removed-links": "सम्पादन में हटाई गई सभी बाहरी कड़ियाँ",
+ "abusefilter-edit-builder-vars-old-text": "पुराने पृष्ठ विकिलेख, सम्पादन से पहले",
+ "abusefilter-edit-builder-vars-new-text": "नया पृष्ठ विकिलेख, सम्पादन के बाद",
+ "abusefilter-edit-builder-vars-new-pst": "नए पष्ठ का विकि-पाठ, सहेजने से पूर्व तबदील",
+ "abusefilter-edit-builder-vars-diff-pst": "सम्पादन से हुए बदलावों का एकत्रित अंतर, सहेजने से पूर्व तबदील",
+ "abusefilter-edit-builder-vars-addedlines-pst": "सम्पादन में वाक्य जोड़े गए, सहेजने से पूर्व तबदील",
+ "abusefilter-edit-builder-vars-new-text-stripped": "नए पृष्ठ का पाठ, किसी भी मार्क-अप से खाली",
+ "abusefilter-edit-builder-vars-new-html": "नए संशोधन के स्रोत का एचटीएमएल पार्स किया गया",
+ "abusefilter-edit-builder-vars-restrictions-edit": "पृष्ठ का सुरक्षा स्तर बदलें",
+ "abusefilter-edit-builder-vars-restrictions-move": "पृष्ठ का स्थानान्तरण सुरक्षा स्तर",
+ "abusefilter-edit-builder-vars-restrictions-create": "इस पृष्ठ का सुरक्षा स्तर बनाएँ",
+ "abusefilter-edit-builder-vars-restrictions-upload": "इस फ़ाइल का सुरक्षा स्तर अपलोड करें",
+ "abusefilter-edit-builder-vars-old-text-stripped": "पुराने पृष्ठ का पाठ, किसी भी मार्क-अप से खाली",
+ "abusefilter-edit-builder-vars-old-links": "सम्पादन से पहले पृष्ठ में कड़ियाँ",
+ "abusefilter-edit-builder-vars-old-html": "पुराने पृष्ठ का विकि-पाठ एचटीएमएल में पार्स किया गया",
+ "abusefilter-edit-builder-vars-minor-edit": "सम्पादन को मामूली चिन्हित किया गया है या नहीं",
+ "abusefilter-edit-builder-vars-file-sha1": "फ़ाइल सामग्री की SHA1 hash",
+ "abusefilter-edit-builder-vars-file-size": "बाइट्स में फाइल का आकार",
+ "abusefilter-filter-log": "हाल ही में हुए फ़िल्टर बदलाव",
+ "abusefilter-history": "दुरुपयोग फ़िल्टर #$1 का परिवर्तन इतिहास",
+ "abusefilter-history-foruser": "$1 द्वारा परिवर्तन",
+ "abusefilter-history-hidden": "छिपा हुआ",
+ "abusefilter-history-enabled": "सक्षम",
+ "abusefilter-history-global": "वैश्विक",
+ "abusefilter-history-timestamp": "समय",
+ "abusefilter-history-user": "सदस्य",
+ "abusefilter-history-public": "सार्वजनिक फ़िल्टर वर्णन",
+ "abusefilter-history-flags": "सारे चिन्ह",
+ "abusefilter-history-filter": "फ़िल्टर नियम",
+ "abusefilter-history-comments": "टिप्पणियाँ",
+ "abusefilter-history-actions": "क्रियाएँ",
+ "abusefilter-history-backedit": "फ़िल्टर सम्पादन को वापिस",
+ "abusefilter-history-deleted": "हटाए गए",
+ "abusefilter-history-filterid": "फ़िल्टर",
+ "abusefilter-history-select-legend": "परिष्कृत खोज",
+ "abusefilter-history-select-user": "सदस्य:",
+ "abusefilter-history-select-submit": "परिष्कृत",
+ "abusefilter-history-diff": "परिवर्तन",
+ "abusefilter-history-error-hidden": "आपके द्वारा अनुरोधित फ़िल्टर छुपा हुआ है, और आप उसका इतिहास नहीं देख सकते।",
+ "abusefilter-exception-unexpectedatend": "$1 कैरैक्टर पर अनापेक्षित कोड \"$2\"।",
+ "abusefilter-exception-expectednotfound": "$1वे कैरैक्टर पर $2 की अपेक्षा थी, नहीं मिला (उसकी जगह $3 $4 मिला)",
+ "abusefilter-exception-unrecognisedkeyword": "कैरैक्टर $1 पर अज्ञात कीवर्ड $2 पाया गया।",
+ "abusefilter-exception-unexpectedtoken": "कैरैक्टर $1 पर $2 प्रकार का अनापेक्षित टोकन \"$3\" पाया गया।",
+ "abusefilter-exception-unclosedstring": "गैर-बंद स्ट्रिंग कैरेक्टर $1 पर शुरू हो रहा है।",
+ "abusefilter-exception-invalidoperator": "कैरैक्टर $1 पर अवैध ऑपरेटर \"$2\"",
+ "abusefilter-exception-unrecognisedtoken": "कैरैक्टर $1 पर अज्ञात टोकन \"$2\" पाया गया।",
+ "abusefilter-exception-noparams": "कैरैक्टर $1 पर फ़ंक्शन \"$2\" को कोई प्राचल नहीं दिये गए हैं।",
+ "abusefilter-exception-dividebyzero": "कैरैक्टर $1 पर $2 को शून्य से भाग देने का अवैध प्रयत्न पाया गया।",
+ "abusefilter-exception-unrecognisedvar": "कैरैक्टर $1 पर अज्ञात प्राचल $2 पाया गया।",
+ "abusefilter-exception-notenoughargs": "कैरैक्टर $1 पर प्रयुक्त फ़ंक्शन $2 के लिये प्राचल पूर्ण नहीं हैं।\n$3 {{PLURAL:$3|प्राचल|प्राचलों}} की अपेक्षा की थी, $4 प्राचल {{PLURAL:$4|मिला|मिले}}।",
+ "abusefilter-exception-regexfailure": "कैरैक्टर $1 पर regex \"$3\" में त्रुटि: \"$2\"",
+ "abusefilter-exception-overridebuiltin": "अवैध रूप से भीतरी वेरियबल \"$2\" को कैरेक्टर $1 ओवरराइड किया गया है।",
+ "abusefilter-exception-outofbounds": "निवेदन कर रहे हैं अनुपस्थित सूची आइटम $2 (सूची साइज़ = $3) कैरेक्टर $1 पर।",
+ "abusefilter-exception-notlist": "निवेदन कर रहे हैं ऐरे के आइटम को गैर-ऐरे कैरेक्टर $1 पर।",
+ "abusefilter-action-tag": "टैग",
+ "abusefilter-action-throttle": "कार्यों की रेट सीमा पार होने पर कदम उठाएँ",
+ "abusefilter-action-warn": "चेतावनी",
+ "abusefilter-action-blockautopromote": "स्वतःप्रचार अवरोध",
+ "abusefilter-action-block": "अवरोध",
+ "abusefilter-action-degroup": " सदस्य समूह से निकालें",
+ "abusefilter-action-rangeblock": "रेंज-अवरोध",
+ "abusefilter-action-disallow": "अस्वीकृत करें",
+ "abusefilter-revert-title": "फ़िल्टर $1 द्वारा किए गए सारे बदलाव वापिस लें",
+ "abusefilter-revert-intro": "इस फ़ॉर्म के प्रयोग से आप फ़िल्टर $1 के कारण दुरुपयोग फ़िल्टर द्वारा किये गए सभी सम्पादानों को वापिस ले सकते हैं।\nइसका प्रयोग करने में कृपया सावधानी बरतें।",
+ "abusefilter-revert-preview-item": "$1: $2 ने $4 पर $3 कार्य किया।\nवापिस लिये जाने वाले कार्य: $5 ($6)",
+ "abusefilter-revert-search-legend": "वापिस लेने के लिये दुरुपयोग फ़िल्टर द्वारा की क्रियाएँ चुनें",
+ "abusefilter-revert-periodstart": "अवधि प्रारंभ:",
+ "abusefilter-revert-periodend": "अवधि अंत:",
+ "abusefilter-revert-search": "क्रिया चयन करें",
+ "abusefilter-revert-filter": "फ़िल्टर आईडी:",
+ "abusefilter-revert-confirm-legend": "वापसी की पुष्टि करें",
+ "abusefilter-revert-confirm": "पुष्टि",
+ "abusefilter-revert-reasonfield": "कारण:",
+ "abusefilter-test": "पूर्व सम्पादनों से किसी फ़िलटर को जाँचें",
+ "abusefilter-test-legend": "फ़िल्टर परीक्षण करें",
+ "abusefilter-test-load-filter": "लोड फ़िल्टर आइ॰डी:",
+ "abusefilter-test-submit": "परीक्षण",
+ "abusefilter-test-load": "लोड",
+ "abusefilter-test-user": "सदस्य के द्वारा बदलाव:",
+ "abusefilter-test-period-start": "बाद में किए गए बदलाव:",
+ "abusefilter-test-period-end": "पहले किए गए बदलाव:",
+ "abusefilter-test-page": "पृष्ठ में बना हुआ बदलाव:",
+ "abusefilter-test-shownegative": "फ़िलटर से मेल नहीं खाने वाले बदलावों को दिखाएँ",
+ "abusefilter-changeslist-examine": "परीक्षण",
+ "abusefilter-examine": "व्यक्तिगत बदलाव जाँचें",
+ "abusefilter-examine-legend": "बदलाव चयन करें",
+ "abusefilter-examine-diff": "अंतर URL:",
+ "abusefilter-examine-user": "सदस्य:",
+ "abusefilter-examine-title": "पृष्ठ शीर्षक:",
+ "abusefilter-examine-submit": "खोज",
+ "abusefilter-examine-vars": "इस बदलाव से जारी होने वाले वेरियेबल",
+ "abusefilter-examine-test": "इस बदलाव को किसी फ़िलटर से जाँचे।",
+ "abusefilter-examine-test-button": "टेस्ट फ़िल्टर",
+ "abusefilter-examine-match": "इस बदलाव से फ़िलटर मेल खा रही है।",
+ "abusefilter-examine-nomatch": "इस बदलाव से फ़िलटर मेल नहीं खा रही है।",
+ "abusefilter-examine-syntaxerror": "फ़िलटर का सिंटैक्स अवैध है",
+ "abusefilter-examine-notfound": "आपके द्वारा निवेदन किया गया बदलाव नहीं मिला है।",
+ "abusefilter-examine-incompatible": "आपके द्वारा निवेदन किया गया बदलाव दुरुपयोग फ़िलटर से गुज़र नहीं सकता",
+ "abusefilter-examine-noresults": "आपके द्वारा दिए गए खोज पैरामीटर से कोई परिणाम नहीं मिले हैं।",
+ "abusefilter-topnav": "'''दुरुपयोग फ़िल्टर नैविगेशन'''",
+ "abusefilter-topnav-home": "घर",
+ "abusefilter-topnav-test": "बैच-जाँच",
+ "abusefilter-topnav-examine": "पूर्व बदलाव परीक्षा करें",
+ "abusefilter-topnav-log": "दुरुपयोग लॉग",
+ "abusefilter-topnav-tools": "डिबगिंग उपकरण",
+ "abusefilter-topnav-import": "आयात फ़िल्टर",
+ "abusefilter-log-name": "दुरुपयोग फ़िल्टर लॉग",
+ "abusefilter-logentry-modify": "$1 {{लिंग:$2|संशोधित}} $4 ($5)",
+ "abusefilter-log-noresults": "कोई परिणाम नहीं",
+ "abusefilter-diff-title": "अवतरणों के बीच अंतर",
+ "abusefilter-diff-item": "आइटम",
+ "abusefilter-diff-version": "अवतरण $1 से $2 {{GENDER:$3|द्वारा}}",
+ "abusefilter-diff-info": "मूल जानकारी",
+ "abusefilter-diff-pattern": "फ़िल्टर शर्तें",
+ "abusefilter-diff-invalid": "निवेदन किए गए अवतरण को प्रस्तुत नहीं किया जा सका",
+ "abusefilter-diff-backhistory": "फ़िल्टर इतिहास को वापिस",
+ "abusefilter-diff-prev": "पुराने बदलाव",
+ "abusefilter-diff-next": "नए बदलाव",
+ "abusefilter-import-submit": "डेटा आयात करें",
+ "abusefilter-group-default": "डिफ़ॉल्ट",
+ "abusefilter-http-error": "एच॰टी॰टी॰पी त्रुटि हुई है: $1 ।",
+ "abusefilter-view-private-submit": "व्यक्तिगत विवरण देखें",
+ "abusefilter-view-private": "व्यक्तिगत विवरण देखें",
+ "abusefilter-view-private-reason": "निजी विवरण तक पहुंचने का कारण",
+ "abusefilter-invalid-request-noid": "अमान्य अनुरोध! आपको दुर्व्यवहार लॉग विवरण पृष्ठ पर फ़ॉर्म के माध्यम से निजी लॉग विवरण एक्सेस करना होगा और एक कारण प्रदान करना होगा।",
+ "abusefilter-log-ip-not-available": "उपलब्ध नहीं है",
+ "apihelp-abusefiltercheckmatch-param-filter": "मेल खाने को जाँचने के लिए पूर्ण फ़िलटर पाठ ।",
+ "apihelp-abusefilterevalexpression-param-expression": "जाँचने की अभिव्यक्ति",
+ "apihelp-abusefilterevalexpression-example-1": "सीधी अभिव्यक्ति जाँचना",
+ "apihelp-abusefilterunblockautopromote-param-user": "उस सदस्य का सदस्यनाम जिस पर से आप अवरोध हटाना चाहते हैं।",
+ "apihelp-abusefilterunblockautopromote-example-1": "[[User:Example]] के स्वतःपदोन्नति पर से अवरोध हटाना",
+ "apihelp-query+abusefilters-param-prop": "कौन से गुण पाना चाहिए।",
+ "apihelp-query+abusefilters-example-1": "सक्षम सार्वजनिक फ़िलटरों सूची दें",
+ "apihelp-query+abusefilters-example-2": "फ़िलटरों के बारे में कुछ जानकारी दिखाइये",
+ "apihelp-query+abuselog-description": "उन घटनाओं को दिखाएँ जिन्हें दुरुपयोग फ़िलटरों में से किसी एक द्वारा दिखाया गया है।",
+ "apihelp-query+abuselog-param-start": "समयछाप की गिनती प्रारंभ हो रही (स्थान) से।",
+ "apihelp-query+abuselog-param-end": "समयछाप की गिनती समाप्त हो रही (स्थान) से।",
+ "apihelp-query+abuselog-param-user": "केवल उन प्रविष्टियों को दिखाएँ जो दिए गए सदस्य या आई०पी० पते द्वारा किए गए हैं।",
+ "apihelp-query+abuselog-param-title": "केवल उन प्रविष्टियों को दिखाएँ जो दिए गए पृष्ठ पर आ रहे हैं।",
+ "apihelp-query+abuselog-param-filter": "केवल उन प्रविष्टियों को दिखाएँ जो दी गई फ़िलटर आई०डी० द्वारा दिखाई गई है।",
+ "apihelp-query+abuselog-param-limit": "सूची के अनुसार सर्वाधिक प्रविष्टियाँ।",
+ "apihelp-query+abuselog-param-prop": "कौन से गुण पाना चाहिए।",
+ "apihelp-query+abuselog-example-1": "हाल के लॉग प्रविष्टियाँ दिखाएँ",
+ "apihelp-query+abuselog-example-2": "हाल के लॉग प्रविष्टियाँ [[API]] के लिए दिखाएँ"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/hif-latn.json b/www/wiki/extensions/AbuseFilter/i18n/hif-latn.json
new file mode 100644
index 00000000..6ea68903
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/hif-latn.json
@@ -0,0 +1,20 @@
+{
+ "@metadata": {
+ "authors": [
+ "Brijlal",
+ "Karthi.dr",
+ "Thakurji"
+ ]
+ },
+ "abusefilter-log-search-user": "Sadasya:",
+ "abusefilter-log-search-submit": "Khojo",
+ "abusefilter-log-diff": "farka",
+ "abusefilter-log-hide-reason": "Kaaran:",
+ "abusefilter-list-edit": "Badlo",
+ "abusefilter-deleted": "Mitaawal",
+ "abusefilter-disabled": "Band karal",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|hit|hits}}",
+ "abusefilter-tools-reautoconfirm-user": "Sadasya:",
+ "abusefilter-edit-builder-vars-user-editcount": "Sadasya Badlao count",
+ "abusefilter-examine-submit": "Khojo"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/hr.json b/www/wiki/extensions/AbuseFilter/i18n/hr.json
new file mode 100644
index 00000000..34491733
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/hr.json
@@ -0,0 +1,408 @@
+{
+ "@metadata": {
+ "authors": [
+ "Dalibor Bosits",
+ "Ex13",
+ "MaGa",
+ "Roberta F.",
+ "SpeedyGonsales",
+ "Matma Rex",
+ "Bugoslav"
+ ]
+ },
+ "abusefilter-desc": "Primjenjuje automatsku heuristiku na uređivanja",
+ "abusefilter": "Konfiguracija filtra zloporaba",
+ "abuselog": "Evidencija zloporaba",
+ "abusefilter-intro": "Dobro došli u sučelje za upravljanje Filtrom protiv zloporaba.\nOvaj je Filtar automatizirani softverski mehanizam koji primjenjuje automatsku heuristiku na sve radnje.\nOvo sučelje prikazuje popis definiranih filtara, te Vam omogućava da ih promijenite.",
+ "abusefilter-mustbeeditor": "Iz sigurnosnih razloga, samo suradnici s pravom na izmjenu filtara zloporaba mogu rabiti ovo sučelje.",
+ "abusefilter-warning": "'''Upozorenje:''' Ova radnja automatski je identificirana kao štetna.\nNesvrhovite radnje bit će brzo uklonjene,\na prekomjerno ili ponovljeno nesvrhovito uređivanje će uzrokovati da će vaš račun ili IP adresa biti blokirana.\nUkoliko vjerujete da je vaše uređivanje smisleno, možete ga ponovo poslati da ga potvrdite.\nKratak opis pravila sprječavanja zloporaba koji se podudara s vašim uređivanjem je: $1",
+ "abusefilter-disallowed": "Ova je radnja automatski identificirana kao štetna, pa je stoga onemogućena.\nAko vjerujete da je Vaše uređivanje smisleno, molimo kontaktirajte administratora i obavijestite ga o tome što ste pokušali načiniti.\nKratki opis pravila sprječavanja zlouporabe koji se podudara s Vašim uređivanjem je: $1",
+ "abusefilter-blocked-display": "Ova je radnja automatski identificirana kao štetna,\nstoga ste spriječeni u njenom izvršavanju.\nNadalje, kako bi zaštitili projekt {{SITENAME}}, Vaš suradnički račun i sve povezane IP adrese blokirani su.\nAko se ovo dogodilo pogrješkom, molimo obratite se administratoru.\nKratki opis pravila sprječavanja zloporabe koji se podudara s Vašim uređivanjem je: $1",
+ "abusefilter-degrouped": "Ova je radnja automatski identificirana kao štetna.\nSlijedom toga, onemogućena je, budući da postoji sumnja da je Vaš račun kompromitiran (ukraden), sva su prava povučena.\nUkoliko mislite da je ovo pogrješka, molimo Vas kontaktirajte birokrata s objašnjenjem ove radnje, a Vaša prava mogu biti vraćena.\nKratki opis pravila sprječavanja zloporabe koji se podudara s Vašim uređivanjem je: $1",
+ "abusefilter-autopromote-blocked": "Ova je radnja automatski identificirana kao štetna, stoga je onemogućena.\nNadalje, kao mjera sigurnosti, neke su privilegije privremeno povučene s Vašega računa.\nKratki opis pravila sprječavanja zloporabe koji se podudara s Vašim uređivanjem je: $1",
+ "abusefilter-blocker": "Filtar zloporabe",
+ "abusefilter-blockreason": "Automatski ste blokirani filtrom protiv zloporabe.\nOpis pravila koje kršite: $1",
+ "abusefilter-degroupreason": "Prava automatski poništena filtrom zloporabe.\nOpis pravila: $1",
+ "abusefilter-accountreserved": "Ovaj je suradnički račun rezerviran za uporabu filtra zloporaba.",
+ "right-abusefilter-modify": "Izmijeni filtre zloporaba",
+ "right-abusefilter-view": "Prikaži filtre zloporabe",
+ "right-abusefilter-log": "Vidi evidenciju zloporaba",
+ "right-abusefilter-log-detail": "Vidi detaljni pregled evidencije zloporaba",
+ "right-abusefilter-private": "Prikaži privatne podatke u evidenciji zloporaba",
+ "right-abusefilter-modify-restricted": "Izmijeni filtre zloporaba s ograničenim akcijama",
+ "right-abusefilter-revert": "Vrati sve promjene koje zadovoljavaju dani filtar",
+ "right-abusefilter-view-private": "Prikaži filtre zloporaba označene kao privatne",
+ "right-abusefilter-log-private": "Vidi zapise evidencije označene kao privatne",
+ "right-abusefilter-hide-log": "Sakrij zapise iz evidencije filtra zloporaba",
+ "right-abusefilter-hidden-log": "Prikaži skrivene zapise iz evidencije filtra zloporaba",
+ "right-abusefilter-modify-global": "Stvori ili promijeni globalni filtar zloporaba",
+ "action-abusefilter-modify": "promijeni filtar zloporaba",
+ "action-abusefilter-view": "vidi filtre zloporabe",
+ "action-abusefilter-log": "pregled evidencije zloporabe",
+ "action-abusefilter-log-detail": "detaljan prikaz evidencije zloporaba",
+ "action-abusefilter-private": "prikaz privatnih podataka u evidenciji zloporaba",
+ "action-abusefilter-modify-restricted": "promijeni filtre zloporaba s ograničenim akcijama",
+ "action-abusefilter-revert": "vratiti sve promjene uzrokovane filtrom protiv zloporaba",
+ "action-abusefilter-view-private": "prikaži filtre zloporaba označene kao privatne",
+ "action-abusefilter-log-private": "Prikaži filtre zloporaba označene kao privatne",
+ "abusefilter-log": "Evidencija filtra zloporaba",
+ "abusefilter-log-summary": "Ova evidencija prikazuje popis svih aktivnosti uhvaćenih filtrima.",
+ "abusefilter-log-search": "Pretraži evidenciju zloporabe",
+ "abusefilter-log-search-user": "Suradnik:",
+ "abusefilter-log-search-filter": "ID-ovi filtra (razdjeljivač je znak štapića):",
+ "abusefilter-log-search-title": "Naslov:",
+ "abusefilter-log-search-wiki": "Wiki:",
+ "abusefilter-log-search-impact": "Obuhvaćanje:",
+ "abusefilter-log-search-impact-all": "Sve radnje",
+ "abusefilter-log-search-impact-saved": "Samo spremljene izmjene",
+ "abusefilter-log-search-impact-not-saved": "Bez spremljenih izmjena",
+ "abusefilter-log-search-entries-label": "Vidljivost:",
+ "abusefilter-log-search-entries-all": "Sve stavke",
+ "abusefilter-log-search-entries-hidden": "Samo skrivene stavke",
+ "abusefilter-log-search-entries-visible": "Samo stavke koje su vidljive",
+ "abusefilter-log-search-action-taken-label": "Poduzete radnje:",
+ "abusefilter-log-search-action-taken-any": "Bilo koja",
+ "abusefilter-log-search-submit": "Traži",
+ "abusefilter-log-entry": "$1: $2 {{GENDER:$8|pokrenuo|pokrenula}} je filtar zloporabe {{GENDER:$8|izvršivši}} radnju »$3« na $4.\nPoduzete radnje: $5;\nOpis filtra: $6",
+ "abusefilter-log-entry-withdiff": "$1: $2 {{GENDER:$8|pokrenuo|pokrenula}} je filtar zloporabe {{GENDER:$8|izvršivši}} radnju »$3« na $4.\nPoduzete radnje: $5;\nOpis filtra: $6 ($7)",
+ "abusefilter-log-detailedentry-meta": "$1: $2 {{GENDER:$9|pokrenuo|pokrenula}} je $3 {{GENDER:$9|izvršivši}} radnju »$4« na $5.\nPoduzete radnje: $6;\nOpis filtra: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "globalni filtar $1",
+ "abusefilter-log-detailedentry-local": "filtar $1",
+ "abusefilter-log-detailslink": "detalji",
+ "abusefilter-log-diff": "razl",
+ "abusefilter-log-hidelink": "prilagodi vidljivost",
+ "abusefilter-log-details-legend": "Detalji zapisa $1",
+ "abusefilter-log-details-var": "Varijabla",
+ "abusefilter-log-details-val": "Vrijednost",
+ "abusefilter-log-details-vars": "Parametri postupka",
+ "abusefilter-log-details-private": "Privatni podaci",
+ "abusefilter-log-details-ip": "Izvorna IP adresa",
+ "abusefilter-log-details-checkuser": "Provjeri suradnika",
+ "abusefilter-log-noactions": "ništa",
+ "abusefilter-log-details-diff": "Promjene napravljene uređivanjem",
+ "abusefilter-log-linkoncontribs": "evidencija zloporaba",
+ "abusefilter-log-linkoncontribs-text": "Evidencija zloporaba za {{GENDER:$1|ovoga suradnika|ovu suradnicu}}",
+ "abusefilter-log-hidden": "(zapis je skriven)",
+ "abusefilter-log-hidden-implicit": "(skriveno jer je inačica obrisana)",
+ "abusefilter-log-cannot-see-details": "Nemate dopuštenje vidjeti potankosti ovog zapisa.",
+ "abusefilter-log-nonexistent": "Stavka s naznačenom identifikacijskom oznakom (ID) ne postoji.",
+ "abusefilter-log-details-hidden": "Ne možete vidjeti detalje ovog unosa jer je skriven od javnog pogleda.",
+ "abusefilter-log-hide-legend": "Sakrij zapis u evidenciji",
+ "abusefilter-log-hide-id": "Identifikacijski broj zapisa:",
+ "abusefilter-log-hide-hidden": "Sakrij ovaj zapis od javnog pristupa",
+ "abusefilter-log-hide-reason": "Razlog:",
+ "abusefilter-log-hide-forbidden": "Nemate dopuštenje za skrivanje zapisa iz evidencije zloporaba.",
+ "abusefilter-logentry-suppress": "sakrij \"[[$1]]\"",
+ "abusefilter-logentry-unsuppress": "otkrij \"[[$1]]\"",
+ "logentry-abusefilter-hit": "$1 {{GENDER:$2|pokrenuo|pokrenula}} je $4 {{GENDER:$2|izvršivši}} »$5« na $3. Poduzete radnje: $6 ($7)",
+ "abusefilter-management": "Upravljanje filtrima zloporaba",
+ "abusefilter-list": "Svi filtri",
+ "abusefilter-list-id": "ID filtra",
+ "abusefilter-list-status": "Stanje",
+ "abusefilter-list-public": "Javni opis",
+ "abusefilter-list-consequences": "Posljedice",
+ "abusefilter-list-visibility": "Vidljivost",
+ "abusefilter-list-hitcount": "Brojač zloporaba",
+ "abusefilter-list-edit": "Uredi",
+ "abusefilter-list-details": "Detalji",
+ "abusefilter-list-limit": "Stavki po stranici:",
+ "abusefilter-list-lastmodified": "Posljednje uređivanje",
+ "abusefilter-list-group": "Skupina filtara",
+ "abusefilter-hidden": "Privatno",
+ "abusefilter-unhidden": "Javno",
+ "abusefilter-enabled": "Omogućeno",
+ "abusefilter-deleted": "Obrisano",
+ "abusefilter-disabled": "Onemogućeno",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|pogodak|pogotka|pogodaka}}",
+ "abusefilter-new": "Novi filtar",
+ "abusefilter-return": "Vrati se na upravljanje filtrima zloporaba",
+ "abusefilter-status-global": "Globalno",
+ "abusefilter-list-options": "Opcije",
+ "abusefilter-list-options-deleted": "Obrisani filtri:",
+ "abusefilter-list-options-deleted-only": "Prikaži samo obrisane filtre",
+ "abusefilter-list-options-deleted-hide": "Sakrij obrisane filtre",
+ "abusefilter-list-options-deleted-show": "Uključi obrisane filtre",
+ "abusefilter-list-options-scope": "Prikaži filtre od:",
+ "abusefilter-list-options-scope-local": "Samo lokalna pravila",
+ "abusefilter-list-options-scope-global": "Samo globalna pravila",
+ "abusefilter-list-options-scope-all": "Lokalna i globalna pravila",
+ "abusefilter-list-options-disabled": "Onemogućeni filtri:",
+ "abusefilter-list-options-hidedisabled": "Sakrij onemogućene filtre",
+ "abusefilter-list-options-submit": "Osvježi",
+ "abusefilter-tools-text": "Nekoliko alata koji mogu biti korisni kod formuliranja i uklanjanja grešaka filtra zloporaba.",
+ "abusefilter-tools-expr": "Testiranje filtra",
+ "abusefilter-tools-submitexpr": "Ocijeni",
+ "abusefilter-tools-reautoconfirm": "Obnovi (autoconfirmed) status",
+ "abusefilter-tools-reautoconfirm-user": "Suradnik:",
+ "abusefilter-tools-reautoconfirm-submit": "Potvrdi",
+ "abusefilter-reautoconfirm-none": "Ovom suradniku {{GENDER:$1|njegov|njen}} status automatski potvrđeni nije bio suspendiran.",
+ "abusefilter-reautoconfirm-notallowed": "Nije vam dozvoljeno vratiti autoconfirmed status.",
+ "abusefilter-reautoconfirm-done": "Autoconfirmed status je vraćen",
+ "abusefilter-status": "Od {{PLURAL:$1|posljednje akcije|posljednje $1 akcije|posljednjih $1 akcija}}, $2 ($3 %) {{PLURAL:$2|dostigla je|dostigle su|dostiglo je}} granicu ukupno zadanih uvjeta $4, te se $5 ($6 %) {{PLURAL:$5|podudara|podudaraju|podudara}} s jednim od trenutačno uključenih filtara.",
+ "abusefilter-edit": "Uređivanje filtra zloporaba",
+ "abusefilter-edit-subtitle": "Uređujete filtar $1",
+ "abusefilter-edit-subtitle-new": "Stvaram filtar",
+ "abusefilter-edit-oldwarning": "<strong>Uređujete staru inačicu ovog filtra.\nIskazane su statistike za najnoviju inačicu filtra.\nAko spremite svoje promjene, prebrisati ćete sve promjene nastale od inačice koju upravo uređujete.</strong> &bull;\n[[Special:AbuseFilter/history/$2|Povratak na povijest stranice ovog filtra]].",
+ "abusefilter-edit-status-label": "Statistike:",
+ "abusefilter-edit-status": "Od {{PLURAL:$1|posljednje akcije|posljednje $1 akcije|posljednjih $1 akcija}}, ovaj se filtar poklopio s njih $2 ($3 %).",
+ "abusefilter-edit-status-profile": "Od {{PLURAL:$1|posljednje akcije|posljednje $1 akcije|posljednjih $1 akcija}}, ovaj se filtar poklopio s njih $2 ($3 %).\nU prosjeku, njegovo je vrijeme izvođenja $4 ms, a upotrijebi $5 {{PLURAL:$5|uvjet|uvjeta}} od ukupno zadanih uvjeta.",
+ "abusefilter-edit-new": "Novi filtar",
+ "abusefilter-edit-save": "Snimi filtar",
+ "abusefilter-edit-id": "ID filtra:",
+ "abusefilter-edit-description": "Opis:\n:''(javno vidljivo)''",
+ "abusefilter-edit-group": "Skupina filtara:",
+ "abusefilter-edit-flags": "Zastavice:",
+ "abusefilter-edit-enabled": "Omogući ovaj filtar",
+ "abusefilter-edit-deleted": "Označi izbrisanim",
+ "abusefilter-edit-hidden": "Sakrij detalje ovog filtra iz javnog prikaza",
+ "abusefilter-edit-global": "Globalni filtar",
+ "abusefilter-edit-rules": "Uvjeti:",
+ "abusefilter-edit-notes": "Napomene:",
+ "abusefilter-edit-lastmod": "Posljednja izmjena filtra:",
+ "abusefilter-edit-lastmod-text": "$1 suradnika $2",
+ "abusefilter-edit-hitcount": "Broj poklapanja filtra:",
+ "abusefilter-edit-consequences": "Radnje poduzete kod podudaranja",
+ "abusefilter-edit-action-warn": "Pokreni ove radnje nakon što upozorite suradnika",
+ "abusefilter-edit-action-disallow": "Spriječi suradnika u izvršavanju predmetne akcije",
+ "abusefilter-edit-action-blockautopromote": "Opozovi status automatski potvrđenoga suradnika",
+ "abusefilter-edit-action-degroup": "Ukloni suradnika iz svih privilegiranih skupina",
+ "abusefilter-edit-action-block": "Blokirajte suradnika i/ili IP adrese (onemogući im uređivanje)",
+ "abusefilter-edit-action-throttle": "Pokreni akcije samo ako je suradnik prešao granicu",
+ "abusefilter-edit-action-rangeblock": "Blokiraj raspon /16 odakle suradnik potječe",
+ "abusefilter-edit-action-tag": "Označi uređivanje za daljnji pregled",
+ "abusefilter-edit-throttle-count": "Broj omogućenih akcija:",
+ "abusefilter-edit-throttle-period": "Vremensko razdoblje:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|sekunda|sekunde|sekundi}}",
+ "abusefilter-edit-throttle-groups": "Skupno usporavanje prema:\n:''(jedan po retku, zajedno sa zarezima)''",
+ "abusefilter-edit-warn-message": "Poruka sustava koja će biti rabljena za upozorenje:",
+ "abusefilter-edit-warn-other": "Ostale poruke",
+ "abusefilter-edit-warn-other-label": "Ime stranice druge poruke:\n:''(bez MediaWiki prefiksa)''",
+ "abusefilter-edit-warn-actions": "Akcije:",
+ "abusefilter-edit-warn-preview": "Pretpregled odabrane poruke",
+ "abusefilter-edit-warn-edit": "Kreiraj/Uredi odabranu poruku",
+ "abusefilter-edit-tag-tag": "[[Special:Tags|Oznake]] za primjenu (jedna po retku):",
+ "abusefilter-edit-denied": "Možda ne ćete vidjeti detalje ovoga filtra, zato što je skriven od javnog prikaza.",
+ "abusefilter-edit-main": "Parametri filtra",
+ "abusefilter-edit-done-subtitle": "Filtar je uređen",
+ "abusefilter-edit-done": "[[Special:AbuseFilter/history/$1/diff/prev/$2|Vaše su izmjene]][[Special:AbuseFilter/$1|filtra $3]] spremljene.",
+ "abusefilter-edit-badsyntax": "Sintaktička pogrješka u filtru koji ste naveli. Izlaz iz ''parsera'' bio je:\n<pre>$1</pre>",
+ "abusefilter-edit-restricted": "Ne možete uređivati ovaj filtar, jer on sadrži jednu ili više ograničenih akcija.\nZamolite suradnika s pravima dodavanja ograničenih akcija da napravi izmjene umjesto Vas.",
+ "abusefilter-edit-viewhistory": "Vidi povijest filtra",
+ "abusefilter-edit-history": "Povijest:",
+ "abusefilter-edit-check": "Provjeri sintaksu",
+ "abusefilter-edit-badfilter": "Filtar koji ste naveli ne postoji",
+ "abusefilter-edit-revert": "Ukloni akcije ovog filtra",
+ "abusefilter-edit-tools": "Alati:",
+ "abusefilter-edit-test-link": "Testiraj ovaj filtar s nedavnim izmjenama na projektu",
+ "abusefilter-edit-export": "Izvezi ovaj filtar na neki drugi wiki",
+ "abusefilter-edit-syntaxok": "Nema sintaksnih pogrješaka.",
+ "abusefilter-edit-syntaxerr": "Sintaktička pogrješka: $1",
+ "abusefilter-edit-bad-tags": "Jedna ili više oznaka koje ste naveli nije ispravna.\nOznaka mora biti kratka, i ne bi smjela sadržavati posebne znakove.",
+ "abusefilter-edit-notallowed": "Vi ne smijete stvarati ili uređivati filtre zloporaba",
+ "abusefilter-edit-notallowed-global": "Ne možete stvarati ili uređivati filtre zloporaba",
+ "abusefilter-edit-builder-select": "Odaberite opciju da biste ju dodali na mjestu pokazivača",
+ "abusefilter-edit-builder-group-op-arithmetic": "Aritmetički operatori",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Zbrajanje (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Oduzimanje (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Množenje (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Dijeljenje (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Modulo (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Eksponencija (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Operatori usporedbe",
+ "abusefilter-edit-builder-op-comparison-equal": "Jednako (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Nije jednako (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "Manje od (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Veće od (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Manje ili jednako (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Veće ili jednako (>=)",
+ "abusefilter-edit-builder-group-op-bool": "Booleovi operatori",
+ "abusefilter-edit-builder-op-bool-not": "Ne (!)",
+ "abusefilter-edit-builder-op-bool-and": "I (&)",
+ "abusefilter-edit-builder-op-bool-or": "Ili (|)",
+ "abusefilter-edit-builder-group-misc": "Razno",
+ "abusefilter-edit-builder-misc-in": "sadržano u nizu znakova (in)",
+ "abusefilter-edit-builder-misc-like": "Odgovara uzorku (like)",
+ "abusefilter-edit-builder-misc-rlike": "Odgovara regularnom izrazu (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "Odgovara regularnom izrazu, bez razlikovanja velikih i malih slova (irlike)",
+ "abusefilter-edit-builder-misc-contains": "Lijevi niz znakova/string sadrži desni string (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "String (\" \")",
+ "abusefilter-edit-builder-misc-tern": "Ternarni operator (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "Uvjet (ako je X onda Y inače Z)",
+ "abusefilter-edit-builder-group-funcs": "Funkcije",
+ "abusefilter-edit-builder-funcs-length": "Duljina stringa",
+ "abusefilter-edit-builder-funcs-lcase": "Pretvori u mala slova (''lcase'')",
+ "abusefilter-edit-builder-funcs-ccnorm": "Normaliziraj zbunjujuće znakove (ccnorm)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "Ukloni dvostruke znakove (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "Omjer posebnih znakova u ukupnom broju znakova (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "Normaliziraj (norm)",
+ "abusefilter-edit-builder-funcs-count": "Broj pojavljivanja niza znakova X u nizu znakova Y (count)",
+ "abusefilter-edit-builder-funcs-rcount": "Broj poklapanja regularnog izraza X u nizu znakova Y (rcount)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "Ukloni razmake (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "Ukloni posebne znakove (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "Je li IP adresa u rasponu? (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "Pretraživanje stringa/niza znakova za višestrukim podstringovima (contains_any)",
+ "abusefilter-edit-builder-funcs-substr": "Podstring (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "Pozicija podstringa u stringu/nizu znakova (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "Zamijeni podstring nekim nizom znakova (str_replace)",
+ "abusefilter-edit-builder-funcs-rescape": "Označi niz znakova (''string'') takvim u regularnom izrazu (rescape)",
+ "abusefilter-edit-builder-funcs-set_var": "Postavi varijablu (set_var)",
+ "abusefilter-edit-builder-group-vars": "Varijable",
+ "abusefilter-edit-builder-vars-accountname": "Naziv suradničkog računa (u trenutku stvaranja računa)",
+ "abusefilter-edit-builder-vars-timestamp": "Unixov vremenski pečat izmjene",
+ "abusefilter-edit-builder-vars-action": "Akcija",
+ "abusefilter-edit-builder-vars-addedlines": "Redaka dodano uređivanjem",
+ "abusefilter-edit-builder-vars-delta": "Promjena duljine stranice",
+ "abusefilter-edit-builder-vars-diff": "Zajednički pregled promjena napravljenih uređivanjem",
+ "abusefilter-edit-builder-vars-newsize": "Veličina nove stranice",
+ "abusefilter-edit-builder-vars-oldsize": "Veličina stare stranice",
+ "abusefilter-edit-builder-vars-removedlines": "Broj redaka uklonjenih uređivanjem",
+ "abusefilter-edit-builder-vars-summary": "Sažetak uređivanja/svrha",
+ "abusefilter-edit-builder-vars-article-id": "ID stranice",
+ "abusefilter-edit-builder-vars-article-ns": "Imenski prostor",
+ "abusefilter-edit-builder-vars-article-text": "Ime stranice (bez imenskog prostora)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Puni naslov stranice",
+ "abusefilter-edit-builder-vars-article-views": "Pregleda stranice",
+ "abusefilter-edit-builder-vars-movedfrom-id": "ID broj izvorišne stranice premještanja",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "Imenski prostor premještane stranice",
+ "abusefilter-edit-builder-vars-movedfrom-text": "Naslov stranice koju premještate",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "Puni naslov stranice koju premještate",
+ "abusefilter-edit-builder-vars-movedto-id": "ID broj odredišne stranice premještanja",
+ "abusefilter-edit-builder-vars-movedto-ns": "Imenski prostor odredišne stranice",
+ "abusefilter-edit-builder-vars-movedto-text": "Naslov odredišne stranice",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "Puni naslov odredišne stranice",
+ "abusefilter-edit-builder-vars-user-editcount": "Brojač izmjena suradnika",
+ "abusefilter-edit-builder-vars-user-age": "Starost suradničkog računa",
+ "abusefilter-edit-builder-vars-user-name": "Ime suradničkog računa",
+ "abusefilter-edit-builder-vars-user-groups": "Grupe (uključujući i implicitne) u kojima je suradnik",
+ "abusefilter-edit-builder-vars-user-blocked": "Ako je suradnik blokiran",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "Vrijeme adrese e-pošte je potvrđeno",
+ "abusefilter-edit-builder-vars-recent-contributors": "Posljednjih deset suradnika koji su uređivali ovu stranicu",
+ "abusefilter-edit-builder-vars-all-links": "Sve vanjske poveznice u novom tekstu",
+ "abusefilter-edit-builder-vars-added-links": "Sve vanjske poveznice dodane uređivanjem",
+ "abusefilter-edit-builder-vars-removed-links": "Sve vanjske poveznice uklonjene uređivanjem",
+ "abusefilter-edit-builder-vars-old-text": "Sadržaj stranice prije uređivanja",
+ "abusefilter-edit-builder-vars-new-text": "Novi sadržaj stranica, poslije uređivanja",
+ "abusefilter-edit-builder-vars-new-text-stripped": "Novi sadržaj stranice, bez ''markup tagova'' (HTML ili XML)",
+ "abusefilter-edit-builder-vars-new-html": "Raščlanjen HTML izvor nove revizije",
+ "abusefilter-edit-builder-vars-restrictions-edit": "Uredi razinu zaštite stranice",
+ "abusefilter-edit-builder-vars-restrictions-move": "Premještena razina zaštite stranice",
+ "abusefilter-edit-builder-vars-restrictions-create": "Zaštiti stranicu",
+ "abusefilter-edit-builder-vars-restrictions-upload": "Zaštiti datoteku",
+ "abusefilter-edit-builder-vars-old-text-stripped": "Stari sadržaj stranice, bez ''markup tagova'' (HTML ili XML)",
+ "abusefilter-edit-builder-vars-old-links": "Poveznice na stranici, prije uređivanja",
+ "abusefilter-edit-builder-vars-old-html": "Wikitekst stare stranice, \"parsiran\" u HTML",
+ "abusefilter-edit-builder-vars-minor-edit": "Bez obzira da li je uređivanje označeno kao malo ili ne",
+ "abusefilter-edit-builder-vars-file-sha1": "SHA1 kôd sadržaja datoteke",
+ "abusefilter-filter-log": "Nedavne promjene filtra",
+ "abusefilter-history": "Stare izmjene za zloporabni filtar #$1",
+ "abusefilter-history-foruser": "Promjene suradnika $1",
+ "abusefilter-history-hidden": "Skriven",
+ "abusefilter-history-enabled": "Omogućeno",
+ "abusefilter-history-global": "Globalno",
+ "abusefilter-history-timestamp": "Vrijeme",
+ "abusefilter-history-user": "Suradnik",
+ "abusefilter-history-public": "Opis javnog filtra",
+ "abusefilter-history-flags": "Zastavice",
+ "abusefilter-history-filter": "Pravilo filtra",
+ "abusefilter-history-comments": "Komentari",
+ "abusefilter-history-actions": "Radnje",
+ "abusefilter-history-backedit": "Natrag na uređivač filtra",
+ "abusefilter-history-deleted": "Izbrisano",
+ "abusefilter-history-filterid": "Filtar",
+ "abusefilter-history-select-legend": "Pročisti pretraživanje",
+ "abusefilter-history-select-user": "Suradnik:",
+ "abusefilter-history-select-submit": "Pročisti",
+ "abusefilter-history-diff": "Promjene",
+ "abusefilter-history-error-hidden": "Filtar koji ste zatražili je skriven, ne možete vidjeti njegovu povijest.",
+ "abusefilter-exception-unexpectedatend": "Neočekivano \"$2\" na znaku $1.",
+ "abusefilter-exception-expectednotfound": "Očekivano $2 na znaku $1, nije nađeno (umjesto toga nađeno $3 $4).",
+ "abusefilter-exception-unrecognisedkeyword": "Neprepoznata ključna riječ $2 na znaku $1.",
+ "abusefilter-exception-unexpectedtoken": "Neočekivani token \"$3\" (tipa $2) na znaku $1.",
+ "abusefilter-exception-unclosedstring": "Nezaključen string počevši od znaka $1.",
+ "abusefilter-exception-invalidoperator": "Nevaljani operator \"$2\" na mjestu $1.",
+ "abusefilter-exception-unrecognisedtoken": "Neprepoznat token \"$2\" na mjestu $1.",
+ "abusefilter-exception-noparams": "Nijedan parameter nije zadan funkciji \"$2\" kod znaka $1.",
+ "abusefilter-exception-dividebyzero": "Nevaljan pokušaj dijeljenja $2 s nulom kod znaka $1.",
+ "abusefilter-exception-unrecognisedvar": "Neprepoznata varijabla $2 kod znaka $1",
+ "abusefilter-exception-notenoughargs": "Nema dovoljno argumenata za funkciju $2 pozvanu kod znaka $1.\n{{PLURAL:$3|Očekivan je $3 argument|Očekivana su $3 argumenta|Očekivano je $3 argumenata}}, dobiveno je $4",
+ "abusefilter-exception-regexfailure": "Pogreška u regularnom izrazu \"$3\" kod znaka $1: \"$2\"",
+ "abusefilter-exception-overridebuiltin": "Nevaljana zamjena predefinirane varijable \"$2\" kod znaka $1.",
+ "abusefilter-exception-outofbounds": "Traženje nepostojećeg elementa popisa $2 (veličina popisa = $3) kod znaka $1.",
+ "abusefilter-exception-notlist": "Traženje člana polja od nečega što nije polje kod znaka $1.",
+ "abusefilter-action-tag": "Oznaka",
+ "abusefilter-action-throttle": "Uspori",
+ "abusefilter-action-warn": "Upozori",
+ "abusefilter-action-blockautopromote": "Spriječi samopromoviranje",
+ "abusefilter-action-block": "Blokiraj",
+ "abusefilter-action-degroup": "Ukloni iz grupa",
+ "abusefilter-action-rangeblock": "Blokiranje raspona",
+ "abusefilter-action-disallow": "Onemogući",
+ "abusefilter-revert-title": "Vrati sve izmjene filtra $1",
+ "abusefilter-revert-intro": "Ovaj obrazac omogućava vam da vratite sve izmjene koje je napravio filtar sprječavanja zloporaba $1.\nMolimo, budite pažljivi rabeći ovaj alat.",
+ "abusefilter-revert-preview-item": "$1: $2 je napravio $3 na $4. Radnje koje treba vratiti: $5 ($6)",
+ "abusefilter-revert-search-legend": "Odaberite radnje filtra zloporabe koje treba vratiti",
+ "abusefilter-revert-periodstart": "Početak razdoblja:",
+ "abusefilter-revert-periodend": "Kraj razdoblja:",
+ "abusefilter-revert-search": "Odaberite radnje",
+ "abusefilter-revert-filter": "Filtar:",
+ "abusefilter-revert-preview-intro": "U nastavku se nalaze akcije koje je napravio filtar sprječavanja zloporaba koji će biti uklonjene ovom akcijom.\nMolimo provjerite ih pažljivo, i kliknite na \"Potvrdi\" kako biste potvrdili svoj izbor.",
+ "abusefilter-revert-confirm": "Potvrdi",
+ "abusefilter-revert-success": "Vratili ste radnje poduzete od strane filtra zloporabe tijekom [[Special:AbuseFilter/$1|filtriranja $2]].",
+ "abusefilter-revert-reason": "Automatsko vraćanje svih radnji poduzetih od strane filtra zloporabe tijekom filtriranja $1.\nRazlog dan: $2",
+ "abusefilter-revert-reasonfield": "Razlog:",
+ "abusefilter-test": "Testiraj filtar s prethodnim uređivanjem",
+ "abusefilter-test-intro": "Ova stranica omogućava provjeru filtra unešenog u donji okvir s {{PLURAL:$1|posljednjim $1 uređivanjem|posljednjih $1 uređivanja}}.\nZa učitavanje postojećeg filtra, upišite ID filtra u okvir ispod okvira za uređenjivanje i kliknite tipku \"Učitaj\".",
+ "abusefilter-test-legend": "Testiranje filtra",
+ "abusefilter-test-load-filter": "Učitaj ID filtra:",
+ "abusefilter-test-submit": "Test",
+ "abusefilter-test-load": "Učitaj",
+ "abusefilter-test-user": "Izmjene prema suradnicima:",
+ "abusefilter-test-period-start": "Izmjene napravljene nakon:",
+ "abusefilter-test-period-end": "Izmjene napravljene prije:",
+ "abusefilter-test-page": "Promjene napravljene na stranici:",
+ "abusefilter-test-shownegative": "Pokaži izmjene koje se ne podudaraju s filtrom",
+ "abusefilter-test-syntaxerr": "Filtar koji ste unijeli sadrži sintaktičku pogrešku.\nMožete primiti puno objašnjenje pogreške klikom na gumb \"Provjeri sintaksu\".",
+ "abusefilter-changeslist-examine": "ispitaj",
+ "abusefilter-examine": "Ispitivanje pojedinačnih izmjena",
+ "abusefilter-examine-intro": "Ova stranica omogućava ispitivanje varijabli koje je generirao filtar zloporaba za pojedinu izmjenu i njihovo testiranje u filtru.",
+ "abusefilter-examine-legend": "Odaberite izmjene",
+ "abusefilter-examine-diff": "Razl URL:",
+ "abusefilter-examine-user": "Suradnik:",
+ "abusefilter-examine-title": "Ime stranice:",
+ "abusefilter-examine-submit": "Traži",
+ "abusefilter-examine-vars": "Varijable generirane za ovu izmjenu",
+ "abusefilter-examine-test": "Testiraj ovu izmjenu s filtrom",
+ "abusefilter-examine-test-button": "Testni filtar",
+ "abusefilter-examine-match": "Filtar je pronašao ovu promjenu.",
+ "abusefilter-examine-nomatch": "Filtar nije pronašao ovu izmjenu.",
+ "abusefilter-examine-syntaxerror": "Filtar ima neispravnu sintaksu",
+ "abusefilter-examine-notfound": "Izmjenu koju ste tražili nije moguće pronaći.",
+ "abusefilter-examine-incompatible": "Izmjena koju ste tražili nije podržana od strane filtra zloporaba",
+ "abusefilter-examine-noresults": "Ništa nije pronađeno za parametre pretraživanja koje ste unijeli.",
+ "abusefilter-topnav": "'''Navigacija filtra zloporaba'''",
+ "abusefilter-topnav-home": "Početna stranica",
+ "abusefilter-topnav-test": "Testiranje",
+ "abusefilter-topnav-examine": "Pregledajte prošla uređivanja",
+ "abusefilter-topnav-log": "Evidencija zlouporaba",
+ "abusefilter-topnav-tools": "Alati za ispravljanje pogrešaka (''debugging'')",
+ "abusefilter-topnav-import": "Uvoz filtra",
+ "abusefilter-log-name": "Evidencija filtra zloporaba",
+ "abusefilter-log-header": "Evidencija prikazuje sažetak promjena koje su napravljene filtrima.\nZa detaljnije informacije, vidi [[Special:AbuseFilter/history|popis]] nedavnih izmjena filtara.",
+ "abusefilter-logentry-modify": "$1 {{GENDER:$2|promijenio|promijenila}} je $4 ($5)",
+ "abusefilter-log-noresults": "Nema rezultata",
+ "abusefilter-diff-title": "Razlike između inačica",
+ "abusefilter-diff-item": "Stavka",
+ "abusefilter-diff-version": "Inačica stranice od $1 {{GENDER:$3|suradnika|suradnice}} $2",
+ "abusefilter-diff-info": "Osnovni podatci",
+ "abusefilter-diff-pattern": "Filtar uvjeta",
+ "abusefilter-diff-invalid": "Nemoguće je dohvatiti tražene inačice",
+ "abusefilter-diff-backhistory": "Natrag na povijest filtra",
+ "abusefilter-diff-prev": "Staro uređivanje",
+ "abusefilter-diff-next": "Novo uređivanje",
+ "abusefilter-import-intro": "Možete rabiti ovo sučelje za uvoz filtara s drugih wikija.\nNa izvornoj wiki, kliknite na poveznicu \"{{int:abusefilter-edit-export}}\" pod \"{{int:abusefilter-edit-tools}}\" na sučelju za uređivanje.\nKopirajte tekst iz okvira koji će se pojaviti, i zalijepite ga u ovaj okvir, a zatim kliknite \"{{int:abusefilter-import-submit}}\".",
+ "abusefilter-import-submit": "Uvoz podataka",
+ "abusefilter-group-default": "Zadano",
+ "tag-abusefilter-condition-limit": "dostignuta granica uvjeta",
+ "tag-abusefilter-condition-limit-description": "Uređivanja ili druge radnje koje nije bilo moguće provjeriti pomoću svih aktivnih [[Special:AbuseFilter|filtara zloporaba]] ([[mw:Extension:AbuseFilter/Conditions|pomoć]]).",
+ "apierror-abusefilter-badsyntax": "Filtar nema valjanu sintaksu."
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/hrx.json b/www/wiki/extensions/AbuseFilter/i18n/hrx.json
new file mode 100644
index 00000000..229d80a1
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/hrx.json
@@ -0,0 +1,344 @@
+{
+ "@metadata": {
+ "authors": [
+ "Paul Beppler",
+ "Tahir mq"
+ ]
+ },
+ "abusefilter-desc": "Wennet automatische Heuristike uff Beoorbeitunge an",
+ "abusefilter": "Missbrauchsfilter-Einstellunge",
+ "abuselog": "Missbrauchsfilter-Logbuch",
+ "abusefilter-intro": "Willkomme uff der Missbrauchsfilter-Management-Oberfläch.\nDer Missbrauchsfilter ist en automatischer Mechanismus, wo automatische Heiristike uff all Ännrunge oonwenne tut.\nDie Oberfläch zeicht en List von aller definierte Filter und erlaubt das man die verännre tut.",
+ "abusefilter-mustbeeditor": "Aus Sicherheitsgründ därrfe nuar Benutzer mit dem Recht zur Ännrung von Missbrauchsfiltre die Schnittstell verwenne.",
+ "abusefilter-warning": "'''Achtung:''' Die Aktion woard als potentiell unkonstruktiv erkannt.\nSolche Beiträch werre meascht seahr schnell entfernt. In wiederholte und besonnersch schlimme Fälle weard dein Benutzerkonto bzw. dein IP-Adress gesperrt.\nWenns du meenst, dass die Aktion sinnvoll ist, kannst du se zum Beschtätiche erneit speichre.\nKoorzbeschreibung von der verletzte Rechel: $1",
+ "abusefilter-disallowed": "Die Aktion woard automatisch als schädlich erkannt und deshallrb net ausgeführt.\nWenns du denkst, dass dein Aktion konstruktiv woor, wend dich bittschön on en Administratoar und schildre ihm, was du versuchst host beizutroohn.\nKoorzbeschreibung von der verletzte Rechel: $1",
+ "abusefilter-blocked-display": "Die Aktion woard automatisch als schädlich erkannt und net ausgefeahrt.\nFerner worre dein Benutzerkonto und alle zugehöriche IP-Adresse gesperrt.\nWenns du denkst, dass es sich hier um en Fehler handelt, wend dich bittschön an en Administratoar.\nKoorzbeschreibung von der verletzte Rechel: $1",
+ "abusefilter-degrouped": "Die Aktion woard als schädlich erkannt und net ausgeführt.\nWeil das möchlich ist, dass dein Benutzerkonto kompromittiert woard, worre dir all gewährte Rechte genomm.\nWenns du denkst, dass das sich hierbei um en Fehler handelt, so wend dich bittschön on en Bürokrat und schildre ihm, was du grood getun host, damit dein Rechte wiederheargestellt sin könne.\nKoorzbeschreibung von der verletzte Rechel: $1",
+ "abusefilter-autopromote-blocked": "Die Aktion woard als schädlich erkannt und net ausgefeahrt.\nZusätzlich worre dir als Sicherheitsmassnoohme einiche automatisch vergebne Rechte koorzzeitich genomm.\nKoorzbeschreibung von der verletzte Rechel: $1",
+ "abusefilter-blocker": "Missbrauchsfilter",
+ "abusefilter-blockreason": "Du woardst doorrich en Missbrauchsfilter automatisch gesperrt. Beschreibung von der zutreffend Rechel: $1",
+ "abusefilter-degroupreason": "Dein Berechtichunge worre doorrich en Missbrauchsfilter automatisch beschränkt.\nBeschreibung von der Rechel: $1",
+ "abusefilter-accountreserved": "Der Benutzernoome ist für den Missbrauchsfilter reserviert.",
+ "right-abusefilter-modify": "Missbrauchsfilter beoorbeite",
+ "right-abusefilter-view": "Missbrauchsfilter oonsiehn",
+ "right-abusefilter-log": "Missbrauchsfilter-Logbuch insiehn",
+ "right-abusefilter-log-detail": "Erweitertes Missbrauchsfilter-Logbuch insiehn",
+ "right-abusefilter-private": "Privat Date im Missbrauchsfilter-Logbuch insiehn",
+ "right-abusefilter-modify-restricted": "Missbrauchsfilter mit privilegierte Aktione beoorbeite",
+ "right-abusefilter-revert": "Alle Beoorbeitunge doorrich en bestimmte Missbrauchsfilter rückgängich mache",
+ "right-abusefilter-view-private": "Als privat markierte Missbrauchsfilter insiehn",
+ "right-abusefilter-log-private": "Als privat markierte Einträch im Missbrauchsfilter insiehn",
+ "right-abusefilter-hide-log": "Einträche aus dem Missbrauchsfilter-Logbuch ausblenne",
+ "right-abusefilter-hidden-log": "Versteckte Einträche im Missbrauchsfilter-Logbuch insiehn",
+ "right-abusefilter-modify-global": "Globale Missbrauchsfilter erstelle orrer verännre",
+ "action-abusefilter-modify": "den Missbrauchsfilter zu beoorbeite",
+ "action-abusefilter-view": "Missbrauchsfilter oonzusiehn",
+ "action-abusefilter-log": "das Missbrauchsfilter-Logbuch inzusiehn",
+ "action-abusefilter-log-detail": "das erweiterte Missbrauchsfilter-Logbuch inzusiehn",
+ "action-abusefilter-private": "private Date im Missbrauchsfilter-Logbuch inzusiehn",
+ "action-abusefilter-modify-restricted": "Missbrauchsfilter mit privilegierte Aktione zu beoorbeite",
+ "action-abusefilter-revert": "all Ännrunge doorrich en bestimmte Missbrauchsfilter rückgängich mache",
+ "action-abusefilter-view-private": "Missbrauchsfilter ongucke, die wo als wie privat markiert worre",
+ "abusefilter-log": "Missbrauchsfilter-Logbuch",
+ "abusefilter-log-summary": "Das Logbuch zeicht en List von aller Aktione, wo doorrich en Filter uffgefang worre.",
+ "abusefilter-log-search": "Missbrauchsfilter-Logbuch doorrichsuche",
+ "abusefilter-log-search-user": "Benutzer:",
+ "abusefilter-log-search-filter": "Filterkennunge (doorrich senkrechte Striche getrennt):",
+ "abusefilter-log-search-title": "Titel",
+ "abusefilter-log-search-wiki": "Wiki:",
+ "abusefilter-log-search-submit": "Suche",
+ "abusefilter-log-entry": "$1: $2 löste doorrich die Aktion \"$3\" uff \"$4\" en Missbrauchsfilter aus.\nFilteraktion: \"$5\";\nFilterbeschreibung: \"$6\"",
+ "abusefilter-log-entry-withdiff": "$1: $2 hot mit der Aktion \"$3\" uff der Seit $4 en Missbrauchsfilter ausgelöst.\nUnnernommne Aktione: $5;\nFilterbeschreibung: $6 ($7)",
+ "abusefilter-log-detailedentry-global": "globale Filter $1",
+ "abusefilter-log-detailedentry-local": "Filter $1",
+ "abusefilter-log-detailslink": "Detalhes",
+ "abusefilter-log-diff": "Unnerschied",
+ "abusefilter-log-hidelink": "Sichtbarkeit ännre",
+ "abusefilter-log-details-legend": "Einzelheite zum Logbuch-Eintrooch $1",
+ "abusefilter-log-details-var": "Variable",
+ "abusefilter-log-details-val": "Weart",
+ "abusefilter-log-details-vars": "Aktionsparameter",
+ "abusefilter-log-details-private": "Private Date",
+ "abusefilter-log-details-ip": "IP-Adress von der Verursacher",
+ "abusefilter-log-noactions": "ken",
+ "abusefilter-log-details-diff": "Ännrunge doorrich die Beoorbeitung",
+ "abusefilter-log-linkoncontribs": "Missbrauchsfilter-Logbuch",
+ "abusefilter-log-linkoncontribs-text": "Missbrauchsfilter-Logbuch für den Benutzer",
+ "abusefilter-log-hidden": "(Eintrooch versteckt)",
+ "abusefilter-log-hidden-implicit": "(versteckt, weil die Version abgewischt woard)",
+ "abusefilter-log-hide-legend": "Logbucheintrag verstecke",
+ "abusefilter-log-hide-id": "Logbuch-Eintrags-ID:",
+ "abusefilter-log-hide-hidden": "Den Eintrooch voar der Öffentlichkeit verberriche",
+ "abusefilter-log-hide-reason": "Grund:",
+ "abusefilter-logentry-suppress": "hat \"[[$1]]\" verborriche",
+ "abusefilter-logentry-unsuppress": "hot \"[[$1]]\" sichtbar gemacht",
+ "abusefilter-management": "Missbrauchsfilter-Verwaltung",
+ "abusefilter-list": "Alle Filter",
+ "abusefilter-list-id": "Filterkennung",
+ "abusefilter-list-status": "Status",
+ "abusefilter-list-public": "Öffentliche Beschreibung",
+ "abusefilter-list-consequences": "Folliche",
+ "abusefilter-list-visibility": "Sichtbarkeit",
+ "abusefilter-list-hitcount": "Trefferzähler",
+ "abusefilter-list-edit": "Beoorbeite",
+ "abusefilter-list-details": "Detalhes",
+ "abusefilter-list-limit": "Anzoohl por Seit:",
+ "abusefilter-list-lastmodified": "Zuletzt geännert",
+ "abusefilter-list-group": "Filtergruppe",
+ "abusefilter-hidden": "Privat",
+ "abusefilter-unhidden": "Öffentlich",
+ "abusefilter-enabled": "Aktiviert",
+ "abusefilter-deleted": "Abgewischt",
+ "abusefilter-disabled": "Deaktiviert",
+ "abusefilter-hitcount": "{{PLURAL:$1|En Treffer|$1 Treffer}}",
+ "abusefilter-new": "Neie Filter erstelle",
+ "abusefilter-return": "Zurück zur Missbrauchsfilter-Verwaltung",
+ "abusefilter-status-global": "Global",
+ "abusefilter-list-options": "Optione",
+ "abusefilter-list-options-deleted": "Abgewischter Filter:",
+ "abusefilter-list-options-deleted-only": "Nuar abgewischter Filter oonzeiche",
+ "abusefilter-list-options-deleted-hide": "Abgewischte Filter ausblenne",
+ "abusefilter-list-options-deleted-show": "Abgewischte Filter inbeziehe",
+ "abusefilter-list-options-scope": "Zeich Filter zu:",
+ "abusefilter-list-options-scope-local": "Lokales Wiki",
+ "abusefilter-list-options-scope-global": "Globale Rechle",
+ "abusefilter-list-options-disabled": "Deaktivierte Filter:",
+ "abusefilter-list-options-hidedisabled": "Deaktivierte Filter ausblenne",
+ "abusefilter-list-options-submit": "Aktualisiere",
+ "abusefilter-tools-expr": "Expression-Tester",
+ "abusefilter-tools-submitexpr": "Prüfe",
+ "abusefilter-tools-reautoconfirm": "\"Automatisch bestätichte Benutzer\"-Status wiederhearstelle",
+ "abusefilter-tools-reautoconfirm-user": "Benutzer:",
+ "abusefilter-tools-reautoconfirm-submit": "Wieder zum automatisch bestätichte Benutzer mache",
+ "abusefilter-edit": "Missbrauchsfilter beoorbeite",
+ "abusefilter-edit-subtitle": "Beoorbeite Filter $1",
+ "abusefilter-edit-subtitle-new": "Der Filter weard grod erstellt.",
+ "abusefilter-edit-status-label": "Statistik",
+ "abusefilter-edit-new": "Neier Filter",
+ "abusefilter-edit-save": "Filter speichre",
+ "abusefilter-edit-id": "Filterkennung:",
+ "abusefilter-edit-description": "Beschreibung:\n:''(öffentlich sichtbar)''",
+ "abusefilter-edit-group": "Filtergruppe:",
+ "abusefilter-edit-flags": "Flags:",
+ "abusefilter-edit-enabled": "Filter aktiviere",
+ "abusefilter-edit-deleted": "Wie abgewischt markiere",
+ "abusefilter-edit-hidden": "Detalhes von der Filter net öffentlich oonzeiche",
+ "abusefilter-edit-global": "Globaler Filter",
+ "abusefilter-edit-rules": "Bedingunge:",
+ "abusefilter-edit-notes": "Notize:",
+ "abusefilter-edit-lastmod": "Der Filter sein letzt Beoorbeitung:",
+ "abusefilter-edit-lastmod-text": "$3, $4 Uhr von $2",
+ "abusefilter-edit-hitcount": "Treffer von der Filter:",
+ "abusefilter-edit-consequences": "Bei Treffer auszuführende Aktione",
+ "abusefilter-edit-action-tag": "Die Beoorbeitung für en spätre Üwerprüfung markiere.",
+ "abusefilter-edit-throttle-count": "Oonzoohl von erlaubter Aktione:",
+ "abusefilter-edit-throttle-period": "Zeitraum:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|Sekund|Sekunde}}",
+ "abusefilter-edit-throttle-groups": "Rechle für die Gruppedrossel:\n:''(ein jede Zeil, verbinne mit Kommata)''",
+ "abusefilter-edit-warn-message": "Systemnachricht für die Warnung:",
+ "abusefilter-edit-warn-other": "Andre Systemnachricht",
+ "abusefilter-edit-warn-other-label": "Seitenoome von en annre Systemnachricht:\n:''(ohne MediaWiki-Präfix)''",
+ "abusefilter-edit-warn-actions": "Aktione:",
+ "abusefilter-edit-warn-preview": "Vorschau von der gewählte Systemnachricht",
+ "abusefilter-edit-warn-edit": "Gewählte Systemnachricht erstelle/beoorbeite",
+ "abusefilter-edit-tag-tag": "Gültiche Benennunge (ein jede Zeil):",
+ "abusefilter-edit-main": "Filterparameter",
+ "abusefilter-edit-done-subtitle": "Filter beoorbeitet",
+ "abusefilter-edit-viewhistory": "Versionsgeschichte von dem Filter oonsieen",
+ "abusefilter-edit-history": "Versionsgeschicht:",
+ "abusefilter-edit-check": "Syntaxprüfung",
+ "abusefilter-edit-badfilter": "Der oongebne Filter ist net voarhand.",
+ "abusefilter-edit-revert": "Aktione von dem Filter rückgängich mache",
+ "abusefilter-edit-tools": "Werkzeich",
+ "abusefilter-edit-test-link": "Den Filter probeweis uff letzte Beoorbeitunge oonwenne",
+ "abusefilter-edit-export": "Den Filter in en annres Wiki exportiere",
+ "abusefilter-edit-syntaxok": "Ken Syntaxfehler gefund.",
+ "abusefilter-edit-syntaxerr": "Syntaxfehler gefund: $1",
+ "abusefilter-edit-bad-tags": "En orrer mehrre von der oongebne Markierunge sind net gültich.\nMarkierunge sollte koorz sin und die sollte keh Sonnerzeiche beinhalle.",
+ "abusefilter-edit-notallowed": "Es ist dir net erlaubt, Missbrauchsfilter zu erstellen orrer zu beoorbeite",
+ "abusefilter-edit-notallowed-global": "Du bist net berechticht, globale Missbrauchsfilter zu erstellen orrer zu verännre.",
+ "abusefilter-edit-notallowed-global-custom-msg": "Benutzerdefinierte Warnnachrichte werre für globale Filter net unnerstützt.",
+ "abusefilter-edit-builder-select": "Wähl en Option aus, um se am Kursor einzufüche",
+ "abusefilter-edit-builder-group-op-arithmetic": "Arithmetische Operatore",
+ "abusefilter-edit-builder-op-arithmetic-addition": "جمع (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Subtraktion (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Multiplikation (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "تقسیم (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Modulo (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Potenz (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Vergleichsoperatore",
+ "abusefilter-edit-builder-op-comparison-equal": "Ist gleich (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Ist net gleich (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "Kleiner wie (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Grösser wie (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Kleiner orrer gleich (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Grösser orrer gleich (>=)",
+ "abusefilter-edit-builder-group-op-bool": "Boolesche Operatore",
+ "abusefilter-edit-builder-op-bool-not": "Net (!)",
+ "abusefilter-edit-builder-op-bool-and": "Und (&)",
+ "abusefilter-edit-builder-op-bool-or": "Orrer (|)",
+ "abusefilter-edit-builder-group-misc": "Verschiednes",
+ "abusefilter-edit-builder-misc-in": "enthalle in Zeichefolche (in)",
+ "abusefilter-edit-builder-misc-like": "Passt zu Muster (like)",
+ "abusefilter-edit-builder-misc-rlike": "Passt uff reguläre Ausdruck (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "Passt uff reguläre Ausdruck ohne Beachtung von Gross- und Klenschreibung (irlike)",
+ "abusefilter-edit-builder-misc-contains": "Linke Zeichekett beinhaltet rechte Zeichenkette (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "Feste Zeichekett (\"\")",
+ "abusefilter-edit-builder-misc-tern": "Koorze Operatore (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "Konditional (if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "Funktione",
+ "abusefilter-edit-builder-funcs-length": "Länge von der Zeichefolche (length)",
+ "abusefilter-edit-builder-funcs-lcase": "In Klenbuchstoob konvertiere (lcase)",
+ "abusefilter-edit-builder-funcs-ucase": "In Grossbuchstoobe konvertiere (ucase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "Verwirrende Zeiche normalisiere (ccnorm)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "Doppelte Zeiche entferne (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "Sonderzeiche / Gesamtzoohl von der Zeiche (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "Normalisiere (norm)",
+ "abusefilter-edit-builder-funcs-count": "Voarkommnisse Oonzoohl von der Zeichefolche X in der Zeichefolge Y (count)",
+ "abusefilter-edit-builder-funcs-rcount": "Oonzoohl von dem regulär Ausdruck X in Zeichekett Y (rcount)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "Leerzeiche entferne (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "Sonderzeiche entferne (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "Befindt sich die IP-Adress im oongebne Adressbereich? (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "Such in Zeichekett noh mehrre Unnerkette (contains_any)",
+ "abusefilter-edit-builder-funcs-substr": "Tel-Zeichekett (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "Position der Teil-Zeichekett in der Zeichekette (strpos)",
+ "abusefilter-edit-builder-funcs-set_var": "Variable setze (set_var)",
+ "abusefilter-edit-builder-group-vars": "Variable",
+ "abusefilter-edit-builder-vars-accountname": "Benutzernoome (bei Erstellung von ein Benutzerkonto)",
+ "abusefilter-edit-builder-vars-timestamp": "Zeitstempel von der Ännerung im Unix-Format",
+ "abusefilter-edit-builder-vars-action": "Aktion",
+ "abusefilter-edit-builder-vars-addedlines": "Doorrich die Beoorbeitung hinzugefüchte Zeile",
+ "abusefilter-edit-builder-vars-delta": "Grössenännrung von der Beoorbeitung",
+ "abusefilter-edit-builder-vars-diff": "Vereinichter Versionsunnerschied von der Beoorbeitung",
+ "abusefilter-edit-builder-vars-newsize": "Neie Seitegröss",
+ "abusefilter-edit-builder-vars-oldsize": "Alte Seitengröss",
+ "abusefilter-edit-builder-vars-removedlines": "Doorrich die Beoorbeitung von entfernte Zeile",
+ "abusefilter-edit-builder-vars-summary": "Zusammenfassung",
+ "abusefilter-edit-builder-vars-article-id": "Seitekennnummer",
+ "abusefilter-edit-builder-vars-article-ns": "Noomeraum von der Seit",
+ "abusefilter-edit-builder-vars-article-text": "Titel von der Seit (ohne Noomeraum)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Voller Seitenoome",
+ "abusefilter-edit-builder-vars-article-views": "Seiteuffruf",
+ "abusefilter-edit-builder-vars-movedfrom-id": "Seite-ID von der Quellseit",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "Noomeraum von der Quellseit",
+ "abusefilter-edit-builder-vars-movedfrom-text": "Titel von der Quellseit",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "Vollständicher Titel von der Quellseit",
+ "abusefilter-edit-builder-vars-movedto-id": "Seite-ID von der Zielseit",
+ "abusefilter-edit-builder-vars-movedto-ns": "Noomeraum von der Zielseit",
+ "abusefilter-edit-builder-vars-movedto-text": "Titel von der Zielseit",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "Vollständicher Titel von der Zielseit",
+ "abusefilter-edit-builder-vars-user-editcount": "Beitroochszählung von det Benutzer",
+ "abusefilter-edit-builder-vars-user-age": "Alter von der Benutzerkonto",
+ "abusefilter-edit-builder-vars-user-name": "Noome von der Benutzerkonto",
+ "abusefilter-edit-builder-vars-user-groups": "Gruppe (ooch implizite), in dene der Benutzer Mitglied ist",
+ "abusefilter-edit-builder-vars-user-blocked": "Benutzer ist gesperrt",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "Zeitpunkt, an dem die E-Mail-Adress bestäticht woard",
+ "abusefilter-edit-builder-vars-recent-contributors": "Die letzte zehn Beoorbeiter von der Seit",
+ "abusefilter-edit-builder-vars-all-links": "Alle externe Links im neie Text",
+ "abusefilter-edit-builder-vars-added-links": "Alle dorrich die Beoorbeitung hinzugefüchte externe Links",
+ "abusefilter-edit-builder-vars-removed-links": "Alle dorrich die Beoorbeitung von entfernte externe Links",
+ "abusefilter-edit-builder-vars-old-text": "Alter Wikitext von der Seit, vor der Beoorbeitung",
+ "abusefilter-edit-builder-vars-new-text": "Neier Wikitext von der Seit, noh der Beoorbeitung",
+ "abusefilter-edit-builder-vars-new-pst": "Neier Seitewikitext, voar dem Speichre umgewandelt",
+ "abusefilter-edit-builder-vars-new-text-stripped": "Neier Seitetext, von jechlicher Textauszeichnung befreit",
+ "abusefilter-edit-builder-vars-new-html": "Der neie Version sein HTML-Quelltext",
+ "abusefilter-edit-builder-vars-restrictions-edit": "Beoorbeite-Schutzstuf von der Seit",
+ "abusefilter-edit-builder-vars-restrictions-move": "Verschieb der Seit sein Schutzstuf",
+ "abusefilter-edit-builder-vars-restrictions-create": "Der Seit sein Erstellschutz",
+ "abusefilter-edit-builder-vars-restrictions-upload": "Der Datei sein Hochloodeschutz",
+ "abusefilter-edit-builder-vars-old-text-stripped": "Alter Seitetext, von jeglicher Textauszeichnung befreit",
+ "abusefilter-edit-builder-vars-old-links": "Der Seit sein Links, voar der Beoorbeitung",
+ "abusefilter-edit-builder-vars-old-html": "Der alte Version sein HTML-Quelltext",
+ "abusefilter-edit-builder-vars-minor-edit": "Beoorbeitung woard als wie Klenichkeit markiert",
+ "abusefilter-edit-builder-vars-file-sha1": "SHA1-Hash von Dateiinhalt",
+ "abusefilter-filter-log": "Missbrauchsfilter-Ännrunge",
+ "abusefilter-history": "Versionsgeschicht für Missbrauchsfilter $1",
+ "abusefilter-history-foruser": "Ännrunge von $1",
+ "abusefilter-history-hidden": "Versteckt",
+ "abusefilter-history-enabled": "aktiviert",
+ "abusefilter-history-global": "Global",
+ "abusefilter-history-timestamp": "Zeit",
+ "abusefilter-history-user": "Benutzer",
+ "abusefilter-history-public": "Öffentliche Filterbeschreibung",
+ "abusefilter-history-flags": "Kennzeiche",
+ "abusefilter-history-filter": "Filterregel",
+ "abusefilter-history-comments": "Kommentare",
+ "abusefilter-history-actions": "Aktione",
+ "abusefilter-history-backedit": "Zurück zum Filtereditor",
+ "abusefilter-history-deleted": "Abgewischt",
+ "abusefilter-history-filterid": "Filter",
+ "abusefilter-history-select-legend": "Such inschränke",
+ "abusefilter-history-select-user": "Benutzer:",
+ "abusefilter-history-select-submit": "Anwende",
+ "abusefilter-history-diff": "Ännrunge",
+ "abusefilter-history-error-hidden": "Der oongeforderte Filter ist versteckt. Sein Versionsgeschicht kann doher net ingesiehn werre.",
+ "abusefilter-exception-unexpectedatend": "Unerwoortetes \"$2\" bei Zeiche \"$1\".",
+ "abusefilter-exception-expectednotfound": "Uff Position $1 woard en \"$2\" erwoortet. Statt den woard en \"$3\" mit dem Weart \"$4\" gefund.",
+ "abusefilter-exception-unrecognisedkeyword": "Unbekanntes Schlüsselwort $2 bei Zeiche $1.",
+ "abusefilter-exception-unexpectedtoken": "Unerwartetes Token \"$3\" (vom Typ $2) bei Zeiche $1.",
+ "abusefilter-exception-unclosedstring": "Net abgeschlossne Zeichekete, beginnt bei Zeiche $1.",
+ "abusefilter-exception-invalidoperator": "Ungülticher Operator \"$2\" bei Zeiche $1.",
+ "abusefilter-exception-unrecognisedtoken": "Unbekanntes Token \"$2\" bei Zeiche $1.",
+ "abusefilter-exception-noparams": "Ken Parameter an Funktion \"$2\" bei Zeiche $1 üwergebe.",
+ "abusefilter-exception-dividebyzero": "Division von $2 doorrich Null bei Zeiche $1.",
+ "abusefilter-exception-unrecognisedvar": "Unerkannte Variable $2 bei Zeiche $1",
+ "abusefilter-action-tag": "Markierung",
+ "abusefilter-action-throttle": "Drossle",
+ "abusefilter-action-warn": "Woorne",
+ "abusefilter-action-blockautopromote": "Autopromote sperre",
+ "abusefilter-action-block": "Sperre",
+ "abusefilter-action-degroup": "Aus Gruppe entferne",
+ "abusefilter-action-rangeblock": "Bereichssperre",
+ "abusefilter-action-disallow": "Verbiete",
+ "abusefilter-revert-title": "Alle Ännrunge doorrich Filter $1 rückgängich mache",
+ "abusefilter-revert-periodstart": "Beginn von dem Zeitraum:",
+ "abusefilter-revert-periodend": "End von dem Zeitraum:",
+ "abusefilter-revert-search": "Aktione auswähle:",
+ "abusefilter-revert-filter": "Filter:",
+ "abusefilter-revert-confirm": "Bestätige",
+ "abusefilter-revert-reasonfield": "Grund:",
+ "abusefilter-test": "Filter teste",
+ "abusefilter-test-legend": "Filter teste",
+ "abusefilter-test-load-filter": "Filter-ID lade:",
+ "abusefilter-test-submit": "Teste",
+ "abusefilter-test-load": "Loode",
+ "abusefilter-test-user": "Ännrungen von Benutzer:",
+ "abusefilter-test-period-start": "Ännrunge noh:",
+ "abusefilter-test-period-end": "Ännrunge voar:",
+ "abusefilter-test-page": "Ännrunge an der Seit:",
+ "abusefilter-test-shownegative": "Ännrunge oonzeiche, wo net uff den Filter passe",
+ "abusefilter-changeslist-examine": "unnersuche",
+ "abusefilter-examine": "Einzelne Ännrunge unnersuche",
+ "abusefilter-examine-legend": "Ännrunge auswähle",
+ "abusefilter-examine-diff": "URL zum Versionsvergleich:",
+ "abusefilter-examine-user": "Benutzer:",
+ "abusefilter-examine-title": "Seitenoome:",
+ "abusefilter-examine-submit": "Suche",
+ "abusefilter-examine-vars": "Variable, wo für die Ännrung generiert worre",
+ "abusefilter-examine-test": "En Filter probewei uff die Ännrung oonwenne",
+ "abusefilter-examine-test-button": "Filter probeweis oonwenne",
+ "abusefilter-examine-match": "Der Filter erfasst die Ännrung.",
+ "abusefilter-examine-nomatch": "Der Filter erfasst die Ännrung net.",
+ "abusefilter-examine-syntaxerror": "Die Syntax von dem Filter ist ungültich",
+ "abusefilter-examine-notfound": "Die ongebne Ännrung konnt net gefund sin.",
+ "abusefilter-topnav": "'''Missbrauchsfilter-Navigation'''",
+ "abusefilter-topnav-home": "Startseit",
+ "abusefilter-topnav-test": "Regle teste",
+ "abusefilter-topnav-examine": "Unnersuchung von der letzte Ännrunge",
+ "abusefilter-topnav-log": "Logbuch",
+ "abusefilter-topnav-tools": "Debugging",
+ "abusefilter-topnav-import": "Filter importiere",
+ "abusefilter-log-name": "Missbrauchsfilter-Logbuch",
+ "abusefilter-log-noresults": "Ken Ergebnisse",
+ "abusefilter-diff-title": "Unnerschied zwischich Versione",
+ "abusefilter-diff-item": "Element",
+ "abusefilter-diff-version": "Version vom $1 {{GENDER:$3|von}} $2",
+ "abusefilter-diff-info": "Seiteiformatione",
+ "abusefilter-diff-pattern": "Filterregle",
+ "abusefilter-diff-invalid": "Die oongeforderte Version kann net abgerufe sin",
+ "abusefilter-diff-backhistory": "Zurück zu der Filter sein Versionsgeschicht",
+ "abusefilter-diff-prev": "Ältre Ännrung",
+ "abusefilter-diff-next": "Neiere Ännrung",
+ "abusefilter-import-submit": "Date importiere",
+ "abusefilter-group-default": "Standard"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/hsb.json b/www/wiki/extensions/AbuseFilter/i18n/hsb.json
new file mode 100644
index 00000000..cad5416b
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/hsb.json
@@ -0,0 +1,400 @@
+{
+ "@metadata": {
+ "authors": [
+ "Michawiki",
+ "J budissin",
+ "Matma Rex"
+ ]
+ },
+ "abusefilter-desc": "Nałožuje awtomatisku heuristiku na změny.",
+ "abusefilter": "Konfiguracija znjewužiwanskeho filtra",
+ "abuselog": "Protokol znjewužiwanjow",
+ "abusefilter-intro": "Witaj do powjercha zrjadowanja znjewužiwanskich filtrow.\nZnjewužiwanski filter je awtomatizowany softwarowy mechanizm za nałoženje awtomatiskeje heuristiki na wšě akcije.\nPowjerch pokazuje lisćinu definowanych filtrow a dowola je změnić.",
+ "abusefilter-mustbeeditor": "Z wěstotnych přičinow móžeja jenož wužiwarjo z prawom znjewužiwanske filtry změnić tutón interfejs wužiwać.",
+ "abusefilter-warning": "'''Warnowanje''': Tuta akcija bu awtomatisce jako škódna identifikowana.\nNjekonstruktiwne změny budu so spěšnje cofnyć, a njesłyšane abo wospjetowane wobdźěłowanje budźe k tomu wjesć, zo twoje konto abo twoja IP-adresa so blokuje.\nJeli maš tutu akciju za konstruktiwnu, móžeš znowa skkadować, zo by ju wobkrućił. \nKrótke wopisanje znjewužiwanskeho prawidła, kotremuž twoja akcija wotpowěduje, je: $1",
+ "abusefilter-disallowed": "Tuta akcija bu awtomatisce jako škódna identifikowana a tohodla znjemóžnjena.\nJeli wěriš, zo twoja akcija je konstruktiwna była, informuj prošu administratora, štož sy spytał činić.\nKrótke wopisanje znjewužiwanskeho prawidła, kotremuž twoja akcija wotpowěduje, je: $1",
+ "abusefilter-blocked-display": "Tuta akcija bu awtomatisce jako škódna identifikowana, a je so ći zadźěwało, ju wuwjesć.\nPřidatnje su so twoje wužiwarske konto a wšě zwjazane IP-addresy přećiwo wobdźěłanju zawrjene, zo by so {{SITENAME}} škitał.\nJeli je so to zmylnje stało, staj so prošu z administratorom do zwiska.\nKrótke wopisanje znjewužiwanskeho prawidła, kotremuž twoja akcija wotpowěduje, je: $1",
+ "abusefilter-degrouped": "Tuta akcija bu awtomatisce jako škódna identifikowana.\nPotajkim je so znjemóžniła a, dokelž ma so twoje konto za wohrožene, su so wšě prawa cofnyli.\nJeli wěriš, zo to je so zmylnje stało, staj so z běrokratom do zwiska, přidaj rozjasnjenje tuteje akcije a twoje prawa bychu so wobnowili.\nKrótke wopisanje znjewužiwanskeho, kotremuž twoja akcija wotpowěduje, je: $1",
+ "abusefilter-autopromote-blocked": "Tuta akcija bu awtomatisce jako škódna identifikowana a je so znjemóžniła. Přidatnje, jako wěstotna naprawa, su so někotre priwilegije, kotrež so powšitkownje wutworjenym kontam dawaja, nachwilu twojemu konće zebrali.\nKrótke wopisanje znjewužiwanskeho prawidła, kotremuž twoja akcija wotpowěduje, je: $1",
+ "abusefilter-blocker": "Znjewužiwanski filter",
+ "abusefilter-blockreason": "Přez znjewužiwanski filter awtomatisce blokowany. Wopisanje prawidła: $1",
+ "abusefilter-degroupreason": "Prawa awtomatisce přez znjewužiwanski filter zebrane. Wopisanje prawidła: $1",
+ "abusefilter-accountreserved": "Tute kontowe mjeno je za wužiwanje přez znjewužiwanski filter wuměnjene.",
+ "right-abusefilter-modify": "Znjewužiwanske filtry změnić",
+ "right-abusefilter-view": "Znjewužiwanske filtry sej wobhladać",
+ "right-abusefilter-log": "Protokol znjewužiwanjow zwobraznić",
+ "right-abusefilter-log-detail": "Podrobne zapiski protokola znjewužiwanjow zwobraznić",
+ "right-abusefilter-private": "Priwatne daty w protokol znjewužiwanjow zwobraznić",
+ "right-abusefilter-modify-restricted": "Znjewužiwanske filtry z wobmjezowanymi akcijemi změnić",
+ "right-abusefilter-revert": "Wšě změny wot dateho wužiwanskeho filtra cofnyć",
+ "right-abusefilter-view-private": "Znjewužiwanske filtry sej wobhladać, kotrež su jako priwatne markěrowane",
+ "right-abusefilter-log-private": "Protokolowe zapiski znjewužiwanskich filtrow jako priwatne markěrować",
+ "right-abusefilter-hide-log": "Zapiski w znjewužiwanskim protokolu schować",
+ "right-abusefilter-hidden-log": "Zapiski znjewužiwanskeho protokola pokazać",
+ "right-abusefilter-modify-global": "Globalne znjewužiwanske filtry wutworić abo změnić",
+ "action-abusefilter-modify": "znjewužiwanske filtry změnić",
+ "action-abusefilter-view": "znjewužiwanske filtry sej wobhladać",
+ "action-abusefilter-log": "znjewužiwanski protokol sej wobhladać",
+ "action-abusefilter-log-detail": "podrobne zapiski znjewužiwanskeho protokola sej wobhladać",
+ "action-abusefilter-private": "priwatne daty w znjewužiwanskim protokolu sej wobhladać",
+ "action-abusefilter-modify-restricted": "znjewužiwanske filtry z wobmjezowanymi akcijemi změnić",
+ "action-abusefilter-revert": "wšě změny přez daty znjewužiwanski filter wobroćić",
+ "action-abusefilter-view-private": "znjewužiwanske filtry sej wobhladać, kotrež su jako priwatne markěrowane",
+ "abusefilter-log": "Protokol znjewužiwanskich filtrow",
+ "abusefilter-log-summary": "Tutón protokol pokazuje lisćinu wšěch přez filtry popadnjene akcijow.",
+ "abusefilter-log-search": "Protokol znjewužiwanjow přepytać",
+ "abusefilter-log-search-user": "Wužiwar:",
+ "abusefilter-log-search-filter": "ID filtrow (dźělene přez runopadne smužki):",
+ "abusefilter-log-search-title": "Titul:",
+ "abusefilter-log-search-wiki": "Wiki:",
+ "abusefilter-log-search-submit": "Pytać",
+ "abusefilter-log-entry": "$1: $2 wuwoła znjewužiwanski filter přez wuwjedźenje akcije \"$3\" na $4.\nPřewjedźene akcije: $5;\nWopisanje filtra: $6",
+ "abusefilter-log-entry-withdiff": "$1: $2 wuwoła znjewužiwanski filter přez wuwjedźenje akcije \"$3\" na $4.\nPřewjedźene akcije: $5;\nWopisanje filtra: $6 ($7)",
+ "abusefilter-log-detailedentry-meta": "$1: $2 wuwoła $3 přez wuwjedźenje akcije \"$4\" na $5.\nPřewjedźene akcije: $6;\nWopisanje filtra:: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "globalny filter $1",
+ "abusefilter-log-detailedentry-local": "filter $1",
+ "abusefilter-log-detailslink": "podrobnosće",
+ "abusefilter-log-diff": "Rozdźěl",
+ "abusefilter-log-hidelink": "Widźomnosć nastajić",
+ "abusefilter-log-details-legend": "Podrobnosće za protokolowy zapisk $1",
+ "abusefilter-log-details-var": "Wariabla",
+ "abusefilter-log-details-val": "Hódnota",
+ "abusefilter-log-details-vars": "Akciske parametry",
+ "abusefilter-log-details-private": "Priwatne daty",
+ "abusefilter-log-details-ip": "Wuchadna adresa IP",
+ "abusefilter-log-noactions": "žadyn",
+ "abusefilter-log-details-diff": "Při wobdźěłanju činjene změny",
+ "abusefilter-log-linkoncontribs": "znjewužiwanski protokol",
+ "abusefilter-log-linkoncontribs-text": "Znjewužiwanski protokol za tutoho wužiwarja",
+ "abusefilter-log-hidden": "(zapisk schowany)",
+ "abusefilter-log-hidden-implicit": "(schowany, dokelž wersija je so zhašała)",
+ "abusefilter-log-cannot-see-details": "Nimaš prawo sej podrobnosće tutoho zapiska wobhladać.",
+ "abusefilter-log-details-hidden": "Njemóžeš sej podrobnosće za tutón zapisk wobhladać, dokelž je před zjawnosću schowany.",
+ "abusefilter-log-private-not-included": "Jedyn filtrowy ID abo wjacore ID, kotrež sy podał, su priwatne. Dokelž njesměće sej podrobnosće priwatnch filtrow wobhladać, so tute filtry njepytaja.",
+ "abusefilter-log-hide-legend": "Protokolowy zapisk schować",
+ "abusefilter-log-hide-id": "ID protokoloweho zapiska:",
+ "abusefilter-log-hide-hidden": "Zapis před zjawnosću schować",
+ "abusefilter-log-hide-reason": "Přičina:",
+ "abusefilter-log-hide-forbidden": "Nimaš prawo zapiski znjewužiwanskeho protokola schować.",
+ "abusefilter-logentry-suppress": "je \"[[$1]]\" schował",
+ "abusefilter-logentry-unsuppress": "je \"[[$1]]\" pokazał",
+ "logentry-abusefilter-hit": "$1 je při wuwjedźenju akcije \"$5\" na $3 $4 zahibał. Skutkowanje: $6 ($7)",
+ "abusefilter-management": "Zrjadowanje znjewužiwanskich filtrow",
+ "abusefilter-list": "wšě filtry",
+ "abusefilter-list-id": "ID filtra",
+ "abusefilter-list-status": "Status",
+ "abusefilter-list-public": "Zjawne wopisanje",
+ "abusefilter-list-consequences": "Konsekwency",
+ "abusefilter-list-visibility": "Widźomnosć",
+ "abusefilter-list-hitcount": "Ličenje trjechenych",
+ "abusefilter-list-edit": "Wobdźěłać",
+ "abusefilter-list-details": "Podrobnosće",
+ "abusefilter-list-limit": "Ličba na stronu:",
+ "abusefilter-list-lastmodified": "Posledni raz změnjeny:",
+ "abusefilter-list-group": "Filtrowa skupina",
+ "abusefilter-hidden": "Priwatny",
+ "abusefilter-unhidden": "Zjawny",
+ "abusefilter-enabled": "Zmóžnjeny",
+ "abusefilter-deleted": "Wušmórnjeny",
+ "abusefilter-disabled": "Znjemóžnjeny",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|trjecheny|trjechenej|trjechene|trjechenych}}",
+ "abusefilter-new": "Nowy filter wutworić",
+ "abusefilter-return": "Wróćo k zrjadowanju filtrow",
+ "abusefilter-status-global": "Globalny",
+ "abusefilter-list-options": "Opcije",
+ "abusefilter-list-options-deleted": "Wušmórnjene filtry:",
+ "abusefilter-list-options-deleted-only": "Jenož wušmórnjene filtry pokazać",
+ "abusefilter-list-options-deleted-hide": "Wušmórnjene filtry schować",
+ "abusefilter-list-options-deleted-show": "Wušmórnjene filtry zapřijeć",
+ "abusefilter-list-options-scope": "Filtry pokazać z:",
+ "abusefilter-list-options-scope-local": "Lokalny wiki",
+ "abusefilter-list-options-scope-global": "Globalne přawidła",
+ "abusefilter-list-options-disabled": "Znjemóžnjene filtry:",
+ "abusefilter-list-options-hidedisabled": "Znjemóžnjene filtry schować",
+ "abusefilter-list-options-submit": "Aktualizować",
+ "abusefilter-tools-text": "Tu su někotre nastroje, kotrež su wužitne, zo bychu znjewužiwanske filtry formulowali a jich zmylki wotstronili.",
+ "abusefilter-tools-expr": "Testowak wurazow",
+ "abusefilter-tools-submitexpr": "Wuhódnoćić",
+ "abusefilter-tools-reautoconfirm": "Status awtomatiskeho wobkrućenja wobnowić",
+ "abusefilter-tools-reautoconfirm-user": "Wužiwar:",
+ "abusefilter-tools-reautoconfirm-submit": "Zaso awtomatisce wobkrućić",
+ "abusefilter-reautoconfirm-none": "{{GENDER:$1|Tutón wužiwar|Tomu wužiwarjej|Tej wužiwarce}} njebu {{GENDER:$1|jeho|jeje}} awtomatisce wobkrućeny status zebrany.",
+ "abusefilter-reautoconfirm-notallowed": "Njesměš awtomatisce wobkrućeny status wobnowić.",
+ "abusefilter-reautoconfirm-done": "Status awtomatiskeho wobkrućenja konta bu wobnowjeny",
+ "abusefilter-status": "Z {{PLURAL:$1|poslednjej akcije|poslednjeju $1 akciji|poslednich $1 akcijow|podslednich $1 akcijow}} {{PLURAL:$2|je $2 ($3 %) docpěła|stej $2 ($3 %) docpěłoj|su $2 ($3 %) docpěli|je $2 ($3 %) docpěło}} limit wuměnjenja $4, a $5 ($6 %) {{PLURAL:$5| je wotpowědował|stej wotpowědowałoj|su wotpowědowali|je wotpowědowało}} jednomu z filtrow, kotrež su tuchwilu zmóžnjene.",
+ "abusefilter-edit": "Znjewužiwanski filter wobdźěłać",
+ "abusefilter-edit-subtitle": "Filter $1 so wobdźěłuje",
+ "abusefilter-edit-subtitle-new": "Filter so wutworja",
+ "abusefilter-edit-oldwarning": "<strong>Wobdźěłuješ staru wersiju tutoho filtra.\nStatistiske podaća su jenož za najnowšu wersiju filtra.\nJeli swoje změny składuješ, budźeš wšě změny wot wersije, kotruž wobdźěłuješ, přepisować.</strong> &bull;\n[[Special:AbuseFilter/history/$2|Wróćo k stawiznam tutoho filtra]].",
+ "abusefilter-edit-status-label": "Statistika:",
+ "abusefilter-edit-status": "Z {{PLURAL:$1|poslednjeje akcije|poslednjeju $1 akcijow|poslednich $1 akcijow|poslednich $1 akcijow}} je tutón filter $2 ($3%) spóznał. Jeho přerězny běžny čas je $4 ms a spjelnja $5 {{PLURAL:$5|wuměnjenje|wuměnjeni|wuměnjenja|wuměnjenjow}} limita wuměnjenjow.",
+ "abusefilter-edit-status-profile": "Z {{PLURAL:$1|poslednjeje akcije|poslednjeju $1 akcijow|poslednich $1 akcijow|poslednich $1 akcijow}} je tutón filter $2 ($3%) spóznał. Jeho přerězny běžny čas je $4 ms a spjelnja $5 {{PLURAL:$5|wuměnjenje|wuměnjeni|wuměnjenja|wuměnjenjow}} limita wuměnjenjow.",
+ "abusefilter-edit-new": "Nowy filter",
+ "abusefilter-edit-save": "Filter składować",
+ "abusefilter-edit-id": "ID filtra:",
+ "abusefilter-edit-description": "Wopisanje:\n:''(zjawnje widźomne)''",
+ "abusefilter-edit-group": "Filtrowa skupina:",
+ "abusefilter-edit-flags": "Chorhojčka:",
+ "abusefilter-edit-enabled": "Tutón filter zmóžnić",
+ "abusefilter-edit-deleted": "Jako wušmórnjeny markěrować",
+ "abusefilter-edit-hidden": "Podrobnosće před zjawnym wobhldanjom schować",
+ "abusefilter-edit-global": "Globalny filter",
+ "abusefilter-edit-rules": "Wuměnjenja:",
+ "abusefilter-edit-notes": "Přispomnjenki:",
+ "abusefilter-edit-lastmod": "Filter posledni raz změnjeny:",
+ "abusefilter-edit-lastmod-text": "$1 wot $2",
+ "abusefilter-edit-hitcount": "Trjechene filtra:",
+ "abusefilter-edit-consequences": "Akcije, kotrež maja so při trjechenym wuwjesć",
+ "abusefilter-edit-action-warn": "Tute akcije po warnowanje wužiwarjej zahibać",
+ "abusefilter-edit-action-disallow": "Wuwjedźenju tuteje akcije přez wužiwarja zadźěwać",
+ "abusefilter-edit-action-blockautopromote": "Wužiwarjej awtomatisce wobkrućeny status zebrać",
+ "abusefilter-edit-action-degroup": "Wužiwarja ze wšěch priwilegowanych skupinow wotstronić",
+ "abusefilter-edit-action-block": "Wužiwarja a/abo IP-adresu přećiwo změnjenju blokować",
+ "abusefilter-edit-action-throttle": "Akcije jenož zahibać, jeli wužiwar prohowu hódnotu překročuje",
+ "abusefilter-edit-action-rangeblock": "Wobłuk /16 blokować, z kotrehož wužiwar pochadźa.",
+ "abusefilter-edit-action-tag": "Změnu za dalšu přehladku markěrować.",
+ "abusefilter-edit-throttle-count": "Ličba dowolenych akcijow",
+ "abusefilter-edit-throttle-period": "Časowy interwal",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|sekunda|sekundźe|sekundy|sekundow}}",
+ "abusefilter-edit-throttle-groups": "Haćenje skupiny přez:\n:''(jedne na linku, z komami zwjazać)''",
+ "abusefilter-edit-warn-message": "Systemowa zdźělanka za warnowanje:",
+ "abusefilter-edit-warn-other": "Druha powěsć",
+ "abusefilter-edit-warn-other-label": "Mjeno strony druheje powěsće:\n:''(bjez prefiks MediaWiki)''",
+ "abusefilter-edit-warn-actions": "Akcije:",
+ "abusefilter-edit-warn-preview": "Přehlad wubraneje powěsće",
+ "abusefilter-edit-warn-edit": "Wubranu powěsć wutworić/wobdźěłać",
+ "abusefilter-edit-tag-tag": "Taflički, kotrež maja so nałožić (jedna na linku):",
+ "abusefilter-edit-denied": "Njemóžeš sej podrobnosće tutoho filtra wobhladać, dokelž je před zjawnym wobhladanjom schowany.",
+ "abusefilter-edit-main": "Filtrowe parametry",
+ "abusefilter-edit-done-subtitle": "Fitler wobdźěłany",
+ "abusefilter-edit-done": "[[Special:AbuseFilter/history/$1/diff/prev/$2|Twoje změny]] na [[Special:AbuseFilter/$1|filtrje $3]] su so składowali.",
+ "abusefilter-edit-badsyntax": "Filter, kotryž sy podał, wobsahuje syntaktiski zmylk. Wudaće parsera bě: <pre>$1</pre>",
+ "abusefilter-edit-restricted": "Njemóžeš tutón filter wobdźěłać, dokelž wobsahuje jednu wobmjezowanu akciju abo wjacore wobmjezowane akcije. Prošu proš wužiwarja z prawom wobmjezowane akcije přidać, zo by změnu za tebje činił.",
+ "abusefilter-edit-viewhistory": "Stawizny tutoho filtra zwobraznić",
+ "abusefilter-edit-history": "Stawizny:",
+ "abusefilter-edit-check": "Syntaksu přepruwować",
+ "abusefilter-edit-badfilter": "Filter, kotryž sy podał, njeeksistuje.",
+ "abusefilter-edit-revert": "Akcije tutho filtra cofnyć",
+ "abusefilter-edit-tools": "Nastroje:",
+ "abusefilter-edit-test-link": "Tutón filter přećiwo aktualnym změnam testować",
+ "abusefilter-edit-export": "Tutón filter do druheho wikija eksportować",
+ "abusefilter-edit-syntaxok": "Žane syntaksowe zmylki wotkryte.",
+ "abusefilter-edit-syntaxerr": "Syntaksowy zmylk wotkryty: $1",
+ "abusefilter-edit-bad-tags": "Jedna abo wjacore z podatych tafličkow njeje płaćiwa.\nTaflički měli krótke być a njeměli wosebite znamješka wobsahować.",
+ "abusefilter-edit-notallowed": "Njesměš znjewužiwanske filtry wutworić abo wobdźěłać",
+ "abusefilter-edit-notallowed-global": "Njesměš globalne znjewužiwanske filtry wutworić abo wobdźěłać",
+ "abusefilter-edit-notallowed-global-custom-msg": "Swójske warnowanske filtry so za globalne filtry njepodpěruja",
+ "abusefilter-edit-builder-select": "wubjer opciju, zo by ju pola kursora zasunył",
+ "abusefilter-edit-builder-group-op-arithmetic": "Aritmetiske operatory",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Adicija (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Subtrakcija (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Multiplikacija (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Diwizija (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Modulo (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Potenca (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Přirunowanske operatory",
+ "abusefilter-edit-builder-op-comparison-equal": "Je runja (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Njeje runja (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "Mjeńši hač (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Wjetši hač (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Mjeńši hač abo runja (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Wjetši hač abo runja (>=)",
+ "abusefilter-edit-builder-group-op-bool": "Boolske operatory",
+ "abusefilter-edit-builder-op-bool-not": "Njeje (!)",
+ "abusefilter-edit-builder-op-bool-and": "A (&)",
+ "abusefilter-edit-builder-op-bool-or": "Abo (|)",
+ "abusefilter-edit-builder-group-misc": "Wšelake",
+ "abusefilter-edit-builder-misc-in": "wobsahowany w znamješkowym slědźe (in)",
+ "abusefilter-edit-builder-misc-like": "Hodźi so k mustrej (like)",
+ "abusefilter-edit-builder-misc-rlike": "Hodźi so regularnemu wurazej (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "Wotpowěduje regularnemu wurazej, njewobkedźbuje wulkopisanje (irlike)",
+ "abusefilter-edit-builder-misc-contains": "Lěwy znamješkowy slěd wobsahuje prawy znamješkowy slěd (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "Tekstowy literal (\"\")",
+ "abusefilter-edit-builder-misc-tern": "Ternerny operator (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "Wuměnjeny (if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "Funkcije",
+ "abusefilter-edit-builder-funcs-length": "Dołhosć znamješkoweho slěda (length)",
+ "abusefilter-edit-builder-funcs-lcase": "Do małych pismikow konwertować (lcase)",
+ "abusefilter-edit-builder-funcs-ucase": "Do wulkich pismikow konwertować (ucase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "Zaměnjujomne znamješka normalizować (ccnorm)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "Dwójne znamješka wotstronić (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "Specialne znamješka / znamješka dohromady (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "Normalizować (norm)",
+ "abusefilter-edit-builder-funcs-count": "Kak husto znamješkowy slěd X so w znamješkowym slědźe Y jewi (count)",
+ "abusefilter-edit-builder-funcs-rcount": "Kelko razow so regularny wuraz X w znamješkowym slědźe Y jewi (rcount)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "Mjezeru (rmwhitespace) wotstronić",
+ "abusefilter-edit-builder-funcs-rmspecials": "Specialne znamješka (rmspecials) wotstronić",
+ "abusefilter-edit-builder-funcs-ip_in_range": "Je IP we wobłuku? (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "Znamješkowy slěd za wjacorymi dźělnymi znamješkowymi slědami přepytać (contains_any)",
+ "abusefilter-edit-builder-funcs-substr": "Dźělny znamješkowy slěd (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "Pozicija dźělneho znamješkoweho slěda w znamješkowym slědźe (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "Dźělny znamješkowy slěd přez znamješkowy slěd narunać (str_replace)",
+ "abusefilter-edit-builder-funcs-rescape": "Maskěrowany znamješkowy rjećazk jako literal w regulnarnym wurazu (rescape)",
+ "abusefilter-edit-builder-funcs-set_var": "Wariablu stajić (set_var)",
+ "abusefilter-edit-builder-group-vars": "Wariable",
+ "abusefilter-edit-builder-vars-accountname": "Kontowe mjeno (on account creation)",
+ "abusefilter-edit-builder-vars-timestamp": "Unix časowy kołk změny",
+ "abusefilter-edit-builder-vars-action": "Akcija",
+ "abusefilter-edit-builder-vars-addedlines": "Přez změnu přidate linki",
+ "abusefilter-edit-builder-vars-delta": "Wulkosć při wobdźěłanju změnjena",
+ "abusefilter-edit-builder-vars-diff": "Zjednoćeny rozdźěl změnow wobdźěłanja",
+ "abusefilter-edit-builder-vars-newsize": "Nowa wulkosć strony",
+ "abusefilter-edit-builder-vars-oldsize": "Stara wulkosć strony",
+ "abusefilter-edit-builder-vars-removedlines": "Linki při wobdźěłanju wotstronjene",
+ "abusefilter-edit-builder-vars-summary": "Zjeće/přičina změny",
+ "abusefilter-edit-builder-vars-article-id": "ID strony",
+ "abusefilter-edit-builder-vars-article-ns": "Mjenjowy rum strony",
+ "abusefilter-edit-builder-vars-article-text": "Titul strony (bjez mjenoweho ruma)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Dospołne mjeno strony",
+ "abusefilter-edit-builder-vars-article-views": "Wobhladanja strony",
+ "abusefilter-edit-builder-vars-movedfrom-id": "ID strony žórłoweje strony",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "Mjenowy rum žórłoweje strony",
+ "abusefilter-edit-builder-vars-movedfrom-text": "Titul žórłoweje strony",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "Dospołny titul žórłoweje strony",
+ "abusefilter-edit-builder-vars-movedto-id": "ID strony ciloweje strony",
+ "abusefilter-edit-builder-vars-movedto-ns": "Mjenowy rum ciloweje strony",
+ "abusefilter-edit-builder-vars-movedto-text": "Titul ciloweje strony",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "Dospołny titul ciloweje strony",
+ "abusefilter-edit-builder-vars-user-editcount": "Ličenje změnow wužiwarja",
+ "abusefilter-edit-builder-vars-user-age": "Staroba wužiwarskeho konta",
+ "abusefilter-edit-builder-vars-user-name": "Mjeno wužiwarskeho konta",
+ "abusefilter-edit-builder-vars-user-groups": "Skupiny (tež implicitne), w kotrychž wužiwar je čłon",
+ "abusefilter-edit-builder-vars-user-rights": "Prawa, kiž ma wužiwar",
+ "abusefilter-edit-builder-vars-user-blocked": "Hač wužiwar je zablokowany",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "Čas, hdyž e-mejlowa adresa je so wobkrućiła",
+ "abusefilter-edit-builder-vars-recent-contributors": "Poslednich pjeć wobdźěłarjow strony",
+ "abusefilter-edit-builder-vars-first-contributor": "Prěni wužiwar, kotryž wobdźěła stronu",
+ "abusefilter-edit-builder-vars-all-links": "Wšě eksterne wotkzay w nowym teksće",
+ "abusefilter-edit-builder-vars-added-links": "Wšě přez změnu přidate eksterne wotkazy",
+ "abusefilter-edit-builder-vars-removed-links": "Wšě přez změnu wotstronjene eksterne wotkazy",
+ "abusefilter-edit-builder-vars-old-text": "Stary wikitekst strony do změny",
+ "abusefilter-edit-builder-vars-new-text": "Nowy wikitekst strony po změnje",
+ "abusefilter-edit-builder-vars-new-pst": "Nowy wikitekst strony, před składowanjom přetworjeny",
+ "abusefilter-edit-builder-vars-diff-pst": "Zjednoćeny rozdźěl změnow po wobdźěłowanju, před składowanjom přetworjeny",
+ "abusefilter-edit-builder-vars-addedlines-pst": "Linki přidate we wobdźěłowanju, před składowanjom přetworjene",
+ "abusefilter-edit-builder-vars-new-text-stripped": "Nowy tekst strony, bjez woznamjenjenskeho teksta",
+ "abusefilter-edit-builder-vars-new-html": "Analyzowane HTML-žórło noweje wersije",
+ "abusefilter-edit-builder-vars-restrictions-edit": "Škitnu runinu strony wobdźěłać",
+ "abusefilter-edit-builder-vars-restrictions-move": "Škitnu runinu strony přesunyć",
+ "abusefilter-edit-builder-vars-restrictions-create": "Wutworjenski škit strony",
+ "abusefilter-edit-builder-vars-restrictions-upload": "Nahrawanski škit dataje",
+ "abusefilter-edit-builder-vars-old-text-stripped": "Tekst stareje strony, bjez woznamjenjenjow",
+ "abusefilter-edit-builder-vars-old-links": "Wotkazy w stronje, před wobdźěłanjom",
+ "abusefilter-edit-builder-vars-old-html": "Wikitekst stareje strony, do HTML analyzowany",
+ "abusefilter-edit-builder-vars-minor-edit": "Hač změna so jako snadna markěruje abo nic",
+ "abusefilter-edit-builder-vars-file-sha1": "Haš SHA1 datajoweho wobsaha",
+ "abusefilter-edit-builder-vars-file-size": "Wulkosć dataje w bajtach",
+ "abusefilter-filter-log": "Aktualne filtrowe změny",
+ "abusefilter-history": "Stawizny za znjewužiwanski filter #$1 změnić",
+ "abusefilter-history-foruser": "Změny wot $1",
+ "abusefilter-history-hidden": "Schowany",
+ "abusefilter-history-enabled": "Zmóžnjeny",
+ "abusefilter-history-global": "Globalny",
+ "abusefilter-history-timestamp": "Čas",
+ "abusefilter-history-user": "Wužiwar",
+ "abusefilter-history-public": "Zjawne wopisanje filtra",
+ "abusefilter-history-flags": "Chorhojčki",
+ "abusefilter-history-filter": "Filtrowe prawidło",
+ "abusefilter-history-comments": "Komentary",
+ "abusefilter-history-actions": "Akcije",
+ "abusefilter-history-backedit": "Wróćo k filtrowemu editorej",
+ "abusefilter-history-deleted": "Wušmórnjeny",
+ "abusefilter-history-filterid": "Filter",
+ "abusefilter-history-select-legend": "Pytanje zlěpšyć",
+ "abusefilter-history-select-user": "Wužiwar:",
+ "abusefilter-history-select-submit": "Zlěpšić",
+ "abusefilter-history-diff": "Změny",
+ "abusefilter-history-error-hidden": "Filter, kotryž sy požadał, je schowany, njemóžeš sej jeho stawizny wobhladać.",
+ "abusefilter-exception-unexpectedatend": "Njewočakowany \"$2\" pola znamješka $1.",
+ "abusefilter-exception-expectednotfound": "Wočakowany $2 pola znamješka $1 njenamakany (město toho $3 $4 namakany)",
+ "abusefilter-exception-unrecognisedkeyword": "Njespóznaty klučowe słowo $2 pola znamješka $1.",
+ "abusefilter-exception-unexpectedtoken": "Njewočakowany token \"$3\" (typ $2) pola znamješka $1.",
+ "abusefilter-exception-unclosedstring": "Njewotzamknjeny znamješkowy slěd započinacy so při znamješku $1.",
+ "abusefilter-exception-invalidoperator": "Njepłaćiwy operator \"$2\" pola znamjěska $1.",
+ "abusefilter-exception-unrecognisedtoken": "Njespóznaty token \"$2\" pola znamješka $1.",
+ "abusefilter-exception-noparams": "Žane parametry za funkciju \"$2\" pola znamješka $1.",
+ "abusefilter-exception-dividebyzero": "Njedowoleny pospyt $2 pola znamješka $1 přez nul diwidować.",
+ "abusefilter-exception-unrecognisedvar": "Njespóžnata wariabla $2 pola znamješka $1",
+ "abusefilter-exception-notenoughargs": "Nic dosć argumentow za funkciju $2, wuwołanu pola znamješka $1.\n$3 {{PLURAL:$3|argument wočakowany|argumentaj wočakowanej|argumenty wočakowane|argumentow wočakowane}}, $4 {{PLURAL:$4|dóstany|dóstanej|dóstane|dóstanych}}",
+ "abusefilter-exception-regexfailure": "Zmylk w regularnym wurazu \"$3\" pola znamješka $1: \"$2\"",
+ "abusefilter-exception-overridebuiltin": "Njedowolene zběhnjenje płaćiwosće zatwarjeneje wariable \"$2\" pola znamješka $1.",
+ "abusefilter-exception-outofbounds": "Požaduje so njeeksistowacy lisćinowy zapisk $2 (lisćinowa wulkosć = $3) pola znamješka $1.",
+ "abusefilter-exception-notlist": "Požaduje so zapisk pólneje wariable pola znamješka $1, za objekt, kotryž pólna wariabla njeje.",
+ "abusefilter-action-tag": "Taflička",
+ "abusefilter-action-throttle": "Haćić",
+ "abusefilter-action-warn": "Warnować",
+ "abusefilter-action-blockautopromote": "Awtomatiske powyšenje blokować",
+ "abusefilter-action-block": "Blokować",
+ "abusefilter-action-degroup": "Ze skupinow wotstronić",
+ "abusefilter-action-rangeblock": "Blokowanje wobłuka",
+ "abusefilter-action-disallow": "Zakazać",
+ "abusefilter-revert-title": "Wšě změny přez filter $1 cofnyć",
+ "abusefilter-revert-intro": "Tutón formular ći zmóžnja wšě změny, kotrež znjewužiwanski filter na zakładźe filtra $1 wujedł, cofnyć.\nBudź kedźbny při wužiwanju tutoho nastroja.",
+ "abusefilter-revert-preview-item": "$1: $2 je $3 na $4 činił.\nAkcije, kotrež maja so cofnyć: $5 ($6)",
+ "abusefilter-revert-search-legend": "Wubjer akcije znjewužiwanskeho filtra, kotrež maja so cofnyć",
+ "abusefilter-revert-periodstart": "Spočatk periody:",
+ "abusefilter-revert-periodend": "Kónc periody:",
+ "abusefilter-revert-search": "Akcije wubrać",
+ "abusefilter-revert-filter": "Filter:",
+ "abusefilter-revert-preview-intro": "Deleka su akcije, kotrež su so přez znjewužiwanski filter přewjedli, kotrež budu so přez tutu akciju cofnyć. Prošu kontroluj je starosćiwje a klikń na \"{{int:abusefilter-revert-confirm}}\", zo by swój wuběr wobkrućił.",
+ "abusefilter-revert-confirm": "Wobkrućić",
+ "abusefilter-revert-success": "Sy wšě akcije, kotrež znjewužiwanski filter je na zakładźe [[Special:AbuseFilter/$1|filter $2]] wuwjedł, cofnył.",
+ "abusefilter-revert-reason": "Awtomatiske cofnjenje wšěch akcijow, kotrež znjewužiwanski filter je na zakładźe filtra $1 wuwjedł.\nPodata přičina: $2",
+ "abusefilter-revert-reasonfield": "Přičina:",
+ "abusefilter-test": "Filter přećiwo předchadnym změnam testować",
+ "abusefilter-test-intro": "Tuta strona ći zmóžnja filter, kotryž je w slědowacym kašćiku zapodaty, přećiwo {{PLURAL:$1|poslednjej změnje|poslednimaj $1 změnomaj|poslednim $1 změnam}} kontrolować.\nZo by eksistowacy filter začitał, zapodaj jeho filtrowy ID do kašćika pod wobdźěłowanskim tekstowym kašćikom a klikń na tłóčatko \"{{int:abusefilter-test-load}}\".",
+ "abusefilter-test-legend": "Testowanje filtrow",
+ "abusefilter-test-load-filter": "Začitaj filter z ID:",
+ "abusefilter-test-submit": "Test",
+ "abusefilter-test-load": "Začitać",
+ "abusefilter-test-user": "Změny wot wužiwarja:",
+ "abusefilter-test-period-start": "Změny přewjedźene po:",
+ "abusefilter-test-period-end": "Změny přewjedźene do:",
+ "abusefilter-test-page": "Změny přewjedźene na stronje:",
+ "abusefilter-test-shownegative": "Změny pokazać, kotrež filtrej njewotpowěduja",
+ "abusefilter-test-syntaxerr": "Filter, kotryž sy zapodał, je syntaksowy zmylk wobsahował.\nPřez kliknjenje na tłóčatko \"{{int:abusefilter-edit-check}}\" móžeš połne wujasnjenje dóstać.",
+ "abusefilter-test-badtitle": "Titul strony, kotryž sy zapodał, je njepłaćiwy był. Wobsahuje snano znamješka, kotrež njehodźa so w titulu wužiwać.",
+ "abusefilter-changeslist-examine": "přepytować",
+ "abusefilter-examine": "Jednotliwe změny přepytować",
+ "abusefilter-examine-intro": "Tuta strona ći zmóžnja wariable přepytać, kotrež buchu wot znjewužiwanskeho filtra za jednotliwu změnu spłodźene a ju přećiwo filtram testować.",
+ "abusefilter-examine-legend": "Změny wubrać",
+ "abusefilter-examine-diff": "URL rozdźěla:",
+ "abusefilter-examine-user": "Wužiwar:",
+ "abusefilter-examine-title": "Titul strony:",
+ "abusefilter-examine-submit": "Pytać",
+ "abusefilter-examine-vars": "Za tutu změnu spłodźene wariable",
+ "abusefilter-examine-test": "Tutu změnu přećiwo filtrej testować",
+ "abusefilter-examine-test-button": "Filter testować",
+ "abusefilter-examine-match": "Filter je so k tutej změnje hodźał.",
+ "abusefilter-examine-nomatch": "Filter njeje k tutej změnje hodźał.",
+ "abusefilter-examine-syntaxerror": "Filter ma njepłaćiwu syntaksu",
+ "abusefilter-examine-notfound": "Změna, kotruž sy pozâdał, njeje so dała namakać.",
+ "abusefilter-examine-incompatible": "Změna, kotruž sy požadał, njewužiwa so přez znjewužiwanski filter",
+ "abusefilter-examine-noresults": "Za pytanske parametry, kotrež sy podał, njejsu žane wuslědki namakane.",
+ "abusefilter-topnav": "'''Nawigacija znjewužiwanskeho filtra'''",
+ "abusefilter-topnav-home": "Domoj",
+ "abusefilter-topnav-test": "Staplowe testowanje",
+ "abusefilter-topnav-examine": "Zańdźene změny přepruwować",
+ "abusefilter-topnav-log": "Protokol znjewužiwanjow",
+ "abusefilter-topnav-tools": "Nastroje za wotstronjenje zmylkow",
+ "abusefilter-topnav-import": "Fitler importować",
+ "abusefilter-log-name": "Protokol znjewužiwanskich filtrow",
+ "abusefilter-log-header": "Tutón protokol pokazuje zjeće změnow, kotrež buchu na filtrach přewjedźene.\nZa dospołne podrobnosće hlej [[Special:AbuseFilter/history|lisćinu]] njedawnych filtrowych změnow.",
+ "abusefilter-log-noresults": "Žane wuslědki",
+ "abusefilter-diff-title": "Rozdźěle mjez wersijemi",
+ "abusefilter-diff-item": "Zapisk",
+ "abusefilter-diff-version": "Wersija wot $1 {{GENDER:$3|wot}} $2",
+ "abusefilter-diff-info": "Zakładne informacije",
+ "abusefilter-diff-pattern": "Filtrowe wuměnjenja",
+ "abusefilter-diff-invalid": "Njemóžno požadane wersije wobstarać",
+ "abusefilter-diff-backhistory": "Wróćo k filtrowym stawiznam",
+ "abusefilter-diff-prev": "Starša změna",
+ "abusefilter-diff-next": "Nowša změna",
+ "abusefilter-import-intro": "Móžeš tutón interfejs wužiwać, zo by filtry z druhich wikijow importował.\nKlikń w žórłowym wikiju na \"{{int:abusefilter-edit-export}}\" pod \"{{int:abusefilter-edit-tools}}\" na wobdźěłowanskim interfejsu. Kopěruj z jewjaceho so tekstoweho pola do tutoho tekstoweho pola a klikń potom na \"{{int:abusefilter-import-submit}}\",",
+ "abusefilter-import-submit": "Daty importować",
+ "abusefilter-group-default": "Standard",
+ "abusefilter-http-error": "Zmylk wustupi: $1",
+ "apihelp-abusefilterchecksyntax-example-1": "Syntaksu płaćiweho filtra přepruwować",
+ "apihelp-abusefilterchecksyntax-example-2": "Syntaksu njepłaćiweho filtra přepruwować",
+ "apihelp-abusefilterunblockautopromote-param-user": "Mjeno wužiwarja, kotrehož chceš dopušćić"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/ht.json b/www/wiki/extensions/AbuseFilter/i18n/ht.json
new file mode 100644
index 00000000..81b09d45
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/ht.json
@@ -0,0 +1,10 @@
+{
+ "@metadata": {
+ "authors": [
+ "Masterches"
+ ]
+ },
+ "abusefilter-desc": "Aplike avètisman otomatik lè genyen modifikasyon",
+ "abusefilter": "Konfigirasyon filt tout abi yo",
+ "abuselog": "Jounal pou abi yo"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/hu.json b/www/wiki/extensions/AbuseFilter/i18n/hu.json
new file mode 100644
index 00000000..093fdda7
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/hu.json
@@ -0,0 +1,420 @@
+{
+ "@metadata": {
+ "authors": [
+ "Bdamokos",
+ "Bináris",
+ "Dani",
+ "Dj",
+ "Dunee",
+ "Glanthor Reviol",
+ "Misibacsi",
+ "Tacsipacsi",
+ "Tgr",
+ "Samat",
+ "Matma Rex",
+ "Wolf Rex"
+ ]
+ },
+ "abusefilter-desc": "Automatikus heurisztikát alkalmaz a szerkesztésekre.",
+ "abusefilter": "Vandálszűrő beállítása",
+ "abuselog": "Vandálszűrő-napló",
+ "abusefilter-intro": "Üdvözölünk a Vandálszűrő kezelőfelületén.\nA Vandálszűrő egy automatizált szoftver, ami minden műveletnél automatikus heurisztikát alkalmaz.\nItt tekintheted át és módosíthatod a szűrőket.",
+ "abusefilter-mustbeeditor": "Biztonsági okokból csak az erre feljogosított szerkesztők módosíthatják a szűrőket és használhatják ezt a felületet.",
+ "abusefilter-warning": "'''Figyelmeztetés:''' ez a művelet károsnak lett minősítve.\nA nem építő jellegű műveletek gyorsan vissza lesznek vonva,\na többszöri ilyen jellegű szerkesztés a felhasználói fiók vagy az IP-cím blokkolását vonja maga után.\nHa biztos vagy benne, hogy a szerkesztésed építő jellegű, kattints az Elküld gombra a megerősítéshez.\nA visszaélési szabály rövid leírása, amelynek az általad végzett művelet megfelelt: $1",
+ "abusefilter-disallowed": "Ez a művelet automatikusan károsnak lett minősítve, így\nnem hajtható végre.\nHa úgy gondolod, hogy az általad végzett művelet építő jellegű, lépj kapcsolatba egy adminisztrátorral, és jelezd neki, hogy mit szerettél volna csinálni.\nA visszaélési szabály rövid leírása, amelynek az általad végzett művelet megfelelt: $1",
+ "abusefilter-blocked-display": "Ez a művelet automatikusan károsnak lett minősítve,\nígy nem hajtható végre.\nA(z) {{SITENAME}} védelme érdekében a szerkesztői fiókodat és az összes hozzátartozó IP címet blokkoltuk.\nHa úgy gondolod, hogy a blokkolás egy rendszerhiba eredménye volt, lépj kapcsolatba egy adminisztrátorral, és jelezd neki, hogy mit szerettél volna csinálni.\nA visszaélési szabály rövid leírása, amelynek az általad végzett művelet megfelelt: $1",
+ "abusefilter-degrouped": "Ez a művelet automatikusan károsnak lett minősítve, ezért nem engedélyezzük. Mivel a felhasználói fiókodat valószínűleg ártó szándékkal használják, az összes szerkesztési jogodat felfüggesztettük.\nHa szerinted ez egy rendszerhiba eredménye volt, akkor lépj kapcsolatba egy bürokratával és magyarázd el neki, hogy mi történt.\nA bürokrata eldöntheti, hogy visszaállítsa-e a korábbi jogaidat.\nA visszaélési szabály rövid leírása, amelynek az általad végzett művelet megfelelt: $1",
+ "abusefilter-autopromote-blocked": "Ez a művelet automatikusan károsnak lett minősítve, így nem hajtható végre.\nBiztonsági okokból bizonyos jogaidat visszavontuk.\nA visszaélési szabály rövid leírása, amelynek az általad végzett művelet megfelelt: $1",
+ "abusefilter-blocker": "Vandálszűrő",
+ "abusefilter-blockreason": "A Vandálszűrő automatikusan blokkolt.\nA visszaélési szabály rövid leírása, amelynek az elvégzett művelet megfelel: $1",
+ "abusefilter-degroupreason": "A Vandálszűrő automatikusan visszavonta a jogokat.\nA visszaélési szabály rövid leírása: $1",
+ "abusefilter-accountreserved": "Ez a szerkesztői fiók a Vandálszűrőnek van fenntartva.",
+ "right-abusefilter-modify": "vandálszűrők módosítása",
+ "right-abusefilter-view": "vandálszűrők megtekintése",
+ "right-abusefilter-log": "a Vandálszűrő naplójának megtekintése",
+ "right-abusefilter-log-detail": "Részletes Vandálszűrő-naplóbejegyzések",
+ "right-abusefilter-private": "személyes adatok megtekintése a Vandálszűrő naplójában",
+ "right-abusefilter-private-log": "a Vandálszűrő privát részletei naplójának megtekintése",
+ "right-abusefilter-modify-restricted": "vandálszűrők módosítása korlátozott hozzáféréssel",
+ "right-abusefilter-revert": "Egy adott vandálszűrő által okozott összes változtatás visszavonása",
+ "right-abusefilter-view-private": "privátként megjelölt vandálszűrők megtekintése",
+ "right-abusefilter-log-private": "A vandálszűrő privátnak jelölt bejegyzéseinek megjelenítése",
+ "right-abusefilter-hide-log": "bejegyzések elrejtése a vandálszűrő naplójában",
+ "right-abusefilter-hidden-log": "a vandálszűrő-napló rejtett bejegyzéseinek megtekintése",
+ "right-abusefilter-modify-global": "Globális vandálszűrők létrehozása vagy módosítása",
+ "action-abusefilter-modify": "vandálszűrők módosítása",
+ "action-abusefilter-view": "vandálszűrők megtekintése",
+ "action-abusefilter-log": "a Vandálszűrő naplójának megtekintése",
+ "action-abusefilter-log-detail": "a Vandálszűrő részletes naplójának megtekintése",
+ "action-abusefilter-private": "a Vandálszűrő naplójának privát adatokat tartalmazó részének megtekintése",
+ "action-abusefilter-private-log": "a Vandálszűrő privát részletei naplójának megtekintése",
+ "action-abusefilter-modify-restricted": "vandálszűrők korlátozott szerkesztése",
+ "action-abusefilter-revert": "egy adott vandálszűrő módosításainak visszavonása",
+ "action-abusefilter-view-private": "privátként megjelölt vandálszűrők megtekintése",
+ "abusefilter-log": "Vandálszűrő-napló",
+ "abusefilter-log-summary": "Ezen a lapon láthatóak a vandálszűrők által elkapott műveletek.",
+ "abusefilter-log-search": "Keresés a Vandálszűrő naplójában",
+ "abusefilter-log-search-user": "Szerkesztő:",
+ "abusefilter-log-search-filter": "Szűrőazonosítók (függőleges vonallal elválasztva):",
+ "abusefilter-log-search-title": "Cím:",
+ "abusefilter-log-search-wiki": "Wiki:",
+ "abusefilter-log-search-impact": "Hatás:",
+ "abusefilter-log-search-impact-all": "Minden művelet",
+ "abusefilter-log-search-impact-saved": "Csak mentett változtatások",
+ "abusefilter-log-search-impact-not-saved": "Mentett változtatások nélkül",
+ "abusefilter-log-search-entries-label": "Láthatóság:",
+ "abusefilter-log-search-entries-all": "Minden bejegyzés",
+ "abusefilter-log-search-entries-hidden": "Csak rejtett bejegyzések",
+ "abusefilter-log-search-entries-visible": "Csak látható bejegyzések",
+ "abusefilter-log-search-action-taken-label": "Végzett művelet:",
+ "abusefilter-log-search-action-taken-any": "Mind",
+ "abusefilter-log-search-submit": "Keresés",
+ "abusefilter-log-entry": "$1: $2 „$3” műveletével {{GENDER:$8|beindított}} egy vandálszűrőt a(z) $4 oldalon.\nElvégzett intézkedések: $5;\nA vandálszűrő leírása: $6",
+ "abusefilter-log-entry-withdiff": "$1: $2 „$3” műveletével {{GENDER:$8|beindított}} egy vandálszűrőt a(z) $4 oldalon.\nElvégzett intézkedések: $5;\nA vandálszűrő leírása: $6 ($7)",
+ "abusefilter-log-detailedentry-meta": "$1: $2 „$4” műveletével {{GENDER:$9|beindította}} a(z) $3 a(z) $5 lapon.\nVégrehajtott intézkedések: $6;\nA vandálszűrő leírása: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "$1 azonosítójú globális szűrőt",
+ "abusefilter-log-detailedentry-local": "$1 azonosítójú szűrőt",
+ "abusefilter-log-detailslink": "részletek",
+ "abusefilter-log-diff": "eltérés",
+ "abusefilter-log-hidelink": "láthatóság beállítása",
+ "abusefilter-log-details-legend": "A(z) $1 naplóbejegyzés részletei",
+ "abusefilter-log-details-var": "Változó",
+ "abusefilter-log-details-val": "Érték",
+ "abusefilter-log-details-vars": "Műveletparaméterek",
+ "abusefilter-log-details-private": "Személyes adatok",
+ "abusefilter-log-details-ip": "IP-cím",
+ "abusefilter-log-noactions": "nem történt",
+ "abusefilter-log-details-diff": "Szerkesztés során elvégzett változtatások",
+ "abusefilter-log-linkoncontribs": "vandálszűrő naplója",
+ "abusefilter-log-linkoncontribs-text": "A {{GENDER:$1|szerkesztő}} Vandálszűrő-naplója",
+ "abusefilter-log-hidden": "(bejegyzés elrejtve)",
+ "abusefilter-log-hidden-implicit": "(rejtett mivel a változat törölve lett)",
+ "abusefilter-log-cannot-see-details": "Nincs jogosultságod a bejegyzés részleteinek megjelenítéséhez.",
+ "abusefilter-log-details-hidden": "Ennek a tételnek a láthatósága \"rejtett\", ezért a nyilvánosság számára nem látható.",
+ "abusefilter-log-private-not-included": "Egy vagy több szűrőazonosító privát. Mivel nem engedélyezett számodra a privát szűrők részleteinek megtekintése, ezek a szűrők ki lettek hagyva a keresésből.",
+ "abusefilter-log-hide-legend": "Naplóbejegyzés elrejtése",
+ "abusefilter-log-hide-id": "A tétel azonosítója:",
+ "abusefilter-log-hide-hidden": "Ennek a tételnek az elrejtése a nyilvánosság elől.",
+ "abusefilter-log-hide-reason": "Indoklás:",
+ "abusefilter-log-hide-forbidden": "Nincs jogosultságod elrejteni ezeket a tételeket.",
+ "abusefilter-logentry-suppress": "rejtve \"[[$1]]\"",
+ "abusefilter-logentry-unsuppress": "felfedve \"[[$1]]\"",
+ "logentry-abusefilter-hit": "$1 „$5” műveletével {{GENDER:$2|beindította}} a(z) $4 vandálszűrőt a(z) $3 oldalon. Elvégzett intézkedések: $6 ($7)",
+ "log-action-filter-abusefilter": "Szűrőváltoztatás típusa:",
+ "log-action-filter-abusefilter-create": "Új szűrő létrehozása",
+ "log-action-filter-abusefilter-modify": "Szűrő módosítása",
+ "abusefilter-management": "Vandálszűrő-kezelés",
+ "abusefilter-list": "Az összes szűrő",
+ "abusefilter-list-id": "Szűrőazonosító",
+ "abusefilter-list-status": "Állapot",
+ "abusefilter-list-public": "Publikus leírás",
+ "abusefilter-list-consequences": "Következmények",
+ "abusefilter-list-visibility": "Láthatóság",
+ "abusefilter-list-hitcount": "Számláló",
+ "abusefilter-list-edit": "Szerkesztés",
+ "abusefilter-list-details": "Részletek",
+ "abusefilter-list-limit": "Oldalanként:",
+ "abusefilter-list-lastmodified": "Utolsó módosítás",
+ "abusefilter-list-group": "Szűrőcsoport",
+ "abusefilter-hidden": "Privát",
+ "abusefilter-unhidden": "Nyilvános",
+ "abusefilter-enabled": "Bekapcsolva",
+ "abusefilter-deleted": "Törölve",
+ "abusefilter-disabled": "Kikapcsolva",
+ "abusefilter-hitcount": "$1 ×",
+ "abusefilter-new": "Új szűrő",
+ "abusefilter-return": "Vissza a szűrők áttekintéséhez",
+ "abusefilter-status-global": "Globális",
+ "abusefilter-list-options": "Beállítások",
+ "abusefilter-list-options-deleted": "Törölt szűrők:",
+ "abusefilter-list-options-deleted-only": "Csak a törölt szűrőket mutassa",
+ "abusefilter-list-options-deleted-hide": "Törölt szűrők elrejtése",
+ "abusefilter-list-options-deleted-show": "A törölt szűrőket is mutassa",
+ "abusefilter-list-options-scope": "Szűrők megjelenítése:",
+ "abusefilter-list-options-scope-local": "Csak helyi szabályok",
+ "abusefilter-list-options-scope-global": "Csak globális szabályok",
+ "abusefilter-list-options-scope-all": "Helyi és globális szabályok",
+ "abusefilter-list-options-disabled": "Kikapcsolt szűrők:",
+ "abusefilter-list-options-hidedisabled": "Kikapcsolt szűrők elrejtése",
+ "abusefilter-list-options-submit": "Frissítés",
+ "abusefilter-tools-text": "Egy pár eszköz a vandálszűrők kialakításához és hibakereséséhez.",
+ "abusefilter-tools-expr": "Expression tesztelő",
+ "abusefilter-tools-submitexpr": "Kiértékel",
+ "abusefilter-tools-reautoconfirm": "Megerősített állapot visszaállítása",
+ "abusefilter-tools-reautoconfirm-user": "Szerkesztő:",
+ "abusefilter-tools-reautoconfirm-submit": "Újbóli megerősítés",
+ "abusefilter-reautoconfirm-none": "Ennek a szerkesztőnek nem függesztették fel a megerősített státuszát",
+ "abusefilter-reautoconfirm-notallowed": "Nincs jogosultságod a megerősített státusz visszaállítására.",
+ "abusefilter-reautoconfirm-done": "A szerkesztő megerősített státusza visszaállításra került",
+ "abusefilter-status": "Az előző $1 műveletből $2 ($3%) érte el a beállított $4 feltételkorlátot, és $5 ($6%) akadt fenn a jelenleg bekapcsolt szűrők egyikén.",
+ "abusefilter-edit": "Vandálszűrő szerkesztése",
+ "abusefilter-edit-subtitle": "A(z) $1 szűrő szerkesztése",
+ "abusefilter-edit-subtitle-new": "Szűrő létrehozása",
+ "abusefilter-edit-oldwarning": "<strong>Most a szűrő egyik régebbi változatát szerkeszted. A megjelölt statisztikák a szűrő jelenlegi állapotát tükrözik. Ha elmented a változtatásokat, akkor azzal az összes köztes változatot felülírod.</strong> &bull; [[Special:AbuseFilter/history/$2|Vissza a szűrő laptörténetébe]].",
+ "abusefilter-edit-status-label": "Statisztikák:",
+ "abusefilter-edit-status": "{{PLURAL:$1|A legutolsó művelet esetén|Az utolsó $1 műveletnél}} ez a szűrő $2 ($3%) alkalommal talált egyezést.",
+ "abusefilter-edit-status-profile": "{{PLURAL:$1|A legutolsó művelet esetén|Az utolsó $1 műveletnél}} ez a szűrő $2 ($3%) alkalommal talált egyezést.\nAz átlagos futási ideje $4 ms volt, és {{PLURAL:$5|egy|$5}} feltételt használt fel a feltételhatárból.",
+ "abusefilter-edit-new": "Új szűrő",
+ "abusefilter-edit-save": "Szűrő mentése",
+ "abusefilter-edit-id": "Szűrő azonosítója:",
+ "abusefilter-edit-description": "Leírás:\n:''(mindenki számára látható)''",
+ "abusefilter-edit-group": "Szűrőcsoport:",
+ "abusefilter-edit-flags": "Tulajdonságok:",
+ "abusefilter-edit-enabled": "A szűrő bekapcsolása",
+ "abusefilter-edit-deleted": "Szűrő töröltnek jelölése",
+ "abusefilter-edit-hidden": "A szűrő adatainak elrejtése",
+ "abusefilter-edit-global": "Globális szűrő",
+ "abusefilter-edit-rules": "Feltételek:",
+ "abusefilter-edit-notes": "Megjegyzések:",
+ "abusefilter-edit-lastmod": "Utoljára módosította:",
+ "abusefilter-edit-lastmod-text": "$2, $1-kor",
+ "abusefilter-edit-hitcount": "Találatok:",
+ "abusefilter-edit-consequences": "Egyezés esetén végrehajtandó műveletek",
+ "abusefilter-edit-action-warn": "Műveletek végrehajtása, miután a szerkesztő kapott egy üzenetet",
+ "abusefilter-edit-action-disallow": "A szerkesztő nem hajthatja végre a kérdéses műveletet",
+ "abusefilter-edit-action-blockautopromote": "A szerkesztő autoconfirmed állapotának visszavonása",
+ "abusefilter-edit-action-degroup": "A szerkesztő összes jogosultságának eltávolítása",
+ "abusefilter-edit-action-block": "Szerkesztő vagy IP-cím blokkolása",
+ "abusefilter-edit-action-throttle": "Műveletek végrehajtása akkor, ha a szerkesztő átlép egy határt",
+ "abusefilter-edit-action-rangeblock": "A /16-os tartomány blokkolása, ahonnan a szerkesztő származik.",
+ "abusefilter-edit-action-tag": "Szerkesztés felcímkézése későbbi ellenőrzésre.",
+ "abusefilter-edit-throttle-count": "Engedélyezett műveletek száma:",
+ "abusefilter-edit-throttle-period": "Időtartam:",
+ "abusefilter-edit-throttle-seconds": "{{PLURAL:$1|egy|$1}} másodperc",
+ "abusefilter-edit-throttle-groups": "Érintett csoportok:\n:''(soronként egy, csoportosítás vesszővel)''",
+ "abusefilter-edit-warn-message": "Figyelmeztetéshez használt rendszerüzenet:",
+ "abusefilter-edit-warn-other": "Más üzenet",
+ "abusefilter-edit-warn-other-label": "A másik rendszerüzenet neve:\n:''(a MediaWiki-előtag nélkül)''",
+ "abusefilter-edit-warn-actions": "Műveletek:",
+ "abusefilter-edit-warn-preview": "Kiválasztott üzenet előnézete",
+ "abusefilter-edit-warn-edit": "Kiválasztott üzenet létrehozása / szerkesztése",
+ "abusefilter-edit-tag-tag": "[[Special:Tags|Címkék]] (soronként egy):",
+ "abusefilter-edit-denied": "Nem tekintheted meg a szűrő tulajdonságait, mert el vannak rejtve a nyilvánosság elől.",
+ "abusefilter-edit-main": "A szűrő tulajdonságai",
+ "abusefilter-edit-done-subtitle": "A szűrő módosítva",
+ "abusefilter-edit-done": "Sikeresen [[Special:AbuseFilter/history/$1/diff/prev/$2|megváltoztattad]] a(z) [[Special:AbuseFilter/$1|$3]] szűrő tulajdonságait.",
+ "abusefilter-edit-badsyntax": "Szintaktikai hiba található az általad megadott szűrőben.\nAz elemző kimenete a következő volt: <pre>$1</pre>",
+ "abusefilter-edit-restricted": "Nem szerkesztheted a szűrőt, mert az egy vagy több korlátozott hozzáférésű műveletet tartalmaz.\nKérj meg egy megfelelő jogosultságokkal rendelkező szerkesztőt, hogy végezze el számodra a változtatást.",
+ "abusefilter-edit-viewhistory": "A szűrő előzményeinek megtekintése",
+ "abusefilter-edit-history": "Előzmények:",
+ "abusefilter-edit-check": "Szintaktika ellenőrzése",
+ "abusefilter-edit-badfilter": "Az általad megadott szűrő nem létezik",
+ "abusefilter-edit-revert": "A szűrő által végrehajtott műveletek visszavonása",
+ "abusefilter-edit-tools": "Eszközök:",
+ "abusefilter-edit-test-link": "Szűrő tesztelése a friss szerkesztéseken",
+ "abusefilter-edit-export": "Szűrő exportálása egy másik wikibe",
+ "abusefilter-edit-syntaxok": "Nincs szintaktikai hiba.",
+ "abusefilter-edit-syntaxerr": "Szintaktikai hiba: $1",
+ "abusefilter-edit-bad-tags": "Egy vagy több megadott címke nem érvényes.\nA címkéknek rövidnek kell lenniük, nem tartalmazhatnak speciális karaktereket, és nem lehetnek más szoftver számára fenntartottak. Próbálj új címkenevet választani.",
+ "abusefilter-edit-notallowed": "Nincs engedélyed visszaélési szabályok létrehozására vagy módosítására",
+ "abusefilter-edit-notallowed-global": "Nincs engedélyed globális vandálszűrők létrehozására vagy módosítására",
+ "abusefilter-edit-builder-select": "A kurzornál való beszúráshoz válassz egy opciót",
+ "abusefilter-edit-builder-group-op-arithmetic": "Aritmetikai operátorok",
+ "abusefilter-edit-builder-op-arithmetic-addition": "összeadás (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "kivonás (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "szorzás (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "osztás (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "maradékképzés (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "hatványozás (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Összehasonlító operátorok",
+ "abusefilter-edit-builder-op-comparison-equal": "egyenlő (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "nem egyenlő (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "kisebb (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "nagyobb (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "kisebb vagy egyenlő (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "nagyobb vagy egyenlő (>=)",
+ "abusefilter-edit-builder-group-op-bool": "Logikai operátorok",
+ "abusefilter-edit-builder-op-bool-not": "nem (!)",
+ "abusefilter-edit-builder-op-bool-and": "és (&)",
+ "abusefilter-edit-builder-op-bool-or": "vagy (|)",
+ "abusefilter-edit-builder-group-misc": "Általános",
+ "abusefilter-edit-builder-misc-in": "szöveg tartalmazza (in)",
+ "abusefilter-edit-builder-misc-like": "illeszkedés reguláris kifejezésre (like)",
+ "abusefilter-edit-builder-misc-rlike": "megfelel az (rlike) regexnek",
+ "abusefilter-edit-builder-misc-irlike": "megfelel a nem kisbetű/nagybetű-érzékeny (irlike) regexnek",
+ "abusefilter-edit-builder-misc-contains": "A baloldali sztring tartalmazza a jobboldali sztringet (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "sztring literál (\"\")",
+ "abusefilter-edit-builder-misc-tern": "ternáris operátor (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "feltételes (ha X akkor Y egyébként Z)",
+ "abusefilter-edit-builder-group-funcs": "Függvények",
+ "abusefilter-edit-builder-funcs-length": "sztring hossza (length)",
+ "abusefilter-edit-builder-funcs-lcase": "kisbetűssé alakítás (lcase)",
+ "abusefilter-edit-builder-funcs-ucase": "nagybetűssé alakítás (ucase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "összetéveszthető karakterek normalizálása (ccnorm)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "duplakarakterek eltávolítása (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "speciális karakterek / összes karakter (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "normalizálás (norm)",
+ "abusefilter-edit-builder-funcs-count": "az X sztring szerepléseinek száma az Y sztringben (count)",
+ "abusefilter-edit-builder-funcs-rcount": "az X regex megjelenéseinek száma az Y sztringben (rcount)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "felesleges szóközök eltávolítása (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "különleges karakterek eltávolítása (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "a megadott IP-tartományba tartozik? (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "sztringben több részsztring keresése (contains_any)",
+ "abusefilter-edit-builder-funcs-substr": "részsztring (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "részsztring helye a sztringen belül (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "részsztring cseréje a sztringre (str_replace)",
+ "abusefilter-edit-builder-funcs-rescape": "Sztring átalakítása szöveggé a regex-ben (rescape)",
+ "abusefilter-edit-builder-funcs-set_var": "változó értékének megadása (set_var)",
+ "abusefilter-edit-builder-group-vars": "Változók",
+ "abusefilter-edit-builder-vars-accountname": "szerkesztői fiók neve (fióklétrehozáskor)",
+ "abusefilter-edit-builder-vars-timestamp": "a változás Unix-időbélyege",
+ "abusefilter-edit-builder-vars-action": "művelet",
+ "abusefilter-edit-builder-vars-addedlines": "a szerkesztés során hozzáadott sorok száma",
+ "abusefilter-edit-builder-vars-delta": "a szerkesztés során történt méretváltozás",
+ "abusefilter-edit-builder-vars-diff": "a szerkesztés során történt változások Unified diffje",
+ "abusefilter-edit-builder-vars-newsize": "új lapméret",
+ "abusefilter-edit-builder-vars-oldsize": "régi lapméret",
+ "abusefilter-edit-builder-vars-removedlines": "a szerkesztés során eltávolított sorok száma",
+ "abusefilter-edit-builder-vars-summary": "szerkesztési összefoglaló",
+ "abusefilter-edit-builder-vars-article-id": "oldalazonosító",
+ "abusefilter-edit-builder-vars-article-ns": "lap névtere",
+ "abusefilter-edit-builder-vars-article-text": "lap címe (névtér nélkül)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "a lap teljes címe",
+ "abusefilter-edit-builder-vars-movedfrom-id": "átnevezésnél a forráslap azonosítója",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "átnevezésnél a forráslap névtere",
+ "abusefilter-edit-builder-vars-movedfrom-text": "átnevezésnél a forráslap címe",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "átnevezésnél a forráslap teljes címe",
+ "abusefilter-edit-builder-vars-movedto-id": "átnevezésnél a céllap azonosítója",
+ "abusefilter-edit-builder-vars-movedto-ns": "átnevezésnél a céllap névtere",
+ "abusefilter-edit-builder-vars-movedto-text": "átnevezésnél a céllap címe",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "átnevezésnél a céllap teljes címe",
+ "abusefilter-edit-builder-vars-user-editcount": "a szerkesztő szerkesztéseinek száma",
+ "abusefilter-edit-builder-vars-user-age": "a szerkesztő életkora",
+ "abusefilter-edit-builder-vars-user-name": "a szerkesztő neve",
+ "abusefilter-edit-builder-vars-user-groups": "a szerkesztő csoportjai (beleértve az implicit csoportokat is)",
+ "abusefilter-edit-builder-vars-user-rights": "Felhasználó jogai",
+ "abusefilter-edit-builder-vars-user-blocked": "Ha a felhasználó blokkolva van",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "az e-mail-cím megerősítésének ideje",
+ "abusefilter-edit-builder-vars-recent-contributors": "a lap utolsó tíz szerkesztője",
+ "abusefilter-edit-builder-vars-first-contributor": "Az első közreműködő ezen az oldalon",
+ "abusefilter-edit-builder-vars-all-links": "az új szövegben lévő összes hivatkozás",
+ "abusefilter-edit-builder-vars-added-links": "hozzáadott hivatkozások",
+ "abusefilter-edit-builder-vars-removed-links": "eltávolított hivatkozások",
+ "abusefilter-edit-builder-vars-old-text": "a régi wikiszöveg",
+ "abusefilter-edit-builder-vars-new-text": "az új wikiszöveg",
+ "abusefilter-edit-builder-vars-new-text-stripped": "az új wikiszöveg, jelölőnyelv nélkül",
+ "abusefilter-edit-builder-vars-new-html": "az új változat HTML-lé alakított kódja",
+ "abusefilter-edit-builder-vars-restrictions-edit": "a lap védelmi szintje (szerkesztésnél)",
+ "abusefilter-edit-builder-vars-restrictions-move": "a lap védelmi szintje (átnevezésnél)",
+ "abusefilter-edit-builder-vars-restrictions-create": "a lap védelmi szintje (létrehozáskor)",
+ "abusefilter-edit-builder-vars-restrictions-upload": "fájl védelmi szinte (feltöltéskor)",
+ "abusefilter-edit-builder-vars-old-text-stripped": "A régi lap szövege, jelölőnyelv nélkül",
+ "abusefilter-edit-builder-vars-old-links": "Az oldal hivatkozásai a szerkesztés előtt",
+ "abusefilter-edit-builder-vars-old-html": "A régi oldal wikiszövege HTML-ben",
+ "abusefilter-edit-builder-vars-minor-edit": "Apró változtatás?",
+ "abusefilter-edit-builder-vars-file-sha1": "A fájl tartalmának SHA1 hash-se",
+ "abusefilter-edit-builder-vars-file-size": "A fájl mérete bájtokban",
+ "abusefilter-filter-log": "Friss változtatások a szűrőkön",
+ "abusefilter-history": "A(z) $1 azonosítójú szűrő módosításainak előzménye",
+ "abusefilter-history-foruser": "$1 módosításai",
+ "abusefilter-history-hidden": "rejtett",
+ "abusefilter-history-enabled": "engedélyezett",
+ "abusefilter-history-global": "Globális",
+ "abusefilter-history-timestamp": "Idő",
+ "abusefilter-history-user": "Szerkesztő",
+ "abusefilter-history-public": "Nyilvános leírás",
+ "abusefilter-history-flags": "Címkék",
+ "abusefilter-history-filter": "Szabály",
+ "abusefilter-history-comments": "Megjegyzések",
+ "abusefilter-history-actions": "Műveletek",
+ "abusefilter-history-backedit": "Vissza a szűrőszerkesztőhöz",
+ "abusefilter-history-deleted": "törölve",
+ "abusefilter-history-filterid": "Szűrő",
+ "abusefilter-history-select-legend": "Keresés szűkítése",
+ "abusefilter-history-select-user": "Szerkesztő:",
+ "abusefilter-history-select-submit": "Szűkítés",
+ "abusefilter-history-diff": "Változások",
+ "abusefilter-history-error-hidden": "A kért szűrő rejtett, ezért az előzményeket nem nézheted meg.",
+ "abusefilter-exception-unexpectedatend": "Nem várt „$2” a(z) $1. karakternél.",
+ "abusefilter-exception-expectednotfound": "A(z) $1. karakternél $2 következett volna, de az nem található (helyette $3 $4 van).",
+ "abusefilter-exception-unrecognisedkeyword": "Ismeretlen kulcsszó ($2) a(z) $1. karakternél.",
+ "abusefilter-exception-unexpectedtoken": "Nem várt „$3” ($2 típusú) token a(z) $1. karakternél.",
+ "abusefilter-exception-unclosedstring": "Lezáratlan sztring kezdődik a(z) $1. karaktertől.",
+ "abusefilter-exception-invalidoperator": "Érvénytelen operátor („$2”) a(z) $1. karakternél.",
+ "abusefilter-exception-unrecognisedtoken": "Érvénytelen token („$2”) a(z) $1. karakternél.",
+ "abusefilter-exception-noparams": "Nem lett átadva paraméter a(z) „$2” függvény számára a(z) $1. karakternél.",
+ "abusefilter-exception-dividebyzero": "$2 nullával való osztása a(z) $1. karakternél.",
+ "abusefilter-exception-unrecognisedvar": "Ismeretlen változó ($2) a(z) $1. karakternél",
+ "abusefilter-exception-notenoughargs": "A(z) $1 karakternél meghívott $2 függvénynek nincsen elég argumentuma: $3 helyett $4 van.",
+ "abusefilter-exception-regexfailure": "A(z) „$3” regex hibás a(z) $1. karakternél: „$2”",
+ "abusefilter-exception-overridebuiltin": "A(z) $1. karakternél a „$2” beépített változó felülírása nem engedélyezett.",
+ "abusefilter-exception-outofbounds": "A(z) $1. karakternél nem létező, $2. számú listatagra található hivatkozás, de az egész lista csak $3 hosszú.",
+ "abusefilter-exception-notlist": "A(z) $1. karakternél a függvény tömbbe nem tartozó tömbtagot kér.",
+ "abusefilter-action-tag": "felcímkézés",
+ "abusefilter-action-throttle": "Szerkesztési sebesség",
+ "abusefilter-action-warn": "figyelmeztetés",
+ "abusefilter-action-blockautopromote": "Autopromote blokkolása",
+ "abusefilter-action-block": "blokkolás",
+ "abusefilter-action-degroup": "jogosultságok eltávolítása",
+ "abusefilter-action-rangeblock": "tartományblokk",
+ "abusefilter-action-disallow": "Megtagadás",
+ "abusefilter-revert-title": "A(z) $1. szűrő által okozott változtatások visszavonása",
+ "abusefilter-revert-intro": "Ez az űrlap lehetővé teszi számodra, hogy visszaállíts minden olyan változtatást, amit a vandálszűrő hajtott végre a(z) $1. szűrő alapján.\nBánj óvatosan az eszköz használatakor.",
+ "abusefilter-revert-preview-item": "$1: $2 a $4 lapon ($3)\nVisszavonásra váló műveletek: $5 ($6)",
+ "abusefilter-revert-search-legend": "Visszavonandó vandálszűrő műveletek kiválasztása",
+ "abusefilter-revert-periodstart": "Időszak kezdete:",
+ "abusefilter-revert-periodend": "Időszak vége:",
+ "abusefilter-revert-search": "Műveletek kiválasztása",
+ "abusefilter-revert-filter": "Szűrő:",
+ "abusefilter-revert-preview-intro": "Ez a művelet a vandálszűrő alábbi műveleteit fogja visszavonni.\nAlaposan nézd át, hogy mi fog történni, és csak utána kattints a „{{int:abusefilter-revert-confirm}}” gombra.",
+ "abusefilter-revert-confirm": "Megerősítés",
+ "abusefilter-revert-success": "A(z) [[Special:AbuseFilter/$1|$2 szűrő]] miatt visszavontad a vandálszűrő összes műveletét.",
+ "abusefilter-revert-reason": "A(z) $1 szűrő miatt a vandálszűrő összes művelete automatikus visszavonásra kerül.\nIndoklás: $2",
+ "abusefilter-revert-reasonfield": "Indoklás:",
+ "abusefilter-test": "Szűrő kipróbálása korábbi szerkesztésekkel",
+ "abusefilter-test-intro": "Ezen a lapon a lenti szövegdobozba beírt szűrő eredményességét próbálhatod ki az utolsó $1 szerkesztésen.\nLétező szűrő betöltéséhez a szerkesztési mező alá írd be a szűrő számát és kattints a „{{int:abusefilter-test-load}}” gombra.",
+ "abusefilter-test-legend": "Szűrő tesztelése",
+ "abusefilter-test-load-filter": "Szűrő azonosító szerinti betöltése:",
+ "abusefilter-test-submit": "Na mutasd!",
+ "abusefilter-test-load": "Betöltés",
+ "abusefilter-test-user": "Szerkesztő változtatásai:",
+ "abusefilter-test-period-start": "Ez utáni változtatások:",
+ "abusefilter-test-period-end": "Ez előtti változtatások:",
+ "abusefilter-test-page": "Az oldal változtatásai:",
+ "abusefilter-test-shownegative": "A szűrőn fenn nem akadt változtatások megmutatása",
+ "abusefilter-test-syntaxerr": "A beírt szűrőd szintaktikai hibát tartalmaz.\nA hiba részletes leírásához kattints az „{{int:abusefilter-edit-check}}” gombra.",
+ "abusefilter-test-badtitle": "A megadott cím érvénytelen. Egy vagy több olyan karaktert tartalmaz, amely nem lehet címben.",
+ "abusefilter-changeslist-examine": "megvizsgál",
+ "abusefilter-examine": "Egyedi változtatások megvizsgálása",
+ "abusefilter-examine-intro": "Ezen az oldalon megnézheted, hogy a vandálszűrő egy adott változtatásra milyen változókat generál, majd ezeket átfuttathatod a szűrőkön.",
+ "abusefilter-examine-legend": "Változások kiválasztása",
+ "abusefilter-examine-diff": "Difflink:",
+ "abusefilter-examine-user": "Szerkesztő:",
+ "abusefilter-examine-title": "Lap címe:",
+ "abusefilter-examine-submit": "Keresés",
+ "abusefilter-examine-vars": "A változtatásra generált változók",
+ "abusefilter-examine-test": "A változtatás átfuttatása egy szűrőn",
+ "abusefilter-examine-test-button": "Szűrő tesztelése",
+ "abusefilter-examine-match": "A szűrőn fennakadt ez a változtatás.",
+ "abusefilter-examine-nomatch": "A szűrőn nem akadt fenn ez a változtatás.",
+ "abusefilter-examine-syntaxerror": "A szűrő szintaktikailag hibás",
+ "abusefilter-examine-notfound": "A kért változtatás nem található.",
+ "abusefilter-examine-incompatible": "A kért változtatást a vandálszűrő nem támogatja",
+ "abusefilter-examine-noresults": "A megadott keresési paraméterre nincsen eredmény.",
+ "abusefilter-topnav": "'''Vandálszűrő navigáció'''",
+ "abusefilter-topnav-home": "Főoldal",
+ "abusefilter-topnav-test": "Kötegelt vizsgálatok",
+ "abusefilter-topnav-examine": "Korábbi szerkesztések megvizsgálása",
+ "abusefilter-topnav-log": "Vandálszűrő naplója",
+ "abusefilter-topnav-tools": "Hibakereső eszközök",
+ "abusefilter-topnav-import": "Szűrő importálása",
+ "abusefilter-log-name": "Vandálszűrő naplója",
+ "abusefilter-log-header": "Ebben a naplóban a szűrőkön végzett változtatások története található. A részletekhez lásd [[Special:AbuseFilter/history|a friss szűrőváltoztatások]] oldalát.",
+ "abusefilter-log-noresults": "Nincs találat",
+ "abusefilter-diff-title": "Változatok közötti különbségek",
+ "abusefilter-diff-item": "Tétel",
+ "abusefilter-diff-version": "$2 {{GENDER:$3|változata}} ($1)",
+ "abusefilter-diff-info": "Alapvető információk",
+ "abusefilter-diff-pattern": "Szűrő feltételek",
+ "abusefilter-diff-invalid": "A kért változatokat nem lehet beolvasni",
+ "abusefilter-diff-backhistory": "Vissza a szűrőelőzményekhez",
+ "abusefilter-diff-prev": "Régebbi változás",
+ "abusefilter-diff-next": "Újabb változás",
+ "abusefilter-import-intro": "Ezen a felületen más wikikben készült szűrőket lehet importálni.\nA forráswikin a „{{int:abusefilter-edit-tools}}” alatt kattints az „{{int:abusefilter-edit-export}}” gombra.\nA megjelent szövegdoboz tartalmát ebbe a szövegdobozba másold át, majd kattints az „{{int:abusefilter-import-submit}}” gombra.",
+ "abusefilter-import-submit": "Adatok importálása",
+ "abusefilter-group-default": "Alapértelmezett",
+ "abusefilter-http-error": "HTTP hiba történt: $1",
+ "apihelp-abusefiltercheckmatch-description": "vars, rcid vagy logid szükséges, de csak egyet lehet használni.",
+ "apihelp-query+abusefilters-example-1": "Az engedélyezett nyilvános szűrők listázása.",
+ "apihelp-query+abuselog-example-1": "Friss naplóbejegyzések mutatása"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/hy.json b/www/wiki/extensions/AbuseFilter/i18n/hy.json
new file mode 100644
index 00000000..8a544924
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/hy.json
@@ -0,0 +1,10 @@
+{
+ "@metadata": {
+ "authors": [
+ "Vadgt",
+ "Xelgen"
+ ]
+ },
+ "abusefilter-disallowed": "Այս գործողությունը կանխվեց ավտոմատ համակարգի կողմից, որպես վնասակար։\nԵթե կարծում եք, որ Ձեր կատարած գործողությունը կառուցողական է, խնդրում ենք ադմինիստրատորներից մեկին տեղյակ պահել, թե ինչ էիք մտադիր անել։ \nԿանոնի հակիրճ նկարագրությունը հետևյալն է՝ $1",
+ "abusefilter-edit-notes": "Նշումներ՝"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/ia.json b/www/wiki/extensions/AbuseFilter/i18n/ia.json
new file mode 100644
index 00000000..ca83971e
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/ia.json
@@ -0,0 +1,456 @@
+{
+ "@metadata": {
+ "authors": [
+ "McDutchie",
+ "Matma Rex"
+ ]
+ },
+ "abusefilter-desc": "Applica heuristicas automatic al modificationes.",
+ "abusefilter": "Configuration del filtros anti-abuso",
+ "abuselog": "Registro de abusos",
+ "abusefilter-intro": "Benvenite al interfacie de gestion del filtro anti-abuso.\nLe filtro anti-abuso es un mechanismo automatic de software pro applicar heuristicas automatic a tote le actiones.\nIste interfacie monstra un lista de filtros definite, e permitte modificar los.",
+ "abusefilter-mustbeeditor": "Pro motivos de securitate, solmente le usatores con le permission de modificar le filtros anti-abuso pote usar iste interfacie.",
+ "abusefilter-warning": "'''Attention:''' Iste action ha essite automaticamente identificate como damnose.\nTote actiones non constructive essera rapidemente revertite,\ne le modification non constructive flagrante o repetite resultara in le blocada de tu conto o adresse IP.\nSi tu crede que iste action es constructive, tu pote submitter lo de novo pro confirmar lo.\nEcce un breve description del regula anti-abuso que detegeva tu action: $1",
+ "abusefilter-disallowed": "Iste action ha essite automaticamente identificate como damnose,\ne per consequente es prohibite.\nSi tu crede que tu action esseva constructive, per favor informa un administrator de lo que tu tentava facer.\nUn breve description del regula anti-abuso correspondente a tu action es: $1",
+ "abusefilter-blocked-display": "Iste action ha essite automaticamente identificate como nocive,\ne tu ha essite impedite de executar lo.\nIn addition, pro proteger {{SITENAME}}, tu conto de usator e tote le adresses IP associate ha essite blocate de facer modificationes.\nSi isto ha occurrite in error, per favor contacta un administrator.\nUn breve description del regula anti-abuso correspondente con tu action es: $1",
+ "abusefilter-degrouped": "Iste action ha essite automaticamente identificate como nocive.\nPer consequente, illo ha essite impedite, e post que tu conto es suspectate de esser compromittite, tote le derectos ha essite revocate.\nSi tu opina que isto sia facite in error, per favor contacta un bureaucrate con un explication de iste action, e tu derectos pote esser restabilite.\nUn breve description del regula anti-abuso correspondente con tu action es: $1",
+ "abusefilter-autopromote-blocked": "Iste action ha essite automaticamente identificate como nocive, e ha essite impedite.\nIn addition, como mesura de securitate, alcun privilegios que se accorda normalmente al contos ben stabilite ha essite temporarimente revocate de tu conto.\nUn breve description del regula anti-abuso correspondente con tu action es: $1",
+ "abusefilter-blocker": "Filtro anti-abuso",
+ "abusefilter-blockreason": "Automaticamente blocate per le filtro anti-abuso. Description del regula correspondente: $1",
+ "abusefilter-degroupreason": "Derectos automaticamente retirate per le filtro anti-abuso. Description del regula: $1",
+ "abusefilter-accountreserved": "Le nomine de iste conto es reservate pro uso per le filtro anti-abuso.",
+ "right-abusefilter-modify": "Modificar filtros anti-abuso",
+ "right-abusefilter-view": "Vider filtros anti-abuso",
+ "right-abusefilter-log": "Vider le registro de abusos",
+ "right-abusefilter-log-detail": "Vider entratas detaliate del registro de abusos",
+ "right-abusefilter-private": "Vider datos private in le registro de abusos",
+ "right-abusefilter-modify-restricted": "Modificar le filtros anti-abuso con actiones restringite",
+ "right-abusefilter-revert": "Reverter tote le modificationes facite per un filtro anti-abuso specific",
+ "right-abusefilter-view-private": "Vider filtros anti-abuso marcate como private",
+ "right-abusefilter-log-private": "Vider entratas de registro de filtros anti-abuso marcate como private",
+ "right-abusefilter-hide-log": "Celar entratas in le registro de abusos",
+ "right-abusefilter-hidden-log": "Vider entratas celate del registro de abusos",
+ "right-abusefilter-modify-global": "Crear o modificar filtros anti-abuso global",
+ "action-abusefilter-modify": "modificar le filtros anti-abuso",
+ "action-abusefilter-view": "vider le filtros anti-abuso",
+ "action-abusefilter-log": "vider le registro de abusos",
+ "action-abusefilter-log-detail": "vider entratas in detalio del registro de abusos",
+ "action-abusefilter-private": "vider datos private in le registro de abusos",
+ "action-abusefilter-modify-restricted": "modificar le filtros anti-abuso con actiones restringite",
+ "action-abusefilter-revert": "reverter tote le modificationes facite per un filtro anti-abuso specific",
+ "action-abusefilter-view-private": "vider filtros anti-abuso marcate como private",
+ "action-abusefilter-log-private": "vider registros de filtros anti-abuso marcate como private",
+ "abusefilter-log": "Registro del filtro anti-abuso",
+ "abusefilter-log-summary": "Iste registro monstra un lista de tote le actiones attrappate per le filtros anti-abuso.",
+ "abusefilter-log-search": "Cercar in le registro de abusos",
+ "abusefilter-log-search-user": "Usator:",
+ "abusefilter-log-search-filter": "IDs de filtro (separar con barras vertical):",
+ "abusefilter-log-search-title": "Titulo:",
+ "abusefilter-log-search-wiki": "Wiki:",
+ "abusefilter-log-search-entries-label": "Visibilitate:",
+ "abusefilter-log-search-entries-all": "Tote le entratas",
+ "abusefilter-log-search-entries-hidden": "Solmente entratas celate",
+ "abusefilter-log-search-entries-visible": "Solmente entratas visibile",
+ "abusefilter-log-search-submit": "Cercar",
+ "abusefilter-log-entry": "$1: $2 {{GENDER:$8|ha provocate}} un filtro anti-abuso, {{GENDER:$8|executante}} le action \"$3\" sur $4.\nActiones prendite: $5;\nDescription del filtro: $6",
+ "abusefilter-log-entry-withdiff": "$1: $2 {{GENDER:$8|ha provocate}} un filtro anti-abuso, {{GENDER:$8|executante}} le action \"$3\" sur $4\nActiones prendite: $5;\nDescription del filtro: $6 ($7)",
+ "abusefilter-log-detailedentry-meta": "$1: $2 {{GENDER:$9|ha provocate}} $3, {{GENDER:$9|executante}} le action \"$4\" sur $5.\nActiones prendite: $6;\nDescription del filtro: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "filtro global $1",
+ "abusefilter-log-detailedentry-local": "filtro $1",
+ "abusefilter-log-detailslink": "detalios",
+ "abusefilter-log-diff": "diff",
+ "abusefilter-log-hidelink": "adjustar visibilitate",
+ "abusefilter-log-details-legend": "Detalios pro le entrata $1 del registro",
+ "abusefilter-log-details-var": "Variabile",
+ "abusefilter-log-details-val": "Valor",
+ "abusefilter-log-details-vars": "Parametros del action",
+ "abusefilter-log-details-private": "Datos private",
+ "abusefilter-log-details-ip": "Adresse IP de origine",
+ "abusefilter-log-noactions": "nihil",
+ "abusefilter-log-details-diff": "Modificationes effectuate",
+ "abusefilter-log-linkoncontribs": "registro de abusos",
+ "abusefilter-log-linkoncontribs-text": "Registro del abusos de {{GENDER:$1|iste usator}}",
+ "abusefilter-log-hidden": "(entrata celate)",
+ "abusefilter-log-hidden-implicit": "(celate perque le version ha essite delite)",
+ "abusefilter-log-cannot-see-details": "Tu non ha le permission de vider le detalios de iste entrata.",
+ "abusefilter-log-nonexistent": "Non existe un entrata con le ID fornite.",
+ "abusefilter-log-details-hidden": "Tu non pote vider le detalios de iste entrata, proque illo es celate al vista del publico.",
+ "abusefilter-log-private-not-included": "Un o plure IDs de filtro specificate es private. Pois que tu non es autorisate a vider le detalios de filtros private, iste filtros non ha essite cercate.",
+ "abusefilter-log-hide-legend": "Celar entrata de registro",
+ "abusefilter-log-hide-id": "ID del entrata:",
+ "abusefilter-log-hide-hidden": "Celar iste entrata al vista del publico",
+ "abusefilter-log-hide-reason": "Motivo:",
+ "abusefilter-log-hide-forbidden": "Tu non ha le permission de celar\nentratas del registro de abusos.",
+ "abusefilter-logentry-suppress": "celava \"[[$1]]\"",
+ "abusefilter-logentry-unsuppress": "revelava [[$1]]",
+ "logentry-abusefilter-hit": "$1 {{GENDER:$2|ha provocate}} $4, exequente le action \"$5\" sur $3. Actiones prendite: $6 ($7)",
+ "abusefilter-management": "Gestion del filtro anti-abuso",
+ "abusefilter-list": "Tote le filtros",
+ "abusefilter-list-id": "ID del filtro",
+ "abusefilter-list-status": "Stato",
+ "abusefilter-list-public": "Description public",
+ "abusefilter-list-consequences": "Consequentias",
+ "abusefilter-list-visibility": "Visibilitate",
+ "abusefilter-list-hitcount": "Contator de accessos",
+ "abusefilter-list-edit": "Modificar",
+ "abusefilter-list-details": "Detalios",
+ "abusefilter-list-limit": "Numero per pagina:",
+ "abusefilter-list-lastmodified": "Ultime modification",
+ "abusefilter-list-group": "Gruppo de filtros",
+ "abusefilter-hidden": "Private",
+ "abusefilter-unhidden": "Public",
+ "abusefilter-enabled": "Activate",
+ "abusefilter-deleted": "Delite",
+ "abusefilter-disabled": "Disactivate",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|visita|visitas}}",
+ "abusefilter-new": "Crear un nove filtro",
+ "abusefilter-return": "Retornar al gestion de filtros",
+ "abusefilter-status-global": "Global",
+ "abusefilter-list-options": "Optiones",
+ "abusefilter-list-options-deleted": "Filtros delite:",
+ "abusefilter-list-options-deleted-only": "Monstrar solmente le filtros delite",
+ "abusefilter-list-options-deleted-hide": "Celar le filtros delite",
+ "abusefilter-list-options-deleted-show": "Includer le filtros delite",
+ "abusefilter-list-options-scope": "Monstrar filtros:",
+ "abusefilter-list-options-scope-local": "Solmente regulas local",
+ "abusefilter-list-options-scope-global": "Solmente regulas global",
+ "abusefilter-list-options-scope-all": "Regulas local e global",
+ "abusefilter-list-options-disabled": "Filtros disactivate:",
+ "abusefilter-list-options-hidedisabled": " Celar le filtros disactivate",
+ "abusefilter-list-options-submit": "Actualisar",
+ "abusefilter-tools-text": "Ecce alcun instrumentos utile pro formular e corriger le filtros anti-abuso.",
+ "abusefilter-tools-expr": "Verificator de expressiones",
+ "abusefilter-tools-submitexpr": "Evalutar",
+ "abusefilter-tools-reautoconfirm": "Restaurar le stato autoconfirmate",
+ "abusefilter-tools-reautoconfirm-user": "Usator:",
+ "abusefilter-tools-reautoconfirm-submit": "Re-autoconfirmar",
+ "abusefilter-reautoconfirm-none": "Le stato autoconfirmate de iste {{GENDER:$1|usator|usatrice|usator}} non ha essite suspendite.",
+ "abusefilter-reautoconfirm-notallowed": "Tu non es autorisate a restaurar le stato autonconfirmate.",
+ "abusefilter-reautoconfirm-done": "Le stato autoconfirmate del conto ha essite restaurate",
+ "abusefilter-status": "Inter le ultime $1 {{PLURAL:$1|action|actiones}}, $2 ($3%) ha attingite le limite de $4 conditiones autorisate, e $5 ($6%) ha correspondite a un del filtros actualmente active.",
+ "abusefilter-edit": "Modificar filtro anti-abuso",
+ "abusefilter-edit-subtitle": "Modification del filtro $1",
+ "abusefilter-edit-subtitle-new": "Creation de filtro",
+ "abusefilter-edit-oldwarning": "<strong>Tu modifica al momento un version ancian de iste filtro.\nLe statisticas monstrate es pro le version currente del filtro.\nSi tu immagazina tu modificationes, tu superscribera tote le modificationes facite post le version que tu modifica.</strong> &bull;\n[[Special:AbuseFilter/history/$2|Retornar al historia de iste filtro]].",
+ "abusefilter-edit-status-label": "Statisticas:",
+ "abusefilter-edit-status": "Del ultime $1 {{PLURAL:$1|action|actiones}}, iste filtro ha correspondite a $2 ($3%).",
+ "abusefilter-edit-status-profile": "Del ultime $1 {{PLURAL:$1|action|actiones}}, iste filtro ha correspondite a $2 ($3%).\nIn media, su durata de execution es $4ms, e illo consume $5 {{PLURAL:$5|condition|conditiones}} ex le limite de conditiones.",
+ "abusefilter-edit-throttled-warning": "'''Attention:''' Iste filtro ha essite automaticamente marcate como nocive. Como mesura de securitate, le sequente actiones non essera exequite ($1). Per favor, revide e [[mw:Extension:AbuseFilter/Conditions|optimisa]] tu conditiones pro remover this restriction",
+ "abusefilter-edit-new": "Nove filtro",
+ "abusefilter-edit-save": "Salveguardar filtro",
+ "abusefilter-edit-id": "ID del filtro:",
+ "abusefilter-edit-description": "Description:\n:''(visibile al publico)''",
+ "abusefilter-edit-group": "Gruppo de filtros:",
+ "abusefilter-edit-flags": "Bandieras:",
+ "abusefilter-edit-enabled": "Activar iste filtro",
+ "abusefilter-edit-deleted": "Marcar como delite",
+ "abusefilter-edit-hidden": "Celar del publico le detalios de iste filtro",
+ "abusefilter-edit-global": "Filtro global",
+ "abusefilter-edit-rules": "Conditiones:",
+ "abusefilter-edit-notes": "Notas:",
+ "abusefilter-edit-lastmod": "Ultime modification del filtro:",
+ "abusefilter-edit-lastmod-text": "$1 per $2",
+ "abusefilter-edit-hitcount": "Accessos al filtro:",
+ "abusefilter-edit-consequences": "Actiones a prender si corresponde",
+ "abusefilter-edit-action-warn": "Interprender iste actiones post haber date un advertimento al usator",
+ "abusefilter-edit-action-disallow": "Impedir que le usator executa le action in question",
+ "abusefilter-edit-action-blockautopromote": "Revocar le stato autoconfirmate del usator",
+ "abusefilter-edit-action-degroup": "Remover le usator de tote le gruppos privilegiate",
+ "abusefilter-edit-action-block": "Blocar le usator e/o adresse IP de facer modificationes",
+ "abusefilter-edit-action-throttle": "Interprender actiones solmente si le usator excede un limite de frequentia",
+ "abusefilter-edit-action-rangeblock": "Blocar le intervallo IP respective del qual le usator proveni.",
+ "abusefilter-edit-action-tag": "Etiquettar le modification pro revision ulterior.",
+ "abusefilter-edit-throttle-count": "Numero de actiones a permitter:",
+ "abusefilter-edit-throttle-period": "Periodo de tempore:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|secunda|secundas}}",
+ "abusefilter-edit-throttle-groups": "Gruppar le limites de frequentia per:\n:''(un per linea; combinar los con commas)''",
+ "abusefilter-edit-warn-message": "Message de systema pro usar qua advertimento:",
+ "abusefilter-edit-warn-other": "Altere message",
+ "abusefilter-edit-warn-other-label": "Nomine de pagina de un altere message:\n:''(sin prefixo MediaWiki)''",
+ "abusefilter-edit-warn-actions": "Actiones:",
+ "abusefilter-edit-warn-preview": "Previsualisar le messages seligite",
+ "abusefilter-edit-warn-edit": "Crear/modificar le messages seligite",
+ "abusefilter-edit-tag-tag": "[[Special:Tags|Etiquettas]] a applicar (un per linea):",
+ "abusefilter-edit-denied": "Tu non pote vider le detalios de iste filtro, perque illo es celate al vista public.",
+ "abusefilter-edit-main": "Parametros del filtro",
+ "abusefilter-edit-done-subtitle": "Filtro modificate",
+ "abusefilter-edit-done": "[[Special:AbuseFilter/history/$1/diff/prev/$2|Tu modificationes]] al [[Special:AbuseFilter/$1|filtro $3]] ha essite salveguardate.",
+ "abusefilter-edit-badsyntax": "Il ha un error de syntaxe in le filtro que tu specificava. Le resultato del analysator syntactic esseva: <pre>$1</pre>",
+ "abusefilter-edit-restricted": "Tu non pote modificar iste filtro, proque illo contine un o plus actiones restringite.\nPer favor demanda a un usator con le permission de adder actiones restringite de facer le modification pro te.",
+ "abusefilter-edit-viewhistory": "Vider le historia de iste filtro",
+ "abusefilter-edit-history": "Historia:",
+ "abusefilter-edit-check": "Verificar syntaxe",
+ "abusefilter-edit-badfilter": "Le filtro que tu ha specificate non existe",
+ "abusefilter-edit-revert": "Reverter le actiones interprendite per iste filtro",
+ "abusefilter-edit-tools": "Instrumentos:",
+ "abusefilter-edit-test-link": "Testar iste filtro contra le modificationes recente",
+ "abusefilter-edit-export": "Exportar iste filtro verso un altere wiki",
+ "abusefilter-edit-syntaxok": "Nulle error de syntaxe detegite.",
+ "abusefilter-edit-syntaxerr": "Error de syntaxe detegite: $1",
+ "abusefilter-edit-bad-tags": "Un o plus del etiquettas que tu specificava non es valide.\nLe etiquettas debe esser curte, non debe continer characteres special, e non debe esser reservate per altere software. Essaya eliger un altere nomine de etiquetta.",
+ "abusefilter-edit-notallowed": "Tu non ha le permission de crear o modificar filtros anti-abuso.",
+ "abusefilter-edit-notallowed-global": "Tu non ha le permission de crear o modificar filtros anti-abuso global",
+ "abusefilter-edit-notallowed-global-custom-msg": "Messages de aviso personalisate non es supportate pro filtros global",
+ "abusefilter-edit-builder-select": "Selige un option pro inserer lo al puncto del cursor",
+ "abusefilter-edit-builder-group-op-arithmetic": "Operatores arithmetic",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Addition (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Subtraction (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Multiplication (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Division (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Modulo (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Potentia (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Operatores de comparation",
+ "abusefilter-edit-builder-op-comparison-equal": "Equal a (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Non equal a (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "Minus que (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Plus que (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Minus que o equal a (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Plus que o equal a (>=)",
+ "abusefilter-edit-builder-group-op-bool": "Operatores boolean",
+ "abusefilter-edit-builder-op-bool-not": "Non (!)",
+ "abusefilter-edit-builder-op-bool-and": "E (&)",
+ "abusefilter-edit-builder-op-bool-or": "O (|)",
+ "abusefilter-edit-builder-group-misc": "Miscellanea",
+ "abusefilter-edit-builder-misc-in": "continite in le serie de characteres (in)",
+ "abusefilter-edit-builder-misc-like": "Corresponde al patrono (like)",
+ "abusefilter-edit-builder-misc-rlike": "Corresponde al regex (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "Cerca con regex, non distingue maj-/minusculas (irlike)",
+ "abusefilter-edit-builder-misc-contains": "Le catena sinistre contine le catena derecte (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "Serie litteral de characteres (\"\")",
+ "abusefilter-edit-builder-misc-tern": "Operator ternari (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "Conditional (if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "Functiones",
+ "abusefilter-edit-builder-funcs-length": "Longor del serie de characteres (length)",
+ "abusefilter-edit-builder-funcs-lcase": "Verso minusculas (lcase)",
+ "abusefilter-edit-builder-funcs-ucase": "Verso majusculas (ucase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "Normalisa le characters confundibile (ccnorm)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "Elimina le characteres duple (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "Characteres special / total del characteres (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "Normalisa (norm)",
+ "abusefilter-edit-builder-funcs-count": "Numero de vices que le serie de characteres X appare in le serie Y (count)",
+ "abusefilter-edit-builder-funcs-rcount": "Numero de vices que le regex X appare in le catena de characteres Y (rcount)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "Remover spatio blanc (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "Remover characteres special (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "Es le IP in le intervallo? (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "Cercar multiple subcatenas in catena (contains_any)",
+ "abusefilter-edit-builder-funcs-substr": "Subcatena (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "Position del subcatena in le catena (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "Reimplaciar le subcatena per le catena (str_replace)",
+ "abusefilter-edit-builder-funcs-rescape": "Escappar catena como litteral in expression regular (rescape)",
+ "abusefilter-edit-builder-funcs-set_var": "Definir variabile (set_var)",
+ "abusefilter-edit-builder-group-vars": "Variabiles",
+ "abusefilter-edit-builder-vars-accountname": "Nomine del conto (al creation del conto)",
+ "abusefilter-edit-builder-vars-timestamp": "Data e hora del modification in formato de Unix",
+ "abusefilter-edit-builder-vars-action": "Action",
+ "abusefilter-edit-builder-vars-addedlines": "Lineas addite durante le modification",
+ "abusefilter-edit-builder-vars-delta": "Cambio del grandor durante le modification",
+ "abusefilter-edit-builder-vars-diff": "Presentation unificate del differentias facite durante le modification",
+ "abusefilter-edit-builder-vars-newsize": "Grandor del nove pagina",
+ "abusefilter-edit-builder-vars-oldsize": "Grandor del ancian pagina",
+ "abusefilter-edit-builder-vars-old-content-model": "Ancian modello de contento",
+ "abusefilter-edit-builder-vars-new-content-model": "Nove modello de contento",
+ "abusefilter-edit-builder-vars-removedlines": "Lineas eliminate durante le modification",
+ "abusefilter-edit-builder-vars-summary": "Summario/motivo del modification",
+ "abusefilter-edit-builder-vars-article-id": "ID del pagina",
+ "abusefilter-edit-builder-vars-article-ns": "Spatio de nomines del pagina",
+ "abusefilter-edit-builder-vars-article-text": "Titulo del pagina (sin spatio de nomines)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Titulo integre del pagina",
+ "abusefilter-edit-builder-vars-article-views": "Visitas de pagina",
+ "abusefilter-edit-builder-vars-movedfrom-id": "ID del pagina de origine del renomination",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "Spatio de nomines del pagina de origine pro le renomination",
+ "abusefilter-edit-builder-vars-movedfrom-text": "Titulo del pagina de origine pro le renomination",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "Titulo integre del pagina de origine pro le renomination",
+ "abusefilter-edit-builder-vars-movedto-id": "ID del pagina de destination del renomination",
+ "abusefilter-edit-builder-vars-movedto-ns": "Spatio de nomines del pagina de destination pro le renomination",
+ "abusefilter-edit-builder-vars-movedto-text": "Titulo de destination pro le renomination",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "Titulo integre de destination",
+ "abusefilter-edit-builder-vars-user-editcount": "Numero de modificationes del usator",
+ "abusefilter-edit-builder-vars-user-age": "Etate del conto de usator",
+ "abusefilter-edit-builder-vars-user-name": "Nomine del conto de usator",
+ "abusefilter-edit-builder-vars-user-groups": "Le gruppos (includente gruppos implicite) del quales le usator es membro",
+ "abusefilter-edit-builder-vars-user-rights": "Derectos que un usator ha",
+ "abusefilter-edit-builder-vars-user-blocked": "Si le usator es blocate",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "Quando le adresse de e-mail esseva confirmate",
+ "abusefilter-edit-builder-vars-recent-contributors": "Le ultime dece usatores que contribueva a iste pagina",
+ "abusefilter-edit-builder-vars-first-contributor": "Le prime usator a contribuer al pagina",
+ "abusefilter-edit-builder-vars-all-links": "Tote le ligamines externe in le nove texto",
+ "abusefilter-edit-builder-vars-added-links": "Tote le ligamines externe addite in le modification",
+ "abusefilter-edit-builder-vars-removed-links": "Tote le ligamines externe eliminate in le modification",
+ "abusefilter-edit-builder-vars-old-text": "Le wikitexto ancian del pagina, ante le modification",
+ "abusefilter-edit-builder-vars-new-text": "Le wikitexto nove del pagina, post le modification",
+ "abusefilter-edit-builder-vars-new-pst": "Wikitexto del nove pagina, transformate ante salveguarda",
+ "abusefilter-edit-builder-vars-diff-pst": "Differentia unificate de cambiamentos per modification, transformate ante salveguarda",
+ "abusefilter-edit-builder-vars-addedlines-pst": "Lineas addite in le modification, transformate ante salveguarda",
+ "abusefilter-edit-builder-vars-new-text-stripped": "Nove texto del pagina, disproviste de marcation",
+ "abusefilter-edit-builder-vars-new-html": "Codice-fonte del nove version transformate in HTML",
+ "abusefilter-edit-builder-vars-restrictions-edit": "Nivello de protection pro le modification del pagina",
+ "abusefilter-edit-builder-vars-restrictions-move": "Nivello de protection pro le renomination del pagina",
+ "abusefilter-edit-builder-vars-restrictions-create": "Protection pro le creation del pagina",
+ "abusefilter-edit-builder-vars-restrictions-upload": "Protection pro incargar le file",
+ "abusefilter-edit-builder-vars-old-text-stripped": "Le texto ancian del pagina, disfacite de omne notation",
+ "abusefilter-edit-builder-vars-old-links": "Ligamines in le pagina, ante le modification",
+ "abusefilter-edit-builder-vars-old-html": "Le wikitexto ancian del pagina, convertite in HTML",
+ "abusefilter-edit-builder-vars-minor-edit": "Si le modification es marcate como minor",
+ "abusefilter-edit-builder-vars-file-sha1": "Hash SHA1 del contento del file",
+ "abusefilter-edit-builder-vars-file-size": "Dimension del file in bytes",
+ "abusefilter-edit-builder-vars-file-mime": "Typo MIME del file",
+ "abusefilter-edit-builder-vars-file-mediatype": "Typo del file multimedial",
+ "abusefilter-edit-builder-vars-file-width": "Latitude del file in pixels",
+ "abusefilter-edit-builder-vars-file-height": "Altitude del file in pixels",
+ "abusefilter-edit-builder-vars-file-bits-per-channel": "Bits per canal de color del file",
+ "abusefilter-filter-log": "Modificationes recente de filtros",
+ "abusefilter-history": "Historia de modificationes del filtro anti-abuso $1",
+ "abusefilter-history-foruser": "Modificationes per $1",
+ "abusefilter-history-hidden": "celate",
+ "abusefilter-history-enabled": "activate",
+ "abusefilter-history-global": "Global",
+ "abusefilter-history-timestamp": "Hora",
+ "abusefilter-history-user": "Usator",
+ "abusefilter-history-public": "Description public del filtro",
+ "abusefilter-history-flags": "Bandieras",
+ "abusefilter-history-filter": "Regula del filtro",
+ "abusefilter-history-comments": "Commentos",
+ "abusefilter-history-actions": "Actiones",
+ "abusefilter-history-backedit": "Retornar al modificator de filtros",
+ "abusefilter-history-deleted": "Delite",
+ "abusefilter-history-filterid": "Filtro",
+ "abusefilter-history-select-legend": "Affinar le recerca",
+ "abusefilter-history-select-user": "Usator:",
+ "abusefilter-history-select-submit": "Affinar",
+ "abusefilter-history-diff": "Cambios",
+ "abusefilter-history-error-hidden": "Le filtro que tu ha requestate es celate, e tu non pote vider su historia.",
+ "abusefilter-exception-unexpectedatend": "\"$2\" non expectate al character $1.",
+ "abusefilter-exception-expectednotfound": "Un $2 es expectate al character $1 ma non es trovate (trovava le $3 $4 in su loco).",
+ "abusefilter-exception-unrecognisedkeyword": "Parola-clave $2 non recognoscite al character $1.",
+ "abusefilter-exception-unexpectedtoken": "Indicio non expectate \"$3\" (del typo $2) al character $1.",
+ "abusefilter-exception-unclosedstring": "Catena de characteres non terminate a partir del character $1.",
+ "abusefilter-exception-invalidoperator": "Operator invalide \"$2\" al character $1.",
+ "abusefilter-exception-unrecognisedtoken": "Indicio \"$2\" non recognoscite al character $1.",
+ "abusefilter-exception-noparams": "Nulle parametros passate al function \"$2\" al character $1.",
+ "abusefilter-exception-dividebyzero": "Tentativa incorrecte de divider $2 per zero al character $1.",
+ "abusefilter-exception-unrecognisedvar": "Variabile non recognoscite $2 al character $1",
+ "abusefilter-exception-notenoughargs": "Non satis de parametros pro le function $2 appellate al character $1.\nExpectava $3 {{PLURAL:$3|parametro|parametros}}, recipeva $4.",
+ "abusefilter-exception-regexfailure": "Error in le expression regular \"$3\" al character $1: \"$2\"",
+ "abusefilter-exception-overridebuiltin": "Supplantation invalide del variabile incorporate \"$2\" al character $1.",
+ "abusefilter-exception-outofbounds": "Requesta de un elemento de lista non existente $2 (grandor del lista = $3) al character $1.",
+ "abusefilter-exception-notlist": "Requesta de un elemento de array ab un variabile non array al character $1.",
+ "abusefilter-action-tag": "Etiquettar",
+ "abusefilter-action-throttle": "Limitar frequentia",
+ "abusefilter-action-warn": "Advertir",
+ "abusefilter-action-blockautopromote": "Blocar autopromotion",
+ "abusefilter-action-block": "Blocar",
+ "abusefilter-action-degroup": "Remover de gruppos",
+ "abusefilter-action-rangeblock": "Blocar intervallo",
+ "abusefilter-action-disallow": "Refusar",
+ "abusefilter-revert-title": "Reverter tote le modificationes per le filtro $1",
+ "abusefilter-revert-intro": "Iste formulario permitte reverter tote le modificationes facite per le filtro anti-abuso secundo le filtro $1.\nPer favor utilisa iste instrumento con prudentia.",
+ "abusefilter-revert-preview-item": "$1: $2 {{GENDER:$7|ha facite}} $3 sur $4.\nActiones a reverter: $5 ($6)",
+ "abusefilter-revert-search-legend": "Selige le actiones del filtro anti-abuso a reverter",
+ "abusefilter-revert-periodstart": "Initio del periodo:",
+ "abusefilter-revert-periodend": "Fin del periodo:",
+ "abusefilter-revert-search": "Selige actiones",
+ "abusefilter-revert-filter": "Filtro:",
+ "abusefilter-revert-preview-intro": "Ecce le actiones interprendite per le filtro anti-abuso que essera revertite per iste action.\nPer favor verifica los conscientiosemente, e clicca sur \"{{int:abusefilter-revert-confirm}}\" pro confirmar tu selection.",
+ "abusefilter-revert-confirm": "Confirmar",
+ "abusefilter-revert-success": "Tu ha revertite tote le actiones interprendite per le filtro anti-abuso secundo [[Special:AbuseFilter/$1|le filtro $2]].",
+ "abusefilter-revert-reason": "Reversion automatic de tote le actiones interprendite per le filtro anti-abuso secundo le filtro $1.\nMotivo date: $2",
+ "abusefilter-revert-reasonfield": "Motivo:",
+ "abusefilter-test": "Testar un filtro contra modificationes previe",
+ "abusefilter-test-intro": "Iste pagina permitte verificar un filtro indicate in le quadro hic infra contra le ultime $1 {{PLURAL:$1|modification|modificationes}}.\nPro cargar un filtro existente, insere su ID in le quadro sub le quadro de modification, e clicca sur le button \"{{int:abusefilter-test-load}}\".",
+ "abusefilter-test-legend": "Test de filtros",
+ "abusefilter-test-load-filter": "ID del filtro a cargar:",
+ "abusefilter-test-submit": "Testar",
+ "abusefilter-test-load": "Cargar",
+ "abusefilter-test-user": "Modificationes per le usator:",
+ "abusefilter-test-period-start": "Modificationes facite post:",
+ "abusefilter-test-period-end": "Modificationes facite ante:",
+ "abusefilter-test-page": "Modificationes facite al pagina:",
+ "abusefilter-test-shownegative": "Monstrar modificationes que non corresponde al filtro",
+ "abusefilter-test-syntaxerr": "Le filtro inserite contine un error de syntaxe.\nPro reciper un explication complete, clicca sur le button \"{{int:abusefilter-edit-check}}\".",
+ "abusefilter-test-badtitle": "Le titulo de pagina specificate non es valide. Illo contine forsan alcun characteres que non pote esser usate in titulos.",
+ "abusefilter-changeslist-examine": "examinar",
+ "abusefilter-examine": "Examinar modificationes individual",
+ "abusefilter-examine-intro": "Iste pagina permitte examinar le variabiles generate per le filtro anti-abuso pro un modification individual, e testar lo contra le filtros.",
+ "abusefilter-examine-legend": "Seliger modificationes",
+ "abusefilter-examine-diff": "URL del diff:",
+ "abusefilter-examine-user": "Usator:",
+ "abusefilter-examine-title": "Titulo del pagina:",
+ "abusefilter-examine-submit": "Cercar",
+ "abusefilter-examine-vars": "Variabiles generate pro iste modification",
+ "abusefilter-examine-test": "Testar iste modification contra un filtro",
+ "abusefilter-examine-test-button": "Testar filtro",
+ "abusefilter-examine-match": "Le filtro correspondeva a iste modification.",
+ "abusefilter-examine-nomatch": "Le filtro non correspondeva a iste modification.",
+ "abusefilter-examine-syntaxerror": "Le filtro ha un syntaxe invalide",
+ "abusefilter-examine-notfound": "Le modification que tu requestava non pote esser trovate.",
+ "abusefilter-examine-incompatible": "Le modification que tu requestava non es supportate per le filtro anti-abuso.",
+ "abusefilter-examine-noresults": "Nulle resultato ha essite trovate pro le parametros de recerca que tu ha fornite.",
+ "abusefilter-topnav": "'''Navigation per le filtro anti-abuso'''",
+ "abusefilter-topnav-home": "Initio",
+ "abusefilter-topnav-test": "Test in serie",
+ "abusefilter-topnav-examine": "Examinar modificationes precedente",
+ "abusefilter-topnav-log": "Registro de abusos",
+ "abusefilter-topnav-tools": "Instrumentos pro reparar defectos",
+ "abusefilter-topnav-import": "Importar filtro",
+ "abusefilter-log-name": "Registro del filtro anti-abuso",
+ "abusefilter-log-header": "Iste registro monstra un summario del modificationes facite al filtros.\nPro detalios complete, vide [[Special:AbuseFilter/history|le lista]] de cambios recente al filtros.",
+ "abusefilter-log-noresults": "Nulle resultato",
+ "abusefilter-diff-title": "Differentias inter versiones",
+ "abusefilter-diff-item": "Entrata",
+ "abusefilter-diff-version": "Version del $1 {{GENDER:$3|per}} $2",
+ "abusefilter-diff-info": "Informationes basic",
+ "abusefilter-diff-pattern": "Conditiones del filtro",
+ "abusefilter-diff-invalid": "Impossibile obtener le versiones requestate",
+ "abusefilter-diff-backhistory": "Retornar al historia del filtro",
+ "abusefilter-diff-prev": "Cambiamento precedente",
+ "abusefilter-diff-next": "Cambiamento sequente",
+ "abusefilter-import-intro": "Iste interfacie es pro importar filtros ex altere wikis.\nIn le wiki de origine, clicca \"{{int:abusefilter-edit-export}}\" sub \"{{int:abusefilter-edit-tools}}\" in le interfacie de modification.\nCopia le contento del quadro de texto que appare, e colla lo in iste quadro de texto, pois clicca \"{{int:abusefilter-import-submit}}\".",
+ "abusefilter-import-submit": "Importar datos",
+ "abusefilter-group-default": "Predefinite",
+ "abusefilter-http-error": "Un error HTTP occurreva: $1.",
+ "apihelp-abusefiltercheckmatch-description": "Verifica si un filtro anti-abuso corresponde a un insimul de variabiles. Evento AbuseFilter traciate per le editor.\n\nvars, rcid o logid es obligatori, ma solmente un inter illos pote esser usate.",
+ "apihelp-abusefiltercheckmatch-summary": "Verificar si un filtro anti-abuso corresponde a un insimul de variabiles (un redactor registrava un evento AbuseFilter).",
+ "apihelp-abusefiltercheckmatch-extended-description": "vars, rcid o logid es requirite, ma solmente un de istes pote esser usate.",
+ "apihelp-abusefiltercheckmatch-param-filter": "Le texto complete del filtro pro verificar si un correspondentia existe.",
+ "apihelp-abusefiltercheckmatch-param-vars": "Array, codificate in JSON, de variabiles contra le quales testar.",
+ "apihelp-abusefiltercheckmatch-param-rcid": "ID de modification recente contra le qual verificar.",
+ "apihelp-abusefiltercheckmatch-param-logid": "ID de registro de filtro anti-abuso contra le qual verificar.",
+ "apihelp-abusefiltercheckmatch-example-1": "Testar si le ID de modification recente 15 corresponde a un filtro simple",
+ "apihelp-abusefilterchecksyntax-description": "Verificar le syntaxe de un filtro anti-abuso.",
+ "apihelp-abusefilterchecksyntax-summary": "Verificar le syntaxe de un filtro anti-abuso.",
+ "apihelp-abusefilterchecksyntax-param-filter": "Le texto complete del filtro del qual verificar le syntaxe.",
+ "apihelp-abusefilterchecksyntax-example-1": "Verificar le syntaxe de un filtro valide",
+ "apihelp-abusefilterchecksyntax-example-2": "Verificar le syntaxe de un filtro non valide",
+ "apihelp-abusefilterevalexpression-description": "Evaluta un expression de filtro anti-abuso.",
+ "apihelp-abusefilterevalexpression-summary": "Evaluta un expression de filtro anti-abuso.",
+ "apihelp-abusefilterevalexpression-param-expression": "Le expression a evalutar.",
+ "apihelp-abusefilterevalexpression-example-1": "Evalutar un expression simple",
+ "apihelp-abusefilterunblockautopromote-description": "Permitte que un usator recipe autopromotiones a causa de un consequentia de filtro anti-abuso.",
+ "apihelp-abusefilterunblockautopromote-summary": "Permitte que un usator recipe autopromotiones a causa de un consequentia de filtro anti-abuso.",
+ "apihelp-abusefilterunblockautopromote-param-user": "Nomine del usator a disblocar.",
+ "apihelp-abusefilterunblockautopromote-example-1": "Remover le blocada de autopromotion de [[User:Example]]",
+ "apihelp-query+abusefilters-description": "Monstrar detalios del filtros anti-abuso.",
+ "apihelp-query+abusefilters-summary": "Monstrar detalios del filtros anti-abuso.",
+ "apihelp-query+abusefilters-param-startid": "Le ID del filtro ubi comenciar a enumerar.",
+ "apihelp-query+abusefilters-param-endid": "Le ID del filtro ubi cessar de enumerar.",
+ "apihelp-query+abusefilters-param-show": "Monstrar solmente filtros que satisface iste criterios.",
+ "apihelp-query+abusefilters-param-limit": "Le numero maxime de filtros a listar.",
+ "apihelp-query+abusefilters-param-prop": "Qual proprietates obtener.",
+ "apihelp-query+abusefilters-example-1": "Listar le filtros public active",
+ "apihelp-query+abusefilters-example-2": "Monstrar alcun detalios sur filtros",
+ "apihelp-query+abuselog-description": "Monstrar eventos detegite per un del filtros anti-abuso",
+ "apihelp-query+abuselog-summary": "Monstrar eventos detegite per un del filtros anti-abuso.",
+ "apihelp-query+abuselog-param-start": "Le data e hora al qual comenciar a enumerar.",
+ "apihelp-query+abuselog-param-end": "Le data e hora al qual cessar de enumerar.",
+ "apihelp-query+abuselog-param-user": "Monstrar solmente entratas facite per un usator o adresse IP date.",
+ "apihelp-query+abuselog-param-title": "Monstrar solmente entratas que occurre in un pagina date.",
+ "apihelp-query+abuselog-param-filter": "Monstrar solmente entratas detegite per un ID de filtro date.",
+ "apihelp-query+abuselog-param-limit": "Le numero maxime de entratas a listar.",
+ "apihelp-query+abuselog-param-prop": "Qual proprietates obtener.",
+ "apihelp-query+abuselog-example-1": "Monstrar entratas recente de registro",
+ "apihelp-query+abuselog-example-2": "Monstrar entratas recente de registro pro [[API]]",
+ "apierror-abusefilter-canttest": "Tu non ha le permission de testar le filtros anti-abuso.",
+ "apierror-abusefilter-cantcheck": "Tu non ha le permission de verificar le syntaxe de filtros anti-abuso.",
+ "apierror-abusefilter-nosuchlogid": "Il non ha un entrata con ID $1 in le registro de abusos.",
+ "apierror-abusefilter-badsyntax": "Le filtro ha un syntaxe invalide."
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/id.json b/www/wiki/extensions/AbuseFilter/i18n/id.json
new file mode 100644
index 00000000..1ddced00
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/id.json
@@ -0,0 +1,405 @@
+{
+ "@metadata": {
+ "authors": [
+ "Bennylin",
+ "Farras",
+ "Irwangatot",
+ "IvanLanin",
+ "Iwan Novirion",
+ "Kenrick95",
+ "Rex",
+ "Rv77ax",
+ "C5st4wr6ch",
+ "Arifin.wijaya",
+ "Matma Rex",
+ "Rachmat.Wahidi",
+ "Rachmat04",
+ "Hidayatsrf"
+ ]
+ },
+ "abusefilter-desc": "Memberlakukan pemeriksaan heuristik otomatis atas kontribusi pengguna.",
+ "abusefilter": "Konfigurasi filter penyalahgunaan",
+ "abuselog": "Catatan penyalahgunaan",
+ "abusefilter-intro": "Selamat datang di antarmuka pengelola Filter Penyalahgunaan.\nFilter Penyalahgunaan adalah sebuah mekanisme perangkat lunak yang mengaplikasikan heuristik otomatis terhadap semua tindakan. Antarmuka ini menampilkan sebuah daftar filter yang telah ditetapkan, dan filter-filter ini dapat dimodifikasi.",
+ "abusefilter-mustbeeditor": "Untuk alasan keamanan, hanya pengguna dengan hak untuk ''memodifikasi filter penyalahgunaan'' saja yang diperbolehkan menggunakan antarmuka ini.",
+ "abusefilter-warning": "'''Peringatan''': Tindakan ini secara otomatis telah diidentifikasi sebagai tindakan yang merusak.\nSuntingan yang tidak bermanfaat akan segera dibatalkan,\ndan suntingan yang tidak jelas serta berulang-ulang akan berakibat dengan diblokirnya akun ataupun alamat IP Anda.\nJika Anda yakin bahwa suntingan anda adalah suntingan yang bermanfaat, Anda bisa mengklik Kirim sekali lagi untuk mengkonfirmasinya.\nKeterangan singkat tentang peraturan penyalahgunaan yang berkaitan dengan tindakan Anda adalah: $1",
+ "abusefilter-disallowed": "Aksi ini secara otomatis telah diidentifikasi sebagai tindakan yang merusak,\ndan karenanya ditolak.\nJika Anda yakin bahwa suntingan anda adalah suntingan yang bermanfaat, silakan hubungi pengurus, dan informasikan apa yang sedang Anda lakukan.\nKeterangan singkat tentang peraturan penyalahgunaan yang berkaitan dengan aksi Anda adalah: $1",
+ "abusefilter-blocked-display": "Tindakan ini secara otomatis telah diidentifikasi sebagai tindakan yang merusak,\ndan sistem telah mencegah tindakan anda tersebut.\nSebagai tambahan, untuk melindungi {{SITENAME}}, akun pengguna anda dan semua alamat IP yang terkait telah diblokir.\nJika menurut anda ini terjadi karena kesalahan, silakan hubungi pengurus.\nKeterangan singkat tentang peraturan penyalahgunaan yang berkaitan dengan tindakan anda adalah: $1",
+ "abusefilter-degrouped": "Tindakan ini secara otomatis telah diidentifikasi sebagai tindakan yang merusak.\nKonsekuensinya, tindakan ini telah ditolak, dan karena akun anda dianggap mencurigakan, semua hak akses anda telah dicabut.\nJika anda yakin bahwa ini adalah kesalahan, silahkan hubungi seorang birokrat guna menjelaskan tindakan anda, dan kemungkinan hak-hak anda dapat dipulihkan.\nKeterangan singkat tentang peraturan penyalahgunaan yang berkaitan dengan tindakan anda adalah: $1",
+ "abusefilter-autopromote-blocked": "Tindakan ini secara otomatis telah diidentifikasi sebagai tindakan yang merusak, dan telah ditolak oleh sistem.\nSebagai tambahan, langkah keamanan yang dilakukan sistem, beberapa hak-hak istimewa yang biasanya diberikan bagi suatu akun yang wajar telah dibatalkan dari akun anda.\nKeterangan singkat tentang peraturan penyalahgunaan yang berkaitan dengan tindakan anda adalah: $1",
+ "abusefilter-blocker": "Filter penyalahgunaan",
+ "abusefilter-blockreason": "Diblokir secara otomatis oleh filter penyalahgunaan.\nKeterangan mengenai peraturan terkait: $1",
+ "abusefilter-degroupreason": "Hak akses telah dicabut secara otomatis oleh filter penyalahgunaan.\nKeterangan mengenai peraturan terkait: $1",
+ "abusefilter-accountreserved": "Nama akun ini telah dicadangkan untuk digunakan oleh filter penyalahgunaan.",
+ "right-abusefilter-modify": "Memodifikasi filter penyalahgunaan",
+ "right-abusefilter-view": "Menampilkan filter penyalahgunaan",
+ "right-abusefilter-log": "Menampilkan catatan penyalahgunaan",
+ "right-abusefilter-log-detail": "Menampilkan entri catatan penyalahgunaan secara rinci",
+ "right-abusefilter-private": "Menampilkan data pribadi dalam catatan penyalahgunaan",
+ "right-abusefilter-modify-restricted": "Memodifikasi filter penyalahgunaan dengan tindakan terbatas",
+ "right-abusefilter-revert": "Mengembalikan semua perubahan yang dilakukan oleh suatu filter penyalahgunaan yang ditentukan",
+ "right-abusefilter-view-private": "Lihat penyaringan penyalahgunaan yang ditandai sebagai pribadi",
+ "right-abusefilter-log-private": "Lihat entri catatan filter penyalahgunaan yang ditandai pribadi",
+ "right-abusefilter-hide-log": "Sembunyikan entri di dalam catatan penyalahgunaan",
+ "right-abusefilter-hidden-log": "Lihat entri catatan penyalahgunaan tersembunyi",
+ "right-abusefilter-modify-global": "Buat atau ubah filter penyalahgunaan global",
+ "action-abusefilter-modify": "memodifikasi filter penyalahgunaan",
+ "action-abusefilter-view": "tampilkan filter penyalahgunaan",
+ "action-abusefilter-log": "tampilkan catatan penyalahgunaan",
+ "action-abusefilter-log-detail": "tampilkan entri catatan penyalahgunaan secara rinci",
+ "action-abusefilter-private": "tampilkan data privat dalam catatan penyalahgunaan",
+ "action-abusefilter-modify-restricted": "modifikasi filter penyalahgunaan dengan tindakan terbatas",
+ "action-abusefilter-revert": "kembalikan semua perubahan dengan filter penyalahgunaan yang berikan.",
+ "action-abusefilter-view-private": "lihat filter penyalahgunaan ditandai sebagai pribadi",
+ "abusefilter-log": "Catatan filter penyalahgunaan",
+ "abusefilter-log-summary": "Catatan ini menampilkan daftar tindakan yang ditangkap oleh filter penyalahgunaan.",
+ "abusefilter-log-search": "Pencarian catatan penyalahgunaan",
+ "abusefilter-log-search-user": "Pengguna:",
+ "abusefilter-log-search-filter": "ID filter (pisahkan dengan tanda pipa):",
+ "abusefilter-log-search-title": "Judul:",
+ "abusefilter-log-search-wiki": "Wiki:",
+ "abusefilter-log-search-submit": "Cari",
+ "abusefilter-log-entry": "$1: $2 memicu salah satu filter penyalahgunaan, dengan melakukan \"$3\" pada $4.\nTindakan yang diambil: $5;\nKeterangan filter: $6",
+ "abusefilter-log-entry-withdiff": "$1: $2 memicu salah satu filter penyalahgunaan, dengan melakukan \"$3\" pada $4.\nTindakan yang diambil: $5;\nKeterangan filter: $6 ($7)",
+ "abusefilter-log-detailedentry-meta": "!$1: $2 memicu $3, {{GENDER:$9|melakukan}} tindakan \"$4\" pada $5.\nTindakan yang diambil: $6;\nKeterangan filter: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "filter global $1",
+ "abusefilter-log-detailedentry-local": "filter $1",
+ "abusefilter-log-detailslink": "rincian",
+ "abusefilter-log-diff": "beda",
+ "abusefilter-log-hidelink": "sesuaikan tampilan",
+ "abusefilter-log-details-legend": "Rincian untuk entri log $1",
+ "abusefilter-log-details-var": "Variabel",
+ "abusefilter-log-details-val": "Nilai",
+ "abusefilter-log-details-vars": "Parameter tindakan",
+ "abusefilter-log-details-private": "Data pribadi",
+ "abusefilter-log-details-ip": "Alamat IP asal",
+ "abusefilter-log-noactions": "tidak ada",
+ "abusefilter-log-details-diff": "Perubahan dalam suntingan",
+ "abusefilter-log-linkoncontribs": "catatan penyalahgunaan",
+ "abusefilter-log-linkoncontribs-text": "Catatan penyalahgunaan untuk pengguna ini",
+ "abusefilter-log-hidden": "(entri disembunyikan)",
+ "abusefilter-log-hidden-implicit": "(disembunyikan karena revisi telah dihapus)",
+ "abusefilter-log-cannot-see-details": "Anda tidak diizinkan untuk melihat rincian entri ini.",
+ "abusefilter-log-details-hidden": "Anda tidak dapat melihat rincian entri ini karena telah disembunyikan dari publik.",
+ "abusefilter-log-private-not-included": "Satu atau lebih filter ID yang Anda tentukan adalah pribadi. Karena Anda tidak diizinkan untuk melihat rincian filter pribadi, filter-filter ini tidak akan dicari.",
+ "abusefilter-log-hide-legend": "Sembunyikan entri log",
+ "abusefilter-log-hide-id": "ID entri log:",
+ "abusefilter-log-hide-hidden": "Sembunyikan entri ini dari publik",
+ "abusefilter-log-hide-reason": "Alasan:",
+ "abusefilter-log-hide-forbidden": "Anda tidak memiliki izin untuk menyembunyikan\nentri catatan penyalahgunaan.",
+ "abusefilter-logentry-suppress": "sembunyikan [[$1]]",
+ "abusefilter-logentry-unsuppress": "jangan sembunyikan [[$1]]",
+ "logentry-abusefilter-hit": "$1 memicu $4, melakukan tindakan \"$5\" terhadap $3. Tindakan yang dilakukan: $6 ($7)",
+ "abusefilter-management": "Manajemen filter penyalahgunaan",
+ "abusefilter-list": "Semua filter",
+ "abusefilter-list-id": "ID filter",
+ "abusefilter-list-status": "Status",
+ "abusefilter-list-public": "Keterangan publik",
+ "abusefilter-list-consequences": "Konsekuensi",
+ "abusefilter-list-visibility": "Visibilitas",
+ "abusefilter-list-hitcount": "Jumlah",
+ "abusefilter-list-edit": "Sunting",
+ "abusefilter-list-details": "Rincian",
+ "abusefilter-list-limit": "Jumlah per halaman:",
+ "abusefilter-list-lastmodified": "Perubahan terakhir",
+ "abusefilter-list-group": "Grup filter",
+ "abusefilter-hidden": "Pribadi",
+ "abusefilter-unhidden": "Publik",
+ "abusefilter-enabled": "Diaktifkan",
+ "abusefilter-deleted": "Dihapus",
+ "abusefilter-disabled": "Dinonaktifkan",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|suntingan|suntingan}}",
+ "abusefilter-new": "Buat sebuah filter baru",
+ "abusefilter-return": "Kembali ke manajemen filter",
+ "abusefilter-status-global": "Global",
+ "abusefilter-list-options": "Pengaturan",
+ "abusefilter-list-options-deleted": "Filter yang dihapus:",
+ "abusefilter-list-options-deleted-only": "Tampilkan hanya filter yang dihapus",
+ "abusefilter-list-options-deleted-hide": "Sembunyikan filter yang dihapus",
+ "abusefilter-list-options-deleted-show": "Termasuk filter yang dihapus",
+ "abusefilter-list-options-scope": "Tampilkan filter dari:",
+ "abusefilter-list-options-scope-local": "Wiki lokal",
+ "abusefilter-list-options-scope-global": "Aturan global",
+ "abusefilter-list-options-disabled": "Filter yang dinon-aktifkan:",
+ "abusefilter-list-options-hidedisabled": "Sembunyikan filter yang dinon-aktifkan",
+ "abusefilter-list-options-submit": "Mutakhirkan",
+ "abusefilter-tools-text": "Berikut adalah beberapa peralatan yang mungkin berguna untuk merumuskan dan menguji coba filter penyalahgunaan.",
+ "abusefilter-tools-expr": "Penguji ekspresi",
+ "abusefilter-tools-submitexpr": "Evaluasi",
+ "abusefilter-tools-reautoconfirm": "Mengembalikan status konfirmasi otomatis",
+ "abusefilter-tools-reautoconfirm-user": "Pengguna :",
+ "abusefilter-tools-reautoconfirm-submit": "Konfirmasi otomatis kembali",
+ "abusefilter-reautoconfirm-none": "Pengguna tersebut tidak memiliki {{GENDER:$1|laki-laki|perempuan|mereka}} status konfirmasi otomatis, dicabut.",
+ "abusefilter-reautoconfirm-notallowed": "Anda tidak memiliki hak untuk mengembalikan status konfirmasi otomatis.",
+ "abusefilter-reautoconfirm-done": "Status konfirmasi otomatis akun tersebut telah dikembalikan",
+ "abusefilter-status": "Dari $1 {{PLURAL:$1|tindakan|tindakan}} terakhir, $2 ($3%) {{PLURAL:$2|telah|telah}} mencapai batasan maksimum $4 kondisi dan $5 ($6%) {{PLURAL:$5|sesuai|sesuai}} dengan salah satu filter yang aktif saat ini.",
+ "abusefilter-edit": "Menyunting filter penyalahgunaan",
+ "abusefilter-edit-subtitle": "Menyunting filter $1",
+ "abusefilter-edit-subtitle-new": "Membuat filter",
+ "abusefilter-edit-oldwarning": "<strong>Anda sedang menyunting versi lama filter ini.\nStatistik yang dikutip adalah untuk versi terkini filter ini.\nJika hasil suntingan terhadap versi lama ini disimpan, maka Anda akan menimpa semua perubahan yang terjadi sejak revisi yang Anda sunting ini.</strong> &bull; [[Special:AbuseFilter/history/$2|Kembali ke versi terdahulu filter ini]]",
+ "abusefilter-edit-status-label": "Statistik:",
+ "abusefilter-edit-status": "Dari $1 {{PLURAL:$1|tindakan|tindakan}} terakhir, terdapat $2 ($3%) kecocokan dengan filter ini.",
+ "abusefilter-edit-status-profile": "Dari $1 {{PLURAL:$1|tindakan|tindakan}} terakhir, terdapat $2 ($3%) kecocokan dengan filter ini.\nSecara rata-rata, waktu yang dibutuhkan adalah $4ms dan mengkonsumsi $5 {{PLURAL:$5||}}kondisi dari batas kondisi.",
+ "abusefilter-edit-new": "Filter baru",
+ "abusefilter-edit-save": "Simpan filter",
+ "abusefilter-edit-id": "ID filter:",
+ "abusefilter-edit-description": "Keterangan:\n:''(dapat dilihat secara publik)''",
+ "abusefilter-edit-group": "Grup filter:",
+ "abusefilter-edit-flags": "Tanda:",
+ "abusefilter-edit-enabled": "Aktifkan filter ini",
+ "abusefilter-edit-deleted": "Tandai sebagai telah dihapus",
+ "abusefilter-edit-hidden": "Sembunyikan rincian filter ini dari publik",
+ "abusefilter-edit-global": "Penyaring global",
+ "abusefilter-edit-rules": "Kondisi:",
+ "abusefilter-edit-notes": "Catatan:",
+ "abusefilter-edit-lastmod": "Filter terakhir diubah:",
+ "abusefilter-edit-lastmod-text": "$1 oleh $2",
+ "abusefilter-edit-hitcount": "Perhitungan filter:",
+ "abusefilter-edit-consequences": "Tindakan yang diambil ketika mengenai sasaran",
+ "abusefilter-edit-action-warn": "Picu tindakan ini setelah memberikan peringatan kepada pengguna",
+ "abusefilter-edit-action-disallow": "Cegah pengguna melakukan tindakan yang meragukan",
+ "abusefilter-edit-action-blockautopromote": "Cabut status konfirmasi otomatis pengguna tersebut",
+ "abusefilter-edit-action-degroup": "Hapus pengguna dari semua kelompok hak-hak istimewa.",
+ "abusefilter-edit-action-block": "Blokir pengguna dan alamat IP dari menyunting",
+ "abusefilter-edit-action-throttle": "Picu tindakan hanya jika pengguna melampaui batasan tertentu",
+ "abusefilter-edit-action-rangeblock": "Blokir selebar /16 dari asal pengguna",
+ "abusefilter-edit-action-tag": "Tandai suntingan untuk ditinjau lagi nanti",
+ "abusefilter-edit-throttle-count": "Jumlah tindakan yang diizinkan:",
+ "abusefilter-edit-throttle-period": "Periode waktu:",
+ "abusefilter-edit-throttle-seconds": "{{PLURAL:$1||}}$1 detik",
+ "abusefilter-edit-throttle-groups": "Kelompokkan katup menurut:\n:''(satu per baris, kombinasi dengan koma)''",
+ "abusefilter-edit-warn-message": "Pesan sistem yang digunakan untuk memberi peringatan:",
+ "abusefilter-edit-warn-other": "Pesan lainnya",
+ "abusefilter-edit-warn-other-label": "Nama halaman dari pesan lain;\n:''(tanpa awalan MediaWiki)''",
+ "abusefilter-edit-warn-actions": "Tindakan:",
+ "abusefilter-edit-warn-preview": "Pratayang pesan yang dipilih",
+ "abusefilter-edit-warn-edit": "Buat/Sunting pesan yang dipilih",
+ "abusefilter-edit-tag-tag": "Tag yang digunakan (satu per baris):",
+ "abusefilter-edit-denied": "Anda tidak dapat melihat rincian filter ini, karena rincian filter telah disembunyikan dari publik.",
+ "abusefilter-edit-main": "Parameter filter",
+ "abusefilter-edit-done-subtitle": "Filter telah disunting",
+ "abusefilter-edit-done": "Anda berhasil menyimpan [[Special:AbuseFilter/history/$1/diff/prev/$2|perubahan]] [[Special:AbuseFilter/$1|filter $3]].",
+ "abusefilter-edit-badsyntax": "Terdapat kesalahan sintaksis dalam filter yang Anda masukkan. Hasil dari parser adalah:\n<pre>$1</pre>",
+ "abusefilter-edit-restricted": "Anda tidak dapat menyunting filter ini, karena mengandung satu atau lebih tindakan yang dibatasi.\nMintalah kepada pengguna yang memiliki hak akses untuk menyunting tindakan yang dibatasi ini.",
+ "abusefilter-edit-viewhistory": "Lihat sejarah filter ini",
+ "abusefilter-edit-history": "Versi:",
+ "abusefilter-edit-check": "Periksa sintaksis",
+ "abusefilter-edit-badfilter": "Filter yang Anda minta tidak ditemukan",
+ "abusefilter-edit-revert": "Kembalikan tindakan yang dilakukan oleh filter ini",
+ "abusefilter-edit-tools": "Peralatan:",
+ "abusefilter-edit-test-link": "Uji filter ini terhadap suntingan terbaru",
+ "abusefilter-edit-export": "Ekspor filter ini ke wiki lain",
+ "abusefilter-edit-syntaxok": "Tidak terdeteksi kesalahan sintaks.",
+ "abusefilter-edit-syntaxerr": "Kesalahan sintaks terdeteksi: $1",
+ "abusefilter-edit-bad-tags": "Satu atau lebih dari penanda yang anda tentukan tidak sah.\nPenanda harus pendek, dan seharusnya tidak berisi karakter khusus.",
+ "abusefilter-edit-notallowed": "Anda tidak diizinkan untuk membuat atau mengedit filter penyalahgunaan",
+ "abusefilter-edit-notallowed-global": "Anda tidak diizinkan membuat atau menyunting filter penyalahgunaan global",
+ "abusefilter-edit-notallowed-global-custom-msg": "Pesan peringatan kustom tidak didukung untuk filter global",
+ "abusefilter-edit-builder-select": "Pilih sebuah opsi untuk menambahkannya pada kursor",
+ "abusefilter-edit-builder-group-op-arithmetic": "Operator aritmatika",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Penambahan (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Pengurangan (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Pengalian (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Pembagian (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Modulo (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Pangkat (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Operator perbandingan",
+ "abusefilter-edit-builder-op-comparison-equal": "Sama dengan (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Tidak sama dengan (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "Kurang dari (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Lebih besar dari (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Kurang dari atau sama dengan (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Lebih besar atau sama dengan (>=)",
+ "abusefilter-edit-builder-group-op-bool": "Operator boolean",
+ "abusefilter-edit-builder-op-bool-not": "Bukan (!)",
+ "abusefilter-edit-builder-op-bool-and": "Dan (&)",
+ "abusefilter-edit-builder-op-bool-or": "Atau (|)",
+ "abusefilter-edit-builder-group-misc": "Lainnya",
+ "abusefilter-edit-builder-misc-in": "terkandung dalam string (in)",
+ "abusefilter-edit-builder-misc-like": "Pola sesuai (seperti)",
+ "abusefilter-edit-builder-misc-rlike": "Cocok dengan regex (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "Cocokan regex, huruf besar kecil tidak berpengaruh",
+ "abusefilter-edit-builder-misc-contains": "Karakter kiri berisi karakter yang tepat (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "Karakter harfiah (\"\")",
+ "abusefilter-edit-builder-misc-tern": "Operator terner (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "Bersyarat (if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "Fungsi",
+ "abusefilter-edit-builder-funcs-length": "Panjang karakter (length)",
+ "abusefilter-edit-builder-funcs-lcase": "Menjadi huruf kecil (lcase)",
+ "abusefilter-edit-builder-funcs-ucase": "Ke huruf besar (ucase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "Normalisasi karakter membingungkan (ccnorm)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "Buang karakter-ganda (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "Karakter khusus / jumlah karakter (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "Normalisasi (norm)",
+ "abusefilter-edit-builder-funcs-count": "Jumlah kemunculan karakter X di karakter Y (count)",
+ "abusefilter-edit-builder-funcs-rcount": "Jumlah kemunculan regex X pada karakter Y (rcount)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "Hapus spasi (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "Hapus karakter khusus (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "Apakah IP pada jangkauan? (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "Pencarian karakter untuk banyak subkarakter (contains_any)",
+ "abusefilter-edit-builder-funcs-substr": "Subkarakter (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "Posisi dari subkarakter pada karakter (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "Ganti subkarakter dengan karakter (str_replace)",
+ "abusefilter-edit-builder-funcs-rescape": "Lompati string seperti yang ada di regex (rescape)",
+ "abusefilter-edit-builder-funcs-set_var": "Atur variabel (set_var)",
+ "abusefilter-edit-builder-group-vars": "Variabel",
+ "abusefilter-edit-builder-vars-accountname": "Nama pengguna (pada pembuatan akun)",
+ "abusefilter-edit-builder-vars-timestamp": "Perubahan waktu Unix",
+ "abusefilter-edit-builder-vars-action": "Tindakan",
+ "abusefilter-edit-builder-vars-addedlines": "Garis ditambahkan pada suntingan",
+ "abusefilter-edit-builder-vars-delta": "Ukuran berubah pada suntingan",
+ "abusefilter-edit-builder-vars-diff": "perbedaan yang mirip dari perubahan karena penyuntingan",
+ "abusefilter-edit-builder-vars-newsize": "Ukuran halaman baru",
+ "abusefilter-edit-builder-vars-oldsize": "Ukuran halaman lama",
+ "abusefilter-edit-builder-vars-removedlines": "Garis dihilangkan dalam penyunting",
+ "abusefilter-edit-builder-vars-summary": "Ringkasan suntingan/alasan",
+ "abusefilter-edit-builder-vars-article-id": "ID Halaman",
+ "abusefilter-edit-builder-vars-article-ns": "Ruangnama halaman",
+ "abusefilter-edit-builder-vars-article-text": "Judul Halaman (tanpa ruangnama)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Judul halaman lengkap",
+ "abusefilter-edit-builder-vars-article-views": "Kunjungan halaman",
+ "abusefilter-edit-builder-vars-movedfrom-id": "ID Halaman dari pemindahan halaman sumber",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "Ruangnama dari pemindahan halaman sumber",
+ "abusefilter-edit-builder-vars-movedfrom-text": "Judul dari pemindahan halaman sumber",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "Judul lengkap dari pemindahan halaman sumber",
+ "abusefilter-edit-builder-vars-movedto-id": "ID halaman dari pemindahan halaman tujuan",
+ "abusefilter-edit-builder-vars-movedto-ns": "Ruangnama dari pemindahan halaman tujuan",
+ "abusefilter-edit-builder-vars-movedto-text": "Judul dari pemindahan halaman tujuan",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "Judul lengkap dari pemindahan halaman tujuan",
+ "abusefilter-edit-builder-vars-user-editcount": "Jumlah suntingan pengguna",
+ "abusefilter-edit-builder-vars-user-age": "Umur pengguna",
+ "abusefilter-edit-builder-vars-user-name": "Nama pengguna",
+ "abusefilter-edit-builder-vars-user-groups": "Kelompok (selengkapnya) pengguna dalam",
+ "abusefilter-edit-builder-vars-user-rights": "Hak bahwa pengguna memiliki",
+ "abusefilter-edit-builder-vars-user-blocked": "Apakah pengguna diblokir",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "Waktu konfirmasi alamat surel",
+ "abusefilter-edit-builder-vars-recent-contributors": "Sepuluh pengguna terakhir kontributor halaman",
+ "abusefilter-edit-builder-vars-all-links": "Semua pranala luar dalam teks baru",
+ "abusefilter-edit-builder-vars-added-links": "Semua pranala luar ditambahkan dalam penyuntingan",
+ "abusefilter-edit-builder-vars-removed-links": "Semua pranala luar yang dihapus dalam penyuntingan",
+ "abusefilter-edit-builder-vars-old-text": "Teks wiki yang lama, sebelum penyuntingan",
+ "abusefilter-edit-builder-vars-new-text": "Teks wiki halaman baru, setelah penyuntingan",
+ "abusefilter-edit-builder-vars-new-pst": "Halaman baru teks wiki, pemindahan pra-penyimpanan",
+ "abusefilter-edit-builder-vars-diff-pst": "Perbedaan kompak dari perubahan yang dilakukan oleh suntingan, pra-simpan berubah",
+ "abusefilter-edit-builder-vars-addedlines-pst": "Baris ditambahkan dalam suntingan, pra-simpan berubah",
+ "abusefilter-edit-builder-vars-new-text-stripped": "Teks halaman baru, menghilangkan markah apa pun",
+ "abusefilter-edit-builder-vars-new-html": "Pengurai sumber HTML dari revisi baru",
+ "abusefilter-edit-builder-vars-restrictions-edit": "Sunting tingkat pelindungan halaman",
+ "abusefilter-edit-builder-vars-restrictions-move": "buang tingkat pelindungan halaman",
+ "abusefilter-edit-builder-vars-restrictions-create": "Buat perlindungan berkas",
+ "abusefilter-edit-builder-vars-restrictions-upload": "Unggah perlindungan berkas",
+ "abusefilter-edit-builder-vars-old-text-stripped": "Teks halaman lama, menghilangkan markah apa pun",
+ "abusefilter-edit-builder-vars-old-links": "Pranala dalam halaman, sebelum penyuntingan",
+ "abusefilter-edit-builder-vars-old-html": "Halaman lama tekswiki, uraikan ke HTML",
+ "abusefilter-edit-builder-vars-minor-edit": "Ada atau tidak penyuntingan ditandai sebagai suntingan kecil",
+ "abusefilter-edit-builder-vars-file-sha1": "SHA1 hash dari isi berkas",
+ "abusefilter-filter-log": "Perubahan filter terbaru",
+ "abusefilter-history": "Sejarah perubahan Filter Penyalahgunaan #$1",
+ "abusefilter-history-foruser": "Diubah oleh $1",
+ "abusefilter-history-hidden": "Sembunyikan",
+ "abusefilter-history-enabled": "Diaktifkan",
+ "abusefilter-history-global": "Global",
+ "abusefilter-history-timestamp": "Waktu",
+ "abusefilter-history-user": "Pengguna",
+ "abusefilter-history-public": "Keterangan filter umum",
+ "abusefilter-history-flags": "Tanda",
+ "abusefilter-history-filter": "Aturan filter",
+ "abusefilter-history-comments": "Komentar",
+ "abusefilter-history-actions": "Tindakan",
+ "abusefilter-history-backedit": "Kembali ke penyunting penyaringan",
+ "abusefilter-history-deleted": "Dihapus",
+ "abusefilter-history-filterid": "Penyaring",
+ "abusefilter-history-select-legend": "Cari perbaikan",
+ "abusefilter-history-select-user": "Pengguna:",
+ "abusefilter-history-select-submit": "Perbaikan",
+ "abusefilter-history-diff": "Perubahan",
+ "abusefilter-history-error-hidden": "Penyaringan yang anda minta di sembunyikan, dan anda tidak dapat melihat sejarahnya.",
+ "abusefilter-exception-unexpectedatend": "tidak diharapkan \"$2\" pada karakter $1.",
+ "abusefilter-exception-expectednotfound": "Diperlukan $2 pada karakter $1, tidak ditemukan (melainkan ditemukan $3 $4).",
+ "abusefilter-exception-unrecognisedkeyword": "katakunci $2 tidak dikenali pada karakter $1.",
+ "abusefilter-exception-unexpectedtoken": "tanda \"$3\" tidak diharapkan (dari tipe $2) pada karakter $1.",
+ "abusefilter-exception-unclosedstring": "Karakter awalan tidak ditutup pada karakter $1.",
+ "abusefilter-exception-invalidoperator": "Oprasi \"$2\" tidak sah pada karakter $1.",
+ "abusefilter-exception-unrecognisedtoken": "Tanda \"$2\" tidak dikenali pada karakter $1.",
+ "abusefilter-exception-noparams": "Parameter tidak diberikan untuk fungsi \"$2\" pada karakter $1.",
+ "abusefilter-exception-dividebyzero": "usaha tidak sah untuk membagi $2 dengan nol pada karakter $1.",
+ "abusefilter-exception-unrecognisedvar": "Variabel $2 tidak dikenali pada karakter $1",
+ "abusefilter-exception-notenoughargs": "Tidak cukup argumen untuk fungsi $2 dipanggil pada karakter $1.\nDiharapkan {{PLURAL:$3|argumen|argumen}} $3, menghasilkan $4",
+ "abusefilter-exception-regexfailure": "Kesalahan pada ekspresi biasa \"$3\" pada karakter $1: \"$2\"",
+ "abusefilter-exception-overridebuiltin": "Penyampingan ilegal variabel terpasang \"$2\" pada karakter $1.",
+ "abusefilter-exception-outofbounds": "Meminta butir daftar $2 yang tak ada (jumlah butir = $3) pada karakter $1.",
+ "abusefilter-exception-notlist": "Permintaan butir Larik dari bukan-larik pada karekter $1.",
+ "abusefilter-action-tag": "Penanda",
+ "abusefilter-action-throttle": "Batasan",
+ "abusefilter-action-warn": "Waspada",
+ "abusefilter-action-blockautopromote": "Blokir seketika",
+ "abusefilter-action-block": "Blokir",
+ "abusefilter-action-degroup": "Keluarkan dari kelompok",
+ "abusefilter-action-rangeblock": "Batasan blokir",
+ "abusefilter-action-disallow": "tidak diizinkan",
+ "abusefilter-revert-title": "Mengembalikan perubahan dari penyaringan $1",
+ "abusefilter-revert-intro": "Isian ini memungkinkan Anda mengembalikan semua perubahan yang dibuat oleh filter penyalahgunaan karena filter $1.\nHarap berhati-hati dalam menggunakan alat ini.",
+ "abusefilter-revert-preview-item": "$1: $2 melakukan $3 pada $4.\nAksi yang dikembalikan: $5 ($6)",
+ "abusefilter-revert-search-legend": "Pilih aksi Penyaringan penyalahgunaan untuk di kembalikan",
+ "abusefilter-revert-periodstart": "Periode mulai:",
+ "abusefilter-revert-periodend": "Periode selesai:",
+ "abusefilter-revert-search": "Pilih tindakan",
+ "abusefilter-revert-filter": "Penyaring:",
+ "abusefilter-revert-preview-intro": "Berikut adalah tindakan yang dilakukan oleh filter penyalahgunaan yang akan dikembalikan oleh tindakan ini.\nHarap periksa dengan saksama, dan klik \"{{int:abusefilter-revert-confirm}}\" untuk mengkonfirmasikan pilihan Anda.",
+ "abusefilter-revert-confirm": "Konfirmasi",
+ "abusefilter-revert-success": "Anda telah mengembalikan semua tindakan yang dilakukan filter penyalahgunaan karena [[Special:AbuseFilter/$1|filter $2]].",
+ "abusefilter-revert-reason": "Pengembalian otomatis terhadap semua tindakan yang dilakukan filter penyalahgunaan karena filter $1.\nAlasan yang diberikan: $2",
+ "abusefilter-revert-reasonfield": "Alasan:",
+ "abusefilter-test": "Uji penyaringan terhadap suntingan sebelumnya",
+ "abusefilter-test-intro": "Halaman ini memungkinkan Anda untuk mengecek suatu filter yang dimasukkan pada kotak di bawah terhadap $1 {{PLURAL:$1|perubahan|perubahan}} terakhir.\nUntuk memuat suatu filter yang telah ada, ketikkan ID filternya ke dalam kotak di bawah kotak suntingan, dan klik tombol \"{{int:abusefilter-test-load}}\".",
+ "abusefilter-test-legend": "Saring pengujian",
+ "abusefilter-test-load-filter": "Muat penyaringan ID:",
+ "abusefilter-test-submit": "Ujicoba",
+ "abusefilter-test-load": "Muatkan",
+ "abusefilter-test-user": "Diubah oleh pengguna:",
+ "abusefilter-test-period-start": "Perubahan dilakukan setelah:",
+ "abusefilter-test-period-end": "Perubahan dilakukan sebelum:",
+ "abusefilter-test-page": "Perubahan dilakukan pada halaman:",
+ "abusefilter-test-shownegative": "Lihat perubahan yang tidak sama dengan penyaringan",
+ "abusefilter-test-syntaxerr": "Penyaringan yang Anda masukkan mengandung kesalahan sintaks.\nAnda dapat menerima penjelasan lengkap dengan menekan tombol \"{{int:abusefilter-edit-check}}\".",
+ "abusefilter-test-badtitle": "Judul halaman yang dimasukkan tidak sah. Ini mungkin juga mengandung satu atau lebih karakter yang tidak dapat digunakan dalam judul.",
+ "abusefilter-changeslist-examine": "periksa",
+ "abusefilter-examine": "Teliti perubahan tersendiri",
+ "abusefilter-examine-intro": "Halaman ini memungkinkan Anda untuk memeriksa variabel yang dihasilkan Filter Penyalahgunaan untuk suatu perubahan individu, dan mengujinya terhadap filter.",
+ "abusefilter-examine-legend": "Ubah pilihan",
+ "abusefilter-examine-diff": "Beda URL:",
+ "abusefilter-examine-user": "Pengguna:",
+ "abusefilter-examine-title": "Judul halaman:",
+ "abusefilter-examine-submit": "Cari",
+ "abusefilter-examine-vars": "Variabel dihasilkan untuk perubahan ini",
+ "abusefilter-examine-test": "Uji Perubahan ini terhadap penyaringan",
+ "abusefilter-examine-test-button": "Uji penyaringan",
+ "abusefilter-examine-match": "Penyaringan sesuai perubahan ini.",
+ "abusefilter-examine-nomatch": "Penyaringan tidak sesuai dengan perubahan ini.",
+ "abusefilter-examine-syntaxerror": "Penyaringan berisi sintaks tidak sah",
+ "abusefilter-examine-notfound": "Perubahan yang anda minta tidak dapat ditemukan.",
+ "abusefilter-examine-incompatible": "Perubahan yang anda minta tidak di tunjang oleh Penyaring Penyalahgunaan",
+ "abusefilter-examine-noresults": "Tidak ada hasil yang ditemukan untuk pencarian dengan parameter yang anda sediakan.",
+ "abusefilter-topnav": "'''Navigasi Filter Penyalahgunaan '''",
+ "abusefilter-topnav-home": "Utama",
+ "abusefilter-topnav-test": "Tumpak uji coba",
+ "abusefilter-topnav-examine": "Memeriksa suntingan terdahulu",
+ "abusefilter-topnav-log": "Catatan penyalahgunaan",
+ "abusefilter-topnav-tools": "Alat Debugging",
+ "abusefilter-topnav-import": "Impor penyaring",
+ "abusefilter-log-name": "Catatan penyaringan penyalahgunaan",
+ "abusefilter-log-header": "Log ini memberikan ringkasan perubahan yang dilakukan terhadap filter.\nUntuk detail lengkap, lihat [[Special:AbuseFilter/history|daftar]] perubahan filter terbaru.",
+ "abusefilter-log-noresults": "Tidak ada hasil",
+ "abusefilter-diff-title": "Perbedaan versi",
+ "abusefilter-diff-item": "butir",
+ "abusefilter-diff-version": "Versi dari $1 {{GENDER:$3|oleh}} $2",
+ "abusefilter-diff-info": "Informasi dasar",
+ "abusefilter-diff-pattern": "Penyaringan kondisi",
+ "abusefilter-diff-invalid": "Tidak dapat menarik versi yang diminta",
+ "abusefilter-diff-backhistory": "Kembali ke sejarah penyaringan",
+ "abusefilter-diff-prev": "Perubahan terlama",
+ "abusefilter-diff-next": "Perubahan terbaru",
+ "abusefilter-import-intro": "Anda dapat menggunakan antarmuka ini untuk mengimpor filter dari wiki lain.\nPada wiki asal, klik \"{{int:abusefilter-edit-export}}\" di bawah \"{{int:abusefilter-edit-tools}}\" pada antarmuka penyuntingan.\nSalin dari kotak teks yang muncul, dan tempelkan di kotak teks ini, lalu klik \"{{int:abusefilter-import-submit}}\".",
+ "abusefilter-import-submit": "Impor data",
+ "abusefilter-group-default": "Baku"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/ig.json b/www/wiki/extensions/AbuseFilter/i18n/ig.json
new file mode 100644
index 00000000..51ed5b61
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/ig.json
@@ -0,0 +1,51 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ukabia"
+ ]
+ },
+ "abusefilter-log-search-user": "Ọ'bànifé:",
+ "abusefilter-log-search-title": "Ishi:",
+ "abusefilter-log-search-submit": "Chọwa",
+ "abusefilter-log-noactions": "efù",
+ "abusefilter-log-hide-reason": "Mgbághapụtà:",
+ "abusefilter-list-edit": "Mèzi",
+ "abusefilter-list-details": "Nkȯwa",
+ "abusefilter-list-limit": "Ónú-ọgụgụ na ótù ihü:",
+ "abusefilter-hidden": "Zonàrì ñkịtị",
+ "abusefilter-unhidden": "Ñkịtị",
+ "abusefilter-deleted": "Kàchàrà",
+ "abusefilter-status-global": "Ùwà nílé",
+ "abusefilter-tools-reautoconfirm-user": "Ọ'bànifé:",
+ "abusefilter-edit-new": "Nzàtá ohürù",
+ "abusefilter-edit-save": "Domá nzàtá",
+ "abusefilter-edit-flags": "Ọ́kọ̀lọ́tọ:",
+ "abusefilter-edit-throttle-period": "Ótù ógè:",
+ "abusefilter-edit-warn-other": "Ozi ozor",
+ "abusefilter-edit-warn-actions": "Mmèmé:",
+ "abusefilter-edit-history": "Ịta:",
+ "abusefilter-edit-builder-op-bool-not": "Ádìghị (!)",
+ "abusefilter-edit-builder-op-bool-and": "Na (&)",
+ "abusefilter-edit-builder-op-bool-or": "Ma (|)",
+ "abusefilter-edit-builder-group-misc": "Mchétá-ma-mchétàghịm",
+ "abusefilter-edit-builder-vars-action": "Umẹ́",
+ "abusefilter-edit-builder-vars-article-id": "ID Ihü",
+ "abusefilter-edit-builder-vars-user-age": "Òtù ọ'bànifé nke kàrà",
+ "abusefilter-history-hidden": "Zonarịrị",
+ "abusefilter-history-global": "Ùwà nílé",
+ "abusefilter-history-timestamp": "Ógẹ",
+ "abusefilter-history-user": "Ọ'bànifé",
+ "abusefilter-history-flags": "Ọ́kọ̀lọ́tọ",
+ "abusefilter-history-actions": "Mmèmé",
+ "abusefilter-history-deleted": "Kàchàrà",
+ "abusefilter-history-filterid": "Nzàtà",
+ "abusefilter-history-select-user": "Ọ'bànifé:",
+ "abusefilter-history-diff": "Ihe gbanwere",
+ "abusefilter-action-tag": "Ọdụ",
+ "abusefilter-action-warn": "Dọ́ńtị̀",
+ "abusefilter-examine-user": "Ọ'bànifé:",
+ "abusefilter-examine-title": "Íshí ihü:",
+ "abusefilter-examine-submit": "Chọwa",
+ "abusefilter-topnav-home": "Ụ́lọ̀",
+ "abusefilter-diff-item": "Ihnye"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/ike-latn.json b/www/wiki/extensions/AbuseFilter/i18n/ike-latn.json
new file mode 100644
index 00000000..edeb7091
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/ike-latn.json
@@ -0,0 +1,4 @@
+{
+ "@metadata": [],
+ "abusefilter-list-edit": "Suqusiqpaa"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/ilo.json b/www/wiki/extensions/AbuseFilter/i18n/ilo.json
new file mode 100644
index 00000000..99fa34f6
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/ilo.json
@@ -0,0 +1,436 @@
+{
+ "@metadata": {
+ "authors": [
+ "Lam-ang",
+ "Matma Rex"
+ ]
+ },
+ "abusefilter-desc": "Agipakat kadagiti automatiko a panagsolbar iti parikut kadagiti panagurnos",
+ "abusefilter": "Kompigurasion ti sagat ti panagabuso",
+ "abuselog": "Listaan ti panagabuso",
+ "abusefilter-intro": "Naragsak nga isasangbay ditoy interface ti pangasiwaan ti Sagat ti Panagabuso.\nTi Sagat ti Panagabuso ket automatiko a mekanismo ti sopwer nga agikabil ti automatiko a panagsolbar ti amin a parikut kadagiti amin a tignay.\nDaytoy nga interface ket ipakitana dagiti listaan dagiti naipalawag a sagat, ken mangipalubos kaniada a mabaliwan.",
+ "abusefilter-mustbeeditor": "Para kadagiti rason ti seguridad, dagiti laeng agus-usar nga addaan iti karbengan a mangbaliw kadagiti sagat ti panagabuso ti makausar iti daytoy nga interface.",
+ "abusefilter-warning": "'''Ballaag''': Daytoy a tignay ket automatiko a nainaganan a makadangran.\nDagiti saan a nasayaat a panagurnos ket napardasto a maisubli,\nken dagiti dakes unay wenno naulit a dakes a panagurnos ket pakaresultaan ti pannakaserra ti pakabilangam wenno ti IP nga adresmo.\nNo namatmatika a daytoy a tignay ket nasayaat, mabalinmo nga ited manen tapno mapasingkedam.\nTi ababa a deskripsion iti alagaden ti panagabuso nga inaramidmo a naipada ket: $1",
+ "abusefilter-disallowed": "Daytoy a tignay ket automatiko a nainaganan a makadangran, ken iti kasta saan a maipalubos.\nNo namatmatika a ti tignaymo ket nasayaat, pangngaasi nga ipakaammom iti administrador no ania ti padpadasem nga ar-aramiden.\nTi ababa a deskripsion iti alagaden ti panagabuso nga inaramidmo a naipada ket: $1",
+ "abusefilter-blocked-display": "Daytoy a tignay ket automatiko a nainaganan a makadangran,\nken mapawilanka a mangtungpal iti daytoy.\nKen iti pay maipatinayon, tapno masalakniban ti {{SITENAME}}, ti pakabilangam ken amin dagiti nairaman nga IP nga adresmo ket naserraan ti panagurnos.\nNo daytoy ket biddut a napasamak, pangngaasi a kontaken ti administrador.\nTi ababa a deskripsion iti alagaden ti pangabuso nga inaramidmo a naipada ket: $1",
+ "abusefilter-degrouped": "Daytoy a tignay ket automatiko a nainaganan a makadangran,\nIti kasta, saanen a naipalubos, ken, yantangay ti pakabilangam ket nadaksan, amin a karbengam ket naukasen.\nNo namatmatika a daytoy ket biddut, pangngaasi a kontaken ti burokrata nga addaanka ti palawag iti daytoy a tignay, ken ti karbengam ket mabalinto a maisubli.\nTi ababa a deskripsion iti alagaden ti panagabuso nga inaramidmo a naipada ket: $1",
+ "abusefilter-autopromote-blocked": "Daytoy a tignay ket automatiko a nainaganan a makadangran, ken saanen a naipalubos.\nIti pay maipatinayon, a kas seguridad a pamay-an, adda gundaway a kanayon mait-ited kadagiti addaan ti pakabilangan a temporario a naukas manipud ti pakabilangam.\nTi ababa a deskripsion iti alagaden ti panagabuso nga inaramidmo a naipada ket: $1",
+ "abusefilter-blocker": "Sagat ti panagabuso",
+ "abusefilter-blockreason": "Automatiko a sinerraan ti sagat ti panagabuso.\nTi deskripsion iti naipada nga alagadan: $1",
+ "abusefilter-degroupreason": "Dagiti karbengan nga automatiko nga inikkat babaen ti sagat ti panagabuso.\nDeskripsion ti alagadan: $1",
+ "abusefilter-accountreserved": "Daytoy a nagan ti pakabilangan ket nailasin para iti panagusar ti sagat ti panagabuso.",
+ "right-abusefilter-modify": "Baliwan dagiti sagat ti panagabuso",
+ "right-abusefilter-view": "Kitaen dagiti sagat ti panagabuso",
+ "right-abusefilter-log": "Kitaen ti listaan ti panagabuso",
+ "right-abusefilter-log-detail": "Kitaen dagiti naisalaysay a naikabil dita listaan ti panagabuso",
+ "right-abusefilter-private": "Kitaen ti pribado a datos idiay listaan ti panagabuso",
+ "right-abusefilter-modify-restricted": "Baliwan dagiti sagat ti panagabuso nga addaan kadagiti nagawidan a tignay",
+ "right-abusefilter-revert": "Isubli amin a binaliwan babaen ti maysa a sagat ti panagabuso",
+ "right-abusefilter-view-private": "Kitaen dagiti sagat ti panagabuso a namarkaan a kas pribado",
+ "right-abusefilter-log-private": "Kitaen dagiti naikabil iti listaan kadagiti sagat ti panagabuso a namarkaan a kas pribado",
+ "right-abusefilter-hide-log": "Ilemmeng dagiti naikabil iti listaan ti panagabuso",
+ "right-abusefilter-hidden-log": "Kitaen dagiti nailemmeng a naikabil iti listaan",
+ "right-abusefilter-modify-global": "Agpartuat wenno baliwan dagiti global a sagat ti panagabuso",
+ "action-abusefilter-modify": "baliwan dagiti sagat ti panagabuso",
+ "action-abusefilter-view": "kitaen dagiti sagat ti panagabuso",
+ "action-abusefilter-log": "kitaen ti listaan ti panagabuso",
+ "action-abusefilter-log-detail": "kitaen dagiti naisalaysay a naikabil iti listaan ti panagabuso",
+ "action-abusefilter-private": "kitaen ti pribado a datos iti listaan ti panagabuso",
+ "action-abusefilter-modify-restricted": "baliwan dagiti sagat ti panagabuso nga addaan kadagiti nagawidan a tignay",
+ "action-abusefilter-revert": "isubli amin a nasukatan babaen ti maysa a naited a sagat ti panagabuso",
+ "action-abusefilter-view-private": "kitaen dagiti sagat ti panagabuso a namarkaan a kas pribado",
+ "abusefilter-log": "Listaan ti sagat ti panagabuso",
+ "abusefilter-log-summary": "Daytoy a listaan ket ipakitana amin dagiti tignay a naala babaen dagiti sagat.",
+ "abusefilter-log-search": "Agbiruk iti listaan ti panagabuso",
+ "abusefilter-log-search-user": "Agar-aramat:",
+ "abusefilter-log-search-filter": "Sagaten dagiti ID (isina kadagiti pipa):",
+ "abusefilter-log-search-title": "Titulo:",
+ "abusefilter-log-search-wiki": "Wiki:",
+ "abusefilter-log-search-submit": "Agbiruk",
+ "abusefilter-log-entry": "$1: Nakalbit ni $2 ti maysa a sagat ti panagabuso, a {{GENDER:$8|nagar-aramid}} ti tignay iti \"$3\" iti $4.\nDagiti tignay nga inaramid: $5;\nDeskripsion ti sagat: $6",
+ "abusefilter-log-entry-withdiff": "$1: Nakalbit ni $2 ti maysa a sagat ti panagabuso, a {{GENDER:$8|nagar-aramid}} ti tignay iti \"$3\" iti $4.\nDagiti tignay nga inaramid: $5;\nDeskripsion ti sagat: $6 ($7)",
+ "abusefilter-log-detailedentry-meta": "$1: Nakalbit ni $2 ti $3, a {{GENDER:$9|nagar-aramid}} ti tignay iti \"$4\" iti $5.\nDagiti tignay nga inaramid: $6;\nDeskripsion ti sagat: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "global a sagat $1",
+ "abusefilter-log-detailedentry-local": "sagat $1",
+ "abusefilter-log-detailslink": "dagiti salaysay",
+ "abusefilter-log-diff": "dip",
+ "abusefilter-log-hidelink": "pasayaaten ti pannakakita",
+ "abusefilter-log-details-legend": "Dagiti salaysay para iti naikabil ti listaan ti $1",
+ "abusefilter-log-details-var": "Sabsabali a kita",
+ "abusefilter-log-details-val": "Pateg",
+ "abusefilter-log-details-vars": "Dagiti parametro ti tignay",
+ "abusefilter-log-details-private": "Pribado a datos",
+ "abusefilter-log-details-ip": "Tinaudan nga adres ti IP",
+ "abusefilter-log-noactions": "awan",
+ "abusefilter-log-details-diff": "Dagiti binaliwan a naaramid ti inurnos",
+ "abusefilter-log-linkoncontribs": "listaan ti panagabuso",
+ "abusefilter-log-linkoncontribs-text": "Listaan ti panagabuso para iti daytoy nga agar-aramat",
+ "abusefilter-log-hidden": "(nailemmeng ti naikabil)",
+ "abusefilter-log-hidden-implicit": "(nailemmeng gapu ti panagbalbaliw ket naikkaten)",
+ "abusefilter-log-cannot-see-details": "Awan ti pammalubosmo a makakita kadagiti salaysay iti daytoy a naikabil.",
+ "abusefilter-log-details-hidden": "Saanmo a makita dagiti salaysay iti daytoy a naikabil gaputa nailemmeng manipud ti publiko a panagkita.",
+ "abusefilter-log-private-not-included": "Maysa wenno ad-adu kadagiti sagat ti ID nga innaganam ket pribado. Gapu ta awan pammalubosmo a kumita kadagiti salaysay dagiti sagat a pribado, dagitoy a sagat ket saan a biniruk.",
+ "abusefilter-log-hide-legend": "Ilemmeng ti listaan ti nakabil",
+ "abusefilter-log-hide-id": "ID ti listaan ti naikabil:",
+ "abusefilter-log-hide-hidden": "Ilemmeng daytoy a naikabil manipud iti publiko a panagkita",
+ "abusefilter-log-hide-reason": "Rason:",
+ "abusefilter-log-hide-forbidden": "Awan ti pammalubosmo nga agilemmeng kadagiti naikabil iti listaan ti panagabuso.",
+ "abusefilter-logentry-suppress": "ilemmeng \"[[$1]]\"",
+ "abusefilter-logentry-unsuppress": "ipakita \"[[$1]]\"",
+ "logentry-abusefilter-hit": "Nakalbit ni $1 ti $4, a nagar-aramid ti tignay iti \"$5\" iti $3. Dagiti naaramid a tignay: $6 ($7)",
+ "abusefilter-management": "Panangasiwa ti sagat ti panagabuso",
+ "abusefilter-list": "Amin a sagat",
+ "abusefilter-list-id": "ID ti sagat",
+ "abusefilter-list-status": "Kasasaad",
+ "abusefilter-list-public": "Publiko a deskripsion",
+ "abusefilter-list-consequences": "Anianto dagiti mapasamak",
+ "abusefilter-list-visibility": "Pannakakita",
+ "abusefilter-list-hitcount": "Bilang ti natumpaan",
+ "abusefilter-list-edit": "Urnosen",
+ "abusefilter-list-details": "Dagiti salaysay",
+ "abusefilter-list-limit": "Bilang ti tunggal maysa a panid:",
+ "abusefilter-list-lastmodified": "Kaudian a panagbalbaliw",
+ "abusefilter-list-group": "Sagaten ti grupo",
+ "abusefilter-hidden": "Pribado",
+ "abusefilter-unhidden": "Publiko",
+ "abusefilter-enabled": "Napakabaelan",
+ "abusefilter-deleted": "Naikkat",
+ "abusefilter-disabled": "Nabaldado",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|a natumpaan|kadagiti natumpaan}}",
+ "abusefilter-new": "Agpartuat iti baro a sagat",
+ "abusefilter-return": "Agsubli iti panangasiwa ti sagat",
+ "abusefilter-status-global": "Global",
+ "abusefilter-list-options": "Dagiti pagpilian",
+ "abusefilter-list-options-deleted": "Dagiti naikkat a sagat:",
+ "abusefilter-list-options-deleted-only": "Ipakita laeng dagiti naikkat a sagat",
+ "abusefilter-list-options-deleted-hide": "Ilemmeng dagiti naikkat a sagat",
+ "abusefilter-list-options-deleted-show": "Iraman dagiti naikkat a sagat",
+ "abusefilter-list-options-scope": "Ipakita dagiti sagat:",
+ "abusefilter-list-options-scope-local": "Dagiti lokal nga alagaden laeng",
+ "abusefilter-list-options-scope-global": "Dagiti global nga alagaden laeng",
+ "abusefilter-list-options-scope-all": "Dagiti lokal ken global nga alagaden laeng",
+ "abusefilter-list-options-disabled": "Dagiti nabaldado a sagat:",
+ "abusefilter-list-options-hidedisabled": "Ilemmeng dagiti nabaldado a sagat",
+ "abusefilter-list-options-submit": "Pabaruen",
+ "abusefilter-tools-text": "Adda ditoy dagiti ramit a naserbi iti panagtempla ken panagkita ti panangtarimaan ti sagat ti panagabuso.",
+ "abusefilter-tools-expr": "Panagsubok iti panangiyebkas",
+ "abusefilter-tools-submitexpr": "Pategan",
+ "abusefilter-tools-reautoconfirm": "Isubli ti automatiko a napasingkedan a kasasaad",
+ "abusefilter-tools-reautoconfirm-user": "Agar-aramat:",
+ "abusefilter-tools-reautoconfirm-submit": "Automatiko a pasingkedan manen",
+ "abusefilter-reautoconfirm-none": "Dayta nga agar-aramat ket saan pay a nasuspende {{GENDER:$1|ti|ti|dagiti}} automatiko a napasingkedan a kassaad.",
+ "abusefilter-reautoconfirm-notallowed": "Saanka a mapalubosan a mangisubli ti automatiko a napasingkedan a kasasaad.",
+ "abusefilter-reautoconfirm-done": "Naisublin ti automatiko a napasingkedan a kasasaad ti pakabilangan",
+ "abusefilter-status": "Iti naudi a $1 a {{PLURAL:$1|tignay|tigtignay}}, $2 ($3%) ket {{PLURAL:$2|adda|addaan}} a nakaabot ti patingga a kasasaad iti $4, ken $5 ($6%) ket {{PLURAL:$5|adda|addaan}} a naipada iti maysa kadagiti sagat nga agdama a napakabaelan.",
+ "abusefilter-edit": "Agur-urnos iti sagat ti panagabuso",
+ "abusefilter-edit-subtitle": "Ur-urnosen ti sagat $1",
+ "abusefilter-edit-subtitle-new": "Agparpartuat ti sagat",
+ "abusefilter-edit-oldwarning": "<strong>Agur-urnoska iti daan a bersion ti sagat.\nDagiti estadistika a naibaga ket ti agdama a bersion ti sagat.\nNo idulinmo dagiti binaliwan, masuratamto manen amin a binaliwam manipud ti rebison nga ur-urnosem.</strong> &bull;\n[[Special:AbuseFilter/history/$2|Agsubli idiay pakasaritaan ti sagat]].",
+ "abusefilter-edit-status-label": "Estadistika:",
+ "abusefilter-edit-status": "Iti naudi a $1 a {{PLURAL:$1|tignay|tigtignay}}, daytoy a sagat ket nakaipada iti $2 ($3%) .",
+ "abusefilter-edit-status-profile": "Iti naudi a $1 a {{PLURAL:$1|tignay|tigtignay}}, daytoy a sagat ket nakaipada iti $2 ($3%) .\nIti pagtengngaan, ti kabayag a panagandarna ket $4 ms, ken mangibus iti $5 a {{PLURAL:$5|kasasaad|kaskasaad}} iti patingga ti kasasaad.",
+ "abusefilter-edit-new": "Baro a sagat",
+ "abusefilter-edit-save": "Idulin ti sagat",
+ "abusefilter-edit-id": "ID ti sagat:",
+ "abusefilter-edit-description": "Deskripsion\n:''(makita iti publiko)''",
+ "abusefilter-edit-group": "Grupo ti sagat:",
+ "abusefilter-edit-flags": "Dagiti wagayway:",
+ "abusefilter-edit-enabled": "Pakabaelan daytoy a sagat",
+ "abusefilter-edit-deleted": "Markaan a kas naikkat",
+ "abusefilter-edit-hidden": "Ilemmeng dagiti salaysay iti daytoy a sagat manipud ti publiko a panagkita",
+ "abusefilter-edit-global": "Global a sagat",
+ "abusefilter-edit-rules": "Dagiti kasasaad:",
+ "abusefilter-edit-notes": "Dagiti nota:",
+ "abusefilter-edit-lastmod": "Kinaudi a nabaliwan ti sagat:",
+ "abusefilter-edit-lastmod-text": "$1 babaen ni $2",
+ "abusefilter-edit-hitcount": "Dagiti napuntaan ti sagat:",
+ "abusefilter-edit-consequences": "Dagiti tignay nga aramidento no naipada",
+ "abusefilter-edit-action-warn": "Kalbiten dagitoy a tignay kalpasan a naballaagan ti agar-aramat",
+ "abusefilter-edit-action-disallow": "Pawilan ti agar-aramat nga agtungpal iti madudua a tignay",
+ "abusefilter-edit-action-blockautopromote": "Ukasen ti napasingkedan a kasasaad para iti agar-aramat",
+ "abusefilter-edit-action-degroup": "Ikkaten ti agar-aramat kadagiti amin a nagundawayan a grupo",
+ "abusefilter-edit-action-block": "Serraan ti agar-aramat ken/wenno adres ti IP manipud iti panagurnos",
+ "abusefilter-edit-action-throttle": "Kalbiten laeng dagiti tignay no ti agar-aramat ket tibkolenna ti gatad a patingga",
+ "abusefilter-edit-action-rangeblock": "Serraan ti sakop ti /16 manipud iti tinaudan ti agar-aramat",
+ "abusefilter-edit-action-tag": "Ikkan ti etiketa ti inurnos para iti adu pay a panagrepaso",
+ "abusefilter-edit-throttle-count": "Bilang dagiti ipalubos a tignay:",
+ "abusefilter-edit-throttle-period": "Paset ti panawen:",
+ "abusefilter-edit-throttle-seconds": "$1 a {{PLURAL:$1|segundo|segsegundo}}",
+ "abusefilter-edit-throttle-groups": "Pinabuntog a grupo babaen ti:\n:''(maysa tunggal maysa a linia, iraman nga addaan ti koma)''",
+ "abusefilter-edit-warn-message": "Mensahe ti sistema nga usaren para iti ballaag:",
+ "abusefilter-edit-warn-other": "Sabali pay a mensahe",
+ "abusefilter-edit-warn-other-label": "Nagan ti panid iti sabali a mensahe:\n:''(nga awan iti pasakbay a MediaWiki)''",
+ "abusefilter-edit-warn-actions": "Dagiti tignay:",
+ "abusefilter-edit-warn-preview": "Ipadas ti napili a mensahe",
+ "abusefilter-edit-warn-edit": "Agpartuat/Agurnos ti napili a mensahe",
+ "abusefilter-edit-tag-tag": "[[Special:Tags|Dagiti etiketa]] nga ipakat (maysa tunggal linia) :",
+ "abusefilter-edit-denied": "Saanmo a mabalin a kitaen dagiti salaysay iti daytoy a sagat, gapu ta nailemmeng manipud ti publiko a panagkita.",
+ "abusefilter-edit-main": "Dagiti parametro ti sagat",
+ "abusefilter-edit-done-subtitle": "Naurnos ti sagat",
+ "abusefilter-edit-done": "[[Special:AbuseFilter/history/$1/diff/prev/$2|Dagiti binalbaliwam]] iti [[Special:AbuseFilter/$1|sagat $3]] ket naidulinen.",
+ "abusefilter-edit-badsyntax": "Adda biddut ti sintaksis iti ninaganam a sagat.\nTi naiparuar manipud iti parser ket: <pre>$1</pre>",
+ "abusefilter-edit-restricted": "Saanmo a maurnos daytoy a sagat, ngamin ket naglaon iti maysa wenno dagiti ad-adu a nagawidan a tignay.\nPangngaasi a damagen ti agar-aramat nga addaan iti pammalubos nga agnayon kadagiti nagawidan a tignay tapno baliwanda para kaniam.",
+ "abusefilter-edit-viewhistory": "Kitaen ti pakasaritaan iti daytoy a sagat",
+ "abusefilter-edit-history": "Pakasaritaan:",
+ "abusefilter-edit-check": "Kitaen ti sintaksis",
+ "abusefilter-edit-badfilter": "Awan ti sagat a nainaganam",
+ "abusefilter-edit-revert": "Isubli dagiti tignay nga inaramid daytoy a sagat",
+ "abusefilter-edit-tools": "Ramramit:",
+ "abusefilter-edit-test-link": "Subokan daytoy a sagat kadagiti kinaudi nga inurnos",
+ "abusefilter-edit-export": "Iruar daytoy a sagat iti sabali a wiki",
+ "abusefilter-edit-syntaxok": "Awan ti naduktalan a biddut ti sintaksis.",
+ "abusefilter-edit-syntaxerr": "Adda naduktalan a biddut ti sintaksis: $1",
+ "abusefilter-edit-bad-tags": "Maysa wenno ad-adu pay kadagiti etiketa a nainaganam ket imbalido.\nNasken nga ababa dagiti etiketa, ken saanda kuma nga aglaon dagiti naipangpangruna a karakter.",
+ "abusefilter-edit-notallowed": "Awan ti pammalubosmo nga agpartuat wenno agurnos kadagiti sagat ti panagabuso",
+ "abusefilter-edit-notallowed-global": "Awan ti pammalubosmo nga agpartuat wenno agurnos kadagiti global a sagat ti panagabuso",
+ "abusefilter-edit-notallowed-global-custom-msg": "Dagiti naiduma mensahe ti ballaag ket saan a nasuportaran para kadagiti global a sagat",
+ "abusefilter-edit-builder-select": "Agpili ti maysa a pagpilian tapno mainayon iti kursor",
+ "abusefilter-edit-builder-group-op-arithmetic": "Dagiti aritmitik nga agipatpataray",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Nakadagdagupan (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Nakakiskissayen (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Pannakapaadu (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Dibision (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Modulo (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Bileg (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Dagiti panangipada ti panagipatpataray",
+ "abusefilter-edit-builder-op-comparison-equal": "Ag-dagup iti (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Saan nga ag-dagup iti (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "Basbassit ngem (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Ad-adu ngem (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Basbassit ngen wenno ag-dagup iti (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Ad-adu ngem wenno ag-dagup iti (>=)",
+ "abusefilter-edit-builder-group-op-bool": "Dagiti boolean nga agipatpataray",
+ "abusefilter-edit-builder-op-bool-not": "Saan (!)",
+ "abusefilter-edit-builder-op-bool-and": "Ken (&)",
+ "abusefilter-edit-builder-op-bool-or": "Wenno (|)",
+ "abusefilter-edit-builder-group-misc": "Nadumaduma",
+ "abusefilter-edit-builder-misc-in": "nailaon iti kuerdas (in)",
+ "abusefilter-edit-builder-misc-like": "Maipada iti tabas (like)",
+ "abusefilter-edit-builder-misc-rlike": "Maipada iti regex (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "Dagiti nagpada a regex, saan a sensetibo ti kadakkel ti letra (irlike)",
+ "abusefilter-edit-builder-misc-contains": "Ti kannigid a kuerdas ket naglaon ti kannawan a kuerdas (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "Kuerdas a literal (\"\")",
+ "abusefilter-edit-builder-misc-tern": "Ternario nga agipatpataray (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "Kondisional (if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "Dagiti annong",
+ "abusefilter-edit-builder-funcs-length": "Kaatiddog ti kuerdas (length)",
+ "abusefilter-edit-builder-funcs-lcase": "Iti bassit a letra (lcase)",
+ "abusefilter-edit-builder-funcs-ucase": "Iti dakkel a letra (ucase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "Pakadawyan dagiti maka-allilaw a karakter (ccnorm)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "Ikkaten dagiti doble a karakter (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "Dagiti naipangpangruna a karakter / dagiti dagup ti karakter (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "Pakadawyan (norm)",
+ "abusefilter-edit-builder-funcs-count": "Bilang no namin ano a nagparang ti kuerdas X idiay kuerdas Y (count)",
+ "abusefilter-edit-builder-funcs-rcount": "Bilang no namin ano a nagparang ti regex X idiay kuerdas Y (rcount)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "Ikkaten ti puraw a nagbaetan (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "Ikkaten dagiti naipangpangruna a karakter (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "Naisakup kadi ti IP? (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "Agbiruk iti kuerdas para iti panagipaadu ti subkuerdas (contains_any)",
+ "abusefilter-edit-builder-funcs-substr": "Subkuerdas (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "Puesto ti subkuerdas iti kuerdas (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "Sukatan ti subkuerdas iti kuerdas (str_replace)",
+ "abusefilter-edit-builder-funcs-rescape": "Panagtalaw a kuerdas a kas literal iti regex (rescape)",
+ "abusefilter-edit-builder-funcs-set_var": "Isaad ti sabsabali (set_var)",
+ "abusefilter-edit-builder-group-vars": "Sabsabali",
+ "abusefilter-edit-builder-vars-accountname": "Nagan ti pakabilangan (idi naaramid ti pakabilangan)",
+ "abusefilter-edit-builder-vars-timestamp": "Unix a petsa ken oras iti binaliwan",
+ "abusefilter-edit-builder-vars-action": "Tignay",
+ "abusefilter-edit-builder-vars-addedlines": "Dagiti linia a naiyon iti inurnos",
+ "abusefilter-edit-builder-vars-delta": "Kadakkel a sukat iti inurnos",
+ "abusefilter-edit-builder-vars-diff": "Naipagkaykaysa a paggiddiatan dagiti binalbaliwan nga inaramid ti inurnos",
+ "abusefilter-edit-builder-vars-newsize": "Baro a kadakkel ti panid",
+ "abusefilter-edit-builder-vars-oldsize": "Daan a kadakkel ti panid",
+ "abusefilter-edit-builder-vars-removedlines": "Dagiti linia a naikkat iti inurnos",
+ "abusefilter-edit-builder-vars-summary": "Pakapukpukan ti inurnos/rason",
+ "abusefilter-edit-builder-vars-article-id": "ID ti panid",
+ "abusefilter-edit-builder-vars-article-ns": "Nagan ti espasio ti panid",
+ "abusefilter-edit-builder-vars-article-text": "Titulo ti panid (nga awan ti nagan ti espasio)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Napno a titulo ti panid",
+ "abusefilter-edit-builder-vars-article-views": "Dagiti panagkitkita iti panid",
+ "abusefilter-edit-builder-vars-movedfrom-id": "ID ti panid iti naiyalis a taudan ti panid",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "Nagan ti espasio iti iyalis a taudan ti panid",
+ "abusefilter-edit-builder-vars-movedfrom-text": "Titulo iti iyalis a taudan ti panid",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "Napno a titulo iti iyalis a taudan ti panid",
+ "abusefilter-edit-builder-vars-movedto-id": "ID ti panid iti iyalis a papanan ti panid",
+ "abusefilter-edit-builder-vars-movedto-ns": "Nagan ti espasio ti panid iti iyalis a papanan ti panid",
+ "abusefilter-edit-builder-vars-movedto-text": "Titulo iti iyalis a papanan ti panid",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "Napno a titulo iti iyalis a papanan ti panid",
+ "abusefilter-edit-builder-vars-user-editcount": "Bilang ti inurnos ti agar-aramat",
+ "abusefilter-edit-builder-vars-user-age": "Edad ti pakabilangan ti agar-aramat",
+ "abusefilter-edit-builder-vars-user-name": "Nagan ti pakabilangan ti agar-aramat",
+ "abusefilter-edit-builder-vars-user-groups": "Grupgrupo (mairaman ti naitalged) nga ayan ti agar-aramat",
+ "abusefilter-edit-builder-vars-user-rights": "Dagiti adda a karbengan ti agar-aramat",
+ "abusefilter-edit-builder-vars-user-blocked": "No ti agar-aramat ket naserraan",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "Oras a napasingkedan ti adres ti esurat",
+ "abusefilter-edit-builder-vars-recent-contributors": "Dagiti naudi a sangapulo nga agar-aramat a nagkontribusion iti daytoy a panid",
+ "abusefilter-edit-builder-vars-first-contributor": "Immuna nga agar-aramat a nagkontribusion iti panid",
+ "abusefilter-edit-builder-vars-all-links": "Dagiti amin nga akinruar a silpo iti baro a teksto",
+ "abusefilter-edit-builder-vars-added-links": "Dagiti amin nga akinruar a silpo a nainayon iti inurnos",
+ "abusefilter-edit-builder-vars-removed-links": "Dagiti amin nga akinruar a silpo a naikkat iti inurnos",
+ "abusefilter-edit-builder-vars-old-text": "Daan a panid a wikitext, sakbay nga inurnos",
+ "abusefilter-edit-builder-vars-new-text": "Baro a panid a wikitext, kalpasan nga inurnos",
+ "abusefilter-edit-builder-vars-new-pst": "Baro a panid a wikitext, a nabaliwan sakbay a naidulin",
+ "abusefilter-edit-builder-vars-diff-pst": "Naipagkaykaysa a pagiddiatan kadagiti binaliwan babaen ti inurnos, a nabaliwan sakbay a naidulin",
+ "abusefilter-edit-builder-vars-addedlines-pst": "Dagiti nainayon a linia iti inurnos, a nabaliwan sakbay a naidulin",
+ "abusefilter-edit-builder-vars-new-text-stripped": "Baro a teksto ti panid, a naikkatan iti ania man a naimarka",
+ "abusefilter-edit-builder-vars-new-html": "Nawaswas a taudan ti HTML iti baro a rebision",
+ "abusefilter-edit-builder-vars-restrictions-edit": "Agpang ti panagsalaknib ti panagurnos iti panid",
+ "abusefilter-edit-builder-vars-restrictions-move": "Agpang ti panagsalaknib ti panagiyalis iti panid",
+ "abusefilter-edit-builder-vars-restrictions-create": "Agpartuat ti panagsalaknib iti panid",
+ "abusefilter-edit-builder-vars-restrictions-upload": "Agikarga ti panagsalaknib iti papeles",
+ "abusefilter-edit-builder-vars-old-text-stripped": "Daan a teksto ti panid, a naikkatan iti ania man a naimarka",
+ "abusefilter-edit-builder-vars-old-links": "Dagiti silpo iti panid, sakbay ti panagurnos",
+ "abusefilter-edit-builder-vars-old-html": "Daan a wikitext ti panid, a nawaswas iti HTML",
+ "abusefilter-edit-builder-vars-minor-edit": "No wenno saan a ti inurnos ket namarkaan a kas bassit",
+ "abusefilter-edit-builder-vars-file-sha1": "SHA1 hash iti linaon dagiti papeles",
+ "abusefilter-edit-builder-vars-file-size": "Kadakkel ti papeles kadagiti byte",
+ "abusefilter-edit-builder-vars-file-mime": "Kita ti MIME iti papeles",
+ "abusefilter-edit-builder-vars-file-mediatype": "Kita ti midia iti papeles",
+ "abusefilter-edit-builder-vars-file-width": "Kaakaba ti papeles kadagiti piksel",
+ "abusefilter-edit-builder-vars-file-height": "Katayag ti papeles kadagiti piksel",
+ "abusefilter-edit-builder-vars-file-bits-per-channel": "Dagiti bit tunggal kanal ti maris iti papeles",
+ "abusefilter-filter-log": "Kinaudi a panagsuksukat kadagiti sagat",
+ "abusefilter-history": "Sukatan ti pakasaritaan para iti Sagat ti Panagabuso #$1",
+ "abusefilter-history-foruser": "Dagiti sinukatan babaen ti $1",
+ "abusefilter-history-hidden": "Nailemmeng",
+ "abusefilter-history-enabled": "Napakabaelan",
+ "abusefilter-history-global": "Global",
+ "abusefilter-history-timestamp": "Oras",
+ "abusefilter-history-user": "Agar-aramat",
+ "abusefilter-history-public": "Deskripsion ti publiko a sagat",
+ "abusefilter-history-flags": "Dagiti wagayway",
+ "abusefilter-history-filter": "Alagadan ti sagat",
+ "abusefilter-history-comments": "Dagiti komentario",
+ "abusefilter-history-actions": "Dagiti tignay",
+ "abusefilter-history-backedit": "Agsubli iti editor ti sagat",
+ "abusefilter-history-deleted": "Naikkat",
+ "abusefilter-history-filterid": "Sagat",
+ "abusefilter-history-select-legend": "Papinuen ti panagbiruk",
+ "abusefilter-history-select-user": "Agar-aramat:",
+ "abusefilter-history-select-submit": "Pinuen",
+ "abusefilter-history-diff": "Dagiti sinukatan",
+ "abusefilter-history-error-hidden": "Nailemmeng ti kiniddawmo a sagat, ken saanmo a makita ti pakasaritaanna.",
+ "abusefilter-exception-unexpectedatend": "Di nanamnama ti \"$2\" iti karakter ti $1.",
+ "abusefilter-exception-expectednotfound": "Nanamnama ti $2 iti karakter ti $1, saan a nabirukan (imbes a nabirukan ti $3 $4)",
+ "abusefilter-exception-unrecognisedkeyword": "Saan a malaslasin a nangruna a balikas ti $2 iti karakter $1.",
+ "abusefilter-exception-unexpectedtoken": "Saan a nanamnama a tandaan \"$3\" (iti kita $2) iti karakter $1.",
+ "abusefilter-exception-unclosedstring": "Saan a narikpan a kuerdas a nangrugi iti karakter $1.",
+ "abusefilter-exception-invalidoperator": "Imbalido nga agipatpataray \"$2\" iti karakter $1.",
+ "abusefilter-exception-unrecognisedtoken": "Saan a mabigbigan a tandaan $2 iti karakter $1.",
+ "abusefilter-exception-noparams": "Awan ti parametro a naited iti annong ti \"$2: iti karakter $1.",
+ "abusefilter-exception-dividebyzero": "Kalilis a gayagayen ti mangbingay ti $2 babaen ti sero iti karakter $1.",
+ "abusefilter-exception-unrecognisedvar": "Saan a malaslasin a sabsabali ti $2 iti karakter $1.",
+ "abusefilter-exception-notenoughargs": "Awan dagiti makaanay nga argumento iti annong ti $2 a tinawagan iti karakter $1.\nNanamnama ti $3 nga {{PLURAL:$3|argumento|ar-argumento}}, naala iti $4",
+ "abusefilter-exception-regexfailure": "Biddut iti kadawyan a panangiyebkas ti \"$3\" iti karakter ti $1: \"$2\"",
+ "abusefilter-exception-overridebuiltin": "Kalilis ti panagituon iti kinasigud a sabsabali ti \"$2\" iti karakter ti $1.",
+ "abusefilter-exception-outofbounds": "Agkidkidaw ti awan a banag iti listaan ti $2 (kadakkel ti listaan = $3) iti karakter ti $1.",
+ "abusefilter-exception-notlist": "Agkidkidaw kadagiti rimpuok a banag iti saan a rimpuok iti karakter ti $1.",
+ "abusefilter-action-tag": "Etiketa",
+ "abusefilter-action-throttle": "Pabuntogen",
+ "abusefilter-action-warn": "Pakdaaran",
+ "abusefilter-action-blockautopromote": "Serraan ti automatiko a panangipangato",
+ "abusefilter-action-block": "Serraan",
+ "abusefilter-action-degroup": "Ikkaten manipud kadagiti grupo",
+ "abusefilter-action-rangeblock": "Sakup a serra",
+ "abusefilter-action-disallow": "Saan a palubosan",
+ "abusefilter-revert-title": "Isubli amin dagiti sinukatan babaen ti sagat ti $1",
+ "abusefilter-revert-intro": "Daytoy a porma ket mangipalubos kaniam a mangisubli kadagiti amin a binaliwan babaen ti sagat ti panagabuso gapu ti sagat ti $1.\nPangngaasi nga agal-aluad iti panagusar iti daytoy a ramit.",
+ "abusefilter-revert-preview-item": "$1: $2 ket {{GENDER:$7|nagaramid}} ti $3 iti $4.\nDagiti isublinto a tignay: $5 ($6)",
+ "abusefilter-revert-search-legend": "Agpili kadagiti maisublinto a tignay ti sagat ti panagabuso",
+ "abusefilter-revert-periodstart": "Panawen a panagrugi:",
+ "abusefilter-revert-periodend": "Panawen a panaglippas:",
+ "abusefilter-revert-search": "Agpili kadagiti tignay",
+ "abusefilter-revert-filter": "Sagat:",
+ "abusefilter-revert-preview-intro": "Dita baba ket dagiti tignay nga inaramid ti sagat ti panagabuso a masublinto babaen ti daytoy a tignay.\nPangngaasi nga agan-annad a kitaen dagiti, ken pinduten ti \"{{int:abusefilter-revert-confirm}}\" tapno mapasingkedam ti pinilim.",
+ "abusefilter-revert-confirm": "Pasingkedan",
+ "abusefilter-revert-success": "Insublim amin dagiti tignay nga inaramid babaen ti sagat ti panagabuso gapu ti [[Special:AbuseFilter/$1|sagat ti $2]].",
+ "abusefilter-revert-reason": "Automatiko a panangisubli kadagiti amin a tignay babaen ti sagat ti panagabuso gapu ti sagat ti $1.\nRason a naited: $2",
+ "abusefilter-revert-reasonfield": "Rason:",
+ "abusefilter-test": "Subokan ti sagat kadagiti dati nga inurnos",
+ "abusefilter-test-intro": "Daytoy a panid ket mangipalubos kenka ti mangkita ti sagat a naikabil iti kahon dita baba iti naudi a $1 a {{PLURAL:$1|sinukatan|sinuksukatan}}.\nTi agikarga ti adda a sagat, imakiniliam ti ID ti sagat iti kahon dita baba ti pagurnosan a kahon ti teksto, ken pinduten ti buton ti \"{{int:abusefilter-test-load}}\" .",
+ "abusefilter-test-legend": "Agsubsubok iti sagat",
+ "abusefilter-test-load-filter": "Ikarga ti ID ti sagat:",
+ "abusefilter-test-submit": "Subokan",
+ "abusefilter-test-load": "Ikarga",
+ "abusefilter-test-user": "Dagiti binalbaliwan babaen ti agar-aramat:",
+ "abusefilter-test-period-start": "Dagiti kalpasan a binalbaliwan:",
+ "abusefilter-test-period-end": "Dagiti sakbay a binalbaliwan:",
+ "abusefilter-test-page": "Dagiti binalbaliwan iti panid:",
+ "abusefilter-test-shownegative": "Iparang dagiti binaliwan a saan a maipada iti sagat",
+ "abusefilter-test-syntaxerr": "Ti inkabilmo a sagat ket naglaon ti biddut ti sintaksis.\nMakaawatka ti napno a palawag babaen ti panagpindut ti buton ti \"{{int:abusefilter-edit-check}}\" .",
+ "abusefilter-test-badtitle": "Imbalido ti inkabilmo a titulo ti panid. Mabalin nga aglaon ti maysa wenno dagiti ad-adu a karakter a saan a mabalin a mausar kadagitoy a titulo.",
+ "abusefilter-changeslist-examine": "sukimaten",
+ "abusefilter-examine": "Sukimaten dagiti tigga maysa a binalbaliwan",
+ "abusefilter-examine-intro": "Daytoy a panid ket mangipalubos kenka nga agsukimat kadagiti sabsabali a pinataud babaen ti Sagat ti Panagabuso para iti agmaymaysa a panagbaliw, ken subokanna daytoy kadagiti sagat.",
+ "abusefilter-examine-legend": "Agpili kadagiti binaliwan",
+ "abusefilter-examine-diff": "Paggiddiatan nga URL:",
+ "abusefilter-examine-user": "Agar-aramat:",
+ "abusefilter-examine-title": "Titulo ti panid:",
+ "abusefilter-examine-submit": "Agbiruk",
+ "abusefilter-examine-vars": "Dagiti sabali a pinataud para iti daytoy a binaliwan",
+ "abusefilter-examine-test": "Subokan daytoy a binaliwan iti sagat",
+ "abusefilter-examine-test-button": "Subokan ti sagat",
+ "abusefilter-examine-match": "Ti sagat ket naipada iti daytoy a binaliwan.",
+ "abusefilter-examine-nomatch": "Daytoy a sagat ket saan a naipada iti daytoy a binaliwan.",
+ "abusefilter-examine-syntaxerror": "Ti sagat ket adaan ti imbalido a gramatika",
+ "abusefilter-examine-notfound": "Ti kiniddawmo a panagbaliw ket saan a mabirukan.",
+ "abusefilter-examine-incompatible": "Ti kiniddawmo a panagbaliw ket saan a suportaran babaen ti Sagat ti Panagabuso",
+ "abusefilter-examine-noresults": "Awan dagiti resulta a nabirukan para kadagiti intedmo a parametro.",
+ "abusefilter-topnav": "'''Pagdaliasatan ti Sagat ti Panagabuso'''",
+ "abusefilter-topnav-home": "Balay",
+ "abusefilter-topnav-test": "Sangkapaset a panagsubok",
+ "abusefilter-topnav-examine": "Sukimaten dagiti napalabas nga inurnos",
+ "abusefilter-topnav-log": "Listaan ti panagabuso",
+ "abusefilter-topnav-tools": "Ramramit a pagsimpa",
+ "abusefilter-topnav-import": "Agala iti sagat",
+ "abusefilter-log-name": "Listaan ti Sagat ti Panagabuso",
+ "abusefilter-log-header": "Daytoy a listaan ket agiparang ti pakapukpukan dagiti binaliwan nga inaramid para kadagiti sagat.\nPara kadagiti napno a salaysay, kitaen [[Special:AbuseFilter/history|ti listaan]] dagiti kaudian panagbaliw iti sagat.",
+ "abusefilter-log-noresults": "Awan dagiti resulta",
+ "abusefilter-diff-title": "Dagiti paggiddiatan a nagbaetan dagiti bersion",
+ "abusefilter-diff-item": "Banag",
+ "abusefilter-diff-version": "Bersion manipud idi $1 {{GENDER:$3|babaen ni}} $2",
+ "abusefilter-diff-info": "Kangrunaan a pakaammo",
+ "abusefilter-diff-pattern": "Dagiti kasasaad ti sagat",
+ "abusefilter-diff-invalid": "Saan a nakaala kadagiti kiniddaw a bersion",
+ "abusefilter-diff-backhistory": "Agsubli iti pakasaritaan ti sagat",
+ "abusefilter-diff-prev": "Nadadaan a panagbaliw",
+ "abusefilter-diff-next": "Barbaro a panagbaliw",
+ "abusefilter-import-intro": "Mabalinmo nga usaren daytoy nga interface tapno makaala kadagiti sagat manipud kadagiti sabali a wiki.\nIti nataudan a wiki, pinduten ti \"{{int:abusefilter-edit-export}}\" babaen ti \"{{int:abusefilter-edit-tools}}\" iti pagurnosan ti interface.\nKopiaen manipud iti kahon ti teksto nga agparang, ken ipegket iti daytoy a kahon ti teksto, kalpasanna pinduten ti \"{{int:abusefilter-import-submit}}\".",
+ "abusefilter-import-submit": "Agala iti datos",
+ "abusefilter-group-default": "Kasisigud",
+ "abusefilter-http-error": "Adda napasamak a biddut ti HTTP: $1.",
+ "apihelp-abusefiltercheckmatch-description": "Kitaen no ti maysa a sagat ti panagabuso ket maipada iti agasmang iti pagdumadumaan, pasamak ti nailista a Sagat ti Panagabuso.\n\nTi vars, rcid wenno logid ket nasken nupay kasta mabalin laeng ti agusar iti maysa.",
+ "apihelp-abusefiltercheckmatch-param-filter": "Ti napno a teksto ti sagat a kitaen para iti panagipada.",
+ "apihelp-abusefiltercheckmatch-param-vars": "Ti naikodigo a rimpuok ti panagdumaduma ti JSON a pangisubokan.",
+ "apihelp-abusefiltercheckmatch-param-rcid": "Ti kinaudi a panagbaliw ti ID a pangisubokan.",
+ "apihelp-abusefiltercheckmatch-param-logid": "Ti listaan ti ID ti sagat ti panagabuso a pangisubokan.",
+ "apihelp-abusefiltercheckmatch-example-1": "Subokan no ti kinaudi a panagbaliw ti ID 15 ket maipada iti nalaka a sagat",
+ "apihelp-abusefilterchecksyntax-description": "Kitaen ti sintaksis ti sagat ti AbuseFilter.",
+ "apihelp-abusefilterchecksyntax-param-filter": "Ti napno a teksto ti sagat a pagkitaan ti sintaksis.",
+ "apihelp-abusefilterchecksyntax-example-1": "Kitaen ti sintaksis ti umiso a sagat",
+ "apihelp-abusefilterchecksyntax-example-2": "Kitaen ti sintaksis ti saan nga umiso a sagat",
+ "apihelp-abusefilterevalexpression-description": "Pateganna ti panangiyebkas ti AbuseFilter.",
+ "apihelp-abusefilterevalexpression-param-expression": "Ti panangiyebkas a mapategan.",
+ "apihelp-abusefilterevalexpression-example-1": "Pategan ti nalaka a panangiyebkas",
+ "apihelp-abusefilterunblockautopromote-description": "Mangikkat ti serra ti agar-aramt manipud iti panagawat kadagiti automatiko a promosion gapu ti pagbanagan ti sagat ti panagabuso.",
+ "apihelp-abusefilterunblockautopromote-param-user": "Nagan ti agar-aramat a kayatmo nga ikkaten ti serrana.",
+ "apihelp-abusefilterunblockautopromote-example-1": "Ikkaten ti serra ti automatiko a promosion ni [[User:Example]]",
+ "apihelp-query+abusefilters-description": "Ipakita dagiti salaysay dagiti sagat ti panagabuso",
+ "apihelp-query+abusefilters-param-startid": "Ti ID ti sagat a pangirugian iti panangibilang.",
+ "apihelp-query+abusefilters-param-endid": "Ti ID ti sagat a pagsardengan iti panangibilang.",
+ "apihelp-query+abusefilters-param-show": "Ipakita laeng dagiti sagat a makaabot kadagitoy a kriteria.",
+ "apihelp-query+abusefilters-param-limit": "Ti kaadu dagiti bilang dagiti sagat a mailista.",
+ "apihelp-query+abusefilters-param-prop": "Ti maala a tagtagikua.",
+ "apihelp-query+abusefilters-example-1": "Ilista dagiti napakabaelan a publiko a sagat",
+ "apihelp-query+abusefilters-example-2": "Ipakita salaysay a maipanggep kadagiti sagat",
+ "apihelp-query+abuselog-description": "Ipakita dagiti pasamak a naala babaen ti maysa kadagitoy a sagat ti panagabuso",
+ "apihelp-query+abuselog-param-start": "Ti oras ken petsa a pangirugian iti panangibilang.",
+ "apihelp-query+abuselog-param-end": "Ti oras ken petsa a pagsardengan iti panangibilang.",
+ "apihelp-query+abuselog-param-user": "Ipakita laeng dagiti naikabil nga inaramid babaen ti naited nga agar-aramat wenno adres ti IP.",
+ "apihelp-query+abuselog-param-title": "Ipakita laeng dagiti naikabil a napasamak iti naited a panid.",
+ "apihelp-query+abuselog-param-filter": "Ipakita laeng dagiti naikabil a naala babaen ti naited nga ID ti sagat.",
+ "apihelp-query+abuselog-param-limit": "Ti kaadu a bilang dagiti naikabil iti listaan.",
+ "apihelp-query+abuselog-param-prop": "Ti maala a tagtagikua.",
+ "apihelp-query+abuselog-example-1": "Ipakita ti kinaudi a naikabkabil iti listaan",
+ "apihelp-query+abuselog-example-2": "Ipakita ti kinaudi a naikabkabil iti listaan para iti [[API]]"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/inh.json b/www/wiki/extensions/AbuseFilter/i18n/inh.json
new file mode 100644
index 00000000..b3db598d
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/inh.json
@@ -0,0 +1,33 @@
+{
+ "@metadata": {
+ "authors": [
+ "Amire80",
+ "Sapral Mikail",
+ "Умар",
+ "Adam-Yourist"
+ ]
+ },
+ "abusefilter-log-search-user": "Доакъашхо:",
+ "abusefilter-log-search-filter": "Фильтрай ID (урагIа така хьаракаца йикъа):",
+ "abusefilter-log-search-submit": "Хьалáха",
+ "abusefilter-log-detailedentry-local": "фильтр $1",
+ "abusefilter-log-hide-reason": "Бахьан:",
+ "abusefilter-list-edit": "Нийсде",
+ "abusefilter-tools-reautoconfirm-user": "Доакъашхо:",
+ "abusefilter-edit-flags": "Байракхаш:",
+ "abusefilter-edit-history": "Истори:",
+ "abusefilter-edit-tools": "ГӀирсаш:",
+ "abusefilter-edit-builder-op-arithmetic-pow": "ЛагӀа (**)",
+ "abusefilter-edit-builder-vars-article-id": "ОагIон ID",
+ "abusefilter-history-hidden": "къайла",
+ "abusefilter-history-global": "Глобальни",
+ "abusefilter-history-timestamp": "Ха",
+ "abusefilter-history-user": "Доакъашхо",
+ "abusefilter-history-flags": "Байракхаш",
+ "abusefilter-history-select-user": "Доакъашхо:",
+ "abusefilter-history-diff": "Хувцамаш",
+ "abusefilter-action-tag": "Хьисап",
+ "abusefilter-examine-user": "Доакъашхо",
+ "abusefilter-examine-title": "ОагIон цIи:",
+ "abusefilter-examine-submit": "Хьалáха"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/io.json b/www/wiki/extensions/AbuseFilter/i18n/io.json
new file mode 100644
index 00000000..97640a0e
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/io.json
@@ -0,0 +1,98 @@
+{
+ "@metadata": {
+ "authors": [
+ "Malafaya",
+ "Robin van der Vliet",
+ "Lakaoso",
+ "Joao Xavier"
+ ]
+ },
+ "abusefilter-desc": "Aplikas automatala heuristiko a la redakturi",
+ "abusefilter": "Figuro dil filtrilo pri misuzo",
+ "abuselog": "Protokolo pri misuzo",
+ "abusefilter-intro": "Bonveno a la kontrol interfacio dil filtrilo di misuzo. La filtrilo di misuzo esas automatala mekanismo di softwaro qua aplikas automatala heuristiko ad omna agadi.\n\nIca interfacio* montras listo pri definita filtrili, e permisas modifikar li.",
+ "abusefilter-mustbeeditor": "Por motivi di sekureso, ica interfacio povas modifikesar nur dal uzeri kun yuri por modifikar la filtrili di misuzo.",
+ "right-abusefilter-modify": "Modifikar filtrili pri misuzo",
+ "right-abusefilter-view": "Vidar filtrili di misuzo",
+ "action-abusefilter-log-detail": "Videz detaloza registri di informi pri misuzo",
+ "abusefilter-log-summary": "Ica protokolo montras listo pri omna agadi kaptita dal filtrili.",
+ "abusefilter-log-search": "Serchez la protokolo pri misuzo",
+ "abusefilter-log-search-user": "Uzero:",
+ "abusefilter-log-search-filter": "Identigo di filtrili (separita per vertikala streki):",
+ "abusefilter-log-search-title": "Titulo:",
+ "abusefilter-log-search-submit": "Serchez",
+ "abusefilter-log-noactions": "nula",
+ "abusefilter-log-linkoncontribs": "Protokolo pri misuzo",
+ "abusefilter-log-linkoncontribs-text": "Registro pri misuzi da {{GENDER:$1|ica uzero}}",
+ "abusefilter-log-hide-reason": "Motivo:",
+ "abusefilter-list": "Omna filtrili",
+ "abusefilter-list-status": "Stando",
+ "abusefilter-list-edit": "Redaktar",
+ "abusefilter-list-lastmodified": "Lasta modifikuro",
+ "abusefilter-hidden": "Privata",
+ "abusefilter-unhidden": "Publika",
+ "abusefilter-new": "Krear nova filtrilo",
+ "abusefilter-list-options": "Selekti",
+ "abusefilter-list-options-deleted-only": "Montrar nur filtrili efacita",
+ "abusefilter-list-options-scope-local": "Nur lokala reguli",
+ "abusefilter-tools-reautoconfirm-user": "Uzero:",
+ "abusefilter-edit-status-label": "Statistiko:",
+ "abusefilter-edit-new": "Nova filtrilo",
+ "abusefilter-edit-save": "Registragar filtrilo",
+ "abusefilter-edit-rules": "Kondicioni:",
+ "abusefilter-edit-lastmod-text": "$1 da $2",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|sekundo|sekundi}}",
+ "abusefilter-edit-warn-other": "Altra mesajo",
+ "abusefilter-edit-done-subtitle": "La filtrilo redaktesas",
+ "abusefilter-edit-history": "Versionaro:",
+ "abusefilter-edit-check": "Verifikar sintaxo",
+ "abusefilter-edit-tools": "Utensili:",
+ "abusefilter-edit-builder-select": "Indikez selekto por adjuntar a la kursoro",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Adiciono (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Sustraciono (-)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Divido (/)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Diferanta de (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "Min kam (<)",
+ "abusefilter-edit-builder-op-comparison-lte": "Min kam od egal ad (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Plu granda od egala ad (>=)",
+ "abusefilter-edit-builder-op-bool-not": "Ne (logika NOT) (!)",
+ "abusefilter-edit-builder-op-bool-and": "E (logika AND) (&)",
+ "abusefilter-edit-builder-op-bool-or": "O (Logika 'OR') (|)",
+ "abusefilter-edit-builder-funcs-ccnorm": "Normaligar konfundebla signi (ccnorm)",
+ "abusefilter-edit-builder-funcs-specialratio": "Specala signi / omna signi (specialratio)",
+ "abusefilter-edit-builder-vars-oldsize": "Antea grandeso (en bicoki*) di la pagino",
+ "abusefilter-edit-builder-vars-recent-contributors": "Lasta 10 uzeri qui redaktis la pagino",
+ "abusefilter-filter-log": "Recenta modifiki en la filtrili",
+ "abusefilter-history-foruser": "Chanji da $1",
+ "abusefilter-history-global": "Globala",
+ "abusefilter-history-timestamp": "Tempo",
+ "abusefilter-history-user": "Uzero",
+ "abusefilter-history-comments": "Komenti",
+ "abusefilter-history-deleted": "Efacita",
+ "abusefilter-history-filterid": "Filtrilo",
+ "abusefilter-history-select-user": "Uzero:",
+ "abusefilter-history-diff": "Chanji",
+ "abusefilter-action-degroup": "Forigar ek grupi",
+ "abusefilter-revert-filter": "Filtrilo:",
+ "abusefilter-test": "Probar filtrilo kontre antea redakturi",
+ "abusefilter-test-intro": "Ica pagino permisas vu probar filtrilo kontre l'antea $1 {{PLURAL:$1|modifiko|modifiki}} en la buxo adinfre.\nPor charjar existanta filtrilo, skribez la nomo dil filtrilo en la buxo infre la redakto-buxo, e pose kliktez la butono \"{{int:abusefilter-test-load}}\".",
+ "abusefilter-test-legend": "Probo di filtrili",
+ "abusefilter-test-load-filter": "Charjar filtrilo kun protokolo (ID):",
+ "abusefilter-test-submit": "Probez",
+ "abusefilter-test-load": "Charjez",
+ "abusefilter-test-user": "Chanji per uzero:",
+ "abusefilter-test-period-start": "Modifiki facita pos:",
+ "abusefilter-test-period-end": "Modifiki facita ante:",
+ "abusefilter-test-page": "Modifiki facita en la pagino:",
+ "abusefilter-examine-user": "Uzero:",
+ "abusefilter-examine-title": "titulo di pagino:",
+ "abusefilter-examine-submit": "Serchez",
+ "abusefilter-examine-test-button": "Probez filtrilo",
+ "abusefilter-topnav-test": "Probar grupo",
+ "abusefilter-topnav-examine": "Vidar antea redakti",
+ "abusefilter-topnav-log": "Protokolo ('log') pri misuzo",
+ "abusefilter-topnav-tools": "Utensili por 'debug'",
+ "abusefilter-topnav-import": "Importar filtrilo",
+ "abusefilter-log-header": "Ca protokolo ('log') montras rezumo di modifiki en la filtrili.\nPor plura detali, videz [[Special:AbuseFilter/history|la listo di recenta chanji en la filtrili]].",
+ "abusefilter-diff-version": "Versiono ye $1 {{GENDER:$3|da}} $2"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/is.json b/www/wiki/extensions/AbuseFilter/i18n/is.json
new file mode 100644
index 00000000..27c98dff
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/is.json
@@ -0,0 +1,304 @@
+{
+ "@metadata": {
+ "authors": [
+ "S.Örvarr.S",
+ "Snævar",
+ "Matma Rex",
+ "Sveinn í Felli",
+ "Maxí"
+ ]
+ },
+ "abusefilter-desc": "Beitir sjálfvirkri brjóstvitsfræði á breytingar.",
+ "abusefilter": "Stillingar misnotkunar síunnar",
+ "abuselog": "Misnotkunarskrá",
+ "abusefilter-intro": "Velkominn í viðmót Misnotkunar síunnar.\nSían er sjálfvirkt tæki sem gerir sjálfvirkar brjóstvitsfræði athuganir á allar breytingar.\nÞetta viðmót sýnir lista yfir skilgreindar síur og leyfir breytingar á þeim.",
+ "abusefilter-mustbeeditor": "Vegna öryggisástæðna, geta eingöngu notendur með réttindi til þess að breyta þessum misnotkunar síum notað þetta viðmót.",
+ "abusefilter-warning": "'''Viðvörun:''' Þessi aðgerð hefur sjálfvirkt verið merkt sem skaðleg.\nSkaðlegar aðgerðir verða snögglega teknar til baka,\nog svívirðilegar eða síendurteknar breytingar leiða til banns á notenda eða vistfangi þínu.\nEf þú telur að þessi aðgerð sé uppbyggileg, þá mátt þú senda hana aftur til að staðfesta hana.\nStutt lýsing um misnotkunar síuna sem breyting þín passaði við er: $1",
+ "abusefilter-disallowed": "Þessi aðgerð hefur sjálfvirkt verið merkt sem skaðleg og hefur því verið hafnað.\nEf þú telur að þessi aðgerð hafi verið uppbyggileg, hafðu þá samband við möppudýr um það sem þú reyndir að gera.\nStutt lýsing um misnotkunar síuna sem breyting þín passaði við er: $1",
+ "abusefilter-blocked-display": "Þessi aðgerð hefur sjálfvirkt verið merkt sem skaðleg og því er bannað að framkvæma hana.\nAð auki, til þess að verja {{SITENAME}}, hefur notendanafn þitt og það vistfang sem þú notaðir síðast verið bannað.\nEf villa leiddi þig hingað, hafðu þá samband við möppudýr.\nStutt lýsing um misnotkunar síuna sem breyting þín passaði við er: $1",
+ "abusefilter-degrouped": "Þessi aðgerð hefur sjálfvirkt verið merkt sem skaðleg.\nÞví hefur henni verið hafnað og fyrst að grunur er um að aðgangur þinn sé í hættu hafa réttindi þín verið afturkölluð.\nEf villa leiddi þig hingað, hafðu þá samband við möppudýr með útskýringu um hvað þú reyndir að gera og mögulega færð þú réttindi þín aftur.\nStutt lýsing um misnotkunar síuna sem breyting þín passaði við er: $1",
+ "abusefilter-autopromote-blocked": "Þessi aðgerð hefur sjálfvirkt verið merkt sem skaðleg og því hefur henni verið hafnað.\nAð auki, sem öryggisráðstöfun, hafa þau réttindi sem eru sjálfvirkt gefin notendum verið afturkölluð tímabundið.\nStutt lýsing um misnotkunar síuna sem breyting þín passaði við er: $1",
+ "abusefilter-blocker": "Misnotkunar sía",
+ "abusefilter-blockreason": "Sjálfvirkt hafnað af misnotkunar síunni.\nLýsing misnotkunar síunnar sem passaði við breytinguna: $1",
+ "abusefilter-degroupreason": "Réttindi afturkölluð sjálfkrafa af misnotkunar síunni.\nLýsing síunnar: $1",
+ "abusefilter-accountreserved": "Þetta notendanafn er frátekið fyrir misnotkunar síuna.",
+ "right-abusefilter-modify": "Breyta misnotkunar síum",
+ "right-abusefilter-view": "Skoða misnotkunar síur",
+ "right-abusefilter-log": "Skoða misnotkunarskránna",
+ "right-abusefilter-log-detail": "Skoða ítarlegar færslur í misnotkunarskránni",
+ "right-abusefilter-private": "Skoða persónuleg gögn í misnotkunarskránni",
+ "right-abusefilter-modify-restricted": "Breyta misnotkunar síum með takmarkandi aðgerðum",
+ "right-abusefilter-revert": "Taka til baka allar breytingar sem voru gerðar af misnotkunar síu",
+ "right-abusefilter-view-private": "Sjá faldar misnotkunarsíur",
+ "right-abusefilter-hide-log": "Fela færslur í misnotkunarskránni",
+ "right-abusefilter-hidden-log": "Skoða faldar færslur í misnotkunarskránni",
+ "right-abusefilter-modify-global": "Búa til eða breyta altækum misnotkunar síum",
+ "action-abusefilter-modify": "breyta misnotkunar síum",
+ "action-abusefilter-view": "skoða misnotkunar síur",
+ "action-abusefilter-log": "skoða misnotkunarskránna",
+ "action-abusefilter-log-detail": "skoða ítarlegar færslur í misnotkunarskránni",
+ "action-abusefilter-private": "skoða persónuleg gögn í misnotkunarskránni",
+ "action-abusefilter-modify-restricted": "breyta misnotkunar síum með takmarkandi aðgerðum",
+ "action-abusefilter-revert": "taka til baka allar breytingar sem voru gerðar af misnotkunar síu",
+ "action-abusefilter-view-private": "skoða faldar misnotkunarsíur",
+ "abusefilter-log": "Misnotkunarskrá",
+ "abusefilter-log-summary": "Þetta er listi yfir allar aðgerðir sem passa við misnotkunar síurnar.",
+ "abusefilter-log-search": "Leita í misnotkunarskránni",
+ "abusefilter-log-search-user": "Notandi:",
+ "abusefilter-log-search-filter": "Síu einkenni (aðgreindu með pípumerki):",
+ "abusefilter-log-search-title": "Titill:",
+ "abusefilter-log-search-wiki": "Wiki:",
+ "abusefilter-log-search-entries-label": "Sýnileiki:",
+ "abusefilter-log-search-entries-all": "Allar færslur",
+ "abusefilter-log-search-submit": "Leita",
+ "abusefilter-log-entry": "$1: $2 {{GENDER:$8|hrundi}} af stað misnotkunar síu, með {{GENDER:$8|framkvæmd}} aðgerðarinnar „$3” á $4.\nAðgerðir: $5;\nLýsing síunnar: $6",
+ "abusefilter-log-entry-withdiff": "$1: $2 {{GENDER:$8|hrundi}} af stað misnotkunar síu, með {{GENDER:$8|framkvæmd}} aðgerðarinnar „$3” á $4.\nAðgerðir: $5;\nLýsing síunnar: $6 ($7)",
+ "abusefilter-log-detailedentry-meta": "$1: $2 {{GENDER:$8|hrundi}} af stað $3, með {{GENDER:$9|framkvæmd}} aðgerðarinnar „$4” á $5.\nAðgerðir: $6;\nLýsing síunnar: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "altæk sía $1",
+ "abusefilter-log-detailedentry-local": "sía $1",
+ "abusefilter-log-detailslink": "nánar",
+ "abusefilter-log-diff": "breyting",
+ "abusefilter-log-hidelink": "breyta sýnileika",
+ "abusefilter-log-details-legend": "Nánari upplýsingar um færsluna $1",
+ "abusefilter-log-details-var": "Breyta",
+ "abusefilter-log-details-val": "Gildi",
+ "abusefilter-log-details-vars": "Stiki aðgerðar",
+ "abusefilter-log-details-private": "Ítarlegt úr einkaannál",
+ "abusefilter-log-details-ip": "Upprunalegt vistfang",
+ "abusefilter-log-noactions": "engar",
+ "abusefilter-log-linkoncontribs": "misnotkunarskrá",
+ "abusefilter-log-linkoncontribs-text": "Misnotkunarskrá fyrir {{GENDER:$1|þennan notanda}}",
+ "abusefilter-log-hidden": "(falin færsla)",
+ "abusefilter-log-hidden-implicit": "(falið vegna þess að breytingum hefur verið eytt)",
+ "abusefilter-log-cannot-see-details": "Þú hefur ekki leyfi til þess að sjá atriði þessarar innfærslu.",
+ "abusefilter-log-details-hidden": "Þú getur ekki skoðað nánari upplýsingar um þessa færslu því hún er falin.",
+ "abusefilter-log-hide-legend": "Fela færslu",
+ "abusefilter-log-hide-id": "Auðkenni færslunnar:",
+ "abusefilter-log-hide-hidden": "Fela þessa færslu",
+ "abusefilter-log-hide-reason": "Ástæða:",
+ "abusefilter-log-hide-forbidden": "Þú hefur engin réttindi til að fela færslur í misnotkunar skránni",
+ "abusefilter-logentry-suppress": "faldi \"[[$1]]\"",
+ "abusefilter-logentry-unsuppress": "óhaldi „[[$1]]“",
+ "logentry-abusefilter-hit": "$1 {{GENDER:$2|hrundi}} af stað misnotkunar síu $4, með breytingunni \"$5\" á $3. Framkvæmdi aðgerðirnar $6 ($7)",
+ "abusefilter-management": "Stjórn misnotkunar síunnar",
+ "abusefilter-list": "Allar síur",
+ "abusefilter-list-id": "Einkenni",
+ "abusefilter-list-status": "Staða",
+ "abusefilter-list-public": "Sýnileg lýsing",
+ "abusefilter-list-consequences": "Afleiðingar",
+ "abusefilter-list-visibility": "Sýnileiki",
+ "abusefilter-list-edit": "Breyting",
+ "abusefilter-list-details": "Nánar",
+ "abusefilter-list-limit": "Fjöldi færslna á síðu:",
+ "abusefilter-list-lastmodified": "Síðast breytt",
+ "abusefilter-list-group": "Síuhópur",
+ "abusefilter-hidden": "Falið",
+ "abusefilter-unhidden": "Sýnileg öllum",
+ "abusefilter-enabled": "Virk",
+ "abusefilter-deleted": "Eytt",
+ "abusefilter-disabled": "Óvirk",
+ "abusefilter-new": "Búa til nýja misnotkunar síu",
+ "abusefilter-return": "Aftur á stjórn misnotkunar síunnar",
+ "abusefilter-status-global": "Altæk",
+ "abusefilter-list-options": "Möguleikar",
+ "abusefilter-list-options-deleted": "Eyddar síur:",
+ "abusefilter-list-options-deleted-only": "Sýna eingöngu eyddar síur",
+ "abusefilter-list-options-deleted-hide": "Fela eyddar síur",
+ "abusefilter-list-options-deleted-show": "Birta eyddar síur",
+ "abusefilter-list-options-scope": "Sýna síur:",
+ "abusefilter-list-options-scope-local": "Eingöngu staðbundnar reglur",
+ "abusefilter-list-options-scope-global": "Eingöngu altækar reglur",
+ "abusefilter-list-options-disabled": "Óvirkar síur:",
+ "abusefilter-list-options-hidedisabled": "Fela óvirkar síur",
+ "abusefilter-list-options-submit": "Uppfæra",
+ "abusefilter-tools-expr": "Segðar prófun",
+ "abusefilter-tools-submitexpr": "meta",
+ "abusefilter-tools-reautoconfirm-user": "Notandi:",
+ "abusefilter-status": "Yfir síðustu $1 {{PLURAL:$1|aðgerð|aðgerðir}}, $2 ($3%) {{PLURAL:$2|hefur|hafa}} náð skilyrðunum $4, og $5 ($6%) {{PLURAL:$5|hefur|hafa}} passað við eina af þeim síum sem eru virkar.",
+ "abusefilter-edit-subtitle": "Breyti síu $1",
+ "abusefilter-edit-subtitle-new": "Býr til síu",
+ "abusefilter-edit-oldwarning": "<strong>ATH: Þú ert að breyta gamalli útgáfu þessarar síu.\nSú tölfræði sem vitnað er í er fyrir nýjustu útgáfu síunnar.\nEf þú vistar breytingarnar munu allar breytingar sem gerðar hafa verið á henni frá þeirri útgáfu vera fjarlægðar ef þú vistar.</strong>\n[[Special:AbuseFilter/history/$2|Fara aftur á breytingarskrá síunnar]]",
+ "abusefilter-edit-status-label": "Tölfræði:",
+ "abusefilter-edit-status": "Af síðustu $1 {{PLURAL:$1|aðgerð|aðgerðum}} hefur þessi sía passað við $2 ($3%).",
+ "abusefilter-edit-status-profile": "Af síðustu $1 {{PLURAL:$1|aðgerð|aðgerðum}} hefur þessi sía passað við $2 ($3%).\nAð meðaltali tekur vinnsla síunnar $4 ms og eyðir $5 {{PLURAL:$5|skilyrði|skilyrðum}} af hámarksfjölda skilyrða.",
+ "abusefilter-edit-new": "Ný sía",
+ "abusefilter-edit-save": "Vista síu",
+ "abusefilter-edit-id": "Síu einkenni:",
+ "abusefilter-edit-description": "Lýsing:\n:''(birtist öllum)''",
+ "abusefilter-edit-group": "Síuhópur:",
+ "abusefilter-edit-flags": "Merkingar:",
+ "abusefilter-edit-enabled": "Virkja þessa síu",
+ "abusefilter-edit-deleted": "Merkja sem eydda",
+ "abusefilter-edit-hidden": "Fela nánari upplýsingar um þessa síu",
+ "abusefilter-edit-global": "Altæk sía",
+ "abusefilter-edit-rules": "Skilyrði:",
+ "abusefilter-edit-notes": "Minnisatriði:",
+ "abusefilter-edit-lastmod": "Síunni var síðast breytt:",
+ "abusefilter-edit-lastmod-text": "$1 af $2",
+ "abusefilter-edit-action-warn": "Virkja þessar aðgerðir eftir að notandinn hefur verið varaður við",
+ "abusefilter-edit-action-disallow": "Hindra notandann frá því að gera tiltekna aðgerð",
+ "abusefilter-edit-action-blockautopromote": "Endurvekja réttindi sjálfvirkt staðfestra notenda",
+ "abusefilter-edit-action-degroup": "Fjarlægja öll réttindi notandans",
+ "abusefilter-edit-action-block": "Banna notandann og/eða vistfang hans frá frekari breytingum",
+ "abusefilter-edit-action-throttle": "Eingöngu virkja aðgerðir ef notandinn fer yfir eftirfarandi hlutfall",
+ "abusefilter-edit-action-rangeblock": "Fjöldabanna vistföng út frá vistfangi notandans",
+ "abusefilter-edit-action-tag": "Merkja breytinguna til frekari skoðunar",
+ "abusefilter-edit-throttle-count": "Fjöldi aðgerða sem eru leyfðir:",
+ "abusefilter-edit-throttle-period": "Tímalengd:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|sekúnda|sekúndur}}",
+ "abusefilter-edit-warn-message": "Kerfisskilaboð sem verða notuð til viðvörunar:",
+ "abusefilter-edit-warn-other": "Önnur skilaboð",
+ "abusefilter-edit-warn-other-label": "Nafn viðvörunarskilaboðanna:\n:''(í nafnrýminu Strengir)''",
+ "abusefilter-edit-warn-actions": "Aðgerðir:",
+ "abusefilter-edit-warn-preview": "Forskoða valin skilaboð",
+ "abusefilter-edit-warn-edit": "Stofna/Breyta völdum skilaboðum",
+ "abusefilter-edit-tag-tag": "[[Special:Tags|Tög]] sem eiga að gilda (eitt á línu):",
+ "abusefilter-edit-denied": "Þú getur ekki skoðað nánari upplýsingar um þessa síu, því hún er falin.",
+ "abusefilter-edit-main": "Stikar síunnar",
+ "abusefilter-edit-done-subtitle": "Síu breytt",
+ "abusefilter-edit-done": "[[Special:AbuseFilter/history/$1/diff/prev/$2|Breytingarnar þínar]] á [[Special:AbuseFilter/$1|síu $3]] hafa verið vistaðar.",
+ "abusefilter-edit-badsyntax": "Það er villa í málskipun síunnar sem þú hefur tilgreint.\nFrálög þáttarans eru: <pre>$1</pre>",
+ "abusefilter-edit-restricted": "Þú getur ekki breytt þessari síu, því hún inniheldur eina eða fleiri takmarkandi afleiðingar.\nVinsamlegast spurðu notanda sem hefur réttindi að bæta við takmarkandi afleiðingum að gera breytinguna fyrir þig.",
+ "abusefilter-edit-viewhistory": "Skoða breytingaskrá þessarar síu",
+ "abusefilter-edit-history": "Breytingaskrá:",
+ "abusefilter-edit-check": "Athuga málskipan",
+ "abusefilter-edit-badfilter": "Sían sem þú tilgreindir er ekki til",
+ "abusefilter-edit-revert": "Taka aftur breytingar sem þessi sía hefur gert",
+ "abusefilter-edit-tools": "Verkfæri:",
+ "abusefilter-edit-test-link": "Prófa síuna á síðustu breytingum",
+ "abusefilter-edit-export": "Flytja síuna á annan wiki",
+ "abusefilter-edit-syntaxok": "Engar málskipunar villur fundust.",
+ "abusefilter-edit-syntaxerr": "Málskipunar villa fannst: $1",
+ "abusefilter-edit-bad-tags": "Eitt eða fleiri merkjanna sem þú hefur tilgreint eru ógild.\nMerki eiga að vera stutt, þau mega ekki innihalda sértákn og þau ættu aldrei að vera frátekin fyrir annan hugbúnað. Reyndu að velja eitthvað annað heiti.",
+ "abusefilter-edit-notallowed": "Þú getur ekki breytt eða stofnað misnotkunar síu.",
+ "abusefilter-edit-builder-select": "Veldu möguleika til að bæta honum við bendilinn.",
+ "abusefilter-edit-builder-group-op-arithmetic": "Reikningsaðgerðir",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Plúsa (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Mínusa (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Margfalda (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Deila (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Leif (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Veldi (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Samanburðarvirkjar",
+ "abusefilter-edit-builder-op-comparison-equal": "Jafnt og (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Ekki jafnt og (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "Minna en (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Stærra en (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Minna en eða jafnt og (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Stærra en eða jafnt og (>=)",
+ "abusefilter-edit-builder-op-bool-not": "Ekki (!)",
+ "abusefilter-edit-builder-op-bool-and": "Og (&)",
+ "abusefilter-edit-builder-op-bool-or": "Eða (|)",
+ "abusefilter-edit-builder-op-bool-xor": "XOR (^)",
+ "abusefilter-edit-builder-group-misc": "Ýmislegt",
+ "abusefilter-edit-builder-group-funcs": "Föll",
+ "abusefilter-edit-builder-funcs-length": "Strengjalengd (length)",
+ "abusefilter-edit-builder-group-vars": "Breytur",
+ "abusefilter-edit-builder-vars-timestamp": "Unix-tímastimpill breytingar",
+ "abusefilter-edit-builder-vars-action": "Aðgerð",
+ "abusefilter-edit-builder-vars-addedlines": "Línum viðbætt í breytingu",
+ "abusefilter-edit-builder-vars-newsize": "Ný skrárstærð",
+ "abusefilter-edit-builder-vars-oldsize": "Eldri skrárstærð",
+ "abusefilter-edit-builder-vars-removedlines": "Línur fjarlægðar í breytingu",
+ "abusefilter-edit-builder-vars-summary": "Breytingarágrip/ástæða",
+ "abusefilter-edit-builder-vars-article-id": "Einkennisnúmer síðunnar",
+ "abusefilter-edit-builder-vars-article-ns": "Nafnrými síðunnar",
+ "abusefilter-edit-builder-vars-article-text": "Titill síðunnar (án nafnrýmis)",
+ "abusefilter-edit-builder-vars-user-editcount": "Breytingaheildartala notanda",
+ "abusefilter-edit-builder-vars-user-age": "Aldur notandaaðgangsins",
+ "abusefilter-edit-builder-vars-user-name": "Nafn notandaaðgangs",
+ "abusefilter-edit-builder-vars-user-blocked": "Hvort notandi sé bannaður",
+ "abusefilter-filter-log": "Nýlegar breytingar síunnar",
+ "abusefilter-history-foruser": "Breytingar eftir $1",
+ "abusefilter-history-hidden": "Falið",
+ "abusefilter-history-enabled": "Virk",
+ "abusefilter-history-global": "Altæk",
+ "abusefilter-history-timestamp": "Tími",
+ "abusefilter-history-user": "Notandi",
+ "abusefilter-history-public": "Lýsing sýnileg öllum",
+ "abusefilter-history-flags": "Merkingar",
+ "abusefilter-history-filter": "Síu regla",
+ "abusefilter-history-comments": "Athugasemdir",
+ "abusefilter-history-actions": "Aðgerðir",
+ "abusefilter-history-deleted": "Eytt",
+ "abusefilter-history-filterid": "Sía",
+ "abusefilter-history-select-legend": "Endurskilgreina leit",
+ "abusefilter-history-select-user": "Notandi:",
+ "abusefilter-history-select-submit": "Endurskilgreina",
+ "abusefilter-history-diff": "Breytingar",
+ "abusefilter-history-error-hidden": "Sían sem þú óskaðir eftir er falin og þú getur ekki skoðað breytingarsögu hennar.",
+ "abusefilter-exception-unrecognisedtoken": "Óþekktur tóki \"$2\" á staf $1",
+ "abusefilter-exception-noparams": "Enginn stiki gefinn fyrir aðgerðina \"$2\" á stafnum $1",
+ "abusefilter-exception-dividebyzero": "Ómögulegt að deila $2 með núlli á stafnum $1",
+ "abusefilter-exception-unrecognisedvar": "Óþekkt breyta $2 á staf $1",
+ "abusefilter-exception-notenoughargs": "Of fáar frumbreytur fyrir aðgerðina $2 á stafnum $1.\nBjóst við $3 {{PLURAL:$3|breytu|breytum}} en fékk $4",
+ "abusefilter-exception-overridebuiltin": "Ómögulegt að hunsa kerfislæga breytu \"$2\" á staf $1.",
+ "abusefilter-action-tag": "Tög",
+ "abusefilter-action-warn": "viðvörun",
+ "abusefilter-action-block": "banna",
+ "abusefilter-action-degroup": "Fjarlægja úr hópum",
+ "abusefilter-action-rangeblock": "Fjöldabanna",
+ "abusefilter-action-disallow": "Hafna",
+ "abusefilter-revert-title": "Taka aftur allar breytingar síunnar $1",
+ "abusefilter-revert-intro": "Þetta eyðublað gerir þér kleyft að taka aftur allar breytingar sem misnotkunarsían $1 hefur gert.\nVinsamlegast farðu varlega á meðan þú notar þetta smáforrit.",
+ "abusefilter-revert-preview-item": "$1: $2 {{GENDER:$7|gerði}} $3 á $4.\nAðgerðir sem verða teknar til baka: $5 ($6)",
+ "abusefilter-revert-search-legend": "Veldu eina af aðgerðum síunnar sem á að afturkalla",
+ "abusefilter-revert-periodstart": "Upphafstímabil:",
+ "abusefilter-revert-periodend": "Endatímabil:",
+ "abusefilter-revert-search": "Velja aðgerðir",
+ "abusefilter-revert-filter": "Sía:",
+ "abusefilter-revert-preview-intro": "Fyrir neðan eru þær aðgerðir misnotkunnarsíunnar sem taka á til baka.\nFarðu vandlega yfir listann og ýttu á „{{int:abusefilter-revert-confirm}}” til að staðfesta valið þitt.",
+ "abusefilter-revert-confirm": "staðfesta",
+ "abusefilter-revert-success": "Þú hefur tekið aftur allar breytingar misnotkunar [[Special:AbuseFilter/$1|síunnar $2]]",
+ "abusefilter-revert-reason": "Tók sjálfvirkt til baka allar breytingar misnotkunar síunnar $1.\nÁstæða: $2",
+ "abusefilter-revert-reasonfield": "Ástæða:",
+ "abusefilter-test": "Prófa síuna gegn fyrri breytingum",
+ "abusefilter-test-intro": "Þessi síða leyfir þér að prófa síu gegn síðustu $1 {{PLURAL:$1|breytingu|breytingum}}.\nTil þess að prófa síu sem til er fyrir, settu auðkenni hennar í reitinn hér fyrir neðan og ýttu á „{{int:abusefilter-test-load}}”.",
+ "abusefilter-test-legend": "Síu prófun",
+ "abusefilter-test-load-filter": "Auðkenni síunnar:",
+ "abusefilter-test-submit": "Prófun",
+ "abusefilter-test-load": "Hlaða",
+ "abusefilter-test-user": "Breytingar eftir notenda:",
+ "abusefilter-test-period-start": "Breytingar gerðar eftir:",
+ "abusefilter-test-period-end": "Breytingar gerðar fyrir:",
+ "abusefilter-test-page": "Breytingar á síðu:",
+ "abusefilter-test-shownegative": "Sýna breytingar sem samsvara ekki síunni.",
+ "abusefilter-test-syntaxerr": "Sían inniheldur málskipunarvillu.\nÞú getur fengið tæmandi útskýringu með því að ýta á „{{int:abusefilter-edit-check}}”.",
+ "abusefilter-changeslist-examine": "athuga",
+ "abusefilter-examine": "Athuga einstakar breytingar",
+ "abusefilter-examine-intro": "Þessi síða gerir þér kleyft að athuga breytur misnotkunar síunnar fyrir einstakar breytingar og prófa þær gegn síu.",
+ "abusefilter-examine-legend": "Velja breytingar",
+ "abusefilter-examine-user": "Notandi:",
+ "abusefilter-examine-title": "Titill síðu:",
+ "abusefilter-examine-submit": "Leita",
+ "abusefilter-examine-test": "Prófa þessa breytingu við síu",
+ "abusefilter-examine-test-button": "Prófa síu",
+ "abusefilter-examine-match": "Sían passaði við þessa breytingu.",
+ "abusefilter-examine-nomatch": "Sían passaði ekki við þessa breytingu.",
+ "abusefilter-examine-syntaxerror": "Sían hefur vitlausa málskipun",
+ "abusefilter-examine-notfound": "Breytingin sem þú tilgreindir fannst ekki.",
+ "abusefilter-examine-incompatible": "Breytingin sem þú tilgreindir er ekki studd af misnotkunar síunni.",
+ "abusefilter-examine-noresults": "Engar niðurstöður fundust með þeim leitarskilmálum sem þú tilgreindir.",
+ "abusefilter-topnav": "'''Valmynd misnotkunar síunnar'''",
+ "abusefilter-topnav-home": "Heim",
+ "abusefilter-topnav-test": "Bunka prófun",
+ "abusefilter-topnav-examine": "Prófa síðustu breytingar",
+ "abusefilter-topnav-log": "Misnotkunarskrá",
+ "abusefilter-topnav-tools": "Kembiforrit",
+ "abusefilter-topnav-import": "Flytja inn síu",
+ "abusefilter-log-name": "Misnotkunar síu skrá",
+ "abusefilter-log-noresults": "Engar niðurstöður",
+ "abusefilter-diff-title": "Munur milli útgáfa",
+ "abusefilter-diff-item": "Atriði",
+ "abusefilter-diff-version": "Útgáfa frá $1 {{GENDER:$3|eftir}} $2",
+ "abusefilter-diff-info": "Grunnupplýsingar",
+ "abusefilter-diff-invalid": "Mistókst að sækja þær útgáfur sem þú óskaðir eftir",
+ "abusefilter-diff-backhistory": "Aftur í breytingarskrá síunnar",
+ "abusefilter-diff-next": "Nýlegri breytingar",
+ "abusefilter-import-submit": "Flytja inn gögn",
+ "abusefilter-group-default": "Sjálfgefið",
+ "abusefilter-http-error": "HTTP-villa kom upp: $1",
+ "abusefilter-log-details-id": "Auðkenni annáls",
+ "abusefilter-log-ip-not-available": "Ekki tiltækt",
+ "apierror-abusefilter-badsyntax": "Sían er með ranga málskipun."
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/it.json b/www/wiki/extensions/AbuseFilter/i18n/it.json
new file mode 100644
index 00000000..cd989bac
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/it.json
@@ -0,0 +1,483 @@
+{
+ "@metadata": {
+ "authors": [
+ "Beta16",
+ "Blaisorblade",
+ "BrokenArrow",
+ "Brownout",
+ "Darth Kule",
+ "F. Cosoleto",
+ "Gianfranco",
+ "Melos",
+ "Nemo bis",
+ "Pietrodn",
+ "Valepert",
+ "Ximo17",
+ "Ankabel",
+ "Chiara.Graziani1991",
+ "Nivit",
+ "Ricordisamoa",
+ "Macofe",
+ "Alexmar983",
+ "Matma Rex",
+ "Greis",
+ "Horcrux92",
+ "Daimona Eaytoy",
+ "Fitoschido"
+ ]
+ },
+ "abusefilter-desc": "Applica un'euristica automatica alle modifiche.",
+ "abusefilter": "Configurazione del filtro anti abusi",
+ "abuselog": "Registro del filtro anti abusi",
+ "abusefilter-intro": "Benvenuti nell'interfaccia di gestione del filtro anti abusi.\nIl filtro anti abusi è un sistema automatizzato per l'applicazione di euristiche automatiche a tutte le azioni.\nL'interfaccia mostra un elenco dei filtri definiti e ne consente la modifica.",
+ "abusefilter-mustbeeditor": "Per motivi di sicurezza, solo gli utenti con il diritto di modificare i filtri anti abusi possono utilizzare questa interfaccia.",
+ "abusefilter-warning": "'''Attenzione:''' questa azione è stata ritenuta pericolosa in base a una verifica automatica.\nLe azioni non costruttive verranno prontamente annullate; l'inserimento palese o ripetuto di contributi non costruttivi darà luogo al blocco dell'utenza o del tuo indirizzo IP.\nSe si ritiene che l'azione in questione sia costruttiva, devi inviarla nuovamente per confermarla.\nQuesta è una breve descrizione della regola di sicurezza che è stata violata: $1",
+ "abusefilter-disallowed": "Questa azione è stata ritenuta pericolosa e quindi impedita in base a una verifica automatica.\nSe si ritiene che l'azione in questione sia costruttiva, contattare un amministratore e informarlo su ciò che si stava tentando di fare.\nQuesta è una breve descrizione della regola di sicurezza che è stata violata: $1",
+ "abusefilter-blocked-display": "Questa azione è stata ritenuta pericolosa e quindi impedita in base a una verifica automatica.\nInoltre, allo scopo di proteggere {{SITENAME}} l'utenza coinvolta e tutti gli indirizzi IP ad essa associati sono stati bloccati e non possono più effettuare modifiche.\nSe si ritiene che si tratti di un errore, si prega di contattare un amministratore.\nQuesta è una breve descrizione della regola di sicurezza che è stata violata: $1",
+ "abusefilter-degrouped": "Questa azione è stata ritenuta pericolosa in base a una verifica automatica.\nL'azione è quindi stata impedita e tutti i diritti connessi all'utenza sono stati revocati, in quanto vi è il rischio che la stessa sia stata compromessa.\nSe si ritiene che vi sia un errore, si prega di contattare un burocrate per spiegare le ragioni di quest'azione; i diritti connessi all'utenza potrebbero essere ripristinati.\nQuesta è una breve descrizione della regola di sicurezza che è stata violata: $1",
+ "abusefilter-autopromote-blocked": "Questa azione è stata ritenuta pericolosa e quindi impedita in base a una verifica automatica.\nInoltre, come misura di sicurezza sono stati temporaneamente revocati all'utenza coinvolta alcuni dei privilegi che di norma vengono concessi alle utenze conosciute.\nQuesta è una breve descrizione della regola di sicurezza che è stata violata: $1",
+ "abusefilter-blocker": "Filtro anti abusi",
+ "abusefilter-blockreason": "Bloccato automaticamente dal filtro anti abusi.\nDescrizione della regola corrispondente: $1",
+ "abusefilter-degroupreason": "Diritti rimossi automaticamente dal filtro anti abusi. Descrizione della regola: $1",
+ "abusefilter-accountreserved": "Questo nome utente è riservato al filtro anti abusi.",
+ "right-abusefilter-modify": "Modifica i filtri anti abusi",
+ "right-abusefilter-view": "Visualizza i filtri anti abusi",
+ "right-abusefilter-log": "Visualizza il registro del filtro anti abusi",
+ "right-abusefilter-log-detail": "Visualizza voci dettagliate del registro del filtro anti abusi",
+ "right-abusefilter-private": "Visualizza i dati privati nel registro del filtro anti abusi",
+ "right-abusefilter-modify-restricted": "Modifica i filtri anti abusi con le azioni riservate",
+ "right-abusefilter-revert": "Annulla tutti i cambiamenti di un determinato filtro anti abusi",
+ "right-abusefilter-view-private": "Visualizza i filtri anti abusi segnati come privati",
+ "right-abusefilter-log-private": "Visualizza gli elementi del registro degli abusi contrassegnati come privati",
+ "right-abusefilter-hide-log": "Nasconde voci nel registro degli abusi",
+ "right-abusefilter-hidden-log": "Visualizza voci nascoste del registro del filtro anti abusi",
+ "right-abusefilter-modify-global": "Crea o modifica i filtri globali anti abusi",
+ "action-abusefilter-modify": "modificare i filtri anti abusi",
+ "action-abusefilter-view": "visualizzare i filtri anti abusi",
+ "action-abusefilter-log": "visualizzare il registro del filtro anti abusi",
+ "action-abusefilter-log-detail": "visualizzare le voci di dettaglio del registro del filtro anti abusi",
+ "action-abusefilter-private": "visualizzare le informazioni riservate nel registro del filtro anti abusi",
+ "action-abusefilter-modify-restricted": "modificare i filtri anti abusi con le azioni riservate",
+ "action-abusefilter-revert": "ripristinare tutte le modifiche apportate da un determinato filtro anti abusi",
+ "action-abusefilter-view-private": "visualizzare i filtri anti abusi segnati come privati",
+ "action-abusefilter-log-private": "visualizzare i registri dei filtri anti abusi contrassegnati come privati",
+ "abusefilter-log": "Registro del filtro anti abusi",
+ "abusefilter-log-summary": "Questo registro mostra un elenco di tutte le azioni che hanno attivato uno o più filtri.",
+ "abusefilter-log-search": "Cerca nel registro del filtro anti abusi",
+ "abusefilter-log-search-user": "Utente:",
+ "abusefilter-log-search-filter": "ID filtri (separati da barre verticali):",
+ "abusefilter-log-search-title": "Titolo:",
+ "abusefilter-log-search-wiki": "Wiki:",
+ "abusefilter-log-search-impact": "Impatto:",
+ "abusefilter-log-search-impact-all": "Tutte le azioni",
+ "abusefilter-log-search-impact-saved": "Solo modifiche salvate",
+ "abusefilter-log-search-impact-not-saved": "Senza modifiche salvate",
+ "abusefilter-log-search-entries-label": "Visibilità:",
+ "abusefilter-log-search-action-taken-label": "Azione intrapresa:",
+ "abusefilter-log-search-action-taken-any": "Qualsiasi",
+ "abusefilter-log-search-submit": "Ricerca",
+ "abusefilter-log-entry": "$1: $2 {{GENDER:$8|ha provocato}} l'attivazione di un filtro anti abusi con l'azione \"$3\" su $4.\nAzioni intraprese: $5;\nDescrizione del filtro: $6",
+ "abusefilter-log-entry-withdiff": "$1: $2 {{GENDER:$8|ha provocato}} l'attivazione di un filtro anti abusi con l'azione \"$3\" su $4.\nAzioni intraprese: $5;\nDescrizione del filtro: $6 ($7)",
+ "abusefilter-log-detailedentry-meta": "$1: $2 {{GENDER:$9|ha provocato}} l'attivazione $3 con l'azione \"$4\" su $5.\nAzioni intraprese: $6;\nDescrizione del filtro: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "filtro globale $1",
+ "abusefilter-log-detailedentry-local": "il filtro $1",
+ "abusefilter-log-detailslink": "dettagli",
+ "abusefilter-log-diff": "diff",
+ "abusefilter-log-hidelink": "regola visibilità",
+ "abusefilter-log-details-legend": "Dettagli della voce di registro $1",
+ "abusefilter-log-details-var": "Variabile",
+ "abusefilter-log-details-val": "Valore",
+ "abusefilter-log-details-vars": "Parametri dell'azione",
+ "abusefilter-log-details-private": "Dettagli registro privati",
+ "abusefilter-log-details-ip": "Indirizzo IP di origine",
+ "abusefilter-log-noactions": "nessuna",
+ "abusefilter-log-details-diff": "Modifiche effettuate",
+ "abusefilter-log-linkoncontribs": "filtro anti abusi",
+ "abusefilter-log-linkoncontribs-text": "Registro del filtro anti abusi relativo a {{GENDER:$1|questo utente}}",
+ "abusefilter-log-hidden": "(voce nascosta)",
+ "abusefilter-log-hidden-implicit": "(nascosto perché la versione è stata eliminata)",
+ "abusefilter-log-cannot-see-details": "Non si dispone dei permessi necessari per vedere i dettagli di questa voce del registro.",
+ "abusefilter-log-details-hidden": "Non è possibile visualizzare i dettagli di questa voce, in quanto nascosta al pubblico.",
+ "abusefilter-log-private-not-included": "Uno o più ID filtro che hai indicato sono privati. Poiché non puoi visualizzare i dettagli dei filtri privati, questi filtri non sono stati cercati.",
+ "abusefilter-log-hide-legend": "Nascondi voce del registro",
+ "abusefilter-log-hide-id": "ID voce del registro:",
+ "abusefilter-log-hide-hidden": "Nascondere questa voce dalla visione pubblica",
+ "abusefilter-log-hide-reason": "Motivo:",
+ "abusefilter-log-hide-reason-other": "Altri motivi/dettagli:",
+ "abusefilter-log-hide-forbidden": "Non si dispone dei permessi necessari per nascondere le voci del registro abusi.",
+ "abusefilter-logentry-suppress": "ha nascosto \"[[$1]]\"",
+ "abusefilter-logentry-unsuppress": "ha reso visibile \"[[$1]]\"",
+ "logentry-abusefilter-hit": "$1 {{GENDER:$2|ha attivato}} $4, {{GENDER:$2|eseguendo}} l'azione \"$5\" su $3. Azioni intraprese: $6 ($7)",
+ "abusefilter-management": "Gestione del filtro anti abusi",
+ "abusefilter-list": "Tutti i filtri",
+ "abusefilter-list-id": "ID filtro",
+ "abusefilter-list-pattern": "Pattern",
+ "abusefilter-list-status": "Stato",
+ "abusefilter-list-public": "Descrizione pubblica",
+ "abusefilter-list-consequences": "Conseguenze",
+ "abusefilter-list-visibility": "Visibilità",
+ "abusefilter-list-hitcount": "Numero di corrispondenze",
+ "abusefilter-list-edit": "Modifica",
+ "abusefilter-list-details": "Dettagli",
+ "abusefilter-list-limit": "Numero per pagina:",
+ "abusefilter-list-lastmodified": "Ultima modifica",
+ "abusefilter-list-group": "Gruppo filtri",
+ "abusefilter-hidden": "Privato",
+ "abusefilter-unhidden": "Pubblico",
+ "abusefilter-enabled": "Attivato",
+ "abusefilter-deleted": "Cancellato",
+ "abusefilter-disabled": "Disattivato",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|corrispondenza|corrispondenze}}",
+ "abusefilter-new": "Crea un nuovo filtro",
+ "abusefilter-return": "Torna alla gestione dei filtri",
+ "abusefilter-status-global": "Globale",
+ "abusefilter-list-options": "Opzioni",
+ "abusefilter-list-options-deleted": "Filtri cancellati:",
+ "abusefilter-list-options-deleted-only": "Visualizza solo i filtri cancellati",
+ "abusefilter-list-options-deleted-hide": "Nascondi i filtri cancellati",
+ "abusefilter-list-options-deleted-show": "Comprendi i filtri cancellati",
+ "abusefilter-list-options-scope": "Mostra filtri:",
+ "abusefilter-list-options-scope-local": "Solo regole locali",
+ "abusefilter-list-options-scope-global": "Solo regole globali",
+ "abusefilter-list-options-scope-all": "Regole locali e globali",
+ "abusefilter-list-options-disabled": "Filtri disattivati:",
+ "abusefilter-list-options-hidedisabled": "Nascondi i filtri disattivati",
+ "abusefilter-list-options-searchfield": "Cerca tra le regole:",
+ "abusefilter-list-options-searchpattern": "Inserisci un pattern",
+ "abusefilter-list-options-searchoptions": "Modalità di ricerca:",
+ "abusefilter-list-options-search-like": "Testo semplice",
+ "abusefilter-list-options-search-rlike": "Espressione regolare",
+ "abusefilter-list-options-search-irlike": "Espressione regolare senza distinzione tra maiuscole e minuscole",
+ "abusefilter-list-regexerror": "Si è verificato un errore durante la ricerca: errore di sintassi nell'espressione regolare.",
+ "abusefilter-list-options-submit": "Aggiorna",
+ "abusefilter-tools-text": "Di seguito sono riportati alcuni strumenti utili per la costruzione e la verifica dei filtri anti abusi.",
+ "abusefilter-tools-expr": "Verifica espressioni",
+ "abusefilter-tools-submitexpr": "Valuta",
+ "abusefilter-tools-reautoconfirm": "Ripristina lo stato di autoconfirmed",
+ "abusefilter-tools-reautoconfirm-user": "Utente:",
+ "abusefilter-tools-reautoconfirm-submit": "Ripristina autoconfirm",
+ "abusefilter-reautoconfirm-none": "Lo stato di autoconfirmed dell'utente non è stato sospeso.",
+ "abusefilter-reautoconfirm-notallowed": "Non è consentito ripristinare lo stato di autoconfirmed.",
+ "abusefilter-reautoconfirm-done": "Lo stato di autoconfirmed dell'utenza è stato ripristinato",
+ "abusefilter-status": "Fra le ultime $1 {{PLURAL:$1|azione|azioni}}, $2 ($3 %) {{PLURAL:$2|ha|hanno}} raggiunto il limite di $4 condizioni e $5 ($6 %) {{PLURAL:$5|ha|hanno}} attivato uno dei filtri attualmente attivi.",
+ "abusefilter-edit": "Modifica filtro anti abusi",
+ "abusefilter-edit-subtitle": "Modifica del filtro $1",
+ "abusefilter-edit-subtitle-new": "Creazione filtro",
+ "abusefilter-edit-oldwarning": "<strong>Si sta modificando una versione obsoleta di questo filtro.\nLe statistiche citate si riferiscono alla versione più recente del filtro.\nSalvando le modifiche verranno annullati tutti i cambiamenti apportati da questa versione in poi.</strong> &bull;\n[[Special:AbuseFilter/history/$2|Ritorna alla cronologia del filtro]].",
+ "abusefilter-edit-status-label": "Statistiche:",
+ "abusefilter-edit-status": "Rispetto {{PLURAL:$1|all'azione più recente|alle $1 azioni più recenti}}, questo filtro ha trovato $2 {{PLURAL:$2|corrispondenza|corrispondenze}} ($3 %).",
+ "abusefilter-edit-status-profile": "Rispetto {{PLURAL:$1|all'azione più recente|alle $1 azioni più recenti}}, questo filtro ha trovato $2 {{PLURAL:$2|corrispondenza|corrispondenze}} ($3 %).\nIl suo tempo medio di esecuzione è di $4 ms, e impiega $5 {{PLURAL:$5|condizione|condizioni}} del limite di condizioni.",
+ "abusefilter-edit-throttled-warning": "Attenzione: questo filtro è stato automaticamente identificato come pericoloso. Come misura di sicurezza, le azioni conseguenti non saranno eseguite ($1). Per favore controlla e [[mw:Extension:AbuseFilter/Conditions|ottimizza]] le tue condizioni per rimuovere questa restrizione.",
+ "abusefilter-edit-new": "Nuovo filtro",
+ "abusefilter-edit-save": "Salva filtro",
+ "abusefilter-edit-id": "ID filtro:",
+ "abusefilter-edit-switch-editor": "Cambia editor",
+ "abusefilter-edit-description": "Descrizione:\n:''(visibile pubblicamente)''",
+ "abusefilter-edit-field-description": "descrizione",
+ "abusefilter-edit-group": "Gruppo filtri:",
+ "abusefilter-edit-flags": "Opzioni:",
+ "abusefilter-edit-enabled": "Attiva questo filtro",
+ "abusefilter-edit-deleted": "Segna come cancellato",
+ "abusefilter-edit-hidden": "Nascondi i dettagli di questo filtro al pubblico",
+ "abusefilter-edit-global": "Filtro globale",
+ "abusefilter-edit-rules": "Condizioni:",
+ "abusefilter-edit-field-conditions": "condizioni",
+ "abusefilter-edit-notes": "Note:",
+ "abusefilter-edit-lastmod": "Ultima modifica al filtro:",
+ "abusefilter-edit-lastmod-text": "$1 da parte di $2",
+ "abusefilter-edit-hitcount": "Corrispondenze per il filtro:",
+ "abusefilter-edit-consequences": "Azioni da intraprendere in caso di corrispondenza",
+ "abusefilter-edit-action-warn": "Attiva le seguenti azioni dopo aver avvisato l'utente",
+ "abusefilter-edit-action-disallow": "Impedisci all'utente di effettuare l'azione in questione",
+ "abusefilter-edit-action-blockautopromote": "Revoca lo stato di autoconfermato dell'utente",
+ "abusefilter-edit-action-degroup": "Rimuovi l'utente da tutti i gruppi privilegiati",
+ "abusefilter-edit-action-block": "Blocca l'utenza o indirizzo IP",
+ "abusefilter-edit-action-blocktalk": "Impedisci all'utente o indirizzo IP di modificare la sua pagina di discussione",
+ "abusefilter-edit-action-throttle": "Attiva le azioni solo se l'utente supera un limite predeterminato",
+ "abusefilter-edit-action-rangeblock": "Bloccare il rispettivo intervallo IP di origine dell'utente.",
+ "abusefilter-edit-action-tag": "Evidenzia la modifica per una verifica ulteriore.",
+ "abusefilter-edit-throttle-count": "Numero di azioni da consentire:",
+ "abusefilter-edit-throttle-period": "Periodo di tempo:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|secondo|secondi}}",
+ "abusefilter-edit-throttle-groups": "Criteri di raggruppamento per il ritardo:\n:''(uno per riga oppure uniti da virgole)''",
+ "abusefilter-edit-warn-message": "Messaggio di sistema da usare come avviso:",
+ "abusefilter-edit-warn-other": "Altro messaggio",
+ "abusefilter-edit-warn-other-label": "Nome della pagina per l'altro messaggio:\n:''(senza il prefisso MediaWiki)''",
+ "abusefilter-edit-warn-actions": "Azioni:",
+ "abusefilter-edit-warn-preview": "Anteprima messaggio selezionato",
+ "abusefilter-edit-warn-edit": "Crea o modifica il messaggio selezionato",
+ "abusefilter-edit-tag-tag": "[[Special:Tags|Etichette]] da aggiungere (una per riga):",
+ "abusefilter-edit-block-anon-durations": "Durata del blocco per utenti anonimi:",
+ "abusefilter-edit-block-user-durations": "Durata del blocco per utenti registrati:",
+ "abusefilter-block-anon": "utenti anonimi",
+ "abusefilter-block-user": "utenti registrati",
+ "abusefilter-edit-denied": "Non è possibile visualizzare i dettagli di questo filtro, in quanto nascosto al pubblico.",
+ "abusefilter-edit-main": "Parametri del filtro",
+ "abusefilter-edit-done-subtitle": "Filtro modificato",
+ "abusefilter-edit-done": "[[Special:AbuseFilter/history/$1/diff/prev/$2|Le modifiche]] al [[Special:AbuseFilter/$1|filtro $3]] sono state salvate correttamente.",
+ "abusefilter-edit-badsyntax": "Il filtro specificato contiene un errore di sintassi.\nDi seguito viene riportato l'output del parser: <pre>$1</pre>",
+ "abusefilter-edit-missingfields": "I seguenti campi sono obbligatori e devono essere compilati: $1",
+ "abusefilter-edit-restricted": "Non è possibile modificare questo filtro in quanto contiene delle azioni riservate.\nChiedere a un utente abilitato all'inserimento di azioni riservate di effettuare la modifica.",
+ "abusefilter-edit-viewhistory": "Vedi la cronologia di questo filtro",
+ "abusefilter-edit-history": "Cronologia:",
+ "abusefilter-edit-check": "Controlla sintassi",
+ "abusefilter-edit-badfilter": "Il filtro indicato non esiste",
+ "abusefilter-edit-revert": "Annulla le azioni effettuate da questo filtro",
+ "abusefilter-edit-tools": "Strumenti:",
+ "abusefilter-edit-test-link": "Verifica questo filtro con le ultime modifiche",
+ "abusefilter-edit-export": "Esporta questo filtro a un'altra wiki",
+ "abusefilter-edit-syntaxok": "Nessun errore di sintassi rilevato.",
+ "abusefilter-edit-syntaxerr": "Errore di sintassi rilevato: $1",
+ "abusefilter-edit-bad-tags": "Una o più etichette specificate non sono valide.\nLe etichette devono essere corte, non contenere caratteri speciali e non devono essere riservate da altri programmi. Prova a scegliere un altro nome.",
+ "abusefilter-edit-notallowed": "Non sei autorizzato a creare o modificare i filtri del filtro anti abusi",
+ "abusefilter-edit-notallowed-global": "Non sei autorizzato a creare o modificare i filtri globali del filtro anti abusi",
+ "abusefilter-edit-notallowed-global-custom-msg": "Messaggi di avviso personalizzati non sono supportati per i filtri globali",
+ "abusefilter-edit-builder-select": "Scegliere un'opzione per aggiungerla nella posizione del cursore",
+ "abusefilter-edit-builder-group-op-arithmetic": "Operatori aritmetici",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Addizione (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Sottrazione (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Moltiplicazione (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Divisione (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Modulo (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Potenza (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Operatori di confronto",
+ "abusefilter-edit-builder-op-comparison-equal": "Valore uguale a (==)",
+ "abusefilter-edit-builder-op-comparison-equal-strict": "Valore e tipo uguali a (===)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Valore diverso da (!=)",
+ "abusefilter-edit-builder-op-comparison-notequal-strict": "Valore e tipo diversi da (!==)",
+ "abusefilter-edit-builder-op-comparison-lt": "Minore di (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Maggiore di (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Minore di o uguale a (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Maggiore di o uguale a (>=)",
+ "abusefilter-edit-builder-group-op-bool": "Operatori booleani",
+ "abusefilter-edit-builder-op-bool-not": "Not logico (!)",
+ "abusefilter-edit-builder-op-bool-and": "And logico (&)",
+ "abusefilter-edit-builder-op-bool-or": "Or logico (|)",
+ "abusefilter-edit-builder-op-bool-xor": "Or esclusivo (^)",
+ "abusefilter-edit-builder-group-misc": "Varie",
+ "abusefilter-edit-builder-misc-in": "contenuto nella stringa (in)",
+ "abusefilter-edit-builder-misc-like": "Coincide con un pattern (like)",
+ "abusefilter-edit-builder-misc-rlike": "Coincide con una regex (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "Corrisponde a regex, ignorando maiuscole/minuscole (irlike)",
+ "abusefilter-edit-builder-misc-contains": "La stringa di sinistra contiene quella di destra (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "Stringa (\"\")",
+ "abusefilter-edit-builder-misc-tern": "Operatore ternario (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "Condizionale (if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "Funzioni",
+ "abusefilter-edit-builder-funcs-length": "Lunghezza stringa (length)",
+ "abusefilter-edit-builder-funcs-lcase": "Converti in minuscolo (lcase)",
+ "abusefilter-edit-builder-funcs-ucase": "Converti in maiuscolo (ucase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "Normalizza caratteri confondibili (ccnorm)",
+ "abusefilter-edit-builder-funcs-ccnorm-contains-any": "Normalizza una stringa e cerca delle sottostringhe al suo interno in modalità OR (ccnorm_contains_any)",
+ "abusefilter-edit-builder-funcs-ccnorm-contains-all": "Normalizza una stringa e cerca delle sottostringhe al suo interno in modalità AND (ccnorm_contains_all)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "Rimuovi caratteri doppi (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "Caratteri speciali su caratteri totali (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "Normalizza (norm)",
+ "abusefilter-edit-builder-funcs-count": "Numero di occorrenze della stringa X nella stringa Y (count)",
+ "abusefilter-edit-builder-funcs-rcount": "Numero di occorrenze dell'espressione regolare X nella stringa Y (rcount)",
+ "abusefilter-edit-builder-funcs-get_matches": "Array di corrispondenze di una regex all'intero di un testo per ogni gruppo catturante (get_matches)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "Elimina whitespace (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "Rimuovi caratteri speciali (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "L'indirizzo IP appartiene all'intervallo? (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "Cerca sottostringhe multiple in una stringa data in modalità OR (contains_any)",
+ "abusefilter-edit-builder-funcs-contains-all": "Cerca sottostringhe multiple in una stringa data in modalità AND (contains_any)",
+ "abusefilter-edit-builder-funcs-substr": "Sottostringa (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "Posizione della sottostringa nella stringa (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "Sostituisci sottostringa con stringa (str_replace)",
+ "abusefilter-edit-builder-funcs-rescape": "Stringa di escape come valore letterale in regex (rescape)",
+ "abusefilter-edit-builder-funcs-set_var": "Imposta variabile (set_var)",
+ "abusefilter-edit-builder-group-vars": "Variabili",
+ "abusefilter-edit-builder-vars-accountname": "Nome dell'account (al momento della creazione)",
+ "abusefilter-edit-builder-vars-timestamp": "Timestamp UNIX della modifica",
+ "abusefilter-edit-builder-vars-action": "Azione",
+ "abusefilter-edit-builder-vars-addedlines": "Righe aggiunte dalla modifica",
+ "abusefilter-edit-builder-vars-delta": "Cambiamento di dimensione della modifica",
+ "abusefilter-edit-builder-vars-diff": "Modifiche apportate in formato unidiff",
+ "abusefilter-edit-builder-vars-newsize": "Nuova dimensione della pagina",
+ "abusefilter-edit-builder-vars-oldsize": "Vecchia dimensione della pagina",
+ "abusefilter-edit-builder-vars-old-content-model": "Vecchio modello di contenuto",
+ "abusefilter-edit-builder-vars-new-content-model": "Nuovo modello di contenuto",
+ "abusefilter-edit-builder-vars-removedlines": "Righe rimosse dalla modifica",
+ "abusefilter-edit-builder-vars-summary": "Oggetto/motivazione",
+ "abusefilter-edit-builder-vars-article-id": "ID della pagina",
+ "abusefilter-edit-builder-vars-article-ns": "Namespace della pagina",
+ "abusefilter-edit-builder-vars-article-text": "Titolo della pagina (senza namespace)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Titolo completo della pagina",
+ "abusefilter-edit-builder-vars-article-views": "Visualizzazioni di pagina",
+ "abusefilter-edit-builder-vars-movedfrom-id": "Identificativo della pagina origine dello spostamento",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "Namespace della pagina origine dello spostamento",
+ "abusefilter-edit-builder-vars-movedfrom-text": "Titolo della pagina origine dello spostamento",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "Titolo completo della pagina origine dello spostamento",
+ "abusefilter-edit-builder-vars-movedto-id": "Identificativo della pagina destinazione dello spostamento",
+ "abusefilter-edit-builder-vars-movedto-ns": "Namespace della pagina destinazione dello spostamento",
+ "abusefilter-edit-builder-vars-movedto-text": "Titolo della pagina destinazione dello spostamento",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "Titolo completo della pagina destinazione dello spostamento",
+ "abusefilter-edit-builder-vars-user-editcount": "Edit count dell'utente",
+ "abusefilter-edit-builder-vars-user-age": "Età dell'account utente",
+ "abusefilter-edit-builder-vars-user-name": "Nome utente",
+ "abusefilter-edit-builder-vars-user-groups": "Gruppi cui l'utente appartiene (anche implicitamente)",
+ "abusefilter-edit-builder-vars-user-rights": "Diritti che un utente ha",
+ "abusefilter-edit-builder-vars-user-blocked": "Se l'utente è bloccato",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "Data e ora di conferma dell'indirizzo e-mail",
+ "abusefilter-edit-builder-vars-recent-contributors": "Ultimi dieci utenti che hanno contribuito alla pagina",
+ "abusefilter-edit-builder-vars-first-contributor": "Primo utente a contribuire alla pagina",
+ "abusefilter-edit-builder-vars-all-links": "Tutti i collegamenti esterni nel nuovo testo",
+ "abusefilter-edit-builder-vars-added-links": "Tutti i collegamenti esterni aggiunti dalla modifica",
+ "abusefilter-edit-builder-vars-removed-links": "Tutti i collegamenti esterni rimossi dalla modifica",
+ "abusefilter-edit-builder-vars-old-text": "Vecchio wikitesto della pagina, precedente alla modifica",
+ "abusefilter-edit-builder-vars-new-text": "Nuovo wikitesto della pagina, successivo alla modifica",
+ "abusefilter-edit-builder-vars-new-pst": "Nuovo testo sorgente della pagina, successivo alla trasformazione presalvataggio",
+ "abusefilter-edit-builder-vars-diff-pst": "Diff unificato delle modifiche apportate, successivo alla trasformazione presalvataggio",
+ "abusefilter-edit-builder-vars-addedlines-pst": "Linee aggiunte nella modifica, successivo alla trasformazione presalvataggio",
+ "abusefilter-edit-builder-vars-new-text-stripped": "Nuovo testo della pagina, con il markup rimosso",
+ "abusefilter-edit-builder-vars-new-html": "Sorgente HTML elaborato della nuova versione",
+ "abusefilter-edit-builder-vars-restrictions-edit": "Livello di protezione della pagina per le modifiche",
+ "abusefilter-edit-builder-vars-restrictions-move": "Livello di protezione della pagina per gli spostamenti",
+ "abusefilter-edit-builder-vars-restrictions-create": "Livello di protezione per creare pagine",
+ "abusefilter-edit-builder-vars-restrictions-upload": "Livello di protezione per caricare file",
+ "abusefilter-edit-builder-vars-old-text-stripped": "Vecchio testo della pagina, privo di qualsiasi formattazione",
+ "abusefilter-edit-builder-vars-old-links": "Collegamenti nella pagina, prima della modifica",
+ "abusefilter-edit-builder-vars-old-html": "Vecchio wikitesto della pagina, interpretato in HTML",
+ "abusefilter-edit-builder-vars-minor-edit": "Indica se la modifica è minore o meno",
+ "abusefilter-edit-builder-vars-file-sha1": "Hash SHA1 del contenuto del file",
+ "abusefilter-edit-builder-vars-file-size": "Dimensione del file in byte",
+ "abusefilter-edit-builder-vars-file-mime": "Tipo MIME del file",
+ "abusefilter-edit-builder-vars-file-mediatype": "Tipo del file multimediale",
+ "abusefilter-edit-builder-vars-file-width": "Larghezza del file in pixel",
+ "abusefilter-edit-builder-vars-file-height": "Altezza del file in pixel",
+ "abusefilter-edit-builder-vars-file-bits-per-channel": "Bit per canale di colore del file",
+ "abusefilter-edit-block-options": "Opzioni del blocco:",
+ "abusefilter-filter-log": "Ultime modifiche ai filtri",
+ "abusefilter-history": "Cronologia delle modifiche al filtro anti abusi n. $1",
+ "abusefilter-history-foruser": "Modifiche apportate da $1",
+ "abusefilter-history-hidden": "nascosto",
+ "abusefilter-history-enabled": "attivato",
+ "abusefilter-history-global": "Globale",
+ "abusefilter-history-timestamp": "Data e ora",
+ "abusefilter-history-user": "Utente",
+ "abusefilter-history-public": "Descrizione pubblica del filtro",
+ "abusefilter-history-flags": "Flag",
+ "abusefilter-history-filter": "Regola del filtro",
+ "abusefilter-history-comments": "Commenti",
+ "abusefilter-history-actions": "Azioni",
+ "abusefilter-history-backedit": "Torna alla modifica dei filtri",
+ "abusefilter-history-deleted": "Cancellato",
+ "abusefilter-history-filterid": "Filtro",
+ "abusefilter-history-select-legend": "Restringi la ricerca",
+ "abusefilter-history-select-user": "Utente:",
+ "abusefilter-history-select-filter": "ID filtro:",
+ "abusefilter-history-select-submit": "Restringi",
+ "abusefilter-history-diff": "Modifiche",
+ "abusefilter-history-error-hidden": "Il filtro richiesto è nascosto, non è possibile visualizzarne la cronologia.",
+ "abusefilter-exception-unexpectedatend": "\"$2\" non previsto in corrispondenza del carattere $1.",
+ "abusefilter-exception-expectednotfound": "$2 mancante in corrispondenza del carattere $1, presente invece $3 $4.",
+ "abusefilter-exception-unrecognisedkeyword": "Parola chiave $2 sconosciuta in corrispondenza del carattere $1.",
+ "abusefilter-exception-unexpectedtoken": "Token inatteso \"$3\" (di tipo $2) in corrispondenza del carattere $1.",
+ "abusefilter-exception-unclosedstring": "Stringa iniziata in corrispondenza del carattere $1 non terminata.",
+ "abusefilter-exception-invalidoperator": "Operatore \"$2\" non valido in corrispondenza del carattere $1.",
+ "abusefilter-exception-unrecognisedtoken": "Token \"$2\" non riconosciuto in corrispondenza del carattere $1.",
+ "abusefilter-exception-noparams": "Parametri mancanti per la funzione \"$2\" in corrispondenza del carattere $1.",
+ "abusefilter-exception-dividebyzero": "Tentativo di dividere $2 per zero in corrispondenza del carattere $1.",
+ "abusefilter-exception-unrecognisedvar": "Variabile $2 non riconosciuta in corrispondenza del carattere $1.",
+ "abusefilter-exception-notenoughargs": "Argomenti per la funzione $2 chiamata al carattere $1 non sufficienti.\n{{PLURAL:$3|Previsto $3 argomento|Previsti $3 argomenti}}, {{PLURAL:$4|ottenuto|ottenuti}} $4",
+ "abusefilter-exception-regexfailure": "Errore nell'espressione regolare \"$3\" al carattere $1: \"$2\"",
+ "abusefilter-exception-overridebuiltin": "Sovrascrittura illegale di variabile predefinita \"$2\" al carattere $1.",
+ "abusefilter-exception-outofbounds": "Richiesta di voce inesistente dell'elenco $2 (dimensione lista = $3) al carattere $1.",
+ "abusefilter-exception-notlist": "Richiesta di un elemento di array da un non array al carattere $1.",
+ "abusefilter-exception-unclosedcomment": "Commento non chiuso in corrispondenza del carattere $1.",
+ "abusefilter-action-tag": "Etichetta",
+ "abusefilter-action-throttle": "Rallenta",
+ "abusefilter-action-warn": "Avvisa",
+ "abusefilter-action-blockautopromote": "Blocca autopromuovi",
+ "abusefilter-action-block": "Blocca",
+ "abusefilter-action-degroup": "Rimuovi dai gruppi",
+ "abusefilter-action-rangeblock": "Blocca classe di indirizzi",
+ "abusefilter-action-disallow": "Impedisci",
+ "abusefilter-revert-title": "Annulla tutte le modifiche apportate dal filtro $1",
+ "abusefilter-revert-intro": "Questo modulo consente di annullare tutte le modifiche apportate dal filtro anti abusi $1.\nUtilizzare questo strumento con particolare attenzione.",
+ "abusefilter-revert-preview-item": "$1: $2 {{GENDER:$7|ha effettuato}} $3 su $4.\nAzioni da annullare: $5 ($6)",
+ "abusefilter-revert-search-legend": "Selezionare le azioni del filtro anti abusi da annullare",
+ "abusefilter-revert-periodstart": "Inizio del periodo:",
+ "abusefilter-revert-periodend": "Fine del periodo:",
+ "abusefilter-revert-search": "Selezionare le azioni",
+ "abusefilter-revert-filter": "ID filtro:",
+ "abusefilter-revert-preview-intro": "Di seguito sono elencate le azioni effettuate dal filtro anti abusi che verranno annullate da quest'azione.\nVerificale con cura e fai clic su \"{{int:abusefilter-revert-confirm}}\" per confermare la selezione.",
+ "abusefilter-revert-confirm": "Conferma",
+ "abusefilter-revert-success": "Sono state annullate tutte le azioni effettuate dal [[Special:AbuseFilter/$1|filtro anti abusi $2]].",
+ "abusefilter-revert-reason": "Annullamento automatico di tutte le azioni effettuate dal filtro anti abusi $1.\nMotivo indicato: $2",
+ "abusefilter-revert-reasonfield": "Motivo:",
+ "abusefilter-test": "Verifica un filtro confrontandolo con le modifiche precedenti",
+ "abusefilter-test-intro": "Questa pagina consente di verificare il filtro indicato nella casella in basso nei confronti {{PLURAL:$1|dell'ultima modifica|delle ultime $1 modifiche}}.\nPer caricare un filtro esistente, digita il relativo identificatore nella casella sottostante la casella di testo e fai clic sul pulsante \"{{int:abusefilter-test-load}}\".",
+ "abusefilter-test-legend": "Verifica filtri",
+ "abusefilter-test-load-filter": "Carica filtro con ID:",
+ "abusefilter-test-submit": "Verifica",
+ "abusefilter-test-load": "Carica",
+ "abusefilter-test-user": "Modifiche apportate dall'utente:",
+ "abusefilter-test-period-start": "Modifiche successive al:",
+ "abusefilter-test-period-end": "Modifiche precedenti al:",
+ "abusefilter-test-page": "Modifiche apportate alla pagina:",
+ "abusefilter-test-shownegative": "Mostra le modifiche che non corrispondono al filtro",
+ "abusefilter-test-syntaxerr": "Il filtro inserito contiene un errore di sintassi.\nPer ottenere una spiegazione completa, fai clic sul pulsante \"{{int:abusefilter-edit-check}}\".",
+ "abusefilter-test-badtitle": "Il titolo della pagina che hai inserito non è valido; contiene uno o più caratteri che non possono essere utilizzati nei titoli.",
+ "abusefilter-changeslist-examine": "esamina",
+ "abusefilter-examine": "Esamina le singole modifiche",
+ "abusefilter-examine-intro": "Questa pagina consente di esaminare le variabili generate dal filtro anti abusi per una particolare modifica, e di provare il funzionamento dei filtri su di essa.",
+ "abusefilter-examine-legend": "Seleziona modifiche",
+ "abusefilter-examine-diff": "URL delle differenze:",
+ "abusefilter-examine-user": "Utente:",
+ "abusefilter-examine-title": "Titolo della pagina:",
+ "abusefilter-examine-submit": "Cerca",
+ "abusefilter-examine-vars": "Variabili generate da questa modifica",
+ "abusefilter-examine-test": "Verifica questa modifica in funzione di un filtro",
+ "abusefilter-examine-test-button": "Verifica filtro",
+ "abusefilter-examine-match": "Il filtro è stato attivato da questa modifica.",
+ "abusefilter-examine-nomatch": "Il filtro non è stato attivato da questa modifica.",
+ "abusefilter-examine-syntaxerror": "La sintassi del filtro è errata",
+ "abusefilter-examine-notfound": "Impossibile trovare la modifica richiesta.",
+ "abusefilter-examine-incompatible": "La modifica richiesta non è supportata dal filtro anti abusi.",
+ "abusefilter-examine-noresults": "I parametri di ricerca specificati non hanno prodotto alcun risultato.",
+ "abusefilter-topnav": "'''Filtro anti abusi – Navigazione'''",
+ "abusefilter-topnav-home": "Home",
+ "abusefilter-topnav-test": "Verifica in batch",
+ "abusefilter-topnav-examine": "Esamina le modifiche precedenti",
+ "abusefilter-topnav-log": "Registro del filtro anti abusi",
+ "abusefilter-topnav-tools": "Strumenti di debug",
+ "abusefilter-topnav-import": "Importa filtro",
+ "abusefilter-log-name": "Filtro anti abusi",
+ "abusefilter-log-header": "Il registro mostra un riassunto delle modifiche effettuate sui filtri.\nPer i dettagli completi, consultare [[Special:AbuseFilter/history|l'elenco]] delle modifiche più recenti agli stessi.",
+ "abusefilter-logentry-create": "$1 {{GENDER:$2|ha creato}} $4 ($5)",
+ "abusefilter-logentry-modify": "$1 {{GENDER:$2|ha modificato}} $4 ($5)",
+ "abusefilter-log-noresults": "Nessun risultato",
+ "abusefilter-diff-title": "Differenze tra le versioni",
+ "abusefilter-diff-item": "Elemento",
+ "abusefilter-diff-version": "Versione del $1, {{GENDER:$3|autore|autrice|autore/trice}} $2",
+ "abusefilter-diff-info": "Informazioni di base",
+ "abusefilter-diff-pattern": "Condizioni dei filtri",
+ "abusefilter-diff-invalid": "Impossibile caricare le versioni richieste",
+ "abusefilter-diff-backhistory": "Torna alla cronologia dei filtri",
+ "abusefilter-diff-prev": "Differenza precedente",
+ "abusefilter-diff-next": "Differenza successiva",
+ "abusefilter-import-intro": "È possibile utilizzare questa interfaccia per importare filtri da altri siti wiki.\nSul sito wiki d'origine, fare clic su \"{{int:abusefilter-edit-export}}\" sotto \"{{int:abusefilter-edit-tools}}\" nell'interfaccia di modifica.\nCopiare dalla casella che appare e copiare in questa casella, quindi fare clic su \"{{int:abusefilter-import-submit}}\".",
+ "abusefilter-import-submit": "Importa dati",
+ "abusefilter-group-default": "Predefinito",
+ "abusefilter-http-error": "Si è verificato un errore HTTP: $1.",
+ "abusefilter-view-private-submit": "Visualizza i dettagli privati",
+ "abusefilter-view-private": "Visualizza i dettagli privati",
+ "abusefilter-view-private-reason": "Motivazione per visualizzare i dettagli privati:",
+ "abusefilter-log-details-id": "ID registro",
+ "abusefilter-log-ip-not-available": "Non disponibile",
+ "tag-abusefilter-condition-limit": "limite di condizioni raggiunto",
+ "tag-abusefilter-condition-limit-description": "Modifiche o altri eventi che non sono stati controllati da tutti i [[Special:AbuseFilter|filtri anti abusi]] attivi ([[mw:Extension:AbuseFilter/Conditions|aiuto]]).",
+ "apihelp-abusefilterchecksyntax-example-1": "Controlla la sintassi di un filtro valido",
+ "apihelp-abusefilterchecksyntax-example-2": "Controlla la sintassi di un filtro non valido",
+ "apihelp-abusefilterevalexpression-description": "Valuta un'espressione AbuseFilter.",
+ "apihelp-abusefilterevalexpression-param-expression": "L'espressione da valutare.",
+ "apihelp-abusefilterevalexpression-example-1": "Calcolare una semplice espressione",
+ "apihelp-abusefilterunblockautopromote-param-user": "Nome utente dell'utente che vuoi sbloccare.",
+ "apihelp-query+abusefilters-param-show": "Mostra solo i filtri che soddisfano questi criteri.",
+ "apihelp-query+abusefilters-param-limit": "Il numero massimo di filtri da elencare.",
+ "apihelp-query+abusefilters-param-prop": "Quali proprietà ottenere.",
+ "apihelp-query+abusefilters-example-1": "Elenca i filtri pubblici abilitati",
+ "apihelp-query+abusefilters-example-2": "Mostra alcuni dettagli sui filtri",
+ "apihelp-query+abuselog-param-prop": "Quali proprietà ottenere."
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/ja.json b/www/wiki/extensions/AbuseFilter/i18n/ja.json
new file mode 100644
index 00000000..804e933c
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/ja.json
@@ -0,0 +1,473 @@
+{
+ "@metadata": {
+ "authors": [
+ "Aotake",
+ "Fievarsty",
+ "Fryed-peach",
+ "Hosiryuhosi",
+ "Mizusumashi",
+ "Muttley",
+ "Ohgi",
+ "Penn Station",
+ "Shirayuki",
+ "Yanajin66",
+ "青子守歌",
+ "Rxy",
+ "Takot",
+ "Otokoume",
+ "2nd-player",
+ "W.CC",
+ "Sujiniku",
+ "Azeha",
+ "Matma Rex",
+ "Aefgh39622",
+ "Omotecho",
+ "Yusuke1109"
+ ]
+ },
+ "abusefilter-desc": "編集に対して、自動的な経験則を適用する",
+ "abusefilter": "不正利用フィルター設定",
+ "abuselog": "不正利用記録",
+ "abusefilter-intro": "不正利用フィルターの管理インターフェイスにようこそ。\n不正利用フィルターは、あらゆる操作に対して自動的な発見的方法を適用する、自動化されたソフトウェア機構です。\nこのインターフェイスでは、定義済みのフィルターを一覧表示してそれらを変更できます。",
+ "abusefilter-mustbeeditor": "セキュリティ上の理由から、不正利用フィルターを変更できる権限を持つ利用者だけがこのインターフェイスを使用できます。",
+ "abusefilter-warning": "'''警告:''' 行われた操作は自動的に有害と判断されました。\n建設的ではない操作は速やかに差し戻されます。\n被害程度が大きい破壊的編集や頻繁な破壊行為は、アカウントまたはIPアドレスのブロックにつながります。\n行なった操作が確かに建設的だと考える場合は、もう一度投稿してください。\n操作に対して発動した違反規則の概略は次の通りです: $1",
+ "abusefilter-disallowed": "行なった操作は、有害であると自動的に判断されたため実行できませんでした。\n確かに建設的な操作であると考える場合は、行なおうとしていた操作について管理者にお知らせください。\n操作に対して発動した違反規則の概略は以下の通りです: $1",
+ "abusefilter-blocked-display": "行なわれた操作は自動的に有害と判断されたため、実行を中断しました。\n同時に{{SITENAME}}を保護するために、利用者アカウントと関連するすべてのIPアドレスが投稿ブロックされました。\nこの措置が誤りである場合は、管理者に連絡してください。\n操作に対して発動した違反規則の概略は次の通りです: $1",
+ "abusefilter-degrouped": "行なわれた操作は自動的に有害と判断されました。\nそのため操作は実行されず、また、アカウントが乗っ取られていると判断され、すべての権限が剥奪されました。\nこの措置が誤りであると考える場合、この操作についての説明を添えてビューロクラットに連絡し、権限の復帰を依頼してください。\n操作に対して発動した違反規則の概略は次の通りです: $1",
+ "abusefilter-autopromote-blocked": "行なわれた操作は自動的に有害と判断されたため、実行が中断されました。\n同時に、安全を守るため、承認されたアカウントに付与されている権限の一部が、一時的にあなたのアカウントから剥奪されました。\n操作に対して発動した違反規則の概略は次の通りです: $1",
+ "abusefilter-blocker": "不正利用フィルター",
+ "abusefilter-blockreason": "不正利用フィルターによる自動的なブロック。\n発動した規則の説明: $1",
+ "abusefilter-degroupreason": "不正利用フィルターによる自動的な権限の剥奪。\n規則の説明: $1",
+ "abusefilter-accountreserved": "このアカウントは不正利用フィルターによる使用のため予約されています。",
+ "right-abusefilter-modify": "不正利用フィルターを変更",
+ "right-abusefilter-view": "不正利用フィルターを閲覧",
+ "right-abusefilter-log": "不正利用記録を閲覧",
+ "right-abusefilter-log-detail": "不正利用記録の詳細項目を閲覧",
+ "right-abusefilter-private": "不正利用記録内の非公開データを閲覧",
+ "right-abusefilter-private-log": "不正利用フィルター非公開記録の調査記録を閲覧",
+ "right-abusefilter-modify-restricted": "制限された操作を含む不正利用フィルターを変更",
+ "right-abusefilter-revert": "指定した不正利用フィルターによるすべての変更を差し戻す",
+ "right-abusefilter-view-private": "非公開の不正利用フィルターを閲覧",
+ "right-abusefilter-log-private": "非公開の不正利用フィルター記録を閲覧",
+ "right-abusefilter-hide-log": "不正利用記録の項目を隠す",
+ "right-abusefilter-hidden-log": "隠された不正利用記録を閲覧",
+ "right-abusefilter-modify-global": "グローバル不正利用フィルターを作成または変更",
+ "action-abusefilter-modify": "不正利用フィルターの変更",
+ "action-abusefilter-view": "不正利用フィルターの閲覧",
+ "action-abusefilter-log": "不正利用記録の閲覧",
+ "action-abusefilter-log-detail": "不正利用記録の詳細項目の閲覧",
+ "action-abusefilter-private": "不正利用フィルターの非公開記録を調査",
+ "action-abusefilter-private-log": "不正利用フィルター非公開記録の調査記録を閲覧",
+ "action-abusefilter-modify-restricted": "制限された操作を含む不正利用フィルターの変更",
+ "action-abusefilter-revert": "指定した不正利用フィルターによるすべての変更の差し戻し",
+ "action-abusefilter-view-private": "非公開の不正利用フィルターの閲覧",
+ "action-abusefilter-log-private": "非公開の不正利用フィルター記録の閲覧",
+ "abusefilter-log": "不正利用フィルター記録",
+ "abusefilter-log-summary": "この記録はフィルターが発動した全操作の一覧を表示しています。",
+ "abusefilter-log-search": "不正利用記録を検索",
+ "abusefilter-log-search-user": "利用者:",
+ "abusefilter-log-search-filter": "フィルターID (\"|\" 区切り):",
+ "abusefilter-log-search-title": "ページ名:",
+ "abusefilter-log-search-wiki": "ウィキ:",
+ "abusefilter-log-search-entries-label": "可視性:",
+ "abusefilter-log-search-entries-all": "すべての項目",
+ "abusefilter-log-search-entries-hidden": "非表示項目のみ",
+ "abusefilter-log-search-entries-visible": "表示項目のみ",
+ "abusefilter-log-search-submit": "検索",
+ "abusefilter-log-entry": "$1: $2 が $4 で「$3」操作を{{GENDER:$8|行い}}不正利用フィルターが発動しました。\n対処操作: $5、\nフィルター解説: $6",
+ "abusefilter-log-entry-withdiff": "$1: $2 が $4 で「$3」操作を{{GENDER:$8|行い}}不正利用フィルターが発動しました。\n対処操作: $5、\nフィルター解説: $6 ($7)",
+ "abusefilter-log-detailedentry-meta": "$1に$2が$5で「$4」操作を{{GENDER:$9|行い}}、$3が発動しました。\n対処操作: $6\nフィルター解説: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "グローバルフィルター $1",
+ "abusefilter-log-detailedentry-local": "フィルター $1",
+ "abusefilter-log-detailslink": "詳細",
+ "abusefilter-log-diff": "差分",
+ "abusefilter-log-hidelink": "閲覧レベルを調整",
+ "abusefilter-log-details-legend": "記録項目 $1 の詳細",
+ "abusefilter-log-details-var": "変数",
+ "abusefilter-log-details-val": "値",
+ "abusefilter-log-details-vars": "対処操作の設定",
+ "abusefilter-log-details-private": "非公開記録の詳細",
+ "abusefilter-log-details-ip": "発信元のIPアドレス",
+ "abusefilter-log-details-checkuser": "利用者の調査",
+ "abusefilter-log-noactions": "なし",
+ "abusefilter-log-details-diff": "編集でなされた変更",
+ "abusefilter-log-linkoncontribs": "不正利用記録",
+ "abusefilter-log-linkoncontribs-text": "{{GENDER:$1|この利用者}}の不正利用記録",
+ "abusefilter-log-hidden": "(隠された項目)",
+ "abusefilter-log-hidden-implicit": "(版が削除されているため非表示)",
+ "abusefilter-log-cannot-see-details": "この項目の詳細を見る権限がありません。",
+ "abusefilter-log-cannot-see-private-details": "あなたは非公開記録を閲覧する権限がありません",
+ "abusefilter-log-nonexistent": "指定された ID の項目は存在しません。",
+ "abusefilter-log-details-hidden": "この項目は公開記録から隠されているため、あなたは詳細を閲覧できません。",
+ "abusefilter-log-private-not-included": "指定したフィルターIDのうち一つ以上はプライベート状態です。プライベートになっているフィルターの詳細を見ることは許可されていないため、これらのフィルターは検索されません。",
+ "abusefilter-log-hide-legend": "記録項目を隠す",
+ "abusefilter-log-hide-id": "記録項目ID:",
+ "abusefilter-log-hide-hidden": "公開記録から、この項目を隠す",
+ "abusefilter-log-hide-reason": "理由:",
+ "abusefilter-log-hide-forbidden": "不正利用記録の項目を隠す権限がありません。",
+ "abusefilter-logentry-suppress": "「[[$1]]」を非公開",
+ "abusefilter-logentry-unsuppress": "「[[$1]]」を公開",
+ "logentry-abusefilter-hit": "$1 が $3 で「$5」操作を{{GENDER:$2|行い}}、 $4 が{{GENDER:$2|作動}}しました。対処操作: $6 ($7)",
+ "log-action-filter-abusefilter": "フィルター変更の種類:",
+ "log-action-filter-abusefilter-create": "フィルターの新規作成",
+ "log-action-filter-abusefilter-modify": "フィルターの変更",
+ "logentry-abusefilterprivatedetails-access": "$1 は $3 の非公開記録を{{GENDER:$2|取得しました}}。",
+ "abusefilterprivatedetails-log-name": "不正利用フィルター非公開記録の調査記録",
+ "abusefilter-management": "不正利用フィルター管理",
+ "abusefilter-list": "すべてのフィルター",
+ "abusefilter-list-id": "フィルターID",
+ "abusefilter-list-status": "状態",
+ "abusefilter-list-public": "公開解説",
+ "abusefilter-list-consequences": "対処操作",
+ "abusefilter-list-visibility": "閲覧レベル",
+ "abusefilter-list-hitcount": "一致件数",
+ "abusefilter-list-edit": "編集",
+ "abusefilter-list-details": "詳細",
+ "abusefilter-list-limit": "ページごとの数:",
+ "abusefilter-list-lastmodified": "最終変更",
+ "abusefilter-list-group": "フィルターグループ",
+ "abusefilter-hidden": "非公開",
+ "abusefilter-unhidden": "公開",
+ "abusefilter-enabled": "有効",
+ "abusefilter-deleted": "削除",
+ "abusefilter-disabled": "無効",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|件}}の一致",
+ "abusefilter-new": "フィルターの新規作成",
+ "abusefilter-return": "フィルター管理に戻る",
+ "abusefilter-status-global": "グローバル",
+ "abusefilter-list-options": "オプション",
+ "abusefilter-list-options-deleted": "削除されたフィルター:",
+ "abusefilter-list-options-deleted-only": "削除されたもののみ表示",
+ "abusefilter-list-options-deleted-hide": "削除されたものを表示しない",
+ "abusefilter-list-options-deleted-show": "削除されたものを含める",
+ "abusefilter-list-options-scope": "フィルターを表示:",
+ "abusefilter-list-options-scope-local": "ローカル規則のみ",
+ "abusefilter-list-options-scope-global": "グローバル規則のみ",
+ "abusefilter-list-options-scope-all": "ローカルおよびグローバル規則",
+ "abusefilter-list-options-disabled": "無効化されたフィルター:",
+ "abusefilter-list-options-hidedisabled": "無効化されたフィルターを隠す",
+ "abusefilter-list-options-submit": "更新",
+ "abusefilter-tools-text": "不正利用フィルターの作成およびデバッグに役立つ場合があるツールです。",
+ "abusefilter-tools-expr": "式の試験ツール",
+ "abusefilter-tools-submitexpr": "評価",
+ "abusefilter-tools-reautoconfirm": "自動承認ステータスを復元",
+ "abusefilter-tools-reautoconfirm-user": "利用者:",
+ "abusefilter-tools-reautoconfirm-submit": "再自動承認",
+ "abusefilter-reautoconfirm-none": "その利用者は{{GENDER:$1|自動承認ステータス}}を停止されていません。",
+ "abusefilter-reautoconfirm-notallowed": "あなたは自動承認ステータスを復元することが許可されていません。",
+ "abusefilter-reautoconfirm-done": "利用者の自動承認ステータスが復元されました",
+ "abusefilter-status": "最近の$1{{PLURAL:$1|操作}}のうち、$2件($3%)が$4の条件制限に{{PLURAL:$2|達しました}}。$5件($6%)に対して、現在有効なフィルターの1つが{{PLURAL:$5|発動しました}}。",
+ "abusefilter-edit": "不正利用フィルターを編集中",
+ "abusefilter-edit-subtitle": "フィルター $1 を編集中",
+ "abusefilter-edit-subtitle-new": "フィルターを作成中",
+ "abusefilter-edit-oldwarning": "<strong>あなたはこのフィルターの古い版を編集しています。引用されている統計は最新版のフィルターのものです。あなたの変更を保存すると、あなたが編集している版以降の変更をすべて上書きしてしまいます。</strong> &bull; [[Special:AbuseFilter/history/$2|このフィルターの履歴に戻る]]",
+ "abusefilter-edit-status-label": "統計:",
+ "abusefilter-edit-status": "最近の$1{{PLURAL:$1|操作}}のうち、このフィルターは$2件($3%)に対して発動しました。",
+ "abusefilter-edit-status-profile": "最近の$1{{PLURAL:$1|操作}}のうち、このフィルターは$2件($3%)に対して発動しました。平均して、実行時間は$4ミリ秒で$5件の条件制限を消費しました。",
+ "abusefilter-edit-throttled-warning": "'''警告:''' このフィルタは自動的に有害なフラグが立てられました。安全対策として、以下のアクションは実行されません($1)。\nこの制限を解除する条件を確認して[[mw:Extension:AbuseFilter/Conditions|最適化]]してください",
+ "abusefilter-edit-new": "新規フィルター",
+ "abusefilter-edit-save": "フィルターを保存",
+ "abusefilter-edit-id": "フィルターID:",
+ "abusefilter-edit-description": "説明:\n:''(ログで公開)''",
+ "abusefilter-edit-group": "フィルターグループ:",
+ "abusefilter-edit-flags": "フラグ:",
+ "abusefilter-edit-enabled": "このフィルターを有効にする",
+ "abusefilter-edit-deleted": "削除する",
+ "abusefilter-edit-hidden": "このフィルターの詳細を公開しない",
+ "abusefilter-edit-global": "グローバル フィルター",
+ "abusefilter-edit-rules": "条件:",
+ "abusefilter-edit-notes": "メモ:",
+ "abusefilter-edit-lastmod": "フィルターの最終変更:",
+ "abusefilter-edit-lastmod-text": "$1に、$2による",
+ "abusefilter-edit-hitcount": "フィルターが発動した回数:",
+ "abusefilter-edit-consequences": "発動したときに取る対処操作",
+ "abusefilter-edit-action-warn": "利用者に警告を与えてからこれらの対処操作を発動する",
+ "abusefilter-edit-action-disallow": "問題となっている操作を利用者がするのを防ぐ",
+ "abusefilter-edit-action-blockautopromote": "利用者の自動承認ステータスを取り消す",
+ "abusefilter-edit-action-degroup": "利用者をすべての特権グループから除く",
+ "abusefilter-edit-action-block": "利用者および/またはIPアドレスを編集ブロックする",
+ "abusefilter-edit-action-blocktalk": "利用者やIPユーザーが自分のトークページを編集できないようにする",
+ "abusefilter-edit-action-throttle": "利用者が設定された速度限界を越えた場合のみ、対処操作を発動する",
+ "abusefilter-edit-action-rangeblock": "利用者の発信元を該当する IP レンジでブロックする",
+ "abusefilter-edit-action-tag": "後で再検討するために編集にタグを付ける",
+ "abusefilter-edit-throttle-count": "許可される操作数:",
+ "abusefilter-edit-throttle-period": "期間:",
+ "abusefilter-edit-throttle-seconds": "$1{{PLURAL:$1|秒}}",
+ "abusefilter-edit-throttle-groups": "制限をグループ化する:\n:''(1行に1つ、複数項目はカンマ区切り)''",
+ "abusefilter-edit-warn-message": "警告に使用するシステムメッセージ:",
+ "abusefilter-edit-warn-other": "他のメッセージ",
+ "abusefilter-edit-warn-other-label": "他のメッセージのページ名:\n:''(接頭辞 MediaWiki は省く)''",
+ "abusefilter-edit-warn-actions": "操作:",
+ "abusefilter-edit-warn-preview": "選択したメッセージをプレビュー",
+ "abusefilter-edit-warn-edit": "選択したメッセージを作成または編集",
+ "abusefilter-edit-tag-tag": "適用する[[Special:Tags|タグ]] (一行に一つ):",
+ "abusefilter-edit-denied": "このフィルターは非公開とされているため、あなたは詳細を閲覧できません。",
+ "abusefilter-edit-main": "フィルターの設定",
+ "abusefilter-edit-done-subtitle": "フィルターを編集しました",
+ "abusefilter-edit-done": "[[Special:AbuseFilter/$1|フィルター $3]]への[[Special:AbuseFilter/history/$1/diff/prev/$2|変更]]を保存しました。",
+ "abusefilter-edit-badsyntax": "指定したフィルターには構文エラーがあります。\nパーサーからの出力: <pre>$1</pre>",
+ "abusefilter-edit-restricted": "このフィルターは1つ以上の制限された操作を含んでいるため、あなたには編集できません。\n制限された操作を追加する権限のある利用者にあなたの望む変更をしてくれるよう頼んでください。",
+ "abusefilter-edit-viewhistory": "このフィルターの履歴を閲覧",
+ "abusefilter-edit-history": "履歴:",
+ "abusefilter-edit-check": "構文検査",
+ "abusefilter-edit-badfilter": "指定したフィルターは存在しません",
+ "abusefilter-edit-revert": "このフィルターによる対処操作を差し戻す",
+ "abusefilter-edit-tools": "ツール:",
+ "abusefilter-edit-test-link": "このフィルターを最近の編集に対して試験する",
+ "abusefilter-edit-export": "このフィルターを別のウィキにエクスポートする",
+ "abusefilter-edit-syntaxok": "構文エラーは検出されませんでした。",
+ "abusefilter-edit-syntaxerr": "構文エラーを検出しました: $1",
+ "abusefilter-edit-bad-tags": "指定したタグには無効なものが1つ以上あります。\nタグは短くする必要があり、特殊文字を含んではならず、他のソフトウェアで予約することはできません。新しいタグ名を選択してみてください",
+ "abusefilter-edit-notallowed": "あなたは不正利用フィルターを作成または編集することが許可されていません",
+ "abusefilter-edit-notallowed-global": "あなたはグローバル不正利用フィルターを作成または編集することが許可されていません",
+ "abusefilter-edit-notallowed-global-custom-msg": "グローバルフィルターはカスタムの警告メッセージには対応していません",
+ "abusefilter-edit-builder-select": "カーソルの位置に追加するものを選択",
+ "abusefilter-edit-builder-group-op-arithmetic": "算術演算子",
+ "abusefilter-edit-builder-op-arithmetic-addition": "加算 (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "減算 (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "乗算 (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "除算 (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "剰余 (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "累乗 (**)",
+ "abusefilter-edit-builder-group-op-comparison": "比較演算子",
+ "abusefilter-edit-builder-op-comparison-equal": "同値 (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "不等 (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "未満 (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "超過 (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "以下 (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "以上 (>=)",
+ "abusefilter-edit-builder-group-op-bool": "論理演算子",
+ "abusefilter-edit-builder-op-bool-not": "否定 (!)",
+ "abusefilter-edit-builder-op-bool-and": "論理積 (&)",
+ "abusefilter-edit-builder-op-bool-or": "論理和 (|)",
+ "abusefilter-edit-builder-op-bool-xor": "排他的論理和 (^)",
+ "abusefilter-edit-builder-group-misc": "その他",
+ "abusefilter-edit-builder-misc-in": "部分一致 (in)",
+ "abusefilter-edit-builder-misc-like": "パターンとの一致 (like)",
+ "abusefilter-edit-builder-misc-rlike": "正規表現に一致 (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "正規表現に一致、大文字と小文字を区別しない (irlike)",
+ "abusefilter-edit-builder-misc-contains": "左の文字列が右の文字列を含む (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "文字列リテラル (\"\")",
+ "abusefilter-edit-builder-misc-tern": "三項演算子 (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "条件式 (if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "関数",
+ "abusefilter-edit-builder-funcs-length": "文字列の長さ (length)",
+ "abusefilter-edit-builder-funcs-lcase": "小文字化 (lcase)",
+ "abusefilter-edit-builder-funcs-ucase": "大文字化 (ucase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "混乱しやすい文字を正規化 (ccnorm)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "重複する文字を削除 (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "特殊文字の数 / 全体の文字数 (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "正規化 (norm)",
+ "abusefilter-edit-builder-funcs-count": "文字列 X が文字列 Y 中に出現する回数 (count)",
+ "abusefilter-edit-builder-funcs-rcount": "正規表現 X が文字列 Y に出現する回数 (rcount)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "空白類を除去 (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "特殊文字を除去 (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "IPアドレスがその範囲にあるか (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "文字列中で複数の部分文字列を検索 (contains_any)",
+ "abusefilter-edit-builder-funcs-substr": "部分文字列 (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "文字列中での部分文字列の位置 (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "部分文字列を文字列で置換 (str_replace)",
+ "abusefilter-edit-builder-funcs-rescape": "文字列を正規表現のリテラルとしてエスケープ (rescape)",
+ "abusefilter-edit-builder-funcs-set_var": "変数を設定 (set_var)",
+ "abusefilter-edit-builder-group-vars": "変数",
+ "abusefilter-edit-builder-vars-accountname": "アカウント名 (アカウント作成時のみ)",
+ "abusefilter-edit-builder-vars-timestamp": "変更のUnixタイムスタンプ",
+ "abusefilter-edit-builder-vars-action": "操作",
+ "abusefilter-edit-builder-vars-addedlines": "編集で追加された行",
+ "abusefilter-edit-builder-vars-delta": "編集による変更サイズ",
+ "abusefilter-edit-builder-vars-diff": "編集による変更の統一差分",
+ "abusefilter-edit-builder-vars-newsize": "新しいページのサイズ",
+ "abusefilter-edit-builder-vars-oldsize": "古いページのサイズ",
+ "abusefilter-edit-builder-vars-removedlines": "編集で削除された行",
+ "abusefilter-edit-builder-vars-summary": "編集の要約や理由",
+ "abusefilter-edit-builder-vars-article-id": "ページ ID",
+ "abusefilter-edit-builder-vars-article-ns": "ページの名前空間",
+ "abusefilter-edit-builder-vars-article-text": "ページ名 (名前空間を除く)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "完全なページ名",
+ "abusefilter-edit-builder-vars-article-views": "ページ閲覧回数",
+ "abusefilter-edit-builder-vars-movedfrom-id": "移動元のページID",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "移動元ページの名前空間",
+ "abusefilter-edit-builder-vars-movedfrom-text": "移動元のページ名",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "移動元の完全なページ名",
+ "abusefilter-edit-builder-vars-movedto-id": "移動先のページID",
+ "abusefilter-edit-builder-vars-movedto-ns": "移動先ページの名前空間",
+ "abusefilter-edit-builder-vars-movedto-text": "移動先のページ名",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "移動先の完全なページ名",
+ "abusefilter-edit-builder-vars-user-editcount": "利用者の編集回数",
+ "abusefilter-edit-builder-vars-user-age": "利用者アカウントの登録期間",
+ "abusefilter-edit-builder-vars-user-name": "利用者のアカウント名",
+ "abusefilter-edit-builder-vars-user-groups": "利用者が属するグループ (明示的ではないものも含む)",
+ "abusefilter-edit-builder-vars-user-rights": "利用者が持つ権限",
+ "abusefilter-edit-builder-vars-user-blocked": "利用者がブロックされているかどうか",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "メールアドレスを確認した時刻",
+ "abusefilter-edit-builder-vars-recent-contributors": "直前10人のページへの投稿者",
+ "abusefilter-edit-builder-vars-first-contributor": "ページヘの最初の投稿者",
+ "abusefilter-edit-builder-vars-all-links": "新しい本文中のすべての外部リンク",
+ "abusefilter-edit-builder-vars-added-links": "編集で追加されたすべての外部リンク",
+ "abusefilter-edit-builder-vars-removed-links": "編集で除去されたすべての外部リンク",
+ "abusefilter-edit-builder-vars-old-text": "編集前の古いウィキテキスト",
+ "abusefilter-edit-builder-vars-new-text": "編集後の新しいウィキテキスト",
+ "abusefilter-edit-builder-vars-new-pst": "保存前変換適用後の新しいウィキテキスト",
+ "abusefilter-edit-builder-vars-diff-pst": "編集による変更のUnified diff 形式差分 (pre-saveの変換前)",
+ "abusefilter-edit-builder-vars-addedlines-pst": "編集で追加された行 (pre-saveの変換前)",
+ "abusefilter-edit-builder-vars-new-text-stripped": "マークアップを除く新しい本文",
+ "abusefilter-edit-builder-vars-new-html": "新しい版のパース済みHTMLソース",
+ "abusefilter-edit-builder-vars-restrictions-edit": "ページの編集保護レベル",
+ "abusefilter-edit-builder-vars-restrictions-move": "ページの移動保護レベル",
+ "abusefilter-edit-builder-vars-restrictions-create": "ページの作成保護レベル",
+ "abusefilter-edit-builder-vars-restrictions-upload": "ファイルのアップロード保護レベル",
+ "abusefilter-edit-builder-vars-old-text-stripped": "マークアップを除く古い本文",
+ "abusefilter-edit-builder-vars-old-links": "編集前のページに含まれていたリンク",
+ "abusefilter-edit-builder-vars-old-html": "古いウィキテキストから生成されたHTML",
+ "abusefilter-edit-builder-vars-minor-edit": "その編集が細部の編集かどうか",
+ "abusefilter-edit-builder-vars-file-sha1": "ファイルのSHA1ハッシュ",
+ "abusefilter-edit-builder-vars-file-size": "ファイルのサイズ (バイト)",
+ "abusefilter-edit-builder-vars-file-mime": "このファイルのMIMEタイプ",
+ "abusefilter-edit-builder-vars-file-mediatype": "このファイルのメディア種別",
+ "abusefilter-edit-builder-vars-file-width": "ファイルのピクセル単位での幅",
+ "abusefilter-edit-builder-vars-file-height": "ファイルのピクセル単位での高さ",
+ "abusefilter-edit-builder-vars-file-bits-per-channel": "ファイルのカラーチャネル毎のビット数",
+ "abusefilter-filter-log": "フィルターの最近の更新",
+ "abusefilter-history": "不正利用フィルター #$1 の変更履歴",
+ "abusefilter-history-foruser": "$1 による変更",
+ "abusefilter-history-hidden": "非表示",
+ "abusefilter-history-enabled": "有効",
+ "abusefilter-history-global": "グローバル",
+ "abusefilter-history-timestamp": "日時",
+ "abusefilter-history-user": "利用者",
+ "abusefilter-history-public": "フィルターの公開解説",
+ "abusefilter-history-flags": "フラグ",
+ "abusefilter-history-filter": "フィルター規則",
+ "abusefilter-history-comments": "コメント",
+ "abusefilter-history-actions": "対処操作",
+ "abusefilter-history-backedit": "フィルター編集に戻る",
+ "abusefilter-history-deleted": "削除",
+ "abusefilter-history-filterid": "フィルター",
+ "abusefilter-history-select-legend": "絞り込み検索",
+ "abusefilter-history-select-user": "利用者:",
+ "abusefilter-history-select-submit": "絞り込み",
+ "abusefilter-history-diff": "差分",
+ "abusefilter-history-error-hidden": "あなたが要求したフィルターは公開されておらず、履歴を閲覧することができません。",
+ "abusefilter-exception-unexpectedatend": "$1文字目に予期せぬ「$2」があります。",
+ "abusefilter-exception-expectednotfound": "$1 文字目にあるべき $2 が見つかりません (代わりに $3 $4 が使用されています)",
+ "abusefilter-exception-unrecognisedkeyword": "$1文字目に認識できないキーワード $2 があります。",
+ "abusefilter-exception-unexpectedtoken": "$1 文字目に予期せぬトークン「$3」($2 型) があります。",
+ "abusefilter-exception-unclosedstring": "$1文字目から始まる文字列が閉じられていません。",
+ "abusefilter-exception-invalidoperator": "$1文字目に無効な演算子「$2」があります。",
+ "abusefilter-exception-unrecognisedtoken": "$1文字目に認識できないトークン「$2」があります。",
+ "abusefilter-exception-noparams": "$1文字目にある関数「$2」に引数が与えられていません。",
+ "abusefilter-exception-dividebyzero": "$1文字目に$2に対するゼロ除算があります。",
+ "abusefilter-exception-unrecognisedvar": "$1文字目に認識できない変数「$2」があります。",
+ "abusefilter-exception-notenoughargs": "$1 文字目で呼び出されている関数 $2 の引数が不足しています。\n$3 個の{{PLURAL:$3|引数}}があるべきですが $4 個しかありません",
+ "abusefilter-exception-regexfailure": "$1 文字目の正規表現「$3」にエラーがあります: \"$2\"",
+ "abusefilter-exception-overridebuiltin": "$1 文字目で、組み込みの変数「$2」に誤って上書きしてしまっています。",
+ "abusefilter-exception-outofbounds": "$1 文字目で、存在しない一覧項目 $2 (一覧のサイズは $3) を要求しています。",
+ "abusefilter-exception-notlist": "$1文字目で非配列の配列要素を要求しています。",
+ "abusefilter-action-tag": "タグ付け",
+ "abusefilter-action-throttle": "速度を制限",
+ "abusefilter-action-warn": "警告",
+ "abusefilter-action-blockautopromote": "自動昇格を防止",
+ "abusefilter-action-block": "ブロック",
+ "abusefilter-action-degroup": "グループから除去",
+ "abusefilter-action-rangeblock": "レンジブロック",
+ "abusefilter-action-disallow": "不許可",
+ "abusefilter-revert-title": "フィルター $1 によるすべての変更を差し戻す",
+ "abusefilter-revert-intro": "このフォームでは、フィルター $1 に起因する、不正利用フィルターによるすべての変更を差し戻すことができます。\nこのツールの使用には十分注意してください。",
+ "abusefilter-revert-preview-item": "$1に $2 が、$4 で $3 を{{GENDER:$7|行いました}}。\n差し戻す対処操作: $5 ($6)",
+ "abusefilter-revert-search-legend": "不正利用フィルターによる対処操作のうち、差し戻すものを選択する",
+ "abusefilter-revert-periodstart": "期間始め:",
+ "abusefilter-revert-periodend": "期間終わり:",
+ "abusefilter-revert-search": "対処操作を選択",
+ "abusefilter-revert-filter": "フィルター:",
+ "abusefilter-revert-preview-intro": "以下は、この操作によって差し戻される、不正利用フィルターによる対処操作です。\n注意深く確認し、「{{int:abusefilter-revert-confirm}}」をクリックして選択を確定してください。",
+ "abusefilter-revert-confirm": "確定",
+ "abusefilter-revert-success": "[[Special:AbuseFilter/$1|フィルター $2]] に起因した、不正利用フィルターによるすべての対処操作を差し戻しました。",
+ "abusefilter-revert-reason": "フィルター $1 に起因した、不正利用フィルターによるすべての対処操作の自動差し戻し。理由: $2",
+ "abusefilter-revert-reasonfield": "理由:",
+ "abusefilter-test": "フィルターを過去の編集に対して試験する",
+ "abusefilter-test-intro": "このページでは、下のボックスに入力したフィルターを過去 $1件の{{PLURAL:$1|変更}}に対してテストできます。既存のフィルターを読み込むには、そのフィルターIDを編集テキストボックスの下のボックスに入力し、「{{int:abusefilter-test-load}}」ボタンを押します。",
+ "abusefilter-test-legend": "フィルターのテスト",
+ "abusefilter-test-load-filter": "読み込むフィルターのID:",
+ "abusefilter-test-submit": "テスト",
+ "abusefilter-test-load": "読み込み",
+ "abusefilter-test-user": "変更した利用者:",
+ "abusefilter-test-period-start": "これ以降の変更:",
+ "abusefilter-test-period-end": "これ以前の変更:",
+ "abusefilter-test-page": "変更されるページ:",
+ "abusefilter-test-shownegative": "フィルターに一致しない変更を表示する",
+ "abusefilter-test-syntaxerr": "あなたが入力したフィルターには構文エラーがあります。\n「{{int:abusefilter-edit-check}}」ボタンをクリックして、完全な説明を得ることができます。",
+ "abusefilter-test-badtitle": "入力したページ名は無効です。ページ名に使用できない文字を含んでいる可能性があります。",
+ "abusefilter-changeslist-examine": "分析",
+ "abusefilter-examine": "個別の変更を分析する",
+ "abusefilter-examine-intro": "このページでは不正利用フィルターが個別の編集に対して生成した変数を分析し、フィルターに対してそれを試験することができます。",
+ "abusefilter-examine-legend": "変更の選択",
+ "abusefilter-examine-diff": "差分URL:",
+ "abusefilter-examine-user": "利用者:",
+ "abusefilter-examine-title": "ページ名:",
+ "abusefilter-examine-submit": "検索",
+ "abusefilter-examine-vars": "この変更によって生成された変数",
+ "abusefilter-examine-test": "この変更をフィルターに対して試験する",
+ "abusefilter-examine-test-button": "フィルター試験",
+ "abusefilter-examine-match": "フィルターはこの変更に一致しました。",
+ "abusefilter-examine-nomatch": "フィルターはこの変更に一致しませんでした。",
+ "abusefilter-examine-syntaxerror": "フィルターの構文が無効です",
+ "abusefilter-examine-notfound": "あなたが要求した変更は見つかりませんでした。",
+ "abusefilter-examine-incompatible": "あなたが要求した変更には不正利用フィルターが対応していません。",
+ "abusefilter-examine-noresults": "指定された検索条件に合致する結果はありませんでした。",
+ "abusefilter-topnav": "'''不正利用フィルターのメニュー'''",
+ "abusefilter-topnav-home": "ホーム",
+ "abusefilter-topnav-test": "一括試験",
+ "abusefilter-topnav-examine": "過去の編集の試験",
+ "abusefilter-topnav-log": "不正利用記録",
+ "abusefilter-topnav-tools": "デバッグ用ツール",
+ "abusefilter-topnav-import": "フィルターのインポート",
+ "abusefilter-log-name": "不正利用フィルター記録",
+ "abusefilter-log-header": "この記録はフィルターに対してなされた変更の要約を表示しています。全詳細は、最近のフィルターの変更[[Special:AbuseFilter/history|一覧]]をご覧ください。",
+ "abusefilter-logentry-create": "$1 が $4 を{{GENDER:$2|作成しました}} ($5)",
+ "abusefilter-logentry-modify": "$1 が $4 ($5) を{{GENDER:$2|変更しました}}",
+ "abusefilter-log-noresults": "結果なし",
+ "abusefilter-diff-title": "版間での差分",
+ "abusefilter-diff-item": "項目",
+ "abusefilter-diff-version": "$1 の $2 {{GENDER:$3|による}}版",
+ "abusefilter-diff-info": "基本情報",
+ "abusefilter-diff-pattern": "フィルター条件",
+ "abusefilter-diff-invalid": "要求された版を取得できません",
+ "abusefilter-diff-backhistory": "フィルター履歴に戻る",
+ "abusefilter-diff-prev": "古い変更",
+ "abusefilter-diff-next": "新しい変更",
+ "abusefilter-import-intro": "このインターフェイスを使用して、別のウィキからフィルターを取り込めます。\n取り込み元のウィキで、編集画面の「{{int:abusefilter-edit-tools}}」下にある「{{int:abusefilter-edit-export}}」をクリックします。\nそこで現れるテキストボックスの内容をコピーし、それをこのテキストボックスに貼り付けて、「{{int:abusefilter-import-submit}}」をクリックします。",
+ "abusefilter-import-submit": "取り込む",
+ "abusefilter-group-default": "既定",
+ "abusefilter-http-error": "HTTPエラーが発生: $1",
+ "abusefilter-view-private-submit": "非公開記録を参照",
+ "abusefilter-view-private": "非公開記録を参照",
+ "abusefilter-view-private-reason": "非公開記録の調査理由",
+ "abusefilter-invalid-request": "無効なリクエスト! [[Special:AbuseLog/$1]]のフォームを使ってプライベートログの詳細にアクセスし、理由を提示する必要があります。",
+ "abusefilter-invalid-request-noid": "無効なリクエスト! 不正利用ログの詳細ページのフォームからプライベートログの詳細にアクセスし、理由を提示する必要があります。",
+ "log-description-abusefilterprivatedetails": "以下は不正利用フィルターの非公開記録を調査した日時の一覧です。",
+ "abusefilter-noreason": "警告: 非公開記録を閲覧するには、理由を入力する必要があります",
+ "abusefilter-log-ip-not-available": "参照不可",
+ "tag-abusefilter-condition-limit-description": "[[Special:AbuseFilter|不正利用フィルター]]([[mw:Extension:AbuseFilter/Conditions|ヘルプ]])によって確認できなかった編集やその他のイベント。",
+ "apihelp-abusefilterevalexpression-description": "不正利用フィルターの式を評価します。",
+ "apihelp-abusefilterevalexpression-param-expression": "評価する式。",
+ "apihelp-abusefilterevalexpression-example-1": "簡単な式を評価します",
+ "apihelp-abusefilterunblockautopromote-param-user": "ブロック解除する利用者の利用者名。",
+ "apihelp-query+abusefilters-description": "不正利用フィルターの詳細を表示する。",
+ "apihelp-query+abusefilters-param-startid": "列挙の始点となるフィルターID。",
+ "apihelp-query+abusefilters-param-endid": "列挙の終点となるフィルターID。",
+ "apihelp-query+abusefilters-param-limit": "表示するフィルターの最大数。",
+ "apihelp-query+abusefilters-param-prop": "取得するプロパティ。",
+ "apihelp-query+abusefilters-example-1": "有効化されている公開フィルターを一覧表示する",
+ "apihelp-query+abusefilters-example-2": "フィルターに関する詳細の一部を表示します",
+ "apihelp-query+abuselog-param-start": "列挙の始点となるタイムスタンプ。",
+ "apihelp-query+abuselog-param-end": "列挙の終点となるタイムスタンプ。",
+ "apihelp-query+abuselog-param-user": "与えられた利用者またはIPアドレスによる項目のみを表示する。",
+ "apihelp-query+abuselog-param-title": "与えられたページに関する項目のみを表示する。",
+ "apihelp-query+abuselog-param-limit": "一覧表示する項目の最大量。",
+ "apihelp-query+abuselog-param-prop": "取得するプロパティ。",
+ "apihelp-query+abuselog-example-1": "最近の不正利用記録を表示する",
+ "apihelp-query+abuselog-example-2": "[[API]] の最近の記録項目を表示する",
+ "apierror-abusefilter-canttest": "不正利用フィルターをテストする権限がありません。",
+ "apierror-abusefilter-cantcheck": "不正利用フィルターの構文を確認する権限がありません。",
+ "apierror-abusefilter-badsyntax": "フィルターの構文が無効です。"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/jv.json b/www/wiki/extensions/AbuseFilter/i18n/jv.json
new file mode 100644
index 00000000..4a7dc270
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/jv.json
@@ -0,0 +1,345 @@
+{
+ "@metadata": {
+ "authors": [
+ "NoiX180",
+ "පසිඳු කාවින්ද"
+ ]
+ },
+ "abusefilter-desc": "Patrapaké pamriksan heuristik otomatis nèng suntingan",
+ "abusefilter": "Setèlan saringan salah-guna",
+ "abuselog": "Log planggaran",
+ "abusefilter-intro": "Sunger Rawuh ing antarmuka panatan Saringan Planggaran.\nSaringan Planggaran kuwi mékanismé piranti alus otomatis sing matrapaké héuristik otomatis nèng kabèh laku.\nAntarmuka iki nuduhaké daptar saringan sing wis ditemtokaké, lan nglilakaké kanggo diowah.",
+ "abusefilter-mustbeeditor": "Kanggo alesan kamanan, namung panganggo sing nduwèni hak ngowah saringan planggaran sing bisa nganggo antarmuka iki.",
+ "abusefilter-warning": "'''Pènget:''' Tumindak iki wis otomatis tinengeran mbebayani.\nTumindak sing ora konstruktif bakal gagé kabalèkaké, lan besutan sing ora cetha utawa mbolan-balèni bakal njalari akun utawa alamat IP-né panjenengan kablokir.\nYèn yakin tumindak iki konstruktif, panjenengan bisa kirim iki manèh saperlu konfirmasi.\nKaterangan ringkes ngenani palanggaran sing jumbuh karo tumindak panjenengan ya iku: $1",
+ "abusefilter-disallowed": "Tumindak iki otomatis konangan mbebayani, mula ora diidinaké.\nManawa yakin tumindaké panjenengan konstruktif, mangga kandhani administrator apa sing arep panjenengan lakoni.\nKaterangan ringkes palanggaran sing jumbuh karo tumindaké panjenengan ya iku: $1",
+ "abusefilter-blocked-display": "Laku iki otomatis dianggep mbebayani,\nlan Sampéyan ditolak déning sistem.\nMinangka tambahan, kanggo njagani {{SITENAME}}, akun panganggo lan kabèh sing ana kaitané karo alamat IP Sampéyan wis diblokir saka nyunting.\nYèn iki amarga ana kasalahan, mangga hubungi pangurus.\nKatrangan ringkes aturan planggaran sing padha karo lakuné Sampéyan: $1",
+ "abusefilter-autopromote-blocked": "Tumindak iki otomatis kaciri mbebayani, lan ora diidinaké.\nSaliyané iku, minangka upaya pangayoman, sawenèh hak sing ajeg kawènèhaké marang akun-akun sing ana bakal sawetara dijabut saka akun panjenengan.\nKaterangan ringkes ngenani palanggaran sing jumbuh tumindaké panjenengan ya iku: $1",
+ "abusefilter-blocker": "Saringan planggaran",
+ "abusefilter-blockreason": "Otomatis diblokir déning saringan planggaran.\nKatrangan ngenani aturan sing cocok: $1",
+ "abusefilter-degroupreason": "Hak otomatis dijabut déning saringan planggaran.\nKatrangan aturan: $1",
+ "abusefilter-accountreserved": "Jeneng akun iki dicadhangaké kanggo saringan planggaran.",
+ "right-abusefilter-modify": "Owah saringan planggaran",
+ "right-abusefilter-view": "Deleng saringan salah-guna",
+ "right-abusefilter-log": "Deleng log salah-guna",
+ "right-abusefilter-log-detail": "Deleng èntri log salah-guna sing rinci",
+ "right-abusefilter-private": "Deleng dhata priangga ing log salah-guna",
+ "right-abusefilter-modify-restricted": "Owah saringan planggaran mawa laku kawatesi",
+ "right-abusefilter-revert": "Balèkaké kabèh owahan déning saringan planggaran sing dimaksud",
+ "right-abusefilter-view-private": "Deleng saringan salah-guna sing ditandhani minangka privat",
+ "right-abusefilter-log-private": "Deleng èntri log saringan salah-guna sing ditandhani minangka privat",
+ "right-abusefilter-hide-log": "Dhelikaké èntri nèng log planggaran",
+ "right-abusefilter-hidden-log": "Deleng èntri log salah-guna sing didhelikaké",
+ "action-abusefilter-modify": "owah saringan planggaran",
+ "action-abusefilter-view": "deleng saringan salah-guna",
+ "action-abusefilter-log": "deleng log salah-guna",
+ "action-abusefilter-log-detail": "deleng èntri log salah-guna sing rinci",
+ "action-abusefilter-private": "deleng dhata priangga ing log salah-guna",
+ "action-abusefilter-modify-restricted": "owah saringan planggaran mawa laku kawatesi",
+ "action-abusefilter-revert": "balèkaké kabèh owahan déning saringan planggaran sing dimaksud",
+ "action-abusefilter-view-private": "deleng saringan salah-guna sing ditandhani minangka privat",
+ "abusefilter-log": "Log saringan planggaran",
+ "abusefilter-log-summary": "Log iki nuduhaké daptar kabèh laku sing kacekel saringan.",
+ "abusefilter-log-search": "Golèk log planggaran",
+ "abusefilter-log-search-user": "Panganggo:",
+ "abusefilter-log-search-filter": "ID saringan (dileti tandha pipa):",
+ "abusefilter-log-search-title": "Sesirah:",
+ "abusefilter-log-search-wiki": "Wiki:",
+ "abusefilter-log-search-submit": "Golèk",
+ "abusefilter-log-detailedentry-global": "saringan global $1",
+ "abusefilter-log-detailedentry-local": "saringan $1",
+ "abusefilter-log-detailslink": "rerincèn",
+ "abusefilter-log-diff": "prabèdhan",
+ "abusefilter-log-hidelink": "larasaké kakatonan",
+ "abusefilter-log-details-legend": "Rincian kanggo èntri log $1",
+ "abusefilter-log-details-var": "Variabel",
+ "abusefilter-log-details-val": "Biji",
+ "abusefilter-log-details-vars": "Paramèter laku",
+ "abusefilter-log-details-private": "Data priangga",
+ "abusefilter-log-details-ip": "Alamat IP asli",
+ "abusefilter-log-noactions": "ora ana",
+ "abusefilter-log-details-diff": "Owahan sajeroning besutan",
+ "abusefilter-log-linkoncontribs": "log planggaran",
+ "abusefilter-log-linkoncontribs-text": "Log salah-guna kanggo {{GENDER:$1|panganggo iki}}",
+ "abusefilter-log-hidden": "(èntri kadhelikaké)",
+ "abusefilter-log-hidden-implicit": "(kadhelikaké marga benahan wis dibusak)",
+ "abusefilter-log-cannot-see-details": "Sampéyan ora kalilakaké ndelok rincian èntri iki.",
+ "abusefilter-log-details-hidden": "Sampéyan ora bisa ndelok rincian èntri iki amarga kuwi kadhelikaké saka umum.",
+ "abusefilter-log-hide-legend": "Dhelikaké èntri log",
+ "abusefilter-log-hide-id": "ID èntri log:",
+ "abusefilter-log-hide-hidden": "Dhelikaké èntri iki saka umum",
+ "abusefilter-log-hide-reason": "Alesan:",
+ "abusefilter-log-hide-forbidden": "Sampéyan ora kalilakaké ndhelikaké èntri log planggaran.",
+ "abusefilter-logentry-suppress": "dhelikaké \"[[$1]]\"",
+ "abusefilter-logentry-unsuppress": "tuduhaké \"[[$1]]\"",
+ "logentry-abusefilter-hit": "$1 {{GENDER:$2|njalari}} $4, {{GENDER:$2|ngayahi}} \"$5\" ing $3. Tumindak diayahi: $6 ($7)",
+ "abusefilter-management": "Panatan saringan planggaran",
+ "abusefilter-list": "Kabèh saringan",
+ "abusefilter-list-id": "ID saringan",
+ "abusefilter-list-status": "Status",
+ "abusefilter-list-public": "Katrangan umum",
+ "abusefilter-list-consequences": "Risiko",
+ "abusefilter-list-visibility": "Kakatonan",
+ "abusefilter-list-hitcount": "Cacahing penetan",
+ "abusefilter-list-edit": "Besut",
+ "abusefilter-list-details": "Rerincèn",
+ "abusefilter-list-limit": "Cacah per kaca:",
+ "abusefilter-list-lastmodified": "Diowah pungkasan",
+ "abusefilter-list-group": "Klompok saringan",
+ "abusefilter-hidden": "Priangga",
+ "abusefilter-unhidden": "Umum",
+ "abusefilter-enabled": "Murub",
+ "abusefilter-deleted": "Dibusak",
+ "abusefilter-disabled": "Mati",
+ "abusefilter-new": "Gawé saringan anyar",
+ "abusefilter-return": "Balik neng panatan saringan",
+ "abusefilter-status-global": "Global",
+ "abusefilter-list-options": "Pilihan",
+ "abusefilter-list-options-deleted": "Saringan kabusak:",
+ "abusefilter-list-options-deleted-only": "Tuduhaké saringan kabusak waé",
+ "abusefilter-list-options-deleted-hide": "Dhelikaké saringan kabusak",
+ "abusefilter-list-options-deleted-show": "Kalebukaké saringan kabusak",
+ "abusefilter-list-options-scope-global": "Mligi aturan global",
+ "abusefilter-list-options-disabled": "Pati saringan:",
+ "abusefilter-list-options-hidedisabled": "Dhelikaké saringan sing dipatèni",
+ "abusefilter-list-options-submit": "Anyari",
+ "abusefilter-tools-text": "Iki sebagéyan prangkat sing mungkin migunani kanggo mormulasi lan njajal panyaring planggaran.",
+ "abusefilter-tools-expr": "Panjajal èksprèsi",
+ "abusefilter-tools-submitexpr": "Evaluasi",
+ "abusefilter-tools-reautoconfirm": "Mbalèkaké status pepesthèn otomatis",
+ "abusefilter-tools-reautoconfirm-user": "Panganggo:",
+ "abusefilter-tools-reautoconfirm-submit": "Balèni pesthèkaké otomatis",
+ "abusefilter-reautoconfirm-none": "Status pepesthèn otomatis {{GENDER:$1|panganggo|panganggo|panganggo}} iki ora dijabut.",
+ "abusefilter-reautoconfirm-notallowed": "Sampéyan ora dililakaké mbalèkaké status pepesthèn otomatis.",
+ "abusefilter-reautoconfirm-done": "Status pepesthèn akun wis dibalèkaké",
+ "abusefilter-edit-subtitle": "Mbesut panyaringan $1",
+ "abusefilter-edit-subtitle-new": "Nggawé saringan",
+ "abusefilter-edit-status-label": "Statistik:",
+ "abusefilter-edit-new": "Saringan anyar",
+ "abusefilter-edit-save": "Simpen saringan",
+ "abusefilter-edit-id": "ID saringan:",
+ "abusefilter-edit-description": "Katrangan:\n:''(bisa didhelok umum)''",
+ "abusefilter-edit-group": "Golongan saringan:",
+ "abusefilter-edit-flags": "Tenger:",
+ "abusefilter-edit-enabled": "Urubaké saringan iki",
+ "abusefilter-edit-deleted": "Tandhai minangka kabusak",
+ "abusefilter-edit-hidden": "Dhelikaké rincian saringan iki saka umum",
+ "abusefilter-edit-global": "Saringan global",
+ "abusefilter-edit-rules": "Kahanan:",
+ "abusefilter-edit-notes": "Cathetan:",
+ "abusefilter-edit-lastmod": "Saring owahan pungkasan:",
+ "abusefilter-edit-lastmod-text": "$1 déning $2",
+ "abusefilter-edit-consequences": "Tumindak sing diayahi yèn cocog",
+ "abusefilter-edit-action-disallow": "Alangi panganggo sing marai mandheg mangu",
+ "abusefilter-edit-action-blockautopromote": "Jabut status pepesthèn otomatis panganggo",
+ "abusefilter-edit-action-degroup": "Busak panganggo iki saka kabèh golongan mirunggan",
+ "abusefilter-edit-action-block": "Blokir panganggo lan/utawa alamat IP saka nyunting",
+ "abusefilter-edit-action-rangeblock": "Blokir jangkah /16 asalé panganggo",
+ "abusefilter-edit-action-tag": "Tandhani besutan nedya dipriksa mengko",
+ "abusefilter-edit-throttle-count": "Cacahé laku sing dililakaké:",
+ "abusefilter-edit-throttle-period": "Periode wektu:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|detik|detik}}",
+ "abusefilter-edit-throttle-groups": "Klompokaké klep miturut:\n:''(siji per larik, gabung karo koma)''",
+ "abusefilter-edit-warn-message": "Layang sistem sing dianggo kanggo pèngetan:",
+ "abusefilter-edit-warn-other": "Layang liya",
+ "abusefilter-edit-warn-other-label": "Jeneng kaca saka layang liya:\n:''(tanpa ater-ater MediaWiki)''",
+ "abusefilter-edit-warn-actions": "Tumindak:",
+ "abusefilter-edit-warn-preview": "Pratuduh layang sing dipilih",
+ "abusefilter-edit-warn-edit": "Gawé/Besut layang sing dipilih",
+ "abusefilter-edit-tag-tag": "[[Special:Tags|Tag]] kanggo cak-cakan (siji saben larik):",
+ "abusefilter-edit-denied": "Sampéyan mungkin ora ndelok rincian saka saringan iki amarga kuwi pancen didhelikaké saka umum.",
+ "abusefilter-edit-main": "Paramètèr saringan",
+ "abusefilter-edit-done-subtitle": "Saringan wis dibesut",
+ "abusefilter-edit-done": "[[Special:AbuseFilter/history/$1/diff/prev/$2|Owahané panjenengan]] tumrap [[Special:AbuseFilter/$1|saringan $3]] wis disimpen.",
+ "abusefilter-edit-badsyntax": "Ana kasalahan sintaks nèng saringan sing Sampéyan lebokaké.\nWeton saka parser yakuwi: <pre>$1</pre>",
+ "abusefilter-edit-restricted": "Sampéyan ora bisa nyunting saringan ini amarga iki kaisi siji utawa luwih laku sing diwatesi.\nMangga takon panganggo sing nduwèni hak kanggo nggenepi apa sing Sampéyan karepaké.",
+ "abusefilter-edit-viewhistory": "Deleng sujarahé saringan iki",
+ "abusefilter-edit-history": "Riwayah:",
+ "abusefilter-edit-check": "Priksa sintaks",
+ "abusefilter-edit-badfilter": "Saringan sing panjenengan jaluk ora ana",
+ "abusefilter-edit-revert": "Balekaké tumindak sing diayahi saringan iki",
+ "abusefilter-edit-tools": "Piranti:",
+ "abusefilter-edit-test-link": "Jajal panyaringan iki tumrap besutan-besutan anyar",
+ "abusefilter-edit-export": "Èkspor saringan iki nèng wiki liya",
+ "abusefilter-edit-syntaxok": "Ora ana kasalahan sintaks kadètèk.",
+ "abusefilter-edit-syntaxerr": "Kasalaha sintaks kadètèk: $1",
+ "abusefilter-edit-bad-tags": "Tag siji utawa luwih sing kokwèhaké ora sah.\nTag kudu cendhak lan ora ngemu karakter mirunggan.",
+ "abusefilter-edit-notallowed": "Panjenengan ora diidinaké nggawé utawa mbesut saringan palanggaran",
+ "abusefilter-edit-builder-select": "Pilih sawijining pilihan kanggo nambahaké nèng kursor",
+ "abusefilter-edit-builder-group-op-arithmetic": "Operator aritmatika",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Panambahan (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Sudan (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Ping-pingan (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Para-paraan (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Modulo (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Daya (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Operator pepadhan",
+ "abusefilter-edit-builder-op-comparison-equal": "Padha karo (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Ora padha karo (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "Kurang saka (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Luwih gedhé saka (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Kurang saka padha karo (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Luwih gedhé padha karo (<=)",
+ "abusefilter-edit-builder-group-op-bool": "Operator boolean",
+ "abusefilter-edit-builder-op-bool-not": "Dudu (!)",
+ "abusefilter-edit-builder-op-bool-and": "Lan (&)",
+ "abusefilter-edit-builder-op-bool-or": "Utawa (|)",
+ "abusefilter-edit-builder-group-misc": "Liyané",
+ "abusefilter-edit-builder-misc-in": "kalebu nèng ''string'' (in)",
+ "abusefilter-edit-builder-misc-like": "Pola cocok (like)",
+ "abusefilter-edit-builder-misc-rlike": "Cocok karo regex (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "Cocok karo regex, aksara cilik utawa kapital ora ngaruh (irlike)",
+ "abusefilter-edit-builder-misc-contains": "''String'' kiri kaisi ''string'' sing bener (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "''String'' literal (\"\")",
+ "abusefilter-edit-builder-misc-tern": "Operator terner (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "Kondisional (if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "Fungsi",
+ "abusefilter-edit-builder-funcs-length": "Dawa ''string'' (length)",
+ "abusefilter-edit-builder-funcs-lcase": "Dadi aksara cilik (lcase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "Normalaké karakter sing mbingungaké (ccnorm)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "Busak karakter dobel (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "Karakter kusus / kabéhé karakter (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "Normalaké (norm)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "Busak spasi (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "Busak karakter kusus (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "IP ana ing jangkahan? (ip_in_range)",
+ "abusefilter-edit-builder-funcs-set_var": "Pasang variabel (set_var)",
+ "abusefilter-edit-builder-group-vars": "Variabel",
+ "abusefilter-edit-builder-vars-accountname": "Jeneng akun (utawa panggawéan akun)",
+ "abusefilter-edit-builder-vars-timestamp": "Tandha pergantèn wektu Unix",
+ "abusefilter-edit-builder-vars-action": "Tumindak",
+ "abusefilter-edit-builder-vars-addedlines": "Larik sing diwuwuh ing besutan",
+ "abusefilter-edit-builder-vars-delta": "Owahaning ukuran ing besutan",
+ "abusefilter-edit-builder-vars-newsize": "Gedhéné kaca anyar",
+ "abusefilter-edit-builder-vars-oldsize": "Gedhéné kaca lawas",
+ "abusefilter-edit-builder-vars-removedlines": "Larik sing dilih ing besutan",
+ "abusefilter-edit-builder-vars-summary": "Alesan/ringkesané besutan",
+ "abusefilter-edit-builder-vars-article-id": "ID kaca",
+ "abusefilter-edit-builder-vars-article-ns": "Bilik jeneng kaca",
+ "abusefilter-edit-builder-vars-article-text": "Sesirah kaca (tanpa jagad aran)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Sesirah kaca jangkep",
+ "abusefilter-edit-builder-vars-movedfrom-id": "ID kaca pangalihé kaca sumber",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "Mandala aran pangalih kaca sumber",
+ "abusefilter-edit-builder-vars-movedfrom-text": "Sesirah kaca sumber alihan",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "Sesirah jangkep kaca sumber alihan",
+ "abusefilter-edit-builder-vars-movedto-id": "ID kaca saka kaca papan patujon pamidhahan",
+ "abusefilter-edit-builder-vars-movedto-ns": "Mandala aran pangalihé kaca paran",
+ "abusefilter-edit-builder-vars-movedto-text": "Sesirah kaca tujuan alihan",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "Sesirah jangkep kaca tujuan alihan",
+ "abusefilter-edit-builder-vars-user-editcount": "Cacah besutan panganggo",
+ "abusefilter-edit-builder-vars-user-age": "Yuswané akun panganggo",
+ "abusefilter-edit-builder-vars-user-name": "Jeneng akun panganggo",
+ "abusefilter-edit-builder-vars-user-groups": "Klompok (kanthi jangkep) sing panganggo ana ing njeroné",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "Wektu alamat layang èlèktronik dipesthèkaké",
+ "abusefilter-edit-builder-vars-recent-contributors": "Sepuluh panganggo pungkasan sing ngontribusi nèng kaca",
+ "abusefilter-edit-builder-vars-all-links": "Kabèh pranala njaba nèng tèks anyar",
+ "abusefilter-edit-builder-vars-added-links": "Kabèh pranala njaba katambahaké sajeroning besutan",
+ "abusefilter-edit-builder-vars-removed-links": "Kabèh pranala njaba kabusak sajeroning besutan",
+ "abusefilter-edit-builder-vars-old-text": "Tèkswiki kaca lawas, sadurungé dibesut",
+ "abusefilter-edit-builder-vars-new-text": "Tèkswiki kaca anyar, sakisé dibesut",
+ "abusefilter-edit-builder-vars-restrictions-edit": "Besut tataran rereksan kaca",
+ "abusefilter-edit-builder-vars-restrictions-move": "Pindhah undhak panjagan kaca",
+ "abusefilter-edit-builder-vars-old-links": "Pranala ing njero kaca, sadurungé dibesut",
+ "abusefilter-edit-builder-vars-minor-edit": "Ana utawa ora suntingan sing ditandhai minangka suntingan cilik",
+ "abusefilter-filter-log": "Owahan saringan paling anyar",
+ "abusefilter-history": "Riwayah owahan saka Saringan Planggaran #$1",
+ "abusefilter-history-foruser": "Owahan déning $1",
+ "abusefilter-history-hidden": "Kadhelikaké",
+ "abusefilter-history-enabled": "Murub",
+ "abusefilter-history-global": "Global",
+ "abusefilter-history-timestamp": "Wektu",
+ "abusefilter-history-user": "Panganggo",
+ "abusefilter-history-public": "Katrangan saringan umum",
+ "abusefilter-history-flags": "Tenger",
+ "abusefilter-history-filter": "Aturan saringan",
+ "abusefilter-history-comments": "Tanggepan",
+ "abusefilter-history-actions": "Tumindak",
+ "abusefilter-history-backedit": "Balik menyang pambesutan saringan",
+ "abusefilter-history-deleted": "Dibusak",
+ "abusefilter-history-filterid": "Saringan",
+ "abusefilter-history-select-legend": "Gegolèkan anyar-anyaran",
+ "abusefilter-history-select-user": "Panganggo:",
+ "abusefilter-history-diff": "Owah-owahan",
+ "abusefilter-history-error-hidden": "Saringan sing Sampéyan jaluk didhelikaké, lan Sampéyan ora bisa ndelok riwayaté.",
+ "abusefilter-exception-unexpectedatend": "\"$2\" ora dikarepaké nèng karakter $1.",
+ "abusefilter-exception-unrecognisedkeyword": "Tembung kunci $2 ora dingertèni ing karakter $1.",
+ "abusefilter-exception-unexpectedtoken": "Token \"$3\" ora dikarepaké (saka jinis $2) nèng karakter $1.",
+ "abusefilter-exception-invalidoperator": "Operator ora sah \"$2\" ing karakter $1.",
+ "abusefilter-exception-unrecognisedtoken": "Token \"$2\" ora dikenal nèng karakter $1.",
+ "abusefilter-exception-noparams": "Ora ana paramèter diawèhaké kanggo fungsi \"$2\" nèng karakter $1.",
+ "abusefilter-exception-dividebyzero": "Upaya ilegal mbagi $2 mawa nol nèng karakter $1.",
+ "abusefilter-exception-unrecognisedvar": "Variabel ora dikenal $2 nèng karakter $1",
+ "abusefilter-exception-notenoughargs": "Ora cukup panemu kanggo fungsi $2 sing diceluk nèng karakter $1.\nDikarepaké ana $3 {{PLURAL:$3|panemu|panemu}}, nemu $4",
+ "abusefilter-exception-regexfailure": "Kasalahan nèng èksprèsi biasa \"$3\" nèng karakter $1: \"$2\"",
+ "abusefilter-action-tag": "Tag",
+ "abusefilter-action-throttle": "Klep panutup",
+ "abusefilter-action-warn": "Pèngetan",
+ "abusefilter-action-blockautopromote": "Blokir tawa otomatis",
+ "abusefilter-action-block": "Blokir",
+ "abusefilter-action-degroup": "Singkiraké saka klompok",
+ "abusefilter-action-rangeblock": "Blokir salarikan",
+ "abusefilter-action-disallow": "Ora dililakaké",
+ "abusefilter-revert-title": "Balekaké kabèh owahan déning saringan $1",
+ "abusefilter-revert-intro": "Pormulir iki nglilakaké Sampéyan mbalèkaké kabèh owahan saka saringan planggaran amarga saringan $1.\nMangga ngati-ati nganggo piranti iki.",
+ "abusefilter-revert-preview-item": "$1: $2 {{GENDER:$7|nggawé}} $3 ing $4.\nTumindak sing arep diwurungaké: $5 ($6)",
+ "abusefilter-revert-search-legend": "Pilih laku saringan planggaran kanggo dibalèkaké",
+ "abusefilter-revert-periodstart": "Pèriode lekas:",
+ "abusefilter-revert-periodend": "Pèriode rampung:",
+ "abusefilter-revert-search": "Pilih laku",
+ "abusefilter-revert-filter": "Saringan:",
+ "abusefilter-revert-preview-intro": "Ngisor iki laku sing dilakoni saringan planggaran sing arep dibalèkaké déning laku iki.\nMangga priksa sing tenan, lan klik \"pesthèkaké\" kanggo mesthèkaké pilihan Sampéyan.",
+ "abusefilter-revert-confirm": "Pesthèkaké",
+ "abusefilter-revert-success": "Panjenengan wis mbalèkaké kabèh tumindak sing diayahi saringan salah-guna amarga [[Special:AbuseFilter/$1|saringan $2]].",
+ "abusefilter-revert-reason": "Pambalèkan otomatis kabèh laku sing dilakokaké saringan planggaran amarga saringan $1.\nAlesané: $2",
+ "abusefilter-revert-reasonfield": "Alesané:",
+ "abusefilter-test": "Jajal saringan tumrap suntingan sakdurungé",
+ "abusefilter-test-intro": "Kaca iki ngidinaké panjenengan mriksa panyaringan sing dilebokaké ing kothak ngisor iki tumrap {{PLURAL:$1|owahan}} $1 pungkasan.\nSaperlu ngamot panyaringan, ketik ID panyaringan ing kothak sangisoré kothak tèks besut, tumuli klik tombol \"{{int:abusefilter-test-load}}\".",
+ "abusefilter-test-legend": "Panjajalan saringan",
+ "abusefilter-test-load-filter": "Emot ID saringan:",
+ "abusefilter-test-submit": "Jajal",
+ "abusefilter-test-load": "Emot",
+ "abusefilter-test-user": "Owahan déning panganggo:",
+ "abusefilter-test-period-start": "Owahan digawé sakwisé:",
+ "abusefilter-test-period-end": "Owahan digawé sakdurungé:",
+ "abusefilter-test-page": "Owahan digawé ing kaca:",
+ "abusefilter-test-shownegative": "Tuduhaké owahan sing cocok karo saringan",
+ "abusefilter-test-syntaxerr": "Saringan sing panjenengan isèkaké kena masalah sintaksis.\nPanjenengan bisa nampa wedharan wutuh kanthi ngeklik tombol \"{{int:abusefilter-edit-check}}\".",
+ "abusefilter-changeslist-examine": "uji",
+ "abusefilter-examine": "Uji owahan individu",
+ "abusefilter-examine-intro": "Kaca iki nglilakaké Sampéyan nguji variabèl saka Saringan Planggaran kanggo sawiji owahan individu, lan jajal tumrap saringan.",
+ "abusefilter-examine-legend": "Pilih owahan",
+ "abusefilter-examine-diff": "URL beda:",
+ "abusefilter-examine-user": "Panganggo:",
+ "abusefilter-examine-title": "Sesirah kaca:",
+ "abusefilter-examine-submit": "Golèk",
+ "abusefilter-examine-vars": "Variabèl kasilaké kanggo owahan iki",
+ "abusefilter-examine-test": "Jajal owahan iki tumrap saringan",
+ "abusefilter-examine-test-button": "Jajal saringan",
+ "abusefilter-examine-match": "Saringan cocok karo owahan iki.",
+ "abusefilter-examine-nomatch": "Saringan ora cocok karo owahan iki.",
+ "abusefilter-examine-syntaxerror": "Saringan ngemu sintaks sing ora sah",
+ "abusefilter-examine-notfound": "Owahan sing Sampéyan karepaké ora ditemokaké.",
+ "abusefilter-examine-incompatible": "Owahan sing Sampéyan karepaké ora disengkuyung déning Saringan Planggaran",
+ "abusefilter-examine-noresults": "Ora ana kasil sing mèmper paramèter gegolèkanmu.",
+ "abusefilter-topnav": "'''navigasi Saringan Planggaran'''",
+ "abusefilter-topnav-home": "Latar",
+ "abusefilter-topnav-test": "Panjajalan saktumpuk",
+ "abusefilter-topnav-examine": "Dadar besutan-besutan kapungkur",
+ "abusefilter-topnav-log": "Log Planggaran",
+ "abusefilter-topnav-tools": "Piranti debug",
+ "abusefilter-topnav-import": "Impor saringan",
+ "abusefilter-log-name": "Log saringan palanggaran",
+ "abusefilter-log-header": "Log iki nuduhaké ringkesan owah-owahan sing digawé tumrap saringan.\nKanggo rerincèn wutuhé, delengen [[Special:AbuseFilter/history|pratélan]] owah-owahan anyaré saringan.",
+ "abusefilter-log-noresults": "Ora ana asilé",
+ "abusefilter-diff-title": "Prabédhan antar vèrsi",
+ "abusefilter-diff-item": "Barang",
+ "abusefilter-diff-version": "Vèrsi seka $1 {{GENDER:$3|déning}} $2",
+ "abusefilter-diff-info": "Informasi dhasar",
+ "abusefilter-diff-pattern": "Kahanan saringan",
+ "abusefilter-diff-invalid": "Ora bisa njupuk vèrsi sing dikarepaké",
+ "abusefilter-diff-backhistory": "Balik menyang sajarahing saringan",
+ "abusefilter-diff-prev": "Owahan luwih lawas",
+ "abusefilter-diff-next": "Owahan luwih anyar",
+ "abusefilter-import-intro": "Sampéyan bisa nganggo antarmuka iki kanggo ngimpor saringan saka wiki liya.\nNèng wiki sumber, klik \"{{int:abusefilter-edit-export}}\" sakisoré \"{{int:abusefilter-edit-tools}}\" nèng antarmuka panyuntingan.\nSalin saka kothak wedhi sing njedhul, lan tèmplèkaké nèng kothak tèks, banjur klik \"{{int:abusefilter-import-submit}}\".",
+ "abusefilter-import-submit": "Impor data",
+ "abusefilter-group-default": "Gawan"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/ka.json b/www/wiki/extensions/AbuseFilter/i18n/ka.json
new file mode 100644
index 00000000..734c9f16
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/ka.json
@@ -0,0 +1,413 @@
+{
+ "@metadata": {
+ "authors": [
+ "BRUTE",
+ "David1010",
+ "Dawid Deutschland",
+ "Malafaya",
+ "Temuri rajavi",
+ "გიორგიმელა",
+ "Otogi",
+ "Matma Rex"
+ ]
+ },
+ "abusefilter-desc": "საშუალებას იძლევა რედაქტირებისას გამოიყენოს ევრისტიკული ფილტრები",
+ "abusefilter": "ბოროტად გამოყენების ფილტრის კონფიგურაცია",
+ "abuselog": "ბოროტად გამოყენების ჟურნალი",
+ "abusefilter-intro": "კეთილი იყოს თქვენი მობრძანება ბოროტად გამოყენების ფილტრის მართვის გვერდზე. ბოროტად გამოყენების ფილტრი წარმოადგენს მომხმარებელთა მოქმედების შესაბამისად ავტომატიზირებულ მექანიზმს ავტომატური ევრისტიკული გამოყენებით. აქ მოყვანილია ყველა დაყენებული ფილტრის სია, რომელთა შეცვლა არის შესაძლებელი.",
+ "abusefilter-mustbeeditor": "უსაფრთხოების შეხედულებიდან გამომდინარე, მხოლოდ ბოროტად გამოყენების ფილტრების შეცვლის უფლების მქონემომხმარებლებს შეუძლიათ ამ ინტერფეისის გამოყენება.",
+ "abusefilter-warning": "'''ყურადღება''': ეს ქმედება ავტომატურად იქნა მიჩნეული არაკონსტრუქციულად.\nამგვარი ცვლილებები მეტწილად ძალიან სწრაფად უქმდება. ქმედების განმეორებისას უარეს შემთხვევაში თქვენი ანგარიში ან IP-მისამართი დაიბლოკება.\nთუ თქვენ მიგაჩნიათ, რომ თქვენი განხორციელებული მოქმედება სასარგებლოა, შეგიძლიათ მიღებით ხელმეორედ დაადასტუროთ ეს.\nდარღვევის მოკლე აღწერა: $1",
+ "abusefilter-blocker": "ბოროტად გამოყენების ფილტრი",
+ "abusefilter-blockreason": "ავტომატურად დაიბლოკა ბოროტად გამოყენების ფილტრის მიერ.\nშესაბამისი წესის აღწერა: $1",
+ "abusefilter-degroupreason": "ბოროტად გამოყენების ფილტრმა ავტომატურად ჩამოართვა უფლებები.\nწესების აღწერა: $1",
+ "abusefilter-accountreserved": "ეს მომხმარებლის სახელი დაცულია ბოროტად გამოყენების ფილტრისაგან",
+ "right-abusefilter-modify": "ბოროტად გამოყენების ფილტრების შეცვლა",
+ "right-abusefilter-view": "ბოროტად გამოყენების ფილტრის ხილვა",
+ "right-abusefilter-log": "ბოროტად გამოყენების ფილტრის ჟურნალის ხილვა",
+ "right-abusefilter-log-detail": "ბოროტად გამოყენების ფილტრის ჟურნალის ჩანაწერების ყურადღებით ხილვა",
+ "right-abusefilter-private": "ბოროტად გამოყენების ფილტრის ჟურნალის დამალული მონაცემების ხილვა",
+ "right-abusefilter-modify-restricted": "ბოროტად გამოყენების ფილტრის რედაქტირება აკრძალული მოქმედებებით",
+ "right-abusefilter-revert": "ბოროტად გამოყენების ფილტრის ნაჩვენები ყველა ცვლილების გაუქმება",
+ "right-abusefilter-view-private": "მაჩვენე ბოროტად გამოყენების ფილტრები, რომლებიც მოინიშნა, როგორც კერძო",
+ "right-abusefilter-log-private": "ბოროტადგამოყენების ფილტრების ჟურნალის ჩანაწერების ხილვა, რომლებიც მონიშნულია როგორც ხშირი",
+ "right-abusefilter-hide-log": "ბოროტად გამოყენების ფილტრის ჟურნალიდან ცვლილებების დამალვა",
+ "right-abusefilter-hidden-log": "ბოროტად გამოყენების ფილტრის ჟურნალის დამალული ჩანაწერების ხილვა",
+ "right-abusefilter-modify-global": "ბოროტადგამოყენების გლობალური ფილტრების შექმნა ან შეცვლა",
+ "action-abusefilter-modify": "ბოროტად გამოყენების ფილტრების შეცვლა",
+ "action-abusefilter-view": "ბოროტად გამოყენების ფილტრების ხილვა",
+ "action-abusefilter-log": "ბოროტად გამოყენების ფილტრის ჟურნალის ხილვა",
+ "action-abusefilter-log-detail": "ბოროტად გამოყენების ფილტრის ჟურნალის ჩანაწერების ყურადღებით ხილვა",
+ "action-abusefilter-private": "პირადი მონაცემების ხილვა ბოროტად გამოყენების ფილტრის ჟურნალში",
+ "action-abusefilter-modify-restricted": "ბოროტად გამოყენების ფილტრის რედაქტირება აკრძალული მოქმედებებით",
+ "action-abusefilter-revert": "ბოროტად გამოყენების ფილტრის ნაჩვენები ყველა ცვლილების გაუქმება",
+ "action-abusefilter-view-private": "მაჩვენე ბოროტად გამოყენების ფილტრები, რომლებიც მოინიშნა, როგორც პირადი",
+ "abusefilter-log": "ბოროტად გამოყენების ფილტრის ჟურნალი",
+ "abusefilter-log-summary": "ეს ჟურნალი აჩვენებს ყველა იმ მოქმედების სიას, რომელიც ფილტრმა დაიჭირა.",
+ "abusefilter-log-search": "ბოროტად გამოყენების ფილტრის ჟურნალის ძიება",
+ "abusefilter-log-search-user": "მომხმარებელი:",
+ "abusefilter-log-search-filter": "ფილტრის ID (ვერტიკალური ხაზით გაყოფილი):",
+ "abusefilter-log-search-title": "სათაური:",
+ "abusefilter-log-search-wiki": "ვიკი:",
+ "abusefilter-log-search-submit": "ძიება",
+ "abusefilter-log-entry": "$1: $2 {{GENDER:$8|გამოიძახა}} ბოროტად გამოყენების ფილტრი, შეასრულა ქმედება „$3“ გვერდზე $4.\nმიღებული ზომები: $5;\nფილტრის აღწერა: $6",
+ "abusefilter-log-entry-withdiff": "$1: $2 {{GENDER:$8|გამოიძახა}} ბოროტად გამოყენების ფილტრის ამოქმედება, შეასრულა რედაქტირება „$3“ გვერდზე $4.\nშეასრულა ქმედება: $5;\nფილტრის აღწერა: $6 ($7)",
+ "abusefilter-log-detailedentry-global": "გლობალური ფილტრი $1",
+ "abusefilter-log-detailedentry-local": "ფილტრი $1",
+ "abusefilter-log-detailslink": "დეტალები",
+ "abusefilter-log-diff": "განსხ.",
+ "abusefilter-log-hidelink": "ხილვადობის დაყენება",
+ "abusefilter-log-details-legend": "დეტალები ჟურნალის ჩანაწერისათვის: $1",
+ "abusefilter-log-details-var": "ცვალებადი",
+ "abusefilter-log-details-val": "მნიშვნელობა",
+ "abusefilter-log-details-vars": "Action parameters",
+ "abusefilter-log-details-private": "კერძო მონაცემი",
+ "abusefilter-log-details-ip": "გამავალი IP მისამართი",
+ "abusefilter-log-noactions": "არცერთი",
+ "abusefilter-log-details-diff": "რედაქტირებისას განხორციელებული ცვლილებები",
+ "abusefilter-log-linkoncontribs": "ბოროტად გამოყენების ჟურნალი",
+ "abusefilter-log-linkoncontribs-text": "ბოროტად გამოყენების ფილტრის ჟურნალი ამ მომხმარებლისათვის",
+ "abusefilter-log-hidden": "(ცვლილება დამალულია)",
+ "abusefilter-log-hidden-implicit": "(დამალულია, რადგან შესწორება წაიშალა)",
+ "abusefilter-log-cannot-see-details": "თქვენ არ გაქვთ ამ ჩანაწერის დეტალური ინფორმაციის ხილვის უფლება.",
+ "abusefilter-log-details-hidden": "თქვენ ვერ იხილავთ დამატებით ინფორმაციას ამ ფილტრის შესახებ, რადგანაც ის დამალულია ჩვეულებრივი მომხმარებლებისთვის.",
+ "abusefilter-log-hide-legend": "ჟურნალის ჩანაწერის დამალვა",
+ "abusefilter-log-hide-id": "ჟურნალის ჩანაწერების ID:",
+ "abusefilter-log-hide-hidden": "ამ ცვლილების დამალვა საზოგადოებისათვის",
+ "abusefilter-log-hide-reason": "მიზეზი:",
+ "abusefilter-log-hide-forbidden": "თქვენ ბოროტად გამოყენების ფილტრის ჟურნალის ჩანაწერების დამალვის უფლება არა გაქვთ.",
+ "abusefilter-logentry-suppress": "\"[[$1]]\"-ის დამალვა",
+ "abusefilter-logentry-unsuppress": "\"[[$1]]\"-ის ჩვენება",
+ "abusefilter-management": "ბოროტად გამოყენების ფილტრის მართვა",
+ "abusefilter-list": "ყველა ფილტრი",
+ "abusefilter-list-id": "ფილტრის ID",
+ "abusefilter-list-status": "სტატუსი",
+ "abusefilter-list-public": "საზოგადო აღწერა",
+ "abusefilter-list-consequences": "შედეგები",
+ "abusefilter-list-visibility": "ხილვადობა",
+ "abusefilter-list-hitcount": "თავდასხმის მთვლელი",
+ "abusefilter-list-edit": "რედაქტირება",
+ "abusefilter-list-details": "დეტალები",
+ "abusefilter-list-limit": "რაოდენობა გვერდზე:",
+ "abusefilter-list-lastmodified": "ბოლოს განახლდა",
+ "abusefilter-list-group": "ფილტრის ჯგუფი",
+ "abusefilter-hidden": "დამალული",
+ "abusefilter-unhidden": "საზოგადოებრივი",
+ "abusefilter-enabled": "ჩართულია:",
+ "abusefilter-deleted": "წაშლილია",
+ "abusefilter-disabled": "გათიშულია",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|ამოქმედებები|ამოქმედება|ამოქმედებები}}",
+ "abusefilter-new": "ახალი ფილტრის შექმნა",
+ "abusefilter-return": " ბოროტად გამოყენების ფილტრის მართვასთან დაბრუნება",
+ "abusefilter-status-global": "გლობალური",
+ "abusefilter-list-options": "პარამეტრები",
+ "abusefilter-list-options-deleted": "წაშლილი ფილტრები:",
+ "abusefilter-list-options-deleted-only": "აჩვენეთ მხოლოდ წაშლილი ფილტრები",
+ "abusefilter-list-options-deleted-hide": "დამალეთ წაშლილი ფილტრები",
+ "abusefilter-list-options-deleted-show": "აჩვენეთ მხოლოდ წაშლილი ფილტრები",
+ "abusefilter-list-options-scope": "ფილტრების ჩვენება:",
+ "abusefilter-list-options-scope-local": "მხოლოდ ადგილობრივი წესები",
+ "abusefilter-list-options-scope-global": "მხოლოდ გლობალური წესები",
+ "abusefilter-list-options-scope-all": "ადგილობრივი და გლობალური წესები",
+ "abusefilter-list-options-disabled": "გათიშული ფილტრები:",
+ "abusefilter-list-options-hidedisabled": "დამალეთ გათიშული ფილტრები",
+ "abusefilter-list-options-submit": "განახლება",
+ "abusefilter-tools-text": "აქ არის რამდენიმე სხვადასხვა ხელსაწყო, რომელიც დაგეხმარებათ ბოროტად გამოყენების ფილტრებთან მუშაობაში.",
+ "abusefilter-tools-expr": "გამოთქმათა შემოწმება",
+ "abusefilter-tools-submitexpr": "გასინჯვა",
+ "abusefilter-tools-reautoconfirm": "«autoconfirmed» სტატუსის აღდგენა",
+ "abusefilter-tools-reautoconfirm-user": "მომხმარებელი:",
+ "abusefilter-tools-reautoconfirm-submit": "Re-დადასტურება",
+ "abusefilter-reautoconfirm-none": "ამ მომხმარებელს არა აქვს გათიშული ავტო შემოწმების სტატუსი",
+ "abusefilter-reautoconfirm-notallowed": "თქვენ ვერ აღადგენთ ავტოშემმოწმებლის სტატუსს.",
+ "abusefilter-reautoconfirm-done": "აღადგინეთ ანგარიშის ავტოშემოწმების სტატუსი",
+ "abusefilter-status": "ბოლო $1 {{PLURAL:$1|მოქმედება|მოქმედებებიდან}}, $2 ($3%) {{PLURAL:$2|მოხვდა|მოხვდნენ}} $4 სასაზღვრო პირობაზე, ხოლო $5 ($6%) {{PLURAL:$5|შეესაბამება|შეესაბამებიან}} ერთ-ერთ ჩართულ ფილტრს.",
+ "abusefilter-edit": "ბოროტად გამოყენების ფილტრების რედაქტირება",
+ "abusefilter-edit-subtitle": "ფილტრ $1-ის რედაქტირება",
+ "abusefilter-edit-subtitle-new": "ფილტრის შექმნა",
+ "abusefilter-edit-oldwarning": "<strong>თქვენ ასწორებთ ფილტრის ძველ ვერსიას. სტატისტიკა ნაჩვენებია ფილტრის ბოლო ვერსიისთვის. თუ თქვენ შეინახავთ რედაქტირებას, მაშინ თქვენ გადააწერთ თქვენს მიერ შეტანილ ცვლილებებს.</strong> &bull; [[Special:AbuseFilter/history/$2|დაბრუნება ფილტრის ისტორიაში]].",
+ "abusefilter-edit-status-label": "სტატისტიკა:",
+ "abusefilter-edit-status": "ბოლო {{PLURAL:$1|$1 მოქმედებიდან|#$1 მოქმედებებიდან}}, ეს ფილტრი შეესაბამება $2 ($3%).",
+ "abusefilter-edit-status-profile": "ბოლო {{PLURAL:$1|$1 მოქმედებიდან| მოქმედებებიდან}}, ეს ფილტრი შეესაბამება $2 ($3%).\nსამუშაოს საშუალო დრო — $4 მწ, ის იყენებს $5 {{PLURAL:$5|პირობა|პირობრბს}} პირობების ლიმიტიდან.",
+ "abusefilter-edit-new": "ახალი ფილტრი",
+ "abusefilter-edit-save": "ფილტრის შენახვა",
+ "abusefilter-edit-id": "ფილტრის ID:",
+ "abusefilter-edit-description": "აღწერა:\n:''(ყველასთვის მისაწვდომელი)''",
+ "abusefilter-edit-group": "ფილტრის ჯგუფი:",
+ "abusefilter-edit-flags": "დროშები:",
+ "abusefilter-edit-enabled": "ფილტრის ჩართვა",
+ "abusefilter-edit-deleted": "მონიშნეთ როგორც წაშლილი",
+ "abusefilter-edit-hidden": "დამალეთ ამ ფილტრის დამატებითი ინფორმაცია ჩვეულებრივი მომხმარებლებისგან",
+ "abusefilter-edit-global": "გლობალური ფილტრი",
+ "abusefilter-edit-rules": "პირობები:",
+ "abusefilter-edit-notes": "შენიშვნები:",
+ "abusefilter-edit-lastmod": "ფილტრის ბოლო ცვლილება:",
+ "abusefilter-edit-lastmod-text": "$1 — $2",
+ "abusefilter-edit-hitcount": "ფილტრის ამოქმედება:",
+ "abusefilter-edit-consequences": "მიღებული ზომები",
+ "abusefilter-edit-action-warn": "მიიღეთ ეს ზომები მომხმარებლის გაფრთხილების შემდეგ",
+ "abusefilter-edit-action-disallow": "აუკრძალეთ მომხმარებელს მოთხოვნილი მოქმედების განხორციელება",
+ "abusefilter-edit-action-blockautopromote": "მოხსენით მომხმარებელს ავტოდადასტურების სტატუსი",
+ "abusefilter-edit-action-degroup": "გარიცხეთ მომხმარებელი ყველა პრივილიგირებული ჯგუფიდან",
+ "abusefilter-edit-action-block": "დაბლოკეთ მომხმარებელი ან მისი IP მისამართი",
+ "abusefilter-edit-action-throttle": "მიიღეთ ზომები მხოლოდ იმ შემთხვევაში, თუ მომხმარებელმა ყველა ზღვარს გადააჭარბა",
+ "abusefilter-edit-action-rangeblock": "დაბლოკეთ /16 დიაპაზონი, რომლითაც მომხმარებელი მუშაობს.",
+ "abusefilter-edit-action-tag": "მონიშნეთ შესწორება დამატებითი შემოწმებისთვის",
+ "abusefilter-edit-throttle-count": "ნებადართული მოქმედებების რაოდენობა:",
+ "abusefilter-edit-throttle-period": "დროის პერიოდი:",
+ "abusefilter-edit-throttle-seconds": "$1 წამი",
+ "abusefilter-edit-throttle-groups": "ჯგუფების შემცირება:\n:''(თითოსი ერთ ხაზზე, მძიმეებით შეერება)''",
+ "abusefilter-edit-warn-message": "სისტემური შტყობინება გაფრთხილებისთვის:",
+ "abusefilter-edit-warn-other": "სხვა შეტყობინება",
+ "abusefilter-edit-warn-other-label": "გვერდის სახელი სხვა შეტყობინების გვერდიდან:\n:''(პერფიქს MediaWiki-ის გარეშე)''",
+ "abusefilter-edit-warn-actions": "მოქმედებები:",
+ "abusefilter-edit-warn-preview": "არჩეული შეტყობინების წინასწარ გადახევა",
+ "abusefilter-edit-warn-edit": "შექმენით/შეასწორეთ არჩეული შეტყობინება",
+ "abusefilter-edit-tag-tag": "გამოყენებადი მონიშვნები (თითო ხაზზე)",
+ "abusefilter-edit-denied": "You may not view details of this filter, because it is hidden from public view.",
+ "abusefilter-edit-main": "ფილტრის პარამეტრები",
+ "abusefilter-edit-done-subtitle": "ფილტრი გასწორებულია",
+ "abusefilter-edit-done": "[[Special:AbuseFilter/history/$1/diff/prev/$2|Your changes]] to [[Special:AbuseFilter/$1|filter $3]] have been saved.",
+ "abusefilter-edit-badsyntax": "მოთხოვმოლ ფილტრში აღმოჩენილია სინტაქსური შეცდომა. პარსერმა გამოგზავნა ამგვარი შეტყობინება - <pre>$1</pre>",
+ "abusefilter-edit-restricted": "თქვენ არ შეგიძლიათ არჩეული ფილტრის შესწორება რადგანაც იგი შეიცავს ერთ ან რამდენიმე შეზუდვას. გთხოვთ მიმართოთ შესაბამისი უფლებების მქონე მომხმარებელს.",
+ "abusefilter-edit-viewhistory": "ამ ფილტრის ისტორიის ჩვენაბა",
+ "abusefilter-edit-history": "ისტორია:",
+ "abusefilter-edit-check": "სინტაქსის შემოწმება",
+ "abusefilter-edit-badfilter": "თქვენს მიერ მითითებული ფილტრი არ არის მთელი რიცხვი.",
+ "abusefilter-edit-revert": "გააუქმეთ ფილტრის მოქმედებები",
+ "abusefilter-edit-tools": "ინსტრუმენტები:",
+ "abusefilter-edit-test-link": "შეამოწმეთ ეს ფილტრი ბოლო ცვლილებებში",
+ "abusefilter-edit-export": "ამ ფილტრის ექსპორტი სხვა ვიკიში",
+ "abusefilter-edit-syntaxok": "სინტაქსის შეცდომა არ არის ნაპოვნი.",
+ "abusefilter-edit-syntaxerr": "სინტაქსის შეცდომა არის ნაპოვნი: $1",
+ "abusefilter-edit-bad-tags": "თქვენს მიერ მითითებული მინიშნებებიდან ერთ-ერთი არ არის სწორი.\nმინიშნებები უნდა იყვნენ ნოკლე, და არ უნდა შეიცავდეს სიმბოლოებს.",
+ "abusefilter-edit-notallowed": "თქვენ ვერ შეასწორებთ ბოროტად გამოყენების ფილტრებს.",
+ "abusefilter-edit-notallowed-global-custom-msg": "სამომხმარებლო გამაფრთხილებელი შეტყობინება არ არის მხარდაჭერილი გლობალური ფილტრებისათვის",
+ "abusefilter-edit-builder-select": "აირჩიეთ დამატების პუნქტი",
+ "abusefilter-edit-builder-group-op-arithmetic": "არითმეტიკული ოპერატორები",
+ "abusefilter-edit-builder-op-arithmetic-addition": "დამატება (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "გამოკლება(-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "გამრავლება(*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "გაყოფა (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "მოდული (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "დონე (**)",
+ "abusefilter-edit-builder-group-op-comparison": "შედარების ოპერატორები",
+ "abusefilter-edit-builder-op-comparison-equal": "ტოლია (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "არ არის ტოლი (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "ნაკლები ვიდრე (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "მეტი ვიდრე (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "ნაკლები ან ტოლი (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "მეტი ან ტოლი (>=)",
+ "abusefilter-edit-builder-group-op-bool": "ლოგიკური ოპერაცია",
+ "abusefilter-edit-builder-op-bool-not": "არ (!)",
+ "abusefilter-edit-builder-op-bool-and": "და (&)",
+ "abusefilter-edit-builder-op-bool-or": "ან (|)",
+ "abusefilter-edit-builder-group-misc": "სხვადასხვაგვარი",
+ "abusefilter-edit-builder-misc-in": "სტრიქონში შეიცავს (in)",
+ "abusefilter-edit-builder-misc-like": "ესადაგება მაგალითს (like)",
+ "abusefilter-edit-builder-misc-rlike": "რეგულარული გამოხატვა (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "რეგულარული გამოხატვის შესაბამისობა, რეგისტრის აღწერის გარეშე (irlike)",
+ "abusefilter-edit-builder-misc-contains": "მარცხენა სტრიქონი მოიცავს მარჯვენა სტრიქონს (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "ზუსტი სტრიქონი (\"\")",
+ "abusefilter-edit-builder-misc-tern": "მცირე ოპერატორი (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "პირობითი (if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "ფუნქციები",
+ "abusefilter-edit-builder-funcs-length": "სტრიქონის სიგრძე (length)",
+ "abusefilter-edit-builder-funcs-lcase": "პატარა ასოებში გადაყვანა (lcase)",
+ "abusefilter-edit-builder-funcs-ucase": "ზემო რეგისტრი",
+ "abusefilter-edit-builder-funcs-ccnorm": "არეული სიმბოლოების გასწორება (ccnorm)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "გაორმაგებული სიმბოლოების წაშლა (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "სპეციალური სიმბოლოები / სიმბოლოები სულ (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "დარეგულირება (norm)",
+ "abusefilter-edit-builder-funcs-count": "X სტრიქონის ნაწილის ჩართვების რაოდენობა Y სტრიქონში (count)",
+ "abusefilter-edit-builder-funcs-rcount": "რამდენჯერ ხვდება X რეგ. ვირ. Y სტრიქონში (rcount)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "ცარიელი ადგილების წაშლა (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "სპეციალური სიმბოლოების წაშლა (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "IP მისამართი მოცემულ მოცემულ მისამართთა სივრცეშია? (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "ძიება სტრიქონში მრავალი ქვესტრიქონის მიხედვით (contains_any)",
+ "abusefilter-edit-builder-funcs-substr": "სტრიქონის ნაწილი (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "სტრიქონის ნაწილის მდებარეობა მთლიან სტრიქონში (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "შეცვალე სიტრიქონის ნაწილი სტრიქონით (str_replace)",
+ "abusefilter-edit-builder-funcs-rescape": "სტრიქონის ეკრანირება რეგულარული გამომხატველობისათვის (rescape)",
+ "abusefilter-edit-builder-funcs-set_var": "ცვლადის ჩასმა (set_var)",
+ "abusefilter-edit-builder-group-vars": "ცვალებადი",
+ "abusefilter-edit-builder-vars-accountname": "ანგარიშის სახელი (შექმნისას)",
+ "abusefilter-edit-builder-vars-timestamp": "Unix ცვლილების დრო",
+ "abusefilter-edit-builder-vars-action": "მოქმედება",
+ "abusefilter-edit-builder-vars-addedlines": "ხაზის ჩამატება",
+ "abusefilter-edit-builder-vars-delta": "ზომის ცვლილება რედაქტირებაში",
+ "abusefilter-edit-builder-vars-diff": "რედაქტირების ცვლილების უნიფიცირებული შედარება",
+ "abusefilter-edit-builder-vars-newsize": "ახალი გვერდის ზომა",
+ "abusefilter-edit-builder-vars-oldsize": "გვერდის ძველი ზომა",
+ "abusefilter-edit-builder-vars-removedlines": "წაშლილი ხაზები",
+ "abusefilter-edit-builder-vars-summary": "ცვლილების აღწერა",
+ "abusefilter-edit-builder-vars-article-id": "გვერდის ID",
+ "abusefilter-edit-builder-vars-article-ns": "გვერდის სახელთა სივრცე",
+ "abusefilter-edit-builder-vars-article-text": "გვერდის სახელი (სახელთა სივრცეების გარეშე)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "გვერდის სრული სახელი",
+ "abusefilter-edit-builder-vars-article-views": "გვერდის ხილვა",
+ "abusefilter-edit-builder-vars-movedfrom-id": "გადასატაქნი გვერდის ID",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "გადასატანი გვერდის სახელთა სივრცე",
+ "abusefilter-edit-builder-vars-movedfrom-text": "გადასატანი გვერდის სახელწოდენა",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "გადასატანი გვერდის სრული სახელი",
+ "abusefilter-edit-builder-vars-movedto-id": "გადასატანი გვერდის საბოლოო ID",
+ "abusefilter-edit-builder-vars-movedto-ns": "გადასარქმევი გვერდის სახელთა საბოლოო სივრცე",
+ "abusefilter-edit-builder-vars-movedto-text": "გადატანის საბოლოო გვერდის სრული სახელი",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "გადატანის საბოლოო გვერდის სრული სახელი",
+ "abusefilter-edit-builder-vars-user-editcount": "მომხმარებლის რედაქტირებათა რაოდენობა",
+ "abusefilter-edit-builder-vars-user-age": "ანგარიშს ასაკი",
+ "abusefilter-edit-builder-vars-user-name": "ანგარიშის სახელი",
+ "abusefilter-edit-builder-vars-user-groups": "ჯგუფები (მათ შორის არაცალსახა) რომლებშიც მომხმარებელი შედის",
+ "abusefilter-edit-builder-vars-user-rights": "უფლება, რომელიც აქვს მომხმარებელს",
+ "abusefilter-edit-builder-vars-user-blocked": "დაბლოკილია, თუ არა მომხმარებელი",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "თქვენი ელ. ფოსტის მისამართის დადასტურების დრო",
+ "abusefilter-edit-builder-vars-recent-contributors": "გვერდის ბოლო ათი რედაქტორი",
+ "abusefilter-edit-builder-vars-first-contributor": "გვერდის პირველი რედაქტორი",
+ "abusefilter-edit-builder-vars-all-links": "ყველა გარე ბმული, ახალ ტექსტში",
+ "abusefilter-edit-builder-vars-added-links": "ყველა გარე ბმული, ჩამატებული რედაქტირებისას",
+ "abusefilter-edit-builder-vars-removed-links": "ყველა გარე ბმული, წაშლილი რედაქტირებისას",
+ "abusefilter-edit-builder-vars-old-text": "ძველი ვიკიტექსტი, რედაქტირებამდელი",
+ "abusefilter-edit-builder-vars-new-text": "ახალი ვიკიტექსტი, გვერდების შესწორებების შემდეგ",
+ "abusefilter-edit-builder-vars-new-pst": "ახალი გვერდის ვიკიტექსტი, გარდაქმნილი შენახვამდე",
+ "abusefilter-edit-builder-vars-diff-pst": "უნიფიცირებული diff ცვლილებები რედაქტირების პროცესში, გარდაქმნილი შენახვამდე",
+ "abusefilter-edit-builder-vars-addedlines-pst": "სტრიქონები, დამატებული რედაქტირების დროს, გარდაქმნილი შენახვამდე",
+ "abusefilter-edit-builder-vars-new-text-stripped": "გვერდის ტექსტი ვიკიფიცირების გარეშე",
+ "abusefilter-edit-builder-vars-new-html": "ახალი გვერდის სხვადასხვა HTML კოდი",
+ "abusefilter-edit-builder-vars-restrictions-edit": "გვერდის შესწორებათა დაცვის დონე",
+ "abusefilter-edit-builder-vars-restrictions-move": "გვერდის გადრქმევების დაცვის დონე",
+ "abusefilter-edit-builder-vars-restrictions-create": "გვერდის შექმნის დაცვა",
+ "abusefilter-edit-builder-vars-restrictions-upload": "ფაილის ატვირთვის დაცვა",
+ "abusefilter-edit-builder-vars-old-text-stripped": "ძველი გვერდის ტექსტი ვიკიფიცირების გარეშე",
+ "abusefilter-edit-builder-vars-old-links": "ბმულები გვერდზე შესწორებამდე",
+ "abusefilter-edit-builder-vars-old-html": "HTML-ად გადაკეთებული ძველი გვერდის ვიკიტექსტი",
+ "abusefilter-edit-builder-vars-minor-edit": "თუ იყო რედაქტირება მონიშნული როგორც «მცირე შსწორება»",
+ "abusefilter-edit-builder-vars-file-sha1": "ფაილის SHA1-ხეშ შინაარსი",
+ "abusefilter-edit-builder-vars-file-size": "ფაილის ზომა ბაიტებში",
+ "abusefilter-filter-log": "ფილტრის ბოლო ცვლილებები",
+ "abusefilter-history": "ბოროტად გამოყენების ფილტრის #$1-ის ცვლილებების ისტორია",
+ "abusefilter-history-foruser": "ცვლილებები $1-ში",
+ "abusefilter-history-hidden": "დამალული",
+ "abusefilter-history-enabled": "ჩართული",
+ "abusefilter-history-global": "გლობალური",
+ "abusefilter-history-timestamp": "დრო",
+ "abusefilter-history-user": "მომხმარებელი",
+ "abusefilter-history-public": "ფილტრის საჯარო აღწერა",
+ "abusefilter-history-flags": "დროშები",
+ "abusefilter-history-filter": "ფილტრის წესები",
+ "abusefilter-history-comments": "კომენტარები",
+ "abusefilter-history-actions": "მოქმედებები",
+ "abusefilter-history-backedit": "ფილტრის რედაქტირებასთან დაბრუნება",
+ "abusefilter-history-deleted": "წაშლილია",
+ "abusefilter-history-filterid": "ფილტრი",
+ "abusefilter-history-select-legend": "ძიების დაზუსტება",
+ "abusefilter-history-select-user": "მომხმარებელი:",
+ "abusefilter-history-select-submit": "გასუფთავება",
+ "abusefilter-history-diff": "ცვლილებები",
+ "abusefilter-history-error-hidden": "მოთხოვნილი ფილტრი დამალულია და თქვენ ვერ იხილავთ მის ისტორიას",
+ "abusefilter-exception-unexpectedatend": "მოულოდნელი „$2“ პოზიციაზე $1.",
+ "abusefilter-exception-expectednotfound": "$2 არ არის აღმოჩენილი, $1 პოზიციის მოლოდინში (მის ნაცვლად ნაპოვნია $3 $4).",
+ "abusefilter-exception-unrecognisedkeyword": "გაურკვეველი პაროლი $2 $1 პოზიციაში.",
+ "abusefilter-exception-unexpectedtoken": "ამოუცნობი ნიშანი \"$3\" (ტიპი: $2) $1 პოზიციაში",
+ "abusefilter-exception-unclosedstring": "დაუხურავი ხაზოვანი გამოსახულება, იწყება $1-ით.",
+ "abusefilter-exception-invalidoperator": "არასწორი ოპერატორი «$2» $1 პოზიციაში.",
+ "abusefilter-exception-unrecognisedtoken": "არასწორი სიმბოლო «$2» პოზიციაში $1.",
+ "abusefilter-exception-noparams": "არ არის მითითიებული «$2» პოზიციაში $1.",
+ "abusefilter-exception-dividebyzero": "ნულზე გაყოფის მცდელობა ($2) $1 პოზიციაში.",
+ "abusefilter-exception-unrecognisedvar": "გაურკვეველი ცვლადი $2 $1 პოზიციაში.",
+ "abusefilter-exception-notenoughargs": "არ არის საკმარისი არგუმენრი $2, გამოძახებული პოზიციაში $1.\nველოდებით $3 {{PLURAL:$3|არგუმენტი|არგუმენტს}}, მიღებულია $4",
+ "abusefilter-exception-regexfailure": "შეცდომა რეგულარულ გამოსახულებაში \"$3\" $1 პოზიციაში: \"$2\"",
+ "abusefilter-exception-notlist": "ობიექტისთვის მასივის ელემენტის მოთხოვნა, რომელიც არ წარმოადგენს მასივს, $1 პოზიციაში",
+ "abusefilter-action-tag": "მინიშნება",
+ "abusefilter-action-throttle": "სემცირება",
+ "abusefilter-action-warn": "გაფრთხილება",
+ "abusefilter-action-blockautopromote": "დაბლოკეთ ავტოგაზრდა",
+ "abusefilter-action-block": "დაბლოკეთ",
+ "abusefilter-action-degroup": "ჯგუფიდან წაშლილები",
+ "abusefilter-action-rangeblock": "დიაპაზონის ბლოკირება",
+ "abusefilter-action-disallow": "გათიშვა",
+ "abusefilter-revert-title": "გააუქმეთ ფილტრის მიერ გაკეთებული ყველა ცვლილება $1",
+ "abusefilter-revert-intro": "ამ ფორმით შესაძლებელია ყველა ცვლილება ბოროტად გამოყენების ფილტრის მიერ $1 ფილტრის მიზეზით გაუქმებულ იქნეს.\nგთხოვთ, ეს ხელსაწყო სიფრთხილით გამოიყენოთ.",
+ "abusefilter-revert-preview-item": "$1: $2-მა $3 გააკეთა $4-ზე.\nმოქმედებები, რომლებიც გაუქმდა: $5 ($6)",
+ "abusefilter-revert-search-legend": "ბოროტად გამოყენების ფილტრის იმ მოქმედებების ამორჩევა, რომლებიც უნდა გაუქმდეს",
+ "abusefilter-revert-periodstart": "პერიოდის დასაწყისი:",
+ "abusefilter-revert-periodend": "პერიოდის დასასრული:",
+ "abusefilter-revert-search": "აირჩიეთ მოქმედება",
+ "abusefilter-revert-filter": "ფილტრი:",
+ "abusefilter-revert-preview-intro": "ქვემოთ მოცემულია ფილტრის ის მოქმედებები, რომლებიც აქედან უნდა გაუქმდეს.\nგთხოვთ, შეამოწმეთ ისინი ყურადღებით და თქვენი არჩევანის დასადასტურებლად დააჭირეთ ღილაკს „დადასტურება“.",
+ "abusefilter-revert-confirm": "დადასტურება",
+ "abusefilter-revert-success": "თქვენ ბოროტად გამოყენების ფილტრის ყველა ის ცვლილება გააუქმეთ, რომლებიც [[Special:AbuseFilter/$1|$2 ფილტრის]] მიზეზით გაკეთდა.",
+ "abusefilter-revert-reason": "ბოროტად გამოყენების ფილტრის ყოველი ქმედების ავტომატურად გაუქმება $1 ფილტრის მიზეზით.\nმოცემული მიზეზი: $2",
+ "abusefilter-revert-reasonfield": "მიზეზი:",
+ "abusefilter-test": "ფილტრის ტესტირება",
+ "abusefilter-test-legend": "ფილტრის შემოწმება",
+ "abusefilter-test-load-filter": "ფილტრ–ID-ის ჩამოტვირთვა",
+ "abusefilter-test-submit": "შემოწმება",
+ "abusefilter-test-load": "ატვირთვა",
+ "abusefilter-test-user": "მომხმარებლის ცვლილებები:",
+ "abusefilter-test-period-start": "ცვლილებები გაკეთდა მას შემდეგ რაც:",
+ "abusefilter-test-period-end": "ცვლილებები გაკეთდა მანამ:",
+ "abusefilter-test-page": "ცვლილებები გაკეთდა გვერდში:",
+ "abusefilter-test-shownegative": "იმ ცვლილებების ჩვენება, რომლებიც ფილტრს არ ერგებიან",
+ "abusefilter-test-syntaxerr": "მოცემული ფილტრი შეიცავს სინტაქსურ შეცდომას.\nდამატებითი შენიშვნების სანახავად დააჭირეთ ღილაკს „სინტაქსის შემოწმება“",
+ "abusefilter-changeslist-examine": "ნახვა",
+ "abusefilter-examine": "ცალკეული რედაქტირებების ხილვა",
+ "abusefilter-examine-intro": "ეს გვერდი შესაძლებლობას გაძლევთ ფილტრის მიერ შექმნილი ბოროტად გამოყენებული ცვლადი სიდიდის ხილვას ცალკეული ცვლილებისათვის და მათ ფილტრებში შემოწმებას.",
+ "abusefilter-examine-legend": "არჩეული ცვლილებები",
+ "abusefilter-examine-diff": "ცვლილების URL:",
+ "abusefilter-examine-user": "მომხმარებელი:",
+ "abusefilter-examine-title": "გვერდის სათაური:",
+ "abusefilter-examine-submit": "ძიება",
+ "abusefilter-examine-vars": "ცვალებადები, შექმნილი ამ ცვლილებისთვის",
+ "abusefilter-examine-test": "შეამოწმეთ ეს ცვლილებები ფილტრში",
+ "abusefilter-examine-test-button": "შეამოწმეთ ფილტრი",
+ "abusefilter-examine-match": "ეს ცვლილება ექვემდებარება ფილტრს.",
+ "abusefilter-examine-nomatch": "ეს ცვლილება ვარდება ფილტრის მოქმედების ქვეშ.",
+ "abusefilter-examine-syntaxerror": "ფილტრს აქვს არასწორი სინტაქსი",
+ "abusefilter-examine-notfound": "შეტანილი ცვლილება ვერ მოიპოვება.",
+ "abusefilter-examine-incompatible": "ბოროტად გამოყენების ფილტრი ვერ მიიღებს თქვენს შესწორებას",
+ "abusefilter-examine-noresults": "ძიებაში თქვენს მიერ შეყვანილი პარამეტრებით ვერაფერი მოიძებნა.",
+ "abusefilter-topnav": "'''ბოროტად გამოყენების ფილტრის ნავიგატორი'''",
+ "abusefilter-topnav-home": "დასაწყისში",
+ "abusefilter-topnav-test": "საპაკეტო ტესტირება",
+ "abusefilter-topnav-examine": "ბოლო ცვლილებების შესწავლა",
+ "abusefilter-topnav-log": "ბოროტად გამოყენების ჟურნალი",
+ "abusefilter-topnav-tools": "გაუმჯობესების ხელსაწყოები",
+ "abusefilter-topnav-import": "ფილტრის იმპორტი",
+ "abusefilter-log-name": "ბოროტად გამოყენების ფილტრის ჟურნალი",
+ "abusefilter-log-header": "ამ ჟურნალში იწერება ფილტრებში შემოსული ცვლილებები\nიხილეთ დამატებითი ინფორმაცია ფილტრის ბოლო ცვლილებების [[Special:AbuseFilter/history|სიაში]].",
+ "abusefilter-log-noresults": "შედეგები არაა",
+ "abusefilter-diff-title": "განსხვავება ვერსიებს შორის",
+ "abusefilter-diff-item": "ელემენტი",
+ "abusefilter-diff-version": "ვერსია $1-დან $2-ის {{GENDER:$3|მიერ}}",
+ "abusefilter-diff-info": "ძირითადი ინფორმაცია",
+ "abusefilter-diff-pattern": "ფილტრის პირობები",
+ "abusefilter-diff-invalid": "ვერ მიიღებთ მოთხოვნილ ვერსიას",
+ "abusefilter-diff-backhistory": "ფილტრის ისტორიაში დაბრუნება",
+ "abusefilter-diff-prev": "ძველი ცვლილება",
+ "abusefilter-diff-next": "ახალი ცვლილება",
+ "abusefilter-import-intro": "თქვენ შეგიძლიათ გამოიყენოთეს ინტერფეისი სხვა ვიკებიდან ფილტრების იმპორტირებისათვის.\nვიკის წყაროში, დააჭირეთ „{{int:abusefilter-edit-export}}“ რედაქტირების ინტერფეისის „{{int:abusefilter-edit-tools}}“ განყოფილებაში.\nდააკოპირეთ ტექსტური ველის შიგთავსი, გადმოიტანეთ ამ გვერდზე და დააჭირეთ „{{int:abusefilter-import-submit}}“.",
+ "abusefilter-import-submit": "მონაცემების იმპორტირება",
+ "abusefilter-group-default": "სტანდარტული",
+ "abusefilter-http-error": "მოხდა HTTP-ის შეცდომა: $1.",
+ "apihelp-abusefiltercheckmatch-param-filter": "ფილტრის სრული ტექსტი, რათა გადაისინჯოს გასწორება",
+ "apihelp-abusefiltercheckmatch-param-rcid": "ID ბოლო ცვლილება საწინააღმდეგო გადასინჯვისთვის",
+ "apihelp-abusefiltercheckmatch-param-logid": "ბოროტად გამოყენების ფილტრი არეგისტრირებს ID, რათა საწინააღმდეგოდ გადასინჯოს",
+ "apihelp-abusefilterchecksyntax-description": "ბოროტად გამოყენების ფილტრის სინტაქსის გადასინჯვა",
+ "apihelp-abusefilterchecksyntax-param-filter": "ფილტრის სრული ტექსტი, რათა სინტაქსი გადაისინჯოს",
+ "apihelp-abusefilterchecksyntax-example-1": "ნამდვილი ფილტრის სინტაქსის გადასინჯვა",
+ "apihelp-abusefilterchecksyntax-example-2": "გამოუსადეგარი ფილტრის სინტაქსის გადასინჯვა",
+ "apihelp-abusefilterevalexpression-description": "ბოროტად გამოყენების ფილტრი აფასებს გამოხატვას",
+ "apihelp-abusefilterevalexpression-param-expression": "გამოხატვა, რათა შეფასდეს",
+ "apihelp-abusefilterevalexpression-example-1": "უბრალო გამოხატვის შეფასება",
+ "apihelp-abusefilterunblockautopromote-param-user": "თქვენ გინთად გახსნათ მომხმარებლის მომხმარებლის სახელი",
+ "apihelp-query+abusefilters-description": "ბოროტად გამოყენების ფილტრის დეტალების ჩვენება",
+ "apihelp-query+abusefilters-param-startid": "ID ფილტრი, რათა დაიწყოს ჩამოთვლა",
+ "apihelp-query+abusefilters-param-endid": "ID ფილტრი, რათა შეჩერდეს ჩამოთვლა",
+ "apihelp-query+abusefilters-param-show": "აჩვენე მხოლოდ ფილტრები, რომლებიც შეესაბამება ამ კრიტერიუმებს",
+ "apihelp-query+abusefilters-param-limit": "ფილტრების სიის მაქსიმალური რაოდენობა",
+ "apihelp-query+abusefilters-param-prop": "თვისებების მიღება",
+ "apihelp-query+abusefilters-example-1": "საჯარო ფილტრების დასაშვები სია",
+ "apihelp-query+abusefilters-example-2": "ფილტრების ზოგიერთი დეტალის ჩვენება",
+ "apihelp-query+abuselog-param-prop": "თვისებების მიღება",
+ "apihelp-query+abuselog-example-1": "უკანასკნელი ჟურნალის ჩანაწერების ხილვა",
+ "apihelp-query+abuselog-example-2": "აჩვენე ჩანაწერების ბოლო ჟურნლი [[API]]-დან"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/kab.json b/www/wiki/extensions/AbuseFilter/i18n/kab.json
new file mode 100644
index 00000000..a465f9e4
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/kab.json
@@ -0,0 +1,54 @@
+{
+ "@metadata": {
+ "authors": [
+ "Belkacem77"
+ ]
+ },
+ "abusefilter-desc": "Ad yesnes tiseffuga tiwurmanin i teẓrigin.",
+ "abusefilter": "Tawila n imzizdig mgal tafuli",
+ "abuselog": "Aɣmis n tfuli",
+ "abusefilter-log-search-user": "Aseqdac:",
+ "abusefilter-log-search-title": "Azwel :",
+ "abusefilter-log-search-wiki": "Awiki:",
+ "abusefilter-log-search-entries-all": "Akk inekcam",
+ "abusefilter-log-search-entries-hidden": "Inekcam yeffren kan",
+ "abusefilter-log-search-submit": "Nadi",
+ "abusefilter-log-detailedentry-global": "azwel amatu $1",
+ "abusefilter-log-detailedentry-local": "imzizdig $1",
+ "abusefilter-log-detailslink": "talqayt",
+ "abusefilter-log-diff": "Amgired",
+ "abusefilter-log-details-legend": "Talqayt i unekcam $1 n uɣmis",
+ "abusefilter-log-details-var": "Amutti",
+ "abusefilter-log-details-val": "Azal",
+ "abusefilter-log-details-vars": "Isebdaden n tigawt",
+ "abusefilter-log-details-private": "ISefka usligen",
+ "abusefilter-log-details-ip": "Tansa IP taneṣlit",
+ "abusefilter-log-noactions": "ulac",
+ "abusefilter-log-details-diff": "Isnifal yettwagen di teẓrigt",
+ "abusefilter-log-linkoncontribs": "aɣmis n tfuli",
+ "abusefilter-log-linkoncontribs-text": "Aɣmis n tfuli i {{GENDER:$1|aseqdac-agi}}",
+ "abusefilter-log-hidden": "(anekcum yeffer)",
+ "abusefilter-log-hidden-implicit": "(yeffer acku lqem yettwakkes)",
+ "abusefilter-list-options": "Iɣewwaṛen",
+ "abusefilter-list-options-deleted": "Imzizdigen yettwakksen:",
+ "abusefilter-list-options-deleted-only": "Sken kan imzizdigen yettwakksen",
+ "abusefilter-list-options-deleted-hide": "Ffer imzizdigen yettwakksen",
+ "abusefilter-list-options-deleted-show": "Seddu imzizdigen yettwakksen",
+ "abusefilter-list-options-scope": "Sken imzizdigen:",
+ "abusefilter-list-options-scope-local": "Ilugan kan idiganen",
+ "abusefilter-list-options-scope-global": "Ilugan kan imuta",
+ "abusefilter-list-options-scope-all": "Ilugan idiganen akked d imuta",
+ "abusefilter-list-options-disabled": "Imzizdigen nsan:",
+ "abusefilter-list-options-hidedisabled": "Ffer imzizdigen yensan",
+ "abusefilter-list-options-submit": "Leqqem",
+ "abusefilter-tools-expr": "Amsekyad n tenfaliyin",
+ "abusefilter-tools-submitexpr": "Ktazel",
+ "abusefilter-tools-reautoconfirm": "Err-d addad inetmen s wudem awurman",
+ "abusefilter-tools-reautoconfirm-user": "Aseqdac:",
+ "abusefilter-tools-reautoconfirm-submit": "Ales asentem awurman",
+ "abusefilter-edit-history": "Amazray:",
+ "abusefilter-edit-check": "Senqed tira",
+ "abusefilter-edit-badfilter": "Imzizdig i d-muddeḍ ulac-it",
+ "abusefilter-edit-revert": "Ḥwi tigawin yegga imzizdig-agi",
+ "abusefilter-edit-tools": "Ifecka:"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/kg.json b/www/wiki/extensions/AbuseFilter/i18n/kg.json
new file mode 100644
index 00000000..fb7757cb
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/kg.json
@@ -0,0 +1,10 @@
+{
+ "@metadata": {
+ "authors": [
+ "Rkupsala"
+ ]
+ },
+ "abusefilter-examine-user": "Sadi:",
+ "abusefilter-examine-title": "Nkûmbu ya mukânda:",
+ "abusefilter-examine-submit": "Sosa"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/khw.json b/www/wiki/extensions/AbuseFilter/i18n/khw.json
new file mode 100644
index 00000000..46032014
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/khw.json
@@ -0,0 +1,89 @@
+{
+ "@metadata": {
+ "authors": [
+ "Rachitrali"
+ ]
+ },
+ "abuselog": "غلط استعمالو لاگ ان کورے",
+ "abusefilter-blocker": "غلط استعمالو فلٹر کورے",
+ "abusefilter-log-search-user": "یوزر",
+ "abusefilter-log-search-title": "عنوان:",
+ "abusefilter-log-search-submit": "Search/تلاش",
+ "abusefilter-log-detailedentry-local": "فلٹر $1",
+ "abusefilter-log-detailslink": "تفصیلات",
+ "abusefilter-log-diff": "فرق",
+ "abusefilter-log-hidelink": "پوشیکو ایڈجسٹ کورے",
+ "abusefilter-log-details-var": "متغیر/Variable",
+ "abusefilter-log-details-val": "قدر",
+ "abusefilter-log-details-private": "نجی اعداد و شمار",
+ "abusefilter-log-noactions": "کیاغ دی نیکی",
+ "abusefilter-log-hide-reason": "وجہ:",
+ "abusefilter-management": "غلط استعمال فلٹرو انتظام",
+ "abusefilter-list": "سف فلٹر",
+ "abusefilter-list-status": "حیثیت",
+ "abusefilter-list-visibility": "پوشیک",
+ "abusefilter-list-edit": "ترمیم",
+ "abusefilter-list-details": "تفصیلات",
+ "abusefilter-list-limit": "فی صفحہ لمبار:",
+ "abusefilter-list-lastmodified": "آخری بار",
+ "abusefilter-list-group": "فلٹر گروپ",
+ "abusefilter-hidden": "پرائیویٹ",
+ "abusefilter-unhidden": "عوامی",
+ "abusefilter-enabled": "فعال",
+ "abusefilter-deleted": "ڈیلیٹ کورونو ھوی",
+ "abusefilter-disabled": "معذور",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|بایٹ|بایٹس}}",
+ "abusefilter-new": "ای نوغ فلٹر تخلیق کورے",
+ "abusefilter-status-global": "عالمی",
+ "abusefilter-list-options": "اختیارات",
+ "abusefilter-list-options-deleted": "خارج کردہ فلٹر:",
+ "abusefilter-list-options-deleted-only": "صرف حذف شدہ فلٹران شو کورے",
+ "abusefilter-edit-hitcount": "فلٹر مشاہدات:",
+ "abusefilter-edit-throttle-period": "وختو مدت:",
+ "abusefilter-edit-warn-other": "خور پیغام",
+ "abusefilter-edit-warn-actions": "ایکشنز",
+ "abusefilter-edit-history": "تاریخچہ",
+ "abusefilter-edit-tools": " اوزار:",
+ "abusefilter-edit-builder-op-arithmetic-addition": "جمع (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "منفی (-)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "تقسیم (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "پاور (**)",
+ "abusefilter-edit-builder-op-comparison-equal": "برابار (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "برابار نیکی (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "کم شیر (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "لوٹ شیر (>)",
+ "abusefilter-edit-builder-op-bool-not": "نو (!)",
+ "abusefilter-edit-builder-op-bool-and": "وا (&)",
+ "abusefilter-edit-builder-op-bool-or": "یا (|)",
+ "abusefilter-edit-builder-group-misc": "متفرق",
+ "abusefilter-edit-builder-misc-tern": "عارضی آپریٹر (X ? Y : Z)",
+ "abusefilter-edit-builder-group-funcs": "افعال",
+ "abusefilter-edit-builder-group-vars": "متغیر",
+ "abusefilter-edit-builder-vars-action": "کارروائی",
+ "abusefilter-edit-builder-vars-newsize": "نوغ صفحہو سائز",
+ "abusefilter-edit-builder-vars-oldsize": "پرانو صفحہو سائز",
+ "abusefilter-edit-builder-vars-summary": "خلاصہ/وجہہ ترمیم کورے",
+ "abusefilter-edit-builder-vars-article-id": "صفحہ ID",
+ "abusefilter-edit-builder-vars-article-ns": "صفحہ نیم سپیس",
+ "abusefilter-history-hidden": "کھوشت",
+ "abusefilter-history-global": "عالمی",
+ "abusefilter-history-timestamp": "وخت",
+ "abusefilter-history-user": "یوزر",
+ "abusefilter-history-flags": "پرچم",
+ "abusefilter-history-filter": "فلٹرو قاعدہ",
+ "abusefilter-history-comments": "تبصرہ",
+ "abusefilter-history-deleted": "ڈیلیٹ کورونو ھوی",
+ "abusefilter-history-filterid": "فلٹر",
+ "abusefilter-history-select-user": "یوزر",
+ "abusefilter-history-diff": "تبدیلی",
+ "abusefilter-action-tag": "ٹیگ",
+ "abusefilter-action-block": "بلاک",
+ "abusefilter-action-disallow": "اجازت مو دیت",
+ "abusefilter-revert-filter": "فلٹر کورے:",
+ "abusefilter-revert-confirm": "ھیہ لوو تصدیق",
+ "abusefilter-test-submit": "ٹیسٹ",
+ "abusefilter-test-load": "لوڈ",
+ "abusefilter-examine-user": "یوزر:",
+ "abusefilter-examine-submit": "Search/تلاش",
+ "abusefilter-topnav-home": "دور"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/kiu.json b/www/wiki/extensions/AbuseFilter/i18n/kiu.json
new file mode 100644
index 00000000..9404418a
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/kiu.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Mirzali"
+ ]
+ },
+ "abusefilter-log-search-submit": "Cı feteliye"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/kk-cyrl.json b/www/wiki/extensions/AbuseFilter/i18n/kk-cyrl.json
new file mode 100644
index 00000000..3a27087f
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/kk-cyrl.json
@@ -0,0 +1,289 @@
+{
+ "@metadata": {
+ "authors": [
+ "Arystanbek",
+ "GaiJin",
+ "Нұрлан Рахымжанов",
+ "Batyrbek.kz"
+ ]
+ },
+ "abusefilter": "Қиянат жасауды сүзгілеу ішкіқұрылымы",
+ "abuselog": "Қиянат жасау журналы",
+ "abusefilter-intro": "Қиянат жасауды сүзгілеу барлық әрекеттерді автоматты түрде сүзгілейтін автоматтандырылған бағдарламалық жасақтама механизмі. Бұл интерфейс нақты сүзгіштердің тізімін көретуде және оларды өзгеруге мүмкіндік береді.",
+ "abusefilter-blocker": "Қиянат жасауды сүзгілеу",
+ "abusefilter-blockreason": "Қиянаттауды сүзгілеу сүзгіші арқылы автоматты бұғатталды.\nЕрежеге сәйкес сипаттамасы:$1",
+ "right-abusefilter-modify": "Сүзгішті өзгерту",
+ "right-abusefilter-view": "Сүзгішті қарау",
+ "right-abusefilter-log": "Қиянат жасау журналын қарау",
+ "right-abusefilter-log-detail": "Бұзақылық жасау журнал жазбасынан толығырақ қарау",
+ "right-abusefilter-private": "Бұзақылық жасау журналынан жеке деректерін қарау",
+ "right-abusefilter-modify-restricted": "Қиянаттауды сүзгілеу сүзгішінен шектеу әрекеттерін өзгерту",
+ "right-abusefilter-revert": "Осы қиянаттауды сүзгілеу сүзгішіндегі барлық өзгертулерді қайтару",
+ "right-abusefilter-view-private": "Жеке деп белгіленген қиянаттауды сүзгілеу сүзгішін қарау",
+ "right-abusefilter-log-private": "Жеке деп белгіленген қиянаттауды сүзгілеу сүзгіш енгізілімдерін қарау",
+ "right-abusefilter-hide-log": "Қиянаттау журналынан енгізілімдерді жасыру",
+ "right-abusefilter-hidden-log": "Жасырылған бұзақылық жасау журнал жазбасынан қарау",
+ "right-abusefilter-modify-global": "Ғаламдық қиянаттауды сүзгілеу сүзгішін жасау немесе өзгерту",
+ "action-abusefilter-modify": "қиянаттауды сүзгілеу сүзгішін өзгерту",
+ "action-abusefilter-view": "қиянаттауды сүзгілеу сүзгішін қарау",
+ "action-abusefilter-log": "Қиянат жасау журналын қарау",
+ "action-abusefilter-log-detail": "бұзақылық жасау журнал жазбасынан толығырақ қарау",
+ "action-abusefilter-private": "бұзақылық жасау журналынан жеке деректерін қарау",
+ "action-abusefilter-modify-restricted": "қиянаттауды сүзгілеу сүзгішінен шектеу әрекеттерін өзгерту",
+ "action-abusefilter-revert": "осы қиянаттауды сүзгілеу сүзгішіндегі барлық өзгертулерді қайтару",
+ "action-abusefilter-view-private": "Жеке деп белгіленген қиянаттауды сүзгілеу сүзгіштерін қарау",
+ "abusefilter-log": "Бұзақылық жасауды сүзгілеу журналы",
+ "abusefilter-log-summary": "Бұл журналда сүзгіштердің бұзақылық әрекеттерді табуына қатысты барлық әрекеттер тізімі көртетілген.",
+ "abusefilter-log-search": "Қиянаттау журналынан іздеу",
+ "abusefilter-log-search-user": "Қатысушы:",
+ "abusefilter-log-search-filter": "Сүзгі ID-і (таяқшалармен бөлінеді):",
+ "abusefilter-log-search-title": "Атауы:",
+ "abusefilter-log-search-wiki": "Уики:",
+ "abusefilter-log-search-submit": "Іздеу",
+ "abusefilter-log-entry": "$1: $2 қиянаттауды сүзгілеу сүзгішін шақырды, $4 бетіндегі орындалу әрекеті: «$3».\nҚолданылған шара: $5;\nСүзгі сипаттамасы: $6",
+ "abusefilter-log-entry-withdiff": "$1: $2 қиянаттауды сүзгілеу сүзгісін шақырды, $4 бетіндегі орындалу әрекеті: «$3».\nҚолданылған шара: $5;\nСүзгі сипаттамасы: $6 '''($7)'''",
+ "abusefilter-log-detailedentry-meta": "$1: $2 $3 сүзгішін шақырды, $5 бетіндегі орындалу әрекеті: «$4».\nҚолданылған шара: $6;\nСүзгіш сипаттамасы: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "ғаламдық сүзгіш $1",
+ "abusefilter-log-detailedentry-local": "сүзгіш: $1",
+ "abusefilter-log-detailslink": "егжей-тегжейі",
+ "abusefilter-log-diff": "айырм",
+ "abusefilter-log-hidelink": "көрінісін баптау",
+ "abusefilter-log-details-legend": "$1 журнал жазбасының егжей-тегжейі",
+ "abusefilter-log-details-var": "Айнымалылар",
+ "abusefilter-log-details-val": "Мәні:",
+ "abusefilter-log-details-vars": "Әрекет параметрлері",
+ "abusefilter-log-details-private": "Жеке деректері",
+ "abusefilter-log-details-ip": "Қайнар IP мекен жайы",
+ "abusefilter-log-noactions": "ешқандай",
+ "abusefilter-log-details-diff": "Өңдеп жасаған өзгерістері",
+ "abusefilter-log-linkoncontribs": "Қиянат жасау журналы",
+ "abusefilter-log-linkoncontribs-text": "Бұл қатысушының қиянат жасау журналы",
+ "abusefilter-log-hidden": "(жазба жасырылған)",
+ "abusefilter-log-hidden-implicit": "(жасырылған себебі нұсқасы жойылған)",
+ "abusefilter-log-cannot-see-details": "Бұл жазбаның егжей-тегжейін көруге рұқсатыңыз жоқ.",
+ "abusefilter-log-details-hidden": "Бұл жазба барлық қатысушыларға көрінуі жасырылғандықтан егжей-тегжейін көре алмайсыз.",
+ "abusefilter-log-hide-legend": "Журнал жазбасын жасыру",
+ "abusefilter-log-hide-id": "Журнал жазба ID-і:",
+ "abusefilter-log-hide-hidden": "Бұл жазбаны барлық қатысушыларға көрсетпеу",
+ "abusefilter-log-hide-reason": "Себебі:",
+ "abusefilter-log-hide-forbidden": "Қиянаттау журнал енгізілімдерін жасыруға рұқсатыңыз жоқ.",
+ "abusefilter-logentry-suppress": "\"[[$1]]\" дегенді жасыру",
+ "abusefilter-logentry-unsuppress": "\"[[$1]]\" дегенді жасырмау",
+ "logentry-abusefilter-hit": "$1 $4 сүзгісін шақырды, $3 бетіндегі орындалу әрекеті: «$5».\nҚолданылған шара: $6 ($7)",
+ "abusefilter-management": "Қиянаттауды сүзгілеу сүзгіш басқармасы",
+ "abusefilter-list": "Барлық сүзгіштер",
+ "abusefilter-list-id": "Сүзгіш сәйкестендіргіші:",
+ "abusefilter-list-status": "Статусы",
+ "abusefilter-list-public": "Негізгі сипаттамасы",
+ "abusefilter-list-consequences": "Нәтижелері",
+ "abusefilter-list-visibility": "Көрінісі",
+ "abusefilter-list-hitcount": "Ұшырасу саны",
+ "abusefilter-list-edit": "Өңдеу",
+ "abusefilter-list-details": "Егжей-тегжейі",
+ "abusefilter-list-limit": "Бет сайын саны:",
+ "abusefilter-list-lastmodified": "Соңғы өзгерілуі",
+ "abusefilter-list-group": "Сүзгіш тобы",
+ "abusefilter-hidden": "Жеке",
+ "abusefilter-unhidden": "Барлық қатысушыларға",
+ "abusefilter-enabled": "Қосылған",
+ "abusefilter-deleted": "Жойылған",
+ "abusefilter-disabled": "Ажыратылған",
+ "abusefilter-hitcount": "$1",
+ "abusefilter-new": "Жаңа сүзгіш бастау",
+ "abusefilter-return": "Сүзгіш басқармасына қайта оралу",
+ "abusefilter-status-global": "Ғаламдық",
+ "abusefilter-list-options": "Талғаулар",
+ "abusefilter-list-options-deleted": "Жойылған сүзгіштер:",
+ "abusefilter-list-options-deleted-only": "Тек жойылған сүзгіштерді көрсету",
+ "abusefilter-list-options-deleted-hide": "Жойылған сүзгіштерді жасыру",
+ "abusefilter-list-options-deleted-show": "Жойылған сүзгіштерді қоса көрсету",
+ "abusefilter-list-options-scope": "Сүзгіштерді көрсету",
+ "abusefilter-list-options-scope-local": "Тек жергілік басқарулар",
+ "abusefilter-list-options-scope-global": "Тек ғаламдық басқарулар",
+ "abusefilter-list-options-scope-all": "Жергілік және ғаламдық басқарулар",
+ "abusefilter-list-options-disabled": "Ажыратылған сүзгіштер:",
+ "abusefilter-list-options-hidedisabled": "Ажыратылған сүзгіштерді жасыру",
+ "abusefilter-list-options-submit": "Жаңарту",
+ "abusefilter-tools-expr": "Өрнекті тексеру",
+ "abusefilter-tools-submitexpr": "Есептеу",
+ "abusefilter-tools-reautoconfirm": "Өздікті құптау статусын қалпына келтіру",
+ "abusefilter-tools-reautoconfirm-user": "Қатысушы:",
+ "abusefilter-tools-reautoconfirm-submit": "Қайта өздікті құптау",
+ "abusefilter-reautoconfirm-notallowed": "Өздікті құптау статусыңызды қалпына келтіре алмайсыз.",
+ "abusefilter-reautoconfirm-done": "Тіркеліміңіздің өздікті құптау статусы қалпына келтірілді",
+ "abusefilter-status": "Соңғы $1 әрекеттің, $2 ($3) $4 жағдайы жоғарғы шегіне жеткен, оның $5 ($6 %) қазіргі белсендендірілген сүзгіштердің біріне сәйкес келген.",
+ "abusefilter-edit": "Қиянаттауды қақпайлау сүзгіші өңделуде",
+ "abusefilter-edit-subtitle": "$1 сүзгіші өңделуде",
+ "abusefilter-edit-subtitle-new": "Сүзгішті жасау",
+ "abusefilter-edit-status-label": "Статистика:",
+ "abusefilter-edit-new": "Жаңа сүзгіш",
+ "abusefilter-edit-save": "Сүзгішті сақтау",
+ "abusefilter-edit-id": "Сүзгіш сәйкестендіргіші:",
+ "abusefilter-edit-description": "Сипаттамасы:\n:''(барлық қатысушыларға көрінулі)''",
+ "abusefilter-edit-group": "Сүзгіш тобы:",
+ "abusefilter-edit-flags": "Жалаушалары:",
+ "abusefilter-edit-enabled": "Бұл сүзгішті қосу",
+ "abusefilter-edit-deleted": "Жойылды деп белгілеу",
+ "abusefilter-edit-hidden": "Барлық қатысушыларға бұл сүзгіштің егжей-тегжейін жасыру",
+ "abusefilter-edit-global": "Ғаламдық сүзгіш",
+ "abusefilter-edit-rules": "Шарттары:",
+ "abusefilter-edit-notes": "Белгілері:",
+ "abusefilter-edit-lastmod": "Сүзгіш соңғы рет өзгертілді:",
+ "abusefilter-edit-lastmod-text": "$1 — $2",
+ "abusefilter-edit-hitcount": "Сүзгіш ұшырасуы:",
+ "abusefilter-edit-consequences": "Сәйкес келу кезінде қабылдау әрекеттері",
+ "abusefilter-edit-action-warn": "Қатысушыға ескерту жасау шарасын қолдану",
+ "abusefilter-edit-action-disallow": "Қатысушыға сұраным әрекетіне тыйым салу",
+ "abusefilter-edit-action-blockautopromote": "Қатысушылардың өздікті құпталған статусын алып тастау",
+ "abusefilter-edit-action-degroup": "Қатысушыны жеңілдік топтарынан алып тастау",
+ "abusefilter-edit-action-block": "Қатысушыны және/немесе IP мекен жайды өңдеуден бұғаттау",
+ "abusefilter-edit-action-tag": "Бұдан кейінгі тексерулер үшін өңдемені белгілеу",
+ "abusefilter-edit-throttle-count": "Рұқсат етілген әрекеттер саны:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|секунд|секунд}}",
+ "abusefilter-edit-warn-message": "Ескерту үшін жүйе хабарын қолдану:",
+ "abusefilter-edit-warn-other": "Басқа хабар",
+ "abusefilter-edit-warn-other-label": "Басқа хабар бетінің аты:\n:''(МедиаУики префиксінсіз)''",
+ "abusefilter-edit-warn-actions": "Әрекеттер:",
+ "abusefilter-edit-warn-preview": "Таңдалған хабарды қарап көру",
+ "abusefilter-edit-warn-edit": "Таңдалған хабарды бастау/өңдеу",
+ "abusefilter-edit-tag-tag": "Белгіні қолдану (бір жол сайын)",
+ "abusefilter-edit-denied": "Бұл сүзгіш барлық қатысушыларға көрінуі жасырылғандықтан егжей-тегжейін көре алмайсыз.",
+ "abusefilter-edit-main": "Сүзгіш параметрлері",
+ "abusefilter-edit-done-subtitle": "Сүзгіш өңделді",
+ "abusefilter-edit-done": "[[Special:AbuseFilter/$1|$3 сүзгішіндегі]] [[Special:AbuseFilter/history/$1/diff/prev/$2|өзгертулеріңіз]] сақталды.",
+ "abusefilter-edit-viewhistory": "Бұл сүзгіштің тарихын қарау",
+ "abusefilter-edit-history": "Тарихы:",
+ "abusefilter-edit-check": "Синтаксисін тексеру",
+ "abusefilter-edit-badfilter": "Көрсетілген сүзгішіңіз жоқ",
+ "abusefilter-edit-tools": "Құралдар:",
+ "abusefilter-edit-test-link": "Бұл сүзгішті соңғы өңдемелерден сынап көру",
+ "abusefilter-edit-export": "Бұл сүзгішті басқа уикиге экспорттау",
+ "abusefilter-edit-syntaxok": "Синтаксис қатесі табылмады.",
+ "abusefilter-edit-syntaxerr": "Синтаксис қатесі табылды: $1",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Қосулар (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Азайтулар (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Көбейту (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Бөлу (/)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Қуат (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Салыстыру амалдары",
+ "abusefilter-edit-builder-op-comparison-equal": "Теңелу (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Теңеспеу (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "Аздау (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Үлкендеу (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Азырақ немесе тең (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Үлкенірек немесе тең (>=)",
+ "abusefilter-edit-builder-op-bool-and": "Және (&)",
+ "abusefilter-edit-builder-op-bool-or": "Немесе (|)",
+ "abusefilter-edit-builder-group-misc": "Әртүрлі",
+ "abusefilter-edit-builder-group-funcs": "Функциялар",
+ "abusefilter-edit-builder-group-vars": "Айнымалылар",
+ "abusefilter-edit-builder-vars-accountname": "Тіркелім аты (аккаунт тіркеу кезінде)",
+ "abusefilter-edit-builder-vars-action": "Әрекет",
+ "abusefilter-edit-builder-vars-addedlines": "Өңдемеде жолдарды қосуы",
+ "abusefilter-edit-builder-vars-delta": "Өңдеменің өзгеріс мөлшері",
+ "abusefilter-edit-builder-vars-diff": "Жасалған өңдеменің бірлескен айырмашылық өзгерісі",
+ "abusefilter-edit-builder-vars-newsize": "Жаңа беттің көлемі",
+ "abusefilter-edit-builder-vars-oldsize": "Ескі беттің көлемі",
+ "abusefilter-edit-builder-vars-removedlines": "Өңдемеде жолдардың алынуы",
+ "abusefilter-edit-builder-vars-summary": "Өңдеме түйіндемесі/себебі",
+ "abusefilter-edit-builder-vars-article-id": "Бет ID-і",
+ "abusefilter-edit-builder-vars-article-ns": "Бет атау кеңістігі",
+ "abusefilter-edit-builder-vars-article-text": "Беті аты (атау кеңістігінсіз)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Толық бет атауы",
+ "abusefilter-edit-builder-vars-article-views": "Бет қаралуы",
+ "abusefilter-edit-builder-vars-movedfrom-id": "Жылжытылған қайнар бетінің бет ID-і",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "Жылжытылған қайнар бетінің атау кеңістігі",
+ "abusefilter-edit-builder-vars-movedfrom-text": "Жылжытылған қайнар бетінің атауы",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "Жылжытылған қайнар бетінің толық атауы",
+ "abusefilter-edit-builder-vars-movedto-id": "Жылжытуға тағайындалған беттің ID-і",
+ "abusefilter-edit-builder-vars-movedto-ns": "Жылжытуға тағайындалған беттің есім кеңістігі",
+ "abusefilter-edit-builder-vars-movedto-text": "Жылжытуға тағайындалған беттің атауы",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "Жылжытуға тағайындалған беттің толық атауы",
+ "abusefilter-edit-builder-vars-user-editcount": "Қатысушының өңдеме саны",
+ "abusefilter-edit-builder-vars-user-age": "Қатысушы тіркелгісінің жасы",
+ "abusefilter-edit-builder-vars-user-name": "Қатысушы тіркелгісінің есімі",
+ "abusefilter-edit-builder-vars-recent-contributors": "Бетке үлес қосқан соңғы он қатысушы",
+ "abusefilter-edit-builder-vars-all-links": "Жаңа мәтінде барлық сыртқы сілтемелер",
+ "abusefilter-edit-builder-vars-added-links": "Өңдемеде қосылған барлық сыртқы сілтемелер",
+ "abusefilter-edit-builder-vars-removed-links": "Өңдемеде барлық сыртқы сілтемлер аласталған",
+ "abusefilter-edit-builder-vars-old-text": "Өңдемеден бұрынғы беттің ескі уикимәтіні",
+ "abusefilter-edit-builder-vars-new-text": "Өңдемеден кейінгі бетің жаңа уикимәтіні",
+ "abusefilter-edit-builder-vars-restrictions-edit": "Беттің өңдеуден қорғау деңгейі",
+ "abusefilter-edit-builder-vars-restrictions-move": "Беттің жылжытудан қорғау деңгейі",
+ "abusefilter-edit-builder-vars-restrictions-create": "Беттің қорғауын жасау",
+ "abusefilter-edit-builder-vars-restrictions-upload": "Файлдың жүктеуден қорғауы",
+ "abusefilter-edit-builder-vars-old-links": "Өңдемеден кейінгі бет сілтемелері",
+ "abusefilter-filter-log": "Жуықтағы сүзгіш өзгерістері",
+ "abusefilter-history": "#$1 қиянаттауды сүзгілеу сүзгішінің өзгеріс тарихы",
+ "abusefilter-history-foruser": "$1 өзгерткендері",
+ "abusefilter-history-hidden": "Жасырылған",
+ "abusefilter-history-enabled": "Қосылған",
+ "abusefilter-history-global": "Ғаламдық",
+ "abusefilter-history-timestamp": "Уақыты",
+ "abusefilter-history-user": "Қатысушы",
+ "abusefilter-history-public": "Көпшілікке арналған сүзгіш сипаттамасы",
+ "abusefilter-history-flags": "Жалаушалары",
+ "abusefilter-history-filter": "Сүзгіш ережесі",
+ "abusefilter-history-comments": "Пікірлер",
+ "abusefilter-history-actions": "Әрекеттер",
+ "abusefilter-history-backedit": "Сүзгіш өңдегішіне қайту",
+ "abusefilter-history-deleted": "Жойылған",
+ "abusefilter-history-filterid": "Сүзгіш",
+ "abusefilter-history-select-legend": "Дәлдеп іздеу",
+ "abusefilter-history-select-user": "Қатысушы:",
+ "abusefilter-history-select-submit": "Дәлдеу",
+ "abusefilter-history-diff": "Өзгерістер",
+ "abusefilter-action-tag": "Белгілеу",
+ "abusefilter-action-throttle": "Қысу",
+ "abusefilter-action-warn": "Ескерту",
+ "abusefilter-action-blockautopromote": "Өздікті бұғаттау",
+ "abusefilter-action-block": "Бұғаттау",
+ "abusefilter-action-degroup": "Топтардан шығару",
+ "abusefilter-action-rangeblock": "Ауқымды бұғаттау",
+ "abusefilter-action-disallow": "Рұқсат етілмеген",
+ "abusefilter-revert-title": "$1 сүзгішіндегі барлық өзгерістерді болдырмау",
+ "abusefilter-revert-preview-item": "$1: $2 $4 бетіндегі жасағаны: $3 .\nӘрекеттер жоққа шығарылды: $5 ($6)",
+ "abusefilter-revert-search-legend": "Жоққа шығарылған қиянаттауды сүзгілеу әрекеттерін таңдаңыз",
+ "abusefilter-revert-search": "Әрекеттерді таңдау",
+ "abusefilter-revert-filter": "Сүзгіш:",
+ "abusefilter-revert-confirm": "Құптау",
+ "abusefilter-revert-reasonfield": "Себебі:",
+ "abusefilter-test": "Алдыңғы өңдемелердегі сүзгішті қайта сынап көру",
+ "abusefilter-test-legend": "Сүзгіш сыналуда",
+ "abusefilter-test-load-filter": "Сүзгіш ID-ін жүктеу:",
+ "abusefilter-test-submit": "Сынау",
+ "abusefilter-test-load": "Жүктеу",
+ "abusefilter-test-user": "Қатысушының жасаған өзгерістері:",
+ "abusefilter-test-period-start": "Соңынан жасалған өзгерістер:",
+ "abusefilter-test-period-end": "Бұрын жасалған өзгерістер:",
+ "abusefilter-test-page": "Беттегі жасалған өзгерістер:",
+ "abusefilter-test-shownegative": "Сүзгіш есептемеген өзгерістерді көрсету",
+ "abusefilter-test-badtitle": "Сіз енгізген бет атауы жарамды емес. Ол бір немесе бірнеше таңбалардан тұрады бұл тақырып аттарында қолданылмайды.",
+ "abusefilter-changeslist-examine": "тексеру",
+ "abusefilter-examine-legend": "Өзгерістерді таңдау",
+ "abusefilter-examine-diff": "URL айырм:",
+ "abusefilter-examine-user": "Қатысушы:",
+ "abusefilter-examine-title": "Бет тақырыбы:",
+ "abusefilter-examine-submit": "Іздеу",
+ "abusefilter-examine-test-button": "Сүзгішті сынау",
+ "abusefilter-topnav": "'''Қиянаттауды сүзгілеу навигациясы'''",
+ "abusefilter-topnav-home": "Сүзгіштер тізімі",
+ "abusefilter-topnav-test": "Топтық сынау",
+ "abusefilter-topnav-examine": "Соңғы өңдемелерді қарап шығу",
+ "abusefilter-topnav-log": "Қиянат жасау журналы",
+ "abusefilter-topnav-tools": "Дұрыстау құралдары",
+ "abusefilter-topnav-import": "Сүзгішті импорттау",
+ "abusefilter-log-name": "Қиянаттауды сүзгілеу журналы",
+ "abusefilter-log-header": "Бұл журналда сүзгіштердің жасалу өзгерістерінің түйіндемесі көрсетілген.\nТолық егжей-тегжейі үшін жуықтағы сүзгіш өзгерістері [[Special:AbuseFilter/history|тізімін]] қараңыз.",
+ "abusefilter-log-noresults": "Нәтиже жоқ",
+ "abusefilter-diff-title": "Түзетулер арасындағы айырмашылық",
+ "abusefilter-diff-item": "Дана",
+ "abusefilter-diff-info": "Негізгі мәлімет",
+ "abusefilter-diff-pattern": "Сүзгіш шарттары",
+ "abusefilter-diff-backhistory": "Сүзгіш тарихына қайту",
+ "abusefilter-diff-prev": "Алдыңғы өзгеріс",
+ "abusefilter-diff-next": "Жаңалау өзгерісі",
+ "abusefilter-import-submit": "Деректерді импорттау",
+ "abusefilter-group-default": "Әдепкі",
+ "abusefilter-http-error": "HTTP қатесі кездесті: $1"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/kl.json b/www/wiki/extensions/AbuseFilter/i18n/kl.json
new file mode 100644
index 00000000..0d14f5b6
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/kl.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "Qaqqalik"
+ ]
+ },
+ "abusefilter-log-search-submit": "Ujarlerit",
+ "abusefilter-examine-submit": "Ujarlerit"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/km.json b/www/wiki/extensions/AbuseFilter/i18n/km.json
new file mode 100644
index 00000000..430adbd8
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/km.json
@@ -0,0 +1,221 @@
+{
+ "@metadata": {
+ "authors": [
+ "Lovekhmer",
+ "T-Rithy",
+ "Thearith",
+ "គីមស៊្រុន",
+ "វ័ណថារិទ្ធ"
+ ]
+ },
+ "abusefilter": "ការកំណត់រចនាសម្ព័ន្ឋ​តម្រងការបំពានច្បាប់",
+ "abuselog": "កំណត់ហេតុ​នៃ​ការបំពានច្បាប់",
+ "abusefilter-blocker": "តម្រង​ការបំពានច្បាប់",
+ "abusefilter-blockreason": "ត្រូវបានរាំងខ្ទប់ជាស្វ័យប្រវត្តិ​ដោយតម្រងការបំពានច្បាប់។ ច្បាប់ចែងថា៖ $1",
+ "abusefilter-degroupreason": "សិទ្ឋិ​ដែលត្រូវបានដកហូតជាស្វ័យប្រវត្តិ​ដោយតម្រងការបំពានច្បាប់។ ច្បាប់ចែងថា៖ $1",
+ "abusefilter-accountreserved": "ឈ្មោះគណនីនេះ​ត្រូវបានរក្សាទុកសម្រាប់ឱ្យតម្រងការបំពានច្បាប់​ប្រើប្រាស់។",
+ "right-abusefilter-modify": "កែប្រែតម្រងការបំពានច្បាប់",
+ "right-abusefilter-view": "មើលតម្រងការបំពានច្បាប់",
+ "right-abusefilter-log": "មើលកំណត់ហេតុ​នៃការបំពានច្បាប់",
+ "right-abusefilter-log-detail": "មើលកំណត់ហេតុលំអិតស្ដីពីការបំពានច្បាប់",
+ "right-abusefilter-private": "មើលទិន្នន័យឯកជន​នៅក្នុង​កំណត់ហេតុនៃការបំពានច្បាប់",
+ "right-abusefilter-view-private": "មើលតម្រងការបំពានច្បាប់ដែលបានដាក់ជាឯកជន",
+ "right-abusefilter-log-private": "មើលកំណត់ហេតុអំពីតម្រងការបំពានច្បាប់ដែលបានដាក់ជាឯកជន",
+ "action-abusefilter-modify": "កែសម្រួល​តម្រងការបំពានច្បាប់",
+ "action-abusefilter-view": "មើលតម្រងការបំពានច្បាប់",
+ "action-abusefilter-log": "មើលកំណត់ហេតុ​នៃការបំពានច្បាប់",
+ "action-abusefilter-log-detail": "មើលកំណត់ហេតុលំអិតស្ដីពីការបំពានច្បាប់",
+ "action-abusefilter-private": "មើលទិន្នន័យឯកជន​នៅក្នុង​កំណត់ហេតុនៃការបំពានច្បាប់",
+ "abusefilter-log": "កំណត់ហេតុនៃតម្រងការបំពានច្បាប់",
+ "abusefilter-log-search": "ស្វែងរក​កំណត់ហេតុនៃការបំពានច្បាប់",
+ "abusefilter-log-search-user": "អ្នកប្រើប្រាស់៖",
+ "abusefilter-log-search-filter": "ID តម្រង៖",
+ "abusefilter-log-search-title": "ចំណងជើង៖",
+ "abusefilter-log-search-wiki": "វិគី៖",
+ "abusefilter-log-search-submit": "ស្វែងរក",
+ "abusefilter-log-detailedentry-global": "តម្រងសាកល​ $1",
+ "abusefilter-log-detailedentry-local": "តម្រង $1",
+ "abusefilter-log-detailslink": "សេចក្តីលម្អិត",
+ "abusefilter-log-diff": "ប្រៀបធៀប",
+ "abusefilter-log-hidelink": "កែសម្រួលគំឃើញ",
+ "abusefilter-log-details-legend": "ព័ត៌មានលំអិតអំពីកំណត់ហេតុ $1",
+ "abusefilter-log-details-var": "អញ្ញត្តិ",
+ "abusefilter-log-details-val": "តម្លៃ",
+ "abusefilter-log-details-vars": "ប៉ារ៉ាមែត្រសកម្មភាព",
+ "abusefilter-log-details-private": "ទិន្នន័យឯកជន",
+ "abusefilter-log-details-ip": "អាសយដ្ឋាន IP ដើមហេតុ",
+ "abusefilter-log-noactions": "ទទេ",
+ "abusefilter-log-details-diff": "ការកែប្រែដែលបានធ្វើឡើង",
+ "abusefilter-log-linkoncontribs": "កំណត់ហេតុ​នៃ​ការបំពានច្បាប់",
+ "abusefilter-log-hide-reason": "មូលហេតុ៖",
+ "abusefilter-management": "គ្រប់គ្រងតម្រងការបំពានច្បាប់",
+ "abusefilter-list": "តម្រងទាំងអស់",
+ "abusefilter-list-id": "ID តម្រង",
+ "abusefilter-list-status": "ស្ថានភាព",
+ "abusefilter-list-public": "ការពិពណ៌នាជាសាធារណៈ",
+ "abusefilter-list-consequences": "វិបាក",
+ "abusefilter-list-visibility": "គំហើញ",
+ "abusefilter-list-hitcount": "ចំនួនដង",
+ "abusefilter-list-edit": "កែប្រែ",
+ "abusefilter-list-details": "សេចក្តីលំអិត",
+ "abusefilter-list-limit": "ចំនួនក្នុងមួយទំព័រ៖",
+ "abusefilter-list-lastmodified": "ត្រូវបានកែប្រែលើកចុងក្រោយ",
+ "abusefilter-list-group": "ក្រុមតម្រង",
+ "abusefilter-hidden": "ឯកជន",
+ "abusefilter-unhidden": "សាធារណៈ",
+ "abusefilter-enabled": "ប្រើ",
+ "abusefilter-deleted": "បានលុប",
+ "abusefilter-disabled": "មិនប្រើ",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|ដង|ដង}}",
+ "abusefilter-new": "បង្កើតតំរងថ្មី",
+ "abusefilter-return": "ត្រឡប់​ទៅ​កាន់​ការ​គ្រប់គ្រងនៃ​តម្រងការបំពានច្បាប់",
+ "abusefilter-status-global": "សាកល​",
+ "abusefilter-list-options": "ជម្រើស",
+ "abusefilter-list-options-deleted": "តម្រង​​ដែលបានលុប៖",
+ "abusefilter-list-options-deleted-only": "បង្ហាញ​តែ​តម្រង​ដែល​បាន​លុប​ចោល​ប៉ុណ្ណោះ​",
+ "abusefilter-list-options-deleted-hide": "លាក់​បាំង​តម្រង​​ដែលបានលុប",
+ "abusefilter-list-options-deleted-show": "រាប់​បញ្ចូល​តម្រង​​ដែលបានលុប",
+ "abusefilter-list-options-scope": "មើលតម្រងពីក្នុង៖",
+ "abusefilter-list-options-scope-local": "វិគីតំបន់",
+ "abusefilter-list-options-scope-global": "ច្បាប់សាកល",
+ "abusefilter-list-options-disabled": "តំម្រងអសកម្ម៖",
+ "abusefilter-list-options-hidedisabled": "លាក់តម្រងអសកម្ម",
+ "abusefilter-list-options-submit": "បន្ទាន់សម័យ",
+ "abusefilter-tools-submitexpr": "វាយតម្លៃ",
+ "abusefilter-tools-reautoconfirm-user": "អ្នកប្រើប្រាស់៖",
+ "abusefilter-edit-subtitle": "កំពុងកែសម្រួលតម្រង $1",
+ "abusefilter-edit-subtitle-new": "បង្កើត​តម្រង",
+ "abusefilter-edit-status-label": "ស្ថិតិ៖",
+ "abusefilter-edit-new": "តម្រងថ្មី",
+ "abusefilter-edit-save": "រក្សាទុកតម្រង",
+ "abusefilter-edit-id": "ID តម្រង:",
+ "abusefilter-edit-description": "ពណ៌នា:\n:''(អាចមើលបានជាសាធារណៈ)''",
+ "abusefilter-edit-group": "ក្រុមតម្រង៖",
+ "abusefilter-edit-flags": "ទង់​៖​",
+ "abusefilter-edit-enabled": "បើកឱ្យប្រើតម្រងនេះ",
+ "abusefilter-edit-deleted": "កត់ចំណាំថាបានលុបចោល",
+ "abusefilter-edit-hidden": "លាក់ព័ត៌មានលំអិតអំពី​តម្រងនេះ មិនឱ្យមើលជាសាធារណៈ",
+ "abusefilter-edit-global": "តម្រងសាកល",
+ "abusefilter-edit-rules": "លក្ខខណ្ឌ:",
+ "abusefilter-edit-notes": "សម្គាល់:",
+ "abusefilter-edit-lastmod": "តម្រងដែលត្រូវបានកែប្រែចុងក្រោយ:",
+ "abusefilter-edit-lastmod-text": "$1 ដោយ $2",
+ "abusefilter-edit-action-block": "ហាមឃាត់អ្នកប្រើប្រាស់ និង/ឬអាសយដ្ឋានIPពីការកែប្រែ",
+ "abusefilter-edit-throttle-period": "រយៈពេល៖",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|second|វិនាទី}}",
+ "abusefilter-edit-warn-message": "សារ​ប្រព័ន្ធ​ដែល​ប្រើ​ប្រាស់​សម្រាប់​ការ​ព្រមាន​៖",
+ "abusefilter-edit-warn-other": "សារ​ផ្សេងទៀត",
+ "abusefilter-edit-warn-other-label": "ឈ្មោះ​ទំព័រ​នៃ​សារ​ដទៃ​ផ្សេង​ទៀត​៖\n៖''(ដោយ​គ្មាន​បុព្វបទ​ MediaWiki)''",
+ "abusefilter-edit-warn-actions": "សកម្មភាព៖",
+ "abusefilter-edit-warn-preview": "មើល​ជាមុន​សារ​ដែល​បាន​ជ្រើសរើស​",
+ "abusefilter-edit-warn-edit": "បង្កើត​/កែ​សម្រួល​សារ​ដែល​បាន​ជ្រើស​យក​",
+ "abusefilter-edit-denied": "អ្នកមិនអាចមើលព័ត៌មានលម្អិតអំពីតម្រងនេះទេ ព្រោះវាត្រូវបានលាក់មិនឱ្យមើលជាសាធារណៈ។",
+ "abusefilter-edit-main": "ប៉ារ៉ាម៉ែត្រតម្រង",
+ "abusefilter-edit-done-subtitle": "តម្រងត្រូវបានកែសម្រួល",
+ "abusefilter-edit-done": "[Special:AbuseFilter/history/$1/diff/prev/$2|ការកែប្រែរបស់អ្នក]] លើ[[Special:AbuseFilter/$1|តម្រង $3]] ត្រូវបានរក្សាទុក។",
+ "abusefilter-edit-viewhistory": "មើលប្រវត្តិរបស់តម្រងនេះ",
+ "abusefilter-edit-history": "ប្រវត្តិ៖",
+ "abusefilter-edit-check": "ពិនិត្យវាក្យសម្ពន្ធ(syntax)",
+ "abusefilter-edit-tools": "ឧបករណ៍៖",
+ "abusefilter-edit-export": "នាំចេញ​ទំព័រនេះទៅ​វិគីផ្សេងមួយទៀត",
+ "abusefilter-edit-builder-group-op-arithmetic": "ប្រមាណវិធីនព្វន្ឋ",
+ "abusefilter-edit-builder-op-arithmetic-addition": "ប្រមាណវិធីបូក (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "ប្រមាណវិធីដក (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "ប្រមាណវិធីគុណ (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "ប្រមាណវិធីចែក (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "សំណល់ (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "ស្វ័យគុណ (**)",
+ "abusefilter-edit-builder-group-op-comparison": "ប្រមាណវិធីប្រៀបធៀប",
+ "abusefilter-edit-builder-op-comparison-equal": "ស្មើនឹង (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "មិនស្មើនឹង (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "តូចជាង (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "ធំជាង (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "តូចជាងឬស្មើ (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "ធំជាងឬស្មើ (>=)",
+ "abusefilter-edit-builder-group-op-bool": "ប្រមាណវិធីប៊ូល(Bool)",
+ "abusefilter-edit-builder-op-bool-not": "មិន (!)",
+ "abusefilter-edit-builder-op-bool-and": "និង (&)",
+ "abusefilter-edit-builder-op-bool-or": "ឬ (|)",
+ "abusefilter-edit-builder-op-bool-xor": "XOR (^)",
+ "abusefilter-edit-builder-group-misc": "ផ្សេងៗ",
+ "abusefilter-edit-builder-misc-tern": "ប្រមាណវិធីត្រីធាតុ (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "លក្ខខណ្ឌ(if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "អនុគមន៍",
+ "abusefilter-edit-builder-funcs-length": "ប្រវែងជួរអក្សរ(length)",
+ "abusefilter-edit-builder-funcs-lcase": "ទៅជាអក្សរតូច(lcase)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "យក​ចេញ​តួ​អក្សរ​ស្ទួន​(rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "តួ​អក្សរ​ពិសេស​ / តួ​អក្សរ​សរុប​ (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "ធ្វើអោយទៅជាធម្មតា(norm)",
+ "abusefilter-edit-builder-funcs-count": "ចំនួនដងដែលជួរអក្សរ X មាននៅក្នុងជួរអក្សរ Y (count)",
+ "abusefilter-edit-builder-funcs-set_var": "កំណត់អថេរ (set_var)",
+ "abusefilter-edit-builder-group-vars": "អថេរ",
+ "abusefilter-edit-builder-vars-accountname": "ឈ្មោះគណនី(នៅលើការបង្កើតគណនី)",
+ "abusefilter-edit-builder-vars-action": "សកម្មភាព",
+ "abusefilter-edit-builder-vars-addedlines": "បន្ទាត់ត្រូវបានបន្ថែមទៅក្នុងកំណែប្រែ",
+ "abusefilter-edit-builder-vars-newsize": "ទំហំទំព័រថ្មី",
+ "abusefilter-edit-builder-vars-oldsize": "ទំហំទំព័រចាស់",
+ "abusefilter-edit-builder-vars-removedlines": "បន្ទាត់ដែលត្រូវបានយកចេញក្នុងកំណែប្រែ",
+ "abusefilter-edit-builder-vars-summary": "កែប្រែសេចក្តីសង្ខេប/ហេតុផល",
+ "abusefilter-edit-builder-vars-article-id": "អត្ថសញ្ញាណទំព័រ",
+ "abusefilter-edit-builder-vars-article-ns": "លំហឈ្មោះទំព័រ",
+ "abusefilter-edit-builder-vars-article-text": "ចំណង​ជើង​ទំព័រ​ (ដោយ​គ្មាន​លំហ​ឈ្មោះ​)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "ចំនងជើងពេញរបស់អត្ថបទ",
+ "abusefilter-edit-builder-vars-user-editcount": "កែប្រែចំនួនអ្នកប្រើប្រាស់",
+ "abusefilter-edit-builder-vars-user-age": "អាយុកាលគណនីអ្នកប្រើប្រាស់",
+ "abusefilter-edit-builder-vars-user-name": "ឈ្មោះគណនីអ្នកប្រើប្រាស់",
+ "abusefilter-filter-log": "បំលាស់ប្ដូរ​តម្រង​ថ្មីៗ",
+ "abusefilter-history-foruser": "បំលាស់​ប្ដូរ​នានា​ដោយ $1",
+ "abusefilter-history-hidden": "លាក់បាំង",
+ "abusefilter-history-enabled": "ប្រើ",
+ "abusefilter-history-global": "សាកល​",
+ "abusefilter-history-timestamp": "ពេលវេលា",
+ "abusefilter-history-user": "អ្នកប្រើប្រាស់",
+ "abusefilter-history-public": "បរិយាយ​នៃ​តម្រង​សាធារណៈ​",
+ "abusefilter-history-flags": "ទង់​",
+ "abusefilter-history-filter": "ច្បាប់​តម្រង",
+ "abusefilter-history-comments": "វិចារ",
+ "abusefilter-history-actions": "សកម្មភាព",
+ "abusefilter-history-backedit": "ត្រឡប់ទៅកាន់កំណែប្រែតំរង",
+ "abusefilter-history-deleted": "បានលុប",
+ "abusefilter-history-filterid": "តម្រង",
+ "abusefilter-history-select-legend": "ចម្រាញ់លទ្ធផលស្វែងរក",
+ "abusefilter-history-select-user": "អ្នកប្រើប្រាស់៖",
+ "abusefilter-history-select-submit": "ចម្រាញ់",
+ "abusefilter-history-diff": "បំលាស់ប្ដូរ",
+ "abusefilter-action-tag": "ស្លាក",
+ "abusefilter-action-warn": "ព្រមាន​",
+ "abusefilter-action-block": "ហាមឃាត់",
+ "abusefilter-action-degroup": "ដកចេញពីក្រុមនានា",
+ "abusefilter-action-disallow": "មិន​អនុញ្ញាត​",
+ "abusefilter-revert-periodstart": "ពេល​ចាប់​ផ្ដើម​៖",
+ "abusefilter-revert-periodend": "ពេល​បញ្ចប់​​៖",
+ "abusefilter-revert-search": "ជ្រើសរើស​សកម្មភាព​",
+ "abusefilter-revert-filter": "តម្រង៖",
+ "abusefilter-revert-confirm": "បញ្ជាក់",
+ "abusefilter-revert-reasonfield": "មូលហេតុ៖",
+ "abusefilter-test-submit": "សាកល្បង",
+ "abusefilter-test-load": "ផ្ទុក",
+ "abusefilter-test-user": "បំលាស់ប្ដូរ​ដោយ​អ្នកប្រើប្រាស់​៖",
+ "abusefilter-test-period-start": "បំលាស់ប្ដូរ​ដែល​ធ្វើ​ឡើង​ក្រោយ​៖",
+ "abusefilter-test-period-end": "បំលាស់ប្ដូរ​ដែល​ធ្វើ​ឡើង​មុន​​៖",
+ "abusefilter-test-page": "បំលាស់ប្ដូរ​ដែល​ធ្វើ​ឡើង​នៅ​លើ​ទំព័រ​​៖",
+ "abusefilter-changeslist-examine": "ត្រួត​ពិនិត្យ​",
+ "abusefilter-examine-legend": "ជ្រើសរើស​បំលាស់ប្ដូរផ្សេង​ៗ",
+ "abusefilter-examine-diff": "URL នៃ​ភាពខុស​គ្នា​៖",
+ "abusefilter-examine-user": "អ្នកប្រើប្រាស់៖",
+ "abusefilter-examine-title": "ចំណងជើង​ទំព័រ៖",
+ "abusefilter-examine-submit": "ស្វែងរក",
+ "abusefilter-examine-test-button": "សាកល្បង​តម្រង​",
+ "abusefilter-examine-notfound": "បំលាស់​ប្ដូរ​ដែល​អ្នក​ស្នើ​សុំ​មិន​អាច​រក​ឃើញ​ទេ​។",
+ "abusefilter-topnav-home": "ទំព័រដើម",
+ "abusefilter-topnav-log": "កំណត់ហេតុ​នៃ​ការបំពានច្បាប់",
+ "abusefilter-topnav-import": "នាំចូល​តម្រង​",
+ "abusefilter-log-name": "កំណត់ហេតុនៃតម្រងការបំពានច្បាប់",
+ "abusefilter-log-noresults": "គ្មានលទ្ធផល",
+ "abusefilter-diff-title": "ភាពខុសគ្នានៃកំណែនានា",
+ "abusefilter-diff-item": "វត្ថុ​",
+ "abusefilter-diff-version": "កំណែពី $1 {{GENDER:$3|ដោយ}} $2",
+ "abusefilter-diff-info": "ព័ត៌មាន​មូលដ្ឋាន​",
+ "abusefilter-diff-pattern": "លក្ខខណ្ឌ​តម្រង",
+ "abusefilter-import-submit": "នាំចូល​ទិន្នន័យ​"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/kn.json b/www/wiki/extensions/AbuseFilter/i18n/kn.json
new file mode 100644
index 00000000..8012b753
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/kn.json
@@ -0,0 +1,132 @@
+{
+ "@metadata": {
+ "authors": [
+ "Akoppad",
+ "Dimension10",
+ "Nayvik",
+ "පසිඳු කාවින්ද",
+ "VASANTH S.N."
+ ]
+ },
+ "abusefilter-log-search-title": "ಶೀರ್ಷಿಕೆ:",
+ "abusefilter-log-search-submit": "ಹುಡುಕು",
+ "abusefilter-log-detailslink": "ವಿವರಗಳು",
+ "abusefilter-log-diff": "ವ್ಯತ್ಯಾಸ",
+ "abusefilter-log-hidelink": "ನೋಟ ಹೊಂದಿಸಿ",
+ "abusefilter-log-details-var": "ಮಾರ್ಪಡಬಲ್ಲ",
+ "abusefilter-log-details-val": "ಮೌಲ್ಯ",
+ "abusefilter-log-details-vars": "ಕಾರ್ಯದ ಪರಿಮಿತಿಗಳು",
+ "abusefilter-log-details-private": "ಖಾಸಗಿ ದತ್ತಾಂಶ",
+ "abusefilter-log-noactions": "ಯಾವುದೂ ಇಲ್ಲ",
+ "abusefilter-log-details-diff": "ಸಂಪಾದನೆಯಲ್ಲಿ ಮಾಡಿದ ಬದಲಾವಣೆಗಳು",
+ "abusefilter-log-linkoncontribs": "ದುರುಪಯೋಗದ ಅನುಕ್ರಮಣಿಕೆ",
+ "abusefilter-log-hide-legend": "ಅನುಕ್ರಮಣಿಕೆಯ ಉಲ್ಲೇಖವನ್ನು ಅಡಗಿಸು",
+ "abusefilter-log-hide-reason": "ಕಾರಣ:",
+ "abusefilter-list": "ಎಲ್ಲಾ ಶೋಧಕಗಳು",
+ "abusefilter-list-status": "ಸ್ಥಾನಮಾನ",
+ "abusefilter-list-public": "ಸಾರ್ವಜನಿಕ ವಿವರಣೆ",
+ "abusefilter-list-consequences": "ಪರಿಣಾಮಗಳು",
+ "abusefilter-list-visibility": "ಗೋಚರತೆ",
+ "abusefilter-list-edit": "ಸಂಪಾದಿಸಿ",
+ "abusefilter-list-details": "ವಿವರಗಳು",
+ "abusefilter-list-lastmodified": "ಕೊನೆಯ ಬದಲಾವಣೆ",
+ "abusefilter-list-group": "ಶೋಧಕ ಗುಂಪು",
+ "abusefilter-hidden": "ಖಾಸಗಿ",
+ "abusefilter-unhidden": "ಸಾರ್ವಜನಿಕ",
+ "abusefilter-enabled": "ಶಕ್ತಗೊಳಿಸಿದ",
+ "abusefilter-deleted": "ಅಳಿಸಿದ",
+ "abusefilter-disabled": "ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿದ",
+ "abusefilter-new": "ಒಂದು ಹೊಸ ಶೋಧಕ ಸೃಷ್ಟಿಸಿ",
+ "abusefilter-return": "ಶೋಧಕ ನಿಭಾವಣೆಗೆ ಹಿಂತಿರುಗಿ",
+ "abusefilter-status-global": "ಜಾಗತಿಕ",
+ "abusefilter-list-options": "ಆಯ್ಕೆಗಳು",
+ "abusefilter-list-options-deleted": "ಅಳಿಸಲ್ಪಟ್ಟ ಶೋಧಕಗಳು",
+ "abusefilter-list-options-deleted-only": "ಅಳಿಸಲ್ಪಟ್ಟ ಶೋಧಕಗಳನ್ನಷ್ಟೇ ತೋರಿಸು",
+ "abusefilter-list-options-deleted-hide": "ಅಳಿಸಲ್ಪಟ್ಟ ಶೋಧಕಗಳನ್ನು ಅಡಗಿಸು",
+ "abusefilter-list-options-deleted-show": "ಅಳಿಸಲ್ಪಟ್ಟ ಶೋಧಕಗಳನ್ನು ಸೇರಿಸು",
+ "abusefilter-list-options-scope": "..ಯಿಂದ ಶೋಧಕಗಳನ್ನು ತೋರಿಸು",
+ "abusefilter-list-options-scope-local": "ಪ್ರಾದೇಶಿಕ ವಿಕಿ",
+ "abusefilter-list-options-scope-global": "ಜಾಗತಿಕ ನಿಯಮಗಳು",
+ "abusefilter-list-options-disabled": "ನಿಷ್ಕ್ರಿಯ ಶೋಧಕಗಳು",
+ "abusefilter-list-options-hidedisabled": "ನಿಷ್ಕ್ರಿಯ ಶೋಧಕಗಳನ್ನು ಅಡಗಿಸು",
+ "abusefilter-list-options-submit": "ಪರಿಷ್ಕರಿಸು",
+ "abusefilter-tools-submitexpr": "ಮೌಲ್ಯ ನಿರ್ಣಯ ಮಾಡು",
+ "abusefilter-tools-reautoconfirm-user": "ಬಳಕೆದಾರ:",
+ "abusefilter-edit-subtitle-new": "ಶೋಧಕವನ್ನು ಸೃಷ್ಟಿಸಲಾಗುತ್ತಿದೆ",
+ "abusefilter-edit-status-label": "ಅಂಕಿ ಅಂಶಗಳು:",
+ "abusefilter-edit-new": "ಹೊಸ ಶೋಧಕ",
+ "abusefilter-edit-save": "ಶೋಧಕವನ್ನು ಉಳಿಸಿ",
+ "abusefilter-edit-group": "ಶೋಧಕ ಗುಂಪು:",
+ "abusefilter-edit-flags": "ನಿಶಾನೆಗಳು:",
+ "abusefilter-edit-enabled": "ಈ ಶೋಧಕವನ್ನು ಸಶಕ್ತಗೊಳಿಸು",
+ "abusefilter-edit-deleted": "ಆಳಿಸಲ್ಪಟ್ಟದುದು ಎಂದು ಗುರುತುಮಾಡು",
+ "abusefilter-edit-global": "ಜಾಗತಿಕ ಶೋಧಕ",
+ "abusefilter-edit-rules": "ನಿಬಂಧನೆಗಳು:",
+ "abusefilter-edit-notes": "ಟಿಪ್ಪಣಿಗಳು:",
+ "abusefilter-edit-lastmod": "ಕೊನೆಯದಾಗಿ ಪರಿಷ್ಕರಿಸಲ್ಪಟ್ಟ ಶೋಧಕ",
+ "abusefilter-edit-warn-other": "ಬೇರೆ ಸಂದೇಶಗಳು",
+ "abusefilter-edit-main": "ಶೋಧಕ ಪರಿಮಾಣಗಳು",
+ "abusefilter-edit-done-subtitle": "ಪರಿಷ್ಕರಿಸಲ್ಪಟ್ಟ ಶೋಧಕ",
+ "abusefilter-edit-viewhistory": "ಈ ಶೋಧಕದ ಇತಿಹಾಸವನ್ನು ನೋಡಿ",
+ "abusefilter-edit-history": "ಇತಿಹಾಸ:",
+ "abusefilter-edit-tools": "ಉಪಕರಣಗಳು:",
+ "abusefilter-edit-builder-op-arithmetic-addition": "ಸಂಕಲನ(+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "ವ್ಯವಕಲನ(-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "ಗುಣಾಕಾರ(*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "ಭಾಗಾಕಾರ(/)",
+ "abusefilter-edit-builder-op-comparison-equal": "ಸಮಾನ (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "ಸಮಾನವಲ್ಲ(!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "ಕಡಿಮೆ (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "ಹೆಚ್ಚು (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "ಕಡಿಮೆ ಅಥವಾ ಸರಿಸಮಾನ(<=)",
+ "abusefilter-edit-builder-op-bool-and": "ಮತ್ತು (&)",
+ "abusefilter-edit-builder-op-bool-or": "ಅಥವಾ(|)",
+ "abusefilter-edit-builder-group-misc": "ಇತರ",
+ "abusefilter-edit-builder-vars-newsize": "ಹೊಸ ಪುಟದ ಅಳತೆ",
+ "abusefilter-edit-builder-vars-oldsize": "ಹಳೇ ಪುಟದ ಅಳತೆ",
+ "abusefilter-edit-builder-vars-removedlines": "ತಿದ್ದಿದಾಗ ತೆಗೆದ ಸಾಲುಗಳು",
+ "abusefilter-edit-builder-vars-summary": "ತಿದ್ದಿದಕ್ಕೆ ಸಂಕ್ಷೇಪವಾದ/ಕಾರಣ",
+ "abusefilter-edit-builder-vars-article-id": "ಪುಟದ ID",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "ಪೂರ್ಣ ಪುಟದ ಹೆಸರು",
+ "abusefilter-edit-builder-vars-user-age": "ಬಳಕೆದಾರನ ವಯಸ್ಸು",
+ "abusefilter-edit-builder-vars-user-name": "ಬಳೆಕೆದಾರನ ಹೆಸರು",
+ "abusefilter-edit-builder-vars-user-blocked": "ಬಳಕೆದಾರ ನಿರ್ಬಂಧಿಸಲ್ಪಟ್ಟಿರುವನೋ",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "ಸಮಯ ಮತ್ತು ಇಮೇಲ್ ದೃಢೀಕರಿಸಲಪಟ್ಟಿದೆ",
+ "abusefilter-edit-builder-vars-recent-contributors": "ಕಳೆದ ಹತ್ತು ಜನ ಸಂಪಾದಕರು ಈ ಪುಟಕ್ಕೆ ಕೊಡುಗೆ ನೀಡಿದ್ದಾರೆ",
+ "abusefilter-edit-builder-vars-all-links": "ಹೊಸ ಪಠ್ಯದಲ್ಲಿ ಎಲ್ಲಾ ಬಾಹ್ಯ ಸಂಪರ್ಕ ಕೊಂಡಿಗಳು",
+ "abusefilter-edit-builder-vars-added-links": "ಎಲ್ಲಾ ಬಾಹ್ಯ ಸಂಪರ್ಕ ಕೊಂಡಿಗಳು ತಿದ್ದು ಪಡಿಯಲ್ಲಿ ಸೇರಿಸಲಾಯಿತು",
+ "abusefilter-edit-builder-vars-removed-links": "ಎಲ್ಲಾ ಬಾಹ್ಯ ಸಂಪರ್ಕ ಕೊಂಡಿಗಳನ್ನು ತಿದ್ದುಪಡಿಯಲ್ಲಿ ಅಳಿಸಲಾಗಿದೆ",
+ "abusefilter-edit-builder-vars-old-text": "ಹಳೇ wikitext ಪುಟ , ತಿದ್ದುಪಡಿಯ ಮೊದಲು",
+ "abusefilter-edit-builder-vars-new-text": "ಹೊಸ wikitext ಪುಟ , ತಿದ್ದುಪಡಿಯ ನಂತರ",
+ "abusefilter-edit-builder-vars-restrictions-edit": "ಪುಟದ ಸಂರಕ್ಷಣೆ ಮಟ್ಟವನ್ನು ತಿದ್ದುಪಡಿಸಿ",
+ "abusefilter-edit-builder-vars-restrictions-move": "ಪುಟದ ಸಂರಕ್ಷಣೆ ಮಟ್ಟವನ್ನು ಸರಿಸಿ",
+ "abusefilter-edit-builder-vars-restrictions-create": "ಪುಟ ರಕ್ಷಣೆ ರಚಿಸಿ",
+ "abusefilter-edit-builder-vars-restrictions-upload": "ಫೈಲ್ ರಕ್ಷಣೆ ನಕಲೇರಿಸಿ",
+ "abusefilter-edit-builder-vars-old-text-stripped": "ಹಳೆಯ ಪುಟ ಪಠ್ಯ, ಯಾವುದೇ ಮಾರ್ಕ್ಅಪ್ ತೆಗೆಯಲಾದ",
+ "abusefilter-edit-builder-vars-old-links": "\nಪುಟದಲ್ಲಿನ ಸಂಪರ್ಕ ಕೊಂಡಿಗಳು, ತಿದ್ದುಪಡಿಯ ಮೊದಲು",
+ "abusefilter-history-hidden": "ಅಡಗಿಸಲ್ಪಟ್ಟ",
+ "abusefilter-history-enabled": "ಶಕ್ತಗೊಳಿಸಿದ",
+ "abusefilter-history-global": "ಜಾಗತಿಕ",
+ "abusefilter-history-timestamp": "ಸಮಯ",
+ "abusefilter-history-user": "ಬಳಕೆದಾರ",
+ "abusefilter-history-flags": "ನಿಶಾನಿಗಳು",
+ "abusefilter-history-filter": "ಶೋಧಕ ನಿಯಮ",
+ "abusefilter-history-comments": "ಟಿಪ್ಪಣಿಗಳು",
+ "abusefilter-history-actions": "ಕ್ರಿಯೆಗಳು",
+ "abusefilter-history-deleted": "ಅಳಿಸಲ್ಪಟ್ಟ",
+ "abusefilter-history-filterid": "ಶೋಧಕ",
+ "abusefilter-history-select-user": "ಬಳಕೆದಾರ:",
+ "abusefilter-history-select-submit": "ಸಂಸ್ಕರಿಸು",
+ "abusefilter-history-diff": "ಬದಲಾವಣೆಗಳು",
+ "abusefilter-revert-filter": "ಶೋಧಕ:",
+ "abusefilter-revert-confirm": "ಧೃಡಪಡಿಸು",
+ "abusefilter-revert-reasonfield": "ಕಾರಣ:",
+ "abusefilter-test-submit": "ಪಠ್ಯ",
+ "abusefilter-test-load": "ತುಂಬಿಸು",
+ "abusefilter-changeslist-examine": "ಪರೀಕ್ಷಿಸು",
+ "abusefilter-examine-legend": "ಬದಲಾವಣೆಗಳನ್ನು ಆಯ್ಕೆಮಾಡು",
+ "abusefilter-examine-user": "ಬಳಕೆದಾರ:",
+ "abusefilter-examine-title": "ಪುಟ ಶೀರ್ಷಿಕೆ:",
+ "abusefilter-examine-submit": "ಹುಡುಕು",
+ "abusefilter-topnav-home": "ಮುಖ್ಯಪುಟ"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/ko.json b/www/wiki/extensions/AbuseFilter/i18n/ko.json
new file mode 100644
index 00000000..0d48434e
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/ko.json
@@ -0,0 +1,516 @@
+{
+ "@metadata": {
+ "authors": [
+ "Albamhandae",
+ "ChongDae",
+ "Freebiekr",
+ "Gapo",
+ "Hym411",
+ "Klutzy",
+ "Kwj2772",
+ "LFM",
+ "Pakman",
+ "Priviet",
+ "Yknok29",
+ "관인생략",
+ "아라",
+ "Revi",
+ "IRTC1015",
+ "Alex00728",
+ "Macofe",
+ "Matma Rex",
+ "Ykhwong",
+ "Jerrykim306",
+ "Delim",
+ "Bluemersen",
+ "Tursetic",
+ "Garam"
+ ]
+ },
+ "abusefilter-desc": "사용자 편집을 규칙에 따라 자동으로 검사합니다",
+ "abusefilter": "편집 필터 관리",
+ "abuselog": "편집 필터 기록",
+ "abusefilter-intro": "편집 필터 관리 인터페이스를 사용하는 여러분을 환영합니다.\n편집 필터는 모든 행위에 대해 문제가 있는지 자동으로 검사하는 소프트웨어입니다.\n이 인터페이스는 정의된 필터 목록을 나열하며, 나열된 필터는 수정할 수 있습니다.",
+ "abusefilter-mustbeeditor": "보안상의 이유로, 편집 필터 편집 권한을 가진 사용자만이 이 양식을 사용할 수 있습니다.",
+ "abusefilter-warning": "'''경고:''' 이 동작은 유해한 것으로 자동 판별되었습니다.\n비생산적인 편집은 즉시 되돌려지며,\n이러한 편집이 반복되거나 정도가 심한 경우 계정이나 IP 주소가 차단될 것입니다.\n만약 해당 동작에 문제가 없다면, 확인을 위해 다시 저장해도 됩니다.\n문제가 되는 관련 규칙에 대한 간략한 설명은 다음과 같습니다: $1",
+ "abusefilter-disallowed": "이 동작은 유해한 것으로 자동 판별되었기 때문에 불허되었습니다.\n이 동작에 문제가 없다면 관리자에게 무엇을 하려 하는지 알려 주세요.\n문제가 되는 관련 규칙에 대한 간략한 설명은 다음과 같습니다: $1",
+ "abusefilter-blocked-display": "시스템이 현재 동작에 문제가 있다고 판단하여 동작의 실행을 금지하였습니다.\n또한 {{SITENAME}}을(를) 보호하기 위하여 사용 중인 계정과 관련된 IP 주소가 차단되었습니다.\n이 차단이 오류로 인한 것이라면 관리자에게 문의해 주세요.\n문제가 된 필터 규칙은 다음과 같습니다: $1",
+ "abusefilter-degrouped": "이 동작은 유해한 것으로 자동 판별되었습니다.\n따라서 동작이 불허되었으며, 계정이 비정상적으로 사용된다고 의심되어 모든 권한이 해제되었습니다.\n이것이 잘못된 판별이라고 생각되시면 사무관에게 연락하여 이 동작에 대한 설명을 제공해 주세요. 그러면 권한은 복구될 것입니다.\n문제가 되는 관련 규칙에 대한 간략한 설명은 다음과 같습니다: $1",
+ "abusefilter-autopromote-blocked": "시스템이 현재 동작에 문제가 있다고 판단하여 동작이 불허되었습니다.\n또한 보안상 이유로 사용자 계정에 부여된 일부 권한이 일시적으로 정지되었습니다.\n문제가 된 필터 규칙은 다음과 같습니다: $1",
+ "abusefilter-blocker": "편집 필터",
+ "abusefilter-blockreason": "편집 필터에 의해 자동으로 차단되었습니다.\n일치한 규칙에 대한 설명: $1",
+ "abusefilter-degroupreason": "편집 필터에 의해 자동으로 권한이 해제되었습니다.\n규칙 설명: $1",
+ "abusefilter-accountreserved": "이 계정 이름은 편집 필터가 사용하도록 지정되어 있습니다.",
+ "right-abusefilter-modify": "편집 필터 수정",
+ "right-abusefilter-view": "편집 필터 보기",
+ "right-abusefilter-log": "편집 필터 기록 보기",
+ "right-abusefilter-log-detail": "편집 필터 기록의 자세한 내용 보기",
+ "right-abusefilter-private": "편집 필터 기록의 비공개 정보 보기",
+ "right-abusefilter-private-log": "편집 필터 비공개 상세 정보 접근 기록 보기",
+ "right-abusefilter-modify-restricted": "편집 필터의 제한된 기능 설정 바꾸기",
+ "right-abusefilter-revert": "주어진 필터에 의한 모든 바뀜을 되돌리기",
+ "right-abusefilter-view-private": "비공개된 필터 보기",
+ "right-abusefilter-log-private": "비공개된 편집 필터 기록 보기",
+ "right-abusefilter-hide-log": "편집 필터 기록의 항목 숨기기",
+ "right-abusefilter-hidden-log": "숨겨진 편집 필터 기록 보기",
+ "right-abusefilter-modify-global": "전역 필터 만들거나 수정하기",
+ "action-abusefilter-modify": "편집 필터를 수정할",
+ "action-abusefilter-view": "편집 필터를 볼",
+ "action-abusefilter-log": "편집 필터 기록을 볼",
+ "action-abusefilter-log-detail": "편집 필터 기록에서 자세한 내용을 볼",
+ "action-abusefilter-private": "편집 필터 기록에서 비공개 내용을 볼",
+ "action-abusefilter-private-log": "편집 필터 비공개 상세 정보 접근 기록 보기",
+ "action-abusefilter-modify-restricted": "편집 필터의 제한된 기능 설정을 바꿀",
+ "action-abusefilter-revert": "주어진 필터에 의한 모든 바뀜을 되돌릴",
+ "action-abusefilter-view-private": "비공개된 필터를 볼",
+ "abusefilter-log": "편집 필터 기록",
+ "abusefilter-log-summary": "이 기록은 필터 규칙과 일치하는 모든 행위에 대한 목록을 보여줍니다.",
+ "abusefilter-log-search": "편집 필터 기록 검색",
+ "abusefilter-log-search-user": "사용자:",
+ "abusefilter-log-search-filter": "필터 ID (파이프로 구분):",
+ "abusefilter-log-search-title": "제목:",
+ "abusefilter-log-search-wiki": "위키:",
+ "abusefilter-log-search-impact": "영향 범위:",
+ "abusefilter-log-search-impact-all": "모든 조치",
+ "abusefilter-log-search-impact-saved": "저장된 변경사항만",
+ "abusefilter-log-search-impact-not-saved": "저장된 변경사항 제외",
+ "abusefilter-log-search-entries-label": "공개 여부:",
+ "abusefilter-log-search-entries-all": "모든 엔트리",
+ "abusefilter-log-search-action-taken-label": "조치:",
+ "abusefilter-log-search-action-taken-any": "모두",
+ "abusefilter-log-search-submit": "검색",
+ "abusefilter-log-entry": "$1: $2님이 $4 문서에서 \"$3\" 동작을 {{GENDER:$8|수행하여}} 편집 필터가 {{GENDER:$8|작동하였습니다}}.\n조치: $5;\n필터 설명: $6",
+ "abusefilter-log-entry-withdiff": "$1: $2님이 $4 문서에서 \"$3\" 동작을 {{GENDER:$8|수행하여}} 편집 필터가 {{GENDER:$8|작동하였습니다}}.\n조치: $5;\n필터 설명: $6 ($7)",
+ "abusefilter-log-detailedentry-meta": "$1: $2님이 $5에서 \"$4\" 동작을 {{GENDER:$9|수행하여}} $3이(가) {{GENDER:$9|작동했습니다}}.\n조치: $6;\n필터 설명: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "전역 필터 $1",
+ "abusefilter-log-detailedentry-local": "필터 $1",
+ "abusefilter-log-detailslink": "자세한 사항",
+ "abusefilter-log-diff": "차이",
+ "abusefilter-log-hidelink": "보이기 설정",
+ "abusefilter-log-details-legend": "기록 $1에 대한 자세한 정보",
+ "abusefilter-log-details-var": "변수",
+ "abusefilter-log-details-val": "값",
+ "abusefilter-log-details-vars": "명령 변수",
+ "abusefilter-log-details-private": "비공개 기록 상세 정보",
+ "abusefilter-log-details-ip": "사용자의 IP 주소",
+ "abusefilter-log-details-checkuser": "사용자 검사",
+ "abusefilter-log-noactions": "없음",
+ "abusefilter-log-details-diff": "편집에서 바뀐 내용",
+ "abusefilter-log-linkoncontribs": "편집 필터 기록",
+ "abusefilter-log-linkoncontribs-text": "{{GENDER:$1|이 사용자}}의 편집 필터 기록",
+ "abusefilter-log-hidden": "(항목 숨겨짐)",
+ "abusefilter-log-hidden-implicit": "(특정판이 삭제되어 숨겨짐)",
+ "abusefilter-log-cannot-see-details": "이 항목의 자세한 내용을 볼 권한이 없습니다.",
+ "abusefilter-log-cannot-see-private-details": "이 항목의 비공개 상세 정보를 볼 권한이 없습니다.",
+ "abusefilter-log-details-hidden": "이 항목은 비공개로 설정되었기 때문에 이 항목의 자세한 사항을 볼 수 없습니다.",
+ "abusefilter-log-private-not-included": "지정한 필터 ID 중 하나 이상이 비공개 필터입니다. 비공개 필터의 자세한 내용을 볼 권한이 없기 때문에 해당 필터는 검색되지 않았습니다.",
+ "abusefilter-log-hide-legend": "기록 항목 숨기기",
+ "abusefilter-log-hide-id": "기록 항목 ID:",
+ "abusefilter-log-hide-hidden": "이 항목을 비공개로 설정",
+ "abusefilter-log-hide-reason": "이유:",
+ "abusefilter-log-hide-reason-other": "다른 이유/추가적인 이유:",
+ "abusefilter-log-hide-forbidden": "편집 필터 기록 항목을 숨길 권한이 없습니다.",
+ "abusefilter-logentry-suppress": "\"[[$1]]\"을 비공개함",
+ "abusefilter-logentry-unsuppress": "\"[[$1]]\"을 공개함",
+ "logentry-abusefilter-hit": "$1님이 $3에서 \"$5\" 동작을 하여 $4이(가) 작동하였습니다. 조치: $6 ($7)",
+ "log-action-filter-abusefilter": "필터 변경 유형:",
+ "log-action-filter-abusefilter-create": "새 필터 만들기",
+ "log-action-filter-abusefilter-modify": "필터 수정",
+ "logentry-abusefilterprivatedetails-access": "$1님이 $3의 비공개 상세 정보에 {{GENDER:$2|접근하였습니다}}",
+ "abusefilterprivatedetails-log-name": "편집 필터 비공개 상세 정보 접근 기록",
+ "abusefilter-management": "편집 필터 관리",
+ "abusefilter-list": "모든 필터",
+ "abusefilter-list-id": "필터 ID",
+ "abusefilter-list-pattern": "패턴",
+ "abusefilter-list-status": "상태",
+ "abusefilter-list-public": "공개적 설명",
+ "abusefilter-list-consequences": "조치",
+ "abusefilter-list-visibility": "공개 여부",
+ "abusefilter-list-hitcount": "동작 횟수",
+ "abusefilter-list-edit": "편집",
+ "abusefilter-list-details": "자세한 내용",
+ "abusefilter-list-limit": "페이지당 필터 개수",
+ "abusefilter-list-lastmodified": "마지막 수정",
+ "abusefilter-list-group": "필터 그룹",
+ "abusefilter-hidden": "비공개",
+ "abusefilter-unhidden": "공개",
+ "abusefilter-enabled": "활성화됨",
+ "abusefilter-deleted": "삭제됨",
+ "abusefilter-disabled": "비활성화됨",
+ "abusefilter-hitcount": "$1{{PLURAL:$1|회}}",
+ "abusefilter-new": "새 필터 만들기",
+ "abusefilter-return": "필터 관리 페이지로 돌아가기",
+ "abusefilter-status-global": "전역",
+ "abusefilter-list-options": "설정",
+ "abusefilter-list-options-deleted": "삭제된 필터:",
+ "abusefilter-list-options-deleted-only": "삭제된 필터만 보이기",
+ "abusefilter-list-options-deleted-hide": "삭제된 필터 숨기기",
+ "abusefilter-list-options-deleted-show": "삭제된 필터를 포함하기",
+ "abusefilter-list-options-scope": "필터 보기:",
+ "abusefilter-list-options-scope-local": "로컬 규칙만",
+ "abusefilter-list-options-scope-global": "전역 규칙만",
+ "abusefilter-list-options-scope-all": "로컬 및 전역 규칙",
+ "abusefilter-list-options-disabled": "비활성화된 필터:",
+ "abusefilter-list-options-hidedisabled": "비활성화된 필터를 숨기기",
+ "abusefilter-list-options-searchfield": "규칙 내 검색:",
+ "abusefilter-list-options-searchpattern": "패턴 추가",
+ "abusefilter-list-options-searchoptions": "검색 모드:",
+ "abusefilter-list-options-search-like": "순수 쿼리",
+ "abusefilter-list-options-search-rlike": "정규 표현식",
+ "abusefilter-list-options-search-irlike": "대소문자 구별을 하지 않는 정규 표현식",
+ "abusefilter-list-regexerror": "검색 중 오류가 발생했습니다: 정규 표현식 문법 오류.",
+ "abusefilter-list-options-submit": "적용",
+ "abusefilter-tools-text": "편집 필터를 제작하고 디버그하는 데 유용한 도구입니다.",
+ "abusefilter-tools-expr": "구문 검사기",
+ "abusefilter-tools-submitexpr": "시험",
+ "abusefilter-tools-reautoconfirm": "자동 인증 상태를 복구",
+ "abusefilter-tools-reautoconfirm-user": "사용자:",
+ "abusefilter-tools-reautoconfirm-submit": "자동 인증 상태 복구",
+ "abusefilter-reautoconfirm-none": "이 사용자는 {{GENDER:$1}}자동 인증 상태가 중단된 적이 없습니다.",
+ "abusefilter-reautoconfirm-notallowed": "자동 인증 상태를 복구할 권한이 없습니다.",
+ "abusefilter-reautoconfirm-done": "계정의 자동 인증 상태가 복구되었습니다",
+ "abusefilter-status": "최근 {{PLURAL:$1|동작}} $1개 중 $2개 ($3%)가 부하 한도 $4에 도달{{PLURAL:$2|했고}} $5개($6%)가 현재 활성화된 필터와 일치{{PLURAL:$5|했습니다}}.",
+ "abusefilter-edit": "편집 필터 편집하기",
+ "abusefilter-edit-subtitle": "필터 $1 편집하기",
+ "abusefilter-edit-subtitle-new": "필터 만들기",
+ "abusefilter-edit-oldwarning": "<strong>이 필터의 이전 버전을 수정하고 있습니다.\n아래의 통계는 이 필터의 최신판에 대한 것입니다.\n변경 사항을 저장하면 편집하고 있는 판 이후의 모든 변경 사항을 덮어쓰게 됩니다.</strong> &bull;\n[[Special:AbuseFilter/history/$2|이 필터의 역사로 돌아가기]].",
+ "abusefilter-edit-status-label": "통계:",
+ "abusefilter-edit-status": "최근 {{PLURAL:$1|동작}} $1개 중 $2건($3%)이 이 필터와 일치하였습니다.",
+ "abusefilter-edit-status-profile": "최근 {{PLURAL:$1|동작}} $1개 중 $2건($3%)이 이 필터와 일치하였습니다.\n평균적으로 필터의 작동 시간은 $4밀리초이며, $5만큼의 {{PLURAL:$5|부하}}가 걸리고 있습니다.",
+ "abusefilter-edit-throttled-warning": "'''경고''': 이 필터는 자동으로 유해한 것으로 표시되었습니다. 안전 장치로서 다음의 조치는 실행되지 않을 것입니다. ($1) 검토한 다음 조건을 [[mw:Extension:AbuseFilter/Conditions|최적화]]하여 이 제한을 제거하십시오.",
+ "abusefilter-edit-new": "새 필터",
+ "abusefilter-edit-save": "필터 저장하기",
+ "abusefilter-edit-id": "필터 ID:",
+ "abusefilter-edit-switch-editor": "편집기 전환",
+ "abusefilter-edit-description": "설명:\n:(공개됨)",
+ "abusefilter-edit-field-description": "설명",
+ "abusefilter-edit-group": "필터 그룹:",
+ "abusefilter-edit-flags": "설정:",
+ "abusefilter-edit-enabled": "이 필터 활성화하기",
+ "abusefilter-edit-deleted": "삭제된 것으로 표시",
+ "abusefilter-edit-hidden": "일반 사용자가 필터의 세부 사항을 보지 못하도록 숨기기",
+ "abusefilter-edit-global": "전역 필터",
+ "abusefilter-edit-rules": "필터 규칙:",
+ "abusefilter-edit-field-conditions": "조건",
+ "abusefilter-edit-notes": "참고:",
+ "abusefilter-edit-lastmod": "필터가 마지막으로 수정된 시각",
+ "abusefilter-edit-lastmod-text": "$1에 $2님이 바꿈",
+ "abusefilter-edit-hitcount": "필터 동작 횟수:",
+ "abusefilter-edit-consequences": "일치할 때 취할 조치",
+ "abusefilter-edit-action-warn": "사용자에게 경고하고 이 행위를 중지",
+ "abusefilter-edit-action-disallow": "문제가 되는 동작을 사용자가 수행하지 못하도록 막기",
+ "abusefilter-edit-action-blockautopromote": "사용자의 자동 인증 상태를 해제",
+ "abusefilter-edit-action-degroup": "모든 사용자 권한을 해제",
+ "abusefilter-edit-action-block": "사용자 및 IP 주소의 편집을 차단",
+ "abusefilter-edit-action-blocktalk": "사용자 및 IP 주소가 자신의 토론 문서를 편집하지 못하게 합니다",
+ "abusefilter-edit-action-throttle": "속도 제한을 넘었을 때만 필터를 적용",
+ "abusefilter-edit-action-rangeblock": "사용자가 사용한 개별 IP 대역을 차단",
+ "abusefilter-edit-action-tag": "나중에 검토하기 위해 태그하기",
+ "abusefilter-edit-throttle-count": "허용할 동작 수:",
+ "abusefilter-edit-throttle-period": "주기:",
+ "abusefilter-edit-throttle-seconds": "$1{{PLURAL:$1|초}}",
+ "abusefilter-edit-throttle-groups": "속도 제한 단위:\n:(1줄당 1개씩, 쉼표로 여러 항목 구분)",
+ "abusefilter-edit-warn-message": "경고할 때 사용할 시스템 메시지:",
+ "abusefilter-edit-warn-other": "다른 메시지",
+ "abusefilter-edit-warn-other-label": "다른 메시지의 이름:\n:({{ns:8}} 접두어를 뺀 이름)",
+ "abusefilter-edit-warn-actions": "동작:",
+ "abusefilter-edit-warn-preview": "선택한 메시지 미리 보기",
+ "abusefilter-edit-warn-edit": "선택한 메시지를 만들기/편집하기",
+ "abusefilter-edit-tag-tag": "적용할 [[Special:Tags|태그]] (1줄당 1개씩):",
+ "abusefilter-edit-block-anon-durations": "익명 사용자의 차단 기간:",
+ "abusefilter-edit-block-user-durations": "등록된 사용자의 차단 기간:",
+ "abusefilter-block-anon": "익명 사용자",
+ "abusefilter-block-user": "등록된 사용자",
+ "abusefilter-edit-denied": "이 필터는 비공개로 설정되었기 때문에 이 필터의 자세한 사항을 볼 수 없습니다.",
+ "abusefilter-edit-main": "필터 변수",
+ "abusefilter-edit-done-subtitle": "필터 편집됨",
+ "abusefilter-edit-done": "[[Special:AbuseFilter/$1|필터 $3]]에서 [[Special:AbuseFilter/history/$1/diff/prev/$2|내 편집]]이 저장되었습니다.",
+ "abusefilter-edit-badsyntax": "입력된 필터에 구문 오류가 있습니다.\n파서 출력값: <pre>$1</pre>",
+ "abusefilter-edit-missingfields": "다음의 칸은 필수이므로 채워야 합니다: $1",
+ "abusefilter-edit-restricted": "이 필터는 제한된 조치를 포함하므로 편집할 수 없습니다.\n필터를 편집하려면 제한된 조치를 설정할 수 있는 권한을 가진 사용자에게 문의하십시오.",
+ "abusefilter-edit-viewhistory": "이 필터의 역사 보기",
+ "abusefilter-edit-history": "역사:",
+ "abusefilter-edit-check": "구문 확인",
+ "abusefilter-edit-badfilter": "지정한 필터가 존재하지 않습니다.",
+ "abusefilter-edit-revert": "이 필터로 취해진 조치 되돌리기",
+ "abusefilter-edit-tools": "도구:",
+ "abusefilter-edit-test-link": "최근 편집에 대해 이 필터를 시험하기",
+ "abusefilter-edit-export": "이 필터를 다른 위키로 내보내기",
+ "abusefilter-edit-syntaxok": "감지된 구문 오류가 없습니다.",
+ "abusefilter-edit-syntaxerr": "구문 오류가 감지되었습니다: $1",
+ "abusefilter-edit-bad-tags": "입력된 태그 중 올바르지 않은 값이 있습니다.\n태그는 짧고 특수 문자를 포함하지 않아야 합니다.",
+ "abusefilter-edit-notallowed": "필터를 만들거나 편집할 권한이 없습니다.",
+ "abusefilter-edit-notallowed-global": "전역 필터를 만들거나 편집할 권한이 없습니다.",
+ "abusefilter-edit-notallowed-global-custom-msg": "전역 필터에는 사용자 정의 경고 메시지를 사용할 수 없습니다",
+ "abusefilter-edit-builder-select": "커서가 있는 위치에 추가할 설정을 선택하세요.",
+ "abusefilter-edit-builder-group-op-arithmetic": "산술 연산자",
+ "abusefilter-edit-builder-op-arithmetic-addition": "더하기 (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "빼기 (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "곱하기 (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "나누기 (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "나머지 (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "제곱 (**)",
+ "abusefilter-edit-builder-group-op-comparison": "비교 연산자",
+ "abusefilter-edit-builder-op-comparison-equal": "다음과 같은 값 (==)",
+ "abusefilter-edit-builder-op-comparison-equal-strict": "다음과 같은 값과 유형 (===)",
+ "abusefilter-edit-builder-op-comparison-notequal": "다음과 같지 않은 값 (!=)",
+ "abusefilter-edit-builder-op-comparison-notequal-strict": "다음과 같지 않은 값과 유형 (!==)",
+ "abusefilter-edit-builder-op-comparison-lt": "보다 작음 (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "보다 큼 (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "작거나 같음 (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "크거나 같음 (>=)",
+ "abusefilter-edit-builder-group-op-bool": "논리 연산자",
+ "abusefilter-edit-builder-op-bool-not": "부정 (!)",
+ "abusefilter-edit-builder-op-bool-and": "그리고 (&)",
+ "abusefilter-edit-builder-op-bool-or": "또는 (|)",
+ "abusefilter-edit-builder-op-bool-xor": "배타적 논리합 (^)",
+ "abusefilter-edit-builder-group-misc": "기타",
+ "abusefilter-edit-builder-misc-in": "문자열에 포함 (in)",
+ "abusefilter-edit-builder-misc-like": "패턴 일치 (like)",
+ "abusefilter-edit-builder-misc-rlike": "정규 표현식 일치 (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "정규 표현식 일치, 대소문자 구분하지 않음 (irlike)",
+ "abusefilter-edit-builder-misc-contains": "왼쪽 문자열이 오른쪽 문자열을 포함 (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "문자열 그대로 (\"\")",
+ "abusefilter-edit-builder-misc-tern": "3단 연산자 (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "조건부 (if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "기능",
+ "abusefilter-edit-builder-funcs-length": "문자열 길이 (length)",
+ "abusefilter-edit-builder-funcs-lcase": "소문자로 변환 (lcase)",
+ "abusefilter-edit-builder-funcs-ucase": "대문자로 변환 (ucase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "혼동되는 글자를 정규화 (ccnorm)",
+ "abusefilter-edit-builder-funcs-ccnorm-contains-any": "문자열을 정규화하고 검색하면서 여러 개의 부스트링을 OR 방식으로 찾습니다 (ccnorm_contains_any)",
+ "abusefilter-edit-builder-funcs-ccnorm-contains-all": "문자열을 정규화하고 검색하면서 여러 개의 부스트링을 AND 방식으로 찾습니다 (ccnorm_contains_all)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "중복되는 글자를 제거 (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "특수 문자 비율 (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "정규화 (norm)",
+ "abusefilter-edit-builder-funcs-count": "문자열 Y 안의 문자열 X의 반복 횟수 (count)",
+ "abusefilter-edit-builder-funcs-rcount": "문자열 Y 안의 정규 표현식으로 표현된 X의 반복 횟수 (rcount)",
+ "abusefilter-edit-builder-funcs-get_matches": "수집되는 각각의 그룹마다 텍스트 내에서 일치하는 정규 표현식 배열 (get_matches)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "공백 제거 (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "특수 문자를 제거 (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "IP가 대역 안에 있는지 여부 (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "문자열에서 여러 하위 문자열을 OR 방식으로 검색합니다. (contains_any)",
+ "abusefilter-edit-builder-funcs-contains-all": "문자열에서 여러 하위 문자열을 AND 방식으로 검색합니다. (contains_any)",
+ "abusefilter-edit-builder-funcs-substr": "하위 문자열",
+ "abusefilter-edit-builder-funcs-strpos": "문자열 내의 하위 문자열의 위치 (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "문자열을 찾아 바꾸기 (str_replace)",
+ "abusefilter-edit-builder-funcs-rescape": "정규 표현식에서 문자열을 리터럴로 이스케이프 (rescape)",
+ "abusefilter-edit-builder-funcs-set_var": "변수 설정 (set_var)",
+ "abusefilter-edit-builder-group-vars": "변수",
+ "abusefilter-edit-builder-vars-accountname": "계정 이름 (계정 만들 때)",
+ "abusefilter-edit-builder-vars-timestamp": "바뀐 시점의 유닉스 시간 기록",
+ "abusefilter-edit-builder-vars-timestamp-expanded": "기록 타임스탬프",
+ "abusefilter-edit-builder-vars-action": "동작",
+ "abusefilter-edit-builder-vars-addedlines": "편집 중 추가된 줄",
+ "abusefilter-edit-builder-vars-delta": "편집에서의 문서 크기 변화",
+ "abusefilter-edit-builder-vars-diff": "편집 전후의 차이",
+ "abusefilter-edit-builder-vars-newsize": "새 문서 크기",
+ "abusefilter-edit-builder-vars-oldsize": "이전 문서 크기",
+ "abusefilter-edit-builder-vars-old-content-model": "오래된 콘텐츠 모델",
+ "abusefilter-edit-builder-vars-new-content-model": "새 콘텐츠 모델",
+ "abusefilter-edit-builder-vars-removedlines": "편집 중 제거된 줄",
+ "abusefilter-edit-builder-vars-summary": "편집 요약/이유",
+ "abusefilter-edit-builder-vars-article-id": "문서 ID",
+ "abusefilter-edit-builder-vars-article-ns": "문서 이름공간",
+ "abusefilter-edit-builder-vars-article-text": "(이름공간을 뺀) 문서 제목",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "전체 문서 제목",
+ "abusefilter-edit-builder-vars-article-views": "문서 조회수",
+ "abusefilter-edit-builder-vars-movedfrom-id": "이동 전 문서의 ID",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "이동 전 문서의 이름공간",
+ "abusefilter-edit-builder-vars-movedfrom-text": "이동 전의 제목",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "이동 전 문서의 전체 이름",
+ "abusefilter-edit-builder-vars-movedto-id": "이동 후 문서의 ID",
+ "abusefilter-edit-builder-vars-movedto-ns": "이동 후 문서의 이름공간",
+ "abusefilter-edit-builder-vars-movedto-text": "이동 후 문서의 제목",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "이동 후 문서의 전체 제목",
+ "abusefilter-edit-builder-vars-user-editcount": "사용자의 편집 수",
+ "abusefilter-edit-builder-vars-user-age": "사용자 계정 만든 후 지난 시간",
+ "abusefilter-edit-builder-vars-user-name": "사용자 계정 이름",
+ "abusefilter-edit-builder-vars-user-groups": "사용자 권한 그룹 (자동으로 부여된 권한 포함)",
+ "abusefilter-edit-builder-vars-user-rights": "사용자가 가진 권한",
+ "abusefilter-edit-builder-vars-user-blocked": "사용자의 차단 여부",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "이메일이 인증된 시각",
+ "abusefilter-edit-builder-vars-recent-contributors": "이 문서를 마지막으로 편집한 편집자 10명",
+ "abusefilter-edit-builder-vars-first-contributor": "이 문서에 처음으로 기여한 사용자",
+ "abusefilter-edit-builder-vars-all-links": "바뀐 글에 포함된 모든 외부 링크",
+ "abusefilter-edit-builder-vars-added-links": "편집 중 추가된 모든 외부 링크",
+ "abusefilter-edit-builder-vars-removed-links": "편집 중 제거된 모든 외부 링크",
+ "abusefilter-edit-builder-vars-old-text": "편집 전 문서의 내용 (위키문법)",
+ "abusefilter-edit-builder-vars-new-text": "편집 후 문서의 내용 (위키문법)",
+ "abusefilter-edit-builder-vars-new-pst": "새 문서 위키 텍스트, 변환을 미리 저장",
+ "abusefilter-edit-builder-vars-diff-pst": "편집으로 인한 바뀐 내용의 차이가 통합됨, 미리 저장 변형됨",
+ "abusefilter-edit-builder-vars-addedlines-pst": "줄이 편집 중 추가됨, 미리 저장 변형됨",
+ "abusefilter-edit-builder-vars-new-text-stripped": "편집 후 마크업을 제거한 문서 내용",
+ "abusefilter-edit-builder-vars-new-html": "편집 후의 HTML 소스",
+ "abusefilter-edit-builder-vars-restrictions-edit": "문서 편집 보호 수준",
+ "abusefilter-edit-builder-vars-restrictions-move": "문서 이동 보호 수준",
+ "abusefilter-edit-builder-vars-restrictions-create": "문서의 만들기 보호 설정",
+ "abusefilter-edit-builder-vars-restrictions-upload": "파일의 올리기 보호 설정",
+ "abusefilter-edit-builder-vars-old-text-stripped": "편집 전 마크업을 제거한 문서 내용",
+ "abusefilter-edit-builder-vars-old-links": "편집하기 전의 문서 링크",
+ "abusefilter-edit-builder-vars-old-html": "HTML로 변환된 편집 전 문서 내용",
+ "abusefilter-edit-builder-vars-minor-edit": "사소한 편집으로 표시할지의 여부",
+ "abusefilter-edit-builder-vars-file-sha1": "파일 내용의 SHA1 해시",
+ "abusefilter-edit-builder-vars-file-size": "파일 크기 (바이트 단위)",
+ "abusefilter-edit-builder-vars-file-mime": "파일의 MIME 타입",
+ "abusefilter-edit-builder-vars-file-mediatype": "파일의 미디어 타입",
+ "abusefilter-edit-builder-vars-file-width": "파일의 너비 (단위: 픽셀)",
+ "abusefilter-edit-builder-vars-file-height": "파일의 높이 (단위: 픽셀)",
+ "abusefilter-edit-builder-vars-file-bits-per-channel": "파일의 컬러 채널 당 비트",
+ "abusefilter-edit-block-options": "차단 옵션:",
+ "abusefilter-filter-log": "최근 필터의 바뀜",
+ "abusefilter-history": "편집 필터 #$1의 편집 역사",
+ "abusefilter-history-foruser": "$1의 편집",
+ "abusefilter-history-hidden": "숨겨짐",
+ "abusefilter-history-enabled": "활성화됨",
+ "abusefilter-history-global": "전역",
+ "abusefilter-history-timestamp": "시간",
+ "abusefilter-history-user": "사용자",
+ "abusefilter-history-public": "필터 설명",
+ "abusefilter-history-flags": "상태",
+ "abusefilter-history-filter": "필터 규칙",
+ "abusefilter-history-comments": "댓글",
+ "abusefilter-history-actions": "조치",
+ "abusefilter-history-backedit": "필터 편집기로 돌아가기",
+ "abusefilter-history-deleted": "삭제됨",
+ "abusefilter-history-filterid": "필터",
+ "abusefilter-history-select-legend": "검색 구체화",
+ "abusefilter-history-select-user": "사용자:",
+ "abusefilter-history-select-filter": "필터 ID:",
+ "abusefilter-history-select-submit": "필터",
+ "abusefilter-history-diff": "차이",
+ "abusefilter-history-error-hidden": "요청한 필터는 비공개되어 있어 필터의 역사를 볼 수 없습니다.",
+ "abusefilter-exception-unexpectedatend": "$1번째 문자에 예상치 못한 \"$2\"가 있습니다.",
+ "abusefilter-exception-expectednotfound": "$1번째 문자에 있어야 할 $2가 발견되지 않았습니다. ($3 $4를 대신 찾아보세요.)",
+ "abusefilter-exception-unrecognisedkeyword": "$1번째 문자에 알 수 없는 키워드 $2가 있습니다.",
+ "abusefilter-exception-unexpectedtoken": "$1번째 문자에 예기치 못한 토큰 \"$3\" ($2형)이 있습니다.",
+ "abusefilter-exception-unclosedstring": "$1에서 시작하는 닫히지 않은 문자열이 있습니다.",
+ "abusefilter-exception-invalidoperator": "$1번째 문자에 잘못된 연산자 \"$2\"가 사용되었습니다.",
+ "abusefilter-exception-unrecognisedtoken": "$1번째 문자에 알 수 없는 토큰 \"$2\"이 있습니다.",
+ "abusefilter-exception-noparams": "$1번째 문자에 있는 \"$2\" 함수에 변수가 없습니다.",
+ "abusefilter-exception-dividebyzero": "$1번째 문자에서 $2를 0으로 나누려 하고 있습니다.",
+ "abusefilter-exception-unrecognisedvar": "$1번째 문자에 알 수 없는 변수 $2가 있습니다.",
+ "abusefilter-exception-notenoughargs": "$1번째 문자에서 호출한 $2 함수에 변수가 부족합니다.\n{{PLURAL:$3|변수}} $3개가 있어야 하지만 $4개가 있습니다.",
+ "abusefilter-exception-regexfailure": "$1번째 글자의 \"$3\" 정규 표현식에서 오류 발생: \"$2\"",
+ "abusefilter-exception-overridebuiltin": "$1번째 문자에서 소프트웨어에 내장된 변수를 덮는 \"$2\" 변수가 있습니다.",
+ "abusefilter-exception-outofbounds": "$1번째 문자에서 존재하지 않는 목록 항목 $2(목록 길이 = $3)를 요구하고 있습니다.",
+ "abusefilter-exception-notlist": "$1번째 문자에서 배열이 아닌 배열 항목을 요구하고 있습니다.",
+ "abusefilter-action-tag": "태그",
+ "abusefilter-action-throttle": "속도 제한",
+ "abusefilter-action-warn": "경고",
+ "abusefilter-action-blockautopromote": "자동 인증 막음",
+ "abusefilter-action-block": "차단하기",
+ "abusefilter-action-degroup": "권한을 해제",
+ "abusefilter-action-rangeblock": "광역 차단하기",
+ "abusefilter-action-disallow": "불허",
+ "abusefilter-revert-title": "필터 $1로 모든 편집을 되돌리기",
+ "abusefilter-revert-intro": "이 양식을 통해 부정 행위 필터 $1이 일으킨 모든 조치를 되돌릴 수 있습니다.\n이 도구를 사용할 때 주의해주세요.",
+ "abusefilter-revert-preview-item": "$1: $2가 $4에 $3함\n되돌릴 동작: $5 ($6)",
+ "abusefilter-revert-search-legend": "부정 행위 방지 필터의 동작 중 되돌릴 동작 선택하기",
+ "abusefilter-revert-periodstart": "시작 시간:",
+ "abusefilter-revert-periodend": "마지막 시간:",
+ "abusefilter-revert-search": "명령 선택하기",
+ "abusefilter-revert-filter": "필터 ID:",
+ "abusefilter-revert-preview-intro": "다음은 이 동작을 통해 복구될 부정 행위 방지 필터의 동작의 목록입니다.\n주의를 기울여 검토한 후에 \"{{int:abusefilter-revert-confirm}}\" 버튼을 클릭하십시오.",
+ "abusefilter-revert-confirm-legend": "되돌림 확인",
+ "abusefilter-revert-confirm": "확인",
+ "abusefilter-revert-success": "[[Special:AbuseFilter/$1|필터 $2]]에 의해 취해진 모든 조치를 되돌렸습니다.",
+ "abusefilter-revert-reason": "필터 $1에 의해 취해진 모든 조치를 자동으로 되돌림.\n이유: $2",
+ "abusefilter-revert-reasonfield": "이유:",
+ "abusefilter-test": "과거의 편집에 대해 필터 시험하기",
+ "abusefilter-test-intro": "이 페이지에서 과거의 {{PLURAL:$1|바뀐 편집}} $1개에 대해 아래 상자에 입력한 필터를 시험할 수 있습니다.\n이미 존재하는 필터를 불러오려면, 아래 상자에 필터 ID를 입력하고 \"{{int:abusefilter-test-load}}\" 버튼을 클릭하십시오.",
+ "abusefilter-test-legend": "필터 시험하기",
+ "abusefilter-test-load-filter": "불러올 필터 번호:",
+ "abusefilter-test-submit": "시험",
+ "abusefilter-test-load": "불러오기",
+ "abusefilter-test-user": "편집한 사용자:",
+ "abusefilter-test-period-start": "특정 판 이후의 편집:",
+ "abusefilter-test-period-end": "특정 판 이전의 편집:",
+ "abusefilter-test-page": "바뀌는 문서:",
+ "abusefilter-test-shownegative": "필터와 일치하지 않는 편집을 보이기",
+ "abusefilter-test-syntaxerr": "입력한 구문에 오류가 있습니다.\n\"{{int:abusefilter-edit-check}}\" 버튼을 누르면 자세한 설명을 받을 수 있습니다.",
+ "abusefilter-test-badtitle": "입력하신 문서 제목이 잘못되었습니다. 제목에 사용할 수 없는 하나 이상의 문자를 포함하고 있을 수 있습니다.",
+ "abusefilter-changeslist-examine": "검사",
+ "abusefilter-examine": "특정 편집을 검사",
+ "abusefilter-examine-intro": "이 문서에서 각각의 편집에 대해 부정 행위 방지 필터가 생성한 변수를 검사하고 필터에 대해 시험해볼 수 있습니다.",
+ "abusefilter-examine-legend": "바뀐 편집 선택",
+ "abusefilter-examine-diff": "차이 URL:",
+ "abusefilter-examine-user": "사용자:",
+ "abusefilter-examine-title": "문서 제목:",
+ "abusefilter-examine-submit": "검색",
+ "abusefilter-examine-vars": "이 편집에 대해 생성된 변수",
+ "abusefilter-examine-test": "이 편집을 필터에 대해 시험하기",
+ "abusefilter-examine-test-button": "필터 시험",
+ "abusefilter-examine-match": "이 편집이 필터의 조건에 일치합니다.",
+ "abusefilter-examine-nomatch": "이 편집이 필터의 조건과 일치하지 않습니다.",
+ "abusefilter-examine-syntaxerror": "이 필터의 필터 규칙 문법이 잘못되었습니다.",
+ "abusefilter-examine-notfound": "요청한 바뀜을 찾을 수 없습니다.",
+ "abusefilter-examine-incompatible": "요청한 바뀜은 부정 행위 방지 필터에서 지원하지 않습니다.",
+ "abusefilter-examine-noresults": "제공한 검색 변수에서 결과가 없습니다.",
+ "abusefilter-topnav": "'''편집 필터 둘러보기'''",
+ "abusefilter-topnav-home": "처음",
+ "abusefilter-topnav-test": "필터 시험하기",
+ "abusefilter-topnav-examine": "과거의 편집 검토하기",
+ "abusefilter-topnav-log": "편집 필터 기록",
+ "abusefilter-topnav-tools": "디버그 도구",
+ "abusefilter-topnav-import": "필터 가져오기",
+ "abusefilter-log-name": "편집 필터 기록",
+ "abusefilter-log-header": "이 기록은 필터가 바뀜 기록의 요약본을 보여줍니다.\n자세한 정보는 [[Special:AbuseFilter/history|필터의 최근 바뀜]]을 참조하십시오.",
+ "abusefilter-logentry-create": "$1님이 $4 필터를 {{GENDER:$2|만들었습니다}} ($5)",
+ "abusefilter-logentry-modify": "$1님이 $4 필터를 {{GENDER:$2|수정했습니다}} ($5)",
+ "abusefilter-log-noresults": "결과 없음",
+ "abusefilter-diff-title": "버전 사이의 차이",
+ "abusefilter-diff-item": "항목",
+ "abusefilter-diff-version": "$2 사용자{{GENDER:$3|가}} 편집한 $1 버전",
+ "abusefilter-diff-info": "기본 정보",
+ "abusefilter-diff-pattern": "필터 규칙",
+ "abusefilter-diff-invalid": "요청한 버전을 불러올 수 없습니다.",
+ "abusefilter-diff-backhistory": "필터 역사로 돌아가기",
+ "abusefilter-diff-prev": "이전 바뀜",
+ "abusefilter-diff-next": "다음 바뀜",
+ "abusefilter-import-intro": "이 양식을 통해 다른 위키에서 필터를 가져올 수 있습니다.\n필터가 있는 위키에서 필터 편집 화면의 \"{{int:abusefilter-edit-tools}}\"에서 \"{{int:abusefilter-edit-export}}\"를 클릭하십시오.\n나타나는 글상자의 내용을 복사한 후 붙여넣고, \"{{int:abusefilter-import-submit}}\"를 클릭하십시오.",
+ "abusefilter-import-submit": "데이터 가져오기",
+ "abusefilter-group-default": "기본값",
+ "abusefilter-http-error": "HTTP 오류가 발생했습니다: $1",
+ "abusefilter-view-private-submit": "비공개 상세 정보 보기",
+ "abusefilter-view-private": "비공개 상세 정보 보기",
+ "abusefilter-view-private-reason": "비공개 상세 정보에 접근하는 이유:",
+ "abusefilter-log-details-id": "기록 ID",
+ "log-description-abusefilterprivatedetails": "이 기록은 사용자가 편집 기록의 비공개 상세 정보에 접근한 시간을 나열합니다.",
+ "abusefilter-noreason": "경고: 이 기록의 비공개 상세 정보를 보려면 이유를 지정해야 합니다.",
+ "abusefilter-log-ip-not-available": "사용할 수 없음",
+ "tag-abusefilter-condition-limit": "조건 제한에 도달했습니다",
+ "apihelp-abusefiltercheckmatch-description": "편집 필터가 변수 집합, 편집자가 기록한 편집 필터 이벤트와 일치하는지 확인합니다.\n\nvars, rcid 또는 logid가 필요하지만 오직 하나만 사용할 수 있습니다.",
+ "apihelp-abusefiltercheckmatch-summary": "편집 필터가 변수 집합, 편집자가 기록한 편집 필터 이벤트와 일치하는지 확인합니다.",
+ "apihelp-abusefiltercheckmatch-extended-description": "vars, rcid, 또는 logid가 필요하지만 오직 하나만 사용할 수 있습니다.",
+ "apihelp-abusefiltercheckmatch-param-filter": "일치하는 항목을 확인하기 위한 전체 필터 텍스트입니다.",
+ "apihelp-abusefiltercheckmatch-param-vars": "시험을 위해 JSON으로 인코딩된 변수들의 배열입니다.",
+ "apihelp-abusefiltercheckmatch-param-rcid": "검사할 최근 판 번호",
+ "apihelp-abusefiltercheckmatch-param-logid": "검사할 최근 편집 필터 로그 번호",
+ "apihelp-abusefiltercheckmatch-example-1": "최근의 변경 ID 15가 단순 필터와 일치하는지 시험합니다",
+ "apihelp-abusefilterchecksyntax-description": "편집 필터의 구문을 검사합니다.",
+ "apihelp-abusefilterchecksyntax-summary": "편집 필터의 구문을 검사합니다.",
+ "apihelp-abusefilterchecksyntax-param-filter": "구문을 검사할 전체 필터 텍스트.",
+ "apihelp-abusefilterchecksyntax-example-1": "유효한 필터의 문법 검사",
+ "apihelp-abusefilterchecksyntax-example-2": "유효하지 않은 필터의 문법 검사",
+ "apihelp-abusefilterevalexpression-description": "편집 필터의 식을 검사합니다.",
+ "apihelp-abusefilterevalexpression-summary": "편집 필터의 식을 검사합니다.",
+ "apihelp-abusefilterevalexpression-param-expression": "검사할 표현식.",
+ "apihelp-abusefilterevalexpression-example-1": "간단한 표현식 검사",
+ "apihelp-abusefilterunblockautopromote-description": "편집 필터 동작으로 인해 자동 인증을 받지 못하도록 제한된 사용자의 제한을 해제합니다.",
+ "apihelp-abusefilterunblockautopromote-summary": "편집 필터 동작으로 인해 자동 인증을 받지 못하도록 제한된 사용자의 제한을 해제합니다.",
+ "apihelp-abusefilterunblockautopromote-param-user": "제한을 해제할 사용자의 계정 이름",
+ "apihelp-abusefilterunblockautopromote-example-1": "[[User:Example]]의 자동 인증 제한을 해제하기",
+ "apihelp-query+abusefilters-description": "편집 필터에 관한 세부 사항을 출력합니다.",
+ "apihelp-query+abusefilters-summary": "편집 필터에 관한 세부 사항을 표시합니다.",
+ "apihelp-query+abusefilters-param-startid": "열거하기 시작할 필터의 ID",
+ "apihelp-query+abusefilters-param-endid": "열거를 마칠 필터의 ID",
+ "apihelp-query+abusefilters-param-show": "이 조건을 만족하는 필터만 출력하기.",
+ "apihelp-query+abusefilters-param-limit": "열거할 필터의 최대 개수",
+ "apihelp-query+abusefilters-param-prop": "얻고자 하는 속성",
+ "apihelp-query+abuselog-example-1": "최근 기록 보기",
+ "apihelp-query+abuselog-example-2": "[[API]]의 최근 기록 보기",
+ "apierror-abusefilter-canttest": "편집 필터를 테스트할 권한이 없습니다.",
+ "apierror-abusefilter-cantcheck": "편집 필터의 문법을 검사할 권한이 없습니다.",
+ "apierror-abusefilter-badsyntax": "필터에 유효하지 않은 문법이 있습니다."
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/krc.json b/www/wiki/extensions/AbuseFilter/i18n/krc.json
new file mode 100644
index 00000000..41f3e927
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/krc.json
@@ -0,0 +1,28 @@
+{
+ "@metadata": {
+ "authors": [
+ "Iltever",
+ "Ernác"
+ ]
+ },
+ "abuselog": "Джорукъдан чыгъыуланы журналы",
+ "abusefilter-log-search-title": "Башлыкъ:",
+ "abusefilter-log-search-wiki": "Википроект:",
+ "abusefilter-log-search-submit": "Изле",
+ "abusefilter-log-detailedentry-local": "$1 фильтрни",
+ "abusefilter-log-detailslink": "айгъакълаула",
+ "abusefilter-log-diff": "башх.",
+ "abusefilter-log-noactions": "джокъду",
+ "abusefilter-log-linkoncontribs": "джорукъдан чыгъыуланы журналы",
+ "abusefilter-log-hide-reason": "Чурум:",
+ "abusefilter-logentry-suppress": "[[$1]] джашыр",
+ "abusefilter-logentry-unsuppress": "[[$1]] кёгюз",
+ "abusefilter-list-id": "Фильтрни ID'си",
+ "abusefilter-list-status": "Статус",
+ "abusefilter-list-edit": "Тюрлендир",
+ "abusefilter-list-details": "Айгъакълаула",
+ "abusefilter-list-limit": "Бетлени саны:",
+ "abusefilter-disabled": "Джукъланыбды",
+ "abusefilter-list-options": "Параметрле",
+ "abusefilter-list-options-submit": "Джангырт"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/kri.json b/www/wiki/extensions/AbuseFilter/i18n/kri.json
new file mode 100644
index 00000000..c048fcc6
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/kri.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "Jose77",
+ "Protostar"
+ ]
+ },
+ "abusefilter-log-search-submit": "Sarch",
+ "abusefilter-list-edit": "Èdit",
+ "abusefilter-edit-history": "Istri"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/krl.json b/www/wiki/extensions/AbuseFilter/i18n/krl.json
new file mode 100644
index 00000000..f35dfb45
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/krl.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Mashoi7"
+ ]
+ },
+ "abusefilter-list-edit": "Kohentele"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/ksh.json b/www/wiki/extensions/AbuseFilter/i18n/ksh.json
new file mode 100644
index 00000000..c81444b8
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/ksh.json
@@ -0,0 +1,435 @@
+{
+ "@metadata": {
+ "authors": [
+ "Purodha",
+ "Matma Rex"
+ ]
+ },
+ "abusefilter-desc": "Dä Meßbruchsfelter deit Änderunge aan Sigge met Heurestikke pröfe.",
+ "abusefilter": "Ennschtällonge för der Meßbruchsfelter",
+ "abuselog": "Et Logbohch vum Meßbruchsfelter",
+ "abusefilter-intro": "Dach!\nHee kanns De Meßbruchsfelter verwallde, aanläje, ändere, fott maache, aan- un ußschallde.\nMeßbruchsfelter sin Projramme, woh mer automahtesch met heurestesche Meddel op de Metmaacher ier Akßuhne oppaß un automahtesch drop antwoodt.\n\nUnge es en Leß met de aanjlaate Felter, woh De eröm draan moodelle kanns.",
+ "abusefilter-mustbeeditor": "För sesher ze sen, künne nur Metmaacher di Sigg hee aanloore, di och Feltere aanlääje un ändere dörve.",
+ "abusefilter-warning": "'''Opjepaß''': Mer han ene Automaht, dä hät dat, wat De jraad\naffjeschek häs, als wahscheinlesche Kappes odder Meßß ennjeschtohf.\nBeschtußte Änderonge wähde su odder su flöck retuhr jenumme.\nUßjemaate un besönders vill extra beschtußte Änderonge sorrje doför,\ndat Dinge Zohjang heh jeschpächt weed: Dinge Nahme als Metmaacher, odder\nde <i lang=\"en\">IP</i>-Addreß vun Dingem Kompjuhter, odder alle beeds sen dann betroffe.\nWann De ävver meins, dat Ding Änderong johd es — Automahte künne\nschlihßlesch och ens donävve lijje — dann donn räujesch noch ens op\n„{{int:savearticle}}“ kleke, öm dat ze beschtähtejje. Dann weet se aanjenumme.\nDäm Automat sing Rääjel koot explezeet, di do jejreffe hät, es: $1",
+ "abusefilter-disallowed": "Unser Automaht för et Prööfe hät dat, wat De jraad affjescheck häs, als verbodde ennjeshtoof. Wann De ävver meins, dat Ding Änderong joot es —\nAutomahte künne ens donevve lijje — dann donn dat enem Wiki-Köbes\nverzälle, un schriiv och op, wat De donn wollts.\nDäm Automaht sing Rääjel koot explezeet, di do jegreffe hät, es: $1",
+ "abusefilter-blocked-display": "Unser Automaat för et Prööfe, dä hät dat, wat De jraad affjescheck häs,\nals verbodde ennjeshtoof, un hät et nit zojelohße. Öm dat Wiki hee ze\nschöze, es och Dinge Zohjang jeshperrt woode: Dinge Name als Metmaacher,\nun de IP-Addreß vun Dingem Kompjuter, sen dofun betroffe.\nWann De ävver meins, dat Ding Änderong joht wohr — Automahte künne schliißlesch ens donävve lijje — dann verzäll dat enem Wikki-Köhbeß.\nDäm Automaht sing Rääjel koot explezeet, di do jegreffe hät: $1",
+ "abusefilter-degrouped": "Unser Automaht för et Prööfe hät dat, wat De jraad affjescheck häs,\nals verbodde ennjeshtoof, un hät et nit zojelohße. Weil mer vermoode,\ndat Dinge Zohjang hee jeknack woodt, ham_mer dämm uß Vörseesch ens all\nsing Rääschte affjenumme.\nWann De ävver meins, dat Ding Änderong joot woor — Automaate künne\nschliißlesch och ens donevve lijje — verzäll dat enem Bürrokraad, un och\nworöm dat joot wohr, un wann De Jlöck häs, kriß De Ding Rääschde widder.\nDäm Automat sing Rääjel koot explezeet, di do jegreffe hät: $1",
+ "abusefilter-autopromote-blocked": "Unser Automaat för et Prööfe hät dat, wat De jraad affjescheck häs, als\nverbodde ennjeshtoof un nit zohjelooße. Zor Sescherheit, häs de vun dä\nautomattesch verjovve Rääschte för Metmaacher, e paa op Zick verloore.\nDäm Automat sing Rääjel koot explezeet, di do jegreffe hät: $1",
+ "abusefilter-blocker": "Meßbruchsfelter",
+ "abusefilter-blockreason": "Automaattesch jeschpächt vum Meßbruchsfelter.\nDi Rääjel koot explezeet, di do jegreffe hät: $1",
+ "abusefilter-degroupreason": "Rääschte automaatesch fottjenumme vum Meßbruchsfelter.\nDi Rääjel koot explezeet, di do jegreffe hät: $1",
+ "abusefilter-accountreserved": "Dä Nahme för ene Metmaacher es nit mih frei.\nDä es för däm Meßbruchsfelter sing Akßjuhne resävveht.",
+ "right-abusefilter-modify": "Meßbruchsfeltere ändere",
+ "right-abusefilter-view": "Meßbruchsfeltere aanloore",
+ "right-abusefilter-log": "De Meßbruchsfeltere ier Logbooch lesse",
+ "right-abusefilter-log-detail": "En de Meßbruchsfeltere ierem Logbooch de Einzelheite beloore",
+ "right-abusefilter-private": "En de Meßbruchsfeltere ierem Logbooch de private Einzelheite beloore",
+ "right-abusefilter-modify-restricted": "Meßbruchsfeltere met Akßjuhne änndere, di besönder Rääschde nühdesch han",
+ "right-abusefilter-revert": "Alle Anderonge zeröck nämme, di ene beschtemmpte Meßbruchsfelter jemaat hät",
+ "right-abusefilter-view-private": "Privaate Meßbruchsfelter aanloore",
+ "right-abusefilter-log-private": "As „$prevaat“ makeete Endrääsch em Logbooch beloore",
+ "right-abusefilter-hide-log": "Enndrääsch em Logbooch vum Meßbruchsfelter vershteishe",
+ "right-abusefilter-hidden-log": "Verschtoche Enndrääsch em Logbohch vum Meßbruchsfelter belohre",
+ "right-abusefilter-modify-global": "De alljemeine Meßbruchsfeltere aanlääje udder verändere",
+ "action-abusefilter-modify": "Do darfs kein Meßbruchsfeltere ändere",
+ "action-abusefilter-view": "Do darfs kein Meßbruchsfeltere aanbeloore",
+ "action-abusefilter-log": "De darfs nit en dä Meßbruchsfeltere ier Logbooch erin loore",
+ "action-abusefilter-log-detail": "\nDe darfs nit en dä Meßbruchsfeltere ierem Logbooch en de Einzelheite erin loore",
+ "action-abusefilter-private": "De darfs nit en dä Meßbruchsfeltere ierem Logbooch en de private Date erin loore",
+ "action-abusefilter-modify-restricted": "De darfs nit aan Meßbruchsfeltere erömänndere, met Akßjuhne, di besönder Rääschde nühdesch han",
+ "action-abusefilter-revert": "Do darfs nit alle Anderunge zeröck nämme, di ene beschtemmpte Meßbruchsfelter jemaat hät",
+ "action-abusefilter-view-private": "privaate Meßbruchsfelter aanzeloore",
+ "abusefilter-log": "Logbooch fum Mißbruchsfelter",
+ "abusefilter-log-summary": "Dat Logbohch zeijsch all dat, woh ene Meßbruchsfelter drop aanjeshpronge es.",
+ "abusefilter-log-search": "Don em Meßbruchsfelter-Logbohch söke",
+ "abusefilter-log-search-user": "Metmaacher:",
+ "abusefilter-log-search-filter": "Kännonge för Felter-Räjelle, met |-Schtresche derzwesche:",
+ "abusefilter-log-search-title": "Övverschreff:",
+ "abusefilter-log-search-wiki": "Wiki:",
+ "abusefilter-log-search-submit": "Söhke!",
+ "abusefilter-log-entry": "$1: {{GENDER:$8|dä|et|dä Metmaacher|dat|de}} $2 hät met „$3“ op dä Sigg $4 \nder Meßbruchsfelter op der Plan jeroofe, un dä däät dat: $5. De Rääjel explezehrt: $6.",
+ "abusefilter-log-entry-withdiff": "$1: {{GENDER:$2|dä|et|dä Metmaacher|dat|de}} $2 hät met „$3“ op dä Sigg $4\ndä Meßbruchsfelter op der Plan jerohfe, un dä däät dat: $5.\nDe Rääjel explezeet: ''$6'' ($7){{GENDER:$8|}}",
+ "abusefilter-log-detailedentry-meta": "$1: {{GENDER:$2|dä|et|dä Metmaacher|dat|de}} $2 hät met „$4“ op dä Sigg $5\ndäm $3 jetroffe,\nun dä Felter hät: $6. De Rääjel explezeet: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "jemeinsame Felter $1 för diverse Wikis",
+ "abusefilter-log-detailedentry-local": "Meßbruchsfelter sing Rääjel $1",
+ "abusefilter-log-detailslink": "Einzelheite aanloore",
+ "abusefilter-log-diff": "Ongerscheid",
+ "abusefilter-log-hidelink": "Aanzeije udder vershteishe",
+ "abusefilter-log-details-legend": "Einzelheite för dä Logbooch-Endraach $1",
+ "abusefilter-log-details-var": "Parrameeter\nNahme",
+ "abusefilter-log-details-val": "Wäät",
+ "abusefilter-log-details-vars": "Parrameetere för de Akßjuhne",
+ "abusefilter-log-details-private": "Private Date",
+ "abusefilter-log-details-ip": "De IP-Address fun däm, dä et jweese wohr",
+ "abusefilter-log-noactions": "kei",
+ "abusefilter-log-details-diff": "De Änderonge",
+ "abusefilter-log-linkoncontribs": "Logbooch vum Meßbruchsfelter",
+ "abusefilter-log-linkoncontribs-text": "Logbooch fum Meßbruchsfelter för dä Metmaacher",
+ "abusefilter-log-hidden": "(verschtoche Enndraach)",
+ "abusefilter-log-hidden-implicit": "(verschtoche, di Väsjohn es fottjeschmeße)",
+ "abusefilter-log-cannot-see-details": "Do häs nit dat Rääsch, de Einzelheite vun heh däm Endraach ze beloore.",
+ "abusefilter-log-details-hidden": "Do kanns de Einzelheite vun däm Enndraach nit beloore, weil dä för de Öffentleschkeit vershtoche es.",
+ "abusefilter-log-private-not-included": "Onger dä enjejovve Kännonge för Felter sinn_er wälsche, woh De nit et Rääsch häs, se ze belohre. Döm ham_mer di och nit jesöhk.",
+ "abusefilter-log-hide-legend": "Endraach em Logbooch vershteishe",
+ "abusefilter-log-hide-id": "Kännong vum Endraach em Logbooch:",
+ "abusefilter-log-hide-hidden": "Donn dä Enndraach vör de Öffentleschkeit vershteishe",
+ "abusefilter-log-hide-reason": "Jrond:",
+ "abusefilter-log-hide-forbidden": "Do häs nit et Rääsch, Enndrääsch em Meßbruchsfelter singem Logbooch ze versteishe",
+ "abusefilter-logentry-suppress": "hät „[[$1]]“ vershtoche",
+ "abusefilter-logentry-unsuppress": "hät „[[$1]]“ wider seeschbaa jemaat",
+ "logentry-abusefilter-hit": "{{GENDER:$1|Dä|Et}|Dä Metmaacher|De|Dat} lhät met „$5“ op dä Sigg „$3“ dä Felter $4 usjelöös, un dä hät bewirk: $6 ($7)",
+ "abusefilter-management": "Meßbruchsfellter Verwallde",
+ "abusefilter-list": "All Feltere",
+ "abusefilter-list-id": "Felter-Räjel",
+ "abusefilter-list-status": "Zostand",
+ "abusefilter-list-public": "Öffentlesch Beschrievong",
+ "abusefilter-list-consequences": "De Follje, wann jetroffe",
+ "abusefilter-list-visibility": "Seeschba?",
+ "abusefilter-list-hitcount": "Jezallte Treffer",
+ "abusefilter-list-edit": "Ändere",
+ "abusefilter-list-details": "Einzelheite",
+ "abusefilter-list-limit": "De Aanzahl pro Sigg:",
+ "abusefilter-list-lastmodified": "Et lez jeändert vum aam",
+ "abusefilter-list-group": "Felterjropp",
+ "abusefilter-hidden": "Nit öffentlesch",
+ "abusefilter-unhidden": "Öffentlesch",
+ "abusefilter-enabled": "Aanjeschalldt",
+ "abusefilter-deleted": "Fottjeschmeße",
+ "abusefilter-disabled": "Ußjeschalldt",
+ "abusefilter-hitcount": "{{PLURAL:$1|Eine Treffer|$1 Treffer|-nix-}}",
+ "abusefilter-new": "En neuje Felter-Rääjel aanlähje",
+ "abusefilter-return": "Jangk retuhr noh dem Meßbruchsfelter singe Ennschtällonge",
+ "abusefilter-status-global": "jemeinsam",
+ "abusefilter-list-options": "Ennschtällonge",
+ "abusefilter-list-options-deleted": "Fottjeschmeße&nbsp;Feltere:",
+ "abusefilter-list-options-deleted-only": "Bloß de fottjeschmeße Feltere zeije<br />",
+ "abusefilter-list-options-deleted-hide": "De fottjeschmeße Feltere ußblende<br />",
+ "abusefilter-list-options-deleted-show": "De fottjeschmeße Feltere metaanzeije<br />",
+ "abusefilter-list-options-scope": "Zeisch de Feltere:",
+ "abusefilter-list-options-scope-local": "Blohß vun heh däm Wikki",
+ "abusefilter-list-options-scope-global": "Blohß alljemein Rääjelle",
+ "abusefilter-list-options-scope-all": "Beids",
+ "abusefilter-list-options-disabled": "Ußjeschalldt Feltere:",
+ "abusefilter-list-options-hidedisabled": "ußblende",
+ "abusefilter-list-options-submit": "Lohß Jonn!",
+ "abusefilter-tools-text": "Hee fengks De paa Werkzüch för beim Opboue ze hellfe för Rääjelle för dä Meßbruchsfelter un zom Fäähler Erußklamüüsere.",
+ "abusefilter-tools-expr": "Ußdröck ußprobeere",
+ "abusefilter-tools-submitexpr": "Felter Pröfe!",
+ "abusefilter-tools-reautoconfirm": "Dä Metmaacher widder bei de „{{int:group-autoconfirmed}}“ beidonn",
+ "abusefilter-tools-reautoconfirm-user": "Metmaacher:",
+ "abusefilter-tools-reautoconfirm-submit": "Loß Jonn!",
+ "abusefilter-reautoconfirm-none": "{{GENDER:$1|Dä|Dat|Dä Metmaacher|Dat|De}} „$1“ es bei de „{{lcfirst:{{int:group-autoconfirmed}}}}“ jeblevve.",
+ "abusefilter-reautoconfirm-notallowed": "Do häs nit dat Rääsch, ene Metmaacher retuur bei de „{{int:group-autoconfirmed}}“ ze donn.",
+ "abusefilter-reautoconfirm-done": "Dä Metmaacher es retuur bei de „{{int:group-autoconfirmed}}“.",
+ "abusefilter-status": "{{PLURAL:$1|De letzte Akßjuhn hät|Unger de letzte $1 Akßuhne {{PLURAL:$2|hädd_er eine|hann_er $2|hät kein}}|Kein Akßuhn hät}}\nde Jränz fun {{PLURAL:$4|ein|$4|nix}} jetroffe odder övverschredde.\nDat woren_er $3%.\n{{PLURAL:$5|Ein dovun es|Dovun sinn_er $5|Keine dovun es}} vun enem aktoäll aktive Fellter jejreffe woode.\nDat woren_er $6%.",
+ "abusefilter-edit": "Der Meßbruchsfelter enschtälle",
+ "abusefilter-edit-subtitle": "Felter-Räjel „$1“ beärbeide",
+ "abusefilter-edit-subtitle-new": "Ben ene Felter aam aanlääje",
+ "abusefilter-edit-oldwarning": "<strong>Do bes hee en äldere Väsjohn vun däm Felter aam ändere.\nDe aanjejovve Schtatistike sin ävver för de neuste Väsjohn fun däm Felter.\nWann De Ding Änderonge afschpeishere deihß, dann sin all de Änderonge\nun Äjänzonge fott, di schpääder derbei jekumme sen.</strong> &bull;\n[[Special:AbuseFilter/history/$2|Jangk zeröck op däm Felter sing Väsjohne]].",
+ "abusefilter-edit-status-label": "Zahle un Schtatistike:",
+ "abusefilter-edit-status": "{{PLURAL:$1|De letzte Akßjuhn woodt|Unger de letzte $1 Akßjuhne {{PLURAL:$2|woor_er ein, die|wooren_er $2, die|wood kein}}|Kein Akßjuhn woodt}} vun dämm Felter hee opjejreff{{PLURAL:$1|e|{{PLURAL:$2|e wood|e woode|e}}|e}}. Dat sinn_er $3% jewääse.",
+ "abusefilter-edit-status-profile": "{{PLURAL:$1|De letzte Akßjuhn woodt|Unger de letzte $1 Akßjuhne {{PLURAL:$2|woor_er ein, die|wooren_er $2, die|wood kein}}|Kein Akßjuhn woodt}} vun dämm Felter hee opjejreff{{PLURAL:$1|e|{{PLURAL:$2|e wood|e woode|e}}|e}}. Dat sinn_er $3% jewääse.\nEm Schnett deiht hä {{PLURAL:$4|ein Millisekund|$4 Millisekunde|kein Millisekund}} bruche, un {{PLURAL:$5|ein Bedengung|$5 Bedengunge|kei Bedengunge}} vun de zohjelohße hühßte Zahl.",
+ "abusefilter-edit-new": "Neu Felter-Räjel",
+ "abusefilter-edit-save": "Faßhallde",
+ "abusefilter-edit-id": "Felter-Räjel-Nommer:",
+ "abusefilter-edit-description": "Beschrievong:\n:''(Öffentlesch)''",
+ "abusefilter-edit-group": "Felterjropp:",
+ "abusefilter-edit-flags": "Fähnscher:",
+ "abusefilter-edit-enabled": "Don de Felter-Räjel enschallde",
+ "abusefilter-edit-deleted": "Als fottjeschmeße makkeere",
+ "abusefilter-edit-hidden": "Don de Einzelheite fun dä Felter-Räjel nit öffentlesch zeije",
+ "abusefilter-edit-global": "Donn dä Felter jemeinsam för diverse Wikis aanwende",
+ "abusefilter-edit-rules": "Bedengonge:",
+ "abusefilter-edit-notes": "Bemärkonge:",
+ "abusefilter-edit-lastmod": "Et lez jeändert:",
+ "abusefilter-edit-lastmod-text": "$2 $1",
+ "abusefilter-edit-hitcount": "Treffer:",
+ "abusefilter-edit-consequences": "De Akßjuhne zom Maache, wann dä Felter jriif",
+ "abusefilter-edit-action-warn": "Donn dat maache, nohdämm dä Metmaacher en Warnung krääje hät.",
+ "abusefilter-edit-action-disallow": "Loß dä Metmaacher dat nit maache, wat hä donn wullt",
+ "abusefilter-edit-action-blockautopromote": "Donn däm Metmaacher singe Rääschde als enne beschtäteschte Metmaacher fott nämme",
+ "abusefilter-edit-action-degroup": "Donn dä Metmaacher uß alle Jroppe met besöndere Rääschte ußdraare",
+ "abusefilter-edit-action-block": "Donn dä Metmaacher un/odder de IP Addreß för et Ändere sperre",
+ "abusefilter-edit-action-throttle": "Waat met dä Akßjuhn, bes dä Metmaacher dat zoo öff versöhk hät, su dat hä övver en beshtemmpte Jrens erövver kütt.",
+ "abusefilter-edit-action-rangeblock": "Don de /16-er IP-Berett sperre, vun woh dä Metmaacher kohm.",
+ "abusefilter-edit-action-tag": "Don de Änderong makkehre, för se schpääder nohzeloore.",
+ "abusefilter-edit-throttle-count": "De Aanzahl zojelohße Akßjuhne:",
+ "abusefilter-edit-throttle-period": "De Door fun dä Zigg:",
+ "abusefilter-edit-throttle-seconds": "{{PLURAL:$1|Ein Sekund|$1 Sekunde|Kein Sekund}}",
+ "abusefilter-edit-throttle-groups": "Donn de Bremse en Jroppe, noh:\n:''(eine en en Reih, met Kommas dozwesche)''",
+ "abusefilter-edit-warn-message": "Dä Name för en Nohreesch, för domet ze warne:",
+ "abusefilter-edit-warn-other": "Ander Nohreesch",
+ "abusefilter-edit-warn-other-label": "Dä Sigge-Tittel för de ander Nohreesch:\n:(oohne <code>MediaWiki:</code> doför)",
+ "abusefilter-edit-warn-actions": "Akßjuhne:",
+ "abusefilter-edit-warn-preview": "De ußjesoohte Nohreesch ier Vör-Ansich zeije",
+ "abusefilter-edit-warn-edit": "De ußjesohte Nohreesch aanlääje udder ändere",
+ "abusefilter-edit-tag-tag": "De [[Special:Tags|Makkehronge]] för aan de Änderong ze pappe, jehde schöhn äxtra, en en Reih för sesch jeschrevve:",
+ "abusefilter-edit-denied": "Do kanns de Einzelheite vun däm Fellter nit belohre, weil se nit för de Öffentleschkeit freijejovve sen.",
+ "abusefilter-edit-main": "Parrameetere för dä Felter",
+ "abusefilter-edit-done-subtitle": "Felter jeändert",
+ "abusefilter-edit-done": "[[Special:AbuseFilter/history/$1/diff/prev/$2|Ding Änderonge]] aam [[Special:AbuseFilter/$1|Fellter „$3“]] sin ennjedraare.",
+ "abusefilter-edit-badsyntax": "En däm Fellter, dä De aanjejovve häs, es ene Fähler dren.\nDat Projramm för de Süntaks ze prööfe, säät: <pre>$1</pre>",
+ "abusefilter-edit-restricted": "Dä Felter hee darfs De nit ändere. Der Jrond is, dat winischßdens ein\nAkßjuhn do dren es, woh mer e extra Rääsch för bruch. Bes esu joot, un\ndonn ene Metmaacher dröm frore, dat ze maache, dä dat Rääsch hät.",
+ "abusefilter-edit-viewhistory": "Beloor däm Felter sing verjange Versione",
+ "abusefilter-edit-history": "Versione bes jetz:",
+ "abusefilter-edit-check": "De Süntaks prööfe",
+ "abusefilter-edit-badfilter": "Dä aanjejovve Felter jidd_et jaa nit.",
+ "abusefilter-edit-revert": "Donn de Änderunge widder ophävve, di dä Fellter jemaat hät",
+ "abusefilter-edit-tools": "Werkzüch:",
+ "abusefilter-edit-test-link": "Donn dä Fellter an de neuste Änderunge ußprobeere",
+ "abusefilter-edit-export": "Donn dä Felter för en ander Wiki expotteere",
+ "abusefilter-edit-syntaxok": "Keine Fähler en de Syntax jefonge.",
+ "abusefilter-edit-syntaxerr": "Ene Fähler woodt en de Syntax jefonge: $1",
+ "abusefilter-edit-bad-tags": "Eine udder mih vun dä Makkehronge sin verkehrt, di De aanjejovve häs.\nMakkehrong sullte koot sin, un et sullte kein Sönderzeijsche dren vörkumme.",
+ "abusefilter-edit-notallowed": "Do häß nit dat Rääsch, Meßbruchßfelter aanzelääje udder öm_ze_ändere",
+ "abusefilter-edit-notallowed-global": "Do häs nit et Rääsch, alljemeine Meßbruchsfeltere aanzelääje udder se ze verändere",
+ "abusefilter-edit-notallowed-global-custom-msg": "För alljemen Felltere jidd_et kein selfs jemaate Warnonge.",
+ "abusefilter-edit-builder-select": "Donn ein fun dä Müjjeleschkeite uß dä Leß hee ußwähle, öm se onge aan dä Possizjuhn enzefööje, woh de jraadt aam Schriive bes, woh Dinge Kööser shteiht.",
+ "abusefilter-edit-builder-group-op-arithmetic": "Zom Räschne",
+ "abusefilter-edit-builder-op-arithmetic-addition": "zosamme zälle (<code>+</code>)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "afftrecke (<code>-</code>)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "molnämme (<code>*</code>)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "deile (<code>/</code>)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "der Rääß bem Deile (<code>%</code>)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "huhnämme, pottenzeere (<code>**</code>)",
+ "abusefilter-edit-builder-group-op-comparison": "zom Verjlische",
+ "abusefilter-edit-builder-op-comparison-equal": "ejaal met, jlisch (<code>==</code>)",
+ "abusefilter-edit-builder-op-comparison-notequal": "unejaal, nit jlisch (<code>!=</code>)",
+ "abusefilter-edit-builder-op-comparison-lt": "äsch kleiner wie … (<code><</code>)",
+ "abusefilter-edit-builder-op-comparison-gt": "ääsch jrüßer wie … (<code>></code>)",
+ "abusefilter-edit-builder-op-comparison-lte": "kleiner wi … odder et sellve (<code><=</code>)",
+ "abusefilter-edit-builder-op-comparison-gte": "jrüßer wi … odder et sellve (<code>>=</code>)",
+ "abusefilter-edit-builder-group-op-bool": "zom Äntscheide (Jo/Nä, <i lang=\"en\">Bool</i>sche Rääschnerei)",
+ "abusefilter-edit-builder-op-bool-not": "nit, et Jäjedeil (<code>!</code>)",
+ "abusefilter-edit-builder-op-bool-and": "un, „beeds“ (<code>&</code>)",
+ "abusefilter-edit-builder-op-bool-or": "ov, udder, „et ein, udder et ander, udder beeds“ (<code>|</code>)",
+ "abusefilter-edit-builder-op-bool-xor": "XOR, exklusief-udder, „et ein, udder et ander, ävver nit beeds“ (^)",
+ "abusefilter-edit-builder-group-misc": "Söns jet",
+ "abusefilter-edit-builder-misc-in": "en dä Bochstave-Reih enthallde (<code lang=\"en\">in</code>)",
+ "abusefilter-edit-builder-misc-like": "Paß op e Muster (<code lang=\"en\">like</code>)",
+ "abusefilter-edit-builder-misc-rlike": "Paß med enem rejolähre Ußdrok zosamme (<code lang=\"en\">rlike</code>)",
+ "abusefilter-edit-builder-misc-irlike": "Paß op ene rejolähre Ußdrok, ohne op jruß udder klein Schref ze aade (<code lang=\"en\">irlike</code>)",
+ "abusefilter-edit-builder-misc-contains": "Dat Woot odder dä Ußdrock op de rääschte Sigk eß en däm op de lenke Sigk änthallde (<code lang=\"en\">contains</code>)",
+ "abusefilter-edit-builder-misc-stringlit": "En Zeiche_Reih, zwesche \"\"",
+ "abusefilter-edit-builder-misc-tern": "Dä dreiställije Operator <code>(X ? Y : Z)</code>",
+ "abusefilter-edit-builder-misc-cond": "Noh en Bedengung ungerscheide (<code lang=\"en\">if X then Y else Z</code>)",
+ "abusefilter-edit-builder-group-funcs": "Funxjuhne",
+ "abusefilter-edit-builder-funcs-length": "de Aanzahl Bochstave en de Bochstave-Reih (<code lang=\"en\">length</code>)",
+ "abusefilter-edit-builder-funcs-lcase": "dat sellve nur en Kleinboochstave (<code lang=\"en\">lcase</code>)",
+ "abusefilter-edit-builder-funcs-ucase": "dat sellve nur en Jruußboochstave (<code lang=\"en\">ucase</code>)",
+ "abusefilter-edit-builder-funcs-ccnorm": "dat sellve nur de verwähßelba/miehdeutijje Bochstave nommaleseet (<code lang=\"en\">ccnorm</code>)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "dat sellve nur de dubbel-Bochstave us dä Reih en eifache ömjetuusch (<code lang=\"en\">rmdoubles</code>)",
+ "abusefilter-edit-builder-funcs-specialratio": "de Aanzahl Sönderzeiche jedeilt dorsch de jesamp Zahl Zeische (<code lang=\"en\">specialratio</code>)",
+ "abusefilter-edit-builder-funcs-norm": "de Bochstave nommaliseet (<code lang=\"en\">norm</code>)",
+ "abusefilter-edit-builder-funcs-count": "De Aanzahl, wie öff dä Tex X em Tex Y dren es (<code lang=\"en\">count</code>)",
+ "abusefilter-edit-builder-funcs-rcount": "De Aanzahl, wi öff dä rejolähre Ußdrok X em Täx Y dren es (<code lang=\"en\">rcount</code>)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "All Zoote Zwescheräum fottmaache (<code lang=\"en\">rmwhitespace</code>)",
+ "abusefilter-edit-builder-funcs-rmspecials": "Sönderzeische eruß schmiiße (<code lang=\"en\">rmspecials</code>)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "Es de <code lang=\"en\">IP</code>-Addräß em aanjejovve Berett? (<code lang=\"en\">ip_in_range</code>)",
+ "abusefilter-edit-builder-funcs-contains-any": "Sök en dä Zeishe-Reih noh ettlijje Deijlshtöcker (<code lang=\"en\">contains_any</code>)",
+ "abusefilter-edit-builder-funcs-substr": "Ene Deijl vun en Zeishe-Reij (<code lang=\"en\">substr</code>)",
+ "abusefilter-edit-builder-funcs-strpos": "De Possizjuhn vun enem Deijl vun en Zeishe-Reij (<code lang=\"en\">strpos</code>)",
+ "abusefilter-edit-builder-funcs-str_replace": "Ene Deijl vun en Zeishe-Reij ußtuusche jäje en ander Zeishe-Reij (<code lang=\"en\">str_replace</code>)",
+ "abusefilter-edit-builder-funcs-rescape": "Dä <i lang=\"en\">escape string</i> als nomaale Täx en enem rejolähre Ußdrok (<code lang=\"en>rescape</code>)",
+ "abusefilter-edit-builder-funcs-set_var": "Don dä Varijable ene Wäät jevve (<code lang=\"en\">set_var</code>)",
+ "abusefilter-edit-builder-group-vars": "Varrijabelle",
+ "abusefilter-edit-builder-vars-accountname": "Däm Metmaacher singe Name — wi hä ennjeresht wood",
+ "abusefilter-edit-builder-vars-timestamp": "Dä Änderong iere <code lang=\"en\">Unix</code>-Zick_Schtämpel ",
+ "abusefilter-edit-builder-vars-action": "Akßjuhn",
+ "abusefilter-edit-builder-vars-addedlines": "De Reije, di bemm Ändere dobeij jekumme sen",
+ "abusefilter-edit-builder-vars-delta": "Der Ongerscheed em Ömfang",
+ "abusefilter-edit-builder-vars-diff": "Zeich de Ungerscheide em <i lang=\"en\">unified diff</i> Fommaht",
+ "abusefilter-edit-builder-vars-newsize": "De Sigg iere neue Ömfang",
+ "abusefilter-edit-builder-vars-oldsize": "De Sigg iere vörije Ömfang",
+ "abusefilter-edit-builder-vars-removedlines": "De Reije, di bemm Ändere fott jenomme woodte",
+ "abusefilter-edit-builder-vars-summary": "{{int:summary}}",
+ "abusefilter-edit-builder-vars-article-id": "Dä Sigg ier Nummer en de Datebank",
+ "abusefilter-edit-builder-vars-article-ns": "Dat Appachtemang fun dä Sigg",
+ "abusefilter-edit-builder-vars-article-text": "De Övverschreff vun dä Sigg (der ohne Appachtemang)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "De kumplätte Övverschreff vun dä Sigg",
+ "abusefilter-edit-builder-vars-article-views": "Aanzahl Afroofe vun dä Sigg",
+ "abusefilter-edit-builder-vars-movedfrom-id": "Dä Quell-Sigg ier Nummer en de Datebank",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "Dat Appachtemang fun dä Quell-Sigg",
+ "abusefilter-edit-builder-vars-movedfrom-text": "De Övverschreff vun dä Quälle_Sigg",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "De kumplätte Övverschreff vun dä Quälle_Sigg",
+ "abusefilter-edit-builder-vars-movedto-id": "Dä Zihl-Sigg ier Kännong en de Dahtebangk",
+ "abusefilter-edit-builder-vars-movedto-ns": "Dat Appachtemang fun dä Zihl-Sigg",
+ "abusefilter-edit-builder-vars-movedto-text": "De Övverschreff vun dä Zihl_Sigg",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "De komplätte Övverschreff vun dä Zihl-Sigg",
+ "abusefilter-edit-builder-vars-user-editcount": "De Aanzahl vun däm Metmaacher singe Beidrääsch",
+ "abusefilter-edit-builder-vars-user-age": "Et Allder fun dämm Metmaacher singe Aanmeldung",
+ "abusefilter-edit-builder-vars-user-name": "Däm Metmaacher singe Nahme",
+ "abusefilter-edit-builder-vars-user-groups": "Groppe, woh dä Metmaacher dren es, och öm de Eck eröm",
+ "abusefilter-edit-builder-vars-user-rights": "De Rääschte vun enem Metmaacher",
+ "abusefilter-edit-builder-vars-user-blocked": "Of dä Metmaacher jeschpärrt es",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "de Zick, woh de Addräß fö de <i lang=\"en\">e-mail</i> beschtätesch woode es",
+ "abusefilter-edit-builder-vars-recent-contributors": "De letzte zehn Metmaacher aan dä Sigg",
+ "abusefilter-edit-builder-vars-first-contributor": "Dä eetzte Metmaacher aan dä Sigg",
+ "abusefilter-edit-builder-vars-all-links": "All de Lengks noh ußserhallef vun däm Wikki en däm neuje Enhallt vun dä Sigg",
+ "abusefilter-edit-builder-vars-added-links": "All di neue Lengks di en däm neue Enhallt vun dä Sigg dobei jekumme sen",
+ "abusefilter-edit-builder-vars-removed-links": "All de Lengks noh druße, di met dä Änderong fott jenumme woode sen",
+ "abusefilter-edit-builder-vars-old-text": "Dä ahle Wikitex en dä Sigg, wie dä för em Ändere jewääse eß",
+ "abusefilter-edit-builder-vars-new-text": "Dä neue Wikitex vun dä Sigg, noh em Ändere",
+ "abusefilter-edit-builder-vars-new-pst": "Der Wikkitäx vun dä Sigg, ald zerääschjemaat för et Faßhallde",
+ "abusefilter-edit-builder-vars-addedlines-pst": "De zohjeföhschte reihje, ald zerääschjemaat för et Faßhallde",
+ "abusefilter-edit-builder-vars-new-text-stripped": "Dä neue Tex op dä Sigg, ävver nackisch, oohne Ußzeischnunge",
+ "abusefilter-edit-builder-vars-new-html": "Dä Tex en dä neue Version vun dä Sigg, ävver ömjesaz en <i lang=\"en\">HTML</i>",
+ "abusefilter-edit-builder-vars-restrictions-edit": "Dä Sigg iere Schotz jäje et Ändere",
+ "abusefilter-edit-builder-vars-restrictions-move": "Dä Sigg iere Schotz jäje et Ömnenne",
+ "abusefilter-edit-builder-vars-restrictions-create": "Schöz di Sigg jääje Neu-Aanlääje",
+ "abusefilter-edit-builder-vars-restrictions-upload": "Der Schotz för et Huhlaade för di Dattei",
+ "abusefilter-edit-builder-vars-old-text-stripped": "Dä vörijje Tex op dä Sigg, ävver nackisch, oohne Ußzeischnunge",
+ "abusefilter-edit-builder-vars-old-links": "Lengks, di en dä ahle Sigg wore, noch för em Änndere",
+ "abusefilter-edit-builder-vars-old-html": "Dä vörijje Wikitex op dä Sigg, ävver ömjemoodelt en <i lang=\"en\">HTML</i>",
+ "abusefilter-edit-builder-vars-minor-edit": "Ov dat als en Mini-Änderong makkehrd es udder nit",
+ "abusefilter-edit-builder-vars-file-sha1": "De <code lang=\"en\">SHA1</code> Prööfsumm vum Enhalt vun dä Dattei",
+ "abusefilter-edit-builder-vars-file-size": "De Aanzahl <i lang=\"en\" xml:lang=\"en\">Bytes</i> en dä Dattei.",
+ "abusefilter-edit-builder-vars-file-mime": "De <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Multi-Purpose Internet Mail Extensions\">MIME</i>-Zoot fun dä Dattei.",
+ "abusefilter-edit-builder-vars-file-mediatype": "Mehije-Zoot vun dä Dattei",
+ "abusefilter-edit-builder-vars-file-width": "De Wigde en Pixelle",
+ "abusefilter-edit-builder-vars-file-height": "De Hühde en Pixelle",
+ "abusefilter-edit-builder-vars-file-bits-per-channel": "De Bits pro Klöhre-Kannahl",
+ "abusefilter-filter-log": "Neuste Änderonge aan Meßbruchsfeltere",
+ "abusefilter-history": "De Versione bes hück, för de Felter-Räjel met dä Nommer $1",
+ "abusefilter-history-foruser": "Änderunge {{GENDER:$1|vum|vum|Vun däm Metmaacher|vum|vun der}} $1",
+ "abusefilter-history-hidden": "Verschtoche",
+ "abusefilter-history-enabled": "enjeschalldt",
+ "abusefilter-history-global": "{{int:abusefilter-status-global}}",
+ "abusefilter-history-timestamp": "Zigg",
+ "abusefilter-history-user": "Metmaacher",
+ "abusefilter-history-public": "Öffentlesch Beschrevve",
+ "abusefilter-history-flags": "Fähnsche",
+ "abusefilter-history-filter": "Felteräjel",
+ "abusefilter-history-comments": "Kommentaa",
+ "abusefilter-history-actions": "Akßjuhne",
+ "abusefilter-history-backedit": "Zeröck nohm Felter Ändere",
+ "abusefilter-history-deleted": "Fottjelohße",
+ "abusefilter-history-filterid": "Felter",
+ "abusefilter-history-select-legend": "Et Söke verbessere, un jenouer maache",
+ "abusefilter-history-select-user": "Metmaacher:",
+ "abusefilter-history-select-submit": "Loß jonn!",
+ "abusefilter-history-diff": "Ungerscheide",
+ "abusefilter-history-error-hidden": "Dä Felter es för de Öffentleschkeit verschtoche, un Do kriß däm sing Verjangeheit un Väsjohne nit jezeisch.",
+ "abusefilter-exception-unexpectedatend": "Beim $1-te Zeiche, do deiht „$2“ nit passe.",
+ "abusefilter-exception-expectednotfound": "Beim $1-te Zeiche, do deiht e „$2“ fäähle.\nMer han shtatt dämm ävver e $3 „$4“ fevonge.",
+ "abusefilter-exception-unrecognisedkeyword": "Beim $1-te Zeiche, dat Schlösselwoot „$2“ kenne mer nit.",
+ "abusefilter-exception-unexpectedtoken": "Beim $1-te Zeiche, do paß dat „$3“ (vun dä Zoot „$2“) nit hen.",
+ "abusefilter-exception-unclosedstring": "Beim $1-te Zeiche, do fängk en Zeiche_Reih aan, woh ent Engk vun fählt.",
+ "abusefilter-exception-invalidoperator": "Beim $1-te Zeiche, e „$2“ för met ze reschne kenne mer nit.",
+ "abusefilter-exception-unrecognisedtoken": "Beim $1-te Zeiche, dat „$2“ kenne mer nit.",
+ "abusefilter-exception-noparams": "Beim $1-te Zeiche donn de Parrammeetere för de Funxjuhn „$2“ fähle.",
+ "abusefilter-exception-dividebyzero": "Beim $1-te Zeiche soll $2 dorsch Null jedeilt wääde!",
+ "abusefilter-exception-unrecognisedvar": "Beim $1-te Zeiche, de Varijable „$2“ kenne mer nit.",
+ "abusefilter-exception-notenoughargs": "Mer han nit jenooch Parrameeter för de Funxjohn „$2“, di beim $1-te Zeiche opjeroofe weedt. Mer äwaade {{PLURAL:$3|eine Parrameeter|$3 Parrameetere|keine Parrameeter}} un et {{PLURAL:$3|es nur eine Parrameeter|sinn_er $4 Parrameetere|es ävver keine Parrameeter}} doh.",
+ "abusefilter-exception-regexfailure": "En däm rejolähre Ußdrok „$3“, beim $1-te Zeische, doh es ene Fähler: ''$2''.",
+ "abusefilter-exception-overridebuiltin": "Beim $1-te Zeiche, do es ene Fähler, däm faß enjeboute Parrameeter „$2“ singe Wäät sull verändert wääde. Date jeiht ävver nit.",
+ "abusefilter-exception-outofbounds": "Beim $1-te Zeiche, do es jet donevve jejange, wi mer uß dä Leß {{PLURAL:$2|et eetste|dat $2-te|et nollte}} Denge eruß holle wullte, et {{PLURAL:$3|es ävver blooß ein|sinn_er ävver bloß $3|senn_er jaa kein}} dren.",
+ "abusefilter-exception-notlist": "Beim $1-te Zeiche, do es ene Fähler opjedouch, wi mer uß ene Leß vun enem beshtemmpte Plaaz jät eruß holle wullte, et wohr ävver jaa kei Leß.",
+ "abusefilter-action-tag": "Makkehrong",
+ "abusefilter-action-throttle": "Beschrängke",
+ "abusefilter-action-warn": "Warne",
+ "abusefilter-action-blockautopromote": "Automattesch Beshtätejung ongerdröcke",
+ "abusefilter-action-block": "Schpärre",
+ "abusefilter-action-degroup": "us Metmaacher-Jroppe eruß schmiiße",
+ "abusefilter-action-rangeblock": "dä Berett Schpärre",
+ "abusefilter-action-disallow": "Verbeede",
+ "abusefilter-revert-title": "Alle Änderonge opjrund fun dä Felter-Räjel $1 retuhr mache",
+ "abusefilter-revert-intro": "Övver dat Fommulaa kanns De alle Änderunge zeröck nämme,\ndi dä Meßbruchsfelter opjrund fun dä Felter-Räjel $1 jemaat hät.\nBes ävver förseschtesch met esu jet!",
+ "abusefilter-revert-preview-item": "$1: {{GENDER:$8|dä|et|dä Metmaacher|dat|de}} $2 hät e $3 op $4 jemaat.\nÄnderunge, di zeröck jenumme wähde: $5 ($6)",
+ "abusefilter-revert-search-legend": "Söhk dem Meßbruchsfelter sing Änderonge uß, di De retuhr jemaat han wells",
+ "abusefilter-revert-periodstart": "Dä Aanfang fum Zigkroum zom Ophävve:",
+ "abusefilter-revert-periodend": "Et Engk fun däm Zigkroum zom Ophävve:",
+ "abusefilter-revert-search": "Änderonge ußsöhke",
+ "abusefilter-revert-filter": "Felter:",
+ "abusefilter-revert-preview-intro": "Heh küt de Leß met däm Meßbruchsfelter singe Akßjuhne, di jez retuur jemaat wäde.\nDonn se joot aanbekike, un donn dann „{{int:abusefilter-revert-confirm}}“ klecke, öm Ding Ußwahl ze beschtähtejje.",
+ "abusefilter-revert-confirm": "Jo, su soll et sin!",
+ "abusefilter-revert-success": "Do häs alle Änderunge zeröck jenumme, di dä Meßbruchsfelter opjrund fun dä [[Special:AbuseFilter/$1|Räjel $2]] jemaat hät.",
+ "abusefilter-revert-reason": "Alle Ännderonge zeröck nämme, di dä Meßbruchßfelter opjrond vun dä Räjel $1 jemaat hät. Der aanjejovve Jrond es: $2",
+ "abusefilter-revert-reasonfield": "Der Jrond:",
+ "abusefilter-test": "Donn dä Felter met fröjere Änderonge ußprobeere",
+ "abusefilter-test-intro": "Heh met kanns De ene Fellter övverpröhfe aan de {{PLURAL:$1|de läzde Änderong|de $1 {{lcfirst:{{int:recentchanges}}}}|nix, mer han nämmlesch kein läzde Änderong}} em Wiki.\nÖm ene Felter jelaade ze krejje, dä ald doh es, donn däm sing Kännong in däm Fäld onger däm Kaste enjävve, un donn op dä Knopp „{{int:abusefilter-test-load}}“ klecke.",
+ "abusefilter-test-legend": "Felter Pröfe",
+ "abusefilter-test-load-filter": "Felter-Räjel för zem Laade:",
+ "abusefilter-test-submit": "Pröfe!",
+ "abusefilter-test-load": "Lade!",
+ "abusefilter-test-user": "Änderonge fun däm Metmaacher:",
+ "abusefilter-test-period-start": "De Änderonge donoh:",
+ "abusefilter-test-period-end": "De Änderonge doför:",
+ "abusefilter-test-page": "Änderonge, di aan dä Sigg jemaat woode sin:",
+ "abusefilter-test-shownegative": "Zeisch de Änderonge, di dä Felter nit jrief",
+ "abusefilter-test-syntaxerr": "Ding Räjel för dä Fellter hät en kapodde Süntaks.\nWann De dat jenouer explizehrt han wells, dann donn dä Knopp „{{int:abusefilter-edit-check}}“ klecke.",
+ "abusefilter-test-badtitle": "Do häs en Övverschreff fö di Dattei enjejovve, di mer nit bruche kann. Et künnte Zeische dren sin, di en Övverschreffte nit müjjelesch sin.",
+ "abusefilter-changeslist-examine": "jenou aankike",
+ "abusefilter-examine": "Einzel Änderonge jenou aankike",
+ "abusefilter-examine-intro": "Op dä Sigg heh kanns De de Dahte enspezehre, di dä Meßbruchsfelter uß en beschtemmpte Änderong aam Wikki erußjetrocke hät, un Do kanns domet och einzel Räjelle pröhve.",
+ "abusefilter-examine-legend": "Ußjesoohte Änderonge",
+ "abusefilter-examine-diff": "Dä <i lang=\"en\">URL</i> för di Väsjohne ze verjliische:",
+ "abusefilter-examine-user": "Metmaacher:",
+ "abusefilter-examine-title": "Siggetittel:",
+ "abusefilter-examine-submit": "Söhke!",
+ "abusefilter-examine-vars": "Dem Felter sing Dahte för di Änderong",
+ "abusefilter-examine-test": "Donn di Änderong hee jäje ene Felter pröhfe",
+ "abusefilter-examine-test-button": "Dä Felter ußprobeere!",
+ "abusefilter-examine-match": "Dä Felter hät op di Änderong jepaß.",
+ "abusefilter-examine-nomatch": "Dä Felter hät nit op de Änderong jepaß.",
+ "abusefilter-examine-syntaxerror": "Dä Felter hät en onjöltijje Opbou odder Forrem",
+ "abusefilter-examine-notfound": "Di Änderong, di De häs han welle, kunnt nit jefonge wähde.",
+ "abusefilter-examine-incompatible": "Di Änderong, di De häs han welle, weet vum Meßbruchsfelter nit ongerschtöz.",
+ "abusefilter-examine-noresults": "För wat De zom Söhke aanjejovve häs, do ham_mer nix jefonge.",
+ "abusefilter-topnav": "''Meßbruchsfelter:''",
+ "abusefilter-topnav-home": "Jangk op der Aanfang",
+ "abusefilter-topnav-test": "Em Knubbel pröfe",
+ "abusefilter-topnav-examine": "Övver de {{lcfirst:{{int:recentchanges}}}} pröfe",
+ "abusefilter-topnav-log": "Logbohch övver der Meßbruchsfelter ier Wirke",
+ "abusefilter-topnav-tools": "Werkzüch för Fähler ze fenge",
+ "abusefilter-topnav-import": "Feltere Empotteere",
+ "abusefilter-log-name": "Et Logbohch övver de Meßbruchsfelter",
+ "abusefilter-log-header": "En däm Logbohch heh fengks De de Änderonge aan de Feltere em Övverblek. Einzelheite sin en de\n[[Special:AbuseFilter/history|Leß met de neuste Änderunge aan Meßbruchsfeltere]].",
+ "abusefilter-log-noresults": "Nix jefonge",
+ "abusefilter-diff-title": "De Ungerscheide zwesche de Versione",
+ "abusefilter-diff-item": "Jääjeschtand",
+ "abusefilter-diff-version": "Väsjohn {{GENDER:$3|vum|vum|vun dämm Metmaacher|vum|vun dä}} $2 aam/öm $1\n",
+ "abusefilter-diff-info": "Jrundlääje Aanjabe",
+ "abusefilter-diff-pattern": "De Bedengunge vum Felter",
+ "abusefilter-diff-invalid": "Mer kunnte de jewönschte Versione nit fenge",
+ "abusefilter-diff-backhistory": "Jangk zeröck op de Leß met de Versione vun däm Felter",
+ "abusefilter-diff-prev": "De Änderong dovör zeihje",
+ "abusefilter-diff-next": "De Änderong donoh zeije",
+ "abusefilter-import-intro": "Do kanns hee di Schnettshtell bruche, öm Date vun de Meßbruchsfeltere vun andere Wikis noh hee ze empotteere. En dämm Wiki, woh de Date her kumme, doh donn op „{{int:abusefilter-edit-export}}“ unger „{{int:abusefilter-edit-tools}}“ klecke, op dä Sigg zom Felter Ändere. Donn dä Ennhalt vun däm Kaste met Tex, dä dann doh kütt, en hee dä Kaste eren kopeere, un dann donn hee dä Knopp „{{int:abusefilter-import-submit}}“ klecke.",
+ "abusefilter-import-submit": "Lohß Jonn!",
+ "abusefilter-group-default": "Schtandatt",
+ "abusefilter-http-error": "Ene <i lang=\"en\">HTTP</i>-Fäähler es opjetrodde: $1.",
+ "apihelp-abusefiltercheckmatch-param-filter": "Dä kumplätt Täx vum Fellter, öm för ene Träffer ze lohre.",
+ "apihelp-abusefiltercheckmatch-param-vars": "Ene Saz vun Varrejahble em <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"JavaScript Object Notation\">JSON</i>-Fommahd, öm doh jähje ze pröhve.",
+ "apihelp-abusefiltercheckmatch-param-rcid": "En Kännong us de {{lcfirst:{{int:recentchanges}}}}, öm doh jähje ze pröhve.",
+ "apihelp-abusefiltercheckmatch-param-logid": "En Kännong us dem Meßbruchsfelter singem Logbohch, öm doh jähje ze pröhve.",
+ "apihelp-abusefiltercheckmatch-example-1": "Donn pröhve, of de Kännong <kbd>15</kbd> us de {{lcfirst:{{int:recentchanges}}}} obb ene eijnfache Felter paß.",
+ "apihelp-abusefilterchecksyntax-description": "Donn de Sünntax vun enem beschtemmpte Felter vum Meßbruchsfelter pröhve.",
+ "apihelp-abusefilterchecksyntax-param-filter": "Dä kumplätt Täx vum Fellter, öm de Süntax ze pröhfe.",
+ "apihelp-abusefilterchecksyntax-example-1": "Donn de Sünntax vun enem jölltejje Felter pröhve.",
+ "apihelp-abusefilterchecksyntax-example-2": "Donn de Sünntax vun enem onjölltejje Felter pröhve.",
+ "apihelp-abusefilterevalexpression-description": "Deihd ene Ußdrogg vum Meßbruchsfelter ußrääschne.",
+ "apihelp-abusefilterevalexpression-param-expression": "Dä Ußdrok zom ußwääte.",
+ "apihelp-abusefilterevalexpression-example-1": "Donn ene eijfache Ußdrok ußwääte.",
+ "apihelp-abusefilterunblockautopromote-description": "Donn di Schpär ophävve för emen Metmaacher sing automattesche Rääschtzohdeijlong övver der Meßbruchsfellter.",
+ "apihelp-abusefilterunblockautopromote-param-user": "Däm Metmaacher singe Nahme, dä De nit mih jeschpächt han wells.",
+ "apihelp-abusefilterunblockautopromote-example-1": "Donn di Schpär ophävve för dem Metmaacher „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">[[User:Example]]</code>“ sing automattesche Rääschtzohdeijlong.",
+ "apihelp-query+abusefilters-description": "Zeijsch Einzelheijte vun dä Meßbruchsfelter aan.",
+ "apihelp-query+abusefilters-param-startid": "De Kännong vun däm Felter, vun woh aan opzälle.",
+ "apihelp-query+abusefilters-param-endid": "De Kännong vun däm Felter, bes woh hen opzälle.",
+ "apihelp-query+abusefilters-param-show": "Zeijsch blohß Felter, op di di Eijeschaffte paße.",
+ "apihelp-query+abusefilters-param-limit": "De jrüüßte Zahl Felter för opzeleste.",
+ "apihelp-query+abusefilters-param-prop": "Wat för en Eijeschaffte holle.",
+ "apihelp-query+abusefilters-example-1": "Donn de ennjeschalldte öffentlesche Fellter opleßte",
+ "apihelp-query+abusefilters-example-2": "Zijsch e paa Eijnzelheijte övver Felter",
+ "apihelp-query+abuselog-description": "Zeijsch wat vun einem vun dä Meßbruchsfelter jepack woode es.",
+ "apihelp-query+abuselog-param-start": "Et Dattom un de Zigg vun woh aff opzälle.",
+ "apihelp-query+abuselog-param-end": "Et Dattom un de Zigg vun woh aff opjezallt wähde sull.",
+ "apihelp-query+abuselog-param-user": "Zeijsch blohß de Enndrähsch vun enem beschtemmpte Metmaacher udder ene beschtemmpte <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Internet Protocol\">IP</i>-Adräß.",
+ "apihelp-query+abuselog-param-title": "Zeijsch blohß de Enndrähsch, di obb ene beschtemmpte Sigg opjedouch sin.",
+ "apihelp-query+abuselog-param-filter": "Zeijsch blohß de Enndrähsch em Logbohch di vun däm Felter met dä aanjejovve Kännog jepack woode sin.",
+ "apihelp-query+abuselog-param-limit": "De hühßde Aanzahl Enndrähsch för opzeleßte.",
+ "apihelp-query+abuselog-param-prop": "Wat för en Eijeschaffte holle.",
+ "apihelp-query+abuselog-example-1": "De neuste enndrähsch em Logbohch aanzeije.",
+ "apihelp-query+abuselog-example-2": "Zeijsch de neuste Enndrähsch em Logbohch för et [[API|<i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Application Programming Interface\">API</i>]]"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/ku-latn.json b/www/wiki/extensions/AbuseFilter/i18n/ku-latn.json
new file mode 100644
index 00000000..99ee58ba
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/ku-latn.json
@@ -0,0 +1,86 @@
+{
+ "@metadata": {
+ "authors": [
+ "George Animal",
+ "Ghybu",
+ "Bikarhêner"
+ ]
+ },
+ "abusefilter-log-search-user": "Bikarhêner:",
+ "abusefilter-log-search-title": "Sernav:",
+ "abusefilter-log-search-wiki": "Wîkî:",
+ "abusefilter-log-search-submit": "Lêbigere",
+ "abusefilter-log-detailedentry-local": "fîltre $1",
+ "abusefilter-log-detailslink": "detayan",
+ "abusefilter-log-diff": "cudahî",
+ "abusefilter-log-noactions": "tine",
+ "abusefilter-log-hide-reason": "Sedem:",
+ "abusefilter-logentry-suppress": "\"[[$1]]\" hid",
+ "abusefilter-list": "Hemû fîltreyan",
+ "abusefilter-list-status": "Rewş",
+ "abusefilter-list-edit": "Biguherîne",
+ "abusefilter-list-details": "Detayan",
+ "abusefilter-list-group": "Komê parzûn bike",
+ "abusefilter-hidden": "Şexsî",
+ "abusefilter-unhidden": "Giştî",
+ "abusefilter-enabled": "Çalak",
+ "abusefilter-deleted": "Jêbirî",
+ "abusefilter-disabled": "Neşê",
+ "abusefilter-new": "Fîltreka nû çêke",
+ "abusefilter-status-global": "Global",
+ "abusefilter-list-options": "Vebijêrk",
+ "abusefilter-list-options-deleted": "Fîltreyên hatine jêbirirn:",
+ "abusefilter-list-options-deleted-only": "Tenê fîltreyên jêbûyî nîşan bide",
+ "abusefilter-list-options-scope": "Fîltreyan nîşan bide:",
+ "abusefilter-list-options-scope-local": "Bitenê rêzikên heremî",
+ "abusefilter-list-options-scope-global": "Bitenê rêzikên global",
+ "abusefilter-list-options-scope-all": "Rêzikên mehelî û global",
+ "abusefilter-list-options-submit": "Rojanekirin",
+ "abusefilter-tools-reautoconfirm-user": "Bikarhêner:",
+ "abusefilter-edit-status-label": "Statîstîk:",
+ "abusefilter-edit-new": "Fîltreya nû",
+ "abusefilter-edit-save": "Fîltreyê qeyd bike",
+ "abusefilter-edit-id": "IDya Fîltreyê:",
+ "abusefilter-edit-description": "Daxuyanî:\n:''(ji alîye her kesî dikara were dîtin)''",
+ "abusefilter-edit-group": "Komê parzûnê:",
+ "abusefilter-edit-flags": "Al:",
+ "abusefilter-edit-enabled": "Vî parzûnê biqefêle",
+ "abusefilter-edit-deleted": "Wek hatiye jêbirî nîşan bide",
+ "abusefilter-edit-hidden": "Detayên vî parzûne ji dîmena gelemperî veseşe",
+ "abusefilter-edit-global": "Parzûna global",
+ "abusefilter-edit-rules": "Merc:",
+ "abusefilter-edit-notes": "Not:",
+ "abusefilter-edit-warn-other": "Peyama din",
+ "abusefilter-edit-warn-actions": "Çalakî:",
+ "abusefilter-edit-warn-preview": "Pêşdîtina peyamê bijartî",
+ "abusefilter-edit-history": "Dîrok:",
+ "abusefilter-edit-tools": "Amûr:",
+ "abusefilter-edit-builder-op-bool-not": "Na (!)",
+ "abusefilter-edit-builder-op-bool-and": " Û (&)",
+ "abusefilter-edit-builder-op-bool-or": "An (|)",
+ "abusefilter-edit-builder-vars-newsize": "Dirêjiya rûpela nû",
+ "abusefilter-edit-builder-vars-user-rights": "Mafên vî bikarhênerî",
+ "abusefilter-history-hidden": "Veşartî",
+ "abusefilter-history-global": "Global",
+ "abusefilter-history-timestamp": "Dem",
+ "abusefilter-history-user": "Bikarhêner",
+ "abusefilter-history-comments": "Şîrove",
+ "abusefilter-history-actions": "Çalakî",
+ "abusefilter-history-deleted": "Hate jêbirin",
+ "abusefilter-history-filterid": "Fîltre",
+ "abusefilter-history-select-user": "Bikarhêner:",
+ "abusefilter-action-tag": "Nîşankirin",
+ "abusefilter-action-block": "Asteng bike",
+ "abusefilter-action-degroup": "Ji koman rake",
+ "abusefilter-action-disallow": "Nehêle",
+ "abusefilter-revert-filter": "Fîltre:",
+ "abusefilter-revert-confirm": "Pesend bike",
+ "abusefilter-revert-reasonfield": "Sedem:",
+ "abusefilter-test-submit": "Test",
+ "abusefilter-test-load": "Bar bike",
+ "abusefilter-examine-legend": "Guherandinan hilbijêre",
+ "abusefilter-examine-user": "Bikarhêner:",
+ "abusefilter-examine-title": "Sernavê rûpelê:",
+ "abusefilter-examine-submit": "Lêgerîn",
+ "abusefilter-topnav-home": "Mal"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/ky.json b/www/wiki/extensions/AbuseFilter/i18n/ky.json
new file mode 100644
index 00000000..3d655652
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/ky.json
@@ -0,0 +1,54 @@
+{
+ "@metadata": {
+ "authors": [
+ "Growingup"
+ ]
+ },
+ "abusefilter-log-search-user": "Катышуучу:",
+ "abusefilter-log-search-title": "Башжазуу:",
+ "abusefilter-log-search-submit": "Издөө",
+ "abusefilter-log-detailslink": "деталдар",
+ "abusefilter-log-diff": "айырма",
+ "abusefilter-log-details-var": "Өзгөрмө",
+ "abusefilter-log-details-val": "Чоңдук",
+ "abusefilter-log-noactions": "жок",
+ "abusefilter-log-hide-reason": "Себеп:",
+ "abusefilter-list-status": "Абал",
+ "abusefilter-list-edit": "Оңдоо",
+ "abusefilter-list-details": "Деталдар",
+ "abusefilter-deleted": "Өчүрүлдү",
+ "abusefilter-disabled": "Өчүрүлгөн",
+ "abusefilter-list-options": "Параметрлер",
+ "abusefilter-list-options-submit": "Жаңыртуу",
+ "abusefilter-tools-reautoconfirm-user": "Катышуучу:",
+ "abusefilter-edit-status-label": "Статистика:",
+ "abusefilter-edit-new": "Жаңы фильтр",
+ "abusefilter-edit-warn-actions": "Аракеттер:",
+ "abusefilter-edit-history": "Тарых:",
+ "abusefilter-edit-tools": "Аспаптар:",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Кошуу (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Алуу (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Көбөйтүү (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Бөлүү (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Модуль (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Даража (**)",
+ "abusefilter-edit-builder-op-bool-and": "ЖАНА (&)",
+ "abusefilter-edit-builder-op-bool-or": "ЖЕ (|)",
+ "abusefilter-edit-builder-group-vars": "Өзгөрмөлөр",
+ "abusefilter-edit-builder-vars-action": "Аракет",
+ "abusefilter-history-timestamp": "Убакыт",
+ "abusefilter-history-user": "Катышуучу",
+ "abusefilter-history-flags": "Желектер",
+ "abusefilter-history-comments": "Комментарийлер",
+ "abusefilter-history-actions": "Аракеттер",
+ "abusefilter-history-deleted": "Өчүрүлдү",
+ "abusefilter-history-filterid": "Фильтр",
+ "abusefilter-history-select-user": "Катышуучу:",
+ "abusefilter-history-diff": "Өзгөртүүлөр",
+ "abusefilter-revert-filter": "Фильтр:",
+ "abusefilter-revert-reasonfield": "Себеп:",
+ "abusefilter-examine-user": "Катышуучу:",
+ "abusefilter-examine-submit": "Издөө",
+ "abusefilter-diff-item": "Элемент",
+ "abusefilter-group-default": "Жарыяланбасча"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/la.json b/www/wiki/extensions/AbuseFilter/i18n/la.json
new file mode 100644
index 00000000..428c6156
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/la.json
@@ -0,0 +1,53 @@
+{
+ "@metadata": {
+ "authors": [
+ "Autokrator",
+ "Omnipaedista",
+ "UV",
+ "Laurentianus"
+ ]
+ },
+ "abusefilter": "Configuratio filtri iniuriarum",
+ "abuselog": "Acta iniuriarum",
+ "abusefilter-blocker": "Filtrum iniuriarum",
+ "abusefilter-log": "Acta filtri iniuriarum",
+ "abusefilter-log-search-user": "Usor:",
+ "abusefilter-log-search-title": "Titulus:",
+ "abusefilter-log-search-submit": "Quaerere",
+ "abusefilter-log-detailedentry-local": "filtrum $1",
+ "abusefilter-log-noactions": "nulla",
+ "abusefilter-list-visibility": "Visibilitas",
+ "abusefilter-list-edit": "Recensere",
+ "abusefilter-deleted": "Abrogatum",
+ "abusefilter-status-global": "Globalis",
+ "abusefilter-list-options": "Modi",
+ "abusefilter-tools-reautoconfirm-user": "Usor:",
+ "abusefilter-edit-status-label": "Statistica:",
+ "abusefilter-edit-throttle-period": "Periodus temporalis:",
+ "abusefilter-edit-warn-actions": "Actiones:",
+ "abusefilter-edit-history": "Historia:",
+ "abusefilter-edit-builder-group-op-arithmetic": "Operatores arithmetici",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Additio (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Subtractio (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Multiplicatio (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Divisio (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Modulo (%)",
+ "abusefilter-edit-builder-op-bool-not": "Haud (!)",
+ "abusefilter-edit-builder-op-bool-and": "Et (&)",
+ "abusefilter-edit-builder-op-bool-or": "Aut (|)",
+ "abusefilter-edit-builder-group-misc": "Miscellanea",
+ "abusefilter-edit-builder-group-funcs": "Functiones",
+ "abusefilter-edit-builder-funcs-norm": "Normalizare (norm)",
+ "abusefilter-edit-builder-group-vars": "Variabilia",
+ "abusefilter-edit-builder-vars-action": "Actio",
+ "abusefilter-history-comments": "Adnotamenta",
+ "abusefilter-history-actions": "Actiones",
+ "abusefilter-history-filterid": "Filtrum",
+ "abusefilter-history-select-user": "Usor:",
+ "abusefilter-history-diff": "Mutata",
+ "abusefilter-test-load": "Depromere",
+ "abusefilter-examine-user": "Usor:",
+ "abusefilter-examine-title": "Titulus paginae:",
+ "abusefilter-examine-submit": "Quaerere",
+ "abusefilter-log-name": "Acta filtri iniuriarum"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/lad.json b/www/wiki/extensions/AbuseFilter/i18n/lad.json
new file mode 100644
index 00000000..9a3779f4
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/lad.json
@@ -0,0 +1,52 @@
+{
+ "@metadata": {
+ "authors": [
+ "Universal Life"
+ ]
+ },
+ "abusefilter-desc": "A los trocamientos, aplica maneras topadores (eurísticas)",
+ "abusefilter": "Konfiggurasyón del filtro contra-abusos",
+ "abuselog": "Rējistro del filtro antiabusos",
+ "abusefilter-intro": "Buenas venidas a la interfaz de administrasyón de filtros de trocamientos.\nEl filtro de trocamientos es un mekanismo de software otomatizado que aplica maneras topaderas (eurísticas) a todas las aksyones.\nEsta interfaz mostra una lista de filtros dēfinidos i da permisyón de trocarlos.",
+ "abusefilter-blocker": "Filtro contra-abusos",
+ "abusefilter-blockreason": "Bloqueado de sí para sí, de la parte del filtro contra-abusos.\nDeskripsyón del filtro alcançado: $1",
+ "abusefilter-accountreserved": "El nombre de este cuento está reservado para el uso de la parte del filtro contra-abusos",
+ "abusefilter-log-details-val": "Valor",
+ "abusefilter-log-hide-reason": "Razón:",
+ "abusefilter-list": "Todos los filtros",
+ "abusefilter-list-id": "Número de filtro",
+ "abusefilter-list-consequences": "Consegüenças",
+ "abusefilter-list-hitcount": "Número de alcanços",
+ "abusefilter-list-edit": "Troca",
+ "abusefilter-list-details": "Los detalyos",
+ "abusefilter-list-limit": "Número por hoja:",
+ "abusefilter-list-lastmodified": "El trocamiento de alcabo",
+ "abusefilter-deleted": "Efassado",
+ "abusefilter-disabled": "Desactivado",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|alcanço|alcanços}}",
+ "abusefilter-status-global": "Globbal",
+ "abusefilter-list-options": "Opsyones",
+ "abusefilter-list-options-deleted": "Los filtros efassados:",
+ "abusefilter-tools-reautoconfirm-user": "Usador:",
+ "abusefilter-edit-new": "Nuevo filtro",
+ "abusefilter-edit-id": "Número de filtro:",
+ "abusefilter-edit-hitcount": "Los filtros alcançados:",
+ "abusefilter-edit-action-warn": "Lança el filtro dospués de dar un aviso al empleador",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|sêgondo|sêgondos}}",
+ "abusefilter-edit-history": "Istoria",
+ "abusefilter-edit-export": "Taxirea este filtro a un otro viki",
+ "abusefilter-edit-notallowed": "No se te da permisyón de criar o de trocar los filtros contra-abusos",
+ "abusefilter-history-select-user": "Usador:",
+ "abusefilter-action-tag": "Marca",
+ "abusefilter-action-warn": "Avisa",
+ "abusefilter-action-block": "Bloquea",
+ "abusefilter-action-degroup": "Quita de los grupos",
+ "abusefilter-action-rangeblock": "Bloqueo de rango",
+ "abusefilter-action-disallow": "No des permisyón",
+ "abusefilter-test-load": "Cargar",
+ "abusefilter-changeslist-examine": "Egzamina",
+ "abusefilter-examine-noresults": "No se topó dingún rêsultado por lo que buscates.",
+ "abusefilter-topnav-log": "Rējistro de abusos",
+ "abusefilter-diff-pattern": "Kondisyones del filtro",
+ "abusefilter-diff-invalid": "Las versiones demandadas, no se las está puediendo traer"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/lag.json b/www/wiki/extensions/AbuseFilter/i18n/lag.json
new file mode 100644
index 00000000..af57e05b
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/lag.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "Baba Tabita"
+ ]
+ },
+ "abusefilter-deleted": "Yahónwɨɨre",
+ "abusefilter-history-deleted": "Yahónwɨɨre"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/lb.json b/www/wiki/extensions/AbuseFilter/i18n/lb.json
new file mode 100644
index 00000000..b10e6767
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/lb.json
@@ -0,0 +1,417 @@
+{
+ "@metadata": {
+ "authors": [
+ "Les Meloures",
+ "Robby",
+ "Soued031",
+ "Matma Rex"
+ ]
+ },
+ "abusefilter-desc": "Applizéiert automatesch Heuristiken op Ännerungen",
+ "abusefilter": "Astellung vum Mëssbrauchsfilter",
+ "abuselog": "Lëscht vum Mëssbrauch",
+ "abusefilter-intro": "Wëllkom op der Säit vum Mëssbrauchsfilter-Management.\nDe Mëssbrauchsfilter ass en automatesche Mechanismus deen et erlaabt automatesch Heuristiken op all Aktiounen unzewennen.\nDës Spezialsäit weist eng Lëscht vun definéierte Filteren an erlaabt et dës z'änneren.",
+ "abusefilter-mustbeeditor": "Aus Sécherheetsgrënn kënnen nëmme Benotzer déi d'Recht hunn fir Mëssbrauchsfilteren z'änneren dësen Interface benotzen.",
+ "abusefilter-warning": "'''Opgepasst:''' Dës Aktioun gouf automatesch als geféierlech erkannt.\nAkltiounen déi net konstruktiv si ginn automatesch zeréckgsat,\na besonnesch schlëmmen oder widderhuelte Fäll gëtt Äre Benotzerkont oder Är IP-Adress gespaart.\nWann Dir mengt datt Är Ännerung konstruktiv ass, kënnt Dir nacheemol op \"Späichere\" klicke fir ze confirméieren.\nEng kuerz Beschreiwung vun der Mëssbrauchsregel op déi Är Aktioun reagéiert huet: $1",
+ "abusefilter-disallowed": "Dës Aktioun gouf automatesch als schiedlech erkannt,an dofir net zougelooss.\nWann Dir mengt datt Är Ännerung konstruktiv ass, da kontaktéiert w.e.g. en Administrateur, an informéiert deen iwwer dat wat Dir versicht hutt ze maachen.\nEng kuerz Beschreiwung vun der Mëssbrauchsregel, déi op är Aktioun reagéiert huet, ass: $1",
+ "abusefilter-blocked-display": "Dës Aktioun gouf automatesch als schiedlech identifizéiert,\nan Dir konnt se dowéinst net ausféieren.\nDes weideren, fir {{SITENAME}} ze protegéieren, gouf Äre Benotzerkont an all assoziéiert IP-Adressen automatesch fir all Ännerunge gespaart.\nWann dëst iertemlech geschitt ass da kontaktéiert w.e.g. en Administrateur.\nHei ass eng kuerz Beschreiwung vun der Mëssbrauchsregel op déi Är Aktioun gepasst huet: $1",
+ "abusefilter-degrouped": "Dës Aktioun gouf automatesch als schiedlech klasséiert.\nDowéinst gouf se net zougelooss a well Äre Benotzerkont dofir elo verdächteg ass, fir kompromettéiert ze sinn, goufen all Är Rechter zréckgezunn.\nWann Dir mengt datt dëst e Feeler ass da kontaktéiert w.e.g. e Bürokrat a gitt him eng Erklärung fir dës Aktioun, an Är Rechter ginn nees restauréiert.\nHei ass eng kuerz Beschreiwung vun der Mëssbrauchsregel op déi Är Akioun passt: $1",
+ "abusefilter-autopromote-blocked": "Dës Aktioun gouf automatesch als geféierlech erkannt an net ausgefouert.\nZusäzlech goufen aus Sécherheetsgrënn e puer Rechter déi confirméiert Benotzerkonten hunn temporär vun ärem Benotzerkont zréckgeszunn.\nEng kuerz Beschreiwung vun der Mëssbrauchsregel op déi Är Aktioun reagéiert huet ass: $1",
+ "abusefilter-blocker": "Filter vum Mëssbrauch",
+ "abusefilter-blockreason": "Automtesch gespaart duerch de Mëssbrauchsfilter. Beschreiwung vun der Regel déi benotzt gouf: $1",
+ "abusefilter-degroupreason": "Rechter goufen atomatesch duerch de Mëssbrauchsfilter ewechgeholl. Beschreiwung vun der Regel: $1",
+ "abusefilter-accountreserved": "Dësen Numm fir e Benotzerkont ass reservéiert fir vum Mëssbrauchsfilter benotzt ze ginn.",
+ "right-abusefilter-modify": "Mëssbrauchsfilteren änneren",
+ "right-abusefilter-view": "Mëssbrauchs-Filtere weisen",
+ "right-abusefilter-log": "Lëscht vum Mëssbrauch weisen",
+ "right-abusefilter-log-detail": "Detailléiert Versioun vum Mëssbrauchslog weisen",
+ "right-abusefilter-private": "Privat Donnéeën am Mëssbrauchsfilter weisen",
+ "right-abusefilter-modify-restricted": "Mëssbrauchsfiltere mat limitéierten Aktiounen änneren",
+ "right-abusefilter-revert": "All Ännerungen vun engem bestëmmte Mëssbruachsfilter zrécksetzen",
+ "right-abusefilter-view-private": "Mëssbrauchsfilter weisen déi als privat markéiert sinn",
+ "right-abusefilter-hide-log": "Rubriken am Mëssbrauchsfilter verstoppen",
+ "right-abusefilter-hidden-log": "Verstoppten Androungen an d'Mëssbrauchslogbuch kucken",
+ "right-abusefilter-modify-global": "Global Mëssbrauchsfilteren uleeën oder änneren",
+ "action-abusefilter-modify": "Mëssbrauchsfilteren z'änneren",
+ "action-abusefilter-view": "Mëssbrauchsfilteren ze kucken",
+ "action-abusefilter-log": "d'Logbuch vum Mëssbrauch ze kucken",
+ "action-abusefilter-log-detail": "dat detailéiert Logbuch vum Mëssbrauchsfilter weisen",
+ "action-abusefilter-private": "privat Donnéeën am Mëssbrauchsfilter weisen",
+ "action-abusefilter-modify-restricted": "d'Mëssbrauchsfiltere mat limtéierten Aktiounen z'änneren",
+ "action-abusefilter-revert": "all Ännerungen vun engem bestëmmte Mëssbrauchsfilter zréckzesetzen",
+ "action-abusefilter-view-private": "Mëssbrauchsfilteren ze kucken, déi als privat markéiert sinn",
+ "abusefilter-log": "Lëscht vun de Mëssbrauchs-Filteren",
+ "abusefilter-log-summary": "Dëst Logbuch weist eng Lëscht vun allen Aktiounen déi duerch Filteren opgefaang goufen.",
+ "abusefilter-log-search": "D'Lëscht vum Mëssbrauch duerchsichen",
+ "abusefilter-log-search-user": "Benotzer:",
+ "abusefilter-log-search-filter": "Nummer(ID) vum Filter (mat vertikale Strécher(|) trennen):",
+ "abusefilter-log-search-title": "Titel:",
+ "abusefilter-log-search-wiki": "Wiki:",
+ "abusefilter-log-search-impact": "Impakt:",
+ "abusefilter-log-search-impact-all": "All Aktiounen",
+ "abusefilter-log-search-impact-saved": "Nëmme gespäichert Aktiounen",
+ "abusefilter-log-search-impact-not-saved": "Ouni gespäichert Ännerungen",
+ "abusefilter-log-search-entries-label": "Visibilitéit:",
+ "abusefilter-log-search-action-taken-any": "Iergend eng",
+ "abusefilter-log-search-submit": "Sichen",
+ "abusefilter-log-entry": "$1: $2 huet e Mëssbrauchsfilter {{GENDER:$8|ausgeléist}}, {{GENDER:$8|bei der Aktioun}} \"$3\" op $4.\nAktioune vum Filter: $5;\nBeschreiwung vum Filter: $6",
+ "abusefilter-log-detailedentry-meta": "$1: $2 huet e Mëssbrauchsfilter $3 {{GENDER:$9|ausgeléist}}, {{GENDER:$9|bei der Aktioun}} \"$4\" op $5.\nAktioune vum Filter: $6;\nBeschreiwung vum Filter: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "globale Filter $1",
+ "abusefilter-log-detailedentry-local": "Filter $1",
+ "abusefilter-log-detailslink": "Detailer",
+ "abusefilter-log-diff": "Ënnerscheed",
+ "abusefilter-log-hidelink": "Siichtbarkeet ajustéieren",
+ "abusefilter-log-details-legend": "Detailer fir d'Rubrique am Logbuch $1",
+ "abusefilter-log-details-var": "Variabel",
+ "abusefilter-log-details-val": "Wäert",
+ "abusefilter-log-details-vars": "Parameter vun der Aktioun",
+ "abusefilter-log-details-private": "Privat Donnéeën",
+ "abusefilter-log-details-ip": "IP-Adress déi bnotzt gouf",
+ "abusefilter-log-details-checkuser": "Benotzer nokucken",
+ "abusefilter-log-noactions": "keen",
+ "abusefilter-log-details-diff": "Ännerungen déi an der Ännerung gemaach goufen",
+ "abusefilter-log-linkoncontribs": "Logbuch vum Mëssbrauch",
+ "abusefilter-log-linkoncontribs-text": "Logbuch vum Mëssbrauch fir {{GENDER:$1|dëse Benotzer}}",
+ "abusefilter-log-hidden": "(Androung verstoppt)",
+ "abusefilter-log-hidden-implicit": "(verstoppt, well d'Versioun geläscht gouf)",
+ "abusefilter-log-cannot-see-details": "Dir hutt net déi néideg Rechter fir Detailer hei vun ze gesinn.",
+ "abusefilter-log-details-hidden": "Dir kënnt Detailer hei der vun net gesinn well e virun der Ëffentlechkeet verstoppt sinn.",
+ "abusefilter-log-hide-legend": "Rubrik am Logbuch verstoppen",
+ "abusefilter-log-hide-id": "Entrée vun der ID am Logbuch:",
+ "abusefilter-log-hide-hidden": "Dëst virun der Ëffentlechkeet verstoppen",
+ "abusefilter-log-hide-reason": "Grond:",
+ "abusefilter-log-hide-reason-other": "Aneren/zousätzleche Grond:",
+ "abusefilter-log-hide-forbidden": "Dir hutt net déi néideg Rechter fir Rubriken aus dem Mëssbrauchsfilter ze verstoppen.",
+ "abusefilter-logentry-suppress": "huet \"[[$1]]\" verstoppt",
+ "abusefilter-logentry-unsuppress": "huet \"[[$1]]\" nees siichtbar gemaach",
+ "log-action-filter-abusefilter": "Typ vun der Ännerung vum Filter:",
+ "abusefilter-management": "Gestioun vum Mëssbrauchsfilter",
+ "abusefilter-list": "All Filteren",
+ "abusefilter-list-id": "Nummer(ID) vum Filter",
+ "abusefilter-list-status": "Statut",
+ "abusefilter-list-public": "Ëffentlech Beschreiwung",
+ "abusefilter-list-consequences": "Konsequenzen",
+ "abusefilter-list-visibility": "Visibilitéit",
+ "abusefilter-list-hitcount": "Compteur vun den Treffer",
+ "abusefilter-list-edit": "Änneren",
+ "abusefilter-list-details": "Detailer",
+ "abusefilter-list-limit": "Zuel pro Säit:",
+ "abusefilter-list-lastmodified": "Fir d'lescht geännert",
+ "abusefilter-list-group": "Filter-Grupp",
+ "abusefilter-hidden": "Privat",
+ "abusefilter-unhidden": "Ëffentlech",
+ "abusefilter-enabled": "Aktivéiert",
+ "abusefilter-deleted": "Geläscht",
+ "abusefilter-disabled": "Desaktivéiert",
+ "abusefilter-hitcount": "{{PLURAL:$1|1 Treffer|$1 Treffer}}",
+ "abusefilter-new": "En neie Filter uleeën",
+ "abusefilter-return": "Zréck op d'Gestioun vun de Filteren",
+ "abusefilter-status-global": "Global",
+ "abusefilter-list-options": "Optiounen",
+ "abusefilter-list-options-deleted": "Geläscht Filteren:",
+ "abusefilter-list-options-deleted-only": "Nëmme geläscht Filtere weisen",
+ "abusefilter-list-options-deleted-hide": "Geläscht Filtere verstoppen",
+ "abusefilter-list-options-deleted-show": "Geläscht Filteren matabezéien",
+ "abusefilter-list-options-scope": "Filtere weisen:",
+ "abusefilter-list-options-scope-local": "Nëmme lokal Regelen",
+ "abusefilter-list-options-scope-global": "Nëmme global Regelen",
+ "abusefilter-list-options-scope-all": "Lokal a global Regelen",
+ "abusefilter-list-options-disabled": "Ausgeschalte Filteren",
+ "abusefilter-list-options-hidedisabled": "Ausgeschalte Filtere verstoppen",
+ "abusefilter-list-options-submit": "Aktualiséieren",
+ "abusefilter-tools-text": "Hei sinn e puer Funktiounen déi beim Opstellen a bei der Feelersich vu Mëssbrauchsregelen nëtzlech kënne sinn.",
+ "abusefilter-tools-expr": "Test vun den Expressiounen",
+ "abusefilter-tools-submitexpr": "Bewerten",
+ "abusefilter-tools-reautoconfirm": "Status \"autoconfirmed\" zrécksetzen",
+ "abusefilter-tools-reautoconfirm-user": "Benotzer:",
+ "abusefilter-tools-reautoconfirm-submit": "Zréck op \"autoconfirmed\" setzen",
+ "abusefilter-reautoconfirm-none": "Dësem Benotzer {{GENDER:$1|säin|hiren}}\"autoconfirmed\"-Status war net opgehuewen.",
+ "abusefilter-reautoconfirm-notallowed": "Dir hutt net déi néideg Rechter fir de Status \"autoconfirmed\" zréckzesetzen.",
+ "abusefilter-reautoconfirm-done": "Dem Benotzerkont säi Status 2autoconfirmed\" gouf zréckgesat",
+ "abusefilter-status": "{{PLURAL:$1|Déi lescht Aktioun|Vun de leschten $1 Aktiounen}} {{PLURAL:$2|huet eng|hunn der $2}} ($3 %) de Grenzwäert vu(n) $4 erreecht.\n{{PLURAL:$5|Eng Aktioun|$5 Aktiounen}} ($6 %) {{PLURAL:$5|gouf|goufe}} vun engem aktivéierte Filter erkannt.",
+ "abusefilter-edit": "Mëssbrauchsfilter änneren",
+ "abusefilter-edit-subtitle": "Ännere vum Filter $1",
+ "abusefilter-edit-subtitle-new": "Filter uleeën",
+ "abusefilter-edit-oldwarning": "<strong>Dir sidd am Gaang eng al Versioun vum Filter z'änneren.\nD'Statistike sinn déi vun der leschter Versioun vum Filter.\nWann Dir Är Ännerunge späichert dann iwwerschreiwt Dir all Ännerungen zënter der Versioun déi Dir elo ännert. </strong> &bull;\n[[Special:AbuseFilter/history/$2|Zréck op d'Versiounsgeschicht vun dësem Filter]].",
+ "abusefilter-edit-status-label": "Statistiken:",
+ "abusefilter-edit-status": "Dëse Filter huet bei {{PLURAL:$1|der leschter Aktioun|de leschte(n) $1 Aktiounen}}, $2 mol ($3%) ugeschloen.",
+ "abusefilter-edit-status-profile": "Dëse Filter huet bei {{PLURAL:$1|der leschter Aktioun|de leschte(n) $1 Aktiounen}}, $2 mol ($3%) ugeschloen.\nAm Duerchschnëtt brauch en dofir $4ms a benotzt dobäi $5 {{PLURAL:$5|Konditioun|Konditioune}} vun der Konditiouns-Limit.",
+ "abusefilter-edit-new": "Neie Filter",
+ "abusefilter-edit-save": "Filter späicheren",
+ "abusefilter-edit-id": "Nummer (ID) vum Filter:",
+ "abusefilter-edit-switch-editor": "Editeur wiesselen",
+ "abusefilter-edit-description": "Beschreiwung:\n:''(ëffentlech)''",
+ "abusefilter-edit-field-description": "Beschreiwung",
+ "abusefilter-edit-group": "Filter-Grupp:",
+ "abusefilter-edit-flags": "Fändelen:",
+ "abusefilter-edit-enabled": "Dëse Filter aktivéieren",
+ "abusefilter-edit-deleted": "Als geläscht markéieren",
+ "abusefilter-edit-hidden": "Verstop d'Detailer vun dësem Filter virun der Ëffentlechkeet",
+ "abusefilter-edit-global": "Globale Filter",
+ "abusefilter-edit-rules": "Konditiounen:",
+ "abusefilter-edit-field-conditions": "Konditiounen",
+ "abusefilter-edit-notes": "Notizen:",
+ "abusefilter-edit-lastmod": "De Filter gouf fir d'lescht geännert",
+ "abusefilter-edit-lastmod-text": "$1 vum $2",
+ "abusefilter-edit-hitcount": "Teffer vum Filter:",
+ "abusefilter-edit-consequences": "Aktiounen déi gemaach gi wann et passt",
+ "abusefilter-edit-action-warn": "Dës Aktiounen ausféieren nodeem de Benotzer eng Warnung kritt huet",
+ "abusefilter-edit-action-disallow": "Dem Benotzer dës Aktioun net erlaben",
+ "abusefilter-edit-action-blockautopromote": "Dem Benotzer seng \"autoconfirmed\"-Rechter ofhuelen",
+ "abusefilter-edit-action-degroup": "De Benotzer aus alle priviligéierte Gruppen eraushuelen",
+ "abusefilter-edit-action-block": "De Benotzer an/oder d'IP-Adress fir Ännerunge spären",
+ "abusefilter-edit-action-throttle": "Aktiounen nëmmen ausléise wann de Benotzer eng bestëmmte Limit depasséiert",
+ "abusefilter-edit-action-rangeblock": "/16-Beräich spären, aus dem dëse Benotzer kënnt.",
+ "abusefilter-edit-action-tag": "D'Ännerung fir e spéidert Nokucke markéieren",
+ "abusefilter-edit-throttle-count": "Zuel vun den erlaabten Aktiounen:",
+ "abusefilter-edit-throttle-period": "Zäitraum:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|Sekonn|Sekonnen}}",
+ "abusefilter-edit-warn-message": "Systemmessage den als Warnung benotzt gëtt:",
+ "abusefilter-edit-warn-other": "Anere Systemmessage",
+ "abusefilter-edit-warn-other-label": "Säitennumm vun engem anere Systemmessage:\n:''(ouni MediaWiki-Prefix)''",
+ "abusefilter-edit-warn-actions": "Aktiounen:",
+ "abusefilter-edit-warn-preview": "De gewielte Message kucken ouni ofzespäicheren",
+ "abusefilter-edit-warn-edit": "De gewielte Systemmessage uleeën/änneren",
+ "abusefilter-edit-block-anon-durations": "Dauer vun der Spär fir anonym Benotzer:",
+ "abusefilter-edit-block-user-durations": "Dauer vun der Spär fir registréiert Benotzer:",
+ "abusefilter-block-anon": "anonym Benotzer",
+ "abusefilter-block-user": "registréiert Benotzer",
+ "abusefilter-edit-denied": "Dir kënnt Detailer vun dësem Filter net gesinn, well se virum Public verstoppt sinn.",
+ "abusefilter-edit-main": "Parametere vum Filter",
+ "abusefilter-edit-done-subtitle": "Filter geännert",
+ "abusefilter-edit-done": "[[Special:AbuseFilter/history/$1/diff/prev/$2|Är Ännerungen]] vum [[Special:AbuseFilter/$1|Filter $3]] goufe gespäichert.",
+ "abusefilter-edit-badsyntax": "Et ass e Syntaxfeeler an dem Filter deen Dir uginn hutt.\nD'Resultat vum Parser war: <pre>$1</pre>",
+ "abusefilter-edit-restricted": "Dir kënnt dëse Filter net ännere well eng oder méi restriktiv Aktiounen drasti fir déi ee méi Rechter brauch.\nFrot w.e.g. e Benotzer mat de Rechter fir restriktiv Aktioune fir d'Ännerung fir Iech ze maachen.",
+ "abusefilter-edit-viewhistory": "D'Versioune vun dësem Filter gesinn",
+ "abusefilter-edit-history": "Versiounen:",
+ "abusefilter-edit-check": "Syntax iwwerpréifen",
+ "abusefilter-edit-badfilter": "De Filter den Dir uginn hutt gëtt et net",
+ "abusefilter-edit-revert": "Aktiounen déi vun dësem Filter gemaach goufen zrécksetzen",
+ "abusefilter-edit-tools": "Geschir:",
+ "abusefilter-edit-test-link": "Dëse Filter mat de leschten Ännerungen ausprobéieren",
+ "abusefilter-edit-export": "Dëse Filter an eng aner Wiki exportéieren",
+ "abusefilter-edit-syntaxok": "Keng Syntaxfeeler fonnt.",
+ "abusefilter-edit-syntaxerr": "Syntaxfeeler fonnt: $1",
+ "abusefilter-edit-bad-tags": "Een oder méi vun den Tags déi Dir uginn hutt ass net valabel.\nTags solle kuerz sinn, an et solle keng Spezialzeechen dra sinn, a si sollen net vun anerer Software reservéiert sinn. Probéiert een aneren Numm erauszesichen",
+ "abusefilter-edit-notallowed": "Et ass Iech net erlaabt fir Mëssbrauchsfilteren unzeleeën oder z'änneren",
+ "abusefilter-edit-notallowed-global": "Dir däerft keng global Mëssbrauchsfilteren uleeën oder änneren",
+ "abusefilter-edit-builder-select": "Wielt eng Optioun eraus fir se do anzesetzen wou de Cursor steet",
+ "abusefilter-edit-builder-group-op-arithmetic": "Arithmetesch Operateuren",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Additioun (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Subtraktioun (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Multiplikatioun (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Divisioun (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Modulo (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Potenz (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Operateure fir ze vergläichen",
+ "abusefilter-edit-builder-op-comparison-equal": "Wäert selwecht wéi (==)",
+ "abusefilter-edit-builder-op-comparison-equal-strict": "Wäert an Typ deselwechte wéi (!==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Wäert verschidde vun (!=)",
+ "abusefilter-edit-builder-op-comparison-notequal-strict": "Wäert an Typ verschidde vu(n) (!==)",
+ "abusefilter-edit-builder-op-comparison-lt": "Manner wéi (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Méi grouss wéi (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Méi kleng oder dselwecht wéi (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Méi grouss oder dselwecht wéi (>=)",
+ "abusefilter-edit-builder-group-op-bool": "Boolesch Operateuren",
+ "abusefilter-edit-builder-op-bool-not": "Net (!)",
+ "abusefilter-edit-builder-op-bool-and": "An (&)",
+ "abusefilter-edit-builder-op-bool-or": "Oder (|)",
+ "abusefilter-edit-builder-group-misc": "Verschiddenes",
+ "abusefilter-edit-builder-misc-in": "An der Zeechefolleg dran (in)",
+ "abusefilter-edit-builder-misc-like": "Passt bei d'Motiv (like)",
+ "abusefilter-edit-builder-misc-contains": "Déi riets Zeecheketten ass an der lénkser dran (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "Buschtaweketten (\"\")",
+ "abusefilter-edit-builder-misc-tern": "Kuerz Operateuren (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "Conditionnel (wann X dann Y soss Z)",
+ "abusefilter-edit-builder-group-funcs": "Funktiounen",
+ "abusefilter-edit-builder-funcs-length": "Längt vun den Zeechen (length)",
+ "abusefilter-edit-builder-funcs-lcase": "A kleng Buchstawen ëmwandelen (lcase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "Déi Buchstawen, déi gäre verwiesselt ginn, normaliséieren (ccnorm)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "Duebel-Buchstawen ewechhuelen (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "Spezalbuchstawen / Total vun de Buchstawen(Zeechen) (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "Normaliséieren (norm)",
+ "abusefilter-edit-builder-funcs-count": "Zuel vun de Kéiere wou de String X am String Y virkënnt (count)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "Espacen eraushuelen (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "Spezialzeechen ewechhuelen (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "Ass d'IP-Adress am Beräich? (ip_in_range)",
+ "abusefilter-edit-builder-funcs-substr": "Deel vun enger Zeecheketten (substr)",
+ "abusefilter-edit-builder-funcs-str_replace": "Ersetz d'Zeecheketten duerch d'Zeecheketten (str_replace)",
+ "abusefilter-edit-builder-funcs-set_var": "Variabel definéieren (set_var)",
+ "abusefilter-edit-builder-group-vars": "Variabelen",
+ "abusefilter-edit-builder-vars-accountname": "Numm vum Benotzerkont (beim Uleeë vum Benotzerkont)",
+ "abusefilter-edit-builder-vars-timestamp": "Unix-Zäitstempel vun der Ännerung",
+ "abusefilter-edit-builder-vars-action": "Aktioun",
+ "abusefilter-edit-builder-vars-addedlines": "Linnen déi bei der Ännerung dobäigesat goufen",
+ "abusefilter-edit-builder-vars-delta": "Ännerung vun der Gréisst vun der Säit bei der Ännerung",
+ "abusefilter-edit-builder-vars-diff": "Gesamtënnerscheed vun den Ännerungen déi bei der Ännerung gemaach goufen",
+ "abusefilter-edit-builder-vars-newsize": "Nei Säitegréisst",
+ "abusefilter-edit-builder-vars-oldsize": "Al Säitegréisst",
+ "abusefilter-edit-builder-vars-old-content-model": "Alen Inhaltsmodell",
+ "abusefilter-edit-builder-vars-new-content-model": "Neien Inhaltsmodell",
+ "abusefilter-edit-builder-vars-removedlines": "Linnen déi der Ännerung ewechgeholl goufen",
+ "abusefilter-edit-builder-vars-summary": "Resumé/Grond vun der Ännerung",
+ "abusefilter-edit-builder-vars-article-id": "ID (Nummer) vun der Säit",
+ "abusefilter-edit-builder-vars-article-ns": "Nummraum vun der Säit",
+ "abusefilter-edit-builder-vars-article-text": "Titel vun der Säit (ouni Nummraum)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Ganzen Titel vun der Säit",
+ "abusefilter-edit-builder-vars-article-views": "Zuel wéi dacks d'Säit gewise gouf",
+ "abusefilter-edit-builder-vars-movedfrom-id": "Säiten-ID vun der Säit déi geréckelt gëtt",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "Nummraum vun der Säit déi geréckelt gëtt",
+ "abusefilter-edit-builder-vars-movedfrom-text": "Titel vun der Säit déi geréckelt gëtt",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "Ganzen titel vun der Säit déi geréckelt gëtt",
+ "abusefilter-edit-builder-vars-movedto-id": "Säiten-ID vun der Säit op déi geréckelt gëtt",
+ "abusefilter-edit-builder-vars-movedto-ns": "Nummraum vun der Säit op déi eng Säit geréckelt gëtt",
+ "abusefilter-edit-builder-vars-movedto-text": "Titel vun der Säit op déi d'Säit geréckelt gëtt",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "Ganzen Titel vun der Säit op déi d'Säit geréckelt gëtt",
+ "abusefilter-edit-builder-vars-user-editcount": "Compteur vun den Ännerunge vum Benotzer",
+ "abusefilter-edit-builder-vars-user-age": "Alter vum Benotzerkont",
+ "abusefilter-edit-builder-vars-user-name": "Numm vum Benotzerkont",
+ "abusefilter-edit-builder-vars-user-groups": "Gruppen (inklusiv déi implizit) wou de Benotzer dran ass",
+ "abusefilter-edit-builder-vars-user-rights": "Rechter déi e Benotzer huet",
+ "abusefilter-edit-builder-vars-user-blocked": "Ob de Benotzer gespaart ass",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "Wéini d'E-Mailadress confirméiert gouf",
+ "abusefilter-edit-builder-vars-recent-contributors": "Déi lescht zeng Benotzer déi un dësem Artikel geschafft hunn",
+ "abusefilter-edit-builder-vars-first-contributor": "Éischte Benotzer deen un der Säit geschafft huet",
+ "abusefilter-edit-builder-vars-all-links": "All extern Linken am neien Text",
+ "abusefilter-edit-builder-vars-added-links": "All extern Linken déi bei der Ännerung dobäigesat goufen",
+ "abusefilter-edit-builder-vars-removed-links": "All extern Linken déi bei der Ännerung ewechgeholl goufen",
+ "abusefilter-edit-builder-vars-old-text": "Alen Text op der Säit, virun der Ännerung",
+ "abusefilter-edit-builder-vars-new-text": "Neien Text op der Säit, no der Ännerung",
+ "abusefilter-edit-builder-vars-new-pst": "Wikitext vun der neier Säit, virum Späicheren ëmgewandelt",
+ "abusefilter-edit-builder-vars-new-text-stripped": "Neien Text vun der Säit ouni iergendwellech Formatéierung",
+ "abusefilter-edit-builder-vars-new-html": "Geparseden HTML Quelltext vun der neier Versioun",
+ "abusefilter-edit-builder-vars-restrictions-edit": "Niveau vun der Spär vun der Säit",
+ "abusefilter-edit-builder-vars-restrictions-move": "Niveau vun der Réckelspär vun der Säit",
+ "abusefilter-edit-builder-vars-restrictions-create": "D'Spär vun dëser Säit uleeën",
+ "abusefilter-edit-builder-vars-old-text-stripped": "Alen Text vun der Säit, ouni iergendwellech Formatéierung",
+ "abusefilter-edit-builder-vars-old-links": "Linken op der Säit, virun der Ännerung",
+ "abusefilter-edit-builder-vars-old-html": "Wikitext vun der aler Säit, an HTML-Format",
+ "abusefilter-edit-builder-vars-minor-edit": "Ob d'Ännerung als kleng markéiert gëtt oder net",
+ "abusefilter-edit-builder-vars-file-sha1": "SHA1-Hash vum Inhalt vum Fichier",
+ "abusefilter-edit-builder-vars-file-size": "Gréisst vum Fichier a Bytes",
+ "abusefilter-edit-builder-vars-file-width": "Breet vum Fichier a Pixel",
+ "abusefilter-edit-builder-vars-file-height": "Héicht vum Fichier a Pixel",
+ "abusefilter-edit-block-options": "Spär-Optiounen",
+ "abusefilter-filter-log": "Rezent Ännerunge vu Filteren",
+ "abusefilter-history": "Historique vun den Ännerunge vum Mëssbrauchsfilter #$1",
+ "abusefilter-history-foruser": "Ännerunge vum $1",
+ "abusefilter-history-hidden": "Verstoppt",
+ "abusefilter-history-enabled": "ageschalt",
+ "abusefilter-history-global": "Global",
+ "abusefilter-history-timestamp": "Zäit",
+ "abusefilter-history-user": "Benotzer",
+ "abusefilter-history-public": "Ëffentlech Beschreiwung vum Filter",
+ "abusefilter-history-flags": "Fändelen",
+ "abusefilter-history-filter": "Regel vum Filter",
+ "abusefilter-history-comments": "Bemierkungen",
+ "abusefilter-history-actions": "Aktiounen",
+ "abusefilter-history-backedit": "Zréck op d'Ännerungssäit vun de Filteren",
+ "abusefilter-history-deleted": "Geläscht",
+ "abusefilter-history-filterid": "Filter",
+ "abusefilter-history-select-legend": "Sich verfeineren",
+ "abusefilter-history-select-user": "Benotzer:",
+ "abusefilter-history-select-filter": "Nummer (ID) vum Filter:",
+ "abusefilter-history-select-submit": "Verfeineren",
+ "abusefilter-history-diff": "Ännerungen",
+ "abusefilter-history-error-hidden": "De Filter deen Dir ugefrot hutt ass verstoppt, an Dir kënnt d'Versiounen dovun net gesinn.",
+ "abusefilter-exception-unexpectedatend": "Onerwaarten $2 beim Zeeche(n) $1",
+ "abusefilter-exception-expectednotfound": "Op der Positioun $1 gouf e(n) $2 erwaart awer net fonnt (fonnt gouf dofir e(n) $3 mam Wäert $4).",
+ "abusefilter-exception-unrecognisedkeyword": "Onerkannt Schlësselwuert $2 beim Zeeche(n) $1.",
+ "abusefilter-exception-unclosedstring": "Zeechekette gouf net ofgeschloss, si fänkt mam Zeechen $1 un.",
+ "abusefilter-exception-invalidoperator": "Net valabelen Operateur \"$2\" beim Zeechen $1.",
+ "abusefilter-exception-unrecognisedtoken": "Onbekannt Zeechen \"$2\" beim Zeechen $1.",
+ "abusefilter-exception-noparams": "Keng Parameter ugi fir d'Funktioun \"$2\" beim Zeechen $1",
+ "abusefilter-exception-dividebyzero": "Versuch fir $2 duerch null ze dividéieren beim Buchstaw $1.",
+ "abusefilter-exception-unrecognisedvar": "Onerkannt Variabel $2 beim Zeechen $1",
+ "abusefilter-exception-overridebuiltin": "Illegaalt Iwwerschreiwe vun der agebauter Variabel \"$2\" beim Zeechen $1.",
+ "abusefilter-exception-outofbounds": "Ufro vum Element - dat et net gëtt - vun der Lëscht $2 (Gréisst vun der Lëscht = $3) beim Zeeche(n) $1.",
+ "abusefilter-action-tag": "Markéieren",
+ "abusefilter-action-throttle": "Lues maachen",
+ "abusefilter-action-warn": "Warnen",
+ "abusefilter-action-blockautopromote": "\"autopromote\" spären",
+ "abusefilter-action-block": "Spären",
+ "abusefilter-action-degroup": "Aus Gruppen eraushuelen",
+ "abusefilter-action-rangeblock": "Spär vum Beräich",
+ "abusefilter-action-disallow": "Net erlaben",
+ "abusefilter-revert-title": "All Ännerungen duerch de Filter $1 zrécksetzen",
+ "abusefilter-revert-intro": "Dëse Formulaire erlaabt et fir all Ännerunge vum Mëssbrauchsfilterm duerch de Filter $1 zréckzesetzen.\nBenotzt dës Funktioun w.e.g. nëmme wann Dir hir Konsequenzen ofschätze kënnt.",
+ "abusefilter-revert-preview-item": "$1: $2 huet $3 op $4 {{GENDER:$7|gemaach}}.\nAktiounen déi zréckgesat ginn: $5 ($6)",
+ "abusefilter-revert-search-legend": "Mëssbrauchsfilteren erauswielen déi zréckgesat solle ginn",
+ "abusefilter-revert-periodstart": "Ufank vun der Period:",
+ "abusefilter-revert-periodend": "Enn vun der Period:",
+ "abusefilter-revert-search": "Aktiounen auswielen",
+ "abusefilter-revert-filter": "Nummer (ID) vum Filter:",
+ "abusefilter-revert-preview-intro": "Hei ënnerdënner stinn déi Aktioune vum Mëssbrauchsfilter déi duerch dës Aktioun zréckgesat wäerte ginn.\nKuckt se w.e.g. genee no a klickt \"{{int:abusefilter-revert-confirm}}\" fir Är Wiel ze confirméieren.",
+ "abusefilter-revert-confirm-legend": "D'Zrécksetze confirméieren",
+ "abusefilter-revert-confirm": "Confirméieren",
+ "abusefilter-revert-success": "Dir hutt all Aktioune vum Mëssbrauchsfilter, op Grond vum [[Special:AbuseFilter/$1|Filter $2]] zréckgesat.",
+ "abusefilter-revert-reason": "All Aktioune vum Mëssbrauchsfilter opgrond vum Filter $1 zrécksetzen.\nGrond: $2",
+ "abusefilter-revert-reasonfield": "Grond:",
+ "abusefilter-test": "De Filter mat de leschten Ännerungen ausprobéieren",
+ "abusefilter-test-intro": "Dës Säit erlaabt Iech et e Filter mat {{PLURAL:$1|der leschter Ännerung|de leschte(n) $1 Ännerungen}} z'iwwerpréifen.\nFir e Filter ze luede gitt seng Filter ID an d'Këscht ënner der Textkëscht an a klickt op de Knäppche \"{{int:abusefilter-test-load}}\".",
+ "abusefilter-test-legend": "Test vum Filter",
+ "abusefilter-test-load-filter": "Luede vum Filter mat der ID:",
+ "abusefilter-test-submit": "Test",
+ "abusefilter-test-load": "Lueden",
+ "abusefilter-test-user": "Ännerunge vum Benotzer:",
+ "abusefilter-test-period-start": "Ännerungen nom:",
+ "abusefilter-test-period-end": "Ännerungen déi virdru gemaach goufen:",
+ "abusefilter-test-page": "Ännerungen déi op dëser Säit gemaach goufen",
+ "abusefilter-test-shownegative": "Ännerunge weisen déi net op de Filter passen",
+ "abusefilter-test-syntaxerr": "Am Filter deen Dir aginn hutt ass e Syntaxfeeler.\nDir kënnt eng komplett Erklärung kréie wann Dir op de Knäppche \"{{int:abusefilter-edit-check}}\" klickt.",
+ "abusefilter-test-badtitle": "De Säitentitel deen Dir aginn hutt ass net valabel. Et ka sinn datt een oder méi Buschtawen dra sinn déi an Titelen net benotzt kënne ginn.",
+ "abusefilter-changeslist-examine": "ënnersichen",
+ "abusefilter-examine": "Individuell Ännerungen ënnersichen",
+ "abusefilter-examine-intro": "Dës Säit erlaabt et d'Variabelen déi vun engem Mëssbrauchsfilter fir eng Ännerung generéiert goufen z'ënnersichen a se mat de Filteren ze testen.",
+ "abusefilter-examine-legend": "Ännerungen auswielen",
+ "abusefilter-examine-diff": "Ënnerscheed URL:",
+ "abusefilter-examine-user": "Benotzer:",
+ "abusefilter-examine-title": "Titel vun der Säit:",
+ "abusefilter-examine-submit": "Sichen",
+ "abusefilter-examine-vars": "Variabelen, déi fir dës Ännerung generéiert goufen",
+ "abusefilter-examine-test": "Dës Ännerung mat engem Filter testen",
+ "abusefilter-examine-test-button": "De Filter ausprobéieren",
+ "abusefilter-examine-match": "De Filter erfaasst dës Ännerung.",
+ "abusefilter-examine-nomatch": "De Filter erfaasst dës Ännerung net.",
+ "abusefilter-examine-syntaxerror": "D'Syntax vun dësem Filter ass net valabel",
+ "abusefilter-examine-notfound": "Déi Ännerung déi Dir gefrot hutt gouf net fonnt.",
+ "abusefilter-examine-incompatible": "Déi Ännerung déi Dir ugefrot hutt gëtt net vum Mëssbrauchsfilter ënnerstëtzt",
+ "abusefilter-examine-noresults": "Et gouf näischt fonnt mat de Sich-Parameter déi Dir uginn hutt",
+ "abusefilter-topnav": "'''Navigatioun vum Mëssbrauchs-Filter'''",
+ "abusefilter-topnav-home": "Haaptsäit",
+ "abusefilter-topnav-test": "Regelen testen",
+ "abusefilter-topnav-examine": "Déi lescht Ännerungen nokucken",
+ "abusefilter-topnav-log": "Logbuch vum Mëssbrauch",
+ "abusefilter-topnav-tools": "Debugg-Geschir",
+ "abusefilter-topnav-import": "Fiter importéieren",
+ "abusefilter-log-name": "Logbuch vum Mëssbrauchsfilter",
+ "abusefilter-log-header": "Dëst Logbuch weist e Resumé vun Ännerungen déi un de Filtere gemaach goufen.\nFir weider Detailer, kuckt [[Special:AbuseFilter/history|d'Lëscht]] vun de rezenten Filterännerungen.",
+ "abusefilter-logentry-modify": "$1 huet $4 ($5) {{GENDER:$2|geännert}} $4 ($5)",
+ "abusefilter-log-noresults": "Keng Resultater",
+ "abusefilter-diff-title": "Ënnerscheeder tëscht Versiounen",
+ "abusefilter-diff-item": "Objet",
+ "abusefilter-diff-version": "Versioun vum $1 {{GENDER:$3|vum}} $2",
+ "abusefilter-diff-info": "Basisinformatiounen",
+ "abusefilter-diff-pattern": "Konditioune vum Filter",
+ "abusefilter-diff-invalid": "Déi ugefrot Versioune kënnen net fonnt ginn",
+ "abusefilter-diff-backhistory": "Zréck op d'Lëscht vun de Versioune vum Filter",
+ "abusefilter-diff-prev": "Méi al Ännerung",
+ "abusefilter-diff-next": "Méi nei Ännerung",
+ "abusefilter-import-intro": "Dir kënnt dësen Interface benotze fir Filtere vun anere Wikien z'importéieren.\nKlickt op der originaler Wiki op \"{{int:abusefilter-edit-export}}\" ënner \"{{int:abusefilter-edit-tools}}\" op dem Interface vun den Ännerungen.\nKopéiert vun der Textkëscht déi opgeet an dës Textkëscht a klickt op \"{{int:abusefilter-import-submit}}\",",
+ "abusefilter-import-submit": "Donnéeën importéieren",
+ "abusefilter-group-default": "Standard",
+ "abusefilter-http-error": "Et ass en HTTP-Feeler geschitt: $1.",
+ "abusefilter-view-private-submit": "Privat Detailer weisen",
+ "abusefilter-view-private": "Privat Detailer weisen",
+ "abusefilter-log-ip-not-available": "Net disponibel",
+ "apihelp-abusefilterchecksyntax-description": "Syntax vun engem Mëssbrauchsfilter nokucken.",
+ "apihelp-abusefilterchecksyntax-example-1": "Syntax vun engem valabele Filter nokucken",
+ "apihelp-abusefilterchecksyntax-example-2": "Syntax vun engem net-valabele Filter nokucken",
+ "apihelp-abusefilterunblockautopromote-param-user": "Benotzernumm vum Benotzer dem seng Spär dir ophiewe wëllt.",
+ "apihelp-query+abusefilters-description": "Detailer vum Mëssbrauchsfilter weisen",
+ "apihelp-query+abusefilters-summary": "Detailer vun de Mëssbrauchsfiltere weisen",
+ "apihelp-query+abusefilters-example-2": "E puer Detailer iwwer Filtere weisen",
+ "apierror-abusefilter-canttest": "Dir sidd net berechtegt fir Mëssbrauchsfilteren ze testen.",
+ "apierror-abusefilter-cantcheck": "Dir sidd net berechtegt fir d'Syntax vu Mëssbrauchsfilteren no ze kucken.",
+ "apierror-abusefilter-badsyntax": "De Filter huet eng net valabel Syntax."
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/lez.json b/www/wiki/extensions/AbuseFilter/i18n/lez.json
new file mode 100644
index 00000000..60d19290
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/lez.json
@@ -0,0 +1,20 @@
+{
+ "@metadata": {
+ "authors": [
+ "Namik",
+ "Soul Train"
+ ]
+ },
+ "abusefilter-log-search-user": "Иштиракчи:",
+ "abusefilter-log-search-submit": "Ахтармишун",
+ "abusefilter-log-noactions": "садни",
+ "abusefilter-log-hide-reason": "Кар",
+ "abusefilter-list-edit": "Дегишарун",
+ "abusefilter-deleted": "Алудун",
+ "abusefilter-edit-history": "Тарих",
+ "abusefilter-edit-builder-op-bool-not": "Ваъ (!)",
+ "abusefilter-edit-builder-op-bool-and": "ва",
+ "abusefilter-action-block": "Блокарун",
+ "abusefilter-action-degroup": "КӀеретӀдикай акъудун",
+ "abusefilter-topnav-home": "КIвал"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/lfn.json b/www/wiki/extensions/AbuseFilter/i18n/lfn.json
new file mode 100644
index 00000000..d852d1ec
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/lfn.json
@@ -0,0 +1,19 @@
+{
+ "@metadata": {
+ "authors": [
+ "Malafaya"
+ ]
+ },
+ "abusefilter-log-search-user": "Usor:",
+ "abusefilter-log-search-title": "Titulo:",
+ "abusefilter-log-search-submit": "Xerca",
+ "abusefilter-edit-status-label": "Statistica",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|secondo|secondos}}",
+ "abusefilter-edit-history": "Istoria",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Soma (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Sutrae (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Multiplia (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Divide (/)",
+ "abusefilter-edit-builder-group-funcs": "Funsiones",
+ "abusefilter-history-user": "Usor"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/li.json b/www/wiki/extensions/AbuseFilter/i18n/li.json
new file mode 100644
index 00000000..8716d4cc
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/li.json
@@ -0,0 +1,361 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ooswesthoesbes",
+ "Pahles",
+ "Matma Rex"
+ ]
+ },
+ "abusefilter-desc": "Veurtj automatisch heuristische analyse oet op bewerkinge",
+ "abusefilter": "Misbroekfilterinsjtellinge",
+ "abuselog": "Misbroeklogbook",
+ "abusefilter-intro": "Dit is 't beheersjerm van de misbroekfilter.\nDe misbroekfilter is e systeem det automatische heuristiek toepas op alle hanjelinge.\nVia dit sjerm waere alle ingestelde filters waergegaeve en kinne die aangepas waere.",
+ "abusefilter-mustbeeditor": "Om veiligheidsredene höbbe allein gebroekers mit 't rech om filters te wiezige de meugelikheid dezen interface te gebroeke.",
+ "abusefilter-warning": "'''Waarsjuwing''': Dees hanjeling is automatisch geïdentificeerd as sjadelik.\nOnconstructieve bewerkinge waere snel trökgedreid, en herhaald onconstructief bewerke eindig in n blokkade van diene gebroeker of IP.\nAs se dinks det dees bewerking waal constructief is, klik dan opnuuj op \"Pagina opslaon\" om de bewerking te bevestige.\n'n Korte besjrieving van de regel op basis waarvan de bewerking is taegegehouwe vólg noe: $1",
+ "abusefilter-disallowed": "Deze hanjeling is automatisch geïdentificeerd as sjadelik, en daarom neet toegelaote.\nAs 't dinkt dat de bewerking waol constructief was, naem dan contact op met 'n beheerder, en informeer hem waat de probeerde te doon.\n'ne Korte besjrieving van de regel op basis waarvan de bewerking is tegegehouwe vólgt noe: $1",
+ "abusefilter-blocked-display": "Dees hanjeling is automatisch geïdentificeerd as sjadelik. Daorom is deze neet oetgeveurd.\nOm {{SITENAME}} te besjerme zeen de gebroeker en alle biebeheurende IP-adresse geblokkeerd.\nAs deze maotregel onterech is genaome, naem dan contact op mit ne beheerder.\nEen korte besjrieving van de regel op basis wovan de bewerking is tegegehouwe volg noe: $1",
+ "abusefilter-degrouped": "Deze hanjeling is automatisch geïdentificeerd as sjadelik.\nOmdat is vasgesteld dat deze gebroeker mogelik door emand angers wort misbroek, zeen alle rechte ingetrokke.\nAs deze maatregel onterech is genaome, naem dan contact op mit n bureaucraat en lich deze hanjeling tsouw, zodat de rechte hersteld kunne were.\nEen korte besjrieving van de regel op basis waovan de bewerking is tegegehouwe volg noe: $1",
+ "abusefilter-autopromote-blocked": "Deze hanjeling is automatisch geïdentificeerd as sjadelik. Daorom is deze neet oetgeveurd.\nAs aanvullende veiligheidsmaotregel zeen 'n aantal automatisch toegekinde rechte veur de gebroeker tiedelik ingetroch.\nEen korte besjrieving van de regel op basis waervan de bewerking is tegegehoue völg noe: $1",
+ "abusefilter-blocker": "Misbroekfilter",
+ "abusefilter-blockreason": "Autematis geblokkeerd door misbroekfilter. Besjrieving van de regel dae dit veroorzaakde: $1",
+ "abusefilter-degroupreason": "Rechte zeen autematis verwijderd door de misbroekfilter. Regelbesjrieving: $1",
+ "abusefilter-accountreserved": "Deze gebroeker is gereserveerd veur de misbroekfilter.",
+ "right-abusefilter-modify": "Wiezig misbroekfilters",
+ "right-abusefilter-view": "Bekiek misbroekfilters",
+ "right-abusefilter-log": "Bekiek 't misbroeklogbook",
+ "right-abusefilter-log-detail": "Bekiek details van misbroeklogbookregels",
+ "right-abusefilter-private": "Bekiek bepèrk zichbare gegaeves in 't misbroeklogbook",
+ "right-abusefilter-modify-restricted": "Wiezig misbroekfilters mit bepèrkte hanjelinge",
+ "right-abusefilter-revert": "Drei alle wieziginge door 'ne misbroekfilter truuk",
+ "right-abusefilter-view-private": "Bekiek es beperk zichbaar gemarkeerde filters",
+ "right-abusefilter-hide-log": "Verberg meljinge in 't filterlogbook",
+ "right-abusefilter-hidden-log": "Bekiek verbórge meljinge in 't filterlogbook",
+ "action-abusefilter-modify": "wiezig misbroekfilters",
+ "action-abusefilter-view": "bekiek misbroekfilters",
+ "action-abusefilter-log": "bekiek misbroeklogbook",
+ "action-abusefilter-log-detail": "bekiek gedetailleerde misbroeklogbookvermeldinge",
+ "action-abusefilter-private": "bekiek privégegaeves in 't misbroeklogbook",
+ "action-abusefilter-modify-restricted": "wiezig misbroekfilters mit bepèrkte hanjelinge",
+ "action-abusefilter-revert": "drei alle wieziginge door 'ne bepaolde misbroekfilter truuk",
+ "action-abusefilter-view-private": "es beperk zichbaar gemarkeerde filters bekiekbaar",
+ "abusefilter-log": "Misbroeklogbook",
+ "abusefilter-log-summary": "Dit logbook guf 'ne lies van hanjelinge die opgevange zeen door misbroekfilters.",
+ "abusefilter-log-search": "Doorzeuk 't misbroeklogbook",
+ "abusefilter-log-search-user": "Gebroeker:",
+ "abusefilter-log-search-filter": "Filter ID:",
+ "abusefilter-log-search-title": "Titel:",
+ "abusefilter-log-search-submit": "Zeuk",
+ "abusefilter-log-entry": "$1: $2 leet 'ne misbroekfilter aafgaon bie 't oetveure hanjeling \"$3\" op $4.\nGenaome maatregel: $5.\nFilterbesjrieving: $6",
+ "abusefilter-log-detailedentry-meta": "$1: $2 leet $3 aafgaon bie 't oetveure van de hanjeling \"$4\" op $5.\nGenaome maatregel: $6.\nFilterbesjrieving: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "globaal filter $1",
+ "abusefilter-log-detailedentry-local": "filter $1",
+ "abusefilter-log-detailslink": "kleinighijjer",
+ "abusefilter-log-hidelink": "pas zichbaarheid aan",
+ "abusefilter-log-details-legend": "Details veur logregel $1",
+ "abusefilter-log-details-var": "Variabel",
+ "abusefilter-log-details-val": "Waerj",
+ "abusefilter-log-details-vars": "Maotregelparremaeter",
+ "abusefilter-log-details-private": "Bepèrk zichber gegaeves",
+ "abusefilter-log-details-ip": "IP-adres",
+ "abusefilter-log-noactions": "gein",
+ "abusefilter-log-details-diff": "Bewèrkingsangeringer",
+ "abusefilter-log-linkoncontribs": "filterlogbook",
+ "abusefilter-log-linkoncontribs-text": "Filterlogbook veur deze gebroeker",
+ "abusefilter-log-hidden": "(meljing verbórge)",
+ "abusefilter-log-details-hidden": "Doe kins de details van dees meljing neet bekieke ómdet dees verbórge is.",
+ "abusefilter-log-hide-legend": "Verberg logbookregel",
+ "abusefilter-log-hide-id": "Logbookmeljingsnómmer:",
+ "abusefilter-log-hide-hidden": "Verberg dees meljing",
+ "abusefilter-log-hide-reason": "Reeje:",
+ "abusefilter-log-hide-forbidden": "Doe höbs neet de juuste rechte óm meljinge in 't filterlogbook te verberge.",
+ "abusefilter-logentry-suppress": "verbórg [[$1]]",
+ "abusefilter-logentry-unsuppress": "maakde [[$1]] zichbaar",
+ "abusefilter-management": "Misbroekfilterbehieër",
+ "abusefilter-list": "Al filter",
+ "abusefilter-list-id": "Filter ID",
+ "abusefilter-list-status": "Staat",
+ "abusefilter-list-public": "Vólksómsjrieving",
+ "abusefilter-list-consequences": "Gevölg",
+ "abusefilter-list-visibility": "Zichberhed",
+ "abusefilter-list-hitcount": "Slaagtèller",
+ "abusefilter-list-edit": "Bewèrk",
+ "abusefilter-list-details": "Kleinighijjer",
+ "abusefilter-list-limit": "Taal per paasj:",
+ "abusefilter-list-lastmodified": "Lèste angering",
+ "abusefilter-hidden": "Bepèrk",
+ "abusefilter-unhidden": "Vólk",
+ "abusefilter-enabled": "Ingezatj",
+ "abusefilter-deleted": "Gewösj",
+ "abusefilter-disabled": "Oetgezatj",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|slaag|slaag}}",
+ "abusefilter-new": "Maak 'ne nuuje filter aan",
+ "abusefilter-return": "Trök göch filterbieër",
+ "abusefilter-status-global": "Globaal",
+ "abusefilter-list-options": "Opsjes",
+ "abusefilter-list-options-deleted": "Gewösjde filters:",
+ "abusefilter-list-options-deleted-only": "Tuin allein eweggesjafde filters",
+ "abusefilter-list-options-deleted-hide": "Verbèrg gewösjdje filters",
+ "abusefilter-list-options-deleted-show": "Nöm gwösjdje filters óp",
+ "abusefilter-list-options-disabled": "Gewösjdje filters:",
+ "abusefilter-list-options-hidedisabled": "Verbèrg oetgezadje filters",
+ "abusefilter-list-options-submit": "Wèrk bie",
+ "abusefilter-tools-text": "Dit zeen 'n aantal hulpmiddele die van pas kinne kómme bie 't formulere en debugge van misbroekfilters.",
+ "abusefilter-tools-expr": "Expressjetes",
+ "abusefilter-tools-submitexpr": "Evaljewieër",
+ "abusefilter-tools-reautoconfirm": "Sjtel autematis bevestigde staat opnuuj in",
+ "abusefilter-tools-reautoconfirm-user": "Broeker:",
+ "abusefilter-tools-reautoconfirm-submit": "Bevestig opnuuj autematis",
+ "abusefilter-reautoconfirm-none": "Veur daen gebroeker is de autematisse bevèstigde status neet ingetróch.",
+ "abusefilter-reautoconfirm-notallowed": "Doe haes gein rechten óm de autematis bevèstigde status óppernuuj in te stelle.",
+ "abusefilter-reautoconfirm-done": "De bevestigde gebroekersstatus van de gebroeker is herstèld",
+ "abusefilter-status": "Van de leste $1 {{PLURAL:$1|hanjeling|hanjelinge}}, {{PLURAL:$2|haet t'r 1|höbbe d'r $2}} ($3%) de drempelwaerd van $4 bereik, en {{PLURAL:$5|pas|passe}} $5 ($6%) bie ein van de hujig ingesjakelde filters.",
+ "abusefilter-edit-subtitle": "Bewèrkendje filter $1",
+ "abusefilter-edit-oldwarning": "<strong>Doe bös 'n aaj versie van deze filter aan 't bewerke.\nDe weergegaeve statistieke gelje veur de lèste versie van de filter.\nEs 't öch wieziginge opsleit, euversjrief t'r alle wijziginge die nao deze versie zeen gemaak.</strong> &bull;\n[[Special:AbuseFilter/history/$2|Trögk no de gesjiedenis van deze filter]]",
+ "abusefilter-edit-status-label": "Euverzich:",
+ "abusefilter-edit-status": "{{PLURAL:$1|De leste hanjeling vóldeej|Van de leste $1 hanjelinge vóldeje d'r $2}} aan deze filter ($3%).",
+ "abusefilter-edit-status-profile": "{{PLURAL:$1|De leste hanjeling vóldeej|Van de leste $1 hanjelinge vóldeje d'r $2}} aan deze filter ($3%).\nDe gemiddelde louptied van de filtercontrole is $4ms, en deze gebroek $5 {{PLURAL:$5|conditie|condities}} van de conditielimiet.",
+ "abusefilter-edit-new": "Nuuje filter",
+ "abusefilter-edit-save": "Slaon filter óp",
+ "abusefilter-edit-id": "Filter ID:",
+ "abusefilter-edit-description": "Ómsjrieving:\n:''(vólkszichber)''",
+ "abusefilter-edit-flags": "Vlegk:",
+ "abusefilter-edit-enabled": "Zèt deze filter in",
+ "abusefilter-edit-deleted": "Markeer es eweggesjaf",
+ "abusefilter-edit-hidden": "Verbèrg filterdetails veur 't vólk",
+ "abusefilter-edit-global": "Pas deze filter wikiwied toe",
+ "abusefilter-edit-rules": "Regel:",
+ "abusefilter-edit-notes": "Noeat:\n:''(privaat)''",
+ "abusefilter-edit-lastmod": "Filter lès angerdj:",
+ "abusefilter-edit-lastmod-text": "$1 doearch $2",
+ "abusefilter-edit-hitcount": "Filter slaag:",
+ "abusefilter-edit-consequences": "Genómme aksjes bie euverkóms",
+ "abusefilter-edit-action-warn": "Veur dizze regel oet bedet 'ne broeker 'n waorsjoewing haet bekómme",
+ "abusefilter-edit-action-disallow": "Veurkóm dette broeker de hanjeling deit",
+ "abusefilter-edit-action-blockautopromote": "Wis de bevestigdje staat dezer broeker",
+ "abusefilter-edit-action-degroup": "Wis de broeker oet alle broekergruup",
+ "abusefilter-edit-action-block": "Blok bewèrke doearche broeker ènóf IP",
+ "abusefilter-edit-action-throttle": "Veur regel nur oet wenne broeker 'ne drempel euversjriejd",
+ "abusefilter-edit-action-rangeblock": "Blok de /16reeks wo de gebroeker aafkömp.",
+ "abusefilter-edit-action-tag": "Mekeer de bewèrking veur later ketraol.",
+ "abusefilter-edit-throttle-count": "Taal ven gooj henjeling:",
+ "abusefilter-edit-throttle-period": "Tiedsdoer:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|second|second}}",
+ "abusefilter-edit-throttle-groups": "Groepsbepèrking per tiedseinhed op baas ven:\n:''(eine perlien, combinere mid komma)''",
+ "abusefilter-edit-warn-message": "Te broeke systeembrich bie waarsjoeng:",
+ "abusefilter-edit-warn-other": "Anger brich",
+ "abusefilter-edit-warn-other-label": "Paasjnaam of anger brich:\n:''(zóngre MediaWikiprefix)''",
+ "abusefilter-edit-warn-actions": "Henjilign:",
+ "abusefilter-edit-warn-preview": "Veurvertuun geselkteerd brich",
+ "abusefilter-edit-warn-edit": "Maak/bewèrk gesillekteerd berich",
+ "abusefilter-edit-tag-tag": "Te zètte teg (eine perlien):",
+ "abusefilter-edit-denied": "De moogs de details dezer filter neet bekieke, omdet die neet zichber vrielik zeen.",
+ "abusefilter-edit-main": "Filterparamaeter",
+ "abusefilter-edit-done-subtitle": "Filter bewèrk",
+ "abusefilter-edit-done": "De wieziginge aan de filter $1 zeen opgeslage.",
+ "abusefilter-edit-badsyntax": "d'r Zit 'n syntaxisfout in de opgegaeve filter.\nDe oetveur van de parser waas: <pre>$1</pre>",
+ "abusefilter-edit-restricted": "Doe kins deze filter neet bewèrken ómdet dezen ein of mier beperkde hanjelinge bevat.\nVraog 'ne gebroeker mit toestömming óm beperkde hanjelingen toe te vogen óm de wieziging veur dich te make.",
+ "abusefilter-edit-viewhistory": "Bekiek gesjiedenès vanne filter",
+ "abusefilter-edit-history": "Gesjiedenès:",
+ "abusefilter-edit-check": "Bekiek syntax",
+ "abusefilter-edit-badfilter": "D'n aangegaeve filter besteit neet",
+ "abusefilter-edit-revert": "Drei dore filter gnaom regel trögk",
+ "abusefilter-edit-tools": "Hölp:",
+ "abusefilter-edit-test-link": "Deze filter taenge lèste bewèrkinge preuve",
+ "abusefilter-edit-export": "Exporteer deze filter nao 'nen angere wiki",
+ "abusefilter-edit-syntaxok": "d'r Zeen gein syntaxisfoute gevónje.",
+ "abusefilter-edit-syntaxerr": "d'r Is 'n syntaxisfout gevónje: $1",
+ "abusefilter-edit-bad-tags": "Ein of mier vanne labels die se haes opgegaeve is/zeen neet gèljig.\nLabels mótte kórt zeen en moge gein speciaal teikes bevatte.",
+ "abusefilter-edit-notallowed": "Doe haes gein rechten óm filters aan te maken óf te verangere.",
+ "abusefilter-edit-builder-select": "Silktieër 'n opsjen óm dees ane kurzer te zitte",
+ "abusefilter-edit-builder-group-op-arithmetic": "Aritmeopratäör",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Óptèlle (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Aaftrèkke (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Kieëre (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Deile (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Meduul (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Mach (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Vergliekingsopratäör",
+ "abusefilter-edit-builder-op-comparison-equal": "Gliek es (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Óngliek es (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "Klènder es (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Groeater es (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Kleinder es óf gliek (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Groeater es óf gliek (>=)",
+ "abusefilter-edit-builder-group-op-bool": "Booleaanopratäör",
+ "abusefilter-edit-builder-op-bool-not": "Neet (!)",
+ "abusefilter-edit-builder-op-bool-and": "Èn (&)",
+ "abusefilter-edit-builder-op-bool-or": "Ódder (|)",
+ "abusefilter-edit-builder-group-misc": "Euverig",
+ "abusefilter-edit-builder-misc-in": "behaetj in tèks (in)",
+ "abusefilter-edit-builder-misc-like": "Vóldeitj aan petroean (like)",
+ "abusefilter-edit-builder-misc-rlike": "Vóldeitj aan regex (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "Vóldeit aan regulier expressie, houfletteróngeveulig (irlike)",
+ "abusefilter-edit-builder-misc-contains": "Linkstèks haet rèchtèks (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "Lètterlik tèks (\"\")",
+ "abusefilter-edit-builder-misc-tern": "Tèrnaeropratäör (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "Veurwaerdelik (es X den Y anges Z)",
+ "abusefilter-edit-builder-group-funcs": "Fönksje",
+ "abusefilter-edit-builder-funcs-length": "Tèkslèngdje (length)",
+ "abusefilter-edit-builder-funcs-lcase": "Mid klein lètter (lcase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "Maak vaelendje lètter good (ccnorm)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "Wösj dóbbellètter (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "Biezönjer lètter / gans lètter (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "Maak good (norm)",
+ "abusefilter-edit-builder-funcs-count": "Taal ven kieër tèks X bekömp in tèks Y (count)",
+ "abusefilter-edit-builder-funcs-rcount": "Taal ven kieër regex X bekömp in tèks Y (rcount)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "Wösj wietruumdje (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "Wösj biezönjer teikes (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "Isse IP inne reeks? (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "Doorzeuk de teks op mierder teksdeile (contains_any)",
+ "abusefilter-edit-builder-funcs-substr": "Teksdeil (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "Teksdeilplaats (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "Vervang 't teksdeil door teks (str_replace)",
+ "abusefilter-edit-builder-funcs-set_var": "Stèl variabele in (set_var)",
+ "abusefilter-edit-builder-group-vars": "Varrejabele",
+ "abusefilter-edit-builder-vars-accountname": "Gebroekersnaom (on account creation)",
+ "abusefilter-edit-builder-vars-timestamp": "VerangeringsUNIX-tiedstempel",
+ "abusefilter-edit-builder-vars-action": "Aksje",
+ "abusefilter-edit-builder-vars-addedlines": "Regel toegevoeg in bwèrking",
+ "abusefilter-edit-builder-vars-delta": "Groeadje angering",
+ "abusefilter-edit-builder-vars-diff": "Unified diff ven angering in bewerking",
+ "abusefilter-edit-builder-vars-newsize": "Nuuj paasjgreudje",
+ "abusefilter-edit-builder-vars-oldsize": "Aaj paasjgreudje",
+ "abusefilter-edit-builder-vars-removedlines": "Regels gwösj in biedraag",
+ "abusefilter-edit-builder-vars-summary": "Bewèrkingssamevatting",
+ "abusefilter-edit-builder-vars-article-id": "Paasj ID",
+ "abusefilter-edit-builder-vars-article-ns": "Paasjnaomruumde",
+ "abusefilter-edit-builder-vars-article-text": "Paasjnaom (zónger naamruumde)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Ganse paasjnaom",
+ "abusefilter-edit-builder-vars-movedfrom-id": "Pagina-ID venne verplaatsbere naam",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "Naamruumdje venne verplaatsbere paasj",
+ "abusefilter-edit-builder-vars-movedfrom-text": "Naom venne verplaatsber paasj",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "Gans noam venne verplaatsbere paasj",
+ "abusefilter-edit-builder-vars-movedto-id": "Pagina-IDbestömming venne verplaatsbere paasj",
+ "abusefilter-edit-builder-vars-movedto-ns": "Bestömmingsnaamruumde venne verplaatsber paasj",
+ "abusefilter-edit-builder-vars-movedto-text": "Bestömminsnaam venne verplaatsber paasj",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "Ganse bestömmingsnaom venne verplaatsber paasj",
+ "abusefilter-edit-builder-vars-user-editcount": "Broekerbewèrkingtaal",
+ "abusefilter-edit-builder-vars-user-age": "Broekerlaeftied",
+ "abusefilter-edit-builder-vars-user-name": "Gebroekersnaam",
+ "abusefilter-edit-builder-vars-user-groups": "Gruup (inclusief impliciete) wo de gebroeker leed van is",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "E-mailbevèstigingstiedstip",
+ "abusefilter-edit-builder-vars-recent-contributors": "Leste tieën paginabewirkers",
+ "abusefilter-edit-builder-vars-all-links": "Alle extern verwiezinge in de nuuj teks",
+ "abusefilter-edit-builder-vars-added-links": "Alle extern verwiezinge die in dees bewirking zeen toegevoog",
+ "abusefilter-edit-builder-vars-removed-links": "Alle bie dees bewirking toegevoogde extern verwiezinge zeen gewösj",
+ "abusefilter-edit-builder-vars-old-text": "Wikiteks van de aaj pagina veur de bewirking",
+ "abusefilter-edit-builder-vars-new-text": "Wikiteks van de nuuj pagina nao de bewirking",
+ "abusefilter-edit-builder-vars-new-text-stripped": "Nuuj paginateks, óntdaon van ópmaakcode",
+ "abusefilter-edit-builder-vars-new-html": "Verwirkde HTML-bróncode van de nuuj versie",
+ "abusefilter-edit-builder-vars-restrictions-edit": "Beveiligingsniveau veur bewirke van de pagina",
+ "abusefilter-edit-builder-vars-restrictions-move": "Beveiligingsniveau veur verplaatse van de pagina",
+ "abusefilter-edit-builder-vars-old-text-stripped": "Teks aaj pagina, óntdaon van allen ópmaak",
+ "abusefilter-edit-builder-vars-old-links": "Verwiezinge in de pagina veur de bewirking",
+ "abusefilter-edit-builder-vars-old-html": "Wikiteks aaj pagina in HTML",
+ "abusefilter-edit-builder-vars-minor-edit": "Of de bewirking waal of neet es klein gemarkeerd is.",
+ "abusefilter-edit-builder-vars-file-sha1": "SHA1-hashcode van de bestandjsinhawd",
+ "abusefilter-filter-log": "Recente filterwieziginge",
+ "abusefilter-history": "Gesjiedenis veur de filter #$1",
+ "abusefilter-history-foruser": "Verangeringe door $1",
+ "abusefilter-history-hidden": "verbórge",
+ "abusefilter-history-enabled": "Ingesjakeldj",
+ "abusefilter-history-global": "Wikiwied",
+ "abusefilter-history-timestamp": "Tied",
+ "abusefilter-history-user": "Gebroeker",
+ "abusefilter-history-public": "Pebleiek filterbesjrieving",
+ "abusefilter-history-flags": "Vlegke",
+ "abusefilter-history-filter": "Filterregel",
+ "abusefilter-history-comments": "Ópmèrkinger",
+ "abusefilter-history-actions": "Aksjes",
+ "abusefilter-history-backedit": "Trök nao de filterbewèrker",
+ "abusefilter-history-deleted": "Gewösj",
+ "abusefilter-history-filterid": "Filter",
+ "abusefilter-history-select-legend": "Verfien zeuk",
+ "abusefilter-history-select-user": "Gebroeker:",
+ "abusefilter-history-select-submit": "Verfien",
+ "abusefilter-history-diff": "Bewèrkinger",
+ "abusefilter-history-error-hidden": "De filter daen se haes ópgevraog is verbórgen en doe kins de gesjiedenis neet bekieke.",
+ "abusefilter-exception-unexpectedatend": "Ónverwachse \"$2\" bie karakter $1.",
+ "abusefilter-exception-expectednotfound": "'ne Verwachse $2 bie karakter $1 is neet aangetróffe.\nIn plaats daovan is $3 $4 aangetróffe.",
+ "abusefilter-exception-unrecognisedkeyword": "Trefwaord $2 bie karakter $1 is neet herkend.",
+ "abusefilter-exception-unexpectedtoken": "Onverwachs token \"$3\" (van type $2) bie karakter $1.",
+ "abusefilter-exception-unclosedstring": "Neet-geslaote teks die begintj bie karakter $1.",
+ "abusefilter-exception-invalidoperator": "Ongeljigen operator \"$2\" bie karakter $1.",
+ "abusefilter-exception-unrecognisedtoken": "Token \"$2\" neet herkindj bie karakter $1.",
+ "abusefilter-exception-noparams": "d'r Zeen gein paramaeters opgegaeve veur functie \"$2\" bie karakter $1.",
+ "abusefilter-exception-dividebyzero": "Ongeljige poging toet deile van $2 door nul bie karakter $1.",
+ "abusefilter-exception-unrecognisedvar": "Onherkènbare variabele $2 bie karakter $1",
+ "abusefilter-exception-notenoughargs": "d'r Zeen neet zat parameters ingegaeve veur de functie $2 die is aangeropen in karakter $1.\nd'r {{PLURAL:$3|Woort eine paramaeter|Woorte $3 paramaeters}} verwach en d'r {{PLURAL:$4|is t'r eine|zeen d'r $4}} aangetróffe.",
+ "abusefilter-exception-regexfailure": "d'r Is 'n fout aangetróffen in de regulier expressie \"$3\" bie karakter $1: \"$2\"",
+ "abusefilter-exception-overridebuiltin": "De ingeboewde variable \"$2\" is vervange bie karakter $1.\nDit is neet toegestange.",
+ "abusefilter-exception-outofbounds": "d'r Is getrach e lieselement ($2 bie liesgruuedje $3) op te haole det neet besteit bie karakter $1.",
+ "abusefilter-exception-notlist": "d'r Is getrach e verzamelingselement op te vraogen oet get det gein verzameling is bie karakter $1.",
+ "abusefilter-action-tag": "Label",
+ "abusefilter-action-throttle": "Limiete",
+ "abusefilter-action-warn": "Waorsjuuw",
+ "abusefilter-action-blockautopromote": "Blokkeer autematis promovere",
+ "abusefilter-action-block": "Blokkeer",
+ "abusefilter-action-degroup": "Oet gruup verwijderd",
+ "abusefilter-action-rangeblock": "Blokkeer IP-reeks",
+ "abusefilter-action-disallow": "Neet toegestange",
+ "abusefilter-revert-title": "Alle wieziginge door filter $1 truukdreie",
+ "abusefilter-revert-intro": "Via dit formeleer kins se alle wieziginge die door de misbroekfilter via filter $1 gemaak zeen truukdreie.\nGebroek dit hulpmiddel zorgvuldig.",
+ "abusefilter-revert-preview-item": "$1: $2 haet 'ne $3 gemaak op $4.\nTruuk te dreie maotregele: $5 ($6)",
+ "abusefilter-revert-search-legend": "Selecteer 'ne misbroekfiltermaotregel óm truuk te dreie",
+ "abusefilter-revert-periodstart": "Begin periode:",
+ "abusefilter-revert-periodend": "Einde periode:",
+ "abusefilter-revert-search": "Selecteer maotregele",
+ "abusefilter-revert-filter": "Filter:",
+ "abusefilter-revert-preview-intro": "Hie ónger sjtaon de maotregele die de misbroekfilter haet genomme die door deze hanjeling waere truukgedreid.\nControleer de truuk te dreie maotregele zorgvuldig, en klik \"bevestig\" óm dien selectie te bevestige.",
+ "abusefilter-revert-confirm": "bevestig",
+ "abusefilter-revert-success": "Doe höbs alle maotregele die door de misbroekfilter via [[Special:AbuseFilter/$1|filter $2]] zeen genomme truukgedreid.",
+ "abusefilter-revert-reason": "Autematis truukdreie van alle maotregele door de misbroekfilter via filter $1.\nRaej: $2",
+ "abusefilter-revert-reasonfield": "Raeje veur truukdreiing:",
+ "abusefilter-test": "Tes 'ne filter taenge eerdere bewirkinge",
+ "abusefilter-test-intro": "Op dees pazjena kins se 'ne ingegaeve filter controlere met de letste {{PLURAL:$1|wiezing|$1 wiezinge}}.\nGaef 'n filternummer in om 'ne bestaonde filter te laje, en klik daonao op de knoep \"Laaje\".",
+ "abusefilter-test-legend": "Tes filter",
+ "abusefilter-test-load-filter": "Filternummer laje:",
+ "abusefilter-test-submit": "Tes",
+ "abusefilter-test-load": "Laaj",
+ "abusefilter-test-user": "Verangeringe door gebroeker:",
+ "abusefilter-test-period-start": "Verangeringe gemaak nao:",
+ "abusefilter-test-period-end": "Verangeringe gemaak veur:",
+ "abusefilter-test-page": "Verangeringe aan pagina:",
+ "abusefilter-test-shownegative": "Toean verangeringe die neet aan de filter voldoon",
+ "abusefilter-test-syntaxerr": "De filter daen se haes ingeveurd bevat 'n syntaxisfout.\nDoor op \"Syntaxis controleren\" te klikke kriegs se 'n volledige toelichting.",
+ "abusefilter-changeslist-examine": "óngerzeuk",
+ "abusefilter-examine": "Óngerzeuk individueel verangeringe",
+ "abusefilter-examine-intro": "Via dees pagina kins se de door de filter aangemaakde variabele veur 'n individueel verangering óngerzeuken en dees teste taenge filters.",
+ "abusefilter-examine-legend": "Selecteer wieziginge",
+ "abusefilter-examine-diff": "Vers URL:",
+ "abusefilter-examine-user": "Gebroeker:",
+ "abusefilter-examine-title": "Paginanaam:",
+ "abusefilter-examine-submit": "Zeuk",
+ "abusefilter-examine-vars": "Variabele veur dees verangering",
+ "abusefilter-examine-test": "Tes dees verangering taengen 'ne filter",
+ "abusefilter-examine-test-button": "Tes filter",
+ "abusefilter-examine-match": "De filter vóldeit aan dees verangering.",
+ "abusefilter-examine-nomatch": "De filter vóldeit neet aan dees verangering.",
+ "abusefilter-examine-syntaxerror": "De filter haet 'nen óngeljigen ópmaak.",
+ "abusefilter-examine-notfound": "De verangering die se haes opgevraog is neet aangetróffe.",
+ "abusefilter-examine-incompatible": "De filter ondersteunt de verangering die se haes opgevraog neet",
+ "abusefilter-examine-noresults": "d'r Zeen geun resultate gevónje veur de zeukopdrachparamaeters die se haes opgegaeve.",
+ "abusefilter-topnav": "'''Filternavigatie'''",
+ "abusefilter-topnav-home": "Veurmenu",
+ "abusefilter-topnav-test": "Batchtes",
+ "abusefilter-topnav-examine": "Óngerzeuk bewirkinge",
+ "abusefilter-topnav-log": "Filterlogbook",
+ "abusefilter-topnav-tools": "Hólpmiddele veur debugge",
+ "abusefilter-topnav-import": "Importeer filter",
+ "abusefilter-log-name": "Filterlogbook",
+ "abusefilter-log-header": "Dit logbook geuf 'n euverzich van filterverangeringe.\nZuuch de [[Special:AbuseFilter/history|lies mit recente filterverangeringe]] veur volledige details.",
+ "abusefilter-log-noresults": "Gein resultate",
+ "abusefilter-diff-title": "(Versjil tösje versies)",
+ "abusefilter-diff-item": "Deil",
+ "abusefilter-diff-version": "Versie van $1 door $2",
+ "abusefilter-diff-info": "Basisinfo",
+ "abusefilter-diff-pattern": "Filterveurwaerj",
+ "abusefilter-diff-invalid": "'t Waas neet meugelik de gevraogde versies op te haole",
+ "abusefilter-diff-backhistory": "Trök nao de filterhistorie",
+ "abusefilter-import-submit": "Veur data in"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/lij.json b/www/wiki/extensions/AbuseFilter/i18n/lij.json
new file mode 100644
index 00000000..4b172960
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/lij.json
@@ -0,0 +1,21 @@
+{
+ "@metadata": {
+ "authors": [
+ "Giromin Cangiaxo"
+ ]
+ },
+ "abusefilter-desc": "O l'apprica un'euiristega aotomattica a-e modiffiche.",
+ "abusefilter": "Configuaçion do filtro anti abuxi",
+ "abuselog": "Registro do filtro anti abuxi",
+ "abusefilter-intro": "Benvegnui inte l'interfaccia de gestion do filtro anti abuxi.\nO filtro anti abuxi o l'è un scistema aotomatizou pe l'appricaçion di œüristeghe aotomattiche a tutte i açioin.\nL'interfaccia a mostra 'na lista di filtri definii e a ne consente a modiffica.",
+ "abusefilter-mustbeeditor": "Pe motivi de segueça, solo i utenti co-o drito de modificâ i filtri anti abuxi poeuan doeuviâ questa interfaccia.",
+ "abusefilter-warning": "'''Attençion''': Quest'açion a l'è stæta aotomaticamente identificâ comme peigoza.\nE modifiche non costruttive saian fito annulæ; l'inseimento paleise o ripetuo di contribui non costruttivi daiâ loeugo a-o blocco de l'utença ò do to adresso IP.\nSe ti pensci che l'açion in question a segge costruttiva, ti devi inviâla torna pe confermâla.\nQuesta a l'è una breve descriçion da reggola anti abuso che t'hæ infranto: $1",
+ "abusefilter-disallowed": "Quest'açion a l'è stæta aotomaticamente identificâ comme dannoza e quindi impedia.\nSe ti creddi che a to açion a l'ea construtiva, informa un aministratô de quello che ti çercavi de fâ.\nQuesta a l'è una breve descriçion da reggola de segueça ch'a l'è stæta violâ: $1",
+ "abusefilter-blocked-display": "Quest'açion a l'è stæta aotomaticamente identificâ comme dannoza e t'è stæto impedio de compîla.\nDe ciu, pe proteze {{SITENAME}}, a to utença e tutti i adressi IP associæ son stæti bloccæ da-o fâ modiffiche.\nSe l'è stæto un errô, pe piaxei contatta un aministratô.\nQuesta a l'è una breve descriçion da reggola de segueça ch'a l'è stæta violâ: $1",
+ "abusefilter-management": "Manezzo do filtro anti abuxi",
+ "abusefilter-list-public": "Descriçion pubbrica",
+ "abusefilter-list-options-deleted-hide": "Ascondi i filtri scassæ",
+ "abusefilter-list-options-deleted-show": "Includdi i filtri scassæ",
+ "abusefilter-list-options-hidedisabled": "Ascondi i filtri disattivæ",
+ "abusefilter-status": "Fra i urtime $1 {{PLURAL:$1|açion|açioin}}, $2 ($3 %) {{PLURAL:$2|o l'ha|han}} razonto o limmite de $4 condiçioin e $5 ($6 %) {{PLURAL:$5|o l'ha|han}} attivou un di filtri attoalmente attivi."
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/lki.json b/www/wiki/extensions/AbuseFilter/i18n/lki.json
new file mode 100644
index 00000000..b2a0243d
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/lki.json
@@ -0,0 +1,19 @@
+{
+ "@metadata": {
+ "authors": [
+ "Lakzon"
+ ]
+ },
+ "abusefilter-warning": "'''اخطار''': این کار به طور خودکار خطرناک تشخیص داده‌شده‌است.\nویرایش‌های غیرسازنده به سرعت واگردانی خواهند شد،\nو ویرایش‌های عمدی یا مکرر خرابکارانه منجر به بسته شدن حساب یا نشانی آی‌پی شما خواهد شد.\nاگر مطمئنید که این عمل مفید است باید دوباره آن را تأیید کنید.\nخلاصه‌ای از توضیح قانون جلوگیری از خرابکاری که با کار شما مطابقت دارد چنین است: $1",
+ "abusefilter-disallowed": "این کار به طور خودکار خطرناک تشخیص داده شده‌است و بنابراین نامجاز است.\nاگر فکر می‌کنید که عملتان درست بوده‌است لطفاً به یکی از مدیران بگویید که چه می‌خواهید بکنید.\nخلاصه‌ای از توضیح قانون جلوگیری از خرابکاری که با کار شما مطابقت دارد چنین است: $1",
+ "abusefilter-blocked-display": "این کار به طور خودکار خطرناک تشخیص داده‌شده است،\nو شما از اجرای آن منع شدید.\nبه علاوه، برای حفاظت از {{SITENAME}}، حساب شما و آی‌پی‌های مرتبط با آن به طور خودکار بسته شده‌اند.\nاگر فکر می‌کنید اشتباهی شده با یکی از مدیران تماس بگیرید.\nخلاصه‌ای از توضیح قانون جلوگیری از خرابکاری که با کار شما مطابقت دارد چنین است: $1",
+ "abusefilter-degrouped": "این کار به طور خودکار خطرناک تشخیص داده‌شده‌است،\nبرای همین شما اجازهٔ انجام‌دادن این کار را ندارید و به طور خودکار دسترسی‌تان به سامانه محدود می‌شود.\nدرصورتی که فکر می‌کنید اشتباهی شده‌است با یکی از دیوانسالاران تماس بگیرید و توضیح خود را دربارهٔ این عمل ارائه کنید تا اختیارات شما بازگردد.\nخلاصه‌ای از توضیح قانون جلوگیری از خرابکاری که با کار شما مطابقت دارد چنین است: $1",
+ "abusefilter-autopromote-blocked": "این کار به طور خودکار خطرناک تشخیص داده شده و از آن جلوگیری شده‌است.\nبه علاوه، به منظور حفظ امنیت، برخی دسترسی‌ها که به طور معمول به حساب‌های کاربر قابل اطمینان داده شده موقتاً از حساب کاربری شما پس گرفته شده‌است.\nخلاصه‌ای از توضیح قانون جلوگیری از خرابکاری که با کار شما مطابقت دارد چنین است: $1",
+ "abusefilter-blockreason": "به طور خودکار توسط پالایهٔ خرابکاری بسته شد.\nتوضیح قانون مطابقت‌یافته: $1",
+ "abusefilter-degroupreason": "از طریق پالایهٔ خرابکاری دسترسی کاربر گرفته شد.\nتوضیح قانون: $1",
+ "abusefilter-log-entry": "$1: $2 توسط پالایهٔ خرابکاری گرفته شد؛ مشغول اجرای «$3» بر روی $4 بود.\nعمل پالایه: $5؛\nتوضیحات پالایه: $6",
+ "abusefilter-log-entry-withdiff": "$1: $2 یک فیلتر سوء مصرف به کار انداخته شده، در حال انجام عمل \"$3\" در $4 است.‌\nعملیات صورت گرفته: $5؛\nتوضیحات فیلر: $6 ($7)",
+ "abusefilter-list-public": "توضیحات عمومی",
+ "abusefilter-edit-description": "توضیحات:\n:''(قابل مشاهده توسط عموم)''",
+ "abusefilter-history-public": "توضیحات عمومی پالایه"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/lmo.json b/www/wiki/extensions/AbuseFilter/i18n/lmo.json
new file mode 100644
index 00000000..f1750945
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/lmo.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Dakrismeno",
+ "Sprüngli"
+ ]
+ },
+ "abusefilter-desc": "L'aplica de l'heuristega automatega a li edizion",
+ "abusefilter": "Configuration del filter d'abus",
+ "abuselog": "Diari d'abus",
+ "abusefilter-warning": "Chetsa azion a l'è staida automatigament identifiada en tant che dagnousa.\nLi edizion miga construtivi i sarà revertid à bott, e grand o repetud edizion mia constructivi i resultarà end al cost cunt o ordenadour blocad. Se cas che creghée che chesta edizion la sighi construtiva, a podée clicar Sotmet de nœuv per confirmar-la. Una curta descripzion de la regula d'abus che la vosta edizion l'ha rencontrad a l'è: $1",
+ "abusefilter-diff-info": "Infurmazión de bas",
+ "abusefilter-diff-pattern": "Cundizión di filter"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/ln.json b/www/wiki/extensions/AbuseFilter/i18n/ln.json
new file mode 100644
index 00000000..f58d54a9
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/ln.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "Eruedin"
+ ]
+ },
+ "abusefilter-log-search-user": "Mosáleli:",
+ "abusefilter-log-search-submit": "Boluki",
+ "abusefilter-log-noactions": "ntingá",
+ "abusefilter-log-hide-reason": "Ntína:"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/lrc.json b/www/wiki/extensions/AbuseFilter/i18n/lrc.json
new file mode 100644
index 00000000..14970f3a
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/lrc.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "Mogoeilor",
+ "Lakzon"
+ ]
+ },
+ "abusefilter-list-public": "توضیحات عمومی",
+ "abusefilter-list-edit": "ڤیرایئشت",
+ "abusefilter-edit-notes": "نيسنيا:"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/lt.json b/www/wiki/extensions/AbuseFilter/i18n/lt.json
new file mode 100644
index 00000000..3e93246f
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/lt.json
@@ -0,0 +1,431 @@
+{
+ "@metadata": {
+ "authors": [
+ "Audriusa",
+ "Eitvys200",
+ "Homo",
+ "Ignas693",
+ "Mantak111",
+ "Matasg",
+ "Perkunas",
+ "Tomasdd",
+ "Vogone",
+ "Vpovilaitis",
+ "Matma Rex",
+ "Manvydasz",
+ "Hugo.arg"
+ ]
+ },
+ "abusefilter-desc": "Pakeitimų tikrinimui naudojamas automatinis euristinis tikrinimas",
+ "abusefilter": "Piktnaudžiavimų filtravimo priemonė",
+ "abuselog": "Piktnaudžiavimų sąrašas",
+ "abusefilter-intro": "Sveiki atvykę į piktnaudžiavimų filtrų valdymo puslapį.\nPiktnaudžiavimo filtras yra automatizuota programinė priemonė, kuri atlieka automatinę euristinę visų veiksmų kontrolę.\nŠiame puslapyje yra pateikiamas sąrašas visų apibrėžtų filtrų, ir jame yra leidžiama juos redaguoti.",
+ "abusefilter-mustbeeditor": "Saugumo tikslais, tik naudotojai, turintys teisę redaguoti piktnaudžiavimo filtrus, gali naudoti šią priemonę.",
+ "abusefilter-warning": "'''Dėmesio:''' Šis veiksmas buvo automatiškai atpažintas kaip kenksmingas.\nNevertingi pakeitimai bus greitai atmesti, dideli ar pasikartojantys nevertingi pakeitimai gali nulemti Jūsų paskyros ar IP adreso blokavimą.\nJei manote, kad šis pakeitimas yra vertingas, tai patvirtindami, paspauskite išsaugojimo mygtuką.\nČia trumpai aprašytas su Jūsų pakeitimu susijęs piktnaudžiavimo filtras: $1",
+ "abusefilter-disallowed": "Šis veiksmas buvo automatiškai atpažintas kaip kenksmingas, todėl neleista jo įvykdyti.\nJei manote, kad pakeitimas buvo vertingas, prašome susisiekti su administratoriumi ir jam pranešti apie tai, ką norėjote padaryti.\nČia trumpai aprašytas su Jūsų veiksmu susijęs piktnaudžiavimo filtras: $1",
+ "abusefilter-blocked-display": "Šis veiksmas buvo automatiškai identifikuotas kaip kenksmingas ir todėl jis buvo neleistas įvykdyti.\nPapildomai, apsaugant {{SITENAME}}, Jūsų naudotojo sąskaita ir visi atitinkami IP adresai buvo blokuoti pakeitimų atlikimui.\nJei tai įvyko per klaidą, prašome susisiekti su administratoriumi.\nTrumpas aprašymas piktnaudžiavimo taisyklės, kurią Jūsų veiksmas atitinka, yra: $1",
+ "abusefilter-degrouped": "Šis veiksmas buvo automatiškai identifikuotas kaip kenksmingas ir todėl jis buvo neleistas įvykdyti.\nPapildomai, kadangi susikompromitavo Jūsų naudotojo sąskaita, visos teisės buvo atimtos. Jei Jūs galvojate, kad tai įvyko per klaidą, prašome susisiekti su biurokratu, paaiškindami šią situaciją, tuomet Jūsų teisė bus atstatytos. Trumpas aprašymas piktnaudžiavimo taisyklės, kurią Jūsų veiksmas atitiko, yra: $1",
+ "abusefilter-autopromote-blocked": "Šis veiksmas buvo automatiškai identifikuotas kaip kenksmingas ir todėl jis buvo neleistas įvykdyti.\nPapildomai, saugumo tikslais, Jūsų naudotojo sąskaitai leidžiamos privilegijuotos galimybės laikinai buvo panaikintos.\nTrumpas aprašymas piktnaudžiavimo taisyklės, kurią Jūsų veiksmas atitinka, yra: $1",
+ "abusefilter-blocker": "Piktnaudžiavimų filtras",
+ "abusefilter-blockreason": "Automatiškai blokuotas pagal piktnaudžiavimų filtrą.\nAtitinkamos taisyklės aprašymas: $1",
+ "abusefilter-degroupreason": "Teisės automatiškai sumažintos pagal piktnaudžiavimų filtrą.\nTaisyklės aprašymas: $1",
+ "abusefilter-accountreserved": "Šis sąskaitos vardas yra rezervuotas piktnaudžiavimų filtro naudojimui.",
+ "right-abusefilter-modify": "Keisti piktnaudžiavimo filtrus",
+ "right-abusefilter-view": "Peržiūrėti piktnaudžiavimo filtrus",
+ "right-abusefilter-log": "Peržiūrėti piktnaudžiavimų protokolą",
+ "right-abusefilter-log-detail": "Peržiūrėti detalų piktnaudžiavimų protokolą",
+ "right-abusefilter-private": "Peržiūrėti privačius duomenis piktnaudžiavimų protokole",
+ "right-abusefilter-modify-restricted": "Keisti piktnaudžiavimo filtrus su uždraustais veiksmais",
+ "right-abusefilter-revert": "Atmesti visus pakeitimus pagal konkretų piktnaudžiavimų filtrą",
+ "right-abusefilter-view-private": "Žiūrėti piktnaudžiavimo filtrus, pažymėtus kaip privatūs.",
+ "right-abusefilter-log-private": "Rodyti piktnaudžiavimo filtrų žurnalo įrašus pažymėtus kaip privačius",
+ "right-abusefilter-hide-log": "Slėpti piktnaudžiavimo žurnalo įrašus",
+ "right-abusefilter-hidden-log": "Peržiūrėti paslėptus piktnaudžiavimo žurnalo įrašus",
+ "right-abusefilter-modify-global": "Sukurti arba keisti pasaulio piktnaudžiavimo filtrus",
+ "action-abusefilter-modify": "keisti piktnaudžiavimo filtrų",
+ "action-abusefilter-view": "peržiūrėti piktnaudžiavimo filtrų",
+ "action-abusefilter-log": "peržiūrėti piktnaudžiavimų protokolo",
+ "action-abusefilter-log-detail": "peržiūrėti detalaus piktnaudžiavimų protokolo",
+ "action-abusefilter-private": "peržiūrėti privačius duomenis piktnaudžiavimų protokole",
+ "action-abusefilter-modify-restricted": "keisti piktnaudžiavimo filtrų su uždraustais veiksmais",
+ "action-abusefilter-revert": "anuliuoti visus pakeitimus pagal konkretų piktnaudžiavimų filtrą",
+ "action-abusefilter-view-private": "žiūrėti piktnaudžiavimo filtrus, pažymėtus kaip privatūs",
+ "abusefilter-log": "Piktnaudžiavimų sąrašas",
+ "abusefilter-log-summary": "Šiame sąraše pateikiami visi veiksmai, aptikti filtrų.",
+ "abusefilter-log-search": "Ieškoti piktnaudžiavimų protokole",
+ "abusefilter-log-search-user": "Naudotojas:",
+ "abusefilter-log-search-filter": "Filtro ID:",
+ "abusefilter-log-search-title": "Antraštė:",
+ "abusefilter-log-search-wiki": "Wiki:",
+ "abusefilter-log-search-submit": "Ieškoti",
+ "abusefilter-log-entry": "$1: $2 atliko veiksmą, kuris suaktyvino piktnaudžiavimo filtrą, {{GENDER:$8|atliko}} „$3“ veiksmą $4.\nVeiksmas atliktas: $5;\nFiltro aprašymas: $6",
+ "abusefilter-log-entry-withdiff": "$1: $2 atliko veiksmą, kuris suaktyvino filtrą, {{GENDER:$8|atliko}} „$3“ veiksmą $4.\nVeiksmas atliktas: $5;\nFiltro apibūdinimas: $6 ($7)",
+ "abusefilter-log-detailedentry-meta": "$1: $2 {{GENDER:$9|sužadino}} piktnaudžiavimo filtrą $3, {{GENDER:$9|atlikdamas|atlikdama}} veiksmą \"$4\" puslapiui $5.\nBuvo panaudotas veiksmas: $6;\nFiltro aprašymas: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "visuotinis filtras $1",
+ "abusefilter-log-detailedentry-local": "filtras $1",
+ "abusefilter-log-detailslink": "detalės",
+ "abusefilter-log-diff": "skirt",
+ "abusefilter-log-hidelink": "koreguoti matomumą",
+ "abusefilter-log-details-legend": "Protokolo įrašo $1 detalės",
+ "abusefilter-log-details-var": "Kintamasis",
+ "abusefilter-log-details-val": "Reikšmė",
+ "abusefilter-log-details-vars": "Veiksmo parametrai",
+ "abusefilter-log-details-private": "Privatūs duomenys",
+ "abusefilter-log-details-ip": "Pradinis IP adresas",
+ "abusefilter-log-noactions": "nėra",
+ "abusefilter-log-details-diff": "Redagavimo pakeitimai",
+ "abusefilter-log-linkoncontribs": "piktnaudžiavimų sąrašas",
+ "abusefilter-log-linkoncontribs-text": "Šio naudotojo piktnaudžiavimų sąrašas",
+ "abusefilter-log-hidden": "(paslėptas įrašas)",
+ "abusefilter-log-hidden-implicit": "(paslėpta, nes peržiūra buvo panaikinta)",
+ "abusefilter-log-cannot-see-details": "Jūs neturite teisės peržiūrėti informaciją apie šį įrašą.",
+ "abusefilter-log-details-hidden": "Negalima peržiūrėti informaciją apie šį įrašą, nes jis yra paslėptas nuo viešo peržiūrėjimo.",
+ "abusefilter-log-hide-legend": "Slėpti žurnalo įrašą",
+ "abusefilter-log-hide-id": "Žurnalo įrašo ID:",
+ "abusefilter-log-hide-hidden": "Slėpti šį įrašą nuo višuo rodymo",
+ "abusefilter-log-hide-reason": "Priežastis",
+ "abusefilter-log-hide-forbidden": "Jūs neturite teisių paslėpti piktnaudžiavimo žurnalo įrašus.",
+ "abusefilter-logentry-suppress": "paslėpti \"[[ $1 ]]\"",
+ "abusefilter-logentry-unsuppress": "neslėpti \"[[$1]]\"",
+ "abusefilter-management": "Piktnaudžiavimo filtrų valdymas",
+ "abusefilter-list": "Visi filtrai",
+ "abusefilter-list-id": "Filtro ID",
+ "abusefilter-list-status": "Būsena",
+ "abusefilter-list-public": "Viešasis aprašymas",
+ "abusefilter-list-consequences": "Pasekmės",
+ "abusefilter-list-visibility": "Matomumas",
+ "abusefilter-list-hitcount": "Atvejų skaičius",
+ "abusefilter-list-edit": "Redaguoti",
+ "abusefilter-list-details": "Detalės",
+ "abusefilter-list-limit": "Skaičius puslapyje:",
+ "abusefilter-list-lastmodified": "Paskutinis pakeitimas",
+ "abusefilter-list-group": "Filtro grupė",
+ "abusefilter-hidden": "Privatus",
+ "abusefilter-unhidden": "Viešas",
+ "abusefilter-enabled": "Įjungtas",
+ "abusefilter-deleted": "Panaikintas",
+ "abusefilter-disabled": "Išjungtas",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|atvejis|atvejai|atvejų}}",
+ "abusefilter-new": "Sukurti naują filtrą",
+ "abusefilter-return": "Grįžti į filtrų valdymą",
+ "abusefilter-status-global": "Visuotinis",
+ "abusefilter-list-options": "Variantai",
+ "abusefilter-list-options-deleted": "Pašalinti filtrai:",
+ "abusefilter-list-options-deleted-only": "Rodyti tik pašalintus filtrus",
+ "abusefilter-list-options-deleted-hide": "Paslėpti pašalintus filtrus",
+ "abusefilter-list-options-deleted-show": "Rodyti pašalintus filtrus",
+ "abusefilter-list-options-scope": "Rodyti filtrus:",
+ "abusefilter-list-options-scope-local": "Tik vietinės taisyklės",
+ "abusefilter-list-options-scope-global": "Tik visuotinės taisyklės",
+ "abusefilter-list-options-scope-all": "Vietos ir visuotinės taisyklės",
+ "abusefilter-list-options-disabled": "Išjungti filtrai:",
+ "abusefilter-list-options-hidedisabled": "Paslėpti išjungtus filtrus",
+ "abusefilter-list-options-submit": "Pakeisti",
+ "abusefilter-tools-text": "Čia yra keletas priemonių, kurios gali būti naudingos formuluojant ir derinant piktnaudžiavimo filtrus.",
+ "abusefilter-tools-expr": "Išraiškų testavimo priemonė",
+ "abusefilter-tools-submitexpr": "Patikrinti",
+ "abusefilter-tools-reautoconfirm": "Atstatyti automatiškai patvirtinto būseną",
+ "abusefilter-tools-reautoconfirm-user": "Naudotojas:",
+ "abusefilter-tools-reautoconfirm-submit": "Iš naujo konfigūruoti",
+ "abusefilter-reautoconfirm-none": "{{GENDER:$1|Šiam naudotojui|Šiai naudotojai|Šiam naudotojui}} nėra sustabdyta automatiškai {{GENDER:$1|patvirtinto|patvirtintos|patvirtinto}} būsena.",
+ "abusefilter-reautoconfirm-notallowed": "Jūs neturite teisės atstatyti automatiškai patvirtintos būsenos.",
+ "abusefilter-reautoconfirm-done": "Sąskaitos automatiškai patvirtinta būsena bus atstatyta",
+ "abusefilter-status": "{{PLURAL:$1|Paskutinis|Paskutiniai|Paskutiniu}} $1 {{PLURAL:$1|veiksmas|veiksmai|veiksmų}}, $2 ($3%) {{PLURAL:$2|veiksmu|veiksmais|veiksmais}} buvo pasiektas sąlygos limitas $4 ir $5 ($6%) {{PLURAL:$5|veiksmu|veiksmais|veiksmais}} veiksmais vienas iš filtrų buvo įjungtas.",
+ "abusefilter-edit": "Redagavimo piktnaudžiavimo filtras",
+ "abusefilter-edit-subtitle": "Redaguoti filtrą $1",
+ "abusefilter-edit-subtitle-new": "Kuriant filtrą",
+ "abusefilter-edit-oldwarning": "<strong>Jūs keičiate seną šio filtro versiją.\nRodoma statistika paskaičiuota paskutinei filtro versijai.\nJei įrašysite pakeitimus, jūs perrašysite visus pakeitimus, darytus po dabar redaguojamos versijos.</strong> &bull;\n[[Special:AbuseFilter/history/$2|Grįžti į šio failo istoriją]].",
+ "abusefilter-edit-status-label": "Statistika:",
+ "abusefilter-edit-status": "{{PLURAL:$1|Paskutinis|Paskutiniai|Paskutinių}} $1 {{PLURAL:$1|veiksmas|veiksmai|veiksmų}}, Šį filtrą atitiko $2 ($3%). Vidutinis jų vykdymo laikas yra $4ms, sunaudota $5 {{PLURAL:$5|sąlyga|sąlygos|sąlygų}} iš limito.",
+ "abusefilter-edit-status-profile": "{{PLURAL:$1|Paskutinis|Paskutiniai|Paskutinių}} $1 {{PLURAL:$1|veiksmas|veiksmai|veiksmų}}, Šį filtrą atitiko $2 ($3%). Vidutinis jų vykdymo laikas yra $4ms, sunaudota $5 {{PLURAL:$5|sąlyga|sąlygos|sąlygų}} iš limito.",
+ "abusefilter-edit-new": "Naujas filtras",
+ "abusefilter-edit-save": "Išsaugoti filtrą",
+ "abusefilter-edit-id": "Filtro ID:",
+ "abusefilter-edit-description": "Aprašymas:\n:''(viešai matomas)''",
+ "abusefilter-edit-group": "Filtro grupė:",
+ "abusefilter-edit-flags": "Žymės:",
+ "abusefilter-edit-enabled": "Įjungti šį filtrą",
+ "abusefilter-edit-deleted": "Pažymėti trynimui",
+ "abusefilter-edit-hidden": "Paslėpti šio filtro detales nuo viešojo matymo",
+ "abusefilter-edit-global": "Pasaulio filtras",
+ "abusefilter-edit-rules": "Sąlygos:",
+ "abusefilter-edit-notes": "Pastabos:",
+ "abusefilter-edit-lastmod": "Paskutinį kartą filtras buvo keistas:",
+ "abusefilter-edit-lastmod-text": "$1 naudotojo $2",
+ "abusefilter-edit-hitcount": "Filtro pritaikymai:",
+ "abusefilter-edit-consequences": "Veiksmai, kurių imamasi, kai yra tenkinama sąlyga",
+ "abusefilter-edit-action-warn": "Iškviečia šiuos veiksmus po to, kai vartotojas yra perspėtas",
+ "abusefilter-edit-action-disallow": "Sulaikyti naudotoją nuo abejotino veiksmo atlikimo",
+ "abusefilter-edit-action-blockautopromote": "Atšaukti naudotojo automatiškai patvirtinto būseną",
+ "abusefilter-edit-action-degroup": "Pašalinti vartotoją iš visų privilegijuotų grupių",
+ "abusefilter-edit-action-block": "Blokuoti naudotoją ir / arba IP adresą, neleidžiant redaguoti",
+ "abusefilter-edit-action-throttle": "Iškviesti veiksmus tik jei naudotojas atitinkamų pakeitimų skaičius pasiekė nustatytą limitą",
+ "abusefilter-edit-action-rangeblock": "Blokuoti /16 aibę nuo kurios naudotojas padėjo",
+ "abusefilter-edit-action-tag": "Žymė pakeitimų, skirtų vėlesniam peržiūrėjimui",
+ "abusefilter-edit-throttle-count": "Leidžiamų veiksmų skaičius:",
+ "abusefilter-edit-throttle-period": "Laiko periodas:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|sekundė|sekundės|sekundžių}}",
+ "abusefilter-edit-throttle-groups": "Statistikos rinkimo grupė:\n:''(viena eilutėje, jungti kableliais)''",
+ "abusefilter-edit-warn-message": "Sisteminis pranešimas, kuris naudojamas perspėjimui:",
+ "abusefilter-edit-warn-other": "Kitas pranešimas",
+ "abusefilter-edit-warn-other-label": "Kito pranešimo puslapio vardas:\n:''(be MediaWiki priešdėlio)''",
+ "abusefilter-edit-warn-actions": "Veiksmai:",
+ "abusefilter-edit-warn-preview": "Peržiūrėti pasirinktą pranešimą",
+ "abusefilter-edit-warn-edit": "Sukurti/Redaguoti pasirinktą pranešimą",
+ "abusefilter-edit-tag-tag": "Naudojamos žymės (po vieną eilutėje):",
+ "abusefilter-block-anon": "anoniminiai naudotojai",
+ "abusefilter-block-user": "prisiregistravę naudotojai",
+ "abusefilter-edit-denied": "Jūs negalite peržiūrėti šio filtro detalių, nes jis yra paslėptas nuo viešojo matymo.",
+ "abusefilter-edit-main": "Filtro parametrai",
+ "abusefilter-edit-done-subtitle": "Filtras pakeistas",
+ "abusefilter-edit-done": "[[Special:AbuseFilter/history/$1/diff/prev/$2|Jūsų pakeitimai]] [[Special:AbuseFilter/$1|filtrui $3]] buvo išsaugoti.",
+ "abusefilter-edit-badsyntax": "Jūsų nurodytame filtre yra sintaksinė klaida.\nIšskleidus buvo gautas tekstas: <pre>$1</pre>",
+ "abusefilter-edit-restricted": "Jūs negalite redaguoti šio filtro, kadangi jis turi vieną arba daugiau uždraustų veiksmų.\nPrašau kreiptis į vartotoją, turintį teisę naudoti uždraustus veiksmus, atlikti keitimą už jus.",
+ "abusefilter-edit-viewhistory": "Peržiūrėti šio filtro istoriją",
+ "abusefilter-edit-history": "Istorija:",
+ "abusefilter-edit-check": "Patikrinti sintaksę",
+ "abusefilter-edit-badfilter": "Filtras, kurį Jūs nurodėte, neegzistuoja",
+ "abusefilter-edit-revert": "Atšaukti veiksmus atliktus pagal šį filtrą",
+ "abusefilter-edit-tools": "Priemonės:",
+ "abusefilter-edit-test-link": "Šį filtrą testuoti naujausiems pakeitimams",
+ "abusefilter-edit-export": "Eksportuoti šį filtrą į kitą wiki",
+ "abusefilter-edit-syntaxok": "Sintaksės klaidų nerasta.",
+ "abusefilter-edit-syntaxerr": "Rasta sintaksės klaida: $1",
+ "abusefilter-edit-bad-tags": "Vieną ar daugiau žymių, jūsų nurodytų neleistinas.\nŽymos turėtų būti trumpos, ir jose neturėtų būti specialiųjų simbolių.",
+ "abusefilter-edit-notallowed": "Jums neleidžiama kurti arba redaguoti piktnaudžiavimo filtrų",
+ "abusefilter-edit-notallowed-global": "Jums neleidžiama kurti arba redaguoti piktnaudžiavimo filtrų",
+ "abusefilter-edit-notallowed-global-custom-msg": "Specialios perspėjimo žinutės nėra palaikomos visuotinių filtrų",
+ "abusefilter-edit-builder-select": "Pasirinkite variantą įstatymui kursoriaus pozicijoje",
+ "abusefilter-edit-builder-group-op-arithmetic": "Aritmetinės operacijos",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Sudėtis (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Atimtis (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Daugyba (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Dalyba (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Modulis (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Laipsnis (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Palyginimo operacijos",
+ "abusefilter-edit-builder-op-comparison-equal": "Lygu (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Nelygu (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "Mažiau (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Daugiau (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Mažiau arba lygu (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Daugiau arba lygu (>=)",
+ "abusefilter-edit-builder-group-op-bool": "Loginės operacijos",
+ "abusefilter-edit-builder-op-bool-not": "Ne (!)",
+ "abusefilter-edit-builder-op-bool-and": "Ir (&)",
+ "abusefilter-edit-builder-op-bool-or": "Arba (|)",
+ "abusefilter-edit-builder-group-misc": "Įvairios",
+ "abusefilter-edit-builder-misc-in": "Įeina į simbolių eilutę (in)",
+ "abusefilter-edit-builder-misc-like": "Atitinka šabloną (like)",
+ "abusefilter-edit-builder-misc-rlike": "Atitinka reguliarią išraišką (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "Rungtynės regex, raidžių (irlike)",
+ "abusefilter-edit-builder-misc-contains": "Kairė simbolių eilutė įeina į dešiniąją (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "Simbolinė konstanta (\"\")",
+ "abusefilter-edit-builder-misc-tern": "Trinarė operacija (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "Sąlyga (if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "Funkcijos",
+ "abusefilter-edit-builder-funcs-length": "Simbolių eilutės ilgis (length)",
+ "abusefilter-edit-builder-funcs-lcase": "Į apatinį registrą (lcase)",
+ "abusefilter-edit-builder-funcs-ucase": "Į apatinį registrą (ucase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "Normalizuoti abejotinus simbolius (ccnorm)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "Panaikinti dvigubus simbolius (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "Specialūs simboliai / visi simboliai (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "Normalizuoti (norm)",
+ "abusefilter-edit-builder-funcs-count": "Skaičius kiek kartų simbolių eilutė X įeina į eilutę Y (count)",
+ "abusefilter-edit-builder-funcs-rcount": "Skaičius kiek kartų reguliari išraiška X įeina į simbolių eilutę Y (rcount)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "Panaikinti nereikšminius tarpus (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "Panaikinti specialius simbolius (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "Ar IP priklauso potinkliui? (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "Ieškoti simbolių eilutėje kelių poeilučių (contains_any)",
+ "abusefilter-edit-builder-funcs-substr": "Poeilutė (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "Poeilutės pozicija eilutėje (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "Pakeisti poeilutę kita simbolių eilute (str_replace)",
+ "abusefilter-edit-builder-funcs-set_var": "Priskirti kintamajam (set_var)",
+ "abusefilter-edit-builder-group-vars": "Kintamieji",
+ "abusefilter-edit-builder-vars-accountname": "Sąskaitos vardas (on account creation)",
+ "abusefilter-edit-builder-vars-timestamp": "Pakeitimo laikas",
+ "abusefilter-edit-builder-vars-action": "Veiksmas",
+ "abusefilter-edit-builder-vars-addedlines": "Eilutės, kurios įstatytos redaguojant",
+ "abusefilter-edit-builder-vars-delta": "Dydis pakeistas redaguojant",
+ "abusefilter-edit-builder-vars-diff": "Pakeitimo skirtumai",
+ "abusefilter-edit-builder-vars-newsize": "Naujas puslapio dydis",
+ "abusefilter-edit-builder-vars-oldsize": "Senasis puslapio dydis",
+ "abusefilter-edit-builder-vars-old-content-model": "Seno turinio modelis",
+ "abusefilter-edit-builder-vars-new-content-model": "Naujo turinio modelis",
+ "abusefilter-edit-builder-vars-removedlines": "Eilutės išmestos redaguojant",
+ "abusefilter-edit-builder-vars-summary": "Redagavimo pastaba",
+ "abusefilter-edit-builder-vars-article-id": "Puslapio ID",
+ "abusefilter-edit-builder-vars-article-ns": "Puslapio vardų sritis",
+ "abusefilter-edit-builder-vars-article-text": "Puslapio antraštė (be vardų srities)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Pilna puslapio antraštė",
+ "abusefilter-edit-builder-vars-article-views": "Puslapio peržiūros",
+ "abusefilter-edit-builder-vars-movedfrom-id": "Pervadinamo puslapio ID",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "Pervadinamo puslapio vardų sritis",
+ "abusefilter-edit-builder-vars-movedfrom-text": "Pervadinamo puslapio antraštė",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "Pervadinamo puslapio visa antraštė",
+ "abusefilter-edit-builder-vars-movedto-id": "Pervadinto puslapio ID",
+ "abusefilter-edit-builder-vars-movedto-ns": "Pervadinto puslapio vardų sritis",
+ "abusefilter-edit-builder-vars-movedto-text": "Pervadinto puslapio antraštė",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "Pervadinto puslapio pilna antraštė",
+ "abusefilter-edit-builder-vars-user-editcount": "Naudotojo redagavimų skaičius",
+ "abusefilter-edit-builder-vars-user-age": "Naudotojo paskyros amžius",
+ "abusefilter-edit-builder-vars-user-name": "Naudotojo sąskaitos vardas",
+ "abusefilter-edit-builder-vars-user-groups": "Grupės (imtinai), kurioms naudotojas priklauso",
+ "abusefilter-edit-builder-vars-user-rights": "Teisės, kurias turi vartotojas",
+ "abusefilter-edit-builder-vars-user-blocked": "Ar naudotojas yra užblokuotas",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "Laikas kada e-mail adresas buvo patvirtintas",
+ "abusefilter-edit-builder-vars-recent-contributors": "Paskutiniai dešimt vartotojų, keitusių puslapį",
+ "abusefilter-edit-builder-vars-first-contributor": "Pirmas vartotojas prisidėjęs prie puslapio",
+ "abusefilter-edit-builder-vars-all-links": "Visos išorinės nuorodos naujame tekste",
+ "abusefilter-edit-builder-vars-added-links": "Visos išorinės nuorodos, kurios buvo įstatytos redaguojant",
+ "abusefilter-edit-builder-vars-removed-links": "Visos išorinės nuorodos, panaikintos redaguojant",
+ "abusefilter-edit-builder-vars-old-text": "Senasis puslapio wiki tekstas, prieš redagavimą",
+ "abusefilter-edit-builder-vars-new-text": "Naujas puslapio wiki tekstas, po redagavimo",
+ "abusefilter-edit-builder-vars-new-text-stripped": "Naujas puslapio tekstas, išmetus visas žymas",
+ "abusefilter-edit-builder-vars-new-html": "Naujos redakcijos HTML tekstas, išskleidus šablonus",
+ "abusefilter-edit-builder-vars-restrictions-edit": "Keistas puslapio apsaugos lygis",
+ "abusefilter-edit-builder-vars-restrictions-move": "Puslapio pervadinimo apsaugos lygis",
+ "abusefilter-edit-builder-vars-restrictions-create": "Sukurti puslapio apsaugą",
+ "abusefilter-edit-builder-vars-restrictions-upload": "Failo įkėlimo apsauga",
+ "abusefilter-edit-builder-vars-old-text-stripped": "Senas puslapio tekstas, išmetus visas žymes",
+ "abusefilter-edit-builder-vars-old-links": "Nuorodos puslapyje, prieš redagavimą",
+ "abusefilter-edit-builder-vars-old-html": "Seno puslapio wiki teksto HTML, išplėtus šablonus",
+ "abusefilter-edit-builder-vars-minor-edit": "Buvo ar ne pakeitimas pažymėtas smulkiu",
+ "abusefilter-edit-builder-vars-file-sha1": "Failo turinio SHA1 maiša",
+ "abusefilter-edit-builder-vars-file-size": "Failo dydis bitais",
+ "abusefilter-edit-builder-vars-file-mime": "MIME failo tipas",
+ "abusefilter-edit-builder-vars-file-mediatype": "Medijos failo tipas",
+ "abusefilter-edit-builder-vars-file-width": "Failo plotis pikseliais",
+ "abusefilter-edit-builder-vars-file-height": "Failo aukštis pikseliais",
+ "abusefilter-filter-log": "Paskutiniai filtro pakeitimai",
+ "abusefilter-history": "Piktnaudžavimo filtro #$1 pakeitimų istorija",
+ "abusefilter-history-foruser": "Pakeitimai atlikti naudotojo $1",
+ "abusefilter-history-hidden": "Paslėptas",
+ "abusefilter-history-enabled": "Įjungtas",
+ "abusefilter-history-global": "Visuotinis",
+ "abusefilter-history-timestamp": "Laikas",
+ "abusefilter-history-user": "Naudotojas",
+ "abusefilter-history-public": "Viešas filtro aprašymas",
+ "abusefilter-history-flags": "Žymės",
+ "abusefilter-history-filter": "Filtro taisyklė",
+ "abusefilter-history-comments": "Komentarai",
+ "abusefilter-history-actions": "Veiksmai",
+ "abusefilter-history-backedit": "Atgal į filtro redagavimą",
+ "abusefilter-history-deleted": "Panaikintas",
+ "abusefilter-history-filterid": "Filtras",
+ "abusefilter-history-select-legend": "Atlikti paiešką istorijoje",
+ "abusefilter-history-select-user": "Naudotojas:",
+ "abusefilter-history-select-submit": "Ieškoti istorijoje",
+ "abusefilter-history-diff": "Pakeitimai",
+ "abusefilter-history-error-hidden": "Filtras, kurio paprašėte yra paslėptas, todėl Jūs negalite matyti jo istorijos.",
+ "abusefilter-exception-unexpectedatend": "Nenumatytas pozicijoje $1 simbolis \"$2\".",
+ "abusefilter-exception-expectednotfound": "Laukiamas pozicijoje $1 kodas $2 yra nerastas (vietoje jo rasta $3 turintis tipą $4).",
+ "abusefilter-exception-unrecognisedkeyword": "Pozicijoje $1 neatpažintas raktinis žodis $2.",
+ "abusefilter-exception-unexpectedtoken": "Pozicijoje $1 nenumatytas panaudojimas \"$3\" (turinčio tipą $2).",
+ "abusefilter-exception-unclosedstring": "Neuždaryta simbolių eilutė prasidedanti pozicijoje $1.",
+ "abusefilter-exception-invalidoperator": "Blogas operatorius \"$2\" pozicijoje $1.",
+ "abusefilter-exception-unrecognisedtoken": "Nesuprantamas simbolis \"$2\" pozicijoje $1.",
+ "abusefilter-exception-noparams": "Nenurodyti funkcijos \"$2\" pozicijoje $1 parametrai.",
+ "abusefilter-exception-dividebyzero": "Neleistinas bandymas atlikti $2 dalybą iš nulio pozicijoje $1.",
+ "abusefilter-exception-unrecognisedvar": "Neatpažintas kintamasis $2 pozicijoje $1",
+ "abusefilter-exception-notenoughargs": "Neatitinka funkcijos $2, kviečiamos pozicijoje $1, argumentų skaičius.\nBuvo {{PLURAL:$3|laukiamas|laukiami|laukiama}} $3 {{PLURAL:$3|parametras|parametrai|parametrų}}, gautas $4",
+ "abusefilter-exception-regexfailure": "Reguliarios išraiškos \"$3\" klaida, pozicijoje $1: \"$2\"",
+ "abusefilter-exception-overridebuiltin": "Negalimas pakeitimas statinio kintamojo \"$2\" pozicijoje $1.",
+ "abusefilter-exception-outofbounds": "Paprašytas neegzistuojantis sąrašo elementas $2 (sąrašo ilgis = $3) pozicijoje $1.",
+ "abusefilter-exception-notlist": "Prašomas masyvo elementas kintamajam, kuris nėra masyvas, pozicijoje $1.",
+ "abusefilter-action-tag": "Žyma",
+ "abusefilter-action-throttle": "Skaičiuoti statistiką",
+ "abusefilter-action-warn": "Perspėti",
+ "abusefilter-action-blockautopromote": "Panaikinti automatiškai patvirtintą būseną",
+ "abusefilter-action-block": "Blokuoti",
+ "abusefilter-action-degroup": "Pašalinti iš grupių",
+ "abusefilter-action-rangeblock": "Blokavimas pasiekus ribą",
+ "abusefilter-action-disallow": "Neleisti",
+ "abusefilter-revert-title": "Atmesti visus filtro $1 pakeitimus",
+ "abusefilter-revert-intro": "Ši forma leidžia grąžinti visus pakeitimus, kuriuos piktnaudžiavimo filtrą, dėl filtro $1 .\nPrašome naudotis priežiūros, naudodami šį įrankį.",
+ "abusefilter-revert-preview-item": "$1: $2 {{GENDER:$7|atliko}} $3 puslapiui $4.\nVeiksmas laukiantys atšaukimo: $5 ($6)",
+ "abusefilter-revert-search-legend": "Pasirinkite piktnaudžiavimų filtro veiksmą, kurį norite sugrąžinti",
+ "abusefilter-revert-periodstart": "Periodo pradžia:",
+ "abusefilter-revert-periodend": "Periodo pabaiga:",
+ "abusefilter-revert-search": "Pasirinkite veiksmus",
+ "abusefilter-revert-filter": "Filtras:",
+ "abusefilter-revert-preview-intro": "Žemiau yra veiksmai, kurių imasi piktnaudžiavimo filtrą, kuris bus grąžinti šį ieškiniu.\nPrašome atidžiai juos patikrinti, ir spustelėkite \"patvirtinti\", patvirtinkite savo pasirinkimą.",
+ "abusefilter-revert-confirm": "Patvirtinti",
+ "abusefilter-revert-success": "!Jūs grįžo dėl piktnaudžiavimo filtro dėl visų veiksmų [[specialus:AbuseFilter/$1|filter $2]].",
+ "abusefilter-revert-reason": "Automatinis sugrąžinti, visi veiksmai, kurių imasi piktnaudžiavimo filtrą, dėl filtro $1 .\nPriežastis:$2",
+ "abusefilter-revert-reasonfield": "Priežastis:",
+ "abusefilter-test": "Testuoti filtrą paskutiniams keitimams",
+ "abusefilter-test-intro": "Šis puslapis Jums leidžia patikrinti Jūsų įvestą į žemiau esantį įvedimo lauką filtrą {{PLURAL:$1|paskutiniam|paskutiniams}} $1 {{PLURAL:$1|pakeitimui|pakeitimams|pakeitimų}}.\nKad pakrauti esantį filtrą, įveskite šio filtro ID į žemiau įvedimo lauko esanti tekstinį laukelį ir paspauskite butoną \"Pakrauti\".",
+ "abusefilter-test-legend": "Filtro testavimas",
+ "abusefilter-test-load-filter": "Pakrauto filtro ID:",
+ "abusefilter-test-submit": "Testuoti",
+ "abusefilter-test-load": "Pakrauti",
+ "abusefilter-test-user": "Naudotojo pakeitimai:",
+ "abusefilter-test-period-start": "Pakeitimai atlikti po to:",
+ "abusefilter-test-period-end": "Pakeitimai atlikti iki to:",
+ "abusefilter-test-page": "Pakeitimai atlikti puslapiui:",
+ "abusefilter-test-shownegative": "Parodyti pakeitimus, kurie neatitinka filtro",
+ "abusefilter-test-syntaxerr": "Filtras, kurį Jūs įvedėte, turi sintaksinę klaidą.\nJūs galite gauti pilną paaiškinimą, jei paspausite butoną \"Patikrinti sintaksę\"",
+ "abusefilter-test-badtitle": "Puslapio pavadinimas, kurį įvedėte yra netinkamas. Jame gali būti vienas ar daugiau simbolių, kurie negali būtu naudojami pavadinimuose.",
+ "abusefilter-changeslist-examine": "tikrinti",
+ "abusefilter-examine": "Tikrinti atskirus pakeitimus",
+ "abusefilter-examine-intro": "Šis puslapis Jums leidžia patikrinti piktnaudžiavimo filtro generuojamus kintamuosius kiekvienam konkrečiam atvejui ir jį testuoti atitinkamuose filtruose.",
+ "abusefilter-examine-legend": "Pasirinkti pakeitimus",
+ "abusefilter-examine-diff": "Skirtingi URL:",
+ "abusefilter-examine-user": "Naudotojas:",
+ "abusefilter-examine-title": "Puslapio antraštė:",
+ "abusefilter-examine-submit": "Ieškoti",
+ "abusefilter-examine-vars": "Kintamieji sugeneruoti šiam pakeitimui",
+ "abusefilter-examine-test": "Testuoto šį pakeitimą, naudojant filtrą",
+ "abusefilter-examine-test-button": "Testuoti filtrą",
+ "abusefilter-examine-match": "Šis pakeitimas tenkina filtrą.",
+ "abusefilter-examine-nomatch": "Šis pakeitimas filtro netenkina.",
+ "abusefilter-examine-syntaxerror": "Filtras turi klaidingą sintaksę",
+ "abusefilter-examine-notfound": "Pakeitimai kurių paprašėte nerasti.",
+ "abusefilter-examine-incompatible": "Jūsų pakeitimai nepalaikomi piktnaudžiavimo filtro",
+ "abusefilter-examine-noresults": "Nerasti jokie paieškos rezultatai Jūsų nurodytiems parametrams.",
+ "abusefilter-topnav": "'''Piktnaudžiavimo filtrų navigatorius'''",
+ "abusefilter-topnav-home": "Pradžia",
+ "abusefilter-topnav-test": "Paketo testavimas",
+ "abusefilter-topnav-examine": "Tikrinti paskutinius pakeitimus",
+ "abusefilter-topnav-log": "Piktnaudžiavimų sąrašas",
+ "abusefilter-topnav-tools": "Testavimo priemonė",
+ "abusefilter-topnav-import": "Importuoti filtrą",
+ "abusefilter-log-name": "Piktnaudžiavimų filtro žurnalas",
+ "abusefilter-log-header": "Šis sąrašas rodo bendrą filtrų pakeitimo statistiką.\nVisas detales žiūrėkite filtrų naujausių pakeitimų [[Special:AbuseFilter/history|sąraše]].",
+ "abusefilter-log-noresults": "Nėra rezultatų",
+ "abusefilter-diff-title": "Skirtumas tarp versijų",
+ "abusefilter-diff-item": "Elementas",
+ "abusefilter-diff-version": "Versijos nuo $1 {{GENDER:$3|iki}} $2",
+ "abusefilter-diff-info": "Pagrindinė informacija",
+ "abusefilter-diff-pattern": "Filtro sąlygos",
+ "abusefilter-diff-invalid": "Negalima rasti norimos versijos",
+ "abusefilter-diff-backhistory": "Atgal į filtro istoriją",
+ "abusefilter-diff-prev": "Ankstensis keitimas",
+ "abusefilter-diff-next": "Vėlesnis keitimas",
+ "abusefilter-import-intro": "Galite naudoti šią sąsają importuoti filtrus iš kitų wiki.\nŠaltinio wiki, spustelėkite \"{{int:abusefilter-redaguoti-eksporto}}\" pagal \"{{int:abusefilter-įrankiai-paantraštė}}\" redagavimo sąsaja.\nKopijuoti iš teksto lauką, kad pasirodo, ir įklijuokite jį į šį teksto lauką, tada spustelėkite \"{{int:abusefilter-importo-pateikti}}\".",
+ "abusefilter-import-submit": "Importuoti duomenis",
+ "abusefilter-group-default": "Numatytasis",
+ "abusefilter-http-error": "Įvyko HTTP klaida: $1.",
+ "apihelp-abusefilterchecksyntax-example-1": "Tikrinti galimo filtro sintaksę",
+ "apihelp-abusefilterchecksyntax-example-2": "Tikrinti negalimo filtro sintaksę",
+ "apihelp-abusefilterevalexpression-param-expression": "Išraiška įvertinimui.",
+ "apihelp-abusefilterevalexpression-example-1": "Įvertinti paprastą išraišką",
+ "apihelp-abusefilterunblockautopromote-param-user": "Vartotojo vardas, kurį norite atblokuoti.",
+ "apihelp-query+abusefilters-description": "Rodyti piktnaudžiavimo filtrų detales.",
+ "apihelp-query+abusefilters-param-show": "Rodyti tik filtrus, kurie atitinką kriterijų.",
+ "apihelp-query+abusefilters-param-limit": "Maksimalus numeris filtrų sąraše.",
+ "apihelp-query+abusefilters-param-prop": "Kurias savybes gauti.",
+ "apihelp-query+abusefilters-example-1": "Pateikti įgalintų viešų filtrų sąrašą",
+ "apihelp-query+abusefilters-example-2": "Rodyti kai kurias detales apie filtrus",
+ "apihelp-query+abuselog-description": "Rodyti įvykius, kurie buvo sugauti vieno iš piktnaudžiavimo filtrų.",
+ "apihelp-query+abuselog-param-start": "Laiko žymą nuo kurios pradėti.",
+ "apihelp-query+abuselog-param-end": "Laiko žymą kuria baigti.",
+ "apihelp-query+abuselog-param-user": "Rodyti tik įrašus, kurie buvo duoti vartotojo ar IP adreso.",
+ "apihelp-query+abuselog-param-title": "Rodyti tik įrašus, kurie yra duotajame puslapyje.",
+ "apihelp-query+abuselog-param-filter": "Rodyti tik įrašus, kurie buvo sugauti pateiktojo filtro ID.",
+ "apihelp-query+abuselog-param-limit": "Maksimalus kiekis įrašų sąraše.",
+ "apihelp-query+abuselog-param-prop": "Kurias savybes gauti.",
+ "apihelp-query+abuselog-example-1": "Rodyti naujus žurnalo įrašus",
+ "apihelp-query+abuselog-example-2": "Rodyti naujus [[API]] žurnalo įrašus"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/ltg.json b/www/wiki/extensions/AbuseFilter/i18n/ltg.json
new file mode 100644
index 00000000..b15feeab
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/ltg.json
@@ -0,0 +1,18 @@
+{
+ "@metadata": {
+ "authors": [
+ "Dark Eagle"
+ ]
+ },
+ "abusefilter-log-search-user": "Lītuotuojs:",
+ "abusefilter-list-status": "Statuss",
+ "abusefilter-list-edit": "Pataiseit",
+ "abusefilter-list-options-submit": "Atjaunynuot",
+ "abusefilter-tools-reautoconfirm-user": "Lītuotuojs:",
+ "abusefilter-edit-flags": "Karūgi:",
+ "abusefilter-edit-history": "Viesture:",
+ "abusefilter-history-timestamp": "Laiks",
+ "abusefilter-history-user": "Lītuotuojs",
+ "abusefilter-history-select-user": "Lītuotuojs:",
+ "abusefilter-examine-user": "Lītuotuojs:"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/lv.json b/www/wiki/extensions/AbuseFilter/i18n/lv.json
new file mode 100644
index 00000000..3fedf731
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/lv.json
@@ -0,0 +1,372 @@
+{
+ "@metadata": {
+ "authors": [
+ "GreenZeb",
+ "Marozols",
+ "Papuass",
+ "Nemo bis",
+ "Edgars2007",
+ "Matma Rex",
+ "Silraks",
+ "Zuiks"
+ ]
+ },
+ "abusefilter-desc": "Pielieto automātiskas heiristikas labojumiem",
+ "abusefilter": "Ļaunprātīgās izmantošanas filtru konfigurācija",
+ "abuselog": "Ļaunprātīgo izmantošanu reģistrs",
+ "abusefilter-intro": "Laipni lūdzam ļaunprātīgās izmantošanas filtru pārvaldības saskarnē.\nĻaunprātīgās izmantošanas filtri ir automatizēta programmatūra, kas pielieto automātiskas heiristikas visām lietotāju darbībām.\nŠajā saskarnē redzami patlaban definētie filtri, un tiek dota iespēja tos izmainīt.",
+ "abusefilter-mustbeeditor": "Drošības apsvērumu dēļ šo saskarni var lietot tikai lietotāji, kam ir tiesības mainīt ļaunprātīgās izmantošanas filtrus",
+ "abusefilter-warning": "'''Uzmanību''': Šī darbība automātiski tika atpazīta kā ļaunprātīga.\nNekonstruktīvi labojumi tiks nekavējoties atcelti,\nun nekaunīgu vai atkārtotu ļaunprātīgu labojumu dēļ tavs konts vai IP adrese var tikt bloķēta.\nJa tu uzskati, ka tavs labojums ir konstruktīvs, tad saglabā lapu vēlreiz, lai to apstiprinātu.\nĪss kopsavilkums noteikumam, kas saistīts ar tevis veikto darbību: $1",
+ "abusefilter-disallowed": "Šī darbība automātiski tika atpazīta kā ļaunprātīga un tāpēc tika aizliegta.\nJa tu uzskati, ka tavs labojums ir konstruktīvs, lūdzu informē administratoru par to, ko tu centies izdarīt.\nĪss kopsavilkums noteikumam, kas saistīts ar tevis veikto darbību: $1",
+ "abusefilter-blocked-display": "Šī darbība automātiski tika atpazīta kā ļaunprātīga, un tev ir aizliegts to veikt.\nTurklāt, lai aizsargātu {{SITENAME}}, ir liegti labojumi no tava konta un visām saistītajām IP adresēm.\nJa tu uzskati, ka tas ir noticis kļūdas dēļ, lūdzu sazinies ar administratoru.\nĪss kopsavilkums noteikumam, kas saistīts ar tevis veikto darbību: $1",
+ "abusefilter-degrouped": "Šī darbība automātiski tika atpazīta kā ļaunprātīga.\nLīdz ar to tā tika aizliegta un, tā kā ir aizdomas, ka tavs konts ir apdraudēts, visas tiesības tika atceltas.\nJa tu uzskati, ka tas ir noticis kļūdas dēļ, lūdzu sazinies ar birokrātu un paskaidro šo darbību, lai atgūtu savas tiesības.\nĪss kopsavilkums noteikumam, kas saistīts ar tevis veikto darbību: $1",
+ "abusefilter-autopromote-blocked": "Šī darbība automātiski tika atpazīta kā ļaunprātīga, un tev ir aizliegts to veikt.\nTurklāt, kā drošības līdzeklis, dažas privilēģijas, kas parasti tiek piešķirtas ilgāk pastāvošiem kontiem, uz laiku ir atceltas no jūsu konta.\nĪss kopsavilkums noteikumam, kas saistīts ar tevis veikto darbību: $1",
+ "abusefilter-blocker": "Ļaunprātīgo izmantošanu filtrs",
+ "abusefilter-blockreason": "Automātiski bloķēts ar ļaunprātīgās izmantošanas filtru.\nAtbilstošā likuma apraksts: $1",
+ "abusefilter-degroupreason": "Tiesības automātiski atceltas ar ļaunprātīgās izmantošanas filtru.\nAtbilstošā likuma apraksts: $1",
+ "abusefilter-accountreserved": "Šis lietotāja konts ir rezervēts ļaunprātīgās izmantošanas filtru lietošanai.",
+ "right-abusefilter-modify": "Izmainīt ļaunprātīgās izmantošanas filtrus",
+ "right-abusefilter-view": "Apskatīt ļaunprātīgās izmantošanas filtrus",
+ "right-abusefilter-log": "Apskatīt ļaunprātīgās izmantošanas reģistru",
+ "right-abusefilter-log-detail": "Apskatīt detalizētus ļaunprātīgās izmantošanas reģistra ierakstus",
+ "right-abusefilter-private": "Apskatīt privātu informāciju ļaunprātīgās izmantošanas reģistrā",
+ "right-abusefilter-modify-restricted": "Modificēt ļaunprātīgās izmantošanas filtrus ar ierobežotām darbības iespējām",
+ "right-abusefilter-revert": "Atcelt visas dotā ļaunprātīgās izmantošanas filtra veiktās izmaiņas",
+ "right-abusefilter-view-private": "Apskatīt ļaunprātīgās izmantošanas filtrus, kas atzīmēti kā privāti",
+ "right-abusefilter-hide-log": "Paslēpt ierakstus ļaunprātīgo izmantošanu reģistrā",
+ "right-abusefilter-hidden-log": "Apskatīt visus paslēptos ļaunprātīgās izmantošanas reģistra ierakstus",
+ "action-abusefilter-modify": "izmainīt ļaunprātīgās izmantošanas filtrus",
+ "action-abusefilter-view": "apskatīt ļaunprātīgās izmantošanas filtrus",
+ "action-abusefilter-log": "apskatīt ļaunprātīgās izmantošanas reģistru",
+ "action-abusefilter-log-detail": "apskatīt detalizētus ļaunprātīgās izmantošanas reģistra ierakstus",
+ "action-abusefilter-private": "apskatīt privātu informāciju ļaunprātīgās izmantošanas reģistrā",
+ "action-abusefilter-modify-restricted": "modificēt ļaunprātīgās izmantošanas filtrus ar ierobežotām darbības iespējām",
+ "action-abusefilter-revert": "atcelt visas dotā ļaunprātīgās izmantošanas filtra veiktās izmaiņas",
+ "action-abusefilter-view-private": "apskatīt ļaunprātīgās izmantošanas filtrus, kas atzīmēti kā privāti,",
+ "abusefilter-log": "Ļaunprātīgās izmantošanas filtru reģistrs",
+ "abusefilter-log-summary": "Šis reģistrs satur sarakstu ar visām filtru konstatētajām darbībām.",
+ "abusefilter-log-search": "Meklēt ļaunprātīgo izmantošanu reģistrā",
+ "abusefilter-log-search-user": "Dalībnieks:",
+ "abusefilter-log-search-filter": "Filtru ID (jāatdala ar vertikālu svītru):",
+ "abusefilter-log-search-title": "Nosaukums:",
+ "abusefilter-log-search-submit": "Meklēt",
+ "abusefilter-log-entry": "$1: $2 iedarbināja ļaunprātīgās izmantošanas filtru, veicot darbību \"$3\" lapā $4.\nFiltra veiktās darbības: $5;\nFiltra apraksts: $6",
+ "abusefilter-log-detailedentry-meta": "$1: $2 iedarbināja $3, veicot darbību \"$4\" lapā $5.\nFiltra veiktās darbības: $6;\nFiltra apraksts: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "globālais filtrs $1",
+ "abusefilter-log-detailedentry-local": "filtrs $1",
+ "abusefilter-log-detailslink": "papildinformācija",
+ "abusefilter-log-diff": "izmaiņas",
+ "abusefilter-log-hidelink": "mainīt redzamību",
+ "abusefilter-log-details-legend": "Sīkāka informācija par reģistra ierakstu $1",
+ "abusefilter-log-details-var": "Mainīgais",
+ "abusefilter-log-details-val": "Vērtība",
+ "abusefilter-log-details-vars": "Darbības parametri",
+ "abusefilter-log-details-private": "Privātie dati",
+ "abusefilter-log-details-ip": "Izcelsmes IP adrese",
+ "abusefilter-log-noactions": "nav",
+ "abusefilter-log-details-diff": "Veiktās izmaiņas",
+ "abusefilter-log-linkoncontribs": "ļaunprātīgo izmantošanu reģistrs",
+ "abusefilter-log-linkoncontribs-text": "Ļaunprātīgo izmaiņu reģistrs šim lietotājam",
+ "abusefilter-log-hidden": "(slēpts ieraksts)",
+ "abusefilter-log-details-hidden": "Sīkāka informācija par šo ierakstu nav publiski pieejama.",
+ "abusefilter-log-hide-legend": "Slēpt žurnāla ierakstu",
+ "abusefilter-log-hide-id": "Reģistra ieraksta ID:",
+ "abusefilter-log-hide-hidden": "Liegt šim ierakstam publisku redzamību",
+ "abusefilter-log-hide-reason": "Iemesls:",
+ "abusefilter-log-hide-reason-other": "Cits/papildu iemesls:",
+ "abusefilter-log-hide-forbidden": "Jums nav tiesību paslēpt ļaunprātīgās izmantošanas reģistra ierakstus.",
+ "abusefilter-logentry-suppress": "paslēpa \"[[$1]]\"",
+ "abusefilter-logentry-unsuppress": "parādīja \"[[$1]]\"",
+ "log-action-filter-abusefilter-create": "Jauna filtra izveide",
+ "log-action-filter-abusefilter-modify": "Filtra izmaiņa",
+ "abusefilter-management": "Ļaunprātīgās izmantošanas filtru vadība",
+ "abusefilter-list": "Visi filtri",
+ "abusefilter-list-id": "Filtra ID",
+ "abusefilter-list-status": "Statuss",
+ "abusefilter-list-public": "Publiski pieejams apraksts",
+ "abusefilter-list-consequences": "Sekas",
+ "abusefilter-list-visibility": "Redzamība",
+ "abusefilter-list-hitcount": "Trāpījumu skaits",
+ "abusefilter-list-edit": "Labot",
+ "abusefilter-list-details": "Papildinformācija",
+ "abusefilter-list-limit": "Skaits vienā lapā:",
+ "abusefilter-list-lastmodified": "Pēdējoreiz mainīts",
+ "abusefilter-list-group": "Filtru grupa",
+ "abusefilter-hidden": "Privāts",
+ "abusefilter-unhidden": "Publisks",
+ "abusefilter-enabled": "Ieslēgts",
+ "abusefilter-deleted": "Dzēsts",
+ "abusefilter-disabled": "Atslēgts",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|trāpījumi|trāpījums|trāpījumi}}",
+ "abusefilter-new": "Izveidot jaunu filtru",
+ "abusefilter-return": "Atgriezties pie filtru pārvaldnieka",
+ "abusefilter-status-global": "Globāls",
+ "abusefilter-list-options": "Parametri",
+ "abusefilter-list-options-deleted": "Dzēstie filtri:",
+ "abusefilter-list-options-deleted-only": "Rādīt tikai dzēstos filtrus",
+ "abusefilter-list-options-deleted-hide": "Nerādīt dzēstos filtrus",
+ "abusefilter-list-options-deleted-show": "Iekļaut dzēstos filtrus",
+ "abusefilter-list-options-scope": "Rādīt filtrus:",
+ "abusefilter-list-options-scope-local": "Tikai vietējie noteikumi",
+ "abusefilter-list-options-scope-global": "Tikai globālie noteikumi",
+ "abusefilter-list-options-disabled": "Atslēgtie filtri:",
+ "abusefilter-list-options-hidedisabled": "Nerādīt atslēgtos filtrus",
+ "abusefilter-list-options-search-rlike": "Regulārā izteiksme",
+ "abusefilter-list-options-submit": "Atjaunināt",
+ "abusefilter-tools-text": "Šeit ir daži rīki, kas var būt noderīgi, lai izveidotu un atkļūdotu ļaunprātīgās izmantošanas filtrus.",
+ "abusefilter-tools-expr": "Izteiksmes pārbaude",
+ "abusefilter-tools-submitexpr": "Novērtēt",
+ "abusefilter-tools-reautoconfirm": "Atjaunot automātiski apstiprināto statusu",
+ "abusefilter-tools-reautoconfirm-user": "Dalībnieks:",
+ "abusefilter-tools-reautoconfirm-submit": "Atkārtoti veikt automātisko apstiprināšanu",
+ "abusefilter-reautoconfirm-none": "{{GENDER:$1|Šim lietotājam|Šai lietotājai|Šiem lietotājiem}} nav ticis pārtraukts automātiski apstiprinātais statuss.",
+ "abusefilter-reautoconfirm-notallowed": "Tev nav tiesību atjaunot automātiski apstiprināto statusu.",
+ "abusefilter-reautoconfirm-done": "Konta automātiski apstiprinātais status atjaunots",
+ "abusefilter-status": "No {{PLURAL:$1|pēdējām|pēdējās|pēdējām}} $1 {{PLURAL:$1|darbībām|darbības|darbībām}} $2 ($3%) ir sasniegušas $4 {{PLURAL:$4|nosacījumu|nosacījuma|nosacījumu}} limitu, un $5 ($6%) atbilst kādam no spēkā esošajiem filtriem.",
+ "abusefilter-edit": "Ļaunprātīgās izmantošanas filtra labošana",
+ "abusefilter-edit-subtitle": "Tiek rediģēts filtrs $1",
+ "abusefilter-edit-subtitle-new": "Filtra izveide",
+ "abusefilter-edit-oldwarning": "<strong>Tu rediģē vecu šī filtra versiju.\nRedzamā statistika atbilst jaunākajai filtra versijai.\nJa tu saglabāsi savus labojumus, tiks pārrakstītas visas izmaiņas versijās, kas ir jaunākas par to, kuru tu rediģē.</strong> &bull;\n[[Special:AbuseFilter/history/$2|Atgriezties pie filtra izmaiņu hronoloģijas]].",
+ "abusefilter-edit-status-label": "Statistika:",
+ "abusefilter-edit-status": "No {{PLURAL:$1|pēdējām|pēdējās|pēdējām}} $1 {{PLURAL:$1|darbībām|darbības|darbībām}} šis filtrs attiecās uz $2 ($3%).",
+ "abusefilter-edit-status-profile": "No {{PLURAL:$1|pēdējām|pēdējās|pēdējām}} $1 {{PLURAL:$1|darbībām|darbības|darbībām}} šis filtrs attiecās uz $2 ($3%).\nVidēji tā darbības laiks ir $4 ms, un tas izlieto $5 {{PLURAL:$5|nosacījumus|nosacījumu|nosacījumus}} no nosacījumu limitu.",
+ "abusefilter-edit-new": "Jauns filtrs",
+ "abusefilter-edit-save": "Saglabāt filtru",
+ "abusefilter-edit-id": "Filtra ID:",
+ "abusefilter-edit-switch-editor": "Pārslēgt redaktoru",
+ "abusefilter-edit-description": "Apraksts:\n:''(publiski apskatāms)''",
+ "abusefilter-edit-field-description": "apraksts",
+ "abusefilter-edit-group": "Filtru grupa:",
+ "abusefilter-edit-flags": "Iezīmes:",
+ "abusefilter-edit-enabled": "Ieslēgt šo filtru",
+ "abusefilter-edit-deleted": "Atzīmēt kā dzēstu",
+ "abusefilter-edit-hidden": "Liegt šī filtra papildinformācijas publisku apskati",
+ "abusefilter-edit-global": "Globāls filtrs",
+ "abusefilter-edit-rules": "Nosacījumi:",
+ "abusefilter-edit-field-conditions": "nosacījumi",
+ "abusefilter-edit-notes": "Piezīmes:",
+ "abusefilter-edit-lastmod": "Pēdējoreiz filtrs izmainīts:",
+ "abusefilter-edit-lastmod-text": "$1 — $2",
+ "abusefilter-edit-hitcount": "Filtra trāpījumu skaits:",
+ "abusefilter-edit-consequences": "Atbilstības gadījumā veicamās darbības",
+ "abusefilter-edit-action-warn": "Veikt šīs darbības pēc lietotāja brīdināšanas",
+ "abusefilter-edit-action-disallow": "Liegt lietotājam veikt attiecīgās darbības",
+ "abusefilter-edit-action-blockautopromote": "Atcelt lietotāja automātiski apstiprināto statusu",
+ "abusefilter-edit-action-degroup": "Izslēgt lietotāju no visām priviliģētajām grupām",
+ "abusefilter-edit-action-block": "Liegt rediģēšanu lietotājam un/vai IP adresei",
+ "abusefilter-edit-action-throttle": "Pieņemt mērus tikai tad, ja lietotājs pārsniedz normu",
+ "abusefilter-edit-action-rangeblock": "Bloķēt /16 diapazonu, kurš atbilst lietotāja izcelsmei",
+ "abusefilter-edit-action-tag": "Atzīmēt labojumu tālākai pārbaudei",
+ "abusefilter-edit-throttle-count": "Atļauto darbību skaits:",
+ "abusefilter-edit-throttle-period": "Laika periods:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|sekundes|sekunde|sekundes}}",
+ "abusefilter-edit-throttle-groups": "Grupēt pēc:\n:''(pa vienam katrā rindiņā, apvienot ar komatiem)''",
+ "abusefilter-edit-warn-message": "Sistēmas paziņojums, ko lietot kā brīdinājumu:",
+ "abusefilter-edit-warn-other": "Cits paziņojums",
+ "abusefilter-edit-warn-other-label": "Lapas nosaukumi citiem paziņojumiem:\n*''(bez MediaWiki prefiksa)''",
+ "abusefilter-edit-warn-actions": "Darbības:",
+ "abusefilter-edit-warn-preview": "Priekšskatīt izvēlēto paziņojumu",
+ "abusefilter-edit-warn-edit": "Izveidot/Rediģēt izvēlēto paziņojumu",
+ "abusefilter-edit-tag-tag": "Piemērojamās iezīmes (pa vienai katrā rindiņā):",
+ "abusefilter-edit-denied": "Sīkāka informācija par šo filtru nav publiski pieejama.",
+ "abusefilter-edit-main": "Filtra parametri",
+ "abusefilter-edit-done-subtitle": "Filtra rediģēšana pabeigta",
+ "abusefilter-edit-done": "Jūs esat veiksmīgi saglabājis izmaiņas filtram $1.",
+ "abusefilter-edit-badsyntax": "Norādītajā filtrā ir sintakses kļūda.\nParsētāja izvads:<pre>$1</pre>",
+ "abusefilter-edit-restricted": "Tu nevari rediģēt šo filtru, jo tas satur vienu vai vairākas ierobežotās darbības.\nLūdzu, pajautā lietotājam, kuram ir tiesības pievienot ierobežotās darbības, veikt izmaiņas tavā vietā.",
+ "abusefilter-edit-viewhistory": "Apskatīt šī filtra vēsturi",
+ "abusefilter-edit-history": "Vēsture:",
+ "abusefilter-edit-check": "Pārbaudīt sintaksi",
+ "abusefilter-edit-badfilter": "Norādītais filtrs neeksistē",
+ "abusefilter-edit-revert": "Atcelt šī filtra veiktās darbības",
+ "abusefilter-edit-tools": "Rīki:",
+ "abusefilter-edit-test-link": "Izmēģināt šo filtru, izmantojot jaunākās izmaiņas",
+ "abusefilter-edit-export": "Eksportēt šo filtru uz citu viki vietni",
+ "abusefilter-edit-syntaxok": "Nav sintakses kļūdu.",
+ "abusefilter-edit-syntaxerr": "Konstatēta sintakses kļūda: $1",
+ "abusefilter-edit-bad-tags": "Viena vai vairākas no norādītajām iezīmēm nav derīgas.\nIezīmēm ir jābūt īsām, un tās nedrīkst saturēt īpašos simbolus.",
+ "abusefilter-edit-notallowed": "Tev nav atļauts izveidot vai rediģēt ļaunprātīgās izmantošanas filtrus",
+ "abusefilter-edit-builder-select": "Izvēlies iespēju, ko ievietot kursora atrašanās vietā",
+ "abusefilter-edit-builder-group-op-arithmetic": "Aritmētiskās darbības",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Saskaitīšana (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Atņemšana (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Reizināšana (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Dalīšana (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Modulis (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Kāpināšana (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Salīdzināšanas operatori",
+ "abusefilter-edit-builder-op-comparison-equal": "Vienāds (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Nav vienāds (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "Mazāks (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Lielāks (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Mazāks vai vienāds (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Lielāks vai vienāds (>=)",
+ "abusefilter-edit-builder-group-op-bool": "Loģiskie operatori",
+ "abusefilter-edit-builder-op-bool-not": "Nē (!)",
+ "abusefilter-edit-builder-op-bool-and": "Un (&)",
+ "abusefilter-edit-builder-op-bool-or": "Vai (|)",
+ "abusefilter-edit-builder-group-misc": "Dažādi",
+ "abusefilter-edit-builder-misc-in": "Ietilpst virknē (in)",
+ "abusefilter-edit-builder-misc-like": "Atbilst šablonam (like)",
+ "abusefilter-edit-builder-misc-rlike": "Atbilst regulārai izteiksmei (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "Atbilst regulārai izteiksmei, neņemot vērā burtu izmēru (irlike)",
+ "abusefilter-edit-builder-misc-contains": "Kreisā virkne satur labo virkni (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "Simbolu virkne (\"\")",
+ "abusefilter-edit-builder-misc-tern": "Ternārs operators (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "Nosacījums (if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "Funkcijas",
+ "abusefilter-edit-builder-funcs-length": "Virknes garums (length)",
+ "abusefilter-edit-builder-funcs-lcase": "Ar mazajiem burtiem (lcase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "Normalizēt neviennozīmīgos simbolus (ccnorm)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "Likvidēt atkārtotus simbolus (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "Īpašās rakstzīmes / visas rakstzīmes (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "Normalizēt (norm)",
+ "abusefilter-edit-builder-funcs-count": "Cik reizes virkne X parādās virknē Y (count)",
+ "abusefilter-edit-builder-funcs-rcount": "Cik reizes regulārā izteiksme X parādās virknē Y (rcount)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "Likvidēt atstarpes (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "Likvidēt īpašos simbolus (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "Vai IP adrese ir norādītajā diapazonā? (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "Virkne satur kādu no apakšvirknēm (contains_any)",
+ "abusefilter-edit-builder-funcs-substr": "Apakšvirkne (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "Apakšvirknes pozīcija virknē (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "Aizstāt apakšvirkni ar virkni (str_replace)",
+ "abusefilter-edit-builder-funcs-set_var": "Piešķirt mainīgajam vērtību (set_var)",
+ "abusefilter-edit-builder-group-vars": "Mainīgie",
+ "abusefilter-edit-builder-vars-accountname": "Konta nosaukums (izveidošanas brīdī)",
+ "abusefilter-edit-builder-vars-timestamp": "Izmaiņas Unix laika zīmogs",
+ "abusefilter-edit-builder-vars-action": "Darbība",
+ "abusefilter-edit-builder-vars-addedlines": "Labojumā pievienotās rindas",
+ "abusefilter-edit-builder-vars-delta": "Labojuma izmaiņu izmērs",
+ "abusefilter-edit-builder-vars-diff": "Vienots veikto izmaiņu apkopojums",
+ "abusefilter-edit-builder-vars-newsize": "Jaunais lapas izmērs",
+ "abusefilter-edit-builder-vars-oldsize": "Vecais lapas izmērs:",
+ "abusefilter-edit-builder-vars-removedlines": "Labojumā dzēstās rindas",
+ "abusefilter-edit-builder-vars-summary": "Labojuma kopsavilkums/iemesls",
+ "abusefilter-edit-builder-vars-article-id": "Lapas ID",
+ "abusefilter-edit-builder-vars-article-ns": "Lapas vārdtelpa",
+ "abusefilter-edit-builder-vars-article-text": "Lapas nosaukums (bez vārdtelpas)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Pilns lapas nosaukums",
+ "abusefilter-edit-builder-vars-article-views": "Lapu skatījumi",
+ "abusefilter-edit-builder-vars-movedfrom-id": "Pārvietojamās lapas ID",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "Pārvietojamās lapas vārdtelpa",
+ "abusefilter-edit-builder-vars-movedfrom-text": "Pārvietojamās lapas nosaukums",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "Pilns pārvietojamās lapas nosaukums",
+ "abusefilter-edit-builder-vars-movedto-id": "Pārvietošanas galamērķa lapas ID",
+ "abusefilter-edit-builder-vars-movedto-ns": "Pārvietošanas galamērķa vārdtelpa",
+ "abusefilter-edit-builder-vars-movedto-text": "Pārvietošanas galamērķa lapas nosaukums",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "Pilns pārvietošanas galamērķa lapas nosaukums",
+ "abusefilter-edit-builder-vars-user-editcount": "Lietotāja labojumu skaits",
+ "abusefilter-edit-builder-vars-user-age": "Lietotāja konta vecums",
+ "abusefilter-edit-builder-vars-user-name": "Lietotāja konta vārds",
+ "abusefilter-edit-builder-vars-user-groups": "Grupas, kurās lietotājs ietilpst (kaut vai netieši)",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "Laiks, kad e-pasta adrese tika apstiprināta",
+ "abusefilter-edit-builder-vars-recent-contributors": "Pēdējie desmit lietotāji, kas labojuši lapu",
+ "abusefilter-edit-builder-vars-all-links": "Visas ārējās saites jaunajā tekstā",
+ "abusefilter-edit-builder-vars-added-links": "Visas pievienotās ārējās saites",
+ "abusefilter-edit-builder-vars-removed-links": "Visas likvidētās ārējās saites",
+ "abusefilter-edit-builder-vars-old-text": "Lapas vikiteksts pirms rediģēšanas",
+ "abusefilter-edit-builder-vars-new-text": "Jaunais lapas vikiteksts pēc rediģēšanas",
+ "abusefilter-edit-builder-vars-new-text-stripped": "Jaunais lapas teksts, bez marķējuma",
+ "abusefilter-edit-builder-vars-new-html": "Parsēts jaunās versijas HTML kods",
+ "abusefilter-edit-builder-vars-restrictions-edit": "Lapas rediģēšanas aizsardzības līmenis",
+ "abusefilter-edit-builder-vars-restrictions-move": "Lapas pārvietošanas aizsardzības līmenis",
+ "abusefilter-edit-builder-vars-old-text-stripped": "Vecais lapas teksts, bez marķējuma",
+ "abusefilter-edit-builder-vars-old-links": "Saites lapā pirms labošanas",
+ "abusefilter-edit-builder-vars-old-html": "Vecais lapas vikiteksts parsēts HTML formātā",
+ "abusefilter-edit-builder-vars-minor-edit": "Vai labojums atzīmēts kā maznozīmīgs",
+ "abusefilter-edit-builder-vars-file-sha1": "SHA1 jaucējfunkcija faila saturam",
+ "abusefilter-edit-builder-vars-file-size": "Faila izmērs baitos",
+ "abusefilter-filter-log": "Pēdējās filtru izmaiņas",
+ "abusefilter-history": "Izmaiņu hronoloģija ļaunprātīgās izmantošanas filtram #$1",
+ "abusefilter-history-foruser": "$1 izmaiņas",
+ "abusefilter-history-hidden": "Slēpts",
+ "abusefilter-history-enabled": "Atļauts",
+ "abusefilter-history-global": "Globāls",
+ "abusefilter-history-timestamp": "Laiks",
+ "abusefilter-history-user": "Dalībnieks",
+ "abusefilter-history-public": "Publisks filtra apraksts",
+ "abusefilter-history-flags": "Iezīmes",
+ "abusefilter-history-filter": "Filtra nosacījumi",
+ "abusefilter-history-comments": "Komentāri",
+ "abusefilter-history-actions": "Darbības",
+ "abusefilter-history-backedit": "Atgriezties pie filtra redaktora",
+ "abusefilter-history-deleted": "Dzēsts",
+ "abusefilter-history-filterid": "Filtrs",
+ "abusefilter-history-select-legend": "Precizēt meklēšanas kritērijus",
+ "abusefilter-history-select-user": "Dalībnieks:",
+ "abusefilter-history-select-submit": "Precizēt",
+ "abusefilter-history-diff": "Izmaiņas",
+ "abusefilter-history-error-hidden": "Pieprasītais filtrs ir paslēpts, tāpēc tā izmaiņu hronoloģija nav pieejama",
+ "abusefilter-exception-unexpectedatend": "Negaidīts \"$2\" pozīcijā $1.",
+ "abusefilter-exception-expectednotfound": "Pozīcijā $1 tika prognozēts $2 (tā vietā tika atrasts $3 $4).",
+ "abusefilter-exception-unrecognisedkeyword": "Neatpazīts atslēgvārds $2 pozīcijā $1.",
+ "abusefilter-exception-unexpectedtoken": "Neparedzēts marķieris \"$3\" (tips: $2) pozīcijā $1.",
+ "abusefilter-exception-unclosedstring": "Neaizvērta virknes izteiksme, sākot no pozīcijas $1.",
+ "abusefilter-exception-invalidoperator": "Nederīgs operators \"$2\" pozīcijā $1.",
+ "abusefilter-exception-unrecognisedtoken": "Neatpazīts marķieris \"$2\" pozīcijā $1.",
+ "abusefilter-exception-noparams": "Funkcijai \"$2\", kas atrodas pozīcijā $1, nav norādīti parametri.",
+ "abusefilter-exception-dividebyzero": "Mēģinājums dalīt $2 ar nulli pozīcijā $1.",
+ "abusefilter-exception-unrecognisedvar": "Neatpazīts mainīgais $2 pozīcijā $1.",
+ "abusefilter-exception-notenoughargs": "Nepietiekams argumentu skaits funkcijai $2, kas izsaukta pozīcijā $1.\n{{PLURAL:$3|Nepieciešami|Nepieciešams|Nepieciešami}} $3 {{PLURAL:$3|argumenti|arguments|argumenti}}, bet bija $4",
+ "abusefilter-exception-regexfailure": "Kļūda regulārajā izteiksmē \"$3\" pozīcijā $1: \"$2\"",
+ "abusefilter-exception-overridebuiltin": "Neatļauta vērtības piešķiršana iebūvētajam mainīgajam \"$2\" pozīcijā $1.",
+ "abusefilter-exception-outofbounds": "Pieprasīts neeksistējošs saraksta elements $2 (saraksta garums = $3) pozīcijā $1.",
+ "abusefilter-exception-notlist": "Pieprasīts masīva elements objektam, kas nav masīvs, pozīcijā $1.",
+ "abusefilter-action-tag": "Iezīme",
+ "abusefilter-action-throttle": "Apspiest",
+ "abusefilter-action-warn": "Brīdināt",
+ "abusefilter-action-blockautopromote": "Bloķēšanas automātiska veicināšana",
+ "abusefilter-action-block": "Bloķēt",
+ "abusefilter-action-degroup": "Izslēgt no grupas",
+ "abusefilter-action-rangeblock": "Bloķēt diapazonu",
+ "abusefilter-action-disallow": "Aizliegt",
+ "abusefilter-revert-title": "Atcelt visas filtra $1 veiktās izmaiņas",
+ "abusefilter-revert-intro": "Ar šīs formas palīdzību tu vari atcelt visas ļaunprātīgās izmantošanas filtra $1 veiktās izmaiņas.\nLūdzu, esi uzmanīgs, lietojot šo rīku.",
+ "abusefilter-revert-preview-item": "$1: $2 veica darbību \"$3\" lapai $4.\nDarbības, kas tiks atceltas: $5 ($6)",
+ "abusefilter-revert-search-legend": "Izvēlies atceļamās ļaunprātīgās izmantošanas filtru darbības",
+ "abusefilter-revert-periodstart": "Perioda sākums:",
+ "abusefilter-revert-periodend": "Perioda beigas:",
+ "abusefilter-revert-search": "Izvēlieties darbības",
+ "abusefilter-revert-filter": "Filtra ID:",
+ "abusefilter-revert-confirm": "Apstiprināt",
+ "abusefilter-revert-reasonfield": "Iemesls:",
+ "abusefilter-test": "Pārbaudīt filtru pret iepriekšējiem labojumiem",
+ "abusefilter-test-legend": "Filtra pārbaude",
+ "abusefilter-test-load-filter": "Ielādēt filtra ID:",
+ "abusefilter-test-submit": "Pārbaudīt",
+ "abusefilter-test-load": "Ielādēt",
+ "abusefilter-test-user": "Izmaiņas pēc lietotāja:",
+ "abusefilter-test-period-start": "Pēc tam veiktās izmaiņas:",
+ "abusefilter-test-period-end": "Pirms tam veiktās izmaiņas:",
+ "abusefilter-test-page": "Lapai veiktās izmaiņas:",
+ "abusefilter-test-shownegative": "Rādīt izmaiņas, kuras neatbilst filtram",
+ "abusefilter-test-syntaxerr": "Tavs ievadītais filtrs saturēja sintakses kļūdu.\nPilnu paskaidrojumu vari saņemt, noklikšķinot uz pogas \"Pārbadīt sintaksi\".",
+ "abusefilter-changeslist-examine": "izmeklēt",
+ "abusefilter-examine": "Izmeklēt personiskās izmaiņas",
+ "abusefilter-examine-legend": "Izvēlēties izmaiņas",
+ "abusefilter-examine-diff": "Atšķirību URL:",
+ "abusefilter-examine-user": "Dalībnieks:",
+ "abusefilter-examine-title": "Lapas nosaukums:",
+ "abusefilter-examine-submit": "Meklēt",
+ "abusefilter-examine-test": "Pārbaudīt šo izmaiņu pret filtru",
+ "abusefilter-examine-test-button": "Pārbaudīt filtru",
+ "abusefilter-examine-match": "Filtrs atbilda šīm izmaiņām.",
+ "abusefilter-examine-nomatch": "Filtrs neatbilda šīm izmaiņām.",
+ "abusefilter-examine-syntaxerror": "Filtrā izmantota nederīga sintakse.",
+ "abusefilter-examine-notfound": "Tavas pieprasītās izmaiņas netika atrastas.",
+ "abusefilter-topnav-home": "Sākums",
+ "abusefilter-topnav-examine": "Izmeklēt iepriekšējos labojumus",
+ "abusefilter-topnav-tools": "Atkļūdošanas rīki",
+ "abusefilter-topnav-import": "Importēt filtru",
+ "abusefilter-log-noresults": "Rezultātu nav",
+ "abusefilter-diff-title": "Atšķirības starp versijām",
+ "abusefilter-diff-item": "Vienums",
+ "abusefilter-diff-info": "Pamatinformācija",
+ "abusefilter-diff-pattern": "Filtra nosacījumi",
+ "abusefilter-diff-backhistory": "Atpakaļ uz filtra vēsturi",
+ "abusefilter-diff-prev": "Vecāka izmaiņa",
+ "abusefilter-diff-next": "Jaunāka izmaiņa",
+ "abusefilter-import-submit": "Importēt datus",
+ "abusefilter-group-default": "Noklusējuma",
+ "abusefilter-log-ip-not-available": "Nav pieejams"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/lzh.json b/www/wiki/extensions/AbuseFilter/i18n/lzh.json
new file mode 100644
index 00000000..c55de25f
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/lzh.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "LNDDYL",
+ "Jason924tw"
+ ]
+ },
+ "abusefilter-log-search": "尋濫誌",
+ "abusefilter-log-search-submit": "尋",
+ "abusefilter-list-edit": "纂",
+ "abusefilter-edit-history": "誌:",
+ "abusefilter-action-tag": "標",
+ "abusefilter-examine-submit": "尋"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/mai.json b/www/wiki/extensions/AbuseFilter/i18n/mai.json
new file mode 100644
index 00000000..590d5df0
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/mai.json
@@ -0,0 +1,241 @@
+{
+ "@metadata": {
+ "authors": [
+ "Vinitutpal",
+ "बिप्लब आनन्द",
+ "Tulsi Bhagat"
+ ]
+ },
+ "abusefilter-desc": "संपादनके लेल स्वत: हेरिस्टिक लागू होईत् अछि",
+ "abusefilter": "दुर्व्यवहार फिल्टर विन्यास",
+ "abuselog": "दुरुपयोग लौग",
+ "abusefilter-blocker": "फिल्टरक दुरुपयोग",
+ "abusefilter-blockreason": "स्वचालित रूपसे दुर्व्यवहार फिल्टर द्वारा अवरुद्ध।\nमिलान करल नियमके विवरण: $1",
+ "abusefilter-degroupreason": "अधिकार स्वतः दुर्व्यवहार फिल्टर द्वारा छीन लेल।\nनियम विवरण: $1",
+ "abusefilter-accountreserved": "ई प्रयोक्ता नाम दुरुपयोग फिल्टर के उपयोग के लेल आरक्षित अछि।",
+ "right-abusefilter-modify": "ख़राब फ़िल्टर के ठीक करू",
+ "right-abusefilter-view": "दुरुपयोग छन्नी देखी",
+ "right-abusefilter-log": "दुर्व्यवहार लौग देखी",
+ "right-abusefilter-log-detail": "दुर्व्यवहार लॉग के प्रविष्टियाँ विस्तारमें देखुं",
+ "right-abusefilter-private": "दुर्व्यवहार लॉग में निजी डेटा देखुं",
+ "right-abusefilter-modify-restricted": "दुर्व्यवहार फ़िल्टर के प्रतिबन्धित कार्य सहित सम्पादित करु",
+ "right-abusefilter-revert": "एक देलगेल दुर्व्यवहार फिल्टर द्वारा सभ परिवर्तन के वापस लेल",
+ "right-abusefilter-hidden-log": "दुर्व्यवहार लॉग के प्रविष्टियाँ विस्तारमें देखुं",
+ "right-abusefilter-modify-global": "वैश्विक दुर्व्यवहार फ़िल्टर बनाबु या संशोधित करु",
+ "action-abusefilter-modify": "दुर्व्यवहार फिल्टर के संशोधित करु",
+ "action-abusefilter-view": "दुर्व्यवहार फ़िल्टर के देखु",
+ "action-abusefilter-log": "दुर्व्यवहार लौग देखी",
+ "action-abusefilter-log-detail": "विस्तृत दुर्व्यवहार लॉग प्रविष्टियों के देखु",
+ "action-abusefilter-private": "दुर्व्यवहार लॉग में निजी डेटा देखु",
+ "action-abusefilter-modify-restricted": "दुर्व्यवहार फ़िल्टर के प्रतिबन्धित कार्य सहित सम्पादित करु",
+ "action-abusefilter-revert": "एक देलगेल दुर्व्यवहार फिल्टर द्वारा सभ परिवर्तन के वापस लेल",
+ "abusefilter-log": "दुर्व्यवहार फिल्टर लौग",
+ "abusefilter-log-summary": "ई लॉग फ़िल्टर द्वारा पकरल गेल सभ कार्य के सूची दिखावैत् अछि।",
+ "abusefilter-log-search": "दुर्व्यवहार लौग खोजी",
+ "abusefilter-log-search-user": "प्रयोक्ता",
+ "abusefilter-log-search-title": "शीर्षक",
+ "abusefilter-log-search-wiki": "विकी:",
+ "abusefilter-log-search-submit": "ताकी",
+ "abusefilter-log-detailedentry-global": "वैश्विक फिल्टर $1",
+ "abusefilter-log-detailedentry-local": "फिल्टर $1",
+ "abusefilter-log-detailslink": "विस्तार",
+ "abusefilter-log-diff": "अन्तर",
+ "abusefilter-log-hidelink": "दृश्यता समयोजित करी",
+ "abusefilter-log-details-legend": "लॉग प्रविष्टि के लेल विवरण $1",
+ "abusefilter-log-details-var": "अस्थायी",
+ "abusefilter-log-details-val": "महत्व",
+ "abusefilter-log-details-vars": "काम मानकसभ",
+ "abusefilter-log-details-private": "निजी डेटा",
+ "abusefilter-log-details-ip": "मूल आइ॰पी ठेगाना",
+ "abusefilter-log-noactions": "कोनो नै",
+ "abusefilter-log-details-diff": "सम्पादन में बदलाव केल गेल",
+ "abusefilter-log-linkoncontribs": "दुर्व्यवहार लौग",
+ "abusefilter-log-linkoncontribs-text": "ई सदस्य के लेल दुर्व्यवहार लॉग",
+ "abusefilter-log-hide-legend": "लॉग प्रवेश नुकाऊँ",
+ "abusefilter-log-hide-id": "लॉग प्रवेश आइ॰डी:",
+ "abusefilter-log-hide-reason": "कारण:",
+ "abusefilter-logentry-suppress": "\"[[$1]]\" के नुकाएल",
+ "abusefilter-logentry-unsuppress": "नैं छुपाऊँ \"[[$1]]\"",
+ "abusefilter-management": "दुर्व्यवहार फ़िल्टर प्रबन्ध",
+ "abusefilter-list": "सभ फ़िल्टर",
+ "abusefilter-list-id": "फ़िल्टर आइ॰डी",
+ "abusefilter-list-status": "स्थिति",
+ "abusefilter-list-public": "सार्वजनिक विवरण",
+ "abusefilter-list-consequences": "परिणाम",
+ "abusefilter-list-visibility": "दृष्टता",
+ "abusefilter-list-hitcount": "हिट गिनती",
+ "abusefilter-list-edit": "सम्पादन करी",
+ "abusefilter-list-details": "जानकारी",
+ "abusefilter-list-limit": "प्रति पृष्ठ सङ्ख्या:",
+ "abusefilter-list-lastmodified": "पिछला संशोधन",
+ "abusefilter-list-group": "फ़िल्टर समूह",
+ "abusefilter-hidden": "निजी",
+ "abusefilter-unhidden": "सार्वजनिक",
+ "abusefilter-enabled": "सक्षम",
+ "abusefilter-deleted": "मेटाएल गेल",
+ "abusefilter-disabled": "अशक्त कएल",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|हिट|हिटसभ}}",
+ "abusefilter-new": "नयाँ फ़िल्टर बनाबु",
+ "abusefilter-return": "प्रबंधन फ़िल्टर मे घुरू",
+ "abusefilter-status-global": "वैश्विक",
+ "abusefilter-list-options": "विकल्प",
+ "abusefilter-list-options-deleted": "मिटायल फ़िल्टर",
+ "abusefilter-list-options-deleted-only": "मिटायल फ़िल्टर के देखाऊ",
+ "abusefilter-list-options-deleted-hide": "मिटायल फ़िल्टर के नुकाऊ",
+ "abusefilter-list-options-deleted-show": "हटायल गेल फ़िल्टर्स मे शामिल करू",
+ "abusefilter-list-options-scope": "फ़िल्टर देखाबु:",
+ "abusefilter-list-options-scope-local": "स्थानीय नियम सभ मात्र",
+ "abusefilter-list-options-scope-global": "ग्लोबल नियम सभ मात्र",
+ "abusefilter-list-options-scope-all": "स्थानीय आर वैश्विक नियम सभ",
+ "abusefilter-list-options-disabled": "अयोग्य फ़िल्टर",
+ "abusefilter-list-options-hidedisabled": "अयोग्य फ़िल्टर के नुकाऊ",
+ "abusefilter-list-options-submit": "अद्यतन",
+ "abusefilter-tools-expr": "अभिव्यक्ति परीक्षक",
+ "abusefilter-tools-submitexpr": "मूल्यांकन",
+ "abusefilter-tools-reautoconfirm": "स्वतः स्थापित स्थिति पुनर्स्थापित",
+ "abusefilter-tools-reautoconfirm-user": "प्रयोक्ता",
+ "abusefilter-tools-reautoconfirm-submit": "पुनः स्वतः स्थापित",
+ "abusefilter-edit": "दुर्व्यवहार फ़िल्टर सम्पादन",
+ "abusefilter-edit-subtitle": "फ़िल्टर $1 सम्पादन",
+ "abusefilter-edit-subtitle-new": "फ़िल्टर बनाबैत्",
+ "abusefilter-edit-status-label": "अंक-विवरण:",
+ "abusefilter-edit-new": "नयाँ फ़िल्टर",
+ "abusefilter-edit-save": "फ़िल्टर संरक्षण करू",
+ "abusefilter-edit-id": "फ़िल्टर आइ॰डी:",
+ "abusefilter-edit-description": "विवरण:\n:\"(सार्वजनिक)\"",
+ "abusefilter-edit-group": "फ़िल्टर समूह:",
+ "abusefilter-edit-flags": "झंडा:",
+ "abusefilter-edit-enabled": "ई फ़िल्टरके सक्षम करु",
+ "abusefilter-edit-deleted": "मिटाबै के निशान दियो",
+ "abusefilter-edit-hidden": "सार्वजनिक दृश्य से ई फ़िल्टर कs विवरण छुपाबु",
+ "abusefilter-edit-global": "वैश्विक फ़िल्टर",
+ "abusefilter-edit-rules": "स्थिति:",
+ "abusefilter-edit-notes": "नोट्स:",
+ "abusefilter-edit-lastmod": "फ़िल्टर कs अंतिम संशोधन:",
+ "abusefilter-edit-lastmod-text": "$2 द्वारा $1 के",
+ "abusefilter-edit-hitcount": "फिल्टर हिट सभ:",
+ "abusefilter-edit-throttle-count": "कामसभ कs संख्याके अनुमति:",
+ "abusefilter-edit-throttle-period": "समय कs अवधि:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|सॅकेंड|सॅकेंडसभ}}",
+ "abusefilter-edit-warn-other": "अन्य सन्देश",
+ "abusefilter-edit-warn-actions": "क्रिया सभ",
+ "abusefilter-edit-warn-preview": "चुन्ल गेल सन्देश के पूर्वावलोकन करु",
+ "abusefilter-edit-warn-edit": "चुन्ल गेल सन्देश बनाबु अथवा संपादित करु",
+ "abusefilter-edit-main": "फ़िल्टर मानकसभ",
+ "abusefilter-edit-done-subtitle": "फ़िल्टर संपादित भेल",
+ "abusefilter-edit-viewhistory": "ई फिल्टरके इतिहास देखाऊँ",
+ "abusefilter-edit-history": "इतिहास:",
+ "abusefilter-edit-check": "वाक्य रचनाके जाँच करु",
+ "abusefilter-edit-badfilter": "जे फिल्टर अहाँ कहलौं से अछिये नै।",
+ "abusefilter-edit-tools": "उपकरण:",
+ "abusefilter-edit-builder-group-op-arithmetic": "अंकगणितीय आपरेटर सभ",
+ "abusefilter-edit-builder-op-arithmetic-addition": "जोड़(+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "घटाव (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "गुणन (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "भाग (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "भागके शेष (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "पावर (**)",
+ "abusefilter-edit-builder-group-op-comparison": "तुलना ऑपरेटर सभ",
+ "abusefilter-edit-builder-op-comparison-equal": "बराबर (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "बराबर नैं अछि (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "(<) से कम",
+ "abusefilter-edit-builder-op-comparison-gt": "ई सs बेसी (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "ई सs कम या बराबर (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "ई से बेसी या बराबर (>=)",
+ "abusefilter-edit-builder-group-op-bool": "बूलिअन ऑपरेटर सभ",
+ "abusefilter-edit-builder-op-bool-not": "नैं (!)",
+ "abusefilter-edit-builder-op-bool-and": "आर (&)",
+ "abusefilter-edit-builder-op-bool-or": "या (|)",
+ "abusefilter-edit-builder-group-misc": "विविध",
+ "abusefilter-edit-builder-misc-in": "स्ट्रिङ्गमे अछि (in)",
+ "abusefilter-edit-builder-misc-like": "पैटर्न के पकड़े (like)",
+ "abusefilter-edit-builder-misc-tern": "त्रिगुट ऑपरेटर (X ? Y : Z)",
+ "abusefilter-edit-builder-group-funcs": "काम सभ",
+ "abusefilter-edit-builder-funcs-length": "स्ट्रिंग लंबाई (length)",
+ "abusefilter-edit-builder-funcs-lcase": "लोअर केस के (lcase)",
+ "abusefilter-edit-builder-funcs-ucase": "ऊपर केस के लेल(ucase)",
+ "abusefilter-edit-builder-funcs-norm": "नियमित (norm)",
+ "abusefilter-edit-builder-funcs-substr": "सबस्ट्रिंग (substr)",
+ "abusefilter-edit-builder-group-vars": "अस्थायी",
+ "abusefilter-edit-builder-vars-accountname": "खाता नाम (खाता निर्माण समय में)",
+ "abusefilter-edit-builder-vars-action": "क्रिया",
+ "abusefilter-edit-builder-vars-addedlines": "सम्पादन में जोड़ गेल लाइन सभ",
+ "abusefilter-edit-builder-vars-delta": "सम्पादनमे आकार परिवर्तन",
+ "abusefilter-edit-builder-vars-newsize": "नव पृष्ठ आकार",
+ "abusefilter-edit-builder-vars-oldsize": "पुरना पृष्ठ आकार",
+ "abusefilter-edit-builder-vars-removedlines": "सम्पादन में हटाबल गेल लाइन सभ",
+ "abusefilter-edit-builder-vars-summary": "सम्पादन सारांश/कारण",
+ "abusefilter-edit-builder-vars-article-id": "पृष्ठ आइडी",
+ "abusefilter-edit-builder-vars-article-ns": "पृष्ठ नामस्थान",
+ "abusefilter-edit-builder-vars-article-text": "पृष्ठ शीर्षक (बिना नामस्थान)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "पूर्ण पृष्ठ शीर्षक",
+ "abusefilter-edit-builder-vars-article-views": "पृष्ठ के विचार",
+ "abusefilter-edit-builder-vars-user-editcount": "सदस्यक सम्पादन सङ्ख्या",
+ "abusefilter-edit-builder-vars-user-age": "सदस्यखाताक उमर",
+ "abusefilter-edit-builder-vars-user-name": "सदस्यखाताक नाम",
+ "abusefilter-edit-builder-vars-user-rights": "अधिकार जे प्रयोक्ता राखैत अछि",
+ "abusefilter-edit-builder-vars-user-blocked": "प्रयोक्ता अवरुद्ध अछि कि नैंअछि",
+ "abusefilter-filter-log": "हालमे भेल फिल्टर परिवर्तन",
+ "abusefilter-history-foruser": "$1 सs बदलाब",
+ "abusefilter-history-hidden": "नुकेल गेल",
+ "abusefilter-history-enabled": "सक्षम",
+ "abusefilter-history-global": "वैश्विक",
+ "abusefilter-history-timestamp": "समय",
+ "abusefilter-history-user": "प्रयोक्ता",
+ "abusefilter-history-public": "सार्वजनिक फ़िल्टर विविरण",
+ "abusefilter-history-flags": "झंडा:",
+ "abusefilter-history-filter": "फ़िल्टर नियम",
+ "abusefilter-history-comments": "टिप्पणिसभ",
+ "abusefilter-history-actions": "क्रिया सभ",
+ "abusefilter-history-backedit": "फ़िल्टर सम्पादन मे फिर्ता",
+ "abusefilter-history-deleted": "मेटाएल गेल",
+ "abusefilter-history-filterid": "फ़िल्टर",
+ "abusefilter-history-select-legend": "परिष्कृत खोज",
+ "abusefilter-history-select-user": "प्रयोक्ता:",
+ "abusefilter-history-select-submit": "परिष्कृत",
+ "abusefilter-history-diff": "परिवर्तन सभ",
+ "abusefilter-action-tag": "टैग",
+ "abusefilter-action-warn": "चेतावनी",
+ "abusefilter-action-block": "अवरोध",
+ "abusefilter-action-degroup": "सदस्य समूह सँ हटाबी",
+ "abusefilter-action-rangeblock": "खण्ड-अवरोध",
+ "abusefilter-action-disallow": "अस्वीकृत करु",
+ "abusefilter-revert-periodstart": "अवधि सुरु:",
+ "abusefilter-revert-periodend": "अवधि अंत:",
+ "abusefilter-revert-search": "क्रिया चयन करु",
+ "abusefilter-revert-filter": "फ़िल्टर:",
+ "abusefilter-revert-confirm": "निश्चित",
+ "abusefilter-revert-reasonfield": "कारण:",
+ "abusefilter-test-legend": "फ़िल्टर परीक्षण करैत्",
+ "abusefilter-test-load-filter": "लोड फ़िल्टर आइ॰डी:",
+ "abusefilter-test-submit": "परीक्षण",
+ "abusefilter-test-load": "लोड",
+ "abusefilter-test-user": "सदस्यद्वारा परिवर्तन:",
+ "abusefilter-test-period-start": "बादमे केल गेल परिवर्तन:",
+ "abusefilter-test-period-end": "पहिने कएल गेल परिवर्तन:",
+ "abusefilter-test-page": "पृष्ठमे बनेल परिवर्तन:",
+ "abusefilter-changeslist-examine": "परीक्षण",
+ "abusefilter-examine": "व्यक्तिगत परिवर्तन जाँची",
+ "abusefilter-examine-legend": "परिवर्तन सभ चुनु",
+ "abusefilter-examine-diff": "अंतर URL:",
+ "abusefilter-examine-user": "प्रयोक्ता:",
+ "abusefilter-examine-title": "पृष्ठ शीर्षक:",
+ "abusefilter-examine-submit": "ताकू",
+ "abusefilter-examine-test-button": "टेस्ट फ़िल्टर",
+ "abusefilter-topnav-home": "घर",
+ "abusefilter-topnav-examine": "पूर्व परिवर्तन जाँच करी",
+ "abusefilter-topnav-log": "दुर्व्यवहार लौग",
+ "abusefilter-topnav-tools": "डिबगिंग उपकरण सभ",
+ "abusefilter-topnav-import": "आयात फ़िल्टर",
+ "abusefilter-log-name": "दुर्व्यवहार फिल्टर लौग",
+ "abusefilter-log-noresults": "कोनो परिणाम नैँ",
+ "abusefilter-diff-item": "आइटम",
+ "abusefilter-diff-info": "न्यूनतम जानकारी",
+ "abusefilter-diff-pattern": "फ़िल्टर परिस्थिति",
+ "abusefilter-diff-backhistory": "फ़िल्टर इतिहास के फिर्ता",
+ "abusefilter-diff-prev": "पुरना बदलाब",
+ "abusefilter-diff-next": "नयाँ बदलाब",
+ "abusefilter-import-submit": "डेटा आयात करु",
+ "abusefilter-group-default": "डिफ़ॉल्ट",
+ "apihelp-query+abuselog-example-1": "सन्निकट लौग प्रविष्टिसभ देखाबी"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/map-bms.json b/www/wiki/extensions/AbuseFilter/i18n/map-bms.json
new file mode 100644
index 00000000..1e2bd553
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/map-bms.json
@@ -0,0 +1,194 @@
+{
+ "@metadata": {
+ "authors": [
+ "StefanusRA",
+ "Mbrt"
+ ]
+ },
+ "abusefilter-desc": "Terapna pamriksan heuristik otomatis nang suntingan",
+ "abusefilter": "Pangaturan saringan planggaran",
+ "abuselog": "Log planggaran",
+ "abusefilter-mustbeeditor": "Kanggo alesan kamanan, mung panganggo sing duwe hak ngowah saringan planggaran sing teyeng nggo ngowaih kiye.",
+ "abusefilter-blocker": "Saringan planggaran",
+ "abusefilter-degroupreason": "Hak akses dibedhul otomatis nang saringan planggaran.\nKatrangan aturan: $1",
+ "abusefilter-accountreserved": "Jeneng akun kiye wis dipesen nggo dienggo nang saringan planggaran.",
+ "right-abusefilter-modify": "Ngowaih saringan planggaran",
+ "right-abusefilter-view": "Deleng saringan planggaran",
+ "right-abusefilter-log": "Deleng log planggaran",
+ "right-abusefilter-log-detail": "Deleng entri log planggaran sacara rinci",
+ "right-abusefilter-private": "Deleng data pribadi nang log planggaran",
+ "right-abusefilter-modify-restricted": "Ngowaih saringan planggaran karo tindakan sing dibatesi",
+ "right-abusefilter-revert": "Balekna kabeh owahan sekang saringan owahan ding demaksud",
+ "right-abusefilter-view-private": "Deleng saringan planggaran sing detandani pribadi",
+ "right-abusefilter-log-private": "Deleng entri log saringan planggaran sing detandani pribadi",
+ "right-abusefilter-hide-log": "Umpetna entri nang log planggaran",
+ "right-abusefilter-hidden-log": "Deleng entri log planggaran sing diumpetna",
+ "action-abusefilter-modify": "ngowaih saringan planggaran",
+ "action-abusefilter-view": "deleng saringan planggaran",
+ "action-abusefilter-log": "deleng log planggaran",
+ "action-abusefilter-log-detail": "deleng entri log planggaran sacara rinci",
+ "action-abusefilter-private": "deleng data pribadi nang log planggaran",
+ "action-abusefilter-modify-restricted": "ngowaih saringan planggaran karo tindakan sing dibatesi",
+ "action-abusefilter-revert": "balekna kabeh owahan sekang saringan owahan ding demaksud",
+ "action-abusefilter-view-private": "deleng saringan planggaran sing detandani pribadi",
+ "abusefilter-log": "Log saringan planggaran",
+ "abusefilter-log-summary": "Log kiye nidokna daptar kabeh tindakan sing kecekel yang saringan planggaran.",
+ "abusefilter-log-search": "Ngoleti log planggaran",
+ "abusefilter-log-search-user": "Panganggo:",
+ "abusefilter-log-search-filter": "ID saringan:",
+ "abusefilter-log-search-title": "Judule:",
+ "abusefilter-log-search-wiki": "Wiki:",
+ "abusefilter-log-search-submit": "Goleti",
+ "abusefilter-log-entry": "$1: $2 ngurubna salah siji saringan planggaran, yakuwe nglakokna \"$3\" nang $4.\nTindakan sing dijikot: $5;\nKatrangan saringan: $6",
+ "abusefilter-log-detailedentry-meta": "!$1: $2 ngurubna $3, jalaran nglakokna \"$4\" nang $5.\nTindakan sing dijikot: $6;\nKatrangan saringan: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "saringan global $1",
+ "abusefilter-log-detailedentry-local": "saringan $1",
+ "abusefilter-log-detailslink": "rincian",
+ "abusefilter-log-diff": "bédane",
+ "abusefilter-log-hidelink": "ngatur tampilan",
+ "abusefilter-log-details-legend": "Rinciane entri log $1",
+ "abusefilter-log-details-var": "Variabel",
+ "abusefilter-log-details-val": "Biji",
+ "abusefilter-log-details-vars": "Parameter tindakan",
+ "abusefilter-log-details-private": "Data pribadi",
+ "abusefilter-log-details-ip": "Alamat IP asale",
+ "abusefilter-log-noactions": "ora ana",
+ "abusefilter-log-details-diff": "Owahan sing degawe nang suntingan",
+ "abusefilter-log-linkoncontribs": "log planggaran",
+ "abusefilter-log-linkoncontribs-text": "Log planggaran kanggo panganggo kiye",
+ "abusefilter-log-hidden": "(entri diumpetna)",
+ "abusefilter-log-hidden-implicit": "(diumpetna jalaran revisi wis dibusek)",
+ "abusefilter-log-cannot-see-details": "Rika ora duwe ijin nggo ndeleng rincian entri kiye.",
+ "abusefilter-log-details-hidden": "Rika ora teyeng ndeleng rinciane entri kiye jalaran anu wis diumpetna sekang publik.",
+ "abusefilter-log-hide-legend": "Umpetna entri log",
+ "abusefilter-log-hide-id": "ID entri log:",
+ "abusefilter-log-hide-hidden": "Umpetna entri kiye sekang publik",
+ "abusefilter-log-hide-reason": "Alesan:",
+ "abusefilter-log-hide-forbidden": "Rika ora duwe ijin nggo ngumpetna entri log planggaran.",
+ "abusefilter-logentry-suppress": "umpetna \"[[$1]]\"",
+ "abusefilter-logentry-unsuppress": "tidokna \"[[$1]]\"",
+ "logentry-abusefilter-hit": "$1 ngurubna $4, nglakokna tindakan \"$5\" nang $3. Tindakan sing dijikot: $6 ($7)",
+ "abusefilter-management": "Manajemen saringan planggaran",
+ "abusefilter-list": "Kabeh saringan",
+ "abusefilter-list-id": "ID saringan",
+ "abusefilter-list-status": "Status",
+ "abusefilter-list-public": "Katrangan publik",
+ "abusefilter-list-consequences": "Konsekuensi",
+ "abusefilter-list-visibility": "Kakatonan",
+ "abusefilter-list-hitcount": "Itungan penetan",
+ "abusefilter-list-edit": "Nyunting",
+ "abusefilter-list-details": "Rincian",
+ "abusefilter-list-limit": "Cacah per kaca:",
+ "abusefilter-list-lastmodified": "Diowah pungkasan",
+ "abusefilter-list-group": "Klompok saringan",
+ "abusefilter-hidden": "Pribadi",
+ "abusefilter-unhidden": "Publik",
+ "abusefilter-enabled": "Diurubna",
+ "abusefilter-deleted": "Dibusek",
+ "abusefilter-disabled": "Dinonaktifna",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|wong$1|wong}}",
+ "abusefilter-new": "Gawé saringan anyar",
+ "abusefilter-return": "Mbalik ming manajemen saringan",
+ "abusefilter-status-global": "Global",
+ "abusefilter-list-options": "Pilihan",
+ "abusefilter-list-options-deleted": "Saringan sing wis dibusek:",
+ "abusefilter-list-options-deleted-only": "Tidokna saringan sing wis dibusek baen",
+ "abusefilter-list-options-deleted-hide": "Umpetna saringan sing wis dibusek",
+ "abusefilter-list-options-deleted-show": "Pelokna saringan sing wis dibusek",
+ "abusefilter-list-options-scope": "Tidokna saringan:",
+ "abusefilter-list-options-scope-local": "Kur kewicaksanaan lokal",
+ "abusefilter-list-options-scope-global": "Aturane global",
+ "abusefilter-list-options-scope-all": "Kewicaksanaan lokal lan global",
+ "abusefilter-list-options-disabled": "Saringan dipateni:",
+ "abusefilter-tools-reautoconfirm-user": "Panganggo:",
+ "abusefilter-edit-new": "Saringan anyar",
+ "abusefilter-edit-save": "Simpen saringan",
+ "abusefilter-edit-id": "ID saringan:",
+ "abusefilter-edit-deleted": "Tandhani wis debusek",
+ "abusefilter-edit-hidden": "Umpetna rinciane saringan kiye sekang publik",
+ "abusefilter-edit-global": "Penyaring global",
+ "abusefilter-edit-rules": "Kahanan:",
+ "abusefilter-edit-notes": "Cathetan:",
+ "abusefilter-edit-lastmod": "Saring owahan pungkasan:",
+ "abusefilter-edit-lastmod-text": "$1 nang $2",
+ "abusefilter-edit-hitcount": "Itungan saringan:",
+ "abusefilter-edit-consequences": "Tindakan sing dijikot dong cocog",
+ "abusefilter-edit-action-warn": "Urubna tindakan kiye seuwise ngaweh peringatan maring panganggo",
+ "abusefilter-edit-action-disallow": "Alangi panganggo ben aja nglakokna tindakan sing ngragukna",
+ "abusefilter-edit-warn-other": "Pesen liyane",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Panambahan (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Sudan (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Ping-pingan (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Para-paraan (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Modulo (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Pangkat (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Operator perbandingan",
+ "abusefilter-edit-builder-op-comparison-equal": "Padha karo (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Ora padha karo (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "Kurang sekang (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Lewih gedhe sekang (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Kurang sekang utawa padha karo (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Lewih sekang utawa padha karo (>=)",
+ "abusefilter-edit-builder-group-op-bool": "Operator boolean",
+ "abusefilter-edit-builder-op-bool-not": "Dudu (!)",
+ "abusefilter-edit-builder-op-bool-and": "Lan (&)",
+ "abusefilter-edit-builder-op-bool-or": "Utawa (|)",
+ "abusefilter-edit-builder-group-funcs": "Fungsine",
+ "abusefilter-edit-builder-vars-article-id": "ID kaca",
+ "abusefilter-edit-builder-vars-article-ns": "Bilikjeneng kaca",
+ "abusefilter-edit-builder-vars-article-text": "Judhul kaca (ora nganggo bilikjeneng)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Judhul kaca jangkep",
+ "abusefilter-edit-builder-vars-movedfrom-id": "ID kaca sekang pamindhahan kaca sumber",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "Bilikjeneng sekang pamindhahan kaca sumber",
+ "abusefilter-edit-builder-vars-movedfrom-text": "Judhul sekang pamindhahan kaca sumber",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "Judhul kumplit sekang pamindhahan kaca sumber",
+ "abusefilter-edit-builder-vars-movedto-id": "ID kaca sekang kaca papan patujon pamidhahan",
+ "abusefilter-history-user": "Panganggo",
+ "abusefilter-history-public": "Katrangan saringan publik",
+ "abusefilter-history-flags": "Tenger",
+ "abusefilter-history-filter": "Aturan saringan",
+ "abusefilter-history-comments": "Tanggepan",
+ "abusefilter-history-actions": "Tindakan",
+ "abusefilter-history-backedit": "Mbalik ming panyunting saringan",
+ "abusefilter-history-deleted": "Dibusek",
+ "abusefilter-history-filterid": "Saringan",
+ "abusefilter-history-select-user": "Panganggo:",
+ "abusefilter-history-select-submit": "Ngapiki",
+ "abusefilter-history-diff": "Owah-owahan",
+ "abusefilter-test-user": "Owahan sekang panganggo:",
+ "abusefilter-test-period-start": "Owahan digawe seuwise:",
+ "abusefilter-examine-legend": "Pilih owahan",
+ "abusefilter-examine-diff": "Beda URL:",
+ "abusefilter-examine-user": "Panganggo:",
+ "abusefilter-examine-title": "Judul kaca:",
+ "abusefilter-examine-submit": "Goleti",
+ "abusefilter-examine-vars": "Variablel digawe kanggo owahan kiye",
+ "abusefilter-examine-test": "Jajal owahan kiye tumrap saringan",
+ "abusefilter-examine-test-button": "Jajal saringan",
+ "abusefilter-examine-match": "Saringan cocog karo owahan kiye.",
+ "abusefilter-examine-nomatch": "Saringan ora cocog karo owahan kiye.",
+ "abusefilter-examine-syntaxerror": "Saringan nduwe sintaks sing ora sah",
+ "abusefilter-examine-notfound": "Owahan sing dejaluk Rika ora teyeng detemokna.",
+ "abusefilter-examine-incompatible": "Owahan sing dejaluk Rika ora disengkuyung nang Saringan Planggaran",
+ "abusefilter-examine-noresults": "Ora ana asil sing detemokna kanggo parameter penggoletan sing Rika sediakna.",
+ "abusefilter-topnav": "'''Navigasi Saringan Planggaran'''",
+ "abusefilter-topnav-home": "Kaca Utama",
+ "abusefilter-topnav-test": "Tumpak jajalan",
+ "abusefilter-topnav-examine": "Priksa suntingan sing gemiyen",
+ "abusefilter-topnav-log": "Log Planggaran",
+ "abusefilter-topnav-tools": "Pekakas debugging",
+ "abusefilter-topnav-import": "Impor saringan",
+ "abusefilter-log-name": "Log Saringan Planggaran",
+ "abusefilter-log-header": "Log kiye nidokna ringkesan owahan sing degawe ming saringan.\nKanggo rincian sakumplite, deleng [[Special:AbuseFilter/history|daptar]] owah-owahan saringan sing anyar.",
+ "abusefilter-log-noresults": "Ora aba asuke",
+ "abusefilter-diff-title": "Prabedhan antar versi",
+ "abusefilter-diff-item": "Barang",
+ "abusefilter-diff-version": "Versi sekang $1 {{GENDER:$3|nang}} $2",
+ "abusefilter-diff-info": "Informasi dhasar",
+ "abusefilter-diff-pattern": "Kahanan saringan",
+ "abusefilter-diff-invalid": "Ora teyeng njikot versi sing dejaluk",
+ "abusefilter-diff-backhistory": "Mbalik ming riwayat saringan",
+ "abusefilter-import-intro": "Rika teyeng nganggo antarmuka kiye nggo ngimpor saringan sekang wiki liyane.\nNang wiki sumber, klik \"{{int:abusefilter-edit-export}}\" nang ngisore \"{{int:abusefilter-edit-tools}}\" nang antarmuka panyuntingan.\nSalin sekang kothak teks sing nongol, lan templekna kuwe ming kothak teks kiye, banjur klik \"{{int:abusefilter-import-submit}}\".",
+ "abusefilter-import-submit": "Impor data",
+ "abusefilter-group-default": "Gawan"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/mg.json b/www/wiki/extensions/AbuseFilter/i18n/mg.json
new file mode 100644
index 00000000..6d724b98
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/mg.json
@@ -0,0 +1,129 @@
+{
+ "@metadata": {
+ "authors": [
+ "Jagwar"
+ ]
+ },
+ "abuselog": "Tatitry ny Abuse Filter",
+ "abusefilter-blocker": "Sivana manakam-panararaotana",
+ "right-abusefilter-modify": "Hanova ny Abuse filter",
+ "right-abusefilter-view": "Hijery ny Abuse Filter",
+ "right-abusefilter-log": "Hijery ny tatitry ny abuse filter",
+ "right-abusefilter-log-detail": "Hijery ny antsipirihan'ny iditry ny Abuse filter",
+ "right-abusefilter-private": "Hijery ny fampahalalàna tsy sarababem-bahoaka ao amin'ny Abuse filter",
+ "right-abusefilter-private-log": "Mijery ny antsipirihany tsiambaratelon'ny laogim-pamakian'i AbuseFilter",
+ "right-abusefilter-revert": "Hamafa ny fanovana nataon'ny abuse filter nofidianao",
+ "right-abusefilter-view-private": "Hijery ny abuse filter voamarika ho tsy sarababem-bahoaka",
+ "right-abusefilter-hide-log": "Manitrika ny iditra ao amin'ny tatitry ny fanararaotana",
+ "right-abusefilter-hidden-log": "Mijery ny iditra nohafenina ao amin'ny tatitry ny fanararaotana",
+ "right-abusefilter-modify-global": "Hamorona na hanova sivam-panararaotana eran-tontolo",
+ "action-abusefilter-modify": "hanova ny abuse filter",
+ "action-abusefilter-view": "hijery ny abuse filter",
+ "action-abusefilter-log": "hijery ny tatitry ny abuse filter",
+ "action-abusefilter-log-detail": "mijery ny antsipirihan'ny iditra ao amin'ny tatitry ny fanararaotana",
+ "action-abusefilter-private": "Hijery ny fampahalalàna tsy sarababem-bahoaka ao amin'ny tatitry ny fanararaotana",
+ "action-abusefilter-private-log": "Hijery ny antsipirihany tsiambaratelon'ny laogim-pamakian'i AbuseFilter",
+ "action-abusefilter-revert": "mamafa ny fanovana araka ny filitra mpanakana fanararaotana nofidiana",
+ "abusefilter-log": "Laogin'ny sivana manakam-panararaotana",
+ "abusefilter-log-search-user": "Mpikambana :",
+ "abusefilter-log-search-title": "Lohateny:",
+ "abusefilter-log-search-wiki": "Wiki :",
+ "abusefilter-log-search-action-taken-any": "Na inona na inona",
+ "abusefilter-log-search-submit": "Tadiavo",
+ "abusefilter-log-detailedentry-global": "sivana eran-tontolo $1",
+ "abusefilter-log-detailedentry-local": "sivana $1",
+ "abusefilter-log-detailslink": "antsipirihany",
+ "abusefilter-log-diff": "fampitahana",
+ "abusefilter-log-details-var": "Miova",
+ "abusefilter-log-details-val": "Sanda",
+ "abusefilter-log-details-private": "Fampahalalàna tsy sarababem-bahoaka",
+ "abusefilter-log-details-ip": "Adiresy IP nihaviana",
+ "abusefilter-log-details-checkuser": "Hanamarina ny mpikambana",
+ "abusefilter-log-noactions": "tsy misy",
+ "abusefilter-log-details-diff": "Fiovana natao tao amin'ilay fanovana",
+ "abusefilter-log-linkoncontribs": "laogiim-panararaotana",
+ "abusefilter-log-hidden": "(iditra nasitrika)",
+ "abusefilter-log-hide-legend": "Hanafina ny iditra anaty laogy",
+ "abusefilter-log-hide-id": "Mpamantatra ny iditry ny laogy:",
+ "abusefilter-log-hide-hidden": "Hanafina ity iditra ity amin'ny mason'ny vahoaka",
+ "abusefilter-log-hide-reason": "Antony :",
+ "abusefilter-log-hide-forbidden": "Tsy manana zo hanafina ny laogim-panararaotana ianao.",
+ "abusefilter-logentry-suppress": "nanitrika [ny] [[$1]]",
+ "abusefilter-logentry-unsuppress": "nanala ny fanitrihana [an'i] [[$1]]",
+ "abusefilterprivatedetails-log-name": "Antsipirihany tsiambaratelon'ny laogim-pamakian'i AbuseFilter",
+ "abusefilter-list": "Sivana rehetra",
+ "abusefilter-list-id": "Laharan'ny sivana",
+ "abusefilter-list-status": "Sata",
+ "abusefilter-list-public": "Visavisa sarababem-bahoaka",
+ "abusefilter-list-consequences": "Setriny",
+ "abusefilter-list-visibility": "Fahitana",
+ "abusefilter-list-hitcount": "Isan'ny « hit »",
+ "abusefilter-list-edit": "Hanova",
+ "abusefilter-list-details": "Antsipirihany",
+ "abusefilter-list-limit": "Isa isaky ny pejy:",
+ "abusefilter-list-lastmodified": "Novaina farany",
+ "abusefilter-list-group": "Vondron-tsivana",
+ "abusefilter-hidden": "Tsy sarababem-bahoaka",
+ "abusefilter-unhidden": "Sarababem-bahoaka",
+ "abusefilter-enabled": "Alefa",
+ "abusefilter-deleted": "Voafafa",
+ "abusefilter-disabled": "Tsy alefa",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|}}tratra",
+ "abusefilter-new": "Hamorona sivana vaovao",
+ "abusefilter-return": "Hiverina any amin'ny fikarakarana sivana",
+ "abusefilter-status-global": "Ankapobe",
+ "abusefilter-list-options": "Safidy",
+ "abusefilter-list-options-deleted": "Sivana voafafa:",
+ "abusefilter-list-options-deleted-only": "Sivana voafafa ihany no aseho",
+ "abusefilter-list-options-deleted-hide": "Hanafina sivana voafafa",
+ "abusefilter-list-options-deleted-show": "Ampiarahana amin'ny sivana voafafa",
+ "abusefilter-list-options-scope": "Aseho ny sivana:",
+ "abusefilter-list-options-scope-local": "Fitsipika an-toerana ihany",
+ "abusefilter-list-options-scope-global": "Fitsipika eran-tontolo ihany",
+ "abusefilter-list-options-scope-all": "Fitsipika an-toerana sy eran-tontolo",
+ "abusefilter-list-options-disabled": "Sivana tsy miasa:",
+ "abusefilter-list-options-hidedisabled": "Hanafina ny sivana tsy miasa",
+ "abusefilter-list-options-submit": "Vaozina",
+ "abusefilter-tools-submitexpr": "Lanjalanjaina",
+ "abusefilter-tools-reautoconfirm-user": "Mpikambana :",
+ "abusefilter-edit-global": "Sivana eran-tontolo",
+ "abusefilter-edit-rules": "Fepetra :",
+ "abusefilter-edit-action-disallow": "Hanakana ny mpikambana hanao ilay tao",
+ "abusefilter-edit-action-blockautopromote": "Hanala ny sata « autoconfirmed » an'ilay mpikambana",
+ "abusefilter-edit-action-degroup": "Hanala ilay mpikambana ao amin'ny vondrona manan-tombontsoa",
+ "abusefilter-edit-action-block": "Hanakana ilay mpikambana sy/na adiresy IP hanoratra",
+ "abusefilter-edit-warn-other": "Hafatra hafa",
+ "abusefilter-edit-warn-actions": "Tao :",
+ "abusefilter-edit-warn-edit": "Hamorona na hanova ny hafatra nofidiana",
+ "abusefilter-edit-tag-tag": "Balizy hampiharina (iray isaky ny andalana)",
+ "abusefilter-edit-main": "Parametatry ny sivana",
+ "abusefilter-edit-done-subtitle": "Sivana voaova",
+ "abusefilter-edit-viewhistory": "Hijery ny tantaran'ity sivana (Filter) ity",
+ "abusefilter-edit-history": "Tantara",
+ "abusefilter-edit-revert": "Hamerina ny tao nataon'io sivana (filter) io",
+ "abusefilter-edit-tools": "Fitaovana :",
+ "abusefilter-edit-syntaxok": "Tsy nahitana hadisoana teo amin'ny rafitry ny fifehezanteny",
+ "abusefilter-edit-notallowed": "Tsy manana alalana mamorona na manova ny abuse filter ianao",
+ "abusefilter-edit-notallowed-global": "Tsy manana ny zo hanova na hamorona sivam-panararaotana ianao",
+ "abusefilter-edit-notallowed-global-custom-msg": "Tsy rahaharahiana ny hafatra fampitandremana manokana amin'ny sivana eran-tontolo",
+ "abusefilter-edit-builder-group-op-arithmetic": "Mpamaritra aritimetika",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Fanambarana (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Fanalana (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Fampitomboana (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Fizarana isa (/)",
+ "abusefilter-edit-builder-op-bool-not": "Tsia (!)",
+ "abusefilter-edit-builder-op-bool-and": "Sy (&)",
+ "abusefilter-edit-builder-op-bool-or": "Na (|)",
+ "abusefilter-edit-builder-group-vars": "Miova",
+ "abusefilter-edit-builder-vars-action": "Tao :",
+ "abusefilter-edit-builder-vars-newsize": "Habem-pejy vaovao",
+ "abusefilter-edit-builder-vars-oldsize": "Habem-pejy taloha",
+ "abusefilter-history-global": "Eran-tontolo",
+ "abusefilter-test-shownegative": "Aseho ny fiovana tsy miady amin'ny sivana",
+ "apihelp-query+abusefilters-description": "Aseho ny antsipirihan'ny sivana manohi-panararaotana",
+ "apihelp-query+abusefilters-param-show": "Ny sivana miady amin'ny safidy ihany no aseho",
+ "apihelp-query+abusefilters-example-2": "Antsipirihany sasantsasany amin'ny sivana ihany no aseho",
+ "apihelp-query+abuselog-param-user": "Iditra nataon'ny mpikambana na adiresy IP nofaritana ihany no aseho.",
+ "apihelp-query+abuselog-param-filter": "Iditra tratran'ny IDn-tsivana ihany no aseho.",
+ "apihelp-query+abuselog-example-1": "Aseho ireo iditra vao haingana"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/mhr.json b/www/wiki/extensions/AbuseFilter/i18n/mhr.json
new file mode 100644
index 00000000..82ed3a90
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/mhr.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "Сай",
+ "Санюн Вадик"
+ ]
+ },
+ "abusefilter-log-search-user": "Пайдаланыше:",
+ "abusefilter-edit-status-label": "Иктешлымаш:",
+ "abusefilter-edit-history": "Историй:",
+ "abusefilter-history-user": "Пайдаланыше",
+ "abusefilter-revert-filter": "Фильтр:"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/min.json b/www/wiki/extensions/AbuseFilter/i18n/min.json
new file mode 100644
index 00000000..1a3f2b1e
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/min.json
@@ -0,0 +1,123 @@
+{
+ "@metadata": {
+ "authors": [
+ "Iwan Novirion"
+ ]
+ },
+ "abusefilter": "Pangaturan panyariang panyalahgunoan",
+ "abuselog": "Log panyalahgunoan",
+ "right-abusefilter-modify": "Maubah panyariang panyalahgunoan",
+ "right-abusefilter-view": "Manampilan panyariang panyalahgunoan",
+ "right-abusefilter-log": "Manampilan log panyalahgunoan",
+ "right-abusefilter-log-detail": "Manampilan log panyalahgunoan sacaro rinci",
+ "right-abusefilter-private": "Manampilan data paribadi pado log panyalahgunoan",
+ "right-abusefilter-modify-restricted": "Maubah panyariang panyalahgunoan jo tindakan tabateh",
+ "right-abusefilter-revert": "Mangambalian sado parubahan nan dibuek dek panyariang panyalahgunoan",
+ "right-abusefilter-view-private": "Caliak panyariang pangalahgunoan nan ditandoi privat",
+ "right-abusefilter-log-private": "Caliak log panyariang panyalahgunoan nan ditandoi privat",
+ "right-abusefilter-hide-log": "Suruakan entri dalam log panyariang pangalahgunoan",
+ "right-abusefilter-hidden-log": "Caliak log panyalahgunoan nan tasuruak",
+ "abusefilter-log": "Log panyariang panyalahgunoan",
+ "abusefilter-log-summary": "Log iko manunjuakan daftar tindakan nan ditangkok dek panyariang panyalahgunoan.",
+ "abusefilter-log-search": "Pancarian log panyalahgunoan",
+ "abusefilter-log-search-user": "Pangguno:",
+ "abusefilter-log-search-filter": "ID panyariang:",
+ "abusefilter-log-search-title": "Judul:",
+ "abusefilter-log-search-wiki": "Wiki:",
+ "abusefilter-log-search-submit": "Cari",
+ "abusefilter-log-entry": "$1: $2 mamicu salah satu panyariang panyalahgunoan, dek malakuan \"$3\" pado $4.\nTindakan nan diambiak: $5;\nKatarangan panyariang: $6",
+ "abusefilter-log-detailedentry-meta": "!$1: $2 memicu $3, dek malakuan \"$4\" pado $5.\nTindakan nan diambiak: $6;\nKatarangan panyariang: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "panyariang global $1",
+ "abusefilter-log-detailedentry-local": "panyariang $1",
+ "abusefilter-log-detailslink": "rincian",
+ "abusefilter-log-diff": "bedo",
+ "abusefilter-log-hidelink": "sasuaian tampilan",
+ "abusefilter-log-details-legend": "Rincian untuak entri log $1",
+ "abusefilter-log-details-var": "Variabel",
+ "abusefilter-log-details-val": "Nilai",
+ "abusefilter-log-details-vars": "Parameter tindakan",
+ "abusefilter-log-details-private": "Data paribadi",
+ "abusefilter-log-details-ip": "Alamaik IP asal",
+ "abusefilter-log-noactions": "indak ado",
+ "abusefilter-log-details-diff": "Parubahan dalam suntiangan",
+ "abusefilter-log-linkoncontribs": "log panyalahgunoan",
+ "abusefilter-log-linkoncontribs-text": "Log panyalahgunoan untuak pangguno ko",
+ "abusefilter-log-hidden": "(entri disuruakan)",
+ "abusefilter-log-hidden-implicit": "(disuruakan dek revisi alah dihapuih)",
+ "abusefilter-log-cannot-see-details": "Sanak indak diizinkan untuak mancaliak rincian entri iko.",
+ "abusefilter-list-limit": "Jumlah per laman:",
+ "abusefilter-list-lastmodified": "Parubahan tarakhia",
+ "abusefilter-list-group": "Kalompok sariang",
+ "abusefilter-hidden": "Paribadi",
+ "abusefilter-unhidden": "Publik",
+ "abusefilter-enabled": "Aktipan",
+ "abusefilter-deleted": "Dihapuih",
+ "abusefilter-disabled": "Nonaktipan",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|kali}}",
+ "abusefilter-new": "Buek sariang baru",
+ "abusefilter-return": "Baliak ka pangaturan panyariang",
+ "abusefilter-status-global": "Global",
+ "abusefilter-list-options": "Piliahan",
+ "abusefilter-edit": "Manyuntiang panyariang panyalahgunoan",
+ "abusefilter-edit-subtitle": "Manyuntiang panyariang $1",
+ "abusefilter-edit-subtitle-new": "Mambuek panyariang",
+ "abusefilter-edit-new": "Sariang baru",
+ "abusefilter-edit-save": "Simpan panyariang",
+ "abusefilter-edit-id": "ID sariang:",
+ "abusefilter-edit-description": "Katarangan:\n:''(dapek dicaliak publik)''",
+ "abusefilter-edit-group": "Kalompok sariang:",
+ "abusefilter-edit-flags": "Tando:",
+ "abusefilter-edit-enabled": "Aktipan sariang ko",
+ "abusefilter-edit-lastmod-text": "$1 sampai $2",
+ "abusefilter-edit-consequences": "Nan dibuek jikok tapek",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|detik}}",
+ "abusefilter-edit-throttle-groups": "Kalompok pambateh jo:\n:''(ciek per barih, pisahan jo koma)''",
+ "abusefilter-edit-main": "Parameter sariang",
+ "abusefilter-edit-done-subtitle": "Sariang lah disuntiang",
+ "abusefilter-edit-done": "Sanak barasil manyimpan parubahan panyariang $1.",
+ "abusefilter-edit-history": "Riwayaik:",
+ "abusefilter-filter-log": "Parubahan panyariang tabaru",
+ "abusefilter-history": "Riwayaik parubahan Sariang Panyalahgunoan #$1",
+ "abusefilter-history-foruser": "Diubah dek $1",
+ "abusefilter-history-hidden": "Suruakan",
+ "abusefilter-history-enabled": "Aktipkan",
+ "abusefilter-history-global": "Global",
+ "abusefilter-history-timestamp": "Wakatu",
+ "abusefilter-history-user": "Pangguno",
+ "abusefilter-history-public": "Katarangan panyariang publik",
+ "abusefilter-history-flags": "Tando",
+ "abusefilter-history-filter": "Aturan sariang",
+ "abusefilter-history-comments": "Komentar",
+ "abusefilter-history-actions": "Tindakan",
+ "abusefilter-history-backedit": "Baliak ka panyuntiang panyariang",
+ "abusefilter-history-deleted": "Dihapuih",
+ "abusefilter-history-filterid": "Panyariang",
+ "abusefilter-history-select-legend": "Cari panyariang",
+ "abusefilter-history-select-user": "Pangguno:",
+ "abusefilter-history-select-submit": "Manyariang",
+ "abusefilter-history-diff": "Parubahan",
+ "abusefilter-history-error-hidden": "Panyaring nan Sanak cari disuruakan, dan Sanak indak dapek mancaliak riwayaiknyo.",
+ "abusefilter-action-tag": "Tando",
+ "abusefilter-action-throttle": "Bateh",
+ "abusefilter-action-disallow": "Indak diijinan",
+ "abusefilter-topnav": "'''Navigasi Sariang Panyalahgunoan '''",
+ "abusefilter-topnav-home": "Palanta",
+ "abusefilter-topnav-test": "Rangkaian pangujian",
+ "abusefilter-topnav-examine": "Pariso suntiangan lalu",
+ "abusefilter-topnav-log": "Log panyalahgunoan",
+ "abusefilter-topnav-tools": "Alaik debugging",
+ "abusefilter-topnav-import": "Impor panyariang",
+ "abusefilter-log-name": "Log panyariang panyalahgunoan",
+ "abusefilter-log-header": "Log iko barisi ringkasan parubahan nan dilakukan pado panyariang.\nUntuak katarangan langkok, caliak [[Special:AbuseFilter/history|daftar]] parubahan panyariang tabaru.",
+ "abusefilter-log-noresults": "Indak ado hasil",
+ "abusefilter-diff-title": "Pabedoan antaro versi",
+ "abusefilter-diff-item": "Item",
+ "abusefilter-diff-version": "Versi dari $1 {{GENDER:$3|dek}} $2",
+ "abusefilter-diff-info": "Informasi dasar",
+ "abusefilter-diff-pattern": "Kondisi panyariangan",
+ "abusefilter-diff-backhistory": "Baliak ka riwayaik panyariangan",
+ "abusefilter-diff-prev": "Parubahan nan lalu",
+ "abusefilter-diff-next": "Parubahan nan kini",
+ "abusefilter-import-submit": "Impor data",
+ "abusefilter-group-default": "Baku"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/mk.json b/www/wiki/extensions/AbuseFilter/i18n/mk.json
new file mode 100644
index 00000000..20e53753
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/mk.json
@@ -0,0 +1,529 @@
+{
+ "@metadata": {
+ "authors": [
+ "Bjankuloski06",
+ "Brest",
+ "Matma Rex",
+ "Srdjan m"
+ ]
+ },
+ "abusefilter-desc": "Извршува автоматски хевристички филтрирања во уредувањата",
+ "abusefilter": "Прилагодувања на филтерот на злоупотреби",
+ "abuselog": "Дневник на злоупотреби",
+ "abusefilter-intro": "Добре дојдовте на посредникот за раководење со Филтерот за злоупотреби.\nФилтерот за злоупотреби е автоматизиран програмски механизам за примена на автоматска хевристика врз сите дејства.\nОвој посредник дава список на утврдени филтри, и истиот овозможува нивно менување.",
+ "abusefilter-mustbeeditor": "Од безбедносни причини, овој посредник можат да го користат само корисници со право на менување филтри за злоупотреба.",
+ "abusefilter-warning": "'''Предупредување:''' Ова дејство е автоматски утврдено како штетно.\nНеконструктивните дејства ќе бидат набргу отстранети,\nа глупавите или упорни некоструктивни уредувања ќе доведат до блокирање на вашата сметка или IP-адреса.\nАко сметате дека оваа постапка е конструктивна, можете повторно да ја поднесете за да ја потврдите.\nЕве краток опис на правилото за злоупотреби според кое беше утврдено дека сте направиле престап: $1",
+ "abusefilter-disallowed": "Ова дејство е автоматски утврдено како штетно, и затоа не е дозволено.\nАко сметате дека вашето уредување беше конструктивно, обратете се администратор, и кажете му што впрочем сте сакале да направите.\nЕве краток опис на правилото за злоупотреби според кое беше утврдено дека сте направиле престап: $1",
+ "abusefilter-blocked-display": "Ова дејство е автоматски утврдено како штетно,\nи забрането Ви е да го извршите.\nПокрај ова, за да се заштити {{SITENAME}}, вашата корисничка сметка и сите поврзани IP-адреси се блокирани од уредување.\nАко оваа реакција се должи на некаква грешка, обратете се на администратор.\nЕве краток опис на правилото за злоупотреби според кое беше утврдено дека сте направиле престап: $1",
+ "abusefilter-degrouped": "Ова дејство е автоматски утврдено како штетно.\nЗатоа тоа не е дозволено. Покрај ова, бидејќи вашата сметка е под сомнение дека е искомпромитирана, одземени ви се и правата.\nАко сметате дека ова беше некоја грешка, контактирајте бирократ со објаснение за вашата постапка, за да можат да ви бидат вратени правата.\nЕве краток опис на правилото за злоупотреби според кое беше утврдено дека сте направиле престап: $1",
+ "abusefilter-autopromote-blocked": "Оваа постапка е автоматски утврдена како штетна, и затоа не е дозволена.\nПокра тоа, од безбедносни причини, привремено ви се одземени извесни привилегии кои обично им следуваат на докажани корисници.\nЕве краток опис на правилото за злоупотреби според кое беше утврдено дека сте направиле престап: $1",
+ "abusefilter-blocker": "Филтер за злоупотреби",
+ "abusefilter-blockreason": "Автоматски блокиран од филтерот за злоупотреби.\nОпис на совпаднатото правило: $1",
+ "abusefilter-degroupreason": "Филтерот на злоупотреби автоматски ги одзема правата.\nОпис на правилото: $1",
+ "abusefilter-accountreserved": "Оваа корисничка сметка е резервирана за употреба од филтерот за злоупотреби",
+ "right-abusefilter-modify": "Менување на филтри за злоупотреба",
+ "right-abusefilter-view": "Преглед на филтрите за злоупотреба",
+ "right-abusefilter-log": "Преглед на дневникот на злоупотреби",
+ "right-abusefilter-log-detail": "Прегледување на подробности во записите од дневникот на злоупотреби",
+ "right-abusefilter-private": "Прегледување на лични податоци во дневникот на злоупотреби",
+ "right-abusefilter-private-log": "Преглед на пристап до лични дневнички податоци од Филтерот за злоупотреби",
+ "right-abusefilter-modify-restricted": "Менување на филтри за злоупотреби со ограничени можности за дејствување",
+ "right-abusefilter-revert": "Отповикување на сите промени на даден филтер за злоупотреби",
+ "right-abusefilter-view-private": "Прегледување на филтри за злоупотреби означени како лични",
+ "right-abusefilter-log-private": "Преглед на дневнички записи за филтри на злоупотреба означени како лични",
+ "right-abusefilter-hide-log": "Криење записи во дневникот на злоупотреби",
+ "right-abusefilter-hidden-log": "Прегледување на скриени записи во дневникот на злоупотреби",
+ "right-abusefilter-modify-global": "Создавање или менување на глобални филтри за злоупотреби",
+ "action-abusefilter-modify": "менување на филтри за злоупотреби",
+ "action-abusefilter-view": "прегледување на филтри за злоупотреби",
+ "action-abusefilter-log": "прегледување на дневникот за злоупотреби",
+ "action-abusefilter-log-detail": "прегледување на подробности од записите во дневникот на злоупотреби",
+ "action-abusefilter-private": "прегледување на лични податоци во дневникот на злоупотреби",
+ "action-abusefilter-private-log": "преглед на пристап до лични дневнички податоци од Филтерот за злоупотреби",
+ "action-abusefilter-modify-restricted": "менување на филтри за злоупотреби со ограничени можности за дејствување",
+ "action-abusefilter-revert": "отповикување на сите промени извршени од даден филтер за злоупотреби",
+ "action-abusefilter-view-private": "прегледување на филтри за злоупотреби означени како лични",
+ "action-abusefilter-log-private": "преглед на дневници на филтрите на злоупотреба означени како приватни",
+ "abusefilter-log": "Дневник на филтерот за злоупотреби",
+ "abusefilter-log-summary": "Овој дневник прикажува список на сите дејства уловени од филтрите.",
+ "abusefilter-log-search": "Пребарај по дневникот на злоупотреби",
+ "abusefilter-log-search-user": "Корисник:",
+ "abusefilter-log-search-filter": "Филтерски назнаки (одделете со исправени црти):",
+ "abusefilter-log-search-title": "Наслов:",
+ "abusefilter-log-search-wiki": "Вики:",
+ "abusefilter-log-search-impact": "Последица:",
+ "abusefilter-log-search-impact-all": "Сите дејства",
+ "abusefilter-log-search-impact-saved": "Само зачувани промени",
+ "abusefilter-log-search-impact-not-saved": "Без зачувани промени",
+ "abusefilter-log-search-entries-label": "Видливост:",
+ "abusefilter-log-search-entries-all": "Сите ставки",
+ "abusefilter-log-search-entries-hidden": "Само скриени ставки",
+ "abusefilter-log-search-entries-visible": "Само видливи ставки",
+ "abusefilter-log-search-action-taken-label": "Преземено дејство:",
+ "abusefilter-log-search-action-taken-any": "било кое",
+ "abusefilter-log-search-submit": "Барај",
+ "abusefilter-log-entry": "$1: $2 {{GENDER:$8|предизвика}} филтер на злоупотреби, {{GENDER:$8|извршувајќи}} го дејството „$3“ на $4.\nПреземени мерки: $5;\nОпис од филтерот: $6",
+ "abusefilter-log-entry-withdiff": "$1: $2 {{GENDER:$8|предизвика}} филтер на злоупотреби, {{GENDER:$8|извршувајќи}} го дејството „$3“ на $4.\nПреземени мерки: $5;\nОпис од филтерот: $6 ($7)",
+ "abusefilter-log-detailedentry-meta": "$1: $2 го {{GENDER:$9|предизвика}} $3, {{GENDER:$9|извршувајќи}} го дејството „$4“ на $5.\nПреземени мерки: $6;\nОпис од филтерот: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "глобален филтер $1",
+ "abusefilter-log-detailedentry-local": "филтерот $1",
+ "abusefilter-log-detailslink": "подробности",
+ "abusefilter-log-diff": "разл",
+ "abusefilter-log-hidelink": "прилагоди видливост",
+ "abusefilter-log-details-legend": "Подробности за дневничкиот запис $1",
+ "abusefilter-log-details-var": "Променлива",
+ "abusefilter-log-details-val": "Вредност",
+ "abusefilter-log-details-vars": "Параметри на дејството",
+ "abusefilter-log-details-private": "Лични дневнички податоци",
+ "abusefilter-log-details-ip": "Исходна IP-адреса",
+ "abusefilter-log-details-checkuser": "Провери корисник",
+ "abusefilter-log-noactions": "нема",
+ "abusefilter-log-details-diff": "Направени промени при уредувањето",
+ "abusefilter-log-linkoncontribs": "дневник на злоупотреби",
+ "abusefilter-log-linkoncontribs-text": "Дневник на злоупотреби за {{GENDER:$1|овој корисник|оваа корисничка}}",
+ "abusefilter-log-hidden": "(скриен запис)",
+ "abusefilter-log-hidden-implicit": "(скриено бидејќи преработката е избришана)",
+ "abusefilter-log-cannot-see-details": "Немате дозвола да гледате подробности за записот.",
+ "abusefilter-log-cannot-see-private-details": "Немате дозвола да гледате лични дневнички податоци во ставкава.",
+ "abusefilter-log-nonexistent": "Не постои ставка со укажаната назнака.",
+ "abusefilter-log-details-hidden": "Не можете да ги прегледувате подробностите на овој запис бидејќи тој е сокриен за јавноста.",
+ "abusefilter-log-private-not-included": "Една или повеќе од филтерските назнаки што ги укажавте се лични. Бидејќи не ви е дозволено да ги разгледувате подробностите за личните филтри, овие филтри не се употребени при пребарувањето.",
+ "abusefilter-log-hide-legend": "Скриј ставка",
+ "abusefilter-log-hide-id": "ID на записот:",
+ "abusefilter-log-hide-hidden": "Скриј го записов за јавноста",
+ "abusefilter-log-hide-reason": "Причина:",
+ "abusefilter-log-hide-reason-other": "Друга/дополнителна причина:",
+ "abusefilter-log-hide-forbidden": "Немате дозвола да криете записи во дневникот на злоупотреби.",
+ "abusefilter-logentry-suppress": "го притаи „[[$1]]“",
+ "abusefilter-logentry-unsuppress": "откриено „[[$1]]“",
+ "logentry-abusefilter-hit": "$1 го {{GENDER:$2|предизвика}} $4, {{GENDER:$2|извршувајќи}} го дејството „$5“ на $3. Извршени постапки: $6 ($7)",
+ "log-action-filter-abusefilter": "Вид промена во филтерот:",
+ "log-action-filter-abusefilter-create": "Создавање на нов филтер",
+ "log-action-filter-abusefilter-modify": "Измена во филтер",
+ "logentry-abusefilterprivatedetails-access": "$1 {{GENDER:$2|пристапи}} до личните податоци за $3",
+ "abusefilterprivatedetails-log-name": "Дневник на пристап до лични податоци од Филтерот за злоупотреби",
+ "abusefilter-management": "Раководење со филтерот за злоупотреби",
+ "abusefilter-list": "Сите филтри",
+ "abusefilter-list-id": "Назнака на филтерот",
+ "abusefilter-list-pattern": "Мостра",
+ "abusefilter-list-status": "Статус",
+ "abusefilter-list-public": "Опис достапен за јавноста",
+ "abusefilter-list-consequences": "Последици",
+ "abusefilter-list-visibility": "Видливост",
+ "abusefilter-list-hitcount": "Број на погодоци",
+ "abusefilter-list-edit": "Уреди",
+ "abusefilter-list-details": "Подробно",
+ "abusefilter-list-limit": "Број по страница:",
+ "abusefilter-list-lastmodified": "Последна промена",
+ "abusefilter-list-group": "Филтерска група",
+ "abusefilter-hidden": "Личен",
+ "abusefilter-unhidden": "Јавен",
+ "abusefilter-enabled": "Вклучен",
+ "abusefilter-deleted": "Избришан",
+ "abusefilter-disabled": "Исклучен",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|погодок|погодоци}}",
+ "abusefilter-new": "Создај нов филтер",
+ "abusefilter-return": "Назад кон раководењето со филтри",
+ "abusefilter-status-global": "Глобален",
+ "abusefilter-list-options": "Нагодувања",
+ "abusefilter-list-options-deleted": "Избришани филтри:",
+ "abusefilter-list-options-deleted-only": "Прикажи само избришани филтери",
+ "abusefilter-list-options-deleted-hide": "Скриј избришани филтери",
+ "abusefilter-list-options-deleted-show": "Вклучи избришани филтери",
+ "abusefilter-list-options-scope": "Прикажи филтри:",
+ "abusefilter-list-options-scope-local": "Само месни правила",
+ "abusefilter-list-options-scope-global": "Само глобални правила",
+ "abusefilter-list-options-scope-all": "Месни и глобални правила",
+ "abusefilter-list-options-disabled": "Исклучени филтери:",
+ "abusefilter-list-options-hidedisabled": "Скриј исклучени филтери",
+ "abusefilter-list-options-searchfield": "Пребарајте во склад со правилата:",
+ "abusefilter-list-options-searchpattern": "Вметни мостра",
+ "abusefilter-list-options-searchoptions": "Режим на пребарување:",
+ "abusefilter-list-options-search-like": "Просто пребарување",
+ "abusefilter-list-options-search-rlike": "Регуларен израз",
+ "abusefilter-list-options-search-irlike": "Големинскоразликувачки регуларен израз",
+ "abusefilter-list-regexerror": "Се појави грешка при пребарувањето: Грешка во синтаксата на регуларниот израз.",
+ "abusefilter-list-options-submit": "Поднови",
+ "abusefilter-tools-text": "Еве некои алатки кои можат да помогнат со форматирање и отстранување грешки во филтрите за злоупотреби.",
+ "abusefilter-tools-expr": "Проверка на изрази",
+ "abusefilter-tools-submitexpr": "Провери",
+ "abusefilter-tools-reautoconfirm": "Врати автопотврден статус",
+ "abusefilter-tools-reautoconfirm-user": "Корисник:",
+ "abusefilter-tools-reautoconfirm-submit": "Преавтопотврда",
+ "abusefilter-reautoconfirm-none": "На {{GENDER:$1|тој корисник не му бил |таа корисничка не ѝ бил}} замрзнуван статусот на автопотврденост.",
+ "abusefilter-reautoconfirm-notallowed": "Не ви е дозволено да го вратите автопотврдениот статус.",
+ "abusefilter-reautoconfirm-done": "Автопотврдениот статус на сметката е вратен",
+ "abusefilter-status": "Од {{PLURAL:$1|последното $1 дејствие|последните $1 дејствија}}, $2 ($3%) го {{PLURAL:$2|достигна|достигнаа}} условното ограничување $4, и $5 ($6%) {{PLURAL:$5|се совпаѓа|се совпаѓаат}} со еден од тековно вклучените филтри.",
+ "abusefilter-edit": "Уредување на филтер за злоупотреби",
+ "abusefilter-edit-subtitle": "Уредување на филтерот $1",
+ "abusefilter-edit-subtitle-new": "Создавање на филтер",
+ "abusefilter-edit-oldwarning": "<strong>Уредувате стара верзија на овој филтер.\nНаведените статистики се однесуваат на најновата верзија на филтерот.\nАко ги зачувате направените промени, ќе ги поклопите сите промени направени од преработката која ја уредувате наваму.</strong> &bull;\n[[Special:AbuseFilter/history/$2|Назад кон историјата на овој филтер]].",
+ "abusefilter-edit-status-label": "Статистики:",
+ "abusefilter-edit-status": "Од {{PLURAL:$1|последното дејство|последните $1 дејства}}, овој филтер соодветствува на $2 ($3%).",
+ "abusefilter-edit-status-profile": "Од $1 {{PLURAL:$1|последното дејство|последните дејства}}, овој филтер соодветствува на $2 ($3%).\nПросечното време на работа изнесува $4мс, и искористува $5 {{PLURAL:$5|услов|услови}} од ограничувањето на услови.",
+ "abusefilter-edit-throttled-warning": "'''Предупредување:''' Овој филтер е автоматски означен како штетен. ОД безбедносни причини, следниве дејства нема да се исполнат ($1). Прегледајте и [[mw:Extension:AbuseFilter/Conditions|оптимизирајте ги]] условите за да го тргнете ова ограничување",
+ "abusefilter-edit-new": "Нов филтер",
+ "abusefilter-edit-save": "Зачувај филтер",
+ "abusefilter-edit-id": "Назнака на филтерот:",
+ "abusefilter-edit-switch-editor": "Смени уредник",
+ "abusefilter-edit-description": "Опис:\n:''(јавно видлив)''",
+ "abusefilter-edit-field-description": "опис",
+ "abusefilter-edit-group": "Филтерска група:",
+ "abusefilter-edit-flags": "Знаменца:",
+ "abusefilter-edit-enabled": "Овозможи го овој филтер",
+ "abusefilter-edit-deleted": "Означи како избришан",
+ "abusefilter-edit-hidden": "Скриј ги за јавноста информациите за овој филтер",
+ "abusefilter-edit-global": "Глобален филтер",
+ "abusefilter-edit-rules": "Услови:",
+ "abusefilter-edit-field-conditions": "услови",
+ "abusefilter-edit-notes": "Белешки:",
+ "abusefilter-edit-lastmod": "Неодамна изменети филтри:",
+ "abusefilter-edit-lastmod-text": "$1 од $2",
+ "abusefilter-edit-hitcount": "Погодоци на филтерот:",
+ "abusefilter-edit-consequences": "Дејства што ќе се преземат при совпаѓањето",
+ "abusefilter-edit-action-warn": "Преземај ги овие мерки по предупредувањето на корисникот",
+ "abusefilter-edit-action-disallow": "Спречи го корисникот да го изврши даденото дејство",
+ "abusefilter-edit-action-blockautopromote": "Одземи му го автопотврдениот статус на корисникот",
+ "abusefilter-edit-action-degroup": "Отстрани го корисникот од сите привилегирани групи",
+ "abusefilter-edit-action-block": "Блокирај го корисникот и/или IP-адресата од уредување",
+ "abusefilter-edit-action-blocktalk": "Блокирај го корисникот и/или IP-адресата од уредување на сопствената разговорна страница",
+ "abusefilter-edit-action-throttle": "Повикувај дејства само ако ако корисникот пречекори граница на стапка",
+ "abusefilter-edit-action-rangeblock": "Блокирај го соодветниот IP-опсег од којшто работи корисникот",
+ "abusefilter-edit-action-tag": "Означи го уредувањето за понатамошна проверка",
+ "abusefilter-edit-throttle-count": "Број на дозволени дејства:",
+ "abusefilter-edit-throttle-period": "Временски период:",
+ "abusefilter-edit-throttle-seconds": "{{PLURAL:$1|една секунда|$1 секунди}}",
+ "abusefilter-edit-throttle-groups": "Истисок по групи:\n:''(еден по ред, комбинирање со запирки)''",
+ "abusefilter-edit-warn-message": "Системска порака за предупредувањето:",
+ "abusefilter-edit-warn-other": "Друга порака",
+ "abusefilter-edit-warn-other-label": "Име на страница на друга порака:\n:''(без претставката MediaWiki)''",
+ "abusefilter-edit-warn-actions": "Дејства:",
+ "abusefilter-edit-warn-preview": "Прегледај избрана порака",
+ "abusefilter-edit-warn-edit": "Создај/Уреди избрана порака",
+ "abusefilter-edit-tag-tag": "[[Special:Tags|Ознаки]] за применување (една по ред):",
+ "abusefilter-edit-block-anon-durations": "Траење на блокот за анонимни корисници:",
+ "abusefilter-edit-block-user-durations": "Траење на блокот за регистрирани корисници:",
+ "abusefilter-block-anon": "анонимни корисници",
+ "abusefilter-block-user": "регистрирани корисници",
+ "abusefilter-edit-denied": "Не можете да ги гледате подробностите на овој филтер бидејќи е скриен за јавноста.",
+ "abusefilter-edit-main": "Параметри на филтерот",
+ "abusefilter-edit-done-subtitle": "Филтерот е уреден",
+ "abusefilter-edit-done": "[[Special:AbuseFilter/history/$1/diff/prev/$2|Вашите измени]] во [[Special:AbuseFilter/$1|филтерот $3]] се зачувани.",
+ "abusefilter-edit-badsyntax": "Во назначениот филтер има синтаксна грешка.\nИзводот од расчленувачот е: <pre>$1</pre>",
+ "abusefilter-edit-missingfields": "Следниве полиња мора да се пополнат: $1",
+ "abusefilter-edit-restricted": "Не можете да го уредувате овој филтер бидејќи содржи еден или повеќе ограничени дејствија.\nПобарајте овие промени за вас да ги направи некој корисник со дозвола за додавање на ограничени дејства.",
+ "abusefilter-edit-viewhistory": "Преглед на историјата на филтерот",
+ "abusefilter-edit-history": "Историја:",
+ "abusefilter-edit-check": "Проверка на синтакса",
+ "abusefilter-edit-badfilter": "Назначениот филтер не постои",
+ "abusefilter-edit-revert": "Врати ги дејствијата на филтерот",
+ "abusefilter-edit-tools": "Алатки:",
+ "abusefilter-edit-test-link": "Испробај го филтеров со скорешните уредувања",
+ "abusefilter-edit-export": "Извези го филтеров во друго вики",
+ "abusefilter-edit-syntaxok": "Не пронајдов синтаксни грешки.",
+ "abusefilter-edit-syntaxerr": "Пронајдена е синтаксна грешка: $1",
+ "abusefilter-edit-bad-tags": "Еден или повеќе назначени ознаки се неважечки.\nОзнаките треба да бидат кратки, не смеат да содржат псоебни знаци, и не не смеат да се резервирани од друг програм. Изберете друг назив на ознаката",
+ "abusefilter-edit-notallowed": "Не ви е дозволено да создавате или уредувате филтри за злоупотреби",
+ "abusefilter-edit-notallowed-global": "Не ви е дозволено да создавате или уредувате глобални филтри за злоупотреби",
+ "abusefilter-edit-notallowed-global-custom-msg": "Глобалните филтри не поддржуваат кориснички-зададени предупредувања",
+ "abusefilter-edit-builder-select": "Одберете можност за додавање кај курсорот",
+ "abusefilter-edit-builder-group-op-arithmetic": "Аритметички оператори",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Собирање (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Одземање (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Множење (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Делење (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Модул (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Степен (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Оператори за споредба",
+ "abusefilter-edit-builder-op-comparison-equal": "Вредност еднаква на (==)",
+ "abusefilter-edit-builder-op-comparison-equal-strict": "Вредност и тип еднакви на (===)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Вредноста не е еднаква на (!=)",
+ "abusefilter-edit-builder-op-comparison-notequal-strict": "Вредноста и типот не се еднакви на (!==)",
+ "abusefilter-edit-builder-op-comparison-lt": "Помало од (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Поголемо од (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Помало или еднакво со (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Поголемо или еднакво со (>=)",
+ "abusefilter-edit-builder-group-op-bool": "Булови оператори",
+ "abusefilter-edit-builder-op-bool-not": "Не (!)",
+ "abusefilter-edit-builder-op-bool-and": "И (&)",
+ "abusefilter-edit-builder-op-bool-or": "Или (|)",
+ "abusefilter-edit-builder-op-bool-xor": "ЕКСИЛИ (^)",
+ "abusefilter-edit-builder-group-misc": "Разно",
+ "abusefilter-edit-builder-misc-in": "се содржи во низата (in)",
+ "abusefilter-edit-builder-misc-like": "Се совпаѓа со шемата (like)",
+ "abusefilter-edit-builder-misc-rlike": "Се совпаѓа со регуларниот израз (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "Пронаоѓа регуларен израз, разликува големи и мали букви (irlike)",
+ "abusefilter-edit-builder-misc-contains": "Левата низа ја содржи десната низа (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "Дословна низа (\"\")",
+ "abusefilter-edit-builder-misc-tern": "Тринарен оператор (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "Услов (if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "Функции",
+ "abusefilter-edit-builder-funcs-length": "Должина на низата (length)",
+ "abusefilter-edit-builder-funcs-lcase": "Со мали букви (lcase)",
+ "abusefilter-edit-builder-funcs-ucase": "Со големи букви (ucase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "Нормализирај ги знаците подлежни на забуна (ccnorm)",
+ "abusefilter-edit-builder-funcs-ccnorm-contains-any": "Нормализирај и пребарај низа со повеќе поднизи во OR-режим (ccnorm_contains_any)",
+ "abusefilter-edit-builder-funcs-ccnorm-contains-all": "Нормализирај и пребарај низа со повеќе поднизи во режимот И (ccnorm_contains_all)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "Отстрани повторени знаци (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "Посебни знаци / вкупно знаци (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "Нормализирај (norm)",
+ "abusefilter-edit-builder-funcs-count": "Број на јавувања на низата X во низата Y (count)",
+ "abusefilter-edit-builder-funcs-rcount": "Број на јавувања на регуларнот израз X во низата Y (rcount)",
+ "abusefilter-edit-builder-funcs-get_matches": "Строј совпаѓања во регуларните изрази во рамките на текстот за секоја зафатна група (get_matches)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "Отстрани празни простори (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "Отстрани посебни знаци (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "Проверка дали IP-адресата е во опсегот (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "Пребарај повеќе поднизи во низата во режимот ИЛИ (contains_any)",
+ "abusefilter-edit-builder-funcs-contains-all": "Пребарај повеќе поднизи во низата во режим И. (contains_all)",
+ "abusefilter-edit-builder-funcs-substr": "Подниза (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "Позиција на поднизата во низата (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "Замени ја поднизата со низа (str_replace)",
+ "abusefilter-edit-builder-funcs-rescape": "Извод на низа како дословна во рег. изрази (rescape)",
+ "abusefilter-edit-builder-funcs-set_var": "Постави променлива (set_var)",
+ "abusefilter-edit-builder-group-vars": "Променливи",
+ "abusefilter-edit-builder-vars-accountname": "Име на сметката (при нејзиното создавање)",
+ "abusefilter-edit-builder-vars-timestamp": "Unix-датум и време на промената",
+ "abusefilter-edit-builder-vars-timestamp-expanded": "Време и датум на дневникот",
+ "abusefilter-edit-builder-vars-action": "Дејство",
+ "abusefilter-edit-builder-vars-addedlines": "Додадени редови во уредувањето",
+ "abusefilter-edit-builder-vars-delta": "Големинска промена со уредувањето",
+ "abusefilter-edit-builder-vars-diff": "Обединети разлики на промените направени во уредувањето",
+ "abusefilter-edit-builder-vars-newsize": "Нова големина на страницата",
+ "abusefilter-edit-builder-vars-oldsize": "Стара големина на страницата",
+ "abusefilter-edit-builder-vars-old-content-model": "Стар содржински модел",
+ "abusefilter-edit-builder-vars-new-content-model": "Нов содржински модел",
+ "abusefilter-edit-builder-vars-removedlines": "Редови отстранети во уредувањето",
+ "abusefilter-edit-builder-vars-summary": "Опис/причина на уредувањето",
+ "abusefilter-edit-builder-vars-article-id": "Назнака на страницата",
+ "abusefilter-edit-builder-vars-article-ns": "Именски простор на страницата",
+ "abusefilter-edit-builder-vars-article-text": "Наслов на страницата (без именски простор)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Полн наслов на страницата",
+ "abusefilter-edit-builder-vars-article-views": "Посети",
+ "abusefilter-edit-builder-vars-movedfrom-id": "Назнака на страницата за преместување",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "Именски простор на преименуваната страница",
+ "abusefilter-edit-builder-vars-movedfrom-text": "Име на преименуваната страница",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "Полн наслов на преместената страница",
+ "abusefilter-edit-builder-vars-movedto-id": "Назнака на целната страница за преместување",
+ "abusefilter-edit-builder-vars-movedto-ns": "Именски простор на целната страница за преместување",
+ "abusefilter-edit-builder-vars-movedto-text": "Наслов на целната страница за преместување",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "Полн наслов на целната страница за преместување",
+ "abusefilter-edit-builder-vars-user-editcount": "Уреди број на уредувања од корисникот",
+ "abusefilter-edit-builder-vars-user-age": "Старост на корисничката сметка",
+ "abusefilter-edit-builder-vars-user-name": "Име на корисничката сметка",
+ "abusefilter-edit-builder-vars-user-groups": "Групи (вклучувајќи нејавни) во кои членува корисникот",
+ "abusefilter-edit-builder-vars-user-rights": "Права што ги има корисникот",
+ "abusefilter-edit-builder-vars-user-blocked": "Дали корисникот е блокиран",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "Време кога била потврдена е-поштата",
+ "abusefilter-edit-builder-vars-recent-contributors": "Последните десет уредници на страницата",
+ "abusefilter-edit-builder-vars-first-contributor": "Прв уредник на страницата",
+ "abusefilter-edit-builder-vars-movedfrom-recent-contributors": "Последните десет уредници на изворната преместена страница",
+ "abusefilter-edit-builder-vars-movedfrom-first-contributor": "Прв учесник во изворната преместена страница",
+ "abusefilter-edit-builder-vars-movedto-recent-contributors": "Последните десет учесници во целната страница",
+ "abusefilter-edit-builder-vars-movedto-first-contributor": "Прв учесник во целната страница",
+ "abusefilter-edit-builder-vars-all-links": "Сите надворешни врски во новиот текст",
+ "abusefilter-edit-builder-vars-added-links": "Сите надворешни врски додадени во уредувањето",
+ "abusefilter-edit-builder-vars-removed-links": "Сите надворешни врски отстранети во уредувањето",
+ "abusefilter-edit-builder-vars-old-text": "Стар викитекст, пред уредувањето",
+ "abusefilter-edit-builder-vars-new-text": "Нов викитекст по уредувањето",
+ "abusefilter-edit-builder-vars-new-pst": "Викитекст за нова страница, претворен пред зачувување",
+ "abusefilter-edit-builder-vars-diff-pst": "Обединети разлики во уредувањето, претворени пред зачувување",
+ "abusefilter-edit-builder-vars-addedlines-pst": "Додадени редови во уредувањето, претворени пред зачувување",
+ "abusefilter-edit-builder-vars-new-text-stripped": "Нов текст на страницата, исчистен од секакви ознаки",
+ "abusefilter-edit-builder-vars-new-html": "Расчленет HTML-извор на новата преработка",
+ "abusefilter-edit-builder-vars-restrictions-edit": "Ниво на заштита на страницата од уредувања",
+ "abusefilter-edit-builder-vars-restrictions-move": "Ниво на заштита од преместување на страницата",
+ "abusefilter-edit-builder-vars-restrictions-create": "Заштита за создавање на страницата",
+ "abusefilter-edit-builder-vars-restrictions-upload": "Заштита за подигање на податотеката",
+ "abusefilter-edit-builder-vars-movedfrom-restrictions-edit": "Степен на заштита на преместената страница",
+ "abusefilter-edit-builder-vars-movedfrom-restrictions-move": "Степен на заштита на изворната страница",
+ "abusefilter-edit-builder-vars-movedfrom-restrictions-create": "Заштита од создавање на изворната преместена страница",
+ "abusefilter-edit-builder-vars-movedfrom-restrictions-upload": "Заштита од подигање на изворната преместена страница",
+ "abusefilter-edit-builder-vars-movedto-restrictions-edit": "Заштита од уредување на целната страница",
+ "abusefilter-edit-builder-vars-movedto-restrictions-move": "Заштита од преместување на целната страница",
+ "abusefilter-edit-builder-vars-movedto-restrictions-create": "Заштита од создавање на целната страница",
+ "abusefilter-edit-builder-vars-movedto-restrictions-upload": "Заштита од подигање на целната страница",
+ "abusefilter-edit-builder-vars-old-text-stripped": "Текст на старата страница, со отстранети ознаки",
+ "abusefilter-edit-builder-vars-old-links": "Врски на оваа страница, пред уредувањето",
+ "abusefilter-edit-builder-vars-old-html": "Викитекст на старата страница, расчленет во HTML",
+ "abusefilter-edit-builder-vars-minor-edit": "Дали уредувањето е обележано како ситно",
+ "abusefilter-edit-builder-vars-file-sha1": "SHA1-тараба на содржината на податотеката",
+ "abusefilter-edit-builder-vars-file-size": "Големина на податотеката во бајти",
+ "abusefilter-edit-builder-vars-file-mime": "MIME-тип на податотеката",
+ "abusefilter-edit-builder-vars-file-mediatype": "Медиумски тип на податотеката",
+ "abusefilter-edit-builder-vars-file-width": "Ширина на податотеката во пиксели",
+ "abusefilter-edit-builder-vars-file-height": "Висина на податотеката во пиксели",
+ "abusefilter-edit-builder-vars-file-bits-per-channel": "Битови по боен канал на податотеката",
+ "abusefilter-edit-block-options": "Можности за блокирање:",
+ "abusefilter-filter-log": "Скорешни промени во филтери",
+ "abusefilter-history": "Историја на промените во Филтерот за злоупотреби #$1",
+ "abusefilter-history-foruser": "Промени од $1",
+ "abusefilter-history-hidden": "Скриен",
+ "abusefilter-history-enabled": "Овозможен",
+ "abusefilter-history-global": "Глобален",
+ "abusefilter-history-timestamp": "Време",
+ "abusefilter-history-user": "Корисник",
+ "abusefilter-history-public": "Јавен опис на филтерот",
+ "abusefilter-history-flags": "Ознаки",
+ "abusefilter-history-filter": "Правило на филтерот",
+ "abusefilter-history-comments": "Прибелешки",
+ "abusefilter-history-actions": "Дејства",
+ "abusefilter-history-backedit": "Назад кон уредувањето на филтерот",
+ "abusefilter-history-deleted": "Избришано",
+ "abusefilter-history-filterid": "Филтер",
+ "abusefilter-history-select-legend": "Прецизирај го пребарувањето",
+ "abusefilter-history-select-user": "Корисник:",
+ "abusefilter-history-select-filter": "Назнака на филтерот:",
+ "abusefilter-history-select-submit": "Уточни",
+ "abusefilter-history-diff": "Промени",
+ "abusefilter-history-error-hidden": "Побараниот филтер е скриен, и затоа не можете да ја гледате неговата историја.",
+ "abusefilter-exception-unexpectedatend": "Неочекувано „$2“ кај знакот $1.",
+ "abusefilter-exception-expectednotfound": "Се очекуваше $2 кај знакот $1, not found (наместо тоа, пронајдено е $3 $4).",
+ "abusefilter-exception-unrecognisedkeyword": "Нераспознаен клучен збор $2 кај знакот $1.",
+ "abusefilter-exception-unexpectedtoken": "Неочекувана шифра „$3“ (од типот $2) кај знакот $1.",
+ "abusefilter-exception-unclosedstring": "Незатворена низа со почеток кај знакот $1.",
+ "abusefilter-exception-invalidoperator": "Неважечки оператор „$2“ кај знакот $1.",
+ "abusefilter-exception-unrecognisedtoken": "Нераспознаена шифра „$2“ кај знакот $1.",
+ "abusefilter-exception-noparams": "Нема зададено параметри за функцијата „$2“ кај знакот $1.",
+ "abusefilter-exception-dividebyzero": "Недозволен обид за делење на $2 со нула кај знакот $1.",
+ "abusefilter-exception-unrecognisedvar": "Нераспознаена променлива $2 кај знакот $1",
+ "abusefilter-exception-notenoughargs": "Нема доволно аргументи за функцијата $2 повикана кај знакот $1.\nСе {{PLURAL:$3|очекуваше $3 аргумент|очекуваа $3 аргументи}}, а {{PLURAL:$4|добиен е|добиени се}} $4",
+ "abusefilter-exception-regexfailure": "Грешка во регуларниот израз „$3“ кај знакот $1: „$2“",
+ "abusefilter-exception-overridebuiltin": "Недозволено поклопување на вградена променлива „$2“ кај знакот $1.",
+ "abusefilter-exception-outofbounds": "Барање за непостоечка ставка во списокот $2 (големина на списокот = $3) кај знакот $1.",
+ "abusefilter-exception-notlist": "Барање на елемент од стројот за објект кој не е строј кај знакот $1.",
+ "abusefilter-exception-unclosedcomment": "Незатворена прибелешка кај знакот $1.",
+ "abusefilter-action-tag": "Ознака",
+ "abusefilter-action-throttle": "Стесни",
+ "abusefilter-action-warn": "Предупреди",
+ "abusefilter-action-blockautopromote": "Блокирај автоунапредување",
+ "abusefilter-action-block": "Блокирај",
+ "abusefilter-action-degroup": "Отстрани од групите",
+ "abusefilter-action-rangeblock": "Опсежен блок",
+ "abusefilter-action-disallow": "Забрани",
+ "abusefilter-revert-title": "Врати ги сите промени направени од филтерот $1",
+ "abusefilter-revert-intro": "Овој образец служи за отповикување на сите промени направени од филтерот за злоупотреби поради филтерот $1.\nВе молиме, внимавајте како ја користите оваа алатка.",
+ "abusefilter-revert-preview-item": "$1: $2 {{GENDER:$7|направи}} $3 на $4.\nДејства за отповикување: $5 ($6)",
+ "abusefilter-revert-search-legend": "Изберете ги дејствата на филтерот што треба да се отповикаат",
+ "abusefilter-revert-periodstart": "Почеток на периодот:",
+ "abusefilter-revert-periodend": "Крај на периодот:",
+ "abusefilter-revert-search": "Избор на дејства",
+ "abusefilter-revert-filter": "Назнака на филтерот:",
+ "abusefilter-revert-preview-intro": "Подолу се наведени постапките на филтерот за злоупотреби кои сега ќе бидат вратени.\nПроверете ги внимателно, па стиснете на „{{int:abusefilter-revert-confirm}}“ за да го потврдите избраното.",
+ "abusefilter-revert-confirm-legend": "Потврди го повратокот",
+ "abusefilter-revert-confirm": "Потврди",
+ "abusefilter-revert-success": "Ги вративте сите дејства извршени од филтерот за злоупотреби поради [[Special:AbuseFilter/$1|филтерот $2]].",
+ "abusefilter-revert-reason": "Автоматско отповикување на сите постапки на филтерот за злоупотреби поради филтерот $1.\nНаведена причина: $2",
+ "abusefilter-revert-reasonfield": "Причина:",
+ "abusefilter-test": "Испробување на филтер според претходни уредувања",
+ "abusefilter-test-intro": "Оваа страница ви овозможува да проверите филтер внесен во полето подолу според {{PLURAL:$1|последната промена|последните $1 промени}}.\nЗа да вчитате постоечки филтер, внесете го неговиот ID-број под полето за уредување, и стиснете на копчето „{{int:abusefilter-test-load}}“.",
+ "abusefilter-test-legend": "Испробување на филтерот",
+ "abusefilter-test-load-filter": "Вчитај филтер со ID:",
+ "abusefilter-test-submit": "Испробај",
+ "abusefilter-test-load": "Вчитај",
+ "abusefilter-test-user": "Промени од корисникот:",
+ "abusefilter-test-period-start": "Промени направени потоа:",
+ "abusefilter-test-period-end": "Промени напаравени пред тоа:",
+ "abusefilter-test-page": "Направени промени во страницата:",
+ "abusefilter-test-shownegative": "Прикажи промени кои не се совпаѓаат со филтерот",
+ "abusefilter-test-syntaxerr": "Внесениот филтер содржи синтаксна грешка.\nЌе добиете целосно образложение ако стиснете на копчето „{{int:abusefilter-edit-check}}“.",
+ "abusefilter-test-badtitle": "Внесениот наслов на страницата е неважечки. Може да содржи еден или повеќе знаци што не се допуштени во наслови.",
+ "abusefilter-changeslist-examine": "прегледај",
+ "abusefilter-examine": "Разгледување на поединечни промени",
+ "abusefilter-examine-intro": "Оваа страница служи за прегледување на променливите создадени од Филтерот за злоупотреби за поединечна промена, и нивно тестирање со филтри.",
+ "abusefilter-examine-legend": "Одберете промени",
+ "abusefilter-examine-diff": "URL разликата:",
+ "abusefilter-examine-user": "Корисник:",
+ "abusefilter-examine-title": "Наслов на страницата:",
+ "abusefilter-examine-submit": "Пребарај",
+ "abusefilter-examine-vars": "Променливи создадени за оваа промена",
+ "abusefilter-examine-test": "Испробај ја промената со филтерот",
+ "abusefilter-examine-test-button": "Испробај го филтерот",
+ "abusefilter-examine-match": "Оваа промена се совпадна со филтерот.",
+ "abusefilter-examine-nomatch": "Оваа промена не се совпадна со филтерот",
+ "abusefilter-examine-syntaxerror": "Филтерот има неважечка синтакса",
+ "abusefilter-examine-notfound": "Побараната промена не е пронајдена.",
+ "abusefilter-examine-incompatible": "Промената која ја побаравте не е поддржана од Филтерот за злоупотреби",
+ "abusefilter-examine-noresults": "Нема пронајдено ставки за наведените параметри.",
+ "abusefilter-topnav": "'''Содржини на Филтерот за злоупотреби'''",
+ "abusefilter-topnav-home": "Почеток",
+ "abusefilter-topnav-test": "Групно испробување",
+ "abusefilter-topnav-examine": "Разгледување на минати уредувња",
+ "abusefilter-topnav-log": "Дневник на злоупотреби",
+ "abusefilter-topnav-tools": "Алатки за отстранување грешки",
+ "abusefilter-topnav-import": "Увези филтер",
+ "abusefilter-log-name": "Дневник на филтерот за злоупотреба",
+ "abusefilter-log-header": "Во овој дневник е прикажан преглед на промените направени во филтрите.\nЗа сите подробности, погледајте го [[Special:AbuseFilter/history|списокот]] на скорешни промени во филтрите.",
+ "abusefilter-logentry-create": "$1 {{GENDER:$2|го создаде}} $4 ($5)",
+ "abusefilter-logentry-modify": "$1 {{GENDER:$2|го измени}} $4 ($5)",
+ "abusefilter-log-noresults": "Нема исход",
+ "abusefilter-diff-title": "Разлики помеѓу верзиите",
+ "abusefilter-diff-item": "Елемент",
+ "abusefilter-diff-version": "Верзија од $1, {{GENDER:$3|од}} $2",
+ "abusefilter-diff-info": "Основни податоци",
+ "abusefilter-diff-pattern": "Услови на филтерот",
+ "abusefilter-diff-invalid": "Не можам да ги добијам побараните верзии",
+ "abusefilter-diff-backhistory": "Назад кон историјата на филтерот",
+ "abusefilter-diff-prev": "Постара промена",
+ "abusefilter-diff-next": "Понова промена",
+ "abusefilter-import-intro": "Овој посредник служи за увезување на филтри од други викија.\nНа изворното вико, стиснете на „{{int:abusefilter-edit-export}}“ под „{{int:abusefilter-edit-tools}}“ во посредникот за уредување.\nКопирајте ја содржината од полето коешто ќе ви се појави, и залепете ја во ова поле, па стиснете на „{{int:abusefilter-import-submit}}“.",
+ "abusefilter-import-submit": "Увези податоци",
+ "abusefilter-group-default": "По основно",
+ "abusefilter-http-error": "Се појави грешка во HTTP: $1.",
+ "abusefilter-view-private-submit": "Погл. лични податоци",
+ "abusefilter-view-private": "Погл. лични податоци",
+ "abusefilter-view-private-reason": "Причина за пристап до лични податоци:",
+ "abusefilter-log-details-id": "Назнака на дневникот",
+ "abusefilter-invalid-request": "Неважечко барање! Мора да пристапите до личните дневнички податоци преку образецот на [[Special:AbuseLog/$1]] и да наведете причина.",
+ "abusefilter-invalid-request-noid": "Неважечко барање! Мора да пристапите до личните дневнички податоци преку образецот на соодветната страница и да наведете причина.",
+ "log-description-abusefilterprivatedetails": "Во овој дневник се прикажани навратите кога даден корисник пристапил до лични податоци во дневникот на филтерот за злоупотреби.",
+ "abusefilter-noreason": "Предупредување: За да гледате лични податоци од овој дневник, ќе мора да наведете причина.",
+ "abusefilter-log-ip-not-available": "Недостапна",
+ "tag-abusefilter-condition-limit": "достигната условната граница",
+ "tag-abusefilter-condition-limit-description": "Уредувањата или другите настани не можеа да се проверат од сите активни [[Special:AbuseFilter|филтри на злоупотреби]] ([[mw:Extension:AbuseFilter/Conditions|помош]]).",
+ "apihelp-abusefiltercheckmatch-description": "Проверете дали филтер за злоупотреби ќе најде збир променливи. Овој настан на филтерот го заведува корисникот.\n\nСе бара vars, rcid или logid (може да се употреби само едно).",
+ "apihelp-abusefiltercheckmatch-summary": "Проверете дали филтерот пронаоѓа даден збир променливи, дејство заведено од уредник.",
+ "apihelp-abusefiltercheckmatch-extended-description": "Се бара vars, rcid иили logid (може да се употреби само едно од нив).",
+ "apihelp-abusefiltercheckmatch-param-filter": "Целосниот текст што го проверува филтерот.",
+ "apihelp-abusefiltercheckmatch-param-vars": "Низа од променливи шифрирани во JSON што треба да се проверат.",
+ "apihelp-abusefiltercheckmatch-param-rcid": "Назнака на скорешната промена што треба да се провери.",
+ "apihelp-abusefiltercheckmatch-param-logid": "Назнака на запис од дневникот на филтерот што треба да се провери.",
+ "apihelp-abusefiltercheckmatch-example-1": "Провери дали скорешната промена со назнака 15 ќе биде пронајдена од прост филтер.",
+ "apihelp-abusefilterchecksyntax-description": "Провери ја синтаксата на филтер за злоупотреби.",
+ "apihelp-abusefilterchecksyntax-summary": "Провери ја синтаксата на даден филтер за слоупотреби.",
+ "apihelp-abusefilterchecksyntax-param-filter": "Целосниот текст чија синтакса ја проверува филтерот.",
+ "apihelp-abusefilterchecksyntax-example-1": "Провери синтакса на важечки филтер",
+ "apihelp-abusefilterchecksyntax-example-2": "Провери синтакса на неважечки филтер",
+ "apihelp-abusefilterevalexpression-description": "Оценува израз во Филтерот за злоупотреби.",
+ "apihelp-abusefilterevalexpression-summary": "Оценува израз во Филтерот за злоупотреби.",
+ "apihelp-abusefilterevalexpression-param-expression": "Изразот што треба да се оцени.",
+ "apihelp-abusefilterevalexpression-example-1": "Оцени прост израз",
+ "apihelp-abusefilterunblockautopromote-description": "Отстранува блок на автоунапредување на даден корисник, добиен поради последица од филтер за злоупотреби.",
+ "apihelp-abusefilterunblockautopromote-summary": "Отстранува блок на автоунапредување на даден корисник, добиен поради последица од филтер за злоупотреби.",
+ "apihelp-abusefilterunblockautopromote-param-user": "Корисничкото име што сакате да го одблокирате.",
+ "apihelp-abusefilterunblockautopromote-example-1": "Отстрани го блокот од автоунапредувањето на [[User:Example]]",
+ "apihelp-query+abusefilters-description": "Прикажи подробности за филтрите за злоупотреба.",
+ "apihelp-query+abusefilters-summary": "Прикажи подробности за филтрите за злоупотреба.",
+ "apihelp-query+abusefilters-param-startid": "Назнака на филтерот од кајшто ќе почне набројувањето.",
+ "apihelp-query+abusefilters-param-endid": "Назнака на филтерот на кајшто ќе запре набројувањето.",
+ "apihelp-query+abusefilters-param-show": "Прикажи ги само филтрите што ги исполнуваат овие критериуми.",
+ "apihelp-query+abusefilters-param-limit": "Допуштениот број на филтри за наведување во списокот.",
+ "apihelp-query+abusefilters-param-prop": "Кои својства да се дадат.",
+ "apihelp-query+abusefilters-example-1": "Испиши ги вклучените јавни филтри",
+ "apihelp-query+abusefilters-example-2": "Покажувај извесни подробности за филтри",
+ "apihelp-query+abuselog-description": "Прикажи ги настаните фатени од еден од филтрите.",
+ "apihelp-query+abuselog-summary": "Прикажи ги настаните фатени од еден од филтрите.",
+ "apihelp-query+abuselog-param-start": "Од кој датум и време да почне набројувањето.",
+ "apihelp-query+abuselog-param-end": "На кој датум и време да запре набројувањето.",
+ "apihelp-query+abuselog-param-user": "Прикажи само ставки за даден корисник или IP-адреса.",
+ "apihelp-query+abuselog-param-title": "Прикажи само ставки што се однесуваат на дадена страница.",
+ "apihelp-query+abuselog-param-filter": "Прикажи само ставки за настани фатени од дадена филтерска назнака.",
+ "apihelp-query+abuselog-param-limit": "Највеќе ставки во списоците.",
+ "apihelp-query+abuselog-param-prop": "Кои својства да се дадат.",
+ "apihelp-query+abuselog-param-wiki": "Од кое вики да се прикажуваат погодоци.",
+ "apihelp-query+abuselog-example-1": "Прикажи ги скорешните дневнички ставки",
+ "apihelp-query+abuselog-example-2": "Прикажи ги скорешните дневнички ставки за [[API|извршникот]] (API)",
+ "apierror-abusefilter-canttest": "Немате дозвола да испробувате филтри на злоупотреба.",
+ "apierror-abusefilter-cantcheck": "Немате дозвола да проверувате синтакса на филтри на злоупотреба.",
+ "apierror-abusefilter-nosuchlogid": "Нема запис во дневникот на злоупотреби со назнака $1.",
+ "apierror-abusefilter-badsyntax": "Филтерот има неважечка синтакса."
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/ml.json b/www/wiki/extensions/AbuseFilter/i18n/ml.json
new file mode 100644
index 00000000..f29c9317
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/ml.json
@@ -0,0 +1,397 @@
+{
+ "@metadata": {
+ "authors": [
+ "Anoopan",
+ "Praveenp",
+ "Matma Rex"
+ ]
+ },
+ "abusefilter-desc": "തിരുത്തലുകളിൽ സ്വയം പ്രതിരോധപ്രവർത്തനങ്ങൾ നടപ്പിലാക്കുന്നു",
+ "abusefilter": "ദുരുപയോഗ അരിപ്പയുടെ ക്രമീകരണങ്ങൾ",
+ "abuselog": "ദുരുപയോഗരേഖ",
+ "abusefilter-intro": "ദുരുപയോഗ അരിപ്പയുടെ കൈകാര്യത്തിനുള്ള സമ്പർക്കമുഖത്തിലേയ്ക്ക് സ്വാഗതം.\nഎല്ലാവിധത്തിലുള്ള പ്രവർത്തനങ്ങളിലേയും ദോഷകരമായ നടപടികളെ സ്വയംപ്രതിരോധിക്കുന്ന സോഫ്റ്റ്‌വേർ സൗകര്യമാണ് ദുരുപയോഗ അരിപ്പ.\nഈ സമ്പർക്കമുഖത്തിൽ നിർവചിക്കപ്പെട്ടിരിക്കുന്ന അരിപ്പകളുടെ പട്ടികൾ കാണാനും മാറ്റം വരുത്താനും കഴിയുന്നതാണ്.",
+ "abusefilter-mustbeeditor": "സുരക്ഷാ കാരണങ്ങളാൽ, ദുരുപയോഗ അരിപ്പ തിരുത്താൻ അവകാശമുള്ള ഉപയോക്താക്കൾക്ക് മാത്രമേ ഈ സമ്പർക്കമുഖം ഉപയോഗിക്കാൻ കഴിയൂ.",
+ "abusefilter-warning": "'''മുന്നറിയിപ്പ്''': ഈ പ്രവൃത്തി ദോഷകരമെന്ന് സ്വയം തിരിച്ചറിഞ്ഞിട്ടുള്ളതാണ്.\nസൃഷ്ടിപരമല്ലാത്ത തിരുത്തലുകൾ അതിവേഗം മുൻപ്രാപനം ചെയ്യുന്നതായിരിക്കും, ദുരുദ്ദേശത്തോടെയുള്ള അല്ലെങ്കിൽ ആവർത്തിച്ചുണ്ടാകുന്ന സൃഷ്ടിപരമല്ലാത്ത തിരുത്തലുകൾ താങ്കളുടെ അംഗത്വത്തെയോ ഐ.പി. വിലാസത്തേയോ തടയുന്നതിൽ എത്തിയേക്കാം.\nതാങ്കൾ താങ്കളുടെ തിരുത്തൽ സൃഷ്ടിപരമെന്നു വിശ്വസിക്കുന്നുണ്ടെങ്കിൽ സ്ഥിരീകരിക്കാനായി ദയവായി വീണ്ടും സമർപ്പിക്കുക.\nതാങ്കളുടെ പ്രവൃത്തിയിൽ ബാധകമാകുന്ന ദുരുപയോഗ നിയമത്തിന്റെ ലഘുവിവരണം: $1",
+ "abusefilter-disallowed": "ഈ പ്രവൃത്തി ദോഷകരമെന്ന് സ്വയം തിരിച്ചറിഞ്ഞിട്ടുള്ളതാണ്, അതിനാലത് അനുവദിക്കാനാകില്ല. താങ്കളുടെ തിരുത്ത് സൃഷ്ടിപരമാണെന്ന് താങ്കൾ വിശ്വസിക്കുന്നുവെങ്കിൽ, ദയവായി കാര്യനിർവാഹകരിലൊരാളെ ബന്ധപ്പെടുക, താങ്കൾ എന്താണ് ചെയ്യാൻ ശ്രമിച്ചതെന്നറിയിക്കുക.\nതാങ്കളുടെ പ്രവൃത്തിയുമായി സാദൃശ്യമുള്ള ദുരുപയോഗ നിയമത്തിന്റെ ലഘുവിവരണം: $1",
+ "abusefilter-blocked-display": "ഈ പ്രവൃത്തി ദോഷകരമെന്നു സ്വയം തിരിച്ചറിഞ്ഞിട്ടുള്ളതാണ്, ഇതു ചെയ്യുന്നതിൽ നിന്നും താങ്കളെ തടയുന്നതാണ്.\nകൂടുതലായി, {{SITENAME}} സംരക്ഷിക്കുന്നതിനായി താങ്കളുടെ അംഗത്വവും ബന്ധപ്പെട്ട ഐ.പി. വിലാസങ്ങളും തിരുത്തുന്നതിൽ നിന്നും തടയുന്നതാണ്.\nഇത് പിഴവുമൂലമുണ്ടായതെങ്കിൽ ദയവായി ഒരു കാര്യനിർവാഹകനെ ബന്ധപ്പെടുക.\nതാങ്കളുടെ പ്രവൃത്തിയുമായി ഒത്തുപോകുന്ന ദുരുപയോഗനിയമത്തിന്റെ ലഘുവിവരണം കാണുക: $1",
+ "abusefilter-degrouped": "ഈ പ്രവൃത്തി ദോഷകരമെന്ന് സ്വയം തിരിച്ചറിഞ്ഞിട്ടുള്ളതാണ്.\nതത്ഫലമായത് അനുവദിക്കാനാകില്ല, ഇക്കാരണം കൊണ്ട് താങ്കളുടെ അംഗത്വം സംശയത്തിന്റെ നിഴലിലാവുകയും, എല്ലാ അവകാശങ്ങളും നീക്കുകയും ചെയ്യുന്നതാണ്.\nഇതെന്തെങ്കിലും പിഴവുമൂലമുണ്ടായതാണെന്നു താങ്കൾ കരുതുന്നുവെങ്കിൽ ഈ പ്രവൃത്തിയ്ക്കുള്ള വിശദീകരണവുമായി ദയവായി ഒരു ബ്യൂറോക്രാറ്റിനെ സമീപിക്കുക, താങ്കളുടെ അവകാശങ്ങൾ പുനഃസ്ഥാപിക്കപ്പെട്ടേയ്ക്കാം.\nതാങ്കളുടെ പ്രവൃത്തിയുമായി സാദൃശ്യമുള്ള ദുരുപയോഗ നിയമത്തിന്റെ ലഘുവിവരണം: $1",
+ "abusefilter-autopromote-blocked": "ഈ പ്രവൃത്തി ദോഷകരമെന്ന് സ്വയം തിരിച്ചറിഞ്ഞിട്ടുള്ളതാണ്, അതിനാലത് അനുവദിക്കാനാകില്ല, കൂടുതലായി സുരക്ഷാ മാനദണ്ഡമെന്ന നിലയിൽ, മതിപ്പുനേടിയ അംഗത്വങ്ങൾക്ക് സമ്പ്രദായികമായി ലഭിച്ചു പോരുന്ന ചില അവകാശങ്ങൾ താങ്കളുടെ അംഗത്വത്തിൽ നിന്നും താത്കാലികമായി നീക്കം ചെയ്തിരിക്കുന്നു.\nതാങ്കളുടെ പ്രവൃത്തിയുമായി സാദൃശ്യമുള്ള ദുരുപയോഗ നിയമത്തിന്റെ ലഘുവിവരണം: $1",
+ "abusefilter-blocker": "ദുരുപയോഗ അരിപ്പ",
+ "abusefilter-blockreason": "ദുരുപയോഗ അരിപ്പ ഉപയോഗിച്ച് സ്വതേ തടയപ്പെട്ടിരിക്കുന്നു.\nഒത്തുപോവുന്ന നിയമത്തിന്റെ വിവരണം: $1",
+ "abusefilter-degroupreason": "ദുരുപയോഗ അരിപ്പ അവകാശങ്ങൾ സ്വതേ അരിഞ്ഞുമാറ്റിയിരിക്കുന്നു.\nനയ വിവരണം: $1",
+ "abusefilter-accountreserved": "ഈ അംഗത്വനാമം ദുരുപയോഗ അരിപ്പയുടെ ഉപയോഗത്തിനായി മാറ്റിവെച്ചിരിക്കുകയാണ്.",
+ "right-abusefilter-modify": "ദുരുപയോഗ അരിപ്പകൾ പുതുക്കുക",
+ "right-abusefilter-view": "ദുരുപയോഗ അരിപ്പകൾ കാണുക",
+ "right-abusefilter-log": "ദുരുപയോഗരേഖ കാണുക",
+ "right-abusefilter-log-detail": "ദുരുപയോഗരേഖയിലെ വിവരങ്ങൾ വിശദമായി കാണുക",
+ "right-abusefilter-private": "ദുരുപയോഗരേഖയിലെ സ്വകാര്യവിവരങ്ങൾ കാണുക",
+ "right-abusefilter-modify-restricted": "പരിമിതപ്പെടുത്തിയിരിക്കുന്ന പ്രവൃത്തികൾക്കായി ദുരുപയോഗ അരിപ്പ പുതുക്കുക",
+ "right-abusefilter-revert": "തന്നിരിക്കുന്ന ദുരുപയോഗ അരിപ്പ ചെയ്ത എല്ലാ മാറ്റങ്ങളും തിരസ്കരിക്കുക",
+ "right-abusefilter-view-private": "സ്വകാര്യമെന്ന് അടയാളപ്പെടുത്തിയ ദുരുപയോഗ അരിപ്പകൾ കാണുക",
+ "right-abusefilter-log-private": "ദുരുപയോഗ അരിപ്പകൾ സ്വകാര്യമെന്ന് അടയാളപ്പെടുത്തിയ രേഖകൾ കാണുക",
+ "right-abusefilter-hide-log": "ദുരുപയോഗരേഖയിലെ വിവരങ്ങൾ മറയ്ക്കുക",
+ "right-abusefilter-hidden-log": "ദുരുപയോഗരേഖയിലെ മറയ്ക്കപ്പെട്ട വിവരങ്ങൾ കാണുക",
+ "right-abusefilter-modify-global": "ആഗോള ദുരുപയോഗ അരിപ്പകൾ നിർമ്മിക്കുക, പുതുക്കുക",
+ "action-abusefilter-modify": "ദുരുപയോഗ അരിപ്പകൾ പുതുക്കുക",
+ "action-abusefilter-view": "ദുരുപയോഗ അരിപ്പകൾ കാണുക",
+ "action-abusefilter-log": "ദുരുപയോഗരേഖ കാണുക",
+ "action-abusefilter-log-detail": "ദുരുപയോഗരേഖയിലെ ഉൾപ്പെടുത്തലുകളുടെ വിശദവിവരങ്ങൾ കാണുക",
+ "action-abusefilter-private": "ദുരുപയോഗരേഖയിലെ സ്വകാര്യവിവരങ്ങൾ കാണുക",
+ "action-abusefilter-modify-restricted": "പരിമിതപ്പെടുത്തിയിരിക്കുന്ന പ്രവൃത്തികൾക്കായി ദുരുപയോഗ അരിപ്പ പുതുക്കുക",
+ "action-abusefilter-revert": "തന്നിരിക്കുന്ന ദുരുപയോഗ അരിപ്പ ചെയ്ത എല്ലാ മാറ്റങ്ങളും തിരസ്കരിക്കുക",
+ "action-abusefilter-view-private": "സ്വകാര്യമെന്ന അടയാളപ്പെടുത്തിയ ദുരുപയോഗ അരിപ്പകൾ കാണുക",
+ "abusefilter-log": "ദുരുപയോഗ അരിപ്പയുടെ പ്രവർത്തനരേഖ",
+ "abusefilter-log-summary": "അരിപ്പകൾ കണ്ടെത്തിയ എല്ലാ പ്രവൃത്തിയുടേയും പട്ടിക ഈ രേഖയിൽ കാണാം.",
+ "abusefilter-log-search": "ദുരുപയോഗരേഖയിൽ തിരയുക",
+ "abusefilter-log-search-user": "ഉപയോക്താവ്:",
+ "abusefilter-log-search-filter": "അരിപ്പയുടെ ഐ.ഡി.കൾ (പൈപ്പുകൾ ഉപയോഗിച്ച് വേർതിരിക്കുക):",
+ "abusefilter-log-search-title": "തലക്കെട്ട്:",
+ "abusefilter-log-search-wiki": "വിക്കി:",
+ "abusefilter-log-search-submit": "തിരയുക",
+ "abusefilter-log-entry": "$1: $4 എന്ന താളിൽ $2 ചെയ്ത \"$3\" എന്ന പ്രവൃത്തി ഒരു ദുരുപയോഗ അരിപ്പയെ ഉണർത്തിയിരിക്കുന്നു.\nഎടുത്ത നടപടികൾ: $5;\nഅരിപ്പയുടെ വിവരണം: $6",
+ "abusefilter-log-entry-withdiff": "$4 എന്ന താളിൽ $1-നു $2 ചെയ്ത ''$3'' എന്ന പ്രവൃത്തി ഒരു ദുരുപയോഗ അരിപ്പയെ ഉണർത്തിയിരിക്കുന്നു.\nഎടുത്ത നടപടികൾ: $5;\nഅരിപ്പയുടെ വിവരണം: $6 ($7)",
+ "abusefilter-log-detailedentry-meta": "$1: $5 എന്ന താളിൽ $2 ചെയ്ത \"$4\" എന്ന പ്രവൃത്തി $3-നെ ഉണർത്തിയിരിക്കുന്നു.\nഎടുത്ത നടപടി: $6;\nഅരിപ്പയുടെ വിവരണം: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "ആഗോള അരിപ്പ $1",
+ "abusefilter-log-detailedentry-local": "അരിപ്പ $1",
+ "abusefilter-log-detailslink": "വിവരണങ്ങൾ",
+ "abusefilter-log-diff": "വ്യത്യാസം",
+ "abusefilter-log-hidelink": "ദൃശ്യത ക്രമീകരിക്കുക",
+ "abusefilter-log-details-legend": "രേഖയിൽ ഉൾപ്പെട്ട $1 ഇനത്തിന്റെ വിവരങ്ങൾ",
+ "abusefilter-log-details-var": "ചരം",
+ "abusefilter-log-details-val": "മൂല്യം",
+ "abusefilter-log-details-vars": "പ്രവർത്തന ചരങ്ങൾ",
+ "abusefilter-log-details-private": "സ്വകാര്യ വിവരം",
+ "abusefilter-log-details-ip": "ഉത്ഭവിക്കുന്ന ഐ.പി. വിലാസം",
+ "abusefilter-log-noactions": "ഒന്നുമില്ല",
+ "abusefilter-log-details-diff": "തിരുത്തലിൽ വരുത്തിയ മാറ്റങ്ങൾ",
+ "abusefilter-log-linkoncontribs": "ദുരുപയോഗരേഖ",
+ "abusefilter-log-linkoncontribs-text": "ഈ ഉപയോക്താവിന്റെ ദുരുപയോഗരേഖ",
+ "abusefilter-log-hidden": "(വിവരം മറയ്ക്കപ്പെട്ടിരിക്കുന്നു)",
+ "abusefilter-log-hidden-implicit": "(നാൾപ്പതിപ്പ് മായ്ക്കപ്പെട്ടിരിക്കുന്നതിനാൽ മറച്ചിരിക്കുന്നു)",
+ "abusefilter-log-cannot-see-details": "ഈ ഉൾപ്പെടുത്തലിന്റെ വിശദാംശങ്ങൾ കാണാനുള്ള അനുമതി താങ്കൾക്കില്ല.",
+ "abusefilter-log-details-hidden": "ഈ വിവരം പൊതുജനദൃഷ്ടിയിൽ നിന്നും മറയ്ക്കപ്പെട്ടിരിക്കുന്നതിനാൽ, കൂടുതൽ വിവരങ്ങൾ കാണാനാകില്ല.",
+ "abusefilter-log-private-not-included": "താങ്കൾ നൽകിയവയിൽ ഒന്നോ അതിലധികമോ അരിപ്പകളുടെ ഐ.ഡി.കൾ സ്വകാര്യമാണ്. സ്വകാര്യ അരിപ്പകളുടെ വിശദാംശങ്ങൾ കാണാൻ താങ്കൾക്ക് അനുവാദമില്ലാത്തതിനാൽ, ഈ അരിപ്പകൾ തിരയപ്പെടുന്നതല്ല.",
+ "abusefilter-log-hide-legend": "രേഖയിലെ ഉൾപ്പെടുത്തൽ മറയ്ക്കുക",
+ "abusefilter-log-hide-id": "രേഖയിൽ ഉൾപ്പെടുത്തിയതിന്റെ ഐ.ഡി.:",
+ "abusefilter-log-hide-hidden": "പൊതുജനദൃഷ്ടിയിൽ നിന്ന് ഈ വിവരം മറയ്ക്കുക",
+ "abusefilter-log-hide-reason": "കാരണം:",
+ "abusefilter-log-hide-forbidden": "ദുരുപയോഗരേഖയിലെ വിവരങ്ങൾ മറയ്ക്കാനുള്ള അനുവാദം താങ്കൾക്കില്ല.",
+ "abusefilter-logentry-suppress": "മറയ്ക്കുക [[$1]]",
+ "abusefilter-logentry-unsuppress": "മറ നീക്കുക [[$1]]",
+ "logentry-abusefilter-hit": "$1 നടത്തിയ പ്രവൃത്തി $4-നെ ഉണർത്തി, $3-യിൽ \"$5\" എന്ന നടപടി എടുക്കുന്നു. എടുത്ത നടപടി: $6 ($7)",
+ "abusefilter-management": "ദുരുപയോഗ അരിപ്പ കൈകാര്യം",
+ "abusefilter-list": "എല്ലാ അരിപ്പകളും",
+ "abusefilter-list-id": "അരിപ്പയുടെ ഐ.ഡി.",
+ "abusefilter-list-status": "സ്ഥിതി",
+ "abusefilter-list-public": "പൊതു വിവരണം",
+ "abusefilter-list-consequences": "പരിണതഫലങ്ങൾ",
+ "abusefilter-list-visibility": "ദൃശ്യത",
+ "abusefilter-list-hitcount": "കുടുങ്ങിയ എണ്ണം",
+ "abusefilter-list-edit": "തിരുത്തുക",
+ "abusefilter-list-details": "വിശദാംശങ്ങൾ",
+ "abusefilter-list-limit": "ഓരോ താളിലുമുള്ള എണ്ണം:",
+ "abusefilter-list-lastmodified": "ഒടുവിൽ മാറ്റം വരുത്തിയത്",
+ "abusefilter-list-group": "അരിച്ചെടുക്കൽ ഗണം",
+ "abusefilter-hidden": "സ്വകാര്യം",
+ "abusefilter-unhidden": "സാർവ്വജനീനം",
+ "abusefilter-enabled": "സജ്ജമാക്കിയിരിക്കുന്നു",
+ "abusefilter-deleted": "മായ്ച്ചിരിക്കുന്നു",
+ "abusefilter-disabled": "നിർജ്ജീവമാക്കപ്പെട്ടിരിക്കുന്നു",
+ "abusefilter-hitcount": "{{PLURAL:$1|ഒരു കുടുങ്ങൽ|$1 കുടുങ്ങൽ}}",
+ "abusefilter-new": "പുതിയൊരു അരിപ്പ സൃഷ്ടിക്കുക",
+ "abusefilter-return": "അരിപ്പയുടെ കൈകാര്യം താളിലേയ്ക്ക് മടങ്ങുക",
+ "abusefilter-status-global": "ആഗോളം",
+ "abusefilter-list-options": "ഐച്ഛികങ്ങൾ",
+ "abusefilter-list-options-deleted": "മായ്ക്കപ്പെട്ട അരിപ്പകൾ:",
+ "abusefilter-list-options-deleted-only": "മായ്ക്കപ്പെട്ട അരിപ്പകൾ മാത്രം പ്രദർശിപ്പിക്കുക",
+ "abusefilter-list-options-deleted-hide": "മായ്ക്കപ്പെട്ട അരിപ്പകൾ മറയ്ക്കുക",
+ "abusefilter-list-options-deleted-show": "മായ്ക്കപ്പെട്ട അരിപ്പകൾ ഉൾപ്പെടുത്തുക",
+ "abusefilter-list-options-scope": "അരിപ്പകൾ പ്രദർശിപ്പിക്കുക:",
+ "abusefilter-list-options-scope-local": "പ്രാദേശിക നയങ്ങൾ മാത്രം",
+ "abusefilter-list-options-scope-global": "ആഗോളനയങ്ങൾ മാത്രം",
+ "abusefilter-list-options-scope-all": "പ്രാദേശിക ആഗോള നയങ്ങൾ",
+ "abusefilter-list-options-disabled": "നിർജ്ജീവമാക്കപ്പെട്ട അരിപ്പകൾ:",
+ "abusefilter-list-options-hidedisabled": "നിർജ്ജീവമാക്കപ്പെട്ട അരിപ്പകൾ മറയ്ക്കുക",
+ "abusefilter-list-options-submit": "പുതുക്കുക",
+ "abusefilter-tools-text": "ദുരുപയോഗ അരിപ്പകൾ സൃഷ്ടിക്കാനും തെറ്റുതിരുത്താനും ഉപയോഗിക്കാവുന്ന ചില ഉപകരണങ്ങൾ ഇവിടെ നൽകിയിരിക്കുന്നു.",
+ "abusefilter-tools-expr": "എക്സ്‌പ്രെഷൻ പരിശോധനോപാധി",
+ "abusefilter-tools-submitexpr": "മൂല്യനിർണ്ണയം നടത്തുക",
+ "abusefilter-tools-reautoconfirm": "സ്വയം സ്ഥിരീകൃത സ്ഥിതി പുനഃസ്ഥാപിക്കുക",
+ "abusefilter-tools-reautoconfirm-user": "ഉപയോക്താവ്:",
+ "abusefilter-tools-reautoconfirm-submit": "വീണ്ടും സ്വയം സ്ഥിരീകരിക്കുക",
+ "abusefilter-reautoconfirm-none": "ആ {{GENDER:$1|ഉപയോക്താവിന്റെ}} സ്വയംസ്ഥിരീകൃത സ്ഥിതി എടുത്തുകളഞ്ഞിട്ടില്ല.",
+ "abusefilter-reautoconfirm-notallowed": "സ്വയം സ്ഥിരീകൃത സ്ഥിതി പുനഃസ്ഥാപിക്കാൻ താങ്കൾക്ക് അനുമതിയില്ല.",
+ "abusefilter-reautoconfirm-done": "അംഗത്വത്തിന്റെ സ്വയം സ്ഥിരീകൃത സ്ഥിതി പുനഃസ്ഥാപിച്ചിരിക്കുന്നു",
+ "abusefilter-status": "ഒടുവിലത്തെ {{PLURAL:$1|പ്രവൃത്തിയിൽ|$1 പ്രവൃത്തികളിൽ}} $2 ($3%) എണ്ണം ഉപാധികളുടെ പരിധിയായ $4 എത്തിയിരിക്കുന്നു, $5 ($6%) എണ്ണം ഇപ്പോൾ സജ്ജമായിട്ടുള്ള അരിപ്പയിൽ ബാധകമാണ്.",
+ "abusefilter-edit": "ദുരുപയോഗ അരിപ്പ തിരുത്തുന്നു",
+ "abusefilter-edit-subtitle": "അരിപ്പ $1 തിരുത്തുന്നു",
+ "abusefilter-edit-subtitle-new": "അരിപ്പ സൃഷ്ടിക്കുന്നു",
+ "abusefilter-edit-oldwarning": "<strong>താങ്കൾ ഈ അരിപ്പയുടെ പഴയൊരു പതിപ്പാണ് തിരുത്തുന്നത്.\nഉദ്ധരിച്ചിരിക്കുന്ന സ്ഥിതിവിവരമാകട്ടെ അരിപ്പയുടെ ഏറ്റവും പുതിയതും.\nതാങ്കളുടെ മാറ്റങ്ങൾ സേവ് ചെയ്യുകയാണെങ്കിൽ, താങ്കൾ തിരുത്തിയ നാൾപ്പതിപ്പ് മുതലുള്ള എല്ലാ മാറ്റങ്ങളും നഷ്ടപ്പെടുന്നതാണ്.</strong> &bull;\n[[Special:AbuseFilter/history/$2|ഈ അരിപ്പയുടെ നാൾവഴിയിലേയ്ക്ക് മടങ്ങുക]].",
+ "abusefilter-edit-status-label": "സ്ഥിതിവിവരക്കണക്കുകൾ:",
+ "abusefilter-edit-status": "ഒടുവിലത്തെ {{PLURAL:$1|പ്രവൃത്തിയിൽ|$1 പ്രവൃത്തികളിൽ}}, അരിപ്പ $2 എണ്ണവുമായി ഒത്തുപോയി ($3%).",
+ "abusefilter-edit-status-profile": "ഒടുവിലത്തെ {{PLURAL:$1|പ്രവൃത്തിയിൽ|$1 പ്രവൃത്തികളിൽ}}, അരിപ്പ $2 എണ്ണവുമായി ഒത്തുപോയി ($3%).\nശരാശരി, പ്രവർത്തന സമയം $4 മില്ലിസെക്കന്റ് ആണ്, ഉപാധികളിൽ {{PLURAL:$5|ഒരുപാധി|$5 ഉപാധികൾ}} ഉപയോഗിച്ചിരിക്കുന്നു.",
+ "abusefilter-edit-new": "പുതിയ അരിപ്പ",
+ "abusefilter-edit-save": "അരിപ്പ സേവ് ചെയ്യുക",
+ "abusefilter-edit-id": "അരിപ്പയുടെ ഐ.ഡി.:",
+ "abusefilter-edit-description": "വിവരണം:\n:''(പൊതുജന ലഭ്യം)''",
+ "abusefilter-edit-group": "അരിച്ചെടുക്കൽ ഗണം:",
+ "abusefilter-edit-flags": "പതാകകൾ:",
+ "abusefilter-edit-enabled": "ഈ അരിപ്പ സജ്ജമാക്കുക",
+ "abusefilter-edit-deleted": "മായ്ച്ചതായി അടയാളപ്പെടുത്തുക",
+ "abusefilter-edit-hidden": "പൊതുജനദൃഷ്ടിയിൽ നിന്നും അരിപ്പയുടെ വിവരങ്ങൾ മറയ്ക്കുക",
+ "abusefilter-edit-global": "ആഗോള അരിപ്പ",
+ "abusefilter-edit-rules": "ഉപാധികൾ:",
+ "abusefilter-edit-notes": "കുറിപ്പുകൾ:",
+ "abusefilter-edit-lastmod": "അരിപ്പ അവസാനം പുതുക്കിയത്:",
+ "abusefilter-edit-lastmod-text": "$1 ചെയ്തത് $2",
+ "abusefilter-edit-hitcount": "കുടുങ്ങിയവ അരിച്ചെടുക്കുക:",
+ "abusefilter-edit-consequences": "ചേർച്ച കണ്ടാൽ കൈക്കൊള്ളേണ്ട നടപടികൾ",
+ "abusefilter-edit-action-warn": "ഉപയോക്താവിന് മുന്നറിയിപ്പ് കൊടുത്ത ശേഷം ഈ പ്രവൃത്തികൾ തുടങ്ങുക",
+ "abusefilter-edit-action-disallow": "സംശയകരമായ പ്രവൃത്തി ചെയ്യുന്നതിൽ നിന്നും ഉപയോക്താവിനെ തടയുക",
+ "abusefilter-edit-action-blockautopromote": "ഉപയോക്താവിന്റെ സ്വയംസ്ഥിരീകൃത സ്ഥിതി പിൻവലിക്കുക",
+ "abusefilter-edit-action-degroup": "എല്ലാ പ്രത്യേക പദവികളുള്ള സംഘങ്ങളിൽ നിന്നും ഉപയോക്താവിനെ നീക്കുക",
+ "abusefilter-edit-action-block": "ഉപയോക്താവിനെ ഒപ്പം/അല്ലെങ്കിൽ ഐ.പി. വിലാസത്തെ തിരുത്തുന്നതിൽ നിന്നും തടയുക",
+ "abusefilter-edit-action-throttle": "ഉപയോക്താവ് പരിധി കടന്നാൽ മാത്രം പ്രവൃത്തികൾ തുടങ്ങുക",
+ "abusefilter-edit-action-rangeblock": "ഉപയോക്താവ് കടന്നുവരുന്ന /16 പരിധി തടയുക",
+ "abusefilter-edit-action-tag": "കൂടുതൽ സംശോധനത്തിനായി തിരുത്ത് റ്റാഗ് ചെയ്യുക",
+ "abusefilter-edit-throttle-count": "അനുവദിക്കപ്പെട്ടിരിക്കുന്ന പ്രവർത്തനങ്ങളുടെ എണ്ണം:",
+ "abusefilter-edit-throttle-period": "കാലയളവ്:",
+ "abusefilter-edit-throttle-seconds": "{{PLURAL:$1|ഒരു സെക്കന്റ്|$1 സെക്കന്റുകൾ}}",
+ "abusefilter-edit-throttle-groups": "സംഘ ത്വരകം:\n:(അർദ്ധവിരാമമുപയോഗിച്ച് യോജിപ്പിച്ച, ഒരു വരിയിൽ ഒരെണ്ണം വീതം)",
+ "abusefilter-edit-warn-message": "മുന്നറിയിപ്പിനായി ഉപയോഗിക്കുന്ന വ്യവസ്ഥാ സന്ദേശം:",
+ "abusefilter-edit-warn-other": "മറ്റു സന്ദേശം",
+ "abusefilter-edit-warn-other-label": "മറ്റ് സന്ദേശങ്ങളുടെ താളിന്റെ പേര്:\n:''(പൂർവ്വപദമായ മീഡിയവിക്കി ഇല്ലാതെ)''",
+ "abusefilter-edit-warn-actions": "പ്രവർത്തനങ്ങൾ:",
+ "abusefilter-edit-warn-preview": "തിരഞ്ഞെടുത്ത സന്ദേശത്തിന്റെ പ്രിവ്യൂ കാണുക",
+ "abusefilter-edit-warn-edit": "തിരഞ്ഞെടുത്ത സന്ദേശം സൃഷ്ടിക്കുക/തിരുത്തുക",
+ "abusefilter-edit-tag-tag": "ബാധകമാക്കേണ്ട [[Special:Tags|റ്റാഗുകൾ]] (ഒരു വരിയിൽ ഒന്നു വീതം):",
+ "abusefilter-edit-denied": "താങ്കൾക്ക് ഈ അരിപ്പയുടെ വിവരങ്ങൾ കാണാൻ കഴിയണമെന്നില്ല, അത് പൊതുദൃഷ്ടിയിൽ നിന്നും മറയ്ക്കപ്പെട്ടതാണ്.",
+ "abusefilter-edit-main": "അരിപ്പയ്ക്കായുള്ള ചരങ്ങൾ",
+ "abusefilter-edit-done-subtitle": "അരിപ്പ തിരുത്തി",
+ "abusefilter-edit-done": "[[Special:AbuseFilter/$1|അരിപ്പ $3]]-ൽ [[Special:AbuseFilter/history/$1/diff/prev/$2|താങ്കൾ വരുത്തിയ മാറ്റങ്ങൾ]] വിജയകരമായി സേവ് ചെയ്തിരിക്കുന്നു.",
+ "abusefilter-edit-badsyntax": "താങ്കൾ നൽകിയ അരിപ്പയിൽ എഴുതിനൽകിയതിൽ പിഴവുണ്ട്.\nപാഴ്സറിന്റെ ഔട്ട്പുട്ട് ഇപ്രകാരമായിരുന്നു: <pre>$1</pre>",
+ "abusefilter-edit-restricted": "താങ്കൾക്ക് ഈ അരിപ്പയിൽ മാറ്റം വരുത്താൻ കഴിയില്ല, കാരണം ഇതിൽ ഒന്നോ അതിലധികമോ പരിമിതപ്പെടുത്തിയ പ്രവൃത്തികളുണ്ട്.\nദയവായി അനുമതിയുള്ള ഉപയോക്താവിനെ സമീപിച്ച് പരിമിതപ്പെടുത്തിയ മാറ്റങ്ങൾ താങ്കൾക്കായി ചെയ്യാൻ ദയവായി ആവശ്യപ്പെടുക.",
+ "abusefilter-edit-viewhistory": "ഈ അരിപ്പയുടെ നാൾവഴി കാണുക",
+ "abusefilter-edit-history": "നാൾവഴി:",
+ "abusefilter-edit-check": "എഴുത്തുരീതി പരിശോധിക്കുക",
+ "abusefilter-edit-badfilter": "താങ്കൾ വ്യക്തമാക്കിയ അരിപ്പ നിലവിലില്ല",
+ "abusefilter-edit-revert": "ഈ അരിപ്പ ചെയ്ത പ്രവൃത്തികൾ മുൻപ്രാപനം ചെയ്യുക",
+ "abusefilter-edit-tools": "ഉപകരണങ്ങൾ:",
+ "abusefilter-edit-test-link": "സമീപകാല തിരുത്തലുകളിൽ ഈ അരിപ്പ പരീക്ഷിക്കുക",
+ "abusefilter-edit-export": "ഈ അരിപ്പ മറ്റൊരു വിക്കിയിലേയ്ക്ക് കയറ്റുമതി ചെയ്യുക",
+ "abusefilter-edit-syntaxok": "എഴുത്തുരീതിയിൽ പിഴവുകളൊന്നും കണ്ടെത്തിയില്ല.",
+ "abusefilter-edit-syntaxerr": "എഴുത്തുരീതിയിൽ പിഴവ് കണ്ടെത്തി: $1",
+ "abusefilter-edit-bad-tags": "താങ്കൾ നൽകിയ റ്റാഗുകളിൽ ഒന്നോ അതിലധികമോ അസാധുവാണ്.\nറ്റാഗുകൾ ചെറുതും പ്രത്യേക അക്ഷരങ്ങൾ ഉൾക്കൊള്ളാത്തവയും ആയിരിക്കണം.",
+ "abusefilter-edit-notallowed": "ദുരുപയോഗ അരിപ്പകൾ തിരുത്താനോ സൃഷ്ടിക്കാനോ താങ്കൾക്ക് അനുമതിയില്ല",
+ "abusefilter-edit-notallowed-global": "ആഗോള ദുരുപയോഗ അരിപ്പകൾ നിർമ്മിക്കാൻ അല്ലെങ്കിൽ തിരുത്താൻ താങ്കൾക്ക് അനുവാദമില്ല.",
+ "abusefilter-edit-notallowed-global-custom-msg": "ആഗോള അരിപ്പകൾക്ക് ഐച്ഛിക മുന്നറിയിപ്പ് സന്ദേശങ്ങൾ സാദ്ധ്യമല്ല",
+ "abusefilter-edit-builder-select": "കഴ്‌‌സറിലേയ്ക്ക് ചേർക്കാനായി ഒരു ഐച്ഛികം തിരഞ്ഞെടുക്കുക",
+ "abusefilter-edit-builder-group-op-arithmetic": "ഗണന ചിഹ്നങ്ങൾ",
+ "abusefilter-edit-builder-op-arithmetic-addition": "സങ്കലനം (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "വ്യവകലനം (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "ഗുണനം (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "ഹരണം (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "ശിഷ്ടം (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "വർഗ്ഗപ്പെരുക്കം (**)",
+ "abusefilter-edit-builder-group-op-comparison": "തുലന ചിഹ്നങ്ങൾ",
+ "abusefilter-edit-builder-op-comparison-equal": "സമമാണ് (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "സമമല്ല (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "ചെറുതാണ് (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "വലുതാണ് (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "ചെറുതോ സമമോ ആണ് (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "വലുതോ സമമോ ആണ് (>=)",
+ "abusefilter-edit-builder-group-op-bool": "ബൂളിയൻ ഓപ്പറേറ്റേഴ്സ്",
+ "abusefilter-edit-builder-op-bool-not": "ഇല്ല(!)",
+ "abusefilter-edit-builder-op-bool-and": "ഒപ്പം (&)",
+ "abusefilter-edit-builder-op-bool-or": "അഥവാ (|)",
+ "abusefilter-edit-builder-group-misc": "പലവക",
+ "abusefilter-edit-builder-misc-in": "പദത്തിൽ ഉൾപ്പെട്ടിരിക്കുന്നു (in)",
+ "abusefilter-edit-builder-misc-like": "ശ്രേണി ഒത്തുനോക്കൽ (like)",
+ "abusefilter-edit-builder-misc-rlike": "പദഘടകം ഒത്തുനോക്കുൽ (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "കേസ് കണക്കിലാക്കാതെ പദഘടകം ഒത്തുനോക്കൽ (irlike)",
+ "abusefilter-edit-builder-misc-contains": "ഇടത്തെ പദം വലത്തെ പദത്തെ ഉൾക്കൊള്ളുന്നു (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "പദ എഴുത്ത് (\"\")",
+ "abusefilter-edit-builder-misc-tern": "തൃതീയ ചിഹ്നനം (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "വ്യവസ്ഥാധിഷ്ഠിതം (X എങ്കിൽ Y അല്ലെങ്കിൽ Z)",
+ "abusefilter-edit-builder-group-funcs": "ഫങ്ഷനുകൾ",
+ "abusefilter-edit-builder-funcs-length": "പദത്തിന്റെ നീളം (length)",
+ "abusefilter-edit-builder-funcs-lcase": "ചെറിയക്ഷരങ്ങളിലേയ്ക്ക് (lcase)",
+ "abusefilter-edit-builder-funcs-ucase": "വലിയ അക്ഷരങ്ങളിലേയ്ക്ക് (ucase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "ആശയക്കുഴപ്പമുണ്ടാക്കുന്ന അക്ഷരങ്ങൾ നോർമലൈസ് ചെയ്യുക (ccnorm)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "ഇരട്ട അക്ഷരങ്ങൾ നീക്കം ചെയ്യുക (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "പ്രത്യേകാക്ഷരങ്ങൾ /ആകെ അക്ഷരങ്ങൾ (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "നോർമലൈസ് ചെയ്യുക (norm)",
+ "abusefilter-edit-builder-funcs-count": "പദം Y എന്നതിനുള്ളിൽ പദം X പ്രത്യക്ഷപ്പെടുന്ന തവണകൾ (count)",
+ "abusefilter-edit-builder-funcs-rcount": "Y എന്ന പദത്തിനുള്ളിൽ X എന്ന പദഘടകം പ്രത്യക്ഷപ്പെടുന്ന തവണകൾ (count)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "ശൂന്യ ഇട നീക്കം ചെയ്യുക (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "പ്രത്യേക അക്ഷരങ്ങൾ നീക്കംചെയ്യുക (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "ഐ.പി. പരിധിയിലാണോ? (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "വിവിധ ഉപപദങ്ങൾക്ക് വേണ്ടി തിരയാനുള്ള പദം (contains_any)",
+ "abusefilter-edit-builder-funcs-substr": "ഉപപദം (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "പദത്തിൽ ഉപപദത്തിന്റെ സ്ഥാനം (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "ഉപപദത്തിനു പകരം പദം ചേർക്കുക (str_replace)",
+ "abusefilter-edit-builder-funcs-set_var": "ചരം സ്ഥാപിക്കുക (set_var)",
+ "abusefilter-edit-builder-group-vars": "ചരങ്ങൾ",
+ "abusefilter-edit-builder-vars-accountname": "അംഗത്വനാമം (അംഗത്വ സൃഷ്ടിയിലുള്ളത്)",
+ "abusefilter-edit-builder-vars-timestamp": "മാറ്റത്തിന്റെ യുണിക്സ് സമയമുദ്ര",
+ "abusefilter-edit-builder-vars-action": "പ്രവൃത്തി",
+ "abusefilter-edit-builder-vars-addedlines": "തിരുത്തലിൽ കൂട്ടിച്ചേർക്കപ്പെട്ട വരികൾ",
+ "abusefilter-edit-builder-vars-delta": "തിരുത്തലിൽ മാറ്റം വന്ന വലിപ്പം",
+ "abusefilter-edit-builder-vars-diff": "തിരുത്തലിൽ വരുത്തിയ മാറ്റങ്ങളുടെ ഏകീകൃത വ്യത്യാസം",
+ "abusefilter-edit-builder-vars-newsize": "താളിന്റെ പുതിയ വലിപ്പം",
+ "abusefilter-edit-builder-vars-oldsize": "താളിന്റെ പഴയ വലിപ്പം",
+ "abusefilter-edit-builder-vars-removedlines": "തിരുത്തലിൽ ഒഴിവാക്കപ്പെട്ട വരികൾ",
+ "abusefilter-edit-builder-vars-summary": "ചുരുക്കം/കാരണം തിരുത്തുക",
+ "abusefilter-edit-builder-vars-article-id": "താളിന്റെ ഐ.ഡി.",
+ "abusefilter-edit-builder-vars-article-ns": "താളിന്റെ നാമമേഖല",
+ "abusefilter-edit-builder-vars-article-text": "താളിന്റെ തലക്കെട്ട് (നാമമേഖല ഇല്ലാതെ)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "താളിന്റെ പൂർണ്ണ തലക്കെട്ട്",
+ "abusefilter-edit-builder-vars-article-views": "താളിന്റെ എടുത്തുനോക്കലുകൾ",
+ "abusefilter-edit-builder-vars-movedfrom-id": "മാറ്റേണ്ട സ്രോതസ്സ് താളിന്റെ ഐ.ഡി.",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "മാറ്റേണ്ട സ്രോതസ്സ് താളിന്റെ നാമമേഖല",
+ "abusefilter-edit-builder-vars-movedfrom-text": "മാറ്റേണ്ട സ്രോതസ്സ് താളിന്റെ തലക്കെട്ട്",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "മാറ്റേണ്ട സ്രോതസ്സ് താളിന്റെ പൂർണ്ണ തലക്കെട്ട്",
+ "abusefilter-edit-builder-vars-movedto-id": "മാറ്റേണ്ട ലക്ഷ്യതാളിന്റെ ഐ.ഡി.",
+ "abusefilter-edit-builder-vars-movedto-ns": "മാറ്റേണ്ട ലക്ഷ്യതാളിന്റെ നാമമേഖല",
+ "abusefilter-edit-builder-vars-movedto-text": "മാറ്റേണ്ട ലക്ഷ്യതാളിന്റെ തലക്കെട്ട്",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "മാറ്റേണ്ട ലക്ഷ്യതാളിന്റെ പൂർണ്ണ തലക്കെട്ട്",
+ "abusefilter-edit-builder-vars-user-editcount": "ഉപയോക്താവിന്റെ തിരുത്തലുകളുടെ എണ്ണം",
+ "abusefilter-edit-builder-vars-user-age": "ഉപയോക്തൃ അംഗത്വത്തിന്റെ പ്രായം",
+ "abusefilter-edit-builder-vars-user-name": "ഉപയോക്തൃ അംഗത്വത്തിന്റെ നാമം",
+ "abusefilter-edit-builder-vars-user-groups": "ഉപയോക്താവ് ഉൾപ്പെട്ട (സ്വതേ ഉൾപ്പെട്ടത് ഉൾപ്പെടെ) സംഘങ്ങൾ",
+ "abusefilter-edit-builder-vars-user-rights": "ഒരു ഉപയോക്തവിന്റെ അവകാശങ്ങൾ",
+ "abusefilter-edit-builder-vars-user-blocked": "ഉപയോക്താവ് തടയപ്പെട്ടിരിക്കുകയാണെങ്കിൽ",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "ഇമെയിൽ വിലാസം സ്ഥിരീകരിച്ച സമയം",
+ "abusefilter-edit-builder-vars-recent-contributors": "താളിൽ സേവനങ്ങൾ ചെയ്ത അവസാനത്തെ പത്ത് ഉപയോക്താക്കൾ",
+ "abusefilter-edit-builder-vars-first-contributor": "താളിൽ സംഭാവന ചെയ്ത ആദ്യ ഉപയോക്താവ്",
+ "abusefilter-edit-builder-vars-all-links": "പുതിയ എഴുത്തിലുള്ള പുറത്തേയ്ക്കുള്ള കണ്ണികൾ എല്ലാം",
+ "abusefilter-edit-builder-vars-added-links": "തിരുത്തലിൽ കൂട്ടിച്ചേർക്കപ്പെട്ട പുറത്തേയ്ക്കുള്ള കണ്ണികൾ എല്ലാം",
+ "abusefilter-edit-builder-vars-removed-links": "തിരുത്തലിൽ നീക്കം ചെയ്യപ്പെട്ട പുറത്തേയ്ക്കുള്ള കണ്ണികൾ എല്ലാം",
+ "abusefilter-edit-builder-vars-old-text": "തിരുത്തലിനു മുമ്പുള്ള, പഴയ താളിലെ വിക്കി എഴുത്ത്",
+ "abusefilter-edit-builder-vars-new-text": "തിരുത്തലിനു ശേഷമുള്ള, പുതിയ താളിലെ വിക്കി എഴുത്ത്",
+ "abusefilter-edit-builder-vars-new-pst": "പുതിയ വിക്കിഎഴുത്ത് താൾ, സേവ് ചെയ്യുന്നതിനു മുമ്പ് തന്നെ മാറ്റിയിരിക്കുന്നു",
+ "abusefilter-edit-builder-vars-diff-pst": "സേവ് നടപ്പിലാകുന്നതിനുമുമ്പേ എടുത്ത, തിരുത്തലിലെ മാറ്റങ്ങളുടെ ആകെ വ്യത്യാസം",
+ "abusefilter-edit-builder-vars-addedlines-pst": "സേവ് നടപ്പിലാകുന്നതിനു മുമ്പേ എടുത്ത, തിരുത്തലിൽ കൂട്ടിച്ചേർക്കപ്പെട്ട വരികൾ",
+ "abusefilter-edit-builder-vars-new-text-stripped": "പുതിയ താളിലെ, എന്തെങ്കിലും മാർക്കപ്പുകൾ ഉണ്ടെങ്കിൽ അവ നീക്കിയ ശേഷമുള്ള, എഴുത്ത്",
+ "abusefilter-edit-builder-vars-new-html": "പുതിയ നാൾപ്പതിപ്പിന്റെ എച്ച്.റ്റി.എം.എൽ. ആയി പാഴ്സ് ചെയ്യപ്പെട്ട സ്രോതസ്സ്",
+ "abusefilter-edit-builder-vars-restrictions-edit": "താളിന്റെ സംരക്ഷണ മാനം തിരുത്തുക",
+ "abusefilter-edit-builder-vars-restrictions-move": "താളിന്റെ സംരക്ഷണ മാനത്തിൽ മാറ്റം വരുത്തുക",
+ "abusefilter-edit-builder-vars-restrictions-create": "താളിനുള്ള സംരക്ഷണം സൃഷ്ടിക്കുക",
+ "abusefilter-edit-builder-vars-restrictions-upload": "താളിനുള്ള സംരക്ഷണം അപ്‌ലോഡ് ചെയ്യുക",
+ "abusefilter-edit-builder-vars-old-text-stripped": "പഴയ താളിലെ, എന്തെങ്കിലും മാർക്കപ്പുകൾ ഉണ്ടെങ്കിൽ അവ നീക്കിയ ശേഷമുള്ള, എഴുത്ത്",
+ "abusefilter-edit-builder-vars-old-links": "തിരുത്തുന്നതിനു മുമ്പ് താളിലുണ്ടായിരുന്ന കണ്ണികൾ",
+ "abusefilter-edit-builder-vars-old-html": "എച്ച്.റ്റി.എം.എൽ. ആക്കി പാഴ്സ് ചെയ്യപ്പെട്ട പഴയ താളിലെ വിക്കി എഴുത്തുകൾ",
+ "abusefilter-edit-builder-vars-minor-edit": "തിരുത്തൽ ചെറുതിരുത്തൽ ആയി അടയാളപ്പെടുത്തണോ?",
+ "abusefilter-edit-builder-vars-file-sha1": "പ്രമാണത്തിന്റെ ഉള്ളടക്കത്തിന്റെ SHA1 ഹാഷ്",
+ "abusefilter-edit-builder-vars-file-size": "പ്രമാണത്തിന്റെ വലിപ്പം ബൈറ്റ്സിൽ",
+ "abusefilter-filter-log": "അരിപ്പ ഉപയോഗിച്ച് ചെയ്ത സമീപകാല മാറ്റങ്ങൾ",
+ "abusefilter-history": "\"#$1\" ദുരുപയോഗ അരിപ്പയുടെ മാറ്റങ്ങളുടെ ചരിത്രം",
+ "abusefilter-history-foruser": "$1 വരുത്തിയ മാറ്റങ്ങൾ",
+ "abusefilter-history-hidden": "മറയ്ക്കപ്പെട്ടവ",
+ "abusefilter-history-enabled": "സജ്ജമാക്കിയിരിക്കുന്നു",
+ "abusefilter-history-global": "ആഗോളം",
+ "abusefilter-history-timestamp": "സമയം",
+ "abusefilter-history-user": "ഉപയോക്താവ്",
+ "abusefilter-history-public": "പൊതു അരിപ്പയുടെ വിവരണം",
+ "abusefilter-history-flags": "പതാകകൾ",
+ "abusefilter-history-filter": "അരിപ്പയ്ക്കായുള്ള നിയമം",
+ "abusefilter-history-comments": "അഭിപ്രായങ്ങൾ",
+ "abusefilter-history-actions": "പ്രവൃത്തികൾ",
+ "abusefilter-history-backedit": "അരിപ്പ തിരുത്തുന്നതിലേയ്ക്ക് മടങ്ങുക",
+ "abusefilter-history-deleted": "മായ്ച്ചിരിക്കുന്നു",
+ "abusefilter-history-filterid": "അരിപ്പ",
+ "abusefilter-history-select-legend": "പരിഷ്കരിച്ച തിരച്ചിൽ",
+ "abusefilter-history-select-user": "ഉപയോക്താവ്:",
+ "abusefilter-history-select-submit": "ശുദ്ധീകരിച്ചെടുക്കുക",
+ "abusefilter-history-diff": "മാറ്റങ്ങൾ",
+ "abusefilter-history-error-hidden": "താങ്കളാവശ്യപ്പെട്ട അരിപ്പ മറയ്ക്കപ്പെട്ടിരിക്കുന്നതിനാൽ, അതിന്റെ നാൾ വഴി താങ്കൾക്ക് ദൃശ്യമല്ല.",
+ "abusefilter-exception-unexpectedatend": "അക്ഷരം $1-ൽ അപ്രതീക്ഷിത \"$2\".",
+ "abusefilter-exception-expectednotfound": "അക്ഷരം $1-ൽ $2 പ്രതീക്ഷിച്ചിരുന്നു, പക്ഷേ കിട്ടിയില്ല (പകരം $3 $4 ലഭിച്ചു).",
+ "abusefilter-exception-unrecognisedkeyword": "$1 അക്ഷരത്തിൽ തിരിച്ചറിയാൻ കഴിയാത്ത അടയാളവാക്ക് $2.",
+ "abusefilter-exception-unexpectedtoken": "$1 അക്ഷരത്തിൽ പ്രതീക്ഷിക്കാത്ത ചീട്ട് \"$3\" ($2 തരത്തിലുള്ളത്).",
+ "abusefilter-exception-unclosedstring": "അക്ഷരം $1-ൽ അടയ്ക്കാത്ത പദം ഉണ്ട്.",
+ "abusefilter-exception-invalidoperator": "$1 അക്ഷരത്തിങ്കൽ അസാധുവായ ഓപ്പറേറ്റർ \"$2\".",
+ "abusefilter-exception-unrecognisedtoken": "$1 അക്ഷരത്തിൽ തിരിച്ചറിയപ്പെടാത്ത ചീട്ട് \"$2\".",
+ "abusefilter-exception-noparams": "\"$2\" എന്ന ഫങ്ഷനിൽ $1 അക്ഷരത്തിങ്കൽ നൽകേണ്ട ചരങ്ങൾ നൽകിയിട്ടില്ല.",
+ "abusefilter-exception-dividebyzero": "അക്ഷരം $1-ൽ പൂജ്യം കൊണ്ട് $2-വിനെ ഹരിക്കാനുള്ള ആസാധുവായ ശ്രമം.",
+ "abusefilter-exception-unrecognisedvar": "$1 അക്ഷരത്തിങ്കൽ തിരിച്ചറിയാൻ കഴിയാത്ത ചരം $2",
+ "abusefilter-exception-notenoughargs": "$2 എന്ന ഫങ്ഷനിലെ $1 അക്ഷരത്തിൽ വേണ്ടത്ര ആർഗ്യുമെന്റുകൾ നല്കിയിട്ടില്ല.\n{{PLURAL:$3|ഒരു ആർഗ്യുമെന്റാണ്|$3 ആർഗ്യുമെന്റുകളാണ്}} പ്രതീക്ഷിച്ചതെങ്കിലും $4 എണ്ണമാണ് കിട്ടിയത്.",
+ "abusefilter-exception-regexfailure": "\"$3\"റെഗുലർ എക്സ്‌‌പ്രെഷനിൽ $1 അക്ഷരത്തിങ്കൽ പിഴവുണ്ട്: \"$2\"",
+ "abusefilter-exception-overridebuiltin": "സ്വതേയുള്ള ചരമായ \"$2\" അക്ഷരം $1-ൽ അനധികൃതമായി അതിലംഘിച്ചിരിക്കുന്നു.",
+ "abusefilter-exception-outofbounds": "നിലവിലില്ലാത്ത പട്ടികയിലെ ഇനം $2 (പട്ടികയുടെ വലിപ്പം =$3) അക്ഷരം $1-ൽ ആവശ്യപ്പെട്ടിരിക്കുന്നു.",
+ "abusefilter-action-tag": "റ്റാഗ്",
+ "abusefilter-action-throttle": "ത്വരണി",
+ "abusefilter-action-warn": "മുന്നറിയിപ്പ് നൽകുക",
+ "abusefilter-action-blockautopromote": "സ്വയം സ്ഥാനക്കയറ്റം തടയുക",
+ "abusefilter-action-block": "തടയുക",
+ "abusefilter-action-degroup": "സംഘങ്ങളിൽ നിന്ന് നീക്കംചെയ്യുക",
+ "abusefilter-action-rangeblock": "പരിധിയടച്ച്-തടയൽ",
+ "abusefilter-action-disallow": "അനുവദിക്കാതിരിക്കൽ",
+ "abusefilter-revert-title": "$1 അരിപ്പ ചെയ്ത എല്ലാ മാറ്റങ്ങളും തിരസ്കരിക്കുക",
+ "abusefilter-revert-intro": "അരിപ്പ $1 മൂലം ദുരുപയോഗ അരിപ്പ ചെയ്ത എല്ലാ തിരുത്തലുകളും ഈ ഫോം ഉപയോഗിച്ച് താങ്കൾക്ക് മുൻപ്രാപനം ചെയ്യാൻ കഴിയുന്നതാണ്.\nഈ ഉപകരണം ഉപയോഗിക്കുമ്പോൾ ദയവായി ശ്രദ്ധ പുലർത്തുക.",
+ "abusefilter-revert-preview-item": "$1: $4-ൽ $2 ഒരു $3 ചെയ്തിരിക്കുന്നു.\nമുൻപ്രാപനം ചെയ്യേണ്ടുന്ന പ്രവൃത്തികൾ: $5 ($6)",
+ "abusefilter-revert-search-legend": "ദുരുപയോഗ അരിപ്പയുടെ പ്രവൃത്തികളിൽ തിരസ്കരിക്കപ്പെടേണ്ടവ തിരഞ്ഞെടുക്കുക",
+ "abusefilter-revert-periodstart": "സമയാരംഭം:",
+ "abusefilter-revert-periodend": "സമയാവസാനം:",
+ "abusefilter-revert-search": "പ്രവൃത്തികൾ തിരഞ്ഞെടുക്കുക",
+ "abusefilter-revert-filter": "അരിപ്പ:",
+ "abusefilter-revert-preview-intro": "ഈ പ്രവൃത്തി ചെയ്താൽ മുൻപ്രാപനം ചെയ്യപ്പെടുന്ന പ്രവൃത്തികൾ താഴെ കൊടുത്തിരിക്കുന്നു.\nദയവായി അവ ശ്രദ്ധയോടെ പരിശോധിക്കുക, താങ്കൾ തിരഞ്ഞെടുത്തവ സ്ഥിരീകരിക്കാനായി \"{{int:abusefilter-revert-confirm}}\" ഞെക്കുക.",
+ "abusefilter-revert-confirm": "സ്ഥിരീകരിക്കുക",
+ "abusefilter-revert-success": "[[Special:AbuseFilter/$1|അരിപ്പ $2]] ഉപയോഗിച്ച് ദുരുപയോഗ അരിപ്പ ചെയ്ത എല്ലാ പ്രവൃത്തികളും മുന്നവസ്ഥയിലേയ്ക്ക് മാറ്റിയിരിക്കുന്നു.",
+ "abusefilter-revert-reason": "അരിപ്പ $1 ഉപയോഗിച്ച് ദുരുപയോഗ അരിപ്പ ചെയ്ത എല്ലാ പ്രവൃത്തികളും സ്വയം മുൻപ്രാപനം ചെയ്യുന്നു.\nതന്നിരിക്കുന്ന കാരണം:$2",
+ "abusefilter-revert-reasonfield": "കാരണം:",
+ "abusefilter-test": "മുൻ‌തിരുത്തലുകളിൽ ഒരു അരിപ്പ പരീക്ഷിക്കുക",
+ "abusefilter-test-intro": "ഒടുവിലത്തെ {{PLURAL:$1|ഒരു മാറ്റത്തിൽ|$1 മാറ്റങ്ങളിൽ}} താഴെയുള്ള പെട്ടിയിൽ നൽകിയിരിക്കുന്ന അരിപ്പ പരീക്ഷിക്കാൻ ഈ താൾ അനുവദിക്കുന്നു.\nനിലവിലുള്ള ഒരു അരിപ്പ ഉപയോഗിക്കാൻ, അതിന്റെ ഐ.ഡി. തിരുത്തുവാനുള്ള പെട്ടിയുടെ താഴെയുള്ള പെട്ടിയിൽ നൽകിയ ശേഷം, \"{{int:abusefilter-test-load}}\" എന്ന ബട്ടൺ ഞെക്കുക.",
+ "abusefilter-test-legend": "അരിപ്പയുടെ പരീക്ഷണം",
+ "abusefilter-test-load-filter": "അരിപ്പയുടെ ഐ.ഡി. എടുക്കുക:",
+ "abusefilter-test-submit": "പരീക്ഷിയ്ക്കുക",
+ "abusefilter-test-load": "ശേഖരിക്കുക",
+ "abusefilter-test-user": "ഉപയോക്താവ് വരുത്തിയ മാറ്റങ്ങൾ:",
+ "abusefilter-test-period-start": "പിന്നീട് വരുത്തിയ മാറ്റങ്ങൾ:",
+ "abusefilter-test-period-end": "മുമ്പ് വരുത്തിയ മാറ്റങ്ങൾ:",
+ "abusefilter-test-page": "താളിൽ വരുത്തിയ മാറ്റങ്ങൾ:",
+ "abusefilter-test-shownegative": "അരിപ്പയുമായി യോജിക്കാത്ത മാറ്റങ്ങൾ പ്രദർശിപ്പിക്കുക",
+ "abusefilter-test-syntaxerr": "താങ്കൾ നൽകിയ അരിപ്പയുടെ എഴുത്തുരീതിയിൽ പിശകുണ്ട്.\n\"{{int:abusefilter-edit-check}}\" എന്ന ബട്ടൺ ഞെക്കിയാൽ താങ്കൾക്ക് പൂർണ്ണമായ വിശദീകരണം ലഭിക്കുന്നതാണ്.",
+ "abusefilter-test-badtitle": "താങ്കൾ നൽകിയ താളിന്റെ തലക്കെട്ട് അസാധുവാണ്. തലക്കെട്ടിൽ ഉപയോഗിക്കാൻ പാടില്ലാത്ത ഒന്നോ അതിലധികമോ അക്ഷരങ്ങൾ അതിലുണ്ട്.",
+ "abusefilter-changeslist-examine": "പരിശോധിക്കുക",
+ "abusefilter-examine": "ഒറ്റയൊറ്റ മാറ്റങ്ങൾ പരിശോധിക്കുക",
+ "abusefilter-examine-intro": "ഓരോ ഒറ്റയൊറ്റ മാറ്റത്തിനും ദുരുപയോഗ അരിപ്പ സൃഷ്ടിക്കുന്ന ചരങ്ങൾ പരിശോധിക്കാൻ ഈ താൾ താങ്കളെ അനുവദിക്കുന്നു, ഒപ്പം അത് അരിപ്പകളിൽ പരീക്ഷിക്കാവുന്നതുമാണ്.",
+ "abusefilter-examine-legend": "മാറ്റങ്ങൾ തിരഞ്ഞെടുക്കുക",
+ "abusefilter-examine-diff": "വ്യത്യാസത്തിന്റെ യൂ.ആർ.എൽ.:",
+ "abusefilter-examine-user": "ഉപയോക്താവ്:",
+ "abusefilter-examine-title": "താളിന്റെ തലക്കെട്ട്:",
+ "abusefilter-examine-submit": "അന്വേഷിക്കുക",
+ "abusefilter-examine-vars": "ഈ മാറ്റത്തിനായി സൃഷ്ടിച്ച ചരങ്ങൾ",
+ "abusefilter-examine-test": "ഈ മാറ്റം ഒരു അരിപ്പയിൽ പരീക്ഷിക്കുക",
+ "abusefilter-examine-test-button": "അരിപ്പ പരീക്ഷിക്കുക",
+ "abusefilter-examine-match": "ഈ മാറ്റത്തോട് അരിപ്പ യോജിക്കുന്നു.",
+ "abusefilter-examine-nomatch": "അരിപ്പ ഈ മാറ്റവുമായി ഒത്തുപോകുന്നില്ല.",
+ "abusefilter-examine-syntaxerror": "ഈ അരിപ്പയിൽ അസാധുവായ ലേഖനരീതിയുണ്ട്",
+ "abusefilter-examine-notfound": "താങ്കളാവശ്യപ്പെട്ട മാറ്റം കണ്ടെത്താനായില്ല.",
+ "abusefilter-examine-incompatible": "താങ്കളാവശ്യപ്പെട്ട മാറ്റം ദുരുപയോഗ അരിപ്പ പിന്തുണയ്ക്കുന്നില്ല",
+ "abusefilter-examine-noresults": "താങ്കൾ നൽകിയവയ്ക്കുള്ള തിരച്ചിലുകൾ യാതൊരു ഫലവും നൽകിയില്ല.",
+ "abusefilter-topnav": "'''ദുരുപയോഗ അരിപ്പയ്ക്കുള്ള വഴികാട്ടി'''",
+ "abusefilter-topnav-home": "പ്രധാനം",
+ "abusefilter-topnav-test": "ഗണം പരീക്ഷിക്കൽ",
+ "abusefilter-topnav-examine": "പഴയ തിരുത്തുകൾ പരിശോധിക്കുക",
+ "abusefilter-topnav-log": "ദുരുപയോഗ രേഖ",
+ "abusefilter-topnav-tools": "പ്രശ്നപരിഹാര ഉപകരണങ്ങൾ",
+ "abusefilter-topnav-import": "അരിപ്പ ഇറക്കുമതി ചെയ്യുക",
+ "abusefilter-log-name": "ദുരുപയോഗ അരിപ്പയുടെ ഉപയോഗ രേഖ",
+ "abusefilter-log-header": "അരിപ്പകളിൽ വരുത്തിയ മാറ്റങ്ങളുടെ ചുരുക്കം ഈ രേഖയിൽ കാണാവുന്നതാണ്.\nപൂർണ്ണ വിവരങ്ങൾക്ക്, അരിപ്പകളിലെ സമീപകാലമാറ്റങ്ങളുടെ [[Special:AbuseFilter/history|പട്ടിക]] കാണുക.",
+ "abusefilter-log-noresults": "ഫലങ്ങൾ ഒന്നുമില്ല",
+ "abusefilter-diff-title": "പതിപ്പുകൾ തമ്മിലുള്ള വ്യത്യാസങ്ങൾ",
+ "abusefilter-diff-item": "ഇനം",
+ "abusefilter-diff-version": "$2 {{GENDER:$3|}} $1-നു സൃഷ്ടിച്ച പതിപ്പ്",
+ "abusefilter-diff-info": "അടിസ്ഥാന വിവരങ്ങൾ",
+ "abusefilter-diff-pattern": "അരിപ്പയിലെ ഉപാധികൾ",
+ "abusefilter-diff-invalid": "ആവശ്യപ്പെട്ട പതിപ്പുകൾ ശേഖരിക്കാൻ കഴിയില്ല",
+ "abusefilter-diff-backhistory": "അരിപ്പയുടെ നാൾവഴിയിലേയ്ക്ക് തിരിച്ചുപോവുക",
+ "abusefilter-diff-prev": "പഴയ വ്യത്യാസം",
+ "abusefilter-diff-next": "പുതിയ വ്യത്യാസം",
+ "abusefilter-import-intro": "മറ്റുവിക്കികളിൽ നിന്ന് അരിപ്പകൾ ഇറക്കുമതി ചെയ്യാൻ ഈ ദൃശ്യമണ്ഡലം ഉപയോഗിക്കാവുന്നതാണ്.\nസ്രോതസ്സ് വിക്കിയിലെ തിരുത്തുവാനുള്ള ദൃശ്യമണ്ഡലത്തിൽ \"{{int:abusefilter-edit-tools}}\" എന്നതിനു താഴെയുള്ള \"{{int:abusefilter-edit-export}}\" ഞെക്കുക.\nഅപ്പോൾ കിട്ടുന്ന ടെക്സ്റ്റ്ബോക്സ് പകർത്തി ഈ ടെക്സ്റ്റ്‌‌ബോക്സിൽ നൽകി, \"{{int:abusefilter-import-submit}}\" ഞെക്കുക.",
+ "abusefilter-import-submit": "വിവരങ്ങൾ ഇറക്കുമതി ചെയ്യുക",
+ "abusefilter-group-default": "സ്വതേ",
+ "abusefilter-http-error": "ഒരു എച്ച്.റ്റി.റ്റി.പി. പിഴവ് സംഭവിച്ചിരിക്കുന്നു: $1",
+ "apihelp-abusefiltercheckmatch-param-filter": "അരിപ്പയിലെ മൊത്തം എഴുത്തും ഒത്തുപോകുന്നുണ്ടോയെന്ന് പരിശോധിക്കുക."
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/mn.json b/www/wiki/extensions/AbuseFilter/i18n/mn.json
new file mode 100644
index 00000000..47b2810a
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/mn.json
@@ -0,0 +1,20 @@
+{
+ "@metadata": {
+ "authors": [
+ "Chinneeb",
+ "MongolWiki",
+ "Wisdom"
+ ]
+ },
+ "abusefilter": "Доромжлол шүүх тохиргоо",
+ "abuselog": "Доромж хийгдсэн лог",
+ "abusefilter-intro": "Та доромжлолоос сэргийлэх шүүлтүүрийн системд холбогдсон байна.\nУг шүүлтүүр нь автоматаар тохиолдол бүрт өөрчлөлт хийх байдлаар ажиллана.\nЭнд хийгдсэн шүүлтүүрүүдийг жагсаан харуулж тэдгээрийг өөрчилж болно.",
+ "abusefilter-mustbeeditor": "Нууцлалийг хадгалах үүднээс зөвхөн зөвшөөрөгдсөн хэрэглэгчдэд уг интерфэйсийг ашиглаж болно.",
+ "abusefilter-blocker": "Доромжлол шүүгч",
+ "right-abusefilter-modify": "Доромжлол шүүгчид өөрчлөлт хийх",
+ "abusefilter-log-search-submit": "Хайх",
+ "abusefilter-history-comments": "Тайлбар",
+ "abusefilter-action-tag": "Шошго",
+ "abusefilter-revert-filter": "Шүүлтүүр:",
+ "abusefilter-examine-submit": "Хайх"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/mr.json b/www/wiki/extensions/AbuseFilter/i18n/mr.json
new file mode 100644
index 00000000..d568675b
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/mr.json
@@ -0,0 +1,391 @@
+{
+ "@metadata": {
+ "authors": [
+ "BPositive",
+ "Htt",
+ "Mahitgar",
+ "Shantanoo",
+ "V.narsikar",
+ "Ydyashad",
+ "संतोष दहिवळ",
+ "Matma Rex",
+ "Pushkar Ekbote",
+ "Sureshkhole",
+ "Susheelkasab"
+ ]
+ },
+ "abusefilter-desc": "संपादन गाळणी सर्व संपादनांचा सांगितल्याप्रमाणे स्वयंशोध घेते.",
+ "abusefilter": "संपादन गाळणी व्यवस्थापन",
+ "abuselog": "गैरवापर नोंदी",
+ "abusefilter-intro": "संपादन गाळणी व्यवस्थापन प्रणालीत आपले स्वागत आहे.\n\nसंपादन गाळणी म्हणजे सर्व संपादनांचा सांगितल्याप्रमाणे स्वयंशोध घेणारी स्वयंचलित सॉफ्टवेअर प्रणाली असते. हा इंटरफेस तयार केलेल्या गाळण्यांची यादी दाखवतो आणि त्यात सुधारणा करण्यास अनुमती देतो.",
+ "abusefilter-mustbeeditor": "सुरक्षेच्या कारणास्तव,फक्त तेच सदस्य या सुविधेचा वापर करू शकतात, ज्यांना संपादक गाळणीत बदल करावयाचा अधिकार आहे.",
+ "abusefilter-warning": "'''सूचना''': आपण करू इच्छित असलेली कृती/लेखन/संपादन अभिप्रेत संकेतास अनुसरून नसावी / अयोग्य असावी अथवा साशंकीत म्हणून स्वयमेव संपादन गाळणीकडून नोंदवली जात आहे.\nआपले संपादन जतन (सेव्ह) करण्यापूर्वी आपण करू इच्छित असलेली कृती/लेखन/संपादन रचनात्मक आहे याची खात्री करून घ्यावी.अरचनात्मक संपादने तात्काळ उलटवली जाण्याची किंवा त्यापेक्षा अधिक प्रतिबंधनांची शक्यता असते.\nआपणास हे संपादन सुयोग्य असल्याची खात्री असेल तर आपण ते नक्की करण्यासाठी ”पुन्हा सोपवा’ वर टिचकी मारू शकता.आपल्या क्रियेशी संलग्न, या गाळणीस लागू असलेल्या नियमाचे थोडक्यात वर्णन आहे:$1",
+ "abusefilter-disallowed": "आपण नुकतीच केलेली क्रिया/लेखन/संपादन अभिप्रेत संकेतास अनुसरून नसावी / 'अयोग्य' असावी अथवा 'साशंकीत’ म्हणून स्वयमेव ज्ञात झाली आहे, आणि नामंजूर करण्यात आलेली आहे.आपली क्रिया रचनात्मक असल्याचे जर आपणास वाटत असेल तर,कृपया ,आपण नेमके काय करू इच्छित होता/प्रयत्न करत होता याची माहिती, संपादन गाळणीच्या अनपेक्षीत क्रिया विषयक चर्चा पानावर प्रचालकांना द्या. आपल्या क्रियेशी संलग्न, या गाळणीस लागू असलेल्या नियमाचे थोडक्यात वर्णन आहे:$1",
+ "abusefilter-blocked-display": "आपण नुकतीच केलेली क्रिया ही ’अभिप्रेत संकेतास अनुसरून नसलेली' / 'अयोग्य' असल्याची नोंद संपादन गाळणीने स्वयमेव केली आहे, व म्हणून ती क्रिया करण्यास आपणास रोधित करण्यात आलेले आहे.{{SITENAME}} सुरक्षित ठेवण्यासाठी,आपले सदस्यखाते व अंकपत्ता संपादनांसाठी अवरुद्ध करण्यात आलेला आहे.जर हे चुकीने घडले असल्यास संपादन गाळणी चर्चा पानावर प्रचालकाशी कृपया संपर्क साधा.आपल्या क्रियेशी संलग्न, या गाळणीस लागू असलेल्या नियमाचे थोडक्यात वर्णन आहे:$1",
+ "abusefilter-degrouped": "ही क्रिया हानीकारक म्हणुन स्वयंचलीतरित्या निवडल्या गेली आहे.म्हणुन तीस परवानगी नाकारण्यात येते, व,आपले खात्याबद्दल रदबदली केल्या गेल्याच्या शंकेमुळे आपले सर्व अधिकार रद्द करण्यात आलेले आलेले आहेत. आपणास जर खात्री आहे कि हे चुकीमुळे झालेले आहे तर या क्रियेच्या स्पष्टीकरणासह प्रशासकाशी कृपया संपर्क साधा ,त्यामुळे आपले अधिकार आपणास पुनर्प्राप्त होतील.आपल्या क्रियेशी जुळणा-या दुरुपयोग नियमाचे थोडक्यात वर्णन आहे :$1",
+ "abusefilter-autopromote-blocked": "\nही क्रिया हानीकारक म्हणुन स्वयंचलीतरित्या निवडल्या गेली आहे.म्हणुन तीस परवानगी नाकारण्यात येते.याव्यतिरिक्त,सुरक्षिततेचे उपाय म्हणुन,खाते सुरू ठेवण्यासाठी देण्यात आलेल्या काही नित्याच्या सोयी आपल्या खात्यातुन रद्द करण्यात आलेल्या आहेत.\nआपल्या क्रियेबाबत जुळणा-या दुरुपयोग नियमाचे थोडक्यात वर्णन आहे :$1",
+ "abusefilter-blocker": "संपादन गाळणी",
+ "abusefilter-blockreason": "संपादन गाळणीने आपोआप अवरुद्ध केले.\nसंलग्न नियमाचे वर्णन:$1",
+ "abusefilter-degroupreason": "संपादन गाळणीने आपोआप अधिकार काढले.\nनियमाचे वर्णन:$1",
+ "abusefilter-accountreserved": "संपादन गाळणीद्वारे या नावाचे खाते वापरापासून आरक्षित केले आहे.",
+ "right-abusefilter-modify": "संपादन गाळणीस बदलवा.",
+ "right-abusefilter-view": "संपादन गाळण्या बघा",
+ "right-abusefilter-log": "संपादन गाळणीच्या नोंदी बघा",
+ "right-abusefilter-log-detail": "संपादन गाळणी क्रमलेखाच्या विस्तृत नोंदी बघा",
+ "right-abusefilter-private": "दुरुपयोग नोंदवहीतील जमा केलेली वैयक्तिक माहिती बघा.",
+ "right-abusefilter-modify-restricted": "सीमित क्रियेसह दुरुपयोग गाळणीस बदलवा",
+ "right-abusefilter-revert": "दिलेल्या दुरुपयोग गाळणीने केलेले सर्व बदल पूर्वपदास न्या.",
+ "right-abusefilter-view-private": "खाजगी म्हणून खूण केलेल्या संपादन गाळण्या बघा.",
+ "right-abusefilter-log-private": "खाजगी संपादन गाळण्यांनी टिपलेल्या नोंदी बघा",
+ "right-abusefilter-hide-log": "संपादन गाळणीतील नोंदी लपवा",
+ "right-abusefilter-hidden-log": "संपादन गाळणीने टिपलेल्या लपलेल्या नोंदी दाखवा",
+ "right-abusefilter-modify-global": "वैश्विक दुरुपयोग गाळणी तयार करा किंवा त्यात फेरबदल करा.",
+ "action-abusefilter-modify": "संपादन गाळणीत फेरबदल करा.",
+ "action-abusefilter-view": "संपादन गाळणी पहा",
+ "action-abusefilter-log": "संपादन गाळणीने टिपलेल्या नोंदी पहा",
+ "action-abusefilter-log-detail": "संपादन गाळणीने टिपलेल्या सविस्तर नोंदी पहा",
+ "action-abusefilter-private": "संपादन गाळणी नोंदी मधील खाजगी विदा पहा",
+ "action-abusefilter-modify-restricted": "सीमित क्रियेसह संपादन गाळणीस बदलवा.",
+ "action-abusefilter-revert": "येथे दिलेल्या संपादन गाळणीने केलेले सर्व बदल पूर्वपदास न्या.",
+ "action-abusefilter-view-private": "खासगी म्हणुन नोंदविलेल्या संपादन गाळण्या बघा.",
+ "abusefilter-log": "गाळणीने टिपलेल्या नोंदी",
+ "abusefilter-log-summary": "ही नोंदवही गाळण्यांद्वारे पकडलेल्या सर्व क्रियांची यादी दाखविते.",
+ "abusefilter-log-search": "गाळणी नोंदी शोधा",
+ "abusefilter-log-search-user": "सदस्य:",
+ "abusefilter-log-search-filter": "गाळणी ओळखण (पाईप चिन्हाद्वारे(|) वेगळे केलेले):",
+ "abusefilter-log-search-title": "शीर्षक:",
+ "abusefilter-log-search-wiki": "विकि:",
+ "abusefilter-log-search-impact": "परिणाम:",
+ "abusefilter-log-search-impact-all": "सर्व क्रिया",
+ "abusefilter-log-search-impact-saved": "फक्त जतन केलेले बदल",
+ "abusefilter-log-search-impact-not-saved": "बदल जतन न करता",
+ "abusefilter-log-search-action-taken-label": "कारवाई केली",
+ "abusefilter-log-search-action-taken-any": "कुठलेही",
+ "abusefilter-log-search-submit": "शोधा",
+ "abusefilter-log-entry": "$1:$2ने संपादन गाळणी {{GENDER:$8|उद्युक्त}} केली, ज्याने $4 वर \"$3\" {{GENDER:$8|क्रिया केली}}.\nकेलेली कार्यवाही: $5;\nगाळणी वर्णन: $6",
+ "abusefilter-log-entry-withdiff": "$1:$2ने अपशब्द गाळणी कार्यान्वयित केली,त्याने $4 वर \"$3\" क्रिया घडली.\nकेलेली कार्यवाही:$5;\nगाळणी वर्णन:$6($7)",
+ "abusefilter-log-detailedentry-meta": "$1: $2 ने $3 ला कार्यान्वित केले, $5 वर \"$4\" ही क्रिया केली.\nकार्यवाही केली : $6;\nगाळणीचे वर्णन : $7 ($8)",
+ "abusefilter-log-detailedentry-global": "वैश्विक गाळणी $1",
+ "abusefilter-log-detailedentry-local": "गाळणी $1",
+ "abusefilter-log-detailslink": "माहिती",
+ "abusefilter-log-diff": "फरक",
+ "abusefilter-log-hidelink": "दृष्यता जुळवून घ्या.",
+ "abusefilter-log-details-legend": "नोंदवहीतील कलम $1 चा तपशील",
+ "abusefilter-log-details-var": "चल (व्हॅरिएबल)",
+ "abusefilter-log-details-val": "किंमत (व्हॅल्यू)",
+ "abusefilter-log-details-vars": "कार्य प्राचल",
+ "abusefilter-log-details-private": "खाजगी मजकूर",
+ "abusefilter-log-details-ip": "ज्या मुळ अंकपत्त्याहून",
+ "abusefilter-log-noactions": "काहीही नाही",
+ "abusefilter-log-details-diff": "संपादनात केलेले बदल",
+ "abusefilter-log-linkoncontribs": "संपादन गाळणी नोंदी",
+ "abusefilter-log-linkoncontribs-text": "गाळणीने टिपलेल्या या सदस्याच्या नोंदी",
+ "abusefilter-log-hidden": "(प्रविष्टी लपविलेली आहे)",
+ "abusefilter-log-hidden-implicit": "(लपविलेली, कारण संस्करण वगळण्यात आले आहे)",
+ "abusefilter-log-cannot-see-details": "या नोंदीचा तपशिल बघण्यास आपणास परवानगी नाही.",
+ "abusefilter-log-details-hidden": "या नोंदीचा तपशिल आपण बघु शकत नाही कारण तिची सार्वजनिक दृष्यता लपविलेली आहे.",
+ "abusefilter-log-private-not-included": "आपण नमूद केलेले एक वा एकाधिक गाळणी ओळखणी ह्या खाजगी आहेत.ह्या गाळण्यांचा शोध घेतल्या गेला नाही कारण, या खाजगी गाळण्यांचा तपशिल बघण्याची आपणास परवानगी नाही.",
+ "abusefilter-log-hide-legend": "नोंदेची(लॉग) नोंद(एंट्री) लपवा",
+ "abusefilter-log-hide-id": "टिपलेल्या नोंदीचा क्रमांक",
+ "abusefilter-log-hide-hidden": "ही नोंद सार्वजनिक दृश्यतेपासून लपवा",
+ "abusefilter-log-hide-reason": "कारण:",
+ "abusefilter-log-hide-forbidden": "आपणास दुरुपयोग गाळणीच्या नोंदवहीतील नोंदी लपविण्याची परवानगी नाही.",
+ "abusefilter-logentry-suppress": "\"[[$1]]\" लपविले",
+ "abusefilter-logentry-unsuppress": "\"[[$1]]\"ला प्रगट करा",
+ "logentry-abusefilter-hit": "$3 वर \"$5\" ही क्रिया करून $1 ने $4 ला चेतविले.पुढील कार्यवाही केली: $6 ($7)",
+ "abusefilter-management": "संपादन गाळणी व्यवस्थापन",
+ "abusefilter-list": "सर्व गाळण्या",
+ "abusefilter-list-id": "गाळणी क्रमांक",
+ "abusefilter-list-status": "स्थिती",
+ "abusefilter-list-public": "सार्वजनिक विवरण",
+ "abusefilter-list-consequences": "परिणाम",
+ "abusefilter-list-visibility": "दृश्यता",
+ "abusefilter-list-hitcount": "ठोक(हिट) संख्या",
+ "abusefilter-list-edit": "संपादन करा",
+ "abusefilter-list-details": "तपशील",
+ "abusefilter-list-limit": "प्रतिपान दर्शनीय संख्या",
+ "abusefilter-list-lastmodified": "शेवटचा फेरबदल",
+ "abusefilter-list-group": "गाळणी गट",
+ "abusefilter-hidden": "खासगी",
+ "abusefilter-unhidden": "सार्वजनिक",
+ "abusefilter-enabled": "कार्यान्वित केले",
+ "abusefilter-deleted": "वगळलेले",
+ "abusefilter-disabled": "अकार्यान्वित",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|झेल}}",
+ "abusefilter-new": "नवीन संपादन गाळणी बनवा",
+ "abusefilter-return": "संपादन गाळकाकडे वापस",
+ "abusefilter-status-global": "वैश्विक",
+ "abusefilter-list-options": "पर्याय",
+ "abusefilter-list-options-deleted": "वगळलेल्या गाळण्या",
+ "abusefilter-list-options-deleted-only": "केवळ वगळलेल्या गाळण्या दाखवा",
+ "abusefilter-list-options-deleted-hide": "वगळलेल्या संपादन गाळण्या लपवा",
+ "abusefilter-list-options-deleted-show": "वगळलेल्या गाळण्या अंतर्भूत करा",
+ "abusefilter-list-options-scope": "गाळण्या दाखवा:",
+ "abusefilter-list-options-scope-local": "स्थानिक नियम फक्त",
+ "abusefilter-list-options-scope-global": "वैश्विक नियम फक्त",
+ "abusefilter-list-options-scope-all": "स्थानिक व वैश्विक नियम",
+ "abusefilter-list-options-disabled": "अकार्यान्वित संपादन गाळण्या",
+ "abusefilter-list-options-hidedisabled": "अकार्यान्वित संपादन गाळण्या लपवा",
+ "abusefilter-list-options-submit": "अद्ययावत करा",
+ "abusefilter-tools-text": "येथे खाली, संपादन गाळणी तयारीस आणि गणकदोष निवारण्यास उपयूक्त सुविधा उपलब्ध आहेत.",
+ "abusefilter-tools-expr": "पदावली (एक्सप्रेशन) परिक्षक",
+ "abusefilter-tools-submitexpr": "मुल्यमापन करा",
+ "abusefilter-tools-reautoconfirm": "स्वयंशाबीत(ऑटोकन्फर्म) स्थिती पुनर्स्थापित करा",
+ "abusefilter-tools-reautoconfirm-user": "सदस्य:",
+ "abusefilter-tools-reautoconfirm-submit": "पुनर्-स्वयंशाबीत(ऑटोकन्फर्म) करा",
+ "abusefilter-reautoconfirm-none": "कि सदस्याने {{GENDER:$1|त्याची|तिची|त्यांची}} स्वयंशाबीत(ऑटोकन्फर्म) स्थिती निलंबित ठेवली नाही.",
+ "abusefilter-reautoconfirm-notallowed": "आपणास स्वयंशाबीत(ऑटोकन्फर्म) स्थिती पुनर्स्थापित करण्याची परवानगी नाही.",
+ "abusefilter-reautoconfirm-done": "खात्याची स्वयंशाबीत(ऑटोकन्फर्म) स्थिती पुर्ववत् केली आहे",
+ "abusefilter-status": "मागील $1 {{PLURAL:$1|क्रिया|क्रियां}}पैकी, $2 ($3%) क्रिया $4 च्या अटमर्यादेस पोहोचल्या , आणि $5 ($6%) सध्या कार्यान्वित गाळण्यांपैकी एकीस संपादनकृती अनुरुपन (मॅच) झाल्या.",
+ "abusefilter-edit": "संपादन गाळणीचे संपादन",
+ "abusefilter-edit-subtitle": "गाळणी संपादन $1",
+ "abusefilter-edit-subtitle-new": "संपादन गाळणीची निर्मिती",
+ "abusefilter-edit-oldwarning": "<strong> आपण या गाळणीची जुनी आवृत्ती संपादित करीत आहात.\nयेथे नमूद केलेली सांख्यिकी, ही या गाळणीच्या विद्यमान आवृत्तीची आहे.जर आपण आपले बदल जतन केलेत, तर, आपण संपादन करीत असलेल्या आवृत्तीपासून आजतागायतच्या बदलांवर आपण पुनर्लेखन(ओव्हरराईट) कराल</strong> &bull;[[Special:AbuseFilter/history/$2|या गाळणीचा इतिहास तपासुन निर्णय घ्या]].",
+ "abusefilter-edit-status-label": "सांख्यिकी:",
+ "abusefilter-edit-status": "मागील $1 या {{PLURAL:$1|क्रियेपैकी|क्रियांपैकी}},या गाळणीशी, $2 ($3%)अनुरुपन (मॅच) झाल्या आहेत.",
+ "abusefilter-edit-status-profile": "मागील $1 या {{PLURAL:$1|क्रियेपैकी|क्रियांपैकी}},या गाळणीशी, $2 ($3%)अनुरुपन (मॅच) झाल्या आहेत. सरासरीने,त्याचा कार्यावधी $4 मिली सेकंद आहे व अटमर्यादेपैकी त्याने $5 {{PLURAL:$5|अटीची|अटींची}} खानापूर्ती केली आहे.",
+ "abusefilter-edit-new": "नवीन संपादन गाळणी",
+ "abusefilter-edit-save": "संपादन गाळणी जतन करा",
+ "abusefilter-edit-id": "गाळणी क्रमांक",
+ "abusefilter-edit-description": "विवरण:\n:''(सार्वजनिक)''",
+ "abusefilter-edit-group": "गाळणी गट",
+ "abusefilter-edit-flags": "खूणपताका:",
+ "abusefilter-edit-enabled": "या संपादन गाळणीस कार्यान्वित करा",
+ "abusefilter-edit-deleted": "वगळल्याची खूण करा",
+ "abusefilter-edit-hidden": "या गाळणीच्या विवरणाची सार्वजनिक दृश्यता झाका",
+ "abusefilter-edit-global": "वैश्विक गाळणी",
+ "abusefilter-edit-rules": "शर्ती",
+ "abusefilter-edit-notes": "टिपा:",
+ "abusefilter-edit-lastmod": "संपादन गाळणीचा शेवटचा फेरबदल:",
+ "abusefilter-edit-lastmod-text": "$1 द्वारा $2",
+ "abusefilter-edit-hitcount": "गाळणीने पेललेले झेल",
+ "abusefilter-edit-consequences": "अनुरुपन (मॅच) झाल्यावर करावयाची कार्यवाही",
+ "abusefilter-edit-action-warn": "सदस्यास पुर्व/सजगता सूचना देउन या क्रिया उद्युक्त करा",
+ "abusefilter-edit-action-disallow": "प्रश्नांकित कृती करण्यापासून, उपयोगकर्त्यास थांबवा",
+ "abusefilter-edit-action-blockautopromote": "सदस्याची स्वयंशाबीत(ऑटोकन्फर्म) स्थिती रद्द करा.",
+ "abusefilter-edit-action-degroup": "सदस्यास सर्व सवलत-गटांमधून हटवा",
+ "abusefilter-edit-action-block": "सदस्य व/किंवा त्याचा अंकपत्ता संपादनास प्रतिबंधित करा.",
+ "abusefilter-edit-action-blocktalk": "स्वत:चे बोलपृष्ठ अद्यन्वित करण्यापासून वापरकर्त्याला / आयपी अड्रेसला परावृत्त करा.",
+ "abusefilter-edit-action-throttle": "केवळ विशीष्ट 'दर मर्यादा'(रेट लिमीट) ओलांडल्यासच, कृती करा",
+ "abusefilter-edit-action-rangeblock": "सदस्याचा जेथून उद्गम आहे, ती /16 रेंज प्रतिबंधित करा",
+ "abusefilter-edit-action-tag": "संपादनास, पुढील समीक्षणाकरता खूण करा",
+ "abusefilter-edit-throttle-count": "परवानगी द्यायच्या क्रियांची संख्या:",
+ "abusefilter-edit-throttle-period": "कालावधी",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|सेकंद}}",
+ "abusefilter-edit-warn-message": "पुर्व/सजगता सूचना देण्यासाठी व्यवस्था संदेश निवडा:",
+ "abusefilter-edit-warn-other": "इतर संदेश",
+ "abusefilter-edit-warn-other-label": "इतर संदेशाकरीता पृष्ठशीर्षक:\n:''(मिडियाविकि उपसर्गा शिवाय)''",
+ "abusefilter-edit-warn-actions": "कृती:",
+ "abusefilter-edit-warn-preview": "निवडलेल्या संदेशाची झलक",
+ "abusefilter-edit-warn-edit": "निवडलेला संदेश तयार करा/ संपादित करा",
+ "abusefilter-edit-tag-tag": "उपयोजन करावयाच्या [[Special:Tags|खूणपताका]](प्रतीओळ एक):",
+ "abusefilter-edit-denied": "सार्वजनीक दृश्यतेपासून झाकलेले असल्यामुळे या गाळणीचे विवरण आपण पाहू शकत नाही.",
+ "abusefilter-edit-main": "गाळणी प्राचले (पॅरामीटर्स)",
+ "abusefilter-edit-done-subtitle": "गाळणी संपादीत झाली",
+ "abusefilter-edit-done": "[[Special:AbuseFilter/$1|गाळणी $3]] ला केलेले [[Special:AbuseFilter/history/$1/diff/prev/$2|आपले बदल]] जतन करण्यात आलेले आहेत.",
+ "abusefilter-edit-badsyntax": "आपण नमूद केलेल्या गाळणीत वाक्यरचनेची त्रुटी आहे.\nपार्सरक्रियेची निष्पत्ती अशी होती: <pre>$1</pre>",
+ "abusefilter-edit-restricted": "आपणास या गाळणीच्या संपादनाची परवानगी नाही, कारण त्यात एक किंवा एकाधिक प्रतिबंधित क्रिया आहेत.प्रतिबंधित क्रिया जोडण्याची/संपादण्याची परवानगी असणाऱ्या सदस्यास, आपल्या वतीने, हा बदल करण्यास कृपया सांगा.",
+ "abusefilter-edit-viewhistory": "या गाळणीचा इतिहास पहा",
+ "abusefilter-edit-history": "इतिहास:",
+ "abusefilter-edit-check": "वाक्यविन्यास (सिंटॅक्स) तपासा",
+ "abusefilter-edit-badfilter": "आपण नमूद केलेली गाळणी अस्तीत्वात नाही",
+ "abusefilter-edit-revert": "गाळणीने केलेली कार्यवाही परत फिरवा(उलटवा)",
+ "abusefilter-edit-tools": "साधने:",
+ "abusefilter-edit-test-link": "ही गाळणी अलिकडील बदलांसोबत तपासा",
+ "abusefilter-edit-export": "ही गाळणी दुसऱ्या विकिस निर्यात करा",
+ "abusefilter-edit-syntaxok": "वाक्यरचनेच्या चुका आढळल्या नाहीत.",
+ "abusefilter-edit-syntaxerr": "वाक्यरचनेत चुक आढळली: $1",
+ "abusefilter-edit-bad-tags": "आपण प्रस्तुत केलेल्या एक किंवा एकाधिक खूणपताका अवैध आहेत.\n\nखूणपताका त्रोटक हव्यात, तसेच,त्यात 'स्पेशल कॅरेक्टर्स' नकोत.",
+ "abusefilter-edit-notallowed": "आपणास दुरुपयोग गाळणीच्या निर्मितीची अथवा संपादनाची परवानगी नाही.",
+ "abusefilter-edit-notallowed-global": "आपणास वैश्विक दुरुपयोग गाळणीच्या निर्मितीची अथवा संपादनाची परवानगी नाही.",
+ "abusefilter-edit-notallowed-global-custom-msg": "वैश्विक गाळणीसाठी परंपरागत संदेश सहाय्यीभूत नाहीत.",
+ "abusefilter-edit-builder-select": "सरकबाणाच्या(कर्सरच्या) जागी जोडण्याकरता सुयोग्य पर्याय निवडा",
+ "abusefilter-edit-builder-group-op-arithmetic": "अंकगणितीय कारके (अरीथमॅटीक ऑपरेटर्स)",
+ "abusefilter-edit-builder-op-arithmetic-addition": "अधिक (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "वजाबाकी (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "गुणीले (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "भागीले (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "बाकी (भागाकाराचीशिल्लक) (Modulo) (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "घातांक (चा 'क्ष'वा घात) Power (**)",
+ "abusefilter-edit-builder-group-op-comparison": "तौलनीक कारके (कंपॅरीझन ऑपरेटर्स)",
+ "abusefilter-edit-builder-op-comparison-equal": "च्या बरोबर (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "च्या बरोबर नाही (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "पेक्षा कमी (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "पेक्षा जास्त (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "च्या बरोबर किंवा पेक्षा कमी (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "च्या बरोबर किंवा पेक्षा जास्त (>=)",
+ "abusefilter-edit-builder-group-op-bool": "बूलीयन कारके (ऑपरेटर्स)",
+ "abusefilter-edit-builder-op-bool-not": "नाही (!)",
+ "abusefilter-edit-builder-op-bool-and": "आणि (&)",
+ "abusefilter-edit-builder-op-bool-or": "किंवा (|)",
+ "abusefilter-edit-builder-group-misc": "फुटकळ",
+ "abusefilter-edit-builder-misc-in": "स्ट्रींग मध्ये आहे (in)",
+ "abusefilter-edit-builder-misc-like": "पॅटर्न पद्धती जुळवते (like)",
+ "abusefilter-edit-builder-misc-rlike": "रिजेक्स regex जुळवते (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "रिजेक्स जुळवते, case insensitive (irlike)",
+ "abusefilter-edit-builder-misc-cond": "सशर्त (जर 'क्ष' तर 'य' अन्यथा 'झ')",
+ "abusefilter-edit-builder-group-funcs": "कार्यकलाप",
+ "abusefilter-edit-builder-funcs-length": "तंतू(स्ट्रिंग) लांबी (लांबी)",
+ "abusefilter-edit-builder-funcs-lcase": "खालची मुद्रधानी(लोअर केस)(lcase)",
+ "abusefilter-edit-builder-funcs-ucase": "वरची मुद्रधानी(अप्पर केस)(ucase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "संदिग्धता उत्पन्न करणारे कॅरेक्टर्स नियमित करा(ccnorm)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "द्विरुक्त (डबल) कॅरेक्टर्स हटवा(rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "विशेष कॅरेक्टर्स/एकूण कॅरेक्टर्स (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "नियमित (norm)",
+ "abusefilter-edit-builder-funcs-count": "तंतू(स्ट्रिंग) 'क्ष' तंतू 'य' मध्ये किती वेळा येतो त्याची संख्या(count)",
+ "abusefilter-edit-builder-funcs-rmspecials": "विशेष कॅरेक्टर्स हटवा(rmspecials)",
+ "abusefilter-edit-builder-funcs-substr": "सबस्ट्रिंग (substr)",
+ "abusefilter-edit-builder-group-vars": "चल घटक (व्हॅरिएबल्स)",
+ "abusefilter-edit-builder-vars-accountname": "खात्याचे नाव (खाते तयार केल्यावर)",
+ "abusefilter-edit-builder-vars-action": "कृती",
+ "abusefilter-edit-builder-vars-addedlines": "संपादनात जोडलेल्या ओळींचे क्षेत्र",
+ "abusefilter-edit-builder-vars-delta": "संपादनातील आकार बदल",
+ "abusefilter-edit-builder-vars-diff": "संपादन बदलाने झालेला एकुण फरक",
+ "abusefilter-edit-builder-vars-newsize": "नवीन पानाचा आकार",
+ "abusefilter-edit-builder-vars-oldsize": "पानाचा जुना आकार",
+ "abusefilter-edit-builder-vars-removedlines": "संपादनात वगळलेल्या ओळींचे क्षेत्र",
+ "abusefilter-edit-builder-vars-summary": "संपादन आढावा/ कारण",
+ "abusefilter-edit-builder-vars-article-id": "पान क्रमांक (पेज आयडी)",
+ "abusefilter-edit-builder-vars-article-ns": "पान नामविश्व",
+ "abusefilter-edit-builder-vars-article-text": "पानाचे शीर्षक (नामविश्वा शिवाय)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "पानाचे पूर्ण नाव",
+ "abusefilter-edit-builder-vars-article-views": "पानांची दृष्यता",
+ "abusefilter-edit-builder-vars-movedfrom-id": "स्थानांतराचे स्रोत पानाची पान ओळखण",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "स्थानांतराच्या स्रोत पानाचे नामविश्व",
+ "abusefilter-edit-builder-vars-movedfrom-text": "स्थानांतराच्या स्रोत पानाचे शीर्षक",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "स्थानांतराच्या स्रोत पानाचा पूर्ण मथळा",
+ "abusefilter-edit-builder-vars-movedto-id": "स्थानांतराच्या गंतव्य पानाची पान ओळखण",
+ "abusefilter-edit-builder-vars-movedto-ns": "स्थानांतराच्या गंतव्य पानाचे नामविश्व",
+ "abusefilter-edit-builder-vars-movedto-text": "स्थानांतराच्या गंतव्य पानाचे शीर्षक",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "स्थानांतराच्या गंतव्य पानाचा पूर्ण मथळा",
+ "abusefilter-edit-builder-vars-user-editcount": "सदस्य संपादन संख्या",
+ "abusefilter-edit-builder-vars-user-age": "सदस्य खात्याचे वय",
+ "abusefilter-edit-builder-vars-user-name": "सदस्य खात्याचे नाव",
+ "abusefilter-edit-builder-vars-user-rights": "सदस्यास असणारे अधिकार",
+ "abusefilter-edit-builder-vars-user-blocked": "सदस्य प्रतिबंधीत आहे काय",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "इमेल पत्ता सुनिश्चित केल्याची वेळ",
+ "abusefilter-edit-builder-vars-recent-contributors": "पानात योगदान केलेले मागील दहा सदस्य",
+ "abusefilter-edit-builder-vars-first-contributor": "या पानास योगदान करणारा पहिला सदस्य",
+ "abusefilter-edit-builder-vars-all-links": "नवीन मजकुरातील सर्व बाह्यदुवे",
+ "abusefilter-edit-builder-vars-added-links": "संपादनात जोडलेले सर्व बाह्यदुवे",
+ "abusefilter-edit-builder-vars-removed-links": "संपादनातून वगळलेले सर्व बाह्यदुवे",
+ "abusefilter-edit-builder-vars-old-text": "पानातील, संपादनपूर्व स्थितीतील,मागील विकिमजकुर",
+ "abusefilter-edit-builder-vars-new-text": "संपादनानंतरचा,नवा पृष्ठ मजकुर",
+ "abusefilter-edit-builder-vars-restrictions-edit": "पानाचा संपादन सुरक्षास्तर",
+ "abusefilter-edit-builder-vars-restrictions-move": "या पानाची सुरक्षा पातळी हलवा",
+ "abusefilter-edit-builder-vars-restrictions-create": "या पानास सुरक्षित करा",
+ "abusefilter-edit-builder-vars-restrictions-upload": "संचिकेच्या सुरक्षेचे अपभारण करा",
+ "abusefilter-edit-builder-vars-old-links": "संपादना पुर्वीचे ,पानातील दुवे",
+ "abusefilter-edit-builder-vars-minor-edit": "संपादनातील बदल छोटा म्हणून दर्शविला जातो आहे अथवा नाही",
+ "abusefilter-edit-builder-vars-file-sha1": "संचिका मजकुराचा SHA1 hash",
+ "abusefilter-edit-builder-vars-file-size": "संचिकेचा आकार बाईटमध्ये",
+ "abusefilter-edit-block-options": "अडवणूकीचे पर्याय",
+ "abusefilter-filter-log": "गाळण्यांचे अलिकडील बदल",
+ "abusefilter-history": "संपादन गाळणी #$1 करिता बदलांचा इतिहास",
+ "abusefilter-history-foruser": "$1 सदस्याचे बदल",
+ "abusefilter-history-hidden": "लपविलेले",
+ "abusefilter-history-enabled": "कार्यान्वित",
+ "abusefilter-history-global": "वैश्विक",
+ "abusefilter-history-timestamp": "वेळ",
+ "abusefilter-history-user": "सदस्य",
+ "abusefilter-history-public": "संपादन गाळणीचे सार्वजनिक विवरण",
+ "abusefilter-history-flags": "पताका",
+ "abusefilter-history-filter": "गाळणीचे नियम",
+ "abusefilter-history-comments": "टिप्पणी",
+ "abusefilter-history-actions": "क्रिया",
+ "abusefilter-history-backedit": "गाळणी संपादकाकडे परत",
+ "abusefilter-history-deleted": "वगळले",
+ "abusefilter-history-filterid": "गाळणी",
+ "abusefilter-history-select-legend": "परिष्कृत शोध",
+ "abusefilter-history-select-user": "सदस्य:",
+ "abusefilter-history-select-submit": "परिष्कृत",
+ "abusefilter-history-diff": "बदल",
+ "abusefilter-history-error-hidden": "आपण विनंती केलेली गाळणी दृश्य नाही,आपण तिचा इतिहास पाहू शकत नाही.",
+ "abusefilter-exception-unexpectedatend": "$1 अक्षरगटीकेपाशी अनपेक्षीत \"$2\".",
+ "abusefilter-exception-expectednotfound": "$1 वर्णात $2 हवे होते,सापडले नाही(त्याएवजी $3 $4 सापडले)",
+ "abusefilter-exception-unrecognisedkeyword": "वर्ण $1 येथे अनोळखी कूटशब्द $2.",
+ "abusefilter-exception-unexpectedtoken": "वर्ण $1 वर($2 प्रकारचे) अनपेक्षित टोकन \"$3\".",
+ "abusefilter-exception-unclosedstring": "$1 वर्णावर सुरू झालेला अ-बंद तंतू.",
+ "abusefilter-exception-invalidoperator": "$1 वर्णावर अवैध चालक \"$2\".",
+ "abusefilter-exception-unrecognisedtoken": "$1 वर्णावर अनोळखी बिल्ला \"$2\".",
+ "abusefilter-exception-noparams": "$1 वर्णावर \"$2\" क्रियेसाठी काहीच प्राचले दिलेली नाहीत.",
+ "abusefilter-exception-dividebyzero": "$1 वर्णावर $2 ला शून्याने विभाजण्याचा अवैधानिक प्रयत्न.",
+ "abusefilter-exception-unrecognisedvar": "$1 वर्णावर अनोळखी चल $2.",
+ "abusefilter-exception-overridebuiltin": "$1 वर्णावर अनुबंधित चलांची अवैध चढाई \"$2\".",
+ "abusefilter-action-tag": "खूणपताका",
+ "abusefilter-action-throttle": "प्ररोध (थ्रॉटल)",
+ "abusefilter-action-warn": "सूचीत करा",
+ "abusefilter-action-block": "प्रतिबंधित करा",
+ "abusefilter-action-degroup": "गटांमधून वगळा",
+ "abusefilter-action-disallow": "नामंजुर",
+ "abusefilter-revert-title": "गाळणी $1 ने केलेले सर्व बदल उलटवा",
+ "abusefilter-revert-intro": "हे आवेदन दुरुपयोग गाळणीच्या, गाळणी $1 ने केलेले सर्व बदल उलटविण्यास मदत करते.\nहे साधन वापरतांना कृपया खबरदारी बाळगा.",
+ "abusefilter-revert-preview-item": "$1: $2 ने $4 वर $3 केले .\nउलवटण्यासाठीची क्रिया: $5 ($6)",
+ "abusefilter-revert-search-legend": "दुरुपयोग गाळणीतील उलटविण्यासाठीच्या क्रिया निवडा",
+ "abusefilter-revert-periodstart": "कालावधी सुरू:",
+ "abusefilter-revert-periodend": "कालावधी समाप्त:",
+ "abusefilter-revert-search": "क्रिया निवडा",
+ "abusefilter-revert-filter": "गाळणी:",
+ "abusefilter-revert-preview-intro": "दुरुपयोग गाळणीने केलेली कार्यवाही जी खाली नमूद आहे, या क्रियेद्वारे उलटविल्या जाईल. \n\nकृपया त्याची सावधानतापुर्वक तपासणी करा व आपली निवड नक्की करण्यासाठी \"{{int:abusefilter-revert-confirm}}\" हे टिचका.",
+ "abusefilter-revert-confirm": "नक्की करा",
+ "abusefilter-revert-success": "आपण दुरुपयोग गाळणीच्या [[Special:AbuseFilter/$1|गाळणी $2]]ने केलेले सर्व बदल आपण उलटविले आहेत.",
+ "abusefilter-revert-reason": "दुरुपयोग गाळणीच्या, गाळणी $1 ने केलेले सर्व क्रिया स्वयंचलितरित्या उलटवा.\nदिलेले कारण:$2",
+ "abusefilter-revert-reasonfield": "कारण:",
+ "abusefilter-test": "मागील संपादनांवर गाळणीचे परिक्षण करा",
+ "abusefilter-test-intro": "खालच्या पेटीत टाकलेली गाळणी, मागील $1 {{PLURAL:$1|बदलावर|बदलांवर}} तपासण्यास, हे पान आपणास परवानगी देते. \nसध्याची गाळणी प्रभारण(लोड) करण्यास, त्या गाळणीची ओळखण(आयडी) खालील पेटीत टंका व \"{{int:abusefilter-test-load}}\" कळीवर टिचकी मारा.",
+ "abusefilter-test-legend": "संपादन गाळणी चाचणी",
+ "abusefilter-test-load-filter": "संपादनगाळणी क्रमांक प्रभारण करा:",
+ "abusefilter-test-submit": "चाचणी",
+ "abusefilter-test-load": "भारण करा",
+ "abusefilter-test-user": "सदस्याचे बदल:",
+ "abusefilter-test-period-start": "तारखे नंतर केलेले बदल:",
+ "abusefilter-test-period-end": "तारखे आधी केलेले बदल:",
+ "abusefilter-test-page": "बदल तपासावयाच्या पानाचे शीर्षक:",
+ "abusefilter-test-shownegative": "संपादन गाळणीशी जुळत नसलेले बदल दाखवा",
+ "abusefilter-test-syntaxerr": "आपण टाकलेल्या गाळणीच्या नावात वाक्यरचना दोष आहे.\"{{int:abusefilter-edit-check}}\" कळीवर टिचकल्यावर याचे पूर्ण स्पष्टीकरण मिळेल.",
+ "abusefilter-test-badtitle": "आपण टाकलेले लेखनाव अवैध आहे.त्यात एक किंवा एकाधिक असे वर्ण आहेत जे शीर्षकात वापरल्या जात नाहीत.",
+ "abusefilter-changeslist-examine": "तपासा",
+ "abusefilter-examine": "प्रत्येक बदल तपासा",
+ "abusefilter-examine-intro": "हे पान, आपणास दुरुपयोग गाळणीने उत्पादित नेमक्या बदलाचे 'व्हॅरिएबल्स' तपासण्यास व गाळणीत त्याच्या चाचणीस परवानगी देते.",
+ "abusefilter-examine-legend": "बदल निवडा",
+ "abusefilter-examine-user": "सदस्य:",
+ "abusefilter-examine-title": "पृष्ठ शीर्षक:",
+ "abusefilter-examine-submit": "शोध",
+ "abusefilter-examine-vars": "या बदलाबाबतची निर्मित अस्थिरके",
+ "abusefilter-examine-test": "या बदलाची गाळणीद्वारे चाचणी करा",
+ "abusefilter-examine-test-button": "गाळणीची चाचणी करा",
+ "abusefilter-examine-match": "या बदलास गाळणीने आत्मसात केले.",
+ "abusefilter-examine-nomatch": "या बदलास गाळणीने त्यागले आहे.",
+ "abusefilter-examine-syntaxerror": "गाळणीत अवैध वाक्यरचना आहे.",
+ "abusefilter-examine-notfound": "आपण विनंती केलेला बदल सापडला नाही.",
+ "abusefilter-examine-incompatible": "आपण विनंती केलेला बदल दुरुपयोग गाळणीद्वारे समर्थित नाही",
+ "abusefilter-examine-noresults": "आपण नमूद केलेल्या शोध प्राचलांद्वारे काहीच निकाल मिळाला नाही.",
+ "abusefilter-topnav": "'''संपादन गाळणी सुचालन'''",
+ "abusefilter-topnav-home": "स्वगृह",
+ "abusefilter-topnav-test": "बॅच परिक्षण",
+ "abusefilter-topnav-examine": "मागील संपादने तपासा",
+ "abusefilter-topnav-log": "संपादन गाळणीने टिपलेल्या नोंदी",
+ "abusefilter-topnav-tools": "गणकदोष निवारक साधने",
+ "abusefilter-topnav-import": "संपादन गाळणी आयात करा",
+ "abusefilter-log-name": "गाळणीने टिपलेल्या नोंदी",
+ "abusefilter-log-header": "हा क्रमालेख संपादन गाळण्यात केलेल्या बदलांचे संक्षिप्त विवरण दाखवतो.\nपूर्ण विवरणा करिता ,संपादन गाळण्यांमधील अलिकडील बदलांची [[Special:AbuseFilter/history| हि यादी]] पाहा.",
+ "abusefilter-log-noresults": "निकाल नाहीत",
+ "abusefilter-diff-title": "आवृत्त्यांच्या दरम्यानचा फरक",
+ "abusefilter-diff-item": "बाब",
+ "abusefilter-diff-version": "आवृत्ती $1 पासून {{GENDER:$3|कडून}} $2",
+ "abusefilter-diff-info": "मूलभूत माहिती",
+ "abusefilter-diff-pattern": "गाळणीच्या शर्ती",
+ "abusefilter-diff-invalid": "विनंती केलेल्या आवृत्त्या शेंदण्यात असफल",
+ "abusefilter-diff-backhistory": "गाळणी इतिहासाकडे परत",
+ "abusefilter-diff-prev": "जुने बदल",
+ "abusefilter-diff-next": "नविनतम बदल",
+ "abusefilter-import-submit": "विदा(डाटा) आयात",
+ "abusefilter-group-default": "अविचल (डिफॉल्ट)",
+ "apihelp-abusefilterunblockautopromote-description": "अपशब्द गाळणीच्या घटनेद्वारे सदस्यास स्वयंचलित बढती मिळण्यासाठी त्यास अप्रतिबंधित करते.",
+ "apihelp-abusefilterunblockautopromote-param-user": "आपणास अप्रतिबंधित करावयाचे असलेल्या सदस्याचे सदस्यनाव.",
+ "apihelp-abusefilterunblockautopromote-example-1": "[[User:Example]]चे स्वयंबढतीमुळे त्यावर असलेला प्रतिबंध हटवा",
+ "apihelp-query+abusefilters-description": "अपशब्द गाळणीचे वर्णन दाखवा.",
+ "apihelp-query+abusefilters-example-1": "सक्षम व सार्वजनिक केलेल्या गाळण्यांची यादी करा",
+ "apihelp-query+abusefilters-example-2": "गाळण्यांबाबत काही तपशिल दाखवा",
+ "apihelp-query+abuselog-description": "यापैकी एका अपशब्द गाळणीने पकडलेल्या घटना दाखवा."
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/ms.json b/www/wiki/extensions/AbuseFilter/i18n/ms.json
new file mode 100644
index 00000000..30f5d9d1
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/ms.json
@@ -0,0 +1,402 @@
+{
+ "@metadata": {
+ "authors": [
+ "Anakmalaysia",
+ "Aurora",
+ "Aviator",
+ "Diagramma Della Verita",
+ "Izzudin",
+ "Kurniasan",
+ "Zamwan",
+ "Matma Rex",
+ "Jeluang Terluang"
+ ]
+ },
+ "abusefilter-desc": "Mengenakan heuristik automatik pada suntingan.",
+ "abusefilter": "Tatarajah penapis salah guna",
+ "abuselog": "Log penyalahgunaan",
+ "abusefilter-intro": "Selamat datang ke antara muka pengurusan Penapis Salah Guna.\nAbuse Filter ialah mekanisme perisian automatik untuk mengenakan swakaji automatik kepada semua tindakan.\nAntara muka ini menunjukkan senarai penapis yang ditakrif, dan membenarkan mereka diubahsuai.",
+ "abusefilter-mustbeeditor": "Untuk tujuan keselamatan, hanya pengguna dengan hak mengubahsuai penapis salah guna boleh menggunakan antara muka ini.",
+ "abusefilter-warning": "'''Amaran''': Tindakan ini telah dikenalpasti secara automatik sebagai berbahaya.\nSuntingan yang tidak membina akan dibalikkan dengan segera, dan suntingan tidak membina yang berat atau berulang-ulang akan menyebabkan akaun atau alamat IP anda disekat.\nJika anda percaya bahawa tindakan ini membina, sila tekan Simpan sekali lagi untuk mengesahkankannya.\nPenerangan ringkas tentang peraturan penyalahgunaan yang sepadan dengan tindakan anda ialah: $1",
+ "abusefilter-disallowed": "Tindakan ini telah dikenalpasti secara automatik sebagai berbahaya, dan oleh itu tidak dibenarkan.\nJika anda percaya bahawa tindakan anda itu membina, sila hubungi penyelia dan beritahu mereka mengenai perkara yang anda cuba lakukan.\nSatu penerangan ringkas tentang peraturan penyalahgunaan yang sepadan dengan tindakan anda ialah: $1",
+ "abusefilter-blocked-display": "Tindakan ini secara automatik telah dikenalpasti sebagai berbahaya,\ndan anda telah dilarang dari meneruskannya.\nSebagai tambahan, untuk melindungi {{SITENAME}}, akaun pengguna anda, dan semua alamat IP berkaitan telah disekat daripada menyunting.\nJika terdapat kesalahan, sila hubungi penyelia.\nPenerangan ringkas mengenai penyalahan peraturan yang anda lakukan ialah: $1",
+ "abusefilter-degrouped": "Tindakan ini secara automatik telah dikenalpasti sebagai berbahaya.\nAkibatnya, ia telah dilarang, dan, memandangkan akaun anda disyaki sebagai berkompromi, segala hak anda dimansuhkan.\nJika terdapat apa-apa kesilapan, sila hubungi para birokrat bersama penerangan berkenaan tindakan ini, dan hak anda akan dipulihkan.\nPenerangan ringkas mengenai penyalahan peraturan yang anda lakukan ialah: $1",
+ "abusefilter-autopromote-blocked": "Tindakan ini secara automatik telah dikenalpasti sebagai berbahaya, dan telah ditolak.\nSebagai tindakan keselamatan, beberapa keistimewaan yang diluluskan secara rutin untuk membuat akaun telah dimansuhkan buat sementara dari akaun anda.\nKeterangan ringkas tentang penyalahan peraturan yang anda lakukan ialah: $1",
+ "abusefilter-blocker": "Penapis salah guna",
+ "abusefilter-blockreason": "Disekat secara automatik oleh penapis salah guna.\nKeterangan peraturan: $1",
+ "abusefilter-degroupreason": "Hak telah digugurkan secara automatik oleh penapis salah guna.\nKeterangan peraturan: $1",
+ "abusefilter-accountreserved": "Nama akaun ini telah disimpan untuk kegunaan penapis salah guna.",
+ "right-abusefilter-modify": "Mengubah suai penapis salah guna",
+ "right-abusefilter-view": "Melihat penapis salah guna",
+ "right-abusefilter-log": "Melihat log penyalahgunaan",
+ "right-abusefilter-log-detail": "Melihat entri lanjut log penyalahgunaan",
+ "right-abusefilter-private": "Melihat data rahsia dalam log penyalahgunaan",
+ "right-abusefilter-modify-restricted": "Mengubah suai penapis salah guna dengan tindakan-tindakan terhad",
+ "right-abusefilter-revert": "Membalikkan semua perubahan oleh penapis salah guna tertentu",
+ "right-abusefilter-view-private": "Melihat penapis salah guna yang ditanda rahsia",
+ "right-abusefilter-log-private": "Melihat log masukan penapis salah guna yang ditanda rahsia",
+ "right-abusefilter-hide-log": "Menyembunyikan entri dalam log penyalahgunaan",
+ "right-abusefilter-hidden-log": "Melihat entri log penyalahgunaan yang disembunyikan",
+ "right-abusefilter-modify-global": "Wujudkan atau ubah suai penapis salah guna sejagat",
+ "action-abusefilter-modify": "mengubah suai penapis salah guna",
+ "action-abusefilter-view": "melihat penapis salah guna",
+ "action-abusefilter-log": "melihat log penyalahgunaan",
+ "action-abusefilter-log-detail": "melihat entri lanjut log penyalahgunaan",
+ "action-abusefilter-private": "melihat data rahsia dalam log penyalahgunaan",
+ "action-abusefilter-modify-restricted": "mengubah suai penapis salah guna dengan tindakan-tindakan terhad",
+ "action-abusefilter-revert": "membalikkan semua perubahan oleh penapis salah guna tertentu",
+ "action-abusefilter-view-private": "melihat penapis salah guna yang ditanda rahsia",
+ "abusefilter-log": "Log penapis salah guna",
+ "abusefilter-log-summary": "Log ini menunjukkan senarai bagi semua tindakan yang ditangkap oleh penapis.",
+ "abusefilter-log-search": "Cari dalam log penyalahgunaan",
+ "abusefilter-log-search-user": "Pengguna:",
+ "abusefilter-log-search-filter": "ID penapis (asingkan dengan tanda paip \"|\"):",
+ "abusefilter-log-search-title": "Tajuk:",
+ "abusefilter-log-search-wiki": "Wiki:",
+ "abusefilter-log-search-submit": "Cari",
+ "abusefilter-log-entry": "$1: $2 mencetuskan penapis salah guna, melakukan tindakan \"$3\" pada $4.\nTindakan diambil: $5;\nHuraian penapis: $6",
+ "abusefilter-log-entry-withdiff": "$1: $2 telah mencetuskan penapis salah guna dengan melakukan tindakan \"$3\" di $4.\nTindakan diambil: $5;\nKeterangan penapis: $6 ($7)",
+ "abusefilter-log-detailedentry-meta": "$1: $2 mencetuskan $3, melakukan tindakan \"$4\" pada $5.\nTindakan diambil: $6;\nHuraian penapis: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "penapis sejagat $1",
+ "abusefilter-log-detailedentry-local": "penapis $1",
+ "abusefilter-log-detailslink": "butiran",
+ "abusefilter-log-diff": "beza",
+ "abusefilter-log-hidelink": "ubah kebolehlihatan",
+ "abusefilter-log-details-legend": "Butiran untuk entri log $1",
+ "abusefilter-log-details-var": "Pemboleh ubah",
+ "abusefilter-log-details-val": "Nilai",
+ "abusefilter-log-details-vars": "Parameter tindakan",
+ "abusefilter-log-details-private": "Data peribadi",
+ "abusefilter-log-details-ip": "Alamat IP pelaku",
+ "abusefilter-log-noactions": "tiada",
+ "abusefilter-log-details-diff": "Perubahan akibat suntingan",
+ "abusefilter-log-linkoncontribs": "log penyalahgunaan",
+ "abusefilter-log-linkoncontribs-text": "Log penyalahgunaan bagi pengguna ini",
+ "abusefilter-log-hidden": "(entri disorok)",
+ "abusefilter-log-hidden-implicit": "(disorokkan kerana semakan telah dihapuskan)",
+ "abusefilter-log-cannot-see-details": "Anda tiada kebenaran untuk melihat butiran entri ini.",
+ "abusefilter-log-details-hidden": "Anda tidak dapat melihat butiran bagi entri ini kerana ia disembunyikan daripada pandangan awam.",
+ "abusefilter-log-private-not-included": "Sekurang-kurangnya satu ID penapis yang anda nyatakan adalah peribadi (tidak terbuka kepada umum). Oleh sebab anda dilarang melihat perincian penapis peribadi, maka penapis-penapis berkenaan tidak dicari.",
+ "abusefilter-log-hide-legend": "Sorokkan entri log",
+ "abusefilter-log-hide-id": "ID entri log:",
+ "abusefilter-log-hide-hidden": "Sorokkan entri ini daripada tatapan umum",
+ "abusefilter-log-hide-reason": "Sebab:",
+ "abusefilter-log-hide-forbidden": "Anda tiada kebenaran untuk menyorokkan entri log penyalahgunaan.",
+ "abusefilter-logentry-suppress": "\"[[$1]]\" disorokkan",
+ "abusefilter-logentry-unsuppress": "\"[[$1]]\" didedahkan",
+ "logentry-abusefilter-hit": "$1 mencetuskan $4, melakukan tindakan \"$5\" pada $3. Tindakan yang diambil: $6 ($7)",
+ "abusefilter-management": "Pengurusan penapis salah guna",
+ "abusefilter-list": "Semua penapis",
+ "abusefilter-list-id": "ID penapis",
+ "abusefilter-list-status": "Status",
+ "abusefilter-list-public": "Keterangan umum",
+ "abusefilter-list-consequences": "Akibat",
+ "abusefilter-list-visibility": "Keterlihatan",
+ "abusefilter-list-hitcount": "Bilangan hit",
+ "abusefilter-list-edit": "Sunting",
+ "abusefilter-list-details": "Butiran",
+ "abusefilter-list-limit": "Bilangan sehalaman:",
+ "abusefilter-list-lastmodified": "Kali terakhir diubah",
+ "abusefilter-list-group": "Kumpulan penapis",
+ "abusefilter-hidden": "Rahsia",
+ "abusefilter-unhidden": "Umum",
+ "abusefilter-enabled": "Dihidupkan",
+ "abusefilter-deleted": "Dihapuskan",
+ "abusefilter-disabled": "Dimatikan",
+ "abusefilter-hitcount": "$1 hit",
+ "abusefilter-new": "Cipta penapis baru",
+ "abusefilter-return": "Pulang ke pengurusan penapis",
+ "abusefilter-status-global": "Sedunia",
+ "abusefilter-list-options": "Pilihan",
+ "abusefilter-list-options-deleted": "Penapis-penapis yang dihapuskan:",
+ "abusefilter-list-options-deleted-only": "Tunjukkan penapis yang dihapuskan sahaja",
+ "abusefilter-list-options-deleted-hide": "Sorokkan penapis yang dihapuskan",
+ "abusefilter-list-options-deleted-show": "Sertakan penapis yang dihapuskan",
+ "abusefilter-list-options-scope": "Paparkan penapis:",
+ "abusefilter-list-options-scope-local": "Peraturan setempat sahaja",
+ "abusefilter-list-options-scope-global": "Peraturan sejagat sahaja",
+ "abusefilter-list-options-scope-all": "Peraturan setempat dan sejagat",
+ "abusefilter-list-options-disabled": "Penapis yang dimatikan:",
+ "abusefilter-list-options-hidedisabled": "Sorokkan penapis yang dimatikan",
+ "abusefilter-list-options-submit": "Kemas kini",
+ "abusefilter-tools-text": "Inilah alat-alatan yang mungkin berguna untuk merumuskan dan menyahpepijatkan penapis salah guna.",
+ "abusefilter-tools-expr": "Penguji ungkapan",
+ "abusefilter-tools-submitexpr": "Buat penilaian",
+ "abusefilter-tools-reautoconfirm": "Pulihkan status sah automatik",
+ "abusefilter-tools-reautoconfirm-user": "Pengguna:",
+ "abusefilter-tools-reautoconfirm-submit": "Sahkan semula secara automatik",
+ "abusefilter-reautoconfirm-none": "Pengguna ini belum digantung status sah automatik{{GENDER:$1|nya|nya|nya}}.",
+ "abusefilter-reautoconfirm-notallowed": "Anda tidak dibenarkan memulihkan status sah automatik.",
+ "abusefilter-reautoconfirm-done": "Status sah automatik akaun telah dipulihkan",
+ "abusefilter-status": "$2 ($3%) daripada $1 tindakan terkini telah mencapai had syarat $4, sementara $5 ($6%) lagi telah berpadan dengan salah satu penapis yang dihidupkan sekarang.",
+ "abusefilter-edit": "Menyunting penapis salah guna",
+ "abusefilter-edit-subtitle": "Menyunting penapis $1",
+ "abusefilter-edit-subtitle-new": "Membuat penapis",
+ "abusefilter-edit-oldwarning": "<strong>Anda sedang menyunting versi lama bagi penapis ini.\nStatistik yang dipetik adalah bagi versi terkini bagi penapis ini.\nJika anda menyimpan perubahan anda, anda akan membatalkan segala perubahan sejak semakan yang anda sunting itu.</strong> &bull;\n[[Special:AbuseFilter/history/$2|Kembali ke sejarah penapis ini]].",
+ "abusefilter-edit-status-label": "Statistik:",
+ "abusefilter-edit-status": "Penapis ini telah memadani $2 ($3%) daripada $1 tindakan terkini.",
+ "abusefilter-edit-status-profile": "Penapis ini telah memadani $2 ($3%) daripada $1 tindakan terkini.\nSecara puratanya, masa berjalannya ialah $4ms, dan ia mengambil $5 syarat daripada had syarat.",
+ "abusefilter-edit-new": "Penapis baru",
+ "abusefilter-edit-save": "Simpan penapis",
+ "abusefilter-edit-id": "ID penapis:",
+ "abusefilter-edit-description": "Keterangan:\n:''(boleh dibaca umum)''",
+ "abusefilter-edit-group": "Kumpulan penapis:",
+ "abusefilter-edit-flags": "Bendera:",
+ "abusefilter-edit-enabled": "Hidupkan penapis ini",
+ "abusefilter-edit-deleted": "Tandai sebagai dihapuskan",
+ "abusefilter-edit-hidden": "Sorokkan butiran penapis ini daripada tatapan umum",
+ "abusefilter-edit-global": "Penapis sejagat",
+ "abusefilter-edit-rules": "Syarat:",
+ "abusefilter-edit-notes": "Nota-Nota:",
+ "abusefilter-edit-lastmod": "Kali terakhir penapis diubahsuai:",
+ "abusefilter-edit-lastmod-text": "$1, oleh $2",
+ "abusefilter-edit-hitcount": "Hit penapis:",
+ "abusefilter-edit-consequences": "Tindakan yang diambil apabila ada padanan",
+ "abusefilter-edit-action-warn": "Cetuskan tindakan ini selepas memberi pengguna amaran",
+ "abusefilter-edit-action-disallow": "Hindari pengguna ini daripada melakukan tindakan berkenaan",
+ "abusefilter-edit-action-blockautopromote": "Tarik balik status sah automatik pengguna",
+ "abusefilter-edit-action-degroup": "Gugurkan pengguna ini daripada semua kumpulan istimewa",
+ "abusefilter-edit-action-block": "Sekat pengguna dan/atau alamat IP daripada menyunting",
+ "abusefilter-edit-action-throttle": "Cetuskan tindakan hanya jika pengguna melampaui had kadar",
+ "abusefilter-edit-action-rangeblock": "Sekat julat /16 dari mana pengguna berasal",
+ "abusefilter-edit-action-tag": "Tag suntingan ini untuk penyemakan selanjutnya",
+ "abusefilter-edit-throttle-count": "Bilangan tindakan untuk dibenarkan:",
+ "abusefilter-edit-throttle-period": "Tempoh masa",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|saat|saat}}",
+ "abusefilter-edit-throttle-groups": "Pendikit kumpulan ikut:\n:''(satu sebaris, gabungkan dengan tanda koma)''",
+ "abusefilter-edit-warn-message": "Pesanan sistem yang digunakan untuk amaran:",
+ "abusefilter-edit-warn-other": "Pesanan lain",
+ "abusefilter-edit-warn-other-label": "Nama laman pesanan lain:\n:''(tanpa awalan MediaWiki)''",
+ "abusefilter-edit-warn-actions": "Tindakan:",
+ "abusefilter-edit-warn-preview": "Pralihat pesanan yang dipilih",
+ "abusefilter-edit-warn-edit": "Cipta/Sunting pesanan yang dipilih",
+ "abusefilter-edit-tag-tag": "Tag untuk digunakan (satu sebaris):",
+ "abusefilter-edit-denied": "Anda tidak boleh melihat butiran bagi penapis ini kerana ia disembunyikan daripada pandangan awam.",
+ "abusefilter-edit-main": "Parameter penapis",
+ "abusefilter-edit-done-subtitle": "Penapis disunting",
+ "abusefilter-edit-done": "[[Special:AbuseFilter/history/$1/diff/prev/$2|Pengubahan anda]] pada [[Special:AbuseFilter/$1|penapis $3]] telah disimpan.",
+ "abusefilter-edit-badsyntax": "Terdapat ralat sintaks dalam penapis yang anda nyatakan.\nOutput dari parser itu ialah: <pre>$1</pre>",
+ "abusefilter-edit-restricted": "Anda tidak boleh menyunting penapis ini kerana ia mengandungi tindakan yang tersekat.\nSila minta pengguna yang ada kebenaran untuk menambahkan tindakan tersekat supaya membuat perubahan untuk anda.",
+ "abusefilter-edit-viewhistory": "Lihat sejarah penapis ini",
+ "abusefilter-edit-history": "Sejarah:",
+ "abusefilter-edit-check": "Semak sintaks",
+ "abusefilter-edit-badfilter": "Penapis yang anda nyatakan tidak wujud",
+ "abusefilter-edit-revert": "Batalkan tindakan yang diambil oleh penapis ini",
+ "abusefilter-edit-tools": "Alatan:",
+ "abusefilter-edit-test-link": "Uji penapis ini terhadap suntingan terkini",
+ "abusefilter-edit-export": "Eksport penapis ini ke wiki yang lain",
+ "abusefilter-edit-syntaxok": "Tiada kesalahan sintaks yang dikesan.",
+ "abusefilter-edit-syntaxerr": "Kesalahan sintaks dikesan: $1",
+ "abusefilter-edit-bad-tags": "Ada tag-tag yang anda nyatakan itu yang tidak sah.\nTag sepatutnya ringkas dan tidak mengandungi aksara khas.",
+ "abusefilter-edit-notallowed": "Anda tidak dibenarkan mencipta atau menyunting penapis salah guna",
+ "abusefilter-edit-notallowed-global": "Anda tidak dibenarkan mencipta atau menyunting penapis salah guna sejagat",
+ "abusefilter-edit-notallowed-global-custom-msg": "Pesanan amaran tersuai tidak disokong untuk penapis global",
+ "abusefilter-edit-builder-select": "Pilih satu pilihan untuk ditambahkan pada kursor",
+ "abusefilter-edit-builder-group-op-arithmetic": "Pengoperasi aritmetik",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Campur (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Tolak (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Darab (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Bahagi (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Modulo (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Kuasa (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Operator perbandingan",
+ "abusefilter-edit-builder-op-comparison-equal": "Sama dengan (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Tidak sama dengan (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "Lebih kecil daripada (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Lebih besar daripada (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Lebih kecil daripada atau sama dengan (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Lebih besar daripada atau sama dengan (>=)",
+ "abusefilter-edit-builder-group-op-bool": "Operator Boole",
+ "abusefilter-edit-builder-op-bool-not": "Tak (!)",
+ "abusefilter-edit-builder-op-bool-and": "Dan (&)",
+ "abusefilter-edit-builder-op-bool-or": "Atau (|)",
+ "abusefilter-edit-builder-group-misc": "Pelbagai",
+ "abusefilter-edit-builder-misc-in": "terkandung dalam rentetan (in)",
+ "abusefilter-edit-builder-misc-like": "Sepadan dengan pola (like)",
+ "abusefilter-edit-builder-misc-rlike": "Sepadan dengan ungkapan nalar (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "Sepadan dengan ungkapan nalar, tak kira besar kecil huruf (irlike)",
+ "abusefilter-edit-builder-misc-contains": "Rentetan kiri mengandungi rentetan kanan (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "Harfiah rentetan (\"\")",
+ "abusefilter-edit-builder-misc-tern": "Pengoperasi tetiga (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "Bersyarat (if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "Fungsi",
+ "abusefilter-edit-builder-funcs-length": "Panjang rentetan (length)",
+ "abusefilter-edit-builder-funcs-lcase": "Huruf kecil (lcase)",
+ "abusefilter-edit-builder-funcs-ucase": "Ke huruf besar (ucase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "Normalkan aksara yang mengelirukan (ccnorm)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "Buang aksara-aksara berulang (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "Aksara khas / jumlah aksara (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "Normalkan (norm)",
+ "abusefilter-edit-builder-funcs-count": "Bilangan kehadiran rentetan X dalam rentetan Y (count)",
+ "abusefilter-edit-builder-funcs-rcount": "Bilangan kehadiran ungkapan nalar X dalam rentetan Y (count)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "Buang jarak putih (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "Buang aksara khas (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "Adakah IP dalam julat? (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "Cari subrentatan dalam rentetan (contains_any)",
+ "abusefilter-edit-builder-funcs-substr": "Subrentetan (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "Kedudukan subrentetan dalam rentetan (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "Ganti subrentetan dengan rentetan (str_replace)",
+ "abusefilter-edit-builder-funcs-rescape": "Rentetan lepasan sebagai harafiah dalam ungkapan nalar (rescape)",
+ "abusefilter-edit-builder-funcs-set_var": "Pembolehubah set (set_var)",
+ "abusefilter-edit-builder-group-vars": "Pemboleh ubah",
+ "abusefilter-edit-builder-vars-accountname": "Nama akaun (ketika akaun dibuka)",
+ "abusefilter-edit-builder-vars-timestamp": "Cop waktu perubahan Unix",
+ "abusefilter-edit-builder-vars-action": "Tindakan",
+ "abusefilter-edit-builder-vars-addedlines": "Baris yang diisikan dalam suntingan",
+ "abusefilter-edit-builder-vars-delta": "Perubahan saiz dalam suntingan",
+ "abusefilter-edit-builder-vars-diff": "Laman perbezaan bersatu tentang perubahan daripada suntingan",
+ "abusefilter-edit-builder-vars-newsize": "Saiz laman baru",
+ "abusefilter-edit-builder-vars-oldsize": "Saiz laman lama",
+ "abusefilter-edit-builder-vars-removedlines": "Baris yang dipadamkan dalam suntingan",
+ "abusefilter-edit-builder-vars-summary": "Ringkasan/sebab suntingan",
+ "abusefilter-edit-builder-vars-article-id": "ID laman",
+ "abusefilter-edit-builder-vars-article-ns": "Ruang nama laman",
+ "abusefilter-edit-builder-vars-article-text": "Tajuk laman (tanpa ruang nama)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Tajuk penuh laman",
+ "abusefilter-edit-builder-vars-article-views": "Kunjungan halaman",
+ "abusefilter-edit-builder-vars-movedfrom-id": "ID laman sumber",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "Ruang nama laman sumber",
+ "abusefilter-edit-builder-vars-movedfrom-text": "Tajuk laman sumber",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "Tajuk penuh laman sumber",
+ "abusefilter-edit-builder-vars-movedto-id": "ID laman sasaran",
+ "abusefilter-edit-builder-vars-movedto-ns": "Ruang nama laman sasaran",
+ "abusefilter-edit-builder-vars-movedto-text": "Tajuk laman sasaran",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "Tajuk penuh laman sasaran",
+ "abusefilter-edit-builder-vars-user-editcount": "Jumlah suntingan pengguna",
+ "abusefilter-edit-builder-vars-user-age": "Umur akaun pengguna",
+ "abusefilter-edit-builder-vars-user-name": "Nama akaun pengguna",
+ "abusefilter-edit-builder-vars-user-groups": "Kumpulan (termasuk yang tersirat) yang disertai pengguna",
+ "abusefilter-edit-builder-vars-user-rights": "Hak-hak yang ada pada pengguna",
+ "abusefilter-edit-builder-vars-user-blocked": "Sama ada pengguna disekat",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "Waktu pengesahan alamat e-mel",
+ "abusefilter-edit-builder-vars-recent-contributors": "10 pengguna terakhir yang menyumbang kepada laman",
+ "abusefilter-edit-builder-vars-first-contributor": "Pengguna pertama yang menyumbang kepada laman",
+ "abusefilter-edit-builder-vars-all-links": "Semua pautan luar dalam teks baru",
+ "abusefilter-edit-builder-vars-added-links": "Semua pautan luar yang dibubuh dalam suntingan",
+ "abusefilter-edit-builder-vars-removed-links": "Semua pautan luar yang dipadamkan dalam suntingan",
+ "abusefilter-edit-builder-vars-old-text": "Teks wiki laman lama, sebelum disunting",
+ "abusefilter-edit-builder-vars-new-text": "Teks wiki laman baru, selepas disunting",
+ "abusefilter-edit-builder-vars-new-pst": "Wikiteks halaman baru, prasimpan diubah",
+ "abusefilter-edit-builder-vars-new-text-stripped": "Teks laman baru tanpa sebarang penanda",
+ "abusefilter-edit-builder-vars-new-html": "Sumber HTML terhurai bagi semakan baru",
+ "abusefilter-edit-builder-vars-restrictions-edit": "Tahap perlindungan penyuntingan laman",
+ "abusefilter-edit-builder-vars-restrictions-move": "Tahap perlindungan peralihan laman",
+ "abusefilter-edit-builder-vars-restrictions-create": "Wujudkan perlindungan laman ini",
+ "abusefilter-edit-builder-vars-restrictions-upload": "Muat naik perlindungan fail ini",
+ "abusefilter-edit-builder-vars-old-text-stripped": "Teks laman lama tanpa sebarang penanda",
+ "abusefilter-edit-builder-vars-old-links": "Pautan dalam laman sebelum disunting",
+ "abusefilter-edit-builder-vars-old-html": "Teks wiki laman lama yang dihurai dalam HTML",
+ "abusefilter-edit-builder-vars-minor-edit": "Sama ada suntingan itu ditandai sebagai kecil",
+ "abusefilter-edit-builder-vars-file-sha1": "Cincangan SHa1 kandungan fail",
+ "abusefilter-edit-builder-vars-file-size": "Saiz fail (bait)",
+ "abusefilter-filter-log": "Perubahan penapis terkini",
+ "abusefilter-history": "Sejarah perubahan Penapis Salah Guna #$1",
+ "abusefilter-history-foruser": "Perubahan oleh $1",
+ "abusefilter-history-hidden": "Tersorok",
+ "abusefilter-history-enabled": "Dihidupkan",
+ "abusefilter-history-global": "Sejagat",
+ "abusefilter-history-timestamp": "Waktu",
+ "abusefilter-history-user": "Pengguna",
+ "abusefilter-history-public": "Keterangan penapis umum",
+ "abusefilter-history-flags": "Bendera",
+ "abusefilter-history-filter": "Hukum penapis",
+ "abusefilter-history-comments": "Ulasan",
+ "abusefilter-history-actions": "Tindakan",
+ "abusefilter-history-backedit": "Kembali ke editor penapis",
+ "abusefilter-history-deleted": "Dihapuskan",
+ "abusefilter-history-filterid": "Penapis",
+ "abusefilter-history-select-legend": "Carian spesifik",
+ "abusefilter-history-select-user": "Pengguna:",
+ "abusefilter-history-select-submit": "Perincikan",
+ "abusefilter-history-diff": "Perubahan",
+ "abusefilter-history-error-hidden": "Penapis yang anda mohon itu disorokkan, jadi anda tidak boleh melihat sejarahnya.",
+ "abusefilter-exception-unexpectedatend": "\"$2\" tak terduga pada aksara $1.",
+ "abusefilter-exception-expectednotfound": "$2 yang diduga pada aksara $1 tidak dijumpai (sebaliknya $4 $3 dijumpai).",
+ "abusefilter-exception-unrecognisedkeyword": "Kata kunci tidak dikenali $2 pada aksara $1.",
+ "abusefilter-exception-unexpectedtoken": "Token tak dijangka \"$3\" (jenis $2) di aksara $1.",
+ "abusefilter-exception-unclosedstring": "Rentetan tak tertutup yang bermula pada aksara $1.",
+ "abusefilter-exception-invalidoperator": "Pengendali tidak sah \"$2\" pada aksara $1.",
+ "abusefilter-exception-unrecognisedtoken": "Token tidak dikenali $2 pada aksara $1.",
+ "abusefilter-exception-noparams": "Tiada parameter yang diberikan kepada fungsi \"$2\" pada aksara $1.",
+ "abusefilter-exception-dividebyzero": "Cubaan yang terlarang untuk membahagikan $2 dengan sifar pada aksara $1.",
+ "abusefilter-exception-unrecognisedvar": "Pembolehubah tidak dikenali $2 pada aksara $1.",
+ "abusefilter-exception-notenoughargs": "Tidak cukup hujah untuk fungsi $2 yang dipanggil pada aksara $1.\n$3 hujah dijangka, $4 yang dapat",
+ "abusefilter-exception-regexfailure": "Ralat dalam ungkapan nalar \"$3\" di aksara $1: \"$2\"",
+ "abusefilter-exception-overridebuiltin": "Sampukan pembolehubah bina dalam \"$2\" yang terlarang pada aksara $1.",
+ "abusefilter-exception-outofbounds": "Butir senarai $2 tak wujud (saiz senarai = $3) diminta pada aksara $1.",
+ "abusefilter-exception-notlist": "Memohon butir tatasusunan daripada bukan tatasusunan pada aksara $1.",
+ "abusefilter-action-tag": "Tag",
+ "abusefilter-action-throttle": "Dikit",
+ "abusefilter-action-warn": "Ingatkan",
+ "abusefilter-action-blockautopromote": "Autopromosi sekatan",
+ "abusefilter-action-block": "Sekat",
+ "abusefilter-action-degroup": "Buang daripada kumpulan",
+ "abusefilter-action-rangeblock": "Sekat julat",
+ "abusefilter-action-disallow": "Larang",
+ "abusefilter-revert-title": "Balikkan semua perubahan oleh penapis $1",
+ "abusefilter-revert-intro": "Borang ini membolehkan anda membalikkan semua perubahan yang dibuat oleh penapis salah guna disebabkan penapis $1.\nSila berhati-hati ketika menggunakan alat ni.",
+ "abusefilter-revert-preview-item": "$1: $2 melakukan $3 di $4.\nTindakan yang hendak dibatalkan: $5 ($6)",
+ "abusefilter-revert-search-legend": "Pilih tindakan penapis salah guna yang ingin dibalikkan",
+ "abusefilter-revert-periodstart": "Tempoh bermula:",
+ "abusefilter-revert-periodend": "Tempoh tamat:",
+ "abusefilter-revert-search": "Pilih tindakan",
+ "abusefilter-revert-filter": "Penapis:",
+ "abusefilter-revert-preview-intro": "Berikut ialah tindakan yang diambil oleh penapis salah guna yang akan diterbalikkan oleh tindakan ini.\nSila buat semakan dengan teliti, kemudian klik \"{{int:abusefilter-revert-confirm}}\" untuk mengesahkan pemilihan anda.",
+ "abusefilter-revert-confirm": "Sahkan",
+ "abusefilter-revert-success": "Anda telah membatalkan semua tindakan yang diambil oleh penapis salah guna atas sebab [[Special:AbuseFilter/$1|penapis $2]].",
+ "abusefilter-revert-reason": "Pembatalan automatik semua tindakan yang diambil oleh penapis salah guna atas sebab penapis $1.\nSebab yang diberikan: $2",
+ "abusefilter-revert-reasonfield": "Sebab:",
+ "abusefilter-test": "Uji penapis terhadap suntingan lalu",
+ "abusefilter-test-intro": "Laman ini membolehkan anda untuk menyemak penapis yang dimasukkan dalam petak di bawah dengan $1 perubahan terakhir.\nUntuk memuatkan penapis yang sedia ada, taipkan ID penapisnya ke dalam petak di bawah ruangan teks penyuntingan, kemudian klik butang \"{{int:abusefilter-test-load}}\".",
+ "abusefilter-test-legend": "Ujian penapis",
+ "abusefilter-test-load-filter": "ID penapis muatan:",
+ "abusefilter-test-submit": "Uji",
+ "abusefilter-test-load": "Muatkan",
+ "abusefilter-test-user": "Perubahan oleh pengguna:",
+ "abusefilter-test-period-start": "Perubahan yang dibuat selepas:",
+ "abusefilter-test-period-end": "Perubahan yang dibuat sebelum:",
+ "abusefilter-test-page": "Perubahan pada laman:",
+ "abusefilter-test-shownegative": "Tunjukkan perubahan yang tidak sepadan dengan penapis",
+ "abusefilter-test-syntaxerr": "Penapis yang anda isikan itu ada ralat sintaks.\nAnda boleh menerima penjelasan penuh dengan mengklik butang \"{{int:abusefilter-edit-check}}\".",
+ "abusefilter-test-badtitle": "Tajuk halaman yang anda isikan itu tidak sah. Ia mungkin mengandungi aksara yang tidak boleh digunakan dalam tajuk.",
+ "abusefilter-changeslist-examine": "periksa",
+ "abusefilter-examine": "Periksa perubahan satu demi satu",
+ "abusefilter-examine-intro": "Laman ini membolehkan anda memeriksa pembolehubah yang dijana oleh Penapis Salah Guna untuk satu perubahan tertentu, dan mengujinya dengan penapis.",
+ "abusefilter-examine-legend": "Pilih perubahan",
+ "abusefilter-examine-diff": "URL perbezaan:",
+ "abusefilter-examine-user": "Pengguna:",
+ "abusefilter-examine-title": "Tajuk laman:",
+ "abusefilter-examine-submit": "Cari",
+ "abusefilter-examine-vars": "Pembolehubah yang dijana untuk perubahan ini",
+ "abusefilter-examine-test": "Uji perubahan ini dengan penapis",
+ "abusefilter-examine-test-button": "Uji penapis",
+ "abusefilter-examine-match": "Penapis memadani perubahan ini.",
+ "abusefilter-examine-nomatch": "Penapis tidak memadani perubahan ini.",
+ "abusefilter-examine-syntaxerror": "Sintaks penapis ini tidak sah.",
+ "abusefilter-examine-notfound": "Perubahan yang dimohon tidak dapat dicari.",
+ "abusefilter-examine-incompatible": "Perubahan yang dimohon tidak disokong oleh Penapis Salah Guna",
+ "abusefilter-examine-noresults": "Tiada hasil carian dijumpai untuk parameter carian yang diberikan.",
+ "abusefilter-topnav": "'''Pandu arah Penapis Salah Guna'''",
+ "abusefilter-topnav-home": "Laman Utama",
+ "abusefilter-topnav-test": "Ujian kelompok",
+ "abusefilter-topnav-examine": "Periksa semakan dahulu",
+ "abusefilter-topnav-log": "Log Penyalahgunaan",
+ "abusefilter-topnav-tools": "Alatan penyahpepijatan",
+ "abusefilter-topnav-import": "Import penapis",
+ "abusefilter-log-name": "Log Penapis Salah Guna",
+ "abusefilter-log-header": "Log ini menunjukkan ringkasan perubahan yang dibuat pada penapis.\nUntuk butiran lanjut, lihat [[Special:AbuseFilter/history|senarai]] perubahan penapis terkini.",
+ "abusefilter-log-noresults": "Tiada hasil",
+ "abusefilter-diff-title": "Perbezaan antara versi",
+ "abusefilter-diff-item": "Butiran",
+ "abusefilter-diff-version": "Versi dari $1 {{GENDER:$3|oleh}} $2",
+ "abusefilter-diff-info": "Maklumat asas",
+ "abusefilter-diff-pattern": "Syarat penapis",
+ "abusefilter-diff-invalid": "Versi yang dimohon tidak dapat diambil",
+ "abusefilter-diff-backhistory": "Kembali ke sejarah penapis",
+ "abusefilter-diff-prev": "Suntingan sebelumnya",
+ "abusefilter-diff-next": "Suntingan berikutnya",
+ "abusefilter-import-intro": "Anda boleh menggunakan antara muka ini untuk mengimport penapis dari wiki lain.\nDalam wiki sumber, klik \"{{int:abusefilter-edit-export}}\" di bawah \"{{int:abusefilter-edit-tools}}\" di antara muka penyuntingan.\nSalin dari ruangan teks yang muncul, kemudian tampalkannya ke dalam ruangan teks ini, kemudian klik \"{{int:abusefilter-import-submit}}\".",
+ "abusefilter-import-submit": "Import data",
+ "abusefilter-group-default": "Asali",
+ "abusefilter-http-error": "Berlakunya ralat HTTP: $1."
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/mt.json b/www/wiki/extensions/AbuseFilter/i18n/mt.json
new file mode 100644
index 00000000..e44c9c6c
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/mt.json
@@ -0,0 +1,376 @@
+{
+ "@metadata": {
+ "authors": [
+ "Chrisportelli",
+ "Giangian15",
+ "Roderick Mallia",
+ "Leli Forte",
+ "Matma Rex"
+ ]
+ },
+ "abusefilter-desc": "Tapplika ewristika awtomatika lill-modifiki",
+ "abusefilter": "Konfigurazzjoni tal-filtru tal-abbuż",
+ "abuselog": "Reġistru tal-abbuż",
+ "abusefilter-intro": "Merħba fl-interfaċċa tal-filtru tal-abbuż.\nIl-filtru tal-abbuż huwa mekkaniżmu ta' softwer awtomatiku li japplika ewristiċi awtomatiċi lil kull azzjoni.\nDin l-interfaċċa turi lista ta' filtri partikolari, u tħalli li jiġu modifikati.",
+ "abusefilter-mustbeeditor": "Għal raġunijiet ta' sigurtà, huma biss l-utenti bid-dritt li jimmodifikaw il-filtri tal-abbuż li jistgħu jużaw din l-interfaċċa.",
+ "abusefilter-warning": "'''Attenzjoni''': Din l-azzjoni ġiet awtomatikament identifikata bħala ta' ħsara.\nIl-modifiki mhux kostruttivi jiġu mħassra mill-ewwel, u l-kontribuzzjonijiet ħżiena jew mhux kostruttivi ripetuti jwasslu biex il-kont jew l-indirizz IP tiegħek jiġi imblukkat.\nJekk temmen li l-modifika tiegħek hija kostruttiva, tista' terġa' tissottomettiha sabiex tikkonfermaha.\nDin deskrizzjoni qasira tar-regola tal-abbuż li tapplika fil-każ tal-azzjoni tiegħek: $1",
+ "abusefilter-disallowed": "Din l-azzjoni ġiet awtomatikament identifikata bħala ta' ħsara, u għalhekk ma tħallietx tiġi esegwita.\nJekk temmen li l-modifika tiegħek hija kostruttiva, informa wieħed mill- amministraturi dwar xi ppruvajt tagħmel.\nDin deskrizzjoni qasira tar-regola tal-abbuż li tapplika fil-każ tal-azzjoni tiegħek: $1",
+ "abusefilter-blocked-display": "Din l-azzjoni ġiet awtomatikament identifikata bħala ta' ħsara, u għalhekk ma tħallietx tiġi esegwita.\nBarra minn hekk, sabiex tiġi protetta {{SITENAME}}, il-kont tiegħek u l-indirizzi IP kollha assoċjati ġew imblukkati milli jagħmlu modifiki.\nJekk dan ġara bi żball, ikkuntatja minnufih lil amministratur.\nDeskrizzjoni qasira tar-regola tal-abbuż li ġiet vjolata hi: $1",
+ "abusefilter-degrouped": "Din l-azzjoni ġiet awtomatikament identifikata bħala ta' ħsara.\nL-azzjoni għalhekk ma tħallietx tiġi esegwita u minħabba li hemm suspett li l-kont tiegħek huwa kompromess, id-drittijiet tiegħek ġew revokati.\nJekk dan ġara bi żball, ikkuntatja lil burokrata bi spjegazzjoni tal-azzjonijiet tiegħek, u d-drittijiet tiegħek jistgħu jiġu mogħtija lura.\nDeskrizzjoni qasira tar-regola tal-abbuż li ġiet vjolata hi: $1",
+ "abusefilter-autopromote-blocked": "Din l-azzjoni ġiet awtomatikament identifikata bħala ta' ħsara, u għalhekk ma tħallietx tiġi esegwita.\nBarra minnhekk, bħala miżura ta' sigurtà ġew imneħħija mill-kont tiegħek, b'mod temporanju, xi privileġġi li normalment jingħataw lil kontijiet stabbiliti.\nDeskrizzjoni qasira tar-regola tal-abbuż li ġiet vjolata hi: $1",
+ "abusefilter-blocker": "Filtru tal-abbuż",
+ "abusefilter-blockreason": "Imblukkat awtomatikament mill-filtru tal-abbuż.\nDeskrizzjoni tar-regola korrispondenti: $1",
+ "abusefilter-degroupreason": "Drittijiet awtomatikament imneħħija mill-filtru tal-abbuż.\nDeskrizzjoni tar-regola: $1",
+ "abusefilter-accountreserved": "Dan l-kont huwa riservat għall-użu mill-filtru tal-abbuż.",
+ "right-abusefilter-modify": "Jimmodifika l-filtri tal-abbuż",
+ "right-abusefilter-view": "Jara l-filtri tal-abbuż",
+ "right-abusefilter-log": "Jara r-reġistru tal-abbuż",
+ "right-abusefilter-log-detail": "Jara d-daħliet dettalji tar-reġistru tal-abbuż",
+ "right-abusefilter-private": "Jara d-dati privati fir-reġistru tal-abbuż",
+ "right-abusefilter-modify-restricted": "Jimmodifika l-filtri tal-abbuż b'azzjonijiet ristretti",
+ "right-abusefilter-revert": "Iħassar il-modifiki kollha minn filtru tal-abbuż partikulari",
+ "right-abusefilter-view-private": "Jara l-filtri tal-abbuż immarkati bħala privati",
+ "right-abusefilter-log-private": "Jara d-daħliet tar-reġistru tal-abbuż immarkati bħala privati",
+ "right-abusefilter-hide-log": "Jaħbi daħliet fir-reġistru tal-abbuż",
+ "right-abusefilter-hidden-log": "Jara daħliet moħbijiet fir-reġistru tal-abbuż",
+ "right-abusefilter-modify-global": "Oħloq jew immodifika filtri globali kontra l-abbużi",
+ "action-abusefilter-modify": "timmodifika l-filtri tal-abbuż",
+ "action-abusefilter-view": "tara l-filtri tal-abbuż",
+ "action-abusefilter-log": "tara r-reġistru tal-abbuż",
+ "action-abusefilter-log-detail": "tara d-daħliet dettalji tar-reġistru tal-abbuż",
+ "action-abusefilter-private": "tara d-dati privati fir-reġistru tal-abbuż",
+ "action-abusefilter-modify-restricted": "timmodifika l-filtri tal-abbuż b'azzjonijiet ristretti",
+ "action-abusefilter-revert": "tħassar kull modifika minn filtru tal-abbuż partikulari",
+ "action-abusefilter-view-private": "tara l-filtri tal-abbuż immarkati bħala privati",
+ "abusefilter-log": "Reġistru tal-filtru tal-abbuż",
+ "abusefilter-log-summary": "Dan ir-reġistru juri lista ta' kull azzjoni maqbuda mill-filtri.",
+ "abusefilter-log-search": "Fittex ir-reġistru tal-abbużi",
+ "abusefilter-log-search-user": "Utent:",
+ "abusefilter-log-search-filter": "ID tal-filtru (issepara b'linji weqfin):",
+ "abusefilter-log-search-title": "Titlu:",
+ "abusefilter-log-search-wiki": "Wiki:",
+ "abusefilter-log-search-submit": "Fittex",
+ "abusefilter-log-entry": "$1: $2 attivat filtru tal-abbuż bl-azzjoni \"$3\" fuq $4.\nAzzjonijiet meħuda: $5;\nDeskrizzjoni tal-filtru: $6",
+ "abusefilter-log-entry-withdiff": "$1:$2 attivat filtru tal-abbuż bl-azzjoni \"$3\" fuq $4.\nAzzjonijiet meħuda:$5;\nDeskrizzjoni tal-filtru: $6($7)",
+ "abusefilter-log-detailedentry-meta": "$1: $2 attivat $3 bl-azzjoni \"$4\" fuq $5.\nAzzjonijiet meħuda: $6;\nDeskrizzjoni tal-filtru: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "filtru globali $1",
+ "abusefilter-log-detailedentry-local": "filtru $1",
+ "abusefilter-log-detailslink": "dettalji",
+ "abusefilter-log-diff": "diff",
+ "abusefilter-log-hidelink": "irranġa l-viżibilità",
+ "abusefilter-log-details-legend": "Dettalji għad-daħla fir-reġistru $1",
+ "abusefilter-log-details-var": "Varjabbli",
+ "abusefilter-log-details-val": "Valur",
+ "abusefilter-log-details-vars": "Parametri tal-azzjoni",
+ "abusefilter-log-details-private": "Informazzjoni riservata",
+ "abusefilter-log-details-ip": "Indirizz IP minn fejn oriġina",
+ "abusefilter-log-noactions": "l-ebda",
+ "abusefilter-log-details-diff": "Modifiki li saru",
+ "abusefilter-log-linkoncontribs": "reġistru tal-abbuż",
+ "abusefilter-log-linkoncontribs-text": "Reġistru tal-abbuż għal dan l-utent",
+ "abusefilter-log-hidden": "(daħla moħbija)",
+ "abusefilter-log-hidden-implicit": "(moħbi minħabba li r-reviżjoni ġiet imħassra)",
+ "abusefilter-log-cannot-see-details": "M'għandekx il-permessi sabiex tara d-dettalji ta' din id-daħla fir-reġistru.",
+ "abusefilter-log-details-hidden": "Ma tistax tara d-dettalji ta' din id-daħla minħabba li ġiet moħbija mill-pubbliku.",
+ "abusefilter-log-private-not-included": "Wieħed jew iżjed mill-filtri tal-ID li speċifikajt huma privati. Billi ma tistax tara d-dettalji tal-filtri privati, dawn il-filtri ma tfittxewx.",
+ "abusefilter-log-hide-legend": "Aħbi d-daħla tar-reġistru",
+ "abusefilter-log-hide-id": "ID tad-daħla tar-reġistru:",
+ "abusefilter-log-hide-hidden": "Aħbi din id-daħla mid-dehra pubblika",
+ "abusefilter-log-hide-reason": "Raġuni:",
+ "abusefilter-log-hide-forbidden": "M'għandekx il-permess li taħbi daħliet tar-reġistru tal-abbużi",
+ "abusefilter-logentry-suppress": "aħbi \"[[$1]]\"",
+ "abusefilter-logentry-unsuppress": "uri \"[[$1]]\"",
+ "logentry-abusefilter-hit": "$1 attiva $4, esegwixxa l-azzjoni \"$5\" fuq $3. Azzjonijiet meħuda: $6 ($7)",
+ "abusefilter-management": "Ġestjoni tal-filtru tal-abbuż",
+ "abusefilter-list": "Il-filtri kollha",
+ "abusefilter-list-id": "ID tal-filtru",
+ "abusefilter-list-status": "Stat",
+ "abusefilter-list-public": "Deskrizzjoni pubblika",
+ "abusefilter-list-consequences": "Konsegwenzi",
+ "abusefilter-list-visibility": "Viżibilità",
+ "abusefilter-list-hitcount": "Numru ta' korrispondenzi",
+ "abusefilter-list-edit": "Immodifika",
+ "abusefilter-list-details": "Dettalji",
+ "abusefilter-list-limit": "Numru għal kull paġna:",
+ "abusefilter-list-lastmodified": "L-aħħar modifika",
+ "abusefilter-list-group": "Grupp ta' filtri",
+ "abusefilter-hidden": "Privata",
+ "abusefilter-unhidden": "Pubblika",
+ "abusefilter-enabled": "Attivata",
+ "abusefilter-deleted": "Imħassra",
+ "abusefilter-disabled": "Diżattivata",
+ "abusefilter-hitcount": "{{PLURAL:$1|korrispondenza waħda|$1 korrispondenzi}}",
+ "abusefilter-new": "Oħloq filtru ġdid",
+ "abusefilter-return": "Irritorna għall-ġestjoni tal-filtri",
+ "abusefilter-status-global": "Globali",
+ "abusefilter-list-options": "Għażliet",
+ "abusefilter-list-options-deleted": "Filtri mħassra:",
+ "abusefilter-list-options-deleted-only": "Uri biss filtri mħassra:",
+ "abusefilter-list-options-deleted-hide": "Aħbi filtri mħassra",
+ "abusefilter-list-options-deleted-show": "Inkludi filtri mħassra",
+ "abusefilter-list-options-scope": "Uri filtri minn:",
+ "abusefilter-list-options-scope-local": "Wiki lokali",
+ "abusefilter-list-options-scope-global": "Regoli globali",
+ "abusefilter-list-options-disabled": "Filtri diżattivati:",
+ "abusefilter-list-options-hidedisabled": "Aħbi filtri diżattivati",
+ "abusefilter-list-options-submit": "Aġġorna",
+ "abusefilter-tools-text": "Hawnhekk hawn xi għodda li jistgħu jkunu utli fil-bini u l-verifika tal-filtri kontra l-abbużi.",
+ "abusefilter-tools-expr": "Tester tal-espressjonijiet",
+ "abusefilter-tools-submitexpr": "Evalwa",
+ "abusefilter-tools-reautoconfirm": "Reġġa' lura l-istat ta' awtokonfermat",
+ "abusefilter-tools-reautoconfirm-user": "Utent:",
+ "abusefilter-tools-reautoconfirm-submit": "Awtokkonferma mill-ġdid",
+ "abusefilter-reautoconfirm-none": "L-istat ta' awtokonfermat tal-utent ma ġiex sospiż.",
+ "abusefilter-reautoconfirm-notallowed": "M'għandekx il-permess li tirrestawra l-istat ta' awtokonfermat.",
+ "abusefilter-reautoconfirm-done": "L-istat ta' awtokonferma tal-kont ġie restawrat",
+ "abusefilter-status": "Mill-aħħar {{PLURAL:$1|azzjoni|$1 azzjonijiet}}, $2 ($3%) {{PLURAL:$2|laħaq il-|laħqu l-}}limitu ta' $4 kundizzjonijiet, u $5 ($6%) {{PLURAL:$5|attiva|attivaw}} wieħed mill-filtri li huma attivi fil-mument.",
+ "abusefilter-edit": "Editjar tal-filtru kontra l-abbużi",
+ "abusefilter-edit-subtitle": "Modifika tal-filtru $1",
+ "abusefilter-edit-subtitle-new": "Ħolqien ta' filtru",
+ "abusefilter-edit-oldwarning": "<strong>Qiegħed timmodifika verżjoni antika ta' dan il-filtru.\nL-istatistika kwotata huma għall-aktar verżjoni riċenti ta' dan il-filtru.\nJekk issalva l-modifiki tiegħek, dawn se jieħdu post dawk li huma preżenti issa.</strong> &bull;\n[[Special:AbuseFilter/history/$2|Irritorna lejn il-kronoloġija tal-filtru]].",
+ "abusefilter-edit-status-label": "Statistika:",
+ "abusefilter-edit-status": "Mill-aħħar {{PLURAL:$1|azzjoni|$1 azzjonijiet}}, dan il-filtru sab {{PLURAL:$2|korrispondenza waħda|$2 korrispondenzi}} ($3%).",
+ "abusefilter-edit-status-profile": "Mill-aħħar {{PLURAL:$1|azzjoni|$1 azzjonijiet}}, dan il-filtru sab {{PLURAL:$2|korrispondenza waħda|$2 korrispondenzi}} ($3%).\nIl-ħin medju ta' eżekuzzjoni hu ta' $4ms, u jikkonsma {{PLURAL:$5|kundizzjoni waħda|$5 kundizzjonijiet}} tal-limitu ta' kundizzjonijiet.",
+ "abusefilter-edit-new": "Filtru ġdid",
+ "abusefilter-edit-save": "Salva l-filtru",
+ "abusefilter-edit-id": "ID tal-filtru:",
+ "abusefilter-edit-description": "Deskrizzjoni:\n:''(tidher pubblikament)''",
+ "abusefilter-edit-group": "Grupp ta' filtri:",
+ "abusefilter-edit-flags": "Bnadar:",
+ "abusefilter-edit-enabled": "Attiva dan il-filtru",
+ "abusefilter-edit-deleted": "Immarka bħala mħassar",
+ "abusefilter-edit-hidden": "Aħbi dettalji ta' dan il-filtru mill-pubbliku",
+ "abusefilter-edit-global": "Filtru globali",
+ "abusefilter-edit-rules": "Kundizzjonijiet:",
+ "abusefilter-edit-notes": "Noti:",
+ "abusefilter-edit-lastmod": "L-aħħar modifika tal-filtru:",
+ "abusefilter-edit-lastmod-text": "$1 minn $2",
+ "abusefilter-edit-hitcount": "Numru ta' viżitaturi tal-filtru:",
+ "abusefilter-edit-consequences": "Azzjonijiet meħuda meta l-kondizzjonijiet qabblu",
+ "abusefilter-edit-action-warn": "Attiva dawn l-azzjonijiet meta tagħti twissija lill-utent",
+ "abusefilter-edit-action-disallow": "Ipprevjeni l-utent milli jagħmel din l-azzjoni in kwistjoni",
+ "abusefilter-edit-action-blockautopromote": "Irrevoka l-istat ta' awtokonfermat tal-utent",
+ "abusefilter-edit-action-degroup": "Neħħi l-utent mill-gruppi kollha privileġġjati",
+ "abusefilter-edit-action-block": "Imblokka l-utent u/jew l-indirizz IP mill-immodifikar",
+ "abusefilter-edit-action-throttle": "Attiva l-azzjonijiet biss jekk l-utent jaqbeż limitu definit minn qabel",
+ "abusefilter-edit-action-rangeblock": "Imblokka l-intervall /16 minn fejn l-utent ġej",
+ "abusefilter-edit-action-tag": "Immarka din il-modifika għal aktar verifika",
+ "abusefilter-edit-throttle-count": "Numru ta' azzjonijiet permessi:",
+ "abusefilter-edit-throttle-period": "Perjodu ta' żmien:",
+ "abusefilter-edit-throttle-seconds": "{{PLURAL:$1|sekonda|$1 sekondi}}",
+ "abusefilter-edit-throttle-groups": "Kriterji għar-raggruppament għad-dewmien:\n:''(waħda għal kull linja, imwaħħda bil-virgoli)''",
+ "abusefilter-edit-warn-message": "Messaġġ tas-sistema li għandu jiġu wżat bħala avviż:",
+ "abusefilter-edit-warn-other": "Messaġ ieħor",
+ "abusefilter-edit-warn-other-label": "Isem tal-paġna tal-messaġġ l-ieħor:\n:''(mingħajr il-prefiss MediaWiki)''",
+ "abusefilter-edit-warn-actions": "Azzjonijiet:",
+ "abusefilter-edit-warn-preview": "Dehra proviżorja tal-messaġġ magħżul",
+ "abusefilter-edit-warn-edit": "Oħloq/Immodifika l-messaġġ magħżul",
+ "abusefilter-edit-tag-tag": "Tikketti xi żżid (waħda kull linja):",
+ "abusefilter-edit-denied": "Ma tistax tara d-dettalji ta' dan il-filtru billi huma moħbija mill-pubbliku.",
+ "abusefilter-edit-main": "Parametri tal-filtru",
+ "abusefilter-edit-done-subtitle": "Filtru modifikat",
+ "abusefilter-edit-done": "[[Special:AbuseFilter/history/$1/diff/prev/$2|Il-bidliet li għamilt]] lill- [[Special:AbuseFilter/$1|filtru $3]] ġew issejvjati.",
+ "abusefilter-edit-badsyntax": "Hemm żball fis-sintassi fil-filtru li speċifikajt.\nIr-riżultat tal-parser kien: <pre>$1</pre>",
+ "abusefilter-edit-restricted": "Ma tistax timmodifika dan il-filtru minħabba li għandu xi azzjonijiet riservati.\nJekk jogħġbok staqsi utent bil-permessi li jista' jżid azzjonijiet restritti sabiex jagħmel il-modifika li tixtieq.",
+ "abusefilter-edit-viewhistory": "Ara l-kronoloġija ta' dan il-filtru",
+ "abusefilter-edit-history": "Kronoloġija:",
+ "abusefilter-edit-check": "Iċċekkja s-sintassi",
+ "abusefilter-edit-badfilter": "Il-filtru li speċifikajt ma jeżistix",
+ "abusefilter-edit-revert": "Reġġa' lura l-azzjonijiet meħuda minn dan il-filtru",
+ "abusefilter-edit-tools": "Għodda:",
+ "abusefilter-edit-test-link": "Ittestja dan il-filtru kontra modifiki riċenti",
+ "abusefilter-edit-export": "Esporta dan il-filtru fuq wiki oħra",
+ "abusefilter-edit-syntaxok": "L-ebda żball fis-sintassi ma nstab.",
+ "abusefilter-edit-syntaxerr": "Instab żball fis-sintassi: $1",
+ "abusefilter-edit-bad-tags": "Tikketta li speċifikjat jew aktar mhijiex valida.\nIt-tikketti jridu jkunu qosra, u ma jistgħux jinkludu karattri speċjali.",
+ "abusefilter-edit-notallowed": "M'għandekx il-permessi li toħloq jew timmodifika filtri tal-abbuż",
+ "abusefilter-edit-notallowed-global": "M'intix awtorizzat li toħloq jew timmodifika l-filtri kontra l-abbuż",
+ "abusefilter-edit-notallowed-global-custom-msg": "Il-messaġġi ta' avviż personalizzati mhumiex supportati mill-filtri globali.",
+ "abusefilter-edit-builder-select": "Agħżel opzjoni sabiex iżżidha fil-pożizzjoni tal-cursor",
+ "abusefilter-edit-builder-group-op-arithmetic": "Operaturi aritmetiċi",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Għadd (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Tnaqqis (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Multiplikazzjoni (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Diviżjoni (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Modulo (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Potenza (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Operaturi ta' konfront",
+ "abusefilter-edit-builder-op-comparison-equal": "Ugwali għal (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Mhux ugwali għal (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "Anqas minn (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Akbar minn (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Inqas minn jew ugwali għal (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Ikbar minn jew ugwali għal (>=)",
+ "abusefilter-edit-builder-group-op-bool": "Operaturi ''boolean''",
+ "abusefilter-edit-builder-op-bool-not": "Not loġiku (!)",
+ "abusefilter-edit-builder-op-bool-and": "And loġiku (&)",
+ "abusefilter-edit-builder-op-bool-or": "Or loġiku (|)",
+ "abusefilter-edit-builder-group-misc": "Mixxellanji",
+ "abusefilter-edit-builder-misc-like": "Taqbel ma' mudell (like)",
+ "abusefilter-edit-builder-misc-rlike": "Taqbel ma' regex (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "Taqbel ma regex, insensittiva għal ittri kapitali jew żgħar (irlike)",
+ "abusefilter-edit-builder-misc-tern": "Operatur ternarju (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "Kondizzjonali (if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "Funzjonijiet",
+ "abusefilter-edit-builder-funcs-lcase": "Ikkonverti għal ittri żgħar (lcase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "Innormalizza karattri konfondibbli (ccnorm)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "Neħħi karattri doppji (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "Karattri speċjali fuq karattri totali (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "Innormalizza (norm)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "Neħħi l-ispazju abjad (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "Neħħi karattri speċjali (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "L-indirizz IP jinsab fl-intervall? (ip_in_range)",
+ "abusefilter-edit-builder-funcs-set_var": "Issettja varjabbli (set_var)",
+ "abusefilter-edit-builder-group-vars": "Varjabbli",
+ "abusefilter-edit-builder-vars-accountname": "Isem tal-kont (dakinhar tal-kreazzjoni)",
+ "abusefilter-edit-builder-vars-timestamp": "Timestamp UNIX tal-modifika",
+ "abusefilter-edit-builder-vars-action": "Azzjoni",
+ "abusefilter-edit-builder-vars-addedlines": "Linji miżjuda mill-modifika",
+ "abusefilter-edit-builder-vars-delta": "Bidla fid-daqs wara l-modifika",
+ "abusefilter-edit-builder-vars-diff": "Modifiki magħmula taħt il-format unidiff",
+ "abusefilter-edit-builder-vars-newsize": "Daqs ġdid tal-paġna",
+ "abusefilter-edit-builder-vars-oldsize": "Daqs qadim tal-paġna",
+ "abusefilter-edit-builder-vars-removedlines": "Linji mneħħija mill-modifika",
+ "abusefilter-edit-builder-vars-summary": "Taqsira/raġuni",
+ "abusefilter-edit-builder-vars-article-id": "ID tal-paġna",
+ "abusefilter-edit-builder-vars-article-ns": "Spazju tal-ismijiet tal-paġna",
+ "abusefilter-edit-builder-vars-article-text": "Titlu tal-paġna (mingħajr spazju tal-ismijiet)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Isem sħiħ tal-paġna",
+ "abusefilter-edit-builder-vars-article-views": "Dehriet tal-paġna",
+ "abusefilter-edit-builder-vars-movedfrom-id": "ID tal-paġna oriġinali tat-tmexxija",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "Spazju tal-ismijiet tal-paġna oriġinali tat-tmexxija",
+ "abusefilter-edit-builder-vars-movedfrom-text": "Titlu tal-paġna oriġinali tat-tmexxija",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "Titlu sħiħ tal-paġna oriġinali tat-tmexxija",
+ "abusefilter-edit-builder-vars-movedto-id": "ID tal-paġna ta' destinazzjoni tat-tmexxija",
+ "abusefilter-edit-builder-vars-movedto-ns": "Spazju tal-ismijiet tal-paġna ta' destinazzjoni tat-tmexxija",
+ "abusefilter-edit-builder-vars-movedto-text": "Titlu tal-paġna ta' destinazzjoni tat-tmexxija",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "Titlu sħiħ tal-paġna ta' destinazzjoni tat-tmexxija",
+ "abusefilter-edit-builder-vars-user-editcount": "Għadd ta' modifiki tal-utent",
+ "abusefilter-edit-builder-vars-user-age": "Età tal-kont tal-utent",
+ "abusefilter-edit-builder-vars-user-name": "Isem tal-kont tal-utent",
+ "abusefilter-edit-builder-vars-user-groups": "Gruppi li l-utent hu fihom (anke dawk impliċiti)",
+ "abusefilter-edit-builder-vars-user-rights": "Id-drittijiet li għandu utent",
+ "abusefilter-edit-builder-vars-user-blocked": "Jekk l-utent huwiex ibblukkat",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "Data u ħin meta l-indirizz elettroniku ġie ikkonfermat",
+ "abusefilter-edit-builder-vars-recent-contributors": "L-aħħar għaxar utenti li taw kontribut fil-paġna",
+ "abusefilter-edit-builder-vars-first-contributor": "L-ewwel utent li kontribwixxa fil-paġna",
+ "abusefilter-edit-builder-vars-all-links": "Il-ħoloq esterni kollha fit-test il-ġdid",
+ "abusefilter-edit-builder-vars-added-links": "Il-ħoloq esterni kollha miżjuda mill-modifika",
+ "abusefilter-edit-builder-vars-removed-links": "Il-ħoloq esterni kollha mneħħija mill-modifika",
+ "abusefilter-edit-builder-vars-old-text": "Sors tal-paġna l-qadima, qabel il-modifika",
+ "abusefilter-edit-builder-vars-new-text": "Sors tal-paġna l-ġdida, wara l-modifika",
+ "abusefilter-edit-builder-vars-new-pst": "Wikitest ġdid tal-paġna wara l-bidliet qabel is-sejvjar",
+ "abusefilter-edit-builder-vars-new-text-stripped": "Test ġdid tal-paġna, mingħajr ''markup''",
+ "abusefilter-edit-builder-vars-new-html": "Sors HTML analizzat tar-reviżjoni l-ġdida",
+ "abusefilter-edit-builder-vars-restrictions-edit": "Livell ta' protezzjoni tal-paġna għall-modifiki",
+ "abusefilter-edit-builder-vars-restrictions-move": "Livell ta' prtezzjoni tal-paġna għat-tmexxija",
+ "abusefilter-edit-builder-vars-restrictions-create": "Oħloq protezzjoni għal din il-paġna",
+ "abusefilter-edit-builder-vars-restrictions-upload": "Tella' l-protezzjoni tal-fajl",
+ "abusefilter-edit-builder-vars-old-text-stripped": "Test qadim tal-paġna, mingħajr ''markup''",
+ "abusefilter-edit-builder-vars-old-links": "Ħoloq fil-paġna, qabel il-modifika",
+ "abusefilter-edit-builder-vars-old-html": "Sors il-qadim tal-paġna, interpretat f'HTML",
+ "abusefilter-edit-builder-vars-minor-edit": "Indika jekk il-modifika hix waħda minuri jew le",
+ "abusefilter-edit-builder-vars-file-sha1": "Hash SHA1 tal-kontenut tal-fajl",
+ "abusefilter-filter-log": "L-aħħar modifiki tal-filtru",
+ "abusefilter-history": "Kronoloġija tal-modifiki għall-filtru tal-abbuż numru $1",
+ "abusefilter-history-foruser": "Modifiki minn $1",
+ "abusefilter-history-hidden": "moħbi",
+ "abusefilter-history-enabled": "attivat",
+ "abusefilter-history-global": "Globali",
+ "abusefilter-history-timestamp": "Data u ħin",
+ "abusefilter-history-user": "Utent",
+ "abusefilter-history-public": "Deskrizzjoni pubblika tal-filtru",
+ "abusefilter-history-flags": "Bnadar",
+ "abusefilter-history-filter": "Regola tal-filtru",
+ "abusefilter-history-comments": "Kummenti",
+ "abusefilter-history-actions": "Azzjonijiet",
+ "abusefilter-history-backedit": "Lura għall-modifika tal-filtri",
+ "abusefilter-history-deleted": "Imħassar",
+ "abusefilter-history-filterid": "Filtru",
+ "abusefilter-history-select-legend": "Irfina t-tfittxija",
+ "abusefilter-history-select-user": "Utent:",
+ "abusefilter-history-select-submit": "Irfina",
+ "abusefilter-history-diff": "Modifiki",
+ "abusefilter-history-error-hidden": "Il-filtru li tlabt għalih huwa moħbi, u mhuwiex possibbli li tara l-kronoloġija tiegħu.",
+ "abusefilter-exception-unexpectedatend": "\"$2\" mhux mistenni fil-karattru $1.",
+ "abusefilter-exception-expectednotfound": "$2 nieqes fil-karattru $1 (minflok hemm $3 $4).",
+ "abusefilter-exception-unrecognisedkeyword": "Kelma muftieħ $2 mhux magħrufa f'karattru $1.",
+ "abusefilter-exception-unexpectedtoken": "''Token'' mhux mistenni \"$3\" (tat-tip $2) f'karattru $1.",
+ "abusefilter-exception-invalidoperator": "Operatur \"$2\" invalidu fil-karattru $1.",
+ "abusefilter-exception-unrecognisedtoken": "''Token'' \"$2\" mhux magħruf f'karattru $1.",
+ "abusefilter-exception-noparams": "L-ebda parametru ma ngħata lill-funzjoni \"$2\" fil-karattru $1.",
+ "abusefilter-exception-dividebyzero": "Tentattiv li $2 jiġi diviż b'żero fil-karattru $1.",
+ "abusefilter-exception-unrecognisedvar": "Varjabbli $2 mhux magħruf fil-karattru $1.",
+ "abusefilter-exception-notenoughargs": "M'hemmx argumenti biżżejjed għall-funzjoni $2 fil-karattru $1.\n{{PLURAL:$3|Mistenni argument wieħed|Mistennija $3 argumenti}}, minflok hemm $4.",
+ "abusefilter-exception-regexfailure": "Żball fl-espressjoni regolari \"$3\" fil-karattru $1: \"$2\"",
+ "abusefilter-action-tag": "Tikketta",
+ "abusefilter-action-throttle": "Illimta",
+ "abusefilter-action-warn": "Avża",
+ "abusefilter-action-block": "Imblokka",
+ "abusefilter-action-degroup": "Neħħi mill-gruppi",
+ "abusefilter-action-disallow": "Tħallix",
+ "abusefilter-revert-title": "Reġġa' lura l-modifiki tal-filtru $1",
+ "abusefilter-revert-intro": "Din il-formola tħallik treġġa' lura t-tibdiliet kollha li saru fil-filtru tal-abbuż mill-filtru $1.\nUża din il-biċċa għodda b'kawtela.",
+ "abusefilter-revert-preview-item": "$1: $2 għamel $3 fuq $4.\nAzzjonijiet x'jitħassru: $5 ($6)",
+ "abusefilter-revert-search-legend": "Agħżel azzjonijiet tal-filtru tal-abbuż li għandhom jitħassru",
+ "abusefilter-revert-periodstart": "Bidu tal-perjodu:",
+ "abusefilter-revert-periodend": "Tmiem tal-perjodu:",
+ "abusefilter-revert-search": "Agħżel l-azzjonijiet",
+ "abusefilter-revert-filter": "Filtru:",
+ "abusefilter-revert-preview-intro": "Hawn taħt hawn l-azzjonijiet meħuda mill-filtru tal-abbuż li se jiġu mreġġa' lura permezz ta' din l-azzjoni. Jekk jogħġbok iċċekkjahom sewwa u agħfas fuq \"Ikkonferma\" sabiex tikkonferma l-għażla tiegħek.",
+ "abusefilter-revert-confirm": "Ikkonferma",
+ "abusefilter-revert-success": "Għadek kif reġġajt lura l-azzjonijiet kollha meħuda mill-[[Special:AbuseFilter/$1|iltru tal-abbuż $2]].",
+ "abusefilter-revert-reasonfield": "Raġuni:",
+ "abusefilter-test": "Ivverifika filtru billi tikkonfrontaħ mal-modifiki preċedenti",
+ "abusefilter-test-intro": "Din il-paġna tħallik tiċċekkja filtru mdaħħal fil-kaxxa hawn taħt kontra l-aħħar {{PLURAL:$1|tibdila|$1 tibdiliet}}.\nSabiex ittella' filtru eżistenti, ikteb l-ID fil-filtru fil-kaxxa hawn taħt u agħfas il-buttuna \"Tella'\".",
+ "abusefilter-test-legend": "Ivverifika l-filtri",
+ "abusefilter-test-load-filter": "Tella' filtru skont l-ID:",
+ "abusefilter-test-submit": "Ivverifika",
+ "abusefilter-test-load": "Tella'",
+ "abusefilter-test-user": "Modifiki mill-utent:",
+ "abusefilter-test-period-start": "Modifiki li saru wara:",
+ "abusefilter-test-period-end": "Modifiki li saru qabel:",
+ "abusefilter-test-page": "Modifiki li saru fuq il-paġna:",
+ "abusefilter-test-shownegative": "Uri modifiki li ma jaqblux mal-filtru",
+ "abusefilter-test-syntaxerr": "Il-filtru li daħħal kellu żball fis-sintassi.\nBiex tikseb spjegazzjoni kompluta, iklikkja l-buttuna \"Iċċekkja s-sintassi\",",
+ "abusefilter-changeslist-examine": "eżamina",
+ "abusefilter-examine": "Eżamina modifiki individwali",
+ "abusefilter-examine-intro": "Din il-paġna tħallik teżamina l-varjabbli ġenerati mill-Filtru tal-Abbuż għal modifika partikulari, u tittestjaha kontra l-filtri.",
+ "abusefilter-examine-legend": "Agħżel il-modifiki",
+ "abusefilter-examine-diff": "URL tad-differenzi:",
+ "abusefilter-examine-user": "Utent:",
+ "abusefilter-examine-title": "Titlu tal-paġna:",
+ "abusefilter-examine-submit": "Fittex",
+ "abusefilter-examine-vars": "Varjabbli maħluqa għal din il-modifika",
+ "abusefilter-examine-test": "Ittestja din il-bidla kontra filtru",
+ "abusefilter-examine-test-button": "Ivverifika filtru",
+ "abusefilter-examine-match": "Il-filtru qabel ma' din il-modifika.",
+ "abusefilter-examine-nomatch": "Il-filtru ma qabilx ma' din il-modifika.",
+ "abusefilter-examine-syntaxerror": "Il-filtru għandu sintassi invalida",
+ "abusefilter-examine-notfound": "Il-modifika li tlabt ma nstabitx.",
+ "abusefilter-examine-incompatible": "Il-bidla li tlabt mhix sostnuta mill-Filtru tal-Abbuż",
+ "abusefilter-examine-noresults": "L-ebda riżultat ma nstsab għall-parametri tat-tfittxija li tajt.",
+ "abusefilter-topnav": "'''Filtru tal-Abbużi – Navigazzjoni'''",
+ "abusefilter-topnav-home": "Daħla",
+ "abusefilter-topnav-test": "Testjar tal-lott",
+ "abusefilter-topnav-examine": "Eżamina modifiki preċedenti",
+ "abusefilter-topnav-log": "Reġistru tal-abbuż",
+ "abusefilter-topnav-tools": "Għodda tal-analizzar",
+ "abusefilter-topnav-import": "Importa filtru",
+ "abusefilter-log-name": "Reġistru tal-filtru tal-abbuż",
+ "abusefilter-log-header": "Dan ir-reġistru juri sommarju ta' modifiki li saru mill-filtru.\nGħal aktar dettalji, ara l-[[Special:AbuseFilter/history|lista]] ta' modifiki riċenti tal-filtru.",
+ "abusefilter-log-noresults": "L-ebda riżultat",
+ "abusefilter-diff-title": "Differenzi bejn verżjonijiet",
+ "abusefilter-diff-item": "Element",
+ "abusefilter-diff-version": "Verżjoni tal-$1, {{GENDER:$3|minn}} $2",
+ "abusefilter-diff-info": "Informazzjoni bażika",
+ "abusefilter-diff-pattern": "Kondizzjonijiet tal-filtru",
+ "abusefilter-diff-invalid": "Ma setgħux jittelgħu l-verżjoni rikjesti",
+ "abusefilter-diff-backhistory": "Lura għall-kronoloġija tal-filtru",
+ "abusefilter-diff-prev": "Bidla ta' qabel",
+ "abusefilter-diff-next": "Bidla ta' wara",
+ "abusefilter-import-intro": "Inti tista' tuża din l-interfaċċa sabiex timporta filtri minn wikis oħrajn.\nFuq il-wiki fejn jinsab is-sors, iklikkja \"{{int:abusefilter-edit-export}}\" taħt \"{{int:abusefilter-edit-tools}}\" fuq l-interfaċċa tal-immodifikar.\nIkkopja mill-kaxxa li tidher u itfagħha f'din il-kaxxa, u imbagħad iklikkja \"{{int:abusefilter-import-submit}}\".",
+ "abusefilter-import-submit": "Importa informazzjoni",
+ "abusefilter-group-default": "Predefinit",
+ "abusefilter-http-error": "Sar żball tal-HTTP: $1"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/mwl.json b/www/wiki/extensions/AbuseFilter/i18n/mwl.json
new file mode 100644
index 00000000..3fd139f5
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/mwl.json
@@ -0,0 +1,12 @@
+{
+ "@metadata": {
+ "authors": [
+ "MokaAkashiyaPT",
+ "Athena in Wonderland"
+ ]
+ },
+ "abusefilter": "Cunfiguraçon de l filtro de abusos",
+ "abuselog": "Registro de abusos",
+ "abusefilter-disabled": "Zatibado",
+ "abusefilter-diff-info": "Anformaçones básicas"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/my.json b/www/wiki/extensions/AbuseFilter/i18n/my.json
new file mode 100644
index 00000000..cd4f87a1
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/my.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Erikoo",
+ "Ninjastrikers"
+ ]
+ },
+ "abusefilter-log-search-user": "အသုံးပြုသူ -",
+ "abusefilter-log-search-title": "ခေါင်းစဉ် :",
+ "abusefilter-log-search-submit": "ရှာဖွေရန်",
+ "abusefilter-log-noactions": "အမည်ညွှန်းမရှိ",
+ "abusefilter-log-hide-reason": "အ​ကြောင်း​ပြ​ချက်:",
+ "abusefilter-examine-submit": "ရှာဖွေရန်"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/myv.json b/www/wiki/extensions/AbuseFilter/i18n/myv.json
new file mode 100644
index 00000000..8882a280
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/myv.json
@@ -0,0 +1,143 @@
+{
+ "@metadata": {
+ "authors": [
+ "Botuzhaleny-sodamo"
+ ]
+ },
+ "abusefilter": "А тевде сувтемень аравтомась",
+ "abuselog": "А тевде тешкстамот",
+ "abusefilter-blocker": "А тевде сувтеме",
+ "right-abusefilter-modify": "Лиякстомтомс а тевде сувтеметнень",
+ "right-abusefilter-view": "Ванномс а тевде сувтеметнень",
+ "right-abusefilter-log": "Ванномс а тевде сувтемень тешкстамотнень",
+ "right-abusefilter-hide-log": "Кекшемс мезе сёрмадозь а тевде тешкстамотнесэ",
+ "right-abusefilter-hidden-log": "Ванномс мезе сёрмадозь кекшезь а тевде тешкстамотнесэ",
+ "action-abusefilter-modify": "лиякстомтомс а тевде сувтеметнень",
+ "action-abusefilter-view": "ванномс а тевде сувтеметнень",
+ "action-abusefilter-log": "ванномс а тевде сувтемень тешкстамотнень",
+ "abusefilter-log": "А тевде сувтемень тешкстамот",
+ "abusefilter-log-search": "Вешнемс а тевде сувтемень тешкстамотнестэ",
+ "abusefilter-log-search-user": "Теицясь:",
+ "abusefilter-log-search-filter": "Сувтемень ID-тне (явомс турбинесэ):",
+ "abusefilter-log-search-title": "Коняксозо:",
+ "abusefilter-log-search-submit": "Вешнемс",
+ "abusefilter-log-detailedentry-local": "сувтеме $1",
+ "abusefilter-log-detailslink": "мезде моли кортамось",
+ "abusefilter-log-hidelink": "петнемс неявомачинть",
+ "abusefilter-log-linkoncontribs": "а тевде тешкстамот",
+ "abusefilter-log-linkoncontribs-text": "Те совицядонть а тевень тешкстамот",
+ "abusefilter-log-hidden": "(сёрмадовксось кекшезь)",
+ "abusefilter-log-hidden-implicit": "(кекшезь, нардазь ревизиясь)",
+ "abusefilter-log-hide-reason": "Тувталось:",
+ "abusefilter-list": "Весе сувтеметь",
+ "abusefilter-list-id": "Сувтемень ID",
+ "abusefilter-list-hitcount": "Зяроксть вастневи",
+ "abusefilter-list-edit": "Витнемензэ-петнемензэ",
+ "abusefilter-unhidden": "Весень туртов",
+ "abusefilter-new": "Шкамс од сувтеме",
+ "abusefilter-status-global": "Весемева",
+ "abusefilter-list-options-deleted": "Нардань сувтеметне:",
+ "abusefilter-list-options-deleted-hide": "Кекшемс нардань сувтеметнень",
+ "abusefilter-list-options-scope": "Невтемс сувтеметнень",
+ "abusefilter-list-options-scope-local": "Ансяк тескень видечитне",
+ "abusefilter-list-options-scope-global": "Ансяк глобальной видечитне",
+ "abusefilter-list-options-scope-all": "Тескень-глобалонь видечитне",
+ "abusefilter-list-options-disabled": "Ве ёнов аравтозь сувтеметне:",
+ "abusefilter-list-options-hidedisabled": "Кекшемс ве ёнов аравтозь сувтеметнень",
+ "abusefilter-list-options-submit": "Одкстомтомс",
+ "abusefilter-tools-submitexpr": "Питне путомс",
+ "abusefilter-tools-reautoconfirm-user": "Теицясь:",
+ "abusefilter-edit-status-label": "Статистикась:",
+ "abusefilter-edit-new": "Од сувтеме",
+ "abusefilter-edit-save": "Ванстомс сувтеме",
+ "abusefilter-edit-flags": "Флагтнэ:",
+ "abusefilter-edit-enabled": "Тевс нолдавозо сувтемесь",
+ "abusefilter-edit-deleted": "Тешкстамс нардазекс",
+ "abusefilter-edit-notes": "Тешкстамот:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|секунда|секундат}}",
+ "abusefilter-edit-warn-actions": "Тевтеематне:",
+ "abusefilter-edit-warn-edit": "Шкамс/Витнемс-петнемс кочказь сёрминенть",
+ "abusefilter-edit-main": "Сувтемень параметратне",
+ "abusefilter-edit-done-subtitle": "Сувтемесь витнезь-петнезь",
+ "abusefilter-edit-viewhistory": "Ванномс те сувтементь юронзо-путовксонзо",
+ "abusefilter-edit-history": "Путовкстнэ-юртнэ:",
+ "abusefilter-edit-tools": "Кедьёнкстнэ:",
+ "abusefilter-edit-builder-group-op-arithmetic": "Арифметикань операторт",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Путомась (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Саемась (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Ламокстамось (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Явомась (/)",
+ "abusefilter-edit-builder-group-op-comparison": "Карадо-каршо аравтомань оператортнэ",
+ "abusefilter-edit-builder-op-comparison-equal": "Вейкетстяви (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "А вейкетстяви (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "Седе аламо (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Седе ламо (>)",
+ "abusefilter-edit-builder-op-bool-not": "Аволь (!)",
+ "abusefilter-edit-builder-op-bool-and": "Марто (&)",
+ "abusefilter-edit-builder-op-bool-or": "Эли (|)",
+ "abusefilter-edit-builder-group-misc": "Минень-сюнонь",
+ "abusefilter-edit-builder-group-funcs": "Функцият",
+ "abusefilter-edit-builder-funcs-set_var": "Аравтомс полавтневикс тев",
+ "abusefilter-edit-builder-group-vars": "Полавтневикс тевть",
+ "abusefilter-edit-builder-vars-action": "Тевтеема",
+ "abusefilter-edit-builder-vars-delta": "Зяросо полавтовсь витнемстэ-петнемстэ",
+ "abusefilter-edit-builder-vars-newsize": "Лопанть од покшолмазо",
+ "abusefilter-edit-builder-vars-oldsize": "Лопанть икелень покшолмазо",
+ "abusefilter-edit-builder-vars-article-id": "Лопа ID",
+ "abusefilter-edit-builder-vars-article-ns": "Лопань лем потмо",
+ "abusefilter-edit-builder-vars-article-text": "Лопа конякс (лем потмовтомо)",
+ "abusefilter-edit-builder-vars-user-age": "Совамо тарканть шказо",
+ "abusefilter-edit-builder-vars-user-name": "Совамо тарканть лемезэ",
+ "abusefilter-edit-builder-vars-file-size": "Файланть покшолмазо байтасо",
+ "abusefilter-filter-log": "Сувтемень меельце полавтнематне",
+ "abusefilter-history": "\"#$1\" сувтементь а тевс нолдамонь путовксонзо-юронзо",
+ "abusefilter-history-foruser": "Мезе $1 полавтсь",
+ "abusefilter-history-hidden": "кекшезь",
+ "abusefilter-history-enabled": "тевс нолдавиця",
+ "abusefilter-history-global": "Весемева",
+ "abusefilter-history-timestamp": "Шказо",
+ "abusefilter-history-user": "Теиця",
+ "abusefilter-history-public": "Весень туртов сувтемеде ёвтамо-сёрмадовкс",
+ "abusefilter-history-flags": "Флагт",
+ "abusefilter-history-filter": "Сувтемень правила",
+ "abusefilter-history-comments": "Мельть-арьсемат",
+ "abusefilter-history-actions": "Тевтеемат",
+ "abusefilter-history-backedit": "Велявтомс сувтемень эдиторонтень",
+ "abusefilter-history-deleted": "Нардазь",
+ "abusefilter-history-filterid": "Сувтеме",
+ "abusefilter-history-select-legend": "Вешнемс седе точнасто",
+ "abusefilter-history-select-user": "Совицясь:",
+ "abusefilter-history-diff": "Полавтнемат",
+ "abusefilter-action-tag": "Тэг",
+ "abusefilter-action-block": "Озавтомс саймас",
+ "abusefilter-revert-periodstart": "Шкаютконть ушодомазо:",
+ "abusefilter-revert-periodend": "Шкаютконть прядомазо:",
+ "abusefilter-revert-filter": "Сувтемесь:",
+ "abusefilter-revert-confirm": "Кемекстамс",
+ "abusefilter-revert-reasonfield": "Тувталось:",
+ "abusefilter-test-load-filter": "Таргамс сувтементь, конань ID-зэ:",
+ "abusefilter-test-submit": "Ванномс",
+ "abusefilter-test-load": "Ёвкстамс",
+ "abusefilter-test-user": "Лиякстомтомат, конатнень теицяст:",
+ "abusefilter-test-period-start": "Лиякстомтомат, конатне теезь те шкадо мейле:",
+ "abusefilter-test-period-end": "Лиякстомтомат, конатне теезь те шкадо икеле:",
+ "abusefilter-test-page": "Лиякстомтомат, конатне теезь те лопасонть:",
+ "abusefilter-test-shownegative": "Невтемс лиякстомтомат, конатне а ладить сувтементь марто",
+ "abusefilter-test-syntaxerr": "Совавтыть сувтеме, конасонть синтаксонь ильведевкс. Ули мелеть, лепштык \"{{int:abusefilter-edit-check}}\" повненть, мейле ильведевксэнть весе ёнксонзо ёвтавить.",
+ "abusefilter-changeslist-examine": "ванномс",
+ "abusefilter-examine": "Ванномс лиякстомтоматнень вейте-вейте",
+ "abusefilter-examine-legend": "Кочкамс полавтнемат-лиякстомтомат",
+ "abusefilter-examine-user": "Совицясь:",
+ "abusefilter-examine-title": "Лопань коняксось:",
+ "abusefilter-examine-submit": "Вешнемс",
+ "abusefilter-examine-test-button": "Варчамс сувтементь",
+ "abusefilter-examine-syntaxerror": "Сувтемесэнть амаштовикс синтакс",
+ "abusefilter-examine-notfound": "Вешить лиякстомтома, конась а муеви.",
+ "abusefilter-topnav-home": "Ушодома таркав",
+ "abusefilter-topnav-log": "А тевде тешкстамот",
+ "abusefilter-log-name": "А тевде сувтемеденть тешкстамот",
+ "abusefilter-log-noresults": "Ресултатт арасть",
+ "abusefilter-diff-title": "Мейсэ явовить версиятне",
+ "abusefilter-diff-prev": "Седе икелень полавтнема",
+ "abusefilter-diff-next": "Седе од полавтнема"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/mzn.json b/www/wiki/extensions/AbuseFilter/i18n/mzn.json
new file mode 100644
index 00000000..5b723d4e
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/mzn.json
@@ -0,0 +1,10 @@
+{
+ "@metadata": {
+ "authors": [
+ "Mehdi",
+ "محک"
+ ]
+ },
+ "abusefilter-edit-tools": "ابزارون:",
+ "abusefilter-test-load": "باربی‌یشتن"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/nah.json b/www/wiki/extensions/AbuseFilter/i18n/nah.json
new file mode 100644
index 00000000..8e158418
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/nah.json
@@ -0,0 +1,19 @@
+{
+ "@metadata": {
+ "authors": [
+ "Fluence",
+ "Teòtlalili",
+ "Akapochtli"
+ ]
+ },
+ "abusefilter-log-search-user": "Tlatequitiltilīlli:",
+ "abusefilter-log-search-title": "Tōcāitl:",
+ "abusefilter-log-search-submit": "Tlatemoliztli",
+ "abusefilter-log-noactions": "ahtlein",
+ "abusefilter-log-hide-reason": "Tleca:",
+ "abusefilter-list-edit": "Tlapatlaliztli",
+ "abusefilter-edit-throttle-period": "Cāhuitl:",
+ "abusefilter-examine-title": "Tlahcuilolamatocaitl:",
+ "abusefilter-examine-submit": "Tlatemoliztli",
+ "abusefilter-topnav-home": "Pehualoyan"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/nan.json b/www/wiki/extensions/AbuseFilter/i18n/nan.json
new file mode 100644
index 00000000..aa7381b9
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/nan.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Hiong3-eng5"
+ ]
+ },
+ "abusefilter-list-edit": "Siu-kái"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/nap.json b/www/wiki/extensions/AbuseFilter/i18n/nap.json
new file mode 100644
index 00000000..821336ae
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/nap.json
@@ -0,0 +1,70 @@
+{
+ "@metadata": {
+ "authors": [
+ "Chelin",
+ "C.R."
+ ]
+ },
+ "abusefilter-desc": "Appreca n'euristica automateca a 'e cagnamiente",
+ "abusefilter": "Configurazion d' 'o filtro anti abbuse",
+ "abuselog": "Riggistro 'e ll'abbuse",
+ "abusefilter-intro": "Bemmenuto dint'a l'interfazze 'e gistione 'e filtre anti-abbuse.\n'O filtro abbuse è nu meccanismo software pe' n'apprecà euristeche automateche a tutte l'aziune.\nChist'interfazze fà vedè n'elenco 'e filtre definite, e cunzente a chiste d'essere cagnate.",
+ "abusefilter-mustbeeditor": "Pe mutive 'e sicurezza, sulamente l'utente ch' 'e deritte 'e cagnà 'e filtre abbuse ponno ausà sta nterfazza.",
+ "abusefilter-warning": "'''Attenziò''': St'azione è stata automaticamente identificata comme pericolosa.\n'E cagnamiente nun costruttive so' state annullate ampress ampress, e 'e cagnamiente egregge o ripetitive se segnarranno ncopp' 'o cunto o l'indirizzo IP vuosto ca sarrà bloccato.\n\nSi penzate ca st'azione fosse costruttiva, 'a putisseve signà n'ata vota p' 'o cunfermà. Cu na descriziona ampresso 'e l'azione d'abbuso ca soddisfacesse l'aziona vuosta comme: $1",
+ "abusefilter-disallowed": "St'azione è stata automaticamente identificata comme pericolosa e, allora nun s'è premmessa.\nSi cridete ca l'aziona vuosta è custruttiva, pe' piacere nfurmate n'ammenistratore 'e chillo ca vulive fà.\nNa descrizione veloce d' 'a regola d'abbuse ncopp'a l'aziona vuosta fosse comm'a chesta: $1",
+ "abusefilter-blocked-display": "St'azione è stata automaticamente identificata comme pericolosa, e vuje site stato/a bluccato 'a ll'esecuziona soja. \nPure, pe' pruteggere {{SITENAME}}, ll'utente vuosto e ll'IP suòcie a vuje so' state bluccate 'a putè cagnà coccosa.\nSi fosse stato surtanto n'errore, pe' piacere cuntattate n'ammenistatore.\nNa descriziona ampress d' 'e regole 'e ll'abbuse c'avite fato se tròva ccà: $1",
+ "abusefilter-blocker": "Filtro anti abbuse",
+ "abusefilter-blockreason": "Bluccato/a automaticamente 'a nu filtro 'abbuse.\nDescrizione d' 'a regola ccà: $1",
+ "abusefilter-degroupreason": "Deritte automatecamente luvate 'a 'o filtro abbuse.\nDescrizione d' 'a regola: $1",
+ "abusefilter-accountreserved": "Stu nomme 'e cunto è astipato pe ll'ausà pe' bbia d' 'o filtro abbuse.",
+ "right-abusefilter-modify": "Cagna 'e filtre d'abbuse",
+ "right-abusefilter-view": "Vide 'e filtre d'abbuse",
+ "right-abusefilter-log": "Vide 'o riggistro d'abbuse",
+ "right-abusefilter-log-detail": "Vide cchiù ndettaglio 'e riggistre d'abbuse",
+ "right-abusefilter-private": "Vide 'e date private int' 'o riggistro d'abbuse",
+ "right-abusefilter-modify-restricted": "Càgna 'e filtre d'abbuse cu l'aziune lemmetate",
+ "right-abusefilter-revert": "Annulla tutte 'e cagnamiente 'a nu filtro d'abbuse dato",
+ "right-abusefilter-view-private": "Vide filtre abbuse nzignate ccà comme private",
+ "right-abusefilter-log-private": "Vide 'e voce 'e riggistro 'e filtre abbuse nzignate comme private",
+ "right-abusefilter-hide-log": "Annascunne voce int'a 'o riggistro abbuse",
+ "right-abusefilter-hidden-log": "Vide elemente annascunnute d' 'o riggistro 'abbuse",
+ "right-abusefilter-modify-global": "Crea o cagna 'o filtro abbuse globbale",
+ "action-abusefilter-modify": "cagna 'e filtre abbuse",
+ "action-abusefilter-view": "vide 'e filtre 'abbuse",
+ "action-abusefilter-log": "vide 'o riggistro 'abbuse",
+ "action-abusefilter-log-detail": "vide cchiù 'ndettaglio 'e riggistre 'abbuse",
+ "action-abusefilter-private": "vide 'e date private int' 'o riggistro d'abbuse",
+ "action-abusefilter-modify-restricted": "càgna 'e filtre d'abbuse cu l'aziune lemmetate",
+ "action-abusefilter-revert": "annulla tutte 'e cagnamiente 'a nu filtro d'abbuse dato",
+ "action-abusefilter-view-private": "vide filtre abbuse nzignate ccà comme private",
+ "abusefilter-log": "Riggistro d' 'o filtro anti abbuse",
+ "abusefilter-log-summary": "Stu riggistro mmustasse n'elenco 'e tutte l'aziune c'avessero appicciato uno o cchiù filtre.",
+ "abusefilter-log-search": "Trova dint'a 'o riggistro 'abbuse",
+ "abusefilter-log-search-user": "Utente:",
+ "abusefilter-log-search-filter": "ID d' 'u filtro (separate 'a 'e |):",
+ "abusefilter-log-search-title": "Titulo:",
+ "abusefilter-log-search-wiki": "Wiki:",
+ "abusefilter-log-search-submit": "Truova",
+ "abusefilter-log-detailedentry-global": "filtro globbale $1",
+ "abusefilter-log-detailedentry-local": "filtro $1",
+ "abusefilter-log-detailslink": "dettaglie",
+ "abusefilter-log-diff": "diff",
+ "abusefilter-log-hidelink": "aggiuste 'a visebiletà",
+ "abusefilter-log-details-legend": "Dettaglie p' 'e trasute a 'o riggistro $1",
+ "abusefilter-log-details-var": "Variabbele",
+ "abusefilter-log-details-val": "Valore",
+ "abusefilter-log-details-vars": "Parametre 'e l'azione",
+ "abusefilter-log-details-private": "Date private",
+ "abusefilter-log-details-ip": "Inderizzo IP d'origgene",
+ "abusefilter-log-noactions": "nisciuno",
+ "abusefilter-log-details-diff": "Cagnamiente fatte int' 'o modo 'e modifica",
+ "abusefilter-log-linkoncontribs": "riggistro 'e ll'abbuse",
+ "abusefilter-log-linkoncontribs-text": "Riggistro 'e abbuse pe' st'utente",
+ "abusefilter-log-hidden": "(voce annascunnuta)",
+ "abusefilter-log-hidden-implicit": "(annascunnuta pecché 'a verziona fuje scancellata)",
+ "abusefilter-log-hide-reason": "Mutivo:",
+ "abusefilter-list-edit": "Càgna",
+ "abusefilter-unhidden": "Pubbreco",
+ "abusefilter-enabled": "Attivato",
+ "abusefilter-deleted": "Canciellato"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/nb.json b/www/wiki/extensions/AbuseFilter/i18n/nb.json
new file mode 100644
index 00000000..8f8e38cd
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/nb.json
@@ -0,0 +1,477 @@
+{
+ "@metadata": {
+ "authors": [
+ "Danmichaelo",
+ "EvenT",
+ "Event",
+ "Guaca",
+ "Harald Khan",
+ "Laaknor",
+ "McDutchie",
+ "Nghtwlkr",
+ "Njardarlogar",
+ "Stigmj",
+ "Cocu",
+ "Jeblad",
+ "Chameleon222",
+ "Matma Rex",
+ "Jon Harald Søby",
+ "Imre Eilertsen"
+ ]
+ },
+ "abusefilter-desc": "Legger til automatisk heuristikk til redigeringer.",
+ "abusefilter": "Konfigurasjon av redigeringsfilter",
+ "abuselog": "Misbrukslogg",
+ "abusefilter-intro": "Velkommen til grensesnittet for håndtering av redigeringsfilteret.\nRedigeringsfilteret er en automatisert mekanisme i programvaren som utfører automatisk sjekking av alle handlinger.\nDette grensesnittet viser en liste over definerte filtre og tillater endring av dem.",
+ "abusefilter-mustbeeditor": "Av sikkerhetsgrunner kan bare brukere med rett til å endre redigeringsfiltre bruke dette grensesnittet.",
+ "abusefilter-warning": "'''Advarsel''': Handlingen har automatisk blitt identifisert som skadelig.\nIkke-konstruktive handlinger blir raskt tilbakestilt,\nog langvarig forstyrrende redigering vil føre til at din konto eller IP-adresse blir blokkert.\nOm du mener dette er en konstruktiv redigering, klikk «Lagre» igjen for å bekrefte den.\nEn kortfattet beskrivelse av redigeringsregelen som din handling utløste er: $1",
+ "abusefilter-disallowed": "Denne handlingen har automatisk blitt identifisert som skadelig, og er derfor avvist. Om du mener redigeringen var konstruktiv, kontakt en administrator og informer ham eller henne om hva du prøvde å få til.\nEn kortfattet beskrivelse av redigeringsregelen som din handling utløste er: $1",
+ "abusefilter-blocked-display": "Denne handlingen har automatisk blitt identifisert som skadelig, og du har blitt hindret fra å gjennomføre den. I tillegg, for å beskytte {{SITENAME}}, har din konto og alle IP-adresser assosiert med denne blitt blokkert fra å redigere. Om dette var en feil, kontakt en administrator.\nEn kortfattet beskrivelse av redigeringsregelen som din handling utløste er: $1",
+ "abusefilter-degrouped": "Denne handlingen har automatisk blitt identifisert som skadelig. Derfor ble den ikke tillatt, og på grunn av mistanke om misbruk har kontoen din mistet alle rettigheter. Om du mener dette er en feil, kontakt en byråkrat med en forklaring på hva du gjorde, og rettighetene dine kan bli gjenopprettet.\nEn kortfattet beskrivelse av redigeringsregelen som din handling utløste er: $1",
+ "abusefilter-autopromote-blocked": "Denne handlingen har automatisk blitt identifisert som skadelig, og ble ikke tillatt.\nI tillegg ble noen av rettighetene kontoen din hadde fjernet midlertidig, av sikkerhetsmessige grunner.\nEn kort beskrivelse av redigeringsregelen handlingen din brøt er: $1",
+ "abusefilter-blocker": "Redigeringsfilter",
+ "abusefilter-blockreason": "Automatisk blokkert av redigeringsfilter. Regelbeskrivelse: $1",
+ "abusefilter-degroupreason": "Rettigheter fjernet automatisk av redigeringsfilter. Regelbeskrivelse: $1",
+ "abusefilter-accountreserved": "Denne kontoen er reservert for bruk av redigeringsfilteret.",
+ "right-abusefilter-modify": "Endre redigeringsfiltere",
+ "right-abusefilter-view": "Vise redigeringsfiltere",
+ "right-abusefilter-log": "Vise misbruksloggen",
+ "right-abusefilter-log-detail": "Vise detaljerte punkter i misbruksloggen",
+ "right-abusefilter-private": "Vise privat informasjon i misbruksloggen",
+ "right-abusefilter-modify-restricted": "Endre filtre med begrensede handlinger",
+ "right-abusefilter-revert": "Tilbakestill alle endringer gjort av et gitt redigeringsfilter",
+ "right-abusefilter-view-private": "Vis redigeringsfiltre merket privat",
+ "right-abusefilter-log-private": "Vis loggposter for redigeringsfiltere som har blitt markert som private",
+ "right-abusefilter-hide-log": "Skjule oppføringer i misbruksloggen",
+ "right-abusefilter-hidden-log": "Vise skjulte misbruksloggoppføringer",
+ "right-abusefilter-modify-global": "Opprett eller endre globale redigeringsfiltre",
+ "action-abusefilter-modify": "endre redigeringsfilterene",
+ "action-abusefilter-view": "se på redigeringsfilterene",
+ "action-abusefilter-log": "se på misbruksloggen",
+ "action-abusefilter-log-detail": "se på detaljene i misbruksloggen",
+ "action-abusefilter-private": "se på private data i misbruksloggen",
+ "action-abusefilter-modify-restricted": "endre redigeringsfiltere med begrensede handlinger",
+ "action-abusefilter-revert": "tilbakestille alle endringer for et gitt redigeringsfilter",
+ "action-abusefilter-view-private": "vis redigeringsfiltre merket som private",
+ "action-abusefilter-log-private": "vise logger for misbruksfiltre merket som private",
+ "abusefilter-log": "Redigeringsfilterlogg",
+ "abusefilter-log-summary": "Denne loggen viser en liste over alle handlingene som filterene har fanget opp",
+ "abusefilter-log-search": "Søk i misbruksloggen",
+ "abusefilter-log-search-user": "Bruker:",
+ "abusefilter-log-search-filter": "Filter-ID (skill med vertikalstrek):",
+ "abusefilter-log-search-title": "Tittel:",
+ "abusefilter-log-search-wiki": "Wiki:",
+ "abusefilter-log-search-entries-label": "Synlighet:",
+ "abusefilter-log-search-entries-all": "Alle elementer",
+ "abusefilter-log-search-entries-hidden": "Kun skjulte elementer",
+ "abusefilter-log-search-entries-visible": "Kun synlige elementer",
+ "abusefilter-log-search-submit": "Søk",
+ "abusefilter-log-entry": "$1: $2 utløste et redigeringsfilter ved å {{GENDER:$8|gjøre}} en $3 på $4.\nReaksjon: $5;\nfilterbeskrivelse: $6",
+ "abusefilter-log-entry-withdiff": "$1: $2 utløste et misbruksfilter, ved å {{GENDER:$8|utføre}} handlingen «$3» på $4.\nUtførte handlinger: $5;\nFilterbeskrivelse: $6 ($7)",
+ "abusefilter-log-detailedentry-meta": "$1: $2 utløste redigeringsfilter $3, ved å {{GENDER:$9|gjøre}} handlingen «$4» på $5.\nReaksjon: $6;\nFilterbeskrivelse: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "globalt filter $1",
+ "abusefilter-log-detailedentry-local": "filter $1",
+ "abusefilter-log-detailslink": "detaljer",
+ "abusefilter-log-diff": "diff",
+ "abusefilter-log-hidelink": "juster synlighet",
+ "abusefilter-log-details-legend": "Detaljer for loggelement $1",
+ "abusefilter-log-details-var": "Variabel",
+ "abusefilter-log-details-val": "Verdi",
+ "abusefilter-log-details-vars": "Handlingsparametere",
+ "abusefilter-log-details-private": "Privat informasjon",
+ "abusefilter-log-details-ip": "Opphavs-IP",
+ "abusefilter-log-noactions": "ingen",
+ "abusefilter-log-details-diff": "Endringer utført i redigeringen",
+ "abusefilter-log-linkoncontribs": "misbrukslogg",
+ "abusefilter-log-linkoncontribs-text": "Misbrukslogg for denne {{GENDER:$1|brukeren}}",
+ "abusefilter-log-hidden": "(oppføring skjult)",
+ "abusefilter-log-hidden-implicit": "(skjult fordi revisjonen har blitt slettet)",
+ "abusefilter-log-cannot-see-details": "Du har ikke tillatelse til å se detaljene i dette oppslaget.",
+ "abusefilter-log-nonexistent": "En oppføring med den angitte ID-en finnes ikke.",
+ "abusefilter-log-details-hidden": "Du kan ikke se detaljene for denne oppføringen fordi den er skjult fra offentlig visning.",
+ "abusefilter-log-private-not-included": "En eller flere ID-er for filtre er private. Fordi du mangler rettigheter til å se detaljer i private filtre, så er søket ikke utført for slike.",
+ "abusefilter-log-hide-legend": "Skjul loggoppføring",
+ "abusefilter-log-hide-id": "Loggoppførings-ID:",
+ "abusefilter-log-hide-hidden": "Skjul denne oppføringen fra offentlig visning",
+ "abusefilter-log-hide-reason": "Årsak:",
+ "abusefilter-log-hide-forbidden": "Du har ikke rettigheter til å skjule\nmisbruksloggoppføringer.",
+ "abusefilter-logentry-suppress": "skjulte «[[$1]]»",
+ "abusefilter-logentry-unsuppress": "viste «[[$1]]»",
+ "logentry-abusefilter-hit": "$1 {{GENDER:$2|utløste}} $4 ved å utføre handlingen «$5» på $3. Handlinger tatt: $6 ($7)",
+ "abusefilter-management": "Behandling av redigeringsfilter",
+ "abusefilter-list": "Alle filtere",
+ "abusefilter-list-id": "Filter-ID",
+ "abusefilter-list-pattern": "Mønster",
+ "abusefilter-list-status": "Status",
+ "abusefilter-list-public": "Offentlig beskrivelse",
+ "abusefilter-list-consequences": "Konsekvenser",
+ "abusefilter-list-visibility": "Synlighet",
+ "abusefilter-list-hitcount": "Treffteller",
+ "abusefilter-list-edit": "Rediger",
+ "abusefilter-list-details": "Detaljer",
+ "abusefilter-list-limit": "Antall per side:",
+ "abusefilter-list-lastmodified": "Sist endret",
+ "abusefilter-list-group": "Filtergruppe",
+ "abusefilter-hidden": "Privat",
+ "abusefilter-unhidden": "Offentlig",
+ "abusefilter-enabled": "Slått på",
+ "abusefilter-deleted": "Slettet",
+ "abusefilter-disabled": "Slått av",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|treff}}",
+ "abusefilter-new": "Lag et nytt filter",
+ "abusefilter-return": "Returner til filteradministrasjon",
+ "abusefilter-status-global": "Global",
+ "abusefilter-list-options": "Alternativer",
+ "abusefilter-list-options-deleted": "Slettede filtre:",
+ "abusefilter-list-options-deleted-only": "Vis kun slettede filtre",
+ "abusefilter-list-options-deleted-hide": "Skjul slettede filtre",
+ "abusefilter-list-options-deleted-show": "Inkluder slettede filtre",
+ "abusefilter-list-options-scope": "Vis filtre:",
+ "abusefilter-list-options-scope-local": "Kun lokale regler",
+ "abusefilter-list-options-scope-global": "Kun globale regler",
+ "abusefilter-list-options-scope-all": "Lokale og globale regler",
+ "abusefilter-list-options-disabled": "Deaktiverte filtre:",
+ "abusefilter-list-options-hidedisabled": "Skjul deaktiverte filtre",
+ "abusefilter-list-options-searchoptions": "Søkemodus:",
+ "abusefilter-list-options-submit": "Oppdater",
+ "abusefilter-tools-text": "Her er noen verktøy som kan være nyttige for å lage samt feilsøke redigeringsfiltere.",
+ "abusefilter-tools-expr": "Uttrykkstester",
+ "abusefilter-tools-submitexpr": "Evaluer",
+ "abusefilter-tools-reautoconfirm": "Gi tilbake autobekreftet status",
+ "abusefilter-tools-reautoconfirm-user": "Bruker:",
+ "abusefilter-tools-reautoconfirm-submit": "Gi automatisk bekreftet-status på nytt",
+ "abusefilter-reautoconfirm-none": "Brukeren har ikke fått opphevet {{GENDER:$1|hans|hennes|sin}} status som automatisk bekreftet.",
+ "abusefilter-reautoconfirm-notallowed": "Du har ikke lov til å gi tilbake autobekreftet-status.",
+ "abusefilter-reautoconfirm-done": "Kontoens automatisk godkjent-status har blitt gitt tilbake",
+ "abusefilter-status": "Av {{PLURAL:$1|den siste handlingen|de siste $1 handlingene}} har $2 ($3 %) nådd grenseverdien $4. $5 ($6 %) passet med ett av de aktive filterne.",
+ "abusefilter-edit": "Redigerer misbrukssfilter",
+ "abusefilter-edit-subtitle": "Redigerer filteret $1",
+ "abusefilter-edit-subtitle-new": "Oppretter filter",
+ "abusefilter-edit-oldwarning": "<strong>Du redigerer på en gammel versjon av dette filteret. Statistikken oppgitt er for siste versjon av filteret. Hvis du lagrer dine endringer, vil du overskrive alle endringer siden den revisjonen du redigerer</strong> &bull; [[Special:AbuseFilter/history/$2|Gå tilbake til filterets historikk]]",
+ "abusefilter-edit-status-label": "Statistikk:",
+ "abusefilter-edit-status": "Av {{PLURAL:$|den siste handlingen|de siste $1 handlingene}} har dette filteret matchet $2 ($3 %).",
+ "abusefilter-edit-status-profile": "Av {{PLURAL:$|den siste handlingen|de siste $1 handlingene}} har dette filteret passet med $2 ($3%).\nKjøretiden er i gjennomsnitt på $4ms, og det bruker {{PLURAL:$5|ett vilkår|$5 vilkår}} av vilkårsgrensen.",
+ "abusefilter-edit-throttled-warning": "'''Advarsel:''' Dette filteret ble automatisk flagget som skadefullt. Av sikkerhetsårsaker vil følgende handlinger ikke bli utført ($1). Gå gjennom og [[mw:Extension:AbuseFilter/Conditions|optimer]] betingelsene for å fjerne denne begrensningen",
+ "abusefilter-edit-new": "Nytt filter",
+ "abusefilter-edit-save": "Lagre filter",
+ "abusefilter-edit-id": "Filter-ID:",
+ "abusefilter-edit-description": "Beskrivelse\n:''(vises offentlig)''",
+ "abusefilter-edit-field-description": "beskrivelse",
+ "abusefilter-edit-group": "Filtergruppe:",
+ "abusefilter-edit-flags": "Flagg:",
+ "abusefilter-edit-enabled": "Slå på dette filteret",
+ "abusefilter-edit-deleted": "Merk som slettet",
+ "abusefilter-edit-hidden": "Skjul detaljer om dette filteret fra offentlig visning",
+ "abusefilter-edit-global": "Globalt filter",
+ "abusefilter-edit-rules": "Regelverk:",
+ "abusefilter-edit-field-conditions": "betingelser",
+ "abusefilter-edit-notes": "Notater:",
+ "abusefilter-edit-lastmod": "Filter sist endret:",
+ "abusefilter-edit-lastmod-text": "$1 av $2",
+ "abusefilter-edit-hitcount": "Filtertreff:",
+ "abusefilter-edit-consequences": "Handlinger som utføres ved treff",
+ "abusefilter-edit-action-warn": "Gi brukeren en advarsel før disse handlingene foretas",
+ "abusefilter-edit-action-disallow": "Hindre brukeren i å utføre handlingen",
+ "abusefilter-edit-action-blockautopromote": "Fjern brukerens «autoconfirmed»-status",
+ "abusefilter-edit-action-degroup": "Fjern brukeren fra alle priviligerte grupper",
+ "abusefilter-edit-action-block": "Blokker brukeren og/eller IP-adressen fra redigering",
+ "abusefilter-edit-action-throttle": "Gjennomfør handlingen kun dersom brukeren gjør det flere ganger",
+ "abusefilter-edit-action-rangeblock": "Blokker IP-intervallet brukeren kommer fra",
+ "abusefilter-edit-action-tag": "Merk endringen for videre gjennomgang.",
+ "abusefilter-edit-throttle-count": "Antall tillatte handlinger:",
+ "abusefilter-edit-throttle-period": "Tidsperiode:",
+ "abusefilter-edit-throttle-seconds": "{{PLURAL:$1|ett sekund|$1 sekund}}",
+ "abusefilter-edit-throttle-groups": "Grupper fart etter:\n:''(en på hver linje, kombiner med kommaer)''",
+ "abusefilter-edit-warn-message": "Systemmelding å bruke for advarsel:",
+ "abusefilter-edit-warn-other": "Annen melding",
+ "abusefilter-edit-warn-other-label": "Side med annen melding:\n:''(uten MediaWiki-prefiks)''",
+ "abusefilter-edit-warn-actions": "Handlinger:",
+ "abusefilter-edit-warn-preview": "Forhåndsvis valgt melding",
+ "abusefilter-edit-warn-edit": "Opprett/rediger valgt melding",
+ "abusefilter-edit-tag-tag": "[[Special:Tags|Merkelapper]] å legge på (én per linje):",
+ "abusefilter-edit-denied": "Du kan ikke se detaljene for dette filteret, fordi de er skjult fra offentlig visning.",
+ "abusefilter-edit-main": "Filterparametere",
+ "abusefilter-edit-done-subtitle": "Filter redigert",
+ "abusefilter-edit-done": "[[Special:AbuseFilter/history/$1/diff/prev/$2|Dine endringer]] til [[Special:AbuseFilter/$1|filter $3]] er lagret.",
+ "abusefilter-edit-badsyntax": "Det er en syntaksfeil i filteret du anga. Resultatet fra fortolkeren var: <pre>$1</pre>",
+ "abusefilter-edit-restricted": "Du kan ikke redigere dette filteret, fordi det inneholder en eller flere begrensede handlinger.\nSpør en bruker med rettigheter til å legge til begrensede handlinger om å legge til endringen for deg.",
+ "abusefilter-edit-viewhistory": "Vis dette filterets historikk",
+ "abusefilter-edit-history": "Historikk:",
+ "abusefilter-edit-check": "Sjekk syntaks",
+ "abusefilter-edit-badfilter": "Filteret du spesifiserte finnes ikke",
+ "abusefilter-edit-revert": "Tilbakestill handlinger utført av dette filteret",
+ "abusefilter-edit-tools": "Verktøy:",
+ "abusefilter-edit-test-link": "Test dette filteret mot siste endringer",
+ "abusefilter-edit-export": "Eksporter dette filteret til en annen wiki",
+ "abusefilter-edit-syntaxok": "Ingen syntaksfeil oppdaget.",
+ "abusefilter-edit-syntaxerr": "Syntaksfeil oppdaget: $1",
+ "abusefilter-edit-bad-tags": "Én eller fler av merkelappene du spesifiserte er ikke gyldige.\nMekelappene burde være korte og burde ikke inneholde spesialtegn, og bør ikke være reservert av annen programvare. Prøv å velge et annet navn.",
+ "abusefilter-edit-notallowed": "Du har ikke tillatelse til å opprette eller endre redigeringsfilter",
+ "abusefilter-edit-notallowed-global": "Du har ikke tillatelse til å opprette eller endre globale redigeringsfiltre",
+ "abusefilter-edit-notallowed-global-custom-msg": "Brukerdefinerte advarsler kan ikke brukes for globale filtre",
+ "abusefilter-edit-builder-select": "Velg et alternativ for å legge det til på markøren",
+ "abusefilter-edit-builder-group-op-arithmetic": "Aritmetiske operatorer",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Addisjon (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Subtraksjon (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Multiplikasjon (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Divisjon (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Modulo (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Eksponent (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Sammenligningsoperatorer",
+ "abusefilter-edit-builder-op-comparison-equal": "Er lik (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Er ikke lik (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "Mindre enn (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Større enn (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Mindre enn eller lik med (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Større enn eller lik med (>=)",
+ "abusefilter-edit-builder-group-op-bool": "Boolske operatorer",
+ "abusefilter-edit-builder-op-bool-not": "Ikke (!)",
+ "abusefilter-edit-builder-op-bool-and": "Og (&)",
+ "abusefilter-edit-builder-op-bool-or": "Eller (|)",
+ "abusefilter-edit-builder-group-misc": "Diverse",
+ "abusefilter-edit-builder-misc-in": "inneholdt i strengen (in)",
+ "abusefilter-edit-builder-misc-like": "Passer regulært uttrykk (like)",
+ "abusefilter-edit-builder-misc-rlike": "Passer regulært uttrykk (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "Passer regulært uttrykk, skiller ikke mellom store og små tegn (irlike)",
+ "abusefilter-edit-builder-misc-contains": "Venstre tekst inneholder tekst til høyre (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "Konstant streng (\"\")",
+ "abusefilter-edit-builder-misc-tern": "Trefoldig operator (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "Betinget (if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "Funksjoner",
+ "abusefilter-edit-builder-funcs-length": "Strenglengde (length)",
+ "abusefilter-edit-builder-funcs-lcase": "Gjør om til små bokstaver (lcase)",
+ "abusefilter-edit-builder-funcs-ucase": "Gjør om til store bokstaver (ucase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "Normaliser forvirrende bokstaver (ccnorm)",
+ "abusefilter-edit-builder-funcs-ccnorm-contains-any": "Normaliser og søk etter flere understrenger i en steng (ccnorm_contains_any)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "Fjern doble bokstaver (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "Spesialbokstaver / totalt antall bokstaver (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "Normaliser (norm)",
+ "abusefilter-edit-builder-funcs-count": "Antall ganger streng X finnes i streng Y (count)",
+ "abusefilter-edit-builder-funcs-rcount": "Antall ganger regulæruttrykket X dukker opp i strengen Y (rcount)",
+ "abusefilter-edit-builder-funcs-get_matches": "Tabell over treff i regulære uttrykk innen en tekst for hver oppfangsgruppe (get_matches)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "Fjern mellomrom (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "Fjern spesialtegn (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "Er IP-en i innenfor område? (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "Søkestrengen for flere delstrenger (contains_any)",
+ "abusefilter-edit-builder-funcs-substr": "Delstreng (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "Delstrengens posisjon i strengen (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "Erstatt delstreng med streng (str_replace)",
+ "abusefilter-edit-builder-funcs-rescape": "Escape-streng som litteral i regulæruttrykk (regex/rescape)",
+ "abusefilter-edit-builder-funcs-set_var": "Sett variabel (set_var)",
+ "abusefilter-edit-builder-group-vars": "Variabler",
+ "abusefilter-edit-builder-vars-accountname": "Kontonavn (on account creation)",
+ "abusefilter-edit-builder-vars-timestamp": "Unix-tidsstempel ved endring",
+ "abusefilter-edit-builder-vars-action": "Handling",
+ "abusefilter-edit-builder-vars-addedlines": "Linjer lagt til i redigering",
+ "abusefilter-edit-builder-vars-delta": "Størrelsesendring i redigering",
+ "abusefilter-edit-builder-vars-diff": "Enhentlig differanse av endringer i redigering",
+ "abusefilter-edit-builder-vars-newsize": "Ny sidestørrelse",
+ "abusefilter-edit-builder-vars-oldsize": "Gammel sidestørrelse",
+ "abusefilter-edit-builder-vars-old-content-model": "Gammel innholdsmodell",
+ "abusefilter-edit-builder-vars-new-content-model": "Ny innholdsmodell",
+ "abusefilter-edit-builder-vars-removedlines": "Linjer fjernet i redigering",
+ "abusefilter-edit-builder-vars-summary": "Redigeringssammendrag",
+ "abusefilter-edit-builder-vars-article-id": "Artikkel-ID",
+ "abusefilter-edit-builder-vars-article-ns": "Artikkelnavnerom",
+ "abusefilter-edit-builder-vars-article-text": "Artikkeltittel (uten navnerom)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Full artikkeltittel",
+ "abusefilter-edit-builder-vars-article-views": "Sidevisninger",
+ "abusefilter-edit-builder-vars-movedfrom-id": "Artikkel-ID til kildeside ved flytting",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "Navnerom til målside ved flytting",
+ "abusefilter-edit-builder-vars-movedfrom-text": "Tittel til kildeside ved flytting",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "Full tittel til kildeside ved flytting",
+ "abusefilter-edit-builder-vars-movedto-id": "Artikkel-ID til målside ved flytting",
+ "abusefilter-edit-builder-vars-movedto-ns": "Navnerom til målside ved flytting",
+ "abusefilter-edit-builder-vars-movedto-text": "Tittel til målside ved flytting",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "Full tittel til målside ved flytting",
+ "abusefilter-edit-builder-vars-user-editcount": "Brukers redigeringsteller",
+ "abusefilter-edit-builder-vars-user-age": "Alder på brukerkontoen",
+ "abusefilter-edit-builder-vars-user-name": "Navn på brukerkonto",
+ "abusefilter-edit-builder-vars-user-groups": "Grupper (inkludert implisitte) bruker er i",
+ "abusefilter-edit-builder-vars-user-rights": "Rettigheter som en bruker har",
+ "abusefilter-edit-builder-vars-user-blocked": "Hvorvidt brukeren er blokkert",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "Tid e-postadresse ble bekreftet",
+ "abusefilter-edit-builder-vars-recent-contributors": "De siste ti bidragsyterene til siden",
+ "abusefilter-edit-builder-vars-first-contributor": "Første bidragsyter til siden",
+ "abusefilter-edit-builder-vars-all-links": "Alle eksterne lenker i den nye teksten",
+ "abusefilter-edit-builder-vars-added-links": "Alle eksterne lenker lagt til i endringen",
+ "abusefilter-edit-builder-vars-removed-links": "Alle eksterne lenker fjernet i endringen",
+ "abusefilter-edit-builder-vars-old-text": "Den gamle wikiteksten til siden før endringen",
+ "abusefilter-edit-builder-vars-new-text": "Den nye wikiteksten til siden etter endringen",
+ "abusefilter-edit-builder-vars-new-pst": "Ny side med wikitekst, transformert fra «pre-save»",
+ "abusefilter-edit-builder-vars-diff-pst": "Enhetlig diff av endringer gjort under redigering, transformert fra «pre-save»",
+ "abusefilter-edit-builder-vars-addedlines-pst": "Linjer lagt til under redigering, transformert fra «pre-save»",
+ "abusefilter-edit-builder-vars-new-text-stripped": "Ny sidetekst, uten markeringer",
+ "abusefilter-edit-builder-vars-new-html": "Tolket HTML-kode for den nye versjonen",
+ "abusefilter-edit-builder-vars-restrictions-edit": "Beskyttelsesnivå for redigering av siden",
+ "abusefilter-edit-builder-vars-restrictions-move": "Beskyttelsesnivå for flytting av siden",
+ "abusefilter-edit-builder-vars-restrictions-create": "Beskytt siden mot opprettelse",
+ "abusefilter-edit-builder-vars-restrictions-upload": "Opplastingsbeskyttelse for filen",
+ "abusefilter-edit-builder-vars-old-text-stripped": "Gammel sidetekst, renset for all koding",
+ "abusefilter-edit-builder-vars-old-links": "Lenker på denne siden, før redigeringen",
+ "abusefilter-edit-builder-vars-old-html": "Gammel wikitekst på siden, tolket til HTML",
+ "abusefilter-edit-builder-vars-minor-edit": "Hvorvidt denne endringen er markert som mindre endring",
+ "abusefilter-edit-builder-vars-file-sha1": "SHA1-hash av filinnhold",
+ "abusefilter-edit-builder-vars-file-size": "Filstørrelsen i byte",
+ "abusefilter-edit-builder-vars-file-mime": "Filas MIME-type",
+ "abusefilter-edit-builder-vars-file-mediatype": "Filas medietype",
+ "abusefilter-edit-builder-vars-file-width": "Filas bredde i piksler",
+ "abusefilter-edit-builder-vars-file-height": "Filas høyde i piksler",
+ "abusefilter-edit-builder-vars-file-bits-per-channel": "Filas bit per fargekanal",
+ "abusefilter-filter-log": "Siste filterendringer",
+ "abusefilter-history": "Endringshistorikk for misbruksfilteret #$1",
+ "abusefilter-history-foruser": "Endringer av $1",
+ "abusefilter-history-hidden": "skjult",
+ "abusefilter-history-enabled": "slått på",
+ "abusefilter-history-global": "Global",
+ "abusefilter-history-timestamp": "Tid",
+ "abusefilter-history-user": "Bruker",
+ "abusefilter-history-public": "Offentlig filterbeskrivelse",
+ "abusefilter-history-flags": "Flagg",
+ "abusefilter-history-filter": "Filterregel",
+ "abusefilter-history-comments": "Kommentarer",
+ "abusefilter-history-actions": "Handlinger",
+ "abusefilter-history-backedit": "Tilbake til filterredigering",
+ "abusefilter-history-deleted": "Slettet",
+ "abusefilter-history-filterid": "Filter",
+ "abusefilter-history-select-legend": "Utvid søk",
+ "abusefilter-history-select-user": "Bruker:",
+ "abusefilter-history-select-submit": "Utdyp",
+ "abusefilter-history-diff": "Endringer",
+ "abusefilter-history-error-hidden": "Filteret du ba om, er skjult, og du kan ikke se historikken til det.",
+ "abusefilter-exception-unexpectedatend": "Uventet «$2» ved tegn nummer $1.",
+ "abusefilter-exception-expectednotfound": "Forventet en $2 ved tegn nummer $1, men fant det ikke (fant $3 $4 istedet).",
+ "abusefilter-exception-unrecognisedkeyword": "Ukjent nøkkelord $2 ved tegn $1.",
+ "abusefilter-exception-unexpectedtoken": "Uventet nøkkel «$3» (av type $2) ved tegn $1.",
+ "abusefilter-exception-unclosedstring": "Åpen streng som starter ved tegn nummer $1.",
+ "abusefilter-exception-invalidoperator": "Ugyldig operator «$2» ved tegn nummer $1.",
+ "abusefilter-exception-unrecognisedtoken": "Ukjent tegn «$2» ved tegn nummer $1.",
+ "abusefilter-exception-noparams": "Ingen parametre ble gitt til funksjonen «$2» ved tegn nummer $1.",
+ "abusefilter-exception-dividebyzero": "Ulovlig forsøk på å dele $2 med null ved tegn nummer $1.",
+ "abusefilter-exception-unrecognisedvar": "Ukjent variabel $2 ved tegn nummer $1.",
+ "abusefilter-exception-notenoughargs": "Funksjonskallet $2 ved tegn $1 hadde ikke nok argumenter.\nForventet {{PLURAL:$3|ett argument|$3 argumenter}}, fikk $4",
+ "abusefilter-exception-regexfailure": "Feil i det regulære uttrykket «$3» ved tegn $1: «$2»",
+ "abusefilter-exception-overridebuiltin": "Ulovlig overstyring av innebygd variabel «$2» ved tegn $1.",
+ "abusefilter-exception-outofbounds": "Ber om ikke-eksisterende listeelement $2 (listestørrelse = $3) ved tegn $1.",
+ "abusefilter-exception-notlist": "Ber om tabellelement fra en ikke-tabell ved tegn $1.",
+ "abusefilter-action-tag": "Merkelapp",
+ "abusefilter-action-throttle": "Begrensning av endringshastighet",
+ "abusefilter-action-warn": "Advar",
+ "abusefilter-action-blockautopromote": "Blokkere automatisk bekreftelse",
+ "abusefilter-action-block": "Blokker",
+ "abusefilter-action-degroup": "Fjerne fra grupper",
+ "abusefilter-action-rangeblock": "Blokkering av område",
+ "abusefilter-action-disallow": "Nekt",
+ "abusefilter-revert-title": "Tilbakestill alle endringer av filteret $1",
+ "abusefilter-revert-intro": "Dette skjemaet lar deg tilbakestille alle endringer utført av redigeringsfilteret $1. Vær forsiktig når du bruker dette verktøyet.",
+ "abusefilter-revert-preview-item": "$1: $2 {{GENDER:$7|gjorde}} en $3 på $4.\nHandlinger som skal tilbakestilles: $5 ($6)",
+ "abusefilter-revert-search-legend": "Velg redigeringsfilterhandlinger som skal tilbakestilles",
+ "abusefilter-revert-periodstart": "Periodestart:",
+ "abusefilter-revert-periodend": "Periodeslutt:",
+ "abusefilter-revert-search": "Velg handlinger",
+ "abusefilter-revert-filter": "Filter:",
+ "abusefilter-revert-preview-intro": "Nedenfor er handlingene utført av misbruksfilteret som vil bli tilbakestilt av denne handlingen.\nSe nøye gjennom disse og klikk på «{{int:abusefilter-revert-confirm}}» for å bekrefte dette valget.",
+ "abusefilter-revert-confirm": "Bekreft",
+ "abusefilter-revert-success": "Du har tilbakestilt alle endringene utført av redigeringsfilteret på grunn av [[Special:AbuseFilter/$1|filter $2]].",
+ "abusefilter-revert-reason": "Automatisk tilbakestilling av alle handlingene utført av redigeringsfilteret på grunn av filter $1.\nGrunnen er gitt som: $2",
+ "abusefilter-revert-reasonfield": "Årsak:",
+ "abusefilter-test": "Test et filter på tidligere redigeringer",
+ "abusefilter-test-intro": "Denne siden lar deg teste et filter som du skriver inn i tekstområdet nedenfor mot {{PLURAL:$1|den siste endringen|de $1 siste endringene}}.\nFor å laste inn et eksisterende filter, skriv inn filter-ID-en i boksen under tekstområdet og klikk på «{{int:abusefilter-test-load}}»-knappen",
+ "abusefilter-test-legend": "Filtertesting",
+ "abusefilter-test-load-filter": "Last inn filter med ID:",
+ "abusefilter-test-submit": "Test",
+ "abusefilter-test-load": "Last inn",
+ "abusefilter-test-user": "Endringer av bruker:",
+ "abusefilter-test-period-start": "Endringer utført etter:",
+ "abusefilter-test-period-end": "Endringer utført før:",
+ "abusefilter-test-page": "Endringer gjort på siden:",
+ "abusefilter-test-shownegative": "Vis endringer som ikke passer med dette filteret",
+ "abusefilter-test-syntaxerr": "Filteret du skrev inn inneholder en syntaksfeil.\nDu kan se en fullstendig forklaring ved å klikke på «{{int:abusefilter-edit-check}}»-knappen.",
+ "abusefilter-test-badtitle": "Sidetittelen du la inn var ugyldig. Den kan inneholde en eller flere karakterer som ikke kan brukes i titler.",
+ "abusefilter-changeslist-examine": "undersøk",
+ "abusefilter-examine": "Undersøk enkelte endringer",
+ "abusefilter-examine-intro": "Denne siden lar deg se igjennom variablene som er laget av redigeringsfilteret for en enkelt endring, samt lar deg teste disse mot filtre.",
+ "abusefilter-examine-legend": "Velg endringer",
+ "abusefilter-examine-diff": "Diff-URL:",
+ "abusefilter-examine-user": "Bruker:",
+ "abusefilter-examine-title": "Sidetittel:",
+ "abusefilter-examine-submit": "Søk",
+ "abusefilter-examine-vars": "Variabler opprettet for denne endringen",
+ "abusefilter-examine-test": "Test denne endringen mot et filter",
+ "abusefilter-examine-test-button": "Test filter",
+ "abusefilter-examine-match": "Filteret matcher denne endringen.",
+ "abusefilter-examine-nomatch": "Filteret matchet ikke denne endringen.",
+ "abusefilter-examine-syntaxerror": "Filteret har en ugyldig syntaks",
+ "abusefilter-examine-notfound": "Endringen du ba om ble ikke funnet.",
+ "abusefilter-examine-incompatible": "Endringen du ba om er ikke støttet av redigeringsfilteret",
+ "abusefilter-examine-noresults": "Fant ingen resultat for søkeparametrene du anga.",
+ "abusefilter-topnav": "'''Navigasjon for redigeringsfilter'''",
+ "abusefilter-topnav-home": "Hjem",
+ "abusefilter-topnav-test": "Gruppetesting",
+ "abusefilter-topnav-examine": "Gransk tidligere endringer",
+ "abusefilter-topnav-log": "Misbrukslogg",
+ "abusefilter-topnav-tools": "Feilsøkingsverktøy",
+ "abusefilter-topnav-import": "Importer filter",
+ "abusefilter-log-name": "Redigeringsfilterlogg",
+ "abusefilter-log-header": "Denne loggen viser et sammendrag av endringer gjort i filtrene.\nFor fullstendige detaljer, se [[Special:AbuseFilter/history|listen]] over de siste filterendringene.",
+ "abusefilter-logentry-modify": "$1 {{GENDER:$2|endret}} $4 ($5)",
+ "abusefilter-log-noresults": "Ingen resultater",
+ "abusefilter-diff-title": "Forskjeller mellom versjoner",
+ "abusefilter-diff-item": "Element",
+ "abusefilter-diff-version": "Versjon fra $1 {{GENDER:$3|av}} $2",
+ "abusefilter-diff-info": "Grunnleggende informasjon",
+ "abusefilter-diff-pattern": "Filterregler",
+ "abusefilter-diff-invalid": "Klarte ikke å hente de ønskede versjonene",
+ "abusefilter-diff-backhistory": "Tilbake til filterhistorikk",
+ "abusefilter-diff-prev": "Eldre endring",
+ "abusefilter-diff-next": "Nyere endring",
+ "abusefilter-import-intro": "Du kan bruke dette grensesnittet for å importere filtre fra andre wikier.\nI kildewikien klikker du på «{{int:abusefilter-edit-export}}» under «{{int:abusefilter-edit-tools}}» i redigeringsgrensesnittet.\nKopier fra tekstruten som kommer frem og lim inn i denne tekstruten. Klikk så på «{{int:abusefilter-import-submit}}».",
+ "abusefilter-import-submit": "Importer data",
+ "abusefilter-group-default": "Standard",
+ "abusefilter-http-error": "En HTTP-feil oppstod: $1",
+ "apihelp-abusefiltercheckmatch-description": "Sjekk om et misbruksfilter treffer et sett av variabler, logget misbruksfilterhendelse.\n\nvars, rcid eller logid kreves, men bare én kan brukes.",
+ "apihelp-abusefiltercheckmatch-summary": "Sjekk om et misbruksfilter matcher et sett variabler (editorlogget misbruksfilterhendelse).",
+ "apihelp-abusefiltercheckmatch-extended-description": "vars, rcid eller logid kreves, men kun én av disse kan brukes.",
+ "apihelp-abusefiltercheckmatch-param-filter": "Hele filterteksten som skal sjekkes for treff.",
+ "apihelp-abusefiltercheckmatch-param-vars": "JSON-kodet tabell over variabler det skal testes mot.",
+ "apihelp-abusefiltercheckmatch-param-rcid": "Siste endringer-ID det skal sjekkes mot.",
+ "apihelp-abusefiltercheckmatch-param-logid": "Misbruksfilterlogg-ID det skal sjekkes mot.",
+ "apihelp-abusefiltercheckmatch-example-1": "Test om siste endringer-ID 15 treffer på et enkelt filter",
+ "apihelp-abusefilterchecksyntax-description": "Sjekk syntaksen til et filter.",
+ "apihelp-abusefilterchecksyntax-summary": "Sjekk syntaksen til et misbruksfilter.",
+ "apihelp-abusefilterchecksyntax-param-filter": "Hele filterteksten det skal sjekkes syntaks på.",
+ "apihelp-abusefilterchecksyntax-example-1": "Sjekk syntaksen til et gyldig filter",
+ "apihelp-abusefilterchecksyntax-example-2": "Sjekk syntaksen til et ugyldig filter",
+ "apihelp-abusefilterevalexpression-description": "Evaluerer et misbruksfilteruttrykk.",
+ "apihelp-abusefilterevalexpression-summary": "Evaluerer et uttrykk i et misbruksfilter.",
+ "apihelp-abusefilterevalexpression-param-expression": "Uttrykket som skal evalueres.",
+ "apihelp-abusefilterevalexpression-example-1": "Evaluer et enkelt uttrykk",
+ "apihelp-abusefilterunblockautopromote-description": "Fjerner blokkeringen av en bruker fra å automatisk forfremmes på grunn av konsekvenser fra et misbruksfilter.",
+ "apihelp-abusefilterunblockautopromote-summary": "Fjerner en brukers blokkering fra å få automatiske forfremmelser basert på konsekvenser av misbruksfiltre.",
+ "apihelp-abusefilterunblockautopromote-param-user": "Brukernavnet til brukeren du ønsker å avblokkere.",
+ "apihelp-abusefilterunblockautopromote-example-1": "Fjerner blokkeringen av automatisk forfremming av [[User:Example]]",
+ "apihelp-query+abusefilters-description": "Vis detaljene til misbruksfilterne.",
+ "apihelp-query+abusefilters-summary": "Vis detaljer om misbruksfilterne.",
+ "apihelp-query+abusefilters-param-startid": "Filter-ID det skal nummereres fra.",
+ "apihelp-query+abusefilters-param-endid": "Filter-ID det skal sluttes å nummereres på.",
+ "apihelp-query+abusefilters-param-show": "Vis bare filtre som treffer disse kriteriene.",
+ "apihelp-query+abusefilters-param-limit": "Maksimalt antall filtre som skal listes opp.",
+ "apihelp-query+abusefilters-param-prop": "Hvilke egenskaper som skal hentes.",
+ "apihelp-query+abusefilters-example-1": "List opp påslåtte offentlige filtre",
+ "apihelp-query+abusefilters-example-2": "Vis noen detaljer om filtre",
+ "apihelp-query+abuselog-description": "Vis hendelser som ble fanget opp av ett av misbruksfiltrene.",
+ "apihelp-query+abuselog-summary": "Vis hendelser som ble fanget av ett av misbruksfilterne.",
+ "apihelp-query+abuselog-param-start": "Tidsstempelet nummereringen skal starte på.",
+ "apihelp-query+abuselog-param-end": "Tidsstempelet det skal sluttes å nummerere på.",
+ "apihelp-query+abuselog-param-user": "Vis bare oppføringer gjort av en gitt bruker eller IP-adresse.",
+ "apihelp-query+abuselog-param-title": "Vis bare oppføringer på ei gitt side.",
+ "apihelp-query+abuselog-param-filter": "Vis bare oppføringer som ble fanget av en gitt filter-ID.",
+ "apihelp-query+abuselog-param-limit": "Maksimalt antall oppføringer som skal listes opp.",
+ "apihelp-query+abuselog-param-prop": "Hvilke egenskaper som skal hentes.",
+ "apihelp-query+abuselog-example-1": "Vis nylige loggoppføringer",
+ "apihelp-query+abuselog-example-2": "Vis nylige loggoppføringer for [[API]]",
+ "apierror-abusefilter-canttest": "Du har ikke tillatelse til å teste misbruksfiltre.",
+ "apierror-abusefilter-cantcheck": "Du har ikke tillatelse til å sjekke syntaksen til misbruksfiltre.",
+ "apierror-abusefilter-nosuchlogid": "Det er ingen misbruksloggoppføring med ID $1.",
+ "apierror-abusefilter-badsyntax": "Filteret har ugyldig syntaks."
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/nds-nl.json b/www/wiki/extensions/AbuseFilter/i18n/nds-nl.json
new file mode 100644
index 00000000..36821c57
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/nds-nl.json
@@ -0,0 +1,184 @@
+{
+ "@metadata": {
+ "authors": [
+ "Servien"
+ ]
+ },
+ "abusefilter-desc": "Voert automaties heuristiese analyse uut op bewarkingen",
+ "abusefilter": "Filterinstellingen",
+ "abuselog": "Filterlogboek",
+ "abusefilter-intro": "Welkom bie t beheerscharm veur bewarkingsfilters.\nt Filtersysteem past automatiese heuristiek toe op alle haandelingen.\nDit scharm löt alle in-estelden filters zien, en gif de meugelikheid ze an te passen.",
+ "abusefilter-mustbeeditor": "Um veiligheidsredens hebben allinnig gebrukers mit t recht um misbruukfilters te wiezigen de meugelikheid dit beheerscharm te gebruken.",
+ "abusefilter-warning": "'''Waorschuwing''': disse haandeling wörden automaties as schaolik ezien.\nOnkonstruktieve haandelingen wörden gauw weerummedreid, en herhaoldelik onkonstruktief bewarken eindigt in n blokkering van joew gebruker of IP-adres.\nA'j denken dat disse haandeling wel konstruktief is, bevestig joew haandeling dan nogmaols.\nn Korte beschrieving van de regel op baosis waorvan joew haandeling tegenehölden is: $1",
+ "abusefilter-disallowed": "Disse haandeling wörden automaties as schaolik ezien, en is daorumme niet toe-estaon.\nA'j denken dat joew haandeling wel konstruktief was, meld dan an de beheerder wa'j probeerden te doon.\nn Korte beschrieving van de regel op baosis waorvan joew haandeling tegenehölden is: $1",
+ "abusefilter-blocked-display": "Disse haandeling wörden automaties as schaolik ezien, en is daorumme niet uutevoerd.\nUm {{SITENAME}} te bescharmen bin joew gebruker en alle IP-adressen die daorbie heuren eblokkeerd.\nAs disse maotregel onterecht eneumen is, neem dan kontakt op mit n beheerder.\nn Korte beschrieving van de regel op baosis waorvan joew haandeling tegenehölden is: $1",
+ "abusefilter-degrouped": "Disse haandeling wörden automaties as schaolik ezien. \nUmdat vastesteld is dat disse gebruker meugelik deur n aander misbruukt wörden, bin alle rechten in-etrökken.\nAs disse maotregel onterecht eneumen is, neem dan kontakt op mit n burokraot, en vertel hum wa'j zojuust edaon hebben, zodat joew rechten hersteld kunnen wörden.\nn Korte beschrieving van de regel op baosis waorvan joew haandeling tegenehölden is: $1",
+ "abusefilter-autopromote-blocked": "Disse haandeling wörden automaties as schaolik ezien, en is daorumme niet uutevoerd.\nAs anvullende veiligsheidsmaotregel bin n stuk of wat rechten die automaties toe-ekend bin tiejelik in-etrökken veur joew gebruker.\nn Korte beschrieving van de regel op baosis waorvan joew haandeling tegenehölden is: $1",
+ "abusefilter-blocker": "Misbruukfilter",
+ "abusefilter-blockreason": "Automaties eblokkeerd deur de misbruukfilter.\nBeschrieving van de regel die hierveur zörgden: $1",
+ "abusefilter-degroupreason": "Rechten bin automaties in-etrökken deur de misbruukfilter. Regelbeschrieving: $1",
+ "abusefilter-accountreserved": "Disse gebrukersnaam is ereserveerd veur de misbruukfilter",
+ "right-abusefilter-modify": "Misbruukfilters wiezigen",
+ "right-abusefilter-view": "Misbruukfilters bekieken",
+ "right-abusefilter-log": "t Misbruukfilterlogboek bekieken",
+ "right-abusefilter-log-detail": "Details van misbruuklogboekregels bekieken",
+ "right-abusefilter-private": "Priveegegevens in t misbruuklogboek bekieken",
+ "right-abusefilter-modify-restricted": "Misbruukfilters mit beteunden haandelingen wiezigen",
+ "right-abusefilter-revert": "Alle wiezigingen deur n misbruukfilter weerummedreien",
+ "right-abusefilter-view-private": "Misbruukfilters bekieken die as privee emarkeerd bin",
+ "right-abusefilter-log-private": "Logboekregels bekieken veur misbruukfilter die emarkeerd bin as privee",
+ "right-abusefilter-hide-log": "Meldinging in t misbruukfilterlogboek verbargen",
+ "right-abusefilter-hidden-log": "Verbörgen misbruuklogboekregels bekieken",
+ "right-abusefilter-modify-global": "Globale misbruukfilters anmaken of anpassen",
+ "action-abusefilter-modify": "misbruukfilters wiezigen",
+ "action-abusefilter-view": "misbruukfilters bekieken",
+ "action-abusefilter-log": "t misbruukfilterlogboek bekieken",
+ "action-abusefilter-log-detail": "details van misbruuklogboekregels bekieken",
+ "action-abusefilter-private": "priveegegevens in t misbruuklogboek bekieken",
+ "action-abusefilter-modify-restricted": "misbruukfilters mit beteunden haandelingen wiezigen",
+ "action-abusefilter-revert": "alle wiezigingen deur n misbruukfilter weerummedreien",
+ "action-abusefilter-view-private": "misbruukfilters bekieken die as privee emarkeerd bin",
+ "abusefilter-log": "Misbruukfilterlogboek",
+ "abusefilter-log-summary": "Dit logboek löt n lieste zien van haandelingen die de filters op-evöngen hebben.",
+ "abusefilter-log-search": "t Misbruukfilterlogboek deurzeuken",
+ "abusefilter-log-search-user": "Gebruker:",
+ "abusefilter-log-search-filter": "Filternummer:",
+ "abusefilter-log-search-title": "Titel:",
+ "abusefilter-log-search-wiki": "Wiki:",
+ "abusefilter-log-search-submit": "Zeuken",
+ "abusefilter-log-entry": "$1: $2 zörgden derveur dat n misbruukfilter aofgung bie t uutvoeren van de haandeling \"$3\" op $4.\nEneumen maotregel: $5.\nFilterbeschrieving: $6",
+ "abusefilter-log-detailedentry-meta": "$1: $2 zörgden derveur dat $3 aofgung bie t uutvoeren van de haandeling \"$4\" op $5.\nEneumen maotregel: $6.\nFilterbeschrieving: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "globale filter $1",
+ "abusefilter-log-detailedentry-local": "filter $1",
+ "abusefilter-log-detailslink": "details",
+ "abusefilter-log-diff": "wiezig",
+ "abusefilter-log-hidelink": "zichtbaorheid anpassen",
+ "abusefilter-log-details-legend": "Details veur logboekregel $1",
+ "abusefilter-log-details-var": "Variabel",
+ "abusefilter-log-details-val": "Weerde",
+ "abusefilter-log-details-vars": "Maotregelparameters",
+ "abusefilter-log-details-private": "Beparkt zichtbaore gegevens",
+ "abusefilter-log-details-ip": "IP-adres",
+ "abusefilter-log-noactions": "gien",
+ "abusefilter-log-details-diff": "Wiezigingen in de bewarking",
+ "abusefilter-log-linkoncontribs": "filterlogboek",
+ "abusefilter-log-hidden": "(melding verbörgen)",
+ "abusefilter-log-hide-legend": "Logboekregel verbargen",
+ "abusefilter-log-hide-id": "Logboekmeldingsnummer:",
+ "abusefilter-log-hide-reason": "Reden:",
+ "abusefilter-logentry-suppress": "hef [[$1]] verbörgen",
+ "abusefilter-logentry-unsuppress": "hef [[$1]] zichtbaor emaakt",
+ "abusefilter-list": "Alle filters",
+ "abusefilter-list-id": "Filternummer",
+ "abusefilter-list-status": "Staotus",
+ "abusefilter-list-public": "Publieke beschrieving",
+ "abusefilter-list-consequences": "Gevolgen",
+ "abusefilter-list-visibility": "Zichtbaorheid",
+ "abusefilter-list-hitcount": "Antal keer bekeken",
+ "abusefilter-list-edit": "Bewarken",
+ "abusefilter-list-details": "Details",
+ "abusefilter-list-limit": "Antal per zied:",
+ "abusefilter-list-lastmodified": "Leste wieziging",
+ "abusefilter-list-group": "Filtergroep",
+ "abusefilter-hidden": "Beteund",
+ "abusefilter-unhidden": "Openbaor",
+ "abusefilter-enabled": "An-ezet",
+ "abusefilter-deleted": "Vortedaon",
+ "abusefilter-disabled": "Uutezet",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|evunnen|evunnen}}",
+ "abusefilter-new": "Nieje filter anmaken",
+ "abusefilter-status-global": "Globaal",
+ "abusefilter-list-options": "Opsies",
+ "abusefilter-list-options-scope-local": "Lokale wiki",
+ "abusefilter-list-options-scope-global": "Globale regels",
+ "abusefilter-list-options-submit": "Biewarken",
+ "abusefilter-tools-expr": "Expressietester",
+ "abusefilter-tools-submitexpr": "Evalueren",
+ "abusefilter-tools-reautoconfirm-user": "Gebruker:",
+ "abusefilter-tools-reautoconfirm-submit": "Opniej automaties bevestigen",
+ "abusefilter-edit-status-label": "Staotistieken:",
+ "abusefilter-edit-new": "Nieje filter",
+ "abusefilter-edit-save": "Filter opslaon",
+ "abusefilter-edit-id": "Filternummer:",
+ "abusefilter-edit-description": "Beschrieving:\n:''(publiekelik zichtbaor)''",
+ "abusefilter-edit-group": "Filtergroep:",
+ "abusefilter-edit-flags": "Markeringen:",
+ "abusefilter-edit-enabled": "Dit filter anzetten",
+ "abusefilter-edit-rules": "Regels:",
+ "abusefilter-edit-notes": "Opmarkingen:\n:''(beparkt zichtbaor)''",
+ "abusefilter-edit-lastmod-text": "deur $2 op $3 um $4",
+ "abusefilter-edit-hitcount": "Filtertreffers:",
+ "abusefilter-edit-throttle-period": "Tiedspanne:",
+ "abusefilter-edit-warn-other": "Aander bericht",
+ "abusefilter-edit-warn-actions": "Haandelingen:",
+ "abusefilter-edit-main": "Filterparameters",
+ "abusefilter-edit-done-subtitle": "Filter ewiezigd",
+ "abusefilter-edit-history": "Geschiedenisse:",
+ "abusefilter-edit-builder-group-op-arithmetic": "Aritmiese operatoren",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Optellen (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Aoftrekken (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Vermenigvuldigen (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Delen (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Modulus (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Machtsverheffen (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Vergeliekingsoperatoren",
+ "abusefilter-edit-builder-op-comparison-equal": "Gelieke an (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Niet gelieke an (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "Kleiner as (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Groter as (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Kleiner as of gelieke an (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Groter as of gelieke an (>=)",
+ "abusefilter-edit-builder-group-op-bool": "Booleaanse operatoren",
+ "abusefilter-edit-builder-op-bool-not": "Niet (!)",
+ "abusefilter-edit-builder-op-bool-and": "En (&)",
+ "abusefilter-edit-builder-op-bool-or": "Of (|)",
+ "abusefilter-edit-builder-group-misc": "Overige",
+ "abusefilter-edit-builder-misc-stringlit": "Letterlike tekste (\"\")",
+ "abusefilter-edit-builder-misc-tern": "Ternaere operator (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "Veurweerdelik (as X dan Y aanders Z)",
+ "abusefilter-edit-builder-group-funcs": "Funksies",
+ "abusefilter-edit-builder-funcs-length": "Tekstlengte (length)",
+ "abusefilter-edit-builder-funcs-lcase": "Mit kleine letters (lcase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "Verwarrende tekens normaliseren (ccnorm)",
+ "abusefilter-edit-builder-funcs-norm": "Normaliseren (norm)",
+ "abusefilter-edit-builder-funcs-substr": "Tekstdeel (substr)",
+ "abusefilter-edit-builder-funcs-set_var": "Variabele instellen (set_var)",
+ "abusefilter-edit-builder-group-vars": "Variabels",
+ "abusefilter-edit-builder-vars-action": "Aksie",
+ "abusefilter-edit-builder-vars-delta": "Groottewieziging",
+ "abusefilter-edit-builder-vars-newsize": "Nieje ziedgrootte",
+ "abusefilter-edit-builder-vars-oldsize": "Ouwe ziedgrootte",
+ "abusefilter-edit-builder-vars-summary": "Bewarkingssamenvatting",
+ "abusefilter-edit-builder-vars-article-id": "Zied-ID",
+ "abusefilter-edit-builder-vars-article-ns": "Ziednaamruumte",
+ "abusefilter-edit-builder-vars-article-text": "Ziednaam (zonder naamruumte)",
+ "abusefilter-history-hidden": "verbörgen",
+ "abusefilter-history-enabled": "An-ezet",
+ "abusefilter-history-global": "Globaal",
+ "abusefilter-history-timestamp": "Tied",
+ "abusefilter-history-user": "Gebruker",
+ "abusefilter-history-public": "Publieke filterbeschrieving",
+ "abusefilter-history-flags": "Markeringen",
+ "abusefilter-history-filter": "Filterregel",
+ "abusefilter-history-comments": "Opmarkingen",
+ "abusefilter-history-actions": "Maotregels",
+ "abusefilter-history-deleted": "Vortedaon",
+ "abusefilter-history-filterid": "Filter",
+ "abusefilter-history-select-legend": "Zeukopdrachte verfienen",
+ "abusefilter-history-select-user": "Gebruker:",
+ "abusefilter-history-select-submit": "Verfienen",
+ "abusefilter-history-diff": "Wiezigingen",
+ "abusefilter-action-tag": "Etiket",
+ "abusefilter-action-throttle": "Limieten",
+ "abusefilter-action-warn": "Waorschuwen",
+ "abusefilter-action-blockautopromote": "Automaties promoveren blokkeren",
+ "abusefilter-action-block": "Blokkeren",
+ "abusefilter-action-degroup": "Uut groepen vortedaon",
+ "abusefilter-action-rangeblock": "IP-reeks blokkeren",
+ "abusefilter-action-disallow": "Niet toe-estaon",
+ "abusefilter-revert-title": "Alle wiezigingen deur filter $1 weerummedreid",
+ "abusefilter-revert-periodstart": "Begin periode:",
+ "abusefilter-revert-periodend": "Einde periode:",
+ "abusefilter-revert-search": "Maotregels selekteren",
+ "abusefilter-revert-filter": "Filter:"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/nds.json b/www/wiki/extensions/AbuseFilter/i18n/nds.json
new file mode 100644
index 00000000..3b7bba8d
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/nds.json
@@ -0,0 +1,343 @@
+{
+ "@metadata": {
+ "authors": [
+ "Joachim Mos",
+ "Slomox",
+ "Matma Rex"
+ ]
+ },
+ "abusefilter-desc": "Föhrt automaatsch heuristische Analysen op Ännern ut",
+ "abusefilter": "Missbruukfilter instellen",
+ "abuselog": "Missbruuk-Logbook",
+ "abusefilter-intro": "Willkamen bi dat Verwalten vun’n Missbruukfilter.\nDe Missbruukfilter it en automaatsch Warktüüch, dat automaatsche Heuristiken op all Ännern anwennt.\nDisse Bildschirm wiest en List mit all defineerte Filters un verlöövt dat, jem to ännern.",
+ "abusefilter-mustbeeditor": "Ut Sekerheitsgrünn dröfft blot Brukers mit dat Recht, Missbruukfilters to ännern, dissen Bildschirm sehn.",
+ "abusefilter-warning": "'''Wohrschau''': Diene Akschoon is dör en automaatschen Filter as mööglicherwies negativ kennt worrn.\nSo’n Bidrääg warrt normalerwies gau wedder utsorteert. Wenn dat fakener vörkummt oder to dull is, denn warrt dien Brukerkonto oder dien IP-Adress sperrt.\nWenn du meenst, dat dien Ännern nich negativ is, denn kannst du noch wedder versöken em to spiekern.\nDor liggt dat an, dat de Filter meckert: $1",
+ "abusefilter-disallowed": "Diene Akschoon is dör en automaatschen Filter as negativ kennt worrn un is nich verlöövt.\nWenn du meenst, dat dien Ännern nich negativ is, denn kannst du en Administrater schrieven un em seggen, wat du doon wullst, dat he di helpt.\nDor liggt dat an, dat de Filter meckert: $1",
+ "abusefilter-blocked-display": "Diene Akschoon is dör en automaatschen Filter as negativ kennt worrn un is nich verlöövt.\n{{SITENAME}} to schulen, sünd dorüm dien Brukerkonto un dien IP-Adress sperrt worrn.\nWenn du meenst, dat dien Ännern nich negativ is, denn kannst du en Administrater för Help fragen.\nDor liggt dat an, dat de Filter meckert: $1",
+ "abusefilter-degrouped": "Diene Akschoon is dör en automaatschen Filter as mööglicherwies negativ kennt worrn un is nich verlöövt.\nDe Software mutt nu dor vun utgahn, dat dien Brukerkonto (villicht ok vun en annern) missbruukt warrt un hett all dien Brukerrechten intagen.\nWenn du meenst, dat dor en Fehler passeert is, denn kannst du en Bürokraat schrieven un em de Saak verkloren. He kann di dien Brukerrechten weddergeven, wenn de Filter verkehrt legen hett.\nDor liggt dat an, dat de Filter meckert: $1",
+ "abusefilter-autopromote-blocked": "Diene Akschoon is dör en automaatschen Filter as negativ kennt worrn un is nich verlöövt.\nUt Sekerheitsgrünn sünd dorüm ok en poor vun de Brukerrechten intagen worrn, de Brukers kriegt, de länger dorbi sünd, un dien Brukerkonto warrt nu för en Tied eerst wedder so behannelt, as wenn du frisch dorbi büst.\nDor liggt dat an, dat de Filter meckert: $1",
+ "abusefilter-blocker": "Missbruuk-Filter",
+ "abusefilter-blockreason": "Du büst dör en Missbruukfilter automaatsch sperrt worrn.\nDat liggt dor an: $1",
+ "abusefilter-degroupreason": "Diene Rechten sünd vun’n Missbruukfilter automaatsch inschränkt worrn. De Regel is: $1",
+ "abusefilter-accountreserved": "Disse Brukernaam is för den Missbruukfilter reserveert.",
+ "right-abusefilter-modify": "Missbruukfilters ännern",
+ "right-abusefilter-view": "Missbruukfilters ankieken",
+ "right-abusefilter-log": "Missbruukfilter-Logbook ankieken",
+ "right-abusefilter-log-detail": "Missbruukfilter-Logbook mit mehr Details ankieken",
+ "right-abusefilter-private": "Private Daten in dat Missbruukfilter-Logbook ankieken",
+ "right-abusefilter-modify-restricted": "Missbruukfilter mit verbadene Akschonen ännern",
+ "right-abusefilter-revert": "All Ännern na en Missbruukfilter trüchdreihn",
+ "action-abusefilter-modify": "Missbruukfilters ännern",
+ "action-abusefilter-view": "Missbruukfilters ankieken",
+ "action-abusefilter-log": "Missbruukfilter-Logbook ankieken",
+ "action-abusefilter-log-detail": "dat Missbruukfilter-Logbook mit mehr Details ankieken",
+ "action-abusefilter-private": "private Daten in’t Missbruukfilter-Logbook antokieken",
+ "action-abusefilter-modify-restricted": "Missbruukfilters mit verbadene Akschonen to ännern",
+ "action-abusefilter-revert": "all Ännern na en bestimmten Missbruukfilter trüchtodreihn",
+ "abusefilter-log": "Missbruukfilter-Logbook",
+ "abusefilter-log-summary": "Dit Logbook wiest en List mit all Akschonen, bi de en Filter anslagen hett.",
+ "abusefilter-log-search": "In dat Missbruukfilter-Logbook söken",
+ "abusefilter-log-search-user": "Bruker:",
+ "abusefilter-log-search-filter": "Filter-ID:",
+ "abusefilter-log-search-title": "Titel:",
+ "abusefilter-log-search-wiki": "Wiki:",
+ "abusefilter-log-search-submit": "Söken",
+ "abusefilter-log-entry": "$1: $2 hett en Missbruukfilter utlööst, as he de Akschoon „$3“ op „$4“ anwennt hett.\nFilterakschoon: „$5“;\nWat dat för’n Filter is: „$6“",
+ "abusefilter-log-detailedentry-meta": "$1: $2 hett den $3 utlööst, as he de Akschoon „$4“ op „$5“ anwennt hett.\nFilterakschoon: $6;\nWat dat för’n Filter is: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "globaal Filter $1",
+ "abusefilter-log-detailedentry-local": "Filter $1",
+ "abusefilter-log-detailslink": "Details",
+ "abusefilter-log-details-legend": "Details för Logbook-Indrag $1",
+ "abusefilter-log-details-var": "Variable",
+ "abusefilter-log-details-val": "Weert",
+ "abusefilter-log-details-vars": "Akschoonsparameters",
+ "abusefilter-log-details-private": "Private Daten",
+ "abusefilter-log-details-ip": "IP-Adress",
+ "abusefilter-log-noactions": "keen",
+ "abusefilter-log-details-diff": "Wat sik mit’t Ännern ännert hett",
+ "abusefilter-log-linkoncontribs": "Missbruuk-Logbook",
+ "abusefilter-log-linkoncontribs-text": "Missbruuk-Logbook för dissen Bruker",
+ "abusefilter-management": "Missbruukfilter instellen",
+ "abusefilter-list": "All Filters",
+ "abusefilter-list-id": "Filter-ID",
+ "abusefilter-list-status": "Status",
+ "abusefilter-list-public": "Apen Beschrievung",
+ "abusefilter-list-consequences": "Naklapp",
+ "abusefilter-list-visibility": "Sichtborkeit",
+ "abusefilter-list-hitcount": "Tall todrapen",
+ "abusefilter-list-edit": "Ännern",
+ "abusefilter-list-details": "Details",
+ "abusefilter-list-limit": "Tall per Sied:",
+ "abusefilter-list-lastmodified": "Tolest ännert",
+ "abusefilter-hidden": "Privat",
+ "abusefilter-unhidden": "Apen",
+ "abusefilter-enabled": "Anstellt",
+ "abusefilter-deleted": "Wegdaan",
+ "abusefilter-disabled": "Utstellt",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|Fund|Funnen}}",
+ "abusefilter-new": "Stell en ne’en Filter op",
+ "abusefilter-return": "Trüch na Filter instellen",
+ "abusefilter-status-global": "Globaal",
+ "abusefilter-list-options": "Optionen",
+ "abusefilter-list-options-deleted": "Wegsmeten Filters:",
+ "abusefilter-list-options-deleted-only": "Blot wegsmeten Filters wiesen",
+ "abusefilter-list-options-deleted-hide": "Wegsmeten Filters versteken",
+ "abusefilter-list-options-deleted-show": "Wegsmeten Filters wiesen",
+ "abusefilter-list-options-disabled": "Utschalt Filters:",
+ "abusefilter-list-options-hidedisabled": "Utschalt Filters versteken",
+ "abusefilter-list-options-submit": "Aktuell maken",
+ "abusefilter-tools-text": "Op disse Sied gifft dat en poor Warktüüch, de bi dat Opstellen vun Missbruukfilters un bi de Fehlersöök helpen köönt.",
+ "abusefilter-tools-expr": "Expression-Tester",
+ "abusefilter-tools-submitexpr": "Evalueren",
+ "abusefilter-tools-reautoconfirm": "„Bestätigt-Bruker“-Status wedderhalen",
+ "abusefilter-tools-reautoconfirm-user": "Bruker:",
+ "abusefilter-tools-reautoconfirm-submit": "Wedder to en bestätigten Bruker maken",
+ "abusefilter-reautoconfirm-none": "Disse Bruker is de „Bestätigt-Bruker“-Status nich wegnahmen worrn.",
+ "abusefilter-reautoconfirm-notallowed": "Du hest nich de Rechten, Brukers wedder den Status as bestätigten Bruker to geven.",
+ "abusefilter-reautoconfirm-done": "„Bestätigt-Bruker“-Status is wedderhaalt worrn",
+ "abusefilter-status": "Vun {{PLURAL:$1|de letzte Akschoon|de letzten $1 Akschonen}} {{PLURAL:$2|hett een|hebbt $2}} ($3 %) den Grenzweert vun $4 anlangt.\n{{PLURAL:$5|Een Akschoon|$5 Akschonen}} ($6 %) {{PLURAL:$5|is|sünd}} vun een vun de aktiven Filters kennt worrn.",
+ "abusefilter-edit-subtitle": "An’t Ännern vun Filter $1",
+ "abusefilter-edit-oldwarning": "<strong>Du ännerst jüst en ole Version vun’n Filter.\nDe Statistik gellt blot för de jüngste Version vun’n Filter.\nWenn du spiekerst, warrt all Ännern överschreven, de sieddem an’n Filter maakt worrn sünd.</strong> &bull;\n[[Special:AbuseFilter/history/$2|Trüch na de Versionsgeschicht vun’n Filter]].",
+ "abusefilter-edit-status-label": "Statistiken:",
+ "abusefilter-edit-status": "Vun de {{PLURAL:$1|leste een Akschoon|lesten $1 Akschonen}} hett de Filter op $2 ($3 %) passt.\nIn’n Dörsnidd is de Looptied $4 ms.",
+ "abusefilter-edit-status-profile": "Vun de {{PLURAL:$1|leste een Akschoon|lesten $1 Akschonen}} hett de Filter op $2 ($3 %) passt.\nIn’n Dörsnidd is de Looptied $4 ms.",
+ "abusefilter-edit-new": "Nee Filter",
+ "abusefilter-edit-save": "Filter spiekern",
+ "abusefilter-edit-id": "Filter-ID:",
+ "abusefilter-edit-description": "Beschrievung:\n:''(apen to sehn)''",
+ "abusefilter-edit-flags": "Flaggen:",
+ "abusefilter-edit-enabled": "Filter anmaken",
+ "abusefilter-edit-deleted": "As wegsmeten marken",
+ "abusefilter-edit-hidden": "Details över den Filter nich apen wiesen",
+ "abusefilter-edit-global": "Dissen Filter globaal anwennen",
+ "abusefilter-edit-rules": "Regeln:",
+ "abusefilter-edit-notes": "Notizen:\n:''(privat)''",
+ "abusefilter-edit-lastmod": "Filter tolest ännert:",
+ "abusefilter-edit-lastmod-text": "$1 vun $2",
+ "abusefilter-edit-hitcount": "Filter-Funnen:",
+ "abusefilter-edit-consequences": "Wat passeren schall, wenn de Filter wat funnen hett",
+ "abusefilter-edit-action-warn": "Disse Akschonen utföhren, nadem de Bruker wohrschaut is",
+ "abusefilter-edit-action-disallow": "Vörkamen, dat de Bruker de Akschoon utföhrt",
+ "abusefilter-edit-action-blockautopromote": "„Bestätigt-Benutzer“-Status wegnehmen",
+ "abusefilter-edit-action-degroup": "Den Bruker all Sünnerrechten wegnehmen",
+ "abusefilter-edit-action-block": "Bruker/IP-Adress sperren",
+ "abusefilter-edit-action-throttle": "Akschoon blot utlösen, wenn de Bruker en bestimmt Weert överschritt",
+ "abusefilter-edit-action-rangeblock": "/16-IP-Block sperren, den de Bruker bruukt",
+ "abusefilter-edit-action-tag": "Ännern för genauer Ankieken kennteken.",
+ "abusefilter-edit-throttle-count": "Tall verlöövt Akschonen:",
+ "abusefilter-edit-throttle-period": "Tiedduur:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|Sekunn|Sekunnen}}",
+ "abusefilter-edit-throttle-groups": "Regeln för dat Begrenzen för de Gruppen:\n:''(een per Reeg, verbinnen mit Kommas)''",
+ "abusefilter-edit-warn-message": "Systemnaricht för Wohrschauen:",
+ "abusefilter-edit-warn-other": "Annere Naricht",
+ "abusefilter-edit-warn-other-label": "Siedennaam vun en annere Systemnaricht:\n:''(ahn MediaWiki-Präfix)''",
+ "abusefilter-edit-warn-actions": "Akschonen:",
+ "abusefilter-edit-warn-preview": "Vörschau vun de utwählt Systemnaricht",
+ "abusefilter-edit-warn-edit": "Utwählt Systemnaricht opstellen/ännern",
+ "abusefilter-edit-tag-tag": "totofögen Labels (een per Reeg):",
+ "abusefilter-edit-denied": "Du kannst de Details för dissen Filter nich ankieken, de sünd versteken.",
+ "abusefilter-edit-main": "Filterparameters",
+ "abusefilter-edit-done-subtitle": "Filter ännert",
+ "abusefilter-edit-done": "Dien Ännern an’n Filter $1 sünd nu spiekert.",
+ "abusefilter-edit-badsyntax": "De vun di angeven Filter hett en Syntaxfehler.\nDe Parserutgaav weer: <pre>$1</pre>",
+ "abusefilter-edit-restricted": "Du kannst dissen Filter nich ännern, dor sünd een oder mehr verbadene Akschonen in.\nFraag en Bruker, de verbadene Akschonen tofögen dröff, dat he dat för di deit.",
+ "abusefilter-edit-viewhistory": "Versionsgeschicht för’n Filter ankieken",
+ "abusefilter-edit-history": "Historie:",
+ "abusefilter-edit-check": "Syntax nakieken",
+ "abusefilter-edit-badfilter": "Den angeven Filter gifft dat nich",
+ "abusefilter-edit-revert": "Akschonen vun dissen Filter trüchdreihn",
+ "abusefilter-edit-tools": "Warktüüch:",
+ "abusefilter-edit-test-link": "Dissen Filter an de letzten Ännern testen",
+ "abusefilter-edit-export": "Dissen Filter na en anner Wiki exporteren",
+ "abusefilter-edit-builder-select": "Wähl en Option ut, dat du ehr bi’n Cursor inföögst",
+ "abusefilter-edit-builder-group-op-arithmetic": "Arithmeetsche Operatorn",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Totellen (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Aftrecken (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Maalnehmen (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Delen (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Modulo (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Potenz (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Verglieksoperatorn",
+ "abusefilter-edit-builder-op-comparison-equal": "Is gliek (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Is nich gliek (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "Lütter as (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Grötter as (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Lütter as oder gliek (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Grötter as oder gliek (>=)",
+ "abusefilter-edit-builder-group-op-bool": "Boolesche Operatorn",
+ "abusefilter-edit-builder-op-bool-not": "Nich (!)",
+ "abusefilter-edit-builder-op-bool-and": "Un (&)",
+ "abusefilter-edit-builder-op-bool-or": "Oder (|)",
+ "abusefilter-edit-builder-group-misc": "Verscheden",
+ "abusefilter-edit-builder-misc-in": "is in de Tekenkeed in (in)",
+ "abusefilter-edit-builder-misc-like": "Passt to dat Munster (like)",
+ "abusefilter-edit-builder-misc-rlike": "Passt to den regulären Utdruck (rlike)",
+ "abusefilter-edit-builder-misc-contains": "Rechte Tekenkeed steckt in linke Tekenkeed in (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "Tekenkeed jüst so (\"\")",
+ "abusefilter-edit-builder-misc-tern": "Wenn-Denn-Ans-Operator (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "Wenn-Denn-Ans (if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "Funkschonen",
+ "abusefilter-edit-builder-funcs-length": "Längd vun de Tekenkeed (length)",
+ "abusefilter-edit-builder-funcs-lcase": "na lüttje Bookstaven ümwanneln (lcase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "Verwesselbore Teken normaliseren (ccnorm)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "Dubbelte Teken rutnehmen (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "Spezialteken / Teken alltohoop (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "Normaliseren (norm)",
+ "abusefilter-edit-builder-funcs-count": "Wo faken kummt de Tekenkeed X in de Tekenkeed Y vör (count)",
+ "abusefilter-edit-builder-funcs-rcount": "Wo faken kummt de reguläre Utdruck X in de Tekenkeed Y vör (count)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "Leerteken rutnehmen (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "Sünnerteken rutnehmen (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "Is IP in’n IP-Block? (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "Text na mehr Deel-Textkeden op mal dörsöken (contains_any)",
+ "abusefilter-edit-builder-funcs-substr": "Deel-Tekenkeed (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "Platz vun de Deel-Tekenkeed in de Tekenkeed (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "Deel-Tekenkeed gegen Tekenkeed uttuuschen (str_replace)",
+ "abusefilter-edit-builder-funcs-set_var": "Variabel setten (set_var)",
+ "abusefilter-edit-builder-group-vars": "Variablen",
+ "abusefilter-edit-builder-vars-accountname": "Brukernaam (bi dat Opstellen vun dat Brukerkonto)",
+ "abusefilter-edit-builder-vars-timestamp": "Unix-Tiedstempel vun Ännern",
+ "abusefilter-edit-builder-vars-action": "Akschoon",
+ "abusefilter-edit-builder-vars-addedlines": "Toföögt Regen",
+ "abusefilter-edit-builder-vars-delta": "Üm woveel hett sik de Siedengrött ännert",
+ "abusefilter-edit-builder-vars-diff": "Vereenigt Ünnerscheed vun’t Ännern",
+ "abusefilter-edit-builder-vars-newsize": "Ne’e Siedengrött",
+ "abusefilter-edit-builder-vars-oldsize": "Ole Siedengrött",
+ "abusefilter-edit-builder-vars-removedlines": "Rutnahmen Regen",
+ "abusefilter-edit-builder-vars-summary": "Grund för’t Ännern",
+ "abusefilter-edit-builder-vars-article-id": "Sieden-ID",
+ "abusefilter-edit-builder-vars-article-ns": "Naamruum vun de Sied",
+ "abusefilter-edit-builder-vars-article-text": "Siedennaam (ahn Naamruum)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Vullen Siedennaam",
+ "abusefilter-edit-builder-vars-movedfrom-id": "Sieden-ID vun de to schuven Sied",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "Naamruum vun de to schuven Sied",
+ "abusefilter-edit-builder-vars-movedfrom-text": "Naam vun de to schuven Sied",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "Vullen Naam vun de to schuven Sied",
+ "abusefilter-edit-builder-vars-movedto-id": "Sieden-ID vun de Sied, op de schaven warrt",
+ "abusefilter-edit-builder-vars-movedto-ns": "Naamruum vun de Sied, op de schaven warrt",
+ "abusefilter-edit-builder-vars-movedto-text": "Naam vun de Sied, op de schaven warrt",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "Vullen Naam vun de Sied, op de schaven warrt",
+ "abusefilter-edit-builder-vars-user-editcount": "Tall Bidrääg vun’n Bruker",
+ "abusefilter-edit-builder-vars-user-age": "Öller vun dat Brukerkonto",
+ "abusefilter-edit-builder-vars-user-name": "Naam vun dat Brukerkonto",
+ "abusefilter-edit-builder-vars-user-groups": "Gruppen (ok implizite), in de de Bruker Maat is",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "Tied, dat de E-Mail-Adress bestätigt worrn is",
+ "abusefilter-edit-builder-vars-recent-contributors": "De lesten teihn Brukers, de de Sied ännert hebbt",
+ "abusefilter-edit-builder-vars-all-links": "All Lenken na buten in’n ne’en Text",
+ "abusefilter-edit-builder-vars-added-links": "All toföögt Lenken na buten",
+ "abusefilter-edit-builder-vars-removed-links": "All rutnahmen Lenken na buten",
+ "abusefilter-edit-builder-vars-old-text": "Olen Wikitext vun de Sied, vör’t Ännern",
+ "abusefilter-edit-builder-vars-new-text": "Ne’en Wikitext vun de Sied, na’t Ännern",
+ "abusefilter-edit-builder-vars-new-text-stripped": "Ne’en Wikitext vun de Sied, all Wikisyntax rutnahmen",
+ "abusefilter-edit-builder-vars-new-html": "HTML-Borntext vun de ne’e Version",
+ "abusefilter-edit-builder-vars-restrictions-edit": "Schuul-Graad för Ännern an de Sied",
+ "abusefilter-edit-builder-vars-restrictions-move": "Schuul-Graad för’t Schuven vun de Sied",
+ "abusefilter-edit-builder-vars-old-text-stripped": "Olen Wikitext vun de Sied, all Wikisyntax rutnahmen",
+ "abusefilter-edit-builder-vars-old-links": "Lenken in de Sied, vör dat Ännern",
+ "abusefilter-edit-builder-vars-old-html": "HTML-Borntext vun de ole Version",
+ "abusefilter-edit-builder-vars-minor-edit": "Is de Ännern as lütt kenntekent",
+ "abusefilter-filter-log": "Letzte Ännern an Missbruukfilters",
+ "abusefilter-history": "Versionsgeschicht för Missbruukfilter $1",
+ "abusefilter-history-foruser": "Ännern vun $1",
+ "abusefilter-history-hidden": "Versteken",
+ "abusefilter-history-enabled": "An",
+ "abusefilter-history-global": "Globaal",
+ "abusefilter-history-timestamp": "Tied",
+ "abusefilter-history-user": "Bruker",
+ "abusefilter-history-public": "Apen Filterbeschrievung",
+ "abusefilter-history-flags": "Flaggen",
+ "abusefilter-history-filter": "Filterregel",
+ "abusefilter-history-comments": "Kommentare",
+ "abusefilter-history-actions": "Akschonen",
+ "abusefilter-history-backedit": "Trüch na’n Filtereditor",
+ "abusefilter-history-deleted": "Wegdaan",
+ "abusefilter-history-filterid": "Filter",
+ "abusefilter-history-select-legend": "Söök verfienern",
+ "abusefilter-history-select-user": "Bruker:",
+ "abusefilter-history-select-submit": "Verfienern",
+ "abusefilter-history-diff": "Ännern",
+ "abusefilter-history-error-hidden": "De opropen Filter is versteken. Sien Versionsgeschicht kann dorüm nich ankeken warrn.",
+ "abusefilter-exception-unexpectedatend": "Unverwacht „$2“ bi Teken „$1“.",
+ "abusefilter-exception-expectednotfound": "Verwacht $2 bi Teken $1 fehlt (dorför $3 $4 funnen).",
+ "abusefilter-exception-unrecognisedkeyword": "Nich kennt Slötelwoord $2 bi Teken $1.",
+ "abusefilter-exception-unexpectedtoken": "Unverwacht „$2“ (vun’n Typ $3) bi Teken „$1“.",
+ "abusefilter-exception-unclosedstring": "Tekenkeed bi Teken $1 warrt nich wedder slaten.",
+ "abusefilter-exception-invalidoperator": "Verkehrten Operator „$2“ bi Teken $1.",
+ "abusefilter-exception-unrecognisedtoken": "Token „$2“ bi Teken $1 nich kennt.",
+ "abusefilter-exception-noparams": "Funkschoon „$2“ bi Teken $1 hett keen Parameters.",
+ "abusefilter-exception-dividebyzero": "Bi Teken $1 warrt versöcht $2 dör Null to delen.",
+ "abusefilter-exception-unrecognisedvar": "Variabel $2 bi Teken $1 nich kennt",
+ "abusefilter-exception-notenoughargs": "De Funkschoon $2 sünd bi Teken $1 to wenig Parameters övergeven worrn.\n{{PLURAL:$3|$3 Parameter|$3 Parameters}} weren verwacht, dor {{PLURAL:$4|weer $4|weren $4}}.",
+ "abusefilter-exception-regexfailure": "Fehler in’n regulären Utdruck „$3“ bi Teken $1: „$2“",
+ "abusefilter-exception-overridebuiltin": "Verbaden Överschrieven vun inboot Variabel „$2“ bi Teken $1.",
+ "abusefilter-exception-outofbounds": "Anfeddern vun en nich vörhannen Listenindrag $2 (Listengrött: $3) bi Teken $1.",
+ "abusefilter-exception-notlist": "Anfeddern vun en Arrayelement ut en Nich-Array bi Teken „$1“.",
+ "abusefilter-action-tag": "Tag",
+ "abusefilter-action-throttle": "Begrenzen",
+ "abusefilter-action-warn": "Wohrschauen",
+ "abusefilter-action-blockautopromote": "Autopromote sperren",
+ "abusefilter-action-block": "Sperren",
+ "abusefilter-action-degroup": "Ut Gruppen rutnehmen",
+ "abusefilter-action-rangeblock": "IP-Block sperren",
+ "abusefilter-action-disallow": "Verbeden",
+ "abusefilter-revert-title": "All Ännern na Filter $1 trüchdreihn",
+ "abusefilter-revert-intro": "Mit dit Formular köönt all Ännern, de dör den Missbruukfilter vunwegen Filter $1 naakt worrn sünd, trüchsett warrn.\nBruuk dit Warktüüch mit Vörsicht.",
+ "abusefilter-revert-preview-item": "$1: $2 hett en $3 op $4 maakt.\nAkschonen, de trüchsett warrt: $5 ($6)",
+ "abusefilter-revert-search-legend": "Wähl de Akschonen vun’n Missbruukfilter, de trüchsett warrn schöölt",
+ "abusefilter-revert-periodstart": "Anfang vun de Tied:",
+ "abusefilter-revert-periodend": "Enn vun de Tied:",
+ "abusefilter-revert-search": "Akschonen utwählen",
+ "abusefilter-revert-filter": "Filter:",
+ "abusefilter-revert-preview-intro": "Ünnen staht de Akschonen vun’n Missbruukfilter, de dormit trüchsett warrt.\nKiek jem good dör un klick denn op „{{int:Abusefilter-revert-confirm}}“, dat du dien Utwahl bestätigst.",
+ "abusefilter-revert-confirm": "Tostimmen",
+ "abusefilter-revert-success": "Du hest all Akschonen vun’n Missbruukfilter vunwegen [[Special:AbuseFilter/$1|Filter $2]] trüchsett.",
+ "abusefilter-revert-reason": "Automaatsch Trüchsetten vun all Akschonen vun’n Missbruukfilter vunwegen Filter $1.\nGrund: $2",
+ "abusefilter-revert-reasonfield": "Grund för Trüchdreihn:",
+ "abusefilter-test": "Den Filter gegen öllere Ännern testen.",
+ "abusefilter-test-intro": "Mit disse Sied kann en Filter testwies op {{PLURAL:$1|dat leste Ännern|de lesten $1 Ännern}} anwennt warrn.\nEn vörhannen Filter to laden, geev sien Filter-ID in dat Feld ünner dat Änner-Finster an un klick op den „Laden“-Knopp.",
+ "abusefilter-test-legend": "Filter testen",
+ "abusefilter-test-load-filter": "Filter-ID laden:",
+ "abusefilter-test-submit": "Testen",
+ "abusefilter-test-load": "Laden",
+ "abusefilter-test-user": "Ännern vun’n Bruker:",
+ "abusefilter-test-period-start": "Ännern na:",
+ "abusefilter-test-period-end": "Ännern vör:",
+ "abusefilter-test-page": "Ännern an de Sied:",
+ "abusefilter-test-shownegative": "Wies Ännern, de nich to’n Filter passt",
+ "abusefilter-test-syntaxerr": "De angeven Filter hett en Syntaxfehler.\nWenn du op „{{int:Abusefilter-edit-check}}“ klickst, kriggst du dor mehr Infos to.",
+ "abusefilter-changeslist-examine": "ünnersöken",
+ "abusefilter-examine": "Enkelte Ännern ünnersöken",
+ "abusefilter-examine-intro": "Op disse Sied köönt de Variabeln ünnersöcht warrn, de de Missbruukfilter för en Ännern opstellt hett, un testwies mit Filters utprobeert warrn.",
+ "abusefilter-examine-legend": "Ännern utwählen",
+ "abusefilter-examine-diff": "URL för Ünnerscheed twischen Versionen:",
+ "abusefilter-examine-user": "Bruker:",
+ "abusefilter-examine-title": "Siedentitel:",
+ "abusefilter-examine-submit": "Söken",
+ "abusefilter-examine-vars": "Variabeln, de för dit Ännern genereert worrn sünd",
+ "abusefilter-examine-test": "Dit Ännern gegen en Filter testen.",
+ "abusefilter-examine-test-button": "Filter testen",
+ "abusefilter-examine-match": "De Filter passt to dit Ännern.",
+ "abusefilter-examine-nomatch": "De Filter passt nich to dit Ännern.",
+ "abusefilter-examine-syntaxerror": "De Syntax för’n Filter is verkehrt",
+ "abusefilter-examine-notfound": "De angeven Ännern kunn nich funnen warrn.",
+ "abusefilter-examine-incompatible": "De angeven Ännern warrt vun’n Missbruukfilter nich ünnerstütt.",
+ "abusefilter-examine-noresults": "Nix funnen mit de Söökparameters, de du angeven hest.",
+ "abusefilter-topnav": "'''Missbruukfilter-Navigatschoon'''",
+ "abusefilter-topnav-home": "Startsied",
+ "abusefilter-topnav-test": "Batchtesten",
+ "abusefilter-topnav-examine": "Öller Ännern ünnersöken",
+ "abusefilter-topnav-log": "Missbruuk-Logbook",
+ "abusefilter-topnav-tools": "Fehlersöök-Warktüüch",
+ "abusefilter-topnav-import": "Filter importeren",
+ "abusefilter-log-name": "Missbruukfilter-Logbook",
+ "abusefilter-log-header": "Dit Logbook wiest en Översicht över Ännern an Filters.\nFör mehr Details, kiek di [[Special:AbuseFilter/history|de List]] mit de lesten Ännern an Filters an.",
+ "abusefilter-diff-title": "Ünnerscheed twischen Versionen",
+ "abusefilter-diff-item": "Indrag",
+ "abusefilter-diff-version": "Version vun $1 vun $2",
+ "abusefilter-diff-info": "Basisinformatschoon",
+ "abusefilter-diff-pattern": "Filterregeln",
+ "abusefilter-diff-invalid": "Kunn de angeven Versionen nich halen",
+ "abusefilter-diff-backhistory": "Trüch na de Versionsgeschicht von’n Filter",
+ "abusefilter-import-intro": "Du kannst disse Sied bruken, Filters ut annere Wikis to importeren.\nKlick op dat Utgangswiki op „{{int:abusefilter-edit-export}}“ ünner „{{int:abusefilter-edit-tools}}“ bi dat Afänner-Finster.\nKopeer de Textbox, de dor wiest warrt, un föög den Text in disse Textbox in, klick denn op „{{int:abusefilter-import-submit}}“.",
+ "abusefilter-import-submit": "Daten importeren",
+ "abusefilter-group-default": "Default"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/ne.json b/www/wiki/extensions/AbuseFilter/i18n/ne.json
new file mode 100644
index 00000000..ccf69fc2
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/ne.json
@@ -0,0 +1,279 @@
+{
+ "@metadata": {
+ "authors": [
+ "Bhawani Gautam",
+ "Bhawani Gautam Rhk",
+ "Krish Dulal",
+ "RajeshPandey",
+ "सरोज कुमार ढकाल",
+ "बिप्लब आनन्द",
+ "राम प्रसाद जोशी",
+ "Matma Rex"
+ ]
+ },
+ "abusefilter-desc": "स्वचालित अनुमानित सम्पादनहरुकोनिम्ति लागु हुन्छ",
+ "abusefilter": "दुर्व्यवहार फिल्टर विन्यास",
+ "abuselog": "दुर्व्यवहार लग",
+ "abusefilter-intro": "दुर्व्यवहार फ़िल्टर प्रबन्धन अंतरफलकमा स्वागत छ।\nदुर्व्यवहार फ़िल्टर सबै कार्यमा स्वचालित heuristics (खोज)को लागि प्रयोग गरिने एउटा स्वचालित सफ्टवेयर प्रणाली हो।\nयस अंतरफलकले परिभाषित फिल्टरको एउटा सूची प्रदर्शित गर्छ, र परिवर्तन गर्ने अनुमति दिन्छ।",
+ "abusefilter-mustbeeditor": "सुरक्षा कारणहरूले गर्दा, दुर्व्यवहार फिल्टर परिवर्तन गर्ने अधिकार प्राप्त प्रयोगकर्ताहरूले मात्र यस अन्तरमोहोडाको प्रयोग गर्न सक्नेछन्।",
+ "abusefilter-warning": "'''चेतावनी:''' यो कार्य हानिकारक भनेर स्वतः चिनियो।\nध्वंसात्मक सम्पादन शीघ्र उल्टाइनेछ,\nर जबरजस्ती अथवा ध्वंसात्मक सम्पादन दोहोराएको परिणाम स्वरुप तपाईंको खाता अथवा IP ठेगानामा प्रतिबन्ध लगाइनेछ।\nयदि तपाईं आफ्नो सम्पादन रचनात्मक भएकोमा विश्वस्त हुनुहुन्छ भनें पुनः '''संग्रह गर्नुहोस्'''मा क्लिक गरेर सुनिश्चित गर्नुहोस्।\nदुर्व्यहार नीति जसमा तपाईंको कार्यसित मेल खाइरहेछ, यसको एउटा संक्षिप्त विवरण यस प्रकार छ: $1",
+ "abusefilter-disallowed": "यो कार्य हानिकारक भनेर स्वतः चिनियो, अनि यसकारण अनुमति छैन।\nयदि तपाईं आफ्नो सम्पादन रचनात्मक भएकोमा विश्वस्त हुनुहुन्छ भनें कृपया तपाईंले के गर्ने प्रयास गर्नु हुँदै थियो यो कुरा कुनै एक जना प्रबन्धकलाई जनाउनुहोस् ।\nदुर्व्यहार नीति जसमा तपाईंको कार्यसित मेल खाइरहेछ, यसको एउटा संक्षिप्त विवरण यस प्रकार छ: $1",
+ "abusefilter-blocked-display": "यो कार्य घातक भनेर स्वतः चिनियो,\nर तपाईंलाई यसको क्रियान्वयनमा रोक लगाइएकोछ।\nअनि {{SITENAME}}को सुरक्षाको निम्ति तपाईंको प्रयोगकर्ता खाता अनि सबै सम्बन्धित आई पी ठेगानाहरूमाथि पनि सम्पादन गर्न रोक\nलगाइएकोछ।\nयदि यो गल्तीले भएको भए कृपया प्रबन्धकसित सम्पर्क गर्नुहोला।\nयस गलत कार्य नीतिसित तपाईंको कार्यले मेल खाँदैछ, एउटा संक्षिप्त विवरण यस प्रकार छ :$1",
+ "abusefilter-blocker": "दुर्व्यवहार फिल्टर",
+ "right-abusefilter-modify": "दुर्व्यवहार फिल्टर परिमार्जन गर्ने",
+ "right-abusefilter-view": "दुर्व्यवहार फिल्टरहरु हेर्ने",
+ "right-abusefilter-log": "दुर्व्यवहार लग हेर्ने",
+ "right-abusefilter-log-detail": "विस्तृत दुरुपयोग लग प्रविष्टीहरू हेर्नुहोस्",
+ "right-abusefilter-private": "दुरुपयोग लगमा व्यक्तिगत डेटा हर्ने",
+ "action-abusefilter-modify": "दुर्व्यवहार फिल्टर परिवर्तन गर्ने",
+ "action-abusefilter-view": "दुर्व्यवहार फिल्टरहरु हेर्ने",
+ "action-abusefilter-log": "दुरुपयोग लगहरू हेर्नुहोस् \\",
+ "action-abusefilter-log-detail": "विस्तृत दुरुपयोग लग प्रविष्टीहरु हेर्नुहोस् \\",
+ "abusefilter-log": "दुर्व्यवहार लग",
+ "abusefilter-log-search": "दुर्व्यवहार लग खोज्ने",
+ "abusefilter-log-search-user": "प्रयोगकर्ता:",
+ "abusefilter-log-search-filter": "फिल्टर परिचय:",
+ "abusefilter-log-search-title": "शीर्षक:",
+ "abusefilter-log-search-wiki": "विकी:",
+ "abusefilter-log-search-submit": "खोज्नुहोस्",
+ "abusefilter-log-detailedentry-global": " विश्वव्यापी फिल्टर \"$1\" \\",
+ "abusefilter-log-detailedentry-local": "$1 फिल्टर गर्ने",
+ "abusefilter-log-detailslink": "विवरण",
+ "abusefilter-log-diff": "भिन्नता",
+ "abusefilter-log-hidelink": "दर्शिता मिलाउने",
+ "abusefilter-log-details-legend": "$1 लग इन्ट्रीको विवरण",
+ "abusefilter-log-details-var": "चल राशी",
+ "abusefilter-log-details-val": "मान",
+ "abusefilter-log-details-vars": "कार्य प्यारामेटर",
+ "abusefilter-log-details-private": "निजी आँकड़ा",
+ "abusefilter-log-details-ip": "सुरुवात गरिएको IP ठेगाना",
+ "abusefilter-log-noactions": "कुनै पनि हैन",
+ "abusefilter-log-details-diff": "सम्पादनमा गरिएका परिवर्तनहरू",
+ "abusefilter-log-linkoncontribs": "दुर्व्यवहार लग",
+ "abusefilter-log-linkoncontribs-text": "यो प्रयोगकर्ताको दुरुपयोग लग",
+ "abusefilter-log-hidden": "(प्रविष्टि लुकाइएको)",
+ "abusefilter-log-hidden-implicit": "(लुकाइएको छ किनभने संसोधन मेटिएको छ)",
+ "abusefilter-log-cannot-see-details": "तपाईंलाई यस इन्ट्रीको विवरण हेर्ने अनुमति छैन।",
+ "abusefilter-log-hide-legend": "लग प्रविष्टि लुकाउने",
+ "abusefilter-log-hide-id": "लग इन्ट्री आइडी:",
+ "abusefilter-log-hide-hidden": "सार्वजनिक रुपले हेर्न यस इन्ट्रीलाई लुकाउने",
+ "abusefilter-log-hide-reason": "कारण:",
+ "abusefilter-log-hide-forbidden": "तपाईंलाई दुरुपयोग लग इन्ट्रीहरू लुकाउने अनुमति छैन।",
+ "abusefilter-logentry-suppress": "लुकेका \"[[$1]]\"",
+ "abusefilter-logentry-unsuppress": "लुकेका \"[[$1]]\"",
+ "abusefilter-management": "दुर्व्यवहार फिल्टर विन्यास",
+ "abusefilter-list": "सबै फिल्टरहरु",
+ "abusefilter-list-id": "फिल्टर परिचय:",
+ "abusefilter-list-status": "स्थिति",
+ "abusefilter-list-public": "सार्वजनिक विवरण",
+ "abusefilter-list-consequences": "परिणाम",
+ "abusefilter-list-visibility": "दृश्यता",
+ "abusefilter-list-hitcount": "सम्पादन गणना",
+ "abusefilter-list-edit": "सम्पादन",
+ "abusefilter-list-details": "विवरण",
+ "abusefilter-list-limit": "प्रति पृष्ठ संख्या:",
+ "abusefilter-list-lastmodified": "पछिल्लो परिवर्तन",
+ "abusefilter-list-group": "दुरुपयोग समूह",
+ "abusefilter-hidden": "निजी",
+ "abusefilter-unhidden": "सार्वजनिक",
+ "abusefilter-enabled": "सक्रिय",
+ "abusefilter-deleted": "मेटियो",
+ "abusefilter-disabled": "निरस्त",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|हिट|हिटहरु}}",
+ "abusefilter-new": "नयाँ फिल्टर बनाउने",
+ "abusefilter-status-global": "विश्वव्यापी",
+ "abusefilter-list-options": "विकल्पहरू",
+ "abusefilter-list-options-deleted": "मेटाइएका फिल्टहरु:",
+ "abusefilter-list-options-deleted-only": "मेटाइएका फिल्टहरु मात्र देखाउनुहोस्",
+ "abusefilter-list-options-deleted-hide": "मेटाइएका फिल्टहरु लुकाउनुहोस्",
+ "abusefilter-list-options-deleted-show": "मेटाइएका फिल्टहरु संलग्न गर्नुहोस्",
+ "abusefilter-list-options-scope": "फिल्टरहरू देखाउने:",
+ "abusefilter-list-options-scope-local": "स्थानीय नियम मात्र",
+ "abusefilter-list-options-scope-global": "विश्वव्यापी नियम मात्र",
+ "abusefilter-list-options-scope-all": "स्थानीय तथा विश्वव्यापी नियमहरू",
+ "abusefilter-list-options-disabled": "निस्क्रिय फिल्टरहरु",
+ "abusefilter-list-options-hidedisabled": "निस्क्रिय फिल्टरहरु लुकाउने",
+ "abusefilter-list-options-submit": "अद्यतन",
+ "abusefilter-tools-expr": "अभिव्यक्ति जाँचकी",
+ "abusefilter-tools-submitexpr": "जाँच गर्ने",
+ "abusefilter-tools-reautoconfirm": "स्वतः सुनिश्चित स्थिति कायम गर्ने",
+ "abusefilter-tools-reautoconfirm-user": "प्रयोगकर्ता:",
+ "abusefilter-tools-reautoconfirm-submit": "पुनः स्वतः निश्चय गर्ने",
+ "abusefilter-reautoconfirm-none": "प्रयोगकर्ताद्वारा {{GENDER:$1|उनको|उनको|उनिहरु}}को स्वतः निश्चय स्थिति निलम्बन गरिएको थिएन।",
+ "abusefilter-edit": "दुरुपयोग फिल्टर सम्पादन गरिंदै",
+ "abusefilter-edit-subtitle": " फिल्टर \"$1\" सम्पादन गरिदै \\",
+ "abusefilter-edit-subtitle-new": "फिल्टर निर्माण हुँदै",
+ "abusefilter-edit-status-label": "तथ्याङ्कहरू:",
+ "abusefilter-edit-status": "विगत $1 {{PLURAL:$1|को कार्य|का कार्यहरु}}सित, $2 ($3%) मेल खान्छ।",
+ "abusefilter-edit-status-profile": "विगत $1 {{PLURAL:$1|को कार्य|का कार्यहरु}}सित, $2 ($3%) मेल खान्छ।\nऔसतमा, यसको संचालन $4ms समय छ र यसले शर्त सीमाको $5 {{PLURAL:$5|शर्त|शर्तहरु}} खपत गर्छ।",
+ "abusefilter-edit-new": "नयाँ फिल्टर",
+ "abusefilter-edit-save": "फिलटर संग्रह गर्ने",
+ "abusefilter-edit-id": "फिल्टर परिचय:",
+ "abusefilter-edit-description": "विवरण:\n:''(सार्वजनिक रुपमा देखिने)''",
+ "abusefilter-edit-group": "फिल्टर समूह:",
+ "abusefilter-edit-flags": "पताकाहरु:",
+ "abusefilter-edit-enabled": "यस फिल्टरलाई सक्रिय गर्ने",
+ "abusefilter-edit-deleted": "मेटिएको भनी चिन्ह लगाउने",
+ "abusefilter-edit-global": "विश्वव्यापी फिल्टर",
+ "abusefilter-edit-rules": "शर्तहरु:",
+ "abusefilter-edit-notes": "टिप्पणी:",
+ "abusefilter-edit-lastmod": "पछिल्लो संशोधित फिल्टर",
+ "abusefilter-edit-lastmod-text": "$2ले $1लाई",
+ "abusefilter-edit-hitcount": "फिल्टर गणना:",
+ "abusefilter-edit-action-degroup": "सबै विशेषाधिकार प्राप्त समूहबाट प्रयोगकर्तालाई निकाल्ने",
+ "abusefilter-edit-throttle-period": "समयावधि:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|सेकेण्ड|सेकेण्ड}}",
+ "abusefilter-edit-warn-other": "अन्य सन्देशहरू",
+ "abusefilter-edit-warn-actions": "कार्य:",
+ "abusefilter-edit-warn-preview": "छानिएको सन्देशको पूर्वावलोकन",
+ "abusefilter-edit-warn-edit": "चुनिएको सन्देश बनाउने/सम्पादन गर्ने",
+ "abusefilter-edit-main": "फिल्टर पेरामिटरहरू",
+ "abusefilter-edit-done-subtitle": "फिल्टर सम्पादित",
+ "abusefilter-edit-history": "इतिहास:",
+ "abusefilter-edit-check": "वाक्यविन्यास जाँच्ने",
+ "abusefilter-edit-badfilter": "तपाईंले खुलाउनु भएको फिल्टर उपलब्ध छैन ।",
+ "abusefilter-edit-tools": "औजारहरू:",
+ "abusefilter-edit-test-link": "भर्खरैका सम्पादनहरू विरुद्ध यस फिल्टरको जाँच गर्ने",
+ "abusefilter-edit-syntaxok": "वाक्यविन्यास त्रुटिहरु भेटिएनन्।",
+ "abusefilter-edit-syntaxerr": "फेला परेको वाक्यविन्यास त्रुटि:$1",
+ "abusefilter-edit-builder-group-op-arithmetic": "अंकगणितीय अपरेटर",
+ "abusefilter-edit-builder-op-arithmetic-addition": "योग (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "घटाव (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "गुणन (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "भाग (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "प्रतिशत (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "शक्ति (**)",
+ "abusefilter-edit-builder-group-op-comparison": "तुलना ओपरेटर्स।",
+ "abusefilter-edit-builder-op-comparison-equal": "बराबर (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "(!=)को बराबर होइन",
+ "abusefilter-edit-builder-op-comparison-lt": "(<) भन्दा कम",
+ "abusefilter-edit-builder-op-comparison-gt": "(>) भन्दा अधिक",
+ "abusefilter-edit-builder-op-comparison-lte": "भन्दा कम अथवा बराबर (<=)",
+ "abusefilter-edit-builder-op-bool-not": "होइन (!)",
+ "abusefilter-edit-builder-op-bool-and": "र (&)",
+ "abusefilter-edit-builder-op-bool-or": "वा (|)",
+ "abusefilter-edit-builder-group-misc": "विविध",
+ "abusefilter-edit-builder-misc-in": "निम्न पदावलीमा (मा) रहेको",
+ "abusefilter-edit-builder-misc-like": "ढाँचा सम्बन्धित मेलहरु (मिलेका)",
+ "abusefilter-edit-builder-group-funcs": "क्रियाहरु",
+ "abusefilter-edit-builder-funcs-set_var": "चल राशि मिलान गर्ने (मिलान_चल)",
+ "abusefilter-edit-builder-group-vars": "चल राशीहरू",
+ "abusefilter-edit-builder-vars-accountname": "खाता नाम (खाता निर्माणको समयमा)",
+ "abusefilter-edit-builder-vars-action": "कार्य",
+ "abusefilter-edit-builder-vars-delta": "सम्पादनमा आकार परिवर्तन गर्ने",
+ "abusefilter-edit-builder-vars-newsize": "नयाँ पृष्ठको आकार",
+ "abusefilter-edit-builder-vars-oldsize": "पुरानो पृष्ठको आकार",
+ "abusefilter-edit-builder-vars-removedlines": "सम्पादनमा हटाइएका पंक्तिहरु",
+ "abusefilter-edit-builder-vars-summary": "सारांश/कारण सम्पादन",
+ "abusefilter-edit-builder-vars-article-id": "पृष्ठको ID",
+ "abusefilter-edit-builder-vars-article-ns": "पृष्ठको नेमस्पेस",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "पूर्ण पृष्ठको शीर्षक",
+ "abusefilter-edit-builder-vars-article-views": "पृष्ठ अवलोकन",
+ "abusefilter-edit-builder-vars-movedfrom-id": "सारिएको श्रोत पृष्ठको पृष्ठ आइडी",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "सारिएको श्रोत पृष्ठको नामस्थान",
+ "abusefilter-edit-builder-vars-movedfrom-text": "सारिएको श्रोत पृष्ठको शिर्षक",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "सारिएको श्रोत पृष्ठको पूर्ण शीर्षक",
+ "abusefilter-edit-builder-vars-movedto-id": "सारिएको श्रोत पृष्ठको पृष्ठ गन्तव्य",
+ "abusefilter-edit-builder-vars-movedto-ns": "सार्दाको गन्तव्य पृष्ठको नेमस्पेस",
+ "abusefilter-edit-builder-vars-movedto-text": "सार्दाको गन्तव्य पृष्ठको शीर्षक",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "सारिएको श्रोत पृष्ठको पूर्ण पृष्ठ गन्तव्य",
+ "abusefilter-edit-builder-vars-user-editcount": "प्रयोगकर्ताको सम्पादन गणना",
+ "abusefilter-edit-builder-vars-user-age": "प्रयोगकर्ता खाताको आयु",
+ "abusefilter-edit-builder-vars-user-name": "प्रयोगकर्ता खाताको नाम",
+ "abusefilter-edit-builder-vars-user-rights": "यो प्रयोगकर्ताको अधिकारहरू",
+ "abusefilter-edit-builder-vars-user-blocked": "प्रयोगकर्ता अवरुद्ध छ कि छैन",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "समय इमेल ठेगाना सुनिश्चित गरियो",
+ "abusefilter-edit-builder-vars-recent-contributors": "पृष्ठमा योगदान गर्ने अन्तिम दश प्रयोगकर्ताहरू",
+ "abusefilter-edit-builder-vars-first-contributor": "पृष्ठमा योगदान गर्ने पहिलो प्रयोगकर्ता",
+ "abusefilter-edit-builder-vars-all-links": "नयाँ पाठमा सबै बाह्य लिङ्कहरू",
+ "abusefilter-edit-builder-vars-added-links": "सम्पादनमा सबै बाहिरी लिंक जोड़ियो",
+ "abusefilter-edit-builder-vars-removed-links": "सम्पादनमा सबै बाहिरी लिंक हटाइयो",
+ "abusefilter-edit-builder-vars-old-text": "सम्पादन पहिले पुरानो पृष्ठ विकिपाठ",
+ "abusefilter-edit-builder-vars-new-text": "सम्पादन पहिले नयाँ पृष्ठ विकिपाठ",
+ "abusefilter-edit-builder-vars-new-pst": "रक्षण हुनु पहिले नयाँ पृष्ठ विकिपाठ",
+ "abusefilter-edit-builder-vars-restrictions-edit": "पृष्ठको सुरक्षा स्तर सम्पादन गर्ने",
+ "abusefilter-edit-builder-vars-restrictions-move": "पृष्ठको सुरक्षा स्तर सम्पादन हटाउने",
+ "abusefilter-edit-builder-vars-file-size": "फाइलको आकार बाइटसमा",
+ "abusefilter-filter-log": "भर्खरका फिल्टर परिवर्तनहरू",
+ "abusefilter-history": "दुर्व्यवहार फिल्टर #$1को निम्ति इतिहास परिवर्तन गर्ने",
+ "abusefilter-history-foruser": "$1द्वारा परिवर्तन",
+ "abusefilter-history-hidden": "लुकेको",
+ "abusefilter-history-enabled": "सक्रिय",
+ "abusefilter-history-global": "विश्वव्यापी",
+ "abusefilter-history-timestamp": "समय",
+ "abusefilter-history-user": "प्रयोगकर्ता",
+ "abusefilter-history-public": "सार्वजनिक फिल्टर विवरण",
+ "abusefilter-history-flags": "पताकाहरु",
+ "abusefilter-history-filter": "फिल्टर नीति",
+ "abusefilter-history-comments": "टिप्पणीहरू",
+ "abusefilter-history-actions": "कार्यहरु",
+ "abusefilter-history-backedit": "फिल्टर सम्पादनतिर फर्किने",
+ "abusefilter-history-deleted": "मेटिएको",
+ "abusefilter-history-filterid": "फिल्टर",
+ "abusefilter-history-select-legend": "परिष्कृत खोज",
+ "abusefilter-history-select-user": "प्रयोगकर्ता:",
+ "abusefilter-history-select-submit": "परिष्कृत गर्ने",
+ "abusefilter-history-diff": "परिवर्तनहरू",
+ "abusefilter-history-error-hidden": "अनुरोध गरिएको फिल्टर लुकेकोछ, अनि तपाईंले यसको इतिहास हेर्न सक्नुहुन्न।",
+ "abusefilter-exception-unexpectedatend": "$1चरित्रमा \"$2\" अप्रत्यासित भएको",
+ "abusefilter-exception-expectednotfound": "$1 चरित्रमा एउटा $2 प्रत्यासित भएको, पाइएन ( $3 $4 स्थानमा पाइयो).",
+ "abusefilter-exception-unrecognisedkeyword": "$1 चरित्रको नचिनिने $2 शव्दकुञ्जी।",
+ "abusefilter-action-tag": "ट्याग",
+ "abusefilter-action-throttle": "थ्रोटल",
+ "abusefilter-action-warn": "चेतावनी",
+ "abusefilter-action-block": "रोक्ने",
+ "abusefilter-action-degroup": "समूहबाट हटाउने",
+ "abusefilter-action-rangeblock": "रेन्ज-रोक",
+ "abusefilter-action-disallow": "अनुमति नदिने",
+ "abusefilter-revert-title": "फिल्टर $1द्वारा गरिएको परिवर्तन पूर्ववत गर्ने",
+ "abusefilter-revert-search-legend": "पूर्ववत गर्ने दुरुपयोग फिल्टर कार्य छान्ने",
+ "abusefilter-revert-periodstart": "अवधि शुरू :",
+ "abusefilter-revert-periodend": "अवधि समाप्त:",
+ "abusefilter-revert-search": "कार्य छान्ने",
+ "abusefilter-revert-filter": "फिल्टर:",
+ "abusefilter-revert-confirm": "निश्चय गर्ने",
+ "abusefilter-revert-reasonfield": "कारण:",
+ "abusefilter-test-intro": "यस पृष्ठले {{PLURAL:$1|पछिल्लो परिवर्तन|पछिल्ला परिवर्तनहरू}}को तल बाकसमा दिएको फिल्टर जाँच्ने तपाईंलाई अनुमति दिन्छ ।\nवर्तमान फिल्टर लोड गर्न, यसमा भएको फिल्टर आई डी तलको सम्पादन पाठ बाकसमा दिनुहोस्, र \"{{int:abusefilter-test-load}}\" बटनमा क्लिक गर्नुहोस्।",
+ "abusefilter-test-legend": "फिल्टर जाँच्ने",
+ "abusefilter-test-load-filter": "फिल्टर आइ डि लोड गर्ने:",
+ "abusefilter-test-submit": "जाँच गर्ने",
+ "abusefilter-test-load": "लोड गर्ने",
+ "abusefilter-test-user": "प्रयोगकर्ताद्वारा गरिएका परिवर्तनहरू:",
+ "abusefilter-test-period-start": "पछि गरिएका परिवर्तनहरू:",
+ "abusefilter-test-period-end": "पहिले गरिएका परिवर्तनहरू:",
+ "abusefilter-test-page": "यस पृष्ठमा गरिएका परिवर्तनहरू:",
+ "abusefilter-test-shownegative": "ती परिवर्तनहरू हेर्ने जो फिल्टरसित मेल खाँदैनन्",
+ "abusefilter-changeslist-examine": "जाँच्ने",
+ "abusefilter-examine": "प्रत्येक परिवर्तनलाई जाँच्ने",
+ "abusefilter-examine-legend": "परिवर्तहरु छान्ने",
+ "abusefilter-examine-diff": "भिन्न युआरयल:",
+ "abusefilter-examine-user": "प्रयोगकर्ता:",
+ "abusefilter-examine-title": "पृष्ठ शीर्षक:",
+ "abusefilter-examine-submit": "खोज्ने",
+ "abusefilter-examine-test-button": "फिक्टर जाँच्ने",
+ "abusefilter-examine-syntaxerror": "फिल्टरमा अमान्य वाक्यविन्यास",
+ "abusefilter-examine-noresults": "तपाईंले खोजको निम्ति दिएका मापदण्ड अनुसार परिणाम प्राप्त भएन।",
+ "abusefilter-topnav": "'''दुर्व्यवहार फिल्टर नेभिगेसन'''",
+ "abusefilter-topnav-home": "गृह",
+ "abusefilter-topnav-test": "ब्याच जाँच्ने",
+ "abusefilter-topnav-examine": "पुराना सम्पादनहरू जाँच्ने",
+ "abusefilter-topnav-log": "दुर्व्यवहार लग",
+ "abusefilter-topnav-tools": "डिबगिंग औजार",
+ "abusefilter-topnav-import": "फिल्टर आयात गर्ने",
+ "abusefilter-log-name": "दुर्व्यवहार फिल्टर लग",
+ "abusefilter-log-noresults": "नतिजाहरू छैन",
+ "abusefilter-diff-title": "संस्करणहरूबीच भिन्नता",
+ "abusefilter-diff-item": "सामग्री",
+ "abusefilter-diff-version": "संस्करण $1देखि $2द्वारा",
+ "abusefilter-diff-info": "बुनियादी सूचना",
+ "abusefilter-diff-pattern": "फिल्टरका अवस्थाहरु",
+ "abusefilter-diff-backhistory": "फिल्टर इतिहासतिर फर्किने",
+ "abusefilter-diff-prev": "पुरानो परिवर्तन",
+ "abusefilter-diff-next": "नयाँ परिवर्तन",
+ "abusefilter-import-submit": "आँकड़ा ल्याउने",
+ "abusefilter-group-default": "पूर्वनिर्धारित",
+ "abusefilter-http-error": "एचटिटिपि त्रुटि उत्पन्न भयो: $1",
+ "apihelp-query+abuselog-param-prop": "कुन मान प्राप्त गर्ने।",
+ "apihelp-query+abuselog-example-1": "हालैका लग इन्ट्रीहरू देखाउने",
+ "apihelp-query+abuselog-example-2": "[[एपिआइ]]को लागि हालैका लग इन्ट्रीहरू देखाउने"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/new.json b/www/wiki/extensions/AbuseFilter/i18n/new.json
new file mode 100644
index 00000000..2f2d0412
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/new.json
@@ -0,0 +1,47 @@
+{
+ "@metadata": {
+ "authors": [
+ "Eukesh"
+ ]
+ },
+ "abusefilter-log-search-submit": "मालादिसँ",
+ "abusefilter-log-diff": "पाःगु",
+ "abusefilter-log-noactions": "मदूगु",
+ "abusefilter-list-edit": "सम्पादन",
+ "abusefilter-list-details": "विवरण",
+ "abusefilter-list-limit": "ल्या प्रति पौ",
+ "abusefilter-hidden": "निजी",
+ "abusefilter-new": "न्हुगु फिल्तर दयेकादिसँ",
+ "abusefilter-return": "फिल्तर व्यवस्थापनय् लितझासँ",
+ "abusefilter-status-global": "ग्लोबल",
+ "abusefilter-edit-tools": "ज्याभः",
+ "abusefilter-edit-test-link": "थ्व फिल्तरयात नकतिनिया सम्पादननाप जांच यानादिसँ",
+ "abusefilter-edit-export": "थ्व फिल्तरयात मेगु विकिइ निर्यात यानादिसँ",
+ "abusefilter-edit-syntaxok": "सिन्त्याक्स इरर मलूगु",
+ "abusefilter-edit-syntaxerr": "सिन्त्याक्स इरर लुतः: $1",
+ "abusefilter-edit-notallowed": "छिके एब्युज फिल्तर दयेकिगु वा सम्पादन यायेगु अधिकार मदु",
+ "abusefilter-edit-notallowed-global": "छिके ग्लोबल एब्युज फिल्तर दयेकिगु वा सम्पादन यायेगु अधिकार मदु",
+ "abusefilter-edit-builder-op-arithmetic-addition": "तनेज्या (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "लिकायेज्या (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "गुणन (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "बायेज्या (/)",
+ "abusefilter-edit-builder-op-comparison-equal": "ज्वलाःगु (==)",
+ "abusefilter-edit-builder-op-comparison-lt": "स्वया म्हो (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "स्वया अप्व (>)",
+ "abusefilter-edit-builder-op-bool-and": "व् (&)",
+ "abusefilter-edit-builder-op-bool-or": "वा (|)",
+ "abusefilter-edit-builder-group-misc": "मेमेगु",
+ "abusefilter-edit-builder-misc-in": "(in) पाठय् दूगु",
+ "abusefilter-edit-builder-vars-delta": "सम्पादनय् पाःगु आकार",
+ "abusefilter-edit-builder-vars-newsize": "न्हुगु पौ साइज",
+ "abusefilter-edit-builder-vars-oldsize": "पुलांगु पौ साइज",
+ "abusefilter-edit-builder-vars-removedlines": "सम्पादनं लिकाःगु लाइन",
+ "abusefilter-edit-builder-vars-summary": "सम्पादनया सार/कारण",
+ "abusefilter-edit-builder-vars-article-id": "पौ ID",
+ "abusefilter-edit-builder-vars-article-ns": "पौ नेमस्पेस",
+ "abusefilter-edit-builder-vars-article-text": "पौया नां (नेमस्पेस मदयेक)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "पूवंगु पौया नां",
+ "abusefilter-history-user": "छ्य्‌लामि",
+ "abusefilter-history-diff": "हिला",
+ "abusefilter-revert-reasonfield": "कारण:"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/niu.json b/www/wiki/extensions/AbuseFilter/i18n/niu.json
new file mode 100644
index 00000000..f04e44aa
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/niu.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Jose77"
+ ]
+ },
+ "abusefilter-log-search-submit": "Kumi"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/nl-informal.json b/www/wiki/extensions/AbuseFilter/i18n/nl-informal.json
new file mode 100644
index 00000000..b8d0c2bf
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/nl-informal.json
@@ -0,0 +1,33 @@
+{
+ "@metadata": {
+ "authors": [
+ "Siebrand"
+ ]
+ },
+ "abusefilter-warning": "'''Waarschuwing''': deze handeling is automatisch geïdentificeerd als schadelijk.\nOnconstructieve handeling worden snel teruggedraaid, en herhaald onconstructief bewerken eindigt in een blokkade van je gebruiker of je IP-adres.\nAls je denkt dat deze handeling wel constructief is, bevestig je handeling dan opnieuw.\nEen korte beschrijving van de regel op basis waarvan uw handeling is tegengehouden: $1",
+ "abusefilter-disallowed": "Deze handeling is automatisch geïdentificeerd als schadelijk, en daarom niet toegelaten.\nAls je denkt dat je handeling wel constructief was, rapporteer dan aan de beheerder wat je probeerde te doen.\nEen korte beschrijving van de regel op basis waarvan je handeling is tegengehouden volgt nu: $1",
+ "abusefilter-blocked-display": "Deze handeling is automatisch geïdentificeerd als schadelijk. Daarom is deze niet uitgevoerd.\nOm {{SITENAME}} te beschermen zijn je gebruiker en alle bijbehorende IP-adressen geblokkeerd.\nAls deze maatregel onterecht is genomen, neem dan contact op met een beheerder.\nEen korte beschrijving van de regel op basis waarvan je bewerking is tegengehouden volgt nu: $1",
+ "abusefilter-degrouped": "Deze handeling is automatisch geïdentificeerd als schadelijk.\nOmdat is vastgesteld dat deze gebruiker mogelijk door iemand anders wordt misbruikt, zijn alle rechten ingetrokken.\nAls deze maatregel onterecht is genomen, neem dan contact op met een bureaucraat en licht deze handeling toe, zodat je rechten hersteld kunnen worden.\nEen korte beschrijving van de regel op basis waarvan je bewerking is tegengehouden volgt nu: $1",
+ "abusefilter-autopromote-blocked": "Deze handeling is automatisch geïdentificeerd als schadelijk. Daarom is deze niet uitgevoerd.\nAls aanvullende veiligheidsmaatregel zijn een aantal automatisch toegekende rechten voor je gebruiker tijdelijk ingetrokken.\nEen korte beschrijving van de regel op basis waarvan je bewerking is tegengehouden volgt nu: $1",
+ "abusefilter-log-cannot-see-details": "Je hebt niet de juiste rechten om dit item te bekijken.",
+ "abusefilter-log-details-hidden": "Je kunt de details van deze melding niet bekijken omdat deze verborgen is.",
+ "abusefilter-log-hide-forbidden": "Je hebt niet de juiste rechten om meldingen in het filterlogboek te verbergen.",
+ "abusefilter-reautoconfirm-notallowed": "Je hebt geen rechten om de automatisch bevestigde status opnieuw in te stellen.",
+ "abusefilter-edit-oldwarning": "<strong>Je bent een oude versie van dit filter aan het bewerken.\nDe weergegeven statistieken gelden voor de meest recente versie van het filter.\nAls je je wijzigingen opslaat, overschrijf je alle wijzigingen die na deze versie zijn gemaakt.</strong> &bull;\n[[Special:AbuseFilter/history/$2|Terug naar de geschiedenis van dit filter]]",
+ "abusefilter-edit-denied": "Je mag de details van dit filter niet bekijken, omdat die niet publiekelijk zichtbaar zijn",
+ "abusefilter-edit-restricted": "Je kunt dit filter niet bewerken omdat die één of meerdere beperkte handelingen bevat.\nVraag een gebruiker met toestemming om beperkte handelingen toe te voegen om de wijziging voor je te maken.",
+ "abusefilter-edit-bad-tags": "Een of meer van de labels die je hebt opgegeven is niet geldig.\nLabels moeten kort zijn en mogen geen speciale tekens bevatten.",
+ "abusefilter-edit-notallowed": "Je hebt geen rechten om filters aan te maken of te wijzigen",
+ "abusefilter-edit-notallowed-global": "Je kunt globale misbruikfilters niet aanmaken of aanpassen",
+ "abusefilter-history-error-hidden": "Het filter dat je hebt opgevraagd is verborgen en je kunt de geschiedenis niet bekijken.",
+ "abusefilter-revert-intro": "Via dit formulier kan je alle wijzigingen die door het filter via filter $1 gemaakt zijn terugdraaien.\nGebruik dit hulpmiddel zorgvuldig.",
+ "abusefilter-revert-preview-intro": "Hieronder staan de maatregelen die het filter heeft genomen die door deze handeling worden teruggedraaid.\nControleer de terug te draaien maatregelen zorgvuldig, en klik \"Bevestigen\" om je selectie te bevestigen.",
+ "abusefilter-revert-success": "Je hebt alle maatregelen die door het filter via [[Special:AbuseFilter/$1|filter $2]] zijn genomen teruggedraaid.",
+ "abusefilter-test-intro": "Op deze pagina kan je een opgegeven filter controleren met de laatste {{PLURAL:$1|wijzing|$1 wijzingen}}.\nGeef een filternummer in om een bestaand filter te laden en klik daarna op de knop \"Laden\".",
+ "abusefilter-test-syntaxerr": "Het filter dat je hebt ingevoerd bevat een syntaxisfout.\nDoor op \"Syntaxis controleren\" te klikken krijg je een volledige toelichting.",
+ "abusefilter-examine-intro": "Via deze pagina kan je de door het filter aangemaakte variabelen voor een individuele wijziging onderzoeken, en deze testen tegen filters.",
+ "abusefilter-examine-notfound": "De wijziging die je hebt opgevraagd is niet aangetroffen.",
+ "abusefilter-examine-incompatible": "Het filter ondersteunt de wijziging die je hebt opgevraagd niet",
+ "abusefilter-examine-noresults": "Er zijn geen resultaten gevonden voor de zoekopdrachtparameters die je hebt opgegeven.",
+ "abusefilter-import-intro": "Je kunt deze interface gebruiken om filters van andere wiki's te importeren.\nKlik \"{{int:abusefilter-edit-export}}i\" bij \"{{int:abusefilter-edit-tools}}\".\nKopieer de tekst die in het bewerkingsvenster verschijnt naar dit bewerkingsvenster en klik dan op \"{{int:abusefilter-import-submit}}\"."
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/nl.json b/www/wiki/extensions/AbuseFilter/i18n/nl.json
new file mode 100644
index 00000000..9ad2c4cc
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/nl.json
@@ -0,0 +1,496 @@
+{
+ "@metadata": {
+ "authors": [
+ "Annabel",
+ "Arent",
+ "GerardM",
+ "JurgenNL",
+ "McDutchie",
+ "Mwpnl",
+ "Niknetniko",
+ "Romaine",
+ "SPQRobin",
+ "Siebrand",
+ "Southparkfan",
+ "Tjcool007",
+ "Tvdm",
+ "Wiki13",
+ "Sjoerddebruin",
+ "Trijnstel",
+ "JaapDeKleine",
+ "Matma Rex",
+ "Jeleniccz",
+ "Mainframe98",
+ "QZanden",
+ "Festina90",
+ "Mar(c)"
+ ]
+ },
+ "abusefilter-desc": "Voert automatisch heuristische analyse uit op bewerkingen",
+ "abusefilter": "Filterinstellingen",
+ "abuselog": "Filterlogboek",
+ "abusefilter-intro": "Dit is het beheerscherm voor bewerkingsfilters.\nHet filtersysteem past automatische heuristiek toe op alle handelingen.\nVia dit scherm worden alle ingestelde filters weergegeven en kunnen ze aangepast worden.",
+ "abusefilter-mustbeeditor": "Om veiligheidsredenen hebben alleen gebruikers met het recht om filters te wijzigen de mogelijkheid deze interface te gebruiken.",
+ "abusefilter-warning": "'''Waarschuwing:''' Deze handeling is automatisch als schadelijk geïdentificeerd.\nOnconstructieve handelingen worden snel teruggedraaid, en herhaald onconstructief bewerken eindigt in een blokkade van uw account of IP-adres.\nAls u denkt dat deze handeling wel constructief is, bevestig uw handeling dan opnieuw.\nEen korte beschrijving van de regel op basis waarvan uw handeling is tegengehouden: $1",
+ "abusefilter-disallowed": "Deze handeling is automatisch geïdentificeerd als schadelijk, en daarom niet toegelaten.\nAls u denkt dat uw handeling wel constructief was, rapporteer dan aan de beheerder wat u probeerde te doen.\nEen korte beschrijving van de regel op basis waarvan uw handeling is tegengehouden volgt nu: $1",
+ "abusefilter-blocked-display": "Deze handeling is automatisch geïdentificeerd als schadelijk. Daarom is deze niet uitgevoerd.\nOm {{SITENAME}} te beschermen zijn uw gebruikersaccount en alle bijbehorende IP-adressen geblokkeerd.\nAls deze maatregel onterecht is genomen, neem dan contact op met een beheerder.\nEen korte beschrijving van de regel op basis waarvan uw bewerking is tegengehouden: $1",
+ "abusefilter-degrouped": "Deze handeling is automatisch geïdentificeerd als schadelijk.\nOmdat is vastgesteld dat deze gebruiker mogelijk door iemand anders wordt misbruikt, zijn alle rechten ingetrokken.\nAls deze maatregel onterecht is genomen, neem dan contact op met een bureaucraat en licht deze handeling toe, zodat uw rechten hersteld kunnen worden.\nEen korte beschrijving van de regel op basis waarvan uw bewerking is tegengehouden volgt nu: $1",
+ "abusefilter-autopromote-blocked": "Deze handeling is automatisch geïdentificeerd als schadelijk. Daarom is deze niet uitgevoerd.\nAls aanvullende veiligheidsmaatregel zijn een aantal automatisch toegekende rechten voor uw account tijdelijk ingetrokken.\nEen korte beschrijving van de regel op basis waarvan uw bewerking is tegengehouden: $1",
+ "abusefilter-blocker": "Filter",
+ "abusefilter-blockreason": "Automatisch geblokkeerd door het filter.\nBeschrijving van de regel die dit heeft veroorzaakt: $1",
+ "abusefilter-degroupreason": "Rechten zijn automatisch verwijderd door het filter. Regelbeschrijving: $1",
+ "abusefilter-accountreserved": "Deze gebruiker is gereserveerd voor het filter.",
+ "right-abusefilter-modify": "Filters wijzigen",
+ "right-abusefilter-view": "Filters bekijken",
+ "right-abusefilter-log": "Het filterlogboek bekijken",
+ "right-abusefilter-log-detail": "Details van filterlogboekregels bekijken",
+ "right-abusefilter-private": "Beperkt zichtbare gegevens in het filterlogboek bekijken",
+ "right-abusefilter-modify-restricted": "Filters met beperkte handelingen wijzigen",
+ "right-abusefilter-revert": "Alle wijzigingen door een filter terugdraaien",
+ "right-abusefilter-view-private": "Als beperkt zichtbaar gemarkeerde filters bekijken",
+ "right-abusefilter-log-private": "Logboekregels bekijken voor filters die gemarkeerd zijn als persoonlijk",
+ "right-abusefilter-hide-log": "Meldingen in het filterlogboek verbergen",
+ "right-abusefilter-hidden-log": "Verborgen meldingen in het filterlogboek bekijken",
+ "right-abusefilter-modify-global": "Globale misbruikfilters aanmaken of aanpassen",
+ "action-abusefilter-modify": "filters te wijzigen",
+ "action-abusefilter-view": "filters te bekijken",
+ "action-abusefilter-log": "het filterlogboek te bekijken",
+ "action-abusefilter-log-detail": "gedetailleerde filterlogboekvermeldingen te bekijken",
+ "action-abusefilter-private": "privégegevens in het filterlogboek te bekijken",
+ "action-abusefilter-modify-restricted": "filters met beperkte handelingen te wijzigen",
+ "action-abusefilter-revert": "alle wijzigingen door een bepaald filter terug te draaien",
+ "action-abusefilter-view-private": "als beperkt zichtbaar gemarkeerde filters te bekijken",
+ "action-abusefilter-log-private": "Logboeken weergeven van misbruikfilters die zijn gemarkeerd als privé.",
+ "abusefilter-log": "Filterlogboek",
+ "abusefilter-log-summary": "Dit logboek geeft een lijst weer van handelingen die opgevangen zijn door filters.",
+ "abusefilter-log-search": "Het filterlogboek doorzoeken",
+ "abusefilter-log-search-user": "Gebruiker:",
+ "abusefilter-log-search-filter": "Filternummers (gescheiden met het teken \"|\"):",
+ "abusefilter-log-search-title": "Paginanaam:",
+ "abusefilter-log-search-wiki": "Wiki:",
+ "abusefilter-log-search-impact": "Impact:",
+ "abusefilter-log-search-impact-all": "Alle acties",
+ "abusefilter-log-search-impact-saved": "Alleen opgeslagen wijzigingen",
+ "abusefilter-log-search-impact-not-saved": "Zonder opgeslagen wijzigingen",
+ "abusefilter-log-search-entries-label": "Zichtbaarheid:",
+ "abusefilter-log-search-entries-all": "Alle regels",
+ "abusefilter-log-search-entries-hidden": "Alleen verborgen regels",
+ "abusefilter-log-search-entries-visible": "Alleen zichtbare regels",
+ "abusefilter-log-search-action-taken-label": "Genomen maatregel:",
+ "abusefilter-log-search-action-taken-any": "Alle",
+ "abusefilter-log-search-submit": "Zoeken",
+ "abusefilter-log-entry": "$1: $2 {{GENDER:$8|liet een filter afgaan}} bij het {{GENDER:$8|uitvoeren}} van de handeling \"$3\" op $4.\nGenomen maatregel: $5;\nFilterbeschrijving: $6",
+ "abusefilter-log-entry-withdiff": "$1: $2 {{GENDER:$8|liet een filter afgaan}} bij het {{GENDER:$8|uitvoeren}} van de handeling \"$3\" op $4.\nGenomen maatregel: $5;\nFilterbeschrijving: $6 ($7)",
+ "abusefilter-log-detailedentry-meta": "$1: $2 heeft $3 {{GENDER:$9|laten afgaan}} tijdens het {{GENDER:$9|uitvoeren}} van de handeling \"$4\" op $5.\nGenomen maatregel: $6;\nFilterbeschrijving: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "globale filter $1",
+ "abusefilter-log-detailedentry-local": "filter $1",
+ "abusefilter-log-detailslink": "details",
+ "abusefilter-log-diff": "verschil",
+ "abusefilter-log-hidelink": "zichtbaarheid aanpassen",
+ "abusefilter-log-details-legend": "Details voor logboekregel $1",
+ "abusefilter-log-details-var": "Variabele",
+ "abusefilter-log-details-val": "Waarde",
+ "abusefilter-log-details-vars": "Maatregelparameters",
+ "abusefilter-log-details-private": "Beperkt zichtbare gegevens",
+ "abusefilter-log-details-ip": "IP-adres",
+ "abusefilter-log-details-checkuser": "Gebruiker controleren",
+ "abusefilter-log-noactions": "geen",
+ "abusefilter-log-details-diff": "Wijzigingen in de bewerking",
+ "abusefilter-log-linkoncontribs": "filterlogboek",
+ "abusefilter-log-linkoncontribs-text": "Filterlogboek voor {{GENDER:$1|deze gebruiker}}",
+ "abusefilter-log-hidden": "(melding verborgen)",
+ "abusefilter-log-hidden-implicit": "(verborgen omdat de versie verwijderd is)",
+ "abusefilter-log-cannot-see-details": "U hebt niet de juiste rechten om dit item te bekijken.",
+ "abusefilter-log-nonexistent": "Een regel met de opgegeven ID bestaat niet.",
+ "abusefilter-log-details-hidden": "U kunt de details van deze melding niet bekijken omdat deze verborgen is.",
+ "abusefilter-log-private-not-included": "Een of meer van de opgegeven filter-ID's zijn persoonlijk. Omdat u de details van privéfilters niet mag zien, is er niet in deze filters gezocht.",
+ "abusefilter-log-hide-legend": "Logboekregel verbergen",
+ "abusefilter-log-hide-id": "Logboekmeldingsnummer:",
+ "abusefilter-log-hide-hidden": "Deze melding verbergen",
+ "abusefilter-log-hide-reason": "Reden:",
+ "abusefilter-log-hide-forbidden": "U hebt niet de juiste rechten om meldingen in het filterlogboek te verbergen.",
+ "abusefilter-logentry-suppress": "heeft [[$1]] verborgen",
+ "abusefilter-logentry-unsuppress": "heeft [[$1]] zichtbaar gemaakt",
+ "logentry-abusefilter-hit": "$1 heeft $4 {{GENDER:$2|geactiveerd}} door de handeling \"$5\" op $3\". Uitgevoerde acties: $6 ($7)",
+ "log-action-filter-abusefilter": "Type filterwijziging:",
+ "log-action-filter-abusefilter-modify": "Filteraanpassing",
+ "abusefilter-management": "Beheer van filters",
+ "abusefilter-list": "Alle filters",
+ "abusefilter-list-id": "Filternummer",
+ "abusefilter-list-status": "Status",
+ "abusefilter-list-public": "Openbare beschrijving",
+ "abusefilter-list-consequences": "Gevolgen",
+ "abusefilter-list-visibility": "Zichtbaarheid",
+ "abusefilter-list-hitcount": "Hitcount",
+ "abusefilter-list-edit": "Bewerken",
+ "abusefilter-list-details": "Details",
+ "abusefilter-list-limit": "Aantal per pagina:",
+ "abusefilter-list-lastmodified": "Laatste wijziging",
+ "abusefilter-list-group": "Filtergroep",
+ "abusefilter-hidden": "Beperkt zichtbaar",
+ "abusefilter-unhidden": "Openbaar",
+ "abusefilter-enabled": "Ingeschakeld",
+ "abusefilter-deleted": "Verwijderd",
+ "abusefilter-disabled": "Uitgeschakeld",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|hit|hits}}",
+ "abusefilter-new": "Nieuw filter aanmaken",
+ "abusefilter-return": "Terug naar filterbeheer",
+ "abusefilter-status-global": "Globaal",
+ "abusefilter-list-options": "Opties",
+ "abusefilter-list-options-deleted": "Verwijderde filters:",
+ "abusefilter-list-options-deleted-only": "Alleen verwijderde filters weergeven",
+ "abusefilter-list-options-deleted-hide": "Verwijderde filters verbergen",
+ "abusefilter-list-options-deleted-show": "Verwijderde filters opnemen",
+ "abusefilter-list-options-scope": "Filters weergeven:",
+ "abusefilter-list-options-scope-local": "Alleen lokale regels",
+ "abusefilter-list-options-scope-global": "Alleen globale regels",
+ "abusefilter-list-options-scope-all": "Lokale en globale regels",
+ "abusefilter-list-options-disabled": "Verwijderde filters:",
+ "abusefilter-list-options-hidedisabled": "Uitgeschakelde filters verbergen",
+ "abusefilter-list-options-submit": "Bijwerken",
+ "abusefilter-tools-text": "Dit zijn een aantal hulpmiddelen die van pas kunnen komen bij het formuleren en debuggen van filters.",
+ "abusefilter-tools-expr": "Expressietester",
+ "abusefilter-tools-submitexpr": "Evalueren",
+ "abusefilter-tools-reautoconfirm": "Automatisch bevestigde status opnieuw instellen",
+ "abusefilter-tools-reautoconfirm-user": "Gebruiker:",
+ "abusefilter-tools-reautoconfirm-submit": "Opnieuw automatisch bevestigen",
+ "abusefilter-reautoconfirm-none": "Voor die gebruiker is de automatisch bevestigde status niet ingetrokken.",
+ "abusefilter-reautoconfirm-notallowed": "U hebt geen rechten om de automatisch bevestigde status opnieuw in te stellen.",
+ "abusefilter-reautoconfirm-done": "De bevestigde gebruikersstatus van de gebruiker is hersteld",
+ "abusefilter-status": "Van de laatste $1 {{PLURAL:$1|handeling|handelingen}}, {{PLURAL:$2|heeft er 1|hebben er $2}} ($3%) de drempelwaarde van $4 bereikt, en {{PLURAL:$5|past|passen}} $5 ($6%) bij één van de huidige ingeschakelde filters.",
+ "abusefilter-edit": "Filter bewerken",
+ "abusefilter-edit-subtitle": "Bezig met het bewerken van filter $1",
+ "abusefilter-edit-subtitle-new": "Bezig met het aanmaken van een filter",
+ "abusefilter-edit-oldwarning": "<strong>U bent een oude versie van dit filter aan het bewerken.\nDe weergegeven statistieken gelden voor de meest recente versie van het filter.\nAls u uw wijzigingen opslaat, overschrijft u alle wijzigingen die na deze versie zijn gemaakt.</strong> &bull;\n[[Special:AbuseFilter/history/$2|Terug naar de geschiedenis van dit filter]]",
+ "abusefilter-edit-status-label": "Statistieken:",
+ "abusefilter-edit-status": "{{PLURAL:$1|De laatste handeling voldeed|Van de laatste $1 handelingen voldeden er $2}} aan dit filter ($3%).",
+ "abusefilter-edit-status-profile": "{{PLURAL:$1|De laatste handeling voldeed|Van de laatste $1 handelingen voldeden er $2}} aan dit filter ($3%).\nDe gemiddelde looptijd van de filtercontrole is $4ms, en deze gebruikt $5 {{PLURAL:$5|conditie|condities}} van de conditielimiet.",
+ "abusefilter-edit-throttled-warning": "'''Waarschuwing:''' Dit filter is automatisch gemarkeerd als schadelijk. Als veiligheidsmaatregel zijn de volgende handelingen niet uitgevoerd ($1). Controleer en [[mw:Extension:AbuseFilter/Conditions|optimaliseer]] de condities om deze limitatie te verwijderen.",
+ "abusefilter-edit-new": "Nieuw filter",
+ "abusefilter-edit-save": "Filter opslaan",
+ "abusefilter-edit-id": "Filternummer:",
+ "abusefilter-edit-description": "Beschrijving:\n:''(publiekelijk zichtbaar)''",
+ "abusefilter-edit-group": "Filtergroep:",
+ "abusefilter-edit-flags": "Markeringen:",
+ "abusefilter-edit-enabled": "Dit filter inschakelen",
+ "abusefilter-edit-deleted": "Als verwijderd markeren",
+ "abusefilter-edit-hidden": "Details van dit filter niet openbaar maken",
+ "abusefilter-edit-global": "Globaal filter",
+ "abusefilter-edit-rules": "Regels:",
+ "abusefilter-edit-notes": "Opmerkingen:",
+ "abusefilter-edit-lastmod": "Filter laatst aangepast:",
+ "abusefilter-edit-lastmod-text": "door $2 op $3 om $4",
+ "abusefilter-edit-hitcount": "Hits filteren:",
+ "abusefilter-edit-consequences": "Te nemen maatregelen bij van het toepassing zijn",
+ "abusefilter-edit-action-warn": "Voer deze maatregel uit nadat een gebruiker een waarschuwing heeft gekregen",
+ "abusefilter-edit-action-disallow": "Voorkomen dat de gebruiker de handeling kan uitvoeren",
+ "abusefilter-edit-action-blockautopromote": "De bevestigde status van deze gebruiker verwijderen",
+ "abusefilter-edit-action-degroup": "De gebruiker uit alle gebruikersgroepen verwijderen",
+ "abusefilter-edit-action-block": "Bewerken door de gebruiker en/of het IP-adres blokkeren",
+ "abusefilter-edit-action-blocktalk": "Ontneem de gebruiker en/of het IP-adres de mogelijkheid om de eigen overlegpagina te bewerken",
+ "abusefilter-edit-action-throttle": "Maatregel alleen uitvoeren als de gebruiker een drempelwaarde overschrijdt",
+ "abusefilter-edit-action-rangeblock": "De bijbehorende IP-range blokkeren waar de gebruiker vandaan komt",
+ "abusefilter-edit-action-tag": "De bewerking voor nadere beoordeling markeren.",
+ "abusefilter-edit-throttle-count": "Aantal toe te laten handelingen:",
+ "abusefilter-edit-throttle-period": "Tijdsduur:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|seconde|seconden}}",
+ "abusefilter-edit-throttle-groups": "Groepsbeperkingen per tijdseenheid op basis van:\n:''(één per regel, combineren met komma's)''",
+ "abusefilter-edit-warn-message": "Te gebruiken systeembericht voor waarschuwing:",
+ "abusefilter-edit-warn-other": "Ander bericht",
+ "abusefilter-edit-warn-other-label": "Paginanaam of ander bericht:\n:''(zonder voorvoegsel MediaWiki)''",
+ "abusefilter-edit-warn-actions": "Handelingen:",
+ "abusefilter-edit-warn-preview": "Voorvertoning geselecteerd bericht",
+ "abusefilter-edit-warn-edit": "Geselecteerd bericht aanmaken/bewerken",
+ "abusefilter-edit-tag-tag": "[[Special:Tags|Labels]] toe te passen (één per regel):",
+ "abusefilter-edit-denied": "U mag de details van dit filter niet bekijken, omdat die niet openbaar zijn.",
+ "abusefilter-edit-main": "Filterparameters",
+ "abusefilter-edit-done-subtitle": "Filter bewerkt",
+ "abusefilter-edit-done": "[[Special:AbuseFilter/history/$1/diff/prev/$2|Uw wijzigingen]] aan [[Special:AbuseFilter/$1|filter $3]] zijn opgeslagen.",
+ "abusefilter-edit-badsyntax": "Er zit een syntaxisfout in de opgegeven filter.\nDe uitvoer van de parser was: <pre>$1</pre>",
+ "abusefilter-edit-restricted": "U kunt dit filter niet bewerken omdat die één of meerdere beperkte handelingen bevat.\nVraag een gebruiker met toestemming om beperkte handelingen toe te voegen om de wijziging voor u te maken.",
+ "abusefilter-edit-viewhistory": "Geschiedenis van het filter bekijken",
+ "abusefilter-edit-history": "Geschiedenis:",
+ "abusefilter-edit-check": "Syntaxis controleren",
+ "abusefilter-edit-badfilter": "Het opgegeven filter bestaat niet",
+ "abusefilter-edit-revert": "De door dit filter genomen maatregelen terugdraaien",
+ "abusefilter-edit-tools": "Hulpmiddelen:",
+ "abusefilter-edit-test-link": "Dit filter tegen recente bewerkingen testen",
+ "abusefilter-edit-export": "Dit filter exporteren naar een andere wiki",
+ "abusefilter-edit-syntaxok": "Er zijn geen syntaxisfouten gevonden.",
+ "abusefilter-edit-syntaxerr": "Er is een syntaxisfout gevonden: $1",
+ "abusefilter-edit-bad-tags": "Een of meerdere van de labels die u hebt opgegeven zijn niet geldig.\nLabels moeten kort zijn, mogen geen speciale tekens bevatten, en mogen niet gereserveerd zijn door andere software. Kies een andere labelnaam.",
+ "abusefilter-edit-notallowed": "U hebt geen rechten om filters aan te maken of te wijzigen",
+ "abusefilter-edit-notallowed-global": "U kunt globale misbruikfilters niet aanmaken of bewerken",
+ "abusefilter-edit-notallowed-global-custom-msg": "Aangepaste waarschuwingsberichten worden niet ondersteund voor globale filters",
+ "abusefilter-edit-builder-select": "Selecteer een optie om deze aan de cursor toe te voegen",
+ "abusefilter-edit-builder-group-op-arithmetic": "Aritmische operatoren",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Optellen (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Aftrekken (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Vermenigvuldigen (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Delen (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Modulus (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Machtsverheffen (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Comparatieve operatators",
+ "abusefilter-edit-builder-op-comparison-equal": "Gelijk aan (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Niet gelijk aan (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "Kleiner dan (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Groter dan (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Kleiner dan of gelijk aan (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Groter dan of gelijk aan (>=)",
+ "abusefilter-edit-builder-group-op-bool": "Booleaanse operatoren",
+ "abusefilter-edit-builder-op-bool-not": "Niet (!)",
+ "abusefilter-edit-builder-op-bool-and": "En (&)",
+ "abusefilter-edit-builder-op-bool-or": "Of (|)",
+ "abusefilter-edit-builder-group-misc": "Overige",
+ "abusefilter-edit-builder-misc-in": "maakt onderdeel uit van tekst (in)",
+ "abusefilter-edit-builder-misc-like": "Voldoet aan patroon (like)",
+ "abusefilter-edit-builder-misc-rlike": "Voldoet aan reguliere expressie (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "Voldoet aan reguliere expressie, ongevoelig voor hoofdletters (irlike)",
+ "abusefilter-edit-builder-misc-contains": "De linker tekst bevat de rechter tekst (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "Letterlijke tekst (\"\")",
+ "abusefilter-edit-builder-misc-tern": "Ternaire operator (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "Voorwaardelijk (als X dan Y anders Z)",
+ "abusefilter-edit-builder-group-funcs": "Functies",
+ "abusefilter-edit-builder-funcs-length": "Tekstlengte (length)",
+ "abusefilter-edit-builder-funcs-lcase": "Naar kleine letters (lcase)",
+ "abusefilter-edit-builder-funcs-ucase": "Naar hoofdletters (ucase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "Verwarrende tekens normaliseren (ccnorm)",
+ "abusefilter-edit-builder-funcs-ccnorm-contains-any": "Normaliseer en doorzoek een string voor meerdere substringen in OR-modus (ccnorm_contains_any)",
+ "abusefilter-edit-builder-funcs-ccnorm-contains-all": "Normaliseer en doorzoek een string voor meerdere substringen in AND-modus (ccnorm_contains_all)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "Dubbele tekens verwijderen (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "Speciale tekens / totaal aantal tekens (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "Normaliseren (norm)",
+ "abusefilter-edit-builder-funcs-count": "Aantal keren dat tekst X voorkomt in tekst Y (count)",
+ "abusefilter-edit-builder-funcs-rcount": "Aantal keren dat reguliere expressie X voorkomt in tekst Y (rcount)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "Witruimte verwijderen (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "Speciale tekens verwijderen (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "Bevindt het IP-adres zich in de opgegeven range? (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "Tekst doorzoeken op meerdere tekstdelen (contains_any)",
+ "abusefilter-edit-builder-funcs-substr": "Tekstdeel (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "Plaats van het tekstdeel (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "Tekstdeel vervangen door tekst (str_replace)",
+ "abusefilter-edit-builder-funcs-rescape": "Tekst escapen als letterlijk in reguliere expressies (rescape)",
+ "abusefilter-edit-builder-funcs-set_var": "Variabele instellen (set_var)",
+ "abusefilter-edit-builder-group-vars": "Variabelen",
+ "abusefilter-edit-builder-vars-accountname": "Accountnaam (tijdens aanmaken)",
+ "abusefilter-edit-builder-vars-timestamp": "UNIX-tijdstempel van wijziging",
+ "abusefilter-edit-builder-vars-action": "Handeling",
+ "abusefilter-edit-builder-vars-addedlines": "Regels toegevoegd in bewerking",
+ "abusefilter-edit-builder-vars-delta": "Groottewijziging",
+ "abusefilter-edit-builder-vars-diff": "Unified diff van wijzigingen in bewerking",
+ "abusefilter-edit-builder-vars-newsize": "Nieuwe paginagrootte",
+ "abusefilter-edit-builder-vars-oldsize": "Oude paginagrootte",
+ "abusefilter-edit-builder-vars-old-content-model": "Oude inhoudsmodel",
+ "abusefilter-edit-builder-vars-new-content-model": "Nieuw inhoudsmodel",
+ "abusefilter-edit-builder-vars-removedlines": "Regels verwijderd in bijdrage",
+ "abusefilter-edit-builder-vars-summary": "Bewerkingssamenvatting",
+ "abusefilter-edit-builder-vars-article-id": "Pagina-ID",
+ "abusefilter-edit-builder-vars-article-ns": "Paginanaamruimte",
+ "abusefilter-edit-builder-vars-article-text": "Paginanaam (zonder naamruimte)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Volledige paginanaam",
+ "abusefilter-edit-builder-vars-article-views": "Bekeken pagina's",
+ "abusefilter-edit-builder-vars-movedfrom-id": "Pagina-ID van de te hernoemen pagina",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "Naamruimte van de te verplaatsen pagina",
+ "abusefilter-edit-builder-vars-movedfrom-text": "Naam van de te verplaatsen pagina",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "Volledige naam van de te verplaatsen pagina",
+ "abusefilter-edit-builder-vars-movedto-id": "Pagina-ID van de bestemming van de te hernoemen pagina",
+ "abusefilter-edit-builder-vars-movedto-ns": "Naamruimte van de bestemming van de te verplaatsen pagina",
+ "abusefilter-edit-builder-vars-movedto-text": "Naam van de bestemming van de te verplaatsen pagina",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "Volledige naam van de bestemming van de te verplaatsen pagina",
+ "abusefilter-edit-builder-vars-user-editcount": "Aantal bewerkingen gebruiker",
+ "abusefilter-edit-builder-vars-user-age": "Bestaansduur gebruiker",
+ "abusefilter-edit-builder-vars-user-name": "Gebruikersaccountnaam",
+ "abusefilter-edit-builder-vars-user-groups": "Groepen (inclusief impliciete) waar gebruiker lid van is",
+ "abusefilter-edit-builder-vars-user-rights": "Rechten die een gebruiker heeft",
+ "abusefilter-edit-builder-vars-user-blocked": "Of de gebruiker geblokkeerd is",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "Tijdstip e-mailbevestiging",
+ "abusefilter-edit-builder-vars-recent-contributors": "Laatste tien bewerkers van de pagina",
+ "abusefilter-edit-builder-vars-first-contributor": "Eerste gebruiker die heeft bijgedragen aan de pagina",
+ "abusefilter-edit-builder-vars-all-links": "Alle externe koppelingen in de nieuwe tekst",
+ "abusefilter-edit-builder-vars-added-links": "Alle externe koppelingen die in deze bewerking zijn toegevoegd",
+ "abusefilter-edit-builder-vars-removed-links": "Alle bij deze bewerking toegevoegde externe koppelingen zijn verwijderd",
+ "abusefilter-edit-builder-vars-old-text": "Wikitekst van de oude pagina vóór de bewerking",
+ "abusefilter-edit-builder-vars-new-text": "Wikitekst van de nieuwe pagina ná de bewerking",
+ "abusefilter-edit-builder-vars-new-pst": "Wikitext nieuwe pagina, voor opslaan getransformeerd",
+ "abusefilter-edit-builder-vars-diff-pst": "Samengevoegde verschillende van de bewerking, transformaties voor opslaan",
+ "abusefilter-edit-builder-vars-addedlines-pst": "Regels toegevoegd in bewerking, transformaties voor opslaan",
+ "abusefilter-edit-builder-vars-new-text-stripped": "Nieuwe paginatekst, ontdaan van opmaakcode",
+ "abusefilter-edit-builder-vars-new-html": "Verwerkte HTML-broncode van de nieuwe versie",
+ "abusefilter-edit-builder-vars-restrictions-edit": "Beveiligingsniveau voor bewerken van de pagina",
+ "abusefilter-edit-builder-vars-restrictions-move": "Beveiligingsniveau voor hernoemen van de pagina",
+ "abusefilter-edit-builder-vars-restrictions-create": "Aanmaakbeveiliging voor de pagina",
+ "abusefilter-edit-builder-vars-restrictions-upload": "Uploadbeveiliging van het bestand",
+ "abusefilter-edit-builder-vars-old-text-stripped": "Tekst oude pagina, ontdaan van alle opmaak",
+ "abusefilter-edit-builder-vars-old-links": "Koppelingen in de pagina voor de bewerking",
+ "abusefilter-edit-builder-vars-old-html": "Wikitext oude pagina in HTML",
+ "abusefilter-edit-builder-vars-minor-edit": "Of de bewerking wel of niet als klein gemarkeerd is",
+ "abusefilter-edit-builder-vars-file-sha1": "SHA1-hashcode van de bestandsinhoud",
+ "abusefilter-edit-builder-vars-file-size": "Grootte van het bestand in bytes",
+ "abusefilter-edit-builder-vars-file-mime": "Het MIME-type van het bestand",
+ "abusefilter-edit-builder-vars-file-mediatype": "Media-type van het bestand",
+ "abusefilter-edit-builder-vars-file-width": "Breedte van het bestand in pixels",
+ "abusefilter-edit-builder-vars-file-height": "De hoogte van het bestand in pixels",
+ "abusefilter-edit-builder-vars-file-bits-per-channel": "Bits per kleurkanaal van het bestand",
+ "abusefilter-edit-block-options": "Blokkeringsopties:",
+ "abusefilter-filter-log": "Recente filterwijzigingen",
+ "abusefilter-history": "Geschiedenis voor het filter #$1",
+ "abusefilter-history-foruser": "Wijzigingen door $1",
+ "abusefilter-history-hidden": "verborgen",
+ "abusefilter-history-enabled": "ingeschakeld",
+ "abusefilter-history-global": "Globaal",
+ "abusefilter-history-timestamp": "Tijd",
+ "abusefilter-history-user": "Gebruiker",
+ "abusefilter-history-public": "Publieke filterbeschrijving",
+ "abusefilter-history-flags": "Markeringen",
+ "abusefilter-history-filter": "Filterregel",
+ "abusefilter-history-comments": "Opmerkingen",
+ "abusefilter-history-actions": "Maatregelen",
+ "abusefilter-history-backedit": "Terug naar filters bewerken",
+ "abusefilter-history-deleted": "Verwijderd",
+ "abusefilter-history-filterid": "Filter",
+ "abusefilter-history-select-legend": "Zoekopdracht verfijnen",
+ "abusefilter-history-select-user": "Gebruiker:",
+ "abusefilter-history-select-filter": "Filternummer:",
+ "abusefilter-history-select-submit": "Verfijnen",
+ "abusefilter-history-diff": "Wijzigingen",
+ "abusefilter-history-error-hidden": "Het filter dat u hebt opgevraagd is verborgen en u kunt de geschiedenis niet bekijken.",
+ "abusefilter-exception-unexpectedatend": "Onverwachte tekst \"$2\" bij teken $1.",
+ "abusefilter-exception-expectednotfound": "Een verwachte $2 bij teken $1 is niet aangetroffen.\nIn plaats daarvan is $3 $4 aangetroffen.",
+ "abusefilter-exception-unrecognisedkeyword": "Trefwoord $2 bij teken $1 is niet herkend.",
+ "abusefilter-exception-unexpectedtoken": "Onverwacht token \"$3\" (van type $2) bij teken $1.",
+ "abusefilter-exception-unclosedstring": "Niet-gesloten tekst die begint bij teken $1.",
+ "abusefilter-exception-invalidoperator": "Ongeldige operator \"$2\" bij teken $1.",
+ "abusefilter-exception-unrecognisedtoken": "Token \"$2\" niet herkend bij teken $1.",
+ "abusefilter-exception-noparams": "Er zijn geen parameters opgegeven voor functie \"$2\" bij teken $1.",
+ "abusefilter-exception-dividebyzero": "Ongeldige poging tot delen van $2 door nul bij teken $1.",
+ "abusefilter-exception-unrecognisedvar": "Onherkenbare variabele $2 bij teken $1",
+ "abusefilter-exception-notenoughargs": "Er zijn niet voldoende parameters opgegeven voor de functie $2 die is aangeroepen bij teken $1.\nEr {{PLURAL:$3|werd één parameter|werden $3 parameters}} verwacht, en er {{PLURAL:$4|is er één|zijn er $4}} aangetroffen.",
+ "abusefilter-exception-regexfailure": "Er is een fout aangetroffen in de reguliere expressie \"$3\" bij teken $1: \"$2\"",
+ "abusefilter-exception-overridebuiltin": "De ingebouwde variabele \"$2\" is vervangen bij teken $1.\nDit is niet toegestaan.",
+ "abusefilter-exception-outofbounds": "Er is getracht een lijstelement ($2 bij lijstgrootte $3) op te halen dat niet niet bestaat bij teken $1.",
+ "abusefilter-exception-notlist": "Er is getracht een verzamelingselement op te vragen uit iets dat geen verzameling is bij teken $1.",
+ "abusefilter-action-tag": "Label",
+ "abusefilter-action-throttle": "Limieten",
+ "abusefilter-action-warn": "Waarschuwen",
+ "abusefilter-action-blockautopromote": "Automatisch promoveren blokkeren",
+ "abusefilter-action-block": "Blokkeren",
+ "abusefilter-action-degroup": "Uit groepen verwijderd",
+ "abusefilter-action-rangeblock": "IP-range blokkeren",
+ "abusefilter-action-disallow": "Niet toegestaan",
+ "abusefilter-revert-title": "Alle wijzigingen door filter $1 terugdraaien",
+ "abusefilter-revert-intro": "Via dit formulier kunt u alle wijzigingen die door het filter via filter $1 gemaakt zijn terugdraaien.\nGebruik dit hulpmiddel zorgvuldig.",
+ "abusefilter-revert-preview-item": "$1: $2 heeft een $3 {{GENDER:$7|gemaakt}} op $4.\nTerug te draaien maatregelen: $5 ($6)",
+ "abusefilter-revert-search-legend": "Selecteer een filtermaatregel om terug te draaien",
+ "abusefilter-revert-periodstart": "Begin periode:",
+ "abusefilter-revert-periodend": "Einde periode:",
+ "abusefilter-revert-search": "Maatregelen selecteren",
+ "abusefilter-revert-filter": "Filter:",
+ "abusefilter-revert-preview-intro": "Hieronder staan de maatregelen die het filter heeft genomen die door deze handeling worden teruggedraaid.\nControleer de terug te draaien maatregelen zorgvuldig, en klik \"{{int:abusefilter-revert-confirm}}\" om uw selectie te bevestigen.",
+ "abusefilter-revert-confirm": "Bevestigen",
+ "abusefilter-revert-success": "U hebt alle maatregelen die door het filter via [[Special:AbuseFilter/$1|filter $2]] zijn genomen teruggedraaid.",
+ "abusefilter-revert-reason": "Automatisch terugdraaien van alle maatregelen door de midbruikfilter via filter $1. Reden: $2",
+ "abusefilter-revert-reasonfield": "Reden:",
+ "abusefilter-test": "Filter tegen eerdere bewerkingen testen",
+ "abusefilter-test-intro": "Op deze pagina kunt u een opgegeven filter controleren met de laatste {{PLURAL:$1|wijzing|$1 wijzingen}}.\nGeef een filternummer in om een bestaand filter te laden en klik daarna op de knop \"{{int:abusefilter-test-load}}\".",
+ "abusefilter-test-legend": "Filter testen",
+ "abusefilter-test-load-filter": "Filternummer laden:",
+ "abusefilter-test-submit": "Testen",
+ "abusefilter-test-load": "Laden",
+ "abusefilter-test-user": "Wijzigingen door gebruiker:",
+ "abusefilter-test-period-start": "Wijzigingen gemaakt na:",
+ "abusefilter-test-period-end": "Wijzigingen gemaakt voor:",
+ "abusefilter-test-page": "Wijzigingen aan pagina:",
+ "abusefilter-test-shownegative": "Wijzigingen weergeven die niet aan het filter voldoen",
+ "abusefilter-test-syntaxerr": "Het filter dat u hebt ingevoerd bevat een syntaxisfout.\nDoor op \"{{int:abusefilter-edit-check}}\" te klikken krijgt u een volledige toelichting.",
+ "abusefilter-test-badtitle": "De paginanaam die u hebt ingevoerd is ongeldig. Deze bevat een of meer tekens die niet kunnen worden gebruikt in paginanamen.",
+ "abusefilter-changeslist-examine": "onderzoeken",
+ "abusefilter-examine": "Individuele wijzigingen onderzoeken",
+ "abusefilter-examine-intro": "Via deze pagina kunt u de door het filter aangemaakte variabelen voor een individuele wijziging onderzoeken, en deze testen tegen filters.",
+ "abusefilter-examine-legend": "Wijzigingen selecteren",
+ "abusefilter-examine-diff": "URL voor wijzigingen:",
+ "abusefilter-examine-user": "Gebruiker:",
+ "abusefilter-examine-title": "Paginanaam:",
+ "abusefilter-examine-submit": "Zoeken",
+ "abusefilter-examine-vars": "Variabelen voor deze wijziging",
+ "abusefilter-examine-test": "Deze wijziging tegen een filter testen",
+ "abusefilter-examine-test-button": "Filter testen",
+ "abusefilter-examine-match": "Het filter voldoet aan deze wijziging.",
+ "abusefilter-examine-nomatch": "Het filter voldoet niet aan deze wijziging.",
+ "abusefilter-examine-syntaxerror": "Het filter heeft een ongeldige opmaak.",
+ "abusefilter-examine-notfound": "De wijziging die u hebt opgevraagd is niet aangetroffen.",
+ "abusefilter-examine-incompatible": "Het filter ondersteunt de wijziging die u hebt opgevraagd niet",
+ "abusefilter-examine-noresults": "Er zijn geen resultaten gevonden voor de zoekopdrachtparameters die u hebt opgegeven.",
+ "abusefilter-topnav": "'''Filternavigatie'''",
+ "abusefilter-topnav-home": "Hoofdmenu",
+ "abusefilter-topnav-test": "Batchtesten",
+ "abusefilter-topnav-examine": "Bewerkingen onderzoeken",
+ "abusefilter-topnav-log": "Filterlogboek",
+ "abusefilter-topnav-tools": "Hulpmiddelen voor debuggen",
+ "abusefilter-topnav-import": "Filter importeren",
+ "abusefilter-log-name": "Filterlogboek",
+ "abusefilter-log-header": "Dit logboek geeft een overzicht van wijzigingen aan filters.\nZie de [[Special:AbuseFilter/history|lijst met recente filterwijzigingen]] voor volledige details.",
+ "abusefilter-logentry-create": "$1 heeft $4 {{GENDER:$2|aangemaakt}} ($5)",
+ "abusefilter-logentry-modify": "$1 {{GENDER:$2|heeft}} $4 aangepast ($5)",
+ "abusefilter-log-noresults": "Geen resultaten",
+ "abusefilter-diff-title": "Verschillen tussen versies",
+ "abusefilter-diff-item": "Item",
+ "abusefilter-diff-version": "Versie van $1 {{GENDER:$3|door}} $2",
+ "abusefilter-diff-info": "Basisgegevens",
+ "abusefilter-diff-pattern": "Filtervoorwaarden",
+ "abusefilter-diff-invalid": "Het was niet mogelijk de gevraagde versies op te halen",
+ "abusefilter-diff-backhistory": "Terug naar de filtergeschiedenis",
+ "abusefilter-diff-prev": "Oudere wijziging",
+ "abusefilter-diff-next": "Nieuwere wijziging",
+ "abusefilter-import-intro": "U kunt deze interface gebruiken om filters van andere wiki's te importeren.\nKlik \"{{int:abusefilter-edit-export}}\" bij \"{{int:abusefilter-edit-tools}}\".\nKopieer de tekst die verschijnt naar dit bewerkingsvenster en klik dan op \"{{int:abusefilter-import-submit}}\".",
+ "abusefilter-import-submit": "Filtergegevens importeren",
+ "abusefilter-group-default": "Standaard",
+ "abusefilter-http-error": "Er is een HTTP-fout opgetreden: $1.",
+ "abusefilter-view-private-reason": "Reden voor het opvragen van privélogboekgegevens:",
+ "abusefilter-log-details-id": "Logboekregel-ID",
+ "abusefilter-log-ip-not-available": "Niet beschikbaar",
+ "apihelp-abusefiltercheckmatch-description": "Controleer of een filter overeenkomt met een verzameling variabelen, via tekstverwerker gelogde misbruikfiltergebeurtenis.",
+ "apihelp-abusefiltercheckmatch-extended-description": "vars, rcid of logid is vereist, er kan echter maar één gebruikt worden.",
+ "apihelp-abusefiltercheckmatch-param-filter": "De volledige filtertekst om te controleren op overeenkomst.",
+ "apihelp-abusefiltercheckmatch-param-vars": "JSON-gecodeerde array van variabelen om tegen te testen.",
+ "apihelp-abusefiltercheckmatch-param-rcid": "Recentewijzigings-ID om tegen te controleren.",
+ "apihelp-abusefiltercheckmatch-param-logid": "Misbruikfilterlogboek-ID om tegen te controleren.",
+ "apihelp-abusefiltercheckmatch-example-1": "Testen of recentewijzigings-ID 15 overeenkomst met een eenvoudig filter",
+ "apihelp-abusefilterchecksyntax-description": "Controleer de syntaxis van een filter.",
+ "apihelp-abusefilterchecksyntax-summary": "Controleer de syntaxis van een filter.",
+ "apihelp-abusefilterchecksyntax-param-filter": "De volledige filtertekst om de syntaxis van te controleren.",
+ "apihelp-abusefilterchecksyntax-example-1": "Controleer de syntaxis van een geldig filter",
+ "apihelp-abusefilterchecksyntax-example-2": "Controleer de syntaxis van een ongeldig filter",
+ "apihelp-abusefilterevalexpression-description": "Evalueert een misbruikfilterexpressie.",
+ "apihelp-abusefilterevalexpression-summary": "Evalueert een misbruikfilterexpressie.",
+ "apihelp-abusefilterevalexpression-param-expression": "De te evalueren expressie.",
+ "apihelp-abusefilterevalexpression-example-1": "Evalueer een eenvoudige expressie",
+ "apihelp-abusefilterunblockautopromote-description": "Sta een gebruiker toe automatische promoties te krijgen als gevolg van een misbruikfilterregel.",
+ "apihelp-abusefilterunblockautopromote-summary": "Sta een gebruiker toe automatische promoties te krijgen als gevolg van een misbruikfilterregel.",
+ "apihelp-abusefilterunblockautopromote-param-user": "Gebruikersnaam van de te deblokkeren gebruiker.",
+ "apihelp-abusefilterunblockautopromote-example-1": "Verwijder de blokkade van de automatische promotie voor [[User:Example]]",
+ "apihelp-query+abusefilters-description": "Details weergeven van de misbruikfilters.",
+ "apihelp-query+abusefilters-summary": "Details weergeven van de misbruikfilters.",
+ "apihelp-query+abusefilters-param-startid": "Het filter-ID waar de opsomming begint.",
+ "apihelp-query+abusefilters-param-endid": "Het filter-ID waar de opsomming eindigt.",
+ "apihelp-query+abusefilters-param-show": "Alleen filters weergeven die voldoen aan deze criteria.",
+ "apihelp-query+abusefilters-param-limit": "Het maximale aantal weer te geven filters.",
+ "apihelp-query+abusefilters-param-prop": "Welke eigenschappen op te vragen.",
+ "apihelp-query+abusefilters-example-1": "Ingeschakelde openbare filters weergeven",
+ "apihelp-query+abusefilters-example-2": "Enige details over filters weergeven",
+ "apihelp-query+abuselog-description": "Gebeurtenissen weergeven die zijn afgevangen door een van de misbruikfilters.",
+ "apihelp-query+abuselog-summary": "Gebeurtenissen weergeven die zijn afgevangen door een van de misbruikfilters.",
+ "apihelp-query+abuselog-param-start": "Het tijdstip waar de opsomming begint.",
+ "apihelp-query+abuselog-param-end": "Het tijdstip waar de opsomming eindigt.",
+ "apihelp-query+abuselog-param-user": "Alleen regels weergeven die zijn uitgevoerd door een opgegeven gebruiker of IP-adres.",
+ "apihelp-query+abuselog-param-title": "Alleen regels weergeven die betrekking hebben op een opgegeven pagina.",
+ "apihelp-query+abuselog-param-filter": "Alleen regels weergeven die zijn afgevangen door een opgegeven filter-ID.",
+ "apihelp-query+abuselog-param-limit": "Het maximale aantal regels in de lijst.",
+ "apihelp-query+abuselog-param-prop": "Welke eigenschappen op te vragen.",
+ "apihelp-query+abuselog-param-wiki": "Wiki waarvan de hits gezien moeten laten worden.",
+ "apihelp-query+abuselog-example-1": "Recente logboekregels weergeven",
+ "apihelp-query+abuselog-example-2": "Recente logboekregels voor [[API]] weergeven",
+ "apierror-abusefilter-canttest": "U hebt geen toestemming om misbruikfilters te testen.",
+ "apierror-abusefilter-cantcheck": "U hebt geen toestemming om de syntax van misbruikfilters te controleren.",
+ "apierror-abusefilter-nosuchlogid": "Er is geen misbruikfilterregel met de id $1.",
+ "apierror-abusefilter-badsyntax": "Het filter heeft een ongeldige syntax."
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/nn.json b/www/wiki/extensions/AbuseFilter/i18n/nn.json
new file mode 100644
index 00000000..a74068fd
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/nn.json
@@ -0,0 +1,401 @@
+{
+ "@metadata": {
+ "authors": [
+ "Gunnernett",
+ "Harald Khan",
+ "Nghtwlkr",
+ "Njardarlogar",
+ "Matma Rex"
+ ]
+ },
+ "abusefilter-desc": "Legg automatisk til heuristikk til endringar.",
+ "abusefilter": "Konfigurasjon av endringsfilter",
+ "abuselog": "Endringsfilterlogg",
+ "abusefilter-intro": "Velkomen til grensesnittet for handsaming av endringsfilteret.\nEndringsfilteret er ein sjølvgåande mekanisme i programvara som automatisk undersøkjer alle handlingar.\nDette grensesnittet viser ei liste over definerte filter, og gjer det mogeleg å endra dei.",
+ "abusefilter-mustbeeditor": "Av tryggingsgrunnar kan berre brukarar med rett til å endra endringsfilteret nytta dette grensesnittet.",
+ "abusefilter-warning": "'''Åtvaring:''' Handlinga har automatisk vorte identifisert som skadeleg.\nIkkje-konstruktive handlingar vert raskt gjorde om, og langvarig forstyrrande endring vil føra til at kontoen din eller IP-adressa di vert blokkert. Meiner du dette er ei konstruktiv handling, kan du lagra henne om att for å stadfesta dette.\nEi kortfatta skildring av filterregelen som handlinga di utløyste er: $1",
+ "abusefilter-disallowed": "Denne handlinga har automatisk vorte identifisert som skadeleg, og vart difor ikkje tillaten.\nOm du meiner handlinga di var konstruktiv, informer ein administrator om kva du freista å få til.\nEi kortfatta skildring av misbruksregelen som handlinga di utløyste er: $1",
+ "abusefilter-blocked-display": "Denne handlinga har automatisk vorten identifisert som skadeleg, og du har vorten hindra frå å gjennomføra ho.\nI tillegg har kontoen din og alle IP-adresser assosiert med han vorten blokkert frå å endra {{SITENAME}}. Om dette var ein feil, kontakt ein administrator.\nEi kortfatta skildring av misbruksregelen som handlinga di utløyste er: $1",
+ "abusefilter-degrouped": "Denne handlinga har automatisk vorten identifisert som skadeleg. Difor vart ho ikkje tillaten, og grunna av mistanke om misbruk har kontoen din mista alle rettar. Om du meiner dette er ein feil, kontakt ein byråkrat med ei skildring om kva du gjorde, og rettane dine kan verta gjevne tilbake.\nEi kortfatta skildring av misbruksregelen som handlinga di utløyste er: $1",
+ "abusefilter-autopromote-blocked": "Handlinga har automatisk vorten identifisert som skadeleg, og vart ikkje tillaten.\nI tillegg vart nokre av rettane kontoen din hadde, fjerna mellombels av tryggingsårsaker.\nEi kort skildring av misbruksregelen handlinga di braut er: $1",
+ "abusefilter-blocker": "Endringsfilter",
+ "abusefilter-blockreason": "Automatisk blokkert av misbruksfilteret. Regelskildring: $1",
+ "abusefilter-degroupreason": "Rettar fjerna automatisk av misbruksfilteret. Regelskildring: $1",
+ "abusefilter-accountreserved": "Denne kontoen er reservert for bruk av endringsfilteret.",
+ "right-abusefilter-modify": "Endra endringsfilter",
+ "right-abusefilter-view": "Sjå endringsfilter",
+ "right-abusefilter-log": "Sjå misbruksloggen",
+ "right-abusefilter-log-detail": "Sjå detaljert loggføring om misbruk",
+ "right-abusefilter-private": "Sjå privat informasjon i misbruksloggen",
+ "right-abusefilter-modify-restricted": "Endra endringsfilter med avgrensa handlingar",
+ "right-abusefilter-revert": "Gjera om alle endringar gjorde av eit visst endringsfilter",
+ "right-abusefilter-view-private": "Sjå misbruksfiler merkte som private",
+ "right-abusefilter-log-private": "Sjå loggoppføringar frå endringsfilter merkte som private",
+ "right-abusefilter-hide-log": "Gøyma oppføringar i misbruksloggen.",
+ "right-abusefilter-hidden-log": "Sjå gøymde oppføringar i misbruksloggen",
+ "right-abusefilter-modify-global": "Oppretta eller endra globale endringsfilter",
+ "action-abusefilter-modify": "endra endringsfilter",
+ "action-abusefilter-view": "sjå endringsfilter",
+ "action-abusefilter-log": "sjå misbruksloggen",
+ "action-abusefilter-log-detail": "sjå detaljert loggføring om misbruk",
+ "action-abusefilter-private": "sjå private data i misbruksloggen",
+ "action-abusefilter-modify-restricted": "endra endringsfilter med avgrensa handlingar",
+ "action-abusefilter-revert": "gjera om alle endringane gjorde av eit endringsfilter",
+ "action-abusefilter-view-private": "sjå endringsfilter merkte som private.",
+ "abusefilter-log": "Logg for endringsfilter",
+ "abusefilter-log-summary": "Loggen syner ei liste over alle handlingane fanga opp av filtra.",
+ "abusefilter-log-search": "Søk i misbruksloggen",
+ "abusefilter-log-search-user": "Brukar:",
+ "abusefilter-log-search-filter": "Filter-ID-ar (skil med vertikalliner):",
+ "abusefilter-log-search-title": "Tittel:",
+ "abusefilter-log-search-wiki": "Wiki:",
+ "abusefilter-log-search-submit": "Søk",
+ "abusefilter-log-entry": "$1: $2 utløyste eit endringsfilter ved å gjera handlinga «$3» på $4. Reaksjon: $5; Filterskildring: $6",
+ "abusefilter-log-detailedentry-meta": "$1: $2 utløyste $3 ved å utføra handlinga «$4» på $5. Reaksjon: $6; Filterskildring: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "globalt filter $1",
+ "abusefilter-log-detailedentry-local": "filter $1",
+ "abusefilter-log-detailslink": "detaljar",
+ "abusefilter-log-diff": "skilnad",
+ "abusefilter-log-hidelink": "juster synlegheit",
+ "abusefilter-log-details-legend": "Detaljar for loggelementet $1",
+ "abusefilter-log-details-var": "Variabel",
+ "abusefilter-log-details-val": "Verdi",
+ "abusefilter-log-details-vars": "Handlingsparametrar",
+ "abusefilter-log-details-private": "Privat informasjon",
+ "abusefilter-log-details-ip": "Opphavs-IP",
+ "abusefilter-log-noactions": "ingen",
+ "abusefilter-log-details-diff": "Endringar gjorde i endringa",
+ "abusefilter-log-linkoncontribs": "endringsfilterlogg",
+ "abusefilter-log-linkoncontribs-text": "Endringsfilterlogg for brukaren",
+ "abusefilter-log-hidden": "(gøymd oppføring)",
+ "abusefilter-log-hidden-implicit": "(gøymd av di versjonen har vorte sletta)",
+ "abusefilter-log-cannot-see-details": "Du har ikkje løyve til å sjå detaljane i oppføringa.",
+ "abusefilter-log-details-hidden": "Du kan ikkje sjå detaljane for oppføringa sidan ho er gøymd frå ålmenn vising.",
+ "abusefilter-log-hide-legend": "Gøym loggoppføring",
+ "abusefilter-log-hide-id": "Loggoppførings-ID:",
+ "abusefilter-log-hide-hidden": "Gøym oppføringa frå ålmenn vising",
+ "abusefilter-log-hide-reason": "Årsak:",
+ "abusefilter-log-hide-forbidden": "Du har ikkje løyve til å gøyma oppføringar i misbruksloggen.",
+ "abusefilter-logentry-suppress": "skjulte «[[$1]]»",
+ "abusefilter-logentry-unsuppress": "viste «[[$1]]»",
+ "logentry-abusefilter-hit": "$1 utløyste $4, utførde handlinga «$5» på $3. Handlingar utførde: $6 ($7)",
+ "abusefilter-management": "Handsaming av endringsfilter",
+ "abusefilter-list": "Alle filter",
+ "abusefilter-list-id": "Filter-ID",
+ "abusefilter-list-status": "Stode",
+ "abusefilter-list-public": "Offentleg skildring",
+ "abusefilter-list-consequences": "Verknader",
+ "abusefilter-list-visibility": "Kor synleg",
+ "abusefilter-list-hitcount": "Treffteljing",
+ "abusefilter-list-edit": "Endra",
+ "abusefilter-list-details": "Detaljar",
+ "abusefilter-list-limit": "Tal per side:",
+ "abusefilter-list-lastmodified": "Sist endra",
+ "abusefilter-list-group": "Filtergruppe",
+ "abusefilter-hidden": "Privat",
+ "abusefilter-unhidden": "Offentleg",
+ "abusefilter-enabled": "Påslege",
+ "abusefilter-deleted": "Sletta",
+ "abusefilter-disabled": "Avslege",
+ "abusefilter-hitcount": "{{PLURAL:$1|eitt treff|$1 treff}}",
+ "abusefilter-new": "Lag eit nytt filter",
+ "abusefilter-return": "Attende til filterhandsaming",
+ "abusefilter-status-global": "Globalt",
+ "abusefilter-list-options": "Val",
+ "abusefilter-list-options-deleted": "Sletta filter:",
+ "abusefilter-list-options-deleted-only": "Vis berre sletta filter",
+ "abusefilter-list-options-deleted-hide": "Gøym sletta filter",
+ "abusefilter-list-options-deleted-show": "Inkluder sletta filter",
+ "abusefilter-list-options-scope": "Vis filter:",
+ "abusefilter-list-options-scope-local": "Berre lokale reglar",
+ "abusefilter-list-options-scope-global": "Berre globale reglar",
+ "abusefilter-list-options-disabled": "Deaktiverte filter:",
+ "abusefilter-list-options-hidedisabled": "Gøym avslegne filter",
+ "abusefilter-list-options-submit": "Oppdater",
+ "abusefilter-tools-text": "Her er nokre verktøy som kan vera nyttige for å laga og feilsøkja endringsfilter.",
+ "abusefilter-tools-expr": "Uttrykkstestar",
+ "abusefilter-tools-submitexpr": "Evaluer",
+ "abusefilter-tools-reautoconfirm": "Gje att status som automatisk godkjend",
+ "abusefilter-tools-reautoconfirm-user": "Brukar:",
+ "abusefilter-tools-reautoconfirm-submit": "Gjer automatisk godkjend på nytt",
+ "abusefilter-reautoconfirm-none": "Brukaren har ikkje fått oppheva stoda si som automatisk godkjend.",
+ "abusefilter-reautoconfirm-notallowed": "Du har ikkje løyve til å gje attende stoda som automatisk godkjend.",
+ "abusefilter-reautoconfirm-done": "Brukarkontoen si stoda som automatisk godkjend er vorten gjeven attende",
+ "abusefilter-status": "Av {{PLURAL:$1|den siste handlinga|dei siste $1 handlingane}} har $2 ($3 %) nådd grenseverdien $4. $5 ($6 %) passa med eit av dei aktiverte filtera.",
+ "abusefilter-edit": "Endrar endringsfilter",
+ "abusefilter-edit-subtitle": "Endrar filter $1",
+ "abusefilter-edit-subtitle-new": "Opprettar filter",
+ "abusefilter-edit-oldwarning": "<strong>Du endrar ein gammal versjon av dette filteret. Den oppgjevne statistikken gjeld for den seinaste versjonen av filteret. Om du lagrar endringane dine, kjem du til å skriva over alle endringane som blei gjort etter versjonen du no endrar. </strong> &bull; [[Special:AbuseFilter/history/$2|Tilbake til filterhistorikken]]",
+ "abusefilter-edit-status-label": "Statistikk:",
+ "abusefilter-edit-status": "Av {{PLURAL:$|den siste handlinga|dei siste $1 handlingane}} har dette filteret passa med $2 ($3 %).",
+ "abusefilter-edit-status-profile": "Av {{PLURAL:$|den siste handlinga|dei siste $1 handlingane}} har dette filteret passa med $2 ($3 %). I snitt er køyretida på $4ms og filteret nyttar {{PLURAL:$5|$5 vilkår}} av vilkårsgrensa.",
+ "abusefilter-edit-new": "Nytt filter",
+ "abusefilter-edit-save": "Lagra filter",
+ "abusefilter-edit-id": "Filter-ID:",
+ "abusefilter-edit-description": ":''(vert vist offentleg)''",
+ "abusefilter-edit-group": "Filtergruppe:",
+ "abusefilter-edit-flags": "Flagg:",
+ "abusefilter-edit-enabled": "Slå på filteret",
+ "abusefilter-edit-deleted": "Merk som sletta",
+ "abusefilter-edit-hidden": "Løyn detaljar om dette filteret frå offentleg vising",
+ "abusefilter-edit-global": "Globalt filter",
+ "abusefilter-edit-rules": "Regelverk:",
+ "abusefilter-edit-notes": "Merknader:",
+ "abusefilter-edit-lastmod": "Filteret vart sist endra:",
+ "abusefilter-edit-lastmod-text": "$1 av $2",
+ "abusefilter-edit-hitcount": "Filtertreff:",
+ "abusefilter-edit-consequences": "Handlingar gjennomførte ved treff",
+ "abusefilter-edit-action-warn": "Utfør desse handlingane etter å ha åtvara brukaren",
+ "abusefilter-edit-action-disallow": "Hindra brukaren frå å utføra handlinga",
+ "abusefilter-edit-action-blockautopromote": "Fjern stoda til brukaren som automatisk godkjend",
+ "abusefilter-edit-action-degroup": "Fjern brukaren frå alle privilegerte grupper",
+ "abusefilter-edit-action-block": "Blokker brukaren og/eller IP-adressa",
+ "abusefilter-edit-action-throttle": "Gjennomfør berre om brukaren gjer det fleire gonger",
+ "abusefilter-edit-action-rangeblock": "Blokker /16-intervallet som brukaren kjem frå.",
+ "abusefilter-edit-action-tag": "Merk endringa for vidare vurdering.",
+ "abusefilter-edit-throttle-count": "Tal på tillatne handlingar:",
+ "abusefilter-edit-throttle-period": "Tidsperiode:",
+ "abusefilter-edit-throttle-seconds": "{{PLURAL:$1|eitt sekund|$1 sekund}}",
+ "abusefilter-edit-throttle-groups": "Grupper snøggleik etter:\n:''(eitt for kvar line, kombiner med komma)''",
+ "abusefilter-edit-warn-message": "Systemmelding som skal verta nytta for åtvaringar:",
+ "abusefilter-edit-warn-other": "Anna melding",
+ "abusefilter-edit-warn-other-label": "Sidenamn på anna melding:\n:''(utan MediaWiki-forstaving)''",
+ "abusefilter-edit-warn-actions": "Handlingar:",
+ "abusefilter-edit-warn-preview": "Førehandsvis vald melding",
+ "abusefilter-edit-warn-edit": "Opprett/endra vald melding",
+ "abusefilter-edit-tag-tag": "[[Special:Tags|Merke]] som skal setjast på (eitt per line):",
+ "abusefilter-edit-denied": "Du kan ikkje sjå detaljane for filteret sidan det er løynt frå offentleg vising.",
+ "abusefilter-edit-main": "Filterparametrar",
+ "abusefilter-edit-done-subtitle": "Filter endra",
+ "abusefilter-edit-done": "[[Special:AbuseFilter/history/$1/diff/prev/$2|Endringane dine]] i [[Special:AbuseFilter/$1|filter $3]] har vorte lagra.",
+ "abusefilter-edit-badsyntax": "Det finst ein syntaksfeil i filteret du oppgav. Resultatet frå fortolkaren var: <pre>$1</pre>",
+ "abusefilter-edit-restricted": "Du kan ikkje endra dette filteret, av di det inneheld éin eller fleire avgrensa handlingar.\nSpør ein brukar med løyve til å leggja til avgrensa handlingar om han kan å gjera endringa for deg.",
+ "abusefilter-edit-viewhistory": "Sjå historikken til filteret",
+ "abusefilter-edit-history": "Historikk:",
+ "abusefilter-edit-check": "Saumfar syntaks",
+ "abusefilter-edit-badfilter": "Du oppgav eit filter som ikkje finst",
+ "abusefilter-edit-revert": "Gjer om handlingar gjorde av dette filteret",
+ "abusefilter-edit-tools": "Verktøy:",
+ "abusefilter-edit-test-link": "Test filteret på nylege endringar",
+ "abusefilter-edit-export": "Eksporter dette filteret til ein annan wiki",
+ "abusefilter-edit-syntaxok": "Fann ingen syntaksfeil.",
+ "abusefilter-edit-syntaxerr": "Fann syntaksfeil: $1",
+ "abusefilter-edit-bad-tags": "Eitt eller fleire av merka som du valde er ikkje gyldige.\nMerke skal vera korte og dei skal ikkje innehalda spesialteikn.",
+ "abusefilter-edit-notallowed": "Du har ikkje løyve til å korkje oppretta eller endra endringsfilter",
+ "abusefilter-edit-notallowed-global": "Du har ikkje løyve til å korkje oppretta eller endra globale endringsfilter",
+ "abusefilter-edit-notallowed-global-custom-msg": "Eigendefinerte åtvaringsmeldingar er ikkje stødde for globale filter.",
+ "abusefilter-edit-builder-select": "Vel noko for å leggja det til på markøren",
+ "abusefilter-edit-builder-group-op-arithmetic": "Aritmetiske operatørar",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Addisjon (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Subtraksjon (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Multiplikasjon (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Divisjon (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Rest/modulo (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Potens (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Samanlikningsoperatørar",
+ "abusefilter-edit-builder-op-comparison-equal": "Er lik (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Er ikkje lik (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "Mindre enn (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Større enn (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Mindre enn eller lik (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Større enn eller lik (>=)",
+ "abusefilter-edit-builder-group-op-bool": "Boolske operatørar",
+ "abusefilter-edit-builder-op-bool-not": "Ikkje (!)",
+ "abusefilter-edit-builder-op-bool-and": "Og (&)",
+ "abusefilter-edit-builder-op-bool-or": "Eller (|)",
+ "abusefilter-edit-builder-group-misc": "Ymse",
+ "abusefilter-edit-builder-misc-in": "del av ein streng (in)",
+ "abusefilter-edit-builder-misc-like": "Passar med mønster (like)",
+ "abusefilter-edit-builder-misc-rlike": "Passar med regulært uttrykk (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "Passar med regulært uttrykk, skil ikkje mellom store og små bokstavar (irlike)",
+ "abusefilter-edit-builder-misc-contains": "Venstre streng inneheld høgre streng (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "Ordrett streng (\"\")",
+ "abusefilter-edit-builder-misc-tern": "Trefaldig operator (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "Etter vilkår (if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "Funksjonar",
+ "abusefilter-edit-builder-funcs-length": "Strenglengd (length)",
+ "abusefilter-edit-builder-funcs-lcase": "Gjer om til små bokstavar (lcase)",
+ "abusefilter-edit-builder-funcs-ucase": "Gjer om til store bokstavar (lcase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "Normaliser forvirrande bokstavar (ccnorm)",
+ "abusefilter-edit-builder-funcs-ccnorm-contains-any": "Normaliser og søk etter fleire delstrengar i ein streng (ccnorm_contains_any)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "Fjern doble bokstavar (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "Spesialteikn / totalt tal på teikn (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "Normaliser (norm)",
+ "abusefilter-edit-builder-funcs-count": "Kor mange gonger strengen X finst i strengen Y (count)",
+ "abusefilter-edit-builder-funcs-rcount": "Kor mange gonger regulæruttrykket X dukkar opp i strengen Y (rcount)",
+ "abusefilter-edit-builder-funcs-get_matches": "Tabell med strengar frå ein tekst som passar regulært uttrykk, for kvar oppfanga gruppe (get_matches)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "Fjern tomrom (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "Fjern spesialteikn (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "Er IP i rekkja? (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "Søk streng for fleire delstrengar (contains_any)",
+ "abusefilter-edit-builder-funcs-substr": "Delstreng (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "Posisjon til delstreng i streng (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "Erstatt delstreng med streng (str_replace)",
+ "abusefilter-edit-builder-funcs-rescape": "Tolk streng bokstavrett i regulæruttrykk (rescape)",
+ "abusefilter-edit-builder-funcs-set_var": "Set variabel (set_var)",
+ "abusefilter-edit-builder-group-vars": "Variablar",
+ "abusefilter-edit-builder-vars-accountname": "Kontonamn (on account creation)",
+ "abusefilter-edit-builder-vars-timestamp": "Unix-tidsstempelet ved endringa",
+ "abusefilter-edit-builder-vars-action": "Handling",
+ "abusefilter-edit-builder-vars-addedlines": "Liner lagde til i endring",
+ "abusefilter-edit-builder-vars-delta": "Storleiksskilnad i endring",
+ "abusefilter-edit-builder-vars-diff": "Einskapleg skilnad av endringar i endringa",
+ "abusefilter-edit-builder-vars-newsize": "Ny sidestorleik",
+ "abusefilter-edit-builder-vars-oldsize": "Gamal sidestorleik",
+ "abusefilter-edit-builder-vars-removedlines": "Liner fjerna i endring",
+ "abusefilter-edit-builder-vars-summary": "Endringssamandrag/årsak",
+ "abusefilter-edit-builder-vars-article-id": "Side-ID",
+ "abusefilter-edit-builder-vars-article-ns": "Sidenamnerom",
+ "abusefilter-edit-builder-vars-article-text": "Sidetittel (utan namnerom)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Fullstendig sidetittel",
+ "abusefilter-edit-builder-vars-article-views": "Sidevisingar",
+ "abusefilter-edit-builder-vars-movedfrom-id": "Side-ID til kjeldesida ved flytting",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "Namnerom til målsida ved flytting",
+ "abusefilter-edit-builder-vars-movedfrom-text": "Tittel til kjeldesida ved flytting",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "Fullstendig tittel til kjeldesida ved flytting",
+ "abusefilter-edit-builder-vars-movedto-id": "Side-ID til målsida ved flytting",
+ "abusefilter-edit-builder-vars-movedto-ns": "Namnerom til målsida ved flytting",
+ "abusefilter-edit-builder-vars-movedto-text": "Tittel til målsida ved flytting",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "Fullstendig tittel til målsida ved flytting",
+ "abusefilter-edit-builder-vars-user-editcount": "Talet på bidrag av brukaren",
+ "abusefilter-edit-builder-vars-user-age": "Alder på brukarkonto",
+ "abusefilter-edit-builder-vars-user-name": "Namn på brukarkonto",
+ "abusefilter-edit-builder-vars-user-groups": "Grupper (inkludert implisitte) brukaren er i",
+ "abusefilter-edit-builder-vars-user-rights": "Rettar som brukaren har",
+ "abusefilter-edit-builder-vars-user-blocked": "Om brukaren er blokkert",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "E-postadressa vart stadfest",
+ "abusefilter-edit-builder-vars-recent-contributors": "Dei siste fem bidragsytarane til sida",
+ "abusefilter-edit-builder-vars-all-links": "Alle eksterne lenkjer i den nye teksten",
+ "abusefilter-edit-builder-vars-added-links": "Alle eksterne lenkjer lagt til i endringa",
+ "abusefilter-edit-builder-vars-removed-links": "Alle eksterne lenkjer fjerna i endringa",
+ "abusefilter-edit-builder-vars-old-text": "Den gamle wikiteksten til sida, før endringa",
+ "abusefilter-edit-builder-vars-new-text": "Den nye wikiteksten til sida, etter endringa",
+ "abusefilter-edit-builder-vars-new-pst": "Wikitekst for ny side, førlagringsomforma",
+ "abusefilter-edit-builder-vars-new-text-stripped": "Ny sidetekst med eventuelle markeringar fjerna",
+ "abusefilter-edit-builder-vars-new-html": "Tolka HTML-kjelde for den nye versjonen",
+ "abusefilter-edit-builder-vars-restrictions-edit": "Vernenivå på sida",
+ "abusefilter-edit-builder-vars-restrictions-move": "Flyttervernnivå på sida",
+ "abusefilter-edit-builder-vars-restrictions-create": "Opprettingsvernet til sida",
+ "abusefilter-edit-builder-vars-restrictions-upload": "Opplastingsvernet til fila",
+ "abusefilter-edit-builder-vars-old-text-stripped": "Gamal sidetekst, med all koding teken vekk",
+ "abusefilter-edit-builder-vars-old-links": "Lenkjer på sida, før endringa",
+ "abusefilter-edit-builder-vars-old-html": "Gamal wikitekst på sida, tolka til HTML",
+ "abusefilter-edit-builder-vars-minor-edit": "Om endringa er markert som småplukk eller ikkje",
+ "abusefilter-edit-builder-vars-file-sha1": "SHA1-hash av filinnhald",
+ "abusefilter-edit-builder-vars-file-size": "Filstorleik i byte",
+ "abusefilter-edit-builder-vars-file-mime": "MIME-type til fil",
+ "abusefilter-edit-builder-vars-file-mediatype": "Filmedietype",
+ "abusefilter-edit-builder-vars-file-height": "Filhøgd i pikslar",
+ "abusefilter-edit-builder-vars-file-bits-per-channel": "Bit per fargekanal i fila",
+ "abusefilter-filter-log": "Nylege filterendringar",
+ "abusefilter-history": "Endringshistorikk for endringsfilter #$1",
+ "abusefilter-history-foruser": "Endringar av $1",
+ "abusefilter-history-hidden": "løynd",
+ "abusefilter-history-enabled": "aktivert",
+ "abusefilter-history-global": "Global",
+ "abusefilter-history-timestamp": "Tid",
+ "abusefilter-history-user": "Brukar",
+ "abusefilter-history-public": "Offentleg filterskildring",
+ "abusefilter-history-flags": "Flagg",
+ "abusefilter-history-filter": "Filterregel",
+ "abusefilter-history-comments": "Kommentarar",
+ "abusefilter-history-actions": "Handlingar",
+ "abusefilter-history-backedit": "Tilbake til endring av filter",
+ "abusefilter-history-deleted": "Sletta",
+ "abusefilter-history-filterid": "Filter",
+ "abusefilter-history-select-legend": "Utdjup søk",
+ "abusefilter-history-select-user": "Brukar:",
+ "abusefilter-history-select-submit": "Utdjup",
+ "abusefilter-history-diff": "Endringar",
+ "abusefilter-history-error-hidden": "Filteret du bad om er skjult, og du kan ikkje sjå historikken til det",
+ "abusefilter-exception-unexpectedatend": "Uventa «$2» ved teikn nummer $1.",
+ "abusefilter-exception-expectednotfound": "Venta ein $2 ved teikn nummer $1, men fann han ikkje (fann $3 $4 i staden).",
+ "abusefilter-exception-unrecognisedkeyword": "Nøkkelordet $2 ved teikn nummer $1 er ukjent.",
+ "abusefilter-exception-unexpectedtoken": "Uventa token «$3» (av type $2) ved teikn nummer $1.",
+ "abusefilter-exception-unclosedstring": "Open streng som startar ved teikn nummer $1.",
+ "abusefilter-exception-invalidoperator": "Ugyldig operatør «$2» ved teikn nummer $1.",
+ "abusefilter-exception-unrecognisedtoken": "Ukjend token «$2» ved teikn nummer $1.",
+ "abusefilter-exception-noparams": "Ingen parametrar vart gjevne til funksjonen «$2» ved teikn nummer $1.",
+ "abusefilter-exception-dividebyzero": "Ulovleg freistnad på å dela $2 på null ved $1.",
+ "abusefilter-exception-unrecognisedvar": "Ukjend variabel $2 ved teikn nummer $1",
+ "abusefilter-exception-notenoughargs": "Funksjonskallet $2 ved teikn $1 hadde ikkje nok argument.\nVenta {{PLURAL:$3|eitt argument|$3 argument}}, fekk $4",
+ "abusefilter-exception-regexfailure": "Feil i det regulære uttrykket «$3» ved teikn $1: «$2»",
+ "abusefilter-exception-overridebuiltin": "Ulovleg overkøyring av innebygd variabel «$2» ved teikn $1.",
+ "abusefilter-exception-outofbounds": "Bed om ikkje-eksisterande listeelement $2 (listestorleik = $3) ved teikn $1.",
+ "abusefilter-exception-notlist": "Bed om tabellelement fra ein ikkje-tabell ved teikn $1.",
+ "abusefilter-action-tag": "Merk",
+ "abusefilter-action-throttle": "Avgrens endringssnøggleik",
+ "abusefilter-action-warn": "Åtvar",
+ "abusefilter-action-blockautopromote": "Gjer om autopromotering",
+ "abusefilter-action-block": "Blokker",
+ "abusefilter-action-degroup": "Fjern frå grupper",
+ "abusefilter-action-rangeblock": "Intervallblokker",
+ "abusefilter-action-disallow": "Nekt",
+ "abusefilter-revert-title": "Gjer om alle endringane til filteret $1",
+ "abusefilter-revert-intro": "Dette skjemaet lèt deg attenderulla alle endringane gjorde av endringsfilteret gjennom filter $1. Ver varsam når du nyttar dette verktøyet.",
+ "abusefilter-revert-preview-item": "$1: $2 gjorde ei $3 på $4.\nHandlingar som skal verta gjorde om: $5 ($6)",
+ "abusefilter-revert-search-legend": "Vel misbruksfilterhandlingar som skal gjerast om",
+ "abusefilter-revert-periodstart": "Periodestart:",
+ "abusefilter-revert-periodend": "Periodeslutt:",
+ "abusefilter-revert-search": "Vel handlingar",
+ "abusefilter-revert-filter": "Filter:",
+ "abusefilter-revert-preview-intro": "Under er handlingane gjorde av endringsfilteret som vil attenderullast av denne handlinga.\nSjå nøye gjennom dei, og klikk på «{{int:abusefilter-revert-confirm}}» for å stadfesta valet ditt.",
+ "abusefilter-revert-confirm": "Stadfest",
+ "abusefilter-revert-success": "Du har attenderulla alle endringane gjorde av endringsfilteret gjenom [[Special:AbuseFilter/$1|filter $2]].",
+ "abusefilter-revert-reason": "Automatisk attenderulling av alle handlingane gjorde av endringsfilteret gjennom filter $1.\nGrunngjeving: $2",
+ "abusefilter-revert-reasonfield": "Årsak:",
+ "abusefilter-test": "Test eit filter på tidlegare endringar",
+ "abusefilter-test-intro": "Denne sida lèt deg testa eit filter skrive inn i boksen nedanfor på {{PLURAL:$1|den siste endringa|dei siste $1 endringane}}.\nFor å lasta inn eit filter som finst frå før, skriv inn filter-ID-en i boksen under den store boksen og klikk på «{{int:abusefilter-test-load}}»-knappen",
+ "abusefilter-test-legend": "Filtertesting",
+ "abusefilter-test-load-filter": "Last filter-ID:",
+ "abusefilter-test-submit": "Test",
+ "abusefilter-test-load": "Last inn",
+ "abusefilter-test-user": "Endringar av brukar:",
+ "abusefilter-test-period-start": "Endringar gjorde etter:",
+ "abusefilter-test-period-end": "Endringar gjorde før:",
+ "abusefilter-test-page": "Endringa gjorde på sida:",
+ "abusefilter-test-shownegative": "Vis endringar som ikkje passar med filteret",
+ "abusefilter-test-syntaxerr": "Du skreiv inn eit filter som inneheld ein syntaksfeil.\nDu kan sjå ei utførleg skildring ved å klikka på «{{int:abusefilter-edit-check}}»-knappen.",
+ "abusefilter-changeslist-examine": "undersøk",
+ "abusefilter-examine": "Gransk einskildendringar",
+ "abusefilter-examine-intro": "Denne sida lèt deg undesøkja variablane laga av endringsfilteret for ei einskild endring, og lèt deg òg testa filter på henne.",
+ "abusefilter-examine-legend": "Vel endringar",
+ "abusefilter-examine-diff": "Skilnadsadressa:",
+ "abusefilter-examine-user": "Brukar:",
+ "abusefilter-examine-title": "Sidetittel:",
+ "abusefilter-examine-submit": "Søk",
+ "abusefilter-examine-vars": "Variablar oppretta for denne endringa",
+ "abusefilter-examine-test": "Test eit filter på denne endringa",
+ "abusefilter-examine-test-button": "Test filter",
+ "abusefilter-examine-match": "Filteret fekk utslag på endringa.",
+ "abusefilter-examine-nomatch": "Filteret fekk ikkje noko utlsag på endringa.",
+ "abusefilter-examine-syntaxerror": "Filteret har ugyldig syntaks",
+ "abusefilter-examine-notfound": "Endringa du bad om kunne ikkje verta funnen.",
+ "abusefilter-examine-incompatible": "Endringa du bad om er ikkje støtta av misbruksfiltret",
+ "abusefilter-examine-noresults": "Fann ingen resultat for søkjeparametrane du gav.",
+ "abusefilter-topnav": "'''Endringsfilternavigasjon'''",
+ "abusefilter-topnav-home": "Heim",
+ "abusefilter-topnav-test": "Gruppetesting",
+ "abusefilter-topnav-examine": "Gransk tidlegare endringar",
+ "abusefilter-topnav-log": "Endringsfilterlogg",
+ "abusefilter-topnav-tools": "Feilsøkingsverktøy",
+ "abusefilter-topnav-import": "Importer filter",
+ "abusefilter-log-name": "Logg for endringsfilter",
+ "abusefilter-log-header": "Denne loggen viser eit samandrag av endringar gjorde i filtera.\nFor utførlege detaljar, sjå [[Special:AbuseFilter/history|lista]] over dei siste filterendringane.",
+ "abusefilter-logentry-modify": "$1 {{GENDER:$2|endra}} $4 ($5)",
+ "abusefilter-log-noresults": "Ingen resultat",
+ "abusefilter-diff-title": "Skilnader mellom versjonar",
+ "abusefilter-diff-item": "Element",
+ "abusefilter-diff-version": "Versjon frå $1 {{GENDER:$3|av}} $2",
+ "abusefilter-diff-info": "Grunnleggjande informasjon",
+ "abusefilter-diff-pattern": "Filterreglar",
+ "abusefilter-diff-invalid": "Kunne ikkje henta dei etterspurde verjsonane",
+ "abusefilter-diff-backhistory": "Attende til filterhistoria",
+ "abusefilter-diff-prev": "Eldre endring",
+ "abusefilter-diff-next": "Nyare endring",
+ "abusefilter-import-intro": "Du kan nytta dette grensesnittet til å importera filter frå andre wikiar.\nPå kjeldewikien trykkjer du på «{{int:abusefilter-edit-export}}» under «{{int:abusefilter-edit-tools}}» på redigeringsgrensesnittet.\nKopier frå tekstboksen som dukkar opp og lim det inn i tekstboksen her. Trykk so på «{{int:abusefilter-import-submit}}».",
+ "abusefilter-import-submit": "Importer data",
+ "abusefilter-group-default": "Standard",
+ "tag-abusefilter-condition-limit": "vilkårsgrensa nådd",
+ "tag-abusefilter-condition-limit-description": "Endringar eller andre hendingar som ikkje kunne granskast av alle verksame [[Special:AbuseFilter|endringsfilter]] ([[mw:Extension:AbuseFilter/Conditions|hjelp]])."
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/nqo.json b/www/wiki/extensions/AbuseFilter/i18n/nqo.json
new file mode 100644
index 00000000..d85760c8
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/nqo.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Babamamadidiane"
+ ]
+ },
+ "abusefilter-log-nonexistent": "ߡߍ߲ ߟߊߘߏ߲߬ߣߍ߲߫ ߡߊ߬ߟߐ߲߬ߞߏ ߘߐ߫ ߏ߬ ߕߴߦߋ߲߬"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/nrm.json b/www/wiki/extensions/AbuseFilter/i18n/nrm.json
new file mode 100644
index 00000000..b348daca
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/nrm.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Crochet.david"
+ ]
+ },
+ "abusefilter-examine-submit": "Trachi"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/nso.json b/www/wiki/extensions/AbuseFilter/i18n/nso.json
new file mode 100644
index 00000000..6978a179
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/nso.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Mohau"
+ ]
+ },
+ "abusefilter-log-search-user": "Mošomiši:",
+ "abusefilter-log-search-title": "Thaetlele:",
+ "abusefilter-log-search-submit": "Fetleka",
+ "abusefilter-list-status": "Leemo",
+ "abusefilter-edit-lastmod-text": "$1 ke $2",
+ "abusefilter-history-timestamp": "Nako",
+ "abusefilter-history-user": "Mošumiši"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/oc.json b/www/wiki/extensions/AbuseFilter/i18n/oc.json
new file mode 100644
index 00000000..9ce88c41
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/oc.json
@@ -0,0 +1,400 @@
+{
+ "@metadata": {
+ "authors": [
+ "Cedric31",
+ "Matma Rex",
+ "Unuaiga",
+ "Guilhelma"
+ ]
+ },
+ "abusefilter-desc": "Aplica d'euristicas automaticas a las modificacions",
+ "abusefilter": "Configuracion del filtre dels abuses",
+ "abuselog": "Jornal dels abuses",
+ "abusefilter-intro": "Benvengut(uda) dins l'interfàcia de gestion dels filtres antiabuses.\nLo filtre antiabuses es un mecanisme logicial automatizat que permet d'aplicar d'euristicas predefinidas a totas las accions.\nAquesta interfàcia presenta una lista dels filtres definits, e balha la possibilitat de los modificar.",
+ "abusefilter-mustbeeditor": "Per de rasons de seguretat, sols los utilizaires amb lo dreit de modificar los filtres antiabuses pòdon utilizar aquesta interfàcia.",
+ "abusefilter-warning": "<big>'''Avertiment'''</big> : Aquesta accion es estada identificada automaticament coma nosibla.\nLas edicions que son pas constructivas seràn rapidament anulladas,\ne la repeticion de las asinadas del meteis genre provocarà lo blocatge de vòstre compte o de vòstra adreça IP.\nSe sètz convençu{{GENDER:||t|(da)}} que vòstra modificacion es constructiva, la podètz la sometre un còp de mai per la validar.\nVaquí la descripcion brèva de la règla de l’abús qu'a detectat vòstra accion : $1",
+ "abusefilter-disallowed": "Aquesta modificacion es estada automaticament idenficada coma nusibla e, per via de consequéncia, pas permesa.\nSe sètz convençu{{GENDER:||t|(da)}} que vòstra modificacion èra constructiva, contactatz un administrator, e informatz-lo de quina accion eratz a far : $1",
+ "abusefilter-blocked-display": "Aquesta accion es estada identifcada coma nusibla automaticament, e ja sètz estat(ada) empachat(ada) de l’executar.\nEn consequéncia, per protegir {{SITENAME}}, vòstre compte d'utilizaire e totas las adreças IP son estadas blocadas en escritura.\nS'aquò es degut a una error, contactatz un administrator.\nVaquí la descripcion brèva de la règla de l’abús qu'a detectat vòstra accion : $1",
+ "abusefilter-degrouped": "Aquesta accion es estada identificada coma nusibla automaticament.\nEn consequéncia, es pas estada permesa, tre alara, vòstre compte es suspectat de compromission, totes vòstres dreits son estats levats.\nSe sètz convençut(uda) qu'aquò es degut a una error, contactatz un burocrata amb una explicacion d'aquesta accion, e totes vòstres dreits poiràn èsser restablits.\nVaquí la descripcion brèva de la règla de l’abús qu'a detectat vòstra accion : $1",
+ "abusefilter-autopromote-blocked": "Aquesta accion es estada automaticament identificada coma nusibla, e es pas estada permesa.\nEn consequéncia, a títol de mesura de seguretat, qualques privilègis acordats de costuma pels comptes establits son estats revocats temporàriament de vòstre compte.\nUna descripcion brèva de la règla d’abús que vòstra accion a desenclavat es : $1",
+ "abusefilter-blocker": "Filtre dels abuses",
+ "abusefilter-blockreason": "Blocat automaticament pel filtre dels abuses. Descripcion de la règla : $1",
+ "abusefilter-degroupreason": "Dreits levats automaticament pel filtre dels abuses. Descripcion de la règla : $1",
+ "abusefilter-accountreserved": "Lo nom d'aqueste compte es reservat per l’usatge pel filtre dels abuses.",
+ "right-abusefilter-modify": "Modificar los filtres dels abuses",
+ "right-abusefilter-view": "Veire los filtres dels abuses",
+ "right-abusefilter-log": "Veire lo jornal dels abuses",
+ "right-abusefilter-log-detail": "Veire las entradas del jornal detalhat dels abuses",
+ "right-abusefilter-private": "Veire las donadas privadas dins lo jornal dels abuses",
+ "right-abusefilter-modify-restricted": "Modificar los filtres d'abús qu'an d'accions restrentas",
+ "right-abusefilter-revert": "Revocar totas las modificacions efectuadas per un filtre d'abús",
+ "right-abusefilter-view-private": "Vejatz los filtres d'abuses marcats coma privats",
+ "right-abusefilter-log-private": "Veire las entradas del jornal dels filtres antiabuses marcat coma privadas",
+ "right-abusefilter-hide-log": "Amagar d'entradas dins lo jornal dels abuses",
+ "right-abusefilter-hidden-log": "Veire las entradas amagadas del jornal dels abuses",
+ "right-abusefilter-modify-global": "Crear o modificar los filtres globals d'abuses",
+ "action-abusefilter-modify": "modificar los filtres antiabuses",
+ "action-abusefilter-view": "veire los filtres antiabuses",
+ "action-abusefilter-log": "veire lo jornal dels filtres antiabuses",
+ "action-abusefilter-log-detail": "veire las entradas detalhadas del jornal dels filtres antiabuses",
+ "action-abusefilter-private": "veire las donadas privadas dins lo jornal dels filtres antiabuses",
+ "action-abusefilter-modify-restricted": "modificar los filtres antiabuses amb d'accions restrentas",
+ "action-abusefilter-revert": "revocar totas las modificacions segon un filtre antiabuses donat",
+ "action-abusefilter-view-private": "vejatz los filtres d'abuses marcats coma privats",
+ "abusefilter-log": "Jornal del filtre dels abuses",
+ "abusefilter-log-summary": "Aqueste jornal aficha una lista de las accions detectadas pels filtres.",
+ "abusefilter-log-search": "Recercar lo jornal dels abuses",
+ "abusefilter-log-search-user": "Utilizaire :",
+ "abusefilter-log-search-filter": "IDs de filtre (separats per de barras verticalas) :",
+ "abusefilter-log-search-title": "Títol :",
+ "abusefilter-log-search-wiki": "Wiki :",
+ "abusefilter-log-search-submit": "Recercar",
+ "abusefilter-log-entry": "$1 : $2 {{GENDER:$8:a desenclavat}} un filtre anti-abuses, en {{GENDER:$8|efectuant}} l'accion « $3 » sus $4.\nAccions entrepresas : $5 ;\nDescripcion del filtre : $6",
+ "abusefilter-log-detailedentry-meta": "$1 : $2 {{GENDER:$9|a desenclavat}} lo $3, {{GENDER:$9|en efectuant}} l'accion « $4 » sus « $5 ».\nAccions entrepresas : $6 ;\nDescripcion del filtre : $7 ($8)",
+ "abusefilter-log-detailedentry-global": "filtre global $1",
+ "abusefilter-log-detailedentry-local": "filtre $1 dels abuses",
+ "abusefilter-log-detailslink": "detalhs",
+ "abusefilter-log-diff": "diff",
+ "abusefilter-log-hidelink": "ajustar la visibilitat",
+ "abusefilter-log-details-legend": "Detalhs per l'entrada $1 del jornal",
+ "abusefilter-log-details-var": "Variabla",
+ "abusefilter-log-details-val": "Valor",
+ "abusefilter-log-details-vars": "Paramètres de l’accion",
+ "abusefilter-log-details-private": "Donada privada",
+ "abusefilter-log-details-ip": "Provenéncia de l’adreça IP",
+ "abusefilter-log-noactions": "pas cap",
+ "abusefilter-log-details-diff": "Cambiaments faits dins la modificacion",
+ "abusefilter-log-linkoncontribs": "Jornal dels abuses",
+ "abusefilter-log-linkoncontribs-text": "Jornal dels abuses d'{{GENDER:$1|aqueste utilizaire|aquesta utilizaira}}",
+ "abusefilter-log-hidden": "(entrada amagada)",
+ "abusefilter-log-hidden-implicit": "(amagada perque la version es estada suprimida)",
+ "abusefilter-log-hide-legend": "Amagar l'entrada dins los jornals",
+ "abusefilter-log-hide-id": "Identificant de l'entrada de jornal :",
+ "abusefilter-log-hide-hidden": "Amagar aquesta entrada a la vista del public",
+ "abusefilter-log-hide-reason": "Motiu :",
+ "abusefilter-log-hide-reason-other": "Autra rason / rason suplementària :",
+ "abusefilter-logentry-suppress": "a amagat [[$1]]",
+ "abusefilter-logentry-unsuppress": "a desamagat [[$1]]",
+ "abusefilter-management": "Gestion del filtre dels abuses",
+ "abusefilter-list": "Totes los filtres",
+ "abusefilter-list-id": "Filtre ID",
+ "abusefilter-list-pattern": "Motiu",
+ "abusefilter-list-status": "Estatut",
+ "abusefilter-list-public": "Descripcion publica",
+ "abusefilter-list-consequences": "Consequéncias",
+ "abusefilter-list-visibility": "Visibilitat",
+ "abusefilter-list-hitcount": "Aviar lo comptador",
+ "abusefilter-list-edit": "Modificar",
+ "abusefilter-list-details": "Detalhs",
+ "abusefilter-list-limit": "Nombre per pagina :",
+ "abusefilter-list-lastmodified": "Modificat en darrièr",
+ "abusefilter-list-group": "Grop del filtre",
+ "abusefilter-hidden": "Privat",
+ "abusefilter-unhidden": "Public",
+ "abusefilter-enabled": "Activat",
+ "abusefilter-deleted": "Suprimit",
+ "abusefilter-disabled": "Desactivat",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|visita|visitas}}",
+ "abusefilter-new": "Crear un filtre novèl",
+ "abusefilter-return": "Tornar a la gestion dels filtres",
+ "abusefilter-status-global": "Global",
+ "abusefilter-list-options": "Opcions",
+ "abusefilter-list-options-deleted": "Filtres suprimits :",
+ "abusefilter-list-options-deleted-only": "Mostrar pas que los filtres suprimits",
+ "abusefilter-list-options-deleted-hide": "Amagar los filtres suprimits",
+ "abusefilter-list-options-deleted-show": "Enclure los filtres suprimits",
+ "abusefilter-list-options-scope": "Afichar los filtres :",
+ "abusefilter-list-options-scope-local": "Règlas localas unicament",
+ "abusefilter-list-options-scope-global": "Règlas globalas unicament",
+ "abusefilter-list-options-disabled": "Filtres desactivats :",
+ "abusefilter-list-options-hidedisabled": "Amagar los filtres desactivats",
+ "abusefilter-list-options-searchfield": "Recèrcar dins las règlas :",
+ "abusefilter-list-options-searchpattern": "Inseratz un motiu",
+ "abusefilter-list-options-searchoptions": "Mòde de recèrca :",
+ "abusefilter-list-options-search-like": "Demanda simpla",
+ "abusefilter-list-options-search-rlike": "Expression regulara",
+ "abusefilter-list-options-search-irlike": "Expression regulara insensibla a la caissa",
+ "abusefilter-list-regexerror": "I a agut una error pendent la recèrca. Error de sintaxi dins las expressions regularas.",
+ "abusefilter-list-options-submit": "Metre a jorn",
+ "abusefilter-tools-text": "Aquí qualques aisinas que pòdon èsser utilas dins la formulacion o lo desbugatge dels filtres d’abuses.",
+ "abusefilter-tools-expr": "Tèst d'expression",
+ "abusefilter-tools-submitexpr": "Avalorar",
+ "abusefilter-tools-reautoconfirm": "Restablís l'estatut autoconfirmat",
+ "abusefilter-tools-reautoconfirm-user": "Utilizaire :",
+ "abusefilter-tools-reautoconfirm-submit": "Autoconfirmar tornamai",
+ "abusefilter-reautoconfirm-none": "{{GENDER:$1|Aqueste utilizaire|Aquesta utilizaira}} a pas agut de suspension de l’estat autoconfirmat.",
+ "abusefilter-reautoconfirm-notallowed": "Sètz pas autorizat(ada) a restablir l'estatut d’autoconfirmat.",
+ "abusefilter-reautoconfirm-done": "L’estat autoconfirmat del compte d'utilizaire es estat restablit",
+ "abusefilter-status": "{{PLURAL:$1|De la darrièra accion|De las $1 darrièras accions}}, $2 ($3 %) an atench lo limit de la condicion definida per $4. $5 ($6 %) {{PLURAL:$5|correspondiá|correspondián}} a un d'aquestes filtres actualament en servici.",
+ "abusefilter-edit": "Modificar lo filtre d'abusses",
+ "abusefilter-edit-subtitle": "Modificacion del filtre $1",
+ "abusefilter-edit-subtitle-new": "Crear un filtre",
+ "abusefilter-edit-oldwarning": "<strong>Sètz a modificar una version anciana del filtre. Las estatisticas afichadas son per la version correnta d'aqueste. Se salvatz vòstras modificacions, van suprimir las modificacions efectuadas ulteriorament.</strong> &bull; [[Special:AbuseFilter/history/$2|Tornar a l'istoric d'aqueste filtre]]",
+ "abusefilter-edit-status-label": "Estatisticas :",
+ "abusefilter-edit-status": "{{PLURAL:$1|Dins la darrièra accion|Demest las $1 darrièras accions}}, aqueste filtre a atench $2 ($3 %).",
+ "abusefilter-edit-status-profile": "{{PLURAL:$1|Dins la darrièra accion|Demest las $1 darrièras accions}}, aqueste filtre a atench $2 ($3 %).\nEn mejana, la durada d'execucion d'aqueste filtre es de $4 ms e utiliza $5 condicion{{PLURAL:$5||s}} del limit de las condicions.",
+ "abusefilter-edit-new": "Filtre novèl",
+ "abusefilter-edit-save": "Salvar lo filtre",
+ "abusefilter-edit-id": "Filtre ID :",
+ "abusefilter-edit-switch-editor": "Cambiar d'editor",
+ "abusefilter-edit-description": "Descripcion :\n:''(Visibla publicament)''",
+ "abusefilter-edit-field-description": "descripcion",
+ "abusefilter-edit-group": "Grop del filtre :",
+ "abusefilter-edit-flags": "Drapèus :",
+ "abusefilter-edit-enabled": "Activar aqueste filtre",
+ "abusefilter-edit-deleted": "Marcar coma suprimit",
+ "abusefilter-edit-hidden": "Amagar los detalhs d'aqueste filtre a la vista publica",
+ "abusefilter-edit-global": "Filtre global",
+ "abusefilter-edit-rules": "Condicions :",
+ "abusefilter-edit-notes": "Nòtas :",
+ "abusefilter-edit-lastmod": "Filtre modificat en darrièr :",
+ "abusefilter-edit-lastmod-text": "$1 per $2",
+ "abusefilter-edit-hitcount": "Visitas del filtre :",
+ "abusefilter-edit-consequences": "Accions entrepresas se element trobat",
+ "abusefilter-edit-action-warn": "Desenclavar aquestas accions aprèp aver balhat un avertiment a l’utilizaire",
+ "abusefilter-edit-action-disallow": "Permetre pas a l’utilizaire d’efectuar l’accion en question",
+ "abusefilter-edit-action-blockautopromote": "Revocar l'estatut de compte automaticament confirmat de l’utilizaire",
+ "abusefilter-edit-action-degroup": "Levar a l’utilizaire totes los gropes privilegiats",
+ "abusefilter-edit-action-block": "Blocar l’utilizaire e/o l’adreça IP en escritura",
+ "abusefilter-edit-action-throttle": "Desenclavar las accions unicament se l’utilizaire a depassat los limits",
+ "abusefilter-edit-action-rangeblock": "Blocar la plaja /16 a partir de l’utilizaire d'origina.",
+ "abusefilter-edit-action-tag": "Balisar la modificacion per una relectura ulteriora.",
+ "abusefilter-edit-throttle-count": "Nombre d’accions d'autorizar :",
+ "abusefilter-edit-throttle-period": "Periòde de temps :",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|segonda|segondas}}",
+ "abusefilter-edit-throttle-groups": "Grop detengut per :\n:''(un per linha, separat per de virgulas)''",
+ "abusefilter-edit-warn-message": "Messatge del sistèma d'utilizar per l'avertiment :",
+ "abusefilter-edit-warn-other": "Autre messatge",
+ "abusefilter-edit-warn-other-label": "Nom de la pagina d'un autre messatge\n:''(sens lo prefix MediaWiki)''",
+ "abusefilter-edit-warn-actions": "Accions :",
+ "abusefilter-edit-warn-preview": "Previsualizar los messatges seleccionats",
+ "abusefilter-edit-warn-edit": "Crear / modificar lo messatge seleccionat",
+ "abusefilter-edit-tag-tag": "[[Special:Tags|Balisas]] d'aplicar (una per linha) :",
+ "abusefilter-edit-denied": "Podètz pas veire los detalhs d'aqueste filtre, perque es amagat a la vista del public",
+ "abusefilter-edit-main": "Paramètres del filtre",
+ "abusefilter-edit-done-subtitle": "Filtre modificat",
+ "abusefilter-edit-done": "[[Special:AbuseFilter/history/$1/diff/prev/$2|Vòstras modificacions]] al [[Special:AbuseFilter/$1|filtre $3]] son estadas enregistradas.",
+ "abusefilter-edit-badsyntax": "I a una error de sintaxi dins lo filtre qu'avètz especificat. Lo resultat del parser èra : <pre>$1</pre>",
+ "abusefilter-edit-missingfields": "Los camps seguents son necessaris e devon èstre emplenats : $1",
+ "abusefilter-edit-restricted": "Podètz pas modificar aqueste filtre perque conten una o mantuna accion restrentas. Demandatz a un utilizaire qu'a lo dreit de modificar los filtres amb d'accions restrentas de far la modificacion per vos.",
+ "abusefilter-edit-viewhistory": "Veire l’istoric d'aqueste filtre",
+ "abusefilter-edit-history": "Istoric :",
+ "abusefilter-edit-check": "Verificar la sintaxi",
+ "abusefilter-edit-badfilter": "Lo filtre qu'avètz especificat existís pas",
+ "abusefilter-edit-revert": "Revocar las accions entrepresas per aqueste filtre",
+ "abusefilter-edit-tools": "Aisinas :",
+ "abusefilter-edit-test-link": "Testar aqueste filtre contra los darrièras edicions",
+ "abusefilter-edit-export": "Exportar aqueste filtre cap a un autre wiki",
+ "abusefilter-edit-syntaxok": "Cap d'error de sintaxi pas detectada.",
+ "abusefilter-edit-syntaxerr": "Error de sintaxi detectada : $1",
+ "abusefilter-edit-bad-tags": "Una o mai d'una balisa qu'aètez especificada es pas valida.\nLas balisas devon èsser cortas e conténer pas de caractèrs especials.",
+ "abusefilter-edit-notallowed": "Sètz pas autorizat a crear o modificar de filtres antiabuses",
+ "abusefilter-edit-notallowed-global": "Sètz pas autorizat a crear o modificar los filtres globals d'abusses",
+ "abusefilter-edit-builder-select": "Seleccionar una opcion per l’apondre cap al cursor",
+ "abusefilter-edit-builder-group-op-arithmetic": "Operators aritmetics",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Adicion (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Sostraccion (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Multiplicacion (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Division (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Modulo (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Poténcia (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Operators de comparason",
+ "abusefilter-edit-builder-op-comparison-equal": "Egal a (==)",
+ "abusefilter-edit-builder-op-comparison-equal-strict": "Valor e tipe egals a (===)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Valor diferenta de (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "Inferior a (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Superior a (<)",
+ "abusefilter-edit-builder-op-comparison-lte": "Inferior o egal a (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Superior o egal a (<=)",
+ "abusefilter-edit-builder-group-op-bool": "Operators booleans",
+ "abusefilter-edit-builder-op-bool-not": "Non (!)",
+ "abusefilter-edit-builder-op-bool-and": "E (&)",
+ "abusefilter-edit-builder-op-bool-or": "O (|)",
+ "abusefilter-edit-builder-group-misc": "Divèrs",
+ "abusefilter-edit-builder-misc-in": "contengut dins la cadena de caractèrs (in)",
+ "abusefilter-edit-builder-misc-like": "Conten l’expression regulara (like)",
+ "abusefilter-edit-builder-misc-rlike": "Correspond a l'expression racionala (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "Filtre amb d'expressions racionalas, sens tenir compte de la cassa (irlike)",
+ "abusefilter-edit-builder-misc-contains": "La cadena d'esquèrra conten la cadena de dreita (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "Cadena literala (\"\")",
+ "abusefilter-edit-builder-misc-tern": "Operador ternari (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "Condicional (if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "Foncions",
+ "abusefilter-edit-builder-funcs-length": "Longor de la cadena de caractèrs (length)",
+ "abusefilter-edit-builder-funcs-lcase": "Cap als caractèrs minusculs (lcase)",
+ "abusefilter-edit-builder-funcs-ucase": "Convertir en majusculas (ucase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "Normaliza los caractèrs que pòdon enganar (ccnorm)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "Lèva los caractèrs dobles (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "Caractèrs especials / Total dels caractèrs (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "Normaliza (norm)",
+ "abusefilter-edit-builder-funcs-count": "Nombre de còps que la cadena de caractèrs X apareis dins la cadena Y (count)",
+ "abusefilter-edit-builder-funcs-rcount": "Nombre de còps que l'expression regulara X apareis dins la cadena Y (rcount)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "Suprimir los espacis (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "Suprimir los caractèrs especials (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "L'adreça IP es dins la plaja ? (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "Recercar de soscadenas multiplas dins una cadena (contains_any)",
+ "abusefilter-edit-builder-funcs-substr": "Soscadena (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "Posicion de la soscadena dins la cadena (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "Remplaçar la soscadena per una cadena (str_replace)",
+ "abusefilter-edit-builder-funcs-rescape": "Escapar la cadena coma literala dins l'expression racionala (rescape)",
+ "abusefilter-edit-builder-funcs-set_var": "Definir la variabla (set_var)",
+ "abusefilter-edit-builder-group-vars": "Variablas",
+ "abusefilter-edit-builder-vars-accountname": "Nom del compte (al moment de la creacion del compte)",
+ "abusefilter-edit-builder-vars-timestamp": "Timestamp Unix de la modificacion",
+ "abusefilter-edit-builder-vars-action": "Accion",
+ "abusefilter-edit-builder-vars-addedlines": "Linhas apondudas al moment de la modificacion",
+ "abusefilter-edit-builder-vars-delta": "Talha modificada al moment de la modificacion",
+ "abusefilter-edit-builder-vars-diff": "Diff unificat dels cambiaments faits al moment de la modificacion",
+ "abusefilter-edit-builder-vars-newsize": "Talha de la pagina novèla",
+ "abusefilter-edit-builder-vars-oldsize": "Talha de la pagina anciana",
+ "abusefilter-edit-builder-vars-removedlines": "Linhas suprimidas al moment de la modificacion",
+ "abusefilter-edit-builder-vars-summary": "Ensenhador, motiu de la modificacion",
+ "abusefilter-edit-builder-vars-article-id": "ID de la pagina",
+ "abusefilter-edit-builder-vars-article-ns": "Espaci de noms de la pagina",
+ "abusefilter-edit-builder-vars-article-text": "Títol de la pagina (sens lo nom de l’espaci)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Títol complet de la pagina",
+ "abusefilter-edit-builder-vars-article-views": "Paginas vistas",
+ "abusefilter-edit-builder-vars-movedfrom-id": "ID de la pagina d’origina del cambiament de nom",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "Nom d’espaci de nomenatge del cambiament de nom de la pagina d’origina.",
+ "abusefilter-edit-builder-vars-movedfrom-text": "Títol del desplaçament de la pagina d’origina",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "Títol entièr de la pagina d’origina",
+ "abusefilter-edit-builder-vars-movedto-id": "ID de la pagina de destinacion del cambiament de nom",
+ "abusefilter-edit-builder-vars-movedto-ns": "Nom de l’espaci de nom del cambiament de nom de la pagina de destinacion",
+ "abusefilter-edit-builder-vars-movedto-text": "Títol del cambiament de nom de la pagina de destinacion",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "Títol entièr del cambiament de nom de la pagina de destinacion",
+ "abusefilter-edit-builder-vars-user-editcount": "Comptador d’edicion de l’utilizaire",
+ "abusefilter-edit-builder-vars-user-age": "Atge del compte d'utilizaire",
+ "abusefilter-edit-builder-vars-user-name": "Nom del compte d'utilizaire",
+ "abusefilter-edit-builder-vars-user-groups": "Gropes (qu'incluisson los que son implicits) de l'utilizaire dins",
+ "abusefilter-edit-builder-vars-user-rights": "Dreits qu’a un utilizaire",
+ "abusefilter-edit-builder-vars-user-blocked": "Se l'utilizaire es blocat",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "L’ora de l'adreça del corrièr electronic es estada confirmada",
+ "abusefilter-edit-builder-vars-recent-contributors": "Dètz darrièrs contributors de l'article",
+ "abusefilter-edit-builder-vars-all-links": "Totes los ligams extèrnes dins lo tèxte novèl",
+ "abusefilter-edit-builder-vars-added-links": "Totes los ligams extèrnes aponduts dins la modificacion",
+ "abusefilter-edit-builder-vars-removed-links": "Totes los ligams extèrnes levats dins la modificacion",
+ "abusefilter-edit-builder-vars-old-text": "Ancian tèxte de la pagina, abans la modificacion",
+ "abusefilter-edit-builder-vars-new-text": "Tèxte novèl de la pagina, aprèp la modificacion",
+ "abusefilter-edit-builder-vars-new-text-stripped": "Tèxte novèl de la pagina, sens cap de balisa",
+ "abusefilter-edit-builder-vars-new-html": "Tèxte de la version novèla transformat en HTML",
+ "abusefilter-edit-builder-vars-restrictions-edit": "Nivèl de proteccion d'edicion de la pagina",
+ "abusefilter-edit-builder-vars-restrictions-move": "Nivèl de proteccion de cambiament de nom de la pagina",
+ "abusefilter-edit-builder-vars-restrictions-create": "Crear una proteccion per la pagina",
+ "abusefilter-edit-builder-vars-restrictions-upload": "Proteccion de telecargament del fichièr",
+ "abusefilter-edit-builder-vars-old-text-stripped": "Tèxte de la pagina anciana, desprovesit de tota mesa en forma",
+ "abusefilter-edit-builder-vars-old-links": "Ligams dins la pagina, abans la modificacion",
+ "abusefilter-edit-builder-vars-old-html": "Wikitèxt de la pagina anciana, parsada en HTML",
+ "abusefilter-edit-builder-vars-minor-edit": "Se la modificacion es marcada coma menora o pas",
+ "abusefilter-edit-builder-vars-file-sha1": "hachatge SHA1 del contenut del fichièr",
+ "abusefilter-filter-log": "Darrièrs cambiaments dels filtres",
+ "abusefilter-history": "Istoric de las modificacions del filtre dels abuses #$1",
+ "abusefilter-history-foruser": "Modificacions per $1",
+ "abusefilter-history-hidden": "amagat",
+ "abusefilter-history-enabled": "activat",
+ "abusefilter-history-global": "Global",
+ "abusefilter-history-timestamp": "Ora",
+ "abusefilter-history-user": "Utilizaire",
+ "abusefilter-history-public": "Descripcion publica del filtre",
+ "abusefilter-history-flags": "Drapèus",
+ "abusefilter-history-filter": "Règla del filtre",
+ "abusefilter-history-comments": "Comentaris",
+ "abusefilter-history-actions": "Accions",
+ "abusefilter-history-backedit": "Retorn a l’edicion del filtre",
+ "abusefilter-history-deleted": "Suprimit",
+ "abusefilter-history-filterid": "Filtre",
+ "abusefilter-history-select-legend": "Afinar la recèrca",
+ "abusefilter-history-select-user": "Utilizaire :",
+ "abusefilter-history-select-submit": "Afinar",
+ "abusefilter-history-diff": "Modificacions",
+ "abusefilter-history-error-hidden": "Lo filtre qu'avètz demandat es amagat, e podètz pas afichar son istoric.",
+ "abusefilter-exception-unexpectedatend": "« $2 » pas esperat al caractèr $1.",
+ "abusefilter-exception-expectednotfound": "Un $2 es mancant èra esperat al caractèr $1 ($3 $4 trobat a la plaça).",
+ "abusefilter-exception-unrecognisedkeyword": "Mot clau $2 al caractèr $1 pas reconegut.",
+ "abusefilter-exception-unexpectedtoken": "Geton « $3 » pas esperat (del tipe $2) al caractèr $1.",
+ "abusefilter-exception-unclosedstring": "Cadena pas tampada debutant al caractèr $1.",
+ "abusefilter-exception-invalidoperator": "Operador « $2 » invalid al caractèr $1.",
+ "abusefilter-exception-unrecognisedtoken": "Geton « $2 » pas reconegut al caractèr $1.",
+ "abusefilter-exception-noparams": "Cap de paramètre pas balhat a la foncion « $2 » al caractèr $1.",
+ "abusefilter-exception-dividebyzero": "Ensag ilegal de devesir $2 per zèro al caractèr $1.",
+ "abusefilter-exception-unrecognisedvar": "Variabla pas reconeguda $2 al caractèr $1",
+ "abusefilter-exception-notenoughargs": "Pas pro de paramètres per la foncion $2 apelada al caractèr $1.\n$3 {{PLURAL:$3|argument demandat|arguments demandats}}, $4 {{PLURAL:$4|obtengut|obtenguts}}",
+ "abusefilter-exception-regexfailure": "Error dins l’expression regulara « $3 » al caractèr $1 : « $2 »",
+ "abusefilter-exception-overridebuiltin": "Espotiment interdich de la variabla disponibla per defaut « $2 » al caractèr $1.",
+ "abusefilter-exception-outofbounds": "Demanda de l'element inexistent $2 (talha de la lista = $3) al caractèr $1.",
+ "abusefilter-exception-notlist": "Demanda d'un element dins quicòm mai qu'un tablèu al caractèr $1.",
+ "abusefilter-action-tag": "Balisar",
+ "abusefilter-action-throttle": "Regulacion",
+ "abusefilter-action-warn": "Avertiment",
+ "abusefilter-action-blockautopromote": "Blocar la promocion automatica",
+ "abusefilter-action-block": "Blocar",
+ "abusefilter-action-degroup": "Levar los gropes",
+ "abusefilter-action-rangeblock": "Blocar la plaja",
+ "abusefilter-action-disallow": "Interdire",
+ "abusefilter-revert-title": "Revocar totas las modificacions pel filtre $1",
+ "abusefilter-revert-intro": "Aqueste formulari vos permet de revocar totas las modificacions faitas pel filtre d'abuses $1. Mercé de far atencion en utilizant aquesta aisina.",
+ "abusefilter-revert-preview-item": "$1 : $2 {{GENDER:$7|a fait}} lo $3 a $4.\nAccions de revocar : $5 ($6)",
+ "abusefilter-revert-search-legend": "Seleccionar las accions del filtre d'abuses de revocar",
+ "abusefilter-revert-periodstart": "Començament del periòde :",
+ "abusefilter-revert-periodend": "Fin del periòde :",
+ "abusefilter-revert-search": "Seleccionar las accions",
+ "abusefilter-revert-filter": "Filtre ID:",
+ "abusefilter-revert-preview-intro": "Aquí las accions realizadas pel filtre antiabusses, que seràn revocadas per aquesta accion.\nVerificatz-las menimosament, puèi clicatz sus « {{int:abusefilter-revert-confirm}} » per validar vòstra seleccion.",
+ "abusefilter-revert-confirm-legend": "Confirmar lo retorn",
+ "abusefilter-revert-confirm": "Confirmar",
+ "abusefilter-revert-success": "Avètz revocat amb succès totas las accions entrepresas pel filtre d'abuses degut al [[Special:AbuseFilter/$1|filtre $2]]",
+ "abusefilter-revert-reason": "Revocacion automatica de totas las accions entrepresas pel filtre $1.\nRason balhada : $2",
+ "abusefilter-revert-reasonfield": "Motiu :",
+ "abusefilter-test": "Testar un filtre amb las modificacions precedentas",
+ "abusefilter-test-intro": "Aquesta pagina vos permet d'aplicar un filtre entrat dins la zòna de tèxte çaijós {{PLURAL:$1|a la darrièra modificacion|a las $1 darrièras modificacions}}.\nPer cargar un filtre existent, picatz son identificant dins la bóstia en dejós de la zòna de tèxte e quichatz sul boton « {{int:abusefilter-test-load}} ».",
+ "abusefilter-test-legend": "Tèst de filtre",
+ "abusefilter-test-load-filter": "Cambiar lo filtre amb l'ID :",
+ "abusefilter-test-submit": "Testar",
+ "abusefilter-test-load": "Cargar",
+ "abusefilter-test-user": "Cambiaments de l'utilizaire :",
+ "abusefilter-test-period-start": "Cambiaments faits aprèp :",
+ "abusefilter-test-period-end": "Cambiaments faits abans :",
+ "abusefilter-test-page": "Modificacions aportadas a la pagina :",
+ "abusefilter-test-shownegative": "Afichar los cambiaments que correspòndon pas al filtre",
+ "abusefilter-test-syntaxerr": "Lo filtre qu'avètz picat conten una error de sintaxi.\nPodètz recebre una explicacion completa en clicant sul boton « {{int:abusefilter-edit-check}} ».",
+ "abusefilter-changeslist-examine": "examinar",
+ "abusefilter-examine": "Examinar de modificacions individualament",
+ "abusefilter-examine-intro": "Aquesta pagina vos permet d'examinar las variablas generidas pel filtre dels abuses per de modificacions individualas e las testar amb los filtres.",
+ "abusefilter-examine-legend": "Seleccionar las modificacions",
+ "abusefilter-examine-diff": "URL del diff :",
+ "abusefilter-examine-user": "Utilizaire :",
+ "abusefilter-examine-title": "Títol de la pagina :",
+ "abusefilter-examine-submit": "Recercar",
+ "abusefilter-examine-vars": "Variablas generidas per aquesta modificacion",
+ "abusefilter-examine-test": "Testar aquesta modificacion amb un filtre",
+ "abusefilter-examine-test-button": "Testar lo filtre",
+ "abusefilter-examine-match": "La modificacion a desenclavat lo filtre.",
+ "abusefilter-examine-nomatch": "La modificacion a pas desenclavat lo filtre.",
+ "abusefilter-examine-syntaxerror": "Lo filtre a una sintaxi invalida",
+ "abusefilter-examine-notfound": "La modificacion qu'avètz demandada es pas estada trobada.",
+ "abusefilter-examine-incompatible": "La modificacion qu'avètz demandada es pas compatibla amb lo filtre dels abuses.",
+ "abusefilter-examine-noresults": "Cap de resultat es pas estat trobat pels paramètres de recèrca qu'avètz provesit.",
+ "abusefilter-topnav": "'''Navigacion del filtre antiabuses'''",
+ "abusefilter-topnav-home": "Acuèlh",
+ "abusefilter-topnav-test": "Tèst en seria",
+ "abusefilter-topnav-examine": "Examinar las modificacions precedentas",
+ "abusefilter-topnav-log": "Jornal antiabuses",
+ "abusefilter-topnav-tools": "Aisinas de debogatge",
+ "abusefilter-topnav-import": "Importar un filtre",
+ "abusefilter-log-name": "Jornal del filtre antiabuses",
+ "abusefilter-log-header": "Aqueste jornal aficha un somari de las modificacions faitas als filtres.\nPer mai de detalhs, vejatz [[Special:AbuseFilter/history|la lista]] dels darrièrs cambiaments del filtre.",
+ "abusefilter-log-noresults": "Pas cap de resultat",
+ "abusefilter-diff-title": "Diferéncias entre las versions",
+ "abusefilter-diff-item": "Article",
+ "abusefilter-diff-version": "Version del $1 {{GENDER:$3|per}} $2",
+ "abusefilter-diff-info": "Informacions basicas",
+ "abusefilter-diff-pattern": "Condicions del filtre",
+ "abusefilter-diff-invalid": "Impossible de tornar trobar las versions demandadas",
+ "abusefilter-diff-backhistory": "Retorn a l'istoric del filtre",
+ "abusefilter-diff-prev": "Cambiament anterior",
+ "abusefilter-diff-next": "Cambiament ulterior",
+ "abusefilter-import-intro": "Podètz utilizar aquesta interfàcia per importar de filtres en provenéncia d’autres wikis.\nSul wiki d’origina, clicatz sus « {{int:abusefilter-edit-export}} » dins « {{int:abusefilter-edit-tools}} » dempuèi l’interfàcia d’edicion.\nCopiatz l'airal de tèxte que s’aficha e empegatz-lo dins aqueste airal de tèxte, puèi clicatz sus « {{int:abusefilter-import-submit}} »,",
+ "abusefilter-import-submit": "Importar de donadas",
+ "abusefilter-group-default": "Per defaut",
+ "abusefilter-http-error": "Una error HTTP s’es produsida : $1.",
+ "apihelp-query+abusefilters-param-prop": "Quinas proprietats obténer."
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/or.json b/www/wiki/extensions/AbuseFilter/i18n/or.json
new file mode 100644
index 00000000..319935fc
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/or.json
@@ -0,0 +1,343 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ansumang",
+ "Jnanaranjan Sahu",
+ "Jose77",
+ "Odisha1",
+ "Psubhashish",
+ "Shisir 1945",
+ "ଆଶୁତୋଷ କର",
+ "MKar"
+ ]
+ },
+ "abusefilter-desc": "ଆପେଆପେ ଅଧିକତର ସମ୍ଭାବନା ସମ୍ପାଦନାରେ ଯୋଡ଼ିଥାଏ",
+ "abusefilter": "ଅପବ୍ୟବ‌ହାର ଛଣା ସଜାଣି",
+ "abuselog": "ଅପବ୍ୟବ‌ହାର ଇତିହାସ",
+ "abusefilter-intro": "ଅପବ୍ୟବହାର ଛଣା ପରିଚାଳନା ଇଣ୍ଟରଫେସକୁ ପାଛୋଟା ।\nଅପବ୍ୟବହାର ଛଣା ଏକ ଆପେଆପେ ହେଉଥିବା ସଫ୍ଟୱାର ପ୍ରକ୍ରିୟା ଯାହା ଆପେଆପେ ଏକ ସାଧାରଣ ଜ୍ଞାନକୁ ନେଇ କାମ ସବୁ କରିଥାଏ ।\nଏହି ଇଣ୍ଟରଫେସ ବଛା କେତେକ ଛଣା ଦେଖାଉଛି, ଏହା ସେସବୁକୁ ବଦଳାଇବା ପାଇଁ ଅନୁମତି ଦେଇଥାଏ ।",
+ "abusefilter-mustbeeditor": "ପ୍ରତିରକ୍ଷା କାରଣରୁ, ବାକି ଅପବ୍ୟବହାର ଛଣା ଅଧିକାର ମିଳିଥିବା ବ୍ୟବହାରକାରୀଗଣ କେବଳ ଏହି ଇଣ୍ଟରଫେସ ବ୍ୟବହାର କରିପାରିବେ ।",
+ "abusefilter-warning": "'''ଚେତାବନୀ''': ଏହି କାମଟି ବିପଦଜନକ ବୋଲି ଚିହ୍ନିତ ହୋଇଛି ।\nଅଣ-ଗଠନମୂଳକ ସମ୍ପାଦନାସବୁ ସଙ୍ଗେ ସଙ୍ଗେ ପଛକୁ ଫେରାଇଦିଅଯିବ,\nଏବଂ ଭୁଲ, ଅଯଥା ତ‌ଥ୍ୟ ଥିବା ଓ ବାରମ୍ବାର ଅଣ-ଗଠନମୂଳକ ସମ୍ପାଦନା କରାଯାଉଥିଲେ ଆପଣଙ୍କ IP ଠିକଣାଟି ଅଟକାଇଦିଆଯିବ ।\nଯଦି ଆପଣ ଏହି ସମ୍ପାଦନାଟି ଗଠନମୂଳକ ବୋଲି ଭାବୁଛନ୍ତି ତେବେ \"ପଠାନ୍ତୁ\" ଉପରେ କ୍ଲିକ କରି ଥୟ କରନ୍ତୁ ।\nଏହି ଅପବ୍ୟବ‌ହାରର ନୀତିବଳି ଥିବା ଏକ ସଂକ୍ଷିପ୍ତ ବିବରଣୀ ଯାହା ଆପଣଙ୍କ କାମ ସଙ୍ଗେ ମିଳୁଛି: $1",
+ "abusefilter-blocker": "ଅପବ୍ୟବହାର ଛଣା",
+ "abusefilter-blockreason": "ଅପବ୍ୟବହାର ଛଣା ଦେଇ ଆପେଆପେ ଅଟକାଗଲା ।\nମେଳୁଥିବା ନୀତିର ବିବରଣୀ: $1",
+ "abusefilter-degroupreason": "ଅପବ୍ୟବହାର ଛଣା ଦେଇ ଅଧିକାରସବୁ ଆପେଆପେ ଅଟକାଗଲା ।\nନୀତିର ବିବରଣୀ: $1",
+ "abusefilter-accountreserved": "ଅପବ୍ୟବହାରରୁ ଛାଣିବା ନିମନ୍ତେ ଏହି ଖାତା ନାମଟି ସାଇତାଯାଇଛି ।",
+ "right-abusefilter-modify": "ଅପବ୍ୟବହାର ଛଣାକୁ ସୁଧାରିବେ",
+ "right-abusefilter-view": "ଅପବ୍ୟବହାର ଛଣା ଦେଖାଇବେ",
+ "right-abusefilter-log": "ଅପବ୍ୟବହାର ଇତିହାସ ଦେଖିବା",
+ "right-abusefilter-log-detail": "ଇତିହାସ ନିବେଶର ସବିଶେଷ ଦେଖିବେ",
+ "right-abusefilter-private": "ବ୍ୟକ୍ତିଗତ ତଥ୍ୟ ଏକ ଅପବ୍ୟବହାର ଇତିହାସ ପୃଷ୍ଠାରେ ଦେଖିବେ",
+ "right-abusefilter-modify-restricted": "ଅପବ୍ୟବହାର ଛଣାକୁ କିଳାଯାଇଥିବା କାମ ସହ ବଦଳାନ୍ତୁ",
+ "right-abusefilter-revert": "ଦିଆଯାଇଥିବା ଅପବ୍ୟବହାର ଛଣାରେ ହୋଇଥିବା ବଦଳସବୁକୁ ପଛକୁ ଫେରାଇଦିଅନ୍ତୁ",
+ "right-abusefilter-view-private": "ବ୍ୟକ୍ତିଗତ ଭବରେ ଚିହ୍ନିତ ଅପବ୍ୟବହାର ଛଣାସବୁ ଦେଖନ୍ତୁ",
+ "right-abusefilter-hide-log": "ଅପବ୍ୟବହାର ଇତିହାସରେ ନୂଆ ନିବେଶସବୁ ଲୁଚାଇଦିଅନ୍ତୁ",
+ "right-abusefilter-hidden-log": "ଅପବ୍ୟବହାର ଇତିହାସ ନିବେଶ ଲୁଚାଇବେ",
+ "action-abusefilter-modify": "ଅପବ୍ୟବହାର ଛଣାକୁ ସୁଧାରିବେ",
+ "action-abusefilter-view": "ଅପବ୍ୟବହାର ଛଣା ଦେଖାଇବେ",
+ "action-abusefilter-log": "ଅପବ୍ୟବହାର ଲଗ ଦେଖିବା",
+ "action-abusefilter-log-detail": "ଅପବ୍ୟବହାର ଇତିହାସର ସବିଶେଷ ଦେଖିବେ",
+ "action-abusefilter-private": "ବ୍ୟକ୍ତିଗତ ତଥ୍ୟ ଏକ ଅପବ୍ୟବହାର ଇତିହାସ ପୃଷ୍ଠାରେ ଦେଖିବେ",
+ "action-abusefilter-modify-restricted": "ଅପବ୍ୟବହାର ଛଣାକୁ କିଳାଯାଇଥିବା କାମ ସହ ବଦଳାଇବେ",
+ "action-abusefilter-revert": "ଏକ ନିର୍ଦିଷ୍ଟ ଅପବ୍ୟବହାର ଛଣାର ବଦଳସବୁ ଲେଉଟାଇ ଦିଆଗଲା",
+ "action-abusefilter-view-private": "ବ୍ୟକ୍ତିଗତ ଭବରେ ଚିହ୍ନିତ ଅପବ୍ୟବହାର ଛଣାସବୁ ଦେଖନ୍ତୁ",
+ "abusefilter-log": "ଅପବ୍ୟବହାର ଛଣା",
+ "abusefilter-log-summary": "ଏହି ଇତିହାସ ଅପବ୍ୟବହାର ଛଣା ଦେଇ ହୋଇଥିବା ସବୁ କାମର ଇତିହାସ ଦେଖାଇଥାଏ ।",
+ "abusefilter-log-search": "ଅପବ୍ୟବହାର ଇତିହାସ ଖୋଜିବେ",
+ "abusefilter-log-search-user": "ବ୍ୟବହାରକାରୀ",
+ "abusefilter-log-search-filter": "ଫିଲଟର IDs (ପାଇପ ଦେଇ ଅଲଗା କରନ୍ତୁ):",
+ "abusefilter-log-search-title": "ଶିରୋନାମା:",
+ "abusefilter-log-search-wiki": "ଉଇକି:",
+ "abusefilter-log-search-submit": "ଖୋଜନ୍ତୁ",
+ "abusefilter-log-entry": "$1: $2 ଅପବ୍ୟବହାର ଛଣା ଭାବରେ ଚିହ୍ନିତ ହେଲା, $4ରେ \"$3\" କାମଟି କରୁଛୁ ।\nକରାଯାଇଥିବା କାମ: $5;\nଛଣାବିବରଣୀ: $6",
+ "abusefilter-log-detailedentry-meta": "$1: $2, $3କୁ \"$4\" କାମଟି $5ରେ କରିବାକୁ ବଳାଇଲା ।\nକରାଯାଇଥିବା କାମ: $6;\nଛଣା ବିବରଣୀ: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "ସାର୍ବଜନୀନ ଛଣା $1",
+ "abusefilter-log-detailedentry-local": "ଛଣା $1",
+ "abusefilter-log-detailslink": "ଆହୁରି ଅଧିକ",
+ "abusefilter-log-diff": "ତଫାତ",
+ "abusefilter-log-hidelink": "ଦେଖିବାକୁ ବଦଳାଇବା",
+ "abusefilter-log-details-legend": "$1 ପାଇଁ ଲଗ ପ୍ରବେଶ",
+ "abusefilter-log-details-var": "ବଦଳୁଥିବା",
+ "abusefilter-log-details-val": "ମୂଲ୍ୟ",
+ "abusefilter-log-details-vars": "କାମର ସଙ୍ଗଠକ",
+ "abusefilter-log-details-private": "ଗୋପନ ଡାଟା",
+ "abusefilter-log-details-ip": "ଆଇ.ପି. ଠିକଣା ତିଆରି କରୁଛି",
+ "abusefilter-log-noactions": "କିଛି ନାହିଁ",
+ "abusefilter-log-details-diff": "ସମ୍ପାଦନାରେ କରିଥିବା ବଦଳ",
+ "abusefilter-log-linkoncontribs": "ଅପବ୍ୟବ‌ହାର ଲଗ",
+ "abusefilter-log-linkoncontribs-text": "ଏହି ବ୍ୟବହାରକାରୀଙ୍କ ପାଇଁ ଖରାପ ଲଗ",
+ "abusefilter-log-hidden": "(ଲୁଚାଯାଇଥିବା ପ୍ରବେଶ)",
+ "abusefilter-log-details-hidden": "ଆପଣ ଏହି ଏଣ୍ଟ୍ରି ଉପରେ ବିଶେଷ କିଛି ଜାଣିପାରିବେ ନାହିଁ କାରଣ ଏହା ସାଧାରଣ ନଜର ଆଢୁଆଳରେ ରଖାଯାଇଛି ।",
+ "abusefilter-log-hide-legend": "ଲଗ ଏଣ୍ଟ୍ରି ଲୁଚାଇବା",
+ "abusefilter-log-hide-id": "ଲଗ ଏଣ୍ଟ୍ରି ଆଇ.ଡ଼ି:",
+ "abusefilter-log-hide-hidden": "ସମସ୍ତଙ୍କ ଦେଖିବାରୁ ଏହାକୁ ଅଟକାଇବା",
+ "abusefilter-log-hide-reason": "କାରଣ",
+ "abusefilter-log-hide-forbidden": "ଲଗ ପ୍ରବେଶସବୁକୁ ଲୁଚାଇବା ପାଇଁ ଏପଣଙ୍କୁ ଅନୁମତି ଦିଆଯାଇନାହିଁ ।",
+ "abusefilter-logentry-suppress": "\"[[$1]]\" ଲୁଚାଇଦିଆଗଲା",
+ "abusefilter-logentry-unsuppress": "ଲୁଚିଥିବା \"[[$1]]\"କୁ ଦେଖାଇଦିଆଗଲା",
+ "abusefilter-management": "ଗାଳି ଗୁଲଜ ରୋକିବା ବ୍ୟବସ୍ଥା",
+ "abusefilter-list": "ସବୁ ଛଣା",
+ "abusefilter-list-id": "IDଟିକୁ ଛାଣିବା",
+ "abusefilter-list-status": "ସ୍ଥିତି",
+ "abusefilter-list-public": "ସାର୍ବଜନୀନ ବଖାଣ",
+ "abusefilter-list-consequences": "ପରିଣାମସବୁ",
+ "abusefilter-list-visibility": "ଦେଖଣା",
+ "abusefilter-list-hitcount": "ଦେଖଣା ଗଣନା",
+ "abusefilter-list-edit": "ସମ୍ପାଦନା",
+ "abusefilter-list-details": "ଆହୁରି ଅଧିକ",
+ "abusefilter-list-limit": "ପୃଷ୍ଠା ପ୍ରତି ସଂଖ୍ୟା:",
+ "abusefilter-list-lastmodified": "‍ଶେଷଥର ବଦଳାଯାଇଥିଲା",
+ "abusefilter-list-group": "ଦଳ ବାଛନ୍ତୁ",
+ "abusefilter-hidden": "ଖାଲି ନିଜର",
+ "abusefilter-unhidden": "ସଭିଙ୍କ ପାଇଁ",
+ "abusefilter-enabled": "ସଚଳ କରାଗଲା",
+ "abusefilter-deleted": "ଲିଭିଗଲା",
+ "abusefilter-disabled": "ଅଚଳ କରିଦିଆଯାଇଛି",
+ "abusefilter-hitcount": "$1 ଟି {{PLURAL:$1|ହିଟ|ହିଟ}}",
+ "abusefilter-new": "ଗୋଟିଏ ନୁଅ ଛଣା ତିଅରି କରିବେ",
+ "abusefilter-return": "ଛଣା ପରିଚାଳନାକୁ ଫେରିଯିବେ",
+ "abusefilter-status-global": "ଜଗତ",
+ "abusefilter-list-options": "ପସନ୍ଦ",
+ "abusefilter-list-options-deleted": "ଲିଭାଯାଇଥିବା ଛଣାଗୁଡ଼ିକ :",
+ "abusefilter-list-options-deleted-only": "କେବଳ ଲିଭାଯାଇଥିବା ଛଣାଗୁଡିକ ଦେଖାନ୍ତୁ",
+ "abusefilter-list-options-deleted-hide": "ଲିଭାଯାଇଥିବା ଛଣାଗୁଡିକୁ ଲୁଚାନ୍ତୁ",
+ "abusefilter-list-options-deleted-show": "ଲିଭାଯାଇଥିବା ଛଣାଗୁଡ଼ିକୁ ଏହା ସହ ଯୋଗ କରିବେ",
+ "abusefilter-list-options-scope-local": "ସ୍ଥାନୀୟ ଉଇକି",
+ "abusefilter-list-options-scope-global": "ସାର୍ବଜନୀନ ନିୟମ ସବୁ",
+ "abusefilter-list-options-disabled": "ଅଚଳକରାଯାଇଥିବା ଛଣା:",
+ "abusefilter-list-options-hidedisabled": "ବନ୍ଦ କରାଯାଇଥିବା ଛଣାଗୁଡିକୁ ଲୁଚାଇବେ",
+ "abusefilter-list-options-submit": "ଅପଡେଟ କରିବେ",
+ "abusefilter-tools-text": "ଏଠାରେ ଜିଛି ଉପକରଣ ରଖାଯାଇଛି ଯାହା ଅପବ୍ୟବହାର ରୋକିବା ଓ ନିୟମ ତିଆରିରେ ସହଯୋଗ କରିବ ।",
+ "abusefilter-tools-expr": "ପ୍ରକାଶ ପରଖ ଉପକରଣ",
+ "abusefilter-tools-submitexpr": "ମୂଲ୍ୟାୟନ କରିବେ",
+ "abusefilter-tools-reautoconfirm": "ଆପେଆପେ ଥୟ କରା ସ୍ଥିତିକୁ ଫେରେଇନେବା",
+ "abusefilter-tools-reautoconfirm-user": "ବ୍ୟବହାରକାରୀ",
+ "abusefilter-tools-reautoconfirm-submit": "ଆଉଥରେ-ଆପେଆପେ ଥୟ କରିବେ",
+ "abusefilter-reautoconfirm-none": "ଏହି ବ୍ୟବହାରକାରୀ {{GENDER:$1|ତାଙ୍କର|ସେମାନଙ୍କର}} ଆପେଆପେ ଥୟ କରାହେବା ସ୍ଥିତିକୁ ଅଟକାଇଛନ୍ତି ।",
+ "abusefilter-reautoconfirm-notallowed": "ଆପଣଙ୍କୁ ଆପେ ଆପେ ଥୟ କରିବା ସ୍ଥିତିକୁ ଆଉଥରେ ଫେରାଇବାକୁ ଅନୁମତି ମିଳିନାହିଁ ।",
+ "abusefilter-reautoconfirm-done": "ଖାତାର ଆପେଆପେ ସ୍ଥିତିକୁ ପଛକୁ ଫେରାଇଦିଆଗଲା",
+ "abusefilter-edit-subtitle": "$1 ଛଣାଟିକୁ ସମ୍ପାଦନା କରାଗଲା",
+ "abusefilter-edit-status-label": "ଆକଳନ:",
+ "abusefilter-edit-new": "ନୂଆ ଛଣା",
+ "abusefilter-edit-save": "ଛଣା ସାଇତିବା",
+ "abusefilter-edit-id": "IDଟିକୁ ଛାଣିବା",
+ "abusefilter-edit-description": "ବିବରଣୀ:\n:''(ସର୍ବସାଧାରଣ ଦେଖାହୋଇପାରିବା)''",
+ "abusefilter-edit-flags": "ବିଶେଷ ସୂଚକ:",
+ "abusefilter-edit-enabled": "ଏହି ଛଣାଟିକୁ ସଚଳ କରାଇବେ",
+ "abusefilter-edit-deleted": "ଲିଭାଯାଇଛି ବୋଲି ଚିହ୍ନିତ କରିବେ",
+ "abusefilter-edit-hidden": "ଏହି ଛଣାର ସବିଶେଷ ସଧାରଣରେ ଦେଖାଇବାରୁ ରୋକନ୍ତୁ",
+ "abusefilter-edit-rules": "ସର୍ତାବଳୀ:",
+ "abusefilter-edit-notes": "ଟୀକା:\n:''(ବ୍ୟକ୍ତିଗତ)''",
+ "abusefilter-edit-lastmod": "ଶେଷଥର ବଦଳାଯାଇଥିବା ଛଣା:",
+ "abusefilter-edit-lastmod-text": "$2ଙ୍କ ଦେଇ $1",
+ "abusefilter-edit-hitcount": "ଛଣାଗୁଡିକର ଦେଖାଯାଇଥିବା ସଂଖ୍ୟା:",
+ "abusefilter-edit-consequences": "ମେଲାଯିବା ବେଳେ କରାଯାଇଥିବା କାମମାନ",
+ "abusefilter-edit-action-warn": "ସେହି ବ୍ୟବହାରକାରୀଙ୍କୁ ଚେତାବନୀ ଦେବାପରେ ଏହି କାମ କରିବେ",
+ "abusefilter-edit-action-disallow": "ପ୍ରଶ୍ନରେ ଏହି ବ୍ୟବହାରକାରୀଙ୍କୁ ଏହି କାମ କରିବାରୁ ରୋକିବେ",
+ "abusefilter-edit-action-blockautopromote": "ବ୍ୟବହାରକାରୀଙ୍କର ଆପେଆପେ ଥୟହୋଇଥିବା ସ୍ଥିତିକୁ ବଦଳାଇଦେବେ",
+ "abusefilter-edit-action-degroup": "ଏହି ବ୍ୟବହାରକାରୀଙ୍କୁ ଅଧିକ ସ୍ସୁବିଧାସୁଯୋଗ ଥିବା ଦଳରୁ ବାହାର କରିଦେବେ",
+ "abusefilter-edit-action-block": "ବ୍ୟବହାରକାରୀଙ୍କୁ ବାସନ୍ଦ କରିବେ ଓ/ବା IP ଠିକଣାକୁ ଅଟକାଇବେ",
+ "abusefilter-edit-action-throttle": "କେବଳ ବ୍ୟବହାରକାରୀ ଏକ ମୂଲ୍ୟ ବାହରକୁ ଚାଲିଗଲେ କାମଟି କରିବେ",
+ "abusefilter-edit-action-rangeblock": "ବ୍ୟବହାରକାରୀ ଆରମ୍ଭ କରିଥିବା /16 କୁ ଅଟକାଇଦେବେ",
+ "abusefilter-edit-action-tag": "ଆଗକୁ ହେବାକୁ ଥିବା ସମୀକ୍ଷା ପାଇଁ ଏହି ସମ୍ପାଦନାକୁ ଚିହ୍ନିତ କରାଗଲା",
+ "abusefilter-edit-throttle-count": "ଅନୁମୋଦିତ କାମ ସଂଖ୍ୟା:",
+ "abusefilter-edit-throttle-period": "କାର୍ଯ୍ୟକାଳ:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|ସେକେଣ୍ଡ|ସେକେଣ୍ଡ}}",
+ "abusefilter-edit-throttle-groups": "ଦଳ ଗୋଳିଆଘାଣ୍ଟିଆର କାରଣ:\n:''(ଧାଡ଼ି ପ୍ରତି ଗୋଟିଏ, କମା ଦେଇ ଅଲଗା କରାଯାଇଛି)''",
+ "abusefilter-edit-warn-message": "ଚେତାବନୀ ପାଇଁ ବ୍ୟବହାର ହେବାକୁ ଥିବା ସିଷ୍ଟମ ମେସେଜ:",
+ "abusefilter-edit-warn-other": "ଭିନ୍ନ ମେସେଜ",
+ "abusefilter-edit-warn-other-label": "ବାକି ସନ୍ଦେଶର ପୃଷ୍ଠା ନାମ:\n:''(ମିଡ଼ିଆଉଇକି ଉପସର୍ଗ ବିନା)''",
+ "abusefilter-edit-warn-actions": "କାମସବୁ:",
+ "abusefilter-edit-warn-preview": "ବଛାଯାଇଥିବା ସନ୍ଦେଶସବୁର ଦେଖଣା",
+ "abusefilter-edit-warn-edit": "ବଛାଯାଇଥିବା ସନ୍ଦେଶ ତିଆରି/ସମ୍ପାଦନା କରିବେ",
+ "abusefilter-edit-tag-tag": "ଦେବାପାଇଁ ଚିହ୍ନ (ଧାଡ଼ି ପ୍ରତି ଗୋଟିଏ):",
+ "abusefilter-edit-denied": "ଆପଣ ଏହି ଏଣ୍ଟ୍ରି ଉପରେ ବିଶେଷ କିଛି ଜାଣିପାରିବେ ନାହିଁ କାରଣ ଏହା ସାଧାରଣ ନଜର ଆଢୁଆଳରେ ରଖାଯାଇଛି ।",
+ "abusefilter-edit-main": "ଛଣା ନିୟାମକସମୂହ",
+ "abusefilter-edit-done-subtitle": "ଛଣାଟିକୁ ବଦଳାଗଲା",
+ "abusefilter-edit-done": "ଆପଣ $1 ଛଣାରେ ଆପଣଙ୍କ ବଦଳଗୁଡିକୁ ସଫଳଭାବେ ସାଇତିଛନ୍ତି ।",
+ "abusefilter-edit-badsyntax": "ଆପଣ ଦେଇଥିବା ଛଣାରେ ଏକ ସିଣ୍ଟାକ୍ସ ଭୁଲ ରହିଛି ।\nପାର୍ସରରେ ଥିବା ଫଳାଫଳ: <pre>$1</pre>",
+ "abusefilter-edit-viewhistory": "ଏହି ଛଣାର ଇତିହାସ ଦେଖିବେ",
+ "abusefilter-edit-history": "ଇତିହାସ:",
+ "abusefilter-edit-check": "ସିଣ୍ଟାକ୍ସ ପରଖିବେ",
+ "abusefilter-edit-badfilter": "ଆପଣ ଦର୍ଶାଇଥିବ ଛଣାଟି ଉପଲବ୍ଧ୍ ନାହି",
+ "abusefilter-edit-revert": "ଏହି ଛଣା ଦେଇ ନିଆଯାଇଥିବା କାମସବୁକୁ ଲେଉଟାଇ ଦିଅନ୍ତୁ",
+ "abusefilter-edit-tools": "ଉପକରଣ:",
+ "abusefilter-edit-test-link": "ନଗଦ ବଦଳ ସବୁରେ ଏହି ଛଣାଟିକୁ ପରଖନ୍ତୁ",
+ "abusefilter-edit-export": "ଏହି ଚଣାଟିକୁ ଏହି ଉଇକିରୁ ଆଉ ଏକ ଉଇକିକୁ ଘୁଞ୍ଚାଇଦିଅନ୍ତୁ",
+ "abusefilter-edit-syntaxok": "କିଛି ବି ସିଣ୍ଟାକ୍ସ ମିଳିଲା ନାହିଁ ।",
+ "abusefilter-edit-syntaxerr": "ସିଣ୍ଟାକ୍ସରେ ଭୁଲ ଥିବା ଦେଖିବାକୁ ମିଳିଲା: $1",
+ "abusefilter-edit-notallowed": "ଆପଣଙ୍କୁ ଅପବ୍ୟବହାର ଛଣା ତିଆରି/ସମ୍ପାଦନା କରିବାରୁ ବାରଣ କରାଯାଇଛି ।",
+ "abusefilter-edit-builder-select": "ତୀର ଚିହ୍ନ ଥିବା ଜାଗାରେ ଏହା ପାଇଁ ଏକ ବିକଳ୍ପ ବାଛନ୍ତୁ",
+ "abusefilter-edit-builder-group-op-arithmetic": "ବୀଜଗଣିତ ଅପରେଟରଗଣ",
+ "abusefilter-edit-builder-op-arithmetic-addition": "ମିଶାଣ (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "ଫେଡାଣ (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "ଗୁଣନ (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "ହରଣ (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Modulo (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "ପାୱାର (**)",
+ "abusefilter-edit-builder-group-op-comparison": "ଅପରେଟର ତୁଳନା",
+ "abusefilter-edit-builder-op-comparison-equal": "ସମାନ (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "ଅସମାନ ( != )",
+ "abusefilter-edit-builder-op-comparison-lt": "ଠାରୁ ସାନ (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "ଠାରୁ ବଡ଼",
+ "abusefilter-edit-builder-op-comparison-lte": "ଠାରୁ ସାନ କିମ୍ବା ସମାନ",
+ "abusefilter-edit-builder-op-comparison-gte": "ଠାରୁ ବଡ଼ କିମ୍ବା ସମାନ",
+ "abusefilter-edit-builder-group-op-bool": "ବୁଲିଆନ ଅପରେଟର",
+ "abusefilter-edit-builder-op-bool-not": "ନୁହେଁ ( ! )",
+ "abusefilter-edit-builder-op-bool-and": "ଏବଂ (&)",
+ "abusefilter-edit-builder-op-bool-or": "ବା (|)",
+ "abusefilter-edit-builder-group-misc": "ବିବିଧ",
+ "abusefilter-edit-builder-misc-in": "ଷ୍ଟ୍ରିଙ୍ଗରେ ଅଛି (in)",
+ "abusefilter-edit-builder-misc-like": "ଏକା ପ୍ରକାର ଶୈଳୀ (like)",
+ "abusefilter-edit-builder-misc-rlike": "ରିଜେକ୍ସ ମେଳିଲା (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "ରିଗ୍ରେକ୍ସ ମେଳହେଲା, ଛୋଟ ଓ ବଡ଼ ଅକ୍ଷର ସମାନ ଭାବେ ଗ୍ରହଣୀୟ (irlike)",
+ "abusefilter-edit-builder-misc-contains": "ବାମ ଷ୍ଟ୍ରିଙ୍ଗ ଭିତରେ ଡାହାଣ ଷ୍ଟ୍ରିଙ୍ଗ ଥଏ (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "ଷ୍ଟ୍ରିଙ୍ଗ ଲିଟେରାଲ (\"\")",
+ "abusefilter-edit-builder-misc-tern": "ତିନି ଅପରେଟର (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "ସର୍ତାଧୀନ (if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "କାମ",
+ "abusefilter-edit-builder-funcs-length": "ଷ୍ଟ୍ରିଙ୍ଗ ଲମ୍ବ (length)",
+ "abusefilter-edit-builder-funcs-lcase": "ଛୋଟ ଅକ୍ଷର ପାଇଁ (lcase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "ଦ୍ଵନ୍ଦ ଉପୁଜାଉଥିବା ଅକ୍ଷର କୁ ସାଧାରଣ କରିବେ (ccnorm)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "ଦ୍ଵିତ-ଅକ୍ଷର କାଢ଼ିଦେବେ (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "ବିଶେଷ ଅକ୍ଷରସମୂହ / ସବୁ ଅକ୍ଷର (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "ସାଧାରଣ କରିବେ (norm)",
+ "abusefilter-edit-builder-funcs-count": "Y ଷ୍ଟ୍ରିଙ୍ଗରେ X ଷ୍ଟ୍ରିଙ୍ଗ କେତେ ଥର ଆସୁଛି (count)",
+ "abusefilter-edit-builder-funcs-rcount": "Y ଷ୍ଟ୍ରିଙ୍ଗରେ X ରିଜେକ୍ସ କେତେଥର ଆସୁଛି (rcount)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "ଖାଲି ସ୍ଥାନ କାଢ଼ିଦେବେ (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "ବିଶେଷ ଅକ୍ଷର କାଢ଼ିଦେବେ (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "IP ସୀମାରେ ଅଛିକି? (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "ବହୁ ସାନଷ୍ଟ୍ରିଙ୍ଗରେ ଷ୍ଟ୍ରିଙ୍ଗ ଖୋଜିବେ (contains_any)",
+ "abusefilter-edit-builder-funcs-substr": "ସାନଷ୍ଟ୍ରିଙ୍ଗ (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "ସାନଷ୍ଟ୍ରିଙ୍ଗରେ ଷ୍ଟ୍ରିଙ୍ଗର ଅବସ୍ଥାନ (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "ଷ୍ଟ୍ରିଙ୍ଗକୁ ସାନଷ୍ଟ୍ରିଙ୍ଗ ଦେଇ ପ୍ରତିବଦଳ କରାଗଲା (str_replace)",
+ "abusefilter-edit-builder-funcs-set_var": "ବଦଳୁଥିବା ମୂଲ୍ୟ ବାଛିବେ (set_var)",
+ "abusefilter-edit-builder-group-vars": "ଚଳ",
+ "abusefilter-edit-builder-vars-accountname": "ଆକାଉଣ୍ଟ ନାମ",
+ "abusefilter-edit-builder-vars-timestamp": "Unix ବଦଳ ସମୟ ସନ୍ତକ",
+ "abusefilter-edit-builder-vars-action": "କାମ",
+ "abusefilter-edit-builder-vars-addedlines": "ବଦଳାଇବା ବେଳେ ଯୋଡାଯାଇଥିବା ଧାଡିଗୁଡିକ",
+ "abusefilter-edit-builder-vars-delta": "ବଦଳାଇବାରେ ସାଇଜରେ ପରିବର୍ତ୍ତନ୍",
+ "abusefilter-edit-builder-vars-diff": "ସମ୍ପାଦନା ଯୋଗୁଁ ଘଟିଥିବା ବଦଳରେ ଏକୀକରଣ ବଦଳ",
+ "abusefilter-edit-builder-vars-newsize": "ନୂଆ ପୃଷ୍ଠା ଆକାର",
+ "abusefilter-edit-builder-vars-oldsize": "ପୁରୁଣା ପୃଷ୍ଠା ଆକାର",
+ "abusefilter-edit-builder-vars-removedlines": "ବଦଳାଇବା ବେଳେ କଟାଜାଇଥିବା ଧାଡିଗୁଡିକ",
+ "abusefilter-edit-builder-vars-summary": "ବଦଳ ସାରାଂଶ/କାରଣ",
+ "abusefilter-edit-builder-vars-article-id": "ପୃଷ୍ଠା ଆଇଡ଼ି",
+ "abusefilter-edit-builder-vars-article-ns": "ପୃଷ୍ଠା ନେମସ୍ପେସ",
+ "abusefilter-edit-builder-vars-article-text": "ପୃଷ୍ଠା ଶୀର୍ଷକ (ବିନା ନେମସ୍ପେସ)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "ପୁରା ପୃଷ୍ଠା ନାମ",
+ "abusefilter-edit-builder-vars-article-views": "ପୃଷ୍ଠା ଦେଖା ସଂଖ୍ୟା",
+ "abusefilter-edit-builder-vars-movedfrom-id": "ଘୁଞ୍ଚାହେବା ମୂଳାଧାର ପୃଷ୍ଠା ID",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "ଘୁଞ୍ଚାହେବା ମୂଳାଧାର ପୃଷ୍ଠାର ନେମସ୍ପେସ",
+ "abusefilter-edit-builder-vars-movedfrom-text": "ଘୁଞ୍ଚାଯିବା ମୂଳାଧାର ପୃଷ୍ଠାର ନାମ",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "ଘୁଞ୍ଚାଯିବା ମୂଳପୃଷ୍ଠାର ପୂରା ନାମ",
+ "abusefilter-edit-builder-vars-movedto-id": "ଘୁଞ୍ଚାଯିବା ଲକ୍ଷ ପୃଷ୍ଠାର ପୃଷ୍ଠା ID",
+ "abusefilter-edit-builder-vars-movedto-ns": "ଘୁଞ୍ଚାଯିବା ଲକ୍ଷ ପୃଷ୍ଠାର ପୃଷ୍ଠାର ନେମସ୍ପେସ",
+ "abusefilter-edit-builder-vars-movedto-text": "ଘୁଞ୍ଚାଯିବା ଲକ୍ଷ ପୃଷ୍ଠାର ପୃଷ୍ଠାର ନାମ",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "ଘୁଞ୍ଚାଯିବା ଲକ୍ଷ ପୃଷ୍ଠାର ପୃଷ୍ଠାର ନାମ",
+ "abusefilter-edit-builder-vars-user-editcount": "ବ୍ୟବହାରକାରୀଙ୍କ ସମ୍ପାଦନା ସଂଖ୍ୟା",
+ "abusefilter-edit-builder-vars-user-age": "ବ୍ୟବହାରକାରୀଙ୍କ ଖାତାର ବୟସ",
+ "abusefilter-edit-builder-vars-user-name": "ବ୍ୟବହାରକାରୀଙ୍କ ଖାତାର ନାମ",
+ "abusefilter-edit-builder-vars-user-groups": "ବ୍ୟବହାରକାରୀଙ୍କୁ ଦଳ ଭିତରେ ରଖିବେ (ଅନ୍ତନିହିତ ସହ)",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "ସାମୟିକ ଇମେଲ ଠିକଣାଟି ନିଶ୍ଚିତ ହୋଇଯାଇଛି",
+ "abusefilter-edit-builder-vars-recent-contributors": "ଏହି ପୃଷ୍ଠାରେ ସମ୍ପାଦନା କରିଥିବା ଶେଷ ଦଶଜଣ ବ୍ୟବହାରକାରୀ",
+ "abusefilter-edit-builder-vars-all-links": "ସବୁଯାକ ବାହାର ଲିଙ୍କ ନୂଆ ଲେଖା ଭାବରେ ଦେଖାଯିବ",
+ "abusefilter-edit-builder-vars-added-links": "ସବୁଯାକ ବାହାର ଲିଙ୍କ ସମ୍ପାଦନାରେ ଯୋଡ଼ାଯିବ",
+ "abusefilter-edit-builder-vars-removed-links": "ସବୁଯାକ ବାହାର ଲିଙ୍କ ଏହି ସମ୍ପାଦନାରୁ ବାହାର କରିଦିଆଗଲା",
+ "abusefilter-edit-builder-vars-old-text": "ସମ୍ପାଦନା ଆଗରୁ ଥିବା ପୁରୁଣା ପୃଷ୍ଠା ଉଇକିଲେଖା",
+ "abusefilter-edit-builder-vars-new-text": "ସମ୍ପାଦନା ପରେ ଥିବା ନୂଆ ପୃଷ୍ଠା ଉଇକିଲେଖା",
+ "abusefilter-edit-builder-vars-new-text-stripped": "ନୂଆ ପୃଷ୍ଠା ଲେଖା, କୌଣସି ମାର୍କଅପରୁ ବାହାର କରାଗଲା",
+ "abusefilter-edit-builder-vars-new-html": "ପାର୍ସ କରାଯାଇଥିବା HTML ମୂଳାଧାରର ନୂଆ ସଂସ୍କରଣ",
+ "abusefilter-edit-builder-vars-restrictions-edit": "ପୃଷ୍ଠାଟିର ପ୍ରତିରକ୍ଷା ପରିମାଣ ବଦଳାନ୍ତୁ",
+ "abusefilter-edit-builder-vars-restrictions-move": "ପୃଷ୍ଠାଟିର ସୁରକ୍ଷା ପରିମାଣ ଘୁଞ୍ଚାନ୍ତୁ",
+ "abusefilter-edit-builder-vars-restrictions-upload": "ଏହି ଫାଇଲ ପାଇଁ ସୁରକ୍ଷା ଅପଲୋଡ କରିବେ",
+ "abusefilter-edit-builder-vars-old-text-stripped": "ନୂଆ ପୃଷ୍ଠା ଲେଖା, କୌଣସି ମାର୍କଅପରୁ ବାହାର କରାଗଲା",
+ "abusefilter-edit-builder-vars-old-links": "ଏହି ସମ୍ପାଦନା ଆଗରୁ ଏହି ପୃଷ୍ଠାରେ ଥିବା ଲିଙ୍କସମୂହ",
+ "abusefilter-edit-builder-vars-old-html": "ପୁରୁଣା ପୃଷ୍ଠା ଉଇକିଟେକ୍ସଟ, HTMLକୁ ପାର୍ସ କରାଯାଇଛି",
+ "abusefilter-edit-builder-vars-minor-edit": "ଏହି ସମ୍ପାଦନାଟି ଏକ ସାମାନ୍ୟ ବଦଳ ଭାବେ ଗଣା କି ନୁହେଁ",
+ "abusefilter-edit-builder-vars-file-sha1": "ଫାଇଲ ବିଷୟବସ୍ତୁର SHA1 hash",
+ "abusefilter-filter-log": "ଛଣାରେ ଏବେକାର ବଦଳଗୁଡିକ",
+ "abusefilter-history": "ଅପବ୍ୟବହାର #$1 ର ଇତିହାସ ବଦଳାଇବେ",
+ "abusefilter-history-foruser": "ବଦଳ $1 ଦ୍ଵାରା",
+ "abusefilter-history-hidden": "ଲୁକ୍କାୟିତ",
+ "abusefilter-history-enabled": "ସାମର୍ଥିକରଣ",
+ "abusefilter-history-global": "ଜଗତ",
+ "abusefilter-history-timestamp": "ସମୟ",
+ "abusefilter-history-user": "ବ୍ୟବହାରକାରୀ",
+ "abusefilter-history-public": "ସାର୍ବଜାନୀନ ଛଣା ବିବରଣୀ",
+ "abusefilter-history-flags": "ବିଶେଷ ସୂଚକ",
+ "abusefilter-history-filter": "ଛଣା ନିୟମ",
+ "abusefilter-history-comments": "ମତାମତ",
+ "abusefilter-history-actions": "କାମ",
+ "abusefilter-history-backedit": "ଛଣା ବଦଳକୁ ଫେରିବେ",
+ "abusefilter-history-deleted": "ଲିଭିଗଲା",
+ "abusefilter-history-filterid": "ଛାଣିବା",
+ "abusefilter-history-select-legend": "ଖୋଜିବାକୁ ସୁଧାରିବେ",
+ "abusefilter-history-select-user": "ବ୍ୟବହାରକାରୀ:",
+ "abusefilter-history-select-submit": "ପରିଷ୍କାର",
+ "abusefilter-history-diff": "ବଦଳସବୁ",
+ "abusefilter-history-error-hidden": "ଆପଣ ଅନୁରୋଧ କରିଥିବା ଛଣାଟି ଲୁଛାଯାଇଛି ଓ ଆପଣ ତାହାର ଇତିହାସ ଦେଖିପାରିବେ ନାହିଁ ।",
+ "abusefilter-exception-unexpectedatend": "$1 ଅକ୍ଷରରେ ଥିବା ଅଜଣା \"$2\"",
+ "abusefilter-exception-expectednotfound": "$1 ଅକ୍ଷରରେ ଗୋଟିଏ $2 ଆଶା କରିଥିଲୁ, ମିଳିଲା ନାହିଁ (ବଦଳରେ $3 $4 ମିଳିଲା) ।",
+ "abusefilter-exception-unrecognisedkeyword": "$1 ଅକ୍ଷରରେ ଅଜଣା କିୱର୍ଡ $2 ।",
+ "abusefilter-exception-unexpectedtoken": "$1 ଅକ୍ଷରରେ ଥିବା ଟୋକନ \"$3\" ($2 ପ୍ରକାରର) ।",
+ "abusefilter-exception-unclosedstring": "$1 ଅକ୍ଷରରେ ସରିନଥିବା ଷ୍ଟ୍ରିଙ୍ଗ ଆରମ୍ଭ ।",
+ "abusefilter-exception-invalidoperator": "$1 ଅକ୍ଷରରେ ଥିବା ଅବୈଧ ଅପରେଟର \"$2\" ।",
+ "abusefilter-exception-unrecognisedtoken": "$1 ଅକ୍ଷରରେ ଅଚିହ୍ନା ଟୋକନ \"$2\" ।",
+ "abusefilter-action-tag": "ଟାଗ",
+ "abusefilter-action-throttle": "ଚପା",
+ "abusefilter-action-warn": "ଚେତାବନୀ",
+ "abusefilter-action-blockautopromote": "ଆପେଆପେ ପ୍ରଚାରକରିବାକିଉ ଅଟକାଇବା",
+ "abusefilter-action-block": "ଖଣ୍ଡ",
+ "abusefilter-action-degroup": "ଗୋଠରୁ କାଢ଼ିଦେବେ",
+ "abusefilter-action-rangeblock": "ସୀମା - ଅଟକ",
+ "abusefilter-action-disallow": "ଅସ୍ଵୀକାର",
+ "abusefilter-revert-title": "$1 ଛଣା ଦେଇ ହୋଇଥିବା ସବୁ ବଦଳକୁ ଲେଉଟାଇଦେବେ",
+ "abusefilter-revert-periodstart": "ଅବଧି ଆରମ୍ଭ:",
+ "abusefilter-revert-periodend": "ଅବଧି ଶେଷ:",
+ "abusefilter-revert-search": "କାମ ବାଛିବେ",
+ "abusefilter-revert-filter": "ଛଣା:",
+ "abusefilter-revert-confirm": "ନିଶ୍ଚିତ କରନ୍ତୁ",
+ "abusefilter-revert-reasonfield": "କାରଣ:",
+ "abusefilter-test": "ପୂର୍ବ ବଦଳଗୁଡିକରେ ଏହି ଛଣାଟିକୁ ପରଖନ୍ତୁ",
+ "abusefilter-test-legend": "ଛଣା ପରଖ",
+ "abusefilter-test-load-filter": "ଛଣା ID ଲୋଡ଼କରିବେ:",
+ "abusefilter-test-submit": "ପରଖ",
+ "abusefilter-test-load": "ଖୋଲିବେ",
+ "abusefilter-test-user": "ବ୍ୟବହାରକାରୀ ଅନୁସାରେ ବଦଳ:",
+ "abusefilter-test-period-start": "ପଛରେ କରାଯାଇଥିବା ବଦଳ:",
+ "abusefilter-test-period-end": ":ଆଗରୁ କରାଯାଇଥିବା ବଦଳ:",
+ "abusefilter-test-page": "ପୃଷ୍ଠାରେ କରାଯାଇଥିବା ବଦଳ:",
+ "abusefilter-test-shownegative": "ଛଣା ସଙ୍ଗେ ମେଳ ଖାଉନଥିବା ବଦଳ",
+ "abusefilter-changeslist-examine": "ପରୀକ୍ଷା କରିବେ",
+ "abusefilter-examine": "ଗୋଟି ଗୋଟି କରି ସବୁ ବଦଳ ପରଖନ୍ତୁ",
+ "abusefilter-examine-legend": "ବଦଳଗୁଡିକୁ ବାଛନ୍ତୁ",
+ "abusefilter-examine-diff": "URL ତୁଳନା:",
+ "abusefilter-examine-user": "ବ୍ୟବହାରକାରୀ:",
+ "abusefilter-examine-title": "ପୃଷ୍ଠା ଶିରୋନାମା :",
+ "abusefilter-examine-submit": "ଖୋଜନ୍ତୁ",
+ "abusefilter-examine-vars": "ଏହି ବଦଳ ପାଇଁ ହୋଇଥିବା ବଦଳୁଥିବା ମୂଲ୍ୟ",
+ "abusefilter-examine-test": "ଏକ ଛଣାରେ ଏହି ବଦଳଟିକୁ ପରଖନ୍ତୁ",
+ "abusefilter-examine-test-button": "ପରଖ ଛଣା",
+ "abusefilter-examine-match": "ଏହି ଛଣା ଏହି ବଦଳଟି ସହ ମେଳ ହେଲା ।",
+ "abusefilter-examine-nomatch": "ଏହି ଛଣା ବଦଳ ସହ ମେଳ ହେଆ ନାହିଁ ।",
+ "abusefilter-examine-syntaxerror": "ଏହି ଛଣାଟିର ଏକ ଭୁଲ ସିଣ୍ଟାକ୍ସ ଅଛି",
+ "abusefilter-examine-notfound": "ଆପଣ ଅନୁରୋଧ କରିଥିବା ବଦଳଗୁଡିକ ମିଳିଲା ନାହିଁ",
+ "abusefilter-examine-noresults": "ଆପଣ ଦେଇଥିବା ଖୋଜିବା ମୁଲ୍ୟାଙ୍କ ଦେଇ ଆମେ କିଛି ଫଳାଫଳ ପାଇପାରିଲୁ ନାହିଁ ।",
+ "abusefilter-topnav": "'''ଅପବ୍ୟବହାର ଛଣା ଦିଗନିର୍ଣ୍ଣୟ'''",
+ "abusefilter-topnav-home": "ମୂଳ ଜାଗା",
+ "abusefilter-topnav-test": "ଦଳଗତ ପରଖ",
+ "abusefilter-topnav-examine": "ପୁରୁଣା ବଦଳଗୁଡିକୁ ପରୀକ୍ଷା କରିବେ",
+ "abusefilter-topnav-log": "ଅପବ୍ୟବ‌ହାର ଲଗ",
+ "abusefilter-topnav-tools": "ଡିବଗ କରିବା ଉପକରଣ",
+ "abusefilter-topnav-import": "ଛଣା ଆମଦାନି କରିବେ",
+ "abusefilter-log-name": "ଅପବ୍ୟବହାର ଛଣା ଇତିହାସ",
+ "abusefilter-log-noresults": "ପରିଣାମହୀନ",
+ "abusefilter-diff-title": "ସଙ୍କଳନ ଭିତରେ ଥିବା ତଫାତ",
+ "abusefilter-diff-item": "ବସ୍ତୁ",
+ "abusefilter-diff-version": "ସଂସ୍କରଣ $1 ଠୁ $2 ଦ୍ଵାରା",
+ "abusefilter-diff-info": "ସାଧାରଣ ଜାଣିବା କଥା",
+ "abusefilter-diff-pattern": "ଛାଣିବା ବିକଳ୍ପସମୂହ",
+ "abusefilter-diff-invalid": "ଦରକାରୀ ସଂସ୍କରଣସମୂହ ଖୋଜିବାରେ ଅସଫଳ ହେଲୁ",
+ "abusefilter-diff-backhistory": "ଛଣା ଇତିହାସକୁ ଫେରିବେ",
+ "abusefilter-import-submit": "ଆୟାତ ତଥ୍ୟ"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/os.json b/www/wiki/extensions/AbuseFilter/i18n/os.json
new file mode 100644
index 00000000..6c04d5d2
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/os.json
@@ -0,0 +1,39 @@
+{
+ "@metadata": {
+ "authors": [
+ "Amikeco",
+ "Bouron"
+ ]
+ },
+ "abusefilter-log-search-user": "Архайæг:",
+ "abusefilter-log-search-title": "Сæргонд:",
+ "abusefilter-log-search-wiki": "Википроект:",
+ "abusefilter-log-search-submit": "Агурын",
+ "abusefilter-log-detailedentry-local": "фæрсудзæн $1",
+ "abusefilter-log-detailslink": "ууыл фылдæр",
+ "abusefilter-log-diff": "хицæн.",
+ "abusefilter-log-noactions": "нæй",
+ "abusefilter-log-hide-reason": "Аххос:",
+ "abusefilter-list": "Æппæт фæрсудзæнтæ",
+ "abusefilter-list-status": "Статус",
+ "abusefilter-list-details": "Фылдæр",
+ "abusefilter-deleted": "Аппæрст",
+ "abusefilter-tools-reautoconfirm-user": "Архайæг:",
+ "abusefilter-edit-status-label": "Статистикæ:",
+ "abusefilter-edit-new": "Ног фæрсудзæн",
+ "abusefilter-edit-throttle-period": "Æмгъуыд:",
+ "abusefilter-edit-history": "Истори:",
+ "abusefilter-edit-tools": "Фæрæзтæ:",
+ "abusefilter-edit-builder-vars-article-id": "Фарсы ID",
+ "abusefilter-history-timestamp": "Рæстæг",
+ "abusefilter-history-user": "Архайæг",
+ "abusefilter-history-deleted": "Аппæрст",
+ "abusefilter-history-filterid": "Фæрсудзæн",
+ "abusefilter-history-select-user": "Архайæг:",
+ "abusefilter-history-diff": "Ивдтытæ",
+ "abusefilter-revert-periodstart": "Æмгъуыды райдайæн:",
+ "abusefilter-revert-periodend": "Æмгъуыды кæрон:",
+ "abusefilter-revert-filter": "Фæрсудзæн:",
+ "abusefilter-examine-user": "Архайæг:",
+ "abusefilter-examine-title": "Фарсы сæргонд:"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/pa.json b/www/wiki/extensions/AbuseFilter/i18n/pa.json
new file mode 100644
index 00000000..8c0b20df
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/pa.json
@@ -0,0 +1,83 @@
+{
+ "@metadata": {
+ "authors": [
+ "Aalam",
+ "Babanwalia",
+ "Raj Singh",
+ "TariButtar"
+ ]
+ },
+ "abusefilter-log-search-user": "ਵਰਤੋਂਕਾਰ:",
+ "abusefilter-log-search-wiki": "ਵਿਕੀ:",
+ "abusefilter-log-search-submit": "ਖੋਜੋ",
+ "abusefilter-log-diff": "ਫ਼ਰਕ",
+ "abusefilter-log-details-val": "ਮੁੱਲ",
+ "abusefilter-log-details-vars": "ਕਾਰਵਾਈ ਦੇ ਮਾਪਦੰਡ",
+ "abusefilter-log-details-private": "ਨਿੱਜੀ ਸਮੱਗਰੀ",
+ "abusefilter-log-noactions": "ਕੋਈ ਨਹੀਂ",
+ "abusefilter-log-details-diff": "ਸੋਧ ਵਿਚ ਕੀਤੀਆਂ ਗਈਆਂ ਤਬਦੀਲੀਆਂ",
+ "abusefilter-log-linkoncontribs": "ਦੁਰਵਰਤੋਂ ਦਾ ਚਿੱਠਾ",
+ "abusefilter-log-linkoncontribs-text": "ਇਸ ਵਰਤੋਂਕਾਰ ਲਈ ਦੁਰਵਰਤੋਂ ਦੇ ਚਿੱਠਾ",
+ "abusefilter-log-hide-reason": "ਕਾਰਨ:",
+ "abusefilter-list-edit": "ਸੋਧੋ",
+ "abusefilter-hidden": "ਨਿੱਜੀ",
+ "abusefilter-deleted": "ਮਿਟਾਇਆ ਹੋਇਆ",
+ "abusefilter-status-global": "ਗਲੋਬਲ",
+ "abusefilter-list-options-scope-local": "ਮਕਾਮੀ ਵਿਕੀ",
+ "abusefilter-list-options-submit": "ਅੱਪਡੇਟ",
+ "abusefilter-tools-reautoconfirm-user": "ਵਰਤੋਂਕਾਰ:",
+ "abusefilter-edit-notes": "ਟਿੱਪਣੀਆਂ:\n:''(ਨਿੱਜੀ}''",
+ "abusefilter-edit-throttle-period": "ਸਮੇਂ ਦੀ ਮਿਆਦ:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|ਸਕਿੰਟ}}",
+ "abusefilter-edit-warn-other": "ਹੋਰ ਸੁਨੇਹਾ",
+ "abusefilter-edit-warn-other-label": "ਹੋਰ ਸੁਨੇਹਾ ਦੇ ਸਫ਼ੇ ਦਾ ਨਾਂ:\n:''(MediaWiki ਅਗੇਤਰ ਤੋਂ ਬਗ਼ੈਰ)''",
+ "abusefilter-edit-warn-actions": "ਕਾਰਵਾਈਆਂ:",
+ "abusefilter-edit-warn-preview": "ਚੁਣੇ ਗਏ ਸੁਨੇਹੇ ਦੀ ਝਲਕ ਵੇਖੋ",
+ "abusefilter-edit-warn-edit": "ਚੁਣਿਆ ਸੁਨੇਹਾ ਬਣਾਓ/ਸੋਧੋ",
+ "abusefilter-edit-main": "ਛਾਨਣੀ ਦੇ ਮਾਪਦੰਡ",
+ "abusefilter-edit-done-subtitle": "ਛਾਨਣੀ ਸੋਧੀ ਗਈ",
+ "abusefilter-edit-viewhistory": "ਛਾਨਣੀ ਦਾ ਅਤੀਤ ਵੇਖੋ",
+ "abusefilter-edit-history": "ਅਤੀਤ:",
+ "abusefilter-edit-badfilter": "ਤੁਹਾਡੇ ਵੱਲੋਂ ਦੱਸੀ ਗਈ ਛਾਨਣੀ ਮੌਜੂਦ ਨਹੀਂ ਹੈ",
+ "abusefilter-edit-revert": "ਇਸ ਛਾਨਣੀ ਵੱਲੋਂ ਕੀਤੀ ਗਈ ਕਾਰਵਾਈ ਰੱਦ ਕਰੋ",
+ "abusefilter-edit-tools": "ਸੰਦ:",
+ "abusefilter-edit-export": "ਇਸ ਛਾਨਣੀ ਨੂੰ ਕਿਸੇ ਹੋਰ ਵਿਕੀ 'ਤੇ ਭੇਜੋ",
+ "abusefilter-edit-builder-op-arithmetic-addition": "ਜੋੜ (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "ਘਟਾਓ (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "ਗੁਣਾ (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "ਭਾਗ (/)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "ਘਾਤ ਅੰਕ (**)",
+ "abusefilter-edit-builder-group-op-comparison": "ਤੁਲਨਾ ਅਪਰੇਟਰ",
+ "abusefilter-edit-builder-op-comparison-equal": "ਬਰਾਬਰ (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "ਬਰਾਬਰ ਨਹੀਂ (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "ਘੱਟ (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "ਵੱਧ (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "ਘੱਟ ਜਾਂ ਬਰਾਬਰ (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "ਵੱਧ ਜਾਂ ਬਰਾਬਰ (>=)",
+ "abusefilter-edit-builder-group-op-bool": "ਬੂਲੀਅਨ ਅਪਰੇਟਰ",
+ "abusefilter-edit-builder-op-bool-not": "ਨਹੀਂ (!)",
+ "abusefilter-edit-builder-op-bool-and": "ਅਤੇ (&)",
+ "abusefilter-edit-builder-op-bool-or": "ਜਾਂ (|)",
+ "abusefilter-edit-builder-group-misc": "ਫੁਟਕਲ",
+ "abusefilter-edit-builder-misc-in": "ਤੰਦ (in) ਵਿਚ ਮੌਜੂਦ",
+ "abusefilter-edit-builder-misc-like": "ਨਮੂਨੇ (like) ਨਾਲ਼ ਮੇਲ ਖਾਂਦਾ",
+ "abusefilter-edit-builder-vars-user-editcount": "ਵਰਤੋਂਕਾਰ ਦੀ ਸੋਧ ਗਿਣਤੀ",
+ "abusefilter-edit-builder-vars-user-age": "ਵਰਤੋਂਕਾਰ ਖਾਤੇ ਦੀ ਉਮਰ",
+ "abusefilter-edit-builder-vars-user-name": "ਵਰਤੋਂਕਾਰ ਖਾਤੇ ਦਾ ਨਾਂ",
+ "abusefilter-edit-builder-vars-user-blocked": "ਕੀ ਵਰਤੋਂਕਾਰ ਪਾਬੰਦੀਸ਼ੁਦਾ ਹੈ",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "ਈਮੇਲ ਤਸਦੀਕ ਹੋਣ ਦਾ ਸਮਾਂ",
+ "abusefilter-edit-builder-vars-recent-contributors": "ਇਸ ਸਫ਼ੇ ਵਿਚ ਯੋਗਦਾਨ ਪਾਉਣ ਵਾਲੇ ਆਖ਼ਰੀ ਦਸ ਵਰਤੋਂਕਾਰ",
+ "abusefilter-edit-builder-vars-first-contributor": "ਇਸ ਸਫ਼ੇ 'ਤੇ ਯੋਗਦਾਨ ਪਾਉਣ ਵਾਲ਼ਾ ਪਹਿਲਾ ਵਰਤੋਂਕਾਰ",
+ "abusefilter-edit-builder-vars-all-links": "ਨਵੀਂ ਲਿਖਤ ਵਿਚਲੀਆਂ ਸਾਰੀਆਂ ਬਾਹਰੀ ਕੜੀਆਂ",
+ "abusefilter-edit-builder-vars-added-links": "ਇਸ ਸੋਧ ਵਿਚ ਸਾਰੀਆਂ ਜੋੜੀਆਂ ਗਈਆਂ ਬਾਹਰੀ ਕੜੀਆਂ",
+ "abusefilter-edit-builder-vars-removed-links": "ਇਸ ਸੋਧ ਵਿਚ ਸਾਰੀਆਂ ਮਿਟਾਈਆਂ ਗਈਆਂ ਕੜੀਆਂ",
+ "abusefilter-history-timestamp": "ਵਕਤ",
+ "abusefilter-history-user": "ਵਰਤੋਂਕਾਰ",
+ "abusefilter-history-flags": "ਝੰਡੇ",
+ "abusefilter-history-comments": "ਟਿੱਪਣੀਆਂ",
+ "abusefilter-history-actions": "ਕਾਰਵਾਈਆਂ",
+ "abusefilter-history-deleted": "ਮਿਟਾਇਆ ਗਿਆ",
+ "abusefilter-history-filterid": "ਛਾਨਣੀ",
+ "abusefilter-history-select-user": "ਵਰਤੋਂਕਾਰ:",
+ "abusefilter-history-diff": "ਤਬਦੀਲੀਆਂ"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/pam.json b/www/wiki/extensions/AbuseFilter/i18n/pam.json
new file mode 100644
index 00000000..7146bffb
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/pam.json
@@ -0,0 +1,24 @@
+{
+ "@metadata": {
+ "authors": [
+ "Val2397",
+ "Leeheonjin"
+ ]
+ },
+ "abusefilter-log-search-user": "Talagamit",
+ "abusefilter-log-search-filter": "Salakan ya ing ID",
+ "abusefilter-log-search-title": "Bansag",
+ "abusefilter-log-search-wiki": "Wiki",
+ "abusefilter-log-search-action-taken-any": "Andyang sanu",
+ "abusefilter-log-search-submit": "Manintun",
+ "abusefilter-log-detailedentry-local": "Salak $1",
+ "abusefilter-log-diff": "aliwa",
+ "abusefilter-log-hidelink": "iakma ing akakit",
+ "abusefilter-log-details-var": "Aliwaliwa",
+ "abusefilter-log-details-val": "alaga",
+ "abusefilter-log-details-ip": "Penibatan ning IP karinan",
+ "abusefilter-log-noactions": "ala",
+ "abusefilter-log-linkoncontribs": "tala ning pamagasamantala",
+ "abusefilter-log-linkoncontribs-text": "Pamagsamantalang tala nining talagamit",
+ "abusefilter-log-hidden": "(makasalikot a pepalub)"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/pcd.json b/www/wiki/extensions/AbuseFilter/i18n/pcd.json
new file mode 100644
index 00000000..2b826bc7
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/pcd.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Geoleplubo"
+ ]
+ },
+ "abuselog": "Jornal des filtes anti-abus"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/pdc.json b/www/wiki/extensions/AbuseFilter/i18n/pdc.json
new file mode 100644
index 00000000..7d0a7d44
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/pdc.json
@@ -0,0 +1,40 @@
+{
+ "@metadata": {
+ "authors": [
+ "Xqt"
+ ]
+ },
+ "abusefilter-log-search-user": "Yuuser:",
+ "abusefilter-log-search-title": "Titel:",
+ "abusefilter-log-search-submit": "Uffgucke",
+ "abusefilter-log-noactions": "ken",
+ "abusefilter-log-hide-reason": "Grund:",
+ "abusefilter-list-edit": "Ennere",
+ "abusefilter-hidden": "Private",
+ "abusefilter-deleted": "Verwischt",
+ "abusefilter-tools-reautoconfirm-user": "Yuuser:",
+ "abusefilter-edit-status-label": "Nummere:",
+ "abusefilter-edit-lastmod-text": "$1 vun $2",
+ "abusefilter-edit-history": "Gschicht:",
+ "abusefilter-edit-tools": "Gscharr:",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Addition (+)",
+ "abusefilter-edit-builder-op-comparison-lt": "Gleener ass wie (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Greeser ass wie (>)",
+ "abusefilter-edit-builder-op-bool-not": "Naett (!)",
+ "abusefilter-edit-builder-op-bool-and": "Unn (&)",
+ "abusefilter-edit-builder-op-bool-or": "Odder (|)",
+ "abusefilter-edit-builder-vars-newsize": "Neie Grees vun dem Blatt",
+ "abusefilter-edit-builder-vars-oldsize": "Alde Grees vun dem Blatt",
+ "abusefilter-history-timestamp": "Zeit",
+ "abusefilter-history-user": "Yuuser",
+ "abusefilter-history-comments": "Aamaerickinge",
+ "abusefilter-history-deleted": "Verwischt",
+ "abusefilter-history-select-user": "Yuuser:",
+ "abusefilter-action-block": "Aabinne",
+ "abusefilter-test-load": "Laade",
+ "abusefilter-examine-user": "Yuuser:",
+ "abusefilter-examine-title": "Blattnaame:",
+ "abusefilter-examine-submit": "Uffgucke",
+ "abusefilter-topnav-home": "Schtaert-Blatt",
+ "abusefilter-diff-version": "Version vum $1 vun $2"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/pdt.json b/www/wiki/extensions/AbuseFilter/i18n/pdt.json
new file mode 100644
index 00000000..dbce136e
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/pdt.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "Slomox"
+ ]
+ },
+ "abusefilter-log-search-user": "Brucker:",
+ "abusefilter-history-user": "Brucker"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/pfl.json b/www/wiki/extensions/AbuseFilter/i18n/pfl.json
new file mode 100644
index 00000000..7318fccc
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/pfl.json
@@ -0,0 +1,386 @@
+{
+ "@metadata": {
+ "authors": [
+ "Manuae",
+ "Xqt",
+ "Matma Rex"
+ ]
+ },
+ "abusefilter-desc": "Bnudzd selbschddendisch Medoode uff Ännarunge",
+ "abusefilter": "Siewb-Oischdellunge gesche Missbraisch",
+ "abuselog": "Logbuch fa Missbraisch",
+ "abusefilter-intro": "Willkumme uffde Owaflesch fa die Hondhawung vunde Missbraisch-Siewb.\nMissbraisch-Siewb sind selbschdschdendischi Voarischdunge, wu vun alle Medoode uff alle Ännarunge õwende dun.\nDie Owaflesch zaischd ä Lischd vun alle Siewb, wu ma a ännare konn.",
+ "abusefilter-mustbeeditor": "Weschede Sischahaid derfn bloß Laid mid gnuch Reschd do mache.",
+ "abusefilter-warning": "'''Bassma uff''': Was du so mache wilschd, wead als uuerwinschd gseje.\nWonns nix isch, weads a glai widda zrigg'gsezd odda gleschd.\nWonn des was dudo meamols magschd nix isch, weaschd gschberd.\nWonn dengge duschd, die Ännarung isch guud, doan konschd a ruhisch waida mache.\nÄ korzi Schildarung vunde Reschl, wudes ausgleesd kabd hod isch: $1",
+ "abusefilter-disallowed": "Was du do mache wilschd, werd als schedlisch gseje un isch deswesche vabode worre.\nWonn menschd, dasses donoi kead, donn gebem Adminischdrador Bschaid.\nÄ korzi Schildarung vunde Reschl, wudes ausgleesd kabd hod isch: $1",
+ "abusefilter-blocked-display": "Was du do mache wilschd, isch vun allä als schedlisch gseje worre un deswesche hoschds a ned mache dirfe.\nUm {{SITENAME}} zschidze, isch doi Kondo un a alli domid vabundene IP-Addresse gschberd worre.\nWonn menschd, dass desn Irrdumm isch, donn gebem Adminischdrador Bschaid.\nÄ korzi Schildarung vunde Reschl, wudes ausgleesd kabd hawen isch: $1",
+ "abusefilter-degrouped": "Was du do mache wilschd, isch vun allä als schedlisch gseje worre un deswesche hoschds a ned mache dirfe.\nWails vielaischd a ganed du selwa bischd, wu do schaffe dud, hodmada alle Räschd mol gnumme.\nWonn menschd, dass des falsch isch, donn gebem Bürograd Bschaid un duem alles erkläre.\nÄ korzi Schildarung vunde Reschl, wu valedzd worre isch: $1",
+ "abusefilter-autopromote-blocked": "Was du do mache wilschd, isch vun allä als schedlisch gseje worre un deswesche hoschds a ned mache dirfe.\nAus roine Vorsischd hodmada oinischi Räschd voariwwagejend mol gnumme.\nÄ korzi Schildarung vunde Reschl, wu valedzd worre isch: $1",
+ "abusefilter-blocker": "Siewb fa Missbraisch",
+ "abusefilter-blockreason": "Du bischd vunem Siewb gschberd worre.\nÄ Schildarung vunde Reschl: $1",
+ "abusefilter-degroupreason": "Mahodda oinischi Räschd durschn Siewb voariwwagejend mol gnumme.\nÄ Schildarung vunde Reschl: $1",
+ "abusefilter-accountreserved": "De Nome isch fade Missbraisch-Siewb resawiad.",
+ "right-abusefilter-modify": "Õm Missbraisch-Siewb schaffe",
+ "right-abusefilter-view": "Missbraisch-Siewb õgugge",
+ "right-abusefilter-log": "Logbuch vum Missbraisch-Siewb õgugge",
+ "right-abusefilter-log-detail": "Nejares im Logbuch vum Missbraisch-Siewb õgugge",
+ "right-abusefilter-private": "Briwades im Logbuch vum Missbraisch-Siewb õgugge",
+ "right-abusefilter-modify-restricted": "Õn Missbraisch-Siewb mid oigschrengdi Maßnõhme schaffe",
+ "right-abusefilter-revert": "Alli Ännarunge vunem bschdimmde Missbraisch-Siewb rigg'gängisch mache",
+ "right-abusefilter-view-private": "Briwade Missbraisch-Siewb õgugge",
+ "right-abusefilter-log-private": "Briwadi Oidräsch vunde Missbraisch-Siewb õgugge",
+ "right-abusefilter-hide-log": "Oidräsch vum Logbuch fa Missbraisch-Siewb vaschdeggle",
+ "right-abusefilter-hidden-log": "Vaschdegglde Oidräsch vum Logbuch fa Missbraisch-Siewb õgugge",
+ "right-abusefilter-modify-global": "Vaäna oder machn globale Missbraisch-Siewb",
+ "action-abusefilter-modify": "n'Missbraisch-Siewb ännare",
+ "action-abusefilter-view": "Missbraisch-Siewb õgugge",
+ "action-abusefilter-log": "Logbuch vum Missbraisch-Siewb õgugge",
+ "action-abusefilter-log-detail": "Nejares im Logbuch vum Missbraisch-Siewb õgugge",
+ "action-abusefilter-private": "Briwades im Logbuch vum Missbraisch-Siewb õgugge",
+ "action-abusefilter-modify-restricted": "Õn Missbraisch-Siewb midd oigschrengdi Maßnõhme schaffe",
+ "action-abusefilter-revert": "Alle Ännarunge vunem bschdimmde Missbraisch-Siewb rigg'gengisch mache",
+ "action-abusefilter-view-private": "Briwade Missbraisch-Siewb õgugge",
+ "abusefilter-log": "Logbuch fa Missbraisch-Siewb",
+ "abusefilter-log-summary": "S'Logbuch zaischd ä Lischd vunde Ablaif, wus Siewb uffgschnabbd hod.",
+ "abusefilter-log-search": "Im Logbuch vum Missbraisch-Siewb gugge",
+ "abusefilter-log-search-user": "Middawaida:",
+ "abusefilter-log-search-filter": "Siewb-ID",
+ "abusefilter-log-search-title": "Didl:",
+ "abusefilter-log-search-wiki": "Wiki:",
+ "abusefilter-log-search-submit": "Nochgugge",
+ "abusefilter-log-entry": "$1: $2 hodd midde Hondlung „$3“ uff „$4“ än Missbraisch-Siewb ausglesd.\nMoßnõm vum Siewb: „$5“;\nSchildarung vum Siewb: „$6“",
+ "abusefilter-log-detailedentry-meta": "$1: $2 hodd midde Hondlung „$4“ uffde Said „$5“ de Missbraisch-Siewb „$3“ ausglesd.\nMoßnõm vum Siewb: $6;\nSchildarung vum Siewb: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "globals Siewb $1",
+ "abusefilter-log-detailedentry-local": "Siewb $1",
+ "abusefilter-log-detailslink": "Nejares",
+ "abusefilter-log-diff": "Unnaschied",
+ "abusefilter-log-hidelink": "Sischbaakaid ännare",
+ "abusefilter-log-details-legend": "Nejares zum Oidrach $1 vum Logbuch",
+ "abusefilter-log-details-var": "Vaänalischi",
+ "abusefilter-log-details-val": "Werd",
+ "abusefilter-log-details-vars": "Greeß fa Maßnõhme",
+ "abusefilter-log-details-private": "Briwadi Daade",
+ "abusefilter-log-details-ip": "Uaschbrungs-IP-Adress",
+ "abusefilter-log-noactions": "känn",
+ "abusefilter-log-details-diff": "Ännarunge vum Schaffe",
+ "abusefilter-log-linkoncontribs": "Logbuch fa Missbraisch",
+ "abusefilter-log-linkoncontribs-text": "Logbuch vum Missbraisch-Siewb fa den Middawaida",
+ "abusefilter-log-hidden": "(Oidrach vaschdeggld)",
+ "abusefilter-log-hidden-implicit": "(vaschdeggld, s'isch gleschd worre)",
+ "abusefilter-log-cannot-see-details": "Du hoschd kä Räschd nejares vunde Oigawb õzgugge.",
+ "abusefilter-log-details-hidden": "Du konschda Nejares iwade Oidrach nedd õgugge, s'isch vaschdeggld.",
+ "abusefilter-log-hide-legend": "Vaschdeggl de Oidrach vum Logbuch",
+ "abusefilter-log-hide-id": "ID vum Logbuch-Oidrach",
+ "abusefilter-log-hide-hidden": "Den Oidrach vaschdeggle",
+ "abusefilter-log-hide-reason": "Grund:",
+ "abusefilter-log-hide-forbidden": "Du hoschd kä Räschd fas vaschdeggle vun Oidräsch vum Logbuch vum Missbraisch-Siewb.",
+ "abusefilter-logentry-suppress": "Hodd „[[$1]]“ vaschdeggld",
+ "abusefilter-logentry-unsuppress": "hodd „[[$1]]“ sischdbaa gmachd",
+ "logentry-abusefilter-hit": "$1 hodd baide Maßnohm „$5“ uff $3 s'Siewb $4 ausglesd. Bassierd isch: $6 ($7)",
+ "abusefilter-management": "Vawaldung vunde Missbraisch-Siewb",
+ "abusefilter-list": "Alli Siewb",
+ "abusefilter-list-id": "Siewb-ID",
+ "abusefilter-list-status": "Zuschdond",
+ "abusefilter-list-public": "Effendlischi Bschraiwung",
+ "abusefilter-list-consequences": "Folsche",
+ "abusefilter-list-visibility": "Sischdbakaid",
+ "abusefilter-list-hitcount": "Dreffa-Zähla",
+ "abusefilter-list-edit": "Bearwaide",
+ "abusefilter-list-details": "Nejares",
+ "abusefilter-list-limit": "Õzahl pro Said:",
+ "abusefilter-list-lastmodified": "Ledschdmol gännad",
+ "abusefilter-list-group": "Siewb-Grubb",
+ "abusefilter-hidden": "Briwad",
+ "abusefilter-unhidden": "Effndlisch",
+ "abusefilter-enabled": "Õgschdeld",
+ "abusefilter-deleted": "Gleschd",
+ "abusefilter-disabled": "Abgschdeld",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|Dreffa|Dreffa}}",
+ "abusefilter-new": "N'naijs Siewb mache",
+ "abusefilter-return": "Zrigg zude Vawaldung vunde Missbraisch-Siewb",
+ "abusefilter-status-global": "Global",
+ "abusefilter-list-options": "Meschlischkaide:",
+ "abusefilter-list-options-deleted": "Gleschdi Siewb",
+ "abusefilter-list-options-deleted-only": "Bloß gleschde Siewb zaische",
+ "abusefilter-list-options-deleted-hide": "Abgschdelldi Siewb vaschdeggle",
+ "abusefilter-list-options-deleted-show": "Gleschdi Siewb uffnemme",
+ "abusefilter-list-options-scope": "Zaisch Siewb vun:",
+ "abusefilter-list-options-scope-local": "Lokales Wiki",
+ "abusefilter-list-options-scope-global": "Globali Reeschle",
+ "abusefilter-list-options-disabled": "Siewb abschdelle:",
+ "abusefilter-list-options-hidedisabled": "Abgschdellde Siewb vaschdeggle",
+ "abusefilter-list-options-submit": "uffdadiere",
+ "abusefilter-tools-text": "Do hodds Wergzaisch, wu baim Baschdle vun Missbraisch-Siewb unde Fehlasuch nidzlisch soi kennen.",
+ "abusefilter-tools-expr": "Ausdrugg-Teschda",
+ "abusefilter-tools-submitexpr": "Briefe",
+ "abusefilter-tools-reautoconfirm": "De Zuschdond „Audomadisch bschdedigda Middawaida“ widaherschdelle",
+ "abusefilter-tools-reautoconfirm-user": "Middawaida:",
+ "abusefilter-tools-reautoconfirm-submit": "Än Middawaida wida zum \"Audomadisch bschdedischda Middawaida\" mache",
+ "abusefilter-reautoconfirm-none": "{{GENDER:$1|Demsoi|Dereian|Deneian}} Schdadus \"Audomadisch bschdedischda Middawaida\" isch ned weggnumme worre.",
+ "abusefilter-reautoconfirm-notallowed": "Du derfschd de Middawaida net wida zuäm \"Audomadisch bschdedischda Middawaida\" mache.",
+ "abusefilter-reautoconfirm-done": "De Schdadus \"Audomadisch bschdedischda Middawaida\" isch widda hergschdelld worre",
+ "abusefilter-status": "Vunde ledschde {{PLURAL:$1|Agzion|$1 Agzione}} {{PLURAL:$2|hod än|hawn $2}} ($3 %) die Hegschdzahl vun $4 gbrauchd.\n{{PLURAL:$5|Ä Agzion|$5 Agzione}} ($6 %) sin vunem õgschaldene Siewb gfunne worre.",
+ "abusefilter-edit": "Schaff õm Missbraischsiewb",
+ "abusefilter-edit-subtitle": "Õm Siewb $1 schaffe",
+ "abusefilter-edit-subtitle-new": "De Siewb wead gmachd.",
+ "abusefilter-edit-oldwarning": "<strong>Du duschd do õnnare alde Version vum Siewb schaffe.\nDie Schdadischdig gild bloß fa die naischd Version vum Siewb.\nWonn des do schbaischere duschd, iwaschraibschd alle Ännarunge, wu saidher gmachd worre sinn.</strong> &bull;\n[[Special:AbuseFilter/history/$2|Zrigg zude Gschischd vum Siewb]].",
+ "abusefilter-edit-status-label": "Schdadischdig:",
+ "abusefilter-edit-status": "Vunde ledschde {{PLURAL:$1|Agzion isch|$1 Agzione sinn}} $2 ($3 %) vundem Siewb gfunne worre.",
+ "abusefilter-edit-status-profile": "Vunde ledschde {{PLURAL:$1|Agzion isch|$1 Agzione sinn}} $2 ($3 %) vundem Siewb gfunne worre.\nIm Schnidd hodda dodvu $4 ms un $5 {{PLURAL:$5|Bedingung|Bedingunge}} vunde Hegschdzahl gbrauchd.",
+ "abusefilter-edit-new": "Naije Siewb",
+ "abusefilter-edit-save": "Siewb schbaischere",
+ "abusefilter-edit-id": "Siewb-ID",
+ "abusefilter-edit-description": "Bschraiwung:\n:''(effendlisch sischdba)''",
+ "abusefilter-edit-group": "Siewb-Grubb:",
+ "abusefilter-edit-flags": "Edikedde",
+ "abusefilter-edit-enabled": "De Siewb õschdelle",
+ "abusefilter-edit-deleted": "Als gleschd gkennzaischnd",
+ "abusefilter-edit-hidden": "Nejares vum Siewb vaschdegle",
+ "abusefilter-edit-global": "Globals Siewb",
+ "abusefilter-edit-rules": "Bedingunge:",
+ "abusefilter-edit-notes": "Nodize:\n:''(briwad)''",
+ "abusefilter-edit-lastmod": "Ledschdi Ännarung vum Siewb:",
+ "abusefilter-edit-lastmod-text": "$1 vun $2",
+ "abusefilter-edit-hitcount": "Siewb Dreffa:",
+ "abusefilter-edit-consequences": "Baim Dreffa gibds die Maßnõhm",
+ "abusefilter-edit-action-warn": "Noch änna Waanung die Maßnõhm ausleese",
+ "abusefilter-edit-action-disallow": "Die vum Middawaida gwolldi Maßnõhm vahinare",
+ "abusefilter-edit-action-blockautopromote": "De Schdadus \"Audomadisch bschdedischda Middawaida\" wegnemme",
+ "abusefilter-edit-action-degroup": "De Middawaida ausde Grubbe mid Sondaräschd nemme",
+ "abusefilter-edit-action-block": "Middawaida/IP-Adress schberre",
+ "abusefilter-edit-action-throttle": "Maßnõhm auslese, wonde Middawaida ä Grenz iwaschridde hod",
+ "abusefilter-edit-action-rangeblock": "Schberrn /16-B'raisch, wude Middawaida heakumme dud.",
+ "abusefilter-edit-action-tag": "B'awaidung fa ä schbederi Iwabrifung makiere",
+ "abusefilter-edit-throttle-count": "Õzahl vun zulässische Maßnõhme:",
+ "abusefilter-edit-throttle-period": "Zaidabschnidd:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|Sekund|Sekunde}}",
+ "abusefilter-edit-throttle-groups": "Reschle zu drossle fa die Grubb:\n:''(äni bro Zail, midm Komma vabunde)''",
+ "abusefilter-edit-warn-message": "Sischdemnochrischd fa die Waanung:",
+ "abusefilter-edit-warn-other": "Õnnare Nochrischde",
+ "abusefilter-edit-warn-other-label": "Saidenõme uffde Nochrischd:\n:''(ohni MediaWiki-Bräfix)''",
+ "abusefilter-edit-warn-actions": "Maßnõhme:",
+ "abusefilter-edit-warn-preview": "Voaschau vunde gwelde Sischdemnochrischd",
+ "abusefilter-edit-warn-edit": "Gweldi Nochrischd easchdelle/b'aawaide",
+ "abusefilter-edit-tag-tag": "Edikedde vawende (äns bro Zail):",
+ "abusefilter-edit-denied": "Du konschda Nejares iwade Siewb ned õgugge, s'isch vaschdeggld.",
+ "abusefilter-edit-main": "Siewb Kenngreeß",
+ "abusefilter-edit-done-subtitle": "Siewb g'änad",
+ "abusefilter-edit-done": "Du hoschd die Ännarunge õm Siewb $1 gschbaischad.",
+ "abusefilter-edit-badsyntax": "Doi Siewb hoddn Sindaxfehla.\nDe Parser hodd ausgewwe: <pre>$1</pre>",
+ "abusefilter-edit-restricted": "Du konschd õn dem Siewb ned schaffe, waila vabodene Maßnõhme hodd.\nFrochn Middawaida, wu so Maßnõhme dzufiesche konn, des fa disch zu mache.",
+ "abusefilter-edit-viewhistory": "Gschischd vum Siewb õgugge",
+ "abusefilter-edit-history": "Gschischd:",
+ "abusefilter-edit-check": "Sindax iwabriefe",
+ "abusefilter-edit-badfilter": "De Siewb, wu õgewwe hoschd, hodds nedd.",
+ "abusefilter-edit-revert": "Maßnõhme vum Siewb rigg'gängisch mache.",
+ "abusefilter-edit-tools": "Wergzaisch:",
+ "abusefilter-edit-test-link": "S'Siewb õnde ledschde Ännarunge teschde",
+ "abusefilter-edit-export": "Den Siewb fa ä õnares Wiki ausgewwe",
+ "abusefilter-edit-syntaxok": "Kän Fehla inde Sindax gfunne.",
+ "abusefilter-edit-syntaxerr": "Fehla inde Sindax gfunne: $1",
+ "abusefilter-edit-bad-tags": "Ä odda mea vun doine Edikedde sinn nedd gildisch.\nMagse korz un ohni Sondazaische.",
+ "abusefilter-edit-notallowed": "Du derfschd õn käm Missbraisch-Siewb schaffe oddan ännare",
+ "abusefilter-edit-notallowed-global": "Du derfschd õn käm globale Missbraisch-Siewb schaffe oddan ännare",
+ "abusefilter-edit-builder-select": "Wählda ä Meschlischkaid, umse õm Cursor oizfiesche",
+ "abusefilter-edit-builder-group-op-arithmetic": "\"Operatoren\" fas Reschne",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Zsommezeele",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Abzije",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Moolnemme",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Deele",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Modulo (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Potenz (**)",
+ "abusefilter-edit-builder-group-op-comparison": "\"Operatoren\" fas Vaglaische",
+ "abusefilter-edit-builder-op-comparison-equal": "S'Glaische",
+ "abusefilter-edit-builder-op-comparison-notequal": "Ned Glaisch",
+ "abusefilter-edit-builder-op-comparison-lt": "Gleena als",
+ "abusefilter-edit-builder-op-comparison-gt": "Greeßa als",
+ "abusefilter-edit-builder-op-comparison-lte": "Gleena oda glaisch wie",
+ "abusefilter-edit-builder-op-comparison-gte": "Greeßa oda glaisch wie",
+ "abusefilter-edit-builder-group-op-bool": "Boolsche \"Operatoren\"",
+ "abusefilter-edit-builder-op-bool-not": "Ned (!)",
+ "abusefilter-edit-builder-op-bool-and": "Un(&)",
+ "abusefilter-edit-builder-op-bool-or": "Odda (|)",
+ "abusefilter-edit-builder-group-misc": "Sunschdisches",
+ "abusefilter-edit-builder-misc-in": "hodds inde Zaischekett (in)",
+ "abusefilter-edit-builder-misc-like": "Dud zum Muschda basse (like)",
+ "abusefilter-edit-builder-misc-rlike": "Dud uffde regex basse (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "Ohne uff die Groß- un Kläschraiwung zu achde duds uffde regex basse (irlike)",
+ "abusefilter-edit-builder-misc-contains": "Die reschd Zaischekedd isch inde ling'ge Kedd drin.",
+ "abusefilter-edit-builder-misc-stringlit": "Weadlischi Zaischekedd (\"\")",
+ "abusefilter-edit-builder-misc-tern": "Ternärer Operator (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "Bdingung (if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "Funktionen",
+ "abusefilter-edit-builder-funcs-length": "Leng vunde Zaischefolsch (length)",
+ "abusefilter-edit-builder-funcs-lcase": "Zu Kläbuschdawe änare (lcase)",
+ "abusefilter-edit-builder-funcs-ucase": "Zu Großbuschdawe ännare (ucase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "Vawexlbari Zaische norme (ccnorm)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "Dobbldi Zaische wegnemme (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "Sondazaische / Alli Zaische (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "Norme (norm)",
+ "abusefilter-edit-builder-funcs-count": "Wieofd ä Zaischefolsch X inde Folsch Y voakumme dud (count)",
+ "abusefilter-edit-builder-funcs-rcount": "Wieofd de regex inde Zaischekedd Y voakumme dud (rcount)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "Leazaische wegnemme (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "Sondazaische wegnemme (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "Hods die IP-Adress im oagewene B'raisch? (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "Such inde Zaischekedd noch mehrare Deel vun Kedde (contains_any)",
+ "abusefilter-edit-builder-funcs-substr": "N'Deel vuna Zaischekedd (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "Schdell vum Deel vunde Zaischekedd in (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "Ersedz de Deel vunde Zaischekedd mid (str_replace)",
+ "abusefilter-edit-builder-funcs-rescape": "Escape-Zaischekedd als Buchschdawesimbol inarem regex (rescape)",
+ "abusefilter-edit-builder-funcs-set_var": "Vaänalischi sedze (set_var)",
+ "abusefilter-edit-builder-group-vars": "Vaänalischi",
+ "abusefilter-edit-builder-vars-accountname": "Benudzanoame (baim Erschdelle vunem Benudzakondo)",
+ "abusefilter-edit-builder-vars-timestamp": "Zaidschdembl vunde Änarung im Unix-Foamad",
+ "abusefilter-edit-builder-vars-action": "Agzion",
+ "abusefilter-edit-builder-vars-addedlines": "Zaile inde B'awaidung dzugfieschd",
+ "abusefilter-edit-builder-vars-delta": "Greeßeänarung inde B'awaidung",
+ "abusefilter-edit-builder-vars-diff": "Gsommlde Unaschied vunde B'aweidunge",
+ "abusefilter-edit-builder-vars-newsize": "Naiji Greeß vunde Said",
+ "abusefilter-edit-builder-vars-oldsize": "Aldi Greeß vunde Said",
+ "abusefilter-edit-builder-vars-removedlines": "G'leschde Zaile vunde B'arwaidung",
+ "abusefilter-edit-builder-vars-summary": "Iwabligg iwa die B'arwaidung",
+ "abusefilter-edit-builder-vars-article-id": "Saide-ID",
+ "abusefilter-edit-builder-vars-article-ns": "Noamraum vunde Said",
+ "abusefilter-edit-builder-vars-article-text": "Tidl vunde Said (ohne Noameraum)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Gonse Tidl vunde Said",
+ "abusefilter-edit-builder-vars-article-views": "Saideuffrief",
+ "abusefilter-edit-builder-vars-movedfrom-id": "Saide-ID vunde Qwellsaid",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "Noameraum vunde Qwellsaid",
+ "abusefilter-edit-builder-vars-movedfrom-text": "Tdl vunde Qwellsaid",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "Gonse Tidl vunde Qwellsaid",
+ "abusefilter-edit-builder-vars-movedto-id": "Saide-ID vunde Zielsaid",
+ "abusefilter-edit-builder-vars-movedto-ns": "Noameraum vunde Zielsaid",
+ "abusefilter-edit-builder-vars-movedto-text": "Titl vunde Zielsaid",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "Gonse Tidl vunde Zielsaid",
+ "abusefilter-edit-builder-vars-user-editcount": "Baidrachszehla vum Middawaida",
+ "abusefilter-edit-builder-vars-user-age": "Alda vum Kondo",
+ "abusefilter-edit-builder-vars-user-name": "Nõme vum Kondo",
+ "abusefilter-edit-builder-vars-user-groups": "Grubbe (a imblizide), wude Middawaida Midglied isch",
+ "abusefilter-edit-builder-vars-user-blocked": "Middawaida isch gschbead",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "Zaidpungd, wu die E-Mail-Adress bschdedischd worre isch",
+ "abusefilter-edit-builder-vars-recent-contributors": "Die ledschde ze Schaffa onde Said",
+ "abusefilter-edit-builder-vars-all-links": "Alli externe Ling'gs im naije Tegschd",
+ "abusefilter-edit-builder-vars-added-links": "Alli inde B'awaidung uffgnummene externe Ling'gs",
+ "abusefilter-edit-builder-vars-removed-links": "Alli inde B'awaidung gleschdi externe Ling'gs",
+ "abusefilter-edit-builder-vars-old-text": "Alda Wikitegschd vunde Said, vorm b'awaide",
+ "abusefilter-edit-builder-vars-new-text": "Naije Wikitegschd vunde Said, nochm b'awaide",
+ "abusefilter-edit-builder-vars-new-text-stripped": "Naije Saidetegschd, ohni Tegschdauszaischnung",
+ "abusefilter-edit-builder-vars-new-html": "HTML-Qwelltegschd vunde naije Version",
+ "abusefilter-edit-builder-vars-restrictions-edit": "Äna die Schduuf vum Schudz vunde Said",
+ "abusefilter-edit-builder-vars-restrictions-move": "Äna die Schduuf vum Schudz vunde Said",
+ "abusefilter-edit-builder-vars-restrictions-create": "Schidz die Said voam Easchdelle",
+ "abusefilter-edit-builder-vars-restrictions-upload": "Schidz die Dadai voam Nufflade",
+ "abusefilter-edit-builder-vars-old-text-stripped": "Alde Saidetegschd, ohni Tegschdauszaischnung",
+ "abusefilter-edit-builder-vars-old-links": "Ling'g vunde Said, vorm B'awaide",
+ "abusefilter-edit-builder-vars-old-html": "HTML-Qwelltegschd vunde alde Version",
+ "abusefilter-edit-builder-vars-minor-edit": "B'aweidung isch als Klänischkaid kennzaischned worre",
+ "abusefilter-edit-builder-vars-file-sha1": "SHA1-Hash vunde Daade",
+ "abusefilter-filter-log": "Änarunge vunde Missbraisch-Filda",
+ "abusefilter-history": "Gschischd fade Missbraisch-Filda $1",
+ "abusefilter-history-foruser": "Änarunge vun $1",
+ "abusefilter-history-hidden": "Vaschdeggld",
+ "abusefilter-history-enabled": "Oagschdeld",
+ "abusefilter-history-global": "Global",
+ "abusefilter-history-timestamp": "Zaid",
+ "abusefilter-history-user": "Benudza:",
+ "abusefilter-history-public": "Effendlischi B'schraiwung vum Filda",
+ "abusefilter-history-flags": "Edikedde",
+ "abusefilter-history-filter": "Fildareschle",
+ "abusefilter-history-comments": "Kommenda",
+ "abusefilter-history-actions": "Maßnõhme",
+ "abusefilter-history-backedit": "Zrigg zum oam Filda schaffe",
+ "abusefilter-history-deleted": "Geleschd",
+ "abusefilter-history-filterid": "Filda",
+ "abusefilter-history-select-legend": "Such oienge",
+ "abusefilter-history-select-user": "Benudza:",
+ "abusefilter-history-select-submit": "Oawende",
+ "abusefilter-history-diff": "Änarunge",
+ "abusefilter-history-error-hidden": "De Filda, wu seje wilschd, isch vaschdegld. Du konschd soi Gschischd ned oagugge.",
+ "abusefilter-exception-unexpectedatend": "Unawadedes „$2“ baim Zaische „$1“.",
+ "abusefilter-exception-expectednotfound": "S'Zaische $1 hed uff $2 soi solle, awa ned gfunne worre (gfunne hods awa $3 $4).",
+ "abusefilter-exception-unrecognisedkeyword": "Ubkonndes Schlisslwoad $2 baim Zaische $1.",
+ "abusefilter-exception-unexpectedtoken": "Ueawaadedes Keazl „$3“ (vude Aad $2) baim Zaische $1.",
+ "abusefilter-exception-unclosedstring": "Ned ferdischi Zaischekedd, wu baim Zaische $1 oafonge dud.",
+ "abusefilter-exception-invalidoperator": "Ugildischa Operator „$2“ bain Zaische $1.",
+ "abusefilter-exception-unrecognisedtoken": "Ubkonndes Token $2 baim Zaische $1.",
+ "abusefilter-exception-noparams": "Kä Parameter oan die Fung'gdzion „$2“ baim Zaische $1 iwagewe.",
+ "abusefilter-exception-dividebyzero": "Deele vun $2 duasch Null baim Zaische $1 geed ned.",
+ "abusefilter-exception-unrecognisedvar": "Ubkonndi Vaänalischi $2 baim Zaische $1.",
+ "abusefilter-exception-notenoughargs": "S'sin ned gnuch Agumende oan $2 baim Zaische $1 iwagewe worre.\nS'brauchd $3 {{PLURAL:$3|Agumend|Agumend}}, hod $4 krischd.",
+ "abusefilter-exception-regexfailure": "Fehla im regex „$3“ oam Zaische $1: „$2“",
+ "abusefilter-exception-overridebuiltin": "Iwaschraiwe vunde oigbaude Vaänalischi „$2“ oam Zaische $1 isch vabode.",
+ "abusefilter-exception-outofbounds": "Oafoadarung vum Lischde-Oidrach $2 (Lischdegreeß: $3), wus ned hod, oans Zaische $1.",
+ "abusefilter-exception-notlist": "Oafoadarung vunem Daadefeld-Oidrach ausm Ned-Daadefeld baim Zaische „$1“.",
+ "abusefilter-action-tag": "Edikedd",
+ "abusefilter-action-throttle": "Drossle",
+ "abusefilter-action-warn": "Warne",
+ "abusefilter-action-blockautopromote": "Aischeferdarung schberre",
+ "abusefilter-action-block": "Schberre",
+ "abusefilter-action-degroup": "Ausde Grubbe wegnemme",
+ "abusefilter-action-rangeblock": "B'raisch schberre",
+ "abusefilter-action-disallow": "Vabiede",
+ "abusefilter-revert-title": "Alli Änarunge vum Filda $1 rigg'gängisch mache",
+ "abusefilter-revert-intro": "S'Foamula konn alli Änarunge rigggängisch mache, wu duachde Missbraisch-Filda wesche $1 basiad sin.\nBass uff, wies vawende duschd.",
+ "abusefilter-revert-preview-item": "$1: $2 Hod ä $3 uff $4 gmachd.\nAgzione, wu rigg'gängisch gmachd werren: $5 ($6)",
+ "abusefilter-revert-search-legend": "Agzione vum Missbraisch-Filda wehle, wu rigg'gängisch gmachd werre sollen.",
+ "abusefilter-revert-periodstart": "D'Oafoang:",
+ "abusefilter-revert-periodend": "S'End:",
+ "abusefilter-revert-search": "Agzione wehle:",
+ "abusefilter-revert-filter": "Filda:",
+ "abusefilter-revert-preview-intro": "Une sin die Agzione vum Missbraisch-Filda, wu dodmid rigggängisch gmachd werren.\nGugg druff un drigg doan uff „Bschdedische“, ums auszufiere.",
+ "abusefilter-revert-confirm": "Bschdedische",
+ "abusefilter-revert-success": "Du hoschd alli Agzione rigg'gängisch gmachd, wu vum Missbraisch-Filda noch [[Special:AbuseFilter/$1|Filda $2]] gmachd worre sin.",
+ "abusefilter-revert-reason": "Zriggsedze vun alle Agzione vunde Missbraisch-Filda weschem Filda $1.\nOagewene Grund: $2",
+ "abusefilter-revert-reasonfield": "Bgrindung:",
+ "abusefilter-test": "De Filda oan frijare B'aweidunge teschde",
+ "abusefilter-test-intro": "Midde Said kennen Filda oande ledschde $1 {{PLURAL:$1|Änarung|Änarunge}} iwabriefd werre.\nUmän Filda, wus schun gewe dud, zu laade, gibschd die Filda-ID une ins Feld oi un drigschd uff \"Laade\".",
+ "abusefilter-test-legend": "Filda teschde",
+ "abusefilter-test-load-filter": "Filda-ID laade:",
+ "abusefilter-test-submit": "Teschd",
+ "abusefilter-test-load": "Laade",
+ "abusefilter-test-user": "Änarunge vum Benudza:",
+ "abusefilter-test-period-start": "Änarunge noch:",
+ "abusefilter-test-period-end": "Änarunge dvor:",
+ "abusefilter-test-page": "Änarunge onde Said:",
+ "abusefilter-test-shownegative": "Zaisch Änarunge, wu ned uff de Filda basse dun",
+ "abusefilter-test-syntaxerr": "Doin Filda hodn Sindaxfehla.\nFa waidares gligschd uff „Sindaxbriefung“.",
+ "abusefilter-changeslist-examine": "unasuche",
+ "abusefilter-examine": "Änzelni Änarunge nochgugge",
+ "abusefilter-examine-intro": "Uff de Said konschd die Vaänalische, wude Missbraisch-Filda fa ä Änarung gmachd hod, unasuche un geschede Filda teschde.",
+ "abusefilter-examine-legend": "Wähl Änarunge aus",
+ "abusefilter-examine-diff": "URL zum Versionsunaschied",
+ "abusefilter-examine-user": "Benutzer:",
+ "abusefilter-examine-title": "Tidl vunde Said:",
+ "abusefilter-examine-submit": "Suche",
+ "abusefilter-examine-vars": "Vaänalische, wu fa die Änarung gmachd worre sin",
+ "abusefilter-examine-test": "Die Änarung geschen Filda teschde",
+ "abusefilter-examine-test-button": "Teschd Filda",
+ "abusefilter-examine-match": "De Filda hod die Änarung erkond.",
+ "abusefilter-examine-nomatch": "De Filda passd ned zude Änarung.",
+ "abusefilter-examine-syntaxerror": "De Filda hod ä falschi Sindax",
+ "abusefilter-examine-notfound": "Die Änarung hod ned gfunne werre kenne.",
+ "abusefilter-examine-incompatible": "Die Änarung werd ned vum Missbraisch-Filda unschdidzd",
+ "abusefilter-examine-noresults": "S'hod kä Ergewnis fa doi Suchgreeß",
+ "abusefilter-topnav": "'''Missbraisch-Filda-Nawigadzion'''",
+ "abusefilter-topnav-home": "Hääm",
+ "abusefilter-topnav-test": "Reschle teschde",
+ "abusefilter-topnav-examine": "Vagongene Änarunge unasuche",
+ "abusefilter-topnav-log": "Logbuch fa Missbraisch",
+ "abusefilter-topnav-tools": "Wergzaisch fas Fehlasuche",
+ "abusefilter-topnav-import": "Filda roihole",
+ "abusefilter-log-name": "Logbuch fa Missbraisch-Filda",
+ "abusefilter-log-header": "S'Logbuch zaischd ä Zsommefassung vunde Änarunge onde Filda.\nFa Näjares gugschd baide [[Special:AbuseFilter/history|Lischd]] vunde ledschde Änarunge onde Filda.",
+ "abusefilter-log-noresults": "Kä Ergewnis",
+ "abusefilter-diff-title": "Unnerschied zwische de Versione",
+ "abusefilter-diff-item": "Oidrach",
+ "abusefilter-diff-version": "Ausgab vum $1 {{GENDER:$3|vun}} $2",
+ "abusefilter-diff-info": "Grundleschendi Auskinfd",
+ "abusefilter-diff-pattern": "Fildareschle",
+ "abusefilter-diff-invalid": "Die gwinschd Version konn ned gfunne werre",
+ "abusefilter-diff-backhistory": "Zurigg zude Gschischd vum Filda",
+ "abusefilter-diff-prev": "Eldari Ännarunge",
+ "abusefilter-diff-next": "Naijari Ännarunge",
+ "abusefilter-import-intro": "Du konschd mide Schniddschdell Filda vun oanare Wikis roihole.\nIm Qwellwiki gligschd uff die Schaldflesch „{{int:abusefilter-edit-export}}“ inahalb vun „{{int:abusefilter-edit-tools}}“ .\nKobiaschda de Qwellcode, fiegschn do oi un gliggschd uff die Schaldflesch „{{int:abusefilter-import-submit}}“.",
+ "abusefilter-import-submit": "Daade roihole",
+ "abusefilter-group-default": "Schdondad"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/pl.json b/www/wiki/extensions/AbuseFilter/i18n/pl.json
new file mode 100644
index 00000000..49c4a7a8
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/pl.json
@@ -0,0 +1,485 @@
+{
+ "@metadata": {
+ "authors": [
+ "Airwolf",
+ "Beau",
+ "BeginaFelicysym",
+ "Chrumps",
+ "Clamira",
+ "Derbeth",
+ "Jwitos",
+ "Lazowik",
+ "Leinad",
+ "Maikking",
+ "Matma Rex",
+ "Odder",
+ "Olgak85",
+ "Peter Bowman",
+ "Sovq",
+ "Sp5uhe",
+ "Ty221",
+ "Woytecr",
+ "Pan Cube",
+ "Vengir",
+ "Halibutt",
+ "Openbk",
+ "The Polish",
+ "InternerowyGołąb",
+ "Ankam",
+ "Railfail536"
+ ]
+ },
+ "abusefilter-desc": "Zastosowanie automatycznej heurystyki do edycji",
+ "abusefilter": "Konfiguracja filtru nadużyć",
+ "abuselog": "Rejestr nadużyć",
+ "abusefilter-intro": "Zarządzanie filtrem nadużyć.\nFiltr nadużyć jest to oprogramowanie automatycznego stosowania heurystyki do wszystkich akcji.\nInterfejs pozwala przeglądać listę zdefiniowanych filtrów oraz pozwala na ich modyfikowanie.",
+ "abusefilter-mustbeeditor": "Ze względów bezpieczeństwa z tego interfejsu mogą korzystać wyłącznie użytkownicy posiadający uprawnienia do zmieniania filtrów nadużyć.",
+ "abusefilter-warning": "'''Uwaga:''' Twoje działanie zostało automatycznie zidentyfikowane jako szkodliwe.\nNiewłaściwe działania zostaną szybko wycofane,\na rażące lub powtarzające się niekonstruktywne edytowanie może spowodować zablokowanie Twojego konta lub adresu IP.\nJeśli uważasz, że to, co robisz, ma uzasadnienie, kliknij przycisk „{{int:savearticle}}”, aby zatwierdzić zmiany.\nKrótki opis reguły nadużycia, do której Twoje działanie zostało dopasowane: $1",
+ "abusefilter-disallowed": "Ta akcja została automatycznie zidentyfikowana jako szkodliwa,\nw związku z tym została odrzucona.\nJeśli uważasz, że ta edycja była zasadna, skontaktuj się z administratorem i poinformuj go o zaistniałej sytuacji.\nKrótki opis reguły nadużycia, do której Twoja akcja została dopasowana: $1",
+ "abusefilter-blocked-display": "Ta akcja została automatycznie zidentyfikowana jako szkodliwa\ni zostałeś powstrzymany od jej wykonania.\nPonadto w celu ochrony {{GRAMMAR:MS.lp|{{SITENAME}}}} Twojemu kontu użytkownika i wszystkim powiązanym z nim adresom IP zablokowano możliwość edytowania.\nJeśli nastąpiło to przez pomyłkę, skontaktuj się z administratorem.\nKrótki opis reguły nadużycia, do której Twoja akcja została dopasowana: $1",
+ "abusefilter-degrouped": "Ta akcja została automatycznie zidentyfikowana jako szkodliwa.\nW związku z odrzuceniem akcji, Twojemu kontu zostały odebrane wszystkie uprawnienia, ponieważ istnieje podejrzenie, że ktoś dokonał na nie włamania.\nJeśli uważasz, że nastąpiło to przez pomyłkę, skontaktuj się z biurokratą w celu wyjaśnienia zaistniałej sytuacji, wtedy Twoje uprawnienia będą mogły zostać przywrócone.\nKrótki opis reguły nadużycia, do której Twoja akcja została dopasowana: $1",
+ "abusefilter-autopromote-blocked": "Ta akcja została automatycznie zidentyfikowana jako szkodliwa i została odrzucona.\nPonadto został zastosowany środek bezpieczeństwa w postaci czasowego odebrania automatycznie nadanych uprawnień Twojemu kontu.\nKrótki opis reguły nadużycia, do której Twoja akcja została dopasowana: $1",
+ "abusefilter-blocker": "Filtr nadużyć",
+ "abusefilter-blockreason": "Automatycznie zablokawny przez filtr nadużyć. Opis dopasowanej reguły: $1",
+ "abusefilter-degroupreason": "Uprawnienia automatycznie odebrane przez filtr nadużyć. Opis reguły: $1",
+ "abusefilter-accountreserved": "Ta nazwa konta jest zarezerwowana do użycia przez filtr nadużyć.",
+ "right-abusefilter-modify": "Modyfikowanie filtrów nadużyć",
+ "right-abusefilter-view": "Podgląd filtrów nadużyć",
+ "right-abusefilter-log": "Podgląd rejestru nadużyć",
+ "right-abusefilter-log-detail": "Podgląd szczegółów wpisów w rejestrze nadużyć",
+ "right-abusefilter-private": "Podgląd prywatnych danych w rejestrze nadużyć",
+ "right-abusefilter-private-log": "Podgląd rejestru dostępu do prywatnych szczegółów filtru nadużyć",
+ "right-abusefilter-modify-restricted": "Modyfikowanie filtrów nadużyć z zastrzeżonymi operacjami",
+ "right-abusefilter-revert": "Anulowanie wszystkich zmian wykonanych przez podany filtr nadużyć",
+ "right-abusefilter-view-private": "Przeglądanie filtrów nadużyć oznaczonych jako prywatne",
+ "right-abusefilter-log-private": "Wyświetlanie wpisów do logów filtrów nadużyć oznaczonych jako prywatne",
+ "right-abusefilter-hide-log": "Ukrywanie wpisów w rejestrze nadużyć",
+ "right-abusefilter-hidden-log": "Podgląd ukrytych wpisów w rejestrze nadużyć",
+ "right-abusefilter-modify-global": "Tworzenie lub modyfikowanie globalnych filtrów nadużyć",
+ "action-abusefilter-modify": "modyfikowania filtru nadużyć",
+ "action-abusefilter-view": "przeglądania filtrów nadużyć",
+ "action-abusefilter-log": "przeglądania rejestru nadużyć",
+ "action-abusefilter-log-detail": "przeglądania szczegółów wpisów w rejestrze nadużyć",
+ "action-abusefilter-private": "oglądania prywatnych informacji w rejestrze nadużyć",
+ "action-abusefilter-private-log": "podglądu rejestru dostępu do prywatnych szczegółów filtru nadużyć",
+ "action-abusefilter-modify-restricted": "zmieniania filtrów nadużyć z ograniczonymi akcjami",
+ "action-abusefilter-revert": "wycofania wszystkich zmian wskazanych przez filtr nadużyć",
+ "action-abusefilter-view-private": "wyświetlenia prywatnych filtrów nadużyć",
+ "action-abusefilter-log-private": "wyświetlania rejestrów filtrów nadużyć oznaczonych jako prywatne",
+ "abusefilter-log": "Rejestr filtru nadużyć",
+ "abusefilter-log-summary": "Rejestr zawierający spis wszystkich działań wychwyconych przez filtry.",
+ "abusefilter-log-search": "Szukaj w rejestrze nadużyć",
+ "abusefilter-log-search-user": "Użytkownik:",
+ "abusefilter-log-search-filter": "Identyfikatory filtru (oddzielone znakiem pionowej kreski):",
+ "abusefilter-log-search-title": "Tytuł:",
+ "abusefilter-log-search-wiki": "Wiki:",
+ "abusefilter-log-search-impact": "Wpływ:",
+ "abusefilter-log-search-impact-all": "Wszystkie akcje",
+ "abusefilter-log-search-impact-saved": "Tylko zapisane zmiany",
+ "abusefilter-log-search-impact-not-saved": "Bez zapisanych zmian",
+ "abusefilter-log-search-entries-label": "Widoczność:",
+ "abusefilter-log-search-entries-all": "Wszystkie wpisy",
+ "abusefilter-log-search-entries-hidden": "Tylko ukryte wpisy",
+ "abusefilter-log-search-entries-visible": "Tylko nieukryte wpisy",
+ "abusefilter-log-search-action-taken-label": "Podjęta akcja:",
+ "abusefilter-log-search-action-taken-any": "Dowolna",
+ "abusefilter-log-search-submit": "Szukaj",
+ "abusefilter-log-entry": "$1: $2 {{GENDER:$8|uruchomił|uruchomiła|uruchomił(a)}} filtr nadużyć, {{GENDER:$8|wykonując}} „$3” na $4.\nPodjęte działania: $5;\nOpis filtru: $6",
+ "abusefilter-log-entry-withdiff": "$1: $2 {{GENDER:$8|uruchomił|uruchomiła|uruchomił(a)}} filtr nadużyć, {{GENDER:$8|wykonując}} „$3” na $4.\nPodjęte działania: $5;\nOpis filtru: $6 ($7)",
+ "abusefilter-log-detailedentry-meta": "$1: $2 {{GENDER:$9|uruchomił|uruchomił|uruchomił(a)}} $3, {{GENDER:$9|wykonując}} „$4” na $5.\nPodjęte działania: $6;\nOpis filtru: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "filtr globalny $1",
+ "abusefilter-log-detailedentry-local": "filtr $1",
+ "abusefilter-log-detailslink": "szczegóły",
+ "abusefilter-log-diff": "różn.",
+ "abusefilter-log-hidelink": "zmień widoczność",
+ "abusefilter-log-details-legend": "Szczegóły wpisu w rejestrze $1",
+ "abusefilter-log-details-var": "Zmienna",
+ "abusefilter-log-details-val": "Wartość",
+ "abusefilter-log-details-vars": "Parametry akcji",
+ "abusefilter-log-details-private": "Szczegóły prywatnego rejestru",
+ "abusefilter-log-details-ip": "Użyte adresy IP",
+ "abusefilter-log-details-checkuser": "Sprawdź użytkownika",
+ "abusefilter-log-noactions": "brak",
+ "abusefilter-log-details-diff": "Wprowadzone w edycji zmiany",
+ "abusefilter-log-linkoncontribs": "rejestr nadużyć",
+ "abusefilter-log-linkoncontribs-text": "Wpisy w rejestrze nadużyć dla {{GENDER:$1|tego użytkownika|tej użytkowniczki}}",
+ "abusefilter-log-hidden": "(wpis ukryty)",
+ "abusefilter-log-hidden-implicit": "(ukryto, ponieważ usunięto wersję)",
+ "abusefilter-log-cannot-see-details": "Nie masz uprawnień do przeglądania szczegółów tego wpisu.",
+ "abusefilter-log-cannot-see-private-details": "Nie masz uprawnień do przeglądania prywatnych szczegółów tego wpisu.",
+ "abusefilter-log-nonexistent": "Wpis o podanym identyfikatorze nie istnieje.",
+ "abusefilter-log-details-hidden": "Nie możesz zobaczyć szczegółów tego wpisu, ponieważ jest ukryty przed widokiem publicznym.",
+ "abusefilter-log-private-not-included": "Jeden lub więcej filtrów identyfikatorów określono jako prywatne. Ponieważ nie jest dozwolone, aby wyświetlić szczegóły prywatnych filtrów, filtry te nie zostały przeszukane.",
+ "abusefilter-log-hide-legend": "Ukryj wpis w rejestrze",
+ "abusefilter-log-hide-id": "Identyfikator wpisu w rejestrze",
+ "abusefilter-log-hide-hidden": "Ukryj ten wpis przed widokiem publicznym",
+ "abusefilter-log-hide-reason": "Powód",
+ "abusefilter-log-hide-reason-other": "Inny lub dodatkowy powód:",
+ "abusefilter-log-hide-forbidden": "Nie masz uprawnień do ukrywania\nwpisów w rejestrze nadużyć.",
+ "abusefilter-logentry-suppress": "ukrył [[$1]]",
+ "abusefilter-logentry-unsuppress": "zakończył ukrywanie [[$1]]",
+ "logentry-abusefilter-hit": "$1 {{GENDER:$2|uruchomił|uruchomiła|uruchomił(a)}} $4, {{GENDER:$2|wykonując}} „$5” na $3. Podjęte działania: $6 ($7)",
+ "log-action-filter-abusefilter": "Rodzaj zmiany filtra:",
+ "log-action-filter-abusefilter-create": "Utworzenie nowego filtra",
+ "log-action-filter-abusefilter-modify": "Modyfikacja filtra",
+ "logentry-abusefilterprivatedetails-access": "$1 {{GENDER:$2|uzyskał|uzyskała}} dostęp do prywatnych szczegółów $3",
+ "abusefilterprivatedetails-log-name": "Rejestr dostępu do prywatnych szczegółów filtru nadużyć",
+ "abusefilter-management": "Zarządzanie filtrem nadużyć",
+ "abusefilter-list": "Wszystkie filtry",
+ "abusefilter-list-id": "ID filtru",
+ "abusefilter-list-pattern": "Wzór",
+ "abusefilter-list-status": "Status",
+ "abusefilter-list-public": "Publiczny opis",
+ "abusefilter-list-consequences": "Skutek",
+ "abusefilter-list-visibility": "Widzialność",
+ "abusefilter-list-hitcount": "Licznik wywołań",
+ "abusefilter-list-edit": "Edytuj",
+ "abusefilter-list-details": "Szczegóły",
+ "abusefilter-list-limit": "Na stronie",
+ "abusefilter-list-lastmodified": "Ostatnio zmieniono",
+ "abusefilter-list-group": "Grupa filtru",
+ "abusefilter-hidden": "Prywatny",
+ "abusefilter-unhidden": "Publiczny",
+ "abusefilter-enabled": "Włączony",
+ "abusefilter-deleted": "Usunięty",
+ "abusefilter-disabled": "Wyłączony",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|wywołanie|wywołania|wywołań}}",
+ "abusefilter-new": "Utwórz nowy filtr",
+ "abusefilter-return": "Powrót do zarządzania filtrem",
+ "abusefilter-status-global": "Globalnie",
+ "abusefilter-list-options": "Opcje",
+ "abusefilter-list-options-deleted": "Usunięte filtry:",
+ "abusefilter-list-options-deleted-only": "pokaż wyłącznie usunięte filtry",
+ "abusefilter-list-options-deleted-hide": "ukryj usunięte filtry",
+ "abusefilter-list-options-deleted-show": "dołącz usunięte filtry",
+ "abusefilter-list-options-scope": "Pokaż filtry:",
+ "abusefilter-list-options-scope-local": "Tylko zasady lokalne",
+ "abusefilter-list-options-scope-global": "Tylko zasady globalne",
+ "abusefilter-list-options-scope-all": "Zasady lokalne i globalne",
+ "abusefilter-list-options-disabled": "Wyłączone filtry:",
+ "abusefilter-list-options-hidedisabled": "ukryj wyłączone filtry",
+ "abusefilter-list-options-searchpattern": "Wstaw wzór",
+ "abusefilter-list-options-search-rlike": "Wyrażenie regularne",
+ "abusefilter-list-regexerror": "Wystąpił błąd podczas wyszukiwania: Błąd składni wyrażenia regularnego.",
+ "abusefilter-list-options-submit": "Aktualizuj",
+ "abusefilter-tools-text": "Oto kilka narzędzi, które mogą być przydatne w opracowywaniu i śledzeniu pracy filtrów nadużyć.",
+ "abusefilter-tools-expr": "Tester wyrażeń",
+ "abusefilter-tools-submitexpr": "Testuj",
+ "abusefilter-tools-reautoconfirm": "Przywróć status automatycznego zatwierdzenia",
+ "abusefilter-tools-reautoconfirm-user": "Użytkownik",
+ "abusefilter-tools-reautoconfirm-submit": "Ponowne automatyczne zatwierdzenie",
+ "abusefilter-reautoconfirm-none": "{{GENDER:$1|Ten użytkownik|Ta użytkowniczka}} nie ma zawieszonego statusu automatycznie {{GENDER:$1|zatwierdzonego|zatwierdzonej}}.",
+ "abusefilter-reautoconfirm-notallowed": "Nie masz uprawnień, aby przywrócić statusu automatycznie zatwierdzonego.",
+ "abusefilter-reautoconfirm-done": "Został przywrócony status automatycznego zatwierdzania zmian wykonywanych przez użytkowników",
+ "abusefilter-status": "Z {{PLURAL:$1|ostatniej $1 akcji|ostatnich $1 akcji}}, $2 {{PLURAL:$2|osiągnęła|osiągnęły|osiągnęło}} ($3%) stan limitu $4. $5 {{PLURAL:$5|pasował|pasowały|pasowało}} ($6%) do jednego z obecnie włączonych filtrów.",
+ "abusefilter-edit": "Edytujesz filtr nadużyć",
+ "abusefilter-edit-subtitle": "Edytowanie filtru $1",
+ "abusefilter-edit-subtitle-new": "Tworzenie filtru",
+ "abusefilter-edit-oldwarning": "<strong>Edytujesz starą wersję tego filtru. Statystyki są notowane dla najnowszej wersji filtru. Jeśli zapiszesz zmiany, zostaną nadpisane wszystkie późniejsze wersje od tej, którą edytujesz.</strong> &bull; [[Special:AbuseFilter/history/$2|Powrót do historii filtru]]",
+ "abusefilter-edit-status-label": "Statystyki:",
+ "abusefilter-edit-status": "{{PLURAL:$1|Dla ostatniej $1 akcji|W ostatnich $1 akcjach}} ten filtr pasował do $2 ($3%).",
+ "abusefilter-edit-status-profile": "{{PLURAL:$1|Dla ostatniej $1 akcji|W ostatnich $1 akcjach}} ten filtr pasował do $2 ($3%).\nŚredni czas wykonania wyniósł $4 ms. Wykorzystano $5 {{PLURAL:$5|warunek|warunki|warunków}} z limitu.",
+ "abusefilter-edit-throttled-warning": "'''Uwaga:''' Ten filtr został automatyczne oznaczony jako groźny. Ze względu bezpieczeństwa, te akcje nie zostaną wykonane ($1). Przejrzyj i [[mw:Extension:AbuseFilter/Conditions|zoptymalizuj]] swoje warunki, aby usunąć to ograniczenie",
+ "abusefilter-edit-new": "Nowy filtr",
+ "abusefilter-edit-save": "Zapisz filtr",
+ "abusefilter-edit-id": "ID filtru",
+ "abusefilter-edit-switch-editor": "Przełącz edytor",
+ "abusefilter-edit-description": "Opis:\n:''(widoczny publicznie)''",
+ "abusefilter-edit-field-description": "opis",
+ "abusefilter-edit-group": "Grupa filtru:",
+ "abusefilter-edit-flags": "Flagi:",
+ "abusefilter-edit-enabled": "Włącz ten filtr",
+ "abusefilter-edit-deleted": "Oznacz jako usunięty",
+ "abusefilter-edit-hidden": "Ukryj szczegóły tego filtru przed widokiem publicznym",
+ "abusefilter-edit-global": "Filtr globalny",
+ "abusefilter-edit-rules": "Warunki:",
+ "abusefilter-edit-field-conditions": "warunki",
+ "abusefilter-edit-notes": "Uwagi:",
+ "abusefilter-edit-lastmod": "Ostatnia modyfikacja filtru:",
+ "abusefilter-edit-lastmod-text": "$1 przez $2",
+ "abusefilter-edit-hitcount": "Trafienia filtru:",
+ "abusefilter-edit-consequences": "Akcje do podjęcia w przypadku dopasowania",
+ "abusefilter-edit-action-warn": "Uruchom te akcje po ostrzeżeniu użytkownika",
+ "abusefilter-edit-action-disallow": "Uniemożliwiaj użytkownikowi wykonanie akcji",
+ "abusefilter-edit-action-blockautopromote": "Cofnij użytkownikowi status automatycznie zatwierdzonego",
+ "abusefilter-edit-action-degroup": "Usuń użytkownika ze wszystkich uprzywilejowanych grup",
+ "abusefilter-edit-action-block": "Zablokuj użytkownikowi i/lub adresowi IP możliwość edycji",
+ "abusefilter-edit-action-throttle": "Uruchom akcje tylko wtedy, gdy użytkownik przekroczy poziom limitu",
+ "abusefilter-edit-action-rangeblock": "Zablokuj odpowiedni zakres adresów IP, z którego pochodzi użytkownik",
+ "abusefilter-edit-action-tag": "Oznacz edycję do późniejszego sprawdzenia",
+ "abusefilter-edit-throttle-count": "Liczba dozwolonych akcji",
+ "abusefilter-edit-throttle-period": "Okres",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|sekunda|sekundy|sekund}}",
+ "abusefilter-edit-throttle-groups": "Filtruj grupy\n:''(po jednej na linię, rozdzielone przecinkami)''",
+ "abusefilter-edit-warn-message": "System wiadomości używanych do ostrzegania:",
+ "abusefilter-edit-warn-other": "Inny komunikat",
+ "abusefilter-edit-warn-other-label": "Nazwa strony innego komunikatu:\n:''(bez przedrostka MediaWiki)''",
+ "abusefilter-edit-warn-actions": "Operacje:",
+ "abusefilter-edit-warn-preview": "Podgląd wybranego komunikatu",
+ "abusefilter-edit-warn-edit": "Utwórz lub edytuj wybrany komunikat",
+ "abusefilter-edit-tag-tag": "[[Special:Tags|Znaczniki]] do zastosowania (po jednym w wierszu):",
+ "abusefilter-edit-block-anon-durations": "Czas trwania blokady dla użytkowników niezalogowanych:",
+ "abusefilter-edit-block-user-durations": "Czas trwania blokady dla użytkowników zarejestrowanych:",
+ "abusefilter-block-anon": "użytkownicy niezalogowani",
+ "abusefilter-block-user": "zarejestrowani użytkownicy",
+ "abusefilter-edit-denied": "Nie możesz zobaczyć szczegółów tego filtru, ponieważ jest ukryty przed widokiem publicznym.",
+ "abusefilter-edit-main": "Ustawienia filtru",
+ "abusefilter-edit-done-subtitle": "Filtr został zmodyfikowany",
+ "abusefilter-edit-done": "[[Special:AbuseFilter/history/$1/diff/prev/$2|Twoje zmiany]] w [[Special:AbuseFilter/$1|filtrze $3]] zostały zapisane.",
+ "abusefilter-edit-badsyntax": "W edytowanym przez Ciebie filtrze wystąpił błąd składni. Parser zwrócił: <pre>$1</pre>",
+ "abusefilter-edit-restricted": "Nie możesz zmienić ustawień tego filtru, ponieważ zawiera on jedną lub więcej zastrzeżoną operację. Zwróć się do użytkownika z właściwymi uprawnieniami o wykonanie tej zmiany.",
+ "abusefilter-edit-viewhistory": "Zobacz historię tego filtru",
+ "abusefilter-edit-history": "Historia",
+ "abusefilter-edit-check": "Sprawdź składnię",
+ "abusefilter-edit-badfilter": "Podany filtr nie istnieje",
+ "abusefilter-edit-revert": "Anuluj działania podjęte przez ten filtr",
+ "abusefilter-edit-tools": "Narzędzia",
+ "abusefilter-edit-test-link": "Sprawdź ten filtr na ostatnich zmianach",
+ "abusefilter-edit-export": "Eksportuj filtr do innej wiki",
+ "abusefilter-edit-syntaxok": "Nie wykryto błędów składni.",
+ "abusefilter-edit-syntaxerr": "Wykryto błąd składni – $1",
+ "abusefilter-edit-bad-tags": "Co najmniej jedno z oznaczeń jest niepoprawne.\nOznaczenia powinny być krótkie i nie powinny zawierać znaków specjalnych, oraz nie powinny być wykorzystywane przez inne oprogramowanie. Spróbuj wybierać inne oznaczenie.",
+ "abusefilter-edit-notallowed": "Nie posiadasz uprawnienia do tworzenia lub edytowania filtrów nadużyć",
+ "abusefilter-edit-notallowed-global": "Nie posiadasz uprawnienia do tworzenia lub edytowania globalnych filtrów nadużyć",
+ "abusefilter-edit-notallowed-global-custom-msg": "Niestandardowe komunikaty ostrzegawcze nie są obsługiwane przez filtry globalne",
+ "abusefilter-edit-builder-select": "Wybierz opcję, aby wkleić ją na pozycji kursora",
+ "abusefilter-edit-builder-group-op-arithmetic": "Operatory arytmetyczne",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Dodawanie (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Odejmowanie (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Mnożenie (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Dzielenie (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Modulo (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Potęga (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Operatory porównania",
+ "abusefilter-edit-builder-op-comparison-equal": "Równoważny (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Różny od (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "Mniejszy niż (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Większy niż (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Mniejszy niż lub równy (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Większy niż lub równy (>=)",
+ "abusefilter-edit-builder-group-op-bool": "Operatory boolowskie",
+ "abusefilter-edit-builder-op-bool-not": "Negacja (!)",
+ "abusefilter-edit-builder-op-bool-and": "Koniunkcja (&)",
+ "abusefilter-edit-builder-op-bool-or": "Alternatywa (|)",
+ "abusefilter-edit-builder-op-bool-xor": "Alternatywa wykluczająca (^)",
+ "abusefilter-edit-builder-group-misc": "Różne",
+ "abusefilter-edit-builder-misc-in": "zawiera ciąg znaków (in)",
+ "abusefilter-edit-builder-misc-like": "Dopasowane wzorce (like)",
+ "abusefilter-edit-builder-misc-rlike": "Dopasowane wzorce wyrażenia regularnego (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "Pasujące do wyrażenia regularnego, wielkość liter (irlike)",
+ "abusefilter-edit-builder-misc-contains": "Lewy ciąg znaków zawiera prawy (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "Łańcuch znaków (\"\")",
+ "abusefilter-edit-builder-misc-tern": "Operator warunkowy (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "Warunkowo (if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "Funkcje",
+ "abusefilter-edit-builder-funcs-length": "Długość ciągu znaków (length)",
+ "abusefilter-edit-builder-funcs-lcase": "Na małe litery (lcase)",
+ "abusefilter-edit-builder-funcs-ucase": "Na duże litery (ucase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "Normalizacja kłopotliwych znaków (ccnorm)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "Usuwanie powtarzających się znaków (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "Znaki specjalne / suma znaków (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "Normalizacja (norm)",
+ "abusefilter-edit-builder-funcs-count": "Ile razy ciąg znaków X wystąpił w ciągu znaków Y (count)",
+ "abusefilter-edit-builder-funcs-rcount": "Liczba wystąpień wyrażenia regularnego X w łańcuchu Y (rcount)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "Usuń białe znaki (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "Usuń znaki specjalne (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "Czy IP jest w zakresie? (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "Przeszukaj ciąg znaków w poszukiwaniu wielu podciągów (contains_any)",
+ "abusefilter-edit-builder-funcs-substr": "Fragment ciągu znaków (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "Pozycja podciągu znaków w ciągu (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "Zastąp fragment ciągu znaków innym ciągiem (str_replace)",
+ "abusefilter-edit-builder-funcs-rescape": "Ciąg znaków ucieczki jako literał w wyrażeniu regularnym (rescape)",
+ "abusefilter-edit-builder-funcs-set_var": "Ustaw zmienną (set_var)",
+ "abusefilter-edit-builder-group-vars": "Zmienne",
+ "abusefilter-edit-builder-vars-accountname": "Nazwa konta (on account creation)",
+ "abusefilter-edit-builder-vars-timestamp": "Unixowy znacznik czasu „timestamp” dla zmiany",
+ "abusefilter-edit-builder-vars-action": "Akcja",
+ "abusefilter-edit-builder-vars-addedlines": "Linie dodane podczas edycji",
+ "abusefilter-edit-builder-vars-delta": "Rozmiar zmiany podczas edycji",
+ "abusefilter-edit-builder-vars-diff": "Diff wszystkich zmian dokonanych podczas edycji",
+ "abusefilter-edit-builder-vars-newsize": "Nowy rozmiar strony",
+ "abusefilter-edit-builder-vars-oldsize": "Stary rozmiar strony",
+ "abusefilter-edit-builder-vars-old-content-model": "Stary model zawartości",
+ "abusefilter-edit-builder-vars-new-content-model": "Nowy model zawartości",
+ "abusefilter-edit-builder-vars-removedlines": "Linie usunięte podczas edycji",
+ "abusefilter-edit-builder-vars-summary": "Opis zmian",
+ "abusefilter-edit-builder-vars-article-id": "Identyfikator strony",
+ "abusefilter-edit-builder-vars-article-ns": "Przestrzeń nazw strony",
+ "abusefilter-edit-builder-vars-article-text": "Tytuł strony (bez przestrzeni nazw)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Pełny tytuł strony",
+ "abusefilter-edit-builder-vars-article-views": "Liczba odwiedzin strony",
+ "abusefilter-edit-builder-vars-movedfrom-id": "Identyfikator źródła przenoszonej strony",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "Przestrzeń nazw źródła przenoszonej strony",
+ "abusefilter-edit-builder-vars-movedfrom-text": "Tytuł źródła przenoszonej strony",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "Pełny tytuł źródła przenoszonej strony",
+ "abusefilter-edit-builder-vars-movedto-id": "ID przeznaczenia przenoszonej strony",
+ "abusefilter-edit-builder-vars-movedto-ns": "Przestrzeń nazw przeznaczenia przenoszonej strony",
+ "abusefilter-edit-builder-vars-movedto-text": "Tytuł przeznaczenia przenoszonej strony",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "Pełny tytuł przeznaczenia przenoszonej strony",
+ "abusefilter-edit-builder-vars-user-editcount": "Liczba edycji użytkownika",
+ "abusefilter-edit-builder-vars-user-age": "Wiek konta użytkownika",
+ "abusefilter-edit-builder-vars-user-name": "Nazwa konta użytkownika",
+ "abusefilter-edit-builder-vars-user-groups": "Grupy (w tym ukryte), do których należy użytkownik",
+ "abusefilter-edit-builder-vars-user-rights": "Uprawnienia, które ma użytkownik",
+ "abusefilter-edit-builder-vars-user-blocked": "Czy użytkownik jest zablokowany",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "Czas zatwierdzenia adresu e‐mail",
+ "abusefilter-edit-builder-vars-recent-contributors": "Ostatnie dziesięć osób edytujących stronę",
+ "abusefilter-edit-builder-vars-first-contributor": "Pierwszy edytor strony",
+ "abusefilter-edit-builder-vars-all-links": "Wszystkie linki zewnętrzne w nowych tekstach",
+ "abusefilter-edit-builder-vars-added-links": "Wszystkie linki zewnętrzne dodane w edycji",
+ "abusefilter-edit-builder-vars-removed-links": "Wszystkie linki zewnętrzne usunięte w edycji",
+ "abusefilter-edit-builder-vars-old-text": "Stara treść strony w formacie wiki, przed modyfikacją",
+ "abusefilter-edit-builder-vars-new-text": "Nowa treść strony w formacie wiki, po modyfikacji",
+ "abusefilter-edit-builder-vars-new-pst": "Nowa strona Wikitekstu, wstępnie zapisane przekształcone",
+ "abusefilter-edit-builder-vars-new-text-stripped": "Nowa treść strony pozbawiona wszystkich znaczników",
+ "abusefilter-edit-builder-vars-new-html": "Sformatowane źródło HTML nowej wersji",
+ "abusefilter-edit-builder-vars-restrictions-edit": "Stopień zabezpieczenia strony przed edycją",
+ "abusefilter-edit-builder-vars-restrictions-move": "Stopień zabezpieczenia strony przed przeniesieniem",
+ "abusefilter-edit-builder-vars-restrictions-create": "Stopień zabezpieczenia strony przed utworzeniem",
+ "abusefilter-edit-builder-vars-restrictions-upload": "Stopień zabezpieczenia pliku przed przesłaniem",
+ "abusefilter-edit-builder-vars-old-text-stripped": "Stara treść strony pozbawiona wszystkich znaczników",
+ "abusefilter-edit-builder-vars-old-links": "Łącza na stronie przed edycją",
+ "abusefilter-edit-builder-vars-old-html": "Stara treść strony w formacie wiki przetworzona na HTML",
+ "abusefilter-edit-builder-vars-minor-edit": "Czy edycja oznaczona jest jako drobna",
+ "abusefilter-edit-builder-vars-file-sha1": "Skrót SHA1 zawartości pliku",
+ "abusefilter-edit-builder-vars-file-size": "Rozmiar pliku w bajtach",
+ "abusefilter-edit-builder-vars-file-mime": "Typ MIME pliku",
+ "abusefilter-edit-builder-vars-file-mediatype": "Typ pliku multimedialnego",
+ "abusefilter-edit-builder-vars-file-width": "Szerokość pliku w pikselach",
+ "abusefilter-edit-builder-vars-file-height": "Wysokość pliku w pikselach",
+ "abusefilter-edit-builder-vars-file-bits-per-channel": "Liczba bitów na kanał kolorów pliku",
+ "abusefilter-edit-block-options": "Opcje blokowania:",
+ "abusefilter-filter-log": "Ostatnie zmiany ustawień filtru",
+ "abusefilter-history": "Historia zmian dla filtru nr $1",
+ "abusefilter-history-foruser": "Zmiany wykonane przez $1",
+ "abusefilter-history-hidden": "Ukryte",
+ "abusefilter-history-enabled": "włączona",
+ "abusefilter-history-global": "Globalnie",
+ "abusefilter-history-timestamp": "Kiedy",
+ "abusefilter-history-user": "Użytkownik",
+ "abusefilter-history-public": "Publiczny opis filtru",
+ "abusefilter-history-flags": "Flagi",
+ "abusefilter-history-filter": "Reguły filtru",
+ "abusefilter-history-comments": "Komentarze",
+ "abusefilter-history-actions": "Akcje",
+ "abusefilter-history-backedit": "Powrót do edytora filtrów",
+ "abusefilter-history-deleted": "Usunięte",
+ "abusefilter-history-filterid": "Filtr",
+ "abusefilter-history-select-legend": "Zawęź kryteria wyszukiwania",
+ "abusefilter-history-select-user": "Użytkownik",
+ "abusefilter-history-select-filter": "ID filtru:",
+ "abusefilter-history-select-submit": "Wykonaj",
+ "abusefilter-history-diff": "Zmiany",
+ "abusefilter-history-error-hidden": "Nie można wyświetlić historii, ponieważ wybrany filtr jest ukryty.",
+ "abusefilter-exception-unexpectedatend": "Nieoczekiwane „$2”, znak $1.",
+ "abusefilter-exception-expectednotfound": "Bezskutecznie oczekiwano $2, znak nr $1 (odnaleziono natomiast $3 $4)",
+ "abusefilter-exception-unrecognisedkeyword": "Nierozpoznane słowo $2, znak nr $1.",
+ "abusefilter-exception-unexpectedtoken": "Nieoczekiwany symbol „$3” (typu $2), znak nr $1.",
+ "abusefilter-exception-unclosedstring": "Niezakończony ciąg znaków rozpoczynający się znakiem nr $1.",
+ "abusefilter-exception-invalidoperator": "Nieprawidłowy operator „$2”, znak nr $1.",
+ "abusefilter-exception-unrecognisedtoken": "Nierozpoznany symbol „$2”, znak nr $1.",
+ "abusefilter-exception-noparams": "Brak parametrów w wywołaniu funkcji „$2”, znak nr $1.",
+ "abusefilter-exception-dividebyzero": "Próba dzielenia $2 przez zero, znak nr $1.",
+ "abusefilter-exception-unrecognisedvar": "Nierozpoznana zmienna $2, znak nr $1.",
+ "abusefilter-exception-notenoughargs": "Zbyt mało argumentów dla funkcji $2, wywołanie – znak $1.\nOczekiwano $3 {{PLURAL:$3|argumentu|argumentów}}, użyto $4",
+ "abusefilter-exception-regexfailure": "Błąd w wyrażeniu regularnym „$3” na znaku $1 – „$2”",
+ "abusefilter-exception-overridebuiltin": "Nielegalne nadpisanie wbudowanej zmiennej „$2” – znak $1.",
+ "abusefilter-exception-outofbounds": "Żądanie nieistniejącego elementu listy $2 (rozmiar listy = $3) – znak $1.",
+ "abusefilter-exception-notlist": "Żądanie elementu tablicy od zmiennej nietablicowej – znak $1.",
+ "abusefilter-action-tag": "Znacznik",
+ "abusefilter-action-throttle": "Ogranicz",
+ "abusefilter-action-warn": "Ostrzeżenie",
+ "abusefilter-action-blockautopromote": "Blokuj automatyczne odrzucanie",
+ "abusefilter-action-block": "Blokuj",
+ "abusefilter-action-degroup": "Usuń z grup",
+ "abusefilter-action-rangeblock": "Blokuj zakres",
+ "abusefilter-action-disallow": "Odrzuć",
+ "abusefilter-revert-title": "Anuluj wszystkie zmiany zrobione przez filtr $1",
+ "abusefilter-revert-intro": "Formularz pozwala anulować wszystkie zmiany zrobione przez filtr nadużyć $1.\nNależy ostrożnie korzystać z tego narzędzia.",
+ "abusefilter-revert-preview-item": "$1: $2 {{GENDER:$7|wykonał|wykonała|wykonał(a)}} $3 na $4.\nDziałania, które zostaną anulowane: $5 ($6)",
+ "abusefilter-revert-search-legend": "Wybierz działania filtru nadużyć, które mają zostać anulowane",
+ "abusefilter-revert-periodstart": "Termin rozpoczęcia",
+ "abusefilter-revert-periodend": "Termin zakończenia",
+ "abusefilter-revert-search": "Wybierz działania",
+ "abusefilter-revert-filter": "Filtr",
+ "abusefilter-revert-preview-intro": "Poniżej znajdują się działania podjęte przez filtr nadużyć, które zostaną wycofane.\nNależy dokładnie je sprawdzić, a następnie kliknąć „{{int:abusefilter-revert-confirm}}”, aby potwierdzić decyzję.",
+ "abusefilter-revert-confirm": "Potwierdź",
+ "abusefilter-revert-success": "Anulowałeś wszystkie działania podjęte przez filtr nadużyć – [[Special:AbuseFilter/$1|filtr $2]].",
+ "abusefilter-revert-reason": "Automatyczne anulowanie wszystkich działań podjętych przez filtr nadużyć – filtr $1.\nPowód: $2",
+ "abusefilter-revert-reasonfield": "Powód:",
+ "abusefilter-test": "Sprawdź działanie filtru na poprzedniej edycji",
+ "abusefilter-test-intro": "Strona pozwala na sprawdzenie wybranego w polu poniżej filtru przy zastosowaniu go do {{PLURAL:$1|ostatniej edycji|ostatnich $1 edycji}}.\nAby załadować istniejący filtr, wprowadź jego ID do pola znajdującego się poniżej pola tekstowego i kliknij przycisk „{{int:abusefilter-test-load}}”.",
+ "abusefilter-test-legend": "Testowanie filtru",
+ "abusefilter-test-load-filter": "Załaduj filtr z identyfikatorem",
+ "abusefilter-test-submit": "Testuj",
+ "abusefilter-test-load": "Załaduj",
+ "abusefilter-test-user": "Zmiany wykonane przez użytkownika",
+ "abusefilter-test-period-start": "Zmiany wykonane później niż",
+ "abusefilter-test-period-end": "Zmiany wykonane wcześniej niż",
+ "abusefilter-test-page": "Zmiany na stronie:",
+ "abusefilter-test-shownegative": "Pokaż zmiany, które nie pasują do filtru",
+ "abusefilter-test-syntaxerr": "Wykryto błąd składni we wprowadzonym filtrze.\nPełne wyjaśnienie dostępne jest po kliknięciu przycisku „{{int:abusefilter-edit-check}}”.",
+ "abusefilter-test-badtitle": "Wprowadzony przez Ciebie tytuł strony jest nieprawidłowy. Zawiera jeden lub więcej znaków, które nie mogą być używane w tytułach.",
+ "abusefilter-changeslist-examine": "sprawdź",
+ "abusefilter-examine": "Sprawdź pojedyncze zmiany",
+ "abusefilter-examine-intro": "Strona pozwala sprawdzić zmienne utworzone przez filtr nadużyć dla każdej zmiany oraz sprawdzić ją przy pomocy filtrów.",
+ "abusefilter-examine-legend": "Wybierz zmiany",
+ "abusefilter-examine-diff": "Adres URL różnic:",
+ "abusefilter-examine-user": "Użytkownik:",
+ "abusefilter-examine-title": "Tytuł strony:",
+ "abusefilter-examine-submit": "Szukaj",
+ "abusefilter-examine-vars": "Zmienne utworzone dla tej zmiany",
+ "abusefilter-examine-test": "Sprawdź tę zmianę przepuszczając ją poprzez filtr",
+ "abusefilter-examine-test-button": "Testuj filtr",
+ "abusefilter-examine-match": "Filtr rozpoznał tę zmianę.",
+ "abusefilter-examine-nomatch": "Filtr nie rozpoznał tej zmiany.",
+ "abusefilter-examine-syntaxerror": "Filtr ma nieprawidłową składnię",
+ "abusefilter-examine-notfound": "Żądana zmiana nie została odnaleziona.",
+ "abusefilter-examine-incompatible": "Żądana zmiana nie jest obsługiwana przez filtr nadużyć",
+ "abusefilter-examine-noresults": "Nie znaleziono wyników dla zadanych przez Ciebie parametrów wyszukiwania.",
+ "abusefilter-topnav": "'''Nawigacja po filtrze nadużyć'''",
+ "abusefilter-topnav-home": "Start",
+ "abusefilter-topnav-test": "Testowanie wsadowe",
+ "abusefilter-topnav-examine": "Skontroluj dawniejsze edycje",
+ "abusefilter-topnav-log": "Rejestr nadużyć",
+ "abusefilter-topnav-tools": "Narzędzia śledzenia",
+ "abusefilter-topnav-import": "Import filtru",
+ "abusefilter-log-name": "Rejestr filtru nadużyć",
+ "abusefilter-log-header": "Rejestr zawiera zestawienie zmian wprowadzanych w filtrach.\nPełne informacje odnajdziesz w [[Special:AbuseFilter/history|rejestrze]] ostatnich zmian w filtrach.",
+ "abusefilter-logentry-create": "$1 {{GENDER:$2|utworzył|utworzyła}} $4 ($5)",
+ "abusefilter-logentry-modify": "$1 {{GENDER:$2|zmienił|zmieniła}} $4 ($5)",
+ "abusefilter-log-noresults": "Brak wyników",
+ "abusefilter-diff-title": "Różnice pomiędzy wersjami",
+ "abusefilter-diff-item": "Przedmiot",
+ "abusefilter-diff-version": "Wersja z $1 autorstwa {{GENDER:$3|użytkownika|użytkowniczki}} $2",
+ "abusefilter-diff-info": "Podstawowe informacje",
+ "abusefilter-diff-pattern": "Warunki filtru",
+ "abusefilter-diff-invalid": "Nie można pobrać żądanej wersji",
+ "abusefilter-diff-backhistory": "Powrót do historii filtru",
+ "abusefilter-diff-prev": "Poprzednia zmiana",
+ "abusefilter-diff-next": "Następna zmiana",
+ "abusefilter-import-intro": "Ten interfejs służy do importowania filtrów z innych wiki.\nW trybie edycji filtru kliknij w źródłowej wiki „{{int:abusefilter-edit-export}}” przy nagłówku „{{int:abusefilter-edit-tools}}”.\nSkopiuj zawartość pola tekstowego, które się pojawi, i wklej ją do poniższego pola tekstowego, a następnie kliknij przycisk „{{int:abusefilter-import-submit}}”.",
+ "abusefilter-import-submit": "Importuj dane",
+ "abusefilter-group-default": "Domyślne",
+ "abusefilter-http-error": "Wystąpił błąd HTTP: $1.",
+ "abusefilter-log-details-id": "ID wpisu",
+ "abusefilter-noreason": "Uwaga: aby podejrzeć poufne szczegóły tego rejestru, musisz podać powód.",
+ "abusefilter-log-ip-not-available": "Niedostępne",
+ "apihelp-abusefilterchecksyntax-description": "Sprawdź składnię filtra AbuseFilter.",
+ "apihelp-abusefilterevalexpression-param-expression": "Wyrażenie do sprawdzenia.",
+ "apihelp-abusefilterunblockautopromote-param-user": "Nazwa użytkownika, którego chcesz odblokować.",
+ "apihelp-query+abusefilters-description": "Pokaż szczegóły filtrów nadużyć.",
+ "apihelp-query+abusefilters-param-show": "Pokaż tylko filtry, które spełniają te kryteria.",
+ "apihelp-query+abusefilters-param-limit": "Maksymalna liczba filtrów do wyświetlenia.",
+ "apihelp-query+abusefilters-example-1": "Lista uruchomionych filtrów publicznych",
+ "apihelp-query+abusefilters-example-2": "Pokaż szczegóły dotyczące filtrów",
+ "apihelp-query+abuselog-description": "Pokaż zdarzenia wyłapane przez jeden z filtrów nadużyć.",
+ "apihelp-query+abuselog-param-start": "Znacznik czasu, od którego zacząć wyliczanie.",
+ "apihelp-query+abuselog-param-end": "Znacznik czasu, na którym zakończyć wyliczanie.",
+ "apihelp-query+abuselog-param-prop": "Jakie właściwości uzyskać.",
+ "apihelp-query+abuselog-example-1": "Pokaż ostatnie wpisy w rejestrze",
+ "apihelp-query+abuselog-example-2": "Pokaż ostatnie wpisy w dzienniku [[API]]",
+ "apierror-abusefilter-canttest": "Nie masz uprawnień do testowania filtrów nadużyć.",
+ "apierror-abusefilter-cantcheck": "Nie masz uprawnień do sprawdzania składni filtru nadużyć.",
+ "apierror-abusefilter-badsyntax": "Filtr ma nieprawidłową składnię."
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/pms.json b/www/wiki/extensions/AbuseFilter/i18n/pms.json
new file mode 100644
index 00000000..c9735f07
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/pms.json
@@ -0,0 +1,384 @@
+{
+ "@metadata": {
+ "authors": [
+ "Borichèt",
+ "Dragonòt",
+ "McDutchie",
+ "Matma Rex"
+ ]
+ },
+ "abusefilter-desc": "A àplica dj'eurìstiche automàtiche a le modìfiche",
+ "abusefilter": "Configurassion dël fìlter contra j'abus",
+ "abuselog": "Registr ëd j'abus",
+ "abusefilter-intro": "Bin ëvnù ant l'antërfassa ëd gestion dij fìlter contra j'abus.\nËl fìlter contra j'abus a l'é un mecanism ëd programa automatisà ch'a àplica dj'eurìstiche automàtiche a tute j'assion.\nCosta antërfassa a smon na lista ëd fìlter definì e a përmet ëd modificheje.",
+ "abusefilter-mustbeeditor": "Për dle rason ëd sigurëssa, mach j'utent con ël drit ëd modifiché ij fìlter contra j'abus a peulo dovré s'antërfassa.",
+ "abusefilter-warning": "'''Atension''': Costa assion a l'è stàita indentificà an automàtich coma danosa.\nLe modificassion nen costrutive a saran tòst anulà,\ne le modìfiche nen costrutive esagerà o arpetùe a mneran al blocagi ëd sò cont o soa adrëssa IP.\nS'a chërd che soa assion a l'é costrutiva, a peul torna mandela për confermela.\nNa curta descrission ëd la régola dj'abus anté ch'a l'é cascà soa modìfica a l'é: $1",
+ "abusefilter-disallowed": "Costa assion a l'é stàita identificà an automàtich coma danosa, e donca ampedìa.\nS'a chërd che soa assion a l'era costrutiva, ch'a buta al corent n'aministrator ëd lòn ch'a sërcava ëd fé.\nNa curta descrission ëd la régola dj'abus anté ch'a l'é cascà soa assion a l'é: $1",
+ "abusefilter-blocked-display": "Cost'assion a l'é stàita identificà automaticament com pericolosa,\ne a l'ha pa podula fé.\nAn pi, për protege {{SITENAME}}, sò cont utent e tute j'adrësse IP associà a son ëstàite blocà dal modifiché.\nSe sossì a l'é n'eror, për piasì ch'a contata n'aministrator.\nNa curta descrission ëd la régola ëd sicurëssa che soa assion a l'ha violà a l'é: $1",
+ "abusefilter-degrouped": "Cost'assion a l'é stàita identificà an automàtich com pericolosa.\nËd conseguensa, a l'é stàita proibìa, e, da già che sò cont a l'é sospetà d'esse mës-scià a sòn, tùit ij drit a son ëstàit revocà.\nS'a pensa che sòn a sia stàit n'eror, për piasì ch'a contata un mangiapapé con na spiegassion dë st'assion, e ij sò drit a podrìo esse ripristinà.\nNa curta descrission ëd la régola ëd sicurëssa che soa assion a l'ha violà a l'é: $1",
+ "abusefilter-autopromote-blocked": "Cost'assion a l'é stàita identificà com pericolosa, e antlora a l'é stàita blocà.\nAn pi, com misura ëd sicurëssa, chèich priviligi dàit normalment ai cont stabilì a son ëstàit temporaniament revocà a sò cont.\nNa curta descrission ëd la régola ëd sicurëssa che soa assion a l'ha violà a l'é: $1",
+ "abusefilter-blocker": "Filtr ëd sicurëssa",
+ "abusefilter-blockreason": "Blocà autmaticament da un filtr ëd sicurëssa.\nDescrission ëd la régola violà: $1",
+ "abusefilter-degroupreason": "Drit gavà automaticament dal filtr ëd sicurëssa.\nDescrission ëd la régola: $1",
+ "abusefilter-accountreserved": "Ës nòm ëd cont a l'é riservà al filtr ëd sicurëssa.",
+ "right-abusefilter-modify": "Modìfica ij filtr ëd sicurëssa",
+ "right-abusefilter-view": "Varda ij filtr ëd sicurëssa",
+ "right-abusefilter-log": "varda ël registr ëd sicurëssa",
+ "right-abusefilter-log-detail": "varda le vos detajà ëd sicurëssa",
+ "right-abusefilter-private": "varda ij dat privà ant ël registr ëd sicurëssa",
+ "right-abusefilter-modify-restricted": "Modifiché ij filtr contra j'abus con assion limità",
+ "right-abusefilter-revert": "Buta andré tùit ij cambi da un dàit filtr ëd sicurëssa",
+ "right-abusefilter-view-private": "varda ij filtr ëd sicurëssa marcà com privà",
+ "right-abusefilter-log-private": "Vardé le vos ëd registr dij filtr d'abus marcà com privà",
+ "right-abusefilter-hide-log": "Stërmé dle vos ant ël registr ëd j'abus",
+ "right-abusefilter-hidden-log": "varda le vos stërmà dël registr ëd sicurëssa",
+ "right-abusefilter-modify-global": "Crea o modìfica ij filtr globaj contra l'abus",
+ "action-abusefilter-modify": "modìfica ij filtr ëd sicurëssa",
+ "action-abusefilter-view": "varda ij filtr ëd sicurëssa",
+ "action-abusefilter-log": "varda ël registr ëd sicurëssa",
+ "action-abusefilter-log-detail": "varda le vos detajà dël registr ëd sicurëssa",
+ "action-abusefilter-private": "varda ij dat privà ant ël registr ëd sicurëssa",
+ "action-abusefilter-modify-restricted": "modifiché ij filtr contra j'abus con assion limità",
+ "action-abusefilter-revert": "buta andré tùit ij cambi da un dàit filtr ëd sicurëssa",
+ "action-abusefilter-view-private": "varda ij filtr ëd sicurëssa marcà com privà",
+ "abusefilter-log": "Registr dij filtr ëd sicurëssa",
+ "abusefilter-log-summary": "Ës registr a smon na lista ëd tute j'assion andividuà daj filtr.",
+ "abusefilter-log-search": "Sërché ant ël registr ëd j'abus",
+ "abusefilter-log-search-user": "Utent:",
+ "abusefilter-log-search-filter": "Identificativ dël filtr:",
+ "abusefilter-log-search-title": "Tìtol:",
+ "abusefilter-log-search-wiki": "Wiki:",
+ "abusefilter-log-search-submit": "Sërca",
+ "abusefilter-log-entry": "$1: $2 a l'ha ativà un fìlter contra j'abus, fasend l'assion \"$3\" su $4.\nAssion fàite: $5;\nDescrission dël filtr: $6",
+ "abusefilter-log-detailedentry-meta": "$1: $2 a l'ha ativà $3, fasend l'assion \"$4\" su $5.\nAssion fàite: $6;\nDescrission dël filtr: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "filtr global $1",
+ "abusefilter-log-detailedentry-local": "filtr $1",
+ "abusefilter-log-detailslink": "detaj",
+ "abusefilter-log-diff": "dif.",
+ "abusefilter-log-hidelink": "rangé la visibilità",
+ "abusefilter-log-details-legend": "Detaj për la vos $1 dël registr",
+ "abusefilter-log-details-var": "Variàbil",
+ "abusefilter-log-details-val": "Valor",
+ "abusefilter-log-details-vars": "Paràmetr dl'assion",
+ "abusefilter-log-details-private": "Dat privà",
+ "abusefilter-log-details-ip": "Adrëssa IP original",
+ "abusefilter-log-noactions": "gnun",
+ "abusefilter-log-details-diff": "Cangiament fàit ant la modìfica",
+ "abusefilter-log-linkoncontribs": "registr ëd j'abus",
+ "abusefilter-log-linkoncontribs-text": "Registr ëd sicurëssa për st'utent",
+ "abusefilter-log-hidden": "(vos stërmà)",
+ "abusefilter-log-hidden-implicit": "(stërmà përchè la revision a l'é stàita scancelà)",
+ "abusefilter-log-cannot-see-details": "It l'has pa ël përmess ëd vardé ij detaj dë sta vos.",
+ "abusefilter-log-details-hidden": "It peule pa vardé ij detaj për sta vos përchè a l'é stërmà da la vista pùblica.",
+ "abusefilter-log-hide-legend": "Stërmé la vos ant ij registr",
+ "abusefilter-log-hide-id": "Identificativ ëd la vos dël registr:",
+ "abusefilter-log-hide-hidden": "Stërma sta vos da la vista pùblica",
+ "abusefilter-log-hide-reason": "Rason:",
+ "abusefilter-log-hide-forbidden": "It l'has pa ël përmess dë stërmé le vos dël registr ëd sicurëssa.",
+ "abusefilter-logentry-suppress": "stërma \"[[$1]]\"",
+ "abusefilter-logentry-unsuppress": "a l'ha dëscoatà \"[[$1]]\"",
+ "logentry-abusefilter-hit": "$1 a l'ha assionà $4, an fasend l'assion \"$5\" dzora $3. Assion fàite: $6 ($7)",
+ "abusefilter-management": "Gestion dël filtr ëd sicurëssa",
+ "abusefilter-list": "Tùit ij filtr",
+ "abusefilter-list-id": "Identificativ dël filtr",
+ "abusefilter-list-status": "Stat",
+ "abusefilter-list-public": "Descrission pùblica",
+ "abusefilter-list-consequences": "Conseguense",
+ "abusefilter-list-visibility": "Visibilità",
+ "abusefilter-list-hitcount": "Conteur dj'andividuassion",
+ "abusefilter-list-edit": "Modìfica",
+ "abusefilter-list-details": "Detaj",
+ "abusefilter-list-limit": "Nùmer për pàgina:",
+ "abusefilter-list-lastmodified": "Ùltima modìfica",
+ "abusefilter-list-group": "Partìa ëd filtr",
+ "abusefilter-hidden": "Privà",
+ "abusefilter-unhidden": "Pùblich",
+ "abusefilter-enabled": "Abilità",
+ "abusefilter-deleted": "Scancelà",
+ "abusefilter-disabled": "Disabilità",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|andividuassion|andividuassion}}",
+ "abusefilter-new": "Creé un filtr neuv",
+ "abusefilter-return": "Torné andré a la gestion dij filtr",
+ "abusefilter-status-global": "Global",
+ "abusefilter-list-options": "Opsion",
+ "abusefilter-list-options-deleted": "Filtr ëscancelà:",
+ "abusefilter-list-options-deleted-only": "Mostré mach ij filtr ëscancelà",
+ "abusefilter-list-options-deleted-hide": "Stërmé ij filtr ëscancelà",
+ "abusefilter-list-options-deleted-show": "Comprende ij filtr ëscancelà",
+ "abusefilter-list-options-scope": "Smon-e ij filtr da:",
+ "abusefilter-list-options-scope-local": "Wiki local",
+ "abusefilter-list-options-scope-global": "Régole globaj",
+ "abusefilter-list-options-disabled": "Filtr disabilità:",
+ "abusefilter-list-options-hidedisabled": "Stërmé ij filtr disabilità",
+ "abusefilter-list-options-submit": "Agiorna",
+ "abusefilter-tools-text": "Ambelessì a-i é dj'utiss ch'a peulo ven-e a taj ant la formolassion e la verìfica dij filtr ëd contra j'abus.",
+ "abusefilter-tools-expr": "Verificator d'espression",
+ "abusefilter-tools-submitexpr": "Vàluta",
+ "abusefilter-tools-reautoconfirm": "Ristabilì lë stat àuto-confirmà",
+ "abusefilter-tools-reautoconfirm-user": "Utent:",
+ "abusefilter-tools-reautoconfirm-submit": "Autoconfirma torna",
+ "abusefilter-reautoconfirm-none": "Col utent a l'ha pa avù {{GENDER:$1|sò|sò|sò}} stat autoconfirmà sospèis.",
+ "abusefilter-reautoconfirm-notallowed": "It peule pa ripristiné lë stat autoconfirmà.",
+ "abusefilter-reautoconfirm-done": "Lë stat autoconfirmà dël cont a l'é stàit ripristinà",
+ "abusefilter-status": "Dj'ùltime $1 {{PLURAL:$1|assion|assion}}, $2 ($3%) {{PLURAL:$2|a l'é|a son}} rivà a la condission lìmit ëd $4, e $5 ($6%) {{PLURAL:$5|a l'é stàita |a son ëstàite}} identificà da un dij filtr abilità al moment.",
+ "abusefilter-edit": "Modifiché ël filtr d'abus",
+ "abusefilter-edit-subtitle": "Modifiché ël filtr $1",
+ "abusefilter-edit-subtitle-new": "Creé un filtr",
+ "abusefilter-edit-oldwarning": "<strong>A l'é an camin ch'a modìfica na version veja d'ës fìlter.\nLe statìstiche mostrà a rësguardo la version pì recenta dël fìlter.\nS'a salva soe modìfiche, a-j scrivrà ëdzora a tute ij cangiament fàit a parte dla revision ch'a l'é an camin ch'a modìfica.</strong> &bull;\n[[Special:AbuseFilter/history/$2|Torné a la stòria d'ës fìlter]].",
+ "abusefilter-edit-status-label": "Statìstiche:",
+ "abusefilter-edit-status": "{{PLURAL:$1|Dl'ùltima|Dj'ùltime $1}} assion, ës fìlter a n'ha andividuane $2 ($3%).",
+ "abusefilter-edit-status-profile": "{{PLURAL:$1|Dl'ùltima|Dj'ùltime $1}} assion, ës fìlter a n'ha andividuane $2 ($3%).\nAn media, sò temp ëd travaj a l'é ëd $4 ms e a consuma $5 {{PLURAL:$5|condission|condission}} dël lìmit ëd condission.",
+ "abusefilter-edit-new": "Filtr neuv",
+ "abusefilter-edit-save": "Salvé ël filtr",
+ "abusefilter-edit-id": "Identificativ dël fìlter",
+ "abusefilter-edit-description": "Descrission:\n:''(visìbil da tuti)''",
+ "abusefilter-edit-group": "Partìa ëd filtr:",
+ "abusefilter-edit-flags": "Marcador:",
+ "abusefilter-edit-enabled": "Abilité 's fìlter",
+ "abusefilter-edit-deleted": "Marché coma scancelà",
+ "abusefilter-edit-hidden": "Stërmé ij detaj d'ës fìlter da la vista pùblica",
+ "abusefilter-edit-global": "Filtr global",
+ "abusefilter-edit-rules": "Condission:",
+ "abusefilter-edit-notes": "Nòte:\n:''(privà)''",
+ "abusefilter-edit-lastmod": "Filtr modificà për l'ùltima vira:",
+ "abusefilter-edit-lastmod-text": "$1 da $2",
+ "abusefilter-edit-hitcount": "Nùmer d'andividuassion dël filtr:",
+ "abusefilter-edit-consequences": "Assion fàite a l'andividuassion",
+ "abusefilter-edit-action-warn": "Ancaminé ste assion apress avèj dàit n'avis a l'utent",
+ "abusefilter-edit-action-disallow": "Vieta a l'utent ëd fé l'assion an custion",
+ "abusefilter-edit-action-blockautopromote": "Gava lë stat d'autoconfirmà a l'utent",
+ "abusefilter-edit-action-degroup": "Gava l'utent da tute le partìe privilegià",
+ "abusefilter-edit-action-block": "Blòca l'utent e/o l'adrëssa IP da modifiché",
+ "abusefilter-edit-action-throttle": "Ancamin-a j'assion mach se l'utent a fà scaté un lìmit persentual",
+ "abusefilter-edit-action-rangeblock": "Bloché l'antërval /16 d'andoa l'utent a riva",
+ "abusefilter-edit-action-tag": "Tichëtté la modìfica per na revision adissional",
+ "abusefilter-edit-throttle-count": "Nùmer d'assion da përmëtte:",
+ "abusefilter-edit-throttle-period": "Durà ëd temp:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|second|second}}",
+ "abusefilter-edit-throttle-groups": "Argropé la moderassion për:\n:''(un për linia, separà con dle vìrgole)''",
+ "abusefilter-edit-warn-message": "Mëssagi ëd sistema da dovré për l'avis:",
+ "abusefilter-edit-warn-other": "Àutr mëssagi",
+ "abusefilter-edit-warn-other-label": "Nòm ëd pàgina ëd n'àutr mëssagi:\n:''(sensa prefiss mediaWiki)''",
+ "abusefilter-edit-warn-actions": "Assion:",
+ "abusefilter-edit-warn-preview": "Previsualisé ël mëssagi selessionà",
+ "abusefilter-edit-warn-edit": "Creé o modifiché ël mëssagi selessionà",
+ "abusefilter-edit-tag-tag": "Tichëtte da apliché (un-a për linia):",
+ "abusefilter-edit-denied": "It peule pa vardé ij detaj dë sto filtr, përchè a l'é stërmà da la vista pùblica.",
+ "abusefilter-edit-main": "Paràmetr dël filtr",
+ "abusefilter-edit-done-subtitle": "Filtr modificà",
+ "abusefilter-edit-done": "A l'ha salvà për da bin soe modìfiche al fìlter $1.",
+ "abusefilter-edit-badsyntax": "A-i é n'eror ëd sintassi ant ël filtr ch'it l'has specificà.\nL'arzultà dal parser a l'era: <pre>$1</pre>",
+ "abusefilter-edit-restricted": "A peul pa modifiché ës filtr, përchè a conten un-a o pi assion limità.\nPër piasì, ch'a ciama a n'utent con ël përmess ëd gionté dj'assion limità ëd fé ij cambi për chiel.",
+ "abusefilter-edit-viewhistory": "Vëdde la stòria d'ës fìlter",
+ "abusefilter-edit-history": "Stòria:",
+ "abusefilter-edit-check": "Controlé la sintassi",
+ "abusefilter-edit-badfilter": "Ël filtr ch'it l'has specificà a esist pa",
+ "abusefilter-edit-revert": "Porté andré j'assion fàite da 's filtr",
+ "abusefilter-edit-tools": "Utiss:",
+ "abusefilter-edit-test-link": "Prové 's filtr an sj'ùltime modìfiche",
+ "abusefilter-edit-export": "Esporté ës filtr an sn'àutra wiki",
+ "abusefilter-edit-syntaxok": "Gnun eror ëd sintassi trovà.",
+ "abusefilter-edit-syntaxerr": "Eror ëd sintassi trovà: $1",
+ "abusefilter-edit-bad-tags": "Un-a o pi dle tichëtte ch'a l'ha specificà a l'é pa bon-a.\nLe tichëtte a dovrìo esse curte, e a dovrìo pa conten-e ëd caràter speciaj.",
+ "abusefilter-edit-notallowed": "Chiel a peul pa creé o modifiché ij filtr contra j'abus",
+ "abusefilter-edit-notallowed-global": "Chiel a peul pa creé o modifiché ij filtr globaj contra j'abus",
+ "abusefilter-edit-builder-select": "Selession-a n'opsion për giontela al cursor",
+ "abusefilter-edit-builder-group-op-arithmetic": "Operador aritmétich",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Adission (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Sotrassion (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Moltiplicassion (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Division (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Mòdul (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Potensa (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Operador ëd comparassion",
+ "abusefilter-edit-builder-op-comparison-equal": "Istess a (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Diferent da (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "Men ëd (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Pi ëd (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Men ëd o istess a (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Pi ëd o istess a (<=)",
+ "abusefilter-edit-builder-group-op-bool": "Operador boolean",
+ "abusefilter-edit-builder-op-bool-not": "Nen (!)",
+ "abusefilter-edit-builder-op-bool-and": "E (&)",
+ "abusefilter-edit-builder-op-bool-or": "O (|)",
+ "abusefilter-edit-builder-group-misc": "Diferent",
+ "abusefilter-edit-builder-misc-in": "contnù ant la stringa (in)",
+ "abusefilter-edit-builder-misc-like": "A corëspond al motiv (like)",
+ "abusefilter-edit-builder-misc-rlike": "A corëspond a l'espression regolar (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "A corëspond a d'espression regolar, sensa ten-e cont ëd majùscole o minùscole (irlike)",
+ "abusefilter-edit-builder-misc-contains": "La stringa dë snista a conten la stringa ëd drita (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "Stringa (\"\")",
+ "abusefilter-edit-builder-misc-tern": "Operador ternari ( X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "Condissional (if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "Funsion",
+ "abusefilter-edit-builder-funcs-length": "Longheur dla stringa (lenght)",
+ "abusefilter-edit-builder-funcs-lcase": "Convert a minùscol (lcase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "Normalisé ij caràter confondìbij (ccnorm)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "Gavé ij caràter dobi (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "Caràter speciaj / caràter totaj (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "Normalisa (norm)",
+ "abusefilter-edit-builder-funcs-count": "Nùmer ëd vire che la stringa X a l'é ant la stringa Y (count)",
+ "abusefilter-edit-builder-funcs-rcount": "Nùmer ëd vire che l'espression regolar X a compariss ant la stringa Y (rcount)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "Gavé jë spassi bianch (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "Gavé ij caràter speciaj (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "L'IP a l'é ant l'intërval? (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "Sërché ant la stringa dle sot-ëstringhe mùltiple (contains_any)",
+ "abusefilter-edit-builder-funcs-substr": "Sot-ëstringa (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "Posission ëd la sot-ëstringa ant la stringa (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "Rampiassé la sot-ëstringa con la stringa (str_replace)",
+ "abusefilter-edit-builder-funcs-rescape": "Scapé da la stringa coma literal ant l'esspression regolar (rescape)",
+ "abusefilter-edit-builder-funcs-set_var": "Definì la variàbil (set_var)",
+ "abusefilter-edit-builder-group-vars": "Variàbij",
+ "abusefilter-edit-builder-vars-accountname": "Nòm dël cont (a la creassion dël cont)",
+ "abusefilter-edit-builder-vars-timestamp": "Timestamp Unix dël cambiament",
+ "abusefilter-edit-builder-vars-action": "Assion",
+ "abusefilter-edit-builder-vars-addedlines": "Linie giontà ant la modìfica",
+ "abusefilter-edit-builder-vars-delta": "Cambiament ëd dimension ant la modìfica",
+ "abusefilter-edit-builder-vars-diff": "Diferense unificà dij cambiament fàit ant la modìfica",
+ "abusefilter-edit-builder-vars-newsize": "Dimension neuva dla pàgina",
+ "abusefilter-edit-builder-vars-oldsize": "Dimension veja dla pàgina",
+ "abusefilter-edit-builder-vars-removedlines": "Linie gavà ant la modìfica",
+ "abusefilter-edit-builder-vars-summary": "Resumé o rason ëd la modìfica",
+ "abusefilter-edit-builder-vars-article-id": "Identificativ ëd la pàgina",
+ "abusefilter-edit-builder-vars-article-ns": "Spassi nominal ëd la pàgina",
+ "abusefilter-edit-builder-vars-article-text": "Tìtol ëd la pàgina (sensa spassi nominal)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Tìtol complet ëd la pàgina",
+ "abusefilter-edit-builder-vars-article-views": "Pàgine visualisà",
+ "abusefilter-edit-builder-vars-movedfrom-id": "Identificativ ëd la pàgina sorgiss da tramudé",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "Spassi nominal ëd la pàgina sorgiss da tramudé",
+ "abusefilter-edit-builder-vars-movedfrom-text": "Tìtol ëd la pàgina sorgiss da tramudé",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "Tìtol complet ëd la pàgina original da tramudé",
+ "abusefilter-edit-builder-vars-movedto-id": "Identificativ ëd la pàgina ëd destinassion ëd lë spostament",
+ "abusefilter-edit-builder-vars-movedto-ns": "Spassi nominal ëd la pàgina ëd destinassion ëd lë spostament",
+ "abusefilter-edit-builder-vars-movedto-text": "Tìtol ëd la pàgina ëd destinassion ëd lë spostament",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "Tìtol complet ëd la pàgina ëd destinassion ëd lë spostament",
+ "abusefilter-edit-builder-vars-user-editcount": "Conteur ëd modìfiche dl'utent",
+ "abusefilter-edit-builder-vars-user-age": "Età dël cont ëd l'utent",
+ "abusefilter-edit-builder-vars-user-name": "Nòm dël cont ëd l'utent",
+ "abusefilter-edit-builder-vars-user-groups": "Partìe (comprèise cole implìcite) andova l'utent a l'é",
+ "abusefilter-edit-builder-vars-user-blocked": "Se l'utent a l'é blocà",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "Da quant temp l'adrëssa ëd pòsta eletrònica a l'é stàita confirmà",
+ "abusefilter-edit-builder-vars-recent-contributors": "J'ùltim des utent ch'a l'han contribuì a la pàgina",
+ "abusefilter-edit-builder-vars-all-links": "Tute j'anliure esterne ant ël test neuv",
+ "abusefilter-edit-builder-vars-added-links": "Tute j'anliure esterne giontà ant la modìfica",
+ "abusefilter-edit-builder-vars-removed-links": "Tute j'anliure esterne gavà ant la modìfica",
+ "abusefilter-edit-builder-vars-old-text": "Vej wikitest ëd la pàgina, prima dla modìfica",
+ "abusefilter-edit-builder-vars-new-text": "Wikitest neuv ëd la pàgina, dòp ëd la modìfica",
+ "abusefilter-edit-builder-vars-new-text-stripped": "Test neuv ëd la pàgina, gavà tùit ij marcador",
+ "abusefilter-edit-builder-vars-new-html": "Sorgiss HTML parsificà dla neuva revision",
+ "abusefilter-edit-builder-vars-restrictions-edit": "Livel ëd protession dle modìfiche dla pàgina",
+ "abusefilter-edit-builder-vars-restrictions-move": "Livel ëd protession për ij tramud ëd la pàgina",
+ "abusefilter-edit-builder-vars-restrictions-create": "Protession ëd creassion ëd la pàgina",
+ "abusefilter-edit-builder-vars-restrictions-upload": "Carìa la protession ëd l'archivi",
+ "abusefilter-edit-builder-vars-old-text-stripped": "Test vej ëd la pàgina, gavà tùit ij marcador",
+ "abusefilter-edit-builder-vars-old-links": "Anliure ant la pàgina, prima dla modìfica",
+ "abusefilter-edit-builder-vars-old-html": "Vej wikitest ëd la pàgina, parsificà an HTML",
+ "abusefilter-edit-builder-vars-minor-edit": "Se o nò la modìfica a l'é marcà com minor",
+ "abusefilter-edit-builder-vars-file-sha1": "Silabassion SHA1 dël contnù ëd l'archivi",
+ "abusefilter-filter-log": "Cambi recent dël filtr",
+ "abusefilter-history": "Stòria dle modìfiche dël Filtr contra j'abus nùmer $1",
+ "abusefilter-history-foruser": "Cangià da $1",
+ "abusefilter-history-hidden": "Stërmà",
+ "abusefilter-history-enabled": "Abilità",
+ "abusefilter-history-global": "Global",
+ "abusefilter-history-timestamp": "Ora",
+ "abusefilter-history-user": "Utent",
+ "abusefilter-history-public": "Descrission pùblica dël filtr",
+ "abusefilter-history-flags": "Marcador",
+ "abusefilter-history-filter": "Régola dël filtr",
+ "abusefilter-history-comments": "Coment",
+ "abusefilter-history-actions": "Assion",
+ "abusefilter-history-backedit": "André a l'editor dël filtr",
+ "abusefilter-history-deleted": "Scancelà",
+ "abusefilter-history-filterid": "Filtr",
+ "abusefilter-history-select-legend": "Rafiné l'arserca",
+ "abusefilter-history-select-user": "Utent:",
+ "abusefilter-history-select-submit": "Rafiné",
+ "abusefilter-history-diff": "Cambi",
+ "abusefilter-history-error-hidden": "Ël filtr ch'it l'has ciamà a l'é stërmà, e it peule pa vardé soa stòria.",
+ "abusefilter-exception-unexpectedatend": "\"$2\" pa spetà al caràter $1.",
+ "abusefilter-exception-expectednotfound": "Un $2, trovà nen, a së spetava al caràter $1 (trovà nopà $3 $4).",
+ "abusefilter-exception-unrecognisedkeyword": "Paròla ciav pa arconossùa $2 al caràter $1.",
+ "abusefilter-exception-unexpectedtoken": "Sìmbol \"$3\" (ëd tipo $2) pa spetà al caràter $1.",
+ "abusefilter-exception-unclosedstring": "Stringa nen sarà ch'a ancamin-a al caràter $1.",
+ "abusefilter-exception-invalidoperator": "Operador \"$2\" pa bon al caràter $1.",
+ "abusefilter-exception-unrecognisedtoken": "Sìmbol pa arconossù \"$2\" al caràter $1.",
+ "abusefilter-exception-noparams": "Pa gnun paràmetr dàit a la funsion \"$2\" al caràter $1.",
+ "abusefilter-exception-dividebyzero": "Tentativ ilegal ëd divide $2 për zero al caràter $1.",
+ "abusefilter-exception-unrecognisedvar": "Variàbil pa arconossùa $2 al caràter $1.",
+ "abusefilter-exception-notenoughargs": "Pa basta d'argoment a la funsion $2 ciamà al caràter $1.\nSpetà $3 {{PLURAL:$3|argument|argument}}, otnune $4",
+ "abusefilter-exception-regexfailure": "Eror ant l'espression regolar \"$3\" al caràter $1: \"$2\"",
+ "abusefilter-exception-overridebuiltin": "Coatà ëd fasson ilegal la variàbil dë stàndard \"$2\" al caràter $1.",
+ "abusefilter-exception-outofbounds": "Arcesta ëd l'element inesistent $2 ëd la lista (dimension ëd la lista = $3) al caràter $1.",
+ "abusefilter-exception-notlist": "Arcesta ëd n'element fòra ëd na tàula al caràter $1.",
+ "abusefilter-action-tag": "Tichëtta",
+ "abusefilter-action-throttle": "Vàlvola",
+ "abusefilter-action-warn": "Avisa",
+ "abusefilter-action-blockautopromote": "Bloché la promossion automàtica",
+ "abusefilter-action-block": "Blòca",
+ "abusefilter-action-degroup": "Gava da le partìe",
+ "abusefilter-action-rangeblock": "Blocagi d'antërval",
+ "abusefilter-action-disallow": "Disabìlita",
+ "abusefilter-revert-title": "Pòrta andré tùit ij cambi al filtr $1",
+ "abusefilter-revert-intro": "Ës formolari a-j përmët ëd porté andré tùit ij cambi fàit dal filtr contra j'abus $1.\nPër piasì, ch'a fasa atension an dovrand cost utiss.",
+ "abusefilter-revert-preview-item": "$1: $2 a l'ha fàit un $3 su $4.\nAssion da porté andré: $5 ($6)",
+ "abusefilter-revert-search-legend": "Selessioné j'assion dël filtr contra j'abus da revoché",
+ "abusefilter-revert-periodstart": "Inissi dël perìod:",
+ "abusefilter-revert-periodend": "Fin dël perìod:",
+ "abusefilter-revert-search": "Selessioné j'assion",
+ "abusefilter-revert-filter": "Filtr:",
+ "abusefilter-revert-preview-intro": "Sota a-i son j'assion fàite dal filtr contra j'abus che a saran revocà da cost'assion.\nPër piasì, ch'a-j contròla con atension, e che sgnaca \"confirmé\" për confirmé soa selession.",
+ "abusefilter-revert-confirm": "Conferma",
+ "abusefilter-revert-success": "A l'ha revocà tute j'assion fàite dal filtr contra j'abus dovùe al [[Special:AbuseFilter/$1|filtr $2]].",
+ "abusefilter-revert-reason": "Anulament automàtich ëd tute j'assion fàite dal filtr ëd sicurëssa dovùe al filtr $1.\nRason dàita: $2",
+ "abusefilter-revert-reasonfield": "Rason:",
+ "abusefilter-test": "Prové un filtr an sle veje modìfiche",
+ "abusefilter-test-intro": "Sta pàgina a-j përmët ëd verifiché un filtr anserì ant la casela sì-sota an dovrand {{PLURAL:$1|l'ùltima modìfica|j'ùltime $1 modìfiche}}.\nPër carié un filtr esistent, ch'a buta sò identificativ ant la casela sota la casela testual ëd modìfica, e ch'a sgnaca ël boton \"Carié\".",
+ "abusefilter-test-legend": "Preuva dël filtr",
+ "abusefilter-test-load-filter": "Carié ël nùmer d'identificassion dël filtr:",
+ "abusefilter-test-submit": "Preuva",
+ "abusefilter-test-load": "Caria",
+ "abusefilter-test-user": "Cangià da l'utent:",
+ "abusefilter-test-period-start": "Cambi fàit apress:",
+ "abusefilter-test-period-end": "Cambi fàit prima:",
+ "abusefilter-test-page": "Cambi fàit a la pàgina:",
+ "abusefilter-test-shownegative": "Smon-e le modìfiche nen pijà an considerassion dal filtr",
+ "abusefilter-test-syntaxerr": "El filtr ch'a l'ha anserì a contnìa n'eror ëd sintassi.\nA peul arsèive na spiegassion completa an sgnacand ël boton \"Controlé la sintassi\".",
+ "abusefilter-changeslist-examine": "esàmina",
+ "abusefilter-examine": "Esaminé dle modìfiche individuaj",
+ "abusefilter-examine-intro": "Sta pàgina a-j përmët d'esaminé le variàbij generà dal Filtr contra j'abus për na modìfica individual, e ëd proveje con ij filtr.",
+ "abusefilter-examine-legend": "Selessioné le modìfiche",
+ "abusefilter-examine-diff": "Adrëssa dle diferense:",
+ "abusefilter-examine-user": "Utent:",
+ "abusefilter-examine-title": "Tìtol ëd la pàgina:",
+ "abusefilter-examine-submit": "Sërca",
+ "abusefilter-examine-vars": "Variàbij generà për costa modìfica",
+ "abusefilter-examine-test": "Prové costa modìfica con un filtr",
+ "abusefilter-examine-test-button": "Prové ël filtr",
+ "abusefilter-examine-match": "Ël fìlter a l'ha trovà costa modìfica.",
+ "abusefilter-examine-nomatch": "Ël fìlter a l'ha pa trovà costa modìfica.",
+ "abusefilter-examine-syntaxerror": "Ël filtr a l'ha na sintassi nen bon-a",
+ "abusefilter-examine-notfound": "La modìfica ch'a l'ha ciamà a l'é nen ëstàita trovà.",
+ "abusefilter-examine-incompatible": "La modìfica ch'a l'ha ciamà a l'é pa mantnùa dai Filtr contra j'abus",
+ "abusefilter-examine-noresults": "Pa gnun arzultà trovà për ij paràmetr d'arserca ch'it l'has dàit.",
+ "abusefilter-topnav": "'''Esplorassion dij Filtr ëd Sicurëssa'''",
+ "abusefilter-topnav-home": "Pàgina d'intrada",
+ "abusefilter-topnav-test": "Preuva an serie",
+ "abusefilter-topnav-examine": "Esaminé le modìfiche veje",
+ "abusefilter-topnav-log": "Registr ëd j'abus",
+ "abusefilter-topnav-tools": "Utiss ëd coression dij bigat",
+ "abusefilter-topnav-import": "Amporté un filtr",
+ "abusefilter-log-name": "Registr dij Filtr ëd Sicurëssa",
+ "abusefilter-log-header": "Sto registr a smon un resumé dij cambi fàit ai filtr.\nPër ij detaj complet, ch'a bèica [[Special:AbuseFilter/history|la lista]] dle modìfiche recent dël filtr.",
+ "abusefilter-log-noresults": "Gnun arzultà",
+ "abusefilter-diff-title": "Diferense antra le version",
+ "abusefilter-diff-item": "Element",
+ "abusefilter-diff-version": "Version dël $1 {{GENDER:$3|ëd}} $2",
+ "abusefilter-diff-info": "Anformassion ëd base",
+ "abusefilter-diff-pattern": "Condission dël filtr",
+ "abusefilter-diff-invalid": "Impossìbil trové le version ciamà",
+ "abusefilter-diff-backhistory": "André a la stòria dël filtr",
+ "abusefilter-import-intro": "A peul dovré costa antërfacia për amporté dij filtr da d'àutre wiki.\nAn sla wiki sorgiss, ch'a sgnaca \"{{int:abusefilter-edit-export}}\" sota \"{{int:abusefilter-edit-tools}}\" an sl'antërfacia ëd modìfica.\nCh'a còpia la casela ëd test ch'a compariss, e ch'a l'ancòla an costa casela ëd test, peui ch'a sgnaca \"{{int:abusefilter-import-submit}}\".",
+ "abusefilter-import-submit": "Amporté dij dat",
+ "abusefilter-group-default": "Për sòlit"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/ps.json b/www/wiki/extensions/AbuseFilter/i18n/ps.json
new file mode 100644
index 00000000..fe960a68
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/ps.json
@@ -0,0 +1,148 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ahmed-Najib-Biabani-Ibrahimkhel"
+ ]
+ },
+ "abuselog": "د ورانکارۍ يادښت",
+ "abusefilter-warning": "'''گواښنه''': همدا کړنه په اتوماتيک ډول زيانمنه وپېژندل شوه.\nنارغوونکې سمونې به ډېر ژر پر شا خپلې پخوانۍ بڼې ته واړول شي،\nورانکاري او په بيا بيا نارغوونکې سمونې ترسره کول به ستاسې په گڼون او يا هم IP پتې باندې د بنديزونو سبب شي.\nکه چېرته تاسې په دې ډاډه ياست چې همدا يو رغوونکی سمون دی، نو تاسې کولای شی چې پر «سپارل» وټوکۍ چې ستاسې د کړنې پخلی وشي.\nد ناوړو کړنو د کړنلارې يوه لنډه څرگندونه چې ستاسې د کړنې همډوله وه، په دې توگه ده: $1",
+ "abusefilter-disallowed": "دا کړنه په خپلکاره توگه نارغنده او زيانمنه وپېژندل شوه، او په همدې سبب يې مخنيوی وشو. \nکه چېرته بيا هم دا کړنه تاسو ته رغنده ښکاري نو، لطفاً يو پازوال پرې خبر کړی چې تاسې څه ترسره کول غواړۍ. \nستاسې همدا کړنه چې په نارغنده معيارونو کې شمېرل شوې داسې څرگندېږي: $1",
+ "abusefilter-blocker": "د ورانکارۍ چاڼگر",
+ "right-abusefilter-modify": "د ورانکارۍ چاڼگرونه بدلول",
+ "right-abusefilter-view": "د ورانکارۍ چاڼگرونه کتل",
+ "right-abusefilter-log": "د ورانکارۍ يادښت کتل",
+ "right-abusefilter-log-detail": "د ورانکارۍ يادښت د مېنځپانگې تفصيل کتل",
+ "right-abusefilter-hide-log": "د ورانکارۍ يادښت مېنځپانگې پټول",
+ "action-abusefilter-view": "د ورانکارۍ چاڼگرونه کتل",
+ "action-abusefilter-log": "د ورانکارۍ يادښت کتل",
+ "abusefilter-log": "د ورانکارۍ چاڼگر يادښت",
+ "abusefilter-log-search-user": "کارن:",
+ "abusefilter-log-search-filter": "د چاڼگر پېژند:",
+ "abusefilter-log-search-title": "سرليک:",
+ "abusefilter-log-search-wiki": "ويکي:",
+ "abusefilter-log-search-submit": "پلټل",
+ "abusefilter-log-detailedentry-local": "چاڼگر $1",
+ "abusefilter-log-detailslink": "ځانگړنې",
+ "abusefilter-log-diff": "توپير",
+ "abusefilter-log-details-val": "ارزښت",
+ "abusefilter-log-noactions": "هېڅ",
+ "abusefilter-log-linkoncontribs": "د ورانکارۍ يادښت",
+ "abusefilter-log-linkoncontribs-text": "د دې کارن د ورانکارۍ يادښت",
+ "abusefilter-log-hide-reason": "سبب:",
+ "abusefilter-logentry-suppress": "\"[[$1]]\" پټول",
+ "abusefilter-logentry-unsuppress": "\"[[$1]]\" ناپټول",
+ "abusefilter-list": "ټول چاڼگران",
+ "abusefilter-list-id": "د چاڼگر پېژند",
+ "abusefilter-list-status": "دريځ",
+ "abusefilter-list-consequences": "عواقب",
+ "abusefilter-list-visibility": "ښکارېدنه",
+ "abusefilter-list-edit": "سمول",
+ "abusefilter-list-details": "تفصيلات",
+ "abusefilter-list-limit": "په هر مخ کې شمېر:",
+ "abusefilter-list-lastmodified": "تېرځل بدل شوی",
+ "abusefilter-list-group": "چاڼگر ډله",
+ "abusefilter-hidden": "شخصي",
+ "abusefilter-unhidden": "ټولگړی",
+ "abusefilter-enabled": "چارن",
+ "abusefilter-deleted": "ړنگ شو",
+ "abusefilter-disabled": "ناچارن",
+ "abusefilter-new": "يو نوی چاڼگر جوړول",
+ "abusefilter-status-global": "نړېوال",
+ "abusefilter-list-options": "خوښنې",
+ "abusefilter-list-options-deleted": "ړنگ شوي چاڼگران:",
+ "abusefilter-list-options-deleted-only": "يوازې ړنگ شوي چاڼگران ښکاره کول",
+ "abusefilter-list-options-deleted-hide": "ړنگ شوي چاڼگران پټول",
+ "abusefilter-list-options-deleted-show": "ړنگ شوي چاڼگران ورسره نغاړل",
+ "abusefilter-list-options-scope": "چاڼگران ښکاره کول:",
+ "abusefilter-list-options-scope-local": "يوازې سيمه ايزه قانونونه",
+ "abusefilter-list-options-scope-global": "يوازې نړېوال قانونونه",
+ "abusefilter-list-options-disabled": "ناچارن چاڼگران:",
+ "abusefilter-list-options-hidedisabled": "ناچارن چاڼگران پټول",
+ "abusefilter-list-options-submit": "اوسمهالول",
+ "abusefilter-tools-submitexpr": "ارزول",
+ "abusefilter-tools-reautoconfirm-user": "کارن:",
+ "abusefilter-edit-subtitle-new": "چاڼگر جوړول",
+ "abusefilter-edit-status-label": "شمار:",
+ "abusefilter-edit-new": "نوی چاڼگر",
+ "abusefilter-edit-save": "چاڼگر خوندي کول",
+ "abusefilter-edit-id": "د چاڼگر پېژند:",
+ "abusefilter-edit-group": "چاڼگر ډله:",
+ "abusefilter-edit-flags": "رپيان:",
+ "abusefilter-edit-enabled": "همدا چاڼگر چارنول",
+ "abusefilter-edit-deleted": "د ړنگ شوي په توگه په نخښه کول",
+ "abusefilter-edit-global": "نړيوال چاڼگر",
+ "abusefilter-edit-rules": "شرطونه:",
+ "abusefilter-edit-notes": "يادونې:\n:''(شخصي)",
+ "abusefilter-edit-throttle-period": "د وخت موده:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|ثانيه|ثانيې}}",
+ "abusefilter-edit-warn-other": "بل پيغام",
+ "abusefilter-edit-warn-actions": "چارې:",
+ "abusefilter-edit-warn-edit": "ټاکلی پيغام سمول/جوړول",
+ "abusefilter-edit-viewhistory": "د دې چاڼگر پېښليک کتل",
+ "abusefilter-edit-history": "پېښليک:",
+ "abusefilter-edit-tools": "اوزارونه:",
+ "abusefilter-edit-builder-op-arithmetic-addition": "جمع (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "تفريق (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "ضرب (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "وېش (/)",
+ "abusefilter-edit-builder-op-bool-and": "او (&)",
+ "abusefilter-edit-builder-op-bool-or": "يا (|)",
+ "abusefilter-edit-builder-group-misc": "بېلابېل",
+ "abusefilter-edit-builder-vars-accountname": "گڼون نوم (د گڼون جوړېدنې په وخت)",
+ "abusefilter-edit-builder-vars-action": "چاره",
+ "abusefilter-edit-builder-vars-newsize": "د نوي مخ کچه",
+ "abusefilter-edit-builder-vars-oldsize": "د زوړ مخ کچه",
+ "abusefilter-edit-builder-vars-article-id": "د مخ پېژند",
+ "abusefilter-edit-builder-vars-article-ns": "د مخ نوم-تشيال",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "د مخ بشپړ سرليک",
+ "abusefilter-edit-builder-vars-article-views": "د مخ د کتلو شمېر",
+ "abusefilter-edit-builder-vars-user-editcount": "د کارن سمون شمېر",
+ "abusefilter-edit-builder-vars-user-age": "د کارن گڼون عمر",
+ "abusefilter-edit-builder-vars-user-name": "د گڼون نوم",
+ "abusefilter-edit-builder-vars-user-blocked": "که په کارن بنديز دی",
+ "abusefilter-filter-log": "وروستني چاڼگر بدلونونه",
+ "abusefilter-history-hidden": "پټ",
+ "abusefilter-history-enabled": "چارن",
+ "abusefilter-history-global": "نړېوال",
+ "abusefilter-history-timestamp": "وخت",
+ "abusefilter-history-user": "کارن",
+ "abusefilter-history-public": "د ټولگړي چاڼگر څرگندونه",
+ "abusefilter-history-flags": "رپيان",
+ "abusefilter-history-comments": "تبصرې",
+ "abusefilter-history-actions": "کړنې",
+ "abusefilter-history-deleted": "ړنگ شو",
+ "abusefilter-history-filterid": "چاڼگر",
+ "abusefilter-history-select-user": "کارن:",
+ "abusefilter-history-diff": "بدلونونه",
+ "abusefilter-action-warn": "گواښنه",
+ "abusefilter-action-block": "بنديز لگول",
+ "abusefilter-action-degroup": "له ډلو لرې کول",
+ "abusefilter-action-disallow": "ناپرېښل",
+ "abusefilter-revert-periodstart": "د مودې پيل:",
+ "abusefilter-revert-periodend": "د مودې پای:",
+ "abusefilter-revert-search": "چارې ټاکل",
+ "abusefilter-revert-filter": "چاڼگر:",
+ "abusefilter-revert-confirm": "تاييد",
+ "abusefilter-revert-reasonfield": "سبب:",
+ "abusefilter-test-legend": "چاڼگر آزموينه",
+ "abusefilter-test-load-filter": "چاڼگر پېژند برسېرېدنه:",
+ "abusefilter-test-submit": "آزمېښت",
+ "abusefilter-test-load": "برسېرول",
+ "abusefilter-test-user": "د کارن بدلونونه:",
+ "abusefilter-test-period-start": "وروسته ترسره شوي بدلونونه:",
+ "abusefilter-test-period-end": "دمخه ترسره شوي بدلونونه:",
+ "abusefilter-changeslist-examine": "آزمويل",
+ "abusefilter-examine-legend": "بدلونونه ټاکل",
+ "abusefilter-examine-user": "کارن:",
+ "abusefilter-examine-title": "مخ سرليک:",
+ "abusefilter-examine-submit": "پلټل",
+ "abusefilter-examine-test-button": "چاڼگر آزمويل",
+ "abusefilter-topnav-home": "کور",
+ "abusefilter-topnav-examine": "وروستني بدلونونه آزمويل",
+ "abusefilter-topnav-log": "د ورانکارۍ يادښت",
+ "abusefilter-log-noresults": "بې پايلو",
+ "abusefilter-diff-item": "توکی",
+ "abusefilter-diff-info": "بنسټيز مالومات",
+ "abusefilter-diff-next": "نوی بدلون",
+ "abusefilter-group-default": "تلواليز"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/pt-br.json b/www/wiki/extensions/AbuseFilter/i18n/pt-br.json
new file mode 100644
index 00000000..25406e82
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/pt-br.json
@@ -0,0 +1,551 @@
+{
+ "@metadata": {
+ "authors": [
+ "Amgauna",
+ "Anaclaudiaml",
+ "Cainamarques",
+ "Fúlvio",
+ "Giro720",
+ "Hamilton Abreu",
+ "Helder.wiki",
+ "Luckas",
+ "Luckas Blade",
+ "MetalBrasil",
+ "OTAVIO1981",
+ "Opraco",
+ "Pedroca cerebral",
+ "Rafael Vargas",
+ "TheGabrielZaum",
+ "555",
+ "Dianakc",
+ "He7d3r",
+ "Teles",
+ "Araceletorres",
+ "HenriqueCrang",
+ "Matma Rex",
+ "TheEduGobi",
+ "!Silent",
+ "Felipe L. Ewald",
+ "Eduardo Addad de Oliveira"
+ ]
+ },
+ "abusefilter-desc": "Aplica heurísticas automáticas às edições",
+ "abusefilter": "Configuração do filtro de edições",
+ "abuselog": "Registro de abusos",
+ "abusefilter-intro": "Bem-vindo à interface de gestão do Filtro de Abusos.\nO Filtro de Abuso é um mecanismo de ''software'' automatizado de aplicação de heurísticas automáticas a todas as ações.\nEsta interface mostra uma lista de filtros definidos e permite que sejam modificados.",
+ "abusefilter-mustbeeditor": "Por razões de segurança, apenas os usuários com o direito de modificar filtros de abusos podem usar esta interface.",
+ "abusefilter-warning": "'''Aviso:''' esta operação foi identificada automaticamente como prejudicial.\nEdições não construtivas serão revertidas rapidamente,\ne a repetição destas edições resultará no bloqueio da sua conta ou do seu endereço IP.\nSe você acredita que esta edição é construtiva, pode submeter novamente para confirmá-la.\nUma breve descrição da regra de abuso com a qual a sua ação coincidiu é: $1",
+ "abusefilter-disallowed": "Esta ação foi identificada automaticamente como prejudicial e foi consequentemente desautorizada.\nSe você crê que a sua edição foi construtiva, por favor contate um administrador e informe-o do que você estava tentando fazer.\nUma breve descrição da regra de abuso com a qual a sua ação coincidiu é: $1",
+ "abusefilter-blocked-display": "Esta ação foi identificada automaticamente como prejudicial\ne você foi impedido de executá-la.\nAlém disso, para proteger o {{SITENAME}}, sua conta de usuário e todos os endereços IP associados foram impedidas de editar.\nSe isto ocorreu por engano, por favor contate um administrador.\nUma breve descrição da regra de abuso com a qual a sua ação coincidiu é: $1",
+ "abusefilter-degrouped": "Esta ação foi identificada automaticamente como prejudicial.\nEm consequência, foi bloqueada e, já que se suspeita que a sua conta esteja comprometida, todas as permissões foram removidas.\nSe você crê que isto ocorreu por engano, por favor contate um burocrata indicando uma justificação desta ação e as suas permissões poderão ser repostas.\nUma breve descrição da regra de abuso com a qual a sua ação coincidiu é: $1",
+ "abusefilter-autopromote-blocked": "Esta ação foi identificada automaticamente como prejudicial, e foi bloqueada.\nAlém disso, como medida de segurança, alguns privilégios automaticamente concedidos a contas estabelecidas foram temporariamente removidos da sua conta.\nUma breve descrição da regra de abuso com a qual a sua ação coincidiu é: $1",
+ "abusefilter-blocker": "Filtro de abusos",
+ "abusefilter-blockreason": "Automaticamente bloqueado pelo filtro de abusos.\nDescrição da regra correspondida: $1",
+ "abusefilter-degroupreason": "Direitos automaticamente retirados pelo filtro de abusos.\nDescrição da regra: $1",
+ "abusefilter-accountreserved": "Este nome de conta está reservado para uso pelo filtro de abusos.",
+ "right-abusefilter-modify": "Modificar filtros de abusos",
+ "right-abusefilter-view": "Ver filtros de abusos",
+ "right-abusefilter-log": "Ver o registro de abusos",
+ "right-abusefilter-log-detail": "Ver entradas detalhadas do registro de abusos",
+ "right-abusefilter-private": "Ver dados privados no registro de abusos",
+ "right-abusefilter-private-log": "Veja o registro de acesso de detalhes privados no Filtro de abuso",
+ "right-abusefilter-modify-restricted": "Modificar filtros de abusos com ações restritas",
+ "right-abusefilter-revert": "Reverter todas as modificações feitas por um dado filtro de abusos",
+ "right-abusefilter-view-private": "Ver filtros de abuso marcados como privados",
+ "right-abusefilter-log-private": "Ver registro de entrada do fitro de abusos marcados como privados",
+ "right-abusefilter-hide-log": "Ocultar entradas do filtro de abusos",
+ "right-abusefilter-hidden-log": "Ver entradas ocultadas do registro de abusos",
+ "right-abusefilter-modify-global": "Criar ou modificar filtros de abuso global",
+ "action-abusefilter-modify": "modificar filtros de abuso",
+ "action-abusefilter-view": "ver filtros de abuso",
+ "action-abusefilter-log": "ver o registro de abusos",
+ "action-abusefilter-log-detail": "ver entradas detalhadas do registro de abusos",
+ "action-abusefilter-private": "ver dados privados no registro de abusos",
+ "action-abusefilter-private-log": "ver o registo de consultas dos detalhes privados do filtro de abusos",
+ "action-abusefilter-modify-restricted": "modificar filtros de abuso com ações restritas",
+ "action-abusefilter-revert": "reverter todas as alterações feitas por um dado filtro de abuso",
+ "action-abusefilter-view-private": "ver filtros de abuso marcados como privados",
+ "action-abusefilter-log-private": "ver registro de entrada dos fitros de edições marcados como privados",
+ "abusefilter-log": "Registro do filtro de abusos",
+ "abusefilter-log-summary": "Este registro mostra uma lista de todas as ações capturadas pelos filtros.",
+ "abusefilter-log-search": "Pesquisar o registro de abusos",
+ "abusefilter-log-search-user": "Usuário:",
+ "abusefilter-log-search-filter": "ID dos filtros (separar com barras verticais):",
+ "abusefilter-log-search-title": "Título:",
+ "abusefilter-log-search-wiki": "Wiki:",
+ "abusefilter-log-search-impact": "Impacto:",
+ "abusefilter-log-search-impact-all": "Todas as ações",
+ "abusefilter-log-search-impact-saved": "Apenas alterações salvadas",
+ "abusefilter-log-search-impact-not-saved": "Sem alterações salvadas",
+ "abusefilter-log-search-entries-label": "Visibilidade:",
+ "abusefilter-log-search-entries-all": "Todas as entradas",
+ "abusefilter-log-search-entries-hidden": "Só as entradas ocultadas",
+ "abusefilter-log-search-entries-visible": "Só as entradas visíveis",
+ "abusefilter-log-search-action-taken-label": "Ação realizada:",
+ "abusefilter-log-search-action-taken-any": "Qualquer",
+ "abusefilter-log-search-submit": "Pesquisar",
+ "abusefilter-log-entry": "$1: $2 {{GENDER:$8|disparou}} um filtro de abuso, {{GENDER:$8|executando}} a operação “$3” em $4.\nAções tomadas: $5;\nDescrição do filtro: $6",
+ "abusefilter-log-entry-withdiff": "$1: $2 {{GENDER:$8|disparou}} um filtro de abuso, {{GENDER:$8|executando}} a operação “$3” em $4.\nAções tomadas: $5;\nDescrição do filtro: $6 ($7)",
+ "abusefilter-log-detailedentry-meta": "$1: $2 {{GENDER:$9|disparou}} $3, {{GENDER:$9|executando}} a operação \"$4\" em $5.\nAções tomadas: $6;\nDescrição do filtro: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "filtro global $1",
+ "abusefilter-log-detailedentry-local": "filtro $1",
+ "abusefilter-log-detailslink": "detalhes",
+ "abusefilter-log-diff": "dif",
+ "abusefilter-log-hidelink": "ajustar a visibilidade",
+ "abusefilter-log-details-legend": "Detalhes para entrada de registro $1",
+ "abusefilter-log-details-var": "Variável",
+ "abusefilter-log-details-val": "Valor",
+ "abusefilter-log-details-vars": "Parâmetros de ação",
+ "abusefilter-log-details-private": "Detalhes do registro privado",
+ "abusefilter-log-details-ip": "Endereço de IP de origem",
+ "abusefilter-log-details-checkuser": "Verificar usuário",
+ "abusefilter-log-noactions": "nenhum",
+ "abusefilter-log-details-diff": "Alterações feitas na edição",
+ "abusefilter-log-linkoncontribs": "registro de abusos",
+ "abusefilter-log-linkoncontribs-text": "Registro de abuso para {{GENDER:$1|este usuário}}",
+ "abusefilter-log-hidden": "(entrada ocultada)",
+ "abusefilter-log-hidden-implicit": "(oculto porque a revisão foi eliminada)",
+ "abusefilter-log-cannot-see-details": "Você não tem permissão para ver os detalhes desta entrada.",
+ "abusefilter-log-cannot-see-private-details": "Você não tem permissão para ver detalhes particulares desta entrada.",
+ "abusefilter-log-nonexistent": "Não existe entrada com o ID fornecido.",
+ "abusefilter-log-details-hidden": "Você não pode ver os detalhes desta entrada porque estes estão ocultados ao público.",
+ "abusefilter-log-private-not-included": "Um ou mais ID(s) do(s) filtro(s) especificado(s) são particular(es). Por você não ter permissão para ver detalhes de filtros particulares, estes filtros não foram adicionados ao resultado da busca.",
+ "abusefilter-log-hide-legend": "Ocultar entrada",
+ "abusefilter-log-hide-id": "ID da entrada:",
+ "abusefilter-log-hide-hidden": "Ocultar esta entrada da vista do público",
+ "abusefilter-log-hide-reason": "Motivo:",
+ "abusefilter-log-hide-reason-other": "Outro motivo/motivo adicional:",
+ "abusefilter-log-hide-forbidden": "Não tem permissão para ocultar\nentradas do registro de abusos.",
+ "abusefilter-logentry-suppress": "ocultou “[[$1]]”",
+ "abusefilter-logentry-unsuppress": "revelou “[[$1]]”",
+ "logentry-abusefilter-hit": "$1 {{GENDER:$2|disparou}} $4, {{GENDER:$2|executando}} a operação “$5” em $3. Ações tomadas: $6 ($7)",
+ "log-action-filter-abusefilter": "Tipo de alteração de filtro:",
+ "log-action-filter-abusefilter-create": "Criação de novos filtros",
+ "log-action-filter-abusefilter-modify": "Modificação de filtros",
+ "logentry-abusefilterprivatedetails-access": "$1 {{GENDER:$2|acessou}} detalhes privados de $3",
+ "abusefilterprivatedetails-log-name": "registro de acesso do do Filtro de abuso para detalhes privados",
+ "abusefilter-management": "Gerenciamento do filtro de abuso",
+ "abusefilter-list": "Todos os filtros",
+ "abusefilter-list-id": "Identificação de filtro",
+ "abusefilter-list-pattern": "Padrão",
+ "abusefilter-list-status": "Estado",
+ "abusefilter-list-public": "Descrição pública",
+ "abusefilter-list-consequences": "Consequências",
+ "abusefilter-list-visibility": "Visibilidade",
+ "abusefilter-list-hitcount": "Contagem de correspondências",
+ "abusefilter-list-edit": "Editar",
+ "abusefilter-list-details": "Detalhes",
+ "abusefilter-list-limit": "Número por página:",
+ "abusefilter-list-lastmodified": "Última modificação",
+ "abusefilter-list-group": "Grupo de filtros",
+ "abusefilter-hidden": "Privado",
+ "abusefilter-unhidden": "Público",
+ "abusefilter-enabled": "Ativo",
+ "abusefilter-deleted": "Excluído",
+ "abusefilter-disabled": "Desativado",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|resultado|resultados}}",
+ "abusefilter-new": "Criar um novo filtro",
+ "abusefilter-return": "Voltar ao gerenciamento de filtros",
+ "abusefilter-status-global": "Global",
+ "abusefilter-list-options": "Opções",
+ "abusefilter-list-options-deleted": "Filtros eliminados:",
+ "abusefilter-list-options-deleted-only": "Mostrar apenas filtros eliminados",
+ "abusefilter-list-options-deleted-hide": "Ocultar filtros eliminados",
+ "abusefilter-list-options-deleted-show": "Incluir filtros eliminados",
+ "abusefilter-list-options-scope": "Mostrar filtros:",
+ "abusefilter-list-options-scope-local": "Apenas regras locais",
+ "abusefilter-list-options-scope-global": "Apenas regras globais",
+ "abusefilter-list-options-scope-all": "Regras globais e locais",
+ "abusefilter-list-options-disabled": "Filtros desativados:",
+ "abusefilter-list-options-hidedisabled": "Ocultar filtros desativados",
+ "abusefilter-list-options-searchfield": "Pesquise nas regras:",
+ "abusefilter-list-options-searchpattern": "Inserir um padrão",
+ "abusefilter-list-options-searchoptions": "Modo de pesquisa:",
+ "abusefilter-list-options-search-like": "Consulta simples",
+ "abusefilter-list-options-search-rlike": "Expressão regular",
+ "abusefilter-list-options-search-irlike": "Expressão regular insensível a maiúsculas",
+ "abusefilter-list-regexerror": "Ocorreu um erro durante a pesquisa: Erro de sintaxe de expressão regular.",
+ "abusefilter-list-options-submit": "Atualizar",
+ "abusefilter-tools-text": "Aqui estão algumas ferramentas que poderão ser úteis na formulação e depuração dos filtros de abuso.",
+ "abusefilter-tools-expr": "Testador de expressões",
+ "abusefilter-tools-submitexpr": "Calcular",
+ "abusefilter-tools-reautoconfirm": "Restaurar estatuto autoconfirmado",
+ "abusefilter-tools-reautoconfirm-user": "Usuário:",
+ "abusefilter-tools-reautoconfirm-submit": "Re-autoconfirmar",
+ "abusefilter-reautoconfirm-none": "Não foi suspenso o estado autoconfirmado {{GENDER:$1|desse usuário|dessa usuária|desse(a) usuário(a)}}.",
+ "abusefilter-reautoconfirm-notallowed": "Você não está autorizado a restaurar o estado autoconfirmado.",
+ "abusefilter-reautoconfirm-done": "O estado autoconfirmado da conta foi restaurado",
+ "abusefilter-status": "{{PLURAL:$1|Da última 1 ação|Das últimas $1 ações}}, $2 ($3%) {{PLURAL:$2|atingiu|atingiram}} o limite de $4 condições, e $5 ($6%) {{PLURAL:$5|correspondeu|corresponderam}} a um dos filtros neste momento ativos.",
+ "abusefilter-edit": "Editando um filtro de abusos",
+ "abusefilter-edit-subtitle": "Editando filtro $1",
+ "abusefilter-edit-subtitle-new": "Criando filtro",
+ "abusefilter-edit-oldwarning": "<strong>Você está editando uma versão antiga deste filtro.\nAs estatísticas transcritas são relativas à versão mais recente do filtro.\nSe gravar as suas modificações, irá sobrepor todas as modificações desde a revisão que você está aeditando.</strong> &bull;\n[[Special:AbuseFilter/history/$2|Voltar ao histórico deste filtro]].",
+ "abusefilter-edit-status-label": "Estatísticas:",
+ "abusefilter-edit-status": "{{PLURAL:$1|Da última $1 ação|Das últimas $1 ações}}, este filtro correspondeu com $2 ($3%).",
+ "abusefilter-edit-status-profile": "{{PLURAL:$1|Da última 1 ação|Das últimas $1 ações}}, este filtro correspondeu com $2 ($3%).\nEm média, o seu tempo de execução é de $4 ms, e consome $5 {{PLURAL:$5|condição|condições}} do seu limite de condições.",
+ "abusefilter-edit-throttled-warning": "'''Aviso:''' Este filtro foi automaticamente identificado como prejudicial. Como medida de prevenção, as seguintes operações não serão executadas ($1). Para remover esta restrição reveja e [[mw:Extension:AbuseFilter/Conditions|otimize]] as suas condições, por favor",
+ "abusefilter-edit-new": "Novo filtro",
+ "abusefilter-edit-save": "Salvar filtro",
+ "abusefilter-edit-id": "ID do filtro:",
+ "abusefilter-edit-switch-editor": "Alterar Editor",
+ "abusefilter-edit-description": "Descrição:\n:''(publicamente visível)''",
+ "abusefilter-edit-field-description": "descrição",
+ "abusefilter-edit-group": "Grupo de filtros:",
+ "abusefilter-edit-flags": "Sinalizações:",
+ "abusefilter-edit-enabled": "Ativar este filtro",
+ "abusefilter-edit-deleted": "Marcar como eliminado",
+ "abusefilter-edit-hidden": "Ocultar detalhes deste filtro do visionamento público",
+ "abusefilter-edit-global": "Filtro global",
+ "abusefilter-edit-rules": "Condições:",
+ "abusefilter-edit-field-conditions": "condições",
+ "abusefilter-edit-notes": "Notas:",
+ "abusefilter-edit-lastmod": "Última modificação do filtro:",
+ "abusefilter-edit-lastmod-text": "$1 por $2",
+ "abusefilter-edit-hitcount": "Correspondências de filtros:",
+ "abusefilter-edit-consequences": "Ações a serem tomadas quando correspondido",
+ "abusefilter-edit-action-warn": "Disparar estas ações após emitir um aviso ao usuário",
+ "abusefilter-edit-action-disallow": "Impedir o usuário de realizar a ação em questão",
+ "abusefilter-edit-action-blockautopromote": "Revogar o estatuto autoconfirmado do usuário",
+ "abusefilter-edit-action-degroup": "Remover o usuário de todos os grupos privilegiados",
+ "abusefilter-edit-action-block": "Bloquear o usuário e/ou endereço IP para edição",
+ "abusefilter-edit-action-blocktalk": "Impedir que o usuário ou o endereço IP editem a sua própria página de discussão",
+ "abusefilter-edit-action-throttle": "Disparar ações apenas se o usuário passar um limite de rapidez",
+ "abusefilter-edit-action-rangeblock": "Bloquear o intervalo do IP respectivo do qual este usuário provém",
+ "abusefilter-edit-action-tag": "Etiquetar a edição para revisão posterior",
+ "abusefilter-edit-throttle-count": "Número de ações a permitir:",
+ "abusefilter-edit-throttle-period": "Período de tempo:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|segundo|segundos}}",
+ "abusefilter-edit-throttle-groups": "Agrupar limitador por:\n:''(um por linha, combinar com vírgulas)''",
+ "abusefilter-edit-warn-message": "Mensagem de sistema para usar como aviso:",
+ "abusefilter-edit-warn-other": "Outra mensagem",
+ "abusefilter-edit-warn-other-label": "Nome da página de outra mensagem:\n:''(sem prefixo MediaWiki)''",
+ "abusefilter-edit-warn-actions": "Ações:",
+ "abusefilter-edit-warn-preview": "Prever mensagem selecionada",
+ "abusefilter-edit-warn-edit": "Criar/editar mensagem selecionada",
+ "abusefilter-edit-tag-tag": "[[Special:Tags|Etiquetas]] a aplicar (uma por linha):",
+ "abusefilter-edit-block-anon-durations": "Duração do bloqueio para os usuários anônimos:",
+ "abusefilter-edit-block-user-durations": "Duração do bloqueio para os usuários registados:",
+ "abusefilter-block-anon": "usuários anônimos",
+ "abusefilter-block-user": "usuários registrados",
+ "abusefilter-edit-denied": "Você não pode ver os detalhes deste filtro porque ele está ocultado da visualização pública.",
+ "abusefilter-edit-main": "Parâmetros do filtro",
+ "abusefilter-edit-done-subtitle": "Filtro editado",
+ "abusefilter-edit-done": "[[Special:AbuseFilter/history/$1/diff/prev/$2|Suas alterações]] ao [[Special:AbuseFilter/$1|filtro $3]] foram salvas.",
+ "abusefilter-edit-badsyntax": "Há um erro de sintaxe no filtro que especificou.\nO resultado de saída do analisador foi: <pre>$1</pre>",
+ "abusefilter-edit-missingfields": "Os seguintes campos são obrigatórios e têm de ser preenchidos: $1",
+ "abusefilter-edit-restricted": "Você não pode editar este filtro, porque ele contém uma ou mais ações restritas.\nPor favor, peça a um usuário com permissão de adicionamento de ações restritas para efetuar a alteração por si.",
+ "abusefilter-edit-viewhistory": "Ver o histórico deste filtro",
+ "abusefilter-edit-history": "Histórico:",
+ "abusefilter-edit-check": "Verificar sintaxe",
+ "abusefilter-edit-badfilter": "O filtro que você especificou não existe",
+ "abusefilter-edit-revert": "Reverter ações tomadas por este filtro",
+ "abusefilter-edit-tools": "Ferramentas:",
+ "abusefilter-edit-test-link": "Testar este filtro com edições recentes",
+ "abusefilter-edit-export": "Exportar este filtro para outra wiki",
+ "abusefilter-edit-syntaxok": "Nenhum erro de sintaxe foi detectado.",
+ "abusefilter-edit-syntaxerr": "Erro de sintaxe detectado: $1",
+ "abusefilter-edit-bad-tags": "Uma ou mais das etiquetas que especificou não são válidas.\nAs etiquetas devem ser curtas, não podem conter caracteres especiais e não podem estar reservadas por outro programa. Tente escolher um novo nome de etiqueta.",
+ "abusefilter-edit-notallowed": "Você não tem permissão para criar ou editar filtros de abuso",
+ "abusefilter-edit-notallowed-global": "Você não está autorizada a criar ou editar filtros de abuso globais",
+ "abusefilter-edit-notallowed-global-custom-msg": "Mensagens de advertência personalizados não são suportadas por filtros globais",
+ "abusefilter-edit-builder-select": "Selecione uma opção para inserir no cursor",
+ "abusefilter-edit-builder-group-op-arithmetic": "Operadores aritméticos",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Adição (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Subtração (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Multiplicação (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Divisão (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Módulo (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Potência (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Operadores de comparação",
+ "abusefilter-edit-builder-op-comparison-equal": "Valor igual a (==)",
+ "abusefilter-edit-builder-op-comparison-equal-strict": "Valor e tipo iguais a (===)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Valor diferente de (!=)",
+ "abusefilter-edit-builder-op-comparison-notequal-strict": "Valor e tipo diferentes de (!==)",
+ "abusefilter-edit-builder-op-comparison-lt": "Menor que (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Maior que (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Menor que ou igual a (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Maior que ou igual a (>=)",
+ "abusefilter-edit-builder-group-op-bool": "Operadores booleanos",
+ "abusefilter-edit-builder-op-bool-not": "Negação (!)",
+ "abusefilter-edit-builder-op-bool-and": "E (&)",
+ "abusefilter-edit-builder-op-bool-or": "Ou (|)",
+ "abusefilter-edit-builder-op-bool-xor": "XOR (^)",
+ "abusefilter-edit-builder-group-misc": "Diversos",
+ "abusefilter-edit-builder-misc-in": "contido num texto (in)",
+ "abusefilter-edit-builder-misc-like": "Corresponde a um padrão (like)",
+ "abusefilter-edit-builder-misc-rlike": "Corresponde a uma regex (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "Corresponde a regex, insensível a maiúsculas e minúsculas (irlike)",
+ "abusefilter-edit-builder-misc-contains": "Texto da esquerda contém o da direita (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "Texto literal (\"\")",
+ "abusefilter-edit-builder-misc-tern": "Operador ternário (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "Condicional (if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "Funções",
+ "abusefilter-edit-builder-funcs-length": "Comprimento do texto (length)",
+ "abusefilter-edit-builder-funcs-lcase": "Para minúscula (lcase)",
+ "abusefilter-edit-builder-funcs-ucase": "Para letras maiúsculas (ucase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "Normalizar caracteres confundíveis (ccnorm)",
+ "abusefilter-edit-builder-funcs-ccnorm-contains-any": "Normalizar um texto e nele pesquisar vários subtextos no modo OU (ccnorm_contains_any)",
+ "abusefilter-edit-builder-funcs-ccnorm-contains-all": "Normalizar um texto e nele pesquisar vários subtextos no modo E (ccnorm_contains_all)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "Remover caracteres duplos (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "Caracteres especiais / total de caracteres (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "Normalizar (norm)",
+ "abusefilter-edit-builder-funcs-count": "Número de vezes que o texto X aparece no texto Y (count)",
+ "abusefilter-edit-builder-funcs-rcount": "Número de vezes que a regex X aparece no texto Y (rcount)",
+ "abusefilter-edit-builder-funcs-get_matches": "Matriz de correspondências regex num texto para cada grupo de captura (get_matches)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "Remover espaços em branco (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "Remover caracteres especiais (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "O IP está no intervalo? (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "Pesquisar num texto vários subtextos no modo OU. (contains_any)",
+ "abusefilter-edit-builder-funcs-contains-all": "Pesquisar num texto vários subtextos no modo E. (contains_all)",
+ "abusefilter-edit-builder-funcs-substr": "Subtexto (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "Posição do subtexto no texto (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "Substituir o subtexto pelo texto (str_replace)",
+ "abusefilter-edit-builder-funcs-rescape": "Sequência de escape literal na expressão regular (rescape)",
+ "abusefilter-edit-builder-funcs-set_var": "Atribuir variável (set_var)",
+ "abusefilter-edit-builder-group-vars": "Variáveis",
+ "abusefilter-edit-builder-vars-accountname": "Nome de conta (na criação da conta)",
+ "abusefilter-edit-builder-vars-timestamp": "Data Unix da mudança",
+ "abusefilter-edit-builder-vars-timestamp-expanded": "Timestamp do log",
+ "abusefilter-edit-builder-vars-action": "Ação",
+ "abusefilter-edit-builder-vars-addedlines": "Linhas adicionadas na edição",
+ "abusefilter-edit-builder-vars-delta": "Alteração de tamanho na edição",
+ "abusefilter-edit-builder-vars-diff": "Diferença unificada das modificações feitas pela edição",
+ "abusefilter-edit-builder-vars-newsize": "Tamanho de página novo",
+ "abusefilter-edit-builder-vars-oldsize": "Tamanho de página anterior",
+ "abusefilter-edit-builder-vars-old-content-model": "Modelo antigo de conteúdo",
+ "abusefilter-edit-builder-vars-new-content-model": "Novo modelo de conteúdo",
+ "abusefilter-edit-builder-vars-removedlines": "Linhas removidas na edição",
+ "abusefilter-edit-builder-vars-summary": "Resumo ou motivo da edição",
+ "abusefilter-edit-builder-vars-article-id": "ID da página",
+ "abusefilter-edit-builder-vars-article-ns": "Domínio da página",
+ "abusefilter-edit-builder-vars-article-text": "Título da página (sem o domínio)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Título completo da página",
+ "abusefilter-edit-builder-vars-article-views": "Visualização de páginas",
+ "abusefilter-edit-builder-vars-movedfrom-id": "ID da página fonte da movimentação",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "Domínio da página fonte da movimentação",
+ "abusefilter-edit-builder-vars-movedfrom-text": "Título da página fonte da movimentação",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "Título completo da página fonte da movimentação",
+ "abusefilter-edit-builder-vars-movedto-id": "ID da página destino da movimentação",
+ "abusefilter-edit-builder-vars-movedto-ns": "Domínio da página destino da movimentação",
+ "abusefilter-edit-builder-vars-movedto-text": "Título da página destino da movimentação",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "Título completo da página destino da movimentação",
+ "abusefilter-edit-builder-vars-user-editcount": "Contagem de edições do usuário",
+ "abusefilter-edit-builder-vars-user-age": "Idade da conta de usuário",
+ "abusefilter-edit-builder-vars-user-name": "Nome da conta de usuário",
+ "abusefilter-edit-builder-vars-user-groups": "Grupos (incluindo implícitos) nos quais o usuário se encontra",
+ "abusefilter-edit-builder-vars-user-rights": "Privilégios que o(a) usuário(a) tem",
+ "abusefilter-edit-builder-vars-user-blocked": "Se o usuário está bloqueado",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "Há quanto tempo o endereço de e-mail foi confirmado",
+ "abusefilter-edit-builder-vars-recent-contributors": "Últimos dez usuários que colaboraram na página",
+ "abusefilter-edit-builder-vars-first-contributor": "Primeiro usuário a contribuir na página",
+ "abusefilter-edit-builder-vars-movedfrom-recent-contributors": "Últimos dez usuários que colaboraram na página de origem da movimentação",
+ "abusefilter-edit-builder-vars-movedfrom-first-contributor": "Primeiro usuário que colaborou na página de origem da movimentação",
+ "abusefilter-edit-builder-vars-movedto-recent-contributors": "Últimos dez usuários que colaboraram na página de destino da movimentação",
+ "abusefilter-edit-builder-vars-movedto-first-contributor": "Primeiro usuário que colaborou na página de destino da movimentação",
+ "abusefilter-edit-builder-vars-all-links": "Todos os links externos no novo texto",
+ "abusefilter-edit-builder-vars-added-links": "Todos os links externos adicionados na edição",
+ "abusefilter-edit-builder-vars-removed-links": "Todos os links externos removidos na edição",
+ "abusefilter-edit-builder-vars-old-text": "Texto Wiki anterior da página, antes da edição",
+ "abusefilter-edit-builder-vars-new-text": "Nova página com texto wiki, após a edição",
+ "abusefilter-edit-builder-vars-new-pst": "Nova página de wiki texto, transformada antes de salvar",
+ "abusefilter-edit-builder-vars-diff-pst": "Diferenças unificadas das alterações nesta edição, transformadas antes da gravação",
+ "abusefilter-edit-builder-vars-addedlines-pst": "Linhas adicionadas na edição, transformadas antes da gravação",
+ "abusefilter-edit-builder-vars-new-text-stripped": "Nova página de texto, sem qualquer formatação",
+ "abusefilter-edit-builder-vars-new-html": "Fonte HTML analisada da nova revisão",
+ "abusefilter-edit-builder-vars-restrictions-edit": "Nível de proteção de edição da página",
+ "abusefilter-edit-builder-vars-restrictions-move": "Nível de proteção de movimentação da página",
+ "abusefilter-edit-builder-vars-restrictions-create": "Proteção para criação da página",
+ "abusefilter-edit-builder-vars-restrictions-upload": "Proteção para carregamento do arquivo",
+ "abusefilter-edit-builder-vars-movedfrom-restrictions-edit": "Nível de proteção de edições da página de origem da movimentação",
+ "abusefilter-edit-builder-vars-movedfrom-restrictions-move": "Nível de proteção de movimentações da página de origem da movimentação",
+ "abusefilter-edit-builder-vars-movedfrom-restrictions-create": "Proteção de criação da página de origem da movimentação",
+ "abusefilter-edit-builder-vars-movedfrom-restrictions-upload": "Proteção de carregamento do arquivo de origem da movimentação",
+ "abusefilter-edit-builder-vars-movedto-restrictions-edit": "Nível de proteção de edições da página de destino da movimentação",
+ "abusefilter-edit-builder-vars-movedto-restrictions-move": "Nível de proteção de movimentações da página de destino da movimentação",
+ "abusefilter-edit-builder-vars-movedto-restrictions-create": "Proteção de criação da página de destino da movimentação",
+ "abusefilter-edit-builder-vars-movedto-restrictions-upload": "Proteção de carregamento do arquivo de destino da movimentação",
+ "abusefilter-edit-builder-vars-old-text-stripped": "Texto anterior da página, sem a formatação",
+ "abusefilter-edit-builder-vars-old-links": "Links na página, antes da edição",
+ "abusefilter-edit-builder-vars-old-html": "Texto wiki anterior da página, convertido para HTML",
+ "abusefilter-edit-builder-vars-minor-edit": "Se a edição está marcada ou não como menor",
+ "abusefilter-edit-builder-vars-file-sha1": "Hash SHA1 do conteúdo do arquivo",
+ "abusefilter-edit-builder-vars-file-size": "Tamanho do arquivo em bytes",
+ "abusefilter-edit-builder-vars-file-mime": "Tipo do arquivo MIME",
+ "abusefilter-edit-builder-vars-file-mediatype": "Tipo do arquivo de mídia",
+ "abusefilter-edit-builder-vars-file-width": "Largura do arquivo em pixels",
+ "abusefilter-edit-builder-vars-file-height": "Altura do arquivo em pixels",
+ "abusefilter-edit-builder-vars-file-bits-per-channel": "Bits por canal de cor do arquivo",
+ "abusefilter-edit-block-options": "Opções de bloqueio:",
+ "abusefilter-filter-log": "Modificações recentes de filtros",
+ "abusefilter-history": "Histórico de modificações do Filtro de Abusos #$1",
+ "abusefilter-history-foruser": "Modificações por $1",
+ "abusefilter-history-hidden": "Oculto",
+ "abusefilter-history-enabled": "Ativo",
+ "abusefilter-history-global": "Global",
+ "abusefilter-history-timestamp": "Tempo",
+ "abusefilter-history-user": "Usuário",
+ "abusefilter-history-public": "Descrição pública do filtro",
+ "abusefilter-history-flags": "Sinalizações",
+ "abusefilter-history-filter": "Regra de filtro",
+ "abusefilter-history-comments": "Comentários",
+ "abusefilter-history-actions": "Ações",
+ "abusefilter-history-backedit": "Voltar ao editor de filtro",
+ "abusefilter-history-deleted": "Excluído",
+ "abusefilter-history-filterid": "Filtro",
+ "abusefilter-history-select-legend": "Melhorar pesquisa",
+ "abusefilter-history-select-user": "Usuário:",
+ "abusefilter-history-select-filter": "ID do filtro:",
+ "abusefilter-history-select-submit": "Refinar",
+ "abusefilter-history-diff": "Mudanças",
+ "abusefilter-history-error-hidden": "O filtro que solicitou está ocultado e não pode ver o seu histórico.",
+ "abusefilter-exception-unexpectedatend": "“$2” inesperado na posição $1.",
+ "abusefilter-exception-expectednotfound": "Código $2, esperado na posição $1, não foi encontrado (foi encontrado $3 $4).",
+ "abusefilter-exception-unrecognisedkeyword": "Palavra-chave $2 não reconhecida na posição $1.",
+ "abusefilter-exception-unexpectedtoken": "Excerto “$3” (de tipo $2) inesperado na posição $1.",
+ "abusefilter-exception-unclosedstring": "Texto com início na posição $1, não foi fechado.",
+ "abusefilter-exception-invalidoperator": "Operador “$2” inválido, na posição $1.",
+ "abusefilter-exception-unrecognisedtoken": "Excerto “$2” não reconhecido, na posição $1.",
+ "abusefilter-exception-noparams": "Não foram fornecidos parâmetros à função “$2”, na posição $1.",
+ "abusefilter-exception-dividebyzero": "Tentativa ilegal de dividir $2 por zero, na posição $1.",
+ "abusefilter-exception-unrecognisedvar": "Variável não reconhecida $2, na posição $1.",
+ "abusefilter-exception-notenoughargs": "Argumentos insuficientes para a função $2, na posição $1.\nEsperava-se $3 {{PLURAL:$3|argumento|argumentos}}, obteve-se $4",
+ "abusefilter-exception-regexfailure": "Erro na expressão regular “$3”, na posição $1: “$2”",
+ "abusefilter-exception-overridebuiltin": "Sobreposição ilegal da variável integrada “$2”, na posição $1.",
+ "abusefilter-exception-outofbounds": "Solicitando item $2 não existente na lista (tamanho da lista = $3) na posição $1.",
+ "abusefilter-exception-notlist": "Solicitando uma entrada de matriz a uma não matriz, na posição $1.",
+ "abusefilter-exception-unclosedcomment": "Comentário por fechar, no caráter $1.",
+ "abusefilter-action-tag": "Etiquetar",
+ "abusefilter-action-throttle": "Limitador",
+ "abusefilter-action-warn": "Avisar",
+ "abusefilter-action-blockautopromote": "Bloquear autopromoção",
+ "abusefilter-action-block": "Bloquear",
+ "abusefilter-action-degroup": "Remover de grupos",
+ "abusefilter-action-rangeblock": "Bloqueio de intervalo",
+ "abusefilter-action-disallow": "Desautorizar",
+ "abusefilter-revert-title": "Reverter todas as alterações feitas pelo filtro $1",
+ "abusefilter-revert-intro": "Este formulário permite-lhe reverter todas as alterações feitas pelo filtro de abusos devido ao filtro $1.\nPor favor, tenha cuidado ao usar esta ferramenta.",
+ "abusefilter-revert-preview-item": "$1: $2 {{GENDER:$7|fez}} $3 em $4.\nAções a reverter: $5 ($6)",
+ "abusefilter-revert-search-legend": "Selecione as ações do filtro de abusos a reverter",
+ "abusefilter-revert-periodstart": "Início do período:",
+ "abusefilter-revert-periodend": "Fim do período:",
+ "abusefilter-revert-search": "Selecionar ações",
+ "abusefilter-revert-filter": "ID do filtro:",
+ "abusefilter-revert-preview-intro": "Abaixo estão as alterações feitas pelo filtro de abusos que serão revertidas por esta operação.\nPor favor, verifique-as cuidadosamente e clique \"{{int:abusefilter-revert-confirm}}\" para confirmar a sua seleção.",
+ "abusefilter-revert-confirm-legend": "Confirmar a reversão",
+ "abusefilter-revert-confirm": "Confirmar",
+ "abusefilter-revert-success": "Reverteu todas as alterações feitas pelo filtro de abusos devido ao [[Special:AbuseFilter/$1|filtro $2]].",
+ "abusefilter-revert-reason": "Reversão automática de todas as alterações feitas pelo filtro de abusos devido ao filtro $1.\nMotivo dado: $2",
+ "abusefilter-revert-reasonfield": "Motivo:",
+ "abusefilter-test": "Testar um filtro nas edições anteriores",
+ "abusefilter-test-intro": "Esta página permite verificar um filtro introduzido na caixa abaixo diante {{PLURAL:$1|da última alteração|das últimas alterações}}.\nPara carregar um filtro existente, insira o ID do filtro na caixa abaixo da caixa de edição e clique no botão \"{{int:abusefilter-test-load}}\".",
+ "abusefilter-test-legend": "Teste de filtro",
+ "abusefilter-test-load-filter": "Carregar filtro com ID:",
+ "abusefilter-test-submit": "Testar",
+ "abusefilter-test-load": "Carregar",
+ "abusefilter-test-user": "Alterações pelo usuário:",
+ "abusefilter-test-period-start": "Alterações feitas depois:",
+ "abusefilter-test-period-end": "Alterações feitas antes de:",
+ "abusefilter-test-page": "Alterações à página:",
+ "abusefilter-test-shownegative": "Mostrar alterações que não correspondam ao filtro",
+ "abusefilter-test-syntaxerr": "O filtro que introduziu continha um erro de sintaxe.\nPara ver uma explicação completa clique o botão \"Verificar sintaxe\".",
+ "abusefilter-test-badtitle": "O título de página que você inseriu estava inválido. Esse deve conter um ou mais caracteres que não podem ser utilizados em títulos.",
+ "abusefilter-changeslist-examine": "examinar",
+ "abusefilter-examine": "Examinar alterações individuais",
+ "abusefilter-examine-intro": "Esta página permite-lhe examinar as variáveis geradas pelo Filtro de Abusos para uma alteração individual, e testá-la com os filtros.",
+ "abusefilter-examine-legend": "Selecionar alterações",
+ "abusefilter-examine-diff": "URL de diferenças:",
+ "abusefilter-examine-user": "Usuário:",
+ "abusefilter-examine-title": "Título da página:",
+ "abusefilter-examine-submit": "Pesquisar",
+ "abusefilter-examine-vars": "Variáveis geradas para esta alteração",
+ "abusefilter-examine-test": "Testar esta alteração com o filtro",
+ "abusefilter-examine-test-button": "Testar filtro",
+ "abusefilter-examine-match": "O filtro coincide com esta alteração.",
+ "abusefilter-examine-nomatch": "O filtro não coincide com esta alteração.",
+ "abusefilter-examine-syntaxerror": "O filtro tem sintaxe inválida",
+ "abusefilter-examine-notfound": "A alteração solicitada não foi encontrada.",
+ "abusefilter-examine-incompatible": "A alteração solicitada não é suportada pelo Filtro de Abusos",
+ "abusefilter-examine-noresults": "Não foram encontrados resultados para os parâmetros de pesquisa fornecidos.",
+ "abusefilter-topnav": "'''Navegação no Filtro de Abusos'''",
+ "abusefilter-topnav-home": "Início",
+ "abusefilter-topnav-test": "Teste em bloco",
+ "abusefilter-topnav-examine": "Examinar edições passadas",
+ "abusefilter-topnav-log": "Registro de abusos",
+ "abusefilter-topnav-tools": "Ferramentas de depuração",
+ "abusefilter-topnav-import": "Importar filtro",
+ "abusefilter-log-name": "Registro do filtro de abusos",
+ "abusefilter-log-header": "Este registro mostra um resumo das alterações efetuadas aos filtros.\nPara detalhes completos, ver [[Special:AbuseFilter/history|a lista]] de alterações recentes a filtros.",
+ "abusefilter-logentry-create": "$1 {{GENDER:$2|criou}} $4 ($5)",
+ "abusefilter-logentry-modify": "$1 {{GENDER:$2|modificou}} $4 ($5)",
+ "abusefilter-log-noresults": "Nenhum resultado",
+ "abusefilter-diff-title": "Diferenças entre versões",
+ "abusefilter-diff-item": "Item",
+ "abusefilter-diff-version": "Versão de $1 {{GENDER:$3|por}} $2",
+ "abusefilter-diff-info": "Informações básicas",
+ "abusefilter-diff-pattern": "Condições do filtro",
+ "abusefilter-diff-invalid": "Não foi possível obter as versões requeridas",
+ "abusefilter-diff-backhistory": "Voltar ao histórico do filtro",
+ "abusefilter-diff-prev": "Alteração antiga",
+ "abusefilter-diff-next": "Alteração recente",
+ "abusefilter-import-intro": "Você pode usar esta interface para importar filtros de outros wikis.\nNo wiki de origem, clique em “{{int:abusefilter-edit-export}}”, sob “{{int:abusefilter-edit-tools}}” na interface de edição.\nCopie o conteúdo da caixa de texto exibida, colando-o nesta caixa de texto; em seguida, clique em “{{int:abusefilter-import-submit}}”.",
+ "abusefilter-import-submit": "Importar dados",
+ "abusefilter-group-default": "Padrão",
+ "abusefilter-http-error": "Ocorreu um erro HTTP: $1.",
+ "abusefilter-view-private-submit": "Ver detalhes privados",
+ "abusefilter-view-private": "Ver detalhes privados",
+ "abusefilter-view-private-reason": "Razão para acessar detalhes privados:",
+ "abusefilter-log-details-id": "ID de log",
+ "abusefilter-invalid-request": "Pedido inválido! Você deve acessar os detalhes do registro privado através do formulário em [[Special:AbuseLog/$1]] e fornecer um motivo.",
+ "abusefilter-invalid-request-noid": "Pedido inválido! Você deve acessar os detalhes do registro privado através do formulário na página de detalhes do registro de abuso e fornecer um motivo.",
+ "log-description-abusefilterprivatedetails": "Este registro mostra uma lista de vezes em que um usuário acessou os detalhes privados de um registro de abuso.",
+ "abusefilter-noreason": "Aviso: para ver os detalhes particulares deste log, você deve fornecer um motivo.",
+ "abusefilter-log-ip-not-available": "Não disponível",
+ "tag-abusefilter-condition-limit": "limite de condições atingido",
+ "tag-abusefilter-condition-limit-description": "Edições ou outros acontecimentos que não puderam ser verificados por todos os [[Special:AbuseFilter|filtros de abuso]] ativos ([[mw:Extension:AbuseFilter/Conditions|ajuda]]).",
+ "apihelp-abusefiltercheckmatch-description": "Verifique para ver se um AbuseFilter corresponde a um conjunto de variáveis, evento de AbuseFilter com editor registrado.\n\nvars, rcid ou logid são requeridos ainda que somente um possa ser usado.",
+ "apihelp-abusefiltercheckmatch-summary": "Verifique se um AbuseFilter corresponde a um conjunto de variáveis, o evento AbuseFilter foi registrado pelo editor.",
+ "apihelp-abusefiltercheckmatch-extended-description": "vars, rcid ou logid é necessário, no entanto, apenas um pode ser usado.",
+ "apihelp-abusefiltercheckmatch-param-filter": "O texto do filtro completo para verificar por uma correspondência.",
+ "apihelp-abusefiltercheckmatch-param-vars": "Matriz codificada JSON de variáveis para um teste de comparação.",
+ "apihelp-abusefiltercheckmatch-param-rcid": "ID da mudança recente para verificação.",
+ "apihelp-abusefiltercheckmatch-param-logid": "ID do registro do filtro de Abuso para verificação.",
+ "apihelp-abusefiltercheckmatch-example-1": "Testar se a mudança recente do ID 15 corresponde a um filtro simples",
+ "apihelp-abusefilterchecksyntax-description": "Verificar a sintaxe de um filtro AbuseFilter.",
+ "apihelp-abusefilterchecksyntax-summary": "Verificar a sintaxe de um filtro AbuseFilter.",
+ "apihelp-abusefilterchecksyntax-param-filter": "O texto completo do filtro para verificar a sintaxe.",
+ "apihelp-abusefilterchecksyntax-example-1": "Verificar a sintaxe de um filtro válido",
+ "apihelp-abusefilterchecksyntax-example-2": "Verificar a sintaxe de um filtro inválido",
+ "apihelp-abusefilterevalexpression-description": "Avalia uma expressão AbuseFilter.",
+ "apihelp-abusefilterevalexpression-summary": "Avalia uma expressão AbuseFilter.",
+ "apihelp-abusefilterevalexpression-param-expression": "A expressão para avaliar.",
+ "apihelp-abusefilterevalexpression-example-1": "Avaliar uma simples expressão",
+ "apihelp-abusefilterunblockautopromote-description": "Desbloqueia um usuário de receber auto-promoções devido a uma consequência do abusefilter.",
+ "apihelp-abusefilterunblockautopromote-summary": "Desbloqueia um usuário de receber auto-promoções devido a uma consequência do abusefilter.",
+ "apihelp-abusefilterunblockautopromote-param-user": "Nome do usuário que deseja desbloquear.",
+ "apihelp-abusefilterunblockautopromote-example-1": "Remover o bloqueio por auto-promoção de [[User:Example]]",
+ "apihelp-query+abusefilters-description": "Mostrar detalhes dos filtros de abuso.",
+ "apihelp-query+abusefilters-summary": "Mostrar detalhes dos filtros de abuso.",
+ "apihelp-query+abusefilters-param-startid": "O ID do filtro para começar a enumeração.",
+ "apihelp-query+abusefilters-param-endid": "O ID do filtro para parar a enumeração.",
+ "apihelp-query+abusefilters-param-show": "Mostrar apenas filtros que atendam a esses critérios.",
+ "apihelp-query+abusefilters-param-limit": "O número máximo de filtros para listar.",
+ "apihelp-query+abusefilters-param-prop": "Que propriedades obter.",
+ "apihelp-query+abusefilters-example-1": "Lista de filtros públicos habilitados",
+ "apihelp-query+abusefilters-example-2": "Mostrar alguns detalhes sobre os filtros",
+ "apihelp-query+abuselog-description": "Mostrar os eventos que foram detectados por um dos filtros de abuso.",
+ "apihelp-query+abuselog-summary": "Mostrar os eventos que foram detectados por um dos filtros de abuso.",
+ "apihelp-query+abuselog-param-start": "O timestamp para começar a enumeração.",
+ "apihelp-query+abuselog-param-end": "O timestamp para parar a enumeração.",
+ "apihelp-query+abuselog-param-user": "Mostrar apenas as entradas feitas por um determinado usuário ou endereço IP.",
+ "apihelp-query+abuselog-param-title": "Mostrar apenas as entradas ocorridas em uma determinada página.",
+ "apihelp-query+abuselog-param-filter": "Mostrar apenas as entradas que foram capturadas por um determinado ID do filtro.",
+ "apihelp-query+abuselog-param-limit": "A quantidade máxima de entradas para listar.",
+ "apihelp-query+abuselog-param-prop": "Que propriedades obter.",
+ "apihelp-query+abuselog-param-wiki": "Wiki para mostrar hits de.",
+ "apihelp-query+abuselog-example-1": "Mostrar entradas de registro recentes",
+ "apihelp-query+abuselog-example-2": "Mostrar entradas de registro recentes para [[API]]",
+ "apierror-abusefilter-canttest": "Você não tem permissão para testar filtros de edições.",
+ "apierror-abusefilter-cantcheck": "Você não tem permissão para conferir a sintaxe de filtros de edições.",
+ "apierror-abusefilter-nosuchlogid": "Não há entrada no registro de abusos com o id $1.",
+ "apierror-abusefilter-badsyntax": "O filtro tem sintaxe inválida."
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/pt.json b/www/wiki/extensions/AbuseFilter/i18n/pt.json
new file mode 100644
index 00000000..3b15c264
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/pt.json
@@ -0,0 +1,550 @@
+{
+ "@metadata": {
+ "authors": [
+ "Alchimista",
+ "Bonifácio",
+ "Fúlvio",
+ "Giro720",
+ "GoEThe",
+ "Hamilton Abreu",
+ "Helder.wiki",
+ "Imperadeiro98",
+ "Lijealso",
+ "Luckas",
+ "MF-Warburg",
+ "Malafaya",
+ "McDutchie",
+ "OTAVIO1981",
+ "Pedroca cerebral",
+ "SandroHc",
+ "Sarilho1",
+ "Waldir",
+ "555",
+ "Vitorvicentevalente",
+ "He7d3r",
+ "Opraco",
+ "Matma Rex",
+ "Mansil",
+ "Athena in Wonderland",
+ "Daimona Eaytoy"
+ ]
+ },
+ "abusefilter-desc": "Aplica heurísticas automáticas às edições.",
+ "abusefilter": "Configuração do filtro de abusos",
+ "abuselog": "Registo de abusos",
+ "abusefilter-intro": "Bem-vindo à interface de gestão do Filtro de Abusos.\nO Filtro de Abusos é um mecanismo de software automatizado de aplicação de heurísticas automáticas a todas as operações.\nEsta interface mostra uma lista dos filtros definidos e permite que estes sejam modificados.",
+ "abusefilter-mustbeeditor": "Por razões de segurança, apenas os utilizadores com o direito de modificar filtros de abuso podem usar esta interface.",
+ "abusefilter-warning": "'''Aviso:''' esta operação foi identificada de forma automática como prejudicial.\nAs operações não construtivas serão revertidas rapidamente,\ne a repetição destas edições resultará no bloqueio da sua conta ou do seu endereço IP.\nSe crê que esta operação é construtiva, pode enviar novamente para confirmá-la.\nSegue-se uma breve descrição da regra de prevenção de abusos que detetou a sua operação: $1",
+ "abusefilter-disallowed": "Esta operação foi identificada automaticamente como prejudicial,\ne foi consequentemente desautorizada.\nSe crê que a sua edição foi construtiva, por favor contacte um administrador, e informe-o do que estava a tentar fazer.\nSegue-se uma breve descrição da regra de prevenção de abusos que detetou a sua ação: $1",
+ "abusefilter-blocked-display": "Esta operação foi automaticamente identificada como prejudicial e está impedido de executá-la.\nAdicionalmente, para proteger a wiki {{SITENAME}}, foram bloqueadas as edições pela sua conta e por todos os endereços IP associados.\nSe considera que este bloqueio é indevido, por favor contacte um administrador.\nSegue-se uma breve descrição da regra de prevenção de abusos que detetou a sua ação: $1",
+ "abusefilter-degrouped": "Esta operação foi identificada automaticamente como prejudicial.\nEm consequência, foi bloqueada, e, já que se suspeita que a sua conta esteja comprometida, todas as permissões foram removidas.\nSe crê que esta ação é incorreta, por favor contacte um burocrata indicando uma justificação para a operação, e as suas permissões poderão ser repostas.\nSegue-se uma breve descrição da regra de prevenção de abusos que detetou a sua ação: $1",
+ "abusefilter-autopromote-blocked": "Esta ação foi identificada automaticamente como prejudicial, e foi bloqueada.\nAlém disso, como medida de segurança, alguns privilégios automaticamente concedidos a contas estabelecidas foram temporariamente removidos da sua conta.\nSegue-se uma breve descrição da regra de prevenção de abusos que detetou a sua ação: $1",
+ "abusefilter-blocker": "Filtro de abusos",
+ "abusefilter-blockreason": "Automaticamente bloqueado pelo filtro de abusos.\nDescrição da regra que detetou a sua ação: $1",
+ "abusefilter-degroupreason": "Direitos automaticamente retirados pelo filtro de abusos. Descrição da regra: $1",
+ "abusefilter-accountreserved": "Este nome de conta está reservado para uso pelo filtro de abusos.",
+ "right-abusefilter-modify": "Modificar filtros de abuso",
+ "right-abusefilter-view": "Ver filtros de abuso",
+ "right-abusefilter-log": "Ver o registo de abusos",
+ "right-abusefilter-log-detail": "Ver entradas detalhadas do registo de abusos",
+ "right-abusefilter-private": "Ver dados privados no registo de abusos",
+ "right-abusefilter-private-log": "Ver o registo de consultas dos detalhes privados do filtro de abusos",
+ "right-abusefilter-modify-restricted": "Modificar filtros de abuso com ações restritas",
+ "right-abusefilter-revert": "Reverter todas as alterações feitas por um dado filtro de abuso",
+ "right-abusefilter-view-private": "Ver filtros de abuso marcados como privados",
+ "right-abusefilter-log-private": "Mostrar entradas de registo de filtros de abuso marcados como privados",
+ "right-abusefilter-hide-log": "Ocultar entradas do filtro de abusos",
+ "right-abusefilter-hidden-log": "Ver entradas ocultadas do registo de abusos",
+ "right-abusefilter-modify-global": "Criar ou modificar os filtros globais de abusos",
+ "action-abusefilter-modify": "modificar filtros de abuso",
+ "action-abusefilter-view": "ver filtros de abuso",
+ "action-abusefilter-log": "ver o registo de abusos",
+ "action-abusefilter-log-detail": "ver entradas detalhadas do registo de abusos",
+ "action-abusefilter-private": "ver dados privados do registo de abusos",
+ "action-abusefilter-private-log": "ver o registo de consultas dos detalhes privados do filtro de abusos",
+ "action-abusefilter-modify-restricted": "modificar filtros de abuso com ações restritas",
+ "action-abusefilter-revert": "reverter todas as alterações feitas por um dado filtro de abuso",
+ "action-abusefilter-view-private": "ver filtros de abuso marcados como privados",
+ "action-abusefilter-log-private": "ver registos dos filtros de abuso marcados como privados",
+ "abusefilter-log": "Registo do filtro de abusos",
+ "abusefilter-log-summary": "Este registo mostra uma lista de todas as ações captadas pelos filtros.",
+ "abusefilter-log-search": "Pesquisar o registo de abusos",
+ "abusefilter-log-search-user": "Utilizador:",
+ "abusefilter-log-search-filter": "ID dos filtros (separar com barras verticais):",
+ "abusefilter-log-search-title": "Título:",
+ "abusefilter-log-search-wiki": "Wiki:",
+ "abusefilter-log-search-impact": "Impacto:",
+ "abusefilter-log-search-impact-all": "Todas as ações",
+ "abusefilter-log-search-impact-saved": "Apenas alterações gravadas",
+ "abusefilter-log-search-impact-not-saved": "Sem alterações gravadas",
+ "abusefilter-log-search-entries-label": "Visibilidade:",
+ "abusefilter-log-search-entries-all": "Todas as entradas",
+ "abusefilter-log-search-entries-hidden": "Só as entradas ocultadas",
+ "abusefilter-log-search-entries-visible": "Só as entradas visíveis",
+ "abusefilter-log-search-action-taken-label": "Ação realizada:",
+ "abusefilter-log-search-action-taken-any": "Qualquer",
+ "abusefilter-log-search-submit": "Pesquisar",
+ "abusefilter-log-entry": "$1: $2 {{GENDER:$8|acionou}} um filtro de abusos ao {{GENDER:$8|executar}} a operação \"$3\" em $4.\nAções tomadas: $5;\nDescrição do filtro: $6",
+ "abusefilter-log-entry-withdiff": "$1: $2 {{GENDER:$8|acionou}} um filtro de abusos ao {{GENDER:$8|executar}} a operação \"$3\" em $4.\nAções tomadas: $5;\nDescrição do filtro: $6 ($7)",
+ "abusefilter-log-detailedentry-meta": "$1: $2 {{GENDER:$9|acionou}} o filtro $3 ao {{GENDER:$9|executar}} a operação \"$4\" em $5.\nAções tomadas: $6;\nDescrição do filtro: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "filtro global $1",
+ "abusefilter-log-detailedentry-local": "filtro $1",
+ "abusefilter-log-detailslink": "detalhes",
+ "abusefilter-log-diff": "dif",
+ "abusefilter-log-hidelink": "ajustar a visibilidade",
+ "abusefilter-log-details-legend": "Detalhes da entrada de registo $1",
+ "abusefilter-log-details-var": "Variável",
+ "abusefilter-log-details-val": "Valor",
+ "abusefilter-log-details-vars": "Parâmetros de ação",
+ "abusefilter-log-details-private": "Detalhes do registo privado",
+ "abusefilter-log-details-ip": "Endereço IP de origem",
+ "abusefilter-log-details-checkuser": "Verificação de utilizadores",
+ "abusefilter-log-noactions": "nenhuma",
+ "abusefilter-log-details-diff": "Modificações feitas na edição",
+ "abusefilter-log-linkoncontribs": "registo de abusos",
+ "abusefilter-log-linkoncontribs-text": "Registo de abusos para {{GENDER:$1|este utilizador|esta utilizadora}}",
+ "abusefilter-log-hidden": "(entrada ocultada)",
+ "abusefilter-log-hidden-implicit": "(oculto porque a revisão foi eliminada)",
+ "abusefilter-log-cannot-see-details": "Não tem permissão para ver os detalhes desta entrada.",
+ "abusefilter-log-cannot-see-private-details": "Não tem permissão para ver os detalhes privados desta entrada.",
+ "abusefilter-log-nonexistent": "Não existe nenhuma entrada com o identificador fornecido.",
+ "abusefilter-log-details-hidden": "Não pode ver os detalhes desta entrada porque estes estão ocultados ao público.",
+ "abusefilter-log-private-not-included": "Um ou mais ID do(s) filtro(s) especificado(s) são particular(es). Por você não ter permissão para ver detalhes de filtros particulares, estes filtros não foram adicionados ao resultado da busca.",
+ "abusefilter-log-hide-legend": "Ocultar entrada",
+ "abusefilter-log-hide-id": "ID da entrada:",
+ "abusefilter-log-hide-hidden": "Ocultar esta entrada da vista do público",
+ "abusefilter-log-hide-reason": "Motivo:",
+ "abusefilter-log-hide-reason-other": "Outro motivo/motivo adicional:",
+ "abusefilter-log-hide-forbidden": "Não tem permissão para ocultar\nentradas do registo de abusos.",
+ "abusefilter-logentry-suppress": "ocultou [[$1]]",
+ "abusefilter-logentry-unsuppress": "revelou [[$1]]",
+ "logentry-abusefilter-hit": "$1 {{GENDER:$2|acionou}} o filtro $4, ao {{GENDER:$2|executar}} a operação \"$5\" em $3.\nAções tomadas: $6 ($7)",
+ "log-action-filter-abusefilter": "Tipo de alteração de filtro:",
+ "log-action-filter-abusefilter-create": "Criação de novos filtros",
+ "log-action-filter-abusefilter-modify": "Modificação de filtros",
+ "logentry-abusefilterprivatedetails-access": "$1 {{GENDER:$2|acedeu}} os detalhes privados de $3",
+ "abusefilterprivatedetails-log-name": "Registo de consulta dos detalhes privados do filtro de abusos",
+ "abusefilter-management": "Administração do filtro de abusos",
+ "abusefilter-list": "Todos os filtros",
+ "abusefilter-list-id": "ID do filtro",
+ "abusefilter-list-pattern": "Padrão",
+ "abusefilter-list-status": "Estado",
+ "abusefilter-list-public": "Descrição pública",
+ "abusefilter-list-consequences": "Consequências",
+ "abusefilter-list-visibility": "Visibilidade",
+ "abusefilter-list-hitcount": "Número de deteções",
+ "abusefilter-list-edit": "Editar",
+ "abusefilter-list-details": "Detalhes",
+ "abusefilter-list-limit": "Número por página:",
+ "abusefilter-list-lastmodified": "Última modificação",
+ "abusefilter-list-group": "Grupo de filtros",
+ "abusefilter-hidden": "Privado",
+ "abusefilter-unhidden": "Público",
+ "abusefilter-enabled": "Ativado",
+ "abusefilter-deleted": "Eliminado",
+ "abusefilter-disabled": "Desativado",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|resultado|resultados}}",
+ "abusefilter-new": "Criar um filtro novo",
+ "abusefilter-return": "Voltar à administração de filtros",
+ "abusefilter-status-global": "Global",
+ "abusefilter-list-options": "Opções",
+ "abusefilter-list-options-deleted": "Filtros eliminados:",
+ "abusefilter-list-options-deleted-only": "Mostrar apenas filtros eliminados",
+ "abusefilter-list-options-deleted-hide": "Ocultar filtros eliminados",
+ "abusefilter-list-options-deleted-show": "Incluir filtros eliminados",
+ "abusefilter-list-options-scope": "Mostrar filtros:",
+ "abusefilter-list-options-scope-local": "Apenas regras locais",
+ "abusefilter-list-options-scope-global": "Apenas regras globais",
+ "abusefilter-list-options-scope-all": "Regras locais e globais",
+ "abusefilter-list-options-disabled": "Filtros desativados:",
+ "abusefilter-list-options-hidedisabled": "Ocultar filtros desativados",
+ "abusefilter-list-options-searchfield": "Procurar nas regras:",
+ "abusefilter-list-options-searchpattern": "Inserir um padrão",
+ "abusefilter-list-options-searchoptions": "Modo de pesquisa:",
+ "abusefilter-list-options-search-like": "Consulta simples",
+ "abusefilter-list-options-search-rlike": "Expressão regular",
+ "abusefilter-list-options-search-irlike": "Expressão regular insensível ao uso de letras maiúsculas",
+ "abusefilter-list-regexerror": "Ocorreu um erro durante a pesquisa: Erro de sintaxe na expressão regular.",
+ "abusefilter-list-options-submit": "Atualizar",
+ "abusefilter-tools-text": "Aqui estão algumas ferramentas que poderão ser úteis na formulação e depuração dos filtros de abuso.",
+ "abusefilter-tools-expr": "Testador de expressões",
+ "abusefilter-tools-submitexpr": "Calcular",
+ "abusefilter-tools-reautoconfirm": "Restaurar estatuto autoconfirmado",
+ "abusefilter-tools-reautoconfirm-user": "Utilizador:",
+ "abusefilter-tools-reautoconfirm-submit": "Re-autoconfirmar",
+ "abusefilter-reautoconfirm-none": "Não foi suspendido o estado autoconfirmado {{GENDER:$1|desse utilizador|dessa utilizadora|desse utilizador}}.",
+ "abusefilter-reautoconfirm-notallowed": "Não está autorizado a repor o estado autoconfirmado.",
+ "abusefilter-reautoconfirm-done": "O estado autoconfirmado da conta foi restaurado",
+ "abusefilter-status": "{{PLURAL:$1|Da última 1 ação|Das últimas $1 ações}}, $2 ($3%) {{PLURAL:$2|atingiu|atingiram}} o limite de $4 condições, e $5 ($6%) {{PLURAL:$5|coincidiu|coincidiram}} com um dos filtros neste momento ativos.",
+ "abusefilter-edit": "A editar filtro de abusos",
+ "abusefilter-edit-subtitle": "A editar o filtro $1",
+ "abusefilter-edit-subtitle-new": "A criar filtro",
+ "abusefilter-edit-oldwarning": "<strong>Está a editar uma versão antiga deste filtro.\nAs estatísticas transcritas são relativas à versão mais recente do filtro.\nSe gravar as suas modificações, irá sobrepor todas as modificações desde a revisão que está a editar.</strong> &bull;\n[[Special:AbuseFilter/history/$2|Voltar ao histórico deste filtro]].",
+ "abusefilter-edit-status-label": "Estatísticas:",
+ "abusefilter-edit-status": "{{PLURAL:$1|Da última 1 ação|Das últimas $1 ações}}, $2 ($3%) acionaram este filtro.",
+ "abusefilter-edit-status-profile": "{{PLURAL:$1|Da última 1 ação|Das últimas $1 ações}}, este filtro detetou $2 ($3%).\nEm média, o seu tempo de execução é de $4ms, e consome $5 {{PLURAL:$5|condição|condições}} do seu limite de condições.",
+ "abusefilter-edit-throttled-warning": "'''Aviso:''' Este filtro foi automaticamente identificado como prejudicial. Como medida de prevenção, as seguintes operações não serão executadas ($1). Para remover esta restrição reveja e [[mw:Extension:AbuseFilter/Conditions|otimize]] as suas condições, por favor",
+ "abusefilter-edit-new": "Novo filtro",
+ "abusefilter-edit-save": "Gravar filtro",
+ "abusefilter-edit-id": "ID do filtro:",
+ "abusefilter-edit-switch-editor": "Alterar modo de edição",
+ "abusefilter-edit-description": "Descrição:\n:''(publicamente visível)''",
+ "abusefilter-edit-field-description": "descrição",
+ "abusefilter-edit-group": "Grupo de filtros:",
+ "abusefilter-edit-flags": "Sinalizações:",
+ "abusefilter-edit-enabled": "Ativar este filtro",
+ "abusefilter-edit-deleted": "Marcar como eliminado",
+ "abusefilter-edit-hidden": "Ocultar detalhes deste filtro do visionamento público",
+ "abusefilter-edit-global": "Filtro global",
+ "abusefilter-edit-rules": "Condições:",
+ "abusefilter-edit-field-conditions": "condições",
+ "abusefilter-edit-notes": "Notas:",
+ "abusefilter-edit-lastmod": "Última modificação do filtro:",
+ "abusefilter-edit-lastmod-text": "$1 por $2",
+ "abusefilter-edit-hitcount": "Deteções do filtro:",
+ "abusefilter-edit-consequences": "Ações a realizar quando acionado",
+ "abusefilter-edit-action-warn": "Desencadear estas ações após emitir um aviso ao utilizador",
+ "abusefilter-edit-action-disallow": "Impedir o utilizador de realizar a ação em questão",
+ "abusefilter-edit-action-blockautopromote": "Revogar o estatuto autoconfirmado do utilizador",
+ "abusefilter-edit-action-degroup": "Remover o utilizador de todos os grupos privilegiados",
+ "abusefilter-edit-action-block": "Bloquear o utilizador e/ou endereço IP para edição",
+ "abusefilter-edit-action-blocktalk": "Impedir que o utilizador ou o endereço IP editem a sua própria página de discussão",
+ "abusefilter-edit-action-throttle": "Desencadear ações só se o utilizador ultrapassar uma frequência limite de edições",
+ "abusefilter-edit-action-rangeblock": "Bloquear a gama IP respetiva da qual o utilizador provém",
+ "abusefilter-edit-action-tag": "Etiquetar a edição para revisão posterior",
+ "abusefilter-edit-throttle-count": "Número de ações que serão permitidas:",
+ "abusefilter-edit-throttle-period": "Período de tempo:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|segundo|segundos}}",
+ "abusefilter-edit-throttle-groups": "Agrupar limitador por:\n:''(um por linha, combinar com vírgulas)''",
+ "abusefilter-edit-warn-message": "Mensagem de sistema para usar como aviso:",
+ "abusefilter-edit-warn-other": "Outra mensagem",
+ "abusefilter-edit-warn-other-label": "Nome da página de outra mensagem:\n:''(sem prefixo MediaWiki)''",
+ "abusefilter-edit-warn-actions": "Ações:",
+ "abusefilter-edit-warn-preview": "Antever mensagem selecionada",
+ "abusefilter-edit-warn-edit": "Criar/editar mensagem selecionada",
+ "abusefilter-edit-tag-tag": "[[Special:Tags|Etiquetas]] a aplicar (uma por linha):",
+ "abusefilter-edit-block-anon-durations": "Duração do bloqueio para os utilizadores anónimos:",
+ "abusefilter-edit-block-user-durations": "Duração do bloqueio para os utilizadores registados:",
+ "abusefilter-block-anon": "utilizadores anónimos",
+ "abusefilter-block-user": "utilizadores registados",
+ "abusefilter-edit-denied": "Não pode ver detalhes deste filtro, porque ele está ocultado de vista pública.",
+ "abusefilter-edit-main": "Parâmetros do filtro",
+ "abusefilter-edit-done-subtitle": "Filtro editado",
+ "abusefilter-edit-done": "Gravou com sucesso as [[Special:AbuseFilter/history/$1/diff/prev/$2|alterações]] ao [[Special:AbuseFilter/$1|filtro $3]].",
+ "abusefilter-edit-badsyntax": "Há um erro de sintaxe no filtro que especificou.\nO resultado de saída do analisador foi: <pre>$1</pre>",
+ "abusefilter-edit-missingfields": "Os seguintes campos são obrigatórios e têm de ser preenchidos: $1",
+ "abusefilter-edit-restricted": "Não pode editar este filtro, porque ele contém uma ou mais ações restritas.\nPor favor, peça a um utilizador com permissão de adicionamento de ações restritas para efetuar a alteração por si.",
+ "abusefilter-edit-viewhistory": "Ver o histórico deste filtro",
+ "abusefilter-edit-history": "Histórico:",
+ "abusefilter-edit-check": "Verificar sintaxe",
+ "abusefilter-edit-badfilter": "O filtro que especificou não existe",
+ "abusefilter-edit-revert": "Reverter ações tomadas por este filtro",
+ "abusefilter-edit-tools": "Ferramentas:",
+ "abusefilter-edit-test-link": "Testar este filtro com edições recentes",
+ "abusefilter-edit-export": "Exportar este filtro para outra wiki",
+ "abusefilter-edit-syntaxok": "Não foi detetado nenhum erro de sintaxe.",
+ "abusefilter-edit-syntaxerr": "Erro de sintaxe detetado: $1",
+ "abusefilter-edit-bad-tags": "Uma ou mais das etiquetas que especificou não são válidas.\nAs etiquetas devem ser curtas, não podem conter caracteres especiais e não podem estar reservadas por outro programa. Tente escolher um novo nome de etiqueta.",
+ "abusefilter-edit-notallowed": "Não tem permissão para criar ou editar filtros de abuso",
+ "abusefilter-edit-notallowed-global": "Não tem permissão para criar ou editar filtros de abuso globais",
+ "abusefilter-edit-notallowed-global-custom-msg": "Não são suportadas mensagens de advertência personalizadas para filtros globais",
+ "abusefilter-edit-builder-select": "Selecione uma opção para inserir no cursor",
+ "abusefilter-edit-builder-group-op-arithmetic": "Operadores aritméticos",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Adição (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Subtração (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Multiplicação (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Divisão (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Módulo (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Potência (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Operadores de comparação",
+ "abusefilter-edit-builder-op-comparison-equal": "Valor igual a (==)",
+ "abusefilter-edit-builder-op-comparison-equal-strict": "Valor e tipo iguais a (===)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Valor diferente de (!=)",
+ "abusefilter-edit-builder-op-comparison-notequal-strict": "Valor e tipo diferentes de (!==)",
+ "abusefilter-edit-builder-op-comparison-lt": "Menor que (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Maior que (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Menor ou igual a (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Maior ou igual a (>=)",
+ "abusefilter-edit-builder-group-op-bool": "Operadores booleanos",
+ "abusefilter-edit-builder-op-bool-not": "Negação (!)",
+ "abusefilter-edit-builder-op-bool-and": "Conjunção/E (&)",
+ "abusefilter-edit-builder-op-bool-or": "Disjunção/Ou (|)",
+ "abusefilter-edit-builder-group-misc": "Diversos",
+ "abusefilter-edit-builder-misc-in": "contido num texto (in)",
+ "abusefilter-edit-builder-misc-like": "Corresponde a um padrão (like)",
+ "abusefilter-edit-builder-misc-rlike": "Corresponde a uma regex (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "Corresponde a regex, sem distinguir maiúsculas de minúsculas (irlike)",
+ "abusefilter-edit-builder-misc-contains": "Texto da esquerda contém o da direita (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "Texto literal (\"\")",
+ "abusefilter-edit-builder-misc-tern": "Operador ternário (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "Condicional (if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "Funções",
+ "abusefilter-edit-builder-funcs-length": "Comprimento do texto (length)",
+ "abusefilter-edit-builder-funcs-lcase": "Para minúscula (lcase)",
+ "abusefilter-edit-builder-funcs-ucase": "Para maiúscula (ucase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "Normalizar caracteres confundíveis (ccnorm)",
+ "abusefilter-edit-builder-funcs-ccnorm-contains-any": "Normalizar um texto e nele pesquisar vários subtextos no modo OU (ccnorm_contains_any)",
+ "abusefilter-edit-builder-funcs-ccnorm-contains-all": "Normalizar um texto e nele pesquisar vários subtextos no modo E (ccnorm_contains_all)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "Remover caracteres duplos (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "Caracteres especiais / total de caracteres (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "Normalizar (norm)",
+ "abusefilter-edit-builder-funcs-count": "Número de vezes que o texto X aparece no texto Y (count)",
+ "abusefilter-edit-builder-funcs-rcount": "Número de vezes que a regex X aparece no texto Y (rcount)",
+ "abusefilter-edit-builder-funcs-get_matches": "Matriz de correspondências regex num texto para cada grupo de captura (get_matches)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "Remover espaços em branco (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "Remover caracteres especiais (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "O IP está no intervalo? (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "Pesquisar num texto vários subtextos no modo OU. (contains_any)",
+ "abusefilter-edit-builder-funcs-contains-all": "Pesquisar num texto vários subtextos no modo E. (contains_all)",
+ "abusefilter-edit-builder-funcs-substr": "Subtexto (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "Posição do subtexto no texto (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "Substituir o subtexto pelo texto (str_replace)",
+ "abusefilter-edit-builder-funcs-rescape": "Sequência de escape literal na expressão regular (rescape)",
+ "abusefilter-edit-builder-funcs-set_var": "Atribuir variável (set_var)",
+ "abusefilter-edit-builder-group-vars": "Variáveis",
+ "abusefilter-edit-builder-vars-accountname": "Nome de conta (na criação da conta)",
+ "abusefilter-edit-builder-vars-timestamp": "Data Unix da mudança",
+ "abusefilter-edit-builder-vars-timestamp-expanded": "Data e hora do registo",
+ "abusefilter-edit-builder-vars-action": "Ação",
+ "abusefilter-edit-builder-vars-addedlines": "Linhas adicionadas na edição",
+ "abusefilter-edit-builder-vars-delta": "Alteração de tamanho na edição",
+ "abusefilter-edit-builder-vars-diff": "Diferença unificada das modificações feitas pela edição",
+ "abusefilter-edit-builder-vars-newsize": "Tamanho de página novo",
+ "abusefilter-edit-builder-vars-oldsize": "Tamanho de página anterior",
+ "abusefilter-edit-builder-vars-old-content-model": "Modelo de contéudo antigo",
+ "abusefilter-edit-builder-vars-new-content-model": "Novo modelo de conteúdo",
+ "abusefilter-edit-builder-vars-removedlines": "Linhas removidas na edição",
+ "abusefilter-edit-builder-vars-summary": "Resumo ou motivo da edição",
+ "abusefilter-edit-builder-vars-article-id": "ID da página",
+ "abusefilter-edit-builder-vars-article-ns": "Espaço nominal da página",
+ "abusefilter-edit-builder-vars-article-text": "Título da página (sem espaço nominal)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Título completo da página",
+ "abusefilter-edit-builder-vars-article-views": "Visualizações de página",
+ "abusefilter-edit-builder-vars-movedfrom-id": "ID da página fonte da movimentação",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "Espaço nominal da página fonte da movimentação",
+ "abusefilter-edit-builder-vars-movedfrom-text": "Título da página fonte da movimentação",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "Título completo da página fonte da movimentação",
+ "abusefilter-edit-builder-vars-movedto-id": "ID da página de destino da movimentação",
+ "abusefilter-edit-builder-vars-movedto-ns": "Espaço nominal da página de destino da movimentação",
+ "abusefilter-edit-builder-vars-movedto-text": "Título da página de destino da movimentação",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "Título completo da página de destino da movimentação",
+ "abusefilter-edit-builder-vars-user-editcount": "Contagem de edições do utilizador",
+ "abusefilter-edit-builder-vars-user-age": "Idade da conta de utilizador",
+ "abusefilter-edit-builder-vars-user-name": "Nome da conta de utilizador",
+ "abusefilter-edit-builder-vars-user-groups": "Grupos (incluindo implícitos) nos quais o utilizador se encontra",
+ "abusefilter-edit-builder-vars-user-rights": "Privilégios que um(a) utilizador(a) tem",
+ "abusefilter-edit-builder-vars-user-blocked": "Se o utilizador está bloqueado",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "Há quanto tempo o endereço de correio eletrónico foi confirmado",
+ "abusefilter-edit-builder-vars-recent-contributors": "Últimos dez utilizadores que colaboraram na página",
+ "abusefilter-edit-builder-vars-first-contributor": "Primeiro utilizador a editar a página",
+ "abusefilter-edit-builder-vars-movedfrom-recent-contributors": "Últimos dez utilizadores que colaboraram na página de origem da movimentação",
+ "abusefilter-edit-builder-vars-movedfrom-first-contributor": "Primeiro utilizador que colaborou na página de origem da movimentação",
+ "abusefilter-edit-builder-vars-movedto-recent-contributors": "Últimos dez utilizadores que colaboraram na página de destino da movimentação",
+ "abusefilter-edit-builder-vars-movedto-first-contributor": "Primeiro utilizador que colaborou na página de destino da movimentação",
+ "abusefilter-edit-builder-vars-all-links": "Todas as hiperligações externas no novo texto",
+ "abusefilter-edit-builder-vars-added-links": "Todas as hiperligações externas adicionadas na edição",
+ "abusefilter-edit-builder-vars-removed-links": "Todas as hiperligações externas removidas na edição",
+ "abusefilter-edit-builder-vars-old-text": "Texto wiki anterior da página, antes da edição",
+ "abusefilter-edit-builder-vars-new-text": "Texto wiki novo da página, após a edição",
+ "abusefilter-edit-builder-vars-new-pst": "Texto wiki novo, transformado antes da gravação",
+ "abusefilter-edit-builder-vars-diff-pst": "Diferenças unificadas das alterações nesta edição, transformadas antes da gravação",
+ "abusefilter-edit-builder-vars-addedlines-pst": "Linhas adicionadas na edição, transformadas antes da gravação",
+ "abusefilter-edit-builder-vars-new-text-stripped": "Nova página de texto, sem qualquer elemento de formatação",
+ "abusefilter-edit-builder-vars-new-html": "Fonte HTML analisada, da nova revisão",
+ "abusefilter-edit-builder-vars-restrictions-edit": "Nível de proteção de edição da página",
+ "abusefilter-edit-builder-vars-restrictions-move": "Nível de proteção de movimentação da página",
+ "abusefilter-edit-builder-vars-restrictions-create": "Proteção para a criação da página",
+ "abusefilter-edit-builder-vars-restrictions-upload": "Proteção de carregamento de ficheiros",
+ "abusefilter-edit-builder-vars-movedfrom-restrictions-edit": "Nível de proteção de edições da página de origem da movimentação",
+ "abusefilter-edit-builder-vars-movedfrom-restrictions-move": "Nível de proteção de movimentações da página de origem da movimentação",
+ "abusefilter-edit-builder-vars-movedfrom-restrictions-create": "Proteção de criação da página de origem da movimentação",
+ "abusefilter-edit-builder-vars-movedfrom-restrictions-upload": "Proteção de carregamento do ficheiro de origem da movimentação",
+ "abusefilter-edit-builder-vars-movedto-restrictions-edit": "Nível de proteção de edições da página de destino da movimentação",
+ "abusefilter-edit-builder-vars-movedto-restrictions-move": "Nível de proteção de movimentações da página de destino da movimentação",
+ "abusefilter-edit-builder-vars-movedto-restrictions-create": "Proteção de criação da página de destino da movimentação",
+ "abusefilter-edit-builder-vars-movedto-restrictions-upload": "Proteção de carregamento do ficheiro de destino da movimentação",
+ "abusefilter-edit-builder-vars-old-text-stripped": "Texto anterior da página, sem a formatação",
+ "abusefilter-edit-builder-vars-old-links": "Hiperligações na página, antes da edição",
+ "abusefilter-edit-builder-vars-old-html": "Texto wiki anterior da página, convertido para HTML",
+ "abusefilter-edit-builder-vars-minor-edit": "Se a edição está marcada ou não como menor",
+ "abusefilter-edit-builder-vars-file-sha1": "Resumo criptográfico (<i>hash</i>) SHA1 do conteúdo do ficheiro",
+ "abusefilter-edit-builder-vars-file-size": "Tamanho do ficheiro em bytes",
+ "abusefilter-edit-builder-vars-file-mime": "Tipo MIME do ficheiro",
+ "abusefilter-edit-builder-vars-file-mediatype": "Tipo de multimédia do ficheiro",
+ "abusefilter-edit-builder-vars-file-width": "Largura do ficheiro em píxeis",
+ "abusefilter-edit-builder-vars-file-height": "Altura do ficheiro em píxeis",
+ "abusefilter-edit-builder-vars-file-bits-per-channel": "Bits por canal de cor do ficheiro",
+ "abusefilter-edit-block-options": "Opções de bloqueio:",
+ "abusefilter-filter-log": "Modificações recentes de filtros",
+ "abusefilter-history": "Histórico de modificações do Filtro de Abusos #$1",
+ "abusefilter-history-foruser": "Modificações por $1",
+ "abusefilter-history-hidden": "Oculto",
+ "abusefilter-history-enabled": "Ativado",
+ "abusefilter-history-global": "Global",
+ "abusefilter-history-timestamp": "Data",
+ "abusefilter-history-user": "Utilizador",
+ "abusefilter-history-public": "Descrição pública do filtro",
+ "abusefilter-history-flags": "Sinalizações",
+ "abusefilter-history-filter": "Regra de filtro",
+ "abusefilter-history-comments": "Comentários",
+ "abusefilter-history-actions": "Ações",
+ "abusefilter-history-backedit": "Voltar ao editor de filtro",
+ "abusefilter-history-deleted": "Eliminado",
+ "abusefilter-history-filterid": "Filtro",
+ "abusefilter-history-select-legend": "Melhorar pesquisa",
+ "abusefilter-history-select-user": "Utilizador:",
+ "abusefilter-history-select-filter": "ID do filtro:",
+ "abusefilter-history-select-submit": "Melhorar",
+ "abusefilter-history-diff": "Alterações",
+ "abusefilter-history-error-hidden": "O filtro que solicitou está ocultado e não pode ver o seu histórico.",
+ "abusefilter-exception-unexpectedatend": "\"$2\" inesperado na posição $1.",
+ "abusefilter-exception-expectednotfound": "Código $2, esperado na posição $1, não foi encontrado (foi encontrado $3 $4).",
+ "abusefilter-exception-unrecognisedkeyword": "Palavra-chave $2 não reconhecida na posição $1.",
+ "abusefilter-exception-unexpectedtoken": "Chave inesperada \"$3\" (de tipo $2) na posição $1.",
+ "abusefilter-exception-unclosedstring": "Texto com início na posição $1, não foi fechado.",
+ "abusefilter-exception-invalidoperator": "Operador \"$2\" inválido, na posição $1.",
+ "abusefilter-exception-unrecognisedtoken": "Excerto \"$2\" não reconhecido, na posição $1.",
+ "abusefilter-exception-noparams": "Não foram fornecidos parâmetros à função \"$2\", na posição $1.",
+ "abusefilter-exception-dividebyzero": "Tentativa ilegal de dividir $2 por zero, na posição $1.",
+ "abusefilter-exception-unrecognisedvar": "Variável não reconhecida $2, na posição $1",
+ "abusefilter-exception-notenoughargs": "Argumentos insuficientes para a função $2, na posição $1.\nEsperava-se $3 {{PLURAL:$3|argumento|argumentos}}, obteve-se $4",
+ "abusefilter-exception-regexfailure": "Erro na expressão regular \"$3\", na posição $1: \"$2\"",
+ "abusefilter-exception-overridebuiltin": "Sobreposição ilegal da variável integrada \"$2\", na posição $1.",
+ "abusefilter-exception-outofbounds": "Foi solicitada a entrada $2 que não existe na lista (tamanho da lista = $3) na posição $1.",
+ "abusefilter-exception-notlist": "Foi solicitada uma entrada de matriz a uma não matriz, na posição $1.",
+ "abusefilter-exception-unclosedcomment": "Comentário por fechar, no caráter $1.",
+ "abusefilter-action-tag": "Etiquetar",
+ "abusefilter-action-throttle": "Limitador",
+ "abusefilter-action-warn": "Avisar",
+ "abusefilter-action-blockautopromote": "Bloquear autopromoção",
+ "abusefilter-action-block": "Bloquear",
+ "abusefilter-action-degroup": "Remover de grupos",
+ "abusefilter-action-rangeblock": "Bloqueio de intervalo",
+ "abusefilter-action-disallow": "Não autorizar",
+ "abusefilter-revert-title": "Reverter todas as alterações feitas pelo filtro $1",
+ "abusefilter-revert-intro": "Este formulário permite-lhe reverter todas as alterações feitas pelo filtro de abusos devido ao filtro $1.\nPor favor, tenha cuidado ao usar esta ferramenta.",
+ "abusefilter-revert-preview-item": "$1: $2 {{GENDER:$7|fez}} $3 em $4.\nAções a reverter: $5 ($6)",
+ "abusefilter-revert-search-legend": "Selecione as ações do filtro de abusos a reverter",
+ "abusefilter-revert-periodstart": "Início do período:",
+ "abusefilter-revert-periodend": "Fim do período:",
+ "abusefilter-revert-search": "Selecionar ações",
+ "abusefilter-revert-filter": "ID do filtro:",
+ "abusefilter-revert-preview-intro": "Abaixo estão as alterações feitas pelo filtro de abusos que serão revertidas por esta operação.\nPor favor, verifique-as cuidadosamente e clique em \"{{int:abusefilter-revert-confirm}}\" para confirmar a sua seleção.",
+ "abusefilter-revert-confirm-legend": "Confirmar a reversão",
+ "abusefilter-revert-confirm": "Confirmar",
+ "abusefilter-revert-success": "Reverteu todas as alterações feitas pelo filtro de abusos devido ao [[Special:AbuseFilter/$1|filtro $2]].",
+ "abusefilter-revert-reason": "Reversão automática de todas as alterações feitas pelo filtro de abusos devido ao filtro $1.\nMotivo dado: $2",
+ "abusefilter-revert-reasonfield": "Motivo:",
+ "abusefilter-test": "Testar um filtro nas edições anteriores",
+ "abusefilter-test-intro": "Esta página permite-lhe verificar o filtro introduzido na caixa abaixo contra {{PLURAL:$1|a última alteração|as últimas $1 alterações}}.\nPara carregar um filtro existente, insira a identificação (ID) do filtro na caixa abaixo da caixa de edição, e clique o botão \"{{int:abusefilter-test-load}}\".",
+ "abusefilter-test-legend": "Teste de filtro",
+ "abusefilter-test-load-filter": "Carregar filtro com ID:",
+ "abusefilter-test-submit": "Testar",
+ "abusefilter-test-load": "Carregar",
+ "abusefilter-test-user": "Alterações pelo utilizador:",
+ "abusefilter-test-period-start": "Alterações feitas após:",
+ "abusefilter-test-period-end": "Alterações feitas antes de:",
+ "abusefilter-test-page": "Alterações à página:",
+ "abusefilter-test-shownegative": "Mostrar alterações que não coincidem com o filtro",
+ "abusefilter-test-syntaxerr": "O filtro que introduziu continha um erro de sintaxe.\nPara ver uma explicação completa clique o botão \"{{int:abusefilter-edit-check}}\".",
+ "abusefilter-test-badtitle": "O título de página que inseriu não é válido. Talvez contenha um ou mais caracteres que não podem ser usados nos títulos.",
+ "abusefilter-changeslist-examine": "examinar",
+ "abusefilter-examine": "Examinar alterações individuais",
+ "abusefilter-examine-intro": "Esta página permite-lhe examinar as variáveis geradas pelo Filtro de Abusos para uma alteração individual, e testá-la com os filtros.",
+ "abusefilter-examine-legend": "Selecionar alterações",
+ "abusefilter-examine-diff": "URL de diferenças:",
+ "abusefilter-examine-user": "Utilizador:",
+ "abusefilter-examine-title": "Título da página:",
+ "abusefilter-examine-submit": "Pesquisar",
+ "abusefilter-examine-vars": "Variáveis geradas para esta alteração",
+ "abusefilter-examine-test": "Testar esta alteração com o filtro",
+ "abusefilter-examine-test-button": "Testar filtro",
+ "abusefilter-examine-match": "O filtro coincide com esta alteração.",
+ "abusefilter-examine-nomatch": "O filtro não coincide com esta alteração.",
+ "abusefilter-examine-syntaxerror": "O filtro tem sintaxe inválida",
+ "abusefilter-examine-notfound": "A alteração solicitada não foi encontrada.",
+ "abusefilter-examine-incompatible": "A alteração solicitada não é suportada pelo Filtro de Abusos",
+ "abusefilter-examine-noresults": "Não foram encontrados resultados para os parâmetros de pesquisa fornecidos.",
+ "abusefilter-topnav": "'''Navegação no Filtro de Abusos'''",
+ "abusefilter-topnav-home": "Início",
+ "abusefilter-topnav-test": "Teste em bloco",
+ "abusefilter-topnav-examine": "Examinar edições passadas",
+ "abusefilter-topnav-log": "Registo de Abusos",
+ "abusefilter-topnav-tools": "Ferramentas de depuração",
+ "abusefilter-topnav-import": "Importar filtro",
+ "abusefilter-log-name": "Registo de filtragens de abusos",
+ "abusefilter-log-header": "Este registo mostra um resumo das alterações efetuadas a filtros.\nPara todos os detalhes, ver [[Special:AbuseFilter/history|a lista]] de alterações recentes a filtros.",
+ "abusefilter-logentry-create": "$1 {{GENDER:$2|criou}} $4 ($5)",
+ "abusefilter-logentry-modify": "$1 {{GENDER:$2|modificou}} $4 ($5)",
+ "abusefilter-log-noresults": "Não foram encontrados resultados.",
+ "abusefilter-diff-title": "Diferenças entre versões",
+ "abusefilter-diff-item": "Entrada",
+ "abusefilter-diff-version": "Versão de $1 {{GENDER:$3| por}} $2",
+ "abusefilter-diff-info": "Informações básicas",
+ "abusefilter-diff-pattern": "Condições do filtro",
+ "abusefilter-diff-invalid": "Não foi possível obter as versões requeridas",
+ "abusefilter-diff-backhistory": "Regressar ao histórico do filtro",
+ "abusefilter-diff-prev": "Alteração antiga",
+ "abusefilter-diff-next": "Alteração recente",
+ "abusefilter-import-intro": "Pode usar esta interface para importar filtros de outras wikis.\nNa wiki de origem, clique \"{{int:abusefilter-edit-export}}\", sob \"{{int:abusefilter-edit-tools}}\" na interface de edição.\nCopie da caixa de texto que aparece, coloque nesta caixa de texto e depois clique \"{{int:abusefilter-import-submit}}\".",
+ "abusefilter-import-submit": "Importar dados",
+ "abusefilter-group-default": "Padrão",
+ "abusefilter-http-error": "Ocorreu um erro HTTP: $1.",
+ "abusefilter-view-private-submit": "Ver detalhes privados",
+ "abusefilter-view-private": "Ver detalhes privados",
+ "abusefilter-view-private-reason": "Motivo do acesso aos detalhes privados:",
+ "abusefilter-log-details-id": "Identificador do registo",
+ "abusefilter-invalid-request": "Pedido inválido! Deve aceder aos detalhes privados do registo através do formulário em [[Special:AbuseLog/$1]] e fornecer um motivo.",
+ "abusefilter-invalid-request-noid": "Pedido inválido! Deve aceder aos detalhes privados do registo através do formulário na página dos detalhes do registo de abusos e fornecer um motivo.",
+ "log-description-abusefilterprivatedetails": "Este registo mostra uma lista das vezes em que o utilizador consultou os detalhes privados de um registo de abusos.",
+ "abusefilter-noreason": "Aviso: Para ver os detalhes privados deste registo, deve fornecer um motivo.",
+ "abusefilter-log-ip-not-available": "Indisponível",
+ "tag-abusefilter-condition-limit": "limite de condições atingido",
+ "tag-abusefilter-condition-limit-description": "Edições ou outros acontecimentos que não puderam ser verificados por todos os [[Special:AbuseFilter|filtros de abuso]] ativos ([[mw:Extension:AbuseFilter/Conditions|ajuda]]).",
+ "apihelp-abusefiltercheckmatch-description": "Verifique se um filtro de abusos coincide com um conjunto de variáveis, evento do registo de abusos com editor registado.\n\nÉ necessário um dos seguintes: vars, rcid ou logid (só um pode ser usado).",
+ "apihelp-abusefiltercheckmatch-summary": "Verifique se um filtro de abusos coincide com um conjunto de variáveis, evento do registo de abusos com editor registado.",
+ "apihelp-abusefiltercheckmatch-extended-description": "É necessário um dos seguintes: vars, rcid ou logid (só um pode ser usado).",
+ "apihelp-abusefiltercheckmatch-param-filter": "O texto completo do filtro para verificar a coincidência.",
+ "apihelp-abusefiltercheckmatch-param-vars": "Matriz codificada JSON de variáveis para o teste.",
+ "apihelp-abusefiltercheckmatch-param-rcid": "Identificador da mudança recente para testar.",
+ "apihelp-abusefiltercheckmatch-param-logid": "Identificador do registo de abusos para testar.",
+ "apihelp-abusefiltercheckmatch-example-1": "Testar se a mudança recente com o identificador 15 é detetada por um filtro simples",
+ "apihelp-abusefilterchecksyntax-description": "Verificar a sintaxe de um filtro de abusos.",
+ "apihelp-abusefilterchecksyntax-summary": "Verificar a sintaxe de um filtro de abusos.",
+ "apihelp-abusefilterchecksyntax-param-filter": "O texto completo do filtro para verificar a sintaxe.",
+ "apihelp-abusefilterchecksyntax-example-1": "Verificar a sintaxe de um filtro válido",
+ "apihelp-abusefilterchecksyntax-example-2": "Verificar a sintaxe de um filtro inválido",
+ "apihelp-abusefilterevalexpression-description": "Avalia uma expressão do filtro de abusos.",
+ "apihelp-abusefilterevalexpression-summary": "Avalia uma expressão do filtro de abusos.",
+ "apihelp-abusefilterevalexpression-param-expression": "A expressão para avaliar.",
+ "apihelp-abusefilterevalexpression-example-1": "Avaliar uma expressão simples",
+ "apihelp-abusefilterunblockautopromote-description": "Desbloqueia um utilizador de receber autopromoções em consequência do filtro de abusos.",
+ "apihelp-abusefilterunblockautopromote-summary": "Desbloqueia um utilizador de receber autopromoções em consequência do filtro de abusos.",
+ "apihelp-abusefilterunblockautopromote-param-user": "Nome do utilizador que pretende desbloquear.",
+ "apihelp-abusefilterunblockautopromote-example-1": "Remover o bloqueio de autopromoção de [[User:Example]]",
+ "apihelp-query+abusefilters-description": "Mostrar detalhes dos filtros de abuso.",
+ "apihelp-query+abusefilters-summary": "Mostrar detalhes dos filtros de abuso.",
+ "apihelp-query+abusefilters-param-startid": "O identificador do filtro onde será iniciada a enumeração.",
+ "apihelp-query+abusefilters-param-endid": "O identificador do filtro onde será parada a enumeração.",
+ "apihelp-query+abusefilters-param-show": "Mostrar só os filtros que preenchem estes critérios.",
+ "apihelp-query+abusefilters-param-limit": "O número máximo de filtros que serão listados.",
+ "apihelp-query+abusefilters-param-prop": "Que propriedades obter.",
+ "apihelp-query+abusefilters-example-1": "Listar os filtros públicos ativos",
+ "apihelp-query+abusefilters-example-2": "Mostrar alguns detalhes dos filtros",
+ "apihelp-query+abuselog-description": "Mostrar os eventos que foram detetados por um dos filtros de abuso.",
+ "apihelp-query+abuselog-summary": "Mostrar os eventos que foram detetados por um dos filtros de abuso.",
+ "apihelp-query+abuselog-param-start": "A data e hora onde começar a enumeração.",
+ "apihelp-query+abuselog-param-end": "A data e hora onde parar a enumeração.",
+ "apihelp-query+abuselog-param-user": "Mostrar só as entradas de um determinado utilizador ou endereço IP.",
+ "apihelp-query+abuselog-param-title": "Mostrar só as entradas de uma determinada página.",
+ "apihelp-query+abuselog-param-filter": "Mostrar só as entradas que foram detetadas por um determinado identificador de filtro.",
+ "apihelp-query+abuselog-param-limit": "O número máximo de entradas que serão listadas.",
+ "apihelp-query+abuselog-param-prop": "Que propriedades obter.",
+ "apihelp-query+abuselog-param-wiki": "A wiki da qual mostra as visitas.",
+ "apihelp-query+abuselog-example-1": "Mostrar entradas recentes do registo",
+ "apihelp-query+abuselog-example-2": "Mostrar entradas recentes do registo para [[API]]",
+ "apierror-abusefilter-canttest": "Não tem permissão para testar filtros de abuso.",
+ "apierror-abusefilter-cantcheck": "Não tem permissão para verificar a sintaxe de filtros de abuso.",
+ "apierror-abusefilter-nosuchlogid": "Não há nenhuma entrada no registo de abusos com o identificador $1.",
+ "apierror-abusefilter-badsyntax": "O filtro contém sintaxe inválida."
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/qqq.json b/www/wiki/extensions/AbuseFilter/i18n/qqq.json
new file mode 100644
index 00000000..5c7ca6bd
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/qqq.json
@@ -0,0 +1,560 @@
+{
+ "@metadata": {
+ "authors": [
+ "Aotake",
+ "Bennylin",
+ "ChrisiPK",
+ "Darth Kule",
+ "EugeneZelenko",
+ "Fryed-peach",
+ "Hamilton Abreu",
+ "Huji",
+ "Iwan Novirion",
+ "Jon Harald Søby",
+ "Krenair",
+ "Krinkle",
+ "Kwj2772",
+ "Lejonel",
+ "Lloffiwr",
+ "McDutchie",
+ "Meno25",
+ "Mormegil",
+ "Nemo bis",
+ "Praveenp",
+ "Purodha",
+ "Pxos",
+ "Raymond",
+ "Shirayuki",
+ "Siebrand",
+ "The Evil IP address",
+ "Translationista",
+ "Umherirrender",
+ "Yekrats",
+ "Liuxinyu970226",
+ "Legoktm",
+ "Pikne",
+ "Amire80",
+ "Ankam",
+ "Daimona Eaytoy"
+ ]
+ },
+ "abusefilter-desc": "{{desc|name=Abuse Filter|url=https://www.mediawiki.org/wiki/Extension:AbuseFilter}}",
+ "abusefilter": "{{doc-special|AbuseFilter}}",
+ "abuselog": "{{doc-special|AbuseLog}}\n{{Identical|Abuse log}}",
+ "abusefilter-intro": "Introduction text for the list of filter rules.",
+ "abusefilter-mustbeeditor": "\"No access\" message shown when a user does not have access rights.",
+ "abusefilter-warning": "A warning message shown when a user tries to save an edit which matches some abuse filter rule. Parameters:\n* $1 is a short description of the abuse filter rule which triggered this action\n* $2 is the filter id",
+ "abusefilter-disallowed": "Message given to user because of a triggered filter. Parameters:\n* $1 is a filter description\n* $2 is the filter id",
+ "abusefilter-blocked-display": "Message given to user because of a triggered filter. Parameters:\n* $1 is a filter description\n* $2 is the filter id",
+ "abusefilter-degrouped": "Message given to user because of a triggered filter. Parameters:\n* $1 is a filter description\n* $2 is the filter id",
+ "abusefilter-autopromote-blocked": "Message given to user because of a triggered filter. Parameters:\n* $1 is a filter description\n* $2 is the filter id",
+ "abusefilter-blocker": "Username of reserved user for abuse filter actions.",
+ "abusefilter-blockreason": "Message given to user because of a triggered filter. Parameters:\n* $1 is a filter description\n* $2 is the filter id",
+ "abusefilter-degroupreason": "Used as log entry when removal of the user from all privileged groups performed by Abuse filter. Parameters:\n* $1 is the filter description (reason)\n* $2 is the filter id",
+ "abusefilter-accountreserved": "Message given when trying to register a reserved account name for AbuseFilter actions.",
+ "right-abusefilter-modify": "{{doc-right|abusefilter-modify}}",
+ "right-abusefilter-view": "{{doc-right|abusefilter-view}}",
+ "right-abusefilter-log": "{{doc-right|abusefilter-log}}",
+ "right-abusefilter-log-detail": "{{doc-right|abusefilter-log-detail}}",
+ "right-abusefilter-private": "{{doc-right|abusefilter-private}}",
+ "right-abusefilter-private-log": "{{doc-right|abusefilter-private-log}}",
+ "right-abusefilter-modify-restricted": "{{doc-right|abusefilter-modify-restricted}}",
+ "right-abusefilter-revert": "{{doc-right|abusefilter-revert}}",
+ "right-abusefilter-view-private": "{{doc-right|abusefilter-view-private}}",
+ "right-abusefilter-log-private": "{{doc-right|abusefilter-log-private}}",
+ "right-abusefilter-hide-log": "{{doc-right|abusefilter-hide-log}}",
+ "right-abusefilter-hidden-log": "{{doc-right|abusefilter-hidden-log}}",
+ "right-abusefilter-modify-global": "{{doc-right|abusefilter-modify-global}}",
+ "action-abusefilter-modify": "{{doc-action|abusefilter-modify}}",
+ "action-abusefilter-view": "{{doc-action|abusefilter-view}}",
+ "action-abusefilter-log": "{{doc-action|abusefilter-log}}",
+ "action-abusefilter-log-detail": "{{doc-action|abusefilter-log-detail}}",
+ "action-abusefilter-private": "{{doc-action|abusefilter-private}}",
+ "action-abusefilter-private-log": "{{doc-action|abusefilter-private-log}}",
+ "action-abusefilter-modify-restricted": "{{doc-action|abusefilter-modify-restricted}}",
+ "action-abusefilter-revert": "{{doc-action|abusefilter-revert}}",
+ "action-abusefilter-view-private": "{{doc-action|abusefilter-view-private}}",
+ "action-abusefilter-log-private": "{{doc-action|abusefilter-log-private}}",
+ "abusefilter-log": "Caption of [[Special:AbuseLog]]",
+ "abusefilter-log-summary": "This message is displayed at the top of the log overview page for extension AbuseFilter.",
+ "abusefilter-log-search": "Caption of a fieldset for filter definition on [[Special:AbuseLog]]",
+ "abusefilter-log-search-user": "Field label in abuse filter log page.\n{{Identical|User}}",
+ "abusefilter-log-search-filter": "Field label in abuse filter log page.",
+ "abusefilter-log-search-title": "Field label in abuse filter log page.\n{{Identical|Title}}",
+ "abusefilter-log-search-wiki": "Label for text field that allows the user to limit search results to a specific wiki, by name.\n{{Identical|Wiki}}",
+ "abusefilter-log-search-impact": "Label for options allowing to filter abuse log by whether the action was actually saved.\n{{Identical|Impact}}",
+ "abusefilter-log-search-impact-all": "Option allowing to find all actions in abuse log.",
+ "abusefilter-log-search-impact-saved": "Option allowing to find saved changes only in abuse log.",
+ "abusefilter-log-search-impact-not-saved": "Option allowing to filter saved changes out from abuse log.",
+ "abusefilter-log-search-entries-label": "Label for options allowing to find entries with specified visibility.\n{{Identical|Visibility}}",
+ "abusefilter-log-search-entries-all": "Option allowing to find all entries in abuse log.",
+ "abusefilter-log-search-entries-hidden": "Option allowing to find hidden entries only in abuse log.",
+ "abusefilter-log-search-entries-visible": "Option allowing to find visible entries only in abuse log.",
+ "abusefilter-log-search-action-taken-label": "Label for options allowing to find entries with specified action taken by abuse filters.",
+ "abusefilter-log-search-action-taken-any": "Option allowing to find any entry in abuse log.\n{{Identical|Any}}",
+ "abusefilter-log-search-submit": "Button text to search log in abuse filter log page.\n{{Identical|Search}}",
+ "abusefilter-log-entry": "This message is for a log entry. Parameters:\n* $1 - timestamp\n* $2 - user\n* $3 - action by user\n* $4 - link to page the action that triggered the filter was made on\n* $5 - actions taken by the filter\n* $6 - comments in filter description\n* $8 - raw username, for GENDER support\n{{Related|Abusefilter-log}}",
+ "abusefilter-log-entry-withdiff": "This message is for a log entry. Parameters:\n* $1 - timestamp\n* $2 - user\n* $3 - action by user\n* $4 - link to page the action that triggered the filter was made on\n* $5 - actions taken by the filter\n* $6 - comments in filter description\n* $7 - link to diff\n* $8 - raw username, for GENDER support\n{{Related|Abusefilter-log}}",
+ "abusefilter-log-detailedentry-meta": "This message is for a log entry. Parameters:\n* $1 - timestamp\n* $2 - user\n* $3 - link to filter\n* $4 - action by user\n* $5 - link to page the action that triggered the filter was made on\n* $6 - actions taken by the filter\n* $7 - comments in filter description\n* $8 - link to action details, examine, and optional diff\n* $9 - raw username, for GENDER support\n{{Related|Abusefilter-log}}",
+ "abusefilter-log-detailedentry-global": "Addition in the abuse filter log detail when a filter rule is a global rule. Parameters:\n* $1 is a global filter ID.",
+ "abusefilter-log-detailedentry-local": "Addition in the abuse filter log detail when a filter rule is a local rule. Parameters:\n* $1 is a local filter ID.\n{{Identical|Filter}}",
+ "abusefilter-log-detailslink": "Link text for a link to abuse filter log details.\n{{Identical|Detail}}",
+ "abusefilter-log-diff": "Diff link text to a revision associated with an AbuseFilter log entry\n{{Identical|Diff}}",
+ "abusefilter-log-hidelink": "Link text in abuse filter log line to hide (when visible) or show (when hidden) a link to the log entry details.",
+ "abusefilter-log-details-legend": "Legend for abuse filter log entry details. Parameters:\n* $1 is a filter ID.",
+ "abusefilter-log-details-var": "Caption of a column on a detail view of [[Special:AbuseLog]]\n{{Identical|Variable}}",
+ "abusefilter-log-details-val": "Caption of a column on a detail view of [[Special:AbuseLog]]\n{{Identical|Value}}",
+ "abusefilter-log-details-vars": "Caption on a detail view of [[Special:AbuseLog]]",
+ "abusefilter-log-details-private": "Header for private log details.",
+ "abusefilter-log-details-ip": "Row label in private log details.",
+ "abusefilter-log-details-checkuser": "Text to use as link to [[Special:Checkuser]] for the given IP.\n{{Identical|Check user}}",
+ "abusefilter-log-noactions": "Text displayed in Special:AbuseLog when a rule was triggered, but no action was taken.\n{{Identical|None}}",
+ "abusefilter-log-details-diff": "Header for differences between two edits in log details.",
+ "abusefilter-log-linkoncontribs": "Link text added on [[Special:Contributions]] and other relevant special pages.\n{{Identical|Abuse log}}",
+ "abusefilter-log-linkoncontribs-text": "Title for link added on [[Special:Contributions]] and other relevant special pages. Parameters:\n* $1 is the target user name used for GENDER.",
+ "abusefilter-log-hidden": "Text for a hidden log entry.",
+ "abusefilter-log-hidden-implicit": "Explanatory text to be shown beside an abuse filter log entry if it cannot be viewed due to its corresponding revision being hidden",
+ "abusefilter-log-cannot-see-details": "Message shown instead of log row details for users without permissions to see them.",
+ "abusefilter-log-cannot-see-private-details": "Message shown instead of log row private details for users without permissions to see them.",
+ "abusefilter-log-nonexistent": "Message shown instead of log row details when the provided log ID does not exist.",
+ "abusefilter-log-details-hidden": "Message shown instead of log row details when those are hidden.",
+ "abusefilter-log-private-not-included": "Message shown when an unauthorized user searches by ID for private filters.",
+ "abusefilter-log-hide-legend": "Legend for form to hide a log entry.",
+ "abusefilter-log-hide-id": "Field label in form to hide a log entry.",
+ "abusefilter-log-hide-hidden": "Checkbox label in form to hide a log entry.",
+ "abusefilter-log-hide-reason": "{{Identical|Reason}}",
+ "abusefilter-log-hide-reason-other": "{{Identical|Other/additional reason}}",
+ "abusefilter-log-hide-forbidden": "Message shown instead of a \"hide log entry\" form when not having the correct user rights.",
+ "abusefilter-logentry-suppress": "Log entry when hiding an abuse filter log entry. Parameters:\n* $1 is a link to the log ID with the log ID as description.",
+ "abusefilter-logentry-unsuppress": "Log entry when unhiding an abuse filter log entry. Parameters:\n* $1 is a link to the log ID with the log ID as description.",
+ "logentry-abusefilter-hit": "This message is for a log entry. Parameters:\n* $1 - user who performed the action\n* $2 - user who performed the action (to be used with GENDER)\n* $3 - link to the page, that the action that triggered the filter was made on\n* $4 - link to filter\n* $5 - action by user, like 'edit', 'move', 'create' etc.\n* $6 - actions taken by the filter\n* $7 - action details link",
+ "log-action-filter-abusefilter": "{{doc-log-action-filter-action|abusefilter}}",
+ "log-action-filter-abusefilter-create": "{{doc-log-action-filter-action|abusefilter|create}}",
+ "log-action-filter-abusefilter-modify": "{{doc-log-action-filter-action|abusefilter|modify}}",
+ "logentry-abusefilterprivatedetails-access": "This message is for a log entry. Parameters:\n* $1 User who accessed the private logs\n* $2 User who accessed the private logs (used for gender)\n* $3 The log entry of which private details were accessed",
+ "abusefilterprivatedetails-log-name": "Log name",
+ "abusefilter-management": "Title of [[Special:AbuseFilter]]",
+ "abusefilter-list": "Used as HTML <code><nowiki><h2></nowiki></code> heading.\n\nFollowed by the fieldset label {{msg-mw|Abusefilter-list-options}}.",
+ "abusefilter-list-id": "Column header in abuse filter overview for the filter identifier.\n{{Identical|Filter ID}}",
+ "abusefilter-list-pattern": "Column header in abuse filter overview for the filter pattern.\n{{Identical|Pattern}}",
+ "abusefilter-list-status": "Column header in abuse filter overview for the filter status.\n{{Identical|Status}}",
+ "abusefilter-list-public": "Column header in abuse filter overview for the public filter description.",
+ "abusefilter-list-consequences": "Column header in abuse filter overview for the filter consequences.",
+ "abusefilter-list-visibility": "Column header in abuse filter overview for the public filter visibility.\n{{Identical|Visibility}}",
+ "abusefilter-list-hitcount": "Column header in abuse filter overview for the number of times the filter was triggered.",
+ "abusefilter-list-edit": "Probably the verb \"to edit\" (instead of the noun \"an edit\").\n{{Identical|Edit}}",
+ "abusefilter-list-details": "{{Identical|Detail}}",
+ "abusefilter-list-limit": "Used as label for the Limit selector in the form.",
+ "abusefilter-list-lastmodified": "Column header in abuse filter overview for the last modified timestamp for a filter.\n{{Identical|Last modified}}",
+ "abusefilter-list-group": "The filter group the edit filter is in.",
+ "abusefilter-hidden": "Abuse filter status.\n{{Identical|Private}}",
+ "abusefilter-unhidden": "Abuse filter status.\n{{Identical|Public}}",
+ "abusefilter-enabled": "Abuse filter status.\n{{Identical|Enabled}}",
+ "abusefilter-deleted": "Abuse filter status.\n{{Identical|Deleted}}",
+ "abusefilter-disabled": "Abuse filter status.\n{{Identical|Disabled}}",
+ "abusefilter-hitcount": "Indicates number of times an abuse filter was triggered. Parameters:\n* $1 is the number of hits.",
+ "abusefilter-new": "Link text for creating a new abuse filter.",
+ "abusefilter-return": "Link displayed when filtering abuse filters without results.",
+ "abusefilter-status-global": "Abuse filter status. Means that it is active on all wikis in a farm.\n{{Identical|Global}}",
+ "abusefilter-list-options": "Fieldset legend for abuse filter filter options.\n{{Identical|Options}}",
+ "abusefilter-list-options-deleted": "Field label in filter form.",
+ "abusefilter-list-options-deleted-only": "Radio button label in filter form.",
+ "abusefilter-list-options-deleted-hide": "Radio button label in filter form.",
+ "abusefilter-list-options-deleted-show": "Radio button label in filter form.",
+ "abusefilter-list-options-scope": "Field label in the filter form, for radio buttons selecting which category of filters to show",
+ "abusefilter-list-options-scope-local": "Radio button indicating that local rules should be shown.",
+ "abusefilter-list-options-scope-global": "Radio button indicating that global rules should be shown",
+ "abusefilter-list-options-scope-all": "Radio button indicating that local and global rules should be shown",
+ "abusefilter-list-options-disabled": "Field label in filter form.",
+ "abusefilter-list-options-hidedisabled": "Radio button label in filter form.",
+ "abusefilter-list-options-searchfield": "Field label in filter form.",
+ "abusefilter-list-options-searchpattern": "Text input for search pattern",
+ "abusefilter-list-options-searchoptions": "Field label in filter form.",
+ "abusefilter-list-options-search-like": "Radio button label in filter form.",
+ "abusefilter-list-options-search-rlike": "Radio button label in filter form. See [[w:en:regular expression]]",
+ "abusefilter-list-options-search-irlike": "Radio button label in filter form. See [[w:en:regular expression]]",
+ "abusefilter-list-regexerror": "Error message text.",
+ "abusefilter-list-options-submit": "Submit button text in filter form to update a filtered list.\n{{Identical|Update}}",
+ "abusefilter-tools-text": "Introduction test for abuse filter tools.",
+ "abusefilter-tools-expr": "Fieldset legend for form to test a filter expression.",
+ "abusefilter-tools-submitexpr": "Submit button label to test a filter expression.",
+ "abusefilter-tools-reautoconfirm": "Fieldset legend for a form to add a user to the autoconfirmed group again.",
+ "abusefilter-tools-reautoconfirm-user": "Field label. See {{msg-mw|group-autoconfirmed}} for concept translation.\n{{Identical|User}}",
+ "abusefilter-tools-reautoconfirm-submit": "Submit button text to add a user to the autoconfirmed user group. See {{msg-mw|group-autoconfirmed}} for concept translation.",
+ "abusefilter-reautoconfirm-none": "{{doc-singularthey}}\nError text in case a user has not had their autoconfirmed status revoked. See {{msg-mw|group-autoconfirmed}} for concept translation.\n\nParameters:\n* $1 - the target user name used for GENDER",
+ "abusefilter-reautoconfirm-notallowed": "Error text when trying to perform an action the user cannot perform. See {{msg-mw|group-autoconfirmed}} for concept translation.",
+ "abusefilter-reautoconfirm-done": "See {{msg-mw|group-autoconfirmed}} for concept translation.\n* $1 is the target user name (optional, used for GENDER).",
+ "abusefilter-status": "Status information displayed on top of [[Special:AbuseFilter]]. Parameters:\n* $1 is the number of recent actions\n* $2 is the number of filter runs that reached the limit of $4 conditions (and have had to be terminated)\n* $3 is a percentage: $2 / $1 * 100\n* $4 is the maximum number of conditions allowed\n* $5 is the number of matched actions\n* $6 is a percentage: $5 / $1 * 100",
+ "abusefilter-edit": "Page title when editing an abuse filter.",
+ "abusefilter-edit-subtitle": "Page subtitle when editing an abuse filter. Parameters:\n* $1 - filter ID\n* $2 - (Unused) history ID\nSee also:\n* {{msg-mw|Abusefilter-edit-subtitle-new}} - if the filter ID is \"new\".",
+ "abusefilter-edit-subtitle-new": "Page subtitle when creating an abuse filter. Parameters:\n* $1 - (Unused) filter ID\n* $2 - (Unused) history ID\nSee also:\n* {{msg-mw|Abusefilter-edit-subtitle}} - if editing the existing filter",
+ "abusefilter-edit-oldwarning": "Warning displayed when editing an older version of a filter. Parameters:\n* $1 - (Unused) history ID\n* $2 - filter ID",
+ "abusefilter-edit-status-label": "Field label for abuse filter statistics.\n{{Identical|Statistics}}",
+ "abusefilter-edit-status": "Parameters:\n* $1 - number of actions\n* $2 - matched count\n* $3 - matched percentage",
+ "abusefilter-edit-status-profile": "Parameters:\n* $1 - number of actions\n* $2 - matched count\n* $3 - matched percentage\n* $4 - time (in milliseconds)\n* $5 - number of conditions",
+ "abusefilter-edit-throttled-warning": "Used as warning message when the filter is throttled and actions will not execute. Parameters:\n* $1 - is a string containing the actions that will not execute",
+ "abusefilter-edit-new": "Field value in case an edited filter is new.",
+ "abusefilter-edit-save": "Submit button text to save a filter.",
+ "abusefilter-edit-id": "Field label for filter identifier.\n{{Identical|Filter ID}}",
+ "abusefilter-edit-switch-editor": "Button to switch between classic editor and Ace editor",
+ "abusefilter-edit-description": "Field label for publicly viewable abuse filter description.",
+ "abusefilter-edit-field-description": "Name of the filter public description, to be used in error message.",
+ "abusefilter-edit-group": "\"Filter group\" a filter is in. Filters can be grouped, and only one group is run per action. The default group, \"default\", will be used in 99% of cases.",
+ "abusefilter-edit-flags": "Field label for abuse filter flags (checkboxes for \"hidden\", \"enabled\" and \"deleted\").\n{{Identical|Flag}}",
+ "abusefilter-edit-enabled": "Checkbox label for a filter flag.",
+ "abusefilter-edit-deleted": "Checkbox label for a filter flag.",
+ "abusefilter-edit-hidden": "Checkbox label for a filter flag.",
+ "abusefilter-edit-global": "Checkbox label for a filter flag.",
+ "abusefilter-edit-rules": "Field label for filter rules.\n{{Identical|Condition}}",
+ "abusefilter-edit-field-conditions": "Description for filter rules, to be used in error message.\n{{Identical|Condition}}",
+ "abusefilter-edit-notes": "Field label for filter notes.\n{{Identical|Note}}",
+ "abusefilter-edit-lastmod": "Field label for filter's last modified timestamp.",
+ "abusefilter-edit-lastmod-text": "This message is used on [[Special:AbuseFilter]] to indicate the last modified date, time and user for existing rules.\n\nParameters:\n* $1 - a time and date (duplicated in $3 and $4)\n* $2 - a link to a user page with a user name as link text, followed by a series of related links\n* $3 - (Optional) the date\n* $4 - (Optional) the time\n* $5 - (Optional) the username, for GENDER support",
+ "abusefilter-edit-hitcount": "Field label in edit rule form after which the number of filter hits is displayed.",
+ "abusefilter-edit-consequences": "Shown as the header of a section on the filter editing page, showing a list of checkboxes with different action names, and as the table header on the filter version differences page. Refers to a list of actions that will be triggered when an edit matches the filter.",
+ "abusefilter-edit-action-warn": "{{doc-abusefilter-action}}",
+ "abusefilter-edit-action-disallow": "{{doc-abusefilter-action}}",
+ "abusefilter-edit-action-blockautopromote": "{{doc-abusefilter-action}}",
+ "abusefilter-edit-action-degroup": "{{doc-abusefilter-action}}",
+ "abusefilter-edit-action-block": "{{doc-abusefilter-action}}",
+ "abusefilter-edit-action-blocktalk": "{{doc-abusefilter-action}}",
+ "abusefilter-edit-action-throttle": "{{doc-abusefilter-action}}",
+ "abusefilter-edit-action-rangeblock": "{{doc-abusefilter-action}}",
+ "abusefilter-edit-action-tag": "{{doc-abusefilter-action}}",
+ "abusefilter-edit-throttle-count": "Field label for entering the number of allowed hits before triggering the filter consequences.",
+ "abusefilter-edit-throttle-period": "Field label for entering a time period.",
+ "abusefilter-edit-throttle-seconds": "Throttle period in seconds. Parameters:\n* $1 - a number of seconds\n{{Identical|Second}}",
+ "abusefilter-edit-throttle-groups": "Field label for properties to group throttle counts by (for example IP address and username). Throttling is the concept of limiting occurrences of a certain action in a given time frame.",
+ "abusefilter-edit-warn-message": "Field label for dropdown list with system messages.",
+ "abusefilter-edit-warn-other": "Option in dropdown menu to specify no item from the list should be used.",
+ "abusefilter-edit-warn-other-label": "Field label for entering a system message key to use as warning text.",
+ "abusefilter-edit-warn-actions": "Field label for two action buttons in abuse filter editor. The button texts are {{msg-mw|abusefilter-edit-warn-preview}} and {{msg-mw|abusefilter-edit-warn-edit}}.\n{{Identical|Action}}",
+ "abusefilter-edit-warn-preview": "Button text for actions relating to a warning message for an abuse filter.\n\nSee also:\n* {{msg-mw|Abusefilter-edit-warn-actions}}\n* {{msg-mw|Abusefilter-edit-warn-edit}}",
+ "abusefilter-edit-warn-edit": "Button text for actions relating to a warning message for an abuse filter.\n\nSee also:\n* {{msg-mw|Abusefilter-edit-warn-actions}}\n* {{msg-mw|Abusefilter-edit-warn-preview}}",
+ "abusefilter-edit-tag-tag": "Field label for multi line field in which tags can be added for a revision in case the abuse filter applies.",
+ "abusefilter-edit-block-anon-durations": "Field label for select element allowing to select block duration for anonymous users",
+ "abusefilter-edit-block-user-durations": "Field label for select element allowing to select block duration for registered users",
+ "abusefilter-block-anon": "Specification for type of block",
+ "abusefilter-block-user": "Specification for type of block",
+ "abusefilter-edit-denied": "Text used when a user has to access to filter details.",
+ "abusefilter-edit-main": "Fieldset legend for edit filter form.",
+ "abusefilter-edit-done-subtitle": "Page subtitle when as filter was edited and saved.",
+ "abusefilter-edit-done": "Text displayed to a user after editing a filter. Parameters:\n* $1 - a filter ID\n* $2 - the ID of the change itself\n* $3 - localized filter ID",
+ "abusefilter-edit-badsyntax": "Message to warn a user that a filter could not be edited for a given reason. Parameters:\n* $1 is a parser error text.",
+ "abusefilter-edit-missingfields": "Message to warn a user that a filter could not be edited for a given reason. Parameters:\n* $1 is a list of missing fields.",
+ "abusefilter-edit-restricted": "Message to warn a user that a filter could not be edited for a given reason.",
+ "abusefilter-edit-viewhistory": "Link description for link that leads to a revision overview for a filter.",
+ "abusefilter-edit-history": "Field label for {{msg-mw|abusefilter-edit-viewhistory}}.\n{{Identical|History}}",
+ "abusefilter-edit-check": "Button text for checking abuse filter syntax.\n\nUsed in {{msg-mw|Abusefilter-test-syntaxerr}}.",
+ "abusefilter-edit-badfilter": "User warning when referencing a filter ID that does not exist.",
+ "abusefilter-edit-revert": "Link text for reverting to an older version of a filter.",
+ "abusefilter-edit-tools": "Field label for a list of tool links.\n\nUsed in:\n* {{msg-mw|Abusefilter-import-intro}}\n{{Identical|Tool}}",
+ "abusefilter-edit-test-link": "Link text for link to a form to test a filter. Accompanying label is {{msg-mw|abusefilter-edit-tools}}.",
+ "abusefilter-edit-export": "Link text for link to create filter. Accompanying label is {{msg-mw|abusefilter-edit-tools}}.\n\nUsed in:\n* {{msg-mw|Abusefilter-import-intro}}",
+ "abusefilter-edit-syntaxok": "Status message for filter test.",
+ "abusefilter-edit-syntaxerr": "Status message for filter test. Parameters:\n* $1 is the reported error.",
+ "abusefilter-edit-bad-tags": "Status message for filter test.",
+ "abusefilter-edit-notallowed": "Error message when trying to modify a filter while not allowed.",
+ "abusefilter-edit-notallowed-global": "Error message when trying to modify a global filter while not allowed.",
+ "abusefilter-edit-notallowed-global-custom-msg": "Error message when trying to add a custom warning message to a global filter, which is not allowed.",
+ "abusefilter-edit-builder-select": "Default value for dropdown menu that allows inserting abuse filter syntax in the filter definition field.",
+ "abusefilter-edit-builder-group-op-arithmetic": "Group entry in dropdown menu.",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-op-arithmetic}}.",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-op-arithmetic}}.",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-op-arithmetic}}.",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-op-arithmetic}}.",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-op-arithmetic}}.",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-op-arithmetic}}.",
+ "abusefilter-edit-builder-group-op-comparison": "Group entry in dropdown menu.",
+ "abusefilter-edit-builder-op-comparison-equal": "Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-op-comparison}}.",
+ "abusefilter-edit-builder-op-comparison-equal-strict": "Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-op-comparison}}.",
+ "abusefilter-edit-builder-op-comparison-notequal": "Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-op-comparison}}.",
+ "abusefilter-edit-builder-op-comparison-notequal-strict": "Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-op-comparison}}.",
+ "abusefilter-edit-builder-op-comparison-lt": "Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-op-comparison}}.\n{{Identical|Less than}}",
+ "abusefilter-edit-builder-op-comparison-gt": "Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-op-comparison}}.\n{{Identical|Greater than}}",
+ "abusefilter-edit-builder-op-comparison-lte": "Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-op-comparison}}.",
+ "abusefilter-edit-builder-op-comparison-gte": "Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-op-comparison}}.",
+ "abusefilter-edit-builder-group-op-bool": "Group entry in dropdown menu.",
+ "abusefilter-edit-builder-op-bool-not": "Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-op-bool}}.",
+ "abusefilter-edit-builder-op-bool-and": "Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-op-bool}}.",
+ "abusefilter-edit-builder-op-bool-or": "Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-op-bool}}.",
+ "abusefilter-edit-builder-op-bool-xor": "Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-op-bool}}. {{optional}}",
+ "abusefilter-edit-builder-group-misc": "Group entry in dropdown menu.\n{{Identical|Miscellaneous}}",
+ "abusefilter-edit-builder-misc-in": "{{doc-important|Do not translate \"in\".}} Abuse filter syntax option in a dropdown from the group {{msg-mw|Abusefilter-edit-builder-group-misc}}.",
+ "abusefilter-edit-builder-misc-like": "{{doc-important|Do not translate \"like\".}} Abuse filter syntax option in a dropdown from the group {{msg-mw|Abusefilter-edit-builder-group-misc}}.",
+ "abusefilter-edit-builder-misc-rlike": "{{doc-important|Do not translate \"rlike\".}}\nAbuse filter syntax option in a dropdown from the group {{msg-mw|Abusefilter-edit-builder-group-misc}}.\n\n\"regex\" stands for \"regular expression\".",
+ "abusefilter-edit-builder-misc-irlike": "{{doc-important|Do not translate \"irlike\".}}\nAbuse filter syntax option in a dropdown from the group {{msg-mw|Abusefilter-edit-builder-group-misc}}.\n\n\"regex\" stands for \"regular expression\".",
+ "abusefilter-edit-builder-misc-contains": "{{doc-important|Do not translate \"contains\".}} Abuse filter syntax option in a dropdown from the group {{msg-mw|Abusefilter-edit-builder-group-misc}}.",
+ "abusefilter-edit-builder-misc-stringlit": "{{doc-important|Do not \"translate\" quotation marks in brackets to any other styles (<code><nowiki>“”, ‘’, 「」, 『』, «», „“...</nowiki></code>).}}\nAbuse filter syntax option in a dropdown from the group {{msg-mw|Abusefilter-edit-builder-group-misc}}.",
+ "abusefilter-edit-builder-misc-tern": "{{doc-important|Do not change \"X ? Y : Z\".}} Abuse filter syntax option in a dropdown from the group {{msg-mw|Abusefilter-edit-builder-group-misc}}.",
+ "abusefilter-edit-builder-misc-cond": "{{doc-important|Do not change \"if X then Y else Z\".}} Abuse filter syntax option in a dropdown from the group {{msg-mw|Abusefilter-edit-builder-group-misc}}.",
+ "abusefilter-edit-builder-group-funcs": "Group entry in dropdown menu.\n{{Identical|Function}}",
+ "abusefilter-edit-builder-funcs-length": "{{doc-important|Do not translate \"'''length'''\".}} Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-funcs}}.",
+ "abusefilter-edit-builder-funcs-lcase": "{{doc-important|Do not translate \"'''lcase'''\".}} Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-funcs}}.",
+ "abusefilter-edit-builder-funcs-ucase": "{{doc-important|Do not translate \"'''ucase'''\".}} Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-funcs}}.",
+ "abusefilter-edit-builder-funcs-ccnorm": "{{doc-important|Do not translate \"'''ccnorm'''\".}} Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-funcs}}.",
+ "abusefilter-edit-builder-funcs-ccnorm-contains-any": "{{doc-important|Do not translate \"'''ccnorm_contains_any'''\".}} Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-funcs}}.",
+ "abusefilter-edit-builder-funcs-ccnorm-contains-all": "{{doc-important|Do not translate \"'''ccnorm_contains_all'''\".}} Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-funcs}}.",
+ "abusefilter-edit-builder-funcs-rmdoubles": "{{doc-important|Do not translate \"'''rmdoubles'''\".}}\nAbuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-funcs}}.\n\nFunctional explanation: rmdoubles removes repeated characters in the argument, and returns the result. For example: \"foobybboo\" will return \"fobybo\".",
+ "abusefilter-edit-builder-funcs-specialratio": "{{doc-important|Do not translate \"'''specialratio'''\".}} Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-funcs}}.",
+ "abusefilter-edit-builder-funcs-norm": "{{doc-important|Do not translate \"'''norm'''\".}} Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-funcs}}.",
+ "abusefilter-edit-builder-funcs-count": "{{doc-important|Do not translate \"'''count'''\".}} Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-funcs}}.",
+ "abusefilter-edit-builder-funcs-rcount": "{{doc-important|Do not translate \"rcount\".}}\nAbuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-funcs}}.\n\n\"regex\" stands for \"regular expression\".",
+ "abusefilter-edit-builder-funcs-get_matches": "{{doc-important|Do not translate \"get_matches\"}} Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-funcs}}.",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "{{doc-important|Do not translate \"rmwhitespace\"}} Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-funcs}}.",
+ "abusefilter-edit-builder-funcs-rmspecials": "{{doc-important|Do not translate \"'''rmspecials'''\".}} Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-funcs}}.",
+ "abusefilter-edit-builder-funcs-ip_in_range": "{{doc-important|Do not translate \"'''ip_in_range'''\".}} Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-funcs}}.",
+ "abusefilter-edit-builder-funcs-contains-any": "{{doc-important|Do not translate \"'''contains_any'''\".}} Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-funcs}}.",
+ "abusefilter-edit-builder-funcs-contains-all": "{{doc-important|Do not translate \"'''contains_all'''\".}} Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-funcs}}.",
+ "abusefilter-edit-builder-funcs-substr": "{{doc-important|Do not translate \"'''substr'''\".}} Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-funcs}}.",
+ "abusefilter-edit-builder-funcs-strpos": "{{doc-important|Do not translate \"'''strpos'''\".}} Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-funcs}}.",
+ "abusefilter-edit-builder-funcs-str_replace": "{{doc-important|Do not translate \"'''str_replace'''\".}} Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-funcs}}.",
+ "abusefilter-edit-builder-funcs-rescape": "{{doc-important|Do not translate \"'''rescape'''\".}}\nAbuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-funcs}}.\n\n\"regex\" stands for \"regular expression\".",
+ "abusefilter-edit-builder-funcs-set_var": "{{doc-important|Do not translate \"'''set_var'''\".}}\nAbuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-funcs}}.",
+ "abusefilter-edit-builder-group-vars": "Group entry in dropdown menu.\n{{Identical|Variable}}",
+ "abusefilter-edit-builder-vars-accountname": "This variable is used only during account creation and contains the username of the newly created account. Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-vars}}.",
+ "abusefilter-edit-builder-vars-timestamp": "Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-vars}}.",
+ "abusefilter-edit-builder-vars-timestamp-expanded": "Label for the log timestamp (in expanded, human-readable form), shown in the private details of a log.",
+ "abusefilter-edit-builder-vars-action": "Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-vars}}.\n{{Identical|Action}}",
+ "abusefilter-edit-builder-vars-addedlines": "Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-vars}}.",
+ "abusefilter-edit-builder-vars-delta": "Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-vars}}.",
+ "abusefilter-edit-builder-vars-diff": "Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-vars}}.",
+ "abusefilter-edit-builder-vars-newsize": "New size of the page. Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-vars}}.",
+ "abusefilter-edit-builder-vars-oldsize": "Old size of the page. Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-vars}}.",
+ "abusefilter-edit-builder-vars-old-content-model": "Old content model of the page. Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-vars}}.",
+ "abusefilter-edit-builder-vars-new-content-model": "New content model of the page. Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-vars}}.",
+ "abusefilter-edit-builder-vars-removedlines": "Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-vars}}.",
+ "abusefilter-edit-builder-vars-summary": "Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-vars}}.",
+ "abusefilter-edit-builder-vars-article-id": "Abuse filter syntax option in a dropdown from the group {{msg-mw|Abusefilter-edit-builder-group-vars}}.\n{{Identical|Page ID}}",
+ "abusefilter-edit-builder-vars-article-ns": "The namespace that the page for the trigger is supposed to be in. Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-vars}}.",
+ "abusefilter-edit-builder-vars-article-text": "Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-vars}}.",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-vars}}.",
+ "abusefilter-edit-builder-vars-article-views": "The number of views that the page has. May not be enabled on all wikis. Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-vars}}.\n{{Identical|Page view}}",
+ "abusefilter-edit-builder-vars-movedfrom-id": "Paraphrase: The page ID of the page to be moved. Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-vars}}.",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "Paraphrase: Namespace of the page that is to be moved. Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-vars}}.",
+ "abusefilter-edit-builder-vars-movedfrom-text": "Paraphrase: Name of the page that is to be moved. Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-vars}}.",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "Paraphrase: Full name of the page that is to be moved. Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-vars}}.",
+ "abusefilter-edit-builder-vars-movedto-id": "Paraphrased: Page ID of the destination of the page that is to be moved. Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-vars}}.",
+ "abusefilter-edit-builder-vars-movedto-ns": "Paraphrased: Namespace of the destination of the page that is to be moved. Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-vars}}.",
+ "abusefilter-edit-builder-vars-movedto-text": "Paraphrased: Name of the destination of the page that is to be moved. Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-vars}}.",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "Paraphrased: Full name of the destination of the page that is to be moved. Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-vars}}.",
+ "abusefilter-edit-builder-vars-user-editcount": "Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-vars}}.",
+ "abusefilter-edit-builder-vars-user-age": "Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-vars}}.",
+ "abusefilter-edit-builder-vars-user-name": "Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-vars}}.",
+ "abusefilter-edit-builder-vars-user-groups": "See also:\n* {{msg-mw|Abusefilter-edit-builder-vars-global-user-groups}}",
+ "abusefilter-edit-builder-vars-user-rights": "Paraphrased: List of rights that the user has. Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-vars}}.",
+ "abusefilter-edit-builder-vars-user-blocked": "Paraphrased: Boolean value on whether the user is blocked. Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-vars}}.",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-vars}}.",
+ "abusefilter-edit-builder-vars-recent-contributors": "Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-vars}}.",
+ "abusefilter-edit-builder-vars-first-contributor": "Paraphrased: The user who created the earliest revision of the page. Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-vars}}.",
+ "abusefilter-edit-builder-vars-movedfrom-recent-contributors": "Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-vars}}.",
+ "abusefilter-edit-builder-vars-movedfrom-first-contributor": "Paraphrased: The user who created the earliest revision of the page that is to be moved. Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-vars}}.",
+ "abusefilter-edit-builder-vars-movedto-recent-contributors": "Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-vars}}.",
+ "abusefilter-edit-builder-vars-movedto-first-contributor": "Paraphrased: The user who created the earliest revision of the page that is to be moved. Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-vars}}.",
+ "abusefilter-edit-builder-vars-all-links": "Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-vars}}.",
+ "abusefilter-edit-builder-vars-added-links": "Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-vars}}.",
+ "abusefilter-edit-builder-vars-removed-links": "Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-vars}}.",
+ "abusefilter-edit-builder-vars-old-text": "Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-vars}}.",
+ "abusefilter-edit-builder-vars-new-text": "Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-vars}}.",
+ "abusefilter-edit-builder-vars-new-pst": "Paraphrased: The output wikitext after pre-save transform is applied to new_wikitext. Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-vars}}.",
+ "abusefilter-edit-builder-vars-diff-pst": "Paraphrased: Edit diff of new_pst against old_wikitext. Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-vars}}.",
+ "abusefilter-edit-builder-vars-addedlines-pst": "Paraphrased: Added lines in edit_diff_pst. Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-vars}}.",
+ "abusefilter-edit-builder-vars-new-text-stripped": "Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-vars}}.",
+ "abusefilter-edit-builder-vars-new-html": "Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-vars}}.",
+ "abusefilter-edit-builder-vars-restrictions-edit": "This variable contains the level of protection required to edit the page. (\"Edit\" here is not a verb, but an adjective, like \"Edit-related protection level\"). Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-vars}}.\n\nSee also {{msg-mw|Abusefilter-edit-builder-vars-restrictions-create}}, {{msg-mw|Abusefilter-edit-builder-vars-restrictions-move}}, {{msg-mw|Abusefilter-edit-builder-vars-restrictions-upload}}.",
+ "abusefilter-edit-builder-vars-restrictions-move": "This variable contains the level of protection required to move the page. (\"Move\" here is not a verb, but an adjective, like \"Move-related protection level\"). Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-vars}}.\n\nSee also {{msg-mw|Abusefilter-edit-builder-vars-restrictions-edit}}, {{msg-mw|Abusefilter-edit-builder-vars-restrictions-create}}, {{msg-mw|Abusefilter-edit-builder-vars-restrictions-upload}}.",
+ "abusefilter-edit-builder-vars-restrictions-create": "This variable contains the level of protection required to create the page. (\"Create\" here is not a verb, but an adjective, like \"Create-related protection level\"). Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-vars}}.\n\nSee also {{msg-mw|Abusefilter-edit-builder-vars-restrictions-edit}}, {{msg-mw|Abusefilter-edit-builder-vars-restrictions-move}}, {{msg-mw|Abusefilter-edit-builder-vars-restrictions-upload}}.",
+ "abusefilter-edit-builder-vars-restrictions-upload": "This variable contains the level of protection required to upload a file. (\"Upload\" here is not a verb, but an adjective, like \"Upload-related protection level\"). Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-vars}}.\n\nSee also {{msg-mw|Abusefilter-edit-builder-vars-restrictions-edit}}, {{msg-mw|Abusefilter-edit-builder-vars-restrictions-move}}, {{msg-mw|Abusefilter-edit-builder-vars-restrictions-create}}.",
+ "abusefilter-edit-builder-vars-movedfrom-restrictions-edit": "This variable contains the level of protection required to edit the page that is to be moved. (\"Edit\" here is not a verb, but an adjective, like \"Edit-related protection level\"). Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-vars}}.\n\nSee also {{msg-mw|Abusefilter-edit-builder-vars-movedfrom-restrictions-create}}, {{msg-mw|Abusefilter-edit-builder-vars-movedfrom-restrictions-move}}, {{msg-mw|Abusefilter-edit-builder-vars-movedfrom-restrictions-upload}}.",
+ "abusefilter-edit-builder-vars-movedfrom-restrictions-move": "This variable contains the level of protection required to move the page that is to be moved. (\"Move\" here is not a verb, but an adjective, like \"Move-related protection level\"). Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-vars}}.\n\nSee also {{msg-mw|Abusefilter-edit-builder-vars-movedfrom-restrictions-edit}}, {{msg-mw|Abusefilter-edit-builder-vars-movedfrom-restrictions-create}}, {{msg-mw|Abusefilter-edit-builder-vars-movedfrom-restrictions-upload}}.",
+ "abusefilter-edit-builder-vars-movedfrom-restrictions-create": "This variable contains the level of protection required to create the page that is to be moved. (\"Create\" here is not a verb, but an adjective, like \"Create-related protection level\"). Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-vars}}.\n\nSee also {{msg-mw|Abusefilter-edit-builder-vars-movedfrom-restrictions-edit}}, {{msg-mw|Abusefilter-edit-builder-vars-movedfrom-restrictions-move}}, {{msg-mw|Abusefilter-edit-builder-vars-movedfrom-restrictions-upload}}.",
+ "abusefilter-edit-builder-vars-movedfrom-restrictions-upload": "This variable contains the level of protection required to upload the file that is to be moved. (\"Upload\" here is not a verb, but an adjective, like \"Upload-related protection level\"). Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-vars}}.\n\nSee also {{msg-mw|Abusefilter-edit-builder-vars-movedfrom-restrictions-edit}}, {{msg-mw|Abusefilter-edit-builder-vars-movedfrom-restrictions-move}}, {{msg-mw|Abusefilter-edit-builder-vars-movedfrom-restrictions-create}}.",
+ "abusefilter-edit-builder-vars-movedto-restrictions-edit": "This variable contains the level of protection required to edit the page that is to be moved. (\"Edit\" here is not a verb, but an adjective, like \"Edit-related protection level\"). Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-vars}}.\n\nSee also {{msg-mw|Abusefilter-edit-builder-vars-movedto-restrictions-create}}, {{msg-mw|Abusefilter-edit-builder-vars-movedto-restrictions-move}}, {{msg-mw|Abusefilter-edit-builder-vars-movedto-restrictions-upload}}.",
+ "abusefilter-edit-builder-vars-movedto-restrictions-move": "This variable contains the level of protection required to move the page that is to be moved. (\"Move\" here is not a verb, but an adjective, like \"Move-related protection level\"). Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-vars}}.\n\nSee also {{msg-mw|Abusefilter-edit-builder-vars-movedto-restrictions-edit}}, {{msg-mw|Abusefilter-edit-builder-vars-movedto-restrictions-create}}, {{msg-mw|Abusefilter-edit-builder-vars-movedto-restrictions-upload}}.",
+ "abusefilter-edit-builder-vars-movedto-restrictions-create": "This variable contains the level of protection required to create the page that is to be moved. (\"Create\" here is not a verb, but an adjective, like \"Create-related protection level\"). Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-vars}}.\n\nSee also {{msg-mw|Abusefilter-edit-builder-vars-movedto-restrictions-edit}}, {{msg-mw|Abusefilter-edit-builder-vars-movedto-restrictions-move}}, {{msg-mw|Abusefilter-edit-builder-vars-movedto-restrictions-upload}}.",
+ "abusefilter-edit-builder-vars-movedto-restrictions-upload": "This variable contains the level of protection required to upload the file that is to be moved. (\"Upload\" here is not a verb, but an adjective, like \"Upload-related protection level\"). Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-vars}}.\n\nSee also {{msg-mw|Abusefilter-edit-builder-vars-movedto-restrictions-edit}}, {{msg-mw|Abusefilter-edit-builder-vars-movedto-restrictions-move}}, {{msg-mw|Abusefilter-edit-builder-vars-movedto-restrictions-create}}.",
+ "abusefilter-edit-builder-vars-old-text-stripped": "Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-vars}}.",
+ "abusefilter-edit-builder-vars-old-links": "Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-vars}}.",
+ "abusefilter-edit-builder-vars-old-html": "Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-vars}}.",
+ "abusefilter-edit-builder-vars-minor-edit": "Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-vars}}.",
+ "abusefilter-edit-builder-vars-file-sha1": "Abuse filter syntax option in a dropdown from the group {{msg-mw|abusefilter-edit-builder-group-vars}}.",
+ "abusefilter-edit-builder-vars-file-size": "This variable contains the size of the uploaded file.",
+ "abusefilter-edit-builder-vars-file-mime": "This variable contains the MIME type of the file",
+ "abusefilter-edit-builder-vars-file-mediatype": "This variable contains the media type of the file",
+ "abusefilter-edit-builder-vars-file-width": "This variable contains the width of the file in pixels",
+ "abusefilter-edit-builder-vars-file-height": "This variable contains the height of the file in pixels",
+ "abusefilter-edit-builder-vars-file-bits-per-channel": "This variable contains the number of bits per color channel of the file",
+ "abusefilter-edit-block-options": "Label for the checkbox for block options",
+ "abusefilter-filter-log": "Used as page title.",
+ "abusefilter-history": "Used as page title.\n\n\"Change history\" is the \"history of changes\"\n\nParameters:\n* $1 - filter ID\n\nIf the filter ID is not specified, {{msg-mw|Abusefilter-filter-log}} will be used.",
+ "abusefilter-history-foruser": "Parameters:\n* $1 - a link to the changing user's page\n* $2 - (Optional) the plain text username",
+ "abusefilter-history-hidden": "{{Identical|Hidden}}",
+ "abusefilter-history-enabled": "{{Identical|Enabled}}",
+ "abusefilter-history-global": "{{Identical|Global}}",
+ "abusefilter-history-timestamp": "Used as table column header in history page of a filter.\n\nTranslate \"Time\" as \"Timestamp\" (time and date).\n{{Identical|Time}}",
+ "abusefilter-history-user": "{{Identical|User}}",
+ "abusefilter-history-public": "Used as table header on [[Special:AbuseFilter]]",
+ "abusefilter-history-flags": "{{Identical|Flag}}",
+ "abusefilter-history-filter": "Used as table header on [[Special:AbuseFilter/history]]",
+ "abusefilter-history-comments": "{{Identical|Comment}}",
+ "abusefilter-history-actions": "{{Identical|Action}}",
+ "abusefilter-history-backedit": "Used as label on [[Special:AbuseFilter/history]]",
+ "abusefilter-history-deleted": "{{Identical|Deleted}}",
+ "abusefilter-history-filterid": "{{Identical|Filter}}",
+ "abusefilter-history-select-legend": "Used as legend on [[Special:AbuseFilter/history]]",
+ "abusefilter-history-select-user": "Used as label for the \"User\" input box. Field takes a username to filter events by.\n{{Identical|User}}",
+ "abusefilter-history-select-filter": "Used as label for the \"Filter ID\" input box. Field takes a filter id to filter events by.",
+ "abusefilter-history-select-submit": "Used as submit button on [[Special:AbuseFilter/history]]",
+ "abusefilter-history-diff": "{{Identical|Change}}",
+ "abusefilter-history-error-hidden": "Error message shown to user if the filter they are trying to view is hidden and they do not have permission to view it.",
+ "abusefilter-exception-unexpectedatend": "Error message from the abuse filter parser.\nParameters:\n* $1 - Position in the string\n* $2 - Unexpected code, i.e. <code>else, then, end, :, '</code>",
+ "abusefilter-exception-expectednotfound": "Error message from the abuse filter parser.\nParameters:\n* $1 - Position in the string\n* $2 - Expected code, i.e. <code>else, then, end, :, '</code>\n* $3 - Type of the found code\n* $4 - Value of the type",
+ "abusefilter-exception-unrecognisedkeyword": "Error message from the abuse filter parser.\nParameters:\n* $1 - Position in the string\n* $2 - Unrecognized keyword",
+ "abusefilter-exception-unexpectedtoken": "Error message from the abuse filter parser.\nParameters:\n* $1 - Position in the string\n* $2 - Type\n* $3 - Unexpected token",
+ "abusefilter-exception-unclosedstring": "Error message from the abuse filter parser.\nParameters:\n* $1 - Position in the string",
+ "abusefilter-exception-invalidoperator": "Error message from the abuse filter parser.\nParameters:\n* $1 - Position in the string\n* $2 - Invalid operator",
+ "abusefilter-exception-unrecognisedtoken": "Error message from the abuse filter parser.\nParameters:\n* $1 - Position in the string\n* $2 - Unrecognized token",
+ "abusefilter-exception-noparams": "Error message from the abuse filter parser.\nParameters:\n* $1 - Position in the string\n* $2 - Function",
+ "abusefilter-exception-dividebyzero": "Error message from the abuse filter parser.\nParameters:\n* $1 - Position in the string\n* $2 - AFPData (integer or float?)",
+ "abusefilter-exception-unrecognisedvar": "Error message from the abuse filter parser. Parameters:\n* $1 - Position in the string\n* $2 - Unrecognized variable",
+ "abusefilter-exception-notenoughargs": "Error message from the abuse filter parser. Parameters:\n* $1 - position in the string (numeral)\n* $2 - a function name\n* $3 - the number of expected arguments\n* $4 - the number of passed arguments (also supports PLURAL)",
+ "abusefilter-exception-regexfailure": "Error message from the abuse filter parser. Parameters:\n* $1 - Position in the string\n* $2 - Error message\n* $3 - Regular expression",
+ "abusefilter-exception-overridebuiltin": "Error message from the abuse filter parser. Parameters:\n* $1 - Position in the string\n* $2 - Built-in variable",
+ "abusefilter-exception-outofbounds": "Error message from the abuse filter parser. Parameters:\n* $1 - Position in the string\n* $2 - Index\n* $3 - Number of items in list",
+ "abusefilter-exception-notlist": "Error message from the abuse filter parser. Parameters:\n* $1 - Position in the string",
+ "abusefilter-exception-unclosedcomment": "Error message from the abuse filter parser. Parameters:\n* $1 - Position in the string",
+ "abusefilter-action-tag": "{{doc-abusefilter-action}}\n\nThe edit or change can be 'tagged' with a particular tag, which will be shown on Recent Changes, contributions, logs, new pages, history, and everywhere else. \n\nThis is a verb in the imperative form.\n\n{{Identical|Tag}}",
+ "abusefilter-action-throttle": "{{doc-abusefilter-action}}",
+ "abusefilter-action-warn": "{{doc-abusefilter-action}}",
+ "abusefilter-action-blockautopromote": "{{doc-abusefilter-action}}\n\n'''Revoking auto-promoted groups'''\n\nTo '''block autopromote''' means that actions matching the filter will cause the user in question to be barred from receiving any extra groups from $wgAutoPromote for a period ranging from 3 to 7 days (random). \nAdditional information available: https://www.mediawiki.org/wiki/Extension:AbuseFilter/Actions",
+ "abusefilter-action-block": "{{doc-abusefilter-action}}\n\nUsers matching the filter will be blocked indefinitely, with a descriptive block summary indicating the rule that was triggered.\n\nThis is a verb.\n{{Identical|Block}}",
+ "abusefilter-action-degroup": "{{doc-abusefilter-action}}\n\n'''Removing from privileged groups'''\n\nUsers matching the filter will be '''removed from all privileged groups''' (sysop, bureaucrat, etc). A descriptive summary will be used, detailing the rule that was triggered. \nAdditional information: https://www.mediawiki.org/wiki/Extension:AbuseFilter/Actions",
+ "abusefilter-action-rangeblock": "{{doc-abusefilter-action}}\n\n'''Range-block'''\n\nSomewhat of a 'nuclear option', the entire /16 range from which the rule was triggered will be blocked for 24 hours.\n\nThis is a verb in the imperative form.",
+ "abusefilter-action-disallow": "{{doc-abusefilter-action}}\n\nTo '''disallow''' actions means that actions matching the filter will be '''prevented''', and a descriptive error message will be shown. Additional information: https://www.mediawiki.org/wiki/Extension:AbuseFilter/Actions\n{{Identical|Disallow}}",
+ "abusefilter-revert-title": "Used as page title of [[Special:AbuseFilter/revert/1]] (go to [[Special:AbuseFilter]], open a filter, click \"Revert actions taken by this filter\").\n\nParameters:\n* $1 - filter ID",
+ "abusefilter-revert-intro": "Parameters:\n* $1 - filter",
+ "abusefilter-revert-preview-item": "Parameters:\n* $1 is a localised time and date\n* $2 is the linked user that made a change\n* $3 is the action (one of block, blockautopromote or degroup)\n* $4 is the page title of the page that was changed\n* $5 is a (localised) comma separated list of actions\n* $6 is link to the log details with {{msg-mw|abusefilter-log-detailslink}} as link description.\n* $7 is a raw username, which can be used for GENDER.",
+ "abusefilter-revert-search-legend": "Used as label on [[Special:AbuseFilter/revert]]",
+ "abusefilter-revert-periodstart": "Used as label on [[Special:AbuseFilter/revert]]",
+ "abusefilter-revert-periodend": "Used as label on [[Special:AbuseFilter/revert]]",
+ "abusefilter-revert-search": "Used as label on [[Special:AbuseFilter/revert]]",
+ "abusefilter-revert-filter": "{{Identical|Filter ID}}",
+ "abusefilter-revert-preview-intro": "Refers to {{msg-mw|Abusefilter-revert-confirm}}.",
+ "abusefilter-revert-confirm-legend": "Form fieldset for [[Special:AbuseFilter/revert]] asking the user to confirm the revert. Refers to {{msg-mw|Abusefilter-revert-confirm}}.",
+ "abusefilter-revert-confirm": "This is also used in {{msg-mw|Abusefilter-revert-preview-intro}}. When changing this message, please also remember to change that one.\n{{Identical|Confirm}}",
+ "abusefilter-revert-success": "Parameters:\n* $1 - a filter ID\n* $2 - localized filter ID",
+ "abusefilter-revert-reason": "Parameters:\n* $1 is a filter ID\n* $2 is a reason",
+ "abusefilter-revert-reasonfield": "{{Identical|Reason}}",
+ "abusefilter-test": "Used as label on [[Special:AbuseFilter/test]]",
+ "abusefilter-test-intro": "Used as intro text.\n\nThe page title is {{msg-mw|Abusefilter-test}}.\n\nRefers to {{msg-mw|Abusefilter-test-load}}.\n\nParameters:\n* $1 - limit of changes; 100 (hard-coded)",
+ "abusefilter-test-legend": "Caption of the fieldset on [[Special:AbuseFilter/test]]",
+ "abusefilter-test-load-filter": "Used as label on [[Special:AbuseFilter/test]]",
+ "abusefilter-test-submit": "Caption of the submit button on [[Special:AbuseFilter/test]].\n{{Identical|Test}}",
+ "abusefilter-test-load": "Text on a button, and referred to in {{msg-mw|abusefilter-test-intro}}\n{{Identical|Load}}",
+ "abusefilter-test-user": "Used as label on [[Special:AbuseFilter/test]]",
+ "abusefilter-test-period-start": "Used as label on [[Special:AbuseFilter/test]]",
+ "abusefilter-test-period-end": "Used as label on [[Special:AbuseFilter/test]]",
+ "abusefilter-test-page": "Used as label on [[Special:AbuseFilter/test]]",
+ "abusefilter-test-shownegative": "Used as label on [[Special:AbuseFilter/test]]",
+ "abusefilter-test-syntaxerr": "Refers to {{msg-mw|Abusefilter-edit-check}}.",
+ "abusefilter-test-badtitle": "Message if a bad title is entered on [[Special:AbuseFilter/test]]",
+ "abusefilter-changeslist-examine": "Used as link text on [[Special:AbuseFilter]]",
+ "abusefilter-examine": "Used as special page label",
+ "abusefilter-examine-intro": "Used as intro on [[Special:AbuseFilter/examine]]",
+ "abusefilter-examine-legend": "Used as legend on [[Special:AbuseFilter/examine]]",
+ "abusefilter-examine-diff": "Used somewhere on [[Special:AbuseFilter/examine]]",
+ "abusefilter-examine-user": "{{Identical|User}}",
+ "abusefilter-examine-title": "{{Identical|Page title}}",
+ "abusefilter-examine-submit": "{{Identical|Search}}",
+ "abusefilter-examine-vars": "Used as header on [[Special:AbuseFilter/examine]]",
+ "abusefilter-examine-test": "Used as header on [[Special:AbuseFilter/examine]]",
+ "abusefilter-examine-test-button": "Used as button text on [[Special:AbuseFilter/examine]]",
+ "abusefilter-examine-match": "Used as message on [[Special:AbuseFilter/examine]]",
+ "abusefilter-examine-nomatch": "Used as message on [[Special:AbuseFilter/examine]]",
+ "abusefilter-examine-syntaxerror": "Error message shown when the user's input has a syntax error.",
+ "abusefilter-examine-notfound": "Used as warning on [[Special:AbuseFilter/examine]]",
+ "abusefilter-examine-incompatible": "Used as error message on [[Special:AbuseFilter/examine]]",
+ "abusefilter-examine-noresults": "Used as warning on [[Special:AbuseFilter/examine]]",
+ "abusefilter-topnav": "Used as header for navigation links which have the following link texts:\n* {{msg-mw|Abusefilter-topnav-home}}\n* {{msg-mw|Abusefilter-topnav-test}}\n* {{msg-mw|Abusefilter-topnav-examine}}\n* {{msg-mw|Abusefilter-topnav-log}}\n* {{msg-mw|Abusefilter-topnav-tools}}\n* {{msg-mw|Abusefilter-topnav-import}}",
+ "abusefilter-topnav-home": "Used as link text. The link points to [[Special:AbuseFilter]].\n{{Identical|Home}}",
+ "abusefilter-topnav-test": "Used as link text in the navigation toolbar.",
+ "abusefilter-topnav-examine": "Used as link text in the navigation toolbar.\n\nThe link points to [[Special:AbuseFilter/examine]].",
+ "abusefilter-topnav-log": "Used as link text in the navigation toolbar.\n\nThe link points to [[Special:AbuseFilter/history]].\n{{Identical|Abuse log}}",
+ "abusefilter-topnav-tools": "Used as link text in the navigation toolbar.",
+ "abusefilter-topnav-import": "Used as link text in the navigation toolbar.\n\nThe link points to [[Special:AbuseLog]].",
+ "abusefilter-log-name": "{{doc-logpage}}",
+ "abusefilter-log-header": "Used as description on [[Special:Log/abusefilter]]",
+ "abusefilter-logentry-create": "Parameters:\n* $1 - a link to a user page with a user name as link text, followed by a series of related links\n* $2 - raw username, for GENDER support\n* $3 - (unused)\n* $4 - text {{msg-mw|abusefilter-log-detailedentry-local}} linked to the filter created\n* $5 - text {{msg-mw|abusefilter-log-detailslink}} linked to the filter change details\n{{Identical|Created}}",
+ "abusefilter-logentry-modify": "Parameters:\n* $1 - a link to a user page with a user name as link text, followed by a series of related links\n* $2 - raw username, for GENDER support\n* $3 - (unused)\n* $4 - text {{msg-mw|abusefilter-log-detailedentry-local}} linked to the modified filter\n* $5 - text {{msg-mw|abusefilter-log-detailslink}} linked to the filter change details",
+ "abusefilter-log-noresults": "{{Identical|No result}}",
+ "abusefilter-diff-title": "Similar to {{msg-mw|Difference}}",
+ "abusefilter-diff-item": "{{Identical|Item}}",
+ "abusefilter-diff-version": "Message is used in two scenarios.\n* $1 is a timestamp, which links to the old version or the new version.\n* $2 is a link to a username.\n* $3 is a raw username, which can be used for GENDER.",
+ "abusefilter-diff-info": "Header for the box containing the basic information about a user account, displayed on the 'user profile' tab of the [[Special:Preferences|user preferences]] special page.\n{{Identical|Basic information}}",
+ "abusefilter-diff-pattern": "Used as table row on diff view under [[Special:AbuseFilter/history]]",
+ "abusefilter-diff-invalid": "Used as error message on diff view under [[Special:AbuseFilter/history]]",
+ "abusefilter-diff-backhistory": "Used as label on diff view on [[Special:AbuseFilter/history]]",
+ "abusefilter-diff-prev": "Link to the diff view for the previous change to this filter.\n\nSee also:\n* {{msg-mw|Abusefilter-diff-next}}\n* {{msg-mw|Previousdiff}} and {{msg-mw|Nextdiff}}",
+ "abusefilter-diff-next": "Link to the diff view for the next change to this filter.\n\nSee also:\n* {{msg-mw|Abusefilter-diff-prev}}\n* {{msg-mw|Previousdiff}} and {{msg-mw|Nextdiff}}",
+ "abusefilter-import-intro": "{{doc-important|Do not translate <code><nowiki>{{int:abusefilter-edit-export}}</nowiki></code>, <code><nowiki>{{int:abusefilter-tools-subtitle}}</nowiki></code>, and <code><nowiki>{{int:abusefilter-import-submit}}</nowiki></code> unless you absolute must substitute any of them.}}\n\nRefers to:\n* {{msg-mw|Abusefilter-edit-export}}\n* {{msg-mw|Abusefilter-edit-tools}}\n* {{msg-mw|Abusefilter-import-submit}}",
+ "abusefilter-import-submit": "Used as label for the Submit button.\n\nPreceded by the textarea.\n\nUsed in:\n* {{msg-mw|Abusefilter-import-intro}}.",
+ "abusefilter-group-default": "The name for the default filter group. Most filters will be in this group.\n{{Identical|Default}}",
+ "abusefilter-http-error": "Error message for HTTP requests. Parameters:\n* $1 - HTTP response code.",
+ "abusefilter-view-private-submit": "Submit button label for viewing private details of an abuse log",
+ "abusefilter-view-private": "Legend for abuse filter log entry private details form.",
+ "abusefilter-view-private-reason": "Label for the textbox where the user enters the reason they are accessing private log details.",
+ "abusefilter-log-details-id": "Row label in private log details.",
+ "abusefilter-invalid-request": "Warning shown when accessing the private details page without submitting the form properly. Parameters:\n* $1 is the ID of the log requested.",
+ "abusefilter-invalid-request-noid": "Warning shown when accessing the private details page without a log ID parameter.",
+ "log-description-abusefilterprivatedetails": "The description of the abuse filter private details access log.",
+ "abusefilter-noreason": "Warning message shown when no reasons is given to access the private details of an abuse log.",
+ "abusefilter-log-ip-not-available": "Text shown when IP address is not available.\n{{Identical|Not available}}",
+ "tag-abusefilter-condition-limit": "Change tag for edits that reached the condition limit",
+ "tag-abusefilter-condition-limit-description": "Description for \"condition limit reached\" change tag",
+ "apihelp-abusefiltercheckmatch-description": "{{doc-apihelp-description|abusefiltercheckmatch}}",
+ "apihelp-abusefiltercheckmatch-summary": "{{doc-apihelp-summary|abusefiltercheckmatch}}",
+ "apihelp-abusefiltercheckmatch-extended-description": "{{doc-apihelp-extended-description|abusefiltercheckmatch}}",
+ "apihelp-abusefiltercheckmatch-param-filter": "{{doc-apihelp-param|abusefiltercheckmatch|filter}}",
+ "apihelp-abusefiltercheckmatch-param-vars": "{{doc-apihelp-param|abusefiltercheckmatch|vars}}",
+ "apihelp-abusefiltercheckmatch-param-rcid": "{{doc-apihelp-param|abusefiltercheckmatch|rcid}}",
+ "apihelp-abusefiltercheckmatch-param-logid": "The \"log ID\" is the numerical identifier of an entry in the log of the abuse filter extensions. \"Check against\" means said ID is used to control a check over abuse filter functioning related to the respective log entry.\n----\n{{doc-apihelp-param|abusefiltercheckmatch|logid}}",
+ "apihelp-abusefiltercheckmatch-example-1": "{{doc-apihelp-example|abusefiltercheckmatch}}",
+ "apihelp-abusefilterchecksyntax-description": "{{doc-apihelp-description|abusefilterchecksyntax}}",
+ "apihelp-abusefilterchecksyntax-summary": "{{doc-apihelp-summary|abusefilterchecksyntax}}",
+ "apihelp-abusefilterchecksyntax-param-filter": "{{doc-apihelp-param|abusefilterchecksyntax|filter}}",
+ "apihelp-abusefilterchecksyntax-example-1": "{{doc-apihelp-example|abusefilterchecksyntax}}",
+ "apihelp-abusefilterchecksyntax-example-2": "{{doc-apihelp-example|abusefilterchecksyntax}}",
+ "apihelp-abusefilterevalexpression-description": "{{doc-apihelp-description|abusefilterevalexpression}}",
+ "apihelp-abusefilterevalexpression-summary": "{{doc-apihelp-summary|abusefilterevalexpression}}",
+ "apihelp-abusefilterevalexpression-param-expression": "{{doc-apihelp-param|abusefilterevalexpression|expression}}",
+ "apihelp-abusefilterevalexpression-example-1": "{{doc-apihelp-example|abusefilterevalexpression}}",
+ "apihelp-abusefilterunblockautopromote-description": "{{doc-apihelp-description|abusefilterunblockautopromote}}\n Autopromotion is an automatic system that gives rights to users when certain conditions are met.",
+ "apihelp-abusefilterunblockautopromote-summary": "{{doc-apihelp-summary|abusefilterunblockautopromote}}\n Autopromotion is an automatic system that gives rights to users when certain conditions are met.",
+ "apihelp-abusefilterunblockautopromote-param-user": "{{doc-apihelp-param|abusefilterunblockautopromote|user}}",
+ "apihelp-abusefilterunblockautopromote-example-1": "{{doc-apihelp-example|abusefilterunblockautopromote}}\n Autopromotion is an automatic system that gives rights to users when certain conditions are met.",
+ "apihelp-query+abusefilters-description": "{{doc-apihelp-description|query+abusefilters}}",
+ "apihelp-query+abusefilters-summary": "{{doc-apihelp-summary|query+abusefilters}}",
+ "apihelp-query+abusefilters-param-startid": "{{doc-apihelp-param|query+abusefilters|startid}}",
+ "apihelp-query+abusefilters-param-endid": "{{doc-apihelp-param|query+abusefilters|endid}}",
+ "apihelp-query+abusefilters-param-show": "{{doc-apihelp-param|query+abusefilters|show}}",
+ "apihelp-query+abusefilters-param-limit": "{{doc-apihelp-param|query+abusefilters|limit}}",
+ "apihelp-query+abusefilters-param-prop": "{{doc-apihelp-param|query+abusefilters|prop}}",
+ "apihelp-query+abusefilters-example-1": "{{doc-apihelp-example|query+abusefilters}}",
+ "apihelp-query+abusefilters-example-2": "{{doc-apihelp-example|query+abusefilters}}",
+ "apihelp-query+abuselog-description": "{{doc-apihelp-description|query+abuselog}}",
+ "apihelp-query+abuselog-summary": "{{doc-apihelp-summary|query+abuselog}}",
+ "apihelp-query+abuselog-param-start": "{{doc-apihelp-param|query+abuselog|start}}",
+ "apihelp-query+abuselog-param-end": "{{doc-apihelp-param|query+abuselog|end}}",
+ "apihelp-query+abuselog-param-user": "{{doc-apihelp-param|query+abuselog|user}}",
+ "apihelp-query+abuselog-param-title": "{{doc-apihelp-param|query+abuselog|title}}",
+ "apihelp-query+abuselog-param-filter": "{{doc-apihelp-param|query+abuselog|filter}}",
+ "apihelp-query+abuselog-param-limit": "{{doc-apihelp-param|query+abuselog|limit}}",
+ "apihelp-query+abuselog-param-prop": "{{doc-apihelp-param|query+abuselog|prop}}",
+ "apihelp-query+abuselog-param-wiki": "{{doc-apihelp-param|query+abuselog|wiki}}",
+ "apihelp-query+abuselog-example-1": "{{doc-apihelp-example|query+abuselog}}",
+ "apihelp-query+abuselog-example-2": "{{doc-apihelp-example|query+abuselog}}",
+ "apierror-abusefilter-canttest": "{{doc-apierror}}",
+ "apierror-abusefilter-cantcheck": "{{doc-apierror}}",
+ "apierror-abusefilter-nosuchlogid": "{{doc-apierror}}\n\nParameters:\n* $1 - AbuseFilter log ID number.",
+ "apierror-abusefilter-badsyntax": "{{doc-apierror}}"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/qu.json b/www/wiki/extensions/AbuseFilter/i18n/qu.json
new file mode 100644
index 00000000..f46c50e4
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/qu.json
@@ -0,0 +1,16 @@
+{
+ "@metadata": {
+ "authors": [
+ "AlimanRuna"
+ ]
+ },
+ "abusefilter": "Millay ruray ch'illchina churana",
+ "abuselog": "Millay ruray hallch'a",
+ "abusefilter-blocker": "Millay ruray ch'illchina",
+ "action-abusefilter-log": "Millay ruray hallch'ata qhaway",
+ "abusefilter-log": "Millay ruray hallch'a",
+ "abusefilter-log-linkoncontribs": "millay ruray hallch'a",
+ "abusefilter-log-linkoncontribs-text": "Kay ruraqpaq millay ruray hallch'a",
+ "abusefilter-edit-warn-actions": "Ruraykuna:",
+ "abusefilter-revert-confirm": "Takyachiy"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/rif.json b/www/wiki/extensions/AbuseFilter/i18n/rif.json
new file mode 100644
index 00000000..0a513952
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/rif.json
@@ -0,0 +1,10 @@
+{
+ "@metadata": {
+ "authors": [
+ "Jose77",
+ "Amara-Amaziɣ"
+ ]
+ },
+ "abusefilter-log-search-submit": "ⵔⵣⵓ",
+ "abusefilter-list-edit": "Arri"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/rm.json b/www/wiki/extensions/AbuseFilter/i18n/rm.json
new file mode 100644
index 00000000..4096bdb0
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/rm.json
@@ -0,0 +1,12 @@
+{
+ "@metadata": {
+ "authors": [
+ "Kazu89"
+ ]
+ },
+ "abuselog": "Protocol dal filter d'abus",
+ "abusefilter-log": "Protocol dal filter d'abus",
+ "abusefilter-log-linkoncontribs": "protocol dal filter d'abus",
+ "abusefilter-topnav-log": "Protocol dal filter d'abus",
+ "abusefilter-log-name": "Protocol dal filter d'abus"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/ro.json b/www/wiki/extensions/AbuseFilter/i18n/ro.json
new file mode 100644
index 00000000..36342fc7
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/ro.json
@@ -0,0 +1,422 @@
+{
+ "@metadata": {
+ "authors": [
+ "Cin",
+ "Ervinutz",
+ "Firilacroco",
+ "KlaudiuMihaila",
+ "Mihai",
+ "Minisarm",
+ "Misterr",
+ "Rsocol",
+ "Silviubogan",
+ "Stelistcristi",
+ "Strainu",
+ "Matma Rex"
+ ]
+ },
+ "abusefilter-desc": "Aplică euristici automate modificărilor.",
+ "abusefilter": "Configurare filtru de abuz",
+ "abuselog": "Jurnal abuzuri",
+ "abusefilter-intro": "Bun venit la interfața de gestionare a filtrului de abuzuri.\nFiltrul de abuzuri este un mecanism software automat care aplică euristici automate tuturor acțiunilor.\nAceastă interfață afișează o listă de filtre definite și permite modificarea acestora.",
+ "abusefilter-mustbeeditor": "Din motive de securitate, doar utilizatorii cu drept de modificare a filtrelor de abuz pot utiliza această interfață.",
+ "abusefilter-warning": "'''Atenție:''' Această acțiune a fost identificată în mod automat ca fiind periculoasă.\nModificările neconstructive vor fi rapid înlăturate,\niar cele evident neconstructive și repetate vor avea ca efect blocarea contului sau adresei IP de la care vă conectați.\nDacă într-adevăr credeți că această acțiune este constructivă, o puteți retrimite pentru a o confirma.\nO descriere sumară a regulii abuzului care se potrivește acțiunii dumneavoastră este: $1",
+ "abusefilter-disallowed": "Această acțiune a fost identificată în mod automat ca fiind periculoasă, din acest motiv fiind refuzată.\nDacă într-adevăr credeți că acțiunea dumneavoastră a fost constructivă, vă rugăm să contactați un administrator și să-l informați despre ceea ce doriți să întreprindeți.\nO descriere sumară a regulii abuzului care se potrivește acțiunii dumneavoastră este: $1",
+ "abusefilter-blocked-display": "Această acțiune a fost identificată în mod automat ca fiind periculoasă;\ndrept urmare ați fost împiedicat să o executați.\nÎn plus, pentru a proteja {{SITENAME}}, contul dumneavoastră și toate adresele IP asociate acestuia au fost blocate de la modificare.\nDacă blocarea este eronată, vă rugăm să contactați un administrator.\nO descriere sumară a regulii abuzului care se potrivește acțiunii dumneavoastră este: $1",
+ "abusefilter-degrouped": "Această acțiune a fost identificată în mod automat ca fiind periculoasă.\nÎn consecință, acțiunea a fost refuzată și, din moment ce contul dumneavoastră pare a fi compromis, toate drepturile au fost revocate.\nDacă sunteți de părere că această sancțiune este eronată, vă rugăm să contactați un birocrat căruia să-i explicați cele întâmplate, drepturile dumneavoastră putând fi astfel restaurate.\nO descriere sumară a regulii abuzului care se potrivește acțiunii dumneavoastră este: $1",
+ "abusefilter-autopromote-blocked": "Această acțiune a fost identificată în mod automat ca fiind periculoasă și a fost refuzată.\nÎn plus, ca o măsură de securitate, unele privilegii pe care le-ați dobândit în momentul creării contului au fost revocate.\nO descriere sumară a regulii abuzului care se potrivește acțiunii dumneavoastră este: $1",
+ "abusefilter-blocker": "Filtru abuz",
+ "abusefilter-blockreason": "Blocare automată efectuată de filtrul de abuz.\nDescrierea regulii aplicate: $1",
+ "abusefilter-degroupreason": "Drepturi automat suspendate de către filtrul de abuz.\nDescrierea regulii: $1",
+ "abusefilter-accountreserved": "Acest nume de cont este rezervat pentru a fi folosit de către filtrul abuz.",
+ "right-abusefilter-modify": "Modifică filtrele de abuz",
+ "right-abusefilter-view": "Vizualizează filtrele de abuz",
+ "right-abusefilter-log": "Vizualizează jurnalul de abuzuri",
+ "right-abusefilter-log-detail": "Vizualizează intrări detaliate în jurnalul de abuzuri",
+ "right-abusefilter-private": "Vizualizează datele private din jurnalul de abuzuri",
+ "right-abusefilter-modify-restricted": "Modifică filtrele de abuz cu acțiuni restricționate",
+ "right-abusefilter-revert": "Revine asupra tuturor modificărilor corespunzătoare unui filtru de abuz dat",
+ "right-abusefilter-view-private": "Vizualizează filtrele de abuz marcate ca private",
+ "right-abusefilter-log-private": "Vizualizează intrările în jurnalul filtrelor de abuz marcate ca private",
+ "right-abusefilter-hide-log": "Ascunde intrările în jurnalul de abuzuri",
+ "right-abusefilter-hidden-log": "Vizualizează intrările ascunse din jurnalul de abuzuri",
+ "right-abusefilter-modify-global": "Creează sau modifică filtre globale de abuz",
+ "action-abusefilter-modify": "modifică filtrele de abuz",
+ "action-abusefilter-view": "vezi filtrele de abuzare",
+ "action-abusefilter-log": "vezi jurnalul de abuzare",
+ "action-abusefilter-log-detail": "vedeți înregistrările jurnalului cu abuzuri detaliate",
+ "action-abusefilter-private": "vedeți date private în jurnalul de abuzuri",
+ "action-abusefilter-modify-restricted": "modificați filtrele de abuzare cu acțiuni restricționate",
+ "action-abusefilter-revert": "anulați toate modificările de la filtru de abuzare",
+ "action-abusefilter-view-private": "vezi filtrele de abuzare marcate ca private",
+ "abusefilter-log": "Jurnal filtru abuz",
+ "abusefilter-log-summary": "Acest jurnal afișează o listă a tuturor acțiunilor capturate de către filtre.",
+ "abusefilter-log-search": "Căutare jurnal abuz",
+ "abusefilter-log-search-user": "Utilizator:",
+ "abusefilter-log-search-filter": "ID-uri filtre (separate prin bare verticale):",
+ "abusefilter-log-search-title": "Titlu:",
+ "abusefilter-log-search-wiki": "Wiki:",
+ "abusefilter-log-search-entries-label": "Vizibilitate:",
+ "abusefilter-log-search-entries-all": "Toate intrările",
+ "abusefilter-log-search-entries-hidden": "Doar intrările ascunse",
+ "abusefilter-log-search-entries-visible": "Doar intrările vizibile",
+ "abusefilter-log-search-submit": "Caută",
+ "abusefilter-log-entry": "$1: $2 a declanșat un filtru de abuz, executând acțiunea „$3” asupra paginii $4.\nMăsura luată: $5;\nDescrierea filtrului: $6",
+ "abusefilter-log-entry-withdiff": "$1: $2 a declanșat un filtru de abuz, executând acțiunea „$3” asupra paginii $4.\nMăsura luată: $5;\nDescrierea filtrului: $6 ($7)",
+ "abusefilter-log-detailedentry-meta": "$1: $2 a declanșat $3, executând acțiunea „$4” asupra paginii $5.\nMăsura luată: $6;\nDescrierea filtrului: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "filtru global $1",
+ "abusefilter-log-detailedentry-local": "filtrul $1",
+ "abusefilter-log-detailslink": "detalii",
+ "abusefilter-log-diff": "dif",
+ "abusefilter-log-hidelink": "ajustează vizibilitatea",
+ "abusefilter-log-details-legend": "Detalii pentru intrarea $1 din jurnal",
+ "abusefilter-log-details-var": "Variabilă",
+ "abusefilter-log-details-val": "Valoare",
+ "abusefilter-log-details-vars": "Parametrii acțiunii",
+ "abusefilter-log-details-private": "Date private",
+ "abusefilter-log-details-ip": "Adresa IP de origine",
+ "abusefilter-log-noactions": "nimic",
+ "abusefilter-log-details-diff": "Modificări făcute în modificare",
+ "abusefilter-log-linkoncontribs": "jurnal de abuzare",
+ "abusefilter-log-linkoncontribs-text": "Jurnalul de abuzare pentru acest utilizator",
+ "abusefilter-log-hidden": "(intrare ascunsă)",
+ "abusefilter-log-hidden-implicit": "(ascuns, deoarece versiunea a fost ștearsă)",
+ "abusefilter-log-cannot-see-details": "Nu aveți permisiunea de a vizualiza detalii despre această intrare.",
+ "abusefilter-log-details-hidden": "Nu puteți vizualiza detaliile acestei intrări, deoarece acestea nu sunt oferite publicului.",
+ "abusefilter-log-hide-legend": "Ascunde intrarea în jurnal",
+ "abusefilter-log-hide-id": "ID-ul intrării în jurnal:",
+ "abusefilter-log-hide-hidden": "Ascunde această intrare afișării publice",
+ "abusefilter-log-hide-reason": "Motiv:",
+ "abusefilter-log-hide-forbidden": "Nu aveți permisiunea să ascundeți intrările din jurnalul de abuzuri.",
+ "abusefilter-logentry-suppress": "ascunde „[[$1]]”",
+ "abusefilter-logentry-unsuppress": "dezvăluie „[[$1]]”",
+ "logentry-abusefilter-hit": "$1 a declanșat $4 prin efectuarea acțiunii „$5” la $3. Acțiuni întreprinse: $6 ($7)",
+ "abusefilter-management": "Administrare filtru abuz",
+ "abusefilter-list": "Toate filtrele",
+ "abusefilter-list-id": "ID filtru",
+ "abusefilter-list-status": "Statut",
+ "abusefilter-list-public": "Descriere publică",
+ "abusefilter-list-consequences": "Consecințe",
+ "abusefilter-list-visibility": "Vizibilitate",
+ "abusefilter-list-hitcount": "Număr potriviri",
+ "abusefilter-list-edit": "Modifică",
+ "abusefilter-list-details": "Detalii",
+ "abusefilter-list-limit": "Număr pe pagină:",
+ "abusefilter-list-lastmodified": "Ultima modificare",
+ "abusefilter-list-group": "Grup de filtru",
+ "abusefilter-hidden": "Privat",
+ "abusefilter-unhidden": "Public",
+ "abusefilter-enabled": "Activat",
+ "abusefilter-deleted": "Șters",
+ "abusefilter-disabled": "Dezactivat",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|potrivire|potriviri|de potriviri}}",
+ "abusefilter-new": "Creează un filtru nou",
+ "abusefilter-return": "Înapoi la gestionarea filtrului",
+ "abusefilter-status-global": "Global",
+ "abusefilter-list-options": "Opțiuni",
+ "abusefilter-list-options-deleted": "Filtre șterse:",
+ "abusefilter-list-options-deleted-only": "Arată doar filtrele șterse",
+ "abusefilter-list-options-deleted-hide": "Ascunde filtrele șterse",
+ "abusefilter-list-options-deleted-show": "Include filtrele șterse",
+ "abusefilter-list-options-scope": "Arată filtrele:",
+ "abusefilter-list-options-scope-local": "Doar reguli locale",
+ "abusefilter-list-options-scope-global": "Doar reguli globale",
+ "abusefilter-list-options-scope-all": "Reguli locale și globale",
+ "abusefilter-list-options-disabled": "Filtre dezactivate:",
+ "abusefilter-list-options-hidedisabled": "Ascunde filtrele dezactivate",
+ "abusefilter-list-options-submit": "Actualizează",
+ "abusefilter-tools-text": "Aici sunt câteva unelte care pot fi utile în formularea și depanarea filtrelor abuz.",
+ "abusefilter-tools-expr": "Expresii test",
+ "abusefilter-tools-submitexpr": "Evaluare",
+ "abusefilter-tools-reautoconfirm": "Restaurează statutul autoconfirmat",
+ "abusefilter-tools-reautoconfirm-user": "Utilizator:",
+ "abusefilter-tools-reautoconfirm-submit": "Re-autoconfirmare",
+ "abusefilter-reautoconfirm-none": "Acel utilizator nu are statutul de utilizator autoconfirmat suspendat.",
+ "abusefilter-reautoconfirm-notallowed": "Nu ai dreptul de a restaura un statut autoconfirmat.",
+ "abusefilter-reautoconfirm-done": "Statutul de autoconfirmat al contului a fost restaurat",
+ "abusefilter-status": "Din {{PLURAL:$1|ultima acțiune|ultimele $1 acțiuni|ultimele $1 de acțiuni}}, $2 ($3%) {{PLURAL:$2|a|au}} atins condiția limită de $4 rulări și $5 ($6%) s-{{PLURAL:$5|a|au}} potrivit cu unul dintre filtrele active.",
+ "abusefilter-edit": "Modificare filtru abuz",
+ "abusefilter-edit-subtitle": "Modificare filtru $1",
+ "abusefilter-edit-subtitle-new": "Se creează filtrul",
+ "abusefilter-edit-oldwarning": "<strong>Modificați o versiune învechită a acestui filtru.\nStatisticile citate sunt pentru cea mai recentă versiune a filtrului.\nDacă salvați modificările dumneavoastră, veți suprascrie toate modificările efectuate după versiunea pe care o editați.</strong> &bull;\n[[Special:AbuseFilter/history/$2|Înapoi la istoricul acestui filtru]].",
+ "abusefilter-edit-status-label": "Statistici:",
+ "abusefilter-edit-status": "Din {{PLURAL:$1|ultima acțiune|ultimele $1 acțiuni| ultimele $1 de acțiuni}}, acest filtru a găsit $2 ($3%).",
+ "abusefilter-edit-status-profile": "Din {{PLURAL:$1|ultima acțiune|ultimele $1 acțiuni| ultimele $1 de acțiuni}}, acest filtru a găsit $2 ($3%).\nÎn medie, timpul său de rulare este de $4 ms și consumă $5 {{PLURAL:$5|condiție|condiții|de condiții}} ale limitei de condiții.",
+ "abusefilter-edit-new": "Filtru nou",
+ "abusefilter-edit-save": "Salvează filtru",
+ "abusefilter-edit-id": "ID filtru:",
+ "abusefilter-edit-description": "Descriere:\n:''(publică)''",
+ "abusefilter-edit-group": "Grup de filtru:",
+ "abusefilter-edit-flags": "Steaguri:",
+ "abusefilter-edit-enabled": "Activează acest filtru",
+ "abusefilter-edit-deleted": "Marchează ca șters",
+ "abusefilter-edit-hidden": "Ascunde publicului detaliile acestui filtru",
+ "abusefilter-edit-global": "Filtru global",
+ "abusefilter-edit-rules": "Condiții:",
+ "abusefilter-edit-notes": "Note:",
+ "abusefilter-edit-lastmod": "Ultima modificare filtru:",
+ "abusefilter-edit-lastmod-text": "$1 de $2",
+ "abusefilter-edit-hitcount": "Potriviri filtru:",
+ "abusefilter-edit-consequences": "Acțiuni efectuate la detectare",
+ "abusefilter-edit-action-warn": "Declanșează aceste acțiuni după ce ai avertizat utilizatorul",
+ "abusefilter-edit-action-disallow": "Nu permite utilizatorului efectuarea acestei acțiuni",
+ "abusefilter-edit-action-blockautopromote": "Revocă statutul autoconfirmat al utilizatorului",
+ "abusefilter-edit-action-degroup": "Elimină utilizatorul din toate grupurile cu privilegii",
+ "abusefilter-edit-action-block": "Blochează utilizatorul și/sau adresa IP la modificare",
+ "abusefilter-edit-action-throttle": "Declanșează acțiunile doar dacă utilizatorul a depășit limita impusă",
+ "abusefilter-edit-action-rangeblock": "Blochează intervalul de IP-uri /16 din care provine utilizatorul.",
+ "abusefilter-edit-action-tag": "Marchează modificarea pentru revizuire ulterioară",
+ "abusefilter-edit-throttle-count": "Număr de acțiuni permise:",
+ "abusefilter-edit-throttle-period": "Perioadă de timp:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|secundă|secunde}}",
+ "abusefilter-edit-throttle-groups": "Grupează ?throttle? după:\n:''(una pe linie, despărțite prin virgule)''",
+ "abusefilter-edit-warn-message": "Mesaj de sistem de utilizat pentru avertizare:",
+ "abusefilter-edit-warn-other": "Alt mesaj",
+ "abusefilter-edit-warn-other-label": "Numele paginii unui alt mesaj:\n:''(fără prefix MediaWiki)''",
+ "abusefilter-edit-warn-actions": "Acțiuni:",
+ "abusefilter-edit-warn-preview": "Previzualizați mesajul ales",
+ "abusefilter-edit-warn-edit": "Creați/Editați mesajul selectat",
+ "abusefilter-edit-tag-tag": "[[Special:Tags|Marcaje]] de aplicat (unul pe linie):",
+ "abusefilter-edit-denied": "Este posibil să nu puteți vedea detaliile acestui filtru, deoarece a fost ascuns publicului.",
+ "abusefilter-edit-main": "Parametrii filtrului",
+ "abusefilter-edit-done-subtitle": "Filtru modificat",
+ "abusefilter-edit-done": "[[Special:AbuseFilter/history/$1/diff/prev/$2|Modificările dumneavoastră]] asupra [[Special:AbuseFilter/$1|filtrului $3]] au fost salvate.",
+ "abusefilter-edit-badsyntax": "Există o eroare de sintaxă în filtrul specificat. Analizatorul a întors eroarea: <pre>$1</pre>",
+ "abusefilter-edit-restricted": "Nu puteți modifica acest filtru, deoarece conține una sau mai multe acțiuni restricționate.\nRugați un utilizator cu permisiuni de adăugare a acțiunilor restricționate să efectueze modificarea pentru dumneavoastră.",
+ "abusefilter-edit-viewhistory": "Vezi istoricul filtrului",
+ "abusefilter-edit-history": "Istoric:",
+ "abusefilter-edit-check": "Verifică sintaxa",
+ "abusefilter-edit-badfilter": "Filtrul specificat nu există",
+ "abusefilter-edit-revert": "Reveniți asupra acțiunilor întreprinse de acest filtru",
+ "abusefilter-edit-tools": "Unelte:",
+ "abusefilter-edit-test-link": "Testați acest filtru împotriva modificărilor recente",
+ "abusefilter-edit-export": "Exportă acest filtru către un alt wiki",
+ "abusefilter-edit-syntaxok": "Nici o eroare de sintaxă detectată.",
+ "abusefilter-edit-syntaxerr": "Eroare de sintaxă detectată: $1",
+ "abusefilter-edit-bad-tags": "Una sau mai multe dintre etichetele pe care le-ați specificat nu este/sunt corectă/e.\nEtichetele trebuie să fie scurte și nu trebuie să conțină caractere speciale.",
+ "abusefilter-edit-notallowed": "Nu aveți permisiunea de a crea sau modifica filtre de abuz",
+ "abusefilter-edit-notallowed-global": "Nu vă sunt permise crearea sau modificarea filtrelor globale de abuz",
+ "abusefilter-edit-notallowed-global-custom-msg": "Mesajele de avertizare personalizate nu pot fi folosite în filtrele globale",
+ "abusefilter-edit-builder-select": "Selectați opțiunea care să fie adăugată la cursor",
+ "abusefilter-edit-builder-group-op-arithmetic": "Operatori aritmetici",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Adunare (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Scădere (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Înmulțire (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Împărțire (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Modulo (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Putere (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Operatori comparativi",
+ "abusefilter-edit-builder-op-comparison-equal": "Egal cu (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Diferit de (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "Mai mic decât (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Mai mare decât (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Mai mic sau egal cu (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Mai mare sau egal cu (>=)",
+ "abusefilter-edit-builder-group-op-bool": "Operatori booleani",
+ "abusefilter-edit-builder-op-bool-not": "Nu (!)",
+ "abusefilter-edit-builder-op-bool-and": "Și (&)",
+ "abusefilter-edit-builder-op-bool-or": "Sau (|)",
+ "abusefilter-edit-builder-group-misc": "Diverse",
+ "abusefilter-edit-builder-misc-in": "conținut în șir (in)",
+ "abusefilter-edit-builder-misc-like": "Potrivire șablon (like)",
+ "abusefilter-edit-builder-misc-rlike": "Corespondenți regex (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "Corespondenți regex, fără a ține cont de majuscule (irlike)",
+ "abusefilter-edit-builder-misc-contains": "Șirul din stânga conține șirul din dreapta (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "Șir literal (\"\")",
+ "abusefilter-edit-builder-misc-tern": "Operator ternar (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "Condițional (if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "Funcții",
+ "abusefilter-edit-builder-funcs-length": "Lungimea șirului (lungime)",
+ "abusefilter-edit-builder-funcs-lcase": "În majuscule (lcase)",
+ "abusefilter-edit-builder-funcs-ucase": "Convertire în majuscule (ucase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "Normalizează caracterele confuze (ccnorm)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "Şterge caracterele duble (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "Caractere speciale / total caractere (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "Normalizează (norm)",
+ "abusefilter-edit-builder-funcs-count": "Numărul de câte ori apare șirul X în șirul Y (count)",
+ "abusefilter-edit-builder-funcs-rcount": "Numărul de apariții pentru regex X în șirul Y (rcount)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "Elimină spațiile libere (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "Elimină caracterele speciale (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "Este adresa IP în interval? (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "Verifică șirul pentru mai multe subșiruri (contains_any)",
+ "abusefilter-edit-builder-funcs-substr": "Subșir (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "Poziția subșirului în șir (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "Înlocuiește subșirul cu șirul (str_replace)",
+ "abusefilter-edit-builder-funcs-set_var": "Setează variabila (set_var)",
+ "abusefilter-edit-builder-group-vars": "Variabile",
+ "abusefilter-edit-builder-vars-accountname": "Numele contului (la crearea contului)",
+ "abusefilter-edit-builder-vars-timestamp": "Data și ora Unix a modificării",
+ "abusefilter-edit-builder-vars-action": "Acțiune",
+ "abusefilter-edit-builder-vars-addedlines": "Linii adăugate în urma modificării",
+ "abusefilter-edit-builder-vars-delta": "Dimensiunea schimbării în editare",
+ "abusefilter-edit-builder-vars-diff": "Diferențe între versiuni, unificate, făcute de editare",
+ "abusefilter-edit-builder-vars-newsize": "Mărimea paginii noi",
+ "abusefilter-edit-builder-vars-oldsize": "Mărimea paginii vechi",
+ "abusefilter-edit-builder-vars-removedlines": "Linii eliminate în urma modificării",
+ "abusefilter-edit-builder-vars-summary": "Sumar modificare/motivare",
+ "abusefilter-edit-builder-vars-article-id": "ID pagină",
+ "abusefilter-edit-builder-vars-article-ns": "Spațiul de nume al paginii",
+ "abusefilter-edit-builder-vars-article-text": "Titlul paginii (fără spațiu de nume)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Titlul complet al paginii",
+ "abusefilter-edit-builder-vars-article-views": "Vizualizări ale paginii",
+ "abusefilter-edit-builder-vars-movedfrom-id": "ID-ul paginii sursă de redenumit",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "Spațiul de nume al paginii sursă de redenumit",
+ "abusefilter-edit-builder-vars-movedfrom-text": "Titlul paginii sursă de redenumit",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "Titlul complet al paginii sursă de redenumit",
+ "abusefilter-edit-builder-vars-movedto-id": "ID-ul paginii destinație",
+ "abusefilter-edit-builder-vars-movedto-ns": "Spațiul de nume al paginii destinație",
+ "abusefilter-edit-builder-vars-movedto-text": "Titlul paginii destinație",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "Titlul complet al paginii destinație",
+ "abusefilter-edit-builder-vars-user-editcount": "Numărul modificărilor utilizatorului",
+ "abusefilter-edit-builder-vars-user-age": "Vârsta contului utilizatorului",
+ "abusefilter-edit-builder-vars-user-name": "Numele contului de utilizator",
+ "abusefilter-edit-builder-vars-user-groups": "Grupuri (inclusiv cel implicit) asociate utilizatorului",
+ "abusefilter-edit-builder-vars-user-rights": "Drepturile pe care le are un utilizator",
+ "abusefilter-edit-builder-vars-user-blocked": "Dacă utilizatorul este blocat",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "Data la care adresa de e-mail a fost confirmată",
+ "abusefilter-edit-builder-vars-recent-contributors": "Ultimii zece utilizatori care au contribuit la pagină",
+ "abusefilter-edit-builder-vars-first-contributor": "Primul utilizator care a contribuit la această pagină",
+ "abusefilter-edit-builder-vars-all-links": "Toate legăturile externe din textul nou",
+ "abusefilter-edit-builder-vars-added-links": "Toate legăturile externe adăugate la modificare",
+ "abusefilter-edit-builder-vars-removed-links": "Toate legăturile externe șterse la modificare",
+ "abusefilter-edit-builder-vars-old-text": "Textul wiki vechi, dinainte de modificare",
+ "abusefilter-edit-builder-vars-new-text": "Textul wiki nou, după modificare",
+ "abusefilter-edit-builder-vars-new-text-stripped": "Textul wiki nou, fără nici un marcaj",
+ "abusefilter-edit-builder-vars-new-html": "Sursa HTML parsată a noii revizii",
+ "abusefilter-edit-builder-vars-restrictions-edit": "Nivelul de protecție la modificare al paginii",
+ "abusefilter-edit-builder-vars-restrictions-move": "Nivelul de protecție la redenumire al paginii",
+ "abusefilter-edit-builder-vars-restrictions-create": "Protecția la creare a paginii",
+ "abusefilter-edit-builder-vars-restrictions-upload": "Protecția la încărcare a fișierului",
+ "abusefilter-edit-builder-vars-old-text-stripped": "Textul vechi, fără nici un marcaj",
+ "abusefilter-edit-builder-vars-old-links": "Legăturile din pagină, înainte de modificare",
+ "abusefilter-edit-builder-vars-old-html": "Textul wiki vechi, parsat în HTML",
+ "abusefilter-edit-builder-vars-minor-edit": "Indiferent dacă modificarea este sau nu marcată ca minoră",
+ "abusefilter-edit-builder-vars-file-sha1": "Hash-ul SHA1 al conținutului fișierului",
+ "abusefilter-edit-builder-vars-file-size": "Dimensiunea fișierului în octeți",
+ "abusefilter-edit-builder-vars-file-mime": "Tipul MIME al fișierului",
+ "abusefilter-edit-builder-vars-file-width": "Lățimea fișierului în pixeli",
+ "abusefilter-edit-builder-vars-file-height": "Înălțimea fișierului în pixeli",
+ "abusefilter-filter-log": "Schimbări recente ale filtrului",
+ "abusefilter-history": "Istoricul modificărilor pentru Filtrul Abuz #$1",
+ "abusefilter-history-foruser": "Schimbări efectuate de $1",
+ "abusefilter-history-hidden": "Ascuns",
+ "abusefilter-history-enabled": "Activat",
+ "abusefilter-history-global": "Global",
+ "abusefilter-history-timestamp": "Timp",
+ "abusefilter-history-user": "Utilizator",
+ "abusefilter-history-public": "Descrierea publică a filtrului",
+ "abusefilter-history-flags": "Steaguri",
+ "abusefilter-history-filter": "Regulă filtru",
+ "abusefilter-history-comments": "Comentarii",
+ "abusefilter-history-actions": "Acțiuni",
+ "abusefilter-history-backedit": "Înapoi la modificarea filtrului",
+ "abusefilter-history-deleted": "Şters",
+ "abusefilter-history-filterid": "Filtru",
+ "abusefilter-history-select-legend": "Îmbunătățire căutare",
+ "abusefilter-history-select-user": "Utilizator:",
+ "abusefilter-history-select-submit": "Îmbunătățește",
+ "abusefilter-history-diff": "Schimbări",
+ "abusefilter-history-error-hidden": "Filtrul solicitat este ascuns și nu îi puteți vizualiza istoricul.",
+ "abusefilter-exception-unexpectedatend": "„$2” neașteptat la caracterul $1.",
+ "abusefilter-exception-expectednotfound": "Se aștepta un $2 la caracterul $1, însă s-a găsit $3 $4.",
+ "abusefilter-exception-unrecognisedkeyword": "Cuvântul-cheie $2 nerecunoscut la caracterul $1.",
+ "abusefilter-exception-unexpectedtoken": "Jeton neașteptat „$3” (de tipul $2) la caracterul $1.",
+ "abusefilter-exception-unclosedstring": "Şirul de la poziția $1 este neînchis.",
+ "abusefilter-exception-invalidoperator": "Operatorul „$2” invalid la caracterul $1.",
+ "abusefilter-exception-unrecognisedtoken": "Jeton nerecunoscut „$2” la caracterul $1.",
+ "abusefilter-exception-noparams": "Nici un parametru trimis funcției \"$2\" la caracterul $1.",
+ "abusefilter-exception-dividebyzero": "Încercare ilegală de diviziune prin zero a lui $2 la caracterul $1.",
+ "abusefilter-exception-unrecognisedvar": "Variabila $2 nerecunoscută la caracterul $1",
+ "abusefilter-exception-notenoughargs": "Parametri insuficienți pentru funcția $2 invocată la caracterul $1.\nSe {{PLURAL:$3|aștepta un argument|așteptau $3 argumente}}, {{PLURAL:$4|s-a primit|s-au primit}} $4.",
+ "abusefilter-exception-regexfailure": "Eroare în expresia regulată „$3” la caracterul $1: „$2”",
+ "abusefilter-exception-overridebuiltin": "Folosire interzisă a variabilei disponibilă implicit „$2” la caracterul $1.",
+ "abusefilter-exception-outofbounds": "Se solicită elementul $2 inexistent în listă (mărimea listei = $3) la caracterul $1",
+ "abusefilter-exception-notlist": "Se solicită un element al vectorului pentru ceva ce nu este vector la caracterul $1.",
+ "abusefilter-action-tag": "Etichetă",
+ "abusefilter-action-throttle": "Limitare",
+ "abusefilter-action-warn": "Avertizează",
+ "abusefilter-action-blockautopromote": "Autopromovare blocare",
+ "abusefilter-action-block": "Blochează",
+ "abusefilter-action-degroup": "Elimină din grupuri",
+ "abusefilter-action-rangeblock": "Blocare interval",
+ "abusefilter-action-disallow": "Nu permite",
+ "abusefilter-revert-title": "Reveniți toate modificările făcute de filtrul $1",
+ "abusefilter-revert-intro": "Acest formular vă permite să reveniți asupra tuturor modificărilor efectuate de filtrul de abuzuri datorită regulii $1.\nVă rugăm să folosiți această unealtă cu grijă.",
+ "abusefilter-revert-preview-item": "$1: $2 a făcut o $3 în $4.\nAcțiunile ce vor fi anulate: $5 ($6)",
+ "abusefilter-revert-search-legend": "Alegeți acțiunile filtrului de abuzare pentru a fi inversate",
+ "abusefilter-revert-periodstart": "Perioadă de începere:",
+ "abusefilter-revert-periodend": "Perioadă de încheiere:",
+ "abusefilter-revert-search": "Marchează acțiunile",
+ "abusefilter-revert-filter": "Filtru:",
+ "abusefilter-revert-preview-intro": "Mai jos sunt acțiunile întreprinse de filtrul de abuzuri care vor fi anulate prin această acțiune.\nVă rugăm să le verificați cu atenție și să apăsați „{{int:abusefilter-revert-confirm}}” pentru a confirma selecția.",
+ "abusefilter-revert-confirm": "Confirmă",
+ "abusefilter-revert-success": "Ați anulat toate acțiunile filtrului de abuzuri datorate [[Special:AbuseFilter/$1|regulii $2]].",
+ "abusefilter-revert-reason": "Revenire automată a tuturor acțiunilor întreprinse de către abuzarea filtrului din cauza filtrului $1.\nMotivul dat: $2",
+ "abusefilter-revert-reasonfield": "Motiv:",
+ "abusefilter-test": "Testați un filtru împotriva editărilor anterioare",
+ "abusefilter-test-intro": "Această pagină vă permite să aplicați un filtru introdus în căsuța de mai jos asupra {{PLURAL:$1|ultimei modificări|ultimelor $1 modificări|ultimelor $1 de modificări}}.\nPentru a încărca un filtru existent, introduceți ID-ul filtrului în căsuța de mai jos și apăsați butonul „{{int:abusefilter-test-load}}”.",
+ "abusefilter-test-legend": "Testarea filtrului",
+ "abusefilter-test-load-filter": "Încarcă identitatea filtrului:",
+ "abusefilter-test-submit": "Testează",
+ "abusefilter-test-load": "Încarcă",
+ "abusefilter-test-user": "Schimbări după utilizator:",
+ "abusefilter-test-period-start": "Schimbări efectuate după:",
+ "abusefilter-test-period-end": "Schimbări efectuate înainte:",
+ "abusefilter-test-page": "Schimbări aduse paginii:",
+ "abusefilter-test-shownegative": "Arată schimbările care nu se potrivesc filtrului",
+ "abusefilter-test-syntaxerr": "Filtrul pe care l-ați introdus conține o eroare de sintaxă.\nPuteți primi o explicație completă apăsând butonul „{{int:abusefilter-edit-check}}”.",
+ "abusefilter-test-badtitle": "Titlul paginii introdus nu este valid. Este posibil să conțină unul sau mai multe caractere care nu pot fi folosite în titluri.",
+ "abusefilter-changeslist-examine": "examinează",
+ "abusefilter-examine": "Examinare schimbări individuale",
+ "abusefilter-examine-intro": "Această pagină vă permite să examinați variabilele generate de filtrul de abuzuri pentru o modificare și să o treceți prin filtre.",
+ "abusefilter-examine-legend": "Marchează schimbările",
+ "abusefilter-examine-diff": "URL diff:",
+ "abusefilter-examine-user": "Utilizator:",
+ "abusefilter-examine-title": "Titlul paginii:",
+ "abusefilter-examine-submit": "Caută",
+ "abusefilter-examine-vars": "Variabile generate pentru această schimbare",
+ "abusefilter-examine-test": "Testează această schimbare cu o regulă",
+ "abusefilter-examine-test-button": "Testați filtru",
+ "abusefilter-examine-match": "Filtrul a potrivit această schimbare.",
+ "abusefilter-examine-nomatch": "Regula nu se potrivește cu această schimbare.",
+ "abusefilter-examine-syntaxerror": "Filtrul are sintaxă invalidă.",
+ "abusefilter-examine-notfound": "Schimbarea solicitată nu a putut fi găsită.",
+ "abusefilter-examine-incompatible": "Schimbarea pe care ați solocitat-o nu este suportată de Filtrul de abuzuri",
+ "abusefilter-examine-noresults": "Niciun rezultat n-a fost găsit pentru parametrii căutarii furnizați de dvs.",
+ "abusefilter-topnav": "'''Navigare filtru abuz'''",
+ "abusefilter-topnav-home": "Acasă",
+ "abusefilter-topnav-test": "Testare în serie",
+ "abusefilter-topnav-examine": "Examinare modificări din trecut",
+ "abusefilter-topnav-log": "Jurnal abuzuri",
+ "abusefilter-topnav-tools": "Unelte de depanare",
+ "abusefilter-topnav-import": "Importă filtru",
+ "abusefilter-log-name": "Jurnal filtru abuz",
+ "abusefilter-log-header": "Acest jurnal afișează un rezumat de schimbări realizate de filtre.\nPentru informații complete, vedeți [[Special:AbuseFilter/history|lista]] cu schimbările ale filtrului recente.",
+ "abusefilter-logentry-modify": "$1 {{GENDER:$2|a modificat}} $4 ($5)",
+ "abusefilter-log-noresults": "Niciun rezultat",
+ "abusefilter-diff-title": "Diferențe între versiuni",
+ "abusefilter-diff-item": "Element",
+ "abusefilter-diff-version": "Versiunea din $1 {{GENDER:$3|de către}} $2",
+ "abusefilter-diff-info": "Informații de bază",
+ "abusefilter-diff-pattern": "Condiții de filtrare",
+ "abusefilter-diff-invalid": "Nu se pot aduce versiunile solicitate",
+ "abusefilter-diff-backhistory": "Înapoi la istoricul filtrului",
+ "abusefilter-diff-prev": "Modificare anterioară",
+ "abusefilter-diff-next": "Modificare ulterioară",
+ "abusefilter-import-intro": "Puteți folosi această interfață pentru a importa filtre din alte wikiuri.\nÎn wikiul sursă, apăsați „{{int:abusefilter-edit-export}}” din „{{int:abusefilter-edit-tools}}”, în cadrul interfeței de editare.\nCopiați conținutul din caseta care apare și lipiți-l în această casetă de text, după care apăsați „{{int:abusefilter-import-submit}}”.",
+ "abusefilter-import-submit": "Importă datele",
+ "abusefilter-group-default": "Implicit",
+ "abusefilter-http-error": "A apărut o eroare HTTP: $1.",
+ "apihelp-abusefiltercheckmatch-description": "Verifică dacă filtrul de abuzuri se aplică unui se de variabile, eveniment logat de Filtrul de abuzuri.\n\nvars, rcid sau logid sunt obligatorii, dar doar una poate fi folosită.",
+ "apihelp-abusefiltercheckmatch-extended-description": "vars, rcid sau logid sunt obligatorii dar doar una poate fi folosită.",
+ "apihelp-abusefilterchecksyntax-description": "Verifică sintaxa unui filtru AbuseFilter.",
+ "apihelp-abusefilterchecksyntax-param-filter": "Textul complet al filtrului pentru care trebuie verificată sintaxa.",
+ "apihelp-abusefilterchecksyntax-example-1": "Verifică sintaxa unui filtru valid.",
+ "apihelp-abusefilterchecksyntax-example-2": "Verifică sintaxa unui filtru invalid.",
+ "apihelp-abusefilterevalexpression-description": "Evaluează valoarea unei expresii AbuseFilter.",
+ "apihelp-abusefilterevalexpression-param-expression": "Expresia de evaluat.",
+ "apihelp-abusefilterevalexpression-example-1": "Evaluează o expresie simplă",
+ "apihelp-query+abuselog-param-limit": "Numărul maxim de intrări de afișat.",
+ "apihelp-query+abuselog-param-prop": "Ce proprietăți se cer.",
+ "apierror-abusefilter-badsyntax": "Filtrul are sintaxă invalidă."
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/roa-tara.json b/www/wiki/extensions/AbuseFilter/i18n/roa-tara.json
new file mode 100644
index 00000000..6df40e63
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/roa-tara.json
@@ -0,0 +1,462 @@
+{
+ "@metadata": {
+ "authors": [
+ "Joetaras",
+ "McDutchie",
+ "Reder",
+ "Matma Rex"
+ ]
+ },
+ "abusefilter-desc": "Applichesce le euristeche automateche pe le cangiaminde",
+ "abusefilter": "Configurazione d'u filtre de le abbuse",
+ "abuselog": "Archivie de l'abusaminde",
+ "abusefilter-intro": "Bovègne jndr'â gestione filtre abbuse de le 'nderfazze.\n'U filtre abbuse jè 'nu meccanisme software pè applechesce l'euristeche automateche a totte le aziune.\nQuèste 'nderfazze fàce vedè 'nu elenghe de filtre definite, e conzente a lòre de essere cangiate.",
+ "abusefilter-mustbeeditor": "Pè raggione de sicurezze, sule le utinde cu 'u diritte de cangià le filtre abbuse pòtene ausà quèste 'nderfazze.",
+ "abusefilter-warning": "'''Attenzione''': St'azione ha state automaticamende idendificate cumme pericolose.\nLe cangiaminde non costruttive onne state annullate veloce veloce, e le cangiaminde egregge o repetitive onna resultà sus a 'u cunde tune o l'indirizze IP ca adda avenè bloccate.\nCe tu cride ca st'azione éte costruttive, tu puè confermarle arrete.\n'Na descriziona veloce d'a regole de l'abbuse ca soddisfe l'aziona toje éte: $1",
+ "abusefilter-disallowed": "St'azione ha state automaticamende idendificate cumme pericolose e, allore non g'avène conzendite.\nCe tu cride ca l'aziona toje ere costruttive, pe piacere 'mborme 'n'amministratore de quidde ca tu ste pruvave a fà.\n'Na descrizione veloce d'a regole de l'abbuse sus 'a quale l'aziona toje s'ha scundrate: $1",
+ "abusefilter-blocked-display": "St'azione ha state automatecamende idendificate cumme pericolose,\ne tu è state bloccate da l'esecuziona soje.\nIn aggiundem pe proteggere {{SITENAME}}, 'u cunde utende tune e tutte le indirizze IP associate onne state bloccate pe le cangiaminde.\nCe quiste ca ha successe ha state 'n'errore, pe piacere condatte 'n'amministratore.\n'Na descrizione veloce de le regole de l'abbuse ca l'aziona toje s'ha scundrate jè: $1",
+ "abusefilter-degrouped": "St'azione ha state automaticamende idendificate cumme pericolose.\nConseguendemende, ha state disattivate, e, 'u cunde tune jè sospette ca ha state combromesse, tutte le deritte onne state revocate.\nCe tu cride ca quiste ha state 'n'errore, pe piacere condatte 'nu burocrate cu 'na spiegazione pe st'azione e, le deritte tune avènene repristinate.\n'Na descrizione veloce d'a regole d'abbuse 'a quale ha soddisfatte l'aziona toje jè: $1",
+ "abusefilter-autopromote-blocked": "St'azione ha state automaticamende idendificate cumme pericolose e ha state disabbilitate.\nIn aggiunde, cumme mesure de securezze, quacche privilegge ca normalende so garandite pe stabbilì le cunde onne state temboraneamende luate da 'u cunde utende tune.\n'Na descriziona veloce d'a regole de l'abbuse sus a quale l'azione s'acchiate jè: $1",
+ "abusefilter-blocker": "Filtre de le abbuse",
+ "abusefilter-blockreason": "Bloccate automatecamènde da 'u filtre de abbuse.\nDescriziune d'a reghele iacchiute: $1",
+ "abusefilter-degroupreason": "Diritte automatecamènde luàte da 'u filtre de le abbuse.\nDescriziune d'a reghele: $1",
+ "abusefilter-accountreserved": "Quiste nome account jè reservate pè l'ause de le filtre de le abbuse.",
+ "right-abusefilter-modify": "Cange le filtre de le abbuse",
+ "right-abusefilter-view": "Vide le filtre de le abbuse",
+ "right-abusefilter-log": "Vide l'archivije de le abbuse",
+ "right-abusefilter-log-detail": "Vide l'abbuse dettagliate de le vôsce de reggistre",
+ "right-abusefilter-private": "Vide le date private jndr'ô reggistre de le abbuse",
+ "right-abusefilter-modify-restricted": "Cangià le filtre de le abbuse cu aziune limitate",
+ "right-abusefilter-revert": "Annullà totte le cangiaminde da 'nu date filtre de le abbuse",
+ "right-abusefilter-view-private": "Vide le filtre de le abbuse ca sonde signate cumme private",
+ "right-abusefilter-log-private": "Vide le vôsce de l'archivije de le filtre de l'abbuse signate cumme private",
+ "right-abusefilter-hide-log": "Scunne le vôsce jndr'ô archivije de le abbuse",
+ "right-abusefilter-hidden-log": "Vide le abbuse scunnute jndr'à lle vôsce de l'archivije",
+ "right-abusefilter-modify-global": "Ccreje o cange le filtre de abbuse globbale",
+ "action-abusefilter-modify": "cange le filtre de le abbuse",
+ "action-abusefilter-view": "vide le filtre de le abbuse",
+ "action-abusefilter-log": "vide l'archivije de le abbuse",
+ "action-abusefilter-log-detail": "Vide l'abbuse dettagliate de le vôsce de l'archivije",
+ "action-abusefilter-private": "Vide le date private jndr'à ll'archivije de le abbuse",
+ "action-abusefilter-modify-restricted": "Cangià le filtre de le abbuse, cu aziune limitate",
+ "action-abusefilter-revert": "Annullà totte le cangiaminde da 'nu date filtre de le abbuse",
+ "action-abusefilter-view-private": "Vide le filtre de le abbuse ca sonde signate cumme private",
+ "action-abusefilter-log-private": "vide l'archivije de le filtre de l'abbuse signate cumme private",
+ "abusefilter-log": "Archivije de le filtre de le abbuse",
+ "abusefilter-log-summary": "Quiste archvije fàce vedè 'nu elenghe de totte le aziune pigghiate da le filtre.",
+ "abusefilter-log-search": "Cirche l'archivije de le abbuse",
+ "abusefilter-log-search-user": "Utende:",
+ "abusefilter-log-search-filter": "ID d'u filtre (separate da le |):",
+ "abusefilter-log-search-title": "Titele:",
+ "abusefilter-log-search-wiki": "Uicchi:",
+ "abusefilter-log-search-entries-label": "Visibbiletà",
+ "abusefilter-log-search-entries-all": "Tutte le vôsce",
+ "abusefilter-log-search-entries-hidden": "Scunne sulamende le vôsce",
+ "abusefilter-log-search-entries-visible": "Fà 'ndrucà sulamende le vôsce",
+ "abusefilter-log-search-submit": "Cirche",
+ "abusefilter-log-entry": "$1: $2 {{GENDER:$8|innescate}} 'nu filtre de le abbuse, ca {{GENDER:$8|face}} l'azione \"$3\" sus a $4.\nAziune fatte: $5;\nDescriziune d'u filtre: $6",
+ "abusefilter-log-entry-withdiff": "$1: $2 {{GENDER:$8|scatenate}} da 'nu filtre de abbuse, {{GENDER:$8|combletanne}} l'azione \"$3\" sus a $4.\nAziune pigghiate: $5;\nDescrizione d'u filtre: $6 ($7)",
+ "abusefilter-log-detailedentry-meta": "$1: $2 {{GENDER:$9|scatenate}} $3, {{GENDER:$9|da fà}} l'azione \"$4\" sus a $5.\nAziune fatte: $6;\nDescriziune d'u filtre: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "filtre globale $1",
+ "abusefilter-log-detailedentry-local": "filtre $1",
+ "abusefilter-log-detailslink": "dettaglie",
+ "abusefilter-log-diff": "diff",
+ "abusefilter-log-hidelink": "Aggiuste 'a visebiletà",
+ "abusefilter-log-details-legend": "Dettaglie pè le vôsce de l'archivije $1",
+ "abusefilter-log-details-var": "Variabbele",
+ "abusefilter-log-details-val": "Valore",
+ "abusefilter-log-details-vars": "Parametre de l'azione",
+ "abusefilter-log-details-private": "Date private",
+ "abusefilter-log-details-ip": "Inderizze IP origgenarie",
+ "abusefilter-log-noactions": "ninde",
+ "abusefilter-log-details-diff": "Cangiaminde fatte cu 'u cangiamende",
+ "abusefilter-log-linkoncontribs": "archivije de l'abbuse",
+ "abusefilter-log-linkoncontribs-text": "Archivije de l'abbuse pe {{GENDER:$1|stu utende}}",
+ "abusefilter-log-hidden": "(vôsce scunnute)",
+ "abusefilter-log-hidden-implicit": "(scunnute purcé le revisiune onne state scangellate)",
+ "abusefilter-log-cannot-see-details": "Tu non ge tìne 'u permesse pe 'ndrucà le dettaglie de sta vôsce.",
+ "abusefilter-log-nonexistent": "'Na vôsce cu l'ID date non g'esiste.",
+ "abusefilter-log-details-hidden": "Tu non ge pòte vedè le dettaglie de quèste vôsce, piccè sonde scunnute da 'a viste d'u pubbleche.",
+ "abusefilter-log-private-not-included": "Une o cchiù ID d'u filtre ca è specificate sò private. Siccome non ge tìne le permesse de 'ndrucà le dettaglie de le filtre private, chiste filtre non g'onne state cercate.",
+ "abusefilter-log-hide-legend": "Scunne le vôsce de l'archivije",
+ "abusefilter-log-hide-id": "Vôsce d'u reggistre ID:",
+ "abusefilter-log-hide-hidden": "Scunnere quèste vôsce d'a viste d'u pubbleche",
+ "abusefilter-log-hide-reason": "Mutive:",
+ "abusefilter-log-hide-forbidden": "Tu non ge tène 'u permesse de scunnere le vôsce de l'achivije de le abbuse.",
+ "abusefilter-logentry-suppress": "scunne \"[[$1]]\"",
+ "abusefilter-logentry-unsuppress": "fa vedè \"[[$1]]\"",
+ "logentry-abusefilter-hit": "$1 {{GENDER:$2|innescate}} $4, {{GENDER:$2|eseguenne}} l'azione \"$5\" sus a $3. Aziune pigghiate: $6 ($7)",
+ "abusefilter-management": "Gestione d'u filtre de le abbuse",
+ "abusefilter-list": "Tutte le filtre",
+ "abusefilter-list-id": "ID d'u filtre",
+ "abusefilter-list-status": "State",
+ "abusefilter-list-public": "Descriziona pubbleche",
+ "abusefilter-list-consequences": "Conseguenze",
+ "abusefilter-list-visibility": "Visibbiletà",
+ "abusefilter-list-hitcount": "Condegge de le cangiaminde",
+ "abusefilter-list-edit": "Cange",
+ "abusefilter-list-details": "Dettaglie",
+ "abusefilter-list-limit": "Numere pe pàgene:",
+ "abusefilter-list-lastmodified": "Urteme cangiamende",
+ "abusefilter-list-group": "Filtre de gruppe",
+ "abusefilter-hidden": "Privete",
+ "abusefilter-unhidden": "Pubbleche",
+ "abusefilter-enabled": "Abbilitate",
+ "abusefilter-deleted": "Scangillete",
+ "abusefilter-disabled": "Disabbilitate",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|successe|successe}}",
+ "abusefilter-new": "Ccreje 'nu filtre nuève",
+ "abusefilter-return": "Tuèrne a 'a gestione de le filtre",
+ "abusefilter-status-global": "Globbale",
+ "abusefilter-list-options": "Opziune",
+ "abusefilter-list-options-deleted": "Filtre scangellate:",
+ "abusefilter-list-options-deleted-only": "Fa vedè sulamende le filtre scangellate",
+ "abusefilter-list-options-deleted-hide": "Scunne le filtre scangellate",
+ "abusefilter-list-options-deleted-show": "Conzidere pure le filtre scangellate",
+ "abusefilter-list-options-scope": "Fà vedè le filtre:",
+ "abusefilter-list-options-scope-local": "Sulamende regole locale",
+ "abusefilter-list-options-scope-global": "Sulamende regole globbale",
+ "abusefilter-list-options-scope-all": "Regole locale e globbale",
+ "abusefilter-list-options-disabled": "Filtre disabbilitate:",
+ "abusefilter-list-options-hidedisabled": "Scunne le filtre disabbilitate",
+ "abusefilter-list-options-submit": "Aggiorne",
+ "abusefilter-tools-text": "Aqquà se iacchiene quacche strumènde ca pòtene essere utile jndr'à formulazziune e jndr'ô debugging de le filtre de le abbuse.",
+ "abusefilter-tools-expr": "Test de le espressiune",
+ "abusefilter-tools-submitexpr": "Valute",
+ "abusefilter-tools-reautoconfirm": "Repristenà 'u state autoconfirmate",
+ "abusefilter-tools-reautoconfirm-user": "Utende:",
+ "abusefilter-tools-reautoconfirm-submit": "Re-autoconfirme",
+ "abusefilter-reautoconfirm-none": "Quèste utinde non g'à avute 'a sospesione d'u {{GENDER:$1|jidde|jèdde|soje}} state autoconfirmate.",
+ "abusefilter-reautoconfirm-notallowed": "Tu non ge sìnde autorezzate a repristenà 'u state autocunfirmate.",
+ "abusefilter-reautoconfirm-done": "Ô state de l'account autocunfirmate jè state repristenate",
+ "abusefilter-status": "De le urteme $1 {{PLURAL:$1|aziune|aziune}}, $2 ($3%) {{PLURAL:$2|hagghie|honne}} raggiunde 'u limite de condiziune de $4, e $5 ($6%) {{PLURAL:$5|hagghie|honne}} iacchiute une de le filtre ce jè ôsce a die abbilitate.",
+ "abusefilter-edit": "Stoche a cange le filtre de l'abbuse",
+ "abusefilter-edit-subtitle": "Cangiaminde d'u filtre $1",
+ "abusefilter-edit-subtitle-new": "Stoche a creje 'nu filtre",
+ "abusefilter-edit-oldwarning": "<strong>Tu stè a cangianne 'na versiune vècchie de quiste filtre.\nLe statisteche citate sonde pè 'a versiune cchiù recende de quiste filtre.\nCe tu salve le cangiaminde toje, tu pòte sovrascrivere totte le cangiaminde combiute d'a revisione ca tu stè a cangià.</strong> &bull;\n[[Special:AbuseFilter/history/$2|Torne sus 'a storie de quiste filtre]].",
+ "abusefilter-edit-status-label": "Statisteche:",
+ "abusefilter-edit-status": "De le urteme $1 {{PLURAL:$1|azione|aziune}}, quiste filtre ave soddisfatte $2 ($3%).",
+ "abusefilter-edit-status-profile": "De le urteme $1 {{PLURAL:$1|aziune|aziune}}, quiste filtre hagghie iacchiute $2 ($3%).\nJndr'à medie, 'u soje timbe jè de $4ms, e conzume $5 {{PLURAL:$5|condiziune|condiziune}} d'u limite de condiziune.",
+ "abusefilter-edit-throttled-warning": "'''Attenziò:''' Stu filtre ha state signate automaticamende cumme pericolose. Cumme mesure de securezze, le aziune seguende non ge avénene eseguite ($1). Pe piacere condrolle e [[mw:Extension:AbuseFilter/Conditions|ottimizze]] le condiziune tune pe luà sta restrizzione",
+ "abusefilter-edit-new": "Filtre nueve",
+ "abusefilter-edit-save": "Reggistre 'u filtre",
+ "abusefilter-edit-id": "ID d'u filtre:",
+ "abusefilter-edit-description": "Descrizione:\n:''(vesibbele pubblecamende)''",
+ "abusefilter-edit-group": "Filtre de gruppe:",
+ "abusefilter-edit-flags": "Bandiere:",
+ "abusefilter-edit-enabled": "Abbilite stu filtre",
+ "abusefilter-edit-deleted": "Signe cumme scangellate",
+ "abusefilter-edit-hidden": "Scunne le dettaglie de quiste filtre ad 'a viste d'u pubbleche",
+ "abusefilter-edit-global": "Filtre globbale",
+ "abusefilter-edit-rules": "Condiziune:",
+ "abusefilter-edit-notes": "Note:",
+ "abusefilter-edit-lastmod": "Filtre l'urteme cangiate:",
+ "abusefilter-edit-lastmod-text": "$1 da $2",
+ "abusefilter-edit-hitcount": "Visite de le filtre:",
+ "abusefilter-edit-consequences": "Le aziune da fà quanne se accocchiane",
+ "abusefilter-edit-action-warn": "Attivà quèste aziune dope avè lassate a l'utinde 'nu avvise",
+ "abusefilter-edit-action-disallow": "Non ge conzentì l'utinde de eseguì l'aziune de cui ce stè parle",
+ "abusefilter-edit-action-blockautopromote": "Revoche ô state de utinde autocunfirmate",
+ "abusefilter-edit-action-degroup": "Luà l'utinde da totte le gruppe privilegiate",
+ "abusefilter-edit-action-block": "Blocche le utinde e/o le inderizze IP da l'editaziune",
+ "abusefilter-edit-action-throttle": "Attivà le aziune sule se l'utinde tène 'nu limite de percenduale",
+ "abusefilter-edit-action-rangeblock": "Blocche 'u rispettive 'ndervalle de IP de origgine de l'utende",
+ "abusefilter-edit-action-tag": "Tag de cangiaminde pè n'otre revisiune",
+ "abusefilter-edit-throttle-count": "Numere de aziune permesse:",
+ "abusefilter-edit-throttle-period": "Periode de tiembe:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|'u seconde|le seconde}}",
+ "abusefilter-edit-throttle-groups": "Gruppe throttle de:\n:''(une pè righe, combinate cu 'na virgole)''",
+ "abusefilter-edit-warn-message": "Messagge de sisteme da ausà pè l'avvise:",
+ "abusefilter-edit-warn-other": "Otre messagge",
+ "abusefilter-edit-warn-other-label": "Nome d'a paggene de n'otre mesagge:\n:''(senze prefisse MediaWiki)''",
+ "abusefilter-edit-warn-actions": "Aziune:",
+ "abusefilter-edit-warn-preview": "Fa l'andeprime d'u messagge scacchiate",
+ "abusefilter-edit-warn-edit": "Ccreje/Cange 'u messagge scacchiate",
+ "abusefilter-edit-tag-tag": "[[Special:Tags|Tag]] da applecà (une pè righe):",
+ "abusefilter-edit-denied": "Non ge puè uardà le dettaglie de stu filtre, purcé jè scunnute da 'a viste d'u pubbleche.",
+ "abusefilter-edit-main": "Parametre d'u filtre",
+ "abusefilter-edit-done-subtitle": "Filtre cangiate",
+ "abusefilter-edit-done": "[[Special:AbuseFilter/history/$1/diff/prev/$2|Le cangiaminde tune]] a 'u [[Special:AbuseFilter/$1|filtre $3]] onne state reggistrate.",
+ "abusefilter-edit-badsyntax": "Se iacchie 'nu errore de sindasse jndr'à lle filtre specifecate.\nL'uscite d'u parser jè state: <pre>$1</pre>",
+ "abusefilter-edit-restricted": "Non g'ète possibbele cangià 'u filtre, piccè jidde tène une o cchiù aziune restrette.\nSe preghe de chiedere a 'nu utinde cu 'u permesse pè aggiungere aziune limitate pè fà 'u cangiaminde ad 'u puèste toje.",
+ "abusefilter-edit-viewhistory": "Vide 'a storie de quiste filtre",
+ "abusefilter-edit-history": "Cunde:",
+ "abusefilter-edit-check": "Verifeche 'a sindasse",
+ "abusefilter-edit-badfilter": "'U filtre specifecate non g'esiste",
+ "abusefilter-edit-revert": "Repristenà le aziune pigghiate da quiste filtre",
+ "abusefilter-edit-tools": "Struminde:",
+ "abusefilter-edit-test-link": "Prove quiste filtre condre le cangiaminde recende",
+ "abusefilter-edit-export": "Esporte quiste filtre sus a n'otre wiki",
+ "abusefilter-edit-syntaxok": "Nisciune errore de sindasse ha state acchiate.",
+ "abusefilter-edit-syntaxerr": "Errore de sindasse rilevate: $1",
+ "abusefilter-edit-bad-tags": "Une o cchiù de le tag specifecate non g'è valide.\nLe tag honne da esse curte, e non g'onne a condenè carattere speciale e non g'onna essere reservate da otre softuer. Pruéve a scacchià 'nu nome nuève.",
+ "abusefilter-edit-notallowed": "Tu non ge sìnde autorizzate a crijà o a cangià le filtre de le abbuse",
+ "abusefilter-edit-notallowed-global": "Tu non ge sìnde autorizzate a crijà o a cangià le filtre de le abbuse globbale",
+ "abusefilter-edit-notallowed-global-custom-msg": "Messàgge personalizzate de avvertimende non ge sò supportate pe le filtre globbale",
+ "abusefilter-edit-builder-select": "Selezione 'na opzione pè scaffà quidde ad 'a posiziune d'u cursore",
+ "abusefilter-edit-builder-group-op-arithmetic": "Operature aritmetece",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Addizione (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Sottrazione (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Moltiplicazione (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Divisione (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Reste (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Putenze (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Operatore de combronde",
+ "abusefilter-edit-builder-op-comparison-equal": "Uguale a (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Diverse da (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "Cchiù peccinne de (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Cchiù granne de (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "cchiù piccine o uguale (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Cchiù granne o uguale (>=)",
+ "abusefilter-edit-builder-group-op-bool": "Operature loggeche",
+ "abusefilter-edit-builder-op-bool-not": "A smerse (!)",
+ "abusefilter-edit-builder-op-bool-and": "E (&)",
+ "abusefilter-edit-builder-op-bool-or": "O (|)",
+ "abusefilter-edit-builder-op-bool-xor": "XOR (^)",
+ "abusefilter-edit-builder-group-misc": "Misckate",
+ "abusefilter-edit-builder-misc-in": "condenute jndr'à stringhe (in)",
+ "abusefilter-edit-builder-misc-like": "Corresponde a 'nu modelle (cumme)",
+ "abusefilter-edit-builder-misc-rlike": "Combine le regex (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "Combine le regex, jndr'ô case 'nzensitive (irlike)",
+ "abusefilter-edit-builder-misc-contains": "'A righe de mmanghe contène 'a righe de destre (contène)",
+ "abusefilter-edit-builder-misc-stringlit": "Strnghe letterale (\"\")",
+ "abusefilter-edit-builder-misc-tern": "Operatore ternarie (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "Condizionale (if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "Funziune",
+ "abusefilter-edit-builder-funcs-length": "Lunghezze d'a stringhe (length)",
+ "abusefilter-edit-builder-funcs-lcase": "'U cchù vasce (lcase)",
+ "abusefilter-edit-builder-funcs-ucase": "Jndr'à maiuscole (ucase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "Normalezzà le carattere ca se pòtene confonnere (ccnorm)",
+ "abusefilter-edit-builder-funcs-ccnorm-contains-any": "Normalizze e cirche 'na stringhe jndr'à cchiù sottostringhe (ccnorm_contains_any)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "Luà le carattere doppie (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "Carattere speciale / carattere totale (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "Normalizze (norm)",
+ "abusefilter-edit-builder-funcs-count": "Numere de vote jndre cui 'a stringhe X se iacchie jndr'à stringhe Y (count)",
+ "abusefilter-edit-builder-funcs-rcount": "Numere de vote jndre cui 'u regex X se iacchie jndr'à stringhe Y (rcount)",
+ "abusefilter-edit-builder-funcs-get_matches": "Matrice de corrispondenze de 'na regex a 'u 'nderne de 'nu teste pe ogne gruppe catturande (get_matches)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "Live le spazie vianghe (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "Live le carattere speciale (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "L'IP stè jndr'à l'indervalle? (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "Stringhe de recerche pè cchiù sottestringhe (contains_any)",
+ "abusefilter-edit-builder-funcs-substr": "Sottostringhe (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "Posiziune de sottostringhe in stringhe (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "Cangià 'na sottostringhe cu 'na stringhe (str_replace)",
+ "abusefilter-edit-builder-funcs-rescape": "'A stringhe de assute cumme 'nu letterale jndr'à regex (rescape)",
+ "abusefilter-edit-builder-funcs-set_var": "'Mboste 'a variabbele (set_var)",
+ "abusefilter-edit-builder-group-vars": "Variabbele",
+ "abusefilter-edit-builder-vars-accountname": "Nome d'u cunde utende (o nome d'u cunde utende de ccrejazione)",
+ "abusefilter-edit-builder-vars-timestamp": "Orarie Unix d'u cangiamende",
+ "abusefilter-edit-builder-vars-action": "Azione",
+ "abusefilter-edit-builder-vars-addedlines": "Linee aggiunde cu 'nu cangiaminde",
+ "abusefilter-edit-builder-vars-delta": "Dimenzione cangiate jndr'à 'u cangiamende",
+ "abusefilter-edit-builder-vars-diff": "Differenze de cangiaminde aunifecate fatte pè essere cangiate",
+ "abusefilter-edit-builder-vars-newsize": "Nuève dimensiune d'a pagene",
+ "abusefilter-edit-builder-vars-oldsize": "Vècchie dimensiune d'a pagene",
+ "abusefilter-edit-builder-vars-old-content-model": "Modelle vecchie de condenute",
+ "abusefilter-edit-builder-vars-new-content-model": "Modelle nuéve de condenute",
+ "abusefilter-edit-builder-vars-removedlines": "Linee luàte cu 'nu cangiaminde",
+ "abusefilter-edit-builder-vars-summary": "Oggette d'u cangiaminde/raggione",
+ "abusefilter-edit-builder-vars-article-id": "ID d'a pàgene",
+ "abusefilter-edit-builder-vars-article-ns": "Namespace d'a pàgene",
+ "abusefilter-edit-builder-vars-article-text": "Nome d'a pagene (senze namespace)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Titele comblete d'a pàgene",
+ "abusefilter-edit-builder-vars-article-views": "Pàggene viste",
+ "abusefilter-edit-builder-vars-movedfrom-id": "Pagene ID pè mòvere 'a pagene de origgene",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "Namespace pè mòvere 'a pagene de origgene",
+ "abusefilter-edit-builder-vars-movedfrom-text": "Titole pè mòvere 'a pagene de origgene",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "Titole comblete pè mòvere 'a pagene de origgene",
+ "abusefilter-edit-builder-vars-movedto-id": "Pagene ID pè mòvere 'a pagene de destinaziune",
+ "abusefilter-edit-builder-vars-movedto-ns": " Namespace pè mòvere 'a pagene de destinaziune",
+ "abusefilter-edit-builder-vars-movedto-text": "Titole pè mòvere 'a pagene de destinaziune",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "Titole comblete pè mòvere 'a pagene de destinaziune",
+ "abusefilter-edit-builder-vars-user-editcount": "Cunde de le cangiaminde pe l'utende",
+ "abusefilter-edit-builder-vars-user-age": "Età d'u cunde utende",
+ "abusefilter-edit-builder-vars-user-name": "Nome d'u cunde utende",
+ "abusefilter-edit-builder-vars-user-groups": "Gruppe (combrese 'mblicitamènde) jndre cui ce stonne le utinde",
+ "abusefilter-edit-builder-vars-user-rights": "Le deritte ca stu utende tène",
+ "abusefilter-edit-builder-vars-user-blocked": "Ce l'utende jè bloccate",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "Mò le 'nderizze e-mail jè state confermate",
+ "abusefilter-edit-builder-vars-recent-contributors": "Le urteme dice utinde ce honne condrebbuite ad 'a pagene",
+ "abusefilter-edit-builder-vars-first-contributor": "Prime utende ca ave condrebbuite 'a pàgene",
+ "abusefilter-edit-builder-vars-all-links": "Totte le link esterne jndr'ô teste nuève",
+ "abusefilter-edit-builder-vars-added-links": "Totte le link esterne aggiunde jndr'à lle cangiaminde",
+ "abusefilter-edit-builder-vars-removed-links": "Totte le link esterne luàte jndr'à lle cangiaminde",
+ "abusefilter-edit-builder-vars-old-text": "Vècchie pagene wikitext, prime de le cangiaminde",
+ "abusefilter-edit-builder-vars-new-text": "Nuève pagene wikitext, dope le cangiaminde",
+ "abusefilter-edit-builder-vars-new-pst": "Pàgena nove de uicchiteste, trasformate in pre-reggistrazione",
+ "abusefilter-edit-builder-vars-diff-pst": "Unifiche le differenze de le cangiaminde fatte da 'nu cangiamende, trasformate apprime d'a reggistrazione",
+ "abusefilter-edit-builder-vars-addedlines-pst": "Linèe aggiunde jndr'à 'nu cangiamende, trasformate apprime d'a reggistrazione",
+ "abusefilter-edit-builder-vars-new-text-stripped": "Teste d'a pagene nuève, cu ogne markup luàte",
+ "abusefilter-edit-builder-vars-new-html": "Analise d'a sorgende HTML d'a revisiune nuève",
+ "abusefilter-edit-builder-vars-restrictions-edit": "Cange 'u levelle de protezione d'a pagene",
+ "abusefilter-edit-builder-vars-restrictions-move": "Spuèste 'u levelle de protezione d'a pagene",
+ "abusefilter-edit-builder-vars-restrictions-create": "Ccreje 'a protezione d'a pàgene",
+ "abusefilter-edit-builder-vars-restrictions-upload": "Careche 'a protezzione d'u file",
+ "abusefilter-edit-builder-vars-old-text-stripped": "Teste d'a pagene vècchie, cu ogne markup luàte",
+ "abusefilter-edit-builder-vars-old-links": "Cullegaminde jndr'à pagene, prime de le cangiaminde",
+ "abusefilter-edit-builder-vars-old-html": "Vècche pagene wikitext, analizzate sus HTML",
+ "abusefilter-edit-builder-vars-minor-edit": "Ce o none ce 'u cangiaminde jè condrassignate cumme minore",
+ "abusefilter-edit-builder-vars-file-sha1": "SHA1 miskulanze d'u condenute de le file",
+ "abusefilter-edit-builder-vars-file-size": "Dimenzione d'u file in byte",
+ "abusefilter-edit-builder-vars-file-mime": "Tipe MIME d'u file",
+ "abusefilter-edit-builder-vars-file-mediatype": "Tipe d'u file multimediale",
+ "abusefilter-edit-builder-vars-file-width": "Larghezze d'u file cu le pixel",
+ "abusefilter-edit-builder-vars-file-height": "Altezze d'u file cu le pixel",
+ "abusefilter-edit-builder-vars-file-bits-per-channel": "Bit pe canale de colore d'u file",
+ "abusefilter-filter-log": "Cangiaminde recende d'u filtre",
+ "abusefilter-history": "Cronologgie de le cangiaminde pè le filtre de le abbuse #$1",
+ "abusefilter-history-foruser": "Cangiate da $1",
+ "abusefilter-history-hidden": "scunne",
+ "abusefilter-history-enabled": "Abbilitate",
+ "abusefilter-history-global": "Globbale",
+ "abusefilter-history-timestamp": "Orarie",
+ "abusefilter-history-user": "Utende",
+ "abusefilter-history-public": "Pubbleche 'a descriziune d'u filtre",
+ "abusefilter-history-flags": "Bandiere",
+ "abusefilter-history-filter": "Regole d'u filtre",
+ "abusefilter-history-comments": "Commende",
+ "abusefilter-history-actions": "Aziune",
+ "abusefilter-history-backedit": "Tuèrne a 'u cangiatore de filtre",
+ "abusefilter-history-deleted": "Scangillete",
+ "abusefilter-history-filterid": "Filtre",
+ "abusefilter-history-select-legend": "Refenisce 'a ricerche",
+ "abusefilter-history-select-user": "Utende:",
+ "abusefilter-history-select-submit": "Refenisce",
+ "abusefilter-history-diff": "Cangiaminde",
+ "abusefilter-history-error-hidden": "'U filtre ce tu hàve rechieste jè scunnute, e tu non ge pòte vedè 'a storie soje.",
+ "abusefilter-exception-unexpectedatend": "Inaspettate \"$2\" ad 'u carattere $1.",
+ "abusefilter-exception-expectednotfound": "Previste 'nu $2 ad 'u carattere $1, ca non g'ète iacchiute (iacchiute 'nvece $3 $4).",
+ "abusefilter-exception-unrecognisedkeyword": "Parole chièje non recanosciute $2 ad 'u carattere $1.",
+ "abusefilter-exception-unexpectedtoken": "Signe imbreviste \"$3\" (de tipe $2) ad 'u carattere $1.",
+ "abusefilter-exception-unclosedstring": "Stringhe ca non g'ète chiuse partenne da 'u carattere $1.",
+ "abusefilter-exception-invalidoperator": "Operatore invalide \"$2\" ad 'u carattere $1.",
+ "abusefilter-exception-unrecognisedtoken": "Signe non recanosciute \"$2\" ad 'u carattere $1.",
+ "abusefilter-exception-noparams": "Nisciune parametre date da 'a funziune \"$2\" ad 'u carattere $1.",
+ "abusefilter-exception-dividebyzero": "Tendative illegale de scucchià $2 pè zere ad 'u carattere $1.",
+ "abusefilter-exception-unrecognisedvar": "Variabbele non recanosciute $2 ad 'u carattere $1",
+ "abusefilter-exception-notenoughargs": "Non ge stonne sufficiènde argumènde pè 'a funzune $2 chiamate ad 'u carattere $1.\nPreviste $3 {{PLURAL:$3|argumènde|argumènde}}, got $4",
+ "abusefilter-exception-regexfailure": "Errore jndr'à ll'espressiune regolare\"$3\" ad 'u carattere $1: \"$2\"",
+ "abusefilter-exception-overridebuiltin": "Annullamènde illegale de variabbele 'ngorporate \"$2\" ad 'u carattere $1.",
+ "abusefilter-exception-outofbounds": "Rechieste de 'na vôsce jndr'à ll'elenghe inesistende $2 (furmate liste = $3) ad 'u carattere $1.",
+ "abusefilter-exception-notlist": "Rechieste de l'elemènde serie de non serie ad 'u carattere $1.",
+ "abusefilter-action-tag": "Tag",
+ "abusefilter-action-throttle": "Annullate",
+ "abusefilter-action-warn": "Avvertì",
+ "abusefilter-action-blockautopromote": "Blocche l'autopromozione",
+ "abusefilter-action-block": "Blocche",
+ "abusefilter-action-degroup": "Live da le gruppe",
+ "abusefilter-action-rangeblock": "Indervalle de blocche",
+ "abusefilter-action-disallow": "None permesse",
+ "abusefilter-revert-title": "Annulle totte le cangiaminde da 'u filtre $1",
+ "abusefilter-revert-intro": "Quiste module conzente de fà annullà totte le cangiaminde combiute da 'u filtre de le abbuse pè 'u filtre $1.\nPleSe preghe de fà attenzione jndr'à ll'ause de quiste strumènde.",
+ "abusefilter-revert-preview-item": " $1: $2 ha {{GENDER:$7|fatte}} 'nu $3 sus $4.\nAziune ca onne essere reconvertite: $5 ($6)",
+ "abusefilter-revert-search-legend": "Selezione le aziune de le filtre de le abbuse ca honne da essere reconvertite",
+ "abusefilter-revert-periodstart": "Inizie d'u periode:",
+ "abusefilter-revert-periodend": "Fine d'u periode:",
+ "abusefilter-revert-search": "Scacchie l'aziune",
+ "abusefilter-revert-filter": "Filtre:",
+ "abusefilter-revert-preview-intro": "Aqquà abbasce stonne elengate le aziune combiute da 'u filtre de le abbuse ca onna essere repristenate da sta azione.\nPe piacere verifiche attentamènde, e cazze \"{{int:abusefilter-revert-confirm}}\" pe confermà 'a selezione.",
+ "abusefilter-revert-confirm": "Conferme",
+ "abusefilter-revert-success": " Tu hé repristenate totte le aziune combiute da 'u filtre de le abbuse a cause d'u [[Special:AbuseFilter/$1|filtre $2]].",
+ "abusefilter-revert-reason": "Repristene automateche de totte le aziune combiute da 'u filtre de le abbuse a cause d'u filtre $1.\nRaggione date: $2",
+ "abusefilter-revert-reasonfield": "Mutive:",
+ "abusefilter-test": "Prove 'nu filtre condre le cangiaminde precedende",
+ "abusefilter-test-intro": "Sta pàgene te conzente de condrollà 'nu filtre 'nzerite jndr'à caselle aqquà d'abbasce condre le urteme $1 {{PLURAL:$1|cangiamende|cangiaminde}}.\nPè carecà 'nu filtre esistende, diggetà l'ID d'u filtre jndr'à caselle sutte 'a caselle de teste de le cangiaminde, e cazze 'u pulsande \"{{int:abusefilter-test-load}}\".",
+ "abusefilter-test-legend": "Test de le filtre",
+ "abusefilter-test-load-filter": "Careche 'u filtre ID:",
+ "abusefilter-test-submit": "Test",
+ "abusefilter-test-load": "Careche",
+ "abusefilter-test-user": "Cangiaminde de l'utende:",
+ "abusefilter-test-period-start": "Cangiaminde fatte apprisse:",
+ "abusefilter-test-period-end": "Cangiaminde fatte apprime:",
+ "abusefilter-test-page": "Cangiaminde fatte a 'a pàgene:",
+ "abusefilter-test-shownegative": "Fàce vedè sule le cangiaminde ca non ge sonde correspondende ad 'u filtre",
+ "abusefilter-test-syntaxerr": "'U filtre ca tu é mise tène 'n'errore de sindasse.\nTu pòte avè 'na spiegazione comblete ce cazze 'u pulsande \"{{int:abusefilter-edit-check}}\".",
+ "abusefilter-test-badtitle": "'U titole d'a pàgene inserite ere invalide. Jidde pò tené une o cchiù carattere ca non ge ponne essere ausate jndr'à le titole.",
+ "abusefilter-changeslist-examine": "esamine",
+ "abusefilter-examine": "Esamine le cangiaminde individuale",
+ "abusefilter-examine-intro": "Quèste pagene conzente de esaminà le variabbele generate da 'u filtre de le abbuse pè 'nu cangiaminde individuale, e prove jidde condre le filtre.",
+ "abusefilter-examine-legend": "Scacchie le cangiaminde",
+ "abusefilter-examine-diff": "Diff 'mbrà URL:",
+ "abusefilter-examine-user": "Utende:",
+ "abusefilter-examine-title": "Titele d'a pàgene:",
+ "abusefilter-examine-submit": "Cirche",
+ "abusefilter-examine-vars": "Variabbele generate pè quiste cangiaminde",
+ "abusefilter-examine-test": "Prove quiste cangiaminde condre 'nu filtre",
+ "abusefilter-examine-test-button": "Filtre de test",
+ "abusefilter-examine-match": "'U filtre abbine quiste cangiaminde",
+ "abusefilter-examine-nomatch": "'U filtre non ge abbine quiste cangiaminde.",
+ "abusefilter-examine-syntaxerror": "'U filtre tène 'na sindasse invalide",
+ "abusefilter-examine-notfound": "'U cangiaminde rechieste non g'è state iacchiute.",
+ "abusefilter-examine-incompatible": "'U cangiaminde ca tu hé rechieste non g'ète supportate da 'u filtre de le abbuse",
+ "abusefilter-examine-noresults": "Non ge sonde state iacchiute nisciune resultate pè le parametre de recerche ca tu é date.",
+ "abusefilter-topnav": "'''Navigazione d'u filtre de le abbuse'''",
+ "abusefilter-topnav-home": "Pàgena Prengepàle",
+ "abusefilter-topnav-test": "Teste Batch",
+ "abusefilter-topnav-examine": "Esamine le cangiaminde passate",
+ "abusefilter-topnav-log": "Archivije de l'abbuse",
+ "abusefilter-topnav-tools": "Struminde pu debug",
+ "abusefilter-topnav-import": "'Mbortazione d'u filtre",
+ "abusefilter-log-name": "Archivije de le filtre de le abbuse",
+ "abusefilter-log-header": "Quiste reggistre fàce vedè 'nu elenghe de cangiaminde combiute da le filtre.\nPè avè cchiù dettaglie, vide [[Special:AbuseFilter/history|'a liste]] de le cangiaminde recende d'u filtre.",
+ "abusefilter-logentry-modify": "$1 {{GENDER:$2|cangiate}} $4 ($5)",
+ "abusefilter-log-noresults": "Nisciune resultate",
+ "abusefilter-diff-title": "Differenze 'mbrà versiune",
+ "abusefilter-diff-item": "Elemende",
+ "abusefilter-diff-version": "Versione da $1 {{GENDER:$3|a}} $2",
+ "abusefilter-diff-info": "'Mbormaziune nderra-nderre",
+ "abusefilter-diff-pattern": "Condiziune d'u filtre:",
+ "abusefilter-diff-invalid": "Impossibbele recuperà le versiune rechieste",
+ "abusefilter-diff-backhistory": "Torne ad 'u filtre d'a storie",
+ "abusefilter-diff-prev": "Cangiamende cchiù vecchie",
+ "abusefilter-diff-next": "Cangiamende cchiù nuève",
+ "abusefilter-import-intro": "Jè possibbele ausà quèste 'nderfazze pè le filtre de 'mbortazziune da otre wiki.\nSus ad 'a wiki de origgene, cazzà \"{{int:abusefilter-edit-export}}\" sutte \"{{int:abusefilter-edit-tools}}\" sus a le 'nderfazze de le cangiaminde.\nCopià da 'a caselle de teste ce vide, e 'ngolle jidde sus a quiste cambe de teste, cchiù nnande cazze \"{{int:abusefilter-import-submit}}\".",
+ "abusefilter-import-submit": "'Mborte date",
+ "abusefilter-group-default": "De base",
+ "abusefilter-http-error": "Ha assute 'n'errore HTTP: $1.",
+ "apihelp-abusefiltercheckmatch-description": "Verifiche ce 'nu AbuseFilter soddisfe 'nu 'nzieme de variabbile, avvenimende de cangiatore de AbuseFilter tracciate.\n\nvars, rcid o logid so obbligatorie comungue sulamende une adda essere ausate.",
+ "apihelp-abusefiltercheckmatch-summary": "Condrolle de 'ndrucà ce 'nu AbuseFilter s'accocchie cu 'nu 'nzieme de variabbile, cangiatore loggate cumme fatte de AbuseFilter.",
+ "apihelp-abusefiltercheckmatch-extended-description": "vars, rcid o logid jè obbligatorie e comungue sulamende une a vote se pò ausà.",
+ "apihelp-abusefiltercheckmatch-param-filter": "'U filtre de teste chine da verificà pe 'nu combronde.",
+ "apihelp-abusefiltercheckmatch-param-vars": "L'array de variabbile decodificate JSON da testà.",
+ "apihelp-abusefiltercheckmatch-param-rcid": "Cangiaminde recende de l'ID da testà.",
+ "apihelp-abusefiltercheckmatch-param-logid": "ID de l'archivije d'u filtre de abbuse da verificà.",
+ "apihelp-abusefiltercheckmatch-example-1": "Teste ce 'u cangiamende recende de l'ID 15 soddisfe 'nu filtre facile-facile",
+ "apihelp-abusefilterchecksyntax-description": "Verifiche 'a sindasse de 'nu filtre AbuseFilter.",
+ "apihelp-abusefilterchecksyntax-summary": "Verifiche 'a sindasse de 'nu filtre AbuseFilter.",
+ "apihelp-abusefilterchecksyntax-param-filter": "'U filtre de teste chine da verificà pa sindasse.",
+ "apihelp-abusefilterchecksyntax-example-1": "Verifiche 'a sindasse de 'nu filtre valide",
+ "apihelp-abusefilterchecksyntax-example-2": "Verifiche 'a sindasse de 'nu filtre invalide",
+ "apihelp-abusefilterevalexpression-description": "Valute 'n'espressione de AbuseFilter.",
+ "apihelp-abusefilterevalexpression-summary": "Valute 'n'espressione de AbuseFilter.",
+ "apihelp-abusefilterevalexpression-param-expression": "L'espressione da valutà.",
+ "apihelp-abusefilterevalexpression-example-1": "Valute 'n'espressione facile-facile",
+ "apihelp-abusefilterunblockautopromote-description": "Sblocche 'n'utende da ricevere auto promozziune cumme conseguenze de 'nu filtre de abbuse.",
+ "apihelp-abusefilterunblockautopromote-summary": "Sblocche 'n'utende da ricevere auto promozziune cumme conseguenze de 'nu filtre de abbuse.",
+ "apihelp-abusefilterunblockautopromote-param-user": "Nome de l'utende ca vue ccù sblocche.",
+ "apihelp-abusefilterunblockautopromote-example-1": "Live 'u blocche sus a l'autopromozzione de [[User:Example]]",
+ "apihelp-query+abusefilters-description": "Fà vedè le dettaglie de le filtre de abbuse.",
+ "apihelp-query+abusefilters-summary": "Fà 'ndrucà le dettaglie de le filtre de abbuse.",
+ "apihelp-query+abusefilters-param-startid": "L'ID d'u filtre da addò accumenze l'enumerazione.",
+ "apihelp-query+abusefilters-param-endid": "L'ID dìu filtre ca stoppe l'enumerazione.",
+ "apihelp-query+abusefilters-param-show": "Fà vedè sulamende le filtre ca se iacchiane cu stu criterie.",
+ "apihelp-query+abusefilters-param-limit": "'U numere massime de filtre da elengà.",
+ "apihelp-query+abusefilters-param-prop": "Quale probbietà a pigghià.",
+ "apihelp-query+abusefilters-example-1": "Elenghe de le filtre pubbleche abbilitate",
+ "apihelp-query+abusefilters-example-2": "Fà vedè le dettaglie sus a le filtre",
+ "apihelp-query+abuselog-description": "Fà vedè le avveneminde ca onne state azzecate da filtre de abbuse.",
+ "apihelp-query+abuselog-summary": "Fà 'ndrucà le avveneminde ca onne state azzecate da filtre de abbuse.",
+ "apihelp-query+abuselog-param-start": "L'orarie da addò accumenze l'enumerazione.",
+ "apihelp-query+abuselog-param-end": "L'orarie ca stoppe l'enumerazione.",
+ "apihelp-query+abuselog-param-user": "Fà vedè sulamende le vôsce fatte da 'nu date utende o indirizze IP.",
+ "apihelp-query+abuselog-param-title": "Fà vedè sulamende le vôsce ca iessene sus a 'na data pàgene.",
+ "apihelp-query+abuselog-param-filter": "Fà vedè sulamende le vôsce ca sò azzeccate da 'nu specifiche ID de filtre.",
+ "apihelp-query+abuselog-param-limit": "'U numere massime de vôsce jndr'à l'elenghe.",
+ "apihelp-query+abuselog-param-prop": "Quale probbietà a pigghià.",
+ "apihelp-query+abuselog-example-1": "Fà vedè le vôsce de l'archivije recende",
+ "apihelp-query+abuselog-example-2": "Fà vedè le vôsce de l'archivije recende pe [[API]]",
+ "apierror-abusefilter-canttest": "Non ge tìne le permesse pe testà le filtre de abbuse.",
+ "apierror-abusefilter-cantcheck": "Non ge tìne le permesse pe testà 'a sindasse de le filtre de abbuse.",
+ "apierror-abusefilter-nosuchlogid": "Non ge stonne vôsce jndr'à l'archivije de le abbuse cu le id $1.",
+ "apierror-abusefilter-badsyntax": "'U filtre tène 'na sindasse invalide."
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/rtm.json b/www/wiki/extensions/AbuseFilter/i18n/rtm.json
new file mode 100644
index 00000000..ab891200
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/rtm.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Jose77"
+ ]
+ },
+ "abusefilter-list-edit": "A'tū'ạki"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/ru.json b/www/wiki/extensions/AbuseFilter/i18n/ru.json
new file mode 100644
index 00000000..fd689086
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/ru.json
@@ -0,0 +1,557 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ahonc",
+ "Aleksandrit",
+ "AlexSm",
+ "DCamer",
+ "Eleferen",
+ "Ferrer",
+ "HalanTul",
+ "Ignatus",
+ "KPu3uC B Poccuu",
+ "Kaganer",
+ "Kalan",
+ "Lockal",
+ "MaxSem",
+ "NBS",
+ "Okras",
+ "VasilievVV",
+ "Александр Сигачёв",
+ "Сrower",
+ "Meshkov.a",
+ "Striking Blue",
+ "Matma Rex",
+ "Mailman",
+ "Cat1987",
+ "Туллук",
+ "Facenapalm",
+ "Redredsonia",
+ "Putnik",
+ "Smigles",
+ "Mouse21",
+ "Patrick Star",
+ "Happy13241",
+ "Jack who built the house",
+ "Ole Yves"
+ ]
+ },
+ "abusefilter-desc": "Позволяет применять автоматические эвристические фильтры к правкам",
+ "abusefilter": "Настройка фильтра злоупотреблений",
+ "abuselog": "Журнал злоупотреблений",
+ "abusefilter-intro": "Добро пожаловать на страницу управления фильтром злоупотреблений.\nФильтр злоупотреблений представляет собой автоматизированный механизм применения эвристик к действиям участников.\nНиже приведён список всех установленных фильтров.",
+ "abusefilter-mustbeeditor": "По соображениям безопасности, только участники с правом изменения фильтров злоупотреблений могут использовать этот интерфейс.",
+ "abusefilter-warning": "'''Внимание'''. Данное действие было автоматически определено как нежелательное.\nНеконструктивные действия будут быстро отменены,\nгрубые или неоднократные неконструктивные правки приведут к блокировке вашей учётной записи или IP-адреса.\nЕсли вы уверены, что это конструктивное действие, вы можете нажать кнопку отправки или сохранения ещё раз.\nКраткое описание сработавшего фильтра: $1",
+ "abusefilter-disallowed": "Данное действие было автоматически определено как вредоносное, и потому запрещено.\nЕсли вы уверены, что это конструктивная правка, пожалуйста, обратитесь к администратору и расскажите, что вы собирались сделать.\nКраткое описание сработавшего фильтра: $1",
+ "abusefilter-blocked-display": "Данное действие было автоматически определено как вредоносное,\nвам было запрещено его выполнение.\nКроме того, в целях защиты {{grammar:genitive|{{SITENAME}}}}, ваша учётная запись и связанные с ней IP-адреса были заблокированы.\nЕсли вы видите в этом ошибку, пожалуйста, свяжитесь с администратором.\nКраткое описание сработавшего фильтра: $1",
+ "abusefilter-degrouped": "Данное действие было автоматически определено как вредоносное.\nДействие было отклонено; ваша учётная запись считается скомпрометированной, с неё сняты все права.\nЕсли вы считаете, что это ошибка, пожалуйста, свяжитесь с бюрократом и объясните ему ваши действия, тогда ваши права будут восстановлены.\nКраткое описание сработавшего фильтра: $1",
+ "abusefilter-autopromote-blocked": "Данное действие было автоматически определено как вредоносное и потому запрещено.\nКроме того, в целях безопасности с вашей учётной записи сняты некоторые привилегии, обычно предоставляемые зарегистрированным учётным записям.\nКраткое описание сработавшего фильтра: $1",
+ "abusefilter-blocker": "Фильтр злоупотреблений",
+ "abusefilter-blockreason": "Автоматически заблокирован фильтром злоупотреблений. Описание фильтра: $1",
+ "abusefilter-degroupreason": "Фильтр злоупотреблений автоматически снял права. Описание фильтра: $1",
+ "abusefilter-accountreserved": "Эта учётная запись зарезервирована для использования фильтром злоупотреблений.",
+ "right-abusefilter-modify": "изменение фильтров злоупотреблений",
+ "right-abusefilter-view": "просмотр фильтров злоупотреблений",
+ "right-abusefilter-log": "просмотр журнала злоупотреблений",
+ "right-abusefilter-log-detail": "просмотр подробностей в журнале фильтра злоупотреблений",
+ "right-abusefilter-private": "просмотр частных сведений в журнале злоупотреблений",
+ "right-abusefilter-private-log": "Просмотр журнала доступа к личной информации фильтр злоупотребления",
+ "right-abusefilter-modify-restricted": "изменение ограничивающих фильтров злоупотреблений",
+ "right-abusefilter-revert": "откат изменений, произведённых фильтром злоупотреблений",
+ "right-abusefilter-view-private": "просмотр скрытых фильтров злоупотреблений",
+ "right-abusefilter-log-private": "просмотр частных записей в журнале фильтра злоупотреблений",
+ "right-abusefilter-hide-log": "сокрытие записей в журнале злоупотреблений",
+ "right-abusefilter-hidden-log": "просмотр скрытых записей в журнале фильтра злоупотреблений",
+ "right-abusefilter-modify-global": "создание или изменение глобальных фильтров злоупотреблений",
+ "action-abusefilter-modify": "изменение фильтров злоупотреблений",
+ "action-abusefilter-view": "просмотр фильтров злоупотреблений",
+ "action-abusefilter-log": "просмотр журнала злоупотреблений",
+ "action-abusefilter-log-detail": "просматривать подробности журнала фильтра злоупотреблений",
+ "action-abusefilter-private": "просмотр личных данных в журнале злоупотреблений",
+ "action-abusefilter-private-log": "просмотреть журнал доступа к личной информации фильтр злоупотребления",
+ "action-abusefilter-modify-restricted": "изменять фильтры злоупотреблений с запрещающими действиями",
+ "action-abusefilter-revert": "отмена всех действий, выполненных фильтром злоупотреблений",
+ "action-abusefilter-view-private": "просмотр фильтров злоупотреблений, отмеченных как скрытые",
+ "action-abusefilter-log-private": "просмотр частных журналов фильтра злоупотреблений",
+ "abusefilter-log": "Журнал фильтра злоупотреблений",
+ "abusefilter-log-summary": "В этом журнале представлен список всех действий, обнаруженных фильтрами.",
+ "abusefilter-log-search": "Поиск в журнале злоупотреблений",
+ "abusefilter-log-search-user": "Участник:",
+ "abusefilter-log-search-filter": "ID фильтров (разделённые символом вертикальной линии):",
+ "abusefilter-log-search-title": "Заголовок:",
+ "abusefilter-log-search-wiki": "Википроект:",
+ "abusefilter-log-search-impact": "Влияние:",
+ "abusefilter-log-search-impact-all": "Все действия",
+ "abusefilter-log-search-impact-saved": "Только сохранённые изменения",
+ "abusefilter-log-search-impact-not-saved": "Только несохранённые изменения",
+ "abusefilter-log-search-entries-label": "Видимость:",
+ "abusefilter-log-search-entries-all": "Все записи",
+ "abusefilter-log-search-entries-hidden": "Только скрытые записи",
+ "abusefilter-log-search-entries-visible": "Только видимые записи",
+ "abusefilter-log-search-action-taken-label": "Предпринятые меры:",
+ "abusefilter-log-search-action-taken-any": "Все",
+ "abusefilter-log-search-submit": "Найти",
+ "abusefilter-log-entry": "$1: $2 {{GENDER:$8|вызвал|вызвала}} срабатывание фильтра злоупотреблений, выполнив действие «$3» на странице $4.\nПредпринятые меры: $5;\nОписание фильтра: $6",
+ "abusefilter-log-entry-withdiff": "$1: $2 {{GENDER:$8|вызвал|вызвала}} срабатывание фильтра злоупотреблений, выполнив действие «$3» на странице $4.\nПредпринятые меры: $5;\nОписание фильтра: $6 ($7)",
+ "abusefilter-log-detailedentry-meta": "$1: $2 {{GENDER:$9|вызвал|вызвала}} срабатывание $3, выполнив действие «$4» на странице $5.\nПредпринятые меры: $6.\nОписание фильтра: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "глобальный фильтр $1",
+ "abusefilter-log-detailedentry-local": "фильтра $1",
+ "abusefilter-log-detailslink": "подробности",
+ "abusefilter-log-diff": "изм.",
+ "abusefilter-log-hidelink": "настроить видимость",
+ "abusefilter-log-details-legend": "Подробности записи журнала $1",
+ "abusefilter-log-details-var": "Переменная",
+ "abusefilter-log-details-val": "Значение",
+ "abusefilter-log-details-vars": "Параметры действия",
+ "abusefilter-log-details-private": "Скрытые данные журнала",
+ "abusefilter-log-details-ip": "Исходящий IP-адрес",
+ "abusefilter-log-details-checkuser": "Проверить участника",
+ "abusefilter-log-noactions": "нет",
+ "abusefilter-log-details-diff": "Изменения, сделанные в правке",
+ "abusefilter-log-linkoncontribs": "журнал злоупотреблений",
+ "abusefilter-log-linkoncontribs-text": "Записи журнала злоупотреблений для {{GENDER:$1|этого участника|этой участницы}}",
+ "abusefilter-log-hidden": "(запись скрыта)",
+ "abusefilter-log-hidden-implicit": "(скрыто, так как правка была удалена)",
+ "abusefilter-log-cannot-see-details": "У вас нет разрешения на просмотр подробностей этой записи.",
+ "abusefilter-log-cannot-see-private-details": "У вас нет разрешения просматривать личные данные этой записи.",
+ "abusefilter-log-nonexistent": "Записи с указанным ID не существует.",
+ "abusefilter-log-details-hidden": "Вы не можете просмотреть подробности этой записи, поскольку она была скрыта.",
+ "abusefilter-log-private-not-included": "Один или несколько заданных вами идентификатора принадлежать скрытым фильтрам. Поскольку вы не можете просматривать скрытые фильтры, они не будут отображены в поиске.",
+ "abusefilter-log-hide-legend": "Скрыть запись журнала",
+ "abusefilter-log-hide-id": "ID записи журнала:",
+ "abusefilter-log-hide-hidden": "Скрыть эту запись от публичного просмотра",
+ "abusefilter-log-hide-reason": "Причина:",
+ "abusefilter-log-hide-reason-other": "Другая/дополнительная причина:",
+ "abusefilter-log-hide-forbidden": "У вас нет разрешения на сокрытие\nзаписей журнала злоупотреблений.",
+ "abusefilter-logentry-suppress": "скрыть [[$1]]",
+ "abusefilter-logentry-unsuppress": "показать [[$1]]",
+ "logentry-abusefilter-hit": "$1 {{GENDER:$2|вызвал|вызвала}} срабатывание фильтра $4, выполнив действие «$5» на странице $3. Предпринятые меры: $6 ($7)",
+ "log-action-filter-abusefilter": "Тип смены фильтра:",
+ "log-action-filter-abusefilter-create": "Создание нового фильтра",
+ "log-action-filter-abusefilter-modify": "Изменение фильтра",
+ "logentry-abusefilterprivatedetails-access": "$1 {{GENDER:$2|доступ к}} личные данные для $3",
+ "abusefilterprivatedetails-log-name": "Журнал доступа к конфиденциальным данным фильтр злоупотребления",
+ "abusefilter-management": "Управление фильтром злоупотреблений",
+ "abusefilter-list": "Все фильтры",
+ "abusefilter-list-id": "ID фильтра",
+ "abusefilter-list-pattern": "Паттерн",
+ "abusefilter-list-status": "Состояние",
+ "abusefilter-list-public": "Общедоступное описание",
+ "abusefilter-list-consequences": "Последствия",
+ "abusefilter-list-visibility": "Видимость",
+ "abusefilter-list-hitcount": "Срабатываний",
+ "abusefilter-list-edit": "Править",
+ "abusefilter-list-details": "Подробности",
+ "abusefilter-list-limit": "Количество на странице:",
+ "abusefilter-list-lastmodified": "Последнее изменение",
+ "abusefilter-list-group": "Группа фильтра",
+ "abusefilter-hidden": "Скрытый",
+ "abusefilter-unhidden": "Общедоступный",
+ "abusefilter-enabled": "Включён",
+ "abusefilter-deleted": "Удалён",
+ "abusefilter-disabled": "Выключен",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|срабатывание|срабатывания|срабатываний}}",
+ "abusefilter-new": "Создать новый фильтр",
+ "abusefilter-return": "Вернуться к управлению фильтрами",
+ "abusefilter-status-global": "Глобальный",
+ "abusefilter-list-options": "Параметры",
+ "abusefilter-list-options-deleted": "Удалённые фильтры:",
+ "abusefilter-list-options-deleted-only": "Показывать только удалённые фильтры",
+ "abusefilter-list-options-deleted-hide": "Скрывать удалённые фильтры",
+ "abusefilter-list-options-deleted-show": "Показывать удалённые фильтры",
+ "abusefilter-list-options-scope": "Показать фильтры:",
+ "abusefilter-list-options-scope-local": "Только локальные правила",
+ "abusefilter-list-options-scope-global": "Только глобальные правила",
+ "abusefilter-list-options-scope-all": "Локальные и глобальные правила",
+ "abusefilter-list-options-disabled": "Отключённые фильтры:",
+ "abusefilter-list-options-hidedisabled": "Скрыть отключённые фильтры",
+ "abusefilter-list-options-searchfield": "Найти среди правил:",
+ "abusefilter-list-options-searchpattern": "Вставить паттерн",
+ "abusefilter-list-options-searchoptions": "Режим поиска:",
+ "abusefilter-list-options-search-like": "Простой запрос",
+ "abusefilter-list-options-search-rlike": "Регулярное выражение",
+ "abusefilter-list-options-search-irlike": "Нечувствительное к регистру регулярное выражение",
+ "abusefilter-list-regexerror": "Во время поиска произошла ошибка: Синтаксическая ошибка регулярного выражения.",
+ "abusefilter-list-options-submit": "Обновить",
+ "abusefilter-tools-text": "Здесь находятся некоторые инструменты, которые могут помочь в формулировании и отладке фильтров злоупотреблений.",
+ "abusefilter-tools-expr": "Проверка выражения",
+ "abusefilter-tools-submitexpr": "Опробовать",
+ "abusefilter-tools-reautoconfirm": "Восстановить статус «autoconfirmed»",
+ "abusefilter-tools-reautoconfirm-user": "Участник:",
+ "abusefilter-tools-reautoconfirm-submit": "Переавтоподтверждение",
+ "abusefilter-reautoconfirm-none": "У {{GENDER:$1|этого участника|этой участницы}} не отключён статус автоподтверждения.",
+ "abusefilter-reautoconfirm-notallowed": "Вам не разрешено восстанавливать статус автоподтверждения.",
+ "abusefilter-reautoconfirm-done": "Восстановлен статус автоподтверждения учётной записи",
+ "abusefilter-status": "Из $1 {{PLURAL:$1|последнего действия|последних действий}}, $2 ($3%) {{PLURAL:$2|попало|попали}} под ограничивающее условие $4, а $5 ($6%) {{PLURAL:$5|соответствует|соответствуют}} одному из включённых в настоящее время фильтров.",
+ "abusefilter-edit": "Править фильтр злоупотреблений",
+ "abusefilter-edit-subtitle": "Изменение фильтра $1",
+ "abusefilter-edit-subtitle-new": "Создание фильтра",
+ "abusefilter-edit-oldwarning": "<strong>Вы правите старую версию фильтра. Статистика приводится для последней версии фильтра. Если вы сохраните вашу правку, то вы перезапишите сделанные ранее изменения.</strong> &bull; [[Special:AbuseFilter/history/$2|Вернуться к странице истории фильтра]]",
+ "abusefilter-edit-status-label": "Статистика:",
+ "abusefilter-edit-status": "Из {{PLURAL:$1|последнего $1 действия|последних $1 действий}}, этот фильтр соответствует $2 ($3%).",
+ "abusefilter-edit-status-profile": "Из {{PLURAL:$1|последнего $1 действия|последних $1 действий}}, этот фильтр соответствует $2 ($3%).\nСреднее время его работы — $4 мс, он использует $5 {{PLURAL:$5|условие|условий|условия}} из лимита условий.",
+ "abusefilter-edit-throttled-warning": "'''Внимание:''' Этот фильтр автоматически помечен как вредный. В качестве меры безопасности следующие действия не будут выполнены ($1). Пожалуйста, проверьте и [[mw:Extension:AbuseFilter/Conditions|оптимизируйте]] ваши условия, чтобы удалить это ограничение",
+ "abusefilter-edit-new": "Новый фильтр",
+ "abusefilter-edit-save": "Сохранить фильтр",
+ "abusefilter-edit-id": "ID фильтра:",
+ "abusefilter-edit-switch-editor": "Переключить редактор",
+ "abusefilter-edit-description": "Описание:\n:''(общедоступное)''",
+ "abusefilter-edit-field-description": "описание",
+ "abusefilter-edit-group": "Группа фильтра:",
+ "abusefilter-edit-flags": "Флаги:",
+ "abusefilter-edit-enabled": "Включить этот фильтр",
+ "abusefilter-edit-deleted": "Отметить как удалённый",
+ "abusefilter-edit-hidden": "Скрыть подробности этого фильтра от обычных участников",
+ "abusefilter-edit-global": "Глобальный фильтр",
+ "abusefilter-edit-rules": "Условия:",
+ "abusefilter-edit-field-conditions": "условия",
+ "abusefilter-edit-notes": "Примечания:",
+ "abusefilter-edit-lastmod": "Последнее изменение фильтра:",
+ "abusefilter-edit-lastmod-text": "$1 — $2",
+ "abusefilter-edit-hitcount": "Срабатываний фильтра:",
+ "abusefilter-edit-consequences": "Действия, выполняемые при совпадении",
+ "abusefilter-edit-action-warn": "Принимать эти меры после предупреждения участника",
+ "abusefilter-edit-action-disallow": "Запретить участнику выполнить запрашиваемое действие",
+ "abusefilter-edit-action-blockautopromote": "Снять с участника статус автоподтверждения",
+ "abusefilter-edit-action-degroup": "Исключить участника из всех привилегированных групп",
+ "abusefilter-edit-action-block": "Заблокировать участника или IP-адрес",
+ "abusefilter-edit-action-blocktalk": "Блокировать пользователя и / или IP-адрес от редактирования собственной страницы обсуждения",
+ "abusefilter-edit-action-throttle": "Применять меры только если участник превышает предел",
+ "abusefilter-edit-action-rangeblock": "Блокировать соответствующий диапазон, из которого работает участник.",
+ "abusefilter-edit-action-tag": "Отметить правку для дальнейшей проверки",
+ "abusefilter-edit-throttle-count": "Количество разрешённых действий:",
+ "abusefilter-edit-throttle-period": "Отрезок времени:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|секунда|секунды|секунд}}",
+ "abusefilter-edit-throttle-groups": "Сужение по группам:\n:''(по одному на строке, соединения запятыми)''",
+ "abusefilter-edit-warn-message": "Системное сообщение для предупреждений:",
+ "abusefilter-edit-warn-other": "Другое сообщение",
+ "abusefilter-edit-warn-other-label": "Название страницы другого сообщения:\n:''(без префикса MediaWiki)''",
+ "abusefilter-edit-warn-actions": "Действия:",
+ "abusefilter-edit-warn-preview": "Предпросмотр выбранного сообщения",
+ "abusefilter-edit-warn-edit": "Создать/Изменить выбранное сообщение",
+ "abusefilter-edit-tag-tag": "Применяемые [[Special:Tags|метки]] (по одной на строку):",
+ "abusefilter-edit-block-anon-durations": "Длительность блокировки для анонимных пользователей:",
+ "abusefilter-edit-block-user-durations": "Длительность блокировки для зарегистрированных пользователей:",
+ "abusefilter-block-anon": "анонимные участники",
+ "abusefilter-block-user": "зарегистрированные участники",
+ "abusefilter-edit-denied": "Вы не можете просмотреть подробную информацию об этом фильтре, так как она скрыта от обычных участников.",
+ "abusefilter-edit-main": "Параметры фильтра",
+ "abusefilter-edit-done-subtitle": "Фильтр исправлен",
+ "abusefilter-edit-done": "Вы успешно сохранили [[Special:AbuseFilter/history/$1/diff/prev/$2|изменения]] в [[Special:AbuseFilter/$1|фильтре $3]].",
+ "abusefilter-edit-badsyntax": "В указанном фильтре обнаружены синтаксические ошибки. Парсер выдал следующее сообщение: <pre>$1</pre>",
+ "abusefilter-edit-missingfields": "Следующие поля обязательны и должны быть заполнены: $1",
+ "abusefilter-edit-restricted": "Вы не можете изменить этот фильтр, так как он содержит одно или несколько ограничивающих действий. Пожалуйста, попросите участника с соответствующими правами сделать требуемые изменения.",
+ "abusefilter-edit-viewhistory": "Показать историю этого фильтра",
+ "abusefilter-edit-history": "История:",
+ "abusefilter-edit-check": "Проверить синтаксис",
+ "abusefilter-edit-badfilter": "Указанного вами фильтра не существует",
+ "abusefilter-edit-revert": "Откатить действия, выполненные фильтром",
+ "abusefilter-edit-tools": "Инструменты:",
+ "abusefilter-edit-test-link": "Проверить этот фильтр на свежих правках",
+ "abusefilter-edit-export": "Экспортировать этот фильтр в другую вики",
+ "abusefilter-edit-syntaxok": "Не обнаружено ошибок синтаксиса.",
+ "abusefilter-edit-syntaxerr": "Обнаружена ошибка синтаксиса: $1",
+ "abusefilter-edit-bad-tags": "Одна или более из указанным вами меток неверна.\nМетки должны быть короткими, не должны содержать спецсимволов или быть зарезервированными другим программным обеспечением. Попробуйте выбрать новое название метки",
+ "abusefilter-edit-notallowed": "У вас нет разрешения создавать или редактировать фильтры злоупотреблений",
+ "abusefilter-edit-notallowed-global": "У вас нет прав на создание или изменение глобальных фильтров злоупотреблений",
+ "abusefilter-edit-notallowed-global-custom-msg": "Пользовательские предупреждающие сообщения не поддерживаются для глобальных фильтров",
+ "abusefilter-edit-builder-select": "Выберите пункт для добавления",
+ "abusefilter-edit-builder-group-op-arithmetic": "Арифметические операторы",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Сложение (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Вычитание (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Умножение (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Деление (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Модуль (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Степень (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Операторы сравнения",
+ "abusefilter-edit-builder-op-comparison-equal": "Значение, равное (==)",
+ "abusefilter-edit-builder-op-comparison-equal-strict": "Значение и тип, равный (===)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Значение не равно (!=)",
+ "abusefilter-edit-builder-op-comparison-notequal-strict": "Значение и тип, не равный (!==)",
+ "abusefilter-edit-builder-op-comparison-lt": "Меньше (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Более чем (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Меньше или равно (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Больше или равно (>=)",
+ "abusefilter-edit-builder-group-op-bool": "Булевые операторы",
+ "abusefilter-edit-builder-op-bool-not": "НЕ (!)",
+ "abusefilter-edit-builder-op-bool-and": "И (&)",
+ "abusefilter-edit-builder-op-bool-or": "ИЛИ (|)",
+ "abusefilter-edit-builder-op-bool-xor": "Исключающее ИЛИ (^)",
+ "abusefilter-edit-builder-group-misc": "Разные",
+ "abusefilter-edit-builder-misc-in": "Содержится в строке (in)",
+ "abusefilter-edit-builder-misc-like": "Соответствие шаблону (like)",
+ "abusefilter-edit-builder-misc-rlike": "Регулярное выражение (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "Соответствие регулярному выражению, без учета регистра (irlike)",
+ "abusefilter-edit-builder-misc-contains": "Левая строка содержит правую строку (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "Строковое выражение (\"\")",
+ "abusefilter-edit-builder-misc-tern": "Тернарный оператор (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "Условие (if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "Функции",
+ "abusefilter-edit-builder-funcs-length": "Длина строки (length)",
+ "abusefilter-edit-builder-funcs-lcase": "В нижний регистр (lcase)",
+ "abusefilter-edit-builder-funcs-ucase": "В верхний регистр",
+ "abusefilter-edit-builder-funcs-ccnorm": "Нормализации неоднозначных символов (ccnorm)",
+ "abusefilter-edit-builder-funcs-ccnorm-contains-any": "Нормализовать и найти строку для нескольких подстрок в режиме OR (ccnorm_contains_any)",
+ "abusefilter-edit-builder-funcs-ccnorm-contains-all": "Нормализовать и найти строку для нескольких подстрок в режиме AND (ccnorm_contains_all)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "Удаление повторяющихся символов (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "Специальных символов / всего символов (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "Нормализация (norm)",
+ "abusefilter-edit-builder-funcs-count": "Число включений подстроки X в строку Y (count)",
+ "abusefilter-edit-builder-funcs-rcount": "Сколько раз рег. выр. X встречается в строке Y (rcount)",
+ "abusefilter-edit-builder-funcs-get_matches": "Массив регулярных выражений совпадает с текстом для каждой группы захвата (get_matches)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "Удалить пробелы (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "Удалить специальные символы (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "Присутствие IP в диапазоне (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "Строка содержит для нескольких подстрок в режиме OR. (contains_any)",
+ "abusefilter-edit-builder-funcs-contains-all": "Строка содержит для нескольких подстрок в режиме AND. (contains_all)",
+ "abusefilter-edit-builder-funcs-substr": "Подстрока (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "Положение подстроки в строке (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "Замена подстроки в строке (str_replace)",
+ "abusefilter-edit-builder-funcs-rescape": "Экранирование строки для использования в регулярных выражениях (rescape)",
+ "abusefilter-edit-builder-funcs-set_var": "Установить переменную (set_var)",
+ "abusefilter-edit-builder-group-vars": "Переменные",
+ "abusefilter-edit-builder-vars-accountname": "Имя учётной записи (при создании учётной записи)",
+ "abusefilter-edit-builder-vars-timestamp": "Unix-время изменения",
+ "abusefilter-edit-builder-vars-timestamp-expanded": "Временная метка журнала",
+ "abusefilter-edit-builder-vars-action": "Действие",
+ "abusefilter-edit-builder-vars-addedlines": "Добавленные строки",
+ "abusefilter-edit-builder-vars-delta": "Изменение размера в правке",
+ "abusefilter-edit-builder-vars-diff": "Унифицированная разница изменений правки",
+ "abusefilter-edit-builder-vars-newsize": "Новый размер страницы",
+ "abusefilter-edit-builder-vars-oldsize": "Старый размер страницы",
+ "abusefilter-edit-builder-vars-old-content-model": "Старая модель содержимого",
+ "abusefilter-edit-builder-vars-new-content-model": "Новая модель содержимого",
+ "abusefilter-edit-builder-vars-removedlines": "Удалённые строки",
+ "abusefilter-edit-builder-vars-summary": "Описание правки",
+ "abusefilter-edit-builder-vars-article-id": "ID страницы",
+ "abusefilter-edit-builder-vars-article-ns": "Пространство имён страницы",
+ "abusefilter-edit-builder-vars-article-text": "Название страницы (без пространства имён)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Полное название страницы",
+ "abusefilter-edit-builder-vars-article-views": "Просмотров страниц",
+ "abusefilter-edit-builder-vars-movedfrom-id": "ID переименовываемой страницы",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "Пространство имён переименовываемой страницы",
+ "abusefilter-edit-builder-vars-movedfrom-text": "Название переименовываемой страницы",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "Полное название переименовываемой страницы",
+ "abusefilter-edit-builder-vars-movedto-id": "ID целевой страницы переименования",
+ "abusefilter-edit-builder-vars-movedto-ns": "Пространство имён целевой страницы переименования",
+ "abusefilter-edit-builder-vars-movedto-text": "Название целевой страницы переименования",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "Полное название целевой страницы переименования",
+ "abusefilter-edit-builder-vars-user-editcount": "Число правок участника",
+ "abusefilter-edit-builder-vars-user-age": "Возраст учётной записи",
+ "abusefilter-edit-builder-vars-user-name": "Имя учётной записи",
+ "abusefilter-edit-builder-vars-user-groups": "Группы (включая неявные) в которых состоит участник",
+ "abusefilter-edit-builder-vars-user-rights": "Права, которые есть у участника",
+ "abusefilter-edit-builder-vars-user-blocked": "Заблокирован ли пользователь",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "Время подтверждения адреса эл. почты",
+ "abusefilter-edit-builder-vars-recent-contributors": "Последние десять редакторов страницы",
+ "abusefilter-edit-builder-vars-first-contributor": "Первый сделавший свой вклад в страницу",
+ "abusefilter-edit-builder-vars-movedfrom-recent-contributors": "Последние десять пользователей, чтобы внести свой вклад в перемещение исходной страницы",
+ "abusefilter-edit-builder-vars-movedfrom-first-contributor": "Первый пользователь внесет вклад в перемещение исходной страницы",
+ "abusefilter-edit-builder-vars-movedto-recent-contributors": "Последние десять пользователей, чтобы внести свой вклад в перемещение страницы назначения",
+ "abusefilter-edit-builder-vars-movedto-first-contributor": "Первый пользователь внесет вклад в перемещение страницы назначения",
+ "abusefilter-edit-builder-vars-all-links": "Все внешние ссылки в новом тексте",
+ "abusefilter-edit-builder-vars-added-links": "Все внешние ссылки, добавленные в правке",
+ "abusefilter-edit-builder-vars-removed-links": "Все внешние ссылки, удалённые в правке",
+ "abusefilter-edit-builder-vars-old-text": "Старый вики-текст, до правки страницы",
+ "abusefilter-edit-builder-vars-new-text": "Новый вики-текст, после правки страницы",
+ "abusefilter-edit-builder-vars-new-pst": "Вики-текст новой страницы, преобразованный перед сохранением",
+ "abusefilter-edit-builder-vars-diff-pst": "Унифицированный diff изменений в процессе редактирования, преобразованных перед сохранением",
+ "abusefilter-edit-builder-vars-addedlines-pst": "Строчки, добавленные при редактировании, преобразованные перед сохранением",
+ "abusefilter-edit-builder-vars-new-text-stripped": "Новый текст страницы, очищенный от разметки",
+ "abusefilter-edit-builder-vars-new-html": "Разобранный HTML-код новой версии",
+ "abusefilter-edit-builder-vars-restrictions-edit": "Уровень защиты страницы от правок",
+ "abusefilter-edit-builder-vars-restrictions-move": "Уровень защиты страницы от переименований",
+ "abusefilter-edit-builder-vars-restrictions-create": "Защита создания страницы",
+ "abusefilter-edit-builder-vars-restrictions-upload": "Защита загрузки файла",
+ "abusefilter-edit-builder-vars-movedfrom-restrictions-edit": "Изменить уровень защиты страницы источника движения",
+ "abusefilter-edit-builder-vars-movedfrom-restrictions-move": "Уровень защиты от перемещения страницы источника перемещения",
+ "abusefilter-edit-builder-vars-movedfrom-restrictions-create": "Создать защиту страницы источника перемещения",
+ "abusefilter-edit-builder-vars-movedfrom-restrictions-upload": "Загрузить защиту исходного файла перемещения",
+ "abusefilter-edit-builder-vars-movedto-restrictions-edit": "Изменить уровень защиты страницы назначения перемещения",
+ "abusefilter-edit-builder-vars-movedto-restrictions-move": "Переместить уровень защиты страницы назначения перемещения",
+ "abusefilter-edit-builder-vars-movedto-restrictions-create": "Создать защиту страницы назначения перемещения",
+ "abusefilter-edit-builder-vars-movedto-restrictions-upload": "Загрузить защиту файла назначения перемещения",
+ "abusefilter-edit-builder-vars-old-text-stripped": "Текст старой страницы, лишённый разметки",
+ "abusefilter-edit-builder-vars-old-links": "Ссылки на странице до правки",
+ "abusefilter-edit-builder-vars-old-html": "Вики-текст старой страницы, преобразованный в HTML",
+ "abusefilter-edit-builder-vars-minor-edit": "Была ли правка отмечена как «малое изменение»",
+ "abusefilter-edit-builder-vars-file-sha1": "SHA1-хэш содержания файла",
+ "abusefilter-edit-builder-vars-file-size": "Размер файла в байтах",
+ "abusefilter-edit-builder-vars-file-mime": "MIME-тип файла",
+ "abusefilter-edit-builder-vars-file-mediatype": "Медиа-тип файла",
+ "abusefilter-edit-builder-vars-file-width": "Ширина файла в пикселях",
+ "abusefilter-edit-builder-vars-file-height": "Высота файла в пикселях",
+ "abusefilter-edit-builder-vars-file-bits-per-channel": "Глубина цвета в файле",
+ "abusefilter-edit-block-options": "Параметры блокировки:",
+ "abusefilter-filter-log": "Последние изменения фильтров",
+ "abusefilter-history": "История изменений фильтра злоупотреблений #$1",
+ "abusefilter-history-foruser": "Изменения сделанные $1",
+ "abusefilter-history-hidden": "скрытый",
+ "abusefilter-history-enabled": "включённый",
+ "abusefilter-history-global": "Глобальный",
+ "abusefilter-history-timestamp": "Время",
+ "abusefilter-history-user": "Участник",
+ "abusefilter-history-public": "Открытое описание фильтра",
+ "abusefilter-history-flags": "Флаги",
+ "abusefilter-history-filter": "Правила фильтра",
+ "abusefilter-history-comments": "Комментарии",
+ "abusefilter-history-actions": "Действия",
+ "abusefilter-history-backedit": "Возврат к редактированию фильтра",
+ "abusefilter-history-deleted": "Удалено",
+ "abusefilter-history-filterid": "Фильтр",
+ "abusefilter-history-select-legend": "Уточнить поиск",
+ "abusefilter-history-select-user": "Участник:",
+ "abusefilter-history-select-filter": "ID фильтра:",
+ "abusefilter-history-select-submit": "Уточнить",
+ "abusefilter-history-diff": "Изменения",
+ "abusefilter-history-error-hidden": "Запрашиваемый фильтр скрыт, вы не можете просмотреть его историю.",
+ "abusefilter-exception-unexpectedatend": "Неожидаемое «$2» в позиции $1.",
+ "abusefilter-exception-expectednotfound": "Не обнаружен $2, ожидаемый в позиции $1 (вместо него найден $3 $4).",
+ "abusefilter-exception-unrecognisedkeyword": "Неопознанное ключевое слово $2 в позиции $1.",
+ "abusefilter-exception-unexpectedtoken": "Неопознанный знак «$3» (тип: $2) в позиции $1.",
+ "abusefilter-exception-unclosedstring": "Незакрытое строковое выражение, начинающееся с позиции $1.",
+ "abusefilter-exception-invalidoperator": "Ошибочный оператор «$2» в позиции $1.",
+ "abusefilter-exception-unrecognisedtoken": "Неопознанный знак «$2» в позиции $1.",
+ "abusefilter-exception-noparams": "Не указаны параметры для функции «$2» в позиции $1.",
+ "abusefilter-exception-dividebyzero": "Попытка деления $2 на ноль в позиции $1.",
+ "abusefilter-exception-unrecognisedvar": "Неопознанная переменная $2 в позиции $1",
+ "abusefilter-exception-notenoughargs": "Не хватает аргументов в функции $2, вызываемой в позиции $1.\nОжидается $3 {{PLURAL:$3|аргумент|аргументов|аргумента}}, {{PLURAL:$4|получен|получено}} $4",
+ "abusefilter-exception-regexfailure": "Ошибка в регулярном выражении «$3» в позиции $1: «$2»",
+ "abusefilter-exception-overridebuiltin": "Недопустимое переопределение встроенной переменной «$2» в позиции $1.",
+ "abusefilter-exception-outofbounds": "Запрос несуществующего элемента списка $2 (размер списка = $3) в позиции $1.",
+ "abusefilter-exception-notlist": "Запрос элемента массива для объекта, не являющемся массивом, в позиции $1.",
+ "abusefilter-action-tag": "Метка",
+ "abusefilter-action-throttle": "Сужение",
+ "abusefilter-action-warn": "Предупреждение",
+ "abusefilter-action-blockautopromote": "Заблокировать автопродвижение",
+ "abusefilter-action-block": "Блокировка",
+ "abusefilter-action-degroup": "Удаление из группы",
+ "abusefilter-action-rangeblock": "Блокировка диапазона",
+ "abusefilter-action-disallow": "Отклонение",
+ "abusefilter-revert-title": "Откатить все изменения, сделанные фильтром $1",
+ "abusefilter-revert-intro": "Эта форма позволяет вам откатить все изменения, сделанные фильтром злоупотреблений $1.\nПожалуйста, проявите осмотрительность в использовании этого инструмента.",
+ "abusefilter-revert-preview-item": "$1: $2 {{GENDER:$7|сделал|сделала}} $3 на $4. Действия для отмены: $5 ($6)",
+ "abusefilter-revert-search-legend": "Выберите действия фильтра злоупотреблений, которые нужно отменить",
+ "abusefilter-revert-periodstart": "Начало периода:",
+ "abusefilter-revert-periodend": "Окончание периода:",
+ "abusefilter-revert-search": "Выбор действий",
+ "abusefilter-revert-filter": "ID фильтра:",
+ "abusefilter-revert-preview-intro": "Ниже приведены выполненные фильтром злоупотреблений действия, которые будут отменены.\nПожалуйста, внимательно их проверьте и нажмите «{{int:abusefilter-revert-confirm}}», чтоб подтвердить свой выбор.",
+ "abusefilter-revert-confirm-legend": "Подтвердите возврат",
+ "abusefilter-revert-confirm": "Подтвердить",
+ "abusefilter-revert-success": "Вы откатили все действия, выполненные фильтром злоупотреблений [[Special:AbuseFilter/$1|$2]].",
+ "abusefilter-revert-reason": "Автоматический откат всех действий, выполненных фильтром злоупотреблений $1.\nУказанная причина: $2",
+ "abusefilter-revert-reasonfield": "Причина:",
+ "abusefilter-test": "Проверить фильтр на уже сделанных правках",
+ "abusefilter-test-intro": "Эта страница позволяет вам проверить фильтр, введённый в нижележащее поле, на {{PLURAL:$1|$1 последнем изменении|$1 последних изменениях|1=последнем изменении}}.\nЧтобы загрузить существующий фильтр, введите его идентификатор в текстовое поле под полем редактирования и нажмите кнопку «{{int:abusefilter-test-load}}».",
+ "abusefilter-test-legend": "Проверка фильтра",
+ "abusefilter-test-load-filter": "Загрузить фильтр с ID:",
+ "abusefilter-test-submit": "Проверить",
+ "abusefilter-test-load": "Загрузить",
+ "abusefilter-test-user": "Изменения сделаны участником:",
+ "abusefilter-test-period-start": "Изменения сделаны после:",
+ "abusefilter-test-period-end": "Изменения сделаны до:",
+ "abusefilter-test-page": "Изменения сделаны на странице:",
+ "abusefilter-test-shownegative": "Показывать изменения, не попадающие под фильтр",
+ "abusefilter-test-syntaxerr": "Введённый вами фильтр содержит синтаксическую ошибку.\nВы можете получить подробное объяснение, нажав на кнопку «{{int:abusefilter-edit-check}}».",
+ "abusefilter-test-badtitle": "Заголовок страниц, который вы ввели, некорректен. Возможно, он содержит один или более символов, которые нельзя использовать в названиях.",
+ "abusefilter-changeslist-examine": "просмотреть",
+ "abusefilter-examine": "Просмотр отдельных изменений",
+ "abusefilter-examine-intro": "Эта страница позволяет вам просмотреть переменные, созданные фильтром злоупотреблений для отдельной правки и проверить их в фильтрах.",
+ "abusefilter-examine-legend": "Выбор изменений",
+ "abusefilter-examine-diff": "URL разницы версий:",
+ "abusefilter-examine-user": "Участник:",
+ "abusefilter-examine-title": "Заголовок страницы:",
+ "abusefilter-examine-submit": "Найти",
+ "abusefilter-examine-vars": "Переменные, созданные для этого изменения",
+ "abusefilter-examine-test": "Проверить это изменение в фильтре",
+ "abusefilter-examine-test-button": "Проверить фильтр",
+ "abusefilter-examine-match": "Это изменение подпадает под фильтр.",
+ "abusefilter-examine-nomatch": "Это изменение не подпадает под фильтр.",
+ "abusefilter-examine-syntaxerror": "Синтаксическая ошибка в фильтре",
+ "abusefilter-examine-notfound": "Указанное вами изменение не может быть найдено.",
+ "abusefilter-examine-incompatible": "Указанное вами изменение не поддерживается фильтром злоупотреблений",
+ "abusefilter-examine-noresults": "Ничего не найдено по запросу с заданными параметрами.",
+ "abusefilter-topnav": "'''Навигация по Фильтру злоупотреблений'''",
+ "abusefilter-topnav-home": "В начало",
+ "abusefilter-topnav-test": "Пакетное тестирование",
+ "abusefilter-topnav-examine": "Изучение последних правок",
+ "abusefilter-topnav-log": "Журнал злоупотреблений",
+ "abusefilter-topnav-tools": "Средства отладки",
+ "abusefilter-topnav-import": "Импорт фильтра",
+ "abusefilter-log-name": "Журнал фильтра злоупотреблений",
+ "abusefilter-log-header": "В этот журнал записываются описания изменений, произведённых в фильтрах.\nПодробности можно найти в [[Special:AbuseFilter/history|списке]] последних изменений фильтров.",
+ "abusefilter-logentry-create": "$1 {{GENDER:$2|создано}} $4 ($5)",
+ "abusefilter-logentry-modify": "$1 {{GENDER:$2|изменил|изменила}} $4 ($5)",
+ "abusefilter-log-noresults": "Ничего не найдено",
+ "abusefilter-diff-title": "Различия между версиями",
+ "abusefilter-diff-item": "Элемент",
+ "abusefilter-diff-version": "Версия {{GENDER:$3|участника|участницы}} $2 от $1",
+ "abusefilter-diff-info": "Основные сведения",
+ "abusefilter-diff-pattern": "Условия фильтрации",
+ "abusefilter-diff-invalid": "Не удаётся получить запрошенные версии",
+ "abusefilter-diff-backhistory": "Вернуться к истории фильтра",
+ "abusefilter-diff-prev": "Предыдущая правка",
+ "abusefilter-diff-next": "Следующая правка",
+ "abusefilter-import-intro": "Вы можете использовать этот интерфейс для импорта фильтров из других вики.\nВ исходной вики, нажмите «{{int:abusefilter-edit-export}}» в разделе «{{int:abusefilter-edit-tools}}» интерфейса редактирования.\nСкопируйте содержание текстового поля, вставьте его на эту страницу и нажмите «{{int:abusefilter-import-submit}}».",
+ "abusefilter-import-submit": "Импортировать данные",
+ "abusefilter-group-default": "По умолчанию",
+ "abusefilter-http-error": "Произошла ошибка HTTP: $1.",
+ "abusefilter-view-private-submit": "Просмотр личные данные",
+ "abusefilter-view-private": "Просмотр личные данные",
+ "abusefilter-view-private-reason": "Причина доступа к личные данные:",
+ "abusefilter-log-details-id": "ID журнала",
+ "abusefilter-invalid-request": "Неверный запрос! Вы должны получить доступ к частным данным журнала через форму на [[Special:AbuseLog/$1]] и обеспечить причину.",
+ "abusefilter-invalid-request-noid": "Неверный запрос! Вы должны получить доступ к частным данным журнала через форму на странице сведений о журнале злоупотреблений и указать причину.",
+ "log-description-abusefilterprivatedetails": "В этом журнале отображается список случаев, когда пользователь просматривал личные данные журнала злоупотреблений.",
+ "abusefilter-noreason": "Предупреждение. Чтобы просмотреть личные данные этого журнала, вы должны указать причину.",
+ "abusefilter-log-ip-not-available": "Не доступно",
+ "tag-abusefilter-condition-limit": "предел условия достигнут",
+ "tag-abusefilter-condition-limit-description": "Редактирование или другие события, которые не могут быть проверены всеми активными [[Special:AbuseFilter|злоупотребления фильтров]] ([[mw:Extension:AbuseFilter/Conditions|help]]).",
+ "apihelp-abusefiltercheckmatch-description": "Проверка, удовлетворяет ли фильтру злоупотреблений набор переменных или событие фильтра злоупотреблений, записанное редактором.\n\nПеременные vars, rcid и logid обязательны, однако только одна из них может быть использована.",
+ "apihelp-abusefiltercheckmatch-summary": "Проверка, удовлетворяет ли фильтру злоупотреблений набор переменных или событие фильтра злоупотреблений, записанное редактором.",
+ "apihelp-abusefiltercheckmatch-extended-description": "Переменные vars, rcid и logid обязательны, однако только одна из них может быть использована.",
+ "apihelp-abusefiltercheckmatch-param-filter": "Полный текст фильтра для проверки совпадения.",
+ "apihelp-abusefiltercheckmatch-param-vars": "Массив проверяемых переменных, закодированный в JSON.",
+ "apihelp-abusefiltercheckmatch-param-rcid": "Идентификатор проверяемого недавнего изменения.",
+ "apihelp-abusefiltercheckmatch-param-logid": "Идентификатор проверяемой записи в логе злоупотреблений.",
+ "apihelp-abusefiltercheckmatch-example-1": "Проверить, удовлетворяет ли недавнее изменение с идентификатором 15 простому фильтру",
+ "apihelp-abusefilterchecksyntax-description": "Проверка синтаксиса фильтра злоупотреблений.",
+ "apihelp-abusefilterchecksyntax-summary": "Проверка синтаксиса фильтра злоупотреблений.",
+ "apihelp-abusefilterchecksyntax-param-filter": "Полный текст фильтра для проверки синтаксиса.",
+ "apihelp-abusefilterchecksyntax-example-1": "Проверить синтаксис корректного фильтра",
+ "apihelp-abusefilterchecksyntax-example-2": "Проверить синтаксис некорректного фильтра",
+ "apihelp-abusefilterevalexpression-description": "Вычисление выражения фильтра злоупотреблений",
+ "apihelp-abusefilterevalexpression-summary": "Вычисление выражения фильтра злоупотреблений",
+ "apihelp-abusefilterevalexpression-param-expression": "Вычисляемое выражение.",
+ "apihelp-abusefilterevalexpression-example-1": "Вычислить простое выражение",
+ "apihelp-abusefilterunblockautopromote-description": "Разблокировка получаемого автоповышения участника вследствие фильтра злоупотреблений.",
+ "apihelp-abusefilterunblockautopromote-summary": "Разблокировка получаемого автоповышения участника вследствие фильтра злоупотреблений.",
+ "apihelp-abusefilterunblockautopromote-param-user": "Логин разблокируемого участника.",
+ "apihelp-abusefilterunblockautopromote-example-1": "Удаление блока с автоповышения [[User:Example]]",
+ "apihelp-query+abusefilters-description": "Отображение подробностей фильтров злоупотреблений",
+ "apihelp-query+abusefilters-summary": "Отображение подробностей фильтров злоупотреблений",
+ "apihelp-query+abusefilters-param-startid": "Идентификатор фильтра, с которого начать перечисление.",
+ "apihelp-query+abusefilters-param-endid": "Идентификатор фильтра, на котором закончить перечисление.",
+ "apihelp-query+abusefilters-param-show": "Показывать только фильтры, которые отвечают этим критериям.",
+ "apihelp-query+abusefilters-param-limit": "Максимальное число фильтров в списке.",
+ "apihelp-query+abusefilters-param-prop": "Какие свойства необходимо получить.",
+ "apihelp-query+abusefilters-example-1": "Список включённых публичных фильтров",
+ "apihelp-query+abusefilters-example-2": "Показать дополнительную информацию о фильтрах",
+ "apihelp-query+abuselog-description": "Отображение событий, на которых сработал один из фильтров злоупотреблений.",
+ "apihelp-query+abuselog-summary": "Отображение событий, на которых сработал один из фильтров злоупотреблений.",
+ "apihelp-query+abuselog-param-start": "Временная метка, с которой начать перечисление.",
+ "apihelp-query+abuselog-param-end": "Временная метка, на которой закончить перечисление.",
+ "apihelp-query+abuselog-param-user": "Показать только записи, связанные с данным участником или IP-адресом.",
+ "apihelp-query+abuselog-param-title": "Показать только записи, связанные с данной страницей.",
+ "apihelp-query+abuselog-param-filter": "Показать только записи, связанные с фильтром с данным идентификатором.",
+ "apihelp-query+abuselog-param-limit": "Максимальное количество записей в списке.",
+ "apihelp-query+abuselog-param-prop": "Какие свойства необходимо получить.",
+ "apihelp-query+abuselog-param-wiki": "Вики, чтобы показывать хиты.",
+ "apihelp-query+abuselog-example-1": "Показать последние записи в журнале",
+ "apihelp-query+abuselog-example-2": "Показать последние записи в журнале [[API]]",
+ "apierror-abusefilter-canttest": "У вас недостаточно прав для проверки фильтров злоупотреблений.",
+ "apierror-abusefilter-cantcheck": "У вас недостаточно прав для проверки синтаксиса фильтра злоупотреблений.",
+ "apierror-abusefilter-nosuchlogid": "Не существует записи в журнале злоупотреблений с идентификатором $1.",
+ "apierror-abusefilter-badsyntax": "Синтаксическая ошибка в фильтре."
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/rue.json b/www/wiki/extensions/AbuseFilter/i18n/rue.json
new file mode 100644
index 00000000..51026061
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/rue.json
@@ -0,0 +1,379 @@
+{
+ "@metadata": {
+ "authors": [
+ "Dim Grits",
+ "Gazeb",
+ "Matma Rex"
+ ]
+ },
+ "abusefilter-desc": "Придавать автоматічны геврістікы до едітовань",
+ "abusefilter": "Конфіґурація філтрів знеужываня",
+ "abuselog": "Запис знеужываня",
+ "abusefilter-intro": "Вітайте у інтерфейсї керованя філтрів зловжываня.\nФілтер зловжываня є автоматічный софтверовый механізм, через котрого ся вшыткы операції тестують за помочі автоматічных еврістік.\nВ тім інтерфейсї можете видїти список дефінованых філтрів і мінити їх.",
+ "abusefilter-mustbeeditor": "З беспечностных причін, лем хоснователї з правами зміны філтрів можуть хосновати тот інтерфейс.",
+ "abusefilter-warning": "'''Позірь:''' Тота дїя была автоматічно ідентіфікована як шкодлива.\nНеконштруктівны едітованя будуть швыдко ревертованы, в&nbsp;повторяный або заважных припадах може быти ваше конто хоснователя ці IP-адреса заблокованы.\nКідь тримете свою дїю за правилну, можете єй підтвердити кликнутём на Уложыти зміны.\nКуртый опис правила, котре вашу дїю означіло за шкодливу : $1",
+ "abusefilter-disallowed": "Тота дїя была автоматічно означена як шкодлива,\nі зато заборонена.\nКідь вірите, же ваше едітованя є конштруктівне, просиме контактуйте адміністратора і дайте му знати, што сьте хотїли зробити.\nКороткый опис правила, котре вашу дїю означіло за шкодливу: $1",
+ "abusefilter-blocked-display": "Тота дїя была автоматічно означена як шкодлива,\nі зато была заборонена.\nОкрім того про охорону проєкту {{SITENAME}} было вашому конту хоснователя і з ним звязанін IP-адресї зоблоковане едітованя.\nКідь собі думате, же ся їднать о хыбу, контактуйте адміністратора.\nКороткый опис правила, котре ваші дїю означіло за шкодливу: $1",
+ "abusefilter-degrouped": "Тота дїя была означена як шкодлива.\nЗато была заказана про подозрїня з огрожіня вашого конта хоснователя вам были одобраты вшыткы права.\nКідь собі думате, же ся їднать о хыбу, контактуйте бірократа з пояснїнём той дїї і права вам можуть быти вернуты.\nКороткый опис правила, котре вашу дїю означіло за шкодливу: $1",
+ "abusefilter-autopromote-blocked": "Тота дїя была автоматічно ідентіфікована як шкодліва і прото была заказана.\nЯк безпечностне опатрїня были навеце вашому конту дочасно одобраны дакотры права звычайно придїлёваны вшыткым реґістрованым хоснователям.\nКороткый опис правила, котре вашу дїю означіло за шкодливу: $1",
+ "abusefilter-blocker": "Філтер знеужываня",
+ "abusefilter-blockreason": "Автоматічно заблоковане філтром знеужываня.\nПопис хоснованого правила: $1",
+ "abusefilter-degroupreason": "Права автоматічно одобраны філтром знеужываня.\nПопис правила: $1",
+ "abusefilter-accountreserved": "Тото мено хоснователя є резервоване про філтер знеужываня.",
+ "right-abusefilter-modify": "Управованя філтрів знеужываня",
+ "right-abusefilter-view": "Перегляд філтрів знеужываня",
+ "right-abusefilter-log": "Перезераня протоколу знеужываня",
+ "right-abusefilter-log-detail": "Перегляд детайлів в протоколї знеужываня",
+ "right-abusefilter-private": "Перегляд пріватных дат в протоколї знеужываня",
+ "right-abusefilter-modify-restricted": "Зміна філтрів з обмеджуючімя дїями",
+ "right-abusefilter-revert": "Ревертованя вшыткых змін зробленых філтром едітовань",
+ "right-abusefilter-view-private": "Перезераня філтрів знеужытя означеный як пріватны",
+ "right-abusefilter-log-private": "Перегляд записів журналу зловжывань, позначеных як пріватны",
+ "right-abusefilter-hide-log": "Схованя записів в протоколї знеужытя",
+ "right-abusefilter-hidden-log": "Перегляд схованых заисів в протоколї знеужываня",
+ "action-abusefilter-modify": "управовати філтры знеужываня",
+ "action-abusefilter-view": "перезерати філтры знеужываня",
+ "action-abusefilter-log": "перезерати протоколу знеужываня",
+ "action-abusefilter-log-detail": "перезерати детайлы в протоколї знеужываня",
+ "action-abusefilter-private": "перезерати пріватны дата в протоколї знеужываня",
+ "action-abusefilter-modify-restricted": "мінити філтры знеужываня з обмеджуючімя дїями",
+ "action-abusefilter-revert": "ревертовати вшыткы зміны зроблены філтром едітовань",
+ "action-abusefilter-view-private": "перезерати філтрів знеужытя означеный як пріватны",
+ "abusefilter-log": "Протокол філтра знеужываня",
+ "abusefilter-log-summary": "Тот протокол обсягує список вшыткых дїй захопленых філтрами",
+ "abusefilter-log-search": "Глядати в записї знеужытя",
+ "abusefilter-log-search-user": "Хоснователь:",
+ "abusefilter-log-search-filter": "ІД філтра:",
+ "abusefilter-log-search-title": "Назва:",
+ "abusefilter-log-search-wiki": "Вікі:",
+ "abusefilter-log-search-submit": "Глядати",
+ "abusefilter-log-entry": "$1: $2 {{GENDER:$2|спустив|спустила|спустилиl}} філтер знеужываня почас дїї „$3“ на $4.\nЗрроблены опатрїня: $5;\nПопис філтра: $6",
+ "abusefilter-log-detailedentry-meta": "$1: $2 {{GENDER:$2|спустив|спустила|спустилиl}} $3 почас дїї „$4“ на $5.\nЗрроблены опатрїня: $6;\nПопис філтра: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "ґлобалный філтер $1",
+ "abusefilter-log-detailedentry-local": "філтер $1",
+ "abusefilter-log-detailslink": "детайлы",
+ "abusefilter-log-diff": "різн.",
+ "abusefilter-log-hidelink": "управити видительность",
+ "abusefilter-log-details-legend": "Детайлы запису $1",
+ "abusefilter-log-details-var": "Перемінна",
+ "abusefilter-log-details-val": "Значіня",
+ "abusefilter-log-details-vars": "Параметры дїї",
+ "abusefilter-log-details-private": "Пріватны дата",
+ "abusefilter-log-details-ip": "Жрідлова IP-адреса",
+ "abusefilter-log-noactions": "жадна",
+ "abusefilter-log-details-diff": "Зміны, зроблены при едітованю",
+ "abusefilter-log-linkoncontribs": "протокол знеужываня",
+ "abusefilter-log-linkoncontribs-text": "Протокол знеужытя про того хоснователя",
+ "abusefilter-log-hidden": "(схованый запис)",
+ "abusefilter-log-hidden-implicit": "(сховане, бо верзія была вылучена)",
+ "abusefilter-log-cannot-see-details": "Вы не мате дозволїня на перегляд детайлів того запису.",
+ "abusefilter-log-details-hidden": "У того запису сі не можете посмотрити детайлы, бо были схованы перед публічном приступом.",
+ "abusefilter-log-hide-legend": "Сховати запис протоколу",
+ "abusefilter-log-hide-id": "ID запису:",
+ "abusefilter-log-hide-hidden": "Сховати тот запис перед публічным приступом",
+ "abusefilter-log-hide-reason": "Причіна:",
+ "abusefilter-log-hide-forbidden": "Не маєте права про схованя записів в протоколї знеужытя",
+ "abusefilter-logentry-suppress": "сховати [[$1]]",
+ "abusefilter-logentry-unsuppress": "указати [[$1]]",
+ "logentry-abusefilter-hit": "$1 {{#gender:$1|выкликав|выкликала}} спрацовованя $4, выконуючі дїю \"$5\" на $3. Учінены крокы: $6 ($7)",
+ "abusefilter-management": "Управлїня філтром едітовань",
+ "abusefilter-list": "Вшыткы філтры",
+ "abusefilter-list-id": "ІД філтра",
+ "abusefilter-list-status": "Статус",
+ "abusefilter-list-public": "Публічный опис",
+ "abusefilter-list-consequences": "Наслїдкы",
+ "abusefilter-list-visibility": "Видительность",
+ "abusefilter-list-hitcount": "Почет засягів",
+ "abusefilter-list-edit": "Едітовати",
+ "abusefilter-list-details": "Детайлы",
+ "abusefilter-list-limit": "Почет на сторінку:",
+ "abusefilter-list-lastmodified": "Послїдня зміна",
+ "abusefilter-list-group": "Ґрупа філтра",
+ "abusefilter-hidden": "Пріватный",
+ "abusefilter-unhidden": "Публічный",
+ "abusefilter-enabled": "Запнутый",
+ "abusefilter-deleted": "Змазаный",
+ "abusefilter-disabled": "Выпнутый",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|засяг|засягы|засягів}}",
+ "abusefilter-new": "Створити новый філтер",
+ "abusefilter-return": "Вернути ся на адміністрацію філтрів",
+ "abusefilter-status-global": "Ґлобалный",
+ "abusefilter-list-options": "Можности",
+ "abusefilter-list-options-deleted": "Змазаны філтры:",
+ "abusefilter-list-options-deleted-only": "Указати лем змазаны філтры",
+ "abusefilter-list-options-deleted-hide": "Сховати змазаны філтры",
+ "abusefilter-list-options-deleted-show": "Указати і змазаны філтры",
+ "abusefilter-list-options-scope": "Вказати філтры почінаючі з:",
+ "abusefilter-list-options-scope-local": "Локална вікі",
+ "abusefilter-list-options-scope-global": "Ґлобалны правила",
+ "abusefilter-list-options-disabled": "Выпнуты філтры:",
+ "abusefilter-list-options-hidedisabled": "Сховати выпнуты філтры",
+ "abusefilter-list-options-submit": "Обновити",
+ "abusefilter-tools-text": "Ту суть уведены дакотры інштрументы, котры ся можуть придати про прираву і штелёваня філтрів знеужываня.",
+ "abusefilter-tools-expr": "Тестованя выразів",
+ "abusefilter-tools-submitexpr": "Опробовати",
+ "abusefilter-tools-reautoconfirm": "Обновити статус схваленого хоснователя",
+ "abusefilter-tools-reautoconfirm-user": "Хоснователь:",
+ "abusefilter-tools-reautoconfirm-submit": "Обновити схвалїня",
+ "abusefilter-reautoconfirm-none": "{{GENDER:$1|Тому хоснователёві|Той хосновательцї|Тому хоснователёві}} не быв статус схваленого хоснователя одобраный.",
+ "abusefilter-reautoconfirm-notallowed": "Не маєте права обнововати статус схваленого хоснователя.",
+ "abusefilter-reautoconfirm-done": "Статус схваленого хоснователя быв обновленый",
+ "abusefilter-status": "{{PLURAL:$1|Почас послїднёй дїї|З подлїднїх $2 дїй}} {{PLURAL:$2|досягла|досягли|досягло}} $2 ($3 %) ліміт $4 подмінок і $5 ($6 %) {{PLURAL:$5|была захоплена|были захпоплены|было захоплено}} єдным із запнутых філтрів.",
+ "abusefilter-edit-subtitle": "Едітованя філтру $1",
+ "abusefilter-edit-subtitle-new": "Створїня філтра",
+ "abusefilter-edit-oldwarning": "<strong>Едітуєте старшу верзію того філтру. Уведены штатістікы платять про актуалну верзію. Кідь уложыте свої зміны, перепишете новшы управы.</strong> &bull; [[Special:AbuseFilter/history/$2|Вернути ся на історію того філтру]].",
+ "abusefilter-edit-status-label": "Штатістіка:",
+ "abusefilter-edit-status": "Z {{PLURAL:$1|1 послїдня дїя|послїднїх $1 дїй}} тому філтру {{PLURAL:$2|одповідала|одповідали|одповідало}} $2 ($3 %).",
+ "abusefilter-edit-status-profile": "Z {{PLURAL:$1|1 послїдня дїя|послїднїх $1 дїй}} тому філтру {{PLURAL:$2|одповідала|одповідали|одповідало}} $2 ($3 %).\nСередня доба біжаня філтру є $4 мс, філтер потребує $5 з доволеного чісла подмінок.",
+ "abusefilter-edit-new": "Новый філтер",
+ "abusefilter-edit-save": "Уложыти філтер",
+ "abusefilter-edit-id": "ІД філтра:",
+ "abusefilter-edit-description": "Попис:\n:''(публічный) ''",
+ "abusefilter-edit-group": "Ґрупа філтра:",
+ "abusefilter-edit-flags": "Прапоркы:",
+ "abusefilter-edit-enabled": "Запнути тот філтер",
+ "abusefilter-edit-deleted": "Позначіти як змазаный",
+ "abusefilter-edit-hidden": "Сховати детайлы того філтру перед публічностёв",
+ "abusefilter-edit-global": "Ґлобалный філтер",
+ "abusefilter-edit-rules": "Условія:",
+ "abusefilter-edit-notes": "Позначкы:\n:''(пріватны)''",
+ "abusefilter-edit-lastmod": "Послїдня зміна філтру:",
+ "abusefilter-edit-lastmod-text": "$1 в $2",
+ "abusefilter-edit-hitcount": "Засягы філтру:",
+ "abusefilter-edit-consequences": "Опатрїня выконаны при сповнїню подмінок",
+ "abusefilter-edit-action-warn": "Перед выконанём того опатрїня перше хоснователя варовати",
+ "abusefilter-edit-action-disallow": "Заборонити хоснователёві выконати дїю",
+ "abusefilter-edit-action-blockautopromote": "Одобрати хоснователёві статус \"схваленый\"",
+ "abusefilter-edit-action-degroup": "Одстранити хоснователя із вшыткых прівілеґованых ґруп",
+ "abusefilter-edit-action-block": "Заблоковати хоснователя або IP адресу",
+ "abusefilter-edit-action-throttle": "Выконати опатрїня лем кідь є перевышена доволена меджа",
+ "abusefilter-edit-action-rangeblock": "Блоковати россяг /16, з якого працує хоснователь",
+ "abusefilter-edit-action-tag": "Позначіти едітованя про далшу перевірку",
+ "abusefilter-edit-throttle-count": "Чісло доволеных дїй:",
+ "abusefilter-edit-throttle-period": "Часовый інтервал:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|секунда|секунды|секунд}}",
+ "abusefilter-edit-throttle-groups": "Ліміты раховати оддїлено про:\n:\"(каждый рядок єден ліміт, ґрупы оддїлюйте комами)\"",
+ "abusefilter-edit-warn-message": "Сістемне повідомлїня зображене як варованя:",
+ "abusefilter-edit-warn-other": "Іншы повідомлїня",
+ "abusefilter-edit-warn-other-label": "Назва сторінкы іншого повідомлїня:\n:''(без префіксу MediaWiki)''",
+ "abusefilter-edit-warn-actions": "Дїї:",
+ "abusefilter-edit-warn-preview": "Зобразити нагляд выбраного повідомлїня",
+ "abusefilter-edit-warn-edit": "Створити/едітовати выбране повідомлїня",
+ "abusefilter-edit-tag-tag": "Придати значкы (єдна на рядок):",
+ "abusefilter-edit-denied": "У того філтру сі не можете посмотрити детайлы, бо были схованы перед публічном приступом.",
+ "abusefilter-edit-main": "Параметры філтра",
+ "abusefilter-edit-done-subtitle": "Філтер зміненый",
+ "abusefilter-edit-done": "Успішно сьте {{GENDER:|уложыв|уложыла|уложыли}} зміны філтру $1.",
+ "abusefilter-edit-badsyntax": "Заданый філтер обсягує сінтаксічну хыбу. Выступ з парсеру: <pre>$1</pre>",
+ "abusefilter-edit-restricted": "Не маєте права едітовати тот філтер, бо обсягує єдно або веце опатрїнь з обмедженым приступом.\nПожадайте хоснователя з правами придавати такы опатрїня, абы потребну зміну выконав намісто вас.",
+ "abusefilter-edit-viewhistory": "Указати історію того філтру",
+ "abusefilter-edit-history": "Історія:",
+ "abusefilter-edit-check": "Перевірити сінтаксіс",
+ "abusefilter-edit-badfilter": "Зазначеный філтер не єствує.",
+ "abusefilter-edit-revert": "Вернути дїї выконаны з тым філтром",
+ "abusefilter-edit-tools": "Інштрументы:",
+ "abusefilter-edit-test-link": "Перевірити тот філтер на послїднїх змінах",
+ "abusefilter-edit-export": "Експортовати тот філтер до іншой вікі",
+ "abusefilter-edit-syntaxok": "Не найджены жадны сінтаксічны хыбы.",
+ "abusefilter-edit-syntaxerr": "Найджена сінтаксічна хыба: $1",
+ "abusefilter-edit-bad-tags": "Принайменшім єдна з вказаных значок є неправилна.\nЗначкы бы мали быти курты і не сміють обсяговати жадны шпеціалны сімболы.",
+ "abusefilter-edit-notallowed": "Не маєте права створёвати або едітовати філтры знеужываня",
+ "abusefilter-edit-builder-select": "Выберте положку, буде придана на місце курзору",
+ "abusefilter-edit-builder-group-op-arithmetic": "Аріфметічны оператеры",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Придаваня (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Одніманя (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Множіня (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Дїліня (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Модуло (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Ступінь (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Операторы порівнаня",
+ "abusefilter-edit-builder-op-comparison-equal": "Рівне (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Не рівне (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "Менше (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Векше (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Менше або рівне (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Векше або рівне (>=)",
+ "abusefilter-edit-builder-group-op-bool": "Лоґічны операторы",
+ "abusefilter-edit-builder-op-bool-not": "Не (!)",
+ "abusefilter-edit-builder-op-bool-and": "І (&)",
+ "abusefilter-edit-builder-op-bool-or": "Або (|)",
+ "abusefilter-edit-builder-group-misc": "Різны",
+ "abusefilter-edit-builder-misc-in": "Обсягнутый в ланцї (in)",
+ "abusefilter-edit-builder-misc-like": "Одповідать взору (like)",
+ "abusefilter-edit-builder-misc-rlike": "Одповідать реґуларному выразу (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "Одповідать реґуларному выразу без урахованя великости букв (irlike)",
+ "abusefilter-edit-builder-misc-contains": "Ланц впрао є обсягнутый в ланцї влїво (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "Текст (\"\")",
+ "abusefilter-edit-builder-misc-tern": "Тернарный оператор (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "Условія (if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "Функції",
+ "abusefilter-edit-builder-funcs-length": "Довжка рядка (length)",
+ "abusefilter-edit-builder-funcs-lcase": "У нижнїй реґістер (lcase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "Нормалізація неєднозначных сімболів (ccnorm)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "Одстранити здвоєны сімболы (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "Шпеціалны сімболы / цалково сімболів (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "Нормалізація (norm)",
+ "abusefilter-edit-builder-funcs-count": "Кілько раз ся обявує ланц X у ланцї Y (count)",
+ "abusefilter-edit-builder-funcs-rcount": "Кілько раз ся реґуларны выраз X обявує у ланцї Y (rcount)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "Вылучіти білы знакы (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "Вылучіти шпеціалны знакы (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "Належыть IP адреса до россягу? (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "Гляданя веце підланців в ланцї (contains_any)",
+ "abusefilter-edit-builder-funcs-substr": "Підланц (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "Позіція підланца в ланцї (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "Нагородити підланц іншым ланцом (str_replace)",
+ "abusefilter-edit-builder-funcs-rescape": "Ескаповати ланц як літерал до реґуларного выражіня (rescape)",
+ "abusefilter-edit-builder-funcs-set_var": "Становити перемінну (set_var)",
+ "abusefilter-edit-builder-group-vars": "Перемінны",
+ "abusefilter-edit-builder-vars-accountname": "Імя конта (при створїню нового конта)",
+ "abusefilter-edit-builder-vars-timestamp": "Час едітованя в уніксовім форматї",
+ "abusefilter-edit-builder-vars-action": "Дїя",
+ "abusefilter-edit-builder-vars-addedlines": "Рядкы приданы почас едітованя",
+ "abusefilter-edit-builder-vars-delta": "Зміна розміру способена едітованём",
+ "abusefilter-edit-builder-vars-diff": "Уніфікована різниця змін зробленых едітованями",
+ "abusefilter-edit-builder-vars-newsize": "Новый розмір сторінкы",
+ "abusefilter-edit-builder-vars-oldsize": "Старый розмір сторінкы",
+ "abusefilter-edit-builder-vars-removedlines": "Рядкы вылучены почас едітованя",
+ "abusefilter-edit-builder-vars-summary": "Опис/причіна едітованя",
+ "abusefilter-edit-builder-vars-article-id": "ID сторінкы",
+ "abusefilter-edit-builder-vars-article-ns": "Простор назв сторінкы",
+ "abusefilter-edit-builder-vars-article-text": "Назва сторінкы (без простору назв)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Повна назва сторінкы",
+ "abusefilter-edit-builder-vars-movedfrom-id": "ID переменованой сторінкы",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "Простор назв сторінкы што ся переменовавать",
+ "abusefilter-edit-builder-vars-movedfrom-text": "Назва переменованой жрідловой сторінкы",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "Повна назва переменованой жрідловой сторінкы",
+ "abusefilter-edit-builder-vars-movedto-id": "Ідентіфікатор цілёвой сторінкы переменованя",
+ "abusefilter-edit-builder-vars-movedto-ns": "Простор нязв до котрого ся пересувать",
+ "abusefilter-edit-builder-vars-movedto-text": "Назва цілёвой сторінкы переменованя",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "Повна назва цілёвой сторінкы переменованя",
+ "abusefilter-edit-builder-vars-user-editcount": "Чісло едітовань хоснователя",
+ "abusefilter-edit-builder-vars-user-age": "Вік хосновательского конта",
+ "abusefilter-edit-builder-vars-user-name": "Імя конта хоснователя",
+ "abusefilter-edit-builder-vars-user-groups": "Ґрупы (включаючі імпліцітных), до котрых хоснователь належыть",
+ "abusefilter-edit-builder-vars-user-blocked": "Ці хоснователь є заблокованый",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "Час підтверджіня адресы ел. пошты",
+ "abusefilter-edit-builder-vars-recent-contributors": "Остатнїх десять хоснователїв, котры едітовали сторінку",
+ "abusefilter-edit-builder-vars-all-links": "Вшыткы екстеры одказы в новім текстї",
+ "abusefilter-edit-builder-vars-added-links": "Вшыткы екстерны одказы приданы почас едітованя",
+ "abusefilter-edit-builder-vars-removed-links": "Вшыткы екстерны одказы одстранены почас едітованя",
+ "abusefilter-edit-builder-vars-old-text": "Старый вікітекст, перед едітованым сторінкы",
+ "abusefilter-edit-builder-vars-new-text": "Новый вікітекст, по едітованю сторінкы",
+ "abusefilter-edit-builder-vars-new-text-stripped": "Новый текст сторінкы очіщеный од форматованя",
+ "abusefilter-edit-builder-vars-new-html": "Выґенерованый HTML код новой верзії",
+ "abusefilter-edit-builder-vars-restrictions-edit": "Рівень замкнутя сторінкы про едітованя",
+ "abusefilter-edit-builder-vars-restrictions-move": "Рівень замкнутя сторінкы про переменованя",
+ "abusefilter-edit-builder-vars-restrictions-create": "Створити замок той сторінкы",
+ "abusefilter-edit-builder-vars-restrictions-upload": "Уровень замку про наладованя файлу",
+ "abusefilter-edit-builder-vars-old-text-stripped": "Старый текст сторінкы очіщеный од вшыткых значок",
+ "abusefilter-edit-builder-vars-old-links": "Одказы на сторінцї перед едітованём",
+ "abusefilter-edit-builder-vars-old-html": "Вікітекст старой сторінкы, перетвореный до HTML",
+ "abusefilter-edit-builder-vars-minor-edit": "Ці было едітованя означене як мале",
+ "abusefilter-edit-builder-vars-file-sha1": "SHA-1 геш обсягу файлу",
+ "abusefilter-filter-log": "Новы зміны філтрів",
+ "abusefilter-history": "Історія змін філтра едітовань #$1",
+ "abusefilter-history-foruser": "Зміны, зроблены $1",
+ "abusefilter-history-hidden": "Схованый",
+ "abusefilter-history-enabled": "Запнутый",
+ "abusefilter-history-global": "Ґлобалный",
+ "abusefilter-history-timestamp": "Час",
+ "abusefilter-history-user": "Хоснователь",
+ "abusefilter-history-public": "Публічный попис файлу",
+ "abusefilter-history-flags": "Прапоркы",
+ "abusefilter-history-filter": "Правила філтру",
+ "abusefilter-history-comments": "Коментарї",
+ "abusefilter-history-actions": "Дїї",
+ "abusefilter-history-backedit": "Назад на едітованя філтру",
+ "abusefilter-history-deleted": "Змазано",
+ "abusefilter-history-filterid": "Філтер",
+ "abusefilter-history-select-legend": "Уточнити гляданя",
+ "abusefilter-history-select-user": "Хоснователь:",
+ "abusefilter-history-select-submit": "Уточнити",
+ "abusefilter-history-diff": "Зміны",
+ "abusefilter-history-error-hidden": "Пожадованый філтер є схованый, также собі ёго історію перезерати не можете.",
+ "abusefilter-exception-unexpectedatend": "На позіції $1 не было чекане „$2“.",
+ "abusefilter-exception-expectednotfound": "На позіцїї $1 было чекане $2, але не было найджене (намісто того ся нашло $3 „$4“).",
+ "abusefilter-exception-unrecognisedkeyword": "Незнаме ключове слово $2 на позіції $1.",
+ "abusefilter-exception-unexpectedtoken": "Неочекаваный елемент „$3“ (тіп $2) на позіції $1.",
+ "abusefilter-exception-unclosedstring": "Ланц зачінаючій на позіції $1 не є укінченый.",
+ "abusefilter-exception-invalidoperator": "Неплатный оператор „$2“ на позіції $1.",
+ "abusefilter-exception-unrecognisedtoken": "Незнамый елемент „$2“ на позіції $1.",
+ "abusefilter-exception-noparams": "Функція „$2“ на позіції $1 потребує параметры.",
+ "abusefilter-exception-dividebyzero": "Неплатна проба о дїліня чісла $2 нулов на позіції $1.",
+ "abusefilter-exception-unrecognisedvar": "Незнама перемінна $2 на позіції $1",
+ "abusefilter-exception-notenoughargs": "Недостаток параметрів почас кликаня функції $2 на позіції $1. {{PLURAL:$3|Очекаваный 1 параметер|Очекаваны $3 параметры|Очекаваных $3 параметрів}}, кликаня хоснує $4.",
+ "abusefilter-exception-regexfailure": "Хыба в речуларнім выразї „$3“ на позіції $1: „$2“",
+ "abusefilter-exception-overridebuiltin": "Недоволене передефінованя перемінной „$2“ на позіції $1.",
+ "abusefilter-exception-outofbounds": "На позіції $1 пожадована неєствуюча $2. положка списку (розмір списку = $3).",
+ "abusefilter-exception-notlist": "На позіції $1 пожадованый елемент поля про перемінны, котры не суть поле.",
+ "abusefilter-action-tag": "Значка",
+ "abusefilter-action-throttle": "Обмеджіня",
+ "abusefilter-action-warn": "Варованя",
+ "abusefilter-action-blockautopromote": "Блокованя автоматічного підтверджіня",
+ "abusefilter-action-block": "Блокованя",
+ "abusefilter-action-degroup": "Одобераня з ґрупы",
+ "abusefilter-action-rangeblock": "Блокованя россягу",
+ "abusefilter-action-disallow": "Заказ",
+ "abusefilter-revert-title": "Вернути вшыткы дїї выконаны філтром $1",
+ "abusefilter-revert-intro": "За помочі того формуларя можете вернути вшыткы зміны, котры філтер знеужываня выконав на базї філтру $1.\nПочас хоснованя того інштрумену мерькуйте.",
+ "abusefilter-revert-preview-item": "$1: $2 {{GENDER:$2|выконовав|выконовала|выконовав}} „$3“ на $4.\nДїї, котры ся мають вернути: $5 ($6)",
+ "abusefilter-revert-search-legend": "Выберте дїї філтру знеужываня, котры ся мають вернути",
+ "abusefilter-revert-periodstart": "Початок періоду:",
+ "abusefilter-revert-periodend": "Закінчіня періоду:",
+ "abusefilter-revert-search": "Выбер дїй",
+ "abusefilter-revert-filter": "Філтер:",
+ "abusefilter-revert-preview-intro": "Ниже сурь уведены дїї выконаны філтром знеужываня, котры тов дїёв будуть навернуты.\nСтаростливо їх перевірте і клікнутём на \"підтвердити\" можете їх навернутя схвалити.",
+ "abusefilter-revert-confirm": "Підтвердити",
+ "abusefilter-revert-success": "{{GRAMMAR:|Вернув|Вернула|Вернули}} сьте вшыткы дїї, котры філтер знеужываня выконав на базї [[Special:AbuseFilter/$1|філтру $2]].",
+ "abusefilter-revert-reason": "Автоматічне вернутя вшыткых змін, котры філтер знеужытя выконав про філтер $1.\nДана причіня: $2",
+ "abusefilter-revert-reasonfield": "Прічіна:",
+ "abusefilter-test": "Перевірити філтер на послїднїх змінах",
+ "abusefilter-test-intro": "На тій сторінцї можете отестовати філтер, котрый задате до едіточного поля ниже, на {{PLURAL:$1|послїднїй змінї|послїднїх $1 змінах}}.\nУж /ствуючій філтер можете хосновати так, же ёго ідентіфікатор напичете до рамику під едітачным полём і клікнете на клапку „Начітати“.",
+ "abusefilter-test-legend": "Перевірка філтру",
+ "abusefilter-test-load-filter": "Начітати філтер з ID:",
+ "abusefilter-test-submit": "Перевірити",
+ "abusefilter-test-load": "Начітати",
+ "abusefilter-test-user": "Зміны хоснователя:",
+ "abusefilter-test-period-start": "Зміны зроблены по:",
+ "abusefilter-test-period-end": "Зміны зроблены до:",
+ "abusefilter-test-page": "Зміны на сторінцї:",
+ "abusefilter-test-shownegative": "Указати зміны, котры не пасують про філтер",
+ "abusefilter-test-syntaxerr": "Уведженый філтер обсягує сінтаксічну хыну.\nДетайлнїше пояснїня можете здобыти клікнутём на клапку „Перевірити сінтаксіс“.",
+ "abusefilter-changeslist-examine": "проскумати",
+ "abusefilter-examine": "Проскумати єднотвливы зміны",
+ "abusefilter-examine-intro": "На тій сторінцї будете мочі у зволеного едітованя проскумати перемінны, котры про них Філтер знеужываня выґенеровав, і отестовати на ній філтры.",
+ "abusefilter-examine-legend": "Выбер змін",
+ "abusefilter-examine-diff": "URL роздїлу:",
+ "abusefilter-examine-user": "Хоснователь:",
+ "abusefilter-examine-title": "Назва сторінкы:",
+ "abusefilter-examine-submit": "Глядати",
+ "abusefilter-examine-vars": "Перемінны выґенерованы про тоту зміну",
+ "abusefilter-examine-test": "Перевірити тоту зміну на філтрї",
+ "abusefilter-examine-test-button": "Опробовати філтер",
+ "abusefilter-examine-match": "Тот філтер бы тоту зміну захопив.",
+ "abusefilter-examine-nomatch": "Тот філтер бы тоту зміну не захопив.",
+ "abusefilter-examine-syntaxerror": "Філтер має неправилну сінтаксіс",
+ "abusefilter-examine-notfound": "Вамы жадана зміна не была найджена.",
+ "abusefilter-examine-incompatible": "Вами пожадовану зміну філтер знеужываня не підпорує",
+ "abusefilter-examine-noresults": "Подля заданых параметрів не были найджены жадны резултаты.",
+ "abusefilter-topnav": "'''Навіґація по філтрї знеужываня'''",
+ "abusefilter-topnav-home": "Домів",
+ "abusefilter-topnav-test": "Масове тестованя",
+ "abusefilter-topnav-examine": "Перевірити минулы едітованя",
+ "abusefilter-topnav-log": "Лоґ знеужываня",
+ "abusefilter-topnav-tools": "Інштрументы ладжіня",
+ "abusefilter-topnav-import": "Імпорт філтру",
+ "abusefilter-log-name": "Лоґ філтра знеужываня",
+ "abusefilter-log-header": "Тот лоґ обсягує перегляд змін філтрів.\nДетайлы найдете у [[Special:AbuseFilter/history|списки послїднїх змін філтрів]].",
+ "abusefilter-log-noresults": "Жадны ресултаты",
+ "abusefilter-diff-title": "Різниця міджі верзіями",
+ "abusefilter-diff-item": "Елемент",
+ "abusefilter-diff-version": "Верзія {{GENDER:$3|од}} $1, $2",
+ "abusefilter-diff-info": "Основны інформації",
+ "abusefilter-diff-pattern": "Подмінкы філтрів",
+ "abusefilter-diff-invalid": "Не подарило ся обтримати пожадовны верзії",
+ "abusefilter-diff-backhistory": "Назад на історію філтру",
+ "abusefilter-import-intro": "За помочі того інтерфейсу можете імпортовати філтры з іншых вікі.\nНа жрідловій вікі клікните в інтерфейсї едітованя на „{{int:abusefilter-edit-export}}“ в секції „{{int:abusefilter-edit-tools}}“.\nЗкопіруйте текст, котрый ся укаже в рамику, вложте го до того формуларя і клікните на „{{int:abusefilter-import-submit}}“.",
+ "abusefilter-import-submit": "Імпортовати дата",
+ "abusefilter-group-default": "Штандардна"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/sa.json b/www/wiki/extensions/AbuseFilter/i18n/sa.json
new file mode 100644
index 00000000..dced187d
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/sa.json
@@ -0,0 +1,189 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ansumang",
+ "Hemant wikikosh1",
+ "Shubha",
+ "NehalDaveND"
+ ]
+ },
+ "abuselog": "दुरुपयुक्तम् अङ्कनम्",
+ "abusefilter-blocker": "दुरुपयुक्तं शोधकम्",
+ "abusefilter-blockreason": "दुरुपयोगनिःस्यन्दकद्वारा स्वतः एव निरोधितम्।\nसङ्गतस्य नियमस्य वर्णनम्:$1",
+ "abusefilter-accountreserved": "दुरुपयुक्तस्य शोधकस्य कृते उपयोगाय इदं सदस्यनाम आरक्षितं वर्तते ।",
+ "right-abusefilter-modify": "दुरुपयुक्तानि शोधकानि संशोध्यन्ताम्",
+ "right-abusefilter-view": "दुरुपयुक्तानि शोधकानि दृश्यन्ताम्",
+ "right-abusefilter-log": "दुरुपयुक्तम् अङ्कनं दृश्यताम्",
+ "right-abusefilter-private": "दुरुपयुक्ते अङ्कने वैयक्तिकः दत्तांशः दृश्यताम्",
+ "right-abusefilter-modify-restricted": "निर्बन्धक्रियानां द्वारा दुरुपयुक्ताः शोधकाः परिवर्त्यन्ताम्",
+ "right-abusefilter-revert": "निर्दिष्टेन दुरुपयुक्तेन शोधकेन सर्वाणि पूर्वतनानि परिवर्तनानि आनीयन्ताम्",
+ "action-abusefilter-modify": "दुरुपयुक्तानि शोधकानि संशोध्यन्ताम्",
+ "action-abusefilter-view": "दुरुपयुक्तानि शोधकानि दृश्यन्ताम्",
+ "action-abusefilter-log": "दुरुपयुक्तम् अङ्कनं दृश्यताम्",
+ "abusefilter-log-search-user": "सदस्यः",
+ "abusefilter-log-search-filter": "शोधकस्य अभिज्ञापकम् :",
+ "abusefilter-log-search-title": "शीर्षकम् :",
+ "abusefilter-log-search-wiki": "विकि :",
+ "abusefilter-log-search-submit": "अन्वेषणम्",
+ "abusefilter-log-detailedentry-global": "वैश्विकनिःस्यन्दकम् $1",
+ "abusefilter-log-detailedentry-local": "$1 शोधकः",
+ "abusefilter-log-detailslink": "विवरणम्",
+ "abusefilter-log-diff": "भेदः",
+ "abusefilter-log-hidelink": "दृश्यतायाः समञ्जनं क्रियताम्",
+ "abusefilter-log-details-legend": "$1 इति लघुकप्रविष्टये(log entry) विवरणम्",
+ "abusefilter-log-details-var": "भङ्गुरम्",
+ "abusefilter-log-details-val": "मूल्यम्",
+ "abusefilter-log-details-vars": "कार्यस्य परिमितिः",
+ "abusefilter-log-details-private": "वैयक्तिकः दत्तांशः",
+ "abusefilter-log-noactions": "नास्ति",
+ "abusefilter-log-details-diff": "सम्पादने कृतानि परिवर्तनानि",
+ "abusefilter-log-linkoncontribs": "दुरुपयुक्तम् अङ्कनम्",
+ "abusefilter-log-linkoncontribs-text": "अस्य सदस्यस्य दुरुपयुक्तम् अङ्कनम्",
+ "abusefilter-log-hidden": "(प्रवेशः विलोपितः)",
+ "abusefilter-log-cannot-see-details": "अस्य विवरणं ज्ञातुं भवतः अनुमतिः न विद्यते ।",
+ "abusefilter-log-details-hidden": "अस्य विवरणानि भवान् द्रष्टुं नार्हति यतः इदं सार्वजनिकवीक्षणात् गुहितम् ।",
+ "abusefilter-log-hide-hidden": "सार्वजनिकदर्शनात् अयं प्रवेशः विलोप्यताम्",
+ "abusefilter-log-hide-reason": "कारणम् :",
+ "abusefilter-logentry-suppress": "\"[[$1]]\" विलोप्यताम्",
+ "abusefilter-logentry-unsuppress": "\"[[$1]]\" न विलोप्यताम्",
+ "abusefilter-management": "दुरुपयुक्तशोधकस्य प्रबन्धनम्",
+ "abusefilter-list": "सर्वे शोधकाः",
+ "abusefilter-list-id": "शोधकस्य अभिज्ञापकम् :",
+ "abusefilter-list-status": "स्थितिः",
+ "abusefilter-list-public": "सार्वजनिकं वर्णनम्",
+ "abusefilter-list-consequences": "परिणामाः",
+ "abusefilter-list-visibility": "दृश्यता",
+ "abusefilter-list-hitcount": "सम्पादनानां सङ्ख्या",
+ "abusefilter-list-edit": "सम्पाद्यताम्",
+ "abusefilter-list-details": "विवरणम्",
+ "abusefilter-list-limit": "प्रतिपृष्ठं संख्या:",
+ "abusefilter-list-lastmodified": "अन्तिमं परिवर्तनम्",
+ "abusefilter-list-group": "शोधकगणः",
+ "abusefilter-hidden": "एकान्ते",
+ "abusefilter-unhidden": "सार्वजनिकम्",
+ "abusefilter-enabled": "सक्षमः कृतः",
+ "abusefilter-deleted": "अपाकृतम्",
+ "abusefilter-disabled": "निष्क्रियः",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|सम्पादनम्|सम्पादनानि}}",
+ "abusefilter-new": "नूतनः शोधकः सृज्यताम्",
+ "abusefilter-return": "शोधकप्रबन्धनं प्रति निवर्त्यताम्",
+ "abusefilter-status-global": "वैश्विकम्",
+ "abusefilter-list-options": "विकल्पाः",
+ "abusefilter-list-options-deleted": "विलुप्ताः शोधकाः :",
+ "abusefilter-list-options-deleted-only": "निष्कासिताः शोधकाः एव दर्श्यन्ताम्",
+ "abusefilter-list-options-deleted-hide": "निष्कासितशोधकाः विलोप्यन्ताम्",
+ "abusefilter-list-options-deleted-show": "निष्कासिताः शोधकाः योज्यन्ताम्",
+ "abusefilter-list-options-scope-local": "स्थानीयविकि",
+ "abusefilter-list-options-scope-global": "जागतिकनियमाः",
+ "abusefilter-list-options-disabled": "कृताक्षमाः शोधकाः :",
+ "abusefilter-list-options-hidedisabled": "कृतनिष्क्रियाः शोधकाः विलोप्यन्ताम्",
+ "abusefilter-list-options-submit": "नवीक्रियताम्",
+ "abusefilter-tools-text": "दुरुपयुक्त-शोधिकानां दोषनिरूपणे निर्माणे च उपयुक्तानि कानिचन उपकरणानि अत्र विद्यन्ते ।",
+ "abusefilter-tools-expr": "अभिव्यक्तेः परीक्षकाः",
+ "abusefilter-tools-submitexpr": "मौल्यमापनं क्रियताम्",
+ "abusefilter-tools-reautoconfirm": "स्वनिर्णीतं स्थानं रक्ष्यताम्",
+ "abusefilter-tools-reautoconfirm-user": "सदस्यः",
+ "abusefilter-edit-subtitle-new": "शोधकनिर्माणम्",
+ "abusefilter-edit-status-label": "साङ्ख्यिकी :",
+ "abusefilter-edit-new": "नूतनाः शोधकाः",
+ "abusefilter-edit-save": "शोधकं संरक्षतु ।",
+ "abusefilter-edit-id": "शोधकस्य अभिज्ञापकम् :",
+ "abusefilter-edit-description": "विवरणम्:\n:''(सार्वजनिकवीक्षणाय)''",
+ "abusefilter-edit-group": "शोधकगणः :",
+ "abusefilter-edit-flags": "ध्वजाः :",
+ "abusefilter-edit-enabled": "इमं शोधकं सक्षमं क्रियताम्",
+ "abusefilter-edit-deleted": "निष्कासितम् इति अङ्क्यताम्",
+ "abusefilter-edit-hidden": "अस्य विवरणानि सार्वजनिकवीक्षणात् निगूह्यताम्",
+ "abusefilter-edit-rules": "नियमाः :",
+ "abusefilter-edit-notes": "टिप्पणी :",
+ "abusefilter-edit-lastmod-text": "$2 द्वारा $1 इत्यस्य",
+ "abusefilter-edit-throttle-period": "कालावधिः:",
+ "abusefilter-edit-warn-actions": "क्रियाः :",
+ "abusefilter-edit-history": "इतिहासः :",
+ "abusefilter-edit-tools": "उपकरणानि:",
+ "abusefilter-edit-builder-group-op-arithmetic": "अङ्कगणितकारकम्",
+ "abusefilter-edit-builder-op-arithmetic-addition": "सङ्कलनम् (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "व्यवकलनम् (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "गुणनम् (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "भाजनम् (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "भागस्य शेषः (%)",
+ "abusefilter-edit-builder-group-op-comparison": "तोलनकारकम्",
+ "abusefilter-edit-builder-group-op-bool": "बूलियन्कारकम्",
+ "abusefilter-edit-builder-op-bool-not": "नहि (!)",
+ "abusefilter-edit-builder-op-bool-and": "तथा (&)",
+ "abusefilter-edit-builder-op-bool-or": "अथवा (|)",
+ "abusefilter-edit-builder-group-misc": "अन्यानि",
+ "abusefilter-edit-builder-group-vars": "भङ्गुरम्",
+ "abusefilter-edit-builder-vars-accountname": "लेखायाः नाम (लेखनिर्माणावसरे)",
+ "abusefilter-edit-builder-vars-action": "क्रिया",
+ "abusefilter-edit-builder-vars-delta": "सम्पादनस्य आकारपरिवर्तनम्",
+ "abusefilter-edit-builder-vars-newsize": "नूतनस्य पृष्ठस्य आकारः",
+ "abusefilter-edit-builder-vars-oldsize": "पुरानपृष्ठस्य आकारः",
+ "abusefilter-edit-builder-vars-removedlines": "सम्पादने निष्कासिताः पङ्क्तयः",
+ "abusefilter-edit-builder-vars-summary": "सम्पादनस्य सारांशः/कारणम्",
+ "abusefilter-edit-builder-vars-article-id": "पृष्ठाभिज्ञापकम्",
+ "abusefilter-edit-builder-vars-article-text": "पृष्ठस्य शीर्षकम् (नामावकाशं विना)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "पूर्णपृष्ठस्य शीर्षकम्",
+ "abusefilter-edit-builder-vars-user-editcount": "सदस्यस्य सम्पादनानां गणना",
+ "abusefilter-edit-builder-vars-user-age": "योजकलेखायाः आयुः",
+ "abusefilter-edit-builder-vars-user-name": "योजकलेखायाः नाम",
+ "abusefilter-edit-builder-vars-recent-contributors": "पृष्ठस्य अन्तिमाः दश योगदानिनः",
+ "abusefilter-edit-builder-vars-all-links": "नूतनपाठे सर्वे बाह्यानुबन्धाः",
+ "abusefilter-edit-builder-vars-added-links": "सम्पादने योजिताः सर्वे बाह्यानुबन्धाः",
+ "abusefilter-edit-builder-vars-removed-links": "सम्पादने निष्कासिताः बाह्यानुबन्धाः",
+ "abusefilter-filter-log": "सद्यःकालीनानि शोधकपरिवर्तनानि",
+ "abusefilter-history": "#$1 दुरुपयुक्तशोधकस्य परिवर्तनेतिहासः",
+ "abusefilter-history-foruser": "$1 द्वारा परिवर्तनानि",
+ "abusefilter-history-hidden": "गोपितम्",
+ "abusefilter-history-enabled": "सक्षमः कृतः",
+ "abusefilter-history-global": "वैश्विकम्",
+ "abusefilter-history-timestamp": "समयः",
+ "abusefilter-history-user": "सदस्यः",
+ "abusefilter-history-public": "सार्वजनिकशोधकस्य वर्णनम्",
+ "abusefilter-history-flags": "ध्वजाः",
+ "abusefilter-history-filter": "शोधकनियमः",
+ "abusefilter-history-comments": "टिप्पण्यः",
+ "abusefilter-history-actions": "क्रियाः",
+ "abusefilter-history-backedit": "शोधकसम्पादकं प्रति निवर्तनम्",
+ "abusefilter-history-deleted": "निष्कासितम्",
+ "abusefilter-history-filterid": "शोधनी",
+ "abusefilter-history-select-legend": "परिष्कृतम् अन्वेषणम्",
+ "abusefilter-history-select-user": "सदस्यः",
+ "abusefilter-history-select-submit": "परिष्कृत",
+ "abusefilter-history-diff": "परिवर्तनानि",
+ "abusefilter-history-error-hidden": "भवता अपेक्षिता शोधनी विलुप्ता, अतः इतिहासं द्रष्टुं न अर्हति ।",
+ "abusefilter-action-tag": "अङ्कनम्",
+ "abusefilter-action-warn": "प्रबोधः",
+ "abusefilter-action-block": "अवरोधः",
+ "abusefilter-action-degroup": "समूहेभ्यः निष्कासयतु ।",
+ "abusefilter-revert-filter": "शोधनी :",
+ "abusefilter-revert-confirm": "दृढीकरोतु",
+ "abusefilter-revert-reasonfield": "कारणम् :",
+ "abusefilter-test-submit": "परीक्षणम्",
+ "abusefilter-test-load": "आरोपणम्",
+ "abusefilter-test-page": "पृष्ठे कृतानि परिवर्तनानि :",
+ "abusefilter-test-shownegative": "शोधन्या संयोक्तुम् अशक्यानि परिवर्तनानि दर्श्यन्ताम्",
+ "abusefilter-changeslist-examine": "परीक्षणम्",
+ "abusefilter-examine": "वैयक्तिकपरिवर्तनानि परिशील्यन्ताम्",
+ "abusefilter-examine-legend": "चितानि परिवर्तनानि",
+ "abusefilter-examine-diff": "भिन्नः सार्वसङ्केतः :",
+ "abusefilter-examine-user": "सदस्यः",
+ "abusefilter-examine-title": "पृष्ठशीर्षकम्:",
+ "abusefilter-examine-submit": "अन्वेषणम्",
+ "abusefilter-examine-test-button": "परीक्षकशोधिनी",
+ "abusefilter-topnav-home": "गृहम्",
+ "abusefilter-topnav-test": "समूहपरीक्षणम्",
+ "abusefilter-topnav-examine": "पूर्वतनसम्पादनानि परीक्ष्यन्ताम्",
+ "abusefilter-topnav-log": "दुरुपयुक्तम् अङ्कनम्",
+ "abusefilter-topnav-import": "शोधकायातः",
+ "abusefilter-log-name": "दुरुपयुक्तशोधकस्य वृत्तम्",
+ "abusefilter-log-noresults": "फलितानि न सन्ति",
+ "abusefilter-diff-title": "संस्करणानां भेदाः",
+ "abusefilter-diff-item": "वस्तु",
+ "abusefilter-diff-info": "मूलसूचनाः ।",
+ "abusefilter-diff-pattern": "शोधकस्य स्थितिः",
+ "abusefilter-diff-invalid": "अपेक्षितसंस्करणानां प्राप्तिः अशक्या",
+ "abusefilter-diff-backhistory": "शोधकेतिहासं प्रति निवर्तनम्",
+ "abusefilter-import-submit": "दत्तांशायातः",
+ "abusefilter-group-default": "यदभावे"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/sah.json b/www/wiki/extensions/AbuseFilter/i18n/sah.json
new file mode 100644
index 00000000..6e72cd2f
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/sah.json
@@ -0,0 +1,377 @@
+{
+ "@metadata": {
+ "authors": [
+ "HalanTul",
+ "Matma Rex"
+ ]
+ },
+ "abusefilter-desc": "Көннөрүүлэргэ эвристика сиидэлэрин (фильтрдарын) туһанарга туттуллар",
+ "abusefilter": "Аһара түһүү фильтрын туоруоруута",
+ "abuselog": "Аһара түһүү (злоупотребление) сурунаала",
+ "abusefilter-intro": "Омсо сиидэтин сирэйигэр нөрүөн нөргүй.\nОмсо сиидэтэ кыттааччылар уларытыыларын аптамаатынан хамсатар устуука буолар.\nМанна туруоруллубут сиидэлэр бары көстөллөр, уларытыахха сөп.",
+ "abusefilter-mustbeeditor": "Бу интерфейсы куттал суох буолуутун сиэринэн омсо сиидэлэрин эрэ уларытар кыахтаах кыттааччылар уларытыахтарын сөп.",
+ "abusefilter-warning": "'''Болҕой''': Бу дьайыыҥ аптамаатынан омсолоох курдук бэлиэтэммит.\nТуһата суох көннөрүүлэриҥ түргэнник сотуллуохтара,\nоннук көннөрүүҥ бөдөҥ эбэтэр хаста да оҥоһуллубут буоллаҕына аатыҥ эбэтэр IP-аадырыҥ хааччахтаныа.\nОл эрээри, туһалаах дьайыыны оҥороргун эрэнэр буоллаххына, өссө биирдэ ыытар эбэтэр бигэргэтэр тимэҕи баттаа.\nЭн оҥорбут дьайыыгын кытта ситимнэммит сиэр кылгас ис хоһооно: $1",
+ "abusefilter-disallowed": "Бу дьайыы апатамаатынан омсолоох курдук бэлиэтэммит,\nонон бобуллубут.\nОл гынан баран, туһалаах көннөрүүнү оҥордум диэн эрэнэр буоллаххына, дьаһабылга тахсан тугу гынаары гынаргын кэпсээ.\nЭн оҥорбут дьайыыгын кытта ситимнэммит аһара түһүү кылгас ис хоһооно: $1",
+ "abusefilter-blocked-display": "Бу дьайыы апатамаатынан омсолоох курдук бэлиэтэммит,\nонон оҥороруҥ бобуллубут.\nОну таһынан {{SITENAME}} бырайыагы көмүскүүр соруктаах эн аатыҥ уонна IP-иҥ хааччахтаннылар.\nОл гынан баран, маны сыыһа дьаһал диир буоллаххына дьаһабылга таҕыс.\nЭн оҥорбут дьайыыгын кытта ситимнэммит аһара түһүү кылгас ис хоһооно: $1",
+ "abusefilter-degrouped": "Бу дьайыы апатамаатынан омсолоох курдук бэлиэтэммит,\nонон оҥороруҥ бобуллубут, аатыҥ бөрүкүтэ суох дьон тиһиктэригэр киирбит, туох баар бырааптара уһуллубут.\nОл гынан баран, маны сыыһа дьаһал диир буоллаххына дьаһабылга таҕыс, тоҕо маннык оҥорбуккун кэпсээ, оччоҕо быраабыҥ хат бэриллиэ.\nЭн оҥорбут дьайыыгын кытта ситимнэммит аһара түһүү кылгас ис хоһооно: $1",
+ "abusefilter-autopromote-blocked": "Бу дьайыы апатамаатынан омсолоох курдук бэлиэтэммит, онон бобуллубут.\nОну таһынан бырайыагы көмүскүүр соруктаах эн ааккыттан сорох бэлиэммит аакка бэриллэр эбии бырааптар сотуллубуттар.\nЭн оҥорбут дьайыыгын кытта ситимнэммит аһара түһүү кылгас ис хоһооно: $1",
+ "abusefilter-blocker": "Омсолоох дьайыы фильтра",
+ "abusefilter-blockreason": "Омсолоох дьайыы фильтра аптамаатынан хааччахтаабыт.\nСөп түбэһэр сиэр-туом маннык: $1",
+ "abusefilter-degroupreason": "Омсолоох туһаныыны хааччахтыыр фильтр бырааптаргын аптамаатынан былдьаабыт.\nСиэр-туом маннык: $1",
+ "abusefilter-accountreserved": "Бу аат омсолоох туһаныыны хааччахтыыр фильтр аатыгар бэриллэ сылдьар.",
+ "right-abusefilter-modify": "Омсо фильтрын уларытыы",
+ "right-abusefilter-view": "Омсо сиидэлэрин көрүү",
+ "right-abusefilter-log": "Омсолоох дьайыылар сурунаалларын көрүү",
+ "right-abusefilter-log-detail": "Омсолоох дьайыылар сурунаалларын сиһилии көрүү",
+ "right-abusefilter-private": "Омсолоох дьайыылар сурунаалларыгар кистэнэр тус сибидиэнньэлэри көрүү",
+ "right-abusefilter-modify-restricted": "Хааччахтыыр сиидэлэри уларытыы",
+ "right-abusefilter-revert": "Омсо сиидэтэ оҥорбут уларытыытын төннөр",
+ "right-abusefilter-view-private": "Кистэммит омсо сиидэлэрин көрүү",
+ "right-abusefilter-log-private": "Омсо сиидэтин тус суруктарын көрүү",
+ "right-abusefilter-hide-log": "омсо сурунаалын сорох суруктарын кистээһин",
+ "right-abusefilter-hidden-log": "омсо сурунаалын кистэммит суруктарын көрүү",
+ "right-abusefilter-modify-global": "аан сиидэлэри оҥоруу эбэтэр уларытыы",
+ "action-abusefilter-modify": "омсо сиидэтин уларытыы",
+ "action-abusefilter-view": "омсо сиидэтин көрүү",
+ "action-abusefilter-log": "омсо сиидэтин сурунаалын көрүү",
+ "action-abusefilter-log-detail": "омсо сиидэтин сурунаалын ымпыктаан-чымпыктаан көрүү",
+ "action-abusefilter-private": "омсо сиидэтин сурунаалыгар тус дааннайдары көрүү",
+ "action-abusefilter-modify-restricted": "бобор/хааччахтыыр сиидэлэри уларытыы",
+ "action-abusefilter-revert": "бу сиидэ уларытыыларын барытын оннугар төннөрүү",
+ "action-abusefilter-view-private": "кистэммит омсо сиидэлэрин көрүү",
+ "abusefilter-log": "Омсо сиидэтин сурунаала",
+ "abusefilter-log-summary": "Бу сурунаалга сиидэлэр булбут дьайыылара барыта көрдөрүлүннэ.",
+ "abusefilter-log-search": "Омсо сурунаалыгар көрдөөһүн",
+ "abusefilter-log-search-user": "Кыттааччы:",
+ "abusefilter-log-search-filter": "Сиидэ нүөмэрэ (туруору сурааһынынан араарыллыбыт):",
+ "abusefilter-log-search-title": "Баһа:",
+ "abusefilter-log-search-wiki": "Биики:",
+ "abusefilter-log-search-submit": "Бул",
+ "abusefilter-log-entry": "$1: киниттэн сылтаан - $2 - омсо сиидэтэ үлэлээбит, «$3» дьайыыны $4 сирэйгэ оҥорбут.\nОҥоһуллубут дьайыылар: $5.\nСиидэ туһунан: $6",
+ "abusefilter-log-detailedentry-meta": "$1: $2 кыттааччыттан сылтаан $3 үлэлээбит, «$4» дьайыыны $5 сирэйгэ оҥорбут.\nОҥоһуллубут дьайыылар: $6.\nСиидэ туһунан: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "аан (глобальнай) сиидэ $1",
+ "abusefilter-log-detailedentry-local": "$1 сиидэ",
+ "abusefilter-log-detailslink": "сиһилии",
+ "abusefilter-log-diff": "улар.",
+ "abusefilter-log-hidelink": "көрдөрүү туруоруулара",
+ "abusefilter-log-details-legend": "$1 сурунаал суруга сиһилии",
+ "abusefilter-log-details-var": "Уларыйар кэриҥ (переменная)",
+ "abusefilter-log-details-val": "Суолтата",
+ "abusefilter-log-details-vars": "Дьайыы кээмэйдэрэ",
+ "abusefilter-log-details-private": "Кистэлэҥ билии (данные)",
+ "abusefilter-log-details-ip": "Таска тахсар IP",
+ "abusefilter-log-noactions": "суох",
+ "abusefilter-log-details-diff": "Уларытыы уратылара",
+ "abusefilter-log-linkoncontribs": "омсо сурунаала",
+ "abusefilter-log-linkoncontribs-text": "Омсо сурунаалын бу кыттааччыга сыһыаннаах суруктара",
+ "abusefilter-log-hidden": "(сурук кистэннэ)",
+ "abusefilter-log-hidden-implicit": "(көннөрүү сотуллубут буолан кистэммит)",
+ "abusefilter-log-cannot-see-details": "Бу сурук туһунан сиһилии көрөр кыаҕыҥ суох эбит.",
+ "abusefilter-log-details-hidden": "Бу суругу, кистэммит буолан, сиһилии көрөр кыах суох.",
+ "abusefilter-log-hide-legend": "Сурунаал суругун кистээһин",
+ "abusefilter-log-hide-id": "Сурунаал суругун ID-та:",
+ "abusefilter-log-hide-hidden": "Бу суругу аһаҕастык көрүүттэн кистээ",
+ "abusefilter-log-hide-reason": "Төрүөтэ:",
+ "abusefilter-log-hide-forbidden": "Омсо сурунаалын суруктарын кистиир быраабыҥ суох эбит.",
+ "abusefilter-logentry-suppress": "маны кистээ [[$1]]",
+ "abusefilter-logentry-unsuppress": "көстөр гын [[$1]]",
+ "abusefilter-management": "Омсо сиидэтин салайыы",
+ "abusefilter-list": "Бары сиидэлэр",
+ "abusefilter-list-id": "Сиидэ нүөмэрэ",
+ "abusefilter-list-status": "Туруга",
+ "abusefilter-list-public": "Бу туһунан дьон барыта көрөрүгэр маннык суруллубут",
+ "abusefilter-list-consequences": "Содуллара",
+ "abusefilter-list-visibility": "Көстүүтэ",
+ "abusefilter-list-hitcount": "Үлэлээһинэ",
+ "abusefilter-list-edit": "Уларыт",
+ "abusefilter-list-details": "Сиһилии",
+ "abusefilter-list-limit": "Сирэйгэ ахсаана:",
+ "abusefilter-list-lastmodified": "Бүтэһик уларытыы",
+ "abusefilter-list-group": "Сиидэ бөлөҕө",
+ "abusefilter-hidden": "Тус бэйэ гиэнэ",
+ "abusefilter-unhidden": "Аһаҕас",
+ "abusefilter-enabled": "Холбоммут",
+ "abusefilter-deleted": "Сотуллубут",
+ "abusefilter-disabled": "Холбоммотох",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|ахсаан|ахсааннаах}}",
+ "abusefilter-new": "Саҥа сиидэни оҥоруу",
+ "abusefilter-return": "Сиидэни салайыыга төннүү",
+ "abusefilter-status-global": "Аан (глобальнай)",
+ "abusefilter-list-options": "Туруоруулар",
+ "abusefilter-list-options-deleted": "Сотуллубут сиидэлэр:",
+ "abusefilter-list-options-deleted-only": "Сотуллубут эрэ сиидэлэри көрдөр",
+ "abusefilter-list-options-deleted-hide": "Сотуллубут сиидэлэри көрдөрүмэ",
+ "abusefilter-list-options-deleted-show": "Сотуллубут сиидэлэри көрдөр",
+ "abusefilter-list-options-scope": "Сиидэлэри мантан көрдөр:",
+ "abusefilter-list-options-scope-local": "Бу биики",
+ "abusefilter-list-options-scope-global": "Аан сиэр",
+ "abusefilter-list-options-disabled": "Холбоммотох сиидэлэр:",
+ "abusefilter-list-options-hidedisabled": "Холбоммотох сиидэлэри көрдөрүмэ",
+ "abusefilter-list-options-submit": "Саҥарт",
+ "abusefilter-tools-text": "Манна омсо сиидэлэрин туруорууларын уларытарга уонна сөпкө суруйарга аналлаах сэп-сэбиргэл көстөр.",
+ "abusefilter-tools-expr": "Этиини тургутуу",
+ "abusefilter-tools-submitexpr": "Тургутан көр",
+ "abusefilter-tools-reautoconfirm": "«autoconfirmed» туругу төннөр",
+ "abusefilter-tools-reautoconfirm-user": "Кыттааччы:",
+ "abusefilter-tools-reautoconfirm-submit": "Хат бигэргэтии",
+ "abusefilter-reautoconfirm-none": "Бу {{GENDER:$1|эр киһи|дьахтар}} аптамаатынан бигэргэтиитэ араарыллыбатах.",
+ "abusefilter-reautoconfirm-notallowed": "Аптамаатынан бигэргэтиини туруорар кыаҕыҥ суох.",
+ "abusefilter-reautoconfirm-done": "Ааты аптамаатынан бигэргэтии кыаҕа төннөрүлүннэ",
+ "abusefilter-status": "$1 {{PLURAL:$1|бүтэһик дьайыыттан|бүтэһик дьайыылартан}}, $2 ($3%) хааччахтыыр $4 көрдөбүлгэ {{PLURAL:$2|түбэспит|түбэспиттэр}}, оттон $5 ($6%) билигин арахсан турар сиидэҕэ {{PLURAL:$5|сөп түбэһэр|сөп түбэһэллэр}}.",
+ "abusefilter-edit": "Сиидэни уларытыы",
+ "abusefilter-edit-subtitle": "$1 сиидэни уларытыы",
+ "abusefilter-edit-subtitle-new": "Сиидэ оҥоруу",
+ "abusefilter-edit-oldwarning": "<strong>Сиидэ эргэ барылын уларыттыҥ.\nСтатиистика сиидэ бүтэһик эрэр барылыгар олоҕурар.\nОнорбут уларытыыгын бигэргэттэххинэ, урут оҥоһуллубут уларытыллыа.</strong> &bull;\n[[Special:AbuseFilter/history/$2|Сиидэ устуоруйатын сирэйигэр төннүү]].",
+ "abusefilter-edit-status-label": "Статистиката:",
+ "abusefilter-edit-status": "Бүтэһик $1 {{PLURAL:$1|дьайыыттан|дьайыылартан}}, бу сиидэ $2 ($3%) сөп түбэһэр.",
+ "abusefilter-edit-status-profile": "Бүтэһик $1 {{PLURAL:$1|дьайыыттан|дьайыылартан}}, бу сиидэ $2 ($3%) сөп түбэһэр.\nКини үлэтэ ортотунан — $4 мс, усулуобуйа лимиититтэн $5 {{PLURAL:$5|усулуобуйаны|усулуобуйатын}} туттар.",
+ "abusefilter-edit-new": "Саҥа сиидэ",
+ "abusefilter-edit-save": "Сиидэни бигэргэт",
+ "abusefilter-edit-id": "Сиидэ нүөмэрэ:",
+ "abusefilter-edit-description": "Ойуулааһын:\n:''(киһи барыта көрөр)''",
+ "abusefilter-edit-group": "Сиидэ бөлөҕө:",
+ "abusefilter-edit-flags": "Бэлиэлэр:",
+ "abusefilter-edit-enabled": "Бу сиидэни холбоо",
+ "abusefilter-edit-deleted": "Сотуллубут курдук бэлиэтээ",
+ "abusefilter-edit-hidden": "Бу сиидэ туһунан сиһилии сибидиэнньэлэри көннөрү кыттааччылартан кистээ",
+ "abusefilter-edit-global": "Аан сиидэ",
+ "abusefilter-edit-rules": "Көрдөбүллэр:",
+ "abusefilter-edit-notes": "Быһаарыылар:",
+ "abusefilter-edit-lastmod": "Сиидэ бүтэһик уларыйыыта:",
+ "abusefilter-edit-lastmod-text": "$1 — $2",
+ "abusefilter-edit-hitcount": "Сиидэ баччата үлэлээбит:",
+ "abusefilter-edit-consequences": "Ылыллар дьаһаныылар",
+ "abusefilter-edit-action-warn": "Кыттааччыны сэрэтэн баран бу дьаһаллары ылынарга",
+ "abusefilter-edit-action-disallow": "Кыттааччы бу дьайыытын боборго",
+ "abusefilter-edit-action-blockautopromote": "Аптамаатынан бигэргэтэр кыаҕы кыттааччыттан устарга",
+ "abusefilter-edit-action-degroup": "Кыттааччыны туох баар ордук быраабынан туһанар бөлөхтөртөн соторго",
+ "abusefilter-edit-action-block": "Бу кыттааччы уонна/эбэтэр бу IP-ттан киирэр киһи ону маны уларытарын боборго",
+ "abusefilter-edit-action-throttle": "Муҥутуур чэрчини эрэ кэстэҕинэ бу дьарыйыыны оҥорорго",
+ "abusefilter-edit-action-rangeblock": "Кыттааччы интэриниэт ситимигэр киирэр /16 тайааһынын (диапазонун) хааччахтыырга.",
+ "abusefilter-edit-action-tag": "Кэлин бэрэбиэркэлиир курдук бэлиэтээ.",
+ "abusefilter-edit-throttle-count": "Көҥүллэммит дьайыылар ахсааннара:",
+ "abusefilter-edit-throttle-period": "Кэм далааһына:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|сөкүүндэ|сөкүүндэ}}",
+ "abusefilter-edit-throttle-groups": "Бөлөхтөрүнэн ылҕааһын:\n:''(устуруокаҕа биирдии, соппутуойунан араарыы)''",
+ "abusefilter-edit-warn-message": "Тиһилик сэрэтэр биллэриитэ:",
+ "abusefilter-edit-warn-other": "Атын сурук",
+ "abusefilter-edit-warn-other-label": "Атын сурук сирэйин аата:\n:''(MediaWiki диэнэ суох)''",
+ "abusefilter-edit-warn-actions": "Дьайыылар:",
+ "abusefilter-edit-warn-preview": "Талбыт суруккун ыытыах иннинэ көрүү",
+ "abusefilter-edit-warn-edit": "Талбыт суруккун уларытыы/саҥаттан суруйуу",
+ "abusefilter-edit-tag-tag": "Туттуллар бэлиэлэр (устуруокаҕа биирдии):",
+ "abusefilter-edit-denied": "Бу сиидэ туһунан сиһилии көрөр кыаҕыҥ суох, тоҕо диэтэххэ ол көннөрү кыттааччыларга көстүбэт.",
+ "abusefilter-edit-main": "Сиидэ туруоруулара",
+ "abusefilter-edit-done-subtitle": "Сиидэ уларыйда",
+ "abusefilter-edit-done": "[[Special:AbuseFilter/$1|$3 сиидэҕэ]] уларытыы оҥорбутуҥ [[Special:AbuseFilter/history/$1/diff/prev/$2|сөпкө бигэргэтилиннэ]].",
+ "abusefilter-edit-badsyntax": "Ыйыллыбыт сиидэҕэ синтаксис сыыһата булуллубут.\nПарсер бу биллэриини таһаарда: <pre>$1</pre>",
+ "abusefilter-edit-restricted": "Бу сиидэни уларытар кыаҕыҥ суох, тоҕо диэтэххэ биир эбэтэр хас да хааччахтыыр дьайыылаах.\nБука диэн маны уларытар кыахтаах кыттааччыттан сиидэни эйиэхэ анаан уларытарыгар көрдөс.",
+ "abusefilter-edit-viewhistory": "Бу сиидэ устуоруйатын көрдөр",
+ "abusefilter-edit-history": "Устуоруйата:",
+ "abusefilter-edit-check": "Синтаксиһын бэрэбиэкэлээ",
+ "abusefilter-edit-badfilter": "Эн ыйбыт сиидэҥ суох ээ",
+ "abusefilter-edit-revert": "Сиидэ оҥорбутун сотон, чөлүгэр түһэр",
+ "abusefilter-edit-tools": "Сэп-сэбиргэл:",
+ "abusefilter-edit-test-link": "Бу сиидэни саҥа уларытыыларга боруобалыырга",
+ "abusefilter-edit-export": "Бу сиидэни атын биикигэ таһаар",
+ "abusefilter-edit-syntaxok": "Синтаксис алҕастара көстүбэтилэр.",
+ "abusefilter-edit-syntaxerr": "Синтаксис алҕаһа көһүннэ: $1",
+ "abusefilter-edit-bad-tags": "Эн ыйбыт биир эбэтэр хас да бэлиэлэриҥ алҕастаахтар.\nБэлиэ (тег) кылгас буолуохтаах, иһигэр анал бэлиэлэрэ суох буолуохтаах.",
+ "abusefilter-edit-notallowed": "Эн омсо сиидэлэрин оҥорор уонна уларытар көҥүлүҥ суох эбит",
+ "abusefilter-edit-notallowed-global": "Эн омсо аан сиидэлэрин оҥорор уонна уларытар көҥүлүҥ суох эбит",
+ "abusefilter-edit-notallowed-global-custom-msg": "Сэрэтиилэр аан сиидэҕэ туттуллубаттар",
+ "abusefilter-edit-builder-select": "Эбиллэр туруорууну тал",
+ "abusefilter-edit-builder-group-op-arithmetic": "Арифметика бэлиэлэрэ",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Эбии (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Көҕүрэтии (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Төгүл (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Түҥэтии (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Муодул (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Истиэпэн (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Тэҥнээһин бэлиэлэрэ",
+ "abusefilter-edit-builder-op-comparison-equal": "Тэҥ (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Тэҥэ суох (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "Кыра (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Улахан (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Кыра эбэтэр тэҥ (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Улахан эбэтэр тэҥ (>=)",
+ "abusefilter-edit-builder-group-op-bool": "Буул (булевские) бэлиэлэрэ",
+ "abusefilter-edit-builder-op-bool-not": "Буолбатах (!)",
+ "abusefilter-edit-builder-op-bool-and": "Уонна (&)",
+ "abusefilter-edit-builder-op-bool-or": "Эбэтэр (|)",
+ "abusefilter-edit-builder-group-misc": "Атын атыттар",
+ "abusefilter-edit-builder-misc-in": "Устуруока иһигэр (in)",
+ "abusefilter-edit-builder-misc-like": "Халыыпка сөп түбэһии (like)",
+ "abusefilter-edit-builder-misc-rlike": "Регулярнай выражение (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "Регулярнай выражениеҕа сөп түбэһии, регистрын учуоттаабакка (irlike)",
+ "abusefilter-edit-builder-misc-contains": "Уҥа устуруока хаҥас устуруока иһигэр киирбит (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "Устуруока выражениета (\"\")",
+ "abusefilter-edit-builder-misc-tern": "Тернар бэлиэтэ (оператор) (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "Усулуобуйа (if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "Функциялар",
+ "abusefilter-edit-builder-funcs-length": "Устуруока уһуна (length)",
+ "abusefilter-edit-builder-funcs-lcase": "Аллараа регистрга (lcase)",
+ "abusefilter-edit-builder-funcs-ucase": "Үөһээ регистрга",
+ "abusefilter-edit-builder-funcs-ccnorm": "Хас да суолталаах бэлиэлэри нуормаҕа киллэрии (ccnorm)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "Хатыланар бэлиэлэри сотооһун (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "Аналлаах бэлиэлэр / бэлиэлэр барыта (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "Нуормаҕа киллэрии (norm)",
+ "abusefilter-edit-builder-funcs-count": "X подстрока Y подстрокааҕа киириитин ахсаана (count)",
+ "abusefilter-edit-builder-funcs-rcount": "X рег. выр. хаста Y устуруокаҕа көстөрө (rcount)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "Аһаҕастары (rmwhitespace) суох гыныы",
+ "abusefilter-edit-builder-funcs-rmspecials": "Анал бэлиэлэри (rmspecials) сотуу",
+ "abusefilter-edit-builder-funcs-ip_in_range": "Диапазоҥҥа IP баар дуо (ip_in_range)?",
+ "abusefilter-edit-builder-funcs-contains-any": "Элбэх субстрокаларга (contains_any) көрдөөһүн",
+ "abusefilter-edit-builder-funcs-substr": "Аллараа устуруока (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "Алын устуруока устуруокаҕа туруута (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "Устуруокаҕа алын устуруоканы уларытыы (str_replace)",
+ "abusefilter-edit-builder-funcs-set_var": "Переменнайы туруоруу (set_var)",
+ "abusefilter-edit-builder-group-vars": "Уларыйар кэриҥнэр",
+ "abusefilter-edit-builder-vars-accountname": "Аат (ханнык эмэ аатынан бэлиэтэнии)",
+ "abusefilter-edit-builder-vars-timestamp": "Уларытыы Unix-кэмэ",
+ "abusefilter-edit-builder-vars-action": "Дьайыы",
+ "abusefilter-edit-builder-vars-addedlines": "Уларытыыга эбиллибит устуруокалар ахсааннара",
+ "abusefilter-edit-builder-vars-delta": "Уларытыы түмүгэр ыйааһын уларыйыыта",
+ "abusefilter-edit-builder-vars-diff": "Уларытыы түмүгэр биирдэһиллибит ураты",
+ "abusefilter-edit-builder-vars-newsize": "Сирэй саҥа кээмэйэ",
+ "abusefilter-edit-builder-vars-oldsize": "Сирэй урукку кээмэйэ",
+ "abusefilter-edit-builder-vars-removedlines": "Уларытыы түмүгэр сотуллубут устуруокалар ахсааннара",
+ "abusefilter-edit-builder-vars-summary": "Быһаарыыны/төрүөтүн көннөр",
+ "abusefilter-edit-builder-vars-article-id": "Сирэй нүөмэрэ",
+ "abusefilter-edit-builder-vars-article-ns": "Сирэй аатын дала",
+ "abusefilter-edit-builder-vars-article-text": "Сирэй аата (аат далыттан ураты)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Сирэй толору аата",
+ "abusefilter-edit-builder-vars-article-views": "Сирэйдэри көрүү",
+ "abusefilter-edit-builder-vars-movedfrom-id": "Аата уларыйар сирэй нүөмэрэ",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "Аата уларыйар сирэй аатын дала",
+ "abusefilter-edit-builder-vars-movedfrom-text": "Аата уларыйар сирэй аата",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "Аата уларыйар сирэй толору аата",
+ "abusefilter-edit-builder-vars-movedto-id": "Аата уларыйбытын кэннэ нүөмэрэ",
+ "abusefilter-edit-builder-vars-movedto-ns": "Аата уларыйбытын кэннэ маннык аат далыгар киирэр",
+ "abusefilter-edit-builder-vars-movedto-text": "Аата уларыйдаҕына маннык буолар",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "Аата уларыйдаҕына толору аата маннык буолар",
+ "abusefilter-edit-builder-vars-user-editcount": "Кыттааччы уларытыытын ахсаана",
+ "abusefilter-edit-builder-vars-user-age": "Бэлиэтэммит \"сааһа\"",
+ "abusefilter-edit-builder-vars-user-name": "Бэлиэтэммит аата",
+ "abusefilter-edit-builder-vars-user-groups": "Кыттааччы киирэр бөлөхтөрө (барыта)",
+ "abusefilter-edit-builder-vars-user-blocked": "Кытааччы хааччахтаммыт дуо",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "Эл. буостатын бигэргэппит кэмэ",
+ "abusefilter-edit-builder-vars-recent-contributors": "Сирэйи уларыппыт бүтэһик биэс дьон",
+ "abusefilter-edit-builder-vars-all-links": "Саҥа тиэкискэ/сурукка тас сигэлэр барыта",
+ "abusefilter-edit-builder-vars-added-links": "Уларытыы түмүгэр эбиллибит тас сигэлэр",
+ "abusefilter-edit-builder-vars-removed-links": "Уларытыы түмүгэр сотуллубут тас сигэлэр",
+ "abusefilter-edit-builder-vars-old-text": "Уларытыах иннинээҕи, эргэ биики тиэкис",
+ "abusefilter-edit-builder-vars-new-text": "Уларыппыт кэннэ, саҥа биики тиэкис",
+ "abusefilter-edit-builder-vars-new-text-stripped": "Анал бэлиэлэрэ (разметката) суох саҥа тиэкис",
+ "abusefilter-edit-builder-vars-new-html": "Саҥа барыл HTML-куода (parsed, разобранный)",
+ "abusefilter-edit-builder-vars-restrictions-edit": "Сирэй уларытыыттан көмүскэлин таһыма",
+ "abusefilter-edit-builder-vars-restrictions-move": "Сирэй аатын уларытыыттан көмүскэлин таһыма",
+ "abusefilter-edit-builder-vars-restrictions-upload": "Билэ хачайданыыттан көмүскэлэ",
+ "abusefilter-edit-builder-vars-old-text-stripped": "Эргэ сирэй тиэкиһэ, анал бэлиэлэрэ (разметката) суох",
+ "abusefilter-edit-builder-vars-old-links": "Көннөрүөх иннинэ сирэйгэ баар сигэлэр",
+ "abusefilter-edit-builder-vars-old-html": "Эргэ сирэй биики тиэкиһэ, HTML-га көһөрүллүбүтэ",
+ "abusefilter-edit-builder-vars-minor-edit": "\"Кыра суолталаах\" уларыйыы курдук бэлиэтэммит дуо",
+ "abusefilter-edit-builder-vars-file-sha1": "Билэ иһинээҕитин SHA1-хэһэ",
+ "abusefilter-filter-log": "Сиидэлэр бүтэһик уларыйыылара",
+ "abusefilter-history": "Бу #$1 омсо сиидэтин уларытыы устуоруйата",
+ "abusefilter-history-foruser": "$1 оҥорбут уларытыылара",
+ "abusefilter-history-hidden": "Кистэммит",
+ "abusefilter-history-enabled": "Холбоммут",
+ "abusefilter-history-global": "Аан",
+ "abusefilter-history-timestamp": "Кэм",
+ "abusefilter-history-user": "Кыттааччы",
+ "abusefilter-history-public": "Сиидэ туһунан кимиэхэ баҕарар көстөр тиэкис",
+ "abusefilter-history-flags": "Бэлиэлэр",
+ "abusefilter-history-filter": "Сиидэ быраабылалара",
+ "abusefilter-history-comments": "Быһаарыылар",
+ "abusefilter-history-actions": "Дьайыылар",
+ "abusefilter-history-backedit": "Сиидэни көннөрүүгэ төннүү",
+ "abusefilter-history-deleted": "Сотулунна",
+ "abusefilter-history-filterid": "Сиидэ",
+ "abusefilter-history-select-legend": "Көрдөөһүнү чуолкайдааһын",
+ "abusefilter-history-select-user": "Кыттааччы:",
+ "abusefilter-history-select-submit": "Чуолкайдааһын",
+ "abusefilter-history-diff": "Уларытыылар",
+ "abusefilter-history-error-hidden": "Көрдөөбүт сиидэҥ сабыылаах, онон кини устуоруйатын көрөр табыллыбат.",
+ "abusefilter-exception-unexpectedatend": "$1 бэлиэҕэ кэтэһиллибэтэх \"$2\".",
+ "abusefilter-exception-expectednotfound": "$1 бэлиэҕэ кэтэһиллибит $2 көстүбэтэх (кини оннугар $3 $4 булуллубут).",
+ "abusefilter-exception-unrecognisedkeyword": "$1 бэлиэҕэ биллибэт $2 күлүүс тыл.",
+ "abusefilter-exception-unexpectedtoken": "\"$3\" биллибэт бэлиэ (көрүҥэ $2) $1 бэлиэҕэ (позицияҕа).",
+ "abusefilter-exception-unclosedstring": "Мантан: $1 саҕаланар устуруока сабыллыбатах этиитэ.",
+ "abusefilter-exception-invalidoperator": "$1 позицияҕа сыыһа \"$2\" бэлиэ турбут.",
+ "abusefilter-exception-unrecognisedtoken": "Кыайан билиниллибэтэх \"$2\" бэлиэ $1 позицияҕа.",
+ "abusefilter-exception-noparams": "\"$2\" функция параметрдара $1 позицияҕа ыйыллыбатахтар.",
+ "abusefilter-exception-dividebyzero": "$1 позицияҕа $2 нуулга түҥэтии оҥоһулла сатаата.",
+ "abusefilter-exception-unrecognisedvar": "$1 позицияҕа биллибэт $2 переменнай",
+ "abusefilter-exception-notenoughargs": "$1 позицияҕа тахсар $2 функция аргуменнара тиийбэттэр.\n$3 {{PLURAL:$3|аргумент кэтэһиллэр|аргуменнаах буолуохтаах}}, $4 {{PLURAL:$4|ылыллыбыт|ылыллынна}}",
+ "abusefilter-exception-regexfailure": "«$3» регулярнай выражение $1 позицияҕа алҕаһа: «$2»",
+ "abusefilter-action-tag": "Бэлиэ (тег)",
+ "abusefilter-action-throttle": "Ылҕааһын (сужение, throttle)",
+ "abusefilter-action-warn": "Сэрэтии",
+ "abusefilter-action-blockautopromote": "Аптамаатынан арбааһыны тохтот",
+ "abusefilter-action-block": "Бобуу",
+ "abusefilter-action-degroup": "Бөлөхтөн сотуу",
+ "abusefilter-action-rangeblock": "Диапазонунан хааччахтааһын",
+ "abusefilter-action-disallow": "Хаадьайыыта",
+ "abusefilter-revert-title": "$1 сиидэ оҥорбут дьайыыларын барытын оннугар төннөр",
+ "abusefilter-revert-intro": "Бу фуорма көмөтүнэн $1 сиидэ оҥорбут дьайыыларын барытын төттөрү оннугар түһэриэххэ сөп.\nБука диэн сэрэнэн туттуҥ.",
+ "abusefilter-revert-preview-item": "$1: $2 оҥорбут $3 манна $4.\nТөннөрүллэр дьайыылар: $5 ($6)",
+ "abusefilter-revert-search-legend": "Сиидэ дьайыыларыттан төннөрүллүөхтээхтэрин талан ыл",
+ "abusefilter-revert-periodstart": "Саҕаланыыта:",
+ "abusefilter-revert-periodend": "Бүтүүтэ:",
+ "abusefilter-revert-search": "Дьайыылары талыы",
+ "abusefilter-revert-filter": "Сиидэ:",
+ "abusefilter-revert-preview-intro": "Аллара омсо сиидэтэ оҥорбут дьайыыларыттан төннөрүллэллэрэ көрдөрүлүннэ.\nБука диэн сыныйан көрөн баран \"{{int:abusefilter-revert-confirm}}\" диэни баттаа.",
+ "abusefilter-revert-confirm": "Бигэргэтии",
+ "abusefilter-revert-success": "[[Special:AbuseFilter/$1|$2 сиидэ]] оҥорбут дьайыыларын барытын көтүрдүҥ.",
+ "abusefilter-revert-reason": "$1 сиидэ оҥорбут дьайыыларын аптамаатынан көтүрүү.\nЫйыллыбыт төрүөтэ: $2",
+ "abusefilter-revert-reasonfield": "Төрүөтэ:",
+ "abusefilter-test": "Урут оҥоһуллубут көннөрүүлэргэ сиидэни тургутуу",
+ "abusefilter-test-intro": "Бу сирэй аллараа түннүккэ киллэриллибит сиидэни бүтэһик {{PLURAL:$1|$1 көннөрүү көмөтүнэн|$1 көннөрүүлэр көмөлөрүнэн}} тургутарга туттуллар.\nБаар сиидэни киллэрэргэ кини нүөмэрин тиэкис түннүгэр (эрэдээксийэ түннүгүн анныгар) суруй уонна \"{{int:abusefilter-test-load}}\" тимэҕи баттаа.",
+ "abusefilter-test-legend": "Сиидэни тургутуу",
+ "abusefilter-test-load-filter": "Маннык нүөмэрдээх сиидэни киллэр:",
+ "abusefilter-test-submit": "Тургутуу",
+ "abusefilter-test-load": "Киллэр",
+ "abusefilter-test-user": "Кыттааччы уларытыылара:",
+ "abusefilter-test-period-start": "Уларытыылар бу кэнниттэн оҥоһуллубуттар:",
+ "abusefilter-test-period-end": "Уларытыылар бу кэнниттэн оҥоһуллубуттар:",
+ "abusefilter-test-page": "Сирэйгэ оҥоһуллубут уларытыылар:",
+ "abusefilter-test-shownegative": "Сиидэҕэ түбэспэт уларытыылары көрдөр",
+ "abusefilter-test-syntaxerr": "Килэрбит сиидэҥ синтаксиска сыыһалаах.\nСиһилии бу туһунан \"{{int:abusefilter-edit-check}}\" тимэҕи баттаатаххына билиэххин сөп.",
+ "abusefilter-changeslist-examine": "көрөргө",
+ "abusefilter-examine": "Биирдиилээн уларытыылары көрүү",
+ "abusefilter-examine-intro": "Бу сирэй көмөтүнэн омсо сиидэтэ оҥорбут барылларын биирдиилээн көрүөххэ сөп уонна олору тургутан көрүөххэ сөп.",
+ "abusefilter-examine-legend": "Уларытыылары талыы",
+ "abusefilter-examine-diff": "Барыллар уратыларын URL-ла:",
+ "abusefilter-examine-user": "Кыттааччы:",
+ "abusefilter-examine-title": "Сирэй баһа:",
+ "abusefilter-examine-submit": "Бул",
+ "abusefilter-examine-vars": "Бу уларытыы уларытыллар кэриҥнэрэ",
+ "abusefilter-examine-test": "Бу уларытыыны сиидэҕэ боруобалаа",
+ "abusefilter-examine-test-button": "Сиидэни тургут",
+ "abusefilter-examine-match": "Бу уларытыы сиидэни ааспат.",
+ "abusefilter-examine-nomatch": "Бу уларытыы сиидэни ааһар.",
+ "abusefilter-examine-syntaxerror": "Сиидэ синтаксыгар сыыһалаах",
+ "abusefilter-examine-notfound": "Эн ыйбыт уларытыыҥ кыайан көстүбэтэ.",
+ "abusefilter-examine-incompatible": "Эн эппит уларытыыгын омсо сиидэтэ өйөөбөт эбит",
+ "abusefilter-examine-noresults": "Бэриллибит көрдөбүллэринэн туох да көстүбэтэ.",
+ "abusefilter-topnav": "'''Омсо сиидэтин навигацията'''",
+ "abusefilter-topnav-home": "Саҕалыытыгар",
+ "abusefilter-topnav-test": "Бакыатынан тургутуу",
+ "abusefilter-topnav-examine": "Бүтэһик улартыылары үөрэтии",
+ "abusefilter-topnav-log": "Омсо сурунаала",
+ "abusefilter-topnav-tools": "Өрөмүөн сэбиргэлэ",
+ "abusefilter-topnav-import": "Сиидэни импортааһын",
+ "abusefilter-log-name": "Омсо сиидэтин сурунаала",
+ "abusefilter-log-header": "Бу сурунаалга туох баар сиидэлэргэ оҥоһуллубут улартыылар суруллаллар.\nСиһилии сиидэлэр кэнники улартыыларын [[Special:AbuseFilter/history|тиһигэр]] көрүөххүн сөп.",
+ "abusefilter-log-noresults": "Туох да көстүбэтэ",
+ "abusefilter-diff-title": "Барыллары тэҥнээн көрүү",
+ "abusefilter-diff-item": "Элэмиэн",
+ "abusefilter-diff-version": "Баччатааҕы $1, $2 барыл",
+ "abusefilter-diff-info": "Сүрүн сибидиэнньэлэр",
+ "abusefilter-diff-pattern": "Сиидэ туруоруулара",
+ "abusefilter-diff-invalid": "Көрдөөбүт барыллары көрөр табыллыбата",
+ "abusefilter-diff-backhistory": "Сиидэ устуоруйатыгар төннүү",
+ "abusefilter-import-intro": "Бу үнүстүрүмүөнү туһанан сиидэлэри атын биикилэртэн импортыаххын сөп.\nЫлар биикигэр \"{{int:abusefilter-edit-tools}}\" салааҕа киириэҥҥин \"{{int:abusefilter-edit-export}}\" диэни баттаа.\nТиэкис хонуутуттан иһинээҕитин бу сирэйгэ көһөр уонна \"{{int:abusefilter-import-submit}}\" диэни баттаа.",
+ "abusefilter-import-submit": "Импортаа"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/sc.json b/www/wiki/extensions/AbuseFilter/i18n/sc.json
new file mode 100644
index 00000000..7af2d0e4
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/sc.json
@@ -0,0 +1,30 @@
+{
+ "@metadata": {
+ "authors": [
+ "Andria",
+ "Uharteko",
+ "Taxandru"
+ ]
+ },
+ "abuselog": "Registru de is abusos",
+ "abusefilter-blocker": "Filtru contra s'abusu",
+ "right-abusefilter-modify": "Acontza is filtros contra s'abusu",
+ "right-abusefilter-view": "Ammustra is filtros contra s'abusu",
+ "right-abusefilter-log": "Ammustra su registru de is abusos",
+ "right-abusefilter-private": "Ammustra is datos privados in su registru de is abusos",
+ "action-abusefilter-modify": "acontza is filtros contra s'abusu",
+ "action-abusefilter-view": "ammustra is filtros contra s'abusu",
+ "action-abusefilter-log": "ammustra su registru de is abusos",
+ "action-abusefilter-private": "ammustra is datos privados in su registru de is abusos",
+ "abusefilter-log": "Registru de su filtru contra s'abusu",
+ "abusefilter-log-search": "Chirca in su registru de su filtru contra s'abusu",
+ "abusefilter-log-search-user": "Impitadore:",
+ "abusefilter-log-search-filter": "ID filtru (separadas dae \"|\"):",
+ "abusefilter-log-search-title": "Tìtulu:",
+ "abusefilter-log-search-submit": "Chirca",
+ "abusefilter-log-detailedentry-global": "filtru globale $1",
+ "abusefilter-log-detailedentry-local": "filtru $1",
+ "abusefilter-log-detailslink": "particulares",
+ "abusefilter-log-details-private": "Datos privados",
+ "abusefilter-log-noactions": "peruna"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/scn.json b/www/wiki/extensions/AbuseFilter/i18n/scn.json
new file mode 100644
index 00000000..65d9ff2d
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/scn.json
@@ -0,0 +1,432 @@
+{
+ "@metadata": {
+ "authors": [
+ "Aushulz",
+ "Gmelfi",
+ "Pippinu",
+ "Sarvaturi"
+ ]
+ },
+ "abusefilter-desc": "Fa' cuntrolli autumàtici di tipu eurìsticu supra dî canciamenti",
+ "abusefilter": "Cunfigurazzioni dû filtru anti-abbusi",
+ "abuselog": "Riggistru di l'abbusi",
+ "abusefilter-intro": "Bimminutu ntâ ntirfaccia di gistioni dû filtru anti-abbusi.\nLu filtru anti-abbusi è nu miccanismu software autumatizzatu chi àpprica cuntrolli di tipu eurìsticu supra a tutti l'azzioni ca si fannu.\nSta ntirfaccia ammustra na lista di li filtri difinuti, e cunzenti di canciàrili.",
+ "abusefilter-mustbeeditor": "Pi mutivi di sicurizza, sulu l'utenti cû drittu di canciari li filtri anti-abbusi ponnu adupirari sta ntirfaccia.",
+ "abusefilter-warning": "'''Accura:''' St'azzioni fu idintificata di manera autumàtica comu n'azzioni dannìfica.\nLi canciamenti ca nun sunnu custruttivi vèninu annullati vittivitti, e fari canciamenti ca nun sunnu custruttivi di manera palisi e arripituta è mutivu di bloccu dû tò cuntu o dû tò nnirizzu IP.\nSi penzi ca pi daveru st'azzioni è custruttiva, la poi mannari n'àutra vota pi cunfirmàrila.\nNu riassuntu dâ règula anti-abbusi ca fu viulata dâ tò azzioni è: $1",
+ "abusefilter-disallowed": "St'azzioni fu idintificata di manera autumàtica comu n'azzioni dannìfica, e dunca nun fu cunzintuta.\nSi penzi ca mmeci st'azzioni è custruttiva, pi favuri nforma a n'amministraturi di zocchi stai pruvannu a fari.\nNu riassuntu dâ règula anti-abbusi ca fu viulata dâ tò azzioni è: $1",
+ "abusefilter-blocked-display": "St'azzioni fu idintificata di manera autumàtica comu n'azzioni dannìfica, e ti fu mpidutu di purtàrila a cumpimentu.\nSparti, pi prutèggiri a {{SITENAME}}, lu tò cuntu utenti e tutti li nnirizzi IP rilativi foru bluccati dû putiri fari canciamenti.\nSi penzi ca sta cosa ammattìu pi sbagghiu, pi favuri cuntatta a n'amministraturi.\nNu riassuntu dâ règula anti-abbusi ca fu viulata dâ tò azzioni è: $1",
+ "abusefilter-degrouped": "St'azzioni fu idintificata di manera autumàtica comu n'azzioni dannìfica.\nDi cunziquenza nun fu cunzintuta, e sparti, comu chi si suspetta ca lu tò cuntu fu cumprumisu, tutti li sò dritti foru arrivucati.\nSi penzi ca sta cosa ammattìu pi sbagghiu, pi favuri cuntatta a nu buròcrati dannu na spiegazzioni di st'azzioni, accussì li tò dritti purrìanu èssiri arripristinati.\nNu riassuntu dâ règula anti-abbusi ca fu viulata dâ tò azzioni è: $1",
+ "abusefilter-autopromote-blocked": "St'azzioni fu idintificata di manera autumàtica comu n'azzioni dannìfica, e nun fu cunzintuta.\nSparti, comu misura di sicurizza, certi privileggî ca vèninu cunciduti autumaticamenti ê cunti arricanusciuti, foru timpuraniamenti arrivucati dû cuntu tò.\nNu riassuntu dâ règula anti-abbusi ca fu viulata dâ tò azzioni è: $1",
+ "abusefilter-blocker": "Filtru anti-abbusi",
+ "abusefilter-blockreason": "Azzioni bluccata autumaticamenti dû filtru anti-abbusi.\nDiscrizzioni dâ règula currispunnenti: $1",
+ "abusefilter-degroupreason": "Dritti rivucati autumaticamenti dû filtru anti-abbusi.\nDiscrizzioni dâ règula: $1",
+ "abusefilter-accountreserved": "Stu nomu di cuntu è risirvatu pû filtru anti-abbusi.",
+ "right-abusefilter-modify": "Canciari li filtri anti-abbusi",
+ "right-abusefilter-view": "Taliari li filtri anti-abbusi",
+ "right-abusefilter-log": "Taliari lu riggistru di l'abbusi",
+ "right-abusefilter-log-detail": "Taliari ntô dittagghiu li vuci dû riggistru di l'abbusi",
+ "right-abusefilter-private": "Taliari li dati risirvati prisenti ntô riggistru di l'abbusi",
+ "right-abusefilter-modify-restricted": "Canciari li filtri anti-abbusi ca fannu azzioni risirvati",
+ "right-abusefilter-revert": "Annullari tutti li canciamenti fatti dûn filtru anti-abbusi",
+ "right-abusefilter-view-private": "Taliari li filtri anti-abbusi marcati comu privati",
+ "right-abusefilter-log-private": "Taliari li vuci di riggistru fatti dî filtri anti-abbusi marcati comu privati",
+ "right-abusefilter-hide-log": "Ammucciari vuci ntô riggistru di l'abbusi",
+ "right-abusefilter-hidden-log": "Taliari li vuci ammucciati dû riggistru di l'abbusi",
+ "right-abusefilter-modify-global": "Criari o canciari li filtri anti-abbusi glubbali",
+ "action-abusefilter-modify": "canciari li filtri anti-abbusi",
+ "action-abusefilter-view": "taliari li filtri anti-abbusi",
+ "action-abusefilter-log": "taliari lu riggistru di l'abbusi",
+ "action-abusefilter-log-detail": "taliari ntô dittagghiu li vuci dû riggistru di l'abbusi",
+ "action-abusefilter-private": "taliari li dati risirvati prisenti ntô riggistru di l'abbusi",
+ "action-abusefilter-modify-restricted": "canciari li filtri anti-abbusi ca fannu azzioni risirvati",
+ "action-abusefilter-revert": "annullari tutti li canciamenti fatti dûn filtru anti-abbusi",
+ "action-abusefilter-view-private": "taliari li filtri anti-abbusi marcati comu privati",
+ "abusefilter-log": "Riggistru dû filtru anti-abbusi",
+ "abusefilter-log-summary": "Stu riggistru ammustra n'elencu di tutti l'azzioni ntircittati dî filtri.",
+ "abusefilter-log-search": "Cerca ntô riggistru di l'abbusi",
+ "abusefilter-log-search-user": "Utenti:",
+ "abusefilter-log-search-filter": "ID dî filtri (spàrtiri cu sbarri virticali):",
+ "abusefilter-log-search-title": "Tìtulu:",
+ "abusefilter-log-search-wiki": "Wiki:",
+ "abusefilter-log-search-submit": "Va' arricerca",
+ "abusefilter-log-entry": "$1: $2 fici scattari nu filtru anti-abbusi, facennu l'azzioni «$3» nta $4.\nMisuri pigghiati: $5;\nDiscrizzioni dû filtru: $6",
+ "abusefilter-log-entry-withdiff": "$1: $2 fici scattari nu filtru anti-abbusi, facennu l'azzioni «$3» nta $4.\nMisuri pigghiati: $5;\nDiscrizzioni dû filtru: $6 ($7)",
+ "abusefilter-log-detailedentry-meta": "$1: $2 fici scattari $3, facennu l'azzioni «$4» nta $5.\nMisuri pigghiati: $6;\nDiscrizzioni dû filtru: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "filtru glubbali $1",
+ "abusefilter-log-detailedentry-local": "filtru $1",
+ "abusefilter-log-detailslink": "dittagghî",
+ "abusefilter-log-diff": "diff",
+ "abusefilter-log-hidelink": "règula la visibbilità",
+ "abusefilter-log-details-legend": "Dittagghî dâ vuci di riggistru $1",
+ "abusefilter-log-details-var": "Variàbbili",
+ "abusefilter-log-details-val": "Valuri",
+ "abusefilter-log-details-vars": "Paràmitri di l’azzioni",
+ "abusefilter-log-details-private": "Dati risirvati",
+ "abusefilter-log-details-ip": "Nnirizzu IP di pruvinenza",
+ "abusefilter-log-noactions": "nudda",
+ "abusefilter-log-details-diff": "Canciamenti fatti",
+ "abusefilter-log-linkoncontribs": "riggistru di l'abbusi",
+ "abusefilter-log-linkoncontribs-text": "Riggistru di l'abbusi addibbitati a st'utenti",
+ "abusefilter-log-hidden": "(vuci ammucciata)",
+ "abusefilter-log-hidden-implicit": "(ammucciata pirchì la virsioni fu cancillata)",
+ "abusefilter-log-cannot-see-details": "Nun hai lu pirmissu di vìdiri li dittagghî di sta vuci.",
+ "abusefilter-log-details-hidden": "Nun poi vìdiri li dittagghî di sta vuci pirchì veni ammucciata dû pùbblicu.",
+ "abusefilter-log-private-not-included": "Dî filtri ca spicificasti comu ID, unu o chiossai sunnu privati. Comu chi nun hai lu pirmissu di vìdiri li dittagghî dî filtri privati, nta sti filtri nun fu fatta nudda arricerca.",
+ "abusefilter-log-hide-legend": "Ammucciari na vuci di riggistru",
+ "abusefilter-log-hide-id": "ID dâ vuci di riggistru:",
+ "abusefilter-log-hide-hidden": "Ammuccia sta vuci dû pùbblicu",
+ "abusefilter-log-hide-reason": "Mutivu:",
+ "abusefilter-log-hide-forbidden": "Nun hai lu pirmissu d'ammucciari li vuci dû riggistru di l'abbusi.",
+ "abusefilter-logentry-suppress": "ammucciau «[[$1]]»",
+ "abusefilter-logentry-unsuppress": "ammustrau «[[$1]]»",
+ "logentry-abusefilter-hit": "$1 fici scattari $4, ntô fari l'azzioni «$5» nta $3. Misuri pigghiati: $6 ($7)",
+ "abusefilter-management": "Gistioni dû filtru anti-abbusi",
+ "abusefilter-list": "Tutti li filtri",
+ "abusefilter-list-id": "ID dû filtru",
+ "abusefilter-list-status": "Statu",
+ "abusefilter-list-public": "Discrizzioni pùbblica",
+ "abusefilter-list-consequences": "Cunziquenzi",
+ "abusefilter-list-visibility": "Visibbilità",
+ "abusefilter-list-hitcount": "Nùmmiru di trasuti n funzioni",
+ "abusefilter-list-edit": "Cancia",
+ "abusefilter-list-details": "Dittagghî",
+ "abusefilter-list-limit": "Nùmmiru pi pàggina:",
+ "abusefilter-list-lastmodified": "Ùrtimu canciamentu",
+ "abusefilter-list-group": "Gruppu di filtri",
+ "abusefilter-hidden": "Privatu",
+ "abusefilter-unhidden": "Pùbblicu",
+ "abusefilter-enabled": "Attivatu",
+ "abusefilter-deleted": "Cancillatu",
+ "abusefilter-disabled": "Disattivatu",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|trasuta|trasuti}} n funzioni",
+ "abusefilter-new": "Crea nu filtru novu",
+ "abusefilter-return": "Torna â gistioni dî filtri",
+ "abusefilter-status-global": "Glubbali",
+ "abusefilter-list-options": "Opzioni",
+ "abusefilter-list-options-deleted": "Filtri cancillati:",
+ "abusefilter-list-options-deleted-only": "Ammustrari sulu li filtri cancillati",
+ "abusefilter-list-options-deleted-hide": "Ammucciari li filtri cancillati",
+ "abusefilter-list-options-deleted-show": "Ammustrari macari li filtri cancillati",
+ "abusefilter-list-options-scope": "Ammustrari sti filtri:",
+ "abusefilter-list-options-scope-local": "Sulu li règuli lucali",
+ "abusefilter-list-options-scope-global": "Sulu li règuli glubbali",
+ "abusefilter-list-options-scope-all": "Tutti li règuli, lucali e glubbali",
+ "abusefilter-list-options-disabled": "Filtri disattivati:",
+ "abusefilter-list-options-hidedisabled": "Ammuccia li filtri disattivati",
+ "abusefilter-list-options-submit": "Aggiorna",
+ "abusefilter-tools-text": "Ccà ci sunnu na para di strummenti ca ponnu giuvari pi priparari e currèggiri li filtri anti-abbusi.",
+ "abusefilter-tools-expr": "Bancu di prova pê sprissioni",
+ "abusefilter-tools-submitexpr": "Vàluta",
+ "abusefilter-tools-reautoconfirm": "Arriturnari lu statu d'utenti autu-cunfirmatu",
+ "abusefilter-tools-reautoconfirm-user": "Utenti:",
+ "abusefilter-tools-reautoconfirm-submit": "Arriturnari",
+ "abusefilter-reautoconfirm-none": "Lu privileggiu d'utenti autu-cunfirmatu di {{GENDER:$1|st'utenti}} nun avìa statu suspinnutu.",
+ "abusefilter-reautoconfirm-notallowed": "Nun hai lu pirmissu di riturnari lu statu d'utenti autu-cunfirmatu.",
+ "abusefilter-reautoconfirm-done": "A stu cuntu fu ripristinatu lu statu d'utenti autu-cunfirmatu",
+ "abusefilter-status": "Di {{PLURAL:$1|l'ùrtima|l'ùrtimi}} $1 {{PLURAL:$1|azzioni}}, $2 (lu $3%) {{PLURAL:$2|arrivau|arrivaru}} ô lìmiti di cunnizzioni ch'è $4, e $5 (lu $6%) {{PLURAL:$5|fici|fìciru}} scattari unu dî filtri attivati pi com'ora.",
+ "abusefilter-edit": "Canciamentu di nu filtru anti-abbusi",
+ "abusefilter-edit-subtitle": "Canciamentu dû filtru $1",
+ "abusefilter-edit-subtitle-new": "Criazzioni dûn filtru",
+ "abusefilter-edit-oldwarning": "<strong>Stai canciannu na virsioni vecchia di stu filtru.\nLi statìstichi sunnu arrifiruti â virsioni dû filtru cchiù nova.\nSi sarvi li tò canciamenti, suprascrivi tutti l'àutri canciamenti fatti appressu dâ virsioni ca stai canciannu.</strong> &bull;\n[[Special:AbuseFilter/history/$2|Torna â crunuluggìa di stu filtru]].",
+ "abusefilter-edit-status-label": "Statìstichi:",
+ "abusefilter-edit-status": "Di {{PLURAL:$1|l'ùrtima|l'ùrtimi}} $1 {{PLURAL:$1|azzioni}}, $2 (lu $3%) {{PLURAL:$2|fici|fìciru}} scattari stu filtru.",
+ "abusefilter-edit-new": "Filtru novu",
+ "abusefilter-edit-save": "Sarva lu filtru",
+ "abusefilter-edit-id": "ID dû filtru:",
+ "abusefilter-edit-description": "Discrizzioni:\n:''(visìbbili ô pùbblicu)''",
+ "abusefilter-edit-group": "Gruppu di filtri:",
+ "abusefilter-edit-flags": "Marchi:",
+ "abusefilter-edit-enabled": "Attiva stu filtru",
+ "abusefilter-edit-deleted": "Marca comu cancillatu",
+ "abusefilter-edit-hidden": "Ammuccia li dittagghî di stu filtru dû pùbblicu",
+ "abusefilter-edit-global": "Filtru glubbali",
+ "abusefilter-edit-rules": "Cunnizzioni:",
+ "abusefilter-edit-notes": "Noti:",
+ "abusefilter-edit-lastmod": "Ùrtimu canciamentu dû filtru:",
+ "abusefilter-edit-lastmod-text": "$1 di $2",
+ "abusefilter-edit-hitcount": "Trasuti n funzioni:",
+ "abusefilter-edit-consequences": "Misuri pigghiati quannu scatta",
+ "abusefilter-edit-action-warn": "Fai st'azzioni dopu d'aviri datu n'avvirtimentu a l'utenti",
+ "abusefilter-edit-action-disallow": "Mpidisci a l'utenti di purtari a tèrmini l'azzioni",
+ "abusefilter-edit-action-blockautopromote": "Rèvuca lu statu di utenti autu-cunfirmatu",
+ "abusefilter-edit-action-degroup": "Leva a l'utenti di tutti li gruppa priviliggiati",
+ "abusefilter-edit-action-block": "Blocca a l'utenti o lu nnirizzu IP pi nun putiri fari canciamenti",
+ "abusefilter-edit-action-throttle": "Fai scattari l'azzioni sulu si l'utenti passa nu lìmiti di quantità",
+ "abusefilter-edit-action-rangeblock": "Blocca lu ntirvallu /16 d'unni veni l'utenti",
+ "abusefilter-edit-action-tag": "Marca lu canciamentu comu canciamentu d'arrivìdiri megghiu",
+ "abusefilter-edit-throttle-count": "Nùmmiru d’azzioni di cunzèntiri:",
+ "abusefilter-edit-throttle-period": "Pirìudu di tempu:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|secunnu|secunni}}",
+ "abusefilter-edit-throttle-groups": "Raggruppa l'allintamenti a secunna di:\n:''(unu pi riga, cumminari chî vìrguli)''",
+ "abusefilter-edit-warn-message": "Missaggiu di sistema d'adupirari comu avvisu:",
+ "abusefilter-edit-warn-other": "Àutru missaggiu",
+ "abusefilter-edit-warn-other-label": "Nomu dâ pàggina di l'àutru missaggiu:\n:''(senza dû prifissu MediaWiki)''",
+ "abusefilter-edit-warn-actions": "Azzioni:",
+ "abusefilter-edit-warn-preview": "Ammustra n'antiprima dû missaggiu scigghiutu",
+ "abusefilter-edit-warn-edit": "Crea/Cancia lu missaggiu scigghiutu",
+ "abusefilter-edit-tag-tag": "[[Special:Tags|Etichetti]] di mpiccicari (una pi riga):",
+ "abusefilter-edit-denied": "Nun poi vìdiri li dittagghî di stu filtru pirchì veni ammucciatu dû pùbblicu.",
+ "abusefilter-edit-main": "Paràmitri dû filtru",
+ "abusefilter-edit-done-subtitle": "Filtru canciatu",
+ "abusefilter-edit-done": "[[Special:AbuseFilter/history/$1/diff/prev/$2|Li tò canciamenti]] ô [[Special:AbuseFilter/$1|filtru $3]] foru sarvati.",
+ "abusefilter-edit-badsyntax": "C'è n'erruri di sintassi ntô filtru ca spicificasti.\nL'output di l'analizzaturi sintàtticu fu: <pre>$1</pre>",
+ "abusefilter-edit-restricted": "Nun poi canciari stu filtru, pirchì cunteni una o chiossai azzioni risirvati.\nPi favuri addumanna a fari stu canciamentu pi cuntu tò a n'utenti chi havi lu pirmissu d'agghiùnciri azzioni risirvati.",
+ "abusefilter-edit-viewhistory": "Talìa la crunuluggìa di stu filtru",
+ "abusefilter-edit-history": "Crunuluggìa:",
+ "abusefilter-edit-check": "Cuntrolla la sintassi",
+ "abusefilter-edit-badfilter": "Lu filtru ca spicificasti nun esisti",
+ "abusefilter-edit-revert": "Annulla l'azzioni fatti di stu filtru",
+ "abusefilter-edit-tools": "Strummenti:",
+ "abusefilter-edit-test-link": "Metti â prova stu filtru chî canciamenti ricenti",
+ "abusefilter-edit-export": "Sporta stu filtru nta n'àutra wiki",
+ "abusefilter-edit-syntaxok": "Nun fu attruvatu nuddu erruri di sintassi.",
+ "abusefilter-edit-syntaxerr": "Fu attruvatu n'erruri di sintassi: $1",
+ "abusefilter-edit-bad-tags": "Una o chiossai di l'etichetti ca spicificasti nun sunnu boni.\nL'etichetti avìssiru a èssiri curti, e nun avìssiru a cuntèniri caràttiri spiciali.",
+ "abusefilter-edit-notallowed": "Nun hai lu pirmissu di criari o canciari li filtri anti-abbusi",
+ "abusefilter-edit-notallowed-global": "Nun hai lu pirmissu di criari o canciari li filtri anti-abbusi glubbali",
+ "abusefilter-edit-notallowed-global-custom-msg": "Li missaggi d’avvisu pirsunalizzati nun sunnu suppurtati ntê filtri glubbali",
+ "abusefilter-edit-builder-select": "Scegghi n'opzioni p'agghiuncìrila unni lu cursuri",
+ "abusefilter-edit-builder-group-op-arithmetic": "Opiratura aritmètici",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Addizzioni (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Suttrazzioni (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Multiplicazzioni (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Divisioni (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Restu dâ divisioni (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Putenza (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Opiratura di cunfruntu",
+ "abusefilter-edit-builder-op-comparison-equal": "Lu stissu di (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Diffirenti di (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "Minuri di (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Maiuri di (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Minuri o lu stissu di (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Maiuri o lu stissu di (>=)",
+ "abusefilter-edit-builder-group-op-bool": "Opiratura booliani",
+ "abusefilter-edit-builder-op-bool-not": "No (!)",
+ "abusefilter-edit-builder-op-bool-and": "E (&)",
+ "abusefilter-edit-builder-op-bool-or": "O (|)",
+ "abusefilter-edit-builder-group-misc": "Varî",
+ "abusefilter-edit-builder-misc-in": "Cuntinutu ntâ stringa (in)",
+ "abusefilter-edit-builder-misc-like": "Currispunni a nu schema (like)",
+ "abusefilter-edit-builder-misc-rlike": "Currispunni a na sprissioni rigulari (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "Currispunni a na sprissioni rigulari senza fari diffirenzi di maiùsculi/minùsculi (irlike)",
+ "abusefilter-edit-builder-misc-contains": "La stringa a manu manca cunteni chidda a manu dritta (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "Custanti stringa (\"\")",
+ "abusefilter-edit-builder-misc-tern": "Opiraturi tirnariu (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "Cunnizziunali (if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "Funzioni",
+ "abusefilter-edit-builder-funcs-length": "Lunghizza dâ stringa (length)",
+ "abusefilter-edit-builder-funcs-lcase": "Passa ô minùsculu (lcase)",
+ "abusefilter-edit-builder-funcs-ucase": "Passa ô maiùsculu (ucase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "Nurmalizza li caràttiri ca si ponnu cunfùnniri (ccnorm)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "Leva li caràttiri ripituti (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "Rapportu tra caràttiri spiciali e tutali dî caràttiri (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "Nurmalizza (norm)",
+ "abusefilter-edit-builder-funcs-count": "Quantu voti la stringa X cumpari ntâ stringa Y (count)",
+ "abusefilter-edit-builder-funcs-rcount": "Quantu voti la sprissioni rigulari X cumpari ntâ stringa Y (rcount)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "Leva lu spazziu jancu (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "Leva li caràttiri spiciali (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "Lu nnirizzu IP sta ntô ntirvallu? (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "Cerca tanti suttastringhi ntâ stringa (contains_any)",
+ "abusefilter-edit-builder-funcs-substr": "Suttastringa (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "Pusizzioni di na suttastringa ntâ stringa (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "Rimpiazza na suttastringa câ stringa (str_replace)",
+ "abusefilter-edit-builder-funcs-rescape": "Cunzìddira la stringa comu a na custanti ntâ sprissioni rigulari (rescape)",
+ "abusefilter-edit-builder-funcs-set_var": "Mposta na variàbbili (set_var)",
+ "abusefilter-edit-builder-group-vars": "Variàbbili",
+ "abusefilter-edit-builder-vars-accountname": "Nomu dû cuntu (â sò criazzioni)",
+ "abusefilter-edit-builder-vars-timestamp": "Data e ura Unix dû canciamentu",
+ "abusefilter-edit-builder-vars-action": "Azzioni",
+ "abusefilter-edit-builder-vars-addedlines": "Nùmmiru di righi agghiunciuti ntô canciamentu",
+ "abusefilter-edit-builder-vars-delta": "Canciamentu dâ grannizza ntô canciamentu",
+ "abusefilter-edit-builder-vars-diff": "Diff unificata dî canciamenti fatti ntô canciamentu",
+ "abusefilter-edit-builder-vars-newsize": "Grannizza nova dâ pàggina",
+ "abusefilter-edit-builder-vars-oldsize": "Grannizza vecchia dâ pàggina",
+ "abusefilter-edit-builder-vars-removedlines": "Nùmmiru di righi livati ntô canciamentu",
+ "abusefilter-edit-builder-vars-summary": "Riassuntu/mutivu dû canciamentu",
+ "abusefilter-edit-builder-vars-article-id": "ID dâ pàggina",
+ "abusefilter-edit-builder-vars-article-ns": "Namespace dâ pàggina",
+ "abusefilter-edit-builder-vars-article-text": "Tìtulu dâ pàggina (senza namespace)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Tìtulu cumpletu dâ pàggina",
+ "abusefilter-edit-builder-vars-article-views": "Nùmmiru di taliati dâ pàggina",
+ "abusefilter-edit-builder-vars-movedfrom-id": "ID dâ pàggina orìggini dû spustamentu",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "Namespace dâ pàggina orìggini dû spustamentu",
+ "abusefilter-edit-builder-vars-movedfrom-text": "Tìtulu dâ pàggina orìggini dû spustamentu",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "Tìtulu cumpletu dâ pàggina orìggini dû spustamentu",
+ "abusefilter-edit-builder-vars-movedto-id": "ID dâ pàggina distinazzioni dû spustamentu",
+ "abusefilter-edit-builder-vars-movedto-ns": "Namespace dâ pàggina distinazzioni dû spustamentu",
+ "abusefilter-edit-builder-vars-movedto-text": "Tìtulu dâ pàggina distinazzioni dû spustamentu",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "Tìtulu cumpletu dâ pàggina distinazzioni dû spustamentu",
+ "abusefilter-edit-builder-vars-user-editcount": "Cunteggiu dî canciamenti di l'utenti",
+ "abusefilter-edit-builder-vars-user-age": "Anzianità dû cuntu di l'utenti",
+ "abusefilter-edit-builder-vars-user-name": "Nomu dû cuntu di l'utenti",
+ "abusefilter-edit-builder-vars-user-groups": "Gruppa (cuntannu chiddi mplìciti) dî quali l'utenti fa parti",
+ "abusefilter-edit-builder-vars-user-rights": "Dritti chi havi l'utenti",
+ "abusefilter-edit-builder-vars-user-blocked": "Si l'utenti è bluccatu",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "Data e ura quannu lu nnirizzu di posta elittrònica fu cunvalidatu",
+ "abusefilter-edit-builder-vars-recent-contributors": "Ùrtimi deci utenti chi cuntribbueru â pàggina",
+ "abusefilter-edit-builder-vars-first-contributor": "Primu utenti chi cuntribbuìu â pàggina",
+ "abusefilter-edit-builder-vars-all-links": "Tutti li liami pi fora ntô testu novu",
+ "abusefilter-edit-builder-vars-added-links": "Tutti li liami pi fora agghiunciuti ntô canciamentu",
+ "abusefilter-edit-builder-vars-removed-links": "Tutti li liami pi fora livati ntô canciamentu",
+ "abusefilter-edit-builder-vars-old-text": "Wikitestu vecchiu dâ pàggina, avanti dû canciamentu",
+ "abusefilter-edit-builder-vars-new-text": "Wikitestu novu dâ pàggina, appressu dû canciamentu",
+ "abusefilter-edit-builder-vars-new-pst": "Wikitestu dâ pàggina nova, appressu dâ trasfurmazzioni prima dô sarvamentu",
+ "abusefilter-edit-builder-vars-diff-pst": "Diff unificata dî canciamenti fatti ntô canciamentu, appressu â trasfurmazzioni prima dô sarvamentu",
+ "abusefilter-edit-builder-vars-addedlines-pst": "Nùmmiru di righi agghiunciuti ntô canciamentu, appressu dâ trasfurmazzioni prima dô sarvamentu",
+ "abusefilter-edit-builder-vars-new-text-stripped": "Testu novu dâ pàggina, cu tutta la furmattazzioni livata",
+ "abusefilter-edit-builder-vars-new-html": "Surgenti HTML labburatu dâ virsioni nova",
+ "abusefilter-edit-builder-vars-restrictions-edit": "Liveddu di prutizzioni pû canciamentu dâ pàggina",
+ "abusefilter-edit-builder-vars-restrictions-move": "Liveddu di prutizzioni pû spustamentu dâ pàggina",
+ "abusefilter-edit-builder-vars-restrictions-create": "Liveddu di prutizzioni pâ criazzioni dâ pàggina",
+ "abusefilter-edit-builder-vars-restrictions-upload": "Liveddu di prutizzioni pû carricamentu dû file",
+ "abusefilter-edit-builder-vars-old-text-stripped": "Testu vecchiu dâ pàggina, cu tutta la furmattazzioni livata",
+ "abusefilter-edit-builder-vars-old-links": "Liami ntâ pàggina, avanti dû canciamentu",
+ "abusefilter-edit-builder-vars-old-html": "Wikitestu dâ pàggina vecchia, labburatu n HTML",
+ "abusefilter-edit-builder-vars-minor-edit": "Si stu canciamentu è signatu comu nicu o puru no",
+ "abusefilter-edit-builder-vars-file-sha1": "Hash SHA-1 dû cuntinutu dû file",
+ "abusefilter-edit-builder-vars-file-size": "Grannizza dû file n byte",
+ "abusefilter-filter-log": "Ùrtimi canciamenti ô filtru",
+ "abusefilter-history": "Crunuluggìa dî canciamenti pû filtru anti-abbusi № $1",
+ "abusefilter-history-foruser": "Canciamenti fatti di $1",
+ "abusefilter-history-hidden": "Ammucciatu",
+ "abusefilter-history-enabled": "Attivatu",
+ "abusefilter-history-global": "Glubbali",
+ "abusefilter-history-timestamp": "Tempu",
+ "abusefilter-history-user": "Utenti",
+ "abusefilter-history-public": "Discrizzioni pùbblica dû filtru",
+ "abusefilter-history-flags": "Marchi",
+ "abusefilter-history-filter": "Règula dû filtru",
+ "abusefilter-history-comments": "Cummenti",
+ "abusefilter-history-actions": "Azzioni",
+ "abusefilter-history-backedit": "Torna ô canciamentu dî filtri",
+ "abusefilter-history-deleted": "Cancillatu",
+ "abusefilter-history-filterid": "Filtru",
+ "abusefilter-history-select-legend": "Affina l'arricerca",
+ "abusefilter-history-select-user": "Utenti:",
+ "abusefilter-history-select-submit": "Affina",
+ "abusefilter-history-diff": "Canciamenti",
+ "abusefilter-history-error-hidden": "Lu filtru c'addumannasti è ammucciatu, e nun poi vìdiri la sò crunuluggìa.",
+ "abusefilter-exception-unexpectedatend": "«$2» nun prividutu ô caràttiri $1.",
+ "abusefilter-exception-expectednotfound": "Era prividutu «$2» ô caràttiri $1 e nun fu attruvatu (mmeci fu attruvatu $3 $4).",
+ "abusefilter-exception-unrecognisedkeyword": "Palora chiavi scanusciuta «$2» ô caràttiri $1.",
+ "abusefilter-exception-unexpectedtoken": "Sìmmulu nun prividutu «$3» (di tipu $2) ô caràttiri $1.",
+ "abusefilter-exception-unclosedstring": "Na stringa nun chiuduta accumenza ô caràttiri $1.",
+ "abusefilter-exception-invalidoperator": "Opiraturi nun vàlidu «$2» ô caràttiri $1.",
+ "abusefilter-exception-unrecognisedtoken": "Sìmmulu scanusciutu «$2» ô caràttiri $1.",
+ "abusefilter-exception-noparams": "Nuddu paràmitru passatu â funzioni «$2» ô caràttiri $1.",
+ "abusefilter-exception-dividebyzero": "Divisioni nun vàlida di nu $2 pi zeru ô caràttiri $1.",
+ "abusefilter-exception-unrecognisedvar": "Variàbbili scanusciuta «$2» ô caràttiri $1.",
+ "abusefilter-exception-notenoughargs": "Sunnu passati troppu picca argumenti â funzioni «$2» quannu veni chiamata ô caràttiri $1.\n\tCi nni {{PLURAL:$3|voli|vonnu}} $3, nn'havi $4",
+ "abusefilter-exception-regexfailure": "Erruri ntâ sprissioni rigulari «$3» ô caràttiri $1: «$2»",
+ "abusefilter-exception-overridebuiltin": "Suprascrittura nun cunzintuta dâ variàbbili ncurpurata «$2» ô caràttiri $1.",
+ "abusefilter-exception-outofbounds": "Veni addumannatu di na lista l'elimentu $2 ca nun esisti (lunghizza dâ lista = $3), ô caràttiri $1.",
+ "abusefilter-exception-notlist": "Veni addumannatu l’elementu dûn vitturi nta na cosa ca nun è un vitturi, ô caràttiri $1.",
+ "abusefilter-action-tag": "Etichetta",
+ "abusefilter-action-throttle": "Allenta",
+ "abusefilter-action-warn": "Avverti",
+ "abusefilter-action-blockautopromote": "Blocca l'autu-cunferma",
+ "abusefilter-action-block": "Blocca",
+ "abusefilter-action-degroup": "Leva dî gruppa",
+ "abusefilter-action-rangeblock": "Blocca tuttu lu ntirvallu",
+ "abusefilter-action-disallow": "Mpidisci",
+ "abusefilter-revert-title": "Anullamentu di tutti li canciamenti fatti dû filtru $1",
+ "abusefilter-revert-intro": "Stu mòdulu pirmetti d'annullari tutti li canciamenti fatti dû filtru anti-abbusi $1.\nQuannu s'adòpira stu strummentu s'havi a dari accura.",
+ "abusefilter-revert-preview-item": "$1: $2 fici n'azzioni di $3 nta $4.\nAzzioni di annullari: $5 ($6)",
+ "abusefilter-revert-search-legend": "Scegghi l'azzioni dû filtru anti-abbusi ca s'hannu a annullari",
+ "abusefilter-revert-periodstart": "Accuminzagghia dû pirìudu:",
+ "abusefilter-revert-periodend": "Fini dû pirìudu:",
+ "abusefilter-revert-search": "Scègghiri l'azzioni",
+ "abusefilter-revert-filter": "Filtru:",
+ "abusefilter-revert-preview-intro": "Ccà sutta ci sunnu l'azzioni misi n pràttica dû filtru anti-abbusi ca sunnu annullati di st'opirazzioni.\nPi favuri cuntròllali cu cura, e appoi clicca «{{int:abusefilter-revert-confirm}}» pi cunfirmari la tò scigghiuta.",
+ "abusefilter-revert-confirm": "Cunferma",
+ "abusefilter-revert-success": "Annullasti tutti l'azzioni fatti dû [[Special:AbuseFilter/$1|filtru anti-abbusi $2]].",
+ "abusefilter-revert-reason": "Annullamentu autumàticu di tutti l'azzioni fatti dû filtru anti-abbusi $1.\nMutivu spicificatu: $2",
+ "abusefilter-revert-reasonfield": "Mutivu:",
+ "abusefilter-test": "Metti â prova nu filtru cu canciamenti fatti ntô passatu",
+ "abusefilter-test-intro": "Sta pàggina pirmetti di mèttiri â prova nu filtru, chi s'havi a scrìviri ntâ casedda ccà sutta, suttapunènnuci {{PLURAL:$1|l'ùrtimu|l'ùrtimi}} $1 {{PLURAL:$1|canciamentu|canciamenti}}.\nPi carricari nu filtru esternu, scrivi l'ID dû filtru ntâ casedda cchiù sutta, e clicca lu buttuni «{{int:abusefilter-test-load}}».",
+ "abusefilter-test-legend": "Prova dû filtru",
+ "abusefilter-test-load-filter": "Càrrica lu filtru cu ID:",
+ "abusefilter-test-submit": "Prova",
+ "abusefilter-test-load": "Càrrica",
+ "abusefilter-test-user": "Canciamenti fatti di l'utenti:",
+ "abusefilter-test-period-start": "Canciamenti fatti appressu dû:",
+ "abusefilter-test-period-end": "Canciamenti fatti avanti dû:",
+ "abusefilter-test-page": "Canciamenti fatti ntâ pàggina:",
+ "abusefilter-test-shownegative": "Ammustra li canciamenti ca nun fannu scattari lu filtru",
+ "abusefilter-test-syntaxerr": "Lu filtru ca scrivisti avìa n'erruri di sintassi.\nPoi ottèniri na spiegazzioni cumpleta cliccannu lu buttuni «{{int:abusefilter-edit-check}}».",
+ "abusefilter-test-badtitle": "Lu tìtulu di pàggina ca scrivisti nun era bonu. Purrìa cuntèniri unu o cchiossai caràttiri chi nun si ponnu adupirari ntê tìtuli.",
+ "abusefilter-changeslist-examine": "esàmina",
+ "abusefilter-examine": "Esàmina li sìnguli canciamenti",
+ "abusefilter-examine-intro": "Sta pàggina pirmetti d'esaminari li variàbbili ginirati di lu filtru anti-abbusi pi nu certu canciamentu, e di pruvari comu funziònanu li filtri supra a stu canciamentu.",
+ "abusefilter-examine-legend": "Scègghiri li canciamenti",
+ "abusefilter-examine-diff": "URL dâ diff:",
+ "abusefilter-examine-user": "Utenti:",
+ "abusefilter-examine-title": "Tìtulu dâ pàggina:",
+ "abusefilter-examine-submit": "Arricerca",
+ "abusefilter-examine-vars": "Variàbbili ginirati pi stu canciamentu",
+ "abusefilter-examine-test": "Suttaponi stu canciamentu a nu filtru",
+ "abusefilter-examine-test-button": "Prova lu filtru",
+ "abusefilter-examine-match": "Stu canciamentu fici scattari lu filtru.",
+ "abusefilter-examine-nomatch": "Stu canciamentu nun fici scattari lu filtru.",
+ "abusefilter-examine-syntaxerror": "Lu filtru havi na sintassi nun bona",
+ "abusefilter-examine-notfound": "Lu canciamentu ca spicificasti nun s'attrova.",
+ "abusefilter-examine-incompatible": "Lu canciamentu ca spicificasti nun è suppurtatu dû filtru anti-abbusi.",
+ "abusefilter-examine-noresults": "Nun fu attruvatu nuddu risurtatu chî paràmitri d'arricerca ca furnisti.",
+ "abusefilter-topnav": "'''Navigazzioni ntô filtru anti-abbusi'''",
+ "abusefilter-topnav-home": "Pàggina principali",
+ "abusefilter-topnav-test": "Virìfica massizza",
+ "abusefilter-topnav-examine": "Esàmina li canciamenti passati",
+ "abusefilter-topnav-log": "Riggistru di l'abbusi",
+ "abusefilter-topnav-tools": "Strummenti di debug",
+ "abusefilter-topnav-import": "Mporta nu filtru",
+ "abusefilter-log-name": "Riggistru dû filtru anti-abbusi",
+ "abusefilter-log-header": "Stu riggistru ammustra nu riassuntu dî canciamenti ca foru fatti ntê filtri.\nPî dittagghî cumpleti, talìa [[Special:AbuseFilter/history|l'elencu]] dî canciamenti ricenti.",
+ "abusefilter-log-noresults": "Nuddu risurtatu",
+ "abusefilter-diff-title": "Diffirenzi ntra li virsiuni",
+ "abusefilter-diff-item": "Elimentu",
+ "abusefilter-diff-version": "Virsioni dû $1 {{GENDER:$3|di}} $2",
+ "abusefilter-diff-info": "Nfurmazzioni essinziali",
+ "abusefilter-diff-pattern": "Cunnizzioni dû filtru",
+ "abusefilter-diff-invalid": "Nun fu pussìbbili carricari li virsioni addumannati",
+ "abusefilter-diff-backhistory": "Torna â crunuluggìa dû filtru",
+ "abusefilter-diff-prev": "Canciamentu avanti",
+ "abusefilter-diff-next": "Canciamentu appressu",
+ "abusefilter-import-intro": "Poi adupirari sta ntirfaccia pi mpurtari filtri di l'àutri wiki.\nNtâ wiki d'orìggini, clicca «{{int:abusefilter-edit-export}}» sutta a «{{int:abusefilter-edit-tools}}», ntâ ntirfaccia pû canciamentu dî filtri.\nCopia lu testu dâ casedda ca cumpari, e ncòddalu nta sta casedda ccà, e appoi clicca «{{int:abusefilter-import-submit}}».",
+ "abusefilter-import-submit": "Mporta li dati",
+ "abusefilter-group-default": "Pridifinutu",
+ "abusefilter-http-error": "Ammattìu n'erruri HTTP: $1.",
+ "apihelp-abusefiltercheckmatch-description": "Cuntrolla si n'AbuseFilter currispunni a nu nzemi di variàbbili, a nu canciamentu o a n'eventu AbuseFilter riggistratu.\n\nS'havi a spicificari pi forza o vars, o rcid, o logid, ma sulu unu di chisti.",
+ "apihelp-abusefiltercheckmatch-param-filter": "Lu testu cumpletu dûn filtru, pi cuntrullari si currispunni.",
+ "apihelp-abusefiltercheckmatch-param-vars": "Nu vitturi di variàbbili n furmatu JSON, pi cuntrullari si currispunni.",
+ "apihelp-abusefiltercheckmatch-param-rcid": "L'ID dûn canciamentu ricenti, pi cuntrullari si currispunni.",
+ "apihelp-abusefiltercheckmatch-param-logid": "L'ID di n'eventu dû riggistru dû filtru anti-abbusi, pi cuntrullari si currispunni.",
+ "apihelp-abusefiltercheckmatch-example-1": "Cuntrolla si lu canciamentu ricenti chi havi ID 15 currispunni a nu filtru sìmplici",
+ "apihelp-abusefilterchecksyntax-description": "Cuntrolla la sintassi di nu filtru AbuseFilter.",
+ "apihelp-abusefilterchecksyntax-param-filter": "Lu testu cumpletu dû filtru dû quali si voli cuntrullari la sintassi.",
+ "apihelp-abusefilterchecksyntax-example-1": "Cuntrolla la sintassi di nu filtru bonu",
+ "apihelp-abusefilterchecksyntax-example-2": "Cuntrolla la sintassi di nu filtru malu",
+ "apihelp-abusefilterevalexpression-description": "Vàluta na sprissioni d'AbuseFilter.",
+ "apihelp-abusefilterevalexpression-param-expression": "La sprissioni di valutari.",
+ "apihelp-abusefilterevalexpression-example-1": "Vàluta na sprissioni sìmplici",
+ "apihelp-abusefilterunblockautopromote-description": "Leva a n'utenti lu bloccu di l'autu-cunferma c'avìa arricivutu comu cunziquenza di nu filtru anti-abbusi.",
+ "apihelp-abusefilterunblockautopromote-param-user": "Nomu di l'utenti chi si voli sbluccari.",
+ "apihelp-abusefilterunblockautopromote-example-1": "Leva lu bloccu di l'autu-cunferma a l'utenti [[User:Example]]",
+ "apihelp-query+abusefilters-description": "Ammustra li dittagghî dî filtri anti-abbusi.",
+ "apihelp-query+abusefilters-param-startid": "L'ID dû primu filtru ca si voli pigghiari a cunziddirazzioni.",
+ "apihelp-query+abusefilters-param-endid": "L'ID di l'ùrtimu filtru ca si voli pigghiari a cunziddirazzioni.",
+ "apihelp-query+abusefilters-param-show": "Ammustra sulu li filtri ca currispùnnunu a sti criterî.",
+ "apihelp-query+abusefilters-param-limit": "Lu nùmmiru màssimu di filtri di elincari.",
+ "apihelp-query+abusefilters-param-prop": "Quali prupità pigghiari.",
+ "apihelp-query+abusefilters-example-1": "Elenca li filtri pùbblici ca sunnu attivati",
+ "apihelp-query+abusefilters-example-2": "Ammustra na para di dittagghî supra ê filtri",
+ "apihelp-query+abuselog-description": "Ammustra l'eventi ca foru ntircittati di nu filtru anti-abbusi.",
+ "apihelp-query+abuselog-param-start": "La data e ura a pàrtiri dî quali l'eventi si vonnu pigghiari a cunziddirazzioni.",
+ "apihelp-query+abuselog-param-end": "La data e ura a finiri chî quali l'eventi si vonnu pigghiari a cunziddirazzioni.",
+ "apihelp-query+abuselog-param-user": "Ammustra sulu l'azzioni fatti di nu certu utenti o nnirizzu IP.",
+ "apihelp-query+abuselog-param-title": "Ammustra sulu l'azzioni fatti nta na certa pàggina.",
+ "apihelp-query+abuselog-param-filter": "Ammustra sulu l'azzioni ntircittati di nu filtru cu na certa ID.",
+ "apihelp-query+abuselog-param-limit": "Lu nùmmiru màssimu di vuci di elincari.",
+ "apihelp-query+abuselog-param-prop": "Quali prupità pigghiari.",
+ "apihelp-query+abuselog-example-1": "Ammustra li vuci di riggistru ricenti",
+ "apihelp-query+abuselog-example-2": "Ammustra li vuci di riggistru ricenti pi [[API]]"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/sco.json b/www/wiki/extensions/AbuseFilter/i18n/sco.json
new file mode 100644
index 00000000..4008d9ab
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/sco.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": [
+ "John Reid"
+ ]
+ },
+ "abusefilter-desc": "Applies autæmatic heuristics til edits",
+ "abusefilter": "Abuiss filter confeeguration",
+ "abuselog": "Abuiss log",
+ "abusefilter-intro": "Weelcome til the Abuiss Filter management interface.\nThe Abuiss Filter is aen autæmated saffware mechanism o appliein autæmatic heuristics til aw actions.\nThis interface shaws ae leet o defined filters, n permits thaim tae be modified.",
+ "abusefilter-mustbeeditor": "Fer securitie raisons, yinly uisers wi the richt tae modify abuiss filters can uise this interface.",
+ "abusefilter-warning": "'''Warnishment:''' This action haes been autæmaticlie ideentified aes harmful.\nOnconstructeeve eedits will be quicklie reverted, n egregioos or repeated onconstructeeve eeeditin will result in yer accoont or IP address bein blockit.\nGif ye true this action tae be constructeeve, ye can haun it in again tae confirm it.\nAe brief descreeption o the abuiss rule that yer action matched is: $1",
+ "abusefilter-log-search-filter": "Filter IDs (separate wi pipes):",
+ "abusefilter-log-private-not-included": "Yin or mair o the filter IDs that ye speceefied ar private. Cause ye'r na permitit tae see details o private filters, thir filters hae na been raked fer."
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/sd.json b/www/wiki/extensions/AbuseFilter/i18n/sd.json
new file mode 100644
index 00000000..c42aea07
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/sd.json
@@ -0,0 +1,38 @@
+{
+ "@metadata": {
+ "authors": [
+ "Mehtab ahmed",
+ "Indus Asia"
+ ]
+ },
+ "abuselog": "غلط-استعمال لاگ",
+ "abusefilter-blocker": "غلط-استعمال ڇاڻي",
+ "right-abusefilter-modify": "غلط-استعمال ڇاڻين کي بدلايو",
+ "right-abusefilter-view": "غلط-استعمال ڇاڻيون ڏيکاريو",
+ "right-abusefilter-log": "غلط-استعمال لاگ ڏيکاريو",
+ "right-abusefilter-log-detail": "غلط-استعمال لاگ جون ڊگھيون داخلائون ڏيکاريو",
+ "right-abusefilter-private": "غلط-استعمال لاگ ۾ خانگي مودا ڏيکاريو",
+ "right-abusefilter-hide-log": "غلط-استعمال لاگ ۾ داخلائون لڪايو",
+ "right-abusefilter-hidden-log": "غلط-استعمال لاگ جون لڪيل داخلائون ڏيکاريو",
+ "action-abusefilter-modify": "غلط-استعمال ڇاڻيون بدلايو",
+ "action-abusefilter-view": "غلط-استعمال ڇاڻيون ڏيکاريو",
+ "action-abusefilter-log": "غلط-استعمال لاگ ڏيکاريو",
+ "action-abusefilter-log-detail": "غلط-استعمال لاگ جون ڊگھيون داخلائون ڏيکاريو",
+ "action-abusefilter-private": "غلط-استعمال لاگ ۾ خانگي مواد ڏيکاريو",
+ "abusefilter-log": "غلط-استعمال ڇاڻي لاگ",
+ "abusefilter-log-search": "غلط-استعمال لاگ ڳوليو",
+ "abusefilter-log-linkoncontribs": "غلط-استعمال لاگ",
+ "abusefilter-log-linkoncontribs-text": "{{GENDER:$1|ھن واپرائيندڙ}} لاءِ غلط-استعمال لاگ",
+ "abusefilter-log-hide-forbidden": "توھان کي غلط-استعمال لاگ جي داخلائن کي لڪائڻ جي اجازت ناھي.",
+ "abusefilter-edit-status-label": "انگ اکر:",
+ "abusefilter-edit-tools": "اوزار:",
+ "abusefilter-history-diff": "تبديليون",
+ "abusefilter-revert-confirm": "پڪ ڪريو",
+ "abusefilter-examine-legend": "تبديليون چونڊيو",
+ "abusefilter-examine-title": "صفحي جو عنوان:",
+ "abusefilter-topnav-examine": "پوين ترميمن کي تپاسيو",
+ "abusefilter-topnav-log": "غلط-استعمال لاگ",
+ "abusefilter-log-name": "غلط-استعمال ڇاڻي لاگ",
+ "abusefilter-log-noresults": "ڪي به نتيجا ناھن",
+ "abusefilter-diff-item": "جزو"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/sdc.json b/www/wiki/extensions/AbuseFilter/i18n/sdc.json
new file mode 100644
index 00000000..b703aff8
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/sdc.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Jun Misugi"
+ ]
+ },
+ "abusefilter-log-search-user": "Utenti:",
+ "abusefilter-log-search-title": "Tìturu",
+ "abusefilter-log-search-wiki": "Vichi:",
+ "abusefilter-log-search-submit": "Zercha",
+ "abusefilter-list-edit": "Mudifiggà",
+ "abusefilter-deleted": "Canzilladdu",
+ "abusefilter-list-options-scope-local": "Vichi lucari"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/se.json b/www/wiki/extensions/AbuseFilter/i18n/se.json
new file mode 100644
index 00000000..13fba2c2
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/se.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "Jeblad",
+ "Linnea"
+ ]
+ },
+ "abusefilter-log": "Boasttogeavahanfiltera logga",
+ "abusefilter-deleted": "Sihkkojuvvon",
+ "abusefilter-history-deleted": "Sihkkojuvvon",
+ "abusefilter-action-block": "Hehtte",
+ "abusefilter-log-noresults": "Eai bohtosat"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/sh.json b/www/wiki/extensions/AbuseFilter/i18n/sh.json
new file mode 100644
index 00000000..0cd7b4c4
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/sh.json
@@ -0,0 +1,181 @@
+{
+ "@metadata": {
+ "authors": [
+ "Kolega2357",
+ "OC Ripper"
+ ]
+ },
+ "abusefilter-desc": "Dodaje automatske heuristike izmjenama.",
+ "abusefilter": "Konfiguracija filtera za zloupotrebu",
+ "abuselog": "Evidencija zloupotreba",
+ "abusefilter-intro": "Dobrodošli u interfejs upravljanja filterom zloupotreba.\nFilter zloupotreba je automatizirani softverski mehanizam za pravljenje automatskih heuristika za sve akcije.\nOvaj interfejs prikazuje spisak napravljenih filtera i omogućuje Vam da ih prilagodite.",
+ "abusefilter-mustbeeditor": "Iz sigurnosnih razloga, samo korisnici sa pravom da promijene filtere zloupotrebe mogu koristiti ovaj interfejs.",
+ "abusefilter-warning": "'''Upozorenje''': Ova akcija je automatski identificirana kao štetna.\nNekonstruktivna uređivanja biti će brzo uklonjena,\na prekomjerno ili ponovljeno nekonstruktivno uređivanje će uzrokovati da vaš račun ili IP adresa budu blokirani.\nUkoliko vjerujete da je vaše uređivanje konstruktivno, možete ga ponovo poslati da ga potvrdite.\nKratak opis pravila sprječavanja zloupotreaba koji se podudara s vašim uređivanjem je: $1",
+ "abusefilter-disallowed": "Ova akcija je automatski identificirana kao štetna, pa je stoga onemogućena.\nAko vjerujete da je uređivanje konstruktivno, molimo kontaktirajte administratora i obavijestite ga o tome što ste pokušali učiniti.\nKratak opis pravila spriječavanja zloupotrebe koji se podudara s vašim uređivanjem je: $1",
+ "abusefilter-blocked-display": "Ova akcija je automatski identificirana kao opasna,\ni kao takva onemogućena da se izvrši.\nDodatno, da bi se zaštitio {{SITENAME}}, Vaš korisnički račun i sve pripadajuće IP adrese su blokirane za uređivanje.\nAko se desila greška, molimo da kontaktirate administratora.\nKratki opis prekršenih pravila koja odgovaraju Vašoj akciji je: $1",
+ "abusefilter-degrouped": "Ova akcija je automatski prepoznata kao štetna.\nU skladu s tim je onemogućena, a sumnja se da je Vaš račun kompromitovan, sva Vaša prava su povučena.\nAko mislite da je ovo greška, molimo da kontaktirate birokratu sa objašnjenjem ove akcije te će tada Vaša prava biti vraćena.\nKratki opis kršenja pravila koja su prekršena Vašom akcijom je: $1",
+ "abusefilter-autopromote-blocked": "Ova akcija je automatski identificirana kao opasna i onemogućena je.\nDodatno, kao mjera zaštite, neke privilegije, koje su obično date potvrđenim računima su privremeno oduzete za Vaš račun.\nKratki opis prekršenih pravila koje se odnose na Vašu akciju je: $1",
+ "abusefilter-blocker": "Filter zloupotreba",
+ "abusefilter-blockreason": "Automatski blokirano od strane filtera za zloupoterbu. Opis povrijeđenog pravila: $1",
+ "abusefilter-degroupreason": "Prava su automatski oduzeta od strane filtera za zloupotrebu. Opis pravila: $1",
+ "abusefilter-accountreserved": "Ovaj korisnički račun je rezervisan za upotrebu od strane filtera za zloupotrebu.",
+ "right-abusefilter-modify": "Modificiraj filtere za zloupotrebu",
+ "right-abusefilter-view": "Pogledaj filtere za zloupotrebu",
+ "right-abusefilter-log": "Pogledaj evidenciju zloupotrebe",
+ "right-abusefilter-log-detail": "Pogledaj detaljne unose u evidenciji zloupotrebe",
+ "right-abusefilter-private": "Pogledaj privatne podatke u evidenciji zloupotrebe.",
+ "right-abusefilter-modify-restricted": "Mijenjanje filtera zloupotrebe sa ograničenim akcijama",
+ "right-abusefilter-revert": "Vrati sve izmjene date od filtera zloupotreba",
+ "right-abusefilter-view-private": "Pregled filtera zloupotrebe koji su označeni kao privatni",
+ "right-abusefilter-log-private": "Vidi unose evidencije zloupotrebe označene kao privatne",
+ "right-abusefilter-hide-log": "Sakrij unose u evidenciji zloupotreba",
+ "right-abusefilter-hidden-log": "Pogledaj skrivene unose u evidenciji zloupotreba",
+ "right-abusefilter-modify-global": "Stvori ili promijeni globalni filter zloupotreba",
+ "action-abusefilter-modify": "Modificiraj filtere zloupotrebe",
+ "action-abusefilter-view": "Pogledaj filtere zloupotreba",
+ "action-abusefilter-log": "Pogledaj evidenciju zloupotreba",
+ "action-abusefilter-log-detail": "Vidi detaljne unose evidencije zloupotreba",
+ "action-abusefilter-private": "pregledanje ličnih podataka u izveštaju zloupotrebe",
+ "action-abusefilter-modify-restricted": "menjanje filtera protiv zloupotrebe s ograničenim radnjama",
+ "action-abusefilter-revert": "vraćanje svih izmjena koje je napravio filter protiv zloupotrebe",
+ "action-abusefilter-view-private": "pregledanje privatnih filtera protiv zloupotrebe",
+ "abusefilter-log": "Evidencija filtera zloupotrebe",
+ "abusefilter-log-summary": "Ovaj izveštaj prikazuje spisak svih akcija koje su izvršili filteri.",
+ "abusefilter-log-search": "Pretraga izveštaja zloupotrebe",
+ "abusefilter-log-search-user": "Korisnik:",
+ "abusefilter-log-search-filter": "'''MediaWiki:Abusefilter-log-search-filter/sh'''\nID filtera:",
+ "abusefilter-log-search-title": "Naslov:",
+ "abusefilter-log-search-wiki": "Wiki:",
+ "abusefilter-log-search-submit": "Pretraži",
+ "abusefilter-log-entry": "$1: $2 je aktivirao filter, izvodeći radnju „$3“ na stranici $4. Preduzete radnje: $5; Opis filtera: $6",
+ "abusefilter-log-entry-withdiff": "$1: Korisnik $2 je pokrenuo filter za zloupotrebu, napravivši akciju \"$3\" na stranici $4.\nNapravljena akcija: $5;\nOpis filtera: $6 ($7)",
+ "abusefilter-log-detailedentry-meta": "$1: $2 je aktivirao $3, izvodeći radnju „$4“ na stranici $5.\nPreduzete radnje: $6;\nOpis filtera: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "globalni filter $1",
+ "abusefilter-log-detailedentry-local": "filter $1",
+ "abusefilter-log-detailslink": "detalji",
+ "abusefilter-log-diff": "razl",
+ "abusefilter-log-hidelink": "podesi vidljivost",
+ "abusefilter-log-details-legend": "Detalji unosa $1",
+ "abusefilter-log-details-var": "Promjenjiva",
+ "abusefilter-log-details-val": "Vrijednost",
+ "abusefilter-log-details-vars": "Parametri akcije",
+ "abusefilter-log-details-private": "Privatni podaci",
+ "abusefilter-log-details-ip": "Izvorna IP adresa",
+ "abusefilter-log-noactions": "Ništa",
+ "abusefilter-log-details-diff": "Izmene napravljene pri uređivanju",
+ "abusefilter-log-linkoncontribs": "Evidencija zloupotreba",
+ "abusefilter-log-linkoncontribs-text": "Izveštaj zloupotrebe ovog korisnika",
+ "abusefilter-log-hidden": "(unos je sakriven)",
+ "abusefilter-log-cannot-see-details": "Nemate ovlašćenje da vidite detalje ovog unosa.",
+ "abusefilter-log-details-hidden": "Ne možete da vidite detalje ovog filtera jer su sakriveni.",
+ "abusefilter-log-hide-reason": "Razlog:",
+ "abusefilter-log-hide-forbidden": "Nemate dozvolu da sakrivate unose u izveštaju filtera zloupotrebe.",
+ "abusefilter-logentry-suppress": "sakrij „[[$1]]“",
+ "abusefilter-logentry-unsuppress": "prikaži „[[$1]]“",
+ "abusefilter-management": "Upravljanje filterom protiv zloupotrebe",
+ "abusefilter-list": "Svi filteri",
+ "abusefilter-list-id": "ID filtera",
+ "abusefilter-list-status": "Status",
+ "abusefilter-hidden": "Privatno",
+ "abusefilter-unhidden": "Javno",
+ "abusefilter-disabled": "Onemogućeno",
+ "abusefilter-return": "Nazad na upravljanje filterima",
+ "abusefilter-list-options-submit": "Ažuriraj",
+ "abusefilter-tools-text": "Ovde se nalaze alatke koje su korisne za ispravljanje grešaka na filteru protiv zloupotrebe.",
+ "abusefilter-tools-expr": "Testiranje filtera",
+ "abusefilter-tools-submitexpr": "Proceni",
+ "abusefilter-tools-reautoconfirm": "Vrati samopotvrđeni status",
+ "abusefilter-tools-reautoconfirm-user": "Korisnik:",
+ "abusefilter-tools-reautoconfirm-submit": "Potvrdi",
+ "abusefilter-reautoconfirm-none": "Samopotvrđeni status ovog korisnika nikada nije bio ukinut.",
+ "abusefilter-reautoconfirm-notallowed": "Nije vam dozvoljeno da vratite samopotvrđeni status.",
+ "abusefilter-edit": "Uređivanje filtera zloupotrebe",
+ "abusefilter-edit-action-disallow": "Spreči korisnika da izvrši dotičnu akciju",
+ "abusefilter-edit-action-blockautopromote": "Vrati samopotvrđeni status korisnika",
+ "abusefilter-edit-action-degroup": "Ukloni korisnika iz svih korisničkih grupa",
+ "abusefilter-edit-action-block": "Blokiraj izmene korisnika i/ili IP adrese",
+ "abusefilter-edit-action-throttle": "Pokreni akcije samo ako korisnik pređe ograničenje učestalosti",
+ "abusefilter-edit-action-rangeblock": "Blokiraj /16 opseg IP adresa korisnika",
+ "abusefilter-edit-action-tag": "Označi izmenu za dalji pregled",
+ "abusefilter-history": "Historija izmjena filtera #$1",
+ "abusefilter-history-foruser": "Izmene od $1",
+ "abusefilter-history-hidden": "Sakriveno",
+ "abusefilter-history-enabled": "Omogućeno",
+ "abusefilter-history-global": "Globalno",
+ "abusefilter-history-timestamp": "Vrijeme",
+ "abusefilter-history-user": "Korisnik",
+ "abusefilter-history-public": "Javni opis filtera",
+ "abusefilter-history-flags": "Oznake",
+ "abusefilter-history-filter": "Pravilo filtera",
+ "abusefilter-history-comments": "Komentari",
+ "abusefilter-history-actions": "Akcije",
+ "abusefilter-history-backedit": "Nazad na uređivanje filtera",
+ "abusefilter-history-deleted": "Obrisano",
+ "abusefilter-history-filterid": "Filter",
+ "abusefilter-history-select-legend": "Preciziraj pretragu",
+ "abusefilter-history-select-user": "Korisnik:",
+ "abusefilter-history-select-submit": "Pročisti",
+ "abusefilter-history-diff": "Izmjene",
+ "abusefilter-history-error-hidden": "Traženi filter je sakriven, i zato ne možete da vidite njegovu istoriju.",
+ "abusefilter-action-tag": "Tag",
+ "abusefilter-action-throttle": "Uspori",
+ "abusefilter-action-blockautopromote": "Blokiraj samounapređivanje",
+ "abusefilter-action-block": "Blokiraj",
+ "abusefilter-action-degroup": "Ukloni iz grupa",
+ "abusefilter-action-rangeblock": "Blokada opsega",
+ "abusefilter-action-disallow": "Zabrani",
+ "abusefilter-revert-title": "Vrati sve akcije koje je napravio filter $1",
+ "abusefilter-revert-intro": "Ovo Vam omogućava da vratite sve izmene koje je načinio filter $1.\nBudite pažljivi pri korišćenju ove alatke.",
+ "abusefilter-revert-preview-item": "$1: $2 {{GENDER:$2|je napravio|je napravila|je napravio}} $3 na $4.\nAkcije za vraćanje: $5 ($6)",
+ "abusefilter-revert-search-legend": "Izaberi akcije filtera zloupotrebe koje trebaju biti vraćene",
+ "abusefilter-revert-periodstart": "Početak perioda:",
+ "abusefilter-revert-periodend": "Kraj perioda:",
+ "abusefilter-revert-search": "Izaberi akcije",
+ "abusefilter-revert-filter": "Filter:",
+ "abusefilter-revert-preview-intro": "Ispod su prikazane akcije koje će biti vraćene. Pažljivo ih proverite i kliknite na opciju „potvrdi“ da biste potvrdili svoj izbor.",
+ "abusefilter-revert-confirm": "Potvrdi",
+ "abusefilter-revert-success": "Vratili ste sve ackije.",
+ "abusefilter-revert-reason": "Automatsko vraćanje svih akcija koje je načinio filter $1.\nRazlog: $2",
+ "abusefilter-revert-reasonfield": "Razlog vraćanja:",
+ "abusefilter-test-intro": "Ova stranica Vam omogućava da proverite filter iz donje kutijice na poslednjih $1 izmjena. Da biste učitali postojeći filter, unesite njegov ID u kutijicu ispod polja za uređivanje i klinkite na dugme „Učitaj“.",
+ "abusefilter-test-legend": "Testiranje filtera",
+ "abusefilter-test-load-filter": "Učitaj filter s naznakom:",
+ "abusefilter-test-submit": "Testiraj",
+ "abusefilter-test-load": "Učitaj",
+ "abusefilter-test-user": "Izmjene od korisnika:",
+ "abusefilter-test-period-start": "Izmjene napravljene posle:",
+ "abusefilter-test-period-end": "Izmjene napravljene pre:",
+ "abusefilter-test-page": "Izmjene napravljene na stranici:",
+ "abusefilter-test-shownegative": "Prikaži izmjene koje ne odgovaraju filteru",
+ "abusefilter-test-syntaxerr": "Filter koji ste uneli sadrži sintaksne greške. Da biste dobili detaljno objašnjenje kliknite na dugme „Proveri sintaksu“.",
+ "abusefilter-changeslist-examine": "pregledaj",
+ "abusefilter-examine": "Ispitaj pojedinačne izmjene",
+ "abusefilter-examine-intro": "Ova stranica Vam omogućava da ispitate promenljive filtera na pojedinačne izmjene i da ih testirate.",
+ "abusefilter-examine-legend": "Izaberite izmjene",
+ "abusefilter-examine-diff": "Adresa razlike:",
+ "abusefilter-examine-user": "Korisnik:",
+ "abusefilter-examine-title": "Naslov stranice:",
+ "abusefilter-examine-submit": "Traži",
+ "abusefilter-topnav": "'''Navigacija po filteru protiv zloupotrebe'''",
+ "abusefilter-topnav-home": "Početna",
+ "abusefilter-topnav-test": "Grupno isprobavanje",
+ "abusefilter-topnav-examine": "Ispitaj prošle izmjene",
+ "abusefilter-topnav-log": "Evidencija zloupotreba",
+ "abusefilter-topnav-tools": "Alati za debagovanje",
+ "abusefilter-topnav-import": "Uvezi filter",
+ "abusefilter-log-name": "Evidencija filtera zloupotrebe",
+ "abusefilter-log-header": "Ovde je prikazan sažetak izmena koje su napravili filteri.\nZa više informacija pogledajte [[Special:AbuseFilter/history|pregled]] skorašnjih izmjena.",
+ "abusefilter-log-noresults": "Nema rezultata",
+ "abusefilter-diff-title": "Razlike između revizija",
+ "abusefilter-diff-item": "Stavka",
+ "abusefilter-diff-version": "Verzija od $1 {{GENDER:$3|od}} $2",
+ "abusefilter-diff-info": "Osnovni podaci",
+ "abusefilter-diff-pattern": "Uslovi filtera",
+ "abusefilter-diff-invalid": "Nije moguće naći traženu verziju",
+ "abusefilter-diff-backhistory": "Povratak na historiju filtera",
+ "abusefilter-diff-prev": "Stare izmjene",
+ "abusefilter-diff-next": "Nove izmjene",
+ "abusefilter-import-intro": "Možete koristiti ovo sučelje da uvezete filtere sa drugih vikija. Na izvornom vikiju kliknite na „Export this filter to another wiki“ ispod opcije „Tools:“. Kopirajte sadržaj polja za uređivanje koje se pojavi, nalepite ga u ovo polje, a potom kliknite na „Import data“.",
+ "abusefilter-import-submit": "Uvezi podatke",
+ "abusefilter-group-default": "Standardno"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/shi.json b/www/wiki/extensions/AbuseFilter/i18n/shi.json
new file mode 100644
index 00000000..7438e128
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/shi.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": [
+ "Dalinanir",
+ "Amara-Amaziɣ"
+ ]
+ },
+ "abusefilter-log-search-title": "Aswl:",
+ "abusefilter-log-search-submit": "ⵙⵉⴳⴳⵍ",
+ "abusefilter-log-detailslink": "Ifruriyn",
+ "abusefilter-log-hidelink": "Sgadda izṛi",
+ "abusefilter-log-details-legend": "Ifruriyn f ukccum $1 n unɣmas",
+ "abusefilter-log-details-var": "ⴰⵎⵙⴽⵉⵍ",
+ "abusefilter-log-details-val": "ⴰⵜⵉⴳ"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/si.json b/www/wiki/extensions/AbuseFilter/i18n/si.json
new file mode 100644
index 00000000..79b3898e
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/si.json
@@ -0,0 +1,356 @@
+{
+ "@metadata": {
+ "authors": [
+ "Singhalawap",
+ "පසිඳු කාවින්ද",
+ "බිඟුවා",
+ "ශ්වෙත",
+ "සුරනිමල",
+ "Susith Chandira Gts",
+ "Macofe",
+ 1100100
+ ]
+ },
+ "abusefilter-desc": "සංස්කරණ සඳහා ස්වයංක්‍රීය විවරණෝපයෝගී යෙදේ",
+ "abusefilter": "අනිසි පෙරහන් සැකසුම",
+ "abuselog": "අනිසි සටහන්",
+ "abusefilter-intro": "අපයෙදුම් පෙරහන් කළමනාකරණ අතුරු මුහුණතට ඔබව සාදරයෙන් පිළිගනිමු.\nThe Abuse Filter is an automated software mechanism of applying automatic heuristics to all actions.\nThis interface shows a list of defined filters, and allows them to be modified.",
+ "abusefilter-mustbeeditor": "ආරක්ෂක හේතුන් නිසා, අපයෙදුම් පෙරහන් වෙනස් කිරීමට අවසර ඇති පරිශීලකයන් පමණක් මෙම අතුරුමුහුණත භාවිතා කරන්න.",
+ "abusefilter-warning": "'''අවවාදයයි''':මෙම ක්‍රියාව හානිදායක බව ස්වයංක්‍රීයව හඳුනාගෙන ඇත.\nUnconstructive edits will be quickly reverted,\nand egregious or repeated unconstructive editing will result in your account or IP address being blocked.\nIf you believe this edit to be constructive, you may click Submit again to confirm it.\nA brief description of the abuse rule which your action matched is: $1",
+ "abusefilter-blocker": "අපයෙදුම් පෙරහන",
+ "abusefilter-blockreason": "අපයෙදුම් පෙරහන මඟින් ස්වයන්ක්‍රියව වාරණය කර ඇත.\nගැලපුණු නීතියේ විස්තරය: $1",
+ "abusefilter-degroupreason": "අපයෙදුම් පෙරහන මඟින් ස්වයංක්‍රීයව පැහැර ගන්නා හිමිකම්.\nනීතියේ විස්තරය: $1",
+ "abusefilter-accountreserved": "අපයෙදුම් පෙරහන මඟින් භාවිතා කිරීම සඳහා මෙම ගිණුම් නාමය වෙන් කර ඇත.",
+ "right-abusefilter-modify": "අපයෙදුම් පෙරහන් වෙනස් කරන්න",
+ "right-abusefilter-view": "අපයෙදුම් පෙරහන් නරඹන්න",
+ "right-abusefilter-log": "අපයෙදුම් ලඝු සටහන නරඹන්න",
+ "right-abusefilter-log-detail": "විස්තර කරන ලද අපයෙදුම් ලඝු සටහන් ඇතුළත් කිරීම් නරඹන්න",
+ "right-abusefilter-private": "අපයෙදුම් ලඝු සටහනේ ඇති පෞද්ගලික දත්ත නරඹන්න",
+ "right-abusefilter-modify-restricted": "සීමාසහිත ක්‍රියාකාරකම් මඟින් අපයෙදුම් පෙරහන් වෙනස් කරන්න",
+ "right-abusefilter-revert": "අපයෙදුම් පෙරහන මඟින් දෙන ලද සියලුම වෙනස්කම් ප්‍රතිවර්තනය කරන්න",
+ "right-abusefilter-view-private": "පෞද්ගලික ලෙස සලකුණු කෙරූ අපයෙදුම් පෙරහන් නරඹන්න",
+ "right-abusefilter-log-private": "පුද්ගලික ලෙස සලකුණු කරන ලද අපයෙදුම් පෙරහන් වල ලඝු ඇතුලත් කිරීම් නරඹන්න",
+ "right-abusefilter-hide-log": "අපයෙදුම් ලඝු සටහනේ ඇති ඇතුළත් කිරීම් සඟවන්න",
+ "right-abusefilter-hidden-log": "සඟවන ලද අපයෙදුම් ලඝු සටහන් ඇතුළත් කිරීම් නරඹන්න",
+ "right-abusefilter-modify-global": "ගෝලීය අපයෙදුම් පෙරහන් තනන්න හෝ වෙනස් කරන්න",
+ "action-abusefilter-modify": "අපයෙදුම් පෙරහන් වෙනස් කරන්න",
+ "action-abusefilter-view": "අපයෙදුම් පෙරහන් නරඹන්න",
+ "action-abusefilter-log": "අපයෙදුම් ලඝු සටහන නරඹන්න",
+ "action-abusefilter-log-detail": "විස්තර කරන ලද අපයෙදුම් ලඝු සටහන් ඇතුළත් කිරීම් නරඹන්න",
+ "action-abusefilter-private": "අපයෙදුම් ලඝු සටහනෙහි පෞද්ගලික දත්ත නරඹන්න",
+ "action-abusefilter-modify-restricted": "සීමාසහිත ක්‍රියාකාරකම් සහිත අපයෙදුම් පෙරහන් වෙනස් කරන්න",
+ "action-abusefilter-revert": "අපයෙදුම් පෙරහන මඟින් දෙන ලද සියලුම වෙනස්කම් ප්‍රතිවර්තනය කරන්න",
+ "action-abusefilter-view-private": "පෞද්ගලික ලෙස සලකුණු කරන ලද අපයෙදුම් පෙරහන් නරඹන්න",
+ "abusefilter-log": "අපයෙදුම් පෙරහන් ලඝු සටහන",
+ "abusefilter-log-summary": "පෙරහන් විසින් අල්ලන ලද සියලුම ක්‍රියාකාරකම් ලැයිස්තුවක් මෙම ලඝු සටහනෙන් පෙන්වයි.",
+ "abusefilter-log-search": "අපයෙදුම් ලඝු සටහන ගවේෂණය කරන්න",
+ "abusefilter-log-search-user": "පරිශීලකයා:",
+ "abusefilter-log-search-filter": "පෙරනයේ නම",
+ "abusefilter-log-search-title": "ශීර්ෂය:",
+ "abusefilter-log-search-wiki": "විකිය:",
+ "abusefilter-log-search-submit": "ගවේෂණය",
+ "abusefilter-log-detailedentry-global": "ගෝලීය පෙරහන $1",
+ "abusefilter-log-detailedentry-local": "$1 පෙරනය",
+ "abusefilter-log-detailslink": "විස්තර",
+ "abusefilter-log-diff": "වෙනස",
+ "abusefilter-log-hidelink": "දෘශ්‍යතාවය සකසන්න",
+ "abusefilter-log-details-legend": "$1 ලඝු ඇතුලත් කිරීම සඳහා විස්තර",
+ "abusefilter-log-details-var": "විචල්‍යය",
+ "abusefilter-log-details-val": "වටිනාකම",
+ "abusefilter-log-details-vars": "ක්‍රියා පරාමිතිය",
+ "abusefilter-log-details-private": "පුද්ගලික දත්ත",
+ "abusefilter-log-details-ip": "අයිපී ලිපිනය උත්පාදනය කරමින්",
+ "abusefilter-log-noactions": "කිසිවක් නොවේ",
+ "abusefilter-log-details-diff": "සංස්කරණයේදී සිදුකල වෙනස්කම්",
+ "abusefilter-log-linkoncontribs": "අපයෙදුම් ලඝු-සටහන",
+ "abusefilter-log-linkoncontribs-text": "මෙම පරිශීලකයා සඳහා අපයෙදුම් ලඝු සටහන",
+ "abusefilter-log-hidden": "(ඇතුලත් කිරීම සඟවා ඇත)",
+ "abusefilter-log-hidden-implicit": "(සංශෝධනය මකා දැමීම හේතුවෙන් සඟවා ඇත)",
+ "abusefilter-log-cannot-see-details": "මෙම ඇතුලත් කිරීමෙහි විස්තර නැරඹීමට ඔබ හට අවසර නොමැත.",
+ "abusefilter-log-details-hidden": "ඔබට මෙම ඇතුලත් කිරීමට අදාළ විස්තර නැරඹිය නොහැක මන්ද එය පොදු දර්ශනයෙන් සඟවා ඇත.",
+ "abusefilter-log-hide-legend": "ලඝු ඇතුලත් කිරීම සඟවන්න",
+ "abusefilter-log-hide-id": "ලඝු ඇතුලත් කෙරුම් හැඳුනුම:",
+ "abusefilter-log-hide-hidden": "පොදු දර්ශනයෙන් මෙම ඇතුලත් කිරීම සඟවන්න",
+ "abusefilter-log-hide-reason": "හේතුව:",
+ "abusefilter-log-hide-forbidden": "අපයෙදුම් ලඝු ඇතුලත් කිරීම් සැඟවීමට ඔබ හට අවසර නොමැත.",
+ "abusefilter-logentry-suppress": "සඟ \"[[$1]]\"",
+ "abusefilter-logentry-unsuppress": "නොසඟ \"[[$1]]\"",
+ "abusefilter-management": "අපයෙදුම් පෙරහන් කළමනාකරණය",
+ "abusefilter-list": "සියලු පෙරහන්",
+ "abusefilter-list-id": "පෙරනයේ නම",
+ "abusefilter-list-status": "තත්වය",
+ "abusefilter-list-public": "පොදු විස්තරය",
+ "abusefilter-list-consequences": "ප්‍රතිවිපාක",
+ "abusefilter-list-visibility": "දෘශ්‍යතාව",
+ "abusefilter-list-hitcount": "සංස්කරණ ගණනය",
+ "abusefilter-list-edit": "සංස්කරණය කරන්න",
+ "abusefilter-list-details": "විස්තර",
+ "abusefilter-list-limit": "පිටුවකට සංඛ්‍යාව බැගින්:",
+ "abusefilter-list-lastmodified": "අවසන් වරට විකරණය කරන ලද්දේ",
+ "abusefilter-list-group": "පෙරහන් කාණ්ඩය",
+ "abusefilter-hidden": "පෞද්ගලික",
+ "abusefilter-unhidden": "ප්‍රසිද්ධ",
+ "abusefilter-enabled": "බලය දෙන ලදී",
+ "abusefilter-deleted": "මකා දමන ලදී",
+ "abusefilter-disabled": "අක්‍රිය කෙරිණි",
+ "abusefilter-hitcount": "{{PLURAL:$1|වැදීම්|වැදීම්}} $1 ක්",
+ "abusefilter-new": "නව පෙරහනක් තනන්න",
+ "abusefilter-return": "පෙරහන් කළමනාකරණය වෙත නැවත යන්න",
+ "abusefilter-status-global": "ගෝලීය",
+ "abusefilter-list-options": "විකල්ප",
+ "abusefilter-list-options-deleted": "මකාදැමුණු පෙරහන්:",
+ "abusefilter-list-options-deleted-only": "මකාදැමුණු පෙරහන් පමණක් පෙන්වන්න",
+ "abusefilter-list-options-deleted-hide": "මකාදැමුණු පෙරහන් සඟවන්න",
+ "abusefilter-list-options-deleted-show": "මකාදැමුණු පෙරහන් ඇතුළත් කරන්න",
+ "abusefilter-list-options-scope": "පෙරහන් මේවා වෙතින් පෙන්වන්න:",
+ "abusefilter-list-options-scope-local": "ප්‍රාදේශීය විකිය",
+ "abusefilter-list-options-scope-global": "ගෝලීය නීතිරීති",
+ "abusefilter-list-options-disabled": "අක්‍රීය කෙරුණු පෙරහන්:",
+ "abusefilter-list-options-hidedisabled": "අක්‍රීය පෙරහන් සඟවන්න",
+ "abusefilter-list-options-submit": "යාවත්කාල කරන්න",
+ "abusefilter-tools-text": "අපයෙදුම් පෙරහන් සූත්‍රකරණය සහ නිදොස් කිරීමෙහිදී ප්‍රයෝජනවත් විය හැකි මෙවලම් කිහිපයක් මෙන්න.",
+ "abusefilter-tools-expr": "උච්චාරණ පරීක්ෂක",
+ "abusefilter-tools-submitexpr": "ඇගයුම් කරන්න",
+ "abusefilter-tools-reautoconfirm": "ස්වයංතහවුරු කිරීම් තත්වය නැවත පිහිටුවන්න",
+ "abusefilter-tools-reautoconfirm-user": "පරිශීලකයා:",
+ "abusefilter-tools-reautoconfirm-submit": "නැවත-ස්වයංතහවුරු කිරීම",
+ "abusefilter-reautoconfirm-none": "එම පරිශීලකයා සතුව {{GENDER:$1|ඔහුගේ|ඇයගේ|ඔවුන්ගේ}} ස්වයංතහවුරුකිරීම් තත්වය අත්හිටුවා නොමැත.",
+ "abusefilter-reautoconfirm-notallowed": "ස්වයංතහවුරු කිරීම් තත්වය නැවත පිහිටුවීමට ඔබට ඉඩ නොදේ.",
+ "abusefilter-reautoconfirm-done": "ගිණුම්වල ස්වයංතහවුරු කිරීමේ තත්වය නැවත පිහිටුවන ලදී",
+ "abusefilter-edit-subtitle": "$1 පෙරහන සංස්කරණය කරමින්",
+ "abusefilter-edit-subtitle-new": "පෙරහන තනමින්",
+ "abusefilter-edit-status-label": "සංඛ්‍යාන දත්ත:",
+ "abusefilter-edit-new": "නව පෙරහන",
+ "abusefilter-edit-save": "පෙරහන සුරකින්න",
+ "abusefilter-edit-id": "පෙරනයේ නම:",
+ "abusefilter-edit-description": "විස්තරය:\n:''(පොදුවේ නැරඹිය හැකි)''",
+ "abusefilter-edit-group": "පෙරහන් කාණ්ඩය:",
+ "abusefilter-edit-flags": "ධජ:",
+ "abusefilter-edit-enabled": "මෙම පෙරහන සක්‍රීය කරන්න",
+ "abusefilter-edit-deleted": "මැකුවා ලෙස සලකුණු කරන්න",
+ "abusefilter-edit-hidden": "පොදු දර්ශනයෙන් මෙම පෙරහනේ ඇති තොරතුරු සඟවන්න",
+ "abusefilter-edit-global": "ගෝලීය පෙරහන",
+ "abusefilter-edit-rules": "කොන්දේසි:",
+ "abusefilter-edit-notes": "සටහන්:",
+ "abusefilter-edit-lastmod": "පෙරහන අවසන් වරට වෙනස් කලේ:",
+ "abusefilter-edit-lastmod-text": "$2 විසින් $1",
+ "abusefilter-edit-hitcount": "පෙරහන් වැදීම්:",
+ "abusefilter-edit-consequences": "ගැළපුණු විට සිදු කල යුතු ක්‍රියාකාරකම්",
+ "abusefilter-edit-action-warn": "පරිශීලකට අවවාද කිරීමෙන් පසු මෙම ක්‍රියාවන් පුරන්න",
+ "abusefilter-edit-action-disallow": "ප්‍රශ්න විමසීමේදී ක්‍රියාවක් සිදු කිරීමෙන් පරිශීලක වලක්වන්න.",
+ "abusefilter-edit-action-blockautopromote": "පරිශීලකගේ ස්වයංතහවුරුකිරීම් තත්වය අහෝසි කරන්න",
+ "abusefilter-edit-action-degroup": "සියලුම හිමිකම් සමූහයන්ගෙන් මෙම පරිශිලකයා ඉවත් කරන්න",
+ "abusefilter-edit-action-block": "පරිශීලකගේ සහ/හෝ අයිපී ලිපිනය සංස්කරණයෙන් වාරණය කරන්න",
+ "abusefilter-edit-action-throttle": "පරිශීලක විසින් අනුපාත සීමාවට ගමන් කර ඇත්නම් පමණක් ක්‍රියාවන් පුරන්න",
+ "abusefilter-edit-action-rangeblock": "පරිශීලක උපදවන /16 පරාසයෙන් වාරණය කරන්න",
+ "abusefilter-edit-action-tag": "ඉදිරි නිර්ක්ෂණ සඳහා සංස්කරණය ටැග් කරන්න",
+ "abusefilter-edit-throttle-count": "අවසරදෙන ක්‍රියාකාරකම් ගණන:",
+ "abusefilter-edit-throttle-period": "කාලපරිච්ඡේදය:",
+ "abusefilter-edit-throttle-seconds": "{{PLURAL:$1|තත්පර|තත්පර}} $1 ක්",
+ "abusefilter-edit-warn-message": "අවවාද සඳහා යොදාගත හැකි පද්ධති පණිවුඩය:",
+ "abusefilter-edit-warn-other": "අනිත් පණිවුඩය",
+ "abusefilter-edit-warn-other-label": "අනෙත් පණිවුඩයේ පිටු නාමය:\n:''(මාධ්‍යවිකි උපසර්ගය නොමැතිව)''",
+ "abusefilter-edit-warn-actions": "ක්‍රියාකාරකම්:",
+ "abusefilter-edit-warn-preview": "තෝරාගත් පණිවුඩය පෙන්වන්න",
+ "abusefilter-edit-warn-edit": "තෝරාගත් පණිවුඩය තනන්න/සංස්කරණය කරන්න",
+ "abusefilter-edit-tag-tag": "යෙදීමට ඇති ටැගයන් (පේළියකට එකයි):",
+ "abusefilter-edit-denied": "ඔබ විසින් මෙම පෙරහන සඳහා තොරතුරු නැරඹීම නොකළ යුතුය, මන්ද එය පොදු දර්ශනයෙන් සඟවා ඇත.",
+ "abusefilter-edit-main": "පෙරහනේ පරාමිතීන්",
+ "abusefilter-edit-done-subtitle": "පෙරහන සංස්කරණය කරන ලදී",
+ "abusefilter-edit-done": "ඔබ විසින් $1 පෙරහන වෙත ඔබේ වෙනස්කම් සාර්ථකව සුරකින ලදී.",
+ "abusefilter-edit-viewhistory": "මෙම පෙරහනේ ඉතිහාසය නරඹන්න",
+ "abusefilter-edit-history": "ඉතිහාසය:",
+ "abusefilter-edit-check": "කාරක රීති පිරික්සන්න",
+ "abusefilter-edit-badfilter": "ඔබ විශේෂණය කෙරූ පෙරහන නොපවතියි.",
+ "abusefilter-edit-revert": "මෙම පෙරහන විසින් සිදු කර ඇති ක්‍රියාකාරකම් ප්‍රතිවර්තනය කරන්න",
+ "abusefilter-edit-tools": "මෙවලම්:",
+ "abusefilter-edit-test-link": "මෑත සංස්කරණවලට එදිරිව පෙරහන පරික්ෂා කරන්න",
+ "abusefilter-edit-export": "මෙම පෙරහන වෙනත් විකියකට නිර්යාත කරන්න",
+ "abusefilter-edit-syntaxok": "කාරක රීති දෝෂ කිසිවක් හදුනාගත නොහැකිවිය.",
+ "abusefilter-edit-syntaxerr": "කාරක රීති දෝෂයක් හඳුනාගන්නා ලදී: $1",
+ "abusefilter-edit-notallowed": "අපයෙදුම් පෙරහන් තැනීමට හෝ සංස්කරණය කිරීමට ඔබට අවසර ලබා නොදේ",
+ "abusefilter-edit-notallowed-global": "ගෝලීය අපයෙදුම් පෙරහන් තැනීමට හෝ සංස්කරණය කිරීමට ඔබට අවසර ලබා නොදේ",
+ "abusefilter-edit-builder-select": "කර්සරය මත එක් කිරීමට අවශ්‍ය විකල්පයක් තෝරාගන්න",
+ "abusefilter-edit-builder-group-op-arithmetic": "අංකමය මෙභෙයුම් සංකේත",
+ "abusefilter-edit-builder-op-arithmetic-addition": "එකතුකිරීම (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "අඩුකිරීම (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "ගුණකිරීම (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "බෙදීම (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "මාපාංකානුකූල (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "බලය (**)",
+ "abusefilter-edit-builder-group-op-comparison": "සංසන්දන සම්බන්ධතා සංකේත",
+ "abusefilter-edit-builder-op-comparison-equal": "එකසමාන (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "සමාන නොවන (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "වඩා අඩු (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "වඩා වැඩි (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "අඩු හෝ සමාන (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "වැඩි හෝ සමාන (>=)",
+ "abusefilter-edit-builder-group-op-bool": "බූලියන් සම්බන්ධතා සංකේත",
+ "abusefilter-edit-builder-op-bool-not": "නැත (!)",
+ "abusefilter-edit-builder-op-bool-and": "සහ (&)",
+ "abusefilter-edit-builder-op-bool-or": "හෝ (|)",
+ "abusefilter-edit-builder-group-misc": "සංකීර්ණ",
+ "abusefilter-edit-builder-misc-in": "තන්තුවේ අඩංගු වේ (in)",
+ "abusefilter-edit-builder-misc-like": "ගැලපුම් රටාව (like)",
+ "abusefilter-edit-builder-misc-rlike": "ගැලපුම් ප්‍රතිශ්‍රීතනය (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "Matches regex, case insensitive (irlike)",
+ "abusefilter-edit-builder-misc-contains": "වම් තන්තුවේ දකුණු තන්තුව අඩංගු වේ (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "තන්තුවේ වාච්‍යාර්ථය (\"\")",
+ "abusefilter-edit-builder-misc-tern": "ත්‍රයාත්මක ක්‍රියාකාරක (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "කොන්දේසිගත (if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "කාර්යයන්",
+ "abusefilter-edit-builder-funcs-length": "තන්තුවේ දිග (දුර)",
+ "abusefilter-edit-builder-funcs-lcase": "To lower case (lcase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "ව්‍යාකූල අක්ෂරයන් සමනය කරන්න (ව්‍යාඅස)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "ද්විත්ව-අක්ෂරයන් ඉවත් කරන්න (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "විශේෂ අක්ෂර /අක්ෂර එකතුව(specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "යථා තත්වයට පත් කිරීම (ප්‍රමත)",
+ "abusefilter-edit-builder-funcs-count": "Y තන්තුව මත X තන්තුව පෙනීසිටින වාර ගණන (count)",
+ "abusefilter-edit-builder-funcs-rcount": "Y තන්තුව මත regex X පෙනීසිටින වාර ගණන (rcount)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "සුදුඅවකාශය ඉවත් කරන්න (සුඅඉවත්)",
+ "abusefilter-edit-builder-funcs-rmspecials": "විශේෂ අක්ෂර ඉවත් කරන්න (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "අයිපී ලිපිනය පරාසයේ තිබේද? (අ_ලි_පතිබේ)",
+ "abusefilter-edit-builder-funcs-contains-any": "බහුවිධ උපතන්තු සඳහා තන්තුවක් සොයමින් (contains_any)",
+ "abusefilter-edit-builder-funcs-substr": "උපතන්ත්‍රය (උපතන්ත්‍ර)",
+ "abusefilter-edit-builder-funcs-strpos": "තන්තුවේ උපතන්තුවල පිහිටීම (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "උපතන්තුව තන්තුවක් සමඟ ප්‍රතිෂ්ඨාපනය කරන්න (str_replace)",
+ "abusefilter-edit-builder-funcs-rescape": "regex හී තන්තුව වාච්‍යාර්ථ ලෙස මඟහරින්න (rescape)",
+ "abusefilter-edit-builder-funcs-set_var": "විචල්‍ය සකසන්න (විච_සක)",
+ "abusefilter-edit-builder-group-vars": "විචල්‍යයන්",
+ "abusefilter-edit-builder-vars-accountname": "ගිණුම් නාමය (ගිණුම් තැනීමේ තිබු)",
+ "abusefilter-edit-builder-vars-timestamp": "වෙනස්කමේ යුනික්ස් කාලමුද්‍රාව",
+ "abusefilter-edit-builder-vars-action": "කාර්යය",
+ "abusefilter-edit-builder-vars-addedlines": "සංස්කරණයේදී එක් කල පේළි",
+ "abusefilter-edit-builder-vars-delta": "සංස්කරණයේදී ප්‍රමාණාත්මක වෙනස්කම",
+ "abusefilter-edit-builder-vars-diff": "සංස්කරණය විසින් සිදු කරන ලද වෙනස්කම්වල අනුමත වෙනස",
+ "abusefilter-edit-builder-vars-newsize": "නව පිටුවේ ප්‍රමාණය",
+ "abusefilter-edit-builder-vars-oldsize": "පැරණි පිටුවේ ප්‍රමාණය",
+ "abusefilter-edit-builder-vars-removedlines": "සංස්කරණයේදී ඉවත් කෙරූ පේළි",
+ "abusefilter-edit-builder-vars-summary": "සාරාංශය/හේතුව සංස්කරණය කරන්න",
+ "abusefilter-edit-builder-vars-article-id": "පිටු හැඳුනුම",
+ "abusefilter-edit-builder-vars-article-ns": "පිටු නාමඅවකාශය",
+ "abusefilter-edit-builder-vars-article-text": "පිටුවේ මාතෘකාව (නාමඅවකාශයක් නොමැතිව)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "සම්පූර්ණ පිටු නාමය",
+ "abusefilter-edit-builder-vars-movedfrom-id": "ගෙනයාම් මූලාශ්‍ර පිටුවේ පිටු හැඳුනුම",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "ගෙනයාම් මූලාශ්‍ර පිටුවේ නාමඅවකාශය",
+ "abusefilter-edit-builder-vars-movedfrom-text": "ගෙනයාම් මූලාශ්‍ර පිටුවේ මාතෘකාව",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "ගෙනයාම් මූලාශ්‍ර පිටුවේ සම්පූර්ණ මාතෘකාව",
+ "abusefilter-edit-builder-vars-movedto-id": "ගෙනයාම් ගමනාන්ත පිටුවේ පිටු හැඳුනුම",
+ "abusefilter-edit-builder-vars-movedto-ns": "ගෙනයාම් ගමනාන්ත පිටුවේ නාමඅවකාශය",
+ "abusefilter-edit-builder-vars-movedto-text": "ගෙනයාම් ගමනාන්ත පිටුවේ මාතෘකාව",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "ගෙනයාම් ගමනාන්ත පිටුවේ සම්පූර්ණ මාතෘකාව",
+ "abusefilter-edit-builder-vars-user-editcount": "පරිශීලකයාගේ සංස්කරණ ගණන",
+ "abusefilter-edit-builder-vars-user-age": "පරිශීලක ගිණුමෙහි වයස",
+ "abusefilter-edit-builder-vars-user-name": "පරිශීලක ගිණුමෙහි නම",
+ "abusefilter-edit-builder-vars-user-groups": "කාණ්ඩ (ව්‍යංග්‍ය සහිතව) පරිශීලකයෝ සිටින",
+ "abusefilter-edit-builder-vars-user-blocked": "පරිශීලක වාරණය කර ඇති නමුත්",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "වේලා විද්‍යුත් තැපැල් ලිපිනය තහවුරු කරන ලදී",
+ "abusefilter-edit-builder-vars-recent-contributors": "පිටුව සඳහා දායකත්වය සැපයූ අවසන් පරිශීලකයෝ දසදෙනා",
+ "abusefilter-edit-builder-vars-all-links": "සියලුම බාහිර සබැඳි නව පාඨයක",
+ "abusefilter-edit-builder-vars-added-links": "සංස්කරණයේදී එකතුවූ සියලුම බාහිර සබැඳියන්",
+ "abusefilter-edit-builder-vars-removed-links": "සංස්කරණයේදී ඉවත්වූ සියලුම බාහිර සබැඳියන්",
+ "abusefilter-edit-builder-vars-old-text": "පැරණි පිටුවේ විකිපාඨය, සංස්කරණයට පෙර",
+ "abusefilter-edit-builder-vars-new-text": "නව පිටුවේ විකිපාඨය, සංස්කරණයට පසු",
+ "abusefilter-edit-builder-vars-new-text-stripped": "නව පිටුවේ පාඨය, ඕනෑම අධිකයකින් පැහැර ගත්තක්",
+ "abusefilter-edit-builder-vars-new-html": "නව අනුවාදයේ ව්‍යාකරණ විග්‍රහ කරන ලද HTML මූලාශ්‍රය",
+ "abusefilter-edit-builder-vars-restrictions-edit": "පිටුවේ ආරක්ෂණ මට්ටම වෙනස් කරන්න",
+ "abusefilter-edit-builder-vars-restrictions-move": "පිටුවේ ආරක්ෂණ මට්ටම ගෙනයන්න",
+ "abusefilter-edit-builder-vars-restrictions-create": "පිටුවේ ආරක්ෂාව තනන්න",
+ "abusefilter-edit-builder-vars-restrictions-upload": "ගොනුවේ උඩුගත කිරීම් ආරක්ෂණය",
+ "abusefilter-edit-builder-vars-old-text-stripped": "පැරණි පිටුවේ පාඨය, stripped of any markup",
+ "abusefilter-edit-builder-vars-old-links": "මෙම පිටුවේ ඇති සබැඳි, සංස්කරණයට පෙර",
+ "abusefilter-edit-builder-vars-old-html": "පැරණි පිටුවේ විකිපෙළ, HTML වෙත parsed කරන ලදී",
+ "abusefilter-edit-builder-vars-minor-edit": "වුවත් නොවුවත් සංස්කරණය සුළු ලෙස සලකුණු කර ඇත",
+ "abusefilter-edit-builder-vars-file-sha1": "ගොනු අන්තර්ගතවල SHA1 පූරකය",
+ "abusefilter-filter-log": "මෑත සිදුවූ පෙරහන් වෙනස් කම්",
+ "abusefilter-history": "#$1 අපයෙදුම් පෙරහන සඳහා ඉතිහාසය වෙනස් කරන්න",
+ "abusefilter-history-foruser": "$1 විසින් සිදු කල වෙනස්කම්",
+ "abusefilter-history-hidden": "සඟවනලද",
+ "abusefilter-history-enabled": "සක්‍රීය කරන ලදී",
+ "abusefilter-history-global": "ගෝලීය",
+ "abusefilter-history-timestamp": "වේලාව",
+ "abusefilter-history-user": "පරිශීලකයා",
+ "abusefilter-history-public": "පොදු පෙරහන් විස්තරය",
+ "abusefilter-history-flags": "ධජ",
+ "abusefilter-history-filter": "පෙරහන් නීතිය",
+ "abusefilter-history-comments": "පරිකථන",
+ "abusefilter-history-actions": "කාර්යයන්",
+ "abusefilter-history-backedit": "පෙරහන් සංස්කාරක වෙත නැවත යන්න",
+ "abusefilter-history-deleted": "මකාදමන ලදී",
+ "abusefilter-history-filterid": "පෙරහන",
+ "abusefilter-history-select-legend": "සෙවුම පිරිසිදු කරන්න",
+ "abusefilter-history-select-user": "පරිශීලක:",
+ "abusefilter-history-select-submit": "පිරිසිදු කිරීම",
+ "abusefilter-history-diff": "වෙනස් කිරීම්",
+ "abusefilter-history-error-hidden": "ඔබ අයදූ පෙරහන සඟවා ඇත, ඔබට එහි ඉතිහාසය නැරඹිය නොහැක.",
+ "abusefilter-exception-unexpectedatend": "$1 අක්ෂර හීදී අපේක්ෂා නොකළ \"$2\".",
+ "abusefilter-exception-unrecognisedkeyword": "$1 අක්ෂරය හීදී \"$2\" හඳුනා නොගත් මූලපදය.",
+ "abusefilter-exception-unexpectedtoken": "$1 අක්ෂරය හීදී \"$3\" අපේක්ෂා නොකළ ටෝකනය ($2 වර්ගයේ).",
+ "abusefilter-exception-unclosedstring": "$1 අක්ෂරයේදී නොවසනලද තන්තුවක ආරම්භය.",
+ "abusefilter-exception-invalidoperator": "$1 අක්ෂරයේදී \"$2\" වලංගු නොවන කාරකය.",
+ "abusefilter-exception-unrecognisedtoken": "$1 අක්ෂරය හීදී \"$2\" හඳුනා නොගත් ටෝකනය.",
+ "abusefilter-exception-noparams": "$1 අක්ෂරය හීදී \"$2\" කාර්ය වෙත කිසිදු පරාමිතියක් දී නොමැත.",
+ "abusefilter-exception-unrecognisedvar": "$1 අක්ෂරය හීදී හඳුනා නොගත් $2 විචල්‍ය",
+ "abusefilter-action-tag": "ටැගය",
+ "abusefilter-action-throttle": "අවකරය",
+ "abusefilter-action-warn": "අවවාද කරන්න",
+ "abusefilter-action-blockautopromote": "ස්වයංපෙළඹවීම වාරණය කරන්න",
+ "abusefilter-action-block": "වාරණය",
+ "abusefilter-action-degroup": "සමූහයන්ගෙන් ඉවත් කරන්න",
+ "abusefilter-action-rangeblock": "පරාස-වාරණය",
+ "abusefilter-action-disallow": "ඉඩනොදෙන්න",
+ "abusefilter-revert-title": "$1 පෙරහන මඟින් සිදු කල සියලු වෙනස්කම් ප්‍රතිවර්තනය කරන්න",
+ "abusefilter-revert-search-legend": "ප්‍රතිවර්තනය කිරීමට අවශ්‍ය අපයෙදුම් පෙරහන් ක්‍රියාකාරකම් තෝරන්න",
+ "abusefilter-revert-periodstart": "කාලච්ඡේද ආරම්භය:",
+ "abusefilter-revert-periodend": "කාලච්ඡේද අවසානය:",
+ "abusefilter-revert-search": "කාර්යන් තෝරන්න",
+ "abusefilter-revert-filter": "පෙරහන:",
+ "abusefilter-revert-confirm": "තහවුරු කරන්න",
+ "abusefilter-revert-reasonfield": "හේතුව:",
+ "abusefilter-test": "පෙර සංස්කරණවලට එදිරිව පෙරහන පරික්ෂා කරන්න",
+ "abusefilter-test-legend": "පෙරහන් පරික්ෂාව",
+ "abusefilter-test-load-filter": "පෙරහන් හැඳුනුම පූරණය කරන්න:",
+ "abusefilter-test-submit": "පරීක්ෂණය",
+ "abusefilter-test-load": "පූරණය",
+ "abusefilter-test-user": "පරිශීලකයා විසින් සිදු කල වෙනස්කම්:",
+ "abusefilter-test-period-start": "පසුව සිදු කෙරු වෙනස්කම්:",
+ "abusefilter-test-period-end": "පෙර කරන ලද වෙනස්කම්:",
+ "abusefilter-test-page": "පිටුවට සිදු කෙරූ වෙනස්කම්:",
+ "abusefilter-test-shownegative": "පෙරහනට නොගැලපෙන වෙනස්කම් පෙන්වන්න",
+ "abusefilter-test-syntaxerr": "ඔබ යෙදූ පෙරහන සතුව කාරකරීති දෝෂයක් ඇත.\nඔබට \"කාරක රීති පිරික්සන්න\" බොත්තම එබීමෙන් සම්පූර්ණ පැහැදිලිකිරීමක් ලබා ගත හැක.",
+ "abusefilter-changeslist-examine": "විභාග කරන්න",
+ "abusefilter-examine": "තනි පිටු විභාග කරන්න",
+ "abusefilter-examine-legend": "වෙනස්කම් තෝරන්න",
+ "abusefilter-examine-diff": "වෙනස් URL ලිපිනය:",
+ "abusefilter-examine-user": "පරිශීලක:",
+ "abusefilter-examine-title": "පිටුවේ මාතෘකාව:",
+ "abusefilter-examine-submit": "සොයන්න",
+ "abusefilter-examine-vars": "මෙම වෙනස සඳහා ජනිත කෙරූ විචල්‍යන්",
+ "abusefilter-examine-test": "පෙරහනට එදිරිව මෙම වෙනස්කම පරික්ෂා කරන්න",
+ "abusefilter-examine-test-button": "පෙරහන පරික්ෂා කරන්න",
+ "abusefilter-examine-match": "මෙම වෙනසට පෙරහන ගැලපුණි.",
+ "abusefilter-examine-nomatch": "මෙම වෙනස්කමට පෙරහන සමානකමක් නොදක්වයි.",
+ "abusefilter-examine-syntaxerror": "පෙරහන සතුව වලංගු නොවන කාරක රීතියක් ඇත",
+ "abusefilter-examine-notfound": "ඔබ අයදූ වෙනස සොයා ගත නොහැක.",
+ "abusefilter-examine-incompatible": "ඔබ අයැදූ වෙනස්කමට අපයෙදුම් පෙරහන සහය නොදක්වයි",
+ "abusefilter-examine-noresults": "ඔබ ඉදිරිපත්කල සෙවුම් පරාමිතීන් සඳහා ප්‍රතිපල කිසිවක් හමුනොවුණි.",
+ "abusefilter-topnav": "'''අපයෙදුම් පෙරහන් යාත්‍රණය'''",
+ "abusefilter-topnav-home": "මුල් පිටුව",
+ "abusefilter-topnav-test": "කාණ්ඩ පරික්ෂාව",
+ "abusefilter-topnav-examine": "පසුවුණු සංස්කරණයන් විභාග කරන්න",
+ "abusefilter-topnav-log": "අපයෙදුම් ලඝු සටහන",
+ "abusefilter-topnav-tools": "නිදොස් කිරීම් මෙවලම්",
+ "abusefilter-topnav-import": "පෙරහන ආයාත කරන්න",
+ "abusefilter-log-name": "අපයෙදුම් පෙරහන් ලඝු සටහන",
+ "abusefilter-log-header": "පෙරහන් වෙත සිදු කරන ලද වෙනස්කම් වල සාරාංශයක් මෙම ලඝු සටහනෙන් පෙන්වයි.\nසම්පූර්ණ විස්තර සඳහා, මෑත පෙරහන් වෙනස්කම්වල [[Special:AbuseFilter/history|ලැයිස්තුව]] බලන්න.",
+ "abusefilter-log-noresults": "ප්‍රතිඵල නොමැත",
+ "abusefilter-diff-title": "අනුවාද අතර වෙනස්කම්",
+ "abusefilter-diff-item": "අයිතමය",
+ "abusefilter-diff-version": "$1 ගෙන් අනුවාදය $2 විසින්",
+ "abusefilter-diff-info": "මූලික තොරතුරු",
+ "abusefilter-diff-pattern": "පෙරහනේ කොන්දේසි",
+ "abusefilter-diff-invalid": "අයැදූ අනුවාදයන් පමුණුවීමට නොහැක",
+ "abusefilter-diff-backhistory": "පෙරහන් ඉතිහාසය වෙත නැවතත්",
+ "abusefilter-import-submit": "දත්ත ආයාත කරන්න",
+ "abusefilter-group-default": "සාමාන්‍ය"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/sk.json b/www/wiki/extensions/AbuseFilter/i18n/sk.json
new file mode 100644
index 00000000..4f44a092
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/sk.json
@@ -0,0 +1,405 @@
+{
+ "@metadata": {
+ "authors": [
+ "Helix84",
+ "Mormegil",
+ "Teslaton",
+ "Sudo77(new)",
+ "Kusavica",
+ "Matma Rex",
+ "TomášPolonec",
+ "Patriccck"
+ ]
+ },
+ "abusefilter-desc": "Vykonáva automatickú heuristiku úprav.",
+ "abusefilter": "Nastavenie filtra zneužití",
+ "abuselog": "Záznam zneužití",
+ "abusefilter-intro": "Vitajte v rozhraní na správu Filtrov zneužití.\nFilter zneužití je automatizovaný softvérový mechanizmus, ktorý na všetky operácie používa automatickú heuristiku.\nToto rozhranie zobrazuje zoznam definovaných filtrov a umožňuje ich zmenu.",
+ "abusefilter-mustbeeditor": "Z bezpečnostných dôvodov môžu toto rozhraniepoužívať iba používatelia s právom meniť filtre zneužitia.",
+ "abusefilter-warning": "'''Upozornenie:''' Táto činnosť bola automaticky identifikovaná ako škodlivá.\nNekonštruktívne úpravy budú rýchlo vrátené a zjavné alebo opakované nekonštruktívne zásahy budú mať za následok zablokovanie vášho účtu alebo IP adresy. Ak veríte, že je táto úprava konštruktívna, môžete znova kliknúť na Uložiť, čím ju potvrdíte.\nStručný popis pravidla zneužitia, ktoré zachytilo vašu úpravu, je: $1",
+ "abusefilter-disallowed": "Táto činnosť bola automaticky identifikovaná ako škodlivá a preto bola odmietnutá.\nAk veríte, že je táto úprava konštruktívna, kontaktujte prosím správcu a oznámte im, čo ste sa {{GENDER:|pokúšal|pokúšala|pokúšali}} urobiť.\nStručný popis pravidla zneužitia, ktoré zachytilo vašu úpravu, je: $1",
+ "abusefilter-blocked-display": "Táto činnosť bola automaticky identifikovaná ako škodlivá a preto bola odmietnutá.\nNaviac, na ochranu {{GRAMMAR:genitív|{{SITENAME}}}} boli zablokované úpravy z vášho používateľského účtu a všetkých príslušných IP adries.\nAk veríte, že to je omyl, kontaktujte prosím správcu.\nStručný popis pravidla zneužitia, ktoré zachytilo vašu úpravu, je: $1",
+ "abusefilter-degrouped": "Táto činnosť bola automaticky identifikovaná ako škodlivá.\nNásledne bola odmietnutá a pretože existuje podozrenie, že váš účet bol zneužitý, všetky práva mu boli odobrané.\nAk veríte, že to je omyl, kontaktujte prosím byrokrata, vysvetlite mu, čo ste sa pokúšali urobiť a môže obnoviť vaše práva.\nStručný popis pravidla zneužitia, ktoré zachytilo vašu úpravu, je: $1",
+ "abusefilter-autopromote-blocked": "Táto činnosť bola automaticky identifikovaná ako škodlivá a preto bola odmietnutá.\nNaviac, ako bezpečnostné opatrenie, boli vášmu účtu dočasne odobrané niektoré oprávnenia, ktoré sa bežne prideľujú dôveryhodným účtom.\nStručný popis pravidla zneužitia, ktoré zachytilo vašu úpravu, je: $1",
+ "abusefilter-blocker": "Filter zneužití",
+ "abusefilter-blockreason": "Automaticky zachytené filtrom zneužití. Popis účinného pravidla: $1",
+ "abusefilter-degroupreason": "Práva automaticky odobral filter zneužívania. Popis pravidla: $1",
+ "abusefilter-accountreserved": "Tento názov účtu je vyhradený pre použitie filtrom zneužití.",
+ "right-abusefilter-modify": "Zmeniť filtre zneužití",
+ "right-abusefilter-view": "Zobraziť filtre zneužití",
+ "right-abusefilter-log": "Zobraziť záznam zneužití",
+ "right-abusefilter-log-detail": "Zobraziť podrobnosti položiek záznamu zneužití",
+ "right-abusefilter-private": "Zobraziť osobné údaje v zázname zneužití",
+ "right-abusefilter-modify-restricted": "Zmeniť filtre zneužitia s obmedzenými operáciami",
+ "right-abusefilter-revert": "Vrátiť všetky zmeny vykonané zadaným filtrom zneužitia",
+ "right-abusefilter-view-private": "Zobraziť filtre zneužitia označené ako súkromné",
+ "right-abusefilter-log-private": "Zobrazenie protokolovacích záznamov filtrov zneužívania označených ako tajné",
+ "right-abusefilter-hide-log": "Skryť položky v zázname zneužití",
+ "right-abusefilter-hidden-log": "Zobraziť skryté položky v zázname zneužití",
+ "right-abusefilter-modify-global": "Vytvoriť alebo upraviť globálne filtre zneužívania",
+ "action-abusefilter-modify": "zmeniť filtre zneužití",
+ "action-abusefilter-view": "zobraziť filtre zneužití",
+ "action-abusefilter-log": "zobraziť filter zneužití",
+ "action-abusefilter-log-detail": "zobraziť podrobné záznamy filtra zneužití",
+ "action-abusefilter-private": "zobraziť privátne údaje v zázname filtra zneužití",
+ "action-abusefilter-modify-restricted": "zmeniť filtre zneužití s obmedzenými operáciami",
+ "action-abusefilter-revert": "vrátiť všetky zmeny vykonané daným filtrom zneužití",
+ "action-abusefilter-view-private": "zobraziť filtre zneužitia označené ako súkromné",
+ "abusefilter-log": "Záznam filtra zneužití",
+ "abusefilter-log-summary": "Tento záznam zobrazuje zoznam všetkých operácií, ktoré filtre zachytili.",
+ "abusefilter-log-search": "Hľadať v zázname filtra zneužití",
+ "abusefilter-log-search-user": "Používateľ:",
+ "abusefilter-log-search-filter": "ID filtra:",
+ "abusefilter-log-search-title": "Názov:",
+ "abusefilter-log-search-wiki": "Wiki:",
+ "abusefilter-log-search-entries-label": "Viditeľnosť:",
+ "abusefilter-log-search-entries-all": "Všetky vstupy",
+ "abusefilter-log-search-submit": "Hľadať",
+ "abusefilter-log-entry": "$1: $2 spustil filter zneužití, pri vykonávaní operácie „$3“ na $4.\nVykonané opatrenia: $5;\nPopis filtra: $6",
+ "abusefilter-log-entry-withdiff": "$1: $2 {{GENDER:$8|spustil|spustila|spustil(a)}} filter pri činnosti „$3“ na $4.\nVykonané opatrenia: $5;\nPopis filtra: $6 ($7)",
+ "abusefilter-log-detailedentry-meta": "$1: $2 {{GENDER:$9|spustil|spustila|spustil(a)}} filter $3, vykonaná operácia „$4“ na $5.\nVykonané opatrenia: $6;\nPopis filtra: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "globálny filter $1",
+ "abusefilter-log-detailedentry-local": "filter $1",
+ "abusefilter-log-detailslink": "podrobnosti",
+ "abusefilter-log-diff": "rozdiel",
+ "abusefilter-log-hidelink": "zmeniť viditeľnosť",
+ "abusefilter-log-details-legend": "Podrobnosti položky záznamu $1",
+ "abusefilter-log-details-var": "Premenná",
+ "abusefilter-log-details-val": "Hodnota",
+ "abusefilter-log-details-vars": "Parametre operácie",
+ "abusefilter-log-details-private": "Osobné údaje",
+ "abusefilter-log-details-ip": "Zdrojová IP adresa",
+ "abusefilter-log-noactions": "žiadne",
+ "abusefilter-log-details-diff": "Zmeny vykonané v úprave",
+ "abusefilter-log-linkoncontribs": "záznam zneužití",
+ "abusefilter-log-linkoncontribs-text": "Záznam zneužití tohto používateľa",
+ "abusefilter-log-hidden": "(položka skrytá)",
+ "abusefilter-log-hidden-implicit": "(položka skrytá, pretože bola odstránená revízia)",
+ "abusefilter-log-cannot-see-details": "Nemáte oprávnenie na prehliadanie podrobností tejto položky.",
+ "abusefilter-log-details-hidden": "Nemôžete si pozrieť podrobnosti tejto položky, pretože je verejnosti skrytá.",
+ "abusefilter-log-hide-legend": "Skryť položku v zázname",
+ "abusefilter-log-hide-id": "ID položky záznamu:",
+ "abusefilter-log-hide-hidden": "Skryť túto položku pred verejnosťou",
+ "abusefilter-log-hide-reason": "Dôvod:",
+ "abusefilter-log-hide-forbidden": "Nemáte oprávnenie skrývať položky záznamu zneužití.",
+ "abusefilter-logentry-suppress": "skryl „[[$1]]“",
+ "abusefilter-logentry-unsuppress": "odkryl „[[$1]]“",
+ "logentry-abusefilter-hit": "$1 {{GENDER:$2|spustil|spustila|spustil(a)}} $4, ktorý vykonal činnosť „$5“ na $3. Vykonané kroky: $6 ($7)",
+ "abusefilter-management": "Správa filtra zneužití",
+ "abusefilter-list": "Všetky filtre",
+ "abusefilter-list-id": "ID filtra",
+ "abusefilter-list-status": "Stav",
+ "abusefilter-list-public": "Verejný popis",
+ "abusefilter-list-consequences": "Následky",
+ "abusefilter-list-visibility": "Viditeľnosť",
+ "abusefilter-list-hitcount": "Počet zásahov",
+ "abusefilter-list-edit": "upraviť",
+ "abusefilter-list-details": "Podrobnosti",
+ "abusefilter-list-limit": "Počet na stránku:",
+ "abusefilter-list-lastmodified": "Posledná zmena",
+ "abusefilter-list-group": "Skupinový filter",
+ "abusefilter-hidden": "Súkromné",
+ "abusefilter-unhidden": "Verejné",
+ "abusefilter-enabled": "Zapnuté",
+ "abusefilter-deleted": "Zmazané",
+ "abusefilter-disabled": "Vypnuté",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|zásah|zásahov}}",
+ "abusefilter-new": "Vytvoriť nový filter",
+ "abusefilter-return": "Vrátiť sa späť na správu filtrov",
+ "abusefilter-status-global": "Globálny",
+ "abusefilter-list-options": "Možnosti",
+ "abusefilter-list-options-deleted": "Zmazané filtre:",
+ "abusefilter-list-options-deleted-only": "Zobraziť iba zmazané filtre",
+ "abusefilter-list-options-deleted-hide": "Skryť zmazané filtre",
+ "abusefilter-list-options-deleted-show": "Vrátane zmazaných filtrov",
+ "abusefilter-list-options-scope": "Zobraziť filtre:",
+ "abusefilter-list-options-scope-local": "Lokálna wiki",
+ "abusefilter-list-options-scope-global": "Globálne pravidlá",
+ "abusefilter-list-options-scope-all": "Lokálne aj globálne pravidlá",
+ "abusefilter-list-options-disabled": "Vypnuté filtre:",
+ "abusefilter-list-options-hidedisabled": "Skryť vypnuté filtre",
+ "abusefilter-list-options-submit": "Aktualizovať",
+ "abusefilter-tools-text": "Tu sa nachádzajú niektoré nástroje, ktoré možno využiť pri tvorbe a ladení filtrov zneužitia.",
+ "abusefilter-tools-expr": "Tester výrazov",
+ "abusefilter-tools-submitexpr": "Vyhodnotiť",
+ "abusefilter-tools-reautoconfirm": "Obnoviť stav zaregistrovaný",
+ "abusefilter-tools-reautoconfirm-user": "Používateľ:",
+ "abusefilter-tools-reautoconfirm-submit": "Potvrdiť zaregistrovanie",
+ "abusefilter-reautoconfirm-none": "Používateľ nemal vypnutý {{GENDER:$1|svoj}} stav „registrovaný”.",
+ "abusefilter-reautoconfirm-notallowed": "Nemáte oprávnenie obnoviť stav „registrovaný”.",
+ "abusefilter-reautoconfirm-done": "Stav účtu „potvrdený“ bol obnovený",
+ "abusefilter-status": "{{PLURAL:$1|Posledná $1 operácia|Z posledných $1 operácií}} $2 ($3 %) {{PLURAL:$4|dosiahla|dosiahli|dosiahlo}} hraničnú podmienku $4. $5 ($6 %) {{PLURAL:$5|zodpovedala|zodpovedali|zodpovedalo}} momentálne zapnutým filtrom.",
+ "abusefilter-edit": "Úprava filtra zneužití",
+ "abusefilter-edit-subtitle": "Úprava filtra $1",
+ "abusefilter-edit-subtitle-new": "Vytvorenie filtra",
+ "abusefilter-edit-oldwarning": "<strong>Upravujete starú verziu tohto filtra. Uvedené štatistiky sa týkajú najnovšej verzie filtra. Ak svoje zmeny uložíte, prepíšete všetky zmeny od revízie, ktorú upravujete.</strong> &bull; [[Special:AbuseFilter/history/$2|Vrátiť sa na históriu tohto filtra]]",
+ "abusefilter-edit-status-label": "Štatistika:",
+ "abusefilter-edit-status": "{{PLURAL:$1|Z poslednej $1 operácie|Z posledných $1 operácií}} tomuto filtru {{PLURAL:$2|zodpovedala|zodpovedali|zodpovedalo}} $2 ($3 %).",
+ "abusefilter-edit-status-profile": "{{PLURAL:$1|Z poslednej $1 operácie|Z posledných $1 operácií}} tomuto filtru {{PLURAL:$2|zodpovedala|zodpovedali|zodpovedalo}} $2 ($3 %).\nPriemerný čas behu je $4 ms a spotrebuje $5 {{PLURAL:$5|podmienku|podmienky|podmienok}} z celkového povoleného počtu podmienok.",
+ "abusefilter-edit-new": "Nový filter",
+ "abusefilter-edit-save": "Uložiť filter",
+ "abusefilter-edit-id": "ID filtra:",
+ "abusefilter-edit-switch-editor": "Prepnúť editor",
+ "abusefilter-edit-description": "Popis:\n:''(verejne viditeľný)''",
+ "abusefilter-edit-group": "Skupinový filter:",
+ "abusefilter-edit-flags": "Príznaky:",
+ "abusefilter-edit-enabled": "Zapnúť tento filter",
+ "abusefilter-edit-deleted": "Označiť ako zmazané",
+ "abusefilter-edit-hidden": "Skryť verejné zobrazovanie podrobností filtra",
+ "abusefilter-edit-global": "Globálny filter",
+ "abusefilter-edit-rules": "Pravidlá:",
+ "abusefilter-edit-notes": "Poznámky:\n:''(súkromný)''",
+ "abusefilter-edit-lastmod": "Posledná zmena filtra:",
+ "abusefilter-edit-lastmod-text": "$1, $2",
+ "abusefilter-edit-hitcount": "Počet zásahov filtra:",
+ "abusefilter-edit-consequences": "Opatrenia vykonané pri zásahu",
+ "abusefilter-edit-action-warn": "Spustiť tieto operácie po varovaní používateľa",
+ "abusefilter-edit-action-disallow": "Zamietnuť používateľovi vykonať operáciu",
+ "abusefilter-edit-action-blockautopromote": "Odobrať používateľovi stav „zaregistrovaný”",
+ "abusefilter-edit-action-degroup": "Odstrániť používateľa zo všetkých privilegovaných skupín",
+ "abusefilter-edit-action-block": "Zablokovať úpravy používateľa a/alebo IP adresy",
+ "abusefilter-edit-action-throttle": "Spustiť operáciu iba ak používateľ dosiahne limit rýchlosti úprav",
+ "abusefilter-edit-action-rangeblock": "Zablokovať /16 rozsah, z ktorého pochádza adresa používateľa.",
+ "abusefilter-edit-action-tag": "Označiť úpravu na ďalšiu kontrolu.",
+ "abusefilter-edit-throttle-count": "Počet povolených operácií:",
+ "abusefilter-edit-throttle-period": "Časový interval:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|sekunda|sekundy|sekúnd}}",
+ "abusefilter-edit-throttle-groups": "Obmedzenie rýchlosti úprav skupiny:\n:''(jedna na riadok, viaceré oddelené čiarkami)''",
+ "abusefilter-edit-warn-message": "Systémová správa použitá pri upozornení:",
+ "abusefilter-edit-warn-other": "Iná správa",
+ "abusefilter-edit-warn-other-label": "Názov stránky inej správy:\n:''(bez predpony MediaWiki)''",
+ "abusefilter-edit-warn-actions": "Operácie:",
+ "abusefilter-edit-warn-preview": "Zobraziť náhľad vybranej správy",
+ "abusefilter-edit-warn-edit": "Vytvoriť/upraviť vybranú správu",
+ "abusefilter-edit-tag-tag": "Označiť nasledovnými značkami (jednu na riadok):",
+ "abusefilter-edit-denied": "Nemôžete zobraziť podrobnosti toho filtra, pretože jeho verejné zobrazovanie je vypnuté",
+ "abusefilter-edit-main": "Parametre filtra",
+ "abusefilter-edit-done-subtitle": "Filter bol upravený",
+ "abusefilter-edit-done": "Úspešne ste uložili zmeny filtra $1.",
+ "abusefilter-edit-badsyntax": "Filter, ktorý ste zadali, obsahuje syntaktickú chybu. Výstup syntaktického analyzátora: <pre>$1</pre>",
+ "abusefilter-edit-restricted": "Nemôžete upravovať tento filter, pretože obsahuje jednu alebo viac obmedzených operácií. Prosím, požiadajte používateľa s potrebným oprávnením, aby za vás vykonal túto zmenu.",
+ "abusefilter-edit-viewhistory": "Zobraziť históriu tohto filtra",
+ "abusefilter-edit-history": "História:",
+ "abusefilter-edit-check": "Skontrolovať syntax",
+ "abusefilter-edit-badfilter": "Filter, ktorý ste zadali, neexistuje",
+ "abusefilter-edit-revert": "Vrátiť operácie vykonané týmto filtrom",
+ "abusefilter-edit-tools": "Nástroje:",
+ "abusefilter-edit-test-link": "Otestovať tento filter na posledných úpravách",
+ "abusefilter-edit-export": "Exportovať tento filter do inej wiki",
+ "abusefilter-edit-syntaxok": "Neboli zistené žiadne syntaktické chyby.",
+ "abusefilter-edit-syntaxerr": "Zistená syntaktická chyba: $1",
+ "abusefilter-edit-bad-tags": "Jedna alebo viac zo značiek, ktoré ste uviedli nie je platných.\nZnačky by mali byť krátke a nemali by obsahovať špeciálne znaky.",
+ "abusefilter-edit-notallowed": "Nemáte oprávnenie vytvárať alebo meniť filtre zneužití",
+ "abusefilter-edit-notallowed-global": "Nemáte oprávnenie vytvárať alebo meniť globálne filtre zneužití",
+ "abusefilter-edit-builder-select": "Vyberte voľbu, ktorá sa pridá na miesto, kde je kurzor",
+ "abusefilter-edit-builder-group-op-arithmetic": "Aritmetické operátory",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Sčítanie (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Odčítanie (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Násobenie (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Delenie (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Modulo (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Umocnenie (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Operátory porovnávania",
+ "abusefilter-edit-builder-op-comparison-equal": "Rovná sa (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Nerovná sa (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "Menší ako (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Väčší ako (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Menší alebo rovný ako (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Väčší alebo rovný ako (>=)",
+ "abusefilter-edit-builder-group-op-bool": "Operátory pravdivostných hodnôt",
+ "abusefilter-edit-builder-op-bool-not": "Negácia (!)",
+ "abusefilter-edit-builder-op-bool-and": "Logický súčin (&)",
+ "abusefilter-edit-builder-op-bool-or": "Logický súčet (|)",
+ "abusefilter-edit-builder-group-misc": "Rôzne",
+ "abusefilter-edit-builder-misc-in": "Reťazec obsahuje (in)",
+ "abusefilter-edit-builder-misc-like": "Zodpovedá vzoru (like)",
+ "abusefilter-edit-builder-misc-rlike": "Zodpovedá regulárnemu výrazu (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "Zodpovedá regulárnemu výrazu, nezáleží na veľkosti písmen (irlike)",
+ "abusefilter-edit-builder-misc-contains": "Reťazec vľavo obsahuje reťazec vpravo (obsahuje)",
+ "abusefilter-edit-builder-misc-stringlit": "Reťazcový literál (\"\")",
+ "abusefilter-edit-builder-misc-tern": "Ternárny operátor (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "Podmienka (if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "Funkcie",
+ "abusefilter-edit-builder-funcs-length": "Dĺžka reťazca (length)",
+ "abusefilter-edit-builder-funcs-lcase": "Na malé písmená (lcase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "Normalizovať zameniteľné znaky (ccnorm)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "Odstrániť dvojité znaky (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "Špeciálne znaky / znakov celkom (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "Normalizovať (norm)",
+ "abusefilter-edit-builder-funcs-count": "Koľkokrát sa reťazec X nachádza v reťazci Y (count)",
+ "abusefilter-edit-builder-funcs-rcount": "Koľkokrát sa regulárny výraz X vyskytuje v texte Y (rcount)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "Odstrániť netlačiteľné znaky (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "Odstrániť špeciálne znaky (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "Patrí IP do rozsahu? (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "Hľadať viacero reťazcov v texte (contains_any)",
+ "abusefilter-edit-builder-funcs-substr": "Podreťazec (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "Pozícia podreťazca v reťazci (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "Nahradiť reťazec reťazcom (str_replace)",
+ "abusefilter-edit-builder-funcs-rescape": "Označkovať reťazec ako literál v regulárnom výraze (rescape)",
+ "abusefilter-edit-builder-funcs-set_var": "Nastaviť premennnú (set_var)",
+ "abusefilter-edit-builder-group-vars": "Premenné",
+ "abusefilter-edit-builder-vars-accountname": "Názov účtu (on account creation)",
+ "abusefilter-edit-builder-vars-timestamp": "Čas úpravy v unixovom formáte",
+ "abusefilter-edit-builder-vars-action": "Operácia",
+ "abusefilter-edit-builder-vars-addedlines": "Riadky pridané pri úprave",
+ "abusefilter-edit-builder-vars-delta": "Zmena veľkosti pri úprave",
+ "abusefilter-edit-builder-vars-diff": "Zjednotený diff zmien vykonaných pri úprave",
+ "abusefilter-edit-builder-vars-newsize": "Nová veľkosť stránky",
+ "abusefilter-edit-builder-vars-oldsize": "Stará veľkosť stránky",
+ "abusefilter-edit-builder-vars-removedlines": "Riadky odstránené pri úprave",
+ "abusefilter-edit-builder-vars-summary": "Zhrnutie úprav/zdôvodnenie",
+ "abusefilter-edit-builder-vars-article-id": "ID stránky",
+ "abusefilter-edit-builder-vars-article-ns": "Menný priestor stránok",
+ "abusefilter-edit-builder-vars-article-text": "Názov stránky (bez menného priestoru)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Plný názov stránky",
+ "abusefilter-edit-builder-vars-article-views": "Zobrazenia stránky",
+ "abusefilter-edit-builder-vars-movedfrom-id": "ID stránky presunutia zdrojovej stránky",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "Menný priestor presunutia zdrojovej stránky",
+ "abusefilter-edit-builder-vars-movedfrom-text": "Názov presunutia zdrojovej stránky",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "Plný názov presunutia zdrojovej stránky",
+ "abusefilter-edit-builder-vars-movedto-id": "ID stránky presunutia cieľovej stránky",
+ "abusefilter-edit-builder-vars-movedto-ns": "Menný priestor presunutia cieľovej stránky",
+ "abusefilter-edit-builder-vars-movedto-text": "Názov presunutia cieľovej stránky",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "Plný názov presunutia cieľovej stránky",
+ "abusefilter-edit-builder-vars-user-editcount": "Počet úprav používateľa",
+ "abusefilter-edit-builder-vars-user-age": "Vek používateľského účtu",
+ "abusefilter-edit-builder-vars-user-name": "Názov používateľského účtu",
+ "abusefilter-edit-builder-vars-user-groups": "Skupiny (vrátane implicitných), v ktorých sa používateľ nachádza",
+ "abusefilter-edit-builder-vars-user-rights": "Práva, ktoré má používateľ",
+ "abusefilter-edit-builder-vars-user-blocked": "Či je používateľ zablokovaný",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "Čas, kedy bola overená e-mailová adresa",
+ "abusefilter-edit-builder-vars-recent-contributors": "Poslední piati prispievatelia tejto stránky",
+ "abusefilter-edit-builder-vars-first-contributor": "Prvý autor tejto stránky",
+ "abusefilter-edit-builder-vars-all-links": "Všetky externé odkazy v novom texte",
+ "abusefilter-edit-builder-vars-added-links": "Všetky externé odkazy pridané v úprave",
+ "abusefilter-edit-builder-vars-removed-links": "Všetky externé odkazy odstránené v úprave",
+ "abusefilter-edit-builder-vars-old-text": "Starý wikitext stránky pred úpravou",
+ "abusefilter-edit-builder-vars-new-text": "Nový wikitext stránky po úprave",
+ "abusefilter-edit-builder-vars-new-text-stripped": "Nový text stránky zbavený všetkého formátovania",
+ "abusefilter-edit-builder-vars-new-html": "Vytvorený HTML zdroj novej revízie",
+ "abusefilter-edit-builder-vars-restrictions-edit": "Upraviť úroveň zamknutia stránky",
+ "abusefilter-edit-builder-vars-restrictions-move": "Presunúť úroveň zamknutia stránky",
+ "abusefilter-edit-builder-vars-restrictions-create": "Ochrániť stránku",
+ "abusefilter-edit-builder-vars-restrictions-upload": "Ochrana súboru pred nahraním",
+ "abusefilter-edit-builder-vars-old-text-stripped": "Starý text stránky zbavený všetkých značiek",
+ "abusefilter-edit-builder-vars-old-links": "Odkazy na stránke pred úpravou",
+ "abusefilter-edit-builder-vars-old-html": "Starý wikitext stránky prevedený do HTML",
+ "abusefilter-edit-builder-vars-minor-edit": "Či je alebo nie je táto úprava označená ako drobná",
+ "abusefilter-edit-builder-vars-file-sha1": "SHA1 haš obsahu súboru",
+ "abusefilter-edit-builder-vars-file-size": "Veľkosť súboru v bajtoch",
+ "abusefilter-edit-builder-vars-file-mime": "MIME typ súboru",
+ "abusefilter-edit-builder-vars-file-mediatype": "Typ obsahu tohoto súboru",
+ "abusefilter-edit-builder-vars-file-width": "Šírka súboru v pixeloch",
+ "abusefilter-edit-builder-vars-file-height": "Výška súboru v pixeloch",
+ "abusefilter-edit-builder-vars-file-bits-per-channel": "Farebná hĺbka súboru v bitoch na farebný kanál",
+ "abusefilter-filter-log": "Posledné úpravy filtra",
+ "abusefilter-history": "História zmien filtra zneužití $1",
+ "abusefilter-history-foruser": "Zmeny používateľa $1",
+ "abusefilter-history-hidden": "skrytý",
+ "abusefilter-history-enabled": "zapnutý",
+ "abusefilter-history-global": "Globálny",
+ "abusefilter-history-timestamp": "Čas",
+ "abusefilter-history-user": "Používateľ",
+ "abusefilter-history-public": "Verejný popis filtra",
+ "abusefilter-history-flags": "Príznaky",
+ "abusefilter-history-filter": "Pravidlo filtra",
+ "abusefilter-history-comments": "Komentáre",
+ "abusefilter-history-actions": "Operácie",
+ "abusefilter-history-backedit": "Späť do editora filtrov",
+ "abusefilter-history-deleted": "Zmazané",
+ "abusefilter-history-filterid": "Filter",
+ "abusefilter-history-select-legend": "Upraviť vyhľadávací reťazec",
+ "abusefilter-history-select-user": "Používateľ:",
+ "abusefilter-history-select-submit": "Upraviť",
+ "abusefilter-history-diff": "Zmeny",
+ "abusefilter-history-error-hidden": "Filter, ktorý ste si vyžiadali, je skrytý a nemôžete zobraziť jeho históriu.",
+ "abusefilter-exception-unexpectedatend": "Neočakávané „$2“ na pozícii $1.",
+ "abusefilter-exception-expectednotfound": "Očakávalo sa $2 na pozícii $1, nebolo nájdené (namiesto toho nájdené $3 $4).",
+ "abusefilter-exception-unrecognisedkeyword": "Nerozpoznané kľúčové slovo $2 na pozícii $1.",
+ "abusefilter-exception-unexpectedtoken": "Neočakávaný token „$3“ (typu $2) na pozícii $1.",
+ "abusefilter-exception-unclosedstring": "Neukončený reťazec začínajúci na pozícii $1.",
+ "abusefilter-exception-invalidoperator": "Neplatný operátor $2 na pozícii $1.",
+ "abusefilter-exception-unrecognisedtoken": "Nerozpoznaný token „$2“ na pozícii $1.",
+ "abusefilter-exception-noparams": "Funkcii „$2“ na pozícii $1 neboli zadané žiadne parametre.",
+ "abusefilter-exception-dividebyzero": "Neplatný pokus deliť $2 nulou na pozícii $1.",
+ "abusefilter-exception-unrecognisedvar": "Nerozpoznaná premenná $2 na pozícii $1",
+ "abusefilter-exception-notenoughargs": "Nebol zadaný dostatočný pčet argumentov funkcii $2 zavolanej na znaku $1.\n{{PLURAL:$3|Očakával sa $3 argument|Očakávali sa $3 argumenty|Očakávalo sa $3 argumentov}}, {{PLURAL:$4|zadaný $4|zadané $4|zadaných $4}}.",
+ "abusefilter-exception-regexfailure": "Chyba v regulárnom výraze „$3“ na znaku $1: „$2“",
+ "abusefilter-exception-overridebuiltin": "Neplatné prekrytie vstavanej premennej „$2“ na pozícii $1.",
+ "abusefilter-exception-outofbounds": "Požadovaná bola neexistujúca položka zoznamu $2 (veľkosť zoznamu = $3) na pozícii $1.",
+ "abusefilter-exception-notlist": "Požaduje sa položka poľa premennej, ktorá nie je pole na pozícii $1.",
+ "abusefilter-action-tag": "Značka",
+ "abusefilter-action-throttle": "Obmedziť",
+ "abusefilter-action-warn": "Upoz.",
+ "abusefilter-action-blockautopromote": "Blokovať autom. povýšenie",
+ "abusefilter-action-block": "Blokovať",
+ "abusefilter-action-degroup": "Odstrániť zo skupín",
+ "abusefilter-action-rangeblock": "Blokovanie rozsahu",
+ "abusefilter-action-disallow": "Zakázať",
+ "abusefilter-revert-title": "Vrátiť všetky zmeny filtra $1",
+ "abusefilter-revert-intro": "Tento formulár vám umožňuje vrátiť všetky zmeny vykonané filtrom zneužitia $1.\nProsím, buďte opatrní pri používaní tohto nástroja.",
+ "abusefilter-revert-preview-item": "$1: $2 vykonal $3 na $4. Operácie, ktoré sa majú vrátiť: $5 ($6)",
+ "abusefilter-revert-search-legend": "Vybrať operácie filtra zneužitia, ktoré sa majú vrátiť",
+ "abusefilter-revert-periodstart": "Začiatok obdobia:",
+ "abusefilter-revert-periodend": "Koniec obdobia:",
+ "abusefilter-revert-search": "Vyberte operácie",
+ "abusefilter-revert-filter": "ID filtra:",
+ "abusefilter-revert-preview-intro": "Dolu je zoznam operácií vykonaných filtrom zneužitia, ktoré táto operácia vráti.\nProsím, pozorne ich skontrolujte a potvrďte svoj výber kliknutím na na „Potvrdiť“.",
+ "abusefilter-revert-confirm": "Potvrdiť",
+ "abusefilter-revert-success": "Vrátili ste všetky zmeny vykonané filtrom zneužitia [[Special:AbuseFilter/$1|$2]].",
+ "abusefilter-revert-reason": "Automatické vrátenie všetkých operácií vykonaných filtrom zneužitia $1.\nUvedený dôvod: $2",
+ "abusefilter-revert-reasonfield": "Dôvod:",
+ "abusefilter-test": "Otestovať filter na existujúcich úpravách",
+ "abusefilter-test-intro": "Táto stránka vám umožňuje otestovať filter zadaný do poľa nižšie na {{PLURAL:$1|posledej úprave|posledých $1 úpravách}}.\nExistujúci filter načítate napísaním jeho ID do poľa pod poľom úprav a kliknuím na tlačidlo „Načítať“.",
+ "abusefilter-test-legend": "Test filtra",
+ "abusefilter-test-load-filter": "Načítať filter s ID:",
+ "abusefilter-test-submit": "Otestovať",
+ "abusefilter-test-load": "Načítať",
+ "abusefilter-test-user": "Zmeny vykonané používateľom:",
+ "abusefilter-test-period-start": "Zmeny vykonané po:",
+ "abusefilter-test-period-end": "Zmeny vykonané pred:",
+ "abusefilter-test-page": "Vykonané zmeny stránky:",
+ "abusefilter-test-shownegative": "Zobraziť úpravy, ktoré nezodpovedajú filtru",
+ "abusefilter-test-syntaxerr": "Filter, ktorý ste zadali obsahoval syntaktickú chybu.\nKompletné vysvetlenie dostanete po kliknutí na tlačidlo „Skontrolovať syntax“.",
+ "abusefilter-test-badtitle": "Zadaný názov stránky je neplatný. Možno obsahuje jeden či viac znakov, ktoré nie je možné používať v názvoch stránok.",
+ "abusefilter-changeslist-examine": "preskúmať",
+ "abusefilter-examine": "Preskúmať jednotlivé zmeny",
+ "abusefilter-examine-intro": "Táto stránka vám umožňuje preskúmať premenné vytvorené Filtrom zneužití pre jednotlivé zmeny a otestovať ich voči filtrom.",
+ "abusefilter-examine-legend": "Vybrať zmeny",
+ "abusefilter-examine-diff": "URL rozdielu:",
+ "abusefilter-examine-user": "Používateľ:",
+ "abusefilter-examine-title": "Názov stránky:",
+ "abusefilter-examine-submit": "Hľadať",
+ "abusefilter-examine-vars": "Premenné vytvorené pre túto zmenu",
+ "abusefilter-examine-test": "Otestovať túto zmenu voči filtru",
+ "abusefilter-examine-test-button": "Otestovať filter",
+ "abusefilter-examine-match": "Filter zachytil túto zmenu.",
+ "abusefilter-examine-nomatch": "Filter nezachytil túto zmenu.",
+ "abusefilter-examine-syntaxerror": "Filter má neplatnú syntax.",
+ "abusefilter-examine-notfound": "Zmena, ktorú ste si vyžiadali, nebola nájdená.",
+ "abusefilter-examine-incompatible": "Filter zneužití nepodporuje zmenu, ktorú ste si vyžiadali.",
+ "abusefilter-examine-noresults": "Nenašli sa žiadne výsledky vyhovujúce zadaným parametrom vyhľadávania.",
+ "abusefilter-topnav": "'''Navigácia Filtrom zneužití'''",
+ "abusefilter-topnav-home": "Domov",
+ "abusefilter-topnav-test": "Dávkové testovanie",
+ "abusefilter-topnav-examine": "Preskúmať minulé úpravy",
+ "abusefilter-topnav-log": "Záznam zneužití",
+ "abusefilter-topnav-tools": "Ladiace nástroje",
+ "abusefilter-topnav-import": "Importovať filter",
+ "abusefilter-log-name": "Záznam filtra zneužití",
+ "abusefilter-log-header": "Tento záznam zobrazuje súhrn zmien filtrov.\nPodrobnosti nájdete v [[Special:AbuseFilter/history|zozname]] posledných zmien filtrov.",
+ "abusefilter-log-noresults": "Žiadne výsledky",
+ "abusefilter-diff-title": "Rozdiely medzi verziami",
+ "abusefilter-diff-item": "Položka",
+ "abusefilter-diff-version": "Verzia od $1 používateľa $2",
+ "abusefilter-diff-info": "Základné informácie",
+ "abusefilter-diff-pattern": "Podmienky filtra",
+ "abusefilter-diff-invalid": "Nepodarilo sa získať požadované verzie",
+ "abusefilter-diff-backhistory": "Späť na históriu filtra",
+ "abusefilter-diff-prev": "Staršia zmena",
+ "abusefilter-diff-next": "Novšia zmena",
+ "abusefilter-import-intro": "Toto rozhranie môžete použiť na importovanie filtrov z iných wiki.\nNa zdrojovej wiki kliknite na „{{int:Abusefilter-edit-export}}“ v ponuke „{{int:abusefilter-edit-tools}}“ v rozhraní na úpravy.\nSkopírujte ho z textového poľa, kde sa objaví a vložte ho do tohto textového poľa. Potom kliknite na „{{int:abusefilter-import-submit}}“.",
+ "abusefilter-import-submit": "Importovať údaje",
+ "abusefilter-group-default": "Predvolené",
+ "abusefilter-http-error": "Došlo k chybe HTTP: $1."
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/skr-arab.json b/www/wiki/extensions/AbuseFilter/i18n/skr-arab.json
new file mode 100644
index 00000000..6289725d
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/skr-arab.json
@@ -0,0 +1,45 @@
+{
+ "@metadata": {
+ "authors": [
+ "Saraiki"
+ ]
+ },
+ "abusefilter-log-search-user": "ورتݨ آلا:",
+ "abusefilter-log-search-title": "عنوان:",
+ "abusefilter-log-search-wiki": "وکی:",
+ "abusefilter-log-search-impact": "اثر:",
+ "abusefilter-log-search-action-taken-any": "کوئی ہک",
+ "abusefilter-log-search-submit": "ڳولو",
+ "abusefilter-log-diff": "فرق",
+ "abusefilter-log-details-val": "قدر",
+ "abusefilter-log-noactions": "کوئی وی کائنی",
+ "abusefilter-log-hide-reason": "وجہ:",
+ "abusefilter-list": "سارے نتارے",
+ "abusefilter-list-id": "نتارے دی آئی ڈی",
+ "abusefilter-list-pattern": "نمونہ ترتیب نال",
+ "abusefilter-list-status": "حیثیت",
+ "abusefilter-list-public": "عوامی تفصیل",
+ "abusefilter-list-consequences": "نتیجے",
+ "abusefilter-deleted": "مٹا ݙتے",
+ "abusefilter-tools-reautoconfirm-user": "ورتݨ آلا:",
+ "abusefilter-edit-switch-editor": "ایڈیٹر وٹاؤ",
+ "abusefilter-edit-field-description": "تفصیل",
+ "abusefilter-edit-field-conditions": "شرطاں",
+ "abusefilter-edit-tools": "آوزار:",
+ "abusefilter-history-timestamp": "ویلا",
+ "abusefilter-history-user": "ورتݨ آلا",
+ "abusefilter-history-deleted": "مٹا ݙتے",
+ "abusefilter-history-filterid": "نتارا",
+ "abusefilter-history-select-user": "ورتݨ آلا:",
+ "abusefilter-history-diff": "تبدیلیاں",
+ "abusefilter-action-tag": "ٹیگ",
+ "abusefilter-action-warn": "خبردار",
+ "abusefilter-action-block": "پابندی لاؤ",
+ "abusefilter-revert-filter": "نتارے دی آئی ڈی:",
+ "abusefilter-revert-confirm": "تصدیق",
+ "abusefilter-examine-user": "ورتݨ آلا:",
+ "abusefilter-view-private-submit": "ذاتی تفصیلاں ݙیکھو",
+ "abusefilter-view-private": "ذاتی تفصیلاں ݙیکھو",
+ "abusefilter-log-details-id": "لاگ آئی ڈی",
+ "abusefilter-log-ip-not-available": "دستیاب کائنی"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/sl.json b/www/wiki/extensions/AbuseFilter/i18n/sl.json
new file mode 100644
index 00000000..8b03d197
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/sl.json
@@ -0,0 +1,391 @@
+{
+ "@metadata": {
+ "authors": [
+ "Dbc334",
+ "Eleassar",
+ "Emperyan",
+ "Matma Rex"
+ ]
+ },
+ "abusefilter-desc": "Pri urejanjih uporabi samodejno hevristiko",
+ "abusefilter": "Konfiguracija filtrov zlorab",
+ "abuselog": "Dnevnik zlorab",
+ "abusefilter-intro": "Dobrodošli v vmesniku upravljanja s filtri zlorab.\nFilter zlorab je samodejni mehanizem programja, ki uporabi samodejno hevristiko za vsa dejanja.\nVmesnik prikazuje seznam določenih filtrov in omogoča, da jih spremenite.",
+ "abusefilter-mustbeeditor": "Iz varnostnih razlogov si vmesnik lahko ogledajo samo uporabniki s pravico spreminjanja filtrov zlorab.",
+ "abusefilter-warning": "'''Opozorilo:''' To dejanje je bilo samodejno zaznano kot škodljivo.\nNekoristna dejanja bodo hitro povrnjena,\nnezaslišana ali ponavljajoča nekoristna urejanja pa bodo sledila v blokado vašega računa ali IP-naslova.\nČe verjamete, da je to dejanje koristno, ga lahko ponovno potrdite.\nKratek opis pravila zlorab, ki mu je ustrezalo vaše dejanje: $1",
+ "abusefilter-disallowed": "To dejanje je bilo samodejno zaznano kot škodljivo in je zato prepovedano.\nČe verjamete, da je bilo vaše dejanje koristno, prosimo, obvestite administratorja o tem, kar ste skušali storiti.\nKratek opis pravila zlorab, ki mu je ustrezalo vaše dejanje: $1",
+ "abusefilter-blocked-display": "To dejanje je bilo samodejno prepoznano kot škodljivo\nin vam je zato bila njegova izvedba preprečena.\nPoleg tega je bilo zavoljo zaščite {{GRAMMAR:rodilnik|{{SITENAME}}}} vašemu uporabniškemu računu in vsem pripadajočim IP-naslovom preprečeno urejanje.\nČe se je to zgodilo po pomoti, se obrnite na administratorja.\nKratek opis pravila zlorab, kateremu je ustrezalo vaše dejanje: $1",
+ "abusefilter-degrouped": "To dejanje je bilo samodejno prepoznano kot škodljivo.\nPosledično je bilo preprečeno in, ker obstaja sum, da je vaš račun ogrožen, so vam bile odvzete vse pravice.\nČe menite, da je to storjeno pomotoma, se obrnite na birokrata z razlago tega dejanja in vaše pravice bodo morda obnovljene.\nKratek opis pravila zlorab, kateremu je ustrezalo vaše dejanje: $1",
+ "abusefilter-autopromote-blocked": "To dejanje je bilo samodejno prepoznano kot škodljivo in je zato prepovedano.\nPoleg tega vam je bilo, kot varnostni ukrep, z računa začasno odvzetih nekaj pravic, ki so samodejno odobrene pri uveljavljenih računih.\nKratek opis pravila zlorab, kateremu je ustrezalo vaše dejanje: $1",
+ "abusefilter-blocker": "Filter zlorab",
+ "abusefilter-blockreason": "Samodejno blokirano s strani filtra zlorab.\nOpis ujemajočega pravila: $1",
+ "abusefilter-degroupreason": "Pravice so samodejno odstranjene s strani filtra zlorab.\nOpis pravila: $1",
+ "abusefilter-accountreserved": "To ime računa je rezervirano za uporabo s filtrom zlorab.",
+ "right-abusefilter-modify": "Spreminjanje filtrov zlorab",
+ "right-abusefilter-view": "Ogled filtrov zlorab",
+ "right-abusefilter-log": "Ogled dnevnika zlorab",
+ "right-abusefilter-log-detail": "Ogled podrobnosti dnevniška vnosa zlorabe",
+ "right-abusefilter-private": "Ogled zasebnih podatkov v dnevniku zlorab",
+ "right-abusefilter-modify-restricted": "Spreminjanje filtrov zlorab z omejenimi dejanji",
+ "right-abusefilter-revert": "Povrnitev vse sprememb danega filtra zlorab",
+ "right-abusefilter-view-private": "Ogled filtrov zlorab označenih kot zasebni",
+ "right-abusefilter-log-private": "Ogled dnevniških vnosov filtra zlorab, označenih kot zasebni",
+ "right-abusefilter-hide-log": "Skrivanje vnosov v dnevniku zlorab",
+ "right-abusefilter-hidden-log": "Ogled skritih vnosov v dnevniku zlorab",
+ "right-abusefilter-modify-global": "Ustvarjanje ali spreminjanje globalnih filtrov zlorab",
+ "action-abusefilter-modify": "spreminjanje filtrov zlorab",
+ "action-abusefilter-view": "ogled filtra zlorab",
+ "action-abusefilter-log": "ogled dnevnika zlorab",
+ "action-abusefilter-log-detail": "ogled podrobnosti vnosa v dnevniku zlorab",
+ "action-abusefilter-private": "ogled zasebnih podatkov v dnevniki zlorab",
+ "action-abusefilter-modify-restricted": "spreminjanje filtra zlorab z omejenimi dejanji",
+ "action-abusefilter-revert": "povrnitev vse sprememb danega filtra zlorab",
+ "action-abusefilter-view-private": "ogled filtrov zlorab označenih kot zasebni",
+ "abusefilter-log": "Dnevnik filtrov zlorab",
+ "abusefilter-log-summary": "Ta dnevnik prikazuje seznam vseh dejanj, ki so jih ujeli filtri.",
+ "abusefilter-log-search": "Iskanje po dnevniku zlorab",
+ "abusefilter-log-search-user": "Uporabnik:",
+ "abusefilter-log-search-filter": "ID filtra (ločeno z navpičnicami):",
+ "abusefilter-log-search-title": "Naslov:",
+ "abusefilter-log-search-wiki": "Wiki:",
+ "abusefilter-log-search-submit": "Iskanje",
+ "abusefilter-log-entry": "$1: $2 je med izvajanjem dejanja »$3« na $4 {{GENDER:$8|sprožil|sprožila|sprožil(-a)}} filter zlorab.\nSprejeti ukrepi: $5;\nOpis filtra: $6",
+ "abusefilter-log-detailedentry-meta": "$1: $2 je med izvajanjem dejanja »$4« na $5 {{GENDER:$9|sprožil|sprožila|sprožil(-a)}} $3.\nSprejeti ukrepi: $6;\nOpis filtra: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "globalni filter $1",
+ "abusefilter-log-detailedentry-local": "filter $1",
+ "abusefilter-log-detailslink": "podrobnosti",
+ "abusefilter-log-diff": "prim",
+ "abusefilter-log-hidelink": "prilagodi vidljivost",
+ "abusefilter-log-details-legend": "Podrobnosti dnevniškega vnosa $1",
+ "abusefilter-log-details-var": "Spremenljivka",
+ "abusefilter-log-details-val": "Vrednost",
+ "abusefilter-log-details-vars": "Parametri dejanja",
+ "abusefilter-log-details-private": "Zasebne podrobnosti o dnevniku",
+ "abusefilter-log-details-ip": "Izvirni IP-naslov",
+ "abusefilter-log-noactions": "nobeno",
+ "abusefilter-log-details-diff": "Spremembe narejene v urejanju",
+ "abusefilter-log-linkoncontribs": "dnevnik zlorab",
+ "abusefilter-log-linkoncontribs-text": "Dnevnik zlorab {{GENDER:$1|tega uporabnika|te uporabnice}}",
+ "abusefilter-log-hidden": "(vnos je skrit)",
+ "abusefilter-log-hidden-implicit": "(skrito, ker je redakcija izbrisana)",
+ "abusefilter-log-cannot-see-details": "Nimate dovoljenja za ogled podrobnosti tega vnosa.",
+ "abusefilter-log-details-hidden": "Ne morete si ogledati podrobnosti tega vnosa, ker je skrit pred javnim vpogledom.",
+ "abusefilter-log-hide-legend": "Skrij dnevniški vnos",
+ "abusefilter-log-hide-id": "ID dnevniškega vnosa:",
+ "abusefilter-log-hide-hidden": "Skrij ta vnos pred javnim vpogledom",
+ "abusefilter-log-hide-reason": "Razlog:",
+ "abusefilter-log-hide-forbidden": "Nimate dovoljenja za skrivanje dnevniških vnosov zlorab.",
+ "abusefilter-logentry-suppress": "je skril(-a) »[[$1]]«",
+ "abusefilter-logentry-unsuppress": "je prikazal(-a) »[[$1]]«",
+ "logentry-abusefilter-hit": "$1 je {{GENDER:$2|sprožil|sprožila|sprožil(-a)}} $4 z dejanjem »$5« na $3. Ukrepi: $6 ($7)",
+ "abusefilter-management": "Upravljanje filtrov zlorab",
+ "abusefilter-list": "Vsi filtri",
+ "abusefilter-list-id": "ID filtra",
+ "abusefilter-list-status": "Stanje",
+ "abusefilter-list-public": "Javni opis",
+ "abusefilter-list-consequences": "Posledice",
+ "abusefilter-list-visibility": "Vidnost",
+ "abusefilter-list-hitcount": "Število zadetkov",
+ "abusefilter-list-edit": "Uredi",
+ "abusefilter-list-details": "Podrobnosti",
+ "abusefilter-list-limit": "Število na stran:",
+ "abusefilter-list-lastmodified": "Zadnja sprememba",
+ "abusefilter-list-group": "Skupina filtra",
+ "abusefilter-hidden": "Zasebno",
+ "abusefilter-unhidden": "Javno",
+ "abusefilter-enabled": "Omogočeno",
+ "abusefilter-deleted": "Izbrisano",
+ "abusefilter-disabled": "Onemogočeno",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|zadetek|zadetka|zadetki|zadetkov}}",
+ "abusefilter-new": "Ustvari nov filter",
+ "abusefilter-return": "Vrnitev na upravljanje filtrov",
+ "abusefilter-status-global": "Globalno",
+ "abusefilter-list-options": "Možnosti",
+ "abusefilter-list-options-deleted": "Izbrisani filtri:",
+ "abusefilter-list-options-deleted-only": "Prikaži samo izbrisane filtre",
+ "abusefilter-list-options-deleted-hide": "Skrij izbrisane filtre",
+ "abusefilter-list-options-deleted-show": "Vključi izbrisane filter",
+ "abusefilter-list-options-scope": "Prikaži filtre:",
+ "abusefilter-list-options-scope-local": "Samo lokalna pravila",
+ "abusefilter-list-options-scope-global": "Samo globalna pravila",
+ "abusefilter-list-options-disabled": "Onemogočeni filtri:",
+ "abusefilter-list-options-hidedisabled": "Skrij onemogočene filtre",
+ "abusefilter-list-options-submit": "Posodobi",
+ "abusefilter-tools-text": "Tukaj je nekaj orodij, ki so lahko koristna pri oblikovanju in popravljanju napak filtrov zlorab.",
+ "abusefilter-tools-expr": "Preizkuševalec izrazov",
+ "abusefilter-tools-submitexpr": "Ovrednoti",
+ "abusefilter-tools-reautoconfirm": "Povrni samodejno potrjeno stanje",
+ "abusefilter-tools-reautoconfirm-user": "Uporabnik:",
+ "abusefilter-tools-reautoconfirm-submit": "Ponovno samodejno potrdi",
+ "abusefilter-reautoconfirm-none": "Ta uporabnik nima prekinjenega {{GENDER:$1|svojega}} stanja samodejne potrditve.",
+ "abusefilter-reautoconfirm-notallowed": "Nimate dovoljenja za povrnitev stanja samodejne potrditve.",
+ "abusefilter-reautoconfirm-done": "Samodejno potrjeno stanje računa je bilo povrnjeno",
+ "abusefilter-status": "Od {{PLURAL:$1|zadnjega $1 dejanja|zadnjih $1 dejanj}} {{PLURAL:$2|je|sta|so|jih je}} $2 ($3 %) {{PLURAL:$2|dosegel|dosegla|dosegli|doseglo}} omejitev pogojev $4 in $5 ($6 %) {{PLURAL:$2|se je uejam|sta se ujemala|so se ujemali|se jih je ujemalo}} z enim od trenutno omogočenih filtrov.",
+ "abusefilter-edit": "Urejanje filtra zlorab",
+ "abusefilter-edit-subtitle": "Urejanje filtra $1",
+ "abusefilter-edit-subtitle-new": "Ustvarjanje filtra",
+ "abusefilter-edit-oldwarning": "<strong>Urejate staro različico filtra.\nNavedena statistika drži za najnovejšo različico filtra.\nČe shranite svoje spremembe, boste prepisali vse spremembe od redakcije, ki jo urejate.</strong> &bull;\n[[Special:AbuseFilter/history/$2|Vrnitev na zgodovino filtra]].",
+ "abusefilter-edit-status-label": "Statistike:",
+ "abusefilter-edit-status": "Od {{PLURAL:$1|zadnjega $1 dejanja|zadnjih $1 dejanj}} se je ta filter ujemal z/s $2 ($3 %).",
+ "abusefilter-edit-status-profile": "Od {{PLURAL:$1|zadnjega $1 dejanja|zadnjih $1 dejanj}} se je ta filter ujemal z/s $2 ($3 %).\nV povprečju je njegov čas delovanja $4 ms, porabi pa $5 {{PLURAL:$5|pogoj|pogoja|pogoje|pogojev}} omejitve pogojev.",
+ "abusefilter-edit-new": "Nov filter",
+ "abusefilter-edit-save": "Shrani filter",
+ "abusefilter-edit-id": "ID filtra:",
+ "abusefilter-edit-description": "Opis:\n:''(javno vidno)''",
+ "abusefilter-edit-group": "Skupina filtra:",
+ "abusefilter-edit-flags": "Oznake:",
+ "abusefilter-edit-enabled": "Omogoči ta filter",
+ "abusefilter-edit-deleted": "Označi kot izbrisano",
+ "abusefilter-edit-hidden": "Skrij podrobnosti tega filtra pred javnim vpogledom",
+ "abusefilter-edit-global": "Globalni filter",
+ "abusefilter-edit-rules": "Pogoji:",
+ "abusefilter-edit-notes": "Opombe:",
+ "abusefilter-edit-lastmod": "Zadnja sprememba filtra:",
+ "abusefilter-edit-lastmod-text": "dne $1 s strani $2",
+ "abusefilter-edit-hitcount": "Zadetki filtra:",
+ "abusefilter-edit-consequences": "Dejanja za izvedbo ob ujemanju",
+ "abusefilter-edit-action-warn": "Sproži ta dejanja po opozoritvi uporabnika",
+ "abusefilter-edit-action-disallow": "Prepreči uporabniku izvesti vprašljivo dejanje",
+ "abusefilter-edit-action-blockautopromote": "Odvzami uporabnikovo stanje samodejne potrditve",
+ "abusefilter-edit-action-degroup": "Odstrani uporabnika iz vseh priviligiranih skupin",
+ "abusefilter-edit-action-block": "Uporabniku in/ali IP-naslovu prepreči urejanje",
+ "abusefilter-edit-action-throttle": "Sproži dejanja le, če uporabnik prekorači stopnjo omejitve",
+ "abusefilter-edit-action-rangeblock": "Blokiraj območje pripadajočega IP-ja, iz katerega izvira uporabnik",
+ "abusefilter-edit-action-tag": "Označi urejanje za nadaljnji pregled",
+ "abusefilter-edit-throttle-count": "Število dovoljenih dejanj:",
+ "abusefilter-edit-throttle-period": "Časovno obdobje:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|sekunda|sekundi|sekunde|sekund}}",
+ "abusefilter-edit-throttle-groups": "Zaduši skupino po:\n:''(ena na vrstico, združeno z vejicami)''",
+ "abusefilter-edit-warn-message": "Sistemsko sporočilo, uporabljeno za opozorilo:",
+ "abusefilter-edit-warn-other": "Drugo sporočilo",
+ "abusefilter-edit-warn-other-label": "Ime strani drugega sporočila:\n:''(brez predpone MediaWiki)''",
+ "abusefilter-edit-warn-actions": "Dejanja:",
+ "abusefilter-edit-warn-preview": "Predogled izbranega sporočila",
+ "abusefilter-edit-warn-edit": "Ustvari/Uredi izbrano sporočilo",
+ "abusefilter-edit-tag-tag": "Uporabljene [[Special:Tags|oznake]] (ena na vrstico):",
+ "abusefilter-edit-denied": "Ne morete si ogledati podrobnosti filtra, ker je skrit pred javnim pogledom.",
+ "abusefilter-edit-main": "Parametri filtra",
+ "abusefilter-edit-done-subtitle": "Filter je urejen",
+ "abusefilter-edit-done": "[[Special:AbuseFilter/history/$1/diff/prev/$2|Svoje spremembe]] [[Special:AbuseFilter/$1|filtra $3]] ste uspešno shranili.",
+ "abusefilter-edit-badsyntax": "V navedenem filtru je skladenjska napaka.\nRezultat razčlenjevalnika je bil: <pre>$1</pre>",
+ "abusefilter-edit-restricted": "Ne morete urediti tega filtra, ker vsebuje eno ali več omejenih dejanj.\nProsite uporabnika, ki lahko dodaja omejena dejanja, da stori spremembo namesto vas.",
+ "abusefilter-edit-viewhistory": "Ogled zgodovine tega filtra",
+ "abusefilter-edit-history": "Zgodovina:",
+ "abusefilter-edit-check": "Preveri skladnjo",
+ "abusefilter-edit-badfilter": "Navedeni filter ne obstaja",
+ "abusefilter-edit-revert": "Vrni dejanja tega filtra",
+ "abusefilter-edit-tools": "Orodja:",
+ "abusefilter-edit-test-link": "Preizkusi ta filter z zadnjimi spremembami",
+ "abusefilter-edit-export": "Izvozi ta filter na drug wiki",
+ "abusefilter-edit-syntaxok": "Zaznana ni nobena skladenjska napaka.",
+ "abusefilter-edit-syntaxerr": "Zaznana je skladenjska napaka: $1",
+ "abusefilter-edit-bad-tags": "Ena ali več navedenih oznak ni veljavnih.\nOznake morajo biti kratke, ne smejo vsebovati posebnih znakov in ne sme jih rezervirati drugo programje. Poskusite izbrati novo ime oznake.",
+ "abusefilter-edit-notallowed": "Ustvarjanje ali urejanje filtrov zlorab vam ni dovoljeno.",
+ "abusefilter-edit-notallowed-global": "Nimate dovoljenj za ustvarjanje ali spreminjanje globalnih filtrov zlorab",
+ "abusefilter-edit-notallowed-global-custom-msg": "Opozorilna sporočila po meri niso podprta za globalne filtre",
+ "abusefilter-edit-builder-select": "Izberite možnost, da jo dodate na mesto kazalca",
+ "abusefilter-edit-builder-group-op-arithmetic": "Aritmetični operatorji",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Seštevanje (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Odštevanje (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Množenje (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Deljenje (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Modulo (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Potenciranje (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Operatorji primerjanja",
+ "abusefilter-edit-builder-op-comparison-equal": "Vrednost je enaka (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Vrednost ni enaka (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "Manjše od (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Večje od (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Manjše ali enako kot (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Večje ali enako kot (>=)",
+ "abusefilter-edit-builder-group-op-bool": "Logični operatorji",
+ "abusefilter-edit-builder-op-bool-not": "Ne (!)",
+ "abusefilter-edit-builder-op-bool-and": "In (&)",
+ "abusefilter-edit-builder-op-bool-or": "Ali (|)",
+ "abusefilter-edit-builder-group-misc": "Razno",
+ "abusefilter-edit-builder-misc-in": "vsebovano v nizu (in)",
+ "abusefilter-edit-builder-misc-like": "Ujema se z vzorcem (like)",
+ "abusefilter-edit-builder-misc-rlike": "Ujema se z regularnim izrazom (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "Ujema se z regularnim izrazom, neobčutljivo na velikost črk (irlike)",
+ "abusefilter-edit-builder-misc-contains": "Levi niz vsebuje desni niz (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "Dobesedni niz (\"\")",
+ "abusefilter-edit-builder-misc-tern": "Operator trojka (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "Pogojnik (if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "Funkcije",
+ "abusefilter-edit-builder-funcs-length": "Dolžina niza (length)",
+ "abusefilter-edit-builder-funcs-lcase": "V male črke (lcase)",
+ "abusefilter-edit-builder-funcs-ucase": "V velike črke (ucase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "Normaliziraj zamenljive znake (ccnorm)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "Odstrani dvojne znake (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "Posebni znaki / število znakov (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "Normaliziraj (norm)",
+ "abusefilter-edit-builder-funcs-count": "Število pojavov niza X v nizu Y (count)",
+ "abusefilter-edit-builder-funcs-rcount": "Število pojavov regularnega izraza X v nizu Y (rcount)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "Odstrani presledke (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "Odstrani posebne znake (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "Je IP v območju? (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "V nizu poišči več podnizov v načinu ALI. (contains_any)",
+ "abusefilter-edit-builder-funcs-substr": "Podniz (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "Položaj podniza v nizu (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "Zamenjaj podniz z nizom (str_replace)",
+ "abusefilter-edit-builder-funcs-rescape": "Ubeži niz kot dobeseden regularni izraz (rescape)",
+ "abusefilter-edit-builder-funcs-set_var": "Določi spremenljivko (set_var)",
+ "abusefilter-edit-builder-group-vars": "Spremenljivke",
+ "abusefilter-edit-builder-vars-accountname": "Ime računa (ob ustvarjanju računa)",
+ "abusefilter-edit-builder-vars-timestamp": "Unixov časovni žig spremembe",
+ "abusefilter-edit-builder-vars-action": "Dejanje",
+ "abusefilter-edit-builder-vars-addedlines": "Vrstice dodane v urejanju",
+ "abusefilter-edit-builder-vars-delta": "Sprememba velikosti v urejanju",
+ "abusefilter-edit-builder-vars-diff": "Poenotene razlike sprememb, narejenih z urejanjem",
+ "abusefilter-edit-builder-vars-newsize": "Nova velikost strani",
+ "abusefilter-edit-builder-vars-oldsize": "Stara velikost strani",
+ "abusefilter-edit-builder-vars-removedlines": "Vrstice odstranjene v urejanju",
+ "abusefilter-edit-builder-vars-summary": "Povzetek urejanja/razlog",
+ "abusefilter-edit-builder-vars-article-id": "ID strani",
+ "abusefilter-edit-builder-vars-article-ns": "Imenski prostor strani",
+ "abusefilter-edit-builder-vars-article-text": "Naslov strani (brez imenskega prostora)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Polni naslov strani",
+ "abusefilter-edit-builder-vars-article-views": "Ogledi strani",
+ "abusefilter-edit-builder-vars-movedfrom-id": "ID izvorne strani prestavljanja",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "Imenski prostor izvorne strani prestavljanja",
+ "abusefilter-edit-builder-vars-movedfrom-text": "Naslov izvorne strani prestavljanja",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "Polni naslov izvorne strani prestavljanja",
+ "abusefilter-edit-builder-vars-movedto-id": "ID ciljne strani prestavljanja",
+ "abusefilter-edit-builder-vars-movedto-ns": "Imenski prostor ciljne strani prestavljanja",
+ "abusefilter-edit-builder-vars-movedto-text": "Naslov ciljne strani prestavljanja",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "Polni naslov ciljne strani prestavljanja",
+ "abusefilter-edit-builder-vars-user-editcount": "Število urejanj uporabnika",
+ "abusefilter-edit-builder-vars-user-age": "Starost uporabniškega računa",
+ "abusefilter-edit-builder-vars-user-name": "Ime uporabniškega računa",
+ "abusefilter-edit-builder-vars-user-groups": "Skupine (vključno s posrednimi) v katerih je uporabnik",
+ "abusefilter-edit-builder-vars-user-rights": "Pravice, ki jih ima uporabnik",
+ "abusefilter-edit-builder-vars-user-blocked": "Ali je uporabnik blokiran",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "Čas, ko je bil e-poštni naslov potrjen",
+ "abusefilter-edit-builder-vars-recent-contributors": "Zadnjih deset uporabnikov, ki so prispevali strani",
+ "abusefilter-edit-builder-vars-all-links": "Vse zunanje povezave v novem besedilu",
+ "abusefilter-edit-builder-vars-added-links": "Vse zunanje povezave dodane med urejanjem",
+ "abusefilter-edit-builder-vars-removed-links": "Vse zunanje povezave odstranjene med urejanjem",
+ "abusefilter-edit-builder-vars-old-text": "Staro wikibesedilo strani, pred urejanjem",
+ "abusefilter-edit-builder-vars-new-text": "Novo wikibesedilo strani, po urejanju",
+ "abusefilter-edit-builder-vars-new-pst": "Wikibesedilo nove strani, preoblikovano pred shranjevanjem",
+ "abusefilter-edit-builder-vars-new-text-stripped": "Novo besedilo strani, z odstranjenimi oznakami",
+ "abusefilter-edit-builder-vars-new-html": "Razčlenjen izvor HTML nove redakcije",
+ "abusefilter-edit-builder-vars-restrictions-edit": "Uredi stopnjo zaščite strani",
+ "abusefilter-edit-builder-vars-restrictions-move": "Prestavi stopnjo zaščite strani",
+ "abusefilter-edit-builder-vars-restrictions-create": "Zaščita strani pred ustvarjanjem",
+ "abusefilter-edit-builder-vars-restrictions-upload": "Zaščita datoteke pred nalaganjem",
+ "abusefilter-edit-builder-vars-old-text-stripped": "Staro besedilo strani, z odstranjenimi oznakami",
+ "abusefilter-edit-builder-vars-old-links": "Povezave na strani, pred urejanjem",
+ "abusefilter-edit-builder-vars-old-html": "Staro wikibesedilo strani, razčlenjeno v HTML",
+ "abusefilter-edit-builder-vars-minor-edit": "Ali je bilo urejanje označeno kot manjše",
+ "abusefilter-edit-builder-vars-file-sha1": "Odtis SHA1 vsebine datoteke",
+ "abusefilter-filter-log": "Zadnje spremembe filtrov",
+ "abusefilter-history": "Zgodovina sprememb filtra zlorab #$1",
+ "abusefilter-history-foruser": "Spremembe $1",
+ "abusefilter-history-hidden": "Skrito",
+ "abusefilter-history-enabled": "Omogočeno",
+ "abusefilter-history-global": "Globalno",
+ "abusefilter-history-timestamp": "Čas",
+ "abusefilter-history-user": "Uporabnik",
+ "abusefilter-history-public": "Javni opis filtra",
+ "abusefilter-history-flags": "Oznake",
+ "abusefilter-history-filter": "Pravilo filtra",
+ "abusefilter-history-comments": "Pripombe",
+ "abusefilter-history-actions": "Dejanja",
+ "abusefilter-history-backedit": "Nazaj na urejevalnik filtrov",
+ "abusefilter-history-deleted": "Izbrisano",
+ "abusefilter-history-filterid": "Filter",
+ "abusefilter-history-select-legend": "Izboljšaj iskanje",
+ "abusefilter-history-select-user": "Uporabnik:",
+ "abusefilter-history-select-submit": "Prikaži",
+ "abusefilter-history-diff": "Spremembe",
+ "abusefilter-history-error-hidden": "Zahtevani filter je skrit in njegove zgodovine si ne morete ogledati.",
+ "abusefilter-exception-unexpectedatend": "Nepričakovan »$2« pri znaku $1.",
+ "abusefilter-exception-expectednotfound": "Pričakovan $2 pri znaku $1, vendar ga ni mogoče najti (namesto tega je najden $3 $4).",
+ "abusefilter-exception-unrecognisedkeyword": "Neprepoznana ključna beseda $2 pri znaku $1.",
+ "abusefilter-exception-unexpectedtoken": "Nepričakovan žeton »$3« (vrste $2) pri znaku $1.",
+ "abusefilter-exception-unclosedstring": "Nezaključen niz, začet pri znaku $1.",
+ "abusefilter-exception-invalidoperator": "Neveljavni operator »$2« pri znaku $1.",
+ "abusefilter-exception-unrecognisedtoken": "Neprepoznan žeton »$2« pri znaki $1.",
+ "abusefilter-exception-noparams": "Funkciji »$2«, pri znaku $1, ni bil določen noben parameter.",
+ "abusefilter-exception-dividebyzero": "Nedovoljen poskus deljenja $2 z ničlo pri znaku $1.",
+ "abusefilter-exception-unrecognisedvar": "Neprepoznana spremenljivka $2 pri znaku $1.",
+ "abusefilter-exception-notenoughargs": "Funkcija $2, klicana pri znaku $1, nima dovolj parametrov.\n{{PLURAL:$3|Pričakovan je $3 parameter|Pričakovana sta $3 parametra|Pričakovani so $3 parametri|Pričakovanih je $3 parametrov}}, dobil sem jih $4",
+ "abusefilter-exception-regexfailure": "Napaka v regularnem izrazu »$3« pri znaku $1: »$2«",
+ "abusefilter-exception-overridebuiltin": "Nedovoljeno prepisovanje vgrajene spremenljivke »$2« pri znaku $1.",
+ "abusefilter-exception-outofbounds": "Zahtevanje neobstoječega vnosa seznama $2 (velikost seznama = $3) pri znaku $1.",
+ "abusefilter-exception-notlist": "Zahtevanje elementa polja v nepolju pri znaku $1.",
+ "abusefilter-action-tag": "Označi",
+ "abusefilter-action-throttle": "Zaduši",
+ "abusefilter-action-warn": "Opozori",
+ "abusefilter-action-blockautopromote": "Samodejno izvedi blokado",
+ "abusefilter-action-block": "Blokiraj",
+ "abusefilter-action-degroup": "Odstrani iz skupin",
+ "abusefilter-action-rangeblock": "Blokada območja",
+ "abusefilter-action-disallow": "Ne dovoli",
+ "abusefilter-revert-title": "Povrni vse spremembe filtra $1",
+ "abusefilter-revert-intro": "Ta obrazec omogoča vračanje vseh sprememb filtra zlorab zaradi filtra $1.\nProsimo, bodite previdni pri uporabi tega orodja.",
+ "abusefilter-revert-preview-item": "$1: $2 je {{GENDER:$7|storil|storil|storil(-a)}} $3 na $4.\nDejanja, ki bodo vrnjena: $5 ($6)",
+ "abusefilter-revert-search-legend": "Izberite dejanja filtra zlorab, ki naj bodo vrnjena",
+ "abusefilter-revert-periodstart": "Začetek obdobja:",
+ "abusefilter-revert-periodend": "Konec obdobja:",
+ "abusefilter-revert-search": "Izberite dejanja",
+ "abusefilter-revert-filter": "ID filtra:",
+ "abusefilter-revert-preview-intro": "Spodaj se nahajajo dejanja filtra zlorab, ki bodo vrnjena s tem dejanjem.\nProsimo, skrbno jih preverite in kliknite »{{int:abusefilter-revert-confirm}}«, da potrdite izbiro.",
+ "abusefilter-revert-confirm": "Potrdi",
+ "abusefilter-revert-success": "Vrnili ste vsa dejanja filtra zlorab zaradi [[Special:AbuseFilter/$1|filtra $2]].",
+ "abusefilter-revert-reason": "Samodejna vrnitev vseh dejanj filtra zlorab zaradi filtra $1.\nPodan razlog: $2",
+ "abusefilter-revert-reasonfield": "Razlog:",
+ "abusefilter-test": "Preizkusi filter s preteklimi urejanji",
+ "abusefilter-test-intro": "Ta stran vam omogoča, da preverite filter, vnesen v spodnje polje, ob {{PLURAL:$1|zadnjo $1 spremembo|zadnji $1 spremembi|zadnje $1 spremembe|zadnjih $1 sprememb}}.\nZa nalaganje obstoječega filtra vpišite njegov ID v polje pod urejevalnim besedilnim poljem in kliknite gumb »{{int:abusefilter-test-load}}«.",
+ "abusefilter-test-legend": "Preizkušanje filtrov",
+ "abusefilter-test-load-filter": "Naloži filter ID:",
+ "abusefilter-test-submit": "Preizkusi",
+ "abusefilter-test-load": "Naloži",
+ "abusefilter-test-user": "Spremembe uporabnika:",
+ "abusefilter-test-period-start": "Pozneje napravljene spremembe:",
+ "abusefilter-test-period-end": "Spremembe narejene prej:",
+ "abusefilter-test-page": "Spremembe na strani:",
+ "abusefilter-test-shownegative": "Prikaži spremembe, ki se ne ujemajo s filtrom",
+ "abusefilter-test-syntaxerr": "Vnesen filter vsebuje skladenjsko napako.\nPolno pojasnilo lahko dobite s klikom na gumb »{{int:abusefilter-edit-check}}«.",
+ "abusefilter-test-badtitle": "Vneseni naslov strani ni veljaven. Vsebuje enega ali več znakov, ki jih ni mogoče uporabiti v naslovih.",
+ "abusefilter-changeslist-examine": "preuči",
+ "abusefilter-examine": "Preuči posamezne spremembe",
+ "abusefilter-examine-intro": "Ta stran vam omogoča preverjanje spremenljivk, ki jih ustvari filter zlorab, za posamezno spremembo in jo preizkusi ob filtrih.",
+ "abusefilter-examine-legend": "Izberi spremembe",
+ "abusefilter-examine-diff": "URL razlike:",
+ "abusefilter-examine-user": "Uporabnik:",
+ "abusefilter-examine-title": "Naslov strani:",
+ "abusefilter-examine-submit": "Iskanje",
+ "abusefilter-examine-vars": "Spremenljivke, ustvarjene za to spremembo",
+ "abusefilter-examine-test": "Preizkusi to spremembo s filtrom",
+ "abusefilter-examine-test-button": "Preizkusi filter",
+ "abusefilter-examine-match": "Filter se ujema s to spremembo.",
+ "abusefilter-examine-nomatch": "Filter se ne ujema s to spremembo.",
+ "abusefilter-examine-syntaxerror": "Filter ima neveljavno skladnjo",
+ "abusefilter-examine-notfound": "Zahtevane spremembe ni bilo mogoče najti.",
+ "abusefilter-examine-incompatible": "Zahtevane spremembe filter zlorab ne podpira.",
+ "abusefilter-examine-noresults": "Za navedene iskalne parametre ni bilo najdenih rezultatov.",
+ "abusefilter-topnav": "'''Navigacija filtra zlorab'''",
+ "abusefilter-topnav-home": "Domov",
+ "abusefilter-topnav-test": "Paketno preizkušanje",
+ "abusefilter-topnav-examine": "Preuči pretekla urejanja",
+ "abusefilter-topnav-log": "Dnevnik zlorab",
+ "abusefilter-topnav-tools": "Orodja za iskanje napak",
+ "abusefilter-topnav-import": "Uvozi filter",
+ "abusefilter-log-name": "Dnevnik filtrov zlorab",
+ "abusefilter-log-header": "Ta dnevnik prikazuje povzetek sprememb filtrov.\nZa vse podrobnosti si oglejte [[Special:AbuseFilter/history|seznam]] zadnjih sprememb filtrov.",
+ "abusefilter-log-noresults": "Ni zadetkov",
+ "abusefilter-diff-title": "Razlike med različicami",
+ "abusefilter-diff-item": "Postavka",
+ "abusefilter-diff-version": "Različica dne $1 {{GENDER:$3|od}} $2",
+ "abusefilter-diff-info": "Osnovni podatki",
+ "abusefilter-diff-pattern": "Pogoji filtra",
+ "abusefilter-diff-invalid": "Ne morem pridobiti zahtevanih različic",
+ "abusefilter-diff-backhistory": "Nazaj na zgodovino filtra",
+ "abusefilter-diff-prev": "Starejša sprememba",
+ "abusefilter-diff-next": "Novejša sprememba",
+ "abusefilter-import-intro": "Ta vmesnik lahko uporabite za uvoz filtrov iz drugih wikijev.\nNa izvornem wikiju kliknite »{{int:abusefilter-edit-export}}« pod »{{int:abusefilter-edit-tools}}« v urejevalnem vmesniku.\nNato skopirajte besedilo v prikazanem polju, prilepite ga v to polje in kliknite »{{int:abusefilter-import-submit}}«.",
+ "abusefilter-import-submit": "Uvozi podatke",
+ "abusefilter-group-default": "Privzeto"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/so.json b/www/wiki/extensions/AbuseFilter/i18n/so.json
new file mode 100644
index 00000000..df203668
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/so.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "Abshirdheere",
+ "Maax"
+ ]
+ },
+ "abusefilter-log-search-submit": "Raadi",
+ "abusefilter-log-noactions": "Waxba",
+ "abusefilter-examine-submit": "Raadi"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/sq.json b/www/wiki/extensions/AbuseFilter/i18n/sq.json
new file mode 100644
index 00000000..86171713
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/sq.json
@@ -0,0 +1,314 @@
+{
+ "@metadata": {
+ "authors": [
+ "Euriditi",
+ "Marinari",
+ "Vinie007",
+ "Kosovastar",
+ "Matma Rex",
+ "Arianit"
+ ]
+ },
+ "abusefilter-desc": "Zbaton automatikisht deduktimin e redaktimeve",
+ "abusefilter": "Shpërdoron filter konfigurimin",
+ "abuselog": "Shpërdoron gjurmën e kyçjes",
+ "abusefilter-intro": "Mirë se vini në ballinën kryesore të Filter shpërdoruesit.\nFilter shpërdoruesi është një mekanizëm i automatizuar sofverik Për të aplikuar deduktimin automatik të të gjitha veprimeve.\nKjo ballinë tregon një listë të filtrave të përcaktuara, dhe i lejon ata të modifikohen.",
+ "abusefilter-mustbeeditor": "Për arsye sigurie, vetëm përdoruesit me të drejtën për të modifikuar filtra abuzimit mund të përdorin këtë interface.",
+ "abusefilter-warning": "' ' ' Kujdes ' ' ' : Ky veprim është identifikuar automatikisht si i dëmshëm.\nRedaktimet jo-konstruktive do të rikthehen shpejt dhe redaktimet skandaloze apo jo-konstruktive të përsëritura do të rezultojë në llogarinë tuaj ose IP adresën si të bllokuara.\nNëse besoni ky redaktim të jetë konstruktiv, mund të shtypni Paraqit edhe njëherë për ta konfirmuar.\nNjë përshkrim i shkurtër i rregullave të shpërdorimit që veprimet tuaja janë përputhur janë: $1",
+ "abusefilter-disallowed": "Ky veprim është identifikuar automatikisht si i dëmshëm, dhe për këtë arsye i ndaluar.\nNëse besoni se redaktimi i juaj të jetë konstruktiv, ju lutem informoni administratorin se çfarë ishit duke tentuar të bënit.\nNjë përshkrim i shkurtër i rregullave të shpërdorimit që veprimet tuaja janë përputhur janë: $1",
+ "abusefilter-blocked-display": "Ky veprim është identifikuar automatikisht si i dëmshëm,\ndhe ju keni qenë të penguar në ekzekutimin e tij.\nNë mënyrë për të mbrojtur {{SITENAME}} , emri i përdoruesit tuaj dhe të gjitha IP adresat e lidhura janë bllokuar nga redaktimi.\nNëse kjo ka ndodhur në gabim, ju lutem kontaktoni administratorin.\n Një përshkrim i shkurtër i rregullave të shpërdorimit që veprimet tuaja janë përputhur janë: $1",
+ "abusefilter-degrouped": "Ky veprim është identifikuar automatikisht si i dëmshëm.\nSi pasojë, ai ka qenë i ndaluar, dhe me që llogaria juaj është dyshuar për të qenë e kompromentuar, të gjitha të drejtat janë revokuar.\nNëse besoni se kjo ka qenë një gabim, ju lutem kontaktoni një burokrat me shpjegimim e këtij veprimi, dhe të drejtat tuaja mund të rikthehen.\nNjë përshkrim i shkurtër i rregullave të shpërdorimit që veprimet tuaja janë përputhur janë: $1",
+ "abusefilter-autopromote-blocked": "Ky veprim është identifikuar automatikisht si i dëmshëm dhe është ndaluar.\nPërveç kësaj, si masë sigurie, disa privilegje të dhëna në mënyrë rutinore janë revokuar përkohësisht në llogarinë tuaj.\nNjë përshkrim i shkurtër i rregullave të shpërdorimit që veprimet tuaja janë përputhur janë: $1",
+ "abusefilter-blocker": "Abuse filtër",
+ "abusefilter-blockreason": "të e bllokuara automatikisht nga abuzimi me filtër rregull:.! XAU prej Përshkrim përkojnë $1",
+ "abusefilter-degroupreason": "Të drejtat e hequra automatikisht nga filtër shpërdoruesi.\nPërshkrimi i rregullit: $1",
+ "abusefilter-accountreserved": "Ky emër llogari është i rezervuar për përdorim nga ana e abuzimit filtri.",
+ "right-abusefilter-modify": "abuzim filtra Modifiko",
+ "right-abusefilter-view": "abuzim filtra Modifiko",
+ "right-abusefilter-log": "Shiko log abuzimin",
+ "right-abusefilter-log-detail": "Shiko log detajuar abuzimet",
+ "right-abusefilter-private": "Shiko të dhënave private në log abuzimin",
+ "right-abusefilter-modify-restricted": "abuzim filtra Modifiko me veprimet e kufizuar",
+ "right-abusefilter-revert": "Rikthehet të gjitha ndryshimet nga një abuzim të dhënë filtër",
+ "right-abusefilter-view-private": "abuzim filtra Shiko shënuar si private",
+ "right-abusefilter-hide-log": "Hide hyra në log abuzimin",
+ "right-abusefilter-hidden-log": "Shiko log detajuar abuzimet",
+ "action-abusefilter-modify": "Modifikojë filtër shpërdoruesin",
+ "action-abusefilter-view": "abuzim filtra Modifiko",
+ "action-abusefilter-log": "pamje log abuzimin",
+ "action-abusefilter-log-detail": "Shiko në hollësi gjurmët e kyçjes së shpërdoruesit",
+ "action-abusefilter-private": "Shiko të dhënave private në gjurmët e kyçjes së shpërdoruesit",
+ "action-abusefilter-modify-restricted": "Modifiko filtër shpërdoruesin me veprimet e kufizuara",
+ "action-abusefilter-revert": "Rikthehet të gjitha ndryshimet nga filtri i shpërdorimit të dhënë",
+ "action-abusefilter-view-private": "Shiko filtra shpërdorimit të shënuara si private",
+ "abusefilter-log": "Gjurmët e kyçjes të filtrit të shpërdorimit",
+ "abusefilter-log-summary": "Kjo gjurmë tregon listën e të gjitha veprimeve të kapur nga filtrat.",
+ "abusefilter-log-search": "Kërko gjurmët e shpërdorimit",
+ "abusefilter-log-search-user": "Përdoruesi:",
+ "abusefilter-log-search-filter": "Filter ID-ja:",
+ "abusefilter-log-search-title": "Titulli:",
+ "abusefilter-log-search-submit": "Kërko",
+ "abusefilter-log-entry": "$1 : $2 Inicoi një filtër shpërdorimi, duke performuar veprimin \" $3 \"në $4 Veprimet e marra: $5 ;\nPërshkrimi i Filtrit: $6",
+ "abusefilter-log-detailedentry-meta": "$1 : $2 Inicoi $3 , duke performuar veprimin \"$4\" në $5.\nVeprimet e marra: $6 ;\nPërshkrimi i Filtrit: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "Filtri global $1",
+ "abusefilter-log-detailedentry-local": "filtri $1",
+ "abusefilter-log-detailslink": "Detajet",
+ "abusefilter-log-hidelink": "Përshtat shikueshmërinë",
+ "abusefilter-log-details-legend": "Detajet për gjurmët e hyrjes $1",
+ "abusefilter-log-details-var": "Variabël",
+ "abusefilter-log-details-val": "Vlera",
+ "abusefilter-log-details-vars": "Parametrat e veprimit",
+ "abusefilter-log-details-private": "Të dhënave private",
+ "abusefilter-log-details-ip": "IP adresa origjinale",
+ "abusefilter-log-noactions": "asnjë",
+ "abusefilter-log-details-diff": "Ndryshimet e bëra në redaktim",
+ "abusefilter-log-linkoncontribs": "Shpërdoro gjurmët e kyçjes",
+ "abusefilter-log-linkoncontribs-text": "Shpërdoro gjurmët e kyçjes për këtë përdorues",
+ "abusefilter-log-hidden": "(të dhënat e fshehura)",
+ "abusefilter-log-details-hidden": "Nuk mund të shihni detajet për këtë shenim sepse është e fshehur për vështrim publik",
+ "abusefilter-log-hide-legend": "Fshih shënimet për gjurmët e kyqjes",
+ "abusefilter-log-hide-id": "ID shënimet e kyçjes",
+ "abusefilter-log-hide-hidden": "Fsheh këtë term nga opinioni publik",
+ "abusefilter-log-hide-reason": "Arsyeja:",
+ "abusefilter-log-hide-forbidden": "Ju nuk keni leje për të fshehur shpërdorimin e shënimeve të kyçjes.",
+ "abusefilter-logentry-suppress": "Fshehur \"[[$1]]\"",
+ "abusefilter-logentry-unsuppress": "trego \"[[$1]]\"",
+ "abusefilter-management": "Shpërdoro filtër menaxhmentin",
+ "abusefilter-list": "Të gjithë filtrat",
+ "abusefilter-list-id": "Filtër ID-ja",
+ "abusefilter-list-status": "Statusi",
+ "abusefilter-list-public": "Përshkrimi publik",
+ "abusefilter-list-consequences": "Pasojat",
+ "abusefilter-list-visibility": "Dukshmëria",
+ "abusefilter-list-hitcount": "Numëro klikimet",
+ "abusefilter-list-edit": "Redakto",
+ "abusefilter-list-details": "Detajet",
+ "abusefilter-list-limit": "Numri për faqe:",
+ "abusefilter-list-lastmodified": "Ndryshimet e fundit",
+ "abusefilter-hidden": "Privat",
+ "abusefilter-unhidden": "Publik",
+ "abusefilter-enabled": "I Aktivizuar",
+ "abusefilter-deleted": "E Fshirë",
+ "abusefilter-disabled": "I Çaktivizuar",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|klikim|klikime}}",
+ "abusefilter-new": "Krijo filter të ri",
+ "abusefilter-return": "Kthehu tek filtër menaxhmenti",
+ "abusefilter-status-global": "Global",
+ "abusefilter-list-options": "Opcionet",
+ "abusefilter-list-options-deleted": "Filtra e fshirë",
+ "abusefilter-list-options-deleted-only": "Trego vetëm filtrat e fshirë",
+ "abusefilter-list-options-deleted-hide": "Fsheh filtrat e fshirë",
+ "abusefilter-list-options-deleted-show": "Përfshij filtra e fshirë",
+ "abusefilter-list-options-disabled": "Filtrat e deaktivizuar",
+ "abusefilter-list-options-hidedisabled": "Fsheh filtrat e deaktivizuar",
+ "abusefilter-list-options-submit": "Përditëso",
+ "abusefilter-tools-text": "Këtu janë disa mjete të cilat mund të jenë të dobishme në formulimin dhe korigjimin e kodit të filtrave të shpërdorimit",
+ "abusefilter-tools-expr": "Testues i shprehjes",
+ "abusefilter-tools-submitexpr": "Përcakto",
+ "abusefilter-tools-reautoconfirm": "Rivendos statusin e autokonfirmuar",
+ "abusefilter-tools-reautoconfirm-user": "Përdoruesi:",
+ "abusefilter-tools-reautoconfirm-submit": "Ri-autokonfirmo",
+ "abusefilter-reautoconfirm-none": "Ky përdorues nuk ka pasur {{GENDER:$1|të tij|të saj|të tyre}} statusin e autokonfirmuar të pezulluar",
+ "abusefilter-reautoconfirm-notallowed": "Ti nuk je i autorizuar për të rivendosur statusin e konfirmimit automatik.",
+ "abusefilter-reautoconfirm-done": "Statusi i autokonfirmuar i llogarisë është rivendosur",
+ "abusefilter-status": "fundit $1 {{PLURAL:$1|veprimi i|veprimet e }}, $2 ($3%) {{PLURAL:$2|ka|kanë}} arritur kufirin e përcaktuar të $4, dhe $5 ($6%) {{PLURAL:$5|ka|kanë}} përputhje me një nga filtrat aktual të aktivizuar.",
+ "abusefilter-edit-subtitle": "Duke redaktuar filtrin $1",
+ "abusefilter-edit-oldwarning": "<strong>Ju jeni duke redaktuar versionin e vjetër të këtij filtri.\nStatistikat e cituara janë për versionin më të fundit të filtrit.\nNëse ju ruani ndryshimet tuaja, ju do të mbishkruani të gjitha ndryshimet që nga inspektimi që jeni duke redaktuar. </strong> &bull;\n[[Special:AbuseFilter/history/$2|Kthehu ne historinë e këtij filtri ]].",
+ "abusefilter-edit-status-label": "Statistikat:",
+ "abusefilter-edit-status": "fundit $1 {{PLURAL:$1|veprimi i|veprimet e}}, ky filtër i ka krahasuar $2 ($3%).",
+ "abusefilter-edit-status-profile": "fundit $1 {{PLURAL:$1|veprimi i|veprimet e}}, ky filtër i ka krahasuar $2 ($3%).\nMesatarisht, koha e rrjedhës është $4ms, dhe konsumon $5 {{PLURAL:$5|kusht|kushtet}} e kufirit të kushtit",
+ "abusefilter-edit-new": "Filtër i ri",
+ "abusefilter-edit-save": "Ruaj filtrin",
+ "abusefilter-edit-id": "Filter ID-ja:",
+ "abusefilter-edit-description": "Përshkrimi:\n:''(për shikim publik)''",
+ "abusefilter-edit-flags": "Flamujt:",
+ "abusefilter-edit-enabled": "Mundëso këtë filtër",
+ "abusefilter-edit-deleted": "Shënjo si të fshirë",
+ "abusefilter-edit-hidden": "Fsheh detajet e këtij filtri nga opinioni publik",
+ "abusefilter-edit-global": "Zbato këtë filtër në nivel global",
+ "abusefilter-edit-rules": "Kushtet:",
+ "abusefilter-edit-notes": "Shënime:",
+ "abusefilter-edit-lastmod": "Filtri i ndryshuar për herë te fundit:",
+ "abusefilter-edit-lastmod-text": "$1 nga $2",
+ "abusefilter-edit-hitcount": "Filter klikimet:",
+ "abusefilter-edit-consequences": "Veprimet e ndërmarra kur ka pasur përputhje",
+ "abusefilter-edit-action-warn": "Inico këto veprime pasi ti jetë dhënë paralajmërimi përdoruesit",
+ "abusefilter-edit-action-disallow": "Pengo përdoruesin nga kryerja e veprimit në fjalë",
+ "abusefilter-edit-action-blockautopromote": "Anulo statusin e autoconfirmimit të përdoruesit",
+ "abusefilter-edit-action-degroup": "Hiq përdoruesin nga të gjitha grupet e privilegjuara",
+ "abusefilter-edit-action-block": "Blloko përdoruesin dhe / ose IP adresën nga redaktimi",
+ "abusefilter-edit-action-throttle": "Inico veprimin vetëm nëse përdoruesi ngec normën e limitit",
+ "abusefilter-edit-action-rangeblock": "Blloko / 16 vargjet nga të cilat përdoruesi ka origjinën",
+ "abusefilter-edit-action-tag": "Etiketo redaktimin për shqyrtim të mëtejshëm",
+ "abusefilter-edit-throttle-count": "Numri i veprimeve për të lejuar:",
+ "abusefilter-edit-throttle-period": "Periudha kohore:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|sekondë|sekonda}}",
+ "abusefilter-edit-throttle-groups": "Vavula (throttle) nga:\n: ' ' (një për linjë, e kombinuar me presje) ' '",
+ "abusefilter-edit-warn-message": "Porosi e sistemit për t'u përdorur për paralajmërim:",
+ "abusefilter-edit-warn-other": "Porosi të tjera",
+ "abusefilter-edit-warn-other-label": "Emri i faqes për porosi tjera:\n: ' ' (pa prefiksin e MediaWiki-t ) ' '",
+ "abusefilter-edit-warn-actions": "Veprimet:",
+ "abusefilter-edit-warn-preview": "Inspekto porosinë e selektuar",
+ "abusefilter-edit-warn-edit": "Krijo / Redakto porosinë e zgjedhur",
+ "abusefilter-edit-tag-tag": "Etiketimet për aplikim (një për rresht):",
+ "abusefilter-edit-denied": "Ju mund të mos i shihni detajet e këtij filtri, sepse është e fshehur për vështrim publik",
+ "abusefilter-edit-main": "Parametrat e filterit",
+ "abusefilter-edit-done-subtitle": "Filtri i redaktuar",
+ "abusefilter-edit-done": "Ju keni ruajtur me sukses ndryshimet tuaja për filterin $1 .",
+ "abusefilter-edit-badsyntax": "Është gabim sintakse në filtrin që keni specifikuar.\nProdhimi nga analiza gramatikore ishte: <pre>$1</pre>",
+ "abusefilter-edit-restricted": "Nuk mund të redaktoni këtë filtër, sepse përmban një apo më shumë veprime të kufizuara.\nJu lutem kërko nga përdoruesi me autorizim të shtoj veprimet e kufizuara për ta bërë ndryshimin për ju.",
+ "abusefilter-edit-viewhistory": "Shiko historinë e këtij filtri",
+ "abusefilter-edit-history": "Historiku:",
+ "abusefilter-edit-check": "Kontrolloni sintaksën",
+ "abusefilter-edit-badfilter": "Filtri që keni specifikuar nuk ekziston",
+ "abusefilter-edit-revert": "Kthe veprimet e ndërmarra nga ky filtër",
+ "abusefilter-edit-tools": "Veglat:",
+ "abusefilter-edit-test-link": "Testo këtë filtër kundrejt redaktimeve të fundit",
+ "abusefilter-edit-export": "Exporto këtë filtër në një tjetër wiki",
+ "abusefilter-edit-syntaxok": "Nuk janë zbuluar gabime sintaksore",
+ "abusefilter-edit-syntaxerr": "Është zbuluar gabim sintakse: $1",
+ "abusefilter-edit-bad-tags": "Një apo më shumë etiketime që ju keni specifikuar nuk janë valide.\nEtiketimet duhet të jenë të shkurta, dhe nuk duhet të përmbajnë karaktere speciale",
+ "abusefilter-edit-notallowed": "Ju nuk u lejohet për të krijuar apo redaktuar filtrat e shpërdorimit",
+ "abusefilter-edit-builder-select": "Selektoni një mundësi për të shtuar atë në kursor",
+ "abusefilter-edit-builder-group-op-arithmetic": "Operatorët aritmetikë",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Mbledhje (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Zbritje (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Shumëzim (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Pjestim (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Modulus (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Në fuqi (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Operatorët Krahasues",
+ "abusefilter-edit-builder-op-comparison-equal": "Barabartë me (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Nuk është e barabartë me (! =)",
+ "abusefilter-edit-builder-op-comparison-lt": "Më e vogël se (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Më e madhe se (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Më e vogël ose e barabartë me (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Më e madhe ose e barabartë me (>=)",
+ "abusefilter-edit-builder-group-op-bool": "Boolean operatorët (logjik)",
+ "abusefilter-edit-builder-op-bool-not": "Jo (!)",
+ "abusefilter-edit-builder-op-bool-and": "Dhe (&)",
+ "abusefilter-edit-builder-op-bool-or": "Ose (|)",
+ "abusefilter-edit-builder-group-misc": "Të Ndryshme",
+ "abusefilter-edit-builder-misc-in": "të përfshira në varg - String (in)",
+ "abusefilter-edit-builder-misc-like": "Pattern Takimet (like)",
+ "abusefilter-edit-builder-misc-rlike": "Regex takimet (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "Regex takimet, me shkronja insensitive (irlike)",
+ "abusefilter-edit-builder-misc-contains": "Vargu i majt përmban vargun e djatht (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "String shkronjat (\"\")",
+ "abusefilter-edit-builder-misc-tern": "Operatori ternar - tresh (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "Kushtet (if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "Funksionet",
+ "abusefilter-edit-builder-funcs-length": "Gjatësia e String - vargut (length)",
+ "abusefilter-edit-builder-funcs-lcase": "Në shkronja të vogla (lcase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "Normalizo karakteret e çrregullta (ccnorm)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "Largo dyfish-karakteret (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "Karakteret speciale / total karakteret (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "Normalizo (norm)",
+ "abusefilter-edit-builder-funcs-count": "Numri i herave që string X paraqitet në string Y (count)",
+ "abusefilter-edit-builder-funcs-rcount": "Numri i herave që regex X paraqitet në string Y (rcount)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "Largo hapësirën e bardhë (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "Largo karakteret speciale (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "A është IP-ja në gamë ? (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "Kërko String-un për substring të shumëfishta (contains_any)",
+ "abusefilter-edit-builder-funcs-substr": "Substring (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "Pozita e substring ne string (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "Zëvendëso substring me string (str_replace)",
+ "abusefilter-edit-builder-funcs-set_var": "Cakto variablën (set_var)",
+ "abusefilter-edit-builder-group-vars": "Variablat",
+ "abusefilter-edit-builder-vars-accountname": "Emri i llogarisë (në krijimin e llogarive)",
+ "abusefilter-edit-builder-vars-timestamp": "Unix vula-kohore e ndryshimit",
+ "abusefilter-edit-builder-vars-action": "Veprim",
+ "abusefilter-edit-builder-vars-addedlines": "Linjat e shtuara në redaktim",
+ "abusefilter-edit-builder-vars-delta": "Ndryshimi i madhësisë në redaktim",
+ "abusefilter-edit-builder-vars-diff": "Dallimi i Unifikuar i ndryshimeve në redaktim",
+ "abusefilter-edit-builder-vars-newsize": "Madhësia e re e faqes",
+ "abusefilter-edit-builder-vars-oldsize": "Madhësia e vjetër e faqes",
+ "abusefilter-edit-builder-vars-removedlines": "Linjat e hequra në redaktim",
+ "abusefilter-edit-builder-vars-summary": "Redaktimi përmbledhja / arsyeja",
+ "abusefilter-edit-builder-vars-article-id": "ID-ja e faqes",
+ "abusefilter-edit-builder-vars-article-ns": "Hapsira (namespace) e faqes",
+ "abusefilter-edit-builder-vars-article-text": "Titulli i faqes (pa hapsirë - namespace)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Titulli i plotë i faqes",
+ "abusefilter-edit-builder-vars-movedfrom-id": "ID faqja e burimit lëvizës të faqes",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "Hapësira e burimit lëvizës të faqes",
+ "abusefilter-edit-builder-vars-movedfrom-text": "Titulli i faqes burimore lëvizëse",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "Titulli i plotë i burimit lëvizës të faqes",
+ "abusefilter-edit-builder-vars-movedto-id": "ID faqja e destinacionit lëvizës të faqes",
+ "abusefilter-edit-builder-vars-movedto-ns": "Hapsira e destinacionit lëvizës të faqes",
+ "abusefilter-edit-builder-vars-movedto-text": "Titulli i destinacionit lëvizës të faqes",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "Titulli i plotë i destinacionit lëvizës të faqes",
+ "abusefilter-edit-builder-vars-user-editcount": "Redakto numërimin e përdoruesit",
+ "abusefilter-edit-builder-vars-user-age": "Mosha e përdoruesit të llogarisë",
+ "abusefilter-edit-builder-vars-user-name": "Emri i përdoruesit të llogarisë",
+ "abusefilter-edit-builder-vars-user-groups": "Grupet ( përfshirë edhe të nënkuptuar) që përdoruesi është brenda",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "Koha që posta elektronike është konfirmuar",
+ "abusefilter-edit-builder-vars-recent-contributors": "Dhjetë përdoruesit e fundit për të kontribuar në faqe",
+ "abusefilter-edit-builder-vars-all-links": "Të gjitha vegzat e jashtme (links) në tekst të ri",
+ "abusefilter-edit-builder-vars-added-links": "Të gjitha vegzat e jashtme (links) të shtuara në redaktim",
+ "abusefilter-edit-builder-vars-removed-links": "Të gjitha vegzat e jashtme (links) të larguara në redaktim",
+ "abusefilter-edit-builder-vars-old-text": "Faqet e vjetra wikitext, përpara redaktimit",
+ "abusefilter-edit-builder-vars-new-text": "Faqe e re wikitext, pas redaktimit",
+ "abusefilter-edit-builder-vars-new-text-stripped": "Tekst faqe e re, e zhveshur nga çdo shenjim",
+ "abusefilter-edit-builder-vars-new-html": "HTML burimi i analizuar gramatikisht nga revizioni i ri",
+ "abusefilter-edit-builder-vars-restrictions-edit": "Redakto nivelin mbrojtës të faqes",
+ "abusefilter-edit-builder-vars-restrictions-move": "Largo nivelin mbrojtjes të faqes",
+ "abusefilter-edit-builder-vars-old-text-stripped": "Tekst faqe e vjetër, e zhveshur nga çdo shenjim",
+ "abusefilter-edit-builder-vars-old-links": "Vegzat në faqe, përpara redaktimit",
+ "abusefilter-edit-builder-vars-old-html": "Faqe e vjetër wikitext, e analizuar gramatikisht në HTML",
+ "abusefilter-edit-builder-vars-minor-edit": "Nëse janë apo jo, redaktimi është shënuar si i vogël",
+ "abusefilter-edit-builder-vars-file-sha1": "SHA1 hash i përmbajtjes së dokumentit",
+ "abusefilter-filter-log": "Ndryshimet e fundit të filtrit",
+ "abusefilter-history": "Ndrysho historikun pë Filtrin shpërdorues #$1",
+ "abusefilter-history-foruser": "Ndryshimet nga $1",
+ "abusefilter-history-hidden": "E fshehur",
+ "abusefilter-history-enabled": "I Aktivizuar",
+ "abusefilter-history-global": "Global",
+ "abusefilter-history-timestamp": "Koha",
+ "abusefilter-history-user": "Përdoruesi",
+ "abusefilter-history-public": "Përshkrimi i filtrit publik",
+ "abusefilter-history-flags": "Flamujt",
+ "abusefilter-history-filter": "Rregullat e filtrit",
+ "abusefilter-history-comments": "Komentet",
+ "abusefilter-history-actions": "Veprimet",
+ "abusefilter-history-backedit": "Kthehu tek redaktori i filtrit",
+ "abusefilter-history-deleted": "E Fshirë",
+ "abusefilter-history-filterid": "Filtër",
+ "abusefilter-history-select-legend": "Përmirëso kërkimin",
+ "abusefilter-history-select-user": "Përdoruesi:",
+ "abusefilter-history-select-submit": "Përmirëso",
+ "abusefilter-history-diff": "Ndryshimet",
+ "abusefilter-history-error-hidden": "Filtri që kërkuat është i fshehur, dhe ju nuk mund të shihni historikun e tij.",
+ "abusefilter-exception-unexpectedatend": "I papritur \"$2\" tek karakteri $1.",
+ "abusefilter-exception-expectednotfound": "$2 e pritur tek $1 nuk është gjetur (është gjetur $3 $4 në vend të saj ).",
+ "abusefilter-exception-unrecognisedkeyword": "Fjalë e panjohur $2 tek karakteri $1",
+ "abusefilter-exception-unexpectedtoken": "Shenjë (token) i papritur \"$3\" ( i tipit $2) tek karakteri $1",
+ "abusefilter-exception-unclosedstring": "String i pambaruar duke filluar tek karakteri $1 .",
+ "abusefilter-exception-invalidoperator": "Operatorë i pavlefshëm $2 tek karakteri $1",
+ "abusefilter-exception-unrecognisedtoken": "Shenjë (token) i panjohur \"$2\" tek karakteri $1",
+ "abusefilter-exception-noparams": "Nuk i janë dhënë parametra funksionit \"$2\" tek karakteri $1.",
+ "abusefilter-exception-dividebyzero": "Përpjekje të paligjshme për të pjestuar $2 me zero në karakterin e $1 .",
+ "abusefilter-exception-unrecognisedvar": "Variabël e panjohur $2 tek karakteri $1",
+ "abusefilter-exception-notenoughargs": "Pa argumente të mjaftueshme në funsionin $2 të thirrur tek karakteri $1.\nE pritshme $3 {{PLURAL:$3|argumenti|argumentet}}, mori $4",
+ "abusefilter-exception-regexfailure": "Gabim në shprehje të rregullt \" $3 \" tek karakterin $1 : \" $2 \"",
+ "abusefilter-action-tag": "Etiketo",
+ "abusefilter-action-throttle": "Mbyll",
+ "abusefilter-action-warn": "Paralajmëro",
+ "abusefilter-action-blockautopromote": "Blloko autopromovimin",
+ "abusefilter-action-block": "Blloko",
+ "abusefilter-action-degroup": "Largo nga grupet",
+ "abusefilter-action-rangeblock": "Varg-bllok",
+ "abusefilter-action-disallow": "Refuzo",
+ "abusefilter-revert-filter": "FIltri:",
+ "abusefilter-test-submit": "Verifiko",
+ "abusefilter-test-load": "Ngarko",
+ "abusefilter-changeslist-examine": "ekzamino",
+ "abusefilter-examine-user": "Përdoruesi:",
+ "abusefilter-examine-title": "Titulli i faqes:",
+ "abusefilter-examine-submit": "Kërko",
+ "abusefilter-topnav-home": "Faqja kryesore",
+ "abusefilter-topnav-import": "Importo filtër",
+ "abusefilter-log-noresults": "S'ka rezultate",
+ "abusefilter-diff-item": "Artikulli",
+ "abusefilter-diff-info": "Informata bazë",
+ "abusefilter-import-submit": "Importo të dhëna"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/sr-ec.json b/www/wiki/extensions/AbuseFilter/i18n/sr-ec.json
new file mode 100644
index 00000000..586dbe6f
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/sr-ec.json
@@ -0,0 +1,420 @@
+{
+ "@metadata": {
+ "authors": [
+ "FriedrickMILBarbarossa",
+ "Milicevic01",
+ "Rancher",
+ "Sasa Stefanovic",
+ "Жељко Тодоровић",
+ "Михајло Анђелковић",
+ "Сербијана",
+ "Matma Rex",
+ "Dungodung",
+ "Obsuser",
+ "Acamicamacaraca",
+ "Zoranzoki21",
+ "BadDog"
+ ]
+ },
+ "abusefilter-desc": "Извршава аутоматско хеуристичко филтрирање измена",
+ "abusefilter": "Подешавања филтера против злоупотребе",
+ "abuselog": "Извештај злоупотребе",
+ "abusefilter-intro": "Добро дошли у окружење за управљање Филтером против злоупотребе.\nТо је софтверски механизам који примењује аутоматску хеуристику за све радње.\nОво окружење приказује списак одређених филтера и омогућава вам да их промените.",
+ "abusefilter-mustbeeditor": "Из сигурносних разлога, само корисници са одговарајућим правима на измену филтерâ против злоупотребе могу користити ово окружење.",
+ "abusefilter-warning": "'''Упозорење''': Аутоматски филтер је препознао ову измену као потенцијално штетну.\nНеконструктивне радње ће бити враћене и могу да доведу до забране уређивања.\nУколико сматрате да измена ипак јесте конструктивна, кликните још једанпут на дугме „Сачувај страницу”.\nКратак опис правила злоупотребе које сте активирали: $1",
+ "abusefilter-disallowed": "Аутоматски филтер је препознао ову измену као потенцијално штетну и стога је није дозволио.\nУколико сматрате да измена ипак јесте конструктивна, обавестите неког од администратора о томе шта покушавате да учините.\nКратак опис повређеног правила: $1",
+ "abusefilter-blocked-display": "Аутоматски филтер је препознао ову измену као потенцијално штетну и није вам допуштено да је извршите.\nОсим тога, да би се заштититио/ла {{SITENAME}}, ваш налог и одговарајуће ИП адресе су блокиране.\nУколико се ово догодило грешком, контактирајте неког од администратора.\nКратак опис повређеног правила: $1",
+ "abusefilter-degrouped": "Аутоматски филтер је препознао ову измену као потенцијално штетну.\nСтога измена није дозвољена, а уклоњена су вам и сва овлашћења која сте имали. Уколико сматрате да је до тога дошло грешком, контактирајте неког од бирократа, објасните шта сте урадили и овлашћења ће вам можда бити враћена.\nКратак опис повређеног правила: $1",
+ "abusefilter-autopromote-blocked": "Аутоматски филтер је препознао ову измену као потенцијално штетну и стога је није дозволио.\nОсим тога, из предострожности су вам привремено уклоњена одређена овлашћења.\nКратак опис повређеног правила: $1",
+ "abusefilter-blocker": "Филтер против злоупотребе",
+ "abusefilter-blockreason": "Блокирани сте од стране филтера против злоупотребе.\nОпис повређеног правила: $1",
+ "abusefilter-degroupreason": "Филтер је аутоматски уклонио овлашћења.\nОпис правила: $1",
+ "abusefilter-accountreserved": "Ово корисничко име је резервисано од стране филтера против злоупотребе.",
+ "right-abusefilter-modify": "Уређивање филтера против злоупотребе",
+ "right-abusefilter-view": "прегледање филтера против злоупотребе",
+ "right-abusefilter-log": "прегледање извештаја злоупотребе",
+ "right-abusefilter-log-detail": "прегледање детаљних података у извештају злоупотребе",
+ "right-abusefilter-private": "прегледање приватних података у извештају злоупотребе",
+ "right-abusefilter-modify-restricted": "мењање филтера злоупотребе с ограниченим радњама",
+ "right-abusefilter-revert": "враћање свих измена које је направио филтер против злоупотребе",
+ "right-abusefilter-view-private": "прегледање приватних филтера против злоупотребе",
+ "right-abusefilter-log-private": "преглед уноса у дневнику злоупотребе који су означени као приватни",
+ "right-abusefilter-hide-log": "сакривање уноса у извештају злоупотребе",
+ "right-abusefilter-hidden-log": "прегледање сакривених уноса у извештају злоупотребе",
+ "right-abusefilter-modify-global": "прављење или мењање глобалног филтера против злоупотребе",
+ "action-abusefilter-modify": "уређивање филтера против злоупотребе",
+ "action-abusefilter-view": "прегледање филтера против злоупотребе",
+ "action-abusefilter-log": "прегледање извештаја злоупотребе",
+ "action-abusefilter-log-detail": "прегледање детаљних уноса у извештају злоупотребе",
+ "action-abusefilter-private": "прегледање личних података у извештају злоупотребе",
+ "action-abusefilter-modify-restricted": "мењање филтера против злоупотребе с ограниченим радњама",
+ "action-abusefilter-revert": "враћање свих измена које је направио филтер против злоупотребе",
+ "action-abusefilter-view-private": "прегледање приватних филтера против злоупотребе",
+ "action-abusefilter-log-private": "преглед дневника филтера против злоупотребе означене као приватне",
+ "abusefilter-log": "Дневник филтера против злоупотребе",
+ "abusefilter-log-summary": "Овај извештај приказује списак свих радњи које су извршили филтери.",
+ "abusefilter-log-search": "Претрага извештаја злоупотребе",
+ "abusefilter-log-search-user": "Корисник:",
+ "abusefilter-log-search-filter": "ID филтера:",
+ "abusefilter-log-search-title": "Наслов:",
+ "abusefilter-log-search-wiki": "Вики:",
+ "abusefilter-log-search-impact-all": "Све радње",
+ "abusefilter-log-search-impact-saved": "Само сачуване измене",
+ "abusefilter-log-search-impact-not-saved": "Без сачуваних измена",
+ "abusefilter-log-search-entries-label": "Видљивост:",
+ "abusefilter-log-search-entries-all": "Сви уноси",
+ "abusefilter-log-search-entries-hidden": "Невидљиви уноси",
+ "abusefilter-log-search-entries-visible": "Видљиви уноси",
+ "abusefilter-log-search-action-taken-label": "Извршена радња:",
+ "abusefilter-log-search-action-taken-any": "Било која",
+ "abusefilter-log-search-submit": "Претражи",
+ "abusefilter-log-entry": "$1: $2 је {{GENDER:$8|активирао}} филтер, {{GENDER:$8|изводећи}} радњу „$3“ на страници $4.\nПредузете радње: $5;\nОпис филтера: $6",
+ "abusefilter-log-entry-withdiff": "$1: $2 је {{GENDER:$8|активирао}} филтер злоупотребе, {{GENDER:$8|изводећи}} радњу „$3“ на страници $4.\nПредузете радње: $5;\nОпис филтера: $6 ($7)",
+ "abusefilter-log-detailedentry-meta": "$1: $2 је {{GENDER:$9|активирао}} $3, {{GENDER:$9|изводећи}} радњу „$4“ на страници $5.\nПредузете радње: $6;\nОпис филтера: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "глобални филтер $1",
+ "abusefilter-log-detailedentry-local": "филтер $1",
+ "abusefilter-log-detailslink": "детаљи",
+ "abusefilter-log-diff": "разл",
+ "abusefilter-log-hidelink": "подеси видљивост",
+ "abusefilter-log-details-legend": "Детаљи уноса $1",
+ "abusefilter-log-details-var": "Променљива",
+ "abusefilter-log-details-val": "Вредност",
+ "abusefilter-log-details-vars": "Параметри радње",
+ "abusefilter-log-details-private": "Приватни дневници",
+ "abusefilter-log-details-ip": "Изворна IP адреса",
+ "abusefilter-log-details-checkuser": "Провери корисника",
+ "abusefilter-log-noactions": "ништа",
+ "abusefilter-log-details-diff": "Измене направљене при уређивању",
+ "abusefilter-log-linkoncontribs": "дневник злоупотребе",
+ "abusefilter-log-linkoncontribs-text": "Извештај злоупотребе {{GENDER:$1|овог корисника|ове кориснице}}",
+ "abusefilter-log-hidden": "(унос је сакривен)",
+ "abusefilter-log-hidden-implicit": "(скривено зато што је измена обрисана)",
+ "abusefilter-log-cannot-see-details": "Немате овлашћење да видите детаље овог уноса.",
+ "abusefilter-log-cannot-see-private-details": "Немате дозволу за гледање детаља овог уноса.",
+ "abusefilter-log-details-hidden": "Не можете да видите детаље овог филтера јер су сакривени.",
+ "abusefilter-log-hide-legend": "Сакриј унос у извештају",
+ "abusefilter-log-hide-id": "ID уноса:",
+ "abusefilter-log-hide-hidden": "Сакриј овај унос из јавног приказа",
+ "abusefilter-log-hide-reason": "Разлог:",
+ "abusefilter-log-hide-forbidden": "Немате дозволу да сакривате уносе у извештају злоупотребе.",
+ "abusefilter-logentry-suppress": "сакриј „[[$1]]“",
+ "abusefilter-logentry-unsuppress": "откри „[[$1]]“",
+ "logentry-abusefilter-hit": "$1 је {{GENDER:$2|активирао|активирала}} $4, изводећи радњу „$5“ на страници $3. Предузете радње: $6 ($7)",
+ "log-action-filter-abusefilter": "Тип промене филтера:",
+ "log-action-filter-abusefilter-create": "нови филтер",
+ "log-action-filter-abusefilter-modify": "уређивање филтера",
+ "abusefilter-management": "Управљање филтером против злоупотребе",
+ "abusefilter-list": "Сви филтери",
+ "abusefilter-list-id": "ID филтера",
+ "abusefilter-list-status": "Статус",
+ "abusefilter-list-public": "Јавни опис",
+ "abusefilter-list-consequences": "Последице",
+ "abusefilter-list-visibility": "Видљивост",
+ "abusefilter-list-hitcount": "Бројач погодака",
+ "abusefilter-list-edit": "Уреди",
+ "abusefilter-list-details": "Детаљи",
+ "abusefilter-list-limit": "Ставки по страници:",
+ "abusefilter-list-lastmodified": "Последња измена",
+ "abusefilter-list-group": "Група филтера",
+ "abusefilter-hidden": "Приватно",
+ "abusefilter-unhidden": "Јавно",
+ "abusefilter-enabled": "Омогућено",
+ "abusefilter-deleted": "Обрисано",
+ "abusefilter-disabled": "Онемогућено",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|погодак|поготка|погодака}}",
+ "abusefilter-new": "Направи нови филтер",
+ "abusefilter-return": "Назад на управљање филтерима",
+ "abusefilter-status-global": "Глобално",
+ "abusefilter-list-options": "Подешавања",
+ "abusefilter-list-options-deleted": "Обрисани филтери:",
+ "abusefilter-list-options-deleted-only": "Прикажи само обрисане филтере",
+ "abusefilter-list-options-deleted-hide": "Сакриј обрисане филтере",
+ "abusefilter-list-options-deleted-show": "Укључи и обрисане филтере",
+ "abusefilter-list-options-scope": "Прикажи филтере:",
+ "abusefilter-list-options-scope-local": "Само локална правила",
+ "abusefilter-list-options-scope-global": "Само глобална правила",
+ "abusefilter-list-options-scope-all": "Локална и глобална правила",
+ "abusefilter-list-options-disabled": "Онемогућени филтери:",
+ "abusefilter-list-options-hidedisabled": "Сакриј онемогућене филтере",
+ "abusefilter-list-options-submit": "Ажурирај",
+ "abusefilter-tools-text": "Овде се налазе алатке које су корисне за исправљање грешака на филтеру против злоупотребе.",
+ "abusefilter-tools-expr": "Тестирање филтера",
+ "abusefilter-tools-submitexpr": "Процени",
+ "abusefilter-tools-reautoconfirm": "Врати самопотврђени статус",
+ "abusefilter-tools-reautoconfirm-user": "Корисник:",
+ "abusefilter-tools-reautoconfirm-submit": "Потврди",
+ "abusefilter-reautoconfirm-none": "Самопотврђени статус {{GENDER:$1|овог корисника|ове кориснице|овог корисника}} никада није био укинут.",
+ "abusefilter-reautoconfirm-notallowed": "Није вам дозвољено да вратите самопотврђени статус.",
+ "abusefilter-reautoconfirm-done": "Самопотврђени статус је враћен",
+ "abusefilter-status": "Од {{PLURAL:$1|последње радње|последње $1 радње|последњих $1 радњи}}, $2 ($3%) {{PLURAL:$2|је достигла|су достигле|је достигло}} ограничење од $4, а $5 ($6%) {{PLURAL:$5|се подудара|се подударају}} с једним од тренутно омогућених филтера.",
+ "abusefilter-edit": "Уређивање филтера злоупотребе",
+ "abusefilter-edit-subtitle": "Уређујете филтер $1",
+ "abusefilter-edit-subtitle-new": "Прављење филтера",
+ "abusefilter-edit-oldwarning": "<strong>Уређујете стару верзију овог филтера.\nИсказане статистике су за најновију верзију филтера.\nАко сачувате измене, обрисаћете све измене настале од измене коју управо уређујете.</strong> &bull;\n[[Special:AbuseFilter/history/$2|Назад на историју овог филтера]].",
+ "abusefilter-edit-status-label": "Статистике:",
+ "abusefilter-edit-status": "Од {{PLURAL:$1|последње радње|последње $1 радње|последњих $1 радњи}}, овај филтер се поклопио $2 ($3%).",
+ "abusefilter-edit-status-profile": "Од {{PLURAL:$1|последње радње|последње $1 радње|последњих $1 радњи}}, овај филтер се поклопио $2 ($3%).\nУ просеку, његово време покретања је $4 мс, а троши $5 {{PLURAL:$5|услов|услова}}.",
+ "abusefilter-edit-new": "Нови филтер",
+ "abusefilter-edit-save": "Сачувај филтер",
+ "abusefilter-edit-id": "ID филтера:",
+ "abusefilter-edit-description": "Опис:\n:''(јавно видљиво)''",
+ "abusefilter-edit-group": "Група филтера:",
+ "abusefilter-edit-flags": "Заставице:",
+ "abusefilter-edit-enabled": "Омогући овај филтер",
+ "abusefilter-edit-deleted": "Означи као обрисан",
+ "abusefilter-edit-hidden": "Сакриј детаље овог филтера из јавног приказа",
+ "abusefilter-edit-global": "Глобални филтер",
+ "abusefilter-edit-rules": "Услови:",
+ "abusefilter-edit-notes": "Напомене:",
+ "abusefilter-edit-lastmod": "Последња измена филтера:",
+ "abusefilter-edit-lastmod-text": "$3, $4 од {{GENDER:$5|корисника|кориснице|корисника}} $2",
+ "abusefilter-edit-hitcount": "Погоци филтера:",
+ "abusefilter-edit-consequences": "Предузети радње при поклапању",
+ "abusefilter-edit-action-warn": "Покрени ове радње након што упозорите корисника",
+ "abusefilter-edit-action-disallow": "Спречи корисника да изврши дотичну радњу",
+ "abusefilter-edit-action-blockautopromote": "Врати самопотврђени статус корисника",
+ "abusefilter-edit-action-degroup": "Уклони корисника са свих овлашћених група",
+ "abusefilter-edit-action-block": "Блокирај корисника / ИП адресу од уређивања",
+ "abusefilter-edit-action-throttle": "Покрени радње само ако корисник пређе ограничење учесталости",
+ "abusefilter-edit-action-rangeblock": "Блокирај /16 опсег IP адреса корисника",
+ "abusefilter-edit-action-tag": "Означи измену за будући преглед",
+ "abusefilter-edit-throttle-count": "Број дозвољених радњи:",
+ "abusefilter-edit-throttle-period": "Временски период:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|секунд|секунда|секунди}}",
+ "abusefilter-edit-throttle-groups": "Групно успоравање према:\n:''(један по реду, заједно са запетама)''",
+ "abusefilter-edit-warn-message": "Системска порука која ће се користити за упозорење:",
+ "abusefilter-edit-warn-other": "Остале поруке",
+ "abusefilter-edit-warn-other-label": "Назив странице друге поруке:\n:''(без префикса „Медијавики“)''",
+ "abusefilter-edit-warn-actions": "Радње:",
+ "abusefilter-edit-warn-preview": "Прегледај изабрану поруку",
+ "abusefilter-edit-warn-edit": "Направи/уреди изабрану поруку",
+ "abusefilter-edit-tag-tag": "[[Special:Tags|Ознаке]] за примену (једна по реду):",
+ "abusefilter-block-anon": "анонимни корисници",
+ "abusefilter-block-user": "регистровани корисници",
+ "abusefilter-edit-denied": "Не можете видети детаље овог филтера јер је сакривен из јавног приказа.",
+ "abusefilter-edit-main": "Параметри филтера",
+ "abusefilter-edit-done-subtitle": "Филтер је уређен",
+ "abusefilter-edit-done": "[[Special:AbuseFilter/history/$1/diff/prev/$2|Ваше измене]] [[Special:AbuseFilter/$1|филтера $3]] су сачуване.",
+ "abusefilter-edit-badsyntax": "Наведени филтер има синтаксну грешку.\nИзлаз из рашчлањивача био је: <pre>$1</pre>",
+ "abusefilter-edit-restricted": "Не можете уређивати овај филтер јер садржи једну или више ограничених радњи.\nЗамолите корисника с одређеним овлашћењем да направи измене уместо вас.",
+ "abusefilter-edit-viewhistory": "Погледај историју филтера",
+ "abusefilter-edit-history": "Историја:",
+ "abusefilter-edit-check": "Провери синтаксу",
+ "abusefilter-edit-badfilter": "Наведени филтер не постоји",
+ "abusefilter-edit-revert": "Враћања која је извршио овај филтер",
+ "abusefilter-edit-tools": "Алатке:",
+ "abusefilter-edit-test-link": "Тестирај овај филтер на скорашњим изменама",
+ "abusefilter-edit-export": "Извези овај филтер на други вики",
+ "abusefilter-edit-syntaxok": "Нема синтаксних грешака.",
+ "abusefilter-edit-syntaxerr": "Откривена је синтактичка грешка: $1",
+ "abusefilter-edit-bad-tags": "Једна или више ознака које сте навели нису валидне.\nОзнака мора бити кратка и не би требала имати специјалне карактере.",
+ "abusefilter-edit-notallowed": "Није вам дозвољено да правите или уређујете филтере против злоупотребе",
+ "abusefilter-edit-notallowed-global": "Није вам дозвољено да правите или уређујете глобалне филтере против злоупотребе",
+ "abusefilter-edit-builder-select": "Изаберите могућност за додавање на показивач",
+ "abusefilter-edit-builder-group-op-arithmetic": "Аритметички оператори",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Сабирање (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Одузимање (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Множење (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Дељење (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Модул (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Степеновање (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Оператори за поређење",
+ "abusefilter-edit-builder-op-comparison-equal": "Једнако са (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Није једнако са (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "Мање од (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Веће од (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Мање или једнако са (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Веће или једнако са (>=)",
+ "abusefilter-edit-builder-group-op-bool": "Булови оператори",
+ "abusefilter-edit-builder-op-bool-not": "Не (!)",
+ "abusefilter-edit-builder-op-bool-and": "И (&)",
+ "abusefilter-edit-builder-op-bool-or": "Или (|)",
+ "abusefilter-edit-builder-op-bool-xor": "ЕКСИЛИ (^)",
+ "abusefilter-edit-builder-group-misc": "Разно",
+ "abusefilter-edit-builder-misc-in": "садржано у ниски (in)",
+ "abusefilter-edit-builder-misc-like": "Одговара обрасцу (like)",
+ "abusefilter-edit-builder-misc-rlike": "Одговара регуларном изразу (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "Одговара регуларном изразу, без разликовања малих и великих слова (irlike)",
+ "abusefilter-edit-builder-misc-contains": "Лева ниска садржи десну ниску (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "Буквалан израз у ниски (\"\")",
+ "abusefilter-edit-builder-misc-tern": "Тринарни оператор (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "Услов (if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "Функције",
+ "abusefilter-edit-builder-funcs-length": "Дужина ниске (length)",
+ "abusefilter-edit-builder-funcs-lcase": "Малим словима (lcase)",
+ "abusefilter-edit-builder-funcs-ucase": "Великим словима (ucase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "Нормализуј знаке подложне забуни (ccnorm)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "Уклони поновљене знакове (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "Посебни знакови / укупно знакова (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "Нормализуј (norm)",
+ "abusefilter-edit-builder-funcs-count": "Број јављања ниске X у нисци Y (count)",
+ "abusefilter-edit-builder-funcs-rcount": "Број јављања регуларног израза X у нисци Y (rcount)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "Уклони размаке (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "Уклони посебне знакове (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "Провери да ли је IP адреса у опсегу (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "Претражи ниску на више подниски (contains_any)",
+ "abusefilter-edit-builder-funcs-substr": "Подниска (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "Положај подниске у нисци (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "Замени подниску с ниском (str_replace)",
+ "abusefilter-edit-builder-funcs-rescape": "Избегни буквалне ниске у регексу (rescape)",
+ "abusefilter-edit-builder-funcs-set_var": "Постави променљиву (set_var)",
+ "abusefilter-edit-builder-group-vars": "Променљиве",
+ "abusefilter-edit-builder-vars-accountname": "Назив налога (у тренутку отварања)",
+ "abusefilter-edit-builder-vars-timestamp": "Јуниксов временски потпис измене",
+ "abusefilter-edit-builder-vars-timestamp-expanded": "Временски потпис дневника",
+ "abusefilter-edit-builder-vars-action": "Радња",
+ "abusefilter-edit-builder-vars-addedlines": "Додати редови у измени",
+ "abusefilter-edit-builder-vars-delta": "Промена величине у измени",
+ "abusefilter-edit-builder-vars-newsize": "Нова величина странице",
+ "abusefilter-edit-builder-vars-oldsize": "Стара величина странице",
+ "abusefilter-edit-builder-vars-old-content-model": "Стари модел садржаја",
+ "abusefilter-edit-builder-vars-new-content-model": "Нови модел садржаја",
+ "abusefilter-edit-builder-vars-removedlines": "Уклоњени редови у измени",
+ "abusefilter-edit-builder-vars-summary": "Опис/разлог измене",
+ "abusefilter-edit-builder-vars-article-id": "ID странице",
+ "abusefilter-edit-builder-vars-article-ns": "Именски простор странице",
+ "abusefilter-edit-builder-vars-article-text": "Наслов странице (без именског простора)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Пун наслов странице",
+ "abusefilter-edit-builder-vars-article-views": "Прегледи странице",
+ "abusefilter-edit-builder-vars-movedfrom-id": "ID изворне странице премештања",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "Именски простор премештене странице",
+ "abusefilter-edit-builder-vars-movedfrom-text": "Наслов странице коју премештате",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "Пун наслов странице коју премештате",
+ "abusefilter-edit-builder-vars-movedto-id": "ID одредишне странице премештања",
+ "abusefilter-edit-builder-vars-movedto-ns": "Именски простор одредишне странице",
+ "abusefilter-edit-builder-vars-movedto-text": "Наслов одредишне странице",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "Пун наслов одредишне странице",
+ "abusefilter-edit-builder-vars-user-editcount": "Бројач корисничких измена",
+ "abusefilter-edit-builder-vars-user-age": "Старост корисничког налога",
+ "abusefilter-edit-builder-vars-user-name": "Назив корисничког налога",
+ "abusefilter-edit-builder-vars-user-groups": "Групе (укључујући посредне) у којима је корисник",
+ "abusefilter-edit-builder-vars-user-rights": "Права која корисник има",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "Време када је имејл адреса потврђена",
+ "abusefilter-edit-builder-vars-recent-contributors": "Последњих десет уредника странице",
+ "abusefilter-edit-builder-vars-all-links": "Све спољашње везе у новом тексту",
+ "abusefilter-edit-builder-vars-added-links": "Све спољашње везе додате у измени",
+ "abusefilter-edit-builder-vars-removed-links": "Све спољашње везе уклоњене у измени",
+ "abusefilter-edit-builder-vars-old-text": "Стари викитекст пре измене",
+ "abusefilter-edit-builder-vars-new-text": "Нови викитекст после измене",
+ "abusefilter-edit-builder-vars-addedlines-pst": "Линије додане у уређивању, трансформиране у несачуване",
+ "abusefilter-edit-builder-vars-new-text-stripped": "Текст нове странице, без икаквих обележавања",
+ "abusefilter-edit-builder-vars-new-html": "Рашчлањени HTML извор нове измене",
+ "abusefilter-edit-builder-vars-restrictions-edit": "Степен заштите странице (уређивање)",
+ "abusefilter-edit-builder-vars-restrictions-move": "Степен заштите странице (премештање)",
+ "abusefilter-edit-builder-vars-old-text-stripped": "Текст старе странице, без икаквих обележавања",
+ "abusefilter-edit-builder-vars-old-links": "Везе на страници, пре уређивања",
+ "abusefilter-edit-builder-vars-old-html": "Викитекст старе странице, рашчлањен у HTML",
+ "abusefilter-edit-builder-vars-minor-edit": "Да ли је измена била означена као мања",
+ "abusefilter-edit-builder-vars-file-sha1": "Дисперзија SHA1 садржаја датотеке",
+ "abusefilter-filter-log": "Скорашње измене филтера",
+ "abusefilter-history": "Историја измена филтера #$1",
+ "abusefilter-history-foruser": "Измене од $1",
+ "abusefilter-history-hidden": "Сакривено",
+ "abusefilter-history-enabled": "Омогућено",
+ "abusefilter-history-global": "Глобално",
+ "abusefilter-history-timestamp": "Време",
+ "abusefilter-history-user": "Корисник",
+ "abusefilter-history-public": "Јавни опис филтера",
+ "abusefilter-history-flags": "Ознаке",
+ "abusefilter-history-filter": "Правило филтера",
+ "abusefilter-history-comments": "Коментари",
+ "abusefilter-history-actions": "Радње",
+ "abusefilter-history-backedit": "Назад на уређивање филтера",
+ "abusefilter-history-deleted": "Обрисано",
+ "abusefilter-history-filterid": "Филтер",
+ "abusefilter-history-select-legend": "Прецизирај претрагу",
+ "abusefilter-history-select-user": "Корисник:",
+ "abusefilter-history-select-submit": "Прочисти",
+ "abusefilter-history-diff": "Измене",
+ "abusefilter-history-error-hidden": "Тражени филтер је сакривен, и зато не можете да видите његову историју.",
+ "abusefilter-exception-unexpectedatend": "Неочекивано „$2“ код знака $1.",
+ "abusefilter-exception-expectednotfound": "Очекивало се $2 код знака $1, није нађено (уместо тога је пронађено $3 $4).",
+ "abusefilter-exception-unrecognisedkeyword": "Непрепозната кључна реч $2 код знака $1.",
+ "abusefilter-exception-unexpectedtoken": "Неочекивани жетон „$3“ (од врсте $2) код знака $1.",
+ "abusefilter-exception-unclosedstring": "Незатворена ниска почиње са знаком $1.",
+ "abusefilter-exception-invalidoperator": "Неисправан оператор „$2“ код знака $1.",
+ "abusefilter-exception-unrecognisedtoken": "Непрепознати жетон „$2“ код знака $1.",
+ "abusefilter-exception-noparams": "Нема наведених параметара за функцију „$2“ код знака $1.",
+ "abusefilter-exception-dividebyzero": "Недозвољен покушај дељења $2 с нулом код знака $1.",
+ "abusefilter-exception-unrecognisedvar": "Непрепозната променљива $2 код знака $1",
+ "abusefilter-exception-notenoughargs": "Недовољно аргумената за функцију $2 позвану на карактеру $1.\n{{PLURAL:$3|Очекивало се аргумената:}} $3, а добијено: $4",
+ "abusefilter-exception-regexfailure": "Грешка у регуларном изрзу „$3“ код знака $1: „$2“",
+ "abusefilter-exception-overridebuiltin": "Недозвољено мењање променљиве „$2“ на карактеру $1.",
+ "abusefilter-exception-outofbounds": "Захтевање непостојеће ставке у списку $2 (величина списка = $3) код знака $1.",
+ "abusefilter-exception-notlist": "Захтевање ставке низа за објекат који није низ код знака $1.",
+ "abusefilter-action-tag": "означено",
+ "abusefilter-action-throttle": "успори",
+ "abusefilter-action-warn": "упозори",
+ "abusefilter-action-blockautopromote": "блокирај самоунапређивање",
+ "abusefilter-action-block": "блокирај",
+ "abusefilter-action-degroup": "уклони из група",
+ "abusefilter-action-rangeblock": "блокирање распона",
+ "abusefilter-action-disallow": "забрани",
+ "abusefilter-revert-title": "Врати све измене направљене од филтера $1",
+ "abusefilter-revert-intro": "Ово вам омогућава да вратите све измене које је начинио филтер $1.\nБудите пажљиви при коришћењу ове алатке.",
+ "abusefilter-revert-preview-item": "$1: $2 је {{GENDER:$7|направио}} $3 на $4.\nРадње за враћање: $5 ($6)",
+ "abusefilter-revert-search-legend": "Изабери радње филтера злоупотребе које требају бити враћене",
+ "abusefilter-revert-periodstart": "Почетак периода:",
+ "abusefilter-revert-periodend": "Крај периода:",
+ "abusefilter-revert-search": "Изабери радње",
+ "abusefilter-revert-filter": "Филтер:",
+ "abusefilter-revert-preview-intro": "Испод су приказане радње које ће бити враћене.\nПажљиво их проверите и кликните на опцију „потврди“ да бисте потврдили свој избор.",
+ "abusefilter-revert-confirm": "Потврди",
+ "abusefilter-revert-success": "Вратили сте све радње које је преузео филтер за уређивање због [[Special:AbuseFilter/$1|филтерa $2]].",
+ "abusefilter-revert-reason": "Аутоматско враћање свих радњи које је начинио филтер $1.\nРазлог: $2",
+ "abusefilter-revert-reasonfield": "Разлог:",
+ "abusefilter-test": "Тестирај филтер према претходним изменама",
+ "abusefilter-test-intro": "Ова страница вам омогућава да проверите филтер из доње кутијице на {{PLURAL:$1|последњу $1 измену|последње $1 измене|последњих $1 измена}}.\nДа бисте учитали постојећи филтер, унесите његов ID у кутијицу испод поља за уређивање и клинките на дугме „Учитај“.",
+ "abusefilter-test-legend": "Тестирање филтера",
+ "abusefilter-test-load-filter": "Учитај филтер с назнаком:",
+ "abusefilter-test-submit": "Тестирај",
+ "abusefilter-test-load": "Учитај",
+ "abusefilter-test-user": "Измене од корисника:",
+ "abusefilter-test-period-start": "Измене направљене после:",
+ "abusefilter-test-period-end": "Измене направљене пре:",
+ "abusefilter-test-page": "Измене направљене на страници:",
+ "abusefilter-test-shownegative": "Прикажи измене које не одговарају филтеру",
+ "abusefilter-test-syntaxerr": "Филтер који сте унели садржи синтаксне грешке.\nДа бисте добили детаљно објашњење кликните на дугме „{{int:abusefilter-edit-check}}“.",
+ "abusefilter-changeslist-examine": "прегледај",
+ "abusefilter-examine": "Испитај појединачне измене",
+ "abusefilter-examine-intro": "Ова страница омогућава испитивање променљивих које је генерисао филтер злоупотреба за одређену измену и испробавање на филтерима.",
+ "abusefilter-examine-legend": "Изаберите измене",
+ "abusefilter-examine-diff": "Адреса разлике:",
+ "abusefilter-examine-user": "Корисник:",
+ "abusefilter-examine-title": "Наслов странице:",
+ "abusefilter-examine-submit": "Претражи",
+ "abusefilter-examine-vars": "Генерисане променљиве за ову измену",
+ "abusefilter-examine-test": "Тестирај ову измену с филтером",
+ "abusefilter-examine-test-button": "Тестирај филтер",
+ "abusefilter-examine-match": "Ова измена се поклапа с филтером.",
+ "abusefilter-examine-nomatch": "Ова измена се не поклапа с филтером.",
+ "abusefilter-examine-syntaxerror": "Филтер има неисправну синтаксу",
+ "abusefilter-examine-notfound": "Тражена измена није пронађена.",
+ "abusefilter-examine-incompatible": "Измена коју сте тражили није подржана од филтера против злоупотребе",
+ "abusefilter-examine-noresults": "Нису нађени пезултати за параметре претраге које сте задали.",
+ "abusefilter-topnav": "'''Навигација по филтеру против злоупотребе'''",
+ "abusefilter-topnav-home": "почетна",
+ "abusefilter-topnav-test": "групно испробавање",
+ "abusefilter-topnav-examine": "испитај прошле измене",
+ "abusefilter-topnav-log": "историја злоупотребе",
+ "abusefilter-topnav-tools": "Алатке за дебаговање",
+ "abusefilter-topnav-import": "увези филтер",
+ "abusefilter-log-name": "Дневник филтера против злоупотребе",
+ "abusefilter-log-header": "Овде је приказан сажетак измена начињених над филтерима.\nЗа више информација погледајте [[Special:AbuseFilter/history|преглед]] скорашњих измена.",
+ "abusefilter-logentry-create": "$1 је {{GENDER:$2|направио|направила}} $4 ($5)",
+ "abusefilter-logentry-modify": "$1 је {{GENDER:$2|уредио|уредила}} $4 ($5)",
+ "abusefilter-log-noresults": "Нема резултата",
+ "abusefilter-diff-title": "Разлике између издања",
+ "abusefilter-diff-item": "Ставка",
+ "abusefilter-diff-version": "Издање од $1 {{GENDER:$3|од}} $2",
+ "abusefilter-diff-info": "Основни подаци",
+ "abusefilter-diff-pattern": "Услови филтера",
+ "abusefilter-diff-invalid": "Не могу да прибавим захтеваног издања",
+ "abusefilter-diff-backhistory": "Повратак на историју филтера",
+ "abusefilter-diff-prev": "Старије измене",
+ "abusefilter-diff-next": "Новије измене",
+ "abusefilter-import-intro": "Ово корисничко окружење служи за увоз филтера са других викија.\nНа изворном викију, кликните на „{{int:abusefilter-edit-export}}“ под „{{int:abusefilter-edit-tools}}“ у уређивачком оквиру.\nКопирајте садржај из поља које се појави и налепите га у ово поље, па кликните на „{{int:abusefilter-import-submit}}“.",
+ "abusefilter-import-submit": "Увези податке",
+ "abusefilter-group-default": "Подразумевано",
+ "abusefilter-http-error": "Дошло је до HTTP грешке: $1."
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/sr-el.json b/www/wiki/extensions/AbuseFilter/i18n/sr-el.json
new file mode 100644
index 00000000..ff2942c7
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/sr-el.json
@@ -0,0 +1,387 @@
+{
+ "@metadata": {
+ "authors": [
+ "FriedrickMILBarbarossa",
+ "Michaello",
+ "Milicevic01",
+ "Rancher",
+ "Михајло Анђелковић",
+ "Matma Rex",
+ "Сербијана",
+ "Obsuser"
+ ]
+ },
+ "abusefilter-desc": "Izvršava automatsko heurističko filtriranje izmena",
+ "abusefilter": "Postavke filtera protiv zloupotrebe",
+ "abuselog": "Izveštaj zloupotrebe",
+ "abusefilter-intro": "Dobro došli u okruženje za upravljanje Filterom protiv zloupotrebe.\nTo je softverski mehanizam koji primenjuje automatsku heuristiku za sve radnje.\nOvo okruženje prikazuje spisak određenih filtera i omogućava vam da ih promenite.",
+ "abusefilter-mustbeeditor": "Iz sigurnosnih razloga, samo korisnici sa odgovarajućim pravima na izmenu filtera protiv zloupotrebe mogu koristiti ovo okruženje.",
+ "abusefilter-warning": "'''Upozorenje''': Automatski filter je prepoznao ovu izmenu kao potencijalno štetnu.\nNekonstruktivne akcije će biti vraćene i mogu da dovedu do zabrane uređivanja.\nUkoliko smatrate da izmena ipak jeste konstruktivna, kliknite još jedanput na dugme „Sačuvaj stranicu“.\nKratak opis pravila zloupotrebe koje ste aktivirali: $1",
+ "abusefilter-disallowed": "Automatski filter je prepoznao ovu izmenu kao potencijalno štetnu i stoga je nije dozvolio.\nUkoliko smatrate da izmena ipak jeste konstruktivna, obavestite nekog od administratora o tome šta pokušavate da učinite.\nKratak opis povređenog pravila: $1",
+ "abusefilter-blocked-display": "Automatski filter je prepoznao ovu izmenu kao potencijalno štetnu i nije vam dopušteno da je izvršite.\nOsim toga, da bi se zaštititio/la {{SITENAME}}, vaš nalog i odgovarajuće IP adrese su blokirane.\nUkoliko se ovo dogodilo greškom, kontaktirajte nekog od administratora.\nKratak opis povređenog pravila: $1",
+ "abusefilter-degrouped": "Automatski filter je prepoznao ovu izmenu kao potencijalno štetnu.\nStoga izmena nije dozvoljena, a uklonjena su vam i sva ovlašćenja koja ste imali. Ukoliko smatrate da je do toga došlo greškom, kontaktirajte nekog od birokrata, objasnite šta ste uradili i ovlašćenja će vam možda biti vraćena.\nKratak opis povređenog pravila: $1",
+ "abusefilter-autopromote-blocked": "Automatski filter je prepoznao ovu izmenu kao potencijalno štetnu i stoga je nije dozvolio.\nOsim toga, iz predostrožnosti su vam privremeno uklonjena određena ovlašćenja.\nKratak opis povređenog pravila: $1",
+ "abusefilter-blocker": "Filter protiv zloupotrebe",
+ "abusefilter-blockreason": "Blokirani ste od strane filtera protiv zloupotrebe.\nOpis povređenog pravila: $1",
+ "abusefilter-degroupreason": "Filter je automatski uklonio ovlašćenja.\nOpis pravila: $1",
+ "abusefilter-accountreserved": "Ovo korisničko ime je rezervisano od strane filtera protiv zloupotrebe.",
+ "right-abusefilter-modify": "uređivanje filtera protiv zloupotrebe",
+ "right-abusefilter-view": "pregledanje filtera protiv zloupotrebe",
+ "right-abusefilter-log": "pregledanje izveštaja zloupotrebe",
+ "right-abusefilter-log-detail": "pregledanje detaljnih podataka u izveštaju zloupotrebe",
+ "right-abusefilter-private": "pregledanje privatnih podataka u izveštaju zloupotrebe",
+ "right-abusefilter-modify-restricted": "menjanje filtera zloupotrebe s ograničenim radnjama",
+ "right-abusefilter-revert": "vraćanje svih izmena koje je napravio filter protiv zloupotrebe",
+ "right-abusefilter-view-private": "pregledanje privatnih filtera protiv zloupotrebe",
+ "right-abusefilter-hide-log": "sakrivanje unosa u izveštaju zloupotrebe",
+ "right-abusefilter-hidden-log": "pregledanje sakrivenih unosa u izveštaju zloupotrebe",
+ "action-abusefilter-modify": "uređivanje filtera protiv zloupotrebe",
+ "action-abusefilter-view": "pregledanje filtera protiv zloupotrebe",
+ "action-abusefilter-log": "pregledanje izveštaja zloupotrebe",
+ "action-abusefilter-log-detail": "pregledanje detaljnih unosa u izveštaju zloupotrebe",
+ "action-abusefilter-private": "pregledanje ličnih podataka u izveštaju zloupotrebe",
+ "action-abusefilter-modify-restricted": "menjanje filtera protiv zloupotrebe s ograničenim radnjama",
+ "action-abusefilter-revert": "vraćanje svih izmena koje je napravio filter protiv zloupotrebe",
+ "action-abusefilter-view-private": "pregledanje privatnih filtera protiv zloupotrebe",
+ "abusefilter-log": "Dnevnik filtera protiv zloupotrebe",
+ "abusefilter-log-summary": "Ovaj izveštaj prikazuje spisak svih radnji koje su izvršili filteri.",
+ "abusefilter-log-search": "Pretraga izveštaja zloupotrebe",
+ "abusefilter-log-search-user": "Korisnik:",
+ "abusefilter-log-search-filter": "ID filtera:",
+ "abusefilter-log-search-title": "Naslov:",
+ "abusefilter-log-search-wiki": "Viki:",
+ "abusefilter-log-search-submit": "Pretraži",
+ "abusefilter-log-entry": "$1: $2 je aktivirao filter, izvodeći radnju „$3“ na stranici $4.\nPreduzete radnje: $5;\nOpis filtera: $6",
+ "abusefilter-log-entry-withdiff": "$1: $2 je aktivirao filter zloupotrebe, izvodeći radnju „$3“ na stranici $4.\nPreduzete radnje: $5;\nOpis filtera: $6 ($7)",
+ "abusefilter-log-detailedentry-meta": "$1: $2 je aktivirao $3, izvodeći radnju „$4“ na stranici $5.\nPreduzete radnje: $6;\nOpis filtera: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "globalni filter $1",
+ "abusefilter-log-detailedentry-local": "filter $1",
+ "abusefilter-log-detailslink": "detalji",
+ "abusefilter-log-diff": "razl",
+ "abusefilter-log-hidelink": "podesi vidljivost",
+ "abusefilter-log-details-legend": "Detalji unosa $1",
+ "abusefilter-log-details-var": "Promenljiva",
+ "abusefilter-log-details-val": "Vrednost",
+ "abusefilter-log-details-vars": "Parametri radnje",
+ "abusefilter-log-details-private": "Privatni podaci",
+ "abusefilter-log-details-ip": "Izvorna IP adresa",
+ "abusefilter-log-noactions": "ništa",
+ "abusefilter-log-details-diff": "Izmene napravljene pri uređivanju",
+ "abusefilter-log-linkoncontribs": "dnevnik zloupotrebe",
+ "abusefilter-log-linkoncontribs-text": "Izveštaj zloupotrebe ovog korisnika",
+ "abusefilter-log-hidden": "(unos je sakriven)",
+ "abusefilter-log-hidden-implicit": "(skriveno zato što je izmena obrisana)",
+ "abusefilter-log-cannot-see-details": "Nemate ovlašćenje da vidite detalje ovog unosa.",
+ "abusefilter-log-details-hidden": "Ne možete da vidite detalje ovog filtera jer su sakriveni.",
+ "abusefilter-log-hide-legend": "Sakrij unos u izveštaju",
+ "abusefilter-log-hide-id": "ID unosa:",
+ "abusefilter-log-hide-hidden": "Sakrij ovaj unos iz javnog prikaza",
+ "abusefilter-log-hide-reason": "Razlog:",
+ "abusefilter-log-hide-forbidden": "Nemate dozvolu da sakrivate unose u izveštaju zloupotrebe.",
+ "abusefilter-logentry-suppress": "sakrij „[[$1]]“",
+ "abusefilter-logentry-unsuppress": "otkri „[[$1]]“",
+ "logentry-abusefilter-hit": "$1 je {{GENDER:$2|aktivirao|aktivirala}} $4, izvodeći radnju „$5“ na stranici $3. Preduzete radnje: $6 ($7)",
+ "abusefilter-management": "Upravljanje filterom protiv zloupotrebe",
+ "abusefilter-list": "Svi filteri",
+ "abusefilter-list-id": "ID filtera",
+ "abusefilter-list-status": "Status",
+ "abusefilter-list-public": "Javni opis",
+ "abusefilter-list-consequences": "Posledice",
+ "abusefilter-list-visibility": "Vidljivost",
+ "abusefilter-list-hitcount": "Brojač pogodaka",
+ "abusefilter-list-edit": "Uredi",
+ "abusefilter-list-details": "Detalji",
+ "abusefilter-list-limit": "Stavki po stranici:",
+ "abusefilter-list-lastmodified": "Poslednja izmena",
+ "abusefilter-list-group": "Grupa filtera",
+ "abusefilter-hidden": "Privatno",
+ "abusefilter-unhidden": "Javno",
+ "abusefilter-enabled": "Omogućeno",
+ "abusefilter-deleted": "Obrisano",
+ "abusefilter-disabled": "Onemogućeno",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|pogodak|pogotka|pogodaka}}",
+ "abusefilter-new": "Napravi novi filter",
+ "abusefilter-return": "Nazad na upravljanje filterima",
+ "abusefilter-status-global": "Globalno",
+ "abusefilter-list-options": "Opcije",
+ "abusefilter-list-options-deleted": "Obrisani filteri:",
+ "abusefilter-list-options-deleted-only": "Prikaži samo obrisane filtere",
+ "abusefilter-list-options-deleted-hide": "Sakrij obrisane filtere",
+ "abusefilter-list-options-deleted-show": "Uključi i obrisane filtere",
+ "abusefilter-list-options-scope": "Prikaži filtere:",
+ "abusefilter-list-options-scope-local": "Samo lokalna pravila",
+ "abusefilter-list-options-scope-global": "Samo globalna pravila",
+ "abusefilter-list-options-scope-all": "Lokalna i globalna pravila",
+ "abusefilter-list-options-disabled": "Onemogućeni filteri:",
+ "abusefilter-list-options-hidedisabled": "Sakrij onemogućene filtere",
+ "abusefilter-list-options-submit": "Ažuriraj",
+ "abusefilter-tools-text": "Ovde se nalaze alatke koje su korisne za ispravljanje grešaka na filteru protiv zloupotrebe.",
+ "abusefilter-tools-expr": "Testiranje filtera",
+ "abusefilter-tools-submitexpr": "Proceni",
+ "abusefilter-tools-reautoconfirm": "Vrati samopotvrđeni status",
+ "abusefilter-tools-reautoconfirm-user": "Korisnik:",
+ "abusefilter-tools-reautoconfirm-submit": "Potvrdi",
+ "abusefilter-reautoconfirm-none": "Samopotvrđeni status {{GENDER:$1|ovog korisnika|ove korisnice|ovog korisnika}} nikada nije bio ukinut.",
+ "abusefilter-reautoconfirm-notallowed": "Nije vam dozvoljeno da vratite samopotvrđeni status.",
+ "abusefilter-reautoconfirm-done": "Samopotvrđeni status je vraćen",
+ "abusefilter-status": "Od {{PLURAL:$1|poslednje radnje|poslednje $1 radnje|poslednjih $1 radnji}}, $2 ($3%) {{PLURAL:$2|je dostigla|su dostigle|je dostiglo}} ograničenje od $4, a $5 ($6%) {{PLURAL:$5|se podudara|se podudaraju}} s jednim od trenutno omogućenih filtera.",
+ "abusefilter-edit": "Uređivanje filtera zloupotrebe",
+ "abusefilter-edit-subtitle": "Uređujete filter $1",
+ "abusefilter-edit-subtitle-new": "Pravljenje filtera",
+ "abusefilter-edit-oldwarning": "<strong>Uređujete staro izdanje ovog filtera.\nIskazane statistike su za najnovije izdanje.\nAko sačuvate, obrisaćete sve izmene nastale od revizije koju upravo uređujete.</strong> &bull;\n[[Special:AbuseFilter/history/$2|Nazad na istoriju ovog filtera]].",
+ "abusefilter-edit-status-label": "Statistike:",
+ "abusefilter-edit-status": "Od {{PLURAL:$1|1=poslednje radnje|poslednje $1 radnje|poslednjih $1 radnji}}, ovaj filter se poklopio $2 ($3%).",
+ "abusefilter-edit-status-profile": "Od {{PLURAL:$1|poslednje radnje|poslednje $1 radnje|poslednjih $1 radnji}}, ovaj filter se poklopio $2 ($3%).\nU proseku, njegovo vreme pokretanja je $4 ms, a troši $5 {{PLURAL:$5|uslov|uslova}}.",
+ "abusefilter-edit-new": "Novi filter",
+ "abusefilter-edit-save": "Sačuvaj filter",
+ "abusefilter-edit-id": "ID filtera:",
+ "abusefilter-edit-description": "Opis:\n:''(javno vidljivo)''",
+ "abusefilter-edit-group": "Grupa filtera:",
+ "abusefilter-edit-flags": "Zastavice:",
+ "abusefilter-edit-enabled": "Omogući ovaj filter",
+ "abusefilter-edit-deleted": "Označi kao obrisan",
+ "abusefilter-edit-hidden": "Sakrij detalje ovog filtera iz javnog prikaza",
+ "abusefilter-edit-global": "Globalni filter",
+ "abusefilter-edit-rules": "Uslovi:",
+ "abusefilter-edit-notes": "Napomene:",
+ "abusefilter-edit-lastmod": "Poslednja izmena filtera:",
+ "abusefilter-edit-lastmod-text": "$3, $4 od {{GENDER:$5|korisnika|korisnice|korisnika}} $2",
+ "abusefilter-edit-hitcount": "Pogoci filtera:",
+ "abusefilter-edit-consequences": "Preduzete radnje pri poklapanju",
+ "abusefilter-edit-action-warn": "Pokreni ove radnje nakon što upozorite korisnika",
+ "abusefilter-edit-action-disallow": "Spreči korisnika da izvrši dotičnu radnju",
+ "abusefilter-edit-action-blockautopromote": "Vrati samopotvrđeni status korisnika",
+ "abusefilter-edit-action-degroup": "Ukloni korisnika sa svih ovlašćenih grupa",
+ "abusefilter-edit-action-block": "Blokiraj korisnika / IP adresu od uređivanja",
+ "abusefilter-edit-action-throttle": "Pokreni radnje samo ako korisnik pređe ograničenje učestalosti",
+ "abusefilter-edit-action-rangeblock": "Blokiraj /16 opseg IP adresa korisnika",
+ "abusefilter-edit-action-tag": "Označi izmenu za budući pregled",
+ "abusefilter-edit-throttle-count": "Broj dozvoljenih radnji:",
+ "abusefilter-edit-throttle-period": "Vremenski period:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|sekund|sekunda|sekundi}}",
+ "abusefilter-edit-throttle-groups": "Grupno usporavanje prema:\n:''(jedan po redu, zajedno sa zapetama)''",
+ "abusefilter-edit-warn-message": "Sistemska poruka koja će se koristiti za upozorenje:",
+ "abusefilter-edit-warn-other": "Ostale poruke",
+ "abusefilter-edit-warn-other-label": "Naziv stranice druge poruke:\n:''(bez prefiksa „Medijaviki“)''",
+ "abusefilter-edit-warn-actions": "Akcije:",
+ "abusefilter-edit-warn-preview": "Pregledaj izabranu poruku",
+ "abusefilter-edit-warn-edit": "Napravi/uredi izabranu poruku",
+ "abusefilter-edit-tag-tag": "Oznake (jedna po redu):",
+ "abusefilter-edit-denied": "Ne možete videti detalje ovog filtera jer je sakriven iz javnog prikaza.",
+ "abusefilter-edit-main": "Parametri filtera",
+ "abusefilter-edit-done-subtitle": "Filter izmenjen",
+ "abusefilter-edit-done": "[[Special:AbuseFilter/history/$1/diff/prev/$2|Vaše izmene]] [[Special:AbuseFilter/$1|filtera $3]] su sačuvane.",
+ "abusefilter-edit-badsyntax": "Navedeni filter ima sintaksnu grešku.\nIzlaz iz raščlanjivača bio je: <pre>$1</pre>",
+ "abusefilter-edit-restricted": "Ne možete uređivati ovaj filter jer sadrži jednu ili više ograničenih radnji.\nZamolite korisnika s određenim ovlašćenjem da napravi izmene umesto vas.",
+ "abusefilter-edit-viewhistory": "Pogledaj istoriju filtera",
+ "abusefilter-edit-history": "Istorija:",
+ "abusefilter-edit-check": "Proveri sitaksu",
+ "abusefilter-edit-badfilter": "Navedeni filter ne postoji",
+ "abusefilter-edit-revert": "Vraćanja koja je izvršio ovaj filter",
+ "abusefilter-edit-tools": "Alati:",
+ "abusefilter-edit-test-link": "Testiraj ovaj filter na skorašnjim izmenama",
+ "abusefilter-edit-export": "Izvezi ovaj filter na drugi viki",
+ "abusefilter-edit-syntaxok": "Nema sintaksnih grešaka.",
+ "abusefilter-edit-syntaxerr": "Otkrivena je sintaksna greška: $1",
+ "abusefilter-edit-bad-tags": "Jedna ili više oznaka koje ste naveli nisu validne.\nOznaka mora biti kratka i ne bi trebala imati specijalne karaktere.",
+ "abusefilter-edit-notallowed": "Nije vam dozvoljeno da pravite ili uređujete filtere protiv zloupotrebe",
+ "abusefilter-edit-notallowed-global": "Nije vam dozvoljeno da pravite ili uređujete globalne filtere protiv zloupotrebe",
+ "abusefilter-edit-builder-select": "Izaberite opciju koju ćete dodati kursoru",
+ "abusefilter-edit-builder-group-op-arithmetic": "Aritmetičke operacije",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Sabiranje (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Oduzimanje (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Množenje (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Deljenje (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Modul (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Stepenovanje (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Operatori poređenja",
+ "abusefilter-edit-builder-op-comparison-equal": "Jednako (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Nejednako (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "Manje (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Veće (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Manje ili jednako (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Veće ili jednako (>=)",
+ "abusefilter-edit-builder-group-op-bool": "Bulove operacije",
+ "abusefilter-edit-builder-op-bool-not": "Ne (!)",
+ "abusefilter-edit-builder-op-bool-and": "I (&)",
+ "abusefilter-edit-builder-op-bool-or": "Ili (|)",
+ "abusefilter-edit-builder-op-bool-xor": "EKSILI (^)",
+ "abusefilter-edit-builder-group-misc": "Razno",
+ "abusefilter-edit-builder-misc-in": "sadržano u niski (in)",
+ "abusefilter-edit-builder-misc-like": "Odgovara obrazcu (like)",
+ "abusefilter-edit-builder-misc-rlike": "Odgovara regularnom izrazu (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "Odgovara regularnom izrazu, bez razlikovanja malih i velikih slova (irlike)",
+ "abusefilter-edit-builder-misc-contains": "Levi string sadrži desni string (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "String literal (\"\")",
+ "abusefilter-edit-builder-misc-tern": "Ternarni operator (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "Uslov (if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "Funkcije",
+ "abusefilter-edit-builder-funcs-length": "Dužina stringa (length)",
+ "abusefilter-edit-builder-funcs-lcase": "Prebacivanje u mala slova (lcase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "Normaolzuj zbunjujuće karaktere (ccnorm)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "Obriši duple karaktere (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "Specijalni karakteri / ukupnom broju karaktera (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "Normalizuj (norm)",
+ "abusefilter-edit-builder-funcs-count": "Koliko puta se string X javlja u stringu Y (count)",
+ "abusefilter-edit-builder-funcs-rcount": "Koliko puta se regularni izraz X javlja u stringu Y (rcount)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "Izbriši praznine (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "Izbriši specijalne karaktere (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "Da li je IP u opsegu? (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "Pretraži string na više podstringova (contains_any)",
+ "abusefilter-edit-builder-funcs-substr": "Podstring (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "Mesto podstringa u stringu (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "Zameni podstring nekim stringom (str_replace)",
+ "abusefilter-edit-builder-funcs-rescape": "Izbegni bukvalne niske u regeksu (rescape)",
+ "abusefilter-edit-builder-funcs-set_var": "Postavi promenljivu (set_var)",
+ "abusefilter-edit-builder-group-vars": "Promenljive",
+ "abusefilter-edit-builder-vars-accountname": "Naziv naloga (u trenutku otvaranja)",
+ "abusefilter-edit-builder-vars-action": "Radnja",
+ "abusefilter-edit-builder-vars-addedlines": "Linija dodatih pri izmeni",
+ "abusefilter-edit-builder-vars-delta": "Promena veličine pri izmeni",
+ "abusefilter-edit-builder-vars-newsize": "Veličina nove strane",
+ "abusefilter-edit-builder-vars-oldsize": "Veličina stare strane",
+ "abusefilter-edit-builder-vars-removedlines": "Linije uklonjene tokom izmene",
+ "abusefilter-edit-builder-vars-summary": "Opis/razlog izmene",
+ "abusefilter-edit-builder-vars-article-id": "ID stranice",
+ "abusefilter-edit-builder-vars-article-ns": "Imenski prostor stranice",
+ "abusefilter-edit-builder-vars-article-text": "Naslov stranice (bez imenskog prostora)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Pun naslov stranice",
+ "abusefilter-edit-builder-vars-movedfrom-id": "ID izvorne stranice premeštanja",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "Imenski prostor premeštene stranice",
+ "abusefilter-edit-builder-vars-movedfrom-text": "Naslov stranice koju premeštate",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "Pun naslov stranice koju premeštate",
+ "abusefilter-edit-builder-vars-movedto-id": "ID odredišne stranice premeštanja",
+ "abusefilter-edit-builder-vars-movedto-ns": "Imenski prostor odredišne stranice",
+ "abusefilter-edit-builder-vars-movedto-text": "Naslov odredišne stranice",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "Pun naslov odredišne stranice",
+ "abusefilter-edit-builder-vars-user-editcount": "Korisički brojač izmena",
+ "abusefilter-edit-builder-vars-user-age": "Starost korisničkog naloga",
+ "abusefilter-edit-builder-vars-user-name": "Naziv korisničkog naloga",
+ "abusefilter-edit-builder-vars-user-groups": "Grupe (uključujući posredne) u kojima je korisnik",
+ "abusefilter-edit-builder-vars-user-rights": "Prava koja korisnik ima",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "Vreme kada je imejl adresa potvrđena",
+ "abusefilter-edit-builder-vars-recent-contributors": "Poslednjih deset korisnika, koji su doprineli strani",
+ "abusefilter-edit-builder-vars-all-links": "Sve spoljašnje veze u novom tekstu",
+ "abusefilter-edit-builder-vars-added-links": "Sve spoljašnje veze dodate u izmeni",
+ "abusefilter-edit-builder-vars-removed-links": "Sve spoljašnje veze uklonjene u izmeni",
+ "abusefilter-edit-builder-vars-old-text": "Vikitekst stare strane, pre izmene",
+ "abusefilter-edit-builder-vars-new-text": "Novi vikitekst posle izmene",
+ "abusefilter-edit-builder-vars-new-text-stripped": "Tekst nove stranice, bez ikakvih obeležavanja",
+ "abusefilter-edit-builder-vars-new-html": "Raščlanjeni HTML izvor nove izmene",
+ "abusefilter-edit-builder-vars-restrictions-edit": "Stepen zaštite stranice (uređivanje)",
+ "abusefilter-edit-builder-vars-restrictions-move": "Stepen zaštite stranice (premeštanje)",
+ "abusefilter-edit-builder-vars-old-text-stripped": "Tekst stare stranice, bez ikakvih obeležavanja",
+ "abusefilter-edit-builder-vars-old-links": "Veze na stranici, pre uređivanja",
+ "abusefilter-edit-builder-vars-old-html": "Vikitekst stare stranice, raščlanjen u HTML",
+ "abusefilter-edit-builder-vars-minor-edit": "Da li je izmena bila označena kao mala",
+ "abusefilter-edit-builder-vars-file-sha1": "Disperzija SHA1 sadržaja datoteke",
+ "abusefilter-filter-log": "Skorašnje izmene filtera",
+ "abusefilter-history": "Istorija izmena filtera #$1",
+ "abusefilter-history-foruser": "Izmene od $1",
+ "abusefilter-history-hidden": "Sakriveno",
+ "abusefilter-history-enabled": "Omogućeno",
+ "abusefilter-history-global": "Globalno",
+ "abusefilter-history-timestamp": "Vreme",
+ "abusefilter-history-user": "Korisnik",
+ "abusefilter-history-public": "Javni opis filtera",
+ "abusefilter-history-flags": "Zastavice",
+ "abusefilter-history-filter": "Pravilo filtera",
+ "abusefilter-history-comments": "Komentari",
+ "abusefilter-history-actions": "Radnje",
+ "abusefilter-history-backedit": "Povratak na editor filtera",
+ "abusefilter-history-deleted": "Obrisano",
+ "abusefilter-history-filterid": "Filter",
+ "abusefilter-history-select-legend": "Profini pretragu",
+ "abusefilter-history-select-user": "Korisnik:",
+ "abusefilter-history-select-submit": "Profini",
+ "abusefilter-history-diff": "Izmene",
+ "abusefilter-history-error-hidden": "Filter koga ste tražili je sakriven, i Vi ne možete videti njegovu istoriju.",
+ "abusefilter-exception-unexpectedatend": "Neočekivano \"$2\" na karakteru $1.",
+ "abusefilter-exception-expectednotfound": "Očekuje se $2 na karakteru $1, nije pronađen (umesto toga nađeno $3 $4).",
+ "abusefilter-exception-unrecognisedkeyword": "Nepoznata ključna reč $2 na karakteru $1.",
+ "abusefilter-exception-unexpectedtoken": "Neočekivani žeton „$3“ (od vrste $2) kod znaka $1.",
+ "abusefilter-exception-unclosedstring": "Nezatvoren string počinje na karakteru $1.",
+ "abusefilter-exception-invalidoperator": "Neispravan operator \"$2\" na karakteru $1.",
+ "abusefilter-exception-unrecognisedtoken": "Neprepoznati žeton „$2“ kod znaka $1.",
+ "abusefilter-exception-noparams": "Nema navedenih parametara za funkciju „$2“ kod znaka $1.",
+ "abusefilter-exception-dividebyzero": "Nedozvoljen pokušaj deljenja $2 nulom, na karakteru $1.",
+ "abusefilter-exception-unrecognisedvar": "Nepoznata promenljiva $2 na karakteru $1",
+ "abusefilter-exception-notenoughargs": "Nedovoljno argumenata za funkciju $2 pozvanu na karakteru $1.\n{{PLURAL:$3|Očekivalo se argumenata:}} $3, a dobijeno: $4",
+ "abusefilter-exception-regexfailure": "Greška u regularnom izrzu \"$3\" na karakteru $1: \"$2\"",
+ "abusefilter-exception-overridebuiltin": "Nedozvoljeno menjanje promenljive „$2“ na karakteru $1.",
+ "abusefilter-exception-outofbounds": "Zahtevanje nepostojećeg elementa spiska $2 (veličina spiska = $3) na karakteru $1.",
+ "abusefilter-exception-notlist": "Zahtevanje člana niza od nečega što nije niz, na karakteru $1.",
+ "abusefilter-action-tag": "označeno",
+ "abusefilter-action-throttle": "uspori",
+ "abusefilter-action-warn": "upozori",
+ "abusefilter-action-blockautopromote": "blokiraj samounapređivanje",
+ "abusefilter-action-block": "blokiraj",
+ "abusefilter-action-degroup": "ukloni iz grupa",
+ "abusefilter-action-rangeblock": "blokiranje raspona",
+ "abusefilter-action-disallow": "zabrani",
+ "abusefilter-revert-title": "Vrati sve izmene po filteru $1",
+ "abusefilter-revert-intro": "Ovo vam omogućava da vratite sve izmene koje je načinio filter $1.\nBudite pažljivi pri korišćenju ove alatke.",
+ "abusefilter-revert-preview-item": "$1: $2 je napravio $3 na $4.\nRadnje za vraćanje: $5 ($6)",
+ "abusefilter-revert-search-legend": "Izaberi radnje filtera zloupotrebe koje trebaju biti vraćene",
+ "abusefilter-revert-periodstart": "Početak perioda:",
+ "abusefilter-revert-periodend": "Kraj perioda:",
+ "abusefilter-revert-search": "Izaberi akcije",
+ "abusefilter-revert-filter": "Filter:",
+ "abusefilter-revert-preview-intro": "Ispod su prikazane radnje koje će biti vraćene.\nPažljivo ih proverite i kliknite na opciju „potvrdi“ da biste potvrdili svoj izbor.",
+ "abusefilter-revert-confirm": "Potvrdi",
+ "abusefilter-revert-success": "Vratili ste sve radnje koje je preuzeo filter za uređivanje zbog [[Special:AbuseFilter/$1|filtera $2]].",
+ "abusefilter-revert-reason": "Automatsko vraćanje svih radnji koje je načinio filter $1.\nRazlog: $2",
+ "abusefilter-revert-reasonfield": "Razlog:",
+ "abusefilter-test": "Testiraj filter na prethodne izmene",
+ "abusefilter-test-intro": "Ova stranica vam omogućava da proverite filter iz donje kutijice na {{PLURAL:$1|poslednju $1 izmenu|poslednje $1 izmene|poslednjih $1 izmena}}.\nDa biste učitali postojeći filter, unesite njegov ID u kutijicu ispod polja za uređivanje i klinkite na dugme „Učitaj“.",
+ "abusefilter-test-legend": "Testiranje filtera",
+ "abusefilter-test-load-filter": "Učitaj ID filtera:",
+ "abusefilter-test-submit": "Test",
+ "abusefilter-test-load": "Učitaj",
+ "abusefilter-test-user": "Izmene koje je napravio korisnik:",
+ "abusefilter-test-period-start": "Izmene posle:",
+ "abusefilter-test-period-end": "Izmene pre:",
+ "abusefilter-test-page": "Izmene nad stranom:",
+ "abusefilter-test-shownegative": "Pokaži izmene koje ne odgovaraju filteru",
+ "abusefilter-test-syntaxerr": "Filter koji ste uneli sadrži sintaksne greške.\nDa biste dobili detaljno objašnjenje kliknite na dugme „{{int:abusefilter-edit-check}}“.",
+ "abusefilter-changeslist-examine": "pregledaj",
+ "abusefilter-examine": "Ispitaj pojedinačne izmene",
+ "abusefilter-examine-intro": "Ova stranica omogućava ispitivanje promenljivih koje je generisao filter zloupotreba za određenu izmenu i isprobavanje na filterima.",
+ "abusefilter-examine-legend": "Izaberi izmene",
+ "abusefilter-examine-diff": "URL difa:",
+ "abusefilter-examine-user": "Korisnik:",
+ "abusefilter-examine-title": "Naslov strane:",
+ "abusefilter-examine-submit": "Pretraga",
+ "abusefilter-examine-vars": "Generisane promenljive za ovu izmenu",
+ "abusefilter-examine-test": "Testiraj ovu izmenu na filter",
+ "abusefilter-examine-test-button": "Testiraj filter",
+ "abusefilter-examine-match": "Filter je odgovarao ovoj izmeni.",
+ "abusefilter-examine-nomatch": "Filter nije odgovarao ovoj izmeni.",
+ "abusefilter-examine-syntaxerror": "Filter ima neispravnu sintaksu",
+ "abusefilter-examine-notfound": "Izmena koju ste zatražili nije nađena.",
+ "abusefilter-examine-incompatible": "Izmena koju ste tražili nije podržana od filtera protiv zloupotrebe",
+ "abusefilter-examine-noresults": "Nisu nađeni pezultati za parametre pretrage koje ste zadali.",
+ "abusefilter-topnav": "'''Navigacija po filteru protiv zloupotrebe'''",
+ "abusefilter-topnav-home": "početna",
+ "abusefilter-topnav-test": "grupno isprobavanje",
+ "abusefilter-topnav-examine": "ispitaj prošle izmene",
+ "abusefilter-topnav-log": "istorija zloupotrebe",
+ "abusefilter-topnav-tools": "alati za debagovanje",
+ "abusefilter-topnav-import": "uvezi filter",
+ "abusefilter-log-name": "Dnevnik filtera protiv zloupotrebe",
+ "abusefilter-log-header": "Ovde je prikazan sažetak izmena načinjenih nad filterima.\nZa više informacija pogledajte [[Special:AbuseFilter/history|pregled]] skorašnjih izmena.",
+ "abusefilter-log-noresults": "Nema rezultata",
+ "abusefilter-diff-title": "Razlike između verzija",
+ "abusefilter-diff-item": "Stavka",
+ "abusefilter-diff-version": "Verzija od $1 {{GENDER:$3|od}} $2",
+ "abusefilter-diff-info": "Osnovne infomacije",
+ "abusefilter-diff-pattern": "Uslovi filtera",
+ "abusefilter-diff-invalid": "Ne mogu da pribavim zahtevane verzije",
+ "abusefilter-diff-backhistory": "Povratak na istoriju filtera",
+ "abusefilter-diff-prev": "Starije izmene",
+ "abusefilter-diff-next": "Novije izmene",
+ "abusefilter-import-intro": "Ovo korisničko okruženje služi za uvoz filtera sa drugih vikija.\nNa izvornom vikiju, kliknite na „{{int:abusefilter-edit-export}}“ pod „{{int:abusefilter-edit-tools}}“ u uređivačkom okviru.\nKopirajte sadržaj iz polja koje se pojavi i nalepite ga u ovo polje, pa kliknite na „{{int:abusefilter-import-submit}}“.",
+ "abusefilter-import-submit": "Uvezi podatke",
+ "abusefilter-group-default": "Podrazumevano",
+ "abusefilter-http-error": "Došlo je do HTTP greške: $1."
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/stq.json b/www/wiki/extensions/AbuseFilter/i18n/stq.json
new file mode 100644
index 00000000..69fc08d7
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/stq.json
@@ -0,0 +1,203 @@
+{
+ "@metadata": {
+ "authors": [
+ "Pyt",
+ "Matma Rex"
+ ]
+ },
+ "abusefilter-desc": "Woant automatiske Heuristike ap Annerengen an.",
+ "abusefilter": "Misbruukssieuwe-Ienstaalengen",
+ "abuselog": "Misbruuks-Logbouk",
+ "abusefilter-warning": "'''Woarskauenge''': Disse Aktion wuud automatisk as skoadelk ärkoand.\nUunkonstruktive Biedraage wäide maast gjucht gau wächhoald. In wierhoalde un besunners läipe Falle wäd dien Account blw. dien IP-Adresse speerd.\nWan du toankst, dät dien Annerenge konstruktiv waas, koast du ju oawers mäd n näien Klik ap „{{int:savearticle}}“ bestäätigje.\nKuute Beskrieuwenge fon ju nit beoachtede Räägel: $1",
+ "abusefilter-disallowed": "Disse Aktion wuud automatisk as skoadelk ärkoand un deeruum nit truchfierd.\nWan du toankst, dät dien Biedraach konstruktiv waas, weende die dan an n Administrator un skilderje him, wät du fersoacht hääst bietoudreegen.\n\nKuute Beskrieuwenge fon ju nit beoachtede Räägel: $1",
+ "abusefilter-blocked-display": "Disse Aktion wuud automatisk as skoadelk ärkoand un nit uutfierd.\nFääre wuud dien Benutseraccount un aal touheerige IP-Adressen speerd.\nWan du toankst, dät et sik hierbie uum n Failer honnelt, weende die dan an n Administrator.\n\nKuute Beskrieuwenge fon ju nit beoachtede Räägel: $1",
+ "abusefilter-degrouped": "Disse Aktion wuud as skoadelk ärkoand un nit uutfierd.\nDeer et muugelk is, dät dien Benutseraccount kompromittierd wuude, wuuden die aal gewäärde Gjuchte nuumen.\nWan du toankst, dät et sik hierbie uum n Failer honnelt, dan weende die an n Bürokroat un skillerje him, wät du juust däin hääst, deermäd dien Gjuchte wierhäärstoald wäide konnen.\n\nKuute Beskrieuwenge fon ju nit beoachtede Räägel: $1",
+ "abusefilter-autopromote-blocked": "Disse Aktion wuud as skoadelk ärkoand un nit uutfierd.\nBuppedät wuuden die uut Sicherhaid eenige automatisk ferroate Gjuchte kuuttiedich nuumen.\n\nKuute Beskrieuwenge fon ju nit beoachtede Räägel: $1",
+ "abusefilter-blocker": "Misbruukssieuwe",
+ "abusefilter-blockreason": "Du wuudst fon ju Misbruukssieuwe automatisk speerd. Beskrieuwenge fon ju Riege: $1",
+ "abusefilter-degroupreason": "Dien Begjuchtigengen wuuden fon ju Misbruukssieuwe automatisk beskanked. Beskrieuwenge fon ju Riege: $1",
+ "abusefilter-accountreserved": "Dissen Benutsernoome is foar ju Misbruukssieuwe reservierd.",
+ "right-abusefilter-modify": "Misbruukssieuwen beoarbaidje",
+ "right-abusefilter-view": "Misbruukssieuwen bekiekje",
+ "right-abusefilter-log": "Misbruuks-Logbouk ienkiekje",
+ "right-abusefilter-log-detail": "Detaillierd Misbruuks-Logbouk ienkiekje",
+ "right-abusefilter-private": "Privoate Doaten in dät Misbruuks-Logbouk ienkiekje",
+ "right-abusefilter-modify-restricted": "Misbruuk-Sieuwe mäd ferbeedene Aktione beoarbaidje",
+ "right-abusefilter-view-private": "Misbruuksieuwen ounkiekje, do der as privoat markierd wuuden",
+ "right-abusefilter-hide-log": "Iendroage uut dät Misbruuksieuwe-Logbouk uutbländje",
+ "right-abusefilter-hidden-log": "Ferstatte Misbruuksieuwe-Logbouk-Iendroage ienkiekje",
+ "action-abusefilter-modify": "Misbruukssieuwen beoarbaidje",
+ "action-abusefilter-view": "Misbruukssieuwen bekiekje",
+ "action-abusefilter-log": "dät Misbruuksieuwe-Logbouk ienkiekje",
+ "action-abusefilter-log-detail": "Detaillierd Misbruuksieuwe-Logbouk ienkiekje",
+ "action-abusefilter-private": "Privoate Doaten in dät Misbruuksieuwe-Logbouk ienkiekje",
+ "action-abusefilter-modify-restricted": "Misbruuksieuwe mäd ferbeedene Aktione beoarbaidje",
+ "action-abusefilter-revert": "aal Annerengen truch ne bestimde Misbruuksieuwe touräächtraale",
+ "action-abusefilter-view-private": "Misbruuksieuwen ounkiekje, do der as privoat markierd wuuden",
+ "abusefilter-log": "Misbruukssieuwe-Logbouk",
+ "abusefilter-log-search": "Misbruuks-Logbouk truchsäike",
+ "abusefilter-log-search-user": "Benutser:",
+ "abusefilter-log-search-filter": "Sieuwe-ID:",
+ "abusefilter-log-search-title": "Tittel:",
+ "abusefilter-log-search-submit": "Säike (uk ap Düütsk5)",
+ "abusefilter-log-entry": "$1: $2 löösde ne Misbruuks-Sieuwe uut, truch dät hie \"$3\" ap $4 moakede.\nAktion: $5;\nSieuwe-Beskrieuwenge: $6",
+ "abusefilter-log-detailedentry-meta": "$1: $2 häd ju $3 uutlöösd, wät n $4 ap $5 feruurseeked.\nÄrgriepene Mäitenoamen: $6;\nSieuwebeskrieuwenge: $7 ($8)",
+ "abusefilter-log-detailedentry-local": "Sieuwe $1",
+ "abusefilter-log-detailslink": "Eenpeldhaide",
+ "abusefilter-log-details-legend": "Eenpeldhaide foar dän Logbouk-Iendraach $1",
+ "abusefilter-log-details-var": "Variable",
+ "abusefilter-log-details-val": "Wäid",
+ "abusefilter-log-details-vars": "Aktionsparametere",
+ "abusefilter-log-details-private": "Privoate Doaten",
+ "abusefilter-log-details-ip": "IP-Adresse fon dän Feruurseeker",
+ "abusefilter-log-noactions": "neen",
+ "abusefilter-log-hide-reason": "Gruund:",
+ "abusefilter-log-hide-forbidden": "Du hääst nit ju Begjuchtigenge, die Iendraage fon dät Misbruuksieuwe-Logbouk tou fersteeten.",
+ "abusefilter-logentry-suppress": "häd „[[$1]]“ ferstat",
+ "abusefilter-management": "Misbruukssieuwe-Ferwaltenge",
+ "abusefilter-list": "Aal Sieuwen",
+ "abusefilter-list-id": "Sieuwe-ID",
+ "abusefilter-list-status": "Stoatus",
+ "abusefilter-list-public": "Eepentelke Beskrieuwenge",
+ "abusefilter-list-consequences": "Foulgen",
+ "abusefilter-list-visibility": "Sichtboarkaid",
+ "abusefilter-list-hitcount": "Träffertäller",
+ "abusefilter-list-edit": "Beoarbaidje",
+ "abusefilter-list-details": "Eenpeldhaide",
+ "abusefilter-list-limit": "Antaal pro Siede:",
+ "abusefilter-list-lastmodified": "Toulääst annerd",
+ "abusefilter-hidden": "Privoat",
+ "abusefilter-unhidden": "Eepentelk",
+ "abusefilter-enabled": "Aktivierd",
+ "abusefilter-deleted": "Läsked",
+ "abusefilter-disabled": "Deaktivierd",
+ "abusefilter-hitcount": "{{PLURAL:$1|1 Träffer|$1 Träffere}}",
+ "abusefilter-new": "Näie Sieuwe moakje",
+ "abusefilter-list-options": "Optione",
+ "abusefilter-list-options-deleted": "Läskede Sieuwen:",
+ "abusefilter-list-options-deleted-only": "Bloot läskede Sieuwen bekiekje",
+ "abusefilter-list-options-deleted-hide": "Läskede Sieuwen fersteete",
+ "abusefilter-list-options-deleted-show": "Läskede Sieuwen ienbeluuke",
+ "abusefilter-list-options-disabled": "Deaktivierde Sieuwen",
+ "abusefilter-list-options-hidedisabled": "Deaktivierde Sieuwen fersteete",
+ "abusefilter-list-options-submit": "Spiekerje",
+ "abusefilter-tools-text": "Hier sunt wäkke Reewen, do der hälpe konnen bie dät Formulierjen un bie ju Failersäike fon Misbruukssieuwen.",
+ "abusefilter-tools-expr": "Expression-Tester",
+ "abusefilter-tools-submitexpr": "Wröigje",
+ "abusefilter-tools-reautoconfirm": "Bestäätigeden Benutser-Stoatus wier moakje",
+ "abusefilter-tools-reautoconfirm-user": "Benutser:",
+ "abusefilter-tools-reautoconfirm-submit": "Wier toun bestäätigeden Benutser moakje",
+ "abusefilter-reautoconfirm-none": "{{GENDER:$1|Dissen Bruuker|Disse Bruukerske}} is die \"Automatisk bestäätigede Benutser\"-Stoatus nit äntleeken wuuden.",
+ "abusefilter-reautoconfirm-notallowed": "Du bäst nit begjuchtiged, Benutsere wier tou bestäätigde Benutsere tou moakjen.",
+ "abusefilter-status": "Fon {{PLURAL:$1|ju lääste Aktion|do lääste $1 Aktione}} {{PLURAL:$2|häd een|hääbe $2}} ($3 %) dän Gränswäid fon $4 beloanged. $5 ($6 %) {{PLURAL:$5|wuud|wuude}} fon een fon do apstuuns aktivierde Sieuwe wierkoand.",
+ "abusefilter-edit-subtitle": "Beoarbaidje Sieuwe $1",
+ "abusefilter-edit-oldwarning": "<strong>Du beoarbaidest nit ju aktuelle, man ne allere Version fon disse Sieuwe. Ju Statistik jält bloot foar ju lääste Version fon ju Sieuwe. Wan du spiekerst, wäd ju oolde as aktuelle Version näi spiekerd. </strong> &bull; [[Special:AbuseFilter/history/$2|Tourääch tou ju Versionsgeskichte fon ju Sieuwe]]",
+ "abusefilter-edit-status-label": "Statistike:",
+ "abusefilter-edit-status": "Fon {{PLURAL:$1|ju|do}} lääste {{PLURAL:$1|Aktion|$1 Aktione}} {{PLURAL:$2|wuud|wuuden}} $2 ($3 %) fon disse Sieuwe wierkoand.",
+ "abusefilter-edit-status-profile": "Fon {{PLURAL:$1|ju|do}} lääste {{PLURAL:$1|Aktion|$1 Aktione}} {{PLURAL:$2|wuud|wuuden}} $2 ($3 %) fon disse Sieuwe wierkoand.\nIn n Truchsnit bedruuch hiere Beoarbaidengstied $4 ms un do benöödigeden $5 {{PLURAL:$5|Bedingenge|Bedingengen}} fon ju ferlööwede Hoochsttaal.",
+ "abusefilter-edit-new": "Näie Sieuwe",
+ "abusefilter-edit-save": "Sieuwe spiekerje",
+ "abusefilter-edit-id": "Sieuwe-ID:",
+ "abusefilter-edit-description": "Beskrieuwenge:\n:''(eepentelk sichtboar)''",
+ "abusefilter-edit-flags": "Flaagen",
+ "abusefilter-edit-enabled": "Disse Sieuwe aktivierje",
+ "abusefilter-edit-deleted": "As läsked markierje",
+ "abusefilter-edit-hidden": "Eenpeldhaide fon disse Sieuwe nit eepentelk anwiese",
+ "abusefilter-edit-rules": "Konditione:",
+ "abusefilter-edit-notes": "Notize:\n:''(privoat)",
+ "abusefilter-edit-lastmod": "Lääste Beoarbaidenge fon ju Sieuwe:",
+ "abusefilter-edit-lastmod-text": "$1 fon $2",
+ "abusefilter-edit-hitcount": "Träffere fon ju Sieuwe:",
+ "abusefilter-edit-consequences": "Bie Träffere uuttoufierende Aktione",
+ "abusefilter-edit-action-warn": "Aktione ätter Woarskauenge fon dän Benutser uutfiere",
+ "abusefilter-edit-action-disallow": "Unnerbint ju fon dän Benutser foarsäine Aktion",
+ "abusefilter-edit-action-blockautopromote": "„Bestäätiger Benutser“-Stoatus äntluuke",
+ "abusefilter-edit-action-degroup": "Benutser uut aal Gruppen mäd Sunnergjuchte wächhoalje",
+ "abusefilter-edit-action-block": "Benutser/IP-Adrässe speere",
+ "abusefilter-edit-action-throttle": "Aktion bloot uutlööse, wan die Benutser n bestimd Limit beloanged häd",
+ "abusefilter-edit-action-rangeblock": "/16-Range speere, uut dän die Benutser stamt.",
+ "abusefilter-edit-throttle-count": "Antaal toulätte Aktione:",
+ "abusefilter-edit-throttle-period": "Tiedruum:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|Sekunde|Sekunden}}",
+ "abusefilter-edit-throttle-groups": "Räägele foar ju Gruppendröisel:\n:''(een pro Riege, ferbiende mäd Kommata)''",
+ "abusefilter-edit-warn-message": "Systemättergjucht foar ju Woarskauenge:",
+ "abusefilter-edit-denied": "Du koast do Details fon disse Sieuwe nit ienkiekje, deeruum dät do ferstopped sunt",
+ "abusefilter-edit-main": "Sieuweparametere",
+ "abusefilter-edit-done-subtitle": "Sieuwe beoarbaided",
+ "abusefilter-edit-done": "Dien Annerengen an ju Sieuwe $1 wuuden mäd Ärfoulch spiekerd.",
+ "abusefilter-edit-badsyntax": "Ju fon die spezifizierde Sieuwe änthaalt n Syntaxfailer. Ju Parseruutgoawe lutte: <pre>$1</pre>",
+ "abusefilter-edit-viewhistory": "Versionsgeskichte fon ju Sieuwe bekiekje",
+ "abusefilter-edit-history": "Geskichte:",
+ "abusefilter-edit-check": "Syntaxwröich",
+ "abusefilter-edit-builder-select": "Wääl ne Option uut, uum ju an n Cursor ientouföigjen",
+ "abusefilter-edit-builder-group-op-arithmetic": "Arithmetiske Operatore",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Addition (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Subtraktion (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Multiplikation (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Division (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Modulo (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Potenz (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Ferglieksoperatore",
+ "abusefilter-edit-builder-op-comparison-equal": "Is gliek (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Is nit gliek (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "Litjer as (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Gratter as (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Litjer of gliek (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Gratter of gliek (>=)",
+ "abusefilter-edit-builder-group-op-bool": "Booleske Operatore",
+ "abusefilter-edit-builder-op-bool-not": "Nit (!)",
+ "abusefilter-edit-builder-op-bool-and": "Un (&)",
+ "abusefilter-edit-builder-op-bool-or": "Of (|)",
+ "abusefilter-edit-builder-op-bool-xor": "XOR (^)",
+ "abusefilter-edit-builder-group-misc": "Ferskeedenhaide",
+ "abusefilter-edit-builder-misc-in": "äntheelden in Teekenfoulge (in)",
+ "abusefilter-edit-builder-misc-like": "Paaset tou Muster (like)",
+ "abusefilter-edit-builder-misc-stringlit": "Woudwoudelken String (\"\")",
+ "abusefilter-edit-builder-group-funcs": "Funktione",
+ "abusefilter-edit-builder-funcs-length": "Laangte fon ju Teekenfoulge (length)",
+ "abusefilter-edit-builder-funcs-lcase": "In Littikbouksteeuwen konvertierje (lcase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "Fertuusjene Teekene normalisierje (ccnorm)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "Dubbelde Teekene wächhoalje (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "Spezialteekene / Teekene aaltouhoope (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "Normalisierje (norm)",
+ "abusefilter-edit-builder-funcs-count": "Antaal foan do Foarkuumnisse fon ju Teekenfoulge X in ju Teekenfoulge Y (count)",
+ "abusefilter-edit-builder-group-vars": "Variablen",
+ "abusefilter-edit-builder-vars-accountname": "Benutsernoome (on account creation)",
+ "abusefilter-edit-builder-vars-action": "Aktion",
+ "abusefilter-edit-builder-vars-addedlines": "Riegen bie ju Beoarbaidenge bietouföiged",
+ "abusefilter-edit-builder-vars-delta": "Grööte bie ju Beoarbaidenge annerd",
+ "abusefilter-edit-builder-vars-diff": "Fereenigden Versionsunnerskeed fon ju Beoarbaidenge",
+ "abusefilter-edit-builder-vars-newsize": "Näie Siedengrööte",
+ "abusefilter-edit-builder-vars-oldsize": "Oolde Siedengrööte",
+ "abusefilter-edit-builder-vars-removedlines": "Riegen bie ju Beoarbaidenge wächhoald",
+ "abusefilter-edit-builder-vars-summary": "Touhoopefoatenge",
+ "abusefilter-edit-builder-vars-article-id": "Sieden-ID",
+ "abusefilter-edit-builder-vars-article-ns": "Noomensruumte fon ju Siede",
+ "abusefilter-edit-builder-vars-article-text": "Tittel fon ju Siede (sunner Noomensruumte)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Fullen Siedennoome",
+ "abusefilter-edit-builder-vars-movedfrom-id": "Artikkel-ID fon ju Wällesiede",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "Noomensruum fon ju Wällesiede",
+ "abusefilter-edit-builder-vars-movedfrom-text": "Tittel fon ju Wällesiede",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "Fulboodigen Tittel fon ju Wällesiede",
+ "abusefilter-edit-builder-vars-movedto-id": "Artikkel-ID fon ju Sielsiede",
+ "abusefilter-edit-builder-vars-movedto-ns": "Noomensruum fon ju Sielsiede",
+ "abusefilter-edit-builder-vars-movedto-text": "Tittel fon ju Sielsiede",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "Fulboodigen Tittel fon ju Sielsiede",
+ "abusefilter-edit-builder-vars-user-editcount": "Biedraachställenge fon dän Benutser",
+ "abusefilter-edit-builder-vars-user-age": "Oaler fon Benutserkonto",
+ "abusefilter-edit-builder-vars-user-name": "Noome fon dät Benutserkonto",
+ "abusefilter-edit-builder-vars-user-groups": "Gruppen (uk implizite), in do die Benutser Meeglid is.",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "Tiedpunkt, an dän ju E-Mail-Adresse bestäätiged wuude",
+ "abusefilter-history": "Annerje Geskichte foar Misbruukssieuwe $1",
+ "abusefilter-history-hidden": "ferstopped",
+ "abusefilter-history-enabled": "aktivierd",
+ "abusefilter-history-timestamp": "Tied",
+ "abusefilter-history-user": "Benutser",
+ "abusefilter-history-public": "Eepentelke Sieuwe-Beskrieuwenge",
+ "abusefilter-history-flags": "Flags",
+ "abusefilter-history-filter": "Sieuweräägel",
+ "abusefilter-history-comments": "Kommentoare",
+ "abusefilter-history-actions": "Aktione",
+ "abusefilter-history-backedit": "Tourääch tou Sieuwe-Editor",
+ "abusefilter-history-deleted": "Läsked"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/su.json b/www/wiki/extensions/AbuseFilter/i18n/su.json
new file mode 100644
index 00000000..eb55fcc9
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/su.json
@@ -0,0 +1,48 @@
+{
+ "@metadata": {
+ "authors": [
+ "Kandar",
+ "Uchup19"
+ ]
+ },
+ "abusefilter-log-search-user": "Pamaké:",
+ "abusefilter-log-search-title": "Judul:",
+ "abusefilter-log-details-private": "Data pribadi",
+ "abusefilter-log-details-ip": "Alamat IP asal",
+ "abusefilter-log-noactions": "kosong",
+ "abusefilter-log-hidden": "(éntri disumputkeun)",
+ "abusefilter-log-hide-legend": "Sumputkeun éntri log",
+ "abusefilter-log-hide-id": "ID éntri log:",
+ "abusefilter-log-hide-reason": "Alesan:",
+ "abusefilter-list-options": "Pilihan",
+ "abusefilter-tools-reautoconfirm-user": "Pamaké:",
+ "abusefilter-edit-viewhistory": "Témbongkeun jujutan ieu saringan",
+ "abusefilter-edit-history": "Jujutan:",
+ "abusefilter-edit-builder-group-op-arithmetic": "Operator aritmétik",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Tambah (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Kurang (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Kali (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Bagi (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Persén (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Pangkat (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Operator babandingan",
+ "abusefilter-edit-builder-op-comparison-equal": "Sarua jeung (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Teu sarua jeung (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "Kurang ti (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Leuwih ti (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Kurang ti atawa sarua jeung (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Leuwih ti atawa sarua jeung (>=)",
+ "abusefilter-edit-builder-op-bool-and": "Jeung (&)",
+ "abusefilter-edit-builder-op-bool-or": "Atawa (|)",
+ "abusefilter-edit-builder-misc-in": "aya dina string (in)",
+ "abusefilter-edit-builder-misc-like": "Luyu jeung pola (like)",
+ "abusefilter-edit-builder-misc-rlike": "Luyu jeung regex (rlike)",
+ "abusefilter-edit-builder-misc-contains": "String kénca ngandung string katuhu (contains)",
+ "abusefilter-edit-builder-misc-tern": "Operator tersiér (X ? Y : Z)",
+ "abusefilter-edit-builder-group-funcs": "Fungsi",
+ "abusefilter-edit-builder-funcs-length": "Panjang string (length)",
+ "abusefilter-edit-builder-group-vars": "Variabel",
+ "abusefilter-edit-builder-vars-accountname": "Sandiasma (dina nyieun akun)",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "Ngaranspasi tina pangalihan kaca sumber",
+ "abusefilter-action-degroup": "Kaluarkeun tina gorombolan"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/sv.json b/www/wiki/extensions/AbuseFilter/i18n/sv.json
new file mode 100644
index 00000000..47157bcc
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/sv.json
@@ -0,0 +1,554 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ainali",
+ "Bengt B",
+ "Boivie",
+ "Cybjit",
+ "Fluff",
+ "Gabbe.g",
+ "GameOn",
+ "Lejonel",
+ "Leo Johannes",
+ "Lokal Profil",
+ "M.M.S.",
+ "MagnusA",
+ "McDutchie",
+ "Najami",
+ "Nghtwlkr",
+ "Njaelkies Lea",
+ "Petter Strandmark",
+ "Poxnar",
+ "Rotsee",
+ "Sertion",
+ "Skalman",
+ "Thurs",
+ "Tobulos1",
+ "WikiPhoenix",
+ "Jopparn",
+ "Marfuas",
+ "Josve05a",
+ "Matma Rex",
+ "Matěj Suchánek",
+ "Bengtsson96"
+ ]
+ },
+ "abusefilter-desc": "Tillämpar automatiska filter på redigeringar",
+ "abusefilter": "Konfiguration av missbruksfilter",
+ "abuselog": "Missbrukslogg",
+ "abusefilter-intro": "Välkommen till gränssnittet för hantering av missbruksfiltret.\nMissbruksfiltret är en automatisk mjukvarumekanism som utför automatisk kontroll av alla handlingar.\nDetta gränssnitt visar en lista över definierade filter och gör det möjligt att ändra i dessa.",
+ "abusefilter-mustbeeditor": "Av säkerhetsskäl kan bara användare med rätt att modifiera missbruksfiltret använda detta gränssnitt.",
+ "abusefilter-warning": "'''Varning:''' Denna handling har automatiskt identifierats som skadlig.\nDestruktiva handlingar kommer snabbt att återställas,\noch återkommande förstörande redigeringar kommer leda till att ditt konto eller IP-adress blir blockerad.\nOm du anser att denna handling är konstruktiv, klicka på \"Spara\" igen för att bekräfta det.\nEn kortfattad beskrivning av missbruksregler som din handling utlöste är: $1",
+ "abusefilter-disallowed": "Denna handling har automatiskt identifierats som skadlig och tillåts därför inte.\nOm du anser att din handling var konstruktiv, kontakta en administratör och informera denna om vad du försökte göra.\nEn kortfattad beskrivning av missbruksregeln som din handling utlöste är: $1",
+ "abusefilter-blocked-display": "Denna handling har automatiskt identifierats som skadlig och du har blivit hindrad från att genomföra den.\nDessutom har ditt användarkonto och alla associerade IP-adresser blivit blockerade från att redigera {{SITENAME}}.\nOm detta var ett fel, var god kontakta en administratör.\nEn kortfattad beskrivning av missbruksregeln som din handling utlöste är: $1",
+ "abusefilter-degrouped": "Denna handling har automatiskt identifierats som skadlig.\nDärför tilläts den inte, och på grund av misstanke om missbruk har ditt konto mist alla rättigheter.\nOm du menar att detta har skett på grund av ett fel, var god kontakta en byråkrat med en förklaring av vad du gjorde, så kan dina rättigheter återställas.\nEn kortfattad beskrivning av missbruksregeln som din handling utlöste är: $1",
+ "abusefilter-autopromote-blocked": "Denna handling har automatiskt identifierats som skadlig och tillåts inte.\nDessutom har några av ditt kontos rättigheter tillfälligt återkallats av säkerhetsskäl.\nEn kortfattad beskrivning av missbruksregeln som din handling utlöste är: $1",
+ "abusefilter-blocker": "Missbruksfilter",
+ "abusefilter-blockreason": "Automatiskt blockerad av missbruksfiltret.\nBeskrivning av utlöst regel: $1",
+ "abusefilter-degroupreason": "Behörigheter borttagna automatiskt av missbruksfilter. Regelbeskrivning: $1",
+ "abusefilter-accountreserved": "Detta konto är reserverat för användning av missbruksfiltret.",
+ "right-abusefilter-modify": "Ändra missbruksfilter",
+ "right-abusefilter-view": "Visa missbruksfilter",
+ "right-abusefilter-log": "Visa missbruksloggen",
+ "right-abusefilter-log-detail": "Visa detaljerade element i missbruksloggen",
+ "right-abusefilter-private": "Visa privat information i missbruksloggen",
+ "right-abusefilter-private-log": "Visa missbruksfiltrets privata detaljer i åtkomstloggen",
+ "right-abusefilter-modify-restricted": "Justera missbruksfilter med begränsade handlingar",
+ "right-abusefilter-revert": "Återställ alla ändringar gjorda av ett visst missbruksfilter",
+ "right-abusefilter-view-private": "Visa missbruksfilter som är markerade som privata",
+ "right-abusefilter-log-private": "Visa loggposter från missbruksfiltret som har markerats som privata",
+ "right-abusefilter-hide-log": "Dölja poster i missbruksloggen",
+ "right-abusefilter-hidden-log": "Visa dolda missbruksloggsposter",
+ "right-abusefilter-modify-global": "Skapa eller ändra globala missbruksfilter",
+ "action-abusefilter-modify": "modifiera missbruksfilter",
+ "action-abusefilter-view": "se missbruksfilter",
+ "action-abusefilter-log": "se missbruksloggen",
+ "action-abusefilter-log-detail": "se detaljerna i missbruksloggen",
+ "action-abusefilter-private": "se privat data i missbruksloggen",
+ "action-abusefilter-private-log": "visa missbruksfiltrets privata detaljer i åtkomstloggen",
+ "action-abusefilter-modify-restricted": "ändra missbruksfilter med begränsade handlingar",
+ "action-abusefilter-revert": "återställ alla ändringar av ett angivet missbruksfilter",
+ "action-abusefilter-view-private": "visa missbruksfilter markerade som privata",
+ "action-abusefilter-log-private": "visa loggar över missbruksfilter som är märkta som privata",
+ "abusefilter-log": "Logg för missbruksfilter",
+ "abusefilter-log-summary": "Denna logg visar en lista över alla handlingar som fångats upp av filtren.",
+ "abusefilter-log-search": "Sök i missbruksloggen",
+ "abusefilter-log-search-user": "Användare:",
+ "abusefilter-log-search-filter": "Filter-ID (separeras med vertikalstreck):",
+ "abusefilter-log-search-title": "Titel:",
+ "abusefilter-log-search-wiki": "Wiki:",
+ "abusefilter-log-search-impact": "Påverkan:",
+ "abusefilter-log-search-impact-all": "Alla handlingar",
+ "abusefilter-log-search-impact-saved": "Endast sparade ändringar",
+ "abusefilter-log-search-impact-not-saved": "Utan sparade ändringar",
+ "abusefilter-log-search-entries-label": "Synlighet",
+ "abusefilter-log-search-entries-all": "Alla poster",
+ "abusefilter-log-search-entries-hidden": "Endast dolda poster",
+ "abusefilter-log-search-entries-visible": "Endast synliga poster",
+ "abusefilter-log-search-action-taken-label": "Vidtagna handlingar:",
+ "abusefilter-log-search-action-taken-any": "Alla",
+ "abusefilter-log-search-submit": "Sök",
+ "abusefilter-log-entry": "$1: $2 {{GENDER:$8|utlöste}} ett missbruksfilter genom att {{GENDER:$8|göra}} handlingen \"$3\" på $4.\nUtförd handling: $5;\nFilterbeskrivning: $6",
+ "abusefilter-log-entry-withdiff": "$1: $2 {{GENDER:$8|utlöste}} ett missbruksfilter genom att {{GENDER:$8|utföra}} handlingen \"$3\" på $4.\nUtförd handling: $5;\nFilterbeskrivning: $6 ($7)",
+ "abusefilter-log-detailedentry-meta": "$1: $2 {{GENDER:$9|utlöste}} $3, genom att {{GENDER:$9|göra}} handlingen \"$4\" på $5.\nUtförd handling: $6;\nFilterbeskrivning: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "globalt filter $1",
+ "abusefilter-log-detailedentry-local": "filter $1",
+ "abusefilter-log-detailslink": "detaljer",
+ "abusefilter-log-diff": "skillnad",
+ "abusefilter-log-hidelink": "justera synlighet",
+ "abusefilter-log-details-legend": "Detaljer för loggelement $1",
+ "abusefilter-log-details-var": "Variabel",
+ "abusefilter-log-details-val": "Värde",
+ "abusefilter-log-details-vars": "Handlingsparametrar",
+ "abusefilter-log-details-private": "Privata loggdetaljer",
+ "abusefilter-log-details-ip": "Upphovs-IP",
+ "abusefilter-log-details-checkuser": "Kontrollera användare",
+ "abusefilter-log-noactions": "ingen",
+ "abusefilter-log-details-diff": "Ändringar utförda i redigeringen",
+ "abusefilter-log-linkoncontribs": "missbrukslogg",
+ "abusefilter-log-linkoncontribs-text": "Missbrukslogg för {{GENDER:$1|den här användaren}}",
+ "abusefilter-log-hidden": "(post dold)",
+ "abusefilter-log-hidden-implicit": "(dold eftersom versionen har tagits bort)",
+ "abusefilter-log-cannot-see-details": "Du har inte behörighet att se detaljer om den här posten.",
+ "abusefilter-log-cannot-see-private-details": "Du har inte behörighet för att se privata detaljer över denna post.",
+ "abusefilter-log-nonexistent": "En post med angivet ID finns inte.",
+ "abusefilter-log-details-hidden": "Du kan inte se detaljerna för denna post eftersom den är dold från allmän visning",
+ "abusefilter-log-private-not-included": "En eller flera av de Filter-ID du angav är privata. Då du saknar tillstånd att se detaljer för privata filter, har dessa filter inte sökts.",
+ "abusefilter-log-hide-legend": "Dölj loggpost",
+ "abusefilter-log-hide-id": "Loggpost-ID:",
+ "abusefilter-log-hide-hidden": "Dölj denna posten från allmän visning",
+ "abusefilter-log-hide-reason": "Orsak:",
+ "abusefilter-log-hide-reason-other": "Annan/ytterligare anledning:",
+ "abusefilter-log-hide-forbidden": "Du har inte behörighet att dölja\nmissbrukslogg-poster.",
+ "abusefilter-logentry-suppress": "dolde \"[[$1]]\"",
+ "abusefilter-logentry-unsuppress": "visade \"[[$1]]\"",
+ "logentry-abusefilter-hit": "$1 {{GENDER:$2|utlöste}} $4, {{GENDER:$2|utförde}} åtgärden \"$5\" på $3. Åtgärder: $6 ($7)",
+ "log-action-filter-abusefilter": "Typ av filterändring:",
+ "log-action-filter-abusefilter-create": "Nya skapade filter",
+ "log-action-filter-abusefilter-modify": "Ändring av filter",
+ "logentry-abusefilterprivatedetails-access": "$1 {{GENDER:$2|fick åtkomst}} till privata detaljer för $3",
+ "abusefilterprivatedetails-log-name": "Missbruksfilter för privata detaljer i åtkomstloggen",
+ "abusefilter-management": "Hantering av missbruksfilter",
+ "abusefilter-list": "Alla filter",
+ "abusefilter-list-id": "Filter-ID",
+ "abusefilter-list-pattern": "Mönster",
+ "abusefilter-list-status": "Status",
+ "abusefilter-list-public": "Offentlig beskrivning",
+ "abusefilter-list-consequences": "Konsekvenser",
+ "abusefilter-list-visibility": "Synlighet",
+ "abusefilter-list-hitcount": "Träffräknare",
+ "abusefilter-list-edit": "Redigera",
+ "abusefilter-list-details": "Detaljer",
+ "abusefilter-list-limit": "Antal per sida:",
+ "abusefilter-list-lastmodified": "Senast modifierat",
+ "abusefilter-list-group": "Filtergrupp",
+ "abusefilter-hidden": "Privat",
+ "abusefilter-unhidden": "Offentlig",
+ "abusefilter-enabled": "Aktiverat",
+ "abusefilter-deleted": "Raderad",
+ "abusefilter-disabled": "Avaktiverat",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|träff|träffar}}",
+ "abusefilter-new": "Skapa ett nytt filter",
+ "abusefilter-return": "Återvänd till filteradministration",
+ "abusefilter-status-global": "Globalt",
+ "abusefilter-list-options": "Alternativ",
+ "abusefilter-list-options-deleted": "Raderade filter:",
+ "abusefilter-list-options-deleted-only": "Visa endast raderade filter",
+ "abusefilter-list-options-deleted-hide": "Dölj raderade filter",
+ "abusefilter-list-options-deleted-show": "Inkludera raderade filter",
+ "abusefilter-list-options-scope": "Visa filter:",
+ "abusefilter-list-options-scope-local": "Endast lokala regler",
+ "abusefilter-list-options-scope-global": "Endast globala regler",
+ "abusefilter-list-options-scope-all": "Lokala och globala regler",
+ "abusefilter-list-options-disabled": "Avaktiverade filter:",
+ "abusefilter-list-options-hidedisabled": "Göm avaktiverade filter",
+ "abusefilter-list-options-searchfield": "Sök inom regler:",
+ "abusefilter-list-options-searchpattern": "Ange ett mönster",
+ "abusefilter-list-options-searchoptions": "Sökläge:",
+ "abusefilter-list-options-search-like": "Vanlig fråga",
+ "abusefilter-list-options-search-rlike": "Reguljärt uttryck",
+ "abusefilter-list-options-search-irlike": "Icke-skiftlägeskänsligt reguljärt uttryck",
+ "abusefilter-list-regexerror": "Ett fel uppstod under sökning: Syntaxfel i reguljärt uttryck.",
+ "abusefilter-list-options-submit": "Uppdatera",
+ "abusefilter-tools-text": "Här är några verktyg som kan vara användbara för att skapa och felsöka missbruksfilter.",
+ "abusefilter-tools-expr": "Uttryckstestare",
+ "abusefilter-tools-submitexpr": "Utvärdera",
+ "abusefilter-tools-reautoconfirm": "Återställ status som automatiskt bekräftad",
+ "abusefilter-tools-reautoconfirm-user": "Användare:",
+ "abusefilter-tools-reautoconfirm-submit": "Åter-automatbekräfta",
+ "abusefilter-reautoconfirm-none": "Användaren har inte blivit fråntagen {{GENDER:$1|sin|sin|sin}} status som automatiskt bekräftad.",
+ "abusefilter-reautoconfirm-notallowed": "Du är inte tillåten att återställa status som automatiskt bekräftad.",
+ "abusefilter-reautoconfirm-done": "Kontots status som automatiskt bekräftad har återställts",
+ "abusefilter-status": "Av {{PLURAL:$1|den senaste handlingen|de $1 senaste handlingarna}} har $2 ($3%) nått gränsvärdet $4. $5 ($6%) har matchat ett av de filter som för närvarande är aktiverade.",
+ "abusefilter-edit": "Redigerar missbruksfilter",
+ "abusefilter-edit-subtitle": "Redigerar filtret $1",
+ "abusefilter-edit-subtitle-new": "Skapa filter",
+ "abusefilter-edit-oldwarning": "<strong>Du redigerar en gammal version av detta filter. Den angivna statistiken gäller den senaste versionen av filtret. Om du sparar dina ändringar kommer du att skriva över alla ändringar som gjorts efter den version du redigerar. </strong> &bull; [[Special:AbuseFilter/history/$2|Återvänd till detta filters historik]]",
+ "abusefilter-edit-status-label": "Statistik:",
+ "abusefilter-edit-status": "Av {{PLURAL:$1|den senaste handlingen|de senaste $1 handlingarna}} har detta filter matchat $2 ($3 %).",
+ "abusefilter-edit-status-profile": "Av {{PLURAL:$1|den senaste handlingen|de senaste $1 handlingarna}} har detta filter matchat $2 ($3 %). Körtiden är i genomsnitt $4 ms och filtret använder $5 {{PLURAL:$5|villkor|villkor}} av villkorsgränsen.",
+ "abusefilter-edit-throttled-warning": "'''Varning:''' Detta filteret flaggades automatiskt som skadligt. Föjande åtgärder kommer inte utföras av säkerhetsskäl ($1). Granska och [[mw:Extension:AbuseFilter/Conditions|optimera villkoren]] för att ta bort denna begränsning",
+ "abusefilter-edit-new": "Nytt filter",
+ "abusefilter-edit-save": "Spara filter",
+ "abusefilter-edit-id": "Filter-ID:",
+ "abusefilter-edit-switch-editor": "Byt redigerare",
+ "abusefilter-edit-description": "Beskrivning:\n:''(visas offentligt)''",
+ "abusefilter-edit-field-description": "beskrivning",
+ "abusefilter-edit-group": "Filtergrupp:",
+ "abusefilter-edit-flags": "Flaggor:",
+ "abusefilter-edit-enabled": "Aktivera detta filter",
+ "abusefilter-edit-deleted": "Markera som raderad",
+ "abusefilter-edit-hidden": "Dölj detaljer om detta filter",
+ "abusefilter-edit-global": "Globalt filter",
+ "abusefilter-edit-rules": "Regelverk:",
+ "abusefilter-edit-field-conditions": "villkor",
+ "abusefilter-edit-notes": "Noteringar:",
+ "abusefilter-edit-lastmod": "Filter senast ändrat:",
+ "abusefilter-edit-lastmod-text": "$1 av $2",
+ "abusefilter-edit-hitcount": "Filterträffar:",
+ "abusefilter-edit-consequences": "Handlingar att utföra vid träff",
+ "abusefilter-edit-action-warn": "Gör dessa handlingar efter att användaren fått en varning",
+ "abusefilter-edit-action-disallow": "Hindra användaren från att utföra handlingen",
+ "abusefilter-edit-action-blockautopromote": "Återta användarens status som automatiskt bekräftad",
+ "abusefilter-edit-action-degroup": "Ta bort användaren från alla användargrupper",
+ "abusefilter-edit-action-block": "Blockera användaren och/eller IP-adressen från redigering",
+ "abusefilter-edit-action-blocktalk": "Blockera användaren och/eller IP-adressen från att redigera sin egen diskussionssida",
+ "abusefilter-edit-action-throttle": "Genomför handlingar endast om användaren överstiger en limit",
+ "abusefilter-edit-action-rangeblock": "Blockera respektive IP-intervall varifrån användaren kommer",
+ "abusefilter-edit-action-tag": "Märk redigeringen för vidare granskning.",
+ "abusefilter-edit-throttle-count": "Antal tillåtna handlingar:",
+ "abusefilter-edit-throttle-period": "Tidsperiod:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|sekund|sekunder}}",
+ "abusefilter-edit-throttle-groups": "Gruppbegränsning på:\n:''(en per rad, kombinera med komman)''",
+ "abusefilter-edit-warn-message": "Systemmeddelande att använda för varning:",
+ "abusefilter-edit-warn-other": "Annat meddelande",
+ "abusefilter-edit-warn-other-label": "Sidnamn för annat meddelande:\n:''(utan MediaWiki-prefix)''",
+ "abusefilter-edit-warn-actions": "Åtgärder:",
+ "abusefilter-edit-warn-preview": "Förhandsgranska valt meddelande",
+ "abusefilter-edit-warn-edit": "Skapa/redigera valt meddelande",
+ "abusefilter-edit-tag-tag": "[[Special:Tags|Märken]] att lägga på (en per rad):",
+ "abusefilter-edit-block-anon-durations": "Varaktighet för blockering av anonyma användare:",
+ "abusefilter-edit-block-user-durations": "Varaktighet för blockering av registrerade användare:",
+ "abusefilter-block-anon": "anonyma användare",
+ "abusefilter-block-user": "registrerade användare",
+ "abusefilter-edit-denied": "Du kan inte se detaljer för detta filtret, eftersom det är dolt från allmänheten.",
+ "abusefilter-edit-main": "Filterparametrar",
+ "abusefilter-edit-done-subtitle": "Filter redigerat",
+ "abusefilter-edit-done": "[[Special:AbuseFilter/history/$1/diff/prev/$2|Dina ändringar]] på [[Special:AbuseFilter/$1|filter $3]] har sparats.",
+ "abusefilter-edit-badsyntax": "Det är ett syntaxfel i filtret du angav. Resultatet från parsern var: <pre>$1</pre>",
+ "abusefilter-edit-missingfields": "Följande fält är nödvändiga och måste fyllas i: $1",
+ "abusefilter-edit-restricted": "Du kan inte ändra detta filter eftersom det innehåller en eller fler begränsade handlingar. Vänligen fråga en användare med behörighet att lägga till begränsade handlingar att göra ändringen åt dig.",
+ "abusefilter-edit-viewhistory": "Visa det här filtrets historik",
+ "abusefilter-edit-history": "Historik:",
+ "abusefilter-edit-check": "Kontrollera syntax",
+ "abusefilter-edit-badfilter": "Filtret du angav finns inte",
+ "abusefilter-edit-revert": "Återställ handlingar utförda av detta filter",
+ "abusefilter-edit-tools": "Verktyg:",
+ "abusefilter-edit-test-link": "Testa detta filter mot senaste ändringar",
+ "abusefilter-edit-export": "Exportera det här filtret till en annan wiki",
+ "abusefilter-edit-syntaxok": "Inga syntaxfel upptäcktes.",
+ "abusefilter-edit-syntaxerr": "Syntaxfel uppstod: $1",
+ "abusefilter-edit-bad-tags": "En eller flera av de märken du angav är inte giltigt.\nMärken skall vara korta och de kan inte innehålla några specialtecken och de kan inte reserveras av andra programvaror. Försök att välja ett nytt märkesnamn",
+ "abusefilter-edit-notallowed": "Du har inte tillåtelse att skapa eller ändra missbruksfilter",
+ "abusefilter-edit-notallowed-global": "Du har inte tillåtelse att skapa eller ändra globala missbruksfilter",
+ "abusefilter-edit-notallowed-global-custom-msg": "Anpassade varningsmeddelanden stöds inte för globala filter",
+ "abusefilter-edit-builder-select": "Ange ett alternativ för att lägga till det vid markören",
+ "abusefilter-edit-builder-group-op-arithmetic": "Aritmetiska operatorer",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Addition (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Subtraktion (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Multiplikation (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Division (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Modulo (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Dignitet (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Jämförelseoperatorer",
+ "abusefilter-edit-builder-op-comparison-equal": "Värdet är lika med (==)",
+ "abusefilter-edit-builder-op-comparison-equal-strict": "Värdet och typen är lika med (===)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Värdet är inte lika med (!=)",
+ "abusefilter-edit-builder-op-comparison-notequal-strict": "Värdet och typen är inte lika med (!==)",
+ "abusefilter-edit-builder-op-comparison-lt": "Mindre än (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Mer än (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Mindre än eller lika med (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Mer än eller lika med (>=)",
+ "abusefilter-edit-builder-group-op-bool": "Booleska operatorer",
+ "abusefilter-edit-builder-op-bool-not": "Inte (!)",
+ "abusefilter-edit-builder-op-bool-and": "Och (&)",
+ "abusefilter-edit-builder-op-bool-or": "Eller (|)",
+ "abusefilter-edit-builder-group-misc": "Diverse",
+ "abusefilter-edit-builder-misc-in": "del av en sträng (in)",
+ "abusefilter-edit-builder-misc-like": "Matchar mönster (like)",
+ "abusefilter-edit-builder-misc-rlike": "Matchar reguljära uttryck (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "Matchar reguljärt uttryck, skiftlägesokänsligt (irlike)",
+ "abusefilter-edit-builder-misc-contains": "Texten till vänster innehåller texten till höger (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "Literal sträng (\"\")",
+ "abusefilter-edit-builder-misc-tern": "Ternära operatorn (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "Villkor (if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "Funktioner",
+ "abusefilter-edit-builder-funcs-length": "Stränglängd (length)",
+ "abusefilter-edit-builder-funcs-lcase": "Gör om till små bokstäver (lcase)",
+ "abusefilter-edit-builder-funcs-ucase": "Till versaler (ucase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "Normalisera förvirrande tecken (ccnorm)",
+ "abusefilter-edit-builder-funcs-ccnorm-contains-any": "Normalisera och sök efter en sträng med flera strängdelar i OR-läget (ccnorm_contains_any)",
+ "abusefilter-edit-builder-funcs-ccnorm-contains-all": "Normalisera och sök efter en sträng med flera strängdelar i AND-läget (ccnorm_contains_any)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "Ta bort dubbla tecken (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "Specialtecken / totalt antal tecken (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "Normalisera (norm)",
+ "abusefilter-edit-builder-funcs-count": "Antal gånger sträng X finns i sträng Y (count)",
+ "abusefilter-edit-builder-funcs-rcount": "Antal gånger regex X dyker upp i strängen Y (rcount)",
+ "abusefilter-edit-builder-funcs-get_matches": "Lista över reguljära matchningar inom en text för varje fångstgrupp (get_matches)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "Ta bort blanktecken (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "Ta bort specialtecken (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "Är IP-numret i intervallet? (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "Sök efter flera strängdelar i OR-läget (contains_any)",
+ "abusefilter-edit-builder-funcs-contains-all": "Sök i sträng efter flera strängdelar i AND-läget. (contains_all)",
+ "abusefilter-edit-builder-funcs-substr": "Delsträng (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "Delsträngens position i strängen (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "Ersätt delsträng med sträng (str_replace)",
+ "abusefilter-edit-builder-funcs-rescape": "Escapa strängen i regex (rescape)",
+ "abusefilter-edit-builder-funcs-set_var": "Ställ in variabel (set_var)",
+ "abusefilter-edit-builder-group-vars": "Variabler",
+ "abusefilter-edit-builder-vars-accountname": "Kontonamn (on account creation)",
+ "abusefilter-edit-builder-vars-timestamp": "Unix-tidsstämpel från förändringen",
+ "abusefilter-edit-builder-vars-timestamp-expanded": "Loggens tidsstämpel",
+ "abusefilter-edit-builder-vars-action": "Åtgärd",
+ "abusefilter-edit-builder-vars-addedlines": "Rader tillagda i redigering",
+ "abusefilter-edit-builder-vars-delta": "Storleksändring i redigering",
+ "abusefilter-edit-builder-vars-diff": "Enhetlig skillnad av ändringar i redigering",
+ "abusefilter-edit-builder-vars-newsize": "Ny sidstorlek",
+ "abusefilter-edit-builder-vars-oldsize": "Gammal sidstorlek",
+ "abusefilter-edit-builder-vars-old-content-model": "Gammal innehållsmodell",
+ "abusefilter-edit-builder-vars-new-content-model": "Ny innehållsmodell",
+ "abusefilter-edit-builder-vars-removedlines": "Borttagna rader i redigering",
+ "abusefilter-edit-builder-vars-summary": "Redigeringssammanfattning",
+ "abusefilter-edit-builder-vars-article-id": "Sid-ID",
+ "abusefilter-edit-builder-vars-article-ns": "Sidnamnrymd",
+ "abusefilter-edit-builder-vars-article-text": "Sidtitel (utan namnrymd)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Hela sidtiteln",
+ "abusefilter-edit-builder-vars-article-views": "Sidvisningar",
+ "abusefilter-edit-builder-vars-movedfrom-id": "Sid-ID till källsidan vid flyttning",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "Namnrymd för källsidan vid flyttning",
+ "abusefilter-edit-builder-vars-movedfrom-text": "Titel för källsidan vid flyttning",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "Fullständig titel av källsidan vid flyttning",
+ "abusefilter-edit-builder-vars-movedto-id": "Sid-ID för målsida vid flyttning",
+ "abusefilter-edit-builder-vars-movedto-ns": "Namnrymd för målsida vid flyttning",
+ "abusefilter-edit-builder-vars-movedto-text": "Titel för målsida vid flyttning",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "Hel titel för målsida vid flyttning",
+ "abusefilter-edit-builder-vars-user-editcount": "Användarens redigeringsantal",
+ "abusefilter-edit-builder-vars-user-age": "Användarkontots ålder",
+ "abusefilter-edit-builder-vars-user-name": "Användarkontots namn",
+ "abusefilter-edit-builder-vars-user-groups": "Grupper (inkluderat implicita) användaren är i",
+ "abusefilter-edit-builder-vars-user-rights": "Rättigheter som en användare har",
+ "abusefilter-edit-builder-vars-user-blocked": "Ifall användaren är blockerad",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "Tid e-postadressen blev bekräftad",
+ "abusefilter-edit-builder-vars-recent-contributors": "De senaste tio som bidragit till sidan",
+ "abusefilter-edit-builder-vars-first-contributor": "Första användaren att bidra till sidan",
+ "abusefilter-edit-builder-vars-movedfrom-recent-contributors": "De senaste tio användarna som bidragit till att flytta källsidan",
+ "abusefilter-edit-builder-vars-movedfrom-first-contributor": "Första användaren att bidra till att flytta källsidan",
+ "abusefilter-edit-builder-vars-movedto-recent-contributors": "De senaste tio användarna som bidragit till att flytta destinationssidan",
+ "abusefilter-edit-builder-vars-movedto-first-contributor": "Första användaren att bidra till att flytta destinationssidan",
+ "abusefilter-edit-builder-vars-all-links": "Alla externa länkar i den nya texten",
+ "abusefilter-edit-builder-vars-added-links": "Alla externa länkar tillagda i redigeringen",
+ "abusefilter-edit-builder-vars-removed-links": "Alla externa länkar borttagna i redigeringen",
+ "abusefilter-edit-builder-vars-old-text": "Sidans gamla wikitext, före redigeringen",
+ "abusefilter-edit-builder-vars-new-text": "Sidans nya wikitext, efter redigeringen",
+ "abusefilter-edit-builder-vars-new-pst": "Ny sida wikitext förändrades innan den sparades",
+ "abusefilter-edit-builder-vars-diff-pst": "Sammanslagen diff av ändringarna gjorda under redigering, innan de sparades",
+ "abusefilter-edit-builder-vars-addedlines-pst": "Rader tillagda under redigering, innan den sparades",
+ "abusefilter-edit-builder-vars-new-text-stripped": "Ny sidtext, strippad från eventuell markup",
+ "abusefilter-edit-builder-vars-new-html": "Parsad HTML-källkod för den nya versionen",
+ "abusefilter-edit-builder-vars-restrictions-edit": "Skyddsnivå för redigering av sidan",
+ "abusefilter-edit-builder-vars-restrictions-move": "Skyddsnivå för flytt av sidan",
+ "abusefilter-edit-builder-vars-restrictions-create": "Skydd mot sidans skapelse",
+ "abusefilter-edit-builder-vars-restrictions-upload": "Ladda upp skydd för den här filen",
+ "abusefilter-edit-builder-vars-movedfrom-restrictions-edit": "Redigera skyddsnivå för flyttning av källsida",
+ "abusefilter-edit-builder-vars-movedfrom-restrictions-move": "Flytta skyddsnivå för flyttning av källsida",
+ "abusefilter-edit-builder-vars-movedfrom-restrictions-create": "Skapa skyddsnivå för flyttning av källsida",
+ "abusefilter-edit-builder-vars-movedfrom-restrictions-upload": "Ladda upp skyddsnivå för flyttning av källfil",
+ "abusefilter-edit-builder-vars-movedto-restrictions-edit": "Redigera skyddsnivå för flyttning av destinationssida",
+ "abusefilter-edit-builder-vars-movedto-restrictions-move": "Flytta skyddsnivå för flyttning av destinationssida",
+ "abusefilter-edit-builder-vars-movedto-restrictions-create": "Skapa skyddsnivå för flyttning av destinationssida",
+ "abusefilter-edit-builder-vars-movedto-restrictions-upload": "Ladda upp skyddsnivå för flyttning av destinationsfil",
+ "abusefilter-edit-builder-vars-old-text-stripped": "Gammal sidtext, med all kodning borttagen",
+ "abusefilter-edit-builder-vars-old-links": "Länkar i denna sida, före redigeringen",
+ "abusefilter-edit-builder-vars-old-html": "Gammal sidwikitext, parsad till HTML",
+ "abusefilter-edit-builder-vars-minor-edit": "Huruvida redigeringen är markerad som mindre",
+ "abusefilter-edit-builder-vars-file-sha1": "SHA1-hash av filinnehållet",
+ "abusefilter-edit-builder-vars-file-size": "Storlek på filen i bytes",
+ "abusefilter-edit-builder-vars-file-mime": "MIME-typ av filen",
+ "abusefilter-edit-builder-vars-file-mediatype": "Media typ av filen",
+ "abusefilter-edit-builder-vars-file-width": "Bredd på filen i pixlar",
+ "abusefilter-edit-builder-vars-file-height": "Höjd på filen i pixlar",
+ "abusefilter-edit-builder-vars-file-bits-per-channel": "Bitar per färgkanal för filen",
+ "abusefilter-edit-block-options": "Blockeringsalternativ:",
+ "abusefilter-filter-log": "Senaste filterändringar",
+ "abusefilter-history": "Ändringshistorik för missbruksfilter #$1",
+ "abusefilter-history-foruser": "Ändringar av $1",
+ "abusefilter-history-hidden": "dold",
+ "abusefilter-history-enabled": "aktiverad",
+ "abusefilter-history-global": "Globalt",
+ "abusefilter-history-timestamp": "Tid",
+ "abusefilter-history-user": "Användare",
+ "abusefilter-history-public": "Offentlig filterbeskrivning",
+ "abusefilter-history-flags": "Flaggor",
+ "abusefilter-history-filter": "Filterregel",
+ "abusefilter-history-comments": "Kommentarer",
+ "abusefilter-history-actions": "Åtgärder",
+ "abusefilter-history-backedit": "Tillbaka till filterredigering",
+ "abusefilter-history-deleted": "Raderad",
+ "abusefilter-history-filterid": "Filter",
+ "abusefilter-history-select-legend": "Förfina sökning",
+ "abusefilter-history-select-user": "Användare:",
+ "abusefilter-history-select-filter": "Filter-ID:",
+ "abusefilter-history-select-submit": "Förfina",
+ "abusefilter-history-diff": "Ändringar",
+ "abusefilter-history-error-hidden": "Filtret du eftersökte är dolt och du kan inte se dess historik.",
+ "abusefilter-exception-unexpectedatend": "Oväntad \"$2\" vid tecken $1.",
+ "abusefilter-exception-expectednotfound": "Förväntade en $2 vid tecken $1, men hittade det inte (hittade $3 $4 istället).",
+ "abusefilter-exception-unrecognisedkeyword": "Obekant nyckelord $2 vid tecken $1.",
+ "abusefilter-exception-unexpectedtoken": "Oväntad token \"$3\" (av typen $2) vid tecken $1.",
+ "abusefilter-exception-unclosedstring": "Ostängd sträng som startar vid tecken $1.",
+ "abusefilter-exception-invalidoperator": "Ogiltig operatör \"$2\" vid tecken $1.",
+ "abusefilter-exception-unrecognisedtoken": "Obekant token \"$2\" vid tecken $1.",
+ "abusefilter-exception-noparams": "Inga parametrar givna till funktion \"$2\" vid tecken $1.",
+ "abusefilter-exception-dividebyzero": "Ogiltigt försök att dividera $2 med noll vid tecken $1.",
+ "abusefilter-exception-unrecognisedvar": "Okänd variabel $2 vid tecken $1",
+ "abusefilter-exception-notenoughargs": "Funktionen $2 anropades med för få argument vid teckenposition $1. $3 {{PLURAL:$3|argument|argument}} väntades, fick bara $4.",
+ "abusefilter-exception-regexfailure": "Fel i det reguljära uttrycket \"$3\" vid teckenposition $1: \"$2\"",
+ "abusefilter-exception-overridebuiltin": "Ogiltig överskrivning av inbyggd variabel \"$2\" vid teckenposition $1.",
+ "abusefilter-exception-outofbounds": "Begärde icke-existerande listelement $2 (listans storkel = $3) vid teckenposition $1.",
+ "abusefilter-exception-notlist": "Begär tabellelement från en icketabell vid teckenposition $1.",
+ "abusefilter-exception-unclosedcomment": "Öppen kommentar vid tecken $1.",
+ "abusefilter-action-tag": "Tagg",
+ "abusefilter-action-throttle": "Begränsning",
+ "abusefilter-action-warn": "Varna",
+ "abusefilter-action-blockautopromote": "Blockera automatiskt bekräftad",
+ "abusefilter-action-block": "Blockera",
+ "abusefilter-action-degroup": "Ta bort från grupper",
+ "abusefilter-action-rangeblock": "Intervallblockering",
+ "abusefilter-action-disallow": "Förbjud",
+ "abusefilter-revert-title": "Återställ alla ändringar av filter $1",
+ "abusefilter-revert-intro": "Detta formulär låter dig återställa alla ändringar gjorda av missbruksfiltret på grund av filter $1. Vänligen var försiktig vid användandet av detta verktyg.",
+ "abusefilter-revert-preview-item": "$1: $2 {{GENDER:$7|gjorde}} en $3 på $4.\nHandlingar som ska återställas: $5 ($6)",
+ "abusefilter-revert-search-legend": "Välj missbruksfilterhandlingar som ska återställas",
+ "abusefilter-revert-periodstart": "Periodstart:",
+ "abusefilter-revert-periodend": "Periodslut:",
+ "abusefilter-revert-search": "Välj handlingar",
+ "abusefilter-revert-filter": "Filter-ID:",
+ "abusefilter-revert-preview-intro": "Nedan är de handlingar som är gjorda av missbruksfiltret som kommer att återställas av denna handling. Vänligen kontrollera dem noggrant, och klicka \"{{int:abusefilter-revert-confirm}}\" för att bekräfta ditt val.",
+ "abusefilter-revert-confirm-legend": "Bekräfta återställning",
+ "abusefilter-revert-confirm": "Bekräfta",
+ "abusefilter-revert-success": "Du har återställt alla handlingar som missbruksfiltret gjort på grund av [[Special:AbuseFilter/$1|filter $2]].",
+ "abusefilter-revert-reason": "Automatisk återställning av alla handlingar som missbruksfiltret gjort på grund av filter $1. Angiven anledning: $2",
+ "abusefilter-revert-reasonfield": "Anledning:",
+ "abusefilter-test": "Testa ett filter mot tidigare redigeringar",
+ "abusefilter-test-intro": "Denna sida låter dig kolla upp ett filter inlagt i rutan nedan mot {{PLURAL:$1|den senaste $1 ändringen|de senaste $1 ändringarna}}.\nFör att ladda ett existerande filter, skriv dess filter-ID i rutan nedanför redigerings-boxen, och klicka på knappen \"{{int:abusefilter-test-load}}\".",
+ "abusefilter-test-legend": "Filtertestande",
+ "abusefilter-test-load-filter": "Ladda filter-ID:",
+ "abusefilter-test-submit": "Test",
+ "abusefilter-test-load": "Ladda",
+ "abusefilter-test-user": "Ändringar av användare:",
+ "abusefilter-test-period-start": "Ändringar gjorda efter:",
+ "abusefilter-test-period-end": "Ändringar gjorda före:",
+ "abusefilter-test-page": "Ändringar på sidan:",
+ "abusefilter-test-shownegative": "Visa ändringar som inte matchar filtret",
+ "abusefilter-test-syntaxerr": "Det filter du skrev in innehöll ett syntaxfel.\nDu kan se en fullständig förklaring genom att klicka på knappen \"{{int:abusefilter-edit-check}}\".",
+ "abusefilter-test-badtitle": "Sidrubriken du angett är ogiltigt. Den kan innehålla ett eller flera tecken som inte kan användas i rubriker.",
+ "abusefilter-changeslist-examine": "undersök",
+ "abusefilter-examine": "Undersök enstaka ändringar",
+ "abusefilter-examine-intro": "Denna sida låter dig undersöka variablerna skapade av missbruksfiltret för en enstaka ändring, och testa den mot filter.",
+ "abusefilter-examine-legend": "Välj ändringar",
+ "abusefilter-examine-diff": "Diff-URL:",
+ "abusefilter-examine-user": "Användare:",
+ "abusefilter-examine-title": "Sidtitel:",
+ "abusefilter-examine-submit": "Sök",
+ "abusefilter-examine-vars": "Variabler skapade för denna ändring",
+ "abusefilter-examine-test": "Testa denna ändring mot ett filter",
+ "abusefilter-examine-test-button": "Testa filter",
+ "abusefilter-examine-match": "Filtret matchar denna ändring.",
+ "abusefilter-examine-nomatch": "Filtret matchade inte denna ändring.",
+ "abusefilter-examine-syntaxerror": "Filtret har ogiltig syntax",
+ "abusefilter-examine-notfound": "Ändringen du efterfrågade kunde inte hittas.",
+ "abusefilter-examine-incompatible": "Ändringen du efterfrågade stöds inte av missbruksfiltret",
+ "abusefilter-examine-noresults": "Inga resultat hittades för de sökparametrar du gav.",
+ "abusefilter-topnav": "'''Navigation'''",
+ "abusefilter-topnav-home": "Huvudsida",
+ "abusefilter-topnav-test": "Grupptestning",
+ "abusefilter-topnav-examine": "Granska tidigare ändringar",
+ "abusefilter-topnav-log": "Missbrukslogg",
+ "abusefilter-topnav-tools": "Felsökningsverktyg",
+ "abusefilter-topnav-import": "Importera filter",
+ "abusefilter-log-name": "Missbruksfilterändringar",
+ "abusefilter-log-header": "Denna logg visar en sammanfattning av ändringar som har gjorts i filtren.\nFör fullständiga detaljer, se [[Special:AbuseFilter/history|listan]] över de senaste filterändringarna.",
+ "abusefilter-logentry-create": "$1 {{GENDER:$2|skapade}} $4 ($5)",
+ "abusefilter-logentry-modify": "$1 {{GENDER:$2|ändrade}} $4 ($5)",
+ "abusefilter-log-noresults": "Inga resultat",
+ "abusefilter-diff-title": "Skillnader mellan versioner",
+ "abusefilter-diff-item": "Element",
+ "abusefilter-diff-version": "Version från $1 {{GENDER:$3|av}} $2",
+ "abusefilter-diff-info": "Grundläggande information",
+ "abusefilter-diff-pattern": "Filtervillkor",
+ "abusefilter-diff-invalid": "Kunde inte hämta de önskade versionerna",
+ "abusefilter-diff-backhistory": "Tillbaka till filterhistoriken",
+ "abusefilter-diff-prev": "Äldre förändring",
+ "abusefilter-diff-next": "Nyare förändring",
+ "abusefilter-import-intro": "Du kan använda detta gränssnitt till att importera filter från andra wikier.\nI källwikin klickar du på \"{{int:abusefilter-edit-export}}\" under \"{{int:abusefilter-edit-tools}}\" i redigeringsgränsnittet.\nKopiera från textrutan som kommer fram och klistra in det till denna ruta. Klicka sedan på \"{{int:abusefilter-import-submit}}\".",
+ "abusefilter-import-submit": "Importera data",
+ "abusefilter-group-default": "Standard",
+ "abusefilter-http-error": "Ett HTTP-fel uppstod: $1.",
+ "abusefilter-view-private-submit": "Visa privata detaljer",
+ "abusefilter-view-private": "Visa privata detaljer",
+ "abusefilter-view-private-reason": "Anledning för att komma åt privata detaljer:",
+ "abusefilter-log-details-id": "Logg-ID",
+ "abusefilter-invalid-request": "Ogiltig begäran! Du måste få åtkomst till privata loggdetaljer via formuläret på [[Special:AbuseLog/$1]] och ange en anledning.",
+ "abusefilter-invalid-request-noid": "Ogiltig begäran! Du måste få åtkomst till privata loggdetaljer via formuläret på missbruksloggens detaljsida och ange en anledning.",
+ "log-description-abusefilterprivatedetails": "Denna logg visar en lista över antalet gånger en användare får åtkomst till privata detaljer i en missbrukslogg.",
+ "abusefilter-noreason": "Varning: För att se privata detaljer i denna logg måste du ange en anledning.",
+ "abusefilter-log-ip-not-available": "Inte tillgänglig",
+ "tag-abusefilter-condition-limit": "villkorsgräns är nådd",
+ "tag-abusefilter-condition-limit-description": "Redigeringar eller andra händelser som inte kunde kontrolleras av alla aktiva [[Special:AbuseFilter|missbruksfilter]] ([[mw:Extension:AbuseFilter/Conditions|hjälp]]).",
+ "apihelp-abusefiltercheckmatch-description": "Kontrollera om ett missbruksfilter matchar en grupp variabler som är loggade händelser i missbruksfiltret.\n\nvars, rcid eller logid krävs, men endast en kan användas.",
+ "apihelp-abusefiltercheckmatch-summary": "Kontrollera om ett missbruksfilter matchar en grupp variabler som är loggade händelser i missbruksfiltret.",
+ "apihelp-abusefiltercheckmatch-extended-description": "vars, rcid eller logid krävs, men endast en av dem kan användas.",
+ "apihelp-abusefiltercheckmatch-param-filter": "Fulla filtertexten att jämföra med för en träff.",
+ "apihelp-abusefiltercheckmatch-param-vars": "JSON-kodad lista av variabler att testa mot.",
+ "apihelp-abusefiltercheckmatch-param-rcid": "Senaste ändrings-ID att jämföra med.",
+ "apihelp-abusefiltercheckmatch-param-logid": "Missbruksfilterlogg-ID att jämföra med.",
+ "apihelp-abusefiltercheckmatch-example-1": "Testa om senaste ändring-ID 15 matchar ett enkelt filter",
+ "apihelp-abusefilterchecksyntax-description": "Kontrollera syntax för ett AbuseFilter-filter.",
+ "apihelp-abusefilterchecksyntax-summary": "Kontrollera syntaxen för ett missbruksfilter.",
+ "apihelp-abusefilterchecksyntax-param-filter": "Den fulla texten att kontrollera syntaxen på.",
+ "apihelp-abusefilterchecksyntax-example-1": "Kontrollera syntax för ett giltigt filter",
+ "apihelp-abusefilterchecksyntax-example-2": "Kontrollera syntax för ett ogiltigt filter",
+ "apihelp-abusefilterevalexpression-description": "Utvärdera ett AbuseFilter-uttryck.",
+ "apihelp-abusefilterevalexpression-summary": "Utvärderar uttryck i ett missbruksfilter.",
+ "apihelp-abusefilterevalexpression-param-expression": "Uttrycket att utvärdera.",
+ "apihelp-abusefilterevalexpression-example-1": "Beräkna en enkel formel",
+ "apihelp-abusefilterunblockautopromote-description": "Upphäver blockering för en användare från att få automatiska befordringar p.g.a. konsekvenser från ett missbruksfilter.",
+ "apihelp-abusefilterunblockautopromote-summary": "Upphäver blockering för en användare från att få automatiska befordringar p.g.a. konsekvenser från ett missbruksfilter.",
+ "apihelp-abusefilterunblockautopromote-param-user": "Användarnamn för användaren du vill avblockera.",
+ "apihelp-abusefilterunblockautopromote-example-1": "Ta bort blockeringen på [[User:Example]]s autobefordran",
+ "apihelp-query+abusefilters-description": "Visa detaljer för missbruksfiltret.",
+ "apihelp-query+abusefilters-summary": "Visa detaljer för missbruksfiltret.",
+ "apihelp-query+abusefilters-param-startid": "Filter-ID att börja räkna upp från.",
+ "apihelp-query+abusefilters-param-endid": "Filter-ID att sluta räkna upp vid.",
+ "apihelp-query+abusefilters-param-show": "Visa enbart filter som matchar dessa kriterier.",
+ "apihelp-query+abusefilters-param-limit": "Det maximala antalet filter att lista.",
+ "apihelp-query+abusefilters-param-prop": "Vilka egenskaper som ska hämtas.",
+ "apihelp-query+abusefilters-example-1": "Lista aktiva publika filter",
+ "apihelp-query+abusefilters-example-2": "Visa några detaljer om filtren",
+ "apihelp-query+abuselog-description": "Visa händelser som en av missbruksfiltren har fångat.",
+ "apihelp-query+abuselog-summary": "Visa händelser som en av missbruksfiltren har fångat.",
+ "apihelp-query+abuselog-param-start": "Tidsstämpel att börja räkna upp från.",
+ "apihelp-query+abuselog-param-end": "Tidsstämpeln att sluta räkna upp vid.",
+ "apihelp-query+abuselog-param-user": "Visa enbart poster gjorda av en viss användare eller IP-adress.",
+ "apihelp-query+abuselog-param-title": "Visa endast poster som förekommer på en viss sida.",
+ "apihelp-query+abuselog-param-filter": "Visa endast poster som fångats av ett visst filter-ID.",
+ "apihelp-query+abuselog-param-limit": "Det maximala antalet poster att lista.",
+ "apihelp-query+abuselog-param-prop": "Vilka egenskaper att hämta.",
+ "apihelp-query+abuselog-param-wiki": "Wiki att visa träffar ifrån.",
+ "apihelp-query+abuselog-example-1": "Visa de senaste loggposterna",
+ "apihelp-query+abuselog-example-2": "Visa de senaste loggposterna för [[API]]",
+ "apierror-abusefilter-canttest": "Du har inte behörighet att testa missbruksfilter.",
+ "apierror-abusefilter-cantcheck": "Du har inte behörighet att kolla syntaxen för missbruksfilter.",
+ "apierror-abusefilter-nosuchlogid": "Det finns ingen post i missbruksloggen med ID $1.",
+ "apierror-abusefilter-badsyntax": "Filtret har ogiltig syntax."
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/sw.json b/www/wiki/extensions/AbuseFilter/i18n/sw.json
new file mode 100644
index 00000000..747eadca
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/sw.json
@@ -0,0 +1,158 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ikiwaner",
+ "Kwisha",
+ "Lloffiwr",
+ "Stephenwanjau"
+ ]
+ },
+ "abuselog": "Kumbukumbu ya matumizi mabaya",
+ "right-abusefilter-modify": "Rekebisha cinchungi vya unyanyasaji",
+ "right-abusefilter-view": "Tazama vichungi vya unyanyasaji",
+ "abusefilter-log-search-user": "Mtumiaji:",
+ "abusefilter-log-search-title": "Kichwa:",
+ "abusefilter-log-search-wiki": "Wiki:",
+ "abusefilter-log-search-submit": "Tafuta",
+ "abusefilter-log-detailslink": "Maelezo zaidi",
+ "abusefilter-log-details-var": "Kibadili",
+ "abusefilter-log-details-val": "Thamani",
+ "abusefilter-log-details-private": "Data binafsi",
+ "abusefilter-log-noactions": "usichague",
+ "abusefilter-log-hide-reason": "Sababu:",
+ "abusefilter-logentry-suppress": "ilificha \"[[$1]]\"",
+ "abusefilter-logentry-unsuppress": "fichua \"[[$1]]\"",
+ "abusefilter-list": "Chujio zote",
+ "abusefilter-list-id": "ID ya chujio",
+ "abusefilter-list-status": "Hali",
+ "abusefilter-list-public": "Maelezo ya umma",
+ "abusefilter-list-consequences": "Matokeo",
+ "abusefilter-list-visibility": "Muonekano",
+ "abusefilter-list-edit": "Hariri",
+ "abusefilter-list-details": "Maelezo zaidi",
+ "abusefilter-list-limit": "Idadi katika kila ukurasa:",
+ "abusefilter-list-lastmodified": "Ilirekebishwa mwisho",
+ "abusefilter-list-group": "Kikundi zha chujio",
+ "abusefilter-hidden": "Binafsi",
+ "abusefilter-unhidden": "Ya uma",
+ "abusefilter-enabled": "Imewezeshwa",
+ "abusefilter-deleted": "Imefutwa",
+ "abusefilter-disabled": "Imelemazwa",
+ "abusefilter-new": "Tengeza chujio mpya",
+ "abusefilter-return": "Rejea katika usimamizi wa chujio",
+ "abusefilter-status-global": "Dunia nzima",
+ "abusefilter-list-options": "Chaguzi",
+ "abusefilter-list-options-deleted": "Chujio zilizofutwa:",
+ "abusefilter-list-options-deleted-only": "Onyesha chujio zilizofutwa pekee",
+ "abusefilter-list-options-deleted-hide": "Ficha chujio zilizofutwa",
+ "abusefilter-list-options-deleted-show": "Jumuisha chujio zilizofutwa",
+ "abusefilter-list-options-scope": "Onyesha chujio:",
+ "abusefilter-list-options-scope-local": "Sheria za hapa pekee",
+ "abusefilter-list-options-disabled": "Chujio zilizolemazwa:",
+ "abusefilter-list-options-hidedisabled": "Ficha chujio zilizofutwa",
+ "abusefilter-list-options-submit": "Sasisha",
+ "abusefilter-tools-submitexpr": "Pima",
+ "abusefilter-tools-reautoconfirm-user": "Mtumiaji:",
+ "abusefilter-edit-subtitle": "Inahariri chujio $1",
+ "abusefilter-edit-subtitle-new": "Inatengeza chujio",
+ "abusefilter-edit-status-label": "Takwimu:",
+ "abusefilter-edit-new": "Chujio mpya",
+ "abusefilter-edit-save": "Hifadhi chujio",
+ "abusefilter-edit-id": "ID ya chujio:",
+ "abusefilter-edit-group": "Kikundi cha chujio:",
+ "abusefilter-edit-enabled": "Wezesha chujio hili",
+ "abusefilter-edit-deleted": "Weka alama kama iliyofutwa",
+ "abusefilter-edit-rules": "Masharti:",
+ "abusefilter-edit-notes": "Vidokezo:",
+ "abusefilter-edit-lastmod-text": "$1 na $2",
+ "abusefilter-edit-warn-other": "Ujumbe mwingine",
+ "abusefilter-edit-warn-actions": "Vitendo:",
+ "abusefilter-edit-main": "Vigezo vya chujio",
+ "abusefilter-edit-done-subtitle": "Chujio imehaririwa",
+ "abusefilter-edit-done": "Umefaulu kuhifadhi mabadiliko yako kwa chujio $1.",
+ "abusefilter-edit-viewhistory": "Tazama historia ya chujio hii",
+ "abusefilter-edit-history": "Historia:",
+ "abusefilter-edit-check": "Angalia sintaksia",
+ "abusefilter-edit-tools": "Zana:",
+ "abusefilter-edit-export": "Peleka chujio hili katika Wiki ingine",
+ "abusefilter-edit-syntaxok": "Hakuna hitilafu za sintaksia zimegunduliwa",
+ "abusefilter-edit-syntaxerr": "Hitilafu ya sintaksia imegunduliwa: $1",
+ "abusefilter-edit-notallowed": "Hauruhusiwi kutemgeza au kuhariri chujio za matumizi mabaya",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Kuongeza (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Kutoa (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Kuzidisha (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Mgawanyo (/)",
+ "abusefilter-edit-builder-group-misc": "Mseto",
+ "abusefilter-edit-builder-group-vars": "Vibadili",
+ "abusefilter-edit-builder-vars-accountname": "Jina la akaunti (wakati wa kufungua akaunti)",
+ "abusefilter-edit-builder-vars-action": "Tendo",
+ "abusefilter-edit-builder-vars-addedlines": "Laini zilizo ongezwa katika hariri",
+ "abusefilter-edit-builder-vars-delta": "Badiliko katika ukubwa wa hariri",
+ "abusefilter-edit-builder-vars-newsize": "Saizi mpya ya ukurasa",
+ "abusefilter-edit-builder-vars-oldsize": "Saizi nzee ya ukurasa",
+ "abusefilter-edit-builder-vars-removedlines": "Laini zilizotolewa kwa hariri",
+ "abusefilter-edit-builder-vars-summary": "Muhtasari wa hariri/sababu",
+ "abusefilter-edit-builder-vars-article-id": "ID ya ukurasa",
+ "abusefilter-edit-builder-vars-article-ns": "Eneo la Wiki la ukurasa",
+ "abusefilter-edit-builder-vars-article-text": "Mada ya ukurasa (bila eneo la wiki)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Mada ya ukurasa mzima",
+ "abusefilter-edit-builder-vars-user-editcount": "Idadi ya hariri ya mtumiaji",
+ "abusefilter-edit-builder-vars-user-age": "Umri wa akaunti ya mtumiaji",
+ "abusefilter-edit-builder-vars-user-name": "Jina la akaunti ya mtumiaji",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "Wakati anwani ya barua pepe ilidhibitishwa",
+ "abusefilter-edit-builder-vars-recent-contributors": "Watumiaji kumi wa mwisho kuchangia ukurasa huu",
+ "abusefilter-edit-builder-vars-all-links": "Viungo vyote vya nje katika hati mpya",
+ "abusefilter-edit-builder-vars-added-links": "Viungo vyote vya nje vilivyoongezwa katika hariri",
+ "abusefilter-edit-builder-vars-removed-links": "Viungo vyote vya nje vilivyotolewa katika hariri",
+ "abusefilter-edit-builder-vars-old-links": "Viungo katika ukurasa, kabla ya harir",
+ "abusefilter-filter-log": "Mabadiliko ya hivi karibuni ya chujio",
+ "abusefilter-history": "Badili historia ya matumizi mabaya ya chujio #$1",
+ "abusefilter-history-foruser": "Mabadiliko na $1",
+ "abusefilter-history-hidden": "imefichwa",
+ "abusefilter-history-enabled": "Imewezeshwa",
+ "abusefilter-history-timestamp": "Saa",
+ "abusefilter-history-user": "Mtumiaji",
+ "abusefilter-history-public": "Maelezo ya umma ya chujio",
+ "abusefilter-history-filter": "Sheria ya chujio",
+ "abusefilter-history-comments": "Maoni",
+ "abusefilter-history-actions": "Vitendo",
+ "abusefilter-history-backedit": "Rejea kwa kihariri cha chujio",
+ "abusefilter-history-deleted": "Imefutwa",
+ "abusefilter-history-filterid": "Chuja",
+ "abusefilter-history-select-user": "Mtumiaji:",
+ "abusefilter-history-select-submit": "Boresha",
+ "abusefilter-history-diff": "Mabadiliko",
+ "abusefilter-action-warn": "Onya",
+ "abusefilter-action-block": "Zuia",
+ "abusefilter-revert-periodstart": "Mwanzo wa kipindi:",
+ "abusefilter-revert-periodend": "Mwisho wa kipindi:",
+ "abusefilter-revert-search": "Chagua vitendo",
+ "abusefilter-revert-filter": "Chuja:",
+ "abusefilter-revert-confirm": "Yakinisha",
+ "abusefilter-revert-reasonfield": "Sababu:",
+ "abusefilter-test-legend": "Jaribio la chujio",
+ "abusefilter-test-load-filter": "Pakia ID ya chujio:",
+ "abusefilter-test-submit": "Jaribu",
+ "abusefilter-test-load": "Kupakia",
+ "abusefilter-test-user": "Mabadiliko ya mtumiaji:",
+ "abusefilter-examine-legend": "Chagua mabadiliko",
+ "abusefilter-examine-user": "Mtumiaji:",
+ "abusefilter-examine-title": "Mada ya ukurasa:",
+ "abusefilter-examine-submit": "Tafuta",
+ "abusefilter-examine-test-button": "Pima chujio",
+ "abusefilter-topnav-home": "Mwanzo",
+ "abusefilter-topnav-examine": "Chunguza hariri zilizopita",
+ "abusefilter-topnav-log": "Kumbukumbu ya matumizi mabaya",
+ "abusefilter-topnav-tools": "Vifaa vya kueua",
+ "abusefilter-topnav-import": "Leta chujio",
+ "abusefilter-log-name": "Kumbukumbu ya matumizi mabaya ya chujio",
+ "abusefilter-log-noresults": "Hakuna matokeo",
+ "abusefilter-diff-title": "Tofauti kati ya matokeo",
+ "abusefilter-diff-item": "Kifaa",
+ "abusefilter-diff-version": "Toleo kutoka $1 {{GENDER:$3|na}} $2",
+ "abusefilter-diff-info": "Maelezo ya msingi",
+ "abusefilter-diff-pattern": "Hali ya chujio",
+ "abusefilter-diff-backhistory": "Rejea kwa historia ya chujio",
+ "abusefilter-import-submit": "Leta data",
+ "abusefilter-group-default": "Chaguo-msingi"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/szl.json b/www/wiki/extensions/AbuseFilter/i18n/szl.json
new file mode 100644
index 00000000..075f9bd1
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/szl.json
@@ -0,0 +1,18 @@
+{
+ "@metadata": {
+ "authors": [
+ "Britscher",
+ "Krol111"
+ ]
+ },
+ "abusefilter-desc": "Automatyczno heurystyko do edycyj",
+ "abusefilter": "Konfiguracyjo filtra zńyłużyćůw",
+ "abuselog": "↓Register zńyłużyćůw",
+ "abusefilter-intro": "Regiyrowańy registrym zńyłużyćów\nRegister zńyłużyćów je program, kery automatyczńy używo heurystyka do wszyjskich akcyj.\nInterface pozwolo przeglůndać lista zedefińůwanych filtrůw a je pomjyńać.",
+ "abusefilter-mustbeeditor": "Lo bezpjyczyństwa, tyn interface mogům używać jyno używocze, kere majům prawo pomjyńać filter zńyłużyćów.",
+ "abusefilter-warning": "'''Pozůr''': Ta akcyjo bůła automatyczńy uznono szkodzůnco.\nFelerne pomjyny bydům cofńynte nazod, a fest złe abo uopakujůnce śe edytowańy skůńczy śe zwarćem twojigo kůnta abo IP.\nEli uważosz, aże to co żeś zrobjůł je dobre, spamjyntej pomjany bez „{{int:savearticle}}”.\nKrůtki uopis regli zńyłużyćo, keremu przipasowano twojo akcyjo: $1",
+ "abusefilter-disallowed": "Ta akcyjo bůła automatyczńy uznona szkodzůnco i uodćepńynto.\nEli uważosz, aże ta edycyjo bůła ajntlichowo, pedź uo tyj sytuacyji administratůrowi.\nKrůtki uopis regla zńyłużyćo, keremu bůła przipasowano twojo akcyjo: $1",
+ "abusefilter-blocker": "Filter zńyłużyćów",
+ "right-abusefilter-modify": "Pomjyńańy filtrůw zńyłużyćůw",
+ "abusefilter-list-options-submit": "Aktualizacyjo"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/ta.json b/www/wiki/extensions/AbuseFilter/i18n/ta.json
new file mode 100644
index 00000000..521f7127
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/ta.json
@@ -0,0 +1,292 @@
+{
+ "@metadata": {
+ "authors": [
+ "ElangoRamanujam",
+ "Kanags",
+ "Karthi.dr",
+ "Logicwiki",
+ "Shanmugamp7",
+ "Sodabottle",
+ "TRYPPN",
+ "கௌசிக் பிரபு",
+ "செல்வா",
+ "மதனாஹரன்",
+ "Balajijagadesh"
+ ]
+ },
+ "abusefilter-desc": "தொகுப்புகள் தானியங்கியாய் முறைவரிசைப்படுத்துதலைச் செயற்படுத்தும்",
+ "abusefilter": "முறைகேடு வடிக்கட்டி அமைப்பு",
+ "abuselog": "முறைகேடு பதிவு",
+ "abusefilter-mustbeeditor": "பாதுகாப்பு கருதி, முறைகேடு வடிகட்டியை மாற்றும் உரிமையுடைய பயனர்கள் மட்டுமே இந்த இடைமுகத்தைப் பயன்படுத்தலாம்",
+ "abusefilter-blocker": "முறைகேடு வடிகட்டி",
+ "abusefilter-accountreserved": "இப்பயனர் கணக்குப்பெயர் முறைகேடு வடிகட்டி பயன்படுத்துவதற்காக ஒதுக்கப்பட்டது",
+ "right-abusefilter-modify": "முறைகேடு வடிகட்டியை மாற்றியமை",
+ "right-abusefilter-view": "முறைகேடு வடிகட்டிகளைப் பார்",
+ "right-abusefilter-log": "முறைகேடு பதிகையைப் பார்",
+ "right-abusefilter-log-detail": "விரிவான முறைகேடு பதிவேட்டுப் பதிவுகளைப் பார்",
+ "right-abusefilter-private": "தனியார் தரவை முறைகேடு பதிவேட்டில் பார்",
+ "right-abusefilter-revert": "குறிப்பிட்ட முறைகேடு வடிகட்டி செய்த அனைத்து மாற்றங்களையும் முன்னிலைக்கு மாற்று",
+ "right-abusefilter-view-private": "தனியாரது எனக் குறிக்கப்பெற்ற முறைகேடு வடிகட்டிகளைப் பார்",
+ "right-abusefilter-hide-log": "முறைகேடு பதிவில் உள்ள உள்ளீடுகளை மறை",
+ "right-abusefilter-hidden-log": "மறைக்கப்பட்டுள்ள முறைகேடு பதிகைகளைப் பார்",
+ "action-abusefilter-modify": "முறைகேடு வடிகட்டியை மாற்றியமை",
+ "action-abusefilter-view": "முறைகேடு வடிகட்டியைப் பார்",
+ "action-abusefilter-log": "முறைகேடுப் பதிவேட்டைப் பார்",
+ "action-abusefilter-log-detail": "விரிவான முறைகேடு பதிவேட்டுப் பதிவுகளைப் பார்",
+ "action-abusefilter-private": "தனியார் தரவை முறைகேடுப் பதிவேட்டில் பார்",
+ "action-abusefilter-modify-restricted": "முறைகேடு வடிகட்டிகளைக் கட்டுக்குளடங்கிய செயல்களால் மாற்று",
+ "action-abusefilter-revert": "குறிப்பிட்ட முறைகேடு வடிகட்டி செய்த அனைத்து மாற்றங்களையும் முன்னிலைப் படுத்து",
+ "abusefilter-log": "முறைகேடு வடிகட்டிப் பதிகை",
+ "abusefilter-log-search": "முறைகேட்டுப் பதிவேட்டைத் தேடு",
+ "abusefilter-log-search-user": "பயனர்:",
+ "abusefilter-log-search-filter": "வடிகட்டியின் அடையாள எண்:",
+ "abusefilter-log-search-title": "தலைப்பு:",
+ "abusefilter-log-search-wiki": "விக்கி:",
+ "abusefilter-log-search-submit": "தேடு",
+ "abusefilter-log-detailedentry-meta": "$1:செயல்பாடு \"$4\" ஐ $5 பக்கத்தின் மீது செயல்படுத்தியன் விளைவாக பயனர் $2 $3 -ஐத் {{GENDER:$9|தூண்டினார்}} , \nஎடுக்கப்பட்ட செயல் : $6;\nவடிகட்டி விளக்கம் : $7 ($8)",
+ "abusefilter-log-detailedentry-global": "அனைத்துக்குமான வடிகட்டி $1",
+ "abusefilter-log-detailedentry-local": "வடிகட்டி $1",
+ "abusefilter-log-detailslink": "விளக்கம்",
+ "abusefilter-log-diff": "வேறுபாடு",
+ "abusefilter-log-hidelink": "காணுந்தன்மையைச் சீரமை",
+ "abusefilter-log-details-legend": "பதிவு உள்ளிடுகை $1 இன் விரிவு",
+ "abusefilter-log-details-var": "மாறி",
+ "abusefilter-log-details-val": "மதிப்பு",
+ "abusefilter-log-details-vars": "செயலுக்கான வினைக்கூறுகள்",
+ "abusefilter-log-details-private": "தனிப்பட்ட தரவு",
+ "abusefilter-log-details-ip": "மூல இணைய வழங்கியரின் (IP) முகவரி",
+ "abusefilter-log-noactions": "ஒன்றுமில்லை",
+ "abusefilter-log-details-diff": "தொகுப்பில் செய்த மாற்றங்க்கள்",
+ "abusefilter-log-linkoncontribs": "முறைகேடுகள் பதிவேடு",
+ "abusefilter-log-linkoncontribs-text": "இப்பயனரின் முறைகேடுகள் பதிவேடு",
+ "abusefilter-log-hidden": "(நுழைவு மறைக்கப்பட்டுள்ளது)",
+ "abusefilter-log-cannot-see-details": "இப் பதிவின் விளக்கவிரிவைக் காண உங்களுக்கு அனுமதி இல்லை.",
+ "abusefilter-log-details-hidden": "பொதுவில் காட்டப்படாத பதிவு என்பதால் இதன் விரிவான குறிப்புகளை நீங்கள் பார்க்க இயலாது",
+ "abusefilter-log-hide-legend": "பதிவேடு உள்ளீட்டை மறை",
+ "abusefilter-log-hide-id": "பதிவின் நுழைவு அடையாளம்",
+ "abusefilter-log-hide-hidden": "பொதுப் பார்வையில் இருந்து இப்பதிவை மறை",
+ "abusefilter-log-hide-reason": "காரணம்:",
+ "abusefilter-log-hide-forbidden": "முறைகேட்டுப் பதிவேட்டு உள்ளிடுகைகளை மறைக்க உரிமை இல்லை",
+ "abusefilter-logentry-suppress": "\"[[$1]]\" இன் மறைப்பு",
+ "abusefilter-logentry-unsuppress": "\"[[$1]]\" இன் மறைப்பு நீக்கல்",
+ "abusefilter-management": "முறைகேட்டு வடிகட்டி மேலாண்மை",
+ "abusefilter-list": "எல்லா வடிகட்டிகளும்",
+ "abusefilter-list-id": "வடிகட்டி எண்",
+ "abusefilter-list-status": "நிலைமை",
+ "abusefilter-list-public": "பொது விளக்கம்",
+ "abusefilter-list-consequences": "முடிவுகள்",
+ "abusefilter-list-visibility": "காணப்படுகிறது",
+ "abusefilter-list-hitcount": "வந்துபார்த்தோர் எண்ணிக்கை",
+ "abusefilter-list-edit": "தொகு",
+ "abusefilter-list-details": "விளக்கம்",
+ "abusefilter-list-limit": "ஒரு பக்கத்துக்கான எண்ணிக்கை",
+ "abusefilter-list-lastmodified": "கடைசியாகத் திருத்தப்பட்டது",
+ "abusefilter-list-group": "வடிகட்டிக் குழு",
+ "abusefilter-hidden": "தனிப்பட்ட",
+ "abusefilter-unhidden": "பொதுவான",
+ "abusefilter-enabled": "பயன்பாட்டில் உள்ளது",
+ "abusefilter-deleted": "நீக்கப்பட்டது",
+ "abusefilter-disabled": "செயலிழக்கம் செய்யப்பட்டுள்ளது",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|பொருந்தும் தொகுப்பு|பொருந்தும் தொகுப்புகள்}}",
+ "abusefilter-new": "புது வடிகட்டியை உருவாக்கு",
+ "abusefilter-return": "விடிகட்டி மேலாண்மைக்கு திரும்பு",
+ "abusefilter-status-global": "எங்கும்",
+ "abusefilter-list-options": "விருப்பத்தேர்வுகள்",
+ "abusefilter-list-options-deleted": "நீக்கப்பட்ட வடிகட்டிகள்:",
+ "abusefilter-list-options-deleted-only": "நீக்கப்பட்ட வடிகட்டிகளை மட்டும் காட்டவும்",
+ "abusefilter-list-options-deleted-hide": "அழிக்கப்பட்ட வடிகட்டல்களை மறைக்கவும்",
+ "abusefilter-list-options-deleted-show": "அழிக்கப்பட்ட வடிகட்டல்களைச் சேர்த்துக் கொள்ளவும்",
+ "abusefilter-list-options-scope": "வடிக்கட்டிகளைக் காட்டுக",
+ "abusefilter-list-options-scope-local": "உள் விக்கி",
+ "abusefilter-list-options-scope-global": "உலக விதிகள்",
+ "abusefilter-list-options-disabled": "செயலிழக்கம் செய்யப்பட்ட வடிகட்டிகள்:",
+ "abusefilter-list-options-hidedisabled": "செயலிழக்கம் செய்யப்பட்ட வடிகட்டிகளை மறைக்கவும்",
+ "abusefilter-list-options-submit": "புதுப்பி",
+ "abusefilter-tools-submitexpr": "மதிப்பீடு செய்",
+ "abusefilter-tools-reautoconfirm": "தானாக உறுதிசெய்யப்பட்ட நிலைமையை திரும்பக்கொண்டுவரவும்",
+ "abusefilter-tools-reautoconfirm-user": "பயனர்:",
+ "abusefilter-tools-reautoconfirm-submit": "திரும்பவும் தானாக உறுதிசெய்",
+ "abusefilter-reautoconfirm-notallowed": "தானாக உறுதியளிக்கப்பட்ட நிலையை மீள்விக்க உங்களுக்கு அனுமதியில்லை.",
+ "abusefilter-reautoconfirm-done": "கணக்கின் தானாக உறுதியளிக்கப்பட்ட நிலை மீள்விக்கப்பட்டது.",
+ "abusefilter-edit-subtitle": "$1 வடிகட்டி தொகுக்கப்படுகிறது",
+ "abusefilter-edit-subtitle-new": "வடிகட்டியை உருவாக்குகிறது",
+ "abusefilter-edit-status-label": "புள்ளிவிவரங்கள்:",
+ "abusefilter-edit-new": "புதிய வடிகட்டி",
+ "abusefilter-edit-save": "வடிகட்டியைச் சேமிக்கவும்",
+ "abusefilter-edit-id": "வடிகட்டியின் அடையாள எண்:",
+ "abusefilter-edit-description": "விபரிப்பு:\n:''(அனைவரும் காணக்கூடியது)''",
+ "abusefilter-edit-group": "வடிகட்டிக் குழு:",
+ "abusefilter-edit-flags": "குறிப்புகள்:",
+ "abusefilter-edit-enabled": "இந்த வடிகட்டியை செயல் நிலையாக்கு",
+ "abusefilter-edit-deleted": "நீக்கப்பட்டதாக குறித்துக்கொள்ளவும்",
+ "abusefilter-edit-global": "உலக வடிகட்டி",
+ "abusefilter-edit-rules": "கட்டுப்பாடுகள்:",
+ "abusefilter-edit-notes": "குறிப்புக்கள்:",
+ "abusefilter-edit-consequences": "பொருந்திவந்தபோது செய்த செயல்கள்",
+ "abusefilter-edit-action-blockautopromote": "இப்பயனரின் தானாக உறுதிசெய்யப்பட்ட நிலையை இரத்து செய்.",
+ "abusefilter-edit-action-block": "இந்த பயனர் அல்லது ஐ.பி-ஐ தொகுக்க அனுமதிக்காதே",
+ "abusefilter-edit-action-tag": "தொகுப்பை பின்னர் மீள்பார்வை செய்யக் குறித்துக்கொள்",
+ "abusefilter-edit-throttle-count": "அனுமதிக்கப்பட வேண்டிய செயல்களின் எண்ணிக்கை:",
+ "abusefilter-edit-throttle-period": "கால நேரம்:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|வினாடி|வினாடிகள்}}",
+ "abusefilter-edit-warn-message": "எச்சரிக்கைக்காகப் பயன்படுத்துவதற்கான முறைமைச் செய்தி:",
+ "abusefilter-edit-warn-other": "மற்ற செய்தி",
+ "abusefilter-edit-warn-other-label": "மற்றச் செய்தியின் பக்கப் பெயர்:\n:''(மீடியாவிக்கி முன்னொட்டின்றி)''",
+ "abusefilter-edit-warn-actions": "செயல்கள்:",
+ "abusefilter-edit-warn-preview": "தேர்வு செய்த செய்தியின் முன்தோற்றம் காட்டு",
+ "abusefilter-edit-warn-edit": "தேர்வு செய்த செய்தியை உருவாக்கவும்/தொகுக்கவும்",
+ "abusefilter-edit-denied": "இந்த வடிகட்டியின் விவரங்களை நீங்கள் பார்க்க இயலாது, ஏனெனில் இது பொதுப் பார்வையில் இருந்து மறைக்கப்பட்டுள்ளது.",
+ "abusefilter-edit-main": "வடிகட்டி அளபுருக்கள்",
+ "abusefilter-edit-done-subtitle": "வடிகட்டி தொகுக்கப்பட்டது",
+ "abusefilter-edit-done": "வடிகட்டி $1-க்கான உங்கள் மாற்றங்களை நீங்கள் வெற்றிகரமாக சேமித்துள்ளீர்கள்.",
+ "abusefilter-edit-viewhistory": "இந்த வடிப்பான் வரலாற்றை காண்",
+ "abusefilter-edit-history": "வரலாறு:",
+ "abusefilter-edit-check": "தொடரமைப்பை சரிபார்க்கவும்",
+ "abusefilter-edit-badfilter": "நீங்கள் குறிப்பிட்ட வடிகட்டி இல்லை",
+ "abusefilter-edit-revert": "இந்த வடிப்பான் எடுத்த செயல்களை மாற்று",
+ "abusefilter-edit-tools": "கருவிகள்:",
+ "abusefilter-edit-test-link": "சமீபத்திய திருத்தங்களுக்கு எதிராக இந்த வடிகட்டியை சோதனை செய்",
+ "abusefilter-edit-export": "இந்த வடிப்பானை மற்றொரு விக்கிக்கு ஏற்றுமதி செய்",
+ "abusefilter-edit-syntaxok": "எந்த அமைப்பு இலக்கணப் பிழையும் இல்லை",
+ "abusefilter-edit-syntaxerr": "சொற்றொடரியல் பிழை கண்டுபிடிக்கப்பட்டது:$1",
+ "abusefilter-edit-notallowed": "முறைகேடு வடிகட்டிகளை உருவாக்க அல்லது திருத்த உங்களுக்கு அனுமதி இல்லை",
+ "abusefilter-edit-builder-select": "இடம்காட்டி உள்ள இடத்தில் சேர்க்க ஒரு தேர்வை தேர்வு செய்யவும்.",
+ "abusefilter-edit-builder-group-op-arithmetic": "கணிதக்குறியீடுகள்",
+ "abusefilter-edit-builder-op-arithmetic-addition": "கூட்டல் (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "கழித்தல் (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "பெருக்கல் (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "வகுத்தல் (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "மட்டு (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "ஆற்றல் (**)",
+ "abusefilter-edit-builder-group-op-comparison": "ஒத்துப்பார்க்கும் கணிதக்குறியீடுகள்",
+ "abusefilter-edit-builder-op-comparison-equal": "மிகச்சமமானது (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "சமமானதல்ல (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "இதற்கும் குறைவான (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "இதற்கும் அதிகமான (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "இதற்கும் குறைவான அல்லது சமமான (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "இதற்கும் அதிகமான அல்லது சமமான (<=)",
+ "abusefilter-edit-builder-group-op-bool": "பூலியன் வினைக்கூறுகள்",
+ "abusefilter-edit-builder-op-bool-not": "இல்லாதது (!)",
+ "abusefilter-edit-builder-op-bool-and": "இத்துடன் (&)",
+ "abusefilter-edit-builder-op-bool-or": "அல்லது (|)",
+ "abusefilter-edit-builder-group-misc": "மற்றவைகள்",
+ "abusefilter-edit-builder-misc-in": "சரம் (in) கொண்டுள்ளது",
+ "abusefilter-edit-builder-misc-like": "அமைப்பு பொருந்துகிறது",
+ "abusefilter-edit-builder-misc-irlike": "regex பொருத்தம், சிறியபெரிய எழுத்து வேறுபாடு பொருட்டன்று",
+ "abusefilter-edit-builder-misc-contains": "வலச்சரம் இடச்சரத்திலே உள்ளது",
+ "abusefilter-edit-builder-misc-stringlit": "சொற்றொடரின் எழுத்துக்கள் (\"\")",
+ "abusefilter-edit-builder-misc-tern": "முப்பக்க குறியீடுகள் (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "கட்டுப்பாட்டிற்குட்பட்டது ( X ஆக இருந்தால் Y அப்படியில்லையென்றால் Z )",
+ "abusefilter-edit-builder-group-funcs": "செயலாற்றிகள்",
+ "abusefilter-edit-builder-funcs-length": "சொற்றொடரின் நீளம் (length)",
+ "abusefilter-edit-builder-funcs-lcase": "சிற்றெழுத்தாக்கு (lcase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "குழப்பமான எழுத்துகளை சரிப்படுத்து (ccnorm)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "இருமுறை தொடர்ந்துவரும் எழுத்துக்களை நீக்கு (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "சிறப்பு எழுத்துக்கள் / மொத்த எழுத்துக்கள் (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "இயல்புநிலையாக்கு (norm)",
+ "abusefilter-edit-builder-funcs-count": "Y-என்னும் சொற்றொடரில் X-என்னும் சொற்றொடர் இத்தனை முறை காணப்படுகிறது (count)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "வெள்ளை இடைவெளிகளை நீக்கு (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "சிறப்பு எழுத்துக்களை நீக்கவும் (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "ஐ.பி. அதன் வரையறையில் உள்ளதா ? (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "பல சரக்கூறுகளைத் தேடுதற்கான சரம்",
+ "abusefilter-edit-builder-funcs-substr": "துணைச்சொற்றொடர் (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "சரத்தில் உள்ள துணைச்சரத்தின் இடம் (strpos)",
+ "abusefilter-edit-builder-funcs-set_var": "மாறியை (set_var) அமை",
+ "abusefilter-edit-builder-group-vars": "மாறிகள்",
+ "abusefilter-edit-builder-vars-accountname": "கணக்கின் பெயர் (கணக்குத் தொடக்கத்தின் போது)",
+ "abusefilter-edit-builder-vars-timestamp": "மாற்றத்திற்கான, யுனிக்சின் நேரமுத்திரை",
+ "abusefilter-edit-builder-vars-action": "செயல்",
+ "abusefilter-edit-builder-vars-addedlines": "தொகுக்கும் போது சேர்க்கப்பட்ட வரிகள்",
+ "abusefilter-edit-builder-vars-delta": "தொகுக்கும் போது ஏற்பட்ட அளவு மாற்றம்",
+ "abusefilter-edit-builder-vars-newsize": "புதிய பக்க அளவு",
+ "abusefilter-edit-builder-vars-oldsize": "பழைய பக்க அளவு",
+ "abusefilter-edit-builder-vars-removedlines": "தொகுக்கும் போது நீக்கப்பட்ட வரிகள்",
+ "abusefilter-edit-builder-vars-summary": "தொகுப்பின் சுருக்கம்/காரணம்",
+ "abusefilter-edit-builder-vars-article-id": "பக்கத்தின் அடையாளம்",
+ "abusefilter-edit-builder-vars-article-ns": "பக்கத்தின் பெயர்வெளி",
+ "abusefilter-edit-builder-vars-article-text": "பக்கத்தின் தலைப்பு (பெயர்வெளி இல்லாமல்)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "முழு பக்கத்தின் தலைப்பு",
+ "abusefilter-edit-builder-vars-article-views": "பக்க நோக்குகள்",
+ "abusefilter-edit-builder-vars-movedto-text": "நகர்த்தல் இலக்குப் பக்கத்தின் தலைப்பு",
+ "abusefilter-edit-builder-vars-user-editcount": "பயனரின் தொகுப்புக்களின் எண்ணிக்கை",
+ "abusefilter-edit-builder-vars-user-age": "பயனர் கணக்கின் வயது",
+ "abusefilter-edit-builder-vars-user-name": "பயனர் கணக்கின் பெயர்",
+ "abusefilter-edit-builder-vars-user-rights": "பயனர்களின் உரிமைகள்",
+ "abusefilter-edit-builder-vars-user-blocked": "பயனர் தடைசெய்யப்பட்டுள்ளாரா",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "மின்னஞ்சல் முகவரி உறுதிசெய்யப்பட்ட நேரம்",
+ "abusefilter-edit-builder-vars-recent-contributors": "இப்பக்கத்திற்குக் கடைசியாகப் பங்களித்த பத்து பயனர்கள்",
+ "abusefilter-edit-builder-vars-all-links": "புதிய உரையில் உள்ள எல்லா வெளியிணைப்புகள்",
+ "abusefilter-edit-builder-vars-added-links": "தொகுப்பில் சேர்க்கப்பட்ட எல்லா வெளியிணைப்புகள்",
+ "abusefilter-edit-builder-vars-removed-links": "தொகுப்பில் நீக்கப்பட்ட எல்லா வெளியிணைப்புகள்",
+ "abusefilter-edit-builder-vars-old-text": "தொகுப்புக்கு முன்னரான பழைய பக்க விக்கியுரை",
+ "abusefilter-edit-builder-vars-new-text": "தொகுப்புக்குப் பின்னரான புதிய பக்க விக்கியுரை",
+ "abusefilter-edit-builder-vars-restrictions-edit": "பக்கத்தின் காப்புநிலையைத் தொகு",
+ "abusefilter-filter-log": "அண்மைய வடிகட்டி மாற்றங்கள்",
+ "abusefilter-history": "முறைகேட்டு வடிகட்டி $1 உக்கான வரலாறு",
+ "abusefilter-history-foruser": "$1 ஆல் செய்த மாற்றங்கள்",
+ "abusefilter-history-hidden": "மறைக்கப்பட்டது",
+ "abusefilter-history-enabled": "பயன்பாட்டில் உள்ளது",
+ "abusefilter-history-global": "எங்கும்",
+ "abusefilter-history-timestamp": "நேரம்",
+ "abusefilter-history-user": "பயனர்",
+ "abusefilter-history-public": "பொது வடிகட்டி விளக்கம்",
+ "abusefilter-history-flags": "குறிப்புகள்",
+ "abusefilter-history-filter": "வடிகட்டி விதி",
+ "abusefilter-history-comments": "கருத்துரைகள்",
+ "abusefilter-history-actions": "செயல்கள்",
+ "abusefilter-history-backedit": "வடிகட்டி தொகுப்பிக்குத் திரும்பு",
+ "abusefilter-history-deleted": "நீக்கப்பட்டது",
+ "abusefilter-history-filterid": "வடிகட்டி",
+ "abusefilter-history-select-legend": "பண்பட்டத் தேடல்",
+ "abusefilter-history-select-user": "பயனர்:",
+ "abusefilter-history-select-submit": "பண்படுத்து",
+ "abusefilter-history-diff": "மாற்றங்கள்",
+ "abusefilter-action-tag": "குறிச்சொல்",
+ "abusefilter-action-throttle": "நெரித்துக",
+ "abusefilter-action-warn": "எச்சரி",
+ "abusefilter-action-block": "தடு",
+ "abusefilter-action-degroup": "குழுக்களில் இருந்து விலக்கு",
+ "abusefilter-action-rangeblock": "வீச்சுத் தடை",
+ "abusefilter-action-disallow": "செய்யுரிமை மறு",
+ "abusefilter-revert-periodstart": "தொடக்க நேரம்:",
+ "abusefilter-revert-periodend": "முடிவடைந்த நேரம்:",
+ "abusefilter-revert-search": "செயல்களைத் தேர்ந்தெடுக்கவும்",
+ "abusefilter-revert-filter": "வடிகட்டி:",
+ "abusefilter-revert-confirm": "உறுதிசெய்",
+ "abusefilter-revert-reasonfield": "காரணம்:",
+ "abusefilter-test-submit": "சோதனை",
+ "abusefilter-test-load": "ஏற்று",
+ "abusefilter-test-user": "பயனரால் செய்யப்பட்ட மாற்றங்கள்:",
+ "abusefilter-test-period-start": "இதற்குப் பிறகு செய்யப்பட்ட மாற்றங்கள்:",
+ "abusefilter-test-period-end": "இதற்கு முன்புச் செய்யப்பட்ட மாற்றங்கள்:",
+ "abusefilter-test-page": "இப்பக்கத்திற்குச் செய்யப்பட்ட மாற்றங்கள்:",
+ "abusefilter-changeslist-examine": "ஆய்வு செய்",
+ "abusefilter-examine": "தனியொரு மாற்றங்களை ஆராயவும்",
+ "abusefilter-examine-legend": "மாற்றங்களைத் தேர்ந்தெடுக்கவும்",
+ "abusefilter-examine-diff": "மாற்ற உரலி:",
+ "abusefilter-examine-user": "பயனர்:",
+ "abusefilter-examine-title": "பக்கத்தின் தலைப்பு:",
+ "abusefilter-examine-submit": "தேடுக",
+ "abusefilter-examine-test-button": "சோதனை வடிகட்டி",
+ "abusefilter-examine-match": "வடிகட்டியானது இந்த மாற்றத்துடன் ஒத்துப்போகிறது",
+ "abusefilter-examine-nomatch": "வடிகட்டியானது இந்த மாற்றத்துடன் ஒத்துவரவில்லை.",
+ "abusefilter-topnav": "'''முறைகேடு வடிகட்டி வழிசெலுத்துதல்",
+ "abusefilter-topnav-home": "முகப்பு",
+ "abusefilter-topnav-test": "தொகுதி சோதனை",
+ "abusefilter-topnav-examine": "கடந்த திருத்தங்ககளை ஆய்வு செய்",
+ "abusefilter-topnav-log": "முறைகேடு பதிவு",
+ "abusefilter-topnav-tools": "பிழை திருத்தும் கருவிகள்",
+ "abusefilter-topnav-import": "வடிகட்டியை இறக்குமதி செய்",
+ "abusefilter-log-name": "முறைகேடு வடிகட்டிப் பதிகை",
+ "abusefilter-log-noresults": "முடிவுகள் ஏதுமில்லை",
+ "abusefilter-diff-title": "பதிப்புகளுக்கிடையிலான வேறுபாடு",
+ "abusefilter-diff-item": "பொருள்",
+ "abusefilter-diff-info": "அடிப்படை விவரம்",
+ "abusefilter-diff-pattern": "வடிப்பான் நிபந்தனைகள்",
+ "abusefilter-diff-invalid": "கோரிய பதிப்புகளை எடுக்க இயலவில்லை",
+ "abusefilter-diff-backhistory": "வடிகட்டி வரலாற்றுக்கு திரும்பு",
+ "abusefilter-diff-prev": "முந்தைய மாற்றம்",
+ "abusefilter-diff-next": "புதிய மாற்றம்",
+ "abusefilter-import-submit": "தரவை இறக்குமதி செய்",
+ "abusefilter-group-default": "இயல்பிருப்பு"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/tay.json b/www/wiki/extensions/AbuseFilter/i18n/tay.json
new file mode 100644
index 00000000..87571d83
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/tay.json
@@ -0,0 +1,10 @@
+{
+ "@metadata": {
+ "authors": [
+ "Akamycoco"
+ ]
+ },
+ "abusefilter-log-search-submit": "Hhkangi’",
+ "abusefilter-list-edit": "Smr’zyut miru’",
+ "abusefilter-examine-submit": "Hhkangi’"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/tcy.json b/www/wiki/extensions/AbuseFilter/i18n/tcy.json
new file mode 100644
index 00000000..f5d54d14
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/tcy.json
@@ -0,0 +1,94 @@
+{
+ "@metadata": {
+ "authors": [
+ "VASANTH S.N."
+ ]
+ },
+ "abusefilter-log-search-user": "ಬಳಕೆದಾರೆರ್:",
+ "abusefilter-log-search-title": "ತರೆಬರವು:",
+ "abusefilter-log-search-wiki": "ವಿಕಿಲು:",
+ "abusefilter-log-search-submit": "ನಾಡ್‍ಲೆ",
+ "abusefilter-log-detailedentry-local": "ಅರಿಪೆ$1",
+ "abusefilter-log-detailslink": "ವಿವರೊ",
+ "abusefilter-log-diff": "ವ್ಯತ್ಯಾಸೊ",
+ "abusefilter-log-hidelink": "ನೋಟ ಹೊಂದಿಸಾಲೆ",
+ "abusefilter-log-details-val": "ಮೌಲ್ಯ",
+ "abusefilter-log-details-vars": "ಕಾರ್ಯದ ಪರಿಮಿತಿಲು",
+ "abusefilter-log-details-private": "ಖಾಸಗಿ ದತ್ತಾಂಶ",
+ "abusefilter-log-details-diff": "ಸಂಪಾದನೆಡ್ ಮಲ್ತಿನ ಬದಲಾವಣೆಲು",
+ "abusefilter-log-linkoncontribs": "ದುರುಪಯೋಗದ ಅನುಕ್ರಮಣಿಕೆ",
+ "abusefilter-log-hide-reason": "ಕಾರಣ:",
+ "abusefilter-list": "ಮಾತಾ ಅರಿಪೆಲು",
+ "abusefilter-list-id": "ಅರಿಪೆದ ಐಡಿ",
+ "abusefilter-list-status": "ಸ್ಥಿತಿ",
+ "abusefilter-list-public": "ಸಾರ್ವಜನಿಕ ವಿವರಣೆ",
+ "abusefilter-list-consequences": "ಪರಿಣಾಮಲು",
+ "abusefilter-list-visibility": "ಗೋಚರತೆ",
+ "abusefilter-list-edit": "ತಿದ್ದ್‘ಲೆ",
+ "abusefilter-list-details": "ವಿವರೊ",
+ "abusefilter-list-lastmodified": "ಕಡೆತ ಬದಲಾವಣೆ",
+ "abusefilter-list-group": "ಶೋಧಕ ಗುಂಪು",
+ "abusefilter-hidden": "ಸ್ವಂತ",
+ "abusefilter-unhidden": "ಸಾರ್ವಜನಿಕೊ",
+ "abusefilter-deleted": "ಮಾಜಾಯಿನ",
+ "abusefilter-disabled": "ನಿಷ್ಕ್ರಿಯ ಮಲ್ತಿನ",
+ "abusefilter-status-global": "ಜಾಗತಿಕ",
+ "abusefilter-list-options": "ಆಯ್ಕೆಲು",
+ "abusefilter-list-options-deleted": "ಮಾಜಾಯಿ ಅರಿಪೆಲು:",
+ "abusefilter-list-options-deleted-only": "ಮಾಜಾಯಿ ಅರಿಪೆಲೆನ್ ಮಾತ್ರಾ ತೋಜಾಲೆ",
+ "abusefilter-list-options-deleted-hide": "ಮಾಜಾಯಿ ಅರಿಪೆಲೆನ್ ದೆಂಗಾಲೆ",
+ "abusefilter-list-options-submit": "ಮಿತ್ತ್ ಏರಲೆ",
+ "abusefilter-tools-submitexpr": "ಮೌಲ್ಯ ನಿರ್ಣಯ ಮಲ್ಪುಲೆ",
+ "abusefilter-tools-reautoconfirm-user": "ಬಳಕೆದಾರೆರ್:",
+ "abusefilter-edit-status-label": "ಅಂಕಿ ಅಂಶೊಲು:",
+ "abusefilter-edit-new": "ಪೊಸ ಅರಿಪೆ",
+ "abusefilter-edit-save": "ಅರಿಪೆನ್ ಒರಿಪಾಲೆ",
+ "abusefilter-edit-id": "ಅರಿಪೆದ ಐಡಿ:",
+ "abusefilter-edit-group": "ಅರಿಪೆದ ಗುಂಪು:",
+ "abusefilter-edit-flags": "ನಿಶಾನೆಲು:",
+ "abusefilter-edit-global": "ಜಾಗತಿಕ ಅರಿಪೆ",
+ "abusefilter-edit-rules": "ನಿಬಂಧನೆಲು:",
+ "abusefilter-edit-notes": "ಟಿಪ್ಪಣಿಲು:",
+ "abusefilter-edit-warn-actions": "ಕ್ರಿಯೆಕ್ಕುಲು:",
+ "abusefilter-edit-history": "ಇತಿಹಾಸೊ:",
+ "abusefilter-edit-tools": "ಉಪಕರಣೊಲು:",
+ "abusefilter-edit-builder-op-arithmetic-addition": "ಸಂಕಲನ(+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "ವ್ಯವಕಲನ(-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "ಗುಣಾಕಾರ(*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "ಭಾಗಾಕಾರ(/)",
+ "abusefilter-edit-builder-op-comparison-equal": "ಸಮಾನ (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "ಸಮಾನವಲ್ಲ(!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "ಕಡಿಮೆ (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "ಹೆಚ್ಚು (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "ಕಡಿಮೆ ಅಥವಾ ಸರಿಸಮಾನ(<=)",
+ "abusefilter-edit-builder-op-bool-and": "ಬೊಕ್ಕ(&)",
+ "abusefilter-edit-builder-op-bool-or": "ಅಥವಾ(|)",
+ "abusefilter-edit-builder-group-misc": "ಇತರೆ",
+ "abusefilter-edit-builder-vars-action": "ಕ್ರಿಯೆಕ್ಕುಲು",
+ "abusefilter-edit-builder-vars-newsize": "ಪೊಸ ಪುಟೊದ ಅಳತೆ",
+ "abusefilter-edit-builder-vars-article-id": "ಪುಟೊದ ಐಡಿ",
+ "abusefilter-history-hidden": "ದೆಂಗಾನ",
+ "abusefilter-history-enabled": "ಶಕ್ತಗೊಳಿಸಾಯಿನ",
+ "abusefilter-history-global": "ಜಾಗತಿಕ",
+ "abusefilter-history-timestamp": "ಸಮಯೊ",
+ "abusefilter-history-user": "ಬಳಕೆದಾರೆರ್",
+ "abusefilter-history-flags": "ನಿಶಾನೆಲು",
+ "abusefilter-history-filter": "ಅರಿಪೆದ ನಿಯಮ",
+ "abusefilter-history-comments": "ಅಭಿಪ್ರಾಯೊಲು",
+ "abusefilter-history-filterid": "ಅರಿಪೆಲು",
+ "abusefilter-history-select-user": "ಬಳಕೆದಾರೆರ್:",
+ "abusefilter-history-diff": "ಬದಲಾವಣೆಲು",
+ "abusefilter-revert-filter": "ಅರಿಪೆಲು:",
+ "abusefilter-revert-confirm": "ಗಟ್ಟಿಮಲ್ಪುಲೆ",
+ "abusefilter-revert-reasonfield": "ಕಾರಣೊ:",
+ "abusefilter-test-submit": "ಪರೀಕ್ಷೆ",
+ "abusefilter-test-load": "ದಿಂಜಾಲೆ",
+ "abusefilter-examine-user": "ಬಳಕೆದಾರೆರ್:",
+ "abusefilter-examine-title": "ಪುಟೊದ ಪುದರ್",
+ "abusefilter-examine-submit": "ನಾಡ್‍ಲೆ",
+ "abusefilter-topnav-home": "ನಿಲೆ",
+ "abusefilter-topnav-log": "ದುರುಪಯೋಗದ ಅನುಕ್ರಮಣಿಕೆ",
+ "abusefilter-diff-info": "ಪುಟೊದ ಮಾಹಿತಿ",
+ "abusefilter-diff-prev": "ಪರ ಬದಲಾವಣೆ",
+ "abusefilter-diff-next": "ಪೊಸ ಬದಲಾವಣೆ"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/te.json b/www/wiki/extensions/AbuseFilter/i18n/te.json
new file mode 100644
index 00000000..c9557e22
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/te.json
@@ -0,0 +1,351 @@
+{
+ "@metadata": {
+ "authors": [
+ "Chaduvari",
+ "Kiranmayee",
+ "Ravichandra",
+ "Veeven",
+ "వైజాసత్య",
+ "Matma Rex"
+ ]
+ },
+ "abusefilter": "దుర్వినియోగ వడపోతల స్వరూపణం",
+ "abuselog": "దురుపయోగాల చర్యానివేదిక",
+ "abusefilter-mustbeeditor": "భద్రతా కారణాల దృష్ట్యా, దుర్వినియోగ వడపోతలను మార్చే హక్కున్న వాడుకరులు మాత్రమే ఈ ముఖాంతరాన్ని ఉపయోగించవచ్చు.",
+ "abusefilter-warning": "'''హెచ్చరిక''': ఈ చర్య హానికరమని ఆటోమాటిగ్గా గుర్తించబడింది.\nపసలేని మార్పుచేర్పులు వెంటనే రద్దు చెయ్యబడతాయి,\nకొట్టొచ్చినట్టుగా కనబడే తప్పులు చేసినా, పదేపదే పసలేని మార్పుచేర్పులు చేసినా.. మీ ఖాతా లేదా ఐపీ అడ్రసు నిషేధానికి దారితీయవచ్చు.\nఈ మార్పు సరైనదేనని మీరు నమ్మితే, మళ్ళీ సమర్పించండి.\nమీ చర్యను దుశ్చర్యగా భావించేందుకు దారితీసిన నియమం క్లుప్తంగా ఇది: $1",
+ "abusefilter-disallowed": "ఈ చర్య హానికరమని ఆటోమాటిగ్గా గుర్తించబడింది. అంచేత నిరాకరించాం.\nఒకవేళ మీ మార్పుచేర్పులు సరైనవని మీరు నమ్మితే, మీరు చెయ్యదలచిన దాని గురించి నిర్వాహకులెవరికైనా తెలియబరచండి.\nమీ చర్యను దుశ్చర్యగా భావించడానికి దారితీసిన నియమం క్లుప్తంగా ఇలా వివరిస్తోంది: $1",
+ "abusefilter-blocked-display": "ఈ చర్య హానికరమని ఆటోమాటిగ్గా గుర్తించబడింది. అంచేత దాన్ని చెయ్యకుండా మిమ్మల్ని నిరోధించాం.\nఅంతేకాక, {{SITENAME}} ను పరిరక్షించేందుకుగాను, మీ వాడుకరిఖాతా, దానికి సంబంధించిన ఐపీ అడ్రసుల ద్వారా మార్పుచేర్పులు చెయ్యకుండా నిరోధించాం.\nఒకవేళ ఇది పొరపాటున జరిగి ఉంటే, ఎవరైనా ఒక నిర్వాహకుని సంప్రదించండి.\nమీ చర్యను దుర్వినియోగంగా ఎత్తిచూపిన సదరు నియమం క్లుప్తంగా ఇలా చెబుతోంది: $1",
+ "abusefilter-degrouped": "ఈ చర్య హానికరమని ఆటోమాటిగ్గా గుర్తించబడింది.\nపర్యవసానంగా, దాన్ని నిరాకరించాం. అంతేకాక, మీ ఖాతా చౌర్యానికి గురైందని అనుమానిస్తున్నాం కాబట్టి, దానికి ఉన్న అన్ని హక్కులనూ వెనక్కి తీసేసుకున్నాం.\nఒకవేళ ఇది పొరపాటున జరిగిందని మీరు నమ్మితే, ఎవరైనా ఒక అధికారిని సంప్రదించి, వివరణ ఇవ్వండి. మీ హక్కులను పునరుద్ధరించవచ్చు.\nమీ చర్యను దుర్వినియోగంగా ఎత్తిచూపిన సదరు నియమం క్లుప్తంగా ఇలా చెబుతోంది: $1",
+ "abusefilter-autopromote-blocked": "ఈ చర్య హానికరమని ఆటోమాటిగ్గా గుర్తించబడటంతో, దాన్ని నిరాకరించాం.\nఅంతేకాక, అనుభవం ఉన్న పాత ఖాతాలకు మామూలుగా ఇచ్చే అనుమతులను భద్రత దృష్ట్యా మీ ఖాతా నుండి తాత్కాలికంగా వెనక్కి తీసుకున్నాం.\nమీ చర్యను దుర్వినియోగంగా ఎత్తిచూపిన సదరు నియమం క్లుప్తంగా ఇలా చెబుతోంది: $1",
+ "abusefilter-blocker": "దురుపయోగాల జల్లెడ",
+ "abusefilter-blockreason": "దుర్వినియోగపు వడపోతకం ఆటోమాటిగ్గా నిరోధించింది.\nసంబంధిత నియమపు క్లుప్త వివరణ: $1",
+ "abusefilter-degroupreason": "దుర్వినియోగ వడపోతకం ఆటోమాటిగ్గా హక్కులను వెనక్కి లాగేసుకుంది.\nనియమం యొక్క వివరణ: $1",
+ "abusefilter-accountreserved": "ఈ ఖాతా పేరుని దుర్వినియోగ వడపోత వినియోగానికై ప్రత్యేకించారు.",
+ "right-abusefilter-modify": "దుర్వినియోగ వడపోతలను మార్చగలగడం",
+ "right-abusefilter-view": "దుర్వినియోగ వడపోతలని చూడగలగడం",
+ "right-abusefilter-log": "దుర్వినియోగాల చిట్టాని చూడగలగడం",
+ "right-abusefilter-log-detail": "దుర్వినియోగాల చిట్టా యొక్క వివరణాత్మక పద్దులను చూడగలగడం",
+ "right-abusefilter-private": "దుర్వినియోగాల చిట్టాలోని అంతరంగిక భోగట్టాని చూడగలగడం",
+ "right-abusefilter-modify-restricted": "నియంత్రిత చర్యలతో కూడిన దుర్వినియోగ వడపోతలను మార్చగలగడం",
+ "right-abusefilter-revert": "ఒక నిర్దిష్ట దుశ్చర్య వడపోత యొక్క అన్ని మార్పులని తిప్పికొట్టడం",
+ "right-abusefilter-view-private": "అంతరంగికం అని గుర్తించిన దుర్వినియోగ వడపోతలను చూడగలగడం",
+ "right-abusefilter-hide-log": "దుర్వినియోగ చిట్టా లోని పద్దులను దాచగలగడం",
+ "right-abusefilter-hidden-log": "దాచివున్న దుర్వినియోగ చిట్టా పద్దులను చూడగలగడం",
+ "action-abusefilter-modify": "దుర్వినియోగ వడపోతలను మార్చడానికి",
+ "action-abusefilter-view": "దుర్వినియోగ వడపోతలను చూడడానికి",
+ "action-abusefilter-log": "దుర్వినియోగాల చిట్టాని చూడడానికి",
+ "action-abusefilter-log-detail": "వివరణాత్మకమైన దుర్వినియోగాల చిట్టా పద్దులను చూడడానికి",
+ "action-abusefilter-private": "దుర్వినియోగాల చిట్టాలో అంతరంగిక భోగట్టాని చూడడానికి",
+ "action-abusefilter-modify-restricted": "నియంత్రిత చర్యలతో కూడిన దుర్వినియోగ వడపోతలను మార్చడానికి",
+ "action-abusefilter-revert": "ఒక నిర్దిష్ట దుశ్చర్య వడపోత యొక్క అన్ని మార్పులని తిప్పికొట్టే",
+ "action-abusefilter-view-private": "అంతరంగికం అని గుర్తించిన దుర్వినియోగ వడపోతలను చూడడానికి",
+ "abusefilter-log": "దుర్వినియోగ వడపోతల చిట్టా",
+ "abusefilter-log-summary": "ఈ చిట్టా దుర్వినియోగ వడపోతలలో చిక్కుకున్న అన్ని చర్యల జాబితాని చూపిస్తుంది.",
+ "abusefilter-log-search": "దుర్వినియోగాల చిట్టా అన్వేషణ",
+ "abusefilter-log-search-user": "వాడుకరి:",
+ "abusefilter-log-search-filter": "వడపోత ID:",
+ "abusefilter-log-search-title": "శీర్షిక:",
+ "abusefilter-log-search-wiki": "వికీ:",
+ "abusefilter-log-search-submit": "వెతుకు",
+ "abusefilter-log-entry": "$1: $4లో చర్య \"$3\"ని చెయ్యడం ద్వారా $2 ఒక దుర్వినియోగ వడపోతని కదిలించారు.\nతీసుకున్న చర్య: $5;\nవడపోత వివరణ: $6",
+ "abusefilter-log-entry-withdiff": "$1: $2 $4 లో \"$3\" పని చేసి, దుశ్చర్య వడపోతను ప్రేరేపించారు.\nతీసుకున్న చర్య: $5;\nవడపోత వివరం: $6 ($7)",
+ "abusefilter-log-detailedentry-meta": "↓ $1: $2, $3 ను ప్రయోగించారు. దాంతో $5 పై \"$4\" చర్య జరిగింది.\nజరిగిన చర్యలు: $6;\nవడపోతకం వివరణ: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "సార్వత్రిక వడపోత $1",
+ "abusefilter-log-detailedentry-local": "వడపోత $1",
+ "abusefilter-log-detailslink": "వివరాలు",
+ "abusefilter-log-diff": "తేడాలు",
+ "abusefilter-log-hidelink": "దృశ్యతను సవరించండి",
+ "abusefilter-log-details-legend": "చిట్టా పద్దు $1కి వివరాలు",
+ "abusefilter-log-details-var": "చరరాశి",
+ "abusefilter-log-details-val": "విలువ",
+ "abusefilter-log-details-vars": "చర్య పరామితులు",
+ "abusefilter-log-details-private": "అంతరంగిక భోగట్టా",
+ "abusefilter-log-details-ip": "ఉద్భవించిన ఐ.పీ.చిరునామా",
+ "abusefilter-log-noactions": "ఏమీలేవు",
+ "abusefilter-log-details-diff": "దిద్దుబాటులో చేసిన మార్పులు",
+ "abusefilter-log-linkoncontribs": "దుర్వినియోగాల చిట్టా",
+ "abusefilter-log-linkoncontribs-text": "ఈ వాడుకరి యొక్క దుర్వినియోగాల చిట్టా",
+ "abusefilter-log-hidden": "(పద్దుని దాచారు)",
+ "abusefilter-log-hidden-implicit": "(కూర్పును తొలగించారు కాబట్టి, అది దాచబడింది)",
+ "abusefilter-log-cannot-see-details": "ఈ ఎంట్రీ వివరాలు చూసే అనుమతి మీకు లేదు.",
+ "abusefilter-log-details-hidden": "ఈ పద్దు యొక్క వివరాలని మీరు చూడలేరు, ఎందుకంటే దీన్ని బహిరంగ వీక్షణం నుండి దాచేసారు.",
+ "abusefilter-log-hide-legend": "చిట్టా పద్దుని దాచండి",
+ "abusefilter-log-hide-id": "చిట్టా పద్దు ID:",
+ "abusefilter-log-hide-hidden": "బహిరంగ వీక్షణం నుండి ఈ పద్దుని దాచు",
+ "abusefilter-log-hide-reason": "కారణం:",
+ "abusefilter-log-hide-forbidden": "దుర్వినియోగ చిట్టా పద్దులను దాచే అనుమతి మీకు లేదు.",
+ "abusefilter-logentry-suppress": "\"[[$1]]\"ని దాచారు",
+ "abusefilter-logentry-unsuppress": "\"[[$1]]\"ని చూపించారు",
+ "logentry-abusefilter-hit": "$1, పేజీ $3 లో \"$5\" పని చేసి, $4 ను ప్రేరేపించారు. తీసుకున్న చర్య: $6 ($7)",
+ "abusefilter-management": "దుర్వినియోగ వడపోతల నిర్వహణ",
+ "abusefilter-list": "అన్ని వడపోతలు",
+ "abusefilter-list-id": "వడపోత ID",
+ "abusefilter-list-status": "స్థితి",
+ "abusefilter-list-public": "బహిరంగ వివరణ",
+ "abusefilter-list-consequences": "పరిణామాలు",
+ "abusefilter-list-visibility": "దృశ్యత",
+ "abusefilter-list-hitcount": "హిట్ల లెక్క",
+ "abusefilter-list-edit": "మార్చు",
+ "abusefilter-list-details": "వివరాలు",
+ "abusefilter-list-limit": "పుటకి అంశాల సంఖ్య:",
+ "abusefilter-list-lastmodified": "చివరి మార్పు",
+ "abusefilter-list-group": "వడపోత గుంపు",
+ "abusefilter-hidden": "అంతరంగికం",
+ "abusefilter-unhidden": "బహిరంగం",
+ "abusefilter-enabled": "సచేతనం",
+ "abusefilter-deleted": "తొలగించారు",
+ "abusefilter-disabled": "అచేతనం",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|హిట్టు|హిట్లు}}",
+ "abusefilter-new": "కొత్త జల్లెడని సృష్టించు",
+ "abusefilter-return": "తిరిగి వడపోత నిర్వహణకి",
+ "abusefilter-status-global": "సార్వత్రికం",
+ "abusefilter-list-options": "ఎంపికలు",
+ "abusefilter-list-options-deleted": "తొలగించిన వడపోతలు:",
+ "abusefilter-list-options-deleted-only": "తొలగించిన వడపోతలను మాత్రమే చూపించు",
+ "abusefilter-list-options-deleted-hide": "తొలగించిన వడపోతలను దాచు",
+ "abusefilter-list-options-deleted-show": "తొలగించిన వడపోతలను చూపించు",
+ "abusefilter-list-options-scope": "వడపోతలను చూపించు:",
+ "abusefilter-list-options-scope-local": "స్థానిక నియమాలు మాత్రమే",
+ "abusefilter-list-options-scope-global": "సార్వత్రిక నియమాలు మాత్రమే",
+ "abusefilter-list-options-scope-all": "స్థానిక, సార్వత్రిక నియమాలు",
+ "abusefilter-list-options-disabled": "అచేతన వడపోతలు:",
+ "abusefilter-list-options-hidedisabled": "అచేతన వడపోతలను దాచు",
+ "abusefilter-list-options-submit": "తాజాకరించు",
+ "abusefilter-tools-text": "దుర్వినియోగ వడపోతకాలను తయారుచెయ్యడంలోను, డీబగ్గింగులోనూ ఉపయోగపడగల పరికరాలు కొన్నింటిని చూడండి.",
+ "abusefilter-tools-expr": "పదబంధపు పరీక్షకం",
+ "abusefilter-tools-submitexpr": "పరీక్షించు",
+ "abusefilter-tools-reautoconfirm-user": "వాడుకరి:",
+ "abusefilter-status": "గత $1 {{PLURAL:$1|చర్య|చర్యల}}లో $2 ($3%) కండిషన్ల పరిమితి అయిన $4ను {{PLURAL:$2|చేరుకుంది|చేరుకున్నాయి}}, మరొక $5 ($6%) ప్రస్తుతం చేతనంగా ఉన్న వడపోతలలో ఒకదానితో {{PLURAL:$5|సరిపోలుతోంది|సరిపోలుతున్నాయి}}.",
+ "abusefilter-edit": "దుశ్చర్య వడపోతను మారుస్తున్నారు",
+ "abusefilter-edit-subtitle": "$1 జల్లెడను దిద్దుతున్నారు",
+ "abusefilter-edit-subtitle-new": "వడపోతను సృష్టిస్తున్నారు",
+ "abusefilter-edit-oldwarning": "<strong>ఈ వడపోత యొక్క పాతకూర్పును మారుస్తున్నారు.\nఇచ్చిన గణాంకాలు మాత్రం దీని సరికొత్త కూర్పుకు సంబంధించినవి.\nమీరు మీ మార్పులను భద్రపరిస్తే, సదరు కూర్పు తరువాత జరిగిన మార్పులన్నీ తిరగరాయబడతాయి.</strong> &bull;\n[[Special:AbuseFilter/history/$2|ఈ వడపోత చరితానికి తిరిగివెళ్ళు]].",
+ "abusefilter-edit-status-label": "గణాంకాలు:",
+ "abusefilter-edit-status": "గత $1 {{PLURAL:$1|చర్యలో|చర్యలలో}}, ఈ వడపోత $2 సార్లు సరిపోలింది ($3%).",
+ "abusefilter-edit-status-profile": "గత $1 {{PLURAL:$1|చర్యలో|చర్యలలో}}, ఈ వడపోత $2 సార్లు సరిపోలింది ($3%).\nసగటున అది నడిచిన సమయం $4 ms, అది నిబంధనల పరిమితిలో $5 {{PLURAL:$5|నిబంధనను|నిబంధనలను}} వినియోగిస్తుంది.",
+ "abusefilter-edit-new": "కొత్త జల్లెడ",
+ "abusefilter-edit-save": "జల్లెడ భద్రపరచు",
+ "abusefilter-edit-id": "వడపోత ID:",
+ "abusefilter-edit-description": "వివరణ:\n:''(బహిరంగంగా కనిపిస్తుంది)''",
+ "abusefilter-edit-group": "వడపోత గుంపు:",
+ "abusefilter-edit-flags": "పతాకలు:",
+ "abusefilter-edit-enabled": "ఈ వడపోతని చేతనం చేయి",
+ "abusefilter-edit-deleted": "తొలగించినట్లుగా గుర్తించు",
+ "abusefilter-edit-hidden": "ఈ వడపోత యొక్క వివరాలని బహిరంగపరచకుండా దాచు",
+ "abusefilter-edit-global": "సార్వత్రిక వడపోత",
+ "abusefilter-edit-rules": "నిబంధనలు:",
+ "abusefilter-edit-notes": "గమనికలు:",
+ "abusefilter-edit-lastmod": "వడపోత చివరి మార్పు:",
+ "abusefilter-edit-lastmod-text": "$1న $2చే",
+ "abusefilter-edit-hitcount": "జల్లెడ హిట్లు:",
+ "abusefilter-edit-consequences": "జోడి కుదిరినప్పుడు తీసుకోవాల్సిన చర్యలు",
+ "abusefilter-edit-action-warn": "వాడుకరికి ఒక హెచ్చరిక చేసాక, ఈ చర్యలను ప్రేరేపించు",
+ "abusefilter-edit-action-disallow": "వాడుకరి చేసే ఈ చర్యను నిరాకరించు",
+ "abusefilter-edit-action-degroup": "వాడుకరిని ముఖ్య అనుమతుల గుంపులన్నిటి నుండి తీసివెయ్యి",
+ "abusefilter-edit-action-block": "ఈ వాడుకరిని/ఐపీ చిరునామాను దిద్దుబాట్లు చేయకుండా నిషేధించు",
+ "abusefilter-edit-action-tag": "ఈ మార్పును సమీక్షార్థం గుర్తు పెట్టు",
+ "abusefilter-edit-throttle-count": "అనుమతించాల్సిన చర్యల సంఖ్య:",
+ "abusefilter-edit-throttle-period": "కాల వ్యవధి:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|క్షణం|క్షణాలు}}",
+ "abusefilter-edit-warn-message": "హెచ్చరికకై ఉపయోగించాల్సిన వ్యవస్థా సందేశం:",
+ "abusefilter-edit-warn-other": "ఇతర సందేశం",
+ "abusefilter-edit-warn-other-label": "ఇతర సందేశం యొక్క పేజీ పేరు:\n:''(మీడియావికీ ఉపసర్గ లేకుండా)''",
+ "abusefilter-edit-warn-actions": "చర్యలు:",
+ "abusefilter-edit-warn-preview": "ఎంచుకున్న సందేశాన్ని మునుజూడండి",
+ "abusefilter-edit-warn-edit": "ఎంచుకున్న సందేశాన్ని సృష్టించండి/మార్చండి",
+ "abusefilter-edit-tag-tag": "వర్తింపజేయాల్సిన [[Special:Tags|ట్యాగులు]] (పంక్తికి ఒకటి చొప్పున):",
+ "abusefilter-edit-denied": "ఈ వడపోత వివరాలను మీరు చూడలేరు. ఎందుకంటే దీన్ని బహిరంగ వీక్షణం నుండి దాచేసారు.",
+ "abusefilter-edit-main": "వడపోత పరామితులు",
+ "abusefilter-edit-done-subtitle": "వడపోతని మార్చారు",
+ "abusefilter-edit-done": "[[Special:AbuseFilter/$1|వడపోత $3]] లో [[Special:AbuseFilter/history/$1/diff/prev/$2|మీరు చేసిన మార్పులను]] భద్రపరచాం.",
+ "abusefilter-edit-badsyntax": "మీరిచ్చిన వడపోతలో ఓ సింటాక్స్ దోషం ఉంది.\nపార్సరు నుంచి వచ్చిన ఔట్‍పుట్ ఇది: <pre>$1</pre>",
+ "abusefilter-edit-restricted": "ఈ వడపోతను మీరు మార్చలేరు. ఎంచేతంటే, అందులో ఒకటో, మరిన్నో నిరోధిత చర్యలున్నాయి.\nనిరోధిత చర్యలకు అనుమతులు కలిగిన వాడుకరిని అడిగి, సదరు మార్పును చేయించుకోండి.",
+ "abusefilter-edit-viewhistory": "ఈ వడపోత యొక్క చరిత్రని చూడండి",
+ "abusefilter-edit-history": "చరిత్ర:",
+ "abusefilter-edit-check": "సింటాక్సును సరిచూసుకోండి",
+ "abusefilter-edit-badfilter": "మీరు పేర్కొన్న వడపోత లేనే లేదు",
+ "abusefilter-edit-revert": "ఈ వడపోత చేసిన మార్పులను వెనక్కి తీసుకెళ్ళు",
+ "abusefilter-edit-tools": "పనిముట్లు:",
+ "abusefilter-edit-test-link": "ఇటీవలి మార్పులపై ఈ వడపోతని పరీక్షించు",
+ "abusefilter-edit-export": "ఈ వడపోతని వేరే వికీలోనికి ఎగుమతించు",
+ "abusefilter-edit-syntaxok": "సింటాక్సు దోషాలేమీ లేవు.",
+ "abusefilter-edit-syntaxerr": "సింటాక్సు దోషం కనబడింది: $1",
+ "abusefilter-edit-bad-tags": "మీరిచ్చిన ట్యాగుల్లో ఒకటిగాని, మరిన్నిగానీ చెల్లనివి.\nట్యాగులు చిన్నవిగాను, స్పెషలు కారెక్టర్లేమీ లేకుండానూ ఉండాలి.",
+ "abusefilter-edit-notallowed": "దుర్వినియోగ వడపోతలను సృష్టించడానికి లేదా మార్చడానికి మీకు అనుమతి లేదు",
+ "abusefilter-edit-notallowed-global": "సార్వత్రిక దుశ్చర్య వడపోతలను సృష్టించేందుకు, మార్చేందుకూ మీకు అనుమతులు లేవు",
+ "abusefilter-edit-notallowed-global-custom-msg": "సార్వత్రిక వడపోతలు ఐచ్ఛిక హెచ్చరిక సందేశాలకు అనుకూలించవు",
+ "abusefilter-edit-builder-select": "కర్సరు ఉన్న స్థలంలో చేర్చాల్సిన వికల్పాన్ని ఎంచుకోండి",
+ "abusefilter-edit-builder-group-op-arithmetic": "అంకగణిత కారకాలు",
+ "abusefilter-edit-builder-op-arithmetic-addition": "కూడిక (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "తీసివేత (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "గుణకారం (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "భాగాహారం (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Modulo (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "వర్గం (**)",
+ "abusefilter-edit-builder-group-op-comparison": "పోలిక కారకాలు",
+ "abusefilter-edit-builder-op-comparison-equal": "సరిసమానం (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "సరిసమానం కాదు (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "కంటే తక్కువ (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "కంటే ఎక్కువ (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "తక్కువ లేదా సరిసమానం (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "ఎక్కవ లేదా సరిసమానం (>=)",
+ "abusefilter-edit-builder-group-op-bool": "బూలియన్ ఆపరేటర్లు",
+ "abusefilter-edit-builder-op-bool-not": "Not (!)",
+ "abusefilter-edit-builder-op-bool-and": "మరియు (&)",
+ "abusefilter-edit-builder-op-bool-or": "లేదా (|)",
+ "abusefilter-edit-builder-group-misc": "ఇతరత్రా",
+ "abusefilter-edit-builder-misc-in": "స్ట్రింగులో ఇమిడి ఉన్న (in)",
+ "abusefilter-edit-builder-misc-like": "ప్యాటర్నుతో సరిపోలిన (like)",
+ "abusefilter-edit-builder-misc-rlike": "regex తో సరిపోలిన (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "regex తో సరిపోలి, కేస్ ఇన్సెన్సిటివ్ అయిన (irlike)",
+ "abusefilter-edit-builder-misc-contains": "కుడి స్ట్రింగు ఎడమ స్ట్రింగులో ఇమిడి ఉన్న (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "స్ట్రింగు లిటరల్ (\"\")",
+ "abusefilter-edit-builder-misc-tern": "టెర్నరీ ఆపరేటరు (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "షరతుతో కూడిన (if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "ప్రమేయాలు",
+ "abusefilter-edit-builder-funcs-length": "పదబంధపు పొడవు (length)",
+ "abusefilter-edit-builder-funcs-lcase": "లోవరు కేసుకు (lcase)",
+ "abusefilter-edit-builder-funcs-ucase": "అప్పరు కేసుకు (ucase)",
+ "abusefilter-edit-builder-funcs-specialratio": "ప్రత్యేక అక్షరాలు / మొత్తం అక్షరాలు (specialratio)",
+ "abusefilter-edit-builder-funcs-count": "స్ట్రింగ్ Y లో స్ట్రింగ్ X కనబడే తడవలు (లెక్కింపు)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "ఖాళీలను తొలగించు (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "ప్రత్యేక అక్షరాలను తొలగించు (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "ఐపీ హద్దుల్లోనే ఉందా? (ip_in_range)",
+ "abusefilter-edit-builder-funcs-set_var": "చరరాశిని సెట్ చెయ్యి (set_var)",
+ "abusefilter-edit-builder-group-vars": "చరరాశులు",
+ "abusefilter-edit-builder-vars-accountname": "ఖాతా పేరు (ఖాతాని సృష్టించేప్పుడు)",
+ "abusefilter-edit-builder-vars-timestamp": "మార్పు యొక్క యూనిక్స్ కాలముద్ర",
+ "abusefilter-edit-builder-vars-action": "చర్య",
+ "abusefilter-edit-builder-vars-addedlines": "మార్పులో చేర్చిన పంక్తులు",
+ "abusefilter-edit-builder-vars-delta": "మార్పులో మారిన పరిమాణం",
+ "abusefilter-edit-builder-vars-diff": "సవరణ ద్వారా జరిగిన అన్ని మార్పులు",
+ "abusefilter-edit-builder-vars-newsize": "కొత్త పేజీ పరిమాణం",
+ "abusefilter-edit-builder-vars-oldsize": "పాత పేజీ పరిమాణం",
+ "abusefilter-edit-builder-vars-removedlines": "మార్పులో తొలగించిన పంక్తులు",
+ "abusefilter-edit-builder-vars-summary": "మార్పు సంగ్రహం/కారణం",
+ "abusefilter-edit-builder-vars-article-id": "పుట ID",
+ "abusefilter-edit-builder-vars-article-ns": "పేజీ పేరుబరి",
+ "abusefilter-edit-builder-vars-article-text": "పేజీ శీర్షిక (పేరుబరి లేకుండా)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "పేజీ పూర్తి శీర్షిక",
+ "abusefilter-edit-builder-vars-article-views": "పేజీ వీక్షణలు",
+ "abusefilter-edit-builder-vars-movedfrom-id": "తరలింపు మూల పుట యొక్క పుట ID",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "తరలింపు మూల పుట యొక్క పేరుబరి",
+ "abusefilter-edit-builder-vars-movedfrom-text": "తరలింపు మూల పుట యొక్క శీర్షిక",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "తరలింపు మూల పుట యొక్క పూర్తి శీర్షిక",
+ "abusefilter-edit-builder-vars-movedto-id": "తరలింపు గమ్యస్థాన పుట యొక్క పుట ID",
+ "abusefilter-edit-builder-vars-movedto-ns": "తరలింపు గమ్యస్థాన పుట యొక్క పేరుబరి",
+ "abusefilter-edit-builder-vars-movedto-text": "తరలింపు గమ్యస్థాన పేజీ యొక్క శీర్షిక",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "తరలింపు గమ్యస్థాన పేజీ యొక్క పూర్తి శీర్షిక",
+ "abusefilter-edit-builder-vars-user-editcount": "వాడుకరి యొక్క మార్పుల సంఖ్య",
+ "abusefilter-edit-builder-vars-user-age": "వాడుకరి ఖాతా యొక్క వయసు",
+ "abusefilter-edit-builder-vars-user-name": "వాడుకరి ఖాతా యొక్క పేరు",
+ "abusefilter-edit-builder-vars-user-groups": "వాడుకరి ఉన్న (అవ్యక్తమైన వాటితో సహా) గుంపులు",
+ "abusefilter-edit-builder-vars-user-rights": "వాడుకరి హక్కులు",
+ "abusefilter-edit-builder-vars-user-blocked": "వాడుకరి నిరోధించబడి ఉన్నారా",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "ఈమెయిలు చిరునామాని నిర్ధారించిన సమయం",
+ "abusefilter-edit-builder-vars-recent-contributors": "ఈ పుటకి తోడ్పడిన చివరి పదుగురు వాడుకరులు",
+ "abusefilter-edit-builder-vars-first-contributor": "ఈ పేజీలో రాసిన మొట్టమొదటి వాడుకరి",
+ "abusefilter-edit-builder-vars-all-links": "కొత్త పాఠ్యం లోని అన్ని బయటి లంకెలు",
+ "abusefilter-edit-builder-vars-added-links": "మార్పులో చేర్చిన అన్ని బయటి లంకెలు",
+ "abusefilter-edit-builder-vars-removed-links": "మార్పులో తొలగించిన అన్ని బయటి లంకెలు",
+ "abusefilter-edit-builder-vars-old-text": "పాత పేజీ యొక్క వికీపాఠ్యం, మార్పుకి ముందు",
+ "abusefilter-edit-builder-vars-new-text": "కొత్త పేజీ యొక్క వికీపాఠ్యం, మార్పు తర్వాత",
+ "abusefilter-edit-builder-vars-new-text-stripped": "కొత్త పుట పాఠ్యం, ఏదైనా మార్కప్ ఉంటే తీసివేసి",
+ "abusefilter-edit-builder-vars-restrictions-edit": "పేజీ యొక్క మార్పుల సంరక్షణా స్థాయి",
+ "abusefilter-edit-builder-vars-restrictions-move": "పేజీ యొక్క తరలింపు సంరక్షణా స్థాయి",
+ "abusefilter-edit-builder-vars-restrictions-create": "పేజీకి రక్షణా వలయాన్ని సృష్టించండి",
+ "abusefilter-edit-builder-vars-old-text-stripped": "పాత పుట పాఠ్యం, ఏదైనా మార్కప్ ఉంటే తీసివేసి",
+ "abusefilter-edit-builder-vars-old-links": "ఈ పేజీలోని లంకెలు, మార్పుకి ముందు",
+ "abusefilter-edit-builder-vars-minor-edit": "మార్పు చిన్న మార్పుగా గుర్తించబడినదా లేదా",
+ "abusefilter-edit-builder-vars-file-sha1": "దస్త్రం యొక్క SHA1 సంగ్రహం",
+ "abusefilter-edit-builder-vars-file-size": "దస్త్రం పరిమాణం, బైట్లలో",
+ "abusefilter-edit-builder-vars-file-width": "దస్త్రం వెడల్పు, పిక్సెళ్ళలో",
+ "abusefilter-edit-builder-vars-file-height": "దస్త్రం ఎత్తు, పిక్సెళ్ళలో",
+ "abusefilter-filter-log": "ఇటీవలి వడపోతల మార్పులు",
+ "abusefilter-history": "దుర్వినియోగ వడపోత #$1 యొక్క మార్పుల చరిత్ర",
+ "abusefilter-history-foruser": "$1 యొక్క మార్పులు",
+ "abusefilter-history-hidden": "దాచినది",
+ "abusefilter-history-enabled": "చేతనమైంది",
+ "abusefilter-history-global": "సార్వత్రిక",
+ "abusefilter-history-timestamp": "సమయం",
+ "abusefilter-history-user": "వాడుకరి",
+ "abusefilter-history-public": "వడపోత బహిరంగ వివరణ",
+ "abusefilter-history-flags": "పతాకలు",
+ "abusefilter-history-filter": "వడపోత నియమం",
+ "abusefilter-history-comments": "వ్యాఖ్యలు",
+ "abusefilter-history-actions": "చర్యలు",
+ "abusefilter-history-backedit": "తిరిగి వడపోత సవరణకు",
+ "abusefilter-history-deleted": "తొలగించారు",
+ "abusefilter-history-filterid": "వడపోత",
+ "abusefilter-history-select-legend": "అన్వేషణని మెరుగుపరచండి",
+ "abusefilter-history-select-user": "వాడుకరి:",
+ "abusefilter-history-select-submit": "మెరుగుపరచు",
+ "abusefilter-history-diff": "మార్పులు",
+ "abusefilter-history-error-hidden": "మీరు అభ్యర్థించిన వడపోత దాచబడి ఉంది, మరియు మీరు దాని చరిత్రని చూడలేరు.",
+ "abusefilter-exception-unexpectedatend": "$1 వ అక్షరం దగ్గర \"$2\" ని ఊహించలేదు.",
+ "abusefilter-exception-expectednotfound": "$1 అక్షరం వద్ద $2 ఉండాలి, కానీ లేదు (దానిబదులుగా $3 $4 ఉంది).",
+ "abusefilter-exception-unrecognisedkeyword": "$1వ అక్షరం వద్ద గుర్తుతెలియని కీపదం $2.",
+ "abusefilter-exception-unexpectedtoken": "కారెక్టరు $1 దగ్గర ఊహించని టోకెన్ \"$3\" ($2 రకానికి చెందినది).",
+ "abusefilter-exception-invalidoperator": "$1వ అక్షరం వద్ద చెల్లని కారకం \"$2\".",
+ "abusefilter-exception-unrecognisedtoken": "$1వ అక్షరం వద్ద గుర్తుతెలియని టోకెను \"$2\".",
+ "abusefilter-exception-noparams": "$1వ అక్షరం వద్ద \"$2\" ఫంక్షనుకు ఏ పరామితులూ ఇవ్వలేదు.",
+ "abusefilter-exception-dividebyzero": "$1వ అక్షరం వద్ద $2 ని సున్న చేత భాగించడానికి ప్రయత్నిస్తున్నారు.",
+ "abusefilter-exception-unrecognisedvar": "$1వ అక్షరం వద్ద గుర్తుతెలియని చరరాశి $2",
+ "abusefilter-action-tag": "ట్యాగు",
+ "abusefilter-action-warn": "హెచ్చరించు",
+ "abusefilter-action-blockautopromote": "యాంత్రికోన్నతిని నిరోధించు",
+ "abusefilter-action-block": "నిరోధించు",
+ "abusefilter-action-degroup": "గుంపుల నుండి తొలగించు",
+ "abusefilter-action-rangeblock": "అవధి-నిరోధం",
+ "abusefilter-action-disallow": "నిరాకరించు",
+ "abusefilter-revert-title": "$1 వడపోసిన మార్పులన్నిటినీ తిప్పికొట్టు",
+ "abusefilter-revert-preview-item": "$1: $2 $4పై $3 చేసారు.\nతిప్పికొట్టాల్సిన చర్యలు: $5 ($6)",
+ "abusefilter-revert-periodstart": "సమయ ప్రారంభం:",
+ "abusefilter-revert-periodend": "సమయ ముగింపు:",
+ "abusefilter-revert-search": "చర్యలను ఎంచుకోండి",
+ "abusefilter-revert-filter": "వడపోత:",
+ "abusefilter-revert-confirm": "నిర్ధారించు",
+ "abusefilter-revert-reasonfield": "కారణం:",
+ "abusefilter-test-legend": "వడపోత పరీక్ష",
+ "abusefilter-test-submit": "పరీక్షించు",
+ "abusefilter-test-load": "లోడు",
+ "abusefilter-test-user": "వాడుకరి చేసిన మార్పులు:",
+ "abusefilter-test-period-start": "తర్వాత చేసిన మార్పులు:",
+ "abusefilter-test-period-end": "ముందు జరిగిన మార్పులు:",
+ "abusefilter-test-page": "పేజీకి చేసిన మార్పులు:",
+ "abusefilter-changeslist-examine": "పరిశీలించు",
+ "abusefilter-examine": "వ్యక్తిగత మార్పులను పరిశీలించు",
+ "abusefilter-examine-legend": "మార్పులని ఎంచుకోండి",
+ "abusefilter-examine-user": "వాడుకరి:",
+ "abusefilter-examine-title": "పేజీ శీర్షిక:",
+ "abusefilter-examine-submit": "వెతుకు",
+ "abusefilter-examine-test": "ఈ మార్పుని ఒక వడపోతతో పరీక్షించండి",
+ "abusefilter-examine-test-button": "వడపోతని పరీక్షించు",
+ "abusefilter-examine-nomatch": "ఈ మార్పు వడపోతలో చిక్కుకోలేదు.",
+ "abusefilter-examine-notfound": "మీరు అభ్యర్థించిన మార్పుని కనుగొనలేకపోయాం.",
+ "abusefilter-examine-incompatible": "మీరు అభ్యర్థించిన మార్పుకి దుర్వినియోగ వడపోతలో తోడ్పాటు లేదు.",
+ "abusefilter-examine-noresults": "మీరు ఇచ్చిన అన్వేషణ పరామితులకి ఏ ఫలితాలూ లేవు.",
+ "abusefilter-topnav": "'''దుర్వినియోగ వడపోతల మార్గసూచీ'''",
+ "abusefilter-topnav-home": "ముంగిలి",
+ "abusefilter-topnav-test": "టోకు పరీక్ష",
+ "abusefilter-topnav-examine": "గత మార్పులను పరిశీలించు",
+ "abusefilter-topnav-log": "దుర్వినియోగాల చిట్టా",
+ "abusefilter-topnav-tools": "డీబగ్గింగు పరకరాలు",
+ "abusefilter-topnav-import": "వడపోత దిగుమతి",
+ "abusefilter-log-name": "దుర్వినియోగ వడపోతల చిట్టా",
+ "abusefilter-log-header": "వడపోతలకు జరిగిన మార్పుల సంగ్రహాన్ని ఈ చిట్టా చూపిస్తుంది.\nపూర్తి వివరాల కొరకు, ఇటీవలి [[Special:AbuseFilter/history|వడపోత మార్పుల జాబితా]]ని చూడండి.",
+ "abusefilter-log-noresults": "ఫలితాలు లేవు",
+ "abusefilter-diff-title": "కూర్పుల మధ్య తేడాలు",
+ "abusefilter-diff-item": "అంశం",
+ "abusefilter-diff-version": "$1 నాడు $2 {{GENDER:$3|చేసిన}} కూర్పు",
+ "abusefilter-diff-info": "ప్రాథమిక సమాచారం",
+ "abusefilter-diff-pattern": "వడపోత నియమాలు",
+ "abusefilter-diff-invalid": "అడిగిన వర్షన్లు తేలేకపోతున్నాం",
+ "abusefilter-diff-backhistory": "తిరిగి వడపోత చరిత్రకి",
+ "abusefilter-diff-prev": "పాత మార్పు",
+ "abusefilter-diff-next": "కొత్త మార్పు",
+ "abusefilter-import-intro": "ఇతర వికీల నుండి వడపోతకాలను దిగుమతి చేసుకునేందుకు ఈ ఇంటరుఫేసును వాడవచ్చు.\nమూలవికీలో, ఎడిటింగ్ ఇంటరుఫేసులోని \"{{int:abusefilter-edit-tools}}\" కింద ఉన్న \"{{int:abusefilter-edit-export}}\" ను నొక్కండి.\nఅప్పుడు కనిపించే టెక్స్టుబాక్సులో ఉన్న పాఠ్యాన్ని కాపీ చేసుకుని, దాన్ని ఈ టెక్స్టుబాక్సులో పేస్టు చెయ్యండి. ఆ తరవాత \"{{int:abusefilter-import-submit}}\" నొక్కండి.",
+ "abusefilter-import-submit": "భోగట్టాని దిగుమతించు",
+ "abusefilter-group-default": "అప్రమేయం",
+ "apihelp-query+abuselog-example-1": "ఇటీవలి చిట్టా పద్దులను చూపించు"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/tet.json b/www/wiki/extensions/AbuseFilter/i18n/tet.json
new file mode 100644
index 00000000..f6ac969c
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/tet.json
@@ -0,0 +1,12 @@
+{
+ "@metadata": {
+ "authors": [
+ "MF-Warburg"
+ ]
+ },
+ "abusefilter-log-search-title": "Títulu:",
+ "abusefilter-log-search-submit": "Buka",
+ "abusefilter-list-edit": "Edita",
+ "abusefilter-edit-history": "Istória:",
+ "abusefilter-examine-submit": "Buka"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/tg-cyrl.json b/www/wiki/extensions/AbuseFilter/i18n/tg-cyrl.json
new file mode 100644
index 00000000..decc255d
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/tg-cyrl.json
@@ -0,0 +1,18 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ibrahim",
+ "ToJack"
+ ]
+ },
+ "abusefilter-warning": "'''Таваҷҷӯҳ'''. Амали зерин ба таври автоматӣ чун нохуб ҳисобида шуд. Вироишоти нолозим вогардонӣ мешавад,\nдашном ва/ё вироишоти ғайризабонӣ ба басташавии ҳисоби корбарӣ ва ё IP-адресатон меорад.\nАгар шумо боварӣ доред, ки вироишатон лозима аст, лутфан тугмаи фиристан ё захира карданро бори дигар пахш кунед. \nТавзеҳоти хурди ин қоида: $1",
+ "abusefilter-log-search-user": "Корбар:",
+ "abusefilter-log-search-title": "Унвон:",
+ "abusefilter-log-search-submit": "Ҷустуҷӯ",
+ "abusefilter-log-details-val": "Қимат",
+ "abusefilter-list-edit": "Вироиш",
+ "abusefilter-edit-builder-vars-old-content-model": "Навъи таркибии саҳифа",
+ "abusefilter-edit-builder-vars-article-id": "Рамзи саҳифа",
+ "abusefilter-examine-submit": "Ҷустуҷӯ",
+ "abusefilter-diff-item": "Элемент"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/tg-latn.json b/www/wiki/extensions/AbuseFilter/i18n/tg-latn.json
new file mode 100644
index 00000000..fb6dbc57
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/tg-latn.json
@@ -0,0 +1,12 @@
+{
+ "@metadata": {
+ "authors": [
+ "Liangent"
+ ]
+ },
+ "abusefilter-log-search-user": "Korbar:",
+ "abusefilter-log-search-title": "Unvon:",
+ "abusefilter-log-search-submit": "Çustuçū",
+ "abusefilter-log-details-val": "Qimat",
+ "abusefilter-list-edit": "Viroiş"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/th.json b/www/wiki/extensions/AbuseFilter/i18n/th.json
new file mode 100644
index 00000000..5f51b1ac
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/th.json
@@ -0,0 +1,388 @@
+{
+ "@metadata": {
+ "authors": [
+ "Akkhaporn",
+ "Ans",
+ "Harley Hartwell",
+ "Horus",
+ "Korrawit",
+ "Nullzero",
+ "Octahedron80",
+ "Passawuth",
+ "Woraponboonkerd",
+ "Matma Rex"
+ ]
+ },
+ "abusefilter-desc": "วิเคราะห์พฤติกรรมการแก้ไขอัตโนมัติ",
+ "abusefilter": "โครงแบบตัวกรองการละเมิดกฎ",
+ "abuselog": "ปูมการละเมิดกฎ",
+ "abusefilter-intro": "ยินดีต้อนรับสู่อินเตอร์เฟซการจัดการตัวกรองการละเมิดกฎ\nตัวกรองการละเมิดกฎเป็นซอฟต์แวร์อัตโนมัติในการวิเคราะห์พฤติกรรมการกระทำทั้งหมด\nอินเตอร์เฟซนี้แสดงรายการตัวกรองที่กำหนดไว้และสามารถแก้ไขได้",
+ "abusefilter-mustbeeditor": "เฉพาะผู้ใช้ที่มีสิทธิแก้ไขตัวกรองการละเมิดกฎเท่านั้นที่สามารถใช้อินเตอร์เฟซนี้ เพื่อความปลอดภัย",
+ "abusefilter-warning": "'''คำเตือน''': การกระทำนี้ถูกระบุว่าไม่เหมาะสมอัตโนมัติ\nการแก้ไขที่ไม่เหมาะสมหรือเป็นภัยต่อระบบจะถูกย้อนกลับโดยเร็ว\nและการแก้ไขที่ไม่สร้างสรรค์อย่างยิ่ง หรือซ้ำหลายครั้งจะส่งผลให้บัญชีหรือเลขที่อยู่ไอพีของคุณถูกบล็อก\nหากคุณเชื่อว่าการกระทำนี้สร้างสรรค์ คุณอาจส่งอีกครั้งเพื่อยืนยัน\nคำอธิบายอย่างย่อเกี่ยวกับการละเมิดกฎที่ตรงกับการกระทำของคุณ: $1",
+ "abusefilter-disallowed": "การกระทำนี้ถูกระบุว่าไม่เหมาะสมอัตโนมัติ จึงไม่ได้รับอนุญาตให้ดำเนินการต่อ\nหากคุณเชื่อว่าการกระทำของคุณสร้างสรรค์ โปรดแจ้งผู้ดูแลระบบถึงสิ่งที่คุณพยายามทำ\nคำอธิบายโดยสรุปเกี่ยวกับการละเมิดกฎที่ตรงกับการกระทำของคุณ คือ $1",
+ "abusefilter-blocked-display": "การดำเนินการนี้ถูกระบุว่าไม่เหมาะสมอัตโนมัติ\nและคุณถูกกันมิให้ดำเนินการ\nนอกจากนี้ เพื่อปกป้อง {{SITENAME}} บัญชีผู้ใช้ของคุณและทุกเลขที่อยู่ไอพีที่เกี่ยวข้องถูกบล็อกมิให้แก้ไขแล้ว\nหากสิ่งนี้เกิดจากข้อผิดพลาด โปรดติดต่อผู้ดูแลระบบ\nคำอธิบายโดยสรุปเกี่ยวกับการละเมิดกฎที่ตรงกับการกระทำของคุณ คือ $1",
+ "abusefilter-degrouped": "การกระทำนี้ถูกระบุว่าไม่เหมาะสมอัตโนมัติ\nจึงไม่ได้รับอนุญาต และเนื่องจากต้องสงสัยว่าบัญชีของคุณตกอยู่ในมือผู้อื่น สิทธิทั้งหมดจึงถูกเพิกถอน\nหากคุณเชื่อว่าเป็นข้อผิดพลาด โปรดติดต่อผู้ดูแลสิทธิแต่งตั้งพร้อมคำอธิบายการกระทำนี้ และคุณอาจได้รับสิทธิคืน\nคำอธิบายโดยสรุปเกี่ยวกับการละเมิดกฎที่ตรงกับการกระทำของคุณ คือ $1",
+ "abusefilter-autopromote-blocked": "การกระทำนี้ถูกระบุว่าไม่เหมาะสมอัตโนมัติ และไม่อนุญาตให้ดำเนินการต่อ\nนอกจากนี้ ตามมาตรการรักษาความปลอดภัย สิทธิพิเศษบางอย่างที่ปกติมอบให้บัญชีที่ได้รับการรับรองถูกเพิกถอนจากบัญชีของคุณชั่วคราว\nคำอธิบายโดยสรุปเกี่ยวกับการละเมิดกฎที่ตรงกับการกระทำของคุณ คือ $1",
+ "abusefilter-blocker": "ตัวกรองการละเมิดกฎ",
+ "abusefilter-blockreason": "ถูกตัวกรองการละเมิดกฎบล็อกอัตโนมัติ\nรายละเอียดของกฎที่ตรงกัน: $1",
+ "abusefilter-degroupreason": "สิทธิถูกตัวกรองการละเมิดกฎริบอัตโนมัติ\nคำอธิบายกฎ: $1",
+ "abusefilter-accountreserved": "ชื่อบัญชีนี้สงวนไว้สำหรับการใช้งานโดยตัวกรองการละเมิดกฎ",
+ "right-abusefilter-modify": "แก้ไขตัวกรองการละเมิดกฎ",
+ "right-abusefilter-view": "ดูตัวกรองการละเมิดกฎ",
+ "right-abusefilter-log": "ดูปูมการละเมิดกฎ",
+ "right-abusefilter-log-detail": "ดูรายละเอียดหน่วยปูมการละเมิดกฎ",
+ "right-abusefilter-private": "ดูข้อมูลส่วนตัวในปูมการละเมิดกฎ",
+ "right-abusefilter-modify-restricted": "ดัดแปรตัวกรองการละเมิดกฎด้วยการกระทำที่จำกัด",
+ "right-abusefilter-revert": "ย้อนการเปลี่ยนแปลงทั้งหมดโดยตัวกรองการละเมิดกฎที่กำหนด",
+ "right-abusefilter-view-private": "ดูตัวกรองการละเมิดกฎที่ทำเครื่องหมายเป็นส่วนตัว",
+ "right-abusefilter-log-private": "ดูหน่วยปูมตัวกรองการละเมิดกฎที่ทำครื่องหมายเป็นส่วนตัว",
+ "right-abusefilter-hide-log": "ซ่อนหน่วยในปูมการละเมิดกฎ",
+ "right-abusefilter-hidden-log": "ดูหน่วยปูมการละเมิดกฎที่ถูกซ่อน",
+ "right-abusefilter-modify-global": "สร้างหรือดัดแปรตัวกรองการละเมิดกฎทั่วโลก",
+ "action-abusefilter-modify": "ดัดแปรตัวกรองการละเมิดกฎ",
+ "action-abusefilter-view": "ดูตัวกรองการละเมิดกฎ",
+ "action-abusefilter-log": "ดูปูมการละเมิดกฎ",
+ "action-abusefilter-log-detail": "ดูรายละเอียดหน่วยปูมการละเมิดกฎ",
+ "action-abusefilter-private": "ดูข้อมูลส่วนตัวในปูมการละเมิดกฎ",
+ "action-abusefilter-modify-restricted": "ดัดแปรตัวกรองการละเมิดกฎด้วยการกระทำที่จำกัด",
+ "action-abusefilter-revert": "ย้อนการเปลี่ยนแปลงทั้งหมดโดยตัวกรองการละเมิดกฎที่กำหนด",
+ "action-abusefilter-view-private": "ดูตัวกรองการละเมิดกฎที่ทำเครื่องหมายเป็นส่วนตัว",
+ "abusefilter-log": "ปูมตัวกรองการละเมิดกฎ",
+ "abusefilter-log-summary": "ปูมนี้แสดงรายการการกระทำทั้งหมดที่ถูกตัวกรองตรวจจับ",
+ "abusefilter-log-search": "ค้นหาปูมการละเมิดกฎ",
+ "abusefilter-log-search-user": "ผู้ใช้:",
+ "abusefilter-log-search-filter": "หมายเลขประจำตัวกรอง (คั่นด้วยไปป์):",
+ "abusefilter-log-search-title": "ชื่อเรื่อง :",
+ "abusefilter-log-search-wiki": "วิกิ:",
+ "abusefilter-log-search-submit": "ค้นหา",
+ "abusefilter-log-entry": "$1: ผู้ใช้ $2 ถูกตรวจจับตัวกรองการละเมิดกฎ ขณะกระทำการ \"$3\" บน $4\nสิ่งที่ตัวกรองดำเนินการ: $5;\nคำอธิบายตัวกรอง: $6",
+ "abusefilter-log-entry-withdiff": "$1: $2 เรียกคำสั่งจากตัวกรองการละเมิดกฎ ขณะกระทำการ \"$3\" ในหน้า $4\nสิ่งที่ตัวกรองดำเนินการ: $5\nรายละเอียดตัวกรอง: $6 ($7)",
+ "abusefilter-log-detailedentry-meta": "$1: ผู้ใช้ $2 เรียกคำสั่งจาก $3 ขณะกระทำการ \"$4\" บน $5\nสิ่งที่ตัวกรองดำเนินการ: $6;\nคำอธิบายตัวกรอง: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "ตัวกรองทั่วโลก $1",
+ "abusefilter-log-detailedentry-local": "ตัวกรอง $1",
+ "abusefilter-log-detailslink": "รายละเอียด",
+ "abusefilter-log-diff": "แตกต่าง",
+ "abusefilter-log-hidelink": "ปรับทัศนวิสัย",
+ "abusefilter-log-details-legend": "รายละเอียดสำหรับหน่วยปูม $1",
+ "abusefilter-log-details-var": "ตัวแปร",
+ "abusefilter-log-details-val": "ค่า",
+ "abusefilter-log-details-vars": "ตัวแปรเสริมการกระทำ",
+ "abusefilter-log-details-private": "ข้อมูลส่วนตัว",
+ "abusefilter-log-details-ip": "ที่อยู่ไอพีเดิม:",
+ "abusefilter-log-noactions": "ไม่มี",
+ "abusefilter-log-details-diff": "การเปลี่ยนแปลงในการแก้ไข",
+ "abusefilter-log-linkoncontribs": "ปูมการละเมิดกฎ",
+ "abusefilter-log-linkoncontribs-text": "ปูมการละเมิดกฎของผู้ใช้นี้",
+ "abusefilter-log-hidden": "(รายการถูกซ่อนไว้)",
+ "abusefilter-log-hidden-implicit": "(ถูกซ่อนเพราะรุ่นถูกลบ)",
+ "abusefilter-log-cannot-see-details": "คุณไม่ได้รับอนุญาตให้ดูรายละเอียดของหน่วยนี้",
+ "abusefilter-log-details-hidden": "คุณไม่สามารถดูรายละเอียดของหน่วยนี้ เพราะถูกซ่อนจากการเข้าชมสาธารณะ",
+ "abusefilter-log-private-not-included": "หมายเลขประจำตัวกรองอย่างน้อยหนึ่งหมายเลขที่คุณระบุเป็นส่นวตัว เนื่องจากคุณไม่ได้รับอนุญาตให้ดูรายละเอียดของตัวกรองส่วนตัว ตัวกรองเหล่านี้จึงไม่ถูกค้นหา",
+ "abusefilter-log-hide-legend": "ซ่อนหน่วยปูม",
+ "abusefilter-log-hide-id": "หมายเลขประจำหน่วยปูม:",
+ "abusefilter-log-hide-hidden": "ซ่อนหน่วยนี้มิให้ปรากฏต่อสาธารณะ",
+ "abusefilter-log-hide-reason": "สาเหตุ:",
+ "abusefilter-log-hide-forbidden": "คุณไม่มีสิทธิซ่อนหน่วยปูมการละเมิดกฎ",
+ "abusefilter-logentry-suppress": "ซ่อน \"[[$1]]\"",
+ "abusefilter-logentry-unsuppress": "เปิดเผย \"[[$1]]\"",
+ "logentry-abusefilter-hit": "$1 เรียกคำสั่งจาก $4 ขณะกระทำการ \"$5\" บน $3\nสิ่งที่ตัวกรองดำเนินการ: $6 ($7)",
+ "abusefilter-management": "การจัดการตัวกรองการละเมิดกฎ",
+ "abusefilter-list": "ตัวกรองทั้งหมด",
+ "abusefilter-list-id": "หมายเลขประจำตัวกรอง:",
+ "abusefilter-list-status": "สถานะ",
+ "abusefilter-list-public": "รายละเอียดต่อสาธารณะ",
+ "abusefilter-list-consequences": "ผลลัพธ์",
+ "abusefilter-list-visibility": "ทัศนวิสัย",
+ "abusefilter-list-hitcount": "จำนวนการเรียก",
+ "abusefilter-list-edit": "แก้ไข",
+ "abusefilter-list-details": "รายละเอียด",
+ "abusefilter-list-limit": "จำนวนต่อหน้า:",
+ "abusefilter-list-lastmodified": "ดัดแปรล่าสุด",
+ "abusefilter-list-group": "กลุ่มตัวกรอง",
+ "abusefilter-hidden": "ส่วนตัว",
+ "abusefilter-unhidden": "สาธารณะ",
+ "abusefilter-enabled": "เปิดใช้งาน",
+ "abusefilter-deleted": "ถูกลบ",
+ "abusefilter-disabled": "ปิดใช้งาน",
+ "abusefilter-hitcount": "$1 ครั้ง",
+ "abusefilter-new": "สร้างตัวกรองใหม่",
+ "abusefilter-return": "กลับไปยังส่วนการจัดการตัวกรอง",
+ "abusefilter-status-global": "ทั่วโลก",
+ "abusefilter-list-options": "ตัวเลือก",
+ "abusefilter-list-options-deleted": "ตัวกรองที่ถูกลบ:",
+ "abusefilter-list-options-deleted-only": "แสดงเฉพาะตัวกรองที่ถูกลบ",
+ "abusefilter-list-options-deleted-hide": "ซ่อนตัวกรองที่ถูกลบ",
+ "abusefilter-list-options-deleted-show": "รวมตัวกรองที่ถูกลบ",
+ "abusefilter-list-options-scope": "แสดงตัวกรอง:",
+ "abusefilter-list-options-scope-local": "เฉพาะกฎท้องถิ่น",
+ "abusefilter-list-options-scope-global": "เฉพาะกฎทั่วโลก",
+ "abusefilter-list-options-scope-all": "กฎท้องถิ่นและทั่วโลก",
+ "abusefilter-list-options-disabled": "ตัวกรองที่ปิดใช้งาน:",
+ "abusefilter-list-options-hidedisabled": "ซ่อนตัวกรองที่ปิดใช้งาน",
+ "abusefilter-list-options-submit": "อัปเดต",
+ "abusefilter-tools-text": "นี่เป็นเครื่องมือซึ่งอาจเป็นประโยชน์ในการคิดระบบและการแก้จุดบกพร่องของตัวกรองการละเมิดกฎ",
+ "abusefilter-tools-expr": "ตัวทดสอบนิพจน์",
+ "abusefilter-tools-submitexpr": "ประเมิน",
+ "abusefilter-tools-reautoconfirm": "คืนสถานะยืนยันอัตโนมัติ",
+ "abusefilter-tools-reautoconfirm-user": "ผู้ใช้:",
+ "abusefilter-tools-reautoconfirm-submit": "ยืนยันอัตโนมัติอีกครั้ง",
+ "abusefilter-reautoconfirm-none": "{{GENDER:$1| | |กลุ่ม}}ผู้ใช้นั้นยังไม่ถูกระงับสถานะยืนยันอัตโนมัติ",
+ "abusefilter-reautoconfirm-notallowed": "คุณไม่ได้รับอนุญาตให้คืนสถานะยืนยันอัตโนมัติ",
+ "abusefilter-reautoconfirm-done": "บัญชีได้รับสถานะยืนยันอัตโนมัติคืนแล้ว",
+ "abusefilter-status": "จาก $1 การกระทำล่าสุด $2 ($3%) ครั้งถึงขีดจำกัดเงื่อนไขที่ $4 เงื่อนไข และ $5 ($6%) การกระทำ ตรงกับหนึ่งในตัวกรองที่ปัจจุบันเปิดใช้งานอยู่",
+ "abusefilter-edit": "แก้ไขตัวกรองการละเมิดกฎ",
+ "abusefilter-edit-subtitle": "แก้ไขตัวกรอง $1",
+ "abusefilter-edit-subtitle-new": "สร้างตัวกรอง",
+ "abusefilter-edit-oldwarning": "<strong>คุณกำลังแก้ไขรุ่นเก่าของตัวกรองนี้\nสถิติที่คัดมาเป็นของตัวกรองรุ่นล่าสุด\nถ้าคุณบันทึกการเปลี่ยนแปลง คุณจะเขียนทับการเปลี่ยนแปลงทั้งหมดนับแต่รุ่นที่คุณกำลังแก้ไข</strong> &bull;\n[[Special:AbuseFilter/history/$2|กลับไปยังประวัติของตัวกรองนี้]]",
+ "abusefilter-edit-status-label": "สถิติ:",
+ "abusefilter-edit-status": "จาก $1 การกระทำล่าสุด ตรงกับตัวกรองนี้ $2 ครั้ง ($3%)",
+ "abusefilter-edit-status-profile": "จาก $1 การกระทำล่าสุด ตรงกับตัวกรองนี้ $2 ครั้ง ($3%) โดยเฉลี่ย เวลาดำเนินงานอยู่ที่ $4 มิลลิวินาที และใช้ $5 เงื่อนไขของขีดจำกัดเงื่อนไข",
+ "abusefilter-edit-new": "ตัวกรองใหม่",
+ "abusefilter-edit-save": "บันทึกตัวกรอง",
+ "abusefilter-edit-id": "หมายเลขประจำตัวกรอง:",
+ "abusefilter-edit-description": "คำอธิบาย:\n:''(สาธารณะสามารถดูได้)''",
+ "abusefilter-edit-group": "กลุ่มตัวกรอง:",
+ "abusefilter-edit-flags": "ตัวบ่งชี้:",
+ "abusefilter-edit-enabled": "เปิดใช้งานตัวกรองนี้",
+ "abusefilter-edit-deleted": "ทำเครื่องหมายว่าลบแล้ว",
+ "abusefilter-edit-hidden": "ซ่อนรายละเอียดของตัวกรองนี้ต่อสาธารณะ",
+ "abusefilter-edit-global": "ตัวกรองทั่วโลก",
+ "abusefilter-edit-rules": "เงื่อนไข:",
+ "abusefilter-edit-notes": "หมายเหตุ:",
+ "abusefilter-edit-lastmod": "ดัดแปรตัวกรองล่าสุด:",
+ "abusefilter-edit-lastmod-text": "$1 โดย $2",
+ "abusefilter-edit-hitcount": "จำนวนการเรียกตัวกรอง:",
+ "abusefilter-edit-consequences": "การกระทำเมื่อตรงกัน",
+ "abusefilter-edit-action-warn": "เรียกใช้การกระทำเหล่านี้หลังเตือนผู้ใช้นั้นแล้ว",
+ "abusefilter-edit-action-disallow": "ป้องกันมิให้ผู้ใช้ดำเนินการกระทำดังกล่าว",
+ "abusefilter-edit-action-blockautopromote": "เพิกถอนสถานะยืนยันอัตโนมัติของผู้ใช้",
+ "abusefilter-edit-action-degroup": "นำผู้ใช้ออกจากกลุ่มสิทธิพิเศษทั้งหมด",
+ "abusefilter-edit-action-block": "บล็อกผู้ใช้ และ/หรือ เลขที่อยู่ไอพีมิให้แก้ไข",
+ "abusefilter-edit-action-throttle": "เรียกใช้การกระทำเฉพาะเมื่อผู้ใช้ดำเนินการเกินขีดจำกัด",
+ "abusefilter-edit-action-rangeblock": "บล็อกช่วง /16 อันเป็นที่มาของผู้ใช้",
+ "abusefilter-edit-action-tag": "ติดป้ายกำกับการแก้ไขเพื่อทบทวนต่อไป",
+ "abusefilter-edit-throttle-count": "จำนวนการกระทำที่อนุญาต:",
+ "abusefilter-edit-throttle-period": "ช่วงเวลา:",
+ "abusefilter-edit-throttle-seconds": "$1 วินาที",
+ "abusefilter-edit-warn-message": "ข้อความระบบที่ใช้เตือน",
+ "abusefilter-edit-warn-other": "ข้อความอื่น",
+ "abusefilter-edit-warn-other-label": "ชื่อหน้าของข้อความอื่น:\n:''(โดยไม่มีคำขึ้นต้นมีเดียวิกิ)''",
+ "abusefilter-edit-warn-actions": "การกระทำ:",
+ "abusefilter-edit-warn-preview": "แสดงตัวอย่างข้อความที่เลือก",
+ "abusefilter-edit-warn-edit": "สร้าง/แก้ไขข้อความที่เลือก",
+ "abusefilter-edit-tag-tag": "[[Special:Tags|ป้ายกำกับ]]ที่ใช้ (บรรทัดละหนึ่งป้าย):",
+ "abusefilter-edit-denied": "คุณไม่สามารถดูรายละเอียดของตัวกรองนี้ได้ เพราะถูกซ่อนมิให้สาธารณะชม",
+ "abusefilter-edit-main": "ตัวแปรเสริมตัวกรอง",
+ "abusefilter-edit-done-subtitle": "แก้ไขตัวกรองแล้ว",
+ "abusefilter-edit-done": "บันทึก[[Special:AbuseFilter/history/$1/diff/prev/$2|การเปลี่ยนแปลงของคุณ]]ใน[[Special:AbuseFilter/$1|ตัวกรอง $3]] แล้ว",
+ "abusefilter-edit-badsyntax": "มีข้อผิดพลาดของวายกสัมพันธ์ในตัวกรองที่คุณระบุ ตัวแจงส่วนส่งออกคือ: <pre>$1</pre>",
+ "abusefilter-edit-restricted": "คุณไม่สามารถแก้ไขตัวกรองนี้ เพราะพบการกระทำที่ถูกจำกัด\nโปรดขอให้ผู้ใช้ที่ได้รับอนุญาตเพิ่มการกระทำที่จำกัดแทนคุณ",
+ "abusefilter-edit-viewhistory": "ดูประวัติของตัวกรองนี้",
+ "abusefilter-edit-history": "ประวัติ:",
+ "abusefilter-edit-check": "ตรวจสอบวากยสัมพันธ์",
+ "abusefilter-edit-badfilter": "ไม่มีตัวกรองที่คุณระบุ",
+ "abusefilter-edit-revert": "ย้อนการกระทำโดยตัวกรองนี้",
+ "abusefilter-edit-tools": "เครื่องมือ:",
+ "abusefilter-edit-test-link": "ทดสอบตัวกรองนี้กับการแก้ไขล่าสุด",
+ "abusefilter-edit-export": "ส่งออกตัวกรองนี้ไปยังวิกิอื่น",
+ "abusefilter-edit-syntaxok": "ไม่พบวายกสัมพันธ์ผิดพลาด",
+ "abusefilter-edit-syntaxerr": "พบวายกสัมพันธ์ผิดพลาด: $1",
+ "abusefilter-edit-bad-tags": "มีป้ายกำกับที่ระบุไม่ถูกต้อง\nชื่อป้ายกำกับควรสั้น และไม่ควรมีอักขระพิเศษ",
+ "abusefilter-edit-notallowed": "คุณไม่ได้รับอนุญาตให้สร้างหรือแก้ไขตัวกรองการละเมิดกฎ",
+ "abusefilter-edit-notallowed-global": "คุณไม่ได้รับอนุญาตให้สร้างหรือแก้ไขตัวกรองการละเมิดกฎทั่วโลก",
+ "abusefilter-edit-builder-select": "เลือกตัวเลือกเพื่อเพิ่มที่เคอร์เซอร์",
+ "abusefilter-edit-builder-group-op-arithmetic": "ตัวดำเนินการเลขคณิต",
+ "abusefilter-edit-builder-op-arithmetic-addition": "การบวก (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "การลบ (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "การคูณ (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "การหาร (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "มอดุโล (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "ยกกำลัง (**)",
+ "abusefilter-edit-builder-group-op-comparison": "ตัวดำเนินการเปรียบเทียบ",
+ "abusefilter-edit-builder-op-comparison-equal": "เท่ากับ (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "ไม่เท่ากับ (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "น้อยกว่า (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "มากกว่า (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "น้อยกว่าหรือเท่ากับ (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "มากกว่าหรือเท่ากับ (>=)",
+ "abusefilter-edit-builder-group-op-bool": "ตัวดำเนินการบูลีน",
+ "abusefilter-edit-builder-op-bool-not": "นิเสธ (!)",
+ "abusefilter-edit-builder-op-bool-and": "และ (&)",
+ "abusefilter-edit-builder-op-bool-or": "หรือ (|)",
+ "abusefilter-edit-builder-group-misc": "เบ็ดเตล็ด",
+ "abusefilter-edit-builder-misc-in": "อยู่ในสายอักขระ (in)",
+ "abusefilter-edit-builder-misc-like": "ตรงตามรูปแบบ (like)",
+ "abusefilter-edit-builder-misc-rlike": "ตรงตามนิพจน์ปรกติ (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "ตรงตามนิพจน์ปรกติ ไวต่ออักษรใหญ่เล็ก (irlike)",
+ "abusefilter-edit-builder-misc-contains": "สายอักขระฝั่งซ้ายมีสายอักขระฝั่งขวา (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "สัญพจน์สายอักขระ (\"\")",
+ "abusefilter-edit-builder-misc-tern": "ตัวดำเนินการไตรภาค (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "มีเงื่อนไข (if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "ฟังก์ชัน",
+ "abusefilter-edit-builder-funcs-length": "ความยาวสายอักขระ (length)",
+ "abusefilter-edit-builder-funcs-lcase": "เปลื่ยนเป็นตัวเล็ก (lcase)",
+ "abusefilter-edit-builder-funcs-ucase": "เปลี่ยนเป็นตัวใหญ่ (ucase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "ทำให้อักขระที่สับสนเป็นปกติ (ccnorm)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "นำอักขระคู่ออก (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "อักขระพิเศษ / อักขระรวม (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "ทำให้เป็นปกติ (norm)",
+ "abusefilter-edit-builder-funcs-count": "จำนวนครั้งที่สายอักขระ X ปรากฏในสายอักขระ Y (count)",
+ "abusefilter-edit-builder-funcs-rcount": "จำนวนครั้งที่นิพจน์ปรกติ X ปรากฏในสายอักขระ Y (rcount)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "นำช่องว่างออก (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "นำอักขระพิเศษออก (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "ไอพีอยู่ในช่วงหรือไม่ (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "ค้นหาสายอักขระดูสายอักขระย่อย (contains_any)",
+ "abusefilter-edit-builder-funcs-substr": "สายอักขระย่อย (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "ตำแหน่งสายอักขระย่อยในสายอักขระ (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "แทนที่สายอักขระย่อยด้วยสายอักขระ (str_replace)",
+ "abusefilter-edit-builder-funcs-rescape": "หลีกสายอักขระเป็นสัญพจน์ในนิพจน์ปรกติ (rescape)",
+ "abusefilter-edit-builder-funcs-set_var": "ตั้งตัวแปร (set_var)",
+ "abusefilter-edit-builder-group-vars": "ตัวแปร",
+ "abusefilter-edit-builder-vars-accountname": "ชื่อบัญชี (เมื่อสร้างบัญชี)",
+ "abusefilter-edit-builder-vars-timestamp": "ตราเวลายูนิกซ์ของการเปลี่ยนแปลง",
+ "abusefilter-edit-builder-vars-action": "การกระทำ",
+ "abusefilter-edit-builder-vars-addedlines": "บรรทัดที่เพิ่มในการแก้ไข",
+ "abusefilter-edit-builder-vars-delta": "การเปลี่ยนแปลงขนาดในการแก้ไข",
+ "abusefilter-edit-builder-vars-diff": "ผลต่างรวมของการเปลี่ยนแปลงที่ทำโดยการแก้ไข",
+ "abusefilter-edit-builder-vars-newsize": "ขนาดหน้าใหม่",
+ "abusefilter-edit-builder-vars-oldsize": "ขนาดหน้าเก่า",
+ "abusefilter-edit-builder-vars-removedlines": "บรรทัดที่นำออกในการแก้ไข",
+ "abusefilter-edit-builder-vars-summary": "คำอธิบายอย่างย่อ/เหตุผล",
+ "abusefilter-edit-builder-vars-article-id": "หมายเลขประจำหน้า",
+ "abusefilter-edit-builder-vars-article-ns": "เนมสเปซหน้า",
+ "abusefilter-edit-builder-vars-article-text": "ชื่อหน้า (ไม่มีเนมสเปซ)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "ชื่อเต็มหน้า",
+ "abusefilter-edit-builder-vars-article-views": "จำนวนการเข้าชมหน้า",
+ "abusefilter-edit-builder-vars-movedfrom-id": "หมายเลขประจำหน้าต้นทางที่เปลี่ยนชื่อ",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "เนมสเปซหน้าต้นทางที่เปลี่ยนชื่อ",
+ "abusefilter-edit-builder-vars-movedfrom-text": "ชื่อหน้าต้นทางที่เปลี่ยนชื่อ",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "ชื่อเต็มหน้าต้นทางที่เปลี่ยนชื่อ",
+ "abusefilter-edit-builder-vars-movedto-id": "หมายเลขประจำหน้าปลายทางที่เปลี่ยนชื่อ",
+ "abusefilter-edit-builder-vars-movedto-ns": "เนมสเปซหน้าปลายทางที่เปลี่ยนชื่อ",
+ "abusefilter-edit-builder-vars-movedto-text": "ชื่อหน้าปลายทางที่เปลี่ยนชื่อ",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "ชื่อเต็มหน้าปลายทางที่เปลี่ยนชื่อ",
+ "abusefilter-edit-builder-vars-user-editcount": "จำนวนการแก้ไขของผู้ใช้",
+ "abusefilter-edit-builder-vars-user-age": "อายุบัญชีผู้ใช้",
+ "abusefilter-edit-builder-vars-user-name": "ชื่อบัญชีผู้ใช้",
+ "abusefilter-edit-builder-vars-user-groups": "กลุ่ม (รวมทั้งโดยปริยาย) ผู้ใช้ที่อยู่",
+ "abusefilter-edit-builder-vars-user-rights": "สิทธิที่ผู้ใช้มี",
+ "abusefilter-edit-builder-vars-user-blocked": "ผู้ใช้ถูกบล็อกหรือไม่",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "เวลาที่ยืนยันที่อยู่อีเมล",
+ "abusefilter-edit-builder-vars-recent-contributors": "ผู้ใช้สิบคนสุดท้ายที่เขียนหน้า",
+ "abusefilter-edit-builder-vars-first-contributor": "ผู้ใช้คนแรกที่มีส่วนร่วมในหน้า",
+ "abusefilter-edit-builder-vars-all-links": "ลิงก์ภายนอกทั้งหมดในข้อความใหม่",
+ "abusefilter-edit-builder-vars-added-links": "ลิงก์ภายนอกทั้งหมดที่เพิ่มมาในการแก้ไข",
+ "abusefilter-edit-builder-vars-removed-links": "ลิงก์ภายนอกทั้งหมดที่นำออกในการแก้ไข",
+ "abusefilter-edit-builder-vars-old-text": "ข้อความวิกิเก่าก่อนการแก้ไข",
+ "abusefilter-edit-builder-vars-new-text": "ข้อความวิกิใหม่หลังการแก้ไข",
+ "abusefilter-edit-builder-vars-new-pst": "ข้อความวิกิหน้าใหม่ แปลงก่อนบันทึก",
+ "abusefilter-edit-builder-vars-diff-pst": "ผลต่างรวมของการแก้ไขที่ทำโดยการแก้ไข แปลงก่อนบันทึก",
+ "abusefilter-edit-builder-vars-addedlines-pst": "บรรทัดที่เพิ่มในการแก้ไข แปลงก่อนบันทึก",
+ "abusefilter-edit-builder-vars-new-text-stripped": "ข้อความหน้าใหม่โดยไม่มีอาร์กอัพใด ๆ",
+ "abusefilter-edit-builder-vars-new-html": "โค้ดเอชทีเอ็มแอลแจงส่วนของรุ่นใหม่",
+ "abusefilter-edit-builder-vars-restrictions-edit": "ระดับการล็อกการแก้ไขหน้า",
+ "abusefilter-edit-builder-vars-restrictions-move": "ระดับการล็อกย้ายหน้า",
+ "abusefilter-edit-builder-vars-restrictions-create": "การล็อกสร้างหน้า",
+ "abusefilter-edit-builder-vars-restrictions-upload": "การล็อกอัปโหลดไฟล์",
+ "abusefilter-edit-builder-vars-old-text-stripped": "ข้อความหน้าเก่าโดยไม่มีมาร์กอัพ",
+ "abusefilter-edit-builder-vars-old-links": "ลิงก์ในหน้าก่อนการแก้ไข",
+ "abusefilter-edit-builder-vars-old-html": "ข้อความวิกิหน้าเก่าแจงส่วนเป็นเอชทีเอ็มแอล",
+ "abusefilter-edit-builder-vars-minor-edit": "การแก้ไขนี้ทำเครื่องหมายเป็นการแก้ไขเล็กน้อยหรือไม่",
+ "abusefilter-edit-builder-vars-file-sha1": "แฮช SHA1 ของเนื้อหาไฟล์",
+ "abusefilter-edit-builder-vars-file-size": "ขนาดของไฟล์หน่วยเป็นไบต์",
+ "abusefilter-filter-log": "การเปลี่ยนแปลงตัวกรองล่าสุด",
+ "abusefilter-history": "ประวัติการเปลี่ยนแปลงตัวกรองการละเมิดกฏ #$1",
+ "abusefilter-history-foruser": "การเปลี่ยนแปลงโดย $1",
+ "abusefilter-history-hidden": "ซ่อน",
+ "abusefilter-history-enabled": "เปิดใช้งาน",
+ "abusefilter-history-global": "ทั่วโลก",
+ "abusefilter-history-timestamp": "เวลา",
+ "abusefilter-history-user": "ผู้ใช้",
+ "abusefilter-history-public": "รายละเอียดตัวกรองสาธารณะ",
+ "abusefilter-history-flags": "ตัวบ่งชี้",
+ "abusefilter-history-filter": "กฎตัวกรอง",
+ "abusefilter-history-comments": "ความเห็น",
+ "abusefilter-history-actions": "การกระทำ",
+ "abusefilter-history-backedit": "กลับไปยังตัวแก้ไขตัวกรอง",
+ "abusefilter-history-deleted": "ถูกลบ",
+ "abusefilter-history-filterid": "ตัวกรอง",
+ "abusefilter-history-select-legend": "แบ่งละเอียดการค้นหา",
+ "abusefilter-history-select-user": "ผู้ใช้:",
+ "abusefilter-history-select-submit": "แบ่งละเอียด",
+ "abusefilter-history-diff": "จำนวนการเปลี่ยนแปลง",
+ "abusefilter-history-error-hidden": "ตัวกรองที่คุณขอถูกซ่อน และคุณไม่สามารถดูประวัติได้",
+ "abusefilter-exception-unexpectedatend": "\"$2\" ไม่คาดหมายที่อักขระ $1",
+ "abusefilter-exception-expectednotfound": "คาดหมาย $2 ที่อักขระ $1 แต่ไม่พบ (พบ $3 $4 แทน)",
+ "abusefilter-action-tag": "ป้ายกำกับ",
+ "abusefilter-action-throttle": "ตรงเฉพาะเมื่อเกินขีดจำกัด",
+ "abusefilter-action-warn": "เตือน",
+ "abusefilter-action-blockautopromote": "บล็อกการแต่งตั้งอัตโนมัติ",
+ "abusefilter-action-block": "บล็อก",
+ "abusefilter-action-degroup": "นำออกจากกลุ่ม",
+ "abusefilter-action-rangeblock": "บล็อกเป็นช่วง",
+ "abusefilter-action-disallow": "ห้ามการกระทำ",
+ "abusefilter-revert-title": "ย้อนการเปลี่ยนแปลงทั้งหมดโดยตัวกรอง $1",
+ "abusefilter-revert-intro": "แบบนี้ให้คุณย้อนการเปลี่ยนแปลงทั้งหมดโดยตัวกรองการละเมิดกฎเนื่องจากตัวกรอง $1 \nโปรดใส่ใจขณะใช้เครื่องมือนี้",
+ "abusefilter-revert-preview-item": "$1: $2 กระทำการ $3 บน $4\nการดำเนินการที่จะถูกย้อน: $5 ($6)",
+ "abusefilter-revert-search-legend": "เลือกการกระทำตัวกรองการละเมิดกฎที่จะถูกย้อน",
+ "abusefilter-revert-periodstart": "ช่วงเวลาเริ่มต้น:",
+ "abusefilter-revert-periodend": "ช่วงเวลาสิ้นสุด:",
+ "abusefilter-revert-search": "เลือกการกระทำ",
+ "abusefilter-revert-filter": "ตัวกรอง:",
+ "abusefilter-revert-preview-intro": "ด้านล่างนี้เป็นการกระทำโดยตัวกรองการละเมิดกฎที่จะถูกย้อนในปฏิบัติการนี้\nโปรดตรวจสอบอย่างระมัดระวัง และคลิก \"{{int:abusefilter-revert-confirm}}\" เพื่อยืนยันการเลือกของคุณ",
+ "abusefilter-revert-confirm": "ยืนยัน",
+ "abusefilter-revert-success": "คุณย้อนการกระทำทั้งหมดโดยตัวกรองการละเมิดกฎเนื่องจาก[[Special:AbuseFilter/$1|ตัวกรอง $2]] แล้ว",
+ "abusefilter-revert-reason": "ย้อนการกระทำทั้งหมดโดยตัวกรองการละเมิดกฎเนื่องจากตัวกรอง $1 แล้ว\nเหตุผลที่ให้ไว้: $2",
+ "abusefilter-revert-reasonfield": "เหตุผล:",
+ "abusefilter-test": "ทดสอบตัวกรองกับการแก้ไขที่ผ่านมา",
+ "abusefilter-test-intro": "หน้านี้ให้คุณตรวจสอบตัวกรองที่กรอกในกล่องด้านล่างกับการแก้ไขล่าสุด $1 การแก้ไข\nในการโหลดตัวกรองที่มีอยู่แล้ว พิมพ์หมายเลขประจำตัวกรอกในกล่องด้านล่างกล่องข้อความแก้ไข และคลิกปุ่ม \"{{int:abusefilter-test-load}}\"",
+ "abusefilter-test-legend": "การทดสอบตัวกรอง",
+ "abusefilter-test-load-filter": "โหลดตัวกรองหมายเลข:",
+ "abusefilter-test-submit": "ทดสอบ",
+ "abusefilter-test-load": "โหลด",
+ "abusefilter-test-user": "การเปลี่ยนแปลงโดยผู้ใช้:",
+ "abusefilter-test-period-start": "การเปลี่ยนแปลงหลัง:",
+ "abusefilter-test-period-end": "การเปลี่ยนแปลงก่อน:",
+ "abusefilter-test-page": "การเปลี่ยนแปลงไปยังหน้า:",
+ "abusefilter-test-shownegative": "แสดงการเปลี่ยนแปลงที่ไม่ตรงกับตัวกรอง",
+ "abusefilter-test-syntaxerr": "ตัวกรองที่คุณกรอกนั้นมีวากยสัมพันธ์ผิดพลาด\nคุณสามารถดูคำอธิบายเต็มได้โดยคลิกปุ่ม \"{{int:abusefilter-edit-check}}\"",
+ "abusefilter-test-badtitle": "ชื่อหน้าที่คุณกรอกไม่สมเหตุสมผล โดยอาจมีอักขระที่ไม่สามารถใช้เป็นชื่อเรื่อง",
+ "abusefilter-changeslist-examine": "ตรวจสอบ",
+ "abusefilter-examine": "ตรวจสอบการเปลี่ยนแปลงจำเพาะ",
+ "abusefilter-examine-intro": "หน้านี้ให้คุณตรวจสอบตัวแปรที่ตัวกรองการละเมิดกฎสร้างสำหรับการเปลี่ยนแปลงจำเพาะ และทดสอบกับตัวกรอง",
+ "abusefilter-examine-legend": "เลือกการเปลี่ยนแปลง",
+ "abusefilter-examine-diff": "ยูอาร์แอลความแตกต่างระหว่างรุ่น:",
+ "abusefilter-examine-user": "ผู้ใช้:",
+ "abusefilter-examine-title": "ชื่อหน้า:",
+ "abusefilter-examine-submit": "ค้นหา",
+ "abusefilter-examine-vars": "ตัวแปรที่ถูกสร้างสำหรับการเปลี่ยนแปลงนี้",
+ "abusefilter-examine-test": "ทดสอบการเปลี่ยนแปลงนี้กับตัวกรอง",
+ "abusefilter-examine-test-button": "ทดสอบตัวกรอง",
+ "abusefilter-examine-match": "ตัวกรองตรงกับการเปลี่ยนแปลงนี้",
+ "abusefilter-examine-nomatch": "ตัวกรองไม่ตรงกับการเปลี่ยนแปลงนี้",
+ "abusefilter-examine-syntaxerror": "ตัวกรองมีวากยสัมพันธ์ไม่ถูกต้อง",
+ "abusefilter-examine-notfound": "ไม่พบการเปลี่ยนแปลงที่คุณขอ",
+ "abusefilter-examine-incompatible": "การเปลี่ยนแปลงที่คุณขอไม่ได้รับการสนับสนุนจากตัวกรองการละเมิดกฎ",
+ "abusefilter-examine-noresults": "ไม่พบผลลัพธ์ตัวแปรเสริมการค้นหาที่คุณระบุ",
+ "abusefilter-topnav": "'''ป้ายนำทางตัวกรองการละเมิดกฎ'''",
+ "abusefilter-topnav-home": "หน้าแรก",
+ "abusefilter-topnav-test": "การทดสอบกลุ่ม",
+ "abusefilter-topnav-examine": "ตรวจสอบการแก้ไขที่ผ่านมา",
+ "abusefilter-topnav-log": "ปูมการละเมิดกฎ",
+ "abusefilter-topnav-tools": "เครื่องมือแก้จุดบกพร่อง",
+ "abusefilter-topnav-import": "นำเข้าตัวกรอง",
+ "abusefilter-log-name": "ปูมตัวกรองการละเมิดกฏ",
+ "abusefilter-log-header": "ปูมนี้แสดงสรุปการเปลี่ยนแปลงต่อตัวกรอง \nสำหรับรายละเอียดเต็ม ดู[[Special:AbuseFilter/history|รายการ]]การเปลี่ยนแปลงตัวกรองล่าสุด",
+ "abusefilter-log-noresults": "ไม่มีผลลัพธ์",
+ "abusefilter-diff-title": "ความแตกต่างระหว่างรุ่น",
+ "abusefilter-diff-item": "รายการ",
+ "abusefilter-diff-version": "รุ่นเมื่อ $1 {{GENDER:$3|โดย}} $2",
+ "abusefilter-diff-info": "ข้อมูลเบื้องต้น",
+ "abusefilter-diff-pattern": "เงื่อนไขตัวกรอง",
+ "abusefilter-diff-invalid": "ไม่สามารถไปนำรุ่นที่ขอมาได้",
+ "abusefilter-diff-backhistory": "กลับไปยังประวัติตัวกรอง",
+ "abusefilter-diff-prev": "การเปลี่ยนแปลงที่เก่ากว่า",
+ "abusefilter-diff-next": "การเปลี่ยนแปลงที่ใหม่กว่า",
+ "abusefilter-import-submit": "นำเข้าข้อมูล",
+ "abusefilter-group-default": "ค่าโดยปริยาย"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/tk.json b/www/wiki/extensions/AbuseFilter/i18n/tk.json
new file mode 100644
index 00000000..cdb6a55f
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/tk.json
@@ -0,0 +1,329 @@
+{
+ "@metadata": {
+ "authors": [
+ "Hanberke",
+ "Matma Rex"
+ ]
+ },
+ "abusefilter-desc": "Özgerdişlerde awtomatik ewristik filtleri ulanýar",
+ "abusefilter": "Erbet ulanmak filtri konfigurasiýasy",
+ "abuselog": "Erbet ulanmak gündeligi",
+ "abusefilter-mustbeeditor": "Howpsuzlyk sebäpleri üçin, bu interfeýsi diňe erbet ulanmak filtrlerini üýtgetmäge hukugy bolan ulanyjylar ulanyp bilýär.",
+ "abusefilter-blocker": "Erbet ulanmak filtri",
+ "abusefilter-accountreserved": "Bu hasap ady betniýetli ulanyş filtri tarapyndan ulanylar ýaly ätiýaçlyga goýuldy.",
+ "right-abusefilter-modify": "Erbet ulanmak filtrlerini üýtget",
+ "right-abusefilter-view": "Erbet ulanmak filtrlerini görkez",
+ "right-abusefilter-log": "Erbet ulanmak gündeligini görkez",
+ "right-abusefilter-log-detail": "Jikme-jik gündelik girişlerini görkez",
+ "right-abusefilter-private": "Erbet ulanmak gündeligindäki hususy maglumatlary görkez",
+ "right-abusefilter-modify-restricted": "Çäklendirilen hereketli erbet ulanmak filtrlerini üýtget",
+ "right-abusefilter-revert": "Berlen erbet ulanmak filtri tarapyndan ähli üýtgeşmelri yzyna al",
+ "right-abusefilter-view-private": "Hususy diýlip bellenilen erbet ulanmak filtrlerini görkez",
+ "right-abusefilter-hide-log": "Betniýetli ulanyş gündeliginde ýazgylary gizle",
+ "right-abusefilter-hidden-log": "Gizlenilen betniýetli ulanyş gündeligi ýazgylaryny görkez",
+ "action-abusefilter-modify": "erbet ulanmak filtrlerini üýtget",
+ "action-abusefilter-view": "erbet ulanmak filtrlerini görkez",
+ "action-abusefilter-log": "erbet ulanmak gündeligini görkez",
+ "action-abusefilter-log-detail": "jikme-jik erbet ulanmak gündeligi girişlerini görkez",
+ "action-abusefilter-private": "erbet ulanmak gündeligindäki hususy maglumatlary görkez",
+ "action-abusefilter-modify-restricted": "çäklendirilen hereketli erbet ulanmak filtrlerini üýtgetmäge",
+ "action-abusefilter-revert": "berlen betniýetli ulanyş filtri tarapyndan edilen ähli üýtgeşmeleri yzyna al",
+ "action-abusefilter-view-private": "hususy diýlip bellenilen betniýetli ulanyş filtrlerini görkez",
+ "abusefilter-log": "Erbet ulanmak filtri gündeligi",
+ "abusefilter-log-summary": "Bu gündelik filtrlerde tutulan ähli hereketleriň sanawyny görkezýär.",
+ "abusefilter-log-search": "Erbet ulanmak gündeligini gözle",
+ "abusefilter-log-search-user": "Ulanyjy:",
+ "abusefilter-log-search-filter": "Filtr ID-si:",
+ "abusefilter-log-search-title": "At:",
+ "abusefilter-log-search-submit": "Gözle",
+ "abusefilter-log-entry": "$1: $2 bir erbet ulanmak filtrini işletdi, $4 sahypasynda \"$3\" hereketi ýerine ýetirilýär.\nEdilen hereketler: $5;\nFiltr düşündirişi: $6",
+ "abusefilter-log-detailedentry-meta": "$1: $2 şuny işletdi:$3, $5 sahypasynda \"$4\" hereketi ýerine ýetirilýär.\nEdilen hereketler: $6;\nFiltr düşündirişi: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "global filtr $1",
+ "abusefilter-log-detailedentry-local": "filtr $1",
+ "abusefilter-log-detailslink": "jikme-jiklikler",
+ "abusefilter-log-hidelink": "görüniş derejesini sazla",
+ "abusefilter-log-details-legend": "$1 gündeligi girişi jikme-jikligi",
+ "abusefilter-log-details-var": "Üýtgeýän",
+ "abusefilter-log-details-val": "Baha",
+ "abusefilter-log-details-vars": "Hereket parametrleri",
+ "abusefilter-log-details-private": "Hususy maglumat",
+ "abusefilter-log-details-ip": "Çeşme IP adresi",
+ "abusefilter-log-noactions": "ýok",
+ "abusefilter-log-details-diff": "Özgerdişde edilen üýtgeşmeler",
+ "abusefilter-log-linkoncontribs": "erbet ulanmak gündeligi",
+ "abusefilter-log-linkoncontribs-text": "Bu ulanyjy üçin Erbet Ulanmak Gündeligi",
+ "abusefilter-log-hidden": "(gizlin ýazgy)",
+ "abusefilter-log-details-hidden": "Bu ýazgy üçin jikme-jiklikleri görüp bilmeýärsiňiz, çünki ol jemgyýetçilikden gizlenilipdir",
+ "abusefilter-log-hide-legend": "Gündelik ýazgysyny gizle",
+ "abusefilter-log-hide-id": "Gündelik ýazgysynyň ID-si:",
+ "abusefilter-log-hide-hidden": "Bu ýazgyny köpçüligiň görmeginden gizle",
+ "abusefilter-log-hide-reason": "Sebäp:",
+ "abusefilter-log-hide-forbidden": "Betniýetli ulanyş gündeliginiň ýazgylaryny gizlemäge rugsadyňyz ýok.",
+ "abusefilter-logentry-suppress": "gizle: \"[[$1]]\"",
+ "abusefilter-logentry-unsuppress": "görkez: \"[[$1]]\"",
+ "abusefilter-management": "Erbet Ulanmak filtr dolandyryşy",
+ "abusefilter-list": "Ähli filtrler",
+ "abusefilter-list-id": "Filtr ID-si",
+ "abusefilter-list-status": "Status",
+ "abusefilter-list-public": "Umumy düşündiriş",
+ "abusefilter-list-consequences": "Netijeler",
+ "abusefilter-list-visibility": "Görünme derejesi",
+ "abusefilter-list-hitcount": "Hit sany",
+ "abusefilter-list-edit": "Redaktirle",
+ "abusefilter-list-details": "Jikme-jiklikler",
+ "abusefilter-list-limit": "Sahypa başyna sany:",
+ "abusefilter-list-lastmodified": "Soňky üýtgediş",
+ "abusefilter-hidden": "Hususy",
+ "abusefilter-unhidden": "Umumy",
+ "abusefilter-enabled": "Açyk",
+ "abusefilter-deleted": "Öçürildi",
+ "abusefilter-disabled": "Ýapyk",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|hit|hit}}",
+ "abusefilter-new": "Täze filtr döret",
+ "abusefilter-return": "Filtr dolandyryşyna gaýdyp bar",
+ "abusefilter-status-global": "Global",
+ "abusefilter-list-options": "Opsiýalar",
+ "abusefilter-list-options-deleted": "Öçürilen filtrler:",
+ "abusefilter-list-options-deleted-only": "Diňe öçürilen filtrleri görkez",
+ "abusefilter-list-options-deleted-hide": "Öçürilen filtrleri gizle",
+ "abusefilter-list-options-deleted-show": "Öçürilen filtreri degişli et",
+ "abusefilter-list-options-disabled": "Ýapyk filtrler:",
+ "abusefilter-list-options-hidedisabled": "Ýapyk filtrleri gizle",
+ "abusefilter-list-options-submit": "Täzele",
+ "abusefilter-tools-expr": "Aňlatma synagy",
+ "abusefilter-tools-submitexpr": "Baha ber",
+ "abusefilter-tools-reautoconfirm": "Awto-tassykly statusy yzyna dikelt",
+ "abusefilter-tools-reautoconfirm-user": "Ulanyjy:",
+ "abusefilter-tools-reautoconfirm-submit": "Gaýtadan awto-tassykla",
+ "abusefilter-reautoconfirm-none": "Bu {{GENDER:$1|ulanyjynyň|ulanyjynyň|ulanyjylaryň}} awtomatik tassyklanan statusy togtadylmady.",
+ "abusefilter-reautoconfirm-notallowed": "Awtomatik tassyklanan statusy yzyna dikeltmegiňize rugsat berilmeýär.",
+ "abusefilter-reautoconfirm-done": "Hasabyň awtomatik tassyklanan statusy yzyna dikeldildi",
+ "abusefilter-status": "Soňky $1 {{PLURAL:$1|hereketden|hereketden}} $2 (%$3) sanysy $4 şert çägine baryp ýetdi, $5 (%$6) sanysy bolsa häzirki açyk filtrleriň birine gabat geldi.",
+ "abusefilter-edit-subtitle": "$1 filtri redaktirlenýär",
+ "abusefilter-edit-status-label": "Statistikalar:",
+ "abusefilter-edit-status": "Bu filtr soňky $1 {{PLURAL:$1|hereketden|hereketden}} $2 (%$3) sanysyna gabat geldi.",
+ "abusefilter-edit-status-profile": "Bu filtr soňky $1 {{PLURAL:$1|hereketden|hereketden}} $2 (%$3) sanysyna gabat geldi.\nOrtaça alnanda, işlän wagty $4ms, we onuň şert çägi $5 sany şerti sarp edýär.",
+ "abusefilter-edit-new": "Täze filtr",
+ "abusefilter-edit-save": "Filtri ýazdyr",
+ "abusefilter-edit-id": "Filtr ID-si:",
+ "abusefilter-edit-description": "Düşündiriş:\n:''(köpçülige açyk)''",
+ "abusefilter-edit-flags": "Baýdaklar:",
+ "abusefilter-edit-enabled": "Bu filtri aç",
+ "abusefilter-edit-deleted": "Öçürildi diýip belle",
+ "abusefilter-edit-hidden": "Bu filtriň jikme-jikligini köpçülikden gizle",
+ "abusefilter-edit-global": "Bu filtri global berjaý et",
+ "abusefilter-edit-rules": "Şertler:",
+ "abusefilter-edit-notes": "Bellikler:\n:''(hususy)''",
+ "abusefilter-edit-lastmod": "Filtriň soňky üýtgedilişi:",
+ "abusefilter-edit-lastmod-text": "$2 tarapyndan $1",
+ "abusefilter-edit-hitcount": "Filtr hitleri:",
+ "abusefilter-edit-consequences": "Gabat gelende edilýäm hereketler",
+ "abusefilter-edit-action-disallow": "Ulanyjynyň soralýan hereketi amala aşyrmagynyň öňüni al",
+ "abusefilter-edit-action-degroup": "Ulanyjyny ähli artykmaç hukukly toparlardan aýyr",
+ "abusefilter-edit-action-block": "Ulanyjyny we/ýa-da IP adresini redaktirlemekden blokirle",
+ "abusefilter-edit-action-tag": "Özgerdişi ýene gözden geçiriler ýaly tegle",
+ "abusefilter-edit-throttle-count": "Rugsat berlen hereketleriň sany:",
+ "abusefilter-edit-throttle-period": "Wagt periody:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|sekunt|sekunt}}",
+ "abusefilter-edit-throttle-groups": "Topar gysyjy:\n:''(her setire bir sany, otur bilen birleşdiriň)''",
+ "abusefilter-edit-warn-message": "Duýduryş üçin ulanylýan ulgam habarlaşygy:",
+ "abusefilter-edit-warn-other": "Başga habarlaşyk",
+ "abusefilter-edit-warn-other-label": "Beýleki habarlaşygyň sahypa ady:\n:''(MediaWiki prefiksi bolmazdan)''",
+ "abusefilter-edit-warn-actions": "Hereketler:",
+ "abusefilter-edit-warn-preview": "Saýlanylan habarlaşygy deslapky synla",
+ "abusefilter-edit-warn-edit": "Saýlanylan habarlaşygy döret/redaktirle",
+ "abusefilter-edit-tag-tag": "Berjaý edilmeli tegler (her setire biri):",
+ "abusefilter-edit-denied": "Bu filtr üçin jikme-jiklikleri görüp bilmeýärsiňiz, çünki jemgyýetçilikden gizlenilipdir",
+ "abusefilter-edit-main": "Filtr parametrleri",
+ "abusefilter-edit-done-subtitle": "Filtr redaktirlendi",
+ "abusefilter-edit-done": "$1 filtri üçin üýtgeşmeleriňiz şowly ýazdyryldy.",
+ "abusefilter-edit-viewhistory": "Bu filtriň geçmişini görkez",
+ "abusefilter-edit-history": "Geçmiş:",
+ "abusefilter-edit-check": "Sintaksisi barla",
+ "abusefilter-edit-badfilter": "Görkezen filtriňiz ýok",
+ "abusefilter-edit-revert": "Bu filtr tarapyndan edilen işleri yzyna al",
+ "abusefilter-edit-tools": "Gurallar:",
+ "abusefilter-edit-test-link": "Bu filtri täze özgerdişler boýunça syna",
+ "abusefilter-edit-export": "Bu filtri başga wikä eksportirle",
+ "abusefilter-edit-syntaxok": "Hiç hili sintaksis säwligi tapylmady.",
+ "abusefilter-edit-syntaxerr": "Sintaksis säwligi tapyldy: $1",
+ "abusefilter-edit-bad-tags": "Görkezen tegleriňiziň biri ýa-da birnäçesi nädogry.\nTegler gysga bolmalydyr we içinde ýörite simwol bolmaly däldir.",
+ "abusefilter-edit-notallowed": "Betniýetli ulanyş filtrlerini döretmäge we redaktirlemäge rugsadyňyz ýok.",
+ "abusefilter-edit-builder-select": "Kursorda goşmak üçin bir opsiýa saýlaň",
+ "abusefilter-edit-builder-group-op-arithmetic": "Arifmetik operatorlar",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Goşmak (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Aýyrmak (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Köpeltmek (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Bölmek (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Modul (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Dereje (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Deňeşdirme operatorlary",
+ "abusefilter-edit-builder-op-comparison-equal": "Deňdir (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Deň däldir (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "Kiçidir (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Uludyr (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Kiçidir ýa-da deňdir (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Uludyr ýa-da deňdir (>=)",
+ "abusefilter-edit-builder-group-op-bool": "Bulew operatorlary",
+ "abusefilter-edit-builder-op-bool-not": "Däldir (!)",
+ "abusefilter-edit-builder-op-bool-and": "We (&)",
+ "abusefilter-edit-builder-op-bool-or": "Ýa-da (|)",
+ "abusefilter-edit-builder-group-misc": "Dürli",
+ "abusefilter-edit-builder-misc-in": "setirde bar (in)",
+ "abusefilter-edit-builder-misc-like": "nagyş gabat gelýär (like)",
+ "abusefilter-edit-builder-misc-rlike": "Regulýar aňlatma gabat gelýär (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "Regulýar aňlatma gabat gelýär, baş-setir harpa duýgur däl (irlike)",
+ "abusefilter-edit-builder-misc-contains": "Çep setirde sag setir bar (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "Setir aňlatmasy(\"\")",
+ "abusefilter-edit-builder-misc-tern": "Ternar operator (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "Şert (if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "Funksiýalar",
+ "abusefilter-edit-builder-funcs-length": "Setir uzynlygy (length)",
+ "abusefilter-edit-builder-funcs-lcase": "Setir harpa geçir (lcase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "Köpmanyly simwollary kadalaşdyr (ccnorm)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "Gaýtalanýan simwollary aýyr (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "Ýörite simwollar / jemi simwollar (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "Kadalaşdyr (norm)",
+ "abusefilter-edit-builder-funcs-count": "X setiriniň Y setirinde görünýän sany (count)",
+ "abusefilter-edit-builder-funcs-rcount": "X regulýar aňlatmasynyň Y setirinde görünýän sany (rcount)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "Boş ýeri aýyr (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "Ýörite simwollary aýyr (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "IP aralykdamy? (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "Setiri birden köp kiçi setir üçin gözle (contains_any)",
+ "abusefilter-edit-builder-funcs-substr": "Kiçi setir (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "Kiçi setiriň setirdäki orny (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "Kiçi setiri setir bilen çalşyr (str_replace)",
+ "abusefilter-edit-builder-funcs-set_var": "Üýtgeýäni sazla (set_var)",
+ "abusefilter-edit-builder-group-vars": "Üýtgeýänler",
+ "abusefilter-edit-builder-vars-accountname": "Hasap ady (hasap döredilende)",
+ "abusefilter-edit-builder-vars-timestamp": "Üýtgeşmäniň Unix wagt belgisi",
+ "abusefilter-edit-builder-vars-action": "Hereket",
+ "abusefilter-edit-builder-vars-addedlines": "Özgerdişe goşulan setirler",
+ "abusefilter-edit-builder-vars-delta": "Özgerdişde ölçeg üýtgeşmesi",
+ "abusefilter-edit-builder-vars-diff": "Özgerdiş tarapyndan edilen üýtgeşmeleriň birleşdirilen aratapawudy",
+ "abusefilter-edit-builder-vars-newsize": "Täze sahypa ölçegi",
+ "abusefilter-edit-builder-vars-oldsize": "Köne sahypa ölçegi",
+ "abusefilter-edit-builder-vars-removedlines": "Özgerdişden aýrylan setirler",
+ "abusefilter-edit-builder-vars-summary": "Özgerdiş düşündirişi/sebäbi",
+ "abusefilter-edit-builder-vars-article-id": "Sahypa ID-si",
+ "abusefilter-edit-builder-vars-article-ns": "Sahypa at giňişligi",
+ "abusefilter-edit-builder-vars-article-text": "Sahypa ady (at giňişliksiz)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Doly sahypa ady",
+ "abusefilter-edit-builder-vars-movedfrom-id": "Geçirme çeşme sahypasynyň sahypa ID-si",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "Geçirme çeşme sahypasynyň at giňişligi",
+ "abusefilter-edit-builder-vars-movedfrom-text": "Geçirilýän çeşme sahypanyň ady",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "Geçirilýän çeşme sahypanyň doly ady",
+ "abusefilter-edit-builder-vars-movedto-id": "Geçirilýän niýetlenilýän sahypanyň sahypa ID-si",
+ "abusefilter-edit-builder-vars-movedto-ns": "Geçirilýän niýetlenilýän sahypanyň at giňişligi",
+ "abusefilter-edit-builder-vars-movedto-text": "Geçirilýän niýetlenilýän sahypanyň ady",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "Geçirilýän niýetlenilýän sahypanyň doly ady",
+ "abusefilter-edit-builder-vars-user-editcount": "Ulanyjynyň özgerdiş sany",
+ "abusefilter-edit-builder-vars-user-age": "Ulanyjy hasabynyň ýaşy",
+ "abusefilter-edit-builder-vars-user-name": "Ulanyjy hasabynyň ady",
+ "abusefilter-edit-builder-vars-user-groups": "Ulanyjylaryň degişli bolup durýan toparlary (gönümel däl toparlar hem degişli)",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "E-poçta adresi tassyklanylan wagty",
+ "abusefilter-edit-builder-vars-recent-contributors": "Sahypa goşant goşan soňky on ulanyjy",
+ "abusefilter-edit-builder-vars-all-links": "Täze tekstdäki ähli daşarky çykgytlar",
+ "abusefilter-edit-builder-vars-added-links": "Özgerdişe goşulan ähli daşarky çykgytlar",
+ "abusefilter-edit-builder-vars-removed-links": "Özgerdişden aýyrlan ähli daşarky çykgytlar",
+ "abusefilter-edit-builder-vars-old-text": "Köne sahypa wikiteksti, özgerdişden öň",
+ "abusefilter-edit-builder-vars-new-text": "Täze sahypa wikiteksti, özgerdişden soň",
+ "abusefilter-edit-builder-vars-new-text-stripped": "Täze sahypa teksti, hiçhili belliksiz",
+ "abusefilter-edit-builder-vars-new-html": "Täze wersiýanyň tertibe salnan HTML çeşmesi",
+ "abusefilter-edit-builder-vars-restrictions-edit": "Sahypanyň redaktirleme gorag derejesi",
+ "abusefilter-edit-builder-vars-restrictions-move": "Sahypanyň gorag derejesini geçir",
+ "abusefilter-edit-builder-vars-old-text-stripped": "Köne sahypa teksti, hiçhili belliksiz",
+ "abusefilter-edit-builder-vars-old-links": "Sahypadaky çykgytlar, özgerdişden öňki",
+ "abusefilter-edit-builder-vars-old-html": "Köne sahypanyň wikiteksti, HTML-de tertiplenen",
+ "abusefilter-edit-builder-vars-minor-edit": "Özgerdiş \"ujypsyzja\" diýlip bellenilen bolsa-da, bolmasa-da",
+ "abusefilter-edit-builder-vars-file-sha1": "Faýl mazmunlarynyň SHA1 heşi",
+ "abusefilter-filter-log": "Soňky filtr üýtgeşmeleri",
+ "abusefilter-history": "Erbet ulanmak filtri #$1 üçin üýtgeşme geçmişi",
+ "abusefilter-history-foruser": "$1 tarapyndan üýtgeşmeler",
+ "abusefilter-history-hidden": "Gizlenilgi",
+ "abusefilter-history-enabled": "Açyk",
+ "abusefilter-history-global": "Global",
+ "abusefilter-history-timestamp": "Wagt",
+ "abusefilter-history-user": "Ulanyjy",
+ "abusefilter-history-public": "Açyk filtr düşündirişi",
+ "abusefilter-history-flags": "Baýdaklar",
+ "abusefilter-history-filter": "Filtr kadasy",
+ "abusefilter-history-comments": "Teswirler",
+ "abusefilter-history-actions": "Hereketler",
+ "abusefilter-history-backedit": "Filtr redaktoryna gaýdyp bar",
+ "abusefilter-history-deleted": "Öçürildi",
+ "abusefilter-history-filterid": "Filtr",
+ "abusefilter-history-select-legend": "Gözlegi takykla",
+ "abusefilter-history-select-user": "Ulanyjy:",
+ "abusefilter-history-select-submit": "Takykla",
+ "abusefilter-history-diff": "Üýtgeşmeler",
+ "abusefilter-history-error-hidden": "Talap eden filtriňiz gizlenilgi we onuň geçmişini görüp bilmeýärsiňiz.",
+ "abusefilter-exception-unexpectedatend": "$1 simwolynda garaşylmaýan \"$2\".",
+ "abusefilter-exception-expectednotfound": "$1 simwolynda $2 koduna garaşylýardy, ol tapylmady (deregine $3 $4 tapyldy).",
+ "abusefilter-exception-unrecognisedkeyword": "$1 simwolynda ykrar edilmedik açarsöz $2",
+ "abusefilter-exception-unexpectedtoken": "$1 simwolynda garaşylmaýan bellik \"$3\" ($2 görnüşinde).",
+ "abusefilter-exception-unclosedstring": "$1 simwolynda başlaýan ýapylmadyk setir",
+ "abusefilter-exception-invalidoperator": "$1 simwolynda nädogry operator \"$2\".",
+ "abusefilter-exception-unrecognisedtoken": "$1 simwolynda ykrar edilmedik bellik $2",
+ "abusefilter-exception-noparams": "\"$2\" funksiýasyna $1 simwolynda hiç hili parametr berilmedi",
+ "abusefilter-exception-unrecognisedvar": "$1 simwolynda ykrar edilmedik üýtgeýän $2",
+ "abusefilter-exception-regexfailure": "\"$3\" regulýar aňlatmasynyň $1 simwolynda säwlik: \"$2\"",
+ "abusefilter-action-tag": "Teg",
+ "abusefilter-action-throttle": "Gysmak",
+ "abusefilter-action-warn": "Duýdur",
+ "abusefilter-action-blockautopromote": "Blokirleme awtobeýgelişi",
+ "abusefilter-action-block": "Blokirle",
+ "abusefilter-action-degroup": "Toparlardan aýyr",
+ "abusefilter-action-rangeblock": "Diapazon blokirlemesi",
+ "abusefilter-action-disallow": "Rugsat berme",
+ "abusefilter-revert-title": "$1 filtri tarapyndan edilen ähli üýtgeşmeleri yzyna al",
+ "abusefilter-revert-periodstart": "Period başlangyjy:",
+ "abusefilter-revert-periodend": "Period gutaryşy:",
+ "abusefilter-revert-search": "Hereketleri saýla",
+ "abusefilter-revert-filter": "Filtr:",
+ "abusefilter-revert-confirm": "Tassykla",
+ "abusefilter-revert-reasonfield": "Yzyna alma sebäbi:",
+ "abusefilter-test": "Öňki özgerdişler üçin filtr syna",
+ "abusefilter-test-legend": "Filtr synagy",
+ "abusefilter-test-load-filter": "Filtr ID-sini ýükle:",
+ "abusefilter-test-submit": "Syna",
+ "abusefilter-test-load": "Ýükle",
+ "abusefilter-test-user": "Ulanyjynyň üýtgeşmeleri:",
+ "abusefilter-test-period-start": "Şundan soň edilen üýtgeşmeler:",
+ "abusefilter-test-period-end": "Şundan öň edilen üýtgeşmeler:",
+ "abusefilter-test-page": "Sahypada edilen üýtgeşmeler:",
+ "abusefilter-test-shownegative": "Filtre gabat gelmeýän üýtgeşmeleri görkez",
+ "abusefilter-changeslist-examine": "gözden geçir",
+ "abusefilter-examine": "Aýratyn üýtgeşmeleri gözden geçir",
+ "abusefilter-examine-legend": "Üýtgeşmeleri saýla",
+ "abusefilter-examine-diff": "Aratapawut URL-si:",
+ "abusefilter-examine-user": "Ulanyjy:",
+ "abusefilter-examine-title": "Sahypa ady:",
+ "abusefilter-examine-submit": "Gözle",
+ "abusefilter-examine-vars": "Bu üýtgeşme üçin döredilen üýtgeýänler",
+ "abusefilter-examine-test": "Bu üýtgeşmäni bir filtrde syna",
+ "abusefilter-examine-test-button": "Filtri syna",
+ "abusefilter-examine-match": "Filtr bu üýtgeşmä gabat geldi.",
+ "abusefilter-examine-nomatch": "Filtr bu üýtgeşmä gabat gelmedi.",
+ "abusefilter-examine-syntaxerror": "Filtriň nädogry sintaksisi bar",
+ "abusefilter-examine-notfound": "Talap eden üýtgeşmäňiz tapdyrmady.",
+ "abusefilter-examine-noresults": "Beren gözleg parametrleriňiz üçin hiç hili netije tapylmady.",
+ "abusefilter-topnav": "'''Erbet ulanmak filtr nawigasiýasy'''",
+ "abusefilter-topnav-home": "Öý",
+ "abusefilter-topnav-test": "Tapgyrlaýyn synag",
+ "abusefilter-topnav-examine": "Öňki özgerdişleri gözden geçir",
+ "abusefilter-topnav-log": "Erbet ulanmak gündeligi",
+ "abusefilter-topnav-tools": "Otkladka gurallary",
+ "abusefilter-topnav-import": "Filtri importirle",
+ "abusefilter-log-name": "Erbet ulanmak filtr gündeligi",
+ "abusefilter-log-header": "Bu gündelik filtrlerde edilen üýtgeşmeleriň düşündirişini görkezýär.\nJikme-jik maglumat üçin, soňky filtr üýtgeşmeleriniň [[Special:AbuseFilter/history|sanawyna]] serediň.",
+ "abusefilter-diff-title": "Wersiýalaryň aratapawutlary",
+ "abusefilter-diff-item": "Element",
+ "abusefilter-diff-version": "$2 tarapyndan $1 çykgydyndan wersiýa",
+ "abusefilter-diff-info": "Esasy maglumat",
+ "abusefilter-diff-pattern": "Filtr şertleri",
+ "abusefilter-diff-invalid": "Soralýan wersiýalary alyp bolmaýar",
+ "abusefilter-diff-backhistory": "Filtr geçmişine gaýt",
+ "abusefilter-import-intro": "Bu interfeýsi başga wikilerden filtr importirlemek üçin ulanyp bilersiňiz.\nÇeşme wikide, redaktirleme interfeýsinde \"{{int:abusefilter-edit-tools}}\"yň aşagyndaky \"{{int:abusefilter-edit-export}}\" çykgydyna tyklaň.\nPeýda bolan tekst gutusyndan göçürip alyň we ony şu tekst gutusyna ýelmäň. Soňra \"{{int:abusefilter-import-submit}}\"a tyklaň.",
+ "abusefilter-import-submit": "Maglumatlary importirle"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/tl.json b/www/wiki/extensions/AbuseFilter/i18n/tl.json
new file mode 100644
index 00000000..e198b98c
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/tl.json
@@ -0,0 +1,382 @@
+{
+ "@metadata": {
+ "authors": [
+ "AnakngAraw",
+ "Jojit fb",
+ "Matma Rex",
+ "Emem.calist"
+ ]
+ },
+ "abusefilter-desc": "Naghahain ng mga kusang gabay-aral/heuristiko sa mga pamamatnugot",
+ "abusefilter": "Pagkakaayos ng pansala ng pang-aabuso",
+ "abuselog": "Tala ng pang-aabuso",
+ "abusefilter-intro": "Maligayang pagdating sa ugnayang-hangganan ng pamamahala ng Pansala ng Pang-aabuso.\nAng Pansala ng Pang-aabuso ay isang kusang mekanismo ng sopwer ng paggamit ng automatikong tulong ng pagkatuto sa lahat ng mga kilos.\nNagpapakita ang ugnayang-hangganang ito ng isang talaan ng binigyang kahulugang mga pansala, at nagpapahintulot na mabago ang mga ito.",
+ "abusefilter-mustbeeditor": "Para sa mga dahilang pangkaligtasan, mga tagagamit lamang na may karapatang baguhin ang mga pansala ng pang-aabuso ang maaaring gumamit ng ugnayang-hangganang ito.",
+ "abusefilter-warning": "'''Babala''': Ang galaw na ito ay kusang kinilala bilang mapanganib. Mabilisang ibabalik sa dati ang hindi nakapagpapainam na pagbabago, at magbubunga ang kapansin-pansin at paulit-ulit na hindi maiinam na pagbabago ng pagharang sa akawnt o adres ng IP. Kung sa tingin mong mainam ang pagbabagong ito, maaaring mong pindutin uli ang Ipasa upang tiyakin ito. Isang maikling paglalarawan ng alituntunin sa pang-aabuso na tumugma sa iyong galaw ang: $1",
+ "abusefilter-disallowed": "Ang kilos na ito ay kusang nakilala bilang makakapinsala,\nkaya't hindi pinahintulutan.\nKung naniniwala kang mabuti ang iyong ginawang pagbabago, makipag-ugnayan sa isang tagapangasiwa, at ipagbigay-alam sa kanila ang kung ano ang sinusubok mong gawin.\nIsang maiksing paglalarawan ng alituntunin sa pang-aabuso na tumugma sa kilos mo ang: $1",
+ "abusefilter-blocked-display": "Ang kilos na ito ay kusang nakilala bilang makakapinsala,\nat pinigilan ang pagsasakatuparan mo nito.\nBilang karagdagan, upang mapagsanggalang ang {{SITENAME}}, hinadlangan sa paggawa ng mga pagbabago ang iyong akawnt at lahat ng mga kaugnay na adres ng IP.\nKung naganap ito dahil sa isang pagkakamali, makipag-ugnayan sa isang tagapangasiwa.\nIsang maiksing paglalarawan ng alituntunin sa pang-aabuso na tumugma sa kilos mo ang: $1",
+ "abusefilter-degrouped": "Ang kilos na ito ay kusang nakilala bilang makakapinsala.\nBilang kinahinatnan, hindi ito pinahintulutan, at, dahil sa pinaghihinalaang nalantad sa kapahamakan ang kuwenta mo, pinawalan ng bisa ang lahat ng mga karapatan.\nKung naniniwala kang isa itong pagkakamali, makipag-ugnayan sa isang burokrato na may isang paliwanag hinggil sa kilos na ito, at maaaring maibalik sa dati ang mga karapatan mo.\nIsang maiksing paglalarawan ng alituntunin sa pang-aabuso na tumugma sa kilos mo ang: $1",
+ "abusefilter-autopromote-blocked": "Ang kilos na ito ay kusang nakilala bilang makakapinsala, at hindi ito pinahintulutan.\nBilang karagdagan, bilang isang pamamaraang pangkaligtasan, pansamantalang pinawalan ng bisa ang ilang mga pribilehiyong palagiang ibinibigay sa kinikilala nang mga akawnt.\nIsang maiksing paglalarawan ng alituntunin sa pang-aabuso na tumugma sa kilos mo ang: $1",
+ "abusefilter-blocker": "Pansala ng pang-aabuso",
+ "abusefilter-blockreason": "Kusang hinadlangan ng pansala ng pang-aabuso. Paglalarawan ng tumugmang alituntunin: $1",
+ "abusefilter-degroupreason": "Mga karapatang kusang tinanggal ng pansala ng pang-aabuso. Paglalarawan ng alituntunin: $1",
+ "abusefilter-accountreserved": "Nakalaan ang pangalan ng akawnt na ito para magamit ng pansala ng pang-aabuso.",
+ "right-abusefilter-modify": "Baguhin ang mga pansala ng pang-aabuso",
+ "right-abusefilter-view": "Tingnan ang mga pansala ng pang-aabuso",
+ "right-abusefilter-log": "Tingnan ang tala ng pang-aabuso",
+ "right-abusefilter-log-detail": "Tingnan ang detalyadong mga ipinasok sa tala ng pang-aabuso",
+ "right-abusefilter-private": "Tingnan ang pansariling datong nasa loob ng tala ng pang-aabuso",
+ "right-abusefilter-modify-restricted": "Baguhin ang mga pansala ng pang-aabuso na may hangganan sa mga paggalaw",
+ "right-abusefilter-revert": "Ibalik sa dati ang lahat ng mga pagbabagong ginawa ng isang partikular na pansala ng pang-aabuso",
+ "right-abusefilter-view-private": "Tingnan ang mga pansala ng pang-aabuso bilang pribado",
+ "right-abusefilter-log-private": "Tingnan ang mga paglalahok sa talaan ng mga pansala ng pang-aabuso na minarkahan bilang pribado",
+ "right-abusefilter-hide-log": "Itago ang mga pagpapasok sa tala ng pang-aabuso",
+ "right-abusefilter-hidden-log": "Tingnan ang mga ipinasok sa tala ng pang-aabuso",
+ "action-abusefilter-modify": "baguhin ang mga pansala ng pang-aabuso",
+ "action-abusefilter-view": "tingnan ang mga pansala ng pang-aabuso",
+ "action-abusefilter-log": "tingnan ang talaan ng pang-aabuso",
+ "action-abusefilter-log-detail": "tingnan ang detalyadong mga ipinasok sa talaan ng pang-aabuso",
+ "action-abusefilter-private": "tingnan ang pribadong datong nasa loob ng talaan ng pang-aabuso",
+ "action-abusefilter-modify-restricted": "baguhin ang mga pansala ng pang-aabuso na may mga kilos na may hangganan",
+ "action-abusefilter-revert": "ibalik sa dati ang lahat ng mga pagbabago ginawa ng isang ibinigay na pansala ng pang-aabuso",
+ "action-abusefilter-view-private": "tingnan ang mga pansala ng pang-aabuso na tinatakan bilang pribado",
+ "abusefilter-log": "Tala ng pansala ng pang-aabuso",
+ "abusefilter-log-summary": "Nagpapakita ang talaang ito ng isang talaan ng lahat ng mga kilos na nahuli ng mga pansala.",
+ "abusefilter-log-search": "Maghanap sa tala ng pang-aabuso",
+ "abusefilter-log-search-user": "Tagagamit:",
+ "abusefilter-log-search-filter": "ID ng pansala:",
+ "abusefilter-log-search-title": "Pamagat:",
+ "abusefilter-log-search-wiki": "Wiki:",
+ "abusefilter-log-search-impact-all": "Lahat, kung ano man",
+ "abusefilter-log-search-action-taken-label": "Natatanging Hakbang",
+ "abusefilter-log-search-action-taken-any": "Kahit Ano",
+ "abusefilter-log-search-submit": "Maghanap",
+ "abusefilter-log-entry": "$1: nagpagalaw si $2 ng isang pansala ng pang-aabuso, na nagsagawa ng $3 sa $4.\nMga kilos na ginawa: $5;\nPaglalarawan ng pansala: $6",
+ "abusefilter-log-detailedentry-meta": "$1: nagpagalaw si $2 ng $3, na nagsagawa ng kilos na $4 sa $5. Mga kilos na ginawa: $6; Paglalarawan ng pansala: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "Pansalang pandaigdigang $1",
+ "abusefilter-log-detailedentry-local": "pansalang $1",
+ "abusefilter-log-detailslink": "mga detalye",
+ "abusefilter-log-diff": "pagkakaiba",
+ "abusefilter-log-hidelink": "ayusin ang pagkanakikita",
+ "abusefilter-log-details-legend": "Mga detalye para sa ipinasok sa talang $1",
+ "abusefilter-log-details-var": "Pabagu-bago",
+ "abusefilter-log-details-val": "Halaga",
+ "abusefilter-log-details-vars": "Mga parametro ng kilos",
+ "abusefilter-log-details-private": "Pansariling dato",
+ "abusefilter-log-details-ip": "Pinagmumulang adres ng IP",
+ "abusefilter-log-noactions": "wala",
+ "abusefilter-log-details-diff": "Mga pagbabagong ginawa sa pamamatnugot",
+ "abusefilter-log-linkoncontribs": "Tala ng pang-aabuso",
+ "abusefilter-log-linkoncontribs-text": "Tala ng Pang-aabuso para sa tagagamit na ito",
+ "abusefilter-log-hidden": "(nakatago ang ipinasok)",
+ "abusefilter-log-hidden-implicit": "(nakakubli dahil nabura ang rebisyon)",
+ "abusefilter-log-cannot-see-details": "Wala kang pahintulot upang tingnan ang mga detalye ng lahok na ito.",
+ "abusefilter-log-details-hidden": "Hindi mo makikita ang mga detalye para sa ipinasok na ito dahil nakatago ito mula sa pagtanaw ng madla.",
+ "abusefilter-log-hide-legend": "Itago ang ipinasok sa tala",
+ "abusefilter-log-hide-id": "ID ng pagpasok sa tala:",
+ "abusefilter-log-hide-hidden": "Itago ang ipinasok na ito mula sa paningin ng madla",
+ "abusefilter-log-hide-reason": "Dahilan:",
+ "abusefilter-log-hide-forbidden": "Wala kang pahintulot na itago ang mga pagpapasok sa tala ng pang-aabuso.",
+ "abusefilter-logentry-suppress": "itinago ang \"[[$1]]\"",
+ "abusefilter-logentry-unsuppress": "hindi itinago ang \"[[$1]]\"",
+ "logentry-abusefilter-hit": "Nakanti ni $1 ang $4, na nagsagawa ng kilos na \"$5\" doon sa $3. Mga kilos na ginawa: $6 ($7)",
+ "abusefilter-management": "Pamamahala ng pansala ng pang-aabuso",
+ "abusefilter-list": "Lahat ng mga pansala",
+ "abusefilter-list-id": "ID ng pansala",
+ "abusefilter-list-status": "Kalagayan",
+ "abusefilter-list-public": "Pangmadlang paglalarawan",
+ "abusefilter-list-consequences": "Mga kahihinatnan",
+ "abusefilter-list-visibility": "Pagpapatanaw",
+ "abusefilter-list-hitcount": "Bilang ng paghagip",
+ "abusefilter-list-edit": "Baguhin",
+ "abusefilter-list-details": "Mga detalye",
+ "abusefilter-list-limit": "Bilang sa bawat pahina:",
+ "abusefilter-list-lastmodified": "Huling nabago",
+ "abusefilter-list-group": "Kapangkatan ng pansala",
+ "abusefilter-hidden": "Pansarili",
+ "abusefilter-unhidden": "Pangmadla",
+ "abusefilter-enabled": "Pinagagana",
+ "abusefilter-deleted": "Binura",
+ "abusefilter-disabled": "Hindi pinagana",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|paghagip|mga paghagip}}",
+ "abusefilter-new": "Lumikha ng isang bagong pansala",
+ "abusefilter-return": "Bumalik sa pamamahala ng pansala",
+ "abusefilter-status-global": "Pandaigdigan",
+ "abusefilter-list-options": "Mga pagpipilian",
+ "abusefilter-list-options-deleted": "Naburang mga pansala:",
+ "abusefilter-list-options-deleted-only": "Ipakita lang ang naburang mga pansala",
+ "abusefilter-list-options-deleted-hide": "Itago ang naburang mga pansala",
+ "abusefilter-list-options-deleted-show": "Isama ang naburang mga pansala",
+ "abusefilter-list-options-scope": "Ipakita ang mga pansala magmula sa:",
+ "abusefilter-list-options-scope-local": "Katutubong wiki",
+ "abusefilter-list-options-scope-global": "Mga patakarang pangglobo",
+ "abusefilter-list-options-disabled": "Hindi pinagaganang mga pansala:",
+ "abusefilter-list-options-hidedisabled": "Itago ang hindi pinagaganang mga pansala",
+ "abusefilter-list-options-submit": "Isapanahon",
+ "abusefilter-tools-text": "Narito ang ilang mga kagamitang maaaring maging kapakipakinabang sa paggawa ng at pagtatanggal ng depekto mula sa mga pansala ng pang-aabuso.",
+ "abusefilter-tools-expr": "Tagapagsubok ng pagsasaad",
+ "abusefilter-tools-submitexpr": "Suriin",
+ "abusefilter-tools-reautoconfirm": "Ibalik ang kusang natiyak na kalagayan",
+ "abusefilter-tools-reautoconfirm-user": "Tagagamit:",
+ "abusefilter-tools-reautoconfirm-submit": "Muling tiyakin ng kusa",
+ "abusefilter-reautoconfirm-none": "Ang tagagamit na iyan ay hindi pa nasususpindi kailanman ang {{GENDER:$1|kanyang|kanyang|kanilang}} kalagayang kusang natiyak.",
+ "abusefilter-reautoconfirm-notallowed": "Hindi ka pinapahintulutang makapagpabalik ng kalagayang kusang natiyak.",
+ "abusefilter-reautoconfirm-done": "Muli nang naibalik ang kusang natiyak na kalagayan ng akawnt",
+ "abusefilter-status": "Mula sa huling $1 {{PLURAL:$1|kilos|mga kilos}}, $2 ($3%) {{PLURAL:$2|ang|ang mga}} umabot na sa kalakarang hangganan na $4, at $5 ($6%) {{PLURAL:$5|ang|ang mga}} tumugma sa isa sa pangkasalukuyang pinagaganang mga pansala.",
+ "abusefilter-edit-subtitle": "Binabago ang pansalang $1",
+ "abusefilter-edit-subtitle-new": "Nililikha ang pansala",
+ "abusefilter-edit-oldwarning": "<strong>Binabago mo ang isang lumang bersyon ng pansalang ito. Ang siniping mga estadistika ay para sa pinakakamakailang bersyon ng pansala. Kapag sinagip mo ang iyong mga pagbabago, mapapatungan mo ang lahat ng mga pagbabago magmula sa rebisyong pinapatnugutan mo.</strong> &bull; [[Special:AbuseFilter/history/$2|Bumalik sa kasaysayan ng pansalang ito]]",
+ "abusefilter-edit-status-label": "Mga estadistika:",
+ "abusefilter-edit-status": "Mula sa huling $1 na {{PLURAL:$1|kilos|mga kilos}}, tumugma ang pansalang ito sa $2 ($3%).",
+ "abusefilter-edit-status-profile": "Mula sa huling $1 na {{PLURAL:$1|kilos|mga kilos}}, tumugma ang pansalang ito sa $2 ($3%).\nSa karaniwan, ang oras ng pagtakbo nito ay $4ms, at gumugugol ng $5 na {{PLURAL:$5|kundisyon|mga kundisyon}} ng hangganan ng kundisyon.",
+ "abusefilter-edit-new": "Bagong pansala",
+ "abusefilter-edit-save": "Itala ang pansala",
+ "abusefilter-edit-id": "ID ng pansala:",
+ "abusefilter-edit-description": "Paglalarawan:\n:''(matatanaw ng madla)''",
+ "abusefilter-edit-group": "Kapangkatan ng pansala:",
+ "abusefilter-edit-flags": "Mga bandila:",
+ "abusefilter-edit-enabled": "Paganahin ang pansalang ito",
+ "abusefilter-edit-deleted": "Tatakan bilang nabura",
+ "abusefilter-edit-hidden": "Itago ang mga detalye ng pansalang ito mula sa pagtanaw ng madla",
+ "abusefilter-edit-global": "Pansalang pangglobo",
+ "abusefilter-edit-rules": "Mga kalakaran:",
+ "abusefilter-edit-notes": "Mga tala:\n:''(pansarili)",
+ "abusefilter-edit-lastmod": "Huling nabago ang pansala:",
+ "abusefilter-edit-lastmod-text": "$1 ni $2",
+ "abusefilter-edit-hitcount": "Mga paghagip sa pansala:",
+ "abusefilter-edit-consequences": "Mga kilos na ginawa noong tumugma",
+ "abusefilter-edit-action-warn": "Paganahin ang mga kilos na ito pagkaraang bigyan ng isang babala ang tagagamit",
+ "abusefilter-edit-action-disallow": "Pigilan ang tagagamit na magawa ang kilos na sinisiyasat",
+ "abusefilter-edit-action-blockautopromote": "Pawalan ng bisa ang kalagayang kusang natiyak ng tagagamit",
+ "abusefilter-edit-action-degroup": "Tanggalin ang tagagamit mula sa lahat ng mga pangkat na may pribilehiyo",
+ "abusefilter-edit-action-block": "Hadlangan ang tagagamit at/o adres ng IP na makagawa ng pagbabago",
+ "abusefilter-edit-action-throttle": "Paganahin lamang ang mga kilos kapag nasanggi na ng tagagamit ang isang hangganang halaga",
+ "abusefilter-edit-action-rangeblock": "Hadlangan ang saklaw na /16 na pinagmumulan ng tagagamit.",
+ "abusefilter-edit-action-tag": "Tatakan ang pagbabago para sa karagdagang pagsusuri.",
+ "abusefilter-edit-throttle-count": "Bilang ng papayagang mga kilos:",
+ "abusefilter-edit-throttle-period": "Panahong saklaw:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|segundo|mga segundo}}",
+ "abusefilter-edit-throttle-groups": "Siiling nakapangkat sa pamamagitan ng:\n:''(isa bawat guhit, pagsamahing may mga kuwit)''",
+ "abusefilter-edit-warn-message": "Mensahe ng sistemang gagamitin para sa babala:",
+ "abusefilter-edit-warn-other": "Iba pang mensahe",
+ "abusefilter-edit-warn-other-label": "Pangalan ng pahina ng iba pang mensahe:\n:''(walang unlapi ng MediaWiki)''",
+ "abusefilter-edit-warn-actions": "Mga kilos:",
+ "abusefilter-edit-warn-preview": "Paunang tingnan muna ang piniling mensahe",
+ "abusefilter-edit-warn-edit": "Likhain/Baguhin ang piniling mensahe",
+ "abusefilter-edit-tag-tag": "Mga tatak na gagamitin (isa sa bawat guhit):",
+ "abusefilter-edit-denied": "Hindi mo maaaring tingnan ang mga detalye ng pansalang ito, dahil nakatago ito mula sa pagtanaw ng madla.",
+ "abusefilter-edit-main": "Mga parametro ng pansala",
+ "abusefilter-edit-done-subtitle": "Binagong pansala",
+ "abusefilter-edit-done": "Matagumpay mong naitala ang iyong mga binago sa [[Special:AbuseFilter/$1|pansalang $3]].",
+ "abusefilter-edit-badsyntax": "May isang kamalian ng palaugnayan sa loob ng tinukoy mong pansala. Ang kinalabasan mula sa banghay ay: <pre>$1</pre>",
+ "abusefilter-edit-restricted": "Hindi mo mababago ang pansalang ito, dahil naglalaman ito ng isa o mahigit pang mga pinagbabawal na mga kilos. Pakihiling sa isang tagagamit na may pahintulot na magdagdag ng pinagbabawal na mga kilos na gawin ang pagbabago para sa iyo.",
+ "abusefilter-edit-viewhistory": "Kasaysayan ng pansalang ito",
+ "abusefilter-edit-history": "Kasaysayan:",
+ "abusefilter-edit-check": "Suriin ang palaugnayan",
+ "abusefilter-edit-badfilter": "Hindi umiiral ang tinukoy mong pansala",
+ "abusefilter-edit-revert": "Ibalik sa dati ang mga kilos na ginawa ng pansalang ito",
+ "abusefilter-edit-tools": "Mga kagamitan:",
+ "abusefilter-edit-test-link": "Subukin ang pansalang ito laban sa kamakailang mga pagbabago",
+ "abusefilter-edit-export": "Iluwas ang pansalang ito sa ibang wiki",
+ "abusefilter-edit-syntaxok": "Walang kamaliang pangsintaks na napansin.",
+ "abusefilter-edit-syntaxerr": "Napansin ang kamaliang pangsintaks: $1",
+ "abusefilter-edit-bad-tags": "Isa o mahigit sa mga tatak na tinukoy mo ang hindi tanggap.\nKailangan maiiksi ang mga tatak, at hindi sila dapat maglaman ng natatanging mga panitik.",
+ "abusefilter-edit-notallowed": "Hindi ka pinapahintulutang lumikha o magbago ng mga pansala ng pang-aabuso",
+ "abusefilter-edit-builder-select": "Pumili ng isang pagpipilian upang maidagdag ito doon sa panturo (''cursor'')",
+ "abusefilter-edit-builder-group-op-arithmetic": "Mga tagapagpaandar ng aritmetika",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Pagdaragdag (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Pagbabawas (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Pagpaparami (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Paghahati (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Modulo (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Kakayahan (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Mga tagapagpaandar ng paghahambing",
+ "abusefilter-edit-builder-op-comparison-equal": "Katumbas ng (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Hindi katumbas ng (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "Mas mababa kaysa (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Mas mataas kaysa (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Mas mababa kaysa o katumbas ng (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Mas mataas kaysa o katumbas ng (>=)",
+ "abusefilter-edit-builder-group-op-bool": "Mga tagapagpaandar ng Boolean",
+ "abusefilter-edit-builder-op-bool-not": "Hindi (!)",
+ "abusefilter-edit-builder-op-bool-and": "At (&)",
+ "abusefilter-edit-builder-op-bool-or": "O (|)",
+ "abusefilter-edit-builder-op-bool-xor": "XOR (^)",
+ "abusefilter-edit-builder-group-misc": "Samu't sari",
+ "abusefilter-edit-builder-misc-in": "nilalaman ng bagting (in)",
+ "abusefilter-edit-builder-misc-like": "Tumutugma sa huwaran (like)",
+ "abusefilter-edit-builder-misc-rlike": "Tumutugma sa karaniwang pagsasaad (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "Tumutugmo sa regex, maramdamin sa pagtipa (irlike)",
+ "abusefilter-edit-builder-misc-contains": "Naglalaman ang pangkaliwang bagting ng pangkanang bagting (naglalaman ng)",
+ "abusefilter-edit-builder-misc-stringlit": "Literal na bagting (\"\")",
+ "abusefilter-edit-builder-misc-tern": "Terneryong bantas (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "May pasubali (kung X kaya Y kung hindi ay Z)",
+ "abusefilter-edit-builder-group-funcs": "Mga tungkulin",
+ "abusefilter-edit-builder-funcs-length": "Haba ng bagting (length)",
+ "abusefilter-edit-builder-funcs-lcase": "Papuntang maliit na titik (lcase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "Gawing karaniwan ang nakalilitong mga panitik (ccnorm)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "Tanggalin ang nagkadalawang mga panitik (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "Natatanging mga panitik / kabuoang mga panitik (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "Gawing karaniwan (norm)",
+ "abusefilter-edit-builder-funcs-count": "Bilang ng ulit na lilitaw ang bagting na X sa bagting na Y (count)",
+ "abusefilter-edit-builder-funcs-rcount": "Bilang ng pagkakataong lumitaw ang karaniwang pagsasaad na X sa loob ng bagting na Y (rcount)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "Tanggalin ang puting espasyo (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "Tanggalin ang natatanging mga panitik (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "Nasa loob ba ng nasasakupan ang IP? (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "Maghanap ng bagting para sa maramihang kabahaging mga bagting (contains_any)",
+ "abusefilter-edit-builder-funcs-substr": "Kabahaging bagting (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "Kinalalagyan ng kabahaging bagting sa loob ng bagting (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "Palitan ang kabahaging bagting ng bagting (str_replace)",
+ "abusefilter-edit-builder-funcs-rescape": "Bagting na pangtakas bilang literal sa loob ng regex (rescape)",
+ "abusefilter-edit-builder-funcs-set_var": "Itakda ang pabagu-bago (set_var)",
+ "abusefilter-edit-builder-group-vars": "Mga pabagu-bago",
+ "abusefilter-edit-builder-vars-accountname": "Pangalan ng akawnt (on account creation)",
+ "abusefilter-edit-builder-vars-timestamp": "Tatak ng oras ng pagbabago ng Unix",
+ "abusefilter-edit-builder-vars-action": "Kilos",
+ "abusefilter-edit-builder-vars-addedlines": "Mga guhit na idinagdag sa pagbago",
+ "abusefilter-edit-builder-vars-delta": "Pagbabago ng sukat sa pamamatnugot",
+ "abusefilter-edit-builder-vars-diff": "Pinag-isang pagkakaiba ng mga pagbabagong ginawa ng pamamatnugot",
+ "abusefilter-edit-builder-vars-newsize": "Bagong sukat ng pahina",
+ "abusefilter-edit-builder-vars-oldsize": "Lumang sukat ng pahina",
+ "abusefilter-edit-builder-vars-removedlines": "Mga guhit na tinanggal sa pagbago",
+ "abusefilter-edit-builder-vars-summary": "Buod ng pagbago/dahilan",
+ "abusefilter-edit-builder-vars-article-id": "ID ng pahina",
+ "abusefilter-edit-builder-vars-article-ns": "Espasyo ng pangalan ng pahina",
+ "abusefilter-edit-builder-vars-article-text": "Pamagat ng pahina (walang espasyo ng pangalan)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Buong pamagat ng pahina",
+ "abusefilter-edit-builder-vars-movedfrom-id": "ID ng pahina ng ililipat na pinagmulang pahina",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "Espasyo ng pangalan ng ililipat na pinagmulang pahina",
+ "abusefilter-edit-builder-vars-movedfrom-text": "Pamagat ng ililipat na pinagmulang pahina",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "Buong pamagat ng ililipat na pinagmulang pahina",
+ "abusefilter-edit-builder-vars-movedto-id": "ID ng pahina ng ililipat na kapupuntahan ng pahina",
+ "abusefilter-edit-builder-vars-movedto-ns": "Espasyo ng pangalan ng ililipat na kapupuntahan ng pahina",
+ "abusefilter-edit-builder-vars-movedto-text": "Pamagat ng ililipat na kapupuntahan ng pahina",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "Buong pamagat ng ililipat na kapupuntahan ng pahina",
+ "abusefilter-edit-builder-vars-user-editcount": "Bilang ng pamamatnugot ng tagagamit",
+ "abusefilter-edit-builder-vars-user-age": "Edad ng akawnt ng tagagamit",
+ "abusefilter-edit-builder-vars-user-name": "Pangalan ng akawnt ng tagagamit",
+ "abusefilter-edit-builder-vars-user-groups": "Ang tagagamit ng mga pangkat (kabilang ang halata) ay nasa",
+ "abusefilter-edit-builder-vars-user-rights": "Karapatan ng isang manunulak ay",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "Oras kung kailan natiyak ang adres ng e-liham",
+ "abusefilter-edit-builder-vars-recent-contributors": "Limang huling tagapag-ambag sa pahina",
+ "abusefilter-edit-builder-vars-all-links": "Lahat ng panlabas na mga kawing na nasa loob ng bagong teksto",
+ "abusefilter-edit-builder-vars-added-links": "Lahat ng panlabas na mga kawing na idinagdag sa loob ng pagbabago",
+ "abusefilter-edit-builder-vars-removed-links": "Lahat ng panlabas na mga kawing na tinanggal sa loob ng pagbabago",
+ "abusefilter-edit-builder-vars-old-text": "Lumang pahina ng tekstong wiki, bago ginawa ang pagbago",
+ "abusefilter-edit-builder-vars-new-text": "Bagong pahina ng tekstong wiki, pagkaraan ng pagbabago",
+ "abusefilter-edit-builder-vars-new-text-stripped": "Teksto ng bagong pahina, na tinanggalan ng anumang pananda",
+ "abusefilter-edit-builder-vars-new-html": "Binanghay na pinagmulang HTML ng bagong rebisyon",
+ "abusefilter-edit-builder-vars-restrictions-edit": "Baguhin ang antas ng pagsasanggalang ng pahina",
+ "abusefilter-edit-builder-vars-restrictions-move": "Ilipat ang antas ng pagsasanggalang ng pahina",
+ "abusefilter-edit-builder-vars-old-text-stripped": "Teksto ng lumang pahina, na tinanggalan ng anumang pantanda",
+ "abusefilter-edit-builder-vars-old-links": "Mga kawing sa loob ng pahina, bago mangyari ang pagbago",
+ "abusefilter-edit-builder-vars-old-html": "Teksto ng wiki ng lumang pahina, ibinanghay upang maging HTML",
+ "abusefilter-edit-builder-vars-minor-edit": "Kung tinatakan ba o hindi ang pagbabago bilang mababa ang antas",
+ "abusefilter-edit-builder-vars-file-sha1": "pangtadtad na SHA1 ng mga nilalaman ng talaksan",
+ "abusefilter-filter-log": "Kamakailang mga pagbabago sa pansala",
+ "abusefilter-history": "Baguhin ang kasaysayan para sa Pansala ng Pang-aabusong $1",
+ "abusefilter-history-foruser": "Mga pagbabago ng $1",
+ "abusefilter-history-hidden": "Itinago",
+ "abusefilter-history-enabled": "Pinagana",
+ "abusefilter-history-global": "Pandaigdigan",
+ "abusefilter-history-timestamp": "Oras",
+ "abusefilter-history-user": "Tagagamit",
+ "abusefilter-history-public": "Paglalarawan ng pangmadlang pansala",
+ "abusefilter-history-flags": "Mga bandila",
+ "abusefilter-history-filter": "Alituntunin ng pansala",
+ "abusefilter-history-comments": "Mga puna",
+ "abusefilter-history-actions": "Mga kilos",
+ "abusefilter-history-backedit": "Bumalik sa pambago ng pansala",
+ "abusefilter-history-deleted": "Binura",
+ "abusefilter-history-filterid": "Pansala",
+ "abusefilter-history-select-legend": "Pinuhin ang paghanap",
+ "abusefilter-history-select-user": "Tagagamit:",
+ "abusefilter-history-select-submit": "Pinuhin",
+ "abusefilter-history-diff": "Mga pagbabago",
+ "abusefilter-history-error-hidden": "Nakakubli ang hiniling mong pansala, at hindi mo matitingnan ang kasaysayan nito.",
+ "abusefilter-exception-unexpectedatend": "Hindi inaasahang \"$2\" sa panitik na $1.",
+ "abusefilter-exception-expectednotfound": "Inaasahan ang isang $2 sa panitik na $1, hindi natagpuan (sa halip, natagpuan ang $3 $4).",
+ "abusefilter-exception-unrecognisedkeyword": "Hindi nakikilalang susing salita na $2 sa panitik na $1.",
+ "abusefilter-exception-unexpectedtoken": "Hindi inaasahang panandang \"$3\" (ng uring $2) sa panitik na $1.",
+ "abusefilter-exception-unclosedstring": "Hindi nakasarang baging na nagsisimula sa panitik na $1.",
+ "abusefilter-exception-invalidoperator": "Hindi nakikilalang bantas o simbolong $2 na nasa panitik na $1.",
+ "abusefilter-exception-unrecognisedtoken": "Hindi nakikilalang panandang \"$2\" na nasa panitik na $1.",
+ "abusefilter-exception-noparams": "Walang mga parametrong ibinigay sa tungkuling \"$2\" na nasa panitik na $1.",
+ "abusefilter-exception-dividebyzero": "Ipinagbabawal na pagsubok na hatiin ang $2 sa pamamagitan ng sero na nasa panitik na $1.",
+ "abusefilter-exception-unrecognisedvar": "Hindi nakikilalang pabagu-bagong $2 na nasa panitik na $1",
+ "abusefilter-exception-notenoughargs": "Hindi sapat na mga pangangatwiran sa tungkuling $2 na tinawag sa panitik na $1.\nInaasahan ang $3 {{PLURAL:$3|pangangatwiran|mga pangangatwiran}}, $4 ang nakuha",
+ "abusefilter-exception-regexfailure": "Kamalian sa pangkaraniwang pagsasaad na \"$3\" sa panitik na $1: \"$2\"",
+ "abusefilter-exception-overridebuiltin": "Hindi makabatas na pangingibabaw sa likas na nakakabit na pabagu-bagong \"$2\" sa panitik na $1.",
+ "abusefilter-exception-outofbounds": "Humihiling ng hindi umiiral na nakatalang bagay na $2 (sukat ng talaan = $3) sa panitik na $1.",
+ "abusefilter-exception-notlist": "Humihiling ng hanay ng bagay ng hindi nakahanay sa panitik na $1.",
+ "abusefilter-action-tag": "Tatakan",
+ "abusefilter-action-throttle": "Siilin",
+ "abusefilter-action-warn": "Magbabala",
+ "abusefilter-action-blockautopromote": "Hadlangan ang pagsulong ng antas",
+ "abusefilter-action-block": "Hadlangan",
+ "abusefilter-action-degroup": "Tanggalin mula sa mga pangkat",
+ "abusefilter-action-rangeblock": "Paghadlang na may saklaw",
+ "abusefilter-action-disallow": "Huwag payagan",
+ "abusefilter-revert-title": "Ibalik sa dati ang lahat ng mga pagbabagong ginawa ng pansalang $1",
+ "abusefilter-revert-intro": "Nagpapahintulot ang pormularyong ito na maibalik mo sa dati ang lahat ng mga pagbabagong ginawa ng pansala ng pang-aabuso dahil sa pansalang $1.\nMag-ingat lamang sana sa paggamit ng kagamitang ito.",
+ "abusefilter-revert-preview-item": "$1: gumawa si $2 ng isang $3 sa $4. Mga kilos na ibabalik sa dati: $5 ($6)",
+ "abusefilter-revert-search-legend": "Piliin ang ibabalik sa dating mga kilos ng pansala ng pangaabuso",
+ "abusefilter-revert-periodstart": "Simula ng panahon:",
+ "abusefilter-revert-periodend": "Wakas ng panahon:",
+ "abusefilter-revert-search": "Piliin ang mga kilos",
+ "abusefilter-revert-filter": "Pansala:",
+ "abusefilter-revert-preview-intro": "Nasa ibaba ang lahat ng mga kilos na isinagawa ng pansala ng pang-aabuso na ibabalik sa dati ng galaw na ito.\nPakisuring may pag-iingat ang mga ito, at pindutin ang \"tiyakin\" upang tiyakin ang pinili mo.",
+ "abusefilter-revert-confirm": "Tiyakin",
+ "abusefilter-revert-success": "Ibinalik mong lahat ang ng mga kilos na isinagawa ng pansala ng pang-aabuso dahil sa [[Special:AbuseFilter/$1|pansalang $2]].",
+ "abusefilter-revert-reason": "Kusang pagbabalik sa dati para sa lahat ng mga kilos na ginawa ng pansala ng pang-aabuso dahil sa pansalang $1.\nIbinigay na dahilan: $2",
+ "abusefilter-revert-reasonfield": "Dahilan para sa pagbabalik sa dati:",
+ "abusefilter-test": "Subukin ang isang pansala laban sa dating mga pagbabago",
+ "abusefilter-test-intro": "Nagpapahintulot ang pahinang ito na masuri mo ang isang pansalang ipinasok sa loob ng kahong nasa ibaba laban sa huling {{PLURAL:$1|pagbabago|mga pagbabago}}. Upang maikarga ang isang umiiral na pansala, makinilyahin ang ID ng pansalang ito sa loob ng kahong nasa ibaba ng kahong pangteksto ng pagbabago, at pindutin ang pindutang \"Ikarga\".",
+ "abusefilter-test-legend": "Pagsubok ng pansala",
+ "abusefilter-test-load-filter": "Ikarga ang ID ng pansala:",
+ "abusefilter-test-submit": "Subukin",
+ "abusefilter-test-load": "Ikarga",
+ "abusefilter-test-user": "Mga binago ng tagagamit:",
+ "abusefilter-test-period-start": "Mga pagbabagong ginawa pagkaraan:",
+ "abusefilter-test-period-end": "Naunang ginawang mga pagbabago:",
+ "abusefilter-test-page": "Mga pagbabagong ginawa sa pahina:",
+ "abusefilter-test-shownegative": "Ipakita ang mga pagbabagong hindi tumutugma sa pansala",
+ "abusefilter-test-syntaxerr": "Ang ipinasok mong pansala ay naglalaman ng isang kamalian sa palaugnayan.\nMakakatanggap ka ng isang buong paliwanag sa pamamagitan ng pagpindot sa pindutang \"Suriin ang Palaugnayan\".",
+ "abusefilter-changeslist-examine": "siyasatin",
+ "abusefilter-examine": "Siyasatin ang magkakabukod na mga pagbabago",
+ "abusefilter-examine-intro": "Nagpapahintulot ang pahinang ito na masiyasat mo ang mga pabagu-bagong ginagawa ng Pansala ng Pang-aabuso para sa isang bukod na pagbabago, at subukin ito laban sa mga pansala.",
+ "abusefilter-examine-legend": "Pumili ng mga pagbabago",
+ "abusefilter-examine-diff": "Ibang URL:",
+ "abusefilter-examine-user": "Tagagamit:",
+ "abusefilter-examine-title": "Pamagat ng pahina:",
+ "abusefilter-examine-submit": "Hanapin",
+ "abusefilter-examine-vars": "Mga pabagu-bagong nagawa para sa pagbabagong ito",
+ "abusefilter-examine-test": "Subukin ang pagbabagong ito laban sa isang pansala",
+ "abusefilter-examine-test-button": "Subukin ang pansala",
+ "abusefilter-examine-match": "Tumugma ang pansala sa pagbabagong ito.",
+ "abusefilter-examine-nomatch": "Hindi tumugma ang pansala sa pagbabagong ito.",
+ "abusefilter-examine-syntaxerror": "Mayroong hindi tanggap na palaugnayan ang pansala",
+ "abusefilter-examine-notfound": "Hindi matagpuan ang pagbabagong hiniling mo.",
+ "abusefilter-examine-incompatible": "Ang pagbabagong hiniling mo ay hindi tinatangkilik ng Pansala ng Pang-aabuso",
+ "abusefilter-examine-noresults": "Walang mga kinalabasang natagpuan para sa mga parametrong panghanap na ibinigay mo.",
+ "abusefilter-topnav": "'''Pagtalaktak ng Pansala ng Pang-aabuso'''",
+ "abusefilter-topnav-home": "Tahanan",
+ "abusefilter-topnav-test": "Pagsubok ng pangkat",
+ "abusefilter-topnav-examine": "Suriin ang nakaraang mga pamamatnugot",
+ "abusefilter-topnav-log": "Talaan ng Pang-aabuso",
+ "abusefilter-topnav-tools": "Mga kagamitang pantanggal ng depekto",
+ "abusefilter-topnav-import": "Angkatin ang pansala",
+ "abusefilter-log-name": "Talaan ng Pansala ng Pang-aabuso",
+ "abusefilter-log-header": "Nagpapakita ang talaang ito ng isang buod ng mga pagbabagong ginawa sa mga pansala.\nPara sa buong mga detalye, tingnan [[Special:AbuseFilter/history|ang talaan]] ng kamakailang mga pagbabago sa pansala.",
+ "abusefilter-log-noresults": "Walang mga resulta",
+ "abusefilter-diff-title": "Mga pagkakaiba sa pagitan ng mga bersyon",
+ "abusefilter-diff-item": "Bagay",
+ "abusefilter-diff-version": "Bersyong mula sa $1 ni $2",
+ "abusefilter-diff-info": "Saligang kabatiran",
+ "abusefilter-diff-pattern": "Mga kalagayan ng pansala",
+ "abusefilter-diff-invalid": "Hindi nagawang makuha ang hiniling na mga bersyon",
+ "abusefilter-diff-backhistory": "Magbalik sa kasaysayan ng pansala",
+ "abusefilter-import-intro": "Magagamit ang hangganang-mukhang ito upang makapag-angkat ng mga pansala mula sa ibang mga wiki.\nDoon sa pinagmulang wiki, pindutin ang \"{{int:abusefilter-edit-export}}\" na nasa ilalim ng \"{{int:abusefilter-edit-tools}}\" sa ibabaw ng hangganang-mukhang pambago.\nKopyahin mula sa kahong pangteksto na lilitaw, at idikit ito sa kahong pangtekstong ito, matapos ay pindutin ang \"{{int:abusefilter-import-submit}}\".",
+ "abusefilter-import-submit": "Angkatin ang dato",
+ "abusefilter-group-default": "Likas na pagtatakda"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/tly.json b/www/wiki/extensions/AbuseFilter/i18n/tly.json
new file mode 100644
index 00000000..336ba0f3
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/tly.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "Erdemaslancan"
+ ]
+ },
+ "abusefilter-list-options": "Кукон",
+ "abusefilter-history-comments": "Мындәриҹот"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/tpi.json b/www/wiki/extensions/AbuseFilter/i18n/tpi.json
new file mode 100644
index 00000000..5191c2d9
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/tpi.json
@@ -0,0 +1,17 @@
+{
+ "@metadata": {
+ "authors": [
+ "Iketsi"
+ ]
+ },
+ "abusefilter-log-search-user": "Yusa:",
+ "abusefilter-log-hide-reason": "As bilong en:",
+ "abusefilter-list-edit": "Senisim",
+ "abusefilter-tools-reautoconfirm-user": "Yusa:",
+ "abusefilter-edit-history": "Histori:",
+ "abusefilter-edit-tools": "Ol tul:",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Brukim namel (/)",
+ "abusefilter-edit-builder-op-bool-and": "Na (&)",
+ "abusefilter-history-user": "Yusa",
+ "abusefilter-history-select-user": "Yusa:"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/tr.json b/www/wiki/extensions/AbuseFilter/i18n/tr.json
new file mode 100644
index 00000000..bf4346cd
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/tr.json
@@ -0,0 +1,405 @@
+{
+ "@metadata": {
+ "authors": [
+ "Emperyan",
+ "Erdemaslancan",
+ "Hedda Gabler",
+ "Incelemeelemani",
+ "Joseph",
+ "LuCKY",
+ "Mach",
+ "Srhat",
+ "Vito Genovese",
+ "Ayrıntılı Bilgi",
+ "Sayginer",
+ "Mavrikant",
+ "Ömer Berkay",
+ "Matma Rex",
+ "Diyapazon"
+ ]
+ },
+ "abusefilter-desc": "Değişikliklere otomatik bulucu yöntemler uygular",
+ "abusefilter": "Kötüye kullanım süzgeci yapılandırması",
+ "abuselog": "Kötüye kullanım günlüğü",
+ "abusefilter-intro": "Kötüye Kullanım Süzgeci yönetim arayüzüne hoş geldiniz.\nKötüye Kullanım Süzgeci, tüm işlemlere otomatik bulucu yöntemler uygulayan otomatik bir yazılım mekanizmasıdır.\nBu arayüz, tanımlı süzgeçlerin listesini gösterir ve değiştirilmelerine olanak sağlar.",
+ "abusefilter-mustbeeditor": "Güvenlik nedeniyle, bu arayüzü sadece suistimal filtrelerini değiştirme yetkisine sahip kullanıcılar kullanabilir.",
+ "abusefilter-warning": "'''Uyarı''': Bu eylem otomatikman zararlı olarak tanımlanmıştır.\nYapıcı olmayan değişiklikler hızlıca geri döndürülecektir,\nve çok kötü ya da tekrar eden yapıcı olmayan değişiklikler hesabınızın ya da IP adresinizin engellenmesiyle sonuçlanacaktır.\nEğer bu değişikliğin yapıcı olduğuna inanıyorsanız, onaylamak için tekrar Gönder'e basabilirsiniz.\nEyleminizin eşleştiği suistimal kuralının kısa bir açıklaması: $1",
+ "abusefilter-disallowed": "Otomatik olarak bu işlemin zararlı olduğu belirlendi ve izin verilmedi.\nİşleminizin yapıcı olduğunu düşünüyorsanız, lütfen ne yapmaya çalıştığınız konusunda bir hizmetliye bilgi verin.\nİşleminizin eşleştiği kötüye kullanım kuralının kısa bir açıklaması: $1",
+ "abusefilter-blocked-display": "Otomatik olarak bu işlemin zararlı olduğu belirlendi ve işlemi gerçekleştirmeniz önlendi.\nEk olarak, {{SITENAME}} için bir koruma olarak kullanıcı hesabınız ve tüm ilişkili IP adresleriniz de engellendi.\nBu bir hata sonucu meydana geldiyse, lütfen bir hizmetliyle irtibata geçin.\nİşleminizin eşleştiği kötüye kullanım kuralının kısa bir açıklaması: $1",
+ "abusefilter-degrouped": "Bu eylem otomatikman zararlı olarak tanımlanmıştır.\nDolayısıyla, izin verilmemiştir, ve, hesabınızın tehlikeli olduğundan şüphelenildiği için, tüm haklar geri alındı.\nEğer bunun bir hata olduğunu düşünüyorsanız, lütfen bu eylemin açıklamasıyla beraber bir bürokratla irtibat kurun, ve haklarınız belki geri verilebilir.\nEyleminizin eşleştiği suistimal kuralının kısa bir açıklaması: $1",
+ "abusefilter-autopromote-blocked": "Bu işlem otomatik olarak zararlı olarak belirlenmiş ve izin verilmemiştir.\nAyrıca, güvenlik önlemi olarak yerleşik hesaplara rutin olarak verilen bazı ayrıcalıklar hesabınızda geçici olarak iptal edilmiştir.\nİşleminizin eşleştiği kötüye kullanım kuralının kısa bir açıklaması: $1",
+ "abusefilter-blocker": "Kötüye kullanım süzgeci",
+ "abusefilter-blockreason": "Kötüye kullanım süzgeci tarafından otomatik olarak engellendi.\nEşleşen kuralın açıklaması: $1",
+ "abusefilter-degroupreason": "Haklar, suistimal filtresi tarafından otomatik olarak kısıtlandı.\nKural açıklaması: $1",
+ "abusefilter-accountreserved": "Bu hesap adı, kötüye kullanım süzgeci tarafından kullanım için ayrıldı.",
+ "right-abusefilter-modify": "Kötüye kullanım süzgeçlerini değiştir",
+ "right-abusefilter-view": "Kötüye kullanım süzgeçlerini gör",
+ "right-abusefilter-log": "Kötüye kullanım günlüğünü gör",
+ "right-abusefilter-log-detail": "Ayrıntılı suistimal girdilerini gör",
+ "right-abusefilter-private": "Kötüye kullanım günlüğündeki özel verileri gör",
+ "right-abusefilter-modify-restricted": "Kısıtlı eylemler içeren suistimal filtrelerini değiştir",
+ "right-abusefilter-revert": "Verilen bir suistimal filtresi tarafından yapılan tüm değişiklikleri geri al",
+ "right-abusefilter-view-private": "Özel olarak işaretlenmiş suistimal filtrelerini gör",
+ "right-abusefilter-log-private": "Özel olarak işaretlenmiş suistimal süzgeci günlük girdilerini gör",
+ "right-abusefilter-hide-log": "Girdileri kötüye kullanım günlüğünde gizle",
+ "right-abusefilter-hidden-log": "Gizli suistimal günlüğü girdilerine bak",
+ "right-abusefilter-modify-global": "Küresel suistimal süzgeçleri oluştur ya da değiştir",
+ "action-abusefilter-modify": "kötüye kullanım süzgeçlerini değiştirmek",
+ "action-abusefilter-view": "kötüye kullanım süzgeçlerini görmek",
+ "action-abusefilter-log": "kötüye kullanım günlüğünü görmek",
+ "action-abusefilter-log-detail": "ayrıntılı kötüye kullanım günlüğünü girdilerini görmek",
+ "action-abusefilter-private": "kötüye kullanım günlüğündeki özel verileri görmek",
+ "action-abusefilter-modify-restricted": "kısıtlanmış işlemlere sahip kötüye kullanım süzgeçlerini değiştirmek",
+ "action-abusefilter-revert": "belirli bir kötüye kullanım süzgecindeki tüm değişiklikleri geri almak",
+ "action-abusefilter-view-private": "özel olarak işaretlenmiş kötüye kullanım süzgeçlerini görmeye",
+ "abusefilter-log": "Kötüye kullanım süzgeci günlüğü",
+ "abusefilter-log-summary": "Bu günlük, süzgeçlere yakalanan tüm eylemlerin bir listesini gösterir.",
+ "abusefilter-log-search": "Kötüye kullanım günlüğünde ara",
+ "abusefilter-log-search-user": "Kullanıcı:",
+ "abusefilter-log-search-filter": "Süzgeç kimlikleri (dikey çizgilerle ayrılmıştır):",
+ "abusefilter-log-search-title": "Başlık:",
+ "abusefilter-log-search-wiki": "Viki:",
+ "abusefilter-log-search-impact-all": "Tüm eylemler",
+ "abusefilter-log-search-impact-saved": "Yalnızca kaydedilen değişiklikler",
+ "abusefilter-log-search-impact-not-saved": "Kaydedilmiş değişiklikler olmadan",
+ "abusefilter-log-search-submit": "Ara",
+ "abusefilter-log-entry": "$1: $2 bir suistimal filtresini tetikledi, $4 sayfasında \"$3\" eylemi yapılıyor.\nYapılan eylemler: $5;\nFiltre açıklaması: $6",
+ "abusefilter-log-detailedentry-meta": "$1: $2, tetiklediği süzgeç: $3, $5 sayfasında \"$4\" eylemini yaptı.\nYapılan eylemler: $6;\nSüzgeç açıklaması: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "küresel süzgeç $1",
+ "abusefilter-log-detailedentry-local": "$1 süzgeci",
+ "abusefilter-log-detailslink": "detaylar",
+ "abusefilter-log-diff": "fark",
+ "abusefilter-log-hidelink": "görünürlüğü ayarla",
+ "abusefilter-log-details-legend": "$1 numaralı günlük girdisinin ayrıntıları",
+ "abusefilter-log-details-var": "Değişken",
+ "abusefilter-log-details-val": "Değer",
+ "abusefilter-log-details-vars": "Eylem parametreleri",
+ "abusefilter-log-details-private": "Özel veri",
+ "abusefilter-log-details-ip": "Kaynak IP adresi",
+ "abusefilter-log-noactions": "yok",
+ "abusefilter-log-details-diff": "Düzenleme yapılan değişiklikler",
+ "abusefilter-log-linkoncontribs": "kötüye kullanım günlüğü",
+ "abusefilter-log-linkoncontribs-text": "{{GENDER:$1|Bu kullanıcı}} için kötüye kullanım günlüğü",
+ "abusefilter-log-hidden": "(gizli girdi)",
+ "abusefilter-log-hidden-implicit": "(gizlendi çünkü revizyon silindi)",
+ "abusefilter-log-cannot-see-details": "Bu giriş detaylarını görebilmek için izniniz yok.",
+ "abusefilter-log-details-hidden": "Bu girdinin ayrıntılarını göremezsiniz çünkü herkese açık değil",
+ "abusefilter-log-hide-legend": "Günlük girişini gizle",
+ "abusefilter-log-hide-id": "Günlük girdi numarası:",
+ "abusefilter-log-hide-hidden": "Bu girdiyi herkesin görüntülemesini engelle",
+ "abusefilter-log-hide-reason": "Sebep:",
+ "abusefilter-log-hide-forbidden": "Kötüye kullanım günlüğü girdilerini gizleme yetkiniz yok.",
+ "abusefilter-logentry-suppress": "\"[[$1]]\" gizledi",
+ "abusefilter-logentry-unsuppress": "\"[[$1]]\" gizlilik kaldırıldı",
+ "logentry-abusefilter-hit": "$1, $3 sayfasında \"$5\" eylemini yaparak, $4 süzgecini tetikledi. Alınan eylemler: $6 ($7)",
+ "abusefilter-management": "Kötüye kullanım süzgeci yönetimi",
+ "abusefilter-list": "Tüm süzgeçler",
+ "abusefilter-list-id": "Süzgeç kimliği",
+ "abusefilter-list-status": "Durum",
+ "abusefilter-list-public": "Genel açıklama",
+ "abusefilter-list-consequences": "Sonuçlar",
+ "abusefilter-list-visibility": "Görünürlük",
+ "abusefilter-list-hitcount": "Eşleşme sayısı",
+ "abusefilter-list-edit": "Düzenle",
+ "abusefilter-list-details": "Detaylar",
+ "abusefilter-list-limit": "Sayfa başına sayı:",
+ "abusefilter-list-lastmodified": "Son değişiklik",
+ "abusefilter-list-group": "Filtre grubu",
+ "abusefilter-hidden": "Özel",
+ "abusefilter-unhidden": "Genel",
+ "abusefilter-enabled": "Etkin",
+ "abusefilter-deleted": "Silindi",
+ "abusefilter-disabled": "Devre dışı",
+ "abusefilter-hitcount": "$1 eşleşme",
+ "abusefilter-new": "Yeni bir süzgeç oluştur",
+ "abusefilter-return": "Süzgeç yönetimine geri dön",
+ "abusefilter-status-global": "Küresel",
+ "abusefilter-list-options": "Seçenekler",
+ "abusefilter-list-options-deleted": "Silinmiş süzgeçler:",
+ "abusefilter-list-options-deleted-only": "Sadece silinmiş süzgeçleri göster",
+ "abusefilter-list-options-deleted-hide": "Silinmiş süzgeçleri gizle",
+ "abusefilter-list-options-deleted-show": "Silinmiş süzgeçleri içer",
+ "abusefilter-list-options-scope": "Süzgeçleri şuradan göster:",
+ "abusefilter-list-options-scope-local": "Yerel viki",
+ "abusefilter-list-options-scope-global": "Genel kurallar",
+ "abusefilter-list-options-scope-all": "Yerel ve genel kurallar",
+ "abusefilter-list-options-disabled": "Devre dışı süzgeçler:",
+ "abusefilter-list-options-hidedisabled": "Devre dışı süzgeçleri gizle",
+ "abusefilter-list-options-submit": "Güncelle",
+ "abusefilter-tools-text": "Burada suistimal filtrelerini formüle ederken ve hata ayıklarken yararlı olabilecek bazı araçlar bulunmaktadır.",
+ "abusefilter-tools-expr": "İfade testi",
+ "abusefilter-tools-submitexpr": "Değerlendir",
+ "abusefilter-tools-reautoconfirm": "Otomatik onaylı durumu geri getir",
+ "abusefilter-tools-reautoconfirm-user": "Kullanıcı:",
+ "abusefilter-tools-reautoconfirm-submit": "Yeniden oto-onayla",
+ "abusefilter-reautoconfirm-none": "Bu {{GENDER:$1|kullanıcının|kullanıcının|kullanıcıların}} otomatik onaylı durumu askıya alınmadı.",
+ "abusefilter-reautoconfirm-notallowed": "Otomatik onaylı durumu getirmeye yetkiniz yok.",
+ "abusefilter-reautoconfirm-done": "Hesabın otomatik onaylı durumu geri getirildi",
+ "abusefilter-status": "Son $1 {{PLURAL:$1|eylemde|eylemde}}, $2 (%$3) filtre $4 koşul sınırına erişti, ve $5 (%$6) eylem şuanda etkin bir filtreyle eşleşti.",
+ "abusefilter-edit": "Kötüye kullanım süzgeci düzenleniyor",
+ "abusefilter-edit-subtitle": "$1 süzgeci değiştiriliyor",
+ "abusefilter-edit-subtitle-new": "Filtre oluşturma",
+ "abusefilter-edit-oldwarning": "<strong>Bu filtrenin eski bir sürümünü değiştiriyorsunuz.\nGösterilen istatistikler bu filtrenin en güncel sürümü içindir.\nEğer değişikliklerinizi kaydederseniz, değişiklik yaptığınız revizyondan itibaren tüm değişikliklerin üzerine yazacaksınız.</strong> &bull;\n[[Special:AbuseFilter/history/$2|Bu filtrenin geçmişine geri dön]].",
+ "abusefilter-edit-status-label": "İstatistikler:",
+ "abusefilter-edit-status": "Son $1 {{PLURAL:$1|eylemde|eylemde}}, $2 eylem ($3%) oranında bu filtreyle eşleşti.",
+ "abusefilter-edit-status-profile": "Son $1 {{PLURAL:$1|eylemde|eylemde}}, $2 eylem ($3%) oranında bu filtreyle eşleşti.\nOrtalama çalışma süresi $4ms olan bu süzgeç koşul sınırının $5 koşulunu tüketiyor.",
+ "abusefilter-edit-new": "Yeni süzgeç",
+ "abusefilter-edit-save": "Süzgeci kaydet",
+ "abusefilter-edit-id": "Süzgeç kimliği:",
+ "abusefilter-edit-description": "Açıklama:\n:''(umumi olarak görünebilir)''",
+ "abusefilter-edit-group": "Filtre grubu:",
+ "abusefilter-edit-flags": "İşaretler:",
+ "abusefilter-edit-enabled": "Bu süzgeci etkinleştir",
+ "abusefilter-edit-deleted": "Silinmiş olarak işaretle",
+ "abusefilter-edit-hidden": "Bu süzgecin ayrıntılarını genel görünümden gizle",
+ "abusefilter-edit-global": "Küresel filtre",
+ "abusefilter-edit-rules": "Şartlar:",
+ "abusefilter-edit-notes": "Notlar:",
+ "abusefilter-edit-lastmod": "Süzgeci son değiştiren:",
+ "abusefilter-edit-lastmod-text": "$1 tarihinde $2 tarafından",
+ "abusefilter-edit-hitcount": "Süzgeç eşleşmeleri:",
+ "abusefilter-edit-consequences": "Eşleştiğinde eylemler yapılır",
+ "abusefilter-edit-action-warn": "Kullanıcıya bir uyarı verdikten sonra bu eylemleri tetikle",
+ "abusefilter-edit-action-disallow": "Kullanıcının, sorudaki eylemi yapmasını engelle",
+ "abusefilter-edit-action-blockautopromote": "Kullanıcının otomatik onaylı durumunu iptal et",
+ "abusefilter-edit-action-degroup": "Kullanıcıyı tüm ayrıcalıklı gruplardan çıkar",
+ "abusefilter-edit-action-block": "Kullanıcıyı ve/veya IP adresini değişiklik yapmaya engelle",
+ "abusefilter-edit-action-throttle": "Eylemleri sadece, eğer kullanıcı bir derece sınırına takılırsa tetikle",
+ "abusefilter-edit-action-rangeblock": "Kullanıcının geldiği /16 aralığını engelle",
+ "abusefilter-edit-action-tag": "İleride gözden geçirme için değişikliği etiketle.",
+ "abusefilter-edit-throttle-count": "İzin verilen eylem sayısı:",
+ "abusefilter-edit-throttle-period": "Zaman periyodu:",
+ "abusefilter-edit-throttle-seconds": "$1 saniye",
+ "abusefilter-edit-throttle-groups": "Grup kısma yapan:\n:''(her satıra bir tane, virgülle birleştirin)''",
+ "abusefilter-edit-warn-message": "Uyarı için kullanılan sistem mesajı:",
+ "abusefilter-edit-warn-other": "Diğer mesaj",
+ "abusefilter-edit-warn-other-label": "Diğer mesajın sayfa adı:\n:''(MediaWiki ön eki olmadan)''",
+ "abusefilter-edit-warn-actions": "Eylemler:",
+ "abusefilter-edit-warn-preview": "Seçili mesajı önizle",
+ "abusefilter-edit-warn-edit": "Seçili mesajı oluştur/değiştir",
+ "abusefilter-edit-tag-tag": "Uygulanacak etiketler (her satıra bir tane):",
+ "abusefilter-edit-denied": "Bu süzgecin ayrıntılarını göremeyebilirsiniz, çünkü umumi görünümden gizlenmiş.",
+ "abusefilter-edit-main": "Süzgeç değişkenleri",
+ "abusefilter-edit-done-subtitle": "Süzgeç değiştirildi",
+ "abusefilter-edit-done": "[[Special:AbuseFilter/$1|$3 süzgeci]] için [[Special:AbuseFilter/history/$1/diff/prev/$2|değişiklikleriniz]] kaydedildi.",
+ "abusefilter-edit-badsyntax": "Belirttiğiniz filtrede bir söz dizimi hatası var.\nDerleyicinin çıktısı: <pre>$1</pre>",
+ "abusefilter-edit-restricted": "Bu filtreyi değiştiremezsiniz, çünkü bir veya daha fazla kısıtlı eylem içeriyor.\nLütfen kısıtlı eylemleri eklemeye izni olan bir kullanıcıdan, sizin için değişikliği yapmasını isteyin.",
+ "abusefilter-edit-viewhistory": "Bu süzgecin geçmişini gör",
+ "abusefilter-edit-history": "Geçmiş:",
+ "abusefilter-edit-check": "Sözdizimini kontrol et",
+ "abusefilter-edit-badfilter": "Belirttiğiniz süzgeç mevcut değil",
+ "abusefilter-edit-revert": "Bu filtre tarafından alınan eylemleri geri al",
+ "abusefilter-edit-tools": "Araçlar:",
+ "abusefilter-edit-test-link": "Son değişikliklere karşı bu süzgeci test et",
+ "abusefilter-edit-export": "Bu süzgeci başka bir vikiye aktar",
+ "abusefilter-edit-syntaxok": "Hiçbir sözdizimi hatası algılanmadı.",
+ "abusefilter-edit-syntaxerr": "Sözdizimi hatası algılandı: $1",
+ "abusefilter-edit-bad-tags": "Belirttiğiniz etiketlerin bir veya daha fazlası geçersiz.\nEtiketler kısa olmalıdır, ve özel karakter içermemelidir.",
+ "abusefilter-edit-notallowed": "Kötüye kullanım süzgeci oluşturma veya düzenleme yetkiniz bulunmuyor",
+ "abusefilter-edit-notallowed-global": "Küresel suistimal süzgeçlerini oluşturmaya ya da değiştirmeye izniniz yok",
+ "abusefilter-edit-notallowed-global-custom-msg": "Özel uyarı mesajları küresel süzgeçler için desteklenmiyor",
+ "abusefilter-edit-builder-select": "İmleçte eklemek için bir seçenek seçin",
+ "abusefilter-edit-builder-group-op-arithmetic": "Aritmetik operatörler",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Toplama (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Çıkarma (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Çarpma (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Bölme (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Modülo (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Üs (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Karşılaştırma operatörleri",
+ "abusefilter-edit-builder-op-comparison-equal": "Eşittir (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Eşit değil (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "Küçüktür (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Büyüktür (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Küçük eşit (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Büyük eşit (>=)",
+ "abusefilter-edit-builder-group-op-bool": "Mantıksal operatörler",
+ "abusefilter-edit-builder-op-bool-not": "Değil (!)",
+ "abusefilter-edit-builder-op-bool-and": "Ve (&)",
+ "abusefilter-edit-builder-op-bool-or": "Veya (|)",
+ "abusefilter-edit-builder-group-misc": "Çeşitli",
+ "abusefilter-edit-builder-misc-in": "dizisinde bulunuyor (in)",
+ "abusefilter-edit-builder-misc-like": "Motif eşleşiyor (like)",
+ "abusefilter-edit-builder-misc-rlike": "Düzenli ifade eşleşiyor (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "Düzenli ifade eşleşiyor, büyük-küçük harf duyarsız (irlike)",
+ "abusefilter-edit-builder-misc-contains": "Sol dizi sağ diziyi içeriyor (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "Dizi aynen (\"\")",
+ "abusefilter-edit-builder-misc-tern": "Üçlü operatör (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "Koşullu (if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "Fonksiyonlar",
+ "abusefilter-edit-builder-funcs-length": "Dizin uzunluğu (length)",
+ "abusefilter-edit-builder-funcs-lcase": "Küçük harfe çevir (lcase)",
+ "abusefilter-edit-builder-funcs-ucase": "Büyük harfe (ucase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "Karıştırılabilir karakterleri normalleştir (ccnorm)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "Çift-karakterleri çıkar (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "Özel karakterler / toplam karakterler (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "Normalleştir (norm)",
+ "abusefilter-edit-builder-funcs-count": "X dizisinin Y dizisi içinde görünme sayısı (count)",
+ "abusefilter-edit-builder-funcs-rcount": "X düzenli ifadesinin Y dizisinde görülme sayısı (rcount)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "Beyazboşluğu çıkar (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "Özel karakterleri çıkar (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "IP aralıkta mı? (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "Dizeyi birden çok altdize için ara (contains_any)",
+ "abusefilter-edit-builder-funcs-substr": "Altdizi (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "Altdizinin dizideki yeri (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "Altdiziyi dizi ile değiştir (str_replace)",
+ "abusefilter-edit-builder-funcs-set_var": "Değişkeni ayarla (set_var)",
+ "abusefilter-edit-builder-group-vars": "Değişkenler",
+ "abusefilter-edit-builder-vars-accountname": "Hesap adı (hesap oluşturulduğunda)",
+ "abusefilter-edit-builder-vars-timestamp": "Değişikliğin Unix zaman damgası",
+ "abusefilter-edit-builder-vars-action": "Eylem",
+ "abusefilter-edit-builder-vars-addedlines": "Değişiklikte eklenen satırlar",
+ "abusefilter-edit-builder-vars-delta": "Değişiklikteki boyut değişimi",
+ "abusefilter-edit-builder-vars-diff": "Değişiklik tarafından yapılan değişikliklerin birleşik farkı",
+ "abusefilter-edit-builder-vars-newsize": "Yeni sayfa boyutu",
+ "abusefilter-edit-builder-vars-oldsize": "Eski sayfa boyutu",
+ "abusefilter-edit-builder-vars-removedlines": "Değişiklikte çıkarılan satırlar",
+ "abusefilter-edit-builder-vars-summary": "Değişiklik özeti/sebebi",
+ "abusefilter-edit-builder-vars-article-id": "Sayfa IDsi",
+ "abusefilter-edit-builder-vars-article-ns": "Sayfa ad alanı",
+ "abusefilter-edit-builder-vars-article-text": "Sayfa başlığı (ad alanı olmadan)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Tam sayfa başlığı",
+ "abusefilter-edit-builder-vars-article-views": "Sayfa görüntülenmesi",
+ "abusefilter-edit-builder-vars-movedfrom-id": "Kaynak taşıma sayfasının sayfa IDsi",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "Kaynak taşıma sayfasının ad alanı",
+ "abusefilter-edit-builder-vars-movedfrom-text": "Kaynak taşıma sayfası başlığı",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "Kaynak taşıma sayfasının tam başlığı",
+ "abusefilter-edit-builder-vars-movedto-id": "Hedef taşıma sayfasının sayfa IDsi",
+ "abusefilter-edit-builder-vars-movedto-ns": "Hedef taşıma sayfasının ad alanı",
+ "abusefilter-edit-builder-vars-movedto-text": "Hedef taşıma sayfasının başlığı",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "Hedef taşıma sayfasının tam başlığı",
+ "abusefilter-edit-builder-vars-user-editcount": "Kullanıcının değişiklik sayısı",
+ "abusefilter-edit-builder-vars-user-age": "Kullanıcı hesabının yaşı",
+ "abusefilter-edit-builder-vars-user-name": "Kullanıcı hesabının adı",
+ "abusefilter-edit-builder-vars-user-groups": "Kullanıcının olduğu gruplar (içinde oldukları dahil)",
+ "abusefilter-edit-builder-vars-user-rights": "Kullanıcının sahip olduğu haklar",
+ "abusefilter-edit-builder-vars-user-blocked": "Kullanıcının engelli olup olmadığı",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "E-posta adresinin doğrulanma zamanı",
+ "abusefilter-edit-builder-vars-recent-contributors": "Sayfaya katkıda bulunan son on kullanıcı",
+ "abusefilter-edit-builder-vars-first-contributor": "Kullanıcının ilk katkısı",
+ "abusefilter-edit-builder-vars-all-links": "Yeni metindeki tüm dış bağlantılar",
+ "abusefilter-edit-builder-vars-added-links": "Değişiklikte eklenen tüm dış bağlantılar",
+ "abusefilter-edit-builder-vars-removed-links": "Değişiklikte çıkarılan tüm dış bağlantılar",
+ "abusefilter-edit-builder-vars-old-text": "Eski sayfa vikimetni, değişiklikten önce",
+ "abusefilter-edit-builder-vars-new-text": "Yeni sayfa vikimetni, değişiklikten sonra",
+ "abusefilter-edit-builder-vars-new-pst": "Yeni sayfa viki metni, ön kayıt dönüştürüldü",
+ "abusefilter-edit-builder-vars-new-text-stripped": "Yeni sayfa metni, herhangi bir biçimlendirme olmadan",
+ "abusefilter-edit-builder-vars-new-html": "Yeni revizyonun derlenmiş HTML kaynağı",
+ "abusefilter-edit-builder-vars-restrictions-edit": "Sayfanın koruma düzeyini değiştir",
+ "abusefilter-edit-builder-vars-restrictions-move": "Sayfanın koruma düzeyini taşı",
+ "abusefilter-edit-builder-vars-restrictions-create": "Sayfayı koruma altına al",
+ "abusefilter-edit-builder-vars-old-text-stripped": "Eski sayfa metni, herhangi bir biçimlendirme olmadan",
+ "abusefilter-edit-builder-vars-old-links": "Sayfadaki bağlantılar, değişiklikten önce",
+ "abusefilter-edit-builder-vars-old-html": "Eski sayfa vikimetni, HTML'ye derlendi",
+ "abusefilter-edit-builder-vars-minor-edit": "Değişikliğin küçük olarak işaretlenip işaretlenmeyeceği",
+ "abusefilter-edit-builder-vars-file-sha1": "Dosya içeriklerinin SHA1 hash'i",
+ "abusefilter-edit-builder-vars-file-size": "Dosyanın bayt cinsinden boyutu",
+ "abusefilter-filter-log": "Son süzgeç değişiklikleri",
+ "abusefilter-history": "Suistimal filtresi #$1 için değişiklik geçmişi",
+ "abusefilter-history-foruser": "$1 tarafından değişiklikler",
+ "abusefilter-history-hidden": "Gizli",
+ "abusefilter-history-enabled": "Etkinleştirildi",
+ "abusefilter-history-global": "Küresel",
+ "abusefilter-history-timestamp": "Zaman",
+ "abusefilter-history-user": "Kullanıcı",
+ "abusefilter-history-public": "Umumi süzgeç açıklaması",
+ "abusefilter-history-flags": "İşaretler",
+ "abusefilter-history-filter": "Süzgeç kuralı",
+ "abusefilter-history-comments": "Yorumlar",
+ "abusefilter-history-actions": "Eylemler",
+ "abusefilter-history-backedit": "Süzgeç editörüne geri dön",
+ "abusefilter-history-deleted": "Silindi",
+ "abusefilter-history-filterid": "Süzgeç",
+ "abusefilter-history-select-legend": "Aramayı geliştir",
+ "abusefilter-history-select-user": "Kullanıcı:",
+ "abusefilter-history-select-submit": "Geliştir",
+ "abusefilter-history-diff": "Değişiklikler",
+ "abusefilter-history-error-hidden": "İstediğiniz filtre gizli, ve geçmişini görüntüleyemezsiniz.",
+ "abusefilter-exception-unexpectedatend": "$1 karakterinde beklenmedik \"$2\".",
+ "abusefilter-exception-expectednotfound": "$1 karakterinde bir $2 bekleniyordu, bulunamadı (yerine $3 $4 bulundu).",
+ "abusefilter-exception-unrecognisedkeyword": "$1 karakterinde tanınmayan anahtar kelime $2.",
+ "abusefilter-exception-unexpectedtoken": "$1 karakterinde beklenmeyen simge \"$3\" ($2 tipinde).",
+ "abusefilter-exception-unclosedstring": "$1 karakterinde başlayan kapanmamış dizi",
+ "abusefilter-exception-invalidoperator": "$1 karakterinde geçersiz operatör \"$2\".",
+ "abusefilter-exception-unrecognisedtoken": "$1 karakterinde tanınmayan simge \"$2\".",
+ "abusefilter-exception-noparams": "\"$2\" fonksiyonuna $1 karakterinde hiç parametre verilmedi.",
+ "abusefilter-exception-dividebyzero": "$1 karakterinde $2 ile kuraldışı sıfıra bölme girişimi.",
+ "abusefilter-exception-unrecognisedvar": "$1 karakterinde tanınmayan değişken $2",
+ "abusefilter-exception-notenoughargs": "$1 karakterinde çağrılan $2 fonksiyonu için yeterli değişken yok.\n$3 {{PLURAL:$3|değişken|değişken}} bekleniyordu, $4 alındı",
+ "abusefilter-exception-regexfailure": "\"$3\" düzenli ifadesinin $1 karakterinde hata: \"$2\"",
+ "abusefilter-exception-overridebuiltin": "$1 karakterinde \"$2\" yerleşik değişkeninin kuraldışı geçersiz kılınması.",
+ "abusefilter-exception-outofbounds": "$1 karakterindeki mevcut olmayan liste öğesi $2 (liste boyutu = $3) isteniyor.",
+ "abusefilter-exception-notlist": "$1 karakterinde dizi olmayan dizi öğesi isteniyor.",
+ "abusefilter-action-tag": "Etiketle",
+ "abusefilter-action-throttle": "Kısıtla",
+ "abusefilter-action-warn": "Uyar",
+ "abusefilter-action-blockautopromote": "Otomatik terfiyi engelle",
+ "abusefilter-action-block": "Engelle",
+ "abusefilter-action-degroup": "Gruplardan çıkar",
+ "abusefilter-action-rangeblock": "Aralık engellemesi",
+ "abusefilter-action-disallow": "İzin verme",
+ "abusefilter-revert-title": "$1 süzgecinin tüm değişikliklerini geri al",
+ "abusefilter-revert-intro": "Bu form, $1 filtresi yüzünden suistimal filtresi tarafından yapılan tüm değişiklikleri geri almanıza izin verir.\nLütfen bu aracı kullanmada dikkatli çalışın.",
+ "abusefilter-revert-preview-item": "$1: $2, $4 üzerinde bir $3 yaptı.\nGeri alınacak eylemler: $5 ($6)",
+ "abusefilter-revert-search-legend": "Geri alınacak suistimal filtresi eylemlerini seçin",
+ "abusefilter-revert-periodstart": "Dönem başlangıcı:",
+ "abusefilter-revert-periodend": "Dönem sonu:",
+ "abusefilter-revert-search": "Eylemleri seç",
+ "abusefilter-revert-filter": "Süzgeç:",
+ "abusefilter-revert-preview-intro": "Aşağıdakiler, suistimal filtresi tarafından alınan ve bu eylemle geri alınacak eylemlerdir.\nLütfen dikkatlice kontrol edin, ve seçiminizi onaylamak için \"onayla\"ya tıklayın.",
+ "abusefilter-revert-confirm": "Onayla",
+ "abusefilter-revert-success": "[[Special:AbuseFilter/$1|$2 filtresinden]] dolayı suistimal filtresi tarafından alınan tüm eylemleri geri aldınız.",
+ "abusefilter-revert-reason": "$1 filtresinden dolayı suistimal filtresi tarafından alınan tüm eylemlerin otomatik geri alımı.\nVerilen sebep: $2",
+ "abusefilter-revert-reasonfield": "Neden:",
+ "abusefilter-test": "Önceki değişiklikler için bir süzgeci dene",
+ "abusefilter-test-intro": "Bu sayfa, aşağıdaki kutuya girilen bir filtreyi son $1 {{PLURAL:$1|değişikliğe|değişikliğe}} karşı kontrol etmenize izin verir.\nMevcut bir filtreyi yüklemek için, filtre IDsini değişiklik metin kutusunun altındaki kutuya girin, ve \"Yükle\" düğmesine tıklayın.",
+ "abusefilter-test-legend": "Süzgeç denemesi",
+ "abusefilter-test-load-filter": "Süzgeç IDsini yükle:",
+ "abusefilter-test-submit": "Deneme",
+ "abusefilter-test-load": "Yükle",
+ "abusefilter-test-user": "Kullanıcının değişiklikleri:",
+ "abusefilter-test-period-start": "Sonradan yapılan değişiklikler:",
+ "abusefilter-test-period-end": "Önceden yapılan değişiklikler:",
+ "abusefilter-test-page": "Sayfaya yapılan değişiklikler:",
+ "abusefilter-test-shownegative": "Süzgeçle eşleşmeyen değişiklikleri göster",
+ "abusefilter-test-syntaxerr": "Girdiğiniz filtre sözdizimi hatası içerdi.\n\"Sözdizimini kontrol et\" düğmesine tıklayarak tam bir açıklama alabilirsiniz.",
+ "abusefilter-changeslist-examine": "incele",
+ "abusefilter-examine": "Bireysel değişiklikleri incele",
+ "abusefilter-examine-intro": "Bu sayfa, Suistimal filtresi tarafından özgün bir değişiklik için oluşturulan değişkenleri incelemenize, ve filtrelere karşı test etmenize izin verir.",
+ "abusefilter-examine-legend": "Değişiklikleri seç",
+ "abusefilter-examine-diff": "Fark URLsi:",
+ "abusefilter-examine-user": "Kullanıcı:",
+ "abusefilter-examine-title": "Sayfa başlığı:",
+ "abusefilter-examine-submit": "Ara",
+ "abusefilter-examine-vars": "Bu değişiklik için oluşturulan değişkenler",
+ "abusefilter-examine-test": "Bu değişikliği bir süzgece karşı dene",
+ "abusefilter-examine-test-button": "Süzgeci dene",
+ "abusefilter-examine-match": "Süzgeç bu değişiklikle eşleşti.",
+ "abusefilter-examine-nomatch": "Süzgeç bu değişiklikle eşleşmedi.",
+ "abusefilter-examine-syntaxerror": "Bu süzgeç geçersiz sözdizimine sahip",
+ "abusefilter-examine-notfound": "İstediğiniz değişiklik bulunamadı.",
+ "abusefilter-examine-incompatible": "İstediğiniz değişiklik Suistimal filtresi tarafından desteklenmiyor",
+ "abusefilter-examine-noresults": "Belirtmiş olduğunuz arama parametrelerine uygun hiçbir sonuç bulunamadı.",
+ "abusefilter-topnav": "'''Kötüye Kullanım Süzgeci gezintisi'''",
+ "abusefilter-topnav-home": "Ana",
+ "abusefilter-topnav-test": "Toplu test",
+ "abusefilter-topnav-examine": "Geçmiş değişiklikleri incele",
+ "abusefilter-topnav-log": "Kötüye kullanım günlüğü",
+ "abusefilter-topnav-tools": "Hata ayıklama araçları",
+ "abusefilter-topnav-import": "Süzgeci içe aktar",
+ "abusefilter-log-name": "Kötüye kullanım süzgeci günlüğü",
+ "abusefilter-log-header": "Bu günlük filtrelere yapılan değişikliklerin bir özetini gösterir.\nTam ayrıntılar için, son filtre değişiklikleri [[Special:AbuseFilter/history|listesine]] bakın.",
+ "abusefilter-log-noresults": "Sonuç yok",
+ "abusefilter-diff-title": "Sürümler arasındaki farklar",
+ "abusefilter-diff-item": "Öğe",
+ "abusefilter-diff-version": "$1'dan sürüm $2 tarafından",
+ "abusefilter-diff-info": "Temel bilgiler",
+ "abusefilter-diff-pattern": "Süzgeç koşulları",
+ "abusefilter-diff-invalid": "İstenen sürümler alınamıyor",
+ "abusefilter-diff-backhistory": "Filtre geçmişine geri dön",
+ "abusefilter-diff-prev": "Daha eski değişiklik",
+ "abusefilter-diff-next": "Daha yeni değişiklik",
+ "abusefilter-import-intro": "Bu arayüzü diğer vikilerden filtreleri içe aktarmak için kullanabilirsiniz.\nKaynak vikide, değiştirme arayüzünde \"{{int:abusefilter-edit-tools}}\"ın altındaki \"{{int:abusefilter-edit-export}}\"a tıklayın.\nGörünen metin kutusundan kopyalayın, ve bu metin kutusuna yapıştırın, daha sonra \"{{int:abusefilter-import-submit}}\"a tıklayın,",
+ "abusefilter-import-submit": "Verileri içe aktar",
+ "abusefilter-group-default": "Varsayılan"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/tru.json b/www/wiki/extensions/AbuseFilter/i18n/tru.json
new file mode 100644
index 00000000..808b9890
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/tru.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ariyo"
+ ]
+ },
+ "abusefilter-log-search-submit": "Krax"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/tt-cyrl.json b/www/wiki/extensions/AbuseFilter/i18n/tt-cyrl.json
new file mode 100644
index 00000000..ebd33d63
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/tt-cyrl.json
@@ -0,0 +1,16 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ajdar",
+ "Zahidulla",
+ "Ильнар"
+ ]
+ },
+ "abusefilter-desc": "Үзгәртүләргә эвристик ысуллар кулланырга мөмкинлек бирә.",
+ "abuselog": "Яман эшләр көндәлеге",
+ "abusefilter-log": "Яман эшләр көндәлеге",
+ "abusefilter-log-linkoncontribs": "яман эшләр көндәлеге",
+ "abusefilter-status-global": "Глобаль",
+ "abusefilter-topnav-log": "Яман эшләр көндәлеге",
+ "abusefilter-log-name": "Яман эшләр көндәлеге"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/tt-latn.json b/www/wiki/extensions/AbuseFilter/i18n/tt-latn.json
new file mode 100644
index 00000000..8f7b7246
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/tt-latn.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Frhdkazan"
+ ]
+ },
+ "abusefilter-revert-reasonfield": "Säbäp:"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/tyv.json b/www/wiki/extensions/AbuseFilter/i18n/tyv.json
new file mode 100644
index 00000000..188f7ccd
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/tyv.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Agilight"
+ ]
+ },
+ "abusefilter-diff-info": "Кол медээлел"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/tzm.json b/www/wiki/extensions/AbuseFilter/i18n/tzm.json
new file mode 100644
index 00000000..71ad25ec
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/tzm.json
@@ -0,0 +1,25 @@
+{
+ "@metadata": {
+ "authors": [
+ "Tifinaghes"
+ ]
+ },
+ "abusefilter-log-search-title": "ⴰⵣⵡⵉⵍ:",
+ "abusefilter-edit-flags": "ⴰⵙⵏⵖⵎⵙ:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|ⵜⴰⵙⵏⴰⵜ|ⵜⵉⵙⵏⴰⵜⵉⵏ}}",
+ "abusefilter-edit-warn-other": "ⵜⴰⴱⵔⴰⵜ ⵏⵏⵉⴹⵏ",
+ "abusefilter-edit-history": "ⴰⵎⵣⵔⵓⵢ:",
+ "abusefilter-edit-tools": "ⵉⵎⴰⵙⵙⵏ:",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Modulo (%)",
+ "abusefilter-edit-builder-op-bool-and": "ⴷ (&)",
+ "abusefilter-edit-builder-op-bool-or": "ⵏⵖ (|)",
+ "abusefilter-edit-builder-vars-article-id": "ⵓⵟⵟⵓⵏ ⵏ ⵜⴰⵙⵏⴰ (ID)",
+ "abusefilter-history-timestamp": "ⴰⴽⵓⴷ",
+ "abusefilter-history-diff": "ⵉⴱⴷⴷⴻⵍⵏ",
+ "abusefilter-action-block": "ⴰⵙⴳⴷⵍ",
+ "abusefilter-examine-title": "ⴰⵣⵡⵉⵍ ⵏ ⵜⴰⵙⵏⴰ:",
+ "abusefilter-examine-submit": "ⴰⵔⵣⵣⵓ",
+ "abusefilter-topnav-home": "ⴰⵙⵏⵓⴱⴳ",
+ "abusefilter-log-noresults": "ⵡⴰⵔ ⵜⵉⵢⴰⴼⵓⵜⵉⵏ",
+ "abusefilter-diff-item": "ⴰⴼⵔⴷⵉⵙ"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/udm.json b/www/wiki/extensions/AbuseFilter/i18n/udm.json
new file mode 100644
index 00000000..580bbbf6
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/udm.json
@@ -0,0 +1,19 @@
+{
+ "@metadata": {
+ "authors": [
+ "Irus",
+ "Wadorgurt"
+ ]
+ },
+ "abusefilter": "Умойтэм ужъёсыз фильтрлы настройка",
+ "abusefilter-warning": "'''Сак луэ:''' Та уж автоматически тодмамын умойтэм кадь.\nНеконструктивной ужъёс ӝог палэнтӥськозы,\nно урод яке трос полъем неконструктивной тупатонъёс ваёзы тӥлесьтыд аккаунттэс яке IP-адрестэс блокировка борды.\nТӥ оскиськоды ке, та тупатон луэ конструктивной шуыса, тӥ быгатӥськоды выльысь сое быдэстыны кнопкаез эшшо одӥг пол зӥбыса.\nПравилолэн вакчи описаниез, кудӥзлы тӥляд ужды кельшиз: $1",
+ "abusefilter-disallowed": "Та уж автоматически тодмамын умойтэм кадь, соин ик дугдытэмын.\nТӥ оскиськоды ке, та тупатон луэ конструктивной шуыса, тауна, ивортэ администраторлы, мае тӥ оскалтӥды лэсьтыны.\nПравилолэн вакчи описаниез, кудӥзлы тӥляд ужды кельшиз: $1",
+ "abusefilter-blocked-display": "Та уж автоматически тодмамын умойтэм кадь,\nно тӥ дугдытэмын сое быдэстыны.\nСо сяна, {{SITENAME}} возьманы вылысь, тӥляд учётной записьты но вань герӟаськем IP-адресъёсты заблокировать каремын.\nТа потӥз янгышен сэрен ке, тауна, администраторен герӟаське.\nФильтрлэн вакчи описаниез, кудӥзлы тӥляд ужды кельшиз: $1",
+ "abusefilter-blocker": "Умойтэм ужъёсыз фильтр",
+ "abusefilter-blockreason": "Умойтэм ужъёсыз фильтрен автоматически заблокировать каремын.\nЯрано луись правилолэн описаниез: $1",
+ "abusefilter-hidden": "Ватэм",
+ "abusefilter-unhidden": "Котькинлы адӟиськись",
+ "abusefilter-edit-denied": "Тӥ уд быгатӥське тупен информациез учкыны та фильтр сярысь, малы ке шуоно со ватэмын огшоры викиавторъёслэсь.",
+ "abusefilter-edit-notallowed": "Тӥ уд лэзиськиське умойтэм ужъёсыз фильтръёсыз кылдытыны яке тупатъяны",
+ "abusefilter-edit-notallowed-global": "Тӥ уд лэзиськиське умойтэм ужъёсыз глобальной фильтръёсыз кылдытыны яке тупатъяны"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/ug-arab.json b/www/wiki/extensions/AbuseFilter/i18n/ug-arab.json
new file mode 100644
index 00000000..de724361
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/ug-arab.json
@@ -0,0 +1,385 @@
+{
+ "@metadata": {
+ "authors": [
+ "Arlin",
+ "Sahran",
+ "Matma Rex",
+ "Uzdil"
+ ]
+ },
+ "abusefilter-desc": "تەھرىرلەش قىلمىشىغا ئۆزلۈكىدىن شەرت ھۆكۈم قىل",
+ "abusefilter": "سۈيىئىستىمال سۈزگۈچ سەپلىمىسى",
+ "abuselog": "سۈيىئىستىمال خاتىرىسى",
+ "abusefilter-intro": "سۈيىئىستىمال سۈزگۈچ باشقۇرۇش ئارا يۈزىگە خۇش كەلدىڭىز.\nسۈيىئىستىمال سۈزگۈچى يېقىنقى بارلىق تەھرىر قىلمىشلىغا ئۆزلۈكىدىن ھۆكۈم قىلىدىغان يۇمشاق دېتال سىستېمىسىدۇر.\nبۇ ئارايۈزدە نۆۋەتتىكى ھەممە سۈزگۈچلەر تىزىملىكى بار، باشقۇرغۇچىلارنىڭ بۇ سۈزگۈچلەرنى ئۆزگەرتىشىگە يول قويۇلىدۇ.",
+ "abusefilter-mustbeeditor": "بىخەتەرلىكنى ئويلۇشۇپ، بۇ ئارايۈزنى سۈيىئىستىمال سۈزگۈچنى تەھرىرلىيەلەيدىغان ئىشلەتكۈچىلەرلا ئىشلىتەلەيدۇ.",
+ "abusefilter-warning": "'''ئاگاھلاندۇرۇش''': قىلمىشىڭىزنىڭ خەتەرلىك ئىكەنلىكى ئاپتوماتىك بايقالدى.\nئەھمىيەتسىز تەھرىرلەش تېز سۈرئەتتە ئەسلىگە قايتۇرۇلىدۇ،\nچەكتىن ئاشقان ياكى تەكرارلانغان ئەھمىيەتسىز تەھرىرلەش ھېساباتىڭىز ياكى IP ئادرېسىڭىزنىڭ چەكلىنىشىنى كەلتۈرۈپ چىقىرىدۇ.\nئەگەر شۇ قېتىملىق تەھرىرلەشنىڭ ئەھمىيىتى بار دەپ قارىسىڭىز، سىز يەنە قايتا چېكىپ تاپشۇرۇشنى جەزملىسىڭىز بولىدۇ.\nبۇ قېتىملىق تەھرىرلەش قىلمىشىڭىزغا ماس كەلگەن سۈزگۈچ قائىدىسىنىڭ چۈشەندۈرۈشى تۆۋەندىكىچە: $1",
+ "abusefilter-disallowed": "قىلمىشىڭىزنىڭ خەتەرلىك ئىكەنلىكى ئاپتوماتىك بايقىلىپ چەكلەندى. \nئەگەر شۇ قېتىملىق تەھرىرلەشنىڭ ئەھمىيىتى بار دەپ قارىسىڭىز، باشقۇرغۇچى بىلەن ئالاقىلىشىپ، سىز قىلماقچى بولغان ئىشنى ئۇلارغا ئېيتىڭ. \nبۇ قېتىملىق تەھرىرلەش قىلمىشىڭىزغا ماس كەلگەن سۈزگۈچ قائىدىسىنىڭ چۈشەندۈرۈشى تۆۋەندىكىچە: $1",
+ "abusefilter-blocked-display": "قىلمىشىڭىزنىڭ خەتەرلىك ئىكەنلىكى ئاپتوماتىك بايقىلىپ، داۋاملاشتۇرۇش توسۇلدى. ئۇندىن باشقا {{SITENAME}} نى قوغداش ئۈچۈن، ھېساباتىڭىز ۋە ئۇنىڭغا مۇناسىۋەتلىك IP ئادرېسلارنىڭ ھەممىسىنىڭ تەھرىرلىشى چەكلەندى.\nئەگەر شۇ قېتىملىق تەھرىرلەشنى سىستېما خاتا پەرەز قىلغان دەپ قارىسىڭىز، باشقۇرغۇچى بىلەن ئالاقىلىشىڭ.\nبۇ قېتىملىق تەھرىرلەش قىلمىشىڭىزغا ماس كەلگەن سۈزگۈچ قائىدىسىنىڭ چۈشەندۈرۈشى تۆۋەندىكىچە: $1",
+ "abusefilter-degrouped": "قىلمىشىڭىزنىڭ خەتەرلىك ئىكەنلىكى ئاپتوماتىك بايقىلىپ، چەكلەندى. ئۇندىن باشقا ھېساباتىڭىز ئوغرىلانغانلىقى گۇمان قىلىنغاچقا،ھەممە ھوقۇقلىرىڭىز مەھرۇم قىلىندى. \nئەگەر شۇ قېتىملىق تەھرىرلەشنى سىستېما خاتا پەرەز قىلغان دەپ قارىسىڭىز، بيۇروكرات بىلەن ئالاقىلىشىپ، بۇ قىتىملىق قىلمىشنى چۈشەندۈرسىڭىز، ھوقۇقنى قايتۇرۇۋالايسىز. \nبۇ قېتىملىق تەھرىرلەش قىلمىشىڭىزغا ماس كەلگەن سۈزگۈچ قائىدىسىنىڭ چۈشەندۈرۈشى تۆۋەندىكىچە: $1",
+ "abusefilter-autopromote-blocked": "بۇ قىلمىشىڭىزنىڭ خەتەرلىك ئىكەنلىكى ئاپتوماتىك بايقىلىپ، توسۇلدى. ئۇندىن باشقا بىخەتەرلىك يۈزىسىدىن ھېساباتىڭىز قۇرۇلغاندا ئىلگىرى بېرىلگەن بىر قىسىم،ھوقۇقلىرىڭىز مەھرۇم قىلىندى. \nبۇ قېتىملىق قىلمىشىڭىزغا ماس كەلگەن سۈزگۈچ قائىدىسىنىڭ چۈشەندۈرۈشى تۆۋەندىكىچە: $1",
+ "abusefilter-blocker": "سۈيىئىستىمال سۈزگۈچى",
+ "abusefilter-blockreason": "سۈيىئىستىمال سۈزگۈچى ئۆزلۈكىدىن توستى.\nماس كەلگەن قائىدە چۈشەندۈرۈشى: $1",
+ "abusefilter-degroupreason": "سۈيىئىستىمال سۈزگۈچى ھوقۇقنى ئۆزلۈكىدىن مەھرۇم قىلدى.\nقائىدە چۈشەندۈرۈشى: $1",
+ "abusefilter-accountreserved": "بۇ ھېسابات ئاتى سۈيىئىستىمال سۈزگۈچىنىڭ ئىشلىتىشىگە قالدۇرۇلغان.",
+ "right-abusefilter-modify": "سۈيىئىستىمال سۈزگۈچ ئۆزگەرت",
+ "right-abusefilter-view": "سۈيىئىستىمال سۈزگۈچ كۆرسەت",
+ "right-abusefilter-log": "سۈيىئىستىمال خاتىرىسىنى كۆرسەت",
+ "right-abusefilter-log-detail": "سۈيىئىستىمال خاتىرىسىنىڭ تەپسىلاتىنى كۆرسەت",
+ "right-abusefilter-private": "سۈيىئىستىمال خاتىرىسىدىكى شەخسىي سانلىق مەلۇماتنى كۆرسەت",
+ "right-abusefilter-modify-restricted": "چەكلىك مەشغۇلاتتا سۈيىئىستىمال سۈزگۈچىنى ئۆزگەرت",
+ "right-abusefilter-revert": "سۈيىئىستىمال سۈزگۈچى ئېلىپ بارغان ھەممە مەشغۇلاتنى ئەسلىگە قايتۇر",
+ "right-abusefilter-view-private": "شەخسىيەت بەلگىسى قويۇلغان سۈيىئىستىمال سۈزگۈچىنى كۆرسەت",
+ "right-abusefilter-log-private": "ئاشكارىلانمايدىغان سۈزگۈچنىڭ سۈزگەن ئۇچۇرلىرىنى كۆرسىتىدۇ",
+ "right-abusefilter-hide-log": "سۈيىئىستىمال خاتىرىسىدىن تۈرنى يوشۇر",
+ "right-abusefilter-hidden-log": "سۈيىئىستىمال خاتىرىسىدىكى يوشۇرۇن تۈرلەرنى كۆرسەت",
+ "action-abusefilter-modify": "سۈيىئىستىمال سۈزگۈچلەرنى ئۆزگەرت",
+ "action-abusefilter-view": "سۈيىئىستىمال سۈزگۈچلەرنى كۆرسەت",
+ "action-abusefilter-log": "بۇ سۈيىئىستىمال خاتىرىسىنى كۆرسەت",
+ "action-abusefilter-log-detail": "سۈيىئىستىمال خاتىرىلىرىنىڭ تەپسىلاتىنى كۆرسەت",
+ "action-abusefilter-private": "سۈيىئىستىمال خاتىرىسىدىكى شەخسىي سانلىق مەلۇماتنى كۆرسەت",
+ "action-abusefilter-modify-restricted": "چەكلىك مەشغۇلاتتا سۈيىئىستىمال سۈزگۈچلىرىنى ئۆزگەرت",
+ "action-abusefilter-revert": "سۈيىئىستىمال سۈزگۈچى ئېلىپ بارغان ھەممە ئۆزگەرتىشلەرنى ئەسلىگە قايتۇر",
+ "action-abusefilter-view-private": "شەخسىيەت بەلگىسى قويۇلغان سۈيىئىستىمال سۈزگۈچلەرنى كۆرسەت",
+ "abusefilter-log": "سۈيىئىستىمال سۈزگۈچ خاتىرىسى",
+ "abusefilter-log-summary": "بۇ خاتىرە سۈيىئىستىمال سۈزگۈچى بايقىغان ھەممە مەشغۇلاتنى كۆرسىتىدۇ.",
+ "abusefilter-log-search": "سۈيىئىستىمال خاتىرىسىنى ئىزدە",
+ "abusefilter-log-search-user": "ئىشلەتكۈچى:",
+ "abusefilter-log-search-filter": "سۈزگۈچ IDسى:",
+ "abusefilter-log-search-title": "ماۋزۇ:",
+ "abusefilter-log-search-wiki": "ۋىكى:",
+ "abusefilter-log-search-submit": "ئىزدە",
+ "abusefilter-log-entry": "$1: $2 بىر سۈيىئىستىمال سۈزگۈچىگە تەسىر قىلدى. $4 دا \"$3\" مەشغۇلات ئېلىپ باردى.\nقوللانمغان مەشغۇلات: $5؛\nسۈزگۈچ چۈشەندۈرۈشى: $6",
+ "abusefilter-log-detailedentry-meta": "$1: $2 بولسا $3 غا تەسىر قىلدى. $5 دا \"$4\" مەشغۇلات ئېلىپ باردى.\nقوللانغان مەشغۇلات: $6؛\nسۈزگۈچ چۈشەندۈرۈشى: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "ئومۇمىيەت سۈزگۈچ $1",
+ "abusefilter-log-detailedentry-local": "$1 سۈزگۈچ",
+ "abusefilter-log-detailslink": "تەپسىلاتى",
+ "abusefilter-log-diff": "پەرق",
+ "abusefilter-log-hidelink": "كۆرۈنۈشچانلىقىنى تەڭشە",
+ "abusefilter-log-details-legend": "$1 خاتىرە تۈرىنىڭ تەپسىلاتى",
+ "abusefilter-log-details-var": "ئۆزگەرگۈچى مىقدار",
+ "abusefilter-log-details-val": "قىممىتى",
+ "abusefilter-log-details-vars": "مەشغۇلات پارامېتىرى",
+ "abusefilter-log-details-private": "شەخسىي سانلىق مەلۇمات",
+ "abusefilter-log-details-ip": "ئەسلى IP ئادرېسى",
+ "abusefilter-log-noactions": "يوق",
+ "abusefilter-log-details-diff": "تەھرىرلەشتىكى ئۆزگىرىش",
+ "abusefilter-log-linkoncontribs": "سۈيىئىستىمال خاتىرىسى",
+ "abusefilter-log-linkoncontribs-text": "بۇ ئىشلەتكۈچىنىڭ سۈيىئىستىمال خاتىرىسى",
+ "abusefilter-log-hidden": "(تۈر يوشۇرۇن)",
+ "abusefilter-log-hidden-implicit": "(تۈزىتىلگەن نەشرى ئۆچۈرۈلگەنلىكتىن يوشۇرۇلدى)",
+ "abusefilter-log-cannot-see-details": "بۇ تۈرنىڭ تەپسىلاتىنى كۆرۈش ھوقۇقىڭىز يوق.",
+ "abusefilter-log-details-hidden": "سىز بۇ تۈرنىڭ تەپسىلاتىنى كۆرەلمەيسىز چۈنكى بۇ تۈر ئاممىۋى كۆرۈنۈشتىن يوشۇرۇلغان.",
+ "abusefilter-log-hide-legend": "خاتىرە تۈرىنى يوشۇر",
+ "abusefilter-log-hide-id": "خاتىرە تۈر ID سى:",
+ "abusefilter-log-hide-hidden": "بۇ تۈرنى ئاممىۋى كۆرۈنۈشتىن يوشۇر",
+ "abusefilter-log-hide-reason": "سەۋەب:",
+ "abusefilter-log-hide-forbidden": "سۈيىئىستىمال خاتىرە تۈرىنى يوشۇرۇش ھوقۇقىڭىز يوق.",
+ "abusefilter-logentry-suppress": "\"[[$1]]\" يوشۇرۇش",
+ "abusefilter-logentry-unsuppress": "\"[[$1]]\" يوشۇرما",
+ "logentry-abusefilter-hit": "$1 بولسا $4 غا تەسىر قىلىپ $3 دا \"$5\" مەشغۇلاتنى ئېلىپ باردى، مەشغۇلاتى: $6 ($7)",
+ "abusefilter-management": "سۈيىئىستىمال سۈزگۈچ باشقۇرۇش",
+ "abusefilter-list": "ھەممە سۈزگۈچلەر",
+ "abusefilter-list-id": "سۈزگۈچ ID سى",
+ "abusefilter-list-status": "ھالەت",
+ "abusefilter-list-public": "ئاشكارا چۈشەندۈرۈش",
+ "abusefilter-list-consequences": "خۇلاسە",
+ "abusefilter-list-visibility": "كۆرۈنۈشچانلىقى",
+ "abusefilter-list-hitcount": "ئۇرۇلۇش سانى",
+ "abusefilter-list-edit": "تەھرىرلەش",
+ "abusefilter-list-details": "تەپسىلاتى",
+ "abusefilter-list-limit": "ھەر بەتتىكى سانى:",
+ "abusefilter-list-lastmodified": "ئاخىرقى ئۆزگەرتىش",
+ "abusefilter-list-group": "سۈزگۈچ گۇرۇپپىسى",
+ "abusefilter-hidden": "شەخسىي",
+ "abusefilter-unhidden": "ئاشكارا",
+ "abusefilter-enabled": "قوزغىتىلغان",
+ "abusefilter-deleted": "ئۆچۈرۈلگەن",
+ "abusefilter-disabled": "چەكلەنگەن",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|قېتىم|قېتىم}} ئۇرۇلغان",
+ "abusefilter-new": "يېڭى بىر سۈزگۈچ قۇر",
+ "abusefilter-return": "سۈزگۈچ باشقۇرۇشقا قايت",
+ "abusefilter-status-global": "ئومۇمىيەت",
+ "abusefilter-list-options": "تاللانما",
+ "abusefilter-list-options-deleted": "ئۆچۈرۈلگەن سۈزگۈچلەر:",
+ "abusefilter-list-options-deleted-only": "ئۆچۈرۈلگەن سۈزگۈچنىلا كۆرسەت",
+ "abusefilter-list-options-deleted-hide": "ئۆچۈرۈلگەن سۈزگۈچلەرنى يوشۇرۇش",
+ "abusefilter-list-options-deleted-show": "ئۆچۈرۈلگەن سۈزگۈچلەرنى ئۆز ئىچىگە ئالىدۇ",
+ "abusefilter-list-options-scope": "سۈزگۈچ كۆرسىتىش ئورنى:",
+ "abusefilter-list-options-scope-local": "يەرلىك ۋىكى",
+ "abusefilter-list-options-scope-global": "ئومۇمىي قائىدە",
+ "abusefilter-list-options-disabled": "چەكلەنگەن سۈزگۈچلەر:",
+ "abusefilter-list-options-hidedisabled": "چەكلەنگەن سۈزگۈچلەرنى يوشۇر",
+ "abusefilter-list-options-submit": "يېڭىلا",
+ "abusefilter-tools-text": "بۇلار سۈيىئىستىمال سۈزگۈچلەرنى ياساش ۋە سىناشتا لازىملىق بولغان قورللاردۇر.",
+ "abusefilter-tools-expr": "ئىپادە سىنىغۇچ",
+ "abusefilter-tools-submitexpr": "مۆلچەر",
+ "abusefilter-tools-reautoconfirm": "ئۆزلۈكىدىن جەزملەش ھالىتىنى ئەسلىگە قايتۇر",
+ "abusefilter-tools-reautoconfirm-user": "ئىشلەتكۈچى:",
+ "abusefilter-tools-reautoconfirm-submit": "قايتىدىن ئۆزلۈكىدىن جەزملە",
+ "abusefilter-reautoconfirm-none": "بۇ {{GENDER:$1|ئىشلەتكۈچى|ئىشلەتكۈچى|ئىشلەتكۈچىلەر}}نىڭ ئۆزلۈكىدىن جەزملەش ھالىتى بىكار قىلىنىپ باقمىغان.",
+ "abusefilter-reautoconfirm-notallowed": "ئۆزلۈكىدىن جەزملەش ھالىتىنى ئەسلىگە كەلتۈرۈشىڭىزگە يول قويۇلمىغان.",
+ "abusefilter-reautoconfirm-done": "ھېساباتنىڭ ئۆزلۈكىدىن جەزملەش ھالىتى ئەسلىگە كەلتۈرۈلدى",
+ "abusefilter-status": "ئاخىرقى $1 {{PLURAL:$1|مەشغۇلات}}تا، $2 ($3%) {{PLURAL:$2|قېتىم}}لىق مەشغۇلات $4 قېتىملىق يۇقىرى چەككە يەتتى، $5 ($6%) {{PLURAL:$5|قېتىم}}لىق تەھرىرلەش قوزغىتىلغان سۈزگۈچنىڭ بىرىنى قوزغاتتى.",
+ "abusefilter-edit-subtitle": "$1 سۈزگۈچنى تەھرىرلەۋاتىدۇ",
+ "abusefilter-edit-subtitle-new": "سۈزگۈچ قۇرۇش",
+ "abusefilter-edit-oldwarning": "<strong>سىز بۇ سۈزگۈچنىڭ كونا نەشرىنى تەھرىرلەۋاتىسىز. سىتاتىستىكىدا نەقىل ئېلىۋاتقان سۈزگۈچ ئەڭ يېڭىسى. ئەگەر تەھرىرلىشىڭىزنى ساقلىسىڭىز، تەھرىرلىگەن نەشرىدىن كېيىنكى ھەممە ئۆزگەرتىشلەر قاپلىنىپ كېتىدۇ</strong> &bull;\n[[Special:AbuseFilter/history/$2|بۇ سۈزگۈچنىڭ تارىخ خاتىرىسىگە قايت]].",
+ "abusefilter-edit-status-label": "ستاتىستىكا:",
+ "abusefilter-edit-status": "ئاخىرقى {{PLURAL:$1|مەشغۇلات}}تا $2 ($3%) قېتىملىق تەھرىرلەش بۇ سۈزگۈچنى قوزغاتتى. ئۇنىڭ ئوتتۇرىچە ئىجرا قىلىنىش ۋاقتى $4 ms (مىللىسېكۇنت)، {{PLURAL:$5|چەكلىمە}}نى سەرپ قىلدى.",
+ "abusefilter-edit-status-profile": "ئاخىرقى {{PLURAL:$1|مەشغۇلات}}تا $2 ($3%) قېتىملىق تەھرىرلەش بۇ سۈزگۈچنى قوزغاتتى. ئۇنىڭ ئوتتۇرىچە ئىجرا قىلىنىش ۋاقتى $4 ms (مىللىسېكۇنت)، {{PLURAL:$5|چەكلىمە}}نى سەرپ قىلدى.",
+ "abusefilter-edit-new": "يېڭى سۈزگۈچ",
+ "abusefilter-edit-save": "سۈزگۈچ ساقلا",
+ "abusefilter-edit-id": "سۈزگۈچ IDسى:",
+ "abusefilter-edit-description": "چۈشەندۈرۈش:\n''(ئاشكارا كۆرۈنۈشچان)'':",
+ "abusefilter-edit-group": "سۈزگۈچ گۇرۇپپىسى:",
+ "abusefilter-edit-flags": "بەلگەلەر:",
+ "abusefilter-edit-enabled": "بۇ سۈزگۈچنى قوزغات",
+ "abusefilter-edit-deleted": "ئۆچۈرۈلدى بەلگىسى سال",
+ "abusefilter-edit-hidden": "بۇ سۈزگۈچنىڭ تەپسىلىي ئۇچۇرلىرىنى ئاشكارا كۆرۈنۈشتە يوشۇر",
+ "abusefilter-edit-global": "ئومۇمىي سۈزگۈچ",
+ "abusefilter-edit-rules": "شەرتلەر:",
+ "abusefilter-edit-notes": "ئىزاھاتلار:\n''(شەخسىي)'':",
+ "abusefilter-edit-lastmod": "سۈزگۈچنىڭ ئاخىرقى ئۆزگەرتىلگىنى:",
+ "abusefilter-edit-lastmod-text": "$1 نى $2 تەرىپىدىن",
+ "abusefilter-edit-hitcount": "سۈزگۈچ ئۇرۇلغان سانى:",
+ "abusefilter-edit-consequences": "ماس كەلگەندىكى مەشغۇلاتلار",
+ "abusefilter-edit-action-warn": "ئىشلەتكۈچىگە ئاگاھلاندۇرۇش بەرگەندىن كېيىن تۆۋەندىكى مەشغۇلاتنى قوزغىتىدۇ",
+ "abusefilter-edit-action-disallow": "ئىشلەتكۈچىنىڭ يوچۇن مەشغۇلات قىلىشىنىڭ ئالدىنى ئالىدۇ",
+ "abusefilter-edit-action-blockautopromote": "ئىشلەتكۈچىنىڭ ئۆزلۈكىدىن جەزملەش ھالىتىدىن يېنىۋال",
+ "abusefilter-edit-action-degroup": "ئىشلەتكۈچىنى ھەممە ھوقۇق گۇرۇپپىسىدىن چىقىرىۋەت",
+ "abusefilter-edit-action-block": "تەھرىرلەش ئېلىپ بارغان ئىشلەتكۈچى ۋە ياكى IP ئادرېسنى چەكلە",
+ "abusefilter-edit-action-throttle": "ئىشلەتكۈچىنىڭ يولۇققان مەشغۇلات سانى بەلگىلەنگەن چەككە يەتكەندە ئاندىن مەشغۇلاتنى قوزغات",
+ "abusefilter-edit-action-rangeblock": "ئىشلەتكۈچى ئىشلەتكەن ئەسلى IP ئادرېسقا ئاساسەن /16 دائىرىسىدە چەكلە",
+ "abusefilter-edit-action-tag": "تېخىمۇ ئىلگىرىلەپ تەكشۈرۈش ئۈچۈن بۇ تەھرىرلەشكە بەلگە سال",
+ "abusefilter-edit-throttle-count": "يول قويۇلىدىغان مەشغۇلات قېتىم سانى:",
+ "abusefilter-edit-throttle-period": "ۋاقىت ئۇزۇنلۇقى:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|سېكۇنت|سېكۇنت}}",
+ "abusefilter-edit-throttle-groups": "چەكلىنىدىغان گۇرۇپپا:\n''(ھەر قۇرغا بىردىن، ئىنگلىزچە پەش بىلەن ئۇلىنىدۇ)'':",
+ "abusefilter-edit-warn-message": "ئاگاھلاندۇرۇشقا ئىشلىتىلىدىغان سىستېما ئۇچۇرى:",
+ "abusefilter-edit-warn-other": "باشقا ئۇچۇر",
+ "abusefilter-edit-warn-other-label": "باشقا ئۇچۇرنىڭ بەت ئاتى:\n''(MediaWiki ئالدى قوشۇلغۇچىسى يوق)'':",
+ "abusefilter-edit-warn-actions": "مەشغۇلاتلار:",
+ "abusefilter-edit-warn-preview": "تاللانغان ئۇچۇرنى ئالدىن كۆزەت",
+ "abusefilter-edit-warn-edit": "تاللىغان ئۇچۇرنى قۇر/تەھرىرلە",
+ "abusefilter-edit-tag-tag": "قوللىنىدىغان بەلگەلەر(ھەر قۇرغا بىردىن):",
+ "abusefilter-edit-denied": "بۇ سۈزگۈچنىڭ تەپسىلاتىنى كۆرەلمەيسىز چۈنكى ئۇ ئاممىۋى كۆرۈنۈشتىن يوشۇرۇلغان.",
+ "abusefilter-edit-main": "سۈزگۈچ پارامېتىرلىرى",
+ "abusefilter-edit-done-subtitle": "سۈزگۈچ تەھرىرلەندى",
+ "abusefilter-edit-done": "$1 سۈزگۈچنىڭ ئۆزگەرتىشىنى مۇۋەپپەقىيەتلىك ساقلىدىڭىز.",
+ "abusefilter-edit-badsyntax": "سىز بەلگىلىگەن سۈزگۈچتە تىلقۇرما خاتالىقى مەۋجۇت.\nيەشكۈچنىڭ چىقارغان نەتىجىسى: <pre>$1</pre>",
+ "abusefilter-edit-restricted": "بۇ سۈزگۈچنى تەھرىرلىيەلمەيسىز چۈنكى ئۇنىڭدا بىر ياكى بىر قانچە چەكلەنگەن مەشغۇلات بار.\nمۇناسىپ ھوقۇقى بار ئىشلەتكۈچىنىڭ ياردىمىگە ئېرىشىڭ، ئۇ سىزگە ھەمكارلىشىپ مۇناسىپ ئۆزگەرتىش ئېلىپ بارىدۇ.",
+ "abusefilter-edit-viewhistory": "بۇ سۈزگۈچنىڭ تارىخىنى كۆرسەت",
+ "abusefilter-edit-history": "تارىخ:",
+ "abusefilter-edit-check": "تىلقۇرما تەكشۈر",
+ "abusefilter-edit-badfilter": "سىز بەلگىلىگەن سۈزگۈچ مەۋجۇت ئەمەس.",
+ "abusefilter-edit-revert": "سۈزگۈچنىڭ مەشغۇلاتىنى ئەسلىگە قايتۇر",
+ "abusefilter-edit-tools": "قوراللار:",
+ "abusefilter-edit-test-link": "يېقىنقى تەھرىرلەشلەر ئارقىلىق بۇ سۈزگۈچنى سىنا",
+ "abusefilter-edit-export": "بۇ سۈزگۈچنى باشقا ۋىكىغا چىقار",
+ "abusefilter-edit-syntaxok": "تىلقۇرما خاتالىقى بايقالمىدى.",
+ "abusefilter-edit-syntaxerr": "تىلقۇرما خاتالىقى بايقالدى: $1",
+ "abusefilter-edit-bad-tags": "سىز بەلگىلىگەن بىر ياكى كۆپ بەلگىنى ئىشلەتكىلى بولمايدۇ.\nبەلگە بەك ئۇزۇن بولسا بولمايدۇ ھەمدە ھەر قانداق ئالاھىدە ھەرپنى ئۆز ئىچىگە ئالسا بولمايدۇ.",
+ "abusefilter-edit-notallowed": "سۈيىئىستىمال سۈزگۈچنى قۇرۇش ياكى تەھرىرلەشكە يول قويمايدۇ",
+ "abusefilter-edit-builder-select": "نۇر بەلگىسىگە قوشىدىغان تاللانمىنى تاللاڭ",
+ "abusefilter-edit-builder-group-op-arithmetic": "ئارىفمېتىكا ئەمەللىرى",
+ "abusefilter-edit-builder-op-arithmetic-addition": "قوشۇش (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "ئېلىش (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "كۆپەيتىش (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "بۆلۈش (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "مودىل (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "دەرىجە (**)",
+ "abusefilter-edit-builder-group-op-comparison": "سېلىشتۇرۇش ئەمەللىرى",
+ "abusefilter-edit-builder-op-comparison-equal": "تەڭ (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "تەڭ ئەمەس (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "كىچىك (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "چوڭ (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "كىچىك ياكى تەڭ (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "چوڭ ياكى تەڭ (<=)",
+ "abusefilter-edit-builder-group-op-bool": "بۇلىن ئەمەللىرى",
+ "abusefilter-edit-builder-op-bool-not": "ئەمەس (!)",
+ "abusefilter-edit-builder-op-bool-and": "ۋە (&)",
+ "abusefilter-edit-builder-op-bool-or": "ياكى (|)",
+ "abusefilter-edit-builder-op-bool-xor": "XOR (^)",
+ "abusefilter-edit-builder-group-misc": "باشقىلار",
+ "abusefilter-edit-builder-misc-in": "ھەرپنىڭ ئىچىدە (in)",
+ "abusefilter-edit-builder-misc-like": "ماسلاشقان ئەندىزە (like)",
+ "abusefilter-edit-builder-misc-rlike": "ماسلاشقان مۇنتىزىم ئىپادە (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "ماسلاشقان مۇنتىزىم ئىپادە، چوڭ كىچىك يېزىلىشنى پەرقلەندۈرىدۇ (irlike)",
+ "abusefilter-edit-builder-misc-contains": "سول ھەرپ تىزىقى ئوڭ ھەرپ تىزىقى (contains)نى ئۆز ئىچىگە ئالغان",
+ "abusefilter-edit-builder-misc-stringlit": "ھەرپ تىزىقى (\"\")",
+ "abusefilter-edit-builder-misc-tern": "ئۈچ ئاساسلىق ئەمەل بەلگىسى (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "شەرت ئىپادىسى (if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "فۇنكسىيە",
+ "abusefilter-edit-builder-funcs-length": "ھەرپ تىزىقىنىڭ ئۇزۇنلۇقى (length)",
+ "abusefilter-edit-builder-funcs-lcase": "كىچىك ھەرپكە ئايلاندۇر (lcase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "ئاسان ئارىلىشىپ كېتىدىغان ھەرپنى ئۆلچەملەشتۈرۈش (ccnorm)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "قوش ھەرپلەرنى چىقىرىۋەت (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "ئالاھىدە ھەرپلەر / جەمئى ھەرپ (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "قېلىپلاشتۇرۇش (norm)",
+ "abusefilter-edit-builder-funcs-count": "ھەرپ تىزىقى X نىڭ ھەرپ تىزىقى Y دا كۆرۈلگەن قېتىم سانى (count)",
+ "abusefilter-edit-builder-funcs-rcount": "مۇنتىزىم ئىپادە X نىڭ ھەرپ تىزىقى Y دا ماس كەلگەن قېتىم سانى (rcount)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "بوش ھەرپنى چىقىرىۋەت (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "ئالاھىدە ھەرپلەرنى چىقىرىۋەت (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "IP دائىرە ئىچىدىمۇ؟(ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "ھەر تىزىقىدىن كۆپ تارماق ھەرپ تىزىقىنى ئىزدە (contains_any)",
+ "abusefilter-edit-builder-funcs-substr": "تارماق ھەرپ تىزىقى (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "تارماق ھەرپ تىزىقىنىڭ ھەرپ تىزىقىدىكى ئورنى (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "ھەرپ تىزىقىدا تارماق ھەرپ تىزىقىنى ئالماشتۇر (str_replace)",
+ "abusefilter-edit-builder-funcs-rescape": "كۆچمە مەنىدىكى ھەرپ تىزىقىنى مۇنتىزىم ئىپادىدە ئىشلىتىش (rescape)",
+ "abusefilter-edit-builder-funcs-set_var": "ئۆزگەرگۈچى تەڭشىكى (set_var)",
+ "abusefilter-edit-builder-group-vars": "ئۆزگەرگۈچى مىقدار",
+ "abusefilter-edit-builder-vars-accountname": "ھېسابات (قۇرغان ۋاقىتتىكى) ئاتى",
+ "abusefilter-edit-builder-vars-timestamp": "ئۆزگىرىشنىڭ Unix ۋاقىت تامغىسى",
+ "abusefilter-edit-builder-vars-action": "مەشغۇلات",
+ "abusefilter-edit-builder-vars-addedlines": "تەھرىرلەشتە قوشقان قۇرلار",
+ "abusefilter-edit-builder-vars-delta": "تەھرىرلىگەندىكى چوڭلۇق ئۆزگىرىشى",
+ "abusefilter-edit-builder-vars-diff": "تەھرىرلىگەندە پەيدا بولغان پەرق",
+ "abusefilter-edit-builder-vars-newsize": "يېڭى بەت چوڭلۇقى",
+ "abusefilter-edit-builder-vars-oldsize": "كونا بەت چوڭلۇقى",
+ "abusefilter-edit-builder-vars-removedlines": "تەھرىرلەشتە چىقىرىۋەتكەن قۇرلار",
+ "abusefilter-edit-builder-vars-summary": "تەھرىر ئۈزۈندىسى/سەۋەب",
+ "abusefilter-edit-builder-vars-article-id": "بەت نومۇرى",
+ "abusefilter-edit-builder-vars-article-ns": "بەت ئات بوشلۇقى",
+ "abusefilter-edit-builder-vars-article-text": "بەت ماۋزۇسى (ئات بوشلۇقىنى ئۆز ئىچىگە ئالمايدۇ)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "تولۇق بەت ماۋزۇسى",
+ "abusefilter-edit-builder-vars-article-views": "بەتنىڭ كۆرۈلگەن قېتىم سانى",
+ "abusefilter-edit-builder-vars-movedfrom-id": "يۆتكىگەن ئەسلى بەتنىڭ بەت نومۇرى",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "يۆتكىگەن ئەسلى بەتنىڭ ئات بوشلۇقى",
+ "abusefilter-edit-builder-vars-movedfrom-text": "يۆتكىگەن ئەسلى بەتنىڭ ماۋزۇسى",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "يۆتكىگەن ئەسلى بەتنىڭ تولۇق ماۋزۇسى",
+ "abusefilter-edit-builder-vars-movedto-id": "يۆتكىگەن نىشان بەتنىڭ بەت نومۇرى",
+ "abusefilter-edit-builder-vars-movedto-ns": "يۆتكىگەن نىشان بەتنىڭ ئات بوشلۇقى",
+ "abusefilter-edit-builder-vars-movedto-text": "يۆتكىگەن نىشان بەتنىڭ ماۋزۇسى",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "يۆتكىگەن نىشان بەتنىڭ تولۇق ماۋزۇسى",
+ "abusefilter-edit-builder-vars-user-editcount": "ئىشلەتكۈچىنىڭ تەھرىرلىگەن سانى",
+ "abusefilter-edit-builder-vars-user-age": "ئىشلەتكۈچى ھېساتىنىڭ ياشى",
+ "abusefilter-edit-builder-vars-user-name": "ئىشلەتكۈچى ھېساتىنىڭ ئاتى",
+ "abusefilter-edit-builder-vars-user-groups": "ئىشلەتكۈچى تەۋە گۇرۇپپا (يوشۇرۇن گۇرۇپپىنى ئۆز ئىچىگە ئالىدۇ)",
+ "abusefilter-edit-builder-vars-user-blocked": "ئىشلەتكۈچى توسۇلغانمۇ يوق",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "ئېلخەت ئادرېسنى جەزملەيدىغان ۋاقىت",
+ "abusefilter-edit-builder-vars-recent-contributors": "بەتنى تەھرىرلىگەن ئاخىرقى ئون ئىشلەتكۈچى",
+ "abusefilter-edit-builder-vars-all-links": "يېڭى تېكىستتىكى بارلىق سىرتقى ئۇلانمىلار",
+ "abusefilter-edit-builder-vars-added-links": "تەھرىرلىگەندە قوشقان بارلىق سىرتقى ئۇلانمىلار",
+ "abusefilter-edit-builder-vars-removed-links": "تەھرىرلىگەندە چىقىرىۋەتكەن بارلىق سىرتقى ئۇلانمىلار",
+ "abusefilter-edit-builder-vars-old-text": "تەھرىرلەشتىن ئىلگىرىكى كونا بەتنىڭ ۋىكى تېكىستى",
+ "abusefilter-edit-builder-vars-new-text": "تەھرىرلىگەندىن كېيىنكى يېڭى بەتنىڭ ۋىكى تېكىستى",
+ "abusefilter-edit-builder-vars-new-text-stripped": "ھەممە بەلگىلەرنى چىقىرىۋەتكەندىن كېيىنكى يېڭى بەتنىڭ تېكىستى",
+ "abusefilter-edit-builder-vars-new-html": "تەھرىرلىگەندىن كېيىنكى يېڭى بەت HTML ئەسلى كودى بويىچە تەھلىل قىلىندى",
+ "abusefilter-edit-builder-vars-restrictions-edit": "بەتنىڭ تەھرىرلەشتىن قوغداش دەرىجىسى",
+ "abusefilter-edit-builder-vars-restrictions-move": "بەتنىڭ يۆتكەشتىن قوغداش دەرىجىسى",
+ "abusefilter-edit-builder-vars-restrictions-create": "بۇ بەتنى قوغداش",
+ "abusefilter-edit-builder-vars-restrictions-upload": "يۈكلىگەن ھۆججەتنى قوغداش",
+ "abusefilter-edit-builder-vars-old-text-stripped": "ھەممە بەلگىلەرنى چىقىرىۋەتكەندىن كېيىنكى كونا بەتنىڭ تېكىستى",
+ "abusefilter-edit-builder-vars-old-links": "تەھرىرلەشتىن ئىلگىرىكى بەتتىكى ئۇلانمىلار",
+ "abusefilter-edit-builder-vars-old-html": "HTML سۈپىتىدە تەھلىل قىلىنغان تەھرىرلەشتىن ئىلگىرىكى ۋىكى تېكىست",
+ "abusefilter-edit-builder-vars-minor-edit": "تەھرىرلەشكە كىچىك ئۆزگەرتىش بەلگىسى قويۇلغانمۇ يوق",
+ "abusefilter-edit-builder-vars-file-sha1": "ھۆججەت مەزمۇنىنىڭ SHA1 مۇكەممەلىك قىممىتى",
+ "abusefilter-filter-log": "يېقىنقى سۈزگۈچلەر ئۆزگىرىشلىرى",
+ "abusefilter-history": "سۈزگۈچ #$1 نىڭ تۈزىتىش تارىخى",
+ "abusefilter-history-foruser": "$1 نىڭ ئۆزگەرتىشلىرى",
+ "abusefilter-history-hidden": "يوشۇرۇن",
+ "abusefilter-history-enabled": "قوزغىتىلغان",
+ "abusefilter-history-global": "ئومۇمىيەت",
+ "abusefilter-history-timestamp": "سائەت",
+ "abusefilter-history-user": "ئىشلەتكۈچى",
+ "abusefilter-history-public": "ئاممىۋى سۈزگۈچنىڭ چۈشەندۈرۈشى",
+ "abusefilter-history-flags": "تاللانمىلار",
+ "abusefilter-history-filter": "سۈزگۈچ قائىدىسى",
+ "abusefilter-history-comments": "ئىزاھات",
+ "abusefilter-history-actions": "مەشغۇلات",
+ "abusefilter-history-backedit": "سۈزگۈچ تەھرىرلىگۈچكە قايت",
+ "abusefilter-history-deleted": "ئۆچۈرۈلگەن",
+ "abusefilter-history-filterid": "سۈزگۈچ",
+ "abusefilter-history-select-legend": "ئىنچىكە ئىزدەش",
+ "abusefilter-history-select-user": "ئىشلەتكۈچى:",
+ "abusefilter-history-select-submit": "دەل",
+ "abusefilter-history-diff": "ئۆزگىرىشلەر",
+ "abusefilter-history-error-hidden": "سىز ئىلتىماس قىلغان سۈزگۈچ يوشۇرۇن، ئۇنىڭ تارىخىنى كۆرەلمەيسىز.",
+ "abusefilter-exception-unexpectedatend": "$1 ھەرپ تىزىقىدا ئويلاشمىغان \"$2\" كۆرۈلدى.",
+ "abusefilter-exception-expectednotfound": "$1 ھەرپتە كۈتۈلگەن $2 تېپىلمىدى (ئەمما $3 $4 تېپىلدى).",
+ "abusefilter-exception-unrecognisedkeyword": "$1 ھەرپتە تونۇيالمايدىغان $2 ھالقىلىق سۆز بار.",
+ "abusefilter-exception-unexpectedtoken": "$1 ھەرپتە كۈتۈلگەن ($2 تىپتىكى) \"$3\" بەلگىنى تاپالمىدى.",
+ "abusefilter-exception-unclosedstring": "$1 ھەرپتە باشلانغان ھەرپ تىزىقى يېپىلمىغان.",
+ "abusefilter-exception-invalidoperator": "$1 ھەرپتە \"$2\" ئىناۋەتسىز ئەمەل بەلگىسى بار.",
+ "abusefilter-exception-unrecognisedtoken": "$1 ھەرپتە تونۇيالمايدىغان $2 بەلگە بار.",
+ "abusefilter-exception-noparams": "$1 ھەرپ \"$2\" فونكسيە ئېھتىياجلىق پارامېتىرنى تەمىنلىمىگەن.",
+ "abusefilter-exception-dividebyzero": "$1 ھەرپ قانۇنسىز ھالدا $2 نى نۆلگە بۆلگەن.",
+ "abusefilter-exception-unrecognisedvar": "$1 ھەرپتە تونۇيالمايدىغان $2 ئۆزگەرگۈچى بار.",
+ "abusefilter-exception-notenoughargs": "$1 ھەرپتە چاقىرغان $2 فونكسيە يېتەرلىك پارامېتىرغا ئېرىشمىگەن.\n$3 {{PLURAL:$3|ئۆزگەرگۈچى}} مۆلچەرلەنگەن، ئېرىشكىنى $4",
+ "abusefilter-exception-regexfailure": "$1 ھەرپنىڭ \"$3\" مۇنتىزىم ئىپادىسىدە خاتالىق بار: \"$2\"",
+ "abusefilter-exception-overridebuiltin": "$1 ھەرپتىكى قانۇنسىز قاپلايدىغان ئىچكى ئۆزگەرگۈچى \"$2\".",
+ "abusefilter-exception-outofbounds": "$1 ھەرپتە مەۋجۇت بولمىغان تىزىم تۈرى $2 (تىزىم ئۇزۇنلۇقى = $3) نى ئىلتىماس قىلدى",
+ "abusefilter-exception-notlist": "$1 ھەرپتىكى سانلار قاتارى ئەمەسكە سانلار قاتارى تۈرىنى ئىلتىماس قىلدى.",
+ "abusefilter-action-tag": "خەتكۈش",
+ "abusefilter-action-throttle": "ئېقىم تەڭشەش",
+ "abusefilter-action-warn": "ئاگاھلاندۇرۇش",
+ "abusefilter-action-blockautopromote": "ئۆزلۈكىدىن ئىجازەتنى توس",
+ "abusefilter-action-block": "بۆلەك",
+ "abusefilter-action-degroup": "گۇرۇپپىدىن چىقىرىۋەت",
+ "abusefilter-action-rangeblock": "بۆلەك توسۇلغان",
+ "abusefilter-action-disallow": "يول قويما",
+ "abusefilter-revert-title": "سۈزگۈچ $1 نىڭ ھەممە ئۆزگەرتىشىنى ئەسلىگە قايتۇر",
+ "abusefilter-revert-intro": "بۇ جەدۋەل $1 سۈزگۈچنىڭ ھەممە مەشغۇلاتىنى ئەسلىگە قايتۇرۇشىڭىزغا يول قويىدۇ.\nبۇ قورالنى ئىشلىتىشتە ئېھتىيات قىلىڭ.",
+ "abusefilter-revert-preview-item": "$1: $2 بولسا $4 دا $3 نى ئېلىپ باردى.\nئەسلىگە قايتۇرىدىغان مەشغۇلاتلار: $5 ($6)",
+ "abusefilter-revert-search-legend": "ئەسلىگە قايتۇرىدىغان سۈزگۈچ مەشغۇلاتىنى تاللاڭ",
+ "abusefilter-revert-periodstart": "باشلىنىش ۋاقتى:",
+ "abusefilter-revert-periodend": "ئاخىرلىشىش ۋاقتى:",
+ "abusefilter-revert-search": "مەشغۇلاتنى تاللاڭ",
+ "abusefilter-revert-filter": "سۈزگۈچ:",
+ "abusefilter-revert-preview-intro": "تۆۋەندە بۇ قېتىمقى مەشغۇلات ئەسلىگە قايتۇرىدىغان سۈزگۈچنى قالايمىغان ئىشلىتىدىغان مەشغۇلاتلار كۆرسىتىلدى. تۆۋەندىكى ھەر قايسى تۈرلەرنى تەپسىلىي تەكشۈرۈپ، «جەزملە» توپچىنى چېكىپ تاللىشىڭىزنى جەزملەڭ.",
+ "abusefilter-revert-confirm": "جەزملە",
+ "abusefilter-revert-success": "سىز [[Special:AbuseFilter/$1|سۈزگۈچ $2]] ئېلىپ بارغان ھەممە مەشغۇلاتنى ئەسلىگە قايتۇردىڭىز.",
+ "abusefilter-revert-reason": "سۈزگۈچ $1 نىڭ ئېلىپ بارغان ھەممە مەشغۇلاتىنى ئۆزلۈكىدىن ئەسلىگە قايتۇردى،\nسەۋەبى تۆۋەندىكىچە: $2",
+ "abusefilter-revert-reasonfield": "سەۋەب:",
+ "abusefilter-test": "ئىلگىرىكى تەھرىرلەش ئارقىلىق سۈزگۈچ سىنايدۇ",
+ "abusefilter-test-intro": "بۇ بەت سىزنىڭ تۆۋەندىكى قۇتىغا كىرگۈزۈلگەن سۈزگۈچ يېقىنقى $1 {{PLURAL:$1|ئۆزگەرتىش}}نىڭ تەسىرىنى تەكشۈرۈشىڭىزگە يول قويىدۇ. ئەگەر مەۋجۇت بولغان باشقا سۈزگۈچنى يۈكلەشتە، تۆۋەندىكى قۇتىنىڭ ئاستىدىكى تېكىست قۇتىسىغا سۈزگۈچنىڭ تەرتىپ نومۇرىنى كىرگۈزۈپ، \"يۈكلە\" توپچىنى چېكىڭ.",
+ "abusefilter-test-legend": "سۈزگۈچ سىناق",
+ "abusefilter-test-load-filter": "يۈكلىگەن سۈزگۈچ نومۇرى:",
+ "abusefilter-test-submit": "سىنا",
+ "abusefilter-test-load": "يۈكلە",
+ "abusefilter-test-user": "ئىشلەتكۈچى ئۆزگەرتكەن:",
+ "abusefilter-test-period-start": "كىرگۈزگەندىن كېيىنكى ئۆزگەرتىش:",
+ "abusefilter-test-period-end": "كىرگۈزگەندىن ئىلگىرىكى ئۆزگەرتىش:",
+ "abusefilter-test-page": "بەتنىڭ ئۆزگىرىشى:",
+ "abusefilter-test-shownegative": "سۈزگۈچ بىلەن ماسلاشمىغان ئۆزگەرتىشنى كۆرسەت",
+ "abusefilter-test-syntaxerr": "سىز كىرگۈزگەن سۈزگۈچنىڭ تىلقۇرما خاتالىقى بار.\n«تىلقۇرما تەكشۈر» توپچىنى چېكىپ تىلقۇرما خاتالىقىنى تەكشۈرۈپ تەپسىلىي چۈشەندۈرۈشكە ئېرىشەلەيسىز.",
+ "abusefilter-changeslist-examine": "تەكشۈرۈش",
+ "abusefilter-examine": "ئايرىم ئۆزگىرىشنى تەكشۈر",
+ "abusefilter-examine-intro": "بۇ بەت سىزنىڭ سۈيئىستىمال سۈزگۈچ ئارقىلىق مەلۇم قېتىملىق ئايرىم ئۆزگەرتىشكە ئاساسەن پەيدا بولغان ئۆزگەرگۈچى مىقدارنى تەكشۈرۈشىڭىزگە يول قويىدۇ ھەمدە سۈزگۈچ ئارقىلىق سىنايدۇ.",
+ "abusefilter-examine-legend": "ئۆزگەرتىشلەرنى تاللاڭ:",
+ "abusefilter-examine-diff": "پەرقلىق URL:",
+ "abusefilter-examine-user": "ئىشلەتكۈچى:",
+ "abusefilter-examine-title": "بەت ماۋزۇسى:",
+ "abusefilter-examine-submit": "ئىزدە",
+ "abusefilter-examine-vars": "بۇ قېتىملىق ئۆزگەرتىشكە ئاساسەن ھاسىل قىلىنغان ئۆزگەرگۈچى مىقدار",
+ "abusefilter-examine-test": "سۈزگۈچ ئىشلىتىپ بۇ قېتىملىق ئۆزگەرتىشنى سىنا",
+ "abusefilter-examine-test-button": "سۈزگۈچ سىنا",
+ "abusefilter-examine-match": "سۈزگۈچ بۇ قېتىملىق ئۆزگىرىشكە ماس كېلىدۇ.",
+ "abusefilter-examine-nomatch": "سۈزگۈچ بۇ قېتىملىق ئۆزگەرتىشكە ماس كەلمەيدۇ.",
+ "abusefilter-examine-syntaxerror": "سۈزگۈچتە ئىناۋەتسىز تىلقۇرما خاتالىقى بار.",
+ "abusefilter-examine-notfound": "سىز ئىلتىماس قىلغان ئۆزگىرىشنى تاپالمىدى.",
+ "abusefilter-examine-incompatible": "سۈيئىستىمال سۈزگۈچ ئىلتىماس قىلغان ئۆزگەرتىشىڭىزنى قوللىمايدۇ",
+ "abusefilter-examine-noresults": "سىز تەمىنلىگەن ئىزدەش پارامېتىرى ھېچقانداق نەتىجىنى تاپالمىدى.",
+ "abusefilter-topnav": "'''سۈيئىستىمال سۈزگۈچ يولباشچى'''",
+ "abusefilter-topnav-home": "باش بەت",
+ "abusefilter-topnav-test": "توپ سىناش",
+ "abusefilter-topnav-examine": "ئىلگىرىكى تەھرىرلەرنى تەكشۈر",
+ "abusefilter-topnav-log": "سۈيىئىستىمال خاتىرىسى",
+ "abusefilter-topnav-tools": "سازلاش قورالى",
+ "abusefilter-topnav-import": "سۈزگۈچ ئەكىر",
+ "abusefilter-log-name": "سۈيىئىستىمال سۈزگۈچ خاتىرىسى",
+ "abusefilter-log-header": "بۇ خاتىرە سۈزگۈچ ئېلىپ بارغان ئۆزگەرتىشنىڭ ئۈزۈندىسىنى كۆرسىتىدۇ. خاتىرە تەپسىلاتىنى [[Special:AbuseFilter/history|بۇ تىزىم]]دىن سۈزگۈچنىڭ يېقىنقى ئۆزگەرتىشىدىن كۆرۈڭ.",
+ "abusefilter-log-noresults": "نەتىجە يوق",
+ "abusefilter-diff-title": "نەشرلىرى ئارىسىدىكى پەرق",
+ "abusefilter-diff-item": "تۈر",
+ "abusefilter-diff-version": "$1 {{GENDER:$3|تەرىپىدىن}} $2 ئۆزگەرتكەن تۈزىتىلگەن نەشرى",
+ "abusefilter-diff-info": "ئاساسىي ئۇچۇر",
+ "abusefilter-diff-pattern": "سۈزگۈچ ھالىتى",
+ "abusefilter-diff-invalid": "ئىلتىماس قىلغان نەشرىگە ئېرىشەلمەيدۇ",
+ "abusefilter-diff-backhistory": "سۈزگۈچ تارىخ بېتىگە قايت",
+ "abusefilter-diff-prev": "ئىلگىركى ئۆزگەرتىشلەر",
+ "abusefilter-diff-next": "يىقىنقى ئۆزگەرتىشلەر",
+ "abusefilter-import-intro": "سىز بۇ ئارايۈز ئارقىلىق باشقا ۋىكىدىكى سۈزگۈچنى ئەكىرەلەيسىز. مەنبەدىن سۈزگۈچ تەھرىر ئارايۈزىنى چېكىپ \"{{int:abusefilter-edit-tools}}\" نىڭ ئاستىدىكى \"{{int:abusefilter-edit-export}}\"نى چېكىڭ. ئارقىدىن كۆرۈنگەن تېكىست قۇتىسىنىڭ مەزمۇنىنى كۆچۈرۈپ، ئاستىدىكى تېكىست قۇتىسىغا چاپلاڭ ھەمدە \"{{int:abusefilter-import-submit}}\"نى چېكىڭ.",
+ "abusefilter-import-submit": "سانلىق مەلۇمات كىرگۈزۈش",
+ "abusefilter-group-default": "كۆڭۈلدىكى",
+ "apihelp-query+abuselog-param-wiki": "ۋىكىدىن كەلگەن كۆرسىتىش ئۇچۇرى."
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/ug-latn.json b/www/wiki/extensions/AbuseFilter/i18n/ug-latn.json
new file mode 100644
index 00000000..e967a0b0
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/ug-latn.json
@@ -0,0 +1,4 @@
+{
+ "@metadata": [],
+ "abusefilter-examine-submit": "Izdash"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/uk.json b/www/wiki/extensions/AbuseFilter/i18n/uk.json
new file mode 100644
index 00000000..26153ac8
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/uk.json
@@ -0,0 +1,480 @@
+{
+ "@metadata": {
+ "authors": [
+ "AS",
+ "Ahonc",
+ "Alex Khimich",
+ "Andriykopanytsia",
+ "Base",
+ "JenVan",
+ "Microcell",
+ "NickK",
+ "Olvin",
+ "Prima klasy4na",
+ "SamOdin",
+ "Ата",
+ "Тест",
+ "Mykola Swarnyk",
+ "Olion",
+ "DonDrakon",
+ "Piramidion",
+ "Matma Rex",
+ "Максим Підліснюк",
+ "Avatar6"
+ ]
+ },
+ "abusefilter-desc": "Застосовує до редагувань автоматичні евристики.",
+ "abusefilter": "Налаштування фільтра редагувань",
+ "abuselog": "Журнал зловживань",
+ "abusefilter-intro": "Ласкаво просимо на сторінку керування фільтром редагувань.\nФільтр редагувань — це автоматизований механізм застосування автоматичних евристик до дій користувачів.\nТут наведений список усіх установлених фільтрів, надається можливість їх зміни.",
+ "abusefilter-mustbeeditor": "З причин безпеки, тільки користувачі з правом зміни фільтрів редагувань можуть використовувати цей інтерфейс.",
+ "abusefilter-warning": "'''Увага:''' ця дія була автоматично визначена як шкідлива.\nНеконструктивні дії будуть швидко скасовані,\nгрубі або неодноразові неконструктивні редагування призведуть до блокування вашого облікового запису або IP-адреси.\nЯкщо Ви вважаєте, що це редагування конструктивне, то Ви можете ще раз натиснути «Зберегти сторінку», щоб підтвердити редагування.\nКороткий опис зловживання, на яке схожа Ваша дія: $1",
+ "abusefilter-disallowed": "Ця дія автоматично визначена як шкідлива, і тому заборонена.\nЯкщо Ви вважаєте, що вона конструктивна, будь ласка, зверніться до адміністратора і розкажіть йому, що Ви хотіли зробити.\nКороткий опис правила, яке порушує Ваша дія: $1",
+ "abusefilter-blocked-display": "Ця дія була автоматично визначена як шкідлива,\nі тому її виконання заборонене.\nОкрім того, для захисту проекту {{SITENAME}} ваш обліковий запис і пов'язані з ним IP-адреси були заблоковані.\nЯкщо ви вважаєте це помилковим, то зв'яжіться з адміністратором.\nКороткий опис зловживання, яке пов'язане з вашою дією: $1",
+ "abusefilter-degrouped": "Ця дія була автоматично визначена як шкідлива.\nТаким чином, дія була скасована, ваш обліковий запис вважається скомпрометованим і в нього відібрано всі права.\nЯкщо ви вважаєте це помилковим, будь ласка, зв'яжіться з бюрократом і поясніть йому ваші дії, тоді ваші права будуть відновлені.\nКороткий опис зловживання, яке пов'язане з вашою дією: $1",
+ "abusefilter-autopromote-blocked": "Ця дія автоматично визначена як шкідлива, і тому заборонена.\nОкрім того, як захід безпеки, у вашого облікового запису тимчасово відібрано деякі привілеї, які звичайно надаються зареєстрованим обліковим записам.\nКороткий опис зловживання, яке пов'язане з вашою дією: $1",
+ "abusefilter-blocker": "Фільтр редагувань",
+ "abusefilter-blockreason": "Автоматично заблокований фільтром редагувань. Опис правила: $1",
+ "abusefilter-degroupreason": "Права автоматично відібрані фільтром редагувань. Опис правила: $1",
+ "abusefilter-accountreserved": "Цей обліковий запис є зарезервованим для використання фільтром редагувань.",
+ "right-abusefilter-modify": "налаштовування фільтрів зловживань",
+ "right-abusefilter-view": "перегляд фільтрів редагувань",
+ "right-abusefilter-log": "перегляд журналу зловживань",
+ "right-abusefilter-log-detail": "перегляд детальних записів журналу зловживань",
+ "right-abusefilter-private": "перегляд приватних даних у журналі зловживань",
+ "right-abusefilter-modify-restricted": "зміна фільтрів з обмежуючими діями",
+ "right-abusefilter-revert": "відкіт змін, зроблених фільтром редагувань",
+ "right-abusefilter-view-private": "перегляд приватних фільтрів зловживань",
+ "right-abusefilter-log-private": "перегляд записів журналу зловживань, позначених як приватні",
+ "right-abusefilter-hide-log": "приховування записів у журналі зловживань",
+ "right-abusefilter-hidden-log": "перегляд прихованих записів журналу зловживань",
+ "right-abusefilter-modify-global": "створення або зміна глобальних фільтрів зловживань",
+ "action-abusefilter-modify": "змінювати фільтри редагувань",
+ "action-abusefilter-view": "переглядати фільтри редагувань",
+ "action-abusefilter-log": "переглядати журнал зловживань",
+ "action-abusefilter-log-detail": "переглядати деталі журналу зловживань",
+ "action-abusefilter-private": "переглядати особисті дані в журналі зловживань",
+ "action-abusefilter-modify-restricted": "змінювати фільтри редагувань із заборонювальними діями",
+ "action-abusefilter-revert": "скасовувати всі зміни зазначеного фільтра редагувань",
+ "action-abusefilter-view-private": "перегляд приватних фільтрів зловживань",
+ "action-abusefilter-log-private": "перегляд записів журналу тих фільтрів зловживань, які позначені як приватні",
+ "abusefilter-log": "Журнал фільтра редагувань",
+ "abusefilter-log-summary": "У цьому журналі показано список усіх дій, перехоплених фільтрами.",
+ "abusefilter-log-search": "Пошук в журналі зловживань",
+ "abusefilter-log-search-user": "Користувач:",
+ "abusefilter-log-search-filter": "Ідентифікатори фільтру (відокремлені вертикальними рисками):",
+ "abusefilter-log-search-title": "Заголовок:",
+ "abusefilter-log-search-wiki": "Вікі:",
+ "abusefilter-log-search-entries-label": "Видимість:",
+ "abusefilter-log-search-entries-all": "Усі записи",
+ "abusefilter-log-search-entries-hidden": "Лише приховані записи",
+ "abusefilter-log-search-entries-visible": "Лише видимі записи",
+ "abusefilter-log-search-submit": "Знайти",
+ "abusefilter-log-entry": "$1: $2 {{GENDER:$8|запустив|запустила}} фільтр редагувань, виконуючи «$3» на сторінці $4.\nУжиті заходи: $5.\nОпис фільтру: $6",
+ "abusefilter-log-entry-withdiff": "$1: $2 {{GENDER:$8|запустив|запустила}} фільтр редагувань, виконуючи «$3» на сторінці $4.\nУжиті заходи: $5.\nОпис фільтру: $6 ($7)",
+ "abusefilter-log-detailedentry-meta": "$1: $2 запустив $3, {{GENDER:$9|виконуючи}} «$4» на сторінці «$5».\nВжиті заходи: $6.\nОпис фільтру: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "глобальний фільтр $1",
+ "abusefilter-log-detailedentry-local": "фільтр $1",
+ "abusefilter-log-detailslink": "деталі",
+ "abusefilter-log-diff": "різн.",
+ "abusefilter-log-hidelink": "налаштувати видимість",
+ "abusefilter-log-details-legend": "Деталі журнального запису $1",
+ "abusefilter-log-details-var": "Змінна",
+ "abusefilter-log-details-val": "Значення",
+ "abusefilter-log-details-vars": "Параметри дії",
+ "abusefilter-log-details-private": "Приватні дані",
+ "abusefilter-log-details-ip": "Вихідна IP-адреса",
+ "abusefilter-log-noactions": "нема",
+ "abusefilter-log-details-diff": "Зміни, зроблені редагуванням",
+ "abusefilter-log-linkoncontribs": "журнал зловживань",
+ "abusefilter-log-linkoncontribs-text": "Журнал зловживань {{GENDER:$1|цього користувача|цієї користувачки}}",
+ "abusefilter-log-hidden": "(запис приховано)",
+ "abusefilter-log-hidden-implicit": "(приховано, бо версію було вилучено)",
+ "abusefilter-log-cannot-see-details": "Ви не маєте дозволу на перегляд відомостей про цей запис.",
+ "abusefilter-log-nonexistent": "Запис з вказаним ідентифікатором не існує.",
+ "abusefilter-log-details-hidden": "Ви не можете проглянути докладну інформацію про цей фільтр, оскільки вона прихована від звичайних користувачів.",
+ "abusefilter-log-private-not-included": "Один або декілька ідентифікаторів фільтра, заданих вами, є приватними. Оскільки ви не можете переглядати відомості приватних фільтрів, ці фільтри не будуть використані при пошуку.",
+ "abusefilter-log-hide-legend": "Сховати запис у журналі",
+ "abusefilter-log-hide-id": "ID записи журналу:",
+ "abusefilter-log-hide-hidden": "Приховати цей запис від інших користувачів.",
+ "abusefilter-log-hide-reason": "Причина:",
+ "abusefilter-log-hide-forbidden": "У вас немає дозволу, щоб приховувати\nзаписи журналу зловживань.",
+ "abusefilter-logentry-suppress": "сховати [[$1]]",
+ "abusefilter-logentry-unsuppress": "показати [[$1]]",
+ "logentry-abusefilter-hit": "$1 {{#GENDER:$2|викликав|викликала}} спрацьовування $4, виконуючи дію «$5» на $3. Вжиті заходи: $6 ($7)",
+ "abusefilter-management": "Управління фільтрами редагувань",
+ "abusefilter-list": "Усі фільтри",
+ "abusefilter-list-id": "ІД фільтра",
+ "abusefilter-list-status": "Стан",
+ "abusefilter-list-public": "Публічний опис",
+ "abusefilter-list-consequences": "Наслідки",
+ "abusefilter-list-visibility": "Видимість",
+ "abusefilter-list-hitcount": "Спрацьовувань",
+ "abusefilter-list-edit": "Редагувати",
+ "abusefilter-list-details": "Деталі",
+ "abusefilter-list-limit": "Кількість на сторінці:",
+ "abusefilter-list-lastmodified": "Останні зміни",
+ "abusefilter-list-group": "Група фільтру",
+ "abusefilter-hidden": "Прихований",
+ "abusefilter-unhidden": "Публічний",
+ "abusefilter-enabled": "Увімкнений",
+ "abusefilter-deleted": "Вилучений",
+ "abusefilter-disabled": "Вимкнений",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|спрацьовування|спрацьовування|спрацьовувань}}",
+ "abusefilter-new": "Створити фільтр",
+ "abusefilter-return": "Повернутися до керування фільтрами",
+ "abusefilter-status-global": "Глобальний",
+ "abusefilter-list-options": "Налаштування",
+ "abusefilter-list-options-deleted": "Вилучені фільтри:",
+ "abusefilter-list-options-deleted-only": "Показати лише вилучені фільтри",
+ "abusefilter-list-options-deleted-hide": "Приховати вилучені фільтри",
+ "abusefilter-list-options-deleted-show": "Включити вилучені фільтри",
+ "abusefilter-list-options-scope": "Показати фільтри:",
+ "abusefilter-list-options-scope-local": "Тільки локальні правила",
+ "abusefilter-list-options-scope-global": "Тільки глобальні правила",
+ "abusefilter-list-options-scope-all": "Локальні і глобальні правила",
+ "abusefilter-list-options-disabled": "Відключені фільтри:",
+ "abusefilter-list-options-hidedisabled": "Приховати відключені фільтри:",
+ "abusefilter-list-options-submit": "Оновити",
+ "abusefilter-tools-text": "Тут є деякі засоби, які можуть пригодитися у формулюванні та налагодженні фільтрів редагувань.",
+ "abusefilter-tools-expr": "Випробувач виразів",
+ "abusefilter-tools-submitexpr": "Випробувати",
+ "abusefilter-tools-reautoconfirm": "Відновити статус автопідтвердження",
+ "abusefilter-tools-reautoconfirm-user": "Користувач:",
+ "abusefilter-tools-reautoconfirm-submit": "Повторне автопідтвердження",
+ "abusefilter-reautoconfirm-none": "У {{GENDER:$1|цього користувача|цієї користувачки}} не відключений статус автопідтвердження.",
+ "abusefilter-reautoconfirm-notallowed": "Вам не дозволено відновлювати статус автопідтвердження.",
+ "abusefilter-reautoconfirm-done": "Відновлений статус автопідтвердження облікового запису",
+ "abusefilter-status": "Серед $1 {{PLURAL:$1|1=дії|дій}}, $2 ($3%) {{PLURAL:$2|1=досягла|досягли}} межі $4. $5 ($6%) {{PLURAL:$5|1=активізувала|активізували}} один з увімкнених фільтрів.",
+ "abusefilter-edit": "Зміна фільтру редагувань",
+ "abusefilter-edit-subtitle": "Редагування фільтру $1",
+ "abusefilter-edit-subtitle-new": "Створення фільтру",
+ "abusefilter-edit-oldwarning": "<strong>Ви редагуєте стару версію цього фільтра. Статистика наведена для найновішої версії фільтра. Якщо ви збережете свої зміни, ви перезапишете усі редагування починаючи з версії, яку ви редагуєте.</strong> &bull; [[Special:AbuseFilter/history/$2|Повернутися до історії цього фільтру]]",
+ "abusefilter-edit-status-label": "Статистика:",
+ "abusefilter-edit-status": "Серед $1 {{PLURAL:$1|останньої дії|останніх дій}} цей фільтр знайшов {{PLURAL:$2|$2 збіг|$2 збіги|$2 збігів}} ($3%).",
+ "abusefilter-edit-status-profile": "Серед $1 {{PLURAL:$1|останньої дії|останніх дій|останніх дій}} цей фільтр знайшов {{PLURAL:$2|$2 збіг|$2 збіги|$2 збігів}} ($3%).\nСередня тривалість його роботи — $4 мс, він використовує $5 {{PLURAL:$5|умову|умови|умов}} з ліміту умов.",
+ "abusefilter-edit-throttled-warning": "'''Попередження:''' Цей фільтр було автоматично позначено як шкідливий. У рамках заходів безпеки, подані в дужках дії не виконуватимуться ($1). Будь ласка, перевірте й [[mw:Extension:AbuseFilter/Conditions|оптимізуйте]] свої умови, щоб уникнути цього обмеження",
+ "abusefilter-edit-new": "Новий фільтр",
+ "abusefilter-edit-save": "Зберегти фільтр",
+ "abusefilter-edit-id": "ІД фільтра:",
+ "abusefilter-edit-description": "Опис:\n:''(публічний) ''",
+ "abusefilter-edit-field-description": "опис",
+ "abusefilter-edit-group": "Група фільтру:",
+ "abusefilter-edit-flags": "Прапорці:",
+ "abusefilter-edit-enabled": "Увімкнути цей фільтр",
+ "abusefilter-edit-deleted": "Позначити як вилучений",
+ "abusefilter-edit-hidden": "Приховати деталі цього фільтру від загальнодоступного огляду",
+ "abusefilter-edit-global": "Глобальний фільтр",
+ "abusefilter-edit-rules": "Умови:",
+ "abusefilter-edit-field-conditions": "умови",
+ "abusefilter-edit-notes": "Примітки:",
+ "abusefilter-edit-lastmod": "Остання зміна фільтру:",
+ "abusefilter-edit-lastmod-text": "$1 користувачем $2",
+ "abusefilter-edit-hitcount": "Спрацьовувань фільтру:",
+ "abusefilter-edit-consequences": "Заходи, що будуть вжиті при спрацьовуванні",
+ "abusefilter-edit-action-warn": "Перед уживанням заходів видати попередження",
+ "abusefilter-edit-action-disallow": "Заборонити користувачеві виконати дію",
+ "abusefilter-edit-action-blockautopromote": "Зняти з користувача статус автопідтвердження",
+ "abusefilter-edit-action-degroup": "Виключити користувача з усіх привілейованих груп",
+ "abusefilter-edit-action-block": "Заблокувати користувача та/або IP-адресу",
+ "abusefilter-edit-action-throttle": "Уживати заходи тільки тільки тоді, коли користувач переходить межу",
+ "abusefilter-edit-action-rangeblock": "Блокувати діапазон /16, з якого працює користувач.",
+ "abusefilter-edit-action-tag": "Позначити зміну для подальшої перевірки",
+ "abusefilter-edit-throttle-count": "Кількість дозволених дій:",
+ "abusefilter-edit-throttle-period": "Відтинок часу:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|секунда|секунди|секунд}}",
+ "abusefilter-edit-throttle-groups": "Звуження за групами:\n:''(один на рядок, з'єднання комами) ''",
+ "abusefilter-edit-warn-message": "Системне повідомлення для попереджень:",
+ "abusefilter-edit-warn-other": "Інше повідомлення",
+ "abusefilter-edit-warn-other-label": "Назва сторінки іншого повідомлення:\n:''(без префікса MediaWiki)''",
+ "abusefilter-edit-warn-actions": "Дії:",
+ "abusefilter-edit-warn-preview": "Попередній перегляд вибраного повідомлення",
+ "abusefilter-edit-warn-edit": "Створити/редагувати вибране повідомлення",
+ "abusefilter-edit-tag-tag": "Присвоювані [[Special:Tags|мітки]] (по одній у рядку):",
+ "abusefilter-edit-denied": "Ви не можете проглянути докладну інформацію про цей фільтр, бо вона прихована від публічного перегляду.",
+ "abusefilter-edit-main": "Параметри фільтра",
+ "abusefilter-edit-done-subtitle": "Фільтр змінено",
+ "abusefilter-edit-done": "[[Special:AbuseFilter/history/$1/diff/prev/$2|Ваші зміни]] на [[Special:AbuseFilter/$1|фільтр $3]] вже збережено.",
+ "abusefilter-edit-badsyntax": "У вказному вами фільтрі є синтаксична помилка.\nСинтаксичний аналізатор видав таке повідомлення: <pre>$1</pre>",
+ "abusefilter-edit-missingfields": " Наступні поля повинні бути заповнені обов'язково: $1",
+ "abusefilter-edit-restricted": "Ви не можете змінити цей фільтр, оскільки він містить одну або декілька обмежуючих дій. Будь ласка, попросіть користувача з відповідними правами змінити фільтр для вас.",
+ "abusefilter-edit-viewhistory": "Показати історію цього фільтра",
+ "abusefilter-edit-history": "Історія:",
+ "abusefilter-edit-check": "Перевірити синтаксис",
+ "abusefilter-edit-badfilter": "Вказаного вами фільтру не існує",
+ "abusefilter-edit-revert": "Відкотити дії, виконані фільтром",
+ "abusefilter-edit-tools": "Засоби:",
+ "abusefilter-edit-test-link": "Перевірити цей фільтр на нових редагуваннях",
+ "abusefilter-edit-export": "Експортувати цей фільтр до іншої вікі",
+ "abusefilter-edit-syntaxok": "Не знайдено синтаксичних помилок",
+ "abusefilter-edit-syntaxerr": "Знайдено синтаксичну помилку: $1",
+ "abusefilter-edit-bad-tags": "Принаймні одна з вказаних Вами міток неправильна.\nМітка має бути короткою і не має містити спецсимволів, а також мітки не повинні бути закріпленими за іншими програмами. Спробуйте обрати якусь іншу назву для мітки",
+ "abusefilter-edit-notallowed": "У вас нема права створювати чи змінювати фільтри редагувань",
+ "abusefilter-edit-notallowed-global": "Вам не дозволено створювати чи редагувати глобальні фільтри зловживань",
+ "abusefilter-edit-notallowed-global-custom-msg": "Користувацькі повідомлення попереджень не підтримуються для глобальних фільтрів",
+ "abusefilter-edit-builder-select": "Виберіть пункт, щоб додати на місце курсору",
+ "abusefilter-edit-builder-group-op-arithmetic": "Арифметичні оператори",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Додавання (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Віднімання (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Множення (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Ділення (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Модуль (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Степінь (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Оператори порівняння",
+ "abusefilter-edit-builder-op-comparison-equal": "Рівні (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Не рівні (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "Менше (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Більше (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Менше або рівне (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Більше або рівне (>=)",
+ "abusefilter-edit-builder-group-op-bool": "Логічні оператори",
+ "abusefilter-edit-builder-op-bool-not": "Не (!)",
+ "abusefilter-edit-builder-op-bool-and": "І (&)",
+ "abusefilter-edit-builder-op-bool-or": "Або (|)",
+ "abusefilter-edit-builder-op-bool-xor": "Виключне АБО (^)",
+ "abusefilter-edit-builder-group-misc": "Різні",
+ "abusefilter-edit-builder-misc-in": "Міститься в рядку (in)",
+ "abusefilter-edit-builder-misc-like": "Відповідає шаблону (like)",
+ "abusefilter-edit-builder-misc-rlike": "Підпадає під регулярний вираз (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "Відповідність регулярному виразу, без урахування регістра (irlike)",
+ "abusefilter-edit-builder-misc-contains": "Лівий рядок містить правий (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "Текст (\"\")",
+ "abusefilter-edit-builder-misc-tern": "Тернарний оператор",
+ "abusefilter-edit-builder-misc-cond": "Умова (if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "Функції",
+ "abusefilter-edit-builder-funcs-length": "Довжина рядка (length)",
+ "abusefilter-edit-builder-funcs-lcase": "У нижній регістр (lcase)",
+ "abusefilter-edit-builder-funcs-ucase": "У верхній регістр (ucase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "Нормалізація неоднозначних символів (ccnorm)",
+ "abusefilter-edit-builder-funcs-ccnorm-contains-any": "Нормалізувати й здійснити пошук декількох підрядків у рядку (ccnorm_contains_any)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "Вилучення подвійних символів (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "Відношення к-сті спеціальних символів до загальної к-сті символів (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "Нормалізація (norm)",
+ "abusefilter-edit-builder-funcs-count": "Скільки разів підрядок X зустрічається в рядку Y (count)",
+ "abusefilter-edit-builder-funcs-rcount": "Скільки разів регулярний вираз X зустрічається в рядку Y (rcount)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "Вилучити пробіли (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "Видалити спеціальні символи (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "Присутність IP-адреси в діапазоні (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "Рядок містить будь-який з таких рядків (contains_any)",
+ "abusefilter-edit-builder-funcs-substr": "Підрядок (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "Положення підрядка в рядку (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "Заміна підрядка в рядку (str_replace)",
+ "abusefilter-edit-builder-funcs-rescape": "Екранувати рядок для використання в регулярному вислові (rescape)",
+ "abusefilter-edit-builder-funcs-set_var": "Встановити змінну (set_var)",
+ "abusefilter-edit-builder-group-vars": "Змінні",
+ "abusefilter-edit-builder-vars-accountname": "Ім'я облікового запису (при створенні облікового запису)",
+ "abusefilter-edit-builder-vars-timestamp": "Unix-час редагування",
+ "abusefilter-edit-builder-vars-action": "Дія",
+ "abusefilter-edit-builder-vars-addedlines": "Додані рядки",
+ "abusefilter-edit-builder-vars-delta": "Зміна розміру після редагування",
+ "abusefilter-edit-builder-vars-diff": "Уніфікована різниця змін, зроблених редагуванням",
+ "abusefilter-edit-builder-vars-newsize": "Новий розмір сторінки",
+ "abusefilter-edit-builder-vars-oldsize": "Старий розмір сторінки",
+ "abusefilter-edit-builder-vars-old-content-model": "Стара модель вмісту",
+ "abusefilter-edit-builder-vars-new-content-model": "Нова модель вмісту",
+ "abusefilter-edit-builder-vars-removedlines": "Видалені рядки",
+ "abusefilter-edit-builder-vars-summary": "Опис/причина редагування",
+ "abusefilter-edit-builder-vars-article-id": "Ідентифікатор сторінки",
+ "abusefilter-edit-builder-vars-article-ns": "Простір назв сторінки",
+ "abusefilter-edit-builder-vars-article-text": "Назва сторінки (без простору назв)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Повна назва сторінки",
+ "abusefilter-edit-builder-vars-article-views": "Переглядів сторінки",
+ "abusefilter-edit-builder-vars-movedfrom-id": "Ідентифікатор сторінки, що перейменовується",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "Простір назв сторінки, що перейменовується",
+ "abusefilter-edit-builder-vars-movedfrom-text": "Назва сторінки, що перейменовується",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "Повна назва сторінки, що перейменовується",
+ "abusefilter-edit-builder-vars-movedto-id": "Ідентифікатор цільової сторінки перейменування",
+ "abusefilter-edit-builder-vars-movedto-ns": "Простір назв цільової сторінки перейменування",
+ "abusefilter-edit-builder-vars-movedto-text": "Назва цільової сторінки перейменування",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "Повна назва цільової сторінки перейменування",
+ "abusefilter-edit-builder-vars-user-editcount": "Число редагувань користувача",
+ "abusefilter-edit-builder-vars-user-age": "Вік облікового запису",
+ "abusefilter-edit-builder-vars-user-name": "Ім'я облікового запису",
+ "abusefilter-edit-builder-vars-user-groups": "Групи (включаючи неявні) в яких перебуває користувач",
+ "abusefilter-edit-builder-vars-user-rights": "Права, які є у користувача",
+ "abusefilter-edit-builder-vars-user-blocked": "Якщо користувача заблоковано",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "Час підтвердження адреси ел. пошти",
+ "abusefilter-edit-builder-vars-recent-contributors": "Останні десять редакторів сторінки",
+ "abusefilter-edit-builder-vars-first-contributor": "Користувач, що створив цю сторінку",
+ "abusefilter-edit-builder-vars-all-links": "Усі зовнішні посилання в новому тексті",
+ "abusefilter-edit-builder-vars-added-links": "Усі зовнішні посилання, додані редагуванням",
+ "abusefilter-edit-builder-vars-removed-links": "Усі зовнішні посилання, вилучені редагуванням",
+ "abusefilter-edit-builder-vars-old-text": "Старий вікітекст, перед редагуванням сторінки",
+ "abusefilter-edit-builder-vars-new-text": "Новий вікітекст, після редагування сторінки",
+ "abusefilter-edit-builder-vars-new-pst": "Нова сторінка вікітексту з попередньо збереженим перетворенням",
+ "abusefilter-edit-builder-vars-diff-pst": "Уніфікований diff змін у процесі редагування, перетворених перед збереженням",
+ "abusefilter-edit-builder-vars-addedlines-pst": "Рядки, додані при редагуванні, перетворені перед збереженням",
+ "abusefilter-edit-builder-vars-new-text-stripped": "Новий текст сторінки, очищений від розмітки",
+ "abusefilter-edit-builder-vars-new-html": "Проаналізований HTML-код нової версії",
+ "abusefilter-edit-builder-vars-restrictions-edit": "Рівень захисту сторінки від редагувань",
+ "abusefilter-edit-builder-vars-restrictions-move": "Рівень захисту сторінки від перейменувань",
+ "abusefilter-edit-builder-vars-restrictions-create": "Захист сторінки від створення",
+ "abusefilter-edit-builder-vars-restrictions-upload": "Захист від завантаження файлу",
+ "abusefilter-edit-builder-vars-old-text-stripped": "Текст старої сторінки, позбавлений розмітки",
+ "abusefilter-edit-builder-vars-old-links": "Посилання на сторінці перед редагуванням",
+ "abusefilter-edit-builder-vars-old-html": "Вікітекст старої сторінки, перетворений в HTML",
+ "abusefilter-edit-builder-vars-minor-edit": "Чи було редагування позначене як незначне",
+ "abusefilter-edit-builder-vars-file-sha1": "SHA1-хеш вмісту файлу",
+ "abusefilter-edit-builder-vars-file-size": "Розмір файлу у байтах",
+ "abusefilter-edit-builder-vars-file-mime": "MIME-тип файлу",
+ "abusefilter-edit-builder-vars-file-mediatype": "Тип медіа файлу",
+ "abusefilter-edit-builder-vars-file-width": "Ширина файлу в пікселях",
+ "abusefilter-edit-builder-vars-file-height": "Висота файлу в пікселях",
+ "abusefilter-edit-builder-vars-file-bits-per-channel": "Бітів на кольоровий канал файлу",
+ "abusefilter-filter-log": "Нові зміни фільтрів",
+ "abusefilter-history": "Історія змін фільтра редагувань #$1",
+ "abusefilter-history-foruser": "Зміни, зроблені $1",
+ "abusefilter-history-hidden": "прихований",
+ "abusefilter-history-enabled": "увімкнений",
+ "abusefilter-history-global": "Глобальний",
+ "abusefilter-history-timestamp": "Коли",
+ "abusefilter-history-user": "Користувач",
+ "abusefilter-history-public": "Відкритий опис фільтра",
+ "abusefilter-history-flags": "Прапорці",
+ "abusefilter-history-filter": "Правила фільтра",
+ "abusefilter-history-comments": "Коментарі",
+ "abusefilter-history-actions": "Дії",
+ "abusefilter-history-backedit": "Назад до редагування фільтра",
+ "abusefilter-history-deleted": "Вилучено",
+ "abusefilter-history-filterid": "Фільтр",
+ "abusefilter-history-select-legend": "Уточнити пошук",
+ "abusefilter-history-select-user": "Користувач:",
+ "abusefilter-history-select-submit": "Уточнити",
+ "abusefilter-history-diff": "Зміни",
+ "abusefilter-history-error-hidden": "Цей фільтр прихований, ви не можете проглянути його історію.",
+ "abusefilter-exception-unexpectedatend": "Неочікуваний \"$2\" на позиції $1.",
+ "abusefilter-exception-expectednotfound": "Не виявлено $2 на позиції $1 (замість нього знайдено $3 $4).",
+ "abusefilter-exception-unrecognisedkeyword": "Неопізнане ключове слово $2 на позиції $1.",
+ "abusefilter-exception-unexpectedtoken": "Неочікуваний токен \"$3\" (типу $2) на позиції $1.",
+ "abusefilter-exception-unclosedstring": "Незакритий рядковий вираз на позиції $1.",
+ "abusefilter-exception-invalidoperator": "Помилковий оператор \"$2\" на позиції $1.",
+ "abusefilter-exception-unrecognisedtoken": "Неопізнаний токен \"$2\" на позиції $1.",
+ "abusefilter-exception-noparams": "Не вказані параметри для функції \"$2\" на позиції $1.",
+ "abusefilter-exception-dividebyzero": "Ділення $2 на нуль на позиції $1.",
+ "abusefilter-exception-unrecognisedvar": "Неопізнана змінна $2 на позиції $1",
+ "abusefilter-exception-notenoughargs": "Замало аргументів для функції $2, що викликається на позиції $1.\nОчікується $3 {{PLURAL:$3|аргумент|аргументи|аргументів}}, а вказано $4",
+ "abusefilter-exception-regexfailure": "Помилка в регулярному виразі \"$3\" на позиції $1: \"$2\"",
+ "abusefilter-exception-overridebuiltin": "Недопустиме перевизначення вбудованої змінної \"$2\" на позиції $1.",
+ "abusefilter-exception-outofbounds": "Запит на неіснуючий елементу списку $2 (розмір списку = $3) на позиції $1.",
+ "abusefilter-exception-notlist": "Запит на елемент масиву для об'єкту, що не є масивом, на позиції $1.",
+ "abusefilter-action-tag": "Мітка",
+ "abusefilter-action-throttle": "Звузити",
+ "abusefilter-action-warn": "Попередження",
+ "abusefilter-action-blockautopromote": "Заблокувати автопросування",
+ "abusefilter-action-block": "Блокування",
+ "abusefilter-action-degroup": "Виключення з груп",
+ "abusefilter-action-rangeblock": "Блокування діапазону",
+ "abusefilter-action-disallow": "Відхилення",
+ "abusefilter-revert-title": "Відкотити всі зміни, зроблені фільтром $1",
+ "abusefilter-revert-intro": "Ця форма дозволяє вам відкотити всі зміни, зроблені фільтром редагувань $1.\nБудь ласка, будьте обачні у використанні цього інструменту.",
+ "abusefilter-revert-preview-item": "$1: $2 {{GENDER:$7|зробив|зробила}} $3 на $4. Дії для скасування: $5 ($6)",
+ "abusefilter-revert-search-legend": "Виберіть дії фільтру редагувань, які потрібно скасувати",
+ "abusefilter-revert-periodstart": "Початок періоду:",
+ "abusefilter-revert-periodend": "Закінчення періоду:",
+ "abusefilter-revert-search": "Вибір дій",
+ "abusefilter-revert-filter": "Фільтр:",
+ "abusefilter-revert-preview-intro": "Нижче приведені виконані фільтром редагувань дії, які будуть скасовані.\nБудь ласка, уважно їх перевірте та натисніть \"{{int:abusefilter-revert-confirm}}\" для підтвердження виділеного.",
+ "abusefilter-revert-confirm": "Підтвердити",
+ "abusefilter-revert-success": "Ви відкотили всі дії, виконані фільтром редагувань [[Special:AbuseFilter/$1|$2]].",
+ "abusefilter-revert-reason": "Автоматичний відкіт всіх дій, виконаних фільтром редагувань $1.\nВказана причина: $2",
+ "abusefilter-revert-reasonfield": "Причина:",
+ "abusefilter-test": "Перевірити фільтр на вже зроблених редагуваннях",
+ "abusefilter-test-intro": "Ця сторінка дозволяє вам перевірити фільтр, введений у наведене нижче поле, на {{PLURAL:$1|1=останній $1 зміні|останніх $1 змінах}}.\nЩоб завантажити існуючий фільтр, введіть його ідентифікатор (ID) у текстове поле під полем редагування і натисніть кнопку \"{{int:abusefilter-test-load}}\".",
+ "abusefilter-test-legend": "Перевірка фільтру",
+ "abusefilter-test-load-filter": "Завантажити фільтр з ID:",
+ "abusefilter-test-submit": "Перевірити",
+ "abusefilter-test-load": "Завантажити",
+ "abusefilter-test-user": "Зміни користувача:",
+ "abusefilter-test-period-start": "Зміни зроблені після:",
+ "abusefilter-test-period-end": "Зміни зроблені до:",
+ "abusefilter-test-page": "Зміни на сторінці:",
+ "abusefilter-test-shownegative": "Показувати зміни, які не попадають під фільтр",
+ "abusefilter-test-syntaxerr": "Введений вами фільтр містить синтаксичну помилку.\nВи можете отримати докладне пояснення, натиснувши кнопку \"{{int:abusefilter-edit-check}}\"",
+ "abusefilter-test-badtitle": "Вами введено хибний заголовок сторінки. Можливо, він містить один або кілька символів, які не можна вживати у назвах.",
+ "abusefilter-changeslist-examine": "переглянути",
+ "abusefilter-examine": "Перегляд окремих змін",
+ "abusefilter-examine-intro": "Ця сторінка дозволяє вам переглянути змінні, створені фільтром редагувань для окремої зміни і перевірити їх у фільтрах.",
+ "abusefilter-examine-legend": "Вибір змін",
+ "abusefilter-examine-diff": "URL різниці версій:",
+ "abusefilter-examine-user": "Користувач:",
+ "abusefilter-examine-title": "Заголовок сторінки:",
+ "abusefilter-examine-submit": "Знайти",
+ "abusefilter-examine-vars": "Змінні, створені для цієї зміни",
+ "abusefilter-examine-test": "Перевірити цю зміну у фільтрі",
+ "abusefilter-examine-test-button": "Випробувати фільтр",
+ "abusefilter-examine-match": "Ця змін підпадає під фільтр.",
+ "abusefilter-examine-nomatch": "Ця зміна не підпадає під фільтр.",
+ "abusefilter-examine-syntaxerror": "Синтаксична помилка у фільтрі",
+ "abusefilter-examine-notfound": "Вказану вами зміну не знайдено.",
+ "abusefilter-examine-incompatible": "Фільтр редагувань не підтримує вказану вами зміну",
+ "abusefilter-examine-noresults": "Нічого не знайдено за запитом із заданими параметрами.",
+ "abusefilter-topnav": "'''Навігація по фільтрах редагувань'''",
+ "abusefilter-topnav-home": "Список",
+ "abusefilter-topnav-test": "Пакетна перевірка",
+ "abusefilter-topnav-examine": "Перевірка останніх редагувань",
+ "abusefilter-topnav-log": "Журнал зловживань",
+ "abusefilter-topnav-tools": "Засоби зневадження",
+ "abusefilter-topnav-import": "Імпорт фільтру",
+ "abusefilter-log-name": "Журнал фільтру редагувань",
+ "abusefilter-log-header": "У цей журнал записуються описи змін, зроблених у фільтрах.\nПодробиці можна знайти в [[Special:AbuseFilter/history|списку]] останніх змін фільтрів.",
+ "abusefilter-logentry-modify": "$1 {{GENDER:$2|змінив|змінила}} $4 ($5)",
+ "abusefilter-log-noresults": "Немає результатів",
+ "abusefilter-diff-title": "Різниця між версіями",
+ "abusefilter-diff-item": "Елемент",
+ "abusefilter-diff-version": "Версія {{GENDER:$3|від}} $1, $2",
+ "abusefilter-diff-info": "Основні відомості",
+ "abusefilter-diff-pattern": "Умови фільтрації",
+ "abusefilter-diff-invalid": "Не вдається отримати запитані версії",
+ "abusefilter-diff-backhistory": "Повернутися до історії фільтру",
+ "abusefilter-diff-prev": "Попередня зміна",
+ "abusefilter-diff-next": "Наступна зміна",
+ "abusefilter-import-intro": "Ви можете використовувати цей інтерфейс для імпорту фільтрів з інших вікі.\nУ джерельній вікі, натисніть «{{int:abusefilter-edit-export}}» у розділі «{{int:abusefilter-edit-tools}}» інтерфейсу редагування.\nСкопіюйте зміст текстового поля, вставте його у цю сторінку і натисніть «{{int:abusefilter-import-submit}}».",
+ "abusefilter-import-submit": "Імпортувати дані",
+ "abusefilter-group-default": "Стандартна",
+ "abusefilter-http-error": "Сталася помилка HTTP: $1.",
+ "apihelp-abusefiltercheckmatch-description": "Перевірте, чи AbuseFilter має збіги з набором змінних, подією AbuseFilter, внесеною в журнал редактором.\n\nПотрібні vars, rcid або logid, але використати можна лише один.",
+ "apihelp-abusefiltercheckmatch-summary": "Перевірити, щоб побачити, чи Фільтр зловживань відповідає набору змінних, журнальована дія, яка запускається користувачем.",
+ "apihelp-abusefiltercheckmatch-extended-description": "Необхідні vars, rcid або logid, однак можна використати лише один з цих параметрів.",
+ "apihelp-abusefiltercheckmatch-param-filter": "Повнотекстовий фільтр для перевірки на відповідність.",
+ "apihelp-abusefiltercheckmatch-param-vars": "JSON-кодований масив змінних, за яким тестувати.",
+ "apihelp-abusefiltercheckmatch-param-rcid": "ID у нових редагуваннях, на основі якого має бути здійснена перевірка.",
+ "apihelp-abusefiltercheckmatch-param-logid": "ID із журналу фільтра зловживань, на основі якого має бути здійснена перевірка.",
+ "apihelp-abusefiltercheckmatch-example-1": "Перевірити, чи ID 15 в нових редагуваннях відповідає простому фільтру.",
+ "apihelp-abusefilterchecksyntax-description": "Перевірити синтаксис фільтру зловживань.",
+ "apihelp-abusefilterchecksyntax-summary": "Перевірити синтаксис фільтра зловживань.",
+ "apihelp-abusefilterchecksyntax-param-filter": "Повний текст фільтру, синтаксис якого необхідно перевірити.",
+ "apihelp-abusefilterchecksyntax-example-1": "Перевірити синтаксис правильного фільтру",
+ "apihelp-abusefilterchecksyntax-example-2": "Перевірити синтаксис неправильного фільтру",
+ "apihelp-abusefilterevalexpression-description": "Оцінює значення виразу Фільтру зловживань.",
+ "apihelp-abusefilterevalexpression-summary": "Оцінює вираз фільтра зловживань.",
+ "apihelp-abusefilterevalexpression-param-expression": "Вираз до оцінки.",
+ "apihelp-abusefilterevalexpression-example-1": "Оцінити простий вираз",
+ "apihelp-abusefilterunblockautopromote-description": "Зняти з користувача викликане фільтром зловживань обмеження отримувати автоматичне просування.",
+ "apihelp-abusefilterunblockautopromote-summary": "Розблоковує користувача від отримування автоматичних просувань через послідовність фільтрів.",
+ "apihelp-abusefilterunblockautopromote-param-user": "Ім'я користувача, якого Ви хочете розблокувати.",
+ "apihelp-abusefilterunblockautopromote-example-1": "Зняти блокування з автоматичного просування користувача [[User:Example]]",
+ "apihelp-query+abusefilters-description": "Показати подробиці фільтрів зловживань.",
+ "apihelp-query+abusefilters-summary": "Показати деталі фільтрів зловживань.",
+ "apihelp-query+abusefilters-param-startid": "ID фільтра, з якого почати перелічувати.",
+ "apihelp-query+abusefilters-param-endid": "ID фільтра, на якому закінчити перелічувати.",
+ "apihelp-query+abusefilters-param-show": "Показати тільки фільтри, які відповідають цим критеріям.",
+ "apihelp-query+abusefilters-param-limit": "Максимальна кількість фільтрів у списку.",
+ "apihelp-query+abusefilters-param-prop": "Які властивості необхідно отримати.",
+ "apihelp-query+abusefilters-example-1": "Показати список увімкнених публічних фільтрів",
+ "apihelp-query+abusefilters-example-2": "Показати деталі про фільтри",
+ "apihelp-query+abuselog-description": "Показати події, спіймані одним з фільтрів зловживань.",
+ "apihelp-query+abuselog-summary": "Показати дії, виявлені одним з фільтрів зловживань.",
+ "apihelp-query+abuselog-param-start": "Часова мітка початку переліку.",
+ "apihelp-query+abuselog-param-end": "Часова мітка закінчення переліку.",
+ "apihelp-query+abuselog-param-user": "Показати тільки елементи, зроблені певним користувачем або IP-адресою.",
+ "apihelp-query+abuselog-param-title": "Показати лише елементи, що наявні на даній сторінці.",
+ "apihelp-query+abuselog-param-filter": "Показати лише елементи, спіймані за допомогою даного ідентифікатора фільтра.",
+ "apihelp-query+abuselog-param-limit": "Максимальна кількість елементів для переліку.",
+ "apihelp-query+abuselog-param-prop": "Які властивості отримати.",
+ "apihelp-query+abuselog-example-1": "Показати останні записи в журналі",
+ "apihelp-query+abuselog-example-2": "Показати останні записи в журналі [[API]]",
+ "apierror-abusefilter-canttest": "Ви не маєте дозволу тестувати фільтри зловживань.",
+ "apierror-abusefilter-cantcheck": "Ви не маєте дозволу перевіряти синтаксис фільтрів зловживань.",
+ "apierror-abusefilter-nosuchlogid": "Немає запису зловживання з id $1.",
+ "apierror-abusefilter-badsyntax": "Фільтр має неправильний синтаксис."
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/ur.json b/www/wiki/extensions/AbuseFilter/i18n/ur.json
new file mode 100644
index 00000000..c547b5ae
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/ur.json
@@ -0,0 +1,201 @@
+{
+ "@metadata": {
+ "authors": [
+ "පසිඳු කාවින්ද",
+ "عثمان خان شاہ",
+ "Muhammad Shuaib",
+ "Zainab Meher",
+ "Abdulq"
+ ]
+ },
+ "abusefilter": "مقطار غلط کاری کی ترتیب",
+ "abuselog": "غلط استعمال کی لاگ ان کریں",
+ "abusefilter-blocker": "غلط استعمال فلٹر کریں",
+ "right-abusefilter-modify": "غلط کاری کے مقطاروں میں ترمیم",
+ "right-abusefilter-view": "غلط کاری کے مقطاروں کا مشاہدہ",
+ "right-abusefilter-log": "نوشتہ غلط کاری کا مشاہدہ",
+ "right-abusefilter-log-detail": "نوشتہ غلط کاری کے مفصل اندراجات کا مشاہدہ",
+ "right-abusefilter-private": "غلط استعمال کی لاگ میں نجی ڈیٹا نقطہ نظر",
+ "right-abusefilter-modify-restricted": "محدود اعمال کے ساتھ غلط استعمال فلٹر میں ترمیم",
+ "right-abusefilter-revert": "کی طرف سے ایک دیا کے غلط استعمال کے فلٹر سب تبدیلیاں الٹا واپس",
+ "right-abusefilter-hide-log": "میں لکھے گئے مراسلے کے غلط استعمال کے لاگ ان میں چھپائیں",
+ "right-abusefilter-hidden-log": "دیکھیں چھپے ہوئے غلط استعمال لاگ ان میں لکھے گئے مراسلے",
+ "action-abusefilter-modify": "غلط استعمال کی فلٹر میں ترمیم",
+ "action-abusefilter-view": "غلط استعمال کی فلٹر دیکھیں",
+ "action-abusefilter-log": "غلط استعمال کے لاگ کو دیکھیں",
+ "action-abusefilter-log-detail": "دیکھیں تفصیلی غلط استعمال لاگ ان میں لکھے گئے مراسلے",
+ "action-abusefilter-private": "غلط استعمال کی لاگ میں نجی اعداد و شمار دیکھیں",
+ "action-abusefilter-modify-restricted": "محدود اعمال کے ساتھ غلط استعمال فلٹر میں ترمیم",
+ "action-abusefilter-revert": "کی طرف سے ایک دیا کے غلط استعمال کے فلٹر سب تبدیلیاں الٹا واپس",
+ "action-abusefilter-view-private": "قول کے غلط استعمال کے فلٹر کو ذاتی کے طور پر نشان",
+ "abusefilter-log": "غلط استعمال فلٹر لاگ ان کریں",
+ "abusefilter-log-summary": "اس لاگ ان کے فلٹرز کی طرف سے پکڑے گئے سب اعمال کی فہرست کو ظاہر کرتا ہے.",
+ "abusefilter-log-search": "تلاش کے غلط استعمال لاگ ان کریں",
+ "abusefilter-log-search-user": "صارف:",
+ "abusefilter-log-search-title": "عنوان:",
+ "abusefilter-log-search-wiki": "ویکی:",
+ "abusefilter-log-search-submit": "تلاش",
+ "abusefilter-log-detailslink": "تفصیلات",
+ "abusefilter-log-hidelink": "رویت کو ایڈجسٹ",
+ "abusefilter-log-details-var": "متغیر",
+ "abusefilter-log-details-val": "قدر",
+ "abusefilter-log-details-vars": "کارروائی کے پیرامیٹر",
+ "abusefilter-log-details-private": "نجی اعداد و شمار",
+ "abusefilter-log-noactions": "کوئی بھی نہیں",
+ "abusefilter-log-details-diff": "تبدیلیوں میں ترمیم کی گئی",
+ "abusefilter-log-linkoncontribs": "غلط استعمال کی لاگ ان کریں",
+ "abusefilter-log-hide-reason": "وجہ:",
+ "abusefilter-log-hide-forbidden": "آپ غلط استعمال لاگ ان میں لکھے گئے مراسلے کو چھپانے کے لئے اجازت نہیں ہے.",
+ "abusefilter-management": "غلط استعمال فلٹر کا انتظام",
+ "abusefilter-list": "سب فلٹر",
+ "abusefilter-list-status": "حیثیت",
+ "abusefilter-list-public": "عوامی تفصیل",
+ "abusefilter-list-consequences": "ہوگا ؟",
+ "abusefilter-list-visibility": "رویت",
+ "abusefilter-list-hitcount": "مارا شمار",
+ "abusefilter-list-edit": "ترمیم کریں",
+ "abusefilter-list-details": "تفصیلات",
+ "abusefilter-list-limit": "فی صفحہ نمبر:",
+ "abusefilter-list-lastmodified": "آخری بار",
+ "abusefilter-list-group": "فلٹر گروپ",
+ "abusefilter-hidden": "پرائیویٹ",
+ "abusefilter-unhidden": "عوامی",
+ "abusefilter-enabled": "فعال",
+ "abusefilter-deleted": "خارج کر دیا گیا",
+ "abusefilter-disabled": "معذور",
+ "abusefilter-new": "ایک نئے فلٹر تخلیق کریں",
+ "abusefilter-status-global": "عالمی",
+ "abusefilter-list-options": "اختیارات",
+ "abusefilter-list-options-deleted": "خارج کردہ فلٹر:",
+ "abusefilter-list-options-deleted-only": "شو صرف حذف فلٹر کر",
+ "abusefilter-list-options-deleted-hide": "فلٹر چھپائیں حذف کر دی ہے",
+ "abusefilter-list-options-deleted-show": "خارج کردہ فلٹر شامل ہیں",
+ "abusefilter-list-options-scope": "مقطارات دکھائیں:",
+ "abusefilter-list-options-disabled": "معذور فلٹر:",
+ "abusefilter-list-options-hidedisabled": "چھپائیں فلٹر غیر فعال کر دیا",
+ "abusefilter-list-options-searchfield": "اصول کے مظابق تلاش",
+ "abusefilter-list-options-searchpattern": "نمونہ شامل کریں",
+ "abusefilter-list-options-searchoptions": "طریقہ تلاش",
+ "abusefilter-list-options-search-like": "واضح سوال",
+ "abusefilter-list-options-submit": "اپ ڈیٹ",
+ "abusefilter-tools-expr": "اظہار ٹیسٹر",
+ "abusefilter-tools-reautoconfirm-user": "صارف:",
+ "abusefilter-edit-subtitle-new": "فلٹر کی تشکیل",
+ "abusefilter-edit-status-label": "اعداد و شمار:",
+ "abusefilter-edit-new": "نئے فلٹر کریں",
+ "abusefilter-edit-save": "فلٹر کو محفوظ کریں",
+ "abusefilter-edit-switch-editor": "خانہ ترمیم تبدیل کریں",
+ "abusefilter-edit-group": "فلٹر گروپ:",
+ "abusefilter-edit-enabled": "اس فلٹر کو فعال",
+ "abusefilter-edit-deleted": "حذف کر کے طور پر نشان زد کریں",
+ "abusefilter-edit-hidden": "عوامی نقطہ نظر سے اس فلٹر کی تفصیلات چھپائیں",
+ "abusefilter-edit-rules": "شروط:",
+ "abusefilter-edit-hitcount": "فلٹر مشاہدات:",
+ "abusefilter-edit-consequences": "اعمال لے لیا جب جستجو",
+ "abusefilter-edit-action-warn": "دے صارف ایک انتباہ کے بعد ان کے اعمال کو دکھانے کا محرک",
+ "abusefilter-edit-action-disallow": "ےہ سوال کارروائی سے صارف کی روک تھام",
+ "abusefilter-edit-action-degroup": "تمام مراعات یافتہ طبقے کے موضوعات سے صارف حذف کریں",
+ "abusefilter-edit-action-block": "میں صارف اور/یا ترمیم سے آئی پی ایڈریس بلاک",
+ "abusefilter-edit-action-rangeblock": "متفرق آئ پی رینج کو بندکریں جس سے صارف اختراع کرتا ھے۔",
+ "abusefilter-edit-action-tag": "ٹیگ مزید کا جائزہ کے لئے ترمیم کریں",
+ "abusefilter-edit-throttle-count": "اجازت دینے کے لئے اعمال کی تعداد:",
+ "abusefilter-edit-throttle-period": "وقت کی مدت:",
+ "abusefilter-edit-warn-message": "انتباہ کے لئے استعمال کرنے کے لئے نظام پیغام:",
+ "abusefilter-edit-warn-other": "دوسرے پیغام",
+ "abusefilter-edit-warn-actions": "اعمال:",
+ "abusefilter-edit-main": "پیرامیٹرز کو فلٹر",
+ "abusefilter-edit-done-subtitle": "فلٹر ترمیم",
+ "abusefilter-edit-viewhistory": "فلٹر اس تاریخ کو دیکھیں",
+ "abusefilter-edit-history": "تاریخ:",
+ "abusefilter-edit-check": "سنٹکس چیک کریں",
+ "abusefilter-edit-badfilter": "آپ مخصوص فلٹر موجود نہیں",
+ "abusefilter-edit-revert": "اعمال اس فلٹر کی طرف لے جایا جاسکتا",
+ "abusefilter-edit-tools": "فورم کے اوزار:",
+ "abusefilter-edit-test-link": "حال ہی میں کی گئی تدوین کے خلاف اس فلٹر ٹیسٹ",
+ "abusefilter-edit-export": "ایک اور وکیپیڈیا کو اس فلٹر میں برآمد",
+ "abusefilter-edit-syntaxok": "کوئی سنٹکس غلطیوں کا پتہ چلا.",
+ "abusefilter-edit-notallowed": "آپ تخلیق یا غلط استعمال فلٹر میں ترمیم کرنے کے لئے جائز نہيں کر رہے ہیں",
+ "abusefilter-edit-builder-select": "یہ کرسر پر شامل کرنے کے لئے ایک آپشن منتخب کریں",
+ "abusefilter-edit-builder-group-op-arithmetic": "حساب آپریٹرز",
+ "abusefilter-edit-builder-group-misc": "متفرق",
+ "abusefilter-edit-builder-group-funcs": "افعال",
+ "abusefilter-edit-builder-funcs-get_matches": "ریجکس میچ میں ہر جوڑ کے گرو کی صف آرائی متن سے ملتی ہے۔",
+ "abusefilter-edit-builder-vars-action": "کارروائی",
+ "abusefilter-edit-builder-vars-newsize": "نیا صفحہ کا سائز",
+ "abusefilter-edit-builder-vars-oldsize": "پرانے صفحہ کا سائز",
+ "abusefilter-edit-builder-vars-removedlines": "لائنوں ترمیم میں ہٹا دیا جاتا",
+ "abusefilter-edit-builder-vars-summary": "خلاصہ/وجہ میں ترمیم کریں",
+ "abusefilter-edit-builder-vars-article-ns": "صفحہ نیم سپیس",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "مکمل صفحہ کا عنوان",
+ "abusefilter-edit-builder-vars-movedfrom-text": "اقدام ذریعہ صفحہ کا عنوان",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "اقدام ذریعہ صفحہ کا مکمل عنوان",
+ "abusefilter-edit-builder-vars-movedto-ns": "نیم سپیس میں منتقل منزل صفحے کے",
+ "abusefilter-edit-builder-vars-movedto-text": "اقدام منزل صفحہ کا عنوان",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "اقدام منزل صفحہ کا مکمل عنوان",
+ "abusefilter-edit-builder-vars-user-editcount": "صارف کے شمار میں ترمیم کریں",
+ "abusefilter-edit-builder-vars-user-age": "صارف اکاؤنٹ کی عمر",
+ "abusefilter-edit-builder-vars-user-name": "صارف اکاؤنٹ کا نام",
+ "abusefilter-edit-builder-vars-user-groups": "گروپس (سمیت آدمى) صارف میں ہے",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "وقت کا ای میل ایڈریس کی تصدیق کی تھی",
+ "abusefilter-edit-builder-vars-recent-contributors": "اس صفحہ کو میں شراکت کے لئے آخری دس صارفین",
+ "abusefilter-edit-builder-vars-all-links": "نئے متن میں تمام بیرونی لنکس",
+ "abusefilter-edit-builder-vars-added-links": "اس ترمیم میں شامل تمام بیرونی لنکس",
+ "abusefilter-edit-builder-vars-removed-links": "تمام بیرونی روابط کی ترمیم میں ہٹا دیا جاتا",
+ "abusefilter-edit-builder-vars-new-text-stripped": "نیا صفحہ ٹیکسٹ ، کسی بھی تدوین چھین لیا",
+ "abusefilter-edit-builder-vars-restrictions-edit": "اس صفحے کے حفاظتی مراحل میں ترمیم کریں",
+ "abusefilter-history-hidden": "پوشیدہ",
+ "abusefilter-history-enabled": "فعال",
+ "abusefilter-history-global": "عالمی",
+ "abusefilter-history-timestamp": "وقت",
+ "abusefilter-history-user": "صارف",
+ "abusefilter-history-public": "عوامی فلٹر تفصیل",
+ "abusefilter-history-flags": "پرچم",
+ "abusefilter-history-filter": "فلٹر کا قاعدہ",
+ "abusefilter-history-comments": "تبصرے",
+ "abusefilter-history-actions": "اعمال",
+ "abusefilter-history-backedit": "ایڈیٹر کو فلٹر کرنے کے لئے واپس",
+ "abusefilter-history-deleted": "خارج کر دیا گیا",
+ "abusefilter-history-filterid": "فلٹر کریں",
+ "abusefilter-history-select-user": "صارف:",
+ "abusefilter-history-diff": "تبدیلیاں",
+ "abusefilter-action-tag": "دن",
+ "abusefilter-action-warn": "خبردار",
+ "abusefilter-action-block": "بلاک",
+ "abusefilter-action-degroup": "گروپ سے حذف کریں",
+ "abusefilter-revert-periodend": "مدت ختم:",
+ "abusefilter-revert-search": "اعمال کا انتخاب",
+ "abusefilter-revert-filter": "ٓئی ڈی فلٹر کریں:",
+ "abusefilter-revert-confirm": "اس بات کی تصدیق",
+ "abusefilter-test-submit": "ٹیسٹ",
+ "abusefilter-test-load": "بوجھ",
+ "abusefilter-test-user": "صارف کی طرف سے تبدیلیاں:",
+ "abusefilter-test-period-start": "تبدیلیوں کے بعد بنا دیا ہے:",
+ "abusefilter-test-period-end": "تبدیلیوں سے پہلے بنا دیا ہے:",
+ "abusefilter-test-page": "تبدیلیاں بنایا صفحہ کرنے کے لئے:",
+ "abusefilter-test-shownegative": "شو کی تبدیلیاں جو کہ سے میل نہیں کھاتے فلٹر",
+ "abusefilter-changeslist-examine": "کی جانچ پڑتال",
+ "abusefilter-examine": "انفرادی تبدیلیاں کی جانچ پڑتال",
+ "abusefilter-examine-user": "صارف:",
+ "abusefilter-examine-submit": "تلاش",
+ "abusefilter-examine-test": "اس تبدیلی کے خلاف ایک فلٹر ٹیسٹ",
+ "abusefilter-examine-test-button": "ٹیسٹ فلٹر کریں",
+ "abusefilter-examine-match": "فلٹر جستجو اس تبدیلی ہے.",
+ "abusefilter-examine-nomatch": "فلٹر اس تبدیلی میچ نہیں کیا.",
+ "abusefilter-examine-syntaxerror": "فلٹر سنٹکس کے باطل ہے",
+ "abusefilter-examine-notfound": "میں آپ کی درخواست کی تبدیلی پایا نہیں جا سکتا.",
+ "abusefilter-examine-incompatible": "کی حمایت میں تبدیلی کی آپ کی درخواست نہیں کی ہے کی طرف سے اس کے غلط استعمال کے فلٹر کریں",
+ "abusefilter-examine-noresults": "کوئی نتائج نہیں پائے گئے تلاش کیے گئے پیرامیٹرز كے ليے آپ فراہم.",
+ "abusefilter-topnav-home": "گھر",
+ "abusefilter-topnav-test": "بیچ ٹیسٹنگ",
+ "abusefilter-topnav-examine": "ماضی کی گئی تدوین کی جانچ پڑتال",
+ "abusefilter-topnav-log": "غلط استعمال کی لاگ ان کریں",
+ "abusefilter-topnav-tools": "درستگی نقص ، فورم کے اوزار",
+ "abusefilter-topnav-import": "درآمد فلٹر کریں",
+ "abusefilter-log-name": "غلط استعمال فلٹر لاگ ان کریں",
+ "abusefilter-log-noresults": "کوئی نتائج",
+ "abusefilter-diff-title": "ورژن کے درمیان اختلافات",
+ "abusefilter-diff-item": "آئٹم کو",
+ "abusefilter-diff-info": "بنیادی معلومات",
+ "abusefilter-diff-pattern": "فلٹر حالات",
+ "abusefilter-group-default": "پہلے سے طے شدہ"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/uz.json b/www/wiki/extensions/AbuseFilter/i18n/uz.json
new file mode 100644
index 00000000..54b83e22
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/uz.json
@@ -0,0 +1,17 @@
+{
+ "@metadata": {
+ "authors": [
+ "Sociologist"
+ ]
+ },
+ "abuselog": "Filtrlash qaydlari",
+ "right-abusefilter-log": "filtrlash qaydlarini koʻrish",
+ "action-abusefilter-log": "filtrlash qaydlarini koʻrish",
+ "abusefilter-log": "Filtrlash qaydlari",
+ "abusefilter-log-linkoncontribs": "filtrlash qaydlari",
+ "abusefilter-log-linkoncontribs-text": "Ushbu foydalanuvchi haqida filtrlash qaydlaridagi yozuvlar",
+ "abusefilter-log-hide-reason": "Sabab:",
+ "abusefilter-edit-builder-vars-user-name": "Hisob yozuvi nomi",
+ "abusefilter-revert-reasonfield": "Sabab:",
+ "abusefilter-log-name": "Filtrlash qaydlari"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/vec.json b/www/wiki/extensions/AbuseFilter/i18n/vec.json
new file mode 100644
index 00000000..1341a32c
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/vec.json
@@ -0,0 +1,368 @@
+{
+ "@metadata": {
+ "authors": [
+ "Candalua",
+ "Frigotoni",
+ "GatoSelvadego",
+ "Nemo bis",
+ "Nick1915",
+ "Matma Rex",
+ "Cusolotto"
+ ]
+ },
+ "abusefilter-desc": "Àplica dele eurìstiche automatiche a le modifiche.",
+ "abusefilter": "Configurassion del filtro abusi",
+ "abuselog": "Registro abusi",
+ "abusefilter-intro": "Benvegnù in te l'interfacia de gestion del Filtro Abusi.\nEl Filtro Abusi el xe un sistema automatixà par l'aplicassion de eurìstiche automatiche a tute le azion.\nSta interfacia la mostra un elenco dei filtri definìi e la parmete de modificarli.",
+ "abusefilter-mustbeeditor": "Par motivi de sicuressa, solo i utenti col dirito de modificar i filtri abusi i pol doparar sta interfacia.",
+ "abusefilter-warning": "'''Ocio''': sta azion la xe stà ritegnùa pericolosa in base a na verifica automatica.\nLe modifiche mia costrutive le vegnarà prontamente anulà; l'inserimento palese o ripetùo de contributi mia costrutivi el darà luogo al bloco de l'utensa o del to indirizo IP.\nSe te ritien che la modifica in question la sia costrutiva, strucar de novo su Invia par confermarla.\nSta qua la xe na breve descrission de la regola de sicureza che xe stà violà: $1",
+ "abusefilter-disallowed": "Sta azion la xe stà ritegnùa pericolosa in base a na verifica automatica.\nSe te ritien che la modifica in question la sia costrutiva, par piaser dighelo a un aministrador.\nSta qua la xe na breve descrission de la regola de sicureza che xe stà violà: $1",
+ "abusefilter-blocked-display": "Sta azion la xe stà ritegnùa pericolosa in base a na verifica automatica,\ne quindi te xe stà inpedìo de farla.\nInoltre, par protegere {{SITENAME}}, l'utensa coivolta e tuti i indirizi IP associà i xe stà blocà e no i pole pi far modifiche.\nSe te ritien che la modifica in question la sia costrutiva, par piaser dighelo a un aministrador.\nSta qua la xe na breve descrission de la regola de sicureza che xe stà violà: $1",
+ "abusefilter-degrouped": "Sta azion la xe stà ritegnùa pericolosa in base a na verifica automatica.\nQuindi te xe stà inpedìo de farla e, sicome ghe xe el ris-cio che la to utensa la sia conpromessa, tuti i diriti i ghe xe stà revocà.\nSe te ritien che sia stà un eror, par piaser dighelo a un burocrate spiegando cossa te seri drio far, e i to diriti i te vegnarà ridati.\nSta qua la xe na breve descrission de la regola de sicureza che xe stà violà: $1",
+ "abusefilter-autopromote-blocked": "Sta azion la xe stà ritegnùa pericolosa in base a na verifica automatica,\ne quindi te xe stà inpedìo de farla.\nInoltre, par sicuressa, alcuni privilegi tipici de le utense conossùe i te xe stà tenporaneamente cavà.\nSta qua la xe na breve descrission de la regola de sicureza che xe stà violà: $1",
+ "abusefilter-blocker": "Filtro abusi",
+ "abusefilter-blockreason": "Blocà automaticamente dal filtro abusi.\nDescrission de la regola corispondente: $1",
+ "abusefilter-degroupreason": "Diriti cavà automaticamente dal filtro abusi.\nDescrission de la regola: $1",
+ "abusefilter-accountreserved": "Sta utensa la xe riservà par el filtro abusi.",
+ "right-abusefilter-modify": "Modìfega i filtri abusi",
+ "right-abusefilter-view": "Varda i filtri abusi",
+ "right-abusefilter-log": "Varda el registro abusi",
+ "right-abusefilter-log-detail": "Varda voci detaglià del registro abusi",
+ "right-abusefilter-private": "Varda i dati privati nel registro dei abusi",
+ "right-abusefilter-modify-restricted": "Modifica i filtri anti abusi con le azion riservà",
+ "right-abusefilter-revert": "Anula tuti i canbiamenti fati da un determinato filtro abusi",
+ "right-abusefilter-view-private": "Varda i filtri abuso segnà come privati",
+ "right-abusefilter-hide-log": "Scondi voci nel registro dei abusi",
+ "right-abusefilter-hidden-log": "Vardar elementi sconti del registro dei abusi",
+ "action-abusefilter-modify": "modificar i filtri abusi",
+ "action-abusefilter-view": "vardar i filtri abusi",
+ "action-abusefilter-log": "vardar el registro dei abusi",
+ "action-abusefilter-log-detail": "vardar le voci de detaglio del registro dei abusi",
+ "action-abusefilter-private": "vardar le informassion riservà in tel registro dei abusi",
+ "action-abusefilter-modify-restricted": "modificar i filtri abusi con le azion riservà",
+ "action-abusefilter-revert": "ripristinar tute le modifiche fate da un determinato filtro abusi",
+ "action-abusefilter-view-private": "vardar i filtri abuso segnà come privati",
+ "abusefilter-log": "Registro del filtro abusi",
+ "abusefilter-log-summary": "Sto registro el mostra un elenco de tute le azion caturà dai filtri.",
+ "abusefilter-log-search": "Serca in tel registro dei abusi",
+ "abusefilter-log-search-user": "Utente:",
+ "abusefilter-log-search-filter": "ID del filtro:",
+ "abusefilter-log-search-title": "Titolo:",
+ "abusefilter-log-search-submit": "Serca",
+ "abusefilter-log-entry": "$1: $2 gà provocà l'ativassion de un filtro anti abusi con l'azion \"$3\" su $4.\nAzioni intraprese: $5;\nDescrission del filtro: $6",
+ "abusefilter-log-detailedentry-meta": "$1: $2 gà provocà l'ativassion $3 con l'azion \"$4\" su $5.\nAzioni intraprese: $6;\nDescrission del filtro: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "filtro globałe $1",
+ "abusefilter-log-detailedentry-local": "del filtro $1",
+ "abusefilter-log-detailslink": "detaji",
+ "abusefilter-log-hidelink": "canbia visibilità",
+ "abusefilter-log-details-legend": "Detàji de la voxe de registro $1",
+ "abusefilter-log-details-var": "Variabile",
+ "abusefilter-log-details-val": "Valor",
+ "abusefilter-log-details-vars": "Parametri de l'azion",
+ "abusefilter-log-details-private": "Dati privati",
+ "abusefilter-log-details-ip": "Indirisso IP de origine",
+ "abusefilter-log-noactions": "nissuna",
+ "abusefilter-log-details-diff": "Modìfeghe fate",
+ "abusefilter-log-linkoncontribs": "registro abusi",
+ "abusefilter-log-linkoncontribs-text": "Registro dei abusi par sto utente",
+ "abusefilter-log-hidden": "(elemento sconto)",
+ "abusefilter-log-details-hidden": "No te podi védar i detagli de sta voce, parché i xe sconti al pùblico.",
+ "abusefilter-log-hide-legend": "Scondi elemento",
+ "abusefilter-log-hide-id": "ID de l'elemento:",
+ "abusefilter-log-hide-hidden": "Scondi sto elemento da la vista publica",
+ "abusefilter-log-hide-reason": "Motivassion:",
+ "abusefilter-log-hide-reason-other": "Altra motivasion:",
+ "abusefilter-log-hide-forbidden": "No te ghè el parmesso de scondar i elementi del registro dei abusi.",
+ "abusefilter-logentry-suppress": "ga sconto \"[[$1]]\"",
+ "abusefilter-logentry-unsuppress": "ga descuerto \"[[$1]]\"",
+ "abusefilter-management": "Gestion del filtro abusi",
+ "abusefilter-list": "Tuti i filtri",
+ "abusefilter-list-id": "ID del filtro",
+ "abusefilter-list-status": "Stato",
+ "abusefilter-list-public": "Descrission pùblica",
+ "abusefilter-list-consequences": "Conseguense",
+ "abusefilter-list-visibility": "Visibilità",
+ "abusefilter-list-hitcount": "Nùmaro de corispondense",
+ "abusefilter-list-edit": "Modìfega",
+ "abusefilter-list-details": "Detaji",
+ "abusefilter-list-limit": "Nùmaro par pàxena:",
+ "abusefilter-list-lastmodified": "Ultima modìfega",
+ "abusefilter-hidden": "Privado",
+ "abusefilter-unhidden": "Pùblico",
+ "abusefilter-enabled": "Intacà",
+ "abusefilter-deleted": "Scancelà",
+ "abusefilter-disabled": "Destacà",
+ "abusefilter-hitcount": "{{PLURAL:$1|una corispondensa|$1 corispondense}}",
+ "abusefilter-new": "Crèa un filtro novo",
+ "abusefilter-return": "Torna a la gestion del filtro",
+ "abusefilter-status-global": "Globałe",
+ "abusefilter-list-options": "Opzioni",
+ "abusefilter-list-options-deleted": "Filtri scancelè:",
+ "abusefilter-list-options-deleted-only": "Fà védar solo i filtri scancelè",
+ "abusefilter-list-options-deleted-hide": "Scondi i filtri scancelè",
+ "abusefilter-list-options-deleted-show": "Includi i filtri scancelè",
+ "abusefilter-list-options-disabled": "Filtri destachè:",
+ "abusefilter-list-options-hidedisabled": "Scondi i filtri destachè",
+ "abusefilter-list-options-submit": "Ajorna",
+ "abusefilter-tools-text": "Qua ghe xe alcuni strumenti utili par la costrussion e la verifica dei filtri abusi.",
+ "abusefilter-tools-expr": "Verifica espressioni",
+ "abusefilter-tools-submitexpr": "Vàluta",
+ "abusefilter-tools-reautoconfirm": "Ripristina el stato de autoconfermà",
+ "abusefilter-tools-reautoconfirm-user": "Utente:",
+ "abusefilter-tools-reautoconfirm-submit": "Ripristina autoconferma",
+ "abusefilter-reautoconfirm-none": "El stato de autoconfermà par {{GENDER:$1|l'utente|l'utente|l'utente}} no'l xe stà sospeso.",
+ "abusefilter-reautoconfirm-notallowed": "No te ghè el parmesso de ripristinar el stato de autoconfermà.",
+ "abusefilter-reautoconfirm-done": "El stato de autoconfermà de l'utensa el xe stà ripristinà.",
+ "abusefilter-status": "Fra le ultime $1 {{PLURAL:$1|azion|azioni}}, $2 ($3 %) {{PLURAL:$2|gà|gà}} ragiunto el limite de $4 condizion e $5 ($6 %) {{PLURAL:$5|gà|gà}} ativà uno dei filtri atualmente ativi.",
+ "abusefilter-edit-subtitle": "Modìfega del filtro $1",
+ "abusefilter-edit-oldwarning": "<strong>Te sì drio modificar na version vecia del filtro.\nLe statistiche cità le se riferisse a la version pi nova del filtro.\nSalvando le modifiche vegnarà anulà tuti i canbiamenti fati da sta version in poi.</strong> &bull;\n[[Special:AbuseFilter/history/$2|Ritorna a la cronologia del filtro]].",
+ "abusefilter-edit-status-label": "Statìsteghe:",
+ "abusefilter-edit-status": "Rispeto {{PLURAL:$1|a l'azion pi recente|a le $1 azioni pi recenti}}, sto filtro el gà catà $2 {{PLURAL:$2|corispondensa|corispondense}} ($3 %).",
+ "abusefilter-edit-status-profile": "Rispeto {{PLURAL:$1|a l'azion pi recente|a le $1 azioni pi recenti}}, sto filtro el gà catà $2 {{PLURAL:$2|corispondensa|corispondense}} ($3 %).\nEl so tempo medio de esecuzion xe de $4 ms, e impiega $5 {{PLURAL:$5|condizione|condizioni}} del limite de condizioni.",
+ "abusefilter-edit-new": "Filtro novo",
+ "abusefilter-edit-save": "Salva filtro",
+ "abusefilter-edit-id": "ID del filtro:",
+ "abusefilter-edit-description": "Descrission:\n:''(visibile publicamente)''",
+ "abusefilter-edit-field-description": "descrision",
+ "abusefilter-edit-flags": "Flag:",
+ "abusefilter-edit-enabled": "Intaca sto filtro",
+ "abusefilter-edit-deleted": "Segna come scancelà",
+ "abusefilter-edit-hidden": "Scondi i detagli de sto filtro da la vista pùblica",
+ "abusefilter-edit-global": "Àplica sto filtro globalmente",
+ "abusefilter-edit-rules": "Condission:",
+ "abusefilter-edit-field-conditions": "condisioni",
+ "abusefilter-edit-notes": "Note:\n:''(private)''",
+ "abusefilter-edit-lastmod": "Filtro modifegà l'ultima olta:",
+ "abusefilter-edit-lastmod-text": "$1 da $2",
+ "abusefilter-edit-hitcount": "Corespondense par el filtro:",
+ "abusefilter-edit-consequences": "Azioni in caso de corispondensa",
+ "abusefilter-edit-action-warn": "Ativa le seguenti azion dopo aver avisà l'utente",
+ "abusefilter-edit-action-disallow": "Fèrma l'utente prima che el cònpia l'azion in question",
+ "abusefilter-edit-action-blockautopromote": "Revoca a l'utente el stato de autoconfermà",
+ "abusefilter-edit-action-degroup": "Cava l'utente da tuti quanti i grupi con privilegi",
+ "abusefilter-edit-action-block": "Inpedìssighe le modifiche a l'utensa e/o a l'indirisso IP",
+ "abusefilter-edit-action-throttle": "Ativa le azion solo se l'utente supera un limite predeterminà",
+ "abusefilter-edit-action-rangeblock": "Bloca l'intervalo /16 da cui vien l'utente",
+ "abusefilter-edit-action-tag": "Segna la modifica par na verifica ulteriore",
+ "abusefilter-edit-throttle-count": "Nùmaro de azioni de permétar:",
+ "abusefilter-edit-throttle-period": "Perìodo de tenpo:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|secondo|secondi}}",
+ "abusefilter-edit-throttle-groups": "Criteri de ragruppamento par el ritardo:\n:''(uno par riga opure unìi da virgole)''",
+ "abusefilter-edit-warn-message": "Messajo de sistema da doparar come avertimento:",
+ "abusefilter-edit-warn-other": "Altro messajo",
+ "abusefilter-edit-warn-other-label": "Nome de la pagina par l'altro messajo:\n:''(sensa el prefisso MediaWiki)''",
+ "abusefilter-edit-warn-actions": "Azioni:",
+ "abusefilter-edit-warn-preview": "Anteprima del messajo selessionà",
+ "abusefilter-edit-warn-edit": "Crèa/Modìfega el messajo selessionà",
+ "abusefilter-edit-tag-tag": "Tag da aplicar (uno par riga):",
+ "abusefilter-edit-denied": "No te podi védar i detagli de sto filtro, parché i xe sconti al pùblico.",
+ "abusefilter-edit-main": "Parametri del filtro",
+ "abusefilter-edit-done-subtitle": "Filtro modifegà",
+ "abusefilter-edit-done": "Te ghè salvà i to canbiamenti al filtro $1.",
+ "abusefilter-edit-badsyntax": "Ghe xe un eròr de sintassi in tel filtro che te ghè specificà.\nDe seguito vien riportà l'output del parser: <pre>$1</pre>",
+ "abusefilter-edit-restricted": "No se pole modificare sto filtro in quanto el contien dele azioni riservà.\nChiedere a un utente abilità a l'inserimento de azioni riservà de fare la modifica.",
+ "abusefilter-edit-viewhistory": "Varda el storico de sto filtro",
+ "abusefilter-edit-history": "Storico:",
+ "abusefilter-edit-check": "Contròla la sintassi",
+ "abusefilter-edit-badfilter": "El filtro indicà no l'esiste",
+ "abusefilter-edit-revert": "Anula le azion fate da sto filtro",
+ "abusefilter-edit-tools": "Strumenti:",
+ "abusefilter-edit-test-link": "Pròa sto filtro co le ultime modifiche",
+ "abusefilter-edit-export": "Esporta sto filtro su n'altra wiki",
+ "abusefilter-edit-syntaxok": "Nissun eror de sintassi.",
+ "abusefilter-edit-syntaxerr": "Eror de sintassi: $1",
+ "abusefilter-edit-bad-tags": "Una eticheta specificà o più no la xe valida.\nLe etichete le gà da essere corte e no contegnere carateri speciali.",
+ "abusefilter-edit-notallowed": "No te ghè el parmesso de creare o modificare i filtri dei abusi",
+ "abusefilter-edit-builder-select": "Siegli na opzion par zontarla in te la posission del cursor",
+ "abusefilter-edit-builder-group-op-arithmetic": "Operadori aritmetici",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Soma (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Sotrassion (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Moltiplicassion (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Division (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Mòdulo (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Potensa (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Operadori de confronto",
+ "abusefilter-edit-builder-op-comparison-equal": "Preciso de (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Difarente de (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "Manco de (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Piassè de (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Manco o preciso de (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Piessè o preciso de (>=)",
+ "abusefilter-edit-builder-group-op-bool": "Operadori booleani",
+ "abusefilter-edit-builder-op-bool-not": "No (!)",
+ "abusefilter-edit-builder-op-bool-and": "E (&)",
+ "abusefilter-edit-builder-op-bool-or": "O (|)",
+ "abusefilter-edit-builder-group-misc": "Varie",
+ "abusefilter-edit-builder-misc-in": "contegnùo in te la stringa (in)",
+ "abusefilter-edit-builder-misc-like": "Coincìdelo con un pattern? (like)",
+ "abusefilter-edit-builder-misc-rlike": "Coincìdelo co' na regex? (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "Corisponde a regex, ignorando maiuscole/minuscole (irlike)",
+ "abusefilter-edit-builder-misc-contains": "La stringa de zanca la contien quela de destra (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "Stringa (\"\")",
+ "abusefilter-edit-builder-misc-tern": "Operador ternario (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "Condissional (if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "Funsioni",
+ "abusefilter-edit-builder-funcs-length": "Longhessa stringa (length)",
+ "abusefilter-edit-builder-funcs-lcase": "Convèrti in minuscolo (lcase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "Normalixa i caràteri che se pol confóndar (ccnorm)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "Cava caràteri dopi (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "Caràteri speciali su caràteri totali (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "Normalixa (norm)",
+ "abusefilter-edit-builder-funcs-count": "Nùmaro de ocorense de la stringa X in te la stringa Y (count)",
+ "abusefilter-edit-builder-funcs-rcount": "Nùmaro de ocorense de l'espression regolare X in te la stringa Y (rcount)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "Cava i spassi bianchi (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "Cava caràteri speciài (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "L'indirisso IP falo parte de l'intervalo? (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "Stringa de riserca par sotostringhe multiple (contains_any)",
+ "abusefilter-edit-builder-funcs-substr": "Sotostringa (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "Posission de la sotostringa drento la stringa (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "Rinpiassa sotostringa con stringa (str_replace)",
+ "abusefilter-edit-builder-funcs-set_var": "Inposta variabile (set_var)",
+ "abusefilter-edit-builder-group-vars": "Variabili",
+ "abusefilter-edit-builder-vars-accountname": "Nome de l'utensa (al momento de la creassion)",
+ "abusefilter-edit-builder-vars-timestamp": "Timestamp de modifica Unix",
+ "abusefilter-edit-builder-vars-action": "Azion",
+ "abusefilter-edit-builder-vars-addedlines": "Righe zontà da la modifica",
+ "abusefilter-edit-builder-vars-delta": "Canbiamento de dimension de la modifica",
+ "abusefilter-edit-builder-vars-diff": "Modifiche fate in formato unidiff",
+ "abusefilter-edit-builder-vars-newsize": "Nova dimension de la pàxena",
+ "abusefilter-edit-builder-vars-oldsize": "Vecia dimension de la pàxena",
+ "abusefilter-edit-builder-vars-removedlines": "Righe cavà da la modifica",
+ "abusefilter-edit-builder-vars-summary": "Ojeto/motivassion",
+ "abusefilter-edit-builder-vars-article-id": "ID de la pàxena",
+ "abusefilter-edit-builder-vars-article-ns": "Namespace de la pàxena",
+ "abusefilter-edit-builder-vars-article-text": "Tìtolo de la pàxena (sensa namespace)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Tìtolo de la pàxena par intiero",
+ "abusefilter-edit-builder-vars-movedfrom-id": "ID de la pagina origine del spostamento",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "Namespace de la pagina origine del spostamento",
+ "abusefilter-edit-builder-vars-movedfrom-text": "Titolo de la pagina origine del spostamento",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "Titolo conpleto de la pagina origine del spostamento",
+ "abusefilter-edit-builder-vars-movedto-id": "ID de la pagina destinassion del spostamento",
+ "abusefilter-edit-builder-vars-movedto-ns": "Namespace de la pagina destinassion del spostamento",
+ "abusefilter-edit-builder-vars-movedto-text": "Titolo de la pagina destinassion del spostamento",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "Titolo conpleto de la pagina destinassion del spostamento",
+ "abusefilter-edit-builder-vars-user-editcount": "Conta dei contributi de l'utente",
+ "abusefilter-edit-builder-vars-user-age": "Età de l'account utente",
+ "abusefilter-edit-builder-vars-user-name": "Nome utente",
+ "abusefilter-edit-builder-vars-user-groups": "Grupi de cui l'utente el fa parte (anca inplisitamente)",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "Data e ora de conferma de l'indirisso e-mail",
+ "abusefilter-edit-builder-vars-recent-contributors": "Ultimi diese utenti che gà contribuìo a la pagina",
+ "abusefilter-edit-builder-vars-all-links": "Tuti i colegamenti esterni nel testo novo",
+ "abusefilter-edit-builder-vars-added-links": "Tuti i colegamenti esterni zontà da la modifica",
+ "abusefilter-edit-builder-vars-removed-links": "Tuti i colegamenti esterni cavà da la modifica",
+ "abusefilter-edit-builder-vars-old-text": "Testo sorxente vecio de la pàxena, prima de la modìfega",
+ "abusefilter-edit-builder-vars-new-text": "Testo sorxente novo de la pàxena, dopo de la modìfega",
+ "abusefilter-edit-builder-vars-new-text-stripped": "Testo novo de la pagina, cavando tuto el markup",
+ "abusefilter-edit-builder-vars-new-html": "Sorxente HTML elaborà de la version nova",
+ "abusefilter-edit-builder-vars-restrictions-edit": "Livèl de protession de la pagina par le modifiche",
+ "abusefilter-edit-builder-vars-restrictions-move": "Livèl de protession de la pagina par i spostamenti",
+ "abusefilter-edit-builder-vars-old-text-stripped": "Testo vecio de la pagina, cavando tuto el markup",
+ "abusefilter-edit-builder-vars-old-links": "Colegamenti in te la pagina, prima de la modifica",
+ "abusefilter-edit-builder-vars-old-html": "Testo sorxente vecio de la pàxena, formatà in HTML",
+ "abusefilter-edit-builder-vars-minor-edit": "Dise se la modifica la xe picenina o no",
+ "abusefilter-edit-builder-vars-file-sha1": "Hash SHA1 del contenuto del file",
+ "abusefilter-filter-log": "Ultimi canbiamenti ai filtri",
+ "abusefilter-history": "Cronologia de le modifiche al Filtro Abusi n° $1",
+ "abusefilter-history-foruser": "Canbiamenti de $1",
+ "abusefilter-history-hidden": "sconto",
+ "abusefilter-history-enabled": "Intacà",
+ "abusefilter-history-global": "Globale",
+ "abusefilter-history-timestamp": "Data e ora",
+ "abusefilter-history-user": "Utente",
+ "abusefilter-history-public": "Descrission pùblica del filtro",
+ "abusefilter-history-flags": "Flag",
+ "abusefilter-history-filter": "Règola del filtro",
+ "abusefilter-history-comments": "Comenti",
+ "abusefilter-history-actions": "Azioni",
+ "abusefilter-history-backedit": "Torna indrìo a la modìfega del filtro",
+ "abusefilter-history-deleted": "Scancelà",
+ "abusefilter-history-filterid": "Filtro",
+ "abusefilter-history-select-legend": "Restrénzi la riserca",
+ "abusefilter-history-select-user": "Utente:",
+ "abusefilter-history-select-submit": "Restrénzi",
+ "abusefilter-history-diff": "Modìfeghe",
+ "abusefilter-history-error-hidden": "El filtro domandà el xe sconto, no se pol mia védar la so cronologia.",
+ "abusefilter-exception-unexpectedatend": "\"$2\" mia previsto al caratere $1.",
+ "abusefilter-exception-expectednotfound": "Al caratere $1 xe stà catà $3 $4 inveze de $2.",
+ "abusefilter-exception-unrecognisedkeyword": "Parola ciave $2 sconossiùa al caratere $1.",
+ "abusefilter-exception-unexpectedtoken": "Token inaspetà \"$3\" (de tipo $2) in corispondensa del caràtere $1.",
+ "abusefilter-exception-unclosedstring": "Stringa mia sarà a partir dal caràtere $1.",
+ "abusefilter-exception-invalidoperator": "Operador \"$2\" mia valido al caratere $1.",
+ "abusefilter-exception-unrecognisedtoken": "Token mia riconossù \"$2\" in corispondensa del caràtere $1.",
+ "abusefilter-exception-noparams": "Paràmetri mancanti par la funsion \"$2\" in corispondensa del caràtere $1.",
+ "abusefilter-exception-dividebyzero": "Tentativo de divìdar $2 par xero al caràtere $1.",
+ "abusefilter-exception-unrecognisedvar": "Variàbile $2 mia riconossùa al caràtere $1.",
+ "abusefilter-exception-notenoughargs": "No vien passà argomenti in bisogno a la funsion $2 ciamà al caràtere $1.\nLa se speta $3 {{PLURAL:$3|argomento|argumenti}}, ghe ne riva xo $4.",
+ "abusefilter-exception-regexfailure": "Eròr al caràtere $1 de l'espression regolare \"$3\": \"$2\"",
+ "abusefilter-exception-overridebuiltin": "Overriding mia valido de la variàbile built-in \"$2\" al caràtere $1.",
+ "abusefilter-exception-outofbounds": "Richiesta de voce inesistente de l'elenco $2 (dimension lista = $3) al caratere $1.",
+ "abusefilter-exception-notlist": "Richiesta de un elemento de array da un non array al caratere $1.",
+ "abusefilter-action-tag": "Tag",
+ "abusefilter-action-throttle": "Ralenta",
+ "abusefilter-action-warn": "Avisa",
+ "abusefilter-action-blockautopromote": "Bloca autopromòvi",
+ "abusefilter-action-block": "Bloca",
+ "abusefilter-action-degroup": "Cava dai grupi",
+ "abusefilter-action-rangeblock": "Bloca intervalo",
+ "abusefilter-action-disallow": "Inpedissi",
+ "abusefilter-revert-title": "Tira indrìo tute le modìfeghe fate dal filtro $1",
+ "abusefilter-revert-intro": "Sto modulo el consente de anulare tute le modifiche fate dal filtro anti abusi $1.\nDòpara sto strumento con particolare atension.",
+ "abusefilter-revert-preview-item": "$1: $2 el gà fato $3 su $4.\nAzion da anular: $5 ($6)",
+ "abusefilter-revert-search-legend": "Selessiona le azion del filtro abusi da anular",
+ "abusefilter-revert-periodstart": "Inissio periodo:",
+ "abusefilter-revert-periodend": "Fine periodo:",
+ "abusefilter-revert-search": "Selessiona azioni",
+ "abusefilter-revert-filter": "Filtro:",
+ "abusefilter-revert-preview-intro": "Qua ghe xe le azion fate dal filtro anti abusi che vegnarà anulà da st'azion.\nVerifica con cura e struca su \"Conferma\" par confermare la selession.",
+ "abusefilter-revert-confirm": "Conferma",
+ "abusefilter-revert-success": "Te ghè anulà tute le azion fate dal [[Special:AbuseFilter/$1|filtro anti abusi $2]].",
+ "abusefilter-revert-reason": "Anulamento automatico de tute le azion fate dal filtro anti abusi $1.\nMotivo indicà: $2",
+ "abusefilter-revert-reasonfield": "Motivassion de l'anulamento:",
+ "abusefilter-test": "Verifica un filtro confrontandolo co le modifiche precedenti",
+ "abusefilter-test-intro": "Sta pagina la consente de verificare el filtro indicà nella casella in basso nei confronti de {{PLURAL:$1|l'ultima modifica|le ultime $1 modifiche}}.\nPar caricare un filtro esistente, digita el relativo identificator ne la casèla soto la casèla de testo e struca \"Carica\".",
+ "abusefilter-test-legend": "Verifica dei filtri",
+ "abusefilter-test-load-filter": "Carga el filtro con ID:",
+ "abusefilter-test-submit": "Verifica",
+ "abusefilter-test-load": "Carga",
+ "abusefilter-test-user": "Canbiamenti fati da l'utente:",
+ "abusefilter-test-period-start": "Canbiamenti fati dopo el:",
+ "abusefilter-test-period-end": "Canbiamenti fati prima del:",
+ "abusefilter-test-page": "Canbiamenti fati a la pagina:",
+ "abusefilter-test-shownegative": "Fà védar le modifiche che no corisponde al filtro",
+ "abusefilter-test-syntaxerr": "El filtro inserìo el gà un eror de sintassi.\nStruca su \"Verifica sintassi\" par la spiegassion conpleta.",
+ "abusefilter-changeslist-examine": "esàmina",
+ "abusefilter-examine": "Esàmina i singoli canbiamenti",
+ "abusefilter-examine-intro": "Sta pagina la consente de esaminare le variabili generà dal filtro anti abusi par na particolare modifica, e de proar el funsionamento dei filtri su de essa.",
+ "abusefilter-examine-legend": "Selessiona canbiamenti",
+ "abusefilter-examine-diff": "URL de le difarense:",
+ "abusefilter-examine-user": "Utente:",
+ "abusefilter-examine-title": "Titolo de la pàxena:",
+ "abusefilter-examine-submit": "Serca",
+ "abusefilter-examine-vars": "Variabili generà da sta modifica",
+ "abusefilter-examine-test": "Verifica sta modifica in funsion de un filtro",
+ "abusefilter-examine-test-button": "Próa filtro",
+ "abusefilter-examine-match": "El filtro el xe stà ativà da sta modifica.",
+ "abusefilter-examine-nomatch": "El filtro no el xe stà ativà da sta modifica.",
+ "abusefilter-examine-syntaxerror": "El filtro el gà na sintassi mia valida",
+ "abusefilter-examine-notfound": "No se riesse a catar la modifica che te ghè richiesto.",
+ "abusefilter-examine-incompatible": "La modifica richiesta no la xe suportada dal filtro abusi.",
+ "abusefilter-examine-noresults": "No xe vegnù fora nissun risultato par i parametri de riserca indicà da ti.",
+ "abusefilter-topnav": "'''Navigassion filtro anti abusi'''",
+ "abusefilter-topnav-home": "Inissio",
+ "abusefilter-topnav-test": "Verifica in batch",
+ "abusefilter-topnav-examine": "Esàmina le modifiche vèce",
+ "abusefilter-topnav-log": "Registro dei abusi",
+ "abusefilter-topnav-tools": "Strumenti de debug",
+ "abusefilter-topnav-import": "Inporta filtro",
+ "abusefilter-log-name": "Registro del filtro abusi",
+ "abusefilter-log-header": "El registro el mostra un riassunto de le modifiche fate sui filtri.\nPar i detagli completi, varda [[Special:AbuseFilter/history|l'elenco]] de le modifiche pi recenti ai filtri.",
+ "abusefilter-diff-title": "Difarense tra le version",
+ "abusefilter-diff-item": "Elemento",
+ "abusefilter-diff-version": "Version del $1, fata da $2",
+ "abusefilter-diff-info": "Informassion de base",
+ "abusefilter-diff-pattern": "Condission dei filtri",
+ "abusefilter-diff-invalid": "No se riesse a cargar le version che ti gà domandà",
+ "abusefilter-diff-backhistory": "Torna indrìo a la storia del filtro",
+ "abusefilter-import-intro": "Te poli doparar sta interfaccia par importare filtri da altri siti wiki.\nSul sito wiki d'origine, struca \"{{int:abusefilter-edit-export}}\" soto \"{{int:abusefilter-edit-tools}}\" ne l'interfacia de modifica.\nCopia da la casèla che apare e copia in sta casèla qua, quindi struca \"{{int:abusefilter-import-submit}}\".",
+ "abusefilter-import-submit": "Inporta dati"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/vep.json b/www/wiki/extensions/AbuseFilter/i18n/vep.json
new file mode 100644
index 00000000..f9238e0d
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/vep.json
@@ -0,0 +1,85 @@
+{
+ "@metadata": {
+ "authors": [
+ "Игорь Бродский"
+ ]
+ },
+ "abusefilter-log-search-user": "Kävutai:",
+ "abusefilter-log-search-title": "Pälkirjutez:",
+ "abusefilter-log-search-submit": "Ectä",
+ "abusefilter-log-detailedentry-local": "fil'tr $1",
+ "abusefilter-log-detailslink": "detalid",
+ "abusefilter-log-noactions": "Ei ole",
+ "abusefilter-list": "Kaik fil'trad",
+ "abusefilter-list-status": "Status",
+ "abusefilter-list-edit": "Redaktiruida",
+ "abusefilter-list-details": "Detalid",
+ "abusefilter-deleted": "Heittud",
+ "abusefilter-list-options": "Opcijad:",
+ "abusefilter-list-options-submit": "Udištada",
+ "abusefilter-tools-reautoconfirm-user": "Kävutai:",
+ "abusefilter-edit-new": "Uz' fil'tr",
+ "abusefilter-edit-id": "Fil'tran ID:",
+ "abusefilter-edit-flags": "Flagad:",
+ "abusefilter-edit-rules": "Arvoimižed:",
+ "abusefilter-edit-throttle-period": "Aiganpord:",
+ "abusefilter-edit-warn-other": "Toine tedotuz",
+ "abusefilter-edit-warn-actions": "Tegendad:",
+ "abusefilter-edit-history": "Istorii:",
+ "abusefilter-edit-check": "Kodvda sintaksis",
+ "abusefilter-edit-tools": "Azeged:",
+ "abusefilter-edit-syntaxerr": "Sintaksine petuz om löutud: $1",
+ "abusefilter-edit-builder-group-op-arithmetic": "Arifmetižed operatorad",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Ližaduz (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Vähenduz (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Äikerdoičend (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Jagamine (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Modul' (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Märpordaz (**)",
+ "abusefilter-edit-builder-op-comparison-lt": "Vähemb mi (<)",
+ "abusefilter-edit-builder-op-bool-not": "Ei (!)",
+ "abusefilter-edit-builder-op-bool-and": "Da (&)",
+ "abusefilter-edit-builder-op-bool-or": "Vai (|)",
+ "abusefilter-edit-builder-group-funcs": "Funkcijad",
+ "abusefilter-edit-builder-funcs-norm": "Normaliziruida (norm)",
+ "abusefilter-edit-builder-vars-action": "Tegend",
+ "abusefilter-edit-builder-vars-newsize": "Uz' lehtpolen suruz",
+ "abusefilter-edit-builder-vars-oldsize": "Edeline lehtpolen suruz",
+ "abusefilter-edit-builder-vars-article-id": "Lehtpolen ID",
+ "abusefilter-history-hidden": "Peittud",
+ "abusefilter-history-enabled": "Kävutamas",
+ "abusefilter-history-global": "Globaline",
+ "abusefilter-history-timestamp": "Aig",
+ "abusefilter-history-user": "Kävutai",
+ "abusefilter-history-flags": "Flagad",
+ "abusefilter-history-filter": "Fil'tran käskuz",
+ "abusefilter-history-comments": "Kommentarijad",
+ "abusefilter-history-actions": "Tegendad",
+ "abusefilter-history-deleted": "Čutud poiš",
+ "abusefilter-history-filterid": "Fil'tr",
+ "abusefilter-history-select-user": "Kävutai:",
+ "abusefilter-history-diff": "Toižetused",
+ "abusefilter-action-tag": "Panda virg",
+ "abusefilter-action-warn": "Varutada",
+ "abusefilter-action-block": "Blokiruida",
+ "abusefilter-revert-periodstart": "Pordonaugotiž:",
+ "abusefilter-revert-periodend": "Pordonlop:",
+ "abusefilter-revert-search": "Valiče tegendad",
+ "abusefilter-revert-filter": "Fil'tr:",
+ "abusefilter-revert-confirm": "Vahvištoitta",
+ "abusefilter-test-legend": "Fil'tran kodvind",
+ "abusefilter-test-submit": "Kodvda",
+ "abusefilter-test-load": "Jügutoitta",
+ "abusefilter-changeslist-examine": "kacuhtada",
+ "abusefilter-examine-legend": "Valiče toižetused",
+ "abusefilter-examine-user": "Kävutai:",
+ "abusefilter-examine-title": "Lehtpolen nimi:",
+ "abusefilter-examine-submit": "Ectä",
+ "abusefilter-examine-test-button": "Kodvda fil'tr",
+ "abusefilter-topnav-home": "Pälehtpolele",
+ "abusefilter-topnav-import": "Fil'tran import",
+ "abusefilter-diff-title": "Erod versijoiden keskes",
+ "abusefilter-diff-item": "Element",
+ "abusefilter-diff-info": "Päinformacii",
+ "abusefilter-import-submit": "Importiruida andmused"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/vi.json b/www/wiki/extensions/AbuseFilter/i18n/vi.json
new file mode 100644
index 00000000..5c9ea676
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/vi.json
@@ -0,0 +1,449 @@
+{
+ "@metadata": {
+ "authors": [
+ "Baonguyen21022003",
+ "Minh Nguyen",
+ "Vinhtantran",
+ "Withoutaname",
+ "Dinhxuanduyet",
+ "Trần Nguyễn Minh Huy",
+ "Matma Rex"
+ ]
+ },
+ "abusefilter-desc": "Áp dụng heuristic tự động vào các sửa đổi",
+ "abusefilter": "Thiết lập bộ lọc sai phạm",
+ "abuselog": "Nhật trình sai phạm",
+ "abusefilter-intro": "Hoan nghênh bạn đã và trang quản lý Bộ lọc sai phạm.\nBộ lọc sai phạm là chức năng phần mềm để tự động xử lý các tác vụ trang theo điều kiện.\nTrang này có danh sách bộ lọc định trước để cấu hình.",
+ "abusefilter-mustbeeditor": "Vì lý do an toàn, cần có quyền sửa đổi bộ lọc sai phạm để sử dụng trang này.",
+ "abusefilter-warning": "'''Cảnh báo''': Tác vụ này đã được tự động xác định là nguy hại.\nNhững tác vụ không có tính xây dựng sẽ nhanh chóng bị hồi lại,\nvà sửa đổi không có tính xây dựng xảy ra thường xuyên và liên tục sẽ dẫn đến việc cấm tài khoản hoặc địa chỉ IP của bạn.\nNếu bạn tin rằng tác vụ này là có tính xây dựng, bạn có thể lưu trang một lần nữa để xác nhận điều đó.\nMiêu tả ngắn về quy định nguy hại mà tác vụ của bạn gặp phải là: $1",
+ "abusefilter-disallowed": "Tác vụ này đã được tự động xác định là nguy hại,\nvà do đó không được phép thực hiện.\nNếu bạn tin rằng tác vụ của bạn là có tính xây dựng, xin hãy liên hệ với một bảo quản viên, và thông báo cho họ về những điều bạn đang cố gắng làm.\nMiêu tả ngắn về quy định nguy hại mà tác vụ của bạn gặp phải là: $1",
+ "abusefilter-blocked-display": "Tác vụ này đã được tự động xác định là nguy hại,\nvà bị ngăn không cho bạn thực hiện nó.\nNgoài ra, để bảo vệ {{PAGENAME}}, tài khoản cá nhân của bạn và tất cả các địa chỉ IP đi cùng với nó đã bị cấm sửa đổi.\nNếu điều này xảy ra do nhầm lẫn, xin hãy liên hệ với một bảo quản viên.\nMiêu tả ngắn về quy định nguy hại mà tác vụ của bạn gặp phải là: $1",
+ "abusefilter-degrouped": "Tác vụ này đã được tự động xác định là nguy hại.\nDo đó, bạn không được phép thực hiện; vì tài khoản của bạn bị nghi là bị đánh cắp, tất cả các quyền đã bị thu hồi.\nNếu bạn tin rằng điều này xảy ra do nhầm lẫn, xin hãy liên hệ với một hành chính viên cùng với lời giải thích cho tác vụ của mình, quyền của bạn có thể được phục hồi.\nMiêu tả ngắn về quy định nguy hại mà tác vụ của bạn gặp phải là: $1",
+ "abusefilter-autopromote-blocked": "Tác vụ này đã được tự động xác định là nguy hại, và bạn không được phép thực hiện nó.\nNgoài ra, để bảo đảm an toàn, một số quyền thường có của tài khoản hoàn chỉnh đã tạm thời gỡ bỏ ra khỏi tài khoản của bạn.\nMiêu tả ngắn về quy định nguy hại mà tác vụ của bạn gặp phải là: $1",
+ "abusefilter-blocker": "Bộ lọc sai phạm",
+ "abusefilter-blockreason": "Bị bộ lọc sai phạm tự động cấm. Mô tả về quy định liên quan: $1",
+ "abusefilter-degroupreason": "Quyền hạn đã bị bộ lọc sai phạm tự động tước bỏ. Mô tả quy định: $1",
+ "abusefilter-accountreserved": "Tên tài khoản này được bộ lọc sai phạm bảo lưu để sử dụng.",
+ "right-abusefilter-modify": "Sửa đổi bộ lọc sai phạm",
+ "right-abusefilter-view": "Xem bộ lọc sai phạm",
+ "right-abusefilter-log": "Xem nhật trình sai phạm",
+ "right-abusefilter-log-detail": "Xem chi tiết các mục nhật trình sai phạm",
+ "right-abusefilter-private": "Xem dữ liệu riêng tư trong nhật trình sai phạm",
+ "right-abusefilter-modify-restricted": "Sửa đổi bộ lọc sai phạm có hành vi bị hạn chế",
+ "right-abusefilter-revert": "Hồi lại tất cả thay đổi theo một bộ lọc vi phạm cho trước",
+ "right-abusefilter-view-private": "Xem những bộ lọc phá hoại được đánh dấu riêng tư",
+ "right-abusefilter-log-private": "Xem mục nhật trình của các bộ lọc sai phạm riêng",
+ "right-abusefilter-hide-log": "Ẩn mục trong nhật trình sai phạm",
+ "right-abusefilter-hidden-log": "Xem các mục trong nhật trình sai phạm",
+ "right-abusefilter-modify-global": "tạo hoặc thay đổi bộ lọc sai phạm toàn cầu",
+ "action-abusefilter-modify": "sửa đổi bộ lọc sai phạm",
+ "action-abusefilter-view": "xem bộ lọc sai phạm",
+ "action-abusefilter-log": "xem nhật trình sai phạm",
+ "action-abusefilter-log-detail": "xem các chi tiết của nhật trình sai phạm",
+ "action-abusefilter-private": "xem dữ liệu cá nhân trong nhật trình sai phạm",
+ "action-abusefilter-modify-restricted": "sửa đổi bộ lọc sai phạm có hành vi bị hạn chế",
+ "action-abusefilter-revert": "lùi sửa thay đổi dùng bộ lọc sai phạm",
+ "action-abusefilter-view-private": "xem bộ lọc phá hoại được đánh dấu riêng tư",
+ "action-abusefilter-log-private": "xem mục nhật trình của các bộ lọc sai phạm riêng",
+ "abusefilter-log": "Nhật trình bộ lọc sai phạm",
+ "abusefilter-log-summary": "Nhật trình này liệt kê các tác vụ gây ra bộ lọc.",
+ "abusefilter-log-search": "Tìm trong nhật trình sai phạm",
+ "abusefilter-log-search-user": "Người dùng:",
+ "abusefilter-log-search-filter": "Số bộ lọc (phân cách bằng dấu sổ thẳng):",
+ "abusefilter-log-search-title": "Tựa đề:",
+ "abusefilter-log-search-wiki": "Wiki:",
+ "abusefilter-log-search-entries-label": "Mức độ truy cập:",
+ "abusefilter-log-search-entries-all": "Tất cả các mục",
+ "abusefilter-log-search-entries-hidden": "Chỉ mục ẩn",
+ "abusefilter-log-search-entries-visible": "Chỉ mục xem được",
+ "abusefilter-log-search-submit": "Tìm kiếm",
+ "abusefilter-log-entry": "$1: $2 đã kích hoạt bộ lọc sai phạm, {{GENDER:$8}}thực hiện tác động “$3” vào lúc $4. Tác vụ diễn ra: $5; Miêu tả bộ lọc: $6",
+ "abusefilter-log-entry-withdiff": "$1: $2 đã kích hoạt bộ lọc sai phạm, {{GENDER:$8}}thực hiện tác động “$3” vào lúc $4.\nTác vụ diễn ra: $5;\nMiêu tả bộ lọc: $6 ($7)",
+ "abusefilter-log-detailedentry-meta": "$1: $2 đã kích hoạt $3, {{GENDER:$9}}thực hiện tác vụ “$4” trên $5.\nTác vụ thực hiện: $6;\nMô tả bộ lọc: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "bộ lọc toàn cầu $1",
+ "abusefilter-log-detailedentry-local": "bộ lọc $1",
+ "abusefilter-log-detailslink": "chi tiết",
+ "abusefilter-log-diff": "khác",
+ "abusefilter-log-hidelink": "hiện/ẩn",
+ "abusefilter-log-details-legend": "Chi tiết cho mục nhật trình $1",
+ "abusefilter-log-details-var": "Biến",
+ "abusefilter-log-details-val": "Giá trị",
+ "abusefilter-log-details-vars": "Tham số tác vụ",
+ "abusefilter-log-details-private": "Dữ liệu riêng tư",
+ "abusefilter-log-details-ip": "Địa chỉ IP gốc",
+ "abusefilter-log-noactions": "không",
+ "abusefilter-log-details-diff": "Các thay đổi trong phiên sửa đổi",
+ "abusefilter-log-linkoncontribs": "nhật trình sai phạm",
+ "abusefilter-log-linkoncontribs-text": "Nhật trình sai phạm của {{GENDER:$1}}người dùng",
+ "abusefilter-log-hidden": "(mục ẩn)",
+ "abusefilter-log-hidden-implicit": "(ẩn vì phiên bản đã bị xóa)",
+ "abusefilter-log-cannot-see-details": "Bạn không có quyền xem chi tiết của mục này.",
+ "abusefilter-log-nonexistent": "Không có mục với ID được cung cấp.",
+ "abusefilter-log-details-hidden": "Bạn không có quyền xem chi tiết mục ẩn này.",
+ "abusefilter-log-private-not-included": "Bạn đã định rõ số bộ lọc riêng tư. Vì bạn không có quyền xem các chi tiết của bộ lọc riêng tư, những kết quả riêng tư nào đó sẽ không được hiển thị.",
+ "abusefilter-log-hide-legend": "Ẩn mục nhật trình",
+ "abusefilter-log-hide-id": "ID của mục nhật trình:",
+ "abusefilter-log-hide-hidden": "Ẩn mục này khỏi công cộng",
+ "abusefilter-log-hide-reason": "Lý do:",
+ "abusefilter-log-hide-forbidden": "Bạn không có quyền ẩn mục trong nhật trình sai phạm.",
+ "abusefilter-logentry-suppress": "đã ẩn “[[$1]]”",
+ "abusefilter-logentry-unsuppress": "đã hiển thị lại [[$1]]",
+ "logentry-abusefilter-hit": "$1 {{GENDER:$2}}gây $4 khi thực hiện tác vụ “$5” tại $3, bộ lọc gây ra các tác vụ: $6 ($7)",
+ "abusefilter-management": "Quản lý bộ lọc sai phạm",
+ "abusefilter-list": "Các bộ lọc",
+ "abusefilter-list-id": "ID bộ lọc",
+ "abusefilter-list-status": "Trạng thái",
+ "abusefilter-list-public": "Mô tả công khai",
+ "abusefilter-list-consequences": "Hậu quả",
+ "abusefilter-list-visibility": "Mức hiển thị",
+ "abusefilter-list-hitcount": "Đếm số lần gặp phải",
+ "abusefilter-list-edit": "Sửa đổi",
+ "abusefilter-list-details": "Chi tiết",
+ "abusefilter-list-limit": "Số lượng trên mỗi trang:",
+ "abusefilter-list-lastmodified": "Chỉnh sửa lần cuối",
+ "abusefilter-list-group": "Nhóm bô lọc",
+ "abusefilter-hidden": "Riêng tư",
+ "abusefilter-unhidden": "Công khai",
+ "abusefilter-enabled": "Kích hoạt",
+ "abusefilter-deleted": "Đã xóa",
+ "abusefilter-disabled": "Tắt kích hoạt",
+ "abusefilter-hitcount": "$1 lần gặp",
+ "abusefilter-new": "Tạo bộ lọc mới",
+ "abusefilter-return": "Trở lại quản lý bộ lọc",
+ "abusefilter-status-global": "Toàn bộ",
+ "abusefilter-list-options": "Tùy chọn",
+ "abusefilter-list-options-deleted": "Bộ lọc đã xóa:",
+ "abusefilter-list-options-deleted-only": "Chỉ hiển thị bộ lọc đã xóa",
+ "abusefilter-list-options-deleted-hide": "Ẩn bộ lọc đã xóa",
+ "abusefilter-list-options-deleted-show": "Hiện cả bộ lọc đã xóa",
+ "abusefilter-list-options-scope": "Hiện các bộ lọc:",
+ "abusefilter-list-options-scope-local": "Chỉ các quy định địa phương",
+ "abusefilter-list-options-scope-global": "Chỉ các quy định toàn cục",
+ "abusefilter-list-options-scope-all": "Quy tắc địa phương và toàn cục",
+ "abusefilter-list-options-disabled": "Bộ lọc đã tắt:",
+ "abusefilter-list-options-hidedisabled": "Ẩn bộ lọc đã tắt",
+ "abusefilter-list-options-submit": "Cập nhật",
+ "abusefilter-tools-text": "Dưới đây là một số công cụ có thể hữu ích trong việc công thức hóa và gỡ rối các bộ lọc sai phạm.",
+ "abusefilter-tools-expr": "Bộ kiểm thử biểu thức",
+ "abusefilter-tools-submitexpr": "Tính",
+ "abusefilter-tools-reautoconfirm": "Phục hồi trạng thái tự xác nhận",
+ "abusefilter-tools-reautoconfirm-user": "Người dùng:",
+ "abusefilter-tools-reautoconfirm-submit": "Tự xác nhận lại",
+ "abusefilter-reautoconfirm-none": "Người dùng này chưa bị ngưng tình trạng tự xác nhận {{GENDER:$1|của anh ấy|của cô ấy|của họ}}.",
+ "abusefilter-reautoconfirm-notallowed": "Bạn không được phép phục hồi tình trạng tự xác nhận.",
+ "abusefilter-reautoconfirm-done": "Đã phục hồi trạng thái tự xác nhận của tài khoản",
+ "abusefilter-status": "Chỉ trong $1 tác vụ cuối, $2 ($3%) tác vụ đã đạt đến điều kiện giới hạn của $4. $5 ($6%) tác vụ đã trùng với một trong những bộ lọc hiện đang kích hoạt.",
+ "abusefilter-edit": "Sửa đổi bộ lọc sai phạm",
+ "abusefilter-edit-subtitle": "Sửa đổi bộ lọc $1",
+ "abusefilter-edit-subtitle-new": "Tạo bộ lọc",
+ "abusefilter-edit-oldwarning": "<strong>Bạn đang sửa một phiên bản cũ của bộ lọc này. Thống kê được trích ở trên là cho phiên bản mới nhất của bộ lọc. Nếu bạn lưu sửa đổi, bạn sẽ hi đè lên tất cả các thay đổi được thực hiện sau phiên bản mà bạn đang sửa.</strong> &bull; [[Special:AbuseFilter/history/$2|Trở lại lịch sử bộ lọc]]",
+ "abusefilter-edit-status-label": "Thống kê:",
+ "abusefilter-edit-status": "Trong số $1 tác vụ cuối cùng, bộ lọc này đã so trùng được $2 tác vụ ($3%).",
+ "abusefilter-edit-status-profile": "Trong vòng $1 {{PLURAL:$1|tác vụ|tác vụ}} cuối, bộ lọc này đã so trùng được $2 tác vụ ($3%).\nThời gian chạy trung bình là $4ms, và sử dụng $5 {{PLURAL:$5||}} điều kiện trong giới hạn các điều kiện.",
+ "abusefilter-edit-new": "Bộ lọc mới",
+ "abusefilter-edit-save": "Lưu bộ lọc",
+ "abusefilter-edit-id": "ID bộ lọc:",
+ "abusefilter-edit-description": "Mô tả:\n:''(xem được công khai)''",
+ "abusefilter-edit-group": "Nhóm bộ lọc:",
+ "abusefilter-edit-flags": "Cờ:",
+ "abusefilter-edit-enabled": "Kích hoạt bộ lọc này",
+ "abusefilter-edit-deleted": "Đánh dấu đã xóa",
+ "abusefilter-edit-hidden": "Ẩn các chi tiết của bộ lọc này ra khỏi công cộng",
+ "abusefilter-edit-global": "Bộ lọc toàn cầu",
+ "abusefilter-edit-rules": "Các điều kiện:",
+ "abusefilter-edit-notes": "Ghi chú:",
+ "abusefilter-edit-lastmod": "Bộ lọc được sửa cuối cùng:",
+ "abusefilter-edit-lastmod-text": "$1 bởi $2",
+ "abusefilter-edit-hitcount": "Số lần trúng bộ lọc:",
+ "abusefilter-edit-consequences": "Tác vụ thực hiện nếu trùng",
+ "abusefilter-edit-action-warn": "Kích hoạt những tác vụ này sau khi đưa ra cảnh cáo cho người dùng",
+ "abusefilter-edit-action-disallow": "Ngăn người dùng thực hiện tác vụ nghi ngờ",
+ "abusefilter-edit-action-blockautopromote": "Tước trạng thái tự xác nhận của người dùng",
+ "abusefilter-edit-action-degroup": "Xóa người dùng ra khỏi tất cả các nhóm có quyền hạn",
+ "abusefilter-edit-action-block": "Cấm người dùng và/hoặc địa chỉ IP không được sửa đổi",
+ "abusefilter-edit-action-throttle": "Chỉ kích hoạt tác vụ nếu người dùng vượt một giới hạn tỷ lệ",
+ "abusefilter-edit-action-rangeblock": "Cấm dải /16 từ IP gốc của người dùng.",
+ "abusefilter-edit-action-tag": "Đánh dấu sửa đổi này để xem xét về sau.",
+ "abusefilter-edit-throttle-count": "Số tác vụ cho phép:",
+ "abusefilter-edit-throttle-period": "Thời gian:",
+ "abusefilter-edit-throttle-seconds": "$1 giây",
+ "abusefilter-edit-throttle-groups": "Chặn nhóm theo:\n:''(mỗi nhóm 1 dòng, kết hợp với dấu phẩy)''",
+ "abusefilter-edit-warn-message": "Thông báo hệ thống dùng để cảnh báo:",
+ "abusefilter-edit-warn-other": "Thông điệp khác",
+ "abusefilter-edit-warn-other-label": "Tên trang của thông điệp khác:\n:''(không có tiền tố MediaWiki)''",
+ "abusefilter-edit-warn-actions": "Tác vụ:",
+ "abusefilter-edit-warn-preview": "Xem trước thông điệp được chọn",
+ "abusefilter-edit-warn-edit": "Tạo/Sửa thông điệp được chọn",
+ "abusefilter-edit-tag-tag": "[[Special:Tags|Các thẻ]] để áp dụng (mỗi thẻ một dòng):",
+ "abusefilter-edit-denied": "Bạn không có quyền xem thông tin chi tiết của bộ lọc này, bởi vì nó được ẩn khỏi công chúng.",
+ "abusefilter-edit-main": "Tham số bộ lọc",
+ "abusefilter-edit-done-subtitle": "Bộ lọc được sửa",
+ "abusefilter-edit-done": "[[Special:AbuseFilter/history/$1/diff/prev/$2|Các thay đổi]] đến [[Special:AbuseFilter/$1|bộ lọc $3]] đã được lưu.",
+ "abusefilter-edit-badsyntax": "Có lỗi cú pháp trong bộ lọc bạn chỉ định. Đầu ra của bộ phân tích cú pháp là: <pre>$1</pre>",
+ "abusefilter-edit-restricted": "Bạn không thể sửa đổi bộ lọc này, vì nó có chứa một hoặc nhiều tác vụ bị hạn chế.\nXin hãy yêu cầu một thành viên có quyền thêm các tác vụ hạn chế để thực hiện thay đổi cho bạn.",
+ "abusefilter-edit-viewhistory": "Xem lịch sử bộ lọc",
+ "abusefilter-edit-history": "Lịch sử:",
+ "abusefilter-edit-check": "Kiểm tra cú pháp",
+ "abusefilter-edit-badfilter": "Bộ lọc bạn chỉ định không tồn tại",
+ "abusefilter-edit-revert": "Hồi lại các tác vụ do bộ lọc thực hiện",
+ "abusefilter-edit-tools": "Công cụ:",
+ "abusefilter-edit-test-link": "Kiểm thử bộ lọc này với các thay đổi gần đây",
+ "abusefilter-edit-export": "Xuất bộ lọc này ra wiki khác",
+ "abusefilter-edit-syntaxok": "Không tìm thấy lỗi cú pháp.",
+ "abusefilter-edit-syntaxerr": "Có lỗi cú pháp: $1",
+ "abusefilter-edit-bad-tags": "Một hoặc một số thẻ bạn chỉ định không hợp lệ.\nThẻ phải ngắn, chúng không nên chứa các ký tự đặc biệt, và không nên chọn thẻ đã được hệ thống bảo lưu. Xin hãy chọn tên thẻ mới.",
+ "abusefilter-edit-notallowed": "Bạn không được phép tạo hay sửa đổi bộ lọc sai phạm.",
+ "abusefilter-edit-notallowed-global": "Bạn không được phép tạo hay sửa đổi bộ lọc sai phạm toàn cầu.",
+ "abusefilter-edit-notallowed-global-custom-msg": "Bộ lọc toàn cầu không hỗ trợ thông điệp cảnh báo tùy biến",
+ "abusefilter-edit-builder-select": "Lựa một tùy chọn để thêm nó vào con trỏ",
+ "abusefilter-edit-builder-group-op-arithmetic": "Toán tử số học",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Phép cộng (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Phép trừ (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Phép nhân (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Phép chia (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Môđulô (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Lũy thừa (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Toán tử so sánh",
+ "abusefilter-edit-builder-op-comparison-equal": "Bằng (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Không bằng (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "Ít hơn (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Nhiều hơn (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Ít hơn hay bằng (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Nhiều hơn hay bằng (>=)",
+ "abusefilter-edit-builder-group-op-bool": "Toán tử Boolean",
+ "abusefilter-edit-builder-op-bool-not": "Phủ định (!)",
+ "abusefilter-edit-builder-op-bool-and": "Và (&)",
+ "abusefilter-edit-builder-op-bool-or": "Hoặc (|)",
+ "abusefilter-edit-builder-group-misc": "Linh tinh",
+ "abusefilter-edit-builder-misc-in": "Có trong chuỗi (in)",
+ "abusefilter-edit-builder-misc-like": "Trùng với mẫu (like)",
+ "abusefilter-edit-builder-misc-rlike": "So trùng biểu thức chính quy (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "Trùng với biểu thức chính quy, không phân biệt chữ hoa/thường (irlike)",
+ "abusefilter-edit-builder-misc-contains": "Chuỗi trái có chứa chuỗi phải hay không (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "Nội dung chuỗi (\"\")",
+ "abusefilter-edit-builder-misc-tern": "Toán tử tam phân (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "Điều kiện (if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "Hàm",
+ "abusefilter-edit-builder-funcs-length": "Độ dài chuỗi (length)",
+ "abusefilter-edit-builder-funcs-lcase": "Viết thường (lcase)",
+ "abusefilter-edit-builder-funcs-ucase": "Viết hoa (ucase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "Chuẩn hóa các ký tự dễ gây nhầm lẫn (ccnorm)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "Xóa các ký tự kép (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "Các ký tự đặc biệt / tổng số ký tự (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "Chuẩn hóa (norm)",
+ "abusefilter-edit-builder-funcs-count": "Số lần chuỗi X xuất hiện trong chuỗi Y (count)",
+ "abusefilter-edit-builder-funcs-rcount": "Số lần biểu thức chính quy X xuất hiện trong chuỗi Y (rcount)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "Dời khoảng cách (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "Dời ký tự đặc biệt (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "IP có trong dải hay không (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "Tìm hơn một chuỗi con trong chuỗi (contains_any)",
+ "abusefilter-edit-builder-funcs-substr": "Chuỗi con (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "Vị trí của chuỗi con trong chuỗi (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "Thay chuỗi con bằng chuỗi (str_replace)",
+ "abusefilter-edit-builder-funcs-rescape": "Đưa dấu thoát vào chuỗi trong biểu thức chính quy (rescape)",
+ "abusefilter-edit-builder-funcs-set_var": "Đặt biến (set_var)",
+ "abusefilter-edit-builder-group-vars": "Biến",
+ "abusefilter-edit-builder-vars-accountname": "Tên tài khoản (lúc mở tài khoản)",
+ "abusefilter-edit-builder-vars-timestamp": "Thời điểm thay đổi dạng Unix",
+ "abusefilter-edit-builder-vars-action": "Tác vụ",
+ "abusefilter-edit-builder-vars-addedlines": "Số dòng được thêm trong sửa đổi",
+ "abusefilter-edit-builder-vars-delta": "Kích cỡ thay đổi trong sửa đổi",
+ "abusefilter-edit-builder-vars-diff": "Những khác biệt thống nhất khi thay đổi do sửa đổi tạo ra",
+ "abusefilter-edit-builder-vars-newsize": "Kích cỡ trang mới",
+ "abusefilter-edit-builder-vars-oldsize": "Kích cỡ trang cũ",
+ "abusefilter-edit-builder-vars-old-content-model": "Kiểu nội dung cũ",
+ "abusefilter-edit-builder-vars-new-content-model": "Kiểu nội dung mới",
+ "abusefilter-edit-builder-vars-removedlines": "Số dòng bị xóa trong sửa đổi",
+ "abusefilter-edit-builder-vars-summary": "Tóm tắt / Lý do sửa đổi",
+ "abusefilter-edit-builder-vars-article-id": "Mã số trang",
+ "abusefilter-edit-builder-vars-article-ns": "Không gian tên chính",
+ "abusefilter-edit-builder-vars-article-text": "Tựa đề trang (không có không gian tên)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Tựa đề trang đầy đủ",
+ "abusefilter-edit-builder-vars-article-views": "Số lần xem trang",
+ "abusefilter-edit-builder-vars-movedfrom-id": "Mã số của trang định di chuyển",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "Không gian tên của trang định di chuyển",
+ "abusefilter-edit-builder-vars-movedfrom-text": "Tựa đề của trang định di chuyển",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "Tựa đề đầy đủ của trang định di chuyển",
+ "abusefilter-edit-builder-vars-movedto-id": "Mã số của trang di chuyển đến",
+ "abusefilter-edit-builder-vars-movedto-ns": "Không gian tên của trang di chuyển đến",
+ "abusefilter-edit-builder-vars-movedto-text": "Tựa đề của trang di chuyển đến",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "Tựa đề đầy đủ của trang di chuyển đến",
+ "abusefilter-edit-builder-vars-user-editcount": "Số lần sửa đổi của thành viên",
+ "abusefilter-edit-builder-vars-user-age": "Thời gian tồn tại tài khoản người dùng",
+ "abusefilter-edit-builder-vars-user-name": "Tên của tài khoản thành viên",
+ "abusefilter-edit-builder-vars-user-groups": "Nhóm (gồm cả nhóm ẩn) thành viên đang thuộc",
+ "abusefilter-edit-builder-vars-user-rights": "Các quyền của người dùng",
+ "abusefilter-edit-builder-vars-user-blocked": "Người dùng bị cấm hay không",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "Thời gian kể từ khi địa chỉ thư điện tử được xác nhận",
+ "abusefilter-edit-builder-vars-recent-contributors": "Mười người dùng cuối đóng góp vào trang",
+ "abusefilter-edit-builder-vars-first-contributor": "Người dùng đầu tiên đóng góp vào trang",
+ "abusefilter-edit-builder-vars-all-links": "Tất cả các liên kết ngoài trong nội dung mới thêm vào",
+ "abusefilter-edit-builder-vars-added-links": "Tất cả các liên kết ngoài được thêm trong sửa đổi",
+ "abusefilter-edit-builder-vars-removed-links": "Tất cả các liên kết ngoài bị xóa trong sửa đổi",
+ "abusefilter-edit-builder-vars-old-text": "Mã wiki cũ của trang, trước khi sửa đổi",
+ "abusefilter-edit-builder-vars-new-text": "Mã wiki mới của trang, sau khi sửa đổi",
+ "abusefilter-edit-builder-vars-new-pst": "Mã wiki của trang mới ở dạng chuyển đổi trước khi lưu",
+ "abusefilter-edit-builder-vars-diff-pst": "Khác biệt thống nhất trong sửa đổi ở dạng chuyển đổi trước khi lưu",
+ "abusefilter-edit-builder-vars-addedlines-pst": "Số dòng được thêm trong sửa đổi ở dạng chuyển đổi trước khi lưu",
+ "abusefilter-edit-builder-vars-new-text-stripped": "Nội dung mới của trang, bỏ các mã đánh dấu",
+ "abusefilter-edit-builder-vars-new-html": "Phân tích mã HTML của phiên bản mới",
+ "abusefilter-edit-builder-vars-restrictions-edit": "Mức khóa sửa đổi của trang",
+ "abusefilter-edit-builder-vars-restrictions-move": "Mức khóa di chuyển của trang",
+ "abusefilter-edit-builder-vars-restrictions-create": "Mức khóa tạo của trang",
+ "abusefilter-edit-builder-vars-restrictions-upload": "Mức khóa tải lên của tập tin",
+ "abusefilter-edit-builder-vars-old-text-stripped": "Văn bản cũ của trang, trừ mã đánh dấu",
+ "abusefilter-edit-builder-vars-old-links": "Các liên kết trong trang trước khi sửa đổi",
+ "abusefilter-edit-builder-vars-old-html": "Mã wiki cũ của trang, được xử lý thành HTML",
+ "abusefilter-edit-builder-vars-minor-edit": "Có gọi sửa đổi nhỏ hay không",
+ "abusefilter-edit-builder-vars-file-sha1": "Số băm SHA1 của nội dung cập tin",
+ "abusefilter-edit-builder-vars-file-size": "Kích thước của tập tin bằng byte",
+ "abusefilter-edit-builder-vars-file-mime": "Kiểu MIME của tập tin",
+ "abusefilter-edit-builder-vars-file-mediatype": "Kiểu phương tiện của tập tin",
+ "abusefilter-edit-builder-vars-file-width": "Chiều rộng của tập tin bằng điểm ảnh",
+ "abusefilter-edit-builder-vars-file-height": "Chiều cao của tập tin bằng điểm ảnh",
+ "abusefilter-edit-builder-vars-file-bits-per-channel": "Số bit trên kênh màu của tập tin",
+ "abusefilter-filter-log": "Các thay đổi bộ lọc gần đây",
+ "abusefilter-history": "Lịch sử các thay đổi của Bộ Lọc Vi Phạm $1",
+ "abusefilter-history-foruser": "Thay đổi bởi $1",
+ "abusefilter-history-hidden": "ẩn",
+ "abusefilter-history-enabled": "kích hoạt",
+ "abusefilter-history-global": "Toàn bộ",
+ "abusefilter-history-timestamp": "Thời điểm",
+ "abusefilter-history-user": "Người dùng",
+ "abusefilter-history-public": "Mô tả bộ lọc công khai",
+ "abusefilter-history-flags": "Cờ",
+ "abusefilter-history-filter": "Quy luật lọc",
+ "abusefilter-history-comments": "Bình luận",
+ "abusefilter-history-actions": "Tác vụ",
+ "abusefilter-history-backedit": "Trở về bộ soạn thảo bộ lọc",
+ "abusefilter-history-deleted": "Đã xóa",
+ "abusefilter-history-filterid": "Bộ lọc",
+ "abusefilter-history-select-legend": "Tinh lọc tìm kiếm",
+ "abusefilter-history-select-user": "Thành viên:",
+ "abusefilter-history-select-submit": "Tinh lọc",
+ "abusefilter-history-diff": "Các thay đổi",
+ "abusefilter-history-error-hidden": "Bạn đã yêu cầu một bộ lọc ẩn, nên không thể xem lịch sử của nó.",
+ "abusefilter-exception-unexpectedatend": "“$2” không mong đợi ở ký tự $1.",
+ "abusefilter-exception-expectednotfound": "Tìm thấy $3 ở ký tự $4 thay vì $2 ở $1.",
+ "abusefilter-exception-unrecognisedkeyword": "Không hiểu được từ khóa $2 tại ký tự $1.",
+ "abusefilter-exception-unexpectedtoken": "Cụm từ không được mong đợi “$3” (thuộc loại $2) tại ký tự $1.",
+ "abusefilter-exception-unclosedstring": "Chuỗi chưa được đóng bắt đầu từ ký tự $1.",
+ "abusefilter-exception-invalidoperator": "Toán tử “$2” không hợp lệ ở ký tự $1.",
+ "abusefilter-exception-unrecognisedtoken": "Không hiểu cụm từ “$2” tại ký tự $1.",
+ "abusefilter-exception-noparams": "Không đưa ra tham số cho hàm “$2” tại ký tự $1.",
+ "abusefilter-exception-dividebyzero": "Chia $2 cho zero tại ký tự $1.",
+ "abusefilter-exception-unrecognisedvar": "Không hiểu biến $2 tại ký tự $1",
+ "abusefilter-exception-notenoughargs": "Không có đủ tham số khi gọi hàm $2 tại ký tự $1.\nCần $3 tham số, trong khi chỉ tìm thấy $4.",
+ "abusefilter-exception-regexfailure": "Lỗi trong biểu thức chính quy “$3” tại ký tự $1: “$2”",
+ "abusefilter-exception-overridebuiltin": "Đè lên biến số phần mềm “$2” một cách bất hợp lệ tại ký tự $1.",
+ "abusefilter-exception-outofbounds": "Yêu cầu khoản danh sách thứ $2 không tồn tại (chỉ co $3 khoản) tại ký tự $1.",
+ "abusefilter-exception-notlist": "Yêu cầu khoản mảng từ cấu trúc không phải mảng tại ký tự $1.",
+ "abusefilter-action-tag": "Thẻ",
+ "abusefilter-action-throttle": "Thắt cổ chai",
+ "abusefilter-action-warn": "Cảnh báo",
+ "abusefilter-action-blockautopromote": "Cấm tự thăng chức",
+ "abusefilter-action-block": "Cấm",
+ "abusefilter-action-degroup": "Loại khỏi nhóm",
+ "abusefilter-action-rangeblock": "Cấm theo dải",
+ "abusefilter-action-disallow": "Không cho phép",
+ "abusefilter-revert-title": "Hồi tất cả sửa đổi của bộ lọc $1",
+ "abusefilter-revert-intro": "Mẫu này cho phép bạn hồi lại tất cả sửa đổi của bộ lọc vi phạm nguyên nhân do bộ lọc $1.\nXin hãy thật cẩn thận khi sử dụng công cụ này.",
+ "abusefilter-revert-preview-item": "$1: $2 đã {{GENDER:$7}}thực hiện $3 trên $4.\nTác vụ sắp bị hồi: $5 ($6)",
+ "abusefilter-revert-search-legend": "Chọn các tác vụ bộ lọc vi phạm sẽ bị hồi",
+ "abusefilter-revert-periodstart": "Thời điểm bắt đầu:",
+ "abusefilter-revert-periodend": "Thời điểm kết thúc:",
+ "abusefilter-revert-search": "Chọn tác vụ",
+ "abusefilter-revert-filter": "Bộ lọc:",
+ "abusefilter-revert-preview-intro": "Dưới đây là các tác vụ do bộ lọc vi phạm thực hiện sẽ được hồi lại theo tác vụ này.\nXin hãy kiểm tra lại chúng kỹ lưỡng, và nhấn “{{int:abusefilter-revert-confirm}}” để xác nhận sự lựa chọn của bạn.",
+ "abusefilter-revert-confirm": "Xác nhận",
+ "abusefilter-revert-success": "Bạn đã hồi tất cả các tác vụ của bộ lọc vi phạm vì [[Special:AbuseFilter/$1|bộ lọc $2]].",
+ "abusefilter-revert-reason": "Hồi tự động tất cả các tác vụ do bộ lọc vi phạm thực hiện do bộ lọc $1.\nLý do: $2",
+ "abusefilter-revert-reasonfield": "Lý do:",
+ "abusefilter-test": "Kiểm thử bộ lọc với các sửa đổi trước",
+ "abusefilter-test-intro": "Trang này cho phép bạn kiểm tra một bộ lọc được gõ vào hộp dưới đây trên $1 sửa đổi cuối.\nĐể tải một bộ lọc hiện có, hãy gõ mã bộ lọc vào hộp phía dưới hộp sửa đổi, và nhấn nút “{{int:abusefilter-test-load}}”.",
+ "abusefilter-test-legend": "Đang kiểm thử bộ lọc",
+ "abusefilter-test-load-filter": "Tải mã bộ lọc:",
+ "abusefilter-test-submit": "Kiểm thử",
+ "abusefilter-test-load": "Tải",
+ "abusefilter-test-user": "Thay đổi của thành viên:",
+ "abusefilter-test-period-start": "Thay đổi thực hiện sau:",
+ "abusefilter-test-period-end": "Thay đổi thực hiện trước:",
+ "abusefilter-test-page": "Các thay đổi tại trang:",
+ "abusefilter-test-shownegative": "Hiển thị thay đổi không trùng với bộ lọc",
+ "abusefilter-test-syntaxerr": "Bộ lọc được nhập vào có lỗi cú pháp. Hãy bấm nút “{{int:abusefilter-edit-check}}” để đọc chi tiết đầy đủ.",
+ "abusefilter-test-badtitle": "Bạn đã nhập một tên trang không hợp lệ. Nó có thể có những ký tự không thể dùng trong tên trang.",
+ "abusefilter-changeslist-examine": "kiểm tra",
+ "abusefilter-examine": "Kiểm tra từng thay đổi một",
+ "abusefilter-examine-intro": "Trang này cho phép bạn kiểm tra các biến do Bộ lọc Vi phạm tạo ra đối với từng thay đổi cụ thể, và kiểm thử nó với các bộ lọc.",
+ "abusefilter-examine-legend": "Chọn thay đổi",
+ "abusefilter-examine-diff": "Địa chỉ URL sai khác:",
+ "abusefilter-examine-user": "Thành viên:",
+ "abusefilter-examine-title": "Tên trang:",
+ "abusefilter-examine-submit": "Tìm kiếm",
+ "abusefilter-examine-vars": "Biến tạo ra từ thay đổi này",
+ "abusefilter-examine-test": "Kiểm thử thay đổi này với một bộ lọc",
+ "abusefilter-examine-test-button": "Kiểm thử bộ lọc",
+ "abusefilter-examine-match": "Bộ lọc đã trùng với thay đổi này.",
+ "abusefilter-examine-nomatch": "Bộ lọc không trùng với thay đổi này.",
+ "abusefilter-examine-syntaxerror": "Bộ lọc có cú pháp không hợp lệ",
+ "abusefilter-examine-notfound": "Không tìm thấy thay đổi do bạn yêu cầu.",
+ "abusefilter-examine-incompatible": "Thay đổi do bạn yêu cầu không được Bộ lọc Vi phạm hỗ trợ",
+ "abusefilter-examine-noresults": "Không tìm thấy kết quả hợp các tham số tìm kiếm được cho vào.",
+ "abusefilter-topnav": "'''Điều hướng Bộ lọc sai phạm'''",
+ "abusefilter-topnav-home": "Trang đầu",
+ "abusefilter-topnav-test": "Thử hàng loạt",
+ "abusefilter-topnav-examine": "Kiểm tra các sửa đổi về trước",
+ "abusefilter-topnav-log": "Nhật trình sai phạm",
+ "abusefilter-topnav-tools": "Công cụ gỡ rối",
+ "abusefilter-topnav-import": "Nhập bộ lọc",
+ "abusefilter-log-name": "Nhật trình bộ lọc sai phạm",
+ "abusefilter-log-header": "Nhật trình này tóm lại các thay đổi bộ lọc. Hãy xem các chi tiết đầy đủ trong danh sách các [[Special:AbuseFilter/history|thay đổi bộ lọc gần đây]].",
+ "abusefilter-logentry-modify": "$1 {{GENDER:$2}}đã thay đổi $4 ($5)",
+ "abusefilter-log-noresults": "Không có kết quả",
+ "abusefilter-diff-title": "Khác biệt giữa các phiên bản",
+ "abusefilter-diff-item": "Khoản mục",
+ "abusefilter-diff-version": "{{GENDER:$3}}Phiên bản vào $1 bởi $2",
+ "abusefilter-diff-info": "Thông tin cơ bản",
+ "abusefilter-diff-pattern": "Điều kiện lọc",
+ "abusefilter-diff-invalid": "Không thể lấy các phiên bản yêu cầu",
+ "abusefilter-diff-backhistory": "Trở lại lịch sử bộ lọc",
+ "abusefilter-diff-prev": "Thay đổi cũ",
+ "abusefilter-diff-next": "Thay đổi sau",
+ "abusefilter-import-intro": "Trang này để nhập bộ lọc từ wiki khác.\nTại trang sửa đổi của wiki nguồn, hãy bấm “{{int:abusefilter-edit-export}}” dưới đề mục “{{int:abusefilter-edit-tools}}”.\nSau đó, chép văn bản từ hộp sẽ hiện ra, dán nó vào hộp ở đây, và bấm “{{int:abusefilter-import-submit}}”.",
+ "abusefilter-import-submit": "Nhập dữ liệu",
+ "abusefilter-group-default": "Mặc định",
+ "abusefilter-http-error": "Đã xuất hiện lỗi HTTP: $1.",
+ "apihelp-abusefiltercheckmatch-description": "Đánh dấu vào đây để kiểm tra xem nếu một AbuseFilter (bộ lọc lạm dụng) có khớp với tập hợp các biến hay không, trình biên tập đã ghi vào sự kiện của AbuseFilter.\n\nvars, rcid hoặc logid được yêu cầu tuy nhiên chỉ một trong số đó có thể sẽ được dùng.",
+ "apihelp-abusefiltercheckmatch-param-filter": "Văn bản đầy đủ để kiểm tra sự ăn khớp của bộ lọc.",
+ "apihelp-abusefiltercheckmatch-param-vars": "Mảng mã hóa JSON của các biến để kiểm tra lại.",
+ "apihelp-abusefiltercheckmatch-param-rcid": "ID thay đổi gần đây để kiểm tra lại.",
+ "apihelp-abusefiltercheckmatch-param-logid": "ID đăng nhập bộ lọc lạm dụng để kiểm tra lại.",
+ "apihelp-abusefiltercheckmatch-example-1": "Kiểm tra nếu thay đổi gần đây ID 15 có ăn khớp với một bộ lọc đơn giản",
+ "apihelp-abusefilterchecksyntax-description": "Kiểm tra cú pháp của một bộ lọc AbuseFilter.",
+ "apihelp-abusefilterchecksyntax-param-filter": "Văn bản lọc đầy đủ để kiểm tra cú pháp trên.",
+ "apihelp-abusefilterchecksyntax-example-1": "Kiểm tra cú pháp của một bộ lọc hợp lệ",
+ "apihelp-abusefilterchecksyntax-example-2": "Kiểm tra cú pháp của một bộ lọc không hợp lệ",
+ "apihelp-abusefilterevalexpression-description": "Đánh giá một biểu thức AbuseFilter.",
+ "apihelp-abusefilterevalexpression-param-expression": "Đánh giá biểu thức.",
+ "apihelp-abusefilterevalexpression-example-1": "Đánh giá một biểu thức đơn giản",
+ "apihelp-abusefilterunblockautopromote-param-user": "Tên người dùng của người dùng mà bạn muốn bỏ khóa.",
+ "apihelp-query+abusefilters-description": "Hiển thị chi tiết của các bộ lọc lạm dụng.",
+ "apihelp-query+abusefilters-param-startid": "ID bộ lọc để bắt đầu việc đếm.",
+ "apihelp-query+abusefilters-param-endid": "ID bộ lọc để dừng việc đếm.",
+ "apihelp-query+abusefilters-param-show": "Chỉ hiện các bộ lọc đáp ứng được những tiêu chí này.",
+ "apihelp-query+abusefilters-param-limit": "Số lượng tối đa các bộ lọc được liệt kê.",
+ "apihelp-query+abusefilters-param-prop": "Thuộc tính mà bạn muốn lấy.",
+ "apihelp-query+abusefilters-example-1": "Danh sách kích hoạt các bộ lọc công cộng",
+ "apihelp-query+abusefilters-example-2": "Hiện một số chi tiết về các bộ lọc",
+ "apihelp-query+abuselog-description": "Hiển thị các sự kiện đã được bắt bởi một trong các bộ lọc lạm dụng.",
+ "apihelp-query+abuselog-param-start": "Các dấu thời gian (timestamp) để bắt đầu việc đếm.",
+ "apihelp-query+abuselog-param-end": "Dấu thời gian để dừng việc đếm.",
+ "apihelp-query+abuselog-param-user": "Chỉ hiện các mục được thực hiện bởi một người dùng hoặc địa chỉ IP.",
+ "apihelp-query+abuselog-param-title": "Chỉ hiện các mục xuất hiện trong một trang nhất định.",
+ "apihelp-query+abuselog-param-filter": "Chỉ hiển thị các mục đã được bắt bởi một ID bộ lọc nhất định.",
+ "apihelp-query+abuselog-param-limit": "Số lượng các mục tối đa để đưa vào danh sách.",
+ "apihelp-query+abuselog-param-prop": "Thuộc tính mà bạn muốn lấy.",
+ "apihelp-query+abuselog-example-1": "Hiển thị các mục nhật trình gần đây",
+ "apihelp-query+abuselog-example-2": "Hiển thị các mục nhật trình gần đây cho [[API]]",
+ "apierror-abusefilter-badsyntax": "Bộ lọc có cú pháp không hợp lệ."
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/vo.json b/www/wiki/extensions/AbuseFilter/i18n/vo.json
new file mode 100644
index 00000000..ca2af75a
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/vo.json
@@ -0,0 +1,46 @@
+{
+ "@metadata": {
+ "authors": [
+ "Malafaya",
+ "Smeira"
+ ]
+ },
+ "abusefilter-log-search-user": "Geban:",
+ "abusefilter-log-search-title": "Tiäd:",
+ "abusefilter-log-search-submit": "Sukön",
+ "abusefilter-log-detailslink": "pats",
+ "abusefilter-log-diff": "dif",
+ "abusefilter-log-details-val": "Völad",
+ "abusefilter-log-noactions": "nonik",
+ "abusefilter-log-hide-reason": "Kod:",
+ "abusefilter-list-details": "Pats",
+ "abusefilter-list-options": "Välots",
+ "abusefilter-list-options-deleted": "Suls pemoüköls:",
+ "abusefilter-tools-reautoconfirm-user": "Geban:",
+ "abusefilter-edit-status-label": "Statits:",
+ "abusefilter-edit-lastmod-text": "$1, fa $2",
+ "abusefilter-edit-warn-actions": "Dunots:",
+ "abusefilter-edit-history": "Jenotem:",
+ "abusefilter-edit-tools": "Stums:",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Saedam (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Näedam (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Naedam (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Müedam (/)",
+ "abusefilter-edit-builder-group-funcs": "Dunods",
+ "abusefilter-edit-builder-vars-action": "Dunot",
+ "abusefilter-history-foruser": "Votükams fa $1",
+ "abusefilter-history-hidden": "Klänedik",
+ "abusefilter-history-timestamp": "Tim",
+ "abusefilter-history-user": "Geban",
+ "abusefilter-history-filterid": "Sul",
+ "abusefilter-history-select-user": "Geban:",
+ "abusefilter-history-diff": "Votükams",
+ "abusefilter-action-throttle": "Nevifükön",
+ "abusefilter-action-warn": "Nunedön",
+ "abusefilter-action-block": "Blokön",
+ "abusefilter-revert-reasonfield": "Kod:",
+ "abusefilter-changeslist-examine": "xamön",
+ "abusefilter-examine-user": "Geban:",
+ "abusefilter-examine-title": "Padatiäd:",
+ "abusefilter-examine-submit": "Sukön"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/wa.json b/www/wiki/extensions/AbuseFilter/i18n/wa.json
new file mode 100644
index 00000000..aa7c11d9
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/wa.json
@@ -0,0 +1,78 @@
+{
+ "@metadata": {
+ "authors": [
+ "Lucyin",
+ "Srtxg"
+ ]
+ },
+ "abusefilter-log-hide-reason": "Råjhon:",
+ "abusefilter-deleted": "Disfacé",
+ "abusefilter-tools-reautoconfirm-user": "Uzeu:",
+ "abusefilter-edit-tools": "Usteyes:",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Acdicion (+)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Mopliyaedje (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Divizion (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Modulo (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Poûxhance (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Operateus di comparåjhon",
+ "abusefilter-edit-builder-op-comparison-equal": "Ewal a (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Diferin di (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "Pus ptit ki (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Pus grand ki (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Pus ptit ou ewal (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Pus grand ou ewal (>=)",
+ "abusefilter-edit-builder-group-op-bool": "Operateus bouleyins",
+ "abusefilter-edit-builder-op-bool-not": "Nén (!)",
+ "abusefilter-edit-builder-op-bool-and": "Eyet (&)",
+ "abusefilter-edit-builder-op-bool-or": "Ou (|)",
+ "abusefilter-edit-builder-group-misc": "Totes sôres",
+ "abusefilter-edit-builder-misc-in": "å dvins d' ene tchinne di tecse (in)",
+ "abusefilter-edit-builder-misc-like": "Corespond å patron (like)",
+ "abusefilter-edit-builder-misc-rlike": "Corespond a l' erîlêye ratourneure (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "Corespond a l' erîlêye ratourneure, sins diferince madjusucle/minuscule (irlike)",
+ "abusefilter-edit-builder-misc-contains": "Li tchinne a hintche a-st å dvins d' leye li cene di droete (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "Ene tchinne di tecse literåle (\"\")",
+ "abusefilter-edit-builder-misc-tern": "Operateu ternaire (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "Condicion (if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "Fonccions",
+ "abusefilter-edit-builder-funcs-length": "Longueur del tchinne (length)",
+ "abusefilter-edit-builder-funcs-lcase": "Mete a ptites letes (lcase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "Normålijhî les caracteres ambigus (ccnorm)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "Rissaetchî les dobe caracteres (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "Rapoirt inte les caracteres sipeciås et l' totå (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "Normalijhî (norm)",
+ "abusefilter-edit-builder-funcs-count": "Cobén d' côps l' tchinne X si trove dins Y (count)",
+ "abusefilter-edit-builder-funcs-rcount": "Cobén d' côps l' erîlêye ratourneure X si trove dins Y (rcount)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "Rissaetchî les vudes (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "Rissaetchî les caracteres sipeciås (rmspecial)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "Trove si ene adresse IP est d' ene fortchete dinêye (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "Cweri après pus d' ene dizo-tchinne dins ene tchinne (contains_any)",
+ "abusefilter-edit-builder-funcs-substr": "Dizo-tchinne (substr)",
+ "abusefilter-edit-builder-group-vars": "Variåves",
+ "abusefilter-edit-builder-vars-accountname": "No d' elodjaedje (å moumint d' l' edjîstraedje)",
+ "abusefilter-edit-builder-vars-timestamp": "Date Unix do candjmint",
+ "abusefilter-edit-builder-vars-action": "Accion",
+ "abusefilter-edit-builder-vars-addedlines": "Royes radjoutêyes avou l' candjmint",
+ "abusefilter-edit-builder-vars-delta": "Diferince di grandeu avou l' candjmint",
+ "abusefilter-edit-builder-vars-diff": "Diff unifyî des candjmints",
+ "abusefilter-edit-builder-vars-newsize": "Novele grandeu del pådje",
+ "abusefilter-edit-builder-vars-oldsize": "Grandeu di dvant del pådje",
+ "abusefilter-edit-builder-vars-removedlines": "Royes disfacêyes avou l' candjmint",
+ "abusefilter-edit-builder-vars-summary": "Rascourti do candjmint",
+ "abusefilter-edit-builder-vars-article-id": "ID del pådje",
+ "abusefilter-edit-builder-vars-article-ns": "Espåce di lomaedje del pådje",
+ "abusefilter-edit-builder-vars-article-text": "Tite del pådje (sins l' espåce di lomaedje)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "Tite del pådje en etir",
+ "abusefilter-history-timestamp": "Date",
+ "abusefilter-history-user": "Uzeu",
+ "abusefilter-history-flags": "Drapeas",
+ "abusefilter-history-actions": "Accions",
+ "abusefilter-history-deleted": "Disfacé",
+ "abusefilter-history-filterid": "Passete",
+ "abusefilter-history-select-user": "Uzeu:",
+ "abusefilter-history-diff": "Candjmints",
+ "abusefilter-action-block": "Bloker",
+ "abusefilter-examine-user": "Uzeu:",
+ "abusefilter-examine-title": "Tite del pådje:",
+ "abusefilter-examine-submit": "Cweri"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/war.json b/www/wiki/extensions/AbuseFilter/i18n/war.json
new file mode 100644
index 00000000..76eff4c8
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/war.json
@@ -0,0 +1,101 @@
+{
+ "@metadata": {
+ "authors": [
+ "JinJian"
+ ]
+ },
+ "abusefilter-blocker": "Panara hin abusado",
+ "abusefilter-accountreserved": "Ini nga ngaran hin akawnt in nakareserba ha paggamit hiton panara hin abusado.",
+ "right-abusefilter-modify": "Igliwan an mga panara hin abusado",
+ "right-abusefilter-view": "Igpakita an mga panara hin abusado",
+ "right-abusefilter-log": "Kitaa an talaan han abusado",
+ "right-abusefilter-private": "Kitaa an pribado nga datos han talaan han abusado",
+ "right-abusefilter-view-private": "Kita an mga panara hin abusado ngan markaha komo pribado",
+ "right-abusefilter-log-private": "Kitaa an mga ginsulod ha talaan han mga panara hin abusado ngan markahi komo pribado",
+ "right-abusefilter-hide-log": "Igtago an mga iginsulod ha talaan hin abusado",
+ "right-abusefilter-hidden-log": "Kitaa na nakatago nga mga iginbutang ha talaan hin abusado",
+ "right-abusefilter-modify-global": "Paghimo o pagliwat hin mga kalibutanon nga mga panara hin abusado",
+ "action-abusefilter-modify": "igliwan an mga panara hin abusado",
+ "action-abusefilter-view": "kitaa an mga panara hin abusado",
+ "action-abusefilter-log": "kitaa an talaan hin abusado",
+ "action-abusefilter-log-detail": "kitaa an detalyado nga mga iginbutang ha talaan hin abusado",
+ "action-abusefilter-private": "kitaa an pribado nga datos ha talaan hin abusado",
+ "action-abusefilter-modify-restricted": "igliwan an mga panara hin abusado hin mga restriktado nga buruhaton",
+ "action-abusefilter-revert": "igbalik an ngatanan nga mga pagbag-o hin uska ginhatag nga panara hin abusado",
+ "action-abusefilter-view-private": "kitaa an mga panara hin abusado nga ginmarkahan komo pribado",
+ "abusefilter-log": "talaan hin panara hin abusado",
+ "abusefilter-log-summary": "Ini nga talaan in nagpapakita hin lista han ngatanan nga mga ginbuhat nga nadakpan han mga panara.",
+ "abusefilter-log-search": "Pamilnga ha talaan hin abusado",
+ "abusefilter-log-search-user": "Gumaramit:",
+ "abusefilter-log-search-filter": "Mga ID hit panara (nakabulag pinaagi hin mga patukdaw nga bagis):",
+ "abusefilter-log-search-title": "Titulo:",
+ "abusefilter-log-search-wiki": "Wiki:",
+ "abusefilter-log-search-submit": "Pamilnga",
+ "abusefilter-log-detailedentry-global": "kalibutanan nga panara $1",
+ "abusefilter-log-detailedentry-local": "panara $1",
+ "abusefilter-log-detailslink": "mga detalye",
+ "abusefilter-log-diff": "kaibhan",
+ "abusefilter-log-details-private": "Pribado nga datos",
+ "abusefilter-log-details-ip": "Gintikangan nga IP address",
+ "abusefilter-log-noactions": "Waray",
+ "abusefilter-log-linkoncontribs": "log han pag-abuso",
+ "abusefilter-log-hide-reason": "Rason:",
+ "abusefilter-list-status": "Kahimtang",
+ "abusefilter-list-hitcount": "Ihap hit igo",
+ "abusefilter-list-edit": "Igliwat",
+ "abusefilter-list-details": "Mga detalye",
+ "abusefilter-list-limit": "Ihap kada pakli:",
+ "abusefilter-list-lastmodified": "Kataposan nga ginsaliwanan",
+ "abusefilter-list-group": "Grupo hit pagsara",
+ "abusefilter-hidden": "Pribado",
+ "abusefilter-unhidden": "Publiko",
+ "abusefilter-enabled": "Ginpaandar",
+ "abusefilter-deleted": "Ginpara",
+ "abusefilter-disabled": "Ginparong",
+ "abusefilter-new": "Paghimo hin bag-o nga panara",
+ "abusefilter-status-global": "Kalibutanon",
+ "abusefilter-list-options": "Mga opsyon",
+ "abusefilter-list-options-deleted": "Ginpara an mga sara:",
+ "abusefilter-list-options-deleted-only": "Igpakita la an mga ginpara nga panara",
+ "abusefilter-list-options-deleted-hide": "Igtago an mga ginpara nga panara",
+ "abusefilter-list-options-deleted-show": "Iglakip an mga ginpara nga panara",
+ "abusefilter-list-options-scope": "Igpakita an mga panara tikang:",
+ "abusefilter-list-options-scope-local": "Lokal nga wiki",
+ "abusefilter-list-options-disabled": "Ginparong an mga panara:",
+ "abusefilter-list-options-hidedisabled": "Igtago an mga ginparong nga mga panara",
+ "abusefilter-list-options-submit": "Igpayana",
+ "abusefilter-tools-reautoconfirm-user": "Gumaramit:",
+ "abusefilter-edit-warn-other": "Iba nga mensahe",
+ "abusefilter-edit-history": "Kaagi:",
+ "abusefilter-edit-tools": "Mga higamit:",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Pagdugangdugang (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Pag-iban-iban (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Pagpilo-pilo (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Pagtunga-tunga (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Modulo (%)",
+ "abusefilter-edit-builder-op-comparison-equal": "Pareho ha (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Diri pareho ha (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "ubos ha (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Labaw ha (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Ubos ha o pareho ha (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Labaw ha o pareho ha (>=)",
+ "abusefilter-edit-builder-op-bool-not": "Diri (!)",
+ "abusefilter-edit-builder-op-bool-and": "Ngan (&)",
+ "abusefilter-edit-builder-op-bool-or": "O (|)",
+ "abusefilter-edit-builder-vars-newsize": "Bag-o nga kadako hin pakli",
+ "abusefilter-edit-builder-vars-oldsize": "Daan nga kadako hin pakli",
+ "abusefilter-edit-builder-vars-removedlines": "Mga linya gintanggal ha pagliwat",
+ "abusefilter-history-foruser": "Mga ginliwat ni $1",
+ "abusefilter-history-hidden": "Nakatago",
+ "abusefilter-history-enabled": "Ginpaandar",
+ "abusefilter-history-global": "Kalibutanon",
+ "abusefilter-history-timestamp": "Oras",
+ "abusefilter-history-user": "Gumaramit",
+ "abusefilter-revert-reasonfield": "Rason:",
+ "abusefilter-test-load": "Ginkarga",
+ "abusefilter-examine-user": "Gumaramit:",
+ "abusefilter-examine-title": "Titulo han pakli:",
+ "abusefilter-examine-submit": "Pamilnga",
+ "abusefilter-topnav-home": "Balay",
+ "abusefilter-log-noresults": "Waray mga resulta"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/wuu.json b/www/wiki/extensions/AbuseFilter/i18n/wuu.json
new file mode 100644
index 00000000..cb463715
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/wuu.json
@@ -0,0 +1,16 @@
+{
+ "@metadata": {
+ "authors": [
+ "飞舞回堂前"
+ ]
+ },
+ "abusefilter-warning": "'''警告:'''侬个行为畀自动识别为有危害性。呒不意义个操作会畀马上恢复,而过分或者重复个无意义编辑会让侬个账号或IP地址畀查封。如果侬确定本次操作有意义,侬可以再次提交确认。搭侬个操作匹配个过滤规则是:$1",
+ "abusefilter-disallowed": "侬个行为畀自动识别为有害操作并畀禁止。如果侬认为该次编辑是有建设性个,请拿侬要做个事体告诉管理员。搭侬本次行为匹配个过滤规则是:$1",
+ "abusefilter-log-entry": "$1:$2来勒$4{{GENDER:$8|执行}}操作“$3”辰光{{GENDER:$8|触发着}}过滤器。采取个动作:$5;过滤器说明:$6",
+ "abusefilter-log-entry-withdiff": "$1:$2来勒$4{{GENDER:$8|执行}}操作“$3”辰光触发着过滤器。采取个动作:$5;过滤器说明:$6($7)",
+ "abusefilter-log-detailedentry-meta": "$1:$2来勒$5{{GENDER:$9|执行}}操作“$4”辰光触发着$3。采取个动作:$6;过滤器说明:$7($8)",
+ "abusefilter-log-hide-reason": "理由:",
+ "abusefilter-hidden": "私密",
+ "abusefilter-unhidden": "公开",
+ "abusefilter-hitcount": "$1趟触发"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/xal.json b/www/wiki/extensions/AbuseFilter/i18n/xal.json
new file mode 100644
index 00000000..a453a6a8
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/xal.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Huuchin"
+ ]
+ },
+ "abusefilter-diff-item": "Махбуд"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/xmf.json b/www/wiki/extensions/AbuseFilter/i18n/xmf.json
new file mode 100644
index 00000000..a5a27455
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/xmf.json
@@ -0,0 +1,112 @@
+{
+ "@metadata": {
+ "authors": [
+ "David1010"
+ ]
+ },
+ "abusefilter-log-search-user": "მახვარებუეფი:",
+ "abusefilter-log-search-filter": "ფილტრის ID (ვერტიკალური ხაზით გაყოფილი):",
+ "abusefilter-log-search-title": "სათაური:",
+ "abusefilter-log-search-wiki": "ვიკი:",
+ "abusefilter-log-search-submit": "გორუა",
+ "abusefilter-log-detailedentry-global": "გლობალური ფილტრი $1",
+ "abusefilter-log-detailedentry-local": "ფილტრი $1",
+ "abusefilter-log-detailslink": "დეტალები",
+ "abusefilter-log-diff": "შხვანერობა",
+ "abusefilter-log-hidelink": "ხილვადობის დაყენება",
+ "abusefilter-log-details-var": "ცვალებადი",
+ "abusefilter-log-details-val": "მნიშვნელობა",
+ "abusefilter-log-details-private": "კერძო მონაცემი",
+ "abusefilter-log-details-ip": "გამავალი IP მისამართი",
+ "abusefilter-log-noactions": "არცერთი",
+ "abusefilter-log-details-diff": "რედაქტირებისას განხორციელებული ცვლილებები",
+ "abusefilter-log-linkoncontribs": "ბოროტად გამოყენების ჟურნალი",
+ "abusefilter-log-linkoncontribs-text": "ბოროტად გამოყენების ფილტრის ჟურნალი ამ მომხმარებლისათვის",
+ "abusefilter-log-hidden": "(ცვლილება დამალულია)",
+ "abusefilter-log-hidden-implicit": "(დამალულია, რადგან შესწორება წაიშალა)",
+ "abusefilter-log-cannot-see-details": "თქვენ არ გაქვთ ამ ჩანაწერის დეტალური ინფორმაციის ხილვის უფლება.",
+ "abusefilter-log-details-hidden": "თქვენ ვერ იხილავთ დამატებით ინფორმაციას ამ ფილტრის შესახებ, რადგანაც ის დამალულია ჩვეულებრივი მომხმარებლებისთვის.",
+ "abusefilter-log-hide-legend": "ჟურნალის ჩანაწერის დამალვა",
+ "abusefilter-log-hide-id": "ჟურნალის ჩანაწერების ID:",
+ "abusefilter-log-hide-hidden": "ამ ცვლილების დამალვა საზოგადოებისათვის",
+ "abusefilter-log-hide-reason": "სამანჯელი:",
+ "abusefilter-log-hide-forbidden": "თქვენ ბოროტად გამოყენების ფილტრის ჟურნალის ჩანაწერების დამალვის უფლება არა გაქვთ.",
+ "abusefilter-logentry-suppress": "\"[[$1]]\"-ის დამალვა",
+ "abusefilter-logentry-unsuppress": "\"[[$1]]\"-ის ჩვენება",
+ "abusefilter-management": "ბოროტად გამოყენების ფილტრის მართვა",
+ "abusefilter-list": "ყველა ფილტრი",
+ "abusefilter-list-id": "ფილტრის ID",
+ "abusefilter-list-status": "სტატუსი",
+ "abusefilter-list-public": "საზოგადო აღწერა",
+ "abusefilter-list-consequences": "შედეგები",
+ "abusefilter-list-visibility": "ხილვადობა",
+ "abusefilter-list-edit": "რედაქტირაფა",
+ "abusefilter-list-details": "დეტალები",
+ "abusefilter-list-limit": "რაოდენობა გვერდზე:",
+ "abusefilter-list-lastmodified": "ბოლოს განახლდა",
+ "abusefilter-list-group": "ფილტრის ჯგუფი",
+ "abusefilter-hidden": "დამალული",
+ "abusefilter-unhidden": "საზოგადოებრივი",
+ "abusefilter-enabled": "ჩართულია",
+ "abusefilter-deleted": "წაშლილია",
+ "abusefilter-disabled": "გათიშულია",
+ "abusefilter-new": "ახალი ფილტრის შექმნა",
+ "abusefilter-return": " ბოროტად გამოყენების ფილტრის მართვასთან დაბრუნება",
+ "abusefilter-status-global": "გლობალური",
+ "abusefilter-list-options": "პარამეტრეფი",
+ "abusefilter-list-options-deleted": "წაშლილი ფილტრები:",
+ "abusefilter-list-options-deleted-only": "აჩვენეთ მხოლოდ წაშლილი ფილტრები",
+ "abusefilter-list-options-deleted-hide": "დამალეთ წაშლილი ფილტრები",
+ "abusefilter-list-options-deleted-show": "აჩვენეთ მხოლოდ წაშლილი ფილტრები",
+ "abusefilter-list-options-scope": "ფილტრების ჩვენება:",
+ "abusefilter-list-options-scope-local": "მხოლოდ ადგილობრივი წესები",
+ "abusefilter-list-options-scope-global": "მხოლოდ გლობალური წესები",
+ "abusefilter-list-options-scope-all": "ადგილობრივი და გლობალური წესები",
+ "abusefilter-list-options-disabled": "გათიშული ფილტრები:",
+ "abusefilter-list-options-hidedisabled": "დამალეთ გათიშული ფილტრები",
+ "abusefilter-list-options-submit": "განახლება",
+ "abusefilter-tools-text": "აქ არის რამდენიმე სხვადასხვა ხელსაწყო, რომელიც დაგეხმარებათ ბოროტად გამოყენების ფილტრებთან მუშაობაში.",
+ "abusefilter-tools-expr": "გამოთქმათა შემოწმება",
+ "abusefilter-tools-submitexpr": "გასინჯვა",
+ "abusefilter-tools-reautoconfirm": "„autoconfirmed“ სტატუსის აღდგენა",
+ "abusefilter-tools-reautoconfirm-user": "მახვარებუეფი:",
+ "abusefilter-edit-new": "ახალი ფილტრი",
+ "abusefilter-edit-save": "ფილტრის შენახვა",
+ "abusefilter-edit-id": "ფილტრის ID",
+ "abusefilter-edit-description": "აღწერა:\n:''(ყველასთვის მისაწვდომელი)''",
+ "abusefilter-edit-group": "ფილტრის ჯგუფი:",
+ "abusefilter-edit-flags": "დროშები:",
+ "abusefilter-edit-enabled": "ფილტრის ჩართვა",
+ "abusefilter-edit-deleted": "მონიშნეთ როგორც წაშლილი",
+ "abusefilter-edit-hidden": "დამალეთ ამ ფილტრის დამატებითი ინფორმაცია ჩვეულებრივი მომხმარებლებისგან",
+ "abusefilter-edit-global": "გლობალური ფილტრი",
+ "abusefilter-edit-rules": "პირობები:",
+ "abusefilter-edit-notes": "შენიშვნები:",
+ "abusefilter-edit-lastmod": "ფილტრის ბოლო ცვლილება:",
+ "abusefilter-edit-warn-actions": "მოქმედალეფი:",
+ "abusefilter-edit-warn-preview": "არჩეული შეტყობინების წინასწარ გადახევა",
+ "abusefilter-edit-warn-edit": "შექმენით/შეასწორეთ არჩეული შეტყობინება",
+ "abusefilter-edit-tag-tag": "გამოყენებადი მონიშვნები (თითო ხაზზე)",
+ "abusefilter-edit-denied": "თქვენ ვერ იხილავთ დამატებით ინფორმაციას ამ ფილტრის შესახებ, რადგანაც ის დამალულია ჩვეულებრივი მომხმარებლებისთვის.",
+ "abusefilter-edit-main": "ფილტრის პარამეტრები",
+ "abusefilter-edit-done-subtitle": "ფილტრი გასწორებულია",
+ "abusefilter-edit-builder-group-op-arithmetic": "არითმეტიკული ოპერატორები",
+ "abusefilter-edit-builder-op-arithmetic-addition": "დამატება (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "გამოკლება(-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "გამრავლება (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "გაყოფა (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "მოდული (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "დონე (**)",
+ "abusefilter-edit-builder-group-op-comparison": "შედარების ოპერატორები",
+ "abusefilter-edit-builder-op-comparison-equal": "ტოლია (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "არ არის ტოლი (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "ნაკლები ვიდრე (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "მეტი ვიდრე (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "ნაკლები ან ტოლი (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "მეტი ან ტოლი (>=)",
+ "abusefilter-edit-builder-group-op-bool": "ლოგიკური ოპერაცია",
+ "abusefilter-edit-builder-op-bool-not": "არ (!)",
+ "abusefilter-edit-builder-op-bool-and": "და (&)",
+ "abusefilter-edit-builder-op-bool-or": "ან (|)",
+ "abusefilter-edit-builder-group-misc": "სხვადასხვაგვარი"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/yi.json b/www/wiki/extensions/AbuseFilter/i18n/yi.json
new file mode 100644
index 00000000..89484da6
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/yi.json
@@ -0,0 +1,283 @@
+{
+ "@metadata": {
+ "authors": [
+ "Imre",
+ "פוילישער",
+ "පසිඳු කාවින්ද",
+ "Har-wradim",
+ "Matma Rex",
+ "Jiddisch"
+ ]
+ },
+ "abusefilter-desc": "ווענדט אויטאמאטישע הייריסטיק צו רעדאקטירונגען",
+ "abusefilter": "שלעכט־באניצן פילטער קאנפיגוראציע",
+ "abuselog": "שלעכט־באניצן לאג",
+ "abusefilter-mustbeeditor": "צוליב זיכערהייט־גרונטן, קענען נאר באניצער מיטן רעכט ענדערן מיסברויך־פילטערס ניצן דעם אייבערפלאך.",
+ "abusefilter-warning": "'''ווארענונג''': די פעולה איז געווארן אויטאמאַטיש אידענטיציפירט אלס שעדלעך.\nאומקאנסטרוקטיווע אַקציעס וועלן גיך ווערן צוריקגעשטעלט,\nאון גראבע אדער איבערגעחזרטע אומקאנסטרוקטיווע רעדאַקטירונג וועלן ברענגען צו בלאקירן אײַער קאנטע אדער IP אדרעס.\nווען איר האַלט אַז די רעדאַקטירונג איז יא קאנסטרוקטיוו, מעגט איר קליקן \"אויפהיטן\" נאכאַמאָל צו באַשטעטיגן זי.\nא קורצע באַשרייבונג פונעם כלל וואס איז געבראכן: $1",
+ "abusefilter-disallowed": "די אקציע האט מען אידענטיפֿיצירט אויטאמאטיש ווי שעדלעך, און דעריבער גע'אַסרט.\nווען איר האַלט אַז די רעדאַקטירונג איז יא קאנסטרוקטיוו, מעגט איר קליקן \"אויפהיטן\" נאכאַמאָל צו באַשטעטיגן זי.\nא קורצע באַשרייבונג פונעם כלל וואס איז געבראכן: $1",
+ "abusefilter-blocked-display": "די פעולה ווערט גערעכנט שעדלעך,\nאון מען האט אײַך פארמײַדט פון אויספירן זי.\nדערצו, כדי שיצן {{SITENAME}}, אײַער באניצער קאנטע און אלע אסאציאירטע IP אדרעסן זענען געווארן בלאקירט פון רעדאקטירן.\nIf this has occurred in error, please contact an administrator.\nA brief description of the abuse rule which your action matched is: $1",
+ "abusefilter-blocker": "פֿילטער",
+ "abusefilter-accountreserved": "דער באניצער נאמען איז רעזערווירט פארן קרומבאניץ־פילטער.",
+ "right-abusefilter-modify": "ענדערן שעדיקן פֿילטערס",
+ "right-abusefilter-view": "באַקוקן שעדיקן פֿילטערס",
+ "right-abusefilter-log": "באקוקן פֿילטער־לאגבוך",
+ "right-abusefilter-log-detail": "באקוקן פרטימדיק דאס קרומבאניץ־לאגבוך",
+ "right-abusefilter-private": "באקוקן פריוואטע דאטן אין קרומבאניץ־לאגבוך",
+ "right-abusefilter-view-private": "באקוקן שעדיקונג־פילטערס מארקירט פריוואט",
+ "right-abusefilter-log-private": "באקוקן לאג איינצן פון שעדיקונג־פילטערס מארקירט פריוואט",
+ "right-abusefilter-hide-log": "באהאלטן איינצן אין שעדיקונג־לאגבוך",
+ "right-abusefilter-hidden-log": "באקוקן באהאלטענע אײַנגאבן אין קרומבאניץ־לאגבוך",
+ "right-abusefilter-modify-global": "שאפן אדער מאדיפיצירן גלאבאלע שעדיין פילטערס",
+ "action-abusefilter-modify": "מאדיפֿיצירן שעדיקן פֿילטערס",
+ "action-abusefilter-view": "באקוקן שעדיקן פֿילטערס",
+ "action-abusefilter-log": " באקוקן פֿילטער־לאגבוך",
+ "action-abusefilter-log-detail": "באקוקן פרטימדיק אײַנגאבן אין קרומבאניץ־לאגבוך",
+ "action-abusefilter-private": "באקוקן פריוואטע דאטן אין קרומבאניץ־לאגבוך",
+ "action-abusefilter-view-private": "באקוקן שעדיקונג־פילטערס מארקירן פריוואט",
+ "abusefilter-log": "פֿילטער לאגבוך",
+ "abusefilter-log-summary": "דער לאגבוך ווײַזט א ליסטע פון פעולות געכאפט דורך די פילטערס.",
+ "abusefilter-log-search": "דורכזוכן קרומבאניץ־לאגבוך",
+ "abusefilter-log-search-user": "באַניצער:",
+ "abusefilter-log-search-filter": "פֿילטער נומערן (שיידל מיט רערן '|')",
+ "abusefilter-log-search-title": "טיטל:",
+ "abusefilter-log-search-wiki": "וויקי:",
+ "abusefilter-log-search-impact-all": "אלע פעולות",
+ "abusefilter-log-search-action-taken-any": "יעדע",
+ "abusefilter-log-search-submit": "זוכן",
+ "abusefilter-log-detailedentry-global": "גלאבאלער פֿילטער $1",
+ "abusefilter-log-detailedentry-local": "פֿילטער $1",
+ "abusefilter-log-detailslink": "פרטים",
+ "abusefilter-log-diff": "אונטערשייד",
+ "abusefilter-log-hidelink": "ענדערן זעבארקייט",
+ "abusefilter-log-details-legend": "פרטים פאר לאגבוך איינהייט $1",
+ "abusefilter-log-details-var": "וואַריאַבל",
+ "abusefilter-log-details-val": "ווערט",
+ "abusefilter-log-details-vars": "אקציע פאראמעטערס",
+ "abusefilter-log-details-private": "פריוואטע לאג פרטים",
+ "abusefilter-log-details-ip": "IP־אדרעס פון איניציאטאר",
+ "abusefilter-log-details-checkuser": "בודק זײַן באניצער",
+ "abusefilter-log-noactions": "קיין",
+ "abusefilter-log-details-diff": "ענדערונגען אדורכגעפירט ביי רעדאקטירן",
+ "abusefilter-log-linkoncontribs": "שלעכט־באניצן לאג",
+ "abusefilter-log-linkoncontribs-text": "שלעכט־באניצן לאגבוך פאר {{GENDER:$1|דעם דאזיגן באניצער|דער דאזיגער באניצערין}}",
+ "abusefilter-log-hidden": "(איינהייט באהאלטן)",
+ "abusefilter-log-hidden-implicit": "(באהאלטן ווייל ווערסיע איז געווארן אויסגעמעקט)",
+ "abusefilter-log-cannot-see-details": "איר האט נישט ערלויבניש צו זען פרטים פון דעם ווערט.",
+ "abusefilter-log-hide-legend": "באהאלטן לאגבוך איינגאב",
+ "abusefilter-log-hide-id": "לאגבוך איינגאב ID:",
+ "abusefilter-log-hide-reason": "אורזאַך:",
+ "abusefilter-logentry-suppress": "האט פארבארגן \"[[$1]]\"",
+ "abusefilter-logentry-unsuppress": "האט געוויזן \"[[$1]]\"",
+ "abusefilter-management": "שעדיקונג־פילטער פארוואלטונג",
+ "abusefilter-list": "אלע פֿילטערס",
+ "abusefilter-list-id": "פֿילטער נומער",
+ "abusefilter-list-status": "סטאַטוס",
+ "abusefilter-list-public": "עפנו לעכב באשרייבונג",
+ "abusefilter-list-consequences": "קאנסעקווענצן",
+ "abusefilter-list-visibility": "זעבארקייט",
+ "abusefilter-list-hitcount": "טרעף צאל",
+ "abusefilter-list-edit": "רעדאַקטירן",
+ "abusefilter-list-details": "פרטים",
+ "abusefilter-list-limit": "צאל אין א בלאט:",
+ "abusefilter-list-lastmodified": "לעצט געענדערט",
+ "abusefilter-list-group": "פֿילטער גרופע",
+ "abusefilter-hidden": "פריוואט",
+ "abusefilter-unhidden": "עפֿנטלעך",
+ "abusefilter-enabled": "אַקטיוויזירט",
+ "abusefilter-deleted": "אויסגעמעקט",
+ "abusefilter-disabled": "אָפאַקטיוויזירן",
+ "abusefilter-hitcount": "$1 {{PLURAL:$1|טרעף|טרעפֿן}}",
+ "abusefilter-new": "שאפן א נייעם פילטער",
+ "abusefilter-return": "צוריק צו פילטער פארוואלטונג",
+ "abusefilter-status-global": "גלאבאַל",
+ "abusefilter-list-options": "ברירות",
+ "abusefilter-list-options-deleted": "אויסגעמעקטע פילטערס",
+ "abusefilter-list-options-deleted-only": "ווייזן נאר אויסגעמעקטע פילטערס",
+ "abusefilter-list-options-deleted-hide": "באהאלטן אויסגעמעקטן פילטערס",
+ "abusefilter-list-options-deleted-show": "איינשליסן באהאלטענע פילטערס",
+ "abusefilter-list-options-scope": "ווײַזן פילטערס:",
+ "abusefilter-list-options-scope-local": "נאר לאקאַלע כללים",
+ "abusefilter-list-options-scope-global": "נאר גלאבאלע כללים",
+ "abusefilter-list-options-scope-all": "לאקאלע און גלאבאלע רעגלען",
+ "abusefilter-list-options-disabled": "אומאקטיווירטע פֿילטערס:",
+ "abusefilter-list-options-hidedisabled": "באהאלטן אומאקטיווירטע פילטערס",
+ "abusefilter-list-options-submit": "דערהײַנטיקן",
+ "abusefilter-tools-expr": "אויסדרוק־קאנטראלירער",
+ "abusefilter-tools-submitexpr": "אפשאצן",
+ "abusefilter-tools-reautoconfirm": "צוריקשטעלן אויטא־באשטעטיקטן סטאטוס",
+ "abusefilter-tools-reautoconfirm-user": "באַניצער:",
+ "abusefilter-tools-reautoconfirm-submit": "ווידער אויטא־באשטעטיקן",
+ "abusefilter-reautoconfirm-notallowed": "איר זענט נישט דערלויבט צוריקצושטעלן אויטא־באשטעטיגטן סטאטוס.",
+ "abusefilter-reautoconfirm-done": "אויטא־באשטעטיגטן סטאטוס פון קאנטע צוריקגעשטעלט",
+ "abusefilter-edit": "רעדאקטירן שעדיקונג־פילטער",
+ "abusefilter-edit-subtitle": "רעדאקטירן פילטער $1",
+ "abusefilter-edit-subtitle-new": "שאפן פילטער",
+ "abusefilter-edit-status-label": "סטאַטיסטיק:",
+ "abusefilter-edit-status": "פון די לעצטע $1 {{PLURAL:$1|פעולה|פעולות}}, האט דער פילטער צוגעפאסט $2 ($3%).",
+ "abusefilter-edit-status-profile": "פון די לעצטע $1 {{PLURAL:$1|פעולה|פעולות}}, האט דער פילטער צוגעפאסט $2 ($3%).\nדורכשניטלעך איז זיין לויף־צײַט $4 מיליסעקונדעס, און ער ניצט אויס $5 {{PLURAL:$5|באדינג|באדינגען}} פון דער באדינג־באגרענעצונג.",
+ "abusefilter-edit-new": "נײַער פֿילטער",
+ "abusefilter-edit-save": "אױפֿהיטן טעקע",
+ "abusefilter-edit-id": "פֿילטער נומער:",
+ "abusefilter-edit-description": "באשרייבונג:\n:''(עפנטלעך זעבאר)''",
+ "abusefilter-edit-group": "פֿילטער גרופע:",
+ "abusefilter-edit-flags": "פֿענער:",
+ "abusefilter-edit-enabled": "אקטיווירן דעם פילטער",
+ "abusefilter-edit-deleted": "מארקירן ווי אויסקעמעקט",
+ "abusefilter-edit-hidden": "באהאלטן פרטים פון דעם פילטער פון באקוקן עפנטלעך",
+ "abusefilter-edit-global": "גלאבאלער פֿילטער",
+ "abusefilter-edit-rules": "תנאים:",
+ "abusefilter-edit-notes": "הערות:",
+ "abusefilter-edit-lastmod": "פֿילטער לעצטנס געענדערט:",
+ "abusefilter-edit-lastmod-text": "$1 פֿון $2",
+ "abusefilter-edit-hitcount": "פֿילטער טרעפֿונגען:",
+ "abusefilter-edit-action-disallow": "פארמײַדן באניצער פון אויספירן די פעולה",
+ "abusefilter-edit-action-tag": "מארקירן די רעדאקטירורונג פאר שפעטערער רעצענסיע",
+ "abusefilter-edit-throttle-count": "צאל ערלויבטע אקציעס:",
+ "abusefilter-edit-throttle-period": "תקופה פון צײַט:",
+ "abusefilter-edit-throttle-seconds": "$1 {{PLURAL:$1|סעקונדע|סעקונדעס}}",
+ "abusefilter-edit-warn-message": "סיסטעם־מעלדונג פאר ווארענונג:",
+ "abusefilter-edit-warn-other": "אנדער מעלדונג",
+ "abusefilter-edit-warn-other-label": "בלאטנאמען פון אנדער מעלדונג:\n:''(אן מעדיעוויקי פרעפיקס)''",
+ "abusefilter-edit-warn-actions": "אַקציעס:",
+ "abusefilter-edit-warn-preview": "פאראויסזען געקליבענע מעלדונג",
+ "abusefilter-edit-warn-edit": "שאפן/רעדאקטירן געקליבענע מעלדונג",
+ "abusefilter-edit-tag-tag": "גילטיקע [[Special:Tags|טאגן]] (איינער אין א שורה):",
+ "abusefilter-edit-denied": "איר קענט נישט באקוקן פרטים פון דעם פילטער, ווייל ער איז באהאלטן פונעם קהל.",
+ "abusefilter-edit-main": "פילטער פאראמעטערס",
+ "abusefilter-edit-done-subtitle": "פילטער רעדאקטירט",
+ "abusefilter-edit-done": "[[Special:AbuseFilter/history/$1/diff/prev/$2|אײַערע ענדערונגען]] צו [[Special:AbuseFilter/$1|פילטער $3]] זענען געווארן אײַנגעשפייכלערט.",
+ "abusefilter-edit-viewhistory": "באקוקן דעם פֿילטערס היסטאריע",
+ "abusefilter-edit-history": "היסטאריע:",
+ "abusefilter-edit-check": "קאנטראלירן סינטאקס",
+ "abusefilter-edit-badfilter": "דער פֿילטער וואס איר האט ספעציפֿירט עקזיסטירט נישט",
+ "abusefilter-edit-revert": "צוריקשטעלן אקציעס אויסגעפֿירט דורך דעם פֿילטער",
+ "abusefilter-edit-tools": "געצייג:",
+ "abusefilter-edit-test-link": "קאנטראלירן דעם פֿילטער קעגן לעצטיקע רעדאקטירונגען",
+ "abusefilter-edit-export": "עקספארטירן דעם פֿילטער אין אן אנדער וויקי",
+ "abusefilter-edit-syntaxok": "נישט געטראָפן קיין סינטאַקס פעלערן.",
+ "abusefilter-edit-syntaxerr": "סינטאַקס פעלער געטראָפן: $1",
+ "abusefilter-edit-notallowed": "איר זענט נישט דערלויבט צו שאפֿן אדער רעדאקטירן פילטערס",
+ "abusefilter-edit-builder-group-op-arithmetic": "אריטמעטישע אפעראטארן",
+ "abusefilter-edit-builder-op-arithmetic-addition": "צוגאב (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "אראפנעמען (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "טאפלען (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "צעטיילן (/)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "פאטענץ (**)",
+ "abusefilter-edit-builder-group-op-comparison": "פארגלייכס אפעראטארן",
+ "abusefilter-edit-builder-op-comparison-equal": "גלייך צו (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "נישט גלייך צו (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "ווינציקער ווי (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "גרעסער ווי (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "קלע נער אדער גלײַך (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "גרעסער אדער גלײַך (>=)",
+ "abusefilter-edit-builder-group-op-bool": "בולישע אפעראטארן",
+ "abusefilter-edit-builder-op-bool-not": "נישט (!)",
+ "abusefilter-edit-builder-op-bool-and": "און (&)",
+ "abusefilter-edit-builder-op-bool-or": "אָדער (|)",
+ "abusefilter-edit-builder-group-misc": "פארשידנס",
+ "abusefilter-edit-builder-misc-in": "אנטהאלטן אין שנורל (in)",
+ "abusefilter-edit-builder-misc-like": "פאסט צו מוסטער (like)",
+ "abusefilter-edit-builder-misc-contains": "לינקע שנורל אנטהאלט רעכטע שנורל (contains)",
+ "abusefilter-edit-builder-group-funcs": "פֿונקציאנען",
+ "abusefilter-edit-builder-funcs-length": "לענג פון שנורל (length)",
+ "abusefilter-edit-builder-funcs-norm": "נארמאלמזירן (norm)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "געפינט זיך די IP-אדרעס אין דעם דערגרייכונג-ארט?",
+ "abusefilter-edit-builder-group-vars": "וואַריאַבלען",
+ "abusefilter-edit-builder-vars-accountname": "קאנטע נאמען (ביים שאפֿן קאנטע)",
+ "abusefilter-edit-builder-vars-timestamp": "צײַטשטעמפל פון ענדערונג אין יוניקס פֿארמאט",
+ "abusefilter-edit-builder-vars-action": "אַקציע",
+ "abusefilter-edit-builder-vars-addedlines": "שורות צוגעלייגט בײַם ענדערן",
+ "abusefilter-edit-builder-vars-newsize": "נייע בלאט גרייס",
+ "abusefilter-edit-builder-vars-oldsize": "אלטע בלאט גרייס",
+ "abusefilter-edit-builder-vars-removedlines": "שורות אראפגענומען בײַם רעדאקטירן",
+ "abusefilter-edit-builder-vars-summary": "רעדאקטירונג רעזומע/סיבה",
+ "abusefilter-edit-builder-vars-article-id": "בלאט נומער",
+ "abusefilter-edit-builder-vars-article-ns": "בלאט נאמענטייל",
+ "abusefilter-edit-builder-vars-article-text": "בלאט טיטל (אן נאמענטייל)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "פֿולער בלאטנאמען",
+ "abusefilter-edit-builder-vars-article-views": "בלאט באקוקן",
+ "abusefilter-edit-builder-vars-movedfrom-id": "בלאט־נומער פון מקור בלאט",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "נאמענטייל פון מקור בלאט",
+ "abusefilter-edit-builder-vars-movedfrom-text": "טיטל פון מקור־בלאט",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "פולשטענדיקער נאמען פון מקור־בלאט",
+ "abusefilter-edit-builder-vars-movedto-id": "בלאט־נומער פון ציל בלאט",
+ "abusefilter-edit-builder-vars-movedto-ns": "נאמענטייל פון ציל בלאט",
+ "abusefilter-edit-builder-vars-movedto-text": "טיטל פון ציל בלאט",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "פולשטענדיקער טיטל פון ציל בלאט",
+ "abusefilter-edit-builder-vars-user-editcount": "רעדאקטירונג צאל פון באניצער",
+ "abusefilter-edit-builder-vars-user-age": "עלטער פון דער באניצער־קאנטע",
+ "abusefilter-edit-builder-vars-user-name": "נאמען פון באניצער־קאנטע",
+ "abusefilter-edit-builder-vars-user-rights": "רעכטן וואס א באניצער האט",
+ "abusefilter-edit-builder-vars-user-blocked": "צי באניצער איז בלאקירט",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "צייט ווען ע־פאסט אדרעס איז געווארן באשטעטיקט",
+ "abusefilter-edit-builder-vars-recent-contributors": "לעצטע צען באארבעטער פון דעם בלאט",
+ "abusefilter-edit-builder-vars-first-contributor": "ערשטע באניצער וואס האט בייגישטייערט צום בלאט",
+ "abusefilter-edit-builder-vars-all-links": "אלע דרויסנדיקע לינקען אין נײַעם טעקסט",
+ "abusefilter-edit-builder-vars-old-text": "אלטער בלאט וויקיטעקסט, פאר דער רעדאקטירונג",
+ "abusefilter-edit-builder-vars-new-text": "נייער בלאט וויקיטעקסט, פאר דער רעדאקטירונג",
+ "abusefilter-edit-builder-vars-restrictions-create": "שאַפֿן באַשיצונג פון דעם בלאַט",
+ "abusefilter-edit-builder-vars-restrictions-upload": "אַרויפֿלאדן באַשיצונג פון דער טעקע",
+ "abusefilter-edit-builder-vars-file-size": "גרייס פון טעקע אין בייטן",
+ "abusefilter-filter-log": "לעצטיקע פילטער ענדערונגען",
+ "abusefilter-history-foruser": "ענדערונגען פון $1",
+ "abusefilter-history-hidden": "פֿאַרבאָרגן",
+ "abusefilter-history-enabled": "אַקטיוויזירט",
+ "abusefilter-history-global": "גלאבאַל",
+ "abusefilter-history-timestamp": "צײַט",
+ "abusefilter-history-user": "באַניצער",
+ "abusefilter-history-flags": "פֿענער:",
+ "abusefilter-history-filter": "פילטער כלל",
+ "abusefilter-history-comments": "הערות",
+ "abusefilter-history-actions": "אַקציעס",
+ "abusefilter-history-backedit": "צוריק צום פילטער רעדאקטאר",
+ "abusefilter-history-deleted": "אויסגעמעקט",
+ "abusefilter-history-filterid": "פֿילטער",
+ "abusefilter-history-select-legend": "ראפינירן זוך",
+ "abusefilter-history-select-user": "באַניצער:",
+ "abusefilter-history-select-submit": "ראפֿינירן",
+ "abusefilter-history-diff": "ענדערונגען",
+ "abusefilter-action-tag": "טאַג",
+ "abusefilter-action-throttle": "דערשטיקן",
+ "abusefilter-action-warn": "וואָרענען",
+ "abusefilter-action-block": "פאַרשפּאַרן",
+ "abusefilter-action-degroup": "אַוועקנעמען פון גרופּעס",
+ "abusefilter-action-disallow": "פֿארמיידן",
+ "abusefilter-revert-title": "צוריקשטעלן אלע ענדערונגען פֿון פֿילטער $1",
+ "abusefilter-revert-preview-item": "$1: $2 {{GENDER:$7|האט אדורכגעפירט}} $3 אויף $4.\nאקציעס צו ווערן צוריקגעשטעלט: $5 ($6)",
+ "abusefilter-revert-periodstart": "תקופה אָנהייב:",
+ "abusefilter-revert-periodend": "תקופה סוף",
+ "abusefilter-revert-search": "קלויבט פעולות",
+ "abusefilter-revert-filter": "פֿילטער:",
+ "abusefilter-revert-confirm": "באַשטעטיקן",
+ "abusefilter-revert-reasonfield": "אורזאַך:",
+ "abusefilter-test-submit": "פּרובירן",
+ "abusefilter-test-load": "אָנלאָדן",
+ "abusefilter-test-user": "ענדערונגען פֿון באניצער:",
+ "abusefilter-test-period-start": "ענדערונגען זײַט:",
+ "abusefilter-test-period-end": "ענדערונגען פֿאר:",
+ "abusefilter-test-page": "ענדערונגען צום בלאט:",
+ "abusefilter-test-shownegative": "ווייזן ענדערונגען וואס זענען נישט צוגעפאסט צום פֿילטער",
+ "abusefilter-changeslist-examine": "בודק זיין",
+ "abusefilter-examine-legend": "אויסקלויבן ענדערונגען",
+ "abusefilter-examine-user": "באַניצער:",
+ "abusefilter-examine-title": "בלאַטנאָמען:",
+ "abusefilter-examine-submit": "זוכן",
+ "abusefilter-topnav-home": "היימבלאַט",
+ "abusefilter-topnav-log": "שלעכט־באניצן לאג",
+ "abusefilter-topnav-import": "אימפארטירן פֿילטער",
+ "abusefilter-log-name": "פֿילטער לאגבוך",
+ "abusefilter-log-noresults": "קיין רעזולטאטן",
+ "abusefilter-diff-title": "אונטערשייד צווישן ווערסיעס",
+ "abusefilter-diff-item": "איינהייט",
+ "abusefilter-diff-version": "ווערסיע פון $1 {{GENDER:$3|דורך}} $2",
+ "abusefilter-diff-info": "גרונטלעכע אינפֿארמאַציע",
+ "abusefilter-diff-pattern": "פילטער תנאָים",
+ "abusefilter-diff-invalid": "מען קען נישט באקומען די געזוכטע ווערסיעס",
+ "abusefilter-diff-backhistory": "צוריק צו פֿילטער היסטאריע",
+ "abusefilter-diff-prev": "עלטערע ענדערונג",
+ "abusefilter-diff-next": "נײַערע ענדערונג",
+ "abusefilter-import-submit": "אימפארטירן דאַטן",
+ "abusefilter-group-default": "גרונטלעך",
+ "abusefilter-http-error": "א HTTP גרײַז האט פאַסירט: $1",
+ "apierror-abusefilter-badsyntax": "דער פֿילטער האט אומגילטיגן סינטאקס."
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/yo.json b/www/wiki/extensions/AbuseFilter/i18n/yo.json
new file mode 100644
index 00000000..61bed6b6
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/yo.json
@@ -0,0 +1,82 @@
+{
+ "@metadata": {
+ "authors": [
+ "Demmy"
+ ]
+ },
+ "abusefilter-mustbeeditor": "Fún ìdáàbò, àwọn oníṣe tí wọ́n ní ẹ̀tọ́ láti ṣàtúnṣe àwọn ajọ̀ ìbàjẹ́ nìkan ni wọ́n le lo ìfojúkojú yìí.",
+ "abusefilter-disallowed": "Ìgbéṣe yìí ti jẹ́ dídámọ̀ fúnrararẹ̀ bíi eléwu, bíi bẹ́ẹ̀ ó ti jẹ́ dídílọ́nà.\nTí ẹ bá nígbàgbọ́ pé àtúnṣe yín jẹ́ awúlò, ẹ jọ̀wọ́ ẹ fi tó olùmójútó kan létí ohun tí ẹ fẹ́ ṣe.\nÌjúwe ní sókí òfin ìbàjẹ́ tí ó bá ìgbéṣe yín mu ni: $1",
+ "abusefilter-blocked-display": "Ìgbéṣe yìí ti jẹ́ dídámọ̀ fúnrararẹ̀ bíi eléwu, bíi bẹ́ẹ̀ ẹ ti jẹ́ dídílọ́nà láti ṣeé.\nBákannáà láti dá àbò bo {{SITENAME}}, àpamọ́ oníṣe yín àti gbogbo àwọn àdírẹ́sì IP tí wọ́n jọṣe mọ́ọn ti jẹ́ dídílọ́nà láti ṣàtúnṣe.\nTó bá jẹ́ pé àsìṣe ló ṣẹlẹ̀, ẹ jọ̀wọ́ ẹ fi tó olùmójútó kan létí.\nÌjúwe ní sókí òfin ìbàjẹ́ tí ó bá ìgbéṣe yín mu ni: $1",
+ "abusefilter-log-search-user": "Oníṣe:",
+ "abusefilter-log-search-filter": "Nọ́mbà Ìdámọ̀ Ajọ̀:",
+ "abusefilter-log-search-title": "Àkọlé:",
+ "abusefilter-log-search-wiki": "Wiki:",
+ "abusefilter-log-search-submit": "Àwárí",
+ "abusefilter-log-noactions": "kankan",
+ "abusefilter-log-details-diff": "Àwọn ìyípadà nínú àtúnṣe",
+ "abusefilter-log-hide-reason": "Ìdíẹ̀:",
+ "abusefilter-list-edit": "Àtúnṣe",
+ "abusefilter-list-details": "Ẹ̀kúnrẹ́rẹ́",
+ "abusefilter-list-limit": "Iye lójúewé kọ̀ọ̀kan",
+ "abusefilter-hidden": "Àdáni",
+ "abusefilter-enabled": "Gbígbàláyè",
+ "abusefilter-deleted": "Píparẹ́",
+ "abusefilter-disabled": "Dídálẹ́kun",
+ "abusefilter-tools-reautoconfirm-user": "Oníṣe:",
+ "abusefilter-edit-status-label": "Àwọn statistiki:",
+ "abusefilter-edit-deleted": "Fàlàsí bíi píparẹ́",
+ "abusefilter-edit-lastmod-text": "$1 latọwọ́ $2",
+ "abusefilter-edit-throttle-seconds": "{{PLURAL:$1|ìṣẹ́júkejì|ìṣẹ́júkejì}} $1",
+ "abusefilter-edit-warn-other": "Ìránṣẹ́ míràn",
+ "abusefilter-edit-warn-actions": "Àwọn ìgbéṣe:",
+ "abusefilter-edit-warn-preview": "Àkọ́yẹ̀wò ìránṣẹ́ ṣíṣàyàn",
+ "abusefilter-edit-warn-edit": "Ìdá/Àtúnṣe ìránṣẹ́ ṣíṣàyàn",
+ "abusefilter-edit-history": "Ìtàn:",
+ "abusefilter-edit-tools": "Àwọn irinṣẹ́:",
+ "abusefilter-edit-builder-group-op-arithmetic": "Àwọn amúṣeṣẹ́ ìsirò",
+ "abusefilter-edit-builder-op-arithmetic-addition": "Ìròpọ̀ (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "Ìyọkúrò (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "Ìsọdipúpọ̀ (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "Pínpín (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "Ìṣẹ́kù (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "Agbára (**)",
+ "abusefilter-edit-builder-group-op-comparison": "Àwọn amúṣeṣẹ́ ìfiwéra",
+ "abusefilter-edit-builder-op-comparison-equal": "Dọ́gba sí (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "Kò dọ́gba mọ́ (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "Dínjùlọ sí (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "Pọ̀jùlọ sí (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "Kéré jùlọ tàbí dọ́gba mọ́ (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "Tóbi jùlọ tàbí dọ́gba mọ́ (>=)",
+ "abusefilter-edit-builder-group-op-bool": "Àwọn amúṣeṣẹ́ Boole",
+ "abusefilter-edit-builder-op-bool-not": "Kòjẹ́ (!)",
+ "abusefilter-edit-builder-op-bool-and": "Àti (&)",
+ "abusefilter-edit-builder-op-bool-or": "Tàbí (|)",
+ "abusefilter-edit-builder-group-funcs": "Àwọn ìgbéṣe",
+ "abusefilter-edit-builder-vars-accountname": "Orúkọ àpamọ́ (nígbà ìdásílẹ̀ àpamọ́)",
+ "abusefilter-edit-builder-vars-action": "Ìgbéṣe",
+ "abusefilter-edit-builder-vars-newsize": "Ìtóbi ojúewé tuntun",
+ "abusefilter-edit-builder-vars-removedlines": "Àwọn ìlà tó jẹ́ yíyọkúrò nínú àtúnṣe",
+ "abusefilter-edit-builder-vars-article-id": "Nọ́mbà Ìdámọ̀ Ojúewé",
+ "abusefilter-history-foruser": "Àwọn ìyípadà látọwọ́ $1",
+ "abusefilter-history-hidden": "Bíbòmọ́lẹ̀",
+ "abusefilter-history-enabled": "Gbígbàláyè",
+ "abusefilter-history-timestamp": "Àsìkò",
+ "abusefilter-history-user": "Oníṣe",
+ "abusefilter-history-deleted": "Píparẹ́",
+ "abusefilter-history-filterid": "Ajọ̀",
+ "abusefilter-history-select-user": "Oníṣe:",
+ "abusefilter-history-diff": "Àwọn àtúnṣe",
+ "abusefilter-action-tag": "Ṣàlẹ̀mọ́",
+ "abusefilter-action-warn": "Ṣèkìlọ̀",
+ "abusefilter-action-block": "Dílọ́nà",
+ "abusefilter-test-user": "Àwọn ìyípadà látọwọ́ oníṣe:",
+ "abusefilter-test-period-start": "Àwọn ìyípadà tó ṣẹlẹ̀ lẹ́yìn:",
+ "abusefilter-test-period-end": "Àwọn ìyípadà tó ṣẹlẹ̀ síwájú:",
+ "abusefilter-test-page": "Àwọn ìyípadà tó ṣẹlẹ̀ sí ojúewé:",
+ "abusefilter-changeslist-examine": "ṣàgbéwò",
+ "abusefilter-examine-legend": "Àṣàyàn àwọn ìyípadà",
+ "abusefilter-examine-diff": "Ìyàtò URL:",
+ "abusefilter-examine-user": "Oníṣe:",
+ "abusefilter-examine-title": "Àkọlé ojúewé:",
+ "abusefilter-examine-submit": "Ṣàwárí"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/yue.json b/www/wiki/extensions/AbuseFilter/i18n/yue.json
new file mode 100644
index 00000000..eff05259
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/yue.json
@@ -0,0 +1,356 @@
+{
+ "@metadata": {
+ "authors": [
+ "Antonytse",
+ "Horacewai2",
+ "Shinjiman",
+ "Waihorace",
+ "Wong128hk",
+ "Matma Rex",
+ "Deryck Chan",
+ "Hello903hello"
+ ]
+ },
+ "abusefilter-desc": "應用自動行為到編輯",
+ "abusefilter": "濫用過濾器設定",
+ "abuselog": "濫用紀錄",
+ "abusefilter-intro": "歡迎到濫用過濾器管理界面。\n濫用過濾器係一個自動化軟件程序應用自動行為到任何動作度。\n呢個界面顯示一個定義咗嘅過濾器,容許去改佢哋。",
+ "abusefilter-mustbeeditor": "基於保安理由,淨係得有權限改濫用過濾器嘅用戶先可以用呢個界面。",
+ "abusefilter-warning": "'''警告:'''爾個動作已經自動認定咗做有害嘅。\n無建設性嘅動作將會好快噉還原,\n同埋過份或者重覆嘅編輯會令到你個戶口或者電腦封鎖。\n如果你相信爾個動作係有建設性嘅,你可以遞交多一次去確認佢。\n一個簡明濫用條件嘅描述同你嘅動作配合嘅係: $1",
+ "abusefilter-disallowed": "爾個動作已經自動認定咗做有害嘅,已經唔容許。\n如果你相信爾個動作係有建設性嘅,請同管理員聯絡,通知佢哋你啱啱想做物。\n一個簡明濫用條件嘅描述同你嘅動作配合嘅係: $1",
+ "abusefilter-blocked-display": "呢個動作已經自動認定咗做有害嘅,\n你已經被防止執行佢。\n除此之外,要保謢{{SITENAME}},你嘅戶口同全部有關嘅IP地址已經全部封鎖,唔畀編輯。\n如果出錯,請同管理員聯絡。\n一個簡明濫用條件嘅描述同你嘅動作配合嘅係: $1",
+ "abusefilter-degrouped": "呢個動作已經自動認定咗做有害嘅,\n結果,佢已經唔容許,重有,你個戶口可能已經被盜用,所有嘅權限已經拎走咗。\n如果你相信呢個係有錯嘅話,請聯絡事務員為呢個動作解釋,你嘅權限可能會恢復。\n一個簡明濫用條件嘅描述同你嘅動作配合嘅係: $1",
+ "abusefilter-autopromote-blocked": "呢個動作已經自動認定咗做有害嘅,已經唔容許。\n除此之外,為咗保安理由,一啲開戶口嘅權限已經響你個戶口度拎走咗。\n一個簡明濫用條件嘅描述同你嘅動作配合嘅係: $1",
+ "abusefilter-blocker": "濫用過濾器",
+ "abusefilter-blockreason": "自動被濫用過濾器封鎖。\n配合規則嘅描述: $1",
+ "abusefilter-degroupreason": "濫用過濾器自動拎走咗權限。 \n準則係: $1",
+ "abusefilter-accountreserved": "呢個戶口名預留畀濫用過濾器用。",
+ "right-abusefilter-modify": "改濫用過濾器",
+ "right-abusefilter-view": "睇濫用過濾器",
+ "right-abusefilter-log": "去睇濫用紀錄",
+ "right-abusefilter-log-detail": "去睇濫用紀錄細節",
+ "right-abusefilter-private": "去睇濫用紀錄裏面嘅資料",
+ "right-abusefilter-modify-restricted": "用限制動作改濫用過濾器",
+ "right-abusefilter-revert": "復原一個濫用過濾器嘅全部修改",
+ "right-abusefilter-view-private": "睇一個私密嘅過濾器",
+ "action-abusefilter-modify": "改濫用過濾器",
+ "action-abusefilter-view": "睇濫用過濾器",
+ "action-abusefilter-log": "去睇濫用紀錄",
+ "action-abusefilter-log-detail": "去睇濫用紀錄細節",
+ "action-abusefilter-private": "去睇濫用紀錄裏面嘅資料",
+ "action-abusefilter-modify-restricted": "用限制動作改濫用過濾器",
+ "action-abusefilter-revert": "復原一個濫用過濾器嘅全部修改",
+ "action-abusefilter-view-private": "睇私密嘅過濾器",
+ "abusefilter-log": "濫用過濾器紀錄",
+ "abusefilter-log-summary": "呢個紀錄列示咗由過濾器捉到嘅全部動作。",
+ "abusefilter-log-search": "搵濫用紀錄",
+ "abusefilter-log-search-user": "用戶:",
+ "abusefilter-log-search-filter": "過濾器ID:",
+ "abusefilter-log-search-title": "標題:",
+ "abusefilter-log-search-submit": "搵",
+ "abusefilter-log-entry": "$1: $2觸發咗濫用過濾器,響$4做咗『$3』動作。\n做咗嘅嘢: $5;\n過濾器描述: $6",
+ "abusefilter-log-detailedentry-meta": "$1: $2觸發咗$3,響$5做咗『$4』動作。\n做咗嘅嘢: $6;\n過濾器描述: $7 ($8)",
+ "abusefilter-log-detailedentry-global": "全域過濾器$1",
+ "abusefilter-log-detailedentry-local": "過濾器$1",
+ "abusefilter-log-detailslink": "細節",
+ "abusefilter-log-details-legend": "紀錄項目細節D$1",
+ "abusefilter-log-details-var": "變數",
+ "abusefilter-log-details-val": "值",
+ "abusefilter-log-details-vars": "動作參數",
+ "abusefilter-log-details-private": "私人日誌資料",
+ "abusefilter-log-details-ip": "原生IP地址",
+ "abusefilter-log-noactions": "無",
+ "abusefilter-log-details-diff": "響編輯嘅更動",
+ "abusefilter-log-linkoncontribs": "濫用紀錄",
+ "abusefilter-log-linkoncontribs-text": "{{GENDER:$1|爾位用戶}}嘅濫用紀錄",
+ "abusefilter-management": "濫用過濾器管理",
+ "abusefilter-list": "全部過濾器",
+ "abusefilter-list-id": "過濾器ID",
+ "abusefilter-list-status": "狀態",
+ "abusefilter-list-public": "公共描述",
+ "abusefilter-list-consequences": "結果",
+ "abusefilter-list-visibility": "可見性",
+ "abusefilter-list-hitcount": "觸發次數",
+ "abusefilter-list-edit": "編輯",
+ "abusefilter-list-details": "細節",
+ "abusefilter-list-limit": "每一版嘅數目:",
+ "abusefilter-list-lastmodified": "上次修改",
+ "abusefilter-hidden": "私人",
+ "abusefilter-unhidden": "公共",
+ "abusefilter-enabled": "開咗",
+ "abusefilter-deleted": "刪咗",
+ "abusefilter-disabled": "閂咗",
+ "abusefilter-hitcount": "$1次",
+ "abusefilter-new": "開一個新過濾器",
+ "abusefilter-return": "返去過濾器管理",
+ "abusefilter-status-global": "全域",
+ "abusefilter-list-options": "選項",
+ "abusefilter-list-options-deleted": "刪咗嘅過濾器:",
+ "abusefilter-list-options-deleted-only": "只係顯示刪咗嘅過濾器",
+ "abusefilter-list-options-deleted-hide": "隱藏刪咗嘅過濾器",
+ "abusefilter-list-options-deleted-show": "包含刪咗嘅過濾器",
+ "abusefilter-list-options-disabled": "閂咗嘅過濾器:",
+ "abusefilter-list-options-hidedisabled": "隱藏閂咗嘅過濾器",
+ "abusefilter-list-options-submit": "更新",
+ "abusefilter-tools-text": "呢度有啲有用嘅工具去將濫用過濾器公式化同除錯。",
+ "abusefilter-tools-expr": "表達式測試器",
+ "abusefilter-tools-submitexpr": "評估",
+ "abusefilter-tools-reautoconfirm": "恢復自動確認狀態",
+ "abusefilter-tools-reautoconfirm-user": "用戶:",
+ "abusefilter-tools-reautoconfirm-submit": "重新確認",
+ "abusefilter-reautoconfirm-none": "呢位用戶冇將{{GENDER:$1|佢|佢|佢哋}}嘅自動確認狀態停用。",
+ "abusefilter-reautoconfirm-notallowed": "你唔容許去恢復自動確認狀態。",
+ "abusefilter-reautoconfirm-done": "戶口嘅自動確認狀態已經恢復",
+ "abusefilter-status": "響之前$1次動作,有$2次 ($3%) 已經到咗$4次條件上限,以及有$5次 ($6%) 同其中一組而定開咗嘅過濾器配合。",
+ "abusefilter-edit": "改濫用過濾器",
+ "abusefilter-edit-subtitle": "編輯緊過濾器$1",
+ "abusefilter-edit-oldwarning": "<strong>你而家編輯緊呢個過濾器嘅舊版本。\n個統計係計響最近過本嘅過濾器度。\n如果你保存你嘅修改,你會覆蓋自從你編輯修訂嘅全部修改。</strong> &bull;\n[[Special:AbuseFilter/history/$2|返去呢個過濾器嘅歷史]]。",
+ "abusefilter-edit-status-label": "統計:",
+ "abusefilter-edit-status": "響之前$1{{PLURAL:$1|次|次}}動作,呢個過濾器已經配合咗$2次 ($3%)。",
+ "abusefilter-edit-status-profile": "響之前$1{{PLURAL:$1|次|次}}動作,呢個過濾器已經配合咗$2次 ($3%)。\n平均,佢嘅運行時間係$4毫秒,用左$5{{PLURAL:$5|次|次}}限制。",
+ "abusefilter-edit-new": "新過濾器",
+ "abusefilter-edit-save": "保存過濾器",
+ "abusefilter-edit-id": "過濾器ID:",
+ "abusefilter-edit-description": "描述:\n:''(公共睇得到)''",
+ "abusefilter-edit-flags": "旗:",
+ "abusefilter-edit-enabled": "開呢個過濾器",
+ "abusefilter-edit-deleted": "標示做刪咗",
+ "abusefilter-edit-hidden": "隱藏呢個過濾器響公共顯示嘅細節",
+ "abusefilter-edit-global": "全域過濾器",
+ "abusefilter-edit-rules": "條件:",
+ "abusefilter-edit-notes": "筆記:",
+ "abusefilter-edit-lastmod": "過濾器上次修改:",
+ "abusefilter-edit-lastmod-text": "響$1由$2改",
+ "abusefilter-edit-hitcount": "過濾器觸發次數:",
+ "abusefilter-edit-consequences": "當配合嗰陣做嘅動作",
+ "abusefilter-edit-action-warn": "畀用戶警告之後觸發嘅動作",
+ "abusefilter-edit-action-disallow": "以問題形式防止用戶去做動作",
+ "abusefilter-edit-action-blockautopromote": "拎走用戶嘅自動確認狀態",
+ "abusefilter-edit-action-degroup": "響全部組度拎走用戶",
+ "abusefilter-edit-action-block": "封鎖用戶/IP地址,唔畀編輯",
+ "abusefilter-edit-action-throttle": "如果用戶去到一個上限率嗰陣觸發動作",
+ "abusefilter-edit-action-rangeblock": "封鎖原有用戶嘅 /16 範圍",
+ "abusefilter-edit-action-tag": "摘編輯再睇落去",
+ "abusefilter-edit-throttle-count": "可以容許嘅動作:",
+ "abusefilter-edit-throttle-period": "時段:",
+ "abusefilter-edit-throttle-seconds": "$1秒",
+ "abusefilter-edit-throttle-groups": "由組截住:\n:''(一行一個,用逗號組合)''",
+ "abusefilter-edit-warn-message": "用系統訊息去警告:",
+ "abusefilter-edit-warn-other": "其它訊息",
+ "abusefilter-edit-warn-other-label": "其它訊息嘅頁名:\n:''(無MediaWiki字頭)''",
+ "abusefilter-edit-warn-actions": "動作:",
+ "abusefilter-edit-warn-preview": "預覽揀咗嘅訊息",
+ "abusefilter-edit-warn-edit": "開/編輯揀咗嘅訊息",
+ "abusefilter-edit-tag-tag": "[[Special:Tags|摘]]嘅名 (一行一個):",
+ "abusefilter-edit-denied": "你唔係以去睇呢個過濾器嘅細節,因為響公共顯示度隱藏咗。",
+ "abusefilter-edit-main": "過濾器參數",
+ "abusefilter-edit-done-subtitle": "改咗嘅過濾器",
+ "abusefilter-edit-done": "[[Special:AbuseFilter/$1|過濾器$3]]經已[[Special:AbuseFilter/history/$1/diff/prev/$2|改咗]]。",
+ "abusefilter-edit-badsyntax": "你所指定嘅過濾器有語法錯誤。\n個處理器嘅輸出係: <pre>$1</pre>",
+ "abusefilter-edit-restricted": "你唔可以改呢個過濾器,由於佢有一個或者更多限制咗嘅動作。\n問一位有權限嘅用戶去幫你改,去加限制咗嘅動作。",
+ "abusefilter-edit-viewhistory": "睇呢個過濾器嘅歷史",
+ "abusefilter-edit-history": "歷史:",
+ "abusefilter-edit-check": "檢查語法",
+ "abusefilter-edit-badfilter": "你所指定嘅過濾器唔存在",
+ "abusefilter-edit-revert": "還原由呢個過濾器嘅動作",
+ "abusefilter-edit-tools": "工具:",
+ "abusefilter-edit-test-link": "用呢個過濾器試最近嘅編輯",
+ "abusefilter-edit-export": "倒出呢個過濾器到另一個wiki",
+ "abusefilter-edit-syntaxok": "偵測到無語法錯誤。",
+ "abusefilter-edit-syntaxerr": "偵測到語法錯誤: $1",
+ "abusefilter-edit-bad-tags": "你所指定嘅一個或者更多個嘅標籤無效。\n標籤係應該要短嘅,佢地唔應該有一啲特別字元。",
+ "abusefilter-edit-notallowed": "你無權新增或者更改過濾器",
+ "abusefilter-edit-builder-select": "揀一個選項,去加佢到個標記度",
+ "abusefilter-edit-builder-group-op-arithmetic": "計數運算符",
+ "abusefilter-edit-builder-op-arithmetic-addition": "加數 (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "減數 (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "乘數 (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "除數 (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "模數 (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "次方 (**)",
+ "abusefilter-edit-builder-group-op-comparison": "比較運算符",
+ "abusefilter-edit-builder-op-comparison-equal": "等於 (==)",
+ "abusefilter-edit-builder-op-comparison-notequal": "唔等於 (!=)",
+ "abusefilter-edit-builder-op-comparison-lt": "細過 (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "大過 (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "細過或等於 (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "大過或等於 (>=)",
+ "abusefilter-edit-builder-group-op-bool": "布林運算符",
+ "abusefilter-edit-builder-op-bool-not": "非/Not (!)",
+ "abusefilter-edit-builder-op-bool-and": "同/And (&)",
+ "abusefilter-edit-builder-op-bool-or": "或/Or (|)",
+ "abusefilter-edit-builder-op-bool-xor": "異/XOR (^)",
+ "abusefilter-edit-builder-group-misc": "雜項",
+ "abusefilter-edit-builder-misc-in": "字串有 (in)",
+ "abusefilter-edit-builder-misc-like": "特徵配合 (like)",
+ "abusefilter-edit-builder-misc-rlike": "正表配合 (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "正則匹配,分大小楷(irlike)",
+ "abusefilter-edit-builder-misc-contains": "左字串有右字串 (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "字面字串 (\"\")",
+ "abusefilter-edit-builder-misc-tern": "三運算符 (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "條件 (if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "功能",
+ "abusefilter-edit-builder-funcs-length": "字串長度 (length)",
+ "abusefilter-edit-builder-funcs-lcase": "到細楷 (lcase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "標準化混淆字元1 (ccnorm)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "拎走雙字元 (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "特別字元/總字元數 (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "標準化 (norm)",
+ "abusefilter-edit-builder-funcs-count": "字串X響字串Y出現嘅次數 (count)",
+ "abusefilter-edit-builder-funcs-rcount": "字串X響字串Y出現嘅正表次數 (rcount)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "拎走空白 (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "拎走特別字元 (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "IP響特定範圍? (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "響多重細字串搵字串 (contains_any)",
+ "abusefilter-edit-builder-funcs-substr": "細字串 (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "響字串嘅細字串位置 (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "改細字串做字串 (str_replace)",
+ "abusefilter-edit-builder-funcs-set_var": "設定變數 (set_var)",
+ "abusefilter-edit-builder-group-vars": "變數",
+ "abusefilter-edit-builder-vars-accountname": "戶口名 (on account creation)",
+ "abusefilter-edit-builder-vars-timestamp": "Unix更改時間截記",
+ "abusefilter-edit-builder-vars-action": "動作",
+ "abusefilter-edit-builder-vars-addedlines": "編輯加咗行數",
+ "abusefilter-edit-builder-vars-delta": "編輯改咗大細",
+ "abusefilter-edit-builder-vars-diff": "編輯嘅差異",
+ "abusefilter-edit-builder-vars-newsize": "版嘅新大細",
+ "abusefilter-edit-builder-vars-oldsize": "版嘅舊大細",
+ "abusefilter-edit-builder-vars-removedlines": "編輯拎走咗行數",
+ "abusefilter-edit-builder-vars-summary": "編輯摘要/原因",
+ "abusefilter-edit-builder-vars-article-id": "頁ID",
+ "abusefilter-edit-builder-vars-article-ns": "頁空間名",
+ "abusefilter-edit-builder-vars-article-text": "頁名 (無空間名)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "完整頁標題",
+ "abusefilter-edit-builder-vars-movedfrom-id": "移動來源頁ID",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "移動來源頁空間名",
+ "abusefilter-edit-builder-vars-movedfrom-text": "移動來源頁標題",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "移動來源頁完整標題",
+ "abusefilter-edit-builder-vars-movedto-id": "移動目的頁ID",
+ "abusefilter-edit-builder-vars-movedto-ns": "移動目的頁空間名",
+ "abusefilter-edit-builder-vars-movedto-text": "移動目的頁完整標題",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "移動目的頁完整標題",
+ "abusefilter-edit-builder-vars-user-editcount": "用戶編輯次數",
+ "abusefilter-edit-builder-vars-user-age": "用戶戶口年期",
+ "abusefilter-edit-builder-vars-user-name": "用戶戶口名",
+ "abusefilter-edit-builder-vars-user-groups": "用戶響組 (包埋當然嘅)",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "電郵確認時間",
+ "abusefilter-edit-builder-vars-recent-contributors": "對呢版嘅上十位編者",
+ "abusefilter-edit-builder-vars-all-links": "新字加外連",
+ "abusefilter-edit-builder-vars-added-links": "編輯加咗嘅全部外連",
+ "abusefilter-edit-builder-vars-removed-links": "編輯拎走咗嘅全部外連",
+ "abusefilter-edit-builder-vars-old-text": "響編輯之前嘅舊頁wiki字",
+ "abusefilter-edit-builder-vars-new-text": "響編輯之後嘅新頁wiki字",
+ "abusefilter-edit-builder-vars-new-text-stripped": "切咗標記嘅新頁字",
+ "abusefilter-edit-builder-vars-new-html": "新修訂處理過嘅HTML源碼",
+ "abusefilter-edit-builder-vars-restrictions-edit": "響嗰版嘅保謢等級",
+ "abusefilter-edit-builder-vars-restrictions-move": "搬嗰版嘅保謢等級",
+ "abusefilter-edit-builder-vars-old-text-stripped": "切咗標記嘅舊頁字",
+ "abusefilter-edit-builder-vars-old-links": "響編輯之前嘅連結",
+ "abusefilter-edit-builder-vars-old-html": "舊wiki字處理過嘅HTML",
+ "abusefilter-edit-builder-vars-minor-edit": "編輯係小修改",
+ "abusefilter-edit-builder-vars-file-sha1": "檔案內容嘅SHA1切細值",
+ "abusefilter-filter-log": "最近過濾修改",
+ "abusefilter-history": "濫用過濾器#$1嘅更改歷史",
+ "abusefilter-history-foruser": "$1嘅更改",
+ "abusefilter-history-hidden": "隱藏咗",
+ "abusefilter-history-enabled": "開咗",
+ "abusefilter-history-global": "全域",
+ "abusefilter-history-timestamp": "時間",
+ "abusefilter-history-user": "用戶",
+ "abusefilter-history-public": "公共過濾器描述",
+ "abusefilter-history-flags": "旗",
+ "abusefilter-history-filter": "過濾器規則",
+ "abusefilter-history-comments": "註解",
+ "abusefilter-history-actions": "動作",
+ "abusefilter-history-backedit": "返去過濾器編輯器",
+ "abusefilter-history-deleted": "刪咗",
+ "abusefilter-history-filterid": "過濾",
+ "abusefilter-history-select-legend": "細搵",
+ "abusefilter-history-select-user": "用戶:",
+ "abusefilter-history-select-submit": "細搵",
+ "abusefilter-history-diff": "改動",
+ "abusefilter-history-error-hidden": "你所請求嘅過濾器隱藏咗,你唔可以睇佢嘅歷史。",
+ "abusefilter-exception-unexpectedatend": "響字元 $1 度唔要 \"$2\"。",
+ "abusefilter-exception-expectednotfound": "響字元 $1 度需要 $2,搵唔到 (但係搵到 $3 $4)。",
+ "abusefilter-exception-unrecognisedkeyword": "響字元 $1 度認唔到關鍵字 $2。",
+ "abusefilter-exception-unexpectedtoken": "響字元 $1 度唔要幣 \"$3\" ($2類)。",
+ "abusefilter-exception-unclosedstring": "響開始字元 $1 有未閂字串。",
+ "abusefilter-exception-invalidoperator": "響字元 $1 度有無效嘅運算符 \"$2\"。",
+ "abusefilter-exception-unrecognisedtoken": "響字元 $1 度有未認到嘅幣 \"$2\"。",
+ "abusefilter-exception-noparams": "響字元 $1 度嘅功能 \"$2\" 無俾到參數。",
+ "abusefilter-exception-dividebyzero": "響字元 $1 度有 $2 除以零嘅非法嘗試。",
+ "abusefilter-exception-unrecognisedvar": "響字元 $1 度有未認到嘅變數 $2。",
+ "abusefilter-exception-notenoughargs": "響字元 $1 度叫出嘅 $2 功能無足夠嘅參數。\n\t需要$3個參數,只攞到$4個",
+ "abusefilter-exception-regexfailure": "響字元 $1 度 \"$3\" 正表式錯誤: \"$2\"",
+ "abusefilter-exception-overridebuiltin": "響字元 $1 度有非法覆蓋全建變數 \"$2\"。",
+ "abusefilter-exception-outofbounds": "響字元 $1 度有未存在嘅表項 $2 (表項大細 = $3)。",
+ "abusefilter-exception-notlist": "響字元 $1 度非陣列需要陣列項目。",
+ "abusefilter-action-tag": "標籤",
+ "abusefilter-action-throttle": "控頻",
+ "abusefilter-action-warn": "警告",
+ "abusefilter-action-blockautopromote": "封鎖自動升格",
+ "abusefilter-action-block": "封鎖",
+ "abusefilter-action-degroup": "響組度拎走",
+ "abusefilter-action-rangeblock": "範圍封鎖",
+ "abusefilter-action-disallow": "唔容許",
+ "abusefilter-revert-title": "由過濾器$1復原全部更改",
+ "abusefilter-revert-intro": "呢個表容許你去復原因為過濾器$1做過嘅全部更改。\n響用呢個工具之前請小心。",
+ "abusefilter-revert-preview-item": "$1: $2喺$4做咗$3。\n將會復原嘅動作: $5 ($6)",
+ "abusefilter-revert-search-legend": "揀將會復原嘅過濾器動作",
+ "abusefilter-revert-periodstart": "開始範圍:",
+ "abusefilter-revert-periodend": "完結範圍:",
+ "abusefilter-revert-search": "揀動作",
+ "abusefilter-revert-filter": "過濾器:",
+ "abusefilter-revert-preview-intro": "下面係爾個動作將會復原由濫用過濾器嘅動作。\n請小心檢查,再撳「{{int:abusefilter-revert-confirm}}」去確認你嘅選擇。",
+ "abusefilter-revert-confirm": "確認",
+ "abusefilter-revert-success": "你已經復原咗由[[Special:AbuseFilter/$1|過濾器$2]]做咗嘅全部動作。",
+ "abusefilter-revert-reason": "自動復原由過濾器$1做咗嘅全部動作。\n畀咗嘅原因: $2",
+ "abusefilter-revert-reasonfield": "原因:",
+ "abusefilter-test": "用之前嘅編輯去試過濾器",
+ "abusefilter-test-intro": "爾一版容許你用下面輸入個盒去檢查針對之前$1次{{PLURAL:$1|更改}}嘅過濾器。\n要載入現有嘅過濾器,喺編輯盒下面嘅盒輸入佢嘅過濾器ID,再撳「{{int:abusefilter-test-load}}」掣。",
+ "abusefilter-test-legend": "試緊過濾器",
+ "abusefilter-test-load-filter": "載入過濾器ID:",
+ "abusefilter-test-submit": "測試",
+ "abusefilter-test-load": "載入",
+ "abusefilter-test-user": "用戶嘅更改:",
+ "abusefilter-test-period-start": "更改之後嘅嘢:",
+ "abusefilter-test-period-end": "更改之前嘅嘢:",
+ "abusefilter-test-page": "對頁更改過嘅嘢:",
+ "abusefilter-test-shownegative": "顯示唔配合過濾器嘅更改",
+ "abusefilter-test-syntaxerr": "你所輸入嘅過濾器有語法錯誤。\n你可以撳「{{int:abusefilter-edit-check}}」掣去收一個完整嘅解釋。",
+ "abusefilter-changeslist-examine": "查吓",
+ "abusefilter-examine": "查個別更改",
+ "abusefilter-examine-intro": "呢一版容許你去查吓一次個別更改由濫用過濾器產生嘅變數,再由過濾器測試。",
+ "abusefilter-examine-legend": "揀更改",
+ "abusefilter-examine-diff": "差異URL:",
+ "abusefilter-examine-user": "用戶:",
+ "abusefilter-examine-title": "頁名:",
+ "abusefilter-examine-submit": "搵",
+ "abusefilter-examine-vars": "呢次更改產生嘅變數",
+ "abusefilter-examine-test": "用過濾器測試呢次更改",
+ "abusefilter-examine-test-button": "測試過濾器",
+ "abusefilter-examine-match": "個過濾器配合到呢次更改。",
+ "abusefilter-examine-nomatch": "個過濾器配合唔到呢次更改。",
+ "abusefilter-examine-syntaxerror": "個過濾器有無效嘅語法",
+ "abusefilter-examine-notfound": "你所要求嘅更改搵唔到。",
+ "abusefilter-examine-incompatible": "你所請求嘅修改並未由濫用過濾器支援",
+ "abusefilter-examine-noresults": "你所提供嘅搵嘢參數搵到無結果。",
+ "abusefilter-topnav": "'''濫用過濾器導航'''",
+ "abusefilter-topnav-home": "屋企",
+ "abusefilter-topnav-test": "連串測試",
+ "abusefilter-topnav-examine": "檢查之前嘅編輯",
+ "abusefilter-topnav-log": "濫用紀錄",
+ "abusefilter-topnav-tools": "除錯工具",
+ "abusefilter-topnav-import": "倒入過濾器",
+ "abusefilter-log-name": "濫用過濾器紀錄",
+ "abusefilter-log-header": "呢個紀錄顯示過濾器更改過嘅摘要。\n要知更多細節,睇之前過濾器更改嘅[[Special:AbuseFilter/history|表]]。",
+ "abusefilter-diff-title": "唔同版本之間嘅差異",
+ "abusefilter-diff-item": "項目",
+ "abusefilter-diff-version": "響 $1 由 $2 做嘅版本",
+ "abusefilter-diff-info": "基本資訊",
+ "abusefilter-diff-pattern": "過濾器條件",
+ "abusefilter-diff-invalid": "唔能夠擷取所需要嘅版本",
+ "abusefilter-diff-backhistory": "返去過濾器歷史",
+ "abusefilter-import-intro": "你可以用呢個界面由其它wiki度去倒入過濾器。\n\t響個來源wiki度,響編輯界面度嘅『{{int:abusefilter-edit-tools}}』下面撳『{{int:abusefilter-edit-export}}』。\n複製響文字盒出現嘅字,再響呢個文字盒度貼上,然後再撳『{{int:abusefilter-import-submit}}』。",
+ "abusefilter-import-submit": "倒入資料"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/zh-hans.json b/www/wiki/extensions/AbuseFilter/i18n/zh-hans.json
new file mode 100644
index 00000000..700db677
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/zh-hans.json
@@ -0,0 +1,569 @@
+{
+ "@metadata": {
+ "authors": [
+ "Anakmalaysia",
+ "Bbqyee",
+ "Bencmq",
+ "Byfserag",
+ "Chenxiaoqino",
+ "Chenzw",
+ "Cwek",
+ "Dimension",
+ "Fantasticfears",
+ "FireJackey",
+ "Gaoxuewei",
+ "Gzdavidwong",
+ "Hydra",
+ "Hzy980512",
+ "Jimmy xu wrk",
+ "Liangent",
+ "Linforest",
+ "Liuxinyu970226",
+ "Luotiancheng",
+ "Makecat",
+ "PhiLiP",
+ "Philip <philip.npc@gmail.com>",
+ "Qiyue2001",
+ "Shirayuki",
+ "Shizhao",
+ "Simon Shek",
+ "Skjackey tse",
+ "Wmr89502270",
+ "Xiaomingyan",
+ "Yanmiao liu",
+ "Yfdyh000",
+ "Zhangjintao",
+ "Mywood",
+ "Impersonator 1",
+ "NigelSoft",
+ "Duolaimi",
+ "范",
+ "Matma Rex",
+ "EagerLin",
+ "Wmr",
+ "逆襲的天邪鬼",
+ "WhitePhosphorus",
+ "A2093064",
+ "NeverBehave"
+ ]
+ },
+ "abusefilter-desc": "对编辑行为自动进行条件判定",
+ "abusefilter": "滥用过滤器配置",
+ "abuselog": "滥用日志",
+ "abusefilter-intro": "欢迎访问防滥用过滤器管理界面。防滥用过滤器是一个可以针对所有最近编辑动作进行自动化判断的软件系统。本界面包含了现有过滤器的列表,并允许管理人员修改它们。",
+ "abusefilter-mustbeeditor": "出于安全考虑,只有拥有编辑防滥用过滤器权限的用户方可使用本界面。",
+ "abusefilter-warning": "'''警告:'''此操作已被自动识别为有害。无意义的操作会被迅速地回退,而过分或重复的无意义编辑会导致您的帐户或IP地址遭到封禁。如果您确信本次操作是有意义的,您可以再次点击提交以确认它。与您此次行为所匹配的过滤规则概述如下:$1",
+ "abusefilter-disallowed": "此操作已被自动识别为有害,并因此不被允许。如果您认为您的该次编辑是有意义的,请联系管理员,并告知他们您尝试做到的事。与您此次行为所匹配的过滤规则概述如下:$1",
+ "abusefilter-blocked-display": "系统已自动将您的操作识别为有害动作,故已阻止该操作。除此之外,为了保护{{SITENAME}},您的用户帐户以及所有相关联的IP地址都被禁止进行编辑。如果您认为这是系统误判,请联系管理员。与您此次行为所匹配的过滤规则概述如下:$1",
+ "abusefilter-degrouped": "系统已自动将您的操作识别为有害动作,故已阻止该操作。另外,由于您的帐户疑似遭到盗用,系统已剥夺您的所有用户权限。如果您认为这是系统误判,请联系行政员解释此操作,这样或许能取回权限。与您此次行为所匹配的过滤规则概述如下:$1",
+ "abusefilter-autopromote-blocked": "此操作已被自动识别为有害,并已不被允许。此外,为安全起见,您的帐户被暂时剥夺了部分例行授予已创建帐户的权限。与您此次行为所匹配的过滤规则概述如下:$1",
+ "abusefilter-blocker": "滥用过滤器",
+ "abusefilter-blockreason": "被滥用过滤器自动封禁。匹配的规则的说明:$1",
+ "abusefilter-degroupreason": "权限被滥用过滤器自动剥夺。规则说明:$1",
+ "abusefilter-accountreserved": "此帐户已由防滥用过滤器保留使用。",
+ "right-abusefilter-modify": "修改防滥用过滤器",
+ "right-abusefilter-view": "查看滥用过滤器",
+ "right-abusefilter-log": "查看滥用日志",
+ "right-abusefilter-log-detail": "查看详细滥用日志",
+ "right-abusefilter-private": "查看滥用日志中的私有数据",
+ "right-abusefilter-private-log": "查看防滥用过滤器私有详情访问日志",
+ "right-abusefilter-modify-restricted": "修改包含受限动作的防滥用过滤器",
+ "right-abusefilter-revert": "撤销指定防滥用过滤器作出的所有更改",
+ "right-abusefilter-view-private": "查看被标记为私有的防滥用过滤器",
+ "right-abusefilter-log-private": "查看标记为私有的过滤器的过滤日志",
+ "right-abusefilter-hide-log": "将条目在滥用日志中隐藏",
+ "right-abusefilter-hidden-log": "查看隐藏的滥用日志条目",
+ "right-abusefilter-modify-global": "创建或修改全域滥用过滤器",
+ "action-abusefilter-modify": "修改滥用过滤器",
+ "action-abusefilter-view": "查看滥用过滤器",
+ "action-abusefilter-log": "查看滥用日志",
+ "action-abusefilter-log-detail": "查看详细滥用日志",
+ "action-abusefilter-private": "查看滥用日志中的私有数据",
+ "action-abusefilter-private-log": "查看防滥用过滤器私有详情访问日志",
+ "action-abusefilter-modify-restricted": "以有限的操作修改防滥用过滤器",
+ "action-abusefilter-revert": "还原指定防滥用过滤器作出的所有更改",
+ "action-abusefilter-view-private": "查看被标记为私有的防滥用过滤器",
+ "action-abusefilter-log-private": "查看标记为私有的防滥用过滤器日志",
+ "abusefilter-log": "防滥用过滤器日志",
+ "abusefilter-log-summary": "本日志列出了过滤器捕捉到的所有操作。",
+ "abusefilter-log-search": "搜索滥用日志",
+ "abusefilter-log-search-user": "用户:",
+ "abusefilter-log-search-filter": "过滤器ID(以竖线分隔):",
+ "abusefilter-log-search-title": "标题:",
+ "abusefilter-log-search-wiki": "Wiki:",
+ "abusefilter-log-search-impact": "影响:",
+ "abusefilter-log-search-impact-all": "所有操作",
+ "abusefilter-log-search-impact-saved": "仅保存的更改",
+ "abusefilter-log-search-impact-not-saved": "没有保存的更改",
+ "abusefilter-log-search-entries-label": "可见性:",
+ "abusefilter-log-search-entries-all": "所有记录",
+ "abusefilter-log-search-entries-hidden": "只显示隐藏记录",
+ "abusefilter-log-search-entries-visible": "只显示可见记录",
+ "abusefilter-log-search-action-taken-label": "采取的行动:",
+ "abusefilter-log-search-action-taken-any": "任何",
+ "abusefilter-log-search-submit": "搜索",
+ "abusefilter-log-entry": "$1:$2在$4{{GENDER:$8|执行}}操作“$3”时{{GENDER:$8|触发}}了过滤器。采取的行动:$5;过滤器描述:$6",
+ "abusefilter-log-entry-withdiff": "$1:$2在$4{{GENDER:$8|执行}}操作“$3”时{{GENDER:$8|触发}}了过滤器。采取的行动:$5;过滤器描述:$6($7)",
+ "abusefilter-log-detailedentry-meta": "$1:$2在$5{{GENDER:$9|执行}}操作“$4”时{{GENDER:$9|触发}}了$3。采取的行动:$6;过滤器描述:$7($8)",
+ "abusefilter-log-detailedentry-global": "全域过滤器$1",
+ "abusefilter-log-detailedentry-local": "过滤器$1",
+ "abusefilter-log-detailslink": "详情",
+ "abusefilter-log-diff": "差异",
+ "abusefilter-log-hidelink": "调整公开级别",
+ "abusefilter-log-details-legend": "日志详情:$1",
+ "abusefilter-log-details-var": "变量",
+ "abusefilter-log-details-val": "值",
+ "abusefilter-log-details-vars": "操作参数",
+ "abusefilter-log-details-private": "私有日志详情",
+ "abusefilter-log-details-ip": "原始IP地址",
+ "abusefilter-log-details-checkuser": "用户查核",
+ "abusefilter-log-noactions": "无",
+ "abusefilter-log-details-diff": "编辑中的更改",
+ "abusefilter-log-linkoncontribs": "滥用日志",
+ "abusefilter-log-linkoncontribs-text": "{{GENDER:$1|此用户}}的滥用日志",
+ "abusefilter-log-hidden": "(记录已被隐藏)",
+ "abusefilter-log-hidden-implicit": "(因为修订已被删除而隐藏)",
+ "abusefilter-log-cannot-see-details": "您没有权限去查看这个记录条目的细节。",
+ "abusefilter-log-cannot-see-private-details": "您没有权限查看此记录的私有详情。",
+ "abusefilter-log-nonexistent": "提供ID的实体不存在。",
+ "abusefilter-log-details-hidden": "您无法查看详细信息,因为此条目已被从公共范围隐藏。",
+ "abusefilter-log-private-not-included": "一个或多个您指定的过滤器ID是私有的。因为您不被允许查看私有过滤器的详情,所以这些过滤器未被寻找。",
+ "abusefilter-log-hide-legend": "隐藏日志条目",
+ "abusefilter-log-hide-id": "日志记录ID:",
+ "abusefilter-log-hide-hidden": "对公众隐藏此日志项目",
+ "abusefilter-log-hide-reason": "原因:",
+ "abusefilter-log-hide-reason-other": "其他/附加原因:",
+ "abusefilter-log-hide-forbidden": "您没有权限去隐藏此滥用记录条目。",
+ "abusefilter-logentry-suppress": "隐藏“[[$1]]”",
+ "abusefilter-logentry-unsuppress": "取消隐藏“[[$1]]”",
+ "logentry-abusefilter-hit": "$1在$3{{GENDER:$2|执行}}操作“$5”时{{GENDER:$2|触发}}了$4。采取的行动:$6($7)",
+ "log-action-filter-abusefilter": "过滤器更改的类型:",
+ "log-action-filter-abusefilter-create": "新过滤器创建",
+ "log-action-filter-abusefilter-modify": "过滤器修改",
+ "logentry-abusefilterprivatedetails-access": "$1{{GENDER:$2|访问了}}$3的私有详情",
+ "abusefilterprivatedetails-log-name": "防滥用过滤器私有详情访问日志",
+ "abusefilter-management": "滥用过滤器管理",
+ "abusefilter-list": "所有过滤器",
+ "abusefilter-list-id": "过滤器ID",
+ "abusefilter-list-pattern": "模式",
+ "abusefilter-list-status": "状态",
+ "abusefilter-list-public": "公开说明",
+ "abusefilter-list-consequences": "处理",
+ "abusefilter-list-visibility": "公开级别",
+ "abusefilter-list-hitcount": "触发数",
+ "abusefilter-list-edit": "编辑",
+ "abusefilter-list-details": "详情",
+ "abusefilter-list-limit": "每页显示数量:",
+ "abusefilter-list-lastmodified": "最后更改",
+ "abusefilter-list-group": "过滤器组",
+ "abusefilter-hidden": "私有",
+ "abusefilter-unhidden": "公开",
+ "abusefilter-enabled": "已启用",
+ "abusefilter-deleted": "已删除",
+ "abusefilter-disabled": "已停用",
+ "abusefilter-hitcount": "$1次触发",
+ "abusefilter-new": "新建过滤器",
+ "abusefilter-return": "返回过滤器管理界面",
+ "abusefilter-status-global": "全域",
+ "abusefilter-list-options": "选项",
+ "abusefilter-list-options-deleted": "已删除过滤器:",
+ "abusefilter-list-options-deleted-only": "只显示已删除过滤器",
+ "abusefilter-list-options-deleted-hide": "隐藏已删除过滤器",
+ "abusefilter-list-options-deleted-show": "包括已删除过滤器",
+ "abusefilter-list-options-scope": "显示过滤器:",
+ "abusefilter-list-options-scope-local": "仅本地规则",
+ "abusefilter-list-options-scope-global": "仅全域规则",
+ "abusefilter-list-options-scope-all": "本地和全域规则",
+ "abusefilter-list-options-disabled": "已停用过滤器:",
+ "abusefilter-list-options-hidedisabled": "隐藏已停用过滤器",
+ "abusefilter-list-options-searchfield": "在规则内搜索:",
+ "abusefilter-list-options-searchpattern": "键入模式",
+ "abusefilter-list-options-searchoptions": "搜索模式:",
+ "abusefilter-list-options-search-like": "纯文本查询",
+ "abusefilter-list-options-search-rlike": "正则表达式",
+ "abusefilter-list-options-search-irlike": "不区分大小写的正则表达式",
+ "abusefilter-list-regexerror": "搜索时发生错误:正则表达式语法错误。",
+ "abusefilter-list-options-submit": "更新",
+ "abusefilter-tools-text": "这里提供了一些实用的制作和测试防滥用过滤器的工具。",
+ "abusefilter-tools-expr": "表达式测试器",
+ "abusefilter-tools-submitexpr": "评估",
+ "abusefilter-tools-reautoconfirm": "恢复自动确认状态",
+ "abusefilter-tools-reautoconfirm-user": "用户:",
+ "abusefilter-tools-reautoconfirm-submit": "重新自动确认",
+ "abusefilter-reautoconfirm-none": "该用户的自动确认状态并没有被撤销过",
+ "abusefilter-reautoconfirm-notallowed": "您不被允许恢复自动确认状态。",
+ "abusefilter-reautoconfirm-done": "该账户的自动确认状态已恢复",
+ "abusefilter-status": "在最近$1次{{PLURAL:$1|操作}}中,$2($3%)个过滤器{{PLURAL:$2|已}}达到$4次条件比较上限,$5($6%)次操作{{PLURAL:$5|已}}匹配当前启用的过滤器之一。",
+ "abusefilter-edit": "编辑滥用过滤器",
+ "abusefilter-edit-subtitle": "编辑过滤器$1",
+ "abusefilter-edit-subtitle-new": "创建过滤器",
+ "abusefilter-edit-oldwarning": "<strong>您正在编辑该过滤器的旧版本。统计中引用的是该过滤器的最新版本。如果您保存您的编辑,所编辑版本之后的所有更改均会被覆盖。</strong> &bull;\n[[Special:AbuseFilter/history/$2|返回该过滤器的历史记录]]。",
+ "abusefilter-edit-status-label": "统计:",
+ "abusefilter-edit-status": "在最近的$1次{{PLURAL:$1|操作}}中,有$2($3%)次触发了本过滤器。",
+ "abusefilter-edit-status-profile": "在最后的$1次编辑中,有$2($3%)次编辑触发了本过滤器。其平均运行时间为$4ms(毫秒),消耗了$5条限制。",
+ "abusefilter-edit-throttled-warning": "'''警告:'''该过滤器已自动标示为有害。作为安全措施,以下操作将不会执行($1)。请复查并[[mw:Extension:AbuseFilter/Conditions|优化]]您的条件来移除该限制",
+ "abusefilter-edit-new": "新建过滤器",
+ "abusefilter-edit-save": "保存过滤器",
+ "abusefilter-edit-id": "过滤器ID:",
+ "abusefilter-edit-switch-editor": "切换编辑器",
+ "abusefilter-edit-description": "说明:\n:''(公开可见)''",
+ "abusefilter-edit-field-description": "描述",
+ "abusefilter-edit-group": "过滤器组:",
+ "abusefilter-edit-flags": "标记:",
+ "abusefilter-edit-enabled": "启用本过滤器",
+ "abusefilter-edit-deleted": "标记为已删除",
+ "abusefilter-edit-hidden": "向公众隐藏本过滤器的详细信息",
+ "abusefilter-edit-global": "全域过滤器",
+ "abusefilter-edit-rules": "条件:",
+ "abusefilter-edit-field-conditions": "条件",
+ "abusefilter-edit-notes": "注释:",
+ "abusefilter-edit-lastmod": "过滤器最后更改:",
+ "abusefilter-edit-lastmod-text": "$1,$2",
+ "abusefilter-edit-hitcount": "过滤器触发数:",
+ "abusefilter-edit-consequences": "当匹配时,要进行的操作",
+ "abusefilter-edit-action-warn": "向用户发出警告后触发下列操作",
+ "abusefilter-edit-action-disallow": "阻止用户进行可疑的操作",
+ "abusefilter-edit-action-blockautopromote": "撤销用户的自动确认状态",
+ "abusefilter-edit-action-degroup": "将用户从所有权限组中移除",
+ "abusefilter-edit-action-block": "封禁进行编辑的用户和/或IP地址",
+ "abusefilter-edit-action-blocktalk": "封禁用户和/或IP地址编辑自己讨论页的权利",
+ "abusefilter-edit-action-throttle": "只当用户触犯频率上限后方触发操作",
+ "abusefilter-edit-action-rangeblock": "封禁用户来源的对应IP段",
+ "abusefilter-edit-action-tag": "标记该编辑以供进一步检查",
+ "abusefilter-edit-throttle-count": "允许的操作次数:",
+ "abusefilter-edit-throttle-period": "时长:",
+ "abusefilter-edit-throttle-seconds": "$1{{PLURAL:$1|秒}}",
+ "abusefilter-edit-throttle-groups": "受限群组:\n:''(每行一个,且以半角逗号相连)''",
+ "abusefilter-edit-warn-message": "用作警告的系统消息:",
+ "abusefilter-edit-warn-other": "其他消息",
+ "abusefilter-edit-warn-other-label": "其他消息的页面名:\n:''(无须MediaWiki前缀)''",
+ "abusefilter-edit-warn-actions": "操作:",
+ "abusefilter-edit-warn-preview": "预览所选消息",
+ "abusefilter-edit-warn-edit": "创建/编辑所选消息",
+ "abusefilter-edit-tag-tag": "欲应用的[[Special:Tags|标签]](每行一个):",
+ "abusefilter-edit-block-anon-durations": "匿名用户的封禁持续时间:",
+ "abusefilter-edit-block-user-durations": "注册用户的封禁持续时间:",
+ "abusefilter-block-anon": "匿名用户",
+ "abusefilter-block-user": "注册用户",
+ "abusefilter-edit-denied": "您无法查看该过滤器的详情,因为它已设定为向公众隐藏。",
+ "abusefilter-edit-main": "过滤器参数",
+ "abusefilter-edit-done-subtitle": "已编辑过滤器",
+ "abusefilter-edit-done": "您已成功保存您对[[Special:AbuseFilter/$1|过滤器$3]]的[[Special:AbuseFilter/history/$1/diff/prev/$2|修改]]。",
+ "abusefilter-edit-badsyntax": "您指定的过滤器中存有语法错误。解析器的输出结果为:<pre>$1</pre>",
+ "abusefilter-edit-missingfields": "需要以下字段,且均为必填项:$1",
+ "abusefilter-edit-restricted": "您无法编辑此过滤器,因为其中包含一个或多个受限操作。请寻求拥有相应权限用户的帮助,以协助您作出相应修改。",
+ "abusefilter-edit-viewhistory": "查看过滤器历史",
+ "abusefilter-edit-history": "历史:",
+ "abusefilter-edit-check": "语法检查",
+ "abusefilter-edit-badfilter": "您指定的过滤器并不存在",
+ "abusefilter-edit-revert": "回退由该过滤器做出的操作",
+ "abusefilter-edit-tools": "工具:",
+ "abusefilter-edit-test-link": "以最近的编辑测试本过滤器",
+ "abusefilter-edit-export": "导出此过滤器",
+ "abusefilter-edit-syntaxok": "没有检测到语法错误。",
+ "abusefilter-edit-syntaxerr": "检测到语法错误:$1",
+ "abusefilter-edit-bad-tags": "一个或更多您指定的标签无效。标签应该较短,但不得包含特殊字符,且不得被其他软件保留。尝试选择新的标签名。",
+ "abusefilter-edit-notallowed": "您未被允许创建或编辑防滥用过滤器",
+ "abusefilter-edit-notallowed-global": "您未被允许创建或编辑全域防滥用过滤器",
+ "abusefilter-edit-notallowed-global-custom-msg": "对于全域过滤器,不支持自定义警告消息",
+ "abusefilter-edit-builder-select": "选择需添加到光标处的选项",
+ "abusefilter-edit-builder-group-op-arithmetic": "算术运算符",
+ "abusefilter-edit-builder-op-arithmetic-addition": "加(+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "减(-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "乘(*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "除(/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "模(%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "幂(**)",
+ "abusefilter-edit-builder-group-op-comparison": "比较运算符",
+ "abusefilter-edit-builder-op-comparison-equal": "值等于(==)",
+ "abusefilter-edit-builder-op-comparison-equal-strict": "值和类型等于(===)",
+ "abusefilter-edit-builder-op-comparison-notequal": "值不等于(!=)",
+ "abusefilter-edit-builder-op-comparison-notequal-strict": "值和类型不等于(!==)",
+ "abusefilter-edit-builder-op-comparison-lt": "小于(<)",
+ "abusefilter-edit-builder-op-comparison-gt": "大于(>)",
+ "abusefilter-edit-builder-op-comparison-lte": "小于或等于(<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "大于或等于(>=)",
+ "abusefilter-edit-builder-group-op-bool": "逻辑运算符",
+ "abusefilter-edit-builder-op-bool-not": "非(!)",
+ "abusefilter-edit-builder-op-bool-and": "与(&)",
+ "abusefilter-edit-builder-op-bool-or": "或(|)",
+ "abusefilter-edit-builder-op-bool-xor": "异或(^)",
+ "abusefilter-edit-builder-group-misc": "杂项",
+ "abusefilter-edit-builder-misc-in": "包含字符串(in)",
+ "abusefilter-edit-builder-misc-like": "匹配模式(like)",
+ "abusefilter-edit-builder-misc-rlike": "匹配正则表达式(rlike)",
+ "abusefilter-edit-builder-misc-irlike": "正则匹配,不区分大小写(irlike)",
+ "abusefilter-edit-builder-misc-contains": "左字符串包含右字符串(contains)",
+ "abusefilter-edit-builder-misc-stringlit": "字符串(\"\")",
+ "abusefilter-edit-builder-misc-tern": "三元运算符(X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "条件表达式(if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "函数",
+ "abusefilter-edit-builder-funcs-length": "字符串长度(length)",
+ "abusefilter-edit-builder-funcs-lcase": "字母小写化(lcase)",
+ "abusefilter-edit-builder-funcs-ucase": "字母大写(ucase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "规范化易混淆字符(ccnorm)",
+ "abusefilter-edit-builder-funcs-ccnorm-contains-any": "在OR模式中标准化并搜索字符串以获取多个子字符串(ccnorm_contains_any)",
+ "abusefilter-edit-builder-funcs-ccnorm-contains-all": "在AND模式中标准化并搜索字符串以获取多个子字符串(ccnorm_contains_all)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "去除双字节字符(rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "特殊字符比(specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "规范化(norm)",
+ "abusefilter-edit-builder-funcs-count": "字符串 X 在字符串 Y 中出现的次数(count)",
+ "abusefilter-edit-builder-funcs-rcount": "正则表达式 X 在字符串 Y 中匹配的次数(rcount)",
+ "abusefilter-edit-builder-funcs-get_matches": "匹配文本中每个捕捉组的正则表达式数组(get_matches)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "移除空白字符(rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "移除特殊字符(rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "IP地址是否在范围内?(ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "在OR模式中搜索字符串以获得多个子字符串。(contains_any)",
+ "abusefilter-edit-builder-funcs-contains-all": "在AND模式中搜索字符串以获得多个子字符串。(contains_all)",
+ "abusefilter-edit-builder-funcs-substr": "子字符串(substr)",
+ "abusefilter-edit-builder-funcs-strpos": "子字符串在字符串中的位置(strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "在字符串中替换子字符串(str_replace)",
+ "abusefilter-edit-builder-funcs-rescape": "转义字符串以在正则表达式中使用 (rescape)",
+ "abusefilter-edit-builder-funcs-set_var": "设置变量(set_var)",
+ "abusefilter-edit-builder-group-vars": "变量",
+ "abusefilter-edit-builder-vars-accountname": "帐户(创建时)的名称",
+ "abusefilter-edit-builder-vars-timestamp": "更改的Unix时间戳",
+ "abusefilter-edit-builder-vars-timestamp-expanded": "日志时间戳",
+ "abusefilter-edit-builder-vars-action": "操作",
+ "abusefilter-edit-builder-vars-addedlines": "编辑增加的行",
+ "abusefilter-edit-builder-vars-delta": "编辑前后的大小改变",
+ "abusefilter-edit-builder-vars-diff": "编辑产生的差异",
+ "abusefilter-edit-builder-vars-newsize": "新页面大小",
+ "abusefilter-edit-builder-vars-oldsize": "旧页面大小",
+ "abusefilter-edit-builder-vars-old-content-model": "旧的内容模型",
+ "abusefilter-edit-builder-vars-new-content-model": "新的内容模型",
+ "abusefilter-edit-builder-vars-removedlines": "编辑移除的行",
+ "abusefilter-edit-builder-vars-summary": "编辑摘要/原因",
+ "abusefilter-edit-builder-vars-article-id": "页面编号",
+ "abusefilter-edit-builder-vars-article-ns": "页面名字空间",
+ "abusefilter-edit-builder-vars-article-text": "页面标题(不含名字空间)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "完整页面标题",
+ "abusefilter-edit-builder-vars-article-views": "页面查看次数",
+ "abusefilter-edit-builder-vars-movedfrom-id": "移动源页面的页面编号",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "移动源页面的名字空间",
+ "abusefilter-edit-builder-vars-movedfrom-text": "移动源页面的标题",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "移动源页面的完整标题",
+ "abusefilter-edit-builder-vars-movedto-id": "移动目的页面的页面编号",
+ "abusefilter-edit-builder-vars-movedto-ns": "移动目的页面的名字空间",
+ "abusefilter-edit-builder-vars-movedto-text": "移动目的页面的标题",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "移动目的页面的完整标题",
+ "abusefilter-edit-builder-vars-user-editcount": "用户的编辑次数",
+ "abusefilter-edit-builder-vars-user-age": "用户账户的年龄",
+ "abusefilter-edit-builder-vars-user-name": "用户账户名称",
+ "abusefilter-edit-builder-vars-user-groups": "用户所在群组(包括隐藏群组)",
+ "abusefilter-edit-builder-vars-user-rights": "用户拥有的权限",
+ "abusefilter-edit-builder-vars-user-blocked": "用户是否被封禁",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "电子邮件地址得到确认的时间",
+ "abusefilter-edit-builder-vars-recent-contributors": "最后十位对该页面贡献的用户",
+ "abusefilter-edit-builder-vars-first-contributor": "贡献页面的第一位用户",
+ "abusefilter-edit-builder-vars-movedfrom-recent-contributors": "最近十位对移动来源页面有贡献的用户",
+ "abusefilter-edit-builder-vars-movedfrom-first-contributor": "第一位对移动来源页面有贡献的用户",
+ "abusefilter-edit-builder-vars-movedto-recent-contributors": "最近十位对移动目标页面有贡献的用户",
+ "abusefilter-edit-builder-vars-movedto-first-contributor": "第一位对移动目标页面有贡献的用户",
+ "abusefilter-edit-builder-vars-all-links": "新内容中的所有外部链接",
+ "abusefilter-edit-builder-vars-added-links": "新内容中新增的所有外部链接",
+ "abusefilter-edit-builder-vars-removed-links": "新内容中移除的所有外部链接",
+ "abusefilter-edit-builder-vars-old-text": "编辑前的旧页面,wiki代码格式",
+ "abusefilter-edit-builder-vars-new-text": "编辑后的新页面,wiki代码格式",
+ "abusefilter-edit-builder-vars-new-pst": "新页面维基语言,预保存转换",
+ "abusefilter-edit-builder-vars-diff-pst": "统一所有由编辑、预保存转换更改的差异",
+ "abusefilter-edit-builder-vars-addedlines-pst": "编辑中加入了行,并在保存前转换",
+ "abusefilter-edit-builder-vars-new-text-stripped": "编辑后的新页面,去除所有标记",
+ "abusefilter-edit-builder-vars-new-html": "编辑后的新页面,已解析为HTML源码",
+ "abusefilter-edit-builder-vars-restrictions-edit": "页面的编辑保护级别",
+ "abusefilter-edit-builder-vars-restrictions-move": "页面的移动保护级别",
+ "abusefilter-edit-builder-vars-restrictions-create": "创建页面的保护",
+ "abusefilter-edit-builder-vars-restrictions-upload": "上传文件的保护",
+ "abusefilter-edit-builder-vars-movedfrom-restrictions-edit": "移动来源页面的编辑保护级别",
+ "abusefilter-edit-builder-vars-movedfrom-restrictions-move": "移动来源页面的移动保护级别",
+ "abusefilter-edit-builder-vars-movedfrom-restrictions-create": "移动来源页面的创建保护",
+ "abusefilter-edit-builder-vars-movedfrom-restrictions-upload": "移动来源文件的上传保护",
+ "abusefilter-edit-builder-vars-movedto-restrictions-edit": "移动目标页面的编辑保护级别",
+ "abusefilter-edit-builder-vars-movedto-restrictions-move": "移动目标页面的移动保护级别",
+ "abusefilter-edit-builder-vars-movedto-restrictions-create": "移动目标页面的创建保护",
+ "abusefilter-edit-builder-vars-movedto-restrictions-upload": "移动目标文件的上传保护",
+ "abusefilter-edit-builder-vars-old-text-stripped": "编辑前的旧页面,去除所有标记",
+ "abusefilter-edit-builder-vars-old-links": "旧内容中的所有外部链接",
+ "abusefilter-edit-builder-vars-old-html": "编辑前的旧页面,已解析为HTML源码",
+ "abusefilter-edit-builder-vars-minor-edit": "编辑是否被标记为小编辑",
+ "abusefilter-edit-builder-vars-file-sha1": "文件内容的SHA1值",
+ "abusefilter-edit-builder-vars-file-size": "文件大小,单位字节",
+ "abusefilter-edit-builder-vars-file-mime": "文件的MIME类型",
+ "abusefilter-edit-builder-vars-file-mediatype": "文件的媒体类型",
+ "abusefilter-edit-builder-vars-file-width": "文件宽度(像素)",
+ "abusefilter-edit-builder-vars-file-height": "文件高度(像素)",
+ "abusefilter-edit-builder-vars-file-bits-per-channel": "文件的位/颜色通道",
+ "abusefilter-edit-block-options": "封禁选项:",
+ "abusefilter-filter-log": "最近过滤器更改",
+ "abusefilter-history": "滥用过滤器#$1的更改历史",
+ "abusefilter-history-foruser": "由$1做出的更改",
+ "abusefilter-history-hidden": "隐藏",
+ "abusefilter-history-enabled": "已启用",
+ "abusefilter-history-global": "全域",
+ "abusefilter-history-timestamp": "时间",
+ "abusefilter-history-user": "用户",
+ "abusefilter-history-public": "公开过滤器说明",
+ "abusefilter-history-flags": "标记",
+ "abusefilter-history-filter": "过滤器规则",
+ "abusefilter-history-comments": "注释",
+ "abusefilter-history-actions": "操作",
+ "abusefilter-history-backedit": "回到过滤器编辑器",
+ "abusefilter-history-deleted": "删除",
+ "abusefilter-history-filterid": "过滤器",
+ "abusefilter-history-select-legend": "精确搜索",
+ "abusefilter-history-select-user": "用户:",
+ "abusefilter-history-select-filter": "过滤器ID:",
+ "abusefilter-history-select-submit": "重新查询",
+ "abusefilter-history-diff": "更改",
+ "abusefilter-history-error-hidden": "您所请求的过滤器是隐藏的,因此您无法查看其历史。",
+ "abusefilter-exception-unexpectedatend": "字符$1处出现意料外的“$2”。",
+ "abusefilter-exception-expectednotfound": "字符$1处未找到预期的$2(但找到了$3 $4)。",
+ "abusefilter-exception-unrecognisedkeyword": "字符$1处存在无法识别的关键字$2。",
+ "abusefilter-exception-unexpectedtoken": "字符$1处未找到预期的(类型$2的)标记“$3”。",
+ "abusefilter-exception-unclosedstring": "由$1处开始的字符串没有关闭。",
+ "abusefilter-exception-invalidoperator": "字符$1处存在非法运算符“$2”。",
+ "abusefilter-exception-unrecognisedtoken": "字符$1处存在无法识别的标记“$2”。",
+ "abusefilter-exception-noparams": "字符$1处没有给出函数“$2”所需的参数。",
+ "abusefilter-exception-dividebyzero": "字符$1处非法将$2除以零。",
+ "abusefilter-exception-unrecognisedvar": "字符$1处存在无法识别的变量$2。",
+ "abusefilter-exception-notenoughargs": "字符$1处调用的函数$2未得到足够的参数。预期有$3个参数,得到了$4个。",
+ "abusefilter-exception-regexfailure": "字符$1处的正则表达式“$3”存在错误:“$2”。",
+ "abusefilter-exception-overridebuiltin": "字符$1处非法覆盖内建变量“$2”。",
+ "abusefilter-exception-outofbounds": "字符$1处请求了不存在的列表项$2(列表长度 = $3)。",
+ "abusefilter-exception-notlist": "字符$1处向非数组请求了数组项。",
+ "abusefilter-exception-unclosedcomment": "字符$1处有未闭合注释。",
+ "abusefilter-action-tag": "标签",
+ "abusefilter-action-throttle": "频率控制",
+ "abusefilter-action-warn": "警告",
+ "abusefilter-action-blockautopromote": "撤销自动确认",
+ "abusefilter-action-block": "封禁",
+ "abusefilter-action-degroup": "从用户组移除",
+ "abusefilter-action-rangeblock": "区段封禁",
+ "abusefilter-action-disallow": "阻止",
+ "abusefilter-revert-title": "撤销过滤器$1作出的所有操作",
+ "abusefilter-revert-intro": "本表格允许您撤销过滤器$1作出的所有操作。请谨慎使用此工具。",
+ "abusefilter-revert-preview-item": "$1:$2在$4上{{GENDER:$7|作出}}了$3。要被回退的操作:$5($6)",
+ "abusefilter-revert-search-legend": "选择需要被撤销的过滤器操作",
+ "abusefilter-revert-periodstart": "开始时间:",
+ "abusefilter-revert-periodend": "结束时间:",
+ "abusefilter-revert-search": "选择操作",
+ "abusefilter-revert-filter": "过滤器ID:",
+ "abusefilter-revert-preview-intro": "下面列出了本次操作将要撤销的防滥用过滤器操作。请仔细检查下面的各项,并点击“{{int:abusefilter-revert-confirm}}”按钮确认您的选择。",
+ "abusefilter-revert-confirm-legend": "确认回退",
+ "abusefilter-revert-confirm": "确认",
+ "abusefilter-revert-success": "您已经撤销了[[Special:AbuseFilter/$1|过滤器$2]]作出的所有操作。",
+ "abusefilter-revert-reason": "自动撤销了过滤器$1的所有操作,原因如下:$2",
+ "abusefilter-revert-reasonfield": "原因:",
+ "abusefilter-test": "利用先前的编辑测试过滤器",
+ "abusefilter-test-intro": "本页允许您检查下方方框中输入的过滤器对最近$1次修改所造成的影响。若要加载其他现有的过滤器,请在方框下面的文本编辑框中输入过滤器的编号,并单击“{{int:abusefilter-test-load}}”按钮。",
+ "abusefilter-test-legend": "测试过滤器",
+ "abusefilter-test-load-filter": "加载过滤器编号:",
+ "abusefilter-test-submit": "测试",
+ "abusefilter-test-load": "载入",
+ "abusefilter-test-user": "编辑者:",
+ "abusefilter-test-period-start": "编辑时间晚于:",
+ "abusefilter-test-period-end": "编辑时间早于:",
+ "abusefilter-test-page": "对页面的更改:",
+ "abusefilter-test-shownegative": "显示不与过滤器匹配的更改",
+ "abusefilter-test-syntaxerr": "您所输入的过滤器存有语法错误。请点击“{{int:abusefilter-edit-check}}”按钮进行语法检查,并获取详细解释。",
+ "abusefilter-test-badtitle": "您输入的页面标题无效。它可能包含无法作为标题使用的一个或多个字符。",
+ "abusefilter-changeslist-examine": "检查",
+ "abusefilter-examine": "检查单独更改",
+ "abusefilter-examine-intro": "本页面允许您检查防滥用过滤器根据某次单独更改所生成的变量,并使用过滤器进行测试。",
+ "abusefilter-examine-legend": "选择更改",
+ "abusefilter-examine-diff": "URL差异:",
+ "abusefilter-examine-user": "用户:",
+ "abusefilter-examine-title": "页面名称:",
+ "abusefilter-examine-submit": "搜索",
+ "abusefilter-examine-vars": "根据本次更改生成的变量",
+ "abusefilter-examine-test": "使用过滤器测试本次更改",
+ "abusefilter-examine-test-button": "测试过滤器",
+ "abusefilter-examine-match": "过滤器匹配本次更改。",
+ "abusefilter-examine-nomatch": "过滤器不匹配本次更改。",
+ "abusefilter-examine-syntaxerror": "过滤器存在语法错误",
+ "abusefilter-examine-notfound": "未找到您请求的更改。",
+ "abusefilter-examine-incompatible": "防滥用过滤器不支持您请求的更改。",
+ "abusefilter-examine-noresults": "您输入的搜索参数未找到任何结果。",
+ "abusefilter-topnav": "'''滥用过滤器导航'''",
+ "abusefilter-topnav-home": "主页",
+ "abusefilter-topnav-test": "批量测试",
+ "abusefilter-topnav-examine": "检查过去的编辑",
+ "abusefilter-topnav-log": "滥用日志",
+ "abusefilter-topnav-tools": "调试工具",
+ "abusefilter-topnav-import": "导入过滤器",
+ "abusefilter-log-name": "滥用过滤器日志",
+ "abusefilter-log-header": "本日志展示过滤器更改的摘要。详情请见最近的过滤器更改[[Special:AbuseFilter/history|列表]]。",
+ "abusefilter-logentry-create": "$1{{GENDER:$2|创建}}了$4($5)",
+ "abusefilter-logentry-modify": "$1{{GENDER:$2|修改了}}$4($5)",
+ "abusefilter-log-noresults": "没有结果",
+ "abusefilter-diff-title": "版本间的差异",
+ "abusefilter-diff-item": "项目",
+ "abusefilter-diff-version": "{{GENDER:$3|由}}$2于$1作出的版本",
+ "abusefilter-diff-info": "基本信息",
+ "abusefilter-diff-pattern": "过滤器状态",
+ "abusefilter-diff-invalid": "无法获取所请求版本",
+ "abusefilter-diff-backhistory": "返回过滤器历史页面",
+ "abusefilter-diff-prev": "较旧的更改",
+ "abusefilter-diff-next": "较新的更改",
+ "abusefilter-import-intro": "您可以使用本界面来导入其他wiki的过滤器。在来源处点击过滤器编辑界面处“{{int:abusefilter-edit-tools}}”下的“{{int:abusefilter-edit-export}}”。复制随后出现的文本框中的内容,并粘贴至下方的文本框中,并点击“{{int:abusefilter-import-submit}}”。",
+ "abusefilter-import-submit": "导入数据",
+ "abusefilter-group-default": "默认",
+ "abusefilter-http-error": "发生一个HTTP错误:$1。",
+ "abusefilter-view-private-submit": "查看私有详情",
+ "abusefilter-view-private": "查看私有详情",
+ "abusefilter-view-private-reason": "访问私有详情的原因:",
+ "abusefilter-log-details-id": "日志ID",
+ "abusefilter-invalid-request": "无效请求!您必须通过[[Special:AbuseLog/$1]]上的表单提供原因后才能访问私有日志详情。",
+ "abusefilter-invalid-request-noid": "无效请求!您必须通过在滥用日志详情上的表单提供原因后才能访问私有日志详情。",
+ "log-description-abusefilterprivatedetails": "此日志显示用户访问私有滥用日志详情的时间列表。",
+ "abusefilter-noreason": "警告:要查看此日志的私有详情,您必须提供原因。",
+ "abusefilter-log-ip-not-available": "不可用",
+ "tag-abusefilter-condition-limit": "已达到条件限制",
+ "tag-abusefilter-condition-limit-description": "不能被所有激活的[[Special:AbuseFilter|防滥用过滤器]]检查到的编辑或其他活动([[mw:Extension:AbuseFilter/Conditions|帮助]])。",
+ "apihelp-abusefiltercheckmatch-description": "检查以查看一组变量是否匹配防滥用过滤器,编辑者会被记录相关事件。\n\nvars、rcid或logid是必须的,然而只有一个会被使用。",
+ "apihelp-abusefiltercheckmatch-summary": "检查防滥用过滤器是否匹配变量集,及编辑者记录的防滥用过滤器活动。",
+ "apihelp-abusefiltercheckmatch-extended-description": "需要vars、rcid或logid,然而只有其中一个会用到。",
+ "apihelp-abusefiltercheckmatch-param-filter": "要检查是否匹配的完整过滤器文本。",
+ "apihelp-abusefiltercheckmatch-param-vars": "要测试是否触发的JSON编码数组变量。",
+ "apihelp-abusefiltercheckmatch-param-rcid": "要检查是否触发的最近更改ID。",
+ "apihelp-abusefiltercheckmatch-param-logid": "用以检查的滥用过滤器日志ID。",
+ "apihelp-abusefiltercheckmatch-example-1": "测试最近更改ID15是否匹配简单过滤器",
+ "apihelp-abusefilterchecksyntax-description": "检查一个防滥用过滤器的语法。",
+ "apihelp-abusefilterchecksyntax-summary": "检查一个防滥用过滤器的语法。",
+ "apihelp-abusefilterchecksyntax-param-filter": "要检查语法的完整过滤器文本。",
+ "apihelp-abusefilterchecksyntax-example-1": "检查有效过滤器的语法",
+ "apihelp-abusefilterchecksyntax-example-2": "检查无效过滤器的语法",
+ "apihelp-abusefilterevalexpression-description": "评估防滥用过滤器的表达式。",
+ "apihelp-abusefilterevalexpression-summary": "评估防滥用过滤器的表达式。",
+ "apihelp-abusefilterevalexpression-param-expression": "要评估的表达式。",
+ "apihelp-abusefilterevalexpression-example-1": "评估一个简单的表达式",
+ "apihelp-abusefilterunblockautopromote-description": "从由于防滥用过滤器的结果而接受的autopromotions解封用户。",
+ "apihelp-abusefilterunblockautopromote-summary": "从由于防滥用过滤器的结果而接受的autopromotions解封用户。",
+ "apihelp-abusefilterunblockautopromote-param-user": "您希望解封的用户的用户名。",
+ "apihelp-abusefilterunblockautopromote-example-1": "移除对[[User:Example]]的自动提升封禁",
+ "apihelp-query+abusefilters-description": "显示防滥用过滤器的详细说明。",
+ "apihelp-query+abusefilters-summary": "显示防滥用过滤器的详细说明。",
+ "apihelp-query+abusefilters-param-startid": "枚举的起始过滤器ID。",
+ "apihelp-query+abusefilters-param-endid": "枚举的结束过滤器ID。",
+ "apihelp-query+abusefilters-param-show": "只显示符合这些标准的过滤器。",
+ "apihelp-query+abusefilters-param-limit": "过滤器列表的最大数量。",
+ "apihelp-query+abusefilters-param-prop": "要获取的属性。",
+ "apihelp-query+abusefilters-example-1": "列出启用的公开过滤器",
+ "apihelp-query+abusefilters-example-2": "显示有关过滤器的一些详细说明",
+ "apihelp-query+abuselog-description": "显示一个滥用过滤器的捕获事件。",
+ "apihelp-query+abuselog-summary": "显示一个滥用过滤器的捕获事件。",
+ "apihelp-query+abuselog-param-start": "枚举的起始时间戳。",
+ "apihelp-query+abuselog-param-end": "枚举的结束时间戳。",
+ "apihelp-query+abuselog-param-user": "只显示由指定的用户或IP地址完成的记录。",
+ "apihelp-query+abuselog-param-title": "只显示在指定页面上发生过的条项。",
+ "apihelp-query+abuselog-param-filter": "只显示被指定过滤器ID捕获过的记录。",
+ "apihelp-query+abuselog-param-limit": "列出日志记录的最大数量。",
+ "apihelp-query+abuselog-param-prop": "要获得的属性。",
+ "apihelp-query+abuselog-param-wiki": "显示触发来自的Wiki。",
+ "apihelp-query+abuselog-example-1": "显示最近日志记录",
+ "apihelp-query+abuselog-example-2": "显示[[API]]的最近日志记录",
+ "apierror-abusefilter-canttest": "您没有权限测试防滥用过滤器。",
+ "apierror-abusefilter-cantcheck": "您没有权限检查防滥用过滤器的语法。",
+ "apierror-abusefilter-nosuchlogid": "没有id为$1的滥用日志记录。",
+ "apierror-abusefilter-badsyntax": "过滤器存在语法错误。"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/zh-hant.json b/www/wiki/extensions/AbuseFilter/i18n/zh-hant.json
new file mode 100644
index 00000000..d68d7e2e
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/zh-hant.json
@@ -0,0 +1,535 @@
+{
+ "@metadata": {
+ "authors": [
+ "Alexsh",
+ "Anakmalaysia",
+ "Bencmq",
+ "Ch.Andrew",
+ "Cwlin0416",
+ "EagerLin",
+ "Gzdavidwong",
+ "Horacewai2",
+ "Jimmy xu wrk",
+ "Justincheng12345",
+ "Liangent",
+ "Liuxinyu970226",
+ "Mark85296341",
+ "Oapbtommy",
+ "Pbdragonwang",
+ "Simon Shek",
+ "Skjackey tse",
+ "StephDC",
+ "Waihorace",
+ "Wong128hk",
+ "Wrightbus",
+ "Yfdyh000",
+ "Zanhsieh",
+ "S8321414",
+ "LNDDYL",
+ "Zhxy 519",
+ "Cwek",
+ "Matma Rex",
+ "1233thehongkonger",
+ "逆襲的天邪鬼",
+ "Corainn",
+ "A2093064",
+ "Laundry Machine",
+ "Kly",
+ "Sanmosa"
+ ]
+ },
+ "abusefilter-desc": "套用自動啟發式演算法於編輯",
+ "abusefilter": "防濫用過濾器設定",
+ "abuselog": "濫用日誌",
+ "abusefilter-intro": "歡迎使用防濫用過濾器管理介面。\n防濫用過濾器是針對所有編輯動作進行自動化判斷的軟體機制。\n本介面包含了現有的過濾器清單並允許修改。",
+ "abusefilter-mustbeeditor": "基於安全性考量,僅擁有權限修改防濫用過濾器的使用者可使用本介面。",
+ "abusefilter-warning": "'''警告''':此操作已被系統自動識別為有害動作。\n沒有建設性的操作將會被快速還原,\n嚴重或重複的非建設性的編輯將導致您的帳號或 IP 位址被封鎖。\n如果您認為您的編輯是具有建設性的,您可以再送出一次以確認。\n與您的操作符合的濫用規則描述為:$1",
+ "abusefilter-disallowed": "此操作已被系統自動識別為有害動作並已禁止。\n如果您認為您的操作是有建設性的,請與管理員聯絡,並告知您剛才嘗試進行的事。\n與您的操作符合的濫用規則描述為:$1",
+ "abusefilter-blocked-display": "此操作已被系統自動識別為有害動作,\n系統已阻止您執行此操作。\n為了保護 {{SITENAME}},您的帳號及所有其相關的 IP 位址皆會被封鎖,不允許編輯。\n如果這是系統誤判,請聯絡管理員。\n與您的操作符合的濫用規則描述為:$1",
+ "abusefilter-degrouped": "系統已自動將您的操作識別為有害動作。\n因此已禁止此操作。另外,由於您的帳號疑似遭到盜用,您的所有權限均已取消。\n如果您認為這是系統誤判,請附上此操作的解釋並聯繫行政員,這樣或許能取回權限。\n與您的操作符合的濫用規則描述為:$1",
+ "abusefilter-autopromote-blocked": "此操作已被系統自動識別為有害動作並已禁止。\n基於安全性考量,部份例行授予已建立帳號的權限將暫時從您的帳號上撤回。\n與您的操作符合的濫用規則描述為:$1",
+ "abusefilter-blocker": "防濫用過濾器",
+ "abusefilter-blockreason": "已由防濫用過濾器自動封鎖。\n符合的規則描述為︰$1",
+ "abusefilter-degroupreason": "已由防濫用過濾器自動撤銷權限。\n規則描述︰$1",
+ "abusefilter-accountreserved": "此帳號名稱已保留給防濫用過濾器使用。",
+ "right-abusefilter-modify": "修改防濫用過濾器",
+ "right-abusefilter-view": "檢視防濫用過濾器",
+ "right-abusefilter-log": "檢視濫用日誌",
+ "right-abusefilter-log-detail": "檢視濫用日誌詳細資料",
+ "right-abusefilter-private": "檢視濫用日誌中的非公開資料",
+ "right-abusefilter-private-log": "檢視防濫用過濾器非公開詳細資料存取日誌",
+ "right-abusefilter-modify-restricted": "修改防濫用過濾器使用已限制的動作",
+ "right-abusefilter-revert": "還原所有指定防濫用過濾器做的變更",
+ "right-abusefilter-view-private": "檢視標記為非公開的防濫用過濾器",
+ "right-abusefilter-log-private": "檢視標記為非公開的濫用過濾器日誌項目",
+ "right-abusefilter-hide-log": "隱藏此日誌於濫用日誌",
+ "right-abusefilter-hidden-log": "檢視已隱藏的濫用日誌項目",
+ "right-abusefilter-modify-global": "建立或修改全域濫用過濾器",
+ "action-abusefilter-modify": "修改防濫用過濾器",
+ "action-abusefilter-view": "檢視防濫用過濾器",
+ "action-abusefilter-log": "檢視濫用日誌",
+ "action-abusefilter-log-detail": "檢視濫用日誌詳細資料",
+ "action-abusefilter-private": "檢視濫用日誌中的非公開資料",
+ "action-abusefilter-private-log": "檢視防濫用過濾器非公開詳細資料存取日誌",
+ "action-abusefilter-modify-restricted": "修改防濫用過濾器使用已限制的動作",
+ "action-abusefilter-revert": "還原所有指定防濫用過濾器做的變更",
+ "action-abusefilter-view-private": "檢視標記為非公開的防濫用過濾器",
+ "action-abusefilter-log-private": "檢視標記為非公開的濫用過濾器日誌項目",
+ "abusefilter-log": "防濫用過濾器日誌",
+ "abusefilter-log-summary": "此日誌顯示曾觸發過濾器的所有操作清單。",
+ "abusefilter-log-search": "搜尋濫用日誌",
+ "abusefilter-log-search-user": "用戶:",
+ "abusefilter-log-search-filter": "過濾器 ID (以 | 符號分隔) :",
+ "abusefilter-log-search-title": "標題:",
+ "abusefilter-log-search-wiki": "Wiki:",
+ "abusefilter-log-search-impact": "影響:",
+ "abusefilter-log-search-impact-all": "所有操作",
+ "abusefilter-log-search-impact-saved": "僅保存的更改",
+ "abusefilter-log-search-impact-not-saved": "沒有保存的更改",
+ "abusefilter-log-search-entries-label": "可見性:",
+ "abusefilter-log-search-entries-all": "所有紀錄",
+ "abusefilter-log-search-entries-hidden": "只顯示隱藏項目",
+ "abusefilter-log-search-entries-visible": "只顯示可見項目",
+ "abusefilter-log-search-action-taken-label": "採取的動作:",
+ "abusefilter-log-search-action-taken-any": "任何",
+ "abusefilter-log-search-submit": "搜尋",
+ "abusefilter-log-entry": "$1:$2 在 $4 {{GENDER:$8|執行}}操作 \"$3\" 時{{GENDER:$8|觸發}}防濫用過濾器。\n採取的動作:$5;\n過濾器描述:$6",
+ "abusefilter-log-entry-withdiff": "$1:$2 {{GENDER:$8|執行}}操作 \"$3\" 於 $4 時{{GENDER:$8|觸發}}防濫用過濾器。\n採取的動作:$5;\n過濾器描述:$6 ($7)",
+ "abusefilter-log-detailedentry-meta": "$1:$2在$5{{GENDER:$9|執行}}操作「$4」時{{GENDER:$9|觸發}}了$3。採取的行動:$6;過濾器描述:$7($8)",
+ "abusefilter-log-detailedentry-global": "全域過濾器 $1",
+ "abusefilter-log-detailedentry-local": "過濾器 $1",
+ "abusefilter-log-detailslink": "詳細資料",
+ "abusefilter-log-diff": "差異",
+ "abusefilter-log-hidelink": "調整公開/非公開",
+ "abusefilter-log-details-legend": "日誌項目 $1 的詳細資料",
+ "abusefilter-log-details-var": "變數",
+ "abusefilter-log-details-val": "值",
+ "abusefilter-log-details-vars": "動作參數",
+ "abusefilter-log-details-private": "非公開日誌詳細資料",
+ "abusefilter-log-details-ip": "來源 IP 位址",
+ "abusefilter-log-details-checkuser": "查核使用者",
+ "abusefilter-log-noactions": "無",
+ "abusefilter-log-details-diff": "在編輯中所做的變更",
+ "abusefilter-log-linkoncontribs": "濫用日誌",
+ "abusefilter-log-linkoncontribs-text": "{{GENDER:$1|此使用者}}的濫用日誌",
+ "abusefilter-log-hidden": "(隱藏項目)",
+ "abusefilter-log-hidden-implicit": "(隱藏,因修訂已刪除)",
+ "abusefilter-log-cannot-see-details": "您沒有權限查看此項目詳細資料。",
+ "abusefilter-log-cannot-see-private-details": "您沒有權限查看此項目的非公開詳細資料。",
+ "abusefilter-log-nonexistent": "指定 ID 的實體不存在。",
+ "abusefilter-log-details-hidden": "此為非公開項目,您無法檢視詳細資料。",
+ "abusefilter-log-private-not-included": "您指定一個或多個過濾器 ID 為非公開的。由於您未被允許檢視這些非公開過濾器,搜尋結果不會包含這些過濾器。",
+ "abusefilter-log-hide-legend": "隱藏日誌項目",
+ "abusefilter-log-hide-id": "日誌項目 ID:",
+ "abusefilter-log-hide-hidden": "隱藏此日誌項目",
+ "abusefilter-log-hide-reason": "原因:",
+ "abusefilter-log-hide-reason-other": "其它/額外的原因:",
+ "abusefilter-log-hide-forbidden": "您沒有權限隱藏濫用日誌項目。",
+ "abusefilter-logentry-suppress": "隱藏 \"[[$1]]\"",
+ "abusefilter-logentry-unsuppress": "取消隱藏 \"[[$1]]\"",
+ "logentry-abusefilter-hit": "$1 於 $3 {{GENDER:$2|執行}}操作 \"$5\" {{GENDER:$2|已觸發}} $4。採取的動作:$6 ($7)",
+ "log-action-filter-abusefilter": "過濾器更改的類型:",
+ "log-action-filter-abusefilter-create": "新過濾器建立",
+ "log-action-filter-abusefilter-modify": "過濾器修改",
+ "logentry-abusefilterprivatedetails-access": "$1{{GENDER:$2|存取了}}$3的非公開詳細資料",
+ "abusefilterprivatedetails-log-name": "防濫用過濾器非公開詳細資料存取日誌",
+ "abusefilter-management": "防濫用過濾器管理",
+ "abusefilter-list": "所有過濾器",
+ "abusefilter-list-id": "過濾器 ID",
+ "abusefilter-list-pattern": "模式",
+ "abusefilter-list-status": "狀態",
+ "abusefilter-list-public": "公開描述",
+ "abusefilter-list-consequences": "處理方式",
+ "abusefilter-list-visibility": "公開/非公開",
+ "abusefilter-list-hitcount": "命中次數",
+ "abusefilter-list-edit": "編輯",
+ "abusefilter-list-details": "詳細資料",
+ "abusefilter-list-limit": "每頁顯示筆數:",
+ "abusefilter-list-lastmodified": "最後修改:",
+ "abusefilter-list-group": "過濾器群組",
+ "abusefilter-hidden": "非公開",
+ "abusefilter-unhidden": "公開",
+ "abusefilter-enabled": "已開啟",
+ "abusefilter-deleted": "已刪除",
+ "abusefilter-disabled": "已停用",
+ "abusefilter-hitcount": "$1 次命中",
+ "abusefilter-new": "建立新的過濾器",
+ "abusefilter-return": "返回過濾器管理",
+ "abusefilter-status-global": "全域",
+ "abusefilter-list-options": "選項",
+ "abusefilter-list-options-deleted": "已刪除的過濾器:",
+ "abusefilter-list-options-deleted-only": "僅顯示已刪除的過濾器",
+ "abusefilter-list-options-deleted-hide": "隱藏已刪除的過濾器",
+ "abusefilter-list-options-deleted-show": "包含已刪除的過濾器",
+ "abusefilter-list-options-scope": "顯示過濾器:",
+ "abusefilter-list-options-scope-local": "僅本地規則",
+ "abusefilter-list-options-scope-global": "僅全域規則",
+ "abusefilter-list-options-scope-all": "本地及全域規則",
+ "abusefilter-list-options-disabled": "已停用的過濾器:",
+ "abusefilter-list-options-hidedisabled": "隱藏已停用的過濾器",
+ "abusefilter-list-options-searchfield": "在規則內搜尋:",
+ "abusefilter-list-options-searchpattern": "輸入模式",
+ "abusefilter-list-options-searchoptions": "搜尋模式:",
+ "abusefilter-list-options-search-like": "純文字查詢",
+ "abusefilter-list-options-search-rlike": "正規表達式",
+ "abusefilter-list-options-search-irlike": "不區分大小寫的正規表達式",
+ "abusefilter-list-regexerror": "搜尋時發生錯誤:正規表達式語法錯誤。",
+ "abusefilter-list-options-submit": "更新",
+ "abusefilter-tools-text": "本頁提供可協助您製訂與檢測防濫用過濾器的工具。",
+ "abusefilter-tools-expr": "表示法測試器",
+ "abusefilter-tools-submitexpr": "評估",
+ "abusefilter-tools-reautoconfirm": "還原自動確認狀態",
+ "abusefilter-tools-reautoconfirm-user": "用戶:",
+ "abusefilter-tools-reautoconfirm-submit": "重新自動確認",
+ "abusefilter-reautoconfirm-none": "該使用者之自動確認狀態並沒有被停止過。",
+ "abusefilter-reautoconfirm-notallowed": "您未被允許還原自動確認狀態。",
+ "abusefilter-reautoconfirm-done": "該帳號的自動確認狀態已被還原",
+ "abusefilter-status": "在最近 $1 次近期變更中,有 $2 ($3%) 個過濾器達到 $4 次的比較條件限制,且有 $5 ($6%) 次近期變更符合其中一個已開啟的過濾器。",
+ "abusefilter-edit": "正在編輯防濫用過濾器",
+ "abusefilter-edit-subtitle": "正在編輯過濾器 $1",
+ "abusefilter-edit-subtitle-new": "正在建立過濾器",
+ "abusefilter-edit-oldwarning": "<strong>您正編輯舊版本的過濾器。\n統計資訊引用的是最近版本的過濾器資訊。\n若您儲存目前的修改,您將會覆蓋所有自您修訂版本之後的所有變更。</strong> &bull;\n[[Special:AbuseFilter/history/$2|返回此過濾器歷史]]。",
+ "abusefilter-edit-status-label": "統計資訊:",
+ "abusefilter-edit-status": "在最近 $1 次{{PLURAL:$1|操作}}中,此過濾器已命中 $2 ($3%) 次。",
+ "abusefilter-edit-status-profile": "在最近 $1 次操作中,此過濾器已命中 $2 ($3%) 次。\n其平均執行時間為 $4 ms,且使用了條件限制中 $5 個條件。",
+ "abusefilter-edit-throttled-warning": "'''警告:'''該過濾器已自動標示為有害。作為安全措施,以下操作將不會執行($1)。請複查並[[mw:Extension:AbuseFilter/Conditions|優化]]您的條件來移除該限制",
+ "abusefilter-edit-new": "新過濾器",
+ "abusefilter-edit-save": "儲存過濾器",
+ "abusefilter-edit-id": "過濾器 ID:",
+ "abusefilter-edit-switch-editor": "切換編輯器",
+ "abusefilter-edit-description": "描述:\n:''(可公開檢視)''",
+ "abusefilter-edit-field-description": "描述",
+ "abusefilter-edit-group": "過濾器群組:",
+ "abusefilter-edit-flags": "旗標:",
+ "abusefilter-edit-enabled": "開啟此過濾器",
+ "abusefilter-edit-deleted": "標記為已刪除",
+ "abusefilter-edit-hidden": "隱藏此過濾器的詳細資料",
+ "abusefilter-edit-global": "全域過濾器",
+ "abusefilter-edit-rules": "條件:",
+ "abusefilter-edit-field-conditions": "條件",
+ "abusefilter-edit-notes": "說明:",
+ "abusefilter-edit-lastmod": "過濾器最近修改:",
+ "abusefilter-edit-lastmod-text": "於 $1 由 $2",
+ "abusefilter-edit-hitcount": "過濾器命中次數:",
+ "abusefilter-edit-consequences": "符合條件時採取的動作",
+ "abusefilter-edit-action-warn": "在警告使用者後才觸發這些動作",
+ "abusefilter-edit-action-disallow": "禁止使用者進行可疑動作",
+ "abusefilter-edit-action-blockautopromote": "撤銷使用者的自動確認狀態",
+ "abusefilter-edit-action-degroup": "從所有已授權的群組中移除該使用者",
+ "abusefilter-edit-action-block": "禁止該使用者及/或 IP 位址進行編輯",
+ "abusefilter-edit-action-blocktalk": "阻止用戶和/或 IP 位址在封禁期間編輯自己的對話頁",
+ "abusefilter-edit-action-throttle": "僅在使用者超過頻率限制後觸發動作",
+ "abusefilter-edit-action-rangeblock": "封鎖使用者來源位置的對應子網段區間。",
+ "abusefilter-edit-action-tag": "標記該編輯需要進一步審查",
+ "abusefilter-edit-throttle-count": "允許的操作次數:",
+ "abusefilter-edit-throttle-period": "期間:",
+ "abusefilter-edit-throttle-seconds": "$1 秒",
+ "abusefilter-edit-throttle-groups": "群組門檻依︰\n:''(一行一筆,以逗號相連)''",
+ "abusefilter-edit-warn-message": "警告用的系統訊息:",
+ "abusefilter-edit-warn-other": "其他訊息",
+ "abusefilter-edit-warn-other-label": "其他訊息的頁面名稱:\n:''(不含 MediaWiki 字首)''",
+ "abusefilter-edit-warn-actions": "動作:",
+ "abusefilter-edit-warn-preview": "預覽已選擇的訊息",
+ "abusefilter-edit-warn-edit": "建立/編輯已選擇的訊息",
+ "abusefilter-edit-tag-tag": "欲套用的[[Special:Tags|標籤]] (一行一筆):",
+ "abusefilter-edit-block-anon-durations": "匿名使用者的封禁持續時間:",
+ "abusefilter-edit-block-user-durations": "註冊使用者的封禁持續時間:",
+ "abusefilter-block-anon": "匿名使用者",
+ "abusefilter-block-user": "已註冊使用者",
+ "abusefilter-edit-denied": "該過濾器已設為不公開,您無法檢視此過濾器的詳細資料。",
+ "abusefilter-edit-main": "過濾器參數",
+ "abusefilter-edit-done-subtitle": "已編輯過濾器",
+ "abusefilter-edit-done": "您對[[Special:AbuseFilter/$1|過濾器$3]]的[[Special:AbuseFilter/history/$1/diff/prev/$2|變更]]已儲存。",
+ "abusefilter-edit-badsyntax": "您指定的過濾器中有語法錯誤。\n語法分析器的回應為:<pre>$1</pre>",
+ "abusefilter-edit-missingfields": "需要填寫這些必填欄位:$1",
+ "abusefilter-edit-restricted": "該過濾器包含了一個或多個已限制的動作,您無法編輯此過濾器。\n請聯絡擁有新增已限制動作權限的使用者協助您修改。",
+ "abusefilter-edit-viewhistory": "檢視此過濾器歷史",
+ "abusefilter-edit-history": "歷史:",
+ "abusefilter-edit-check": "語法檢查",
+ "abusefilter-edit-badfilter": "您指定的過濾器並不存在",
+ "abusefilter-edit-revert": "還原此過濾器做的動作",
+ "abusefilter-edit-tools": "工具:",
+ "abusefilter-edit-test-link": "使用最近的編輯測試此過濾器",
+ "abusefilter-edit-export": "匯出此過濾器至其他 Wiki",
+ "abusefilter-edit-syntaxok": "沒有偵測到語法錯誤。",
+ "abusefilter-edit-syntaxerr": "已偵測到語法錯誤:$1",
+ "abusefilter-edit-bad-tags": "您指定的一個或多個標籤無效。標籤不能過長、不可包含特殊字元,而且不能被其他軟體所占用。嘗試選擇一個新的標籤名。",
+ "abusefilter-edit-notallowed": "您沒有權限建立或編輯防濫用過濾器",
+ "abusefilter-edit-notallowed-global": "您沒有權限建立或編輯全域防濫用過濾器",
+ "abusefilter-edit-notallowed-global-custom-msg": "全域過濾器不支援使用字訂警告訊息",
+ "abusefilter-edit-builder-select": "請選擇要新增至游標的項目",
+ "abusefilter-edit-builder-group-op-arithmetic": "算術運算子",
+ "abusefilter-edit-builder-op-arithmetic-addition": "加法 (+)",
+ "abusefilter-edit-builder-op-arithmetic-subtraction": "減法 (-)",
+ "abusefilter-edit-builder-op-arithmetic-multiplication": "乘法 (*)",
+ "abusefilter-edit-builder-op-arithmetic-divide": "除法 (/)",
+ "abusefilter-edit-builder-op-arithmetic-modulo": "模除 (%)",
+ "abusefilter-edit-builder-op-arithmetic-pow": "次方 (**)",
+ "abusefilter-edit-builder-group-op-comparison": "比較運算子",
+ "abusefilter-edit-builder-op-comparison-equal": "值等於(==)",
+ "abusefilter-edit-builder-op-comparison-equal-strict": "值和類型等於(===)",
+ "abusefilter-edit-builder-op-comparison-notequal": "值不等於(!=)",
+ "abusefilter-edit-builder-op-comparison-notequal-strict": "值和類型不等於(!==)",
+ "abusefilter-edit-builder-op-comparison-lt": "小於 (<)",
+ "abusefilter-edit-builder-op-comparison-gt": "大於 (>)",
+ "abusefilter-edit-builder-op-comparison-lte": "小於等於 (<=)",
+ "abusefilter-edit-builder-op-comparison-gte": "大於等於 (>=)",
+ "abusefilter-edit-builder-group-op-bool": "布林運算子",
+ "abusefilter-edit-builder-op-bool-not": "非 (!)",
+ "abusefilter-edit-builder-op-bool-and": "且 (&)",
+ "abusefilter-edit-builder-op-bool-or": "或 (|)",
+ "abusefilter-edit-builder-op-bool-xor": "異或(^)",
+ "abusefilter-edit-builder-group-misc": "其他",
+ "abusefilter-edit-builder-misc-in": "於字串中 (in)",
+ "abusefilter-edit-builder-misc-like": "符合模式 (like)",
+ "abusefilter-edit-builder-misc-rlike": "符合正規表示法 (rlike)",
+ "abusefilter-edit-builder-misc-irlike": "符合正規表示法,不區分大小寫 (irlike)",
+ "abusefilter-edit-builder-misc-contains": "左邊的字串含有右邊的字串 (contains)",
+ "abusefilter-edit-builder-misc-stringlit": "字串 (\"\")",
+ "abusefilter-edit-builder-misc-tern": "三元運算子 (X ? Y : Z)",
+ "abusefilter-edit-builder-misc-cond": "條件 (if X then Y else Z)",
+ "abusefilter-edit-builder-group-funcs": "函數",
+ "abusefilter-edit-builder-funcs-length": "字串長度 (length)",
+ "abusefilter-edit-builder-funcs-lcase": "轉為小寫 (lcase)",
+ "abusefilter-edit-builder-funcs-ucase": "轉為大寫 (ucase)",
+ "abusefilter-edit-builder-funcs-ccnorm": "正規化易混淆字元 (ccnorm)",
+ "abusefilter-edit-builder-funcs-ccnorm-contains-any": "在OR模式中標準化並搜尋字串的多個子字串(ccnorm_contains_any)",
+ "abusefilter-edit-builder-funcs-ccnorm-contains-all": "在 AND 模式中標準化並搜尋字串的多個子字串(ccnorm_contains_all)",
+ "abusefilter-edit-builder-funcs-rmdoubles": "移除雙位元字元 (rmdoubles)",
+ "abusefilter-edit-builder-funcs-specialratio": "特殊字元數 / 總字元數比例 (specialratio)",
+ "abusefilter-edit-builder-funcs-norm": "正規化 (norm)",
+ "abusefilter-edit-builder-funcs-count": "字串 X 在字串 Y 裡出現的次數 (count)",
+ "abusefilter-edit-builder-funcs-rcount": "正規表式法 X 出現在字串 Y 的次數 (rcount)",
+ "abusefilter-edit-builder-funcs-get_matches": "正規表達式匹配文字中的捕捉陣列(get_matches)",
+ "abusefilter-edit-builder-funcs-rmwhitespace": "移除空白字元 (rmwhitespace)",
+ "abusefilter-edit-builder-funcs-rmspecials": "移除特殊字元 (rmspecials)",
+ "abusefilter-edit-builder-funcs-ip_in_range": "IP 是否在範圍內? (ip_in_range)",
+ "abusefilter-edit-builder-funcs-contains-any": "在 OR 模式中搜尋字串中是否包含任何子字串。 (contains_any)",
+ "abusefilter-edit-builder-funcs-contains-all": "在 AND 模式中搜索字串以獲得多個子字串。 (contains_all)",
+ "abusefilter-edit-builder-funcs-substr": "子字串 (substr)",
+ "abusefilter-edit-builder-funcs-strpos": "取得子字串在字串中的位置 (strpos)",
+ "abusefilter-edit-builder-funcs-str_replace": "取代子字串為字串 (str_replace)",
+ "abusefilter-edit-builder-funcs-rescape": "於正規表式法中的字串加上跳脫符號 (rescape)",
+ "abusefilter-edit-builder-funcs-set_var": "設定變數 (set_var)",
+ "abusefilter-edit-builder-group-vars": "變數",
+ "abusefilter-edit-builder-vars-accountname": "帳號(建立時)的名稱",
+ "abusefilter-edit-builder-vars-timestamp": "變更的 Unix 時間戳記",
+ "abusefilter-edit-builder-vars-timestamp-expanded": "日誌時間戳",
+ "abusefilter-edit-builder-vars-action": "動作",
+ "abusefilter-edit-builder-vars-addedlines": "編輯增加的行數",
+ "abusefilter-edit-builder-vars-delta": "編輯變更的大小",
+ "abusefilter-edit-builder-vars-diff": "編輯變更的 Unified diff",
+ "abusefilter-edit-builder-vars-newsize": "新的頁面大小",
+ "abusefilter-edit-builder-vars-oldsize": "舊的頁面大小",
+ "abusefilter-edit-builder-vars-old-content-model": "舊內容模型",
+ "abusefilter-edit-builder-vars-new-content-model": "新內容模型",
+ "abusefilter-edit-builder-vars-removedlines": "編輯移除的行數",
+ "abusefilter-edit-builder-vars-summary": "編輯摘要/原因",
+ "abusefilter-edit-builder-vars-article-id": "頁面 ID",
+ "abusefilter-edit-builder-vars-article-ns": "頁面命名空間",
+ "abusefilter-edit-builder-vars-article-text": "頁面標題 (不含命名空間)",
+ "abusefilter-edit-builder-vars-article-prefixedtext": "完整頁面標題",
+ "abusefilter-edit-builder-vars-article-views": "頁面檢視次數",
+ "abusefilter-edit-builder-vars-movedfrom-id": "移動來源頁面的頁面 ID",
+ "abusefilter-edit-builder-vars-movedfrom-ns": "移動來源頁面的命名空間",
+ "abusefilter-edit-builder-vars-movedfrom-text": "移動來源頁面的標題",
+ "abusefilter-edit-builder-vars-movedfrom-prefixedtext": "移動來源頁面的完整標題",
+ "abusefilter-edit-builder-vars-movedto-id": "移動目標頁面的頁面 ID",
+ "abusefilter-edit-builder-vars-movedto-ns": "移動目標頁面的命名空間",
+ "abusefilter-edit-builder-vars-movedto-text": "移動目標頁面的標題",
+ "abusefilter-edit-builder-vars-movedto-prefixedtext": "移動目標頁面的完整標題",
+ "abusefilter-edit-builder-vars-user-editcount": "使用者編輯次數",
+ "abusefilter-edit-builder-vars-user-age": "使用者帳號年齡",
+ "abusefilter-edit-builder-vars-user-name": "使用者帳號名稱",
+ "abusefilter-edit-builder-vars-user-groups": "群組使用者所在 (含隱含群組)",
+ "abusefilter-edit-builder-vars-user-rights": "使用者擁有的權限",
+ "abusefilter-edit-builder-vars-user-blocked": "使用者是否被封鎖",
+ "abusefilter-edit-builder-vars-user-emailconfirm": "電子郵件地址的確認時間",
+ "abusefilter-edit-builder-vars-recent-contributors": "最近十位貢獻給該頁面的使用者",
+ "abusefilter-edit-builder-vars-first-contributor": "貢獻該頁面的第一位使用者",
+ "abusefilter-edit-builder-vars-movedfrom-recent-contributors": "最近十位對移動來源頁面有貢獻的使用者",
+ "abusefilter-edit-builder-vars-movedfrom-first-contributor": "第一位對移動來源頁面有貢獻的使用者",
+ "abusefilter-edit-builder-vars-movedto-recent-contributors": "最近十位對移動目標頁面有貢獻的使用者",
+ "abusefilter-edit-builder-vars-movedto-first-contributor": "第一位對移動目標頁面有貢獻的使用者",
+ "abusefilter-edit-builder-vars-all-links": "所有一開始加入的外部連結",
+ "abusefilter-edit-builder-vars-added-links": "所有編輯後加入的外部連結",
+ "abusefilter-edit-builder-vars-removed-links": "所有編輯後移除的外部連結",
+ "abusefilter-edit-builder-vars-old-text": "在編輯前舊頁面上的 Wikitext",
+ "abusefilter-edit-builder-vars-new-text": "在編後新頁面上的 Wikitext",
+ "abusefilter-edit-builder-vars-new-pst": "新頁面 Wikitext,於儲存前轉換",
+ "abusefilter-edit-builder-vars-diff-pst": "編輯所做的變更 Unified,儲存前轉換",
+ "abusefilter-edit-builder-vars-addedlines-pst": "編輯加入的行,儲存前轉換",
+ "abusefilter-edit-builder-vars-new-text-stripped": "新頁面文字,移除所有標籤",
+ "abusefilter-edit-builder-vars-new-html": "新修訂已解析後的 HTML 原始碼",
+ "abusefilter-edit-builder-vars-restrictions-edit": "編輯該頁面的保護層級",
+ "abusefilter-edit-builder-vars-restrictions-move": "移動該頁面的保護層級",
+ "abusefilter-edit-builder-vars-restrictions-create": "頁面的建立保護",
+ "abusefilter-edit-builder-vars-restrictions-upload": "頁面的上傳保護",
+ "abusefilter-edit-builder-vars-movedfrom-restrictions-edit": "移動來源頁面的編輯保護層級",
+ "abusefilter-edit-builder-vars-movedfrom-restrictions-move": "移動來源頁面的移動保護層級",
+ "abusefilter-edit-builder-vars-movedfrom-restrictions-create": "移動來源頁面的建立保護",
+ "abusefilter-edit-builder-vars-movedfrom-restrictions-upload": "移動來源檔案的上傳保護",
+ "abusefilter-edit-builder-vars-movedto-restrictions-edit": "移動目標頁面的編輯保護層級",
+ "abusefilter-edit-builder-vars-movedto-restrictions-move": "移動目標頁面的移動保護層級",
+ "abusefilter-edit-builder-vars-movedto-restrictions-create": "移動目標頁面的建立保護",
+ "abusefilter-edit-builder-vars-movedto-restrictions-upload": "移動目標檔案的上傳保護",
+ "abusefilter-edit-builder-vars-old-text-stripped": "舊頁面文字,移除所有標籤",
+ "abusefilter-edit-builder-vars-old-links": "編輯前,頁面中的連結",
+ "abusefilter-edit-builder-vars-old-html": "舊頁面 Wikitext,已解析為 HTML",
+ "abusefilter-edit-builder-vars-minor-edit": "是否將編輯標示為小修訂",
+ "abusefilter-edit-builder-vars-file-sha1": "檔案內容的 SHA1 雜湊值",
+ "abusefilter-edit-builder-vars-file-size": "文件大小(單位:位元組)",
+ "abusefilter-edit-builder-vars-file-mime": "文件的MIME類型",
+ "abusefilter-edit-builder-vars-file-mediatype": "文件的媒體類型",
+ "abusefilter-edit-builder-vars-file-width": "文件寬度(像素)",
+ "abusefilter-edit-builder-vars-file-height": "文件高度(像素)",
+ "abusefilter-edit-block-options": "封禁選項:",
+ "abusefilter-filter-log": "最近過濾器變更",
+ "abusefilter-history": "防濫用過濾器 #$1 的修訂歷史",
+ "abusefilter-history-foruser": "由 $1 所作的變更",
+ "abusefilter-history-hidden": "已隱藏",
+ "abusefilter-history-enabled": "已開啟",
+ "abusefilter-history-global": "全域",
+ "abusefilter-history-timestamp": "時間",
+ "abusefilter-history-user": "用戶",
+ "abusefilter-history-public": "公開的過濾器描述",
+ "abusefilter-history-flags": "旗標",
+ "abusefilter-history-filter": "過濾器規則",
+ "abusefilter-history-comments": "評論",
+ "abusefilter-history-actions": "動作",
+ "abusefilter-history-backedit": "返回過濾器編輯器",
+ "abusefilter-history-deleted": "已刪除",
+ "abusefilter-history-filterid": "篩選器",
+ "abusefilter-history-select-legend": "精確搜尋",
+ "abusefilter-history-select-user": "用戶:",
+ "abusefilter-history-select-filter": "過濾器ID:",
+ "abusefilter-history-select-submit": "精確",
+ "abusefilter-history-diff": "變更",
+ "abusefilter-history-error-hidden": "您請求的過濾器目前狀態為隱藏,故無法檢視其歷史",
+ "abusefilter-exception-unexpectedatend": "於第 $1 個字元處出現預期之外的 \"$2\"。",
+ "abusefilter-exception-expectednotfound": "於第 $1 個字元處未找到預期的 $2 (但找到 $3 $4)。",
+ "abusefilter-exception-unrecognisedkeyword": "於第 $1 個字元處出現無法識別的關鍵字 $2。",
+ "abusefilter-exception-unexpectedtoken": "於第 $1 個字元處出現預期之外的符號 \"$3\" (類型 $2)。",
+ "abusefilter-exception-unclosedstring": "於第 $1 個字元處開始未結束字串。",
+ "abusefilter-exception-invalidoperator": "於第 $1 個字元處使用了無效的運算子 \"$2\"。",
+ "abusefilter-exception-unrecognisedtoken": "於第 $1 個字元處出現預期之外的符號 \"$2\"。",
+ "abusefilter-exception-noparams": "於第 $1 個字元處未傳入函數 \"$2\" 的參數。",
+ "abusefilter-exception-dividebyzero": "於第 $1 個字元處嘗試非法將 $2 除以 0。",
+ "abusefilter-exception-unrecognisedvar": "於第 $1 個字元處出現無法識別的變數 $2。",
+ "abusefilter-exception-notenoughargs": "於第 $1 個字元處函數 $2 未傳入足夠的參數。\n\t預期有 $3 個參數,僅使用了 $4 個",
+ "abusefilter-exception-regexfailure": "於第 $1 個字元處的正規表示法 \"$3\" 錯誤:\"$2\"。",
+ "abusefilter-exception-overridebuiltin": "於第 $1 個字元處非法覆蓋內建的變數 \"$2\"。",
+ "abusefilter-exception-outofbounds": "於第 $1 個字元處使用了不存在的清單項目 $2 (清單大小 = $3)。",
+ "abusefilter-exception-notlist": "於第 $1 個字元處於非陣列中使用了陣列項目。",
+ "abusefilter-action-tag": "標籤",
+ "abusefilter-action-throttle": "門檻值",
+ "abusefilter-action-warn": "警告",
+ "abusefilter-action-blockautopromote": "撤銷自動確認",
+ "abusefilter-action-block": "封鎖",
+ "abusefilter-action-degroup": "從使用者群組中移除",
+ "abusefilter-action-rangeblock": "範圍封鎖",
+ "abusefilter-action-disallow": "禁止",
+ "abusefilter-revert-title": "還原所有由過濾器 $1 所做的變更",
+ "abusefilter-revert-intro": "此表單允許您還原所有由防濫用過濾器 $1 所做的變更。\n使用此工具時請小心謹慎。",
+ "abusefilter-revert-preview-item": "$1:$2 於 $4 上{{GENDER:$7|作出}}了 \"$3\"。\n要還原的動作:$5 ($6)",
+ "abusefilter-revert-search-legend": "請選擇要還原的防濫用過濾器動作",
+ "abusefilter-revert-periodstart": "開始時間:",
+ "abusefilter-revert-periodend": "結束時間:",
+ "abusefilter-revert-search": "請選擇動作",
+ "abusefilter-revert-filter": "過濾器ID:",
+ "abusefilter-revert-preview-intro": "此動作將會還原以下防濫用過濾器所做的動作。\n請仔細檢查,並點 \"{{int:abusefilter-revert-confirm}}\" 確認您的選擇。",
+ "abusefilter-revert-confirm-legend": "確認回退",
+ "abusefilter-revert-confirm": "確認",
+ "abusefilter-revert-success": "您已還原了防濫用過濾器 [[Special:AbuseFilter/$1|$2]] 所做的所有動作。",
+ "abusefilter-revert-reason": "自動還原了防濫用過濾器 $1 所做的所有動作。\n原因為:$2",
+ "abusefilter-revert-reasonfield": "原因:",
+ "abusefilter-test": "使用先前的編測試過濾器",
+ "abusefilter-test-intro": "此頁面允許您使用以下方文字框輸入的過濾器檢查最後 $1 次的變更。\n若要讀取其他已存在的過濾器,請輸入過濾器 ID 於編輯文字框下方的文字框,並點選 \"{{int:abusefilter-test-load}}\" 按鈕。",
+ "abusefilter-test-legend": "過濾器測試中",
+ "abusefilter-test-load-filter": "讀取過濾器 ID:",
+ "abusefilter-test-submit": "測試",
+ "abusefilter-test-load": "讀取",
+ "abusefilter-test-user": "變更的使用者:",
+ "abusefilter-test-period-start": "變更時間晚於:",
+ "abusefilter-test-period-end": "變更時間早於:",
+ "abusefilter-test-page": "對頁面做的變更:",
+ "abusefilter-test-shownegative": "顯示不符合過濾器的變更",
+ "abusefilter-test-syntaxerr": "您輸入的過濾器語法錯誤。\n請點選 \"{{int:abusefilter-edit-check}}\" 按鈕取得完整說明。",
+ "abusefilter-test-badtitle": "您輸入的頁面標題無效。它可能包含無法作為標題使用的一個或多個字元。",
+ "abusefilter-changeslist-examine": "檢查",
+ "abusefilter-examine": "檢查單次變更",
+ "abusefilter-examine-intro": "此頁面讓您可檢查由防濫用過濾器每次變更所產生的變數並使用過濾器測試。",
+ "abusefilter-examine-legend": "請選擇變更",
+ "abusefilter-examine-diff": "Diff URL:",
+ "abusefilter-examine-user": "用戶:",
+ "abusefilter-examine-title": "頁面標題:",
+ "abusefilter-examine-submit": "搜尋",
+ "abusefilter-examine-vars": "此次變更產生的變數",
+ "abusefilter-examine-test": "使用過濾器測試此次變更",
+ "abusefilter-examine-test-button": "測試過濾器",
+ "abusefilter-examine-match": "此次變更與過濾器符合。",
+ "abusefilter-examine-nomatch": "此次變更與過濾器不符合。",
+ "abusefilter-examine-syntaxerror": "過濾器語法無效",
+ "abusefilter-examine-notfound": "無法找到您請求的變更。",
+ "abusefilter-examine-incompatible": "防濫用篩選器不支援您請求的變更。",
+ "abusefilter-examine-noresults": "您提供的搜尋參數找不到任何結果。",
+ "abusefilter-topnav": "'''防濫用過濾器導覽'''",
+ "abusefilter-topnav-home": "首頁",
+ "abusefilter-topnav-test": "批次測試",
+ "abusefilter-topnav-examine": "檢查過去編輯",
+ "abusefilter-topnav-log": "濫用日誌",
+ "abusefilter-topnav-tools": "除錯工具",
+ "abusefilter-topnav-import": "匯入過濾器",
+ "abusefilter-log-name": "修改防濫用過濾器日誌",
+ "abusefilter-log-header": "此日誌顯示了所有對過濾器所作變更摘要。\n詳細資訊請見最近過濾器變更[[Special:AbuseFilter/history|清單]]。",
+ "abusefilter-logentry-create": "$1{{GENDER:$2|建立}}了$4($5)",
+ "abusefilter-logentry-modify": "$1{{GENDER:$2|修改了}}$4($5)",
+ "abusefilter-log-noresults": "沒有結果",
+ "abusefilter-diff-title": "修訂版本間差異",
+ "abusefilter-diff-item": "項目",
+ "abusefilter-diff-version": "{{GENDER:$3|由}} $2 於 $1 所編輯的版本",
+ "abusefilter-diff-info": "基本資訊",
+ "abusefilter-diff-pattern": "過濾器條件",
+ "abusefilter-diff-invalid": "無法取得請求的版本",
+ "abusefilter-diff-backhistory": "返回過濾器歷史",
+ "abusefilter-diff-prev": "較舊的變更",
+ "abusefilter-diff-next": "較新的變更",
+ "abusefilter-import-intro": "您可以使用此介面匯入來自其他 Wiki 的過濾器。\n在來源的 Wiki,點選於 \"{{int:abusefilter-edit-tools}}\" 下方的 \"{{int:abusefilter-edit-export}}\"。\n複製文字框中顯示的文字,並將該文字貼上至此文字框中,然後點選 \"{{int:abusefilter-import-submit}}\"。",
+ "abusefilter-import-submit": "匯入資料",
+ "abusefilter-group-default": "預設",
+ "abusefilter-http-error": "發生 HTTP 錯誤:$1。",
+ "abusefilter-view-private-submit": "檢視非公開詳細資料",
+ "abusefilter-view-private": "檢視非公開詳細資料",
+ "abusefilter-view-private-reason": "存取非公開詳細資料的原因:",
+ "abusefilter-log-details-id": "日誌ID",
+ "abusefilter-invalid-request": "無效請求!您必須透過[[Special:AbuseLog/$1]]上的表單提供原因後才能存取非公開日誌詳細資料。",
+ "abusefilter-invalid-request-noid": "無效請求!您必須透過在濫用日誌詳細資料上的表單提供原因後才能訪問非公開日誌詳細資料。",
+ "log-description-abusefilterprivatedetails": "此日誌顯示用戶存取非公開濫用日誌詳細資料的時間列表。",
+ "abusefilter-noreason": "警告:要查看此日誌的非公開詳細資料,您必須提供原因。",
+ "abusefilter-log-ip-not-available": "不可用",
+ "tag-abusefilter-condition-limit": "達到條件限制",
+ "tag-abusefilter-condition-limit-description": "不能被所有啟用的[[Special:AbuseFilter|防濫用過濾器]]檢查的編輯或其他日誌活動([[mw:Extension:AbuseFilter/Conditions|幫助]])。",
+ "apihelp-abusefiltercheckmatch-description": "檢查一組變量是否配合防濫用過濾器,編輯者會被記錄相關事件。\n\nvars、rcid或logid是必須填入的,然而只會使用其中一個。",
+ "apihelp-abusefilterchecksyntax-description": "檢查一個防濫用過濾器的語法。",
+ "apihelp-abusefilterchecksyntax-summary": "檢查一個防濫用過濾器的語法。",
+ "apihelp-abusefilterchecksyntax-param-filter": "要檢查語法的完整過濾器文字。",
+ "apihelp-abusefilterchecksyntax-example-1": "檢查有效過濾器的語法",
+ "apihelp-abusefilterchecksyntax-example-2": "檢查無效過濾器的語法",
+ "apihelp-abusefilterevalexpression-description": "評估防濫用過濾器的表達式。",
+ "apihelp-abusefilterevalexpression-summary": "評估防濫用過濾器的表達式。",
+ "apihelp-abusefilterunblockautopromote-param-user": "您希望解封的使用者名稱。",
+ "apihelp-abusefilterunblockautopromote-example-1": "還原對[[User:Example]]的自動確認撤銷",
+ "apihelp-query+abusefilters-description": "顯示防濫用過濾器的詳細資料。",
+ "apihelp-query+abusefilters-summary": "顯示防濫用過濾器的詳細資料。",
+ "apihelp-query+abusefilters-param-startid": "起始列舉的篩選 ID。",
+ "apihelp-query+abusefilters-param-endid": "終止列舉的篩選 ID。",
+ "apihelp-query+abusefilters-param-limit": "篩選能列出的最大數量。",
+ "apihelp-query+abusefilters-example-1": "列出啟用的公開過濾器",
+ "apihelp-query+abuselog-param-start": "起始列舉的時間戳記。",
+ "apihelp-query+abuselog-param-end": "終止列舉的時間戳記。",
+ "apihelp-query+abuselog-param-limit": "項目能列出的最大數量。",
+ "apihelp-query+abuselog-param-prop": "要取得的屬性。",
+ "apihelp-query+abuselog-example-1": "顯示近期的日誌項目",
+ "apihelp-query+abuselog-example-2": "顯示 [[API]] 近期的日誌項目",
+ "apierror-abusefilter-badsyntax": "此過濾器含有無效語法。"
+}
diff --git a/www/wiki/extensions/AbuseFilter/i18n/zu.json b/www/wiki/extensions/AbuseFilter/i18n/zu.json
new file mode 100644
index 00000000..a2cdde9e
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/i18n/zu.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Irus"
+ ]
+ },
+ "abusefilter-log-name": "Ukuhlukumeza lemifanekiso log"
+}
diff --git a/www/wiki/extensions/AbuseFilter/includes/AFComputedVariable.php b/www/wiki/extensions/AbuseFilter/includes/AFComputedVariable.php
new file mode 100644
index 00000000..43dac6a1
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/includes/AFComputedVariable.php
@@ -0,0 +1,445 @@
+<?php
+
+use Wikimedia\Rdbms\Database;
+use MediaWiki\MediaWikiServices;
+
+class AFComputedVariable {
+ public $mMethod, $mParameters;
+ public static $userCache = [];
+ public static $articleCache = [];
+
+ /**
+ * @param string $method
+ * @param array $parameters
+ */
+ function __construct( $method, $parameters ) {
+ $this->mMethod = $method;
+ $this->mParameters = $parameters;
+ }
+
+ /**
+ * It's like Article::prepareContentForEdit, but not for editing (old wikitext usually)
+ *
+ *
+ * @param string $wikitext
+ * @param WikiPage $article
+ *
+ * @return object
+ */
+ function parseNonEditWikitext( $wikitext, $article ) {
+ static $cache = [];
+
+ $cacheKey = md5( $wikitext ) . ':' . $article->getTitle()->getPrefixedText();
+
+ if ( isset( $cache[$cacheKey] ) ) {
+ return $cache[$cacheKey];
+ }
+
+ global $wgParser;
+ $edit = (object)[];
+ $options = new ParserOptions;
+ $options->setTidy( true );
+ $edit->output = $wgParser->parse( $wikitext, $article->getTitle(), $options );
+ $cache[$cacheKey] = $edit;
+
+ return $edit;
+ }
+
+ /**
+ * For backwards compatibility: Get the user object belonging to a certain name
+ * in case a user name is given as argument. Nowadays user objects are passed
+ * directly but many old log entries rely on this.
+ *
+ * @param string|User $user
+ * @return User
+ */
+ static function getUserObject( $user ) {
+ if ( $user instanceof User ) {
+ $username = $user->getName();
+ } else {
+ $username = $user;
+ if ( isset( self::$userCache[$username] ) ) {
+ return self::$userCache[$username];
+ }
+
+ wfDebug( "Couldn't find user $username in cache\n" );
+ }
+
+ if ( count( self::$userCache ) > 1000 ) {
+ self::$userCache = [];
+ }
+
+ if ( $user instanceof User ) {
+ self::$userCache[$username] = $user;
+ return $user;
+ }
+
+ if ( IP::isIPAddress( $username ) ) {
+ $u = new User;
+ $u->setName( $username );
+ self::$userCache[$username] = $u;
+ return $u;
+ }
+
+ $user = User::newFromName( $username );
+ $user->load();
+ self::$userCache[$username] = $user;
+
+ return $user;
+ }
+
+ /**
+ * @param int $namespace
+ * @param Title $title
+ * @return Article
+ */
+ static function articleFromTitle( $namespace, $title ) {
+ if ( isset( self::$articleCache["$namespace:$title"] ) ) {
+ return self::$articleCache["$namespace:$title"];
+ }
+
+ if ( count( self::$articleCache ) > 1000 ) {
+ self::$articleCache = [];
+ }
+
+ wfDebug( "Creating article object for $namespace:$title in cache\n" );
+
+ // TODO: use WikiPage instead!
+ $t = Title::makeTitle( $namespace, $title );
+ self::$articleCache["$namespace:$title"] = new Article( $t );
+
+ return self::$articleCache["$namespace:$title"];
+ }
+
+ /**
+ * @param WikiPage $article
+ * @return array
+ */
+ static function getLinksFromDB( $article ) {
+ // Stolen from ConfirmEdit
+ $id = $article->getId();
+ if ( !$id ) {
+ return [];
+ }
+
+ $dbr = wfGetDB( DB_REPLICA );
+ $res = $dbr->select(
+ 'externallinks',
+ [ 'el_to' ],
+ [ 'el_from' => $id ],
+ __METHOD__
+ );
+ $links = [];
+ foreach ( $res as $row ) {
+ $links[] = $row->el_to;
+ }
+ return $links;
+ }
+
+ /**
+ * @param AbuseFilterVariableHolder $vars
+ * @return AFPData|array|int|mixed|null|string
+ * @throws MWException
+ * @throws AFPException
+ */
+ function compute( $vars ) {
+ $parameters = $this->mParameters;
+ $result = null;
+
+ if ( !Hooks::run( 'AbuseFilter-interceptVariable',
+ [ $this->mMethod, $vars, $parameters, &$result ] ) ) {
+ return $result instanceof AFPData
+ ? $result : AFPData::newFromPHPVar( $result );
+ }
+
+ switch ( $this->mMethod ) {
+ case 'diff':
+ $text1Var = $parameters['oldtext-var'];
+ $text2Var = $parameters['newtext-var'];
+ $text1 = $vars->getVar( $text1Var )->toString();
+ $text2 = $vars->getVar( $text2Var )->toString();
+ $diffs = new Diff( explode( "\n", $text1 ), explode( "\n", $text2 ) );
+ $format = new UnifiedDiffFormatter();
+ $result = $format->format( $diffs );
+ break;
+ case 'diff-split':
+ $diff = $vars->getVar( $parameters['diff-var'] )->toString();
+ $line_prefix = $parameters['line-prefix'];
+ $diff_lines = explode( "\n", $diff );
+ $interest_lines = [];
+ foreach ( $diff_lines as $line ) {
+ if ( substr( $line, 0, 1 ) === $line_prefix ) {
+ $interest_lines[] = substr( $line, strlen( $line_prefix ) );
+ }
+ }
+ $result = $interest_lines;
+ break;
+ case 'links-from-wikitext':
+ // This should ONLY be used when sharing a parse operation with the edit.
+
+ /* @var WikiPage $article */
+ if ( isset( $parameters['article'] ) ) {
+ $article = $parameters['article'];
+ } else {
+ $article = self::articleFromTitle(
+ $parameters['namespace'],
+ $parameters['title']
+ );
+ }
+ if ( $article->getContentModel() === CONTENT_MODEL_WIKITEXT ) {
+ $textVar = $parameters['text-var'];
+
+ // XXX: Use prepareContentForEdit. But we need a Content object for that.
+ $new_text = $vars->getVar( $textVar )->toString();
+ $content = ContentHandler::makeContent( $new_text, $article->getTitle() );
+ $editInfo = $article->prepareContentForEdit( $content );
+ $links = array_keys( $editInfo->output->getExternalLinks() );
+ $result = $links;
+ break;
+ }
+ // Otherwise fall back to database
+ case 'links-from-wikitext-nonedit':
+ case 'links-from-wikitext-or-database':
+ // TODO: use Content object instead, if available! In any case, use WikiPage, not Article.
+ $article = self::articleFromTitle(
+ $parameters['namespace'],
+ $parameters['title']
+ );
+
+ if ( $vars->getVar( 'context' )->toString() == 'filter' ) {
+ $links = $this->getLinksFromDB( $article );
+ wfDebug( "AbuseFilter: loading old links from DB\n" );
+ } elseif ( $article->getContentModel() === CONTENT_MODEL_WIKITEXT ) {
+ wfDebug( "AbuseFilter: loading old links from Parser\n" );
+ $textVar = $parameters['text-var'];
+
+ $wikitext = $vars->getVar( $textVar )->toString();
+ $editInfo = $this->parseNonEditWikitext( $wikitext, $article );
+ $links = array_keys( $editInfo->output->getExternalLinks() );
+ } else {
+ // TODO: Get links from Content object. But we don't have the content object.
+ // And for non-text content, $wikitext is usually not going to be a valid
+ // serialization, but rather some dummy text for filtering.
+ $links = [];
+ }
+
+ $result = $links;
+ break;
+ case 'link-diff-added':
+ case 'link-diff-removed':
+ $oldLinkVar = $parameters['oldlink-var'];
+ $newLinkVar = $parameters['newlink-var'];
+
+ $oldLinks = $vars->getVar( $oldLinkVar )->toString();
+ $newLinks = $vars->getVar( $newLinkVar )->toString();
+
+ $oldLinks = explode( "\n", $oldLinks );
+ $newLinks = explode( "\n", $newLinks );
+
+ if ( $this->mMethod == 'link-diff-added' ) {
+ $result = array_diff( $newLinks, $oldLinks );
+ }
+ if ( $this->mMethod == 'link-diff-removed' ) {
+ $result = array_diff( $oldLinks, $newLinks );
+ }
+ break;
+ case 'parse-wikitext':
+ // Should ONLY be used when sharing a parse operation with the edit.
+ if ( isset( $parameters['article'] ) ) {
+ $article = $parameters['article'];
+ } else {
+ $article = self::articleFromTitle(
+ $parameters['namespace'],
+ $parameters['title']
+ );
+ }
+ if ( $article->getContentModel() === CONTENT_MODEL_WIKITEXT ) {
+ $textVar = $parameters['wikitext-var'];
+
+ $new_text = $vars->getVar( $textVar )->toString();
+ $content = ContentHandler::makeContent( $new_text, $article->getTitle() );
+ $editInfo = $article->prepareContentForEdit( $content );
+ if ( isset( $parameters['pst'] ) && $parameters['pst'] ) {
+ $result = $editInfo->pstContent->serialize( $editInfo->format );
+ } else {
+ $newHTML = $editInfo->output->getText();
+ // Kill the PP limit comments. Ideally we'd just remove these by not setting the
+ // parser option, but then we can't share a parse operation with the edit, which is bad.
+ $result = preg_replace( '/<!--\s*NewPP limit report[^>]*-->\s*$/si', '', $newHTML );
+ }
+ break;
+ }
+ // Otherwise fall back to database
+ case 'parse-wikitext-nonedit':
+ // TODO: use Content object instead, if available! In any case, use WikiPage, not Article.
+ $article = self::articleFromTitle( $parameters['namespace'], $parameters['title'] );
+ $textVar = $parameters['wikitext-var'];
+
+ if ( $article->getContentModel() === CONTENT_MODEL_WIKITEXT ) {
+ if ( isset( $parameters['pst'] ) && $parameters['pst'] ) {
+ // $textVar is already PSTed when it's not loaded from an ongoing edit.
+ $result = $vars->getVar( $textVar )->toString();
+ } else {
+ $text = $vars->getVar( $textVar )->toString();
+ $editInfo = $this->parseNonEditWikitext( $text, $article );
+ $result = $editInfo->output->getText();
+ }
+ } else {
+ // TODO: Parser Output from Content object. But we don't have the content object.
+ // And for non-text content, $wikitext is usually not going to be a valid
+ // serialization, but rather some dummy text for filtering.
+ $result = '';
+ }
+
+ break;
+ case 'strip-html':
+ $htmlVar = $parameters['html-var'];
+ $html = $vars->getVar( $htmlVar )->toString();
+ $result = StringUtils::delimiterReplace( '<', '>', '', $html );
+ break;
+ case 'load-recent-authors':
+ $title = Title::makeTitle( $parameters['namespace'], $parameters['title'] );
+ if ( !$title->exists() ) {
+ $result = '';
+ break;
+ }
+
+ $result = self::getLastPageAuthors( $title );
+ break;
+ case 'load-first-author':
+ $title = Title::makeTitle( $parameters['namespace'], $parameters['title'] );
+
+ $revision = $title->getFirstRevision();
+ if ( $revision ) {
+ $result = $revision->getUserText();
+ } else {
+ $result = '';
+ }
+
+ break;
+ case 'get-page-restrictions':
+ $action = $parameters['action'];
+ $title = Title::makeTitle( $parameters['namespace'], $parameters['title'] );
+
+ $rights = $title->getRestrictions( $action );
+ $rights = count( $rights ) ? $rights : [];
+ $result = $rights;
+ break;
+ case 'simple-user-accessor':
+ $user = $parameters['user'];
+ $method = $parameters['method'];
+
+ if ( !$user ) {
+ throw new MWException( 'No user parameter given.' );
+ }
+
+ $obj = self::getUserObject( $user );
+
+ if ( !$obj ) {
+ throw new MWException( "Invalid username $user" );
+ }
+
+ $result = call_user_func( [ $obj, $method ] );
+ break;
+ case 'user-age':
+ $user = $parameters['user'];
+ $asOf = $parameters['asof'];
+ $obj = self::getUserObject( $user );
+
+ if ( $obj->getId() == 0 ) {
+ $result = 0;
+ break;
+ }
+
+ $registration = $obj->getRegistration();
+ $result = wfTimestamp( TS_UNIX, $asOf ) - wfTimestampOrNull( TS_UNIX, $registration );
+ break;
+ case 'user-groups':
+ // Deprecated but needed by old log entries
+ $user = $parameters['user'];
+ $obj = self::getUserObject( $user );
+ $result = $obj->getEffectiveGroups();
+ break;
+ case 'length':
+ $s = $vars->getVar( $parameters['length-var'] )->toString();
+ $result = strlen( $s );
+ break;
+ case 'subtract':
+ // Currently unused, kept for backwards compatibility for old filters.
+ $v1 = $vars->getVar( $parameters['val1-var'] )->toFloat();
+ $v2 = $vars->getVar( $parameters['val2-var'] )->toFloat();
+ $result = $v1 - $v2;
+ break;
+ case 'subtract-int':
+ $v1 = $vars->getVar( $parameters['val1-var'] )->toInt();
+ $v2 = $vars->getVar( $parameters['val2-var'] )->toInt();
+ $result = $v1 - $v2;
+ break;
+ case 'revision-text-by-id':
+ $rev = Revision::newFromId( $parameters['revid'] );
+ $result = AbuseFilter::revisionToString( $rev );
+ break;
+ case 'revision-text-by-timestamp':
+ $timestamp = $parameters['timestamp'];
+ $title = Title::makeTitle( $parameters['namespace'], $parameters['title'] );
+ $dbr = wfGetDB( DB_REPLICA );
+ $rev = Revision::loadFromTimestamp( $dbr, $title, $timestamp );
+ $result = AbuseFilter::revisionToString( $rev );
+ break;
+ default:
+ if ( Hooks::run( 'AbuseFilter-computeVariable',
+ [ $this->mMethod, $vars, $parameters, &$result ] ) ) {
+ throw new AFPException( 'Unknown variable compute type ' . $this->mMethod );
+ }
+ }
+
+ return $result instanceof AFPData
+ ? $result : AFPData::newFromPHPVar( $result );
+ }
+
+ /**
+ * @param Title $title
+ * @return string[] List of the last 10 (unique) authors from $title
+ */
+ public static function getLastPageAuthors( Title $title ) {
+ if ( !$title->exists() ) {
+ return [];
+ }
+
+ $cache = MediaWikiServices::getInstance()->getMainWANObjectCache();
+
+ return $cache->getWithSetCallback(
+ $cache->makeKey( 'last-10-authors', 'revision', $title->getLatestRevID() ),
+ $cache::TTL_MINUTE,
+ function ( $oldValue, &$ttl, array &$setOpts ) use ( $title ) {
+ $dbr = wfGetDB( DB_REPLICA );
+ $setOpts += Database::getCacheSetOptions( $dbr );
+ // Get the last 100 edit authors with a trivial query (avoid T116557)
+ $revQuery = Revision::getQueryInfo();
+ $revAuthors = $dbr->selectFieldValues(
+ $revQuery['tables'],
+ $revQuery['fields']['rev_user_text'],
+ [ 'rev_page' => $title->getArticleID() ],
+ __METHOD__,
+ // Some pages have < 10 authors but many revisions (e.g. bot pages)
+ [ 'ORDER BY' => 'rev_timestamp DESC',
+ 'LIMIT' => 100,
+ // Force index per T116557
+ 'USE INDEX' => [ 'revision' => 'page_timestamp' ],
+ ],
+ $revQuery['joins']
+ );
+ // Get the last 10 distinct authors within this set of edits
+ $users = [];
+ foreach ( $revAuthors as $author ) {
+ $users[$author] = 1;
+ if ( count( $users ) >= 10 ) {
+ break;
+ }
+ }
+
+ return array_keys( $users );
+ }
+ );
+ }
+}
diff --git a/www/wiki/extensions/AbuseFilter/includes/AbuseFilter.php b/www/wiki/extensions/AbuseFilter/includes/AbuseFilter.php
new file mode 100644
index 00000000..c9afd66f
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/includes/AbuseFilter.php
@@ -0,0 +1,2796 @@
+<?php
+
+use MediaWiki\Linker\LinkRenderer;
+use MediaWiki\Logger\LoggerFactory;
+use MediaWiki\Session\SessionManager;
+use MediaWiki\MediaWikiServices;
+use Wikimedia\Rdbms\IDatabase;
+
+/**
+ * This class contains most of the business logic of AbuseFilter. It consists of mostly
+ * static functions that handle activities such as parsing edits, applying filters,
+ * logging actions, etc.
+ */
+class AbuseFilter {
+ public static $statsStoragePeriod = 86400;
+ public static $condLimitEnabled = true;
+
+ /** @var array Map of (filter ID => stdClass) */
+ private static $filterCache = [];
+
+ public static $condCount = 0;
+
+ /** @var array Map of (action ID => string[]) */
+ public static $tagsToSet = []; // FIXME: avoid global state here
+
+ public static $history_mappings = [
+ 'af_pattern' => 'afh_pattern',
+ 'af_user' => 'afh_user',
+ 'af_user_text' => 'afh_user_text',
+ 'af_timestamp' => 'afh_timestamp',
+ 'af_comments' => 'afh_comments',
+ 'af_public_comments' => 'afh_public_comments',
+ 'af_deleted' => 'afh_deleted',
+ 'af_id' => 'afh_filter',
+ 'af_group' => 'afh_group',
+ ];
+ public static $builderValues = [
+ 'op-arithmetic' => [
+ '+' => 'addition',
+ '-' => 'subtraction',
+ '*' => 'multiplication',
+ '/' => 'divide',
+ '%' => 'modulo',
+ '**' => 'pow'
+ ],
+ 'op-comparison' => [
+ '==' => 'equal',
+ '===' => 'equal-strict',
+ '!=' => 'notequal',
+ '!==' => 'notequal-strict',
+ '<' => 'lt',
+ '>' => 'gt',
+ '<=' => 'lte',
+ '>=' => 'gte'
+ ],
+ 'op-bool' => [
+ '!' => 'not',
+ '&' => 'and',
+ '|' => 'or',
+ '^' => 'xor'
+ ],
+ 'misc' => [
+ 'in' => 'in',
+ 'contains' => 'contains',
+ 'like' => 'like',
+ '""' => 'stringlit',
+ 'rlike' => 'rlike',
+ 'irlike' => 'irlike',
+ 'cond ? iftrue : iffalse' => 'tern',
+ 'if cond then iftrue elseiffalse end' => 'cond',
+ ],
+ 'funcs' => [
+ 'length(string)' => 'length',
+ 'lcase(string)' => 'lcase',
+ 'ucase(string)' => 'ucase',
+ 'ccnorm(string)' => 'ccnorm',
+ 'ccnorm_contains_any(haystack,needle1,needle2,..)' => 'ccnorm-contains-any',
+ 'ccnorm_contains_all(haystack,needle1,needle2,..)' => 'ccnorm-contains-all',
+ 'rmdoubles(string)' => 'rmdoubles',
+ 'specialratio(string)' => 'specialratio',
+ 'norm(string)' => 'norm',
+ 'count(needle,haystack)' => 'count',
+ 'rcount(needle,haystack)' => 'rcount',
+ 'get_matches(needle,haystack)' => 'get_matches',
+ 'rmwhitespace(text)' => 'rmwhitespace',
+ 'rmspecials(text)' => 'rmspecials',
+ 'ip_in_range(ip, range)' => 'ip_in_range',
+ 'contains_any(haystack,needle1,needle2,...)' => 'contains-any',
+ 'contains_all(haystack,needle1,needle2,...)' => 'contains-all',
+ 'substr(subject, offset, length)' => 'substr',
+ 'strpos(haystack, needle)' => 'strpos',
+ 'str_replace(subject, search, replace)' => 'str_replace',
+ 'rescape(string)' => 'rescape',
+ 'set_var(var,value)' => 'set_var',
+ ],
+ 'vars' => [
+ 'timestamp' => 'timestamp',
+ 'accountname' => 'accountname',
+ 'action' => 'action',
+ 'added_lines' => 'addedlines',
+ 'edit_delta' => 'delta',
+ 'edit_diff' => 'diff',
+ 'new_size' => 'newsize',
+ 'old_size' => 'oldsize',
+ 'new_content_model' => 'new-content-model',
+ 'old_content_model' => 'old-content-model',
+ 'removed_lines' => 'removedlines',
+ 'summary' => 'summary',
+ 'article_articleid' => 'article-id',
+ 'article_namespace' => 'article-ns',
+ 'article_text' => 'article-text',
+ 'article_prefixedtext' => 'article-prefixedtext',
+ // 'article_views' => 'article-views', # May not be enabled, defined in getBuilderValues()
+ 'moved_from_articleid' => 'movedfrom-id',
+ 'moved_from_namespace' => 'movedfrom-ns',
+ 'moved_from_text' => 'movedfrom-text',
+ 'moved_from_prefixedtext' => 'movedfrom-prefixedtext',
+ 'moved_to_articleid' => 'movedto-id',
+ 'moved_to_namespace' => 'movedto-ns',
+ 'moved_to_text' => 'movedto-text',
+ 'moved_to_prefixedtext' => 'movedto-prefixedtext',
+ 'user_editcount' => 'user-editcount',
+ 'user_age' => 'user-age',
+ 'user_name' => 'user-name',
+ 'user_groups' => 'user-groups',
+ 'user_rights' => 'user-rights',
+ 'user_blocked' => 'user-blocked',
+ 'user_emailconfirm' => 'user-emailconfirm',
+ 'old_wikitext' => 'old-text',
+ 'new_wikitext' => 'new-text',
+ 'added_links' => 'added-links',
+ 'removed_links' => 'removed-links',
+ 'all_links' => 'all-links',
+ 'new_pst' => 'new-pst',
+ 'edit_diff_pst' => 'diff-pst',
+ 'added_lines_pst' => 'addedlines-pst',
+ 'new_text' => 'new-text-stripped',
+ 'new_html' => 'new-html',
+ 'article_restrictions_edit' => 'restrictions-edit',
+ 'article_restrictions_move' => 'restrictions-move',
+ 'article_restrictions_create' => 'restrictions-create',
+ 'article_restrictions_upload' => 'restrictions-upload',
+ 'article_recent_contributors' => 'recent-contributors',
+ 'article_first_contributor' => 'first-contributor',
+ 'moved_from_restrictions_edit' => 'movedfrom-restrictions-edit',
+ 'moved_from_restrictions_move' => 'movedfrom-restrictions-move',
+ 'moved_from_restrictions_create' => 'movedfrom-restrictions-create',
+ 'moved_from_restrictions_upload' => 'movedfrom-restrictions-upload',
+ 'moved_from_recent_contributors' => 'movedfrom-recent-contributors',
+ 'moved_from_first_contributor' => 'movedfrom-first-contributor',
+ 'moved_to_restrictions_edit' => 'movedto-restrictions-edit',
+ 'moved_to_restrictions_move' => 'movedto-restrictions-move',
+ 'moved_to_restrictions_create' => 'movedto-restrictions-create',
+ 'moved_to_restrictions_upload' => 'movedto-restrictions-upload',
+ 'moved_to_recent_contributors' => 'movedto-recent-contributors',
+ 'moved_to_first_contributor' => 'movedto-first-contributor',
+ // 'old_text' => 'old-text-stripped', # Disabled, performance
+ // 'old_html' => 'old-html', # Disabled, performance
+ 'old_links' => 'old-links',
+ 'minor_edit' => 'minor-edit',
+ 'file_sha1' => 'file-sha1',
+ 'file_size' => 'file-size',
+ 'file_mime' => 'file-mime',
+ 'file_mediatype' => 'file-mediatype',
+ 'file_width' => 'file-width',
+ 'file_height' => 'file-height',
+ 'file_bits_per_channel' => 'file-bits-per-channel',
+ ],
+ ];
+
+ public static $editboxName = null;
+
+ /**
+ * @param IContextSource $context
+ * @param string $pageType
+ * @param LinkRenderer $linkRenderer
+ */
+ public static function addNavigationLinks(
+ IContextSource $context,
+ $pageType,
+ LinkRenderer $linkRenderer
+ ) {
+ $linkDefs = [
+ 'home' => 'Special:AbuseFilter',
+ 'recentchanges' => 'Special:AbuseFilter/history',
+ 'examine' => 'Special:AbuseFilter/examine',
+ 'log' => 'Special:AbuseLog',
+ ];
+
+ if ( $context->getUser()->isAllowed( 'abusefilter-modify' ) ) {
+ $linkDefs = array_merge( $linkDefs, [
+ 'test' => 'Special:AbuseFilter/test',
+ 'tools' => 'Special:AbuseFilter/tools',
+ 'import' => 'Special:AbuseFilter/import',
+ ] );
+ }
+
+ // Save some translator work
+ $msgOverrides = [
+ 'recentchanges' => 'abusefilter-filter-log',
+ ];
+
+ $links = [];
+
+ foreach ( $linkDefs as $name => $page ) {
+ // Give grep a chance to find the usages:
+ // abusefilter-topnav-home, abusefilter-topnav-test, abusefilter-topnav-examine
+ // abusefilter-topnav-log, abusefilter-topnav-tools, abusefilter-topnav-import
+ $msgName = "abusefilter-topnav-$name";
+
+ if ( isset( $msgOverrides[$name] ) ) {
+ $msgName = $msgOverrides[$name];
+ }
+
+ $msg = $context->msg( $msgName )->parse();
+ $title = Title::newFromText( $page );
+
+ if ( $name == $pageType ) {
+ $links[] = Xml::tags( 'strong', null, $msg );
+ } else {
+ $links[] = $linkRenderer->makeLink( $title, new HtmlArmor( $msg ) );
+ }
+ }
+
+ $linkStr = $context->msg( 'parentheses', $context->getLanguage()->pipeList( $links ) )->text();
+ $linkStr = $context->msg( 'abusefilter-topnav' )->parse() . " $linkStr";
+
+ $linkStr = Xml::tags( 'div', [ 'class' => 'mw-abusefilter-navigation' ], $linkStr );
+
+ $context->getOutput()->setSubtitle( $linkStr );
+ }
+
+ /**
+ * @static
+ * @param User $user
+ * @return AbuseFilterVariableHolder
+ */
+ public static function generateUserVars( $user ) {
+ $vars = new AbuseFilterVariableHolder;
+
+ $vars->setLazyLoadVar(
+ 'user_editcount',
+ 'simple-user-accessor',
+ [ 'user' => $user, 'method' => 'getEditCount' ]
+ );
+
+ $vars->setVar( 'user_name', $user->getName() );
+
+ $vars->setLazyLoadVar(
+ 'user_emailconfirm',
+ 'simple-user-accessor',
+ [ 'user' => $user, 'method' => 'getEmailAuthenticationTimestamp' ]
+ );
+
+ $vars->setLazyLoadVar(
+ 'user_age',
+ 'user-age',
+ [ 'user' => $user, 'asof' => wfTimestampNow() ]
+ );
+
+ $vars->setLazyLoadVar(
+ 'user_groups',
+ 'simple-user-accessor',
+ [ 'user' => $user, 'method' => 'getEffectiveGroups' ]
+ );
+
+ $vars->setLazyLoadVar(
+ 'user_rights',
+ 'simple-user-accessor',
+ [ 'user' => $user, 'method' => 'getRights' ]
+ );
+
+ $vars->setLazyLoadVar(
+ 'user_blocked',
+ 'simple-user-accessor',
+ [ 'user' => $user, 'method' => 'isBlocked' ]
+ );
+
+ Hooks::run( 'AbuseFilter-generateUserVars', [ $vars, $user ] );
+
+ return $vars;
+ }
+
+ /**
+ * @return array
+ */
+ public static function getBuilderValues() {
+ static $realValues = null;
+
+ if ( $realValues ) {
+ return $realValues;
+ }
+
+ $realValues = self::$builderValues;
+ global $wgDisableCounters;
+ if ( !$wgDisableCounters ) {
+ $realValues['vars']['article_views'] = 'article-views';
+ }
+ Hooks::run( 'AbuseFilter-builder', [ &$realValues ] );
+
+ return $realValues;
+ }
+
+ /**
+ * @param string $filter
+ * @return bool
+ */
+ public static function filterHidden( $filter ) {
+ $globalIndex = self::decodeGlobalName( $filter );
+ if ( $globalIndex ) {
+ global $wgAbuseFilterCentralDB;
+ if ( !$wgAbuseFilterCentralDB ) {
+ return false;
+ }
+ $dbr = wfGetDB( DB_REPLICA, [], $wgAbuseFilterCentralDB );
+ $filter = $globalIndex;
+ } else {
+ $dbr = wfGetDB( DB_REPLICA );
+ }
+ if ( $filter === 'new' ) {
+ return false;
+ }
+ $hidden = $dbr->selectField(
+ 'abuse_filter',
+ 'af_hidden',
+ [ 'af_id' => $filter ],
+ __METHOD__
+ );
+
+ return (bool)$hidden;
+ }
+
+ /**
+ * @param int $val
+ * @throws MWException
+ */
+ public static function triggerLimiter( $val = 1 ) {
+ self::$condCount += $val;
+
+ global $wgAbuseFilterConditionLimit;
+
+ if ( self::$condLimitEnabled && self::$condCount > $wgAbuseFilterConditionLimit ) {
+ throw new MWException( 'Condition limit reached.' );
+ }
+ }
+
+ public static function disableConditionLimit() {
+ // For use in batch scripts and the like
+ self::$condLimitEnabled = false;
+ }
+
+ /**
+ * @param Title|null $title
+ * @param string $prefix
+ * @return AbuseFilterVariableHolder
+ */
+ public static function generateTitleVars( $title, $prefix ) {
+ $vars = new AbuseFilterVariableHolder;
+
+ if ( !$title ) {
+ return $vars;
+ }
+
+ $vars->setVar( $prefix . '_ARTICLEID', $title->getArticleID() );
+ $vars->setVar( $prefix . '_NAMESPACE', $title->getNamespace() );
+ $vars->setVar( $prefix . '_TEXT', $title->getText() );
+ $vars->setVar( $prefix . '_PREFIXEDTEXT', $title->getPrefixedText() );
+
+ global $wgDisableCounters;
+ if ( !$wgDisableCounters && !$title->isSpecialPage() ) {
+ // Support: HitCounters extension
+ // XXX: This should be part of the extension (T159069)
+ if ( method_exists( 'HitCounters\HitCounters', 'getCount' ) ) {
+ $vars->setVar( $prefix . '_VIEWS', HitCounters\HitCounters::getCount( $title ) );
+ }
+ }
+
+ // Use restrictions.
+ global $wgRestrictionTypes;
+ foreach ( $wgRestrictionTypes as $action ) {
+ $vars->setLazyLoadVar( "{$prefix}_restrictions_$action", 'get-page-restrictions',
+ [ 'title' => $title->getText(),
+ 'namespace' => $title->getNamespace(),
+ 'action' => $action
+ ]
+ );
+ }
+
+ $vars->setLazyLoadVar( "{$prefix}_recent_contributors", 'load-recent-authors',
+ [
+ 'title' => $title->getText(),
+ 'namespace' => $title->getNamespace()
+ ] );
+
+ $vars->setLazyLoadVar( "{$prefix}_first_contributor", 'load-first-author',
+ [
+ 'title' => $title->getText(),
+ 'namespace' => $title->getNamespace()
+ ] );
+
+ Hooks::run( 'AbuseFilter-generateTitleVars', [ $vars, $title, $prefix ] );
+
+ return $vars;
+ }
+
+ /**
+ * @param string $filter
+ * @return mixed
+ */
+ public static function checkSyntax( $filter ) {
+ global $wgAbuseFilterParserClass;
+
+ /** @var $parser AbuseFilterParser */
+ $parser = new $wgAbuseFilterParserClass;
+
+ return $parser->checkSyntax( $filter );
+ }
+
+ /**
+ * @param string $expr
+ * @param array $vars
+ * @return string
+ */
+ public static function evaluateExpression( $expr, $vars = [] ) {
+ global $wgAbuseFilterParserClass;
+
+ if ( self::checkSyntax( $expr ) !== true ) {
+ return 'BADSYNTAX';
+ }
+
+ /** @var $parser AbuseFilterParser */
+ $parser = new $wgAbuseFilterParserClass( $vars );
+
+ return $parser->evaluateExpression( $expr );
+ }
+
+ /**
+ * @param string $conds
+ * @param AbuseFilterVariableHolder $vars
+ * @param bool $ignoreError
+ * @return bool
+ * @throws Exception
+ */
+ public static function checkConditions(
+ $conds, $vars, $ignoreError = true
+ ) {
+ global $wgAbuseFilterParserClass;
+
+ static $parser, $lastVars;
+
+ if ( is_null( $parser ) || $vars !== $lastVars ) {
+ /** @var $parser AbuseFilterParser */
+ $parser = new $wgAbuseFilterParserClass( $vars );
+ $lastVars = $vars;
+ }
+
+ try {
+ $result = $parser->parse( $conds, self::$condCount );
+ } catch ( Exception $excep ) {
+ // Sigh.
+ $result = false;
+
+ wfDebugLog( 'AbuseFilter', 'AbuseFilter parser error: ' . $excep->getMessage() . "\n" );
+
+ if ( !$ignoreError ) {
+ throw $excep;
+ }
+ }
+
+ return $result;
+ }
+
+ /**
+ * Returns an associative array of filters which were tripped
+ *
+ * @param AbuseFilterVariableHolder $vars
+ * @param string $group The filter's group (as defined in $wgAbuseFilterValidGroups)
+ * @param Title|null $title
+ * @param string $mode 'execute' for edits and logs, 'stash' for cached matches
+ *
+ * @return bool[] Map of (integer filter ID => bool)
+ */
+ public static function checkAllFilters(
+ $vars,
+ $group = 'default',
+ Title $title = null,
+ $mode = 'execute'
+ ) {
+ global $wgAbuseFilterCentralDB, $wgAbuseFilterIsCentral;
+ global $wgAbuseFilterConditionLimit;
+
+ // Fetch from the database.
+ $filter_matched = [];
+
+ $dbr = wfGetDB( DB_REPLICA );
+ $res = $dbr->select(
+ 'abuse_filter',
+ '*',
+ [
+ 'af_enabled' => 1,
+ 'af_deleted' => 0,
+ 'af_group' => $group,
+ ],
+ __METHOD__
+ );
+
+ foreach ( $res as $row ) {
+ $filter_matched[$row->af_id] = self::checkFilter( $row, $vars, $title, '', $mode );
+ }
+
+ if ( $wgAbuseFilterCentralDB && !$wgAbuseFilterIsCentral ) {
+ // Global filters
+ $globalRulesKey = self::getGlobalRulesKey( $group );
+
+ $fname = __METHOD__;
+ $res = ObjectCache::getMainWANInstance()->getWithSetCallback(
+ $globalRulesKey,
+ WANObjectCache::TTL_INDEFINITE,
+ function () use ( $group, $fname ) {
+ global $wgAbuseFilterCentralDB;
+
+ $fdb = wfGetLB( $wgAbuseFilterCentralDB )->getConnectionRef(
+ DB_REPLICA, [], $wgAbuseFilterCentralDB
+ );
+
+ return iterator_to_array( $fdb->select(
+ 'abuse_filter',
+ '*',
+ [
+ 'af_enabled' => 1,
+ 'af_deleted' => 0,
+ 'af_global' => 1,
+ 'af_group' => $group,
+ ],
+ $fname
+ ) );
+ },
+ [
+ 'checkKeys' => [ $globalRulesKey ],
+ 'lockTSE' => 300
+ ]
+ );
+
+ foreach ( $res as $row ) {
+ $filter_matched['global-' . $row->af_id] =
+ self::checkFilter( $row, $vars, $title, 'global-', $mode );
+ }
+ }
+
+ if ( $title instanceof Title && self::$condCount > $wgAbuseFilterConditionLimit ) {
+ $actionID = implode( '-', [
+ $title->getPrefixedText(),
+ $vars->getVar( 'user_name' )->toString(),
+ $vars->getVar( 'action' )->toString()
+ ] );
+ self::bufferTagsToSetByAction( [ $actionID => [ 'abusefilter-condition-limit' ] ] );
+ }
+
+ if ( $mode === 'execute' ) {
+ // Update statistics, and disable filters which are over-blocking.
+ self::recordStats( $filter_matched, $group );
+ }
+
+ return $filter_matched;
+ }
+
+ /**
+ * @static
+ * @param stdClass $row
+ * @param AbuseFilterVariableHolder $vars
+ * @param Title|null $title
+ * @param string $prefix
+ * @param string $mode 'execute' for edits and logs, 'stash' for cached matches
+ * @return bool
+ */
+ public static function checkFilter( $row, $vars, Title $title = null, $prefix = '', $mode ) {
+ global $wgAbuseFilterProfile, $wgAbuseFilterRuntimeProfile, $wgAbuseFilterSlowFilterRuntimeLimit;
+
+ $filterID = $prefix . $row->af_id;
+
+ // Record data to be used if profiling is enabled and mode is 'execute'
+ $startConds = self::$condCount;
+ $startTime = microtime( true );
+
+ // Store the row somewhere convenient
+ self::$filterCache[$filterID] = $row;
+
+ // Check conditions...
+ $pattern = trim( $row->af_pattern );
+ if (
+ self::checkConditions(
+ $pattern,
+ $vars,
+ true /* ignore errors */
+ )
+ ) {
+ // Record match.
+ $result = true;
+ } else {
+ // Record non-match.
+ $result = false;
+ }
+
+ $timeTaken = microtime( true ) - $startTime;
+ $condsUsed = self::$condCount - $startConds;
+
+ if ( $wgAbuseFilterProfile && $mode === 'execute' ) {
+ self::recordProfilingResult( $row->af_id, $timeTaken, $condsUsed );
+ }
+
+ $runtime = $timeTaken * 1000;
+ if ( $mode === 'execute' && $wgAbuseFilterRuntimeProfile &&
+ $runtime > $wgAbuseFilterSlowFilterRuntimeLimit ) {
+ self::recordSlowFilter( $filterID, $runtime, $condsUsed, $result, $title );
+ }
+
+ return $result;
+ }
+
+ /**
+ * Logs slow filter's runtime data for later analysis
+ *
+ * @param string $filterId
+ * @param float $runtime
+ * @param int $totalConditions
+ * @param Title|null $title
+ */
+ private static function recordSlowFilter(
+ $filterId, $runtime, $totalConditions, $matched, Title $title = null
+ ) {
+ $title = $title ? $title->getPrefixedText() : '';
+
+ $logger = LoggerFactory::getInstance( 'AbuseFilterSlow' );
+ $logger->info(
+ 'Edit filter {filter_id} on {wiki} is taking longer than expected',
+ [
+ 'wiki' => wfWikiID(),
+ 'filter_id' => $filterId,
+ 'title' => $title,
+ 'runtime' => $runtime,
+ 'matched' => $matched,
+ 'total_conditions' => $totalConditions
+ ]
+ );
+ }
+
+ /**
+ * @param int $filter
+ */
+ public static function resetFilterProfile( $filter ) {
+ $stash = ObjectCache::getMainStashInstance();
+ $countKey = wfMemcKey( 'abusefilter', 'profile', $filter, 'count' );
+ $totalKey = wfMemcKey( 'abusefilter', 'profile', $filter, 'total' );
+ $condsKey = wfMemcKey( 'abusefilter', 'profile', $filter, 'conds' );
+
+ $stash->delete( $countKey );
+ $stash->delete( $totalKey );
+ $stash->delete( $condsKey );
+ }
+
+ /**
+ * @param int $filter
+ * @param float $time
+ * @param int $conds
+ */
+ public static function recordProfilingResult( $filter, $time, $conds ) {
+ // Defer updates to avoid massive (~1 second) edit time increases
+ DeferredUpdates::addCallableUpdate( function () use ( $filter, $time, $conds ) {
+ $stash = ObjectCache::getMainStashInstance();
+ $countKey = wfMemcKey( 'abusefilter', 'profile', $filter, 'count' );
+ $totalKey = wfMemcKey( 'abusefilter', 'profile', $filter, 'total' );
+ $condsKey = wfMemcKey( 'abusefilter', 'profile', $filter, 'conds' );
+
+ $curCount = $stash->get( $countKey );
+ $curTotal = $stash->get( $totalKey );
+ $curConds = $stash->get( $condsKey );
+
+ if ( $curCount ) {
+ $stash->set( $condsKey, $curConds + $conds, 3600 );
+ $stash->set( $totalKey, $curTotal + $time, 3600 );
+ $stash->incr( $countKey );
+ } else {
+ $stash->set( $countKey, 1, 3600 );
+ $stash->set( $totalKey, $time, 3600 );
+ $stash->set( $condsKey, $conds, 3600 );
+ }
+ } );
+ }
+
+ /**
+ * @param string $filter
+ * @return array
+ */
+ public static function getFilterProfile( $filter ) {
+ $stash = ObjectCache::getMainStashInstance();
+ $countKey = wfMemcKey( 'abusefilter', 'profile', $filter, 'count' );
+ $totalKey = wfMemcKey( 'abusefilter', 'profile', $filter, 'total' );
+ $condsKey = wfMemcKey( 'abusefilter', 'profile', $filter, 'conds' );
+
+ $curCount = $stash->get( $countKey );
+ $curTotal = $stash->get( $totalKey );
+ $curConds = $stash->get( $condsKey );
+
+ if ( !$curCount ) {
+ return [ 0, 0 ];
+ }
+
+ $timeProfile = ( $curTotal / $curCount ) * 1000; // 1000 ms in a sec
+ $timeProfile = round( $timeProfile, 2 ); // Return in ms, rounded to 2dp
+
+ $condProfile = ( $curConds / $curCount );
+ $condProfile = round( $condProfile, 0 );
+
+ return [ $timeProfile, $condProfile ];
+ }
+
+ /**
+ * Utility function to decode global-$index to $index. Returns false if not global
+ *
+ * @param string $filter
+ *
+ * @return string|bool
+ */
+ public static function decodeGlobalName( $filter ) {
+ if ( strpos( $filter, 'global-' ) == 0 ) {
+ return substr( $filter, strlen( 'global-' ) );
+ }
+
+ return false;
+ }
+
+ /**
+ * @param string[] $filters
+ * @return array[]
+ */
+ public static function getConsequencesForFilters( $filters ) {
+ $globalFilters = [];
+ $localFilters = [];
+
+ foreach ( $filters as $filter ) {
+ $globalIndex = self::decodeGlobalName( $filter );
+
+ if ( $globalIndex ) {
+ $globalFilters[] = $globalIndex;
+ } else {
+ $localFilters[] = $filter;
+ }
+ }
+
+ global $wgAbuseFilterCentralDB;
+ // Load local filter info
+ $dbr = wfGetDB( DB_REPLICA );
+ // Retrieve the consequences.
+ $consequences = [];
+
+ if ( count( $localFilters ) ) {
+ $consequences = self::loadConsequencesFromDB( $dbr, $localFilters );
+ }
+
+ if ( count( $globalFilters ) ) {
+ $fdb = wfGetDB( DB_REPLICA, [], $wgAbuseFilterCentralDB );
+ $consequences = $consequences + self::loadConsequencesFromDB( $fdb, $globalFilters, 'global-' );
+ }
+
+ return $consequences;
+ }
+
+ /**
+ * @param IDatabase $dbr
+ * @param string[] $filters
+ * @param string $prefix
+ * @return array[]
+ */
+ public static function loadConsequencesFromDB( $dbr, $filters, $prefix = '' ) {
+ $actionsByFilter = [];
+ foreach ( $filters as $filter ) {
+ $actionsByFilter[$prefix . $filter] = [];
+ }
+
+ $res = $dbr->select(
+ [ 'abuse_filter_action', 'abuse_filter' ],
+ '*',
+ [ 'af_id' => $filters ],
+ __METHOD__,
+ [],
+ [ 'abuse_filter_action' => [ 'LEFT JOIN', 'afa_filter=af_id' ] ]
+ );
+
+ // Categorise consequences by filter.
+ global $wgAbuseFilterRestrictions;
+ foreach ( $res as $row ) {
+ if ( $row->af_throttled
+ && !empty( $wgAbuseFilterRestrictions[$row->afa_consequence] )
+ ) {
+ # Don't do the action
+ } elseif ( $row->afa_filter != $row->af_id ) {
+ // We probably got a NULL, as it's a LEFT JOIN.
+ // Don't add it.
+ } else {
+ $actionsByFilter[$prefix . $row->afa_filter][$row->afa_consequence] = [
+ 'action' => $row->afa_consequence,
+ 'parameters' => array_filter( explode( "\n", $row->afa_parameters ) )
+ ];
+ }
+ }
+
+ return $actionsByFilter;
+ }
+
+ /**
+ * Executes a list of actions.
+ *
+ * @param string[] $filters
+ * @param Title $title
+ * @param AbuseFilterVariableHolder $vars
+ * @return Status returns the operation's status. $status->isOK() will return true if
+ * there were no actions taken, false otherwise. $status->getValue() will return
+ * an array listing the actions taken. $status->getErrors() etc. will provide
+ * the errors and warnings to be shown to the user to explain the actions.
+ */
+ public static function executeFilterActions( $filters, $title, $vars ) {
+ global $wgMainCacheType;
+
+ $actionsByFilter = self::getConsequencesForFilters( $filters );
+ $actionsTaken = array_fill_keys( $filters, [] );
+
+ $messages = [];
+ // Accumulator to track max block to issue
+ $maxExpiry = -1;
+
+ global $wgAbuseFilterDisallowGlobalLocalBlocks, $wgAbuseFilterRestrictions,
+ $wgAbuseFilterBlockDuration, $wgAbuseFilterAnonBlockDuration;
+ foreach ( $actionsByFilter as $filter => $actions ) {
+ // Special-case handling for warnings.
+ $filter_public_comments = self::getFilter( $filter )->af_public_comments;
+
+ $global_filter = self::decodeGlobalName( $filter ) !== false;
+
+ // If the filter is throttled and throttling is available via object
+ // caching, check to see if the user has hit the throttle.
+ if ( !empty( $actions['throttle'] ) && $wgMainCacheType !== CACHE_NONE ) {
+ $parameters = $actions['throttle']['parameters'];
+ $throttleId = array_shift( $parameters );
+ list( $rateCount, $ratePeriod ) = explode( ',', array_shift( $parameters ) );
+
+ $hitThrottle = false;
+
+ // The rest are throttle-types.
+ foreach ( $parameters as $throttleType ) {
+ $hitThrottle = $hitThrottle || self::isThrottled(
+ $throttleId, $throttleType, $title, $rateCount, $ratePeriod, $global_filter );
+ }
+
+ unset( $actions['throttle'] );
+ if ( !$hitThrottle ) {
+ $actionsTaken[$filter][] = 'throttle';
+ continue;
+ }
+ }
+
+ if ( $wgAbuseFilterDisallowGlobalLocalBlocks && $global_filter ) {
+ $actions = array_diff_key( $actions, array_filter( $wgAbuseFilterRestrictions ) );
+ }
+
+ if ( !empty( $actions['warn'] ) ) {
+ $parameters = $actions['warn']['parameters'];
+ $warnKey = 'abusefilter-warned-' . md5( $title->getPrefixedText() ) . '-' . $filter;
+
+ // Make sure the session is started prior to using it
+ $session = SessionManager::getGlobalSession();
+ $session->persist();
+
+ if ( !isset( $session[$warnKey] ) || !$session[$warnKey] ) {
+ $session[$warnKey] = true;
+
+ // Threaten them a little bit
+ if ( !empty( $parameters[0] ) && strlen( $parameters[0] ) ) {
+ $msg = $parameters[0];
+ } else {
+ $msg = 'abusefilter-warning';
+ }
+ $messages[] = [ $msg, $filter_public_comments, $filter ];
+
+ $actionsTaken[$filter][] = 'warn';
+
+ continue; // Don't do anything else.
+ } else {
+ // We already warned them
+ $session[$warnKey] = false;
+ }
+
+ unset( $actions['warn'] );
+ }
+
+ // prevent double warnings
+ if ( count( array_intersect_key( $actions, array_filter( $wgAbuseFilterRestrictions ) ) ) > 0 &&
+ !empty( $actions['disallow'] )
+ ) {
+ unset( $actions['disallow'] );
+ }
+
+ // Find out the max expiry to issue the longest triggered block.
+ // Need to check here since methods like user->getBlock() aren't available
+ if ( !empty( $actions['block'] ) ) {
+ global $wgUser;
+ $parameters = $actions['block']['parameters'];
+
+ if ( count( $parameters ) === 3 ) {
+ // New type of filters with custom block
+ if ( $wgUser->isAnon() ) {
+ $expiry = $parameters[1];
+ } else {
+ $expiry = $parameters[2];
+ }
+ } else {
+ // Old type with fixed expiry
+ if ( $wgUser->isAnon() && $wgAbuseFilterAnonBlockDuration !== null ) {
+ // The user isn't logged in and the anon block duration
+ // doesn't default to $wgAbuseFilterBlockDuration.
+ $expiry = $wgAbuseFilterAnonBlockDuration;
+ } else {
+ $expiry = $wgAbuseFilterBlockDuration;
+ }
+ }
+
+ $currentExpiry = SpecialBlock::parseExpiryInput( $expiry );
+ if ( $currentExpiry > SpecialBlock::parseExpiryInput( $maxExpiry ) ) {
+ // Save the parameters to issue the block with
+ $maxExpiry = $expiry;
+ $blockValues = [
+ self::getFilter( $filter )->af_public_comments,
+ $filter,
+ is_array( $parameters ) && in_array( 'blocktalk', $parameters )
+ ];
+ }
+ unset( $actions['block'] );
+ }
+
+ // Do the rest of the actions
+ foreach ( $actions as $action => $info ) {
+ $newMsg = self::takeConsequenceAction(
+ $action,
+ $info['parameters'],
+ $title,
+ $vars,
+ self::getFilter( $filter )->af_public_comments,
+ $filter
+ );
+
+ if ( $newMsg !== null ) {
+ $messages[] = $newMsg;
+ }
+ $actionsTaken[$filter][] = $action;
+ }
+ }
+
+ // Since every filter has been analysed, we now know what the
+ // longest block duration is, so we can issue the block if
+ // maxExpiry has been changed.
+ if ( $maxExpiry !== -1 ) {
+ self::doAbuseFilterBlock(
+ [
+ 'desc' => $blockValues[0],
+ 'number' => $blockValues[1]
+ ],
+ $wgUser->getName(),
+ $maxExpiry,
+ true,
+ $blockValues[2]
+ );
+ $message = [
+ 'abusefilter-blocked-display',
+ $blockValues[0],
+ $blockValues[1]
+ ];
+ // Manually add the message. If we're here, there is one.
+ $messages[] = $message;
+ $actionsTaken[ $blockValues[1] ][] = 'block';
+ }
+
+ return self::buildStatus( $actionsTaken, $messages );
+ }
+
+ /**
+ * Constructs a Status object as returned by executeFilterActions() from the list of
+ * actions taken and the corresponding list of messages.
+ *
+ * @param array[] $actionsTaken associative array mapping each filter to the list if
+ * actions taken because of that filter.
+ * @param array[] $messages a list if arrays, where each array contains a message key
+ * followed by any message parameters.
+ *
+ * @return Status
+ */
+ protected static function buildStatus( array $actionsTaken, array $messages ) {
+ $status = Status::newGood( $actionsTaken );
+
+ foreach ( $messages as $msg ) {
+ call_user_func_array( [ $status, 'fatal' ], $msg );
+ }
+
+ return $status;
+ }
+
+ /**
+ * @param AbuseFilterVariableHolder $vars
+ * @param Title $title
+ * @param string $group The filter's group (as defined in $wgAbuseFilterValidGroups)
+ * @param User $user The user performing the action; defaults to $wgUser
+ * @param string $mode Use 'execute' to run filters and log or 'stash' to only cache matches
+ * @return Status
+ */
+ public static function filterAction(
+ $vars, $title, $group = 'default', $user = null, $mode = 'execute'
+ ) {
+ global $wgUser, $wgTitle, $wgRequest, $wgAbuseFilterRuntimeProfile, $wgAbuseFilterLogIP;
+
+ $context = RequestContext::getMain();
+ $oldContextTitle = $context->getTitle();
+
+ $oldWgTitle = $wgTitle;
+
+ if ( !$wgTitle ) {
+ $wgTitle = SpecialPage::getTitleFor( 'AbuseFilter' );
+ }
+
+ if ( !$user ) {
+ $user = $wgUser;
+ }
+
+ $logger = LoggerFactory::getInstance( 'StashEdit' );
+ $statsd = MediaWikiServices::getInstance()->getStatsdDataFactory();
+
+ // Add vars from extensions
+ Hooks::run( 'AbuseFilter-filterAction', [ &$vars, $title ] );
+ $vars->setVar( 'context', 'filter' );
+ $vars->setVar( 'timestamp', time() );
+
+ // Get the stash key based on the relevant "input" variables
+ $cache = ObjectCache::getLocalClusterInstance();
+ $stashKey = self::getStashKey( $cache, $vars, $group );
+ $isForEdit = ( $vars->getVar( 'action' )->toString() === 'edit' );
+
+ if ( $wgAbuseFilterRuntimeProfile ) {
+ $startTime = microtime( true );
+ }
+
+ $filter_matched = false;
+ if ( $mode === 'execute' && $isForEdit ) {
+ // Check the filter edit stash results first
+ $cacheData = $cache->get( $stashKey );
+ if ( $cacheData ) {
+ $filter_matched = $cacheData['matches'];
+ // Merge in any tags to apply to recent changes entries
+ self::bufferTagsToSetByAction( $cacheData['tags'] );
+ }
+ }
+
+ if ( is_array( $filter_matched ) ) {
+ if ( $isForEdit && $mode !== 'stash' ) {
+ $logger->info( __METHOD__ . ": cache hit for '$title' (key $stashKey)." );
+ $statsd->increment( 'abusefilter.check-stash.hit' );
+ }
+ } else {
+ $filter_matched = self::checkAllFilters( $vars, $group, $title, $mode );
+ if ( $isForEdit && $mode !== 'stash' ) {
+ $logger->info( __METHOD__ . ": cache miss for '$title' (key $stashKey)." );
+ $statsd->increment( 'abusefilter.check-stash.miss' );
+ }
+ }
+
+ if ( $mode === 'stash' ) {
+ // Save the filter stash result and do nothing further
+ $cacheData = [ 'matches' => $filter_matched, 'tags' => self::$tagsToSet ];
+
+ // Add runtime metrics in cache for later use
+ if ( $wgAbuseFilterRuntimeProfile ) {
+ $cacheData['condCount'] = self::$condCount;
+ $cacheData['runtime'] = ( microtime( true ) - $startTime ) * 1000;
+ }
+
+ $cache->set( $stashKey, $cacheData, $cache::TTL_MINUTE );
+ $logger->debug( __METHOD__ . ": cache store for '$title' (key $stashKey)." );
+ $statsd->increment( 'abusefilter.check-stash.store' );
+
+ return Status::newGood();
+ }
+
+ $matched_filters = array_keys( array_filter( $filter_matched ) );
+
+ // Save runtime metrics only on edits
+ if ( $wgAbuseFilterRuntimeProfile && $mode === 'execute' && $isForEdit ) {
+ if ( $cacheData ) {
+ $runtime = $cacheData['runtime'];
+ $condCount = $cacheData['condCount'];
+ } else {
+ $runtime = ( microtime( true ) - $startTime ) * 1000;
+ $condCount = self::$condCount;
+ }
+
+ self::recordRuntimeProfilingResult( count( $matched_filters ), $condCount, $runtime );
+ }
+
+ if ( count( $matched_filters ) == 0 ) {
+ $status = Status::newGood();
+ } else {
+ $status = self::executeFilterActions( $matched_filters, $title, $vars );
+ $actions_taken = $status->getValue();
+ $action = $vars->getVar( 'ACTION' )->toString();
+
+ // If $wgUser isn't safe to load (e.g. a failure during
+ // AbortAutoAccount), create a dummy anonymous user instead.
+ $user = $user->isSafeToLoad() ? $user : new User;
+
+ // Create a template
+ $log_template = [
+ 'afl_user' => $user->getId(),
+ 'afl_user_text' => $user->getName(),
+ 'afl_timestamp' => wfGetDB( DB_REPLICA )->timestamp( wfTimestampNow() ),
+ 'afl_namespace' => $title->getNamespace(),
+ 'afl_title' => $title->getDBkey(),
+ // DB field is not null, so nothing
+ 'afl_ip' => ( $wgAbuseFilterLogIP ) ? $wgRequest->getIP() : ""
+ ];
+
+ // Hack to avoid revealing IPs of people creating accounts
+ if ( !$user->getId() && ( $action == 'createaccount' || $action == 'autocreateaccount' ) ) {
+ $log_template['afl_user_text'] = $vars->getVar( 'accountname' )->toString();
+ }
+
+ self::addLogEntries( $actions_taken, $log_template, $action, $vars, $group );
+ }
+
+ // Bug 53498: If we screwed around with $wgTitle, reset it so the title
+ // is correctly picked up from the request later. Do the same for the
+ // main RequestContext, because that might have picked up the bogus
+ // title from $wgTitle.
+ if ( $wgTitle !== $oldWgTitle ) {
+ $wgTitle = $oldWgTitle;
+ }
+
+ if ( $context->getTitle() !== $oldContextTitle && $oldContextTitle instanceof Title ) {
+ $context->setTitle( $oldContextTitle );
+ }
+
+ return $status;
+ }
+
+ /**
+ * @param string $id Filter ID (integer or "global-<integer>")
+ * @return stdClass|null DB row
+ */
+ public static function getFilter( $id ) {
+ global $wgAbuseFilterCentralDB;
+
+ if ( !isset( self::$filterCache[$id] ) ) {
+ $globalIndex = self::decodeGlobalName( $id );
+ if ( $globalIndex ) {
+ // Global wiki filter
+ if ( !$wgAbuseFilterCentralDB ) {
+ return null; // not enabled
+ }
+
+ $id = $globalIndex;
+ $lb = wfGetLB( $wgAbuseFilterCentralDB );
+ $dbr = $lb->getConnectionRef( DB_REPLICA, [], $wgAbuseFilterCentralDB );
+ } else {
+ // Local wiki filter
+ $dbr = wfGetDB( DB_REPLICA );
+ }
+
+ $row = $dbr->selectRow( 'abuse_filter', '*', [ 'af_id' => $id ], __METHOD__ );
+ self::$filterCache[$id] = $row ?: null;
+ }
+
+ return self::$filterCache[$id];
+ }
+
+ /**
+ * @param BagOStuff $cache
+ * @param AbuseFilterVariableHolder $vars
+ * @param string $group The filter's group (as defined in $wgAbuseFilterValidGroups)
+ *
+ * @return string
+ */
+ private static function getStashKey(
+ BagOStuff $cache, AbuseFilterVariableHolder $vars, $group
+ ) {
+ $inputVars = $vars->exportNonLazyVars();
+ // Exclude noisy fields that have superficial changes
+ unset( $inputVars['old_html'] );
+ unset( $inputVars['new_html'] );
+ unset( $inputVars['user_age'] );
+ unset( $inputVars['timestamp'] );
+ unset( $inputVars['_VIEWS'] );
+ ksort( $inputVars );
+ $hash = md5( serialize( $inputVars ) );
+
+ return $cache->makeKey(
+ 'abusefilter',
+ 'check-stash',
+ $group,
+ $hash,
+ 'v1'
+ );
+ }
+
+ /**
+ * @param array[] $actions_taken
+ * @param array $log_template
+ * @param string $action
+ * @param AbuseFilterVariableHolder $vars
+ * @param string $group The filter's group (as defined in $wgAbuseFilterValidGroups)
+ * @return mixed
+ */
+ public static function addLogEntries( $actions_taken, $log_template, $action,
+ $vars, $group = 'default'
+ ) {
+ $dbw = wfGetDB( DB_MASTER );
+
+ $central_log_template = [
+ 'afl_wiki' => wfWikiID(),
+ ];
+
+ $log_rows = [];
+ $central_log_rows = [];
+ $logged_local_filters = [];
+ $logged_global_filters = [];
+
+ foreach ( $actions_taken as $filter => $actions ) {
+ $globalIndex = self::decodeGlobalName( $filter );
+ $thisLog = $log_template;
+ $thisLog['afl_filter'] = $filter;
+ $thisLog['afl_action'] = $action;
+ $thisLog['afl_actions'] = implode( ',', $actions );
+
+ // Don't log if we were only throttling.
+ if ( $thisLog['afl_actions'] != 'throttle' ) {
+ $log_rows[] = $thisLog;
+
+ if ( !$globalIndex ) {
+ $logged_local_filters[] = $filter;
+ }
+
+ // Global logging
+ if ( $globalIndex ) {
+ $title = Title::makeTitle( $thisLog['afl_namespace'], $thisLog['afl_title'] );
+ $centralLog = $thisLog + $central_log_template;
+ $centralLog['afl_filter'] = $globalIndex;
+ $centralLog['afl_title'] = $title->getPrefixedText();
+ $centralLog['afl_namespace'] = 0;
+
+ $central_log_rows[] = $centralLog;
+ $logged_global_filters[] = $globalIndex;
+ }
+ }
+ }
+
+ if ( !count( $log_rows ) ) {
+ return;
+ }
+
+ // Only store the var dump if we're actually going to add log rows.
+ $var_dump = self::storeVarDump( $vars );
+ $var_dump = "stored-text:$var_dump"; // To distinguish from stuff stored directly
+
+ $stash = ObjectCache::getMainStashInstance();
+
+ // Increment trigger counter
+ $stash->incr( self::filterMatchesKey() );
+
+ $local_log_ids = [];
+ global $wgAbuseFilterNotifications, $wgAbuseFilterNotificationsPrivate;
+ foreach ( $log_rows as $data ) {
+ $data['afl_var_dump'] = $var_dump;
+ $data['afl_id'] = $dbw->nextSequenceValue( 'abuse_filter_log_afl_id_seq' );
+ $dbw->insert( 'abuse_filter_log', $data, __METHOD__ );
+ $local_log_ids[] = $data['afl_id'] = $dbw->insertId();
+ // Give grep a chance to find the usages:
+ // logentry-abusefilter-hit
+ $entry = new ManualLogEntry( 'abusefilter', 'hit' );
+ // Construct a user object
+ $user = User::newFromId( $data['afl_user'] );
+ $user->setName( $data['afl_user_text'] );
+ $entry->setPerformer( $user );
+ // Set action target
+ $entry->setTarget( Title::makeTitle( $data['afl_namespace'], $data['afl_title'] ) );
+ // Additional info
+ $entry->setParameters( [
+ 'action' => $data['afl_action'],
+ 'filter' => $data['afl_filter'],
+ 'actions' => $data['afl_actions'],
+ 'log' => $data['afl_id'],
+ ] );
+
+ // Send data to CheckUser if installed and we
+ // aren't already sending a notification to recentchanges
+ if ( ExtensionRegistry::getInstance()->isLoaded( 'CheckUser' )
+ && strpos( $wgAbuseFilterNotifications, 'rc' ) === false
+ ) {
+ $rc = $entry->getRecentChange();
+ CheckUserHooks::updateCheckUserData( $rc );
+ }
+
+ if ( $wgAbuseFilterNotifications !== false ) {
+ if ( self::filterHidden( $data['afl_filter'] ) && !$wgAbuseFilterNotificationsPrivate ) {
+ continue;
+ }
+ $entry->publish( 0, $wgAbuseFilterNotifications );
+ }
+ }
+
+ $method = __METHOD__;
+
+ if ( count( $logged_local_filters ) ) {
+ // Update hit-counter.
+ $dbw->onTransactionPreCommitOrIdle(
+ function () use ( $dbw, $logged_local_filters, $method ) {
+ $dbw->update( 'abuse_filter',
+ [ 'af_hit_count=af_hit_count+1' ],
+ [ 'af_id' => $logged_local_filters ],
+ $method
+ );
+ }
+ );
+ }
+
+ $global_log_ids = [];
+
+ // Global stuff
+ if ( count( $logged_global_filters ) ) {
+ $vars->computeDBVars();
+ $global_var_dump = self::storeVarDump( $vars, true );
+ $global_var_dump = "stored-text:$global_var_dump";
+ foreach ( $central_log_rows as $index => $data ) {
+ $central_log_rows[$index]['afl_var_dump'] = $global_var_dump;
+ }
+
+ global $wgAbuseFilterCentralDB;
+ $fdb = wfGetDB( DB_MASTER, [], $wgAbuseFilterCentralDB );
+
+ foreach ( $central_log_rows as $row ) {
+ $fdb->insert( 'abuse_filter_log', $row, __METHOD__ );
+ $global_log_ids[] = $dbw->insertId();
+ }
+
+ $fdb->onTransactionPreCommitOrIdle(
+ function () use ( $fdb, $logged_global_filters, $method ) {
+ $fdb->update( 'abuse_filter',
+ [ 'af_hit_count=af_hit_count+1' ],
+ [ 'af_id' => $logged_global_filters ],
+ $method
+ );
+ }
+ );
+ }
+
+ $vars->setVar( 'global_log_ids', $global_log_ids );
+ $vars->setVar( 'local_log_ids', $local_log_ids );
+
+ // Check for emergency disabling.
+ $total = $stash->get( self::filterUsedKey( $group ) );
+ self::checkEmergencyDisable( $group, $logged_local_filters, $total );
+ }
+
+ /**
+ * Store a var dump to External Storage or the text table
+ * Some of this code is stolen from Revision::insertOn and friends
+ *
+ * @param AbuseFilterVariableHolder $vars
+ * @param bool $global
+ *
+ * @return int|null
+ */
+ public static function storeVarDump( $vars, $global = false ) {
+ global $wgCompressRevisions;
+
+ // Get all variables yet set and compute old and new wikitext if not yet done
+ // as those are needed for the diff view on top of the abuse log pages
+ $vars = $vars->dumpAllVars( [ 'old_wikitext', 'new_wikitext' ] );
+
+ // Vars is an array with native PHP data types (non-objects) now
+ $text = serialize( $vars );
+ $flags = [ 'nativeDataArray' ];
+
+ if ( $wgCompressRevisions ) {
+ if ( function_exists( 'gzdeflate' ) ) {
+ $text = gzdeflate( $text );
+ $flags[] = 'gzip';
+ }
+ }
+
+ // Store to ES if applicable
+ global $wgDefaultExternalStore, $wgAbuseFilterCentralDB;
+ if ( $wgDefaultExternalStore ) {
+ if ( $global ) {
+ $text = ExternalStore::insertToForeignDefault( $text, $wgAbuseFilterCentralDB );
+ } else {
+ $text = ExternalStore::insertToDefault( $text );
+ }
+ $flags[] = 'external';
+
+ if ( !$text ) {
+ // Not mission-critical, just return nothing
+ return null;
+ }
+ }
+
+ // Store to text table
+ if ( $global ) {
+ $dbw = wfGetDB( DB_MASTER, [], $wgAbuseFilterCentralDB );
+ } else {
+ $dbw = wfGetDB( DB_MASTER );
+ }
+ $old_id = $dbw->nextSequenceValue( 'text_old_id_seq' );
+ $dbw->insert( 'text',
+ [
+ 'old_id' => $old_id,
+ 'old_text' => $text,
+ 'old_flags' => implode( ',', $flags ),
+ ], __METHOD__
+ );
+
+ return $dbw->insertId();
+ }
+
+ /**
+ * Retrieve a var dump from External Storage or the text table
+ * Some of this code is stolen from Revision::loadText et al
+ *
+ * @param string $stored_dump
+ *
+ * @return object|AbuseFilterVariableHolder|bool
+ */
+ public static function loadVarDump( $stored_dump ) {
+ // Back-compat
+ if ( substr( $stored_dump, 0, strlen( 'stored-text:' ) ) !== 'stored-text:' ) {
+ $data = unserialize( $stored_dump );
+ if ( is_array( $data ) ) {
+ $vh = new AbuseFilterVariableHolder;
+ foreach ( $data as $name => $value ) {
+ $vh->setVar( $name, $value );
+ }
+
+ return $vh;
+ } else {
+ return $data;
+ }
+ }
+
+ $text_id = substr( $stored_dump, strlen( 'stored-text:' ) );
+
+ $dbr = wfGetDB( DB_REPLICA );
+
+ $text_row = $dbr->selectRow(
+ 'text',
+ [ 'old_text', 'old_flags' ],
+ [ 'old_id' => $text_id ],
+ __METHOD__
+ );
+
+ if ( !$text_row ) {
+ return new AbuseFilterVariableHolder;
+ }
+
+ $flags = explode( ',', $text_row->old_flags );
+ $text = $text_row->old_text;
+
+ if ( in_array( 'external', $flags ) ) {
+ $text = ExternalStore::fetchFromURL( $text );
+ }
+
+ if ( in_array( 'gzip', $flags ) ) {
+ $text = gzinflate( $text );
+ }
+
+ $obj = unserialize( $text );
+
+ if ( in_array( 'nativeDataArray', $flags ) ) {
+ $vars = $obj;
+ $obj = new AbuseFilterVariableHolder();
+ foreach ( $vars as $key => $value ) {
+ $obj->setVar( $key, $value );
+ }
+ }
+
+ return $obj;
+ }
+
+ /**
+ * @param string $action
+ * @param array $parameters
+ * @param Title $title
+ * @param AbuseFilterVariableHolder $vars
+ * @param string $rule_desc
+ * @param int|string $rule_number
+ *
+ * @return array|null a message describing the action that was taken,
+ * or null if no action was taken. The message is given as an array
+ * containing the message key followed by any message parameters.
+ */
+ public static function takeConsequenceAction( $action, $parameters, $title,
+ $vars, $rule_desc, $rule_number ) {
+ global $wgAbuseFilterCustomActionsHandlers, $wgRequest;
+
+ $message = null;
+
+ switch ( $action ) {
+ case 'disallow':
+ if ( !empty( $parameters[0] ) && strlen( $parameters[0] ) ) {
+ $message = [ $parameters[0], $rule_desc, $rule_number ];
+ } else {
+ // Generic message.
+ $message = [
+ 'abusefilter-disallowed',
+ $rule_desc,
+ $rule_number
+ ];
+ }
+ break;
+ case 'rangeblock':
+ global $wgAbuseFilterRangeBlockSize, $wgBlockCIDRLimit;
+
+ $ip = $wgRequest->getIP();
+ if ( IP::isIPv6( $ip ) ) {
+ $CIDRsize = max( $wgAbuseFilterRangeBlockSize['IPv6'], $wgBlockCIDRLimit['IPv6'] );
+ } else {
+ $CIDRsize = max( $wgAbuseFilterRangeBlockSize['IPv4'], $wgBlockCIDRLimit['IPv4'] );
+ }
+ $blockCIDR = $ip . '/' . $CIDRsize;
+ self::doAbuseFilterBlock(
+ [
+ 'desc' => $rule_desc,
+ 'number' => $rule_number
+ ],
+ IP::sanitizeRange( $blockCIDR ),
+ '1 week',
+ false
+ );
+
+ $message = [
+ 'abusefilter-blocked-display',
+ $rule_desc,
+ $rule_number
+ ];
+ break;
+ case 'degroup':
+ global $wgUser;
+ if ( !$wgUser->isAnon() ) {
+ // Remove all groups from the user. Ouch.
+ $groups = $wgUser->getGroups();
+
+ foreach ( $groups as $group ) {
+ $wgUser->removeGroup( $group );
+ }
+
+ $message = [
+ 'abusefilter-degrouped',
+ $rule_desc,
+ $rule_number
+ ];
+
+ // Don't log it if there aren't any groups being removed!
+ if ( !count( $groups ) ) {
+ break;
+ }
+
+ // Log it.
+ $log = new LogPage( 'rights' );
+
+ $log->addEntry( 'rights',
+ $wgUser->getUserPage(),
+ wfMessage(
+ 'abusefilter-degroupreason',
+ $rule_desc,
+ $rule_number
+ )->inContentLanguage()->text(),
+ [
+ implode( ', ', $groups ),
+ ''
+ ],
+ self::getFilterUser()
+ );
+ }
+
+ break;
+ case 'blockautopromote':
+ global $wgUser;
+ if ( !$wgUser->isAnon() ) {
+ $blockPeriod = (int)mt_rand( 3 * 86400, 7 * 86400 ); // Block for 3-7 days.
+ ObjectCache::getMainStashInstance()->set(
+ self::autoPromoteBlockKey( $wgUser ), true, $blockPeriod
+ );
+
+ $message = [
+ 'abusefilter-autopromote-blocked',
+ $rule_desc,
+ $rule_number
+ ];
+ }
+ break;
+
+ case 'block':
+ // Do nothing, handled at the end of executeFilterActions. Here for completeness.
+ break;
+ case 'flag':
+ // Do nothing. Here for completeness.
+ break;
+
+ case 'tag':
+ // Mark with a tag on recentchanges.
+ global $wgUser;
+
+ $actionID = implode( '-', [
+ $title->getPrefixedText(), $wgUser->getName(),
+ $vars->getVar( 'ACTION' )->toString()
+ ] );
+
+ self::bufferTagsToSetByAction( [ $actionID => $parameters ] );
+ break;
+ default:
+ if ( isset( $wgAbuseFilterCustomActionsHandlers[$action] ) ) {
+ $custom_function = $wgAbuseFilterCustomActionsHandlers[$action];
+ if ( is_callable( $custom_function ) ) {
+ $msg = call_user_func(
+ $custom_function,
+ $action,
+ $parameters,
+ $title,
+ $vars,
+ $rule_desc,
+ $rule_number
+ );
+ }
+ if ( isset( $msg ) ) {
+ $message = [ $msg ];
+ }
+ } else {
+ wfDebugLog( 'AbuseFilter', "Unrecognised action $action" );
+ }
+ }
+
+ return $message;
+ }
+
+ /**
+ * @param array[] $tagsByAction Map of (integer => string[])
+ */
+ private static function bufferTagsToSetByAction( array $tagsByAction ) {
+ global $wgAbuseFilterActions;
+ if ( isset( $wgAbuseFilterActions['tag'] ) && $wgAbuseFilterActions['tag'] ) {
+ foreach ( $tagsByAction as $actionID => $tags ) {
+ if ( !isset( self::$tagsToSet[$actionID] ) ) {
+ self::$tagsToSet[$actionID] = $tags;
+ } else {
+ self::$tagsToSet[$actionID] = array_merge( self::$tagsToSet[$actionID], $tags );
+ }
+ }
+ }
+ }
+
+ /**
+ * Perform a block by the AbuseFilter system user
+ * @param array $rule should have 'desc' and 'number'
+ * @param string $target
+ * @param string $expiry
+ * @param bool $isAutoBlock
+ * @param bool $preventEditOwnUserTalk
+ */
+ protected static function doAbuseFilterBlock(
+ array $rule,
+ $target,
+ $expiry,
+ $isAutoBlock,
+ $preventEditOwnUserTalk = false
+ ) {
+ $filterUser = self::getFilterUser();
+ $reason = wfMessage(
+ 'abusefilter-blockreason',
+ $rule['desc'], $rule['number']
+ )->inContentLanguage()->text();
+
+ $block = new Block();
+ $block->setTarget( $target );
+ $block->setBlocker( $filterUser );
+ $block->mReason = $reason;
+ $block->isHardblock( false );
+ $block->isAutoblocking( $isAutoBlock );
+ $block->prevents( 'createaccount', true );
+ $block->prevents( 'editownusertalk', $preventEditOwnUserTalk );
+ $block->mExpiry = SpecialBlock::parseExpiryInput( $expiry );
+
+ $success = $block->insert();
+
+ if ( $success ) {
+ // Log it only if the block was successful
+ $logParams = [];
+ $logParams['5::duration'] = ( $block->mExpiry === 'infinity' )
+ ? 'indefinite'
+ : $expiry;
+ $flags = [ 'nocreate' ];
+ if ( !$block->isAutoblocking() && !IP::isIPAddress( $target ) ) {
+ // Conditionally added same as SpecialBlock
+ $flags[] = 'noautoblock';
+ }
+ if ( $preventEditOwnUserTalk === true ) {
+ $flags[] = 'nousertalk';
+ }
+ $logParams['6::flags'] = implode( ',', $flags );
+
+ $logEntry = new ManualLogEntry( 'block', 'block' );
+ $logEntry->setTarget( Title::makeTitle( NS_USER, $target ) );
+ $logEntry->setComment( $reason );
+ $logEntry->setPerformer( $filterUser );
+ $logEntry->setParameters( $logParams );
+ $blockIds = array_merge( [ $success['id'] ], $success['autoIds'] );
+ $logEntry->setRelations( [ 'ipb_id' => $blockIds ] );
+ $logEntry->publish( $logEntry->insert() );
+ }
+ }
+
+ /**
+ * @param string $throttleId
+ * @param array $types
+ * @param Title $title
+ * @param string $rateCount
+ * @param string $ratePeriod
+ * @param bool $global
+ * @return bool
+ */
+ public static function isThrottled( $throttleId, $types, $title, $rateCount,
+ $ratePeriod, $global = false
+ ) {
+ $stash = ObjectCache::getMainStashInstance();
+ $key = self::throttleKey( $throttleId, $types, $title, $global );
+ $count = intval( $stash->get( $key ) );
+
+ wfDebugLog( 'AbuseFilter', "Got value $count for throttle key $key\n" );
+
+ if ( $count > 0 ) {
+ $stash->incr( $key );
+ $count++;
+ wfDebugLog( 'AbuseFilter', "Incremented throttle key $key" );
+ } else {
+ wfDebugLog( 'AbuseFilter', "Added throttle key $key with value 1" );
+ $stash->add( $key, 1, $ratePeriod );
+ $count = 1;
+ }
+
+ if ( $count > $rateCount ) {
+ wfDebugLog( 'AbuseFilter', "Throttle $key hit value $count -- maximum is $rateCount." );
+
+ return true; // THROTTLED
+ }
+
+ wfDebugLog( 'AbuseFilter', "Throttle $key not hit!" );
+
+ return false; // NOT THROTTLED
+ }
+
+ /**
+ * @param string $type
+ * @param Title $title
+ * @return int|string
+ */
+ public static function throttleIdentifier( $type, $title ) {
+ global $wgUser, $wgRequest;
+
+ switch ( $type ) {
+ case 'ip':
+ $identifier = $wgRequest->getIP();
+ break;
+ case 'user':
+ $identifier = $wgUser->getId();
+ break;
+ case 'range':
+ $identifier = substr( IP::toHex( $wgRequest->getIP() ), 0, 4 );
+ break;
+ case 'creationdate':
+ $reg = $wgUser->getRegistration();
+ $identifier = $reg - ( $reg % 86400 );
+ break;
+ case 'editcount':
+ // Hack for detecting different single-purpose accounts.
+ $identifier = $wgUser->getEditCount();
+ break;
+ case 'site':
+ $identifier = 1;
+ break;
+ case 'page':
+ $identifier = $title->getPrefixedText();
+ break;
+ default:
+ $identifier = 0;
+ }
+
+ return $identifier;
+ }
+
+ /**
+ * @param string $throttleId
+ * @param string $type
+ * @param Title $title
+ * @param bool $global
+ * @return string
+ */
+ public static function throttleKey( $throttleId, $type, $title, $global = false ) {
+ $types = explode( ',', $type );
+
+ $identifiers = [];
+
+ foreach ( $types as $subtype ) {
+ $identifiers[] = self::throttleIdentifier( $subtype, $title );
+ }
+
+ $identifier = sha1( implode( ':', $identifiers ) );
+
+ global $wgAbuseFilterIsCentral, $wgAbuseFilterCentralDB;
+
+ if ( $global && !$wgAbuseFilterIsCentral ) {
+ list( $globalSite, $globalPrefix ) = wfSplitWikiID( $wgAbuseFilterCentralDB );
+
+ return wfForeignMemcKey(
+ $globalSite, $globalPrefix,
+ 'abusefilter', 'throttle', $throttleId, $type, $identifier );
+ }
+
+ return wfMemcKey( 'abusefilter', 'throttle', $throttleId, $type, $identifier );
+ }
+
+ /**
+ * @param string $group The filter's group (as defined in $wgAbuseFilterValidGroups)
+ * @return string
+ */
+ public static function getGlobalRulesKey( $group ) {
+ global $wgAbuseFilterIsCentral, $wgAbuseFilterCentralDB;
+
+ if ( !$wgAbuseFilterIsCentral ) {
+ list( $globalSite, $globalPrefix ) = wfSplitWikiID( $wgAbuseFilterCentralDB );
+
+ return wfForeignMemcKey(
+ $globalSite, $globalPrefix,
+ 'abusefilter', 'rules', $group
+ );
+ }
+
+ return wfMemcKey( 'abusefilter', 'rules', $group );
+ }
+
+ /**
+ * @param User $user
+ * @return string
+ */
+ public static function autoPromoteBlockKey( $user ) {
+ return wfMemcKey( 'abusefilter', 'block-autopromote', $user->getId() );
+ }
+
+ /**
+ * Update statistics, and disable filters which are over-blocking.
+ * @param bool[] $filters
+ * @param string $group The filter's group (as defined in $wgAbuseFilterValidGroups)
+ */
+ public static function recordStats( $filters, $group = 'default' ) {
+ global $wgAbuseFilterConditionLimit, $wgAbuseFilterProfileActionsCap;
+
+ $stash = ObjectCache::getMainStashInstance();
+
+ // Figure out if we've triggered overflows and blocks.
+ $overflow_triggered = ( self::$condCount > $wgAbuseFilterConditionLimit );
+
+ // Store some keys...
+ $overflow_key = self::filterLimitReachedKey();
+ $total_key = self::filterUsedKey( $group );
+
+ $total = $stash->get( $total_key );
+
+ $storage_period = self::$statsStoragePeriod;
+
+ if ( !$total || $total > $wgAbuseFilterProfileActionsCap ) {
+ // This is for if the total doesn't exist, or has gone past 10,000.
+ // Recreate all the keys at the same time, so they expire together.
+ $stash->set( $total_key, 0, $storage_period );
+ $stash->set( $overflow_key, 0, $storage_period );
+
+ foreach ( $filters as $filter => $matched ) {
+ $stash->set( self::filterMatchesKey( $filter ), 0, $storage_period );
+ }
+ $stash->set( self::filterMatchesKey(), 0, $storage_period );
+ }
+
+ // Increment total
+ $stash->incr( $total_key );
+
+ // Increment overflow counter, if our condition limit overflowed
+ if ( $overflow_triggered ) {
+ $stash->incr( $overflow_key );
+ }
+ }
+
+ /**
+ * Record runtime profiling data
+ *
+ * @param int $totalFilters
+ * @param int $totalConditions
+ * @param float $runtime
+ */
+ private static function recordRuntimeProfilingResult( $totalFilters, $totalConditions, $runtime ) {
+ $keyPrefix = 'abusefilter.runtime-profile.' . wfWikiID() . '.';
+
+ $statsd = MediaWikiServices::getInstance()->getStatsdDataFactory();
+ $statsd->timing( $keyPrefix . 'runtime', $runtime );
+ $statsd->timing( $keyPrefix . 'total_filters', $totalFilters );
+ $statsd->timing( $keyPrefix . 'total_conditions', $totalConditions );
+ }
+
+ /**
+ * @param string $group The filter's group (as defined in $wgAbuseFilterValidGroups)
+ * @param string[] $filters
+ * @param int $total
+ */
+ public static function checkEmergencyDisable( $group, $filters, $total ) {
+ global $wgAbuseFilterEmergencyDisableThreshold, $wgAbuseFilterEmergencyDisableCount,
+ $wgAbuseFilterEmergencyDisableAge;
+
+ $stash = ObjectCache::getMainStashInstance();
+ foreach ( $filters as $filter ) {
+ // determine emergency disable values for this action
+ $emergencyDisableThreshold =
+ self::getEmergencyValue( $wgAbuseFilterEmergencyDisableThreshold, $group );
+ $filterEmergencyDisableCount =
+ self::getEmergencyValue( $wgAbuseFilterEmergencyDisableCount, $group );
+ $emergencyDisableAge =
+ self::getEmergencyValue( $wgAbuseFilterEmergencyDisableAge, $group );
+
+ // Increment counter
+ $matchCount = $stash->get( self::filterMatchesKey( $filter ) );
+
+ // Handle missing keys...
+ if ( !$matchCount ) {
+ $stash->set( self::filterMatchesKey( $filter ), 1, self::$statsStoragePeriod );
+ } else {
+ $stash->incr( self::filterMatchesKey( $filter ) );
+ }
+ $matchCount++;
+
+ // Figure out if the filter is subject to being deleted.
+ $filter_age = wfTimestamp( TS_UNIX, self::getFilter( $filter )->af_timestamp );
+ $throttle_exempt_time = $filter_age + $emergencyDisableAge;
+
+ if ( $total && $throttle_exempt_time > time()
+ && $matchCount > $filterEmergencyDisableCount
+ && ( $matchCount / $total ) > $emergencyDisableThreshold
+ ) {
+ // More than $wgAbuseFilterEmergencyDisableCount matches,
+ // constituting more than $emergencyDisableThreshold
+ // (a fraction) of last few edits. Disable it.
+ DeferredUpdates::addUpdate(
+ new AutoCommitUpdate(
+ wfGetDB( DB_MASTER ),
+ __METHOD__,
+ function ( IDatabase $dbw, $fname ) use ( $filter ) {
+ $dbw->update( 'abuse_filter',
+ [ 'af_throttled' => 1 ],
+ [ 'af_id' => $filter ],
+ $fname
+ );
+ }
+ )
+ );
+ }
+ }
+ }
+
+ /**
+ * @param array $emergencyValue
+ * @param string $group The filter's group (as defined in $wgAbuseFilterValidGroups)
+ * @return mixed
+ */
+ public static function getEmergencyValue( array $emergencyValue, $group ) {
+ return isset( $emergencyValue[$group] ) ? $emergencyValue[$group] : $emergencyValue['default'];
+ }
+
+ /**
+ * @return string
+ */
+ public static function filterLimitReachedKey() {
+ return wfMemcKey( 'abusefilter', 'stats', 'overflow' );
+ }
+
+ /**
+ * @param string|null $group The filter's group (as defined in $wgAbuseFilterValidGroups)
+ * @return string
+ */
+ public static function filterUsedKey( $group = null ) {
+ return wfMemcKey( 'abusefilter', 'stats', 'total', $group );
+ }
+
+ /**
+ * @param string|null $filter
+ * @return string
+ */
+ public static function filterMatchesKey( $filter = null ) {
+ return wfMemcKey( 'abusefilter', 'stats', 'matches', $filter );
+ }
+
+ /**
+ * @return User
+ */
+ public static function getFilterUser() {
+ $username = wfMessage( 'abusefilter-blocker' )->inContentLanguage()->text();
+ $user = User::newSystemUser( $username, [ 'steal' => true ] );
+
+ // Promote user to 'sysop' so it doesn't look
+ // like an unprivileged account is blocking users
+ if ( !in_array( 'sysop', $user->getGroups() ) ) {
+ $user->addGroup( 'sysop' );
+ }
+
+ return $user;
+ }
+
+ /**
+ * Extract values for syntax highlight
+ *
+ * @param bool $canEdit
+ * @return array
+ */
+ public static function getAceConfig( $canEdit ) {
+ $values = self::getBuilderValues();
+ $builderVariables = implode( '|', array_keys( $values['vars'] ) );
+ $builderFunctions = implode( '|', array_keys( AbuseFilterParser::$mFunctions ) );
+ // AbuseFilterTokenizer::$keywords also includes constants (true, false and null),
+ // but Ace redefines these constants afterwards so this will not be an issue
+ $builderKeywords = implode( '|', AbuseFilterTokenizer::$keywords );
+
+ return [
+ 'variables' => $builderVariables,
+ 'functions' => $builderFunctions,
+ 'keywords' => $builderKeywords,
+ 'aceReadOnly' => !$canEdit
+ ];
+ }
+
+ /**
+ * @param string $rules
+ * @param string $textName
+ * @param bool $addResultDiv
+ * @param bool $canEdit
+ * @param bool $externalForm
+ * @return string
+ */
+ static function buildEditBox( $rules, $textName = 'wpFilterRules', $addResultDiv = true,
+ $canEdit = true, $externalForm = false ) {
+ global $wgOut;
+
+ $wgOut->enableOOUI();
+ $editorAttrib = [ 'dir' => 'ltr' ]; # Rules are in English
+
+ global $wgUser;
+ $noTestAttrib = [];
+ if ( !$wgUser->isAllowed( 'abusefilter-modify' ) ) {
+ $noTestAttrib['disabled'] = 'disabled';
+ $addResultDiv = false;
+ }
+
+ $rules = rtrim( $rules ) . "\n";
+
+ if ( ExtensionRegistry::getInstance()->isLoaded( 'CodeEditor' ) ) {
+ $editorAttrib['name'] = 'wpAceFilterEditor';
+ $editorAttrib['id'] = 'wpAceFilterEditor';
+ $editorAttrib['class'] = 'mw-abusefilter-editor';
+
+ $switchEditor =
+ new OOUI\ButtonWidget(
+ [
+ 'label' => wfMessage( 'abusefilter-edit-switch-editor' )->text(),
+ 'id' => 'mw-abusefilter-switcheditor'
+ ] + $noTestAttrib
+ );
+
+ $rulesContainer = Xml::element( 'div', $editorAttrib, $rules );
+
+ // Dummy textarea for submitting form and to use in case JS is disabled
+ $textareaAttribs = [];
+ if ( $externalForm ) {
+ $textareaAttribs['form'] = 'wpFilterForm';
+ }
+ $rulesContainer .= Xml::textarea( $textName, $rules, 40, 15, $textareaAttribs );
+
+ $editorConfig = self::getAceConfig( $canEdit );
+
+ // Add Ace configuration variable
+ $wgOut->addJsConfigVars( 'aceConfig', $editorConfig );
+ } else {
+ if ( !$canEdit ) {
+ $editorAttrib['readonly'] = 'readonly';
+ }
+ if ( $externalForm ) {
+ $editorAttrib['form'] = 'wpFilterForm';
+ }
+ $rulesContainer = Xml::textarea( $textName, $rules, 40, 15, $editorAttrib );
+ }
+
+ if ( $canEdit ) {
+ // Generate builder drop-down
+ $dropDown = self::getBuilderValues();
+
+ // The array needs to be rearranged to be understood by OOUI
+ foreach ( $dropDown as $group => $values ) {
+ // Give grep a chance to find the usages:
+ // abusefilter-edit-builder-group-op-arithmetic, abusefilter-edit-builder-group-op-comparison,
+ // abusefilter-edit-builder-group-op-bool, abusefilter-edit-builder-group-misc,
+ // abusefilter-edit-builder-group-funcs, abusefilter-edit-builder-group-vars
+ $localisedLabel = wfMessage( "abusefilter-edit-builder-group-$group" )->text();
+ $dropDown[ $localisedLabel ] = $dropDown[ $group ];
+ unset( $dropDown[ $group ] );
+ $dropDown[ $localisedLabel ] = array_flip( $dropDown[ $localisedLabel ] );
+ foreach ( $values as $content => $name ) {
+ $localisedInnerLabel = wfMessage( "abusefilter-edit-builder-$group-$name" )->text();
+ $dropDown[ $localisedLabel ][ $localisedInnerLabel ] = $dropDown[ $localisedLabel ][ $name ];
+ unset( $dropDown[ $localisedLabel ][ $name ] );
+ }
+ }
+
+ $dropDown = [ wfMessage( 'abusefilter-edit-builder-select' )->text() => 'other' ] + $dropDown;
+ $dropDown = Xml::listDropDownOptionsOoui( $dropDown );
+ $dropDown = new OOUI\DropdownInputWidget( [
+ 'name' => 'wpFilterBuilder',
+ 'inputId' => 'wpFilterBuilder',
+ 'options' => $dropDown
+ ] );
+
+ $dropDown = new OOUI\FieldLayout( $dropDown );
+ $formElements = [ $dropDown ];
+
+ // Button for syntax check
+ $syntaxCheck =
+ new OOUI\ButtonWidget(
+ [
+ 'label' => wfMessage( 'abusefilter-edit-check' )->text(),
+ 'id' => 'mw-abusefilter-syntaxcheck'
+ ] + $noTestAttrib
+ );
+ $group = $syntaxCheck;
+
+ // Button for switching editor (if Ace is used)
+ if ( isset( $switchEditor ) ) {
+ $group =
+ new OOUI\Widget( [
+ 'content' => new OOUI\HorizontalLayout( [
+ 'items' => [ $switchEditor, $syntaxCheck ]
+ ] )
+ ] );
+ }
+ $group = new OOUI\FieldLayout( $group );
+ $formElements[] = $group;
+
+ $fieldSet = new OOUI\FieldsetLayout( [
+ 'items' => $formElements,
+ 'classes' => [ 'mw-abusefilter-edit-buttons' ]
+ ] );
+
+ $rulesContainer .= $fieldSet;
+ }
+
+ if ( $addResultDiv ) {
+ $rulesContainer .= Xml::element( 'div',
+ [ 'id' => 'mw-abusefilter-syntaxresult', 'style' => 'display: none;' ],
+ '&#160;' );
+ }
+
+ // Add script
+ $wgOut->addModules( 'ext.abuseFilter.edit' );
+ self::$editboxName = $textName;
+
+ return $rulesContainer;
+ }
+
+ /**
+ * Build input and button for loading a filter
+ *
+ * @return string
+ */
+ static function buildFilterLoader() {
+ $loadText =
+ new OOUI\TextInputWidget(
+ [
+ 'type' => 'number',
+ 'name' => 'wpInsertFilter',
+ 'id' => 'mw-abusefilter-load-filter'
+ ]
+ );
+ $loadButton =
+ new OOUI\ButtonInputWidget(
+ [
+ 'label' => wfMessage( 'abusefilter-test-load' )->text(),
+ 'id' => 'mw-abusefilter-load'
+ ]
+ );
+ $loadGroup =
+ new OOUI\ActionFieldLayout(
+ $loadText,
+ $loadButton,
+ [
+ 'label' => wfMessage( 'abusefilter-test-load-filter' )->text()
+ ]
+ );
+ // CSS class for reducing default input field width
+ $loadDiv =
+ Xml::tags(
+ 'div',
+ [ 'class' => 'mw-abusefilter-load-filter-id' ],
+ $loadGroup
+ );
+ return $loadDiv;
+ }
+
+ /**
+ * Each version is expected to be an array( $row, $actions )
+ * Returns an array of fields that are different.
+ *
+ * @param array $version_1
+ * @param array $version_2
+ *
+ * @return array
+ */
+ static function compareVersions( $version_1, $version_2 ) {
+ $compareFields = [
+ 'af_public_comments',
+ 'af_pattern',
+ 'af_comments',
+ 'af_deleted',
+ 'af_enabled',
+ 'af_hidden',
+ 'af_global',
+ 'af_group',
+ ];
+ $differences = [];
+
+ list( $row1, $actions1 ) = $version_1;
+ list( $row2, $actions2 ) = $version_2;
+
+ foreach ( $compareFields as $field ) {
+ if ( !isset( $row2->$field ) || $row1->$field != $row2->$field ) {
+ $differences[] = $field;
+ }
+ }
+
+ global $wgAbuseFilterActions;
+ foreach ( array_filter( $wgAbuseFilterActions ) as $action => $_ ) {
+ if ( !isset( $actions1[$action] ) && !isset( $actions2[$action] ) ) {
+ // They're both unset
+ } elseif ( isset( $actions1[$action] ) && isset( $actions2[$action] ) ) {
+ // They're both set.
+ // Double check needed, e.g. per T180194
+ if ( array_diff( $actions1[$action]['parameters'],
+ $actions2[$action]['parameters'] ) ||
+ array_diff( $actions2[$action]['parameters'],
+ $actions1[$action]['parameters'] ) ) {
+ // Different parameters
+ $differences[] = 'actions';
+ }
+ } else {
+ // One's unset, one's set.
+ $differences[] = 'actions';
+ }
+ }
+
+ return array_unique( $differences );
+ }
+
+ /**
+ * @param stdClass $row
+ * @return array
+ */
+ static function translateFromHistory( $row ) {
+ # Translate into an abuse_filter row with some black magic.
+ # This is ever so slightly evil!
+ $af_row = new stdClass;
+
+ foreach ( self::$history_mappings as $af_col => $afh_col ) {
+ $af_row->$af_col = $row->$afh_col;
+ }
+
+ # Process flags
+
+ $af_row->af_deleted = 0;
+ $af_row->af_hidden = 0;
+ $af_row->af_enabled = 0;
+
+ $flags = explode( ',', $row->afh_flags );
+ foreach ( $flags as $flag ) {
+ $col_name = "af_$flag";
+ $af_row->$col_name = 1;
+ }
+
+ # Process actions
+ $actions_raw = unserialize( $row->afh_actions );
+ $actions_output = [];
+ if ( is_array( $actions_raw ) ) {
+ foreach ( $actions_raw as $action => $parameters ) {
+ $actions_output[$action] = [
+ 'action' => $action,
+ 'parameters' => $parameters
+ ];
+ }
+ }
+
+ return [ $af_row, $actions_output ];
+ }
+
+ /**
+ * @param string $action
+ * @return string
+ */
+ static function getActionDisplay( $action ) {
+ // Give grep a chance to find the usages:
+ // abusefilter-action-tag, abusefilter-action-throttle, abusefilter-action-warn,
+ // abusefilter-action-blockautopromote, abusefilter-action-block, abusefilter-action-degroup,
+ // abusefilter-action-rangeblock, abusefilter-action-disallow
+ $display = wfMessage( "abusefilter-action-$action" )->escaped();
+ $display = wfMessage( "abusefilter-action-$action", $display )->isDisabled() ? $action : $display;
+
+ return $display;
+ }
+
+ /**
+ * @param stdClass $row
+ * @return AbuseFilterVariableHolder|null
+ */
+ public static function getVarsFromRCRow( $row ) {
+ if ( $row->rc_log_type == 'move' ) {
+ $vars = self::getMoveVarsFromRCRow( $row );
+ } elseif ( $row->rc_log_type == 'newusers' ) {
+ $vars = self::getCreateVarsFromRCRow( $row );
+ } elseif ( $row->rc_log_type == 'delete' ) {
+ $vars = self::getDeleteVarsFromRCRow( $row );
+ } elseif ( $row->rc_this_oldid ) {
+ // It's an edit.
+ $vars = self::getEditVarsFromRCRow( $row );
+ } else {
+ return null;
+ }
+ if ( $vars ) {
+ $vars->setVar( 'context', 'generated' );
+ $vars->setVar( 'timestamp', wfTimestamp( TS_UNIX, $row->rc_timestamp ) );
+ }
+
+ return $vars;
+ }
+
+ /**
+ * @param stdClass $row
+ * @return AbuseFilterVariableHolder
+ */
+ public static function getCreateVarsFromRCRow( $row ) {
+ $vars = new AbuseFilterVariableHolder;
+
+ $vars->setVar( 'ACTION', ( $row->rc_log_action == 'autocreate' ) ?
+ 'autocreateaccount' :
+ 'createaccount' );
+
+ $name = Title::makeTitle( $row->rc_namespace, $row->rc_title )->getText();
+ // Add user data if the account was created by a registered user
+ if ( $row->rc_user && $name != $row->rc_user_text ) {
+ $user = User::newFromName( $row->rc_user_text );
+ $vars->addHolders( self::generateUserVars( $user ) );
+ }
+
+ $vars->setVar( 'accountname', $name );
+
+ return $vars;
+ }
+
+ /**
+ * @param stdClass $row
+ * @return AbuseFilterVariableHolder
+ */
+ public static function getDeleteVarsFromRCRow( $row ) {
+ $vars = new AbuseFilterVariableHolder;
+ $title = Title::makeTitle( $row->rc_namespace, $row->rc_title );
+
+ if ( $row->rc_user ) {
+ $user = User::newFromName( $row->rc_user_text );
+ } else {
+ $user = new User;
+ $user->setName( $row->rc_user_text );
+ }
+
+ $vars->addHolders(
+ self::generateUserVars( $user ),
+ self::generateTitleVars( $title, 'ARTICLE' )
+ );
+
+ $vars->setVar( 'ACTION', 'delete' );
+ $vars->setVar( 'SUMMARY', CommentStore::getStore()->getComment( 'rc_comment', $row )->text );
+
+ return $vars;
+ }
+
+ /**
+ * @param stdClass $row
+ * @return AbuseFilterVariableHolder
+ */
+ public static function getEditVarsFromRCRow( $row ) {
+ $vars = new AbuseFilterVariableHolder;
+ $title = Title::makeTitle( $row->rc_namespace, $row->rc_title );
+
+ if ( $row->rc_user ) {
+ $user = User::newFromName( $row->rc_user_text );
+ } else {
+ $user = new User;
+ $user->setName( $row->rc_user_text );
+ }
+
+ $vars->addHolders(
+ self::generateUserVars( $user ),
+ self::generateTitleVars( $title, 'ARTICLE' )
+ );
+
+ $vars->setVar( 'ACTION', 'edit' );
+ $vars->setVar( 'SUMMARY', CommentStore::getStore()->getComment( 'rc_comment', $row )->text );
+
+ $vars->setLazyLoadVar( 'new_wikitext', 'revision-text-by-id',
+ [ 'revid' => $row->rc_this_oldid ] );
+
+ if ( $row->rc_last_oldid ) {
+ $vars->setLazyLoadVar( 'old_wikitext', 'revision-text-by-id',
+ [ 'revid' => $row->rc_last_oldid ] );
+ } else {
+ $vars->setVar( 'old_wikitext', '' );
+ }
+
+ $vars->addHolders( self::getEditVars( $title ) );
+
+ return $vars;
+ }
+
+ /**
+ * @param stdClass $row
+ * @return AbuseFilterVariableHolder
+ */
+ public static function getMoveVarsFromRCRow( $row ) {
+ if ( $row->rc_user ) {
+ $user = User::newFromId( $row->rc_user );
+ } else {
+ $user = new User;
+ $user->setName( $row->rc_user_text );
+ }
+
+ $params = array_values( DatabaseLogEntry::newFromRow( $row )->getParameters() );
+
+ $oldTitle = Title::makeTitle( $row->rc_namespace, $row->rc_title );
+ $newTitle = Title::newFromText( $params[0] );
+
+ $vars = AbuseFilterVariableHolder::merge(
+ self::generateUserVars( $user ),
+ self::generateTitleVars( $oldTitle, 'MOVED_FROM' ),
+ self::generateTitleVars( $newTitle, 'MOVED_TO' )
+ );
+
+ $vars->setVar( 'SUMMARY', CommentStore::getStore()->getComment( 'rc_comment', $row )->text );
+ $vars->setVar( 'ACTION', 'move' );
+
+ return $vars;
+ }
+
+ /**
+ * @param Title $title
+ * @param Page|null $page
+ * @return AbuseFilterVariableHolder
+ */
+ public static function getEditVars( $title, Page $page = null ) {
+ $vars = new AbuseFilterVariableHolder;
+
+ // NOTE: $page may end up remaining null, e.g. if $title points to a special page.
+ if ( !$page && $title instanceof Title && $title->canExist() ) {
+ $page = WikiPage::factory( $title );
+ }
+
+ $vars->setLazyLoadVar( 'edit_diff', 'diff',
+ [ 'oldtext-var' => 'old_wikitext', 'newtext-var' => 'new_wikitext' ] );
+ $vars->setLazyLoadVar( 'edit_diff_pst', 'diff',
+ [ 'oldtext-var' => 'old_wikitext', 'newtext-var' => 'new_pst' ] );
+ $vars->setLazyLoadVar( 'new_size', 'length', [ 'length-var' => 'new_wikitext' ] );
+ $vars->setLazyLoadVar( 'old_size', 'length', [ 'length-var' => 'old_wikitext' ] );
+ $vars->setLazyLoadVar( 'edit_delta', 'subtract-int',
+ [ 'val1-var' => 'new_size', 'val2-var' => 'old_size' ] );
+
+ // Some more specific/useful details about the changes.
+ $vars->setLazyLoadVar( 'added_lines', 'diff-split',
+ [ 'diff-var' => 'edit_diff', 'line-prefix' => '+' ] );
+ $vars->setLazyLoadVar( 'removed_lines', 'diff-split',
+ [ 'diff-var' => 'edit_diff', 'line-prefix' => '-' ] );
+ $vars->setLazyLoadVar( 'added_lines_pst', 'diff-split',
+ [ 'diff-var' => 'edit_diff_pst', 'line-prefix' => '+' ] );
+
+ // Links
+ $vars->setLazyLoadVar( 'added_links', 'link-diff-added',
+ [ 'oldlink-var' => 'old_links', 'newlink-var' => 'all_links' ] );
+ $vars->setLazyLoadVar( 'removed_links', 'link-diff-removed',
+ [ 'oldlink-var' => 'old_links', 'newlink-var' => 'all_links' ] );
+ $vars->setLazyLoadVar( 'new_text', 'strip-html',
+ [ 'html-var' => 'new_html' ] );
+ $vars->setLazyLoadVar( 'old_text', 'strip-html',
+ [ 'html-var' => 'old_html' ] );
+
+ if ( $title instanceof Title ) {
+ $vars->setLazyLoadVar( 'all_links', 'links-from-wikitext',
+ [
+ 'namespace' => $title->getNamespace(),
+ 'title' => $title->getText(),
+ 'text-var' => 'new_wikitext',
+ 'article' => $page
+ ] );
+ $vars->setLazyLoadVar( 'old_links', 'links-from-wikitext-or-database',
+ [
+ 'namespace' => $title->getNamespace(),
+ 'title' => $title->getText(),
+ 'text-var' => 'old_wikitext'
+ ] );
+ $vars->setLazyLoadVar( 'new_pst', 'parse-wikitext',
+ [
+ 'namespace' => $title->getNamespace(),
+ 'title' => $title->getText(),
+ 'wikitext-var' => 'new_wikitext',
+ 'article' => $page,
+ 'pst' => true,
+ ] );
+ $vars->setLazyLoadVar( 'new_html', 'parse-wikitext',
+ [
+ 'namespace' => $title->getNamespace(),
+ 'title' => $title->getText(),
+ 'wikitext-var' => 'new_wikitext',
+ 'article' => $page
+ ] );
+ $vars->setLazyLoadVar( 'old_html', 'parse-wikitext-nonedit',
+ [
+ 'namespace' => $title->getNamespace(),
+ 'title' => $title->getText(),
+ 'wikitext-var' => 'old_wikitext'
+ ] );
+ }
+
+ return $vars;
+ }
+
+ /**
+ * @param AbuseFilterVariableHolder|array $vars
+ * @param IContextSource $context
+ * @return string
+ */
+ public static function buildVarDumpTable( $vars, IContextSource $context ) {
+ // Export all values
+ if ( $vars instanceof AbuseFilterVariableHolder ) {
+ $vars = $vars->exportAllVars();
+ }
+
+ $output = '';
+
+ // I don't want to change the names of the pre-existing messages
+ // describing the variables, nor do I want to rewrite them, so I'm just
+ // mapping the variable names to builder messages with a pre-existing array.
+ $variableMessageMappings = self::getBuilderValues();
+ $variableMessageMappings = $variableMessageMappings['vars'];
+
+ $output .=
+ Xml::openElement( 'table', [ 'class' => 'mw-abuselog-details' ] ) .
+ Xml::openElement( 'tbody' ) .
+ "\n";
+
+ $header =
+ Xml::element( 'th', null, $context->msg( 'abusefilter-log-details-var' )->text() ) .
+ Xml::element( 'th', null, $context->msg( 'abusefilter-log-details-val' )->text() );
+ $output .= Xml::tags( 'tr', null, $header ) . "\n";
+
+ if ( !count( $vars ) ) {
+ $output .= Xml::closeElement( 'tbody' ) . Xml::closeElement( 'table' );
+
+ return $output;
+ }
+
+ // Now, build the body of the table.
+ foreach ( $vars as $key => $value ) {
+ $key = strtolower( $key );
+
+ if ( !empty( $variableMessageMappings[$key] ) ) {
+ $mapping = $variableMessageMappings[$key];
+ $keyDisplay = $context->msg( "abusefilter-edit-builder-vars-$mapping" )->parse() .
+ ' ' . Xml::element( 'code', null, $context->msg( 'parentheses', $key )->text() );
+ } else {
+ $keyDisplay = Xml::element( 'code', null, $key );
+ }
+
+ if ( is_null( $value ) ) {
+ $value = '';
+ }
+ $value = Xml::element( 'div', [ 'class' => 'mw-abuselog-var-value' ], $value, false );
+
+ $trow =
+ Xml::tags( 'td', [ 'class' => 'mw-abuselog-var' ], $keyDisplay ) .
+ Xml::tags( 'td', [ 'class' => 'mw-abuselog-var-value' ], $value );
+ $output .=
+ Xml::tags( 'tr',
+ [ 'class' => "mw-abuselog-details-$key mw-abuselog-value" ], $trow
+ ) . "\n";
+ }
+
+ $output .= Xml::closeElement( 'tbody' ) . Xml::closeElement( 'table' );
+
+ return $output;
+ }
+
+ /**
+ * @param string $action
+ * @param string[] $parameters
+ * @return string
+ */
+ static function formatAction( $action, $parameters ) {
+ /** @var $wgLang Language */
+ global $wgLang;
+ if ( count( $parameters ) === 0 ||
+ ( $action === 'block' && count( $parameters ) !== 3 ) ) {
+ $displayAction = self::getActionDisplay( $action );
+ } else {
+ if ( $action === 'block' ) {
+ // Needs to be treated separately since the message is more complex
+ $displayAction = self::getActionDisplay( 'block' ) .
+ ' ' .
+ wfMessage( 'abusefilter-block-anon' ) .
+ wfMessage( 'colon-separator' )->escaped() .
+ $wgLang->translateBlockExpiry( $parameters[1] ) .
+ wfMessage( 'comma-separator' )->escaped() .
+ $wgLang->lcfirst( self::getActionDisplay( 'block' ) ) .
+ ' ' .
+ wfMessage( 'abusefilter-block-user' ) .
+ wfMessage( 'colon-separator' )->escaped() .
+ $wgLang->translateBlockExpiry( $parameters[2] );
+ } else {
+ $displayAction = self::getActionDisplay( $action ) .
+ wfMessage( 'colon-separator' )->escaped() .
+ htmlspecialchars( $wgLang->semicolonList( $parameters ) );
+ }
+ }
+
+ return $displayAction;
+ }
+
+ /**
+ * @param string $value
+ * @return string
+ */
+ static function formatFlags( $value ) {
+ /** @var $wgLang Language */
+ global $wgLang;
+ $flags = array_filter( explode( ',', $value ) );
+ $flags_display = [];
+ foreach ( $flags as $flag ) {
+ $flags_display[] = wfMessage( "abusefilter-history-$flag" )->escaped();
+ }
+
+ return $wgLang->commaList( $flags_display );
+ }
+
+ /**
+ * @param string $filterID
+ * @return string
+ */
+ static function getGlobalFilterDescription( $filterID ) {
+ global $wgAbuseFilterCentralDB;
+
+ if ( !$wgAbuseFilterCentralDB ) {
+ return '';
+ }
+
+ static $cache = [];
+ if ( isset( $cache[$filterID] ) ) {
+ return $cache[$filterID];
+ }
+
+ $fdb = wfGetDB( DB_REPLICA, [], $wgAbuseFilterCentralDB );
+
+ $cache[$filterID] = $fdb->selectField(
+ 'abuse_filter',
+ 'af_public_comments',
+ [ 'af_id' => $filterID ],
+ __METHOD__
+ );
+
+ return $cache[$filterID];
+ }
+
+ /**
+ * Gives either the user-specified name for a group,
+ * or spits the input back out
+ * @param string $group The filter's group (as defined in $wgAbuseFilterValidGroups)
+ * @return string A name for that filter group, or the input.
+ */
+ static function nameGroup( $group ) {
+ // Give grep a chance to find the usages: abusefilter-group-default
+ $msg = "abusefilter-group-$group";
+
+ return wfMessage( $msg )->exists() ? wfMessage( $msg )->escaped() : $group;
+ }
+
+ /**
+ * Look up some text of a revision from its revision id
+ *
+ * Note that this is really *some* text, we do not make *any* guarantee
+ * that this text will be even close to what the user actually sees, or
+ * that the form is fit for any intended purpose.
+ *
+ * Note also that if the revision for any reason is not an Revision
+ * the function returns with an empty string.
+ *
+ * @param Revision $revision a valid revision
+ * @param int $audience one of:
+ * Revision::FOR_PUBLIC to be displayed to all users
+ * Revision::FOR_THIS_USER to be displayed to the given user
+ * Revision::RAW get the text regardless of permissions
+ * @return string|null the content of the revision as some kind of string,
+ * or an empty string if it can not be found
+ */
+ static function revisionToString( $revision, $audience = Revision::FOR_THIS_USER ) {
+ if ( !$revision instanceof Revision ) {
+ return '';
+ }
+
+ $content = $revision->getContent( $audience );
+ if ( $content === null ) {
+ return '';
+ }
+ $result = self::contentToString( $content );
+
+ return $result;
+ }
+
+ /**
+ * Converts the given Content object to a string.
+ *
+ * This uses Content::getNativeData() if $content is an instance of TextContent,
+ * or Content::getTextForSearchIndex() otherwise.
+ *
+ * The hook 'AbuseFilter::contentToString' can be used to override this
+ * behavior.
+ *
+ * @param Content $content
+ *
+ * @return string a suitable string representation of the content.
+ */
+ static function contentToString( Content $content ) {
+ $text = null;
+
+ if ( Hooks::run( 'AbuseFilter-contentToString', [ $content, &$text ] ) ) {
+ $text = $content instanceof TextContent
+ ? $content->getNativeData()
+ : $content->getTextForSearchIndex();
+ }
+
+ if ( is_string( $text ) ) {
+ // T22310
+ // XXX: Is this really needed? Should we rather apply PST?
+ $text = str_replace( "\r\n", "\n", $text );
+ } else {
+ $text = '';
+ }
+
+ return $text;
+ }
+
+ /**
+ * Get the history ID of the first change to a given filter
+ *
+ * @param int $filterID Filter id
+ * @return int
+ */
+ public static function getFirstFilterChange( $filterID ) {
+ static $firstChanges = [];
+
+ if ( !isset( $firstChanges[$filterID] ) ) {
+ $dbr = wfGetDB( DB_REPLICA );
+ $row = $dbr->selectRow(
+ 'abuse_filter_history',
+ 'afh_id',
+ [
+ 'afh_filter' => $filterID,
+ ],
+ __METHOD__,
+ [ 'ORDER BY' => 'afh_timestamp ASC' ]
+ );
+ $firstChanges[$filterID] = $row->afh_id;
+ }
+
+ return $firstChanges[$filterID];
+ }
+}
diff --git a/www/wiki/extensions/AbuseFilter/includes/AbuseFilterChangesList.php b/www/wiki/extensions/AbuseFilter/includes/AbuseFilterChangesList.php
new file mode 100644
index 00000000..c5996796
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/includes/AbuseFilterChangesList.php
@@ -0,0 +1,118 @@
+<?php
+
+class AbuseFilterChangesList extends OldChangesList {
+
+ /**
+ * @var string
+ */
+ private $testFilter;
+
+ public function __construct( Skin $skin, $testFilter ) {
+ parent::__construct( $skin );
+ $this->testFilter = $testFilter;
+ }
+
+ /**
+ * @param string &$s
+ * @param RecentChange &$rc
+ * @param string[] &$classes
+ */
+ public function insertExtra( &$s, &$rc, &$classes ) {
+ if ( (int)$rc->getAttribute( 'rc_deleted' ) !== 0 ) {
+ $s .= ' ' . $this->msg( 'abusefilter-log-hidden-implicit' )->parse();
+ if ( !$this->userCan( $rc, Revision::SUPPRESSED_ALL ) ) {
+ return;
+ }
+ }
+
+ $examineParams = [];
+ if ( $this->testFilter ) {
+ $examineParams['testfilter'] = $this->testFilter;
+ }
+
+ $title = SpecialPage::getTitleFor( 'AbuseFilter', 'examine/' . $rc->mAttribs['rc_id'] );
+ $examineLink = $this->linkRenderer->makeLink(
+ $title,
+ new HtmlArmor( $this->msg( 'abusefilter-changeslist-examine' )->parse() ),
+ [],
+ $examineParams
+ );
+
+ $s .= ' '.$this->msg( 'parentheses' )->rawParams( $examineLink )->escaped();
+
+ # If we have a match..
+ if ( isset( $rc->filterResult ) ) {
+ $class = $rc->filterResult ?
+ 'mw-abusefilter-changeslist-match' :
+ 'mw-abusefilter-changeslist-nomatch';
+
+ $classes[] = $class;
+ }
+ }
+
+ /**
+ * Insert links to user page, user talk page and eventually a blocking link.
+ * Like the parent, but don't hide details if user can see them.
+ *
+ * @param string &$s HTML to update
+ * @param RecentChange &$rc
+ */
+ public function insertUserRelatedLinks( &$s, &$rc ) {
+ $links = $this->getLanguage()->getDirMark() . Linker::userLink( $rc->mAttribs['rc_user'],
+ $rc->mAttribs['rc_user_text'] ) .
+ Linker::userToolLinks( $rc->mAttribs['rc_user'], $rc->mAttribs['rc_user_text'] );
+
+ if ( $this->isDeleted( $rc, Revision::DELETED_USER ) ) {
+ if ( $this->userCan( $rc, Revision::DELETED_USER ) ) {
+ $s .= ' <span class="history-deleted">' . $links . '</span>';
+ } else {
+ $s .= ' <span class="history-deleted">' .
+ $this->msg( 'rev-deleted-user' )->escaped() . '</span>';
+ }
+ } else {
+ $s .= $links;
+ }
+ }
+
+ /**
+ * Insert a formatted comment. Like the parent, but don't hide details if user can see them.
+ * @param RecentChange $rc
+ * @return string
+ */
+ public function insertComment( $rc ) {
+ if ( $this->isDeleted( $rc, Revision::DELETED_COMMENT ) ) {
+ if ( $this->userCan( $rc, Revision::DELETED_COMMENT ) ) {
+ return ' <span class="history-deleted">' .
+ Linker::commentBlock( $rc->mAttribs['rc_comment'], $rc->getTitle() ) . '</span>';
+ } else {
+ return ' <span class="history-deleted">' .
+ $this->msg( 'rev-deleted-comment' )->escaped() . '</span>';
+ }
+ } else {
+ return Linker::commentBlock( $rc->mAttribs['rc_comment'], $rc->getTitle() );
+ }
+ }
+
+ /**
+ * Insert a formatted action. The same as parent, but with a different audience in LogFormatter
+ *
+ * @param RecentChange $rc
+ * @return string
+ */
+ public function insertLogEntry( $rc ) {
+ $formatter = LogFormatter::newFromRow( $rc->mAttribs );
+ $formatter->setContext( $this->getContext() );
+ $formatter->setAudience( LogFormatter::FOR_THIS_USER );
+ $formatter->setShowUserToolLinks( true );
+ $mark = $this->getLanguage()->getDirMark();
+ return $formatter->getActionText() . " $mark" . $formatter->getComment();
+ }
+
+ /**
+ * @param string &$s
+ * @param RecentChange &$rc
+ */
+ public function insertRollback( &$s, &$rc ) {
+ // Kill rollback links.
+ }
+}
diff --git a/www/wiki/extensions/AbuseFilter/includes/AbuseFilterHooks.php b/www/wiki/extensions/AbuseFilter/includes/AbuseFilterHooks.php
new file mode 100644
index 00000000..07e289bd
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/includes/AbuseFilterHooks.php
@@ -0,0 +1,851 @@
+<?php
+
+use MediaWiki\MediaWikiServices;
+use Wikimedia\Rdbms\Database;
+
+class AbuseFilterHooks {
+ const FETCH_ALL_TAGS_KEY = 'abusefilter-fetch-all-tags';
+
+ public static $successful_action_vars = false;
+ /** @var WikiPage|Article|bool */
+ public static $last_edit_page = false; // make sure edit filter & edit save hooks match
+ // So far, all of the error message out-params for these hooks accept HTML.
+ // Hooray!
+
+ /**
+ * Called right after configuration has been loaded.
+ */
+ public static function onRegistration() {
+ global $wgAbuseFilterAvailableActions, $wgAbuseFilterRestrictedActions,
+ $wgAuthManagerAutoConfig;
+
+ if ( isset( $wgAbuseFilterAvailableActions ) || isset( $wgAbuseFilterRestrictedActions ) ) {
+ wfWarn( '$wgAbuseFilterAvailableActions and $wgAbuseFilterRestrictedActions have been '
+ . 'removed. Please use $wgAbuseFilterActions and $wgAbuseFilterRestrictions '
+ . 'instead. The format is the same except the action names are the keys of the '
+ . 'array and the values are booleans.' );
+ }
+
+ $wgAuthManagerAutoConfig['preauth'][AbuseFilterPreAuthenticationProvider::class] = [
+ 'class' => AbuseFilterPreAuthenticationProvider::class,
+ 'sort' => 5, // run after normal preauth providers to keep the log cleaner
+ ];
+ }
+
+ /**
+ * Entry point for the EditFilterMergedContent hook.
+ *
+ * @param IContextSource $context the context of the edit
+ * @param Content $content the new Content generated by the edit
+ * @param Status $status Error message to return
+ * @param string $summary Edit summary for page
+ * @param User $user the user performing the edit
+ * @param bool $minoredit whether this is a minor edit according to the user.
+ * @return bool Always true
+ */
+ public static function onEditFilterMergedContent( IContextSource $context, Content $content,
+ Status $status, $summary, User $user, $minoredit
+ ) {
+ $text = AbuseFilter::contentToString( $content );
+
+ $filterStatus = self::filterEdit( $context, $content, $text, $status, $summary, $minoredit );
+
+ if ( !$filterStatus->isOK() ) {
+ // Produce a useful error message for API edits
+ $status->apiHookResult = self::getApiResult( $filterStatus );
+ }
+
+ return true;
+ }
+
+ /**
+ * Implementation for EditFilterMergedContent hook.
+ *
+ * @param IContextSource $context the context of the edit
+ * @param Content $content the new Content generated by the edit
+ * @param string $text new page content (subject of filtering)
+ * @param Status $status Error message to return
+ * @param string $summary Edit summary for page
+ * @param bool $minoredit whether this is a minor edit according to the user.
+ * @return Status
+ */
+ public static function filterEdit( IContextSource $context, $content, $text,
+ Status $status, $summary, $minoredit
+ ) {
+ $title = $context->getTitle();
+
+ self::$successful_action_vars = false;
+ self::$last_edit_page = false;
+
+ $user = $context->getUser();
+
+ $oldcontent = null;
+
+ if ( ( $title instanceof Title ) && $title->canExist() && $title->exists() ) {
+ // Make sure we load the latest text saved in database (bug 31656)
+ $page = $context->getWikiPage();
+ $revision = $page->getRevision();
+ if ( !$revision ) {
+ return Status::newGood();
+ }
+
+ $oldcontent = $revision->getContent( Revision::RAW );
+ $oldtext = AbuseFilter::contentToString( $oldcontent );
+
+ // Cache article object so we can share a parse operation
+ $articleCacheKey = $title->getNamespace() . ':' . $title->getText();
+ AFComputedVariable::$articleCache[$articleCacheKey] = $page;
+
+ // Don't trigger for null edits.
+ if ( $content && $oldcontent ) {
+ // Compare Content objects if available
+ if ( $content->equals( $oldcontent ) ) {
+ return Status::newGood();
+ }
+ } elseif ( strcmp( $oldtext, $text ) == 0 ) {
+ // Otherwise, compare strings
+ return Status::newGood();
+ }
+ } else {
+ $page = null;
+ }
+
+ // Load vars for filters to check
+ $vars = self::newVariableHolderForEdit(
+ $user, $title, $page, $summary, $content, $oldcontent, $text
+ );
+
+ $filter_result = AbuseFilter::filterAction( $vars, $title );
+ if ( !$filter_result->isOK() ) {
+ $status->merge( $filter_result );
+
+ return $filter_result;
+ }
+
+ self::$successful_action_vars = $vars;
+ self::$last_edit_page = $page;
+
+ return Status::newGood();
+ }
+
+ /**
+ * @param User $user
+ * @param Title $title
+ * @param WikiPage|null $page
+ * @param string $summary
+ * @param Content $newcontent
+ * @param Content|null $oldcontent
+ * @param string $text
+ * @return AbuseFilterVariableHolder
+ * @throws MWException
+ */
+ private static function newVariableHolderForEdit(
+ User $user, Title $title, $page, $summary, Content $newcontent,
+ $oldcontent = null, $text
+ ) {
+ $vars = new AbuseFilterVariableHolder();
+ $vars->addHolders(
+ AbuseFilter::generateUserVars( $user ),
+ AbuseFilter::generateTitleVars( $title, 'ARTICLE' )
+ );
+ $vars->setVar( 'action', 'edit' );
+ $vars->setVar( 'summary', $summary );
+ if ( $oldcontent instanceof Content ) {
+ $oldmodel = $oldcontent->getModel();
+ $oldtext = AbuseFilter::contentToString( $oldcontent );
+ } else {
+ $oldmodel = '';
+ $oldtext = '';
+ }
+ $vars->setVar( 'old_content_model', $oldmodel );
+ $vars->setVar( 'new_content_model', $newcontent->getModel() );
+ $vars->setVar( 'old_wikitext', $oldtext );
+ $vars->setVar( 'new_wikitext', $text );
+ // TODO: set old_content and new_content vars, use them
+ $vars->addHolders( AbuseFilter::getEditVars( $title, $page ) );
+
+ return $vars;
+ }
+
+ /**
+ * @param Status $status Error message details
+ * @return array API result
+ */
+ private static function getApiResult( Status $status ) {
+ global $wgFullyInitialised;
+
+ $params = $status->getErrorsArray()[0];
+ $key = array_shift( $params );
+
+ $warning = wfMessage( $key )->params( $params );
+ if ( !$wgFullyInitialised ) {
+ // This could happen for account autocreation checks
+ $warning = $warning->inContentLanguage();
+ }
+
+ $filterDescription = $params[0];
+ $filter = $params[1];
+
+ // The value is a nested structure keyed by filter id, which doesn't make sense when we only
+ // return the result from one filter. Flatten it to a plain array of actions.
+ $actionsTaken = array_values( array_unique(
+ call_user_func_array( 'array_merge', array_values( $status->getValue() ) )
+ ) );
+ $code = ( $actionsTaken === [ 'warn' ] ) ? 'abusefilter-warning' : 'abusefilter-disallowed';
+
+ ApiResult::setIndexedTagName( $params, 'param' );
+ return [
+ 'code' => $code,
+ 'message' => [
+ 'key' => $key,
+ 'params' => $params,
+ ],
+ 'abusefilter' => [
+ 'id' => $filter,
+ 'description' => $filterDescription,
+ 'actions' => $actionsTaken,
+ ],
+ // For backwards-compatibility
+ 'info' => 'Hit AbuseFilter: ' . $filterDescription,
+ 'warning' => $warning->parse(),
+ ];
+ }
+
+ /**
+ * @param WikiPage &$wikiPage
+ * @param User &$user
+ * @param string $content Content
+ * @param string $summary
+ * @param bool $minoredit
+ * @param bool $watchthis
+ * @param string $sectionanchor
+ * @param int &$flags
+ * @param Revision $revision
+ * @param Status &$status
+ * @param int $baseRevId
+ *
+ * @return bool
+ */
+ public static function onPageContentSaveComplete(
+ WikiPage &$wikiPage, &$user, $content, $summary, $minoredit, $watchthis, $sectionanchor,
+ &$flags, $revision, &$status, $baseRevId
+ ) {
+ if ( !self::$successful_action_vars || !$revision ) {
+ self::$successful_action_vars = false;
+
+ return true;
+ }
+
+ /** @var AbuseFilterVariableHolder $vars */
+ $vars = self::$successful_action_vars;
+
+ if ( $vars->getVar( 'article_prefixedtext' )->toString() !==
+ $wikiPage->getTitle()->getPrefixedText()
+ ) {
+ return true;
+ }
+
+ if ( !self::identicalPageObjects( $wikiPage, self::$last_edit_page ) ) {
+ return true; // this isn't the edit $successful_action_vars was set for
+ }
+ self::$last_edit_page = false;
+
+ if ( $vars->getVar( 'local_log_ids' ) ) {
+ // Now actually do our storage
+ $log_ids = $vars->getVar( 'local_log_ids' )->toNative();
+ $dbw = wfGetDB( DB_MASTER );
+
+ if ( $log_ids !== null && count( $log_ids ) ) {
+ $dbw->update( 'abuse_filter_log',
+ [ 'afl_rev_id' => $revision->getId() ],
+ [ 'afl_id' => $log_ids ],
+ __METHOD__
+ );
+ }
+ }
+
+ if ( $vars->getVar( 'global_log_ids' ) ) {
+ $log_ids = $vars->getVar( 'global_log_ids' )->toNative();
+
+ if ( $log_ids !== null && count( $log_ids ) ) {
+ global $wgAbuseFilterCentralDB;
+ $fdb = wfGetDB( DB_MASTER, [], $wgAbuseFilterCentralDB );
+
+ $fdb->update( 'abuse_filter_log',
+ [ 'afl_rev_id' => $revision->getId() ],
+ [ 'afl_id' => $log_ids, 'afl_wiki' => wfWikiID() ],
+ __METHOD__
+ );
+ }
+ }
+
+ return true;
+ }
+
+ /**
+ * Check if two article objects are identical or have an identical WikiPage
+ * @param Article|WikiPage $page1
+ * @param Article|WikiPage $page2
+ * @return bool
+ */
+ protected static function identicalPageObjects( $page1, $page2 ) {
+ $wpage1 = ( $page1 instanceof Article ) ? $page1->getPage() : $page1;
+ $wpage2 = ( $page2 instanceof Article ) ? $page2->getPage() : $page2;
+
+ return $wpage1 === $wpage2;
+ }
+
+ /**
+ * @param User $user
+ * @param array &$promote
+ * @return bool
+ */
+ public static function onGetAutoPromoteGroups( $user, &$promote ) {
+ if ( $promote ) {
+ $key = AbuseFilter::autoPromoteBlockKey( $user );
+ $blocked = (bool)ObjectCache::getInstance( 'hash' )->getWithSetCallback(
+ $key,
+ 30,
+ function () use ( $key ) {
+ return (int)ObjectCache::getMainStashInstance()->get( $key );
+ }
+ );
+
+ if ( $blocked ) {
+ $promote = [];
+ }
+ }
+
+ return true;
+ }
+
+ /**
+ * @param Title $oldTitle
+ * @param Title $newTitle
+ * @param User $user
+ * @param string $reason
+ * @param Status $status
+ * @return bool
+ */
+ public static function onMovePageCheckPermissions( Title $oldTitle, Title $newTitle,
+ User $user, $reason, Status $status
+ ) {
+ $vars = new AbuseFilterVariableHolder;
+ $vars->addHolders(
+ AbuseFilter::generateUserVars( $user ),
+ AbuseFilter::generateTitleVars( $oldTitle, 'MOVED_FROM' ),
+ AbuseFilter::generateTitleVars( $newTitle, 'MOVED_TO' )
+ );
+ $vars->setVar( 'SUMMARY', $reason );
+ $vars->setVar( 'ACTION', 'move' );
+
+ $result = AbuseFilter::filterAction( $vars, $oldTitle );
+ $status->merge( $result );
+
+ return $result->isOK();
+ }
+
+ /**
+ * @param WikiPage &$article
+ * @param User &$user
+ * @param string &$reason
+ * @param string &$error
+ * @param Status &$status
+ * @return bool
+ */
+ public static function onArticleDelete( &$article, &$user, &$reason, &$error, &$status ) {
+ $vars = new AbuseFilterVariableHolder;
+
+ $vars->addHolders(
+ AbuseFilter::generateUserVars( $user ),
+ AbuseFilter::generateTitleVars( $article->getTitle(), 'ARTICLE' )
+ );
+
+ $vars->setVar( 'SUMMARY', $reason );
+ $vars->setVar( 'ACTION', 'delete' );
+
+ $filter_result = AbuseFilter::filterAction( $vars, $article->getTitle() );
+
+ $status->merge( $filter_result );
+ $error = $filter_result->isOK() ? '' : $filter_result->getHTML();
+
+ return $filter_result->isOK();
+ }
+
+ /**
+ * @param RecentChange $recentChange
+ * @return bool
+ */
+ public static function onRecentChangeSave( $recentChange ) {
+ $title = Title::makeTitle(
+ $recentChange->getAttribute( 'rc_namespace' ),
+ $recentChange->getAttribute( 'rc_title' )
+ );
+ $action = $recentChange->mAttribs['rc_log_type'] ?
+ $recentChange->mAttribs['rc_log_type'] : 'edit';
+ $actionID = implode( '-', [
+ $title->getPrefixedText(), $recentChange->getAttribute( 'rc_user_text' ), $action
+ ] );
+
+ if ( isset( AbuseFilter::$tagsToSet[$actionID] ) ) {
+ $recentChange->addTags( AbuseFilter::$tagsToSet[$actionID] );
+ }
+
+ return true;
+ }
+
+ /**
+ * Purge all cache related to tags, both within AbuseFilter and in core
+ */
+ public static function purgeTagCache() {
+ ChangeTags::purgeTagCacheAll();
+
+ $services = MediaWikiServices::getInstance();
+ $cache = $services->getMainWANObjectCache();
+
+ $cache->delete(
+ $cache->makeKey( self::FETCH_ALL_TAGS_KEY, 0 )
+ );
+
+ $cache->delete(
+ $cache->makeKey( self::FETCH_ALL_TAGS_KEY, 1 )
+ );
+ }
+
+ /**
+ * @param array $tags
+ * @param bool $enabled
+ * @return bool
+ */
+ private static function fetchAllTags( array &$tags, $enabled ) {
+ $services = MediaWikiServices::getInstance();
+ $cache = $services->getMainWANObjectCache();
+
+ $tags = $cache->getWithSetCallback(
+ // Key to store the cached value under
+ $cache->makeKey( self::FETCH_ALL_TAGS_KEY, (int)$enabled ),
+
+ // Time-to-live (in seconds)
+ $cache::TTL_MINUTE,
+
+ // Function that derives the new key value
+ function ( $oldValue, &$ttl, array &$setOpts ) use ( $enabled, $tags ) {
+ global $wgAbuseFilterCentralDB, $wgAbuseFilterIsCentral;
+
+ $dbr = wfGetDB( DB_REPLICA );
+ // Account for any snapshot/replica DB lag
+ $setOpts += Database::getCacheSetOptions( $dbr );
+
+ # This is a pretty awful hack.
+
+ $where = [ 'afa_consequence' => 'tag', 'af_deleted' => false ];
+ if ( $enabled ) {
+ $where['af_enabled'] = true;
+ }
+ $res = $dbr->select(
+ [ 'abuse_filter_action', 'abuse_filter' ],
+ 'afa_parameters',
+ $where,
+ __METHOD__,
+ [],
+ [ 'abuse_filter' => [ 'INNER JOIN', 'afa_filter=af_id' ] ]
+ );
+
+ foreach ( $res as $row ) {
+ $tags = array_filter(
+ array_merge( explode( "\n", $row->afa_parameters ), $tags )
+ );
+ }
+
+ if ( $wgAbuseFilterCentralDB && !$wgAbuseFilterIsCentral ) {
+ $dbr = wfGetDB( DB_REPLICA, [], $wgAbuseFilterCentralDB );
+ $where['af_global'] = 1;
+ $res = $dbr->select(
+ [ 'abuse_filter_action', 'abuse_filter' ],
+ 'afa_parameters',
+ $where,
+ __METHOD__,
+ [],
+ [ 'abuse_filter' => [ 'INNER JOIN', 'afa_filter=af_id' ] ]
+ );
+
+ foreach ( $res as $row ) {
+ $tags = array_filter(
+ array_merge( explode( "\n", $row->afa_parameters ), $tags )
+ );
+ }
+ }
+
+ return $tags;
+ }
+ );
+
+ $tags[] = 'abusefilter-condition-limit';
+
+ return true;
+ }
+
+ /**
+ * @param string[] &$tags
+ * @return bool
+ */
+ public static function onListDefinedTags( array &$tags ) {
+ return self::fetchAllTags( $tags, false );
+ }
+
+ /**
+ * @param string[] &$tags
+ * @return bool
+ */
+ public static function onChangeTagsListActive( array &$tags ) {
+ return self::fetchAllTags( $tags, true );
+ }
+
+ /**
+ * @param DatabaseUpdater $updater
+ * @throws MWException
+ * @return bool
+ */
+ public static function onLoadExtensionSchemaUpdates( DatabaseUpdater $updater ) {
+ $dir = dirname( __DIR__ );
+
+ if ( $updater->getDB()->getType() == 'mysql' || $updater->getDB()->getType() == 'sqlite' ) {
+ if ( $updater->getDB()->getType() == 'mysql' ) {
+ $updater->addExtensionUpdate( [ 'addTable', 'abuse_filter',
+ "$dir/abusefilter.tables.sql", true ] );
+ $updater->addExtensionUpdate( [ 'addTable', 'abuse_filter_history',
+ "$dir/db_patches/patch-abuse_filter_history.sql", true ] );
+ } else {
+ $updater->addExtensionUpdate( [ 'addTable', 'abuse_filter',
+ "$dir/abusefilter.tables.sqlite.sql", true ] );
+ $updater->addExtensionUpdate( [ 'addTable', 'abuse_filter_history',
+ "$dir/db_patches/patch-abuse_filter_history.sqlite.sql", true ] );
+ }
+ $updater->addExtensionUpdate( [
+ 'addField', 'abuse_filter_history', 'afh_changed_fields',
+ "$dir/db_patches/patch-afh_changed_fields.sql", true
+ ] );
+ $updater->addExtensionUpdate( [ 'addField', 'abuse_filter', 'af_deleted',
+ "$dir/db_patches/patch-af_deleted.sql", true ] );
+ $updater->addExtensionUpdate( [ 'addField', 'abuse_filter', 'af_actions',
+ "$dir/db_patches/patch-af_actions.sql", true ] );
+ $updater->addExtensionUpdate( [ 'addField', 'abuse_filter', 'af_global',
+ "$dir/db_patches/patch-global_filters.sql", true ] );
+ $updater->addExtensionUpdate( [ 'addField', 'abuse_filter_log', 'afl_rev_id',
+ "$dir/db_patches/patch-afl_action_id.sql", true ] );
+ if ( $updater->getDB()->getType() == 'mysql' ) {
+ $updater->addExtensionUpdate( [ 'addIndex', 'abuse_filter_log',
+ 'filter_timestamp', "$dir/db_patches/patch-fix-indexes.sql", true ] );
+ } else {
+ $updater->addExtensionUpdate( [
+ 'addIndex', 'abuse_filter_log', 'afl_filter_timestamp',
+ "$dir/db_patches/patch-fix-indexes.sqlite.sql", true
+ ] );
+ }
+
+ $updater->addExtensionUpdate( [ 'addField', 'abuse_filter',
+ 'af_group', "$dir/db_patches/patch-af_group.sql", true ] );
+
+ if ( $updater->getDB()->getType() == 'mysql' ) {
+ $updater->addExtensionUpdate( [
+ 'addIndex', 'abuse_filter_log', 'wiki_timestamp',
+ "$dir/db_patches/patch-global_logging_wiki-index.sql", true
+ ] );
+ } else {
+ $updater->addExtensionUpdate( [
+ 'addIndex', 'abuse_filter_log', 'afl_wiki_timestamp',
+ "$dir/db_patches/patch-global_logging_wiki-index.sqlite.sql", true
+ ] );
+ }
+
+ if ( $updater->getDB()->getType() == 'mysql' ) {
+ $updater->addExtensionUpdate( [
+ 'modifyField', 'abuse_filter_log', 'afl_namespace',
+ "$dir/db_patches/patch-afl-namespace_int.sql", true
+ ] );
+ } else {
+ /*
+ $updater->addExtensionUpdate( array(
+ 'modifyField',
+ 'abuse_filter_log',
+ 'afl_namespace',
+ "$dir/db_patches/patch-afl-namespace_int.sqlite.sql",
+ true
+ ) );
+ */
+ /* @todo Modify a column in sqlite, which do not support such
+ * things create backup, drop, create with new schema, copy,
+ * drop backup or simply see
+ * https://www.mediawiki.org/wiki/Manual:SQLite#About_SQLite :
+ * Several extensions are known to have database update or
+ * installation issues with SQLite: AbuseFilter, ...
+ */
+ }
+ } elseif ( $updater->getDB()->getType() == 'postgres' ) {
+ $updater->addExtensionUpdate( [
+ 'addTable', 'abuse_filter', "$dir/abusefilter.tables.pg.sql", true ] );
+ $updater->addExtensionUpdate( [
+ 'addTable', 'abuse_filter_history',
+ "$dir/db_patches/patch-abuse_filter_history.pg.sql", true
+ ] );
+ $updater->addExtensionUpdate( [
+ 'addPgField', 'abuse_filter', 'af_actions', "TEXT NOT NULL DEFAULT ''" ] );
+ $updater->addExtensionUpdate( [
+ 'addPgField', 'abuse_filter', 'af_deleted', 'SMALLINT NOT NULL DEFAULT 0' ] );
+ $updater->addExtensionUpdate( [
+ 'addPgField', 'abuse_filter', 'af_global', 'SMALLINT NOT NULL DEFAULT 0' ] );
+ $updater->addExtensionUpdate( [
+ 'addPgField', 'abuse_filter_log', 'afl_wiki', 'TEXT' ] );
+ $updater->addExtensionUpdate( [
+ 'addPgField', 'abuse_filter_log', 'afl_deleted', 'SMALLINT' ] );
+ $updater->addExtensionUpdate( [
+ 'changeField', 'abuse_filter_log', 'afl_filter', 'TEXT', '' ] );
+ $updater->addExtensionUpdate( [
+ 'addPgExtIndex', 'abuse_filter_log', 'abuse_filter_log_ip', "(afl_ip)" ] );
+ $updater->addExtensionUpdate( [
+ 'addPgExtIndex', 'abuse_filter_log', 'abuse_filter_log_wiki', "(afl_wiki)" ] );
+ $updater->addExtensionUpdate( [
+ 'changeField', 'abuse_filter_log', 'afl_namespace', "INTEGER", '' ] );
+ $updater->addExtensionUpdate( [
+ 'addPgField', 'abuse_filter', 'af_group', "TEXT NOT NULL DEFAULT 'default'" ] );
+ $updater->addExtensionUpdate( [
+ 'addPgExtIndex', 'abuse_filter', 'abuse_filter_group_enabled_id',
+ "(af_group, af_enabled, af_id)"
+ ] );
+ $updater->addExtensionUpdate( [
+ 'addPgField', 'abuse_filter_history', 'afh_group', "TEXT" ] );
+ }
+
+ $updater->addExtensionUpdate( [ [ __CLASS__, 'createAbuseFilterUser' ] ] );
+
+ return true;
+ }
+
+ /**
+ * Updater callback to create the AbuseFilter user after the user tables have been updated.
+ * @param DatabaseUpdater $updater
+ */
+ public static function createAbuseFilterUser( $updater ) {
+ $username = wfMessage( 'abusefilter-blocker' )->inContentLanguage()->text();
+ $user = User::newFromName( $username );
+
+ if ( $user && !$updater->updateRowExists( 'create abusefilter-blocker-user' ) ) {
+ $user = User::newSystemUser( $username, [ 'steal' => true ] );
+ $updater->insertUpdateRow( 'create abusefilter-blocker-user' );
+ # Promote user so it doesn't look too crazy.
+ $user->addGroup( 'sysop' );
+ }
+ }
+
+ /**
+ * @param int $id
+ * @param Title $nt
+ * @param array &$tools
+ * @param SpecialPage $sp for context
+ */
+ public static function onContributionsToolLinks( $id, $nt, array &$tools, SpecialPage $sp ) {
+ $username = $nt->getText();
+ if ( $sp->getUser()->isAllowed( 'abusefilter-log' ) && !IP::isValidRange( $username ) ) {
+ $linkRenderer = $sp->getLinkRenderer();
+ $tools['abuselog'] = $linkRenderer->makeLink(
+ SpecialPage::getTitleFor( 'AbuseLog' ),
+ $sp->msg( 'abusefilter-log-linkoncontribs' )->text(),
+ [ 'title' => $sp->msg( 'abusefilter-log-linkoncontribs-text',
+ $username )->text() ],
+ [ 'wpSearchUser' => $username ]
+ );
+ }
+ }
+
+ /**
+ * Filter an upload.
+ *
+ * @param UploadBase $upload
+ * @param User $user
+ * @param array $props
+ * @param string $comment
+ * @param string $pageText
+ * @param array|ApiMessage &$error
+ * @return bool
+ */
+ public static function onUploadVerifyUpload( UploadBase $upload, User $user,
+ array $props, $comment, $pageText, &$error
+ ) {
+ return self::filterUpload( 'upload', $upload, $user, $props, $comment, $pageText, $error );
+ }
+
+ /**
+ * Filter an upload to stash. If a filter doesn't need to check the page contents or
+ * upload comment, it can use `action='stashupload'` to provide better experience to e.g.
+ * UploadWizard (rejecting files immediately, rather than after the user adds the details).
+ *
+ * @param UploadBase $upload
+ * @param User $user
+ * @param array $props
+ * @param array|ApiMessage &$error
+ * @return bool
+ */
+ public static function onUploadStashFile( UploadBase $upload, User $user,
+ array $props, &$error
+ ) {
+ return self::filterUpload( 'stashupload', $upload, $user, $props, null, null, $error );
+ }
+
+ /**
+ * Implementation for UploadStashFile and UploadVerifyUpload hooks.
+ *
+ * @param string $action 'upload' or 'stashupload'
+ * @param UploadBase $upload
+ * @param User $user User performing the action
+ * @param array $props File properties, as returned by FSFile::getPropsFromPath()
+ * @param string|null $summary Upload log comment (also used as edit summary)
+ * @param string|null $text File description page text (only used for new uploads)
+ * @param array|ApiMessage &$error
+ * @return bool
+ */
+ public static function filterUpload( $action, UploadBase $upload, User $user,
+ array $props, $summary, $text, &$error
+ ) {
+ $title = $upload->getTitle();
+
+ $vars = new AbuseFilterVariableHolder;
+ $vars->addHolders(
+ AbuseFilter::generateUserVars( $user ),
+ AbuseFilter::generateTitleVars( $title, 'ARTICLE' )
+ );
+ $vars->setVar( 'ACTION', $action );
+
+ // We use the hexadecimal version of the file sha1.
+ // Use UploadBase::getTempFileSha1Base36 so that we don't have to calculate the sha1 sum again
+ $sha1 = Wikimedia\base_convert( $upload->getTempFileSha1Base36(), 36, 16, 40 );
+
+ $vars->setVar( 'file_sha1', $sha1 );
+ $vars->setVar( 'file_size', $upload->getFileSize() );
+
+ $vars->setVar( 'file_mime', $props['mime'] );
+ $vars->setVar(
+ 'file_mediatype',
+ MediaWiki\MediaWikiServices::getInstance()->getMimeAnalyzer()
+ ->getMediaType( null, $props['mime'] )
+ );
+ $vars->setVar( 'file_width', $props['width'] );
+ $vars->setVar( 'file_height', $props['height'] );
+ $vars->setVar( 'file_bits_per_channel', $props['bits'] );
+
+ // We only have the upload comment and page text when using the UploadVerifyUpload hook
+ if ( $summary !== null && $text !== null ) {
+ // This block is adapted from self::filterEdit()
+ if ( $title->exists() ) {
+ $page = WikiPage::factory( $title );
+ $revision = $page->getRevision();
+ if ( !$revision ) {
+ return true;
+ }
+
+ $oldcontent = $revision->getContent( Revision::RAW );
+ $oldtext = AbuseFilter::contentToString( $oldcontent );
+
+ // Cache article object so we can share a parse operation
+ $articleCacheKey = $title->getNamespace() . ':' . $title->getText();
+ AFComputedVariable::$articleCache[$articleCacheKey] = $page;
+
+ // Page text is ignored for uploads when the page already exists
+ $text = $oldtext;
+ } else {
+ $page = null;
+ $oldtext = '';
+ }
+
+ // Load vars for filters to check
+ $vars->setVar( 'summary', $summary );
+ $vars->setVar( 'minor_edit', false );
+ $vars->setVar( 'old_wikitext', $oldtext );
+ $vars->setVar( 'new_wikitext', $text );
+ // TODO: set old_content and new_content vars, use them
+ $vars->addHolders( AbuseFilter::getEditVars( $title, $page ) );
+ }
+
+ $filter_result = AbuseFilter::filterAction( $vars, $title );
+
+ if ( !$filter_result->isOK() ) {
+ $messageAndParams = $filter_result->getErrorsArray()[0];
+ $apiResult = self::getApiResult( $filter_result );
+ $error = ApiMessage::create(
+ $messageAndParams,
+ $apiResult['code'],
+ $apiResult
+ );
+ }
+
+ return $filter_result->isOK();
+ }
+
+ /**
+ * Adds global variables to the Javascript as needed
+ *
+ * @param array &$vars
+ * @return bool
+ */
+ public static function onMakeGlobalVariablesScript( array &$vars ) {
+ if ( isset( AbuseFilter::$editboxName ) && AbuseFilter::$editboxName !== null ) {
+ $vars['abuseFilterBoxName'] = AbuseFilter::$editboxName;
+ }
+
+ if ( AbuseFilterViewExamine::$examineType !== null ) {
+ $vars['abuseFilterExamine'] = [
+ 'type' => AbuseFilterViewExamine::$examineType,
+ 'id' => AbuseFilterViewExamine::$examineId,
+ ];
+ }
+
+ return true;
+ }
+
+ /**
+ * Tables that Extension:UserMerge needs to update
+ *
+ * @param array &$updateFields
+ * @return bool
+ */
+ public static function onUserMergeAccountFields( array &$updateFields ) {
+ $updateFields[] = [ 'abuse_filter', 'af_user', 'af_user_text' ];
+ $updateFields[] = [ 'abuse_filter_log', 'afl_user', 'afl_user_text' ];
+ $updateFields[] = [ 'abuse_filter_history', 'afh_user', 'afh_user_text' ];
+
+ return true;
+ }
+
+ /**
+ * Warms the cache for getLastPageAuthors() - T116557
+ *
+ * @param WikiPage $page
+ * @param Content $content
+ * @param ParserOutput $output
+ * @param string $summary
+ * @param User $user
+ */
+ public static function onParserOutputStashForEdit(
+ WikiPage $page, Content $content, ParserOutput $output, $summary = '', $user = null
+ ) {
+ $revision = $page->getRevision();
+ if ( !$revision ) {
+ return;
+ }
+
+ $text = AbuseFilter::contentToString( $content );
+ $oldcontent = $revision->getContent( Revision::RAW );
+ $user = $user ?: RequestContext::getMain()->getUser();
+
+ // Cache any resulting filter matches.
+ // Do this outside the synchronous stash lock to avoid any chance of slowdown.
+ DeferredUpdates::addCallableUpdate(
+ function () use ( $user, $page, $summary, $content, $oldcontent, $text ) {
+ $vars = self::newVariableHolderForEdit(
+ $user, $page->getTitle(), $page, $summary, $content, $oldcontent, $text
+ );
+ AbuseFilter::filterAction( $vars, $page->getTitle(), 'default', $user, 'stash' );
+ },
+ DeferredUpdates::PRESEND
+ );
+ }
+}
diff --git a/www/wiki/extensions/AbuseFilter/includes/AbuseFilterModifyLogFormatter.php b/www/wiki/extensions/AbuseFilter/includes/AbuseFilterModifyLogFormatter.php
new file mode 100644
index 00000000..769c27d3
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/includes/AbuseFilterModifyLogFormatter.php
@@ -0,0 +1,53 @@
+<?php
+
+class AbuseFilterModifyLogFormatter extends LogFormatter {
+
+ /**
+ * @return string
+ */
+ protected function getMessageKey() {
+ $subtype = $this->entry->getSubtype();
+ // Messages that can be used here:
+ // * abusefilter-logentry-create
+ // * abusefilter-logentry-modify
+ return "abusefilter-logentry-$subtype";
+ }
+
+ /**
+ * @return array
+ */
+ protected function extractParameters() {
+ $parameters = $this->entry->getParameters();
+ if ( $this->entry->isLegacy() ) {
+ list( $historyId, $filterId ) = $parameters;
+ } else {
+ $historyId = $parameters['historyId'];
+ $filterId = $parameters['newId'];
+ }
+
+ $detailsTitle = SpecialPage::getTitleFor(
+ 'AbuseFilter',
+ "history/$filterId/diff/prev/$historyId"
+ );
+
+ $params = [];
+ $params[3] = Message::rawParam(
+ $this->makePageLink(
+ $this->entry->getTarget(),
+ [],
+ $this->msg( 'abusefilter-log-detailedentry-local' )
+ ->numParams( $filterId )->escaped()
+ )
+ );
+ $params[4] = Message::rawParam(
+ $this->makePageLink(
+ $detailsTitle,
+ [],
+ $this->msg( 'abusefilter-log-detailslink' )->escaped()
+ )
+ );
+
+ return $params;
+ }
+
+}
diff --git a/www/wiki/extensions/AbuseFilter/includes/AbuseFilterPreAuthenticationProvider.php b/www/wiki/extensions/AbuseFilter/includes/AbuseFilterPreAuthenticationProvider.php
new file mode 100644
index 00000000..046c4c30
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/includes/AbuseFilterPreAuthenticationProvider.php
@@ -0,0 +1,46 @@
+<?php
+
+use MediaWiki\Auth\AbstractPreAuthenticationProvider;
+use MediaWiki\Auth\AuthenticationRequest;
+
+class AbuseFilterPreAuthenticationProvider extends AbstractPreAuthenticationProvider {
+ public function testForAccountCreation( $user, $creator, array $reqs ) {
+ return $this->testUser( $user, $creator, false );
+ }
+
+ public function testUserForCreation( $user, $autocreate, array $options = [] ) {
+ // if this is not an autocreation, testForAccountCreation already handled it
+ if ( $autocreate ) {
+ return $this->testUser( $user, $user, true );
+ }
+ return StatusValue::newGood();
+ }
+
+ /**
+ * @param User $user The user being created or autocreated
+ * @param User $creator The user who caused $user to be created (or $user itself on autocreation)
+ * @param bool $autocreate Is this an autocreation?
+ * @return StatusValue
+ */
+ protected function testUser( $user, $creator, $autocreate ) {
+ if ( $user->getName() == wfMessage( 'abusefilter-blocker' )->inContentLanguage()->text() ) {
+ return StatusValue::newFatal( 'abusefilter-accountreserved' );
+ }
+
+ $vars = new AbuseFilterVariableHolder;
+
+ // generateUserVars records $creator->getName() which would be the IP for unregistered users
+ if ( $creator->isLoggedIn() ) {
+ $vars->addHolders( AbuseFilter::generateUserVars( $creator ) );
+ }
+
+ $vars->setVar( 'ACTION', $autocreate ? 'autocreateaccount' : 'createaccount' );
+ $vars->setVar( 'ACCOUNTNAME', $user->getName() );
+
+ // pass creator in explicitly to prevent recording the current user on autocreation - T135360
+ $status = AbuseFilter::filterAction( $vars, SpecialPage::getTitleFor( 'Userlogin' ),
+ 'default', $creator );
+
+ return $status->getStatusValue();
+ }
+}
diff --git a/www/wiki/extensions/AbuseFilter/includes/AbuseFilterVariableHolder.php b/www/wiki/extensions/AbuseFilter/includes/AbuseFilterVariableHolder.php
new file mode 100644
index 00000000..dd6f0be6
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/includes/AbuseFilterVariableHolder.php
@@ -0,0 +1,226 @@
+<?php
+
+class AbuseFilterVariableHolder {
+ public $mVars = [];
+
+ public static $varBlacklist = [ 'context' ];
+
+ public function __construct() {
+ // Backwards-compatibility (unused now)
+ $this->setVar( 'minor_edit', false );
+ }
+
+ /**
+ * @param string $variable
+ * @param mixed $datum
+ */
+ function setVar( $variable, $datum ) {
+ $variable = strtolower( $variable );
+ if ( !( $datum instanceof AFPData || $datum instanceof AFComputedVariable ) ) {
+ $datum = AFPData::newFromPHPVar( $datum );
+ }
+
+ $this->mVars[$variable] = $datum;
+ }
+
+ /**
+ * @param string $variable
+ * @param string $method
+ * @param array $parameters
+ */
+ function setLazyLoadVar( $variable, $method, $parameters ) {
+ $placeholder = new AFComputedVariable( $method, $parameters );
+ $this->setVar( $variable, $placeholder );
+ }
+
+ /**
+ * Get a variable from the current object
+ *
+ * @param string $variable
+ * @return AFPData
+ */
+ function getVar( $variable ) {
+ $variable = strtolower( $variable );
+ if ( isset( $this->mVars[$variable] ) ) {
+ if ( $this->mVars[$variable] instanceof AFComputedVariable ) {
+ $value = $this->mVars[$variable]->compute( $this );
+ $this->setVar( $variable, $value );
+ return $value;
+ } elseif ( $this->mVars[$variable] instanceof AFPData ) {
+ return $this->mVars[$variable];
+ }
+ }
+ return new AFPData();
+ }
+
+ /**
+ * @return AbuseFilterVariableHolder
+ */
+ public static function merge() {
+ $newHolder = new AbuseFilterVariableHolder;
+ call_user_func_array( [ $newHolder, "addHolders" ], func_get_args() );
+
+ return $newHolder;
+ }
+
+ /**
+ * @param self $addHolder
+ * @throws MWException
+ * @deprecated use addHolders() instead
+ */
+ public function addHolder( $addHolder ) {
+ $this->addHolders( $addHolder );
+ }
+
+ /**
+ * Merge any number of holders given as arguments into this holder.
+ *
+ * @throws MWException
+ */
+ public function addHolders() {
+ $holders = func_get_args();
+
+ foreach ( $holders as $addHolder ) {
+ if ( !is_object( $addHolder ) ) {
+ throw new MWException( 'Invalid argument to AbuseFilterVariableHolder::addHolders' );
+ }
+ $this->mVars = array_merge( $this->mVars, $addHolder->mVars );
+ }
+ }
+
+ function __wakeup() {
+ // Reset the context.
+ $this->setVar( 'context', 'stored' );
+ }
+
+ /**
+ * Export all variables stored in this object as string
+ *
+ * @return string[]
+ */
+ function exportAllVars() {
+ $exported = [];
+ foreach ( array_keys( $this->mVars ) as $varName ) {
+ if ( !in_array( $varName, self::$varBlacklist ) ) {
+ $exported[$varName] = $this->getVar( $varName )->toString();
+ }
+ }
+
+ return $exported;
+ }
+
+ /**
+ * Export all non-lazy variables stored in this object as string
+ *
+ * @return string[]
+ */
+ function exportNonLazyVars() {
+ $exported = [];
+ foreach ( $this->mVars as $varName => $data ) {
+ if (
+ !( $data instanceof AFComputedVariable )
+ && !in_array( $varName, self::$varBlacklist )
+ ) {
+ $exported[$varName] = $this->getVar( $varName )->toString();
+ }
+ }
+
+ return $exported;
+ }
+
+ /**
+ * Dump all variables stored in this object in their native types.
+ * If you want a not yet set variable to be included in the results you can
+ * either set $compute to an array with the name of the variable or set
+ * $compute to true to compute all not yet set variables.
+ *
+ * @param array|bool $compute Variables we should copute if not yet set
+ * @param bool $includeUserVars Include user set variables
+ * @return array
+ */
+ public function dumpAllVars( $compute = [], $includeUserVars = false ) {
+ $allVarNames = array_keys( $this->mVars );
+ $exported = [];
+ $coreVariables = [];
+
+ if ( !$includeUserVars ) {
+ // Compile a list of all variables set by the extension to be able
+ // to filter user set ones by name
+ global $wgRestrictionTypes;
+
+ $coreVariables = AbuseFilter::getBuilderValues();
+ $coreVariables = array_keys( $coreVariables['vars'] );
+
+ // Title vars can have several prefixes
+ $prefixes = [ 'ARTICLE', 'MOVED_FROM', 'MOVED_TO' ];
+ $titleVars = [
+ '_ARTICLEID',
+ '_NAMESPACE',
+ '_TEXT',
+ '_PREFIXEDTEXT',
+ '_recent_contributors'
+ ];
+ foreach ( $wgRestrictionTypes as $action ) {
+ $titleVars[] = "_restrictions_$action";
+ }
+
+ foreach ( $titleVars as $var ) {
+ foreach ( $prefixes as $prefix ) {
+ $coreVariables[] = $prefix . $var;
+ }
+ }
+ $coreVariables = array_map( 'strtolower', $coreVariables );
+ }
+
+ foreach ( $allVarNames as $varName ) {
+ if (
+ ( $includeUserVars || in_array( strtolower( $varName ), $coreVariables ) ) &&
+ // Only include variables set in the extension in case $includeUserVars is false
+ !in_array( $varName, self::$varBlacklist ) &&
+ ( $compute === true ||
+ ( is_array( $compute ) && in_array( $varName, $compute ) ) ||
+ $this->mVars[$varName] instanceof AFPData
+ )
+ ) {
+ $exported[$varName] = $this->getVar( $varName )->toNative();
+ }
+ }
+
+ return $exported;
+ }
+
+ /**
+ * @param string $var
+ * @return bool
+ */
+ function varIsSet( $var ) {
+ return array_key_exists( $var, $this->mVars );
+ }
+
+ /**
+ * Compute all vars which need DB access. Useful for vars which are going to be saved
+ * cross-wiki or used for offline analysis.
+ */
+ function computeDBVars() {
+ static $dbTypes = [
+ 'links-from-wikitext-or-database',
+ 'load-recent-authors',
+ 'get-page-restrictions',
+ 'simple-user-accessor',
+ 'user-age',
+ 'user-groups',
+ 'user-rights',
+ 'revision-text-by-id',
+ 'revision-text-by-timestamp'
+ ];
+
+ foreach ( $this->mVars as $name => $value ) {
+ if ( $value instanceof AFComputedVariable &&
+ in_array( $value->mMethod, $dbTypes )
+ ) {
+ $value = $value->compute( $this );
+ $this->setVar( $name, $value );
+ }
+ }
+ }
+}
diff --git a/www/wiki/extensions/AbuseFilter/includes/AbuseLogHitFormatter.php b/www/wiki/extensions/AbuseFilter/includes/AbuseLogHitFormatter.php
new file mode 100644
index 00000000..b6bc83e4
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/includes/AbuseLogHitFormatter.php
@@ -0,0 +1,60 @@
+<?php
+
+use MediaWiki\MediaWikiServices;
+
+/**
+ * This class formats abuse log notifications.
+ *
+ * Uses logentry-abusefilter-hit
+ */
+class AbuseLogHitFormatter extends LogFormatter {
+
+ /**
+ * @return array
+ */
+ protected function getMessageParameters() {
+ $entry = $this->entry->getParameters();
+ $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer();
+ $params = parent::getMessageParameters();
+
+ $filter_title = SpecialPage::getTitleFor( 'AbuseFilter', $entry['filter'] );
+ $filter_caption = $this->msg( 'abusefilter-log-detailedentry-local' )->params( $entry['filter'] );
+ $log_title = SpecialPage::getTitleFor( 'AbuseLog', $entry['log'] );
+ $log_caption = $this->msg( 'abusefilter-log-detailslink' );
+
+ $params[4] = $entry['action'];
+
+ if ( $this->plaintext ) {
+ $params[3] = '[[' . $filter_title->getPrefixedText() . '|' . $filter_caption . ']]';
+ $params[8] = '[[' . $log_title->getPrefixedText() . '|' . $log_caption . ']]';
+ } else {
+ $params[3] = Message::rawParam( $linkRenderer->makeLink(
+ $filter_title,
+ $filter_caption
+ ) );
+ $params[8] = Message::rawParam( $linkRenderer->makeLink(
+ $log_title,
+ $log_caption
+ ) );
+ }
+
+ $actions_taken = $entry['actions'];
+ if ( !strlen( trim( $actions_taken ) ) ) {
+ $actions_taken = $this->msg( 'abusefilter-log-noactions' );
+ } else {
+ $actions = explode( ',', $actions_taken );
+ $displayActions = [];
+
+ foreach ( $actions as $action ) {
+ $displayActions[] = AbuseFilter::getActionDisplay( $action );
+ }
+ $actions_taken = $this->context->getLanguage()->commaList( $displayActions );
+ }
+ $params[5] = $actions_taken;
+
+ // Bad things happen if the numbers are not in correct order
+ ksort( $params );
+
+ return $params;
+ }
+}
diff --git a/www/wiki/extensions/AbuseFilter/includes/TableDiffFormatterFullContext.php b/www/wiki/extensions/AbuseFilter/includes/TableDiffFormatterFullContext.php
new file mode 100644
index 00000000..f88b953f
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/includes/TableDiffFormatterFullContext.php
@@ -0,0 +1,36 @@
+<?php
+
+/**
+ * Like TableDiffFormatter, but will always render the full context
+ * (even for empty diffs).
+ *
+ * @private
+ */
+class TableDiffFormatterFullContext extends TableDiffFormatter {
+ /**
+ * Format a diff.
+ *
+ * @param Diff $diff
+ * @return string The formatted output.
+ */
+ function format( $diff ) {
+ $xlen = $ylen = 0;
+
+ // Calculate the length of the left and the right side
+ foreach ( $diff->edits as $edit ) {
+ if ( $edit->orig ) {
+ $xlen += count( $edit->orig );
+ }
+ if ( $edit->closing ) {
+ $ylen += count( $edit->closing );
+ }
+ }
+
+ // Just render the diff with no preprocessing
+ $this->startDiff();
+ $this->block( 1, $xlen, 1, $ylen, $diff->edits );
+ $end = $this->endDiff();
+
+ return $end;
+ }
+}
diff --git a/www/wiki/extensions/AbuseFilter/includes/Views/AbuseFilterView.php b/www/wiki/extensions/AbuseFilter/includes/Views/AbuseFilterView.php
new file mode 100644
index 00000000..11b06bbf
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/includes/Views/AbuseFilterView.php
@@ -0,0 +1,112 @@
+<?php
+
+use Wikimedia\Rdbms\IDatabase;
+
+abstract class AbuseFilterView extends ContextSource {
+ public $mFilter, $mHistoryID, $mSubmit;
+
+ /**
+ * @var \MediaWiki\Linker\LinkRenderer
+ */
+ protected $linkRenderer;
+
+ /**
+ * @param SpecialAbuseFilter $page
+ * @param array $params
+ */
+ function __construct( $page, $params ) {
+ $this->mPage = $page;
+ $this->mParams = $params;
+ $this->setContext( $this->mPage->getContext() );
+ $this->linkRenderer = $page->getLinkRenderer();
+ }
+
+ /**
+ * @param string $subpage
+ * @return Title
+ */
+ function getTitle( $subpage = '' ) {
+ return $this->mPage->getPageTitle( $subpage );
+ }
+
+ abstract function show();
+
+ /**
+ * @return bool
+ */
+ public function canEdit() {
+ return (
+ !$this->getUser()->isBlocked() &&
+ $this->getUser()->isAllowed( 'abusefilter-modify' )
+ );
+ }
+
+ /**
+ * @return bool
+ */
+ public function canEditGlobal() {
+ return $this->getUser()->isAllowed( 'abusefilter-modify-global' );
+ }
+
+ /**
+ * Whether the user can edit the given filter.
+ *
+ * @param object $row Filter row
+ *
+ * @return bool
+ */
+ public function canEditFilter( $row ) {
+ return (
+ $this->canEdit() &&
+ !( isset( $row->af_global ) && $row->af_global == 1 && !$this->canEditGlobal() )
+ );
+ }
+
+ /**
+ * @param IDatabase $db
+ * @return string
+ */
+ public function buildTestConditions( IDatabase $db ) {
+ // If one of these is true, we're abusefilter compatible.
+ return $db->makeList( [
+ 'rc_source' => [
+ RecentChange::SRC_EDIT,
+ RecentChange::SRC_NEW,
+ ],
+ $db->makeList( [
+ 'rc_source' => RecentChange::SRC_LOG,
+ $db->makeList( [
+ $db->makeList( [
+ 'rc_log_type' => 'move',
+ 'rc_log_action' => 'move'
+ ], LIST_AND ),
+ $db->makeList( [
+ 'rc_log_type' => 'newusers',
+ 'rc_log_action' => 'create'
+ ], LIST_AND ),
+ $db->makeList( [
+ 'rc_log_type' => 'delete',
+ 'rc_log_action' => 'delete'
+ ], LIST_AND ),
+ // @todo: add upload
+ ], LIST_OR ),
+ ], LIST_AND ),
+ ], LIST_OR );
+ }
+
+ /**
+ * @static
+ * @return bool
+ */
+ static function canViewPrivate() {
+ global $wgUser;
+ static $canView = null;
+
+ if ( is_null( $canView ) ) {
+ $canView = $wgUser->isAllowedAny( 'abusefilter-modify', 'abusefilter-view-private' );
+ }
+
+ return $canView;
+ }
+
+}
diff --git a/www/wiki/extensions/AbuseFilter/includes/Views/AbuseFilterViewDiff.php b/www/wiki/extensions/AbuseFilter/includes/Views/AbuseFilterViewDiff.php
new file mode 100644
index 00000000..4a3b1881
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/includes/Views/AbuseFilterViewDiff.php
@@ -0,0 +1,387 @@
+<?php
+
+class AbuseFilterViewDiff extends AbuseFilterView {
+ public $mOldVersion = null;
+ public $mNewVersion = null;
+ public $mNextHistoryId = null;
+ public $mFilter = null;
+
+ function show() {
+ $show = $this->loadData();
+ $out = $this->getOutput();
+
+ $links = [];
+ if ( $this->mFilter ) {
+ $links['abusefilter-history-backedit'] = $this->getTitle( $this->mFilter );
+ $links['abusefilter-diff-backhistory'] = $this->getTitle( 'history/' . $this->mFilter );
+ }
+
+ foreach ( $links as $msg => $title ) {
+ $links[$msg] = $this->linkRenderer->makeLink( $title, $this->msg( $msg )->text() );
+ }
+
+ $backlinks = $this->getLanguage()->pipeList( $links );
+ $out->addHTML( Xml::tags( 'p', null, $backlinks ) );
+
+ if ( $show ) {
+ $out->addHTML( $this->formatDiff() );
+
+ // Next and previous change links
+ $links = [];
+ if ( AbuseFilter::getFirstFilterChange( $this->mFilter ) !=
+ $this->mOldVersion['meta']['history_id']
+ ) {
+ // Create a "previous change" link if this isn't the first change of the given filter
+ $links[] = $this->linkRenderer->makeLink(
+ $this->getTitle(
+ 'history/' . $this->mFilter . '/diff/prev/' . $this->mOldVersion['meta']['history_id']
+ ),
+ $this->getLanguage()->getArrow( 'backwards' ) .
+ ' ' . $this->msg( 'abusefilter-diff-prev' )->text()
+ );
+ }
+
+ if ( !is_null( $this->mNextHistoryId ) ) {
+ // Create a "next change" link if this isn't the last change of the given filter
+ $links[] = $this->linkRenderer->makeLink(
+ $this->getTitle(
+ 'history/' . $this->mFilter . '/diff/prev/' . $this->mNextHistoryId
+ ),
+ $this->msg( 'abusefilter-diff-next' )->text() .
+ ' ' . $this->getLanguage()->getArrow( 'forwards' )
+ );
+ }
+
+ if ( count( $links ) > 0 ) {
+ $backlinks = $this->getLanguage()->pipeList( $links );
+ $out->addHTML( Xml::tags( 'p', null, $backlinks ) );
+ }
+ }
+ }
+
+ function loadData() {
+ $oldSpec = $this->mParams[3];
+ $newSpec = $this->mParams[4];
+ $this->mFilter = $this->mParams[1];
+
+ if ( AbuseFilter::filterHidden( $this->mFilter )
+ && !$this->getUser()->isAllowedAny( 'abusefilter-modify', 'abusefilter-view-private' )
+ ) {
+ $this->getOutput()->addWikiMsg( 'abusefilter-history-error-hidden' );
+ return false;
+ }
+
+ $this->mOldVersion = $this->loadSpec( $oldSpec, $newSpec );
+ $this->mNewVersion = $this->loadSpec( $newSpec, $oldSpec );
+
+ if ( is_null( $this->mOldVersion ) || is_null( $this->mNewVersion ) ) {
+ $this->getOutput()->addWikiMsg( 'abusefilter-diff-invalid' );
+ return false;
+ }
+
+ $this->mNextHistoryId = $this->getNextHistoryId(
+ $this->mNewVersion['meta']['history_id']
+ );
+
+ return true;
+ }
+
+ /**
+ * Get the history ID of the next change
+ *
+ * @param int $historyId History id to find next change of
+ * @return int|null Id of the next change or null if there isn't one
+ */
+ function getNextHistoryId( $historyId ) {
+ $dbr = wfGetDB( DB_REPLICA );
+ $row = $dbr->selectRow(
+ 'abuse_filter_history',
+ 'afh_id',
+ [
+ 'afh_filter' => $this->mFilter,
+ 'afh_id > ' . $dbr->addQuotes( $historyId ),
+ ],
+ __METHOD__,
+ [ 'ORDER BY' => 'afh_timestamp ASC' ]
+ );
+ if ( $row ) {
+ return $row->afh_id;
+ }
+ return null;
+ }
+
+ function loadSpec( $spec, $otherSpec ) {
+ static $dependentSpecs = [ 'prev', 'next' ];
+ static $cache = [];
+
+ if ( isset( $cache[$spec] ) ) {
+ return $cache[$spec];
+ }
+
+ $dbr = wfGetDB( DB_REPLICA );
+ $row = null;
+ if ( is_numeric( $spec ) ) {
+ $row = $dbr->selectRow(
+ 'abuse_filter_history',
+ '*',
+ [ 'afh_id' => $spec, 'afh_filter' => $this->mFilter ],
+ __METHOD__
+ );
+ } elseif ( $spec == 'cur' ) {
+ $row = $dbr->selectRow(
+ 'abuse_filter_history',
+ '*',
+ [ 'afh_filter' => $this->mFilter ],
+ __METHOD__,
+ [ 'ORDER BY' => 'afh_timestamp desc' ]
+ );
+ } elseif ( $spec == 'prev' && !in_array( $otherSpec, $dependentSpecs ) ) {
+ // cached
+ $other = $this->loadSpec( $otherSpec, $spec );
+
+ $row = $dbr->selectRow(
+ 'abuse_filter_history',
+ '*',
+ [
+ 'afh_filter' => $this->mFilter,
+ 'afh_id<' . $dbr->addQuotes( $other['meta']['history_id'] ),
+ ],
+ __METHOD__,
+ [ 'ORDER BY' => 'afh_timestamp desc' ]
+ );
+ if ( $other && !$row ) {
+ $t = $this->getTitle(
+ 'history/' . $this->mFilter . '/item/' . $other['meta']['history_id'] );
+ $this->getOutput()->redirect( $t->getFullURL() );
+ return null;
+ }
+ } elseif ( $spec == 'next' && !in_array( $otherSpec, $dependentSpecs ) ) {
+ // cached
+ $other = $this->loadSpec( $otherSpec, $spec );
+
+ $row = $dbr->selectRow(
+ 'abuse_filter_history',
+ '*',
+ [
+ 'afh_filter' => $this->mFilter,
+ 'afh_id>' . $dbr->addQuotes( $other['meta']['history_id'] ),
+ ],
+ __METHOD__,
+ [ 'ORDER BY' => 'afh_timestamp ASC' ]
+ );
+
+ if ( $other && !$row ) {
+ $t = $this->getTitle(
+ 'history/' . $this->mFilter . '/item/' . $other['meta']['history_id'] );
+ $this->getOutput()->redirect( $t->getFullURL() );
+ return null;
+ }
+ }
+
+ if ( !$row ) {
+ return null;
+ }
+
+ $data = $this->loadFromHistoryRow( $row );
+ $cache[$spec] = $data;
+ return $data;
+ }
+
+ function loadFromHistoryRow( $row ) {
+ return [
+ 'meta' => [
+ 'history_id' => $row->afh_id,
+ 'modified_by' => $row->afh_user,
+ 'modified_by_text' => $row->afh_user_text,
+ 'modified' => $row->afh_timestamp,
+ ],
+ 'info' => [
+ 'description' => $row->afh_public_comments,
+ 'flags' => $row->afh_flags,
+ 'notes' => $row->afh_comments,
+ 'group' => $row->afh_group,
+ ],
+ 'pattern' => $row->afh_pattern,
+ 'actions' => unserialize( $row->afh_actions ),
+ ];
+ }
+
+ /**
+ * @param string $timestamp
+ * @param int $history_id
+ * @return string
+ */
+ function formatVersionLink( $timestamp, $history_id ) {
+ $filter = $this->mFilter;
+ $text = $this->getLanguage()->timeanddate( $timestamp, true );
+ $title = $this->getTitle( "history/$filter/item/$history_id" );
+
+ $link = $this->linkRenderer->makeLink( $title, $text );
+
+ return $link;
+ }
+
+ /**
+ * @return string
+ */
+ function formatDiff() {
+ $oldVersion = $this->mOldVersion;
+ $newVersion = $this->mNewVersion;
+
+ // headings
+ $oldLink = $this->formatVersionLink(
+ $oldVersion['meta']['modified'],
+ $oldVersion['meta']['history_id']
+ );
+ $newLink = $this->formatVersionLink(
+ $newVersion['meta']['modified'],
+ $newVersion['meta']['history_id']
+ );
+
+ $oldUserLink = Linker::userLink(
+ $oldVersion['meta']['modified_by'],
+ $oldVersion['meta']['modified_by_text']
+ );
+ $newUserLink = Linker::userLink(
+ $newVersion['meta']['modified_by'],
+ $newVersion['meta']['modified_by_text']
+ );
+
+ $headings = '';
+ $headings .= Xml::tags( 'th', null,
+ $this->msg( 'abusefilter-diff-item' )->parse() );
+ $headings .= Xml::tags( 'th', null,
+ $this->msg( 'abusefilter-diff-version' )
+ ->rawParams( $oldLink, $oldUserLink )
+ ->params( $newVersion['meta']['modified_by_text'] )
+ ->parse()
+ );
+ $headings .= Xml::tags( 'th', null,
+ $this->msg( 'abusefilter-diff-version' )
+ ->rawParams( $newLink, $newUserLink )
+ ->params( $newVersion['meta']['modified_by_text'] )
+ ->parse()
+ );
+
+ $headings = Xml::tags( 'tr', null, $headings );
+
+ // Basic info
+ $info = '';
+ $info .= $this->getHeaderRow( 'abusefilter-diff-info' );
+ $info .= $this->getDiffRow(
+ 'abusefilter-edit-description',
+ $oldVersion['info']['description'],
+ $newVersion['info']['description']
+ );
+ global $wgAbuseFilterValidGroups;
+ if (
+ count( $wgAbuseFilterValidGroups ) > 1 ||
+ $oldVersion['info']['group'] != $newVersion['info']['group']
+ ) {
+ $info .= $this->getDiffRow(
+ 'abusefilter-edit-group',
+ AbuseFilter::nameGroup( $oldVersion['info']['group'] ),
+ AbuseFilter::nameGroup( $newVersion['info']['group'] )
+ );
+ }
+ $info .= $this->getDiffRow(
+ 'abusefilter-edit-flags',
+ AbuseFilter::formatFlags( $oldVersion['info']['flags'] ),
+ AbuseFilter::formatFlags( $newVersion['info']['flags'] )
+ );
+
+ $info .= $this->getDiffRow(
+ 'abusefilter-edit-notes',
+ $oldVersion['info']['notes'],
+ $newVersion['info']['notes']
+ );
+
+ // Pattern
+ $info .= $this->getHeaderRow( 'abusefilter-diff-pattern' );
+ $info .= $this->getDiffRow(
+ 'abusefilter-edit-rules',
+ $oldVersion['pattern'],
+ $newVersion['pattern'],
+ 'text'
+ );
+
+ // Actions
+ $oldActions = $this->stringifyActions( $oldVersion['actions'] );
+ $newActions = $this->stringifyActions( $newVersion['actions'] );
+
+ $info .= $this->getHeaderRow( 'abusefilter-edit-consequences' );
+ $info .= $this->getDiffRow(
+ 'abusefilter-edit-consequences',
+ $oldActions,
+ $newActions
+ );
+
+ $html = "<table class='wikitable'>
+ <thead>$headings</thead>
+ <tbody>$info</tbody>
+ </table>";
+
+ $html = Xml::tags( 'h2', null, $this->msg( 'abusefilter-diff-title' )->parse() ) . $html;
+
+ return $html;
+ }
+
+ /**
+ * @param array $actions
+ * @return array
+ */
+ function stringifyActions( $actions ) {
+ $lines = [];
+
+ ksort( $actions );
+ foreach ( $actions as $action => $parameters ) {
+ $lines[] = AbuseFilter::formatAction( $action, $parameters );
+ }
+
+ if ( !count( $lines ) ) {
+ $lines[] = '';
+ }
+
+ return $lines;
+ }
+
+ /**
+ * @param string $msg
+ * @return string
+ */
+ function getHeaderRow( $msg ) {
+ $html = $this->msg( $msg )->parse();
+ $html = Xml::tags( 'th', [ 'colspan' => 3 ], $html );
+ $html = Xml::tags( 'tr', [ 'class' => 'mw-abusefilter-diff-header' ], $html );
+
+ return $html;
+ }
+
+ /**
+ * @param string $msg
+ * @param array|string $old
+ * @param array|string $new
+ * @return string
+ */
+ function getDiffRow( $msg, $old, $new ) {
+ if ( !is_array( $old ) ) {
+ $old = explode( "\n", preg_replace( "/\\\r\\\n?/", "\n", $old ) );
+ }
+ if ( !is_array( $new ) ) {
+ $new = explode( "\n", preg_replace( "/\\\r\\\n?/", "\n", $new ) );
+ }
+
+ $diffEngine = new DifferenceEngine( $this->getContext() );
+
+ $diffEngine->showDiffStyle();
+
+ $diff = new Diff( $old, $new );
+ $formatter = new TableDiffFormatterFullContext();
+ $formattedDiff = $diffEngine->addHeader( $formatter->format( $diff ), '', '' );
+
+ return Xml::tags( 'tr', null,
+ Xml::tags( 'th', null, $this->msg( $msg )->parse() ) .
+ Xml::tags( 'td', [ 'colspan' => 2 ], $formattedDiff )
+ ) . "\n";
+ }
+}
diff --git a/www/wiki/extensions/AbuseFilter/includes/Views/AbuseFilterViewEdit.php b/www/wiki/extensions/AbuseFilter/includes/Views/AbuseFilterViewEdit.php
new file mode 100644
index 00000000..9f4db06e
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/includes/Views/AbuseFilterViewEdit.php
@@ -0,0 +1,1252 @@
+<?php
+
+class AbuseFilterViewEdit extends AbuseFilterView {
+ /**
+ * @param SpecialAbuseFilter $page
+ * @param array $params
+ */
+ function __construct( $page, $params ) {
+ parent::__construct( $page, $params );
+ $this->mFilter = $page->mFilter;
+ $this->mHistoryID = $page->mHistoryID;
+ }
+
+ /**
+ * Check whether a filter is allowed to use a tag
+ *
+ * @param string $tag Tag name
+ * @return Status
+ */
+ protected function isAllowedTag( $tag ) {
+ $tagNameStatus = ChangeTags::isTagNameValid( $tag );
+
+ if ( !$tagNameStatus->isGood() ) {
+ return $tagNameStatus;
+ }
+
+ $finalStatus = Status::newGood();
+
+ $canAddStatus =
+ ChangeTags::canAddTagsAccompanyingChange(
+ [ $tag ]
+ );
+
+ if ( $canAddStatus->isGood() ) {
+ return $finalStatus;
+ }
+
+ $alreadyDefinedTags = [];
+ AbuseFilterHooks::onListDefinedTags( $alreadyDefinedTags );
+
+ if ( in_array( $tag, $alreadyDefinedTags, true ) ) {
+ return $finalStatus;
+ }
+
+ $canCreateTagStatus = ChangeTags::canCreateTag( $tag );
+ if ( $canCreateTagStatus->isGood() ) {
+ return $finalStatus;
+ }
+
+ $finalStatus->fatal( 'abusefilter-edit-bad-tags' );
+ return $finalStatus;
+ }
+
+ function show() {
+ $user = $this->getUser();
+ $out = $this->getOutput();
+ $request = $this->getRequest();
+ $out->setPageTitle( $this->msg( 'abusefilter-edit' ) );
+ $out->addHelpLink( 'Extension:AbuseFilter/Rules format' );
+
+ $filter = $this->mFilter;
+ $history_id = $this->mHistoryID;
+ if ( $this->mHistoryID ) {
+ $dbr = wfGetDB( DB_REPLICA );
+ $row = $dbr->selectRow(
+ 'abuse_filter_history',
+ 'afh_id',
+ [
+ 'afh_filter' => $filter,
+ ],
+ __METHOD__,
+ [ 'ORDER BY' => 'afh_timestamp DESC' ]
+ );
+ // change $history_id to null if it's current version id
+ if ( $row->afh_id === $this->mHistoryID ) {
+ $history_id = null;
+ }
+ }
+
+ // Add default warning messages
+ $this->exposeWarningMessages();
+
+ if ( $filter == 'new' && !$this->canEdit() ) {
+ $out->addWikiMsg( 'abusefilter-edit-notallowed' );
+ return;
+ }
+
+ $editToken = $request->getVal( 'wpEditToken' );
+ $tokenMatches = $user->matchEditToken(
+ $editToken, [ 'abusefilter', $filter ], $request );
+
+ if ( $tokenMatches && $this->canEdit() ) {
+ // Check syntax
+ $syntaxerr = AbuseFilter::checkSyntax( $request->getVal( 'wpFilterRules' ) );
+ if ( $syntaxerr !== true ) {
+ $out->addHTML(
+ $this->buildFilterEditor(
+ $this->msg(
+ 'abusefilter-edit-badsyntax',
+ [ $syntaxerr[0] ]
+ )->parseAsBlock(),
+ $filter, $history_id
+ )
+ );
+ return;
+ }
+ // Check for missing required fields (title and pattern)
+ $missing = [];
+ if ( !$request->getVal( 'wpFilterRules' ) ||
+ trim( $request->getVal( 'wpFilterRules' ) ) === '' ) {
+ $missing[] = $this->msg( 'abusefilter-edit-field-conditions' )->escaped();
+ }
+ if ( !$request->getVal( 'wpFilterDescription' ) ) {
+ $missing[] = $this->msg( 'abusefilter-edit-field-description' )->escaped();
+ }
+ if ( count( $missing ) !== 0 ) {
+ $missing = $this->getLanguage()->commaList( $missing );
+ $out->addHTML(
+ $this->buildFilterEditor(
+ $this->msg(
+ 'abusefilter-edit-missingfields',
+ $missing
+ )->parseAsBlock(),
+ $filter, $history_id
+ )
+ );
+ return;
+ }
+
+ $dbw = wfGetDB( DB_MASTER );
+
+ list( $newRow, $actions ) = $this->loadRequest( $filter );
+
+ $differences = AbuseFilter::compareVersions(
+ [ $newRow, $actions ],
+ [ $newRow->mOriginalRow, $newRow->mOriginalActions ]
+ );
+
+ // Don't allow adding a new global rule, or updating a
+ // rule that is currently global, without permissions.
+ if ( !$this->canEditFilter( $newRow ) || !$this->canEditFilter( $newRow->mOriginalRow ) ) {
+ $out->addWikiMsg( 'abusefilter-edit-notallowed-global' );
+ return;
+ }
+
+ // Don't allow custom messages on global rules
+ if ( $newRow->af_global == 1 &&
+ $request->getVal( 'wpFilterWarnMessage' ) !== 'abusefilter-warning'
+ ) {
+ $out->addWikiMsg( 'abusefilter-edit-notallowed-global-custom-msg' );
+ return;
+ }
+
+ $origActions = $newRow->mOriginalActions;
+ $wasGlobal = (bool)$newRow->mOriginalRow->af_global;
+
+ unset( $newRow->mOriginalRow );
+ unset( $newRow->mOriginalActions );
+
+ // Check for non-changes
+ if ( !count( $differences ) ) {
+ $out->redirect( $this->getTitle()->getLocalURL() );
+ return;
+ }
+
+ // Check for restricted actions
+ global $wgAbuseFilterRestrictions;
+ if ( count( array_intersect_key(
+ array_filter( $wgAbuseFilterRestrictions ),
+ array_merge(
+ array_filter( $actions ),
+ array_filter( $origActions )
+ )
+ ) )
+ && !$user->isAllowed( 'abusefilter-modify-restricted' )
+ ) {
+ $out->addHTML(
+ $this->buildFilterEditor(
+ $this->msg( 'abusefilter-edit-restricted' )->parseAsBlock(),
+ $this->mFilter,
+ $history_id
+ )
+ );
+ return;
+ }
+
+ // If we've activated the 'tag' option, check the arguments for validity.
+ if ( !empty( $actions['tag'] ) ) {
+ foreach ( $actions['tag']['parameters'] as $tag ) {
+ $status = $this->isAllowedTag( $tag );
+
+ if ( !$status->isGood() ) {
+ $out->addHTML(
+ $this->buildFilterEditor(
+ $status->getMessage()->parseAsBlock(),
+ $this->mFilter,
+ $history_id
+ )
+ );
+ return;
+ }
+ }
+ }
+
+ $newRow = get_object_vars( $newRow ); // Convert from object to array
+
+ // Set last modifier.
+ $newRow['af_timestamp'] = $dbw->timestamp( wfTimestampNow() );
+ $newRow['af_user'] = $user->getId();
+ $newRow['af_user_text'] = $user->getName();
+
+ $dbw->startAtomic( __METHOD__ );
+
+ // Insert MAIN row.
+ if ( $filter == 'new' ) {
+ $new_id = $dbw->nextSequenceValue( 'abuse_filter_af_id_seq' );
+ $is_new = true;
+ } else {
+ $new_id = $this->mFilter;
+ $is_new = false;
+ }
+
+ // Reset throttled marker, if we're re-enabling it.
+ $newRow['af_throttled'] = $newRow['af_throttled'] && !$newRow['af_enabled'];
+ $newRow['af_id'] = $new_id; // ID.
+
+ // T67807
+ // integer 1's & 0's might be better understood than booleans
+ $newRow['af_enabled'] = (int)$newRow['af_enabled'];
+ $newRow['af_hidden'] = (int)$newRow['af_hidden'];
+ $newRow['af_throttled'] = (int)$newRow['af_throttled'];
+ $newRow['af_deleted'] = (int)$newRow['af_deleted'];
+ $newRow['af_global'] = (int)$newRow['af_global'];
+
+ $dbw->replace( 'abuse_filter', [ 'af_id' ], $newRow, __METHOD__ );
+
+ if ( $is_new ) {
+ $new_id = $dbw->insertId();
+ }
+
+ // Actions
+ global $wgAbuseFilterActions;
+ $deadActions = [];
+ $actionsRows = [];
+ foreach ( array_filter( $wgAbuseFilterActions ) as $action => $_ ) {
+ // Check if it's set
+ $enabled = isset( $actions[$action] ) && (bool)$actions[$action];
+
+ if ( $enabled ) {
+ $parameters = $actions[$action]['parameters'];
+
+ $thisRow = [
+ 'afa_filter' => $new_id,
+ 'afa_consequence' => $action,
+ 'afa_parameters' => implode( "\n", $parameters )
+ ];
+ $actionsRows[] = $thisRow;
+ } else {
+ $deadActions[] = $action;
+ }
+ }
+
+ // Create a history row
+ $afh_row = [];
+
+ foreach ( AbuseFilter::$history_mappings as $af_col => $afh_col ) {
+ $afh_row[$afh_col] = $newRow[$af_col];
+ }
+
+ // Actions
+ $displayActions = [];
+ foreach ( $actions as $action ) {
+ $displayActions[$action['action']] = $action['parameters'];
+ }
+ $afh_row['afh_actions'] = serialize( $displayActions );
+
+ $afh_row['afh_changed_fields'] = implode( ',', $differences );
+
+ // Flags
+ $flags = [];
+ if ( $newRow['af_hidden'] ) {
+ $flags[] = 'hidden';
+ }
+ if ( $newRow['af_enabled'] ) {
+ $flags[] = 'enabled';
+ }
+ if ( $newRow['af_deleted'] ) {
+ $flags[] = 'deleted';
+ }
+ if ( $newRow['af_global'] ) {
+ $flags[] = 'global';
+ }
+
+ $afh_row['afh_flags'] = implode( ',', $flags );
+
+ $afh_row['afh_filter'] = $new_id;
+ $afh_row['afh_id'] = $dbw->nextSequenceValue( 'abuse_filter_af_id_seq' );
+
+ // Do the update
+ $dbw->insert( 'abuse_filter_history', $afh_row, __METHOD__ );
+ $history_id = $dbw->insertId();
+ if ( $filter != 'new' ) {
+ $dbw->delete(
+ 'abuse_filter_action',
+ [ 'afa_filter' => $filter ],
+ __METHOD__
+ );
+ }
+ $dbw->insert( 'abuse_filter_action', $actionsRows, __METHOD__ );
+
+ $dbw->endAtomic( __METHOD__ );
+
+ // Invalidate cache if this was a global rule
+ if ( $wasGlobal || $newRow['af_global'] ) {
+ $group = 'default';
+ if ( isset( $newRow['af_group'] ) && $newRow['af_group'] != '' ) {
+ $group = $newRow['af_group'];
+ }
+
+ $globalRulesKey = AbuseFilter::getGlobalRulesKey( $group );
+ ObjectCache::getMainWANInstance()->touchCheckKey( $globalRulesKey );
+ }
+
+ // Logging
+ $subtype = $filter === 'new' ? 'create' : 'modify';
+ $logEntry = new ManualLogEntry( 'abusefilter', $subtype );
+ $logEntry->setPerformer( $user );
+ $logEntry->setTarget( $this->getTitle( $new_id ) );
+ $logEntry->setParameters( [
+ 'historyId' => $history_id,
+ 'newId' => $new_id
+ ] );
+ $logid = $logEntry->insert();
+ $logEntry->publish( $logid );
+
+ // Purge the tag list cache so the fetchAllTags hook applies tag changes
+ if ( isset( $actions['tag'] ) ) {
+ AbuseFilterHooks::purgeTagCache();
+ }
+
+ AbuseFilter::resetFilterProfile( $new_id );
+
+ $out->redirect(
+ $this->getTitle()->getLocalURL(
+ [
+ 'result' => 'success',
+ 'changedfilter' => $new_id,
+ 'changeid' => $history_id,
+ ]
+ )
+ );
+ } else {
+ if ( $tokenMatches ) {
+ // lost rights meanwhile
+ $out->addWikiMsg( 'abusefilter-edit-notallowed' );
+ }
+
+ if ( $history_id ) {
+ $out->addWikiMsg(
+ 'abusefilter-edit-oldwarning', $history_id, $filter );
+ }
+
+ $out->addHTML( $this->buildFilterEditor( null, $filter, $history_id ) );
+
+ if ( $history_id ) {
+ $out->addWikiMsg(
+ 'abusefilter-edit-oldwarning', $history_id, $filter );
+ }
+ }
+ }
+
+ /**
+ * Builds the full form for edit filters.
+ * Loads data either from the database or from the HTTP request.
+ * The request takes precedence over the database
+ * @param string $error An error message to show above the filter box.
+ * @param int $filter The filter ID
+ * @param int $history_id The history ID of the filter, if applicable. Otherwise null
+ * @return bool|string False if there is a failure building the editor,
+ * otherwise the HTML text for the editor.
+ */
+ function buildFilterEditor( $error, $filter, $history_id = null ) {
+ if ( $filter === null ) {
+ return false;
+ }
+
+ // Build the edit form
+ $out = $this->getOutput();
+ $lang = $this->getLanguage();
+ $user = $this->getUser();
+
+ // Load from request OR database.
+ list( $row, $actions ) = $this->loadRequest( $filter, $history_id );
+
+ if ( !$row ) {
+ $out->addWikiMsg( 'abusefilter-edit-badfilter' );
+ $out->addHTML( $this->linkRenderer->makeLink( $this->getTitle(),
+ $this->msg( 'abusefilter-return' )->text() ) );
+ return false;
+ }
+
+ $out->addSubtitle( $this->msg(
+ $filter === 'new' ? 'abusefilter-edit-subtitle-new' : 'abusefilter-edit-subtitle',
+ $this->getLanguage()->formatNum( $filter ), $history_id
+ )->parse() );
+
+ // Hide hidden filters.
+ if ( ( ( isset( $row->af_hidden ) && $row->af_hidden ) ||
+ AbuseFilter::filterHidden( $filter ) )
+ && !$this->canViewPrivate() ) {
+ return $this->msg( 'abusefilter-edit-denied' )->escaped();
+ }
+
+ $output = '';
+ if ( $error ) {
+ $out->addHTML( "<span class=\"error\">$error</span>" );
+ }
+
+ // Read-only attribute
+ $readOnlyAttrib = [];
+ $cbReadOnlyAttrib = []; // For checkboxes
+
+ $styleAttrib = [ 'style' => 'width:95%' ];
+
+ if ( !$this->canEditFilter( $row ) ) {
+ $readOnlyAttrib['readonly'] = 'readonly';
+ $cbReadOnlyAttrib['disabled'] = 'disabled';
+ }
+
+ $fields = [];
+
+ $fields['abusefilter-edit-id'] =
+ $this->mFilter == 'new' ?
+ $this->msg( 'abusefilter-edit-new' )->escaped() :
+ $lang->formatNum( $filter );
+ $fields['abusefilter-edit-description'] =
+ Xml::input(
+ 'wpFilterDescription',
+ 45,
+ isset( $row->af_public_comments ) ? $row->af_public_comments : '',
+ array_merge( $readOnlyAttrib, $styleAttrib )
+ );
+
+ global $wgAbuseFilterValidGroups;
+ if ( count( $wgAbuseFilterValidGroups ) > 1 ) {
+ $groupSelector = new XmlSelect(
+ 'wpFilterGroup',
+ 'mw-abusefilter-edit-group-input',
+ 'default'
+ );
+
+ if ( isset( $row->af_group ) && $row->af_group ) {
+ $groupSelector->setDefault( $row->af_group );
+ }
+
+ foreach ( $wgAbuseFilterValidGroups as $group ) {
+ $groupSelector->addOption( AbuseFilter::nameGroup( $group ), $group );
+ }
+
+ if ( !empty( $readOnlyAttrib ) ) {
+ $groupSelector->setAttribute( 'disabled', 'disabled' );
+ }
+
+ $fields['abusefilter-edit-group'] = $groupSelector->getHTML();
+ }
+
+ // Hit count display
+ if ( !empty( $row->af_hit_count ) && $user->isAllowed( 'abusefilter-log-detail' ) ) {
+ $count_display = $this->msg( 'abusefilter-hitcount' )
+ ->numParams( (int)$row->af_hit_count )->text();
+ $hitCount = $this->linkRenderer->makeKnownLink(
+ SpecialPage::getTitleFor( 'AbuseLog' ),
+ $count_display,
+ [],
+ [ 'wpSearchFilter' => $row->af_id ]
+ );
+
+ $fields['abusefilter-edit-hitcount'] = $hitCount;
+ }
+
+ if ( $filter !== 'new' ) {
+ // Statistics
+ global $wgAbuseFilterProfile;
+ $stash = ObjectCache::getMainStashInstance();
+ $matches_count = (int)$stash->get( AbuseFilter::filterMatchesKey( $filter ) );
+ $total = (int)$stash->get( AbuseFilter::filterUsedKey( $row->af_group ) );
+
+ if ( $total > 0 ) {
+ $matches_percent = sprintf( '%.2f', 100 * $matches_count / $total );
+ if ( $wgAbuseFilterProfile ) {
+ list( $timeProfile, $condProfile ) = AbuseFilter::getFilterProfile( $filter );
+ $fields['abusefilter-edit-status-label'] = $this->msg( 'abusefilter-edit-status-profile' )
+ ->numParams( $total, $matches_count, $matches_percent, $timeProfile, $condProfile )
+ ->escaped();
+ } else {
+ $fields['abusefilter-edit-status-label'] = $this->msg( 'abusefilter-edit-status' )
+ ->numParams( $total, $matches_count, $matches_percent )
+ ->parse();
+ }
+ }
+ }
+
+ $fields['abusefilter-edit-rules'] = AbuseFilter::buildEditBox(
+ $row->af_pattern,
+ 'wpFilterRules',
+ true,
+ $this->canEditFilter( $row )
+ );
+ $fields['abusefilter-edit-notes'] = Xml::textarea(
+ 'wpFilterNotes',
+ ( isset( $row->af_comments ) ? $row->af_comments . "\n" : "\n" ),
+ 40, 15,
+ $readOnlyAttrib
+ );
+
+ // Build checkboxes
+ $checkboxes = [ 'hidden', 'enabled', 'deleted' ];
+ $flags = '';
+
+ global $wgAbuseFilterIsCentral;
+ if ( $wgAbuseFilterIsCentral ) {
+ $checkboxes[] = 'global';
+ }
+
+ if ( isset( $row->af_throttled ) && $row->af_throttled ) {
+ global $wgAbuseFilterRestrictions;
+
+ $filterActions = explode( ',', $row->af_actions );
+ $throttledActions = array_intersect_key(
+ array_flip( $filterActions ),
+ array_filter( $wgAbuseFilterRestrictions )
+ );
+
+ if ( $throttledActions ) {
+ $throttledActions = array_map(
+ function ( $filterAction ) {
+ return $this->msg( 'abusefilter-action-' . $filterAction )->text();
+ },
+ array_keys( $throttledActions )
+ );
+
+ $flags .= $out->parse(
+ Html::warningBox(
+ $this->msg( 'abusefilter-edit-throttled-warning' )
+ ->plaintextParams( $lang->commaList( $throttledActions ) )
+ ->escaped()
+ )
+ );
+ }
+ }
+
+ foreach ( $checkboxes as $checkboxId ) {
+ // Messages that can be used here:
+ // * abusefilter-edit-enabled
+ // * abusefilter-edit-deleted
+ // * abusefilter-edit-hidden
+ // * abusefilter-edit-global
+ $message = "abusefilter-edit-$checkboxId";
+ $dbField = "af_$checkboxId";
+ $postVar = 'wpFilter' . ucfirst( $checkboxId );
+
+ if ( $checkboxId == 'global' && !$this->canEditGlobal() ) {
+ $cbReadOnlyAttrib['disabled'] = 'disabled';
+ }
+
+ $checkbox = Xml::checkLabel(
+ $this->msg( $message )->text(),
+ $postVar,
+ $postVar,
+ isset( $row->$dbField ) ? $row->$dbField : false,
+ $cbReadOnlyAttrib
+ );
+ $checkbox = Xml::tags( 'p', null, $checkbox );
+ $flags .= $checkbox;
+ }
+
+ $fields['abusefilter-edit-flags'] = $flags;
+ $tools = '';
+
+ if ( $filter != 'new' ) {
+ if ( $user->isAllowed( 'abusefilter-revert' ) ) {
+ $tools .= Xml::tags(
+ 'p', null,
+ $this->linkRenderer->makeLink(
+ $this->getTitle( "revert/$filter" ),
+ new HtmlArmor( $this->msg( 'abusefilter-edit-revert' )->parse() )
+ )
+ );
+ }
+
+ if ( $this->canEdit() ) {
+ // Test link
+ $tools .= Xml::tags(
+ 'p', null,
+ $this->linkRenderer->makeLink(
+ $this->getTitle( "test/$filter" ),
+ new HtmlArmor( $this->msg( 'abusefilter-edit-test-link' )->parse() )
+ )
+ );
+ }
+ // Last modification details
+ $userLink =
+ Linker::userLink( $row->af_user, $row->af_user_text ) .
+ Linker::userToolLinks( $row->af_user, $row->af_user_text );
+ $userName = $row->af_user_text;
+ $fields['abusefilter-edit-lastmod'] =
+ $this->msg( 'abusefilter-edit-lastmod-text' )
+ ->rawParams(
+ $lang->timeanddate( $row->af_timestamp, true ),
+ $userLink,
+ $lang->date( $row->af_timestamp, true ),
+ $lang->time( $row->af_timestamp, true ),
+ $userName
+ )->parse();
+ $history_display = new HtmlArmor( $this->msg( 'abusefilter-edit-viewhistory' )->parse() );
+ $fields['abusefilter-edit-history'] =
+ $this->linkRenderer->makeKnownLink( $this->getTitle( 'history/' . $filter ), $history_display );
+ }
+
+ // Add export
+ $exportText = FormatJson::encode( [ 'row' => $row, 'actions' => $actions ] );
+ $tools .= Xml::tags( 'a', [ 'href' => '#', 'id' => 'mw-abusefilter-export-link' ],
+ $this->msg( 'abusefilter-edit-export' )->parse() );
+ $tools .= Xml::element( 'textarea',
+ [ 'readonly' => 'readonly', 'id' => 'mw-abusefilter-export' ],
+ $exportText
+ );
+
+ $fields['abusefilter-edit-tools'] = $tools;
+
+ $form = Xml::buildForm( $fields );
+ $form = Xml::fieldset( $this->msg( 'abusefilter-edit-main' )->text(), $form );
+ $form .= Xml::fieldset(
+ $this->msg( 'abusefilter-edit-consequences' )->text(),
+ $this->buildConsequenceEditor( $row, $actions )
+ );
+
+ if ( $this->canEditFilter( $row ) ) {
+ $form .= Xml::submitButton(
+ $this->msg( 'abusefilter-edit-save' )->text(),
+ [ 'accesskey' => 's' ]
+ );
+ $form .= Html::hidden(
+ 'wpEditToken',
+ $user->getEditToken( [ 'abusefilter', $filter ] )
+ );
+ }
+
+ $form = Xml::tags( 'form',
+ [
+ 'action' => $this->getTitle( $filter )->getFullURL(),
+ 'method' => 'post'
+ ],
+ $form
+ );
+
+ $output .= $form;
+
+ return $output;
+ }
+
+ /**
+ * Builds the "actions" editor for a given filter.
+ * @param stdClass $row A row from the abuse_filter table.
+ * @param array $actions Array of rows from the abuse_filter_action table
+ * corresponding to the abuse filter held in $row.
+ * @return HTML text for an action editor.
+ */
+ function buildConsequenceEditor( $row, $actions ) {
+ global $wgAbuseFilterActions;
+
+ $enabledActions = array_filter( $wgAbuseFilterActions );
+
+ $setActions = [];
+ foreach ( $enabledActions as $action => $_ ) {
+ $setActions[$action] = array_key_exists( $action, $actions );
+ }
+
+ $output = '';
+
+ foreach ( $enabledActions as $action => $_ ) {
+ MediaWiki\suppressWarnings();
+ $params = $actions[$action]['parameters'];
+ MediaWiki\restoreWarnings();
+ $output .= $this->buildConsequenceSelector(
+ $action, $setActions[$action], $params, $row );
+ }
+
+ return $output;
+ }
+
+ /**
+ * @param string $action The action to build an editor for
+ * @param bool $set Whether or not the action is activated
+ * @param array $parameters Action parameters
+ * @param stdClass $row abuse_filter row object
+ * @return string
+ */
+ function buildConsequenceSelector( $action, $set, $parameters, $row ) {
+ global $wgAbuseFilterActions, $wgMainCacheType;
+
+ if ( empty( $wgAbuseFilterActions[$action] ) ) {
+ return '';
+ }
+
+ $readOnlyAttrib = [];
+ $cbReadOnlyAttrib = []; // For checkboxes
+
+ if ( !$this->canEditFilter( $row ) ) {
+ $readOnlyAttrib['readonly'] = 'readonly';
+ $cbReadOnlyAttrib['disabled'] = 'disabled';
+ }
+
+ switch ( $action ) {
+ case 'throttle':
+ // Throttling is only available via object caching
+ if ( $wgMainCacheType === CACHE_NONE ) {
+ return '';
+ }
+ $throttleSettings = Xml::checkLabel(
+ $this->msg( 'abusefilter-edit-action-throttle' )->text(),
+ 'wpFilterActionThrottle',
+ "mw-abusefilter-action-checkbox-$action",
+ $set,
+ [ 'class' => 'mw-abusefilter-action-checkbox' ] + $cbReadOnlyAttrib );
+ $throttleFields = [];
+
+ if ( $set ) {
+ array_shift( $parameters );
+ $throttleRate = explode( ',', $parameters[0] );
+ $throttleCount = $throttleRate[0];
+ $throttlePeriod = $throttleRate[1];
+
+ $throttleGroups = implode( "\n", array_slice( $parameters, 1 ) );
+ } else {
+ $throttleCount = 3;
+ $throttlePeriod = 60;
+
+ $throttleGroups = "user\n";
+ }
+
+ $throttleFields['abusefilter-edit-throttle-count'] =
+ Xml::input( 'wpFilterThrottleCount', 20, $throttleCount, $readOnlyAttrib );
+ $throttleFields['abusefilter-edit-throttle-period'] =
+ $this->msg( 'abusefilter-edit-throttle-seconds' )
+ ->rawParams( Xml::input( 'wpFilterThrottlePeriod', 20, $throttlePeriod,
+ $readOnlyAttrib )
+ )->parse();
+ $throttleFields['abusefilter-edit-throttle-groups'] =
+ Xml::textarea( 'wpFilterThrottleGroups', $throttleGroups . "\n",
+ 40, 5, $readOnlyAttrib );
+ $throttleSettings .=
+ Xml::tags(
+ 'div',
+ [ 'id' => 'mw-abusefilter-throttle-parameters' ],
+ Xml::buildForm( $throttleFields )
+ );
+ return $throttleSettings;
+ case 'warn':
+ global $wgAbuseFilterDefaultWarningMessage;
+ $output = '';
+ $checkbox = Xml::checkLabel(
+ $this->msg( 'abusefilter-edit-action-warn' )->text(),
+ 'wpFilterActionWarn',
+ "mw-abusefilter-action-checkbox-$action",
+ $set,
+ [ 'class' => 'mw-abusefilter-action-checkbox' ] + $cbReadOnlyAttrib );
+ $output .= Xml::tags( 'p', null, $checkbox );
+ if ( $set ) {
+ $warnMsg = $parameters[0];
+ } elseif (
+ $row &&
+ isset( $row->af_group ) && $row->af_group &&
+ isset( $wgAbuseFilterDefaultWarningMessage[$row->af_group] )
+ ) {
+ $warnMsg = $wgAbuseFilterDefaultWarningMessage[$row->af_group];
+ } else {
+ $warnMsg = 'abusefilter-warning';
+ }
+
+ $warnFields['abusefilter-edit-warn-message'] =
+ $this->getExistingSelector( $warnMsg, !empty( $readOnlyAttrib ) );
+ $warnFields['abusefilter-edit-warn-other-label'] =
+ Xml::input(
+ 'wpFilterWarnMessageOther',
+ 45,
+ $warnMsg,
+ [ 'id' => 'mw-abusefilter-warn-message-other' ] + $cbReadOnlyAttrib
+ );
+
+ $previewButton = Xml::element(
+ 'input',
+ [
+ 'type' => 'button',
+ 'id' => 'mw-abusefilter-warn-preview-button',
+ 'value' => $this->msg( 'abusefilter-edit-warn-preview' )->text()
+ ]
+ );
+ $editButton = '';
+ if ( $this->getUser()->isAllowed( 'editinterface' ) ) {
+ $editButton .= ' ' . Xml::element(
+ 'input',
+ [
+ 'type' => 'button',
+ 'id' => 'mw-abusefilter-warn-edit-button',
+ 'value' => $this->msg( 'abusefilter-edit-warn-edit' )->text()
+ ]
+ );
+ }
+ $previewHolder = Xml::element(
+ 'div',
+ [ 'id' => 'mw-abusefilter-warn-preview' ], ''
+ );
+ $warnFields['abusefilter-edit-warn-actions'] =
+ Xml::tags( 'p', null, $previewButton . $editButton ) . "\n$previewHolder";
+ $output .=
+ Xml::tags(
+ 'div',
+ [ 'id' => 'mw-abusefilter-warn-parameters' ],
+ Xml::buildForm( $warnFields )
+ );
+ return $output;
+ case 'tag':
+ if ( $set ) {
+ $tags = $parameters;
+ } else {
+ $tags = [];
+ }
+ $output = '';
+
+ $checkbox = Xml::checkLabel(
+ $this->msg( 'abusefilter-edit-action-tag' )->text(),
+ 'wpFilterActionTag',
+ "mw-abusefilter-action-checkbox-$action",
+ $set,
+ [ 'class' => 'mw-abusefilter-action-checkbox' ] + $cbReadOnlyAttrib
+ );
+ $output .= Xml::tags( 'p', null, $checkbox );
+
+ $tagFields['abusefilter-edit-tag-tag'] =
+ Xml::textarea( 'wpFilterTags', implode( "\n", $tags ), 40, 5, $readOnlyAttrib );
+ $output .=
+ Xml::tags( 'div',
+ [ 'id' => 'mw-abusefilter-tag-parameters' ],
+ Xml::buildForm( $tagFields )
+ );
+ return $output;
+ case 'block':
+ global $wgBlockAllowsUTEdit, $wgAbuseFilterBlockDuration,
+ $wgAbuseFilterAnonBlockDuration;
+
+ if ( $set && count( $parameters ) === 3 ) {
+ // Both blocktalk and custom block durations available
+ $blockTalk = $parameters[0];
+ $defaultAnonDuration = $parameters[1];
+ $defaultUserDuration = $parameters[2];
+ } else {
+ if ( $set && count( $parameters ) === 1 ) {
+ // Only blocktalk available
+ $blockTalk = $parameters[0];
+ }
+ if ( $wgAbuseFilterAnonBlockDuration ) {
+ $defaultAnonDuration = $wgAbuseFilterAnonBlockDuration;
+ } else {
+ $defaultAnonDuration = $wgAbuseFilterBlockDuration;
+ }
+ $defaultUserDuration = $wgAbuseFilterBlockDuration;
+ }
+ $suggestedBlocks = SpecialBlock::getSuggestedDurations();
+ $suggestedBlocks = self::normalizeBlocks( $suggestedBlocks );
+
+ $output = '';
+ $checkbox = Xml::checkLabel(
+ $this->msg( 'abusefilter-edit-action-block' )->text(),
+ 'wpFilterActionBlock',
+ "mw-abusefilter-action-checkbox-block",
+ $set,
+ [ 'class' => 'mw-abusefilter-action-checkbox' ] + $cbReadOnlyAttrib );
+ $output .= Xml::tags( 'p', null, $checkbox );
+ if ( $wgBlockAllowsUTEdit === true ) {
+ $talkCheckbox =
+ Xml::checkLabel(
+ $this->msg( 'abusefilter-edit-action-blocktalk' )->text(),
+ 'wpFilterBlockTalk',
+ 'mw-abusefilter-action-checkbox-blocktalk',
+ isset( $blockTalk ) && $blockTalk == 'blocktalk',
+ [ 'class' => 'mw-abusefilter-action-checkbox' ] + $cbReadOnlyAttrib
+ );
+ }
+
+ $anonDuration = new XmlSelect(
+ 'wpBlockAnonDuration',
+ false,
+ 'default'
+ );
+ $anonDuration->addOptions( $suggestedBlocks );
+
+ $userDuration = new XmlSelect(
+ 'wpBlockUserDuration',
+ false,
+ 'default'
+ );
+ $userDuration->addOptions( $suggestedBlocks );
+
+ // Set defaults
+ $anonDuration->setDefault( $defaultAnonDuration );
+ $userDuration->setDefault( $defaultUserDuration );
+
+ if ( !$this->canEditFilter( $row ) ) {
+ $anonDuration->setAttribute( 'disabled', 'disabled' );
+ $userDuration->setAttribute( 'disabled', 'disabled' );
+ }
+
+ if ( $wgBlockAllowsUTEdit === true ) {
+ $durations['abusefilter-edit-block-options'] = $talkCheckbox;
+ }
+ $durations['abusefilter-edit-block-anon-durations'] = $anonDuration->getHTML();
+ $durations['abusefilter-edit-block-user-durations'] = $userDuration->getHTML();
+
+ $rawOutput = Xml::buildForm( $durations );
+
+ $output .= Xml::tags(
+ 'div',
+ [ 'id' => 'mw-abusefilter-block-parameters' ],
+ $rawOutput
+ );
+
+ return $output;
+
+ default:
+ // Give grep a chance to find the usages:
+ // abusefilter-edit-action-warn, abusefilter-edit-action-disallow
+ // abusefilter-edit-action-blockautopromote
+ // abusefilter-edit-action-degroup, abusefilter-edit-action-throttle
+ // abusefilter-edit-action-rangeblock, abusefilter-edit-action-tag
+ $message = 'abusefilter-edit-action-' . $action;
+ $form_field = 'wpFilterAction' . ucfirst( $action );
+ $status = $set;
+
+ $thisAction = Xml::checkLabel(
+ $this->msg( $message )->text(),
+ $form_field,
+ "mw-abusefilter-action-checkbox-$action",
+ $status,
+ [ 'class' => 'mw-abusefilter-action-checkbox' ] + $cbReadOnlyAttrib
+ );
+ $thisAction = Xml::tags( 'p', null, $thisAction );
+ return $thisAction;
+ }
+ }
+
+ /**
+ * @param string $warnMsg
+ * @param bool $readOnly
+ * @return string
+ */
+ function getExistingSelector( $warnMsg, $readOnly = false ) {
+ $existingSelector = new XmlSelect(
+ 'wpFilterWarnMessage',
+ 'mw-abusefilter-warn-message-existing',
+ $warnMsg == 'abusefilter-warning' ? 'abusefilter-warning' : 'other'
+ );
+
+ $existingSelector->addOption( 'abusefilter-warning' );
+
+ if ( $readOnly ) {
+ $existingSelector->setAttribute( 'disabled', 'disabled' );
+ } else {
+ // Find other messages.
+ $dbr = wfGetDB( DB_REPLICA );
+ $res = $dbr->select(
+ 'page',
+ [ 'page_title' ],
+ [
+ 'page_namespace' => 8,
+ 'page_title LIKE ' . $dbr->addQuotes( 'Abusefilter-warning%' )
+ ],
+ __METHOD__
+ );
+
+ $lang = $this->getLanguage();
+ foreach ( $res as $row ) {
+ if ( $lang->lcfirst( $row->page_title ) == $lang->lcfirst( $warnMsg ) ) {
+ $existingSelector->setDefault( $lang->lcfirst( $warnMsg ) );
+ }
+
+ if ( $row->page_title != 'Abusefilter-warning' ) {
+ $existingSelector->addOption( $lang->lcfirst( $row->page_title ) );
+ }
+ }
+ }
+
+ $existingSelector->addOption( $this->msg( 'abusefilter-edit-warn-other' )->text(), 'other' );
+
+ return $existingSelector->getHTML();
+ }
+
+ /**
+ * @ToDo: Maybe we should also check if global values belong to $durations
+ * and determine the right point to add them if missing.
+ *
+ * @param array $durations
+ * @return array
+ */
+ protected static function normalizeBlocks( $durations ) {
+ global $wgAbuseFilterBlockDuration, $wgAbuseFilterAnonBlockDuration;
+ // We need to have same values since it may happen that ipblocklist
+ // and one (or both) of the global variables use different wording
+ // for the same duration. In such case, when setting the default of
+ // the dropdowns it would fail.
+ foreach ( $durations as &$duration ) {
+ $currentDuration = SpecialBlock::parseExpiryInput( $duration );
+ $anonDuration = SpecialBlock::parseExpiryInput( $wgAbuseFilterAnonBlockDuration );
+ $userDuration = SpecialBlock::parseExpiryInput( $wgAbuseFilterBlockDuration );
+
+ if ( $duration !== $wgAbuseFilterBlockDuration &&
+ $currentDuration === $userDuration ) {
+ $duration = $wgAbuseFilterBlockDuration;
+
+ } elseif ( $duration !== $wgAbuseFilterAnonBlockDuration &&
+ $currentDuration === $anonDuration ) {
+ $duration = $wgAbuseFilterAnonBlockDuration;
+ }
+ }
+
+ return $durations;
+ }
+
+ /**
+ * Loads filter data from the database by ID.
+ * @param int $id The filter's ID number
+ * @return array|null Either an associative array representing the filter,
+ * or NULL if the filter does not exist.
+ */
+ function loadFilterData( $id ) {
+ if ( $id == 'new' ) {
+ $obj = new stdClass;
+ $obj->af_pattern = '';
+ $obj->af_enabled = 1;
+ $obj->af_hidden = 0;
+ $obj->af_global = 0;
+ $obj->af_throttled = 0;
+ return [ $obj, [] ];
+ }
+
+ // Load from master to avoid unintended reversions where there's replication lag.
+ $dbr = $this->getRequest()->wasPosted()
+ ? wfGetDB( DB_MASTER )
+ : wfGetDB( DB_REPLICA );
+
+ // Load certain fields only. This prevents a condition seen on Wikimedia where
+ // a schema change adding a new field caused that extra field to be selected.
+ // Since the selected row may be inserted back into the database, this will cause
+ // an SQL error if, say, one server has the updated schema but another does not.
+ $loadFields = [
+ 'af_id',
+ 'af_pattern',
+ 'af_user',
+ 'af_user_text',
+ 'af_timestamp',
+ 'af_enabled',
+ 'af_comments',
+ 'af_public_comments',
+ 'af_hidden',
+ 'af_hit_count',
+ 'af_throttled',
+ 'af_deleted',
+ 'af_actions',
+ 'af_global',
+ 'af_group',
+ ];
+
+ // Load the main row
+ $row = $dbr->selectRow( 'abuse_filter', $loadFields, [ 'af_id' => $id ], __METHOD__ );
+
+ if ( !isset( $row ) || !isset( $row->af_id ) || !$row->af_id ) {
+ return null;
+ }
+
+ // Load the actions
+ $actions = [];
+ $res = $dbr->select( 'abuse_filter_action',
+ '*',
+ [ 'afa_filter' => $id ],
+ __METHOD__
+ );
+
+ foreach ( $res as $actionRow ) {
+ $thisAction = [];
+ $thisAction['action'] = $actionRow->afa_consequence;
+ $thisAction['parameters'] = array_filter( explode( "\n", $actionRow->afa_parameters ) );
+
+ $actions[$actionRow->afa_consequence] = $thisAction;
+ }
+
+ return [ $row, $actions ];
+ }
+
+ /**
+ * Load filter data to show in the edit view.
+ * Either from the HTTP request or from the filter/history_id given.
+ * The HTTP request always takes precedence.
+ * Includes caching.
+ * @param int $filter The filter ID being requested.
+ * @param int $history_id If any, the history ID being requested.
+ * @return Array with filter data if available, otherwise null.
+ * The first element contains the abuse_filter database row,
+ * the second element is an array of related abuse_filter_action rows.
+ */
+ function loadRequest( $filter, $history_id = null ) {
+ static $row = null;
+ static $actions = null;
+ $request = $this->getRequest();
+
+ if ( !is_null( $actions ) && !is_null( $row ) ) {
+ return [ $row, $actions ];
+ } elseif ( $request->wasPosted() ) {
+ # Nothing, we do it all later
+ } elseif ( $history_id ) {
+ return $this->loadHistoryItem( $history_id );
+ } else {
+ return $this->loadFilterData( $filter );
+ }
+
+ // We need some details like last editor
+ list( $row, $origActions ) = $this->loadFilterData( $filter );
+
+ $row->mOriginalRow = clone $row;
+ $row->mOriginalActions = $origActions;
+
+ // Check for importing
+ $import = $request->getVal( 'wpImportText' );
+ if ( $import ) {
+ $data = FormatJson::decode( $import );
+
+ $importRow = $data->row;
+ $actions = wfObjectToArray( $data->actions );
+
+ $copy = [
+ 'af_public_comments',
+ 'af_pattern',
+ 'af_comments',
+ 'af_deleted',
+ 'af_enabled',
+ 'af_hidden',
+ ];
+
+ foreach ( $copy as $name ) {
+ $row->$name = $importRow->$name;
+ }
+ } else {
+ $textLoads = [
+ 'af_public_comments' => 'wpFilterDescription',
+ 'af_pattern' => 'wpFilterRules',
+ 'af_comments' => 'wpFilterNotes',
+ ];
+
+ foreach ( $textLoads as $col => $field ) {
+ $row->$col = trim( $request->getVal( $field ) );
+ }
+
+ $row->af_group = $request->getVal( 'wpFilterGroup', 'default' );
+
+ $row->af_deleted = $request->getBool( 'wpFilterDeleted' );
+ $row->af_enabled = $request->getBool( 'wpFilterEnabled' ) && !$row->af_deleted;
+ $row->af_hidden = $request->getBool( 'wpFilterHidden' );
+ global $wgAbuseFilterIsCentral;
+ $row->af_global = $request->getBool( 'wpFilterGlobal' ) && $wgAbuseFilterIsCentral;
+
+ // Actions
+ global $wgAbuseFilterActions;
+ $actions = [];
+ foreach ( array_filter( $wgAbuseFilterActions ) as $action => $_ ) {
+ // Check if it's set
+ $enabled = $request->getBool( 'wpFilterAction' . ucfirst( $action ) );
+
+ if ( $enabled ) {
+ $parameters = [];
+
+ if ( $action == 'throttle' ) {
+ // We need to load the parameters
+ $throttleCount = $request->getIntOrNull( 'wpFilterThrottleCount' );
+ $throttlePeriod = $request->getIntOrNull( 'wpFilterThrottlePeriod' );
+ $throttleGroups = explode( "\n",
+ trim( $request->getText( 'wpFilterThrottleGroups' ) ) );
+
+ $parameters[0] = $this->mFilter; // For now, anyway
+ $parameters[1] = "$throttleCount,$throttlePeriod";
+ $parameters = array_merge( $parameters, $throttleGroups );
+ } elseif ( $action == 'warn' ) {
+ $specMsg = $request->getVal( 'wpFilterWarnMessage' );
+
+ if ( $specMsg == 'other' ) {
+ $specMsg = $request->getVal( 'wpFilterWarnMessageOther' );
+ }
+
+ $parameters[0] = $specMsg;
+ } elseif ( $action == 'block' ) {
+ $parameters[0] = $request->getCheck( 'wpFilterBlockTalk' ) ?
+ 'blocktalk' : 'noTalkBlockSet';
+ $parameters[1] = $request->getVal( 'wpBlockAnonDuration' );
+ $parameters[2] = $request->getVal( 'wpBlockUserDuration' );
+ } elseif ( $action == 'tag' ) {
+ $parameters = explode( "\n", trim( $request->getText( 'wpFilterTags' ) ) );
+ }
+
+ $thisAction = [ 'action' => $action, 'parameters' => $parameters ];
+ $actions[$action] = $thisAction;
+ }
+ }
+ }
+
+ $row->af_actions = implode( ',', array_keys( array_filter( $actions ) ) );
+
+ return [ $row, $actions ];
+ }
+
+ /**
+ * Loads historical data in a form that the editor can understand.
+ * @param int $id History ID
+ * @return array|bool False if the history ID is not valid, otherwise array in the usual format:
+ * First element contains the abuse_filter row (as it was).
+ * Second element contains an array of abuse_filter_action rows.
+ */
+ function loadHistoryItem( $id ) {
+ $dbr = wfGetDB( DB_REPLICA );
+
+ // Load the row.
+ $row = $dbr->selectRow( 'abuse_filter_history',
+ '*',
+ [ 'afh_id' => $id ],
+ __METHOD__
+ );
+
+ if ( !$row ) {
+ return false;
+ }
+
+ return AbuseFilter::translateFromHistory( $row );
+ }
+
+ /**
+ * @return null
+ */
+ protected function exposeWarningMessages() {
+ global $wgOut, $wgAbuseFilterDefaultWarningMessage;
+ $wgOut->addJsConfigVars(
+ 'wgAbuseFilterDefaultWarningMessage',
+ $wgAbuseFilterDefaultWarningMessage
+ );
+ }
+}
diff --git a/www/wiki/extensions/AbuseFilter/includes/Views/AbuseFilterViewExamine.php b/www/wiki/extensions/AbuseFilter/includes/Views/AbuseFilterViewExamine.php
new file mode 100644
index 00000000..73cb2d10
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/includes/Views/AbuseFilterViewExamine.php
@@ -0,0 +1,219 @@
+<?php
+
+class AbuseFilterViewExamine extends AbuseFilterView {
+ public static $examineType = null;
+ public static $examineId = null;
+
+ public $mCounter, $mSearchUser, $mSearchPeriodStart, $mSearchPeriodEnd;
+ public $mTestFilter;
+
+ function show() {
+ $out = $this->getOutput();
+ $out->setPageTitle( $this->msg( 'abusefilter-examine' ) );
+ $out->addWikiMsg( 'abusefilter-examine-intro' );
+
+ $this->loadParameters();
+
+ // Check if we've got a subpage
+ if ( count( $this->mParams ) > 1 && is_numeric( $this->mParams[1] ) ) {
+ $this->showExaminerForRC( $this->mParams[1] );
+ } elseif ( count( $this->mParams ) > 2
+ && $this->mParams[1] == 'log'
+ && is_numeric( $this->mParams[2] )
+ ) {
+ $this->showExaminerForLogEntry( $this->mParams[2] );
+ } else {
+ $this->showSearch();
+ }
+ }
+
+ function showSearch() {
+ $RCMaxAge = $this->getConfig()->get( 'RCMaxAge' );
+ $min = wfTimestamp( TS_ISO_8601, time() - $RCMaxAge );
+ $max = wfTimestampNow();
+ $formDescriptor = [
+ 'SearchUser' => [
+ 'label-message' => 'abusefilter-test-user',
+ 'type' => 'user',
+ 'default' => $this->mSearchUser,
+ ],
+ 'SearchPeriodStart' => [
+ 'label-message' => 'abusefilter-test-period-start',
+ 'type' => 'datetime',
+ 'default' => $this->mSearchPeriodStart,
+ 'min' => $min,
+ 'max' => $max,
+ ],
+ 'SearchPeriodEnd' => [
+ 'label-message' => 'abusefilter-test-period-end',
+ 'type' => 'datetime',
+ 'default' => $this->mSearchPeriodEnd,
+ 'min' => $min,
+ 'max' => $max,
+ ],
+ ];
+ $htmlForm = HTMLForm::factory( 'ooui', $formDescriptor, $this->getContext() );
+ $htmlForm->setWrapperLegendMsg( 'abusefilter-examine-legend' )
+ ->addHiddenField( 'submit', 1 )
+ ->setSubmitTextMsg( 'abusefilter-examine-submit' )
+ ->setMethod( 'get' )
+ ->prepareForm()
+ ->displayForm( false );
+
+ if ( $this->mSubmit ) {
+ $this->showResults();
+ }
+ }
+
+ function showResults() {
+ $changesList = new AbuseFilterChangesList( $this->getSkin(), $this->mTestFilter );
+ $output = $changesList->beginRecentChangesList();
+ $this->mCounter = 1;
+
+ $pager = new AbuseFilterExaminePager( $this, $changesList );
+
+ $output .= $pager->getNavigationBar() .
+ $pager->getBody() .
+ $pager->getNavigationBar();
+
+ $output .= $changesList->endRecentChangesList();
+
+ $this->getOutput()->addHTML( $output );
+ }
+
+ function showExaminerForRC( $rcid ) {
+ // Get data
+ $dbr = wfGetDB( DB_REPLICA );
+ $rcQuery = RecentChange::getQueryInfo();
+ $row = $dbr->selectRow(
+ $rcQuery['tables'],
+ $rcQuery['fields'],
+ [ 'rc_id' => $rcid ],
+ __METHOD__,
+ [],
+ $rcQuery['joins']
+ );
+ $out = $this->getOutput();
+ if ( !$row ) {
+ $out->addWikiMsg( 'abusefilter-examine-notfound' );
+ return;
+ }
+
+ if ( !ChangesList::userCan( RecentChange::newFromRow( $row ), Revision::SUPPRESSED_ALL ) ) {
+ $out->addWikiMsg( 'abusefilter-log-details-hidden-implicit' );
+ return;
+ }
+
+ self::$examineType = 'rc';
+ self::$examineId = $rcid;
+
+ $vars = AbuseFilter::getVarsFromRCRow( $row );
+ $out->addJsConfigVars( 'wgAbuseFilterVariables', $vars->dumpAllVars( true ) );
+ $this->showExaminer( $vars );
+ }
+
+ function showExaminerForLogEntry( $logid ) {
+ // Get data
+ $dbr = wfGetDB( DB_REPLICA );
+ $row = $dbr->selectRow(
+ 'abuse_filter_log',
+ [ 'afl_filter', 'afl_deleted', 'afl_var_dump' ],
+ [ 'afl_id' => $logid ],
+ __METHOD__
+ );
+ $out = $this->getOutput();
+
+ if ( !$row ) {
+ $out->addWikiMsg( 'abusefilter-examine-notfound' );
+ return;
+ }
+
+ self::$examineType = 'log';
+ self::$examineId = $logid;
+
+ if ( !SpecialAbuseLog::canSeeDetails( $row->afl_filter ) ) {
+ $out->addWikiMsg( 'abusefilter-log-cannot-see-details' );
+ return;
+ }
+
+ if ( $row->afl_deleted && !SpecialAbuseLog::canSeeHidden() ) {
+ $out->addWikiMsg( 'abusefilter-log-details-hidden' );
+ return;
+ }
+
+ if ( SpecialAbuseLog::isHidden( $row ) === 'implicit' ) {
+ $rev = Revision::newFromId( $row->afl_rev_id );
+ if ( !$rev->userCan( Revision::SUPPRESSED_ALL, $this->getUser() ) ) {
+ $out->addWikiMsg( 'abusefilter-log-details-hidden-implicit' );
+ return;
+ }
+ }
+ $vars = AbuseFilter::loadVarDump( $row->afl_var_dump );
+ $out->addJsConfigVars( 'wgAbuseFilterVariables', $vars->dumpAllVars( true ) );
+ $this->showExaminer( $vars );
+ }
+
+ function showExaminer( $vars ) {
+ $output = $this->getOutput();
+ $output->enableOOUI();
+
+ if ( !$vars ) {
+ $output->addWikiMsg( 'abusefilter-examine-incompatible' );
+ return;
+ }
+
+ if ( $vars instanceof AbuseFilterVariableHolder ) {
+ $vars = $vars->exportAllVars();
+ }
+
+ $html = '';
+
+ $output->addModules( 'ext.abuseFilter.examine' );
+
+ // Add test bit
+ if ( $this->getUser()->isAllowed( 'abusefilter-modify' ) ) {
+ $tester = Xml::tags( 'h2', null, $this->msg( 'abusefilter-examine-test' )->parse() );
+ $tester .= AbuseFilter::buildEditBox( $this->mTestFilter, 'wpTestFilter', false );
+ $tester .= AbuseFilter::buildFilterLoader();
+ $html .= Xml::tags( 'div', [ 'id' => 'mw-abusefilter-examine-editor' ], $tester );
+ $html .= Xml::tags( 'p',
+ null,
+ new OOUI\ButtonInputWidget(
+ [
+ 'label' => $this->msg( 'abusefilter-examine-test-button' )->text(),
+ 'id' => 'mw-abusefilter-examine-test'
+ ]
+ ) .
+ Xml::element( 'div',
+ [
+ 'id' => 'mw-abusefilter-syntaxresult',
+ 'style' => 'display: none;'
+ ], '&#160;'
+ )
+ );
+ }
+
+ // Variable dump
+ $html .= Xml::tags(
+ 'h2',
+ null,
+ $this->msg( 'abusefilter-examine-vars' )->parse()
+ );
+ $html .= AbuseFilter::buildVarDumpTable( $vars, $this->getContext() );
+
+ $output->addHTML( $html );
+ }
+
+ function loadParameters() {
+ $request = $this->getRequest();
+ $this->mSearchPeriodStart = $request->getText( 'wpSearchPeriodStart' );
+ $this->mSearchPeriodEnd = $request->getText( 'wpSearchPeriodEnd' );
+ $this->mSubmit = $request->getCheck( 'submit' );
+ $this->mTestFilter = $request->getText( 'testfilter' );
+
+ // Normalise username
+ $searchUsername = $request->getText( 'wpSearchUser' );
+ $userTitle = Title::newFromText( $searchUsername, NS_USER );
+ $this->mSearchUser = $userTitle ? $userTitle->getText() : '';
+ }
+}
diff --git a/www/wiki/extensions/AbuseFilter/includes/Views/AbuseFilterViewHistory.php b/www/wiki/extensions/AbuseFilter/includes/Views/AbuseFilterViewHistory.php
new file mode 100644
index 00000000..f98241c0
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/includes/Views/AbuseFilterViewHistory.php
@@ -0,0 +1,85 @@
+<?php
+
+class AbuseFilterViewHistory extends AbuseFilterView {
+ function __construct( $page, $params ) {
+ parent::__construct( $page, $params );
+ $this->mFilter = $page->mFilter;
+ }
+
+ function show() {
+ $out = $this->getOutput();
+ $filter = $this->getRequest()->getText( 'filter' ) ?: $this->mFilter;
+
+ if ( $filter ) {
+ $out->setPageTitle( $this->msg( 'abusefilter-history' )->numParams( $filter ) );
+ } else {
+ $out->setPageTitle( $this->msg( 'abusefilter-filter-log' ) );
+ }
+
+ # Check perms. abusefilter-modify is a superset of abusefilter-view-private
+ if ( $filter && AbuseFilter::filterHidden( $filter )
+ && !$this->getUser()->isAllowedAny( 'abusefilter-modify', 'abusefilter-view-private' )
+ ) {
+ $out->addWikiMsg( 'abusefilter-history-error-hidden' );
+ return;
+ }
+
+ # Useful links
+ $links = [];
+ if ( $filter ) {
+ $links['abusefilter-history-backedit'] = $this->getTitle( $filter );
+ }
+
+ foreach ( $links as $msg => $title ) {
+ $links[$msg] = $this->linkRenderer->makeLink(
+ $title,
+ new HtmlArmor( $this->msg( $msg )->parse() )
+ );
+ }
+
+ $backlinks = $this->getLanguage()->pipeList( $links );
+ $out->addHTML( Xml::tags( 'p', null, $backlinks ) );
+
+ # For user
+ $user = User::getCanonicalName( $this->getRequest()->getText( 'user' ), 'valid' );
+ if ( $user ) {
+ $out->addSubtitle(
+ $this->msg(
+ 'abusefilter-history-foruser',
+ Linker::userLink( 1 /* We don't really need to get a user ID */, $user ),
+ $user // For GENDER
+ )->text()
+ );
+ }
+
+ $formDescriptor = [
+ 'user' => [
+ 'type' => 'user',
+ 'name' => 'user',
+ 'default' => $user,
+ 'size' => '45',
+ 'label-message' => 'abusefilter-history-select-user'
+ ],
+ 'filter' => [
+ 'type' => 'text',
+ 'name' => 'filter',
+ 'default' => $filter,
+ 'size' => '45',
+ 'label-message' => 'abusefilter-history-select-filter'
+ ],
+ ];
+
+ $htmlForm = HTMLForm::factory( 'ooui', $formDescriptor, $this->getContext() );
+ $htmlForm->setSubmitTextMsg( 'abusefilter-history-select-submit' )
+ ->setWrapperLegendMsg( 'abusefilter-history-select-legend' )
+ ->setAction( $this->getTitle( 'history' )->getLocalURL() )
+ ->setMethod( 'get' )
+ ->prepareForm()
+ ->displayForm( false );
+
+ $pager = new AbuseFilterHistoryPager( $filter, $this, $user, $this->linkRenderer );
+ $table = $pager->getBody();
+
+ $out->addHTML( $pager->getNavigationBar() . $table . $pager->getNavigationBar() );
+ }
+}
diff --git a/www/wiki/extensions/AbuseFilter/includes/Views/AbuseFilterViewImport.php b/www/wiki/extensions/AbuseFilter/includes/Views/AbuseFilterViewImport.php
new file mode 100644
index 00000000..6bd4c269
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/includes/Views/AbuseFilterViewImport.php
@@ -0,0 +1,24 @@
+<?php
+
+class AbuseFilterViewImport extends AbuseFilterView {
+ function show() {
+ $out = $this->getOutput();
+ if ( !$this->getUser()->isAllowed( 'abusefilter-modify' ) ) {
+ $out->addWikiMsg( 'abusefilter-edit-notallowed' );
+ return;
+ }
+ $url = SpecialPage::getTitleFor( 'AbuseFilter', 'new' )->getFullURL();
+
+ $out->addWikiMsg( 'abusefilter-import-intro' );
+
+ $formDescriptor = [
+ 'ImportText' => [
+ 'type' => 'textarea',
+ ]
+ ];
+ $htmlform = HTMLForm::factory( 'ooui', $formDescriptor, $this->getContext() )
+ ->setSubmitTextMsg( 'abusefilter-import-submit' )
+ ->setAction( $url )
+ ->show();
+ }
+}
diff --git a/www/wiki/extensions/AbuseFilter/includes/Views/AbuseFilterViewList.php b/www/wiki/extensions/AbuseFilter/includes/Views/AbuseFilterViewList.php
new file mode 100644
index 00000000..715fa536
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/includes/Views/AbuseFilterViewList.php
@@ -0,0 +1,267 @@
+<?php
+
+/**
+ * The default view used in Special:AbuseFilter
+ */
+class AbuseFilterViewList extends AbuseFilterView {
+ function show() {
+ global $wgAbuseFilterCentralDB, $wgAbuseFilterIsCentral;
+
+ $out = $this->getOutput();
+ $request = $this->getRequest();
+
+ // Status info...
+ $this->showStatus();
+
+ $out->addWikiMsg( 'abusefilter-intro' );
+
+ // New filter button
+ if ( $this->canEdit() ) {
+ $out->enableOOUI();
+ $link = new OOUI\ButtonWidget( [
+ 'label' => $this->msg( 'abusefilter-new' )->text(),
+ 'href' => $this->getTitle( 'new' )->getFullURL(),
+ ] );
+ $out->addHTML( $link );
+ }
+
+ // Options.
+ $conds = [];
+ $deleted = $request->getVal( 'deletedfilters' );
+ $hidedisabled = $request->getBool( 'hidedisabled' );
+ $defaultscope = 'all';
+ if ( isset( $wgAbuseFilterCentralDB ) && !$wgAbuseFilterIsCentral ) {
+ // Show on remote wikis as default only local filters
+ $defaultscope = 'local';
+ }
+ $scope = $request->getVal( 'rulescope', $defaultscope );
+
+ $searchEnabled = $this->canViewPrivate() && !( isset( $wgAbuseFilterCentralDB ) &&
+ !$wgAbuseFilterIsCentral && $scope == 'global' );
+
+ if ( $searchEnabled ) {
+ $querypattern = $request->getVal( 'querypattern' );
+ $searchmode = $request->getVal( 'searchoption', 'LIKE' );
+ } else {
+ $querypattern = '';
+ $searchmode = '';
+ }
+
+ if ( $deleted == 'show' ) {
+ # Nothing
+ } elseif ( $deleted == 'only' ) {
+ $conds['af_deleted'] = 1;
+ } else { # hide, or anything else.
+ $conds['af_deleted'] = 0;
+ $deleted = 'hide';
+ }
+ if ( $hidedisabled ) {
+ $conds['af_deleted'] = 0;
+ $conds['af_enabled'] = 1;
+ }
+
+ if ( $scope == 'local' ) {
+ $conds['af_global'] = 0;
+ } elseif ( $scope == 'global' ) {
+ $conds['af_global'] = 1;
+ }
+
+ $dbr = wfGetDB( DB_REPLICA );
+
+ if ( $querypattern !== '' ) {
+ if ( $searchmode !== 'LIKE' ) {
+ // Check regex pattern validity
+ Wikimedia\suppressWarnings();
+ $validreg = preg_match( '/' . $querypattern . '/', null );
+ Wikimedia\restoreWarnings();
+
+ if ( $validreg === false ) {
+ $out->wrapWikiMsg(
+ '<div class="errorbox">$1</div>',
+ 'abusefilter-list-regexerror'
+ );
+ $this->showList(
+ [ 'af_deleted' => 0 ],
+ compact( 'deleted', 'hidedisabled', 'querypattern', 'searchmode', 'scope', 'searchEnabled' )
+ );
+ return;
+ }
+ if ( $searchmode === 'RLIKE' ) {
+ $conds[] = 'af_pattern RLIKE ' .
+ $dbr->addQuotes( $querypattern );
+ } else {
+ $conds[] = 'LOWER( CAST( af_pattern AS char ) ) RLIKE ' .
+ strtolower( $dbr->addQuotes( $querypattern ) );
+ }
+ } else {
+ // Build like query escaping tokens and encapsulating in % to search everywhere
+ $conds[] = 'LOWER( CAST( af_pattern AS char ) ) ' .
+ $dbr->buildLike(
+ $dbr->anyString(),
+ strtolower( $querypattern ),
+ $dbr->anyString()
+ );
+ }
+ }
+
+ $this->showList(
+ $conds,
+ compact( 'deleted', 'hidedisabled', 'querypattern', 'searchmode', 'scope', 'searchEnabled' )
+ );
+ }
+
+ function showList( $conds = [ 'af_deleted' => 0 ], $optarray = [] ) {
+ global $wgAbuseFilterCentralDB, $wgAbuseFilterIsCentral;
+
+ $this->getOutput()->addHTML(
+ Xml::element( 'h2', null, $this->msg( 'abusefilter-list' )->parse() )
+ );
+
+ $deleted = $optarray['deleted'];
+ $hidedisabled = $optarray['hidedisabled'];
+ $scope = $optarray['scope'];
+ $searchEnabled = $optarray['searchEnabled'];
+ $querypattern = $optarray['querypattern'];
+ $searchmode = $optarray['searchmode'];
+
+ if ( isset( $wgAbuseFilterCentralDB ) && !$wgAbuseFilterIsCentral && $scope == 'global' ) {
+ $pager = new GlobalAbuseFilterPager(
+ $this,
+ $conds,
+ $this->linkRenderer
+ );
+ } else {
+ $pager = new AbuseFilterPager(
+ $this,
+ $conds,
+ $this->linkRenderer,
+ [ $querypattern, $searchmode ]
+ );
+ }
+
+ # Options form
+ $formDescriptor = [];
+ $formDescriptor['deletedfilters'] = [
+ 'name' => 'deletedfilters',
+ 'type' => 'radio',
+ 'flatlist' => true,
+ 'label-message' => 'abusefilter-list-options-deleted',
+ 'options-messages' => [
+ 'abusefilter-list-options-deleted-show' => 'show',
+ 'abusefilter-list-options-deleted-hide' => 'hide',
+ 'abusefilter-list-options-deleted-only' => 'only',
+ ],
+ 'default' => $deleted,
+ ];
+
+ if ( isset( $wgAbuseFilterCentralDB ) ) {
+ $optionsMsg = [
+ 'abusefilter-list-options-scope-local' => 'local',
+ 'abusefilter-list-options-scope-global' => 'global',
+ ];
+ if ( $wgAbuseFilterIsCentral ) {
+ // For central wiki: add third scope option
+ $optionsMsg['abusefilter-list-options-scope-all'] = 'all';
+ }
+ $formDescriptor['rulescope'] = [
+ 'name' => 'rulescope',
+ 'type' => 'radio',
+ 'flatlist' => true,
+ 'label-message' => 'abusefilter-list-options-scope',
+ 'options-messages' => $optionsMsg,
+ 'default' => $scope,
+ ];
+ }
+
+ $formDescriptor['info'] = [
+ 'type' => 'info',
+ 'default' => $this->msg( 'abusefilter-list-options-disabled' )->parse(),
+ ];
+
+ $formDescriptor['hidedisabled'] = [
+ 'name' => 'hidedisabled',
+ 'type' => 'check',
+ 'label-message' => 'abusefilter-list-options-hidedisabled',
+ 'selected' => $hidedisabled,
+ ];
+
+ // ToDo: Since this is only for saving space, we should convert it
+ // to use a 'hide-if'
+ if ( $searchEnabled ) {
+ $formDescriptor['querypattern'] = [
+ 'name' => 'querypattern',
+ 'type' => 'text',
+ 'label-message' => 'abusefilter-list-options-searchfield',
+ 'placeholder' => $this->msg( 'abusefilter-list-options-searchpattern' )->text(),
+ 'default' => $querypattern
+ ];
+
+ $formDescriptor['searchoption'] = [
+ 'name' => 'searchoption',
+ 'type' => 'radio',
+ 'flatlist' => true,
+ 'label-message' => 'abusefilter-list-options-searchoptions',
+ 'options-messages' => [
+ 'abusefilter-list-options-search-like' => 'LIKE',
+ 'abusefilter-list-options-search-rlike' => 'RLIKE',
+ 'abusefilter-list-options-search-irlike' => 'IRLIKE',
+ ],
+ 'default' => $searchmode
+ ];
+ }
+
+ $formDescriptor['limit'] = [
+ 'name' => 'limit',
+ 'type' => 'select',
+ 'label-message' => 'abusefilter-list-limit',
+ 'options' => $pager->getLimitSelectList(),
+ 'default' => $pager->getLimit(),
+ ];
+
+ HTMLForm::factory( 'ooui', $formDescriptor, $this->getContext() )
+ ->addHiddenField( 'title', $this->getTitle()->getPrefixedDBkey() )
+ ->setAction( $this->getTitle()->getFullURL() )
+ ->setWrapperLegendMsg( 'abusefilter-list-options' )
+ ->setSubmitTextMsg( 'abusefilter-list-options-submit' )
+ ->setMethod( 'get' )
+ ->prepareForm()
+ ->displayForm( false );
+
+ $output =
+ $pager->getNavigationBar() .
+ $pager->getBody() .
+ $pager->getNavigationBar();
+
+ $this->getOutput()->addHTML( $output );
+ }
+
+ function showStatus() {
+ global $wgAbuseFilterConditionLimit, $wgAbuseFilterValidGroups;
+
+ $stash = ObjectCache::getMainStashInstance();
+ $overflow_count = (int)$stash->get( AbuseFilter::filterLimitReachedKey() );
+ $match_count = (int)$stash->get( AbuseFilter::filterMatchesKey() );
+ $total_count = 0;
+ foreach ( $wgAbuseFilterValidGroups as $group ) {
+ $total_count += (int)$stash->get( AbuseFilter::filterUsedKey( $group ) );
+ }
+
+ if ( $total_count > 0 ) {
+ $overflow_percent = sprintf( "%.2f", 100 * $overflow_count / $total_count );
+ $match_percent = sprintf( "%.2f", 100 * $match_count / $total_count );
+
+ $status = $this->msg( 'abusefilter-status' )
+ ->numParams(
+ $total_count,
+ $overflow_count,
+ $overflow_percent,
+ $wgAbuseFilterConditionLimit,
+ $match_count,
+ $match_percent
+ )->parse();
+
+ $status = Xml::tags( 'div', [ 'class' => 'mw-abusefilter-status' ], $status );
+ $this->getOutput()->addHTML( $status );
+ }
+ }
+}
diff --git a/www/wiki/extensions/AbuseFilter/includes/Views/AbuseFilterViewRevert.php b/www/wiki/extensions/AbuseFilter/includes/Views/AbuseFilterViewRevert.php
new file mode 100644
index 00000000..ef3773d7
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/includes/Views/AbuseFilterViewRevert.php
@@ -0,0 +1,299 @@
+<?php
+
+class AbuseFilterViewRevert extends AbuseFilterView {
+ public $origPeriodStart, $origPeriodEnd, $mPeriodStart, $mPeriodEnd;
+ public $mReason;
+
+ function show() {
+ $lang = $this->getLanguage();
+ $filter = $this->mPage->mFilter;
+
+ $user = $this->getUser();
+ $out = $this->getOutput();
+
+ if ( !$user->isAllowed( 'abusefilter-revert' ) ) {
+ throw new PermissionsError( 'abusefilter-revert' );
+ }
+
+ $this->loadParameters();
+
+ if ( $this->attemptRevert() ) {
+ return;
+ }
+
+ $out->addWikiMsg( 'abusefilter-revert-intro', Message::numParam( $filter ) );
+ $out->setPageTitle( $this->msg( 'abusefilter-revert-title' )->numParams( $filter ) );
+
+ // First, the search form. Limit dates to avoid huge queries
+ $RCMaxAge = $this->getConfig()->get( 'RCMaxAge' );
+ $min = wfTimestamp( TS_ISO_8601, time() - $RCMaxAge );
+ $max = wfTimestampNow();
+ $filterLink =
+ $this->linkRenderer->makeLink(
+ SpecialPage::getTitleFor( 'AbuseFilter', intval( $filter ) ),
+ $lang->formatNum( intval( $filter ) )
+ );
+ $searchFields = [];
+ $searchFields['filterid'] = [
+ 'type' => 'info',
+ 'default' => $filterLink,
+ 'raw' => true,
+ 'label-message' => 'abusefilter-revert-filter'
+ ];
+ $searchFields['periodstart'] = [
+ 'type' => 'datetime',
+ 'name' => 'wpPeriodStart',
+ 'default' => $this->origPeriodStart,
+ 'label-message' => 'abusefilter-revert-periodstart',
+ 'min' => $min,
+ 'max' => $max
+ ];
+ $searchFields['periodend'] = [
+ 'type' => 'datetime',
+ 'name' => 'wpPeriodEnd',
+ 'default' => $this->origPeriodEnd,
+ 'label-message' => 'abusefilter-revert-periodend',
+ 'min' => $min,
+ 'max' => $max
+ ];
+
+ HTMLForm::factory( 'ooui', $searchFields, $this->getContext() )
+ ->addHiddenField( 'submit', 1 )
+ ->setAction( $this->getTitle( "revert/$filter" )->getLocalURL() )
+ ->setWrapperLegendMsg( 'abusefilter-revert-search-legend' )
+ ->setSubmitTextMsg( 'abusefilter-revert-search' )
+ ->setMethod( 'post' )
+ ->prepareForm()
+ ->displayForm( false );
+
+ if ( $this->mSubmit ) {
+ // Add a summary of everything that will be reversed.
+ $out->addWikiMsg( 'abusefilter-revert-preview-intro' );
+
+ // Look up all of them.
+ $results = $this->doLookup();
+ $list = [];
+
+ foreach ( $results as $result ) {
+ $displayActions = array_map(
+ [ 'AbuseFilter', 'getActionDisplay' ],
+ $result['actions'] );
+
+ $msg = $this->msg( 'abusefilter-revert-preview-item' )
+ ->rawParams(
+ $lang->timeanddate( $result['timestamp'], true ),
+ Linker::userLink( $result['userid'], $result['user'] ),
+ $result['action'],
+ $this->linkRenderer->makeLink( $result['title'] ),
+ $lang->commaList( $displayActions ),
+ $this->linkRenderer->makeLink(
+ SpecialPage::getTitleFor( 'AbuseLog' ),
+ $this->msg( 'abusefilter-log-detailslink' )->text(),
+ [],
+ [ 'details' => $result['id'] ]
+ )
+ )->params( $result['user'] )->parse();
+ $list[] = Xml::tags( 'li', null, $msg );
+ }
+
+ $out->addHTML( Xml::tags( 'ul', null, implode( "\n", $list ) ) );
+
+ // Add a button down the bottom.
+ $confirmForm = [];
+ $confirmForm['edittoken'] = [
+ 'type' => 'hidden',
+ 'name' => 'editToken',
+ 'default' => $user->getEditToken( "abusefilter-revert-$filter" )
+ ];
+ $confirmForm['title'] = [
+ 'type' => 'hidden',
+ 'name' => 'title',
+ 'default' => $this->getTitle( "revert/$filter" )->getPrefixedDBkey()
+ ];
+ $confirmForm['wpPeriodStart'] = [
+ 'type' => 'hidden',
+ 'name' => 'wpPeriodStart',
+ 'default' => $this->origPeriodStart
+ ];
+ $confirmForm['wpPeriodEnd'] = [
+ 'type' => 'hidden',
+ 'name' => 'wpPeriodEnd',
+ 'default' => $this->origPeriodEnd
+ ];
+ $confirmForm['reason'] = [
+ 'type' => 'text',
+ 'label-message' => 'abusefilter-revert-reasonfield',
+ 'name' => 'wpReason',
+ 'id' => 'wpReason',
+ ];
+ HTMLForm::factory( 'ooui', $confirmForm, $this->getContext() )
+ ->setAction( $this->getTitle( "revert/$filter" )->getLocalURL() )
+ ->setWrapperLegendMsg( 'abusefilter-revert-confirm-legend' )
+ ->setSubmitTextMsg( 'abusefilter-revert-confirm' )
+ ->setMethod( 'post' )
+ ->prepareForm()
+ ->displayForm( false );
+
+ }
+ }
+
+ function doLookup() {
+ $periodStart = $this->mPeriodStart;
+ $periodEnd = $this->mPeriodEnd;
+ $filter = $this->mPage->mFilter;
+
+ $conds = [ 'afl_filter' => $filter ];
+
+ $dbr = wfGetDB( DB_REPLICA );
+
+ if ( $periodStart ) {
+ $conds[] = 'afl_timestamp>' . $dbr->addQuotes( $dbr->timestamp( $periodStart ) );
+ }
+ if ( $periodEnd ) {
+ $conds[] = 'afl_timestamp<' . $dbr->addQuotes( $dbr->timestamp( $periodEnd ) );
+ }
+
+ // Database query.
+ $res = $dbr->select( 'abuse_filter_log', '*', $conds, __METHOD__ );
+
+ $results = [];
+ foreach ( $res as $row ) {
+ // Don't revert if there was no action, or the action was global
+ if ( !$row->afl_actions || $row->afl_wiki != null ) {
+ continue;
+ }
+
+ $actions = explode( ',', $row->afl_actions );
+ $reversibleActions = [ 'block', 'blockautopromote', 'degroup' ];
+ $currentReversibleActions = array_intersect( $actions, $reversibleActions );
+ if ( count( $currentReversibleActions ) ) {
+ $results[] = [
+ 'id' => $row->afl_id,
+ 'actions' => $currentReversibleActions,
+ 'user' => $row->afl_user_text,
+ 'userid' => $row->afl_user,
+ 'vars' => AbuseFilter::loadVarDump( $row->afl_var_dump ),
+ 'title' => Title::makeTitle( $row->afl_namespace, $row->afl_title ),
+ 'action' => $row->afl_action,
+ 'timestamp' => $row->afl_timestamp
+ ];
+ }
+ }
+
+ return $results;
+ }
+
+ function loadParameters() {
+ $request = $this->getRequest();
+
+ $this->origPeriodStart = $request->getText( 'wpPeriodStart' );
+ $this->mPeriodStart = strtotime( $this->origPeriodStart );
+ $this->origPeriodEnd = $request->getText( 'wpPeriodEnd' );
+ $this->mPeriodEnd = strtotime( $this->origPeriodEnd );
+ $this->mSubmit = $request->getVal( 'submit' );
+ $this->mReason = $request->getVal( 'wpReason' );
+ }
+
+ function attemptRevert() {
+ $filter = $this->mPage->mFilter;
+ $token = $this->getRequest()->getVal( 'editToken' );
+ if ( !$this->getUser()->matchEditToken( $token, "abusefilter-revert-$filter" ) ) {
+ return false;
+ }
+
+ $results = $this->doLookup();
+ foreach ( $results as $result ) {
+ $actions = $result['actions'];
+ foreach ( $actions as $action ) {
+ $this->revertAction( $action, $result );
+ }
+ }
+ $this->getOutput()->wrapWikiMsg(
+ '<p class="success">$1</p>',
+ [
+ 'abusefilter-revert-success',
+ $filter,
+ $this->getLanguage()->formatNum( $filter )
+ ]
+ );
+
+ return true;
+ }
+
+ /**
+ * @param string $action
+ * @param array $result
+ * @return bool
+ * @throws MWException
+ */
+ function revertAction( $action, $result ) {
+ switch ( $action ) {
+ case 'block':
+ $block = Block::newFromTarget( $result['user'] );
+ if ( !( $block && $block->getBy() == AbuseFilter::getFilterUser()->getId() ) ) {
+ // Not blocked by abuse filter
+ return false;
+ }
+ $block->delete();
+ $logEntry = new ManualLogEntry( 'block', 'unblock' );
+ $logEntry->setTarget( Title::makeTitle( NS_USER, $result['user'] ) );
+ $logEntry->setComment(
+ $this->msg(
+ 'abusefilter-revert-reason', $this->mPage->mFilter, $this->mReason
+ )->inContentLanguage()->text()
+ );
+ $logEntry->setPerformer( $this->getUser() );
+ $logEntry->publish( $logEntry->insert() );
+ return true;
+ case 'blockautopromote':
+ ObjectCache::getMainStashInstance()->delete(
+ AbuseFilter::autoPromoteBlockKey( User::newFromId( $result['userid'] ) )
+ );
+ return true;
+ case 'degroup':
+ // Pull the user's groups from the vars.
+ $oldGroups = $result['vars']['USER_GROUPS'];
+ $oldGroups = explode( ',', $oldGroups );
+ $oldGroups = array_diff(
+ $oldGroups,
+ array_intersect( $oldGroups, User::getImplicitGroups() )
+ );
+
+ $rows = [];
+ foreach ( $oldGroups as $group ) {
+ $rows[] = [
+ 'ug_user' => $result['userid'],
+ 'ug_group' => $group
+ ];
+ }
+
+ // Cheat a little bit. User::addGroup repeatedly is too slow.
+ $user = User::newFromId( $result['userid'] );
+ $currentGroups = $user->getGroups();
+ $newGroups = array_merge( $oldGroups, $currentGroups );
+
+ // Don't do anything if there are no groups to add.
+ if ( !count( array_diff( $newGroups, $currentGroups ) ) ) {
+ return false;
+ }
+
+ $dbw = wfGetDB( DB_MASTER );
+ $dbw->insert( 'user_groups', $rows, __METHOD__, [ 'IGNORE' ] );
+ $user->invalidateCache();
+
+ $log = new LogPage( 'rights' );
+ $log->addEntry( 'rights', $user->getUserPage(),
+ $this->msg(
+ 'abusefilter-revert-reason',
+ $this->mPage->mFilter,
+ $this->mReason
+ )->inContentLanguage()->text(),
+ [ implode( ',', $currentGroups ), implode( ',', $newGroups ) ]
+ );
+
+ return true;
+ }
+
+ throw new MWException( 'Invalid action' . $action );
+ }
+}
diff --git a/www/wiki/extensions/AbuseFilter/includes/Views/AbuseFilterViewTestBatch.php b/www/wiki/extensions/AbuseFilter/includes/Views/AbuseFilterViewTestBatch.php
new file mode 100644
index 00000000..47c4be84
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/includes/Views/AbuseFilterViewTestBatch.php
@@ -0,0 +1,207 @@
+<?php
+
+class AbuseFilterViewTestBatch extends AbuseFilterView {
+ // Hard-coded for now.
+ protected static $mChangeLimit = 100;
+
+ public $mShowNegative, $mTestPeriodStart, $mTestPeriodEnd, $mTestPage;
+ public $mTestUser;
+
+ function show() {
+ $out = $this->getOutput();
+
+ AbuseFilter::disableConditionLimit();
+
+ if ( !$this->getUser()->isAllowed( 'abusefilter-modify' ) ) {
+ $out->addWikiMsg( 'abusefilter-mustbeeditor' );
+ return;
+ }
+
+ $this->loadParameters();
+
+ $out->setPageTitle( $this->msg( 'abusefilter-test' ) );
+ $out->addWikiMsg( 'abusefilter-test-intro', self::$mChangeLimit );
+ $out->enableOOUI();
+
+ $output = '';
+ $output .=
+ AbuseFilter::buildEditBox(
+ $this->mFilter,
+ 'wpTestFilter',
+ true,
+ true,
+ true
+ ) . "\n";
+
+ $output .= AbuseFilter::buildFilterLoader();
+ $output = Xml::tags( 'div', [ 'id' => 'mw-abusefilter-test-editor' ], $output );
+
+ $RCMaxAge = $this->getConfig()->get( 'RCMaxAge' );
+ $min = wfTimestamp( TS_ISO_8601, time() - $RCMaxAge );
+ $max = wfTimestampNow();
+
+ // Search form
+ $formFields = [];
+ $formFields['wpTestUser'] = [
+ 'name' => 'wpTestUser',
+ 'type' => 'user',
+ 'ipallowed' => true,
+ 'label-message' => 'abusefilter-test-user',
+ 'default' => $this->mTestUser
+ ];
+ $formFields['wpTestPeriodStart'] = [
+ 'name' => 'wpTestPeriodStart',
+ 'type' => 'datetime',
+ 'label-message' => 'abusefilter-test-period-start',
+ 'default' => $this->mTestPeriodStart,
+ 'min' => $min,
+ 'max' => $max
+ ];
+ $formFields['wpTestPeriodEnd'] = [
+ 'name' => 'wpTestPeriodEnd',
+ 'type' => 'datetime',
+ 'label-message' => 'abusefilter-test-period-end',
+ 'default' => $this->mTestPeriodEnd,
+ 'min' => $min,
+ 'max' => $max
+ ];
+ $formFields['wpTestPage'] = [
+ 'name' => 'wpTestPage',
+ 'type' => 'title',
+ 'label-message' => 'abusefilter-test-page',
+ 'default' => $this->mTestPage,
+ 'creatable' => true
+ ];
+ $formFields['wpShowNegative'] = [
+ 'name' => 'wpShowNegative',
+ 'type' => 'check',
+ 'label-message' => 'abusefilter-test-shownegative',
+ 'selected' => $this->mShowNegative
+ ];
+
+ $htmlForm = HTMLForm::factory( 'ooui', $formFields, $this->getContext() )
+ ->addHiddenField( 'title', $this->getTitle( 'test' )->getPrefixedDBkey() )
+ ->setId( 'wpFilterForm' )
+ ->setWrapperLegendMsg( 'abusefilter-list-options' )
+ ->setAction( $this->getTitle( 'test' )->getLocalURL() )
+ ->setSubmitTextMsg( 'abusefilter-test-submit' )
+ ->setMethod( 'post' )
+ ->prepareForm();
+ $htmlForm = $htmlForm->getHTML( $htmlForm );
+
+ $output = Xml::fieldset( $this->msg( 'abusefilter-test-legend' )->text(), $output . $htmlForm );
+ $out->addHTML( $output );
+
+ if ( $this->getRequest()->wasPosted() ) {
+ $this->doTest();
+ }
+ }
+
+ /**
+ * @fixme this is similar to AbuseFilterExaminePager::getQueryInfo
+ */
+ function doTest() {
+ // Quick syntax check.
+ $out = $this->getOutput();
+ $result = AbuseFilter::checkSyntax( $this->mFilter );
+ if ( $result !== true ) {
+ $out->addWikiMsg( 'abusefilter-test-syntaxerr' );
+ return;
+ }
+ $dbr = wfGetDB( DB_REPLICA );
+
+ $conds = [];
+
+ if ( (string)$this->mTestUser !== '' ) {
+ $conds[] = ActorMigration::newMigration()->getWhere(
+ $dbr, 'rc_user', User::newFromName( $this->mTestUser, false )
+ )['conds'];
+ }
+
+ if ( $this->mTestPeriodStart ) {
+ $conds[] = 'rc_timestamp >= ' .
+ $dbr->addQuotes( $dbr->timestamp( strtotime( $this->mTestPeriodStart ) ) );
+ }
+ if ( $this->mTestPeriodEnd ) {
+ $conds[] = 'rc_timestamp <= ' .
+ $dbr->addQuotes( $dbr->timestamp( strtotime( $this->mTestPeriodEnd ) ) );
+ }
+ if ( $this->mTestPage ) {
+ $title = Title::newFromText( $this->mTestPage );
+ if ( $title instanceof Title ) {
+ $conds['rc_namespace'] = $title->getNamespace();
+ $conds['rc_title'] = $title->getDBkey();
+ } else {
+ $out->addWikiMsg( 'abusefilter-test-badtitle' );
+ return;
+ }
+ }
+
+ $conds[] = $this->buildTestConditions( $dbr );
+
+ // Get our ChangesList
+ $changesList = new AbuseFilterChangesList( $this->getSkin(), $this->mFilter );
+ $output = $changesList->beginRecentChangesList();
+
+ $rcQuery = RecentChange::getQueryInfo();
+ $res = $dbr->select(
+ $rcQuery['tables'],
+ $rcQuery['fields'],
+ array_filter( $conds ),
+ __METHOD__,
+ [ 'LIMIT' => self::$mChangeLimit, 'ORDER BY' => 'rc_timestamp desc' ],
+ $rcQuery['joins']
+ );
+
+ $counter = 1;
+
+ foreach ( $res as $row ) {
+ $vars = AbuseFilter::getVarsFromRCRow( $row );
+
+ if ( !$vars ) {
+ continue;
+ }
+
+ $result = AbuseFilter::checkConditions( $this->mFilter, $vars );
+
+ if ( $result || $this->mShowNegative ) {
+ // Stash result in RC item
+ $rc = RecentChange::newFromRow( $row );
+ $rc->filterResult = $result;
+ $rc->counter = $counter++;
+ $output .= $changesList->recentChangesLine( $rc, false );
+ }
+ }
+
+ $output .= $changesList->endRecentChangesList();
+
+ $out->addHTML( $output );
+ }
+
+ function loadParameters() {
+ $request = $this->getRequest();
+
+ $this->mFilter = $request->getText( 'wpTestFilter' );
+ $this->mShowNegative = $request->getBool( 'wpShowNegative' );
+ $testUsername = $request->getText( 'wpTestUser' );
+ $this->mTestPeriodEnd = $request->getText( 'wpTestPeriodEnd' );
+ $this->mTestPeriodStart = $request->getText( 'wpTestPeriodStart' );
+ $this->mTestPage = $request->getText( 'wpTestPage' );
+
+ if ( !$this->mFilter
+ && count( $this->mParams ) > 1
+ && is_numeric( $this->mParams[1] )
+ ) {
+ $dbr = wfGetDB( DB_REPLICA );
+ $this->mFilter = $dbr->selectField( 'abuse_filter',
+ 'af_pattern',
+ [ 'af_id' => $this->mParams[1] ],
+ __METHOD__
+ );
+ }
+
+ // Normalise username
+ $userTitle = Title::newFromText( $testUsername, NS_USER );
+ $this->mTestUser = $userTitle ? $userTitle->getText() : null;
+ }
+}
diff --git a/www/wiki/extensions/AbuseFilter/includes/Views/AbuseFilterViewTools.php b/www/wiki/extensions/AbuseFilter/includes/Views/AbuseFilterViewTools.php
new file mode 100644
index 00000000..cff4b22f
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/includes/Views/AbuseFilterViewTools.php
@@ -0,0 +1,56 @@
+<?php
+
+class AbuseFilterViewTools extends AbuseFilterView {
+ function show() {
+ $out = $this->getOutput();
+ $user = $this->getUser();
+ $request = $this->getRequest();
+
+ if ( !$user->isAllowed( 'abusefilter-modify' ) ) {
+ $out->addWikiMsg( 'abusefilter-mustbeeditor' );
+ return;
+ }
+
+ // Header
+ $out->addWikiMsg( 'abusefilter-tools-text' );
+
+ // Expression evaluator
+ $eval = '';
+ $eval .= AbuseFilter::buildEditBox( $request->getText( 'wpTestExpr' ), 'wpTestExpr' );
+
+ $eval .= Xml::tags( 'p', null,
+ Xml::element( 'input',
+ [
+ 'type' => 'button',
+ 'id' => 'mw-abusefilter-submitexpr',
+ 'value' => $this->msg( 'abusefilter-tools-submitexpr' )->text() ]
+ )
+ );
+ $eval .= Xml::element( 'p', [ 'id' => 'mw-abusefilter-expr-result' ], ' ' );
+
+ $eval = Xml::fieldset( $this->msg( 'abusefilter-tools-expr' )->text(), $eval );
+ $out->addHTML( $eval );
+
+ $out->addModules( 'ext.abuseFilter.tools' );
+
+ // Hacky little box to re-enable autoconfirmed if it got disabled
+ $rac = '';
+ $rac .= Xml::inputLabel(
+ $this->msg( 'abusefilter-tools-reautoconfirm-user' )->text(),
+ 'wpReAutoconfirmUser',
+ 'reautoconfirm-user',
+ 45
+ );
+ $rac .= '&#160;';
+ $rac .= Xml::element(
+ 'input',
+ [
+ 'type' => 'button',
+ 'id' => 'mw-abusefilter-reautoconfirmsubmit',
+ 'value' => $this->msg( 'abusefilter-tools-reautoconfirm-submit' )->text()
+ ]
+ );
+ $rac = Xml::fieldset( $this->msg( 'abusefilter-tools-reautoconfirm' )->text(), $rac );
+ $out->addHTML( $rac );
+ }
+}
diff --git a/www/wiki/extensions/AbuseFilter/includes/api/ApiAbuseFilterCheckMatch.php b/www/wiki/extensions/AbuseFilter/includes/api/ApiAbuseFilterCheckMatch.php
new file mode 100644
index 00000000..252c153d
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/includes/api/ApiAbuseFilterCheckMatch.php
@@ -0,0 +1,94 @@
+<?php
+
+class ApiAbuseFilterCheckMatch extends ApiBase {
+ public function execute() {
+ $params = $this->extractRequestParams();
+ $this->requireOnlyOneParameter( $params, 'vars', 'rcid', 'logid' );
+
+ // "Anti-DoS"
+ if ( !$this->getUser()->isAllowed( 'abusefilter-modify' ) ) {
+ $this->dieWithError( 'apierror-abusefilter-canttest', 'permissiondenied' );
+ }
+
+ $vars = null;
+ if ( $params['vars'] ) {
+ $vars = new AbuseFilterVariableHolder;
+ $pairs = FormatJson::decode( $params['vars'], true );
+ foreach ( $pairs as $name => $value ) {
+ $vars->setVar( $name, $value );
+ }
+ } elseif ( $params['rcid'] ) {
+ $dbr = wfGetDB( DB_REPLICA );
+ $rcQuery = RecentChange::getQueryInfo();
+ $row = $dbr->selectRow(
+ $rcQuery['tables'],
+ $rcQuery['fields'],
+ [ 'rc_id' => $params['rcid'] ],
+ __METHOD__,
+ [],
+ $rcQuery['joins']
+ );
+
+ if ( !$row ) {
+ $this->dieWithError( [ 'apierror-nosuchrcid', $params['rcid'] ] );
+ }
+
+ $vars = AbuseFilter::getVarsFromRCRow( $row );
+ } elseif ( $params['logid'] ) {
+ $dbr = wfGetDB( DB_REPLICA );
+ $row = $dbr->selectRow(
+ 'abuse_filter_log',
+ 'afl_var_dump',
+ [ 'afl_id' => $params['logid'] ],
+ __METHOD__
+ );
+
+ if ( !$row ) {
+ $this->dieWithError( [ 'apierror-abusefilter-nosuchlogid', $params['logid'] ], 'nosuchlogid' );
+ }
+
+ $vars = AbuseFilter::loadVarDump( $row->afl_var_dump );
+ }
+
+ if ( AbuseFilter::checkSyntax( $params[ 'filter' ] ) !== true ) {
+ $this->dieWithError( 'apierror-abusefilter-badsyntax', 'badsyntax' );
+ }
+
+ $result = [
+ ApiResult::META_BC_BOOLS => [ 'result' ],
+ 'result' => AbuseFilter::checkConditions( $params['filter'], $vars ),
+ ];
+
+ $this->getResult()->addValue(
+ null,
+ $this->getModuleName(),
+ $result
+ );
+ }
+
+ public function getAllowedParams() {
+ return [
+ 'filter' => [
+ ApiBase::PARAM_REQUIRED => true,
+ ],
+ 'vars' => null,
+ 'rcid' => [
+ ApiBase::PARAM_TYPE => 'integer'
+ ],
+ 'logid' => [
+ ApiBase::PARAM_TYPE => 'integer'
+ ],
+ ];
+ }
+
+ /**
+ * @see ApiBase::getExamplesMessages()
+ * @return array
+ */
+ protected function getExamplesMessages() {
+ return [
+ 'action=abusefiltercheckmatch&filter=!("autoconfirmed"%20in%20user_groups)&rcid=15'
+ => 'apihelp-abusefiltercheckmatch-example-1',
+ ];
+ }
+}
diff --git a/www/wiki/extensions/AbuseFilter/includes/api/ApiAbuseFilterCheckSyntax.php b/www/wiki/extensions/AbuseFilter/includes/api/ApiAbuseFilterCheckSyntax.php
new file mode 100644
index 00000000..4854024d
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/includes/api/ApiAbuseFilterCheckSyntax.php
@@ -0,0 +1,49 @@
+<?php
+
+class ApiAbuseFilterCheckSyntax extends ApiBase {
+
+ public function execute() {
+ // "Anti-DoS"
+ if ( !$this->getUser()->isAllowed( 'abusefilter-modify' ) ) {
+ $this->dieWithError( 'apierror-abusefilter-cantcheck', 'permissiondenied' );
+ }
+
+ $params = $this->extractRequestParams();
+ $result = AbuseFilter::checkSyntax( $params[ 'filter' ] );
+
+ $r = [];
+ if ( $result === true ) {
+ // Everything went better than expected :)
+ $r['status'] = 'ok';
+ } else {
+ $r = [
+ 'status' => 'error',
+ 'message' => $result[0],
+ 'character' => $result[1],
+ ];
+ }
+
+ $this->getResult()->addValue( null, $this->getModuleName(), $r );
+ }
+
+ public function getAllowedParams() {
+ return [
+ 'filter' => [
+ ApiBase::PARAM_REQUIRED => true,
+ ],
+ ];
+ }
+
+ /**
+ * @see ApiBase::getExamplesMessages()
+ * @return array
+ */
+ protected function getExamplesMessages() {
+ return [
+ 'action=abusefilterchecksyntax&filter="foo"'
+ => 'apihelp-abusefilterchecksyntax-example-1',
+ 'action=abusefilterchecksyntax&filter="bar"%20bad_variable'
+ => 'apihelp-abusefilterchecksyntax-example-2',
+ ];
+ }
+}
diff --git a/www/wiki/extensions/AbuseFilter/includes/api/ApiAbuseFilterEvalExpression.php b/www/wiki/extensions/AbuseFilter/includes/api/ApiAbuseFilterEvalExpression.php
new file mode 100644
index 00000000..edf4b688
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/includes/api/ApiAbuseFilterEvalExpression.php
@@ -0,0 +1,30 @@
+<?php
+
+class ApiAbuseFilterEvalExpression extends ApiBase {
+ public function execute() {
+ $params = $this->extractRequestParams();
+
+ $result = AbuseFilter::evaluateExpression( $params['expression'] );
+
+ $this->getResult()->addValue( null, $this->getModuleName(), [ 'result' => $result ] );
+ }
+
+ public function getAllowedParams() {
+ return [
+ 'expression' => [
+ ApiBase::PARAM_REQUIRED => true,
+ ],
+ ];
+ }
+
+ /**
+ * @see ApiBase::getExamplesMessages()
+ * @return array
+ */
+ protected function getExamplesMessages() {
+ return [
+ 'action=abusefilterevalexpression&expression=lcase("FOO")'
+ => 'apihelp-abusefilterevalexpression-example-1',
+ ];
+ }
+}
diff --git a/www/wiki/extensions/AbuseFilter/includes/api/ApiAbuseFilterUnblockAutopromote.php b/www/wiki/extensions/AbuseFilter/includes/api/ApiAbuseFilterUnblockAutopromote.php
new file mode 100644
index 00000000..07f134ec
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/includes/api/ApiAbuseFilterUnblockAutopromote.php
@@ -0,0 +1,62 @@
+<?php
+
+class ApiAbuseFilterUnblockAutopromote extends ApiBase {
+ public function execute() {
+ $this->checkUserRightsAny( 'abusefilter-modify' );
+
+ $params = $this->extractRequestParams();
+ $user = User::newFromName( $params['user'] );
+
+ if ( $user === false ) {
+ $encParamName = $this->encodeParamName( 'user' );
+ $this->dieWithError(
+ [ 'apierror-baduser', $encParamName, wfEscapeWikiText( $param['user'] ) ],
+ "baduser_{$encParamName}"
+ );
+ }
+
+ $key = AbuseFilter::autoPromoteBlockKey( $user );
+ $stash = ObjectCache::getMainStashInstance();
+ if ( !$stash->get( $key ) ) {
+ $this->dieWithError( [ 'abusefilter-reautoconfirm-none', $user->getName() ], 'notsuspended' );
+ }
+
+ $stash->delete( $key );
+
+ $res = [ 'user' => $params['user'] ];
+ $this->getResult()->addValue( null, $this->getModuleName(), $res );
+ }
+
+ public function mustBePosted() {
+ return true;
+ }
+
+ public function isWriteMode() {
+ return true;
+ }
+
+ public function getAllowedParams() {
+ return [
+ 'user' => [
+ ApiBase::PARAM_TYPE => 'user',
+ ApiBase::PARAM_REQUIRED => true
+ ],
+ 'token' => null,
+ ];
+ }
+
+ public function needsToken() {
+ return 'csrf';
+ }
+
+ /**
+ * @see ApiBase::getExamplesMessages()
+ * @return array
+ */
+ protected function getExamplesMessages() {
+ return [
+ 'action=abusefilterunblockautopromote&user=Example&token=123ABC'
+ => 'apihelp-abusefilterunblockautopromote-example-1',
+ ];
+ }
+}
diff --git a/www/wiki/extensions/AbuseFilter/includes/api/ApiQueryAbuseFilters.php b/www/wiki/extensions/AbuseFilter/includes/api/ApiQueryAbuseFilters.php
new file mode 100644
index 00000000..d730483d
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/includes/api/ApiQueryAbuseFilters.php
@@ -0,0 +1,218 @@
+<?php
+/**
+ * Created on Mar 29, 2009
+ *
+ * AbuseFilter extension
+ *
+ * Copyright © 2008 Alex Z. mrzmanwiki AT gmail DOT com
+ * Based mostly on code by Bryan Tong Minh and Roan Kattouw
+ *
+ * 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
+ */
+
+/**
+ * Query module to list abuse filter details.
+ *
+ * @ingroup API
+ * @ingroup Extensions
+ */
+class ApiQueryAbuseFilters extends ApiQueryBase {
+ public function __construct( $query, $moduleName ) {
+ parent::__construct( $query, $moduleName, 'abf' );
+ }
+
+ public function execute() {
+ $user = $this->getUser();
+ $this->checkUserRightsAny( 'abusefilter-view' );
+
+ $params = $this->extractRequestParams();
+
+ $prop = array_flip( $params['prop'] );
+ $fld_id = isset( $prop['id'] );
+ $fld_desc = isset( $prop['description'] );
+ $fld_pattern = isset( $prop['pattern'] );
+ $fld_actions = isset( $prop['actions'] );
+ $fld_hits = isset( $prop['hits'] );
+ $fld_comments = isset( $prop['comments'] );
+ $fld_user = isset( $prop['lasteditor'] );
+ $fld_time = isset( $prop['lastedittime'] );
+ $fld_status = isset( $prop['status'] );
+ $fld_private = isset( $prop['private'] );
+
+ $result = $this->getResult();
+
+ $this->addTables( 'abuse_filter' );
+
+ $this->addFields( 'af_id' );
+ $this->addFields( 'af_hidden' );
+ $this->addFieldsIf( 'af_hit_count', $fld_hits );
+ $this->addFieldsIf( 'af_enabled', $fld_status );
+ $this->addFieldsIf( 'af_deleted', $fld_status );
+ $this->addFieldsIf( 'af_public_comments', $fld_desc );
+ $this->addFieldsIf( 'af_pattern', $fld_pattern );
+ $this->addFieldsIf( 'af_actions', $fld_actions );
+ $this->addFieldsIf( 'af_comments', $fld_comments );
+ $this->addFieldsIf( 'af_user_text', $fld_user );
+ $this->addFieldsIf( 'af_timestamp', $fld_time );
+
+ $this->addOption( 'LIMIT', $params['limit'] + 1 );
+
+ $this->addWhereRange( 'af_id', $params['dir'], $params['startid'], $params['endid'] );
+
+ if ( !is_null( $params['show'] ) ) {
+ $show = array_flip( $params['show'] );
+
+ /* Check for conflicting parameters. */
+ if ( ( isset( $show['enabled'] ) && isset( $show['!enabled'] ) )
+ || ( isset( $show['deleted'] ) && isset( $show['!deleted'] ) )
+ || ( isset( $show['private'] ) && isset( $show['!private'] ) )
+ ) {
+ $this->dieWithError( 'apierror-show' );
+ }
+
+ $this->addWhereIf( 'af_enabled = 0', isset( $show['!enabled'] ) );
+ $this->addWhereIf( 'af_enabled != 0', isset( $show['enabled'] ) );
+ $this->addWhereIf( 'af_deleted = 0', isset( $show['!deleted'] ) );
+ $this->addWhereIf( 'af_deleted != 0', isset( $show['deleted'] ) );
+ $this->addWhereIf( 'af_hidden = 0', isset( $show['!private'] ) );
+ $this->addWhereIf( 'af_hidden != 0', isset( $show['private'] ) );
+ }
+
+ $res = $this->select( __METHOD__ );
+
+ $showhidden = $user->isAllowedAny( 'abusefilter-modify', 'abusefilter-view-private' );
+
+ $count = 0;
+ foreach ( $res as $row ) {
+ if ( ++$count > $params['limit'] ) {
+ // We've had enough
+ $this->setContinueEnumParameter( 'startid', $row->af_id );
+ break;
+ }
+ $entry = [];
+ if ( $fld_id ) {
+ $entry['id'] = intval( $row->af_id );
+ }
+ if ( $fld_desc ) {
+ $entry['description'] = $row->af_public_comments;
+ }
+ if ( $fld_pattern && ( !$row->af_hidden || $showhidden ) ) {
+ $entry['pattern'] = $row->af_pattern;
+ }
+ if ( $fld_actions ) {
+ $entry['actions'] = $row->af_actions;
+ }
+ if ( $fld_hits ) {
+ $entry['hits'] = intval( $row->af_hit_count );
+ }
+ if ( $fld_comments && ( !$row->af_hidden || $showhidden ) ) {
+ $entry['comments'] = $row->af_comments;
+ }
+ if ( $fld_user ) {
+ $entry['lasteditor'] = $row->af_user_text;
+ }
+ if ( $fld_time ) {
+ $ts = new MWTimestamp( $row->af_timestamp );
+ $entry['lastedittime'] = $ts->getTimestamp( TS_ISO_8601 );
+ }
+ if ( $fld_private && $row->af_hidden ) {
+ $entry['private'] = '';
+ }
+ if ( $fld_status ) {
+ if ( $row->af_enabled ) {
+ $entry['enabled'] = '';
+ }
+ if ( $row->af_deleted ) {
+ $entry['deleted'] = '';
+ }
+ }
+ if ( $entry ) {
+ $fit = $result->addValue( [ 'query', $this->getModuleName() ], null, $entry );
+ if ( !$fit ) {
+ $this->setContinueEnumParameter( 'startid', $row->af_id );
+ break;
+ }
+ }
+ }
+ $result->addIndexedTagName( [ 'query', $this->getModuleName() ], 'filter' );
+ }
+
+ public function getAllowedParams() {
+ return [
+ 'startid' => [
+ ApiBase::PARAM_TYPE => 'integer'
+ ],
+ 'endid' => [
+ ApiBase::PARAM_TYPE => 'integer',
+ ],
+ 'dir' => [
+ ApiBase::PARAM_TYPE => [
+ 'older',
+ 'newer'
+ ],
+ ApiBase::PARAM_DFLT => 'newer',
+ ApiBase::PARAM_HELP_MSG => 'api-help-param-direction',
+ ],
+ 'show' => [
+ ApiBase::PARAM_ISMULTI => true,
+ ApiBase::PARAM_TYPE => [
+ 'enabled',
+ '!enabled',
+ 'deleted',
+ '!deleted',
+ 'private',
+ '!private',
+ ],
+ ],
+ 'limit' => [
+ ApiBase::PARAM_DFLT => 10,
+ ApiBase::PARAM_TYPE => 'limit',
+ ApiBase::PARAM_MIN => 1,
+ ApiBase::PARAM_MAX => ApiBase::LIMIT_BIG1,
+ ApiBase::PARAM_MAX2 => ApiBase::LIMIT_BIG2
+ ],
+ 'prop' => [
+ ApiBase::PARAM_DFLT => 'id|description|actions|status',
+ ApiBase::PARAM_TYPE => [
+ 'id',
+ 'description',
+ 'pattern',
+ 'actions',
+ 'hits',
+ 'comments',
+ 'lasteditor',
+ 'lastedittime',
+ 'status',
+ 'private',
+ ],
+ ApiBase::PARAM_ISMULTI => true
+ ]
+ ];
+ }
+
+ /**
+ * @see ApiBase::getExamplesMessages()
+ * @return array
+ */
+ protected function getExamplesMessages() {
+ return [
+ 'action=query&list=abusefilters&abfshow=enabled|!private'
+ => 'apihelp-query+abusefilters-example-1',
+ 'action=query&list=abusefilters&abfprop=id|description|pattern'
+ => 'apihelp-query+abusefilters-example-2',
+ ];
+ }
+}
diff --git a/www/wiki/extensions/AbuseFilter/includes/api/ApiQueryAbuseLog.php b/www/wiki/extensions/AbuseFilter/includes/api/ApiQueryAbuseLog.php
new file mode 100644
index 00000000..6cd4f17c
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/includes/api/ApiQueryAbuseLog.php
@@ -0,0 +1,313 @@
+<?php
+/**
+ * Created on Mar 28, 2009
+ *
+ * AbuseFilter extension
+ *
+ * Copyright © 2008 Alex Z. mrzmanwiki AT gmail DOT com
+ * Based mostly on code by Bryan Tong Minh and Roan Kattouw
+ *
+ * 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
+ */
+
+/**
+ * Query module to list abuse log entries.
+ *
+ * @ingroup API
+ * @ingroup Extensions
+ */
+class ApiQueryAbuseLog extends ApiQueryBase {
+ public function __construct( $query, $moduleName ) {
+ parent::__construct( $query, $moduleName, 'afl' );
+ }
+
+ public function execute() {
+ global $wgAbuseFilterIsCentral;
+
+ $user = $this->getUser();
+ $errors = $this->getTitle()->getUserPermissionsErrors(
+ 'abusefilter-log', $user, true, [ 'ns-specialprotected' ] );
+ if ( count( $errors ) ) {
+ $this->dieStatus( $this->errorArrayToStatus( $errors ) );
+ return;
+ }
+
+ $params = $this->extractRequestParams();
+
+ $prop = array_flip( $params['prop'] );
+ $fld_ids = isset( $prop['ids'] );
+ $fld_filter = isset( $prop['filter'] );
+ $fld_user = isset( $prop['user'] );
+ $fld_title = isset( $prop['title'] );
+ $fld_action = isset( $prop['action'] );
+ $fld_details = isset( $prop['details'] );
+ $fld_result = isset( $prop['result'] );
+ $fld_timestamp = isset( $prop['timestamp'] );
+ $fld_hidden = isset( $prop['hidden'] );
+ $fld_revid = isset( $prop['revid'] );
+ $fld_wiki = $wgAbuseFilterIsCentral && isset( $prop['wiki'] );
+
+ if ( $fld_details ) {
+ $this->checkUserRightsAny( 'abusefilter-log-detail' );
+ }
+ // Match permissions for viewing events on private filters to SpecialAbuseLog (bug 42814)
+ if ( $params['filter'] &&
+ !( AbuseFilterView::canViewPrivate() || $user->isAllowed( 'abusefilter-log-private' ) )
+ ) {
+ // A specific filter parameter is set but the user isn't allowed to view all filters
+ if ( !is_array( $params['filter'] ) ) {
+ $params['filter'] = [ $params['filter'] ];
+ }
+ foreach ( $params['filter'] as $filter ) {
+ if ( AbuseFilter::filterHidden( $filter ) ) {
+ $this->dieWithError(
+ [ 'apierror-permissiondenied', $this->msg( 'action-abusefilter-log-private' ) ]
+ );
+ }
+ }
+ }
+
+ $result = $this->getResult();
+
+ $this->addTables( 'abuse_filter_log' );
+ $this->addFields( 'afl_timestamp' );
+ $this->addFields( 'afl_rev_id' );
+ $this->addFields( 'afl_deleted' );
+ $this->addFields( 'afl_filter' );
+ $this->addFieldsIf( 'afl_id', $fld_ids );
+ $this->addFieldsIf( 'afl_user_text', $fld_user );
+ $this->addFieldsIf( [ 'afl_namespace', 'afl_title' ], $fld_title );
+ $this->addFieldsIf( 'afl_action', $fld_action );
+ $this->addFieldsIf( 'afl_var_dump', $fld_details );
+ $this->addFieldsIf( 'afl_actions', $fld_result );
+ $this->addFieldsIf( 'afl_wiki', $fld_wiki );
+
+ if ( $fld_filter ) {
+ $this->addTables( 'abuse_filter' );
+ $this->addFields( 'af_public_comments' );
+ $this->addJoinConds( [ 'abuse_filter' => [ 'LEFT JOIN',
+ 'af_id=afl_filter' ] ] );
+ }
+
+ $this->addOption( 'LIMIT', $params['limit'] + 1 );
+
+ $this->addWhereRange( 'afl_timestamp', $params['dir'], $params['start'], $params['end'] );
+
+ $db = $this->getDB();
+ $notDeletedCond = SpecialAbuseLog::getNotDeletedCond( $db );
+
+ if ( isset( $params['user'] ) ) {
+ $u = User::newFromName( $params['user'] );
+ if ( $u ) {
+ // Username normalisation
+ $params['user'] = $u->getName();
+ $userId = $u->getId();
+ } elseif ( IP::isIPAddress( $params['user'] ) ) {
+ // It's an IP, sanitize it
+ $params['user'] = IP::sanitizeIP( $params['user'] );
+ $userId = 0;
+ }
+
+ if ( isset( $userId ) ) {
+ // Only add the WHERE for user in case it's either a valid user
+ // (but not necessary an existing one) or an IP.
+ $this->addWhere(
+ [
+ 'afl_user' => $userId,
+ 'afl_user_text' => $params['user']
+ ]
+ );
+ }
+ }
+
+ $this->addWhereIf( [ 'afl_filter' => $params['filter'] ], isset( $params['filter'] ) );
+ $this->addWhereIf( $notDeletedCond, !SpecialAbuseLog::canSeeHidden( $user ) );
+ if ( isset( $params['wiki'] ) ) {
+ // 'wiki' won't be set if $wgAbuseFilterIsCentral = false
+ $this->addWhereIf( [ 'afl_wiki' => $params['wiki'] ], $wgAbuseFilterIsCentral );
+ }
+
+ $title = $params['title'];
+ if ( !is_null( $title ) ) {
+ $titleObj = Title::newFromText( $title );
+ if ( is_null( $titleObj ) ) {
+ $this->dieWithError( [ 'apierror-invalidtitle', wfEscapeWikiText( $title ) ] );
+ }
+ $this->addWhereFld( 'afl_namespace', $titleObj->getNamespace() );
+ $this->addWhereFld( 'afl_title', $titleObj->getDBkey() );
+ }
+ $res = $this->select( __METHOD__ );
+
+ $count = 0;
+ foreach ( $res as $row ) {
+ if ( ++$count > $params['limit'] ) {
+ // We've had enough
+ $ts = new MWTimestamp( $row->afl_timestamp );
+ $this->setContinueEnumParameter( 'start', $ts->getTimestamp( TS_ISO_8601 ) );
+ break;
+ }
+ $hidden = SpecialAbuseLog::isHidden( $row );
+ if ( $hidden === true && !SpecialAbuseLog::canSeeHidden() ) {
+ continue;
+ } elseif ( $hidden === 'implicit' ) {
+ $rev = Revision::newFromId( $row->afl_rev_id );
+ if ( !$rev->userCan( Revision::SUPPRESSED_ALL, $user ) ) {
+ continue;
+ }
+ }
+ $canSeeDetails = SpecialAbuseLog::canSeeDetails( $row->afl_filter );
+
+ $entry = [];
+ if ( $fld_ids ) {
+ $entry['id'] = intval( $row->afl_id );
+ $entry['filter_id'] = '';
+ if ( $canSeeDetails ) {
+ $entry['filter_id'] = $row->afl_filter;
+ }
+ }
+ if ( $fld_filter ) {
+ $globalIndex = AbuseFilter::decodeGlobalName( $row->afl_filter );
+ if ( $globalIndex ) {
+ $entry['filter'] = AbuseFilter::getGlobalFilterDescription( $globalIndex );
+ } else {
+ $entry['filter'] = $row->af_public_comments;
+ }
+ }
+ if ( $fld_user ) {
+ $entry['user'] = $row->afl_user_text;
+ }
+ if ( $fld_wiki ) {
+ $entry['wiki'] = $row->afl_wiki;
+ }
+ if ( $fld_title ) {
+ $title = Title::makeTitle( $row->afl_namespace, $row->afl_title );
+ ApiQueryBase::addTitleInfo( $entry, $title );
+ }
+ if ( $fld_action ) {
+ $entry['action'] = $row->afl_action;
+ }
+ if ( $fld_result ) {
+ $entry['result'] = $row->afl_actions;
+ }
+ if ( $fld_revid && !is_null( $row->afl_rev_id ) ) {
+ $entry['revid'] = '';
+ if ( $canSeeDetails ) {
+ $entry['revid'] = $row->afl_rev_id;
+ }
+ }
+ if ( $fld_timestamp ) {
+ $ts = new MWTimestamp( $row->afl_timestamp );
+ $entry['timestamp'] = $ts->getTimestamp( TS_ISO_8601 );
+ }
+ if ( $fld_details ) {
+ $entry['details'] = [];
+ if ( $canSeeDetails ) {
+ $vars = AbuseFilter::loadVarDump( $row->afl_var_dump );
+ if ( $vars instanceof AbuseFilterVariableHolder ) {
+ $entry['details'] = $vars->exportAllVars();
+ } else {
+ $entry['details'] = array_change_key_case( $vars, CASE_LOWER );
+ }
+ }
+ }
+
+ if ( $fld_hidden && $hidden ) {
+ $entry['hidden'] = $hidden;
+ }
+
+ if ( $entry ) {
+ $fit = $result->addValue( [ 'query', $this->getModuleName() ], null, $entry );
+ if ( !$fit ) {
+ $ts = new MWTimestamp( $row->afl_timestamp );
+ $this->setContinueEnumParameter( 'start', $ts->getTimestamp( TS_ISO_8601 ) );
+ break;
+ }
+ }
+ }
+ $result->addIndexedTagName( [ 'query', $this->getModuleName() ], 'item' );
+ }
+
+ public function getAllowedParams() {
+ global $wgAbuseFilterIsCentral;
+
+ $params = [
+ 'start' => [
+ ApiBase::PARAM_TYPE => 'timestamp'
+ ],
+ 'end' => [
+ ApiBase::PARAM_TYPE => 'timestamp'
+ ],
+ 'dir' => [
+ ApiBase::PARAM_TYPE => [
+ 'newer',
+ 'older'
+ ],
+ ApiBase::PARAM_DFLT => 'older',
+ ApiBase::PARAM_HELP_MSG => 'api-help-param-direction',
+ ],
+ 'user' => null,
+ 'title' => null,
+ 'filter' => [
+ ApiBase::PARAM_TYPE => 'string',
+ ApiBase::PARAM_ISMULTI => true
+ ],
+ 'limit' => [
+ ApiBase::PARAM_DFLT => 10,
+ ApiBase::PARAM_TYPE => 'limit',
+ ApiBase::PARAM_MIN => 1,
+ ApiBase::PARAM_MAX => ApiBase::LIMIT_BIG1,
+ ApiBase::PARAM_MAX2 => ApiBase::LIMIT_BIG2
+ ],
+ 'prop' => [
+ ApiBase::PARAM_DFLT => 'ids|user|title|action|result|timestamp|hidden|revid',
+ ApiBase::PARAM_TYPE => [
+ 'ids',
+ 'filter',
+ 'user',
+ 'title',
+ 'action',
+ 'details',
+ 'result',
+ 'timestamp',
+ 'hidden',
+ 'revid',
+ ],
+ ApiBase::PARAM_ISMULTI => true
+ ]
+ ];
+ if ( $wgAbuseFilterIsCentral ) {
+ $params['wiki'] = [
+ ApiBase::PARAM_TYPE => 'string',
+ ];
+ $params['prop'][ApiBase::PARAM_DFLT] .= '|wiki';
+ $params['prop'][ApiBase::PARAM_TYPE][] = 'wiki';
+ }
+ return $params;
+ }
+
+ /**
+ * @see ApiBase::getExamplesMessages()
+ * @return array
+ */
+ protected function getExamplesMessages() {
+ return [
+ 'action=query&list=abuselog'
+ => 'apihelp-query+abuselog-example-1',
+ 'action=query&list=abuselog&afltitle=API'
+ => 'apihelp-query+abuselog-example-2',
+ ];
+ }
+}
diff --git a/www/wiki/extensions/AbuseFilter/includes/pagers/AbuseFilterExaminePager.php b/www/wiki/extensions/AbuseFilter/includes/pagers/AbuseFilterExaminePager.php
new file mode 100644
index 00000000..495bd4f8
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/includes/pagers/AbuseFilterExaminePager.php
@@ -0,0 +1,72 @@
+<?php
+
+class AbuseFilterExaminePager extends ReverseChronologicalPager {
+ /**
+ * @param AbuseFilterViewExamine $page
+ * @param AbuseFilterChangesList $changesList
+ */
+ function __construct( $page, $changesList ) {
+ parent::__construct();
+ $this->mChangesList = $changesList;
+ $this->mPage = $page;
+ }
+
+ /**
+ * @fixme this is similar to AbuseFilterViewTestBatch::doTest
+ * @return array
+ */
+ function getQueryInfo() {
+ $dbr = wfGetDB( DB_REPLICA );
+ $conds = [];
+
+ if ( (string)$this->mPage->mSearchUser !== '' ) {
+ $conds[] = ActorMigration::newMigration()->getWhere(
+ $dbr, 'rc_user', User::newFromName( $this->mPage->mSearchUser, false )
+ )['conds'];
+ }
+
+ $startTS = strtotime( $this->mPage->mSearchPeriodStart );
+ if ( $startTS ) {
+ $conds[] = 'rc_timestamp>=' . $dbr->addQuotes( $dbr->timestamp( $startTS ) );
+ }
+ $endTS = strtotime( $this->mPage->mSearchPeriodEnd );
+ if ( $endTS ) {
+ $conds[] = 'rc_timestamp<=' . $dbr->addQuotes( $dbr->timestamp( $endTS ) );
+ }
+
+ $conds[] = $this->mPage->buildTestConditions( $dbr );
+
+ $rcQuery = RecentChange::getQueryInfo();
+ $info = [
+ 'tables' => $rcQuery['tables'],
+ 'fields' => $rcQuery['fields'],
+ 'conds' => array_filter( $conds ),
+ 'options' => [ 'ORDER BY' => 'rc_timestamp DESC' ],
+ 'join_conds' => $rcQuery['joins'],
+ ];
+
+ return $info;
+ }
+
+ /**
+ * @param stdClass $row
+ * @return string
+ */
+ public function formatRow( $row ) {
+ $rc = RecentChange::newFromRow( $row );
+ $rc->counter = $this->mPage->mCounter++;
+ return $this->mChangesList->recentChangesLine( $rc, false );
+ }
+
+ function getIndexField() {
+ return 'rc_id';
+ }
+
+ function getTitle() {
+ return $this->mPage->getTitle( 'examine' );
+ }
+
+ function getEmptyBody() {
+ return $this->msg( 'abusefilter-examine-noresults' )->parseAsBlock();
+ }
+}
diff --git a/www/wiki/extensions/AbuseFilter/includes/pagers/AbuseFilterHistoryPager.php b/www/wiki/extensions/AbuseFilter/includes/pagers/AbuseFilterHistoryPager.php
new file mode 100644
index 00000000..375b940e
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/includes/pagers/AbuseFilterHistoryPager.php
@@ -0,0 +1,204 @@
+<?php
+
+class AbuseFilterHistoryPager extends TablePager {
+
+ protected $linkRenderer;
+ /**
+ * @param string $filter
+ * @param ContextSource $page
+ * @param string $user User name
+ * @param \MediaWiki\Linker\LinkRenderer $linkRenderer
+ */
+ function __construct( $filter, $page, $user, $linkRenderer ) {
+ $this->mFilter = $filter;
+ $this->mPage = $page;
+ $this->mUser = $user;
+ $this->mDefaultDirection = true;
+ $this->linkRenderer = $linkRenderer;
+ parent::__construct( $this->mPage->getContext() );
+ }
+
+ function getFieldNames() {
+ static $headers = null;
+
+ if ( !empty( $headers ) ) {
+ return $headers;
+ }
+
+ $headers = [
+ 'afh_timestamp' => 'abusefilter-history-timestamp',
+ 'afh_user_text' => 'abusefilter-history-user',
+ 'afh_public_comments' => 'abusefilter-history-public',
+ 'afh_flags' => 'abusefilter-history-flags',
+ 'afh_actions' => 'abusefilter-history-actions',
+ 'afh_id' => 'abusefilter-history-diff',
+ ];
+
+ if ( !$this->mFilter ) {
+ // awful hack
+ $headers = [ 'afh_filter' => 'abusefilter-history-filterid' ] + $headers;
+ unset( $headers['afh_comments'] );
+ }
+
+ foreach ( $headers as &$msg ) {
+ $msg = $this->msg( $msg )->text();
+ }
+
+ return $headers;
+ }
+
+ function formatValue( $name, $value ) {
+ $lang = $this->getLanguage();
+
+ $row = $this->mCurrentRow;
+
+ switch ( $name ) {
+ case 'afh_filter':
+ $formatted = $this->linkRenderer->makeLink(
+ SpecialPage::getTitleFor( 'AbuseFilter', intval( $row->afh_filter ) ),
+ $lang->formatNum( $row->afh_filter )
+ );
+ break;
+ case 'afh_timestamp':
+ $title = SpecialPage::getTitleFor( 'AbuseFilter',
+ 'history/' . $row->afh_filter . '/item/' . $row->afh_id );
+ $formatted = $this->linkRenderer->makeLink(
+ $title,
+ $lang->timeanddate( $row->afh_timestamp, true )
+ );
+ break;
+ case 'afh_user_text':
+ $formatted =
+ Linker::userLink( $row->afh_user, $row->afh_user_text ) . ' ' .
+ Linker::userToolLinks( $row->afh_user, $row->afh_user_text );
+ break;
+ case 'afh_public_comments':
+ $formatted = htmlspecialchars( $value, ENT_QUOTES, 'UTF-8', false );
+ break;
+ case 'afh_flags':
+ $formatted = AbuseFilter::formatFlags( $value );
+ break;
+ case 'afh_actions':
+ $actions = unserialize( $value );
+
+ $display_actions = '';
+
+ foreach ( $actions as $action => $parameters ) {
+ $displayAction = AbuseFilter::formatAction( $action, $parameters );
+ $display_actions .= Xml::tags( 'li', null, $displayAction );
+ }
+ $display_actions = Xml::tags( 'ul', null, $display_actions );
+
+ $formatted = $display_actions;
+ break;
+ case 'afh_id':
+ $formatted = '';
+ if ( AbuseFilter::getFirstFilterChange( $row->afh_filter ) != $value ) {
+ // Set a link to a diff with the previous version if this isn't the first edit to the filter
+ $title = $this->mPage->getTitle(
+ 'history/' . $row->afh_filter . "/diff/prev/$value" );
+ $formatted = $this->linkRenderer->makeLink(
+ $title,
+ new HtmlArmor( $this->msg( 'abusefilter-history-diff' )->parse() )
+ );
+ }
+ break;
+ default:
+ $formatted = "Unable to format $name";
+ break;
+ }
+
+ $mappings = array_flip( AbuseFilter::$history_mappings ) +
+ [ 'afh_actions' => 'actions', 'afh_id' => 'id' ];
+ $changed = explode( ',', $row->afh_changed_fields );
+
+ $fieldChanged = false;
+ if ( $name == 'afh_flags' ) {
+ // This is a bit freaky, but it works.
+ // Basically, returns true if any of those filters are in the $changed array.
+ $filters = [ 'af_enabled', 'af_hidden', 'af_deleted', 'af_global' ];
+ if ( count( array_diff( $filters, $changed ) ) < count( $filters ) ) {
+ $fieldChanged = true;
+ }
+ } elseif ( in_array( $mappings[$name], $changed ) ) {
+ $fieldChanged = true;
+ }
+
+ if ( $fieldChanged ) {
+ $formatted = Xml::tags( 'div',
+ [ 'class' => 'mw-abusefilter-history-changed' ],
+ $formatted
+ );
+ }
+
+ return $formatted;
+ }
+
+ function getQueryInfo() {
+ $info = [
+ 'tables' => [ 'abuse_filter_history', 'abuse_filter' ],
+ 'fields' => [
+ 'afh_filter',
+ 'afh_timestamp',
+ 'afh_user_text',
+ 'afh_public_comments',
+ 'afh_flags',
+ 'afh_comments',
+ 'afh_actions',
+ 'afh_id',
+ 'afh_user',
+ 'afh_changed_fields',
+ 'afh_pattern',
+ 'afh_id',
+ 'af_hidden'
+ ],
+ 'conds' => [],
+ 'join_conds' => [
+ 'abuse_filter' =>
+ [
+ 'LEFT JOIN',
+ 'afh_filter=af_id',
+ ],
+ ],
+ ];
+
+ if ( $this->mUser ) {
+ $info['conds']['afh_user_text'] = $this->mUser;
+ }
+
+ if ( $this->mFilter ) {
+ $info['conds']['afh_filter'] = $this->mFilter;
+ }
+
+ if ( !$this->getUser()->isAllowedAny(
+ 'abusefilter-modify', 'abusefilter-view-private' )
+ ) {
+ // Hide data the user can't see.
+ $info['conds']['af_hidden'] = 0;
+ }
+
+ return $info;
+ }
+
+ function getIndexField() {
+ return 'afh_timestamp';
+ }
+
+ function getDefaultSort() {
+ return 'afh_timestamp';
+ }
+
+ function isFieldSortable( $name ) {
+ $sortable_fields = [ 'afh_timestamp', 'afh_user_text' ];
+ return in_array( $name, $sortable_fields );
+ }
+
+ /**
+ * Title used for self-links.
+ *
+ * @return Title
+ */
+ function getTitle() {
+ return $this->mPage->getTitle( 'history/' . $this->mFilter );
+ }
+}
diff --git a/www/wiki/extensions/AbuseFilter/includes/pagers/AbuseFilterPager.php b/www/wiki/extensions/AbuseFilter/includes/pagers/AbuseFilterPager.php
new file mode 100644
index 00000000..f4e62ad7
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/includes/pagers/AbuseFilterPager.php
@@ -0,0 +1,260 @@
+<?php
+
+/**
+ * Class to build paginated filter list
+ */
+class AbuseFilterPager extends TablePager {
+
+ /**
+ * @var \MediaWiki\Linker\LinkRenderer
+ */
+ protected $linkRenderer;
+
+ function __construct( $page, $conds, $linkRenderer, $query ) {
+ $this->mPage = $page;
+ $this->mConds = $conds;
+ $this->linkRenderer = $linkRenderer;
+ $this->mQuery = $query;
+ parent::__construct( $this->mPage->getContext() );
+ }
+
+ function getQueryInfo() {
+ return [
+ 'tables' => [ 'abuse_filter' ],
+ 'fields' => [
+ 'af_id',
+ 'af_enabled',
+ 'af_deleted',
+ 'af_pattern',
+ 'af_global',
+ 'af_public_comments',
+ 'af_hidden',
+ 'af_hit_count',
+ 'af_timestamp',
+ 'af_user_text',
+ 'af_user',
+ 'af_actions',
+ 'af_group',
+ ],
+ 'conds' => $this->mConds,
+ ];
+ }
+
+ function getFieldNames() {
+ static $headers = null;
+
+ if ( !empty( $headers ) ) {
+ return $headers;
+ }
+
+ $headers = [
+ 'af_id' => 'abusefilter-list-id',
+ 'af_public_comments' => 'abusefilter-list-public',
+ 'af_actions' => 'abusefilter-list-consequences',
+ 'af_enabled' => 'abusefilter-list-status',
+ 'af_timestamp' => 'abusefilter-list-lastmodified',
+ 'af_hidden' => 'abusefilter-list-visibility',
+ ];
+
+ if ( $this->mPage->getUser()->isAllowed( 'abusefilter-log-detail' ) ) {
+ $headers['af_hit_count'] = 'abusefilter-list-hitcount';
+ }
+
+ if ( AbuseFilterView::canViewPrivate() && !empty( $this->mQuery[0] ) ) {
+ $headers['af_pattern'] = 'abusefilter-list-pattern';
+ }
+
+ global $wgAbuseFilterValidGroups;
+ if ( count( $wgAbuseFilterValidGroups ) > 1 ) {
+ $headers['af_group'] = 'abusefilter-list-group';
+ }
+
+ foreach ( $headers as &$msg ) {
+ $msg = $this->msg( $msg )->text();
+ }
+
+ return $headers;
+ }
+
+ function formatValue( $name, $value ) {
+ $lang = $this->getLanguage();
+ $row = $this->mCurrentRow;
+
+ switch ( $name ) {
+ case 'af_id':
+ return $this->linkRenderer->makeLink(
+ SpecialPage::getTitleFor( 'AbuseFilter', intval( $value ) ),
+ $lang->formatNum( intval( $value ) )
+ );
+ case 'af_pattern':
+ if ( $this->mQuery[1] === 'LIKE' ) {
+ $position = mb_strpos(
+ strtolower( $row->af_pattern ),
+ strtolower( $this->mQuery[0] ),
+ 0,
+ 'UTF8'
+ );
+ if ( $position === false ) {
+ // This may happen due to problems with character encoding
+ // which aren't easy to solve
+ return htmlspecialchars( mb_substr( $row->af_pattern, 0, 50, 'UTF8' ) );
+ }
+ $length = mb_strlen( $this->mQuery[0], 'UTF8' );
+ } elseif ( $this->mQuery[1] === 'RLIKE' ) {
+ Wikimedia\suppressWarnings();
+ $check = preg_match(
+ '/' . $this->mQuery[0] . '/',
+ $row->af_pattern,
+ $matches,
+ PREG_OFFSET_CAPTURE
+ );
+ Wikimedia\restoreWarnings();
+ // This may happen in case of catastrophic backtracking
+ if ( $check === false ) {
+ return htmlspecialchars( mb_substr( $row->af_pattern, 0, 50, 'UTF8' ) );
+ }
+ $length = mb_strlen( $matches[0][0], 'UTF8' );
+ $position = $matches[0][1];
+ } elseif ( $this->mQuery[1] === 'IRLIKE' ) {
+ Wikimedia\suppressWarnings();
+ $check = preg_match(
+ '/' . $this->mQuery[0] . '/i',
+ $row->af_pattern,
+ $matches,
+ PREG_OFFSET_CAPTURE
+ );
+ Wikimedia\restoreWarnings();
+ // This may happen in case of catastrophic backtracking
+ if ( $check === false ) {
+ return htmlspecialchars( mb_substr( $row->af_pattern, 0, 50, 'UTF8' ) );
+ }
+ $length = mb_strlen( $matches[0][0], 'UTF8' );
+ $position = $matches[0][1];
+ }
+ $remaining = 50 - $length;
+ if ( $remaining <= 0 ) {
+ $pattern = '<b>' .
+ htmlspecialchars( mb_substr( $row->af_pattern, 0, 50, 'UTF8' ) ) .
+ '</b>';
+ } else {
+ $minoffset = max( $position - round( $remaining / 2 ), 0 );
+ $pattern = mb_substr( $row->af_pattern, $minoffset, 50, 'UTF8' );
+ $pattern =
+ htmlspecialchars( mb_substr( $pattern, 0, $position - $minoffset, 'UTF8' ) ) .
+ '<b>' .
+ htmlspecialchars( mb_substr( $pattern, $position - $minoffset, $length, 'UTF8' ) ) .
+ '</b>' .
+ htmlspecialchars( mb_substr(
+ $pattern,
+ $position - $minoffset + $length,
+ $remaining - ( $position - $minoffset + $length ),
+ 'UTF8'
+ )
+ );
+ }
+ return $pattern;
+ case 'af_public_comments':
+ return $this->linkRenderer->makeLink(
+ SpecialPage::getTitleFor( 'AbuseFilter', intval( $row->af_id ) ),
+ $value
+ );
+ case 'af_actions':
+ $actions = explode( ',', $value );
+ $displayActions = [];
+ foreach ( $actions as $action ) {
+ $displayActions[] = AbuseFilter::getActionDisplay( $action );
+ }
+ return htmlspecialchars( $lang->commaList( $displayActions ) );
+ case 'af_enabled':
+ $statuses = [];
+ if ( $row->af_deleted ) {
+ $statuses[] = $this->msg( 'abusefilter-deleted' )->parse();
+ } elseif ( $row->af_enabled ) {
+ $statuses[] = $this->msg( 'abusefilter-enabled' )->parse();
+ } else {
+ $statuses[] = $this->msg( 'abusefilter-disabled' )->parse();
+ }
+
+ global $wgAbuseFilterIsCentral;
+ if ( $row->af_global && $wgAbuseFilterIsCentral ) {
+ $statuses[] = $this->msg( 'abusefilter-status-global' )->parse();
+ }
+
+ return $lang->commaList( $statuses );
+ case 'af_hidden':
+ $msg = $value ? 'abusefilter-hidden' : 'abusefilter-unhidden';
+ return $this->msg( $msg )->parse();
+ case 'af_hit_count':
+ if ( SpecialAbuseLog::canSeeDetails( $row->af_id, $row->af_hidden ) ) {
+ $count_display = $this->msg( 'abusefilter-hitcount' )
+ ->numParams( $value )->parse();
+ $link = $this->linkRenderer->makeKnownLink(
+ SpecialPage::getTitleFor( 'AbuseLog' ),
+ $count_display,
+ [],
+ [ 'wpSearchFilter' => $row->af_id ]
+ );
+ } else {
+ $link = "";
+ }
+ return $link;
+ case 'af_timestamp':
+ $userLink =
+ Linker::userLink(
+ $row->af_user,
+ $row->af_user_text
+ ) .
+ Linker::userToolLinks(
+ $row->af_user,
+ $row->af_user_text
+ );
+ $user = $row->af_user_text;
+ return $this->msg( 'abusefilter-edit-lastmod-text' )
+ ->rawParams( $lang->timeanddate( $value, true ),
+ $userLink,
+ $lang->date( $value, true ),
+ $lang->time( $value, true ),
+ $user
+ )->parse();
+ case 'af_group':
+ return AbuseFilter::nameGroup( $value );
+ break;
+ default:
+ throw new MWException( "Unknown row type $name!" );
+ }
+ }
+
+ function getDefaultSort() {
+ return 'af_id';
+ }
+
+ function getTableClass() {
+ return 'TablePager mw-abusefilter-list-scrollable';
+ }
+
+ function getRowClass( $row ) {
+ if ( $row->af_enabled ) {
+ return 'mw-abusefilter-list-enabled';
+ } elseif ( $row->af_deleted ) {
+ return 'mw-abusefilter-list-deleted';
+ } else {
+ return 'mw-abusefilter-list-disabled';
+ }
+ }
+
+ function isFieldSortable( $name ) {
+ $sortable_fields = [
+ 'af_id',
+ 'af_enabled',
+ 'af_throttled',
+ 'af_user_text',
+ 'af_timestamp',
+ 'af_hidden',
+ 'af_group',
+ ];
+ if ( $this->mPage->getUser()->isAllowed( 'abusefilter-log-detail' ) ) {
+ $sortable_fields[] = 'af_hit_count';
+ }
+ return in_array( $name, $sortable_fields );
+ }
+}
diff --git a/www/wiki/extensions/AbuseFilter/includes/pagers/AbuseLogPager.php b/www/wiki/extensions/AbuseFilter/includes/pagers/AbuseLogPager.php
new file mode 100644
index 00000000..8b4513fe
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/includes/pagers/AbuseLogPager.php
@@ -0,0 +1,79 @@
+<?php
+
+use Wikimedia\Rdbms\ResultWrapper;
+
+class AbuseLogPager extends ReverseChronologicalPager {
+ /**
+ * @var SpecialAbuseLog
+ */
+ public $mForm;
+
+ /**
+ * @var array
+ */
+ public $mConds;
+
+ /**
+ * @param SpecialAbuseLog $form
+ * @param array $conds
+ */
+ function __construct( $form, $conds = [] ) {
+ $this->mForm = $form;
+ $this->mConds = $conds;
+ parent::__construct();
+ }
+
+ function formatRow( $row ) {
+ return $this->mForm->formatRow( $row );
+ }
+
+ function getQueryInfo() {
+ $conds = $this->mConds;
+
+ $info = [
+ 'tables' => [ 'abuse_filter_log', 'abuse_filter' ],
+ 'fields' => '*',
+ 'conds' => $conds,
+ 'join_conds' =>
+ [ 'abuse_filter' =>
+ [
+ 'LEFT JOIN',
+ 'af_id=afl_filter',
+ ],
+ ],
+ ];
+
+ if ( !$this->mForm->canSeeHidden() ) {
+ $db = $this->mDb;
+ $info['conds'][] = SpecialAbuseLog::getNotDeletedCond( $db );
+ }
+
+ return $info;
+ }
+
+ /**
+ * @param ResultWrapper $result
+ */
+ protected function preprocessResults( $result ) {
+ if ( $this->getNumRows() === 0 ) {
+ return;
+ }
+
+ $lb = new LinkBatch();
+ $lb->setCaller( __METHOD__ );
+ foreach ( $result as $row ) {
+ // Only for local wiki results
+ if ( !$row->afl_wiki ) {
+ $lb->add( $row->afl_namespace, $row->afl_title );
+ $lb->add( NS_USER, $row->afl_user );
+ $lb->add( NS_USER_TALK, $row->afl_user_text );
+ }
+ }
+ $lb->execute();
+ $result->seek( 0 );
+ }
+
+ function getIndexField() {
+ return 'afl_timestamp';
+ }
+}
diff --git a/www/wiki/extensions/AbuseFilter/includes/pagers/GlobalAbuseFilterPager.php b/www/wiki/extensions/AbuseFilter/includes/pagers/GlobalAbuseFilterPager.php
new file mode 100644
index 00000000..36c84a01
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/includes/pagers/GlobalAbuseFilterPager.php
@@ -0,0 +1,70 @@
+<?php
+
+/**
+ * Class to build paginated filter list for wikis using global abuse filters
+ */
+class GlobalAbuseFilterPager extends AbuseFilterPager {
+ function __construct( $page, $conds, $linkRenderer ) {
+ parent::__construct( $page, $conds, $linkRenderer, [ '', 'LIKE' ] );
+ global $wgAbuseFilterCentralDB;
+ $this->mDb = wfGetDB( DB_REPLICA, [], $wgAbuseFilterCentralDB );
+ }
+
+ function formatValue( $name, $value ) {
+ $lang = $this->getLanguage();
+ $row = $this->mCurrentRow;
+
+ switch ( $name ) {
+ case 'af_id':
+ return $lang->formatNum( intval( $value ) );
+ case 'af_public_comments':
+ return $this->getOutput()->parseInline( $value );
+ case 'af_actions':
+ $actions = explode( ',', $value );
+ $displayActions = [];
+ foreach ( $actions as $action ) {
+ $displayActions[] = AbuseFilter::getActionDisplay( $action );
+ }
+ return htmlspecialchars( $lang->commaList( $displayActions ) );
+ case 'af_enabled':
+ $statuses = [];
+ if ( $row->af_deleted ) {
+ $statuses[] = $this->msg( 'abusefilter-deleted' )->parse();
+ } elseif ( $row->af_enabled ) {
+ $statuses[] = $this->msg( 'abusefilter-enabled' )->parse();
+ } else {
+ $statuses[] = $this->msg( 'abusefilter-disabled' )->parse();
+ }
+ if ( $row->af_global ) {
+ $statuses[] = $this->msg( 'abusefilter-status-global' )->parse();
+ }
+
+ return $lang->commaList( $statuses );
+ case 'af_hidden':
+ $msg = $value ? 'abusefilter-hidden' : 'abusefilter-unhidden';
+ return $this->msg( $msg )->parse();
+ case 'af_hit_count':
+ // If the rule is hidden, don't show it, even to priviledged local admins
+ if ( $row->af_hidden ) {
+ return '';
+ }
+ return $this->msg( 'abusefilter-hitcount' )->numParams( $value )->parse();
+ case 'af_timestamp':
+ $user = $row->af_user_text;
+ return $this->msg(
+ 'abusefilter-edit-lastmod-text',
+ $lang->timeanddate( $value, true ),
+ $user,
+ $lang->date( $value, true ),
+ $lang->time( $value, true ),
+ $user
+ )->parse();
+ case 'af_group':
+ // If this is global, local name probably doesn't exist, but try
+ return AbuseFilter::nameGroup( $value );
+ break;
+ default:
+ throw new MWException( "Unknown row type $name!" );
+ }
+ }
+}
diff --git a/www/wiki/extensions/AbuseFilter/includes/parser/AFPData.php b/www/wiki/extensions/AbuseFilter/includes/parser/AFPData.php
new file mode 100644
index 00000000..ff1faa98
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/includes/parser/AFPData.php
@@ -0,0 +1,497 @@
+<?php
+
+class AFPData {
+ // Datatypes
+ const DINT = 'int';
+ const DSTRING = 'string';
+ const DNULL = 'null';
+ const DBOOL = 'bool';
+ const DFLOAT = 'float';
+ const DLIST = 'list';
+
+ // Translation table mapping shell-style wildcards to PCRE equivalents.
+ // Derived from <http://www.php.net/manual/en/function.fnmatch.php#100207>
+ private static $wildcardMap = [
+ '\*' => '.*',
+ '\+' => '\+',
+ '\-' => '\-',
+ '\.' => '\.',
+ '\?' => '.',
+ '\[' => '[',
+ '\[\!' => '[^',
+ '\\' => '\\\\',
+ '\]' => ']',
+ ];
+
+ public $type;
+ public $data;
+
+ /**
+ * @param string $type
+ * @param null $val
+ */
+ public function __construct( $type = self::DNULL, $val = null ) {
+ $this->type = $type;
+ $this->data = $val;
+ }
+
+ /**
+ * @param mixed $var
+ * @return AFPData
+ * @throws AFPException
+ */
+ public static function newFromPHPVar( $var ) {
+ if ( is_string( $var ) ) {
+ return new AFPData( self::DSTRING, $var );
+ } elseif ( is_int( $var ) ) {
+ return new AFPData( self::DINT, $var );
+ } elseif ( is_float( $var ) ) {
+ return new AFPData( self::DFLOAT, $var );
+ } elseif ( is_bool( $var ) ) {
+ return new AFPData( self::DBOOL, $var );
+ } elseif ( is_array( $var ) ) {
+ $result = [];
+ foreach ( $var as $item ) {
+ $result[] = self::newFromPHPVar( $item );
+ }
+
+ return new AFPData( self::DLIST, $result );
+ } elseif ( is_null( $var ) ) {
+ return new AFPData();
+ } else {
+ throw new AFPException(
+ 'Data type ' . gettype( $var ) . ' is not supported by AbuseFilter'
+ );
+ }
+ }
+
+ /**
+ * @return AFPData
+ */
+ public function dup() {
+ return new AFPData( $this->type, $this->data );
+ }
+
+ /**
+ * @param AFPData $orig
+ * @param string $target
+ * @return AFPData
+ */
+ public static function castTypes( $orig, $target ) {
+ if ( $orig->type == $target ) {
+ return $orig->dup();
+ }
+ if ( $target == self::DNULL ) {
+ return new AFPData();
+ }
+
+ if ( $orig->type == self::DLIST ) {
+ if ( $target == self::DBOOL ) {
+ return new AFPData( self::DBOOL, (bool)count( $orig->data ) );
+ }
+ if ( $target == self::DFLOAT ) {
+ return new AFPData( self::DFLOAT, floatval( count( $orig->data ) ) );
+ }
+ if ( $target == self::DINT ) {
+ return new AFPData( self::DINT, intval( count( $orig->data ) ) );
+ }
+ if ( $target == self::DSTRING ) {
+ $s = '';
+ foreach ( $orig->data as $item ) {
+ $s .= $item->toString() . "\n";
+ }
+
+ return new AFPData( self::DSTRING, $s );
+ }
+ }
+
+ if ( $target == self::DBOOL ) {
+ return new AFPData( self::DBOOL, (bool)$orig->data );
+ }
+ if ( $target == self::DFLOAT ) {
+ return new AFPData( self::DFLOAT, floatval( $orig->data ) );
+ }
+ if ( $target == self::DINT ) {
+ return new AFPData( self::DINT, intval( $orig->data ) );
+ }
+ if ( $target == self::DSTRING ) {
+ return new AFPData( self::DSTRING, strval( $orig->data ) );
+ }
+ if ( $target == self::DLIST ) {
+ return new AFPData( self::DLIST, [ $orig ] );
+ }
+ }
+
+ /**
+ * @param AFPData $value
+ * @return AFPData
+ */
+ public static function boolInvert( $value ) {
+ return new AFPData( self::DBOOL, !$value->toBool() );
+ }
+
+ /**
+ * @param AFPData $base
+ * @param AFPData $exponent
+ * @return AFPData
+ */
+ public static function pow( $base, $exponent ) {
+ $res = pow( $base->toNumber(), $exponent->toNumber() );
+ if ( $res === (int)$res ) {
+ return new AFPData( self::DINT, $res );
+ } else {
+ return new AFPData( self::DFLOAT, $res );
+ }
+ }
+
+ /**
+ * @param AFPData $a
+ * @param AFPData $b
+ * @return AFPData
+ */
+ public static function keywordIn( $a, $b ) {
+ $a = $a->toString();
+ $b = $b->toString();
+
+ if ( $a == '' || $b == '' ) {
+ return new AFPData( self::DBOOL, false );
+ }
+
+ return new AFPData( self::DBOOL, strpos( $b, $a ) !== false );
+ }
+
+ /**
+ * @param AFPData $a
+ * @param AFPData $b
+ * @return AFPData
+ */
+ public static function keywordContains( $a, $b ) {
+ $a = $a->toString();
+ $b = $b->toString();
+
+ if ( $a == '' || $b == '' ) {
+ return new AFPData( self::DBOOL, false );
+ }
+
+ return new AFPData( self::DBOOL, strpos( $a, $b ) !== false );
+ }
+
+ /**
+ * @param string $value
+ * @param mixed $list
+ * @return bool
+ */
+ public static function listContains( $value, $list ) {
+ // Should use built-in PHP function somehow
+ foreach ( $list->data as $item ) {
+ if ( self::equals( $value, $item ) ) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * @ToDo Should we also build a proper system to compare arrays with different types?
+ * @param AFPData $d1
+ * @param AFPData $d2
+ * @param bool $strict whether to also check types
+ * @return bool
+ */
+ public static function equals( $d1, $d2, $strict = false ) {
+ if ( $d1->type != self::DLIST && $d2->type != self::DLIST ) {
+ $typecheck = $d1->type == $d2->type || !$strict;
+ return $typecheck && $d1->toString() === $d2->toString();
+ } elseif ( $d1->type == self::DLIST && $d2->type == self::DLIST ) {
+ $data1 = $d1->data;
+ $data2 = $d2->data;
+ if ( count( $data1 ) !== count( $data2 ) ) {
+ return false;
+ }
+ $length = count( $data1 );
+ for ( $i = 0; $i < $length; $i++ ) {
+ $result = self::equals( $data1[$i], $data2[$i], $strict );
+ if ( $result === false ) {
+ return false;
+ }
+ }
+ return true;
+ } else {
+ // Trying to compare an array to something else
+ return false;
+ }
+ }
+
+ /**
+ * @param AFPData $str
+ * @param AFPData $pattern
+ * @return AFPData
+ */
+ public static function keywordLike( $str, $pattern ) {
+ $str = $str->toString();
+ $pattern = '#^' . strtr( preg_quote( $pattern->toString(), '#' ), self::$wildcardMap ) . '$#u';
+ Wikimedia\suppressWarnings();
+ $result = preg_match( $pattern, $str );
+ Wikimedia\restoreWarnings();
+
+ return new AFPData( self::DBOOL, (bool)$result );
+ }
+
+ /**
+ * @param AFPData $str
+ * @param AFPData $regex
+ * @param int $pos
+ * @param bool $insensitive
+ * @return AFPData
+ * @throws Exception
+ */
+ public static function keywordRegex( $str, $regex, $pos, $insensitive = false ) {
+ $str = $str->toString();
+ $pattern = $regex->toString();
+
+ $pattern = preg_replace( '!(\\\\\\\\)*(\\\\)?/!', '$1\/', $pattern );
+ $pattern = "/$pattern/u";
+
+ if ( $insensitive ) {
+ $pattern .= 'i';
+ }
+
+ Wikimedia\suppressWarnings();
+ $result = preg_match( $pattern, $str );
+ Wikimedia\restoreWarnings();
+ if ( $result === false ) {
+ throw new AFPUserVisibleException(
+ 'regexfailure',
+ $pos,
+ [ 'unspecified error in preg_match()', $pattern ]
+ );
+ }
+
+ return new AFPData( self::DBOOL, (bool)$result );
+ }
+
+ /**
+ * @param string $str
+ * @param string $regex
+ * @param int $pos
+ * @return AFPData
+ */
+ public static function keywordRegexInsensitive( $str, $regex, $pos ) {
+ return self::keywordRegex( $str, $regex, $pos, true );
+ }
+
+ /**
+ * @param AFPData $data
+ * @return AFPData
+ */
+ public static function unaryMinus( $data ) {
+ if ( $data->type == self::DINT ) {
+ return new AFPData( $data->type, -$data->toInt() );
+ } else {
+ return new AFPData( $data->type, -$data->toFloat() );
+ }
+ }
+
+ /**
+ * @param AFPData $a
+ * @param AFPData $b
+ * @param string $op
+ * @return AFPData
+ * @throws AFPException
+ */
+ public static function boolOp( $a, $b, $op ) {
+ $a = $a->toBool();
+ $b = $b->toBool();
+ if ( $op == '|' ) {
+ return new AFPData( self::DBOOL, $a || $b );
+ }
+ if ( $op == '&' ) {
+ return new AFPData( self::DBOOL, $a && $b );
+ }
+ if ( $op == '^' ) {
+ return new AFPData( self::DBOOL, $a xor $b );
+ }
+ throw new AFPException( "Invalid boolean operation: {$op}" ); // Should never happen.
+ }
+
+ /**
+ * @param AFPData $a
+ * @param AFPData $b
+ * @param string $op
+ * @return AFPData
+ * @throws AFPException
+ */
+ public static function compareOp( $a, $b, $op ) {
+ if ( $op == '==' || $op == '=' ) {
+ return new AFPData( self::DBOOL, self::equals( $a, $b ) );
+ }
+ if ( $op == '!=' ) {
+ return new AFPData( self::DBOOL, !self::equals( $a, $b ) );
+ }
+ if ( $op == '===' ) {
+ return new AFPData( self::DBOOL, self::equals( $a, $b, true ) );
+ }
+ if ( $op == '!==' ) {
+ return new AFPData( self::DBOOL, !self::equals( $a, $b, true ) );
+ }
+ $a = $a->toString();
+ $b = $b->toString();
+ if ( $op == '>' ) {
+ return new AFPData( self::DBOOL, $a > $b );
+ }
+ if ( $op == '<' ) {
+ return new AFPData( self::DBOOL, $a < $b );
+ }
+ if ( $op == '>=' ) {
+ return new AFPData( self::DBOOL, $a >= $b );
+ }
+ if ( $op == '<=' ) {
+ return new AFPData( self::DBOOL, $a <= $b );
+ }
+ throw new AFPException( "Invalid comparison operation: {$op}" ); // Should never happen
+ }
+
+ /**
+ * @param AFPData $a
+ * @param AFPData $b
+ * @param string $op
+ * @param int $pos
+ * @return AFPData
+ * @throws AFPUserVisibleException
+ * @throws AFPException
+ */
+ public static function mulRel( $a, $b, $op, $pos ) {
+ $a = $a->toNumber();
+ $b = $b->toNumber();
+
+ if ( $op != '*' && $b == 0 ) {
+ throw new AFPUserVisibleException( 'dividebyzero', $pos, [ $a ] );
+ }
+
+ if ( $op == '*' ) {
+ $data = $a * $b;
+ } elseif ( $op == '/' ) {
+ $data = $a / $b;
+ } elseif ( $op == '%' ) {
+ $data = $a % $b;
+ } else {
+ // Should never happen
+ throw new AFPException( "Invalid multiplication-related operation: {$op}" );
+ }
+
+ if ( $data === (int)$data ) {
+ $data = intval( $data );
+ $type = self::DINT;
+ } else {
+ $data = floatval( $data );
+ $type = self::DFLOAT;
+ }
+
+ return new AFPData( $type, $data );
+ }
+
+ /**
+ * @param AFPData $a
+ * @param AFPData $b
+ * @return AFPData
+ */
+ public static function sum( $a, $b ) {
+ if ( $a->type == self::DSTRING || $b->type == self::DSTRING ) {
+ return new AFPData( self::DSTRING, $a->toString() . $b->toString() );
+ } elseif ( $a->type == self::DLIST && $b->type == self::DLIST ) {
+ return new AFPData( self::DLIST, array_merge( $a->toList(), $b->toList() ) );
+ } else {
+ $res = $a->toNumber() + $b->toNumber();
+ if ( $res === (int)$res ) {
+ return new AFPData( self::DINT, $res );
+ } else {
+ return new AFPData( self::DFLOAT, $res );
+ }
+ }
+ }
+
+ /**
+ * @param AFPData $a
+ * @param AFPData $b
+ * @return AFPData
+ */
+ public static function sub( $a, $b ) {
+ $res = $a->toNumber() - $b->toNumber();
+ if ( $res === (int)$res ) {
+ return new AFPData( self::DINT, $res );
+ } else {
+ return new AFPData( self::DFLOAT, $res );
+ }
+ }
+
+ /** Convert shorteners */
+
+ /**
+ * @throws MWException
+ * @return mixed
+ */
+ public function toNative() {
+ switch ( $this->type ) {
+ case self::DBOOL:
+ return $this->toBool();
+ case self::DSTRING:
+ return $this->toString();
+ case self::DFLOAT:
+ return $this->toFloat();
+ case self::DINT:
+ return $this->toInt();
+ case self::DLIST:
+ $input = $this->toList();
+ $output = [];
+ foreach ( $input as $item ) {
+ $output[] = $item->toNative();
+ }
+
+ return $output;
+ case self::DNULL:
+ return null;
+ default:
+ throw new MWException( "Unknown type" );
+ }
+ }
+
+ /**
+ * @return bool
+ */
+ public function toBool() {
+ return self::castTypes( $this, self::DBOOL )->data;
+ }
+
+ /**
+ * @return string
+ */
+ public function toString() {
+ return self::castTypes( $this, self::DSTRING )->data;
+ }
+
+ /**
+ * @return float
+ */
+ public function toFloat() {
+ return self::castTypes( $this, self::DFLOAT )->data;
+ }
+
+ /**
+ * @return int
+ */
+ public function toInt() {
+ return self::castTypes( $this, self::DINT )->data;
+ }
+
+ /**
+ * @return int|float
+ */
+ public function toNumber() {
+ return $this->type == self::DINT ? $this->toInt() : $this->toFloat();
+ }
+
+ public function toList() {
+ return self::castTypes( $this, self::DLIST )->data;
+ }
+}
diff --git a/www/wiki/extensions/AbuseFilter/includes/parser/AFPException.php b/www/wiki/extensions/AbuseFilter/includes/parser/AFPException.php
new file mode 100644
index 00000000..51fe4442
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/includes/parser/AFPException.php
@@ -0,0 +1,4 @@
+<?php
+
+class AFPException extends MWException {
+}
diff --git a/www/wiki/extensions/AbuseFilter/includes/parser/AFPParserState.php b/www/wiki/extensions/AbuseFilter/includes/parser/AFPParserState.php
new file mode 100644
index 00000000..7a4f5a73
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/includes/parser/AFPParserState.php
@@ -0,0 +1,10 @@
+<?php
+
+class AFPParserState {
+ public $pos, $token;
+
+ public function __construct( $token, $pos ) {
+ $this->token = $token;
+ $this->pos = $pos;
+ }
+}
diff --git a/www/wiki/extensions/AbuseFilter/includes/parser/AFPToken.php b/www/wiki/extensions/AbuseFilter/includes/parser/AFPToken.php
new file mode 100644
index 00000000..2f7d9c99
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/includes/parser/AFPToken.php
@@ -0,0 +1,61 @@
+<?php
+/**
+ * Abuse filter parser.
+ * Copyright © Victor Vasiliev, 2008.
+ * Based on ideas by Andrew Garrett
+ * Distributed under GNU GPL v2 terms.
+ *
+ * Types of token:
+ * * T_NONE - special-purpose token
+ * * T_BRACE - ( or )
+ * * T_COMMA - ,
+ * * T_OP - operator like + or ^
+ * * T_NUMBER - number
+ * * T_STRING - string, in "" or ''
+ * * T_KEYWORD - keyword
+ * * T_ID - identifier
+ * * T_STATEMENT_SEPARATOR - ;
+ * * T_SQUARE_BRACKETS - [ or ]
+ *
+ * Levels of parsing:
+ * * Entry - catches unexpected characters
+ * * Semicolon - ;
+ * * Set - :=
+ * * Conditionls (IF) - if-then-else-end, cond ? a :b
+ * * BoolOps (BO) - &, |, ^
+ * * CompOps (CO) - ==, !=, ===, !==, >, <, >=, <=
+ * * SumRel (SR) - +, -
+ * * MulRel (MR) - *, /, %
+ * * Pow (P) - **
+ * * BoolNeg (BN) - ! operation
+ * * SpecialOperators (SO) - in and like
+ * * Unarys (U) - plus and minus in cases like -5 or -(2 * +2)
+ * * ListElement (LE) - list[number]
+ * * Braces (B) - ( and )
+ * * Functions (F)
+ * * Atom (A) - return value
+ */
+class AFPToken {
+ // Types of tken
+ const TNONE = 'T_NONE';
+ const TID = 'T_ID';
+ const TKEYWORD = 'T_KEYWORD';
+ const TSTRING = 'T_STRING';
+ const TINT = 'T_INT';
+ const TFLOAT = 'T_FLOAT';
+ const TOP = 'T_OP';
+ const TBRACE = 'T_BRACE';
+ const TSQUAREBRACKET = 'T_SQUARE_BRACKET';
+ const TCOMMA = 'T_COMMA';
+ const TSTATEMENTSEPARATOR = 'T_STATEMENT_SEPARATOR';
+
+ public $type;
+ public $value;
+ public $pos;
+
+ public function __construct( $type = self::TNONE, $value = null, $pos = 0 ) {
+ $this->type = $type;
+ $this->value = $value;
+ $this->pos = $pos;
+ }
+}
diff --git a/www/wiki/extensions/AbuseFilter/includes/parser/AFPTreeNode.php b/www/wiki/extensions/AbuseFilter/includes/parser/AFPTreeNode.php
new file mode 100644
index 00000000..e185616c
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/includes/parser/AFPTreeNode.php
@@ -0,0 +1,126 @@
+<?php
+/**
+ * Represents a node of a parser tree.
+ */
+class AFPTreeNode {
+ // Each of the constants below represents a node corresponding to a level
+ // of the parser, from the top of the tree to the bottom.
+
+ // ENTRY is always one-element and thus does not have its own node.
+
+ // SEMICOLON is a many-children node, denoting that the nodes have to be
+ // evaluated in order and the last value has to be returned.
+ const SEMICOLON = 'SEMICOLON';
+
+ // ASSIGNMENT (formerly known as SET) is a node which is responsible for
+ // assigning values to variables. ASSIGNMENT is a (variable name [string],
+ // value [tree node]) tuple, INDEX_ASSIGNMENT (which is used to assign
+ // values at list offsets) is a (variable name [string], index [tree node],
+ // value [tree node]) tuple, and LIST_APPEND has the form of (variable name
+ // [string], value [tree node]).
+ const ASSIGNMENT = 'ASSIGNMENT';
+ const INDEX_ASSIGNMENT = 'INDEX_ASSIGNMENT';
+ const LIST_APPEND = 'LIST_APPEND';
+
+ // CONDITIONAL represents both a ternary operator and an if-then-else-end
+ // construct. The format is (condition, evaluated-if-true,
+ // evaluated-in-false), all tree nodes.
+ const CONDITIONAL = 'CONDITIONAL';
+
+ // LOGIC is a logic operator accepted by AFPData::boolOp. The format is
+ // (operation, left operand, right operand).
+ const LOGIC = 'LOGIC';
+
+ // COMPARE is a comparison operator accepted by AFPData::boolOp. The format is
+ // (operation, left operand, right operand).
+ const COMPARE = 'COMPARE';
+
+ // SUM_REL is either '+' or '-'. The format is (operation, left operand,
+ // right operand).
+ const SUM_REL = 'SUM_REL';
+
+ // MUL_REL is a multiplication-related operation accepted by AFPData::mulRel.
+ // The format is (operation, left operand, right operand).
+ const MUL_REL = 'MUL_REL';
+
+ // POW is an exponentiation operator. The format is (base, exponent).
+ const POW = 'POW';
+
+ // BOOL_INVERT is a boolean inversion operator. The format is (operand).
+ const BOOL_INVERT = 'BOOL_INVERT';
+
+ // KEYWORD_OPERATOR is one of the binary keyword operators supported by the
+ // filter language. The format is (keyword, left operand, right operand).
+ const KEYWORD_OPERATOR = 'KEYWORD_OPERATOR';
+
+ // UNARY is either unary minus or unary plus. The format is (operator,
+ // operand).
+ const UNARY = 'UNARY';
+
+ // LIST_INDEX is an operation of accessing a list by an offset. The format
+ // is (list, offset).
+ const LIST_INDEX = 'LIST_INDEX';
+
+ // Since parenthesis only manipulate precedence of the operators, they are
+ // not explicitly represented in the tree.
+
+ // FUNCTION_CALL is an invocation of built-in function. The format is a
+ // tuple where the first element is a function name, and all subsequent
+ // elements are the arguments.
+ const FUNCTION_CALL = 'FUNCTION_CALL';
+
+ // LIST_DEFINITION is a list literal. The $children field contains tree
+ // nodes for the values of each of the list element used.
+ const LIST_DEFINITION = 'LIST_DEFINITION';
+
+ // ATOM is a node representing a literal. The only element of $children is a
+ // token corresponding to the literal.
+ const ATOM = 'ATOM';
+
+ /** @var string Type of the node, one of the constants above */
+ public $type;
+ /**
+ * Parameters of the value. Typically it is an array of children nodes,
+ * which might be either strings (for parametrization of the node) or another
+ * node. In case of ATOM it's a parser token.
+ * @var AFPTreeNode[]|string[]|AFPToken
+ */
+ public $children;
+
+ // Position used for error reporting.
+ public $position;
+
+ public function __construct( $type, $children, $position ) {
+ $this->type = $type;
+ $this->children = $children;
+ $this->position = $position;
+ }
+
+ public function toDebugString() {
+ return implode( "\n", $this->toDebugStringInner() );
+ }
+
+ private function toDebugStringInner() {
+ if ( $this->type == self::ATOM ) {
+ return [ "ATOM({$this->children->type} {$this->children->value})" ];
+ }
+
+ $align = function ( $line ) {
+ return ' ' . $line;
+ };
+
+ $lines = [ "{$this->type}" ];
+ foreach ( $this->children as $subnode ) {
+ if ( $subnode instanceof AFPTreeNode ) {
+ $sublines = array_map( $align, $subnode->toDebugStringInner() );
+ } elseif ( is_string( $subnode ) ) {
+ $sublines = [ " {$subnode}" ];
+ } else {
+ throw new AFPException( "Each node parameter has to be either a node or a string" );
+ }
+
+ $lines = array_merge( $lines, $sublines );
+ }
+ return $lines;
+ }
+}
diff --git a/www/wiki/extensions/AbuseFilter/includes/parser/AFPTreeParser.php b/www/wiki/extensions/AbuseFilter/includes/parser/AFPTreeParser.php
new file mode 100644
index 00000000..345adcb8
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/includes/parser/AFPTreeParser.php
@@ -0,0 +1,611 @@
+<?php
+
+/**
+ * A version of the abuse filter parser that separates parsing the filter and
+ * evaluating it into different passes, allowing the parse tree to be cached.
+ *
+ * @file
+ */
+
+/**
+ * A parser that transforms the text of the filter into a parse tree.
+ */
+class AFPTreeParser {
+ // The tokenized representation of the filter parsed.
+ public $mTokens;
+
+ // Current token handled by the parser and its position.
+ public $mCur, $mPos;
+
+ const CACHE_VERSION = 2;
+
+ /**
+ * Create a new instance
+ */
+ public function __construct() {
+ $this->resetState();
+ }
+
+ public function resetState() {
+ $this->mTokens = [];
+ $this->mPos = 0;
+ }
+
+ /**
+ * Advances the parser to the next token in the filter code.
+ */
+ protected function move() {
+ list( $this->mCur, $this->mPos ) = $this->mTokens[$this->mPos];
+ }
+
+ /**
+ * getState() function allows parser state to be rollbacked to several tokens
+ * back.
+ *
+ * @return AFPParserState
+ */
+ protected function getState() {
+ return new AFPParserState( $this->mCur, $this->mPos );
+ }
+
+ /**
+ * setState() function allows parser state to be rollbacked to several tokens
+ * back.
+ *
+ * @param AFPParserState $state
+ */
+ protected function setState( AFPParserState $state ) {
+ $this->mCur = $state->token;
+ $this->mPos = $state->pos;
+ }
+
+ /**
+ * Parse the supplied filter source code into a tree.
+ *
+ * @param string $code
+ * @throws AFPUserVisibleException
+ * @return AFPTreeNode|null
+ */
+ public function parse( $code ) {
+ $this->mTokens = AbuseFilterTokenizer::tokenize( $code );
+ $this->mPos = 0;
+
+ return $this->doLevelEntry();
+ }
+
+ /* Levels */
+
+ /**
+ * Handles unexpected characters after the expression.
+ * @return AFPTreeNode|null
+ * @throws AFPUserVisibleException
+ */
+ protected function doLevelEntry() {
+ $result = $this->doLevelSemicolon();
+
+ if ( $this->mCur->type != AFPToken::TNONE ) {
+ throw new AFPUserVisibleException(
+ 'unexpectedatend',
+ $this->mPos, [ $this->mCur->type ]
+ );
+ }
+
+ return $result;
+ }
+
+ /**
+ * Handles the semicolon operator.
+ *
+ * @return AFPTreeNode|null
+ */
+ protected function doLevelSemicolon() {
+ $statements = [];
+
+ do {
+ $this->move();
+ $position = $this->mPos;
+
+ if ( $this->mCur->type == AFPToken::TNONE ) {
+ break;
+ }
+
+ // Allow empty statements.
+ if ( $this->mCur->type == AFPToken::TSTATEMENTSEPARATOR ) {
+ continue;
+ }
+
+ $statements[] = $this->doLevelSet();
+ $position = $this->mPos;
+ } while ( $this->mCur->type == AFPToken::TSTATEMENTSEPARATOR );
+
+ // Flatten the tree if possible.
+ if ( count( $statements ) == 0 ) {
+ return null;
+ } elseif ( count( $statements ) == 1 ) {
+ return $statements[0];
+ } else {
+ return new AFPTreeNode( AFPTreeNode::SEMICOLON, $statements, $position );
+ }
+ }
+
+ /**
+ * Handles variable assignment.
+ *
+ * @return AFPTreeNode
+ * @throws AFPUserVisibleException
+ */
+ protected function doLevelSet() {
+ if ( $this->mCur->type == AFPToken::TID ) {
+ $varname = $this->mCur->value;
+
+ // Speculatively parse the assignment statement assuming it can
+ // potentially be an assignment, but roll back if it isn't.
+ $initialState = $this->getState();
+ $this->move();
+
+ if ( $this->mCur->type == AFPToken::TOP && $this->mCur->value == ':=' ) {
+ $position = $this->mPos;
+ $this->move();
+ $value = $this->doLevelSet();
+
+ return new AFPTreeNode( AFPTreeNode::ASSIGNMENT, [ $varname, $value ], $position );
+ }
+
+ if ( $this->mCur->type == AFPToken::TSQUAREBRACKET && $this->mCur->value == '[' ) {
+ $this->move();
+
+ if ( $this->mCur->type == AFPToken::TSQUAREBRACKET && $this->mCur->value == ']' ) {
+ $index = 'append';
+ } else {
+ // Parse index offset.
+ $this->setState( $initialState );
+ $this->move();
+ $index = $this->doLevelSemicolon();
+ if ( !( $this->mCur->type == AFPToken::TSQUAREBRACKET && $this->mCur->value == ']' ) ) {
+ throw new AFPUserVisibleException( 'expectednotfound', $this->mPos,
+ [ ']', $this->mCur->type, $this->mCur->value ] );
+ }
+ }
+
+ $this->move();
+ if ( $this->mCur->type == AFPToken::TOP && $this->mCur->value == ':=' ) {
+ $position = $this->mPos;
+ $this->move();
+ $value = $this->doLevelSet();
+ if ( $index === 'append' ) {
+ return new AFPTreeNode(
+ AFPTreeNode::LIST_APPEND, [ $varname, $value ], $position );
+ } else {
+ return new AFPTreeNode(
+ AFPTreeNode::INDEX_ASSIGNMENT,
+ [ $varname, $index, $value ],
+ $position
+ );
+ }
+ }
+ }
+
+ // If we reached this point, we did not find an assignment. Roll back
+ // and assume this was just a literal.
+ $this->setState( $initialState );
+ }
+
+ return $this->doLevelConditions();
+ }
+
+ /**
+ * Handles ternary operator and if-then-else-end.
+ *
+ * @return AFPTreeNode
+ * @throws AFPUserVisibleException
+ */
+ protected function doLevelConditions() {
+ if ( $this->mCur->type == AFPToken::TKEYWORD && $this->mCur->value == 'if' ) {
+ $position = $this->mPos;
+ $this->move();
+ $condition = $this->doLevelBoolOps();
+
+ if ( !( $this->mCur->type == AFPToken::TKEYWORD && $this->mCur->value == 'then' ) ) {
+ throw new AFPUserVisibleException( 'expectednotfound',
+ $this->mPos,
+ [
+ 'then',
+ $this->mCur->type,
+ $this->mCur->value
+ ]
+ );
+ }
+ $this->move();
+
+ $valueIfTrue = $this->doLevelConditions();
+
+ if ( !( $this->mCur->type == AFPToken::TKEYWORD && $this->mCur->value == 'else' ) ) {
+ throw new AFPUserVisibleException( 'expectednotfound',
+ $this->mPos,
+ [
+ 'else',
+ $this->mCur->type,
+ $this->mCur->value
+ ]
+ );
+ }
+ $this->move();
+
+ $valueIfFalse = $this->doLevelConditions();
+
+ if ( !( $this->mCur->type == AFPToken::TKEYWORD && $this->mCur->value == 'end' ) ) {
+ throw new AFPUserVisibleException( 'expectednotfound',
+ $this->mPos,
+ [
+ 'end',
+ $this->mCur->type,
+ $this->mCur->value
+ ]
+ );
+ }
+ $this->move();
+
+ return new AFPTreeNode(
+ AFPTreeNode::CONDITIONAL,
+ [ $condition, $valueIfTrue, $valueIfFalse ],
+ $position
+ );
+ }
+
+ $condition = $this->doLevelBoolOps();
+ if ( $this->mCur->type == AFPToken::TOP && $this->mCur->value == '?' ) {
+ $position = $this->mPos;
+ $this->move();
+
+ $valueIfTrue = $this->doLevelConditions();
+ if ( !( $this->mCur->type == AFPToken::TOP && $this->mCur->value == ':' ) ) {
+ throw new AFPUserVisibleException( 'expectednotfound',
+ $this->mPos,
+ [
+ ':',
+ $this->mCur->type,
+ $this->mCur->value
+ ]
+ );
+ }
+ $this->move();
+
+ $valueIfFalse = $this->doLevelConditions();
+ return new AFPTreeNode(
+ AFPTreeNode::CONDITIONAL,
+ [ $condition, $valueIfTrue, $valueIfFalse ],
+ $position
+ );
+ }
+
+ return $condition;
+ }
+
+ /**
+ * Handles logic operators.
+ *
+ * @return AFPTreeNode
+ */
+ protected function doLevelBoolOps() {
+ $leftOperand = $this->doLevelCompares();
+ $ops = [ '&', '|', '^' ];
+ while ( $this->mCur->type == AFPToken::TOP && in_array( $this->mCur->value, $ops ) ) {
+ $op = $this->mCur->value;
+ $position = $this->mPos;
+ $this->move();
+
+ $rightOperand = $this->doLevelCompares();
+
+ $leftOperand = new AFPTreeNode(
+ AFPTreeNode::LOGIC,
+ [ $op, $leftOperand, $rightOperand ],
+ $position
+ );
+ }
+ return $leftOperand;
+ }
+
+ /**
+ * Handles comparison operators.
+ *
+ * @return AFPTreeNode
+ */
+ protected function doLevelCompares() {
+ $leftOperand = $this->doLevelSumRels();
+ $ops = [ '==', '===', '!=', '!==', '<', '>', '<=', '>=', '=' ];
+ while ( $this->mCur->type == AFPToken::TOP && in_array( $this->mCur->value, $ops ) ) {
+ $op = $this->mCur->value;
+ $position = $this->mPos;
+ $this->move();
+ $rightOperand = $this->doLevelSumRels();
+ $leftOperand = new AFPTreeNode(
+ AFPTreeNode::COMPARE,
+ [ $op, $leftOperand, $rightOperand ],
+ $position
+ );
+ }
+ return $leftOperand;
+ }
+
+ /**
+ * Handle addition and subtraction.
+ *
+ * @return AFPTreeNode
+ */
+ protected function doLevelSumRels() {
+ $leftOperand = $this->doLevelMulRels();
+ $ops = [ '+', '-' ];
+ while ( $this->mCur->type == AFPToken::TOP && in_array( $this->mCur->value, $ops ) ) {
+ $op = $this->mCur->value;
+ $position = $this->mPos;
+ $this->move();
+ $rightOperand = $this->doLevelMulRels();
+ $leftOperand = new AFPTreeNode(
+ AFPTreeNode::SUM_REL,
+ [ $op, $leftOperand, $rightOperand ],
+ $position
+ );
+ }
+ return $leftOperand;
+ }
+
+ /**
+ * Handles multiplication and division.
+ *
+ * @return AFPTreeNode
+ */
+ protected function doLevelMulRels() {
+ $leftOperand = $this->doLevelPow();
+ $ops = [ '*', '/', '%' ];
+ while ( $this->mCur->type == AFPToken::TOP && in_array( $this->mCur->value, $ops ) ) {
+ $op = $this->mCur->value;
+ $position = $this->mPos;
+ $this->move();
+ $rightOperand = $this->doLevelPow();
+ $leftOperand = new AFPTreeNode(
+ AFPTreeNode::MUL_REL,
+ [ $op, $leftOperand, $rightOperand ],
+ $position
+ );
+ }
+ return $leftOperand;
+ }
+
+ /**
+ * Handles exponentiation.
+ *
+ * @return AFPTreeNode
+ */
+ protected function doLevelPow() {
+ $base = $this->doLevelBoolInvert();
+ while ( $this->mCur->type == AFPToken::TOP && $this->mCur->value == '**' ) {
+ $position = $this->mPos;
+ $this->move();
+ $exponent = $this->doLevelBoolInvert();
+ $base = new AFPTreeNode( AFPTreeNode::POW, [ $base, $exponent ], $position );
+ }
+ return $base;
+ }
+
+ /**
+ * Handles boolean inversion.
+ *
+ * @return AFPTreeNode
+ */
+ protected function doLevelBoolInvert() {
+ if ( $this->mCur->type == AFPToken::TOP && $this->mCur->value == '!' ) {
+ $position = $this->mPos;
+ $this->move();
+ $argument = $this->doLevelKeywordOperators();
+ return new AFPTreeNode( AFPTreeNode::BOOL_INVERT, [ $argument ], $position );
+ }
+
+ return $this->doLevelKeywordOperators();
+ }
+
+ /**
+ * Handles keyword operators.
+ *
+ * @return AFPTreeNode
+ */
+ protected function doLevelKeywordOperators() {
+ $leftOperand = $this->doLevelUnarys();
+ $keyword = strtolower( $this->mCur->value );
+ if ( $this->mCur->type == AFPToken::TKEYWORD &&
+ in_array( $keyword, array_keys( AbuseFilterParser::$mKeywords ) )
+ ) {
+ $position = $this->mPos;
+ $this->move();
+ $rightOperand = $this->doLevelUnarys();
+
+ return new AFPTreeNode(
+ AFPTreeNode::KEYWORD_OPERATOR,
+ [ $keyword, $leftOperand, $rightOperand ],
+ $position
+ );
+ }
+
+ return $leftOperand;
+ }
+
+ /**
+ * Handles unary operators.
+ *
+ * @return AFPTreeNode
+ */
+ protected function doLevelUnarys() {
+ $op = $this->mCur->value;
+ if ( $this->mCur->type == AFPToken::TOP && ( $op == "+" || $op == "-" ) ) {
+ $position = $this->mPos;
+ $this->move();
+ $argument = $this->doLevelListElements();
+ return new AFPTreeNode( AFPTreeNode::UNARY, [ $op, $argument ], $position );
+ }
+ return $this->doLevelListElements();
+ }
+
+ /**
+ * Handles accessing a list element by an offset.
+ *
+ * @return AFPTreeNode
+ * @throws AFPUserVisibleException
+ */
+ protected function doLevelListElements() {
+ $list = $this->doLevelParenthesis();
+ while ( $this->mCur->type == AFPToken::TSQUAREBRACKET && $this->mCur->value == '[' ) {
+ $position = $this->mPos;
+ $index = $this->doLevelSemicolon();
+ $list = new AFPTreeNode( AFPTreeNode::LIST_INDEX, [ $list, $index ], $position );
+
+ if ( !( $this->mCur->type == AFPToken::TSQUAREBRACKET && $this->mCur->value == ']' ) ) {
+ throw new AFPUserVisibleException( 'expectednotfound', $this->mPos,
+ [ ']', $this->mCur->type, $this->mCur->value ] );
+ }
+ $this->move();
+ }
+
+ return $list;
+ }
+
+ /**
+ * Handles parenthesis.
+ *
+ * @return AFPTreeNode
+ * @throws AFPUserVisibleException
+ */
+ protected function doLevelParenthesis() {
+ if ( $this->mCur->type == AFPToken::TBRACE && $this->mCur->value == '(' ) {
+ $result = $this->doLevelSemicolon();
+
+ if ( !( $this->mCur->type == AFPToken::TBRACE && $this->mCur->value == ')' ) ) {
+ throw new AFPUserVisibleException(
+ 'expectednotfound',
+ $this->mPos,
+ [ ')', $this->mCur->type, $this->mCur->value ]
+ );
+ }
+ $this->move();
+
+ return $result;
+ }
+
+ return $this->doLevelFunction();
+ }
+
+ /**
+ * Handles function calls.
+ *
+ * @return AFPTreeNode
+ * @throws AFPUserVisibleException
+ */
+ protected function doLevelFunction() {
+ if ( $this->mCur->type == AFPToken::TID &&
+ isset( AbuseFilterParser::$mFunctions[$this->mCur->value] )
+ ) {
+ $func = $this->mCur->value;
+ $position = $this->mPos;
+ $this->move();
+ if ( $this->mCur->type != AFPToken::TBRACE || $this->mCur->value != '(' ) {
+ throw new AFPUserVisibleException( 'expectednotfound',
+ $this->mPos,
+ [
+ '(',
+ $this->mCur->type,
+ $this->mCur->value
+ ]
+ );
+ }
+
+ $args = [];
+ do {
+ $args[] = $this->doLevelSemicolon();
+ } while ( $this->mCur->type == AFPToken::TCOMMA );
+
+ if ( $this->mCur->type != AFPToken::TBRACE || $this->mCur->value != ')' ) {
+ throw new AFPUserVisibleException( 'expectednotfound',
+ $this->mPos,
+ [
+ ')',
+ $this->mCur->type,
+ $this->mCur->value
+ ]
+ );
+ }
+ $this->move();
+
+ array_unshift( $args, $func );
+ return new AFPTreeNode( AFPTreeNode::FUNCTION_CALL, $args, $position );
+ }
+
+ return $this->doLevelAtom();
+ }
+
+ /**
+ * Handle literals.
+ * @return AFPTreeNode
+ * @throws AFPUserVisibleException
+ */
+ protected function doLevelAtom() {
+ $tok = $this->mCur->value;
+ switch ( $this->mCur->type ) {
+ case AFPToken::TID:
+ case AFPToken::TSTRING:
+ case AFPToken::TFLOAT:
+ case AFPToken::TINT:
+ $result = new AFPTreeNode( AFPTreeNode::ATOM, $this->mCur, $this->mPos );
+ break;
+ case AFPToken::TKEYWORD:
+ if ( in_array( $tok, [ "true", "false", "null" ] ) ) {
+ $result = new AFPTreeNode( AFPTreeNode::ATOM, $this->mCur, $this->mPos );
+ break;
+ }
+
+ throw new AFPUserVisibleException(
+ 'unrecognisedkeyword',
+ $this->mPos,
+ [ $tok ]
+ );
+ /** @noinspection PhpMissingBreakStatementInspection */
+ case AFPToken::TSQUAREBRACKET:
+ if ( $this->mCur->value == '[' ) {
+ $list = [];
+ while ( true ) {
+ $this->move();
+ if ( $this->mCur->type == AFPToken::TSQUAREBRACKET && $this->mCur->value == ']' ) {
+ break;
+ }
+
+ $list[] = $this->doLevelSet();
+
+ if ( $this->mCur->type == AFPToken::TSQUAREBRACKET && $this->mCur->value == ']' ) {
+ break;
+ }
+ if ( $this->mCur->type != AFPToken::TCOMMA ) {
+ throw new AFPUserVisibleException(
+ 'expectednotfound',
+ $this->mPos,
+ [ ', or ]', $this->mCur->type, $this->mCur->value ]
+ );
+ }
+ }
+
+ $result = new AFPTreeNode( AFPTreeNode::LIST_DEFINITION, $list, $this->mPos );
+ break;
+ }
+
+ // Fallthrough expected
+ default:
+ throw new AFPUserVisibleException(
+ 'unexpectedtoken',
+ $this->mPos,
+ [
+ $this->mCur->type,
+ $this->mCur->value
+ ]
+ );
+ }
+
+ $this->move();
+ return $result;
+ }
+}
diff --git a/www/wiki/extensions/AbuseFilter/includes/parser/AFPUserVisibleException.php b/www/wiki/extensions/AbuseFilter/includes/parser/AFPUserVisibleException.php
new file mode 100644
index 00000000..b6e89d03
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/includes/parser/AFPUserVisibleException.php
@@ -0,0 +1,40 @@
+<?php
+
+// Exceptions that we might conceivably want to report to ordinary users
+// (i.e. exceptions that don't represent bugs in the extension itself)
+class AFPUserVisibleException extends AFPException {
+ public $mExceptionId;
+ public $mPosition;
+ public $mParams;
+
+ /**
+ * @param string $exception_id
+ * @param int $position
+ * @param array $params
+ */
+ function __construct( $exception_id, $position, $params ) {
+ $this->mExceptionID = $exception_id;
+ $this->mPosition = $position;
+ $this->mParams = $params;
+
+ // Exception message text for logs should be in English.
+ $msg = $this->getMessageObj()->inLanguage( 'en' )->useDatabase( false )->text();
+ parent::__construct( $msg );
+ }
+
+ public function getMessageObj() {
+ // Give grep a chance to find the usages:
+ // abusefilter-exception-unexpectedatend, abusefilter-exception-expectednotfound
+ // abusefilter-exception-unrecognisedkeyword, abusefilter-exception-unexpectedtoken
+ // abusefilter-exception-unclosedstring, abusefilter-exception-invalidoperator
+ // abusefilter-exception-unrecognisedtoken, abusefilter-exception-noparams
+ // abusefilter-exception-dividebyzero, abusefilter-exception-unrecognisedvar
+ // abusefilter-exception-notenoughargs, abusefilter-exception-regexfailure
+ // abusefilter-exception-overridebuiltin, abusefilter-exception-outofbounds
+ // abusefilter-exception-notlist, abusefilter-exception-unclosedcomment
+ return wfMessage(
+ 'abusefilter-exception-' . $this->mExceptionID,
+ array_merge( [ $this->mPosition ], $this->mParams )
+ );
+ }
+}
diff --git a/www/wiki/extensions/AbuseFilter/includes/parser/AbuseFilterCachingParser.php b/www/wiki/extensions/AbuseFilter/includes/parser/AbuseFilterCachingParser.php
new file mode 100644
index 00000000..37384356
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/includes/parser/AbuseFilterCachingParser.php
@@ -0,0 +1,279 @@
+<?php
+/**
+ * AbuseFilterCachingParser is the version of AbuseFilterParser which parses
+ * the code into an abstract syntax tree before evaluating it, and caches that
+ * tree.
+ *
+ * It currently inherits AbuseFilterParser in order to avoid code duplication.
+ * In future, this code will replace current AbuseFilterParser entirely.
+ */
+class AbuseFilterCachingParser extends AbuseFilterParser {
+ /**
+ * Return the generated version of the parser for cache invalidation
+ * purposes. Automatically tracks list of all functions and invalidates the
+ * cache if it is changed.
+ * @return string
+ */
+ public static function getCacheVersion() {
+ static $version = null;
+ if ( $version !== null ) {
+ return $version;
+ }
+
+ $versionKey = [
+ AFPTreeParser::CACHE_VERSION,
+ AbuseFilterTokenizer::CACHE_VERSION,
+ array_keys( AbuseFilterParser::$mFunctions ),
+ array_keys( AbuseFilterParser::$mKeywords ),
+ ];
+ $version = hash( 'sha256', serialize( $versionKey ) );
+
+ return $version;
+ }
+
+ public function resetState() {
+ $this->mVars = new AbuseFilterVariableHolder;
+ $this->mCur = new AFPToken();
+ }
+
+ public function intEval( $code ) {
+ static $cache = null;
+ if ( !$cache ) {
+ $cache = ObjectCache::getLocalServerInstance( 'hash' );
+ }
+
+ $tree = $cache->getWithSetCallback(
+ $cache->makeGlobalKey(
+ __CLASS__,
+ self::getCacheVersion(),
+ hash( 'sha256', $code )
+ ),
+ $cache::TTL_DAY,
+ function () use ( $code ) {
+ $parser = new AFPTreeParser();
+ return $parser->parse( $code ) ?: false;
+ }
+ );
+
+ return $tree
+ ? $this->evalNode( $tree )
+ : new AFPData( AFPData::DNULL, null );
+ }
+
+ /**
+ * Evaluate the value of the specified AST node.
+ *
+ * @param AFPTreeNode $node The node to evaluate.
+ * @return AFPData
+ * @throws AFPException
+ * @throws AFPUserVisibleException
+ * @throws MWException
+ */
+ public function evalNode( AFPTreeNode $node ) {
+ // A lot of AbuseFilterParser features rely on $this->mCur->pos or
+ // $this->mPos for error reporting.
+ // FIXME: this is a hack which needs to be removed when the parsers are
+ // merged.
+ $this->mPos = $node->position;
+ $this->mCur->pos = $node->position;
+
+ switch ( $node->type ) {
+ case AFPTreeNode::ATOM:
+ $tok = $node->children;
+ switch ( $tok->type ) {
+ case AFPToken::TID:
+ return $this->getVarValue( strtolower( $tok->value ) );
+ case AFPToken::TSTRING:
+ return new AFPData( AFPData::DSTRING, $tok->value );
+ case AFPToken::TFLOAT:
+ return new AFPData( AFPData::DFLOAT, $tok->value );
+ case AFPToken::TINT:
+ return new AFPData( AFPData::DINT, $tok->value );
+ /** @noinspection PhpMissingBreakStatementInspection */
+ case AFPToken::TKEYWORD:
+ switch ( $tok->value ) {
+ case "true":
+ return new AFPData( AFPData::DBOOL, true );
+ case "false":
+ return new AFPData( AFPData::DBOOL, false );
+ case "null":
+ return new AFPData();
+ }
+ // Fallthrough intended
+ default:
+ throw new AFPException( "Unknown token provided in the ATOM node" );
+ }
+ case AFPTreeNode::LIST_DEFINITION:
+ $items = array_map( [ $this, 'evalNode' ], $node->children );
+ return new AFPData( AFPData::DLIST, $items );
+
+ case AFPTreeNode::FUNCTION_CALL:
+ $functionName = $node->children[0];
+ $args = array_slice( $node->children, 1 );
+
+ $func = self::$mFunctions[$functionName];
+ $dataArgs = array_map( [ $this, 'evalNode' ], $args );
+
+ /** @noinspection PhpToStringImplementationInspection */
+ $funcHash = md5( $func . serialize( $dataArgs ) );
+
+ if ( isset( self::$funcCache[$funcHash] ) &&
+ !in_array( $func, self::$ActiveFunctions )
+ ) {
+ $result = self::$funcCache[$funcHash];
+ } else {
+ AbuseFilter::triggerLimiter();
+ $result = self::$funcCache[$funcHash] = $this->$func( $dataArgs );
+ }
+
+ if ( count( self::$funcCache ) > 1000 ) {
+ self::$funcCache = [];
+ }
+
+ return $result;
+
+ case AFPTreeNode::LIST_INDEX:
+ list( $list, $offset ) = $node->children;
+
+ $list = $this->evalNode( $list );
+ if ( $list->type != AFPData::DLIST ) {
+ throw new AFPUserVisibleException( 'notlist', $node->position, [] );
+ }
+
+ $offset = $this->evalNode( $offset )->toInt();
+
+ $list = $list->toList();
+ if ( count( $list ) <= $offset ) {
+ throw new AFPUserVisibleException( 'outofbounds', $node->position,
+ [ $offset, count( $list ) ] );
+ }
+
+ return $list[$offset];
+
+ case AFPTreeNode::UNARY:
+ list( $operation, $argument ) = $node->children;
+ $argument = $this->evalNode( $argument );
+ if ( $operation == '-' ) {
+ return AFPData::unaryMinus( $argument );
+ }
+ return $argument;
+
+ case AFPTreeNode::KEYWORD_OPERATOR:
+ list( $keyword, $leftOperand, $rightOperand ) = $node->children;
+ $func = self::$mKeywords[$keyword];
+ $leftOperand = $this->evalNode( $leftOperand );
+ $rightOperand = $this->evalNode( $rightOperand );
+
+ AbuseFilter::triggerLimiter();
+ $result = AFPData::$func( $leftOperand, $rightOperand, $node->position );
+
+ return $result;
+ case AFPTreeNode::BOOL_INVERT:
+ list( $argument ) = $node->children;
+ $argument = $this->evalNode( $argument );
+ return AFPData::boolInvert( $argument );
+
+ case AFPTreeNode::POW:
+ list( $base, $exponent ) = $node->children;
+ $base = $this->evalNode( $base );
+ $exponent = $this->evalNode( $exponent );
+ return AFPData::pow( $base, $exponent );
+
+ case AFPTreeNode::MUL_REL:
+ list( $op, $leftOperand, $rightOperand ) = $node->children;
+ $leftOperand = $this->evalNode( $leftOperand );
+ $rightOperand = $this->evalNode( $rightOperand );
+ return AFPData::mulRel( $leftOperand, $rightOperand, $op, /* FIXME */
+ 0 );
+
+ case AFPTreeNode::SUM_REL:
+ list( $op, $leftOperand, $rightOperand ) = $node->children;
+ $leftOperand = $this->evalNode( $leftOperand );
+ $rightOperand = $this->evalNode( $rightOperand );
+ switch ( $op ) {
+ case '+':
+ return AFPData::sum( $leftOperand, $rightOperand );
+ case '-':
+ return AFPData::sub( $leftOperand, $rightOperand );
+ default:
+ throw new AFPException( "Unknown sum-related operator: {$op}" );
+ }
+
+ case AFPTreeNode::COMPARE:
+ list( $op, $leftOperand, $rightOperand ) = $node->children;
+ $leftOperand = $this->evalNode( $leftOperand );
+ $rightOperand = $this->evalNode( $rightOperand );
+ AbuseFilter::triggerLimiter();
+ return AFPData::compareOp( $leftOperand, $rightOperand, $op );
+
+ case AFPTreeNode::LOGIC:
+ list( $op, $leftOperand, $rightOperand ) = $node->children;
+ $leftOperand = $this->evalNode( $leftOperand );
+ $value = $leftOperand->toBool();
+ // Short-circuit.
+ if ( ( !$value && $op == '&' ) || ( $value && $op == '|' ) ) {
+ return $leftOperand;
+ }
+ $rightOperand = $this->evalNode( $rightOperand );
+ return AFPData::boolOp( $leftOperand, $rightOperand, $op );
+
+ case AFPTreeNode::CONDITIONAL:
+ list( $condition, $valueIfTrue, $valueIfFalse ) = $node->children;
+ $condition = $this->evalNode( $condition );
+ if ( $condition->toBool() ) {
+ return $this->evalNode( $valueIfTrue );
+ } else {
+ return $this->evalNode( $valueIfFalse );
+ }
+
+ case AFPTreeNode::ASSIGNMENT:
+ list( $varName, $value ) = $node->children;
+ $value = $this->evalNode( $value );
+ $this->setUserVariable( $varName, $value );
+ return $value;
+
+ case AFPTreeNode::INDEX_ASSIGNMENT:
+ list( $varName, $offset, $value ) = $node->children;
+
+ $list = $this->mVars->getVar( $varName );
+ if ( $list->type != AFPData::DLIST ) {
+ throw new AFPUserVisibleException( 'notlist', $node->position, [] );
+ }
+
+ $offset = $this->evalNode( $offset )->toInt();
+
+ $list = $list->toList();
+ if ( count( $list ) <= $offset ) {
+ throw new AFPUserVisibleException( 'outofbounds', $node->position,
+ [ $offset, count( $list ) ] );
+ }
+
+ $list[$offset] = $this->evalNode( $value );
+ $this->setUserVariable( $varName, new AFPData( AFPData::DLIST, $list ) );
+ return $value;
+
+ case AFPTreeNode::LIST_APPEND:
+ list( $varName, $value ) = $node->children;
+
+ $list = $this->mVars->getVar( $varName );
+ if ( $list->type != AFPData::DLIST ) {
+ throw new AFPUserVisibleException( 'notlist', $node->position, [] );
+ }
+
+ $list = $list->toList();
+ $list[] = $this->evalNode( $value );
+ $this->setUserVariable( $varName, new AFPData( AFPData::DLIST, $list ) );
+ return $value;
+
+ case AFPTreeNode::SEMICOLON:
+ $lastValue = null;
+ foreach ( $node->children as $statement ) {
+ $lastValue = $this->evalNode( $statement );
+ }
+
+ return $lastValue;
+ default:
+ throw new AFPException( "Unknown node type passed: {$node->type}" );
+ }
+ }
+}
diff --git a/www/wiki/extensions/AbuseFilter/includes/parser/AbuseFilterParser.php b/www/wiki/extensions/AbuseFilter/includes/parser/AbuseFilterParser.php
new file mode 100644
index 00000000..50f8dddc
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/includes/parser/AbuseFilterParser.php
@@ -0,0 +1,1560 @@
+<?php
+
+use Wikimedia\Equivset\Equivset;
+
+class AbuseFilterParser {
+ public $mCode, $mTokens, $mPos, $mCur, $mShortCircuit, $mAllowShort, $mLen;
+
+ /**
+ * @var AbuseFilterVariableHolder
+ */
+ public $mVars;
+
+ // length,lcase,ucase,ccnorm,rmdoubles,specialratio,rmspecials,norm,count,get_matches
+ public static $mFunctions = [
+ 'lcase' => 'funcLc',
+ 'ucase' => 'funcUc',
+ 'length' => 'funcLen',
+ 'string' => 'castString',
+ 'int' => 'castInt',
+ 'float' => 'castFloat',
+ 'bool' => 'castBool',
+ 'norm' => 'funcNorm',
+ 'ccnorm' => 'funcCCNorm',
+ 'ccnorm_contains_any' => 'funcCCNormContainsAny',
+ 'ccnorm_contains_all' => 'funcCCNormContainsAll',
+ 'specialratio' => 'funcSpecialRatio',
+ 'rmspecials' => 'funcRMSpecials',
+ 'rmdoubles' => 'funcRMDoubles',
+ 'rmwhitespace' => 'funcRMWhitespace',
+ 'count' => 'funcCount',
+ 'rcount' => 'funcRCount',
+ 'get_matches' => 'funcGetMatches',
+ 'ip_in_range' => 'funcIPInRange',
+ 'contains_any' => 'funcContainsAny',
+ 'contains_all' => 'funcContainsAll',
+ 'substr' => 'funcSubstr',
+ 'strlen' => 'funcLen',
+ 'strpos' => 'funcStrPos',
+ 'str_replace' => 'funcStrReplace',
+ 'rescape' => 'funcStrRegexEscape',
+ 'set' => 'funcSetVar',
+ 'set_var' => 'funcSetVar',
+ ];
+
+ // Functions that affect parser state, and shouldn't be cached.
+ public static $ActiveFunctions = [
+ 'funcSetVar',
+ ];
+
+ public static $mKeywords = [
+ 'in' => 'keywordIn',
+ 'like' => 'keywordLike',
+ 'matches' => 'keywordLike',
+ 'contains' => 'keywordContains',
+ 'rlike' => 'keywordRegex',
+ 'irlike' => 'keywordRegexInsensitive',
+ 'regex' => 'keywordRegex',
+ ];
+
+ public static $funcCache = [];
+
+ /**
+ * @var Equivset
+ */
+ protected static $equivset;
+
+ /**
+ * Create a new instance
+ *
+ * @param AbuseFilterVariableHolder $vars
+ */
+ public function __construct( $vars = null ) {
+ $this->resetState();
+ if ( $vars instanceof AbuseFilterVariableHolder ) {
+ $this->mVars = $vars;
+ }
+ }
+
+ public function resetState() {
+ $this->mCode = '';
+ $this->mTokens = [];
+ $this->mVars = new AbuseFilterVariableHolder;
+ $this->mPos = 0;
+ $this->mShortCircuit = false;
+ $this->mAllowShort = true;
+ }
+
+ /**
+ * @param string $filter
+ * @return array|bool
+ */
+ public function checkSyntax( $filter ) {
+ try {
+ $origAS = $this->mAllowShort;
+ $this->mAllowShort = false;
+ $this->parse( $filter );
+ } catch ( AFPUserVisibleException $excep ) {
+ $this->mAllowShort = $origAS;
+
+ return [ $excep->getMessageObj()->text(), $excep->mPosition ];
+ }
+ $this->mAllowShort = $origAS;
+
+ return true;
+ }
+
+ /**
+ * @param string $name
+ * @param mixed $value
+ */
+ public function setVar( $name, $value ) {
+ $this->mVars->setVar( $name, $value );
+ }
+
+ /**
+ * @param mixed $vars
+ */
+ public function setVars( $vars ) {
+ if ( is_array( $vars ) ) {
+ foreach ( $vars as $name => $var ) {
+ $this->setVar( $name, $var );
+ }
+ } elseif ( $vars instanceof AbuseFilterVariableHolder ) {
+ $this->mVars->addHolders( $vars );
+ }
+ }
+
+ /**
+ * @return AFPToken
+ */
+ protected function move() {
+ list( $this->mCur, $this->mPos ) = $this->mTokens[$this->mPos];
+ }
+
+ /**
+ * getState() function allows parser state to be rollbacked to several tokens back
+ * @return AFPParserState
+ */
+ protected function getState() {
+ return new AFPParserState( $this->mCur, $this->mPos );
+ }
+
+ /**
+ * setState() function allows parser state to be rollbacked to several tokens back
+ * @param AFPParserState $state
+ */
+ protected function setState( AFPParserState $state ) {
+ $this->mCur = $state->token;
+ $this->mPos = $state->pos;
+ }
+
+ /**
+ * @return mixed
+ * @throws AFPUserVisibleException
+ */
+ protected function skipOverBraces() {
+ if ( !( $this->mCur->type == AFPToken::TBRACE && $this->mCur->value == '(' ) ||
+ !$this->mShortCircuit
+ ) {
+ return;
+ }
+
+ $braces = 1;
+ while ( $this->mCur->type != AFPToken::TNONE && $braces > 0 ) {
+ $this->move();
+ if ( $this->mCur->type == AFPToken::TBRACE ) {
+ if ( $this->mCur->value == '(' ) {
+ $braces++;
+ } elseif ( $this->mCur->value == ')' ) {
+ $braces--;
+ }
+ }
+ }
+ if ( !( $this->mCur->type == AFPToken::TBRACE && $this->mCur->value == ')' ) ) {
+ throw new AFPUserVisibleException( 'expectednotfound', $this->mCur->pos, [ ')' ] );
+ }
+ }
+
+ /**
+ * @param string $code
+ * @return bool
+ */
+ public function parse( $code ) {
+ return $this->intEval( $code )->toBool();
+ }
+
+ /**
+ * @param string $filter
+ * @return string
+ */
+ public function evaluateExpression( $filter ) {
+ return $this->intEval( $filter )->toString();
+ }
+
+ /**
+ * @param string $code
+ * @return AFPData
+ */
+ public function intEval( $code ) {
+ // Setup, resetting
+ $this->mCode = $code;
+ $this->mTokens = AbuseFilterTokenizer::tokenize( $code );
+ $this->mPos = 0;
+ $this->mLen = strlen( $code );
+ $this->mShortCircuit = false;
+
+ $result = new AFPData();
+ $this->doLevelEntry( $result );
+
+ return $result;
+ }
+
+ /**
+ * @param string $a
+ * @param string $b
+ * @return int
+ */
+ static function lengthCompare( $a, $b ) {
+ if ( strlen( $a ) == strlen( $b ) ) {
+ return 0;
+ }
+
+ return ( strlen( $a ) < strlen( $b ) ) ? -1 : 1;
+ }
+
+ /* Levels */
+
+ /**
+ * Handles unexpected characters after the expression
+ *
+ * @param AFPData &$result
+ * @throws AFPUserVisibleException
+ */
+ protected function doLevelEntry( &$result ) {
+ $this->doLevelSemicolon( $result );
+
+ if ( $this->mCur->type != AFPToken::TNONE ) {
+ throw new AFPUserVisibleException(
+ 'unexpectedatend',
+ $this->mCur->pos, [ $this->mCur->type ]
+ );
+ }
+ }
+
+ /**
+ * Handles multiple expressions
+ * @param AFPData &$result
+ */
+ protected function doLevelSemicolon( &$result ) {
+ do {
+ $this->move();
+ if ( $this->mCur->type != AFPToken::TSTATEMENTSEPARATOR ) {
+ $this->doLevelSet( $result );
+ }
+ } while ( $this->mCur->type == AFPToken::TSTATEMENTSEPARATOR );
+ }
+
+ /**
+ * Handles multiple expressions
+ *
+ * @param AFPData &$result
+ * @throws AFPUserVisibleException
+ */
+ protected function doLevelSet( &$result ) {
+ if ( $this->mCur->type == AFPToken::TID ) {
+ $varname = $this->mCur->value;
+ $prev = $this->getState();
+ $this->move();
+
+ if ( $this->mCur->type == AFPToken::TOP && $this->mCur->value == ':=' ) {
+ $this->move();
+ $this->doLevelSet( $result );
+ $this->setUserVariable( $varname, $result );
+
+ return;
+ } elseif ( $this->mCur->type == AFPToken::TSQUAREBRACKET && $this->mCur->value == '[' ) {
+ if ( !$this->mVars->varIsSet( $varname ) ) {
+ throw new AFPUserVisibleException( 'unrecognisedvar',
+ $this->mCur->pos,
+ [ $varname ]
+ );
+ }
+ $list = $this->mVars->getVar( $varname );
+ if ( $list->type != AFPData::DLIST ) {
+ throw new AFPUserVisibleException( 'notlist', $this->mCur->pos, [] );
+ }
+ $list = $list->toList();
+ $this->move();
+ if ( $this->mCur->type == AFPToken::TSQUAREBRACKET && $this->mCur->value == ']' ) {
+ $idx = 'new';
+ } else {
+ $this->setState( $prev );
+ $this->move();
+ $idx = new AFPData();
+ $this->doLevelSemicolon( $idx );
+ $idx = $idx->toInt();
+ if ( !( $this->mCur->type == AFPToken::TSQUAREBRACKET && $this->mCur->value == ']' ) ) {
+ throw new AFPUserVisibleException( 'expectednotfound', $this->mCur->pos,
+ [ ']', $this->mCur->type, $this->mCur->value ] );
+ }
+ if ( count( $list ) <= $idx ) {
+ throw new AFPUserVisibleException( 'outofbounds', $this->mCur->pos,
+ [ $idx, count( $result->data ) ] );
+ }
+ }
+ $this->move();
+ if ( $this->mCur->type == AFPToken::TOP && $this->mCur->value == ':=' ) {
+ $this->move();
+ $this->doLevelSet( $result );
+ if ( $idx === 'new' ) {
+ $list[] = $result;
+ } else {
+ $list[$idx] = $result;
+ }
+ $this->setUserVariable( $varname, new AFPData( AFPData::DLIST, $list ) );
+
+ return;
+ } else {
+ $this->setState( $prev );
+ }
+ } else {
+ $this->setState( $prev );
+ }
+ }
+ $this->doLevelConditions( $result );
+ }
+
+ /**
+ * @param AFPData &$result
+ * @throws AFPUserVisibleException
+ */
+ protected function doLevelConditions( &$result ) {
+ if ( $this->mCur->type == AFPToken::TKEYWORD && $this->mCur->value == 'if' ) {
+ $this->move();
+ $this->doLevelBoolOps( $result );
+
+ if ( !( $this->mCur->type == AFPToken::TKEYWORD && $this->mCur->value == 'then' ) ) {
+ throw new AFPUserVisibleException( 'expectednotfound',
+ $this->mCur->pos,
+ [
+ 'then',
+ $this->mCur->type,
+ $this->mCur->value
+ ]
+ );
+ }
+ $this->move();
+
+ $r1 = new AFPData();
+ $r2 = new AFPData();
+
+ $isTrue = $result->toBool();
+
+ if ( !$isTrue ) {
+ $scOrig = $this->mShortCircuit;
+ $this->mShortCircuit = $this->mAllowShort;
+ }
+ $this->doLevelConditions( $r1 );
+ if ( !$isTrue ) {
+ $this->mShortCircuit = $scOrig;
+ }
+
+ if ( !( $this->mCur->type == AFPToken::TKEYWORD && $this->mCur->value == 'else' ) ) {
+ throw new AFPUserVisibleException( 'expectednotfound',
+ $this->mCur->pos,
+ [
+ 'else',
+ $this->mCur->type,
+ $this->mCur->value
+ ]
+ );
+ }
+ $this->move();
+
+ if ( $isTrue ) {
+ $scOrig = $this->mShortCircuit;
+ $this->mShortCircuit = $this->mAllowShort;
+ }
+ $this->doLevelConditions( $r2 );
+ if ( $isTrue ) {
+ $this->mShortCircuit = $scOrig;
+ }
+
+ if ( !( $this->mCur->type == AFPToken::TKEYWORD && $this->mCur->value == 'end' ) ) {
+ throw new AFPUserVisibleException( 'expectednotfound',
+ $this->mCur->pos,
+ [
+ 'end',
+ $this->mCur->type,
+ $this->mCur->value
+ ]
+ );
+ }
+ $this->move();
+
+ if ( $result->toBool() ) {
+ $result = $r1;
+ } else {
+ $result = $r2;
+ }
+ } else {
+ $this->doLevelBoolOps( $result );
+ if ( $this->mCur->type == AFPToken::TOP && $this->mCur->value == '?' ) {
+ $this->move();
+ $r1 = new AFPData();
+ $r2 = new AFPData();
+
+ $isTrue = $result->toBool();
+
+ if ( !$isTrue ) {
+ $scOrig = $this->mShortCircuit;
+ $this->mShortCircuit = $this->mAllowShort;
+ }
+ $this->doLevelConditions( $r1 );
+ if ( !$isTrue ) {
+ $this->mShortCircuit = $scOrig;
+ }
+
+ if ( !( $this->mCur->type == AFPToken::TOP && $this->mCur->value == ':' ) ) {
+ throw new AFPUserVisibleException( 'expectednotfound',
+ $this->mCur->pos,
+ [
+ ':',
+ $this->mCur->type,
+ $this->mCur->value
+ ]
+ );
+ }
+ $this->move();
+
+ if ( $isTrue ) {
+ $scOrig = $this->mShortCircuit;
+ $this->mShortCircuit = $this->mAllowShort;
+ }
+ $this->doLevelConditions( $r2 );
+ if ( $isTrue ) {
+ $this->mShortCircuit = $scOrig;
+ }
+
+ if ( $isTrue ) {
+ $result = $r1;
+ } else {
+ $result = $r2;
+ }
+ }
+ }
+ }
+
+ /**
+ * @param AFPData &$result
+ */
+ protected function doLevelBoolOps( &$result ) {
+ $this->doLevelCompares( $result );
+ $ops = [ '&', '|', '^' ];
+ while ( $this->mCur->type == AFPToken::TOP && in_array( $this->mCur->value, $ops ) ) {
+ $op = $this->mCur->value;
+ $this->move();
+ $r2 = new AFPData();
+
+ // We can go on quickly as either one statement with | is true or on with & is false
+ if ( ( $op == '&' && !$result->toBool() ) || ( $op == '|' && $result->toBool() ) ) {
+ $orig = $this->mShortCircuit;
+ $this->mShortCircuit = $this->mAllowShort;
+ $this->doLevelCompares( $r2 );
+ $this->mShortCircuit = $orig;
+ $result = new AFPData( AFPData::DBOOL, $result->toBool() );
+ continue;
+ }
+
+ $this->doLevelCompares( $r2 );
+
+ $result = AFPData::boolOp( $result, $r2, $op );
+ }
+ }
+
+ /**
+ * @param string &$result
+ */
+ protected function doLevelCompares( &$result ) {
+ $this->doLevelSumRels( $result );
+ $ops = [ '==', '===', '!=', '!==', '<', '>', '<=', '>=', '=' ];
+ while ( $this->mCur->type == AFPToken::TOP && in_array( $this->mCur->value, $ops ) ) {
+ $op = $this->mCur->value;
+ $this->move();
+ $r2 = new AFPData();
+ $this->doLevelSumRels( $r2 );
+ if ( $this->mShortCircuit ) {
+ break; // The result doesn't matter.
+ }
+ AbuseFilter::triggerLimiter();
+ $result = AFPData::compareOp( $result, $r2, $op );
+ }
+ }
+
+ /**
+ * @param string &$result
+ */
+ protected function doLevelSumRels( &$result ) {
+ $this->doLevelMulRels( $result );
+ $ops = [ '+', '-' ];
+ while ( $this->mCur->type == AFPToken::TOP && in_array( $this->mCur->value, $ops ) ) {
+ $op = $this->mCur->value;
+ $this->move();
+ $r2 = new AFPData();
+ $this->doLevelMulRels( $r2 );
+ if ( $this->mShortCircuit ) {
+ break; // The result doesn't matter.
+ }
+ if ( $op == '+' ) {
+ $result = AFPData::sum( $result, $r2 );
+ }
+ if ( $op == '-' ) {
+ $result = AFPData::sub( $result, $r2 );
+ }
+ }
+ }
+
+ /**
+ * @param string &$result
+ */
+ protected function doLevelMulRels( &$result ) {
+ $this->doLevelPow( $result );
+ $ops = [ '*', '/', '%' ];
+ while ( $this->mCur->type == AFPToken::TOP && in_array( $this->mCur->value, $ops ) ) {
+ $op = $this->mCur->value;
+ $this->move();
+ $r2 = new AFPData();
+ $this->doLevelPow( $r2 );
+ if ( $this->mShortCircuit ) {
+ break; // The result doesn't matter.
+ }
+ $result = AFPData::mulRel( $result, $r2, $op, $this->mCur->pos );
+ }
+ }
+
+ /**
+ * @param string &$result
+ */
+ protected function doLevelPow( &$result ) {
+ $this->doLevelBoolInvert( $result );
+ while ( $this->mCur->type == AFPToken::TOP && $this->mCur->value == '**' ) {
+ $this->move();
+ $expanent = new AFPData();
+ $this->doLevelBoolInvert( $expanent );
+ if ( $this->mShortCircuit ) {
+ break; // The result doesn't matter.
+ }
+ $result = AFPData::pow( $result, $expanent );
+ }
+ }
+
+ /**
+ * @param string &$result
+ */
+ protected function doLevelBoolInvert( &$result ) {
+ if ( $this->mCur->type == AFPToken::TOP && $this->mCur->value == '!' ) {
+ $this->move();
+ $this->doLevelSpecialWords( $result );
+ if ( $this->mShortCircuit ) {
+ return; // The result doesn't matter.
+ }
+ $result = AFPData::boolInvert( $result );
+ } else {
+ $this->doLevelSpecialWords( $result );
+ }
+ }
+
+ /**
+ * @param string &$result
+ */
+ protected function doLevelSpecialWords( &$result ) {
+ $this->doLevelUnarys( $result );
+ $keyword = strtolower( $this->mCur->value );
+ if ( $this->mCur->type == AFPToken::TKEYWORD
+ && in_array( $keyword, array_keys( self::$mKeywords ) )
+ ) {
+ $func = self::$mKeywords[$keyword];
+ $this->move();
+ $r2 = new AFPData();
+ $this->doLevelUnarys( $r2 );
+
+ if ( $this->mShortCircuit ) {
+ return; // The result doesn't matter.
+ }
+
+ AbuseFilter::triggerLimiter();
+
+ $result = AFPData::$func( $result, $r2, $this->mCur->pos );
+ }
+ }
+
+ /**
+ * @param string &$result
+ */
+ protected function doLevelUnarys( &$result ) {
+ $op = $this->mCur->value;
+ if ( $this->mCur->type == AFPToken::TOP && ( $op == "+" || $op == "-" ) ) {
+ $this->move();
+ $this->doLevelListElements( $result );
+ if ( $this->mShortCircuit ) {
+ return; // The result doesn't matter.
+ }
+ if ( $op == '-' ) {
+ $result = AFPData::unaryMinus( $result );
+ }
+ } else {
+ $this->doLevelListElements( $result );
+ }
+ }
+
+ /**
+ * @param string &$result
+ * @throws AFPUserVisibleException
+ */
+ protected function doLevelListElements( &$result ) {
+ $this->doLevelBraces( $result );
+ while ( $this->mCur->type == AFPToken::TSQUAREBRACKET && $this->mCur->value == '[' ) {
+ $idx = new AFPData();
+ $this->doLevelSemicolon( $idx );
+ if ( !( $this->mCur->type == AFPToken::TSQUAREBRACKET && $this->mCur->value == ']' ) ) {
+ throw new AFPUserVisibleException( 'expectednotfound', $this->mCur->pos,
+ [ ']', $this->mCur->type, $this->mCur->value ] );
+ }
+ $idx = $idx->toInt();
+ if ( $result->type == AFPData::DLIST ) {
+ if ( count( $result->data ) <= $idx ) {
+ throw new AFPUserVisibleException( 'outofbounds', $this->mCur->pos,
+ [ $idx, count( $result->data ) ] );
+ }
+ $result = $result->data[$idx];
+ } else {
+ throw new AFPUserVisibleException( 'notlist', $this->mCur->pos, [] );
+ }
+ $this->move();
+ }
+ }
+
+ /**
+ * @param string &$result
+ * @throws AFPUserVisibleException
+ */
+ protected function doLevelBraces( &$result ) {
+ if ( $this->mCur->type == AFPToken::TBRACE && $this->mCur->value == '(' ) {
+ if ( $this->mShortCircuit ) {
+ $this->skipOverBraces();
+ } else {
+ $this->doLevelSemicolon( $result );
+ }
+ if ( !( $this->mCur->type == AFPToken::TBRACE && $this->mCur->value == ')' ) ) {
+ throw new AFPUserVisibleException(
+ 'expectednotfound',
+ $this->mCur->pos,
+ [ ')', $this->mCur->type, $this->mCur->value ]
+ );
+ }
+ $this->move();
+ } else {
+ $this->doLevelFunction( $result );
+ }
+ }
+
+ /**
+ * @param string &$result
+ * @throws AFPUserVisibleException
+ */
+ protected function doLevelFunction( &$result ) {
+ if ( $this->mCur->type == AFPToken::TID && isset( self::$mFunctions[$this->mCur->value] ) ) {
+ $func = self::$mFunctions[$this->mCur->value];
+ $this->move();
+ if ( $this->mCur->type != AFPToken::TBRACE || $this->mCur->value != '(' ) {
+ throw new AFPUserVisibleException( 'expectednotfound',
+ $this->mCur->pos,
+ [
+ '(',
+ $this->mCur->type,
+ $this->mCur->value
+ ]
+ );
+ }
+
+ if ( $this->mShortCircuit ) {
+ $this->skipOverBraces();
+ $this->move();
+
+ return; // The result doesn't matter.
+ }
+
+ $args = [];
+ do {
+ $r = new AFPData();
+ $this->doLevelSemicolon( $r );
+ $args[] = $r;
+ } while ( $this->mCur->type == AFPToken::TCOMMA );
+
+ if ( $this->mCur->type != AFPToken::TBRACE || $this->mCur->value != ')' ) {
+ throw new AFPUserVisibleException( 'expectednotfound',
+ $this->mCur->pos,
+ [
+ ')',
+ $this->mCur->type,
+ $this->mCur->value
+ ]
+ );
+ }
+ $this->move();
+
+ $funcHash = md5( $func . serialize( $args ) );
+
+ if ( isset( self::$funcCache[$funcHash] ) &&
+ !in_array( $func, self::$ActiveFunctions )
+ ) {
+ $result = self::$funcCache[$funcHash];
+ } else {
+ AbuseFilter::triggerLimiter();
+ $result = self::$funcCache[$funcHash] = $this->$func( $args );
+ }
+
+ if ( count( self::$funcCache ) > 1000 ) {
+ self::$funcCache = [];
+ }
+ } else {
+ $this->doLevelAtom( $result );
+ }
+ }
+
+ /**
+ * @param string &$result
+ * @throws AFPUserVisibleException
+ * @return AFPData
+ */
+ protected function doLevelAtom( &$result ) {
+ $tok = $this->mCur->value;
+ switch ( $this->mCur->type ) {
+ case AFPToken::TID:
+ if ( $this->mShortCircuit ) {
+ break;
+ }
+ $var = strtolower( $tok );
+ $result = $this->getVarValue( $var );
+ break;
+ case AFPToken::TSTRING:
+ $result = new AFPData( AFPData::DSTRING, $tok );
+ break;
+ case AFPToken::TFLOAT:
+ $result = new AFPData( AFPData::DFLOAT, $tok );
+ break;
+ case AFPToken::TINT:
+ $result = new AFPData( AFPData::DINT, $tok );
+ break;
+ case AFPToken::TKEYWORD:
+ if ( $tok == "true" ) {
+ $result = new AFPData( AFPData::DBOOL, true );
+ } elseif ( $tok == "false" ) {
+ $result = new AFPData( AFPData::DBOOL, false );
+ } elseif ( $tok == "null" ) {
+ $result = new AFPData();
+ } else {
+ throw new AFPUserVisibleException(
+ 'unrecognisedkeyword',
+ $this->mCur->pos,
+ [ $tok ]
+ );
+ }
+ break;
+ case AFPToken::TNONE:
+ return; // Handled at entry level
+ case AFPToken::TBRACE:
+ if ( $this->mCur->value == ')' ) {
+ return; // Handled at the entry level
+ }
+ case AFPToken::TSQUAREBRACKET:
+ if ( $this->mCur->value == '[' ) {
+ $list = [];
+ while ( true ) {
+ $this->move();
+ if ( $this->mCur->type == AFPToken::TSQUAREBRACKET && $this->mCur->value == ']' ) {
+ break;
+ }
+ $item = new AFPData();
+ $this->doLevelSet( $item );
+ $list[] = $item;
+ if ( $this->mCur->type == AFPToken::TSQUAREBRACKET && $this->mCur->value == ']' ) {
+ break;
+ }
+ if ( $this->mCur->type != AFPToken::TCOMMA ) {
+ throw new AFPUserVisibleException(
+ 'expectednotfound',
+ $this->mCur->pos,
+ [ ', or ]', $this->mCur->type, $this->mCur->value ]
+ );
+ }
+ }
+ $result = new AFPData( AFPData::DLIST, $list );
+ break;
+ }
+ default:
+ throw new AFPUserVisibleException(
+ 'unexpectedtoken',
+ $this->mCur->pos,
+ [
+ $this->mCur->type,
+ $this->mCur->value
+ ]
+ );
+ }
+ $this->move();
+ }
+
+ /* End of levels */
+
+ /**
+ * @param string $var
+ * @return AFPData
+ * @throws AFPUserVisibleException
+ */
+ protected function getVarValue( $var ) {
+ $var = strtolower( $var );
+ $builderValues = AbuseFilter::getBuilderValues();
+ if ( !( array_key_exists( $var, $builderValues['vars'] )
+ || $this->mVars->varIsSet( $var ) )
+ ) {
+ // If the variable is invalid, throw an exception
+ throw new AFPUserVisibleException(
+ 'unrecognisedvar',
+ $this->mCur->pos,
+ [ $var ]
+ );
+ } else {
+ return $this->mVars->getVar( $var );
+ }
+ }
+
+ /**
+ * @param string $name
+ * @param string $value
+ * @throws AFPUserVisibleException
+ */
+ protected function setUserVariable( $name, $value ) {
+ $builderValues = AbuseFilter::getBuilderValues();
+ if ( array_key_exists( $name, $builderValues['vars'] ) ) {
+ throw new AFPUserVisibleException( 'overridebuiltin', $this->mCur->pos, [ $name ] );
+ }
+ $this->mVars->setVar( $name, $value );
+ }
+
+ // Built-in functions
+
+ /**
+ * @param array $args
+ * @return AFPData
+ * @throws AFPUserVisibleException
+ */
+ protected function funcLc( $args ) {
+ global $wgContLang;
+ if ( count( $args ) < 1 ) {
+ throw new AFPUserVisibleException(
+ 'notenoughargs',
+ $this->mCur->pos,
+ [ 'lc', 2, count( $args ) ]
+ );
+ }
+ $s = $args[0]->toString();
+
+ return new AFPData( AFPData::DSTRING, $wgContLang->lc( $s ) );
+ }
+
+ /**
+ * @param array $args
+ * @return AFPData
+ * @throws AFPUserVisibleException
+ */
+ protected function funcUc( $args ) {
+ global $wgContLang;
+ if ( count( $args ) < 1 ) {
+ throw new AFPUserVisibleException(
+ 'notenoughargs',
+ $this->mCur->pos,
+ [ 'uc', 2, count( $args ) ]
+ );
+ }
+ $s = $args[0]->toString();
+
+ return new AFPData( AFPData::DSTRING, $wgContLang->uc( $s ) );
+ }
+
+ /**
+ * @param array $args
+ * @return AFPData
+ * @throws AFPUserVisibleException
+ */
+ protected function funcLen( $args ) {
+ if ( count( $args ) < 1 ) {
+ throw new AFPUserVisibleException(
+ 'notenoughargs',
+ $this->mCur->pos,
+ [ 'len', 2, count( $args ) ]
+ );
+ }
+ if ( $args[0]->type == AFPData::DLIST ) {
+ // Don't use toString on lists, but count
+ return new AFPData( AFPData::DINT, count( $args[0]->data ) );
+ }
+ $s = $args[0]->toString();
+
+ return new AFPData( AFPData::DINT, mb_strlen( $s, 'utf-8' ) );
+ }
+
+ /**
+ * @param array $args
+ * @return AFPData
+ * @throws AFPUserVisibleException
+ */
+ protected function funcSimpleNorm( $args ) {
+ if ( count( $args ) < 1 ) {
+ throw new AFPUserVisibleException(
+ 'notenoughargs',
+ $this->mCur->pos,
+ [ 'simplenorm', 2, count( $args ) ]
+ );
+ }
+ $s = $args[0]->toString();
+
+ $s = preg_replace( '/[\d\W]+/', '', $s );
+ $s = strtolower( $s );
+
+ return new AFPData( AFPData::DSTRING, $s );
+ }
+
+ /**
+ * @param array $args
+ * @return AFPData
+ * @throws AFPUserVisibleException
+ */
+ protected function funcSpecialRatio( $args ) {
+ if ( count( $args ) < 1 ) {
+ throw new AFPUserVisibleException(
+ 'notenoughargs',
+ $this->mCur->pos,
+ [ 'specialratio', 1, count( $args ) ]
+ );
+ }
+ $s = $args[0]->toString();
+
+ if ( !strlen( $s ) ) {
+ return new AFPData( AFPData::DFLOAT, 0 );
+ }
+
+ $nospecials = $this->rmspecials( $s );
+
+ $val = 1. - ( ( mb_strlen( $nospecials ) / mb_strlen( $s ) ) );
+
+ return new AFPData( AFPData::DFLOAT, $val );
+ }
+
+ /**
+ * @param array $args
+ * @return AFPData
+ * @throws AFPUserVisibleException
+ */
+ protected function funcCount( $args ) {
+ if ( count( $args ) < 1 ) {
+ throw new AFPUserVisibleException(
+ 'notenoughargs',
+ $this->mCur->pos,
+ [ 'count', 1, count( $args ) ]
+ );
+ }
+
+ if ( $args[0]->type == AFPData::DLIST && count( $args ) == 1 ) {
+ return new AFPData( AFPData::DINT, count( $args[0]->data ) );
+ }
+
+ if ( count( $args ) == 1 ) {
+ $count = count( explode( ',', $args[0]->toString() ) );
+ } else {
+ $needle = $args[0]->toString();
+ $haystack = $args[1]->toString();
+
+ // T62203: Keep empty parameters from causing PHP warnings
+ if ( $needle === '' ) {
+ $count = 0;
+ } else {
+ $count = substr_count( $haystack, $needle );
+ }
+ }
+
+ return new AFPData( AFPData::DINT, $count );
+ }
+
+ /**
+ * @param array $args
+ * @return AFPData
+ * @throws AFPUserVisibleException
+ * @throws Exception
+ */
+ protected function funcRCount( $args ) {
+ if ( count( $args ) < 1 ) {
+ throw new AFPUserVisibleException(
+ 'notenoughargs',
+ $this->mCur->pos,
+ [ 'rcount', 1, count( $args ) ]
+ );
+ }
+
+ if ( count( $args ) == 1 ) {
+ $count = count( explode( ',', $args[0]->toString() ) );
+ } else {
+ $needle = $args[0]->toString();
+ $haystack = $args[1]->toString();
+
+ # Munge the regex
+ $needle = preg_replace( '!(\\\\\\\\)*(\\\\)?/!', '$1\/', $needle );
+ $needle = "/$needle/u";
+
+ // Omit the '$matches' argument to avoid computing them, just count.
+ $count = preg_match_all( $needle, $haystack );
+
+ if ( $count === false ) {
+ throw new AFPUserVisibleException(
+ 'regexfailure',
+ $this->mCur->pos,
+ [ 'unspecified error in preg_match_all()', $needle ]
+ );
+ }
+ }
+
+ return new AFPData( AFPData::DINT, $count );
+ }
+
+ /**
+ * Returns an array of matches of needle in the haystack, the first one for the whole regex,
+ * the other ones for every capturing group.
+ *
+ * @param array $args
+ * @return AFPData A list of matches.
+ * @throws AFPUserVisibleException
+ */
+ protected function funcGetMatches( $args ) {
+ if ( count( $args ) < 2 ) {
+ throw new AFPUserVisibleException(
+ 'notenoughargs',
+ $this->mCur->pos,
+ [ 'get_matches', 2, count( $args ) ]
+ );
+ }
+ $needle = $args[0]->toString();
+ $haystack = $args[1]->toString();
+
+ // Count the amount of capturing groups in the submitted pattern.
+ // This way we can return a fixed-dimension array, much easier to manage.
+ // First, strip away escaped parentheses
+ $sanitized = preg_replace( '/(\\\\\\\\)*\\\\\(/', '', $needle );
+ // Then strip starting parentheses of non-capturing groups
+ // (also atomics, lookahead and so on, even if not every of them is supported)
+ $sanitized = preg_replace( '/\(\?/', '', $sanitized );
+ // Finally create an array of falses with dimension = # of capturing groups
+ $groupscount = substr_count( $sanitized, '(' ) + 1;
+ $falsy = array_fill( 0, $groupscount, false );
+
+ // Munge the regex by escaping slashes
+ $needle = preg_replace( '!(\\\\\\\\)*(\\\\)?/!', '$1\/', $needle );
+ $needle = "/$needle/u";
+
+ // Suppress and restore are here for the same reason as T177744
+ Wikimedia\suppressWarnings();
+ $check = preg_match( $needle, $haystack, $matches );
+ Wikimedia\restoreWarnings();
+
+ if ( $check === false ) {
+ throw new AFPUserVisibleException(
+ 'regexfailure',
+ $this->mCur->pos,
+ [ 'unspecified error in preg_match()', $needle ]
+ );
+ }
+
+ // Returned array has non-empty positions identical to the ones returned
+ // by the third parameter of a standard preg_match call ($matches in this case).
+ // We want an union with falsy to return a fixed-dimention array.
+ return AFPData::newFromPHPVar( $matches + $falsy );
+ }
+
+ /**
+ * @param array $args
+ * @return AFPData
+ * @throws AFPUserVisibleException
+ */
+ protected function funcIPInRange( $args ) {
+ if ( count( $args ) < 2 ) {
+ throw new AFPUserVisibleException(
+ 'notenoughargs',
+ $this->mCur->pos,
+ [ 'ip_in_range', 2, count( $args ) ]
+ );
+ }
+
+ $ip = $args[0]->toString();
+ $range = $args[1]->toString();
+
+ $result = IP::isInRange( $ip, $range );
+
+ return new AFPData( AFPData::DBOOL, $result );
+ }
+
+ /**
+ * @param array $args
+ * @return AFPData
+ * @throws AFPUserVisibleException
+ */
+ protected function funcCCNorm( $args ) {
+ if ( count( $args ) < 1 ) {
+ throw new AFPUserVisibleException(
+ 'notenoughargs',
+ $this->mCur->pos,
+ [ 'ccnorm', 1, count( $args ) ]
+ );
+ }
+ $s = $args[0]->toString();
+
+ $s = html_entity_decode( $s, ENT_QUOTES, 'UTF-8' );
+ $s = $this->ccnorm( $s );
+
+ return new AFPData( AFPData::DSTRING, $s );
+ }
+
+ /**
+ * @param array $args
+ * @return AFPData
+ * @throws AFPUserVisibleException
+ */
+ protected function funcContainsAny( $args ) {
+ if ( count( $args ) < 2 ) {
+ throw new AFPUserVisibleException(
+ 'notenoughargs',
+ $this->mCur->pos,
+ [ 'contains_any', 2, count( $args ) ]
+ );
+ }
+
+ $s = array_shift( $args );
+
+ return new AFPData( AFPData::DBOOL, self::contains( $s, $args, true ) );
+ }
+
+ /**
+ * @param array $args
+ * @return AFPData
+ * @throws AFPUserVisibleException
+ */
+ protected function funcContainsAll( $args ) {
+ if ( count( $args ) < 2 ) {
+ throw new AFPUserVisibleException(
+ 'notenoughargs',
+ $this->mCur->pos,
+ [ 'contains_all', 2, count( $args ) ]
+ );
+ }
+
+ $s = array_shift( $args );
+
+ return new AFPData( AFPData::DBOOL, self::contains( $s, $args, false, false ) );
+ }
+
+ /**
+ * Normalize and search a string for multiple substrings in OR mode
+ *
+ * @param array $args
+ * @return AFPData
+ * @throws AFPUserVisibleException
+ */
+ protected function funcCCNormContainsAny( $args ) {
+ if ( count( $args ) < 2 ) {
+ throw new AFPUserVisibleException(
+ 'notenoughargs',
+ $this->mCur->pos,
+ [ 'ccnorm_contains_any', 2, count( $args ) ]
+ );
+ }
+
+ $s = array_shift( $args );
+
+ return new AFPData( AFPData::DBOOL, self::contains( $s, $args, true, true ) );
+ }
+
+ /**
+ * Normalize and search a string for multiple substrings in AND mode
+ *
+ * @param array $args
+ * @return AFPData
+ * @throws AFPUserVisibleException
+ */
+ protected function funcCCNormContainsAll( $args ) {
+ if ( count( $args ) < 2 ) {
+ throw new AFPUserVisibleException(
+ 'notenoughargs',
+ $this->mCur->pos,
+ [ 'ccnorm_contains_all', 2, count( $args ) ]
+ );
+ }
+
+ $s = array_shift( $args );
+
+ return new AFPData( AFPData::DBOOL, self::contains( $s, $args, false, true ) );
+ }
+
+ /**
+ * Search for substrings in a string
+ *
+ * Use is_any to determine wether to use logic OR (true) or AND (false).
+ *
+ * Use normalize = true to make use of ccnorm and
+ * normalize both sides of the search.
+ *
+ * @param AFPData $string
+ * @param AFPData[] $values
+ * @param bool $is_any
+ * @param bool $normalize
+ *
+ * @return bool
+ */
+ protected static function contains( $string, $values, $is_any = true, $normalize = false ) {
+ $string = $string->toString();
+ if ( $string == '' ) {
+ return false;
+ }
+
+ if ( $normalize ) {
+ $string = self::ccnorm( $string );
+ }
+
+ foreach ( $values as $needle ) {
+ $needle = $needle->toString();
+ if ( $normalize ) {
+ $needle = self::ccnorm( $needle );
+ }
+ if ( $needle === '' ) {
+ // T62203: Keep empty parameters from causing PHP warnings
+ continue;
+ }
+
+ $is_found = strpos( $string, $needle ) !== false;
+ if ( $is_found === $is_any ) {
+ // If I'm here and it's ANY (OR) it means that something is found.
+ // Just enough! Found!
+ // If I'm here and it's ALL (AND) it means that something isn't found.
+ // Just enough! Not found!
+ return $is_found;
+ }
+ }
+
+ // If I'm here and it's ANY (OR) it means that nothing was found:
+ // return false (because $is_any is true)
+ // If I'm here and it's ALL (AND) it means that everything were found:
+ // return true (because $is_any is false)
+ return ! $is_any;
+ }
+
+ /**
+ * @param string $s
+ * @return mixed
+ */
+ protected static function ccnorm( $s ) {
+ // Instatiate a single version of the equivset so the data is not loaded
+ // more than once.
+ if ( !self::$equivset ) {
+ self::$equivset = new Equivset();
+ }
+
+ return self::$equivset->normalize( $s );
+ }
+
+ /**
+ * @param string $s
+ * @return array|string
+ */
+ protected function rmspecials( $s ) {
+ return preg_replace( '/[^\p{L}\p{N}]/u', '', $s );
+ }
+
+ /**
+ * @param string $s
+ * @return array|string
+ */
+ protected function rmdoubles( $s ) {
+ return preg_replace( '/(.)\1+/us', '\1', $s );
+ }
+
+ /**
+ * @param string $s
+ * @return array|string
+ */
+ protected function rmwhitespace( $s ) {
+ return preg_replace( '/\s+/u', '', $s );
+ }
+
+ /**
+ * @param array $args
+ * @return AFPData
+ * @throws AFPUserVisibleException
+ */
+ protected function funcRMSpecials( $args ) {
+ if ( count( $args ) < 1 ) {
+ throw new AFPUserVisibleException(
+ 'notenoughargs',
+ $this->mCur->pos,
+ [ 'rmspecials', 1, count( $args ) ]
+ );
+ }
+ $s = $args[0]->toString();
+
+ $s = $this->rmspecials( $s );
+
+ return new AFPData( AFPData::DSTRING, $s );
+ }
+
+ /**
+ * @param array $args
+ * @return AFPData
+ * @throws AFPUserVisibleException
+ */
+ protected function funcRMWhitespace( $args ) {
+ if ( count( $args ) < 1 ) {
+ throw new AFPUserVisibleException(
+ 'notenoughargs',
+ $this->mCur->pos,
+ [ 'rmwhitespace', 1, count( $args ) ]
+ );
+ }
+ $s = $args[0]->toString();
+
+ $s = $this->rmwhitespace( $s );
+
+ return new AFPData( AFPData::DSTRING, $s );
+ }
+
+ /**
+ * @param array $args
+ * @return AFPData
+ * @throws AFPUserVisibleException
+ */
+ protected function funcRMDoubles( $args ) {
+ if ( count( $args ) < 1 ) {
+ throw new AFPUserVisibleException(
+ 'notenoughargs',
+ $this->mCur->pos,
+ [ 'rmdoubles', 1, count( $args ) ]
+ );
+ }
+ $s = $args[0]->toString();
+
+ $s = $this->rmdoubles( $s );
+
+ return new AFPData( AFPData::DSTRING, $s );
+ }
+
+ /**
+ * @param array $args
+ * @return AFPData
+ * @throws AFPUserVisibleException
+ */
+ protected function funcNorm( $args ) {
+ if ( count( $args ) < 1 ) {
+ throw new AFPUserVisibleException(
+ 'notenoughargs',
+ $this->mCur->pos,
+ [ 'norm', 1, count( $args ) ]
+ );
+ }
+ $s = $args[0]->toString();
+
+ $s = $this->ccnorm( $s );
+ $s = $this->rmdoubles( $s );
+ $s = $this->rmspecials( $s );
+ $s = $this->rmwhitespace( $s );
+
+ return new AFPData( AFPData::DSTRING, $s );
+ }
+
+ /**
+ * @param array $args
+ * @return AFPData
+ * @throws AFPUserVisibleException
+ */
+ protected function funcSubstr( $args ) {
+ if ( count( $args ) < 2 ) {
+ throw new AFPUserVisibleException(
+ 'notenoughargs',
+ $this->mCur->pos,
+ [ 'substr', 2, count( $args ) ]
+ );
+ }
+
+ $s = $args[0]->toString();
+ $offset = $args[1]->toInt();
+
+ if ( isset( $args[2] ) ) {
+ $length = $args[2]->toInt();
+
+ $result = mb_substr( $s, $offset, $length );
+ } else {
+ $result = mb_substr( $s, $offset );
+ }
+
+ return new AFPData( AFPData::DSTRING, $result );
+ }
+
+ /**
+ * @param array $args
+ * @return AFPData
+ * @throws AFPUserVisibleException
+ */
+ protected function funcStrPos( $args ) {
+ if ( count( $args ) < 2 ) {
+ throw new AFPUserVisibleException(
+ 'notenoughargs',
+ $this->mCur->pos,
+ [ 'strpos', 2, count( $args ) ]
+ );
+ }
+
+ $haystack = $args[0]->toString();
+ $needle = $args[1]->toString();
+
+ // T62203: Keep empty parameters from causing PHP warnings
+ if ( $needle === '' ) {
+ return new AFPData( AFPData::DINT, -1 );
+ }
+
+ if ( isset( $args[2] ) ) {
+ $offset = $args[2]->toInt();
+
+ $result = mb_strpos( $haystack, $needle, $offset );
+ } else {
+ $result = mb_strpos( $haystack, $needle );
+ }
+
+ if ( $result === false ) {
+ $result = -1;
+ }
+
+ return new AFPData( AFPData::DINT, $result );
+ }
+
+ /**
+ * @param array $args
+ * @return AFPData
+ * @throws AFPUserVisibleException
+ */
+ protected function funcStrReplace( $args ) {
+ if ( count( $args ) < 3 ) {
+ throw new AFPUserVisibleException(
+ 'notenoughargs',
+ $this->mCur->pos,
+ [ 'str_replace', 3, count( $args ) ]
+ );
+ }
+
+ $subject = $args[0]->toString();
+ $search = $args[1]->toString();
+ $replace = $args[2]->toString();
+
+ return new AFPData( AFPData::DSTRING, str_replace( $search, $replace, $subject ) );
+ }
+
+ /**
+ * @param array $args
+ * @return AFPData
+ * @throws AFPUserVisibleException
+ */
+ protected function funcStrRegexEscape( $args ) {
+ if ( count( $args ) < 1 ) {
+ throw new AFPUserVisibleException( 'notenoughargs', $this->mCur->pos,
+ [ 'rescape', 1, count( $args ) ] );
+ }
+
+ $string = $args[0]->toString();
+
+ // preg_quote does not need the second parameter, since rlike takes
+ // care of the delimiter symbol itself
+ return new AFPData( AFPData::DSTRING, preg_quote( $string ) );
+ }
+
+ /**
+ * @param array $args
+ * @return mixed
+ * @throws AFPUserVisibleException
+ */
+ protected function funcSetVar( $args ) {
+ if ( count( $args ) < 2 ) {
+ throw new AFPUserVisibleException(
+ 'notenoughargs',
+ $this->mCur->pos,
+ [ 'set_var', 2, count( $args ) ]
+ );
+ }
+
+ $varName = $args[0]->toString();
+ $value = $args[1];
+
+ $this->setUserVariable( $varName, $value );
+
+ return $value;
+ }
+
+ /**
+ * @param array $args
+ * @return AFPData
+ * @throws AFPUserVisibleException
+ */
+ protected function castString( $args ) {
+ if ( count( $args ) < 1 ) {
+ throw new AFPUserVisibleException( 'noparams', $this->mCur->pos, [ __METHOD__ ] );
+ }
+ $val = $args[0];
+
+ return AFPData::castTypes( $val, AFPData::DSTRING );
+ }
+
+ /**
+ * @param array $args
+ * @return AFPData
+ * @throws AFPUserVisibleException
+ */
+ protected function castInt( $args ) {
+ if ( count( $args ) < 1 ) {
+ throw new AFPUserVisibleException( 'noparams', $this->mCur->pos, [ __METHOD__ ] );
+ }
+ $val = $args[0];
+
+ return AFPData::castTypes( $val, AFPData::DINT );
+ }
+
+ /**
+ * @param array $args
+ * @return AFPData
+ * @throws AFPUserVisibleException
+ */
+ protected function castFloat( $args ) {
+ if ( count( $args ) < 1 ) {
+ throw new AFPUserVisibleException( 'noparams', $this->mCur->pos, [ __METHOD__ ] );
+ }
+ $val = $args[0];
+
+ return AFPData::castTypes( $val, AFPData::DFLOAT );
+ }
+
+ /**
+ * @param array $args
+ * @return AFPData
+ * @throws AFPUserVisibleException
+ */
+ protected function castBool( $args ) {
+ if ( count( $args ) < 1 ) {
+ throw new AFPUserVisibleException( 'noparams', $this->mCur->pos, [ __METHOD__ ] );
+ }
+ $val = $args[0];
+
+ return AFPData::castTypes( $val, AFPData::DBOOL );
+ }
+}
diff --git a/www/wiki/extensions/AbuseFilter/includes/parser/AbuseFilterTokenizer.php b/www/wiki/extensions/AbuseFilter/includes/parser/AbuseFilterTokenizer.php
new file mode 100644
index 00000000..a97fccaf
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/includes/parser/AbuseFilterTokenizer.php
@@ -0,0 +1,258 @@
+<?php
+
+use MediaWiki\MediaWikiServices;
+
+/**
+ * Tokenizer for AbuseFilter rules.
+ */
+class AbuseFilterTokenizer {
+ /** @var int Tokenizer cache version. Increment this when changing the syntax. **/
+ const CACHE_VERSION = 1;
+ const COMMENT_START_RE = '/\s*\/\*/A';
+ const ID_SYMBOL_RE = '/[0-9A-Za-z_]+/A';
+ const OPERATOR_RE =
+ '/(\!\=\=|\!\=|\!|\*\*|\*|\/|\+|\-|%|&|\||\^|\:\=|\?|\:|\<\=|\<|\>\=|\>|\=\=\=|\=\=|\=)/A';
+ const RADIX_RE = '/([0-9A-Fa-f]+(?:\.\d*)?|\.\d+)([bxo])?/Au';
+ const WHITESPACE = "\011\012\013\014\015\040";
+
+ // Order is important. The punctuation-matching regex requires that
+ // ** comes before *, etc. They are sorted to make it easy to spot
+ // such errors.
+ public static $operators = [
+ '!==', '!=', '!', // Inequality
+ '**', '*', // Multiplication/exponentiation
+ '/', '+', '-', '%', // Other arithmetic
+ '&', '|', '^', // Logic
+ ':=', // Setting
+ '?', ':', // Ternery
+ '<=', '<', // Less than
+ '>=', '>', // Greater than
+ '===', '==', '=', // Equality
+ ];
+
+ public static $punctuation = [
+ ',' => AFPToken::TCOMMA,
+ '(' => AFPToken::TBRACE,
+ ')' => AFPToken::TBRACE,
+ '[' => AFPToken::TSQUAREBRACKET,
+ ']' => AFPToken::TSQUAREBRACKET,
+ ';' => AFPToken::TSTATEMENTSEPARATOR,
+ ];
+
+ public static $bases = [
+ 'b' => 2,
+ 'x' => 16,
+ 'o' => 8
+ ];
+
+ public static $baseCharsRe = [
+ 2 => '/^[01]+$/',
+ 8 => '/^[0-8]+$/',
+ 16 => '/^[0-9A-Fa-f]+$/',
+ 10 => '/^[0-9.]+$/',
+ ];
+
+ public static $keywords = [
+ 'in', 'like', 'true', 'false', 'null', 'contains', 'matches',
+ 'rlike', 'irlike', 'regex', 'if', 'then', 'else', 'end',
+ ];
+
+ /**
+ * @param string $code
+ * @return array
+ * @throws AFPException
+ * @throws AFPUserVisibleException
+ */
+ static function tokenize( $code ) {
+ static $tokenizerCache = null;
+
+ if ( !$tokenizerCache ) {
+ $tokenizerCache = ObjectCache::getLocalServerInstance( 'hash' );
+ }
+
+ static $stats = null;
+
+ if ( !$stats ) {
+ $stats = MediaWikiServices::getInstance()->getStatsdDataFactory();
+ }
+
+ $cacheKey = wfGlobalCacheKey( __CLASS__, self::CACHE_VERSION, crc32( $code ) );
+
+ $tokens = $tokenizerCache->get( $cacheKey );
+
+ if ( $tokens ) {
+ $stats->increment( 'AbuseFilter.tokenizerCache.hit' );
+ return $tokens;
+ }
+
+ $stats->increment( 'AbuseFilter.tokenizerCache.miss' );
+ $tokens = [];
+ $curPos = 0;
+
+ do {
+ $prevPos = $curPos;
+ $token = self::nextToken( $code, $curPos );
+ $tokens[ $token->pos ] = [ $token, $curPos ];
+ } while ( $curPos !== $prevPos );
+
+ $tokenizerCache->set( $cacheKey, $tokens, 60 * 60 * 24 );
+
+ return $tokens;
+ }
+
+ /**
+ * @param string $code
+ * @param int &$offset
+ * @return AFPToken
+ * @throws AFPException
+ * @throws AFPUserVisibleException
+ */
+ protected static function nextToken( $code, &$offset ) {
+ $matches = [];
+ $start = $offset;
+
+ // Read past comments
+ while ( preg_match( self::COMMENT_START_RE, $code, $matches, 0, $offset ) ) {
+ if ( strpos( $code, '*/', $offset ) === false ) {
+ throw new AFPUserVisibleException(
+ 'unclosedcomment', $offset, [] );
+ }
+ $offset = strpos( $code, '*/', $offset ) + 2;
+ }
+
+ // Spaces
+ $offset += strspn( $code, self::WHITESPACE, $offset );
+ if ( $offset >= strlen( $code ) ) {
+ return new AFPToken( AFPToken::TNONE, '', $start );
+ }
+
+ $chr = $code[$offset];
+
+ // Punctuation
+ if ( isset( self::$punctuation[$chr] ) ) {
+ $offset++;
+ return new AFPToken( self::$punctuation[$chr], $chr, $start );
+ }
+
+ // String literal
+ if ( $chr === '"' || $chr === "'" ) {
+ return self::readStringLiteral( $code, $offset, $start );
+ }
+
+ $matches = [];
+
+ // Operators
+ if ( preg_match( self::OPERATOR_RE, $code, $matches, 0, $offset ) ) {
+ $token = $matches[0];
+ $offset += strlen( $token );
+ return new AFPToken( AFPToken::TOP, $token, $start );
+ }
+
+ // Numbers
+ if ( preg_match( self::RADIX_RE, $code, $matches, 0, $offset ) ) {
+ $token = $matches[0];
+ $input = $matches[1];
+ $baseChar = isset( $matches[2] ) ? $matches[2] : null;
+ // Sometimes the base char gets mixed in with the rest of it because
+ // the regex targets hex, too.
+ // This mostly happens with binary
+ if ( !$baseChar && !empty( self::$bases[ substr( $input, - 1 ) ] ) ) {
+ $baseChar = substr( $input, - 1, 1 );
+ $input = substr( $input, 0, - 1 );
+ }
+
+ $base = $baseChar ? self::$bases[$baseChar] : 10;
+
+ // Check against the appropriate character class for input validation
+
+ if ( preg_match( self::$baseCharsRe[$base], $input ) ) {
+ $num = $base !== 10 ? base_convert( $input, $base, 10 ) : $input;
+ $offset += strlen( $token );
+ return ( strpos( $input, '.' ) !== false )
+ ? new AFPToken( AFPToken::TFLOAT, floatval( $num ), $start )
+ : new AFPToken( AFPToken::TINT, intval( $num ), $start );
+ }
+ }
+
+ // IDs / Keywords
+
+ if ( preg_match( self::ID_SYMBOL_RE, $code, $matches, 0, $offset ) ) {
+ $token = $matches[0];
+ $offset += strlen( $token );
+ $type = in_array( $token, self::$keywords )
+ ? AFPToken::TKEYWORD
+ : AFPToken::TID;
+ return new AFPToken( $type, $token, $start );
+ }
+
+ throw new AFPUserVisibleException(
+ 'unrecognisedtoken', $start, [ substr( $code, $start ) ] );
+ }
+
+ /**
+ * @param string $code
+ * @param int &$offset
+ * @param int $start
+ * @return AFPToken
+ * @throws AFPException
+ * @throws AFPUserVisibleException
+ */
+ protected static function readStringLiteral( $code, &$offset, $start ) {
+ $type = $code[$offset];
+ $offset++;
+ $length = strlen( $code );
+ $token = '';
+ while ( $offset < $length ) {
+ if ( $code[$offset] === $type ) {
+ $offset++;
+ return new AFPToken( AFPToken::TSTRING, $token, $start );
+ }
+
+ // Performance: Use a PHP function (implemented in C)
+ // to scan ahead.
+ $addLength = strcspn( $code, $type . "\\", $offset );
+ if ( $addLength ) {
+ $token .= substr( $code, $offset, $addLength );
+ $offset += $addLength;
+ } elseif ( $code[$offset] == '\\' ) {
+ switch ( $code[$offset + 1] ) {
+ case '\\':
+ $token .= '\\';
+ break;
+ case $type:
+ $token .= $type;
+ break;
+ case 'n';
+ $token .= "\n";
+ break;
+ case 'r':
+ $token .= "\r";
+ break;
+ case 't':
+ $token .= "\t";
+ break;
+ case 'x':
+ $chr = substr( $code, $offset + 2, 2 );
+
+ if ( preg_match( '/^[0-9A-Fa-f]{2}$/', $chr ) ) {
+ $chr = base_convert( $chr, 16, 10 );
+ $token .= chr( $chr );
+ $offset += 2; # \xXX -- 2 done later
+ } else {
+ $token .= 'x';
+ }
+ break;
+ default:
+ $token .= "\\" . $code[$offset + 1];
+ }
+
+ $offset += 2;
+
+ } else {
+ $token .= $code[$offset];
+ $offset++;
+ }
+ }
+ throw new AFPUserVisibleException( 'unclosedstring', $offset, [] );
+ }
+}
diff --git a/www/wiki/extensions/AbuseFilter/includes/special/SpecialAbuseFilter.php b/www/wiki/extensions/AbuseFilter/includes/special/SpecialAbuseFilter.php
new file mode 100644
index 00000000..1a4cbf4d
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/includes/special/SpecialAbuseFilter.php
@@ -0,0 +1,134 @@
+<?php
+
+class SpecialAbuseFilter extends SpecialPage {
+ public $mFilter, $mHistoryID;
+
+ public function __construct() {
+ parent::__construct( 'AbuseFilter', 'abusefilter-view' );
+ }
+
+ public function doesWrites() {
+ return true;
+ }
+
+ public function execute( $subpage ) {
+ $out = $this->getOutput();
+ $request = $this->getRequest();
+
+ $out->addModuleStyles( 'ext.abuseFilter' );
+ $view = 'AbuseFilterViewList';
+
+ $this->setHeaders();
+
+ $this->loadParameters( $subpage );
+ $out->setPageTitle( $this->msg( 'abusefilter-management' ) );
+
+ // Are we allowed?
+ $this->checkPermissions();
+
+ if ( $request->getVal( 'result' ) == 'success' ) {
+ $out->setSubtitle( $this->msg( 'abusefilter-edit-done-subtitle' ) );
+ $changedFilter = intval( $request->getVal( 'changedfilter' ) );
+ $changeId = intval( $request->getVal( 'changeid' ) );
+ $out->wrapWikiMsg( '<p class="success">$1</p>',
+ [
+ 'abusefilter-edit-done',
+ $changedFilter,
+ $changeId,
+ $this->getLanguage()->formatNum( $changedFilter )
+ ]
+ );
+ }
+
+ $this->mHistoryID = null;
+ $pageType = 'home';
+
+ $params = explode( '/', $subpage );
+
+ // Filter by removing blanks.
+ foreach ( $params as $index => $param ) {
+ if ( $param === '' ) {
+ unset( $params[$index] );
+ }
+ }
+ $params = array_values( $params );
+
+ if ( $subpage == 'tools' ) {
+ $view = 'AbuseFilterViewTools';
+ $pageType = 'tools';
+ $out->addHelpLink( 'Extension:AbuseFilter/Rules format' );
+ }
+
+ if ( count( $params ) == 2 && $params[0] == 'revert' && is_numeric( $params[1] ) ) {
+ $this->mFilter = $params[1];
+ $view = 'AbuseFilterViewRevert';
+ $pageType = 'revert';
+ }
+
+ if ( count( $params ) && $params[0] == 'test' ) {
+ $view = 'AbuseFilterViewTestBatch';
+ $pageType = 'test';
+ $out->addHelpLink( 'Extension:AbuseFilter/Rules format' );
+ }
+
+ if ( count( $params ) && $params[0] == 'examine' ) {
+ $view = 'AbuseFilterViewExamine';
+ $pageType = 'examine';
+ $out->addHelpLink( 'Extension:AbuseFilter/Rules format' );
+ }
+
+ if ( !empty( $params[0] ) && ( $params[0] == 'history' || $params[0] == 'log' ) ) {
+ $pageType = '';
+ if ( count( $params ) == 1 ) {
+ $view = 'AbuseFilterViewHistory';
+ $pageType = 'recentchanges';
+ } elseif ( count( $params ) == 2 ) {
+ # Second param is a filter ID
+ $view = 'AbuseFilterViewHistory';
+ $this->mFilter = $params[1];
+ } elseif ( count( $params ) == 4 && $params[2] == 'item' ) {
+ $this->mFilter = $params[1];
+ $this->mHistoryID = $params[3];
+ $view = 'AbuseFilterViewEdit';
+ } elseif ( count( $params ) == 5 && $params[2] == 'diff' ) {
+ // Special:AbuseFilter/history/<filter>/diff/<oldid>/<newid>
+ $view = 'AbuseFilterViewDiff';
+ }
+ }
+
+ if ( is_numeric( $subpage ) || $subpage == 'new' ) {
+ $this->mFilter = $subpage;
+ $view = 'AbuseFilterViewEdit';
+ $pageType = 'edit';
+ }
+
+ if ( $subpage == 'import' ) {
+ $view = 'AbuseFilterViewImport';
+ $pageType = 'import';
+ }
+
+ // Links at the top
+ AbuseFilter::addNavigationLinks(
+ $this->getContext(), $pageType, $this->getLinkRenderer() );
+
+ /** @var AbuseFilterView $v */
+ $v = new $view( $this, $params );
+ $v->show();
+ }
+
+ function loadParameters( $subpage ) {
+ $filter = $subpage;
+
+ if ( !is_numeric( $filter ) && $filter != 'new' ) {
+ $filter = $this->getRequest()->getIntOrNull( 'wpFilter' );
+ }
+ $this->mFilter = $filter;
+ }
+
+ /**
+ * @return string
+ */
+ protected function getGroupName() {
+ return 'wiki';
+ }
+}
diff --git a/www/wiki/extensions/AbuseFilter/includes/special/SpecialAbuseLog.php b/www/wiki/extensions/AbuseFilter/includes/special/SpecialAbuseLog.php
new file mode 100644
index 00000000..b1d9e410
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/includes/special/SpecialAbuseLog.php
@@ -0,0 +1,1049 @@
+<?php
+
+class SpecialAbuseLog extends SpecialPage {
+ /**
+ * @var User
+ */
+ protected $mSearchUser;
+
+ /**
+ * @var Title
+ */
+ protected $mSearchTitle;
+
+ /**
+ * @var string
+ */
+ protected $mSearchActionTaken;
+
+ protected $mSearchWiki;
+
+ protected $mSearchFilter;
+
+ protected $mSearchEntries;
+
+ protected $mSearchImpact;
+
+ public function __construct() {
+ parent::__construct( 'AbuseLog', 'abusefilter-log' );
+ }
+
+ public function doesWrites() {
+ return true;
+ }
+
+ /**
+ * Main routine
+ *
+ * $parameter string is converted into the $args array, which can come in
+ * three shapes:
+ *
+ * An array of size 2: only if the URL is like Special:AbuseLog/private/id
+ * where id is the log identifier. In this case, the private details of the
+ * log (e.g. IP address) will be shown.
+ *
+ * An array of size 1: either the URL is like Special:AbuseLog/id where
+ * the id is log identifier, in which case the details of the log except for
+ * private bits (e.g. IP address) are shown, or the URL is incomplete as in
+ * Special:AbuseLog/private (without speciying id), in which case a warning
+ * is shown to the user
+ *
+ * An array of size 0 when URL is like Special:AbuseLog or an array of size
+ * 1 when the URL is like Special:AbuseFilter/ (i.e. without anything after
+ * the slash). In this case, if the parameter `hide` was passed, it will be
+ * used as the identifier of the log entry that we want to hide; otherwise,
+ * the abuse logs are shown as a list, with a search form above the list.
+ *
+ * @param string $parameter URL parameters
+ */
+ public function execute( $parameter ) {
+ $out = $this->getOutput();
+ $request = $this->getRequest();
+
+ AbuseFilter::addNavigationLinks(
+ $this->getContext(), 'log', $this->getLinkRenderer() );
+
+ $this->setHeaders();
+ $this->outputHeader( 'abusefilter-log-summary' );
+ $this->loadParameters();
+
+ $out->setPageTitle( $this->msg( 'abusefilter-log' ) );
+ $out->setRobotPolicy( "noindex,nofollow" );
+ $out->setArticleRelated( false );
+ $out->enableClientCache( false );
+
+ $out->addModuleStyles( 'ext.abuseFilter' );
+
+ // Are we allowed?
+ $errors = $this->getPageTitle()->getUserPermissionsErrors(
+ 'abusefilter-log', $this->getUser(), true, [ 'ns-specialprotected' ] );
+ if ( count( $errors ) ) {
+ // Go away.
+ $out->showPermissionsErrorPage( $errors, 'abusefilter-log' );
+
+ return;
+ }
+
+ $detailsid = $request->getIntOrNull( 'details' );
+ $hideid = $request->getIntOrNull( 'hide' );
+ $args = explode( '/', $parameter );
+
+ if ( count( $args ) === 2 && $args[0] === 'private' ) {
+ $this->showPrivateDetails( $args[1] );
+ } elseif ( count( $args ) === 1 && $args[0] !== '' ) {
+ if ( $args[0] === 'private' ) {
+ $out->addWikiMsg( 'abusefilter-invalid-request-noid' );
+ } else {
+ $this->showDetails( $args[0] );
+ }
+ } else {
+ if ( $hideid ) {
+ $this->showHideForm( $hideid );
+ } else {
+ $this->searchForm();
+ $this->showList();
+ }
+ }
+ }
+
+ function loadParameters() {
+ global $wgAbuseFilterIsCentral;
+
+ $request = $this->getRequest();
+
+ $this->mSearchUser = trim( $request->getText( 'wpSearchUser' ) );
+ if ( $wgAbuseFilterIsCentral ) {
+ $this->mSearchWiki = $request->getText( 'wpSearchWiki' );
+ }
+
+ $u = User::newFromName( $this->mSearchUser );
+ if ( $u ) {
+ $this->mSearchUser = $u->getName(); // Username normalisation
+ } elseif ( IP::isIPAddress( $this->mSearchUser ) ) {
+ // It's an IP
+ $this->mSearchUser = IP::sanitizeIP( $this->mSearchUser );
+ } else {
+ $this->mSearchUser = null;
+ }
+
+ $this->mSearchTitle = $request->getText( 'wpSearchTitle' );
+ $this->mSearchFilter = null;
+ $this->mSearchActionTaken = $request->getText( 'wpSearchActionTaken' );
+ if ( self::canSeeDetails() ) {
+ $this->mSearchFilter = $request->getText( 'wpSearchFilter' );
+ }
+
+ $this->mSearchEntries = $request->getText( 'wpSearchEntries' );
+ $this->mSearchImpact = $request->getText( 'wpSearchImpact' );
+ }
+
+ /**
+ * @return string[]
+ */
+ private function getAllActions() {
+ global $wgAbuseFilterActions, $wgAbuseFilterCustomActionsHandlers;
+ return array_unique(
+ array_merge(
+ array_keys( $wgAbuseFilterActions ),
+ array_keys( $wgAbuseFilterCustomActionsHandlers )
+ )
+ );
+ }
+
+ function searchForm() {
+ global $wgAbuseFilterIsCentral;
+
+ $formDescriptor = [
+ 'SearchUser' => [
+ 'label-message' => 'abusefilter-log-search-user',
+ 'type' => 'user',
+ 'default' => $this->mSearchUser,
+ ],
+ 'SearchTitle' => [
+ 'label-message' => 'abusefilter-log-search-title',
+ 'type' => 'title',
+ 'default' => $this->mSearchTitle,
+ ],
+ 'SearchImpact' => [
+ 'label-message' => 'abusefilter-log-search-impact',
+ 'type' => 'select',
+ 'options' => [
+ $this->msg( 'abusefilter-log-search-impact-all' )->text() => 0,
+ $this->msg( 'abusefilter-log-search-impact-saved' )->text() => 1,
+ $this->msg( 'abusefilter-log-search-impact-not-saved' )->text() => 2,
+ ],
+ ],
+ ];
+ $options = [
+ $this->msg( 'abusefilter-log-noactions' )->text() => 'noactions',
+ $this->msg( 'abusefilter-log-search-action-taken-any' )->text() => '',
+ ];
+ foreach ( $this->getAllActions() as $action ) {
+ $key = AbuseFilter::getActionDisplay( $action );
+ $options[$key] = $action;
+ }
+ ksort( $options );
+ $formDescriptor['SearchActionTaken'] = [
+ 'label-message' => 'abusefilter-log-search-action-taken-label',
+ 'type' => 'select',
+ 'options' => $options,
+ ];
+ if ( self::canSeeHidden() ) {
+ $formDescriptor['SearchEntries'] = [
+ 'type' => 'select',
+ 'label-message' => 'abusefilter-log-search-entries-label',
+ 'options' => [
+ $this->msg( 'abusefilter-log-search-entries-all' )->text() => 0,
+ $this->msg( 'abusefilter-log-search-entries-hidden' )->text() => 1,
+ $this->msg( 'abusefilter-log-search-entries-visible' )->text() => 2,
+ ],
+ ];
+ }
+ if ( self::canSeeDetails() ) {
+ $formDescriptor['SearchFilter'] = [
+ 'label-message' => 'abusefilter-log-search-filter',
+ 'type' => 'text',
+ 'default' => $this->mSearchFilter,
+ ];
+ }
+ if ( $wgAbuseFilterIsCentral ) {
+ // Add free form input for wiki name. Would be nice to generate
+ // a select with unique names in the db at some point.
+ $formDescriptor['SearchWiki'] = [
+ 'label-message' => 'abusefilter-log-search-wiki',
+ 'type' => 'text',
+ 'default' => $this->mSearchWiki,
+ ];
+ }
+
+ $htmlForm = HTMLForm::factory( 'ooui', $formDescriptor, $this->getContext() )
+ ->setWrapperLegendMsg( 'abusefilter-log-search' )
+ ->setSubmitTextMsg( 'abusefilter-log-search-submit' )
+ ->setMethod( 'get' )
+ ->prepareForm()
+ ->displayForm( false );
+ }
+
+ /**
+ * @param string $id
+ * @return mixed
+ */
+ function showHideForm( $id ) {
+ if ( !$this->getUser()->isAllowed( 'abusefilter-hide-log' ) ) {
+ $this->getOutput()->addWikiMsg( 'abusefilter-log-hide-forbidden' );
+
+ return;
+ }
+
+ $dbr = wfGetDB( DB_REPLICA );
+
+ $row = $dbr->selectRow(
+ [ 'abuse_filter_log', 'abuse_filter' ],
+ 'afl_deleted',
+ [ 'afl_id' => $id ],
+ __METHOD__,
+ [],
+ [ 'abuse_filter' => [ 'LEFT JOIN', 'af_id=afl_filter' ] ]
+ );
+
+ if ( !$row ) {
+ return;
+ }
+
+ $hideReasonsOther = $this->msg( 'revdelete-reasonotherlist' )->text();
+ $hideReasons = $this->msg( 'revdelete-reason-dropdown' )->text();
+ $hideReasons = Xml::listDropDownOptions( $hideReasons, [ 'other' => $hideReasonsOther ] );
+
+ $formInfo = [
+ 'logid' => [
+ 'type' => 'info',
+ 'default' => (string)$id,
+ 'label-message' => 'abusefilter-log-hide-id',
+ ],
+ 'dropdownreason' => [
+ 'type' => 'select',
+ 'options' => $hideReasons,
+ 'label-message' => 'abusefilter-log-hide-reason'
+ ],
+ 'reason' => [
+ 'type' => 'text',
+ 'label-message' => 'abusefilter-log-hide-reason-other',
+ ],
+ 'hidden' => [
+ 'type' => 'toggle',
+ 'default' => $row->afl_deleted,
+ 'label-message' => 'abusefilter-log-hide-hidden',
+ ],
+ ];
+
+ HTMLForm::factory( 'ooui', $formInfo, $this->getContext() )
+ ->setTitle( $this->getPageTitle() )
+ ->setWrapperLegend( $this->msg( 'abusefilter-log-hide-legend' )->text() )
+ ->addHiddenField( 'hide', $id )
+ ->setSubmitCallback( [ $this, 'saveHideForm' ] )
+ ->show();
+ }
+
+ /**
+ * @param array $fields
+ * @return bool
+ */
+ function saveHideForm( $fields ) {
+ $logid = $this->getRequest()->getVal( 'hide' );
+
+ $dbw = wfGetDB( DB_MASTER );
+
+ $dbw->update(
+ 'abuse_filter_log',
+ [ 'afl_deleted' => $fields['hidden'] ],
+ [ 'afl_id' => $logid ],
+ __METHOD__
+ );
+
+ $reason = $fields['dropdownreason'];
+ if ( $reason === 'other' ) {
+ $reason = $fields['reason'];
+ } elseif ( $fields['reason'] !== '' ) {
+ $reason .=
+ $this->msg( 'colon-separator' )->inContentLanguage()->text() . $fields['reason'];
+ }
+
+ $logPage = new LogPage( 'suppress' );
+ $action = $fields['hidden'] ? 'hide-afl' : 'unhide-afl';
+
+ $logPage->addEntry( $action, $this->getPageTitle( $logid ), $reason );
+
+ $this->getOutput()->redirect( SpecialPage::getTitleFor( 'AbuseLog' )->getFullURL() );
+
+ return true;
+ }
+
+ function showList() {
+ $out = $this->getOutput();
+
+ // Generate conditions list.
+ $conds = [];
+
+ if ( $this->mSearchUser ) {
+ $user = User::newFromName( $this->mSearchUser );
+
+ if ( !$user ) {
+ $conds['afl_user'] = 0;
+ $conds['afl_user_text'] = $this->mSearchUser;
+ } else {
+ $conds['afl_user'] = $user->getId();
+ $conds['afl_user_text'] = $user->getName();
+ }
+ }
+
+ if ( $this->mSearchWiki ) {
+ if ( $this->mSearchWiki == wfWikiID() ) {
+ $conds['afl_wiki'] = null;
+ } else {
+ $conds['afl_wiki'] = $this->mSearchWiki;
+ }
+ }
+
+ if ( $this->mSearchFilter ) {
+ $searchFilters = array_map( 'trim', explode( '|', $this->mSearchFilter ) );
+ // if a filter is hidden, users who can't view private filters should
+ // not be able to find log entries generated by it.
+ if ( !AbuseFilterView::canViewPrivate()
+ && !$this->getUser()->isAllowed( 'abusefilter-log-private' )
+ ) {
+ $searchedForPrivate = false;
+ foreach ( $searchFilters as $index => $filter ) {
+ if ( AbuseFilter::filterHidden( $filter ) ) {
+ unset( $searchFilters[$index] );
+ $searchedForPrivate = true;
+ }
+ }
+ if ( $searchedForPrivate ) {
+ $out->addWikiMsg( 'abusefilter-log-private-not-included' );
+ }
+ }
+ if ( empty( $searchFilters ) ) {
+ $out->addWikiMsg( 'abusefilter-log-noresults' );
+
+ return;
+ }
+ $conds['afl_filter'] = $searchFilters;
+ }
+
+ $searchTitle = Title::newFromText( $this->mSearchTitle );
+ if ( $this->mSearchTitle && $searchTitle ) {
+ $conds['afl_namespace'] = $searchTitle->getNamespace();
+ $conds['afl_title'] = $searchTitle->getDBkey();
+ }
+
+ $dbr = wfGetDB( DB_REPLICA );
+ if ( self::canSeeHidden() ) {
+ if ( $this->mSearchEntries == '1' ) {
+ $conds['afl_deleted'] = 1;
+ } elseif ( $this->mSearchEntries == '2' ) {
+ $conds[] = self::getNotDeletedCond( $dbr );
+ }
+ }
+
+ if ( in_array( $this->mSearchImpact, [ '1', '2' ] ) ) {
+ $unsuccessfulActionConds = $dbr->makeList( [
+ 'afl_rev_id' => null,
+ 'afl_log_id' => null,
+ ], LIST_AND );
+ if ( $this->mSearchImpact == '1' ) {
+ $conds[] = "NOT ( $unsuccessfulActionConds )";
+ } else {
+ $conds[] = $unsuccessfulActionConds;
+ }
+ }
+
+ if ( $this->mSearchActionTaken ) {
+ if ( in_array( $this->mSearchActionTaken, $this->getAllActions() ) ) {
+ $list = [ 'afl_actions' => $this->mSearchActionTaken ];
+ $list[] = 'afl_actions' . $dbr->buildLike(
+ $this->mSearchActionTaken, ',', $dbr->anyString() );
+ $list[] = 'afl_actions' . $dbr->buildLike(
+ $dbr->anyString(), ',', $this->mSearchActionTaken );
+ $list[] = 'afl_actions' . $dbr->buildLike(
+ $dbr->anyString(),
+ ',', $this->mSearchActionTaken, ',',
+ $dbr->anyString()
+ );
+ $conds[] = $dbr->makeList( $list, LIST_OR );
+ } elseif ( $this->mSearchActionTaken === 'noactions' ) {
+ $conds['afl_actions'] = '';
+ }
+ }
+
+ $pager = new AbuseLogPager( $this, $conds );
+ $pager->doQuery();
+ $result = $pager->getResult();
+ if ( $result && $result->numRows() !== 0 ) {
+ $out->addHTML( $pager->getNavigationBar() .
+ Xml::tags( 'ul', [ 'class' => 'plainlinks' ], $pager->getBody() ) .
+ $pager->getNavigationBar() );
+ } else {
+ $out->addWikiMsg( 'abusefilter-log-noresults' );
+ }
+ }
+
+ /**
+ * @param string $id
+ * @return mixed
+ */
+ function showDetails( $id ) {
+ $out = $this->getOutput();
+
+ $dbr = wfGetDB( DB_REPLICA );
+
+ $row = $dbr->selectRow(
+ [ 'abuse_filter_log', 'abuse_filter' ],
+ '*',
+ [ 'afl_id' => $id ],
+ __METHOD__,
+ [],
+ [ 'abuse_filter' => [ 'LEFT JOIN', 'af_id=afl_filter' ] ]
+ );
+
+ if ( !$row ) {
+ $out->addWikiMsg( 'abusefilter-log-nonexistent' );
+
+ return;
+ }
+
+ if ( AbuseFilter::decodeGlobalName( $row->afl_filter ) ) {
+ $filter_hidden = null;
+ } else {
+ $filter_hidden = $row->af_hidden;
+ }
+
+ if ( !self::canSeeDetails( $row->afl_filter, $filter_hidden ) ) {
+ $out->addWikiMsg( 'abusefilter-log-cannot-see-details' );
+
+ return;
+ }
+
+ if ( self::isHidden( $row ) && !self::canSeeHidden() ) {
+ $out->addWikiMsg( 'abusefilter-log-details-hidden' );
+
+ return;
+ } elseif ( self::isHidden( $row ) === 'implicit' ) {
+ $rev = Revision::newFromId( $row->afl_rev_id );
+ // The log is visible, but refers to a deleted revision
+ if ( !$rev->userCan( Revision::SUPPRESSED_ALL, $this->getUser() ) ) {
+ $out->addWikiMsg( 'abusefilter-log-details-hidden-implicit' );
+ return;
+ }
+ }
+
+ $output = Xml::element(
+ 'legend',
+ null,
+ $this->msg( 'abusefilter-log-details-legend' )
+ ->numParams( $id )
+ ->text()
+ );
+ $output .= Xml::tags( 'p', null, $this->formatRow( $row, false ) );
+
+ // Load data
+ $vars = AbuseFilter::loadVarDump( $row->afl_var_dump );
+ $out->addJsConfigVars( 'wgAbuseFilterVariables', $vars->dumpAllVars( true ) );
+
+ // Diff, if available
+ if ( $vars && $vars->getVar( 'action' )->toString() == 'edit' ) {
+ $old_wikitext = $vars->getVar( 'old_wikitext' )->toString();
+ $new_wikitext = $vars->getVar( 'new_wikitext' )->toString();
+
+ $diffEngine = new DifferenceEngine( $this->getContext() );
+
+ $diffEngine->showDiffStyle();
+
+ $formattedDiff = $diffEngine->generateTextDiffBody( $old_wikitext, $new_wikitext );
+ $formattedDiff = $diffEngine->addHeader( $formattedDiff, '', '' );
+
+ $output .=
+ Xml::tags(
+ 'h3',
+ null,
+ $this->msg( 'abusefilter-log-details-diff' )->parse()
+ );
+
+ $output .= $formattedDiff;
+ }
+
+ $output .= Xml::element( 'h3', null, $this->msg( 'abusefilter-log-details-vars' )->text() );
+
+ // Build a table.
+ $output .= AbuseFilter::buildVarDumpTable( $vars, $this->getContext() );
+
+ if ( self::canSeePrivate() ) {
+ $formDescriptor = [
+ 'Reason' => [
+ 'label-message' => 'abusefilter-view-private-reason',
+ 'type' => 'text',
+ 'size' => 45,
+ ],
+ ];
+
+ $htmlForm = HTMLForm::factory( 'ooui', $formDescriptor, $this->getContext() );
+ $htmlForm->setWrapperLegendMsg( 'abusefilter-view-private' )
+ ->setAction( $this->getPageTitle( 'private/' . $id )->getLocalURL() )
+ ->setSubmitTextMsg( 'abusefilter-view-private-submit' )
+ ->setMethod( 'post' )
+ ->prepareForm();
+
+ $output .= $htmlForm->getHTML( false );
+ }
+
+ $output = Xml::tags( 'fieldset', null, $output );
+
+ $out->addHTML( $output );
+ }
+
+ /**
+ * @param string $id
+ * @return null
+ */
+ function showPrivateDetails( $id ) {
+ global $wgAbuseFilterPrivateLog;
+
+ $lang = $this->getLanguage();
+ $out = $this->getOutput();
+ $request = $this->getRequest();
+
+ $dbr = wfGetDB( DB_REPLICA );
+
+ $reason = $request->getText( 'wpReason' );
+
+ // Make sure it is a valid request
+ $token = $request->getVal( 'wpEditToken' );
+ if ( !$request->wasPosted() || !$this->getUser()->matchEditToken( $token ) ) {
+ $out->wrapWikiMsg( '<div class="errorbox">$1</div>',
+ [ 'abusefilter-invalid-request', $id ] );
+
+ return;
+ }
+
+ if ( !$this->checkReason( $reason ) ) {
+ $out->addWikiMsg( 'abusefilter-noreason' );
+ $this->showDetails( $id );
+ return false;
+ }
+
+ $row = $dbr->selectRow(
+ [ 'abuse_filter_log', 'abuse_filter' ],
+ [ 'afl_id', 'afl_filter', 'afl_user_text', 'afl_timestamp', 'afl_ip', 'af_id',
+ 'af_public_comments', 'af_hidden' ],
+ [ 'afl_id' => $id ],
+ __METHOD__,
+ [],
+ [ 'abuse_filter' => [ 'LEFT JOIN', 'af_id=afl_filter' ] ]
+ );
+
+ if ( !$row ) {
+ $out->addWikiMsg( 'abusefilter-log-nonexistent' );
+
+ return;
+ }
+
+ if ( AbuseFilter::decodeGlobalName( $row->afl_filter ) ) {
+ $filter_hidden = null;
+ } else {
+ $filter_hidden = $row->af_hidden;
+ }
+
+ if ( !self::canSeeDetails( $row->afl_filter, $filter_hidden ) ) {
+ $out->addWikiMsg( 'abusefilter-log-cannot-see-details' );
+
+ return;
+ }
+
+ if ( !self::canSeePrivate( $row->afl_filter, $filter_hidden ) ) {
+ $out->addWikiMsg( 'abusefilter-log-cannot-see-private-details' );
+
+ return;
+ }
+
+ // Log accessing private details
+ if ( $wgAbuseFilterPrivateLog ) {
+ $user = $this->getUser();
+ self::addLogEntry( $id, $reason, $user );
+ }
+
+ // Show private details (IP).
+ $output = Xml::element(
+ 'legend',
+ null,
+ $this->msg( 'abusefilter-log-details-private' )->text()
+ );
+
+ $header =
+ Xml::element( 'th', null, $this->msg( 'abusefilter-log-details-var' )->text() ) .
+ Xml::element( 'th', null, $this->msg( 'abusefilter-log-details-val' )->text() );
+
+ $output .=
+ Xml::openElement( 'table',
+ [
+ 'class' => 'wikitable mw-abuselog-private',
+ 'style' => 'width: 80%;'
+ ]
+ ) .
+ Xml::openElement( 'tbody' );
+ $output .= $header;
+
+ // Log ID
+ $linkRenderer = $this->getLinkRenderer();
+ $output .=
+ Xml::tags( 'tr', null,
+ Xml::element( 'td',
+ [ 'style' => 'width: 30%;' ],
+ $this->msg( 'abusefilter-log-details-id' )->text()
+ ) .
+ Xml::openElement( 'td' ) .
+ $linkRenderer->makeKnownLink(
+ $this->getPageTitle( $row->afl_id ),
+ $lang->formatNum( $row->afl_id )
+ ) .
+ Xml::closeElement( 'td' )
+ );
+
+ // Timestamp
+ $output .=
+ Xml::tags( 'tr', null,
+ Xml::element( 'td',
+ [ 'style' => 'width: 30%;' ],
+ $this->msg( 'abusefilter-edit-builder-vars-timestamp-expanded' )->text()
+ ) .
+ Xml::element( 'td',
+ null,
+ $lang->timeanddate( $row->afl_timestamp, true )
+ )
+ );
+
+ // User
+ $output .=
+ Xml::tags( 'tr', null,
+ Xml::element( 'td',
+ [ 'style' => 'width: 30%;' ],
+ $this->msg( 'abusefilter-edit-builder-vars-user-name' )->text()
+ ) .
+ Xml::element( 'td',
+ null,
+ $row->afl_user_text
+ )
+ );
+
+ // Filter ID
+ $output .=
+ Xml::tags( 'tr', null,
+ Xml::element( 'td',
+ [ 'style' => 'width: 30%;' ],
+ $this->msg( 'abusefilter-list-id' )->text()
+ ) .
+ Xml::openElement( 'td' ) .
+ $linkRenderer->makeKnownLink(
+ SpecialPage::getTitleFor( 'AbuseFilter', $row->af_id ),
+ $lang->formatNum( $row->af_id )
+ ) .
+ Xml::closeElement( 'td' )
+ );
+
+ // Filter description
+ $output .=
+ Xml::tags( 'tr', null,
+ Xml::element( 'td',
+ [ 'style' => 'width: 30%;' ],
+ $this->msg( 'abusefilter-list-public' )->text()
+ ) .
+ Xml::element( 'td',
+ null,
+ $row->af_public_comments
+ )
+ );
+
+ // IP address
+ if ( $row->afl_ip !== '' ) {
+ if ( ExtensionRegistry::getInstance()->isLoaded( 'CheckUser' ) &&
+ $this->getUser()->isAllowed( 'checkuser' ) ) {
+ $CULink = '&nbsp;&middot;&nbsp;' . $linkRenderer->makeKnownLink(
+ SpecialPage::getTitleFor(
+ 'CheckUser',
+ $row->afl_ip
+ ),
+ $this->msg( 'abusefilter-log-details-checkuser' )->text()
+ );
+ } else {
+ $CULink = '';
+ }
+ $output .=
+ Xml::tags( 'tr', null,
+ Xml::element( 'td',
+ [ 'style' => 'width: 30%;' ],
+ $this->msg( 'abusefilter-log-details-ip' )->text()
+ ) .
+ Xml::tags(
+ 'td',
+ null,
+ self::getUserLinks( 0, $row->afl_ip ) . $CULink
+ )
+ );
+ } else {
+ $output .=
+ Xml::tags( 'tr', null,
+ Xml::element( 'td',
+ [ 'style' => 'width: 30%;' ],
+ $this->msg( 'abusefilter-log-details-ip' )->text()
+ ) .
+ Xml::element(
+ 'td',
+ null,
+ $this->msg( 'abusefilter-log-ip-not-available' )->text()
+ )
+ );
+ }
+
+ $output .= Xml::closeElement( 'tbody' ) . Xml::closeElement( 'table' );
+
+ $output = Xml::tags( 'fieldset', null, $output );
+
+ $out->addHTML( $output );
+ }
+
+ /**
+ * If specifying a reason for viewing private details of abuse log is required
+ * then it makes sure that a reason is provided.
+ *
+ * @param string $reason
+ * @return bool
+ */
+ protected function checkReason( $reason ) {
+ global $wgAbuseFilterForceSummary;
+ return ( !$wgAbuseFilterForceSummary || strlen( $reason ) > 0 );
+ }
+
+ /**
+ * @param int $logID int The ID of the AbuseFilter log that was accessed
+ * @param string $reason The reason provided for accessing private details
+ * @param User $user The user who accessed the private details
+ * @return void
+ */
+ public static function addLogEntry( $logID, $reason, $user ) {
+ $target = self::getTitleFor( 'AbuseLog', $logID );
+
+ $logEntry = new ManualLogEntry( 'abusefilterprivatedetails', 'access' );
+ $logEntry->setPerformer( $user );
+ $logEntry->setTarget( $target );
+ $logEntry->setParameters( [
+ '4::logid' => $logID,
+ ] );
+ $logEntry->setComment( $reason );
+
+ $logEntry->insert();
+ }
+
+ /**
+ * @param string $filter_id
+ * @param bool $filter_hidden
+ * @return bool
+ */
+ static function canSeeDetails( $filter_id = null, $filter_hidden = null ) {
+ global $wgUser;
+
+ if ( $filter_id !== null ) {
+ if ( $filter_hidden === null ) {
+ $filter_hidden = AbuseFilter::filterHidden( $filter_id );
+ }
+ if ( $filter_hidden ) {
+ return $wgUser->isAllowed( 'abusefilter-log-detail' ) && (
+ AbuseFilterView::canViewPrivate() || $wgUser->isAllowed( 'abusefilter-log-private' )
+ );
+ }
+ }
+
+ return $wgUser->isAllowed( 'abusefilter-log-detail' );
+ }
+
+ /**
+ * @return bool
+ */
+ static function canSeePrivate() {
+ global $wgUser;
+
+ return $wgUser->isAllowed( 'abusefilter-private' );
+ }
+
+ /**
+ * @return bool
+ */
+ static function canSeeHidden() {
+ global $wgUser;
+
+ return $wgUser->isAllowed( 'abusefilter-hidden-log' );
+ }
+
+ /**
+ * @param stdClass $row
+ * @param bool $isListItem
+ * @return String
+ */
+ function formatRow( $row, $isListItem = true ) {
+ $user = $this->getUser();
+ $lang = $this->getLanguage();
+
+ $actionLinks = [];
+
+ $title = Title::makeTitle( $row->afl_namespace, $row->afl_title );
+
+ $diffLink = false;
+ $isHidden = self::isHidden( $row );
+
+ if ( !self::canSeeHidden() && $isHidden ) {
+ return '';
+ }
+
+ $linkRenderer = $this->getLinkRenderer();
+
+ if ( !$row->afl_wiki ) {
+ $pageLink = $linkRenderer->makeLink( $title );
+ if ( $row->afl_rev_id && $title->exists() ) {
+ $diffLink = $linkRenderer->makeKnownLink(
+ $title,
+ new HtmlArmor( $this->msg( 'abusefilter-log-diff' )->parse() ),
+ [],
+ [ 'diff' => 'prev', 'oldid' => $row->afl_rev_id ] );
+ }
+ } else {
+ $pageLink = WikiMap::makeForeignLink( $row->afl_wiki, $row->afl_title );
+
+ if ( $row->afl_rev_id ) {
+ $diffUrl = WikiMap::getForeignURL( $row->afl_wiki, $row->afl_title );
+ $diffUrl = wfAppendQuery( $diffUrl,
+ [ 'diff' => 'prev', 'oldid' => $row->afl_rev_id ] );
+
+ $diffLink = Linker::makeExternalLink( $diffUrl,
+ $this->msg( 'abusefilter-log-diff' )->parse() );
+ }
+ }
+
+ if ( !$row->afl_wiki ) {
+ // Local user
+ $userLink = self::getUserLinks( $row->afl_user, $row->afl_user_text );
+ } else {
+ $userLink = WikiMap::foreignUserLink( $row->afl_wiki, $row->afl_user_text );
+ $userLink .= ' (' . WikiMap::getWikiName( $row->afl_wiki ) . ')';
+ }
+
+ $timestamp = $lang->timeanddate( $row->afl_timestamp, true );
+
+ $actions_taken = $row->afl_actions;
+ if ( !strlen( trim( $actions_taken ) ) ) {
+ $actions_taken = $this->msg( 'abusefilter-log-noactions' )->escaped();
+ } else {
+ $actions = explode( ',', $actions_taken );
+ $displayActions = [];
+
+ foreach ( $actions as $action ) {
+ $displayActions[] = AbuseFilter::getActionDisplay( $action );
+ }
+ $actions_taken = $lang->commaList( $displayActions );
+ }
+
+ $globalIndex = AbuseFilter::decodeGlobalName( $row->afl_filter );
+
+ if ( $globalIndex ) {
+ // Pull global filter description
+ $escaped_comments = Sanitizer::escapeHtmlAllowEntities(
+ AbuseFilter::getGlobalFilterDescription( $globalIndex ) );
+ $filter_hidden = null;
+ } else {
+ $escaped_comments = Sanitizer::escapeHtmlAllowEntities(
+ $row->af_public_comments );
+ $filter_hidden = $row->af_hidden;
+ }
+
+ if ( self::canSeeDetails( $row->afl_filter, $filter_hidden ) ) {
+ if ( $isListItem ) {
+ $detailsLink = $linkRenderer->makeKnownLink(
+ $this->getPageTitle( $row->afl_id ),
+ $this->msg( 'abusefilter-log-detailslink' )->text()
+ );
+ $actionLinks[] = $detailsLink;
+ }
+
+ $examineTitle = SpecialPage::getTitleFor( 'AbuseFilter', 'examine/log/' . $row->afl_id );
+ $examineLink = $linkRenderer->makeKnownLink(
+ $examineTitle,
+ new HtmlArmor( $this->msg( 'abusefilter-changeslist-examine' )->parse() )
+ );
+ $actionLinks[] = $examineLink;
+
+ if ( $diffLink ) {
+ $actionLinks[] = $diffLink;
+ }
+
+ if ( $user->isAllowed( 'abusefilter-hide-log' ) ) {
+ $hideLink = $linkRenderer->makeKnownLink(
+ $this->getPageTitle(),
+ $this->msg( 'abusefilter-log-hidelink' )->text(),
+ [],
+ [ 'hide' => $row->afl_id ]
+ );
+
+ $actionLinks[] = $hideLink;
+ }
+
+ if ( $globalIndex ) {
+ global $wgAbuseFilterCentralDB;
+ $globalURL =
+ WikiMap::getForeignURL( $wgAbuseFilterCentralDB,
+ 'Special:AbuseFilter/' . $globalIndex );
+
+ $linkText = $this->msg( 'abusefilter-log-detailedentry-global' )
+ ->numParams( $globalIndex )->escaped();
+ $filterLink = Linker::makeExternalLink( $globalURL, $linkText );
+ } else {
+ $title = SpecialPage::getTitleFor( 'AbuseFilter', $row->afl_filter );
+ $linkText = $this->msg( 'abusefilter-log-detailedentry-local' )
+ ->numParams( $row->afl_filter )->text();
+ $filterLink = $linkRenderer->makeKnownLink( $title, $linkText );
+ }
+ $description = $this->msg( 'abusefilter-log-detailedentry-meta' )->rawParams(
+ $timestamp,
+ $userLink,
+ $filterLink,
+ $row->afl_action,
+ $pageLink,
+ $actions_taken,
+ $escaped_comments,
+ $lang->pipeList( $actionLinks )
+ )->params( $row->afl_user_text )->parse();
+ } else {
+ if ( $diffLink ) {
+ $msg = 'abusefilter-log-entry-withdiff';
+ } else {
+ $msg = 'abusefilter-log-entry';
+ }
+ $description = $this->msg( $msg )->rawParams(
+ $timestamp,
+ $userLink,
+ $row->afl_action,
+ $pageLink,
+ $actions_taken,
+ $escaped_comments,
+ $diffLink // Passing $7 to 'abusefilter-log-entry' will do nothing, as it's not used.
+ )->params( $row->afl_user_text )->parse();
+ }
+
+ if ( $isHidden === true ) {
+ $description .= ' ' .
+ $this->msg( 'abusefilter-log-hidden' )->parse();
+ $class = 'afl-hidden';
+ } elseif ( $isHidden === 'implicit' ) {
+ $description .= ' ' .
+ $this->msg( 'abusefilter-log-hidden-implicit' )->parse();
+ }
+
+ if ( $isListItem ) {
+ return Xml::tags( 'li', isset( $class ) ? [ 'class' => $class ] : null, $description );
+ } else {
+ return Xml::tags( 'span', isset( $class ) ? [ 'class' => $class ] : null, $description );
+ }
+ }
+
+ /**
+ * @param int $userId
+ * @param string $userName
+ * @return string
+ */
+ protected static function getUserLinks( $userId, $userName ) {
+ static $cache = [];
+
+ if ( !isset( $cache[$userName][$userId] ) ) {
+ $cache[$userName][$userId] = Linker::userLink( $userId, $userName ) .
+ Linker::userToolLinks( $userId, $userName, true );
+ }
+
+ return $cache[$userName][$userId];
+ }
+
+ /**
+ * @param \Wikimedia\Rdbms\IDatabase $db
+ * @return string
+ */
+ public static function getNotDeletedCond( $db ) {
+ $deletedZeroCond = $db->makeList(
+ [ 'afl_deleted' => 0 ], LIST_AND );
+ $deletedNullCond = $db->makeList(
+ [ 'afl_deleted' => null ], LIST_AND );
+ $notDeletedCond = $db->makeList(
+ [ $deletedZeroCond, $deletedNullCond ], LIST_OR );
+
+ return $notDeletedCond;
+ }
+
+ /**
+ * Given a log entry row, decides whether or not it can be viewed by the public.
+ *
+ * @param stdClass $row The abuse_filter_log row object.
+ *
+ * @return bool|string true if the item is explicitly hidden, false if it is not.
+ * The string 'implicit' if it is hidden because the corresponding revision is hidden.
+ */
+ public static function isHidden( $row ) {
+ if ( $row->afl_rev_id ) {
+ $revision = Revision::newFromId( $row->afl_rev_id );
+ if ( $revision && $revision->getVisibility() != 0 ) {
+ return 'implicit';
+ }
+ }
+
+ return (bool)$row->afl_deleted;
+ }
+
+ /**
+ * @return string
+ */
+ protected function getGroupName() {
+ return 'changes';
+ }
+}
diff --git a/www/wiki/extensions/AbuseFilter/maintenance/addMissingLoggingEntries.php b/www/wiki/extensions/AbuseFilter/maintenance/addMissingLoggingEntries.php
new file mode 100644
index 00000000..2ad06afd
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/maintenance/addMissingLoggingEntries.php
@@ -0,0 +1,98 @@
+<?php
+
+if ( getenv( 'MW_INSTALL_PATH' ) ) {
+ $IP = getenv( 'MW_INSTALL_PATH' );
+} else {
+ $IP = __DIR__ . '/../../..';
+}
+require_once "$IP/maintenance/Maintenance.php";
+
+/**
+ * Adds rows missing per https://bugzilla.wikimedia.org/show_bug.cgi?id=52919
+ */
+class AddMissingLoggingEntries extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+
+ $this->requireExtension( 'Abuse Filter' );
+ }
+
+ public function execute() {
+ $logParams = [];
+ $afhRows = [];
+
+ // Find all entries in abuse_filter_history without logging entry of same timestamp
+ $afhResult = wfGetDB( DB_REPLICA, 'vslow' )->select(
+ [ 'abuse_filter_history', 'logging' ],
+ [ 'afh_id', 'afh_filter', 'afh_timestamp', 'afh_user', 'afh_deleted', 'afh_user_text' ],
+ [ 'log_id IS NULL' ],
+ __METHOD__,
+ [],
+ [ 'logging' => [
+ 'LEFT JOIN',
+ 'afh_timestamp = log_timestamp AND ' .
+ 'SUBSTRING_INDEX(log_params, \'\n\', 1) = afh_id AND log_type = \'abusefilter\''
+ ] ]
+ );
+
+ // Because the timestamp matches aren't exact (sometimes a couple of
+ // seconds off), we need to check all our results and ignore those that
+ // do actually have log entries
+ foreach ( $afhResult as $row ) {
+ $logParams[] = $row->afh_id . "\n" . $row->afh_filter;
+ $afhRows[$row->afh_id] = $row;
+ }
+
+ if ( !count( $afhRows ) ) {
+ $this->error( "Nothing to do.", 1 );
+ }
+
+ $logResult = wfGetDB( DB_REPLICA )->select(
+ 'logging',
+ [ 'log_params' ],
+ [ 'log_type' => 'abusefilter', 'log_params' => $logParams ],
+ __METHOD__
+ );
+
+ foreach ( $logResult as $row ) {
+ $params = explode( "\n", $row->log_params ); // id . '\n' . filter
+ $afhId = $params[0]; // id
+ // Forget this row had any issues - it just has a different timestamp in the log
+ unset( $afhRows[$afhId] );
+ }
+
+ if ( !count( $afhRows ) ) {
+ $this->error( "Nothing to do.", 1 );
+ }
+
+ $dbw = wfGetDB( DB_MASTER );
+
+ $count = 0;
+ foreach ( $afhRows as $row ) {
+ if ( $count % 100 == 0 ) {
+ wfWaitForSlaves();
+ }
+ $user = User::newFromAnyId( $row->afh_user, $row->afh_user_text, null );
+ $dbw->insert(
+ 'logging',
+ [
+ 'log_type' => 'abusefilter',
+ 'log_action' => 'modify',
+ 'log_timestamp' => $row->afh_timestamp,
+ 'log_namespace' => -1,
+ 'log_title' => SpecialPageFactory::getLocalNameFor( 'AbuseFilter' ) . '/' . $row->afh_filter,
+ 'log_params' => $row->afh_id . '\n' . $row->afh_filter,
+ 'log_deleted' => $row->afh_deleted,
+ ] + CommentStore::getStore()->insert( $dbw, 'log_comment', '' )
+ + ActorMigration::newMigration()->getInsertValues( $dbw, 'log_user', $user ),
+ __METHOD__
+ );
+ $count++;
+ }
+
+ $this->output( "Inserted " . $count . " rows.\n" );
+ }
+}
+
+$maintClass = 'AddMissingLoggingEntries';
+require_once RUN_MAINTENANCE_IF_MAIN;
diff --git a/www/wiki/extensions/AbuseFilter/maintenance/purgeOldLogIPData.php b/www/wiki/extensions/AbuseFilter/maintenance/purgeOldLogIPData.php
new file mode 100644
index 00000000..1a4b560b
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/maintenance/purgeOldLogIPData.php
@@ -0,0 +1,61 @@
+<?php
+
+if ( getenv( 'MW_INSTALL_PATH' ) ) {
+ $IP = getenv( 'MW_INSTALL_PATH' );
+} else {
+ $IP = __DIR__ . '/../../..';
+}
+require_once "$IP/maintenance/Maintenance.php";
+
+class PurgeOldLogIPData extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = 'Purge old IP Address data from AbuseFilter logs';
+ $this->setBatchSize( 200 );
+
+ $this->requireExtension( 'Abuse Filter' );
+ }
+
+ public function execute() {
+ global $wgAbuseFilterLogIPMaxAge;
+
+ $this->output( "Purging old IP Address data from abuse_filter_log...\n" );
+ $dbw = wfGetDB( DB_MASTER );
+ $cutoffUnix = time() - $wgAbuseFilterLogIPMaxAge;
+
+ $count = 0;
+ do {
+ $ids = $dbw->selectFieldValues(
+ 'abuse_filter_log',
+ 'afl_id',
+ [
+ 'afl_ip <> ""',
+ "afl_timestamp < " . $dbw->addQuotes( $dbw->timestamp( $cutoffUnix ) )
+ ],
+ __METHOD__,
+ [ 'LIMIT' => $this->getBatchSize() ]
+ );
+
+ if ( $ids ) {
+ $dbw->update(
+ 'abuse_filter_log',
+ [ 'afl_ip' => '' ],
+ [ 'afl_id' => $ids ],
+ __METHOD__
+ );
+ $count += $dbw->affectedRows();
+ $this->output( "$count\n" );
+
+ wfWaitForSlaves();
+ }
+ } while ( count( $ids ) >= $this->getBatchSize() );
+
+ $this->output( "$count rows.\n" );
+
+ $this->output( "Done.\n" );
+ }
+
+}
+
+$maintClass = "PurgeOldLogIPData";
+require_once RUN_MAINTENANCE_IF_MAIN;
diff --git a/www/wiki/extensions/AbuseFilter/modules/ext.abuseFilter.css b/www/wiki/extensions/AbuseFilter/modules/ext.abuseFilter.css
new file mode 100644
index 00000000..8ae9bc1b
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/modules/ext.abuseFilter.css
@@ -0,0 +1,120 @@
+/* This code was stolen shamelessly from enwikipedia's Common.css */
+table.mw-abuselog-details {
+ margin: 1em 1em 1em 0;
+ background: #f9f9f9;
+ border: 1px #aaa solid;
+ border-collapse: collapse;
+ width: 100%;
+ table-layout: fixed;
+}
+
+table.mw-abuselog-details th,
+table.mw-abuselog-details td {
+ border: 1px #aaa solid;
+ padding: 0.2em;
+}
+
+table.mw-abuselog-details th {
+ background: #f2f2f2;
+ text-align: center;
+}
+
+table.mw-abuselog-details caption {
+ font-weight: bold;
+}
+
+.mw-abusefilter-history-changed {
+ background: #ffe0e0;
+ font-weight: bold;
+}
+
+.mw-abuselog-var-value {
+ white-space: pre-wrap;
+ font-family: monospace;
+}
+
+div.mw-abuselog-var-value {
+ max-height: 25em;
+ max-width: 100%;
+ overflow: auto;
+}
+
+td.mw-abuselog-var {
+ width: 30%;
+}
+
+table.mw-abusefilter-list-scrollable {
+ display: block;
+ border: 0;
+ overflow-x: auto;
+}
+
+tr.mw-abusefilter-list-disabled,
+tr.mw-abusefilter-list-disabled td {
+ color: #666;
+}
+
+tr.mw-abusefilter-list-deleted,
+tr.mw-abusefilter-list-deleted td {
+ color: #aaa;
+}
+
+.mw-abusefilter-examine-match,
+.mw-abusefilter-syntaxresult-ok,
+li.mw-abusefilter-changeslist-match {
+ /* @embed */
+ background-image: url( yes_check.png );
+}
+
+.mw-abusefilter-examine-nomatch,
+.mw-abusefilter-syntaxresult-error,
+li.mw-abusefilter-changeslist-nomatch {
+ /* @embed */
+ background-image: url( red_x.png );
+}
+
+div.mw-abusefilter-editor {
+ max-width: 75em;
+ height: 30em;
+ line-height: 1.5em;
+ border: 1px solid #a2a9b1;
+ display: none;
+}
+
+fieldset.mw-abusefilter-edit-buttons {
+ margin-top: 1em;
+}
+
+.mw-abusefilter-load-filter-id {
+ width: 25%;
+ min-width: 250px;
+}
+
+#mw-abusefilter-syntaxresult,
+ul li.mw-abusefilter-changeslist-nomatch,
+ul li.mw-abusefilter-changeslist-match {
+ /* Do not consolidate these into a "background:" rule; it will override the background-image: settings in above rulesets */
+ background-repeat: no-repeat;
+ padding-left: 25px;
+ background-position: left center;
+}
+
+/* Name is in site content language */
+/* @noflip */
+.sitedir-ltr .TablePager_col_af_public_comments {
+ direction: ltr;
+}
+
+/* @noflip */
+.sitedir-rtl .TablePager_col_af_public_comments {
+ direction: rtl;
+}
+
+#mw-abusefilter-filter-tools {
+ display: inline;
+}
+
+.client-nojs #mw-abusefilter-export-link,
+.client-js #mw-abusefilter-export {
+ display: none;
+}
diff --git a/www/wiki/extensions/AbuseFilter/modules/ext.abuseFilter.edit.js b/www/wiki/extensions/AbuseFilter/modules/ext.abuseFilter.edit.js
new file mode 100644
index 00000000..176a45e5
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/modules/ext.abuseFilter.edit.js
@@ -0,0 +1,428 @@
+/**
+ * AbuseFilter editing JavaScript
+ *
+ * @author John Du Hart
+ * @author Marius Hoch <hoo@online.de>
+ */
+/* global ace */
+
+( function ( mw, $ ) {
+ 'use strict';
+
+ // Filter editor for JS and jQuery handling
+ // @var {jQuery}
+ var $filterBox,
+ // Filter editor for Ace specific functions
+ filterEditor,
+ // Hidden textarea for submitting form
+ // @var {jQuery}
+ $plainTextBox,
+ // Bool to determine what editor to use
+ useAce = false;
+
+ /**
+ * Returns the currently selected warning message
+ *
+ * @return {string} current warning message
+ */
+ function getCurrentWarningMessage() {
+ var message = $( '#mw-abusefilter-warn-message-existing' ).val();
+
+ if ( message === 'other' ) {
+ message = $( '#mw-abusefilter-warn-message-other' ).val();
+ }
+
+ return message;
+ }
+
+ /**
+ * Things always needed after syntax checks
+ *
+ * @param {string} resultText
+ * @param {string} className Class to add
+ * @param {bool} syntaxOk Is the syntax ok?
+ */
+ function processSyntaxResultAlways( resultText, className, syntaxOk ) {
+ $.removeSpinner( 'abusefilter-syntaxcheck' );
+ $( '#mw-abusefilter-syntaxcheck' ).prop( 'disabled', false );
+
+ $( '#mw-abusefilter-syntaxresult' )
+ .show()
+ .attr( 'class', className )
+ .text( resultText )
+ .data( 'syntaxOk', syntaxOk );
+ }
+
+ /**
+ * Converts index (used in textareas) in position {row, column} for ace
+ *
+ * @author danyaPostfactum (https://github.com/ajaxorg/ace/issues/1162)
+ *
+ * @param {string} index Part of data returned from the AJAX request
+ * @return {Object} row and column
+ */
+ function indexToPosition( index ) {
+ var lines = filterEditor.session.getDocument().$lines,
+ newLineChar = filterEditor.session.doc.getNewLineCharacter(),
+ currentIndex = 0,
+ row, length;
+ for ( row = 0; row < lines.length; row++ ) {
+ length = filterEditor.session.getLine( row ).length;
+ if ( currentIndex + length >= index ) {
+ return {
+ row: row,
+ column: index - currentIndex
+ };
+ }
+ currentIndex += length + newLineChar.length;
+ }
+ }
+
+ /**
+ * Switch between Ace Editor and classic textarea
+ */
+ function switchEditor() {
+ if ( useAce ) {
+ useAce = false;
+ $filterBox.hide();
+ $plainTextBox.show();
+ } else {
+ useAce = true;
+ filterEditor.session.setValue( $plainTextBox.val() );
+ $filterBox.show();
+ $plainTextBox.hide();
+ }
+ }
+
+ /**
+ * Takes the data retrieved in doSyntaxCheck and processes it
+ *
+ * @param {Object} data Data returned from the AJAX request
+ */
+ function processSyntaxResult( data ) {
+ var position;
+ data = data.abusefilterchecksyntax;
+
+ if ( data.status === 'ok' ) {
+ // Successful
+ processSyntaxResultAlways(
+ mw.msg( 'abusefilter-edit-syntaxok' ),
+ 'mw-abusefilter-syntaxresult-ok',
+ true
+ );
+ } else {
+ // Set a custom error message as we're aware of the actual problem
+ processSyntaxResultAlways(
+ mw.message( 'abusefilter-edit-syntaxerr', data.message ).toString(),
+ 'mw-abusefilter-syntaxresult-error',
+ false
+ );
+
+ if ( useAce ) {
+ filterEditor.focus();
+ position = indexToPosition( data.character );
+ filterEditor.navigateTo( position.row, position.column );
+ filterEditor.scrollToRow( position.row );
+ } else {
+ $plainTextBox
+ .focus()
+ .textSelection( 'setSelection', { start: data.character } );
+ }
+ }
+ }
+
+ /**
+ * Acts on errors after doSyntaxCheck
+ *
+ * @param {string} error Error code returned from the AJAX request
+ * @param {Object} details Details about the error
+ */
+ function processSyntaxResultFailure( error, details ) {
+ var msg = error === 'http' ? 'abusefilter-http-error' : 'unknown-error';
+ processSyntaxResultAlways(
+ mw.msg( msg, details && details.exception ),
+ 'mw-abusefilter-syntaxresult-error',
+ false
+ );
+ }
+
+ /**
+ * Sends the current filter text to be checked for syntax issues.
+ *
+ * @context HTMLElement
+ * @param {jQuery.Event} e
+ */
+ function doSyntaxCheck() {
+ var filter = $plainTextBox.val(),
+ api = new mw.Api();
+
+ $( this )
+ .prop( 'disabled', true )
+ .injectSpinner( { id: 'abusefilter-syntaxcheck', size: 'large' } );
+
+ api.post( {
+ action: 'abusefilterchecksyntax',
+ filter: filter
+ } )
+ .done( processSyntaxResult )
+ .fail( processSyntaxResultFailure );
+ }
+
+ /**
+ * Adds text to the filter textarea
+ * Fired by a change event from the #wpFilterBuilder dropdown
+ */
+ function addText() {
+ var $filterBuilder = $( '#wpFilterBuilder' );
+
+ if ( $filterBuilder.prop( 'selectedIndex' ) === 0 ) {
+ return;
+ }
+
+ if ( useAce ) {
+ filterEditor.insert( $filterBuilder.val() + ' ' );
+ $plainTextBox.val( filterEditor.getSession().getValue() );
+ } else {
+ $plainTextBox.textSelection(
+ 'encapsulateSelection', { pre: $filterBuilder.val() + ' ' }
+ );
+ }
+ $filterBuilder.prop( 'selectedIndex', 0 );
+ }
+
+ /**
+ * Fetches a filter from the API and inserts it into the filter box.
+ *
+ * @context HTMLElement
+ * @param {jQuery.Event} e
+ */
+ function fetchFilter() {
+ var filterId = $.trim( $( '#mw-abusefilter-load-filter input' ).val() ),
+ api;
+
+ if ( filterId === '' ) {
+ return;
+ }
+
+ $( this ).injectSpinner( { id: 'fetch-spinner', size: 'large' } );
+
+ // We just ignore errors or unexisting filters over here
+ api = new mw.Api();
+ api.get( {
+ action: 'query',
+ list: 'abusefilters',
+ abfprop: 'pattern',
+ abfstartid: filterId,
+ abfendid: filterId,
+ abflimit: 1
+ } )
+ .always( function () {
+ $.removeSpinner( 'fetch-spinner' );
+ } )
+ .done( function ( data ) {
+ if ( data.query.abusefilters[ 0 ] !== undefined ) {
+ if ( useAce ) {
+ filterEditor.setValue( data.query.abusefilters[ 0 ].pattern );
+ }
+ $plainTextBox.val( data.query.abusefilters[ 0 ].pattern );
+ }
+ } );
+ }
+
+ /**
+ * Cycles through all action checkboxes and hides parameter divs
+ * that don't have checked boxes
+ */
+ function hideDeselectedActions() {
+ $( 'input.mw-abusefilter-action-checkbox' ).each( function () {
+ // mw-abusefilter-action-checkbox-{$action}
+ var action = this.id.substr( 31 ),
+ $params = $( '#mw-abusefilter-' + action + '-parameters' );
+
+ if ( $params.length ) {
+ if ( this.checked ) {
+ $params.show();
+ } else {
+ $params.hide();
+ }
+ }
+ } );
+ }
+
+ /**
+ * Fetches the selected warning message for previewing
+ */
+ function previewWarnMessage() {
+ var api = new mw.Api(),
+ args = [
+ '<nowiki>' + $( 'input[name=wpFilterDescription]' ).val() + '</nowiki>',
+ $( '#mw-abusefilter-edit-id' ).children().last().text()
+ ],
+ message = getCurrentWarningMessage();
+ api.get( {
+ action: 'query',
+ meta: 'allmessages',
+ ammessages: message,
+ amargs: args.join( '|' )
+ } )
+ .done( function ( data ) {
+ api.parse( data.query.allmessages[ 0 ][ '*' ], {
+ disablelimitreport: '',
+ preview: '',
+ prop: 'text',
+ title: 'MediaWiki:' + message
+ } )
+ .done( function ( html ) {
+ $( '#mw-abusefilter-warn-preview' ).html( html );
+ } );
+ } );
+ }
+
+ /**
+ * Redirects the browser to the warning message for editing
+ */
+ function editWarnMessage() {
+ var message = getCurrentWarningMessage();
+
+ window.location = mw.config.get( 'wgScript' ) +
+ '?title=MediaWiki:' + mw.util.wikiUrlencode( message ) +
+ '&action=edit&preload=MediaWiki:abusefilter-warning';
+ }
+
+ /**
+ * Called if the filter group (#mw-abusefilter-edit-group-input) is changed.
+ *
+ * @context HTMLELement
+ * @param {jQuery.Event} e
+ */
+ function onFilterGroupChange() {
+ var $afWarnMessageExisting, $afWarnMessageOther, newVal;
+
+ if ( !$( '#mw-abusefilter-action-warn-checkbox' ).is( ':checked' ) ) {
+ $afWarnMessageExisting = $( '#mw-abusefilter-warn-message-existing' );
+ $afWarnMessageOther = $( '#mw-abusefilter-warn-message-other' );
+ newVal = mw.config.get( 'wgAbuseFilterDefaultWarningMessage' )[ $( this ).val() ];
+
+ if ( $afWarnMessageExisting.find( 'option[value=\'' + newVal + '\']' ).length ) {
+ $afWarnMessageExisting.val( newVal );
+ $afWarnMessageOther.val( '' );
+ } else {
+ $afWarnMessageExisting.val( 'other' );
+ $afWarnMessageOther.val( newVal );
+ }
+ }
+ }
+
+ /**
+ * Remove the options for warning messages if the filter is set to global
+ */
+ function toggleCustomMessages() {
+ // Use the table over here as hideDeselectedActions might alter the visibility of the div
+ var $warnOptions = $( '#mw-abusefilter-warn-parameters > table' );
+
+ if ( $( '#wpFilterGlobal' ).is( ':checked' ) ) {
+ // It's a global filter, so use the default message and hide the option from the user
+ $( '#mw-abusefilter-warn-message-existing option[value="abusefilter-warning"]' )
+ .prop( 'selected', true );
+
+ $warnOptions.hide();
+ } else {
+ $warnOptions.show();
+ }
+ }
+
+ /**
+ * Called if the user presses a key in the load filter field
+ *
+ * @context HTMLELement
+ * @param {jQuery.Event} e
+ */
+ function onFilterKeypress( e ) {
+ if ( e.type === 'keypress' && e.which === 13 ) {
+ e.preventDefault();
+ $( '#mw-abusefilter-load' ).click();
+ }
+ }
+
+ // On ready initialization
+ $( document ).ready( function () {
+ var basePath, readOnly,
+ $exportBox = $( '#mw-abusefilter-export' );
+
+ $plainTextBox = $( '#' + mw.config.get( 'abuseFilterBoxName' ) );
+
+ if ( $( '#wpAceFilterEditor' ).length ) {
+ // CodeEditor is installed.
+ mw.loader.using( [ 'ext.abuseFilter.ace' ] ).then( function () {
+ $filterBox = $( '#wpAceFilterEditor' );
+
+ filterEditor = ace.edit( 'wpAceFilterEditor' );
+ filterEditor.session.setMode( 'ace/mode/abusefilter' );
+
+ // Ace setup from codeEditor extension
+ basePath = mw.config.get( 'wgExtensionAssetsPath', '' );
+ if ( basePath.slice( 0, 2 ) === '//' ) {
+ // ACE uses web workers, which have importScripts, which don't like relative links.
+ // This is a problem only when the assets are on another server, so this rewrite should suffice
+ // Protocol relative
+ basePath = window.location.protocol + basePath;
+ }
+ ace.config.set( 'basePath', basePath + '/CodeEditor/modules/ace' );
+
+ // Settings for Ace editor box
+ readOnly = mw.config.get( 'aceConfig' ).aceReadOnly;
+
+ filterEditor.setTheme( 'ace/theme/textmate' );
+ filterEditor.session.setOption( 'useWorker', false );
+ filterEditor.setReadOnly( readOnly );
+ filterEditor.$blockScrolling = Infinity;
+
+ // Display Ace editor
+ switchEditor();
+
+ // Hide the syntax ok message when the text changes and sync dummy box
+ $filterBox.keyup( function () {
+ var $el = $( '#mw-abusefilter-syntaxresult' );
+
+ if ( $el.data( 'syntaxOk' ) ) {
+ $el.hide();
+ }
+
+ $plainTextBox.val( filterEditor.getSession().getValue() );
+ } );
+
+ $( '#mw-abusefilter-switcheditor' ).click( switchEditor );
+ } );
+ }
+
+ // Hide the syntax ok message when the text changes
+ $plainTextBox.keyup( function () {
+ var $el = $( '#mw-abusefilter-syntaxresult' );
+
+ if ( $el.data( 'syntaxOk' ) ) {
+ $el.hide();
+ }
+ } );
+
+ $( '#mw-abusefilter-load' ).click( fetchFilter );
+ $( '#mw-abusefilter-load-filter' ).keypress( onFilterKeypress );
+ $( '#mw-abusefilter-warn-preview-button' ).click( previewWarnMessage );
+ $( '#mw-abusefilter-warn-edit-button' ).click( editWarnMessage );
+ $( 'input.mw-abusefilter-action-checkbox' ).click( hideDeselectedActions );
+ hideDeselectedActions();
+
+ $( '#wpFilterGlobal' ).change( toggleCustomMessages );
+ toggleCustomMessages();
+
+ $( '#mw-abusefilter-syntaxcheck' ).click( doSyntaxCheck );
+ $( '#wpFilterBuilder' ).change( addText );
+ $( '#mw-abusefilter-edit-group-input' ).change( onFilterGroupChange );
+
+ $( '#mw-abusefilter-export-link' ).click(
+ function ( e ) {
+ e.preventDefault();
+ $exportBox.toggle();
+ }
+ );
+ } );
+}( mediaWiki, jQuery ) );
diff --git a/www/wiki/extensions/AbuseFilter/modules/ext.abuseFilter.examine.js b/www/wiki/extensions/AbuseFilter/modules/ext.abuseFilter.examine.js
new file mode 100644
index 00000000..e51becf6
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/modules/ext.abuseFilter.examine.js
@@ -0,0 +1,101 @@
+/**
+ * Check a filter against a change
+ *
+ * @author John Du Hart
+ * @author Marius Hoch <hoo@online.de>
+ */
+
+( function ( mw, $ ) {
+ 'use strict';
+
+ // Syntax result div
+ // @type {jQuery}
+ var $syntaxResult;
+
+ /**
+ * Processes the results of the filter test
+ *
+ * @param {Object} data
+ */
+ function examinerTestProcess( data ) {
+ var msg, exClass;
+ $.removeSpinner( 'filter-check' );
+
+ if ( data.abusefiltercheckmatch.result ) {
+ exClass = 'mw-abusefilter-examine-match';
+ msg = 'abusefilter-examine-match';
+ } else {
+ exClass = 'mw-abusefilter-examine-nomatch';
+ msg = 'abusefilter-examine-nomatch';
+ }
+ $syntaxResult
+ .attr( 'class', exClass )
+ .text( mw.msg( msg ) )
+ .show();
+ }
+
+ /**
+ * Processes the results of the filter test in case of an error
+ *
+ * @param {string} error Error code returned from the AJAX request
+ * @param {Object} details Details about the error
+ */
+ function examinerTestProcessFailure( error, details ) {
+ var msg;
+ $.removeSpinner( 'filter-check' );
+
+ if ( error === 'badsyntax' ) {
+ $syntaxResult.attr(
+ 'class', 'mw-abusefilter-syntaxresult-error'
+ );
+ msg = 'abusefilter-examine-syntaxerror';
+ } else if ( error === 'nosuchrcid' || error === 'nosuchlogid' ) {
+ msg = 'abusefilter-examine-notfound';
+ } else if ( error === 'permissiondenied' ) {
+ // The 'abusefilter-modify' right is needed to use this API
+ msg = 'abusefilter-mustbeeditor';
+ } else if ( error === 'http' ) {
+ msg = 'abusefilter-http-error';
+ } else {
+ msg = 'unknown-error';
+ }
+
+ $syntaxResult
+ .text( mw.msg( msg, details && details.exception ) )
+ .show();
+ }
+
+ /**
+ * Tests the filter against an rc event or abuse log entry.
+ *
+ * @context HTMLElement
+ * @param {jQuery.Event} e
+ */
+ function examinerTestFilter() {
+ var filter = $( '#wpTestFilter' ).val(),
+ examine = mw.config.get( 'abuseFilterExamine' ),
+ params = {
+ action: 'abusefiltercheckmatch',
+ filter: filter
+ },
+ api = new mw.Api();
+
+ $( this ).injectSpinner( { id: 'filter-check', size: 'large' } );
+
+ if ( examine.type === 'rc' ) {
+ params.rcid = examine.id;
+ } else {
+ params.logid = examine.id;
+ }
+
+ // Use post due to the rather large amount of data
+ api.post( params )
+ .done( examinerTestProcess )
+ .fail( examinerTestProcessFailure );
+ }
+
+ $( document ).ready( function () {
+ $syntaxResult = $( '#mw-abusefilter-syntaxresult' );
+ $( '#mw-abusefilter-examine-test' ).click( examinerTestFilter );
+ } );
+}( mediaWiki, jQuery ) );
diff --git a/www/wiki/extensions/AbuseFilter/modules/ext.abuseFilter.tools.js b/www/wiki/extensions/AbuseFilter/modules/ext.abuseFilter.tools.js
new file mode 100644
index 00000000..aa212771
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/modules/ext.abuseFilter.tools.js
@@ -0,0 +1,109 @@
+/**
+ * JavaScript for AbuseFilter tools
+ *
+ * @author John Du Hart
+ * @author Marius Hoch <hoo@online.de>
+ */
+
+( function ( mw, $ ) {
+ 'use strict';
+
+ /**
+ * Submits the expression to be evaluated.
+ * @context HTMLElement
+ * @param {jQuery.Event} e
+ */
+ function doExprSubmit() {
+ var expr = $( '#wpTestExpr' ).val(),
+ api = new mw.Api();
+ $( this ).injectSpinner( 'abusefilter-expr' );
+
+ api.post( {
+ action: 'abusefilterevalexpression',
+ expression: expr
+ } )
+ .fail( function ( error, details ) {
+ var msg = error === 'http' ? 'abusefilter-http-error' : 'unknown-error';
+ $.removeSpinner( 'abusefilter-expr' );
+ $( '#mw-abusefilter-expr-result' )
+ .text( mw.msg( msg, details.exception ) );
+ } )
+ .done( function ( data ) {
+ $.removeSpinner( 'abusefilter-expr' );
+
+ $( '#mw-abusefilter-expr-result' )
+ .text( data.abusefilterevalexpression.result );
+ } );
+ }
+
+ /**
+ * Processes the result of the unblocking autopromotions for a user
+ *
+ * @param {Object} data
+ */
+ function processReautoconfirm( data ) {
+ mw.notify(
+ mw.message( 'abusefilter-reautoconfirm-done', data.abusefilterunblockautopromote.user ).toString()
+ );
+
+ $.removeSpinner( 'abusefilter-reautoconfirm' );
+ }
+
+ /**
+ * Processes the result of the unblocking autopromotions for a user in case of an error
+ *
+ * @param {string} errorCode
+ * @param {Object} data
+ */
+ function processReautoconfirmFailure( errorCode, data ) {
+ var msg;
+
+ switch ( errorCode ) {
+ case 'permissiondenied':
+ msg = mw.msg( 'abusefilter-reautoconfirm-notallowed' );
+ break;
+ case 'http':
+ msg = mw.msg( 'abusefilter-http-error', data && data.exception );
+ break;
+ case 'notsuspended':
+ msg = data.error.info;
+ break;
+ default:
+ msg = mw.msg( 'unknown-error' );
+ break;
+ }
+ mw.notify( msg );
+
+ $.removeSpinner( 'abusefilter-reautoconfirm' );
+ }
+
+ /**
+ * Submits a call to reautoconfirm a user.
+ * @context HTMLElement
+ * @param {jQuery.Event} e
+ */
+ function doReautoSubmit() {
+ var name = $( '#reautoconfirm-user' ).val(),
+ api;
+
+ if ( name === '' ) {
+ return;
+ }
+
+ $( this ).injectSpinner( 'abusefilter-reautoconfirm' );
+
+ api = new mw.Api();
+ api.post( {
+ action: 'abusefilterunblockautopromote',
+ user: name,
+ token: mw.user.tokens.get( 'editToken' )
+ } )
+ .done( processReautoconfirm )
+ .fail( processReautoconfirmFailure );
+ }
+
+ $( document ).ready( function () {
+ $( '#mw-abusefilter-submitexpr' ).click( doExprSubmit );
+ $( '#mw-abusefilter-reautoconfirmsubmit' ).click( doReautoSubmit );
+ } );
+}( mediaWiki, jQuery ) );
diff --git a/www/wiki/extensions/AbuseFilter/modules/mode-abusefilter.js b/www/wiki/extensions/AbuseFilter/modules/mode-abusefilter.js
new file mode 100644
index 00000000..f705913b
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/modules/mode-abusefilter.js
@@ -0,0 +1,117 @@
+/* global ace, mw */
+ace.define( 'ace/mode/abusefilter_highlight_rules', [ 'require', 'exports', 'module', 'ace/lib/oop', 'ace/mode/text_highlight_rules' ], function ( require, exports, module ) {
+ 'use strict';
+
+ var oop = require( 'ace/lib/oop' ),
+ TextHighlightRules = require( './text_highlight_rules' ).TextHighlightRules,
+ AFHighlightRules = function () {
+
+ var keywords = ( mw.config.get( 'aceConfig' ).keywords ),
+ constants = ( 'true|false|null' ),
+ functions = ( mw.config.get( 'aceConfig' ).functions ),
+ variables = ( mw.config.get( 'aceConfig' ).variables ),
+ deprecated = ( '' ), // Template for deprecated vars, already registered within ace settings.
+ keywordMapper = this.createKeywordMapper(
+ {
+ 'keyword': keywords,
+ 'support.function': functions,
+ 'constant.language': constants,
+ 'variable.language': variables,
+ 'keyword.deprecated': deprecated
+ },
+ 'identifier'
+ ),
+ decimalInteger = '(?:(?:[1-9]\\d*)|(?:0))',
+ hexInteger = '(?:0[xX][\\dA-Fa-f]+)',
+ integer = '(?:' + decimalInteger + '|' + hexInteger + ')',
+ fraction = '(?:\\.\\d+)',
+ intPart = '(?:\\d+)',
+ pointFloat = '(?:(?:' + intPart + '?' + fraction + ')|(?:' + intPart + '\\.))',
+ floatNumber = '(?:' + pointFloat + ')';
+
+ this.$rules = {
+ 'start': [ {
+ token: 'comment',
+ regex: '\\/\\*',
+ next: 'comment'
+ }, {
+ token: 'string', // " string
+ regex: '"(?:[^\\\\]|\\\\.)*?"'
+ }, {
+ token: 'string', // ' string
+ regex: "'(?:[^\\\\]|\\\\.)*?'"
+ }, {
+ token: 'constant.numeric', // float
+ regex: floatNumber
+ }, {
+ token: 'constant.numeric', // integer
+ regex: integer + '\\b'
+ }, {
+ token: keywordMapper,
+ regex: '[a-zA-Z_$][a-zA-Z0-9_$]*\\b'
+ }, {
+ token: 'keyword.operator',
+ regex: '\\+|\\-|\\*\\*|\\*|\\/|%|\\^|&|\\||<|>|<=|=>|==|!=|===|!==|:=|=|!'
+ }, {
+ token: 'paren.lparen',
+ regex: '[\\[\\(]'
+ }, {
+ token: 'paren.rparen',
+ regex: '[\\]\\)]'
+ }, {
+ token: 'text',
+ regex: '\\s+|\\w+'
+ } ],
+ 'comment': [ {
+ token: 'comment',
+ regex: '\\*\\/',
+ next: 'start'
+ }, {
+ defaultToken: 'comment'
+ } ]
+ };
+
+ this.normalizeRules();
+ };
+
+ oop.inherits( AFHighlightRules, TextHighlightRules );
+
+ exports.AFHighlightRules = AFHighlightRules;
+} );
+
+ace.define( 'ace/mode/abusefilter', [ 'require', 'exports', 'module', 'ace/lib/oop', 'ace/mode/text', 'ace/mode/abusefilter_highlight_rules' ], function ( require, exports, module ) {
+ 'use strict';
+
+ var oop = require( 'ace/lib/oop' ),
+ TextMode = require( './text' ).Mode,
+ AFHighlightRules = require( './abusefilter_highlight_rules' ).AFHighlightRules,
+ MatchingBraceOutdent = require( './matching_brace_outdent' ).MatchingBraceOutdent,
+ Mode = function () {
+ this.HighlightRules = AFHighlightRules;
+ this.$behaviour = this.$defaultBehaviour;
+ this.$outdent = new MatchingBraceOutdent();
+ };
+ oop.inherits( Mode, TextMode );
+
+ ( function () {
+ this.blockComment = {
+ start: '/*',
+ end: '*/'
+ };
+ this.getNextLineIndent = function ( state, line, tab ) {
+ var indent = this.$getIndent( line );
+ return indent;
+ };
+ this.checkOutdent = function ( state, line, input ) {
+ return this.$outdent.checkOutdent( line, input );
+ };
+ this.autoOutdent = function ( state, doc, row ) {
+ this.$outdent.autoOutdent( doc, row );
+ };
+
+ this.$id = 'ace/mode/abusefilter';
+ } )
+ .call( Mode.prototype );
+
+ exports.Mode = Mode;
+} );
diff --git a/www/wiki/extensions/AbuseFilter/modules/red_x.png b/www/wiki/extensions/AbuseFilter/modules/red_x.png
new file mode 100644
index 00000000..11978f6a
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/modules/red_x.png
Binary files differ
diff --git a/www/wiki/extensions/AbuseFilter/modules/yes_check.png b/www/wiki/extensions/AbuseFilter/modules/yes_check.png
new file mode 100644
index 00000000..3b85985d
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/modules/yes_check.png
Binary files differ
diff --git a/www/wiki/extensions/AbuseFilter/package.json b/www/wiki/extensions/AbuseFilter/package.json
new file mode 100644
index 00000000..3888c6f2
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/package.json
@@ -0,0 +1,16 @@
+{
+ "private": true,
+ "scripts": {
+ "test": "grunt test"
+ },
+ "devDependencies": {
+ "eslint-config-wikimedia": "0.5.0",
+ "grunt": "1.0.2",
+ "grunt-banana-checker": "0.6.0",
+ "grunt-eslint": "20.1.0",
+ "grunt-jsonlint": "1.1.0",
+ "grunt-stylelint": "0.10.0",
+ "stylelint": "9.2.0",
+ "stylelint-config-wikimedia": "0.4.3"
+ }
+}
diff --git a/www/wiki/extensions/AbuseFilter/tests/legacyParserTest.php b/www/wiki/extensions/AbuseFilter/tests/legacyParserTest.php
new file mode 100644
index 00000000..c3055c15
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/legacyParserTest.php
@@ -0,0 +1,52 @@
+<?php
+/**
+ * Runs tests against the PHP parser.
+ */
+
+require_once getenv( 'MW_INSTALL_PATH' ) !== false
+ ? getenv( 'MW_INSTALL_PATH' ) . "/maintenance/commandLine.inc"
+ : __DIR__ . '/../../../maintenance/commandLine.inc';
+
+$tester = new AbuseFilterParser;
+
+$test_path = __DIR__ . "/parserTests";
+$tests = glob( $test_path . "/*.t" );
+
+$check = 0;
+$pass = 0;
+
+foreach ( $tests as $test ) {
+ $result = substr( $test, 0, -2 ) . ".r";
+
+ $rule = trim( file_get_contents( $test ) );
+ $output = trim( file_get_contents( $result ) ) == 'MATCH';
+
+ $testname = basename( $test );
+
+ print "Trying test $testname...\n";
+
+ try {
+ $check++;
+ $actual = intval( $tester->parse( $rule ) );
+
+ if ( $actual == $output ) {
+ print "-PASSED.\n";
+ $pass++;
+ } else {
+ print "-FAILED - expected output $output, actual output $actual.\n";
+ print "-Expression: $rule\n";
+
+ // export
+ $vars = var_export( $tester->mTokens, true );
+ file_put_contents( $test . '.parsed', $vars );
+ }
+ } catch ( AFPException $excep ) {
+ print "-FAILED - exception " . $excep->getMessage() . " with input $rule\n";
+
+ // export
+ $vars = var_export( $tester->mTokens, true );
+ file_put_contents( $test . '.parsed', $vars );
+ }
+}
+
+print "$pass tests passed out of $check\n";
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/almost-empty.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/almost-empty.r
new file mode 100644
index 00000000..8093d2ab
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/almost-empty.r
@@ -0,0 +1 @@
+NOT_MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/almost-empty.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/almost-empty.t
new file mode 100644
index 00000000..e57b08b4
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/almost-empty.t
@@ -0,0 +1 @@
+;;;;
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/arith.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/arith.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/arith.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/arith.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/arith.t
new file mode 100644
index 00000000..1f88e9df
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/arith.t
@@ -0,0 +1,27 @@
+(1 + 1 === 2) &
+(1.5 + 1.5 === 3.0) &
+(2.5 + 1 === 3.5) &
+(0 + 1 === 1) &
+(2.5 + 0 === 2.5) &
+(5 - 3 === 2) &
+(5 - 3.5 === 1.5) &
+(5.5 - 3.5 === 2.0) &
+(1 - 0 === 1) &
+(2.5 - 0 === 2.5) &
+(2 * 3 === 6) &
+(2 * 3.5 === 7.0) &
+(2.5 * 3.5 === 8.75) &
+(2.5 * 0 === 0.0) &
+(10 / 2 === 5) &
+(10 / 2.5 === 4.0) &
+(18 / 36 === 0.5) &
+(0 / 36 === 0) &
+(12.5 / 2.5 === 5.0) &
+(10.5 / 2.5 === 4.2) &
+(10 % 7 === 3) &
+(10.48762 % 7 === 3) &
+(10 % 7.123576 === 3) &
+(2 ** 4 === 16) &
+(2.5 ** 2 === 6.25) &
+(2.5 ** 0 === 1.0) &
+(1000 ** 0 === 1) \ No newline at end of file
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/arrays.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/arrays.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/arrays.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/arrays.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/arrays.t
new file mode 100644
index 00000000..479dd3b0
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/arrays.t
@@ -0,0 +1,12 @@
+array1 := [ 'a', 'b', 'c', ];
+array2 := [];
+array2[] := 'd';
+array2[] := 'g';
+array2[] := 'f';
+array2[1] := 'e';
+
+array3 := array1 + array2;
+array4 := [ [ 1, 2, 3 ], [ 4, 5, 6 ] ];
+
+(string(array3) == "a\nb\nc\nd\ne\nf\n" & !('b' in array2) & array1 contains 'c' & [ false, !(1;0), null ][1] & length(array3) == 6 &
+ array4[1][1] == 5 )
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/bool-assoc.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/bool-assoc.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/bool-assoc.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/bool-assoc.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/bool-assoc.t
new file mode 100644
index 00000000..4b236bd2
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/bool-assoc.t
@@ -0,0 +1 @@
+!(true | false & false)
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/bug25373.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/bug25373.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/bug25373.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/bug25373.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/bug25373.t
new file mode 100644
index 00000000..99e5c80e
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/bug25373.t
@@ -0,0 +1 @@
+(1 == 1) ? (true) : (false)
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/cast.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/cast.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/cast.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/cast.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/cast.t
new file mode 100644
index 00000000..c0bc317c
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/cast.t
@@ -0,0 +1 @@
+(string(1) === "1") & (int("1") === 1) & (float(1) === 1.0) & bool(1) & !bool(0)
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/ccnorm-contains-all.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/ccnorm-contains-all.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/ccnorm-contains-all.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/ccnorm-contains-all.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/ccnorm-contains-all.t
new file mode 100644
index 00000000..9a8635c8
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/ccnorm-contains-all.t
@@ -0,0 +1 @@
+ccnorm_contains_all("the f00 is on the b4r", "foo", "is on", "bar")
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/ccnorm-contains-any.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/ccnorm-contains-any.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/ccnorm-contains-any.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/ccnorm-contains-any.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/ccnorm-contains-any.t
new file mode 100644
index 00000000..6aeac35c
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/ccnorm-contains-any.t
@@ -0,0 +1 @@
+ccnorm_contains_any("like 4ny0ne else", "foo", "aNyon3") & ccnorm_contains_any("street f1ghter","F1ght")
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/ccnorm.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/ccnorm.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/ccnorm.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/ccnorm.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/ccnorm.t
new file mode 100644
index 00000000..f233e42e
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/ccnorm.t
@@ -0,0 +1 @@
+ccnorm("aany0ne") = "AANYONE"
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/comment.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/comment.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/comment.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/comment.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/comment.t
new file mode 100644
index 00000000..3252b87a
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/comment.t
@@ -0,0 +1,4 @@
+1 /* a */ == /* b */ "1" /* c */ /* &
+
+1/0
+*/
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/contains-all.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/contains-all.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/contains-all.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/contains-all.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/contains-all.t
new file mode 100644
index 00000000..f8b81b24
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/contains-all.t
@@ -0,0 +1 @@
+contains_all("the foo is on the bar", "foo", "is on", "bar") & !(contains_all(['foo', 'bar', 'hey'], 'foo', 'bar', 'sup')) & contains_all([1, 2, 3], '1', '2', '3') \ No newline at end of file
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/contains-any.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/contains-any.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/contains-any.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/contains-any.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/contains-any.t
new file mode 100644
index 00000000..56f1c8bd
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/contains-any.t
@@ -0,0 +1 @@
+contains_any("like anyone else", "else", "someone") & contains_any("street fighter", "fight") & !(contains_any('My foo is cute', 'bar', 'wtf')) & contains_any([[1], [2,3]], 1)
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/contains.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/contains.r
new file mode 100644
index 00000000..f629599c
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/contains.r
@@ -0,0 +1 @@
+MATCH \ No newline at end of file
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/contains.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/contains.t
new file mode 100644
index 00000000..cac43d24
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/contains.t
@@ -0,0 +1 @@
+"quux" contains "ux" & ['1', 'foo'] contains '1' & !('fo obar' contains 'foo') & ['foo'] contains 'f' \ No newline at end of file
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/count.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/count.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/count.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/count.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/count.t
new file mode 100644
index 00000000..5733b0b2
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/count.t
@@ -0,0 +1,6 @@
+count("a,b,c,d") = 4 &
+count(",", "a,b,c,d") = 3 &
+count("", "abcd") = 0 &
+count("a", "abab") = 2 &
+count("ab", "abab") = 2 &
+count("aa", "aaaaa") = 2
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/empty.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/empty.r
new file mode 100644
index 00000000..8093d2ab
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/empty.r
@@ -0,0 +1 @@
+NOT_MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/empty.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/empty.t
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/empty.t
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/eq.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/eq.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/eq.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/eq.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/eq.t
new file mode 100644
index 00000000..25df4e69
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/eq.t
@@ -0,0 +1 @@
+(1 == 1) & (1 != 2) & (1 === 1) & (1 == "1") & (1 !== "1")
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/expn.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/expn.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/expn.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/expn.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/expn.t
new file mode 100644
index 00000000..17849182
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/expn.t
@@ -0,0 +1,2 @@
+/* In filter language, the exponentiation is left-associative */
+(2 ** 3 ** 2) === 64
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/float.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/float.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/float.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/float.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/float.t
new file mode 100644
index 00000000..e31067e0
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/float.t
@@ -0,0 +1 @@
+(5 / 2 === 2.5) & (int(5 / 2) === 2) & (5. / 2 === 2.5) & (5 / 2. === 2.5) & (int(.5) === 0)
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/get-matches.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/get-matches.r
new file mode 100644
index 00000000..f629599c
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/get-matches.r
@@ -0,0 +1 @@
+MATCH \ No newline at end of file
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/get-matches.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/get-matches.t
new file mode 100644
index 00000000..88e163b4
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/get-matches.t
@@ -0,0 +1,4 @@
+/* More complete tests for get_matches are in AbuseFilterParserTest.php */
+a := get_matches('I am a (dog|cat)', 'What did you say?');
+get_matches('The (truth|pineapple) is (?:rarely)? pure and (nee*v(ah|er) sh?imple)', 'The truth is rarely pure and never simple, Wilde said') == ['The truth is rarely pure and never simple', 'truth', 'never simple', 'er'] &
+a === [false, false] \ No newline at end of file
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/ifthen.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/ifthen.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/ifthen.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/ifthen.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/ifthen.t
new file mode 100644
index 00000000..160d1ab8
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/ifthen.t
@@ -0,0 +1 @@
+(if 1 then 2 else 3 end) == 2
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/in.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/in.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/in.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/in.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/in.t
new file mode 100644
index 00000000..73d480d3
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/in.t
@@ -0,0 +1 @@
+"foo" in "foobar" & '1' in ['1', 'foo'] & !('foo' in 'fo obar') & 'f' in ['foo']
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/lcase.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/lcase.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/lcase.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/lcase.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/lcase.t
new file mode 100644
index 00000000..6995baf7
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/lcase.t
@@ -0,0 +1 @@
+lcase("FÁmí") = "fámí"
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/length.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/length.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/length.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/length.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/length.t
new file mode 100644
index 00000000..064b22fa
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/length.t
@@ -0,0 +1 @@
+length("foobar") == 6
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/like.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/like.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/like.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/like.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/like.t
new file mode 100644
index 00000000..74396f19
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/like.t
@@ -0,0 +1 @@
+"f+oo-bér" like "f+oo-b?r" & "quux" matches "qu*x"
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/list-assignment.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/list-assignment.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/list-assignment.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/list-assignment.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/list-assignment.t
new file mode 100644
index 00000000..c055541b
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/list-assignment.t
@@ -0,0 +1,6 @@
+test_list := [ [1, 2], [3, 4] ];
+
+test_list[1] := 42;
+test_list[] := 17;
+
+test_list[0][0] == 1 & test_list[0][1] == 2 & test_list[1] == 42 & test_list[2] == 17
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/list-comparisons.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/list-comparisons.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/list-comparisons.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/list-comparisons.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/list-comparisons.t
new file mode 100644
index 00000000..db431573
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/list-comparisons.t
@@ -0,0 +1,11 @@
+a := [1, 2, 3];
+b := [1, 2, 3];
+c := [2, 3, 4];
+d := [1, 2, 3, 4];
+e := ['1', '2', '3'];
+f := [[['1']]];
+g := [[[1]]];
+h := [[1, 2], 3];
+i := [['1', 2], '3'];
+
+a == b & a === b & a != c & b != d & a == e & a !== e & f == g & f !== g & h == i & h !== i & e != i
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-arithmetic.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-arithmetic.r
new file mode 100644
index 00000000..f629599c
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-arithmetic.r
@@ -0,0 +1 @@
+MATCH \ No newline at end of file
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-arithmetic.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-arithmetic.t
new file mode 100644
index 00000000..7cfaf4af
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-arithmetic.t
@@ -0,0 +1,8 @@
+/* Examples from [[mw:Extension:AbuseFilter/Rules format#Arithmetic]] */
+
+1 + 1 === 2 &
+2 * 2 === 4 &
+12 / 24 === 0.5 &
+24 / 12 === 2 &
+9 ** 2 === 81 &
+6 % 5 === 1 \ No newline at end of file
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-bools.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-bools.r
new file mode 100644
index 00000000..f629599c
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-bools.r
@@ -0,0 +1 @@
+MATCH \ No newline at end of file
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-bools.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-bools.t
new file mode 100644
index 00000000..a8e88539
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-bools.t
@@ -0,0 +1,13 @@
+/* Examples from [[mw:Extension:AbuseFilter/Rules format#Boolean operations]] */
+
+(1 | 1) &
+(1 | 0) &
+!(0 | 0) &
+(1 & 1) &
+!(1 & 0) &
+!(0 & 0) &
+!(1 ^ 1) &
+(1 ^ 0) &
+!(0 ^ 0) &
+!(!1)
+
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-comparisons.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-comparisons.r
new file mode 100644
index 00000000..f629599c
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-comparisons.r
@@ -0,0 +1 @@
+MATCH \ No newline at end of file
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-comparisons.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-comparisons.t
new file mode 100644
index 00000000..7d0ada0d
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-comparisons.t
@@ -0,0 +1,20 @@
+/* Examples from [[mw:Extension:AbuseFilter/Rules format#Simple comparisons]] */
+
+!(1 == 2) &
+(1 <= 2) &
+!(1 >= 2) &
+(1 != 2) &
+(1 < 2) &
+!(1 > 2) &
+(2 = 2) &
+('' == false) &
+!('' === false) &
+(1 == true) &
+!(1 === true) &
+(['1','2','3'] == ['1','2','3']) &
+([1,2,3] === [1,2,3]) &
+(['1','2','3'] == [1,2,3]) &
+!(['1','2','3'] === [1,2,3]) &
+([1,1,''] == [true, true, false]) &
+!(['1'] == '1')
+
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-functions.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-functions.r
new file mode 100644
index 00000000..f629599c
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-functions.r
@@ -0,0 +1 @@
+MATCH \ No newline at end of file
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-functions.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-functions.t
new file mode 100644
index 00000000..ea5bf1b1
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-functions.t
@@ -0,0 +1,22 @@
+/* Examples from [[mw:Extension:AbuseFilter/Rules format#Functions]] */
+
+length( "Wikipedia" ) === 9 &
+lcase( "WikiPedia" ) === 'wikipedia' &
+ccnorm( "w1k1p3d14" ) === 'WIKIPEDIA' &
+ccnorm( "ωɨƙɩᑭƐƉ1α" ) === 'WIKIPEDIA' &
+ccnorm_contains_any( "w1k1p3d14", "wiKiP3D1A", "foo", "bar" ) === true &
+ccnorm_contains_any( "w1k1p3d14", "foo", "bar", "baz" ) === false &
+ccnorm_contains_any( "w1k1p3d14 is 4w3s0me", "bar", "baz", "some" ) === true &
+ccnorm( "ìíîïĩїį!ľ₤ĺľḷĿ" ) === 'IIIIIII!LLLLLL' &
+norm( "!!ω..ɨ..ƙ..ɩ..ᑭᑭ..Ɛ.Ɖ@@1%%α!!" ) === 'WIKIPEDAIA' &
+norm( "F00 B@rr" ) === 'FOBAR' &
+rmdoubles( "foobybboo" ) === 'fobybo' &
+specialratio( "Wikipedia!" ) === 0.1 &
+count( "foo", "foofooboofoo" ) === 3 &
+count( "foo,bar,baz" ) === 3 &
+rmspecials( "FOOBAR!!1" ) === 'FOOBAR1' &
+rescape( "abc* (def)" ) === 'abc\* \(def\)' &
+str_replace( "foobarbaz", "bar", "-" ) === 'foo-baz' &
+ip_in_range( "127.0.10.0", "127.0.0.0/12" ) === true &
+contains_any( "foobar", "x", "y", "f" ) === true &
+get_matches( "(foo?ba+r) is (so+ good)", "fobaaar is soooo good to eat" ) === ['fobaaar is soooo good', 'fobaaar', 'soooo good'] \ No newline at end of file
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-keywords.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-keywords.r
new file mode 100644
index 00000000..f629599c
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-keywords.r
@@ -0,0 +1 @@
+MATCH \ No newline at end of file
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-keywords.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-keywords.t
new file mode 100644
index 00000000..d6ca07d4
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-keywords.t
@@ -0,0 +1,9 @@
+/* Examples from [[mw:Extension:AbuseFilter/Rules format#Keywords]] */
+
+("1234" like "12?4") &
+("1234" like "12*") &
+("foo" in "foobar") &
+("o" in ["foo", "bar"]) &
+("foo" regex "\w+") &
+("a\b" regex "a\\\\b") &
+("a\b" regex "a\x5C\x5Cb") \ No newline at end of file
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-lists.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-lists.r
new file mode 100644
index 00000000..f629599c
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-lists.r
@@ -0,0 +1 @@
+MATCH \ No newline at end of file
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-lists.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-lists.t
new file mode 100644
index 00000000..904413b3
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/mwexamples-lists.t
@@ -0,0 +1,10 @@
+/* Examples from [[mw:Extension:AbuseFilter/Rules format#Lists]] */
+
+a_list := [ 5, 6, 7, 10];
+a_list[0] == 5 &
+length(a_list) == 4 &
+string(a_list) == "5\n6\n7\n10\n" &
+5 in a_list == true &
+'5' in a_list == true &
+'5\n6' in a_list == true &
+1 in a_list == true \ No newline at end of file
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/norm.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/norm.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/norm.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/norm.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/norm.t
new file mode 100644
index 00000000..ed2d442a
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/norm.t
@@ -0,0 +1 @@
+norm("foo") = "FO" & norm("any0ne") = "ANYONE"
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/numbers.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/numbers.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/numbers.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/numbers.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/numbers.t
new file mode 100644
index 00000000..1959a0fe
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/numbers.t
@@ -0,0 +1 @@
+ax = 10 & Fx = 15 & 10o = 8 & 10b = 2
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/ord.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/ord.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/ord.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/ord.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/ord.t
new file mode 100644
index 00000000..6c94f4b6
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/ord.t
@@ -0,0 +1,8 @@
+1 > 0 &
+0 < 1 &
+2 >= 2 &
+2 <= 2 &
+0.1 < 0.2 &
+0.001 <= 0.001 &
+-0.01 < 0.01 &
+0 >= -0.0001
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/prec.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/prec.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/prec.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/prec.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/prec.t
new file mode 100644
index 00000000..3aff6ab1
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/prec.t
@@ -0,0 +1 @@
+(1 + 2 * 3 = 7) & (2 ** 2 * 2 = 8) & (1 - 1 - 1 = -1)
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/regex.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/regex.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/regex.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/regex.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/regex.t
new file mode 100644
index 00000000..706da02d
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/regex.t
@@ -0,0 +1 @@
+"foobér" rlike "^[fq]o{2}\\S.r$" & "foo" regex "^f..?.$"
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/rmdoubles.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/rmdoubles.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/rmdoubles.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/rmdoubles.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/rmdoubles.t
new file mode 100644
index 00000000..7a0a3f8f
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/rmdoubles.t
@@ -0,0 +1 @@
+rmdoubles("foobarééqq") = "fobaréq"
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/rmspecials.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/rmspecials.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/rmspecials.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/rmspecials.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/rmspecials.t
new file mode 100644
index 00000000..a4df5cd5
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/rmspecials.t
@@ -0,0 +1 @@
+rmspecials("foo;bar!") = "foobar"
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/shortcircuit-and.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/shortcircuit-and.r
new file mode 100644
index 00000000..33a8a805
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/shortcircuit-and.r
@@ -0,0 +1 @@
+NOT_MATCH \ No newline at end of file
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/shortcircuit-and.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/shortcircuit-and.t
new file mode 100644
index 00000000..d87746de
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/shortcircuit-and.t
@@ -0,0 +1,2 @@
+/* The division by zero should not be executed and not crash the filter */
+false & 1/0 \ No newline at end of file
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/shortcircuit-or.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/shortcircuit-or.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/shortcircuit-or.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/shortcircuit-or.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/shortcircuit-or.t
new file mode 100644
index 00000000..bec088f6
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/shortcircuit-or.t
@@ -0,0 +1,2 @@
+/* The division by zero should not be executed and not crash the filter */
+true | 1/0
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/specialratio.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/specialratio.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/specialratio.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/specialratio.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/specialratio.t
new file mode 100644
index 00000000..c4a3565a
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/specialratio.t
@@ -0,0 +1 @@
+specialratio("foó;") = 0.25
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/string.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/string.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/string.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/string.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/string.t
new file mode 100644
index 00000000..f6036cef
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/string.t
@@ -0,0 +1 @@
+"a\tb" = "a b" & "a\qb" = "a\qb"
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/tern.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/tern.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/tern.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/tern.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/tern.t
new file mode 100644
index 00000000..a9f11586
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/tern.t
@@ -0,0 +1 @@
+1 ? 0 ? 3 : 4 : 5 == 4
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/ucase.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/ucase.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/ucase.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/ucase.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/ucase.t
new file mode 100644
index 00000000..be058b8b
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/ucase.t
@@ -0,0 +1 @@
+ucase("FÁmí") = "FÁMÍ"
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/utf8.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/utf8.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/utf8.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/utf8.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/utf8.t
new file mode 100644
index 00000000..051be509
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/utf8.t
@@ -0,0 +1 @@
+length("áéý") == 3
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/vars.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/vars.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/vars.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/vars.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/vars.t
new file mode 100644
index 00000000..3c3a0023
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/vars.t
@@ -0,0 +1,5 @@
+/* Variables test */
+test_var1 := test_var2 := "aa";
+set( 'ResulT', set_var( 'TV3', "bb" ) );
+
+str_replace( test_var1, test_var2, tv3 ) == result; \ No newline at end of file
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/whitespace1.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/whitespace1.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/whitespace1.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/whitespace1.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/whitespace1.t
new file mode 100644
index 00000000..bc1bf519
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/whitespace1.t
@@ -0,0 +1 @@
+1 == length("a")
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/wptest1.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/wptest1.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/wptest1.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/wptest1.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/wptest1.t
new file mode 100644
index 00000000..0d81aee3
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/wptest1.t
@@ -0,0 +1,9 @@
+/* Filter 30 from English Wikipedia (large deletion from article by new editors) */
+user_groups_test := ["*"];
+new_size_test := 100;
+article_namespace_test := 0;
+edit_delta_test := -5000;
+added_lines_test := '';
+
+!("autoconfirmed" in user_groups_test) & (new_size_test > 50) & (article_namespace_test == 0) &
+ (edit_delta_test < -2000) & !("#redirect" in lcase(added_lines_test))
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/wptest2.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/wptest2.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/wptest2.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/wptest2.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/wptest2.t
new file mode 100644
index 00000000..0e137503
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/wptest2.t
@@ -0,0 +1,21 @@
+/* Filter 61 from English Wikipedia (new user removing references) */
+user_groups_test := ["*"];
+new_size_test := 100;
+article_namespace_test := 0;
+edit_delta_test := -22;
+added_lines_test := ['<ref name="bah">test</ref> test2!'];
+removed_lines_test := ['<ref name="bah">test</ref><ref name="wah">test2</ref>'];
+
+!("autoconfirmed" in user_groups_test)
+/* this edit_delta ignores large blankings that are treated by another filter */
+& edit_delta_test >= -1000
+& article_namespace_test == 0
+/* No added lines usually mean a blanking which is dealt with by other filter */
+& length(added_lines_test) != 0
+& !("#redirect" in lcase(added_lines_test))
+/*Counts of more reference tags are removed than added */
+& (rcount("(<ref>|<ref\sname|</ref>)",removed_lines_test) > rcount("(<ref>|<ref\sname|</ref>)",added_lines_test))
+/*Excludes changing to the named reference format and removing closing tags attached to formerly named refs. Unequality is to account for closing the first named tag */
+& !(rcount("<ref>",removed_lines_test) = rcount("<ref\sname",added_lines_test) | rcount("</ref>",removed_lines_test) <= rcount("<ref\sname",added_lines_test))
+/*Excludes removal of references to Wikipedia itself */
+& !(count("http://en.wikipedia.org",string(removed_lines_test)) > count("http://en.wikipedia.org",string(added_lines_test)))
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/wptest3.r b/www/wiki/extensions/AbuseFilter/tests/parserTests/wptest3.r
new file mode 100644
index 00000000..4736e080
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/wptest3.r
@@ -0,0 +1 @@
+MATCH
diff --git a/www/wiki/extensions/AbuseFilter/tests/parserTests/wptest3.t b/www/wiki/extensions/AbuseFilter/tests/parserTests/wptest3.t
new file mode 100644
index 00000000..342ba7e5
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/parserTests/wptest3.t
@@ -0,0 +1,28 @@
+/* Filter 18 from English Wikipedia (test type edits from clicking on edit bar) */
+user_groups_test := ["*"];
+article_namespace_test := 0;
+added_lines_test := ["Hello world! '''Bold text''' [http://www.example.com link title]"];
+
+(article_namespace_test == 0) &
+!("autoconfirmed" in user_groups_test) &
+(contains_any(string(added_lines_test),
+ "'''Bold text'''",
+ "''Italic text''",
+ "[[Link title]]",
+ "[http://www.example.com link title]",
+ "== Headline text ==",
+ "[[File:Example.jpg]]",
+ "[[Media:Example.ogg]]",
+ "<math>Insert formula here</math>",
+ "<nowiki>Insert non-formatted text here</nowiki>",
+ "#REDIRECT [[Target page name]]",
+ "<s>Strike-through text</s>",
+ "<sup>Superscript text</sup>",
+ "<sub>Subscript text</sub>",
+ "<small>Small Text</small>",
+ "<!-- Comment -->",
+ "Image:Example.jpg|Caption",
+ "<ref>Insert footnote text here</ref>",
+ "Ǣ ǣ ǖ ǘ ǚ ǜ Ă"
+))
+
diff --git a/www/wiki/extensions/AbuseFilter/tests/phpunit/AbuseFilterParserTest.php b/www/wiki/extensions/AbuseFilter/tests/phpunit/AbuseFilterParserTest.php
new file mode 100644
index 00000000..d7560e92
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/tests/phpunit/AbuseFilterParserTest.php
@@ -0,0 +1,222 @@
+<?php
+/**
+ * Tests for the AbuseFilter parser
+ *
+ * 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
+ *
+ * @license GPL-2.0-or-later
+ * @author Marius Hoch < hoo@online.de >
+ */
+
+/**
+ * @group Test
+ * @group AbuseFilter
+ *
+ * @covers AbuseFilterCachingParser
+ * @covers AbuseFilterParser
+ * @covers AbuseFilterTokenizer
+ */
+class AbuseFilterParserTest extends MediaWikiTestCase {
+ /**
+ * @return AbuseFilterParser
+ */
+ static function getParser() {
+ static $parser = null;
+ if ( !$parser ) {
+ $parser = new AbuseFilterParser();
+ }
+ return $parser;
+ }
+
+ /**
+ * @return AbuseFilterParser[]
+ */
+ static function getParsers() {
+ static $parsers = null;
+ if ( !$parsers ) {
+ $parsers = [
+ new AbuseFilterParser(),
+ new AbuseFilterCachingParser()
+ ];
+ }
+ return $parsers;
+ }
+
+ /**
+ * @dataProvider readTests
+ */
+ public function testParser( $testName, $rule, $expected ) {
+ foreach ( self::getParsers() as $parser ) {
+ $actual = $parser->parse( $rule );
+ $this->assertEquals( $expected, $actual, 'Running parser test ' . $testName );
+ }
+ }
+
+ /**
+ * @return array
+ */
+ public function readTests() {
+ $tests = [];
+ $testPath = __DIR__ . "/../parserTests";
+ $testFiles = glob( $testPath . "/*.t" );
+
+ foreach ( $testFiles as $testFile ) {
+ $testName = substr( $testFile, 0, -2 );
+
+ $resultFile = $testName . '.r';
+ $rule = trim( file_get_contents( $testFile ) );
+ $result = trim( file_get_contents( $resultFile ) ) == 'MATCH';
+
+ $tests[] = [
+ basename( $testName ),
+ $rule,
+ $result
+ ];
+ }
+
+ return $tests;
+ }
+
+ /**
+ * Ensure that AbuseFilterTokenizer::OPERATOR_RE matches the contents
+ * and order of AbuseFilterTokenizer::$operators.
+ */
+ public function testOperatorRe() {
+ $operatorRe = '/(' . implode( '|', array_map( function ( $op ) {
+ return preg_quote( $op, '/' );
+ }, AbuseFilterTokenizer::$operators ) ) . ')/A';
+ $this->assertEquals( $operatorRe, AbuseFilterTokenizer::OPERATOR_RE );
+ }
+
+ /**
+ * Ensure that AbuseFilterTokenizer::RADIX_RE matches the contents
+ * and order of AbuseFilterTokenizer::$bases.
+ */
+ public function testRadixRe() {
+ $baseClass = implode( '', array_keys( AbuseFilterTokenizer::$bases ) );
+ $radixRe = "/([0-9A-Fa-f]+(?:\.\d*)?|\.\d+)([$baseClass])?/Au";
+ $this->assertEquals( $radixRe, AbuseFilterTokenizer::RADIX_RE );
+ }
+
+ /**
+ * Ensure the number of conditions counted for given expressions is right.
+ *
+ * @dataProvider condCountCases
+ */
+ public function testCondCount( $rule, $expected ) {
+ $parser = self::getParser();
+ // Set some variables for convenience writing test cases
+ $parser->setVars( array_combine( range( 'a', 'f' ), range( 'a', 'f' ) ) );
+ $countBefore = AbuseFilter::$condCount;
+ $parser->parse( $rule );
+ $countAfter = AbuseFilter::$condCount;
+ $actual = $countAfter - $countBefore;
+ $this->assertEquals( $expected, $actual, 'Condition count for ' . $rule );
+ }
+
+ /**
+ * Data provider for testCondCount method.
+ * @return array
+ */
+ public function condCountCases() {
+ return [
+ [ '(((a == b)))', 1 ],
+ [ 'contains_any(a, b, c)', 1 ],
+ [ 'a == b == c', 2 ],
+ [ 'a in b + c in d + e in f', 3 ],
+ [ 'true', 0 ],
+ [ 'a == a | c == d', 1 ],
+ [ 'a == b & c == d', 1 ],
+ ];
+ }
+
+ /**
+ * get_matches should throw an exception with an invalid number of arguments.
+ * @expectedException AFPUserVisibleException
+ * @covers AbuseFilterParser::funcGetMatches
+ */
+ public function testGetMatchesInvalidArgs() {
+ $parser = self::getParser();
+ $parser->parse( "get_matches('')" );
+ }
+
+ /**
+ * get_matches should throw an exception when given an invalid regular expression.
+ * @expectedException AFPUserVisibleException
+ * @covers AbuseFilterParser::funcGetMatches
+ */
+ public function testGetMatchesInvalidRegex() {
+ $parser = self::getParser();
+ $parser->parse( "get_matches('this (should fail')" );
+ }
+
+ /**
+ * Ensure get_matches function captures returns expected output.
+ * @param string $needle Regex to pass to get_matches.
+ * @param string $haystack String to run regex against.
+ * @param string[] $expected The expected values of the matched groups.
+ * @covers AbuseFilterParser::funcGetMatches
+ * @dataProvider getMatchesCases
+ */
+ public function testGetMatches( $needle, $haystack, $expected ) {
+ $parser = self::getParser();
+ $afpData = $parser->intEval( "get_matches('$needle', '$haystack')" )->data;
+
+ // Extract matches from AFPData.
+ $matches = array_map( function ( $afpDatum ) {
+ return $afpDatum->data;
+ }, $afpData );
+
+ $this->assertEquals( $expected, $matches );
+ }
+
+ /**
+ * Data provider for get_matches method.
+ * @return array
+ */
+ public function getMatchesCases() {
+ return [
+ [
+ 'You say (.*) \(and I say (.*)\)\.',
+ 'You say hello (and I say goodbye).',
+ [
+ 'You say hello (and I say goodbye).',
+ 'hello',
+ 'goodbye',
+ ],
+ ],
+ [
+ 'I(?: am)? the ((walrus|egg man).*)\!',
+ 'I am the egg man, I am the walrus !',
+ [
+ 'I am the egg man, I am the walrus !',
+ 'egg man, I am the walrus ',
+ 'egg man',
+ ],
+ ],
+ [
+ 'this (does) not match',
+ 'foo bar',
+ [
+ false,
+ false,
+ ],
+ ],
+ ];
+ }
+}
diff --git a/www/wiki/extensions/AbuseFilter/version b/www/wiki/extensions/AbuseFilter/version
new file mode 100644
index 00000000..3eab4936
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/version
@@ -0,0 +1,4 @@
+AbuseFilter: REL1_31
+2019-02-24T19:00:14
+
+adc0789