summaryrefslogtreecommitdiff
path: root/www/wiki/extensions/Gadgets
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/Gadgets
first commit
Diffstat (limited to 'www/wiki/extensions/Gadgets')
-rw-r--r--www/wiki/extensions/Gadgets/CODE_OF_CONDUCT.md1
-rw-r--r--www/wiki/extensions/Gadgets/COPYING339
-rw-r--r--www/wiki/extensions/Gadgets/GadgetHooks.php338
-rw-r--r--www/wiki/extensions/Gadgets/Gadgets.alias.php393
-rw-r--r--www/wiki/extensions/Gadgets/Gadgets.namespaces.php248
-rw-r--r--www/wiki/extensions/Gadgets/Gadgets.php16
-rw-r--r--www/wiki/extensions/Gadgets/Gadgets_body.php315
-rw-r--r--www/wiki/extensions/Gadgets/Gruntfile.js31
-rw-r--r--www/wiki/extensions/Gadgets/README.md43
-rw-r--r--www/wiki/extensions/Gadgets/SpecialGadgetUsage.php249
-rw-r--r--www/wiki/extensions/Gadgets/SpecialGadgets.php229
-rw-r--r--www/wiki/extensions/Gadgets/api/ApiQueryGadgetCategories.php110
-rw-r--r--www/wiki/extensions/Gadgets/api/ApiQueryGadgets.php231
-rw-r--r--www/wiki/extensions/Gadgets/composer.json23
-rw-r--r--www/wiki/extensions/Gadgets/extension.json121
-rw-r--r--www/wiki/extensions/Gadgets/i18n/ace.json19
-rw-r--r--www/wiki/extensions/Gadgets/i18n/af.json17
-rw-r--r--www/wiki/extensions/Gadgets/i18n/ais.json47
-rw-r--r--www/wiki/extensions/Gadgets/i18n/am.json13
-rw-r--r--www/wiki/extensions/Gadgets/i18n/an.json22
-rw-r--r--www/wiki/extensions/Gadgets/i18n/ar.json63
-rw-r--r--www/wiki/extensions/Gadgets/i18n/arc.json10
-rw-r--r--www/wiki/extensions/Gadgets/i18n/arz.json16
-rw-r--r--www/wiki/extensions/Gadgets/i18n/as.json30
-rw-r--r--www/wiki/extensions/Gadgets/i18n/ast.json56
-rw-r--r--www/wiki/extensions/Gadgets/i18n/awa.json10
-rw-r--r--www/wiki/extensions/Gadgets/i18n/az.json20
-rw-r--r--www/wiki/extensions/Gadgets/i18n/azb.json20
-rw-r--r--www/wiki/extensions/Gadgets/i18n/ba.json52
-rw-r--r--www/wiki/extensions/Gadgets/i18n/bar.json10
-rw-r--r--www/wiki/extensions/Gadgets/i18n/bcc.json12
-rw-r--r--www/wiki/extensions/Gadgets/i18n/bcl.json22
-rw-r--r--www/wiki/extensions/Gadgets/i18n/be-tarask.json38
-rw-r--r--www/wiki/extensions/Gadgets/i18n/be.json14
-rw-r--r--www/wiki/extensions/Gadgets/i18n/bg.json43
-rw-r--r--www/wiki/extensions/Gadgets/i18n/bho.json11
-rw-r--r--www/wiki/extensions/Gadgets/i18n/bn.json40
-rw-r--r--www/wiki/extensions/Gadgets/i18n/br.json25
-rw-r--r--www/wiki/extensions/Gadgets/i18n/bs.json33
-rw-r--r--www/wiki/extensions/Gadgets/i18n/ca.json36
-rw-r--r--www/wiki/extensions/Gadgets/i18n/ce.json30
-rw-r--r--www/wiki/extensions/Gadgets/i18n/ckb.json31
-rw-r--r--www/wiki/extensions/Gadgets/i18n/cs.json40
-rw-r--r--www/wiki/extensions/Gadgets/i18n/cu.json10
-rw-r--r--www/wiki/extensions/Gadgets/i18n/cv.json8
-rw-r--r--www/wiki/extensions/Gadgets/i18n/cy.json27
-rw-r--r--www/wiki/extensions/Gadgets/i18n/da.json23
-rw-r--r--www/wiki/extensions/Gadgets/i18n/de-ch.json10
-rw-r--r--www/wiki/extensions/Gadgets/i18n/de-formal.json9
-rw-r--r--www/wiki/extensions/Gadgets/i18n/de.json64
-rw-r--r--www/wiki/extensions/Gadgets/i18n/diq.json36
-rw-r--r--www/wiki/extensions/Gadgets/i18n/dsb.json22
-rw-r--r--www/wiki/extensions/Gadgets/i18n/dty.json9
-rw-r--r--www/wiki/extensions/Gadgets/i18n/el.json61
-rw-r--r--www/wiki/extensions/Gadgets/i18n/en.json56
-rw-r--r--www/wiki/extensions/Gadgets/i18n/eo.json26
-rw-r--r--www/wiki/extensions/Gadgets/i18n/es.json64
-rw-r--r--www/wiki/extensions/Gadgets/i18n/et.json52
-rw-r--r--www/wiki/extensions/Gadgets/i18n/eu.json34
-rw-r--r--www/wiki/extensions/Gadgets/i18n/ext.json8
-rw-r--r--www/wiki/extensions/Gadgets/i18n/fa.json56
-rw-r--r--www/wiki/extensions/Gadgets/i18n/fi.json45
-rw-r--r--www/wiki/extensions/Gadgets/i18n/fo.json23
-rw-r--r--www/wiki/extensions/Gadgets/i18n/fr.json74
-rw-r--r--www/wiki/extensions/Gadgets/i18n/frp.json22
-rw-r--r--www/wiki/extensions/Gadgets/i18n/frr.json22
-rw-r--r--www/wiki/extensions/Gadgets/i18n/ga.json8
-rw-r--r--www/wiki/extensions/Gadgets/i18n/gl.json58
-rw-r--r--www/wiki/extensions/Gadgets/i18n/grc.json11
-rw-r--r--www/wiki/extensions/Gadgets/i18n/gsw.json23
-rw-r--r--www/wiki/extensions/Gadgets/i18n/gu.json24
-rw-r--r--www/wiki/extensions/Gadgets/i18n/he.json58
-rw-r--r--www/wiki/extensions/Gadgets/i18n/hi.json46
-rw-r--r--www/wiki/extensions/Gadgets/i18n/hr.json32
-rw-r--r--www/wiki/extensions/Gadgets/i18n/hsb.json22
-rw-r--r--www/wiki/extensions/Gadgets/i18n/hu.json43
-rw-r--r--www/wiki/extensions/Gadgets/i18n/hy.json21
-rw-r--r--www/wiki/extensions/Gadgets/i18n/ia.json22
-rw-r--r--www/wiki/extensions/Gadgets/i18n/id.json32
-rw-r--r--www/wiki/extensions/Gadgets/i18n/ilo.json53
-rw-r--r--www/wiki/extensions/Gadgets/i18n/io.json14
-rw-r--r--www/wiki/extensions/Gadgets/i18n/is.json28
-rw-r--r--www/wiki/extensions/Gadgets/i18n/it.json54
-rw-r--r--www/wiki/extensions/Gadgets/i18n/ja.json66
-rw-r--r--www/wiki/extensions/Gadgets/i18n/jut.json14
-rw-r--r--www/wiki/extensions/Gadgets/i18n/jv.json35
-rw-r--r--www/wiki/extensions/Gadgets/i18n/ka.json32
-rw-r--r--www/wiki/extensions/Gadgets/i18n/kk-arab.json9
-rw-r--r--www/wiki/extensions/Gadgets/i18n/kk-cyrl.json25
-rw-r--r--www/wiki/extensions/Gadgets/i18n/kk-latn.json9
-rw-r--r--www/wiki/extensions/Gadgets/i18n/km.json17
-rw-r--r--www/wiki/extensions/Gadgets/i18n/kn.json10
-rw-r--r--www/wiki/extensions/Gadgets/i18n/ko.json51
-rw-r--r--www/wiki/extensions/Gadgets/i18n/krc.json10
-rw-r--r--www/wiki/extensions/Gadgets/i18n/ksh.json31
-rw-r--r--www/wiki/extensions/Gadgets/i18n/ku-latn.json17
-rw-r--r--www/wiki/extensions/Gadgets/i18n/ky.json10
-rw-r--r--www/wiki/extensions/Gadgets/i18n/lb.json36
-rw-r--r--www/wiki/extensions/Gadgets/i18n/lez.json11
-rw-r--r--www/wiki/extensions/Gadgets/i18n/li.json24
-rw-r--r--www/wiki/extensions/Gadgets/i18n/lij.json12
-rw-r--r--www/wiki/extensions/Gadgets/i18n/lki.json25
-rw-r--r--www/wiki/extensions/Gadgets/i18n/lrc.json19
-rw-r--r--www/wiki/extensions/Gadgets/i18n/lt.json57
-rw-r--r--www/wiki/extensions/Gadgets/i18n/lus.json20
-rw-r--r--www/wiki/extensions/Gadgets/i18n/lv.json12
-rw-r--r--www/wiki/extensions/Gadgets/i18n/lzh.json12
-rw-r--r--www/wiki/extensions/Gadgets/i18n/mai.json22
-rw-r--r--www/wiki/extensions/Gadgets/i18n/mg.json24
-rw-r--r--www/wiki/extensions/Gadgets/i18n/min.json24
-rw-r--r--www/wiki/extensions/Gadgets/i18n/mk.json56
-rw-r--r--www/wiki/extensions/Gadgets/i18n/ml.json32
-rw-r--r--www/wiki/extensions/Gadgets/i18n/mr.json55
-rw-r--r--www/wiki/extensions/Gadgets/i18n/ms.json25
-rw-r--r--www/wiki/extensions/Gadgets/i18n/mt.json20
-rw-r--r--www/wiki/extensions/Gadgets/i18n/mwl.json17
-rw-r--r--www/wiki/extensions/Gadgets/i18n/my.json8
-rw-r--r--www/wiki/extensions/Gadgets/i18n/mzn.json10
-rw-r--r--www/wiki/extensions/Gadgets/i18n/nap.json54
-rw-r--r--www/wiki/extensions/Gadgets/i18n/nb.json59
-rw-r--r--www/wiki/extensions/Gadgets/i18n/nds-nl.json14
-rw-r--r--www/wiki/extensions/Gadgets/i18n/nds.json14
-rw-r--r--www/wiki/extensions/Gadgets/i18n/ne.json25
-rw-r--r--www/wiki/extensions/Gadgets/i18n/nl-informal.json9
-rw-r--r--www/wiki/extensions/Gadgets/i18n/nl.json63
-rw-r--r--www/wiki/extensions/Gadgets/i18n/nn.json19
-rw-r--r--www/wiki/extensions/Gadgets/i18n/oc.json18
-rw-r--r--www/wiki/extensions/Gadgets/i18n/olo.json14
-rw-r--r--www/wiki/extensions/Gadgets/i18n/or.json24
-rw-r--r--www/wiki/extensions/Gadgets/i18n/pa.json16
-rw-r--r--www/wiki/extensions/Gadgets/i18n/pam.json18
-rw-r--r--www/wiki/extensions/Gadgets/i18n/pdc.json11
-rw-r--r--www/wiki/extensions/Gadgets/i18n/pl.json63
-rw-r--r--www/wiki/extensions/Gadgets/i18n/pms.json34
-rw-r--r--www/wiki/extensions/Gadgets/i18n/pnb.json21
-rw-r--r--www/wiki/extensions/Gadgets/i18n/ps.json22
-rw-r--r--www/wiki/extensions/Gadgets/i18n/pt-br.json66
-rw-r--r--www/wiki/extensions/Gadgets/i18n/pt.json62
-rw-r--r--www/wiki/extensions/Gadgets/i18n/qqq.json68
-rw-r--r--www/wiki/extensions/Gadgets/i18n/qu.json10
-rw-r--r--www/wiki/extensions/Gadgets/i18n/ro.json41
-rw-r--r--www/wiki/extensions/Gadgets/i18n/roa-tara.json35
-rw-r--r--www/wiki/extensions/Gadgets/i18n/ru.json67
-rw-r--r--www/wiki/extensions/Gadgets/i18n/rue.json22
-rw-r--r--www/wiki/extensions/Gadgets/i18n/sa.json23
-rw-r--r--www/wiki/extensions/Gadgets/i18n/sah.json21
-rw-r--r--www/wiki/extensions/Gadgets/i18n/scn.json11
-rw-r--r--www/wiki/extensions/Gadgets/i18n/sd.json8
-rw-r--r--www/wiki/extensions/Gadgets/i18n/sgs.json8
-rw-r--r--www/wiki/extensions/Gadgets/i18n/sh.json13
-rw-r--r--www/wiki/extensions/Gadgets/i18n/shn.json11
-rw-r--r--www/wiki/extensions/Gadgets/i18n/si.json26
-rw-r--r--www/wiki/extensions/Gadgets/i18n/sk.json23
-rw-r--r--www/wiki/extensions/Gadgets/i18n/skr-arab.json17
-rw-r--r--www/wiki/extensions/Gadgets/i18n/sl.json24
-rw-r--r--www/wiki/extensions/Gadgets/i18n/so.json23
-rw-r--r--www/wiki/extensions/Gadgets/i18n/sq.json25
-rw-r--r--www/wiki/extensions/Gadgets/i18n/sr-ec.json42
-rw-r--r--www/wiki/extensions/Gadgets/i18n/sr-el.json36
-rw-r--r--www/wiki/extensions/Gadgets/i18n/stq.json14
-rw-r--r--www/wiki/extensions/Gadgets/i18n/su.json8
-rw-r--r--www/wiki/extensions/Gadgets/i18n/sv.json54
-rw-r--r--www/wiki/extensions/Gadgets/i18n/sw.json12
-rw-r--r--www/wiki/extensions/Gadgets/i18n/ta.json19
-rw-r--r--www/wiki/extensions/Gadgets/i18n/tay.json14
-rw-r--r--www/wiki/extensions/Gadgets/i18n/tcy.json13
-rw-r--r--www/wiki/extensions/Gadgets/i18n/te.json21
-rw-r--r--www/wiki/extensions/Gadgets/i18n/tg-cyrl.json14
-rw-r--r--www/wiki/extensions/Gadgets/i18n/tg-latn.json12
-rw-r--r--www/wiki/extensions/Gadgets/i18n/th.json15
-rw-r--r--www/wiki/extensions/Gadgets/i18n/tk.json16
-rw-r--r--www/wiki/extensions/Gadgets/i18n/tl.json29
-rw-r--r--www/wiki/extensions/Gadgets/i18n/tr.json49
-rw-r--r--www/wiki/extensions/Gadgets/i18n/tt-cyrl.json20
-rw-r--r--www/wiki/extensions/Gadgets/i18n/ug-arab.json10
-rw-r--r--www/wiki/extensions/Gadgets/i18n/uk.json68
-rw-r--r--www/wiki/extensions/Gadgets/i18n/ur.json30
-rw-r--r--www/wiki/extensions/Gadgets/i18n/uz.json10
-rw-r--r--www/wiki/extensions/Gadgets/i18n/vec.json23
-rw-r--r--www/wiki/extensions/Gadgets/i18n/vep.json13
-rw-r--r--www/wiki/extensions/Gadgets/i18n/vi.json52
-rw-r--r--www/wiki/extensions/Gadgets/i18n/vo.json8
-rw-r--r--www/wiki/extensions/Gadgets/i18n/xmf.json11
-rw-r--r--www/wiki/extensions/Gadgets/i18n/yi.json21
-rw-r--r--www/wiki/extensions/Gadgets/i18n/yo.json10
-rw-r--r--www/wiki/extensions/Gadgets/i18n/yue.json14
-rw-r--r--www/wiki/extensions/Gadgets/i18n/zh-hans.json70
-rw-r--r--www/wiki/extensions/Gadgets/i18n/zh-hant.json65
-rw-r--r--www/wiki/extensions/Gadgets/includes/Gadget.php315
-rw-r--r--www/wiki/extensions/Gadgets/includes/GadgetDefinitionNamespaceRepo.php167
-rw-r--r--www/wiki/extensions/Gadgets/includes/GadgetHooks.php342
-rw-r--r--www/wiki/extensions/Gadgets/includes/GadgetRepo.php104
-rw-r--r--www/wiki/extensions/Gadgets/includes/GadgetResourceLoaderModule.php93
-rw-r--r--www/wiki/extensions/Gadgets/includes/MediaWikiGadgetsDefinitionRepo.php261
-rw-r--r--www/wiki/extensions/Gadgets/includes/SpecialGadgetUsage.php252
-rw-r--r--www/wiki/extensions/Gadgets/includes/SpecialGadgets.php232
-rw-r--r--www/wiki/extensions/Gadgets/includes/api/ApiQueryGadgetCategories.php110
-rw-r--r--www/wiki/extensions/Gadgets/includes/api/ApiQueryGadgets.php231
-rw-r--r--www/wiki/extensions/Gadgets/includes/content/GadgetDefinitionContent.php125
-rw-r--r--www/wiki/extensions/Gadgets/includes/content/GadgetDefinitionContentHandler.php64
-rw-r--r--www/wiki/extensions/Gadgets/includes/content/GadgetDefinitionDeletionUpdate.php43
-rw-r--r--www/wiki/extensions/Gadgets/includes/content/GadgetDefinitionSecondaryDataUpdate.php40
-rw-r--r--www/wiki/extensions/Gadgets/includes/content/GadgetDefinitionValidator.php91
-rw-r--r--www/wiki/extensions/Gadgets/includes/content/schema.json65
-rw-r--r--www/wiki/extensions/Gadgets/install.settings1
-rw-r--r--www/wiki/extensions/Gadgets/phpcs.xml13
-rw-r--r--www/wiki/extensions/Gadgets/tests/GadgetTest.php80
-rw-r--r--www/wiki/extensions/Gadgets/tests/phan/config.php7
-rw-r--r--www/wiki/extensions/Gadgets/tests/phpunit/GadgetTest.php206
209 files changed, 10371 insertions, 0 deletions
diff --git a/www/wiki/extensions/Gadgets/CODE_OF_CONDUCT.md b/www/wiki/extensions/Gadgets/CODE_OF_CONDUCT.md
new file mode 100644
index 00000000..d8e5d087
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/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/Gadgets/COPYING b/www/wiki/extensions/Gadgets/COPYING
new file mode 100644
index 00000000..d159169d
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/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/Gadgets/GadgetHooks.php b/www/wiki/extensions/Gadgets/GadgetHooks.php
new file mode 100644
index 00000000..449e7075
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/GadgetHooks.php
@@ -0,0 +1,338 @@
+<?php
+
+/**
+ * Copyright © 2007 Daniel Kinzler
+ *
+ * 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
+ */
+use WrappedString\WrappedString;
+
+class GadgetHooks {
+ /**
+ * PageContentSaveComplete hook handler.
+ *
+ * @param Article $article
+ * @param User $user
+ * @param Content $content New page content
+ * @return bool
+ */
+ public static function onPageContentSaveComplete( $article, $user, $content ) {
+ // update cache if MediaWiki:Gadgets-definition was edited
+ $title = $article->getTitle();
+ $repo = GadgetRepo::singleton();
+ if ( $title->getNamespace() == NS_MEDIAWIKI && $title->getText() == 'Gadgets-definition'
+ && $repo instanceof MediaWikiGadgetsDefinitionRepo
+ ) {
+ $repo->purgeDefinitionCache();
+ }
+ return true;
+ }
+
+ /**
+ * UserGetDefaultOptions hook handler
+ * @param array &$defaultOptions Array of default preference keys and values
+ * @return bool
+ */
+ public static function userGetDefaultOptions( &$defaultOptions ) {
+ $gadgets = GadgetRepo::singleton()->getStructuredList();
+ if ( !$gadgets ) {
+ return true;
+ }
+
+ /**
+ * @var $gadget Gadget
+ */
+ foreach ( $gadgets as $thisSection ) {
+ foreach ( $thisSection as $gadgetId => $gadget ) {
+ if ( $gadget->isOnByDefault() ) {
+ $defaultOptions['gadget-' . $gadgetId] = 1;
+ }
+ }
+ }
+
+ return true;
+ }
+
+ /**
+ * GetPreferences hook handler.
+ * @param User $user
+ * @param array &$preferences Preference descriptions
+ * @return bool
+ */
+ public static function getPreferences( $user, &$preferences ) {
+ $gadgets = GadgetRepo::singleton()->getStructuredList();
+ if ( !$gadgets ) {
+ return true;
+ }
+
+ $options = [];
+ $default = [];
+ foreach ( $gadgets as $section => $thisSection ) {
+ $available = [];
+
+ /**
+ * @var $gadget Gadget
+ */
+ foreach ( $thisSection as $gadget ) {
+ if ( !$gadget->isHidden() && $gadget->isAllowed( $user ) ) {
+ $gname = $gadget->getName();
+ # bug 30182: dir="auto" because it's often not translated
+ $desc = '<span dir="auto">' . $gadget->getDescription() . '</span>';
+ $available[$desc] = $gname;
+ if ( $gadget->isEnabled( $user ) ) {
+ $default[] = $gname;
+ }
+ }
+ }
+
+ if ( $section !== '' ) {
+ $section = wfMessage( "gadget-section-$section" )->parse();
+
+ if ( count( $available ) ) {
+ $options[$section] = $available;
+ }
+ } else {
+ $options = array_merge( $options, $available );
+ }
+ }
+
+ $preferences['gadgets-intro'] =
+ [
+ 'type' => 'info',
+ 'label' => '&#160;',
+ 'default' => Xml::tags( 'tr', [],
+ Xml::tags( 'td', [ 'colspan' => 2 ],
+ wfMessage( 'gadgets-prefstext' )->parseAsBlock() ) ),
+ 'section' => 'gadgets',
+ 'raw' => 1,
+ 'rawrow' => 1,
+ 'noglobal' => true,
+ ];
+
+ $preferences['gadgets'] =
+ [
+ 'type' => 'multiselect',
+ 'options' => $options,
+ 'section' => 'gadgets',
+ 'label' => '&#160;',
+ 'prefix' => 'gadget-',
+ 'default' => $default,
+ 'noglobal' => true,
+ ];
+
+ return true;
+ }
+
+ /**
+ * ResourceLoaderRegisterModules hook handler.
+ * @param ResourceLoader &$resourceLoader
+ * @return bool
+ */
+ public static function registerModules( &$resourceLoader ) {
+ $repo = GadgetRepo::singleton();
+ $ids = $repo->getGadgetIds();
+
+ foreach ( $ids as $id ) {
+ $resourceLoader->register( Gadget::getModuleName( $id ), [
+ 'class' => 'GadgetResourceLoaderModule',
+ 'id' => $id,
+ ] );
+ }
+
+ return true;
+ }
+
+ /**
+ * BeforePageDisplay hook handler.
+ * @param OutputPage $out
+ * @return bool
+ */
+ public static function beforePageDisplay( $out ) {
+ $repo = GadgetRepo::singleton();
+ $ids = $repo->getGadgetIds();
+ if ( !$ids ) {
+ return true;
+ }
+
+ $lb = new LinkBatch();
+ $lb->setCaller( __METHOD__ );
+ $enabledLegacyGadgets = [];
+
+ /**
+ * @var $gadget Gadget
+ */
+ $user = $out->getUser();
+ foreach ( $ids as $id ) {
+ try {
+ $gadget = $repo->getGadget( $id );
+ } catch ( InvalidArgumentException $e ) {
+ continue;
+ }
+ $peers = [];
+ foreach ( $gadget->getPeers() as $peerName ) {
+ try {
+ $peers[] = $repo->getGadget( $peerName );
+ } catch ( InvalidArgumentException $e ) {
+ // Ignore
+ // @todo: Emit warning for invalid peer?
+ }
+ }
+ if ( $gadget->isEnabled( $user ) && $gadget->isAllowed( $user ) ) {
+ if ( $gadget->hasModule() ) {
+ if ( $gadget->getType() === 'styles' ) {
+ $out->addModuleStyles( Gadget::getModuleName( $gadget->getName() ) );
+ } else {
+ $out->addModules( Gadget::getModuleName( $gadget->getName() ) );
+ // Load peer modules
+ foreach ( $peers as $peer ) {
+ if ( $peer->getType() === 'styles' ) {
+ $out->addModuleStyles( Gadget::getModuleName( $peer->getName() ) );
+ }
+ // Else, if not type=styles: Use dependencies instead.
+ // Note: No need for recursion as styles modules don't support
+ // either of 'dependencies' and 'peers'.
+ }
+ }
+ }
+
+ if ( $gadget->getLegacyScripts() ) {
+ $enabledLegacyGadgets[] = $id;
+ }
+ }
+ }
+
+ $strings = [];
+ foreach ( $enabledLegacyGadgets as $id ) {
+ $strings[] = self::makeLegacyWarning( $id );
+ }
+ $out->addHTML( WrappedString::join( "\n", $strings ) );
+
+ return true;
+ }
+
+ private static function makeLegacyWarning( $id ) {
+ $special = SpecialPage::getTitleFor( 'Gadgets' );
+
+ return ResourceLoader::makeInlineScript(
+ Xml::encodeJsCall( 'mw.log.warn', [
+ "Gadget \"$id\" was not loaded. Please migrate it to use ResourceLoader. " .
+ 'See <' . $special->getCanonicalURL() . '>.'
+ ] )
+ );
+ }
+
+ /**
+ * Valid gadget definition page after content is modified
+ *
+ * @param IContextSource $context
+ * @param Content $content
+ * @param Status $status
+ * @param string $summary
+ * @throws Exception
+ * @return bool
+ */
+ public static function onEditFilterMergedContent( $context, $content, $status, $summary ) {
+ $title = $context->getTitle();
+
+ if ( !$title->inNamespace( NS_GADGET_DEFINITION ) ) {
+ return true;
+ }
+
+ if ( !$content instanceof GadgetDefinitionContent ) {
+ // This should not be possible?
+ throw new Exception(
+ "Tried to save non-GadgetDefinitionContent to {$title->getPrefixedText()}"
+ );
+ }
+
+ $status = $content->validate();
+ if ( !$status->isGood() ) {
+ $status->merge( $status );
+ return false;
+ }
+
+ return true;
+ }
+
+ /**
+ * After a new page is created in the Gadget definition namespace,
+ * invalidate the list of gadget ids
+ *
+ * @param WikiPage $page
+ */
+ public static function onPageContentInsertComplete( WikiPage $page ) {
+ if ( $page->getTitle()->inNamespace( NS_GADGET_DEFINITION ) ) {
+ $repo = GadgetRepo::singleton();
+ if ( $repo instanceof GadgetDefinitionNamespaceRepo ) {
+ $repo->purgeGadgetIdsList();
+ }
+ }
+ }
+
+ /**
+ * Mark the Title as having a content model of javascript or css for pages
+ * in the Gadget namespace based on their file extension
+ *
+ * @param Title $title
+ * @param string &$model
+ * @return bool
+ */
+ public static function onContentHandlerDefaultModelFor( Title $title, &$model ) {
+ if ( $title->inNamespace( NS_GADGET ) ) {
+ preg_match( '!\.(css|js)$!u', $title->getText(), $ext );
+ $ext = isset( $ext[1] ) ? $ext[1] : '';
+ switch ( $ext ) {
+ case 'js':
+ $model = 'javascript';
+ return false;
+ case 'css':
+ $model = 'css';
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ /**
+ * Set the CodeEditor language for Gadget definition pages. It already
+ * knows the language for Gadget: namespace pages.
+ *
+ * @param Title $title
+ * @param string &$lang
+ * @return bool
+ */
+ public static function onCodeEditorGetPageLanguage( Title $title, &$lang ) {
+ if ( $title->hasContentModel( 'GadgetDefinition' ) ) {
+ $lang = 'json';
+ return false;
+ }
+
+ return true;
+ }
+
+ /**
+ * Add the GadgetUsage special page to the list of QueryPages.
+ * @param array &$queryPages
+ * @return bool
+ */
+ public static function onwgQueryPages( &$queryPages ) {
+ $queryPages[] = [ 'SpecialGadgetUsage', 'GadgetUsage' ];
+ return true;
+ }
+}
diff --git a/www/wiki/extensions/Gadgets/Gadgets.alias.php b/www/wiki/extensions/Gadgets/Gadgets.alias.php
new file mode 100644
index 00000000..617e46c7
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/Gadgets.alias.php
@@ -0,0 +1,393 @@
+<?php
+/**
+ * Aliases for Special:Gadgets
+ *
+ * @file
+ * @ingroup Extensions
+ */
+
+$specialPageAliases = [];
+
+/** English (English) */
+$specialPageAliases['en'] = [
+ 'Gadgets' => [ 'Gadgets' ],
+ 'GadgetUsage' => [ 'GadgetUsage' ],
+];
+
+/** Afrikaans (Afrikaans) */
+$specialPageAliases['af'] = [
+ 'Gadgets' => [ 'Geriewe' ],
+];
+
+/** Arabic (العربية) */
+$specialPageAliases['ar'] = [
+ 'Gadgets' => [ 'إضافات' ],
+];
+
+/** Egyptian Arabic (مصرى) */
+$specialPageAliases['arz'] = [
+ 'Gadgets' => [ 'ادوات' ],
+];
+
+/** Assamese (অসমীয়া) */
+$specialPageAliases['as'] = [
+ 'Gadgets' => [ 'গেজেটসমূহ' ],
+];
+
+/** Avaric (авар) */
+$specialPageAliases['av'] = [
+ 'Gadgets' => [ 'Гаджеты' ],
+];
+
+/** Bulgarian (български) */
+$specialPageAliases['bg'] = [
+ 'Gadgets' => [ 'Джаджи' ],
+];
+
+/** Western Balochi (بلوچی رخشانی) */
+$specialPageAliases['bgn'] = [
+ 'Gadgets' => [ 'وسایل_ئان' ],
+];
+
+/** Banjar (Bahasa Banjar) */
+$specialPageAliases['bjn'] = [
+ 'Gadgets' => [ 'Pakakas' ],
+];
+
+/** Bengali (বাংলা) */
+$specialPageAliases['bn'] = [
+ 'Gadgets' => [ 'গ্যাজেট' ],
+ 'GadgetUsage' => [ 'গ্যাজেট_ব্যবহার' ],
+];
+
+/** Breton (brezhoneg) */
+$specialPageAliases['br'] = [
+ 'Gadgets' => [ 'Bitrakoù' ],
+];
+
+/** Bosnian (bosanski) */
+$specialPageAliases['bs'] = [
+ 'Gadgets' => [ 'Dodaci' ],
+];
+
+/** Chechen (нохчийн) */
+$specialPageAliases['ce'] = [
+ 'Gadgets' => [ 'Гаджеташ' ],
+];
+
+/** Central Kurdish (کوردیی ناوەندی) */
+$specialPageAliases['ckb'] = [
+ 'Gadgets' => [ 'ئامرازەکان' ],
+];
+
+/** Czech (čeština) */
+$specialPageAliases['cs'] = [
+ 'Gadgets' => [ 'Udělátka' ],
+];
+
+/** German (Deutsch) */
+$specialPageAliases['de'] = [
+ 'Gadgets' => [ 'Helferlein' ],
+];
+
+/** Zazaki (Zazaki) */
+$specialPageAliases['diq'] = [
+ 'Gadgets' => [ 'Gadgeti' ],
+];
+
+/** Lower Sorbian (dolnoserbski) */
+$specialPageAliases['dsb'] = [
+ 'Gadgets' => [ 'Gadgety' ],
+];
+
+/** Greek (Ελληνικά) */
+$specialPageAliases['el'] = [
+ 'Gadgets' => [ 'Εργαλεία', 'Προσαρτήματα' ],
+];
+
+/** Esperanto (Esperanto) */
+$specialPageAliases['eo'] = [
+ 'Gadgets' => [ 'Aldonaĵoj' ],
+];
+
+/** Spanish (español) */
+$specialPageAliases['es'] = [
+ 'Gadgets' => [ 'Accesorios', 'Artilugios' ],
+];
+
+/** Estonian (eesti) */
+$specialPageAliases['et'] = [
+ 'Gadgets' => [ 'Tööriistad' ],
+];
+
+/** Basque (euskara) */
+$specialPageAliases['eu'] = [
+ 'Gadgets' => [ 'Gadgetak' ],
+];
+
+/** Persian (فارسی) */
+$specialPageAliases['fa'] = [
+ 'Gadgets' => [ 'ابزارها' ],
+ 'GadgetUsage' => [ 'استفاده_ابزار' ],
+];
+
+/** Finnish (suomi) */
+$specialPageAliases['fi'] = [
+ 'Gadgets' => [ 'Pienoisohjelmat' ],
+];
+
+/** Arpitan (arpetan) */
+$specialPageAliases['frp'] = [
+ 'Gadgets' => [ 'Outils' ],
+];
+
+/** Galician (galego) */
+$specialPageAliases['gl'] = [
+ 'Gadgets' => [ 'Trebellos' ],
+];
+
+/** Swiss German (Alemannisch) */
+$specialPageAliases['gsw'] = [
+ 'Gadgets' => [ 'Hälferli' ],
+];
+
+/** Hawaiian (Hawai`i) */
+$specialPageAliases['haw'] = [
+ 'Gadgets' => [ 'Hāmeʻa', 'Hamea' ],
+];
+
+/** Hebrew (עברית) */
+$specialPageAliases['he'] = [
+ 'Gadgets' => [ 'גאדג\'טים', 'סקריפטים' ],
+];
+
+/** Hindi (हिन्दी) */
+$specialPageAliases['hi'] = [
+ 'Gadgets' => [ 'उपकरण', 'गैजेट' ],
+];
+
+/** Croatian (hrvatski) */
+$specialPageAliases['hr'] = [
+ 'Gadgets' => [ 'Dodaci' ],
+];
+
+/** Upper Sorbian (hornjoserbsce) */
+$specialPageAliases['hsb'] = [
+ 'Gadgets' => [ 'Specialne_funkcije' ],
+];
+
+/** Haitian (Kreyòl ayisyen) */
+$specialPageAliases['ht'] = [
+ 'Gadgets' => [ 'Gajèt' ],
+];
+
+/** Hungarian (magyar) */
+$specialPageAliases['hu'] = [
+ 'Gadgets' => [ 'Segédeszközök' ],
+];
+
+/** Interlingua (interlingua) */
+$specialPageAliases['ia'] = [
+ 'Gadgets' => [ 'Gadgetes' ],
+];
+
+/** Indonesian (Bahasa Indonesia) */
+$specialPageAliases['id'] = [
+ 'Gadgets' => [ 'Alat', 'Gadget' ],
+];
+
+/** Italian (italiano) */
+$specialPageAliases['it'] = [
+ 'Gadgets' => [ 'Accessori' ],
+];
+
+/** Japanese (日本語) */
+$specialPageAliases['ja'] = [
+ 'Gadgets' => [ 'ガジェット' ],
+];
+
+/** Korean (한국어) */
+$specialPageAliases['ko'] = [
+ 'Gadgets' => [ '소도구', '가젯' ],
+];
+
+/** Ladino (Ladino) */
+$specialPageAliases['lad'] = [
+ 'Gadgets' => [ 'Instrumenticos' ],
+];
+
+/** Luxembourgish (Lëtzebuergesch) */
+$specialPageAliases['lb'] = [
+ 'Gadgets' => [ 'Gadgeten' ],
+];
+
+/** Northern Luri (لۊری شومالی) */
+$specialPageAliases['lrc'] = [
+ 'Gadgets' => [ 'گأجئتیا' ],
+];
+
+/** Minangkabau (Baso Minangkabau) */
+$specialPageAliases['min'] = [
+ 'Gadgets' => [ 'Pakakeh' ],
+];
+
+/** Macedonian (македонски) */
+$specialPageAliases['mk'] = [
+ 'Gadgets' => [ 'Алатки' ],
+];
+
+/** Malayalam (മലയാളം) */
+$specialPageAliases['ml'] = [
+ 'Gadgets' => [ 'കൂട' ],
+];
+
+/** Marathi (मराठी) */
+$specialPageAliases['mr'] = [
+ 'Gadgets' => [ 'सुविधा' ],
+];
+
+/** Malay (Bahasa Melayu) */
+$specialPageAliases['ms'] = [
+ 'Gadgets' => [ 'Gajet' ],
+];
+
+/** Maltese (Malti) */
+$specialPageAliases['mt'] = [
+ 'Gadgets' => [ 'Aġġeġġi', 'Aċċessorji' ],
+];
+
+/** Norwegian Bokmål (norsk bokmål) */
+$specialPageAliases['nb'] = [
+ 'Gadgets' => [ 'Tilleggsfunksjoner' ],
+];
+
+/** Low Saxon (Netherlands) (Nedersaksies) */
+$specialPageAliases['nds-nl'] = [
+ 'Gadgets' => [ 'Technies_spul' ],
+];
+
+/** Dutch (Nederlands) */
+$specialPageAliases['nl'] = [
+ 'Gadgets' => [ 'Extensies' ],
+];
+
+/** Norwegian Nynorsk (norsk nynorsk) */
+$specialPageAliases['nn'] = [
+ 'Gadgets' => [ 'Tilleggsfunksjonar' ],
+];
+
+/** Occitan (occitan) */
+$specialPageAliases['oc'] = [
+ 'Gadgets' => [ 'Gadgèts' ],
+];
+
+/** Punjabi (ਪੰਜਾਬੀ) */
+$specialPageAliases['pa'] = [
+ 'Gadgets' => [ 'ਛੋਟੇ_ਸੰਦ', 'ਛੋਟੇ_ਔਜ਼ਾਰ' ],
+];
+
+/** Polish (polski) */
+$specialPageAliases['pl'] = [
+ 'Gadgets' => [ 'Gadżety' ],
+];
+
+/** Romanian (română) */
+$specialPageAliases['ro'] = [
+ 'Gadgets' => [ 'Gadgeturi' ],
+];
+
+/** Russian (русский) */
+$specialPageAliases['ru'] = [
+ 'Gadgets' => [ 'Гаджеты' ],
+];
+
+/** Sanskrit (संस्कृतम्) */
+$specialPageAliases['sa'] = [
+ 'Gadgets' => [ 'सुविधा_(गॅजेट)' ],
+];
+
+/** Sicilian (sicilianu) */
+$specialPageAliases['scn'] = [
+ 'Gadgets' => [ 'Accessori' ],
+];
+
+/** Sinhala (සිංහල) */
+$specialPageAliases['si'] = [
+ 'Gadgets' => [ 'විජෙට්ටු' ],
+];
+
+/** Slovak (slovenčina) */
+$specialPageAliases['sk'] = [
+ 'Gadgets' => [ 'Hračky' ],
+];
+
+/** Slovenian (slovenščina) */
+$specialPageAliases['sl'] = [
+ 'Gadgets' => [ 'Vtičniki', 'Vticniki' ],
+];
+
+/** Serbian (Cyrillic script) (српски (ћирилица)‎) */
+$specialPageAliases['sr-ec'] = [
+ 'Gadgets' => [ 'Гаџети', 'Геџети' ],
+];
+
+/** Swedish (svenska) */
+$specialPageAliases['sv'] = [
+ 'Gadgets' => [ 'Finesser' ],
+];
+
+/** Thai (ไทย) */
+$specialPageAliases['th'] = [
+ 'Gadgets' => [ 'อุปกรณ์เสริม', 'แกเจต' ],
+];
+
+/** Tagalog (Tagalog) */
+$specialPageAliases['tl'] = [
+ 'Gadgets' => [ 'Mga_gadyet' ],
+];
+
+/** Turkish (Türkçe) */
+$specialPageAliases['tr'] = [
+ 'Gadgets' => [ 'KüçükAraçlar' ],
+];
+
+/** Tatar (Cyrillic script) (татарча) */
+$specialPageAliases['tt-cyrl'] = [
+ 'Gadgets' => [ 'Гаджетлар' ],
+];
+
+/** Ukrainian (українська) */
+$specialPageAliases['uk'] = [
+ 'Gadgets' => [ 'Додатки', 'Гаджеты' ],
+];
+
+/** Urdu (اردو) */
+$specialPageAliases['ur'] = [
+ 'Gadgets' => [ 'آلات' ],
+ 'GadgetUsage' => [ 'آلات_کا_استعمال' ],
+];
+
+/** Venetian (vèneto) */
+$specialPageAliases['vec'] = [
+ 'Gadgets' => [ 'Strumenti' ],
+];
+
+/** Vietnamese (Tiếng Việt) */
+$specialPageAliases['vi'] = [
+ 'Gadgets' => [ 'Tiện_ích', 'Công_cụ_đa_năng' ],
+];
+
+/** Chinese (中文) */
+$specialPageAliases['zh'] = [
+ 'Gadgets' => [ '小工具' ],
+];
+
+/** Simplified Chinese (中文(简体)‎) */
+$specialPageAliases['zh-hans'] = [
+ 'Gadgets' => [ '小工具' ],
+];
+
+/** Traditional Chinese (中文(繁體)‎) */
+$specialPageAliases['zh-hant'] = [
+ 'Gadgets' => [ '小工具' ],
+];
diff --git a/www/wiki/extensions/Gadgets/Gadgets.namespaces.php b/www/wiki/extensions/Gadgets/Gadgets.namespaces.php
new file mode 100644
index 00000000..c1c70b9c
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/Gadgets.namespaces.php
@@ -0,0 +1,248 @@
+<?php
+$namespaceNames = [];
+
+// For wikis without Gadgets installed.
+if ( !defined( 'NS_GADGET' ) ) {
+ define( 'NS_GADGET', 2300 );
+ define( 'NS_GADGET_TALK', 2301 );
+ define( 'NS_GADGET_DEFINITION', 2302 );
+ define( 'NS_GADGET_DEFINITION_TALK', 2303 );
+}
+
+$namespaceNames['an'] = [
+ NS_GADGET => 'Accesorio',
+ NS_GADGET_TALK => 'Descusión_accesorio',
+ NS_GADGET_DEFINITION => 'Accesorio_definición',
+ NS_GADGET_DEFINITION_TALK => 'Descusión_definición_accesorio',
+];
+
+$namespaceNames['ar'] = [
+ NS_GADGET => 'إضافة',
+ NS_GADGET_TALK => 'نقاش_الإضافة',
+ NS_GADGET_DEFINITION => 'تعريف_الإضافة',
+ NS_GADGET_DEFINITION_TALK => 'نقاش_تعريف_الإضافة',
+];
+
+$namespaceNames['ast'] = [
+ NS_GADGET => 'Accesoriu',
+ NS_GADGET_TALK => 'Accesoriu_alderique',
+ NS_GADGET_DEFINITION => 'Accesoriu_definición',
+ NS_GADGET_DEFINITION_TALK => 'Accesoriu_definición_alderique',
+];
+
+$namespaceNames['atj'] = [
+ NS_GADGET => 'Gadget',
+ NS_GADGET_TALK => 'Ka_ici_aimihitonaniwok_gadget',
+ NS_GADGET_DEFINITION => 'Tipatcitcikan_e_icinakok_gadget',
+ NS_GADGET_DEFINITION_TALK => 'Ka_ici_aimihitonaniwok_tipatcitcikan_gadget_otci',
+];
+
+$namespaceNames['azb'] = [
+ NS_GADGET => 'آلت',
+ NS_GADGET_TALK => 'آلت_دانیشیغی',
+ NS_GADGET_DEFINITION => 'آلت_آچیقلاماسی',
+ NS_GADGET_DEFINITION_TALK => 'آلت_آچیقلاماسی_دانیشیغی',
+];
+
+$namespaceNames['ba'] = [
+ NS_GADGET => 'Гаджет',
+ NS_GADGET_TALK => 'Гаджет_буйынса_фекерләшеү',
+ NS_GADGET_DEFINITION => 'Гаджет_билдәһе',
+ NS_GADGET_DEFINITION_TALK => 'Гаджет_билдәһе_буйынса_фекерләшеү',
+];
+
+$namespaceNames['bgn'] = [
+ NS_GADGET => 'وسیله_ئان',
+ NS_GADGET_TALK => 'وسیله_ئان_ئی_گپ',
+ NS_GADGET_DEFINITION => 'وسیله_ئانی_شرح',
+ NS_GADGET_DEFINITION_TALK => 'وسیله_ئانی_شرح_ئی_گپ',
+];
+
+$namespaceNames['bn'] = [
+ NS_GADGET => 'গ্যাজেট',
+ NS_GADGET_TALK => 'গ্যাজেট_আলোচনা',
+ NS_GADGET_DEFINITION => 'গ্যাজেট_সংজ্ঞা',
+ NS_GADGET_DEFINITION_TALK => 'গ্যাজেট_সংজ্ঞার_আলোচনা',
+];
+
+$namespaceNames['ckb'] = [
+ NS_GADGET => 'ئامراز',
+ NS_GADGET_TALK => 'وتووێژی_ئامراز',
+ NS_GADGET_DEFINITION => 'پێناسه‌ی_ئامراز',
+ NS_GADGET_DEFINITION_TALK => 'وتووێژی_پێناسه‌ی_ئامراز',
+];
+
+$namespaceNames['cs'] = [
+ NS_GADGET => 'Udělátko',
+ NS_GADGET_TALK => 'Diskuse_k_udělátku',
+ NS_GADGET_DEFINITION => 'Definice_udělátka',
+ NS_GADGET_DEFINITION_TALK => 'Diskuse_k_definici_udělátka',
+];
+
+$namespaceNames['de'] = [
+ NS_GADGET => 'Gadget',
+ NS_GADGET_TALK => 'Gadget_Diskussion',
+ NS_GADGET_DEFINITION => 'Gadget-Definition',
+ NS_GADGET_DEFINITION_TALK => 'Gadget-Definition_Diskussion',
+];
+
+$namespaceNames['din'] = [
+ NS_GADGET => 'Muluuitet',
+ NS_GADGET_TALK => 'Jam_wɛ̈t_ë_muluuitet',
+ NS_GADGET_DEFINITION => 'Wɛ̈tdic_ë_muluuitet',
+ NS_GADGET_DEFINITION_TALK => 'Jam_wɛ̈t_ë_wɛ̈tdic_ë_muluuitet',
+];
+
+$namespaceNames['diq'] = [
+ NS_GADGET => 'Halet',
+ NS_GADGET_TALK => 'Halet_vaten',
+ NS_GADGET_DEFINITION => 'Halet_şınasnayış',
+ NS_GADGET_DEFINITION_TALK => 'Halet_şınasnayış_vaten',
+];
+
+$namespaceNames['dty'] = [
+ NS_GADGET => 'ग्याजेट',
+ NS_GADGET_TALK => 'ग्याजेट_कुरणि',
+ NS_GADGET_DEFINITION => 'ग्याजेट_परिभाषा',
+ NS_GADGET_DEFINITION_TALK => 'ग्याजेट_परिभाषा_कुरणि',
+];
+
+$namespaceNames['en'] = [
+ NS_GADGET => 'Gadget',
+ NS_GADGET_TALK => 'Gadget_talk',
+ NS_GADGET_DEFINITION => 'Gadget_definition',
+ NS_GADGET_DEFINITION_TALK => 'Gadget_definition_talk',
+];
+
+$namespaceNames['es'] = [
+ NS_GADGET => 'Accesorio',
+ NS_GADGET_TALK => 'Accesorio_discusión',
+ NS_GADGET_DEFINITION => 'Accesorio_definición',
+ NS_GADGET_DEFINITION_TALK => 'Accesorio_definición_discusión',
+];
+
+$namespaceNames['et'] = [
+ NS_GADGET => 'Tööriist',
+ NS_GADGET_TALK => 'Tööriista_arutelu',
+ NS_GADGET_DEFINITION => 'Tööriista_määratlus',
+ NS_GADGET_DEFINITION_TALK => 'Tööriista_määratluse_arutelu',
+];
+
+$namespaceNames['fa'] = [
+ NS_GADGET => 'ابزار',
+ NS_GADGET_TALK => 'بحث_ابزار',
+ NS_GADGET_DEFINITION => 'توضیحات_ابزار',
+ NS_GADGET_DEFINITION_TALK => 'بحث_توضیحات_ابزار',
+];
+
+$namespaceNames['fr'] = [
+ NS_GADGET => 'Gadget',
+ NS_GADGET_TALK => 'Discussion_gadget',
+ NS_GADGET_DEFINITION => 'Définition_de_gadget',
+ NS_GADGET_DEFINITION_TALK => 'Discussion_définition_de_gadget',
+];
+
+$namespaceNames['he'] = [
+ NS_GADGET => 'גאדג\'ט',
+ NS_GADGET_TALK => 'שיחת_גאדג\'ט',
+ NS_GADGET_DEFINITION => 'הגדרת_גאדג\'ט',
+ NS_GADGET_DEFINITION_TALK => 'שיחת_הגדרת_גאדג\'ט',
+];
+
+$namespaceNames['inh'] = [
+ NS_GADGET => 'Гаджет',
+ NS_GADGET_TALK => 'Гаджет_ювцар',
+ NS_GADGET_DEFINITION => 'Гаджета_къоастадар',
+ NS_GADGET_DEFINITION_TALK => 'Гаджета_къоастадар_дувцар',
+];
+
+$namespaceNames['is'] = [
+ NS_GADGET => 'Smától',
+ NS_GADGET_TALK => 'Smátólaspjall',
+ NS_GADGET_DEFINITION => 'Smátóla_skilgreining',
+ NS_GADGET_DEFINITION_TALK => 'Smátóla_skilgreiningarspjall',
+];
+
+$namespaceNames['it'] = [
+ NS_GADGET => 'Accessorio',
+ NS_GADGET_TALK => 'Discussioni_accessorio',
+ NS_GADGET_DEFINITION => 'Definizione_accessorio',
+ NS_GADGET_DEFINITION_TALK => 'Discussioni_definizione_accessorio',
+];
+
+$namespaceNames['ko'] = [
+ NS_GADGET => '소도구',
+ NS_GADGET_TALK => '소도구토론',
+ NS_GADGET_DEFINITION => '소도구정의',
+ NS_GADGET_DEFINITION_TALK => '소도구정의토론',
+];
+
+$namespaceNames['lrc'] = [
+ NS_GADGET => 'گأجئت',
+ NS_GADGET_TALK => 'چأک_چئنە_گأجئت',
+ NS_GADGET_DEFINITION => 'توضییا_گأجئت',
+ NS_GADGET_DEFINITION_TALK => 'چأک_چئنە_توضییا_گأجئت',
+];
+
+$namespaceNames['mwl'] = [
+ NS_GADGET => 'Gadget',
+ NS_GADGET_TALK => 'Cumbersa_gadget',
+ NS_GADGET_DEFINITION => 'Defeniçon_gadget',
+ NS_GADGET_DEFINITION_TALK => 'Cumbersa_defeniçon_gadget',
+];
+
+$namespaceNames['mzn'] = [
+ NS_GADGET => 'گجت',
+ NS_GADGET_TALK => 'گجت_گپ',
+ NS_GADGET_DEFINITION => 'گجت_توضیحات',
+ NS_GADGET_DEFINITION_TALK => 'گجت_توضیحات_گپ',
+];
+
+$namespaceNames['nl'] = [
+ NS_GADGET => 'Uitbreiding',
+ NS_GADGET_TALK => 'Overleg_uitbreiding',
+ NS_GADGET_DEFINITION => 'Uitbreidingsdefinitie',
+ NS_GADGET_DEFINITION_TALK => 'Overleg_uitbreidingsdefinitie',
+];
+
+$namespaceNames['or'] = [
+ NS_GADGET => 'ଗ୍ୟାଜେଟ',
+ NS_GADGET_TALK => 'ଗ୍ୟାଜେଟ_ଆଲୋଚନା',
+ NS_GADGET_DEFINITION => 'ଗ୍ୟାଜେଟ_ସଂଜ୍ଞା',
+ NS_GADGET_DEFINITION_TALK => 'ଗ୍ୟାଜେଟ_ସଂଜ୍ଞା_ଆଲୋଚନା',
+];
+
+$namespaceNames['pl'] = [
+ NS_GADGET => 'Gadżet',
+ NS_GADGET_TALK => 'Dyskusja_gadżetu',
+ NS_GADGET_DEFINITION => 'Definicja_gadżetu',
+ NS_GADGET_DEFINITION_TALK => 'Dyskusja_definicji_gadżetu',
+];
+
+$namespaceNames['pnb'] = [
+ NS_GADGET => 'آلہ',
+ NS_GADGET_TALK => 'آلہ_گل_بات',
+ NS_GADGET_DEFINITION => 'آلہ_تعریف',
+ NS_GADGET_DEFINITION_TALK => 'آلہ_تعریف_گل_بات',
+];
+
+$namespaceNames['sd'] = [
+ NS_GADGET => 'گيجيٽ',
+ NS_GADGET_TALK => 'گيجيٽ_بحث',
+ NS_GADGET_DEFINITION => 'گيجيٽ_وصف',
+ NS_GADGET_DEFINITION_TALK => 'گيجيٽ_وصف_بحث',
+];
+
+$namespaceNames['ur'] = [
+ NS_GADGET => 'آلہ',
+ NS_GADGET_TALK => 'تبادلۂ_خیال_آلہ',
+ NS_GADGET_DEFINITION => 'تعریف_آلہ',
+ NS_GADGET_DEFINITION_TALK => 'تبادلۂ_خیال_تعریف_آلہ',
+];
+
+$namespaceNames['vi'] = [
+ NS_GADGET => 'Tiện_ích',
+ NS_GADGET_TALK => 'Thảo_luận_Tiện_ích',
+ NS_GADGET_DEFINITION => 'Định_nghĩa_tiện_ích',
+ NS_GADGET_DEFINITION_TALK => 'Thảo_luận_Định_nghĩa_tiện_ích',
+];
diff --git a/www/wiki/extensions/Gadgets/Gadgets.php b/www/wiki/extensions/Gadgets/Gadgets.php
new file mode 100644
index 00000000..62bf99ae
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/Gadgets.php
@@ -0,0 +1,16 @@
+<?php
+
+if ( function_exists( 'wfLoadExtension' ) ) {
+ wfLoadExtension( 'Gadgets' );
+ // Keep i18n globals so mergeMessageFileList.php doesn't break
+ $wgMessagesDirs['Gadgets'] = __DIR__ . '/i18n';
+ $wgExtensionMessagesFiles['GadgetsAlias'] = __DIR__ . '/Gadgets.alias.php';
+ $wgExtensionMessagesFiles['GadgetsNamespaces'] = __DIR__ . '/Gadgets.namespaces.php';
+ /* wfWarn(
+ 'Deprecated PHP entry point used for Gadgets extension. Please use wfLoadExtension instead, ' .
+ 'see https://www.mediawiki.org/wiki/Extension_registration for more details.'
+ ); */
+ return true;
+} else {
+ die( 'This version of the Gadgets extension requires MediaWiki 1.28+' );
+}
diff --git a/www/wiki/extensions/Gadgets/Gadgets_body.php b/www/wiki/extensions/Gadgets/Gadgets_body.php
new file mode 100644
index 00000000..b197ed20
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/Gadgets_body.php
@@ -0,0 +1,315 @@
+<?php
+/**
+ * Gadgets extension - lets users select custom javascript gadgets
+ *
+ * For more info see https://www.mediawiki.org/wiki/Extension:Gadgets
+ *
+ * @file
+ * @ingroup Extensions
+ * @author Daniel Kinzler, brightbyte.de
+ * @copyright © 2007 Daniel Kinzler
+ * @license GNU General Public Licence 2.0 or later
+ */
+
+/**
+ * Wrapper for one gadget.
+ */
+class Gadget {
+ /**
+ * Increment this when changing class structure
+ */
+ const GADGET_CLASS_VERSION = 9;
+
+ const CACHE_TTL = 86400;
+
+ private $scripts = [],
+ $styles = [],
+ $dependencies = [],
+ $peers = [],
+ $messages = [],
+ $name,
+ $definition,
+ $resourceLoaded = false,
+ $requiredRights = [],
+ $requiredSkins = [],
+ $targets = [ 'desktop' ],
+ $onByDefault = false,
+ $hidden = false,
+ $type = '',
+ $category;
+
+ public function __construct( array $options ) {
+ foreach ( $options as $member => $option ) {
+ switch ( $member ) {
+ case 'scripts':
+ case 'styles':
+ case 'dependencies':
+ case 'peers':
+ case 'messages':
+ case 'name':
+ case 'definition':
+ case 'resourceLoaded':
+ case 'requiredRights':
+ case 'requiredSkins':
+ case 'targets':
+ case 'onByDefault':
+ case 'type':
+ case 'hidden':
+ case 'category':
+ $this->{$member} = $option;
+ break;
+ default:
+ throw new InvalidArgumentException( "Unrecognized '$member' parameter" );
+ }
+ }
+ }
+
+ /**
+ * Create a object based on the metadata in a GadgetDefinitionContent object
+ *
+ * @param string $id
+ * @param GadgetDefinitionContent $content
+ * @return Gadget
+ */
+ public static function newFromDefinitionContent( $id, GadgetDefinitionContent $content ) {
+ $data = $content->getAssocArray();
+ $prefixGadgetNs = function ( $page ) {
+ return 'Gadget:' . $page;
+ };
+ $info = [
+ 'name' => $id,
+ 'resourceLoaded' => true,
+ 'requiredRights' => $data['settings']['rights'],
+ 'onByDefault' => $data['settings']['default'],
+ 'hidden' => $data['settings']['hidden'],
+ 'requiredSkins' => $data['settings']['skins'],
+ 'category' => $data['settings']['category'],
+ 'scripts' => array_map( $prefixGadgetNs, $data['module']['scripts'] ),
+ 'styles' => array_map( $prefixGadgetNs, $data['module']['styles'] ),
+ 'dependencies' => $data['module']['dependencies'],
+ 'peers' => $data['module']['peers'],
+ 'messages' => $data['module']['messages'],
+ 'type' => $data['module']['type'],
+ ];
+
+ return new self( $info );
+ }
+
+ /**
+ * Get a placeholder object to use if a gadget doesn't exist
+ *
+ * @param string $id name
+ * @return Gadget
+ */
+ public static function newEmptyGadget( $id ) {
+ return new self( [ 'name' => $id ] );
+ }
+
+ /**
+ * Whether the provided gadget id is valid
+ *
+ * @param string $id
+ * @return bool
+ */
+ public static function isValidGadgetID( $id ) {
+ return strlen( $id ) > 0 && ResourceLoader::isValidModuleName( self::getModuleName( $id ) );
+ }
+
+ /**
+ * @return string Gadget name
+ */
+ public function getName() {
+ return $this->name;
+ }
+
+ /**
+ * @return string Gadget description parsed into HTML
+ */
+ public function getDescription() {
+ return wfMessage( "gadget-{$this->getName()}" )->parse();
+ }
+
+ /**
+ * @return string Wikitext of gadget description
+ */
+ public function getRawDescription() {
+ return wfMessage( "gadget-{$this->getName()}" )->plain();
+ }
+
+ /**
+ * @return string Name of category (aka section) our gadget belongs to. Empty string if none.
+ */
+ public function getCategory() {
+ return $this->category;
+ }
+
+ /**
+ * @param string $id Name of gadget
+ * @return string Name of ResourceLoader module for the gadget
+ */
+ public static function getModuleName( $id ) {
+ return "ext.gadget.{$id}";
+ }
+
+ /**
+ * Checks whether this gadget is enabled for given user
+ *
+ * @param User $user user to check against
+ * @return bool
+ */
+ public function isEnabled( $user ) {
+ return (bool)$user->getOption( "gadget-{$this->name}", $this->onByDefault );
+ }
+
+ /**
+ * Checks whether given user has permissions to use this gadget
+ *
+ * @param User $user user to check against
+ * @return bool
+ */
+ public function isAllowed( $user ) {
+ return count( array_intersect( $this->requiredRights, $user->getRights() ) ) ==
+ count( $this->requiredRights )
+ && ( $this->requiredSkins === true
+ || !count( $this->requiredSkins )
+ || in_array( $user->getOption( 'skin' ), $this->requiredSkins )
+ );
+ }
+
+ /**
+ * @return bool Whether this gadget is on by default for everyone
+ * (but can be disabled in preferences)
+ */
+ public function isOnByDefault() {
+ return $this->onByDefault;
+ }
+
+ /**
+ * @return bool
+ */
+ public function isHidden() {
+ return $this->hidden;
+ }
+
+ /**
+ * @return bool Whether all of this gadget's JS components support ResourceLoader
+ */
+ public function supportsResourceLoader() {
+ return $this->resourceLoaded;
+ }
+
+ /**
+ * @return bool Whether this gadget has resources that can be loaded via ResourceLoaderb
+ */
+ public function hasModule() {
+ return count( $this->styles )
+ + ( $this->supportsResourceLoader() ? count( $this->scripts ) : 0 )
+ > 0;
+ }
+
+ /**
+ * @return string Definition for this gadget from MediaWiki:gadgets-definition
+ */
+ public function getDefinition() {
+ return $this->definition;
+ }
+
+ /**
+ * @return array Array of pages with JS (including namespace)
+ */
+ public function getScripts() {
+ return $this->scripts;
+ }
+
+ /**
+ * @return array Array of pages with CSS (including namespace)
+ */
+ public function getStyles() {
+ return $this->styles;
+ }
+
+ /**
+ * @return array Array of all of this gadget's resources
+ */
+ public function getScriptsAndStyles() {
+ return array_merge( $this->scripts, $this->styles );
+ }
+
+ /**
+ * @return array
+ */
+ public function getTargets() {
+ return $this->targets;
+ }
+
+ /**
+ * Returns list of scripts that don't support ResourceLoader
+ * @return Array
+ */
+ public function getLegacyScripts() {
+ if ( $this->supportsResourceLoader() ) {
+ return [];
+ }
+ return $this->scripts;
+ }
+
+ /**
+ * Returns names of resources this gadget depends on
+ * @return Array
+ */
+ public function getDependencies() {
+ return $this->dependencies;
+ }
+
+ /**
+ * Get list of extra modules that should be loaded when this gadget is enabled
+ *
+ * Primary use case is to allow a Gadget that includes JavaScript to also load
+ * a (usually, hidden) styles-type module to be applied to the page. Dependencies
+ * don't work for this use case as those would not be part of page rendering.
+ *
+ * @return Array
+ */
+ public function getPeers() {
+ return $this->peers;
+ }
+
+ /**
+ * @return array
+ */
+ public function getMessages() {
+ return $this->messages;
+ }
+
+ /**
+ * Returns array of permissions required by this gadget
+ * @return Array
+ */
+ public function getRequiredRights() {
+ return $this->requiredRights;
+ }
+
+ /**
+ * Returns array of skins where this gadget works
+ * @return Array
+ */
+ public function getRequiredSkins() {
+ return $this->requiredSkins;
+ }
+
+ /**
+ * Returns the load type of this Gadget's ResourceLoader module
+ * @return string 'styles' or 'general'
+ */
+ public function getType() {
+ if ( $this->type === 'styles' || $this->type === 'general' ) {
+ return $this->type;
+ }
+ // Similar to ResourceLoaderWikiModule default
+ if ( $this->styles && !$this->scripts && !$this->dependencies ) {
+ return 'styles';
+ } else {
+ return 'general';
+ }
+ }
+}
diff --git a/www/wiki/extensions/Gadgets/Gruntfile.js b/www/wiki/extensions/Gadgets/Gruntfile.js
new file mode 100644
index 00000000..bc6ee366
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/Gruntfile.js
@@ -0,0 +1,31 @@
+/*jshint node:true */
+module.exports = function ( grunt ) {
+ var conf = grunt.file.readJSON( 'extension.json' );
+ grunt.loadNpmTasks( 'grunt-contrib-jshint' );
+ grunt.loadNpmTasks( 'grunt-jsonlint' );
+ grunt.loadNpmTasks( 'grunt-banana-checker' );
+
+ grunt.initConfig( {
+ jshint: {
+ options: {
+ jshintrc: true
+ },
+ all: [
+ '**/*.js',
+ '!node_modules/**',
+ '!vendor/**'
+ ]
+ },
+ banana: conf.MessagesDirs,
+ jsonlint: {
+ all: [
+ '**/*.json',
+ '!node_modules/**',
+ '!vendor/**'
+ ]
+ }
+ } );
+
+ grunt.registerTask( 'test', [ 'jshint', 'jsonlint', 'banana' ] );
+ grunt.registerTask( 'default', 'test' );
+};
diff --git a/www/wiki/extensions/Gadgets/README.md b/www/wiki/extensions/Gadgets/README.md
new file mode 100644
index 00000000..8235e3aa
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/README.md
@@ -0,0 +1,43 @@
+Gadgets
+=============
+
+The Gadgets extension provides a way for users to pick JavaScript or CSS
+based "gadgets" that other wiki users provide.
+
+See https://www.mediawiki.org/wiki/Extension:Gadgets for more documentation.
+
+The Gadgets extension was originally written by Daniel Kinzler in 2007
+and is released under the GNU General Public Licence (GPL).
+
+Prerequisites
+-------------
+This version of Gadgets requires MediaWiki 1.27 or later. To get a version
+compatible with an earlier MediaWiki release, visit
+[ExtensionDistributor/Gadgets](https://www.mediawiki.org/wiki/Special:ExtensionDistributor/Gadgets).
+
+Installing
+-------------
+Copy the Gadgets directory into the extensions folder of your
+MediaWiki installation. Then add the following lines to your
+LocalSettings.php file (near the end):
+
+ wfLoadExtension( 'Gadgets' );
+
+Usage
+-------------
+See https://www.mediawiki.org/wiki/Extension:Gadgets#Usage
+
+Caveats
+-------------
+* Gadgets do not apply to Special:Preferences, Special:UserLogin and
+ Special:ResetPass so users can always disable any broken gadgets they
+ may have enabled, and malicious gadgets will be unable to steal passwords.
+
+Configuration
+-------------
+* `$wgGadgetsRepoClass`: configures which GadgetRepo implementation will be used
+ to source gadgets from. Currently, "MediaWikiGadgetsDefinitionRepo" is the
+ recommended setting and default. The "GadgetDefinitionNamespaceRepo" is not
+ ready for production usage yet.
+* `$wgSpecialGadgetUsageActiveUsers`: configures whether or not to show active
+ user stats on Special:GadgetUsage. True by default.
diff --git a/www/wiki/extensions/Gadgets/SpecialGadgetUsage.php b/www/wiki/extensions/Gadgets/SpecialGadgetUsage.php
new file mode 100644
index 00000000..8415ce16
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/SpecialGadgetUsage.php
@@ -0,0 +1,249 @@
+<?php
+/**
+ * Implements Special:GadgetUsage
+ *
+ * Copyright © 2015 Niharika Kohli
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup SpecialPage
+ * @author Niharika Kohli <niharika@wikimedia.org>
+ */
+
+/**
+ * Special:GadgetUsage - Lists all the gadgets on the wiki along with number of users.
+ * @ingroup SpecialPage
+ */
+class SpecialGadgetUsage extends QueryPage {
+ function __construct( $name = 'GadgetUsage' ) {
+ parent::__construct( $name );
+ $this->limit = 1000; // Show all gadgets
+ $this->shownavigation = false;
+ $this->activeUsers = $this->getConfig()->get( 'SpecialGadgetUsageActiveUsers' );
+ }
+
+ /**
+ * Flag for holding the value of config variable SpecialGadgetUsageActiveUsers
+ *
+ * @var bool $activeUsers
+ */
+ public $activeUsers;
+
+ public function isExpensive() {
+ return true;
+ }
+
+ /**
+ * Define the database query that is used to generate the stats table.
+ * This uses 1 of 2 possible queries, depending on $wgSpecialGadgetUsageActiveUsers.
+ *
+ * The simple query is essentially:
+ * SELECT up_property, SUM(up_value)
+ * FROM user_properties
+ * WHERE up_property LIKE 'gadget-%'
+ * GROUP BY up_property;
+ *
+ * The more expensive query is:
+ * SELECT up_property, SUM(up_value), count(qcc_title)
+ * FROM user_properties
+ * LEFT JOIN user ON up_user = user_id
+ * LEFT JOIN querycachetwo ON user_name = qcc_title AND qcc_type = 'activeusers' AND up_value = 1
+ * WHERE up_property LIKE 'gadget-%'
+ * GROUP BY up_property;
+ * @return array
+ */
+ public function getQueryInfo() {
+ $dbr = wfGetDB( DB_SLAVE );
+ if ( !$this->activeUsers ) {
+ return [
+ 'tables' => [ 'user_properties' ],
+ 'fields' => [
+ 'title' => 'up_property',
+ 'value' => 'SUM( up_value )',
+ 'namespace' => NS_GADGET
+ ],
+ 'conds' => [
+ 'up_property' . $dbr->buildLike( 'gadget-', $dbr->anyString() )
+ ],
+ 'options' => [
+ 'GROUP BY' => [ 'up_property' ]
+ ]
+ ];
+ } else {
+ return [
+ 'tables' => [ 'user_properties', 'user', 'querycachetwo' ],
+ 'fields' => [
+ 'title' => 'up_property',
+ 'value' => 'SUM( up_value )',
+ // Need to pick fields existing in the querycache table so that the results are cachable
+ 'namespace' => 'COUNT( qcc_title )'
+ ],
+ 'conds' => [
+ 'up_property' . $dbr->buildLike( 'gadget-', $dbr->anyString() )
+ ],
+ 'options' => [
+ 'GROUP BY' => [ 'up_property' ]
+ ],
+ 'join_conds' => [
+ 'user' => [
+ 'LEFT JOIN', [
+ 'up_user = user_id'
+ ]
+ ],
+ 'querycachetwo' => [
+ 'LEFT JOIN', [
+ 'user_name = qcc_title',
+ 'qcc_type = "activeusers"',
+ 'up_value = 1'
+ ]
+ ]
+ ]
+ ];
+ }
+ }
+
+ public function getOrderFields() {
+ return [ 'value' ];
+ }
+
+ /**
+ * Output the start of the table
+ * Including opening <table>, and first <tr> with column headers.
+ */
+ protected function outputTableStart() {
+ $html = Html::openElement( 'table', [ 'class' => [ 'sortable', 'wikitable' ] ] );
+ $html .= Html::openElement( 'tr', [] );
+ $headers = [ 'gadgetusage-gadget', 'gadgetusage-usercount' ];
+ if ( $this->activeUsers ) {
+ $headers[] = 'gadgetusage-activeusers';
+ }
+ foreach ( $headers as $h ) {
+ if ( $h == 'gadgetusage-gadget' ) {
+ $html .= Html::element( 'th', [], $this->msg( $h )->text() );
+ } else {
+ $html .= Html::element( 'th', [ 'data-sort-type' => 'number' ],
+ $this->msg( $h )->text() );
+ }
+ }
+ $html .= Html::closeElement( 'tr' );
+ $this->getOutput()->addHTML( $html );
+ }
+
+ /**
+ * @param Skin $skin
+ * @param object $result Result row
+ * @return string|bool String of HTML
+ */
+ public function formatResult( $skin, $result ) {
+ $gadgetTitle = substr( $result->title, 7 );
+ $gadgetUserCount = $this->getLanguage()->formatNum( $result->value );
+ if ( $gadgetTitle ) {
+ $html = Html::openElement( 'tr', [] );
+ $html .= Html::element( 'td', [], $gadgetTitle );
+ $html .= Html::element( 'td', [], $gadgetUserCount );
+ if ( $this->activeUsers == true ) {
+ $activeUserCount = $this->getLanguage()->formatNum( $result->namespace );
+ $html .= Html::element( 'td', [], $activeUserCount );
+ }
+ $html .= Html::closeElement( 'tr' );
+ return $html;
+ }
+ return false;
+ }
+
+ /**
+ * Get a list of default gadgets
+ * @param GadgetRepo $gadgetRepo
+ * @param array $gadgetIds list of gagdet ids registered in the wiki
+ * @return array
+ */
+ protected function getDefaultGadgets( $gadgetRepo, $gadgetIds ) {
+ $gadgetsList = [];
+ foreach ( $gadgetIds as $g ) {
+ $gadget = $gadgetRepo->getGadget( $g );
+ if ( $gadget->isOnByDefault() ) {
+ $gadgetsList[] = $gadget->getName();
+ }
+ }
+ asort( $gadgetsList, SORT_STRING | SORT_FLAG_CASE );
+ return $gadgetsList;
+ }
+
+ /**
+ * Format and output report results using the given information plus
+ * OutputPage
+ *
+ * @param OutputPage $out OutputPage to print to
+ * @param Skin $skin User skin to use
+ * @param IDatabase $dbr Database (read) connection to use
+ * @param ResultWrapper $res Result pointer
+ * @param int $num Number of available result rows
+ * @param int $offset Paging offset
+ */
+ protected function outputResults( $out, $skin, $dbr, $res, $num, $offset ) {
+ $gadgetRepo = GadgetRepo::singleton();
+ $gadgetIds = $gadgetRepo->getGadgetIds();
+ $defaultGadgets = $this->getDefaultGadgets( $gadgetRepo, $gadgetIds );
+ if ( $this->activeUsers ) {
+ $out->addHtml(
+ $this->msg( 'gadgetusage-intro' )
+ ->numParams( $this->getConfig()->get( 'ActiveUserDays' ) )->parseAsBlock()
+ );
+ } else {
+ $out->addHtml(
+ $this->msg( 'gadgetusage-intro-noactive' )->parseAsBlock()
+ );
+ }
+ if ( $num > 0 ) {
+ $this->outputTableStart();
+ // Append default gadgets to the table with 'default' in the total and active user fields
+ foreach ( $defaultGadgets as $default ) {
+ $html = Html::openElement( 'tr', [] );
+ $html .= Html::element( 'td', [], $default );
+ $html .= Html::element( 'td', [], $this->msg( 'gadgetusage-default' )->text() );
+ if ( $this->activeUsers ) {
+ $html .= Html::element( 'td', [], $this->msg( 'gadgetusage-default' )->text() );
+ }
+ $html .= Html::closeElement( 'tr' );
+ $out->addHTML( $html );
+ }
+ foreach ( $res as $row ) {
+ // Remove the 'gadget-' part of the result string and compare if it's present
+ // in $defaultGadgets, if not we format it and add it to the output
+ if ( !in_array( substr( $row->title, 7 ), $defaultGadgets ) ) {
+ // Only pick gadgets which are in the list $gadgetIds to make sure they exist
+ if ( in_array( substr( $row->title, 7 ), $gadgetIds ) ) {
+ $line = $this->formatResult( $skin, $row );
+ if ( $line ) {
+ $out->addHTML( $line );
+ }
+ }
+ }
+ }
+ // Close table element
+ $out->addHtml( Html::closeElement( 'table' ) );
+ } else {
+ $out->addHtml(
+ $this->msg( 'gadgetusage-noresults' )->parseAsBlock()
+ );
+ }
+ }
+
+ protected function getGroupName() {
+ return 'wiki';
+ }
+}
diff --git a/www/wiki/extensions/Gadgets/SpecialGadgets.php b/www/wiki/extensions/Gadgets/SpecialGadgets.php
new file mode 100644
index 00000000..6ddffef3
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/SpecialGadgets.php
@@ -0,0 +1,229 @@
+<?php
+/**
+ * Special:Gadgets, provides a preview of MediaWiki:Gadgets.
+ *
+ * @file
+ * @ingroup SpecialPage
+ * @author Daniel Kinzler, brightbyte.de
+ * @copyright © 2007 Daniel Kinzler
+ * @license GNU General Public License 2.0 or later
+ */
+
+class SpecialGadgets extends SpecialPage {
+ public function __construct() {
+ parent::__construct( 'Gadgets', '', true );
+ }
+
+ /**
+ * Main execution function
+ * @param array $par Parameters passed to the page
+ */
+ public function execute( $par ) {
+ $parts = explode( '/', $par );
+
+ if ( count( $parts ) == 2 && $parts[0] == 'export' ) {
+ $this->showExportForm( $parts[1] );
+ } else {
+ $this->showMainForm();
+ }
+ }
+
+ private function makeAnchor( $gadgetName ) {
+ return 'gadget-' . Sanitizer::escapeId( $gadgetName, [ 'noninitial' ] );
+ }
+
+ /**
+ * Displays form showing the list of installed gadgets
+ */
+ public function showMainForm() {
+ global $wgContLang;
+
+ $output = $this->getOutput();
+ $this->setHeaders();
+ $output->setPageTitle( $this->msg( 'gadgets-title' ) );
+ $output->addWikiMsg( 'gadgets-pagetext' );
+
+ $gadgets = GadgetRepo::singleton()->getStructuredList();
+ if ( !$gadgets ) {
+ return;
+ }
+
+ $output->disallowUserJs();
+ $lang = $this->getLanguage();
+ $langSuffix = "";
+ if ( $lang->getCode() != $wgContLang->getCode() ) {
+ $langSuffix = "/" . $lang->getCode();
+ }
+
+ $listOpen = false;
+
+ $editInterfaceMessage = $this->getUser()->isAllowed( 'editinterface' )
+ ? 'edit'
+ : 'viewsource';
+
+ $linkRenderer = $this->getLinkRenderer();
+ foreach ( $gadgets as $section => $entries ) {
+ if ( $section !== false && $section !== '' ) {
+ $t = Title::makeTitleSafe( NS_MEDIAWIKI, "Gadget-section-$section$langSuffix" );
+ $lnkTarget = $t
+ ? $linkRenderer->makeLink( $t, $this->msg( $editInterfaceMessage )->text(),
+ [], [ 'action' => 'edit' ] )
+ : htmlspecialchars( $section );
+ $lnk = "&#160; &#160; [$lnkTarget]";
+
+ $ttext = $this->msg( "gadget-section-$section" )->parse();
+
+ if ( $listOpen ) {
+ $output->addHTML( Xml::closeElement( 'ul' ) . "\n" );
+ $listOpen = false;
+ }
+
+ $output->addHTML( Html::rawElement( 'h2', [], $ttext . $lnk ) . "\n" );
+ }
+
+ /**
+ * @var $gadget Gadget
+ */
+ foreach ( $entries as $gadget ) {
+ $name = $gadget->getName();
+ $t = Title::makeTitleSafe( NS_MEDIAWIKI, "Gadget-{$name}$langSuffix" );
+ if ( !$t ) {
+ continue;
+ }
+
+ $links = [];
+ $links[] = $linkRenderer->makeLink(
+ $t,
+ $this->msg( $editInterfaceMessage )->text(),
+ [],
+ [ 'action' => 'edit' ]
+ );
+ $links[] = $linkRenderer->makeLink(
+ $this->getPageTitle( "export/{$name}" ),
+ $this->msg( 'gadgets-export' )->text()
+ );
+
+ $ttext = $this->msg( "gadget-{$name}" )->parse();
+
+ if ( !$listOpen ) {
+ $listOpen = true;
+ $output->addHTML( Xml::openElement( 'ul' ) );
+ }
+
+ $actions = '&#160;&#160;' .
+ $this->msg( 'parentheses' )->rawParams( $lang->pipeList( $links ) )->escaped();
+ $output->addHTML(
+ Xml::openElement( 'li', [ 'id' => $this->makeAnchor( $name ) ] ) .
+ $ttext . $actions . "<br />" .
+ $this->msg( 'gadgets-uses' )->escaped() .
+ $this->msg( 'colon-separator' )->escaped()
+ );
+
+ $lnk = [];
+ foreach ( $gadget->getPeers() as $peer ) {
+ $lnk[] = Html::element(
+ 'a',
+ [ 'href' => '#' . $this->makeAnchor( $peer ) ],
+ $peer
+ );
+ }
+ foreach ( $gadget->getScriptsAndStyles() as $codePage ) {
+ $t = Title::newFromText( $codePage );
+
+ if ( !$t ) {
+ continue;
+ }
+
+ $lnk[] = $linkRenderer->makeLink( $t, $t->getText() );
+ }
+ $output->addHTML( $lang->commaList( $lnk ) );
+ if ( $gadget->getLegacyScripts() ) {
+ $output->addHTML( '<br />' . Html::rawElement(
+ 'span',
+ [ 'class' => 'mw-gadget-legacy errorbox' ],
+ $this->msg( 'gadgets-legacy' )->parse()
+ ) );
+ }
+
+ $rights = [];
+ foreach ( $gadget->getRequiredRights() as $right ) {
+ $rights[] = '* ' . $this->msg( "right-$right" )->plain();
+ }
+ if ( count( $rights ) ) {
+ $output->addHTML( '<br />' .
+ $this->msg( 'gadgets-required-rights', implode( "\n", $rights ), count( $rights ) )->parse()
+ );
+ }
+
+ $requiredSkins = $gadget->getRequiredSkins();
+ // $requiredSkins can be an array or true (if all skins are supported)
+ if ( is_array( $requiredSkins ) ) {
+ $skins = [];
+ $validskins = Skin::getSkinNames();
+ foreach ( $requiredSkins as $skinid ) {
+ if ( isset( $validskins[$skinid] ) ) {
+ $skins[] = $this->msg( "skinname-$skinid" )->plain();
+ } else {
+ $skins[] = $skinid;
+ }
+ }
+ if ( count( $skins ) ) {
+ $output->addHTML(
+ '<br />' .
+ $this->msg( 'gadgets-required-skins', $lang->commaList( $skins ) )
+ ->numParams( count( $skins ) )->parse()
+ );
+ }
+ }
+
+ if ( $gadget->isOnByDefault() ) {
+ $output->addHTML( '<br />' . $this->msg( 'gadgets-default' )->parse() );
+ }
+
+ $output->addHTML( Xml::closeElement( 'li' ) . "\n" );
+ }
+ }
+
+ if ( $listOpen ) {
+ $output->addHTML( Xml::closeElement( 'ul' ) . "\n" );
+ }
+ }
+
+ /**
+ * Exports a gadget with its dependencies in a serialized form
+ * @param string $gadget Name of gadget to export
+ */
+ public function showExportForm( $gadget ) {
+ global $wgScript;
+
+ $output = $this->getOutput();
+ try {
+ $g = GadgetRepo::singleton()->getGadget( $gadget );
+ } catch ( InvalidArgumentException $e ) {
+ $output->showErrorPage( 'error', 'gadgets-not-found', [ $gadget ] );
+ return;
+ }
+
+ $this->setHeaders();
+ $output->setPageTitle( $this->msg( 'gadgets-export-title' ) );
+ $output->addWikiMsg( 'gadgets-export-text', $gadget, $g->getDefinition() );
+
+ $exportList = "MediaWiki:gadget-$gadget\n";
+ foreach ( $g->getScriptsAndStyles() as $page ) {
+ $exportList .= "$page\n";
+ }
+
+ $output->addHTML( Html::openElement( 'form', [ 'method' => 'get', 'action' => $wgScript ] )
+ . Html::hidden( 'title', SpecialPage::getTitleFor( 'Export' )->getPrefixedDBKey() )
+ . Html::hidden( 'pages', $exportList )
+ . Html::hidden( 'wpDownload', '1' )
+ . Html::hidden( 'templates', '1' )
+ . Xml::submitButton( $this->msg( 'gadgets-export-download' )->text() )
+ . Html::closeElement( 'form' )
+ );
+ }
+
+ protected function getGroupName() {
+ return 'wiki';
+ }
+}
diff --git a/www/wiki/extensions/Gadgets/api/ApiQueryGadgetCategories.php b/www/wiki/extensions/Gadgets/api/ApiQueryGadgetCategories.php
new file mode 100644
index 00000000..489f6650
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/api/ApiQueryGadgetCategories.php
@@ -0,0 +1,110 @@
+<?php
+/**
+ * Created on 16 April 2011
+ * API for Gadgets extension
+ *
+ * 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
+ */
+
+class ApiQueryGadgetCategories extends ApiQueryBase {
+ /**
+ * @var array
+ */
+ private $props;
+
+ /**
+ * @var array|bool
+ */
+ private $neededNames;
+
+ public function __construct( ApiQuery $queryModule, $moduleName ) {
+ parent::__construct( $queryModule, $moduleName, 'gc' );
+ }
+
+ public function execute() {
+ $params = $this->extractRequestParams();
+ $this->props = array_flip( $params['prop'] );
+ $this->neededNames = isset( $params['names'] )
+ ? array_flip( $params['names'] )
+ : false;
+
+ $this->getMain()->setCacheMode( 'public' );
+
+ $this->getList();
+ }
+
+ private function getList() {
+ $data = [];
+ $result = $this->getResult();
+ $gadgets = GadgetRepo::singleton()->getStructuredList();
+
+ if ( $gadgets ) {
+ foreach ( $gadgets as $category => $list ) {
+ if ( !$this->neededNames || isset( $this->neededNames[$category] ) ) {
+ $row = [];
+ if ( isset( $this->props['name'] ) ) {
+ $row['name'] = $category;
+ }
+
+ if ( $category !== "" ) {
+ if ( isset( $this->props['title'] ) ) {
+ $row['desc'] = $this->msg( "gadget-section-$category" )->parse();
+ }
+ }
+
+ if ( isset( $this->props['members'] ) ) {
+ $row['members'] = count( $list );
+ }
+
+ $data[] = $row;
+ }
+ }
+ }
+ $result->setIndexedTagName( $data, 'category' );
+ $result->addValue( 'query', $this->getModuleName(), $data );
+ }
+
+ public function getAllowedParams() {
+ return [
+ 'prop' => [
+ ApiBase::PARAM_DFLT => 'name',
+ ApiBase::PARAM_ISMULTI => true,
+ ApiBase::PARAM_TYPE => [
+ 'name',
+ 'title',
+ 'members',
+ ],
+ ],
+ 'names' => [
+ ApiBase::PARAM_TYPE => 'string',
+ ApiBase::PARAM_ISMULTI => true,
+ ],
+ ];
+ }
+
+ /**
+ * @see ApiBase::getExamplesMessages()
+ * @return array
+ */
+ protected function getExamplesMessages() {
+ return [
+ 'action=query&list=gadgetcategories'
+ => 'apihelp-query+gadgetcategories-example-1',
+ 'action=query&list=gadgetcategories&gcnames=foo|bar&gcprop=name|title|members'
+ => 'apihelp-query+gadgetcategories-example-2',
+ ];
+ }
+}
diff --git a/www/wiki/extensions/Gadgets/api/ApiQueryGadgets.php b/www/wiki/extensions/Gadgets/api/ApiQueryGadgets.php
new file mode 100644
index 00000000..bd20a76f
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/api/ApiQueryGadgets.php
@@ -0,0 +1,231 @@
+<?php
+/**
+ * Created on 15 April 2011
+ * API for Gadgets extension
+ *
+ * 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
+ */
+
+class ApiQueryGadgets extends ApiQueryBase {
+ /**
+ * @var array
+ */
+ private $props;
+
+ /**
+ * @var array|bool
+ */
+ private $categories;
+
+ /**
+ * @var array|bool
+ */
+ private $neededIds;
+
+ /**
+ * @var bool
+ */
+ private $listAllowed;
+
+ /**
+ * @var bool
+ */
+ private $listEnabled;
+
+ public function __construct( ApiQuery $queryModule, $moduleName ) {
+ parent::__construct( $queryModule, $moduleName, 'ga' );
+ }
+
+ public function execute() {
+ $params = $this->extractRequestParams();
+ $this->props = array_flip( $params['prop'] );
+ $this->categories = isset( $params['categories'] )
+ ? array_flip( $params['categories'] )
+ : false;
+ $this->neededIds = isset( $params['ids'] )
+ ? array_flip( $params['ids'] )
+ : false;
+ $this->listAllowed = isset( $params['allowedonly'] ) && $params['allowedonly'];
+ $this->listEnabled = isset( $params['enabledonly'] ) && $params['enabledonly'];
+
+ $this->getMain()->setCacheMode( $this->listAllowed || $this->listEnabled
+ ? 'anon-public-user-private' : 'public' );
+
+ $this->applyList( $this->getList() );
+ }
+
+ /**
+ * @return array
+ */
+ private function getList() {
+ $gadgets = GadgetRepo::singleton()->getStructuredList();
+
+ if ( $gadgets === false ) {
+ return [];
+ }
+
+ $result = [];
+ foreach ( $gadgets as $category => $list ) {
+ if ( $this->categories && !isset( $this->categories[$category] ) ) {
+ continue;
+ }
+
+ foreach ( $list as $g ) {
+ if ( $this->isNeeded( $g ) ) {
+ $result[] = $g;
+ }
+ }
+ }
+ return $result;
+ }
+
+ /**
+ * @param array $gadgets
+ */
+ private function applyList( $gadgets ) {
+ $data = [];
+ $result = $this->getResult();
+
+ /**
+ * @var $g Gadget
+ */
+ foreach ( $gadgets as $g ) {
+ $row = [];
+ if ( isset( $this->props['id'] ) ) {
+ $row['id'] = $g->getName();
+ }
+
+ if ( isset( $this->props['metadata'] ) ) {
+ $row['metadata'] = $this->fakeMetadata( $g );
+ $this->setIndexedTagNameForMetadata( $row['metadata'] );
+ }
+
+ if ( isset( $this->props['desc'] ) ) {
+ $row['desc'] = $g->getDescription();
+ }
+
+ $data[] = $row;
+ }
+
+ $result->setIndexedTagName( $data, 'gadget' );
+ $result->addValue( 'query', $this->getModuleName(), $data );
+ }
+
+ /**
+ * @param Gadget $gadget
+ *
+ * @return bool
+ */
+ private function isNeeded( Gadget $gadget ) {
+ $user = $this->getUser();
+
+ return ( $this->neededIds === false || isset( $this->neededIds[$gadget->getName()] ) )
+ && ( !$this->listAllowed || $gadget->isAllowed( $user ) )
+ && ( !$this->listEnabled || $gadget->isEnabled( $user ) );
+ }
+
+ /**
+ * @param Gadget $g
+ * @return array
+ */
+ private function fakeMetadata( Gadget $g ) {
+ return [
+ 'settings' => [
+ 'rights' => $g->getRequiredRights(),
+ 'skins' => $g->getRequiredSkins(),
+ 'default' => $g->isOnByDefault(),
+ 'hidden' => $g->isHidden(),
+ 'shared' => false,
+ 'category' => $g->getCategory(),
+ 'legacyscripts' => (bool)$g->getLegacyScripts(),
+ ],
+ 'module' => [
+ 'scripts' => $g->getScripts(),
+ 'styles' => $g->getStyles(),
+ 'dependencies' => $g->getDependencies(),
+ 'peers' => $g->getPeers(),
+ 'messages' => $g->getMessages(),
+ ]
+ ];
+ }
+
+ private function setIndexedTagNameForMetadata( &$metadata ) {
+ static $tagNames = [
+ 'rights' => 'right',
+ 'skins' => 'skin',
+ 'scripts' => 'script',
+ 'styles' => 'style',
+ 'dependencies' => 'dependency',
+ 'peers' => 'peer',
+ 'messages' => 'message',
+ ];
+
+ $result = $this->getResult();
+ foreach ( $metadata as &$data ) {
+ foreach ( $data as $key => &$value ) {
+ if ( is_array( $value ) ) {
+ $tag = isset( $tagNames[$key] ) ? $tagNames[$key] : $key;
+ $result->setIndexedTagName( $value, $tag );
+ }
+ }
+ }
+ }
+
+ public function getAllowedParams() {
+ return [
+ 'prop' => [
+ ApiBase::PARAM_DFLT => 'id|metadata',
+ ApiBase::PARAM_ISMULTI => true,
+ ApiBase::PARAM_TYPE => [
+ 'id',
+ 'metadata',
+ 'desc',
+ ],
+ ],
+ 'categories' => [
+ ApiBase::PARAM_ISMULTI => true,
+ ApiBase::PARAM_TYPE => 'string',
+ ],
+ 'ids' => [
+ ApiBase::PARAM_TYPE => 'string',
+ ApiBase::PARAM_ISMULTI => true,
+ ],
+ 'allowedonly' => false,
+ 'enabledonly' => false,
+ ];
+ }
+
+ /**
+ * @see ApiBase::getExamplesMessages()
+ * @return array
+ */
+ protected function getExamplesMessages() {
+ $params = $this->getAllowedParams();
+ $allProps = implode( '|', $params['prop'][ApiBase::PARAM_TYPE] );
+ return [
+ 'action=query&list=gadgets&gaprop=id|desc'
+ => 'apihelp-query+gadgets-example-1',
+ "action=query&list=gadgets&gaprop=$allProps"
+ => 'apihelp-query+gadgets-example-2',
+ 'action=query&list=gadgets&gacategories=foo'
+ => 'apihelp-query+gadgets-example-3',
+ 'action=query&list=gadgets&gaids=foo|bar&gaprop=id|desc|metadata'
+ => 'apihelp-query+gadgets-example-4',
+ 'action=query&list=gadgets&gaenabledonly'
+ => 'apihelp-query+gadgets-example-5',
+ ];
+ }
+}
diff --git a/www/wiki/extensions/Gadgets/composer.json b/www/wiki/extensions/Gadgets/composer.json
new file mode 100644
index 00000000..b822010c
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/composer.json
@@ -0,0 +1,23 @@
+{
+ "require-dev": {
+ "jakub-onderka/php-parallel-lint": "1.0.0",
+ "jakub-onderka/php-console-highlighter": "0.3.2",
+ "mediawiki/mediawiki-codesniffer": "18.0.0",
+ "mediawiki/minus-x": "0.3.1",
+ "mediawiki/mediawiki-phan-config": "0.2.0"
+ },
+ "scripts": {
+ "fix": [
+ "phpcbf",
+ "minus-x fix ."
+ ],
+ "test": [
+ "parallel-lint . --exclude node_modules --exclude vendor",
+ "phpcs -p -s",
+ "minus-x check ."
+ ]
+ },
+ "extra": {
+ "phan-taint-check-plugin": "1.2.0"
+ }
+}
diff --git a/www/wiki/extensions/Gadgets/extension.json b/www/wiki/extensions/Gadgets/extension.json
new file mode 100644
index 00000000..141f9eb7
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/extension.json
@@ -0,0 +1,121 @@
+{
+ "name": "Gadgets",
+ "author": [
+ "Daniel Kinzler",
+ "Max Semenik"
+ ],
+ "url": "https://www.mediawiki.org/wiki/Extension:Gadgets",
+ "descriptionmsg": "gadgets-desc",
+ "license-name": "GPL-2.0-or-later",
+ "requires": {
+ "MediaWiki": ">= 1.28.0"
+ },
+ "type": "other",
+ "namespaces": [
+ {
+ "id": 2300,
+ "constant": "NS_GADGET",
+ "name": "Gadget",
+ "protection": "gadgets-edit"
+ },
+ {
+ "id": 2301,
+ "constant": "NS_GADGET_TALK",
+ "name": "Gadget_talk"
+ },
+ {
+ "id": 2302,
+ "constant": "NS_GADGET_DEFINITION",
+ "name": "Gadget_definition",
+ "protection": "gadgets-definition-edit",
+ "capitallinkoverride": false,
+ "defaultcontentmodel": "GadgetDefinition"
+ },
+ {
+ "id": 2303,
+ "constant": "NS_GADGET_DEFINITION_TALK",
+ "name": "Gadget_definition_talk"
+ }
+ ],
+ "ContentHandlers": {
+ "GadgetDefinition": "GadgetDefinitionContentHandler"
+ },
+ "AvailableRights": [
+ "gadgets-edit",
+ "gadgets-definition-edit"
+ ],
+ "SpecialPages": {
+ "Gadgets": "SpecialGadgets",
+ "GadgetUsage": "SpecialGadgetUsage"
+ },
+ "APIListModules": {
+ "gadgetcategories": "ApiQueryGadgetCategories",
+ "gadgets": "ApiQueryGadgets"
+ },
+ "MessagesDirs": {
+ "Gadgets": [
+ "i18n"
+ ]
+ },
+ "ExtensionMessagesFiles": {
+ "GadgetsAlias": "Gadgets.alias.php",
+ "GadgetsNamespaces": "Gadgets.namespaces.php"
+ },
+ "AutoloadClasses": {
+ "ApiQueryGadgetCategories": "includes/api/ApiQueryGadgetCategories.php",
+ "ApiQueryGadgets": "includes/api/ApiQueryGadgets.php",
+ "Gadget": "includes/Gadget.php",
+ "GadgetHooks": "includes/GadgetHooks.php",
+ "GadgetResourceLoaderModule": "includes/GadgetResourceLoaderModule.php",
+ "SpecialGadgets": "includes/SpecialGadgets.php",
+ "SpecialGadgetUsage": "includes/SpecialGadgetUsage.php",
+ "GadgetRepo": "includes/GadgetRepo.php",
+ "GadgetDefinitionNamespaceRepo": "includes/GadgetDefinitionNamespaceRepo.php",
+ "MediaWikiGadgetsDefinitionRepo": "includes/MediaWikiGadgetsDefinitionRepo.php",
+ "GadgetDefinitionContent": "includes/content/GadgetDefinitionContent.php",
+ "GadgetDefinitionContentHandler": "includes/content/GadgetDefinitionContentHandler.php",
+ "GadgetDefinitionValidator": "includes/content/GadgetDefinitionValidator.php",
+ "GadgetDefinitionSecondaryDataUpdate": "includes/content/GadgetDefinitionSecondaryDataUpdate.php",
+ "GadgetDefinitionDeletionUpdate": "includes/content/GadgetDefinitionDeletionUpdate.php"
+ },
+ "Hooks": {
+ "PageContentSaveComplete": [
+ "GadgetHooks::onPageContentSaveComplete"
+ ],
+ "BeforePageDisplay": [
+ "GadgetHooks::beforePageDisplay"
+ ],
+ "CodeEditorGetPageLanguage": [
+ "GadgetHooks::onCodeEditorGetPageLanguage"
+ ],
+ "ContentHandlerDefaultModelFor": [
+ "GadgetHooks::onContentHandlerDefaultModelFor"
+ ],
+ "EditFilterMergedContent": [
+ "GadgetHooks::onEditFilterMergedContent"
+ ],
+ "PageContentInsertComplete": [
+ "GadgetHooks::onPageContentInsertComplete"
+ ],
+ "UserGetDefaultOptions": [
+ "GadgetHooks::userGetDefaultOptions"
+ ],
+ "GetPreferences": [
+ "GadgetHooks::getPreferences"
+ ],
+ "ResourceLoaderRegisterModules": [
+ "GadgetHooks::registerModules"
+ ],
+ "wgQueryPages": [
+ "GadgetHooks::onwgQueryPages"
+ ],
+ "DeleteUnknownPreferences": [
+ "GadgetHooks::onDeleteUnknownPreferences"
+ ]
+ },
+ "config": {
+ "GadgetsRepoClass": "MediaWikiGadgetsDefinitionRepo",
+ "SpecialGadgetUsageActiveUsers": true
+ },
+ "manifest_version": 1
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/ace.json b/www/wiki/extensions/Gadgets/i18n/ace.json
new file mode 100644
index 00000000..94b305d7
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/ace.json
@@ -0,0 +1,19 @@
+{
+ "@metadata": {
+ "authors": [
+ "Si Gam Acèh"
+ ]
+ },
+ "gadgets-desc": "Peujeuet ureueng nguy geupileh [[Special:Gadgets|peukakaih CSS ngon JavaScript]] rot [[Special:Preferences#mw-prefsection-gadgets|neuato]]geuh",
+ "prefs-gadgets": "Alat",
+ "gadgets-prefstext": "Di yup nyoe nakeuh dapeuta alat kusuih nyang jeuet neupeuudep keu akun droeneuh. Ban dum alat nyan ladom jinguy meubasis JavaScript nyankeuh jeuet Droeneuh suwah neupeuudep JavaScript bak alat buka web droeneuh mangat jeuet neupeujak. Neupeurati meunyo ban dum alat nyan hana peungaroh bak on neuato nyoe.\n\nNeupeyrati cit meunyo alat kusuih nyoe bukonkeuh beunagi nibak alat leumiek MediaWiki ngon kayem geupeukeumang ngon geupeulahra le ureueng nguy bak wiki droeneuh mantong. Ureueng uroh sinan jeuet geuandam alat nyang na rot [[MediaWiki:Gadgets-definition]] ngon [[Special:Gadgets]].",
+ "gadgets": "Alat",
+ "gadgets-title": "Alat",
+ "gadgets-uses": "Neunguy",
+ "gadgets-required-rights": "Peureulee {{PLURAL:$2|hak|hak-hak}} nyoe:\n$1",
+ "gadgets-default": "Peujeuet keu ban dum ureueng meunurot neume",
+ "gadgets-export": "Ekspor",
+ "gadgets-export-title": "Ekspor alat",
+ "gadgets-not-found": "Alat \"$1\" hana geuteumeung.",
+ "gadgets-export-download": "Pasoe"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/af.json b/www/wiki/extensions/Gadgets/i18n/af.json
new file mode 100644
index 00000000..a4831368
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/af.json
@@ -0,0 +1,17 @@
+{
+ "@metadata": {
+ "authors": [
+ "Anrie",
+ "Naudefj"
+ ]
+ },
+ "gadgets-desc": "Laat gebruikers toe om [[Special:Gadgets|CSS en JavaScripts]] geriewe te aktiveer in hulle [[Special:Preferences#mw-prefsection-gadgets|voorkeure]]",
+ "prefs-gadgets": "Geriewe",
+ "gadgets-prefstext": "Hieronder is 'n lys van spesiale geriewe wat u kan aktiveer.\nHierdie geriewe maak hoofsaaklik van JavaScript gebruik. Dus moet JavaScript in u webblaaier geaktiveer wees.\nHierdie geriewe het geen invloed op hoe hierdie voorkeurbladsy vertoon nie.\n\nHierdie geriewe is nie deel van die MediaWiki-sagteware nie en word gewoonlik deur gebruikers op u tuiswiki ontwikkel en onderhou.\nPlaaslike administrateurs kan die beskikbare geriewe by [[MediaWiki:Gadgets-definition|definisies]] en [[Special:Gadgets|beskrywings]] wysig.",
+ "gadgets": "Geriewe",
+ "gadgets-title": "Geriewe",
+ "gadgets-pagetext": "Hieronder is 'n lys van spesiale geriewe wat gebruikers deur hulle [[Special:Preferences#mw-prefsection-gadgets|voorkeure]] kan aktiveer, soos gedefinieer in [[MediaWiki:Gadgets-definition]].\nDie oorsig bied maklike toegang tot die stelselboodskapblaaie wat elke gerief se beskrywing en kode wys.",
+ "gadgets-uses": "Gebruik",
+ "gadgets-export": "Eksporteer",
+ "gadgets-export-download": "Laai af"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/ais.json b/www/wiki/extensions/Gadgets/i18n/ais.json
new file mode 100644
index 00000000..3df41746
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/ais.json
@@ -0,0 +1,47 @@
+{
+ "@metadata": {
+ "authors": [
+ "Bunukwiki",
+ "Benel"
+ ]
+ },
+ "gadgets-desc": "nay misaungayay kapah tu i [[Special:Preferences#mw-prefsection-gadgets|setin tu kanamuhan]] pakuniza misanga’ [[Special:Gadgets|CSS atu JavaScript a adidi’ay sakaluk]]",
+ "gadgets-prefstext": "isasa’ pasilsil kapah i canghaw nu misu miwawah a sazumaay adidi’ay sakaluk.\nuyniyay adidi’ay sakaluk kayadah pisaungay JavaScript patizeng, sisa saazihay-sakaluk kanca miwawah JavaScript kya taneng malecek misaungay.\nazihen, adidi’ay sakaluk kanca miliyas setin tu kanamuhan kasabelih satu izaw ku laheci.\n\nnaamahiza piazihen, uyniyay sazumaay adidi’ay sakaluk caay mikitinay nu MediaWiki a liyad, sawsawni nay itiniay a Wiki a misaungayay patizeng atu midiput. i paykakacawan mikuwanay kapah tu mikawaway-kalumyiti adidi’ay sakaluk a [[MediaWiki:Gadgets-definition|satetek]] atu [[Special:Gadgets| myawsu]]. cacacacay adidi’ay sakaluk saungay sulyang kapah tu ilabu’ nu [[Special:GadgetUsage|sausi]] matepa",
+ "gadgetusage": "adidi’ay sakaluk pisaungay sausi",
+ "gadgetusage-usercount": "misaungayay nikayadah",
+ "gadgetusage-noresults": "caay katepa adidi’ay sakaluk.",
+ "gadgetusage-intro": "tina sapat nu sulit buhci tu kamu tina wiki miwawah adidi’ay sakaluk a situngusay nikayadah. i nacila {{PLURAL:$1|cacay demiad|$1 demiad}}namisanga’ mikawaway-kalumyiti a situngusay apalatanitik. tina liseto caay yamalyilu pataayaw tu kawaw sacahamin tademaw miwawah amin tu adidi’ay sakaluk, liyad adidi’ay sakaluk hakay caaytu misaungay satu.",
+ "gadgetusage-activeusers": "saungay nu binawlan a misaungayay",
+ "gadgetusage-default": "pataayaw tu kawaw",
+ "gadgets-title": "adidi’ay a sakaluk",
+ "gadgets-pagetext": "isasa’ pasilsil misaungayay kapah tu itiza [[Special:Preferences#mw-prefsection-gadgets|setin tu kanamuhan kasabelih]] miwawahay a sazumaay adidi’ay sakaluk, tina piazihan-tu-sulit i [[MediaWiki:Gadgets-definition| satetek]] ma satetek.\n\ntina kasabelih taneng kisu misuped-miala satetek adidi’ay sakaluk sapuelac atu cengsema-kodo a sisetyimo palatuh kasabelih.",
+ "gadgets-uses": "misaungayay",
+ "gadgets-required-rights": "maydih isasa’ay a {{PLURAL:$2|tungus}}:\n\n$1",
+ "gadgets-required-skins": "kapah misanga’ i{{PLURAL:$2|$1 nuhekalan|cudad i sasa nuhekalan: $1}}.",
+ "gadgets-default": "sacahamin tademaw pataayaw tu kawaw miwawah",
+ "gadgets-legacy": "caay pacumud adidi’ay sakaluk, papisaungay ResourceLoader.\n([https://www.mediawiki.org/wiki/ResourceLoader/Migration_guide_(users) mizateng tu yadah])",
+ "gadgets-export": "patahkal",
+ "gadgets-export-title": "patahkal adidi’ay a sakaluk",
+ "gadgets-not-found": "inayi’ adidi’ay sakaluk \"$1\".",
+ "gadgets-export-text": "apatahkal $1 adidi’ay sakaluk, pisapecec \"{{int:gadgets-export-download}}\" pipenecan, atu misuped patasasa’ay a tangan, taayaw papatuzu’an Wiki a Special:Import zumasatu apatapabawan。izikuz sa isasa’ay a sulit pacunus ta MediaWiki:Gadgets-definition kasabelih:\n<pre>$2</pre>\nkanca kisu sipapatuzu’an Wiki a tatengaay a tungus (yamalyilu mikawaway-kalumyiti sisetyimo palatuh a tungus), atu kanca miwawah micaliw tu tangan patapabaw pacumuday a sasahicaan.",
+ "apihelp-query+gadgetcategories-description": "maminay tu adidi’ay sakaluk kakuniza piazihan-tu-sulit.",
+ "apihelp-query+gadgetcategories-param-prop": "amiala u canan adidi’ay sakaluk kakuniza cesyun:\n;name: labuay liyad malecaday a kalungangan\n;title: kakuniza satangahan\n;members: ibalu’ nu kakuniza nikayadah nu adidi’ay a sakaluk.",
+ "apihelp-query+gadgetcategories-param-names": "amaala kakuniza kalungangan.",
+ "apihelp-query+gadgetcategories-example-1": "maala izaway a adidi’ay sakaluk kakuniza piazihan-tu-sulit",
+ "apihelp-query+gadgetcategories-example-2": "maala sacahamin mahizaay kakuniza kalungangan ku \"foo\" atu \"bar\" a cesyun",
+ "apihelp-query+gadgets-description": "maminay tu iniay wiki masaungayay adidi’ay sakaluk piazihan-tu-sulit.",
+ "apihelp-query+gadgets-param-prop": "amiala canan adidi’ay sakaluk cesyun:\n;id: labu adidi’ay sakaluk ID.\n;metadata: adidi’ay sakaluk metadata.\n;desc: adidi’ay sakaluk sapuelac miliyaw ta HTML kese (hakay sasutili’ay haymaw, i maydih a dada’ misaungay).",
+ "apihelp-query+gadgets-param-categories": "nay tina kakuniza maala adidi’ay sakaluk.",
+ "apihelp-query+gadgets-param-ids": "amiala adidi’ay sakaluk a ID.",
+ "apihelp-query+gadgets-param-allowedonly": "pasilsil a cacay nuayzaay a misaungayay taneng pisaungay a adidi’ay sakaluk.",
+ "apihelp-query+gadgets-param-enabledonly": "pasilsil a cacaynay ayzaay misaungayay miwawah a adidi’ay sakaluk.",
+ "apihelp-query+gadgets-example-1": "maala adidi’ay sakaluk atu kya sapuelac piazihan-tu-sulit",
+ "apihelp-query+gadgets-example-2": "maala adidi’ay sakaluk aut kya sacahamin susin piazihan-tu-sulit",
+ "apihelp-query+gadgets-example-3": "maala tungusay nu kakuniza \"foo\" a adidi’ay sakaluk piazihan-tu-sulit",
+ "apihelp-query+gadgets-example-4": "miala mahizaay adidi’ay sakaluk \"foo\" atu \"bar\" a cesyun",
+ "apihelp-query+gadgets-example-5": "maala ayzaay a misaungayay mitekaay a piazihan-tu-sulit nu adidi’ay sakaluk-silsil",
+ "right-gadgets-edit": "mikawaway-kalumyiti adidi’ay sakaluk a JavaScript atu CSS kasabelih",
+ "action-gadgets-edit": "mikawaway-kalumyiti tina adidi’ay sakaluk a JavaScript saca CSS kasabelih",
+ "right-gadgets-definition-edit": "mikawaway-kalumyiti adidiay sakaluk satetek",
+ "action-gadgets-definition-edit": "mikawaway-kalumyiti tina pasaheci nu adidi’ay sakaluk"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/am.json b/www/wiki/extensions/Gadgets/i18n/am.json
new file mode 100644
index 00000000..e67e778c
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/am.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "Codex Sinaiticus"
+ ]
+ },
+ "prefs-gadgets": "ተጨማሪ መሣርያዎች",
+ "gadgets-prefstext": "ከዚህ ታች አንዳንድ ተጨማሪ መሣርያ ወይም መኪናነት በዝርዝር ሊገኝ ይችላል። እነዚህ በደንብ እንዲሠሩ በኮምፒውተርዎ ላይ ጃቫ-ስክሪፕት እንዲኖር አስፈላጊነት ነው።\n\nየዚህ ዊኪ መጋቢዎች [[MediaWiki:Gadgets-definition]]\nእና [[Special:Gadgets]] በመጠቀም አዲስ መሣርያ ሊጨምሩ ይቻላል።",
+ "gadgets": "ተጨማሪ መሣርያዎች",
+ "gadgets-title": "ተጨማሪ መሣርያዎች",
+ "gadgets-pagetext": "ተጨማሪ መሣርያዎች ወይም መኪናዎች በየዊኪ ፕሮዤ የለያያሉ።\n\nተጨማሪ መሣሪያዎች ለማግኘት፣ ወደ [[Special:Preferences#mw-prefsection-gadgets|ምርጫዎች]] ይሂዱ።\n\nየዚህ ገጽ መራጃ በተለይ ለመጋቢዎችና አስተዳዳሪዎች ይጠቅማል።\n\nበዚህ {{SITENAME}} የሚገኙት ተቸማሪ መሣርያዎች እነኚህ ናቸው፦",
+ "gadgets-uses": "የተጠቀመው ጃቫ-ስክሪፕት"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/an.json b/www/wiki/extensions/Gadgets/i18n/an.json
new file mode 100644
index 00000000..7186a90a
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/an.json
@@ -0,0 +1,22 @@
+{
+ "@metadata": {
+ "authors": [
+ "Juanpabl"
+ ]
+ },
+ "gadgets-desc": "Deixa que os usuario seleccionen os [[Special:Gadgets|gadgets de CSS y JavaScript]] que quieran en as suyas [[Special:Preferences#mw-prefsection-gadgets|preferencias]]",
+ "prefs-gadgets": "Trastes",
+ "gadgets-prefstext": "Contino ye una lista de trastes especials que puede fer servir en a suya cuenta.\nComo quasi totz istos trastes son feitos en JavaScript, caldrá que tienga activato JavaScript en o suyo navegador ta que vaigan bien. Pare cuenta que istos trastes no tendrán garra efeuto en ista pachina de preferencias.\n\nPare cuenta tamién que istos trastes especials no fan parte d'o software MediaWiki, y que gosan estar desenvolicatos y mantenitos por usuarios d'a suya wiki local.\nOs almenistradors locals pueden editar os trastes disponibles en as pachinas de [[MediaWiki:Gadgets-definition|definicions]] y de [[Special:Gadgets|descripcions]].",
+ "gadgets": "Trastes",
+ "gadgets-title": "Trastes",
+ "gadgets-pagetext": "Contino ye una lista de trastes especials que os usuarios pueden activar en a suya [[Special:Preferences#mw-prefsection-gadgets|pachina de preferencias]], como se define en a pachina de [[MediaWiki:Gadgets-definition|definicions]].\nIsta lista premite ir facilment t'as pachinas de mensaches d'o sistema que definen a descripción y o codigo de cada traste.",
+ "gadgets-uses": "Fa servir",
+ "gadgets-required-rights": "Requiere {{PLURAL:$2|o siguient dreito|os siguients dreitos}}:\n\n$1",
+ "gadgets-required-skins": "Disponible {{PLURAL:$2|en l'apariencia $1|en as siguients apariencias: $1}}.",
+ "gadgets-default": "Activau ta totz de traza predeterminada.",
+ "gadgets-export": "Exportar",
+ "gadgets-export-title": "Exportación de gadget",
+ "gadgets-not-found": "No s'ha trobau o gadget \"$1\".",
+ "gadgets-export-text": "Ta exportar o gadget $1, faiga click en o botón \"{{int:gadgets-export-download}}\", alce o fichero descargau,\nvaiga ta Special:Importar un wiki de destín y puye-lo. Dimpués adhiba lo siguient a MediaWiki:Gadgets-definition page:\n<pre>$2</pre>\nHas de tener permisos apropiaus en o wiki de destín (incluindo o dreito a editar mensaches de sistema) y importación dende fichers puyaus debe estar habilitau.",
+ "gadgets-export-download": "Descargar"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/ar.json b/www/wiki/extensions/Gadgets/i18n/ar.json
new file mode 100644
index 00000000..47477054
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/ar.json
@@ -0,0 +1,63 @@
+{
+ "@metadata": {
+ "authors": [
+ "Aiman titi",
+ "DRIHEM",
+ "Meno25",
+ "OsamaK",
+ "روخو",
+ "Abanima",
+ "Maroen1990",
+ "Mr. Ibrahem",
+ "ديفيد"
+ ]
+ },
+ "gadgets-desc": "يسمح للمستخدمين باختيار [[Special:Gadgets|إضافات سي إس إس وجافاسكريبت]] معدلة في [[Special:Preferences#mw-prefsection-gadgets|تفضيلاتهم]]",
+ "prefs-gadgets": "الإضافات",
+ "gadgets-prefstext": "بالأسفل قائمة بالإضافات الخاصة التي يمكن تفعيلها لحسابك.\nهذه الإضافات مبنية على الأغلب على جافا سكريبت، لكي تعمل الإضافات يجب أن يكون جافا سكريبت مفعل في متصفحك.\nلاحظ أن هذه الإضافات لن يكون لها أي تأثير على صفحة التفضيلات هذه.\n\nأيضا لاحظ أن هذه الإضافات الخاصة ليست جزءا من برنامج ميدياويكي، ويتم تطويرها وصيانتها عادة بواسطة مستخدمين في الويكي المحلي الخاص بك.\nالإداريون المحليون يمكنهم تعديل [[MediaWiki:Gadgets-definition|التعريفات]]\nو [[Special:Gadgets|الوصوفات]] للإضافات المتوفرة. عدد المستخدمين لكل إضافة في هذه الويكي معروضة في [[Special:GadgetUsage|إحصاءات استخدام الإضافات]].",
+ "gadgets": "إضافات",
+ "gadgetusage": "إحصاءات استخدام الإضافات",
+ "gadgetusage-gadget": "الإضافة",
+ "gadgetusage-usercount": "عدد المستخدمين",
+ "gadgetusage-noresults": "لم يتم العثور على الأدوات.",
+ "gadgetusage-intro": "هذا الجدول يعرض عدد المستخدمين الذين قاموا بتفعيل كل إضافة على هذه الويكي. المستخدم النشط هو شخص قام بتعديل في آخر {{PLURAL:$1|يوم|$1 أيام}}. هذه القائمة تستثني الإحصاءات للإضافات المفعلة للجميع افتراضيا وربما تشمل إضافات لم تعد متوفرة.",
+ "gadgetusage-intro-noactive": "هذا الجدول يعرض عدد المستخدمين الذين فعلوا كل إضافة على هذه الويكي. هذه القائمة تستبعد الإحصاءات للإضافات المفعلة للجميع افتراضيا وربما تتضمن إضافات لم تعد متوفرة.",
+ "gadgetusage-activeusers": "مستخدمين نشطين",
+ "gadgetusage-default": "افتراضي",
+ "gadgets-title": "إضافات",
+ "gadgets-pagetext": "بالأسفل قائمة بالإضافات الخاصة التي يمكن أن يقوم المستخدمون بتفعيلها على [[Special:Preferences#mw-prefsection-gadgets|صفحة تفضيلاتهم]]، معرفة بواسطة [[MediaWiki:Gadgets-definition|التعريفات]].\nهذا العرض يوفر دخولا سهلا لصفحات رسائل النظام التي تعرف وصف وكود كل إضافة.",
+ "gadgets-uses": "تستخدم",
+ "gadgets-required-rights": "يتطلب {{PLURAL:$2|الحق|الحقوق}} التالية:\n\n$1",
+ "gadgets-required-skins": "متاحة على {{PLURAL:$2|$1 skin|following skins: $1}}.",
+ "gadgets-default": "تمكين الجميع بشكل افتراضي.",
+ "gadgets-legacy": "الإضافة لم يتم تحميلها. من فضلك تحول إلى ResourceLoader. ([https://www.mediawiki.org/wiki/ResourceLoader/Migration_guide_(users) اعرف المزيد])",
+ "gadgets-export": "صدّر",
+ "gadgets-export-title": "أداة تصدير",
+ "gadgets-not-found": "الأداة \"$1\" لم يتم العثور عليها.",
+ "gadgets-export-text": "لتصدير $1 الأداة، انقر فوق \"{{int:gadgets-export-download}}\" زر حفظ الملف الذي تم تحميله،\n الذهاب إلى الخاص: الاستيراد على واجهة الويكي وتحميله. قم بإضافة ما يلي إلى MediaWiki:Gadgets-definition الصفحة:\n<pre>$2</pre>\nيجب أن يكون لديك الأذونات المناسبة على الويكي (بما في ذلك الحق في تحرير رسائل النظام) ويجب أن يتم تمكين الاستيراد من تحميل الملف.",
+ "gadgets-export-download": "نزّل",
+ "gadgets-validate-notset": "الخاصية <code>$1</code> ليست مضبوطة.",
+ "gadgets-validate-wrongtype": "الخاصية <code>$1</code> يجب أن تكون من النوع <code>$2</code> بدلا من <code>$3</code>.",
+ "apihelp-query+gadgetcategories-description": "يعطي قائمة بتصنيفات الإضافات.",
+ "apihelp-query+gadgetcategories-summary": "يرجع قائمة بتصنيفات الإضافات.",
+ "apihelp-query+gadgetcategories-param-prop": "ما هي معلومات تصنيف الإضافة للحصول عليها:\n;name:اسم التصنيف الداخلي.\n;title:عنوان التصنيف.\n;members:عدد الإضافات في التصنيف.",
+ "apihelp-query+gadgetcategories-param-names": "أسماء التصنيفات للاسترداد.",
+ "apihelp-query+gadgetcategories-example-1": "الحصول على قائمة بتصنيفات الإضافات الموجودة",
+ "apihelp-query+gadgetcategories-example-2": "الحصول على كل المعلومات حول التصنيفات المسماة \"foo\" و \"bar\"",
+ "apihelp-query+gadgets-description": "يعطي قائمة بالإضافات المستخدمة في هذا الويكي.",
+ "apihelp-query+gadgets-summary": "يرجع قائمة بالإضافات المستخدمة في هذة الويكي.",
+ "apihelp-query+gadgets-param-prop": "ما هي معلومات الإضافة للحصول عليها:\n;id:رقم الإضافة الداخلي.\n;metadata:بيانات الميتا الخاصة بالإضافة.\n;desc:وصف الإضافة محول إلى HTML (يمكن أن يكون بطيئا، استخدم فقط لو هناك حاجة ماسة له).",
+ "apihelp-query+gadgets-param-categories": "الإضافات من أي تصنيفات للاسترجاع.",
+ "apihelp-query+gadgets-param-ids": "معرفات الإضافات للاسترداد.",
+ "apihelp-query+gadgets-param-allowedonly": "اسرد فقط الإضافات المسموحة للمستخدم الحالي.",
+ "apihelp-query+gadgets-param-enabledonly": "اسرد فقط الإضافات المفعَّلة من قبل المستخدم الحالي.",
+ "apihelp-query+gadgets-example-1": "اعط قائمة بالإضافات مع وصفها.",
+ "apihelp-query+gadgets-example-2": "اعط قائمة بالإضافات مع كامل خصائصها الممكنة",
+ "apihelp-query+gadgets-example-3": "الحصول على قائمة من الأدوات التي تنتمي إلى فئة \"فو\"",
+ "apihelp-query+gadgets-example-4": "الحصول على معلومات حول الأدوات \"فو\" و \"بار\"",
+ "apihelp-query+gadgets-example-5": "أعط قائمة الإضافات المفعَّلة من قبل المستخدم الحالي",
+ "right-gadgets-edit": "تعديل صفحات JavaScript و CSS للإضافات",
+ "action-gadgets-edit": "تعديل هذه الأداة جافا سكريبت أو CSS الصفحة",
+ "right-gadgets-definition-edit": "تعديل تعريفات الإضافات",
+ "action-gadgets-definition-edit": "تعديل تعريف الادوات"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/arc.json b/www/wiki/extensions/Gadgets/i18n/arc.json
new file mode 100644
index 00000000..a136dc5d
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/arc.json
@@ -0,0 +1,10 @@
+{
+ "@metadata": {
+ "authors": [
+ "Basharh"
+ ]
+ },
+ "gadgets": "ܬܘܣܦܬ̈ܐ",
+ "gadgets-title": "ܬܘܣܦܬ̈ܐ",
+ "gadgets-export-download": "ܐܚܬ:"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/arz.json b/www/wiki/extensions/Gadgets/i18n/arz.json
new file mode 100644
index 00000000..38291f3c
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/arz.json
@@ -0,0 +1,16 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ghaly",
+ "Meno25",
+ "Ramsis II"
+ ]
+ },
+ "gadgets-desc": "بيسمح لليوزرز انهم يختارو [[Special:Gadgets|اضافاتCSS وJavaScript]] فى [[Special:Preferences#mw-prefsection-gadgets|التفضيلات]] بتاعتهم",
+ "prefs-gadgets": "اضافات",
+ "gadgets-prefstext": "تحت فى لستة بالضافات المخصوصة اللى انت ممكن تفعلها فى الحساب بتاعك.\nالاضافات دى غالبا ما بتبقى مبينة على الجافاسكريبت،و علشان كده لازم تفعل الجافاسطريبت فى البراوزر بتاعك علشتن يشتغلو.\nاعمل حسابك ان الاضافات دى مش ح يكون ليها اى تاثير على صفحة التفضيلات دى.\n\nكمان،خد بالك ان الاضافات المخصوصة دى مش جزء من برامج الميدياويكى ،و غالبا بيطورها و يعملها صيانة اليوزرز اللى فى الويكى المحلى بتاعك.\nالادارى المحلى ممكن يعدل الاضافات الموجودة باستخدام [[MediaWiki:Gadgets-definition|التعريفات]] و [[Special:Gadgets|التوصيفات]].",
+ "gadgets": "إضافات",
+ "gadgets-title": "إضافات",
+ "gadgets-pagetext": "تحت فى لستة بالاضافات المخصوصة و اللى اليوزرز ممكن يفعلوها على [[Special:Preferences#mw-prefsection-gadgets|صفحة التفضيلات]], زى ما بتعرفها [[MediaWiki:Gadgets-definition|التعريفات]].\nالعرض دا بيوفر دخول سهل لصفحات رسايل النظام و اللى بتعرف وصف و كود كل اضافة.",
+ "gadgets-uses": "إستخدامات"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/as.json b/www/wiki/extensions/Gadgets/i18n/as.json
new file mode 100644
index 00000000..49b24de0
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/as.json
@@ -0,0 +1,30 @@
+{
+ "@metadata": {
+ "authors": [
+ "Bishnu Saikia",
+ "Gitartha.bordoloi",
+ "Dibya Dutta"
+ ]
+ },
+ "gadgets-desc": "সদস্যসকলক তেওঁলোকৰ [[Special:Preferences#mw-prefsection-gadgets|পছন্দসমূহত]] কাষ্ট'ম [[Special:Gadgets|CSS আৰু JavaScript গেজেট]] বাছনি কৰাৰ সুযোগ দিয়ে",
+ "prefs-gadgets": "গেজেট",
+ "gadgets-prefstext": "আপুনি এই একাউণ্টত সক্ৰিয় কৰিব পৰা বিশেষ গেজেটসমূহৰ তালিকা তলত দিয়া হ'ল।\nএই গেজেটসমূহৰ বেছিভাগ জাভাস্ক্ৰিপ্ট ভিত্তিক, গতিকে সেইবোৰে কাম কৰিবলৈ আপোনাৰ ব্ৰাউজাৰৰ জাভাস্ক্ৰিপ্ট সক্ৰিয় হৈ থাকিব লাগিব।\nমন কৰক যে এই পছন্দ পৃষ্ঠাত গেজেটসমূহে কোনো প্ৰভাৱ নেপেলায়।\n\nলগতে মন কৰক যে এই বিশেষ গেজেটসমূহ মিডিয়াৱিকি ছফ্টৱেৰৰ অংশ নহয়, আৰু সাধাৰণতে এইবোৰ আপোনাৰ স্থানীয় ৱিকিত সদস্যসকলে বিকাশ আৰু চোৱাচিতা কৰে।\nস্থানীয় প্ৰশাসকসকলে উপলব্ধ গেজেটসমূহৰ [[MediaWiki:Gadgets-definition|সংজ্ঞা]] আৰু [[Special:Gadgets|বিৱৰণ]] সম্পাদনা কৰিব পাৰে।",
+ "gadgets": "গেজেটসমূহ",
+ "gadgetusage": "গেজেট ব্যৱহাৰৰ পৰিসংখ্যা",
+ "gadgetusage-gadget": "গেজেট",
+ "gadgetusage-usercount": "সদস্যৰ সংখ্যা",
+ "gadgetusage-noresults": "কোনো গেজেট বিচাৰি পোৱা নহ'ল।",
+ "gadgetusage-activeusers": "সক্ৰিয় ব্যৱহাৰকাৰী",
+ "gadgetusage-default": "পুনঃনিৰ্ধাৰিত",
+ "gadgets-title": "গেজেটসমূহ",
+ "gadgets-pagetext": "সদস্যসকলে তেওঁলোকৰ [[Special:Preferences#mw-prefsection-gadgets|পছন্দ পৃষ্ঠাত]] সক্ৰিয় কৰিব পৰা আৰু [[MediaWiki:Gadgets-definition|সংজ্ঞা থকা]] বিশেষ গেজেটসমূহৰ তালিকা তলত দিয়া হৈছে।\nএই সাৰাংশই প্ৰতিটো গেজেটৰ বিৱৰণ আৰু সংকেত থকা প্ৰণালী বাৰ্তাসমূহলৈ প্ৰৱেশাধিকাৰ দিয়ে।",
+ "gadgets-uses": "ব্যৱহাৰ",
+ "gadgets-required-rights": "তলৰ {{PLURAL:$2|অধিকাৰৰ|অধিকাৰসমূহৰ}} প্ৰয়োজন:\n$1",
+ "gadgets-required-skins": "{{PLURAL:$2|$1 আৱৰণত|এই আৱৰণসমূহত: $1}} উপলব্ধ।",
+ "gadgets-default": "ডিফল্ট অনুযায়ী সকলোৰে বাবে সক্ৰিয়।",
+ "gadgets-export": "ৰপ্তানি কৰক",
+ "gadgets-export-title": "গেজেট ৰপ্তানি",
+ "gadgets-not-found": "\"$1\" গেজেট পোৱা নগ'ল।",
+ "gadgets-export-text": "$1 গেজেটটো ৰপ্তানি কৰিবলৈ \"{{int:gadgets-export-download}}\" বুটামটোত ক্লিক কৰক, ডাউনল'ড ফাইলটো সাঁচি ৰাখক,\nগন্তব্য ৱিকিৰ Special:Importলৈ যাওক আৰু ইয়াক আপল'ড কৰক। তাৰপিছত তলৰ কথাখিনি MediaWiki:Gadgets-definition পৃষ্ঠাত যোগ দিয়ক:\n<pre>$2</pre>\nগন্তব্য ৱিকিত আপোনাৰ যথাযথ অনুমতি থাকিব লাগিব (প্ৰণালী বাৰ্তা সম্পাদনা কৰাৰ অনুমতিসহ) আৰু ফাইলা আপল'ডৰ পৰা আমদানি সক্ৰিয় থাকিব লাগিব।",
+ "gadgets-export-download": "ডাউনল’ড"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/ast.json b/www/wiki/extensions/Gadgets/i18n/ast.json
new file mode 100644
index 00000000..f5309995
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/ast.json
@@ -0,0 +1,56 @@
+{
+ "@metadata": {
+ "authors": [
+ "Esbardu",
+ "Xuacu"
+ ]
+ },
+ "gadgets-desc": "Permite a los usuarios seleicionar al gustu [[Special:Gadgets|accesorios CSS y JavaScript]] nes sos [[Special:Preferences#mw-prefsection-gadgets|preferencies]]",
+ "prefs-gadgets": "Accesorios",
+ "gadgets-prefstext": "Embaxo amuésase una llista de los accesorios especiales que pues activar pa la to cuenta.\nEstos accesorios tán mayormente basaos en JavaScript, polo qu'has tener activáu esti nel to navegador pa que funcionen.\nDate cuenta de qu'estos accesorios nun tendrán efeutu nesta páxina de preferencies.\n\nHas decatate tamién de qu'estos accesorios especiales nun son parte del software MediaWiki, y que normalmente los desendolquen y mantienen usuarios de la to wiki llocal.\nLos alministradores llocales puen editar los accesorios disponibles usando les [[MediaWiki:Gadgets-definition|definiciones]] y les [[Special:Gadgets|descripciones]]. El númberu d'usuarios de cada accesoriu d'esta wiki apaez nes [[Special:GadgetUsage|estadístiques d'usu d'accesorios]].",
+ "gadgets": "Accesorios",
+ "gadgetusage": "Estadístiques d'usu d'accesorios",
+ "gadgetusage-gadget": "Accesoriu",
+ "gadgetusage-usercount": "Númberu d'usuarios",
+ "gadgetusage-noresults": "Nun s'alcontraron accesorios.",
+ "gadgetusage-intro": "Esta tabla indica'l númberu d'usuarios que tien activáu cada accesoriu nesta wiki. Un usuariu activu ye aquel que realizó una edición {{PLURAL:$1|nel últimu día|nos últimos $1 díes}}. Esta llista nun incluye estadístiques de los accesorios activaos pa toos de mou predetermináu y puede incluir accesorios que yá nun tean disponibles.",
+ "gadgetusage-intro-noactive": "Esta tabla indica'l númberu d'usuarios qu'activaron cada accesoriu nesta wiki. Esta llista nun incluye estadístiques de los accesorios activaos pa toos de mou predetermináu y pue incluir accesorios que yá nun tean disponibles.",
+ "gadgetusage-activeusers": "Usuarios activos",
+ "gadgetusage-default": "Predetermináu",
+ "gadgets-title": "Accesorios",
+ "gadgets-pagetext": "Embaxo amuésase una llista de los accesorios especiales que los usuarios puen activar na so [[Special:Preferences#mw-prefsection-gadgets|páxina de preferencies]], según queden definíos poles [[MediaWiki:Gadgets-definition|definiciones]].\nEsta visión xeneral proporciona un accesu fácil a les páxines de mensaxes del sistema que definen la descripción y el códigu de cada accesoriu.",
+ "gadgets-uses": "Usa",
+ "gadgets-required-rights": "Rique{{PLURAL:$2|'l siguiente permisu| los siguientes permisos}}:\n\n$1",
+ "gadgets-required-skins": "Disponible {{PLURAL:$2|nel aspeutu $1|nos siguientes aspeutos: $1}}.",
+ "gadgets-default": "Activáu para toos de mou predetermináu.",
+ "gadgets-legacy": "L'accesoriu nun ta cargáu. Migra a ResourceLoader. ([https://www.mediawiki.org/wiki/ResourceLoader/Migration_guide_(users) Saber más])",
+ "gadgets-export": "Esportar",
+ "gadgets-export-title": "Esportación d'accesorios",
+ "gadgets-not-found": "Nun s'alcontró l'accesoriu \"$1\".",
+ "gadgets-export-text": "Pa esportar l'accesoriu $1, calca nel botón \"{{int:gadgets-export-download}}\", guarda'l ficheru descargáu,\nvete a Special:Import na wiki de destín y xúbelu. Darréu amiesta lo siguiente na páxina MediaWiki:Gadgets-definition:\n<pre>$2</pre>\nHas de tener los permisos afayadizos na wiki de destín (incluyendo permisu pa editar los mensaxes del sistema) y tien de tar activada la importación dende los ficheros xubíos.",
+ "gadgets-export-download": "Descargar",
+ "gadgets-validate-notset": "La propiedá <code>$1</code> nun ta establecida.",
+ "gadgets-validate-wrongtype": "La propiedá <code>$1</code> tien de ser de tipu <code>$2</code> en cuenta de <code>$3</code>.",
+ "apihelp-query+gadgetcategories-description": "Devuelve una llista de categoríes d'accesorios.",
+ "apihelp-query+gadgetcategories-summary": "Devuelve una llista de categoríes d'accesorios.",
+ "apihelp-query+gadgetcategories-param-prop": "Qué información de categoría d'accesorios llograr:\n;name:Nome internu de la categoría.\n;title:Títulu de la categoría.\n;members:Númberu d'accesorios na categoría.",
+ "apihelp-query+gadgetcategories-param-names": "Nomes de les categoríes a recuperar.",
+ "apihelp-query+gadgetcategories-example-1": "Algamar la llista de categoríes d'accesorios esistentes",
+ "apihelp-query+gadgetcategories-example-2": "Algamar tola información sobro les categoríes llamaes «foo» y «bar»",
+ "apihelp-query+gadgets-description": "Devuelve la llista d'accesorios que s'usen nesta wiki.",
+ "apihelp-query+gadgets-summary": "Devuelve la llista d'accesorios que s'usen nesta wiki.",
+ "apihelp-query+gadgets-param-prop": "Qué información d'accesoriu llograr:\n;id:Identificador internu del accesoriu.\n;metadata:Metadatos del accesoriu.\n;desc:Descripción del accesoriu tresformada en HTML (pué ser lento, usar sólo si realmente ye necesario).",
+ "apihelp-query+gadgets-param-categories": "De que categoríes recuperar los accesorios.",
+ "apihelp-query+gadgets-param-ids": "Identificadores de los accesorios a recuperar.",
+ "apihelp-query+gadgets-param-allowedonly": "Ver la llista sólo de los accesorios permitíos pal usuariu actual.",
+ "apihelp-query+gadgets-param-enabledonly": "Ver la llista sólo de los accesorios activaos pol usuariu actual.",
+ "apihelp-query+gadgets-example-1": "Amosar la llista d'accesorios xunto coles sos descripciones",
+ "apihelp-query+gadgets-example-2": "Amosar la llista d'accesorios con toles propiedaes posibles",
+ "apihelp-query+gadgets-example-3": "Amosar la llista d'accesorios que pertenezan a la categoría «foo»",
+ "apihelp-query+gadgets-example-4": "Amosar información sobro los accesorios «foo» y «bar»",
+ "apihelp-query+gadgets-example-5": "Ver la llista de los accesorios activaos pol usuariu actual.",
+ "right-gadgets-edit": "Editar el JavaScript y páxines CSS del accesoriu",
+ "action-gadgets-edit": "editar el JavaScript o páxina CSS d'esti accesoriu",
+ "right-gadgets-definition-edit": "Editar les definiciones del accesoriu",
+ "action-gadgets-definition-edit": "editar esta definición del accesoriu"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/awa.json b/www/wiki/extensions/Gadgets/i18n/awa.json
new file mode 100644
index 00000000..1a4991f4
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/awa.json
@@ -0,0 +1,10 @@
+{
+ "@metadata": {
+ "authors": [
+ "1AnuraagPandey"
+ ]
+ },
+ "prefs-gadgets": "उपकरण (गैजेट)",
+ "gadgets": "उपकरण",
+ "gadgets-title": "उपकरण (गैजेट)"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/az.json b/www/wiki/extensions/Gadgets/i18n/az.json
new file mode 100644
index 00000000..7f388451
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/az.json
@@ -0,0 +1,20 @@
+{
+ "@metadata": {
+ "authors": [
+ "Cekli829",
+ "PPerviz",
+ "Vago",
+ "Vugar 1981",
+ "Wertuose"
+ ]
+ },
+ "prefs-gadgets": "Qadjetlər",
+ "gadgets": "Qadcetlər",
+ "gadgetusage-gadget": "Qadcet",
+ "gadgets-title": "Qadjetlər",
+ "gadgets-uses": "İstifadə",
+ "gadgets-export": "İxrac",
+ "gadgets-export-title": "Qadjet ixracı",
+ "gadgets-not-found": "Qadjet \"$1\" tapılmadı.",
+ "gadgets-export-download": "Yüklə"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/azb.json b/www/wiki/extensions/Gadgets/i18n/azb.json
new file mode 100644
index 00000000..fbcf6613
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/azb.json
@@ -0,0 +1,20 @@
+{
+ "@metadata": {
+ "authors": [
+ "Amir a57",
+ "Ebrahimi-amir",
+ "Mousa",
+ "Alp Er Tunqa"
+ ]
+ },
+ "prefs-gadgets": "آلت‌لر",
+ "gadgets-prefstext": "آشاغیدا ایستیفاده‌چی حسابینیز اوچون فعال ائده بیله‌جه‌گینیز اوزل آراجلاری گورورسونوز.\nبو آراجلار عوموما جاوااسکریب اساسیندادیرلار، بونا اساسن بروزئرینیزینده جاوااسکریبی فعال ائتمه‌لیسینیز.\nدیقتلی اولون بو آراجلار ترجیحلر صحیفه‌سین دَییشدیره بیلمز.\n\nدیقتلی اولون بو آراجلار مئدیاویکی یازیلیملاریندان دئییللر و عوموما هر ویکی‌نین ایستیفاده‌چی‌لری طرفیندن یارانیب و ساخلانیرلار.\nهر ویکی‌نین ایداره‌چیلری [[MediaWiki:Gadgets-definition|تعریف‌لر]] و [[Special:Gadgets|ایضاحات]] دا بو آراجلاری دَییشدیره بیلرلر.",
+ "gadgets": "آلت لر",
+ "gadgetusage-usercount": "ایشلدنلر سایی",
+ "gadgets-title": "آلت‌لر",
+ "gadgets-uses": "برنامه",
+ "gadgets-export": "ائشیگه آپارماق",
+ "gadgets-export-title": "آبزارلاری ائشیکه آپارما",
+ "gadgets-not-found": "آلت \"$1\" تاپیلمادی.",
+ "gadgets-export-download": "اندیر"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/ba.json b/www/wiki/extensions/Gadgets/i18n/ba.json
new file mode 100644
index 00000000..24000bb5
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/ba.json
@@ -0,0 +1,52 @@
+{
+ "@metadata": {
+ "authors": [
+ "Рустам Нурыев",
+ "ҒатаУлла",
+ "Янмурза Баки",
+ "Лилиә",
+ "Ләйсән"
+ ]
+ },
+ "gadgets-desc": "Ҡатнашыусыларға үҙҙәренең [[Special:Preferences#mw-prefsection-gadgets|көйләүҙәр]]ендә теге йәки был [[Special:Gadgets|CSS- һәм JavaScript-гаджеттар]]ҙы һайларға мөмкинлек бирә.",
+ "prefs-gadgets": "Гаджеттар",
+ "gadgets": "Гаджеттар",
+ "gadgetusage": "Гаджеттар файҙаланыу статистикаһы",
+ "gadgetusage-gadget": "Гаджет",
+ "gadgetusage-usercount": "Ҡатнашыусылар һаны",
+ "gadgetusage-noresults": "Бер ниндәй ҙә гаджеттар табылманы.",
+ "gadgetusage-intro": "Был таблица викиның һәр бер гаджетын әүҙемләштергән кешеләр һанын күрһәтә. Әүҙем файҙаланыусы булып {{PLURAL:$1|һуңғы $1 көн}} эсендә мөхәррирләгән кеше һанала. Ҡуйылған гаджеттар был исемлектең иҫәбенә инмәй, ә эшләмәгәндәрен эсенә индереүе мөмкин.",
+ "gadgetusage-activeusers": "Әүҙем ҡатнашыусылар",
+ "gadgetusage-default": "Һайланмаған",
+ "gadgets-title": "Гаджеттар",
+ "gadgets-pagetext": "Ошо [[MediaWiki:Gadgets-definition|definition]] битендәге исемлеккә яраҡлы гаджеттарҙың исемлеге түбәндә килтерелгән, ҡатнашыусылар уларҙы биттәренең көйләүҙәренә [[Special:Preferences#mw-prefsection-gadgets|preferences page]] индерә алалар.\nБыл исемлек гаджеттарҙың тәүге кодтарын билдәләгән һәм тасуирлаған система хәбәрҙәренең битенә еңел индерә ала.",
+ "gadgets-uses": "Ҡулланыла",
+ "gadgets-required-rights": "{{PLURAL:$2|1=Хоҡуҡ талап ителә|Хоҡуҡтар талап ителә}}:\n\n$1",
+ "gadgets-required-skins": "{{PLURAL:$2|1=биҙәү темаһында «$1»|киләһе биҙәү темаларында: $1}} инеү мөмкинлеге бар.",
+ "gadgets-default": "Барыһына ла һайланмайынса тоҡандырылған.",
+ "gadgets-legacy": "Гаджет тейәлмәгән. ([https://www.mediawiki.org/wiki/ResourceLoader/Migration_guide_(ҡулланыусыларҙы) күберәк белеү өсөн]) ResourceLoader -гә күсергә һорайбыҙ.",
+ "gadgets-export": "Сығарырға",
+ "gadgets-export-title": "Гаджетты экспортлау",
+ "gadgets-not-found": "\"$1\" гаджеты табылманы.",
+ "gadgets-export-download": "Күсереп алырға",
+ "gadgets-validate-notset": "Үҙенсәнлек <code>$1</code> ҡуйылмаған.",
+ "gadgets-validate-wrongtype": "Үҙенсәнлек <code>$1</code> <code>$3</code> тип урынына <code>$2</code> тибына эйә булырға тейеш.",
+ "apihelp-query+gadgetcategories-description": "Гаджеттар категориялары исемлеген кире ҡайтара.",
+ "apihelp-query+gadgetcategories-param-names": "Кире ҡайтарыла торған категориялар исемлеге.",
+ "apihelp-query+gadgetcategories-example-1": "Гаджеттарҙың барлыҡ категорияларының исемлеген алырға.",
+ "apihelp-query+gadgetcategories-example-2": "«Foo» һәм «Bar» атамалары булған категориялар тураһында барлыҡ мәғлүмәтте алырға.",
+ "apihelp-query+gadgets-description": "Был викила ҡулланылған, гаджеттар исемлеген кире ҡайтара.",
+ "apihelp-query+gadgets-param-categories": "Ниндәй категориянан гаджеттар алырға кәрәк",
+ "apihelp-query+gadgets-param-ids": "Алыу өсөн гаджеттарҙың идентификаторҙары",
+ "apihelp-query+gadgets-param-allowedonly": "Хәҙерге ҡатнашыусыға рөхсәт ителгән, гаджеттарҙы ғына һанап сығарға.",
+ "apihelp-query+gadgets-param-enabledonly": "Хәҙерге ҡатнашыусының тоҡандырылған гаджеттарын ғына һанап сығарға.",
+ "apihelp-query+gadgets-example-1": "Уларҙың аңлатмалары менән бергә гаджеттар исемлеген алырға.",
+ "apihelp-query+gadgets-example-2": "Уларҙың барлыҡ, ихтимал булған үҙенсәнлектәре менән гаджеттарҙың исемлеген алырға.",
+ "apihelp-query+gadgets-example-3": "«foo» категорияһында гаджеттарҙың исемлеген алырға.",
+ "apihelp-query+gadgets-example-4": "«foo» һәм «bar» гаджеттары тураһына мәғлүмәт алырға.",
+ "apihelp-query+gadgets-example-5": "Хәҙерге ҡатнашыусының тоҡандырылған гаджеттарының исемлеген алырға.",
+ "right-gadgets-edit": "JavaScript- һәм CSS- гаджеттар биттәрен үҙгәртеү.",
+ "action-gadgets-edit": "JavaScript- йәки CSS-был гаджет битенең мөхәррирләнеүе.",
+ "right-gadgets-definition-edit": "Гаджеттарҙың тикшереүҙәрен үҙгәртеү.",
+ "action-gadgets-definition-edit": "Был гаджеттың аныҡлаусыһын мөхәррирләү."
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/bar.json b/www/wiki/extensions/Gadgets/i18n/bar.json
new file mode 100644
index 00000000..2447d706
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/bar.json
@@ -0,0 +1,10 @@
+{
+ "@metadata": {
+ "authors": [
+ "Mucalexx"
+ ]
+ },
+ "gadgets": "Gadgets (Helferlein)",
+ "gadgets-title": "Gadgets (Helferlein)",
+ "gadgets-export-download": "Owerloon"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/bcc.json b/www/wiki/extensions/Gadgets/i18n/bcc.json
new file mode 100644
index 00000000..4ed921d1
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/bcc.json
@@ -0,0 +1,12 @@
+{
+ "@metadata": {
+ "authors": [
+ "Mostafadaneshvar"
+ ]
+ },
+ "gadgets-desc": "اجازت دن کابرانء که انتخاب کنن دلواهی [[Special:Gadgets|گجت آنی سی اس اس و جاوا اسکرسپت]] ته وتی [[Special:Preferences#mw-prefsection-gadgets|ترجیحات]]",
+ "prefs-gadgets": "گجت آن",
+ "gadgets": "گجت آن",
+ "gadgets-title": "گجت آن",
+ "gadgets-uses": "استفاده بیت"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/bcl.json b/www/wiki/extensions/Gadgets/i18n/bcl.json
new file mode 100644
index 00000000..ee038387
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/bcl.json
@@ -0,0 +1,22 @@
+{
+ "@metadata": {
+ "authors": [
+ "Geopoet"
+ ]
+ },
+ "gadgets-desc": "Minatugot sa mga paragamit na pumili nin kustombre [[Special:Gadgets|CSS and JavaScript gadgets]] sa saindang [[Special:Preferences#mw-prefsection-gadgets|preferences]]",
+ "prefs-gadgets": "Mga gadyet",
+ "gadgets-prefstext": "Sa ibaba yaon an sarong listahan kan espesyal na mga gadyet na saimong mapapagana para sa saimong panindog.\nIning mga gadyet haros nakabase sa JavaScript, kaya an JavaScript kaipong paganahon sa saimong kilyawan para an mga ini magagamit.\nTandai na ining mga gadyet mayo nin epekto kaining pahina nin mga kamuyahan.\n\nTandai man na ining mga espesyal na gadyet bakong parte kan panuklob nin MediaWiki, asin pirmehang pinagpauswag asin pinagmamantine nin mga paragamit sa saimong lokal na wiki.\n\nAn mga lokal na mga administrador makakaliwat kan [[MediaWiki:Gadgets-definition|mga pakahulugan]] asin [[Special:Gadgets|mga deskripsyon]] kan yaon na mga gadyet.",
+ "gadgets": "Mga gadyet",
+ "gadgets-title": "Mga gadyet",
+ "gadgets-pagetext": "Sa ibaba yaon an sarong listahan kan espesyal na mga gadyet na an mga paragamit mapapagana sa saindang [[Special:Preferences#mw-prefsection-gadgets|pahina nin mga kamuyahan]], siring sa pinapakahulugan kan [[MediaWiki:Gadgets-definition|mga pakahulugan]]. Ining patanawon minatao nin yanong langkayan sa mga pahina kan mensahe sa sistema na minakahulugan sa lambang deskripsyon nin gadyet asin koda.",
+ "gadgets-uses": "Mga magagamitan",
+ "gadgets-required-rights": "Minahagad kan minasunod {{PLURAL:$2|katanosan|mga katanosan}}:\n\n\n$1",
+ "gadgets-required-skins": "Makukua sa {{PLURAL:$2|$1 kublit|minasunod na mga kublit: $1}}.",
+ "gadgets-default": "Tugmadong pinagpapagana para sa kagabsan.",
+ "gadgets-export": "Eksport",
+ "gadgets-export-title": "Gadyet eksport",
+ "gadgets-not-found": "Gadyet na \"$1\" dae nanagboan.",
+ "gadgets-export-text": "Tanganing ma-eksport an $1 na gadyet, paki-klik an \"{{int:gadgets-export-download}}\" pindutan, itagama an naikargang sagunson, magduman sa Espesyal:Importaron sa wiking destinasyon and ikarga ini. An sunod idugang an minasunod sa MediaWiki:Mga Gadyet-pakahulugang pahina: <pre>$2</pre> Ika dapat magkaigwa nin makanigong mga permiso sa wiking destination (kabali na an katanosan na magliwat nin pansistemang mga mensahe) asin an mag-importa gikan sa ikinakargang mga sagunson na dapat kaipong pinagpagana.",
+ "gadgets-export-download": "Kargahon"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/be-tarask.json b/www/wiki/extensions/Gadgets/i18n/be-tarask.json
new file mode 100644
index 00000000..90f2ac00
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/be-tarask.json
@@ -0,0 +1,38 @@
+{
+ "@metadata": {
+ "authors": [
+ "Cesco",
+ "EugeneZelenko",
+ "Jim-by",
+ "Red Winged Duck",
+ "Wizardist",
+ "Zedlik",
+ "Renessaince"
+ ]
+ },
+ "gadgets-desc": "Дазваляе ўдзельнікам выбіраць [[Special:Gadgets|CSS і JavaScript-дадаткі]] ў сваіх [[Special:Preferences#mw-prefsection-gadgets|наладах]]",
+ "prefs-gadgets": "Гаджэты",
+ "gadgets-prefstext": "Ніжэй знаходзіцца сьпіс спэцыяльных гаджэтаў, якія Вы можаце ўключыць для свайго рахунку.\nГэтыя гаджэты пераважна заснаваныя на JavaScript, таму Вам неабходна ўключыць JavaScript у сваім браўзэры для таго, каб яны працавалі.\nЗаўважце, што гэтыя гаджэты не працуюць на старонцы наладаў.\n\nТаксама заўважце, што гэтыя гаджэты не зьяўляюцца часткай праграмнага забесьпячэньня MediaWiki і звычайна распрацоўваюцца і падтрымліваюцца ўдзельнікамі Вашай лякальнай вікі.\nЛякальныя адміністратары маюць магчымасьць мяняць сьпіс гаджэтаў з дапамогай [[MediaWiki:Gadgets-definition|вызначэньняў]] і [[Special:Gadgets|апісаньняў]]. Колькасьць карыстальнікаў для кожнага гаджэту пазначаная ў [[Special:GadgetUsage|статыстыцы выкарыстаньня гаджэтаў]].",
+ "gadgets": "Гаджэты",
+ "gadgetusage": "Статыстыка выкарыстаньня гаджэтаў",
+ "gadgetusage-gadget": "Гаджэт",
+ "gadgetusage-usercount": "Колькасьць удзельнікаў",
+ "gadgetusage-noresults": "Ня знойдзена гаджэтаў.",
+ "gadgetusage-activeusers": "Актыўныя ўдзельнікі",
+ "gadgetusage-default": "Дапомны",
+ "gadgets-title": "Гаджэты",
+ "gadgets-pagetext": "Ніжэй знаходзіцца сьпіс гаджэтаў, якія ўдзельнікі могуць уключыць у [[Special:Preferences#mw-prefsection-gadgets|сваіх наладах]], у адпаведнасьці са сьпісам на старонцы [[MediaWiki:Gadgets-definition|вызначэньняў]].\nГэты сьпіс дазваляе лёгка атрымаць доступ да старонак сыстэмных паведамленьняў, якія вызначаюць апісаньні і крынічныя коды гаджэтаў.",
+ "gadgets-uses": "Выкарыстоўвае",
+ "gadgets-required-rights": "{{PLURAL:$2|1=Патрабуецца права|Патрабуюцца наступныя правы}}:\n\n$1",
+ "gadgets-required-skins": "Даступны ў {{PLURAL:$2|1=тэме $1|наступных тэмах: $1}}.",
+ "gadgets-default": "Дазволеныя для ўсіх па змоўчваньні.",
+ "gadgets-export": "Экспартаваць",
+ "gadgets-export-title": "Экспарт гаджэта",
+ "gadgets-not-found": "Гаджэт «$1» ня знойдзены.",
+ "gadgets-export-text": "Каб экспартаваць гаджэт $1, націсьніце кнопку «{{int:gadgets-export-download}}», захавайце загружаны файл, зайдзіце на Special:Import у мэтавай вікі і загрузіце файл туды. Затым дадайце наступны зьмест на старонку MediaWiki:Gadgets-definition:\n<pre>$2</pre>\nВы павінны мець адпаведныя правы ў мэтавай вікі (у тым ліку і правы на рэдагаваньне сыстэмных паведамленьняў), а ў вікі мусіць быць уключаная магчымасьць імпарту з файлаў.",
+ "gadgets-export-download": "Загрузіць",
+ "apihelp-query+gadgetcategories-description": "Вяртае сьпіс катэгорыяў гаджэтаў.",
+ "right-gadgets-edit": "рэдагаваньне JavaScript і CSS-старонак гаджэту",
+ "right-gadgets-definition-edit": "рэдагаваньне вызначэньняў гаджэтаў",
+ "action-gadgets-definition-edit": "рэдагаваць апісаньне гэтага гаджэту"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/be.json b/www/wiki/extensions/Gadgets/i18n/be.json
new file mode 100644
index 00000000..f6017fbb
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/be.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Mikalai Udodau",
+ "Artsiom91"
+ ]
+ },
+ "prefs-gadgets": "Гаджэты",
+ "gadgets-prefstext": "Ніжэй прадстаўлены спіс спецыяльных гаджэтаў, якія могуць быць уключаныя з Вашага акаўнта.\nБольшасць гэтых гаджэтаў напісаныя на JavaScript, таму JavaScript павінен падтрымлівацца браўзерам, якім Вы карыстаецеся.\nМайце на ўвазе, што гэтыя гаджэты не будуць працаваць на гэтай старонцы настроек.\n\nТаксама заўважце, што гэтыя спецыяльныя гаджэты не з’яўляюцца часткай праграмнага забеспячэння MediaWiki, і яны звычайна распрацоўваюцца і падтрымліваюцца ў лакальным вікі-праекце.\nАдміністратары лакальнага вікі-праекта могуць правіць [[MediaWiki:Gadgets-definition|вызначэнні]] і [[Special:Gadgets|апісанні]] даступных гаджэтаў. Колькасць удзельнікаў, якія ўжываюць кожны гаджэт у гэтым праекце, можна паглядзець на старонцы [[Special:GadgetUsage|статыстыкі карыстання гаджэтамі]].",
+ "gadgets": "Гаджэты",
+ "gadgetusage": "Статыстыка карыстання гаджэтамі",
+ "gadgetusage-gadget": "Гаджэт",
+ "gadgets-title": "Гаджэты"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/bg.json b/www/wiki/extensions/Gadgets/i18n/bg.json
new file mode 100644
index 00000000..80975f83
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/bg.json
@@ -0,0 +1,43 @@
+{
+ "@metadata": {
+ "authors": [
+ "Borislav",
+ "DCLXVI",
+ "Spiritia",
+ "Turin",
+ "Vodnokon4e",
+ "StanProg",
+ "ShockD"
+ ]
+ },
+ "gadgets-desc": "Позволява на потребителите да избират и активират [[Special:Gadgets|CSS и JavaScript джаджи]] от своите [[Special:Preferences#mw-prefsection-gadgets|настройки]]",
+ "prefs-gadgets": "Джаджи",
+ "gadgets-prefstext": "По-долу е списъкът на специалните джаджи, които можете да активирате на своята потребителска сметка.\nТъй като почти всички джаджи са базирани на JavaScript, трябва да го активирате на браузъра си, за да могат те да работят.\nИмайте предвид, че тези джаджи няма да окажат влияние на тази страница с настройки.\n\nСъщо така, джаджите не са част от софтуера МедияУики, и обикновено се разработват и поддържат от потребители в локалното уики. Локалните администратори могат да редактират наличните джаджи посредством [[MediaWiki:Gadgets-definition|дефинициите]] и [[Special:Gadgets|описанията]]. Броят потребителите на тези джаджи е показан на [[Special:GadgetUsage|Статистика на употребата на джаджи]].",
+ "gadgets": "Джаджи",
+ "gadgetusage": "Статистика за използването на джаджите",
+ "gadgetusage-gadget": "Джаджа",
+ "gadgetusage-usercount": "Брой потребители",
+ "gadgetusage-noresults": "Не са намерени джаджи.",
+ "gadgetusage-intro": "Тази таблица указва броя потребители, които са активирали всяка от джаджите в това уики. За активен потребител се смята потребител, направил редакция през {{PLURAL:$1|последния един ден|последните $1 дни}}. Този списък изключва статистиките за джаджите, активирани по подразбиране за всички потребители, и също така може да включва джаджи, които вече не се поддържат.",
+ "gadgetusage-intro-noactive": "Тази таблица указва броя потребители, които са активирали всяка от джаджите в това уики. Списъкът изключва статистиките за джаджите, активирани по подразбиране за всички потребители, и също така може да включва джаджи, които вече не се поддържат.",
+ "gadgetusage-activeusers": "Активни потребители",
+ "gadgetusage-default": "По подразбиране",
+ "gadgets-title": "Джаджи",
+ "gadgets-pagetext": "По-долу е списъкът на специалните джаджи, които потребителите могат да активират чрез [[Special:Preferences#mw-prefsection-gadgets|страницата си с настройки]], както е указано на [[MediaWiki:Gadgets-definition]].\nТози списък дава лесен достъп до страниците със системни съобщения, съдържащи описанието и кода на всяка джаджа.",
+ "gadgets-uses": "Използва",
+ "gadgets-required-rights": "Изисква {{PLURAL:$2|следното потребителско право|следните потребителски права}}:\n\n$1",
+ "gadgets-required-skins": "Джаджата е достъпна в {{PLURAL:$2|облик „$1“|следните облици: „$1“}}.",
+ "gadgets-default": "Активирана за всички по подразбиране.",
+ "gadgets-legacy": "Джаджата не е заредена. Моля, мигрирайте към ResourceLoader. ([https://www.mediawiki.org/wiki/ResourceLoader/Migration_guide_(users) научете повече])",
+ "gadgets-export": "Изнасяне",
+ "gadgets-export-title": "Експорт на джаджи",
+ "gadgets-not-found": "Джаджа „$1“ не беше намерена.",
+ "gadgets-export-text": "За да експортирате джаджата $1, щракнете на бутона \"{{int:gadgets-export-download/bg}}\", запазете файла на диска си, отидете на страницата Special:Import в целевото уики и го качете там. След това добавете към страницата MediaWiki:Gadgets-definition:\n<pre>$2</pre>\nВ целевото уики трябва да се ползвате от съответните права (в това число правото да редактирате системни съобщения) и трябва да са разрешени локалните файлови качвания.",
+ "gadgets-export-download": "Изтегляне",
+ "apihelp-query+gadgets-description": "Връща списък от джаджите, използвани в това уики.",
+ "apihelp-query+gadgets-param-allowedonly": "Списък само на джаджите, до които потребителят има достъп.",
+ "apihelp-query+gadgets-param-enabledonly": "Списък само на джаджите, които потребителят е активирал в профила си.",
+ "right-gadgets-edit": "Редактиране на JavaScript и CSS страниците на джаджите",
+ "right-gadgets-definition-edit": "Редактиране на дефинициите на джаджите",
+ "action-gadgets-definition-edit": "редактиране на дефиницията на тази джаджа"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/bho.json b/www/wiki/extensions/Gadgets/i18n/bho.json
new file mode 100644
index 00000000..428eb51c
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/bho.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "SatyamMishra"
+ ]
+ },
+ "prefs-gadgets": "गैजेट",
+ "gadgets": "गैजेट",
+ "gadgetusage-gadget": "गैजेट",
+ "gadgets-title": "गैजेट"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/bn.json b/www/wiki/extensions/Gadgets/i18n/bn.json
new file mode 100644
index 00000000..cc642f2e
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/bn.json
@@ -0,0 +1,40 @@
+{
+ "@metadata": {
+ "authors": [
+ "Bellayet",
+ "Nasir8891",
+ "Wikitanvir",
+ "Zaheen",
+ "Aftabuzzaman"
+ ]
+ },
+ "gadgets-desc": "ব্যবহারকারীদের তাদের [[Special:Preferences#mw-prefsection-gadgets|পছন্দে]] স্বনির্বাচিত [[Special:Gadgets|সিএসএস এবং জাভাস্ক্রিপ্ট গ্যাজেট]] নির্বাচনের সুযোগ দাও",
+ "prefs-gadgets": "গ্যাজেটগুলি",
+ "gadgets-prefstext": "নিচে কিছু বিশেষ গ্যাজেটের তালিকা দেওয়া হল, যেগুলি আপনি আপনার অ্যাকাউন্টের জন্য সক্রিয় করতে পারেন।\nএই গ্যাজেটগুলি বেশিরভাগই জাভাস্ক্রিপ্ট-ভিত্তিক, তাই এগুলি কাজ করতে হলে আপনার ব্রাউজারে জাভাস্ক্রিপ্ট সক্রিয় থাকতে হবে।\nলক্ষ্য করুন, এই গ্যাজেটগুলি এই পছন্দ পাতায় কোন প্রভাব ফেলবে না।\n\nআরও লক্ষ্য করুন যে এই বিশেষ গ্যাজেটগুলি মিডিয়াউইকি সফটওয়্যারের অংশ নয়, এবং সাধারণত আপনার স্থানীয় উইকির ব্যবহারকারীরা এগুলি তৈরি করেন ও রক্ষণাবেক্ষণ করেন। স্থানীয় প্রশাসকেরা লভ্য গ্যাজেটগুলি [[MediaWiki:Gadgets-definition|সংজ্ঞা]] এবং [[Special:Gadgets|বর্ণনা]]র সাহায্যে সম্পাদনা করতে পারেন। এই উইকির প্রতিটি গ্যাজেট ব্যবহারের সংখ্যা [[Special:GadgetUsage|গ্যাজেট ব্যবহারের পরিসংখ্যানে]] তালিকাভুক্ত করা আছে।",
+ "gadgets": "গ্যাজেটগুলি",
+ "gadgetusage": "গ্যাজেট ব্যবহারের পরিসংখ্যান",
+ "gadgetusage-gadget": "গ্যাজেট",
+ "gadgetusage-usercount": "ব্যবহারকারীর সংখ্যা",
+ "gadgetusage-noresults": "কোনো গ্যাজেট পাওয়া যায়নি।",
+ "gadgetusage-intro": "এই ছক সেইসব ব্যবহারকারীর সংখ্যা নির্দেশ করে যারা এই উইকিতে গ্যাজেট সক্রিয় করেছেন। একজন সক্রিয় ব্যবহারকারী তাকেই গণ্য করা হবে যিনি {{PLURAL:$1|গতকাল|গত $1 দিনে}} একটি সম্পাদনা করেছেন। এই তালিকা ডিফল্টরূপে সবার জন্য সক্রিয় করা গ্যাজেটগুলির পরিসংখ্যান বাদ দেয় এবং যে গ্যাজেট আর উপলভ্য নয় সেগুলি অন্তর্ভুক্ত করতে পারে।",
+ "gadgetusage-intro-noactive": "এই ছক সেইসব ব্যবহারকারীর সংখ্যা নির্দেশ করে যারা এই উইকিতে গ্যাজেট সক্রিয় করেছেন। এই তালিকা ডিফল্টরূপে সবার জন্য সক্রিয় করা গ্যাজেটগুলির পরিসংখ্যান বাদ দেয় এবং যে গ্যাজেট আর উপলভ্য নয় সেগুলি অন্তর্ভুক্ত করতে পারে।",
+ "gadgetusage-activeusers": "সক্রিয় ব্যবহারকারী",
+ "gadgetusage-default": "পূর্বনির্ধারিত",
+ "gadgets-title": "গ্যাজেট",
+ "gadgets-pagetext": "নিচে বিশেষ গ্যাজেটের একটি তালিকা রয়েছে, যা ব্যবহারকারী তাদের [[Special:Preferences#mw-prefsection-gadgets|প্রছন্দের পাতা]] থেকে সক্রিয় করে নিতে পারবেন এবং যা [[MediaWiki:Gadgets-definition|definitions]] পাতায় সংজ্ঞায়িত রয়েছে। পর্যালোচনা সিস্টেম বার্তা পাতায় সহজ প্রবেশাধিকার দিবে, যেখানে গ্যাজেটের বর্ণনা এবং কোড রয়েছে।",
+ "gadgets-uses": "ব্যবহারসমূহ",
+ "gadgets-required-rights": "নিচের {{PLURAL:$2|অধিকার|অধিকারগুলো}} প্রয়োজন:\n$1",
+ "gadgets-required-skins": "{{PLURAL:$2|$1 স্কিন|স্কিনগুলো: $1}} থেকে ব্যবহার করা যাবে।",
+ "gadgets-default": "সকলের জন্য স্বয়ংক্রিয়ভাবে সক্রিয়।",
+ "gadgets-legacy": "গ্যাজেট লোড করা হয়নি। ResourceLoader-এ স্থানান্তরিত হোন। ([https://www.mediawiki.org/wiki/ResourceLoader/Migration_guide_(users) আরো জানুন])",
+ "gadgets-export": "রপ্তানি",
+ "gadgets-export-title": "গ্যাজেট রপ্তানি",
+ "gadgets-not-found": "গ্যাজেট \"$1\" খুজে পাওয়া যায়নি।",
+ "gadgets-export-text": "$1 গ্যাজেটটি রপ্তানি করতে, \"{{int:gadgets-export-download}}\" বোতামে ক্লিক করুন, ডাউনলোডকৃত ফাইলটি সংরক্ষণ করুন, গন্তব্য উইকির Special:Import এ যান এবং আপলোড করুন। এরপর MediaWiki:Gadgets-definition পাতায় নিন্মলিখিত অংশ যোগ করুন:\n<pre>$2</pre>\nগন্তব্য উইকিতে আপনার যথাযত অনুমতি থাকতে হবে (সিস্টেম বার্তা সম্পাদনা করার অধিকার সহ) এবং ফাইল আপলোড থেকে আমদানি সক্রিয় করা থাকতে হবে।",
+ "gadgets-export-download": "ডাউনলোড করুন",
+ "gadgets-validate-notset": "বৈশিষ্ট্য <code>$1</code> নির্ধারণ করা হয়নি।",
+ "right-gadgets-edit": "গ্যাজেট জাভাস্ক্রিপ্ট এবং সিএসএস পাতায় সম্পাদনা",
+ "action-gadgets-edit": "এই গ্যাজেট জাভাস্ক্রিপ্ট বা সিএসএস পাতা সম্পাদনা",
+ "right-gadgets-definition-edit": "গ্যাজেট সংজ্ঞা সম্পাদনা",
+ "action-gadgets-definition-edit": "এই গ্যাজেট সংজ্ঞা সম্পাদনা"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/br.json b/www/wiki/extensions/Gadgets/i18n/br.json
new file mode 100644
index 00000000..e35c5ed8
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/br.json
@@ -0,0 +1,25 @@
+{
+ "@metadata": {
+ "authors": [
+ "Fulup",
+ "Gwendal",
+ "Y-M D"
+ ]
+ },
+ "gadgets-desc": "Leuskel a ra an implijerien da bersonelaat [[Special:Gadgets|bitrakoù CSS ha JavaScript]] en o [[Special:Preferences#mw-prefsection-gadgets|fenndibaboù]]",
+ "prefs-gadgets": "Bitrakoù",
+ "gadgets-prefstext": "A-is ez eus ur roll eus ar bitrakoù a c'hallit gweredekaat evit ho kont.\nEvit ar pep brasañ eo diazezet ar bitrakoù-se war JavaScript, setu ma rank JavaScript bezañ gweredekaet war ho merdeer evit ma'z afent en-dro.\nNotennit mat ne vo efed ebet gant ar bitrakoù-se war ar bajenn penndibaboù-mañ.\n\nNotennit ivez n'eus ket eus ar bitrakoù-se tammoù eus meziant MediaWiki; peurliesañ ez int diorroet ha trezalc'het gant implijerien war ho wiki lec'hel.\nGallout a ra ar verourien lec'hel degas cheñchamantoù er bitrakoù en ur ober gant an [[MediaWiki:Gadgets-definition|termenadurioù]] hag an [[Special:Gadgets|deskrivadurioù]].",
+ "gadgets": "Bitrakoù",
+ "gadgetusage-usercount": "Niver a implijerien",
+ "gadgets-title": "Bitrakoù",
+ "gadgets-pagetext": "A-is ez eus ur roll eus ar bitrakoù a c'hall bezañ gweredekaet gant an implijerien war o fajenn [[Special:Preferences#mw-prefsection-gadgets|penndibaboù]], evel m'eo termenet en [[MediaWiki:Gadgets-definition|termenadurioù]].\nAr sell hollek-mañ a bourchas ur moned aes d'ar pajennoù kemennadennoù reizhiad a dermen deskrivadur ha kod pep bitrak.",
+ "gadgets-uses": "A implij",
+ "gadgets-required-rights": "Rekis eo kaout an {{PLURAL:$2|aotre|aotreoù}} da-heul : \n$1",
+ "gadgets-required-skins": "Hegerz gant ar {{PLURAL:$2|gwiskadur $1|gwiskadurioù da-heul : $1}}.",
+ "gadgets-default": "Gweredekaet dre ziouer evit an holl.",
+ "gadgets-export": "Ezporzhiañ",
+ "gadgets-export-title": "Ezporzhiañ bitrakoù",
+ "gadgets-not-found": "N'eo ket bet kavet ar bitrak \"$1\".",
+ "gadgets-export-text": "Evit ezporzhiañ ar bitrak $1, klikañ war ar bouton \"{{int:gadgets-export-download}}\", enrollañ ar restr pellgarget,\nmont d'ar bajenn Dibar :Enporzh ar wiki tal hag enporzhiañ. Goude-se ouzhpennañ an destenn da-heul e pajenn MediaWiki:Gadgets-definition :\n<pre>$2</pre>\nRankout a rit kaout ar gwirioù a zere war ar wiki tal (en o zouez ar gwir da zegas kemmoù er c'hemennadennoù reizhiad) ha ret eo d'an enporzhiañ adalek restroù bezañ gweredekaet.",
+ "gadgets-export-download": "Pellgargañ"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/bs.json b/www/wiki/extensions/Gadgets/i18n/bs.json
new file mode 100644
index 00000000..8d89513e
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/bs.json
@@ -0,0 +1,33 @@
+{
+ "@metadata": {
+ "authors": [
+ "CERminator",
+ "Srdjan m"
+ ]
+ },
+ "gadgets-desc": "Omogućava korisnicima da odaberu vlastite [[Special:Gadgets|CSS i JavaScript dodatke]] (gadgets) u svojim [[Special:Preferences#mw-prefsection-gadgets|postavkama]]",
+ "prefs-gadgets": "Dodaci",
+ "gadgets-prefstext": "Ovo je spisak posebnih dodataka koje možete uključiti za svoj korisnički račun.\nOvi dodaci se najčešće zasnivaju na JavaScriptu, tako da ga morate uključiti u svom web pregledniku da bi mogli raditi.\nZapamtite da ovi dodaci nemaju utjecaj na ovu stranicu s postavkama.\n\nZapamtite da ovi posebni dodaci nisu dio MediaWiki softvera, te ih obično prave i razvijaju korisnici na lokalnim wikijima.\nAdministratori mogu mijenjati dostupne dodatke koristeći [[MediaWiki:Gadgets-definition|definicije]] i [[Special:Gadgets|opise]]. Broj korisnika koji koriste svaki dodatak na ovom wikiju naveden je se u [[Special:GadgetUsage|statistici korištenja dodataka]].",
+ "gadgets": "Dodaci (gadgets)",
+ "gadgetusage": "Statistika korištenja dodataka",
+ "gadgetusage-gadget": "Dodatak",
+ "gadgetusage-usercount": "Broj korisnika",
+ "gadgetusage-noresults": "Nije pronađen nijedan dodatak.",
+ "gadgetusage-intro": "Tabela prikazuje koliko je korisnika uključilo određene dodatke na wikiju. Pod aktivnim korisnicima smatraju se oni koji su napravili izmjenu u {{PLURAL:$1|posljednji dan|posljednja $1 dana|posljednjih $1 dana}}. Spisak ne prikazuje statistike za standardne dodatke (koji su svima prvobitno uključeni) i moguće je da sadrži dodatke koji više nisu dostupni.",
+ "gadgetusage-activeusers": "Aktivni korisnici",
+ "gadgetusage-default": "Standardni",
+ "gadgets-title": "Dodaci",
+ "gadgets-pagetext": "Ispod je spisak posebnih dodataka koje korisnici mogu omogućiti na svojim [[Special:Preferences#mw-prefsection-gadgets|postavkama]], kako je to definisano u [[MediaWiki:Gadgets-definition|definicijama dodataka]].\nOvaj pregled daje jednostavan pristup sistemu stranica poruka koje definišu svaki dodatak i njihov opis i kod.",
+ "gadgets-uses": "Upotrebe",
+ "gadgets-required-rights": "Zahtijeva {{PLURAL:$2|sljedeće pravo|sljedeća prava}}:\n\n$1",
+ "gadgets-default": "Omogućeno za svakog po postavkama.",
+ "gadgets-export": "Izvoz",
+ "gadgets-export-title": "Izvoz dodatka",
+ "gadgets-not-found": "Dodatak \"$1\" nije pronađen.",
+ "gadgets-export-text": "Za izvoz dodatka $1, kliknite na dugme \"{{int:gadgets-export-download}}\", spremite skinutu datoteku,\nidite na Posebno:Uvoz na odredišnu wiki i postavite je. Zatim dodajte slijedeće na stranicu MediaWiki:Gadgets-definition:\n<pre>$2</pre>\nMorate imati odgovarajuća prava na odredišnoj wiki (uključujući pravo da uređujete sistemske poruke) i uvoz iz postavljenih datoteka mora biti omogućen.",
+ "gadgets-export-download": "Skidanje",
+ "right-gadgets-edit": "Uređivanje JavaScript i CSS stranica dodataka",
+ "action-gadgets-edit": "uredite JavaScript ili CSS stranicu ovog dodatka",
+ "right-gadgets-definition-edit": "Uređivanje definicija dodataka",
+ "action-gadgets-definition-edit": "uredite definiciju ovog dodatka"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/ca.json b/www/wiki/extensions/Gadgets/i18n/ca.json
new file mode 100644
index 00000000..f2fb7bd6
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/ca.json
@@ -0,0 +1,36 @@
+{
+ "@metadata": {
+ "authors": [
+ "Aleator",
+ "Gemmaa",
+ "Paucabot",
+ "SMP",
+ "Toniher",
+ "Vriullop",
+ "Alvaro Vidal-Abarca",
+ "Eduardo Martinez",
+ "Macofe"
+ ]
+ },
+ "gadgets-desc": "Permet als usuaris personalitzar [[Special:Gadgets|ginys CSS i JavaScript]] a les seves [[Special:Preferences#mw-prefsection-gadgets|preferències]]",
+ "prefs-gadgets": "Ginys",
+ "gadgets-prefstext": "A continuació teniu una llista de ginys especials que podeu activar al vostre compte.<br />\nLa majoria d'aquests ginys fan servir JavaScript, per tant l'haureu de tenir activat al vostre navegador per a que funcionin.\nTingueu en compte que aquests ginys no tenen cap efecte sobre aquesta pàgina de preferències.\n\nTingueu també present que aquests ginys especials no formen part del programari MediaWiki i que acostumen a estar fets i mantinguts per usuaris del vostre wiki local.<br />\nEls administradors locals poden editar els ginys disponibles fent servir [[MediaWiki:Gadgets-definition|definicions]] i [[Special:Gadgets|descripcions]].",
+ "gadgets": "Ginys",
+ "gadgetusage": "Estadístiques d'ús de ginys",
+ "gadgetusage-gadget": "Giny",
+ "gadgetusage-usercount": "Nombre d'usuaris",
+ "gadgetusage-intro": "Aquesta taula indica el nombre d'usuaris que tenen activat cada giny en aquest wiki. Pot incloure ginys que ja no estan disponibles.",
+ "gadgets-title": "Ginys",
+ "gadgets-pagetext": "A continuació teniu una llista de ginys especials que els usuaris poden activar a la seva [[Special:Preferences#mw-prefsection-gadgets|pàgina de preferències]], segons les [[MediaWiki:Gadgets-definition|seves definicions]].\nAquesta llista permet un fàcil accés a les pàgines del sistema que defineixen la descripció i el codi de cada giny.",
+ "gadgets-uses": "Usa",
+ "gadgets-required-rights": "{{PLURAL:$2|Es necessita el dret següent|Es necessiten els drets següents}}:\n\n$1",
+ "gadgets-required-skins": "Disponible a la {{PLURAL:$2| $1 skin|following skins: $1 }}.",
+ "gadgets-default": "Habilitat per a tothom per defecte.",
+ "gadgets-export": "Exporta",
+ "gadgets-export-title": "Exportació de ginys",
+ "gadgets-not-found": "No s'ha trobat el giny «$1».",
+ "gadgets-export-text": "Per a exportar el giny $1, feu clic al botó «{{int:gadgets-export-download}}», deseu el fitxer baixat,\naneu a Special:Import al wiki de destinació i pugeu-lo. Llavors afegiu el següent a la pàgina MediaWiki:Gadgets-definition:\n<pre>$2</pre>\nHeu de tenir els permisos adequats en el wiki de destinació (incloent-hi els permisos per editar missatges del sistema) i s'ha d'habilitar la importació de la pujada de fitxers.",
+ "gadgets-export-download": "Baixa",
+ "apihelp-query+gadgets-example-2": "Obtenir una llista dels ginys amb totes les propietats possibles",
+ "right-gadgets-edit": "Edita el gadget JavaScript i les pàgines CSS"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/ce.json b/www/wiki/extensions/Gadgets/i18n/ce.json
new file mode 100644
index 00000000..bd82ce2f
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/ce.json
@@ -0,0 +1,30 @@
+{
+ "@metadata": {
+ "authors": [
+ "Sasan700",
+ "Умар"
+ ]
+ },
+ "gadgets-desc": "Аьтто бо декъашхошна харжам ба [[Special:Preferences#mw-prefsection-gadgets|гIирс нисбарца]] CSS- а JavaScript-хIоттончаш, лато лууш йерш",
+ "prefs-gadgets": "Гаджеташ",
+ "gadgets-prefstext": "Лаххьа балийна леррина гаджеташ могӀам, шуьга шайга латалур йолуш хьай долахь долучу дакъан.\nХӀара гаджеташ дуккхачу хьолехь болх беш ю оцу JavaScript тӀехь, цундела аша латоеза JavaScript шай браузер чохь, цаьрга болх байта.\nДиц маделаш, хӀара гаджеташ болх бяш яц хӀо гӀирс нисбо агӀон чохь.\n\nИшта диц маде, хӀара гаджеташ юкъа йогуш яц кху MediaWiki гӀирсашна, мадарра аьльча шу санна декъашхоша шаьш йеш ю.\nКуьйгалхошка шайг хийцало и гаджетийн могӀам, хӀокху могӀам гӀоьнца [[MediaWiki:Gadgets-definition|къастам бало]] а [[Special:Gadgets|церах лаьцна]].",
+ "gadgets": "Гаджеташ",
+ "gadgetusage": "Гаджеташ лелоран статистика",
+ "gadgetusage-gadget": "Гаджеташ",
+ "gadgetusage-usercount": "Декъашхойн дукхалла",
+ "gadgetusage-noresults": "Гаджеташ цакарий",
+ "gadgetusage-intro": "ХӀокху таблица тӀехь гойту хӀокху вики чохь гаджеташ латина болу декъашхойн дукхалла. Жигара декъашхо лору {{PLURAL:$1|тӀеххьара $1 дийнахь}} хийцамаш бинарг. ХӀокху могӀам тӀехь массарна Ӏадйитаран кепаца латина йолу гаджеташ ца гойту, цул совнах хӀинца болх беш йоцу гаджеташ могӀам тӀехь хила мега.",
+ "gadgetusage-activeusers": "Жигара декъашхой",
+ "gadgetusage-default": "Ӏадйитаран кеп",
+ "gadgets-title": "Гаджеташ",
+ "gadgets-pagetext": "ГӀирса хааман могӀамаш, къастош йолу гаджетийн цӀерш, хуьлаш йолу хӀокху [[MediaWiki:Gadgets-definition|къастамца]].\nХӀокху могIамо атто бо гIирсан хаамаш атта тӀе кхочуш барца, цуьнах лаьцна хӀоттош а йолуш йолучу гаджетийн кодаца.",
+ "gadgets-uses": "Лелош ю",
+ "gadgets-required-rights": "{{PLURAL:$2|1=Оьшуш ю бакъо|Оьшуш ю бакъонаш}}:\n\n$1",
+ "gadgets-default": "Латае массарна Ӏадйитаран кепаца.",
+ "gadgets-export": "Экспорт ян",
+ "gadgets-export-title": "Гаджет экспорт яр",
+ "gadgets-not-found": "Гаджет «$1» цакарий.",
+ "gadgets-export-text": "Гаджет $1 экспорт ян тӀетаӀае кнопка «{{int:gadgets-export-download}}», тӀакха чуяьккхина файл Ӏалаше,\nSpecial:Import агӀона дехьа гӀой чуяккха файл. ТӀакха MediaWiki:Gadgets-definition агӀона чу билла лахара могӀа:\n<pre>$2</pre>\nИ болх бан хьан бакъо хила еза (кхин системин хаамаш та ян бакъо а хила еза), кхи серверан чохь файлаш импорт йо гӀирс латина хила беза.",
+ "gadgets-export-download": "Схьаэца",
+ "gadgets-validate-notset": "Билгало <code>$1</code> дӀахӀоттийна йац."
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/ckb.json b/www/wiki/extensions/Gadgets/i18n/ckb.json
new file mode 100644
index 00000000..4214706e
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/ckb.json
@@ -0,0 +1,31 @@
+{
+ "@metadata": {
+ "authors": [
+ "Asoxor",
+ "Calak",
+ "Sarchia"
+ ]
+ },
+ "prefs-gadgets": "ئامرازەکان",
+ "gadgets-prefstext": "ژێرەوە پێرستێک لەم ئامرازە تایبەتانەیە کە دەتوانی بۆ ھەژماکەت چالاکی بکەی.\nئەم ئامرازانە لەسەر بنەمای جاڤاسکریپتن، کە وا بوو بۆ کەڵک لێ‌وەرگرتنیان دەبێ جاڤاسکریپتی وێبگەڕەکەت چالاک بکەی.\nئەمە بزانە ئەم ئامرازانە ھیچ کاریگەرییەکیان لەسەر پەڕەی ھەڵبژاردەکەتدا نییە.\n\nھەروەھا ئەمەش بزانە ئەم ئامرازە تایبەتانە بەشێک لە نەرمامێری میدیاویکی نین و زیاتر لە لایەن بەکارھێنەرانی ویکیی خۆماڵیی خۆت پەرەی پێ‌دەدرێت و دەپارێزرێت.\nبەڕێوەبەرانی خۆماڵی دەتوانن [[MediaWiki:Gadgets-definition|پێناسەکان]] و [[Special:Gadgets|تێبینییەکانی]] ئامرازەکان دەستکاری بکەن.",
+ "gadgets": "ئامرازەکان",
+ "gadgetusage": "ئامارەکانی بەکارھێنانی ئامراز",
+ "gadgetusage-gadget": "ئامراز",
+ "gadgetusage-usercount": "ژمارەی بەکارھێنەران",
+ "gadgetusage-noresults": "ھیچ ئامرازێک نەدۆزرایەوە",
+ "gadgetusage-activeusers": "بەکارھێنەرە چالاکەکان",
+ "gadgetusage-default": "بنچینەیی",
+ "gadgets-title": "ئامرازەکان",
+ "gadgets-pagetext": "ژێرەوە پێرستێک لەم ئامرازە تایبەتانەیە کە بەکارھینەران دەتوانن لە ڕێگەی [[Special:Preferences#mw-prefsection-gadgets|پەڕەی ھەڵبژاردەکەیان]]ەوە چالاکی بکەن کە لە [[MediaWiki:Gadgets-definition|پێناسەکان]]دا دەناسێنرێن.\nئەم کورتەیە دەست پێ‌ڕاگەییشتن بە پەڕکانی پەیامی سیستەم کە تێبینی و کۆدی ئامرازەکانی تێدا ھاتووە ئاسان دەکاتەوە.",
+ "gadgets-uses": "بەکارگیراو",
+ "gadgets-required-rights": "پێویستی بەم {{PLURAL:$2|مافەی|مافانەی}} ژێرەوە ھەیە:\n\n$1",
+ "gadgets-default": "بە شێوەی بەرگریمانە بۆ ھەموو کەس چالاکە.",
+ "gadgets-export": "هەناردن",
+ "gadgets-export-title": "ھەناردنی ئامراز",
+ "gadgets-not-found": "ئامرازی «$1» نەدۆزرایەوە.",
+ "gadgets-export-text": "بۆ ھەناردنی ئامرازی $1، لەسەر دوگمەی «{{int:gadgets-export-download}}» کرتە بکە، پەڕگە داگرتووەکە پاشەکەوت بکە،\nبچۆ بۆ Special:Import لە ویکیی مەبەستدا و باری بکە. پاشان ئەمەی ژێرەوە بە پەڕەی MediaWiki:Gadgets-definition زیاد بکە:\n<pre>$2</pre>\nپێویستە لە ویکیی مەبەستدا مافی گونجاوت ھەبێ (وەک مافی دەستکاریی پەیامەکانی سیستەم) و ھاوردنی پەڕگە بارکراوەکان دەبێ چالاک کرابێ.",
+ "gadgets-export-download": "داگرتن",
+ "gadgets-validate-notset": "تایبەتمەندیی <code>$1</code> دەستنیشان نەکراوە.",
+ "right-gadgets-definition-edit": "پێناسەکانی ئامراز دەستکاری بکە",
+ "action-gadgets-definition-edit": "دەستکاری کردنی ئەم پێناسەی ئامرازە"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/cs.json b/www/wiki/extensions/Gadgets/i18n/cs.json
new file mode 100644
index 00000000..3ee03e41
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/cs.json
@@ -0,0 +1,40 @@
+{
+ "@metadata": {
+ "authors": [
+ "Danny B.",
+ "Li-sung",
+ "Mormegil",
+ "Matěj Suchánek"
+ ]
+ },
+ "gadgets-desc": "Umožňuje uživatelům vybrat si v [[Special:Preferences#mw-prefsection-gadgets|nastavení]] [[Special:Gadgets|CSSová a JavaScriptová udělátka]].",
+ "prefs-gadgets": "Udělátka",
+ "gadgets-prefstext": "Níže je přehled speciálních udělátek, která si můžete ve svém účtu zapnout.\nTato udělátka jsou založena převážně na JavaScriptu, takže je pro jejich funkčnost nutné mít v prohlížeči JavaScript zapnutý.\nUdělátka nejsou aplikována na této stránce nastavení.\n\nUvědomte si také, že speciální udělátka nejsou součástí softwaru MediaWiki a&nbsp;jsou vytvářena a&nbsp;spravována uživateli této wiki.\nMístní správci mohou upravovat [[MediaWiki:Gadgets-definition|definice]] a&nbsp;[[Special:Gadgets|popisy]] dostupných udělátek. Počty uživatelů každého udělátka na této wiki jsou zaznamenány ve [[Special:GadgetUsage|statistice užívání udělátek]].",
+ "gadgets": "Udělátka",
+ "gadgetusage": "Statistika využití udělátek",
+ "gadgetusage-gadget": "Udělátko",
+ "gadgetusage-usercount": "Počet uživatelů",
+ "gadgetusage-noresults": "Nenalezena žádná udělátka.",
+ "gadgetusage-intro": "Tato tabulka zobrazuje počet uživatelů, kteří si zapnuli jednotlivá udělátka na této wiki. Jako aktivní se počítají uživatelé, kteří za {{PLURAL:$1|poslední den|poslední $1 dny|posledních $1 dní}} provedli editaci. Seznam nezahrnuje statistiky udělátek, která jsou pro všechny implicitně zapnutá, a může zahrnovat i udělátka, která již nejsou dostupná.",
+ "gadgetusage-intro-noactive": "Tato tabulka zobrazuje počet uživatelů, kteří si zapnuli jednotlivá udělátka na této wiki. Seznam nezahrnuje statistiky udělátek, která jsou pro všechny implicitně zapnutá, a může zahrnovat i udělátka, která již nejsou dostupná.",
+ "gadgetusage-activeusers": "Aktivní uživatelé",
+ "gadgetusage-default": "Výchozí",
+ "gadgets-title": "Udělátka",
+ "gadgets-pagetext": "Níže je přehled speciálních udělátek, která si uživatelé mohou zapnout ve svém [[Special:Preferences#mw-prefsection-gadgets|nastavení]]. Jejich seznam lze upravovat na stránce [[MediaWiki:Gadgets-definition]].\nTento přehled poskytuje jednoduchý přístup k&nbsp;systémovým hlášením, která definují zdrojový kód a&nbsp;popis každého udělátka.",
+ "gadgets-uses": "používá",
+ "gadgets-required-rights": "Vyžaduje následující {{PLURAL:$2|oprávnění}}:\n\n$1",
+ "gadgets-required-skins": "Dostupné {{PLURAL:$2|pro vzhled $1|pro následující vzhledy: $1}}.",
+ "gadgets-default": "Implicitně zapnuto všem.",
+ "gadgets-legacy": "Udělátko se nenačítá. Převeďte ho prosím na ResourceLoader. ([https://www.mediawiki.org/wiki/ResourceLoader/Migration_guide_(users) Více informací])",
+ "gadgets-export": "Exportovat",
+ "gadgets-export-title": "Export udělátka",
+ "gadgets-not-found": "Udělátko „$1“ nebylo nalezeno.",
+ "gadgets-export-text": "Chcete-li exportovat udělátko $1, klikněte na tlačítko „{{int:gadgets-export-download}}“, uložte stažený soubor, na cílové wiki přejděte na stránku Special:Import a soubor načtěte. Poté na tamní stránku MediaWiki:Gadgets-definition přidejte následující:\n<pre>$2</pre>\nNa cílové wiki musíte mít příslušná oprávnění (včetně práva editovat systémová hlášení) a musí tam být povolen import načtením souboru.",
+ "gadgets-export-download": "Stáhnout",
+ "gadgets-validate-notset": "Není nastavena vlastnost <code>$1</code>.",
+ "gadgets-validate-wrongtype": "Vlastnost <code>$1</code> musí být typu <code>$2</code> namísto typu <code>$3</code>.",
+ "right-gadgets-edit": "Editace stránek s JavaScriptem a CSS udělátek",
+ "action-gadgets-edit": "editovat stránku s JavaScriptem nebo CSS tohoto udělátka",
+ "right-gadgets-definition-edit": "Editace definic udělátek",
+ "action-gadgets-definition-edit": "editovat definici tohoto udělátka"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/cu.json b/www/wiki/extensions/Gadgets/i18n/cu.json
new file mode 100644
index 00000000..5de12cd8
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/cu.json
@@ -0,0 +1,10 @@
+{
+ "@metadata": {
+ "authors": [
+ "ОйЛ"
+ ]
+ },
+ "gadgetusage-usercount": "польꙃєватєлъ число",
+ "gadgets-title": "доплънитєл҄ьнꙑ орѫдиꙗ",
+ "gadgets-export-download": "поѩтиѥ"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/cv.json b/www/wiki/extensions/Gadgets/i18n/cv.json
new file mode 100644
index 00000000..d82c4b36
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/cv.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Chuvash2014"
+ ]
+ },
+ "gadgets": "Гаджетсем"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/cy.json b/www/wiki/extensions/Gadgets/i18n/cy.json
new file mode 100644
index 00000000..2e544576
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/cy.json
@@ -0,0 +1,27 @@
+{
+ "@metadata": {
+ "authors": [
+ "Lloffiwr",
+ "Robin Owain"
+ ]
+ },
+ "gadgets-desc": "Yn galluogi defnyddwyr i ddewis [[Special:Gadgets|teclynnau CSS a JavaScript]] yn eu [[Special:Preferences#mw-prefsection-gadgets|dewisiadau]]",
+ "prefs-gadgets": "Teclynnau",
+ "gadgets-prefstext": "Ceir rhestr isod o'r teclynnau y gallwch eu galluogi.\nMae'r rhan fwyaf o'r teclynnau yn defnyddio JavaScript, felly mae'n rhaid galluogi JavaScript ar eich porwr er mwyn iddynt weithio.\nSylwer na gaiff y teclynnau hyn unrhyw effaith ar y dudalen hon o ddewisiadau.\n\nSylwer hefyd nad yw'r teclynnau hyn yn ran o feddalwedd MediaWiki; fel arfer defnyddwyr y wici hwn sydd wedi datblygu'r teclynnau ac sydd yn eu cynnal.\nMae gweinyddwyr y wici hwn yn gallu golygu [[MediaWiki:Gadgets-definition|diffiniadau]] a [[Special:Gadgets|disgrifiadau]]'r teclynnau sydd ar gael.",
+ "gadgets": "Teclynnau",
+ "gadgetusage": "Ystadegau o'r defnydd o declynnau",
+ "gadgetusage-gadget": "Teclynnau",
+ "gadgetusage-usercount": "Nifer y defnyddwyr",
+ "gadgetusage-noresults": "Ni chafwyd hyd i declynnau.",
+ "gadgets-title": "Teclynnau",
+ "gadgets-pagetext": "Isod mae rhestr o declynnau arbennig y gall defnyddwyr eu galluogi ar eu [[Special:Preferences#mw-prefsection-gadgets|tudalennau dewisiadau]], sef rhestr a bennir yn y dudalen [[MediaWiki:Gadgets-definition|diffiniadau]].\nMae'r trosolwg hwn yn cynnig mynediad rhwydd at y tudalennau negeseuon sustem sy'n diffinio disgrifiad a chod pob teclyn.",
+ "gadgets-uses": "Yn defnyddio",
+ "gadgets-required-rights": "Mae gofyn cael y {{PLURAL:$2||gallu|galluoedd|galluoedd|galluoedd|galluoedd}}:\n\n$1",
+ "gadgets-required-skins": "Ar gael ar y {{PLURAL:$2|wedd $1|gweddau hyn: $1}}.",
+ "gadgets-default": "Wedi ei alluogi i bawb yn ddiofyn.",
+ "gadgets-export": "Allforio",
+ "gadgets-export-title": "Allforio teclyn",
+ "gadgets-not-found": "Heb ddod o hyd i'r teclyn \"$1\".",
+ "gadgets-export-text": "I allforio'r teclyn $1, pwyswch ar y botwm \"{{int:gadgets-export-download}}\", rhowch y ffeil a islwythir ar gadw, ewch i Special:Import ar wici'r pendraw a'i huwchlwytho. Yna ychwanegwch y canlynol at y dudalen MediaWiki:Gadgets-definition:\n<pre>$2</pre>\nMae'n rhaid bod y galluoedd pwrpasol gennych ar wici'r pendraw (gan gynnwys y gallu i olygu negeseuon y sustem), a rhaid bod mewnforio drwy uwchlwytho ffeiliau wedi ei alluogi.",
+ "gadgets-export-download": "Islwyther"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/da.json b/www/wiki/extensions/Gadgets/i18n/da.json
new file mode 100644
index 00000000..95721b2f
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/da.json
@@ -0,0 +1,23 @@
+{
+ "@metadata": {
+ "authors": [
+ "Byrial",
+ "Peter Alberti"
+ ]
+ },
+ "gadgets-desc": "Lader brugere vælge brugerdefinerede [[Special:Gadgets|CSS og JavaScript gadgets]] i deres [[Special:Preferences#mw-prefsection-gadgets|indstillinger]]",
+ "prefs-gadgets": "Gadgets",
+ "gadgets-prefstext": "Nedenstående er en liste over de gadgets som du kan aktivere for din brugerkonto.\nDa disse gadgets hovedsageligt er baseret på JavaScript skal du slå JavaScript til i din browser for at få dem til at virke.\nBemærk at disse gadgets ikke vil have nogen effekt på denne side (indstillinger).\n\nBemærk også at disse specielle gadgets ikke er en del af MediaWiki-softwaren og at de typisk bliver vedligeholdt af brugere på din lokale wiki.\nLokale administratorer kan redigere tilgængelige gadgets med [[MediaWiki:Gadgets-definition|definitioner]] og [[Special:Gadgets|beskrivelser]].",
+ "gadgets": "Gadgets",
+ "gadgets-title": "Gadgets",
+ "gadgets-pagetext": "Nedenstående er en liste med de specielle gadgets som brugere kan aktivere i deres [[Special:Preferences#mw-prefsection-gadgets|indstillinger]], som defineret i [[MediaWiki:Gadgets-definition|definitionerne]].\nDenne oversigtsside giver simpel adgang til de beskedsider som definerer hver gadgets beskrivelse og kode.",
+ "gadgets-uses": "Bruger",
+ "gadgets-required-rights": "Kræver {{PLURAL:$2|rettigheden|følgende rettigheder}}:\n\n$1",
+ "gadgets-required-skins": "Tilgængelig for {{PLURAL:$2|$1-udseendet|de følgende udseender: $1}}.",
+ "gadgets-default": "Aktiveret for alle som standard.",
+ "gadgets-export": "Eksporter",
+ "gadgets-export-title": "Eksporter gadget",
+ "gadgets-not-found": "Gadget \"$1\" ikke fundet.",
+ "gadgets-export-text": "For at eksportere værktøjet $1, klik på knappen \"{{int:gadgets-export-download}}\", gem den downloadede fil, gå til Special:Import på destinationswikien og læg den op. Tilføj så følgende til siden MediaWiki:Gadgets-definition:\n<pre>$2</pre>\nDu skal have de nødvendige rettigheder på destinationswikien (herunder rettigheden til at redigere systemmeddelelser) og importering via oplægning af filer skal være slået til.",
+ "gadgets-export-download": "Download"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/de-ch.json b/www/wiki/extensions/Gadgets/i18n/de-ch.json
new file mode 100644
index 00000000..a0309ad6
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/de-ch.json
@@ -0,0 +1,10 @@
+{
+ "@metadata": {
+ "authors": [
+ "Geitost"
+ ]
+ },
+ "gadgets-prefstext": "Dies ist eine Liste spezieller Helferlein, die jeder Benutzer aktivieren kann.\nDie Helferlein basieren zumeist auf JavaScript. Daher muss JavaScript im Browser aktiviert sein, damit sie funktionieren können.\nSie funktionieren allerdings nicht auf dieser Spezialseite mit den persönlichen Einstellungen.\n\nAusserdem ist zu beachten, dass diese Helferlein im Allgemeinen nicht Teil von MediaWiki sind, sondern meist von Benutzern lokaler Wikis entwickelt und gewartet werden.\nLokale Administratoren können die verfügbaren Helferlein bearbeiten. Dafür stehen die [[MediaWiki:Gadgets-definition|Definitionen]] und [[Special:Gadgets|Beschreibungen]] zur Verfügung.",
+ "gadgets-default": "Für alle standardmässig aktiviert.",
+ "gadgets-export-text": "Um das Helferlein $1 zu exportieren, klicke auf die Schaltfläche «{{int:gadgets-export-download}}» und speichere die heruntergeladene Datei. Gehe sodann zur Spezialseite Spezial:Import auf dem für den Import vorgesehenen Wiki und lade die Datei hoch. Füge danach den folgenden Text zur Seite MediaWiki:Gadgets-definition hinzu:\n<pre>$2</pre>\nDu musst über die notwendigen Berechtigungen auf dem für den Import vorgesehenen Wiki verfügen (einschliesslich der Berechtigung, MediaWiki-Systemnachrichten zu bearbeiten). Zudem muss der Import von Datei-Uploads aktiviert sein."
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/de-formal.json b/www/wiki/extensions/Gadgets/i18n/de-formal.json
new file mode 100644
index 00000000..e8406fe2
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/de-formal.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "Geitost",
+ "Kghbln"
+ ]
+ },
+ "gadgets-export-text": "Um das Helferlein $1 zu exportieren, klicken Sie auf die Schaltfläche „{{int:gadgets-export-download}}“ und speichern Sie die heruntergeladene Datei. Gehen Sie sodann zur Spezialseite Spezial:Import auf dem für den Import vorgesehenen Wiki und laden die Datei hoch. Fügen Sie danach den folgenden Text zur Seite MediaWiki:Gadgets-definition hinzu:\n<pre>$2</pre>\nSie müssen über die notwendigen Berechtigungen auf dem für den Import vorgesehenen Wiki verfügen (einschließlich der Berechtigung, MediaWiki-Systemnachrichten zu bearbeiten). Zudem muss der Import von Datei-Uploads aktiviert sein."
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/de.json b/www/wiki/extensions/Gadgets/i18n/de.json
new file mode 100644
index 00000000..ede332e9
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/de.json
@@ -0,0 +1,64 @@
+{
+ "@metadata": {
+ "authors": [
+ "Daniel Kinzler, brightbyte.de",
+ "Geitost",
+ "Kghbln",
+ "Metalhead64",
+ "Raimond Spekking",
+ "The Evil IP address",
+ "Umherirrender",
+ "✓",
+ "Tiin",
+ "FriedhelmW"
+ ]
+ },
+ "gadgets-desc": "Ermöglicht es Benutzern, in ihren [[Special:Preferences#mw-prefsection-gadgets|persönlichen Einstellungen]] vordefinierte [[Special:Gadgets|CSS- und JavaScript-Helferlein]] zu aktivieren",
+ "prefs-gadgets": "Helferlein",
+ "gadgets-prefstext": "Dies ist eine Liste spezieller Helferlein, die jeder Benutzer aktivieren kann.\nDie Helferlein basieren zumeist auf JavaScript. Daher muss JavaScript im Browser aktiviert sein, damit sie funktionieren können.\nSie funktionieren allerdings nicht auf dieser Spezialseite mit den persönlichen Einstellungen.\n\nAußerdem ist zu beachten, dass diese Helferlein im Allgemeinen nicht Teil von MediaWiki sind, sondern meist von Benutzern lokaler Wikis entwickelt und gewartet werden.\nLokale Administratoren können die verfügbaren Helferlein bearbeiten. Dafür stehen die [[MediaWiki:Gadgets-definition|Definitionen]] und [[Special:Gadgets|Beschreibungen]] zur Verfügung. Die Anzahl der Benutzer für jedes Helferlein auf diesem Wiki ist in den [[Special:GadgetUsage|Nutzungsstatistiken von Helferlein]] gelistet.",
+ "gadgets": "Helferlein",
+ "gadgetusage": "Statistik zur Nutzung der Helferlein",
+ "gadgetusage-gadget": "Helferlein",
+ "gadgetusage-usercount": "Anzahl der Benutzer",
+ "gadgetusage-noresults": "Keine Helferlein gefunden.",
+ "gadgetusage-intro": "Diese Tabelle zeigt für jedes Helferlein auf diesem Wiki die Anzahl der Benutzer an, die es aktiviert haben. Als aktiver Benutzer wird jemand gezählt, der eine Bearbeitung während {{PLURAL:$1|des letzten Tages|der letzten $1 Tage}} durchgeführt hat. Diese Liste schließt Statistiken für Helferlein aus, die standardmäßig für jeden aktiviert sind und könnte Helferlein enthalten, die nicht mehr verfügbar sind.",
+ "gadgetusage-intro-noactive": "Diese Tabelle zeigt die Anzahl der Benutzer an, die jedes Helferlein auf diesem Wiki aktiviert haben. Diese Liste schließt Statistiken für Helferlein aus, die standardmäßig für jeden aktiviert sind und kann Helferlein beinhalten, die nicht mehr verfügbar sind.",
+ "gadgetusage-activeusers": "Aktive Benutzer",
+ "gadgetusage-default": "Standard",
+ "gadgets-title": "Helferlein",
+ "gadgets-pagetext": "Liste besonderer, in [[MediaWiki:Gadgets-definition]] festgelegter Helferlein, die für jeden Benutzer in seinen [[Special:Preferences#mw-prefsection-gadgets|persönlichen Einstellungen]] verfügbar sind.\nDiese Übersicht bietet direkten Zugang zu den MediaWiki-Systemnachrichten, welche die Beschreibung sowie den Programmcode jedes Helferlein enthalten.",
+ "gadgets-uses": "Benutzt",
+ "gadgets-required-rights": "Erfordert die {{PLURAL:$2|folgende Berechtigung|folgenden Berechtigungen}}:\n\n$1",
+ "gadgets-required-skins": "Verfügbar bei {{PLURAL:$2|der folgenden Benutzeroberfläche|den folgenden Benutzeroberflächen}}: $1.",
+ "gadgets-default": "Für alle standardmäßig aktiviert.",
+ "gadgets-legacy": "Das Helferlein ist nicht geladen. Bitte stelle auf den ResourceLoader um. ([https://www.mediawiki.org/wiki/ResourceLoader/Migration_guide_(users) Weitere Informationen])",
+ "gadgets-export": "Exportieren",
+ "gadgets-export-title": "Export der Helferlein",
+ "gadgets-not-found": "Helferlein „$1“ wurde nicht gefunden.",
+ "gadgets-export-text": "Um das Helferlein $1 zu exportieren, klicke auf die Schaltfläche „{{int:gadgets-export-download}}“ und speichere die heruntergeladene Datei. Gehe sodann zur Spezialseite Spezial:Import auf dem für den Import vorgesehenen Wiki und lade die Datei hoch. Füge danach den folgenden Text zur Seite MediaWiki:Gadgets-definition hinzu:\n<pre>$2</pre>\nDu musst über die notwendigen Berechtigungen auf dem für den Import vorgesehenen Wiki verfügen (einschließlich der Berechtigung, MediaWiki-Systemnachrichten zu bearbeiten). Zudem muss der Import von Datei-Uploads aktiviert sein.",
+ "gadgets-export-download": "Herunterladen",
+ "gadgets-validate-notset": "Die Eigenschaft <code>$1</code> ist nicht festgelegt.",
+ "gadgets-validate-wrongtype": "Die Eigenschaft <code>$1</code> muss vom Typ <code>$2</code> sein anstatt <code>$3</code>.",
+ "apihelp-query+gadgetcategories-description": "Gibt eine Liste mit Helferleinkategorien zurück.",
+ "apihelp-query+gadgetcategories-summary": "Gibt eine Liste der Helferlein-Kategorien zurück.",
+ "apihelp-query+gadgetcategories-param-prop": "Welche Information der Helferleinkategorie abgerufen werden soll:\n;name:Interner Name der Kategorie.\n;title:Titel der Kategorie.\n;members:Anzahl der Helferlein in der Kategorie.",
+ "apihelp-query+gadgetcategories-param-names": "Namen der abzurufenden Kategorien.",
+ "apihelp-query+gadgetcategories-example-1": "Ruft eine Liste vorhandener Helferleinkategorien ab",
+ "apihelp-query+gadgetcategories-example-2": "Ruft alle Informationen über Kategorien mit den Namen „foo“ und „bar“ ab",
+ "apihelp-query+gadgets-description": "Gibt eine Liste der Helferlein zurück, die auf diesem Wiki verwendet werden.",
+ "apihelp-query+gadgets-summary": "Gibt eine Liste der Helferlein zurück, die auf diesem Wiki verwendet werden.",
+ "apihelp-query+gadgets-param-prop": "Welche Information des Helferleins abgerufen werden soll:\n;id:Interne Kennung des Helferleins.\n;metadata:Die Metadaten des Helferleins.\n;desc:Die in HTML umgewandelte Beschreibung des Helferleins (kann langsam sein, nur verwenden, wenn wirklich benötigt).",
+ "apihelp-query+gadgets-param-categories": "Von welchen Kategorien die Helferlein abgerufen werden sollen.",
+ "apihelp-query+gadgets-param-ids": "Kennungen der abzurufenden Helferlein.",
+ "apihelp-query+gadgets-param-allowedonly": "Nur Helferlein auflisten, die für den aktuellen Benutzer erlaubt sind.",
+ "apihelp-query+gadgets-param-enabledonly": "Nur Helferlein auflisten, die vom aktuellen Benutzer aktiviert wurden.",
+ "apihelp-query+gadgets-example-1": "Ruft eine Liste der Helferlein zusammen mit ihren Beschreibungen ab",
+ "apihelp-query+gadgets-example-2": "Ruft eine Liste der Helferlein mit allen möglichen Eigenschaften ab",
+ "apihelp-query+gadgets-example-3": "Ruft eine Liste der Helferlein ab, die zur Kategorie „foo“ gehören",
+ "apihelp-query+gadgets-example-4": "Informationen über die Helferlein „foo“ und „bar“ abrufen",
+ "apihelp-query+gadgets-example-5": "Ruft eine Liste der Helferlein ab, die vom aktuellen Benutzer aktiviert wurden",
+ "right-gadgets-edit": "JavaScript- und CSS-Seiten von Helferlein bearbeiten",
+ "action-gadgets-edit": "diese JavaScript- oder CSS-Seite des Helferleins zu bearbeiten",
+ "right-gadgets-definition-edit": "Definitionen von Helferlein bearbeiten",
+ "action-gadgets-definition-edit": "diese Definition des Helferleins zu bearbeiten"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/diq.json b/www/wiki/extensions/Gadgets/i18n/diq.json
new file mode 100644
index 00000000..471388c5
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/diq.json
@@ -0,0 +1,36 @@
+{
+ "@metadata": {
+ "authors": [
+ "Erdemaslancan",
+ "Gorizon",
+ "Mirzali",
+ "Neribij",
+ "Olvörg",
+ "Xoser",
+ "Kumkumuk",
+ "1917 Ekim Devrimi",
+ "Gırd"
+ ]
+ },
+ "gadgets-desc": "Karberan ré destur bidek [[Special:Preferences#mw-prefsection-gadgets|hesıbyayan]]'ra [[Special:Gadgets|Hacetanê CSS u JavaScriptî]] bışé weçiné",
+ "prefs-gadgets": "Hacetê werdi",
+ "gadgets-prefstext": "Cêr de yew lista hacetanê xasan esta ke tı şenay xesabê xo de a kerê.\nEnê haceti JavaScript sero gureyenê, aye ra tı gani ageyrayoğê xo de JavaScript a kerê.\nEna pela opsiyoni de haceti tesir nêkenê.\n\nEnê hacetê xasi parçê sofwarê Mediyawiki niyê, aye ra karberê locali enê haceti vırazenê.\nİdarekarê meheli şenê be [[MediaWiki:Gadgets-definition|kıfşkerdeyan]] û [[Special:GadgetUsage|şınasnayış]] ra hacetanê mınasıban bıvurnê.",
+ "gadgets": "Hacetê werdi",
+ "gadgetusage": "İstatistikê karkerdışê hacetan",
+ "gadgetusage-gadget": "Hacet",
+ "gadgetusage-usercount": "Amari karberan",
+ "gadgetusage-noresults": "Hacet nivineya.",
+ "gadgets-title": "Hacetê werdi",
+ "gadgets-pagetext": "Cêr de yew listeya hacetanê xasan esta ke aıma senê [[Special:Preferences#mw-prefsection-gadgets|xesabê xo]] de akerê, seke [[MediaWiki:Gadgets-definition|selasnayış]] senê nışan bıkerê.\n\nNa degme weynayış, enê haceta dehana rehat cıresayışi rê imkan dana.",
+ "gadgets-uses": "Gureneno",
+ "gadgets-required-rights": "Cêrêni icab kenê {{PLURAL:$2|raşti|raşteya}}:\n\n$1",
+ "gadgets-required-skins": "Zerrey {{PLURAL:$2|$1 skin|skino ke pawêno: $1}} dı esto.",
+ "gadgets-default": "Merduman pêron rê aktiv ke.",
+ "gadgets-export": "Teberdayış",
+ "gadgets-export-title": "Teberdayışê gadgeti",
+ "gadgets-not-found": "Gadget \"$1\" nêvineya.",
+ "gadgets-export-text": "Qande gadgeto $1 teber rê rusnayış ,\"{{int:gadgets-export-download}}\" rê hengnayış kerên,u dosya ke download biyo,star kerên.Wikiyê hedef de şo pela Special:Import rê and download kerên.Bahdo nuşteyê ke cerên de dero pela MediaWiki:Gadgets-definition rê bınuse:\n<pre>$2</pre>\nWikiyê ke hedefo de desturê lazımo (vurnayışê mesacanê sistemi daxilo) u dosya ra zerê rê rusnayışi enabled lazımo.",
+ "gadgets-export-download": "Ron",
+ "right-gadgets-definition-edit": "Hacet weçine bıvurne",
+ "action-gadgets-definition-edit": "Ena Hacet weçine bıvurne"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/dsb.json b/www/wiki/extensions/Gadgets/i18n/dsb.json
new file mode 100644
index 00000000..08a85268
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/dsb.json
@@ -0,0 +1,22 @@
+{
+ "@metadata": {
+ "authors": [
+ "Michawiki"
+ ]
+ },
+ "gadgets-desc": "Dowólujo wužywarjam w jich [[Special:Preferences#mw-prefsection-gadgets|nastajenjach]] [[Special:Gadgets|gadgets CSS a JavaScript]] wubraś",
+ "prefs-gadgets": "Gadgets",
+ "gadgets-prefstext": "Dołojce jo lisćina specielnych gadgetow, kótarež móžoš za swójo konto zmóžniś.\nToś te gadgety se zwětšego bazěruju na JavaScripśe, togodla musy JavaScript w twójom wobglědowaku zmóžnjony byś, aby funkcioněrowali.\nGlědaj, až toś te gadgety njewustatkuju se na bok nastajenjow.\n\nGlědaj teke, až toś te gadgety njejsu źěl softwary MediaWiki a se zwětšego wót wužywarjow na twójom lokalnem wikiju wuwijaju a wótwarduju.\nLokalne administratory mógu k dispoziciji stojece gadgety z pomocu [[MediaWiki:Gadgets-definition|definicijow ]] a [[Special:Gadgets|wopisanjow]] wobźełaś.",
+ "gadgets": "Gadgets",
+ "gadgets-title": "Gadgets",
+ "gadgets-pagetext": "Dołojce jo lisćina specialnych gadgetow, kótarež wužywarje mógu w [[Special:Preferences#mw-prefsection-gadgets|swójich nastajenjach]] zmóžniś, kaž w [[MediaWiki:Gadgets-definition]] definiěrowane.\nToś ten pśeglěd bitujo lažki pśistup k bokam systemowych powěsćow, kótarež wopisanje a kod gadgeta definěruju.",
+ "gadgets-uses": "Wužywa",
+ "gadgets-required-rights": "Pomina se {{PLURAL:$2|slědujuce pšawo|slědujucej pšawje|slědujuce pšawa|slědujuce pšawa}}:\n\n$1",
+ "gadgets-required-skins": "Na {{PLURAL:$2|slědujucej drastwje|slědujucyma drastwoma|slědujucych drastwach|slědujucych drastwach}} k dispoziciji: $1",
+ "gadgets-default": "Za wšych standardnje zmóžnjony.",
+ "gadgets-export": "Eksportěrowaś",
+ "gadgets-export-title": "Eksport specialneje funkcije",
+ "gadgets-not-found": "Specialna funkcija \"$1\" njejo se namakała.",
+ "gadgets-export-text": "Aby specialnu funkciju $1 eksportěrował, klikni na tłocašk \"{{int:gadgets-export-download}}\", składuj ześěgnjonu dataju, źi do Special:Import w celowem wikiju a nagraj ju. Pśidaj pótom slědujuce k bokoju MediaWiki:Gadgets-definition:\n<pre>$2</pre>\nMusyš trěbne pšawa na celowem wikiju měś (inkluziwnje pšawo za wobźěłowanje systemowych powěźeńkow) a import datajowych nagraśow musy znjemóžnjony byś.",
+ "gadgets-export-download": "Ześěgnuś"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/dty.json b/www/wiki/extensions/Gadgets/i18n/dty.json
new file mode 100644
index 00000000..7cd3cb7b
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/dty.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "राम प्रसाद जोशी"
+ ]
+ },
+ "gadgets-prefstext": "विशेष उपकरणहरूको सूची तल दियाकोछ तमी आफ्नो खातामी सक्रिय पाड्ड सक्द्या हौ ।\nप्राय सबै उपकरणहरू जाभास्क्रीप्टमी आधारित छन्, यस कारण ब्राउजरमी काम गराउनका निउती जाभास्क्रीप्टलाई सक्रिय गद्दु पडन्छ ।\nयाद राख्या ती उपकरणहरूले रोजाई पानामी असर गद्दाइनन् ।\nयो पनि याद राख्या यी विशेष उपकरणहरू मीडिया विकि सफ्टवेयर भित्र पड्डाइनन् र प्राय स्थानीय विकि प्रयोगकर्ताहरूले यैको विकास र सञ्चालन गद्दान्। \nस्थानीय प्रबन्धकहरूले उपलब्ध उपकरणहरूका [[MediaWiki:Gadgets-definition|परिभाषाहरू]] र [[Special:Gadgets|विवरणहरू]] सम्पादन गद्दान्।",
+ "gadgets-pagetext": "विशेष उपकरणहरूको सूची तल दियाकोछ प्रयोगकर्तानले [[MediaWiki:Gadgets-definition|परिभाषाहरू]]मी जनाए अनुसार आफ्नो [[Special:Preferences#mw-prefsection-gadgets|रोजाई पानामी]], सक्रिय पार्न सक्द्याछन् ।\nयै सिंहावलोकनले प्रणाली सन्देश पाना सजिलै प्राप्त गद्द सकिन्याछ जसले प्रत्येक उपकरणको विवरण र कोडलाई परिभाषित गर्याको छ।"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/el.json b/www/wiki/extensions/Gadgets/i18n/el.json
new file mode 100644
index 00000000..63fe6c2b
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/el.json
@@ -0,0 +1,61 @@
+{
+ "@metadata": {
+ "authors": [
+ "AK",
+ "Badseed",
+ "Consta",
+ "Dead3y3",
+ "Glavkos",
+ "Lou",
+ "ZaDiak",
+ "Geraki",
+ "Protnet"
+ ]
+ },
+ "gadgets-desc": "Επιτρέπει στους χρήστες να επιλέξουν προσαρμοσμένες [[Special:Gadgets|μικροεφαρμογές CSS και JavaScript]] στις [[Special:Preferences#mw-prefsection-gadgets|προτιμήσεις]] τους",
+ "prefs-gadgets": "Μικροεφαρμογές",
+ "gadgets-prefstext": "Ακολουθεί μια λίστα με ειδικές μικροεφαρμογές που μπορείτε να ενεργοποιήσετε για το λογαριασμό σας.\nΑυτές οι μικροεφαρμογές είναι βασισμένες κυρίως σε JavaScript, οπότε το JavaScript θα πρέπει να είναι ενεργοποιημένο στο πρόγραμμα περιήγησής σας για να δουλέψουν.\nΝα σημειωθεί ότι οι μικροεφαρμογές αυτές δεν θα έχουν καμία επίδραση σε αυτήν τη σελίδα προτιμήσεων.\n\nΕπίσης να σημειωθεί ότι αυτές οι ειδικές μικροεφαρμογές δεν είναι μέρος του λογισμικού MediaWiki και συνήθως αναπτύσσονται και συντηρούνται από χρήστες στο τοπικό σας wiki.\nΟι τοπικοί διαχειριστές μπορούν να επεξεργαστούν τους [[MediaWiki:Gadgets-definition|ορισμούς]] και τις [[Special:Gadgets|περιγραφές]] των διαθέσιμων μικροεφαρμογών. Ο αριθμός χρηστών κάθε μικροεφαρμογής σε αυτό το wiki αναγράφεται στα [[Special:GadgetUsage|στατιστικά χρήσης μικροεφαρμογών]].",
+ "gadgets": "Μικροεφαρμογές",
+ "gadgetusage": "Στατιστικά χρήσης μικροεφαρμογής",
+ "gadgetusage-gadget": "Μικροεφαρμογή",
+ "gadgetusage-usercount": "Αριθμός χρηστών",
+ "gadgetusage-noresults": "Δεν βρέθηκαν μικροεφαρμογές.",
+ "gadgetusage-intro": "Αυτός ο πίνακας δείχνει τον αριθμό των χρηστών που έχουν ενεργοποιημένη κάποια μικροεφαρμογή σε αυτό το wiki. Ως ενεργός χρήστης υπολογίζεται όποιος έχει κάνει κάποια επεξεργασία {{PLURAL:$1|σήμερα|τις τελευταίες $1 ημέρες}}. Αυτή η λίστα δεν περιλαμβάνει στατιστικά στοιχεία για μικροεφαρμογές που είναι εκ προεπιλογής ενεργοποιημένες για όλους ενώ μπορεί να περιλαμβάνει μικροεφαρμογές που δεν είναι πλέον διαθέσιμες.",
+ "gadgetusage-intro-noactive": "Αυτός ο πίνακας δείχνει τον αριθμό των χρηστών που έχουν ενεργοποιημένη κάποια μικροεφαρμογή σε αυτό το wiki. Αυτή η λίστα δεν περιλαμβάνει στατιστικά στοιχεία για μικροεφαρμογές που είναι εκ προεπιλογής ενεργοποιημένες για όλους ενώ μπορεί να περιλαμβάνει μικροεφαρμογές που δεν είναι πλέον διαθέσιμες.",
+ "gadgetusage-activeusers": "Ενεργοί χρήστες",
+ "gadgetusage-default": "Προεπιλογή",
+ "gadgets-title": "Μικροεφαρμογές",
+ "gadgets-pagetext": "Παρακάτω βρίσκεται ένας κατάλογος με τις ειδικές μικροεφαρμογές τις οποίες οι χρήστες μπορούν να ενεργοποιήσουν στη [[Special:Preferences#mw-prefsection-gadgets|σελίδα προτιμήσεών]] τους, όπως έχουν οριστεί από τους [[MediaWiki:Gadgets-definition|ορισμούς]].\nΑυτή η επισκόπηση παρέχει εύκολη πρόσβαση στις σελίδες των μηνυμάτων συστήματος που ορίζουν την περιγραφή και τον κώδικα κάθε μικροεφαρμογής.",
+ "gadgets-uses": "Χρήσεις",
+ "gadgets-required-rights": "Απαιτεί {{PLURAL:$2|το ακόλουθο δικαίωμα|τα ακόλουθα δικαιώματα}}:\n\n$1",
+ "gadgets-required-skins": "Διαθέσιμο {{PLURAL:$2|στο θέμα εμφάνισης $1|στα ακόλουθα θέματα εμφάνισης: $1}}.",
+ "gadgets-default": "Ενεργοποιημένο για όλους από προεπιλογή.",
+ "gadgets-legacy": "Η μικροεφαρμογή δεν φορτώθηκε. Παρακαλούμε αναβαθμίσετε σε περιβάλλον ResourceLoader. ([https://www.mediawiki.org/wiki/ResourceLoader/Migration_guide_(users) Μάθετε περισσότερα])",
+ "gadgets-export": "Εξαγωγή",
+ "gadgets-export-title": "Εξαγωγή μικροεφαρμογής",
+ "gadgets-not-found": "Η μικροεφαρμογή «$1» δεν βρέθηκε.",
+ "gadgets-export-text": "Για την εξαγωγή της μικροεφαρμογής $1, κάντε κλικ στο κουμπί «{{int:gadgets-export-download}}», αποθηκεύστε το κατεβασμένο αρχείο, \nπηγαίνετε στο Special:Import του wiki προορισμού και ανεβάστε το. Μετά προσθέστε τα παρακάτω στη σελίδα MediaWiki:Gadgets-definition:\n<pre>$2</pre>\nΠρέπει να έχετε τα κατάλληλα δικαιώματα στο wiki προορισμού (συμπεριλαμβανομένου και του δικαιώματος επεξεργασίας μηνυμάτων συστήματος) και να είναι ενεργοποιημένη η εισαγωγή μέσω ανεβάσματος αρχείων.",
+ "gadgets-export-download": "Κατέβασμα",
+ "gadgets-validate-notset": "Η ιδιότητα <code>$1</code> δεν έχει οριστεί.",
+ "gadgets-validate-wrongtype": "Η ιδιότητα <code>$1</code> πρέπει να είναι τύπου <code>$2</code> αντί για <code>$3</code>.",
+ "apihelp-query+gadgetcategories-description": "Επιστρέφει λίστα με τις κατηγορίες μικροεφαρμογών.",
+ "apihelp-query+gadgetcategories-param-prop": "Τι πληροφορίες για την κατηγορία της μικροεφαρμογής να ληφθούν:\n;name:Όνομα εσωτερικής κατηγορίας.\n;title:Τίτλος κατηγορίας.\n;members:Αριθμός μικροεφαρμογών σε αυτήν την κατηγορία.",
+ "apihelp-query+gadgetcategories-param-names": "Τα ονόματα των κατηγοριών προς ανάκτηση.",
+ "apihelp-query+gadgetcategories-example-1": "Λήψη λίστας με τις υπάρχουσες κατηγορίες μικροεφαρμογών",
+ "apihelp-query+gadgetcategories-example-2": "Λήψη όλων των πληροφοριών σχετικά με τις κατηγορίες με ονόματα «τάδε» και «δείνα»",
+ "apihelp-query+gadgets-description": "Επιστρέφει λίστα με τις μικροεφαρμογές που χρησιμοποιούνται σε αυτό το wiki.",
+ "apihelp-query+gadgets-param-prop": "Τι πληροφορίες της μικροεφαρμογής να ληφθούν:\n;id:Εσωτερικό αναγνωριστικό της μικροεφαρμογής.\n;metadata:Τα μεταδεδομένα της μικροεφαρμογής.\n;desc:Περιγραφή της μικροεφαρμογής μετασχηματισμένη σε HTML (μπορεί να είναι αργό, χρησιμοποιήστε μόνο αν πραγματικά χρειάζεται).",
+ "apihelp-query+gadgets-param-categories": "Ποιων κατηγοριών μικροεφαρμογές να ανακτηθούν.",
+ "apihelp-query+gadgets-param-ids": "Τα αναγνωριστικά των μικροεφαρμογών προς ανάκτηση.",
+ "apihelp-query+gadgets-param-allowedonly": "Να απαριθμηθούν μόνο οι επιτρεπτές στον τρέχοντα χρήστη μικροεφαρμογές.",
+ "apihelp-query+gadgets-param-enabledonly": "Να απαριθμηθούν μόνο οι ενεργοποιημένες από τον τρέχοντα χρήστη μικροεφαρμογές.",
+ "apihelp-query+gadgets-example-1": "Λήψη λίστας μικροεφαρμογών μαζί με τις περιγραφές τους",
+ "apihelp-query+gadgets-example-2": "Λήψη λίστας μικροεφαρμογών με όλες τις πιθανές ιδιότητες",
+ "apihelp-query+gadgets-example-3": "Λήψη λίστας μικροεφαρμογών που ανήκουν στην κατηγορία «τάδε»",
+ "apihelp-query+gadgets-example-4": "Λήψη πληροφοριών σχετικά με τις μικροεφαρμογές «τάδε» και «δείνα»",
+ "apihelp-query+gadgets-example-5": "Λήψη λίστας μικροεφαρμογών ενεργοποιημένων από τον τρέχοντα χρήστη",
+ "right-gadgets-edit": "Επεξεργασία σελίδων JavaScript ή CSS της μικροεφαρμογής",
+ "action-gadgets-edit": "επεξεργαστείτε τις σελίδες JavaScript ή CSS αυτής της μικροεφαρμογής",
+ "right-gadgets-definition-edit": "Επεξεργασία ορισμών μικροεφαρμογών",
+ "action-gadgets-definition-edit": "επεξεργαστείτε τον ορισμό αυτής μικροεφαρμογής"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/en.json b/www/wiki/extensions/Gadgets/i18n/en.json
new file mode 100644
index 00000000..48a1abe9
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/en.json
@@ -0,0 +1,56 @@
+{
+ "@metadata": {
+ "authors": [
+ "Daniel Kinzler, brightbyte.de"
+ ]
+ },
+ "gadgets-desc": "Lets users select custom [[Special:Gadgets|CSS and JavaScript gadgets]] in their [[Special:Preferences#mw-prefsection-gadgets|preferences]]",
+ "prefs-gadgets": "Gadgets",
+ "gadgets-prefstext": "Below is a list of special gadgets you can enable for your account.\nThese gadgets are mostly based on JavaScript, so JavaScript has to be enabled in your browser for them to work.\nNote that these gadgets will have no effect on this preferences page.\n\nAlso note that these special gadgets are not part of the MediaWiki software, and are usually developed and maintained by users on your local wiki.\nLocal administrators can edit the [[MediaWiki:Gadgets-definition|definitions]] and [[Special:Gadgets|descriptions]] of available gadgets. The numbers of users for each gadget on this wiki is listed at [[Special:GadgetUsage|Gadget usage statistics]].",
+ "gadgets": "Gadgets",
+ "gadgetusage": "Gadget usage statistics",
+ "gadgetusage-gadget": "Gadget",
+ "gadgetusage-usercount": "Number of users",
+ "gadgetusage-noresults": "No gadgets found.",
+ "gadgetusage-intro": "This table indicates the number of users who have enabled each gadget on this wiki. An active user is counted as someone who has made an edit in the last {{PLURAL:$1|day|$1 days}}. This list excludes stats for gadgets enabled for everyone by default and may include gadgets that are no longer available.",
+ "gadgetusage-intro-noactive": "This table indicates the number of users who have enabled each gadget on this wiki. This list excludes stats for gadgets enabled for everyone by default and may include gadgets that are no longer available.",
+ "gadgetusage-activeusers": "Active users",
+ "gadgetusage-default": "Default",
+ "gadgets-definition": "",
+ "gadgets-title": "Gadgets",
+ "gadgets-pagetext": "Below is a list of special gadgets users can enable on their [[Special:Preferences#mw-prefsection-gadgets|preferences page]], as defined by the [[MediaWiki:Gadgets-definition|definitions]].\nThis overview provides easy access to the system message pages that define each gadget's description and code.",
+ "gadgets-uses": "Uses",
+ "gadgets-required-rights": "Requires the following {{PLURAL:$2|right|rights}}:\n\n$1",
+ "gadgets-required-skins": "Available on the {{PLURAL:$2|$1 skin|following skins: $1}}.",
+ "gadgets-default": "Enabled for everyone by default.",
+ "gadgets-legacy": "Gadget is not loaded. Please migrate to ResourceLoader. ([https://www.mediawiki.org/wiki/ResourceLoader/Migration_guide_(users) Learn more])",
+ "gadgets-export": "Export",
+ "gadgets-export-title": "Gadget export",
+ "gadgets-not-found": "Gadget \"$1\" not found.",
+ "gadgets-export-text": "To export the $1 gadget, click on \"{{int:gadgets-export-download}}\" button, save the downloaded file,\ngo to Special:Import on destination wiki and upload it. Then add the following to MediaWiki:Gadgets-definition page:\n<pre>$2</pre>\nYou must have appropriate permissions on destination wiki (including the right to edit system messages) and import from file uploads must be enabled.",
+ "gadgets-export-download": "Download",
+ "gadgets-validate-notset": "The property <code>$1</code> is not set.",
+ "gadgets-validate-wrongtype": "The property <code>$1</code> must be of type <code>$2</code> instead of <code>$3</code>.",
+ "apihelp-query+gadgetcategories-description": "Returns a list of gadget categories.",
+ "apihelp-query+gadgetcategories-summary": "Returns a list of gadget categories.",
+ "apihelp-query+gadgetcategories-param-prop": "What gadget category information to get:\n;name:Internal category name.\n;title:Category title.\n;members:Number of gadgets in category.",
+ "apihelp-query+gadgetcategories-param-names": "Names of categories to retrieve.",
+ "apihelp-query+gadgetcategories-example-1": "Get a list of existing gadget categories",
+ "apihelp-query+gadgetcategories-example-2": "Get all information about categories named \"foo\" and \"bar\"",
+ "apihelp-query+gadgets-description": "Returns a list of gadgets used on this wiki.",
+ "apihelp-query+gadgets-summary": "Returns a list of gadgets used on this wiki.",
+ "apihelp-query+gadgets-param-prop": "What gadget information to get:\n;id:Internal gadget ID.\n;metadata:The gadget metadata.\n;desc:Gadget description transformed into HTML (can be slow, use only if really needed).",
+ "apihelp-query+gadgets-param-categories": "Gadgets from what categories to retrieve.",
+ "apihelp-query+gadgets-param-ids": "IDs of gadgets to retrieve.",
+ "apihelp-query+gadgets-param-allowedonly": "List only gadgets allowed to current user.",
+ "apihelp-query+gadgets-param-enabledonly": "List only gadgets enabled by current user.",
+ "apihelp-query+gadgets-example-1": "Get a list of gadgets along with their descriptions",
+ "apihelp-query+gadgets-example-2": "Get a list of gadgets with all possible properties",
+ "apihelp-query+gadgets-example-3": "Get a list of gadgets belonging to category \"foo\"",
+ "apihelp-query+gadgets-example-4": "Get information about gadgets \"foo\" and \"bar\"",
+ "apihelp-query+gadgets-example-5": "Get a list of gadgets enabled by current user",
+ "right-gadgets-edit": "Edit gadget JavaScript and CSS pages",
+ "action-gadgets-edit": "edit this gadget JavaScript or CSS page",
+ "right-gadgets-definition-edit": "Edit gadget definitions",
+ "action-gadgets-definition-edit": "edit this gadget definition"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/eo.json b/www/wiki/extensions/Gadgets/i18n/eo.json
new file mode 100644
index 00000000..c9c4961b
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/eo.json
@@ -0,0 +1,26 @@
+{
+ "@metadata": {
+ "authors": [
+ "Yekrats",
+ "Robin van der Vliet",
+ "Psychoslave"
+ ]
+ },
+ "gadgets-desc": "Permesas al uzantoj elekti proprajn [[Special:Gadgets|CSS kaj JavaScript aldonaĵojn]] en ties [[Special:Preferences#mw-prefsection-gadgets|preferoj]].",
+ "prefs-gadgets": "Aldonaĵoj",
+ "gadgets-prefstext": "Jen listo de specialaj aldonaĵoj kiujn vi povas aktivigi por via uzulkonto.\nPlej multaj el ili baziĝas sur Ĵavaskriptoj, sekve Ĵavaskripto nepre estu aktivigita por ke ili funkciu.\nNotu ke tiuj aldonaĵoj ne efikos sur viaj preferoj.\n\nNotu ankaŭ ke ili ne estas parto de la programaro MediaWiki, kaj estas kutime evoluigitaj kaj prizorgataj de uzuloj sur via loka vikio.\nLokaj administrantoj povas redakti liston de haveblaj aldonaĵoj per [[MediaWiki:Gadgets-definition|difinoj]] kaj [[Special:Gadgets|priskriboj]].",
+ "gadgets": "Aldonaĵoj",
+ "gadgetusage-activeusers": "Aktivaj uzantoj",
+ "gadgetusage-default": "Defaŭlta",
+ "gadgets-title": "Aldonaĵoj",
+ "gadgets-pagetext": "Jen listo da specialaj aldonaĵoj kiujn uzantoj povas aktivigi en [[Special:Preferences#mw-prefsection-gadgets|siaj preferoj]], kiel difinite en [[MediaWiki:Gadgets-definition|difinoj]].\nĈi tiu superrigardo provizas facilan aliron al la sistemaj mesaĝoj kiuj difinas la priskribon kaj la kodon de ĉiuj aldonaĵoj.",
+ "gadgets-uses": "uzas",
+ "gadgets-required-rights": "Bezonas la {{PLURAL:$2|jenan rajton|jenajn rajtojn}}:\n\n$1",
+ "gadgets-required-skins": "Dispona kun la {{PLURAL:$2|$1 etoso|jenaj etosoj:$1}}.",
+ "gadgets-default": "Ŝaltita por ĉiu defaŭlte.",
+ "gadgets-export": "Elporti",
+ "gadgets-export-title": "Aldonaĵo-elportado",
+ "gadgets-not-found": "Aldonaĵo \"$1\" ne estis trovita.",
+ "gadgets-export-text": "Elporti la aldonaĵon $1, klaku butonon \"{{int:gadgets-export-download}}\", konservu la elŝutitan dosieron,\niru Special:Import en cela vikio kaj alŝutu ĝin. Poste aldonu la jenan signoĉenon al paĝo MediaWiki:Gadgets-definition:\n<pre>$2</pre>\nVi nepras la taŭgajn rajtojn ĉe cela vikio (inkluzivante rajton redakti sistemajn mesaĝojn) kaj enportebleco de dosieraj alŝutaĵojn devas esti ŝaltita.",
+ "gadgets-export-download": "Elŝuti"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/es.json b/www/wiki/extensions/Gadgets/i18n/es.json
new file mode 100644
index 00000000..89fc3384
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/es.json
@@ -0,0 +1,64 @@
+{
+ "@metadata": {
+ "authors": [
+ "Crazymadlover",
+ "Fitoschido",
+ "Muro de Aguas",
+ "Remember the dot",
+ "Sanbec",
+ "Vivaelcelta",
+ "Themasterriot",
+ "Ryo567",
+ "Macofe",
+ "Peter Bowman"
+ ]
+ },
+ "gadgets-desc": "Permite a los usuarios seleccionar [[Special:Gadgets|accesorios de CSS y JavaScript]] personalizados en sus [[Special:Preferences#mw-prefsection-gadgets|preferencias]].",
+ "prefs-gadgets": "Accesorios",
+ "gadgets-prefstext": "Debajo hay una lista de accesorios especiales que puedes activar para tu cuenta.\nLa mayoría de ellos se basan en JavaScript, así que debes tenerlo activado en tu navegador para que funcionen.\nObserva que estos accesorios no tendrán efecto en esta página de preferencias.\n\nTen en cuenta también que estos accesorios especiales no forman parte del software MediaWiki, y son desarrollados y mantenidos por usuarios de tu wiki local.\nLos administradores locales pueden editar las [[MediaWiki:Gadgets-definition|definiciones]] y las [[Special:Gadgets|descripciones]] de los accesorios disponibles. El número de usuarios que han activado cada accesorio en este wiki se puede consultar en las [[Special:GadgetUsage|Estadísticas de uso de accesorios]].",
+ "gadgets": "Accesorios",
+ "gadgetusage": "Estadísticas de uso de accesorios",
+ "gadgetusage-gadget": "Accesorio",
+ "gadgetusage-usercount": "Número de usuarios",
+ "gadgetusage-noresults": "No se encontraron accesorios.",
+ "gadgetusage-intro": "Esta tabla indica el número de usuarios que han activado cada accesorio en este wiki. Un usuario activo es aquel que ha realizado una edición en {{PLURAL:$1|el último día|los últimos $1 días}}. La lista no incluye estadísticas de accesorios activados para todos por defecto y podría incluir accesorios que ya no están disponibles.",
+ "gadgetusage-intro-noactive": "Esta tabla indica el número de usuarios que han activado cada accesorio en este wiki. La lista no incluye estadísticas de accesorios activados para todos por defecto y podría incluir accesorios que ya no están disponibles.",
+ "gadgetusage-activeusers": "Usuarios activos",
+ "gadgetusage-default": "Predeterminado",
+ "gadgets-title": "Accesorios",
+ "gadgets-pagetext": "Debajo hay una lista de accesorios especiales que los usuarios pueden activar en sus [[Special:Preferences#mw-prefsection-gadgets|páginas de preferencias]], según las [[MediaWiki:Gadgets-definition|definiciones]].\nEsta vista provee un acceso fácil a las páginas de mensajes del sistema que definen la descripción y el código de cada accesorio.",
+ "gadgets-uses": "Usos",
+ "gadgets-required-rights": "Requiere {{PLURAL:$2|el siguiente permiso|los siguientes permisos}}:\n\n$1",
+ "gadgets-required-skins": "Disponible en {{PLURAL:$2|la apariencia $1|las siguientes apariencias: $1}}.",
+ "gadgets-default": "Activado para todos de manera predeterminada.",
+ "gadgets-legacy": "No se ha cargado el accesorio. Este debe migrarse a ResourceLoader. ([https://www.mediawiki.org/wiki/ResourceLoader/Migration_guide_(users) Más información])",
+ "gadgets-export": "Exportar",
+ "gadgets-export-title": "Exportación de accesorio",
+ "gadgets-not-found": "No se encontró el accesorio \"$1\".",
+ "gadgets-export-text": "Para exportar el accesorio $1, haz clic en el botón \"{{int:gadgets-export-download}}\", guarda el archivo descargado,\nve a Especial:Importar en el wiki de destino y súbelo. Luego agrega lo siguiente a la página MediaWiki:Gadgets-definition:\n<pre>$2</pre>\nDebes tener los permisos apropiados en el wiki de destino (incluyendo el permiso de editar mensajes de sistema) y debe estar activada la importación desde subidas de archivos.",
+ "gadgets-export-download": "Descargar",
+ "gadgets-validate-notset": "La propiedad <code>$1</code> no está establecida.",
+ "gadgets-validate-wrongtype": "La propiedad <code>$1</code> debe ser de tipo <code>$2</code> en vez de <code>$3</code>.",
+ "apihelp-query+gadgetcategories-description": "Devuelve una lista de categorías de accesorios.",
+ "apihelp-query+gadgetcategories-summary": "Devuelve una lista de categorías de accesorios.",
+ "apihelp-query+gadgetcategories-param-prop": "Qué información de categoría de accesorios se obtendrá:\n;name:Nombre interno de la categoría.\n;title:Título de la categoría.\n;members:Número de accesorios en la categoría.",
+ "apihelp-query+gadgetcategories-param-names": "Nombres de las categorías que se obtendrán.",
+ "apihelp-query+gadgetcategories-example-1": "Obtener una lista de las categorías de accesorios existentes",
+ "apihelp-query+gadgetcategories-example-2": "Obtener toda la información acerca de las categorías llamadas \"foo\" y \"bar\"",
+ "apihelp-query+gadgets-description": "Devuelve una lista de los accesorios utilizados en este wiki.",
+ "apihelp-query+gadgets-summary": "Devuelve una lista de los accesorios empleados en este wiki.",
+ "apihelp-query+gadgets-param-prop": "Qué información de accesorios se obtendrá:\n;id:Identificador interno del accesorio.\n;metadata:Los metadatos del accesorio.\n;desc:Descripción del accesorio transformada en HTML (puede ser lento, úsalo solo si es realmente necesario).",
+ "apihelp-query+gadgets-param-categories": "De qué categorías se obtendrán los accesorios.",
+ "apihelp-query+gadgets-param-ids": "Identificadores de los accesorios que se obtendrán.",
+ "apihelp-query+gadgets-param-allowedonly": "Listar solo los accesorios permitidos al usuario actual.",
+ "apihelp-query+gadgets-param-enabledonly": "Listar solo los accesorios activados por el usuario actual.",
+ "apihelp-query+gadgets-example-1": "Obtener una lista de accesorios junto con sus descripciones",
+ "apihelp-query+gadgets-example-2": "Obtener una lista de accesorios con todas las propiedades posibles",
+ "apihelp-query+gadgets-example-3": "Obtener una lista de accesorios que pertenezcan a la categoría \"foo\"",
+ "apihelp-query+gadgets-example-4": "Obtener información acerca de los accesorios \"foo\" y \"bar\"",
+ "apihelp-query+gadgets-example-5": "Obtener una lista de los accesorios activados por el usuario actual",
+ "right-gadgets-edit": "Editar páginas de accesorios JavaScript y CSS",
+ "action-gadgets-edit": "editar esta página de accesorios JavaScript y CSS",
+ "right-gadgets-definition-edit": "Editar definiciones de accesorios",
+ "action-gadgets-definition-edit": "editar esta definición de accesorio"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/et.json b/www/wiki/extensions/Gadgets/i18n/et.json
new file mode 100644
index 00000000..9c6fe419
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/et.json
@@ -0,0 +1,52 @@
+{
+ "@metadata": {
+ "authors": [
+ "Avjoska",
+ "Pikne"
+ ]
+ },
+ "gadgets-desc": "Võimaldab kasutajal [[Special:Preferences#mw-prefsection-gadgets|eelistuste leheküljel]] erinevaid [[Special:Gadgets|CSS- ja JavaScript-tööriistu]] valida.",
+ "prefs-gadgets": "Tööriistad",
+ "gadgets-prefstext": "Allpool on nimekiri eririistadest, mida kasutajad saavad oma konto jaoks sisse lülitada.\nEnamasti põhinevad need riistad JavaScriptil. Seega, et need töötaks, peab olema sinu brauseris JavaScript lubatud.\nPane tähele, et need riistad ei mõjuta kuidagi seda eelistuste lehekülge.\n\nSamuti pane tähele, et need eririistad ei ole osa MediaWiki tarkvarast ja on tavaliselt arendatud ja ülalpeetud sinu kohalikus vikis.\nKohalikud administraatorid saavad olemasolevaid riistu muuta [[MediaWiki:Gadgets-definition|määratluste]] ja [[Special:Gadgets|kirjelduste]] abil. Iga tööriista kasutajate arv selles vikis on ära toodud [[Special:GadgetUsage|tööriistade kasutuse arvandmestikus]].",
+ "gadgets": "Tööriistad",
+ "gadgetusage": "Tööriistade kasutuse arvandmestik",
+ "gadgetusage-gadget": "Tööriist",
+ "gadgetusage-usercount": "Kasutajaid",
+ "gadgetusage-noresults": "Tööriistu ei leidu.",
+ "gadgetusage-intro": "Siin tabelis on näidatud, mitu kasutajat selles vikis igat tööriista kasutab. Aktiivseks kasutajaks loetakse kasutajat, kes on teinud viimase {{PLURAL:$1|päeva|$1 päeva}} jooksul mõne muudatuse. Siit on välja jäetud tööriistad, mis on kõigil vaikimisi sisse lülitatud. Siin võib olla ära toodud tööriistu, mis pole enam kasutuses.",
+ "gadgetusage-intro-noactive": "Siin tabelis on näidatud, mitu kasutajat selles vikis igat tööriista kasutab. Siit on välja jäetud tööriistad, mis on kõigil vaikimisi sisse lülitatud. Siin võib olla ära toodud tööriistu, mis pole enam kasutuses.",
+ "gadgetusage-activeusers": "Aktiivseid kasutajaid",
+ "gadgetusage-default": "Vaikimisi",
+ "gadgets-title": "Tööriistad",
+ "gadgets-pagetext": "Allpool on nimekiri eririistadest, mida kasutajad saavad oma [[Special:Preferences#mw-prefsection-gadgets|eelistuste leheküljel]] sisse lülitada, nii nagu [[MediaWiki:Gadgets-definition|määratlustes]] määratletud. See ülevaade võimaldab kergesti ligi pääseda süsteemi sõnumilehekülgedele, milles on iga riista kirjeldus ja kood.",
+ "gadgets-uses": "Kasutab",
+ "gadgets-required-rights": "Tarvis on {{PLURAL:$2|järgmist õigust|järgmisi õigusi}}:\n\n$1",
+ "gadgets-required-skins": "Saadaval {{PLURAL:$2|järgmise kujundusega|järgmiste kujundustega}}: $1.",
+ "gadgets-default": "Vaikimisi kõigile lubatud.",
+ "gadgets-legacy": "Tööriist on laadimata. Palun kohanda ResourceLoaderiga. ([https://www.mediawiki.org/wiki/ResourceLoader/Migration_guide_(users) Lisateave])",
+ "gadgets-export": "Ekspordi",
+ "gadgets-export-title": "Tööriista eksportimine",
+ "gadgets-not-found": "Tööriista \"$1\" ei leidu.",
+ "gadgets-export-text": "Klõpsa nuppu \"{{int:gadgets-export-download}}\", et eksportida tööriist $1; salvesta allalaaditav fail;\nmine sihtvikis leheküljele Special:Import ja laadi see üles. Seejärel lisa järgnev leheküljele MediaWiki:Gadgets-definition:\n<pre>$2</pre>\nSul peavad olema sihtvikis vajalikud õigused (kaasa arvatud õigus redigeerida süsteemi sõnumeid) ja üleslaaditavate failide kaudu importimine peab olema lubatud.",
+ "gadgets-export-download": "Laadi alla",
+ "apihelp-query+gadgetcategories-description": "Tagastab tööriistakategooriate loetelu.",
+ "apihelp-query+gadgetcategories-param-prop": "Millist teavet tööriistakategooriate kohta hankida:\n;name: Sisemine kategoorianimi.\n;title: Kategooria pealkiri.\n;members: Tööriistade arv kategoorias.",
+ "apihelp-query+gadgetcategories-param-names": "Välja võetavate kategooriate nimed.",
+ "apihelp-query+gadgetcategories-example-1": "Hangi olemasolevate tööriistakategooriate loetelu",
+ "apihelp-query+gadgetcategories-example-2": "Hangi kogu teave kategooriate \"foo\" ja \"bar\" kohta",
+ "apihelp-query+gadgets-description": "Tagastab selles vikis kasutusel olevate tööriistade loetelu.",
+ "apihelp-query+gadgets-param-prop": "Millist teavet tööriistade kohta hankida:\n;id:Tööriista sisemine identifikaator.\n;metadata:Tööriista metaandmed.\n;desc: Tööriista kirjeldus teisendatuna HTML-iks (võib olla aeglane, kasuta ainult vajadusel).",
+ "apihelp-query+gadgets-param-categories": "Milliste kategooriate tööriistad loetleda.",
+ "apihelp-query+gadgets-param-ids": "Välja võetavate tööriistade identifikaatorid.",
+ "apihelp-query+gadgets-param-allowedonly": "Loetle ainult tööriistad, mille antud kasutaja on lubanud.",
+ "apihelp-query+gadgets-param-enabledonly": "Loetle ainult tööriistad, mille antud kasutaja on lubanud.",
+ "apihelp-query+gadgets-example-1": "Hangi tööriistade loetelu kirjeldustega",
+ "apihelp-query+gadgets-example-2": "Hangi tööriistade loetelu kõigi võimalike atribuutidega",
+ "apihelp-query+gadgets-example-3": "Hangi loetelu tööriistadest, mis kuuluvad kategooriasse \"foo\"",
+ "apihelp-query+gadgets-example-4": "Hangi teave tööriistade \"foo\" ja \"bar\" kohta",
+ "apihelp-query+gadgets-example-5": "Hangi loetelu tööriistadest, mille antud kasutaja on lubanud",
+ "right-gadgets-edit": "Muuta tööriistade JavaScripti ja CSS-lehekülgi",
+ "action-gadgets-edit": "muuta tööriistade JavaScripti ega CSS-lehekülgi",
+ "right-gadgets-definition-edit": "Muuta tööriistade määratlusi",
+ "action-gadgets-definition-edit": "muuta tööriistade määratlusi"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/eu.json b/www/wiki/extensions/Gadgets/i18n/eu.json
new file mode 100644
index 00000000..8ccbd6ce
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/eu.json
@@ -0,0 +1,34 @@
+{
+ "@metadata": {
+ "authors": [
+ "An13sa",
+ "Inorbez",
+ "Joxemai",
+ "Unai Fdz. de Betoño",
+ "පසිඳු කාවින්ද",
+ "Sator",
+ "Subi"
+ ]
+ },
+ "gadgets-desc": "Lankideek [[Special:Gadgets|CSS eta JavaScript gadgetak]] aukeratu ditzazkete beraien [[Special:Preferences#mw-prefsection-gadgets|hobespenetan]]",
+ "prefs-gadgets": "Gadgetak",
+ "gadgets-prefstext": "Zure kontuan erabili ditzakezun gadgeten zerrenda bat agertzen da behean.\nJavaScript-en oinarritzen dira gehienbat gadget hauek; beraz, funtzionatzeko zure nabigatzailean JavaScript gaituta egon behar da.\nKontuan izan gadget hauek ez dutela eraginik izango hobespen orri honetan.\n\nKontuan izan baita gadget berezi hauek ez direla MediaWiki softwarearen zati bat. Gehienetan guneko wikietako garatzaileek sortu eta mantentzen dituzte.\nAdministratzaileek [[MediaWiki:Gadgets-definition|definizioak]] eta [[Special:Gadgets|deskribapenak]] erabiliz aldatu dezakete eskuragarri dauden gadgetak.",
+ "gadgets": "Gadgetak",
+ "gadgetusage": "Gadgeten erabilpen estatistikak",
+ "gadgetusage-gadget": "Gadgeta",
+ "gadgetusage-usercount": "Erabiltzaile-kopurua",
+ "gadgetusage-noresults": "Ez da gadgetik aurkitu.",
+ "gadgetusage-activeusers": "Lankide aktiboak",
+ "gadgetusage-default": "Lehenetsia",
+ "gadgets-title": "Gadgetak",
+ "gadgets-pagetext": "Erabiltzaile bakoitzak bere [[Special:Preferences#mw-prefsection-gadgets|hobespen orrian]] erabili ditzakeen gadgeten zerrenda bat agertzen da behean, [[MediaWiki:Gadgets-definition|definizioek]] zehaztu bezala.\nIkuspegi orokor honek gadget bakoitza definitzen duen deskribapen eta kode orrietarako lotura errazak eskaintzen ditu.",
+ "gadgets-uses": "Erabilerak",
+ "gadgets-export": "Esportatu",
+ "gadgets-export-title": "Gadgeten esportazioa",
+ "gadgets-not-found": "Ez da \"$1\" gadgeta aurkitu.",
+ "gadgets-export-download": "Jaitsi",
+ "apihelp-query+gadgets-description": "Wiki honetan erabiltzen diren gadget-en zerrenda erakusten du.",
+ "action-gadgets-edit": "gadget honen JavaScript edo CSS orria aldatu",
+ "right-gadgets-definition-edit": "Gadgetaren definizioak aldatu",
+ "action-gadgets-definition-edit": "Gadget honen definizioa aldatu"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/ext.json b/www/wiki/extensions/Gadgets/i18n/ext.json
new file mode 100644
index 00000000..faf7cf3c
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/ext.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Better"
+ ]
+ },
+ "gadgets-uses": "Usus"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/fa.json b/www/wiki/extensions/Gadgets/i18n/fa.json
new file mode 100644
index 00000000..456acbd0
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/fa.json
@@ -0,0 +1,56 @@
+{
+ "@metadata": {
+ "authors": [
+ "Bersam",
+ "Ebraminio",
+ "Huji",
+ "Ladsgroup",
+ "Reza1615",
+ "Wayiran",
+ "ZxxZxxZ",
+ "Mjbmr",
+ "Alpineer"
+ ]
+ },
+ "gadgets-desc": "به کاربرها امکان انتخاب [[Special:Gadgets|ابزارهای شخصی سی‌اس‌اس و جاوااسکریپت]] را از طریق صفحهٔ [[Special:Preferences#mw-prefsection-gadgets|ترجیحات]] می‌دهد",
+ "prefs-gadgets": "ابزارها",
+ "gadgets-prefstext": "در زیر فهرستی از ابزارهای ویژه‌ای که می‌توانید برای حساب کاربری‌تان فعال کنید را می‌بینید.\nاین ابزارها در بیشتر موارد مبتنی بر جاوااسکریپت هستند، پس برای استفاده از آن‌ها باید جاوااسکرپیت را در مرورگر خودتان فعال کنید.\nتوجه کنید که این ابزارها نمی‌توانند صفحهٔ ترجیحات را تغییر دهند.\n\nهمچنین دقت داشته باشید که این ابزارها جزئی از نرم‌افزار مدیاویکی نیستند، و معمولاً توسط کاربران هر ویکی ساخته و نگهداری می‌شوند.\nمدیران هر ویکی می‌توانند با استفاده از صفحه‌های [[MediaWiki:Gadgets-definition|تعاریف]] و [[Special:Gadgets|توضیحات]] به ویرایش ابزارها بپردازند. تعداد کاربران هر ابزار در این ویکی در [[Special:GadgetUsage|آمار کاربر ابزارها]] فهرست شده‌است.",
+ "gadgets": "ابزارها",
+ "gadgetusage": "آمار استفادهٔ ابزارها",
+ "gadgetusage-gadget": "ابزار",
+ "gadgetusage-usercount": "شمار کاربران",
+ "gadgetusage-noresults": "هیچ ابزاری پیدا نشد.",
+ "gadgetusage-intro": "این جدول نمایش دهندهٔ تعداد کاربرانی است که ابزارها را در این ویکی فعال کرده‌اند. کاربر فعال به کاربری گفته می‌شود که حداقل یک ویرایش در {{PLURAL:$1|روز|$1 روز}} پیش انجام داده باشد. این فهرست آمار ابزارهای فعال شده توسط همه کاربران را پوشش می‌دهد و ممکن است بعضی از این ابزارها دیگر فعال نباشند.",
+ "gadgetusage-intro-noactive": "این جدول نمایش دهندهٔ تعداد کاربرانی است که ابزارها را در این ویکی فعال کرده‌اند این فهرست آمار ابزارهای فعال شده توسط همه کاربران را پوشش می‌دهد و ممکن است بعضی از این ابزارها دیگر فعال نباشند.",
+ "gadgetusage-activeusers": "کاربران فعال",
+ "gadgetusage-default": "پیش‌فرض",
+ "gadgets-title": "ابزارها",
+ "gadgets-pagetext": "در زیر فهرستی از ابزارهای ویژه‌ای که کاربران می‌توانند از طریق [[Special:Preferences#mw-prefsection-gadgets|صفحهٔ ترجیحاتشان]] فعال کنند می‌بینید، که مطابق آن چه است که در صفحهٔ [[MediaWiki:Gadgets-definition|تعاریف]] تعریف شده‌است.\nاین خلاصه کمک می‌کند که به صفحه‌های پیغام سامانه‌ای که توضیحات و کد هر ابزار را شامل می‌شوند به راحتی دست پیدا کنید.",
+ "gadgets-uses": "برنامه",
+ "gadgets-required-rights": "به {{PLURAL:$2|دسترسی|دسترسی‌های}} روبرو نیاز است:\n\n$1",
+ "gadgets-required-skins": "قابل دسترس در {{PLURAL:$2|پوستهٔ $1|پوسته‌های $1}}.",
+ "gadgets-default": "به‌طور پیش‌فرض برای همه فعال است.",
+ "gadgets-legacy": "ابزار بارگیری نشده است. لطفاً به ResourceLoader مهاجرت کنید. ([https://www.mediawiki.org/wiki/ResourceLoader/Migration_guide_(users) اطلاعات بیشتر])",
+ "gadgets-export": "برون‌بری",
+ "gadgets-export-title": "برون‌بری ابزار",
+ "gadgets-not-found": "ابزار «$1» یافت نشد.",
+ "gadgets-export-text": "برای برون‌بری ابزار $1، بر دکمهٔ «{{int:gadgets-export-download}}» کلیک کنید، پروندهٔ بارگیری‌شده را ذخیره کنید، به ویژه:درون‌ریزی در ویکی مقصد بروید و بارگذاری‌اش کنید. سپس این را به صفحهٔ مدیاویکی:Gadgets-definition بیفزایید:\n<pre>$2</pre>\nلازم است تا در ویکی مقصد دسترسی‌های مناسب (شامل حق ویرایش پیغام‌های سامانه) را داشته باشید و درون‌ریزی از بارگذاری‌های پرونده باید فعال شده باشد.",
+ "gadgets-export-download": "دریافت",
+ "gadgets-validate-notset": "خصوصیت <code>$1</code> تنظیم نشده‌است.",
+ "gadgets-validate-wrongtype": "خصوصیت <code>$1</code> به جای نوع <code>$3</code> باید از نوع <code>$2</code> باشد.",
+ "apihelp-query+gadgetcategories-description": "بازگرداندن فهرست رده‌های ابزار.",
+ "apihelp-query+gadgetcategories-summary": "بازگرداندن فهرست رده‌های ابزارها",
+ "apihelp-query+gadgetcategories-param-names": "نام‌های رده‌ها برای دریافت.",
+ "apihelp-query+gadgetcategories-example-1": "دریافت فهرستی از دسته‌بندی‌های ابزارهای موجود",
+ "apihelp-query+gadgets-description": "فهرست کردن همه ابزارها در این ویکی",
+ "apihelp-query+gadgets-summary": "بازگرداندن فهرست ابزارهای استفاده شده در این ویکی",
+ "apihelp-query+gadgets-param-categories": "رده‌هایی که از آن فهرست ابزارها را می‌خواهید",
+ "apihelp-query+gadgets-param-ids": "شماره گجت‌ها برای دریافت",
+ "apihelp-query+gadgets-param-allowedonly": "فقط فهرست کردن ابزارهایی که کاربر کنونی می‌تواند استفاده کند",
+ "apihelp-query+gadgets-param-enabledonly": "فهرست کردن گجت‌هایی که توسط کاربر کنونی فعال شده‌است.",
+ "apihelp-query+gadgets-example-5": "دریافت فهرستی از ابزارهای فعال‌شدهٔ کاربر جاری",
+ "right-gadgets-edit": "ویرایش صفحه‌های جاوااسکریپت و سی‌اس‌اس ابزار",
+ "action-gadgets-edit": "ویرایش صفحهٔ جاوااسکریپت و سی‌اس‌اس این ابزار",
+ "right-gadgets-definition-edit": "ویرایش تنظیمات ابزارها",
+ "action-gadgets-definition-edit": "ویرایش تنظیمات این ابزار"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/fi.json b/www/wiki/extensions/Gadgets/i18n/fi.json
new file mode 100644
index 00000000..5ce01ad7
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/fi.json
@@ -0,0 +1,45 @@
+{
+ "@metadata": {
+ "authors": [
+ "Crt",
+ "Nike",
+ "Olli",
+ "Stryn",
+ "01miki10"
+ ]
+ },
+ "gadgets-desc": "Tarjoaa mahdollisuuden käyttäjille ottaa käyttöön [[Special:Gadgets|määritettyjä CSS- ja JavaScript-pienoisohjelmia]] omista [[Special:Preferences#mw-prefsection-gadgets|asetuksistaan]].",
+ "prefs-gadgets": "Pienoisohjelmat",
+ "gadgets-prefstext": "Alla on lista pienoisohjelmista, joita käyttäjät voivat ottaa käyttöön. Nämä pienoisohjelmat pohjautuvat usein JavaScriptiin, joten toimiakseen selaimessasi pitää olla JavaScript käytössä.\n\nHuomioi myös, että nämä pienoisohjelmat eivät ole osa MediaWiki-ohjelmistoa – tavallisesti niitä kehittävät ja ylläpitävät paikallisen wikin käyttäjät. Paikalliset ylläpitäjät voivat muokata saatavilla olevia pienoisohjelmia [[MediaWiki:Gadgets-definition|määrityssivulla]] ja [[Special:Gadgets|kuvauksista]]. Tämän wikin jokaisen pienoisohjelman käyttäjämäärä on kerrottu [[Special:GadgetUsage|pienoisohjelmien käyttötilastoissa]].",
+ "gadgets": "Pienoisohjelmat",
+ "gadgetusage": "Pienoisohjelmien käyttötilastot",
+ "gadgetusage-gadget": "Pienoisohjelma",
+ "gadgetusage-usercount": "Käyttäjien määrä",
+ "gadgetusage-noresults": "Pienoishjelmia ei löytynyt.",
+ "gadgetusage-intro": "Tämä taulukko kertoo jokaisen tämän wikin pienoisohjelman käyttäjämäärän. Aktiiviseksi käyttäjäksi lasketaan sellainen, joka on muokannut viimeisen {{PLURAL:$1|päivän|$1 päivän}} aikana. Tämä luettelo ei sisällä kaikilla oletuksena käytössä olevia pienoisohjelmia ja saattaa sisältää pienoisohjelmia, jotka eivät enää ole käytössä.",
+ "gadgetusage-intro-noactive": "Tämä taulukko kertoo jokaisen tämän wikin pienoisohjelman käyttäjämäärän. Tämä luettelo ei sisällä kaikilla oletuksena käytössä olevia pienoisohjelmia ja saattaa sisältää pienoisohjelmia, jotka eivät enää ole käytössä.",
+ "gadgetusage-activeusers": "Aktiiviset käyttäjät",
+ "gadgetusage-default": "Oletus",
+ "gadgets-title": "Pienoisohjelmat",
+ "gadgets-pagetext": "Alla on lista pienoisohjelmista, joita käyttäjät voivat ottaa käyttöön [[Special:Preferences#mw-prefsection-gadgets|asetussivulta]]. Pienoisohjelmat määritetään [[MediaWiki:Gadgets-definition|täältä]].\n\nTämä lista antaa helpon pääsyn järjestelmäviesteihin, jotka sisältävät pienoisohjelmien kuvauksen ja koodin.",
+ "gadgets-uses": "Käyttää",
+ "gadgets-required-rights": "Edellyttää {{PLURAL:$2|seuraavaa oikeutta|seuraavia oikeuksia}}:\n\n$1",
+ "gadgets-required-skins": "Saatavilla {{PLURAL:$2|seuraavaan ulkoasuun|seuraaviin ulkoasuihin}}: $1.",
+ "gadgets-default": "Oletusarvoisesti käytössä kaikille.",
+ "gadgets-legacy": "Pienoisohjelmaa ei ole ladattu. Siirry käyttämään ResourceLoaderia. ([https://www.mediawiki.org/wiki/ResourceLoader/Migration_guide_(users) Katso lisää])",
+ "gadgets-export": "Vie",
+ "gadgets-export-title": "Pienoisohjelmien vienti",
+ "gadgets-not-found": "Pienoisohjelmaa $1 ei löytynyt.",
+ "gadgets-export-text": "Jos haluat kopioida pienoisohjelman $1 omaan wikiisi, toimi seuraavasti: Napsauta »{{int:gadgets-export-download}}» ja tallenna tiedosto. Mene oman wikisi sivulle Special:Import ja syötä tallennettu tiedosto. Lisää seuraava koodinpätkä sivulle MediaWiki:Gadgets-definition omassa wikissäsi:\n<pre>$2</pre>\nSinulla pitää olla tarvittavat oikeudet omassa wikissäsi, kuten järjestelmäviestien muokkaus ja sivujen tuonti tiedostoja tallentamalla.",
+ "gadgets-export-download": "Lataa",
+ "gadgets-validate-notset": "Ominaisuutta <code>$1</code> ei ole asetettu.",
+ "gadgets-validate-wrongtype": "Ominaisuuden <code>$1</code> on oltava tyyppiä <code>$2</code> eikä <code>$3</code>.",
+ "apihelp-query+gadgetcategories-description": "Antaa listan pienoisohjelmien luokista.",
+ "apihelp-query+gadgetcategories-summary": "Antaa listan pienoisohjelmien luokista.",
+ "apihelp-query+gadgetcategories-param-names": "Haettavien luokkien nimet.",
+ "apihelp-query+gadgets-description": "Antaa listan tässä wikissä käytetyistä pienoisohjelmista.",
+ "right-gadgets-edit": "Muokata pienoisohjelmien JavaScript- ja CSS-sivuja",
+ "action-gadgets-edit": "muokata tätä pienoisohjelman JavaScript- tai CSS-sivua",
+ "right-gadgets-definition-edit": "Muokata pienoisohjelmien määrityksiä",
+ "action-gadgets-definition-edit": "muokata tämän pienoisohjelman määritystä"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/fo.json b/www/wiki/extensions/Gadgets/i18n/fo.json
new file mode 100644
index 00000000..579e3aba
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/fo.json
@@ -0,0 +1,23 @@
+{
+ "@metadata": {
+ "authors": [
+ "EileenSanda"
+ ]
+ },
+ "gadgets-desc": "Letur brúkarar velja persónligar [[Special:Gadgets|CSS og JavaScript gadgets]] í teirra [[Special:Preferences#mw-prefsection-gadgets|innstillingum]]",
+ "prefs-gadgets": "Gadgets",
+ "gadgets": "Gadgets",
+ "gadgets-title": "Gadgets",
+ "gadgets-pagetext": "Niðanfyri er ein listi yvir serstakar gadgets (ískotisfunktiónir), ið brúkarar kunnu aktivera á teirra [[Special:Preferences#mw-prefsection-gadgets|innstillar síðu]], sum víst á [[MediaWiki:Gadgets-definition|definitions]].\nHetta yvirlitið gevur lætta atgongd til kervisboð síðurnar, ið hevur frágreiðingar og kotur um hvørja gadget.",
+ "gadgets-uses": "Brúkar",
+ "gadgets-required-rights": "Krevur fylgjandi {{PLURAL:$2|rættindi|rættindi}}:\n\n$1",
+ "gadgets-required-skins": "Tøk á {{PLURAL:$2|$1 útsjónd|fylgjandi útsjóndum: $1}}.",
+ "gadgets-default": "Gjørt virkið fyri øllum sum standard",
+ "gadgets-export": "Útflyt",
+ "gadgets-export-title": "Útflyt gadget",
+ "gadgets-not-found": "Gadget \"$1\" ikki funnin.",
+ "gadgets-export-download": "Tak niður",
+ "apihelp-query+gadgetcategories-param-names": "Nøvn á bólkum ið skulu heintast.",
+ "apihelp-query+gadgetcategories-example-1": "Fá eitt yvirlit yvir gadget bólkar",
+ "apihelp-query+gadgetcategories-example-2": "Fá kunning um allir bólkar nevndir \"foo\" og \"bar\""
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/fr.json b/www/wiki/extensions/Gadgets/i18n/fr.json
new file mode 100644
index 00000000..1aeee348
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/fr.json
@@ -0,0 +1,74 @@
+{
+ "@metadata": {
+ "authors": [
+ "Delhovlyn",
+ "Dr Brains",
+ "Grondin",
+ "IAlex",
+ "Meno25",
+ "Peter17",
+ "PieRRoMaN",
+ "Sherbrooke",
+ "Urhixidur",
+ "Zcqsc06",
+ "Zetud",
+ "Djiboun",
+ "Windes",
+ "Lucky",
+ "Gomoko",
+ "SRXcraft",
+ "Macofe",
+ "Ltrlg",
+ "Orlodrim",
+ "Wladek92"
+ ]
+ },
+ "gadgets-desc": "Permet aux utilisateurs de choisir des [[Special:Gadgets|gadgets CSS et Javascripts]] personnalisés dans leurs [[Special:Preferences#mw-prefsection-gadgets|préférences]]",
+ "prefs-gadgets": "Gadgets",
+ "gadgets-prefstext": "Ci-dessous apparaît une liste de gadgets que vous pouvez activer pour votre compte. Ils font appel principalement à JavaScript qui doit donc être activé dans votre navigateur Web.\n\nNotez aussi que ces gadgets spéciaux ne font pas partie du logiciel MediaWiki et qu’ils sont généralement développés et maintenus par les utilisateurs de votre wiki local.\n\nLes administrateurs locaux peuvent modifier [[MediaWiki:Gadgets-definition|les définitions]] et les [[Special:Gadgets|descriptions]] des gadgets disponibles. Le nombre d’utilisateurs pour chaque gadget de ce wiki est listé dans les [[Special:GadgetUsage|statistiques d’utilisation des gadgets]].",
+ "gadgets": "Gadgets",
+ "gadgetusage": "Statistiques d’utilisation des gadgets",
+ "gadgetusage-gadget": "Gadget",
+ "gadgetusage-usercount": "Nombre d'utilisateurs",
+ "gadgetusage-noresults": "Aucun gadget trouvé.",
+ "gadgetusage-intro": "Ce tableau contient le nombre d’utilisateurs qui ont activé chaque gadget de ce wiki. Un utilisateur est considéré comme actif s’il a fait une modification au cours {{PLURAL:$1|de la journée|des $1 derniers jours}}. Cette liste exclut les statistiques des gadgets activés pour tout le monde par défaut, et peut comprendre des gadgets qui ne sont plus disponibles.",
+ "gadgetusage-intro-noactive": "Ce tableau contient le nombre d’utilisateurs qui ont activé chaque gadget de ce wiki. Cette liste exclut les statistiques des gadgets activés pour tout le monde par défaut, et peut comprendre des gadgets qui ne sont plus disponibles.",
+ "gadgetusage-activeusers": "Utilisateurs actifs",
+ "gadgetusage-default": "Par défaut",
+ "gadgets-title": "Gadgets",
+ "gadgets-pagetext": "Voici une liste de gadgets que les utilisateurs peuvent activer dans leur [[Special:Preferences#mw-prefsection-gadgets|page de préférences]], tel que défini dans les [[MediaWiki:Gadgets-definition|définitions]].\nCette vue d’ensemble donne un accès rapide aux pages de messages système qui définissent la description et le code de chaque gadget.",
+ "gadgets-uses": "Utilise",
+ "gadgets-required-rights": "Requiert {{PLURAL:$2|le droit suivant|les droits suivants}} : \n\n$1.",
+ "gadgets-required-skins": "Disponible sur {{PLURAL:$2|l’habillage suivant|les habillages suivants}} : $1.",
+ "gadgets-default": "Activé pour tout le monde par défaut.",
+ "gadgets-legacy": "Le gadget n’est pas chargé. Veuillez migrer vers ResourceLoader. ([https://www.mediawiki.org/wiki/ResourceLoader/Migration_guide_(users) En savoir plus])",
+ "gadgets-export": "Exporter",
+ "gadgets-export-title": "Export de gadget",
+ "gadgets-not-found": "Gadget « $1 » non trouvé.",
+ "gadgets-export-text": "Pour exporter le gadget $1, cliquez sur le bouton « {{int:gadgets-export-download}} », enregistrez le fichier téléchargé puis allez sur la page Special:Import du wiki de destination et téléversez-la. Ajoutez ensuite le texte suivant dans la page MediaWiki:Gadgets-definition :\n<pre>$2</pre>\nIl est nécessaire de disposer des droits correspondants sur le wiki de destination (y compris celui de modifier les messages système) et le téléversement des fichiers doit être activé.",
+ "gadgets-export-download": "Télécharger",
+ "gadgets-validate-notset": "La propriété <code>$1</code> n’est pas définie.",
+ "gadgets-validate-wrongtype": "La propriété <code>$1</code> doit être de type <code>$2</code> plutôt que <code>$3</code>.",
+ "apihelp-query+gadgetcategories-description": "Renvoie une liste de catégories de gadget.",
+ "apihelp-query+gadgetcategories-summary": "Renvoie une liste de catégories de gadget.",
+ "apihelp-query+gadgetcategories-param-prop": "Quelle information de catégorie de gadget obtenir :\n;name:Nom de catégorie interne.\n;title:Titre de la catégorie.\n;members:Nombre de gadgets dans la catégorie.",
+ "apihelp-query+gadgetcategories-param-names": "Noms des catégories à récupérer.",
+ "apihelp-query+gadgetcategories-example-1": "Fournit une liste des catégories de gadget existantes",
+ "apihelp-query+gadgetcategories-example-2": "Fournit toutes les informations sur les catégories \"foo\" et \"bar\"",
+ "apihelp-query+gadgets-description": "Renvoie une liste des gadgets utilisés sur ce wiki.",
+ "apihelp-query+gadgets-summary": "Renvoie une liste des gadgets utilisés sur ce wiki.",
+ "apihelp-query+gadgets-param-prop": "Quelle information de gadget obtenir :\n;id:ID interne du gadget.\n;metadata:Les métadonnées du gadget.\n;desc:Description du gadget transformée en HTML (peut être lent, à n’utiliser que si c’est vraiment nécessaire).",
+ "apihelp-query+gadgets-param-categories": "Gadgets depuis lesquels récupérer les catégories.",
+ "apihelp-query+gadgets-param-ids": "IDs des gadgets à récupérer.",
+ "apihelp-query+gadgets-param-allowedonly": "Lister seulement les gadgets autorisés pour l'utilisateur actuel",
+ "apihelp-query+gadgets-param-enabledonly": "Lister uniquement les gadgets activés par l’utilisateur actuel.",
+ "apihelp-query+gadgets-example-1": "Obtenir une liste de gadgets ainsi que leurs descriptions",
+ "apihelp-query+gadgets-example-2": "Obtenir une liste de gadgets avec toutes les propriétés possibles",
+ "apihelp-query+gadgets-example-3": "Obtenir une liste des gadgets appartenant à la catégorie « foo »",
+ "apihelp-query+gadgets-example-4": "Obtenir l’information sur les gadgets « foo » et « bar »",
+ "apihelp-query+gadgets-example-5": "Obtenir une liste des gadgets activés par l’utilisateur actuel",
+ "right-gadgets-edit": "Modifier les pages JavaScript et CSS de gadget",
+ "action-gadgets-edit": "modifier la page JavaScript ou CSS de ce gadget",
+ "right-gadgets-definition-edit": "Modifier les définitions des gadget",
+ "action-gadgets-definition-edit": "modifier la définition de ce gadget"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/frp.json b/www/wiki/extensions/Gadgets/i18n/frp.json
new file mode 100644
index 00000000..218b1ee5
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/frp.json
@@ -0,0 +1,22 @@
+{
+ "@metadata": {
+ "authors": [
+ "ChrisPtDe"
+ ]
+ },
+ "gadgets-desc": "Pèrmèt ux usanciérs de chouèsir des [[Special:Gadgets|outils CSS et JavaScript]] pèrsonalisâs dens lors [[Special:Preferences#mw-prefsection-gadgets|prèferences]].",
+ "prefs-gadgets": "Outils",
+ "gadgets-prefstext": "Vê-que una lista d’outils que vos pouede activar por voutron compto.\nFont apèl a JavaScript, que dêt vêr étre activâ sur voutron navigator por que fonccionont.\nNotâd que celos outils ont gins de rèsultat sur ceta pâge de prèferences.\n\nNotâd asse-ben que celos outils spèciâls sont pas du tot avouéc la programeria MediaWiki, et pués que sont en g·ènèral dèvelopâs et mantegnus per des usanciérs sur voutron vouiqui local.\nLos administrators locals pôvont changiér los outils disponiblos en utilisent les [[MediaWiki:Gadgets-definition|dèfinicions]] et les [[Special:Gadgets|dèscripcions]].",
+ "gadgets": "Outils",
+ "gadgets-title": "Outils",
+ "gadgets-pagetext": "Vê-que una lista d’outils que los usanciérs pôvont activar dens lor [[Special:Preferences#mw-prefsection-gadgets|pâge de prèferences]], coment dèfeni dens les [[MediaWiki:Gadgets-definition|dèfinicions]].\nCeti apèrçu balye un accès vito fêt a les pâges de mèssâjos sistèmo que dèfenéssont la dèscripcion et lo code de châque outil.",
+ "gadgets-uses": "Utilise",
+ "gadgets-required-rights": "At fôta de cet{{PLURAL:$2|i drêt|os drêts}} :\n\n$1",
+ "gadgets-required-skins": "Disponiblo sur {{PLURAL:$2|l’habelyâjo « $1 »|cetos habelyâjos : « $1 »}}.",
+ "gadgets-default": "Activâ por tot lo mondo per dèfôt.",
+ "gadgets-export": "Èxportacion",
+ "gadgets-export-title": "Èxportacion d’outil",
+ "gadgets-not-found": "Outil « $1 » pas trovâ.",
+ "gadgets-export-text": "Por èxportar l’outil $1, clicar sur lo boton « {{int:gadgets-export-download}} », encartar lo fichiér tèlèchargiê,\npués alar sur la pâge « Spèciâl:Importacion du vouiqui de dèstinacion » et pués l’importar. Apondre aprés ceti tèxto dens la pâge « MediaWiki:Gadgets-definition » :\n<pre>$2</pre>\nO est nècèssèro de d’avêr los drêts corrèspondents sur lo vouiqui de dèstinacion (celi de changiér los mèssâjos sistèmo avouéc) et pués l’importacion dês des fichiérs dêt étre activâ.",
+ "gadgets-export-download": "Tèlèchargiér"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/frr.json b/www/wiki/extensions/Gadgets/i18n/frr.json
new file mode 100644
index 00000000..013691a1
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/frr.json
@@ -0,0 +1,22 @@
+{
+ "@metadata": {
+ "authors": [
+ "Murma174"
+ ]
+ },
+ "gadgets-desc": "Brükern kön uun hör [[Special:Preferences#mw-prefsection-gadgets|iinstelangen]] enkelt [[Special:Gadgets|CSS- an JavaScript-halpers]] aktiwiare",
+ "prefs-gadgets": "Letj halpers",
+ "gadgets-prefstext": "Diar stun enkelt letj halpers, diar arke brüke aktiwiare koon. Jo san miast uun JavaScript skrewen, an diaram kön jo bluas werke, wan JavaScript uun a browser aktiif as. Üüb detheer spezial-sidj werke jo oober ei.\n\nJodiar letj halpers san nään dial faan MediaWiki an wurd miast faan enkelt brükern ütjspekeliaret. Administratooren kön jo letj halpers bewerke. Diarför jaft at [[MediaWiki:Gadgets-definition|definitjuunen]] an [[Special:Gadgets|beskriiwangen]].",
+ "gadgets": "Letj halpers",
+ "gadgets-title": "Letj halpers",
+ "gadgets-pagetext": "Diar stun letj halpers, diar uun det [[MediaWiki:Gadgets-definition|definitjuun]] fäästlaanj san an diar arke brüker uun sin [[Special:Preferences#mw-prefsection-gadgets|iinstelangen]] iinracht koon.\n\nAuer detheer sidj komst dü tu a MediaWiki-süsteemnoorachten mä en beskriiwang an di program-code.",
+ "gadgets-uses": "Tu brüken",
+ "gadgets-required-rights": "Diarför brükst dü {{PLURAL:$2|detdiar brükerrocht|jodiar brükerrochten}}:\n\n$1",
+ "gadgets-required-skins": "Koon mä {{PLURAL:$2|didiar skak|jodiar skaker}} brükt wurd: $1.",
+ "gadgets-default": "Det as faan began för arken aktiif.",
+ "gadgets-export": "Eksport",
+ "gadgets-export-title": "Eksport faan letj halpers",
+ "gadgets-not-found": "Letj halper \"$1\" ei fünjen.",
+ "gadgets-export-text": "Am di letj halper $1 tu eksportiarin, trak üüb „{{int:gadgets-export-download}}“ an seekre det datei üüb dan reegner. Do gung tu \"Spezial:Import\" üüb det wiki, huar di letj halper importiaret wurd skal an schüür det datei huuch. Skriiw do noch didiar tekst üüb det sidj MediaWiki:Gadgets-definition:\n<pre>$2</pre>\nHuar dü det importiare wel, brükst dü jo nuadag brükerrochten tu importiarin an uk det brükerrocht, am MediaWiki-süsteemnoorachten tu bewerkin. An do skal natüürelk det importiarin uun detdiar wiki aktiwiaret wees.",
+ "gadgets-export-download": "Deelloose"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/ga.json b/www/wiki/extensions/Gadgets/i18n/ga.json
new file mode 100644
index 00000000..10341c8b
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/ga.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "පසිඳු කාවින්ද"
+ ]
+ },
+ "gadgets-export": "Easportáil"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/gl.json b/www/wiki/extensions/Gadgets/i18n/gl.json
new file mode 100644
index 00000000..c3e5d4eb
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/gl.json
@@ -0,0 +1,58 @@
+{
+ "@metadata": {
+ "authors": [
+ "Alma",
+ "Toliño",
+ "Banjo",
+ "Elisardojm"
+ ]
+ },
+ "gadgets-desc": "Deixa que os usuarios seleccionen [[Special:Gadgets|trebellos CSS e JavaScript]] nas súas [[Special:Preferences#mw-prefsection-gadgets|preferencias]]",
+ "prefs-gadgets": "Trebellos",
+ "gadgets-prefstext": "A continuación hai unha lista cos trebellos especiais que pode activar para a súa conta.\nA maioría destes trebellos están escritos en JavaScript, así que debe ter o JavaScript activado no seu navegador para que funcionen.\nTeña en conta que estes trebellos non funcionarán nesta páxina de preferencias.\n\nTeña tamén en conta que estes trebellos especiais non son parte do software de MediaWiki e que están creados e mantidos por usuarios no seu wiki local. Os administradores locais poden editar as [[MediaWiki:Gadgets-definition|definicións]] e as [[Special:Gadgets|descricións]] dos trebellos dispoñibles. O número de usuarios de cada trebello neste wiki está listado na [[Special:GadgetUsage|páxina de estatísticas de uso dos trebellos]].",
+ "gadgets": "Trebellos",
+ "gadgetusage": "Estatísticas de uso dos trebellos",
+ "gadgetusage-gadget": "Trebello",
+ "gadgetusage-usercount": "Número de usuarios",
+ "gadgetusage-noresults": "Non se atoparon trebellos.",
+ "gadgetusage-intro": "Esta táboa indica o número de usuarios que teñen activado algún trebello neste wiki. Un usuario activo é alguén que fixo algunha edición {{PLURAL:$1|no último día|nos últimos $1 días}}. A lista non inclúe estatísticas para os trebellos activados para todos por defecto e podería incluír trebellos que xa non están dispoñibles.",
+ "gadgetusage-intro-noactive": "Esta táboa indica o número de usuarios que teñen activado cada trebello neste wiki. A lista non inclúe estatísticas dos trebellos activados para todos por defecto e podería incluír trebellos que xa non están dispoñibles.",
+ "gadgetusage-activeusers": "Usuarios activos",
+ "gadgetusage-default": "Por defecto",
+ "gadgets-title": "Trebellos",
+ "gadgets-pagetext": "Embaixo hai unha lista dos trebellos especiais que os usuarios poden habilitar na súa páxina de preferencias, tal e como se describe nas [[MediaWiki:Gadgets-definition|definicións]].\nEste panorama xeral é de doado acceso ao sistema das páxinas de mensaxes que define cada descrición e código dos trebellos.",
+ "gadgets-uses": "Usa",
+ "gadgets-required-rights": "{{PLURAL:$2|Cómpre o seguinte dereito|Cómpren os seguintes dereitos}}:\n\n$1",
+ "gadgets-required-skins": "Dispoñible {{PLURAL:$2|na aparencia $1|nas seguintes aparencias: $1}}.",
+ "gadgets-default": "Activado para todos por defecto.",
+ "gadgets-legacy": "O trebello non está cargado. Por favor, migre a ResourceLoader. ([https://www.mediawiki.org/wiki/ResourceLoader/Migration_guide_(users) Máis información])",
+ "gadgets-export": "Exportar",
+ "gadgets-export-title": "Exportación de trebellos",
+ "gadgets-not-found": "Non se atopou o trebello \"$1\".",
+ "gadgets-export-text": "Para exportar o trebello $1, prema sobre o botón \"{{int:gadgets-export-download}}\", garde o ficheiro descargado,\nvaia á páxina especial Special:Import do wiki de destino e cárgueo. A continuación, engada o seguinte texto na páxina MediaWiki:Gadgets-definition:\n<pre>$2</pre>\nDebe ter os permisos axeitados no wiki de destino (incluído o dereito de modificar as mensaxes do sistema) e a importación desde a carga de ficheiros debe estar activada.",
+ "gadgets-export-download": "Descargar",
+ "gadgets-validate-notset": "A propiedade <code>$1</code> non está establecida.",
+ "gadgets-validate-wrongtype": "A propiedade <code>$1</code> debe ser de tipo <code>$2</code> en vez de <code>$3</code>.",
+ "apihelp-query+gadgetcategories-description": "Retorna unha lista de categorías de trebellos.",
+ "apihelp-query+gadgetcategories-summary": "Retorna unha lista de categorías de trebellos.",
+ "apihelp-query+gadgetcategories-param-prop": "Que información de categoría obter:\n;name:Nome interno da categoría.\n;title:Título da categoría.\n;members:Número de trebellos na categoría.",
+ "apihelp-query+gadgetcategories-param-names": "Nomes de categorías a consultar.",
+ "apihelp-query+gadgetcategories-example-1": "Obter unha lista de categorías de trebellos existentes",
+ "apihelp-query+gadgetcategories-example-2": "Obter toda a información sobre categorías nomeadas \"foo\" e \"bar\"",
+ "apihelp-query+gadgets-description": "Devolve unha lista dos trebellos usados neste wiki.",
+ "apihelp-query+gadgets-summary": "Devolve unha lista dos trebellos usados neste wiki.",
+ "apihelp-query+gadgets-param-prop": "Que información obter do trebello:\n;id:Identificador interno de trebello.\n;metadata:Metadatos do trebello.\n;desc:Descrición do trebello transformada en HTML (pode ser lento, usar só se é necesario realmente).",
+ "apihelp-query+gadgets-param-categories": "De que categorías consultar os trebellos.",
+ "apihelp-query+gadgets-param-ids": "Identificadores dos trebellos a consultar.",
+ "apihelp-query+gadgets-param-allowedonly": "Listar só os trebellos permitidos para o usuario actual.",
+ "apihelp-query+gadgets-param-enabledonly": "Listar só os trebellos habilitados polo usuario actual.",
+ "apihelp-query+gadgets-example-1": "Amosar unha lista de trebellos xunto coas súas descricións",
+ "apihelp-query+gadgets-example-2": "Amosar unha lista de trebellos con tódalas propiedades posibles",
+ "apihelp-query+gadgets-example-3": "Amosar unha lista de trebellos que pertenzan á categoría \"foo\"",
+ "apihelp-query+gadgets-example-4": "Amosar información sobre os trebellos \"foo\" e \"bar\"",
+ "apihelp-query+gadgets-example-5": "Amosar unha lista dos trebellos habilitados para o usuario actual",
+ "right-gadgets-edit": "Editar as páxinas de JavaScript e CSS dos trebellos",
+ "action-gadgets-edit": "editar a páxina de JavaScript ou CSS deste trebello",
+ "right-gadgets-definition-edit": "Editar as definicións dos trebellos",
+ "action-gadgets-definition-edit": "editar a definición deste trebello"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/grc.json b/www/wiki/extensions/Gadgets/i18n/grc.json
new file mode 100644
index 00000000..5f6033ec
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/grc.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "Omnipaedista"
+ ]
+ },
+ "prefs-gadgets": "Μηχανήματα",
+ "gadgets": "Μηχανήματα",
+ "gadgets-title": "Μηχανήματα",
+ "gadgets-uses": "Χρήσεις"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/gsw.json b/www/wiki/extensions/Gadgets/i18n/gsw.json
new file mode 100644
index 00000000..174e7b63
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/gsw.json
@@ -0,0 +1,23 @@
+{
+ "@metadata": {
+ "authors": [
+ "Als-Chlämens",
+ "Als-Holder"
+ ]
+ },
+ "gadgets-desc": "Macht s Benutzer megli, in ihre [[Special:Preferences#mw-prefsection-gadgets|persenlige Yystellige]] vordefinierti [[Special:Gadgets|CSS- und JavaScript-Gadgets]] z aktiviere",
+ "prefs-gadgets": "Gadgets",
+ "gadgets-prefstext": "Unter git s e Lischt vu spezielle Gadgets, wu for jede Benutzer chenne aktiviert wäre.\nD Gadgets basiere zmeischt uf JavaScript, wäge däm muess JavaScript im Browser aktiviert syy, ass si funktioniere.\nD Gadgets funktionieren aber nit uf däre Syte mit persenlige Yystellige.\n\nMer muess au Acht gee, ass die Gadgets im Allgmeinen nit Teil vu MediaWiki sin, sundern meischt vu\nBenutzer vum lokale Wikis entwicklet un gwartet wäre. Lokali Wiki-Ammanne chenne d Lischt vu dr verfiegbare Gadgets iber d Syte [[MediaWiki:Gadgets-definition]] un [[Special:Gadgets]] bearbeite",
+ "gadgets": "Gadgets",
+ "gadgets-title": "Gadgets",
+ "gadgets-pagetext": "Lischt vu spezielle Gadgets, wu fir jede Benutzer in syyne [[Special:Preferences#mw-prefsection-gadgets|persenlige Yystellige]] verfiegbar sin, wie s [[MediaWiki:Gadgets-definition|definiert]] isch.\nDie Ibersicht bietet e direkte Zuegang zue dr Syschtemnochrichte, wu d Bschryybig un dr Programmcode vu jedem Gadget din sin.",
+ "gadgets-uses": "Bruucht",
+ "gadgets-required-rights": "Brucht {{PLURAL:$2|des folgendi Rächt|die folgende Rächt}}:\n$1",
+ "gadgets-required-skins": "Verfiegbar uff {{PLURAL:$2|derre Benutzeroberflächi|dänne Benutzeroberflächene}}: $1.",
+ "gadgets-default": "Fir alli standardmäßig aktiviert.",
+ "gadgets-export": "Exportiere",
+ "gadgets-export-title": "Hälferli exportiere",
+ "gadgets-not-found": "Hälferli „$1“ isch nit gfunde wore.",
+ "gadgets-export-text": "Go s Hälferli $1 exportiere, klick uf d Schaltflechi „{{int:gadgets-export-download}}“ un tue di abeglade Datei spychere. Gang derno uf d Spezialsyte Spezial:Import uf em Wiki, wu fir dr Import vorgsäh isch, un lad d Datei ufe. Derno fieg dää Text in d Syte MediaWiki:Gadgets-definition yy:\n<pre>$2</pre>\nDu muesch iber di notwändige Rächt uf em Wiki verfiege, wu fir dr Import vorgsäh isch (mitsamt em Rächt MediaWiki-Syschtemnochrichte z bearbeite). Derzue mueß dr Import vu Datei-Upload aktiviert syy.",
+ "gadgets-export-download": "Abelade"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/gu.json b/www/wiki/extensions/Gadgets/i18n/gu.json
new file mode 100644
index 00000000..50af326b
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/gu.json
@@ -0,0 +1,24 @@
+{
+ "@metadata": {
+ "authors": [
+ "Dsvyas",
+ "KartikMistry",
+ "Sushant savla"
+ ]
+ },
+ "gadgets-desc": "સભ્યોને [[Special:Preferences#mw-prefsection-gadgets|મારી પસંદ]] માં પોતાના [[Special:Gadgets|CSS અને JavaScript ગેજેટ્સ]] પસંદ કરવા દે છે.",
+ "prefs-gadgets": "યંત્રો/સાધનો",
+ "gadgets-prefstext": "નીચે એવા વિશેષ સાધનોની યાદી નીચે આપી છે જે તમે તમારા ખાતામાં સક્રિય કરી શકો છો.\nઆ સાધનો મહદ્ અંશે જાવા સ્ક્રિપ્ટ આધારિત છે માટે તે યોગ્ય રીતે કામ કરે તે માટે આપના બ્રાઉઝરમાં જાવા સ્ક્રિપ્ટ સક્રિય (ઍનેબલ) કરેલી હોવી જરૂરી છે.\nએ બાબત નોંધમાં લેશો કે આ સાધનોની અસર તમારા 'મારી પસંદ'ના પાના ઉપર થશે નહી.\n\nએ વાત પણ ધ્યાનમાં રાખશો કે આ વિશેષ સાધનો મિડિયાવિકિ સૉફ્ટવેરનો ભાગ નથી, સામાન્ય રીતે તે આપના સ્થાનીક વિકિના સભ્યો દ્વારા વિકસાવવામાં આવ્યા હોય છે અને તેઓજ તેનું ધ્યાન રાખે છે. સ્થાનિક પ્રબંધકો [[MediaWiki:Gadgets-definition|વ્યાખ્યા]] અને [[Special:Gadgets|વર્ણન]]નો ઉપયોગ કરીને આ સાધનોમાં ફેરફાર કરી શકે છે.",
+ "gadgets": "યંત્રો/સાધનો",
+ "gadgets-title": "યંત્રો/સાધનો",
+ "gadgets-pagetext": "નીચે એવા વિશેષ સાધનોની યાદી આપી છે જેમાથી જરૂરીયાત પ્રમાણેના સાધનો સભ્ય તેમના [[Special:Preferences#mw-prefsection-gadgets|મારી પસંદ]] પાના ઉપર સક્રિય કરી શકે છે ([[MediaWiki:Gadgets-definition|વ્યાખ્યા]]મા વર્ણવ્યા મુજબ).\n\nઆ નિરિક્ષણથી સહેલાઇથી સિસ્ટમ સંદેશા વાળા પાના ખોલી શકશો જ્યાં દરેક સાધનનું વર્ણન અને તેનો કોડ આપેલો છે.",
+ "gadgets-uses": "ઉપયોગો",
+ "gadgets-required-rights": "નીચેના {{PLURAL:$2|હક્ક|હક્કો}} જરૂરી:\n\n$1",
+ "gadgets-required-skins": "{{PLURAL:$2|$1 ત્વચા|નીચેની ત્વચા: $1}} માં મોજૂદ.",
+ "gadgets-default": "મૂળ થકી સૌ માટે સક્રીય કરો",
+ "gadgets-export": "નિકાસ",
+ "gadgets-export-title": "સાધન નિકાસ",
+ "gadgets-not-found": "સાધન જૂથ \"$1\" ન મળ્યું.",
+ "gadgets-export-text": "$1 યંત્રને નિકાસિત કરવા, \"{{int:gadgets-export-download}}\" બટન પર ક્લિક કરો, અને કાઉનલોડ કરેલી ફાઈલ સાચવો,\nSpecial:Import નિયોજીત વિકિ પર Special:Import પર જાવ અને અપલોડ કરો. અને પછી નીચેનાને MediaWiki:Gadgets-definition page પર ઉમેરો:\n<pre>$2</pre>\nનોયોજિત વિકિ પર તમને યોગ્ય પરવાનગીઓ હોવી જોઈએ (સિસ્ટમ સંદેશામાં ફેરફાર કરવા સહિતની) અને ફાઈલ અપલોડ માં આયત વિકલ્પ સક્રીય હોવો જોઇએ",
+ "gadgets-export-download": "ડાઉનલોડ"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/he.json b/www/wiki/extensions/Gadgets/i18n/he.json
new file mode 100644
index 00000000..e3694691
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/he.json
@@ -0,0 +1,58 @@
+{
+ "@metadata": {
+ "authors": [
+ "Amire80",
+ "Guycn2",
+ "Rotem Liss",
+ "YaronSh"
+ ]
+ },
+ "gadgets-desc": "אפשרות למשתמשים לבחור [[Special:Gadgets|סקריפטים בקוד JavaScript וסגנונות בקוד CSS]] ב[[Special:Preferences#mw-prefsection-gadgets|העדפות]] שלהם",
+ "prefs-gadgets": "גאדג'טים",
+ "gadgets-prefstext": "להלן רשימה של גאדג'טים מיוחדים שבאפשרותך להפעיל בחשבון שלך.\nהגאדג'טים האלה מבוססים ברובם על שפת JavaScript, ולכן יש להפעיל אותה בדפדפן כדי שהם יעבדו.\nנא לשים לב לכך שלא תהיה לגאדג'טים כל השפעה על דף ההעדפות הזה.\n\nכמו־כן, יש לשים לב לכך שהגאדג'טים אינם חלק מתוכנת מדיה־ויקי, והם בדרך־כלל מפותחים ומתוחזקים על־ידי משתמשים באתר הוויקי המקומי הזה.\nמפעילי מערכת מקומיים יכולים לערוך את ה[[MediaWiki:Gadgets-definition|הגדרות]] ואת ה[[Special:Gadgets|תיאורים]] של הגאדג'טים הזמינים. מספר המשתמשים של כל גאדג'ט רשום ב[[Special:GadgetUsage|סטטיסטיקות השימוש בגאדג'טים]].",
+ "gadgets": "גאדג'טים",
+ "gadgetusage": "סטטיסטיקת השימוש בגאדג'טים",
+ "gadgetusage-gadget": "גאדג'ט",
+ "gadgetusage-usercount": "מספר המשתמשים",
+ "gadgetusage-noresults": "לא נמצאו גאדג'טים",
+ "gadgetusage-intro": "הטבלה הזאת מציגה את מספר המשתמשים שהפעילו כל גאדג'ט בוויקי הזה. מי שערך {{PLURAL:$1|במהלך היום אחרון|במהלך היומיים האחרונים|במהלך $1 הימים האחרונים}} נספר בתור משתמש פעיל. הרשימה הזאת אינה כוללת סטטיסטיקות על גאדג'טים שמופעלים אצל כולם בתור בררת מחדל והיא עשויה לכלול גאדג'טים שכבר אינם זמינים.",
+ "gadgetusage-intro-noactive": "הטבלה מציגה את מספר המשתמשים שהפעילו כל גאדג'ט בוויקי הזה. הרשימה הזאת כוללת סטטיסטיקות לגאדג'טים שכולם הפעילו לפי בררת המחדל ויכולה לכלול גאדג'טים שאינם זמינים עוד.",
+ "gadgetusage-activeusers": "משתמשים פעילים",
+ "gadgetusage-default": "ברירת מחדל",
+ "gadgets-title": "גאדג'טים",
+ "gadgets-pagetext": "זוהי רשימה של סקריפטים שמשתמשים יכולים להתקין באמצעות [[Special:Preferences#mw-prefsection-gadgets|דף ההעדפות]] שלהם, כפי שהוגדרו ב[[MediaWiki:Gadgets-definition|הודעת המערכת המתאימה]].\nמכאן ניתן לגשת בקלות לדפי הודעות המערכת שמגדירים את התיאור והקוד של כל סקריפט.",
+ "gadgets-uses": "משתמש בדפים",
+ "gadgets-required-rights": "{{PLURAL:$2|נדרשת ההרשאה הבאה|נדרשות ההרשאות הבאות}}:\n\n$1",
+ "gadgets-required-skins": "זמין {{PLURAL:$2|בערכות העיצוב הבאות: $1|בערכת העיצוב $1}}",
+ "gadgets-default": "מופעל לכולם כברירת מחדל.",
+ "gadgets-legacy": "הגאדג'ט לא נטען. נא לעדכן לשימוש ב־ResourceLoader. ([https://www.mediawiki.org/wiki/ResourceLoader/Migration_guide_(users) מידע נוסף])",
+ "gadgets-export": "ייצוא",
+ "gadgets-export-title": "ייצוא גאדג'טים",
+ "gadgets-not-found": "הגאדג׳ט \"$1\" לא נמצא.",
+ "gadgets-export-text": "כדי לייצא את הגאדג'ט $1, יש ללחוץ על הכפתור \"{{int:gadgets-export-download}}\", לשמור את הקובץ שהתקבל,\nלגשת אל הדף Special:Import באתר הוויקי המיועד ולהעלות את הקובץ. לאחר מכן, יש להוסיף את הקוד הבא לדף MediaWiki:Gadgets-definition באתר הוויקי המיועד:\n<pre>$2</pre>\nיש להחזיק בהרשאות מתאימות באתר הוויקי המיועד (לרבות הרשאה לעריכת הודעות מערכת), והאפשרות לייבוא מקובץ חייבת להיות מופעלת.",
+ "gadgets-export-download": "הורדה",
+ "gadgets-validate-notset": "המאפיין <code>$1</code> אינו מוגדר.",
+ "gadgets-validate-wrongtype": "המאפיין <code>$1</code> צריך להיות מסוג <code>$2</code> ולא <code>$3</code>.",
+ "apihelp-query+gadgetcategories-description": "החזרת רשימת קטגוריות של גדג'טים.",
+ "apihelp-query+gadgetcategories-summary": "החזרת רשימת קטגוריות של גאדג'טים.",
+ "apihelp-query+gadgetcategories-param-prop": "איזה מידע על גאדג'טים לקבל:\n;name:שם קטגוריה פנימי.\n;title:שם הקטגוריה.\n;members:מספר הגאדג'טים בקטגוריה.",
+ "apihelp-query+gadgetcategories-param-names": "שמות הקטגוריות לאחזור.",
+ "apihelp-query+gadgetcategories-example-1": "קבלת רשימת קטגוריות גאדג'טים קיימות",
+ "apihelp-query+gadgetcategories-example-2": "קבלת כל המידע על קטגוריות בשם \"foo\" ו־\"bar\"",
+ "apihelp-query+gadgets-description": "קבלת רשימת גאדג'טים שמשמשים בוויקי הזה.",
+ "apihelp-query+gadgets-summary": "החזרת רשימת גאדג'טים שמשמשים בוויקי הזה.",
+ "apihelp-query+gadgets-param-prop": "איזה מידע על גאדג'טים לקבל:\n;id:מזהה גאדג'ט פנימי.\n;metadata:המטא־נתונים של הגאדג'ט.\n;desc:תיאור הגאדג'ט ב־HTML (זה יכול להיות אטי, יש להשתמש בזה רק אם זה נחוץ).",
+ "apihelp-query+gadgets-param-categories": "מאיזו קטגוריה לאחזר את הגאדג'טים.",
+ "apihelp-query+gadgets-param-ids": "מזהים של גאדג'טים לאחזור.",
+ "apihelp-query+gadgets-param-allowedonly": "לרשום רק גאדג'טים שמותרים למשתמש הנוכחי.",
+ "apihelp-query+gadgets-param-enabledonly": "לרשום רק גאדג'טים שהמשתמש הנוכחי הפעיל.",
+ "apihelp-query+gadgets-example-1": "קבלת רשימת גאדג'טים עם התיאורים שלהם",
+ "apihelp-query+gadgets-example-2": "קבלת רשימת גאדג'טים עם כל המאפיינים שלהם",
+ "apihelp-query+gadgets-example-3": "קבלת רשימת גאדג'טים בקטגוריה \"foo\"",
+ "apihelp-query+gadgets-example-4": "קבלת מידע על הגאדג'טים \"foo\" ו־\"bar\"",
+ "apihelp-query+gadgets-example-5": "קבלת רשימת גאדג'טים שמופעלים למשתמש הנוכחי",
+ "right-gadgets-edit": "עריכת דפי JavaScript ו־CSS של גאדג'טים",
+ "action-gadgets-edit": "לערוף את דף ה־JavaScript או דף ה־CSS של הגאדג'ט הזה",
+ "right-gadgets-definition-edit": "עריכת הגדרות של גאדג'טים",
+ "action-gadgets-definition-edit": "לערוך את הגדרת הגאדג'ט הזה"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/hi.json b/www/wiki/extensions/Gadgets/i18n/hi.json
new file mode 100644
index 00000000..fe628930
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/hi.json
@@ -0,0 +1,46 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ansumang",
+ "Kaustubh",
+ "Mayur",
+ "Shyam",
+ "Siddhartha Ghai",
+ "Hindustanilanguage",
+ "Sfic"
+ ]
+ },
+ "gadgets-desc": "सदस्यों को उनकी [[Special:Preferences#mw-prefsection-gadgets|वरीयताओं]] में से चुनिंदा [[Special:Gadgets|CSS और जावालिपि जुगत]] चुनने दो।",
+ "prefs-gadgets": "उपकरण (गैजेट)",
+ "gadgets-prefstext": "नीचे विशेष उपकरणों की सूची दी गई है, जिन्हें आप अपने खाते के लिये सक्षम कर सकते हैं।\nये उपकरण अधिकांशतः जावास्क्रिप्ट पर आधारित है, इसलिए इनके कार्यशील होने के लिए आपके ब्राउज़र में जावास्क्रिप्ट सक्षम होनी चाहिये।\nध्यान दें कि इन उपकरणों से आपके वरीयता पृष्ठ पर कोई असर नहीं होगा।\n\nयह भी ध्यान दें कि ये विशेष उपकरण मीडियाविकी सॉफ़्टवेयर का भाग नहीं हैं, और प्रायः सदस्यों द्वारा उनकी स्थानीय विकी पर विकसित एवं अनुरक्षित किए जाते हैं।\nस्थानीय प्रबंधक उपकरणों की [[MediaWiki:Gadgets-definition|परिभाषाएँ]] एवं [[Special:Gadgets|विवरण]] संपादित कर सकते हैं।",
+ "gadgets": "उपकरण",
+ "gadgetusage": "गैजेट उपयोग आंकड़े",
+ "gadgetusage-gadget": "गैजेट",
+ "gadgetusage-usercount": "सदस्यों की संख्या",
+ "gadgetusage-noresults": "कोई गैजेट नहीं मिला।",
+ "gadgetusage-activeusers": "सक्रिय सदस्य",
+ "gadgetusage-default": "प्राथमिक",
+ "gadgets-title": "उपकरण",
+ "gadgets-pagetext": "नीचे सभी [[MediaWiki:Gadgets-definition|परिभाषित]] विशेष उपकरणों की सूची दी गई है, जिन्हें सदस्य [[Special:Preferences#mw-prefsection-gadgets|अपनी वरीयताओं]] से सक्षम कर सकते हैं।\nयह समीक्षा सभी उपकरणों के विवरण और कोड वाले अंतरफल संदेश पृष्ठों की कड़ियाँ प्रदान करती है।",
+ "gadgets-uses": "उपयोग",
+ "gadgets-required-rights": "निम्नलिखित {{PLURAL:$2|अधिकार|अधिकारों}} की आवश्यकता है:\n\n$1",
+ "gadgets-required-skins": "उपलब्ध है {{PLURAL:$2|$1 स्किन|निम्नलिखित स्किन: $1}}.",
+ "gadgets-default": "डिफ़ॉल्ट रूप से सभी के लिए सक्षम है।",
+ "gadgets-export": "निर्यात",
+ "gadgets-export-title": "गैजेट निर्यात",
+ "gadgets-not-found": "गैजेट \"$1\" मिला नहीं ।",
+ "gadgets-export-text": "$1 उपकरण निर्यात करने के लिये \"{{int:gadgets-export-download}}\" बटन पर क्लिक करें, डाउनलोड की गई फ़ाइल सहेजें, लक्ष्य विकि पर Special:Import पर जाएँ और फ़ाइल अपलोड करें। तत्पश्चात MediaWiki:Gadgets-definition में निम्न पाठ जोड़ें:\n<pre>$2</pre>\nआपके पास लक्ष्य विकि पर उपयुक्त अधिकार होने चाहिये (जिसमें अंतरफल संदेशों को सम्पादित करने का अधिकार शामिल है) और विकि पर फ़ाइल द्वारा आयात सक्षम होना चाहिये।",
+ "gadgets-export-download": "डाउनलोड",
+ "gadgets-validate-notset": "गुण <code>$1</code> तय नहीं है।",
+ "apihelp-query+gadgetcategories-description": "गैजेट श्रेणियों की सूची परिणाम-स्वरूप लाती है",
+ "apihelp-query+gadgetcategories-param-names": "श्रेणियों के नाम जिन्हें निकालना है।",
+ "apihelp-query+gadgetcategories-example-1": "मौजूदा गैजेट श्रेणियों की सूची प्राप्त करें",
+ "apihelp-query+gadgetcategories-example-2": "\"foo\" और \"bar\" श्रेणियों के बारे में पूरी जानकारी प्राप्त करें",
+ "apihelp-query+gadgets-description": "परिणाम-स्वरूप इस विकि पर प्रयोग किए जाने वाले सभी गैजेटों की सूची प्राप्त करें।",
+ "apihelp-query+gadgets-param-categories": "किन श्रेणियों के गैजेट प्राप्त करें",
+ "apihelp-query+gadgets-param-ids": "प्राप्त करने के गैजेटों के आई०डी०।",
+ "apihelp-query+gadgets-param-allowedonly": "वर्तमान सदस्य को अनुमति-प्राप्त गैजेटों को सूचीबद्ध करें।",
+ "apihelp-query+gadgets-param-enabledonly": "वर्तमान सदस्य के लिए सक्रिय गैजेट सूची",
+ "right-gadgets-definition-edit": "गैजेट की परिभाषा लिखें",
+ "action-gadgets-definition-edit": "इस गैजेट की परिभाषा लिखें"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/hr.json b/www/wiki/extensions/Gadgets/i18n/hr.json
new file mode 100644
index 00000000..7ec304f9
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/hr.json
@@ -0,0 +1,32 @@
+{
+ "@metadata": {
+ "authors": [
+ "Anton008",
+ "Dalibor Bosits",
+ "Ex13",
+ "MaGa",
+ "Roberta F.",
+ "SpeedyGonsales"
+ ]
+ },
+ "gadgets-desc": "Omogućava suradnicama biranje osobnih [[Special:Gadgets|CSS i JavaScript dodataka]] u svojim [[Special:Preferences#mw-prefsection-gadgets|postavkama]]",
+ "prefs-gadgets": "Dodatci",
+ "gadgets-prefstext": "Slijedi popis posebnih dodataka koje možete omogućiti.\nVećinom su napisani u JavaScriptu, stoga JavaScript mora biti omogućen u vašem internetskom pregledniku da bi radili.\nNijedan dodatak nema učinka na ovu stranicu s postavkama.\n\nOvi posebni dodatci nisu dio MediaWiki softvera, najčešće ih razvijaju i održavaju suradnici na lokalnom wikiju.\nLokalni administratori mogu uređivati dostupne dodatke putem [[MediaWiki:Gadgets-definition|definicija]] i [[Special:Gadgets|opisa]]. Broj korisnika dodataka možete vidjeti na stranici [[Special:GadgetUsage|Statistika uporabe dodataka]].",
+ "gadgets": "Dodatci",
+ "gadgetusage": "Statistika uporabe dodataka",
+ "gadgetusage-gadget": "Dodatak",
+ "gadgetusage-usercount": "Ukupno suradnika",
+ "gadgetusage-intro": "Tablica prikazuje broj suradnika koji su omogućili dodatke na ovom wikiju. U aktivne suradnike se ubraja onaj koji je napravio uređivanje u {{PLURAL:$1|zadnji dan|$1 zadnja dana|$1 zadnjih dana}}. Popis ne uključuje statistike za dodatke koji su svima zadano omogućeni, te može uključivati dodatke koji više nisu dostupni.",
+ "gadgetusage-intro-noactive": "Tablica prikazuje broj suradnika koji su omogućili dodatke na ovom wikiju. Popis ne uključuje statistike za dodatke koji su svima zadano omogućeni, te može uključivati dodatke koji više nisu dostupni.",
+ "gadgetusage-activeusers": "Aktivnih suradnika",
+ "gadgetusage-default": "zadano uključeno",
+ "gadgets-title": "Dodatci",
+ "gadgets-pagetext": "Slijedi popis posebnih JavaScript dodataka koje suradnici mogu omogućiti u svojim [[Special:Preferences#mw-prefsection-gadgets|postavkama]], kako je definirano stranicom [[MediaWiki:Gadgets-definition|definicija]].\nOvaj pregled omogućava lak pristup porukama sustava koje opisuju dodatke i njihov kod.",
+ "gadgets-uses": "Rabi",
+ "gadgets-required-rights": "Zahtijeva {{PLURAL:$2|$1 pravo|sljedeća prava: $1}}.",
+ "gadgets-export": "Izvezi",
+ "gadgets-export-title": "Izvoz JS skripti (''gadgets'')",
+ "gadgets-not-found": "''Gadget'' \"$1\" nije pronađen.",
+ "gadgets-export-text": "Za izvoz $1 JavaScript pomoćne skripte (''gadgeta''), kliknite na \"{{int:gadgets-export-download}}\" gumb, snimiti preuzetu datoteku,\nzatim idete na Special:Import na odredišnoj wiki i postavite skriptu tamo. Zatim dodajte sljedeće na \"MediaWiki:Gadgets-definition stranici:\n<pre>$2</pre>\nMorate imati odgovarajuća prava na odredišnoj wiki (uključujući i pravo na uređivanje sistemskih poruka) i uvoz iz snimljenih datoteka mora biti omogućen.",
+ "gadgets-export-download": "Preuzmi"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/hsb.json b/www/wiki/extensions/Gadgets/i18n/hsb.json
new file mode 100644
index 00000000..8ca2f0b4
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/hsb.json
@@ -0,0 +1,22 @@
+{
+ "@metadata": {
+ "authors": [
+ "Michawiki"
+ ]
+ },
+ "gadgets-desc": "Zmóžnja wužiwarjam swójske [[Special:Gadgets|přisłuški za CSS a JavaScript]] w jich [[Special:Preferences#mw-prefsection-gadgets|nastajenjach]] wubrać",
+ "prefs-gadgets": "Specialne funkcije",
+ "gadgets-prefstext": "Deleka je lisćina specialnych funkcijow, kotrež móžeš za swoje wužiwarske konto zmóžnić. Tute specialne funkcije zwjetša na JavaScripće bazěruja, tohodla dyrbi JavaScript we wobhladowaku zmóžnjeny być, zo bychu fungowali.\nWobkedźbuj tež, zo so tute specialne funkcije na tutu stronu z wosobinskimi nastajenjemi njewuskutkuja.\n\nNimo toho wobkedźbuj, zo tute specialne funkcije dźěl softwary MediaWiki njejsu a so zwjetša wot wužiwarjow na jich lokalnym wikiju wuwiwaja a wothladuja. Lokalni administratorojo móža lisćinu k dispoziciji stejacych specialnych funkcijow z pomocu [[MediaWiki:Gadgets-definition|definicijow]] a [[Special:Gadgets|wopisanjow]] wobdźěłać.",
+ "gadgets": "Specialne funkcije",
+ "gadgets-title": "Specialne funkcije",
+ "gadgets-pagetext": "Deleka je lisćina specialnych funkcijow, kotrež wužiwarjo móža na swojej [[Special:Preferences#mw-prefsection-gadgets|stronje nastajenjow]] zmóžnić, kaž přez [[MediaWiki:Gadgets-definition|definicije]] definowane.\nTutón přehlad skići lochki přistup k systemowym zdźělenkam, kotrež wopisanje a kod kóždeje specialneje funkcije definuja.",
+ "gadgets-uses": "Wužiwa",
+ "gadgets-required-rights": "Wužaduje sej {{PLURAL:$2|slědowace prawo|slědowacej prawje|slědowace prawa|slědowace prawa}}:\n\n$1",
+ "gadgets-required-skins": "Na {{PLURAL:$2|slědowacej drasće|slědowacymaj drastomaj|slědowacych drastach|slědowacych drastach}} k dispoziciji: $1",
+ "gadgets-default": "Za wšěch standardnje zmóžnjeny.",
+ "gadgets-export": "Eksportować",
+ "gadgets-export-title": "Specialnu funkciju eksportować",
+ "gadgets-not-found": "Specialna funkcija \"$1\" njeje so namakała.",
+ "gadgets-export-text": "Zo by specialnu funkciju $1 eksportował, klikń na tłóčatko \"{{int:gadgets-export-download}}\", składuj sćehnjenu dataju, dźi do Special:Import w cilowym wikiju a nahraj ju. Přidaj potom slědowace k MediaWiki:Gadgets-definition:\n<pre>$2</pre>\nDyrbiš trěbne prawa na cilowym wikiju měć (inkluziwnje prawo systemowe powěsće wobdźěłać) a a import datajowych nahraćow dyrbi zmóžnjeny być.",
+ "gadgets-export-download": "Sćahnyć"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/hu.json b/www/wiki/extensions/Gadgets/i18n/hu.json
new file mode 100644
index 00000000..73263f14
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/hu.json
@@ -0,0 +1,43 @@
+{
+ "@metadata": {
+ "authors": [
+ "Bináris",
+ "BáthoryPéter",
+ "Dani",
+ "Tgr",
+ "Vogone",
+ "Tacsipacsi",
+ "Rodrigo"
+ ]
+ },
+ "gadgets-desc": "A felhasználók saját [[Special:Gadgets|CSS és JavaScript eszközöket]] választhatnak ki a [[Special:Preferences#mw-prefsection-gadgets|beállításaiknál]]",
+ "prefs-gadgets": "Segédeszközök",
+ "gadgets-prefstext": "Az alábbi listában látható kiegészítő segédeszközök bekapcsolásával kényelmesebbé teheted a wiki használatát és szerkesztését.\nLegtöbbjük JavaScriptet használ, így ezt engedélyezned kell a böngésződben, hogy működjenek.\nA segédeszközök nem működnek ezen a beállításoldalon, így probléma esetén ki tudod őket kapcsolni.\n\nEzek az eszközök nem részei a MediaWiki szoftvernek, általában a wiki felhasználói tartják karban őket.\nAz adminisztrátorok a [[MediaWiki:Gadgets-definition|definíciókat]] és a [[Special:Gadgets|leírásokat]] tartalmazó lapok segítségével tudják módosítani az elérhető eszközök listáját. Hogy melyik mennyire népszerű, azt itt láthatod: [[Special:GadgetUsage|kiegészítő használói satisztikák]].",
+ "gadgets": "Segédeszközök",
+ "gadgetusage": "Segédeszköz-használati statisztika",
+ "gadgetusage-gadget": "Segédeszköz",
+ "gadgetusage-usercount": "Használók száma",
+ "gadgetusage-noresults": "Nem található segédeszköz.",
+ "gadgetusage-intro": "Ez a táblázat azt mutatja, hogy hányan engedélyezték az egyes segédeszközöket ezen a wikin. Aktívnak számít valaki, aki szerkesztett a legutóbbi $1 napon. A lista nem tartalmaz statisztikát alapértelmezetten mindenkinek bekapcsolt segédeszközökhöz, de tartalmazhat már nem elérhetőeket is.",
+ "gadgetusage-intro-noactive": "Ez a táblázat azt mutatja, hogy hányan engedélyezték az egyes segédeszközöket ezen a wikin. A lista nem tartalmaz statisztikát alapértelmezetten mindenkinek bekapcsolt segédeszközökhöz, de tartalmazhat már nem elérhetőeket is.",
+ "gadgetusage-activeusers": "Aktív szerkesztők",
+ "gadgetusage-default": "Alapértelmezett",
+ "gadgets-title": "Segédeszközök",
+ "gadgets-pagetext": "Itt látható azon segédeszközök listája, amiket a felhasználók bekapcsolhatnak a [[Special:Preferences#mw-prefsection-gadgets|beállításaiknál]]. A lista a [[MediaWiki:Gadgets-definition|definíciókat]] tartalmazó lapon módosítható.\nEz az áttekintő lap egyszerű hozzáférést nyújt az eszközök kódját, illetve leírását tartalmazó rendszerüzenet-lapokhoz.",
+ "gadgets-uses": "Kód",
+ "gadgets-required-rights": "A következő {{PLURAL:$2|jogosultságra|jogosultságokra}} van szükség:\n\n$1",
+ "gadgets-required-skins": "{{PLURAL:$2|$1 felületen érhető el|Az alábbi felületeken érhető el: $1}}.",
+ "gadgets-default": "Mindenki számára engedélyezett alapértelmezettként.",
+ "gadgets-legacy": "A segédeszköz nincs betöltve. Állítsd át ResourceLoaderre. ([https://www.mediawiki.org/wiki/ResourceLoader/Migration_guide_(users) További információk])",
+ "gadgets-export": "Exportálás",
+ "gadgets-export-title": "Segédeszköz exportálása",
+ "gadgets-not-found": "A(z) „$1“ segédeszköz nem található.",
+ "gadgets-export-text": "A(z) $1 segédeszköz exportálásához kattints a „{{int:gadgets-export-download}}“ gombra, mentsd el a fájlt, majd a célwikiben a Special:Import lapon töltsd fel. Ezután a MediaWiki:Gadgets-definition laphoz add hozzá a következőket:\n<pre>$2</pre>\nA célwikiben rendelkezned kell a megfelelő jogokkal (beleértve a rendszerüzenetek szerkesztését) és engedélyezve kell lennie a fájlimportálásnak.",
+ "gadgets-export-download": "Letöltés",
+ "apihelp-query+gadgetcategories-description": "A segédeszköz-kategóriák listáját adja vissza.",
+ "apihelp-query+gadgetcategories-param-prop": "Milyen információkat szeretnél a segédeszköz-kategóriáról:\n;name:Belső kategórianév.\n;title:Kategória címe.\n;members:A kategóriában található segédeszközök száma.",
+ "right-gadgets-edit": "segédeszközök JavaScript- és CSS-lapjainak szerkesztése",
+ "action-gadgets-edit": "ennek a segédeszköz-JavaScriptnek vagy -CSS-nek a szerkesztése",
+ "right-gadgets-definition-edit": "segédeszköz-definíciók szerkesztése",
+ "action-gadgets-definition-edit": "ennek a segédeszköz-definíciónak a szerkesztése"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/hy.json b/www/wiki/extensions/Gadgets/i18n/hy.json
new file mode 100644
index 00000000..fb498bc2
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/hy.json
@@ -0,0 +1,21 @@
+{
+ "@metadata": {
+ "authors": [
+ "Xelgen",
+ "Aram1985"
+ ]
+ },
+ "gadgets-desc": "Թույլ է տալիս օգտագործողներին ընտրել հատուկ [[Special:Gadgets|ՍիԷսԷս և ՋավաՍկիրպտ (CSS and JavaScript) գադջեթներ]] իրանց [[Special:Preferences#mw-prefsection-gadgets|նախընտրությունների]] էջում։",
+ "prefs-gadgets": "Գադջեթներ",
+ "gadgets-prefstext": "Այստեղ բերված են հատուկ հավելումներ՝ գաջեթներ, որոնք դուք կարող եք միացնել ըստ ձեր ցանկության։\nՀավելումները հիմնված են ՋավաՍկրիպտի վրա, ուստի հավելումների աշխատանքի համար անհրաժեշտ է, որ ձեր դիտարկչում ՋավաՍկրիպտը միացված լինի։\nՀաշվի առեք, որ գադջեթների աշխատանքը այս էջում չի նկատվի։\n\nՆկատի ունեցեք, որ ստորև բերված հավելումները ՄեդիաՎիքի ծրագրի մաս չեն հանդիսանում, և որպես կանոն իրանք ստեղծվում և սպասարկվում են ձեր վիքիի մասնակիցների կողմից։\nՎիքիի ադմինիստրատորները կարող են խմբագրել հասանելի գադջեթների [[MediaWiki:Gadgets-definition|ցանկը]] և [[Special:Gadgets|նկարագրությունը]]։",
+ "gadgets": "Գադջեթներ",
+ "gadgets-title": "Գադջեթներ",
+ "gadgets-uses": "Օգտագործում է",
+ "gadgets-required-rights": "Անհրաժեշտ են հետևյալ {{PLURAL:$2|իրավունքը|իրավունքները}}:\n\n$1",
+ "gadgets-required-skins": "Հասանելի է {{PLURAL:$2|$1 արտաքին տեսքով|$1 արտաքին տեսքերով}}։",
+ "gadgets-default": "Լռելյայն միացված է բոլորի համար։",
+ "gadgets-export": "Արտահանել",
+ "gadgets-export-title": "Գադջեթի արտահանում",
+ "gadgets-not-found": "$1 գադջեթը չի գտնվել",
+ "gadgets-export-download": "Բեռնել"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/ia.json b/www/wiki/extensions/Gadgets/i18n/ia.json
new file mode 100644
index 00000000..496f829a
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/ia.json
@@ -0,0 +1,22 @@
+{
+ "@metadata": {
+ "authors": [
+ "McDutchie"
+ ]
+ },
+ "gadgets-desc": "Permitte que usatores selige [[Special:Gadgets|gadgets CSS e JavaScript]] personalisate in lor [[Special:Preferences#mw-prefsection-gadgets|preferentias]]",
+ "prefs-gadgets": "Gadgets",
+ "gadgets-prefstext": "Infra es un lista de gadgets special que tu pote activar in tu conto.\nIste gadgets se basa pro le major parte sur JavaScript, dunque JavaScript debe esser active in tu navigator pro permitter que illos functiona.\nNota que iste gadgets non habera effecto in iste pagina de preferentias.\n\nNota etiam que iste gadgets special non face parte del software de MediaWiki, e es normalmente disveloppate e mantenite per usatores in tu wiki local.\nLe administratores local pote modificar le [[MediaWiki:Gadgets-definition|definitiones]] e [[Special:Gadgets|descriptiones]] del gadgets disponibile. Le numero de usatores de cata gadget sur iste wiki es listate in le pagina [[Special:GadgetUsage|Statisticas de uso de gadgets]].",
+ "gadgets": "Gadgets",
+ "gadgets-title": "Gadgets",
+ "gadgets-pagetext": "Infra es un lista de gadgets special que le usatores pote activar in lor [[Special:Preferences#mw-prefsection-gadgets|paginas de preferentias]], secundo le [[MediaWiki:Gadgets-definition|definitiones]].\nIste supervista permitte le accesso commode al paginas de messages de systema que defini le description e codice de cata gadget.",
+ "gadgets-uses": "Usa",
+ "gadgets-required-rights": "Require le sequente {{PLURAL:$2|derecto|derectos}}:\n\n$1",
+ "gadgets-required-skins": "Disponibile con le {{PLURAL:$2|apparentia $1|sequente apparentias: $1}}.",
+ "gadgets-default": "Activate pro omnes per predefinition.",
+ "gadgets-export": "Exportar",
+ "gadgets-export-title": "Exportation de gadget",
+ "gadgets-not-found": "Gadget \"$1\" non trovate.",
+ "gadgets-export-text": "Pro exportar le gadget $1, clicca super le button \"{{int:gadgets-export-download}}\", salveguarda le file discargate,\nva a Special:Import in le wiki de destination e incarga lo. Postea adde lo sequente al pagina MediaWiki:Gadgets-definition:\n<pre>$2</pre>\nTu debe haber le permissiones appropriate in le wiki de destination (includente le derecto de modificar le messages de systema) e le importation ex files incargate debe esser activate.",
+ "gadgets-export-download": "Discargar"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/id.json b/www/wiki/extensions/Gadgets/i18n/id.json
new file mode 100644
index 00000000..3fc8d8a4
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/id.json
@@ -0,0 +1,32 @@
+{
+ "@metadata": {
+ "authors": [
+ "Bennylin",
+ "Farras",
+ "IvanLanin",
+ "Kenrick95",
+ "WongKentir",
+ "Iwan Novirion"
+ ]
+ },
+ "gadgets-desc": "Memungkinkan pengguna memilih [[Special:Gadgets|perkakas CSS dan JavaScript]] melalui [[Special:Preferences#mw-prefsection-gadgets|preferensi]] mereka",
+ "prefs-gadgets": "Perkakas",
+ "gadgets-prefstext": "Berikut adalah daftar perkakas istimewa yang dapat Anda aktifkan untuk akun Anda. Semua perkakas tersebut sebagian besar berbasis JavaScript sehingga Anda harus mengaktifkan JavaScript pada penjelajah Anda untuk dapat menjalankannya. Perhatikan bahwa berbagai perkakas tersebut tidak memiliki pengaruh terhadap halaman preferensi ini.\n\nJuga perhatikan bahwa perkakas istimewa ini bukanlah bagian dari perangkat lunak MediaWiki dan biasanya dikembangkan dan dipelihara oleh para pengguna di wiki lokal Anda. Pengurus lokal dapat menyunting perkakas yang tersedia melalui [[MediaWiki:Gadgets-definition]] dan [[Special:Gadgets]].",
+ "gadgets": "Alat (Perkakas)",
+ "gadgetusage": "Statistik penggunaan perkakas",
+ "gadgetusage-gadget": "Perkakas",
+ "gadgetusage-usercount": "Jumlah pengguna",
+ "gadgetusage-noresults": "Perkakas tidak ditemukan",
+ "gadgetusage-intro": "Tabel ini menunjukkan jumlah pengguna yang telah mengaktifkan perkakas pada wiki ini. Daftar ini tidak memasukkan data perkakas yang telah diaktifkan secara baku, dan juga mungkin termasuk perkakas yang sudah tidak ada.",
+ "gadgets-title": "Perkakas",
+ "gadgets-pagetext": "Berikut adalah daftar perkakas istimewa yang dapat diaktifkan pengguna melalui [[Special:Preferences#mw-prefsection-gadgets|halaman preferensi]] mereka sebagaimana didefinisikan oleh [[MediaWiki:Gadgets-definition]]. Tinjauan berikut memberikan kemudahan akses ke dalam halaman pesan sistem yang mendefinisikan deskripsi dan kode masing-masing perkakas.",
+ "gadgets-uses": "Penggunaan",
+ "gadgets-required-rights": "Memerlukan {{PLURAL:$2|hak|hak-hak}} berikut:\n\n$1",
+ "gadgets-required-skins": "Tersedia dalam {{PLURAL:$2|$1 kulit|kulit berikut: $1}}.",
+ "gadgets-default": "Diaktifkan untuk semua orang secara bawaan.",
+ "gadgets-export": "Ekspor",
+ "gadgets-export-title": "Ekspor perkakas",
+ "gadgets-not-found": "Perkakas \"$1\" tidak ditemukan.",
+ "gadgets-export-text": "Untuk mengekspor perkakas $1, klik tombol \"{{int:gadgets-export-download}}\", simpan berkas yang diunduh,\ntuju ke Special:Import pada wiki tujuan dan unggah berkas itu. Kemudian tambahkan berkas tersebut ke halaman MediaWiki:Gadgets-definition:\n<pre>$2</pre>\nAnda harus memeroleh izin pada wiki tujuan (termasuk hak menyunting pesan sistem) dan mengimpor dari unggahan berkas yang harus diaktifkan.",
+ "gadgets-export-download": "Unduh"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/ilo.json b/www/wiki/extensions/Gadgets/i18n/ilo.json
new file mode 100644
index 00000000..31f489b2
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/ilo.json
@@ -0,0 +1,53 @@
+{
+ "@metadata": {
+ "authors": [
+ "Lam-ang"
+ ]
+ },
+ "gadgets-desc": "Agipalubos kadagiti agar-aramat nga agpili kadagiti naiduma a [[Special:Gadgets|CSS ken JavaScript a gadget]] iti [[Special:Preferences#mw-prefsection-gadgets|kakaykayatanda]]",
+ "prefs-gadgets": "Dagiti gadget",
+ "gadgets-prefstext": "Dita baba ket listaan kadagiti naipangruna a gadget a mabalinmo a pakabaelan para iti pakabilangam.\nDagitoy a gadget ket naibatay iti JavaScript, isu a masapul a pakabaelan ti JavaScript iti \"pagbasabasam\" tapno agbalin dagitoy.\nLaglagipen a dagitoy a gadget ket awan ti pagbanaganna iti daytoy panid ti kakaykayatan.\n\nLaglagipen pay a dagitoy a naipangruna a gadget ket saan a paset ti sopwer ti MediaWiki, ken kadawyan a pinarang-ay ken tinartaripato babaen dagiti agar-aramat iti lokal a wiki.\nDagiti lokal nga administrador ket mabalinda nga urnosen dagiti [[MediaWiki:Gadgets-definition|depinision]] ken dagiti [[Special:Gadgets|deskripsion]] kadagiti magun-od a gadget. Ti bilang dagiti agar-aramat para iti tunggal maysa a gadget iti daytoy a wiki ket nailista iti [[Special:GadgetUsage|estadistika ti panagusar ti Gadget]].",
+ "gadgets": "Dagiti gadget",
+ "gadgetusage": "Estadistika ti panagusar ti gadget",
+ "gadgetusage-gadget": "Gadget",
+ "gadgetusage-usercount": "Bilang dagiti agar-aramat",
+ "gadgetusage-noresults": "Awan dagiti nabirukan a gadget",
+ "gadgetusage-intro": "Daytoy a tabla ket mangipakita ti bilang dagiti agar-aramat a nangpakabael iti tunggal maysa a gadget iti daytoy a wiki. Ti maysa nga aktibo nga agar-aramat ket maibilang a kas ti sinoman a nagaramid iti maysa nga inurnos iti naudi {{PLURAL:$1|nga aldaw|a $1 nga al-aldaw}}. Ilaksid daytoy a listaan dagiti estadistika ti gadget a napakabaelan para iti amin ken mabalin a mangiraman kadagiti gadget a saanen a mabalin a magun-od.",
+ "gadgetusage-intro-noactive": "Daytoy a tabla ket mangibaga ti bilang dagiti agar-aramat a nangpakabael iti tunggal maysa a gadget iti daytoy a wiki. Ilaksid daytoy a listaan dagiti estadistika ti gadget a napakabaelan para iti amin ken mabalin a mangiraman kadagiti gadget a saanen a mabalin a magun-od.",
+ "gadgetusage-activeusers": "Dagiti aktibo nga agar-aramat",
+ "gadgetusage-default": "Kasisigud",
+ "gadgets-title": "Dagiti gadget",
+ "gadgets-pagetext": "Dita baba ket listaan dagiti naipangruna a gadget a mabalin a pakabaelan dagiti agar-aramat iti bukodda a [[Special:Preferences#mw-prefsection-gadgets|panid ti kakaykayatan]], a kas naipalawag babaen dagiti [[MediaWiki:Gadgets-definition|depinision]].\nDaytoy a pakabuklan ket mangited iti nalaka a panagserrek kadagiti panid ti mensahe ti sistema a mangipalawag ti tungngal maysa a deskripsion ken kodigo ti gadget.",
+ "gadgets-uses": "Agus-usar ti",
+ "gadgets-required-rights": "Masapul {{PLURAL:$2|ti sumaganad a karbengan|dagiti sumaganad a karbengan}}:\n\n$1",
+ "gadgets-required-skins": "Magun-od {{PLURAL:$2|iti $1 a kudil|kadagiti sumaganad a kudil: $1}}.",
+ "gadgets-default": "Napakabaelan para iti amin babaen ti kasisigud.",
+ "gadgets-legacy": "Saan a naikarga ti gadget. Pangngaasi nga iyakar iti ResourceLoader. ([https://www.mediawiki.org/wiki/ResourceLoader/Migration_guide_(users) Agadal pay ti adu])",
+ "gadgets-export": "Eksport",
+ "gadgets-export-title": "Eksport ti gadget",
+ "gadgets-not-found": "Saan a nabirukan ti gadget ti \"$1\".",
+ "gadgets-export-text": "Ti panageksport ti gadget ti $1, pinduten ti buton ti \"{{int:gadgets-export-download}}\", idulin ti naikarga a papeles,\nmapan idiay Special:Import iti papanan a wiki ken ikarganto. Kalpasanna inayon dagiti sumaganad idiay panid ti MediaWiki:Gadgets-definition:\n<pre>$2</pre>\nNasken nga addaanka ti maitunos a pammalubos iti papanan a wiki (mairaman ti karbengan a panagurnos kadagiti mensahe ti sistema) ken nasken a napakabaelan ti panagikarga kadagiti papeles.",
+ "gadgets-export-download": "Agikarga",
+ "gadgets-validate-notset": "Saan a naisaad ti tagikua ti <code>$1</code>.",
+ "gadgets-validate-wrongtype": "Ti tagikua ti <code>$1</code> ket nasken nga iti kita ti <code>$2</code> imbes a ti <code>$3</code>.",
+ "apihelp-query+gadgetcategories-description": "Mangisubli iti listaan ti katkategoria ti gadget",
+ "apihelp-query+gadgetcategories-param-prop": "Ania ti maala a pakaammo ti kategoria ti gadget:\n;name:Internal a nagan ti kategoria.\n;title:Titulo ti kategoria.\n;members:Bilang dagiti gadget iti kategoria.",
+ "apihelp-query+gadgetcategories-param-names": "Nagnagan ti katkategoria nga alaen.",
+ "apihelp-query+gadgetcategories-example-1": "Mangala iti listaan ti adda a katkategoria ti gadget",
+ "apihelp-query+gadgetcategories-example-2": "Mangala kadagiti amin a pakaammo a maipanggep ti katkategoria a nanaganan ti \"foo\" ken \"bar\"",
+ "apihelp-query+gadgets-description": "Mangisubli ti listaan dagiti gadget a naus-usar iti daytoy a wiki.",
+ "apihelp-query+gadgets-param-prop": "Ania ti maala a pakaaamo ti gadget:\n;id:ID ti internal a gadget.\n;metadata:Ti metadata ti gadget.\n;desc:Deskripsion ti gadget a nabaliwan iti HTML (mabalin a nabuntog, usaren laeng no masapul unay).",
+ "apihelp-query+gadgets-param-categories": "Dagiti gadget a pakaalaan ti katkategoria.",
+ "apihelp-query+gadgets-param-ids": "Dagiti ID ti maala a gadget.",
+ "apihelp-query+gadgets-param-allowedonly": "Ilista laeng dagiti gadget a maipalubos iti agdama nga agar-aramat.",
+ "apihelp-query+gadgets-param-enabledonly": "Ilista laeng dagiti gadget a pinakabaelan iti agdama nga agar-aramat.",
+ "apihelp-query+gadgets-example-1": "Mangala kadagiti gadget a kakuyog dagiti deskripsion",
+ "apihelp-query+gadgets-example-2": "Mangala kadagiti gadget nga addaan kadagiti amin a mabalin a tagtagikua",
+ "apihelp-query+gadgets-example-3": "Mangala ti listaan dagiti gadget a tagikua ti kategoria \"foo\"",
+ "apihelp-query+gadgets-example-4": "Mangala kadagiti pakaammo a manipanggep kadagiti gadget ti \"foo\" ken \"bar\"",
+ "apihelp-query+gadgets-example-5": "Mangala ti listaan dagiti gadget a pinakabaelan iti agdama nga agar-aramat.",
+ "right-gadgets-edit": "Urnosen dagiti panid ti JavaScript ken CSS ti gadget",
+ "action-gadgets-edit": "urnosen daytoy a panid ti JavaScript wenno CSS ti gadget",
+ "right-gadgets-definition-edit": "Urnosen dagiti depinision ti gadget",
+ "action-gadgets-definition-edit": "urnosen daytoy a depinision ti gadget"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/io.json b/www/wiki/extensions/Gadgets/i18n/io.json
new file mode 100644
index 00000000..4004be09
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/io.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Malafaya",
+ "Joao Xavier"
+ ]
+ },
+ "prefs-gadgets": "Utensili",
+ "gadgets-prefstext": "Adinfre esas listo pri specala utensili quin vu povas permisar por vua konto.\nIca utensili kreesis precipue per 'JavaScript', do vu mustas permisar JavaScript en vua retnavigilo por uzar li.\nRegardez ke ica utensili efektigos nule en ica pagino pri preferaji.\n\nAnke regardez ke ta specala utensili NE ESAS PARTO DE LA SOFTWARO* di MediaWiki, ed ordinare kreesas e mantenesas da altra uzeri de vua lokala wiki.\nLokala administreri povas skribar [[MediaWiki:Gadgets-definition|defini]] e [[Special:Gadgets|deskripti]] pri l'existanta utensili ('gadgets'). Listo pri la quanto di uzeri por singla 'gadget' en ica wiki povas videsar en la [[Special:GadgetUsage|statistiki pri uzo di 'Gadget'-i]].",
+ "gadgets": "Aparati:",
+ "gadgetusage-activeusers": "Aktiva uzeri",
+ "gadgets-title": "Aparati",
+ "gadgets-uses": "Ol uzas"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/is.json b/www/wiki/extensions/Gadgets/i18n/is.json
new file mode 100644
index 00000000..b5d5ae19
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/is.json
@@ -0,0 +1,28 @@
+{
+ "@metadata": {
+ "authors": [
+ "Jóna Þórunn",
+ "Maxí",
+ "Snævar",
+ "Sveinn í Felli"
+ ]
+ },
+ "gadgets-desc": "Gerir notendum kleift að velja [[Special:Gadgets|CSS og JavaScript-forrit]] í [[Special:Preferences#mw-prefsection-gadgets|stillingum sínum]]",
+ "prefs-gadgets": "Smáforrit",
+ "gadgets-prefstext": "Eftirfarandi er listi yfir smáforrit sem þú getur notað á notandareikningi þínum. Þessi forrit eru að mestu byggð á JavaScript svo vafrinn þarf að styðja JavaScript til að þau virki. Athugaðu einnig að forritin hafa engin áhrif á stillingasíðunni.\n\nForritin eru ekki hluti af MediaWiki-hugbúnaðinum heldur eru skrifuð og viðhaldin af notendum á þessu wiki-verkefni. Möppudýr geta breytt forritunum á [[MediaWiki:Gadgets-definition]] og [[Special:Gadgets]]. Fjöldi notenda sem nota hvert smától fyrir sig er skráður á [[Special:GadgetUsage|Notkunarupplýsingar smátóla]].",
+ "gadgets": "Smáforrit",
+ "gadgetusage-activeusers": "Virkir notendur",
+ "gadgetusage-default": "Sjálfgefið",
+ "gadgets-title": "Smáforrit",
+ "gadgets-pagetext": "Eftirfarandi er listi yfir smáforrit sem notendur geta virkjað í [[Special:Preferences#mw-prefsection-gadgets|stillingunum sínum]] og eru tilgreind á [[MediaWiki:Gadgets-definition]].\nÞessi listi veitir auðveldan aðgang að lýsingum á smáforritunum og kóðanum þeirra.",
+ "gadgets-uses": "Notar",
+ "gadgets-required-rights": "Þarfnast eftifarandi {{PLURAL:$2|réttinda}}:\n\n$1",
+ "gadgets-required-skins": "Aðgengileg með eftirfarandi {{PLURAL:$2|þema|$2 þemum}}: $1",
+ "gadgets-default": "Virkt fyrir alla notendur.",
+ "gadgets-export": "Flytja út",
+ "gadgets-export-title": "Flytja út smától",
+ "gadgets-not-found": "Smátólið \"$1\" fannst ekki.",
+ "gadgets-export-text": "Til þess að flytja út smátólið $1, smelltu á \"{{int:gadgets-export-download}}\", vistaðu skránna,\nfarðu á þann wiki sem á að flytja smátólið á, farðu á kerfisíðuna Special:Import og hladdu því inn. Síðan bættu eftirfarandi við meldinguna MediaWiki:Gadgets-definition:\n<pre>$2</pre>\nÞú verður af hafa tilskilin réttindi á þeim wiki sem á að færa smátólið á (þar með talið réttindi til að breyta meldingum) og möguleikinn að flytja inn skrár þarf að vera virkur.",
+ "gadgets-export-download": "Hlaða niður",
+ "right-gadgets-edit": "Breyta JavaScript og CSS síðum smátóla"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/it.json b/www/wiki/extensions/Gadgets/i18n/it.json
new file mode 100644
index 00000000..2c71fe85
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/it.json
@@ -0,0 +1,54 @@
+{
+ "@metadata": {
+ "authors": [
+ "Beta16",
+ "BrokenArrow",
+ "Darth Kule",
+ "Melos",
+ "Nemo bis",
+ "Statix64",
+ "Lucas2",
+ "MattiaMen",
+ "Fringio"
+ ]
+ },
+ "gadgets-desc": "Consente agli utenti di selezionare [[Special:Gadgets|accessori CSS e JavaScript]] nelle proprie [[Special:Preferences#mw-prefsection-gadgets|preferenze]]",
+ "prefs-gadgets": "Accessori",
+ "gadgets-prefstext": "Di seguito è presente una lista di accessori speciali (''gadget'') che è possibile abilitare per la propria utenza.\nQuesti accessori sono in maggioranza basati su JavaScript, è quindi necessario abilitare JavaScript nel proprio browser affinché funzionino correttamente. Si noti che gli accessori non hanno alcun effetto in questa pagina di preferenze.\n\nInoltre, si noti che questi accessori speciali non sono compresi nel software MediaWiki e sono di solito realizzati e gestiti dagli utenti di ciascun sito wiki. Gli amministratori del sito possono modificare la lista degli accessori disponibili tramite le pagine delle [[MediaWiki:Gadgets-definition|definizioni]] e delle [[Special:Gadgets|descrizioni]]. Il numero di utenti per ogni accessorio su questo wiki è elencato nelle [[Special:GadgetUsage|statistiche di uso degli accessori]].",
+ "gadgets": "Accessori",
+ "gadgetusage": "Statistiche sull'uso degli accessori",
+ "gadgetusage-gadget": "Accessorio",
+ "gadgetusage-usercount": "Numero di utenti",
+ "gadgetusage-noresults": "Nessun accessorio trovato.",
+ "gadgetusage-intro": "Questa tabella indica il numero di utenti che hanno attivato un accessorio su questa wiki. Un utente attivo è considerato qualcuno che ha fatto una modifica {{PLURAL:$1|nell'ultimo giorno|negli ultimi $1 giorni}}. Questo elenco esclude le statistiche per i gadget abilitati per tutti per impostazione predefinita e potrebbe includere anche gadget che non sono più disponibili.",
+ "gadgetusage-intro-noactive": "Questa tabella indica il numero di utenti che hanno attivato un accessorio su questa wiki. Questo elenco esclude le statistiche per i gadget abilitati per tutti per impostazione predefinita e potrebbe includere anche gadget che non sono più disponibili.",
+ "gadgetusage-activeusers": "Utenti attivi",
+ "gadgetusage-default": "Predefinito",
+ "gadgets-title": "Accessori",
+ "gadgets-pagetext": "Di seguito sono elencati gli accessori (''gadget'') che gli utenti possono abilitare sulla propria pagina delle [[Special:Preferences#mw-prefsection-gadgets|preferenze]], seguendo le [[MediaWiki:Gadgets-definition|definizioni]]. Questa panoramica fornisce un comodo mezzo per accedere ai messaggi di sistema nei quali sono definiti la descrizione e il codice di ciascun accessorio.",
+ "gadgets-uses": "Usi",
+ "gadgets-required-rights": "Richiede {{PLURAL:$2|il seguente diritto|i seguenti diritti}}:\n\n$1",
+ "gadgets-required-skins": "Disponibile {{PLURAL:$2|per il tema $1|per i seguenti temi: $1}}.",
+ "gadgets-default": "Attivato per tutti, per impostazione predefinita.",
+ "gadgets-legacy": "Accessorio non caricato. Migra a ResourceLoader. ([https://www.mediawiki.org/wiki/ResourceLoader/Migration_guide_(users) Per saperne di più])",
+ "gadgets-export": "Esporta",
+ "gadgets-export-title": "Esporta accessorio",
+ "gadgets-not-found": "Accessorio \"$1\" non trovato.",
+ "gadgets-export-text": "Per esportare l'accessorio $1, fai clic sul pulsante \"{{int:gadgets-export-download}}\", salva il file scaricato,\nvai alla pagina Special:Import nella wiki di destinazione e carica il file. Poi aggiungi quanto segue alla pagina MediaWiki:Gadgets-definition:\n<pre>$2</pre>\nDevi disporre dei permessi appropriati nella wiki di destinazione (incluso il diritto di modificare i messaggi di sistema) e l'importazione da file deve essere abilitata.",
+ "gadgets-export-download": "Scarica",
+ "gadgets-validate-notset": "La proprietà <code>$1</code> non è impostata.",
+ "gadgets-validate-wrongtype": "La proprietà <code>$1</code> deve essere di tipo <code>$2</code> anziché <code>$3</code>.",
+ "apihelp-query+gadgetcategories-description": "Restituisce un elenco di categorie di accessori.",
+ "apihelp-query+gadgetcategories-summary": "Restituisce un elenco di categorie di accessori.",
+ "apihelp-query+gadgetcategories-param-names": "Nomi delle categorie da recuperare.",
+ "apihelp-query+gadgetcategories-example-1": "Ottieni un elenco di categorie di accessori esistenti",
+ "apihelp-query+gadgetcategories-example-2": "Ottieni tutte le informazioni sulle categorie denominate \"foo\" e \"bar\"",
+ "apihelp-query+gadgets-description": "Restituisce un elenco di accessori utilizzati in questo wiki.",
+ "apihelp-query+gadgets-param-ids": "ID degli accessori da recuperare.",
+ "apihelp-query+gadgets-param-allowedonly": "Elenca solo accessori consentiti all'utente attuale.",
+ "apihelp-query+gadgets-param-enabledonly": "Elenca solo accessori attivati dall'utente attuale.",
+ "right-gadgets-edit": "Modifica i gadget JavaScript e le pagine CSS",
+ "action-gadgets-edit": "modificare questo gadget Javascript o pagina CSS",
+ "right-gadgets-definition-edit": "Modifica le definizioni dei gadget",
+ "action-gadgets-definition-edit": "modificare la definizione di questo gadget"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/ja.json b/www/wiki/extensions/Gadgets/i18n/ja.json
new file mode 100644
index 00000000..3a6fb421
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/ja.json
@@ -0,0 +1,66 @@
+{
+ "@metadata": {
+ "authors": [
+ "Aotake",
+ "Fryed-peach",
+ "JtFuruhata",
+ "Mzm5zbC3",
+ "Shirayuki",
+ "Whym",
+ "青子守歌",
+ "SkyDaisy9",
+ "Sujiniku",
+ "Otokoume",
+ "2nd-player",
+ "Yusuke1109"
+ ]
+ },
+ "gadgets-desc": "利用者が [[Special:Gadgets|CSS や JavaScript のカスタム ガジェット]]を[[Special:Preferences#mw-prefsection-gadgets|{{int:preferences}}]]で選択できるようにする",
+ "prefs-gadgets": "ガジェット",
+ "gadgets-prefstext": "以下はあなたのアカウントで利用できるガジェットの一覧です。\nこれらのガジェットはほとんどが JavaScript ベースであるため、動作させるにはご使用中のブラウザーの JavaScript を有効にする必要があります。\n{{int:preferences}}ページではこれらのガジェットが機能しないことにご注意ください。\n\nまた、これらのガジェットは MediaWiki ソフトウェアの一部ではなく、通常はローカルウィキの利用者が開発/メンテナンスをしていることにもご注意ください。\n管理者は、利用できるガジェットについてその[[MediaWiki:Gadgets-definition|定義]]や[[Special:Gadgets|説明]]を編集できます。このウィキで各ガジェットを利用している人数は、[[Special:GadgetUsage|専用の使用状況]]の統計ページで確認できます。",
+ "gadgets": "ガジェット",
+ "gadgetusage": "ガジェットの使用状況の統計",
+ "gadgetusage-gadget": "ガジェット",
+ "gadgetusage-usercount": "利用者の数",
+ "gadgetusage-noresults": "ガジェットが一つも見つかりませんでした。",
+ "gadgetusage-intro": "この表はこのウィキでそれぞれのガジェットを有効にしている利用者の数を示しています。活動中の利用者は直近{{PLURAL:$1|$1日|$1日間}}の内に編集をした利用者を数えたものです。このリストは既定で全員に有効化されているガジェットに関する統計は含んでおらず、現在は利用不可能となっているガジェットを含んでいるかもしれません。",
+ "gadgetusage-intro-noactive": "この表はこのウィキでそれぞれのガジェットを有効にしている利用者の数を示しています。このリストは既定で全員に有効化されているガジェットに関する統計は含んでおらず、現在は利用不可能となっているガジェットを含んでいるかもしれません。",
+ "gadgetusage-activeusers": "活動中の利用者",
+ "gadgetusage-default": "既定",
+ "gadgets-title": "ガジェット",
+ "gadgets-pagetext": "以下は、利用者が[[Special:Preferences#mw-prefsection-gadgets|{{int:preferences}}]]で有効化できるガジェットの一覧です。これらは[[MediaWiki:Gadgets-definition|定義ページ]]で定義されています。\nこの概要ページでは、各ガジェットの説明やプログラム コードを定義しているシステム メッセージ ページへの簡単なアクセスを提供します。",
+ "gadgets-uses": "使用するファイル",
+ "gadgets-required-rights": "以下の{{PLURAL:$2|権限}}が必要です:\n\n$1",
+ "gadgets-required-skins": "{{PLURAL:$2|$1外装で利用できます|以下の外装で利用できます: $1}}。",
+ "gadgets-default": "既定では全員に有効です。",
+ "gadgets-legacy": "ガジェットが読み込まれていません。ResourceLoader に移行してください。([https://www.mediawiki.org/wiki/ResourceLoader/Migration_guide_(users) 詳細])",
+ "gadgets-export": "書き出し",
+ "gadgets-export-title": "ガジェットの書き出し",
+ "gadgets-not-found": "ガジェット「$1」が見つかりません。",
+ "gadgets-export-text": "$1 ガジェットを書き出すには、「{{int:gadgets-export-download}}」ボタンをクリックし、ダウンロードしたファイルを保存し、\n配布先ウィキの Special:Import に行ってアップロードしてください。そして、以下を MediaWiki:Gadgets-definition ページに追加してください:\n<pre>$2</pre>\nこの操作には、配布先のウィキで適切な権限 (システムメッセージの編集権限を含む) が必要で、さらにファイル アップロードによる取り込みが有効になっている必要があります。",
+ "gadgets-export-download": "ダウンロード",
+ "gadgets-validate-notset": "プロパティ <code>$1</code> が設定されていません。",
+ "gadgets-validate-wrongtype": "プロパティ <code>$1</code> は型 <code>$3</code> ではなく <code>$2</code> でなければなりません。",
+ "apihelp-query+gadgetcategories-description": "ガジェットのカテゴリの一覧を返します。",
+ "apihelp-query+gadgetcategories-summary": "ガジェットのカテゴリの一覧を返します。",
+ "apihelp-query+gadgetcategories-param-prop": "ガジェットのカテゴリのどの情報を取得するかです:\n;name:内部カテゴリ名です。\n;title:カテゴリ名です。\n;members:カテゴリ内のガジェット数です。",
+ "apihelp-query+gadgetcategories-param-names": "取得するカテゴリの名前です。",
+ "apihelp-query+gadgetcategories-example-1": "既存のガジェットのカテゴリの一覧を取得",
+ "apihelp-query+gadgetcategories-example-2": "「foo」および「bar」という名前のカテゴリについてすべての情報を取得",
+ "apihelp-query+gadgets-description": "このウィキで使用されているガジェットの一覧を返します。",
+ "apihelp-query+gadgets-summary": "このウィキで使用されているガジェットの一覧を返します。",
+ "apihelp-query+gadgets-param-prop": "ガジェットのどの情報を取得するかです:\n;id:内部ガジェット ID です。\n;metadata:ガジェットのメタデータです。\n;desc:ガジェットの説明を HTML 形式に変換したものです (時間がかかる場合があるため、本当に必要な場合のみ使用してください)。",
+ "apihelp-query+gadgets-param-categories": "どのカテゴリからガジェットを取得するかです。",
+ "apihelp-query+gadgets-param-ids": "取得するガジェットの ID です。",
+ "apihelp-query+gadgets-param-allowedonly": "現在の利用者が使用できるガジェットのみを列挙します。",
+ "apihelp-query+gadgets-param-enabledonly": "現在の利用者が有効にしているガジェットのみを列挙します。",
+ "apihelp-query+gadgets-example-1": "ガジェットの一覧を、各ガジェットの説明も含めて取得",
+ "apihelp-query+gadgets-example-2": "ガジェットの一覧を、すべてのプロパティを含めて取得",
+ "apihelp-query+gadgets-example-3": "カテゴリ「foo」に属するガジェットの一覧を取得",
+ "apihelp-query+gadgets-example-4": "ガジェット「foo」および「bar」についての情報を取得",
+ "apihelp-query+gadgets-example-5": "現在の利用者が有効にしているガジェットの一覧を取得",
+ "right-gadgets-edit": "ガジェットの JavaScript および CSS ページの編集",
+ "action-gadgets-edit": "このガジェットの JavaScript または CSS ページを編集",
+ "right-gadgets-definition-edit": "ガジェット定義の編集",
+ "action-gadgets-definition-edit": "このガジェット定義を編集"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/jut.json b/www/wiki/extensions/Gadgets/i18n/jut.json
new file mode 100644
index 00000000..842e5720
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/jut.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Huslåke",
+ "Jyllanj"
+ ]
+ },
+ "prefs-gadgets": "Gadgets",
+ "gadgets-prefstext": "Nedenstående er en liste over de gadgets som du kan aktivere for din brugerkonto. Da disse gadgets hovedsageligt er baseret på JavaScript skal du slå JavaScript til i din browser for at få dem til at virke. Bemærk at disse gadgets ikke vil have nogen effekt på denne side (indstillinger).\n\nBemærk også at disse specielle gadgets ikke er en del af MediaWiki-softwaren og at de typisk bliver vedligeholdt af brugere på din lokale wiki. Lokale administratorer kan redigere tilgængelige gadgets med [[MediaWiki:Gadgets-definition]] og [[Special:Gadgets]].",
+ "gadgets": "Gadgets",
+ "gadgets-title": "Gadgets",
+ "gadgets-pagetext": "Nedenstående er en liste med de specielle gadgets som brugere kan aktivere i deres indstillinger som defineret i [[MediaWiki:Gadgets-definition]]. Denne oversigtsside giver simpel adgang til de systembeskeder som definerer hver gadgets beskrivelse og kode.",
+ "gadgets-uses": "Bruge"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/jv.json b/www/wiki/extensions/Gadgets/i18n/jv.json
new file mode 100644
index 00000000..6d691a38
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/jv.json
@@ -0,0 +1,35 @@
+{
+ "@metadata": {
+ "authors": [
+ "Bennylin",
+ "Meursault2004",
+ "NoiX180",
+ "Pras"
+ ]
+ },
+ "gadgets-desc": "Marengaké para nganggo sakarepé milih [[Special:Gadgets|géjet CSS lan JavaScript]] ing [[Special:Preferences#mw-prefsection-gadgets|pilalan]].",
+ "prefs-gadgets": "Géjet",
+ "gadgets-prefstext": "Ing ngisor iki daftar gadget astaméwa sing bisa panjenangan aktifaké kanggo rékening panjenengan. Gadget-gadget iki sabagéyan gedhé adhedhasar JavaScript dadi panjenengan kudu ngaktifaké JavaScript ing panjlajah wèb panjenengan supaya bisa nglakokaké.\nMangga diwigatèkaké yèn gadget-gadget iki ora ndarbèni pangaruh marang kaca prèferènsi iki.\n\nUga mangga diwigatèkaké yèn gadget astaméwa iki dudu bagéyan saka piranti empuk MediaWiki lan biasané dikembangaké lan diopèni déning panganggo-panganggo ing wiki lokal panjenengan. Pangurus lokal bisa nyunting gadget sing kasedyakaké nganggo [[MediaWiki:Gadgets-definition|dhéfinisi]] lan [[Special:Gadgets|uraian]].",
+ "gadgets": "Géjet",
+ "gadgetusage": "Statistik panganggoné géjet",
+ "gadgetusage-gadget": "Géjet",
+ "gadgetusage-usercount": "Cacah sing nganggo",
+ "gadgetusage-noresults": "Ora ana géjeté.",
+ "gadgetusage-activeusers": "Para nganggo sing giyat",
+ "gadgetusage-default": "Baku",
+ "gadgets-title": "Géjet",
+ "gadgets-pagetext": "Ing ngisor iki kapacak pratélaning géjet mirunggan sing bisa diurubaké déning saben panganggo saka [[Special:Preferences#mw-prefsection-gadgets|kaca pilalané]], kaya sing diandharaké ing [[MediaWiki:Gadgets-definition|kaca dhéfinisiné]].\nKaterangan iki migunani murih gampangé panjenengan mangerti kaca layang sistem sing ngandharaké dhèskripsi lan kodhe géjet.",
+ "gadgets-uses": "Guna",
+ "gadgets-required-rights": "Mbutuhaké {{PLURAL:$2|hak}} ing ngisor iki:\n\n$1",
+ "gadgets-required-skins": "Ana ing {{PLURAL:$2|ules $1|ules iki: $1}}.",
+ "gadgets-default": "Diurubaké kanggo kabèh wong kanthi baku.",
+ "gadgets-export": "Èkspor",
+ "gadgets-export-title": "Èkspor perkakas",
+ "gadgets-not-found": "Gèjet \"$1\" ora ana.",
+ "gadgets-export-text": "Untuk mengekspor perkakas $1, klik tombol \"{{int:gadgets-export-download}}\", simpan berkas yang diunduh,\ntuju ke Special:Import pada wiki tujuan dan unggah berkas itu. Kemudian tambahkan berkas tersebut ke halaman MediaWiki:Gadgets-definition:\n<pre>$2</pre>\nAnda harus memeroleh izin pada wiki tujuan (termasuk hak menyunting pesan sistem) dan mengimpor dari unggahan berkas yang harus diaktifkan.",
+ "gadgets-export-download": "Undhuh",
+ "right-gadgets-edit": "Besut kaca JavaScript lan CSS géjet",
+ "action-gadgets-edit": "besut kaca JavaScript utawa CSS géjet iki",
+ "right-gadgets-definition-edit": "Besut paricédaning géjet",
+ "action-gadgets-definition-edit": "besut paricédaning géjet iki"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/ka.json b/www/wiki/extensions/Gadgets/i18n/ka.json
new file mode 100644
index 00000000..6686d6b2
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/ka.json
@@ -0,0 +1,32 @@
+{
+ "@metadata": {
+ "authors": [
+ "BRUTE",
+ "David1010",
+ "Dawid Deutschland",
+ "Otogi"
+ ]
+ },
+ "gadgets-desc": "მოხმარებლებს საშუალებას აძლევთ [[Special:Preferences#mw-prefsection-gadgets|კონფიგურაციაში]] აირჩიონ [[Special:Gadgets|CSS და JavaScript გაჯეტები]], რომელთა ჩართვაც სურთ",
+ "prefs-gadgets": "გაჯეტები",
+ "gadgets-prefstext": "ქვემოთ მოცემულია სპეციალური გაჯეტების სია, რომელთა ჩართვაც თქვენ შეგიძლიათ თქვენი ანგარიშისათვის.\nეს გაჯეტები უპირატესად დაფუძნებულია JavaScript-ზე, ამიტომ თქვენ უნდა ჩართოთ JavaScript თქვენ ბრაუზერში, რათა მათ იმუშაონ.\nგაითვალისწინეთ, რომ ეს გაჯეტები არ მუშაობენ კონფიგურაციის გვერდზე.\n\nაგრეთვე გაითვალისწინეთ, რომ ეს გაჯეტები არ წარმოადგენს MediaWiki-ს ნაწილს და ჩვეულებრივ მუშავდება და ნარჩუნდება თქვენი ლოკალური ვიკის მომხმარებლების მიერ.\nადმინისტრატორებს შეუძლიათ შეცვალონ გაჯეტების სია [[MediaWiki:Gadgets-definition|განმარტებებისა]] და [[Special:Gadgets|აღწერების]] გვერდების დახმარებით.",
+ "gadgets": "გაჯეტები",
+ "gadgetusage": "გაჯეტების სტატისტიკის გამოყენება",
+ "gadgetusage-gadget": "გაჯეტი",
+ "gadgetusage-usercount": "მომხმარებელთა რაოდენობა",
+ "gadgetusage-noresults": "გაჯეტი ვერ მოიძებნა.",
+ "gadgetusage-activeusers": "აქტიური მომხმარებლები",
+ "gadgetusage-default": "სტანდარტული",
+ "gadgets-title": "გაჯეტები",
+ "gadgets-pagetext": "ქვემოთ მოცემულია სპეციალური გაჯეტების სია, რომლების ჩართვაც შეუძლიათ მომხმარებლებს თავიანთი [[Special:Preferences#mw-prefsection-gadgets|კონფიგურაციის გვერდზე]], სიის შესაბამისად [[MediaWiki:Gadgets-definition|განმარტებების]] გვერდზე.\nეს სია საშუალებას იძლევა მარტივად მივიღოთ სისტემური შეტყობინებების გვერდებთან წვდომა, რომლებიც განსაზღვრავენ გაჯეტების აღწერასა და გამავალ კოდებს.",
+ "gadgets-uses": "გამოიყენება",
+ "gadgets-required-rights": "{{PLURAL:$2|საჭიროა უფლება|საჭიროა უფლება}}:\n\n$1",
+ "gadgets-required-skins": "ხელმისაწვდომია {{PLURAL:$2|გაფორმების თემისათვის $1|შემდეგი გაფორმების თემებისათვის: $1}}.",
+ "gadgets-default": "ჩართულია ყველასათვის ნაგულისხმევად.",
+ "gadgets-legacy": "გაჯეტი არ არის ჩატვირთული. გთხოვთ, გაასწორეთ ამ გაჯეტის კოდი, რათა იგი იყოს გამოძახებული ResourceLoader-ის დახმარებით\n([https://www.mediawiki.org/wiki/ResourceLoader/Migration_guide_(users) მეტის გაგება])",
+ "gadgets-export": "ექსპორტი",
+ "gadgets-export-title": "გაჯეტის ექსპორტი",
+ "gadgets-not-found": "გაჯეტი \"$1\" ვერ მოიძებნა.",
+ "gadgets-export-text": "გაჯეტი $1 ექსპორტისათვის, დააჭირეთ ღილაკს „{{int:gadgets-export-download}}“, შეინახეთ ჩამოტვირთული ფაილი,\nგადადით გვერდზე Special:Import სამიზნო ვიკიში და ატვირთეთ ფაილი. შემდეგ დაამატეთ შემდეგი ხაზები MediaWiki:Gadgets-definition-ის გვერდზე:\n<pre>$2</pre>\nთქვენ უნდა გქონდეთ შესაბამისი უფლება სამიზნო ვიკიში (მათ შორის სისტემური შეტყობინებების თარგმნის უფლება), აგრეთვე სერვერზე ჩართული უნდა იყოს ფაილების იმპორტის პარამეტრები.",
+ "gadgets-export-download": "ჩამოტვირთვა"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/kk-arab.json b/www/wiki/extensions/Gadgets/i18n/kk-arab.json
new file mode 100644
index 00000000..3fa15bab
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/kk-arab.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": [],
+ "prefs-gadgets": "قاجەت قۇرالدار",
+ "gadgets-prefstext": "تومەندە ٴوز تىركەلگىڭىزدە قوسا الاتىن ارناۋلى قاجەت قۇرالدار ٴتىزىمى بەرىلەدى.\nوسى قاجەت قۇرالدار كوبىنەسە JavaScript امىرلەرىنە نەگىزدەلىنەدى, سوندىقتان بۇلار جۇمىس ىستەۋى ٴۇشىن شولعىشىڭىزدا JavaScript قوسىلعان بولۋى كەرەك.\nبۇل باپتاۋ بەتىنە وسى قاجەت قۇرالدار اسەر ەتپەيتىنىڭ ەسكەرىڭىز.\n\nتاعى دا ەسكەرىڭىز: وسى قاجەت قۇرالدار MediaWiki باعدارلاماسىنىڭ بولىگى ەمەس, جانە دە بۇلاردى جايشىلىقتا جەرگىلىكتى ۋىيكىيدىڭ قاتىسۋشىلارى دامىتادى جانە قوشتايدى.\nجەرگىلىكتى اكىمشىلەر جەتىمدى قاجەت نارسە ٴتىزىمىن [[{{ns:mediawiki}}:Gadgets-definition]] جانە [[{{ns:special}}:Gadgets]] بەتتەرى ارقىلى\nوڭدەي الادى.",
+ "gadgets": "قاجەت قۇرالدار",
+ "gadgets-title": "قاجەت قۇرالدار",
+ "gadgets-pagetext": "تومەندە ارناۋلى قاجەت قۇرالدار ٴتىزىمى بەرىلەدى. [[{{ns:mediawiki}}:Gadgets-definition]] بەتىندە انىقتالعان قاجەت قۇرالداردى قاتىسۋشىلار ٴوزىنىڭ باپتاۋىندا قوسا الادى.\nبۇل شولۋ بەتى ارقىلى ٴاربىر قاجەت قۇرالدىڭ سىيپاتتاماسى مەن ٴامىرىن انىقتايتىن جۇيە حابار بەتتەرىنە جەڭىل قاتىناي الاسىز.",
+ "gadgets-uses": "قولدانۋداعىلار"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/kk-cyrl.json b/www/wiki/extensions/Gadgets/i18n/kk-cyrl.json
new file mode 100644
index 00000000..4862a164
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/kk-cyrl.json
@@ -0,0 +1,25 @@
+{
+ "@metadata": {
+ "authors": [
+ "Arystanbek"
+ ]
+ },
+ "prefs-gadgets": "Гаджеттер",
+ "gadgets-prefstext": "Төменде өз тіркелгіңізде қоса алатын арнаулы гаджеттер тізімі берілген.\nОсы гаджеттер көбінесе JavaScript әмірлеріне негізделеді, сондықтан бұлар жұмыс істеуі үшін шолғышыңызда JavaScript қосылған болуы керек.\nБұл баптау бетіне осы гаджеттер әсер етпейтінін ескеріңіз.\n\nТағы да ескеріңіз: осы гаджеттер MediaWiki бағдарламасының бөлігі емес және бұларды әдетте сіздің жергілікті уикиіңіздің қатысушылары дамытады және қоштайды.\nЖергілікті әкімшілер жетімді гаджеттерді [[MediaWiki:Gadgets-definition]] және [[Special:Gadgets]] беттері арқылы\nөңдей алады. Бұл уикидегі әрбір гаджетті қолданушылар саны [[Special:GadgetUsage|гаджет қолдану статистикасы]] бетінде тізімделген.",
+ "gadgets": "Гаджеттер",
+ "gadgetusage": "Гаджет қолдану статистикасы",
+ "gadgetusage-gadget": "Гаджет",
+ "gadgetusage-usercount": "Пайдаланушылар саны",
+ "gadgetusage-noresults": "Ешқандай гаджет табылмады.",
+ "gadgetusage-activeusers": "Белсенді пайдаланушылар",
+ "gadgetusage-default": "Әдепкі",
+ "gadgets-title": "Гаджеттер",
+ "gadgets-pagetext": "Төменде қатысушылар өзінің [[Special:Preferences#mw-prefsection-gadgets|баптауларынан]] қоса алатын арнаулы гаджеттер тізімі берілген. [[MediaWiki:Gadgets-definition]] шолу беті арқылы әрбір гаджеттердің сипаттамасы мен әмірін анықтайтын жүйе хабар беттеріне жеңіл қатынай аласыз.",
+ "gadgets-uses": "Қолданыстағылар",
+ "gadgets-required-rights": "Келесі {{PLURAL:$2|құқықты|құқықтарды}} қажет етеді: \n\n$1",
+ "gadgets-default": "Әркімге автоматты түрде қосылады.",
+ "gadgets-export": "Экспорттау",
+ "gadgets-export-title": "Гаджетті экспорттау",
+ "gadgets-not-found": "«$1» гаджеті табылмады.",
+ "gadgets-export-download": "Түсіру"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/kk-latn.json b/www/wiki/extensions/Gadgets/i18n/kk-latn.json
new file mode 100644
index 00000000..986d5faa
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/kk-latn.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": [],
+ "prefs-gadgets": "Qajet quraldar",
+ "gadgets-prefstext": "Tömende öz tirkelgiñizde qosa alatın arnawlı qajet quraldar tizimi beriledi.\nOsı qajet quraldar köbinese JavaScript ämirlerine negizdelinedi, sondıqtan bular jumıs istewi üşin şolğışıñızda JavaScript qosılğan bolwı kerek.\nBul baptaw betine osı qajet quraldar äser etpeýtiniñ eskeriñiz.\n\nTağı da eskeriñiz: osı qajet quraldar MediaWiki bağdarlamasınıñ böligi emes, jäne de bulardı jaýşılıqta jergilikti wïkïdiñ qatıswşıları damıtadı jäne qoştaýdı.\nJergilikti äkimşiler jetimdi qajet närse tizimin [[{{ns:mediawiki}}:Gadgets-definition]] jäne [[{{ns:special}}:Gadgets]] betteri arqılı\nöñdeý aladı.",
+ "gadgets": "Qajet quraldar",
+ "gadgets-title": "Qajet quraldar",
+ "gadgets-pagetext": "Tömende arnawlı qajet quraldar tizimi beriledi. [[{{ns:mediawiki}}:Gadgets-definition]] betinde anıqtalğan qajet quraldardı qatıswşılar öziniñ baptawında qosa aladı.\nBul şolw beti arqılı ärbir qajet quraldıñ sïpattaması men ämirin anıqtaýtın jüýe xabar betterine jeñil qatınaý alasız.",
+ "gadgets-uses": "Qoldanwdağılar"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/km.json b/www/wiki/extensions/Gadgets/i18n/km.json
new file mode 100644
index 00000000..46bfc100
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/km.json
@@ -0,0 +1,17 @@
+{
+ "@metadata": {
+ "authors": [
+ "Chhorran",
+ "Lovekhmer",
+ "Thearith",
+ "គីមស៊្រុន",
+ "វ័ណថារិទ្ធ"
+ ]
+ },
+ "prefs-gadgets": "គ្រឿងបន្ទាប់បន្សំ",
+ "gadgets": "គ្រឿងបន្ទាប់បន្សំ",
+ "gadgets-title": "គ្រឿងបន្ទាប់បន្សំ",
+ "gadgets-uses": "ប្រើ",
+ "gadgets-export": "នាំចេញ​",
+ "gadgets-export-download": "ទាញយក"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/kn.json b/www/wiki/extensions/Gadgets/i18n/kn.json
new file mode 100644
index 00000000..252ced55
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/kn.json
@@ -0,0 +1,10 @@
+{
+ "@metadata": {
+ "authors": [
+ "VASANTH S.N."
+ ]
+ },
+ "gadgets-uses": "ಉಪಯೋಗಗಳು",
+ "gadgets-export": "ರಫ್ತು ಮಾಡು",
+ "gadgets-export-download": "ನಕಲಿಳಿಸಿ"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/ko.json b/www/wiki/extensions/Gadgets/i18n/ko.json
new file mode 100644
index 00000000..3e08e1c9
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/ko.json
@@ -0,0 +1,51 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ficell",
+ "IRTC1015",
+ "Klutzy",
+ "Kwj2772",
+ "아라",
+ "SeoJeongHo",
+ "Kurousagi",
+ "Yearning",
+ "Priviet",
+ "Ykhwong"
+ ]
+ },
+ "gadgets-desc": "각 사용자가 [[Special:Gadgets|CSS와 자바스크립트 소도구]]를 [[Special:Preferences#mw-prefsection-gadgets|사용자 환경 설정]]을 통해 사용할 수 있습니다",
+ "prefs-gadgets": "소도구",
+ "gadgets-prefstext": "아래 목록은 현재 사용 가능한 소도구의 목록입니다.\n대부분의 소도구는 자바스크립트로 동작하며, 웹 브라우저에서 자바스크립트를 사용할 수 있어야 동작합니다.\n소도구는 이 환경 설정 페이지에는 영향을 주지 않습니다.\n\n이 소도구는 미디어위키의 기능이 아니며, 일반적으로 각 위키의 사용자가 개발 및 관리하고 있습니다.\n각 위키의 관리자는 [[MediaWiki:Gadgets-definition|소도구 정의 문서]]와 [[Special:Gadgets|소도구 설명 문서]]를 통해 소도구를 관리할 수 있습니다. 이 위키에서 각각의 소도구 사용자의 수가 [[Special:GadgetUsage|소도구 사용 통계]]에 나열되어 있습니다.",
+ "gadgets": "소도구 목록",
+ "gadgetusage": "소도구 사용현황 통계",
+ "gadgetusage-gadget": "소도구",
+ "gadgetusage-usercount": "사용자 수",
+ "gadgetusage-noresults": "소도구를 찾지 못했습니다.",
+ "gadgetusage-intro": "이 표는 이 위키에서 각각의 소도구를 활성화한 사용자의 수를 나타냅니다. 활동하는 사용자는 최근 {{PLURAL:$1|$1일}}간 편집을 한 사용자로 산출합니다. 이 목록은 모든 사용자에게 기본적으로 활성화되는 소도구는 제외되며, 더 이상 작동하지 않는 소도구가 포함되어 있을 수 있습니다.",
+ "gadgetusage-intro-noactive": "이 표는 이 위키에서 각각의 소도구를 활성화한 사용자의 수를 나타냅니다. 이 목록은 모든 사용자에게 기본적으로 활성화되는 소도구는 제외되며, 더 이상 작동하지 않는 소도구가 포함되어 있을 수 있습니다.",
+ "gadgetusage-activeusers": "활동하는 사용자",
+ "gadgetusage-default": "기본값",
+ "gadgets-title": "소도구",
+ "gadgets-pagetext": "[[Special:Preferences#mw-prefsection-gadgets|사용자 환경 설정]]에서 설정할 수 있는 소도구 목록입니다. 해당 목록은 [[MediaWiki:Gadgets-definition|소도구 정의]]에서 편집할 수 있습니다.\n이 문서에서는 각 소도구의 각 설명 문서와 코드의 시스템 메시지 링크를 제공합니다.",
+ "gadgets-uses": "다음 코드를 사용",
+ "gadgets-required-rights": "다음 {{PLURAL:$2|권한}}이 필요합니다: \n\n$1",
+ "gadgets-required-skins": "{{PLURAL:$2|$1 스킨에서 사용 가능합니다.|다음 스킨에서 사용 가능합니다: $1}}",
+ "gadgets-default": "기본적으로 모든 사람에게 활성화되어 있습니다.",
+ "gadgets-export": "내보내기",
+ "gadgets-export-title": "소도구 내보내기",
+ "gadgets-not-found": "\"$1\" 소도구를 찾을 수 없습니다.",
+ "gadgets-export-text": "$1 소도구를 내보내려면 \"{{int:gadgets-export-download}}\" 버튼을 클릭하여 다운로드된 파일을 저장한 후,\n내보내려는 위키에서 Special:Import로 가서 올리십시오. 그 다음 MediaWiki:Gadgets-definition 문서에 다음을 추가하세요:\n<pre>$2</pre>\n해당 위키에서 시스템 메시지 편집 등 특정 권한을 갖고 있어야 합니다. 또한 파일 올리기를 통한 가져오기 기능이 활성화되어 있어야 합니다.",
+ "gadgets-export-download": "다운로드",
+ "apihelp-query+gadgetcategories-description": "소도구 분류의 목록을 반환합니다.",
+ "apihelp-query+gadgetcategories-summary": "소도구 분류의 목록을 반환합니다.",
+ "apihelp-query+gadgetcategories-example-1": "기존의 소도구 분류 목록을 가져옵니다",
+ "apihelp-query+gadgetcategories-example-2": "\"foo\"와 \"bar\"라는 이름의 분류에 관한 모든 정보를 가져옵니다",
+ "apihelp-query+gadgets-description": "이 위키에 사용되는 소도구의 목록을 반환합니다.",
+ "apihelp-query+gadgets-summary": "이 위키에 사용되는 소도구의 목록을 반환합니다.",
+ "apihelp-query+gadgets-param-allowedonly": "현재 사용자에 허용된 소도구만 나열합니다.",
+ "apihelp-query+gadgets-param-enabledonly": "현재 사용자가 활성화한 소도구만 나열합니다.",
+ "right-gadgets-edit": "자바 스크립트와 CSS 페이지 가젯 편집",
+ "action-gadgets-edit": "이 자바 스크립트나 CSS 페이지 편집",
+ "right-gadgets-definition-edit": "소도구 정의 편집",
+ "action-gadgets-definition-edit": "이 가젯의 정의 편집"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/krc.json b/www/wiki/extensions/Gadgets/i18n/krc.json
new file mode 100644
index 00000000..8d573b1d
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/krc.json
@@ -0,0 +1,10 @@
+{
+ "@metadata": {
+ "authors": [
+ "Iltever",
+ "Ernác"
+ ]
+ },
+ "gadgets": "Гаджетле",
+ "gadgets-export-download": "Эндир"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/ksh.json b/www/wiki/extensions/Gadgets/i18n/ksh.json
new file mode 100644
index 00000000..7db8506a
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/ksh.json
@@ -0,0 +1,31 @@
+{
+ "@metadata": {
+ "authors": [
+ "Hoo",
+ "Purodha"
+ ]
+ },
+ "gadgets-desc": "En iere [[Special:Preferences#mw-prefsection-gadgets|Enschtällong]] künne Metmaacher [[Special:Gadgets|CSS- un JavaScrip-Gadgets]] en- un ußschallde.",
+ "prefs-gadgets": "Gadgets",
+ "gadgets-prefstext": "Heh is en Leß met beschtemmpte <i xml:lang=\"en\" lang=\"en\">Gadgets</i>,\ndi för jehde Metmaacher enjeschalldt wähde könne.\nDi boue miehts op JavaSkrepte op, drom moß mer dat em Brauser\nenschallde, domet dat klapp.\n\n<i xml:lang=\"en\" lang=\"en\">Gadgets</i> werke nimmohls op dä Sigg\nmet de päsöhnlesche Enschtällonge.\n\nOpjepaß! <i xml:lang=\"en\" lang=\"en\">Gadgets</i>, sin kei Schtök vum MedijaWikki,\nsöndern sin extra em Wikki enschtalleht, un sin vun de Wikki-Bedrihver\nudder de Metmaacher ußjedaach un enjeerescht.\nWä et Rääsch doför hät, kann se övver de Sigge\n[[MediaWiki:Gadgets-definition|<i xml:lang=\"en\" lang=\"en\">Gadgets</i> fäßlääje]]\nun [[Special:Gadgets|<i xml:lang=\"en\" lang=\"en\">Gadgets</i> beschriewe]]\nenreeschte, un verändere.",
+ "gadgets": "<i lang=\"en\">Gadgets</i>",
+ "gadgetusage": "Schtestekeüvver er Ennsaz vun Zohbehür",
+ "gadgetusage-gadget": "Zohbehür",
+ "gadgetusage-usercount": "Aanzahl Metmaacher",
+ "gadgetusage-noresults": "Keine Zohbehür jefonge.",
+ "gadgetusage-intro": "En dä Tabäll heh es opjeföhrt, wi vill Metmaacher ene beschtemmpte Zohbehür ennjeschalldt han un aam bruche sin. Do es och Zohbehür bei, dä jäz nit mih ze hann es.",
+ "gadgets-title": "<i lang=\"en\">Gadgets</i>",
+ "gadgets-pagetext": "He kütt en Liss met spezielle <i lang=\"en\">Gadgets</i>,\ndi jede Metmaacher övver sing\n[[Special:Preferences#mw-prefsection-gadgets|päsönlije Enstellunge]] enschallte kann.\nSe wääde övver [[MediaWiki:Gadgets-definition]] enjerecht.\nDi Övverseesch hee jit enne direkte Zohjang op di Täxte em Wikki,\nwo de Projramme, un de Erklierunge för de <i lang=\"en\">Gadgets</i> dren enthallde\nsin.",
+ "gadgets-uses": "Bruch",
+ "gadgets-required-rights": "Bruch {{PLURAL:$2|dat Rääsch:|de Rääschde:|kein besönder Rääschde.}}\n\n$1",
+ "gadgets-required-skins": "Kann jebruch wääde met {{PLURAL:$2|dä Bedeenbovverfläsch:|dä Bedeenbovverfläsche:|keine vun dä Bedeenbovverfläsche.}} $1",
+ "gadgets-default": "Shtandattmääßesh för jeeder_ein ennjeschalldt.",
+ "gadgets-export": "Äxpottehre",
+ "gadgets-export-title": "<i lang=\"en\">Gadgets</i> expotteere",
+ "gadgets-not-found": "<i lang=\"en\">Gadget</i> „$1“ nit jefonge.",
+ "gadgets-export-text": "Öm dat <i lang=\"en\">Gadget</i> „$1“ ze expotteere, donn op dä Knopp „{{int:gadgets-export-download}}“ klecke, un donn dann de eronger jelaade Dattei faßhallde. Dann jangk en dat Wiki, woh De dat empotteere wells, un doh op di {{int:specialpage}} <code lang=\"en\">Spezial:Import</code>, un donn se huh laade. Dann deihs De en däm Wiki op dä Sigg <code lang=\"en\">MediaWiki:Gadgets-definition</code> dat heh dobei:\n<pre>$2</pre>\nDo moß en däm Wiki de nüüdijje Rääschde han, och dat Rääsch, aan Täxte un Nohreeschte vum Systeem ze ändere, un et Empoteere vun huhjelaade Dateije moß zohjelohße sin.",
+ "gadgets-export-download": "Eronger lahde",
+ "apihelp-query+gadgetcategories-param-names": "Nahme vun dä Saachjroppe zom Holle.",
+ "apihelp-query+gadgetcategories-example-2": "Holl alle Aanjahbe övver de Saachjroppe met dä Nahme „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">foo</code>“ un „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">bar</code>“.",
+ "apihelp-query+gadgets-param-prop": "What gadget information ze holle:\n;id:Internal gadget Kännong.\n;metadata:De gadget Mettadahte.\n;desc:Gadget description ömjewandelld en <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"HyperText Markup Language\">HTML</i>. Weil et lahm es un lang bruch, donn dat blohß, wann nühdesch.\n<!-- \nhttps://translatewiki.net/wiki/Thread:Support/About_MediaWiki:Apihelp-query%2Bgadgets-param-prop/en\n-->"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/ku-latn.json b/www/wiki/extensions/Gadgets/i18n/ku-latn.json
new file mode 100644
index 00000000..ef8a5cf0
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/ku-latn.json
@@ -0,0 +1,17 @@
+{
+ "@metadata": {
+ "authors": [
+ "George Animal",
+ "Ghybu",
+ "Gomada"
+ ]
+ },
+ "prefs-gadgets": "Amûr",
+ "gadgets": "Amûr",
+ "gadgets-title": "Amûr",
+ "gadgets-uses": "Bikaranîn",
+ "gadgets-required-rights": "{{PLURAL:$2|Mafa|Mafên}} di dorê de pêwîst in:\n\n$1",
+ "gadgets-export": "Derxe",
+ "gadgets-not-found": " Gadget \"$1\" nehate dîtin.",
+ "gadgets-export-download": "Daxe"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/ky.json b/www/wiki/extensions/Gadgets/i18n/ky.json
new file mode 100644
index 00000000..b67cbb7e
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/ky.json
@@ -0,0 +1,10 @@
+{
+ "@metadata": {
+ "authors": [
+ "Growingup"
+ ]
+ },
+ "gadgets-export": "Экспорттоо",
+ "gadgets-not-found": "«$1» гаджети табылган жок.",
+ "gadgets-export-download": "Жүктөп алуу"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/lb.json b/www/wiki/extensions/Gadgets/i18n/lb.json
new file mode 100644
index 00000000..0f4fc1b4
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/lb.json
@@ -0,0 +1,36 @@
+{
+ "@metadata": {
+ "authors": [
+ "Les Meloures",
+ "Robby",
+ "Soued031"
+ ]
+ },
+ "gadgets-desc": "Erméiglecht de Benotzer et perséinlech [[Special:Gadgets|CSS a JavaScript Gadgeten]] an hiren [[Special:Preferences#mw-prefsection-gadgets|Astellunge]] festzeleeën.",
+ "prefs-gadgets": "Gadgeten",
+ "gadgets-prefstext": "Lëscht vu spezielle Gadgeten déi fir Äre Benotzerkont aktivéiert kënne ginn.\nD'Gadgete baséiere meeschtens op engem JavaScript, dofir muss JavaScript an Ärem Browser aktivéiert sinn, fir datt se funktionéieren.\nD'Gadgete funktionéieren awer net op dëser Säit mat de perséinlechen Astellungen.\n\nAusserdeem sollt Dir wëssen, datt dës Gadgete generell net Deel vu MediaWiki sinn, a meeschtens vu Benotzer vu lokale Wikien entwéckelt an ënnerhale ginn.\nLokal Wiki-Administrateure kënnen d'Lëscht vun den disponibele Gadgeten op de Säiten [[MediaWiki:Gadgets-definition|Definitioune vun Gadgeten]] a [[Special:Gadgets|Beschreiwunge vu Gadgeten]] änneren. D'Zuel vun de Benotzer vun all Gadget op dëser Wiki stinn op [[Special:GadgetUsage|Statistike vum Gebrauch vu Gadgeten]].",
+ "gadgets": "Gadgeten",
+ "gadgetusage": "Statistike vum Benotze vum Gadget",
+ "gadgetusage-gadget": "Gadget",
+ "gadgetusage-usercount": "Zuel vun de Benotzer",
+ "gadgetusage-noresults": "Keng Gadgete fonnt.",
+ "gadgetusage-activeusers": "Aktiv Benotzer",
+ "gadgetusage-default": "Standard",
+ "gadgets-title": "Gadgeten",
+ "gadgets-pagetext": "Ënnendrënner ass eng Lëscht vun de spezielle Gadgeten déi d'Benotzer op hire [[Special:Preferences#mw-prefsection-gadgets|Benotzer-Astellungen]] aschalte kënnen, sou wéi dat op [[MediaWiki:Gadgets-definition|definéiert]] ass.\nDës Iwwersiicht gëtt einfachen Zougang zu de Systemmessage-Säiten, déi all Gadget beschreiwen an zum Programméiercode vun dem Gadget.",
+ "gadgets-uses": "Benotzt",
+ "gadgets-required-rights": "Erfuerdert {{PLURAL:$2|d'Recht|dës Rechter}}: $1.",
+ "gadgets-required-skins": "Disponibel fir {{PLURAL:$2|d'Ausgesinn $1|dës $2 Ausgesinn: $1}}.",
+ "gadgets-default": "Fir jiddwereen als Standard ageschalt.",
+ "gadgets-export": "Export",
+ "gadgets-export-title": "Export vu Gadgeten",
+ "gadgets-not-found": "Gadget \"$1\" net fonnt.",
+ "gadgets-export-text": "Fir de Gadget $1 z'exportéieren klickt w.e.g. op de(n) \"{{int:gadgets-export-download}}\"-Knäppchen, späichert den erofgelueden Fichier, gitt op Spezial:Import op der Zil-Wiki a luet en do erop. Duerno setzt der op d'MediaWiki:Gadgets-Definitiouns Säit dëst dobäi:<pre>$2</pre>\nDir musst déi erfuerdert Rechter(inklusiv d'Recht fir Systemmessagen z'änneren) op der Zil-Wiki hunn an den Import vun eropgelueden Fichiere muss ageschalt sinn.",
+ "gadgets-export-download": "Eroflueden",
+ "apihelp-query+gadgets-param-allowedonly": "Nëmme Gadgeten opzielen déi fir den aktuelle Benotzer erlaabt sinn.",
+ "apihelp-query+gadgets-example-5": "D'Lëscht vun de Gadgete kréien déi den aktuelle Benotzer aktivéiert huet",
+ "right-gadgets-edit": "JavaScript- an CSS-Säite vu Gadgeten änneren",
+ "action-gadgets-edit": "dëse JavaScript oder dës CSS-Säit vum Gadget änneren",
+ "right-gadgets-definition-edit": "Definitioune vu Gadgeten änneren",
+ "action-gadgets-definition-edit": "dës Definitioun vum Gadget änneren"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/lez.json b/www/wiki/extensions/Gadgets/i18n/lez.json
new file mode 100644
index 00000000..98802fac
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/lez.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "Namik",
+ "Soul Train"
+ ]
+ },
+ "prefs-gadgets": "Гажетар",
+ "gadgets": "Гаджетар",
+ "gadgets-title": "Гажетар"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/li.json b/www/wiki/extensions/Gadgets/i18n/li.json
new file mode 100644
index 00000000..3d210b01
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/li.json
@@ -0,0 +1,24 @@
+{
+ "@metadata": {
+ "authors": [
+ "Matthias",
+ "Ooswesthoesbes",
+ "Tibor"
+ ]
+ },
+ "gadgets-desc": "Laot gebroekers [[Special:Gadgets|CSS en JavaScripts]] activere in häör [[Special:Preferences#mw-prefsection-gadgets|veurkeure]]",
+ "prefs-gadgets": "Biedènger",
+ "gadgets-prefstext": "Hiejónger sjtaon de sjpeciaal oetbreijinge dies te veur dien gebroekersaccount kèns insjakele.\nDe oetbreijinge zeen veurnamelik gebaseerd op JavaScript, dus JavaScript mót veur diene browser ingesjakeld zeen óm die te laote wirke.\nDe oetbreijinge höbbe geine invlood op dees pazjena mit veurkäöre.\n\nDees sjpeciaal oetbreijinge zeen ouch gein óngerdeil van de MediaWiki-software en die mótte meistal óntwikkeld en óngerhauwe waere door gebroekers van diene wiki.\nLokaal beheerders kónne de besjikbaar oetbreijinge aangaeve in [[MediaWiki:Gadgets-definition]] en [[Special:Gadgets]].",
+ "gadgets": "Oetbreijinger",
+ "gadgets-title": "Oetbreijinger",
+ "gadgets-pagetext": "Hiej ónger staon de speciaal oetbreijinger die gebroekers kinne insjakele via häöre [[Special:Preferences#mw-prefsection-gadgets|veurkeure]] wie ingesteldj is in [[MediaWiki:Gadgets-definition]].\nDit euverzich bi-jtj uch einvoudige toegank toet de systeemtekspazjena wo de besjrieving en de programmacode van edere oetbreijing steit.",
+ "gadgets-uses": "Gebroek",
+ "gadgets-required-rights": "{{PLURAL:$2|'t Volgend rech is|De volgende rechte zeen}} vereis: $1.",
+ "gadgets-required-skins": "Besjikbaar op de {{PLURAL:$2|vormgaeving $1|volgende vormgaevinge: $1}}.",
+ "gadgets-default": "Standerd aan veur edert.",
+ "gadgets-export": "Veur oet",
+ "gadgets-export-title": "Exporteer oetbreijing",
+ "gadgets-not-found": "Oetbreiding \"$1\" neet gevonje.",
+ "gadgets-export-text": "Klik óppe knoep \"{{int:gadgets-export-download}}\" óm de oetbreiding \"$1\" oet te veure.\nSlaon daonao 't gedownloadj bestandj óp.\nGank nao \"Special:Import\" inne doelwiki en laaj 't oetgeveurdj bestandj óp.\nVeug daonao 't vólgendje toe ane pagina \"MediaWiki:Gadgets-definition\":\n<pre>$2</pre>\nDoe mós de juuste rèchte höbben óppe doelwie, ouch óm bewirkinge aan systeemberichte te make en in te veure oet bestenj.",
+ "gadgets-export-download": "Haol óp"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/lij.json b/www/wiki/extensions/Gadgets/i18n/lij.json
new file mode 100644
index 00000000..564694fe
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/lij.json
@@ -0,0 +1,12 @@
+{
+ "@metadata": {
+ "authors": [
+ "Giromin Cangiaxo"
+ ]
+ },
+ "gadgets": "Gadget",
+ "gadgetusage": "Statisteghe insce l'uso di gadget",
+ "gadgetusage-noresults": "Nisciun gadget trovou.",
+ "gadgetusage-intro-noactive": "Questa tabella a l'indica o nummero di utenti ch'han attivou un gadget insce sta wiki. St'elenco o l'escludde e statisteghe pe-i gadget abilitæ pe tutti pe impostaçion predefinia e o poriæ includde di gadget che no son ciù disponibbili.",
+ "gadgets-pagetext": "Chì aprœuvo gh'è 'na lista di gadget (\"accessoi\") che i utenti pœuan abilitâ inta so paggina de [[Special:Preferences#mw-prefsection-gadgets|preferençe]], segondo e [[MediaWiki:Gadgets-definition|definiçioin]]. Questa panoramica a fornisce un commodo mezo pe accede a-i messaggi de scistema inti quæ l'è definio a descriçion e o coddiçe de ciascun gadget."
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/lki.json b/www/wiki/extensions/Gadgets/i18n/lki.json
new file mode 100644
index 00000000..ec82a9af
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/lki.json
@@ -0,0 +1,25 @@
+{
+ "@metadata": {
+ "authors": [
+ "Lakzon",
+ "Hosseinblue"
+ ]
+ },
+ "gadgets-desc": "به کاربرها امکان انتخاب [[Special:Gadgets|ابزارهای شخصی سی‌اس‌اس و جاوااسکریپت]] را از طریق صفحهٔ [[Special:Preferences#mw-prefsection-gadgets|ترجیحات]] می‌دهد",
+ "prefs-gadgets": "ابزارةل",
+ "gadgets-prefstext": "در زیر فهرستی از ابزارهای ویژه‌ای که می‌توانید برای حساب کاربری‌تان فعال کنید را می‌بینید.\nاین ابزارها در بیشتر موارد مبتنی بر جاوااسکریپت هستند، پس برای استفاده از آن‌ها باید جاوااسکرپیت را در مرورگر خودتان فعال کنید.\nتوجه کنید که این ابزارها نمی‌توانند صفحهٔ ترجیحات را تغییر دهند.\n\nدقت داشته باشد که این ابزارها جزئی از نرم‌افزار مدیاویکی نیستند، و معمولاً توسط کاربران هر ویکی ساخته و نگهداری می‌شوند.\nمدیران هر ویکی می‌توانند با استفاده از صفحه‌های [[MediaWiki:Gadgets-definition|تعاریف]] و [[Special:Gadgets|توضیحات]] به ویرایش ابزارها بپردازند.",
+ "gadgets": "ابزارةل",
+ "gadgetusage-activeusers": "کاربرةل فعال",
+ "gadgets-title": "ابزارةل",
+ "gadgets-pagetext": "در زیر فهرستی از ابزارهای ویژه‌ای که کاربران می‌توانند از طریق [[Special:Preferences#mw-prefsection-gadgets|صفحهٔ ترجیحاتشان]] فعال کنند می‌بینید، که مطابق آن چه است که در صفحهٔ [[MediaWiki:Gadgets-definition|تعاریف]] تعریف شده‌است.\nاین خلاصه کمک می‌کند که به صفحه‌های پیغام سامانه‌ای که توضیحات و کد هر ابزار را شامل می‌شوند به راحتی دست پیدا کنید.",
+ "gadgets-uses": "برنامه",
+ "gadgets-required-rights": "به {{PLURAL:$2|دسترسی|دسترسی‌های}} روبرو نیاز است:\n\n$1",
+ "gadgets-required-skins": "قابل دسترس در {{PLURAL:$2|پوستهٔ $1|پوسته‌های $1}}.",
+ "gadgets-default": "به‌طور پیش‌فرض برای همه فعال است.",
+ "gadgets-legacy": "ابزار بارگیری نشده است. لطفاً به ResourceLoader مهاجرت کنید. ([https://www.mediawiki.org/wiki/ResourceLoader/Migration_guide_(users) اطلاعات بیشتر])",
+ "gadgets-export": "در بِردن",
+ "gadgets-export-title": "برون‌بری ابزار",
+ "gadgets-not-found": "ابزار «$1» یافت نشد.",
+ "gadgets-export-text": "برای برون‌بری ابزار $1، بر دکمهٔ «{{int:gadgets-export-download}}» کلیک کنید، پروندهٔ بارگیری‌شده را ذخیره کنید، به ویژه:درون‌ریزی در ویکی مقصد بروید و بارگذاری‌اش کنید. سپس این را به صفحهٔ مدیاویکی:Gadgets-definition بیفزایید:\n<pre>$2</pre>\nلازم است تا در ویکی مقصد دسترسی‌های مناسب (شامل حق ویرایش پیغام‌های سامانه) را داشته باشید و درون‌ریزی از بارگذاری‌های پرونده باید فعال شده باشد.",
+ "gadgets-export-download": "گرتن-دانڵوود"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/lrc.json b/www/wiki/extensions/Gadgets/i18n/lrc.json
new file mode 100644
index 00000000..8e9214c5
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/lrc.json
@@ -0,0 +1,19 @@
+{
+ "@metadata": {
+ "authors": [
+ "Bonevarluri",
+ "Mogoeilor"
+ ]
+ },
+ "prefs-gadgets": "چيا هنی",
+ "gadgets": "گجت یا",
+ "gadgets-title": "گجت یا",
+ "gadgets-uses": "کاروردیا",
+ "gadgets-export": "وه صحرا ديئن",
+ "gadgets-export-title": "وه در دئن گجت",
+ "gadgets-not-found": "گجت \"$1\" پیدا نبی.",
+ "gadgets-export-download": "گرتن",
+ "apihelp-query+gadgetcategories-example-2": "گرتن همه دونسمنیا دباره دسه یایی که نومشو فو و باره",
+ "apihelp-query+gadgets-param-enabledonly": "فقط نومگه گجتیایی که سی کاریاری ایسنی کنشتگر بینه.",
+ "apihelp-query+gadgets-example-5": "نومگه گجتیایی که سی ای کاریار کنشتگر بینه بئیریت."
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/lt.json b/www/wiki/extensions/Gadgets/i18n/lt.json
new file mode 100644
index 00000000..0dfac7fe
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/lt.json
@@ -0,0 +1,57 @@
+{
+ "@metadata": {
+ "authors": [
+ "Eitvys200",
+ "Homo",
+ "Vpovilaitis",
+ "Albertas",
+ "Zygimantus"
+ ]
+ },
+ "gadgets-desc": "Leidžia naudotojams pasirinkti savo [[Special:Gadgets|CSS ir JavaScript priemones]] jų [[Special:Preferences#mw-prefsection-gadgets|nustatymuose]]",
+ "prefs-gadgets": "Priemonės",
+ "gadgets-prefstext": "Žemiau yra sąrašas specialių priemonių, kurias jūs galite įjungti naudojimui.\nŠios priemonės daugiausiai yra sukurtos naudojant JavaScript, todėl, kad jos veiktų, jūsų naršyklėje turi būti įjungtas JavaScript palaikymas.\nAtsiminkite, kad šios priemonės neturi įtakos jūsų nustatymų puslapiui.\n\nTaip pat žinokite, kad šios specialios priemonės nėra MediaWiki programinės įrangos dalis ir yra sukurtos bei palaikomos vietinio vikiprojekto naudotojų. Vietiniai administratoriai gali redaguoti suteikiamų specialių priemonių sąrašą, naudodami puslapius [[MediaWiki:Gadgets-definition|priemonių aprašymas]] ir [[Special:Gadgets|priemonės]].",
+ "gadgets": "Priemonės",
+ "gadgetusage": "Priemonių naudojimo statistika",
+ "gadgetusage-gadget": "Priemonė",
+ "gadgetusage-usercount": "Vartotojų skaičius",
+ "gadgetusage-noresults": "Priemonių nerasta.",
+ "gadgetusage-intro": "Ši lentelė indikuoja skaičių naudotojų, kurie įgalino kiekvieną priemonę šiame vikyje. Šiame sąraše nėra priemonių įgalintų visiems pagal numatytuosius nustatymus ir gali būti įtrauktos ir priemonės, kurios nebėra prieinamos.",
+ "gadgetusage-intro-noactive": "Ši lentelė nurodo skaičių naudotojų, kurie įgalino priemones šiame vikyje. Šiame sąraše nėra statistikos priemonių, įgalintų visiems numatytuoju būdu ir gali būti įtrauktos priemonės, kurios jau nebeprieinamos.",
+ "gadgetusage-activeusers": "Aktyvūs naudotojai",
+ "gadgetusage-default": "Numatytasis",
+ "gadgets-title": "Priemonės",
+ "gadgets-pagetext": "Žemiau yra sąrašas specialių priemonių, kurias naudotojai gali įjungti savo [[Special:Preferences#mw-prefsection-gadgets|nustatymų puslapyje]]. Jos apibūdintos [[MediaWiki:Gadgets-definition|priemonių aprašyme]]. Ši apžvalga suteikia lengvą priėjimą prie sisteminių pranešimų puslapių, kuriuose pateiktas kiekvienos priemonės trumpas aprašas ir kodas.",
+ "gadgets-uses": "Panaudojimai",
+ "gadgets-required-rights": "{{PLURAL:$2|Reikalinga ši teisė|Reikalingos šios teisės}}:\n\n$1",
+ "gadgets-required-skins": "Prieinama {{PLURAL:$2|$1 stiliuje|šiuose stiliuose: $1}}.",
+ "gadgets-default": "Įgalinti visiems pagal nutylėjimą.",
+ "gadgets-legacy": "Priemonės nėra įkeltos. Prašome migruoti prie ResourceLoader. ([https://www.mediawiki.org/wiki/ResourceLoader/Migration_guide_(users) Sužinoti daugiau])",
+ "gadgets-export": "Eksportas",
+ "gadgets-export-title": "Priemonių eksportas",
+ "gadgets-not-found": "Įtaisas \" $1 \" nerastas.",
+ "gadgets-export-text": "Norėdami eksportuoti $1 įrankį, paspauskite \"{{int:gadgets-export-download}}\" mygtuką, išsisaugokite atisiųstą failą,\nnueikite į Special:Import tikslo vikyje ir įkelkite jį. Tada pridėkite MediaWiki:Gadgets-definition puslapį:\n<pre>$2</pre>\nTurite turėti atitinkamas teises tikslo vikyje (įskaitant teisę redaguoti sistemines žinutes) ir importavimas iš įkeltų failų turi būti aktyvuotas.",
+ "gadgets-export-download": "Parsisiųsti",
+ "gadgets-validate-notset": "Savybė <code>$1</code> yra nenustatyta.",
+ "gadgets-validate-wrongtype": "Savybė <code>$1</code> turi būti tipo <code>$2</code> vietoje <code>$3</code>.",
+ "apihelp-query+gadgetcategories-description": "Grąžina įrankių kategorijų sąrašą.",
+ "apihelp-query+gadgetcategories-param-prop": "Kurių įrankių kategorijų informaciją gauti:\n;name:Vidinis kategorijos vardas.\n;title:Kategorijos pavadinimas.\n;members:Įrankių skaičius kategorijoje.",
+ "apihelp-query+gadgetcategories-param-names": "Vardai kategorijų, kurias gauti.",
+ "apihelp-query+gadgetcategories-example-1": "Gauti sąrašą egzistuojančių įrankių kategorijų",
+ "apihelp-query+gadgetcategories-example-2": "Gauti visą informaciją apie kategorijas pavadintas \"foo\" ir \"bar\"",
+ "apihelp-query+gadgets-description": "Grąžina sąrašą įrankių, naudojamų šiame vikyje.",
+ "apihelp-query+gadgets-param-prop": "Kurią įrankių informaciją gauti:\n;id:Vidinis įrankio ID.\n;metadata:Įrankio metaduomenys.\n;desc:Įrankio aprašymas transformuotas į HTML (gali veikti lėtai, naudoti tik jeigu iš tiesų reikia).",
+ "apihelp-query+gadgets-param-categories": "Iš kurių kategorijų gauti įrankius.",
+ "apihelp-query+gadgets-param-ids": "ID įrankių, kuriuos gauti.",
+ "apihelp-query+gadgets-param-allowedonly": "Sąrašas įrankių, kuriuos leisti dabartiniam naudotojui.",
+ "apihelp-query+gadgets-param-enabledonly": "Rodyti tik įrankius aktyvuotus dabartinio naudotojo.",
+ "apihelp-query+gadgets-example-1": "Gauti įrankių su jų aprašymais sąrašą",
+ "apihelp-query+gadgets-example-2": "Gauti įrankių su visomis galimomis parinktimis sąrašą",
+ "apihelp-query+gadgets-example-3": "Gauti įrankių, priklausančių kategorijai \"foo\", sąrašą",
+ "apihelp-query+gadgets-example-4": "Gauti informaciją apie įrankius \"foo\" ir \"bar\"",
+ "apihelp-query+gadgets-example-5": "Gauti įrankių, aktyvuotų dabartinio naudotojo, sąrašą",
+ "right-gadgets-edit": "Redaguoti įrankio JavaScript ir CSS puslapius",
+ "action-gadgets-edit": "redaguoti šio įrankio JavaScript arba CSS puslapį",
+ "right-gadgets-definition-edit": "Redaguoti įrankių apibrėžimus",
+ "action-gadgets-definition-edit": "redaguoti šio įrankio apibrėžimą"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/lus.json b/www/wiki/extensions/Gadgets/i18n/lus.json
new file mode 100644
index 00000000..745b69bd
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/lus.json
@@ -0,0 +1,20 @@
+{
+ "@metadata": {
+ "authors": [
+ "RMizo"
+ ]
+ },
+ "gadgets-desc": "Hmangtute [[Special:Gadgets|CSS leh JavaScript hmanrelhte]] an [[Special:Preferences#mw-prefsection-gadgets|duhthlanna phêk]]a duhthlantir theihna.",
+ "prefs-gadgets": "Hmanrelhte",
+ "gadgets-prefstext": "A hnuaiah hian i siangchana hmanrelh i tihnun theihho kan rawn chhawp chhuak a.\nHêng hmanrelhte hi JavaScript-a innghat a ni deuh ber a, chuvang tak chuan hengte hman theihna tùrin i rangpuifannaah JavaScript i tihnun a ngai a ni.\nHë duhthlanna phêkah erawh hi chuan hêng hmanrelhte hian nghawng a nei lo vang tih hria ang che.\n\nHëng hmanrelh bîkte hi MediaWiki khawlthluak zinga mi a ni lo va, a tlangpuiin i khawsakna hmun wiki-a hmangtute duan leh enkawl a ni hlawm.\nChü wiki-a roreltute chuan hmanrelh hman theiha awmte [[MediaWiki:Gadgets-definition|hrilhfiahna]] leh [[Special:Gadgets|sawifiahna]] an siamṭha thei a ni.",
+ "gadgets": "Hmanrelhte",
+ "gadgets-title": "Hmanrelhte",
+ "gadgets-uses": "Hmante",
+ "gadgets-required-rights": "A hnuaia {{PLURAL:$2|dikna-chanvo|dikna-chanvote}} hi neih a ngái:\n\n$1",
+ "gadgets-required-skins": "A hnuaia {{PLURAL:$2|vunah hian a hman theih: $1 |vunahte hian a hman theih: $1}}.",
+ "gadgets-default": "Mi zawng zawng tana tihnun sa vek a ni.",
+ "gadgets-export": "Thawnchhuahna",
+ "gadgets-export-title": "Hmanrelh thawnchhuah",
+ "gadgets-not-found": "Hmanrelh \"$1\" hmuh a ni lo.",
+ "gadgets-export-download": "Hnuhthlâkna"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/lv.json b/www/wiki/extensions/Gadgets/i18n/lv.json
new file mode 100644
index 00000000..006facfc
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/lv.json
@@ -0,0 +1,12 @@
+{
+ "@metadata": {
+ "authors": [
+ "Marozols",
+ "Papuass"
+ ]
+ },
+ "prefs-gadgets": "Rīki",
+ "gadgets": "Rīki",
+ "gadgets-title": "Rīki",
+ "gadgets-export-download": "Lejupielādēt"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/lzh.json b/www/wiki/extensions/Gadgets/i18n/lzh.json
new file mode 100644
index 00000000..94907415
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/lzh.json
@@ -0,0 +1,12 @@
+{
+ "@metadata": {
+ "authors": [
+ "逆襲的天邪鬼"
+ ]
+ },
+ "prefs-gadgets": "器具",
+ "gadgets-prefstext": "以下乃諸器也,皆可行於維基。器具多以 JavaScript 語製之,故持器者必先啟瀏覽器之 JavaScript。另注,出簿註後方可用器。\n\n器具雖異,皆非共筆臺所設,多由維基編者建之。有秩可改其[[MediaWiki:Gadgets-definition|義]]與其[[Special:Gadgets|述]]。用量計於[[Special:GadgetUsage|統計]]也。",
+ "gadgets": "器具",
+ "gadgetusage-gadget": "器具",
+ "gadgets-title": "器具"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/mai.json b/www/wiki/extensions/Gadgets/i18n/mai.json
new file mode 100644
index 00000000..3b4269f9
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/mai.json
@@ -0,0 +1,22 @@
+{
+ "@metadata": {
+ "authors": [
+ "बिप्लब आनन्द"
+ ]
+ },
+ "prefs-gadgets": "उपकरण (ग्याजेट)",
+ "gadgets-prefstext": "नीचा विशेष उपकरण सभ कऽ सूची दएल गेल अछि, जें अहाँ अपन खाताके लेल सक्षम कऽ सकएत छी।\nऐ उपकरण अधिकांशतः जावास्क्रिप्ट पर आधारित अछि, ऐ लेल एकरा कार्यशील होवएक लेल अपन ब्राउजर में जावास्क्रिप्ट सक्षम होवाक चाही।\nध्यान देब कि इ उपकरण सभ सँ अहाँके वरीयता पृष्ठमें कोनो असर नै पाडत।\n\nएहो ध्यान देब कि ऐ विशेष उपकरण मिडियाविकी सफ्टवेयरके भाग नै छी, आर प्रायः प्रयोक्ता सभ द्वारा हुनकर स्थानीय विकि पर विकसित एवं अनुरक्षित कएल जाएत अछि।\nस्थानीय प्रबंधक उपकरण सभकऽ [[MediaWiki:Gadgets-definition|परिभाषा सभ]] एवं [[Special:Gadgets|विवरण]] सम्पादित कऽ सकएत अछि।",
+ "gadgets": "उपकरण",
+ "gadgets-title": "उपकरण",
+ "gadgets-pagetext": "नीचा सभ [[MediaWiki:Gadgets-definition|परिभाषित]] विशेष उपकरण सभकऽ सूची दएल गएल अछि, जें कियो प्रयोक्ता [[Special:Preferences#mw-prefsection-gadgets|अपन वरीयता\n]] सँ सक्षम कऽ सकएत अछि।\nई समीक्षा सभ उपकरण सभके विवरण आर कोड भेल अंतरफल पत्र पृष्ठ सभकऽ जडी प्रदान करएत अछि।",
+ "gadgets-uses": "उपयोग",
+ "gadgets-required-rights": "निम्नलिखित {{PLURAL:$2|अधिकार|अधिकार सभ}} कऽ आवश्यकता अछि:\n\n$1",
+ "gadgets-required-skins": "उपलब्ध अछि {{PLURAL:$2|$1 स्किन|निम्नलिखित स्किन: $1}}.",
+ "gadgets-default": "डिफल्ट रूप सँ सभ के लेल सक्षम अछि।",
+ "gadgets-export": "निर्यात",
+ "gadgets-export-title": "उपकरण (ग्याजेट) निर्यात",
+ "gadgets-not-found": "ग्याजेट \"$1\" नै भेटल।",
+ "gadgets-export-text": "$1 उपकरण निर्यात करए के लेल \"{{int:gadgets-export-download}}\" बटन पर क्लिक करु, अवारोपन (डाउनलोड) कएल गेल फाइल रक्षण करु, लक्ष्य विकि पर Special:Import पर जाउ आर फाइल अपलोड करु। तत्पश्चात MediaWiki:Gadgets-definition में निम्न पाठ जोडू:\n<pre>$2</pre>\nमुदा अहाँ लग लक्ष्य विकि पर उपयुक्त अधिकार होवाक चाही(जए में अंतरफल पत्रके सम्पादित करएक अधिकार सामेल अछि)आर विकिमे फाइल द्वारा आयात सक्षम होवाक चाही।",
+ "gadgets-export-download": "अवारोपन",
+ "apihelp-query+gadgetcategories-description": "उपकरण श्रेणी सूची परिणाम स्वरूप लाबति अछि"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/mg.json b/www/wiki/extensions/Gadgets/i18n/mg.json
new file mode 100644
index 00000000..d7331e65
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/mg.json
@@ -0,0 +1,24 @@
+{
+ "@metadata": {
+ "authors": [
+ "Jagwar",
+ "V.narsikar"
+ ]
+ },
+ "prefs-gadgets": "उपकरणे (गॅजेट्स)",
+ "gadgets": "उपकरणे (गॅजेट्स)",
+ "gadgetusage": "उपकरणाच्या वापराची सांख्यिकी",
+ "gadgetusage-gadget": "उपकरण (गॅजेट)",
+ "gadgetusage-usercount": "वापरणाऱ्यांची संख्या",
+ "gadgetusage-noresults": "उपकरणे सापडली नाहीत.",
+ "gadgetusage-activeusers": "सक्रिय सदस्य",
+ "gadgetusage-default": "अविचल",
+ "gadgets-title": "Gadget",
+ "gadgets-uses": "Mampiasa",
+ "gadgets-export": "Hamoaka",
+ "gadgets-export-title": "Famoahana gadget",
+ "gadgets-not-found": "Tsy hita ny gadget « $1 ».",
+ "gadgets-export-download": "Hampidina",
+ "right-gadgets-definition-edit": "उपकरणाच्या व्याख्या संपादा",
+ "action-gadgets-definition-edit": "ही उपकरण व्याख्या संपादा"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/min.json b/www/wiki/extensions/Gadgets/i18n/min.json
new file mode 100644
index 00000000..07286aa5
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/min.json
@@ -0,0 +1,24 @@
+{
+ "@metadata": {
+ "authors": [
+ "Iwan Novirion"
+ ]
+ },
+ "gadgets-desc": "Mamungkinkan pangguno mamiliah [[Special:Gadgets|pakakeh CSS jo JavaScript]] malalui [[Special:Preferences#mw-prefsection-gadgets|pangaturan]]-nyo",
+ "prefs-gadgets": "Pakakeh",
+ "gadgets-prefstext": "Di bawah ko daftar pakakeh istimewa nan dapek Sanak aktipan untuak akun Sanak. Kasado pakakeh ko sabagian babasis JavaScript dek itu Sanak musti mangaktipan JavaScript pado paramban Sanak untuak dapek manjalankannyo. Paratikan kalau babagai pakakek ko indak ado pangaruahnyo pado laman pangaturan ko.\n\nSalain tu paratikan juo kalau pakakeh ko bukanlah bagian dari parangkaik lunak MediaWiki dan biasonyo dikambangkan dan dijago dek pangguno di Wikipedia. Panguruih lokal dapek manyuntiang pakakeh nan ado malalui [[MediaWiki:Gadgets-definition|laman definisinyo]] ataupun pado [[Special:Gadgets|laman katarangannyo]].",
+ "gadgets": "Pakakeh",
+ "gadgetusage": "Statistik panggunoan pakakeh",
+ "gadgetusage-intro": "Tabel iko manunjuakkan jumlah pangguno nan alah mangaktipkan pakakeh pado wiki ko. Iko mungkin tamasuak jou pakakeh nan alah indak ado.",
+ "gadgets-title": "Pakakeh",
+ "gadgets-pagetext": "Di bawah ko daftar pakakeh istimewa nan dapek diaktipan pangguno malalui [[Special:Preferences#mw-prefsection-gadgets|laman pangaturan]] saroman nan didefinisikan dek [[MediaWiki:Gadgets-definition|laman definisinyo]]. Tinjauan nan ko mangagiah akses ka laman pasan sistem nan mandefinisikan deskripsi jo kode masiang-masiang pakakeh.",
+ "gadgets-uses": "Panggunoan",
+ "gadgets-required-rights": "Mambutuahkan {{PLURAL:$2|hak-hak}} barikuik:\n\n$1",
+ "gadgets-required-skins": "Tasadio pado {{PLURAL:$2|kulik barikuik: $1}}.",
+ "gadgets-default": "Diaktifkan untuak kasado urang sacaro bawaan.",
+ "gadgets-export": "Ekspor",
+ "gadgets-export-title": "Ekspor pakakeh",
+ "gadgets-not-found": "Pakakeh \"$1\" indak basobok.",
+ "gadgets-export-text": "Untuak mangekspor pakakeh $1, klik tombol \"{{int:gadgets-export-download}}\", simpan berkas nan didownload tu,\npai ka Special:Import pado wiki nan di tuju dan muek berkas tu. Sudah tu tambahkan berkas tasabuik ka laman MediaWiki:Gadgets-definition:\n<pre>$2</pre>\nSanak musti punyo izin pado wiki nan di tuju (tamasuak hak manyuntiang pasan sistem) dan impor berkas haruslah aktif.",
+ "gadgets-export-download": "Unduah"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/mk.json b/www/wiki/extensions/Gadgets/i18n/mk.json
new file mode 100644
index 00000000..9d578b5e
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/mk.json
@@ -0,0 +1,56 @@
+{
+ "@metadata": {
+ "authors": [
+ "Bjankuloski06",
+ "Brest"
+ ]
+ },
+ "gadgets-desc": "Им овозможува на корисниците во нивните [[Special:Preferences#mw-prefsection-gadgets|нагодувања]] да одберат свои сопствени [[Special:Gadgets|CSS- и JavaScript-алатки]]",
+ "prefs-gadgets": "Алатки",
+ "gadgets-prefstext": "Ова е список на псоебни алатки кои можете да ги активирате за вашата корисничка сметка.\nАлатките се основани претежно на JavaScript, па затоа морате да имате овозможено JavaScript на вашиот прелистувач за да можат да работат.\nИмајте предвид дека алатките нема да имаат никаков ефект врз оваа страница за нагодување.\n\nИсто така имајте на ум дека овие псоебни алатки не се дел од програмската опрема на МедијаВики и истите се создаваат и одржуваат од корисници на вашето месно вики.\nМесните администратори можат да ги уредуваат и прилагодуваат алатките користејќи се со [[MediaWiki:Gadgets-definition|определби]] и [[Special:Gadgets|описи]]. Бројот на корисници на секоја алатка е наведен на [[Special:GadgetUsage|Статистика за употреба на алатките]].",
+ "gadgets": "Алатки",
+ "gadgetusage": "Статистика за употреба на алатките",
+ "gadgetusage-gadget": "Алатка",
+ "gadgetusage-usercount": "Број на корисници",
+ "gadgetusage-noresults": "Не пронајдов ниедна алатка.",
+ "gadgetusage-intro": "Табелава прикажува колку корисници ги имаат вклучено алатките на ова вики. За актиен се смета секој корисник кој има направено уредување во {{PLURAL:$1|изминатиот ден|последниве $1 дена}}. Тука не се вбројани статистиките за алатките што стандардно им се вклучени на сите, а може да се водат и алатки кои повеќе не се достапни.",
+ "gadgetusage-intro-noactive": "Табелава прикажува колку корисници ја имаат вклучено секоја од алатките на ова вики. Тука не се вбројани алатките што стандардно им се вклучени на сите, а може да се водат и алатки кои повеќе не се достапни.",
+ "gadgetusage-activeusers": "Активни корисници",
+ "gadgetusage-default": "Стандардна",
+ "gadgets-title": "Алатки",
+ "gadgets-pagetext": "Ова е список на псоебни алатки кои корисниците можат да ги активираат на нивната [[Special:Preferences#mw-prefsection-gadgets|страница за нагодување]], наведени во [[MediaWiki:Gadgets-definition|определувањата]].\nОвој преглед дава лесен пристап до системските пораки кои го определуваат описот и кодот на секоја алатка.",
+ "gadgets-uses": "Користи",
+ "gadgets-required-rights": "{{PLURAL:$2|Го бара следново право|Ги бара следниве права}}:\n\n$1",
+ "gadgets-required-skins": "Достапно во {{PLURAL:$2|рувото $1|следниве рува: $1}}.",
+ "gadgets-default": "Достапно за сите по основно",
+ "gadgets-legacy": "Алатката не е вчитана. Преселете се на „Вчитувач на ресурси“ (ResourceLoader). ([https://www.mediawiki.org/wiki/ResourceLoader/Migration_guide_(users) Дознајте повеќе])",
+ "gadgets-export": "Извези",
+ "gadgets-export-title": "Извоз на алатка",
+ "gadgets-not-found": "Алатката „$1“ не е пронајдена.",
+ "gadgets-export-text": "За да ја извезете алатката $1, стиснете на копчето „{{int:gadgets-export-download}}“, зачувајте ја преземената податотека,\nодете на Special:Import на целното вики и подигнете ја. Потоа на страницата MediaWiki:Gadgets-definition внесете го следново:\n<pre>$2</pre>\nМора да имате соодветни дозволи на целното вики (вклучувајќи го правото за уредување на системски пораки), и мора да биде овозможен увозот од подигања.",
+ "gadgets-export-download": "Преземи",
+ "gadgets-validate-notset": "Својството <code>$1</code> не е зададено.",
+ "gadgets-validate-wrongtype": "Својството <code>$1</code> мора да биде од типот <code>$2</code> наместо <code>$3</code>.",
+ "apihelp-query+gadgetcategories-description": "Дава список на категории за алатки.",
+ "apihelp-query+gadgetcategories-summary": "Дава список на категории за алатки.",
+ "apihelp-query+gadgetcategories-param-prop": "Кои информации за категориите за алатки да се дадат:\n;name: Внатрешен назив на категоријата.\n;title: Наслов на категоријата.\n;members: Број на алатки во категоријата.",
+ "apihelp-query+gadgetcategories-param-names": "Називи на категориите што треба да се дадат.",
+ "apihelp-query+gadgetcategories-example-1": "Дај список на постоечки категории за алатки",
+ "apihelp-query+gadgetcategories-example-2": "Дај ги сите информации за категориите наречени „foo“ и „bar“",
+ "apihelp-query+gadgets-description": "Дава список на алатки што се користат на ова вики.",
+ "apihelp-query+gadgets-summary": "Дава список на алатки што се користат на ова вики.",
+ "apihelp-query+gadgets-param-prop": "Кои информации за алатките да се дадат:\n;id: Внатрешна назнака на алатката.\n;metadata: Метаподатоци за алатката.\n;desc: Описот на алатката преобразен во HTML (може да биде бавно, па користете го само ако навистина ви е потребно).",
+ "apihelp-query+gadgets-param-categories": "За кои категории да се дадат алатките.",
+ "apihelp-query+gadgets-param-ids": "Назнаки на алатките што треба да се дадат.",
+ "apihelp-query+gadgets-param-allowedonly": "Испиши ги само алатките што му се дозволени на тековниот корисник.",
+ "apihelp-query+gadgets-param-enabledonly": "Испиши ги само алатките што ги има вклучено тековниот корисник.",
+ "apihelp-query+gadgets-example-1": "Дај список на алатки заедно со нивните описи",
+ "apihelp-query+gadgets-example-2": "Дај список на алатки со сите можни својства",
+ "apihelp-query+gadgets-example-3": "Дај список на алатки што è припаѓаат на категоријата „foo“",
+ "apihelp-query+gadgets-example-4": "Дај информации за алатките „foo“ и „bar“",
+ "apihelp-query+gadgets-example-5": "Дај список на алатки што ги има вклучено тековниот корисник.",
+ "right-gadgets-edit": "Менување на JavaScript- и CSS-страниците на алатка",
+ "action-gadgets-edit": "менување на JavaScript- и CSS-страниците на алатка",
+ "right-gadgets-definition-edit": "Менување на определбите на алатка",
+ "action-gadgets-definition-edit": "менување на определбата на оваа алатка"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/ml.json b/www/wiki/extensions/Gadgets/i18n/ml.json
new file mode 100644
index 00000000..3f49c8f6
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/ml.json
@@ -0,0 +1,32 @@
+{
+ "@metadata": {
+ "authors": [
+ "Praveenp",
+ "Shijualex"
+ ]
+ },
+ "gadgets-desc": "ഉപയോക്താക്കൾ [[Special:Preferences#mw-prefsection-gadgets|ക്രമീകരണങ്ങളിൽ നിന്നു]] അവർക്കിഷ്ടമുള്ള [[Special:Gadgets|സി.എസ്.എസ്., ജാവാസ്ക്രിപ്റ്റ് ഗാഡ്ജറ്റുകൾ]] തിരഞ്ഞെടുക്കാൻ അനുവദിക്കൽ.",
+ "prefs-gadgets": "ഗാഡ്ജറ്റ്",
+ "gadgets-prefstext": "താങ്കളുടെ അംഗത്വത്തിനു ഉപയോഗിക്കാവുന്ന പ്രത്യേക ഗാഡ്ജറ്റുകളുടെ പട്ടികയാണ് താഴെയുള്ളത്.\nഈ ഗാഡ്‌‌ജറ്റുകൾ പ്രധാനമായും ജാവാസ്ക്രിപ്റ്റിൽ അധിഷ്ഠിതമായതിനാൽ ഇവ പ്രവർത്തിക്കുവാൻ താങ്കളുടെ ബ്രൗസറിൽ ജാവാസ്ക്രിപ്റ്റ് സജ്ജമാക്കി നൽകിയിരിക്കണം.\nഈ ക്രമീകരണങ്ങൾ താളിൽ ഈ ഗാഡ്ജറ്റുകൾക്ക് യാതൊരു സ്വാധീനവുമില്ലന്നറിയുക.\n\nഈ പ്രത്യേക ഗാഡ്‌‌ജറ്റുകൾ മീഡിയവിക്കി സോഫ്റ്റ്‌‌വേറിന്റെ ഭാഗമേയല്ല എന്നും മനസ്സിലാക്കുക, അവ വികസിപ്പിക്കുന്നതും പരിപാലിക്കുന്നതും താങ്കളുടെ പ്രാദേശിക വിക്കിയിലെ ഉപയോക്താക്കളായിരിക്കും.\nപ്രാദേശിക കാര്യനിർവാഹകർക്ക് ലഭ്യമായ ഗാഡ്‌‌ജറ്റുകളെ [[MediaWiki:Gadgets-definition|നിർവചനങ്ങളും]] [[Special:Gadgets|വിവരണങ്ങളും]] ഉപയോഗിച്ച് തിരുത്താൻ കഴിയുന്നതാണ്.",
+ "gadgets": "ഗാഡ്ജറ്റ്",
+ "gadgetusage": "ഗാഡ്ജറ്റ് ഉപയോഗത്തിന്റെ സ്ഥിതിവിവരക്കണക്കുകൾ",
+ "gadgetusage-gadget": "ഗാഡ്ജറ്റ്",
+ "gadgetusage-usercount": "ഉപയോക്താക്കളുടെ എണ്ണം",
+ "gadgetusage-noresults": "ഗാഡ്‌ജറ്റുകളൊന്നും കണ്ടെത്തിയില്ല.",
+ "gadgetusage-activeusers": "സജീവ ഉപയോക്താക്കൾ",
+ "gadgetusage-default": "സ്വതേ",
+ "gadgets-title": "ഗാഡ്ജറ്റ്",
+ "gadgets-pagetext": "ഉപയോക്താക്കൾക്ക് അവരുടെ [[Special:Preferences#mw-prefsection-gadgets|ക്രമീകരണങ്ങൾ താളിൽ]] നിന്നും സജ്ജമാക്കാവുന്ന ഗാഡ്ജറ്റുകളുടെ പട്ടിക [[MediaWiki:Gadgets-definition|അവ നിർവ്വചിക്കപ്പെട്ട പ്രകാരം]] താഴെ കൊടുത്തിരിക്കുന്നു.\nഓരോ ഗാഡ്ജറ്റിന്റേയും വിവരണവും കോഡും ഉള്ള സന്ദേശ താളുകളിലേക്കു പോകാനുള്ള എളുപ്പവഴി ഈ പട്ടിക നൽകുന്നു.",
+ "gadgets-uses": "ഉപയോഗങ്ങൾ",
+ "gadgets-required-rights": "താഴെപ്പറയുന്ന {{PLURAL:$2|അവകാശം|അവകാശങ്ങൾ}} ആവശ്യമാണ്:\n\n$1",
+ "gadgets-required-skins": "ലഭ്യമായ {{PLURAL:$2|ദൃശ്യരൂപം: $1|ദൃശ്യരൂപങ്ങൾ: $1}}.",
+ "gadgets-default": "എല്ലാവർക്കും സ്വതേ പ്രവർത്തനസജ്ജമായിരിക്കും.",
+ "gadgets-export": "കയറ്റുമതി ചെയ്യുക",
+ "gadgets-export-title": "ഗാഡ്ജറ്റ് കയറ്റുമതി ചെയ്യുക",
+ "gadgets-not-found": "ഗാഡ്ജറ്റ് \"$1\" കണ്ടെത്താനായില്ല.",
+ "gadgets-export-text": "$1 എന്ന ഗാഡ്ജറ്റ് കയറ്റുമതി ചെയ്യാൻ, \"{{int:gadgets-export-download}}\" എന്ന ബട്ടണിൽ ഞെക്കുക, ഡൗൺലോഡ് ചെയ്ത് ലഭിക്കുന്ന പ്രമാണം സേവ് ചെയ്യുക, ലക്ഷ്യവിക്കിയിലെ Special:Import എന്ന താളിൽ ചെന്ന ശേഷം അത് അവിടെ അപ്‌ലോഡ് ചെയ്യുക. താഴെ കൊടുത്തിരിക്കുന്നത് MediaWiki:Gadgets-definition താളിൽ ചേർക്കുക:\n<pre>$2</pre>\nലക്ഷ്യവിക്കിയിൽ താങ്കൾക്ക് ആവശ്യമായ അനുമതികൾ (വ്യവസ്ഥാസന്ദേശങ്ങൾ തിരുത്താനുള്ള അവകാശമടക്കം) ഉണ്ടായിരിക്കണം ഒപ്പം പ്രമാണ അപ്‌ലോഡ് വഴിയുള്ള ഇറക്കുമതി അവിടെ പ്രവർത്തനസജ്ജമായിരിക്കുകയും വേണം.",
+ "gadgets-export-download": "ഡൗൺലോഡ്",
+ "apihelp-query+gadgetcategories-param-names": "എടുക്കേണ്ട വർഗ്ഗങ്ങളുടെ പേരുകൾ.",
+ "right-gadgets-definition-edit": "ഗാഡ്ജറ്റിന്റെ നിർവ്വചനങ്ങൾ തിരുത്തുക",
+ "action-gadgets-definition-edit": "ഈ ഗാഡ്ജറ്റിന്റെ നിർവ്വചനം തിരുത്തുക"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/mr.json b/www/wiki/extensions/Gadgets/i18n/mr.json
new file mode 100644
index 00000000..2385cc96
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/mr.json
@@ -0,0 +1,55 @@
+{
+ "@metadata": {
+ "authors": [
+ "Kaustubh",
+ "Mahitgar",
+ "Rahuldeshmukh101",
+ "V.narsikar"
+ ]
+ },
+ "gadgets-desc": "सदस्यांना त्यांच्या [[Special:Preferences#mw-prefsection-gadgets|पसंतीची]] [[Special:Gadgets|CSS व जावास्क्रीप्ट गॅजेट्स]] निवडण्याची परवानगी देते.",
+ "prefs-gadgets": "उपकरण (गॅजेट)",
+ "gadgets-prefstext": "खाली तुम्ही तुमच्या सदस्यखात्यासाठी वापरू शकत असलेल्या गॅजेट्सची यादी दिलेली आहे. ही गॅजेट्स मुख्यत्वे जावास्क्रीप्टवर अवलंबून असल्यामुळे तुमच्या न्याहाळकात(ब्राउजर) जावास्क्रीप्ट सक्षम(एनेबल) असणे आवश्यक आहे. या गॅजेट्समुळे या पसंतीच्या पानावर कुठलेही परिणाम होणार नाहीत याची कृपया नोंद घ्यावी.\n\nतसेच ही गॅजेट्स मीडियाविकी प्रणालीचा हिस्सा नाहीत, व ही मुख्यत्वे स्थानिक विकिवर सदस्यांद्वारे उपलब्ध केली जातात. \n\nस्थानिक प्रचालक उपलब्ध गॅजेट्स [[MediaWiki:Gadgets-definition|व्याख्या]] व [[Special:Gadgets|वर्णने]] वापरून बदलू शकतात.\nप्रत्येक गॅजेट वापरणाऱ्या सदस्यांच्या संख्येची या विकिवरची यादी [[Special:GadgetUsage|गॅजेट वापराची सांख्यिकी]] येथे आहे .",
+ "gadgets": "सुविधा (गॅजेट)",
+ "gadgetusage": "सुविधा वापरणाऱ्यांची सांख्यिकी",
+ "gadgetusage-gadget": "सुविधा (गॅजेट)",
+ "gadgetusage-usercount": "सदस्यांची संख्या",
+ "gadgetusage-noresults": "सुविधा सापडल्या नाहीत.",
+ "gadgetusage-intro": "ही सारणी, या विकिवर सर्व उपकरणे(गॅजेट)सक्षम केलेल्या सदस्यांची संख्या दर्शविते.ज्याने मागील{{PLURAL:$1|दिवसात|$1 दिवसांत}} ज्याने एकही संपादन केले असेल तो सक्रिय सदस्य म्हणून् गणल्या जातो. या यादीत, सर्वांना अविचलरित्या उपलब्ध करुन दिलेली उपकरणांची सांख्यिकी अंतर्भूत नाही व त्यात तीही उपकरणे असू शकतील जी, सध्या उपलब्ध नाहीत.",
+ "gadgetusage-activeusers": "क्रियाशील सदस्य",
+ "gadgetusage-default": "अविचल",
+ "gadgets-title": "गॅजेट",
+ "gadgets-pagetext": "खाली तुम्ही तुमच्या सदस्यत्वासाठी [[Special:Preferences#mw-prefsection-gadgets|माझ्या पसंती]] पानावर वापरू शकत असलेल्या [[MediaWiki:Gadgets-definition|व्याख्या]]ने सांगितलेल्या गॅजेट्सची यादी दिलेली आहे. हे पान तुम्हाला प्रत्येक गॅजेट्सचा संकेत व व्याख्या देणार्‍या पानासाठी सोपी संपर्क सुविधा पुरविते.",
+ "gadgets-uses": "वापर",
+ "gadgets-required-rights": "खालील {{PLURAL:$2|अधिकार}} हवेच :\n\n$1",
+ "gadgets-required-skins": "{{PLURAL:$2|$1 skin|खालील देखाव्यांवर : $1}} उपलब्ध आहेत",
+ "gadgets-default": "सर्वांसाठी डिफॉल्ट उपलब्ध केले आहे",
+ "gadgets-legacy": "उपकरण प्रभारीत झाले नाही.ResourceLoader ला स्थानांतरीत करा.([https://www.mediawiki.org/wiki/ResourceLoader/Migration_guide_(users) अधिक माहिती])",
+ "gadgets-export": "निर्यात करा",
+ "gadgets-export-title": "उपकरण निर्यात",
+ "gadgets-not-found": "उपकरण \"$1\" सापडत नाही.",
+ "gadgets-export-text": "$1 उपकरण-सुविधा निर्यात करण्याकरिता, \"{{int:gadgets-export-download}}\" कळीवर टिचकी मारा, उतरवलेली संचिका-फाईल जतन करा\nडेस्टिनेशन विकिच्या विशेष:आयात पानावर जाऊन संचिका-फाईल चढवावी.नंतर खालील MediaWiki:Gadgets-definition पान चढवावे :\n<pre>$2</pre>\nतुमच्याकडे डेस्टिनेशन विकिवर (सिस्टीम मेसेजेस सुद्धा संपादीत करण्यासहीत ) सुयोग्य परवानग्या उपलब्ध असणे अत्यावश्यक आहे आणि चढवलेल्या संचिकाकरिता आयात सुविधा सक्षम असणे आवश्यक आहे.",
+ "gadgets-export-download": "अधिभारण करा",
+ "apihelp-query+gadgetcategories-description": "उपकरण वर्गाची यादीच्या स्वरुपात परतावा देते.",
+ "apihelp-query+gadgetcategories-summary": "उपकरण वर्गाची यादीच्या स्वरुपात परतावा देते.",
+ "apihelp-query+gadgetcategories-param-prop": "कोणत्या उपकरण वर्गाची माहिती मिळवायची:\n;name:अंतर्गत वर्गाचे नाव.\n;title:वर्ग शीर्षक.\n;members:वर्गात असलेल्या उपकरणांची संख्या.",
+ "apihelp-query+gadgetcategories-param-names": "हुडकायच्या वर्गांची नावे.",
+ "apihelp-query+gadgetcategories-example-1": "अस्तित्वात असलेल्या उपकरण वर्गांची यादी प्राप्त करा",
+ "apihelp-query+gadgetcategories-example-2": "\"foo\" व \"bar\" या वर्गांबद्दलची संपूर्ण माहिती प्राप्त करा",
+ "apihelp-query+gadgets-description": "या विकिवर असलेल्या सर्व उपकरणांच्या यादीचा परतावा देते.",
+ "apihelp-query+gadgets-summary": "या विकिवर असलेल्या सर्व उपकरणांच्या यादीचा परतावा देते.",
+ "apihelp-query+gadgets-param-prop": "कोणत्या उपकरणांची माहिती मिळवायची:\n;id:अंतर्गत उपकरण ओळखण.\n;metadata:त्या उपकरणाचा मेटाडाटा.\n;desc:HTML मध्ये रुपांतरीत उपकरणाचे वर्णन(हे हळु असण्याची शक्यता आहे,खरेच आवश्यक असेल तर वापरा).",
+ "apihelp-query+gadgets-param-categories": "उपकरणे कोणत्या वर्गांतुन हुडकायची.",
+ "apihelp-query+gadgets-param-ids": "हुडकायच्या उपकरणांच्या ओळखण्या (IDs)",
+ "apihelp-query+gadgets-param-allowedonly": "सध्याचा सदस्याला अनुमतीत असणाऱ्या उपकरणांची यादीच फक्त करा.",
+ "apihelp-query+gadgets-param-enabledonly": "सध्याचा सदस्याने सक्षम केलेल्या उपकरणांची यादीच फक्त करा.",
+ "apihelp-query+gadgets-example-1": "उपकरणांची यादी त्यांच्या वर्णनासह मिळवा",
+ "apihelp-query+gadgets-example-2": "सर्व शक्य असलेल्या गुणधर्मासह उपकरणांची यादी मिळवा",
+ "apihelp-query+gadgets-example-3": "\"foo\" वर्गात असलेल्या उपकरणांची यादी मिळवा",
+ "apihelp-query+gadgets-example-4": "\"foo\" व \"bar\" या उपकरणांबद्दल माहिती मिळवा",
+ "apihelp-query+gadgets-example-5": "सध्याचा सदस्याने सक्षम केलेल्या उपकरणांची यादी करा.",
+ "right-gadgets-edit": "उपकरणाची JavaScript व CSS पाने संपादित करा",
+ "action-gadgets-edit": "या उपकरणाचे JavaScript किंवा CSS पान संपादित करा",
+ "right-gadgets-definition-edit": "उपकरणाची व्याख्या संपादित करा",
+ "action-gadgets-definition-edit": "या उपकरणाची व्याख्या संपादित करा"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/ms.json b/www/wiki/extensions/Gadgets/i18n/ms.json
new file mode 100644
index 00000000..c7d483c4
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/ms.json
@@ -0,0 +1,25 @@
+{
+ "@metadata": {
+ "authors": [
+ "Anakmalaysia",
+ "Aviator",
+ "Zamwan",
+ "Pizza1016"
+ ]
+ },
+ "gadgets-desc": "Membolehkan pengguna memilih [[Special:Gadgets|gajet CSS dan JavaScript]] tempahan melalui [[Special:Preferences#mw-prefsection-gadgets|laman keutamaan]]",
+ "prefs-gadgets": "Gajet",
+ "gadgets-prefstext": "Berikut ialah senarai gajet khas yang anda boleh hidupkan untuk akaun anda.\nKebanyakan daripada gajet-gajet ini mendasarkan JavaScript, oleh itu anda perlu menghidupkan ciri JavaScript dalam pelayar web anda untuk menggunakan mereka\nSila ambil perhatian bahawa gajet-gajet ini tidak menjejaskan laman keutamaan ini.\n\nSila ambil perhatian juga bahawa gajet-gajet khas berikut bukan sebahagian daripada perisian MediaWiki, dan biasanya dibangun dan diselenggarakan oleh para pengguna di wiki tempatan anda.\nPenyelia tempatan boleh mengubah gajet-gajet yang sedia ada menggunakan [[MediaWiki:Gadgets-definition|takrif]] dan [[Special:Gadgets|butiran]] gajet yang bersedia.",
+ "gadgets": "Gajet",
+ "gadgets-title": "Gajet",
+ "gadgets-pagetext": "Yang berikut ialah senarai gajet khas yang boleh dihidupkan oleh pengguna melalui [[Special:Preferences#mw-prefsection-gadgets|laman keutamaan]], sebagai mana yang telah [[MediaWiki:Gadgets-definition|ditakrifkan]]. Laman ini menyediakan capaian mudah kepada laman pesanan sistem yang mentakrifkan setiap kod dan keterangan gajet.",
+ "gadgets-uses": "Menggunakan",
+ "gadgets-required-rights": "{{PLURAL:$2|Hak|Hak-hak}} yang berikut diperlukan:\n\n$1",
+ "gadgets-required-skins": "Terdapat pada {{PLURAL:$2|kulit $1|kulit-kulit berikut: $1}}.",
+ "gadgets-default": "Dihidupkan untuk semua orang secara sediaan.",
+ "gadgets-export": "Eksport",
+ "gadgets-export-title": "Eksport gajet",
+ "gadgets-not-found": "Gajet \"$1\" tiada.",
+ "gadgets-export-text": "Untuk mengeksport gajet $1, klik butang \"{{int:gadgets-export-download}}\", simpan fail yang dimuat turun, pergi ke Khas:Import di wiki sasaran dan muat naik fail tadi di situ. Kemudian tambah kod berikut dalam laman MediaWiki:Gadgets-definition:\n<pre>$2</pre>\nAnda hendaklah mempunyai keizinan yang bersesuaian di wiki sasaran (termasuklah hak untuk menyunting pesanan sistem) dan ciri import daripada fail muat naik hendaklah dibolehkan.",
+ "gadgets-export-download": "Muat turun"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/mt.json b/www/wiki/extensions/Gadgets/i18n/mt.json
new file mode 100644
index 00000000..296d14a6
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/mt.json
@@ -0,0 +1,20 @@
+{
+ "@metadata": {
+ "authors": [
+ "Chrisportelli"
+ ]
+ },
+ "gadgets-desc": "Tħalli lill-utenti jagħżlu [[Special:Gadgets|aċċessorji CSS u JavaScript]] fil-[[Special:Preferences#mw-prefsection-gadgets|preferenzi]] tagħhom",
+ "prefs-gadgets": "Aċċessorji",
+ "gadgets-prefstext": "Hawn taħt hawn lista ta' aġġeġġi speċjali li inti tista' tippermetti għall-kont tiegħek.\nDawn l-aġġeġġi huma l-aktar ibbażati fuq JavaScript, u għalhekk il-JavaScript trid tkun awtorizzata fil-browżer tiegħek sabiex ikunu jistgħu jaħdmu.\nKun af li dawn l-aġġeġġi mhu se jħallu ebda effett fuq din il-paġna tal-preferenzi.\n\nGħandek tkun taf ukoll li dawn l-aġġeġġi spe1jali mhumiex parti mis-softwer tal-MediaWiki, u huma ħafna drabi żviluppati u mantenuti minn utenti fuq il-wiki lokali tiegħek.\nL-amministraturi lokali jistgħu jimmodifikaw id-[[MediaWiki:Gadgets-definition|definizzjonijiet]] u d-[[Special:Gadgets|deskrizzjonijiet]] tal-aġġeġġi disponibbli.",
+ "gadgets": "Aċċessorji",
+ "gadgets-title": "Aċċessorji",
+ "gadgets-pagetext": "Hawn taħt hawn lista ta' aġġeġġi speċjali li l-utenti jistgħu jippermettu fil-[[Special:Preferences#mw-prefsection-gadgets|paġna tal-preferenzi]], kif definit fid-[[MediaWiki:Gadgets-definition|definizzjonijiet]].\nDin il-ħarsa tipprovdi aċċess faċli għall-messaġġi tas-sistema li fihom hemm deskrizzjoni u s-sors ta' kull aġġeġġ.",
+ "gadgets-uses": "Juża",
+ "gadgets-required-rights": "Għandu bżonn id-{{PLURAL:$2|dritt|drittijiet}} segwenti:\n\n$1",
+ "gadgets-required-skins": "Disponibbli fuq {{PLURAL:$2|l-iskema $1|l-iskemi segwenti: $1}}.",
+ "gadgets-export": "Esporta",
+ "gadgets-export-title": "Esporta aċċessorju",
+ "gadgets-not-found": "L-aċċessorju \"$1\" ma nstabx.",
+ "gadgets-export-download": "Niżżel"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/mwl.json b/www/wiki/extensions/Gadgets/i18n/mwl.json
new file mode 100644
index 00000000..36d77081
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/mwl.json
@@ -0,0 +1,17 @@
+{
+ "@metadata": {
+ "authors": [
+ "MokaAkashiyaPT",
+ "Athena in Wonderland"
+ ]
+ },
+ "gadgets-desc": "Premite que ls outelizadores selecionen [[Special:Gadgets|''gadgets'' an JavaScript i CSS]] personalizados nas sues [[Special:Preferences#mw-prefsection-gadgets|perfréncias]]",
+ "prefs-gadgets": "Gadgets",
+ "gadgets": "Gadgets",
+ "gadgetusage": "Statísticas de la outelizaçon de gadgets",
+ "gadgets-title": "Gadgets",
+ "gadgets-pagetext": "Ambaixo hai ua lhista de ''gadgets'' que puoden ser atibados puls outelizadores nas sues [[Special:Preferences#mw-prefsection-gadgets|perfréncias]], cumo stablecido pulas [[MediaWiki:Gadgets-definition|defeniçones]].\nEste resumo proporciona acesso fácele a las páiginas de las mensaiges de l sistema que definen la çcriçon i l código de cada ''gadget''.",
+ "gadgets-uses": "Outeliza",
+ "gadgets-default": "Atibado pa todos por padron.",
+ "gadgets-export": "Sportar"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/my.json b/www/wiki/extensions/Gadgets/i18n/my.json
new file mode 100644
index 00000000..2e3bb229
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/my.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ninjastrikers"
+ ]
+ },
+ "gadgetusage-activeusers": "တက်ကြွသည့် အသုံးပြုသူများ"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/mzn.json b/www/wiki/extensions/Gadgets/i18n/mzn.json
new file mode 100644
index 00000000..60c5a39b
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/mzn.json
@@ -0,0 +1,10 @@
+{
+ "@metadata": {
+ "authors": [
+ "Mehdi"
+ ]
+ },
+ "gadgets-prefstext": "پائین فهرست دله اته سری ابزارون درنه که شما بتوننی از شه کاروری خواستنی‌ئون، یان ره شه وسه فعال هاکنین.\nاین ابزارون ویشترشون جاوااسکریپت رو کار کننه، اگه خواننی یانه جا استفاده هاکنین ونه حتماً شه اینترنت مرورگر رو جاواسکریپت ره فعال هاکنین.\nالبته ونه توجه دارین که این ابزارون نتوننه شمه خواستنی‌ئون صفحه ره تغییر هادن.\n\nتوجه دارین که این ابزارون مدیاویکی نرم‌افزار جمع نینه، و معمولاً شمه ویکی کارورون دست (مدیرون) بسات بینه و نگهداری بوننه.\nهرویکی مدیرون بتوننه از [[MediaWiki:Gadgets-definition|تعاریف]] و [[Special:Gadgets|توضیحات]] صفحات جا استفاده هاکنن و ابزارون ره تغییر هادن.",
+ "gadgets": "ابزارون",
+ "gadgets-title": "ابزارون"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/nap.json b/www/wiki/extensions/Gadgets/i18n/nap.json
new file mode 100644
index 00000000..197d2fb8
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/nap.json
@@ -0,0 +1,54 @@
+{
+ "@metadata": {
+ "authors": [
+ "C.R.",
+ "Сербијана"
+ ]
+ },
+ "gadgets-desc": "Lassa scegliere a l'utente 'e [[Special:Gadgets|gadget CSS e JavaScript]] personalizzate int' 'e [[Special:Preferences#mw-prefsection-gadgets|preferenze]] 'e lloro",
+ "prefs-gadgets": "Gadget",
+ "gadgets-prefstext": "Ccà sotto sta n'elenco 'e gadget speciale ca putite appiccià p' 'o cunto vuosto. Sti gadget songo 'a cchiù parte basate 'n JavaScript, allora 'o JavaScript avess'a essere appicciato dint' 'o browser vuosto pe' pute faticà cu cheste.\nVedite buono ca sti gadget nun farranno affette int'a sta paggena 'e preferenze.\n\nVedite pure ca sti gadget speciale nun songo parte d' 'o software MediaWiki, e songo normalmente sviluppate e accunciate 'a ll'utente d' 'a wiki lucale d' 'a vosta. Ll'editore lucale putesser'edità [[MediaWiki:Gadgets-definition|defineziune]] e [[Special:Gadgets|descrizziune]] d' 'e gadget a disposizione. 'O nummero 'utente ca stann'ausà ogne gadget int'a sta wiki se tròva elencato ncopp' [[Special:GadgetUsage|statistiche 'e uso 'e Gadget]].",
+ "gadgets": "Gadget",
+ "gadgetusage": "Statistiche d'auso d' 'o gadget",
+ "gadgetusage-gadget": "Gadget",
+ "gadgetusage-usercount": "Nummero 'e utente",
+ "gadgetusage-noresults": "Nisciuno gadget truvato",
+ "gadgetusage-intro": "Sta tabbella ndicasse 'o nummero 'e utente c'avisser'appicciato ogne gadget ind'a stu wiki. N'utente attivo se cuntasse comm'a coccherunno c'avesse fatto nu cagnamiento dint'a ll' {{PLURAL:$1|ùrdemo juorno|ùrdeme $1 ghiuorne}}. Sta lista lassa fore 'e statistiche p' 'e gadget appicciate pe' tuttuquante 'e manera predeterminata e putesse ncludere gadget ca nun fossero cchiù a disposizione.",
+ "gadgetusage-intro-noactive": "Sta tabbella ndicasse 'o nummero 'e utente c'avisser'appicciato ogne gadget ind'a stu wiki. Sta lista lassa fore 'e statistiche 'e gadget appicciate pe' tuttuquante 'e manera predeterminata e putesse ncludere gadget ca nun fossero cchiù a disposizione.",
+ "gadgetusage-activeusers": "Utente attive",
+ "gadgetusage-default": "'E bbase",
+ "gadgets-title": "Gadget",
+ "gadgets-pagetext": "Ccà abbascio nce sta n'elenco d' 'e gadget speciale pe' putè n'utente appiccià int' 'a [[Special:Preferences#mw-prefsection-gadgets|paggena 'e mpustaziune d' 'a soja]], comme è definito p' 'e [[MediaWiki:Gadgets-definition|definiziune]].\nStu riepilego ve dasse n'accesso semprice dint' 'o sistema 'e paggene 'e mmasciata ca definissero descrizione e codece pe' ogne gadget.",
+ "gadgets-uses": "Ause",
+ "gadgets-required-rights": "Addimanna {{PLURAL:$2|deritto|deritte}}:\n\n$1",
+ "gadgets-required-skins": "Disponibbele ncopp' 'a {{PLURAL:$2|$1 'o skin|'e skin ccà: $1}}.",
+ "gadgets-default": "Appicciato pe' tuttuquante predefinito.",
+ "gadgets-legacy": "'O gadget nun è carrecato. Pe' piacere migrate a ResourceLoader. ([https://www.mediawiki.org/wiki/ResourceLoader/Migration_guide_(users) Liggite 'e cchiù])",
+ "gadgets-export": "Aspurtà",
+ "gadgets-export-title": "Esporta 'u gadget",
+ "gadgets-not-found": "Gadget \"$1\" nun truvato.",
+ "gadgets-export-text": "Pe esportà 'o $1 gadget, cliccate ncopp' 'u buttone \"{{int:gadgets-export-download}}\", riggistrate 'u file scarrecato, ghiate 'a pàggene Special:Import ncopp' 'a Wiki 'e destinaziona e carrecatevello. Pò azzeccate 'a paggena ccà MediaWiki:Gadgets-definition:\n<pre>$2</pre>\nAvita tenè permesse ghiuste ncopp' 'a wiki 'e destinaziona (ncludenno 'e deritte 'e cagnà mmasciate d' 'o sistema) e 'a mpurtaziona 'e file carrecate adda essere appicciata.",
+ "gadgets-export-download": "Scarreca",
+ "gadgets-validate-notset": "'O codece <code>$1</code> 'e pruprietà nun è mpustato.",
+ "gadgets-validate-wrongtype": "'O codece <code>$1</code> 'e pruprietà adda essere 'e tipo <code>$2</code> mmece 'e <code>$3</code>.",
+ "apihelp-query+gadgetcategories-description": "Torna arreto n'elenco 'e categurìe 'e gadget.",
+ "apihelp-query+gadgetcategories-param-prop": "Quala nfurmaziona 'e categurìa 'e gadget piglià:\n;name:Nomme nterno 'e categurìa.\n;title:Titulo 'e categuria.\n;members:Nummero 'e gadget int'a sta categurìa.",
+ "apihelp-query+gadgetcategories-param-names": "Nomme r' 'e categurìe a turnà.",
+ "apihelp-query+gadgetcategories-example-1": "Piglia n'elenco 'e categurìe esistente 'e gadget",
+ "apihelp-query+gadgetcategories-example-2": "Piglia tutt' 'a nfurmazione ncopp' 'e categurìa chiammate \"foo\" e \"bar\"",
+ "apihelp-query+gadgets-description": "Tòrna arreto n'elenco 'e gadget ausate dint'a sta wiki.",
+ "apihelp-query+gadgets-param-prop": "Quala nfurmaziona d' 'o gadget se piglià:\n;id:ID interno d' 'o gadget.\n;metadata:Metadata d' 'o gadget.\n;desc:Descriziona d' 'o gadget scagnata a HTML (putesse essere lento, s'adda ausà surtanto si nce servesse).",
+ "apihelp-query+gadgets-param-categories": "Gadget 'e quale categurìa a turnà.",
+ "apihelp-query+gadgets-param-ids": "ID o gadget a turnà.",
+ "apihelp-query+gadgets-param-allowedonly": "Elenca surtanto gadget premmesse a ll'utente 'e mmò.",
+ "apihelp-query+gadgets-param-enabledonly": "Elenca surtanto 'e gadget appicciate 'a ll'utente 'e mò.",
+ "apihelp-query+gadgets-example-1": "Piglia n'elenco 'e gadget nzieme ch' 'e chiacchiere r' 'e soje",
+ "apihelp-query+gadgets-example-2": "Piglia n'elenco 'e gadget cu tutt' 'e possibilità pussibbele.",
+ "apihelp-query+gadgets-example-3": "Piglia n'elenco 'e gadged c'apparteneno alla categurìa \"foo\"",
+ "apihelp-query+gadgets-example-4": "Piglia nfurmaziune ncopp' 'e gadget \"foo\" e \"bar\"",
+ "apihelp-query+gadgets-example-5": "Piglia n'elenco 'e gadget appicciate 'a ll'utente 'e mò",
+ "right-gadgets-edit": "Cagna 'o gadget JavaScript e li paggene CSS",
+ "action-gadgets-edit": "cagna stu gadget JavaScript o paggena CSS",
+ "right-gadgets-definition-edit": "Cagna 'e definiziune 'e gadget",
+ "action-gadgets-definition-edit": "cagna 'e stu gadget 'a definiziona"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/nb.json b/www/wiki/extensions/Gadgets/i18n/nb.json
new file mode 100644
index 00000000..74b6a3e6
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/nb.json
@@ -0,0 +1,59 @@
+{
+ "@metadata": {
+ "authors": [
+ "Laaknor",
+ "Nghtwlkr",
+ "Sjurhamre",
+ "Danmichaelo",
+ "Jon Harald Søby"
+ ]
+ },
+ "gadgets-desc": "Lar brukere velge egendefinerte [[Special:Gadgets|CSS- og JavaScript-verktøy]] i [[Special:Preferences#mw-prefsection-gadgets|innstillingene sine]]",
+ "prefs-gadgets": "Tilleggsfunksjoner",
+ "gadgets-prefstext": "Nedenfor er en liste over tilleggsfunksjoner du kan slå på for kontoen din.\nDisse funksjonene er for det meste basert på JavaScript, så du må ha dette slått på i nettleseren din for at de skal fungere.\nMerk at funksjonene ikke vil ha noen innvirkning på denne innstillingssiden.\n\nMerk også at disse verktøyene ikke er del av MediaWiki-programvaren, og vanligvis utvikles og vedlikeholdes av brukere på den lokale wikien. Lokale administratorer kan redigere [[MediaWiki:Gadgets-definition|definisjonene]] og [[Special:Gadgets|beskrivelsene]] til tilgjengelige tilleggsfunksjoner. Antall brukere for hvert verktøy kan ses på [[Special:GadgetUsage|denne statistikksiden]].",
+ "gadgets": "Tilleggsfunksjoner",
+ "gadgetusage": "Statistikk for bruk av tilleggsfunksjoner",
+ "gadgetusage-gadget": "Tilleggsfunksjon",
+ "gadgetusage-usercount": "Antall brukere",
+ "gadgetusage-noresults": "Ingen tilleggsfunksjoner funnet.",
+ "gadgetusage-intro": "Denne tabellen viser antall brukere som har slått på hver tilleggsfunksjon på denne wikien. En aktiv bruker er en som har gjort en redigering {{PLURAL:|den siste dagen|de siste $1 dagene}}. Denne listen har ikke med statistikk for tilleggsfunksjoner som er slått på som standard for alle, og kan inneholde tilleggsfunksjoner som ikke lenger er tilgjengelige.",
+ "gadgetusage-intro-noactive": "Denne tabellen viser antallet brukere som har slått på hver tilleggsfunksjon på denne wikien. Denne listen har ikke med statistikk for tilleggsfunksjoner som er slått på for alle som standard, og kan inkludere tilleggsfunksjoner som ikke lenger er tilgjengelige.",
+ "gadgetusage-activeusers": "Aktive brukere",
+ "gadgetusage-default": "Standard",
+ "gadgets-title": "Tilleggsfunksjoner",
+ "gadgets-pagetext": "Nedenfor er en liste over tilleggsfunksjoner brukere kan slå på i [[Special:Preferences#mw-prefsection-gadgets|innstillingene]], som definert på [[MediaWiki:Gadgets-definition]]. Denne oversikten gir lett tilgang til systembeskjedsidene som definerer hvert verktøys beskrivelse og kode.",
+ "gadgets-uses": "Bruk",
+ "gadgets-required-rights": "Krever følgende {{PLURAL:$2|rettighet|rettigheter}}:\n\n$1",
+ "gadgets-required-skins": "Tilgjengelig i {{PLURAL:$2|drakta $1|følgende drakter: $1}}.",
+ "gadgets-default": "Aktivert for alle som standard",
+ "gadgets-legacy": "Tilleggsfunksjonen ble ikke lastet. Vennligst gå over til å bruke ResourceLoader. ([https://www.mediawiki.org/wiki/ResourceLoader/Migration_guide_(users) Lær mer])",
+ "gadgets-export": "Eksporter",
+ "gadgets-export-title": "Tilleggsfunksjon eksport",
+ "gadgets-not-found": "Tilleggsfunksjon «$1» ikke funnet.",
+ "gadgets-export-text": "For å eksportere verktøyet $1, klikk på «{{int:gadgets-export-download}}»-knappen, lagre den nedlastede filen, gå til Special:Import på destinasjonswikien og last den opp. Deretter legger du til følgende på siden MediaWiki:Gadgets-definition:\n<pre>$2</pre>\nDu må ha de nødvendige tillatelsene på destinasjonswikien (inkludert retten til å redigere systemmeldinger) og import fra filopplastinger må være aktivert.",
+ "gadgets-export-download": "Last ned",
+ "gadgets-validate-notset": "Egenskapen <code>$1</code> er ikke satt.",
+ "gadgets-validate-wrongtype": "Egenskapen <code>$1</code> må være av typen <code>$2</code> i stedet for <code>$3</code>.",
+ "apihelp-query+gadgetcategories-description": "Returnerer en liste over tilleggsfunksjonskategorier.",
+ "apihelp-query+gadgetcategories-summary": "Returnerer ei liste over tilleggsfunksjonskategorier.",
+ "apihelp-query+gadgetcategories-param-prop": "Hvilken tilleggsfunksjonskategoriinformasjon som skal hentes:\n;name:Internt kategorinavn.\n;title:Kategoritittel\n;members:Antall tilleggsfunksjoner i kategorien.",
+ "apihelp-query+gadgetcategories-param-names": "Navn på kategorier som skal hentes.",
+ "apihelp-query+gadgetcategories-example-1": "Få en liste over eksisterende tilleggsfunksjonskategorier",
+ "apihelp-query+gadgetcategories-example-2": "Få all informasjon om kategorier med navn «foo» og «bar»",
+ "apihelp-query+gadgets-description": "Returnerer en liste over tilleggsfunksjoner brukt på denne wikien.",
+ "apihelp-query+gadgets-summary": "Returnerer ei liste over tilleggsfunksjoner som brukes på denne wikien.",
+ "apihelp-query+gadgets-param-prop": "Hvilket tilleggsfunksjonsinformasjon å hente:\n;id:Intern tilleggsfunksjons-ID.\n;metadata;Tilleggsfunksjonens metadata.\n;desc:Tilleggsfunksjonens beskrivelse gjort om til HTML (kan være treg, bruk bare om nødvendig).",
+ "apihelp-query+gadgets-param-categories": "Hvilken kategori tilleggsfunksjoner skal hentes fra.",
+ "apihelp-query+gadgets-param-ids": "ID-er til tilleggsfunksjonene som skal hentes.",
+ "apihelp-query+gadgets-param-allowedonly": "List kun tilleggsfunksjoner som tillates for den nåværende brukeren.",
+ "apihelp-query+gadgets-param-enabledonly": "List kun tilleggsfunksjoner slått på av den gjeldende brukeren.",
+ "apihelp-query+gadgets-example-1": "Få en liste over tilleggsfunksjoner og deres beskrivelser",
+ "apihelp-query+gadgets-example-2": "Få en liste over tilleggsfunksjoner med alle mulige egenskaper",
+ "apihelp-query+gadgets-example-3": "Få en liste over tilleggsfunksjoner i kategorien «foo»",
+ "apihelp-query+gadgets-example-4": "Få informasjon om tilleggsfunksjonene «foo» og «bar»",
+ "apihelp-query+gadgets-example-5": "Få en liste over tilleggsfunksjoner slått på av den gjeldende brukeren",
+ "right-gadgets-edit": "Redigere tilleggsfunksjoners JavaScript- og CSS-sider",
+ "action-gadgets-edit": "redigere denne tilleggsfunksjonens JavaScript- eller CSS-side",
+ "right-gadgets-definition-edit": "Redigere tilleggsfunksjonsdefinisjonene",
+ "action-gadgets-definition-edit": "redigere denne tilleggsfunksjonens definisjon"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/nds-nl.json b/www/wiki/extensions/Gadgets/i18n/nds-nl.json
new file mode 100644
index 00000000..e60bd417
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/nds-nl.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Servien"
+ ]
+ },
+ "gadgets-desc": "Laot gebrukers [[Special:Gadgets|CSS en JavaScripts]] aktiveren in der eigen [[Special:Preferences#mw-prefsection-gadgets|veurkeuren]]",
+ "prefs-gadgets": "Technies spul",
+ "gadgets-prefstext": "Hieronder steet spesiaal techinies spul wa'j anzetten kunnen.\nt Is veurnamelik ebaseerd op JavaScript, dus JavaScript mu'j an hebben staon in joew webkieker um t te laoten warken.\nAl dit techniese spul hef gien invleud op disse veurkeurenzied.\n\nDisse techniese snufjes maken oek gien deel uut van de MediaWiki-programmatuur, en t wördt meestentieds ontwikkeld en onderhouwen\ndeur gebrukers van joew eigen wiki.\nBeheerders kunnen t beschikbaore techniese spul angeven in [[MediaWiki:Gadgets-definition|definisies]] en [[Special:Gadgets|beschrievingen]].",
+ "gadgets": "Technies spul",
+ "gadgets-title": "Technies spul",
+ "gadgets-pagetext": "Hieronder steet spesiaal technies spul die gebrukers in kunnen schakelen bie [[Special:Preferences#mw-prefsection-gadgets|mien veurkeuren]], zo as in-esteld in de [[MediaWiki:Gadgets-definition|defenisies]].\nDit overzicht biejt eenvoudige toegang tot de systeemtekstzied waor de beschrieving en de programmakode van elke technies snufjen steet.",
+ "gadgets-uses": "Gebruuk"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/nds.json b/www/wiki/extensions/Gadgets/i18n/nds.json
new file mode 100644
index 00000000..d232b885
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/nds.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Slomox"
+ ]
+ },
+ "gadgets-desc": "Lett Brukers vörgeven [[Special:Gadgets|CSS- un JavaScript-Gadgets]] in jemehr [[Special:Preferences#mw-prefsection-gadgets|Instellungen]] aktiveren",
+ "prefs-gadgets": "Gadgets",
+ "gadgets-prefstext": "Ünnen steit en List vun spezielle Warktüüch, de elkeen Bruker för sik anstellen kann.\nDisse Warktüüch loopt tomehrst mit Javascript. Dat mutt also in’n Browser anstellt wesen, dat dat löppt.\nWees aver gewohr, dat de Warktüüch hier direkt op disse Sied mit de persönlichen Instellungen nix bewarkt.\n\nDe Warktüüch sünd denn ok keen offiziellen Deel vun MediaWiki, sünnern warrt normalerwies vun enkelte Brukers vun dat lokale Wiki schreven. De Administraters vun dat Wiki köönt de List mit de Warktüüch över de Sieden [[MediaWiki:Gadgets-definition]] un [[Special:Gadgets]] ännern.",
+ "gadgets": "Gadgets",
+ "gadgets-title": "Gadgets",
+ "gadgets-pagetext": "Ünnen steit en List mit spezielle Warktüüch, de för all Brukers in de [[Special:Preferences#mw-prefsection-gadgets|Instellungen]] anstellt warrn köönt. Defineert sünd de Warktüüch in [[MediaWiki:Gadgets-definition]].\nDisse Översicht gifft direkten Togang to de Systemnarichten, in de de Text to de Warktüüch un jemehr Programmkood steit.",
+ "gadgets-uses": "Bruukt"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/ne.json b/www/wiki/extensions/Gadgets/i18n/ne.json
new file mode 100644
index 00000000..73490a70
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/ne.json
@@ -0,0 +1,25 @@
+{
+ "@metadata": {
+ "authors": [
+ "Bhawani Gautam",
+ "Nirmal Dulal",
+ "राम प्रसाद जोशी",
+ "सरोज कुमार ढकाल"
+ ]
+ },
+ "gadgets-desc": "प्रयोगकर्ताको [[Special:Preferences#mw-prefsection-gadgets|अभिरुचि अनुसार]] [[Special:Gadgets|CSS र जाभास्क्रीप्ट उपकरणहरू]] छान्न दिनुहोस",
+ "prefs-gadgets": "उपकरणहरू",
+ "gadgets-prefstext": "विशेष उपकरणहरूको सूची तल दिइएकोछ तपाईंले आफ्नो खातामा सक्रिय पार्न सक्नुहुन्छ।\nप्राय सबै उपकरणहरू जाभास्क्रीप्टमा आधारित छन्, यस कारण ब्राउजरमा काम गराउनको लागि जाभास्क्रीप्टलाई सक्रिय गर्नु पर्छ।\nयाद राख्नुहोस् ती उपकरणहरूले अभिरुचि पृष्ठमा असर गर्दैनन्।\nयो पनि याद राखुहोस् यी विशेष उपकरणहरू मीडिया विकि सफ्टवेयरभित्र पर्दैनन् र प्राय स्थानीय विकि प्रयोगकर्ताहरूले यसको विकास र सञ्चालन गर्दछन्। \nस्थानीय प्रबन्धकहरूले उपलब्ध उपकरणहरूका [[MediaWiki:Gadgets-definition|परिभाषाहरू]] र [[Special:Gadgets|विवरणहरू]] सम्पादन गर्दछन्।",
+ "gadgets": "उपकरणहरू",
+ "gadgetusage-activeusers": "सकृय प्रयोगकर्ताहरू",
+ "gadgets-title": "उपकरणहरू",
+ "gadgets-pagetext": "विशेष उपकरणहरूको सूची तल दिइएकोछ प्रयोगकर्ताहरूले [[MediaWiki:Gadgets-definition|परिभाषाहरू]]मा जनाए अनुसार आफ्नो [[Special:Preferences#mw-prefsection-gadgets|अभिरुचि पृष्ठमा]], सक्रिय पार्न सक्नेछन्।।\nयस सिंहावलोकनले प्रणाली सन्देश पृष्ठ सजिलै प्राप्त गर्न सकिनेछ जसले प्रत्येक उपकरणको विवरण र कोडलाई परिभाषित गरेको छ।",
+ "gadgets-uses": "प्रयोगहरू",
+ "gadgets-required-rights": "{{PLURAL:$2|$1 अधिकारको|निम्न अधिकारहरूको: $1}} आवश्यकता छ ।",
+ "gadgets-default": "सबैको निम्ति सुरुदेखि नैं सक्रिय छ।",
+ "gadgets-export": "निर्यात गर्ने",
+ "gadgets-export-title": "उपकरण निर्यात",
+ "gadgets-not-found": "उपकरण \"$1\" पाइएन।",
+ "gadgets-export-text": "$1 उपकरणलाई निर्यात गर्न, \"{{int:gadgets-export-download}}\" बटनमा क्लिक गर्नुहोस्, डाउनलोड गरिएको फाइललाई सङ्ग्रह गर्नुहोस्,\nजानुहोस् विशेष:लक्षित विकिमा निर्यात गर्नुहोस् र अपलोड गर्नुहोस् । त्यसपछि तल दिएका मीडियाविकि: उपकरण परिभाषाहरू परिभाषा पृष्ठमा थप्नुहोस्:\n<pre>$2</pre>\nतपाईंसित लक्षित विकिमा प्रणाली सन्देशहरू सम्पादन गर्ने अधिकार सहित आयात गर्ने समुचित अनुमति र फाइल अपलोड पनि सक्रिय गरिएको हुनुपर्छ ।",
+ "gadgets-export-download": "डाउनलोड गर्ने"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/nl-informal.json b/www/wiki/extensions/Gadgets/i18n/nl-informal.json
new file mode 100644
index 00000000..bde7c351
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/nl-informal.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "Siebrand"
+ ]
+ },
+ "gadgets-prefstext": "Hieronder staan de speciale uitbreidingen die je kunt inschakelen.\nDe uitbreidingen zijn voornamelijk gebaseerd op JavaScript, dus JavaScript moet voor je browser ingeschakeld zijn om ze te laten werken.\nDe uitbreidingen hebben geen invloed op deze pagina met voorkeuren.\n\nDeze speciale uitbreidingen zijn geen onderdeel van de MediaWiki-software en worden meestal ontwikkeld en onderhouden door gebruikers van jouw wiki.\nBeheerders kunnen de beschikbare uitbreidingen opgeven in [[MediaWiki:Gadgets-definition|definities]] en [[Special:Gadgets|beschrijvingen]].",
+ "gadgets-export-text": "Klik op de knop \"{{int:gadgets-export-download}}\" om de uitbreiding \"$1\" te exporteren.\nSla daarna het gedownloade bestand op.\nGa naar \"Special:Import\" in de doelwiki en upload het geëxporteerde bestand.\nVoeg daarna het volgende toe aan de pagina \"MediaWiki:Gadgets-definition\":\n<pre>$2</pre>\nJe moet de juiste rechten hebben op de doelwiki, inclusief het recht om bewerkingen te maken aan de systeemberichten, en importeren uit bestanden moet ingeschakeld zijn."
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/nl.json b/www/wiki/extensions/Gadgets/i18n/nl.json
new file mode 100644
index 00000000..af5e17f0
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/nl.json
@@ -0,0 +1,63 @@
+{
+ "@metadata": {
+ "authors": [
+ "Annabel",
+ "SPQRobin",
+ "Siebrand",
+ "Esketti",
+ "Sjoerddebruin",
+ "Romaine",
+ "Edoderoo",
+ "Mainframe98",
+ "Mar(c)"
+ ]
+ },
+ "gadgets-desc": "Laat gebruikers [[Special:Gadgets|CSS en JavaScripts]] activeren in hun [[Special:Preferences#mw-prefsection-gadgets|voorkeuren]]",
+ "prefs-gadgets": "Uitbreidingen",
+ "gadgets-prefstext": "Hieronder staan de speciale uitbreidingen die u kunt inschakelen.\nDe uitbreidingen zijn voornamelijk gebaseerd op JavaScript, dus JavaScript moet voor uw browser ingeschakeld zijn om ze te laten werken.\nDe uitbreidingen hebben geen invloed op deze pagina met voorkeuren.\n\nDeze speciale uitbreidingen zijn geen onderdeel van de MediaWiki-software en worden meestal ontwikkeld en onderhouden door gebruikers van uw wiki.\nBeheerders kunnen de beschikbare uitbreidingen opgeven in [[MediaWiki:Gadgets-definition|definities]] en [[Special:Gadgets|beschrijvingen]]. De [[Special:GadgetUsage|aantallen gebruikers van iedere uitbreiding op deze wiki]] zijn beschikbaar.",
+ "gadgets": "Uitbreidingen",
+ "gadgetusage": "Uitbreidingsgebruiksstatistieken",
+ "gadgetusage-gadget": "Uitbreiding",
+ "gadgetusage-usercount": "Aantal gebruikers",
+ "gadgetusage-noresults": "Geen uitbreidingen gevonden.",
+ "gadgetusage-intro": "Deze tabel geeft het aantal gebruikers weer die een bepaalde uitbreiding geactiveerd heeft op deze wiki. Een actieve gebruiker is iemand die in de afgelopen {{PLURAL:$1|dag|$1 dagen}} een bewerking heeft gemaakt. Niet opgenomen in deze lijst zijn statistieken voor uitbreidingen die standaard voor iedereen zijn ingeschakeld en het kan mogelijk uitbreidingen bevatten die niet langer beschikbaar zijn.",
+ "gadgetusage-intro-noactive": "In deze tabel wordt het aantal gebruikers aangegeven dat een uitbreiding gebruikt op deze wiki. In deze tabel ontbreken uitbreidingen die voor alle gebruikers standaard ingeschakeld zijn, en het is mogelijk dat er uitbreidingen zijn opgenomen die niet langer beschikbaar zijn.",
+ "gadgetusage-activeusers": "Actieve gebruikers",
+ "gadgetusage-default": "Standaard",
+ "gadgets-title": "Uitbreidingen",
+ "gadgets-pagetext": "Hieronder staan de speciale uitbreidingen die gebruikers kunnen inschakelen via hun [[Special:Preferences#mw-prefsection-gadgets|voorkeuren]], zoals ingesteld in de [[MediaWiki:Gadgets-definition|definities]].\nDit overzicht biedt eenvoudige toegang tot de systeemtekstpagina waar de beschrijving en de programmacode van iedere uitbreiding staat.",
+ "gadgets-uses": "Gebruikt",
+ "gadgets-required-rights": "{{PLURAL:$2|Het volgende recht is|De volgende rechten zijn}} vereist:\n\n$1.",
+ "gadgets-required-skins": "Beschikbaar in de {{PLURAL:$2|vormgeving $1|volgende vormgevingen: $1}}.",
+ "gadgets-default": "Standaard ingeschakeld voor iedereen.",
+ "gadgets-legacy": "De uitbreiding is niet geladen. Pas het aan en gebruik ResourceLoader ([https://www.mediawiki.org/wiki/ResourceLoader/Migration_guide_(users) meer lezen]).",
+ "gadgets-export": "Exporteren",
+ "gadgets-export-title": "Uitbreiding exporteren",
+ "gadgets-not-found": "Uitbreiding \"$1\" niet gevonden.",
+ "gadgets-export-text": "Klik op de knop \"{{int:gadgets-export-download}}\" om de uitbreiding \"$1\" te exporteren.\nSla daarna het gedownloade bestand op.\nGa naar \"Special:Import\" in de doelwiki en upload het geëxporteerde bestand.\nVoeg daarna het volgende toe aan de pagina \"MediaWiki:Gadgets-definition\":\n<pre>$2</pre>\nU moet de juiste rechten hebben op de doelwiki, inclusief het recht om bewerkingen te maken aan de systeemberichten, en importeren uit bestanden moet ingeschakeld zijn.",
+ "gadgets-export-download": "Downloaden",
+ "gadgets-validate-notset": "De eigenschap <code>$1</code> is niet ingesteld.",
+ "gadgets-validate-wrongtype": "De eigenschap <code>$1</code> moet van het type <code>$2</code> zijn in plaats van <code>$3</code>.",
+ "apihelp-query+gadgetcategories-description": "Geeft een lijst met uitbreidingscategorieën terug.",
+ "apihelp-query+gadgetcategories-summary": "Geeft een lijst met uitbreidingscategorieën terug.",
+ "apihelp-query+gadgetcategories-param-prop": "Welke uitbreidingscategoriegegevens op te halen:\n;name:Interne naam van de categorie;\n;title:Categorienaam;\n;members:Aantal uitbreidingen in de categorie.",
+ "apihelp-query+gadgetcategories-param-names": "Namen van op te halen categorieën.",
+ "apihelp-query+gadgetcategories-example-1": "Een lijst van bestaande uitbreidingscategorieën opvragen.",
+ "apihelp-query+gadgetcategories-example-2": "Alle informatie over categorieën met de naam \"foo\" en \"bar\" opvragen.",
+ "apihelp-query+gadgets-description": "Geeft een lijst terug met in deze wiki gebruikte uitbreidingen.",
+ "apihelp-query+gadgets-summary": "Geeft een lijst terug met in deze wiki gebruikte uitbreidingen.",
+ "apihelp-query+gadgets-param-prop": "Welke uitbreidingsgegevens op te halen:\n;id:Intern uitbreidings-ID;\n;metadata:De metadata van de uitbreiding;\n;desc:Beschrijving van de uitbreiding in HTML (kan langzaam zijn, gebruik alleen als echt nodig).",
+ "apihelp-query+gadgets-param-categories": "Uitbreidingen uit welke categorieën op te halen.",
+ "apihelp-query+gadgets-param-ids": "ID's van uitbreidingen om op te halen.",
+ "apihelp-query+gadgets-param-allowedonly": "Alleen uitbreidingen laten zien die toegestaan zijn voor de huidige gebruiker.",
+ "apihelp-query+gadgets-param-enabledonly": "Alleen uitbreidingen weergeven die zijn ingeschakeld door de huidige gebruiker.",
+ "apihelp-query+gadgets-example-1": "Een lijst van uitbreidingen met hun beschrijvingen ophalen.",
+ "apihelp-query+gadgets-example-2": "Een lijst van uitbreidingen inclusief alle mogelijke eigenschappen ophalen.",
+ "apihelp-query+gadgets-example-3": "Een lijst van uitbreidingen uit de categorie \"foo\" ophalen.",
+ "apihelp-query+gadgets-example-4": "Gegevens over de uitbreidingen \"foo\" en \"bar\" ophalen.",
+ "apihelp-query+gadgets-example-5": "Een lijst van door de huidige gebruiker ingeschakelde uitbreidingen opvragen.",
+ "right-gadgets-edit": "JavaScript- en CSS-pagina's voor de uitbreiding bewerken",
+ "action-gadgets-edit": "deze JavaScript- of CSS-pagina te bewerken",
+ "right-gadgets-definition-edit": "Uitbreidingsdefinities bewerken",
+ "action-gadgets-definition-edit": "uitbreidingsdefinities te bewerken"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/nn.json b/www/wiki/extensions/Gadgets/i18n/nn.json
new file mode 100644
index 00000000..23d65a9b
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/nn.json
@@ -0,0 +1,19 @@
+{
+ "@metadata": {
+ "authors": [
+ "Eirik",
+ "Harald Khan",
+ "Nghtwlkr",
+ "Njardarlogar"
+ ]
+ },
+ "gadgets-desc": "Lèt brukarane velje eigendefinerte [[Special:Gadgets|CSS- og JavaScript-verktøy]] i [[Special:Preferences#mw-prefsection-gadgets|innstillingane sine]].",
+ "prefs-gadgets": "Tilleggsfunksjonar",
+ "gadgets-prefstext": "Under finn du ei liste over tilleggsfunksjonar som du kan slå på på kontoen din. Desse tilleggsfunksjonane er for det meste baserte på JavaScript, så JavaScript må vere slått på i nettlesaren din for at dei skal verke. Merk at desse tilleggsfunksjonane ikkje har nokon effekt på denne innstillingssida.\n\nMerk også at tilleggsfunksjonane ikkje er ein del av MediaWiki-programvara, og at dei vanlegvis er utvikla og vedlikehaldne av brukarar på din lokale wiki. Lokale administratorar kan endre dei tilgjengelege tilleggsfunksjonane ved å endre [[MediaWiki:Gadgets-definition|definisjonane]] og [[Special:Gadgets|skildringane]].",
+ "gadgets": "Tilleggsfunksjonar",
+ "gadgets-title": "Tilleggsfunksjonar",
+ "gadgets-pagetext": "Under finn du ei liste over tilleggsfunksjonar som brukarane kan slå på på [[Special:Preferences#mw-prefsection-gadgets|innstillingane]] sine, som oppgjevne i [[MediaWiki:Gadgets-definition|definisjonane]].\nDette oversynet gjev enkel tilgang til systemmeldingssidene som inneheld skildringa og koden til kvar enkelt tilleggsfunksjon.",
+ "gadgets-uses": "Brukar",
+ "gadgets-export": "Eksporter",
+ "gadgets-export-download": "Last ned"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/oc.json b/www/wiki/extensions/Gadgets/i18n/oc.json
new file mode 100644
index 00000000..3e5a29ac
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/oc.json
@@ -0,0 +1,18 @@
+{
+ "@metadata": {
+ "authors": [
+ "Boulaur",
+ "Cedric31"
+ ]
+ },
+ "gadgets-desc": "Daissa als utilizaires los [[Special:Gadgets|gadgets CSS e JavaScript]] dins lor [[Special:Preferences#mw-prefsection-gadgets|preferéncias]]",
+ "prefs-gadgets": "Gadgets",
+ "gadgets-prefstext": "Çaijós apareis una lista de gadgets que podètz activar per vòstre compte. Fan apèl a JavaScript, deu doncas èsser activat per vòstre navigador Web.\n\nAn pas cap d'incidéncia sus aquesta pagina de preferéncias. E mai, son generalament desvolopats e mantenguts sus aqueste wiki.\nLos administrators pòdon modificar los gadgets en passant per [[MediaWiki:Gadgets-definition|las definicions]] e las [[Special:Gadgets|descripcions]].",
+ "gadgets": "Gadgets",
+ "gadgetusage": "Estatisticas d'utilizacion dels gadgets",
+ "gadgets-title": "Gadgets",
+ "gadgets-pagetext": "Çaijós apareis una lista de gadgets que los utilizaires pòdon activar dins lor [[Special:Preferences#mw-prefsection-gadgets|pagina de preferéncias]], coma definit dins ''[[MediaWiki:Gadgets-definition|las definicions]]''.\nAqueste susvòl dona un accès rapid a las paginas de messatges del sistèma que definisson cada descripcion e cada còdi dels gadgets.",
+ "gadgets-uses": "Utiliza",
+ "gadgets-export": "Exportar",
+ "gadgets-export-download": "Telecargar"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/olo.json b/www/wiki/extensions/Gadgets/i18n/olo.json
new file mode 100644
index 00000000..dcd23fbc
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/olo.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Mashoi7"
+ ]
+ },
+ "prefs-gadgets": "Programmazet",
+ "gadgets": "Programmazet",
+ "gadgets-title": "Programmazet",
+ "gadgets-uses": "Käyttäy",
+ "gadgets-export": "Vie",
+ "gadgets-export-title": "Programmazen viendy",
+ "gadgets-not-found": "Programmastu \"$1\" ei löydynyh."
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/or.json b/www/wiki/extensions/Gadgets/i18n/or.json
new file mode 100644
index 00000000..c3a8415a
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/or.json
@@ -0,0 +1,24 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ansumang",
+ "Odisha1",
+ "Psubhashish"
+ ]
+ },
+ "gadgets-desc": "ସଭ୍ୟମାନଙ୍କୁ ଆପଣା ମନପସନ୍ଦର [[Special:Gadgets|CSS ଓ ଜାଭାସ୍କ୍ରିପ୍ଟ ଗ୍ୟାଜେଟ]] ସେମାନଙ୍କର [[Special:Preferences#mw-prefsection-gadgets|ପସନ୍ଦସବୁ]]ରେ ବାଛିବାକୁ ଦିଅନ୍ତୁ",
+ "prefs-gadgets": "ଗ୍ୟାଜେଟ",
+ "gadgets-prefstext": "ତଳେ ଆପଣଙ୍କ ଖାତା ଲାଗି କେତେକ ବିଶେଷ ଗ୍ୟାଜେଟର ତାଲିକା ଦିଆଗଲା ।\nଏହି ଗ୍ୟାଜେଟମାନ ମୂଳତ ଜାଭାସ୍କ୍ରିପ୍ଟକୁ ଆଧାର କରି ତିଆରି, ତେଣୁ ସେମାନଙ୍କୁ ବ୍ୟବହାର କରିବା ପାଇଁ ଆପଣଙ୍କୁ ନିଜ ବ୍ରାଉଜରରେ ଜାଭାସ୍କ୍ରିପ୍ଟ ସଚଳ କରିବାକୁ ପଡ଼ିବ ।\nଜାଣିରଖନ୍ତୁ ଯେ ଏହିସବୁ ଗ୍ୟାଜେଟ ଆପଣଙ୍କର ପସନ୍ଦ ପୃଷ୍ଠା ଉପରେ କିଛି ପ୍ରଭାବ ପକାଇବେ ନାହିଁ ।\n\nଆହୁରି ଜାଣିରଖନ୍ତୁ ଯେ ଏହି ବିଶେଷ ଗ୍ୟାଜେଟସବୁ ମିଡ଼ିଆଉଇକି ସଫ୍ଟଵେର ଅନ୍ତଭୁକ୍ତ ନୁହଁନ୍ତି । ଏହିସବୁ ସାଧାରଣତ ଆପଣଙ୍କ ଆଞ୍ଚଳିକ ଉଇକିର ସଭ୍ୟ ମାନଙ୍କ ଦେଇ ତିଆରି ଓ ପରିଚାଳିତ ହୋଇଥାଏ ।\nଆଞ୍ଚଳିକ ପରିଚାଳକଗଣ ଗ୍ୟାଜେଟର [[MediaWiki:Gadgets-definition|ସଜ୍ଞା]] ଓ [[Special:Gadgets|ବିବରଣୀ]]ସବୁ ବଦଳାଇପାରିବେ ।",
+ "gadgets": "ଗ୍ୟାଜେଟ",
+ "gadgets-title": "ଗ୍ୟାଜେଟ",
+ "gadgets-pagetext": "[[MediaWiki:Gadgets-definition|ସଜ୍ଞା]] ଅନୁସାରେ ତଳେ ସଭ୍ୟମାନଙ୍କ [[Special:Preferences#mw-prefsection-gadgets|ପସନ୍ଦ ପୃଷ୍ଠା]]ରୁ ସଚଳ କରାଯାଇପାରିବା ଭଳି କେତେକ ବିଶେଷ ଗ୍ୟାଜେଟର ତାଲିକା ଦିଆଗଲା ।\nଏହି ଅବଲୋକନ ପ୍ରତ୍ୟେକ ଗ୍ୟାଜେଟର ବିବରଣୀ ଓ କୋଡ଼ ନିର୍ଦ୍ଧାରଣ କରୁଥିବା ସିଷ୍ଟମ ମେସେଜ ପୃଷ୍ଠା ସବୁକୁ ସହଜ ଯିବାଆସିବାର ସୁବିଧା ଦେଇଥାଏ ।",
+ "gadgets-uses": "ବ୍ୟବହାର",
+ "gadgets-required-rights": "ଏହି {{PLURAL:$2|ଅଧିକାରଟି|ଅଧିକାରସମୂହ}} ଲୋଡ଼ା :\n\n$1",
+ "gadgets-required-skins": "{{PLURAL:$2|$1 ବହିରାବରଣ|ଏହି ସବୁ ବହିରାବରଣରେ: $1}} ମିଳୁଅଛି ।",
+ "gadgets-default": "ଆପେଆପେ ସଭିଙ୍କ ପାଇଁ ସଚଳ କରାଗଲା ।",
+ "gadgets-export": "ରପ୍ତାନୀ",
+ "gadgets-export-title": "ଗ୍ୟାଜେଟ ରପ୍ତାନି",
+ "gadgets-not-found": "\"$1\" ଗ୍ୟାଜେଟଟି ମିଳିଲା ନାହିଁ ।",
+ "gadgets-export-text": "$1 ଗ୍ୟାଜେଟ ରପ୍ତାନି କରିବା ନିମନ୍ତେ \"{{int:gadgets-export-download}}\" ବୋତାମରେ କ୍ଲିକ କରି ଫାଇଲଟି ଆହରଣ କରନ୍ତୁ ଓ ସାଇତି ରଖନ୍ତୁ,\nମୁକାମ ଉଇକିରେ Special:Import କୁ ଯାଇ ଏହାକୁ ଅପଲୋଡ଼ କରନ୍ତୁ । ତାହାପରେ MediaWiki:Gadgets-definition ପୃଷ୍ଠାରେ ରେ ତଳ ଲେଖାଟିକୁ ଯୋଡ଼ନ୍ତୁ:\n<pre>$2</pre>\nମୁକାମ ଉଇକିରେ ଆପଣଙ୍କ ପାଖରେ ଦରକାରୀ ଅନୁମୋଦନ ଥିବା ଲୋଡ଼ା (ସିଷ୍ଟମ ମେସେଜକୁ ବଦଲାଇବାର ଅଧିକାର ସହିତ) ତଥା ଫାଇଲ ଅପଲୋଡ଼ରୁ ଆହରଣ ମଧ୍ୟ ସଚଳ ହୋଇଥିବା ଲୋଡ଼ା ।",
+ "gadgets-export-download": "ଡାଉନଲୋଡ଼"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/pa.json b/www/wiki/extensions/Gadgets/i18n/pa.json
new file mode 100644
index 00000000..5b2c839e
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/pa.json
@@ -0,0 +1,16 @@
+{
+ "@metadata": {
+ "authors": [
+ "Babanwalia"
+ ]
+ },
+ "prefs-gadgets": "ਗੈਜਟ",
+ "gadgets": "ਗੈਜਟ",
+ "gadgets-title": "ਗੈਜਟ",
+ "gadgets-uses": "ਵਰਤਦਾ ਹੈ",
+ "gadgets-default": "ਮੂਲ ਤੌਰ 'ਤੇ ਸਾਰਿਆਂ ਲਈ ਚਾਲੂ ਹੈ।",
+ "gadgets-export": "ਬਰਾਮਦ",
+ "gadgets-export-title": "ਜੁਗਤਾਂ ਦੀ ਬਰਾਮਦ",
+ "gadgets-not-found": "ਗੈਜਟ \"$1\" ਨਹੀਂ ਲੱਭਾ।",
+ "gadgets-export-download": "ਡਾਊਨਲੋਡ ਕਰੋ"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/pam.json b/www/wiki/extensions/Gadgets/i18n/pam.json
new file mode 100644
index 00000000..4fb794a3
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/pam.json
@@ -0,0 +1,18 @@
+{
+ "@metadata": {
+ "authors": [
+ "Katimawan2005",
+ "Leeheonjin",
+ "Amiel Guanlao"
+ ]
+ },
+ "gadgets-desc": "Didinan nong tsansa/pamikatagun a mamiling pasadiang [[Special:Gadgets|CSS ampong JavaScript gadget]] ketang karelang [[Special:Preferences#mw-prefsection-gadgets|pinili]] (preferences)",
+ "prefs-gadgets": "Deng gadget",
+ "gadgets-prefstext": "Ating tala (listaan) da reng espesial a gadget a agamit mu ba meng apaliari (enable) ing kekang account.\nUling makabasi la king JavaScript deng keraklan kareting gadget, kailangan yang papaliari ing JavaScript king kekang browser ba lang gumada deti.\nTandanan mung ala lang epektu king bulung da ring pinili (preferences page) deng gadget a reti.\n\nTandanan mu muring e la kayabe king MediaWiki software deting gadget, at keraklan, gagawan da la ampong mamantinian deng talagamit ketang kekayung lokal a wiki.\nMaliari lang makapag-edit deng talapanibala (administrator) kareng gadget a atiu nung gamitan de ing [[MediaWiki:Gadgets-definition]] ampo ing [[Special:Gadgets]].",
+ "gadgets": "Deng gadget",
+ "gadgetusage-usercount": "Bilang da reng talagmit",
+ "gadgetusage-activeusers": "Deng paneng talagamit",
+ "gadgets-title": "Deng gadget",
+ "gadgets-pagetext": "Makabili ya king lalam ing tala (listaan) da reng espesial a gadget a apaliari (enable) da reng talagamit ketang karelang bulung da ring pinili (preferences page), agpang king kabaldugan king [[MediaWiki:Gadgets-definition]].\nGawa nang malagua niting piyakitan (overview) ing pamanintun kareng bulung a maki system message a milalarawan king balang gadget at babie king kayang code.",
+ "gadgets-uses": "Gamit"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/pdc.json b/www/wiki/extensions/Gadgets/i18n/pdc.json
new file mode 100644
index 00000000..91cb2998
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/pdc.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "Xqt"
+ ]
+ },
+ "prefs-gadgets": "Gadgets",
+ "gadgets": "Gadgets",
+ "gadgets-title": "Gadgets",
+ "gadgets-export-download": "Runnerdraage"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/pl.json b/www/wiki/extensions/Gadgets/i18n/pl.json
new file mode 100644
index 00000000..f9e8bfa9
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/pl.json
@@ -0,0 +1,63 @@
+{
+ "@metadata": {
+ "authors": [
+ "Chrumps",
+ "Derbeth",
+ "Marcin Łukasz Kiejzik",
+ "Matma Rex",
+ "Sovq",
+ "Sp5uhe",
+ "Peter Bowman",
+ "Woytecr",
+ "Railfail536"
+ ]
+ },
+ "gadgets-desc": "Pozwala użytkownikom wybrać [[Special:Gadgets|gadżety CSS i JavaScript]] na [[Special:Preferences#mw-prefsection-gadgets|stronie preferencji]]",
+ "prefs-gadgets": "Gadżety",
+ "gadgets-prefstext": "Poniżej znajduje się lista specjalnych gadżetów, które możesz włączyć dla swojego konta użytkownika.\nGadżety najczęściej wykorzystują JavaScript, więc by działały, musisz mieć w swojej przeglądarce włączoną obsługę JavaScriptu.\nGadżety nie mają wpływu na tę stronę preferencji.\n\nGadżety nie są częścią oprogramowania MediaWiki i najprawdopodobniej zostały stworzone przez użytkowników tej wiki.\nLokalni administratorzy mogą edytować [[MediaWiki:Gadgets-definition|definicje]] oraz [[Special:Gadgets|opisy]] dostępnych gadżetów. Wykaz liczb użytkowników korzystających z każdego gadżetu sporządzono na stronie [[Special:GadgetUsage|Statystyk użycia gadżetów]].",
+ "gadgets": "Gadżety",
+ "gadgetusage": "Statystyki użycia gadżetów",
+ "gadgetusage-gadget": "Gadżet",
+ "gadgetusage-usercount": "Liczba użytkowników",
+ "gadgetusage-noresults": "Nie znaleziono gadżetów.",
+ "gadgetusage-intro": "Ten wykaz przedstawia liczbę użytkowników, którzy aktywowali poszczególne gadżety w tej wiki. Użytkownik aktywny to taki, który wykonał edycję w ciągu {{PLURAL:$1|ostatniego dnia|ostatnich $1 dni}}. Lista nie zawiera statystyk gadżetów aktywowanych domyślnie dla wszystkich i może uwzględniać gadżety, które już nie są dostępne.",
+ "gadgetusage-intro-noactive": "Ten wykaz przedstawia liczbę użytkowników, którzy aktywowali poszczególne gadżety w tej wiki. Ta lista nie zawiera statystyk gadżetów włączonych domyślnie dla każdego oraz może zawierać gadżety, które nie są już dłużej dostępne.",
+ "gadgetusage-activeusers": "Użytkownicy aktywni",
+ "gadgetusage-default": "Domyślny",
+ "gadgets-title": "Gadżety",
+ "gadgets-pagetext": "Poniżej znajduje się lista specjalnych gadżetów, które użytkownicy mogą włączyć na swojej [[Special:Preferences#mw-prefsection-gadgets|stronie preferencji]]. Lista ta jest zdefiniowana na stronie [[MediaWiki:Gadgets-definition|definicji]].\nPoniższy przegląd ułatwia dostęp do komunikatów systemu, które definiują opis i kod każdego z gadżetów.",
+ "gadgets-uses": "Używa",
+ "gadgets-required-rights": "Wymaga {{PLURAL:$2|uprawnienia|następujących uprawnień:}}\n\n$1",
+ "gadgets-required-skins": "Działa wyłącznie ze {{PLURAL:$2|skórką $1|skórkami: $1}}.",
+ "gadgets-default": "Domyślnie włączone dla wszystkich.",
+ "gadgets-legacy": "Gadżet nie został załadowany. Proszę dokonać migracji do ResourceLoadera. ([https://www.mediawiki.org/wiki/ResourceLoader/Migration_guide_(users) Dowiedz się więcej])",
+ "gadgets-export": "Eksportuj",
+ "gadgets-export-title": "Eksportowanie gadżetów",
+ "gadgets-not-found": "Nie odnaleziono gadżetu „$1”.",
+ "gadgets-export-text": "Jeśli chcesz wyeksportować gadżet „$1” kliknij na przycisk „{{int:gadgets-export-download}}”, zapisz pobrany plik, wejdź na stronę „Special:Import” w docelowej wiki i prześlij go. Następnie dodaj poniższy kod do strony MediaWiki:Gadgets-definition:\n<pre>$2</pre>\nMusisz mieć właściwe uprawnienia na wiki docelowej (w tym do edycji komunikatów systemowych) oraz musi być włączony import na serwer poprzez przesłanie pliku.",
+ "gadgets-export-download": "Pobierz",
+ "gadgets-validate-notset": "Właściwość <code>$1</code> nie jest ustawiona.",
+ "gadgets-validate-wrongtype": "Właściwość <code>$1</code> musi być typem <code>$2</code> zamiast <code>$3</code>.",
+ "apihelp-query+gadgetcategories-description": "Zwraca listę kategorii gadżetów.",
+ "apihelp-query+gadgetcategories-summary": "Zwraca listę kategorii gadżetów.",
+ "apihelp-query+gadgetcategories-param-prop": "Jakie informacje o kategorii gadżetów pobrać:\n;name:Wewnętrzna nazwa kategorii.\n;title:Tytuł kategorii.\n;members:Liczba gadżetów w kategorii.",
+ "apihelp-query+gadgetcategories-param-names": "Nazwy kategorii do pobrania.",
+ "apihelp-query+gadgetcategories-example-1": "Pobierz listę istniejących kategorii gadżetów",
+ "apihelp-query+gadgetcategories-example-2": "Pobierz wszystkie informacje na temat kategorii o nazwach „foo” i „bar”",
+ "apihelp-query+gadgets-description": "Zwraca listę gadżetów używanych na tej wiki.",
+ "apihelp-query+gadgets-summary": "Zwraca listę gadżetów używanych na tej wiki.",
+ "apihelp-query+gadgets-param-prop": "Jakie informacje o gadżetach pobrać:\n;id:Wewnętrzny ID gadżetu.\n;metadata:Metadane gadżetu.\n;desc:Opis gadżetu przekształcony na HTML (może być powolne, użyj tylko jeśli naprawdę potrzeba).",
+ "apihelp-query+gadgets-param-categories": "Z jakiej kategorii mają być pobrane informacje o gadżetach.",
+ "apihelp-query+gadgets-param-ids": "Identyfikatory gadżetów do pobrania.",
+ "apihelp-query+gadgets-param-allowedonly": "Wymień tylko gadżety dozwolonych dla bieżącego użytkownika.",
+ "apihelp-query+gadgets-param-enabledonly": "Wymień tylko gadżety włączone przez bieżącego użytkownika.",
+ "apihelp-query+gadgets-example-1": "Pobierz listę gadżetów wraz z ich opisami",
+ "apihelp-query+gadgets-example-2": "Pobierz listę gadżetów z wszelkimi możliwymi właściwościami",
+ "apihelp-query+gadgets-example-3": "Pobierz listę gadżetów należących do kategorii „foo”",
+ "apihelp-query+gadgets-example-4": "Pobierz informacje o gadżetach „foo” i „bar”",
+ "apihelp-query+gadgets-example-5": "Pobierz listę gadżetów włączonych przez bieżącego użytkownika",
+ "right-gadgets-edit": "Edycja gadżetów JavaScript oraz stron CSS",
+ "action-gadgets-edit": "edytowania tego gadżetu JavaScript lub strony CSS",
+ "right-gadgets-definition-edit": "Edycja definicji gadżetów",
+ "action-gadgets-definition-edit": "edytowania tej definicji gadżetu"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/pms.json b/www/wiki/extensions/Gadgets/i18n/pms.json
new file mode 100644
index 00000000..500be790
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/pms.json
@@ -0,0 +1,34 @@
+{
+ "@metadata": {
+ "authors": [
+ "Borichèt",
+ "Bèrto 'd Sèra",
+ "Dragonòt"
+ ]
+ },
+ "gadgets-desc": "A lassa che j'utent a selession-o dij [[Special:Gadgets|component CSS e JavaScript]] ant ij [[Special:Preferences#mw-prefsection-gadgets|sò gust]]",
+ "prefs-gadgets": "Component",
+ "gadgets-prefstext": "Ambelessì sota a-i é na lista ëd component ch'a peul vischesse ant sò cont personal.\nSti component-sì a son dzortut basà ansima a JavaScript, donca a venta anans tut che JavaScript a sia avisch ant sò navigator, s'a veul che ij component a travajo.\nCh'a ten-a present che sti component a l'han gnun efet ansima a la pàgina dij \"sò gust\".\n\nCh'a nòta ëdcò che a son nen part dël programa MediaWiki e che për sòlit a resto dësvlupà e mantnù da dj'utent dla wiki andova chiel/chila as treuva adess.\nJ'aministrator locaj a peulo regolé ij component disponibij ën dovrand le pàgine [[MediaWiki:Gadgets-definition|definission dij component]] e [[Special:Gadgets|component]].",
+ "gadgets": "Component",
+ "gadgets-title": "Component",
+ "gadgets-pagetext": "Ambelessì-sota a-i é na lista ëd component speciaj che j'utent a peulo butesse avisch ant ij [[Special:Preferences#mw-prefsection-gadgets|sò gust]], conforma a la [[MediaWiki:Gadgets-definition|definission dij component]].\nSta lista complessiva a smon na stra còmoda për rivé a le pàgine ëd messagi ëd sistema ch'a definisso descrission e còdes ëd minca component.",
+ "gadgets-uses": "a dòvra",
+ "gadgets-required-rights": "A ciama {{PLURAL:$1|ël drit|ij drit}} sì-dapress:\n\n$2",
+ "gadgets-required-skins": "Disponìbil an {{PLURAL:$2|$1 sla pel|sle pej sì-dapress: $1}}.",
+ "gadgets-default": "Abilità për tuti coma stàndard",
+ "gadgets-export": "Esporté",
+ "gadgets-export-title": "Esportassion d'acessòri",
+ "gadgets-not-found": "Acessòri \"$1\" pa trovà.",
+ "gadgets-export-text": "Për esporté l'acessòri $1, sgnaché an sël boton \"{{int:gadgets-export-download}}\", salvé l'archivi dëscarià, andé a Special:Import an sla wiki ëd destinassion e carielo. Peui gionté lòn ch'a-i é sì-sota a la pàgina MediaWiki:Gadgets-definition:\n<pre>$2</pre>\nA-i é da manca d'avèj ij përmess aproprià an sla wiki ëd destinassion (comprèis ij drit për modifiché ij mëssagi ëd sistema) e l'amportassion da archivi carià a dev esse abilità.",
+ "gadgets-export-download": "Dëscaria",
+ "apihelp-query+gadgetcategories-description": "A smon na lista ëd categorìe d'acessòri.",
+ "apihelp-query+gadgetcategories-param-prop": "Che anformassion an sla categorìa d'acessòri oten-e:\n;name:Nòm ëd la categorìa anterna.\n;title:Tìtol ëd la categorìa.\n;members:Nùmer d'acessòri ant la categorìa.",
+ "apihelp-query+gadgetcategories-param-names": "Nùmer ëd categorìe da oten-e.",
+ "apihelp-query+gadgetcategories-example-1": "Oten-e na lista dle categorìe d'acessòri esistente",
+ "apihelp-query+gadgetcategories-example-2": "Oten-e tute j'anformassion an sle categorìe ciamà «foo» e «bar»",
+ "apihelp-query+gadgets-description": "A smon na lista d'acessòri dovrà su costa wiki.",
+ "apihelp-query+gadgets-param-prop": "Che anformassion an sj'acessòri oten-e:\n;id:Identificativ antern dl'acessòri.\n;metadata:Ij metadàit dl'acessòri.\n;desc:Descrissio dl'acessòri trasformà an HTML (a peul esse lent, dovré mach s'a-i na j'é pròpi damanca).",
+ "apihelp-query+gadgets-param-categories": "Da che categorìe ciapé j'acessòri.",
+ "apihelp-query+gadgets-param-ids": "Identificativ dj'acessòri da ciapé.",
+ "apihelp-query+gadgets-param-allowedonly": "Listé mach j'acessòri consentì a l'utent atual."
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/pnb.json b/www/wiki/extensions/Gadgets/i18n/pnb.json
new file mode 100644
index 00000000..7bf88e6e
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/pnb.json
@@ -0,0 +1,21 @@
+{
+ "@metadata": {
+ "authors": [
+ "Khalid Mahmood"
+ ]
+ },
+ "gadgets-desc": "ورتن والیاں نوں کسٹم [[Special:Gadgets|CSS and JavaScript gadgets]] چنن دیو اپنیاں [[Special:Preferences#mw-prefsection-gadgets|تانگاں]] چ",
+ "prefs-gadgets": "گیجٹ",
+ "gadgets-prefstext": "تھلے خاص گیجٹ دی لسٹ اے جینون تسیں اپنے کھاتے ج چلاسکدے او۔\nایہ گیجٹ جاواسکرپٹ تے چلدے نیں، ایس لئی جاواسکرپٹ تواڈے چ چلنا چائیدا اے اوناں نوں چلان لئی۔\nایہ گل یاد رکھنا جے ایناں گیجٹ دا اثر ایس تانگ صفے تے نئیں ہوندا۔\n\nایہ وی گل یاد رکھنا جے ایہ خاص گیجٹ میڈیاوکی سوفٹوئیر دا انگ نئیں، تے ایہ بناۓ جاندے نیں یا ورتن والے رکھدے نیں اپنے لوکل وکی تے۔\nمکھۓ تبدیل کرسکدے نیں [[MediaWiki:Gadgets-definition|definitions]] تے [[Special:Gadgets|descriptions]] اپنے کول ہیگے گیجٹاں چ۔",
+ "gadgets": "گیجٹ",
+ "gadgets-title": "گیجٹ",
+ "gadgets-pagetext": "تھلے خاص گیجٹاں دی اک لسٹ جینوں ورتن والے اپنے [[Special:Preferences#mw-prefsection-gadgets|تانگاں والا صفہ]] ، جیویں کے [[MediaWiki:Gadgets-definition|ڈیفینیشن]] چ دسیا گیا اے۔\nایہ وکھالہ اسان راہ پربندھ سنیعہ دا راہ دسدا اے جیدے چ ہر گیجٹ دا کم کاج تے کوڈ دتا گیا اے۔",
+ "gadgets-uses": "ورتن آلے",
+ "gadgets-required-rights": "{{PLURAL:$2|$1 حق|تھلے دتے گۓ حق: $1}} دی لوڑ اے۔",
+ "gadgets-default": "ہر اک لئی ڈیفالٹ راہیں قابل کیتا گیا۔",
+ "gadgets-export": "برامد کرو",
+ "gadgets-export-title": "گیجٹ برامد کرو",
+ "gadgets-not-found": "\"$1\" گیجٹ نئیں لبیا",
+ "gadgets-export-text": "$1 گیجٹ نوں اگے پیجن لئی \"{{int:gadgets-export-download}}\" بٹن تے کلک کرو، کاپی کیتیاں فاغلاں نوں بچاؤ،\nSpecial:Import تے جاؤ وکی تے ، چرھاؤ اینوں۔ فیر تھلے دتے گۓ نوں MediaWiki:Gadgets-definition page گۓ نوں جوڑو: <pre>$2</pre>\nتواڈے کول لازمی اجازت ہونی چائیدی وکی تے (پربندھ سنیعے نوں تبدیل کرن دا) تے لیاندے ہوۓ چڑھائیاں فائلاں نوں قابل کیتے۔",
+ "gadgets-export-download": "ڈاؤنلوڈ"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/ps.json b/www/wiki/extensions/Gadgets/i18n/ps.json
new file mode 100644
index 00000000..579cb1b9
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/ps.json
@@ -0,0 +1,22 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ahmed-Najib-Biabani-Ibrahimkhel"
+ ]
+ },
+ "prefs-gadgets": "گاډجېټ",
+ "gadgets-prefstext": "دلته لاندې د ځانگړو گاډجېټونو (هوښيارتوکي) يو لړليک دی چې تاسې يې خپل گڼون لپاره چارنولی شی.\nدا گاډجېټونه د جاواسکرېپټ پر بنسټ جوړ شوي، نو د دې لپاره چې همدا گاډجېټونه سم کار وکړي نو ستاسې د کتنمل جاواسکرېپټ بايد چارند وي.\nپه پام کې مو اوسه چې دا گاډجېټونه به په همدې غوره توبونو هېڅ اغېزه و نه لري.\n\nدا هم په پام کې ونيسئ چې دا ځانگړي گاډجېټونه د مېډياويکي د ساوترۍ برخه نه ده او دا اکثراً ستاسې د سيمه ايزې ويکي کارنانو لخوا پرمخ بېول کېږي.\n\nسيمه ايز پازوالان کولی شي د شته گاډجېټونو [[MediaWiki:Gadgets-definition|پېژندنې]] او [[Special:Gadgets|څرگندونې]] سمې کړي.",
+ "gadgets": "گاډجېټ",
+ "gadgetusage": "د گاجېټ کارېدنې شمار",
+ "gadgetusage-gadget": "گاډجېټ",
+ "gadgetusage-usercount": "د کارنانو شمېر",
+ "gadgetusage-noresults": "گاډجېټونه و نه موندل شول.",
+ "gadgetusage-intro": "دا لښتيال په همدغه ويکي باندې د هغو کارنانو شمېر ښکاره کوي چې بېلابېل گاډجېټونه يې ځانته چارن کړي. کېدای شي په دې لړليک کې هغه گاډجېټونه هم وي چې لا تر اوسه پورې نه وي.",
+ "gadgetusage-activeusers": "فعاله کارنان",
+ "gadgetusage-default": "تلواليز",
+ "gadgets-title": "گاډجېټ",
+ "gadgets-uses": "کارونې",
+ "gadgets-export": "صادرول",
+ "gadgets-not-found": "د \"$1\" گاډجېټ و نه موندل شو.",
+ "gadgets-export-download": "ښکته کول"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/pt-br.json b/www/wiki/extensions/Gadgets/i18n/pt-br.json
new file mode 100644
index 00000000..be47a0ba
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/pt-br.json
@@ -0,0 +1,66 @@
+{
+ "@metadata": {
+ "authors": [
+ "Eduardo.mps",
+ "Giro720",
+ "GoEThe",
+ "Helder.wiki",
+ "Rafael Vargas",
+ "555",
+ "He7d3r",
+ "Teles",
+ "Almondega",
+ "Eduardo Addad de Oliveira",
+ "Hamilton Abreu",
+ "Felipe L. Ewald"
+ ]
+ },
+ "gadgets-desc": "Permite que os usuários selecionem [[Special:Gadgets|\"gadgets\" JavaScript e CSS]] personalizados nas suas [[Special:Preferences#mw-prefsection-gadgets|preferências]]",
+ "prefs-gadgets": "Gadgets",
+ "gadgets-prefstext": "Segue-se uma lista de \"gadgets\" que podem ser ativados em sua conta.\nTais gadgets normalmente são baseados em JavaScript, o que faz com que seja necessário que o suporte a JavaScript esteja ativado em seu navegador para que eles funcionem.\nNote que os gadgets não possuem efeito nesta página de preferências.\n\nRepare também que tais gadgets não são parte do software MediaWiki, geralmente sendo desenvolvidos e mantidos por usuários da sua wiki local.\nAdministradores locais podem editar os gadgets disponíveis através de [[MediaWiki:Gadgets-definition|definições]] e [[Special:Gadgets|descrições]] de gadgets disponíveis. O número de usuários para cada gadget nesta wiki está listado em [[Special:GadgetUsage|estatísticas de uso de gadgets]].",
+ "gadgets": "Gadgets",
+ "gadgetusage": "Estatísticas de uso de gadgets",
+ "gadgetusage-gadget": "Gadgets",
+ "gadgetusage-usercount": "Número de usuários",
+ "gadgetusage-noresults": "Nenhum gadget encontrado.",
+ "gadgetusage-intro": "Esta tabela indica o número de usuários que habilitaram cada gadget nesta wiki. Um usuário ativo é contado como alguém que fez uma edição {{PLURAL:$1|no último dia|nos últimos $1 dias}}. Esta lista exclui as estatísticas de gadgets habilitadas para todos por padrão e podem incluir gadgets que não estão mais disponíveis.",
+ "gadgetusage-intro-noactive": "Esta tabela indica o número de usuários que ativaram cada gadget nesta wiki. Esta lista exclui estatísticas para gadgets ativados para todos por padrão e pode incluir gadgets que não estão mais disponíveis.",
+ "gadgetusage-activeusers": "Usuários ativos",
+ "gadgetusage-default": "Padrão",
+ "gadgets-title": "Gadgets",
+ "gadgets-pagetext": "Segue-se uma lista de \"gadgets\" que podem ser ativados pelos usuários através de [[Special:Preferences#mw-prefsection-gadgets|suas páginas de preferências]], definidos em [[MediaWiki:Gadgets-definition|suas definições]].\nEsta lista possibilita um acesso fácil para as mensagens de sistema que definem as descrições e códigos de cada um dos gadgets.",
+ "gadgets-uses": "Usos",
+ "gadgets-required-rights": "Requer {{PLURAL:$2|o seguinte privilégio|os seguintes privilégios}}:\n\n$1",
+ "gadgets-required-skins": "Disponível {{PLURAL:$2|no skin $1|nos seguintes skins: $1}}.",
+ "gadgets-default": "Ativado para todos por padrão.",
+ "gadgets-legacy": "O gadget não está carregado. Por favor, migre para ResourceLoader. ([https://www.mediawiki.org/wiki/ResourceLoader/Migration_guide_(users) Mais informacões])",
+ "gadgets-export": "Exportar",
+ "gadgets-export-title": "Exportar gadgets",
+ "gadgets-not-found": "O gadget \"$1\" não encontrado.",
+ "gadgets-export-text": "Para exportar o gadget $1, clique no botão \"{{int:gadgets-export-download}}\", salve o arquivo transferido,\nvá à página Special:Import no wiki de destino e faça o upload do arquivo. Depois, adicione o seguinte à página MediaWiki:Gadgets-definition:\n<pre>$2</pre>\nÉ necessário que você tenha, no wiki de destino, as permissões necessárias (incluindo o privilégio de editar mensagens de sistema) e a importação por upload de arquivos deve estar ativada.",
+ "gadgets-export-download": "Baixar",
+ "gadgets-validate-notset": "A propriedade <code>$1</code> não está definida.",
+ "gadgets-validate-wrongtype": "A propriedade <code>$1</code> deve ser do tipo <code>$2</code> ao invés de <code>$3</code>.",
+ "apihelp-query+gadgetcategories-description": "Retorna uma lista de categorias de gadgets.",
+ "apihelp-query+gadgetcategories-summary": "Retorna uma lista de categorias de gadgets.",
+ "apihelp-query+gadgetcategories-param-prop": "Que informação de categoria obter:\n;name:Nome interno da categoria.\n;title:Título da categoria.\n;members:Número de gadgets na categoria.",
+ "apihelp-query+gadgetcategories-param-names": "Nomes de categorias a consultar.",
+ "apihelp-query+gadgetcategories-example-1": "Obter unha lista de categorías de gadgets existentes",
+ "apihelp-query+gadgetcategories-example-2": "Obter toda a informação sobre categorias nomeadas \"foo\" e \"bar\"",
+ "apihelp-query+gadgets-description": "Retornar uma lista de gadgets usados nesta wiki.",
+ "apihelp-query+gadgets-summary": "Retornar uma lista de gadgets usados nesta wiki.",
+ "apihelp-query+gadgets-param-prop": "Que informação obter do gadget:\n;id:Identificador interno de gadget.\n;metadata:Metadatos do gadget.\n;desc:Descrição do gadget transformada em HTML (pode ser lenta, usar só se for realmente necessária).",
+ "apihelp-query+gadgets-param-categories": "De que categorias consultar os gadgets.",
+ "apihelp-query+gadgets-param-ids": "Identificadores dos gadgets a consultar.",
+ "apihelp-query+gadgets-param-allowedonly": "Listar só os gadgets permitidos para o usuário atual.",
+ "apihelp-query+gadgets-param-enabledonly": "Listar só os gadgets habilitados pelo usuário atual.",
+ "apihelp-query+gadgets-example-1": "Obter uma lista de gadgets junto com suas descrições",
+ "apihelp-query+gadgets-example-2": "Obter uma lista de gadgets com todas as propriedades possíveis",
+ "apihelp-query+gadgets-example-3": "Obter uma lista de gadgets pertencentes a categoria \"foo\"",
+ "apihelp-query+gadgets-example-4": "Obter informação sobre gadgets \"foo\" e \"bar\"",
+ "apihelp-query+gadgets-example-5": "Obter uma lista de gadgets habilitados pelo usuário atual",
+ "right-gadgets-edit": "Editar as páginas de JavaScript e CSS dos gadgets",
+ "action-gadgets-edit": "editar a página de JavaScript ou CSS deste gadget",
+ "right-gadgets-definition-edit": "Editar as definições dos gadgets",
+ "action-gadgets-definition-edit": "editar a definição deste gadget"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/pt.json b/www/wiki/extensions/Gadgets/i18n/pt.json
new file mode 100644
index 00000000..e6d08f75
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/pt.json
@@ -0,0 +1,62 @@
+{
+ "@metadata": {
+ "authors": [
+ "Hamilton Abreu",
+ "Helder.wiki",
+ "Luckas",
+ "Malafaya",
+ "555",
+ "He7d3r",
+ "Fúlvio",
+ "Vitorvicentevalente"
+ ]
+ },
+ "gadgets-desc": "Permite que os utilizadores selecionem [[Special:Gadgets|''gadgets'' em JavaScript e CSS]] personalizados nas suas [[Special:Preferences#mw-prefsection-gadgets|preferências]]",
+ "prefs-gadgets": "Gadgets",
+ "gadgets-prefstext": "Segue-se uma lista de ''gadgets'' especiais que pode ativar na sua conta.\nEstes ''gadgets'' são baseados principalmente em JavaScript, sendo necessário ativar o suporte a JavaScript no seu navegador para que funcionem.\nNote que não terão efeito nesta página de preferências.\n\nNote também que estes ''gadgets'' especiais não fazem parte do programa MediaWiki, sendo geralmente desenvolvidos e mantidos por utilizadores na sua wiki local.\nAdministradores locais podem editar os ''gadgets'' disponíveis usando as [[MediaWiki:Gadgets-definition|definições]] e [[Special:Gadgets|descrições]]. O número de utilizadores para cada ''gadget'' nesta wiki está listado nas [[Special:GadgetUsage|estatísticas de utilização de ''gadgets'']].",
+ "gadgets": "Gadgets",
+ "gadgetusage": "Estatísticas da utilização de gadgets",
+ "gadgetusage-gadget": "Gadget",
+ "gadgetusage-usercount": "Número de utilizadores",
+ "gadgetusage-noresults": "Não foram encontrados ''gadgets''.",
+ "gadgetusage-intro": "Esta tabela indica o número de utilizadores que ativaram cada ''gadget'' nesta wiki. Um utilizador ativo é aquele que realizou uma edição {{PLURAL:$1|no último dia|nos últimos $1 dias}}. Esta lista não inclui estatísticas de ''gadgets'' ativados para todos por padrão, e poderá listar ''gadgets'' que já não estão disponíveis.",
+ "gadgetusage-intro-noactive": "Esta tabela indica o número de utilizadores que ativaram cada ''gadget'' nesta wiki. Exclui estatísticas de ''gadgets'' ativados por padrão e pode incluir ''gadgets'' que já não estão disponíveis.",
+ "gadgetusage-activeusers": "Utilizadores ativos",
+ "gadgetusage-default": "Padrão",
+ "gadgets-title": "Gadgets",
+ "gadgets-pagetext": "Segue-se uma lista de ''gadgets'' que podem ser ativados pelos utilizadores nas suas [[Special:Preferences#mw-prefsection-gadgets|preferências]], como estabelecido pelas [[MediaWiki:Gadgets-definition|definições]].\nEste resumo proporciona acesso fácil às páginas das mensagens de sistema que definem a descrição e o código de cada ''gadget''.",
+ "gadgets-uses": "Utiliza",
+ "gadgets-required-rights": "Requer {{PLURAL:$2|o seguinte privilégio|os seguintes privilégios}}:\n\n$1",
+ "gadgets-required-skins": "Disponível {{PLURAL:$2|no tema $1|nos seguintes temas: $1}}",
+ "gadgets-default": "Ativado para todos por padrão.",
+ "gadgets-legacy": "O ''gadget'' não foi carregado. Por favor, migre para o ResourceLoader. ([https://www.mediawiki.org/wiki/ResourceLoader/Migration_guide_(users) Saiba mais])",
+ "gadgets-export": "Exportar",
+ "gadgets-export-title": "Exportação de ''gadgets''",
+ "gadgets-not-found": "O ''gadget'' \"$1\" não foi encontrado.",
+ "gadgets-export-text": "Para exportar o ''gadget'' $1, clique o botão \"{{int:gadgets-export-download}}\", grave o ficheiro transferido,\nvá à página Special:Import na wiki de destino e faça o upload do ficheiro. Depois adicione o seguinte à página MediaWiki:Gadgets-definition:\n<pre>$2</pre>\nNa wiki de destino tem de ter as permissões necessárias (incluindo o privilégio de editar mensagens de sistema) e têm de ser permitidas importações por upload de ficheiros.",
+ "gadgets-export-download": "Download",
+ "gadgets-validate-notset": "A propriedade <code>$1</code> não está definida.",
+ "gadgets-validate-wrongtype": "A propriedade <code>$1</code> tem de ter o tipo <code>$2</code> em vez de <code>$3</code>.",
+ "apihelp-query+gadgetcategories-description": "Devolve uma lista de categorias de ''gadgets''.",
+ "apihelp-query+gadgetcategories-summary": "Devolve uma lista de categorias de ''gadgets''.",
+ "apihelp-query+gadgetcategories-param-prop": "A informação de categorias de ''gadget'' a obter:\n;name:Nome interno da categoria.\n;title:Título da categoria.\n;members:Número de ''gadgets'' na categoria.",
+ "apihelp-query+gadgetcategories-param-names": "Nomes das categorias a obter.",
+ "apihelp-query+gadgetcategories-example-1": "Obter uma lista das categorias de ''gadgets'' existentes",
+ "apihelp-query+gadgetcategories-example-2": "Obter todas as informações sobre as categorias de nome \"foo\" e \"bar\"",
+ "apihelp-query+gadgets-description": "Devolve uma lista dos ''gadgets'' usados nesta wiki.",
+ "apihelp-query+gadgets-summary": "Devolve uma lista dos ''gadgets'' usados nesta wiki.",
+ "apihelp-query+gadgets-param-prop": "As informações do ''gadget'' a obter:\n;id:Identificador interno do ''gadget''.\n;metadata:Os metadados do ''gadget''.\n;desc:Descrição do ''gadget'' transformada em HTML (pode ser lento, usar só se absolutamente necessário).",
+ "apihelp-query+gadgets-param-categories": "Categorias dos ''gadgets'' a obter.",
+ "apihelp-query+gadgets-param-ids": "Identificadores dos ''gadgets'' a obter.",
+ "apihelp-query+gadgets-param-allowedonly": "Listar só os ''gadgets'' permitidos para o utilizador atual.",
+ "apihelp-query+gadgets-param-enabledonly": "Listar só os ''gadgets'' ativados pelo utilizador atual.",
+ "apihelp-query+gadgets-example-1": "Obter uma lista de ''gadgets'' e as suas descrições",
+ "apihelp-query+gadgets-example-2": "Obter uma lista de ''gadgets'' com todas as propriedades possíveis",
+ "apihelp-query+gadgets-example-3": "Obter uma lista de ''gadgets'' que pertencem à categoria \"foo\"",
+ "apihelp-query+gadgets-example-4": "Obter informações sobre os ''gadgets'' \"foo\" e \"bar\"",
+ "apihelp-query+gadgets-example-5": "Obter uma lista dos ''gadgets'' ativados pelo utilizador atual",
+ "right-gadgets-edit": "Editar páginas JavaScript e CSS de ''gadgets''",
+ "action-gadgets-edit": "editar a página JavaScript ou CSS deste ''gadget''",
+ "right-gadgets-definition-edit": "Editar definições de ''gadgets''",
+ "action-gadgets-definition-edit": "editar esta definição do ''gadget''"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/qqq.json b/www/wiki/extensions/Gadgets/i18n/qqq.json
new file mode 100644
index 00000000..d86a2e90
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/qqq.json
@@ -0,0 +1,68 @@
+{
+ "@metadata": {
+ "authors": [
+ "EugeneZelenko",
+ "Jon Harald Søby",
+ "Kghbln",
+ "Lloffiwr",
+ "Mormegil",
+ "Purodha",
+ "SPQRobin",
+ "Shirayuki",
+ "Siebrand",
+ "The Evil IP address",
+ "Umherirrender",
+ "Liuxinyu970226",
+ "Robby"
+ ]
+ },
+ "gadgets-desc": "{{desc|name=Gadgets|url=https://www.mediawiki.org/wiki/Extension:Gadgets}}",
+ "prefs-gadgets": "In Gadgets extension. The name of a tab in [[Special:Preferences#mw-prefsection-gadgets|Special:Preferences]] where user set their preferences for the extension.\n\n{{Identical|Gadgets}}",
+ "gadgets-prefstext": "In Gadgets extension. This is the explanation text displayed under the Gadgets tab in [[Special:Preferences#mw-prefsection-gadgets|Special:Preferences]].",
+ "gadgets": "{{doc-special|Gadgets}}\n{{Identical|Gadgets}}",
+ "gadgetusage": "{{doc-special|Gadget usage statistics}}",
+ "gadgetusage-gadget": "Table column header on [[Special:GadgetUsage]]\n{{Identical|Gadget}}",
+ "gadgetusage-usercount": "Table column header on [[Special:GadgetUsage]]",
+ "gadgetusage-noresults": "Message shown to user when no gadgets found installed on the wiki. Used on [[Special:GadgetUsage]]",
+ "gadgetusage-intro": "Intro text on [[Special:GadgetUsage]] Parameter:\n* $1 - the number of days to consider for defining a user as active",
+ "gadgetusage-intro-noactive": "Intro text on [[Special:GadgetUsage]]",
+ "gadgetusage-activeusers": "Table column header for active users using a gadget",
+ "gadgetusage-default": "Message to indicate the gadget is default and actual stats are not available\n{{Identical|Default}}",
+ "gadgets-definition": "{{notranslate}}",
+ "gadgets-title": "{{Identical|Gadgets}}",
+ "gadgets-pagetext": "Used as intro text in [[Special:Gadgets]].",
+ "gadgets-uses": "This is used as a verb in third-person singular. It appears in front of a script name. Example: \"''Uses: Gadget-UTCLiveClock.js''\"\n\nSee [[meta:Special:Gadgets|Gadgets page in meta.wikimedia.org]]\n{{Identical|Use}}",
+ "gadgets-required-rights": "Parameters:\n* $1 - a list in wikitext.\n* $2 - the number of items in list $1 for PLURAL use.",
+ "gadgets-required-skins": "Parameters:\n* $1 - a comma separated list.\n* $2 - the number of items in list $1 for PLURAL use.",
+ "gadgets-default": "Used in [[Special:Gadgets]], if the extension is enabled for everyone by the Wiki's default settings.",
+ "gadgets-legacy": "Used on [[Special:Gadgets]], if the extension contains legacy scripts and doesn't use ResourceLoader yet.",
+ "gadgets-export": "Used on [[Special:Gadgets]]. This is a verb, not noun.\n{{Identical|Export}}",
+ "gadgets-export-title": "Used as page title. Example: [[Special:Gadgets/export/editbuttons]]",
+ "gadgets-not-found": "Used as error message. Parameters:\n* $1 - gadget name",
+ "gadgets-export-text": "Used as page description in [[Special:Gadgets]].\n\nRefers to {{msg-mw|Gadgets-export-download}}.\n\nSee example: [[Special:Gadgets/export/editbuttons]]\n\nFollowed by the \"Export\" form.\n\nParameters:\n* $1 - gadget name\n* $2 - gadget definition (code)",
+ "gadgets-export-download": "Use the verb for this message. Submit button.\n{{Identical|Download}}",
+ "gadgets-validate-notset": "Error message shown if a a required property is not set. $1 is the name of the property, e.g. settings.rights .",
+ "gadgets-validate-wrongtype": "Error message shown if a property is set to the wrong type. * $1 is the name of the property, e.g. settings.rights or module.messages[3].\n* $2 is the type that this property is expected to have\n* $3 is the type it actually had",
+ "apihelp-query+gadgetcategories-description": "{{doc-apihelp-description|query+gadgetcategories}}",
+ "apihelp-query+gadgetcategories-summary": "{{doc-apihelp-summary|query+gadgetcategories}}",
+ "apihelp-query+gadgetcategories-param-prop": "{{doc-apihelp-param|query+gadgetcategories|prop}}",
+ "apihelp-query+gadgetcategories-param-names": "{{doc-apihelp-param|query+gadgetcategories|names}}",
+ "apihelp-query+gadgetcategories-example-1": "{{doc-apihelp-example|query+gadgetcategories}}",
+ "apihelp-query+gadgetcategories-example-2": "{{doc-apihelp-example|query+gadgetcategories}}",
+ "apihelp-query+gadgets-description": "{{doc-apihelp-description|query+gadgets}}",
+ "apihelp-query+gadgets-summary": "{{doc-apihelp-summary|query+gadgets}}",
+ "apihelp-query+gadgets-param-prop": "{{doc-apihelp-param|query+gadgets|prop}}",
+ "apihelp-query+gadgets-param-categories": "{{doc-apihelp-param|query+gadgets|categories}}",
+ "apihelp-query+gadgets-param-ids": "{{doc-apihelp-param|query+gadgets|ids}}",
+ "apihelp-query+gadgets-param-allowedonly": "{{doc-apihelp-param|query+gadgets|allowedonly}}",
+ "apihelp-query+gadgets-param-enabledonly": "{{doc-apihelp-param|query+gadgets|enabledonly}}",
+ "apihelp-query+gadgets-example-1": "{{doc-apihelp-example|query+gadgets}}",
+ "apihelp-query+gadgets-example-2": "{{doc-apihelp-example|query+gadgets}}",
+ "apihelp-query+gadgets-example-3": "{{doc-apihelp-example|query+gadgets}}",
+ "apihelp-query+gadgets-example-4": "{{doc-apihelp-example|query+gadgets}}",
+ "apihelp-query+gadgets-example-5": "{{doc-apihelp-example|query+gadgets}}",
+ "right-gadgets-edit": "{{doc-right|gadgets-edit}}",
+ "action-gadgets-edit": "{{doc-action|gadgets-edit}}",
+ "right-gadgets-definition-edit": "{{doc-right|gadgets-definition-edit}}",
+ "action-gadgets-definition-edit": "{{doc-action|gadgets-definition-edit}}"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/qu.json b/www/wiki/extensions/Gadgets/i18n/qu.json
new file mode 100644
index 00000000..6090541b
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/qu.json
@@ -0,0 +1,10 @@
+{
+ "@metadata": {
+ "authors": [
+ "AlimanRuna"
+ ]
+ },
+ "prefs-gadgets": "Yanapaqchakuna",
+ "gadgets": "Yanapaqchakuna",
+ "gadgets-title": "Yanapaqchakuna"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/ro.json b/www/wiki/extensions/Gadgets/i18n/ro.json
new file mode 100644
index 00000000..01ce9f19
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/ro.json
@@ -0,0 +1,41 @@
+{
+ "@metadata": {
+ "authors": [
+ "Cin",
+ "Firilacroco",
+ "KlaudiuMihaila",
+ "Minisarm",
+ "Stelistcristi",
+ "XXN",
+ "Strainu"
+ ]
+ },
+ "gadgets-desc": "Permite utilizatorilor să își aleagă [[Special:Gadgets|gadgeturi CSS și JavaScript]] în [[Special:Preferences#mw-prefsection-gadgets|preferințele]] lor",
+ "prefs-gadgets": "Gadgeturi",
+ "gadgets": "Gadgeturi",
+ "gadgetusage": "Statistici de utilizare a gadgeturilor",
+ "gadgetusage-gadget": "Gadget",
+ "gadgetusage-usercount": "Număr de utilizatori",
+ "gadgetusage-noresults": "Niciun gadget găsit.",
+ "gadgetusage-activeusers": "Utilizatori activi",
+ "gadgetusage-default": "Implicit",
+ "gadgets-title": "Gadgeturi",
+ "gadgets-uses": "Utilizări",
+ "gadgets-required-rights": "Necesită {{PLURAL:$2|următorul drept|următoarele drepturi}}:\n\n$1",
+ "gadgets-required-skins": "Disponibil pe {{PLURAL:$2|tema $1|următoarele teme: $1}}.",
+ "gadgets-default": "Activat pentru toată lumea în mod implicit.",
+ "gadgets-export": "Exportă",
+ "gadgets-export-title": "Exportul de gadgeturi",
+ "gadgets-not-found": "Gadgetul „$1” nu a fost găsit.",
+ "gadgets-export-download": "Descarcă",
+ "apihelp-query+gadgetcategories-description": "Întoarce o listă de categorii pentru gadgeturi.",
+ "apihelp-query+gadgetcategories-summary": "Întoarce o listă de categorii pentru gadgeturi.",
+ "apihelp-query+gadgetcategories-param-names": "Numele categoriilor de obținut.",
+ "apihelp-query+gadgetcategories-example-1": "Obține o listă a categoriilor de gadgeturi existente",
+ "apihelp-query+gadgets-description": "Întoarce o listă a tuturor gadgeturilor folosite pe acest wiki.",
+ "apihelp-query+gadgets-summary": "Întoarce o listă a tuturor gadgeturilor folosite pe acest wiki.",
+ "apihelp-query+gadgets-param-allowedonly": "Prezintă doar gadgeturile accesibile utilizatorului curent.",
+ "apihelp-query+gadgets-param-enabledonly": "Prezintă doar gadgeturile activate de utilizatorul curent.",
+ "apihelp-query+gadgets-example-1": "Obține o listă de gadgeturi cu descrierile lor",
+ "apihelp-query+gadgets-example-2": "Obține o listă de gadgeturi cu toate propietățile posibile"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/roa-tara.json b/www/wiki/extensions/Gadgets/i18n/roa-tara.json
new file mode 100644
index 00000000..8bdd5a4b
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/roa-tara.json
@@ -0,0 +1,35 @@
+{
+ "@metadata": {
+ "authors": [
+ "Joetaras"
+ ]
+ },
+ "gadgets-desc": "Lasse scacchià a l'utinde le [[Special:Gadgets|gadget CSS e JavaScript]] personalizzate jndr'à le lore [[Special:Preferences#mw-prefsection-gadgets|preferenze]]",
+ "prefs-gadgets": "Gadget",
+ "gadgets-prefstext": "Sotte stè 'n'elenghe de gadget speciale ca tu abbilità sus a 'u cunde tune.\nSte riale sò assaije basate sus a JavaScript, accussì Javascript addà essere abbilitate jndr'à 'u browser tune pe le fà fatià.\nVide ca ste riale non ge tènene effette sus a sta pàgene de preferenze.\n\nPò vide pure ca ste gadget non ge sonde parte d'u softuee de MediaUicchi e sonde normalmende sviluppate e mandenute da l'utinde d'a Uicchipèdie locale tune.\nLe amministrature locale ponne cangià le gadget disponibbele ausanne le [[MediaWiki:Gadgets-definition|definiziune]] e le [[Special:Gadgets|descriziune]]. Le numere de le utinde pe ogne gadget sus a sta uicchi ste elengate sus a [[Special:GadgetUsage|Statisteche d'ause de le gadget]].",
+ "gadgets": "Gadget",
+ "gadgetusage": "Statisteche sus a l'ause d'u gadget",
+ "gadgetusage-gadget": "Gadget",
+ "gadgetusage-usercount": "Numere de utinde",
+ "gadgetusage-noresults": "Nisciuna gadget acchiate.",
+ "gadgetusage-activeusers": "Utinde attive",
+ "gadgetusage-default": "De base",
+ "gadgets-title": "Gadget",
+ "gadgets-pagetext": "Sotte stè 'n'elenghe de gadget speciale ca l'utinde ponne abbilità sus a lore [[Special:Preferences#mw-prefsection-gadgets|pàgene de le preferenze]], cumme definite da le [[MediaWiki:Gadgets-definition|definiziune]].\nStu riepileghe prevede 'nu facile facile accesse a le pàggene de le messagge d'u sisteme ca definiscene ogne descrizione e codece de le gadget.",
+ "gadgets-uses": "Ause",
+ "gadgets-required-rights": "Richiede {{PLURAL:$2|deritte|deritte}}:\n\n$1",
+ "gadgets-required-skins": "Disponibbele sus a {{PLURAL:$2|$1 'u skin|le seguende skin: $1}}.",
+ "gadgets-default": "Abbilete pe ogneune pe default.",
+ "gadgets-export": "Esporte",
+ "gadgets-export-title": "Esporte 'u gadget",
+ "gadgets-not-found": "Gadget \"$1\" none acchiate.",
+ "gadgets-export-text": "Pe esportà 'u $1 gadget, cazze sus a 'u buttone \"{{int:gadgets-export-download}}\", reggistre 'u file scarecate, veje'a pàgene Special:Import sus 'a Uicchi de destinazione e carechele. Pò aggiunge 'a seguende pàgene MediaWiki:Gadgets-definition:\n<pre>$2</pre>\nTu a ave le permesse appropriate sus 'a Uicchi de destinazione (ingludenne le deritte a cangià le messagge d'u sisteme) e 'a 'mbortazione da file carecate adda essere abbilitate.",
+ "gadgets-export-download": "Scareche",
+ "apihelp-query+gadgetcategories-description": "Tuèrne 'n'elenghe de le categorije de le accessore.",
+ "apihelp-query+gadgetcategories-summary": "Tuèrne 'n'elenghe de le categorije de le accessore.",
+ "apihelp-query+gadgetcategories-example-1": "Pigghie l'elenghe de le categorije de accessore esistende",
+ "apihelp-query+gadgetcategories-example-2": "Pigghie le 'mbormaziune sus a le categorije chiamate \"foo\" e \"bar\"",
+ "apihelp-query+gadgets-description": "Tuèrne 'n'elenghe de accessore ausate sus a sta uicchi.",
+ "apihelp-query+gadgets-summary": "Tuèrne 'n'elenghe de accessore ausate sus a sta uicchi.",
+ "action-gadgets-definition-edit": "cange 'a definizione de l'accessore"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/ru.json b/www/wiki/extensions/Gadgets/i18n/ru.json
new file mode 100644
index 00000000..0754d4d4
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/ru.json
@@ -0,0 +1,67 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ahonc",
+ "Eleferen",
+ "Ignatus",
+ "Illusion",
+ "Kaganer",
+ "MaxSem",
+ "VasilievVV",
+ "Александр Сигачёв",
+ "Okras",
+ "NBS",
+ "Frhdkazan",
+ "Лилиә",
+ "Ping08",
+ "Mailman",
+ "Jack who built the house"
+ ]
+ },
+ "gadgets-desc": "Позволяет участникам выбирать в своих [[Special:Preferences#mw-prefsection-gadgets|настройках]] те или иные [[Special:Gadgets|CSS- и JavaScript-гаджеты]]",
+ "prefs-gadgets": "Гаджеты",
+ "gadgets-prefstext": "Ниже приведён список специальных гаджетов, которые вы можете включить для своей учётной записи.\nГаджеты используют JavaScript, поэтому вы должны включить JavaScript в своём браузере для того, чтобы они работали.\nУчтите, что гаджеты не работают на этой странице настроек.\n\nОни не являются частью MediaWiki и обычно разрабатываются и обслуживаются участниками вашей локальной вики.\nАдминистраторы могут изменять [[MediaWiki:Gadgets-definition|определения]] и [[Special:Gadgets|описания]] доступных гаджетов. Число участников, использующий каждый из гаджетов в этой вики указано в [[Special:GadgetUsage|статистике использования гаджетов]].",
+ "gadgets": "Гаджеты",
+ "gadgetusage": "Статистика использования гаджетов",
+ "gadgetusage-gadget": "Гаджет",
+ "gadgetusage-usercount": "Количество участников",
+ "gadgetusage-noresults": "Никаких гаджетов не найдено.",
+ "gadgetusage-intro": "Эта таблица показывает количество участников, которые включили каждый из гаджетов в этой вики. Активным участником считается тот, кто вносил правки в течение {{PLURAL:$1|последнего дня|последних $1 дней}}. Этот список не включает статистику для гаджетов, включённых по умолчанию для всех, и может включать уже недоступные гаджеты.",
+ "gadgetusage-intro-noactive": "Эта таблица показывает количество участников, которые включили каждый из гаджетов в этой вики. Этот список не включает статистику для гаджетов, включённых по умолчанию для всех, и может включать уже недоступные гаджеты.",
+ "gadgetusage-activeusers": "Активные участники",
+ "gadgetusage-default": "По умолчанию",
+ "gadgets-title": "Гаджеты",
+ "gadgets-pagetext": "Ниже приведён список гаджетов, которые участники могут включить на своей странице настроек, в соответствии со списком на странице [[MediaWiki:Gadgets-definition|определений]].\nЭтот список позволяет легко получить доступ к страницам системных сообщений, определяющих описания и исходные коды гаджетов.",
+ "gadgets-uses": "Использует",
+ "gadgets-required-rights": "{{PLURAL:$2|1=Требуется право|Требуются права}}:\n\n$1",
+ "gadgets-required-skins": "Доступен в {{PLURAL:$2|1=теме оформления «$1»|следующих темах оформления: $1}}.",
+ "gadgets-default": "Включён для всех по умолчанию.",
+ "gadgets-legacy": "Гаджет не загружен. Пожалуйста, исправьте код этого гаджета, чтобы он вызывался с помощью ResourceLoader. ([https://www.mediawiki.org/wiki/ResourceLoader/Migration_guide_(users) Узнать подробности])",
+ "gadgets-export": "Экспортировать",
+ "gadgets-export-title": "Экспорт гаджета",
+ "gadgets-not-found": "Гаджет «$1» не найден.",
+ "gadgets-export-text": "Для экспорта гаджета $1 нажмите кнопку «{{int:gadgets-export-download}}», сохраните загруженный файл,\nперейдите на страницу Special:Import целевой вики и загрузите файл. Затем добавьте следующие строки на страницу MediaWiki:Gadgets-definition:\n<pre>$2</pre>\nВы должны иметь соответствующие разрешения в целевой вики (в том числе право на редактирование системных сообщений), также на сервере должна быть включена настройка импорта из файлов.",
+ "gadgets-export-download": "Скачать",
+ "gadgets-validate-notset": "Свойство <code>$1</code> не установлено.",
+ "gadgets-validate-wrongtype": "Свойство <code>$1</code> должна иметь тип <code>$2</code> вместо типа <code>$3</code>.",
+ "apihelp-query+gadgetcategories-description": "Возвращает список категорий гаджетов.",
+ "apihelp-query+gadgetcategories-summary": "Возвращает список категорий гаджетов.",
+ "apihelp-query+gadgetcategories-param-names": "Названия возвращаемых категорий.",
+ "apihelp-query+gadgetcategories-example-1": "Получить список существующих категорий гаджетов",
+ "apihelp-query+gadgetcategories-example-2": "Получить всю информацию о категориях с названиями «Foo» и «Bar»",
+ "apihelp-query+gadgets-description": "Возвращает список гаджетов, используемых в этой вики.",
+ "apihelp-query+gadgets-summary": "Возвращает список гаджетов, используемых в этой вики.",
+ "apihelp-query+gadgets-param-categories": "Гаджеты из каких категорий получать.",
+ "apihelp-query+gadgets-param-ids": "Идентификаторы гаджетов для получения.",
+ "apihelp-query+gadgets-param-allowedonly": "Перечислить только гаджеты, разрешённые текущему участнику.",
+ "apihelp-query+gadgets-param-enabledonly": "Перечислить только гаджеты, включенные у текущего участника.",
+ "apihelp-query+gadgets-example-1": "Получить список гаджетов вместе с их описаниями",
+ "apihelp-query+gadgets-example-2": "Получить список гаджетов со всеми их возможными свойствами",
+ "apihelp-query+gadgets-example-3": "Получить список гаджетов в категории «foo»",
+ "apihelp-query+gadgets-example-4": "Получить информацию о гаджетах «foo» и «bar»",
+ "apihelp-query+gadgets-example-5": "Получить список гаджетов, включённых у данного участника",
+ "right-gadgets-edit": "правка JavaScript и CSS-страниц гаджетов",
+ "action-gadgets-edit": "редактирование JavaScript или CSS-страницы этого гаджета",
+ "right-gadgets-definition-edit": "правка описаний гаджетов",
+ "action-gadgets-definition-edit": "редактирование определения этого гаджета"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/rue.json b/www/wiki/extensions/Gadgets/i18n/rue.json
new file mode 100644
index 00000000..c013ea6c
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/rue.json
@@ -0,0 +1,22 @@
+{
+ "@metadata": {
+ "authors": [
+ "Gazeb"
+ ]
+ },
+ "gadgets-desc": "Уможнює хоснователям собі выбрати [[Special:Gadgets|CSS і JavaScript додаток]] у своїм [[Special:Preferences#mw-prefsection-gadgets|наставлїню]].",
+ "prefs-gadgets": "Додаткы",
+ "gadgets-prefstext": "Ниже є перегляд шпеціалный додатків, котры собі можете у своїм контї запнути.\nТоты додаткы суть основаны переважно на JavaScript-і, также є про їх функчность треба мати запнутый JavaScript в переглядачі.\nДодаткы не суть аплікованы на тій сторінцї наставлїня.\n\nУсвідомте собі тыж, же шпеціалны додаткы не суть частёв софтверу MediaWiki і&nbsp;суть сторёваны і&nbsp;адміністрованы хоснователями той вікі.\nЛокалны адміністраторы можуть управляти [[MediaWiki:Gadgets-definition|дефініції]] і&nbsp;[[Special:Gadgets|пописы]] доступных додатків.",
+ "gadgets": "Додаткы",
+ "gadgets-title": "Додаткы",
+ "gadgets-pagetext": "Ниже є перегляд шпеціалных додатків, котры собі хоснователї можуть запнути у своїм [[Special:Preferences#mw-prefsection-gadgets|наставлїню]]. Їх список ся дасть управляти на сторінцї [[MediaWiki:Gadgets-definition]].\nТот перегляд додавать простый приступ к&nbsp;сістемным повідомлїням, котры дефінують код і&nbsp;попис каждого додатку.",
+ "gadgets-uses": "Хоснує",
+ "gadgets-required-rights": "Потребує слїдуючі {{PLURAL:$2|права}}:\n\n$1",
+ "gadgets-required-skins": "Доступне {{PLURAL:$2|про взгляд $1|про слїдуючі взгляды: $1}}.",
+ "gadgets-default": "Імпліцітно запнуте вшыткым.",
+ "gadgets-export": "Експортовати",
+ "gadgets-export-title": "Експорт додатку",
+ "gadgets-not-found": "Додато „$1“ не найдженый.",
+ "gadgets-export-text": "Кідь хочете експортовати додаток $1, кликните на клапку „{{int:gadgets-export-download}}“, уложте скачаный файл, на цілёвій вікі перейдьте на сторінку Special:Import і файл начітайте. Пак на сторінку MediaWiki:Gadgets-definition придайте наступне:\n<pre>$2</pre>\nНа цілёвій вікі мусите мати одповідны права (шпеціално права едітовати сістемны повідомлїня) і мусить быти поволеный імпорт з файлу.",
+ "gadgets-export-download": "Скачати"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/sa.json b/www/wiki/extensions/Gadgets/i18n/sa.json
new file mode 100644
index 00000000..d05fdcd6
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/sa.json
@@ -0,0 +1,23 @@
+{
+ "@metadata": {
+ "authors": [
+ "Shubha",
+ "NehalDaveND"
+ ]
+ },
+ "gadgets-desc": "सदस्याः स्वस्य [[Special:Preferences#mw-prefsection-gadgets|इष्टतमानि]] इत्यत्र [[Special:Gadgets|CSS जावालिपि-उपकरणं च]] चीयताम् ।",
+ "prefs-gadgets": "उपकरणानि",
+ "gadgets-prefstext": "अधः विशेषोपकरणानां सूची प्रदत्ता अस्ति याः भवान् भवतः लेखायां सक्रियाः कर्तुम् अर्हति ।\nएतानि जावालिप्याधारितानि विद्यन्ते, अतः कार्यकरणाय भवतः जालगवेषके जावालिपिः सक्रिया करणीया ।\nज्ञायतां यत् एतानि उपकरणानि भवतः इष्टतमानि इत्येतस्मिन् पृष्ठे कार्यं न कुर्वन्ति ।\n\nइदमपि जानातु यत् एतानि विशेषोपकरणानि विकिमाध्यमतन्त्रांशस्य भागभूताः न, भवतः स्थानीयविक्यामेव योजकैः निर्मितं निरूह्यमानञ्च वर्तते ।\nविद्यमानानाम् उपकरणानां [[MediaWiki:Gadgets-definition|definitions]] [[Special:Gadgets|descriptions]] च स्थानीयप्रबन्धकैः सम्पादयितुं शक्यते ।",
+ "gadgets": "उपकरणानि",
+ "gadgets-title": "उपकरणानि",
+ "gadgets-pagetext": "[[MediaWiki:Gadgets-definition|निर्वचन]]स्य अनुगुणम् अधः विशेषोपकरणानाम् अवली निर्दिष्टा अस्ति यानि भवतः [[Special:Preferences#mw-prefsection-gadgets|इष्टतमानि]] इत्यस्मिन् पृष्ठे सक्रियाणि कर्तुम् अर्हति ।\nइयं समीक्षा सर्वेषाम् उपकरणानां विवरणं कूटसङ्ख्यां च तन्त्रसन्देशे सुलभतया प्राप्तुं सहकरोति ।",
+ "gadgets-uses": "उपयोगः",
+ "gadgets-required-rights": "अधोनिर्दिष्टम् अपेक्षते {{PLURAL:$2|अधिकारः|अधिकारः}}:\n\n$1",
+ "gadgets-required-skins": "उपलभ्यते {{PLURAL:$2|$1 विन्यासः|अधोनिर्दिष्टः विन्यासः: $1}}.",
+ "gadgets-default": "यदभावे सर्वेषां कृते सक्रियं विद्यते ।",
+ "gadgets-export": "निर्यातः",
+ "gadgets-export-title": "उपकरणनिर्यातः",
+ "gadgets-not-found": "\"$1\" उपकरणं न प्राप्तम् ।",
+ "gadgets-export-text": "$1 उपकरणस्य निर्याताय \"{{int:gadgets-export-download}}\" पिञ्जः नोदनीयः, अवारोपिता सञ्चिका रक्ष्यताम्, लक्ष्यविक्यां Special:Import प्रति गम्यताम् उपारोप्यताञ्च । तत्पश्चात् MediaWiki:Gadgets-definition इत्यस्मिन् अधोनिर्दिष्टं योज्यताम् : <pre>$2</pre>\nलक्ष्यविक्यां भवतः उप्युक्ताधिकारः स्यात् (तन्त्रसन्देशसम्पादनस्य अधिकारः अन्तर्भूतः) सञ्चिकोपरोपणात् आयातः सक्षमः करणीयः",
+ "gadgets-export-download": "अवारोप्यताम्"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/sah.json b/www/wiki/extensions/Gadgets/i18n/sah.json
new file mode 100644
index 00000000..bef2aa75
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/sah.json
@@ -0,0 +1,21 @@
+{
+ "@metadata": {
+ "authors": [
+ "HalanTul"
+ ]
+ },
+ "gadgets-desc": "Бэйэлэрин [[Special:Preferences#mw-prefsection-gadgets|туруорууларыгар]] кыттааччылар [[Special:Gadgets|CSS уонна JavaScript гаджеттары]] холбонуохтарын сөп.",
+ "prefs-gadgets": "Ҕааддьыттар",
+ "gadgets-prefstext": "Аллара аналлаах ҕаадьыттар испииһэктэрэ көстөр. Балары бэйэҥ бэлиэтэммит ааккынан киирэн туһаныаххын сөп.\nБу тэриллэр үксүлэрэ JavaScript көмөтүнэн үлэлииллэр, онон туһаныаххын баҕарар буоллаххына JavaScript холбоо.\nБу ҕааддьыттар туроуорууларгын уларытар сирэйгэр үлэлээбэттэрин умнума.\n\nӨссө маны умнума: бу ҕааддьыттар MediaWiki сорҕото буолбатахтар, кинилэри кыттааччылар бэйэлэрэ айаллар уонна көрөллөр-истэллэр. Дьаһабыллар ҕааддьыттар испииһэктэрин [[MediaWiki:Gadgets-definition|быһаарыы сирэйдэр]] уонна [[Special:Gadgets|ойуулуур сирэйдэр]] көмөлөрүнэн уларытыахтарын сөп.",
+ "gadgets": "Ҕааддьыттар",
+ "gadgets-title": "Ҕааддьыттар",
+ "gadgets-pagetext": "Манна [[MediaWiki:Gadgets-definition|быһаарыы сирэйигэр]] суруллубутун курдук [[Special:Preferences#mw-prefsection-gadgets|туруоруу сирэйин]] көмөтүнэн холбонуон сөптөөх ҕааддьыттар тиһиликтэрэ көрдөрүлүннэ.\nБу тиһилик ҕааддьыттар ойуулааһыннарын уонна исходниктарын быһаарар тиһик (систиэмэ) биллэриилэрин сирэйдэригэр судургутук киирэри хааччыйар.",
+ "gadgets-uses": "Туһанар",
+ "gadgets-required-rights": "$2 бэйэбил (быраап) ирдэнэр: «$1»",
+ "gadgets-default": "Барыларыгар холбоно сылдьар.",
+ "gadgets-export": "Экспортаа",
+ "gadgets-export-title": "Ҕааддьыты таһаарыы (экспорт)",
+ "gadgets-not-found": "\"$1\" ҕааддьыт көстүбэтэ.",
+ "gadgets-export-text": "$1 ҕааддьыты таһаарарга (экспорт), «{{int:gadgets-export-download}}» тимэҕи баттаа, хачайдаммыт билэни бигэргэт,\nонтон угуохтаах биикиҥ Special:Import сирэйигэр киирэн уган кэбис. Ол кэннэ MediaWiki:Gadgets-definition сирэйгэ бу устуруокалары эп:\n<pre>$2</pre>\nУгуохтаах биикигэр аналлаах көҥүллээх буолуохтааххын (ол иһигэр тиһилик биллэриилэрин эрэдээксийэлиир кыах), эбиитин сиэрбэргэ билэни киллэрии көҥүллэммит буолуохтаах.",
+ "gadgets-export-download": "Хачайдааһын"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/scn.json b/www/wiki/extensions/Gadgets/i18n/scn.json
new file mode 100644
index 00000000..1bb0670a
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/scn.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "Sarvaturi"
+ ]
+ },
+ "prefs-gadgets": "Accissori",
+ "gadgets": "Accissori",
+ "gadgetusage": "Statìstichi supra l'usu di l'accissori",
+ "gadgets-title": "Accissori"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/sd.json b/www/wiki/extensions/Gadgets/i18n/sd.json
new file mode 100644
index 00000000..cd5322ef
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/sd.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Mehtab ahmed"
+ ]
+ },
+ "gadgetusage-usercount": "واپرائيندڙن جي تعداد"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/sgs.json b/www/wiki/extensions/Gadgets/i18n/sgs.json
new file mode 100644
index 00000000..502ee13c
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/sgs.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Hugo.arg"
+ ]
+ },
+ "gadgets": "Rakondā"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/sh.json b/www/wiki/extensions/Gadgets/i18n/sh.json
new file mode 100644
index 00000000..b63b937f
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/sh.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "Kolega2357",
+ "Conquistador"
+ ]
+ },
+ "prefs-gadgets": "Gadgeti",
+ "gadgets": "Gadgeti",
+ "gadgetusage-gadget": "Gadget",
+ "gadgets-title": "Gadgeti",
+ "gadgets-uses": "Upotrebe / Употребе"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/shn.json b/www/wiki/extensions/Gadgets/i18n/shn.json
new file mode 100644
index 00000000..0965d5d3
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/shn.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "Saosukham"
+ ]
+ },
+ "right-gadgets-edit": "ထတ်း ၶိူင်ႈယွႆႈ JavaScript ဢိၵ်ႇ ၼႃႈလိၵ်ႈ CSS",
+ "action-gadgets-edit": "ထတ်း ၶိူင်ႈယွႆႈ JavaScript ဢမ်ႇၼၼ် ၼႃႈလိၵ်ႈ CSS",
+ "right-gadgets-definition-edit": "ထတ်းၶေႃႈပိုတ်ႇယွႆႈ",
+ "action-gadgets-definition-edit": "ထတ်းၶေႃႈပိုတ်ႇယွႆႈၼႆႉ"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/si.json b/www/wiki/extensions/Gadgets/i18n/si.json
new file mode 100644
index 00000000..4fa1490c
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/si.json
@@ -0,0 +1,26 @@
+{
+ "@metadata": {
+ "authors": [
+ "Budhajeewa",
+ "නන්දිමිතුරු",
+ "පසිඳු කාවින්ද",
+ "බිඟුවා"
+ ]
+ },
+ "gadgets-desc": "උපයෝග්‍ය [[Special:Gadgets|CSS හා ජාවාස්ක්‍රිප්ට් මෙවලම්]] ඔවුන්ගේ [[Special:Preferences#mw-prefsection-gadgets|අභිරුචීන්හිදී]] තෝරාගැනුමට පරිශීලකයන් හට ඉඩ සලසයි",
+ "prefs-gadgets": "මෙවලම්",
+ "gadgets-prefstext": "පහත දැක්වෙන්නේ ඔබේ ගිණුම සඳහා සක්‍රීය කළ හැකි විශේෂ ගැජටයන් ලයිස්තුවකි.\nමෙම ගැජටයන් බොහෝ විට JavaScript මත පදනම් වේ, එම නිසා ඒවා ක්‍රියාත්මක වීම සඳහා ඔබේ පිරික්සකයේ JavaScript සක්‍රීය කොට තිබිය යුතුය.\nමෙම රිසිකෙරුම් පිටුව තුළ මෙම ගැජටයන් ක්‍රියාත්මක නොවන බව සලකන්න.\n\nමෙම විශේෂ ගැජටයන් MediaWiki මෘදුකාංගයේ කොටසක් නොවන බව සලකන්න, බොහෝ විට ඒවා ඔබේ ප්‍රාදේශීය විකියේ පරිශීලකයන් විසින් නිර්මාණය කර නඩත්තු කරනු ලැබේ.\nප්‍රාදේශික පරිපාලකයන් හට ගැජටයන්හි [[MediaWiki:Gadgets-definition|අර්ථ දැක්වීම්]] හා [[Special:Gadgets|පැහැදිළිකෙරුම්]] වෙනස් කළ හැක.",
+ "gadgets": "මෙවලම්",
+ "gadgetusage-default": "පෙරනිමි",
+ "gadgets-title": "මෙවලම්",
+ "gadgets-pagetext": "පහත දැක්වෙන්නේ [[MediaWiki:Gadgets-definition|අර්ථදැක්වීම්]] කරන ලද ආකාරය අනුව පරිශීලකයන්ට ඔවුන්ගේ [[Special:Preferences#mw-prefsection-gadgets|රිසිකෙරුම් පිටුව]] මතදී සක්‍රීය කළ හැකි විශේෂ ගැජටයන් ලයිස්තුවකි.\nමෙම දළ විශ්ලේෂණය සියළු ගැජටයන්ගේ විස්තර කෙරුම් හා කේතයන් අර්ථ දක්වන පද්ධති පණිවුඩ පිටු වෙත පහසු ළඟාවීම් ලබාදේ.",
+ "gadgets-uses": "පරිශීලනය කරයි",
+ "gadgets-required-rights": "මෙම {{PLURAL:$2|හිමිකම|හිමිකම්}} අවශ්‍ය වේ:\n\n$1",
+ "gadgets-required-skins": "{{PLURAL:$2|$1 චර්මයෙන්|චර්මයන්ගෙන් ලබා ගත හැක: $1}}.",
+ "gadgets-default": "සාමාන්‍යයෙන් සෑම දෙනාටම සක්‍රීය කර ඇත.",
+ "gadgets-export": "අපනයනය කරන්න",
+ "gadgets-export-title": "ගැජටය අපනයනය කරන්න",
+ "gadgets-not-found": "\"$1\" ගැජටය හමුවුනේ නැත.",
+ "gadgets-export-text": "$1 ගැජටය අපනයනය කෙරුමට, \"{{int:gadgets-export-download}}\" බොත්තම මත ක්ලික් කර අදාළ ගොනුව බා සුරැකගන්න. අනතුරුව ගමනාන්ත විකියේදී Special:Import වෙත ගොස් එය පටවන්න. පසුව MediaWiki:Gadgets-definition පිටුවට පහත දැක්වෙන්න ඇතුලත් කරන්න:\n\n<pre>$2</pre>\n\nමේ සඳහා ගමනාන්ත විකියේදී ඔබ සතුව අවසරයන් කිහිපයක් (පද්ධති පණිවුඩ වෙනස් කිරීම ඇතුළුව) සහ ගොනුවකින් ආනයනය කිරීම සක්‍රීයව තිබිය යුතුය.",
+ "gadgets-export-download": "බාගන්න"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/sk.json b/www/wiki/extensions/Gadgets/i18n/sk.json
new file mode 100644
index 00000000..2d7585b0
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/sk.json
@@ -0,0 +1,23 @@
+{
+ "@metadata": {
+ "authors": [
+ "Helix84",
+ "Teslaton"
+ ]
+ },
+ "gadgets-desc": "Umožňuje používateľovi vybrať [[Special:Gadgets|CSS a JavaScriptové nástroje]] vo svojich [[Special:Preferences#mw-prefsection-gadgets|nastaveniach]]",
+ "prefs-gadgets": "Nástroje",
+ "gadgets-prefstext": "Dolu je zoznam špeciálnych nástrojov, ktoré môžete zapnúť v rámci svojho účtu.\nTieto nástroje sú zväčša založené na JavaScripte, takže aby fungovali, musíte mať v prehliadači JavaScript zapnutý.\nNástroje nemajú vplyv na túto stránku nastavení.\n\nMajte tiež na pamäti, že tieto nástroje nie sú súčasťou MediaWiki a zvyčajne ich vyvíjajú a udržiavajú používatelia vašej lokálnej wiki.\nLokálni správcovia môžu upraviť zoznam dostupných nástrojov pomocou [[MediaWiki:Gadgets-definition|definícií]] a [[Special:Gadgets|popisov]].",
+ "gadgets": "Nástroje",
+ "gadgets-title": "Nástroje",
+ "gadgets-pagetext": "Dolu je zoznam špeciálnych nástrojov, ktoré môžu používatelia zapnúť v rámci svojho účtu na svojej stránke [[Special:Preferences#mw-prefsection-gadgets|nastavení]]. Tento zoznam definuje stránka [[MediaWiki:Gadgets-definition]]. Tento prehľad poskytuje jednoduchý prístup k systémovým stránkam, ktoré definujú popis a kód každého z nástrojov.",
+ "gadgets-uses": "Použitia",
+ "gadgets-required-rights": "Vyžaduje nasledovné {{PLURAL:$2|právo|práva}}:\n\n$1",
+ "gadgets-required-skins": "Dostupné {{PLURAL:$2|pre tému vzhľadu $1|pre nasledovné témy vzhľadu: $1}}.",
+ "gadgets-default": "Povolené pre každého v predvolenom nastavení.",
+ "gadgets-export": "Exportovať",
+ "gadgets-export-title": "Export nástroja",
+ "gadgets-not-found": "Nástroj „$1” nebol nájdený.",
+ "gadgets-export-text": "Ak chcete exportovať nástroj $1, kliknite na tlačidlo „{{int:gadgets-export-download}}“, uložte stiahnutý súbor,\n choďte na stránku Special:Import na cieľovej wiki a nahrajte ho. Potom pridajte nasledujúce na stránku MediaWiki:Gadgets-definition:\n<pre>$2</pre>\nMusíte mať príslušné oprávnenia na cieľovej wiki (vrátane práva na úpravu systémových správ) a import z nahraného súboru musí byť povolený.",
+ "gadgets-export-download": "Stiahnuť"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/skr-arab.json b/www/wiki/extensions/Gadgets/i18n/skr-arab.json
new file mode 100644
index 00000000..51c94d1a
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/skr-arab.json
@@ -0,0 +1,17 @@
+{
+ "@metadata": {
+ "authors": [
+ "Saraiki"
+ ]
+ },
+ "prefs-gadgets": "آلات",
+ "gadgets": "آلات",
+ "gadgetusage-gadget": "آلہ",
+ "gadgetusage-usercount": "صارفین دی تعداد",
+ "gadgetusage-activeusers": "متحرک ورتݨ آلے",
+ "gadgetusage-default": "پہلے کنوں طے تھیا ہویا",
+ "gadgets-title": "آلات",
+ "gadgets-uses": "ورتاوے",
+ "gadgets-export": "ٻاہر بھیڄو",
+ "gadgets-export-download": "ڈاؤن لوڈ ، لہاوݨ"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/sl.json b/www/wiki/extensions/Gadgets/i18n/sl.json
new file mode 100644
index 00000000..047b6d4f
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/sl.json
@@ -0,0 +1,24 @@
+{
+ "@metadata": {
+ "authors": [
+ "Dbc334",
+ "Eleassar",
+ "Smihael"
+ ]
+ },
+ "gadgets-desc": "Omogoča uporabnikom, da vključijo [[Special:Gadgets|vtičnike CSS in JavaScript]] v [[Special:Preferences#mw-prefsection-gadgets|nastavitvah]]",
+ "prefs-gadgets": "Vtičniki",
+ "gadgets-prefstext": "Prikazan je seznam posebnih vtičnikov, ki jih lahko omogočite za vaš račun.\nVečinoma temeljijo na JavaScriptu, zato mora biti za njihovo delovanje omogočen v vašem brskalniku.\nTi vtičniki nimajo nobenega vpliva na to nastavitveno stran.\n\nPrav tako upoštevajte, da ti vtičniki niso del programja MediaWiki in jih običajno razvijajo ter vzdržujejo uporabniki na vašem lokalnem wikiju.\nLokalni administratorji lahko uredite [[MediaWiki:Gadgets-definition|opredelitve]] in [[Special:Gadgets|opise]] vtičnikov, ki so na voljo. Število uporabnikov posameznega vtičnika na tem wikiju je navedeno na [[Special:GadgetUsage|statistiki uporabe vtičnikov]].",
+ "gadgets": "Vtičniki",
+ "gadgets-title": "Vtičniki",
+ "gadgets-pagetext": "Spodaj je seznam posebnih vtičnikov (opredeljenih z [[MediaWiki:Gadgets-definition|definicijami]]), ki jih lahko uporabniki vključijo v svojih [[Special:Preferences#mw-prefsection-gadgets|nastavitvah]].\nTa pregled omogoča enostaven dostop do sistema za nastavljanje opisa in kode vsakega vtičnika posebej.",
+ "gadgets-uses": "Uporablja",
+ "gadgets-required-rights": "Zahteva {{PLURAL:$2|naslednjo pravico|naslednji pravici|naslednje pravice}}:\n\n$1",
+ "gadgets-required-skins": "Na voljo na {{PLURAL:$2|koži $1|naslednjih kožah: $1}}.",
+ "gadgets-default": "Privzeto omogočeno za vsakogar.",
+ "gadgets-export": "Izvozi",
+ "gadgets-export-title": "Izvoz vtičnika",
+ "gadgets-not-found": "Vtičnika »$1« ni mogoče najti.",
+ "gadgets-export-text": "Za izvoz vtičnika $1 kliknite na gumb »{{int:gadgets-export-download}}«, shranite preneseno datoteko,\npojdite na Special:Import na ciljnem wikiju in jo naložite. Nato dodajte naslednjo vrstico na stran MediaWiki:Gadgets-definition:\n<pre>$2</pre>\nNa ciljnem wikiju morate imeti ustrezna dovoljenja (vključno s pravico urejanja sistemskih sporočil) in omogočeni morajo biti uvozi iz naloženih datotek.",
+ "gadgets-export-download": "Prenesi"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/so.json b/www/wiki/extensions/Gadgets/i18n/so.json
new file mode 100644
index 00000000..0a855e7a
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/so.json
@@ -0,0 +1,23 @@
+{
+ "@metadata": {
+ "authors": [
+ "Abshirdheere"
+ ]
+ },
+ "gadgets-desc": "Waxaa loo ogolyahay iticmaale-yaasha in ay dooqdaan \n[[Special:Gadgets|Ku darista CSS iyo JavaScript dheeraad]] ku jira [[Special:Preferences#mw-prefsection-gadgets|dooqyadooda]]",
+ "prefs-gadgets": "Dheeraad",
+ "gadgets-prefstext": "Hoos waxaa ku yaalla liis dheeraad gaar ah kaasoo ay suuragal tahay in uu la shaqeeyo akoonkaada.\nWaxyaabahaas dheeraadka ah badankood waxa ay ku dhisanyihiin JavaScript, sidaas daraadeed JavaScript waa inuu browser kada ku jiro si uu u shaqeyo.\nFiira gaar ah waxyaabahaas dheeraadka ah wax saamayn ah kuma yeelanayaan bogga kan ee dooqyada.\n\nWaxaa sido kale ogaataa wax yaabahaan dheeraadka ah ee gaarka ah ka mid maaha barnaamijka MediaWiki, waxaana hagaajiya ama horumariya isticmaallada wikiga aad hadda joogto.\nMaamulayaasha wikiga aad joogto oo kaliya ayaa wax ka bedeli kara [[MediaWiki:Gadgets-definition|aqoonsi]]\niyo [[Special:Gadgets|qeexis]] ku darista dheeraadka ah. Tirada adeegsadayaasha ku daris kasta ee wikigaan waxa lagu soo bandhigayaa [[Special:GadgetUsage|tirakoobka isticmallada dheeraadka]].",
+ "gadgets": "Dheeraad",
+ "gadgetusage-intro-noactive": "Jadwalkaan wuxuu muujiyaa tirada adeegsadayaasha sameeyay dhammaan ku darista wikigaan. Liiskaan wuu ka reebayaa tirakoobka ku darista loo sameeyay dhammaan si ka soo qaad ah laga yaabee in ay ka mid tahayku daris aan la heli karin.",
+ "gadgets-title": "Dheeraad",
+ "gadgets-pagetext": "Hoos waxaa ku yaala liis dheeraad gaar ah kasoo ay suurto gal tahay in uu la shaqeeyo akoonkaada [[Special:Preferences#mw-prefsection-gadgets|bogga dooqyada]], waxaad ku ogaan kartaa [[MediaWiki:Gadgets-definition|aqoonsiga]].\nMuuqaalkaan wuxuu sahlayaa galid fudud ee bogagga farriimaha sistemka taasoo qeexaysa kuudka iyo dhamaan dheeraadka.",
+ "gadgets-uses": "Waxaa loo adeegsadaa",
+ "gadgets-required-rights": "Waxaa la doonayaa {{PLURAL:$2|xaqqa|xuquuqda}}:\n\n$1",
+ "gadgets-required-skins": "Waxa laga heli karaa {{PLURAL:$2|$1 skin|following skins: $1}}.",
+ "gadgets-default": "Ahaysii dhamaan habla la doonayo.",
+ "gadgets-export": "Ka soo baxay",
+ "gadgets-export-title": "Qalab soo saaris",
+ "gadgets-not-found": "Qalabka \"$1\" aan la helin.",
+ "gadgets-export-text": "Si aad u dhoofiso $1 qalabka, guji \"{{int:gadgets-export-download}}\" batoonka, waxaad soo rogtay fayl gali,\nkadib aad Special:Import on destination wiki and upload it. kadib halkaan ku shub MediaWiki:Gadgets-definition bogga:\n<pre>$2</pre>\nWaa inaad leedahay qalab munaasab ku ah wiki (ay ka mid tahay inaad xaq uleedahay bedelida farrimaha sistemka) sidoo kale inaad awood uleedahay soo dhoofsashada faylasha.",
+ "gadgets-export-download": "Soo rog"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/sq.json b/www/wiki/extensions/Gadgets/i18n/sq.json
new file mode 100644
index 00000000..e9d38a17
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/sq.json
@@ -0,0 +1,25 @@
+{
+ "@metadata": {
+ "authors": [
+ "Mikullovci11",
+ "Olsi",
+ "Vinie007",
+ "Ammartivari"
+ ]
+ },
+ "gadgets-desc": "Lejin përdoruesit të zgjedhin [[Special:Gadgets|CSS dhe JavaScript gadgets]] në [[Special:Preferences#mw-prefsection-gadgets|preferencat]] e tyre",
+ "prefs-gadgets": "Veglat",
+ "gadgets-prefstext": "Më poshtë është një listë e mjeteve shtesë speciale që mund të aktivizohen për llogarinë tuaj.\nKëto mjete shtesë janë të bazuara kryesisht në JavaScript, pra JavaScript-i duhet aktivizuar në shfletuesin tuaj që ato të punojnë.\nVini re se këto mjete shtesë nuk do të kenë efekt në këtë faqe preferencash.\n\nGjithashtu vini re se këto mjete shtesë speciale nuk janë pjesë e softuerit MediaWiki, dhe zakonisht janë zhvilluar dhe mirëmbajtur nga përdoruesit në wiki-n tuaj lokal.\nAdministratorët lokalë mund t'i ndryshojnë [[MediaWiki:Gadgets-definition|përkufizimet]] dhe [[Special:Gadgets|përshkrimet]] e mjeteve shtesë të mundshme.",
+ "gadgets": "Gadgets",
+ "gadgets-title": "Veglat",
+ "gadgets-pagetext": "Më poshtë është një listë e mjeteve shtesë speciale që mund të aktivizohen në [[Special:Preferences#mw-prefsection-gadgets|faqen e preferencave]] të tyre, siç është përcaktuar nga [[MediaWiki:Gadgets-definition|përkufizimet]].\nKjo pasqyrë siguron qasje të lehtë në faqet e mesazheve të sistemit që përkufizon përshkrimin e çdo mjeti shtesë dhe kodin.",
+ "gadgets-uses": "Përdorues",
+ "gadgets-required-rights": "Kërkon {{PLURAL:$2|të drejtën|të drejtat}} e mëposhtme:\n\n$1",
+ "gadgets-required-skins": "E mundshme në {{PLURAL:$2|$1 pamje|pamjet e mëposhtme: $1}}.",
+ "gadgets-default": "Aktivizuar për të gjithë nga default.",
+ "gadgets-export": "Eksporto",
+ "gadgets-export-title": "Eksport mjetesh shtesë",
+ "gadgets-not-found": "Mjeti shtesë \"$1\" nuk u gjet.",
+ "gadgets-export-text": "Për eksportimin e mjetit shtesë $1, klikoni në butonin \"{{int:gadgets-export-download}}\", ruani skedën e shkarkuar,\nshkoni tek Speciale:Import në wiki-n e destinuar dhe ngarkojeni. Më pas shtoni atë që shihni më poshtë tek MediaWiki:\n<pre>$2</pre>\nJu duhet të keni leje të përshtatshme në wiki-n e destinuar (duke përfshirë të drejtën e redaktimit të mesazheve të sistemit) dhe importi nga ngarkimet e skedave duhet të jetë i aktizuar.",
+ "gadgets-export-download": "Shkarko"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/sr-ec.json b/www/wiki/extensions/Gadgets/i18n/sr-ec.json
new file mode 100644
index 00000000..a70b8242
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/sr-ec.json
@@ -0,0 +1,42 @@
+{
+ "@metadata": {
+ "authors": [
+ "Milicevic01",
+ "Millosh",
+ "Nikola Smolenski",
+ "Rancher",
+ "Жељко Тодоровић",
+ "Сербијана",
+ "Acamicamacaraca",
+ "BadDog"
+ ]
+ },
+ "gadgets-desc": "Омогућава корисницима да изаберу прилагођене [[Special:Gadgets|CSS и јаваскрипт справице]] у својим [[Special:Preferences#mw-prefsection-gadgets|подешавањима]]",
+ "prefs-gadgets": "Справице",
+ "gadgets-prefstext": "Испод се налази списак посебних справица које можете да омогућите на свом налогу. \nОве справице су углавном засноване на Јаваскрипту, тако да он мора бити омогућен. \nСправице неће утицати на страницу за подешавање.\n\nОне нису део софтвера Медијавики, већ се развијају и одржавају од стране корисника на Вашем локалном викију.\nАдминистратори могу изменити [[MediaWiki:Gadgets-definition|значења]] и [[Special:Gadgets|описе]] доступних справица. Број корисника за сваку справицу на овој викији је наведен у [[Special:GadgetUsage|статистици коришћења справица]].",
+ "gadgets": "Справице",
+ "gadgetusage": "Статистика коришћења справица",
+ "gadgetusage-gadget": "Справица",
+ "gadgetusage-usercount": "Број корисника",
+ "gadgetusage-noresults": "Нема пронађених справица.",
+ "gadgetusage-intro": "Табела приказује број корисника који су омогућили справице на овом викију. У активне кориснике се убраја онај који је направио измену у {{PLURAL:$1|последњи дан|$1 последња дана|$1 последњих дана}}. Списак не укључује статистике за справице које су свима подразумеване и може укључивати справице које више нису доступне.",
+ "gadgetusage-intro-noactive": "Табела приказује број корисника који су омогућили справице на овом викију. Списак не укључује статистике за справице које су свима подразумеване и може укључивати справице које више нису доступне.",
+ "gadgetusage-activeusers": "Активни корисници",
+ "gadgetusage-default": "Подразумевано",
+ "gadgets-title": "Справице",
+ "gadgets-pagetext": "Испод је списак посебних гаџета које корисници могу да омогуће на својој [[Special:Preferences#mw-prefsection-gadgets|страници за подешавање]], као што је наведено у [[MediaWiki:Gadgets-definition|дефиницијама]].\nОвај преглед пружа брз приступ системским порукама које дефинишу сваки опис и кoд гаџета.",
+ "gadgets-uses": "Користи",
+ "gadgets-required-rights": "Захтева {{PLURAL:$2|следеће право|следећа права}}:\n\n$1",
+ "gadgets-required-skins": "Доступно у {{PLURAL:$2|теми $1|следећим темама: $1}}.",
+ "gadgets-default": "Подразумевано укључен за сваког.",
+ "gadgets-legacy": "Справица није учитана. Молимо Вас пребаците га на ResourceLoader. ([https://www.mediawiki.org/wiki/ResourceLoader/Migration_guide_(users) Сазнајте више])",
+ "gadgets-export": "Извези",
+ "gadgets-export-title": "Извоз справице",
+ "gadgets-not-found": "Справица „$1“ није пронађена.",
+ "gadgets-export-text": "Да бисте извезли $1 справицу, кликните на дугме „{{int:gadgets-export-download}}“, сачувајте преузету датотеку,\nпређите на ''Special:Import'' на жељеној викији и пошаљите справицу. Након тога, додајте следеће на ''MediaWiki:Gadgets-definition'' страницу:\n<pre>$2</pre>\nМорате имати одређене дозволе на наведеној викији (укључујући и право за уређивање системских порука), док увоз преко датотека мора бити омогућен.",
+ "gadgets-export-download": "Преузми",
+ "right-gadgets-edit": "уређивање JavaScript и CSS страница геџета",
+ "action-gadgets-edit": "уређивање JavaScript и CSS страница геџета",
+ "right-gadgets-definition-edit": "уређивање дефиниција геџета",
+ "action-gadgets-definition-edit": "уређивање дефиниција геџета"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/sr-el.json b/www/wiki/extensions/Gadgets/i18n/sr-el.json
new file mode 100644
index 00000000..61143567
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/sr-el.json
@@ -0,0 +1,36 @@
+{
+ "@metadata": {
+ "authors": [
+ "Michaello",
+ "Milicevic01",
+ "Жељко Тодоровић",
+ "Сербијана",
+ "Srdjan m"
+ ]
+ },
+ "gadgets-desc": "Omogućava korisnicima da izaberu prilagođene [[Special:Gadgets|CSS i javaskript spravice]] u svojim [[Special:Preferences#mw-prefsection-gadgets|podešavanjima]]",
+ "prefs-gadgets": "Spravice",
+ "gadgets-prefstext": "Ispod se nalazi spisak posebnih spravica koje možete da omogućite na svom nalogu. \nOve spravice su uglavnom zasnovane na Javaskriptu, tako da on mora biti omogućen. \nSpravice neće uticati na stranicu za podešavanje.\n\nOne nisu deo softvera Medijaviki, već se razvijaju i održavaju od strane korisnika na Vašem lokalnom vikiju.\nAdministratori mogu izmeniti [[MediaWiki:Gadgets-definition|značenja]] i [[Special:Gadgets|opise]] dostupnih spravica. Broj korisnika za svaku spravicu na ovoj vikiji je naveden u [[Special:GadgetUsage|statistici korišćenja spravica]].",
+ "gadgets": "Spravice",
+ "gadgetusage": "Statistika korišćenja spravica",
+ "gadgetusage-intro": "Tabela prikazuje broj korisnika koji su omogućili spravice na ovom vikiju. U aktivne korisnike se ubraja onaj koji je napravio izmenu u {{PLURAL:$1|poslednji dan|$1 poslednja dana|$1 poslednjih dana}}. Spisak ne uključuje statistike za spravice koje su svima podrazumevane i može uključivati spravice koje više nisu dostupne.",
+ "gadgetusage-intro-noactive": "Tabela prikazuje broj korisnika koji su omogućili spravice na ovom vikiju. Spisak ne uključuje statistike za spravice koje su svima podrazumevane i može uključivati spravice koje više nisu dostupne.",
+ "gadgetusage-activeusers": "Aktivni korisnici",
+ "gadgetusage-default": "Podrazumevano",
+ "gadgets-title": "Spravice",
+ "gadgets-pagetext": "Ispod je spisak posebnih gadžeta koje korisnici mogu da omoguće na svojoj [[Special:Preferences#mw-prefsection-gadgets|stranici za podešavanje]], kao što je navedeno u [[MediaWiki:Gadgets-definition|definicijama]].\nOvaj pregled pruža brz pristup sistemskim porukama koje definišu svaki opis i kod gadžeta.",
+ "gadgets-uses": "koristi se",
+ "gadgets-required-rights": "Zahteva {{PLURAL:$2|sledeće pravo|sledeća prava}}:\n\n$1",
+ "gadgets-required-skins": "Dostupno u {{PLURAL:$2|temi $1|sledećim temama: $1}}.",
+ "gadgets-default": "Podrazumevano uključen za svakog.",
+ "gadgets-legacy": "Gedžet nije učitan. Molimo vas prebacite ga na ResourceLoader. ([https://www.mediawiki.org/wiki/ResourceLoader/Migration_guide_(users) Saznajte više])",
+ "gadgets-export": "Izvezi",
+ "gadgets-export-title": "Izvoz spravice",
+ "gadgets-not-found": "Gadžet „$1“ nije pronađen.",
+ "gadgets-export-text": "Da biste izvezli $1 gadžet, kliknite na dugme „{{int:gadgets-export-download}}“, sačuvajte preuzetu datoteku,\npređite na ''Special:Import'' na željenoj vikiji i pošaljite gadžet. Nakon toga, dodajte sledeće na ''MediaWiki:Gadgets-definition'' stranicu:\n<pre>$2</pre>\nMorate imati određene dozvole na navedenoj vikiji (uključujući i pravo za uređivanje sistemskih poruka), dok uvoz preko datoteka mora biti omogućen.",
+ "gadgets-export-download": "Preuzmi",
+ "right-gadgets-edit": "uređivanje JavaScript i CSS stranica gedžeta",
+ "action-gadgets-edit": "uređivanje JavaScript i CSS stranica gedžeta",
+ "right-gadgets-definition-edit": "uređivanje definicija gedžeta",
+ "action-gadgets-definition-edit": "uređivanje definicija gedžeta"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/stq.json b/www/wiki/extensions/Gadgets/i18n/stq.json
new file mode 100644
index 00000000..dc6f113c
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/stq.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Pyt"
+ ]
+ },
+ "gadgets-desc": "Lät Benutsere in hiere [[Special:Preferences#mw-prefsection-gadgets|persöönelke Ienstaalengen]] foardefinierde [[Special:Gadgets|CSS- un JavaScript-Gadgets]] aktivierje",
+ "prefs-gadgets": "Gadgets",
+ "gadgets-prefstext": "Lieste fon spezielle Hälpere do der fon älken Benutser aktivierd wäide konnen.\nDo Hälpere basierje maastens ap Javascript, deeruum mout Javascript in dän Browser aktivierd weese, uumdät jo funktionierje.\nDo Hälpere funktionierje oawers nit ap disse Siede mäd persöönelke Ienstaalengen.\n\nBuutendät is tou beoachtjen, dät disse Hälpere in Algemeenen nit Paat fon MediaWiki sunt, man maast fon\nBenutsere fon lokoale Wikis äntwikkeld un fersuurged wäide. Lokoale Wiki-Administratore konnen do ferföichboare Hälpere beoarbaidje. Deerfoar stounde do [[MediaWiki:Gadgets-definition|Definitione]] un [[Special:Gadgets|Beskrieuwengen]] tou Ferföigenge.",
+ "gadgets": "Gadgets",
+ "gadgets-title": "Gadgets",
+ "gadgets-pagetext": "Lieste fon spezielle Hälpere, do der foar älken Benutser in sien [[Special:Preferences#mw-prefsection-gadgets|persöönelke Ienstaalengen]] ferföichboar sunt, as [[MediaWiki:Gadgets-definition| definierd]].\nDisse Uursicht bjut direkten Tougoang tou do Systemättergjuchte, do ju Beskrieuwenge as uk dän Programkode fon älken Hälper änthoolde.",
+ "gadgets-uses": "Benutsed"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/su.json b/www/wiki/extensions/Gadgets/i18n/su.json
new file mode 100644
index 00000000..def43d47
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/su.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Irwangatot"
+ ]
+ },
+ "gadgets-desc": "Matak bisa pamaké milih [[Special:Gadgets|Gajet CSS sarta Javascript]] ngaliwatan [[Special:Preferences#mw-prefsection-gadgets|Préferénsi]] maranéhanana"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/sv.json b/www/wiki/extensions/Gadgets/i18n/sv.json
new file mode 100644
index 00000000..2dff01d7
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/sv.json
@@ -0,0 +1,54 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ainali",
+ "Boivie",
+ "Cohan",
+ "Diupwijk",
+ "Lejonel",
+ "M.M.S.",
+ "Skalman",
+ "Lokal Profil",
+ "WikiPhoenix"
+ ]
+ },
+ "gadgets-desc": "Låter användare aktivera personliga [[Special:Gadgets|CSS- och JavaScript-finesser]] genom sina [[Special:Preferences#mw-prefsection-gadgets|inställningar]]",
+ "prefs-gadgets": "Finesser",
+ "gadgets-prefstext": "Härunder finns en lista över finesser som du kan aktivera för ditt konto.\nDe flesta funktionerna är baserade på JavaScript, så du måste ha JavaScript aktiverat i din webbläsare för att de ska fungera.\nNotera att de här tilläggsfunktionerna inte kommer ha någon effekt den här inställningssidan.\n\nNotera också att dessa finesser inte är en del av MediaWiki-programvaran, och är för det mesta utvecklade och underhållna av användare på den här wikin.\nLokala administratörer kan redigera [[MediaWiki:Gadgets-definition|definitionerna]] och [[Special:Gadgets|beskrivningarna]] av de tillgängliga finesserna. Antalet användare av var finess på denna wiki finns listade på [[Special:GadgetUsage|Finessanvändningsstatistik]].",
+ "gadgets": "Finesser",
+ "gadgetusage": "Finessanvändningsstatistik",
+ "gadgetusage-gadget": "Finess",
+ "gadgetusage-usercount": "Antal användare",
+ "gadgetusage-noresults": "Inga finesser hittades.",
+ "gadgetusage-intro": "Denna tabell anger antalet användare som har aktiverat respektive finess på denna wiki. Det kan vara finesser som inte längre finns.",
+ "gadgetusage-activeusers": "Aktiva användare",
+ "gadgetusage-default": "Standard",
+ "gadgets-title": "Finesser",
+ "gadgets-pagetext": "Härunder finns en lista över finesser som användare kan aktivera i sina [[Special:Preferences#mw-prefsection-gadgets|inställningar]], definierad av [[MediaWiki:Gadgets-definition|definitionerna]].\nDen här översikten ger enkel åtkomst till de systemmeddelanden som definierar beskrivningarna och koden för varje finess.",
+ "gadgets-uses": "Använder",
+ "gadgets-required-rights": "Kräver följande {{PLURAL:$2|rättighet|rättigheter}}:\n\n$1",
+ "gadgets-required-skins": "Tillgängligt i {{PLURAL:$2|$1-utseendet|följande utseenden: $1}}.",
+ "gadgets-default": "Som standard aktiverat för alla.",
+ "gadgets-export": "Exportera",
+ "gadgets-export-title": "Exportera finess",
+ "gadgets-not-found": "Tillägg \"$1\" hittades inte.",
+ "gadgets-export-text": "För att exportera tillägg $1, klicka på \"{{int:gadgets-export-download}}\"-knappen, spara den nedladdade filen, gå till Special:Importera på destinationswikin och ladda upp den. Lägg sedan till följande till MediaWiki:Gadgets-definition sidan:\n<pre>$2</pre>\nDu måste ha tillräckliga behörigheter på destinationswikin (inklusive möjlighet att ändra systemmeddelanden) och att importera från filuppladningar måste vara aktiverad.",
+ "gadgets-export-download": "Ladda ner",
+ "apihelp-query+gadgetcategories-description": "Returnerar en lista för finesskategorier.",
+ "apihelp-query+gadgetcategories-param-prop": "Vilken information om finesskategorier som ska tas med:\n;name:Internt kategorinamn.\n;title:Kategorititel.\n;members:Antal finesser i kategorin.",
+ "apihelp-query+gadgetcategories-param-names": "Namn på kategorier som ska hämtas.",
+ "apihelp-query+gadgetcategories-example-1": "Få en lista över befintliga finesskategorier",
+ "apihelp-query+gadgetcategories-example-2": "Få alla information om kategorier med namnen \"foo\" och \"bar\"",
+ "apihelp-query+gadgets-description": "Returnerar en lista med finesser som används på denna wiki.",
+ "apihelp-query+gadgets-param-prop": "Vilken finessinformation som ska tas med:\n;id:Internt finess-ID.\n;metadata:Finessmetadata.\n;desc:Finessbeskrivning omvandlad till HTML (kan vara långsam, använd bara om det verkligen behövs).",
+ "apihelp-query+gadgets-param-ids": "ID för finesser som ska hämtas.",
+ "apihelp-query+gadgets-param-allowedonly": "Listan bara finesser som är tillåts för den aktuella användaren.",
+ "apihelp-query+gadgets-param-enabledonly": "Listan bara finesser aktiverade av den aktuella användaren.",
+ "apihelp-query+gadgets-example-1": "Få en lista över finesser tillsammans med deras beskrivningar",
+ "apihelp-query+gadgets-example-2": "Få en lista över finesser med alla möjliga egenskaper",
+ "apihelp-query+gadgets-example-3": "Få en lista över finesser som tillhör kategorin \"foo\"",
+ "apihelp-query+gadgets-example-4": "Få information om finesserna \"foo\" och \"bar\"",
+ "apihelp-query+gadgets-example-5": "Få en lista över finesser aktiverade av den aktuella användaren",
+ "action-gadgets-edit": "redigera denna finess JavaScript eller CSS-sida",
+ "action-gadgets-definition-edit": "redigera denna finessdefinition"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/sw.json b/www/wiki/extensions/Gadgets/i18n/sw.json
new file mode 100644
index 00000000..53f5a1f2
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/sw.json
@@ -0,0 +1,12 @@
+{
+ "@metadata": {
+ "authors": [
+ "Kwisha",
+ "Stephenwanjau"
+ ]
+ },
+ "gadgets": "Vifaa",
+ "gadgets-title": "Vifaa",
+ "gadgets-uses": "Inatumia",
+ "gadgets-export-download": "Pakua"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/ta.json b/www/wiki/extensions/Gadgets/i18n/ta.json
new file mode 100644
index 00000000..a6aafa3b
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/ta.json
@@ -0,0 +1,19 @@
+{
+ "@metadata": {
+ "authors": [
+ "TRYPPN",
+ "மதனாஹரன்"
+ ]
+ },
+ "prefs-gadgets": "கருவிகள்",
+ "gadgets": "கருவிகள்",
+ "gadgets-title": "கருவிகள்",
+ "gadgets-uses": "பயன்பாடுகள்",
+ "gadgets-required-rights": "பின்வரும் {{PLURAL:$2|உரிமை|உரிமைகள்}} வேண்டப்படுகின்றன:\n\n$1",
+ "gadgets-required-skins": "{{PLURAL:$2|$1 தோலில்|பின்வரும் தோல்களில்: $1} கிடைக்கும்.",
+ "gadgets-default": "இயல்பாக அனைவருக்கும் செயற்பட வைக்கப்பட்டது.",
+ "gadgets-export": "ஏற்றுமதி செய்",
+ "gadgets-export-title": "கருவியை ஏற்றுமதி செய்",
+ "gadgets-not-found": "''$1'' என்ற கருவி காணப்படவில்லை.",
+ "gadgets-export-download": "பதிவிறக்கம் செய்"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/tay.json b/www/wiki/extensions/Gadgets/i18n/tay.json
new file mode 100644
index 00000000..879b5989
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/tay.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Hitaypayan"
+ ]
+ },
+ "gadgetusage-usercount": "Kinpira’ hi’ na pptzyuwaw",
+ "gadgetusage-activeusers": "Ini’ hngaw mtzyuwaw na pptyuwaw",
+ "gadgetusage-default": "Pinnama’ smi’",
+ "gadgets-title": "Qayqaya’ taykuy",
+ "gadgets-uses": "Pptzyuwaw",
+ "gadgets-export": "Pawsa’",
+ "gadgets-export-title": "Pawsa’ qayqaya’ taykuy"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/tcy.json b/www/wiki/extensions/Gadgets/i18n/tcy.json
new file mode 100644
index 00000000..be635e18
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/tcy.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "Soundarya shetty s",
+ "రహ్మానుద్దీన్",
+ "Vishwanatha Badikana"
+ ]
+ },
+ "gadgetusage": "ಗೆಜೆಟ್ ಗಳಸಿನ ಲೆಕ್ಕ",
+ "gadgetusage-gadget": "ಗೆಜೆಟ್",
+ "gadgetusage-usercount": "ಬಳಕೆದಾರೆರ್‍ನ ಸಂಕ್ಯೆ",
+ "gadgetusage-noresults": "ಗೆಜೆಟ್ ತಿಕೊಂದಿಜ್ಜಿ"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/te.json b/www/wiki/extensions/Gadgets/i18n/te.json
new file mode 100644
index 00000000..71874a59
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/te.json
@@ -0,0 +1,21 @@
+{
+ "@metadata": {
+ "authors": [
+ "Kiranmayee",
+ "Mpradeep",
+ "Veeven"
+ ]
+ },
+ "gadgets-desc": "వాడుకర్లను వారి [[Special:Preferences#mw-prefsection-gadgets|అభిరుచుల]]లో ప్రత్యేక [[Special:Gadgets|CSS మరియు జావాస్క్రిప్ట్ గాడ్జెట్లను]] ఎంచుకోనిస్తుంది",
+ "prefs-gadgets": "ఉపకరణాలు",
+ "gadgets-prefstext": "ఈ దిగువ ఉన్న ప్రత్యేక ఉపకరణాల నుండి మీకు కావలసిన వాటికి టిక్కు పెట్టి మీ ఖాతాకు వీటిని చేతనం చేసుకొవచ్చు.\nఈ ఉపకరణాలు జావాస్క్రిప్టుపై ఆధారపడి పనిచేస్తాయి కాబట్టి ఇవి సరిగా పనిచెయ్యాలంటే మీ విహారిణిలో జావాస్క్రిప్టు చేతనం చేసి ఉండాలి.\nఈ ఉపకరణాలు అభిరుచుల పేజీపై ఎటువంటి ప్రభావాన్ని కలుగజేయవని గమనించాలి.\n\nఅలాగే ఈ ప్రత్యేక ఉపకరణాలు మీడియావికీ సాఫ్టువేరులో భాగము కాదని గమనించాలి. వీటిని సాధారణంగా మీ స్థానిక వికీలోని వాడుకరులే తయారుచేసి నిర్వహిస్తూ ఉంటారు. అందుబాటులో ఉన్న ఉపకరణాలకు [[MediaWiki:Gadgets-definition|ఉపకరణాల నిర్వచన]] మరియు [[Special:Gadgets|ఉపకరణాల వివరణ]] పేజీలను ఉపయోగించి స్థానిక వికీ నిర్వాహకులు మార్పులు చేయవచ్చు.",
+ "gadgets": "ఉపకరణాలు",
+ "gadgetusage-activeusers": "క్రియాశీల వాడుకరులు",
+ "gadgets-title": "ఉపకరణాలు",
+ "gadgets-pagetext": "ఈ దిగువన ఉన్న ప్రత్యేక ఉపకరణాల నుండి సభ్యులు తమకు కావలసినవి తమ [[Special:Preferences#mw-prefsection-gadgets|అభిరుచులు పేజీ]]లోని ఉపకరణాల టాబులో టిక్కు పెట్టి ఎనేబుల్ చేసుకొనే అవకాశం ఉన్నది. వీటిని [[MediaWiki:Gadgets-definition|ఉపకరణాల నిర్వచన]] పేజీలో నిర్వచించడం జరిగింది. ఈ చిన్న పరిచయం ఆయా ఉపకరణాల నిర్వచన మరియు కోడుకు సంబంధించిన మీడియావికీ సందేశాలకు సులువుగా చేరుకునేందుకు లింకులను సమకూర్చుతుంది.",
+ "gadgets-uses": "ఉపయోగించే ఫైళ్ళు",
+ "gadgets-required-rights": "ఈ క్రింది {{PLURAL:$2|హక్కు|హక్కులు}} కావాలి:\n\n$1",
+ "gadgets-export": "ఎగుమతించు",
+ "gadgets-not-found": "\"$1\" ఉపకరణం కనబడలేదు.",
+ "gadgets-export-download": "దింపుకోండి"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/tg-cyrl.json b/www/wiki/extensions/Gadgets/i18n/tg-cyrl.json
new file mode 100644
index 00000000..00ee0d15
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/tg-cyrl.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ibrahim"
+ ]
+ },
+ "gadgets-desc": "Аз тариқи саҳифаи [[Special:Preferences#mw-prefsection-gadgets|тарҷиҳот]] ба корбарон имконияти интихоби абзорҳои шахсии [[Special:Gadgets|CSS ва ҶаваСкрипт]]ро медиҳад.",
+ "prefs-gadgets": "Абзорҳо",
+ "gadgets-prefstext": "Дар зер феҳристи аз абзорҳои вижаеро мебинед, ки барои ҳисобатон метавонед фаъол кунед. Ин абзорҳо бештар дар асоси ҶаваСкрипт ҳастанд, пас барои истфода аз онҳо бояд ҶаваСкриптро дар мурургаратон фаъол кунед. Таваҷҷӯҳ кунед, ки ин абзорҳо наметавонанд саҳифаи тарҷиҳотро тағйир диҳанд.\n\nДиққат дошта бошед, ки ин абзорҳои ҷузъӣ аз нармафзори МедиаВики нестанд ва ҳамчун яке аз қисмҳои он ба ҳисоб намераванд, ва одатан аз тарафи корбарони ҳар вики сохта ва нигаҳдорӣ мешаванд. Мудирони ҳар вики метавонанд бо истифода аз саҳифаҳои [[MediaWiki:Gadgets-definition]] ва [[Special:Gadgets]] ба вироиши абзорҳо бипардозанд.",
+ "gadgets": "Абзорҳо",
+ "gadgets-title": "Абзорҳо",
+ "gadgets-pagetext": "Дар зер феҳристи абзорҳои вижаро мебинед, ки корбарон метавонанд дар саҳифаи тарҷиҳоти худ мутобиқи [[MediaWiki:Gadgets-definition]] фаъол кунанд. Ин хулоса дастрасии осонро ба саҳифаи пайғомҳои системавӣ, ки шомили тавзеҳот ва коди ҳар абзор аст, пешкаш мекунад.",
+ "gadgets-uses": "Корбурдҳо"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/tg-latn.json b/www/wiki/extensions/Gadgets/i18n/tg-latn.json
new file mode 100644
index 00000000..0fd1a7a2
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/tg-latn.json
@@ -0,0 +1,12 @@
+{
+ "@metadata": {
+ "authors": [
+ "Liangent"
+ ]
+ },
+ "gadgets-desc": "Az tariqi sahifai [[Special:Preferences#mw-prefsection-gadgets|tarçihot]] ba korbaron imkonijati intixobi abzorhoi şaxsiji [[Special:Gadgets|CSS va ÇavaSkript]]ro medihad.",
+ "prefs-gadgets": "Abzorho",
+ "gadgets": "Abzorho",
+ "gadgets-title": "Abzorho",
+ "gadgets-uses": "Korburdho"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/th.json b/www/wiki/extensions/Gadgets/i18n/th.json
new file mode 100644
index 00000000..f6970f6f
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/th.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ans",
+ "Passawuth"
+ ]
+ },
+ "gadgets-desc": "ให้ผู้ใช้สามารถเลือกใช้ [[Special:Gadgets|CSS และ จาวาสคริปต์]] ที่สร้างขึ้นเป็นการเฉพาะ ในหน้า [[Special:Preferences#mw-prefsection-gadgets|ตั้งค่า]] ได้",
+ "prefs-gadgets": "อุปกรณ์เสริม",
+ "gadgets-prefstext": "ด้านล่างเป็นรายการอุปกรณ์เสริม ที่บัญชีผู้ใช้ของคุณสามารถเปิดใช้งานได้\nอุปกรณ์เสริมเหล่านี้ส่วนใหญ่จะทำงานผ่านจาวาสคริปต์ ดังนั้นเบราเซอร์ของคุณต้องเปิดใช้งานจาวาสคริปต์จึงจะสามารถใช้อุปกรณ์เสริมเหล่านี้ได้\nอย่างไรก็ตามอุปกรณ์เสริมเหล่านี้จะไม่ส่งผลหรือประมวลผลใดๆ ในหน้าตั้งค่านี้\n\nนอกจากนี้อุปกรณ์เสริมพิเศษเหล่านี้ไม่ได้เป็นส่วนหนึ่งของซอฟต์แวร์มีเดียวิกิ แต่พัฒนาและดูแลโดยผู้ใช้งานในวิกิที่คุณใช้อยู่\nโดยผู้ดูแลของวิกินั้นๆ สามารถแก้ไขอุปกรณ์เสริมที่มีอยู่ผ่านทางหน้า [[MediaWiki:Gadgets-definition|definition]] และ [[Special:Gadgets|คำอธิบาย]]",
+ "gadgets": "อุปกรณ์เสริม",
+ "gadgets-title": "อุปกรณ์เสริม",
+ "gadgets-pagetext": "รายการด้านล่างเป็นรายการอุปกรณ์เสริมพิเศษที่ผู้ใช้สามารถเปิดใช้ในส่วน[[Special:Preferences#mw-prefsection-gadgets|การตั้งค่าส่วนตัว]] อุปกรณ์เสริมทั้งหมดได้ถูกกำหนดไว้ใน [[MediaWiki:Gadgets-definition|ส่วนกำหนดอุปกรณ์เสริม]]\nขณะที่หน้านี้จะกล่าวโดยรวมเกี่ยวกับ คำอธิบายการใช้งาน และ โค้ดของอุปกรณ์เสริมแต่ละตัว",
+ "gadgets-uses": "เรียกใช้"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/tk.json b/www/wiki/extensions/Gadgets/i18n/tk.json
new file mode 100644
index 00000000..6628d994
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/tk.json
@@ -0,0 +1,16 @@
+{
+ "@metadata": {
+ "authors": [
+ "Hanberke"
+ ]
+ },
+ "gadgets-desc": "Ulanyjylaryň [[Special:Preferences#mw-prefsection-gadgets|ileri tutmalarynda]] ýörite [[Special:Gadgets|CSS we JavaScript gajetlerini]] saýlamaklaryna rugsat berýär",
+ "prefs-gadgets": "Gajetler",
+ "gadgets": "Gajetler",
+ "gadgets-title": "Gajetler",
+ "gadgets-uses": "Ulanýar",
+ "gadgets-export": "Eksportirle",
+ "gadgets-export-title": "Gajet eksporty",
+ "gadgets-not-found": "\"$1\" gajeti tapylmady.",
+ "gadgets-export-download": "Göçürip al"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/tl.json b/www/wiki/extensions/Gadgets/i18n/tl.json
new file mode 100644
index 00000000..37bc2c1c
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/tl.json
@@ -0,0 +1,29 @@
+{
+ "@metadata": {
+ "authors": [
+ "AnakngAraw",
+ "Jojit fb",
+ "Leeheonjin"
+ ]
+ },
+ "gadgets-desc": "Nagpapahintulot sa mga tagagamit na makapili ng pinasadyang [[Special:Gadgets|mga gadyet na pang-CSS at pang-JavaScript]] sa kanilang [[Special:Preferences#mw-prefsection-gadgets|mga kagustuhan]]",
+ "prefs-gadgets": "Mga gadyet (kasangkapan)",
+ "gadgets-prefstext": "Nasa ibaba ang isang talaan ng mga natatanging kasangkapan (gadyet) na maaari mong paganahin para sa iyong account.\nKaramihan sa mga gadyet na ito ang nakaugnay/nakabatay sa ''JavaScript'', kaya dapat na paandarin ang ''JavaScript'' sa browser upang gumana.\nPakitandaang walang magiging epekto sa pahina ng mga kagustuhang ito ang ganitong mga gadyet.\n\nPakitandaan din na ang mga natatanging gadyet na ito ay hindi kabahagi ng software ng MediaWiki, at karaniwang pinaunlad at pinananatili ng mga tagagamit sa katutubo/lokal mong wiki.\nMaaaring baguhin ng pampook/lokal na mga tagapangasiwa ang makukuhang mga gadyet sa pamamagitan ng [[MediaWiki:Gadgets-definition|mga kahulugan]] at [[Special:Gadgets|mga paglalarawan]].",
+ "gadgets": "Mga gadyet (kasangkapan)",
+ "gadgetusage": "Estadistiko ng pagkaka-gamit ng aparato/gadyet",
+ "gadgetusage-gadget": "Gadyet/Aparato",
+ "gadgetusage-usercount": "Bilang ng mga tagagamit",
+ "gadgetusage-noresults": "Walang natagpuang mga aparato/gadyet.",
+ "gadgetusage-activeusers": "Mga aktibong tagagamit",
+ "gadgets-title": "Mga gadyet (kasangkapan)",
+ "gadgets-pagetext": "Nasa ibaba ang isang talaan ng natatanging mga kasangkapan (gadyet) na mapapagana ng mga tagagamit sa kanilang [[Special:Preferences#mw-prefsection-gadgets|pahina ng mga kagustuhan]], ayon sa nilalarawan ng [[MediaWiki:Gadgets-definition|mga kahulugan]].\nNagbibigay ang pagtalakay na ito ng magaang na daan/akseso patungo sa mga pahina ng sistemang pangmensahe na nagbibigay kahulugan sa paglalarawan at kodigo ng bawat gadyet.",
+ "gadgets-uses": "Mga mapaggagamitan",
+ "gadgets-required-rights": "Nangangailangan ng sumusunod na {{PLURAL:$2|karapatan|mga karapatan:}}:\n\n$1",
+ "gadgets-required-skins": "Makukuha sa ibabaw ng {{PLURAL:$2|$1 na pabalat|sumusunod na mga pabalat: $1}}.",
+ "gadgets-default": "Likas ang pagkakatakda na pinapagana para sa lahat.",
+ "gadgets-export": "Iluwas",
+ "gadgets-export-title": "Pagluluwas ng gadyet",
+ "gadgets-not-found": "Hindi natagpuan ang gadyet na \"$1\".",
+ "gadgets-export-text": "Upang iluwas ang gadyet na $1, pindutin ang pindutang \"{{int:gadgets-export-download}}\", sagipin ang talaksang ikinargang paibaba,\npumunta sa Special:Import na nasa kapupuntahang wiki at ikarga itong paitaas. Pagkaraan ay idagdag ang sumusunod sa pahina ng MediaWiki:Gadgets-definition:\n<pre>$2</pre>\nDapat kang mayroong nararapat na mga pahintulot sa kapupuntahang wiki (kasama ang karapatang mamatnugot ng mga mensahe ng sistema) at dapat na gumagana ang mga inangkat mula sa mga talaksang ikinargang paitaas",
+ "gadgets-export-download": "Ikargang pababa"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/tr.json b/www/wiki/extensions/Gadgets/i18n/tr.json
new file mode 100644
index 00000000..ba164eb7
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/tr.json
@@ -0,0 +1,49 @@
+{
+ "@metadata": {
+ "authors": [
+ "Emperyan",
+ "Erkan Yilmaz",
+ "Incelemeelemani",
+ "Joseph",
+ "Karduelis",
+ "Koc61",
+ "Arystanbek",
+ "Mizunee",
+ "HakanIST",
+ "Vito Genovese"
+ ]
+ },
+ "gadgets-desc": "Kullanıcıların [[Special:Preferences#mw-prefsection-gadgets|tercihlerinde]] özel [[Special:Gadgets|CSS ve JavaScript gadgetlerini]] seçmelerine izin verir",
+ "prefs-gadgets": "Küçük araçlar",
+ "gadgets-prefstext": "Aşağıdaki, hesabınız için etkinleştirebileceğiniz özel araçların listesidir. \nBu küçük araçlar çoğunlukla JavaScript temellidir, bu yüzden çalışmaları için tarayıcınızda JavaScript etkinleştirilmelidir. Bu küçük araçların tercihler sayfasına bir etkisinin olmayacağını unutmayın.\n\nAyrıca unutmayın ki, bu özel araçlar MedyaViki yazılımının bir parçası değildir ve genellikle yerel vikinizdeki kullanıcılar tarafından geliştirilip, devam ettirilirler.\nYerel yöneticiler [[MediaWiki:Gadgets-definition|tanımları]] ve [[Special:Gadgets|açıklamaları]] kullanarak uygun araçları değiştirebilirler.",
+ "gadgets": "Küçük araçlar",
+ "gadgetusage": "Küçük araç kullanım istatistikleri",
+ "gadgetusage-usercount": "Kullanıcı sayısı",
+ "gadgets-title": "Küçük araçlar",
+ "gadgets-pagetext": "Aşağıdaki, kullanıcıların [[Special:Preferences#mw-prefsection-gadgets|tercihler sayfasında]] etkin hale getirebileceği, [[MediaWiki:Gadgets-definition|tanımlarla]] belirtildiği gibi, özel gadgetlerin bir listesidir.\nBu genel bakış, her gadget'in tanımını ve kodunu belirten sistem mesaj sayfalarına kolay erişim sağlar.",
+ "gadgets-uses": "Şunu kullanıyor",
+ "gadgets-required-rights": "Aşağıda gösterilen {{PLURAL:$2|hak|haklar}} gereklidir:\n\n$1",
+ "gadgets-required-skins": "Kullanılabilecek {{PLURAL:$2|$1 tema|temalar: $1}}.",
+ "gadgets-default": "Herkes için varsayılan olarak etkindir.",
+ "gadgets-export": "Dışa aktar",
+ "gadgets-export-title": "Gadget dışa aktarımı",
+ "gadgets-not-found": "Gadget \"$1\" bulunamadı.",
+ "gadgets-export-text": "$1 gadgetini dışa aktarmak için \"{{int:gadgets-export-download}}\" düğmesine tıklayın, yüklenen dosyayı kaydedin, hedef vikide Special:Import sayfasına gidin ve yükleyin. Sonra aşağıdakini MediaWiki:Gadgets-definition sayfasına ekleyin:\n<pre>$2</pre>\nHedef vikide uygun izinlerinizin olması (sistem mesajlarını değiştirmek yetkisi dahil) ve dosyadan içe aktarmanın etkinleştirilmiş olması gerekir.",
+ "gadgets-export-download": "İndir",
+ "apihelp-query+gadgetcategories-description": "Döner gadget kategori listesi.",
+ "apihelp-query+gadgetcategories-param-prop": "Kategori bilgi almak için ne gadget:\n;adı:İç kategori adı.\n;konu başlığı:Kategori Başlığı.\n;üyeler:kategorideki araçların Sayısı.",
+ "apihelp-query+gadgetcategories-param-names": "Almak için kategorilerin adlarını.",
+ "apihelp-query+gadgetcategories-example-1": "Mevcut gadget kategori listesi",
+ "apihelp-query+gadgetcategories-example-2": "Kategoriler \"foo\" ve \"bar\"adlı hakkında tüm bilgi almak",
+ "apihelp-query+gadgets-description": "Döner araçlar bu wiki üzerinde bulundurmalıdır.",
+ "apihelp-query+gadgets-param-prop": "Bilgi almak için ne gadget:\n;ıd:İç gadget ID.\n;meta:gadget metadata.\n;tanım:Gadget açıklama HTML (Eğer gerçekten gerekirse yavaş, sadece kullanmak olabilir) dönüştü.",
+ "apihelp-query+gadgets-param-categories": "Almak için ne gelen araçlar.",
+ "apihelp-query+gadgets-param-ids": "Araçların kimliği almak için.",
+ "apihelp-query+gadgets-param-allowedonly": "Liste sadece araçlar geçerli kullanıcı için izin verdi.",
+ "apihelp-query+gadgets-param-enabledonly": "Liste sadece araçlar geçerli kullanıcı tarafından etkinleştirilebilir.",
+ "apihelp-query+gadgets-example-1": "Kendi açıklamaları ile birlikte araçların listesi",
+ "apihelp-query+gadgets-example-2": "Mümkün olan tüm özelliklere sahip araçların bir listesini almak",
+ "apihelp-query+gadgets-example-3": "Araçlar kategoriye ait bir liste olsun \"foo\"",
+ "apihelp-query+gadgets-example-4": "Araçlar hakkında bilgi \"\" ve \"bar\"foo al",
+ "apihelp-query+gadgets-example-5": "Araçlar geçerli kullanıcı tarafından etkin bir listesini almak"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/tt-cyrl.json b/www/wiki/extensions/Gadgets/i18n/tt-cyrl.json
new file mode 100644
index 00000000..30b4c1bb
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/tt-cyrl.json
@@ -0,0 +1,20 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ильнар"
+ ]
+ },
+ "prefs-gadgets": "Гаджетлар",
+ "gadgets": "Гаджетлар",
+ "gadgetusage-gadget": "Гаджет",
+ "gadgetusage-usercount": "Кулланучылар саны",
+ "gadgetusage-noresults": "Бернинди дә гаджетлар табылмады.",
+ "gadgetusage-activeusers": "Актив кулланучылар",
+ "gadgetusage-default": "Килешү буенча",
+ "gadgets-title": "Гаджетлар",
+ "gadgets-uses": "Кулланыла",
+ "gadgets-export": "Экспортлау",
+ "gadgets-export-title": "Гаджетны экспортлау",
+ "gadgets-not-found": "\"$1\" гаджеты табылмады.",
+ "gadgets-export-download": "Йөкләү"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/ug-arab.json b/www/wiki/extensions/Gadgets/i18n/ug-arab.json
new file mode 100644
index 00000000..002fe79d
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/ug-arab.json
@@ -0,0 +1,10 @@
+{
+ "@metadata": {
+ "authors": [
+ "Sahran"
+ ]
+ },
+ "gadgets-uses": "ئىشلىتىش",
+ "gadgets-export": "چىقار",
+ "gadgets-export-download": "چۈشۈر"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/uk.json b/www/wiki/extensions/Gadgets/i18n/uk.json
new file mode 100644
index 00000000..35cc0aa1
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/uk.json
@@ -0,0 +1,68 @@
+{
+ "@metadata": {
+ "authors": [
+ "AS",
+ "Ahonc",
+ "Andriykopanytsia",
+ "Dim Grits",
+ "Olvin",
+ "Prima klasy4na",
+ "RLuts",
+ "Riwnodennyk",
+ "Sodmy",
+ "Тест",
+ "Ата",
+ "Base",
+ "Lxlalexlxl",
+ "Piramidion"
+ ]
+ },
+ "gadgets-desc": "Дозволяє користувачам обирати [[Special:Gadgets|CSS- та JavaScript-додатки]] у своїх [[Special:Preferences#mw-prefsection-gadgets|налаштуваннях]]",
+ "prefs-gadgets": "Додатки",
+ "gadgets-prefstext": "Нижче наведено перелік особливих додатків, які ви можете ввімкнути для свого облікового запису.\nЦі додатки переважно засновані на JavaScript, тому ви маєте ввімкнути JavaScript для того, щоб вони працювали.\nЗауважте, що на цій сторінці налаштувань такі додатки не працюватимуть.\n\nТакож зауважте, що ці додатки не є частиною MediaWiki й зазвичай розробляються та обслуговуються дописувачами цієї локальної вікі.\nАдміністратори можуть змінювати перелік додатків за допомогою сторінок їх [[MediaWiki:Gadgets-definition|визначення]] та [[Special:Gadgets|опису]]. Кількість користувачів кожного додатка у цій вікі подано на сторінці [[Special:GadgetUsage|статистики використання додатків]].",
+ "gadgets": "Додатки",
+ "gadgetusage": "Статистика використання додатків",
+ "gadgetusage-gadget": "Додаток",
+ "gadgetusage-usercount": "Кількість користувачів",
+ "gadgetusage-noresults": "Додатків не знайдено.",
+ "gadgetusage-intro": "Ця таблиця показує кількість користувачів, які увімкнули кожен додаток у цій вікі. Активними користувачам вважаються ті, що зробили щонайменше одне редагування за {{PLURAL:$1|останній $1 день|останні $1 днів}}. Список не містить статистики додатків, доступних для всіх, і може включати додатки, які більше не доступні.",
+ "gadgetusage-intro-noactive": "Ця таблиця показує кількість користувачів, які увімкнули кожен додаток у цій вікі. Список не містить статистики для додатків, доступних для всіх, і може включати додатки, які більше не доступні.",
+ "gadgetusage-activeusers": "Активні користувачі",
+ "gadgetusage-default": "Стандартно",
+ "gadgets-title": "Додатки",
+ "gadgets-pagetext": "Нижче наведено перелік додатків, які можна ввімкнути на [[Special:Preferences#mw-prefsection-gadgets|сторінці налаштувань]]. Цей перелік задано на [[MediaWiki:Gadgets-definition|сторінці визначень]].\nТаким чином, можна отримати простий доступ до системних сторінок, де задається опис кожного додатку та його код.",
+ "gadgets-uses": "Використовує",
+ "gadgets-required-rights": "{{PLURAL:$2|1=Потрібне право|Потрібні такі права}}:\n\n$1",
+ "gadgets-required-skins": "Доступний на {{PLURAL:$2|1=$1 skin|наступних темах оформлення: $1}}.",
+ "gadgets-default": "Увімкнено для всіх за замовчуванням.",
+ "gadgets-legacy": "Додаток не завантажено. Будь ласка, здійсніть міграцію на ResourceLoader. ([https://www.mediawiki.org/wiki/ResourceLoader/Migration_guide_(users) Дізнатися більше])",
+ "gadgets-export": "Експортувати",
+ "gadgets-export-title": "Експорт додатка",
+ "gadgets-not-found": "Додаток \"$1\" не знайдено.",
+ "gadgets-export-text": "Аби експортувати додаток $1, натисніть «{{int:gadgets-export-download}}», збережіть завантажений файл,\nперейдіть до Special:Import на потібній віці і відвантажте його там. Тоді додайте наступний текст на сторінку MediaWiki:Gadgets-definition:\n<pre>$2</pre>\nВи повинні мати відповідні права на цільовій віці (зокрема на редагування системних повідомлень), окрім того має бути ввімкнена можливість імпорту з файлу.",
+ "gadgets-export-download": "Завантажити",
+ "gadgets-validate-notset": "Властивість <code>$1</code> не встановлено.",
+ "gadgets-validate-wrongtype": "Тип властивості <code>$1</code> має бути <code>$2</code> замість <code>$3</code>.",
+ "apihelp-query+gadgetcategories-description": "Видає список категорій ґаджетів.",
+ "apihelp-query+gadgetcategories-summary": "Видає список категорій додатків.",
+ "apihelp-query+gadgetcategories-param-prop": "Яку категорію ґаджетів отримати:\n;name:Внутрішнє ім'я категорії.\n;title:Назва категорії.\n;members:Кількість ґаджетів у категорії.",
+ "apihelp-query+gadgetcategories-param-names": "Імена категорій для виведення.",
+ "apihelp-query+gadgetcategories-example-1": "Отримати список наявних категорій ґаджетів",
+ "apihelp-query+gadgetcategories-example-2": "Отримати всю інформацію про категорії з іменами «foo» і «bar»",
+ "apihelp-query+gadgets-description": "Видає список ґаджетів, використовуваних у цій вікі.",
+ "apihelp-query+gadgets-summary": "Видає список додатків, використовуваних у цій вікі.",
+ "apihelp-query+gadgets-param-prop": "Яку інформацію про ґаджет отримати:\n;id:Внутрішній ID ґаджета.\n;metadata:Метадані ґаджета.\n;desc:Опис ґаджета, перетворений у HTML (може бути повільно, використовуйте за справжньої потреби).",
+ "apihelp-query+gadgets-param-categories": "Ґаджети з яких категорій отримувати.",
+ "apihelp-query+gadgets-param-ids": "ID ґаджетів для отримання.",
+ "apihelp-query+gadgets-param-allowedonly": "Список лише дозволених даному користувачеві ґаджетів.",
+ "apihelp-query+gadgets-param-enabledonly": "Список лише увімкнених даним користувачем ґаджетів.",
+ "apihelp-query+gadgets-example-1": "Отримати список ґаджетів разом з їх описами",
+ "apihelp-query+gadgets-example-2": "Отримати список ґаджетів з усіма можливими властивостями",
+ "apihelp-query+gadgets-example-3": "Отримати список ґаджетів, які належать до категорії «foo»",
+ "apihelp-query+gadgets-example-4": "Отримати інформацію про ґаджети «foo» і «bar»",
+ "apihelp-query+gadgets-example-5": "Отримати список ґаджетів, увімкнених даним користувачем",
+ "right-gadgets-edit": "редагування сторінок додатків на JavaScript та CSS",
+ "action-gadgets-edit": "редагування JavaScript- чи CSS-сторінки цього додатку",
+ "right-gadgets-definition-edit": "редагування визначень додатків",
+ "action-gadgets-definition-edit": "редагування визначення цього додатку"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/ur.json b/www/wiki/extensions/Gadgets/i18n/ur.json
new file mode 100644
index 00000000..93449d20
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/ur.json
@@ -0,0 +1,30 @@
+{
+ "@metadata": {
+ "authors": [
+ "Muhammad Shuaib",
+ "පසිඳු කාවින්ද",
+ "BukhariSaeed"
+ ]
+ },
+ "prefs-gadgets": "آلات",
+ "gadgets-prefstext": "ذیل میں خصوصی آلات کی فہرست درج ہے جنہیں آپ اپنے کھاتہ کے لیے فعال کرسکتے ہیں۔ چونکہ یہ آلات زیادہ تر جاوا اسکرپٹ پر مبنی ہیں اس لیے آپ کے براؤزر میں جاوا اسکرپٹ فعال ہونا ضروری ہے۔ خیال رہے کہ یہ آلات ترجیحات کے اس صفحہ پر اثر انداز نہیں ہوتے۔\n\nواضح رہے کہ یہ آلات میڈیاویکی سوفٹ ویئر کا حصہ نہیں ہیں، بلکہ ان کے ترقی دہندگان اور منتظمین آپ کے مقامی ویکی کے صارفین ہوتے ہیں۔ مقامی منتظمین صفحۂ [[MediaWiki:Gadgets-definition|تعریفات]] اور صفحۂ [[Special:Gadgets|توضیحات]] کے ذریعہ دستیاب آلات میں ترمیم کر سکتے ہیں۔ کس آلے کو کتنے صارفین استعمال کر رہے ہیں اس کے اعداد و شمار [[Special:GadgetUsage|یہاں]] دستیاب ہیں۔",
+ "gadgets": "آلات",
+ "gadgetusage": "آلات کے استعمال کے اعداد و شمار",
+ "gadgetusage-gadget": "آلہ",
+ "gadgetusage-usercount": "صارفین کی تعداد",
+ "gadgetusage-noresults": "کوئی آلہ نہیں مل سکا۔",
+ "gadgetusage-intro": "اس جدول میں ان صارفین کی تعداد درج ہے جنہوں نے اس ویکی پر آلات فعال کر رکھے ہیں۔ متحرک صارف اسے سمجھا جاتا ہے جس نے گزشتہ {{PLURAL:$1|دن|$1 دنوں}} میں کم از کم ایک ترمیم کی ہو۔\nواضح رہے کہ اس فہرست میں وہ آلات شامل نہیں ہیں جو ابتدائی طور پر تمام صارفین کے لیے فعال ہوں نیز اس بات کا بھی امکان ہے کہ فہرست میں ایسے آلات درج ہوں جو اب دستیاب نہیں ہیں۔",
+ "gadgetusage-activeusers": "فعال صارفین",
+ "gadgetusage-default": "طے شدہ",
+ "gadgets-title": "آلات",
+ "gadgets-pagetext": "ذیل میں خصوصی آلات کی فہرست درج ہے جنھیں صارفین اپنی [[Special:Preferences#mw-prefsection-gadgets|ترجیحات]] سے فعال کر سکتے ہیں، ان آلات کا صفحہ تعریفات [[MediaWiki:Gadgets-definition|یہاں]] موجود ہے۔ اس صفحہ کے ذریعہ ان آلات کے نظامی پیغام اور ان کی اسکرپٹ تک بآسانی رسائی حاصل کی جا سکتی ہے۔",
+ "gadgets-uses": "استعمال کرتا ہے",
+ "gadgets-required-rights": "حسب ذیل {{PLURAL:$2|اختیار|اختیارات}} درکار {{PLURAL:$2|ہے|ہیں}}:\n\n$1",
+ "gadgets-default": "ابتدائی طور پر ہر ایک کے لیے فعال ہے۔",
+ "gadgets-export": "برآمد",
+ "gadgets-export-title": "برآمد آلہ",
+ "gadgets-export-download": "ڈاؤنلوڈ",
+ "right-gadgets-edit": "آلات کے جاوا اسکرپٹ اور سی ایس ایس صفحات میں ترمیم",
+ "right-gadgets-definition-edit": "آلات کے صفحہ تعریفات میں ترمیم",
+ "action-gadgets-definition-edit": "اس آلہ کی تعریف میں ترمیم کریں"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/uz.json b/www/wiki/extensions/Gadgets/i18n/uz.json
new file mode 100644
index 00000000..0cd90569
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/uz.json
@@ -0,0 +1,10 @@
+{
+ "@metadata": {
+ "authors": [
+ "CoderSI"
+ ]
+ },
+ "prefs-gadgets": "Gadjetlar",
+ "gadgets": "Gadjetlar",
+ "gadgets-title": "Gadjetlar"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/vec.json b/www/wiki/extensions/Gadgets/i18n/vec.json
new file mode 100644
index 00000000..e12d7b0a
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/vec.json
@@ -0,0 +1,23 @@
+{
+ "@metadata": {
+ "authors": [
+ "Candalua",
+ "GatoSelvadego"
+ ]
+ },
+ "gadgets-desc": "Consente ai utenti de selezionar [[Special:Gadgets|acessori CSS e JavaScript]] ne le proprie [[Special:Preferences#mw-prefsection-gadgets|preferense]]",
+ "prefs-gadgets": "Acessori",
+ "gadgets-prefstext": "De seguito se cata na lista de acessori speciali (''gadget'') che se pol abilitar par el proprio account.\nLa mazor parte de sti acessori la se basa su JavaScript, e quindi te ghè da abilitar JavaScript sul to browser se te vol che i funsiona coretamente. Nota che i accessori no i gà nissun efeto in sta pagina de preferense.\n\nNota anca che sti acessori speciali no i fa parte del software MediaWiki e i vien de solito realizà e gestìi dai utenti de ogni sito wiki. I aministradori del sito i pol modificar la lista dei acessori disponibili tramite le pagine [[MediaWiki:Gadgets-definition|definissioni]] e [[Special:Gadgets|descrissioni]].",
+ "gadgets": "Acessori",
+ "gadgets-title": "Acessori",
+ "gadgets-pagetext": "De seguito vien presentà n'elenco de acessori (''gadget'') che i utenti i pol abilitar su la so [[Special:Preferences#mw-prefsection-gadgets|pagina de le preferenze]], seguendo le definizion riportà in [[MediaWiki:Gadgets-definition]].\nSta panoramica la fornisse un comodo mecanismo par accédar ai messagi de sistema nei quali xe definìo la descrizion e el codice de ciascun acessorio.",
+ "gadgets-uses": "Dopara",
+ "gadgets-required-rights": "Dimanda {{PLURAL:$2|el seguente dirito|i seguenti diriti}}:\n\n$1",
+ "gadgets-required-skins": "Disponibiłe {{PLURAL:$2|pa' ła skin $1|pa' łe seguenti skin: $1}}.",
+ "gadgets-default": "Ativà par tuti, par inpostasion predefinia.",
+ "gadgets-export": "Esporta",
+ "gadgets-export-title": "Esporta acessorio",
+ "gadgets-not-found": "Acessorio \"$1\" mia catà.",
+ "gadgets-export-text": "Par esportar el gadget $1, struca \"{{int:gadgets-export-download}}\", salva el file, va su Special:Import de la wiki de destinassion e carichelo. Dopo zonta sta roba qua su MediaWiki:Gadgets-definition:\n<pre>$2</pre>\nTe serve i parmessi su la wiki de destinassion (compreso quelo de modificar i messaji de sistema) e l'inportassion dei file la deve essar ativà.",
+ "gadgets-export-download": "Descarga"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/vep.json b/www/wiki/extensions/Gadgets/i18n/vep.json
new file mode 100644
index 00000000..712e0f22
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/vep.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "Игорь Бродский"
+ ]
+ },
+ "prefs-gadgets": "Gadžetad",
+ "gadgets": "Gadžetad:",
+ "gadgets-title": "Gadžetad",
+ "gadgets-uses": "Kävutab",
+ "gadgets-export": "Eksportiruida",
+ "gadgets-export-title": "Gadžetan eksportiruind"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/vi.json b/www/wiki/extensions/Gadgets/i18n/vi.json
new file mode 100644
index 00000000..262923e1
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/vi.json
@@ -0,0 +1,52 @@
+{
+ "@metadata": {
+ "authors": [
+ "Meno25",
+ "Minh Nguyen",
+ "Vinhtantran",
+ "Prenn",
+ "Nguyên Lê"
+ ]
+ },
+ "gadgets-desc": "Để các thành viên chọn những [[Special:Gadgets|tiện ích]] đặc chế bằng CSS và JavaScript trong [[Special:Preferences#mw-prefsection-gadgets|tùy chọn]]",
+ "prefs-gadgets": "Tiện ích",
+ "gadgets-prefstext": "Dưới đây là danh sách các tiện ích đặc biệt mà bạn có thể kích hoạt cho tài khoản của mình.\nNhững tiện ích này chủ yếu dựa trên JavaScript, do đó bạn phải kích hoạt JavaScript trong trình duyệt để các tiện ích này hoạt động.\nChú ý rằng những tiện ích này sẽ không có tác dụng trong trang tùy chọn cá nhân.\n\nCũng chú ý rằng những tiện ích đặc biệt này không phải là một phần của phần mềm MediaWiki, mà thường được phát triển và bảo trì bởi những thành viên ở wiki của họ. Những quản lý ở từng ngôn ngữ có thể sửa đổi các tiện ích có sẵn từ các danh sách [[MediaWiki:Gadgets-definition|định nghĩa]] và [[Special:Gadgets|miêu tả]]. Xem các tiện ích theo số người dùng tại wiki này tại [[Special:GadgetUsage|Thống kê sử dụng tiện ích]].",
+ "gadgets": "Tiện ích",
+ "gadgetusage": "Thống kê sử dụng tiện ích",
+ "gadgetusage-gadget": "Tiện ích",
+ "gadgetusage-usercount": "Số người dùng",
+ "gadgetusage-noresults": "Không tìm thấy tiện ích nào.",
+ "gadgetusage-intro": "Bảng này cung cấp thông tin về số người dùng đã kích hoạt các tiện ích trên wiki này. Người dùng tích cực là người đã thực hiện một sửa đổi {{PLURAL:$1|vào ngày qua|trong $1 ngày qua}}. Danh sách này bỏ qua thống kê về các tiện ích được kích hoạt cho mọi người theo mặc định và có thể bao gồm cả các tiện ích hiện trước đây mà hiện không còn nữa.",
+ "gadgetusage-intro-noactive": "Bảng này cho biết số người dùng mỗi tiện ích trên wiki này. Danh sách này bỏ qua các tiện ích được kích hoạt cho mọi người theo mặc định và có thể bao gồm cả các tiện ích không còn được thiết lập.",
+ "gadgetusage-activeusers": "Số thành viên tích cực",
+ "gadgetusage-default": "Mặc định",
+ "gadgets-title": "Tiện ích",
+ "gadgets-pagetext": "Dưới đây là danh sách các tiện ích đặc biệt mà thành viên có thể dùng tại [[Special:Preferences#mw-prefsection-gadgets|trang tùy chọn cá nhân]] của họ, theo [[MediaWiki:Gadgets-definition|định nghĩa]]. Trang tổng quan này cung cấp cách tiếp cận dễ dàng đến trang các thông điệp hệ thống để định nghĩa miêu tả và mã của từng tiện ích.",
+ "gadgets-uses": "Sử dụng",
+ "gadgets-required-rights": "Cần {{PLURAL:$2|quyền|các quyền}} sau:\n\n$1",
+ "gadgets-required-skins": "Có sẵn trên {{PLURAL:$2|giao diện $1|các giao diện: $1}}.",
+ "gadgets-default": "Được kích hoạt cho tất cả mọi người theo mặc định.",
+ "gadgets-legacy": "Tiện ích không được tải. Xin vui lòng chuyển đổi tiện ích qua hệ thống ResourceLoader. ([https://www.mediawiki.org/wiki/ResourceLoader/Migration_guide_(users) Tìm hiểu thêm])",
+ "gadgets-export": "Xuất",
+ "gadgets-export-title": "Xuất tiện ích",
+ "gadgets-not-found": "Không tìm thấy tiện ích “$1”.",
+ "gadgets-export-text": "Để xuất tiện ích $1, hãy bấm nút “{{int:gadgets-export-download}}”, lưu tập tin được tải về, mở trang Special:Import trên wiki đích và tải nó lên. Sau đó, thêm mã này vào trang MediaWiki:Gadgets-definition:\n<pre>$2</pre>\nBạn phải có đủ quyền truy cập trên wiki đích (bao gồm quyền sửa đổi thông điệp hệ thống) và wiki phải bật chức năng xuất từ tập tin tải lên.",
+ "gadgets-export-download": "Tải về",
+ "gadgets-validate-notset": "Thuộc tính <code>$1</code> không được đặt.",
+ "gadgets-validate-wrongtype": "Thuộc tính <code>$1</code> phải là kiểu <code>$2</code> thay vì <code>$3</code>.",
+ "apihelp-query+gadgetcategories-description": "Cho ra danh sách thể loại tiện ích.",
+ "apihelp-query+gadgetcategories-param-names": "Tên của các thể loại để lấy.",
+ "apihelp-query+gadgetcategories-example-1": "Lấy danh sách các thể loại tiện ích đang tồn tại",
+ "apihelp-query+gadgetcategories-example-2": "Lấy tất cả thông tin về các thể loại có tên “foo” và “bar”",
+ "apihelp-query+gadgets-description": "Cho ra danh sách các tiện ích được sử dụng trên wiki này.",
+ "apihelp-query+gadgets-param-ids": "ID của các tiện ích để lấy.",
+ "apihelp-query+gadgets-param-allowedonly": "Chỉ liệt kê các tiện ích mà người dùng hiện tại có phép sử dụng.",
+ "apihelp-query+gadgets-param-enabledonly": "Chỉ liệt kê các tiện ích được kích hoạt bởi người dùng hiện tại.",
+ "apihelp-query+gadgets-example-3": "Lấy danh sách các tiện ích thuộc thể loại “foo”",
+ "apihelp-query+gadgets-example-4": "Lấy thông tin về các tiện ích “foo” và “bar”",
+ "apihelp-query+gadgets-example-5": "Lấy danh sách các tiện ích được kích hoạt bởi người dùng hiện tại",
+ "right-gadgets-edit": "Sửa đổi trang tiện ích JavaScript và CSS",
+ "action-gadgets-edit": "sửa đổi trang tiện ích JavaScript hoặc CSS này",
+ "right-gadgets-definition-edit": "Sửa đổi các định nghĩa tiện ích",
+ "action-gadgets-definition-edit": "sửa đổi định nghĩa của tiện ích này"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/vo.json b/www/wiki/extensions/Gadgets/i18n/vo.json
new file mode 100644
index 00000000..31f2b1d0
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/vo.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Smeira"
+ ]
+ },
+ "gadgets-uses": "Gebs"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/xmf.json b/www/wiki/extensions/Gadgets/i18n/xmf.json
new file mode 100644
index 00000000..b5a21f8a
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/xmf.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "Silovan"
+ ]
+ },
+ "right-gadgets-edit": "გაჯეტიშ JavaScript დო CSS ხასჷლეფიშ რედაქტირაფა",
+ "action-gadgets-edit": "თე გაჯეტიშ JavaScript ვარდა CSS ხასჷლაშ რედაქტირაფა",
+ "right-gadgets-definition-edit": "გაჯეტიშ გოთანჯუაშ რედაქტირაფა",
+ "action-gadgets-definition-edit": "თე გაჯეტიშ გოთანჯუაშ რედაქტირაფა"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/yi.json b/www/wiki/extensions/Gadgets/i18n/yi.json
new file mode 100644
index 00000000..457cd373
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/yi.json
@@ -0,0 +1,21 @@
+{
+ "@metadata": {
+ "authors": [
+ "פוילישער"
+ ]
+ },
+ "gadgets-desc": "דערמעגלעכט באניצער אויסקלייבן [[Special:Gadgets|CSS און JavaScript דזשימדזשיקעס]] אין זייערע [[Special:Preferences#mw-prefsection-gadgets|פרעפֿערענצן]]",
+ "prefs-gadgets": "דזשימדזשיקעס",
+ "gadgets": "דזשימדזשיקעס",
+ "gadgets-title": "דזשימדזשיקעס",
+ "gadgets-pagetext": "אונטן איז א רשימה פון דזשימדזשיקעס וואס באניצער קענען אקטיוויזירן דורך זיין [[Special:Preferences#mw-prefsection-gadgets|פרעפֿערענצן בלאט]], לויט ווי זיי זענען באשטימט אין די [[MediaWiki:Gadgets-definition|דעפֿיניציעס]].\nדער איבערבליק גיט א גרינגן צוטריט צו די סיסטעם בלעטער וואס דעפֿינירן די שילדערונג און קאד פון יעדן דזשימדזשיק.",
+ "gadgets-uses": "באניצט",
+ "gadgets-required-rights": "פֿאדערט {{PLURAL:$2|דאס פֿאלגנדע רעכט|די פֿאלגנדע רעכטן}}:\n\n$1",
+ "gadgets-required-skins": "פֿאראן ביי {{PLURAL:$2|$1 דער באניצער אייבערפֿלאך|פֿאלגנדע באניצער אייבערפֿלאכן: $1}}.",
+ "gadgets-default": "אקטיווירט פֿאר אלעמען סטאנדארדמעסיק.",
+ "gadgets-export": "עקספארטירן",
+ "gadgets-export-title": "דזשימדזשיק עקספארט",
+ "gadgets-not-found": "דזשימדזשיק \"$1\" נישט געטראפֿן.",
+ "gadgets-export-text": "כדי צו עקספארטירן דעם $1 דזשימדזשיק, קליקט אויפן \"{{int:gadgets-export-download}}\" קנעפל, שפייכלערט איין די אראפגעלאדענע טעקע,\nגייט צו Special:Import אין דער ציל וויקי און טוט זי ארויפלאדן. דערנאך לייגט צו דעם פאלגנד צום בלאט MediaWiki:Gadgets-definition page:\n<pre>$2</pre>\nאיר דארפט האבן פאסיגע ערלויבנישן אויף דער ציל וויקי (כולל די רעכט צו רעדאקטירן סיסטעם מעלדונגען) און אימפארט פון טעקע ארויפלאדן מוז זיין אקטיווירט.",
+ "gadgets-export-download": "אַראָפלאָדן"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/yo.json b/www/wiki/extensions/Gadgets/i18n/yo.json
new file mode 100644
index 00000000..e4875ddb
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/yo.json
@@ -0,0 +1,10 @@
+{
+ "@metadata": {
+ "authors": [
+ "Demmy"
+ ]
+ },
+ "gadgets-uses": "Àwọn ìlò",
+ "gadgets-export": "Ìkójáde",
+ "gadgets-export-download": "Ìrùsílẹ̀"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/yue.json b/www/wiki/extensions/Gadgets/i18n/yue.json
new file mode 100644
index 00000000..e38ae9c4
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/yue.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Shinjiman"
+ ]
+ },
+ "gadgets-desc": "畀用戶響佢哋嘅[[Special:Preferences#mw-prefsection-gadgets|喜好設定]]度設定自定嘅[[Special:Gadgets|CSS同埋JavaScript小工具]]",
+ "prefs-gadgets": "小工具",
+ "gadgets-prefstext": "下面係一個特別小工具,你可以響你個戶口度啟用。\n呢啲小工具多數都係基於JavaScript建造,如果要開佢哋,噉個瀏覽器嘅JavaScript就需要啟用咗先至用得到。\n要留意嘅就係呢啲小工具響呢個喜好設定版度係無效果嘅。\n\n亦都同時留意呢啲小工具嘅特別頁唔係MediaWiki軟件嘅一部份,通常都係由你本地嘅wiki度開發同維護。本地管理員可以響[[MediaWiki:Gadgets-definition]]同埋[[Special:Gadgets]]編輯可以用到嘅小工具。",
+ "gadgets": "小工具",
+ "gadgets-title": "小工具",
+ "gadgets-pagetext": "下面係一個按照[[MediaWiki:Gadgets-definition]]嘅定義特別小工具清單,用戶可以響佢哋嘅喜好設定頁度開佢哋。\n呢個概覽提供嘅系統信息頁嘅簡易存取,可以定義每個小工具嘅描述同埋碼。",
+ "gadgets-uses": "用"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/zh-hans.json b/www/wiki/extensions/Gadgets/i18n/zh-hans.json
new file mode 100644
index 00000000..54a08f8a
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/zh-hans.json
@@ -0,0 +1,70 @@
+{
+ "@metadata": {
+ "authors": [
+ "Anakmalaysia",
+ "Bencmq",
+ "Gaoxuewei",
+ "Hydra",
+ "Liangent",
+ "Shinjiman",
+ "Xiaomingyan",
+ "Yfdyh000",
+ "阿pp",
+ "Mywood",
+ "Impersonator 1",
+ "Liuxinyu970226",
+ "御坂美琴",
+ "Dimension",
+ "PhiLiP",
+ "飞舞回堂前"
+ ]
+ },
+ "gadgets-desc": "允许用户在其[[Special:Preferences#mw-prefsection-gadgets|系统设置]]中选择自定义[[Special:Gadgets|CSS和JavaScript工具]]",
+ "prefs-gadgets": "小工具",
+ "gadgets-prefstext": "下面是您可以为您的账户启用的特殊小工具的列表。这些小工具大多数基于JavaScript,所以您的浏览器需要启用JavaScript以使它们生效。请注意这些小工具不会在这个设置页面上产生效果。\n\n同时请注意,这些特殊小工具不是MediaWiki软件的组成部分,它们通常是由您的本地wiki的用户开发并维护的。本地管理员可以编辑可用小工具的[[MediaWiki:Gadgets-definition|定义]]和[[Special:Gadgets|说明]]。该wiki上每个小工具的用户数量列于[[Special:GadgetUsage|小工具使用统计]]页面中。",
+ "gadgets": "小工具",
+ "gadgetusage": "小工具使用统计",
+ "gadgetusage-gadget": "小工具",
+ "gadgetusage-usercount": "用户人数",
+ "gadgetusage-noresults": "没有找到小工具。",
+ "gadgetusage-intro": "此表格表明在此wiki上启用了每个小工具的用户数量。活跃用户可被看做最近{{PLURAL:$1|一天|$1天}}内做出编辑的用户。此列表不包括为所有人默认启用的小工具的统计数据,并可能包含不再可用的小工具。",
+ "gadgetusage-intro-noactive": "此表格表明在此wiki上启用了每个小工具的用户数量。此列表排除了为所有人默认启用的小工具的统计信息,并可能包含不再可用的小工具。",
+ "gadgetusage-activeusers": "活跃用户",
+ "gadgetusage-default": "默认",
+ "gadgets-title": "小工具",
+ "gadgets-pagetext": "下面是用户可以在他们的[[Special:Preferences#mw-prefsection-gadgets|设置页面]]启用的特殊小工具的列表,由[[MediaWiki:Gadgets-definition|定义]]确定。这个概览提供便捷访问确定每个小工具的说明和代码的系统信息页面的途径。",
+ "gadgets-uses": "使用",
+ "gadgets-required-rights": "需要以下{{PLURAL:$2|权限}}:\n\n$1",
+ "gadgets-required-skins": "可用在{{PLURAL:$2|$1外观|以下外观:$1}}。",
+ "gadgets-default": "默认所有人启用。",
+ "gadgets-legacy": "未加载小工具。请迁移至ResourceLoader。\n([https://www.mediawiki.org/wiki/ResourceLoader/Migration_guide_(users) 了解更多])",
+ "gadgets-export": "导出",
+ "gadgets-export-title": "导出小工具",
+ "gadgets-not-found": "找不到“$1”小工具。",
+ "gadgets-export-text": "要导出$1小工具,请单击“{{int:gadgets-export-download}}”按钮,保存下载的文件,前往目标wiki的Special:Import并将文件上传。然后添加下内容至MediaWiki:Gadgets-definition页面:\n<pre>$2</pre>\n您必须在目标wiki上拥有适当的权限(包括编辑系统信息的权限),并且启用从文件上传导入。",
+ "gadgets-export-download": "下载",
+ "gadgets-validate-notset": "属性<code>$1</code>未被设置。",
+ "gadgets-validate-wrongtype": "属性<code>$1</code>的类型必须为<code>$2</code>,而不是<code>$3</code>。",
+ "apihelp-query+gadgetcategories-description": "返回小工具分类列表。",
+ "apihelp-query+gadgetcategories-summary": "返回小工具分类列表。",
+ "apihelp-query+gadgetcategories-param-prop": "要获取的小工具分类信息:\n;name:内部分类名称。\n;title:分类标题。\n;members:分类中的小工具数量。",
+ "apihelp-query+gadgetcategories-param-names": "要获取的分类名。",
+ "apihelp-query+gadgetcategories-example-1": "获取现有小工具分类的列表",
+ "apihelp-query+gadgetcategories-example-2": "获取所有有关名称为“foo”和“bar”的分类的信息",
+ "apihelp-query+gadgets-description": "返回一个本Wiki上的小工具的列表。",
+ "apihelp-query+gadgets-summary": "返回一个本Wiki上的小工具的列表。",
+ "apihelp-query+gadgets-param-prop": "要获取的小工具信息:\n;id:内部小工具ID。\n;metadata:小工具元数据。\n;desc:小工具说明转换成HTML(较慢,只在需要的时候使用)。",
+ "apihelp-query+gadgets-param-categories": "来自要检索的分类的小工具。",
+ "apihelp-query+gadgets-param-ids": "要检索的小工具ID。",
+ "apihelp-query+gadgets-param-allowedonly": "只列出允许当前用户使用的小工具。",
+ "apihelp-query+gadgets-param-enabledonly": "只列出当前用户启用的小工具。",
+ "apihelp-query+gadgets-example-1": "获取小工具列表,连带它们的说明",
+ "apihelp-query+gadgets-example-2": "获取含全部可能属性的小工具列表",
+ "apihelp-query+gadgets-example-3": "获取属于分类“foo”的小工具列表",
+ "apihelp-query+gadgets-example-4": "获取有关小工具“foo”和“bar”的信息",
+ "apihelp-query+gadgets-example-5": "获取当前用户启用的小工具列表",
+ "right-gadgets-edit": "编辑小工具的JavaScript和CSS页面",
+ "action-gadgets-edit": "编辑此小工具的JavaScript或CSS页面",
+ "right-gadgets-definition-edit": "编辑小工具定义",
+ "action-gadgets-definition-edit": "编辑此小工具的定义"
+}
diff --git a/www/wiki/extensions/Gadgets/i18n/zh-hant.json b/www/wiki/extensions/Gadgets/i18n/zh-hant.json
new file mode 100644
index 00000000..c6336455
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/i18n/zh-hant.json
@@ -0,0 +1,65 @@
+{
+ "@metadata": {
+ "authors": [
+ "Anakmalaysia",
+ "Danny0838",
+ "Gakmo",
+ "Horacewai2",
+ "Justincheng12345",
+ "Liangent",
+ "Mark85296341",
+ "Shinjiman",
+ "Waihorace",
+ "Cwlin0416",
+ "LNDDYL",
+ "Liuxinyu970226",
+ "Bowleerin",
+ "PhiLiP",
+ "Translatealcd",
+ "Kly"
+ ]
+ },
+ "gadgets-desc": "讓使用者可以於 [[Special:Preferences#mw-prefsection-gadgets|偏好設定]] 中自訂 [[Special:Gadgets|CSS 與 JavaScript 的小工具]]",
+ "prefs-gadgets": "小工具",
+ "gadgets-prefstext": "以下列出可在您的帳號開啟的特殊小工具。\n這些小工具大多使用 JavaScript 開發,因此瀏覽器必須開啟 JavaScript 才能夠正常運作。\n注意,小工具須離開偏好設定頁面後才會生效。\n\n同時請注意,這些特殊小工具並不屬於 MediaWiki 的一部份,通常由本地 Wiki 的使用者開發與維護。於各站管理員可以自行編輯小工具的 [[MediaWiki:Gadgets-definition|定義]] 與 [[Special:Gadgets|描述]]。每個小工具的使用量可以在[[Special:GadgetUsage|統計]]中找到。",
+ "gadgets": "小工具",
+ "gadgetusage": "小工具使用統計",
+ "gadgetusage-gadget": "小工具",
+ "gadgetusage-usercount": "使用者數量",
+ "gadgetusage-noresults": "找不到小工具。",
+ "gadgetusage-intro": "此表格說明此wiki上啟用個別小工具的用戶數量。在過去{{PLURAL:$1|一日|$1日}}曾作出編輯的用戶會被視為活躍。此列表不包括預設所有人都啟用的小工具,部份小工具亦可能已不再可用。",
+ "gadgetusage-activeusers": "活動使用者",
+ "gadgetusage-default": "預設",
+ "gadgets-title": "小工具",
+ "gadgets-pagetext": "以下列出使用者可自行在 [[Special:Preferences#mw-prefsection-gadgets|偏好設定頁面]] 開啟的特殊小工具,此清單在 [[MediaWiki:Gadgets-definition|定義]] 所定義。\n\n此頁面可讓方便您存取定義各小工具描述與程式碼的系統訊息頁面。",
+ "gadgets-uses": "使用",
+ "gadgets-required-rights": "需要以下{{PLURAL:$2|權限|權限}}:\n\n$1",
+ "gadgets-required-skins": "可用於{{PLURAL:$2|$1 外觀|下列外觀:$1}}。",
+ "gadgets-default": "所有人預設開啟。",
+ "gadgets-legacy": "未載入小工具,請改使用 ResourceLoader。\n([https://www.mediawiki.org/wiki/ResourceLoader/Migration_guide_(users) 了解更多])",
+ "gadgets-export": "匯出",
+ "gadgets-export-title": "匯出小工具",
+ "gadgets-not-found": "查無小工具 \"$1\"。",
+ "gadgets-export-text": "要匯出 $1 小工具,請點選 \"{{int:gadgets-export-download}}\" 按鈕,並儲存下載的檔案,前往目標 Wiki 的 Special:Import 並將其上傳。然後將下列文字新增到 MediaWiki:Gadgets-definition 頁面:\n<pre>$2</pre>\n您必須擁有目標 Wiki 的適當權限 (包括編輯系統訊息的權限) ,且須開啟透過檔案上傳匯入的功能。",
+ "gadgets-export-download": "下載",
+ "apihelp-query+gadgetcategories-description": "回傳小工具分類清單。",
+ "apihelp-query+gadgetcategories-param-prop": "要取得什麼小工具分類資訊:\n;name:內部份類名稱。\n;title:分類標題。\n;members:分類中的小工具數量。",
+ "apihelp-query+gadgetcategories-param-names": "要取得分類名稱。",
+ "apihelp-query+gadgetcategories-example-1": "取得已存在的小工具分類清單",
+ "apihelp-query+gadgetcategories-example-2": "取得所有有關分類名稱為 \"foo\" 與 \"bar\" 的資訊",
+ "apihelp-query+gadgets-description": "回傳在此 wiki 使用過的小工具清單。",
+ "apihelp-query+gadgets-param-prop": "要取得什麼小工具資訊:\n;id:內部小工具 ID。\n;metadata:小工具詮釋資料。\n;desc:小工具描述轉換至 HTML 格式 (可能較慢,只在需要時使用)。",
+ "apihelp-query+gadgets-param-categories": "自那個分類取得小工具。",
+ "apihelp-query+gadgets-param-ids": "要取得小工具的 ID。",
+ "apihelp-query+gadgets-param-allowedonly": "只列出目前使用者可使用的小工具。",
+ "apihelp-query+gadgets-param-enabledonly": "只列出由目前使用者開啟的小工具。",
+ "apihelp-query+gadgets-example-1": "取得小工具及其描述清單",
+ "apihelp-query+gadgets-example-2": "取得小工具及其所有屬性清單",
+ "apihelp-query+gadgets-example-3": "取得屬於分類 \"foo\" 的小工具清單",
+ "apihelp-query+gadgets-example-4": "取得有關小工具 \"foo\" 與 \"bar\" 的資訊",
+ "apihelp-query+gadgets-example-5": "取得由目前使用者開啟的小工具清單",
+ "right-gadgets-edit": "編輯小工具的 JavaScript 與 CSS 頁面",
+ "action-gadgets-edit": "編輯這個小工具的 JavaScript 或 CSS 頁面",
+ "right-gadgets-definition-edit": "編輯小工具定義",
+ "action-gadgets-definition-edit": "編輯此小工具的定義"
+}
diff --git a/www/wiki/extensions/Gadgets/includes/Gadget.php b/www/wiki/extensions/Gadgets/includes/Gadget.php
new file mode 100644
index 00000000..245458a9
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/includes/Gadget.php
@@ -0,0 +1,315 @@
+<?php
+/**
+ * Gadgets extension - lets users select custom javascript gadgets
+ *
+ * For more info see https://www.mediawiki.org/wiki/Extension:Gadgets
+ *
+ * @file
+ * @ingroup Extensions
+ * @author Daniel Kinzler, brightbyte.de
+ * @copyright © 2007 Daniel Kinzler
+ * @license GPL-2.0-or-later
+ */
+
+/**
+ * Wrapper for one gadget.
+ */
+class Gadget {
+ /**
+ * Increment this when changing class structure
+ */
+ const GADGET_CLASS_VERSION = 9;
+
+ const CACHE_TTL = 86400;
+
+ private $scripts = [],
+ $styles = [],
+ $dependencies = [],
+ $peers = [],
+ $messages = [],
+ $name,
+ $definition,
+ $resourceLoaded = false,
+ $requiredRights = [],
+ $requiredSkins = [],
+ $targets = [ 'desktop' ],
+ $onByDefault = false,
+ $hidden = false,
+ $type = '',
+ $category;
+
+ public function __construct( array $options ) {
+ foreach ( $options as $member => $option ) {
+ switch ( $member ) {
+ case 'scripts':
+ case 'styles':
+ case 'dependencies':
+ case 'peers':
+ case 'messages':
+ case 'name':
+ case 'definition':
+ case 'resourceLoaded':
+ case 'requiredRights':
+ case 'requiredSkins':
+ case 'targets':
+ case 'onByDefault':
+ case 'type':
+ case 'hidden':
+ case 'category':
+ $this->{$member} = $option;
+ break;
+ default:
+ throw new InvalidArgumentException( "Unrecognized '$member' parameter" );
+ }
+ }
+ }
+
+ /**
+ * Create a object based on the metadata in a GadgetDefinitionContent object
+ *
+ * @param string $id
+ * @param GadgetDefinitionContent $content
+ * @return Gadget
+ */
+ public static function newFromDefinitionContent( $id, GadgetDefinitionContent $content ) {
+ $data = $content->getAssocArray();
+ $prefixGadgetNs = function ( $page ) {
+ return 'Gadget:' . $page;
+ };
+ $info = [
+ 'name' => $id,
+ 'resourceLoaded' => true,
+ 'requiredRights' => $data['settings']['rights'],
+ 'onByDefault' => $data['settings']['default'],
+ 'hidden' => $data['settings']['hidden'],
+ 'requiredSkins' => $data['settings']['skins'],
+ 'category' => $data['settings']['category'],
+ 'scripts' => array_map( $prefixGadgetNs, $data['module']['scripts'] ),
+ 'styles' => array_map( $prefixGadgetNs, $data['module']['styles'] ),
+ 'dependencies' => $data['module']['dependencies'],
+ 'peers' => $data['module']['peers'],
+ 'messages' => $data['module']['messages'],
+ 'type' => $data['module']['type'],
+ ];
+
+ return new self( $info );
+ }
+
+ /**
+ * Get a placeholder object to use if a gadget doesn't exist
+ *
+ * @param string $id name
+ * @return Gadget
+ */
+ public static function newEmptyGadget( $id ) {
+ return new self( [ 'name' => $id ] );
+ }
+
+ /**
+ * Whether the provided gadget id is valid
+ *
+ * @param string $id
+ * @return bool
+ */
+ public static function isValidGadgetID( $id ) {
+ return strlen( $id ) > 0 && ResourceLoader::isValidModuleName( self::getModuleName( $id ) );
+ }
+
+ /**
+ * @return string Gadget name
+ */
+ public function getName() {
+ return $this->name;
+ }
+
+ /**
+ * @return string Gadget description parsed into HTML
+ */
+ public function getDescription() {
+ return wfMessage( "gadget-{$this->getName()}" )->parse();
+ }
+
+ /**
+ * @return string Wikitext of gadget description
+ */
+ public function getRawDescription() {
+ return wfMessage( "gadget-{$this->getName()}" )->plain();
+ }
+
+ /**
+ * @return string Name of category (aka section) our gadget belongs to. Empty string if none.
+ */
+ public function getCategory() {
+ return $this->category;
+ }
+
+ /**
+ * @param string $id Name of gadget
+ * @return string Name of ResourceLoader module for the gadget
+ */
+ public static function getModuleName( $id ) {
+ return "ext.gadget.{$id}";
+ }
+
+ /**
+ * Checks whether this gadget is enabled for given user
+ *
+ * @param User $user user to check against
+ * @return bool
+ */
+ public function isEnabled( $user ) {
+ return (bool)$user->getOption( "gadget-{$this->name}", $this->onByDefault );
+ }
+
+ /**
+ * Checks whether given user has permissions to use this gadget
+ *
+ * @param User $user user to check against
+ * @return bool
+ */
+ public function isAllowed( $user ) {
+ return count( array_intersect( $this->requiredRights, $user->getRights() ) ) ==
+ count( $this->requiredRights )
+ && ( $this->requiredSkins === true
+ || !count( $this->requiredSkins )
+ || in_array( $user->getOption( 'skin' ), $this->requiredSkins )
+ );
+ }
+
+ /**
+ * @return bool Whether this gadget is on by default for everyone
+ * (but can be disabled in preferences)
+ */
+ public function isOnByDefault() {
+ return $this->onByDefault;
+ }
+
+ /**
+ * @return bool
+ */
+ public function isHidden() {
+ return $this->hidden;
+ }
+
+ /**
+ * @return bool Whether all of this gadget's JS components support ResourceLoader
+ */
+ public function supportsResourceLoader() {
+ return $this->resourceLoaded;
+ }
+
+ /**
+ * @return bool Whether this gadget has resources that can be loaded via ResourceLoaderb
+ */
+ public function hasModule() {
+ return count( $this->styles )
+ + ( $this->supportsResourceLoader() ? count( $this->scripts ) : 0 )
+ > 0;
+ }
+
+ /**
+ * @return string Definition for this gadget from MediaWiki:gadgets-definition
+ */
+ public function getDefinition() {
+ return $this->definition;
+ }
+
+ /**
+ * @return array Array of pages with JS (including namespace)
+ */
+ public function getScripts() {
+ return $this->scripts;
+ }
+
+ /**
+ * @return array Array of pages with CSS (including namespace)
+ */
+ public function getStyles() {
+ return $this->styles;
+ }
+
+ /**
+ * @return array Array of all of this gadget's resources
+ */
+ public function getScriptsAndStyles() {
+ return array_merge( $this->scripts, $this->styles );
+ }
+
+ /**
+ * @return array
+ */
+ public function getTargets() {
+ return $this->targets;
+ }
+
+ /**
+ * Returns list of scripts that don't support ResourceLoader
+ * @return Array
+ */
+ public function getLegacyScripts() {
+ if ( $this->supportsResourceLoader() ) {
+ return [];
+ }
+ return $this->scripts;
+ }
+
+ /**
+ * Returns names of resources this gadget depends on
+ * @return Array
+ */
+ public function getDependencies() {
+ return $this->dependencies;
+ }
+
+ /**
+ * Get list of extra modules that should be loaded when this gadget is enabled
+ *
+ * Primary use case is to allow a Gadget that includes JavaScript to also load
+ * a (usually, hidden) styles-type module to be applied to the page. Dependencies
+ * don't work for this use case as those would not be part of page rendering.
+ *
+ * @return Array
+ */
+ public function getPeers() {
+ return $this->peers;
+ }
+
+ /**
+ * @return array
+ */
+ public function getMessages() {
+ return $this->messages;
+ }
+
+ /**
+ * Returns array of permissions required by this gadget
+ * @return Array
+ */
+ public function getRequiredRights() {
+ return $this->requiredRights;
+ }
+
+ /**
+ * Returns array of skins where this gadget works
+ * @return Array
+ */
+ public function getRequiredSkins() {
+ return $this->requiredSkins;
+ }
+
+ /**
+ * Returns the load type of this Gadget's ResourceLoader module
+ * @return string 'styles' or 'general'
+ */
+ public function getType() {
+ if ( $this->type === 'styles' || $this->type === 'general' ) {
+ return $this->type;
+ }
+ // Similar to ResourceLoaderWikiModule default
+ if ( $this->styles && !$this->scripts && !$this->dependencies ) {
+ return 'styles';
+ } else {
+ return 'general';
+ }
+ }
+}
diff --git a/www/wiki/extensions/Gadgets/includes/GadgetDefinitionNamespaceRepo.php b/www/wiki/extensions/Gadgets/includes/GadgetDefinitionNamespaceRepo.php
new file mode 100644
index 00000000..fdecee80
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/includes/GadgetDefinitionNamespaceRepo.php
@@ -0,0 +1,167 @@
+<?php
+
+use MediaWiki\Linker\LinkTarget;
+use MediaWiki\MediaWikiServices;
+use Wikimedia\Rdbms\Database;
+
+/**
+ * GadgetRepo implementation where each gadget has a page in
+ * the Gadget definition namespace, and scripts and styles are
+ * located in the Gadget namespace.
+ */
+class GadgetDefinitionNamespaceRepo extends GadgetRepo {
+ /**
+ * How long in seconds the list of gadget ids and
+ * individual gadgets should be cached for (1 day)
+ */
+ const CACHE_TTL = 86400;
+
+ /**
+ * @var WANObjectCache
+ */
+ private $wanCache;
+
+ public function __construct() {
+ $this->wanCache = MediaWikiServices::getInstance()->getMainWANObjectCache();
+ }
+
+ /**
+ * Get a list of gadget ids from cache/database
+ *
+ * @return string[]
+ */
+ public function getGadgetIds() {
+ $key = $this->getGadgetIdsKey();
+
+ return $this->wanCache->getWithSetCallback(
+ $key,
+ self::CACHE_TTL,
+ function ( $oldValue, &$ttl, array &$setOpts ) {
+ $dbr = wfGetDB( DB_REPLICA );
+ $setOpts += Database::getCacheSetOptions( $dbr );
+
+ return $dbr->selectFieldValues(
+ 'page',
+ 'page_title',
+ [ 'page_namespace' => NS_GADGET_DEFINITION ],
+ __METHOD__
+ );
+ },
+ [
+ 'checkKeys' => [ $key ],
+ 'pcTTL' => WANObjectCache::TTL_PROC_SHORT,
+ 'lockTSE' => 30
+ ]
+ );
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function handlePageUpdate( LinkTarget $target ) {
+ if ( $target->inNamespace( NS_GADGET_DEFINITION ) ) {
+ $this->purgeGadgetEntry( $target->getText() );
+ }
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function handlePageCreation( LinkTarget $target ) {
+ if ( $target->inNamespace( NS_GADGET_DEFINITION ) ) {
+ $this->purgeGadgetIdsList();
+ }
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function handlePageDeletion( LinkTarget $target ) {
+ if ( $target->inNamespace( NS_GADGET_DEFINITION ) ) {
+ $this->purgeGadgetIdsList();
+ $this->purgeGadgetEntry( $target->getText() );
+ }
+ }
+
+ /**
+ * Purge the list of gadget ids when a page is deleted or if a new page is created
+ */
+ public function purgeGadgetIdsList() {
+ $this->wanCache->touchCheckKey( $this->getGadgetIdsKey() );
+ }
+
+ /**
+ * @param string $id
+ * @throws InvalidArgumentException
+ * @return Gadget
+ */
+ public function getGadget( $id ) {
+ $key = $this->getGadgetCacheKey( $id );
+ $gadget = $this->wanCache->getWithSetCallback(
+ $key,
+ self::CACHE_TTL,
+ /**
+ * @suppress PhanTypeMismatchArgument
+ */
+ function ( $old, &$ttl, array &$setOpts ) use ( $id ) {
+ $setOpts += Database::getCacheSetOptions( wfGetDB( DB_REPLICA ) );
+ $title = Title::makeTitleSafe( NS_GADGET_DEFINITION, $id );
+ if ( !$title ) {
+ $ttl = WANObjectCache::TTL_UNCACHEABLE;
+ return null;
+ }
+
+ $rev = Revision::newFromTitle( $title );
+ if ( !$rev ) {
+ $ttl = WANObjectCache::TTL_UNCACHEABLE;
+ return null;
+ }
+
+ $content = $rev->getContent();
+ if ( !$content instanceof GadgetDefinitionContent ) {
+ // Uhm...
+ $ttl = WANObjectCache::TTL_UNCACHEABLE;
+ return null;
+ }
+
+ return Gadget::newFromDefinitionContent( $id, $content );
+ },
+ [
+ 'checkKeys' => [ $key ],
+ 'pcTTL' => WANObjectCache::TTL_PROC_SHORT,
+ 'lockTSE' => 30
+ ]
+ );
+
+ if ( $gadget === null ) {
+ throw new InvalidArgumentException( "No gadget registered for '$id'" );
+ }
+
+ return $gadget;
+ }
+
+ /**
+ * Update the cache for a specific Gadget whenever it is updated
+ *
+ * @param string $id
+ */
+ public function purgeGadgetEntry( $id ) {
+ $this->wanCache->touchCheckKey( $this->getGadgetCacheKey( $id ) );
+ }
+
+ /**
+ * @return string
+ */
+ private function getGadgetIdsKey() {
+ return $this->wanCache->makeKey( 'gadgets', 'namespace', 'ids' );
+ }
+
+ /**
+ * @param string $id
+ * @return string
+ */
+ private function getGadgetCacheKey( $id ) {
+ return $this->wanCache->makeKey(
+ 'gadgets', 'object', md5( $id ), Gadget::GADGET_CLASS_VERSION );
+ }
+}
diff --git a/www/wiki/extensions/Gadgets/includes/GadgetHooks.php b/www/wiki/extensions/Gadgets/includes/GadgetHooks.php
new file mode 100644
index 00000000..e493baf7
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/includes/GadgetHooks.php
@@ -0,0 +1,342 @@
+<?php
+
+/**
+ * Copyright © 2007 Daniel Kinzler
+ *
+ * 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
+ */
+use Wikimedia\Rdbms\IDatabase;
+use Wikimedia\WrappedString;
+
+class GadgetHooks {
+ /**
+ * PageContentSaveComplete hook handler.
+ *
+ * @param WikiPage $wikiPage
+ * @param User $user
+ * @param Content $content New page content
+ * @return bool
+ */
+ public static function onPageContentSaveComplete( WikiPage $wikiPage, $user, $content ) {
+ // update cache if MediaWiki:Gadgets-definition was edited
+ GadgetRepo::singleton()->handlePageUpdate( $wikiPage->getTitle() );
+ return true;
+ }
+
+ /**
+ * UserGetDefaultOptions hook handler
+ * @param array &$defaultOptions Array of default preference keys and values
+ * @return bool
+ */
+ public static function userGetDefaultOptions( &$defaultOptions ) {
+ $gadgets = GadgetRepo::singleton()->getStructuredList();
+ if ( !$gadgets ) {
+ return true;
+ }
+
+ /**
+ * @var $gadget Gadget
+ */
+ foreach ( $gadgets as $thisSection ) {
+ foreach ( $thisSection as $gadgetId => $gadget ) {
+ if ( $gadget->isOnByDefault() ) {
+ $defaultOptions['gadget-' . $gadgetId] = 1;
+ }
+ }
+ }
+
+ return true;
+ }
+
+ /**
+ * GetPreferences hook handler.
+ * @param User $user
+ * @param array &$preferences Preference descriptions
+ * @return bool
+ */
+ public static function getPreferences( $user, &$preferences ) {
+ $gadgets = GadgetRepo::singleton()->getStructuredList();
+ if ( !$gadgets ) {
+ return true;
+ }
+
+ $options = [];
+ $default = [];
+ foreach ( $gadgets as $section => $thisSection ) {
+ $available = [];
+
+ /**
+ * @var $gadget Gadget
+ */
+ foreach ( $thisSection as $gadget ) {
+ if ( !$gadget->isHidden() && $gadget->isAllowed( $user ) ) {
+ $gname = $gadget->getName();
+ # bug 30182: dir="auto" because it's often not translated
+ $desc = '<span dir="auto">' . $gadget->getDescription() . '</span>';
+ $available[$desc] = $gname;
+ if ( $gadget->isEnabled( $user ) ) {
+ $default[] = $gname;
+ }
+ }
+ }
+
+ if ( $section !== '' ) {
+ $section = wfMessage( "gadget-section-$section" )->parse();
+
+ if ( count( $available ) ) {
+ $options[$section] = $available;
+ }
+ } else {
+ $options = array_merge( $options, $available );
+ }
+ }
+
+ $preferences['gadgets-intro'] =
+ [
+ 'type' => 'info',
+ 'label' => '&#160;',
+ 'default' => Xml::tags( 'tr', [],
+ Xml::tags( 'td', [ 'colspan' => 2 ],
+ wfMessage( 'gadgets-prefstext' )->parseAsBlock() ) ),
+ 'section' => 'gadgets',
+ 'raw' => 1,
+ 'rawrow' => 1,
+ 'noglobal' => true,
+ ];
+
+ $preferences['gadgets'] =
+ [
+ 'type' => 'multiselect',
+ 'options' => $options,
+ 'section' => 'gadgets',
+ 'label' => '&#160;',
+ 'prefix' => 'gadget-',
+ 'default' => $default,
+ 'noglobal' => true,
+ ];
+
+ return true;
+ }
+
+ /**
+ * ResourceLoaderRegisterModules hook handler.
+ * @param ResourceLoader &$resourceLoader
+ * @return bool
+ */
+ public static function registerModules( &$resourceLoader ) {
+ $repo = GadgetRepo::singleton();
+ $ids = $repo->getGadgetIds();
+
+ foreach ( $ids as $id ) {
+ $resourceLoader->register( Gadget::getModuleName( $id ), [
+ 'class' => 'GadgetResourceLoaderModule',
+ 'id' => $id,
+ ] );
+ }
+
+ return true;
+ }
+
+ /**
+ * BeforePageDisplay hook handler.
+ * @param OutputPage $out
+ * @return bool
+ */
+ public static function beforePageDisplay( $out ) {
+ $repo = GadgetRepo::singleton();
+ $ids = $repo->getGadgetIds();
+ if ( !$ids ) {
+ return true;
+ }
+
+ $lb = new LinkBatch();
+ $lb->setCaller( __METHOD__ );
+ $enabledLegacyGadgets = [];
+
+ /**
+ * @var $gadget Gadget
+ */
+ $user = $out->getUser();
+ foreach ( $ids as $id ) {
+ try {
+ $gadget = $repo->getGadget( $id );
+ } catch ( InvalidArgumentException $e ) {
+ continue;
+ }
+ $peers = [];
+ foreach ( $gadget->getPeers() as $peerName ) {
+ try {
+ $peers[] = $repo->getGadget( $peerName );
+ } catch ( InvalidArgumentException $e ) {
+ // Ignore
+ // @todo: Emit warning for invalid peer?
+ }
+ }
+ if ( $gadget->isEnabled( $user ) && $gadget->isAllowed( $user ) ) {
+ if ( $gadget->hasModule() ) {
+ if ( $gadget->getType() === 'styles' ) {
+ $out->addModuleStyles( Gadget::getModuleName( $gadget->getName() ) );
+ } else {
+ $out->addModules( Gadget::getModuleName( $gadget->getName() ) );
+ // Load peer modules
+ foreach ( $peers as $peer ) {
+ if ( $peer->getType() === 'styles' ) {
+ $out->addModuleStyles( Gadget::getModuleName( $peer->getName() ) );
+ }
+ // Else, if not type=styles: Use dependencies instead.
+ // Note: No need for recursion as styles modules don't support
+ // either of 'dependencies' and 'peers'.
+ }
+ }
+ }
+
+ if ( $gadget->getLegacyScripts() ) {
+ $enabledLegacyGadgets[] = $id;
+ }
+ }
+ }
+
+ $strings = [];
+ foreach ( $enabledLegacyGadgets as $id ) {
+ $strings[] = self::makeLegacyWarning( $id );
+ }
+ $out->addHTML( WrappedString::join( "\n", $strings ) );
+
+ return true;
+ }
+
+ private static function makeLegacyWarning( $id ) {
+ $special = SpecialPage::getTitleFor( 'Gadgets' );
+
+ return ResourceLoader::makeInlineScript(
+ Xml::encodeJsCall( 'mw.log.warn', [
+ "Gadget \"$id\" was not loaded. Please migrate it to use ResourceLoader. " .
+ 'See <' . $special->getCanonicalURL() . '>.'
+ ] )
+ );
+ }
+
+ /**
+ * Valid gadget definition page after content is modified
+ *
+ * @param IContextSource $context
+ * @param Content $content
+ * @param Status $status
+ * @param string $summary
+ * @throws Exception
+ * @return bool
+ * @suppress PhanUndeclaredMethod
+ */
+ public static function onEditFilterMergedContent( $context, $content, $status, $summary ) {
+ $title = $context->getTitle();
+
+ if ( !$title->inNamespace( NS_GADGET_DEFINITION ) ) {
+ return true;
+ }
+
+ if ( !$content instanceof GadgetDefinitionContent ) {
+ // This should not be possible?
+ throw new Exception(
+ "Tried to save non-GadgetDefinitionContent to {$title->getPrefixedText()}"
+ );
+ }
+
+ $status = $content->validate();
+ if ( !$status->isGood() ) {
+ $status->merge( $status );
+ return false;
+ }
+
+ return true;
+ }
+
+ /**
+ * After a new page is created in the Gadget definition namespace,
+ * invalidate the list of gadget ids
+ *
+ * @param WikiPage $page
+ */
+ public static function onPageContentInsertComplete( WikiPage $page ) {
+ if ( $page->getTitle()->inNamespace( NS_GADGET_DEFINITION ) ) {
+ GadgetRepo::singleton()->handlePageCreation( $page->getTitle() );
+ }
+ }
+
+ /**
+ * Mark the Title as having a content model of javascript or css for pages
+ * in the Gadget namespace based on their file extension
+ *
+ * @param Title $title
+ * @param string &$model
+ * @return bool
+ */
+ public static function onContentHandlerDefaultModelFor( Title $title, &$model ) {
+ if ( $title->inNamespace( NS_GADGET ) ) {
+ preg_match( '!\.(css|js)$!u', $title->getText(), $ext );
+ $ext = isset( $ext[1] ) ? $ext[1] : '';
+ switch ( $ext ) {
+ case 'js':
+ $model = 'javascript';
+ return false;
+ case 'css':
+ $model = 'css';
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ /**
+ * Set the CodeEditor language for Gadget definition pages. It already
+ * knows the language for Gadget: namespace pages.
+ *
+ * @param Title $title
+ * @param string &$lang
+ * @return bool
+ */
+ public static function onCodeEditorGetPageLanguage( Title $title, &$lang ) {
+ if ( $title->hasContentModel( 'GadgetDefinition' ) ) {
+ $lang = 'json';
+ return false;
+ }
+
+ return true;
+ }
+
+ /**
+ * Add the GadgetUsage special page to the list of QueryPages.
+ * @param array &$queryPages
+ * @return bool
+ */
+ public static function onwgQueryPages( &$queryPages ) {
+ $queryPages[] = [ 'SpecialGadgetUsage', 'GadgetUsage' ];
+ return true;
+ }
+
+ /**
+ * Prevent gadget preferences from being deleted.
+ * @link https://www.mediawiki.org/wiki/Manual:Hooks/DeleteUnknownPreferences
+ * @suppress PhanParamTooMany
+ * @param string[] &$where Array of where clause conditions to add to.
+ * @param IDatabase $db
+ */
+ public static function onDeleteUnknownPreferences( &$where, IDatabase $db ) {
+ $where[] = 'up_property NOT' . $db->buildLike( 'gadget-', $db->anyString() );
+ }
+}
diff --git a/www/wiki/extensions/Gadgets/includes/GadgetRepo.php b/www/wiki/extensions/Gadgets/includes/GadgetRepo.php
new file mode 100644
index 00000000..11996f8e
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/includes/GadgetRepo.php
@@ -0,0 +1,104 @@
+<?php
+
+use MediaWiki\Linker\LinkTarget;
+
+abstract class GadgetRepo {
+
+ /**
+ * @var GadgetRepo|null
+ */
+ private static $instance;
+
+ /**
+ * Get the ids of the gadgets provided by this repository
+ *
+ * It's possible this could be out of sync with what
+ * getGadget() will return due to caching
+ *
+ * @return string[]
+ */
+ abstract public function getGadgetIds();
+
+ /**
+ * Get the Gadget object for a given gadget id
+ *
+ * @param string $id
+ * @throws InvalidArgumentException
+ * @return Gadget
+ */
+ abstract public function getGadget( $id );
+
+ /**
+ * Given that the provided page was updated, invalidate
+ * caches if necessary
+ *
+ * @param LinkTarget $target
+ *
+ * @return void
+ */
+ public function handlePageUpdate( LinkTarget $target ) {
+ }
+
+ /**
+ * Given that the provided page was created, invalidate
+ * caches if necessary
+ *
+ * @param LinkTarget $target
+ *
+ * @return void
+ */
+ public function handlePageCreation( LinkTarget $target ) {
+ }
+
+ /**
+ * Given that the provided page was updated, invalidate
+ * caches if necessary
+ *
+ * @param LinkTarget $target
+ *
+ * @return void
+ */
+ public function handlePageDeletion( LinkTarget $target ) {
+ }
+
+ /**
+ * Get a list of gadgets sorted by category
+ *
+ * @return array [ 'category' => [ 'name' => $gadget ] ]
+ */
+ public function getStructuredList() {
+ $list = [];
+ foreach ( $this->getGadgetIds() as $id ) {
+ try {
+ $gadget = $this->getGadget( $id );
+ } catch ( InvalidArgumentException $e ) {
+ continue;
+ }
+ $list[$gadget->getCategory()][$gadget->getName()] = $gadget;
+ }
+
+ return $list;
+ }
+
+ /**
+ * Get the configured default GadgetRepo.
+ *
+ * @return GadgetRepo
+ */
+ public static function singleton() {
+ if ( self::$instance === null ) {
+ global $wgGadgetsRepoClass; // @todo use Config here
+ self::$instance = new $wgGadgetsRepoClass();
+ }
+ return self::$instance;
+ }
+
+ /**
+ * Should only be used by unit tests
+ *
+ * @param GadgetRepo|null $repo
+ */
+ public static function setSingleton( $repo = null ) {
+ self::$instance = $repo;
+ }
+}
diff --git a/www/wiki/extensions/Gadgets/includes/GadgetResourceLoaderModule.php b/www/wiki/extensions/Gadgets/includes/GadgetResourceLoaderModule.php
new file mode 100644
index 00000000..13d16cdd
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/includes/GadgetResourceLoaderModule.php
@@ -0,0 +1,93 @@
+<?php
+
+/**
+ * Class representing a list of resources for one gadget, basically a wrapper
+ * around the Gadget class.
+ */
+class GadgetResourceLoaderModule extends ResourceLoaderWikiModule {
+ /**
+ * @var string
+ */
+ private $id;
+
+ /**
+ * @var Gadget
+ */
+ private $gadget;
+
+ /**
+ * @param array $options
+ */
+ public function __construct( array $options ) {
+ $this->id = $options['id'];
+ }
+
+ /**
+ * @return Gadget instance this module is about
+ */
+ private function getGadget() {
+ if ( !$this->gadget ) {
+ try {
+ $this->gadget = GadgetRepo::singleton()->getGadget( $this->id );
+ } catch ( InvalidArgumentException $e ) {
+ // Fallback to a placeholder object...
+ $this->gadget = Gadget::newEmptyGadget( $this->id );
+ }
+ }
+
+ return $this->gadget;
+ }
+
+ /**
+ * Overrides the function from ResourceLoaderWikiModule class
+ * @param ResourceLoaderContext $context
+ * @return array
+ */
+ protected function getPages( ResourceLoaderContext $context ) {
+ $gadget = $this->getGadget();
+ $pages = [];
+
+ foreach ( $gadget->getStyles() as $style ) {
+ $pages[$style] = [ 'type' => 'style' ];
+ }
+
+ if ( $gadget->supportsResourceLoader() ) {
+ foreach ( $gadget->getScripts() as $script ) {
+ $pages[$script] = [ 'type' => 'script' ];
+ }
+ }
+
+ return $pages;
+ }
+
+ /**
+ * Overrides ResourceLoaderModule::getDependencies()
+ * @param ResourceLoaderContext $context
+ * @return string[] Names of resources this module depends on
+ */
+ public function getDependencies( ResourceLoaderContext $context = null ) {
+ return $this->getGadget()->getDependencies();
+ }
+
+ /**
+ * Overrides ResourceLoaderWikiModule::getType()
+ * @return string ResourceLoaderModule::LOAD_STYLES or ResourceLoaderModule::LOAD_GENERAL
+ */
+ public function getType() {
+ return $this->getGadget()->getType() === 'styles'
+ ? ResourceLoaderModule::LOAD_STYLES
+ : ResourceLoaderModule::LOAD_GENERAL;
+ }
+
+ public function getMessages() {
+ return $this->getGadget()->getMessages();
+ }
+
+ public function getTargets() {
+ return $this->getGadget()->getTargets();
+ }
+
+ public function getGroup() {
+ return 'site';
+ }
+}
diff --git a/www/wiki/extensions/Gadgets/includes/MediaWikiGadgetsDefinitionRepo.php b/www/wiki/extensions/Gadgets/includes/MediaWikiGadgetsDefinitionRepo.php
new file mode 100644
index 00000000..84c84b6c
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/includes/MediaWikiGadgetsDefinitionRepo.php
@@ -0,0 +1,261 @@
+<?php
+
+use MediaWiki\Linker\LinkTarget;
+use MediaWiki\MediaWikiServices;
+use Wikimedia\Rdbms\Database;
+
+/**
+ * Gadgets repo powered by MediaWiki:Gadgets-definition
+ */
+class MediaWikiGadgetsDefinitionRepo extends GadgetRepo {
+ const CACHE_VERSION = 2;
+
+ private $definitionCache;
+
+ /**
+ * @param string $id
+ *
+ * @return Gadget
+ * @throws InvalidArgumentException
+ */
+ public function getGadget( $id ) {
+ $gadgets = $this->loadGadgets();
+ if ( !isset( $gadgets[$id] ) ) {
+ throw new InvalidArgumentException( "No gadget registered for '$id'" );
+ }
+
+ return $gadgets[$id];
+ }
+
+ public function getGadgetIds() {
+ $gadgets = $this->loadGadgets();
+ if ( $gadgets ) {
+ return array_keys( $gadgets );
+ } else {
+ return [];
+ }
+ }
+
+ public function handlePageUpdate( LinkTarget $target ) {
+ if ( $target->getNamespace() == NS_MEDIAWIKI && $target->getText() == 'Gadgets-definition' ) {
+ $this->purgeDefinitionCache();
+ }
+ }
+
+ /**
+ * Purge the definitions cache, for example if MediaWiki:Gadgets-definition
+ * was edited.
+ */
+ private function purgeDefinitionCache() {
+ $cache = MediaWikiServices::getInstance()->getMainWANObjectCache();
+ $cache->touchCheckKey( $this->getCheckKey() );
+ }
+
+ private function getCheckKey() {
+ return wfMemcKey( 'gadgets-definition', Gadget::GADGET_CLASS_VERSION, self::CACHE_VERSION );
+ }
+
+ /**
+ * Loads list of gadgets and returns it as associative array of sections with gadgets
+ * e.g. [ 'sectionnname1' => [ $gadget1, $gadget2 ],
+ * 'sectionnname2' => [ $gadget3 ] ];
+ * @return array|bool Gadget array or false on failure
+ */
+ protected function loadGadgets() {
+ if ( $this->definitionCache !== null ) {
+ return $this->definitionCache; // process cache hit
+ }
+
+ // Ideally $t1Cache is APC, and $wanCache is memcached
+ $t1Cache = ObjectCache::getLocalServerInstance( 'hash' );
+ $wanCache = MediaWikiServices::getInstance()->getMainWANObjectCache();
+
+ $key = $this->getCheckKey();
+
+ // (a) Check the tier 1 cache
+ $value = $t1Cache->get( $key );
+ // Check if it passes a blind TTL check (avoids I/O)
+ if ( $value && ( microtime( true ) - $value['time'] ) < 10 ) {
+ $this->definitionCache = $value['gadgets']; // process cache
+ return $this->definitionCache;
+ }
+ // Cache generated after the "check" time should be up-to-date
+ $ckTime = $wanCache->getCheckKeyTime( $key ) + WANObjectCache::HOLDOFF_TTL;
+ if ( $value && $value['time'] > $ckTime ) {
+ $this->definitionCache = $value['gadgets']; // process cache
+ return $this->definitionCache;
+ }
+
+ // (b) Fetch value from WAN cache or regenerate if needed.
+ // This is hit occasionally and more so when the list changes.
+ $us = $this;
+ $value = $wanCache->getWithSetCallback(
+ $key,
+ Gadget::CACHE_TTL,
+ function ( $old, &$ttl, &$setOpts ) use ( $us ) {
+ $setOpts += Database::getCacheSetOptions( wfGetDB( DB_REPLICA ) );
+
+ $now = microtime( true );
+ $gadgets = $us->fetchStructuredList();
+ if ( $gadgets === false ) {
+ $ttl = WANObjectCache::TTL_UNCACHEABLE;
+ }
+
+ return [ 'gadgets' => $gadgets, 'time' => $now ];
+ },
+ [ 'checkKeys' => [ $key ], 'lockTSE' => 300 ]
+ );
+
+ // Update the tier 1 cache as needed
+ if ( $value['gadgets'] !== false && $value['time'] > $ckTime ) {
+ // Set a modest TTL to keep the WAN key in cache
+ $t1Cache->set( $key, $value, mt_rand( 300, 600 ) );
+ }
+
+ $this->definitionCache = $value['gadgets'];
+
+ return $this->definitionCache;
+ }
+
+ /**
+ * Fetch list of gadgets and returns it as associative array of sections with gadgets
+ * e.g. [ $name => $gadget1, etc. ]
+ * @param string $forceNewText Injected text of MediaWiki:gadgets-definition [optional]
+ * @return array|bool
+ */
+ public function fetchStructuredList( $forceNewText = null ) {
+ if ( $forceNewText === null ) {
+ // T157210: avoid using wfMessage() to avoid staleness due to cache layering
+ $title = Title::makeTitle( NS_MEDIAWIKI, 'Gadgets-definition' );
+ $rev = Revision::newFromTitle( $title );
+ if ( !$rev || !$rev->getContent() || $rev->getContent()->isEmpty() ) {
+ return false; // don't cache
+ }
+
+ $g = $rev->getContent()->getNativeData();
+ } else {
+ $g = $forceNewText;
+ }
+
+ $gadgets = $this->listFromDefinition( $g );
+ if ( !count( $gadgets ) ) {
+ return false; // don't cache; Bug 37228
+ }
+
+ $source = $forceNewText !== null ? 'input text' : 'MediaWiki:Gadgets-definition';
+ wfDebug( __METHOD__ . ": $source parsed, cache entry should be updated\n" );
+
+ return $gadgets;
+ }
+
+ /**
+ * Generates a structured list of Gadget objects from a definition
+ *
+ * @param string $definition
+ * @return Gadget[] List of Gadget objects indexed by the gadget's name.
+ */
+ private function listFromDefinition( $definition ) {
+ $definition = preg_replace( '/<!--.*?-->/s', '', $definition );
+ $lines = preg_split( '/(\r\n|\r|\n)+/', $definition );
+
+ $gadgets = [];
+ $section = '';
+
+ foreach ( $lines as $line ) {
+ $m = [];
+ if ( preg_match( '/^==+ *([^*:\s|]+?)\s*==+\s*$/', $line, $m ) ) {
+ $section = $m[1];
+ } else {
+ $gadget = $this->newFromDefinition( $line, $section );
+ if ( $gadget ) {
+ $gadgets[$gadget->getName()] = $gadget;
+ }
+ }
+ }
+
+ return $gadgets;
+ }
+
+ /**
+ * Creates an instance of this class from definition in MediaWiki:Gadgets-definition
+ * @param string $definition Gadget definition
+ * @param string $category
+ * @return Gadget|bool Instance of Gadget class or false if $definition is invalid
+ */
+ public function newFromDefinition( $definition, $category ) {
+ $m = [];
+ if ( !preg_match(
+ '/^\*+ *([a-zA-Z](?:[-_:.\w\d ]*[a-zA-Z0-9])?)(\s*\[.*?\])?\s*((\|[^|]*)+)\s*$/',
+ $definition,
+ $m
+ ) ) {
+ return false;
+ }
+ // NOTE: the gadget name is used as part of the name of a form field,
+ // and must follow the rules defined in https://www.w3.org/TR/html4/types.html#type-cdata
+ // Also, title-normalization applies.
+ $info = [ 'category' => $category ];
+ $info['name'] = trim( str_replace( ' ', '_', $m[1] ) );
+ // If the name is too long, then RL will throw an MWException when
+ // we try to register the module
+ if ( !Gadget::isValidGadgetID( $info['name'] ) ) {
+ return false;
+ }
+ $info['definition'] = $definition;
+ $options = trim( $m[2], ' []' );
+
+ foreach ( preg_split( '/\s*\|\s*/', $options, -1, PREG_SPLIT_NO_EMPTY ) as $option ) {
+ $arr = preg_split( '/\s*=\s*/', $option, 2 );
+ $option = $arr[0];
+ if ( isset( $arr[1] ) ) {
+ $params = explode( ',', $arr[1] );
+ $params = array_map( 'trim', $params );
+ } else {
+ $params = [];
+ }
+
+ switch ( $option ) {
+ case 'ResourceLoader':
+ $info['resourceLoaded'] = true;
+ break;
+ case 'dependencies':
+ $info['dependencies'] = $params;
+ break;
+ case 'peers':
+ $info['peers'] = $params;
+ break;
+ case 'rights':
+ $info['requiredRights'] = $params;
+ break;
+ case 'hidden':
+ $info['hidden'] = true;
+ break;
+ case 'skins':
+ $info['requiredSkins'] = $params;
+ break;
+ case 'default':
+ $info['onByDefault'] = true;
+ break;
+ case 'targets':
+ $info['targets'] = $params;
+ break;
+ case 'type':
+ // Single value, not a list
+ $info['type'] = isset( $params[0] ) ? $params[0] : '';
+ break;
+ }
+ }
+
+ foreach ( preg_split( '/\s*\|\s*/', $m[3], -1, PREG_SPLIT_NO_EMPTY ) as $page ) {
+ $page = "MediaWiki:Gadget-$page";
+
+ if ( preg_match( '/\.js/', $page ) ) {
+ $info['scripts'][] = $page;
+ } elseif ( preg_match( '/\.css/', $page ) ) {
+ $info['styles'][] = $page;
+ }
+ }
+
+ return new Gadget( $info );
+ }
+}
diff --git a/www/wiki/extensions/Gadgets/includes/SpecialGadgetUsage.php b/www/wiki/extensions/Gadgets/includes/SpecialGadgetUsage.php
new file mode 100644
index 00000000..0601d654
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/includes/SpecialGadgetUsage.php
@@ -0,0 +1,252 @@
+<?php
+/**
+ * Implements Special:GadgetUsage
+ *
+ * Copyright © 2015 Niharika Kohli
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup SpecialPage
+ * @author Niharika Kohli <niharika@wikimedia.org>
+ */
+
+use Wikimedia\Rdbms\IDatabase;
+use Wikimedia\Rdbms\IResultWrapper;
+
+/**
+ * Special:GadgetUsage - Lists all the gadgets on the wiki along with number of users.
+ * @ingroup SpecialPage
+ */
+class SpecialGadgetUsage extends QueryPage {
+ function __construct( $name = 'GadgetUsage' ) {
+ parent::__construct( $name );
+ $this->limit = 1000; // Show all gadgets
+ $this->shownavigation = false;
+ $this->activeUsers = $this->getConfig()->get( 'SpecialGadgetUsageActiveUsers' );
+ }
+
+ /**
+ * Flag for holding the value of config variable SpecialGadgetUsageActiveUsers
+ *
+ * @var bool $activeUsers
+ */
+ public $activeUsers;
+
+ public function isExpensive() {
+ return true;
+ }
+
+ /**
+ * Define the database query that is used to generate the stats table.
+ * This uses 1 of 2 possible queries, depending on $wgSpecialGadgetUsageActiveUsers.
+ *
+ * The simple query is essentially:
+ * SELECT up_property, SUM(up_value)
+ * FROM user_properties
+ * WHERE up_property LIKE 'gadget-%'
+ * GROUP BY up_property;
+ *
+ * The more expensive query is:
+ * SELECT up_property, SUM(up_value), count(qcc_title)
+ * FROM user_properties
+ * LEFT JOIN user ON up_user = user_id
+ * LEFT JOIN querycachetwo ON user_name = qcc_title AND qcc_type = 'activeusers' AND up_value = 1
+ * WHERE up_property LIKE 'gadget-%'
+ * GROUP BY up_property;
+ * @return array
+ */
+ public function getQueryInfo() {
+ $dbr = wfGetDB( DB_REPLICA );
+ if ( !$this->activeUsers ) {
+ return [
+ 'tables' => [ 'user_properties' ],
+ 'fields' => [
+ 'title' => 'up_property',
+ 'value' => 'SUM( up_value )',
+ 'namespace' => NS_GADGET
+ ],
+ 'conds' => [
+ 'up_property' . $dbr->buildLike( 'gadget-', $dbr->anyString() )
+ ],
+ 'options' => [
+ 'GROUP BY' => [ 'up_property' ]
+ ]
+ ];
+ } else {
+ return [
+ 'tables' => [ 'user_properties', 'user', 'querycachetwo' ],
+ 'fields' => [
+ 'title' => 'up_property',
+ 'value' => 'SUM( up_value )',
+ // Need to pick fields existing in the querycache table so that the results are cachable
+ 'namespace' => 'COUNT( qcc_title )'
+ ],
+ 'conds' => [
+ 'up_property' . $dbr->buildLike( 'gadget-', $dbr->anyString() )
+ ],
+ 'options' => [
+ 'GROUP BY' => [ 'up_property' ]
+ ],
+ 'join_conds' => [
+ 'user' => [
+ 'LEFT JOIN', [
+ 'up_user = user_id'
+ ]
+ ],
+ 'querycachetwo' => [
+ 'LEFT JOIN', [
+ 'user_name = qcc_title',
+ 'qcc_type = "activeusers"',
+ 'up_value = 1'
+ ]
+ ]
+ ]
+ ];
+ }
+ }
+
+ public function getOrderFields() {
+ return [ 'value' ];
+ }
+
+ /**
+ * Output the start of the table
+ * Including opening <table>, and first <tr> with column headers.
+ */
+ protected function outputTableStart() {
+ $html = Html::openElement( 'table', [ 'class' => [ 'sortable', 'wikitable' ] ] );
+ $html .= Html::openElement( 'tr', [] );
+ $headers = [ 'gadgetusage-gadget', 'gadgetusage-usercount' ];
+ if ( $this->activeUsers ) {
+ $headers[] = 'gadgetusage-activeusers';
+ }
+ foreach ( $headers as $h ) {
+ if ( $h == 'gadgetusage-gadget' ) {
+ $html .= Html::element( 'th', [], $this->msg( $h )->text() );
+ } else {
+ $html .= Html::element( 'th', [ 'data-sort-type' => 'number' ],
+ $this->msg( $h )->text() );
+ }
+ }
+ $html .= Html::closeElement( 'tr' );
+ $this->getOutput()->addHTML( $html );
+ }
+
+ /**
+ * @param Skin $skin
+ * @param object $result Result row
+ * @return string|bool String of HTML
+ */
+ public function formatResult( $skin, $result ) {
+ $gadgetTitle = substr( $result->title, 7 );
+ $gadgetUserCount = $this->getLanguage()->formatNum( $result->value );
+ if ( $gadgetTitle ) {
+ $html = Html::openElement( 'tr', [] );
+ $html .= Html::element( 'td', [], $gadgetTitle );
+ $html .= Html::element( 'td', [], $gadgetUserCount );
+ if ( $this->activeUsers == true ) {
+ $activeUserCount = $this->getLanguage()->formatNum( $result->namespace );
+ $html .= Html::element( 'td', [], $activeUserCount );
+ }
+ $html .= Html::closeElement( 'tr' );
+ return $html;
+ }
+ return false;
+ }
+
+ /**
+ * Get a list of default gadgets
+ * @param GadgetRepo $gadgetRepo
+ * @param array $gadgetIds list of gagdet ids registered in the wiki
+ * @return array
+ */
+ protected function getDefaultGadgets( $gadgetRepo, $gadgetIds ) {
+ $gadgetsList = [];
+ foreach ( $gadgetIds as $g ) {
+ $gadget = $gadgetRepo->getGadget( $g );
+ if ( $gadget->isOnByDefault() ) {
+ $gadgetsList[] = $gadget->getName();
+ }
+ }
+ asort( $gadgetsList, SORT_STRING | SORT_FLAG_CASE );
+ return $gadgetsList;
+ }
+
+ /**
+ * Format and output report results using the given information plus
+ * OutputPage
+ *
+ * @param OutputPage $out OutputPage to print to
+ * @param Skin $skin User skin to use
+ * @param IDatabase $dbr Database (read) connection to use
+ * @param IResultWrapper $res Result pointer
+ * @param int $num Number of available result rows
+ * @param int $offset Paging offset
+ */
+ protected function outputResults( $out, $skin, $dbr, $res, $num, $offset ) {
+ $gadgetRepo = GadgetRepo::singleton();
+ $gadgetIds = $gadgetRepo->getGadgetIds();
+ $defaultGadgets = $this->getDefaultGadgets( $gadgetRepo, $gadgetIds );
+ if ( $this->activeUsers ) {
+ $out->addHtml(
+ $this->msg( 'gadgetusage-intro' )
+ ->numParams( $this->getConfig()->get( 'ActiveUserDays' ) )->parseAsBlock()
+ );
+ } else {
+ $out->addHtml(
+ $this->msg( 'gadgetusage-intro-noactive' )->parseAsBlock()
+ );
+ }
+ if ( $num > 0 ) {
+ $this->outputTableStart();
+ // Append default gadgets to the table with 'default' in the total and active user fields
+ foreach ( $defaultGadgets as $default ) {
+ $html = Html::openElement( 'tr', [] );
+ $html .= Html::element( 'td', [], $default );
+ $html .= Html::element( 'td', [], $this->msg( 'gadgetusage-default' )->text() );
+ if ( $this->activeUsers ) {
+ $html .= Html::element( 'td', [], $this->msg( 'gadgetusage-default' )->text() );
+ }
+ $html .= Html::closeElement( 'tr' );
+ $out->addHTML( $html );
+ }
+ foreach ( $res as $row ) {
+ // Remove the 'gadget-' part of the result string and compare if it's present
+ // in $defaultGadgets, if not we format it and add it to the output
+ if ( !in_array( substr( $row->title, 7 ), $defaultGadgets ) ) {
+ // Only pick gadgets which are in the list $gadgetIds to make sure they exist
+ if ( in_array( substr( $row->title, 7 ), $gadgetIds ) ) {
+ $line = $this->formatResult( $skin, $row );
+ if ( $line ) {
+ $out->addHTML( $line );
+ }
+ }
+ }
+ }
+ // Close table element
+ $out->addHtml( Html::closeElement( 'table' ) );
+ } else {
+ $out->addHtml(
+ $this->msg( 'gadgetusage-noresults' )->parseAsBlock()
+ );
+ }
+ }
+
+ protected function getGroupName() {
+ return 'wiki';
+ }
+}
diff --git a/www/wiki/extensions/Gadgets/includes/SpecialGadgets.php b/www/wiki/extensions/Gadgets/includes/SpecialGadgets.php
new file mode 100644
index 00000000..1d374cbf
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/includes/SpecialGadgets.php
@@ -0,0 +1,232 @@
+<?php
+/**
+ * Special:Gadgets, provides a preview of MediaWiki:Gadgets.
+ *
+ * @file
+ * @ingroup SpecialPage
+ * @author Daniel Kinzler, brightbyte.de
+ * @copyright © 2007 Daniel Kinzler
+ * @license GPL-2.0-or-later
+ */
+
+class SpecialGadgets extends SpecialPage {
+ public function __construct() {
+ parent::__construct( 'Gadgets', '', true );
+ }
+
+ /**
+ * Main execution function
+ * @param string $par Parameters passed to the page
+ */
+ public function execute( $par ) {
+ $parts = explode( '/', $par );
+
+ if ( count( $parts ) == 2 && $parts[0] == 'export' ) {
+ $this->showExportForm( $parts[1] );
+ } else {
+ $this->showMainForm();
+ }
+ }
+
+ private function makeAnchor( $gadgetName ) {
+ return 'gadget-' . Sanitizer::escapeId( $gadgetName, [ 'noninitial' ] );
+ }
+
+ /**
+ * Displays form showing the list of installed gadgets
+ */
+ public function showMainForm() {
+ global $wgContLang;
+
+ $output = $this->getOutput();
+ $this->setHeaders();
+ $output->setPageTitle( $this->msg( 'gadgets-title' ) );
+ $output->addWikiMsg( 'gadgets-pagetext' );
+
+ $gadgets = GadgetRepo::singleton()->getStructuredList();
+ if ( !$gadgets ) {
+ return;
+ }
+
+ $output->disallowUserJs();
+ $lang = $this->getLanguage();
+ $langSuffix = "";
+ if ( $lang->getCode() != $wgContLang->getCode() ) {
+ $langSuffix = "/" . $lang->getCode();
+ }
+
+ $listOpen = false;
+
+ $editInterfaceMessage = $this->getUser()->isAllowed( 'editinterface' )
+ ? 'edit'
+ : 'viewsource';
+
+ $linkRenderer = $this->getLinkRenderer();
+ foreach ( $gadgets as $section => $entries ) {
+ if ( $section !== false && $section !== '' ) {
+ $t = Title::makeTitleSafe( NS_MEDIAWIKI, "Gadget-section-$section$langSuffix" );
+ $lnkTarget = $t
+ ? $linkRenderer->makeLink( $t, $this->msg( $editInterfaceMessage )->text(),
+ [], [ 'action' => 'edit' ] )
+ : htmlspecialchars( $section );
+ $lnk = "&#160; &#160; [$lnkTarget]";
+
+ $ttext = $this->msg( "gadget-section-$section" )->parse();
+
+ if ( $listOpen ) {
+ $output->addHTML( Xml::closeElement( 'ul' ) . "\n" );
+ $listOpen = false;
+ }
+
+ $output->addHTML( Html::rawElement( 'h2', [], $ttext . $lnk ) . "\n" );
+ }
+
+ /**
+ * @var $gadget Gadget
+ */
+ foreach ( $entries as $gadget ) {
+ $name = $gadget->getName();
+ $t = Title::makeTitleSafe( NS_MEDIAWIKI, "Gadget-{$name}$langSuffix" );
+ if ( !$t ) {
+ continue;
+ }
+
+ $links = [];
+ $links[] = $linkRenderer->makeLink(
+ $t,
+ $this->msg( $editInterfaceMessage )->text(),
+ [],
+ [ 'action' => 'edit' ]
+ );
+ $links[] = $linkRenderer->makeLink(
+ $this->getPageTitle( "export/{$name}" ),
+ $this->msg( 'gadgets-export' )->text()
+ );
+
+ $ttext = $this->msg( "gadget-{$name}" )->parse();
+
+ if ( !$listOpen ) {
+ $listOpen = true;
+ $output->addHTML( Xml::openElement( 'ul' ) );
+ }
+
+ $actions = '&#160;&#160;' .
+ $this->msg( 'parentheses' )->rawParams( $lang->pipeList( $links ) )->escaped();
+ $output->addHTML(
+ Xml::openElement( 'li', [ 'id' => $this->makeAnchor( $name ) ] ) .
+ $ttext . $actions . "<br />" .
+ $this->msg( 'gadgets-uses' )->escaped() .
+ $this->msg( 'colon-separator' )->escaped()
+ );
+
+ $lnk = [];
+ foreach ( $gadget->getPeers() as $peer ) {
+ $lnk[] = Html::element(
+ 'a',
+ [ 'href' => '#' . $this->makeAnchor( $peer ) ],
+ $peer
+ );
+ }
+ foreach ( $gadget->getScriptsAndStyles() as $codePage ) {
+ $t = Title::newFromText( $codePage );
+
+ if ( !$t ) {
+ continue;
+ }
+
+ $lnk[] = $linkRenderer->makeLink( $t, $t->getText() );
+ }
+ $output->addHTML( $lang->commaList( $lnk ) );
+ if ( $gadget->getLegacyScripts() ) {
+ $output->addHTML( '<br />' . Html::rawElement(
+ 'span',
+ [ 'class' => 'mw-gadget-legacy errorbox' ],
+ $this->msg( 'gadgets-legacy' )->parse()
+ ) );
+ }
+
+ $rights = [];
+ foreach ( $gadget->getRequiredRights() as $right ) {
+ $rights[] = '* ' . $this->msg( "right-$right" )->plain();
+ }
+ if ( count( $rights ) ) {
+ $output->addHTML( '<br />' .
+ $this->msg( 'gadgets-required-rights', implode( "\n", $rights ), count( $rights ) )->parse()
+ );
+ }
+
+ $requiredSkins = $gadget->getRequiredSkins();
+ // $requiredSkins can be an array or true (if all skins are supported)
+ if ( is_array( $requiredSkins ) ) {
+ $skins = [];
+ $validskins = Skin::getSkinNames();
+ foreach ( $requiredSkins as $skinid ) {
+ if ( isset( $validskins[$skinid] ) ) {
+ $skins[] = $this->msg( "skinname-$skinid" )->plain();
+ } else {
+ $skins[] = $skinid;
+ }
+ }
+ if ( count( $skins ) ) {
+ $output->addHTML(
+ '<br />' .
+ $this->msg( 'gadgets-required-skins', $lang->commaList( $skins ) )
+ ->numParams( count( $skins ) )->parse()
+ );
+ }
+ }
+
+ if ( $gadget->isOnByDefault() ) {
+ $output->addHTML( '<br />' . $this->msg( 'gadgets-default' )->parse() );
+ }
+
+ $output->addHTML( Xml::closeElement( 'li' ) . "\n" );
+ }
+ }
+
+ if ( $listOpen ) {
+ $output->addHTML( Xml::closeElement( 'ul' ) . "\n" );
+ }
+ }
+
+ /**
+ * Exports a gadget with its dependencies in a serialized form
+ * @param string $gadget Name of gadget to export
+ */
+ public function showExportForm( $gadget ) {
+ global $wgScript;
+
+ $output = $this->getOutput();
+ try {
+ $g = GadgetRepo::singleton()->getGadget( $gadget );
+ } catch ( InvalidArgumentException $e ) {
+ $output->showErrorPage( 'error', 'gadgets-not-found', [ $gadget ] );
+ return;
+ }
+
+ $this->setHeaders();
+ $output->setPageTitle( $this->msg( 'gadgets-export-title' ) );
+ $output->addWikiMsg( 'gadgets-export-text', $gadget, $g->getDefinition() );
+
+ $exportList = "MediaWiki:gadget-$gadget\n";
+ foreach ( $g->getScriptsAndStyles() as $page ) {
+ $exportList .= "$page\n";
+ }
+
+ $htmlForm = HTMLForm::factory( 'ooui', [], $this->getContext() );
+ $htmlForm
+ ->addHiddenField( 'title', SpecialPage::getTitleFor( 'Export' )->getPrefixedDBKey() )
+ ->addHiddenField( 'pages', $exportList )
+ ->addHiddenField( 'wpDownload', '1' )
+ ->addHiddenField( 'templates', '1' )
+ ->setAction( $wgScript )
+ ->setMethod( 'get' )
+ ->setSubmitText( $this->msg( 'gadgets-export-download' )->text() )
+ ->prepareForm()
+ ->displayForm( false );
+ }
+
+ protected function getGroupName() {
+ return 'wiki';
+ }
+}
diff --git a/www/wiki/extensions/Gadgets/includes/api/ApiQueryGadgetCategories.php b/www/wiki/extensions/Gadgets/includes/api/ApiQueryGadgetCategories.php
new file mode 100644
index 00000000..489f6650
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/includes/api/ApiQueryGadgetCategories.php
@@ -0,0 +1,110 @@
+<?php
+/**
+ * Created on 16 April 2011
+ * API for Gadgets extension
+ *
+ * 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
+ */
+
+class ApiQueryGadgetCategories extends ApiQueryBase {
+ /**
+ * @var array
+ */
+ private $props;
+
+ /**
+ * @var array|bool
+ */
+ private $neededNames;
+
+ public function __construct( ApiQuery $queryModule, $moduleName ) {
+ parent::__construct( $queryModule, $moduleName, 'gc' );
+ }
+
+ public function execute() {
+ $params = $this->extractRequestParams();
+ $this->props = array_flip( $params['prop'] );
+ $this->neededNames = isset( $params['names'] )
+ ? array_flip( $params['names'] )
+ : false;
+
+ $this->getMain()->setCacheMode( 'public' );
+
+ $this->getList();
+ }
+
+ private function getList() {
+ $data = [];
+ $result = $this->getResult();
+ $gadgets = GadgetRepo::singleton()->getStructuredList();
+
+ if ( $gadgets ) {
+ foreach ( $gadgets as $category => $list ) {
+ if ( !$this->neededNames || isset( $this->neededNames[$category] ) ) {
+ $row = [];
+ if ( isset( $this->props['name'] ) ) {
+ $row['name'] = $category;
+ }
+
+ if ( $category !== "" ) {
+ if ( isset( $this->props['title'] ) ) {
+ $row['desc'] = $this->msg( "gadget-section-$category" )->parse();
+ }
+ }
+
+ if ( isset( $this->props['members'] ) ) {
+ $row['members'] = count( $list );
+ }
+
+ $data[] = $row;
+ }
+ }
+ }
+ $result->setIndexedTagName( $data, 'category' );
+ $result->addValue( 'query', $this->getModuleName(), $data );
+ }
+
+ public function getAllowedParams() {
+ return [
+ 'prop' => [
+ ApiBase::PARAM_DFLT => 'name',
+ ApiBase::PARAM_ISMULTI => true,
+ ApiBase::PARAM_TYPE => [
+ 'name',
+ 'title',
+ 'members',
+ ],
+ ],
+ 'names' => [
+ ApiBase::PARAM_TYPE => 'string',
+ ApiBase::PARAM_ISMULTI => true,
+ ],
+ ];
+ }
+
+ /**
+ * @see ApiBase::getExamplesMessages()
+ * @return array
+ */
+ protected function getExamplesMessages() {
+ return [
+ 'action=query&list=gadgetcategories'
+ => 'apihelp-query+gadgetcategories-example-1',
+ 'action=query&list=gadgetcategories&gcnames=foo|bar&gcprop=name|title|members'
+ => 'apihelp-query+gadgetcategories-example-2',
+ ];
+ }
+}
diff --git a/www/wiki/extensions/Gadgets/includes/api/ApiQueryGadgets.php b/www/wiki/extensions/Gadgets/includes/api/ApiQueryGadgets.php
new file mode 100644
index 00000000..618858da
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/includes/api/ApiQueryGadgets.php
@@ -0,0 +1,231 @@
+<?php
+/**
+ * Created on 15 April 2011
+ * API for Gadgets extension
+ *
+ * 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
+ */
+
+class ApiQueryGadgets extends ApiQueryBase {
+ /**
+ * @var array
+ */
+ private $props;
+
+ /**
+ * @var array|bool
+ */
+ private $categories;
+
+ /**
+ * @var array|bool
+ */
+ private $neededIds;
+
+ /**
+ * @var bool
+ */
+ private $listAllowed;
+
+ /**
+ * @var bool
+ */
+ private $listEnabled;
+
+ public function __construct( ApiQuery $queryModule, $moduleName ) {
+ parent::__construct( $queryModule, $moduleName, 'ga' );
+ }
+
+ public function execute() {
+ $params = $this->extractRequestParams();
+ $this->props = array_flip( $params['prop'] );
+ $this->categories = isset( $params['categories'] )
+ ? array_flip( $params['categories'] )
+ : false;
+ $this->neededIds = isset( $params['ids'] )
+ ? array_flip( $params['ids'] )
+ : false;
+ $this->listAllowed = isset( $params['allowedonly'] ) && $params['allowedonly'];
+ $this->listEnabled = isset( $params['enabledonly'] ) && $params['enabledonly'];
+
+ $this->getMain()->setCacheMode( $this->listAllowed || $this->listEnabled
+ ? 'anon-public-user-private' : 'public' );
+
+ $this->applyList( $this->getList() );
+ }
+
+ /**
+ * @return array
+ */
+ private function getList() {
+ $gadgets = GadgetRepo::singleton()->getStructuredList();
+
+ if ( $gadgets === false ) {
+ return [];
+ }
+
+ $result = [];
+ foreach ( $gadgets as $category => $list ) {
+ if ( $this->categories && !isset( $this->categories[$category] ) ) {
+ continue;
+ }
+
+ foreach ( $list as $g ) {
+ if ( $this->isNeeded( $g ) ) {
+ $result[] = $g;
+ }
+ }
+ }
+ return $result;
+ }
+
+ /**
+ * @param array $gadgets
+ */
+ private function applyList( $gadgets ) {
+ $data = [];
+ $result = $this->getResult();
+
+ /**
+ * @var $g Gadget
+ */
+ foreach ( $gadgets as $g ) {
+ $row = [];
+ if ( isset( $this->props['id'] ) ) {
+ $row['id'] = $g->getName();
+ }
+
+ if ( isset( $this->props['metadata'] ) ) {
+ $row['metadata'] = $this->fakeMetadata( $g );
+ $this->setIndexedTagNameForMetadata( $row['metadata'] );
+ }
+
+ if ( isset( $this->props['desc'] ) ) {
+ $row['desc'] = $g->getDescription();
+ }
+
+ $data[] = $row;
+ }
+
+ $result->setIndexedTagName( $data, 'gadget' );
+ $result->addValue( 'query', $this->getModuleName(), $data );
+ }
+
+ /**
+ * @param Gadget $gadget
+ *
+ * @return bool
+ */
+ private function isNeeded( Gadget $gadget ) {
+ $user = $this->getUser();
+
+ return ( $this->neededIds === false || isset( $this->neededIds[$gadget->getName()] ) )
+ && ( !$this->listAllowed || $gadget->isAllowed( $user ) )
+ && ( !$this->listEnabled || $gadget->isEnabled( $user ) );
+ }
+
+ /**
+ * @param Gadget $g
+ * @return array
+ */
+ private function fakeMetadata( Gadget $g ) {
+ return [
+ 'settings' => [
+ 'rights' => $g->getRequiredRights(),
+ 'skins' => $g->getRequiredSkins(),
+ 'default' => $g->isOnByDefault(),
+ 'hidden' => $g->isHidden(),
+ 'shared' => false,
+ 'category' => $g->getCategory(),
+ 'legacyscripts' => (bool)$g->getLegacyScripts(),
+ ],
+ 'module' => [
+ 'scripts' => $g->getScripts(),
+ 'styles' => $g->getStyles(),
+ 'dependencies' => $g->getDependencies(),
+ 'peers' => $g->getPeers(),
+ 'messages' => $g->getMessages(),
+ ]
+ ];
+ }
+
+ private function setIndexedTagNameForMetadata( &$metadata ) {
+ static $tagNames = [
+ 'rights' => 'right',
+ 'skins' => 'skin',
+ 'scripts' => 'script',
+ 'styles' => 'style',
+ 'dependencies' => 'dependency',
+ 'peers' => 'peer',
+ 'messages' => 'message',
+ ];
+
+ $result = $this->getResult();
+ foreach ( $metadata as $data ) {
+ foreach ( $data as $key => $value ) {
+ if ( is_array( $value ) ) {
+ $tag = isset( $tagNames[$key] ) ? $tagNames[$key] : $key;
+ $result->setIndexedTagName( $value, $tag );
+ }
+ }
+ }
+ }
+
+ public function getAllowedParams() {
+ return [
+ 'prop' => [
+ ApiBase::PARAM_DFLT => 'id|metadata',
+ ApiBase::PARAM_ISMULTI => true,
+ ApiBase::PARAM_TYPE => [
+ 'id',
+ 'metadata',
+ 'desc',
+ ],
+ ],
+ 'categories' => [
+ ApiBase::PARAM_ISMULTI => true,
+ ApiBase::PARAM_TYPE => 'string',
+ ],
+ 'ids' => [
+ ApiBase::PARAM_TYPE => 'string',
+ ApiBase::PARAM_ISMULTI => true,
+ ],
+ 'allowedonly' => false,
+ 'enabledonly' => false,
+ ];
+ }
+
+ /**
+ * @see ApiBase::getExamplesMessages()
+ * @return array
+ */
+ protected function getExamplesMessages() {
+ $params = $this->getAllowedParams();
+ $allProps = implode( '|', $params['prop'][ApiBase::PARAM_TYPE] );
+ return [
+ 'action=query&list=gadgets&gaprop=id|desc'
+ => 'apihelp-query+gadgets-example-1',
+ "action=query&list=gadgets&gaprop=$allProps"
+ => 'apihelp-query+gadgets-example-2',
+ 'action=query&list=gadgets&gacategories=foo'
+ => 'apihelp-query+gadgets-example-3',
+ 'action=query&list=gadgets&gaids=foo|bar&gaprop=id|desc|metadata'
+ => 'apihelp-query+gadgets-example-4',
+ 'action=query&list=gadgets&gaenabledonly'
+ => 'apihelp-query+gadgets-example-5',
+ ];
+ }
+}
diff --git a/www/wiki/extensions/Gadgets/includes/content/GadgetDefinitionContent.php b/www/wiki/extensions/Gadgets/includes/content/GadgetDefinitionContent.php
new file mode 100644
index 00000000..0a7b2d9d
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/includes/content/GadgetDefinitionContent.php
@@ -0,0 +1,125 @@
+<?php
+/**
+ * Copyright 2014
+ *
+ * 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
+ */
+
+class GadgetDefinitionContent extends JsonContent {
+
+ public function __construct( $text ) {
+ parent::__construct( $text, 'GadgetDefinition' );
+ }
+
+ public function isValid() {
+ // parent::isValid() is called in validate()
+ return $this->validate()->isOK();
+ }
+
+ /**
+ * Pretty-print JSON.
+ *
+ * If called before validation, it may return JSON "null".
+ *
+ * @return string
+ */
+ public function beautifyJSON() {
+ // @todo we should normalize entries in module.scripts and module.styles
+ return FormatJson::encode( $this->getAssocArray(), "\t", FormatJson::UTF8_OK );
+ }
+
+ /**
+ * Register some links
+ *
+ * @param Title $title
+ * @param int $revId
+ * @param ParserOptions $options
+ * @param bool $generateHtml
+ * @param ParserOutput &$output
+ */
+ protected function fillParserOutput( Title $title, $revId,
+ ParserOptions $options, $generateHtml, ParserOutput &$output
+ ) {
+ parent::fillParserOutput( $title, $revId, $options, $generateHtml, $output );
+ $assoc = $this->getAssocArray();
+ foreach ( [ 'scripts', 'styles' ] as $type ) {
+ foreach ( $assoc['module'][$type] as $page ) {
+ $title = Title::makeTitleSafe( NS_GADGET, $page );
+ if ( $title ) {
+ $output->addLink( $title );
+ }
+ }
+ }
+ }
+
+ /**
+ * @return Status
+ */
+ public function validate() {
+ if ( !parent::isValid() ) {
+ return $this->getData();
+ }
+
+ $validator = new GadgetDefinitionValidator();
+ return $validator->validate( $this->getAssocArray() );
+ }
+
+ /**
+ * Get the JSON content as an associative array with
+ * all fields filled out, populating defaults as necessary.
+ *
+ * @return array
+ * @suppress PhanUndeclaredMethod
+ */
+ public function getAssocArray() {
+ $info = wfObjectToArray( $this->getData()->getValue() );
+ /** @var GadgetDefinitionContentHandler $handler */
+ $handler = $this->getContentHandler();
+ $info = wfArrayPlus2d( $info, $handler->getDefaultMetadata() );
+
+ return $info;
+ }
+
+ /**
+ * @param WikiPage $page
+ * @param ParserOutput $parserOutput
+ * @return DeferrableUpdate[]
+ */
+ public function getDeletionUpdates( WikiPage $page, ParserOutput $parserOutput = null ) {
+ return array_merge(
+ parent::getDeletionUpdates( $page, $parserOutput ),
+ [ new GadgetDefinitionDeletionUpdate( $page->getTitle() ) ]
+ );
+ }
+
+ /**
+ * @param Title $title
+ * @param Content $old
+ * @param bool $recursive
+ * @param ParserOutput $parserOutput
+ * @return DataUpdate[]
+ */
+ public function getSecondaryDataUpdates( Title $title, Content $old = null,
+ $recursive = true, ParserOutput $parserOutput = null
+ ) {
+ return array_merge(
+ parent::getSecondaryDataUpdates( $title, $old, $recursive, $parserOutput ),
+ [ new GadgetDefinitionSecondaryDataUpdate( $title ) ]
+ );
+ }
+}
diff --git a/www/wiki/extensions/Gadgets/includes/content/GadgetDefinitionContentHandler.php b/www/wiki/extensions/Gadgets/includes/content/GadgetDefinitionContentHandler.php
new file mode 100644
index 00000000..59276219
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/includes/content/GadgetDefinitionContentHandler.php
@@ -0,0 +1,64 @@
+<?php
+/**
+ * Copyright 2014
+ *
+ * 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
+ */
+
+class GadgetDefinitionContentHandler extends JsonContentHandler {
+ public function __construct() {
+ parent::__construct( 'GadgetDefinition' );
+ }
+
+ /**
+ * @param Title $title
+ * @return bool
+ */
+ public function canBeUsedOn( Title $title ) {
+ return $title->inNamespace( NS_GADGET_DEFINITION );
+ }
+
+ protected function getContentClass() {
+ return 'GadgetDefinitionContent';
+ }
+
+ public function makeEmptyContent() {
+ $class = $this->getContentClass();
+ return new $class( FormatJson::encode( $this->getDefaultMetadata(), "\t" ) );
+ }
+
+ public function getDefaultMetadata() {
+ return [
+ 'settings' => [
+ 'rights' => [],
+ 'default' => false,
+ 'hidden' => false,
+ 'skins' => [],
+ 'category' => ''
+ ],
+ 'module' => [
+ 'scripts' => [],
+ 'styles' => [],
+ 'peers' => [],
+ 'dependencies' => [],
+ 'messages' => [],
+ 'type' => '',
+ ],
+ ];
+ }
+}
diff --git a/www/wiki/extensions/Gadgets/includes/content/GadgetDefinitionDeletionUpdate.php b/www/wiki/extensions/Gadgets/includes/content/GadgetDefinitionDeletionUpdate.php
new file mode 100644
index 00000000..97c8d8e8
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/includes/content/GadgetDefinitionDeletionUpdate.php
@@ -0,0 +1,43 @@
+<?php
+/**
+ * Copyright 2014
+ *
+ * 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
+ */
+
+use MediaWiki\Linker\LinkTarget;
+
+/**
+ * DataUpdate to run whenever a page in the Gadget definition
+ * is deleted.
+ */
+class GadgetDefinitionDeletionUpdate extends DataUpdate {
+ /**
+ * Page that was deleted
+ * @var LinkTarget
+ */
+ private $target;
+
+ public function __construct( LinkTarget $target ) {
+ $this->target = $target;
+ }
+
+ public function doUpdate() {
+ GadgetRepo::singleton()->handlePageDeletion( $this->target );
+ }
+}
diff --git a/www/wiki/extensions/Gadgets/includes/content/GadgetDefinitionSecondaryDataUpdate.php b/www/wiki/extensions/Gadgets/includes/content/GadgetDefinitionSecondaryDataUpdate.php
new file mode 100644
index 00000000..8a663933
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/includes/content/GadgetDefinitionSecondaryDataUpdate.php
@@ -0,0 +1,40 @@
+<?php
+
+/**
+ * Copyright 2014
+ *
+ * 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
+ */
+
+use MediaWiki\Linker\LinkTarget;
+
+class GadgetDefinitionSecondaryDataUpdate extends DataUpdate {
+
+ /**
+ * @var LinkTarget
+ */
+ private $target;
+
+ public function __construct( LinkTarget $target ) {
+ $this->target = $target;
+ }
+
+ public function doUpdate() {
+ GadgetRepo::singleton()->handlePageUpdate( $this->target );
+ }
+}
diff --git a/www/wiki/extensions/Gadgets/includes/content/GadgetDefinitionValidator.php b/www/wiki/extensions/Gadgets/includes/content/GadgetDefinitionValidator.php
new file mode 100644
index 00000000..2be75783
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/includes/content/GadgetDefinitionValidator.php
@@ -0,0 +1,91 @@
+<?php
+
+/**
+ * Class responsible for validating Gadget definition contents
+ *
+ * @todo maybe this should use a formal JSON schema validator or something
+ */
+class GadgetDefinitionValidator {
+ /**
+ * Validation metadata.
+ * 'foo.bar.baz' => [ 'type check callback',
+ * 'type name' [, 'member type check callback', 'member type name'] ]
+ */
+ protected static $propertyValidation = [
+ 'settings' => [ 'is_array', 'array' ],
+ 'settings.rights' => [ 'is_array', 'array' , 'is_string', 'string' ],
+ 'settings.default' => [ 'is_bool', 'boolean' ],
+ 'settings.hidden' => [ 'is_bool', 'boolean' ],
+ 'settings.skins' => [ [ __CLASS__, 'isArrayOrTrue' ], 'array or true', 'is_string', 'string' ],
+ 'settings.category' => [ 'is_string', 'string' ],
+ 'module' => [ 'is_array', 'array' ],
+ 'module.scripts' => [ 'is_array', 'array', 'is_string', 'string' ],
+ 'module.styles' => [ 'is_array', 'array', 'is_string', 'string' ],
+ 'module.dependencies' => [ 'is_array', 'array', 'is_string', 'string' ],
+ 'module.peers' => [ 'is_array', 'array', 'is_string', 'string' ],
+ 'module.messages' => [ 'is_array', 'array', 'is_string', 'string' ],
+ 'module.type' => [ 'is_string', 'string' ],
+ ];
+
+ /**
+ * @param mixed $value
+ * @return bool
+ */
+ public static function isArrayOrTrue( $value ) {
+ return is_array( $value ) || $value === true;
+ }
+
+ /**
+ * Check the validity of the given properties array
+ * @param array $properties Return value of FormatJson::decode( $blob, true )
+ * @param bool $tolerateMissing If true, don't complain about missing keys
+ * @return Status object with error message if applicable
+ */
+ public function validate( array $properties, $tolerateMissing = false ) {
+ foreach ( self::$propertyValidation as $property => $validation ) {
+ $path = explode( '.', $property );
+ $val = $properties;
+
+ // Walk down and verify that the path from the root to this property exists
+ foreach ( $path as $p ) {
+ if ( !array_key_exists( $p, $val ) ) {
+ if ( $tolerateMissing ) {
+ // Skip validation of this property altogether
+ continue 2;
+ } else {
+ return Status::newFatal( 'gadgets-validate-notset', $property );
+ }
+ }
+ $val = $val[$p];
+ }
+
+ // Do the actual validation of this property
+ $func = $validation[0];
+ if ( !call_user_func( $func, $val ) ) {
+ return Status::newFatal(
+ 'gadgets-validate-wrongtype',
+ $property,
+ $validation[1],
+ gettype( $val )
+ );
+ }
+
+ if ( isset( $validation[2] ) && is_array( $val ) ) {
+ // Descend into the array and check the type of each element
+ $func = $validation[2];
+ foreach ( $val as $i => $v ) {
+ if ( !call_user_func( $func, $v ) ) {
+ return Status::newFatal(
+ 'gadgets-validate-wrongtype',
+ "{$property}[{$i}]",
+ $validation[3],
+ gettype( $v )
+ );
+ }
+ }
+ }
+ }
+
+ return Status::newGood();
+ }
+}
diff --git a/www/wiki/extensions/Gadgets/includes/content/schema.json b/www/wiki/extensions/Gadgets/includes/content/schema.json
new file mode 100644
index 00000000..e326be46
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/includes/content/schema.json
@@ -0,0 +1,65 @@
+{
+ "$schema": "http://json-schema.org/schema#",
+ "description": "Gadget definition schema",
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "settings": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "rights": {
+ "description": "The rights required to be able to enable/load this gadget",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "default": {
+ "description": "Whether this gadget is enabled by default",
+ "type": "boolean",
+ "default": false
+ },
+ "hidden": {
+ "description": "Whether this gadget is hidden from preferences",
+ "type": "boolean",
+ "default": false
+ },
+ "skins": {
+ "description": "Skins supported by this gadget; empty or true if all skins are supported",
+ "type": [ "array", "boolean" ],
+ "items": {
+ "type": "string"
+ }
+ },
+ "category": {
+ "description": "Key of the category this gadget belongs to",
+ "type": "string",
+ "default": ""
+ }
+ }
+ },
+ "module": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "scripts": {
+ "type": "array",
+ "description": "List of JavaScript pages included in this gadget"
+ },
+ "styles": {
+ "type": "array",
+ "description": "List of CSS pages included in this gadget"
+ },
+ "dependencies": {
+ "type": "array",
+ "description": "ResourceLoader modules this gadget depends upon"
+ },
+ "messages": {
+ "type": "array",
+ "description": "Messages this gadget depends upon"
+ }
+ }
+ }
+ }
+}
diff --git a/www/wiki/extensions/Gadgets/install.settings b/www/wiki/extensions/Gadgets/install.settings
new file mode 100644
index 00000000..f67255a8
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/install.settings
@@ -0,0 +1 @@
+require_once( "{{path}}/Gadgets.php" );
diff --git a/www/wiki/extensions/Gadgets/phpcs.xml b/www/wiki/extensions/Gadgets/phpcs.xml
new file mode 100644
index 00000000..3f9d0cb6
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/phpcs.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<ruleset>
+ <rule ref="./vendor/mediawiki/mediawiki-codesniffer/MediaWiki">
+ <exclude name="MediaWiki.Commenting.FunctionComment.MissingParamComment" />
+ <exclude name="MediaWiki.Files.ClassMatchesFilename.NotMatch" />
+ <exclude name="MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected" />
+ <exclude name="MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic" />
+ <exclude name="MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment" />
+ </rule>
+ <file>.</file>
+ <arg name="extensions" value="php,php5,inc" />
+ <arg name="encoding" value="UTF-8" />
+</ruleset>
diff --git a/www/wiki/extensions/Gadgets/tests/GadgetTest.php b/www/wiki/extensions/Gadgets/tests/GadgetTest.php
new file mode 100644
index 00000000..86ac0fd3
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/tests/GadgetTest.php
@@ -0,0 +1,80 @@
+<?php
+/**
+ * @group Gadgets
+ */
+
+class GadgetsTest extends MediaWikiTestCase {
+ /**
+ * @param string $line
+ * @return Gadget
+ */
+ private function create( $line ) {
+ $repo = new MediaWikiGadgetsDefinitionRepo();
+ $g = $repo->newFromDefinition( $line, 'misc' );
+ $this->assertInstanceOf( 'Gadget', $g );
+
+ return $g;
+ }
+
+ public function testInvalidLines() {
+ $repo = new MediaWikiGadgetsDefinitionRepo();
+ $this->assertFalse( $repo->newFromDefinition( '', 'misc' ) );
+ $this->assertFalse( $repo->newFromDefinition( '<foo|bar>', 'misc' ) );
+ }
+
+ public function testSimpleCases() {
+ $g = $this->create( '* foo bar| foo.css|foo.js|foo.bar' );
+ $this->assertEquals( 'foo_bar', $g->getName() );
+ $this->assertEquals( 'ext.gadget.foo_bar', Gadget::getModuleName( $g->getName() ) );
+ $this->assertEquals( array( 'MediaWiki:Gadget-foo.js' ), $g->getScripts() );
+ $this->assertEquals( array( 'MediaWiki:Gadget-foo.css' ), $g->getStyles() );
+ $this->assertEquals( array( 'MediaWiki:Gadget-foo.js', 'MediaWiki:Gadget-foo.css' ),
+ $g->getScriptsAndStyles() );
+ $this->assertEquals( array( 'MediaWiki:Gadget-foo.js' ), $g->getLegacyScripts() );
+ $this->assertFalse( $g->supportsResourceLoader() );
+ $this->assertTrue( $g->hasModule() );
+ }
+
+ public function testRLtag() {
+ $g = $this->create( '*foo [ResourceLoader]|foo.js|foo.css' );
+ $this->assertEquals( 'foo', $g->getName() );
+ $this->assertTrue( $g->supportsResourceLoader() );
+ $this->assertEquals( 0, count( $g->getLegacyScripts() ) );
+ }
+
+ public function testDependencies() {
+ $g = $this->create( '* foo[ResourceLoader|dependencies=jquery.ui]|bar.js' );
+ $this->assertEquals( array( 'MediaWiki:Gadget-bar.js' ), $g->getScripts() );
+ $this->assertTrue( $g->supportsResourceLoader() );
+ $this->assertEquals( array( 'jquery.ui' ), $g->getDependencies() );
+ }
+
+ public function testPreferences() {
+ $prefs = array();
+ $repo = TestingAccessWrapper::newFromObject( new MediaWikiGadgetsDefinitionRepo() );
+ // Force usage of a MediaWikiGadgetsDefinitionRepo
+ GadgetRepo::setSingleton( $repo );
+
+ $gadgets = $repo->fetchStructuredList( '* foo | foo.js
+==keep-section1==
+* bar| bar.js
+==remove-section==
+* baz [rights=embezzle] |baz.js
+==keep-section2==
+* quux [rights=read] | quux.js' );
+ $this->assertGreaterThanOrEqual( 2, count( $gadgets ), "Gadget list parsed" );
+
+ $repo->definitionCache = $gadgets;
+ $this->assertTrue( GadgetHooks::getPreferences( new User, $prefs ), 'GetPrefences hook should return true' );
+
+ $options = $prefs['gadgets']['options'];
+ $this->assertFalse( isset( $options['&lt;gadget-section-remove-section&gt;'] ), 'Must not show empty sections' );
+ $this->assertTrue( isset( $options['&lt;gadget-section-keep-section1&gt;'] ) );
+ $this->assertTrue( isset( $options['&lt;gadget-section-keep-section2&gt;'] ) );
+ }
+
+ public function tearDown() {
+ GadgetRepo::setSingleton();
+ parent::tearDown();
+ }
+}
diff --git a/www/wiki/extensions/Gadgets/tests/phan/config.php b/www/wiki/extensions/Gadgets/tests/phan/config.php
new file mode 100644
index 00000000..6bc24d22
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/tests/phan/config.php
@@ -0,0 +1,7 @@
+<?php
+
+$cfg = require __DIR__ . '/../../vendor/mediawiki/mediawiki-phan-config/src/config.php';
+// Namespace constants
+$cfg['file_list'][] = 'Gadgets.namespaces.php';
+
+return $cfg;
diff --git a/www/wiki/extensions/Gadgets/tests/phpunit/GadgetTest.php b/www/wiki/extensions/Gadgets/tests/phpunit/GadgetTest.php
new file mode 100644
index 00000000..39a742ec
--- /dev/null
+++ b/www/wiki/extensions/Gadgets/tests/phpunit/GadgetTest.php
@@ -0,0 +1,206 @@
+<?php
+
+use Wikimedia\TestingAccessWrapper;
+
+/**
+ * @group Gadgets
+ */
+class GadgetTest extends MediaWikiTestCase {
+
+ public function tearDown() {
+ GadgetRepo::setSingleton();
+ parent::tearDown();
+ }
+
+ /**
+ * @param string $line
+ * @return Gadget
+ */
+ private function create( $line ) {
+ $repo = new MediaWikiGadgetsDefinitionRepo();
+ $g = $repo->newFromDefinition( $line, 'misc' );
+ $this->assertInstanceOf( Gadget::class, $g );
+ return $g;
+ }
+
+ private function getModule( Gadget $g ) {
+ $module = TestingAccessWrapper::newFromObject(
+ new GadgetResourceLoaderModule( [ 'id' => null ] )
+ );
+ $module->gadget = $g;
+ return $module;
+ }
+
+ /**
+ * @covers MediaWikiGadgetsDefinitionRepo::newFromDefinition
+ */
+ public function testInvalidLines() {
+ $repo = new MediaWikiGadgetsDefinitionRepo();
+ $this->assertFalse( $repo->newFromDefinition( '', 'misc' ) );
+ $this->assertFalse( $repo->newFromDefinition( '<foo|bar>', 'misc' ) );
+ }
+
+ /**
+ * @covers MediaWikiGadgetsDefinitionRepo::newFromDefinition
+ * @covers Gadget::__construct
+ * @covers Gadget::getName
+ * @covers Gadget::getModuleName
+ */
+ public function testSimpleCases() {
+ $g = $this->create( '* foo bar| foo.css|foo.js|foo.bar' );
+ $this->assertEquals( 'foo_bar', $g->getName() );
+ $this->assertEquals( 'ext.gadget.foo_bar', Gadget::getModuleName( $g->getName() ) );
+ $this->assertEquals( [ 'MediaWiki:Gadget-foo.js' ], $g->getScripts() );
+ $this->assertEquals( [ 'MediaWiki:Gadget-foo.css' ], $g->getStyles() );
+ $this->assertEquals( [ 'MediaWiki:Gadget-foo.js', 'MediaWiki:Gadget-foo.css' ],
+ $g->getScriptsAndStyles() );
+ $this->assertEquals( [ 'MediaWiki:Gadget-foo.js' ], $g->getLegacyScripts() );
+ $this->assertFalse( $g->supportsResourceLoader() );
+ $this->assertTrue( $g->hasModule() );
+ }
+
+ /**
+ * @covers MediaWikiGadgetsDefinitionRepo::newFromDefinition
+ * @covers Gadget::supportsResourceLoader
+ * @covers Gadget::getLegacyScripts
+ */
+ public function testRLtag() {
+ $g = $this->create( '*foo [ResourceLoader]|foo.js|foo.css' );
+ $this->assertEquals( 'foo', $g->getName() );
+ $this->assertTrue( $g->supportsResourceLoader() );
+ $this->assertEquals( 0, count( $g->getLegacyScripts() ) );
+ }
+
+ /**
+ * @covers MediaWikiGadgetsDefinitionRepo::newFromDefinition
+ * @covers Gadget::getDependencies
+ */
+ public function testDependencies() {
+ $g = $this->create( '* foo[ResourceLoader|dependencies=jquery.ui]|bar.js' );
+ $this->assertEquals( [ 'MediaWiki:Gadget-bar.js' ], $g->getScripts() );
+ $this->assertTrue( $g->supportsResourceLoader() );
+ $this->assertEquals( [ 'jquery.ui' ], $g->getDependencies() );
+ }
+
+ public static function provideGetType() {
+ return [
+ [
+ 'Default (mixed)',
+ '* foo[ResourceLoader]|bar.css|bar.js',
+ 'general',
+ ResourceLoaderModule::LOAD_GENERAL,
+ ],
+ [
+ 'Default (styles only)',
+ '* foo[ResourceLoader]|bar.css',
+ 'styles',
+ ResourceLoaderModule::LOAD_STYLES,
+ ],
+ [
+ 'Default (scripts only)',
+ '* foo[ResourceLoader]|bar.js',
+ 'general',
+ ResourceLoaderModule::LOAD_GENERAL,
+ ],
+ [
+ 'Default (styles only with dependencies)',
+ '* foo[ResourceLoader|dependencies=jquery.ui]|bar.css',
+ 'general',
+ ResourceLoaderModule::LOAD_GENERAL,
+ ],
+ [
+ 'Styles type (mixed)',
+ '* foo[ResourceLoader|type=styles]|bar.css|bar.js',
+ 'styles',
+ ResourceLoaderModule::LOAD_STYLES,
+ ],
+ [
+ 'Styles type (styles only)',
+ '* foo[ResourceLoader|type=styles]|bar.css',
+ 'styles',
+ ResourceLoaderModule::LOAD_STYLES,
+ ],
+ [
+ 'Styles type (scripts only)',
+ '* foo[ResourceLoader|type=styles]|bar.js',
+ 'styles',
+ ResourceLoaderModule::LOAD_STYLES,
+ ],
+ [
+ 'General type (mixed)',
+ '* foo[ResourceLoader|type=general]|bar.css|bar.js',
+ 'general',
+ ResourceLoaderModule::LOAD_GENERAL,
+ ],
+ [
+ 'General type (styles only)',
+ '* foo[ResourceLoader|type=general]|bar.css',
+ 'general',
+ ResourceLoaderModule::LOAD_GENERAL,
+ ],
+ [
+ 'General type (scripts only)',
+ '* foo[ResourceLoader|type=general]|bar.js',
+ 'general',
+ ResourceLoaderModule::LOAD_GENERAL,
+ ],
+ ];
+ }
+
+ /**
+ * @dataProvider provideGetType
+ * @covers MediaWikiGadgetsDefinitionRepo::newFromDefinition
+ * @covers Gadget::getType
+ * @covers GadgetResourceLoaderModule::getType
+ */
+ public function testType( $message, $definition, $gType, $mType ) {
+ $g = $this->create( $definition );
+ $this->assertEquals( $gType, $g->getType(), "Gadget: $message" );
+ $this->assertEquals( $mType, $this->getModule( $g )->getType(), "Module: $message" );
+ }
+
+ /**
+ * @covers MediaWikiGadgetsDefinitionRepo::newFromDefinition
+ * @covers Gadget::isHidden
+ */
+ public function testIsHidden() {
+ $g = $this->create( '* foo[hidden]|bar.js' );
+ $this->assertTrue( $g->isHidden() );
+
+ $g = $this->create( '* foo[ResourceLoader|hidden]|bar.js' );
+ $this->assertTrue( $g->isHidden() );
+
+ $g = $this->create( '* foo[ResourceLoader]|bar.js' );
+ $this->assertFalse( $g->isHidden() );
+ }
+
+ /**
+ * @covers MediaWikiGadgetsDefinitionRepo::fetchStructuredList
+ * @covers GadgetHooks::getPreferences
+ */
+ public function testPreferences() {
+ $prefs = [];
+ $repo = TestingAccessWrapper::newFromObject( new MediaWikiGadgetsDefinitionRepo() );
+ // Force usage of a MediaWikiGadgetsDefinitionRepo
+ GadgetRepo::setSingleton( $repo );
+
+ $gadgets = $repo->fetchStructuredList( '* foo | foo.js
+==keep-section1==
+* bar| bar.js
+==remove-section==
+* baz [rights=embezzle] |baz.js
+==keep-section2==
+* quux [rights=read] | quux.js' );
+ $this->assertGreaterThanOrEqual( 2, count( $gadgets ), "Gadget list parsed" );
+
+ $repo->definitionCache = $gadgets;
+ $this->assertTrue( GadgetHooks::getPreferences( new User, $prefs ),
+ 'GetPrefences hook should return true' );
+
+ $options = $prefs['gadgets']['options'];
+ $this->assertArrayNotHasKey( '⧼gadget-section-remove-section⧽', $options,
+ 'Must not show empty sections' );
+ $this->assertArrayHasKey( '⧼gadget-section-keep-section1⧽', $options );
+ $this->assertArrayHasKey( '⧼gadget-section-keep-section2⧽', $options );
+ }
+}