summaryrefslogtreecommitdiff
path: root/www/wiki/extensions/DataTransfer
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/DataTransfer
first commit
Diffstat (limited to 'www/wiki/extensions/DataTransfer')
-rw-r--r--www/wiki/extensions/DataTransfer/COPYING348
-rw-r--r--www/wiki/extensions/DataTransfer/DataTransfer.i18n.alias.php411
-rw-r--r--www/wiki/extensions/DataTransfer/DataTransfer.php70
-rw-r--r--www/wiki/extensions/DataTransfer/Gruntfile.js21
-rw-r--r--www/wiki/extensions/DataTransfer/INSTALL34
-rw-r--r--www/wiki/extensions/DataTransfer/README31
-rw-r--r--www/wiki/extensions/DataTransfer/composer.json97
-rw-r--r--www/wiki/extensions/DataTransfer/extension.json72
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/af.json38
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/ais.json8
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/aln.json31
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/am.json12
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/an.json13
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/ar.json43
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/arc.json18
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/arn.json8
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/arz.json27
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/ast.json39
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/atj.json8
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/az.json17
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/azb.json8
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/ba.json42
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/bcc.json8
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/be-tarask.json42
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/be.json9
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/bg.json27
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/bn.json35
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/br.json42
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/bs.json37
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/ca.json43
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/ce.json25
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/ckb.json14
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/cs.json34
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/cu.json8
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/cv.json10
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/da.json26
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/de.json44
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/diq.json33
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/dsb.json37
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/ee.json4
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/el.json34
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/en.json41
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/eo.json33
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/es.json48
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/et.json22
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/eu.json40
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/fa.json39
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/fi.json42
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/fr.json47
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/frp.json34
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/fy.json14
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/ga.json15
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/gl.json42
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/got.json9
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/grc.json18
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/gsw.json37
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/gv.json13
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/ha.json5
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/haw.json9
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/he.json42
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/hi.json29
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/hr.json10
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/hsb.json37
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/hu.json38
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/ia.json39
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/id.json40
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/ig.json15
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/inh.json10
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/io.json10
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/is.json16
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/it.json41
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/ja.json47
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/jv.json17
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/ka.json30
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/km.json38
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/kn.json16
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/ko.json44
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/krj.json9
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/ksh.json39
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/ku-latn.json14
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/kw.json11
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/lb.json40
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/li.json9
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/lki.json8
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/lt.json34
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/ltg.json10
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/lv.json18
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/mhr.json9
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/min.json8
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/mk.json39
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/ml.json31
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/mn.json11
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/mr.json25
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/ms.json37
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/mt.json37
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/mwl.json8
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/my.json16
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/myv.json15
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/mzn.json8
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/nah.json16
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/nb.json42
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/nds.json17
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/nl.json42
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/nn.json34
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/oc.json34
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/or.json17
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/os.json10
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/pdc.json16
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/pl.json41
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/pms.json37
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/ps.json20
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/pt-br.json46
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/pt.json44
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/qqq.json49
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/ro.json31
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/roa-tara.json39
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/rtm.json8
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/ru.json43
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/rue.json20
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/scn.json9
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/sd.json8
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/si.json32
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/sk.json31
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/sl.json39
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/sr-ec.json37
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/sr-el.json27
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/stq.json18
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/su.json8
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/sv.json46
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/szl.json9
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/ta.json37
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/te.json27
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/tet.json14
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/tg-cyrl.json14
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/tg-latn.json14
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/th.json10
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/tk.json9
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/tl.json36
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/tly.json8
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/tr.json37
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/tt-cyrl.json22
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/tzm.json10
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/ug-latn.json8
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/uk.json43
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/ur.json18
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/vi.json34
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/vo.json21
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/yi.json9
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/zh-hans.json45
-rw-r--r--www/wiki/extensions/DataTransfer/i18n/zh-hant.json43
-rw-r--r--www/wiki/extensions/DataTransfer/includes/DT_Hooks.php26
-rw-r--r--www/wiki/extensions/DataTransfer/includes/DT_ImportJob.php69
-rw-r--r--www/wiki/extensions/DataTransfer/includes/DT_Page.php56
-rw-r--r--www/wiki/extensions/DataTransfer/includes/DT_PageComponent.php131
-rw-r--r--www/wiki/extensions/DataTransfer/includes/DT_PageStructure.php243
-rw-r--r--www/wiki/extensions/DataTransfer/includes/DT_Utils.php86
-rw-r--r--www/wiki/extensions/DataTransfer/includes/DT_WikiPage.php40
-rw-r--r--www/wiki/extensions/DataTransfer/includes/DT_WikiTemplate.php37
-rw-r--r--www/wiki/extensions/DataTransfer/includes/DT_XMLParser.php215
-rw-r--r--www/wiki/extensions/DataTransfer/package.json11
-rw-r--r--www/wiki/extensions/DataTransfer/specials/DT_ImportCSV.php217
-rw-r--r--www/wiki/extensions/DataTransfer/specials/DT_ImportSpreadsheet.php53
-rw-r--r--www/wiki/extensions/DataTransfer/specials/DT_ImportXML.php73
-rw-r--r--www/wiki/extensions/DataTransfer/specials/DT_ViewXML.php269
-rw-r--r--www/wiki/extensions/DataTransfer/styles/DataTransfer.css4
165 files changed, 6230 insertions, 0 deletions
diff --git a/www/wiki/extensions/DataTransfer/COPYING b/www/wiki/extensions/DataTransfer/COPYING
new file mode 100644
index 00000000..a8659280
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/COPYING
@@ -0,0 +1,348 @@
+The license text below "----" applies to all files within this distribution, other
+than those that are in a directory which contains files named "LICENSE" or
+"COPYING", or a subdirectory thereof. For those files, the license text contained in
+said file overrides any license information contained in directories of smaller depth.
+Alternative licenses are typically used for software that is provided by external
+parties, and merely packaged with the Data Transfer release for convenience.
+----
+
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Library General
+Public License instead of this License.
diff --git a/www/wiki/extensions/DataTransfer/DataTransfer.i18n.alias.php b/www/wiki/extensions/DataTransfer/DataTransfer.i18n.alias.php
new file mode 100644
index 00000000..56edd9ef
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/DataTransfer.i18n.alias.php
@@ -0,0 +1,411 @@
+<?php
+/**
+ * Aliases for special pages
+ *
+ * @file
+ * @ingroup Extensions
+ */
+
+$specialPageAliases = array();
+
+/** English (English) */
+$specialPageAliases['en'] = array(
+ 'ImportCSV' => array( 'ImportCSV' ),
+ 'ImportXML' => array( 'ImportXML' ),
+ 'ImportSpreadsheet' => array( 'ImportSpreadsheet' ),
+ 'ViewXML' => array( 'ViewXML' ),
+);
+
+/** Afrikaans (Afrikaans) */
+$specialPageAliases['af'] = array(
+ 'ViewXML' => array( 'WysXML' ),
+);
+
+/** Arabic (العربية) */
+$specialPageAliases['ar'] = array(
+ 'ImportCSV' => array( 'استيراد_سي_إس_في' ),
+ 'ImportXML' => array( 'استيراد_إكس_إم_إل' ),
+ 'ViewXML' => array( 'عرض_إكس_إم_إل' ),
+);
+
+/** Egyptian Arabic (مصرى) */
+$specialPageAliases['arz'] = array(
+ 'ImportCSV' => array( 'استيراد_سى_اس_فى' ),
+ 'ImportXML' => array( 'استيراد_اكس_ام_ال' ),
+ 'ViewXML' => array( 'عرض_اكس_ام_ال' ),
+);
+
+/** Assamese (অসমীয়া) */
+$specialPageAliases['as'] = array(
+ 'ImportCSV' => array( 'CSV_আমদানি' ),
+ 'ImportXML' => array( 'XML_আমদানি' ),
+ 'ViewXML' => array( 'XML_পৰিদৰ্শন' ),
+);
+
+/** Western Balochi (بلوچی رخشانی) */
+$specialPageAliases['bgn'] = array(
+ 'ImportCSV' => array( 'سی_اس_وی_ئی_درون_ریچی' ),
+ 'ImportXML' => array( 'اکس_ام_ال_ئی_درون_ریچی' ),
+ 'ViewXML' => array( 'اکس_ام_ال_ئی_دیستین' ),
+);
+
+/** Banjar (Bahasa Banjar) */
+$specialPageAliases['bjn'] = array(
+ 'ViewXML' => array( 'Itihi_XML' ),
+);
+
+/** Breton (brezhoneg) */
+$specialPageAliases['br'] = array(
+ 'ImportCSV' => array( 'EnporzhiañCSV' ),
+ 'ImportXML' => array( 'EnporzhiañXML' ),
+ 'ViewXML' => array( 'GweletXML' ),
+);
+
+/** Bosnian (bosanski) */
+$specialPageAliases['bs'] = array(
+ 'ViewXML' => array( 'VidiXML' ),
+);
+
+/** Min Dong Chinese (Mìng-dĕ̤ng-ngṳ̄) */
+$specialPageAliases['cdo'] = array(
+ 'ImportCSV' => array( '導底CSV' ),
+ 'ImportXML' => array( '導底XML' ),
+ 'ViewXML' => array( '看蜀看XML' ),
+);
+
+/** German (Deutsch) */
+$specialPageAliases['de'] = array(
+ 'ImportCSV' => array( 'CSV_importieren' ),
+ 'ImportXML' => array( 'XML_importieren' ),
+ 'ViewXML' => array( 'XML_anzeigen' ),
+);
+
+/** Zazaki (Zazaki) */
+$specialPageAliases['diq'] = array(
+ 'ImportCSV' => array( 'CSVCıKe' ),
+ 'ImportXML' => array( 'XMLCıKe' ),
+ 'ViewXML' => array( 'XMLBivêne' ),
+);
+
+/** Greek (Ελληνικά) */
+$specialPageAliases['el'] = array(
+ 'ImportCSV' => array( 'ΕισαγωγήCSV' ),
+ 'ImportXML' => array( 'ΕισαγωγήXML' ),
+ 'ViewXML' => array( 'ΠροβολήXML' ),
+);
+
+/** Esperanto (Esperanto) */
+$specialPageAliases['eo'] = array(
+ 'ImportCSV' => array( 'Enporti_CSV', 'Importi_CSV' ),
+ 'ImportXML' => array( 'Enporti_XML', 'Importi_XML' ),
+ 'ViewXML' => array( 'Montri_XML' ),
+);
+
+/** Spanish (español) */
+$specialPageAliases['es'] = array(
+ 'ViewXML' => array( 'Ver_XML', 'VerXML' ),
+);
+
+/** Basque (euskara) */
+$specialPageAliases['eu'] = array(
+ 'ViewXML' => array( 'XMLIkusi' ),
+);
+
+/** Persian (فارسی) */
+$specialPageAliases['fa'] = array(
+ 'ImportCSV' => array( 'درون‌ریزی_سی‌اس‌وی' ),
+ 'ImportXML' => array( 'درون‌ریزی_اکس‌ام‌ال' ),
+ 'ViewXML' => array( 'مشاهدهٔ_اکس‌ام‌ال' ),
+);
+
+/** Finnish (suomi) */
+$specialPageAliases['fi'] = array(
+ 'ImportCSV' => array( 'Tuo_CSV' ),
+ 'ImportXML' => array( 'Tuo_XML' ),
+ 'ViewXML' => array( 'Näytä_XML' ),
+);
+
+/** French (français) */
+$specialPageAliases['fr'] = array(
+ 'ImportCSV' => array( 'Importer_CVS', 'ImporterCVS' ),
+ 'ImportXML' => array( 'Importer_XML', 'ImporterXML' ),
+ 'ViewXML' => array( 'Voir_le_XML', 'Voir_XML', 'VoirXML' ),
+);
+
+/** Arpitan (arpetan) */
+$specialPageAliases['frp'] = array(
+ 'ViewXML' => array( 'Vêre_lo_XML', 'VêreLoXML' ),
+);
+
+/** Galician (galego) */
+$specialPageAliases['gl'] = array(
+ 'ImportCSV' => array( 'Importar_o_CSV' ),
+ 'ImportXML' => array( 'Importar_o_XML' ),
+ 'ViewXML' => array( 'Ver_o_XML' ),
+);
+
+/** Swiss German (Alemannisch) */
+$specialPageAliases['gsw'] = array(
+ 'ViewXML' => array( 'Lueg_XML' ),
+);
+
+/** Gujarati (ગુજરાતી) */
+$specialPageAliases['gu'] = array(
+ 'ViewXML' => array( 'XMLજુઓ' ),
+);
+
+/** Hawaiian (Hawai`i) */
+$specialPageAliases['haw'] = array(
+ 'ImportCSV' => array( 'KākomoCSV', 'KakomoCSV' ),
+ 'ImportXML' => array( 'KākomoXML', 'KakomoXML' ),
+ 'ViewXML' => array( 'NānāXML', 'NanaXML' ),
+);
+
+/** Upper Sorbian (hornjoserbsce) */
+$specialPageAliases['hsb'] = array(
+ 'ImportCSV' => array( 'CSV_importować' ),
+ 'ImportXML' => array( 'XML_importować' ),
+ 'ViewXML' => array( 'XML_pokazać' ),
+);
+
+/** Haitian (Kreyòl ayisyen) */
+$specialPageAliases['ht'] = array(
+ 'ImportCSV' => array( 'EnpòteCSV' ),
+ 'ImportXML' => array( 'EnpòteXML' ),
+ 'ViewXML' => array( 'WèXML' ),
+);
+
+/** Hungarian (magyar) */
+$specialPageAliases['hu'] = array(
+ 'ViewXML' => array( 'XML_megtekintése' ),
+);
+
+/** Interlingua (interlingua) */
+$specialPageAliases['ia'] = array(
+ 'ImportCSV' => array( 'Importar_CSV' ),
+ 'ImportXML' => array( 'Importar_XML' ),
+ 'ViewXML' => array( 'Visualisar_XML' ),
+);
+
+/** Indonesian (Bahasa Indonesia) */
+$specialPageAliases['id'] = array(
+ 'ImportCSV' => array( 'Impor_CSV', 'ImporCSV' ),
+ 'ImportXML' => array( 'Impor_XML', 'ImporXML' ),
+ 'ViewXML' => array( 'Lihat_XML', 'LihatXML' ),
+);
+
+/** Italian (italiano) */
+$specialPageAliases['it'] = array(
+ 'ImportCSV' => array( 'ImportaCSV' ),
+ 'ImportXML' => array( 'ImportaXML' ),
+ 'ViewXML' => array( 'VediXML' ),
+);
+
+/** Japanese (日本語) */
+$specialPageAliases['ja'] = array(
+ 'ImportCSV' => array( 'CSV取り込み', 'CSVインポート' ),
+ 'ImportXML' => array( 'XML取り込み', 'XMLインポート' ),
+ 'ViewXML' => array( 'XML表示', 'XML表示' ),
+);
+
+/** Khmer (ភាសាខ្មែរ) */
+$specialPageAliases['km'] = array(
+ 'ViewXML' => array( 'មើលXML' ),
+);
+
+/** Korean (한국어) */
+$specialPageAliases['ko'] = array(
+ 'ImportCSV' => array( 'CSV가져오기' ),
+ 'ImportXML' => array( 'XML가져오기' ),
+ 'ViewXML' => array( 'XML보기' ),
+);
+
+/** Colognian (Ripoarisch) */
+$specialPageAliases['ksh'] = array(
+ 'ImportCSV' => array( 'CSV_Empotteere' ),
+ 'ImportXML' => array( 'XML_Empoteere' ),
+ 'ViewXML' => array( 'XML_beloore' ),
+);
+
+/** Cornish (kernowek) */
+$specialPageAliases['kw'] = array(
+ 'ImportCSV' => array( 'YmperthiCSV' ),
+ 'ImportXML' => array( 'YmperthiXML' ),
+ 'ViewXML' => array( 'GwelesXML' ),
+);
+
+/** Ladino (Ladino) */
+$specialPageAliases['lad'] = array(
+ 'ImportCSV' => array( 'Aktarear_CSV_Ariento' ),
+ 'ImportXML' => array( 'Aktarear_XML_Ariento' ),
+ 'ViewXML' => array( 'Ver_XML' ),
+);
+
+/** Luxembourgish (Lëtzebuergesch) */
+$specialPageAliases['lb'] = array(
+ 'ImportCSV' => array( 'CSV_importéieren' ),
+ 'ImportXML' => array( 'XML_importéieren' ),
+ 'ViewXML' => array( 'XML_weisen' ),
+);
+
+/** Northern Luri (لۊری شومالی) */
+$specialPageAliases['lrc'] = array(
+ 'ImportCSV' => array( 'ڤامین_اآڤوردئن_سی_ئس_ڤی' ),
+ 'ImportXML' => array( 'ڤامین_آڤوردئن_ئیکس_ئم_ئل' ),
+ 'ViewXML' => array( 'دیئن_ئیکس_ئم_ئل' ),
+);
+
+/** Malagasy (Malagasy) */
+$specialPageAliases['mg'] = array(
+ 'ImportCSV' => array( 'HanafatraCSV' ),
+ 'ImportXML' => array( 'HanafatraXML' ),
+ 'ViewXML' => array( 'HijeryXML' ),
+);
+
+/** Macedonian (македонски) */
+$specialPageAliases['mk'] = array(
+ 'ImportCSV' => array( 'УвезиCSV' ),
+ 'ImportXML' => array( 'УвезиXML' ),
+ 'ViewXML' => array( 'ВидиXML' ),
+);
+
+/** Malayalam (മലയാളം) */
+$specialPageAliases['ml'] = array(
+ 'ImportCSV' => array( 'സി.എസ്.വി.ഇറക്കുമതി' ),
+ 'ImportXML' => array( 'എക്സ്.എം.എൽ.ഇറക്കുമതി' ),
+ 'ViewXML' => array( 'എക്സ്.എം.എൽ.കാണുക' ),
+);
+
+/** Marathi (मराठी) */
+$specialPageAliases['mr'] = array(
+ 'ViewXML' => array( 'XMLपहा' ),
+);
+
+/** Maltese (Malti) */
+$specialPageAliases['mt'] = array(
+ 'ViewXML' => array( 'UriXML' ),
+);
+
+/** Norwegian Bokmål (norsk bokmål) */
+$specialPageAliases['nb'] = array(
+ 'ImportCSV' => array( 'Importer_CSV' ),
+ 'ImportXML' => array( 'Importer_XML' ),
+ 'ViewXML' => array( 'Vis_XML' ),
+);
+
+/** Low Saxon (Netherlands) (Nedersaksies) */
+$specialPageAliases['nds-nl'] = array(
+ 'ImportCSV' => array( 'CSV_invoeren' ),
+ 'ImportXML' => array( 'XML_invoeren' ),
+ 'ViewXML' => array( 'XML_bekieken' ),
+);
+
+/** Dutch (Nederlands) */
+$specialPageAliases['nl'] = array(
+ 'ImportCSV' => array( 'CSVImporteren' ),
+ 'ImportXML' => array( 'XMLImporteren' ),
+ 'ViewXML' => array( 'XMLBekijken' ),
+);
+
+/** Occitan (occitan) */
+$specialPageAliases['oc'] = array(
+ 'ViewXML' => array( 'Veire_XML', 'VeireXML' ),
+);
+
+/** Polish (polski) */
+$specialPageAliases['pl'] = array(
+ 'ViewXML' => array( 'XML' ),
+);
+
+/** Portuguese (português) */
+$specialPageAliases['pt'] = array(
+ 'ImportCSV' => array( 'Importar_CSV' ),
+ 'ImportXML' => array( 'Importar_XML' ),
+ 'ViewXML' => array( 'Ver_XML' ),
+);
+
+/** Romanian (română) */
+$specialPageAliases['ro'] = array(
+ 'ImportCSV' => array( 'Import_CSV' ),
+ 'ImportXML' => array( 'Import_XML' ),
+ 'ViewXML' => array( 'Vizualizare_XML' ),
+);
+
+/** Sanskrit (संस्कृतम्) */
+$specialPageAliases['sa'] = array(
+ 'ViewXML' => array( 'XMLपश्यति' ),
+);
+
+/** Sicilian (sicilianu) */
+$specialPageAliases['scn'] = array(
+ 'ImportCSV' => array( 'ImportaCSV' ),
+ 'ImportXML' => array( 'ImportaXML' ),
+ 'ViewXML' => array( 'VediXML' ),
+);
+
+/** Slovak (slovenčina) */
+$specialPageAliases['sk'] = array(
+ 'ViewXML' => array( 'ZobraziťXML' ),
+);
+
+/** Albanian (shqip) */
+$specialPageAliases['sq'] = array(
+ 'ViewXML' => array( 'ShihXML' ),
+);
+
+/** Swedish (svenska) */
+$specialPageAliases['sv'] = array(
+ 'ImportCSV' => array( 'Importera_CSV' ),
+ 'ImportXML' => array( 'Importera_XML' ),
+ 'ViewXML' => array( 'Visa_XML' ),
+);
+
+/** Swahili (Kiswahili) */
+$specialPageAliases['sw'] = array(
+ 'ViewXML' => array( 'OnyeshaXML' ),
+);
+
+/** Tagalog (Tagalog) */
+$specialPageAliases['tl'] = array(
+ 'ViewXML' => array( 'Tingnan_ang_XML' ),
+);
+
+/** Turkish (Türkçe) */
+$specialPageAliases['tr'] = array(
+ 'ImportCSV' => array( 'CSVAktar', 'CSVİçeAktar' ),
+ 'ImportXML' => array( 'XMLAktar', 'XMLİçeAktar' ),
+ 'ViewXML' => array( 'XMLGör' ),
+);
+
+/** Tatar (Cyrillic script) (татарча) */
+$specialPageAliases['tt-cyrl'] = array(
+ 'ImportCSV' => array( 'CSV_импорт' ),
+ 'ImportXML' => array( 'XML_импорт' ),
+ 'ViewXML' => array( 'XML_иттереп_ачу' ),
+);
+
+/** Venetian (vèneto) */
+$specialPageAliases['vec'] = array(
+ 'ViewXML' => array( 'VardaXML' ),
+);
+
+/** Vietnamese (Tiếng Việt) */
+$specialPageAliases['vi'] = array(
+ 'ImportCSV' => array( 'Nhập_CSV' ),
+ 'ImportXML' => array( 'Nhập_XML' ),
+ 'ViewXML' => array( 'Xem_XML' ),
+);
+
+/** Simplified Chinese (中文(简体)‎) */
+$specialPageAliases['zh-hans'] = array(
+ 'ImportCSV' => array( '导入CSV' ),
+ 'ImportXML' => array( '导入XML' ),
+ 'ViewXML' => array( '查看XML' ),
+);
+
+/** Traditional Chinese (中文(繁體)‎) */
+$specialPageAliases['zh-hant'] = array(
+ 'ImportCSV' => array( '匯入CSV' ),
+ 'ImportXML' => array( '匯入XML' ),
+ 'ViewXML' => array( '檢視XML' ),
+); \ No newline at end of file
diff --git a/www/wiki/extensions/DataTransfer/DataTransfer.php b/www/wiki/extensions/DataTransfer/DataTransfer.php
new file mode 100644
index 00000000..71bafced
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/DataTransfer.php
@@ -0,0 +1,70 @@
+<?php
+/**
+ * Global functions and constants for the Data Transfer extension.
+ *
+ * @author Yaron Koren
+ * @ingroup DataTransfer
+ */
+
+if ( !defined( 'MEDIAWIKI' ) ) die();
+
+define( 'DATA_TRANSFER_VERSION', '1.0' );
+
+$wgExtensionCredits['specialpage'][] = array(
+ 'path' => __FILE__,
+ 'name' => 'Data Transfer',
+ 'version' => DATA_TRANSFER_VERSION,
+ 'author' => 'Yaron Koren',
+ 'url' => 'https://www.mediawiki.org/wiki/Extension:Data_Transfer',
+ 'descriptionmsg' => 'datatransfer-desc',
+ 'license-name' => 'GPL-2.0-or-later'
+);
+
+###
+# This is the path to your installation of DataTransfer as
+# seen on your local filesystem. Used against some PHP file path
+# issues.
+##
+$dtgIP = dirname( __FILE__ );
+##
+
+$wgResourceModules[ 'ext.datatransfer' ] = array(
+ 'localBasePath' => $dtgIP,
+ 'styles' => 'styles/DataTransfer.css',
+ 'position' => 'bottom',
+);
+
+// Register all special pages and other classes.
+$wgAutoloadClasses['DTPageStructure'] = $dtgIP . '/includes/DT_PageStructure.php';
+$wgAutoloadClasses['DTPageComponent'] = $dtgIP . '/includes/DT_PageComponent.php';
+$wgAutoloadClasses['DTPage'] = $dtgIP . '/includes/DT_Page.php';
+$wgAutoloadClasses['DTUtils'] = $dtgIP . '/includes/DT_Utils.php';
+$wgSpecialPages['ViewXML'] = 'DTViewXML';
+$wgAutoloadClasses['DTViewXML'] = $dtgIP . '/specials/DT_ViewXML.php';
+$wgSpecialPages['ImportXML'] = 'DTImportXML';
+$wgAutoloadClasses['DTImportXML'] = $dtgIP . '/specials/DT_ImportXML.php';
+$wgSpecialPages['ImportCSV'] = 'DTImportCSV';
+$wgAutoloadClasses['DTImportCSV'] = $dtgIP . '/specials/DT_ImportCSV.php';
+$wgSpecialPages['ImportSpreadsheet'] = 'DTImportSpreadsheet';
+$wgAutoloadClasses['DTImportSpreadsheet'] = $dtgIP . '/specials/DT_ImportSpreadsheet.php';
+$wgJobClasses['dtImport'] = 'DTImportJob';
+$wgAutoloadClasses['DTImportJob'] = $dtgIP . '/includes/DT_ImportJob.php';
+$wgAutoloadClasses['DTXMLParser'] = $dtgIP . '/includes/DT_XMLParser.php';
+$wgAutoloadClasses['DTWikiTemplate'] = $dtgIP . '/includes/DT_WikiTemplate.php';
+$wgAutoloadClasses['DTWikiPage'] = $dtgIP . '/includes/DT_WikiPage.php';
+$wgAutoloadClasses['DTHooks'] = $dtgIP . '/includes/DT_Hooks.php';
+
+$wgHooks['AdminLinks'][] = 'DTHooks::addToAdminLinks';
+
+###
+# Permission to import files
+###
+$wgGroupPermissions['sysop']['datatransferimport'] = true;
+$wgAvailableRights[] = 'datatransferimport';
+
+// Global settings
+$wgDataTransferViewXMLParseFields = false;
+$wgDataTransferViewXMLParseFreeText = true;
+
+$wgMessagesDirs['DataTransfer'] = __DIR__ . '/i18n';
+$wgExtensionMessagesFiles['DataTransferAlias'] = $dtgIP . '/DataTransfer.i18n.alias.php'; \ No newline at end of file
diff --git a/www/wiki/extensions/DataTransfer/Gruntfile.js b/www/wiki/extensions/DataTransfer/Gruntfile.js
new file mode 100644
index 00000000..a45071e1
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/Gruntfile.js
@@ -0,0 +1,21 @@
+/*jshint node:true */
+module.exports = function ( grunt ) {
+ grunt.loadNpmTasks( 'grunt-jsonlint' );
+ grunt.loadNpmTasks( 'grunt-banana-checker' );
+
+ grunt.initConfig( {
+ banana: {
+ all: 'i18n/'
+ },
+ jsonlint: {
+ all: [
+ '**/*.json',
+ '!node_modules/**',
+ '!vendor/**'
+ ]
+ }
+ } );
+
+ grunt.registerTask( 'test', [ 'jsonlint', 'banana' ] );
+ grunt.registerTask( 'default', 'test' );
+};
diff --git a/www/wiki/extensions/DataTransfer/INSTALL b/www/wiki/extensions/DataTransfer/INSTALL
new file mode 100644
index 00000000..800980a8
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/INSTALL
@@ -0,0 +1,34 @@
+[[Data Transfer 1.0]]
+
+Contents:
+* Disclaimer
+* Requirements
+* Installation
+* Contact
+
+== Disclaimer ==
+
+For a proper legal disclaimer, see the file "COPYING".
+
+== Requirements ==
+
+This extension requires MediaWiki 1.23 or greater.
+
+== Installation ==
+
+(1) Extract the archive to obtain the directory "DataTransfer"
+ that contains all relevant files. Copy this directory (or
+ extract/download it) to "[wikipath]/extensions/".
+(2) Insert either of the following lines into the file
+ "[wikipath]/LocalSettings.php":
+ include_once( "$IP/extensions/DataTransfer/DataTransfer.php" );
+ wfLoadExtension( 'DataTransfer' );
+(3) To enable importing spreadsheet files (Excel, OOCalc, Gnumeric, ...),
+ use Composer to install the phpoffice/phpexcel module. From the MediaWiki
+ installation directory call:
+ composer require "phpoffice/phpexcel:~1.8"
+
+== Contact ==
+
+If you have any issues or questions, please send them to
+yaron57@gmail.com.
diff --git a/www/wiki/extensions/DataTransfer/README b/www/wiki/extensions/DataTransfer/README
new file mode 100644
index 00000000..192b04e0
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/README
@@ -0,0 +1,31 @@
+== About ==
+
+Data Transfer is an extension to MediaWiki that both exports data,
+based on the current contents of pages in a wiki; and imports pages.
+In both cases, it uses template calls, and the fields within them,
+to define the data structure.
+
+The export is done in XML format, while the import can be done in
+either XML, CSV or spreadsheet (.xls, .ods etc.) formats.
+
+For the export, any text that is not within a template call gets
+placed into one or more "free text" fields.
+
+For more information on Data Transfer, see the extension
+homepage at
+http://www.mediawiki.org/wiki/Extension:Data_Transfer
+
+Notes on installing Data Transfer can be found in the file INSTALL.
+
+== Credits ==
+
+Data Transfer was mostly written by Yaron Koren. The spreadsheet import
+functionality was written by Stephan Gambke.
+
+The spreadsheet import functionality makes use of the PHPExcel
+library, if it is available.
+
+== Contact ==
+
+Comments, questions, suggestions and bug reports should be
+sent to Yaron at yaron57@gmail.com.
diff --git a/www/wiki/extensions/DataTransfer/composer.json b/www/wiki/extensions/DataTransfer/composer.json
new file mode 100644
index 00000000..973fb5b0
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/composer.json
@@ -0,0 +1,97 @@
+{
+ "name": "mediawiki/data-transfer",
+ "type": "mediawiki-extension",
+ "description": "A MediaWiki extension for importing and exporting data in CSV and XML formats.",
+ "keywords": [
+ "MediaWiki",
+ "CSV",
+ "XML",
+ "import",
+ "export"
+ ],
+ "homepage": "https://www.mediawiki.org/wiki/Extension:Data_Transfer",
+ "license": "GPL-2.0-or-later",
+ "authors": [
+ {
+ "name": "Alexandre Emsenhuber"
+ },
+ {
+ "name": "Brion Vibber"
+ },
+ {
+ "name": "Chad Horohoe"
+ },
+ {
+ "name": "Daniel Friesen"
+ },
+ {
+ "name": "Jeroen De Dauw"
+ },
+ {
+ "name": "kghbln"
+ },
+ {
+ "name": "Meno25"
+ },
+ {
+ "name": "Niklas Laxström"
+ },
+ {
+ "name": "Raimond Spekking"
+ },
+ {
+ "name": "Sam Reed"
+ },
+ {
+ "name": "Siebrand Mazeland"
+ },
+ {
+ "name": "Shinjiman"
+ },
+ {
+ "name": "shirayuki"
+ },
+ {
+ "name": "Stephan Gambke"
+ },
+ {
+ "name": "umherirrender"
+ },
+ {
+ "name": "Yaron Koren"
+ }
+ ],
+ "support": {
+ "issues": "https://phabricator.wikimedia.org/project/profile/791/",
+ "irc": "irc://irc.freenode.net/mediawiki",
+ "wiki": "https://www.mediawiki.org/wiki/Extension:Data_Transfer",
+ "source": "https://phabricator.wikimedia.org/diffusion/EDTR/extension-datatransfer.git"
+ },
+ "require": {
+ "php": ">=5.3.0",
+ "composer/installers": "1.*,>=1.0.1"
+ },
+ "config": {
+ "optimize-autoloader": true,
+ "prepend-autoloader": false
+ },
+ "autoload": {
+ "files": [
+ "DataTransfer.php"
+ ]
+ },
+ "require-dev": {
+ "jakub-onderka/php-parallel-lint": "1.0.0",
+ "jakub-onderka/php-console-highlighter": "0.3.2",
+ "mediawiki/minus-x": "0.3.1"
+ },
+ "scripts": {
+ "test": [
+ "parallel-lint . --exclude vendor --exclude node_modules",
+ "minus-x check ."
+ ],
+ "fix": [
+ "minus-x fix ."
+ ]
+ }
+}
diff --git a/www/wiki/extensions/DataTransfer/extension.json b/www/wiki/extensions/DataTransfer/extension.json
new file mode 100644
index 00000000..3fb2ce3c
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/extension.json
@@ -0,0 +1,72 @@
+{
+ "@Note": "When updating this file please also update DataTransfer.php with the same changes.",
+ "name": "Data Transfer",
+ "version": "1.0",
+ "author": [
+ "Yaron Koren",
+ "..."
+ ],
+ "url": "https://www.mediawiki.org/wiki/Extension:Data_Transfer",
+ "descriptionmsg": "datatransfer-desc",
+ "license-name": "GPL-2.0-or-later",
+ "type": "specialpage",
+ "GroupPermissions": {
+ "sysop": {
+ "datatransferimport": true
+ }
+ },
+ "AvailableRights": [
+ "datatransferimport"
+ ],
+ "SpecialPages": {
+ "ViewXML": "DTViewXML",
+ "ImportXML": "DTImportXML",
+ "ImportCSV": "DTImportCSV",
+ "ImportSpreadsheet": "DTImportSpreadsheet"
+ },
+ "JobClasses": {
+ "dtImport": "DTImportJob"
+ },
+ "MessagesDirs": {
+ "DataTransfer": [
+ "i18n"
+ ]
+ },
+ "ExtensionMessagesFiles": {
+ "DataTransferAlias": "DataTransfer.i18n.alias.php"
+ },
+ "AutoloadClasses": {
+ "DTPageStructure": "includes/DT_PageStructure.php",
+ "DTPageComponent": "includes/DT_PageComponent.php",
+ "DTPage": "includes/DT_Page.php",
+ "DTUtils": "includes/DT_Utils.php",
+ "DTImportJob": "includes/DT_ImportJob.php",
+ "DTXMLParser": "includes/DT_XMLParser.php",
+ "DTWikiTemplate": "includes/DT_WikiTemplate.php",
+ "DTWikiPage": "includes/DT_WikiPage.php",
+ "DTHooks": "includes/DT_Hooks.php",
+ "DTViewXML": "specials/DT_ViewXML.php",
+ "DTImportXML": "specials/DT_ImportXML.php",
+ "DTImportCSV": "specials/DT_ImportCSV.php",
+ "DTImportSpreadsheet": "specials/DT_ImportSpreadsheet.php"
+ },
+ "ResourceModules": {
+ "ext.datatransfer": {
+ "styles": "styles/DataTransfer.css"
+ }
+ },
+ "ResourceFileModulePaths": {
+ "localBasePath": "",
+ "remoteExtPath": "DataTransfer"
+ },
+ "Hooks": {
+ "AdminLinks": [
+ "DTHooks::addToAdminLinks"
+ ]
+ },
+ "config": {
+ "DataTransferViewXMLParseFields": false,
+ "DataTransferViewXMLParseFreeText": true
+ },
+ "manifest_version": 1
+} \ No newline at end of file
diff --git a/www/wiki/extensions/DataTransfer/i18n/af.json b/www/wiki/extensions/DataTransfer/i18n/af.json
new file mode 100644
index 00000000..e40300ed
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/af.json
@@ -0,0 +1,38 @@
+{
+ "@metadata": {
+ "authors": [
+ "Arnobarnard",
+ "Naudefj"
+ ]
+ },
+ "datatransfer-desc": "Maak die laai en ontlaai van gestruktureerde gegewens in sjabloonaanroepe moontlik",
+ "viewxml": "Sien XML",
+ "dt_viewxml_docu": "Kies een van die volgende kategorieë en naamruimtes om in XML-formaat te sien.",
+ "dt_viewxml_categories": "Kategorieë",
+ "dt_viewxml_namespaces": "Naamruimtes",
+ "dt_viewxml_simplifiedformat": "Vereenvoudigde formaat",
+ "dt_xml_namespace": "Naamruimte",
+ "dt_xml_pages": "Bladsye",
+ "dt_xml_page": "Bladsy",
+ "dt_xml_template": "Sjabloon",
+ "dt_xml_field": "Veld",
+ "dt_xml_name": "Naam",
+ "dt_xml_title": "Titel",
+ "dt_xml_id": "ID",
+ "dt_xml_freetext": "Vrye teks",
+ "importxml": "Laai XML",
+ "dt_import_selectfile": "Kies die $1 lêer om te laai:",
+ "dt_import_encodingtype": "Enkoderingstipe:",
+ "dt_import_forexisting": "Vir bladsye wat reeds bestaan:",
+ "dt_import_overwriteexisting": "Oorskryf bestaande inhoud",
+ "dt_import_mergeintoexisting": "Oorskryf slegs velde wat in die lêer voorkom",
+ "dt_import_skipexisting": "Slaan oor",
+ "dt_import_appendtoexisting": "Voeg by bestaande inhoud",
+ "dt_import_summarydesc": "Samevatting van die import:",
+ "dt_import_editsummary": "$1-laai",
+ "dt_import_importing": "Besig om te laai...",
+ "dt_import_success": "$1 {{PLURAL:$1|bladsy|bladsye}} sal geskep word vanaf die lêer $2.",
+ "importcsv": "Laai CSV",
+ "dt_importcsv_badheader": "Fout: Die opskrif van kolom $1, \"$2\", moet \"$3\" of \"$4\" wees, of in die vorm \"sjabloonnaam[veldnaam]\" genoteer word.",
+ "right-datatransferimport": "Laai data"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/ais.json b/www/wiki/extensions/DataTransfer/i18n/ais.json
new file mode 100644
index 00000000..9ea8c417
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/ais.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Benel"
+ ]
+ },
+ "viewxml": "ciwsace XML"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/aln.json b/www/wiki/extensions/DataTransfer/i18n/aln.json
new file mode 100644
index 00000000..522902b7
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/aln.json
@@ -0,0 +1,31 @@
+{
+ "@metadata": {
+ "authors": [
+ "Mdupont"
+ ]
+ },
+ "datatransfer-desc": "Lejon për import dhe eksport të dhënave të përmbajtura në modelin e quan",
+ "viewxml": "Shiko XML",
+ "dt_viewxml_docu": "Ju lutem zgjidhni midis kategorive të mëposhtme dhe hapësira për të parë në formatin XML.",
+ "dt_viewxml_categories": "Kategoritë",
+ "dt_viewxml_namespaces": "Hapësira",
+ "dt_viewxml_simplifiedformat": "Formati i thjeshtuar",
+ "dt_xml_namespace": "Hapësira",
+ "dt_xml_pages": "Faqet",
+ "dt_xml_page": "Faqe",
+ "dt_xml_template": "Shabllon",
+ "dt_xml_field": "Fushë",
+ "dt_xml_name": "Emër",
+ "dt_xml_title": "Titull",
+ "dt_xml_id": "ID",
+ "dt_xml_freetext": "Free Tekst",
+ "importxml": "Importi XML",
+ "dt_import_selectfile": "Ju lutem përzgjidhni kartelën $1 për të importuar:",
+ "dt_import_encodingtype": "Encoding lloj:",
+ "dt_import_editsummary": "$1 importit",
+ "dt_import_importing": "Importimi ...",
+ "dt_import_success": "$1 {{PLURAL:$1|faqe|faqe}} do të krijohet nga file $2.",
+ "importcsv": "Importi CSV",
+ "dt_importcsv_badheader": "Gabim: $1 column header, '$2', duhet të jenë ose '$3', '$4' ose të formës 'template_name [field_name]'",
+ "right-datatransferimport": "Të dhënat e importit"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/am.json b/www/wiki/extensions/DataTransfer/i18n/am.json
new file mode 100644
index 00000000..1a48bc6e
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/am.json
@@ -0,0 +1,12 @@
+{
+ "@metadata": {
+ "authors": [
+ "Codex Sinaiticus"
+ ]
+ },
+ "dt_viewxml_categories": "መደቦች",
+ "dt_viewxml_namespaces": "ክፍለ-ዊኪዎች",
+ "dt_xml_namespace": "ክፍለ-ዊኪ",
+ "dt_xml_name": "ስም",
+ "dt_xml_title": "አርዕስት"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/an.json b/www/wiki/extensions/DataTransfer/i18n/an.json
new file mode 100644
index 00000000..0a0bc749
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/an.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "Juanpabl",
+ "Remember the dot"
+ ]
+ },
+ "dt_viewxml_namespaces": "Espacios de nombres",
+ "dt_xml_namespace": "Espacio de nombres",
+ "dt_xml_page": "Pachina",
+ "dt_xml_template": "Plantilla",
+ "dt_xml_name": "Nombre"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/ar.json b/www/wiki/extensions/DataTransfer/i18n/ar.json
new file mode 100644
index 00000000..5817f1cd
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/ar.json
@@ -0,0 +1,43 @@
+{
+ "@metadata": {
+ "authors": [
+ "Meno25",
+ "Mutarjem horr",
+ "OsamaK",
+ "Mido",
+ "ديفيد"
+ ]
+ },
+ "datatransfer-desc": "يسمح باستيراد وتصدير بيانات محتواة في استدعاءات قالب",
+ "viewxml": "عرض XML",
+ "dt_viewxml_docu": "من فضلك اختر من بين التصنيفات والنطاقات التالية للعرض في صيغة XML.",
+ "dt_viewxml_categories": "تصنيفات",
+ "dt_viewxml_namespaces": "نطاقات",
+ "dt_viewxml_simplifiedformat": "صيغة مبسطة",
+ "dt_xml_namespace": "نطاق",
+ "dt_xml_pages": "صفحات",
+ "dt_xml_page": "الصفحة",
+ "dt_xml_template": "قالب",
+ "dt_xml_field": "حقل",
+ "dt_xml_name": "الاسم",
+ "dt_xml_title": "عنوان",
+ "dt_xml_id": "رقم",
+ "dt_xml_freetext": "نص حر",
+ "importxml": "استيراد XML",
+ "dt_import_selectfile": "من فضلك اختر ملف $1 للاستيراد:",
+ "dt_import_encodingtype": "نوع الترميز:",
+ "dt_import_forexisting": "لصفحات موجودة مسبقاّ :",
+ "dt_import_overwriteexisting": "أكتب على المحتوى الموجود",
+ "dt_import_mergeintoexisting": "استبدال الحقول الموجودة في الملف فقط",
+ "dt_import_skipexisting": "أقفز",
+ "dt_import_appendtoexisting": "إلحاق بالمحتوى الموجود",
+ "dt_import_summarydesc": "موجز الاستيراد :",
+ "dt_import_editsummary": "استيراد {{ucfirst:$1}}",
+ "dt_import_importing": "جارٍ الاستيراد...",
+ "dt_import_success": "سوف تُنشأ {{PLURAL:$1||صفحة واحدة|صفحتين|$1 صفحات|$1 صفحة}} من ملف $2.",
+ "importcsv": "استورد CSV",
+ "importspreadsheet": "استيراد جدول البيانات",
+ "dt_importcsv_badheader": "خطأ: عنوان العامود $1، '$2'، يجب أن يكون إما '$3'، '$4' أو من الصيغة 'template_name[field_name]'",
+ "right-datatransferimport": "استورد بيانات",
+ "dt_filetype_spreadsheet": "جدول بيانات"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/arc.json b/www/wiki/extensions/DataTransfer/i18n/arc.json
new file mode 100644
index 00000000..c7b7edb1
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/arc.json
@@ -0,0 +1,18 @@
+{
+ "@metadata": {
+ "authors": [
+ "Basharh"
+ ]
+ },
+ "dt_viewxml_categories": "ܣܕܪ̈ܐ",
+ "dt_viewxml_namespaces": "ܚܩܠܬ̈ܐ",
+ "dt_xml_namespace": "ܚܩܠܐ",
+ "dt_xml_pages": "ܦܐܬܬ̈ܐ",
+ "dt_xml_page": "ܦܐܬܐ",
+ "dt_xml_template": "ܩܠܒܐ",
+ "dt_xml_name": "ܫܡܐ",
+ "dt_xml_title": "ܟܘܢܝܐ",
+ "dt_xml_id": "ܗܝܝܘܬܐ",
+ "dt_import_summarydesc": "ܦܣܝܩܬ̈ܐ ܕܡܥܠܢܘܬܐ:",
+ "right-datatransferimport": "ܡܥܠܢܘܬܐ ܕܓܠܝܬ̈ܐ"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/arn.json b/www/wiki/extensions/DataTransfer/i18n/arn.json
new file mode 100644
index 00000000..9d61280a
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/arn.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Remember the dot"
+ ]
+ },
+ "dt_xml_page": "Pakina"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/arz.json b/www/wiki/extensions/DataTransfer/i18n/arz.json
new file mode 100644
index 00000000..352b08d9
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/arz.json
@@ -0,0 +1,27 @@
+{
+ "@metadata": {
+ "authors": [
+ "Dudi",
+ "Ghaly",
+ "Meno25"
+ ]
+ },
+ "datatransfer-desc": "بيسمح بـ import و export للداتا اللى جوّا القالب",
+ "viewxml": "شوف XML",
+ "dt_viewxml_docu": "لو سمحت اختار من التصانيف و اسامى المساحات الجايه علشان العرض فى XML format.",
+ "dt_viewxml_categories": "تصانيف",
+ "dt_viewxml_namespaces": "مساحات اسامى",
+ "dt_viewxml_simplifiedformat": "format متبسطه",
+ "dt_xml_namespace": "اسم مساحه",
+ "dt_xml_pages": "صفح",
+ "dt_xml_page": "صفحه",
+ "dt_xml_template": "قالب",
+ "dt_xml_field": "حقل",
+ "dt_xml_name": "اسم",
+ "dt_xml_title": "عنوان",
+ "dt_xml_id": "رقم",
+ "dt_xml_freetext": "نص حر",
+ "dt_import_selectfile": "لو سمحت اختار فايل $1 علشان تعمل import:",
+ "dt_import_editsummary": "استوراد $1",
+ "dt_import_success": "$1 {{PLURAL:$1|صفحه|صفحه}} ح يتعملو من الفايل $2."
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/ast.json b/www/wiki/extensions/DataTransfer/i18n/ast.json
new file mode 100644
index 00000000..cc8b815e
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/ast.json
@@ -0,0 +1,39 @@
+{
+ "@metadata": {
+ "authors": [
+ "Xuacu"
+ ]
+ },
+ "datatransfer-desc": "Permite importar y esportar los datos que contienen les llamaes de les plantíes",
+ "viewxml": "Ver XML",
+ "dt_viewxml_docu": "Por favor, esbilla entre les siguientes categoríes y espacios de nome pa ver en formatu XML.",
+ "dt_viewxml_categories": "Categoríes",
+ "dt_viewxml_namespaces": "Espacios de nome",
+ "dt_viewxml_simplifiedformat": "Formatu simplificáu",
+ "dt_xml_namespace": "Espaciu de nomes",
+ "dt_xml_pages": "Páxines",
+ "dt_xml_page": "Páxina",
+ "dt_xml_template": "Plantía",
+ "dt_xml_field": "Campu",
+ "dt_xml_name": "Nome",
+ "dt_xml_title": "Títulu",
+ "dt_xml_id": "ID",
+ "dt_xml_freetext": "Testu llibre",
+ "importxml": "Importar XML",
+ "dt_import_selectfile": "Por favor, seleiciona el ficheru $1 a importar:",
+ "dt_import_encodingtype": "Triba de codificación:",
+ "dt_import_forexisting": "Pa páxines que yá esisten:",
+ "dt_import_overwriteexisting": "Sobreescribir el conteníu esistente",
+ "dt_import_mergeintoexisting": "Sobrescribir sólo los campos conteníos nel ficheru",
+ "dt_import_skipexisting": "Saltar",
+ "dt_import_appendtoexisting": "Amestar al conteníu esistente",
+ "dt_import_summarydesc": "Resume de la importación:",
+ "dt_import_editsummary": "Importación {{ucfirst:$1}}",
+ "dt_import_importing": "Importando...",
+ "dt_import_success": "Se {{PLURAL:$1|creará|crearán}} $1 {{PLURAL:$1|páxina|páxines}} del ficheru $2.",
+ "importcsv": "Importar CSV",
+ "importspreadsheet": "Importar fueya de cálculu",
+ "dt_importcsv_badheader": "Error : la testera de columna $1, \"$2\", tien de ser o \"$3\", \"$4\" o de la forma 'nome_de_plantía[nome_de_campu]'",
+ "right-datatransferimport": "Importar datos",
+ "dt_filetype_spreadsheet": "Fueya de cálculu"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/atj.json b/www/wiki/extensions/DataTransfer/i18n/atj.json
new file mode 100644
index 00000000..24a88c10
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/atj.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Benoit Rochon"
+ ]
+ },
+ "dt_xml_pages": "Masinahikana"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/az.json b/www/wiki/extensions/DataTransfer/i18n/az.json
new file mode 100644
index 00000000..ee2abd46
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/az.json
@@ -0,0 +1,17 @@
+{
+ "@metadata": {
+ "authors": [
+ "Cekli829",
+ "Vago"
+ ]
+ },
+ "dt_viewxml_categories": "Kateqoriyalar",
+ "dt_viewxml_namespaces": "Adlar fəzaları",
+ "dt_xml_namespace": "Adlar fəzası",
+ "dt_xml_pages": "Səhifələr",
+ "dt_xml_page": "Səhifə",
+ "dt_xml_template": "Şablon",
+ "dt_xml_name": "Ad",
+ "dt_xml_title": "Başlıq",
+ "dt_xml_id": "ID"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/azb.json b/www/wiki/extensions/DataTransfer/i18n/azb.json
new file mode 100644
index 00000000..8e2714f2
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/azb.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Erdemaslancan"
+ ]
+ },
+ "dt_viewxml_namespaces": "آدلار فضاسی:"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/ba.json b/www/wiki/extensions/DataTransfer/i18n/ba.json
new file mode 100644
index 00000000..43c1ec93
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/ba.json
@@ -0,0 +1,42 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ләйсән",
+ "Аҡҡашҡа",
+ "Мухамадеева",
+ "Айбикә"
+ ]
+ },
+ "datatransfer-desc": "Ҡалыпты һорап алыу эстәлегендәге мәғлүмәтте импортлау һәм экспортлау",
+ "viewxml": "XMLды ҡарап сығыу",
+ "dt_viewxml_docu": "XML форматында исем категорияларын һәм арауығын ҡарап сығыуҙы һайлағыҙ.",
+ "dt_viewxml_categories": "Категориялар",
+ "dt_viewxml_namespaces": "Исем арауыҡтары",
+ "dt_viewxml_simplifiedformat": "Ябайлаштырылған формат",
+ "dt_xml_namespace": "Исемдәр арауығы",
+ "dt_xml_pages": "Биттәр",
+ "dt_xml_page": "Бит",
+ "dt_xml_template": "Ҡалып",
+ "dt_xml_field": "майҙан.",
+ "dt_xml_name": "Исем.",
+ "dt_xml_title": "Атама",
+ "dt_xml_id": "ID",
+ "dt_xml_freetext": "Ирекле текст",
+ "importxml": "XML импорты",
+ "dt_import_selectfile": " импорт өсөн $1 файлын һайлағыҙ",
+ "dt_import_encodingtype": "кодлау төрө",
+ "dt_import_forexisting": "Булған биттәр өсөн",
+ "dt_import_overwriteexisting": "Булған мәғлүмәттәрҙе яңынан күсереп яҙыу",
+ "dt_import_mergeintoexisting": "Файлда булған майҙандарҙы ғына яңынан яҙыу",
+ "dt_import_skipexisting": "Ҡалдырып торорға",
+ "dt_import_appendtoexisting": "Булған мәғлүмәттәргә өҫтәргә",
+ "dt_import_summarydesc": "Импортты һүрәтләү",
+ "dt_import_editsummary": " {{ucfirst:$1}}-тан импорт",
+ "dt_import_importing": "Индереү",
+ "dt_import_success": "$1 {{PLURAL:$1|бите булған|биттәр булған|бит булған}} $2 файлынан булдырылған.",
+ "importcsv": "CSV импорты",
+ "importspreadsheet": "Таблицаның импорты",
+ "dt_importcsv_badheader": "Хата. №$1 «$2» колонкаларының атмаһы «$3», йәки «$4», йәки «template_name[field_name]» формаһында булырға тейеш.",
+ "right-datatransferimport": "Мәғлүмәттәр импорты",
+ "dt_filetype_spreadsheet": "таблица"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/bcc.json b/www/wiki/extensions/DataTransfer/i18n/bcc.json
new file mode 100644
index 00000000..74b1d6a8
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/bcc.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Baloch Afghanistan"
+ ]
+ },
+ "dt_xml_template": "تراشوان"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/be-tarask.json b/www/wiki/extensions/DataTransfer/i18n/be-tarask.json
new file mode 100644
index 00000000..2cc7c880
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/be-tarask.json
@@ -0,0 +1,42 @@
+{
+ "@metadata": {
+ "authors": [
+ "EugeneZelenko",
+ "Jim-by",
+ "Wizardist",
+ "Red Winged Duck"
+ ]
+ },
+ "datatransfer-desc": "Дазваляе імпартаваць і экспартаваць зьвесткі, якія ўтрымліваюцца ў выкліках шаблёнах",
+ "viewxml": "Паказаць XML",
+ "dt_viewxml_docu": "Калі ласка, выберыце што праглядаць у фармаце XML сярод наступных катэгорыяў і прастораў назваў.",
+ "dt_viewxml_categories": "Катэгорыі",
+ "dt_viewxml_namespaces": "Прасторы назваў",
+ "dt_viewxml_simplifiedformat": "Спрошчаны фармат",
+ "dt_xml_namespace": "Прастора назваў",
+ "dt_xml_pages": "Старонкі",
+ "dt_xml_page": "Старонка",
+ "dt_xml_template": "Шаблён",
+ "dt_xml_field": "Поле",
+ "dt_xml_name": "Назва",
+ "dt_xml_title": "Назва",
+ "dt_xml_id": "Ідэнтыфікатар",
+ "dt_xml_freetext": "Вольны тэкст",
+ "importxml": "Імпарт XML",
+ "dt_import_selectfile": "Калі ласка, выберыце файл у фармаце $1 для імпарту:",
+ "dt_import_encodingtype": "Тып кадыроўкі:",
+ "dt_import_forexisting": "Для старонак якія ўжо існуюць:",
+ "dt_import_overwriteexisting": "Перазапісваць існуючы зьмест",
+ "dt_import_mergeintoexisting": "Перазапісваць толькі палі, што ўтрымліваюцца ў файле",
+ "dt_import_skipexisting": "Прапускаць",
+ "dt_import_appendtoexisting": "Далучаць да існуючага зьместу",
+ "dt_import_summarydesc": "Кароткае апісаньне імпарту:",
+ "dt_import_editsummary": "імпарт з {{ucfirst:$1}}",
+ "dt_import_importing": "Імпартаваньне...",
+ "dt_import_success": "$1 {{PLURAL:$1|старонка будзе|старонкі будуць|старонак будзе}} створана з файла ў фармаце $2.",
+ "importcsv": "Імпарт CSV",
+ "importspreadsheet": "Імпарт табліцы",
+ "dt_importcsv_badheader": "Памылка: загаловак слупка $1, '$2', павінен быць адным з '$3', '$4' альбо у форме 'назва_шаблёну[назва_поля]'",
+ "right-datatransferimport": "імпарт зьвестак",
+ "dt_filetype_spreadsheet": "табліца"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/be.json b/www/wiki/extensions/DataTransfer/i18n/be.json
new file mode 100644
index 00000000..9b01bd71
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/be.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "Тест"
+ ]
+ },
+ "dt_viewxml_categories": "Катэгорыі",
+ "dt_xml_template": "Шаблон"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/bg.json b/www/wiki/extensions/DataTransfer/i18n/bg.json
new file mode 100644
index 00000000..2ccb7f16
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/bg.json
@@ -0,0 +1,27 @@
+{
+ "@metadata": {
+ "authors": [
+ "DCLXVI",
+ "පසිඳු කාවින්ද",
+ "StanProg"
+ ]
+ },
+ "viewxml": "Преглед на XML",
+ "dt_viewxml_categories": "Категории",
+ "dt_viewxml_namespaces": "Именни пространства",
+ "dt_viewxml_simplifiedformat": "Опростен формат",
+ "dt_xml_namespace": "Именно пространство",
+ "dt_xml_pages": "Страници",
+ "dt_xml_page": "Страница",
+ "dt_xml_template": "Шаблон",
+ "dt_xml_field": "Поле",
+ "dt_xml_name": "Име",
+ "dt_xml_title": "Заглавие",
+ "dt_xml_id": "Номер",
+ "dt_xml_freetext": "Свободен текст",
+ "importxml": "Внасяне на XML",
+ "dt_import_skipexisting": "Пропускане",
+ "dt_import_importing": "Внасяне...",
+ "importcsv": "Внасяне на CSV",
+ "right-datatransferimport": "Внасяне на данни"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/bn.json b/www/wiki/extensions/DataTransfer/i18n/bn.json
new file mode 100644
index 00000000..ab3d2831
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/bn.json
@@ -0,0 +1,35 @@
+{
+ "@metadata": {
+ "authors": [
+ "Wikitanvir",
+ "Aftab1995",
+ "Aftabuzzaman",
+ "আফতাবুজ্জামান"
+ ]
+ },
+ "viewxml": "এক্সএমএল দেখাও",
+ "dt_viewxml_categories": "বিষয়শ্রেণীসমূহ",
+ "dt_viewxml_namespaces": "নামস্থানসমূহ",
+ "dt_viewxml_simplifiedformat": "সাধারণকৃত কাঠামো",
+ "dt_xml_namespace": "নামস্থান",
+ "dt_xml_pages": "পাতা",
+ "dt_xml_page": "পাতা",
+ "dt_xml_template": "টেম্পলেট",
+ "dt_xml_field": "ফিল্ড",
+ "dt_xml_name": "নাম",
+ "dt_xml_title": "শিরোনাম",
+ "dt_xml_id": "আইডি",
+ "dt_xml_freetext": "মুক্ত লেখা",
+ "importxml": "এক্সএমএল আমদানি",
+ "dt_import_selectfile": "অনুগ্রহ করে আমদানির জন্য $1 ফাইল নির্বাচন করুন:",
+ "dt_import_encodingtype": "এনকোডিংয়ের ধরন:",
+ "dt_import_forexisting": "যে পাতাগুলো ইতিমধ্যেই আছে তার জন্য:",
+ "dt_import_overwriteexisting": "বিদ্যমান বিষয়সমূহ প্রতিস্থাপন করো",
+ "dt_import_skipexisting": "উপেক্ষা করো",
+ "dt_import_summarydesc": "আমদানির সারাংশ",
+ "dt_import_editsummary": "{{ucfirst:$1}} আমদানি",
+ "dt_import_importing": "আমদানি হচ্ছে...",
+ "dt_import_success": "$2টি ফাইল থেকে $1টি {{PLURAL:$1|পাতা|পাতা}} তৈরি করা হবে।",
+ "importcsv": "সিএসভি আমদানি",
+ "right-datatransferimport": "উপাত্ত আমদানি"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/br.json b/www/wiki/extensions/DataTransfer/i18n/br.json
new file mode 100644
index 00000000..d9a36d19
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/br.json
@@ -0,0 +1,42 @@
+{
+ "@metadata": {
+ "authors": [
+ "Fohanno",
+ "Fulup",
+ "Gwendal",
+ "Y-M D"
+ ]
+ },
+ "datatransfer-desc": "Aotren a ra enporzhiañ hag ezporzhiañ roadennoù zo e galvoù patromoù",
+ "viewxml": "Gwelet XML",
+ "dt_viewxml_docu": "Dibabit e-touez ar rummadoù hag an esaouennoù anv da heul evit gwelet er furmad XML.",
+ "dt_viewxml_categories": "Rummadoù",
+ "dt_viewxml_namespaces": "Esaouennoù anv",
+ "dt_viewxml_simplifiedformat": "Furmad eeunaet",
+ "dt_xml_namespace": "Esaouenn anv",
+ "dt_xml_pages": "Pajennoù",
+ "dt_xml_page": "Pajenn",
+ "dt_xml_template": "Patrom",
+ "dt_xml_field": "Maezienn",
+ "dt_xml_name": "Anv",
+ "dt_xml_title": "Titl",
+ "dt_xml_id": "ID",
+ "dt_xml_freetext": "Testenn dieub",
+ "importxml": "Enporzhiañ XML",
+ "dt_import_selectfile": "Dibabit ar restr $1 da enporzhiañ :",
+ "dt_import_encodingtype": "Seurt enkodadur :",
+ "dt_import_forexisting": "Evit pajennoù zo anezho dija :",
+ "dt_import_overwriteexisting": "erlec'hiañ an endalc'had zo anezhañ dija",
+ "dt_import_mergeintoexisting": "Erlec'hiañ hepken ar maeziennoù a gaver er restr",
+ "dt_import_skipexisting": "Lezel a-gostez",
+ "dt_import_appendtoexisting": "Ouzhpennañ d'an endalc'had zo anezhañ dija",
+ "dt_import_summarydesc": "Diverradenn an enporzh :",
+ "dt_import_editsummary": "Enporzhiadur {{ucfirst:$1}}",
+ "dt_import_importing": "Oc'h enporzhiañ...",
+ "dt_import_success": "$1 {{PLURAL:$1|bajenn|pajenn}} a vo krouet diwar ar restr $2.",
+ "importcsv": "Enporzh CSV",
+ "importspreadsheet": "Enporzhiañ ur follenn jediñ",
+ "dt_importcsv_badheader": "Fazi : titl ar bann $1, \"$2\", a rank bezañ \"$3\", \"$4\" pe gant ar stumm \"anv_ar_patrom[anv_ar_vaezienn]\"",
+ "right-datatransferimport": "Enporzhiañ roadennoù",
+ "dt_filetype_spreadsheet": "follenn jediñ"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/bs.json b/www/wiki/extensions/DataTransfer/i18n/bs.json
new file mode 100644
index 00000000..348c0802
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/bs.json
@@ -0,0 +1,37 @@
+{
+ "@metadata": {
+ "authors": [
+ "CERminator",
+ "Srdjan m"
+ ]
+ },
+ "datatransfer-desc": "Omogućuje uvoz i izvoz podataka koji su sadržani u pozivima šablona",
+ "viewxml": "Pregledaj XML",
+ "dt_viewxml_docu": "Molimo Vas odaberite unutar slijedećih kategorija i imenskih prostora za pregled u XML formatu.",
+ "dt_viewxml_categories": "Kategorije",
+ "dt_viewxml_namespaces": "Imenski prostori",
+ "dt_viewxml_simplifiedformat": "Pojednostavljeni format",
+ "dt_xml_namespace": "Imenski prostor",
+ "dt_xml_pages": "Stranice",
+ "dt_xml_page": "Stranica",
+ "dt_xml_template": "Šablon",
+ "dt_xml_field": "Polje",
+ "dt_xml_name": "Naziv",
+ "dt_xml_title": "Naslov",
+ "dt_xml_id": "ID",
+ "dt_xml_freetext": "Slobodni tekst",
+ "importxml": "Uvezi XML",
+ "dt_import_selectfile": "Molimo odaberite $1 datoteku za uvoz:",
+ "dt_import_encodingtype": "Tip šifriranja:",
+ "dt_import_forexisting": "Za stranice koje već postoje:",
+ "dt_import_overwriteexisting": "Piši preko postojećeg sadržaja",
+ "dt_import_skipexisting": "Preskoči",
+ "dt_import_appendtoexisting": "Dodaj na postojeći sadržaj",
+ "dt_import_summarydesc": "Sažetak uvoza:",
+ "dt_import_editsummary": "{{ucfirst:$1}} uvoz",
+ "dt_import_importing": "Uvoz...",
+ "dt_import_success": "$1 {{PLURAL:$1|stranica|stranice|stranica}} će biti napravljeno iz $2 datoteke.",
+ "importcsv": "Uvoz CSV",
+ "dt_importcsv_badheader": "Greška: zaglavlje $1 kolone, '$2', mora biti ili '$3', '$4' ili od obrasca 'template_name[field_name]'",
+ "right-datatransferimport": "Uvoz podataka"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/ca.json b/www/wiki/extensions/DataTransfer/i18n/ca.json
new file mode 100644
index 00000000..ff554ca9
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/ca.json
@@ -0,0 +1,43 @@
+{
+ "@metadata": {
+ "authors": [
+ "Arnaugir",
+ "Jordi Roqué",
+ "SMP",
+ "Solde",
+ "Toniher"
+ ]
+ },
+ "datatransfer-desc": "Permet importar i exportar les dades que contenen les crides de les plantilles",
+ "viewxml": "Visualitza l'XML",
+ "dt_viewxml_docu": "Seleccioneu d'entre les següents categories i espais de noms per a veure'l en format XML.",
+ "dt_viewxml_categories": "Categories",
+ "dt_viewxml_namespaces": "Espais de noms",
+ "dt_viewxml_simplifiedformat": "Format simplificat",
+ "dt_xml_namespace": "Espai de noms",
+ "dt_xml_pages": "Pàgines",
+ "dt_xml_page": "Pàgina",
+ "dt_xml_template": "Plantilla",
+ "dt_xml_field": "Camp",
+ "dt_xml_name": "Nom",
+ "dt_xml_title": "Títol",
+ "dt_xml_id": "ID",
+ "dt_xml_freetext": "Text lliure",
+ "importxml": "Importa un XML",
+ "dt_import_selectfile": "Seleccioneu el fitxer $1 per importar:",
+ "dt_import_encodingtype": "Joc de caràcters:",
+ "dt_import_forexisting": "Per a pàgines que ja existeixen:",
+ "dt_import_overwriteexisting": "Sobreescriu el contingut que ja existeix",
+ "dt_import_mergeintoexisting": "Sobreescriu només els camps continguts en el fitxer",
+ "dt_import_skipexisting": "Omet",
+ "dt_import_appendtoexisting": "Afegeix-ho al contingut existent",
+ "dt_import_summarydesc": "Resum de la importació:",
+ "dt_import_editsummary": "Importació de $1",
+ "dt_import_importing": "S'està important...",
+ "dt_import_success": "$1 {{PLURAL:$1|pàgina|pàgines}} es crearan des del fitxer $2.",
+ "importcsv": "Importa un CSV",
+ "importspreadsheet": "Importa el full de càlcul",
+ "dt_importcsv_badheader": "Error: la capçalera de la columna $1, '$2', ha de ser o bé '$3', '$4' o bé de la forma 'template_name[field_name]'",
+ "right-datatransferimport": "Importar dades",
+ "dt_filetype_spreadsheet": "full de càlcul"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/ce.json b/www/wiki/extensions/DataTransfer/i18n/ce.json
new file mode 100644
index 00000000..821fba36
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/ce.json
@@ -0,0 +1,25 @@
+{
+ "@metadata": {
+ "authors": [
+ "Sasan700",
+ "Умар"
+ ]
+ },
+ "dt_viewxml_categories": "Категореш",
+ "dt_xml_pages": "АгӀонаш",
+ "dt_xml_page": "АгӀо",
+ "dt_xml_template": "Кеп",
+ "dt_xml_field": "Меттиг",
+ "dt_xml_name": "ЦӀе",
+ "dt_xml_title": "Корта",
+ "dt_xml_id": "ID",
+ "dt_xml_freetext": "Маьрша йоза",
+ "importxml": "Импорт XML",
+ "dt_import_summarydesc": "Импортах лаьцна:",
+ "dt_import_editsummary": "{{ucfirst:$1}} чура импорт",
+ "dt_import_importing": "Импорт яр...",
+ "dt_import_success": "$1 {{PLURAL:$1|агӀо кхоьллина|агӀонаш кхоьллина}} $2 файлах.",
+ "importcsv": "Импорт CSV",
+ "importspreadsheet": "Таблицам импорт",
+ "dt_filetype_spreadsheet": "таблица"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/ckb.json b/www/wiki/extensions/DataTransfer/i18n/ckb.json
new file mode 100644
index 00000000..d0d99a2a
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/ckb.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Calak",
+ "Asoxor"
+ ]
+ },
+ "dt_xml_pages": "پەڕەکان",
+ "dt_xml_page": "پەڕە",
+ "dt_xml_template": "داڕێژە",
+ "dt_xml_name": "ناو",
+ "dt_xml_title": "سەردێڕ",
+ "dt_xml_id": "پێناسە"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/cs.json b/www/wiki/extensions/DataTransfer/i18n/cs.json
new file mode 100644
index 00000000..b3ff2860
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/cs.json
@@ -0,0 +1,34 @@
+{
+ "@metadata": {
+ "authors": [
+ "Jkjk",
+ "Matěj Grabovský"
+ ]
+ },
+ "datatransfer-desc": "Umožňuje import a export strukturovaných údajů v buňkách šablon.",
+ "viewxml": "Zobrazit XML",
+ "dt_viewxml_categories": "Kategorie",
+ "dt_viewxml_namespaces": "Jmenné prostory",
+ "dt_viewxml_simplifiedformat": "Zjednodušený formát",
+ "dt_xml_namespace": "Jmenný prostor",
+ "dt_xml_pages": "Stránky",
+ "dt_xml_page": "Stránka",
+ "dt_xml_template": "Šablona",
+ "dt_xml_field": "Pole",
+ "dt_xml_name": "Název",
+ "dt_xml_title": "Název",
+ "dt_xml_id": "ID",
+ "dt_xml_freetext": "Libovolný text",
+ "importxml": "Importovat XML",
+ "dt_import_selectfile": "Prosím vyberte $1 soubor k importu:",
+ "dt_import_encodingtype": "Typ kódování:",
+ "dt_import_overwriteexisting": "Přepsat stávající obsah",
+ "dt_import_skipexisting": "Přeskočit",
+ "dt_import_appendtoexisting": "Připojit ke stávajícímu obsahu",
+ "dt_import_summarydesc": "Shrnutí importu:",
+ "dt_import_editsummary": "import $1",
+ "dt_import_importing": "Probíhá import...",
+ "dt_import_success": " $1 {{PLURAL:$1|stránky|stránky|stránek}} bude vytvořeno z $2 souboru.",
+ "importcsv": "Import CSV",
+ "right-datatransferimport": "Importovat data"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/cu.json b/www/wiki/extensions/DataTransfer/i18n/cu.json
new file mode 100644
index 00000000..cd00195f
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/cu.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "ОйЛ"
+ ]
+ },
+ "dt_xml_name": "имѧ"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/cv.json b/www/wiki/extensions/DataTransfer/i18n/cv.json
new file mode 100644
index 00000000..459c70e9
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/cv.json
@@ -0,0 +1,10 @@
+{
+ "@metadata": {
+ "authors": [
+ "Chuvash2014"
+ ]
+ },
+ "dt_viewxml_categories": "Категорисем",
+ "dt_xml_name": "Ят",
+ "dt_import_skipexisting": "Ирттер"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/da.json b/www/wiki/extensions/DataTransfer/i18n/da.json
new file mode 100644
index 00000000..bfb085d1
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/da.json
@@ -0,0 +1,26 @@
+{
+ "@metadata": {
+ "authors": [
+ "Jon Harald Søby",
+ "Tjernobyl",
+ "Saederup92"
+ ]
+ },
+ "viewxml": "Vis XML",
+ "dt_viewxml_categories": "Kategorier",
+ "dt_viewxml_namespaces": "Navnerum",
+ "dt_viewxml_simplifiedformat": "Forenklet format",
+ "dt_xml_namespace": "Navnerum",
+ "dt_xml_pages": "Sider",
+ "dt_xml_page": "Side",
+ "dt_xml_template": "Skabelon",
+ "dt_xml_field": "Felt",
+ "dt_xml_name": "Navn",
+ "dt_xml_title": "Titel",
+ "dt_xml_id": "ID",
+ "dt_xml_freetext": "Fritekst",
+ "importxml": "Importer XML",
+ "dt_import_overwriteexisting": "Overskriv eksisterende indhold",
+ "dt_import_skipexisting": "Spring over",
+ "dt_import_importing": "Importerer..."
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/de.json b/www/wiki/extensions/DataTransfer/i18n/de.json
new file mode 100644
index 00000000..cd2a6f2c
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/de.json
@@ -0,0 +1,44 @@
+{
+ "@metadata": {
+ "authors": [
+ "Als-Holder",
+ "Kghbln",
+ "Krabina",
+ "Metalhead64",
+ "Revolus",
+ "Umherirrender"
+ ]
+ },
+ "datatransfer-desc": "Ermöglicht den Im- und Export von Daten",
+ "viewxml": "XML ansehen",
+ "dt_viewxml_docu": "Bitte auswählen, welche Kategorien und Namensräume im XML-Format angezeigt werden sollen:",
+ "dt_viewxml_categories": "Kategorien",
+ "dt_viewxml_namespaces": "Namensräume",
+ "dt_viewxml_simplifiedformat": "Vereinfachtes Format",
+ "dt_xml_namespace": "Namensraum",
+ "dt_xml_pages": "Seiten",
+ "dt_xml_page": "Seite",
+ "dt_xml_template": "Vorlage",
+ "dt_xml_field": "Feld",
+ "dt_xml_name": "Name",
+ "dt_xml_title": "Titel",
+ "dt_xml_id": "Kennung",
+ "dt_xml_freetext": "Freitext",
+ "importxml": "XML-Datei importieren",
+ "dt_import_selectfile": "Bitte die zu importierende $1-Datei auswählen:",
+ "dt_import_encodingtype": "Zeichenkodierung:",
+ "dt_import_forexisting": "Im Fall von Seiten, die bereits vorhanden sind:",
+ "dt_import_overwriteexisting": "Vorhandenen Inhalt überschreiben",
+ "dt_import_mergeintoexisting": "Nur in der Datei enthaltene Felder überschreiben",
+ "dt_import_skipexisting": "Seite nicht importieren",
+ "dt_import_appendtoexisting": "Vorhandenen Inhalt ergänzen",
+ "dt_import_summarydesc": "Zusammenfassung zum Import:",
+ "dt_import_editsummary": "{{ucfirst:$1}}-Import",
+ "dt_import_importing": "Importiere …",
+ "dt_import_success": "{{PLURAL:$1|Eine Seite|$1 Seiten}} werden aus der $2-Datei importiert.",
+ "importcsv": "CSV-Datei importieren",
+ "importspreadsheet": "Tabellenkalkulationsdatei importieren",
+ "dt_importcsv_badheader": "'''Fehler:''' Der Kopf der Spalte $1, „$2“, muss entweder „$3“, „$4“ oder im Format „Vorlagenname[Feldname]“ sein",
+ "right-datatransferimport": "Daten importieren",
+ "dt_filetype_spreadsheet": "Tabellenkalkulations"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/diq.json b/www/wiki/extensions/DataTransfer/i18n/diq.json
new file mode 100644
index 00000000..83e935c3
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/diq.json
@@ -0,0 +1,33 @@
+{
+ "@metadata": {
+ "authors": [
+ "Erdemaslancan",
+ "Mirzali",
+ "Marmase",
+ "Kumkumuk",
+ "Gırd"
+ ]
+ },
+ "viewxml": "XML'i bıvin",
+ "dt_viewxml_categories": "Kategoriyi",
+ "dt_viewxml_namespaces": "Heruna naman",
+ "dt_viewxml_simplifiedformat": "Basit kerde format",
+ "dt_xml_namespace": "Heruna namey",
+ "dt_xml_pages": "Peli",
+ "dt_xml_page": "Pele",
+ "dt_xml_template": "Şablon",
+ "dt_xml_field": "Ca",
+ "dt_xml_name": "Name",
+ "dt_xml_title": "Sername",
+ "dt_xml_id": "ID",
+ "dt_xml_freetext": "Xoser metin",
+ "importxml": "XML'i azere ke",
+ "dt_import_selectfile": "Azere kerdışi rê dosyay $1 weçinê",
+ "dt_import_encodingtype": "Babeta kod kerdışi",
+ "dt_import_skipexisting": "Çerme",
+ "dt_import_summarydesc": "Xulasaya azere kerdışi :",
+ "dt_import_editsummary": "{{ucfirst:$1}} azere de",
+ "dt_import_importing": "Dano azere...",
+ "importcsv": "TSV'yi azere de",
+ "right-datatransferimport": "Malumata zerre ke"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/dsb.json b/www/wiki/extensions/DataTransfer/i18n/dsb.json
new file mode 100644
index 00000000..889225e0
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/dsb.json
@@ -0,0 +1,37 @@
+{
+ "@metadata": {
+ "authors": [
+ "Michawiki"
+ ]
+ },
+ "datatransfer-desc": "Zmóžnja importěrowanje a eksportěrowanje datow w zawołanjach pśedłogow",
+ "viewxml": "XML se woglědaś",
+ "dt_viewxml_docu": "Pšosym wubjeŕ, kótare slědujucych kategorijow a mjenjowych rumow maju se pokazaś w formaśe XML.",
+ "dt_viewxml_categories": "Kategorije",
+ "dt_viewxml_namespaces": "Mjenjowe rumy",
+ "dt_viewxml_simplifiedformat": "Zjadnorjony format",
+ "dt_xml_namespace": "Mjenjowy rum",
+ "dt_xml_pages": "Boki",
+ "dt_xml_page": "Bok",
+ "dt_xml_template": "Pśedłoga",
+ "dt_xml_field": "Pólo",
+ "dt_xml_name": "Mě",
+ "dt_xml_title": "Titel",
+ "dt_xml_id": "ID",
+ "dt_xml_freetext": "Lichy tekst",
+ "importxml": "XML importěrowaś",
+ "dt_import_selectfile": "Pšosym wubjeŕ dataju $1 za importěrowanje:",
+ "dt_import_encodingtype": "Typ znamuškowego koda:",
+ "dt_import_forexisting": "Za boki, kótarež južo ekistěruju:",
+ "dt_import_overwriteexisting": "Eksistěrujuce wopśimjeśe pśepisaś",
+ "dt_import_mergeintoexisting": "Jano póla pśepisaś, kótarež su w dataji wopśimjone.",
+ "dt_import_skipexisting": "Pśeskócyś",
+ "dt_import_appendtoexisting": "K eksistěrujucemu wopśimjeśoju pśipowjesyś",
+ "dt_import_summarydesc": "Zespominanje importa:",
+ "dt_import_editsummary": "Importěrowanje $1",
+ "dt_import_importing": "Importěrujo se...",
+ "dt_import_success": "$1 {{PLURAL:$1|bok twóri|boka twóritej|boki twórje|bokow twóri}} se z dataje $2.",
+ "importcsv": "Importěrowanje CSV",
+ "dt_importcsv_badheader": "Zmólka: głowa słupa $1, '$2', musy pak '$3', '$4' byś pak formu 'mě_pśedłogi[mě_póla]' měś",
+ "right-datatransferimport": "Daty importěrowaś"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/ee.json b/www/wiki/extensions/DataTransfer/i18n/ee.json
new file mode 100644
index 00000000..a4eef5f3
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/ee.json
@@ -0,0 +1,4 @@
+{
+ "@metadata": [],
+ "dt_xml_page": "Axa"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/el.json b/www/wiki/extensions/DataTransfer/i18n/el.json
new file mode 100644
index 00000000..647a9a2f
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/el.json
@@ -0,0 +1,34 @@
+{
+ "@metadata": {
+ "authors": [
+ "Consta",
+ "Crazymadlover",
+ "Glavkos",
+ "Omnipaedista",
+ "ZaDiak",
+ "Nikosgranturismogt"
+ ]
+ },
+ "viewxml": "Προβολή XML",
+ "dt_viewxml_categories": "Κατηγορίες",
+ "dt_viewxml_namespaces": "Περιοχές ονομάτων",
+ "dt_xml_namespace": "Ονοματοχώρος",
+ "dt_xml_pages": "Σελίδες",
+ "dt_xml_page": "Σελίδα",
+ "dt_xml_template": "Πρότυπο",
+ "dt_xml_field": "Πεδίο",
+ "dt_xml_name": "Όνομα",
+ "dt_xml_title": "Τίτλος",
+ "dt_xml_id": "ID",
+ "dt_xml_freetext": "Ελεύθερο Κείμενο",
+ "importxml": "Εισαγωγή σε XML",
+ "dt_import_selectfile": "Παρακαλούμε επιλέξτε το αρχείο $1 για εισαγωγή:",
+ "dt_import_encodingtype": "Τύπος κωδικοποίησης",
+ "dt_import_forexisting": "Για σελίδες που υπάρχουν ήδη:",
+ "dt_import_skipexisting": "Παράβλεψη",
+ "dt_import_summarydesc": "Σύνοψη εισαγωγής:",
+ "dt_import_editsummary": "{{ucfirst:$1}} εισαγωγή",
+ "dt_import_importing": "Εισάγεται...",
+ "importcsv": "Εισαγωγή CSV",
+ "right-datatransferimport": "Εισαγωγή δεδομένων"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/en.json b/www/wiki/extensions/DataTransfer/i18n/en.json
new file mode 100644
index 00000000..46995176
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/en.json
@@ -0,0 +1,41 @@
+{
+ "@metadata": {
+ "authors": [
+ "Yaron Koren"
+ ]
+ },
+ "datatransfer-desc": "Allows for importing and exporting data contained in template calls",
+ "viewxml": "View XML",
+ "dt_viewxml_docu": "Please select among the following categories and namespaces to view in XML format.",
+ "dt_viewxml_categories": "Categories",
+ "dt_viewxml_namespaces": "Namespaces",
+ "dt_viewxml_simplifiedformat": "Simplified format",
+ "dt_xml_namespace": "Namespace",
+ "dt_xml_pages": "Pages",
+ "dt_xml_page": "Page",
+ "dt_xml_template": "Template",
+ "dt_xml_field": "Field",
+ "dt_xml_name": "Name",
+ "dt_xml_title": "Title",
+ "dt_xml_id": "ID",
+ "dt_xml_freetext": "Free Text",
+ "importxml": "Import XML",
+ "dt_import_selectfile": "Please select the $1 file to import:",
+ "dt_import_encodingtype": "Encoding type:",
+ "dt_import_forexisting": "For pages that already exist:",
+ "dt_import_overwriteexisting": "Overwrite existing content",
+ "dt_import_mergeintoexisting": "Overwrite only fields contained in the file",
+ "dt_import_skipexisting": "Skip",
+ "dt_import_appendtoexisting": "Append to existing content",
+ "dt_import_summarydesc": "Summary of import:",
+ "dt_import_editsummary": "{{ucfirst:$1}} import",
+ "dt_import_importing": "Importing...",
+ "dt_import_success": "$1 {{PLURAL:$1|page|pages}} will be created from the $2 file.",
+ "importcsv": "Import CSV",
+ "importspreadsheet": "Import spreadsheet",
+ "dt_importcsv_badheader": "Error: the column $1 header, '$2', must be either '$3', '$4' or of the form 'template_name[field_name]'",
+ "right-datatransferimport": "Import data",
+ "dt_filetype_xml": "XML",
+ "dt_filetype_csv": "CSV",
+ "dt_filetype_spreadsheet": "spreadsheet"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/eo.json b/www/wiki/extensions/DataTransfer/i18n/eo.json
new file mode 100644
index 00000000..12b3a5a4
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/eo.json
@@ -0,0 +1,33 @@
+{
+ "@metadata": {
+ "authors": [
+ "Michawiki",
+ "Yekrats",
+ "Robin van der Vliet",
+ "Psychoslave",
+ "Lucas"
+ ]
+ },
+ "datatransfer-desc": "Permesas enportadon kaj elportadon de datumoj enhave en ŝablonaj vokoj",
+ "viewxml": "Vidi XML-on",
+ "dt_viewxml_docu": "Bonvolu elekti inter la subaj kategorioj kaj nomspacoj por rigardi en XML-formato.",
+ "dt_viewxml_categories": "Kategorioj",
+ "dt_viewxml_namespaces": "Nomspacoj",
+ "dt_viewxml_simplifiedformat": "Simpligita formato",
+ "dt_xml_namespace": "Nomspaco",
+ "dt_xml_pages": "Paĝoj",
+ "dt_xml_page": "Paĝo",
+ "dt_xml_template": "Ŝablono",
+ "dt_xml_field": "Kampo",
+ "dt_xml_name": "Nomo",
+ "dt_xml_title": "Titolo",
+ "dt_xml_id": "identigo",
+ "dt_xml_freetext": "Libera Teksto",
+ "importxml": "Importi XML",
+ "dt_import_editsummary": "{{ucfirst:$1}}-enporto",
+ "dt_import_importing": "Enportante...",
+ "importcsv": "Importi CSV",
+ "importspreadsheet": "Importi kalkultabelon",
+ "right-datatransferimport": "Importi datenojn",
+ "dt_filetype_spreadsheet": "kalkultabelo"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/es.json b/www/wiki/extensions/DataTransfer/i18n/es.json
new file mode 100644
index 00000000..05e5559c
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/es.json
@@ -0,0 +1,48 @@
+{
+ "@metadata": {
+ "authors": [
+ "Armando-Martin",
+ "Crazymadlover",
+ "Fitoschido",
+ "Imre",
+ "Locos epraix",
+ "Peter17",
+ "Sanbec",
+ "Translationista",
+ "VegaDark",
+ "Macofe"
+ ]
+ },
+ "datatransfer-desc": "Permite importar y exportar datos contenidos en llamadas de plantilla",
+ "viewxml": "Ver XML",
+ "dt_viewxml_docu": "Selecciona entre las siguientes categorías y espacios de nombres para ver en formato XML.",
+ "dt_viewxml_categories": "Categorías",
+ "dt_viewxml_namespaces": "Espacios de nombres",
+ "dt_viewxml_simplifiedformat": "Formato simplificado",
+ "dt_xml_namespace": "Espacio de nombres",
+ "dt_xml_pages": "Páginas",
+ "dt_xml_page": "Página",
+ "dt_xml_template": "Plantilla",
+ "dt_xml_field": "Campo",
+ "dt_xml_name": "Nombre",
+ "dt_xml_title": "Título",
+ "dt_xml_id": "Id.",
+ "dt_xml_freetext": "Texto libre",
+ "importxml": "Importar XML",
+ "dt_import_selectfile": "Selecciona el archivo $1 que importar:",
+ "dt_import_encodingtype": "Tipo de codificación:",
+ "dt_import_forexisting": "Para las páginas que ya existen:",
+ "dt_import_overwriteexisting": "Sobrescribir el contenido existente",
+ "dt_import_mergeintoexisting": "Sobrescribir solo los campos contenidos en el archivo",
+ "dt_import_skipexisting": "Omitir",
+ "dt_import_appendtoexisting": "Anexar al contenido existente",
+ "dt_import_summarydesc": "Resumen de importación:",
+ "dt_import_editsummary": "importación {{ucfirst:$1}}",
+ "dt_import_importing": "Importando...",
+ "dt_import_success": "$1 {{PLURAL:$1|página se creará|páginas se crearán}} del archivo $2.",
+ "importcsv": "Importar CSV",
+ "importspreadsheet": "Importar hoja de cálculo",
+ "dt_importcsv_badheader": "Error: el título de columna $1, \"$2\", tiene que ser \"$3\", \"$4\" o de la forma 'nombre_de_plantilla[nombre_del_campo]'",
+ "right-datatransferimport": "Importar datos",
+ "dt_filetype_spreadsheet": "hoja de cálculo"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/et.json b/www/wiki/extensions/DataTransfer/i18n/et.json
new file mode 100644
index 00000000..a0c2b96b
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/et.json
@@ -0,0 +1,22 @@
+{
+ "@metadata": {
+ "authors": [
+ "Avjoska",
+ "Pikne"
+ ]
+ },
+ "dt_viewxml_categories": "Kategooriad",
+ "dt_viewxml_namespaces": "Nimeruumid",
+ "dt_viewxml_simplifiedformat": "Lihtsustatud vorming",
+ "dt_xml_namespace": "Nimeruum",
+ "dt_xml_pages": "Leheküljed",
+ "dt_xml_page": "Lehekülg",
+ "dt_xml_template": "Mall",
+ "dt_xml_field": "Väli",
+ "dt_xml_name": "Nimi",
+ "dt_xml_title": "Pealkiri",
+ "dt_xml_id": "ID",
+ "dt_import_skipexisting": "Jäta vahele",
+ "dt_import_importing": "Importimine...",
+ "right-datatransferimport": "Impordiandmed"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/eu.json b/www/wiki/extensions/DataTransfer/i18n/eu.json
new file mode 100644
index 00000000..26cc67a1
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/eu.json
@@ -0,0 +1,40 @@
+{
+ "@metadata": {
+ "authors": [
+ "Kobazulo",
+ "Theklan",
+ "පසිඳු කාවින්ද",
+ "Xabier Armendaritz",
+ "An13sa",
+ "Subi"
+ ]
+ },
+ "viewxml": "XML ikusi",
+ "dt_viewxml_categories": "Kategoriak",
+ "dt_viewxml_namespaces": "Izen-tarteak",
+ "dt_viewxml_simplifiedformat": "Formatu sinplifikatua",
+ "dt_xml_namespace": "Izen-tartea",
+ "dt_xml_pages": "Orrialdeak",
+ "dt_xml_page": "Orria",
+ "dt_xml_template": "Txantiloia",
+ "dt_xml_field": "Eremua",
+ "dt_xml_name": "Izena",
+ "dt_xml_title": "Izenburua",
+ "dt_xml_id": "ID",
+ "dt_xml_freetext": "Testu askea",
+ "importxml": "XML inportatu",
+ "dt_import_selectfile": "Mesedez, aukera ezazu inportatzeko $1 fitxategia:",
+ "dt_import_encodingtype": "Kodetze mota:",
+ "dt_import_forexisting": "Jada existitzen diren orrialdeak:",
+ "dt_import_overwriteexisting": "Jada existitzen den eduki bat gainidatzi",
+ "dt_import_mergeintoexisting": "Fitxategian dauden eremuak bakarrik gain-idatzi",
+ "dt_import_skipexisting": "Utzi",
+ "dt_import_appendtoexisting": "Jada baden edukiari gehitu",
+ "dt_import_summarydesc": "Inportatze laburpena:",
+ "dt_import_editsummary": "{{ucfirst:$1}} inportatu",
+ "dt_import_importing": "Inportatzen...",
+ "dt_import_success": "{{PLURAL:$1|Orri bat sortuko da|$1 orri sortuko dira}} $2 fitxategitik.",
+ "importcsv": "CSV inportatu",
+ "right-datatransferimport": "Datuak inportatu",
+ "dt_filetype_spreadsheet": "kalkulu-orria"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/fa.json b/www/wiki/extensions/DataTransfer/i18n/fa.json
new file mode 100644
index 00000000..56da6c2d
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/fa.json
@@ -0,0 +1,39 @@
+{
+ "@metadata": {
+ "authors": [
+ "Armin1392",
+ "Mjbmr",
+ "Alirezaaa"
+ ]
+ },
+ "datatransfer-desc": "اجازه برای واردات و صادرات اطلاعات حاوی الگوهای تماس",
+ "viewxml": "مشاهده XML",
+ "dt_viewxml_docu": "لطفاً برای مشاهده فرمت ایکس‌ام‌ال، از بین دسته‌بندی‌ها و فضاهای نامی زیر انتخاب کنید.",
+ "dt_viewxml_categories": "رده‌ها",
+ "dt_viewxml_namespaces": "فضاهای نام",
+ "dt_viewxml_simplifiedformat": "فرمت ساده شده",
+ "dt_xml_namespace": "فضای نام",
+ "dt_xml_pages": "صفحات",
+ "dt_xml_page": "صفحه",
+ "dt_xml_template": "الگو",
+ "dt_xml_field": "زمینه",
+ "dt_xml_name": "نام",
+ "dt_xml_title": "عنوان",
+ "dt_xml_id": "شناسه",
+ "dt_xml_freetext": "متن آزاد",
+ "importxml": "درون‌ریزی ایکس‌ام‌ال",
+ "dt_import_selectfile": "لطفاً برای وارد کردن،پوشهٔ $1 را انتخاب کنید:",
+ "dt_import_encodingtype": "نوع کدگذاری:",
+ "dt_import_forexisting": "برای صفحاتی که در حال حاضر وجود دارند:",
+ "dt_import_overwriteexisting": "رونویسی محتوای موجود",
+ "dt_import_mergeintoexisting": "رونویسی فقط زمینه‌های شامل در پوشه",
+ "dt_import_skipexisting": "پرش",
+ "dt_import_appendtoexisting": "ضمیمه کردن به محتوای موجود",
+ "dt_import_summarydesc": "خلاصهٔ درون‌ریزی:",
+ "dt_import_editsummary": "درون‌ریزی $1",
+ "dt_import_importing": "در حال درون‌ریزی...",
+ "dt_import_success": "$1 {{PLURAL:$1|page|pages}} از پوشهٔ $2 ایجاد خواهدشد.",
+ "importcsv": "درون‌ریزی سی‌اس‌وی",
+ "dt_importcsv_badheader": "خطا: سر فصل ستون $1،$2، باید یا $3،$4 یا فرم 'template_name[field_name]' باشد",
+ "right-datatransferimport": "درون‌ریزی داده‌ها"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/fi.json b/www/wiki/extensions/DataTransfer/i18n/fi.json
new file mode 100644
index 00000000..bb164d2f
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/fi.json
@@ -0,0 +1,42 @@
+{
+ "@metadata": {
+ "authors": [
+ "Centerlink",
+ "Crt",
+ "Nedergard",
+ "Nike",
+ "Str4nd",
+ "Vililikku",
+ "McSalama"
+ ]
+ },
+ "datatransfer-desc": "Mahdollistaa tuoda ja viedä dataa, joka on mallinekutsuissa.",
+ "viewxml": "Näytä XML",
+ "dt_viewxml_docu": "Valitse yksi seuraavista luokista ja nimiavaruuksista tarkasteltavaksi XML-muodossa.",
+ "dt_viewxml_categories": "Luokat",
+ "dt_viewxml_namespaces": "Nimiavaruudet",
+ "dt_viewxml_simplifiedformat": "Yksinkertaistettu muoto",
+ "dt_xml_namespace": "Nimiavaruus",
+ "dt_xml_pages": "Sivut",
+ "dt_xml_page": "Sivu",
+ "dt_xml_template": "Malline",
+ "dt_xml_field": "Kenttä",
+ "dt_xml_name": "Nimi",
+ "dt_xml_title": "Otsikko",
+ "dt_xml_id": "Tunniste",
+ "dt_xml_freetext": "Vapaa teksti",
+ "importxml": "XML-tuonti",
+ "dt_import_selectfile": "Valitse $1-tiedosto tuotavaksi:",
+ "dt_import_encodingtype": "Merkistötyyppi:",
+ "dt_import_forexisting": "Nykyisille sivuille:",
+ "dt_import_overwriteexisting": "Korvaa nykyinen sisältö",
+ "dt_import_skipexisting": "Ohita",
+ "dt_import_appendtoexisting": "Liitä nykyiseen sisältöön",
+ "dt_import_summarydesc": "Tuonnin yhteenveto",
+ "dt_import_editsummary": "{{ucfirst:$1}} tuo",
+ "dt_import_importing": "Tuodaan...",
+ "dt_import_success": "$1 {{PLURAL:$1|sivu|sivua}} luodaan $2-tiedostosta.",
+ "importcsv": "CSV-tuonti",
+ "dt_importcsv_badheader": "Virhe: sarake $1 otsake, '$2', on oltava joko '$3', '$4' tai muotoa 'mallinne_nimi[kenttä_nimi]'",
+ "right-datatransferimport": "Tuoda tiedot"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/fr.json b/www/wiki/extensions/DataTransfer/i18n/fr.json
new file mode 100644
index 00000000..15e29c7a
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/fr.json
@@ -0,0 +1,47 @@
+{
+ "@metadata": {
+ "authors": [
+ "Crochet.david",
+ "Grondin",
+ "IAlex",
+ "Metroitendo",
+ "Peter17",
+ "PieRRoMaN",
+ "Verdy p",
+ "Zetud",
+ "Gomoko"
+ ]
+ },
+ "datatransfer-desc": "Permet l’import et l’export de données contenues dans des appels de modèles",
+ "viewxml": "Voir XML",
+ "dt_viewxml_docu": "Veuillez sélectionner parmi les catégories et les espaces de noms suivants afin de visionner au format XML.",
+ "dt_viewxml_categories": "Catégories",
+ "dt_viewxml_namespaces": "Espaces de noms",
+ "dt_viewxml_simplifiedformat": "Format simplifié",
+ "dt_xml_namespace": "Espace de noms",
+ "dt_xml_pages": "Pages",
+ "dt_xml_page": "Page",
+ "dt_xml_template": "Modèle",
+ "dt_xml_field": "Champ",
+ "dt_xml_name": "Nom",
+ "dt_xml_title": "Titre",
+ "dt_xml_id": "Identifiant",
+ "dt_xml_freetext": "Texte libre",
+ "importxml": "Import en XML",
+ "dt_import_selectfile": "Veuillez sélectionner le fichier $1 à importer :",
+ "dt_import_encodingtype": "Type d’encodage:",
+ "dt_import_forexisting": "Pour les pages qui existent déjà :",
+ "dt_import_overwriteexisting": "Remplacer le contenu existant",
+ "dt_import_mergeintoexisting": "Remplacer uniquement les champs contenus dans le fichier",
+ "dt_import_skipexisting": "Passer",
+ "dt_import_appendtoexisting": "Ajouter au contenu existant",
+ "dt_import_summarydesc": "Résumé de l’import :",
+ "dt_import_editsummary": "importer en {{ucfirst:$1}}",
+ "dt_import_importing": "Import en cours...",
+ "dt_import_success": "$1 {{PLURAL:$1|page sera créée|pages seront créées}} depuis le fichier $2.",
+ "importcsv": "Import CSV",
+ "importspreadsheet": "Importer la feuille de calcul",
+ "dt_importcsv_badheader": "Erreur : le titre de colonne $1, « $2 », doit être soit « $3 », « $4 » ou de la forme « nom_du_modèle[nom_du_champ] »",
+ "right-datatransferimport": "Importer des données",
+ "dt_filetype_spreadsheet": "feuille de calcul"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/frp.json b/www/wiki/extensions/DataTransfer/i18n/frp.json
new file mode 100644
index 00000000..4e02903b
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/frp.json
@@ -0,0 +1,34 @@
+{
+ "@metadata": {
+ "authors": [
+ "Cedric31",
+ "ChrisPtDe"
+ ]
+ },
+ "viewxml": "Vêre XML",
+ "dt_viewxml_categories": "Catègories",
+ "dt_viewxml_namespaces": "Èspâços de noms",
+ "dt_viewxml_simplifiedformat": "Format simplifiâ",
+ "dt_xml_namespace": "Èspâço de noms",
+ "dt_xml_pages": "Pâges",
+ "dt_xml_page": "Pâge",
+ "dt_xml_template": "Modèlo",
+ "dt_xml_field": "Champ",
+ "dt_xml_name": "Nom",
+ "dt_xml_title": "Titro",
+ "dt_xml_id": "Numerô",
+ "dt_xml_freetext": "Tèxto libro",
+ "importxml": "Importar un XML",
+ "dt_import_selectfile": "Volyéd chouèsir lo fichiér $1 a importar :",
+ "dt_import_encodingtype": "Tipo d’encodâjo :",
+ "dt_import_forexisting": "Por les pâges qu’ègzistont ja :",
+ "dt_import_overwriteexisting": "Ècllafar lo contegnu ègzistent",
+ "dt_import_skipexisting": "Passar",
+ "dt_import_appendtoexisting": "Apondre u contegnu ègzistent",
+ "dt_import_summarydesc": "Rèsumâ de l’importacion :",
+ "dt_import_editsummary": "Importacion de $1",
+ "dt_import_importing": "Importacion en cors...",
+ "dt_import_success": "$1 {{PLURAL:$1|pâge serat fêta|pâges seront fêtes}} dês lo fichiér $2.",
+ "importcsv": "Importar des balyês CSV",
+ "right-datatransferimport": "Importar des balyês"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/fy.json b/www/wiki/extensions/DataTransfer/i18n/fy.json
new file mode 100644
index 00000000..75d8cbf9
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/fy.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Snakesteuben",
+ "Robin0van0der0vliet",
+ "Robin van der Vliet"
+ ]
+ },
+ "dt_viewxml_categories": "Kategoryen",
+ "dt_viewxml_namespaces": "Nammeromten",
+ "dt_xml_namespace": "Nammeromte",
+ "dt_xml_page": "Side",
+ "dt_xml_name": "Namme"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/ga.json b/www/wiki/extensions/DataTransfer/i18n/ga.json
new file mode 100644
index 00000000..971c2b17
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/ga.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": [
+ "Alison",
+ "පසිඳු කාවින්ද"
+ ]
+ },
+ "dt_viewxml_categories": "Catagóirí",
+ "dt_xml_namespace": "Ainmspás",
+ "dt_xml_pages": "Leathanaigh",
+ "dt_xml_page": "Leathanach",
+ "dt_xml_template": "Teimpléad",
+ "dt_xml_name": "Ainm",
+ "dt_xml_title": "Teideal"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/gl.json b/www/wiki/extensions/DataTransfer/i18n/gl.json
new file mode 100644
index 00000000..9c127743
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/gl.json
@@ -0,0 +1,42 @@
+{
+ "@metadata": {
+ "authors": [
+ "Alma",
+ "Toliño",
+ "Elisardojm",
+ "Banjo"
+ ]
+ },
+ "datatransfer-desc": "Permite importar e exportar datos contidos en chamadas de modelos",
+ "viewxml": "Ver XML",
+ "dt_viewxml_docu": "Por favor seleccione entre as seguintes categorías e espazos de nomes para ver en formato XML.",
+ "dt_viewxml_categories": "Categorías",
+ "dt_viewxml_namespaces": "Espazos de nomes",
+ "dt_viewxml_simplifiedformat": "Formato simplificado",
+ "dt_xml_namespace": "Espazo de nomes",
+ "dt_xml_pages": "Páxinas",
+ "dt_xml_page": "Páxina",
+ "dt_xml_template": "Modelo",
+ "dt_xml_field": "Campo",
+ "dt_xml_name": "Nome",
+ "dt_xml_title": "Título",
+ "dt_xml_id": "ID",
+ "dt_xml_freetext": "Texto libre",
+ "importxml": "Importar XML",
+ "dt_import_selectfile": "Por favor, seleccione o ficheiro $1 a importar:",
+ "dt_import_encodingtype": "Tipo de codificación:",
+ "dt_import_forexisting": "Para páxinas que xa existen:",
+ "dt_import_overwriteexisting": "Sobrescribir o contido existente",
+ "dt_import_mergeintoexisting": "Sobrescribir só os campos contidos no ficheiro",
+ "dt_import_skipexisting": "Omitir",
+ "dt_import_appendtoexisting": "Engadir ao contido existente",
+ "dt_import_summarydesc": "Resumo da importación:",
+ "dt_import_editsummary": "Importación de {{ucfirst:$1}}",
+ "dt_import_importing": "Importando...",
+ "dt_import_success": "{{PLURAL:$1|Unha páxina será creada|$1 páxinas serán creadas}} a partir do ficheiro $2.",
+ "importcsv": "Importación en CSV",
+ "importspreadsheet": "Importar folla de cálculo",
+ "dt_importcsv_badheader": "Erro: a cabeceira da columna $1, \"$2\", debe ser un \"$3\", \"$4\" ou do formulario \"template_name[field_name]\"",
+ "right-datatransferimport": "Importar datos",
+ "dt_filetype_spreadsheet": "folla de cálculo"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/got.json b/www/wiki/extensions/DataTransfer/i18n/got.json
new file mode 100644
index 00000000..54292635
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/got.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "Jocke Pirat",
+ "Gothicspeaker"
+ ]
+ },
+ "dt_xml_namespace": "𐌽𐌰𐌼𐌰𐍂𐌿𐌼"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/grc.json b/www/wiki/extensions/DataTransfer/i18n/grc.json
new file mode 100644
index 00000000..51d6e80a
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/grc.json
@@ -0,0 +1,18 @@
+{
+ "@metadata": {
+ "authors": [
+ "Crazymadlover",
+ "Omnipaedista"
+ ]
+ },
+ "dt_viewxml_categories": "Κατηγορίαι",
+ "dt_viewxml_namespaces": "Ὀνοματεῖα",
+ "dt_xml_namespace": "Ὀνοματεῖον",
+ "dt_xml_pages": "Δέλτοι",
+ "dt_xml_page": "Δέλτος",
+ "dt_xml_template": "Πρότυπον",
+ "dt_xml_field": "Πεδίον",
+ "dt_xml_name": "Ὄνομα",
+ "dt_xml_title": "Ἐπιγραφή",
+ "dt_xml_freetext": "Ἐλεύθερον κείμενον"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/gsw.json b/www/wiki/extensions/DataTransfer/i18n/gsw.json
new file mode 100644
index 00000000..b6e011f3
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/gsw.json
@@ -0,0 +1,37 @@
+{
+ "@metadata": {
+ "authors": [
+ "Als-Holder",
+ "J. 'mach' wust"
+ ]
+ },
+ "datatransfer-desc": "Macht dr Import un dr Export vu strukturierte Date megli, wu in Ufrief vu Vorlage bruucht wäre.",
+ "viewxml": "XML aaluege",
+ "dt_viewxml_docu": "Bitte wehl uus, weli Kategorien un Namensryym im XML-Format solle aazeigt wäre.",
+ "dt_viewxml_categories": "Kategorie",
+ "dt_viewxml_namespaces": "Namensryym",
+ "dt_viewxml_simplifiedformat": "Vereifacht Format",
+ "dt_xml_namespace": "Namensruum",
+ "dt_xml_pages": "Syte",
+ "dt_xml_page": "Syte",
+ "dt_xml_template": "Vorlag",
+ "dt_xml_field": "Fäld",
+ "dt_xml_name": "Name",
+ "dt_xml_title": "Titel",
+ "dt_xml_id": "ID",
+ "dt_xml_freetext": "Freje Täxt",
+ "importxml": "XML importiere",
+ "dt_import_selectfile": "Bitte wehl d $1-Datei zum importiere uus:",
+ "dt_import_encodingtype": "Verschlisseligstyp:",
+ "dt_import_forexisting": "Im Fall vu Syte, wu s scho git:",
+ "dt_import_overwriteexisting": "Vorhandene Inhalt iberschryybe",
+ "dt_import_skipexisting": "Ibergumpe",
+ "dt_import_appendtoexisting": "Vorhandene Inhalt ergänze",
+ "dt_import_summarydesc": "Zämmefassig vum Import:",
+ "dt_import_editsummary": "$1-Import",
+ "dt_import_importing": "Am Importiere ...",
+ "dt_import_success": "$1 {{PLURAL:$1|Syte|Syte}} wäre us dr $2-Datei aagleit.",
+ "importcsv": "CSV-Datei importiere",
+ "dt_importcsv_badheader": "Fähler: d Spalte $1 Iberschrift, '$2', muess entwäder '$3', '$4' syy oder us em Format 'template_name[field_name]'",
+ "right-datatransferimport": "Date importiere"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/gv.json b/www/wiki/extensions/DataTransfer/i18n/gv.json
new file mode 100644
index 00000000..4c9e5f7b
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/gv.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "MacTire02"
+ ]
+ },
+ "viewxml": "Jeeagh er XML",
+ "dt_viewxml_categories": "Ronnaghyn",
+ "dt_xml_page": "Duillag",
+ "dt_xml_name": "Ennym",
+ "dt_xml_title": "Ard-ennym",
+ "dt_xml_freetext": "Teks seyr"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/ha.json b/www/wiki/extensions/DataTransfer/i18n/ha.json
new file mode 100644
index 00000000..189d5659
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/ha.json
@@ -0,0 +1,5 @@
+{
+ "@metadata": [],
+ "dt_xml_namespace": "Sararin suna",
+ "dt_xml_page": "Shafi"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/haw.json b/www/wiki/extensions/DataTransfer/i18n/haw.json
new file mode 100644
index 00000000..20a735bc
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/haw.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "Singularity"
+ ]
+ },
+ "dt_xml_page": "‘Ao‘ao",
+ "dt_xml_name": "Inoa"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/he.json b/www/wiki/extensions/DataTransfer/i18n/he.json
new file mode 100644
index 00000000..bd1de980
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/he.json
@@ -0,0 +1,42 @@
+{
+ "@metadata": {
+ "authors": [
+ "Amire80",
+ "Rotemliss",
+ "YaronSh",
+ "Guycn2"
+ ]
+ },
+ "datatransfer-desc": "מתן אפשרות לייבא ולייצא נתונים בקריאות לתבניות",
+ "viewxml": "הצגת XML",
+ "dt_viewxml_docu": "יש לבחור את הקטגוריות ואת מרחבי השם שיוצגו בפורמט XML.",
+ "dt_viewxml_categories": "קטגוריות",
+ "dt_viewxml_namespaces": "מרחבי שם",
+ "dt_viewxml_simplifiedformat": "מבנה מפושט",
+ "dt_xml_namespace": "מרחב שם",
+ "dt_xml_pages": "דפים",
+ "dt_xml_page": "דף",
+ "dt_xml_template": "תבנית",
+ "dt_xml_field": "שדה",
+ "dt_xml_name": "שם",
+ "dt_xml_title": "כותרת",
+ "dt_xml_id": "מזהה (ID)",
+ "dt_xml_freetext": "טקסט חופשי",
+ "importxml": "ייבוא XML",
+ "dt_import_selectfile": "נא לבחור את קובץ ה־$1 לייבוא:",
+ "dt_import_encodingtype": "סוג הקידוד:",
+ "dt_import_forexisting": "עבור הדפים שכבר קיימים:",
+ "dt_import_overwriteexisting": "לדרוס את התוכן הקיים",
+ "dt_import_mergeintoexisting": "לדרוס רק שדות שהקובץ מכיל",
+ "dt_import_skipexisting": "לדלג",
+ "dt_import_appendtoexisting": "לצרף את התוכן הקיים",
+ "dt_import_summarydesc": "תקציר היבוא:",
+ "dt_import_editsummary": "ייבוא של {{ucfirst:$1}}",
+ "dt_import_importing": "מתבצע יבוא...",
+ "dt_import_success": "{{PLURAL:$1|דף אחד ייווצר|$1 דפים ייווצרו}} מקובץ ה־$2.",
+ "importcsv": "יבוא CSV",
+ "importspreadsheet": "גיליון נתונים של ייבוא",
+ "dt_importcsv_badheader": "שגיאה: כותרת העמודה $1, '$2', חייבת להיות או '$3', '$4' או מהצורה 'שם_התבנית[שם_השדה]'",
+ "right-datatransferimport": "ייבוא נתונים",
+ "dt_filetype_spreadsheet": "גיליון נתונים"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/hi.json b/www/wiki/extensions/DataTransfer/i18n/hi.json
new file mode 100644
index 00000000..181ea301
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/hi.json
@@ -0,0 +1,29 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ansumang",
+ "Kaustubh",
+ "Siddhartha Ghai",
+ "Sfic",
+ "Rajat11"
+ ]
+ },
+ "datatransfer-desc": "टेम्प्लेट कॉल में उपलब्ध डाटाकी आयात-निर्यात करने की अनुमति देता हैं",
+ "viewxml": "XML देखें",
+ "dt_viewxml_docu": "कॄपया XML में देखने के लिये श्रेणीयाँ और नामस्थान चुनें।",
+ "dt_viewxml_categories": "श्रेणियाँ",
+ "dt_viewxml_namespaces": "नामस्थान",
+ "dt_viewxml_simplifiedformat": "आसान फॉरमैट",
+ "dt_xml_namespace": "नामस्थान",
+ "dt_xml_pages": "पृष्ठ",
+ "dt_xml_page": "पन्ना",
+ "dt_xml_template": "साँचा",
+ "dt_xml_field": "फ़ील्ड",
+ "dt_xml_name": "नाम",
+ "dt_xml_title": "शीर्षक",
+ "dt_xml_id": "आईडी",
+ "dt_xml_freetext": "मुक्त पाठ",
+ "dt_import_skipexisting": "छोड़ें",
+ "dt_import_editsummary": "{{ucfirst:$1}} आयात",
+ "right-datatransferimport": "डेटा आयात करें"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/hr.json b/www/wiki/extensions/DataTransfer/i18n/hr.json
new file mode 100644
index 00000000..9347643d
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/hr.json
@@ -0,0 +1,10 @@
+{
+ "@metadata": {
+ "authors": [
+ "Dalibor Bosits"
+ ]
+ },
+ "dt_viewxml_categories": "Kategorije",
+ "dt_xml_namespace": "Imenski prostor",
+ "dt_xml_page": "Stranica"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/hsb.json b/www/wiki/extensions/DataTransfer/i18n/hsb.json
new file mode 100644
index 00000000..c711906b
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/hsb.json
@@ -0,0 +1,37 @@
+{
+ "@metadata": {
+ "authors": [
+ "Michawiki"
+ ]
+ },
+ "datatransfer-desc": "Dowola importowanje a eksportowanje datow, kotrež su we wołanjach předłohow wobsahowane",
+ "viewxml": "XML wobhladać",
+ "dt_viewxml_docu": "Prošu wubjer ze slědowacych kategorijow a mjenowych rumow, zo by w XML-formaće wobhladał.",
+ "dt_viewxml_categories": "Kategorije",
+ "dt_viewxml_namespaces": "Mjenowe rumy",
+ "dt_viewxml_simplifiedformat": "Zjednorjeny format",
+ "dt_xml_namespace": "Mjenowy rum",
+ "dt_xml_pages": "Strony",
+ "dt_xml_page": "Strona",
+ "dt_xml_template": "Předłoha",
+ "dt_xml_field": "Polo",
+ "dt_xml_name": "Mjeno",
+ "dt_xml_title": "Titul",
+ "dt_xml_id": "Id",
+ "dt_xml_freetext": "Swobodny tekst",
+ "importxml": "XML importować",
+ "dt_import_selectfile": "Prošu wubjer dataju $1 za importowanje:",
+ "dt_import_encodingtype": "Typ znamješkoweho koda:",
+ "dt_import_forexisting": "Za strony, kotrež hižo eksistuja:",
+ "dt_import_overwriteexisting": "Eksistowacy wobsah přepisać",
+ "dt_import_mergeintoexisting": "Jenož pola přepisać, kotrež su w dataji wobsahowane.",
+ "dt_import_skipexisting": "Přeskočić",
+ "dt_import_appendtoexisting": "K eksistowacemu wobsahej připowěsnyć",
+ "dt_import_summarydesc": "Zjeće importa:",
+ "dt_import_editsummary": "Importowanje $1",
+ "dt_import_importing": "Importuje so...",
+ "dt_import_success": "$1 {{PLURAL:$1|strona so z dataje $2 twori|stronje so z dataje $2 tworitej|strony so z dataje $2 tworja|stronow so z dataje $2 twori}}.",
+ "importcsv": "Importowanje CSV",
+ "dt_importcsv_badheader": "Zmylk: hłowa špalty $1, '$2', dyrbi pak '$3', '$4' być pak formu 'mjeno_předłohi[mjeno_pola]' měć",
+ "right-datatransferimport": "Daty importować"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/hu.json b/www/wiki/extensions/DataTransfer/i18n/hu.json
new file mode 100644
index 00000000..49ae99c8
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/hu.json
@@ -0,0 +1,38 @@
+{
+ "@metadata": {
+ "authors": [
+ "Dani",
+ "Dj",
+ "Glanthor Reviol"
+ ]
+ },
+ "datatransfer-desc": "Lehetővé teszi a sablonhívásokban található adatok importálását és exportálását",
+ "viewxml": "XML megtekintése",
+ "dt_viewxml_docu": "Válaszd ki a kategóriák és a névterek közül azt, amelyiket meg akarod tekinteni XML formátumban.",
+ "dt_viewxml_categories": "Kategóriák",
+ "dt_viewxml_namespaces": "Névterek",
+ "dt_viewxml_simplifiedformat": "Egyszerűsített formátum",
+ "dt_xml_namespace": "Névtér",
+ "dt_xml_pages": "Lapok",
+ "dt_xml_page": "Lap",
+ "dt_xml_template": "Sablon",
+ "dt_xml_field": "Mező",
+ "dt_xml_name": "Név",
+ "dt_xml_title": "Cím",
+ "dt_xml_id": "Azonosító",
+ "dt_xml_freetext": "Szabad szöveg",
+ "importxml": "XML importálás",
+ "dt_import_selectfile": "Kérlek válaszd ki az importálandó $1 fájlt:",
+ "dt_import_encodingtype": "Kódolás típusa:",
+ "dt_import_forexisting": "Már létező lapok esetén:",
+ "dt_import_overwriteexisting": "Meglévő tartalom felülírása",
+ "dt_import_skipexisting": "Kihagyás",
+ "dt_import_appendtoexisting": "Hozzáfűzés a meglévő tartalomhoz",
+ "dt_import_summarydesc": "Az importálás összefoglalója:",
+ "dt_import_editsummary": "$1 importálás",
+ "dt_import_importing": "Importálás…",
+ "dt_import_success": "{{PLURAL:$1|egy|$1}} lap fog készülni a(z) $2 fájlból.",
+ "importcsv": "CSV importálása",
+ "dt_importcsv_badheader": "Hiba: a(z) $1 oszlop fejlécének („$2”) vagy „$3”, „$4”, vagy pedig „sablonnév[mezőnév]” formátumúnak kell lennie",
+ "right-datatransferimport": "Adatok importálása"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/ia.json b/www/wiki/extensions/DataTransfer/i18n/ia.json
new file mode 100644
index 00000000..117b666f
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/ia.json
@@ -0,0 +1,39 @@
+{
+ "@metadata": {
+ "authors": [
+ "McDutchie"
+ ]
+ },
+ "datatransfer-desc": "Permitte importar e exportar datos continite in appellos a patronos",
+ "viewxml": "Vider XML",
+ "dt_viewxml_docu": "Per favor selige inter le sequente categorias e spatios de nomines pro vider in formato XML.",
+ "dt_viewxml_categories": "Categorias",
+ "dt_viewxml_namespaces": "Spatios de nomines",
+ "dt_viewxml_simplifiedformat": "Formato simplificate",
+ "dt_xml_namespace": "Spatio de nomines",
+ "dt_xml_pages": "Paginas",
+ "dt_xml_page": "Pagina",
+ "dt_xml_template": "Patrono",
+ "dt_xml_field": "Campo",
+ "dt_xml_name": "Nomine",
+ "dt_xml_title": "Titulo",
+ "dt_xml_id": "ID",
+ "dt_xml_freetext": "Texto libere",
+ "importxml": "Importar XML",
+ "dt_import_selectfile": "Per favor selige le file $1 a importar:",
+ "dt_import_encodingtype": "Typo de codification:",
+ "dt_import_forexisting": "Pro paginas que ja existe:",
+ "dt_import_overwriteexisting": "Superscriber le contento existente",
+ "dt_import_mergeintoexisting": "Superscriber solmente le campos continite in le file",
+ "dt_import_skipexisting": "Saltar",
+ "dt_import_appendtoexisting": "Adjunger al contento existente",
+ "dt_import_summarydesc": "Summario de importation:",
+ "dt_import_editsummary": "Importation de {{ucfirst:$1}}",
+ "dt_import_importing": "Importation in curso…",
+ "dt_import_success": "$1 {{PLURAL:$1|pagina|paginas}} essera create ex le file $2.",
+ "importcsv": "Importar CSV",
+ "importspreadsheet": "Importar folio de calculo",
+ "dt_importcsv_badheader": "Error: le capite del columna $1, '$2', debe esser '$3', '$4' o in le forma 'nomine_de_patrono[nomine_de_campo]'",
+ "right-datatransferimport": "Importar datos",
+ "dt_filetype_spreadsheet": "folio de calculo"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/id.json b/www/wiki/extensions/DataTransfer/i18n/id.json
new file mode 100644
index 00000000..68903678
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/id.json
@@ -0,0 +1,40 @@
+{
+ "@metadata": {
+ "authors": [
+ "Bennylin",
+ "Farras",
+ "Irwangatot",
+ "IvanLanin",
+ "Rex"
+ ]
+ },
+ "datatransfer-desc": "Membolehkan untuk impor dan ekspor data diisikan pada pemangilan templat",
+ "viewxml": "Tilik XML",
+ "dt_viewxml_docu": "Silakan pilih di antara kategori dan ruang nama berikut untuk melihat dalam format XML",
+ "dt_viewxml_categories": "Kategori",
+ "dt_viewxml_namespaces": "Ruang nama",
+ "dt_viewxml_simplifiedformat": "Penyederhanaan format",
+ "dt_xml_namespace": "Ruang nama",
+ "dt_xml_pages": "Halaman",
+ "dt_xml_page": "Halaman",
+ "dt_xml_template": "Templat",
+ "dt_xml_field": "Ruas",
+ "dt_xml_name": "Nama",
+ "dt_xml_title": "Judul",
+ "dt_xml_id": "ID",
+ "dt_xml_freetext": "Teks Bebas",
+ "importxml": "Impor XML",
+ "dt_import_selectfile": "Pilih berkas $1 untuk di impor:",
+ "dt_import_encodingtype": "Tipe penyandian:",
+ "dt_import_forexisting": "Untuk halaman yang sudah ada:",
+ "dt_import_overwriteexisting": "Menimpa konten yang ada",
+ "dt_import_skipexisting": "Lewati",
+ "dt_import_appendtoexisting": "Tambahkan kepada konten yang ada",
+ "dt_import_summarydesc": "Ringkasan impor:",
+ "dt_import_editsummary": "$1 impor",
+ "dt_import_importing": "Mengimpor...",
+ "dt_import_success": "$1 {{PLURAL:$1|halaman|halaman}} akan di buat dari berkas $2.",
+ "importcsv": "Impor CSV",
+ "dt_importcsv_badheader": "Kesalahan: kepala kolom $1, '$2', harus berupa '$3', '$4' atau bentuk 'template_name [field_name]'",
+ "right-datatransferimport": "Impor data"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/ig.json b/www/wiki/extensions/DataTransfer/i18n/ig.json
new file mode 100644
index 00000000..1314934f
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/ig.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ukabia"
+ ]
+ },
+ "dt_viewxml_categories": "Ụdàkọ",
+ "dt_viewxml_namespaces": "Ahàm̀bara",
+ "dt_xml_namespace": "Ahàm̀bara",
+ "dt_xml_pages": "Ihü",
+ "dt_xml_page": "Ihü",
+ "dt_xml_template": "Àtụ",
+ "dt_xml_name": "Áhà",
+ "dt_import_skipexisting": "Gáfè"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/inh.json b/www/wiki/extensions/DataTransfer/i18n/inh.json
new file mode 100644
index 00000000..2b3fb19f
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/inh.json
@@ -0,0 +1,10 @@
+{
+ "@metadata": {
+ "authors": [
+ "Adam-Yourist",
+ "Kaganer"
+ ]
+ },
+ "dt_viewxml_namespaces": "ЦӀерий моттигаш",
+ "dt_xml_template": "Ло"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/io.json b/www/wiki/extensions/DataTransfer/i18n/io.json
new file mode 100644
index 00000000..0edc7386
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/io.json
@@ -0,0 +1,10 @@
+{
+ "@metadata": {
+ "authors": [
+ "Malafaya"
+ ]
+ },
+ "dt_xml_template": "Shablono",
+ "dt_xml_name": "Nomo",
+ "dt_xml_title": "Titulo"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/is.json b/www/wiki/extensions/DataTransfer/i18n/is.json
new file mode 100644
index 00000000..ec4ea646
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/is.json
@@ -0,0 +1,16 @@
+{
+ "@metadata": {
+ "authors": [
+ "S.Örvarr.S",
+ "පසිඳු කාවින්ද"
+ ]
+ },
+ "dt_viewxml_namespaces": "Nafnrými",
+ "dt_xml_namespace": "Nafnrými",
+ "dt_xml_pages": "Síður",
+ "dt_xml_page": "Síða",
+ "dt_xml_field": "Svæði",
+ "dt_xml_name": "Nafn",
+ "dt_xml_title": "Titill",
+ "dt_import_skipexisting": "Sleppa"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/it.json b/www/wiki/extensions/DataTransfer/i18n/it.json
new file mode 100644
index 00000000..a4806f40
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/it.json
@@ -0,0 +1,41 @@
+{
+ "@metadata": {
+ "authors": [
+ "Beta16",
+ "BrokenArrow",
+ "Darth Kule"
+ ]
+ },
+ "datatransfer-desc": "Permette l'importazione e l'esportazione di dati strutturati contenuti in chiamate a template",
+ "viewxml": "Vedi XML",
+ "dt_viewxml_docu": "Selezionare tra le categorie e namespace indicati di seguito quelli da visualizzare in formato XML.",
+ "dt_viewxml_categories": "Categorie",
+ "dt_viewxml_namespaces": "Namespace",
+ "dt_viewxml_simplifiedformat": "Formato semplificato",
+ "dt_xml_namespace": "Namespace",
+ "dt_xml_pages": "Pagine",
+ "dt_xml_page": "Pagina",
+ "dt_xml_template": "Template",
+ "dt_xml_field": "Campo",
+ "dt_xml_name": "Nome",
+ "dt_xml_title": "Titolo",
+ "dt_xml_id": "ID",
+ "dt_xml_freetext": "Testo libero",
+ "importxml": "Importa XML",
+ "dt_import_selectfile": "Seleziona il file $1 da importare:",
+ "dt_import_encodingtype": "Tipo di codifica",
+ "dt_import_forexisting": "Per le pagine già esistenti:",
+ "dt_import_overwriteexisting": "Sovrascrivi il contenuto esistente",
+ "dt_import_mergeintoexisting": "Sovrascrivi solo i campi contenuti nel file",
+ "dt_import_skipexisting": "Salta",
+ "dt_import_appendtoexisting": "Aggiungi al contenuto esistente",
+ "dt_import_summarydesc": "Oggetto dell'importazione:",
+ "dt_import_editsummary": "Importazione {{ucfirst:$1}}",
+ "dt_import_importing": "Sto importando...",
+ "dt_import_success": "$1 {{PLURAL:$1|pagina|pagine}} saranno create dal file $2.",
+ "importcsv": "Importa CSV",
+ "importspreadsheet": "Importa foglio di calcolo",
+ "dt_importcsv_badheader": "Errore: l'intestazione della colonna $1, \"$2\", deve avere uno dei seguenti valori: '$3', '$4' o il formato 'nome_template[nome_campo]'",
+ "right-datatransferimport": "Importa dati",
+ "dt_filetype_spreadsheet": "foglio di calcolo"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/ja.json b/www/wiki/extensions/DataTransfer/i18n/ja.json
new file mode 100644
index 00000000..9cbf0c9b
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/ja.json
@@ -0,0 +1,47 @@
+{
+ "@metadata": {
+ "authors": [
+ "Aotake",
+ "Fryed-peach",
+ "JtFuruhata",
+ "Ohgi",
+ "Shirayuki",
+ "青子守歌",
+ "Shield-9",
+ "Otokoume",
+ "2nd-player"
+ ]
+ },
+ "datatransfer-desc": "テンプレート呼び出しに含まれるデータの取り込みおよび書き出しができるようにする",
+ "viewxml": "XMLを表示",
+ "dt_viewxml_docu": "XML 形式で表示するカテゴリや名前空間を以下から選択してください。",
+ "dt_viewxml_categories": "カテゴリ",
+ "dt_viewxml_namespaces": "名前空間",
+ "dt_viewxml_simplifiedformat": "簡易形式",
+ "dt_xml_namespace": "名前空間",
+ "dt_xml_pages": "ページ群",
+ "dt_xml_page": "ページ",
+ "dt_xml_template": "テンプレート",
+ "dt_xml_field": "フィールド",
+ "dt_xml_name": "名前",
+ "dt_xml_title": "タイトル",
+ "dt_xml_id": "ID",
+ "dt_xml_freetext": "自由形式テキスト",
+ "importxml": "XMLを取り込む",
+ "dt_import_selectfile": "取り込む $1 ファイルを選択してください:",
+ "dt_import_encodingtype": "エンコーディング方式:",
+ "dt_import_forexisting": "既存のページの場合:",
+ "dt_import_overwriteexisting": "既存の内容に上書き",
+ "dt_import_mergeintoexisting": "ファイルに含まれるフィールドのみを上書き",
+ "dt_import_skipexisting": "スキップ",
+ "dt_import_appendtoexisting": "既存の内容に追加",
+ "dt_import_summarydesc": "取り込みの要約:",
+ "dt_import_editsummary": "{{ucfirst:$1}} の取り込み",
+ "dt_import_importing": "取り込み中...",
+ "dt_import_success": "$2 ファイルから $1 {{PLURAL:$1|ページ}}が作成されます。",
+ "importcsv": "CSVの取り込み",
+ "importspreadsheet": "スプレッドシートの取り込み",
+ "dt_importcsv_badheader": "エラー: 列 $1 のヘッダー「$2」は、「$3」または「$4」であるか、「テンプレート名[フィールド名]」の形式である必要があります",
+ "right-datatransferimport": "データを取り込む",
+ "dt_filetype_spreadsheet": "スプレッドシート"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/jv.json b/www/wiki/extensions/DataTransfer/i18n/jv.json
new file mode 100644
index 00000000..c2c30ecc
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/jv.json
@@ -0,0 +1,17 @@
+{
+ "@metadata": {
+ "authors": [
+ "Meursault2004",
+ "NoiX180"
+ ]
+ },
+ "viewxml": "Deleng XML",
+ "dt_viewxml_categories": "Kategori",
+ "dt_viewxml_simplifiedformat": "Format prasaja",
+ "dt_xml_namespace": "Bilik nama",
+ "dt_xml_page": "Kaca",
+ "dt_xml_name": "Jeneng",
+ "dt_xml_title": "Sesirah",
+ "dt_xml_id": "ID",
+ "dt_xml_freetext": "Tèks Bébas"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/ka.json b/www/wiki/extensions/DataTransfer/i18n/ka.json
new file mode 100644
index 00000000..69a979ec
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/ka.json
@@ -0,0 +1,30 @@
+{
+ "@metadata": {
+ "authors": [
+ "David1010"
+ ]
+ },
+ "viewxml": "XML-ის ხილვა",
+ "dt_viewxml_categories": "კატეგორიები",
+ "dt_viewxml_namespaces": "სახელთა სივრცეები",
+ "dt_viewxml_simplifiedformat": "გამარტივებული ფორმატი",
+ "dt_xml_namespace": "სახელთა სივრცე",
+ "dt_xml_pages": "გვერდები",
+ "dt_xml_page": "გვერდი",
+ "dt_xml_template": "თარგი",
+ "dt_xml_field": "ველი",
+ "dt_xml_name": "სახელი",
+ "dt_xml_title": "სათაური",
+ "dt_xml_id": "ID",
+ "dt_xml_freetext": "თავისუფალი ტექსტი",
+ "importxml": "XML-ის იმპორტი",
+ "dt_import_selectfile": "გთხოვთ, აირჩიეთ $1 ფაილი იმპორტისათვის:",
+ "dt_import_encodingtype": "კოდირების ტიპი:",
+ "dt_import_forexisting": "გვერდებისათვის რომლებიც უკვე არსებობენ:",
+ "dt_import_skipexisting": "გამოტოვება",
+ "dt_import_summarydesc": "იმპორტის აღწერა:",
+ "dt_import_editsummary": "{{ucfirst:$1}} იმპორტი",
+ "dt_import_importing": "იმპორტირება...",
+ "importcsv": "CSV-ის იმპორტი",
+ "right-datatransferimport": "მონაცემების იმპორტირება"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/km.json b/www/wiki/extensions/DataTransfer/i18n/km.json
new file mode 100644
index 00000000..5c2c8d15
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/km.json
@@ -0,0 +1,38 @@
+{
+ "@metadata": {
+ "authors": [
+ "Chhorran",
+ "Lovekhmer",
+ "Thearith",
+ "គីមស៊្រុន",
+ "វ័ណថារិទ្ធ"
+ ]
+ },
+ "viewxml": "មើល XML",
+ "dt_viewxml_docu": "ជ្រើសយកក្នុងចំណោមចំណាត់ថ្នាក់ក្រុមនិងលំហឈ្មោះដើម្បីមើលជាទម្រង់ XML ។",
+ "dt_viewxml_categories": "ចំណាត់ថ្នាក់ក្រុម",
+ "dt_viewxml_namespaces": "ប្រភេទ",
+ "dt_viewxml_simplifiedformat": "ទម្រង់សាមញ្ញ",
+ "dt_xml_namespace": "លំហឈ្មោះ",
+ "dt_xml_pages": "ទំព័រ",
+ "dt_xml_page": "ទំព័រ",
+ "dt_xml_template": "ទំព័រគំរូ",
+ "dt_xml_field": "ផ្នែក",
+ "dt_xml_name": "ឈ្មោះ",
+ "dt_xml_title": "ចំណងជើង",
+ "dt_xml_id": "អត្តសញ្ញាណ",
+ "dt_xml_freetext": "អត្ថបទសេរី",
+ "importxml": "នាំចូល XML",
+ "dt_import_selectfile": "សូម​ជ្រើស​រើស​ឯកសារ $1 ដើម្បី​នាំ​ចូល​៖",
+ "dt_import_encodingtype": "ប្រភេទនៃការធ្វើកូដ៖",
+ "dt_import_forexisting": "សំរាប់ទំព័រដែលមានរួចហើយ៖",
+ "dt_import_overwriteexisting": "សរសេរជាន់ពីលើខ្លឹមសារដែលមានហើយ",
+ "dt_import_skipexisting": "រំលង",
+ "dt_import_appendtoexisting": "សរសេរបន្ថែមទៅលើខ្លឹមសារដែលមានហើយ",
+ "dt_import_summarydesc": "ចំណារពន្យល់ស្ដីពីការនាំចូល៖",
+ "dt_import_editsummary": "$1 នាំចូល​",
+ "dt_import_importing": "កំពុងនាំចូល​...",
+ "dt_import_success": "ទំព័រចំនួន $1 នឹងត្រូវបានបង្កើតពីឯកសារ $2 នេះ។",
+ "importcsv": "នាំចូល CSV",
+ "right-datatransferimport": "នាំចូល​ទិន្នន័យ​"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/kn.json b/www/wiki/extensions/DataTransfer/i18n/kn.json
new file mode 100644
index 00000000..5bd3c398
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/kn.json
@@ -0,0 +1,16 @@
+{
+ "@metadata": {
+ "authors": [
+ "Nayvik",
+ "VASANTH S.N."
+ ]
+ },
+ "dt_viewxml_categories": "ವರ್ಗಗಳು",
+ "dt_viewxml_namespaces": "ನಾಮವರ್ಗಗಳು",
+ "dt_xml_namespace": "ನಾಮವರ್ಗ",
+ "dt_xml_pages": "ಪುಟಗಳು",
+ "dt_xml_page": "ಪುಟ",
+ "dt_xml_template": "ಟೆಂಪ್ಲೇಟು",
+ "dt_xml_name": "ಹೆಸರು",
+ "dt_xml_title": "ಶೀರ್ಷಿಕೆ"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/ko.json b/www/wiki/extensions/DataTransfer/i18n/ko.json
new file mode 100644
index 00000000..bfdaecc7
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/ko.json
@@ -0,0 +1,44 @@
+{
+ "@metadata": {
+ "authors": [
+ "Daisy2002",
+ "Yjs5497",
+ "아라",
+ "Hwangjy9",
+ "Revi",
+ "Ykhwong"
+ ]
+ },
+ "datatransfer-desc": "틀 호출에 포함된 데이터를 가져오기와 내보내기를 할 수 있게 합니다",
+ "viewxml": "XML 보기",
+ "dt_viewxml_docu": "XML 형식으로 보려면 다음 분류와 이름공간 중에서 선택하세요.",
+ "dt_viewxml_categories": "분류",
+ "dt_viewxml_namespaces": "이름공간",
+ "dt_viewxml_simplifiedformat": "단순화된 형식",
+ "dt_xml_namespace": "이름공간",
+ "dt_xml_pages": "문서",
+ "dt_xml_page": "문서",
+ "dt_xml_template": "틀",
+ "dt_xml_field": "필드",
+ "dt_xml_name": "이름",
+ "dt_xml_title": "제목",
+ "dt_xml_id": "ID",
+ "dt_xml_freetext": "자유 텍스트",
+ "importxml": "XML 가져오기",
+ "dt_import_selectfile": "가져오려면 $1 파일을 선택하세요:",
+ "dt_import_encodingtype": "인코딩 유형:",
+ "dt_import_forexisting": "이미 존재하는 문서이면:",
+ "dt_import_overwriteexisting": "기존 내용을 덮어쓰기",
+ "dt_import_mergeintoexisting": "파일에 포함된 필드만 덮어쓰기",
+ "dt_import_skipexisting": "건너뛰기",
+ "dt_import_appendtoexisting": "기존 내용에 추가",
+ "dt_import_summarydesc": "가져오기의 요약:",
+ "dt_import_editsummary": "{{ucfirst:$1}} 가져오기",
+ "dt_import_importing": "가져오는 중...",
+ "dt_import_success": "{{PLURAL:$1|문서}} $1개가 $2 파일에서 만들어집니다.",
+ "importcsv": "CSV 가져오기",
+ "importspreadsheet": "스프레드시트 들여오기",
+ "dt_importcsv_badheader": "오류: $1열의 머리인, '$2'은(는) '$3', '$4'나 '틀_이름[필드_이름]' 형식 중 하나여야 합니다",
+ "right-datatransferimport": "데이터 가져오기",
+ "dt_filetype_spreadsheet": "스프레드시트"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/krj.json b/www/wiki/extensions/DataTransfer/i18n/krj.json
new file mode 100644
index 00000000..37d7525c
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/krj.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "Jose77"
+ ]
+ },
+ "dt_viewxml_categories": "Manga Kategorya",
+ "dt_xml_page": "Pahina"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/ksh.json b/www/wiki/extensions/DataTransfer/i18n/ksh.json
new file mode 100644
index 00000000..a6e1300d
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/ksh.json
@@ -0,0 +1,39 @@
+{
+ "@metadata": {
+ "authors": [
+ "Purodha"
+ ]
+ },
+ "datatransfer-desc": "Määt et müjjelesch, Date uß Schabloone ier Oproofe ze emporteere un ze exporteere.",
+ "viewxml": "<i lang=\"en\">XML</i> beloore",
+ "dt_viewxml_docu": "Don ußsöhke, wat fö_n Saachjroppe un Appachtemangs De em <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Extensible Markup Language\">XML</i>-Fommahd aanlohre wells.",
+ "dt_viewxml_categories": "Saachjroppe",
+ "dt_viewxml_namespaces": "Appachtemangs",
+ "dt_viewxml_simplifiedformat": "Em eijfachere Fommaat",
+ "dt_xml_namespace": "Appachtemang",
+ "dt_xml_pages": "Sigge",
+ "dt_xml_page": "Sigg",
+ "dt_xml_template": "Schablohn",
+ "dt_xml_field": "Felldt",
+ "dt_xml_name": "Nahme",
+ "dt_xml_title": "Tėttel",
+ "dt_xml_id": "Kännong",
+ "dt_xml_freetext": "Freije Täx",
+ "importxml": "<i lang=\"en\">XML</i> Empotteere",
+ "dt_import_selectfile": "Söhk de <i lang=\"en\">$1</i>-Dattei för zem Empotteere uß:",
+ "dt_import_encodingtype": "Zoot Kodeerung för de Bohchshtahbe un Zeishe:",
+ "dt_import_forexisting": "För Sigge, di et ald jitt:",
+ "dt_import_overwriteexisting": "Övverschrieve, wat ald doh es",
+ "dt_import_mergeintoexisting": "Donn bloß Fälder övverschriive, di ald en dä Dattei schtonn",
+ "dt_import_skipexisting": "Övverjonn",
+ "dt_import_appendtoexisting": "An dat aanhange, wat ald doh es",
+ "dt_import_summarydesc": "Zesammefassung vun däm Empoot:",
+ "dt_import_editsummary": "uss ene $1-Datei empotteet <!-- https://translatewiki.net/wiki/Thread:Support/About_MediaWiki:Dt_import_editsummary/ksh https://phabricator.wikimedia.org/T130188 -->",
+ "dt_import_importing": "Ben aam Empotteere{{int:Ellipsis}}",
+ "dt_import_success": "{{PLURAL:$1|Ein Sigg weed_uß|$1 Sigge weede uß|Kein einzelne Sigg weed_uß}} dä <i lang=\"en\">$2</i>-Dattei empotteet.",
+ "importcsv": "<i lang=\"en\">CSV</i>-Dattei empoteere",
+ "importspreadsheet": "Räscheblatt Empottehre",
+ "dt_importcsv_badheader": "Fähler: De Shpallde-Övverschreff för $1 es „$2“, mööt ävver „$3“ udder „$4“ sin, udder dat Fommaat „<code>Name_vun_ene_Schablohn[Name_vun_enem_Felldt]</code>“ han.",
+ "right-datatransferimport": "Daate empoteere",
+ "dt_filetype_spreadsheet": "Räscheblatt"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/ku-latn.json b/www/wiki/extensions/DataTransfer/i18n/ku-latn.json
new file mode 100644
index 00000000..cb558120
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/ku-latn.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "George Animal"
+ ]
+ },
+ "dt_viewxml_categories": "Kategorî",
+ "dt_xml_pages": "Rûpel",
+ "dt_xml_page": "Rûpel",
+ "dt_xml_template": "Şablon",
+ "dt_xml_name": "Nav",
+ "dt_xml_title": "Sernav",
+ "dt_import_summarydesc": "Kurteya împortê:"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/kw.json b/www/wiki/extensions/DataTransfer/i18n/kw.json
new file mode 100644
index 00000000..6a9f2ab2
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/kw.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "Kernoweger",
+ "Kw-Moon",
+ "Nrowe"
+ ]
+ },
+ "dt_viewxml_categories": "Klassys",
+ "dt_xml_page": "Folen"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/lb.json b/www/wiki/extensions/DataTransfer/i18n/lb.json
new file mode 100644
index 00000000..77cc8910
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/lb.json
@@ -0,0 +1,40 @@
+{
+ "@metadata": {
+ "authors": [
+ "Robby",
+ "Soued031"
+ ]
+ },
+ "datatransfer-desc": "Erlaabt et Daten déi an Opruffer vu Schabloune benotzt ginn z'importéieren an z'exportéieren",
+ "viewxml": "XML weisen",
+ "dt_viewxml_docu": "Wielt w.e.g. ënner dëse Kategorien an Nimmraim fir am XML-Format unzeweisen.",
+ "dt_viewxml_categories": "Kategorien",
+ "dt_viewxml_namespaces": "Nummraim",
+ "dt_viewxml_simplifiedformat": "Vereinfachte Format",
+ "dt_xml_namespace": "Nummraum",
+ "dt_xml_pages": "Säiten",
+ "dt_xml_page": "Säit",
+ "dt_xml_template": "Schabloun",
+ "dt_xml_field": "Feld",
+ "dt_xml_name": "Numm",
+ "dt_xml_title": "Titel",
+ "dt_xml_id": "Nummer",
+ "dt_xml_freetext": "Fräien Text",
+ "importxml": "XML importéieren",
+ "dt_import_selectfile": "Sicht de(n) $1-Fichier eraus fir z'importéieren:",
+ "dt_import_encodingtype": "Encoding-Typ:",
+ "dt_import_forexisting": "Fir Säiten déi et scho gëtt:",
+ "dt_import_overwriteexisting": "Den Inhalt den et gëtt iwwerschreiwen",
+ "dt_import_mergeintoexisting": "Nëmme Felder iwwerschreiwen déi am Fichier dra sinn",
+ "dt_import_skipexisting": "Iwwersprangen",
+ "dt_import_appendtoexisting": "Bei den Inhalt deen et gëtt dobäisetzen",
+ "dt_import_summarydesc": "Resumé vum Import:",
+ "dt_import_editsummary": "{{ucfirst:$1}}-Import",
+ "dt_import_importing": "Import am gaang ...",
+ "dt_import_success": "$1 {{PLURAL:$1|Säit gëtt|Säite ginn}} aus dem $2-Fichier ugeluecht.",
+ "importcsv": "CSV importéieren",
+ "importspreadsheet": "Tabelleberechnungsblad importéieren",
+ "dt_importcsv_badheader": "Feeler: D'Iwwerschrëft vun der Kolonn $1, '$2', muss entweder '$3', '$4' oder am Format 'Numm_vun_der_Schabloun(Numm_vum_Feld)' sinn",
+ "right-datatransferimport": "Donnéeën importéieren",
+ "dt_filetype_spreadsheet": "Tabelleberechnungsblad"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/li.json b/www/wiki/extensions/DataTransfer/i18n/li.json
new file mode 100644
index 00000000..6d024cfe
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/li.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "Aelske",
+ "Remember the dot"
+ ]
+ },
+ "dt_xml_page": "Pagina"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/lki.json b/www/wiki/extensions/DataTransfer/i18n/lki.json
new file mode 100644
index 00000000..9f64ae35
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/lki.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Lakzon"
+ ]
+ },
+ "dt_xml_pages": "وةڵگةل"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/lt.json b/www/wiki/extensions/DataTransfer/i18n/lt.json
new file mode 100644
index 00000000..b69395bb
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/lt.json
@@ -0,0 +1,34 @@
+{
+ "@metadata": {
+ "authors": [
+ "Eitvys200",
+ "Tomasdd"
+ ]
+ },
+ "viewxml": "Žiūrėti XML",
+ "dt_viewxml_categories": "Kategorijos",
+ "dt_viewxml_simplifiedformat": "Supaprastintas formatas",
+ "dt_xml_namespace": "Vardų sritis",
+ "dt_xml_pages": "Puslapiai",
+ "dt_xml_page": "Puslapis",
+ "dt_xml_template": "Šablonas",
+ "dt_xml_field": "Laukas",
+ "dt_xml_name": "Vardas",
+ "dt_xml_title": "Pavadinimas",
+ "dt_xml_id": "ID",
+ "dt_xml_freetext": "Laisvas tekstas",
+ "importxml": "Importuoti XML",
+ "dt_import_selectfile": "Prašome pasirinkti $1 failą importavimui:",
+ "dt_import_encodingtype": "Kodavimo tipas:",
+ "dt_import_forexisting": "Puslapiams kurie jau egzistuoja:",
+ "dt_import_overwriteexisting": "Perrašyti egzistuojantį turinį",
+ "dt_import_skipexisting": "Praleisti",
+ "dt_import_summarydesc": "Importo santrauka:",
+ "dt_import_editsummary": "{{ucfirst:$1}} importas",
+ "dt_import_importing": "Importuojama...",
+ "dt_import_success": "$1 {{PLURAL:$1|puslapis bus sukurtas|puslapiai bus sukurti}} iš $2 failo.",
+ "importcsv": "Importuoti CSV",
+ "importspreadsheet": "Importuoti skaičiuoklę",
+ "right-datatransferimport": "Importuoti duomenis",
+ "dt_filetype_spreadsheet": "skaičiuoklė"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/ltg.json b/www/wiki/extensions/DataTransfer/i18n/ltg.json
new file mode 100644
index 00000000..0521eb85
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/ltg.json
@@ -0,0 +1,10 @@
+{
+ "@metadata": {
+ "authors": [
+ "Dark Eagle"
+ ]
+ },
+ "dt_viewxml_namespaces": "Vuordu pluoti",
+ "dt_xml_namespace": "Vuordu pluots",
+ "dt_xml_pages": "Puslopys"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/lv.json b/www/wiki/extensions/DataTransfer/i18n/lv.json
new file mode 100644
index 00000000..2bb45272
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/lv.json
@@ -0,0 +1,18 @@
+{
+ "@metadata": {
+ "authors": [
+ "GreenZeb"
+ ]
+ },
+ "dt_viewxml_categories": "Kategorijas",
+ "dt_viewxml_namespaces": "Vārdtelpas",
+ "dt_viewxml_simplifiedformat": "Vienkāršots formāts",
+ "dt_xml_namespace": "Vārdtelpa",
+ "dt_xml_pages": "Lapas",
+ "dt_xml_page": "Lapa",
+ "dt_xml_template": "Veidne",
+ "dt_xml_field": "Lauks",
+ "dt_xml_name": "Vārds",
+ "dt_xml_title": "Nosaukums",
+ "dt_xml_id": "ID"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/mhr.json b/www/wiki/extensions/DataTransfer/i18n/mhr.json
new file mode 100644
index 00000000..999356b4
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/mhr.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "Сай"
+ ]
+ },
+ "dt_xml_namespace": "Лӱм-влакын кумдыкышт",
+ "dt_xml_page": "Лаштык"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/min.json b/www/wiki/extensions/DataTransfer/i18n/min.json
new file mode 100644
index 00000000..eb11585f
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/min.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Iwan Novirion"
+ ]
+ },
+ "dt_import_importing": "Mangimpor..."
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/mk.json b/www/wiki/extensions/DataTransfer/i18n/mk.json
new file mode 100644
index 00000000..7c32f0c6
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/mk.json
@@ -0,0 +1,39 @@
+{
+ "@metadata": {
+ "authors": [
+ "Bjankuloski06"
+ ]
+ },
+ "datatransfer-desc": "Овозможува увоз и извоз на податоци содржани во повикувањата на шаблоните",
+ "viewxml": "Преглед на XML",
+ "dt_viewxml_docu": "Одберете од следиве категории и именски простори за преглед во XML формат.",
+ "dt_viewxml_categories": "Категории",
+ "dt_viewxml_namespaces": "Именски простори",
+ "dt_viewxml_simplifiedformat": "Упростен формат",
+ "dt_xml_namespace": "Именски простор",
+ "dt_xml_pages": "Страници",
+ "dt_xml_page": "Страница",
+ "dt_xml_template": "Шаблон",
+ "dt_xml_field": "Поле",
+ "dt_xml_name": "Име",
+ "dt_xml_title": "Наслов",
+ "dt_xml_id": "Назнака",
+ "dt_xml_freetext": "Слободен текст",
+ "importxml": "Увоз на XML",
+ "dt_import_selectfile": "Одберете ја $1 податотеката за увоз:",
+ "dt_import_encodingtype": "Тип на кодирање:",
+ "dt_import_forexisting": "За страници што веќе постојат:",
+ "dt_import_overwriteexisting": "Презапиши врз постоечките содржини",
+ "dt_import_mergeintoexisting": "Презапиши само врз полињата што се содржат во податотеката",
+ "dt_import_skipexisting": "Прескокни",
+ "dt_import_appendtoexisting": "Додај во постоечката содржина",
+ "dt_import_summarydesc": "Опис на увозот:",
+ "dt_import_editsummary": "Увоз на {{ucfirst:$1}}",
+ "dt_import_importing": "Увезувам...",
+ "dt_import_success": "$1 {{PLURAL:$1|страница ќе биде создадена|страници ќе бидат создадени}} од $2 податотеката.",
+ "importcsv": "Увоз на CSV",
+ "importspreadsheet": "Увези табеларна пресметка",
+ "dt_importcsv_badheader": "Грешка: насловот на столбот бр. $1, „$2“, мора да биде или „$3“, или „$4“, или пак од обликот „template_name[field_name]“",
+ "right-datatransferimport": "Увезување податоци",
+ "dt_filetype_spreadsheet": "табеларна пресметка"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/ml.json b/www/wiki/extensions/DataTransfer/i18n/ml.json
new file mode 100644
index 00000000..9ab03774
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/ml.json
@@ -0,0 +1,31 @@
+{
+ "@metadata": {
+ "authors": [
+ "Junaidpv",
+ "Praveenp",
+ "Shijualex"
+ ]
+ },
+ "viewxml": "XML കാണുക",
+ "dt_viewxml_categories": "വർഗ്ഗങ്ങൾ",
+ "dt_viewxml_namespaces": "നാമമേഖലകൾ",
+ "dt_viewxml_simplifiedformat": "ലളിതവത്ക്കരിക്കപ്പെട്ട ഫോർമാറ്റ്",
+ "dt_xml_namespace": "നാമമേഖല",
+ "dt_xml_pages": "താളുകൾ",
+ "dt_xml_page": "താൾ",
+ "dt_xml_template": "ഫലകം",
+ "dt_xml_field": "ഫീൽഡ്",
+ "dt_xml_name": "പേര്",
+ "dt_xml_title": "ശീർഷകം",
+ "dt_xml_id": "ഐ.ഡി.",
+ "dt_xml_freetext": "സ്വതന്ത്ര എഴുത്ത്",
+ "importxml": "എക്സ്.എം.എൽ. ഇറക്കുമതി",
+ "dt_import_selectfile": "ദയവായി ഇറക്കുമതിക്കായി $1 പ്രമാണം തിരഞ്ഞെടുക്കുക:",
+ "dt_import_encodingtype": "എൻ‌കോഡിങ് തരം:",
+ "dt_import_forexisting": "നിലവിലുള്ള താളുകൾക്ക് വേണ്ടി:",
+ "dt_import_appendtoexisting": "നിലവിലുള്ള ഉള്ളടക്കത്തോട് കൂട്ടിച്ചേർക്കുക",
+ "dt_import_summarydesc": "ഇറക്കുമതിയുടെ സംഗ്രഹം:",
+ "dt_import_editsummary": "$1 ഇറക്കുമതി",
+ "dt_import_importing": "ഇറക്കുമതി ചെയ്യുന്നു...",
+ "importcsv": "സി.എസ്.വി. ഇറക്കുമതി"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/mn.json b/www/wiki/extensions/DataTransfer/i18n/mn.json
new file mode 100644
index 00000000..0bb686e8
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/mn.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "Chinneeb"
+ ]
+ },
+ "dt_viewxml_categories": "Ангиллууд",
+ "dt_viewxml_namespaces": "Нэрний зайнууд",
+ "dt_xml_namespace": "Нэрний зай",
+ "dt_xml_page": "Хуудас"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/mr.json b/www/wiki/extensions/DataTransfer/i18n/mr.json
new file mode 100644
index 00000000..047978d9
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/mr.json
@@ -0,0 +1,25 @@
+{
+ "@metadata": {
+ "authors": [
+ "Kaustubh",
+ "V.narsikar"
+ ]
+ },
+ "datatransfer-desc": "साचा कॉल मध्ये असणार्‍या डाटाची आयात निर्यात करण्याची परवानगी देतो",
+ "viewxml": "XML पहा",
+ "dt_viewxml_docu": "कॄपया XML मध्ये पाहण्यासाठी खालीलपैकी वर्ग व नामविश्वे निवडा.",
+ "dt_viewxml_categories": "वर्ग",
+ "dt_viewxml_namespaces": "नामविश्वे",
+ "dt_viewxml_simplifiedformat": "सोपे प्रारुप",
+ "dt_xml_namespace": "नामविश्व",
+ "dt_xml_pages": "पाने",
+ "dt_xml_page": "पान",
+ "dt_xml_template": "साचा",
+ "dt_xml_field": "रकाना",
+ "dt_xml_name": "नाव",
+ "dt_xml_title": "शीर्षक",
+ "dt_xml_id": "आयडी",
+ "dt_xml_freetext": "मुक्त मजकूर",
+ "importxml": "एक्सएमएल आयात करा",
+ "dt_import_selectfile": "आयात करावयाची $1 संचिका निवडा:"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/ms.json b/www/wiki/extensions/DataTransfer/i18n/ms.json
new file mode 100644
index 00000000..0532f373
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/ms.json
@@ -0,0 +1,37 @@
+{
+ "@metadata": {
+ "authors": [
+ "Anakmalaysia"
+ ]
+ },
+ "datatransfer-desc": "Membolehkan pengimportan dan pengeksportan data yang terkandung dalam panggilan tempat",
+ "viewxml": "Paparkan XML",
+ "dt_viewxml_docu": "Sila pilih antara kategori-kategori dan ruang-ruang nama yang berikut untuk dipaparkan dalam format XML.",
+ "dt_viewxml_categories": "Kategori",
+ "dt_viewxml_namespaces": "Ruang nama",
+ "dt_viewxml_simplifiedformat": "Format ringkas",
+ "dt_xml_namespace": "Ruang nama",
+ "dt_xml_pages": "Halaman",
+ "dt_xml_page": "Laman",
+ "dt_xml_template": "Templat",
+ "dt_xml_field": "Medan",
+ "dt_xml_name": "Nama",
+ "dt_xml_title": "Tajuk",
+ "dt_xml_id": "ID",
+ "dt_xml_freetext": "Teks Bebas",
+ "importxml": "Import XML",
+ "dt_import_selectfile": "Sila pilih fail $1 yang hendak diimport:",
+ "dt_import_encodingtype": "Jenis pengekodan:",
+ "dt_import_forexisting": "Untuk halaman-halaman yang sedia ada:",
+ "dt_import_overwriteexisting": "Tulis ganti kandungan sedia ada",
+ "dt_import_mergeintoexisting": "Hanya tulis ganti medan-medan yang terkandung dalam fail",
+ "dt_import_skipexisting": "Langkau",
+ "dt_import_appendtoexisting": "Tambah kandungan sedia ada",
+ "dt_import_summarydesc": "Ringkasan pengimportan:",
+ "dt_import_editsummary": "Pengimportan $1",
+ "dt_import_importing": "Sedang mengimport...",
+ "dt_import_success": "$1 halaman akan dibuat dari fail $2.",
+ "importcsv": "Import CSV",
+ "dt_importcsv_badheader": "Ralat: pengatas lajur $1, '$2', mestilah sama ada '$3', '$4' atau dalam bentuk 'nama_templat[nama_medan]'",
+ "right-datatransferimport": "Mengimport data"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/mt.json b/www/wiki/extensions/DataTransfer/i18n/mt.json
new file mode 100644
index 00000000..05df02c9
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/mt.json
@@ -0,0 +1,37 @@
+{
+ "@metadata": {
+ "authors": [
+ "Chrisportelli",
+ "Leli Forte"
+ ]
+ },
+ "datatransfer-desc": "Tippermetti l-importazzjoni u l-esportazzjoni ta' dejta li tinsab f'sejħiet ta' mudelli",
+ "viewxml": "Ara XML",
+ "dt_viewxml_docu": "Jekk jogħġbok agħżel fost il-kategoriji u l-ispazji tal-isem segwenti sabiex tarahom f'format XML.",
+ "dt_viewxml_categories": "Kategoriji",
+ "dt_viewxml_namespaces": "Spazji tal-isem",
+ "dt_viewxml_simplifiedformat": "Format simplifikat",
+ "dt_xml_namespace": "Spazju tal-ismijiet",
+ "dt_xml_pages": "Paġni",
+ "dt_xml_page": "Paġna",
+ "dt_xml_template": "Mudell",
+ "dt_xml_field": "Qasam",
+ "dt_xml_name": "Isem",
+ "dt_xml_title": "Titlu",
+ "dt_xml_id": "ID",
+ "dt_xml_freetext": "Test ħieles",
+ "importxml": "Importa XML",
+ "dt_import_selectfile": "Jekk jogħġbok agħżel il-fajl $1 li tixtieq timporta:",
+ "dt_import_encodingtype": "Tip ta' kodifikar:",
+ "dt_import_forexisting": "Għal paġni li diġà jeżistu:",
+ "dt_import_overwriteexisting": "Erġa' ikteb fuq kontenut eżistenti",
+ "dt_import_skipexisting": "Aqbeż",
+ "dt_import_appendtoexisting": "Żid mal-kontenut eżistenti",
+ "dt_import_summarydesc": "Sommarju tal-importazzjoni:",
+ "dt_import_editsummary": "Importazzjoni $1",
+ "dt_import_importing": "Qiegħed timporta...",
+ "dt_import_success": "$1 {{PLURAL:$1|paġna|paġni}} se jinħolqu mill-fajl $2.",
+ "importcsv": "Importa CSV",
+ "dt_importcsv_badheader": "Żball: l-intestazzjoni tal-kolonna $1, \"$2\", trid tkun waħda minn dawn il-valuri: '$3', '$4' jew fil-format ta' 'isem_mudell[isem_qasam]'",
+ "right-datatransferimport": "Jimporta d-dejta"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/mwl.json b/www/wiki/extensions/DataTransfer/i18n/mwl.json
new file mode 100644
index 00000000..9b4bdca8
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/mwl.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Malafaya"
+ ]
+ },
+ "dt_xml_page": "Páigina"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/my.json b/www/wiki/extensions/DataTransfer/i18n/my.json
new file mode 100644
index 00000000..10242fe8
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/my.json
@@ -0,0 +1,16 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ninjastrikers",
+ "Dr Lotus Black"
+ ]
+ },
+ "dt_viewxml_categories": "ကဏ္ဍများ",
+ "dt_viewxml_namespaces": "အမည်ညွှန်းများ",
+ "dt_xml_namespace": "အမည်ညွှန်း",
+ "dt_xml_pages": "စာမျက်နှာများ",
+ "dt_xml_page": "စာမျက်နှာ",
+ "dt_xml_template": "တမ်းပလိတ်",
+ "dt_xml_name": "အမည်",
+ "dt_import_skipexisting": "ကျော်ရန်"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/myv.json b/www/wiki/extensions/DataTransfer/i18n/myv.json
new file mode 100644
index 00000000..c52a91d7
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/myv.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": [
+ "Botuzhaleny-sodamo"
+ ]
+ },
+ "dt_viewxml_categories": "Категорият",
+ "dt_viewxml_namespaces": "Лем потмот",
+ "dt_xml_namespace": "Лемпотмо",
+ "dt_xml_page": "Лопа",
+ "dt_xml_template": "Лопа парцун",
+ "dt_xml_field": "Пакся",
+ "dt_xml_name": "Лемезэ",
+ "dt_xml_title": "Конякс"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/mzn.json b/www/wiki/extensions/DataTransfer/i18n/mzn.json
new file mode 100644
index 00000000..7783988e
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/mzn.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "محک"
+ ]
+ },
+ "dt_viewxml_categories": "رج‌ئون"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/nah.json b/www/wiki/extensions/DataTransfer/i18n/nah.json
new file mode 100644
index 00000000..e5290ccc
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/nah.json
@@ -0,0 +1,16 @@
+{
+ "@metadata": {
+ "authors": [
+ "Fluence",
+ "Teòtlalili",
+ "Akapochtli"
+ ]
+ },
+ "dt_viewxml_categories": "Neneuhcayomeh",
+ "dt_viewxml_namespaces": "Tōcātzin",
+ "dt_xml_namespace": "Tōcātzin",
+ "dt_xml_page": "Tlahcuilolamatl",
+ "dt_xml_name": "Tocaitl",
+ "dt_xml_title": "Tocaitl",
+ "dt_xml_id": "ID"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/nb.json b/www/wiki/extensions/DataTransfer/i18n/nb.json
new file mode 100644
index 00000000..621ec94d
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/nb.json
@@ -0,0 +1,42 @@
+{
+ "@metadata": {
+ "authors": [
+ "Event",
+ "Nghtwlkr",
+ "Emilbk",
+ "Jon Harald Søby"
+ ]
+ },
+ "datatransfer-desc": "Gjør det mulig å importere og eksportere data som finnes i maloppkallinger",
+ "viewxml": "Se XML",
+ "dt_viewxml_docu": "Velg blant følgende kategorier og navnerom for å se dem i XML-format.",
+ "dt_viewxml_categories": "Kategorier",
+ "dt_viewxml_namespaces": "Navnerom",
+ "dt_viewxml_simplifiedformat": "Forenklet format",
+ "dt_xml_namespace": "Navnerom",
+ "dt_xml_pages": "Sider",
+ "dt_xml_page": "Side",
+ "dt_xml_template": "Mal",
+ "dt_xml_field": "Felt",
+ "dt_xml_name": "Navn",
+ "dt_xml_title": "Tittel",
+ "dt_xml_id": "ID",
+ "dt_xml_freetext": "Fritekst",
+ "importxml": "Importer XML",
+ "dt_import_selectfile": "Vennligst velg $1-filen som skal importeres:",
+ "dt_import_encodingtype": "Tegnkodingstype:",
+ "dt_import_forexisting": "For sider som allerede finnes:",
+ "dt_import_overwriteexisting": "Skriv over eksisterende innhold",
+ "dt_import_mergeintoexisting": "Overskriv bare felter som inngår i filen",
+ "dt_import_skipexisting": "Hopp over",
+ "dt_import_appendtoexisting": "Tilføy til eksisterende innhold",
+ "dt_import_summarydesc": "Importsammendrag:",
+ "dt_import_editsummary": "{{ucfirst:$1}}-importering",
+ "dt_import_importing": "Importerer...",
+ "dt_import_success": "{{PLURAL:$1|Én side|$1 sider}} vil bli importert fra $2-filen.",
+ "importcsv": "Importer CSV",
+ "importspreadsheet": "Importer regneark",
+ "dt_importcsv_badheader": "Feil: kolonneoverskriften $1, '$2', må være enten '$3', '$4' eller på formen 'malnavn[feltnavn]'",
+ "right-datatransferimport": "Importer data",
+ "dt_filetype_spreadsheet": "regneark"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/nds.json b/www/wiki/extensions/DataTransfer/i18n/nds.json
new file mode 100644
index 00000000..dc503d91
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/nds.json
@@ -0,0 +1,17 @@
+{
+ "@metadata": {
+ "authors": [
+ "Joachim Mos",
+ "Slomox"
+ ]
+ },
+ "dt_viewxml_categories": "Kategorien",
+ "dt_viewxml_namespaces": "Naamrüüm",
+ "dt_xml_namespace": "Naamruum",
+ "dt_xml_pages": "Sieden",
+ "dt_xml_page": "Sied",
+ "dt_xml_template": "Vörlaag",
+ "dt_xml_name": "Naam",
+ "dt_xml_title": "Titel",
+ "dt_xml_id": "ID"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/nl.json b/www/wiki/extensions/DataTransfer/i18n/nl.json
new file mode 100644
index 00000000..0a92d68d
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/nl.json
@@ -0,0 +1,42 @@
+{
+ "@metadata": {
+ "authors": [
+ "Siebrand",
+ "Tvdm",
+ "Sjoerddebruin",
+ "Esketti"
+ ]
+ },
+ "datatransfer-desc": "Maakt het importeren en exporteren van gestructureerde gegevens in sjabloonaanroepen mogelijk",
+ "viewxml": "XML bekijken",
+ "dt_viewxml_docu": "Selecteer uit de volgende categorieën en naamruimten om in XML-formaat te bekijken.",
+ "dt_viewxml_categories": "Categorieën",
+ "dt_viewxml_namespaces": "Naamruimten",
+ "dt_viewxml_simplifiedformat": "Vereenvoudigd formaat",
+ "dt_xml_namespace": "Naamruimte",
+ "dt_xml_pages": "Pagina's",
+ "dt_xml_page": "Pagina",
+ "dt_xml_template": "Sjabloon",
+ "dt_xml_field": "Veld",
+ "dt_xml_name": "Naam",
+ "dt_xml_title": "Titel",
+ "dt_xml_id": "ID",
+ "dt_xml_freetext": "Vrije tekst",
+ "importxml": "XML importeren",
+ "dt_import_selectfile": "Selecteer het te importeren bestand van het type $1:",
+ "dt_import_encodingtype": "Coderingstype:",
+ "dt_import_forexisting": "Voor pagina's die al bestaan:",
+ "dt_import_overwriteexisting": "Bestaande inhoud overschrijven",
+ "dt_import_mergeintoexisting": "Alleen velden uit het bestand overschrijven",
+ "dt_import_skipexisting": "Overslaan",
+ "dt_import_appendtoexisting": "Toevoegen aan bestaande inhoud",
+ "dt_import_summarydesc": "Samenvatting van de import:",
+ "dt_import_editsummary": "{{ucfirst:$1}}-import",
+ "dt_import_importing": "Bezig met importeren…",
+ "dt_import_success": "Uit het $2-bestand {{PLURAL:$1|wordt één pagina|worden $1 pagina's}} geïmporteerd.",
+ "importcsv": "CSV importeren",
+ "importspreadsheet": "Werkblad importeren",
+ "dt_importcsv_badheader": "Fout: De kop van kolom $1, \"$2\", moet \"$3\" of \"$4\" zijn, of in de vorm \"sjabloonnaam[veldnaam]\" genoteerd worden.",
+ "right-datatransferimport": "Gegevens importeren",
+ "dt_filetype_spreadsheet": "spreadsheet"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/nn.json b/www/wiki/extensions/DataTransfer/i18n/nn.json
new file mode 100644
index 00000000..bf1eb95c
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/nn.json
@@ -0,0 +1,34 @@
+{
+ "@metadata": {
+ "authors": [
+ "Gunnernett",
+ "Harald Khan",
+ "Jon Harald Søby",
+ "Njardarlogar"
+ ]
+ },
+ "datatransfer-desc": "Gjer det mogleg å importera og eksportera data i maloppkallingar",
+ "viewxml": "Syn XML",
+ "dt_viewxml_docu": "Vel mellom følgjande kategoriar og namnerom for å syna dei i XML-format.",
+ "dt_viewxml_categories": "Kategoriar",
+ "dt_viewxml_namespaces": "Namnerom",
+ "dt_viewxml_simplifiedformat": "Forenkla format",
+ "dt_xml_namespace": "Namnerom",
+ "dt_xml_pages": "Sider",
+ "dt_xml_page": "Side",
+ "dt_xml_template": "Mal",
+ "dt_xml_field": "Felt",
+ "dt_xml_name": "Namn",
+ "dt_xml_title": "Tittel",
+ "dt_xml_id": "ID",
+ "dt_xml_freetext": "Fritekst",
+ "importxml": "Importer XML",
+ "dt_import_selectfile": "Ver venleg og vel $1-fila som skal verta importert:",
+ "dt_import_encodingtype": "Teiknkodingstype:",
+ "dt_import_editsummary": "$1-importering",
+ "dt_import_importing": "Importerer...",
+ "dt_import_success": "$1 {{PLURAL:$1|Éi side vil verta importert|$1 sider vil verta importerte}} frå $2-fila.",
+ "importcsv": "Importer CSV",
+ "dt_importcsv_badheader": "Feil: kolonneoverskrifta $1, '$2', må vera anten '$3', '$4' eller på forma 'malnamn[feltnamn]'",
+ "right-datatransferimport": "Importer data"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/oc.json b/www/wiki/extensions/DataTransfer/i18n/oc.json
new file mode 100644
index 00000000..2c37c065
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/oc.json
@@ -0,0 +1,34 @@
+{
+ "@metadata": {
+ "authors": [
+ "Cedric31"
+ ]
+ },
+ "datatransfer-desc": "Permet l’impòrt e l’expòrt de donadas contengudas dins d'apèls de modèls",
+ "viewxml": "Veire XML",
+ "dt_viewxml_docu": "Seleccionatz demest las categorias e los espacis de nomenatges per visionar en format XML.",
+ "dt_viewxml_categories": "Categorias",
+ "dt_viewxml_namespaces": "Espacis de nomenatge",
+ "dt_viewxml_simplifiedformat": "Format simplificat",
+ "dt_xml_namespace": "Espaci de nom",
+ "dt_xml_pages": "Paginas",
+ "dt_xml_page": "Pagina",
+ "dt_xml_template": "Modèl",
+ "dt_xml_field": "Camp",
+ "dt_xml_name": "Nom",
+ "dt_xml_title": "Títol",
+ "dt_xml_id": "ID",
+ "dt_xml_freetext": "Tèxte Liure",
+ "importxml": "Impòrt en XML",
+ "dt_import_selectfile": "Seleccionatz lo fichièr $1 d'importar :",
+ "dt_import_encodingtype": "Tipe d’encodatge:",
+ "dt_import_forexisting": "Per las paginas qu'existisson ja :",
+ "dt_import_skipexisting": "Passar",
+ "dt_import_summarydesc": "Resumit de l’impòrt :",
+ "dt_import_editsummary": "importar en {{ucfirst:$1}}",
+ "dt_import_importing": "Impòrt en cors...",
+ "dt_import_success": "$1 {{PLURAL:$1|pagina serà creada|paginas seràn creadas}} dempuèi lo fichièr $2.",
+ "importcsv": "Impòrt CSV",
+ "dt_importcsv_badheader": "Error : lo títol de colomna $1, « $2 », deu èsser siá « $3 », « $4 » o de la forma « nom_del_modèl[nom_del_camp] »",
+ "right-datatransferimport": "Importar de donadas"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/or.json b/www/wiki/extensions/DataTransfer/i18n/or.json
new file mode 100644
index 00000000..d3b36281
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/or.json
@@ -0,0 +1,17 @@
+{
+ "@metadata": {
+ "authors": [
+ "Odisha1",
+ "Psubhashish"
+ ]
+ },
+ "dt_viewxml_categories": "ଶ୍ରେଣୀସମୂହ",
+ "dt_xml_pages": "ପୃଷ୍ଠା",
+ "dt_xml_page": "ପୃଷ୍ଠା",
+ "dt_xml_template": "ଛାଞ୍ଚ",
+ "dt_xml_field": "କ୍ଷେତ୍ର",
+ "dt_xml_name": "ନାମ",
+ "dt_xml_title": "ଶିରୋନାମା",
+ "dt_xml_id": "ପରିଚୟ",
+ "dt_import_editsummary": "$1 ଆମଦାନୀ"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/os.json b/www/wiki/extensions/DataTransfer/i18n/os.json
new file mode 100644
index 00000000..4a9453e5
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/os.json
@@ -0,0 +1,10 @@
+{
+ "@metadata": {
+ "authors": [
+ "Amikeco"
+ ]
+ },
+ "dt_xml_page": "Фарс",
+ "dt_xml_template": "Шаблон",
+ "dt_xml_title": "Сæргонд"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/pdc.json b/www/wiki/extensions/DataTransfer/i18n/pdc.json
new file mode 100644
index 00000000..d9b19a32
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/pdc.json
@@ -0,0 +1,16 @@
+{
+ "@metadata": {
+ "authors": [
+ "Xqt",
+ "Purodha"
+ ]
+ },
+ "dt_viewxml_categories": "Abdeelinge",
+ "dt_viewxml_namespaces": "Blatznaame",
+ "dt_xml_namespace": "Blatznaame",
+ "dt_xml_pages": "Bledder",
+ "dt_xml_page": "Blatt",
+ "dt_xml_template": "Moddel",
+ "dt_xml_name": "Naame",
+ "dt_xml_title": "Titel"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/pl.json b/www/wiki/extensions/DataTransfer/i18n/pl.json
new file mode 100644
index 00000000..aaf785b7
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/pl.json
@@ -0,0 +1,41 @@
+{
+ "@metadata": {
+ "authors": [
+ "McMonster",
+ "Sp5uhe",
+ "Wpedzich",
+ "Chrumps"
+ ]
+ },
+ "datatransfer-desc": "Pozwala na importowanie i eksportowanie danych zawartych w wywołaniach szablonu",
+ "viewxml": "Podgląd XML",
+ "dt_viewxml_docu": "Wybierz, które spośród następujących kategorii i przestrzeni nazw chcesz podejrzeć w formacie XML.",
+ "dt_viewxml_categories": "Kategorie",
+ "dt_viewxml_namespaces": "Przestrzenie nazw",
+ "dt_viewxml_simplifiedformat": "Format uproszczony",
+ "dt_xml_namespace": "Przestrzeń nazw",
+ "dt_xml_pages": "Strony",
+ "dt_xml_page": "Strona",
+ "dt_xml_template": "Szablon",
+ "dt_xml_field": "Pole",
+ "dt_xml_name": "Nazwa",
+ "dt_xml_title": "Tytuł",
+ "dt_xml_id": "ID",
+ "dt_xml_freetext": "Dowolny tekst",
+ "importxml": "Import XML",
+ "dt_import_selectfile": "Wybierz plik $1 do zaimportowania",
+ "dt_import_encodingtype": "Typ kodowania",
+ "dt_import_forexisting": "Dla stron, które już istnieją:",
+ "dt_import_overwriteexisting": "Zastąp istniejącą zawartość",
+ "dt_import_skipexisting": "Pomiń",
+ "dt_import_appendtoexisting": "Dołącz do istniejącej zawartości",
+ "dt_import_summarydesc": "Podsumowanie importu",
+ "dt_import_editsummary": "Import {{ucfirst:$1}}",
+ "dt_import_importing": "Importowanie...",
+ "dt_import_success": "$1 {{PLURAL:$1|strona zostanie utworzona|strony zostaną utworzone|stron zostanie utworzonych}} z pliku $2.",
+ "importcsv": "Import CSV",
+ "importspreadsheet": "Import arkusza kalkulacyjnego",
+ "dt_importcsv_badheader": "Błąd – w kolumnie $1 nagłówka jest „$2”, a powinno być: „$3”, „$4” lub „nazwa_szablonu[nazwa_pola]”",
+ "right-datatransferimport": "Importowanie danych",
+ "dt_filetype_spreadsheet": "arkusz kalkulacyjny"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/pms.json b/www/wiki/extensions/DataTransfer/i18n/pms.json
new file mode 100644
index 00000000..a5f3e081
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/pms.json
@@ -0,0 +1,37 @@
+{
+ "@metadata": {
+ "authors": [
+ "Borichèt",
+ "Dragonòt"
+ ]
+ },
+ "datatransfer-desc": "A përmëtt d'amporté e esporté ij dat contnù ant le ciamà a stamp",
+ "viewxml": "Varda XML",
+ "dt_viewxml_docu": "Për piasì selession-a an tra le categorìe sota e jë spassi nominaj për vëdde an formà XLM.",
+ "dt_viewxml_categories": "Categorìe",
+ "dt_viewxml_namespaces": "Spassi nominaj",
+ "dt_viewxml_simplifiedformat": "Formà semplificà",
+ "dt_xml_namespace": "Spassi nominal",
+ "dt_xml_pages": "Pàgine",
+ "dt_xml_page": "Pàgina",
+ "dt_xml_template": "Stamp",
+ "dt_xml_field": "Camp",
+ "dt_xml_name": "Nòm",
+ "dt_xml_title": "Tìtol",
+ "dt_xml_id": "ID",
+ "dt_xml_freetext": "Test lìber",
+ "importxml": "Ampòrta XML",
+ "dt_import_selectfile": "Për piasì selession-a ël file $1 da amporté:",
+ "dt_import_encodingtype": "Tipo ëd codìfica:",
+ "dt_import_forexisting": "Për pàgine ch'a esisto già:",
+ "dt_import_overwriteexisting": "Coaté ël contnù esistent",
+ "dt_import_skipexisting": "Saoté",
+ "dt_import_appendtoexisting": "Gionté al contnù esistent",
+ "dt_import_summarydesc": "Somari dj'amportassion:",
+ "dt_import_editsummary": "$1 ampòrta",
+ "dt_import_importing": "An camin ch'as ampòrta...",
+ "dt_import_success": "$1 {{PLURAL:$1|pàgina|pàgine}} a saran creà da l'archivi $2.",
+ "importcsv": "Ampòrta CSV",
+ "dt_importcsv_badheader": "Eror: l'antestassion ëd la colòna $1, '$2', a deuv esse '$3', '$4' o ëd la forma 'template_name[field_name]'",
+ "right-datatransferimport": "Ampòrta dat"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/ps.json b/www/wiki/extensions/DataTransfer/i18n/ps.json
new file mode 100644
index 00000000..92e7aac6
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/ps.json
@@ -0,0 +1,20 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ahmed-Najib-Biabani-Ibrahimkhel"
+ ]
+ },
+ "viewxml": "XML کتل",
+ "dt_viewxml_categories": "وېشنيزې",
+ "dt_viewxml_namespaces": "نوم-تشيالونه",
+ "dt_viewxml_simplifiedformat": "ساده بڼه",
+ "dt_xml_namespace": "نوم-تشيال",
+ "dt_xml_pages": "مخونه",
+ "dt_xml_page": "مخ",
+ "dt_xml_template": "کينډۍ",
+ "dt_xml_name": "نوم",
+ "dt_xml_title": "سرليک",
+ "dt_xml_id": "پېژند",
+ "dt_xml_freetext": "خپلواکه متن",
+ "dt_import_skipexisting": "تېرېدل"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/pt-br.json b/www/wiki/extensions/DataTransfer/i18n/pt-br.json
new file mode 100644
index 00000000..49425cdd
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/pt-br.json
@@ -0,0 +1,46 @@
+{
+ "@metadata": {
+ "authors": [
+ "Eduardo.mps",
+ "Giro720",
+ "Jaideraf",
+ "555",
+ "Fabsouza1",
+ "Smmvinicius",
+ "V6rg",
+ "C.R."
+ ]
+ },
+ "datatransfer-desc": "Permite a importação e exportação de dados contidos em chamadas de predefinições",
+ "viewxml": "Ver XML",
+ "dt_viewxml_docu": "Selecione entre as categorias e espaços nominais a seguir para ver em formato XML.",
+ "dt_viewxml_categories": "Categorias",
+ "dt_viewxml_namespaces": "Namespaces",
+ "dt_viewxml_simplifiedformat": "Formato simplificado",
+ "dt_xml_namespace": "Namespace",
+ "dt_xml_pages": "Páginas",
+ "dt_xml_page": "Página",
+ "dt_xml_template": "Modelo",
+ "dt_xml_field": "Campo",
+ "dt_xml_name": "Nome",
+ "dt_xml_title": "Titulo",
+ "dt_xml_id": "ID",
+ "dt_xml_freetext": "Free Text",
+ "importxml": "Importar XML",
+ "dt_import_selectfile": "Selecione o arquivo $1 para importar:",
+ "dt_import_encodingtype": "Codificação:",
+ "dt_import_forexisting": "Para páginas que já existem:",
+ "dt_import_overwriteexisting": "Sobrescrever o conteúdo existente",
+ "dt_import_mergeintoexisting": "Sobrescreva apenas campos contidos no arquivo",
+ "dt_import_skipexisting": "Pular",
+ "dt_import_appendtoexisting": "Adicionar ao conteúdo existente",
+ "dt_import_summarydesc": "Resumo da importação:",
+ "dt_import_editsummary": "Importação de {{ucfirst:$1}}",
+ "dt_import_importing": "Importando...",
+ "dt_import_success": "$1 {{PLURAL:$1|página será importada|páginas serão importadas}} do arquivo $2.",
+ "importcsv": "Importar CSV",
+ "importspreadsheet": "Importar planilha",
+ "dt_importcsv_badheader": "Erro: o cabeçalho da coluna $1, '$2', deve ser '$3', ou '$4' ou da forma 'nome_da_predefinição[nome_do_campo]'",
+ "right-datatransferimport": "Importar dados",
+ "dt_filetype_spreadsheet": "planilha"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/pt.json b/www/wiki/extensions/DataTransfer/i18n/pt.json
new file mode 100644
index 00000000..dfdd41e6
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/pt.json
@@ -0,0 +1,44 @@
+{
+ "@metadata": {
+ "authors": [
+ "Hamilton Abreu",
+ "Lijealso",
+ "Luckas",
+ "Malafaya",
+ "Fúlvio",
+ "Vitorvicentevalente"
+ ]
+ },
+ "datatransfer-desc": "Permite importação e exportação de dados contidos em chamadas de predefinições",
+ "viewxml": "Ver XML",
+ "dt_viewxml_docu": "Por favor, selecione de entre as categorias e espaços nominais seguintes para ver em formato XML.",
+ "dt_viewxml_categories": "Categorias",
+ "dt_viewxml_namespaces": "Espaços nominais",
+ "dt_viewxml_simplifiedformat": "Formato simplificado",
+ "dt_xml_namespace": "Espaço nominal",
+ "dt_xml_pages": "Páginas",
+ "dt_xml_page": "Página",
+ "dt_xml_template": "Predefinição",
+ "dt_xml_field": "Campo",
+ "dt_xml_name": "Nome",
+ "dt_xml_title": "Título",
+ "dt_xml_id": "ID",
+ "dt_xml_freetext": "Texto Livre",
+ "importxml": "Importar XML",
+ "dt_import_selectfile": "Por favor, selecione o ficheiro $1 a importar:",
+ "dt_import_encodingtype": "Tipo de codificação:",
+ "dt_import_forexisting": "Para páginas que já existem:",
+ "dt_import_overwriteexisting": "Sobrescrever o conteúdo existente",
+ "dt_import_mergeintoexisting": "Sobrescrever apenas os campos contidos no ficheiro",
+ "dt_import_skipexisting": "Saltar",
+ "dt_import_appendtoexisting": "Acrescentar ao conteúdo existente",
+ "dt_import_summarydesc": "Resumo da importação:",
+ "dt_import_editsummary": "Importação de {{ucfirst:$1}}",
+ "dt_import_importing": "Importando...",
+ "dt_import_success": "{{PLURAL:$1|A página será importada|As páginas serão importadas}} a partir do ficheiro $2.",
+ "importcsv": "Importar CSV",
+ "importspreadsheet": "Importar folha de cálculo",
+ "dt_importcsv_badheader": "Erro: o cabeçalho da coluna $1, '$2', deve ser '$3', '$4' ou ter a forma 'nome_da_predefinição[nome_do_campo]'",
+ "right-datatransferimport": "Importar dados",
+ "dt_filetype_spreadsheet": "folha de cálculo"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/qqq.json b/www/wiki/extensions/DataTransfer/i18n/qqq.json
new file mode 100644
index 00000000..a6a60b7b
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/qqq.json
@@ -0,0 +1,49 @@
+{
+ "@metadata": {
+ "authors": [
+ "EugeneZelenko",
+ "Fryed-peach",
+ "Jon Harald Søby",
+ "Kghbln",
+ "Purodha",
+ "Raymond",
+ "Shirayuki",
+ "Siebrand",
+ "Umherirrender"
+ ]
+ },
+ "datatransfer-desc": "{{Desc|name=Data Transfer|url=https://www.mediawiki.org/wiki/Extension:Data_Transfer}}",
+ "viewxml": "{{doc-special|ViewXML|unlisted=1}}",
+ "dt_viewxml_docu": "Used as heading of the form.\n\nThis message is followed by HTML <code><nowiki><h2></nowiki></code> heading {{msg-mw|Dt viewxml categories}}.",
+ "dt_viewxml_categories": "{{Identical|Category}}",
+ "dt_viewxml_namespaces": "{{Identical|Namespace}}",
+ "dt_viewxml_simplifiedformat": "Used as checkbox label in the \"View XML\" form.\n\nIf enabled, the extension generates simplified XML.",
+ "dt_xml_namespace": "Used as XML tag name.\n{{Identical|Namespace}}",
+ "dt_xml_pages": "Used as XML tag name.\n{{Identical|Page}}",
+ "dt_xml_page": "Used as XML tag name.\n{{Identical|Page}}",
+ "dt_xml_template": "Used as XML tag name.\n{{Identical|Template}}",
+ "dt_xml_field": "Used as XML tag name.\n{{Identical|Field}}",
+ "dt_xml_name": "Used as XML tag name.\n{{Identical|Name}}",
+ "dt_xml_title": "Used as XML tag name.\n{{Identical|Title}}",
+ "dt_xml_id": "Used as XML tag name.\n{{Identical|ID}}",
+ "dt_xml_freetext": "Used as XML tag name.\n{{Identical|Free text}}",
+ "importxml": "{{doc-special|ImportXML|unlisted=1}}",
+ "dt_import_selectfile": "Used as label for the File selector. Parameters:\n* $1 - the file format: CSV, XML or spreadsheet",
+ "dt_import_encodingtype": "The type of encoding for the file: either UTF-8 or UTF-16",
+ "dt_import_forexisting": "This message is followed by the following radio boxes:\n* {{msg-mw|Dt import overwriteexisting}}\n* {{msg-mw|Dt import mergeintoexisting}}\n* {{msg-mw|Dt import skipexisting}}\n* {{msg-mw|Dt import appendtoexisting}}",
+ "dt_import_overwriteexisting": "Used as label for the radiobutton.\n{{Related|Dt import forexisting}}",
+ "dt_import_mergeintoexisting": "Used as label for the radiobutton.\n{{Related|Dt import forexisting}}",
+ "dt_import_skipexisting": "Used as label for the radiobutton.\n{{Related|Dt import forexisting}}\n{{Identical|Skip}}",
+ "dt_import_appendtoexisting": "Used as label for the radiobutton.\n{{Related|Dt import forexisting}}",
+ "dt_import_summarydesc": "Used as label for the \"Summary text of import\" input box.\n\nThe default value of the input box is {{msg-mw|Dt import editsummary}}.",
+ "dt_import_editsummary": "This message is part of the editsummary. It prints the result of the import in the version history of the respective page content was imported to.\n\nParameters:\n* $1 - the file format: CSV, XML or spreadsheet\n{{Identical|Import}}",
+ "dt_import_importing": "This message indicates the extension is currently importing a CSV file (or an XML file).\n{{Identical|Importing}}",
+ "dt_import_success": "Parameters:\n* $1 - the number of pages\n* $2 - the file format: CSV, XML or spreadsheet",
+ "importcsv": "{{doc-special|ImportCSV|unlisted=1}}\nCSV (comma separated value)",
+ "importspreadsheet": "{{doc-special|ImportSpreadsheet|unlisted=1}}",
+ "dt_importcsv_badheader": "The text \"template_name[field_name]\" can be translated. Parameters:\n* $1 - a column number in the first row of the CVS file\n* $2 - the value found for the $1th column in the first line of the CSV file\n* $3 - the title label\n* $4 - a free text label",
+ "right-datatransferimport": "{{doc-right|datatransferimport}}",
+ "dt_filetype_xml": "The type of the file that is to be imported. This is a descriptive name, NOT a file extension.",
+ "dt_filetype_csv": "The type of the file that is to be imported. This is a descriptive name, NOT a file extension.",
+ "dt_filetype_spreadsheet": "The type of the file that is to be imported. This is a descriptive name, NOT a file extension. Patchwork message with {{msg-mw|Dt import editsummary}} as suffix."
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/ro.json b/www/wiki/extensions/DataTransfer/i18n/ro.json
new file mode 100644
index 00000000..7e3d924b
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/ro.json
@@ -0,0 +1,31 @@
+{
+ "@metadata": {
+ "authors": [
+ "KlaudiuMihaila",
+ "Minisarm",
+ "Stelistcristi"
+ ]
+ },
+ "viewxml": "Vizualizează XML",
+ "dt_viewxml_categories": "Categorii",
+ "dt_viewxml_namespaces": "Spații de nume",
+ "dt_viewxml_simplifiedformat": "Format simplificat",
+ "dt_xml_namespace": "Spațiu de nume",
+ "dt_xml_pages": "Pagini",
+ "dt_xml_page": "Pagină",
+ "dt_xml_template": "Format",
+ "dt_xml_field": "Câmp",
+ "dt_xml_name": "Nume",
+ "dt_xml_title": "Titlu",
+ "dt_xml_id": "ID",
+ "dt_xml_freetext": "Text liber",
+ "importxml": "Importă XML",
+ "dt_import_encodingtype": "Tipul de codificare:",
+ "dt_import_forexisting": "Pentru pagini care există deja:",
+ "dt_import_skipexisting": "Omite",
+ "dt_import_summarydesc": "Descrierea importului:",
+ "dt_import_editsummary": "Importare {{ucfirst:$1}}",
+ "dt_import_importing": "Importare...",
+ "importcsv": "Importă CSV",
+ "right-datatransferimport": "Importă date"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/roa-tara.json b/www/wiki/extensions/DataTransfer/i18n/roa-tara.json
new file mode 100644
index 00000000..8ecd0140
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/roa-tara.json
@@ -0,0 +1,39 @@
+{
+ "@metadata": {
+ "authors": [
+ "Joetaras"
+ ]
+ },
+ "datatransfer-desc": "Permètte de 'mbortà e esportà date strutturate ca stonne jndr'à le chiamate a le template",
+ "viewxml": "Vide l'XML",
+ "dt_viewxml_docu": "Pe piacere scacchie ìmbrà le categorije seguende e le namespace seguende pe vedè 'u formate XML.",
+ "dt_viewxml_categories": "Categorije",
+ "dt_viewxml_namespaces": "Namespace",
+ "dt_viewxml_simplifiedformat": "Formate semblifichete",
+ "dt_xml_namespace": "Namespace",
+ "dt_xml_pages": "Pàggene",
+ "dt_xml_page": "Pàgene",
+ "dt_xml_template": "Template",
+ "dt_xml_field": "Cambe",
+ "dt_xml_name": "Nome",
+ "dt_xml_title": "Titele",
+ "dt_xml_id": "Codece (ID)",
+ "dt_xml_freetext": "Teste libbere",
+ "importxml": "'Mborte XML",
+ "dt_import_selectfile": "Pe piacere scacchia 'u file $1 da 'mbortà:",
+ "dt_import_encodingtype": "Tipe de codifeche:",
+ "dt_import_forexisting": "Pe le pàggene ca ggià esistene:",
+ "dt_import_overwriteexisting": "Sovrascrive 'u condenute ca esiste",
+ "dt_import_mergeintoexisting": "Sovrascrive sulamende le cambe ca stonne jndr'à 'u file",
+ "dt_import_skipexisting": "Zumbe",
+ "dt_import_appendtoexisting": "'Nzicche a 'u condenute ca esiste",
+ "dt_import_summarydesc": "Ripeloghe de l'imbortazione:",
+ "dt_import_editsummary": "'Mborte {{ucfirst:$1}}",
+ "dt_import_importing": "Stoche a 'mborte...",
+ "dt_import_success": "$1 {{PLURAL:$1|pàgene|pàggene}} ca onna essere ccrejate da 'u file $2.",
+ "importcsv": "'Mborte CSV",
+ "importspreadsheet": "'Mborte 'u foglie de calcole",
+ "dt_importcsv_badheader": "Errore: 'a testate d'a colonne $1, '$2', adda essere o '$3' o '$4' o une de le module 'template_name[field_name]'",
+ "right-datatransferimport": "'Mborte date",
+ "dt_filetype_spreadsheet": "foglie de calcole"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/rtm.json b/www/wiki/extensions/DataTransfer/i18n/rtm.json
new file mode 100644
index 00000000..7e0847d2
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/rtm.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Jose77"
+ ]
+ },
+ "dt_viewxml_categories": "Katekori"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/ru.json b/www/wiki/extensions/DataTransfer/i18n/ru.json
new file mode 100644
index 00000000..80f1d0d2
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/ru.json
@@ -0,0 +1,43 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ferrer",
+ "Innv",
+ "Lockal",
+ "Okras",
+ "Александр Сигачёв"
+ ]
+ },
+ "datatransfer-desc": "Позволяет импортировать и экспортировать данные, содержащиеся в вызовах шаблонов",
+ "viewxml": "Просмотр XML",
+ "dt_viewxml_docu": "Пожалуйста, выберите категории и пространства имён для просмотра в формате XML.",
+ "dt_viewxml_categories": "Категории",
+ "dt_viewxml_namespaces": "Пространства имён",
+ "dt_viewxml_simplifiedformat": "Упрощённый формат",
+ "dt_xml_namespace": "Пространство имён",
+ "dt_xml_pages": "Страницы",
+ "dt_xml_page": "Страница",
+ "dt_xml_template": "Шаблон",
+ "dt_xml_field": "Поле",
+ "dt_xml_name": "Имя",
+ "dt_xml_title": "Заголовок",
+ "dt_xml_id": "ID",
+ "dt_xml_freetext": "Свободный текст",
+ "importxml": "Импорт XML",
+ "dt_import_selectfile": "Пожалуйста, выберите файл $1 для импорта:",
+ "dt_import_encodingtype": "Тип кодировки:",
+ "dt_import_forexisting": "Для страниц, которые уже существуют:",
+ "dt_import_overwriteexisting": "Переписать существующие данные",
+ "dt_import_mergeintoexisting": "Перезаписывать только поля, содержащиеся в файле",
+ "dt_import_skipexisting": "Пропустить",
+ "dt_import_appendtoexisting": "Добавить к существующим данным",
+ "dt_import_summarydesc": "Описание импорта:",
+ "dt_import_editsummary": "импорт из {{ucfirst:$1}}",
+ "dt_import_importing": "Импортирование...",
+ "dt_import_success": "$1 {{PLURAL:$1|страница была|страницы были|страниц были}} созданы из файла $2.",
+ "importcsv": "Импорт CSV",
+ "importspreadsheet": "Импорт таблицы",
+ "dt_importcsv_badheader": "Ошибка. Заголовок колонки №$1 «$2» должен быть или «$3», или «$4», или в форме «template_name[field_name]»",
+ "right-datatransferimport": "Импорт данных",
+ "dt_filetype_spreadsheet": "таблица"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/rue.json b/www/wiki/extensions/DataTransfer/i18n/rue.json
new file mode 100644
index 00000000..18d78896
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/rue.json
@@ -0,0 +1,20 @@
+{
+ "@metadata": {
+ "authors": [
+ "Gazeb"
+ ]
+ },
+ "dt_viewxml_categories": "Катеґорії",
+ "dt_viewxml_namespaces": "Просторы назв",
+ "dt_viewxml_simplifiedformat": "Простый формат",
+ "dt_xml_namespace": "Простор назв",
+ "dt_xml_pages": "Сторінкы",
+ "dt_xml_page": "Сторінка",
+ "dt_xml_template": "Шаблона",
+ "dt_xml_field": "Поле",
+ "dt_xml_name": "Назва",
+ "dt_xml_title": "Надпис",
+ "dt_xml_id": "ID",
+ "dt_xml_freetext": "Вольный текст",
+ "importxml": "Імпортовати XML"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/scn.json b/www/wiki/extensions/DataTransfer/i18n/scn.json
new file mode 100644
index 00000000..43903ccf
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/scn.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "Aushulz"
+ ]
+ },
+ "dt_xml_name": "Nomu",
+ "dt_xml_id": "ID"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/sd.json b/www/wiki/extensions/DataTransfer/i18n/sd.json
new file mode 100644
index 00000000..6dc63ac3
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/sd.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Mehtab ahmed"
+ ]
+ },
+ "dt_xml_pages": "صفحا"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/si.json b/www/wiki/extensions/DataTransfer/i18n/si.json
new file mode 100644
index 00000000..7c1bf082
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/si.json
@@ -0,0 +1,32 @@
+{
+ "@metadata": {
+ "authors": [
+ "පසිඳු කාවින්ද"
+ ]
+ },
+ "viewxml": "XML නරඹන්න",
+ "dt_viewxml_categories": "ප්‍රවර්ගයන්",
+ "dt_viewxml_namespaces": "නාමඅවකාශයන්",
+ "dt_viewxml_simplifiedformat": "සුළු කළ ආකෘතිය",
+ "dt_xml_namespace": "නාමඅවකාශය",
+ "dt_xml_pages": "පිටු",
+ "dt_xml_page": "පිටුව",
+ "dt_xml_template": "සැකිල්ල",
+ "dt_xml_field": "ක්ෂේත්‍රය",
+ "dt_xml_name": "නම",
+ "dt_xml_title": "ශීර්ෂය",
+ "dt_xml_id": "හැඳුනුම",
+ "dt_xml_freetext": "නිදහස් පාඨය",
+ "importxml": "XML ආයාත කරන්න",
+ "dt_import_selectfile": "ආයාත කිරීම සඳහා කරුණාකර $1 ගොනුව තෝරන්න:",
+ "dt_import_encodingtype": "කේතීකරණ වර්ගය:",
+ "dt_import_forexisting": "දැනටමත් පවතින පිටු සඳහා:",
+ "dt_import_overwriteexisting": "පවතින අන්තර්ගතය අධිලිවීමකට ලක්කරන්න",
+ "dt_import_skipexisting": "මඟ හරින්න",
+ "dt_import_appendtoexisting": "පවත්නා අන්තර්ගතයට අමුණන්න",
+ "dt_import_summarydesc": "ආයාත කිරීමේ සාරාංශය:",
+ "dt_import_editsummary": "$1 ආයාත කරන්න",
+ "dt_import_importing": "ආයාත කරමින්...",
+ "importcsv": "CSV ආයාත කරන්න",
+ "right-datatransferimport": "දත්ත ආයාත කරන්න"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/sk.json b/www/wiki/extensions/DataTransfer/i18n/sk.json
new file mode 100644
index 00000000..494f1d1a
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/sk.json
@@ -0,0 +1,31 @@
+{
+ "@metadata": {
+ "authors": [
+ "Helix84"
+ ]
+ },
+ "datatransfer-desc": "Umožňuje import a export údajov obsiahnutých v bunkách šablón",
+ "viewxml": "Zobraziť XML",
+ "dt_viewxml_docu": "Prosím, vyberte ktorý spomedzi nasledovných kategórií a menných priestorov zobraziť vo formáte XML.",
+ "dt_viewxml_categories": "Kategórie",
+ "dt_viewxml_namespaces": "Menné priestory",
+ "dt_viewxml_simplifiedformat": "Zjednodušený formát",
+ "dt_xml_namespace": "Menný priestor",
+ "dt_xml_pages": "Stránky",
+ "dt_xml_page": "Stránka",
+ "dt_xml_template": "Šablóna",
+ "dt_xml_field": "Pole",
+ "dt_xml_name": "Názov",
+ "dt_xml_title": "Nadpis",
+ "dt_xml_id": "ID",
+ "dt_xml_freetext": "Voľný text",
+ "importxml": "Importovať XML",
+ "dt_import_selectfile": "Prosím, vyberte $1 súbor, ktorý chcete importovať:",
+ "dt_import_encodingtype": "Typ kódovania:",
+ "dt_import_editsummary": "Import $1",
+ "dt_import_importing": "Prebieha import...",
+ "dt_import_success": "Z $2 súboru sa {{PLURAL:$1|importuje $1 stránka|importujú $1 stránky|importuje $1 stránok}}.",
+ "importcsv": "Import CSV",
+ "dt_importcsv_badheader": "Chyba: stĺpec $1 hlavičky, „$2“ musí mať hodnotu buď „$3“, „$4“ alebo byť v tvare „názov_šablóny[názov_poľa]“",
+ "right-datatransferimport": "Importovať údaje"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/sl.json b/www/wiki/extensions/DataTransfer/i18n/sl.json
new file mode 100644
index 00000000..3fe235e0
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/sl.json
@@ -0,0 +1,39 @@
+{
+ "@metadata": {
+ "authors": [
+ "Dbc334"
+ ]
+ },
+ "datatransfer-desc": "Omogoča uvažanje in izvažanje podatkov iz klicev predlog",
+ "viewxml": "Ogled XML",
+ "dt_viewxml_docu": "Prosimo, izberite med naslednjimi kategorijami in imenskimi prostori za ogled v obliki XML.",
+ "dt_viewxml_categories": "Kategorije",
+ "dt_viewxml_namespaces": "Imenski prostori",
+ "dt_viewxml_simplifiedformat": "Poenostavljena oblika",
+ "dt_xml_namespace": "Imenski prostor",
+ "dt_xml_pages": "Strani",
+ "dt_xml_page": "Stran",
+ "dt_xml_template": "Predloga",
+ "dt_xml_field": "Polje",
+ "dt_xml_name": "Ime",
+ "dt_xml_title": "Naslov",
+ "dt_xml_id": "ID",
+ "dt_xml_freetext": "Prosto besedilo",
+ "importxml": "Uvozi XML",
+ "dt_import_selectfile": "Prosimo, izberite datoteko $1 za uvoz:",
+ "dt_import_encodingtype": "Vrsta kodiranja:",
+ "dt_import_forexisting": "Za že obstoječe strani:",
+ "dt_import_overwriteexisting": "Prepiši obstoječo vsebino",
+ "dt_import_mergeintoexisting": "Prepiši samo polja iz datoteke",
+ "dt_import_skipexisting": "Preskoči",
+ "dt_import_appendtoexisting": "Dodaj obstoječi vsebini",
+ "dt_import_summarydesc": "Povzetek uvoza:",
+ "dt_import_editsummary": "uvoz $1",
+ "dt_import_importing": "Uvažanje ...",
+ "dt_import_success": "Iz datoteke $2 bom ustvaril $1 {{PLURAL:$1|stran|strani}}.",
+ "importcsv": "Uvozi CSV",
+ "importspreadsheet": "Uvoz preglednice",
+ "dt_importcsv_badheader": "Napaka: glava stolpca $1, '$2', mora biti '$3', '$4' ali oblike 'template_name[field_name]'",
+ "right-datatransferimport": "Uvoz podatkov",
+ "dt_filetype_spreadsheet": "preglednice"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/sr-ec.json b/www/wiki/extensions/DataTransfer/i18n/sr-ec.json
new file mode 100644
index 00000000..8d05f0ab
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/sr-ec.json
@@ -0,0 +1,37 @@
+{
+ "@metadata": {
+ "authors": [
+ "Rancher",
+ "Sasa Stefanovic",
+ "Жељко Тодоровић",
+ "Михајло Анђелковић",
+ "Milicevic01",
+ "Acamicamacaraca",
+ "BadDog"
+ ]
+ },
+ "viewxml": "Приказ XML-а",
+ "dt_viewxml_categories": "Категорије",
+ "dt_viewxml_namespaces": "Именски простори",
+ "dt_viewxml_simplifiedformat": "Поједностављени формат",
+ "dt_xml_namespace": "Именски простор",
+ "dt_xml_pages": "Странице",
+ "dt_xml_page": "Страница",
+ "dt_xml_template": "Шаблон",
+ "dt_xml_field": "Поље",
+ "dt_xml_name": "Име",
+ "dt_xml_title": "Наслов",
+ "dt_xml_id": "Назнака",
+ "dt_xml_freetext": "Слободан текст",
+ "importxml": "Увези XML",
+ "dt_import_encodingtype": "Врста кодирања:",
+ "dt_import_forexisting": "За странице које већ постоје:",
+ "dt_import_overwriteexisting": "Замени постојећи садржај",
+ "dt_import_skipexisting": "Прескочи",
+ "dt_import_appendtoexisting": "Додај у постојећи садржај",
+ "dt_import_summarydesc": "Опис увоза:",
+ "dt_import_editsummary": "{{ucfirst:$1}} увоз",
+ "dt_import_importing": "Увоз у току...",
+ "importcsv": "Увези CSV",
+ "right-datatransferimport": "Увези податке"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/sr-el.json b/www/wiki/extensions/DataTransfer/i18n/sr-el.json
new file mode 100644
index 00000000..f7c388b8
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/sr-el.json
@@ -0,0 +1,27 @@
+{
+ "@metadata": {
+ "authors": [
+ "Michaello",
+ "Жељко Тодоровић",
+ "Milicevic01"
+ ]
+ },
+ "viewxml": "Vidi XML",
+ "dt_viewxml_categories": "Kategorije",
+ "dt_viewxml_namespaces": "Imenski prostori",
+ "dt_viewxml_simplifiedformat": "Pojednostavljeni format",
+ "dt_xml_namespace": "Imenski prostor",
+ "dt_xml_pages": "Članci",
+ "dt_xml_page": "Stranica",
+ "dt_xml_template": "Šablon",
+ "dt_xml_field": "Polje",
+ "dt_xml_name": "Ime",
+ "dt_xml_title": "Naslov",
+ "dt_xml_id": "ID",
+ "dt_xml_freetext": "Slobodan tekst",
+ "importxml": "Uvezi XML",
+ "dt_import_editsummary": "{{ucfirst:$1}} uvoz",
+ "dt_import_importing": "Uvoz u toku...",
+ "importcsv": "Uvezi CSV",
+ "right-datatransferimport": "Uvezi podatke"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/stq.json b/www/wiki/extensions/DataTransfer/i18n/stq.json
new file mode 100644
index 00000000..0f8b4ae3
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/stq.json
@@ -0,0 +1,18 @@
+{
+ "@metadata": {
+ "authors": [
+ "Pyt"
+ ]
+ },
+ "datatransfer-desc": "Ferlööwet dän Import un Export fon strukturierde Doaten, do der in Aproupen un Foarloagen ferwoand wäide.",
+ "viewxml": "XML ankiekje",
+ "dt_viewxml_docu": "Wääl uut, wäkke Kategorien in dät XML-Formoat anwiesd wäide skällen.",
+ "dt_viewxml_categories": "Kategorien",
+ "dt_viewxml_namespaces": "Noomensruume",
+ "dt_viewxml_simplifiedformat": "Fereenfacht Formoat",
+ "dt_xml_namespace": "Noomensruum",
+ "dt_xml_page": "Siede",
+ "dt_xml_field": "Fäild",
+ "dt_xml_name": "Noome",
+ "dt_xml_title": "Tittel"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/su.json b/www/wiki/extensions/DataTransfer/i18n/su.json
new file mode 100644
index 00000000..78f90b4d
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/su.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Irwangatot"
+ ]
+ },
+ "dt_viewxml_namespaces": "Ngaranspasi"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/sv.json b/www/wiki/extensions/DataTransfer/i18n/sv.json
new file mode 100644
index 00000000..4c216e61
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/sv.json
@@ -0,0 +1,46 @@
+{
+ "@metadata": {
+ "authors": [
+ "Fluff",
+ "Gabbe.g",
+ "Jopparn",
+ "Lejonel",
+ "M.M.S.",
+ "Per",
+ "Rotsee",
+ "WikiPhoenix"
+ ]
+ },
+ "datatransfer-desc": "Tillåter import och export av data som finns i mallanrop",
+ "viewxml": "Visa XML",
+ "dt_viewxml_docu": "Välj vilka av följande kategorier och namnrymder som ska visas i XML-format.",
+ "dt_viewxml_categories": "Kategorier",
+ "dt_viewxml_namespaces": "Namnrymder",
+ "dt_viewxml_simplifiedformat": "Förenklat format",
+ "dt_xml_namespace": "Namnrymd",
+ "dt_xml_pages": "Sidor",
+ "dt_xml_page": "Sida",
+ "dt_xml_template": "Mall",
+ "dt_xml_field": "Fält",
+ "dt_xml_name": "Namn",
+ "dt_xml_title": "Titel",
+ "dt_xml_id": "ID",
+ "dt_xml_freetext": "Fritext",
+ "importxml": "Importera XML",
+ "dt_import_selectfile": "Vänligen välj $1-filen som skall importeras:",
+ "dt_import_encodingtype": "Teckenkodningstyp:",
+ "dt_import_forexisting": "För sidor som redan finns:",
+ "dt_import_overwriteexisting": "Skriv över existerande innehåll",
+ "dt_import_mergeintoexisting": "Skriv endast över fält som finns i filen",
+ "dt_import_skipexisting": "Hoppa över",
+ "dt_import_appendtoexisting": "Lägg till efter befintligt innehåll",
+ "dt_import_summarydesc": "Sammanfattning av importen:",
+ "dt_import_editsummary": "importera {{ucfirst:$1}}",
+ "dt_import_importing": "Importerar...",
+ "dt_import_success": "$1 {{PLURAL:$1|sida|sidor}} kommer skapas från $2-filen.",
+ "importcsv": "Importera CSV",
+ "importspreadsheet": "Importera kalkylblad",
+ "dt_importcsv_badheader": "Fel: Titeln $2 för kolumnen $1 måste vara antingen $3, $4 eller på formen 'mallnamn[fältnamn]'",
+ "right-datatransferimport": "Importera data",
+ "dt_filetype_spreadsheet": "kalkylblad"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/szl.json b/www/wiki/extensions/DataTransfer/i18n/szl.json
new file mode 100644
index 00000000..1b968c70
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/szl.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "Herr Kriss"
+ ]
+ },
+ "dt_xml_page": "Zajta",
+ "dt_xml_name": "Mjano"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/ta.json b/www/wiki/extensions/DataTransfer/i18n/ta.json
new file mode 100644
index 00000000..45310bf7
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/ta.json
@@ -0,0 +1,37 @@
+{
+ "@metadata": {
+ "authors": [
+ "Karthi.dr",
+ "Shanmugamp7",
+ "TRYPPN",
+ "Trengarasu",
+ "Ulmo",
+ "மதனாஹரன்",
+ "ElangoRamanujam"
+ ]
+ },
+ "viewxml": "XML ஐப் பார்",
+ "dt_viewxml_categories": "பகுப்புகள்",
+ "dt_viewxml_namespaces": "பெயர்வெளிகள்",
+ "dt_viewxml_simplifiedformat": "எளிதாக்கப்பட்ட வடிவம்",
+ "dt_xml_namespace": "பெயர்வெளி",
+ "dt_xml_pages": "பக்கங்கள்",
+ "dt_xml_page": "பக்கம்",
+ "dt_xml_template": "வார்ப்புரு",
+ "dt_xml_field": "புலம்",
+ "dt_xml_name": "பெயர்",
+ "dt_xml_title": "தலைப்பு",
+ "dt_xml_id": "அடையாளம்",
+ "dt_xml_freetext": "எந்த கட்டுப்பாடும் இல்லா சொற்றொடர்",
+ "importxml": "XML இறக்குமதி செய்",
+ "dt_import_selectfile": "தயவுசெய்து $1 கோப்பை இறக்குமதிக்காக தேர்வுசெய்யவும்:",
+ "dt_import_forexisting": "ஏற்கனவே உள்ள பக்கங்களுக்கு:",
+ "dt_import_overwriteexisting": "தற்போதுள்ள உள்ளடக்கத்தை அழித்தெழுது",
+ "dt_import_skipexisting": "தவிர்",
+ "dt_import_appendtoexisting": "ஏற்கனவே உள்ள உள்ளடக்கத்துடன் இணை",
+ "dt_import_summarydesc": "இறக்குமதிச் சுருக்கம்:",
+ "dt_import_editsummary": "{{ucfirst:$1}} இறக்குமதி",
+ "dt_import_importing": "இறக்குமதியாகிறது...",
+ "dt_import_success": "$2 கோப்பிலிருந்து $1 {{PLURAL:$1|பக்கம்|பக்கங்கள்}} உருவாக்கப்படும்.",
+ "right-datatransferimport": "தரவுகளை ஏற்றுமதி செய்யவும்"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/te.json b/www/wiki/extensions/DataTransfer/i18n/te.json
new file mode 100644
index 00000000..28783b71
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/te.json
@@ -0,0 +1,27 @@
+{
+ "@metadata": {
+ "authors": [
+ "Chaduvari",
+ "Veeven"
+ ]
+ },
+ "viewxml": "XMLని చూడండి",
+ "dt_viewxml_categories": "వర్గాలు",
+ "dt_viewxml_namespaces": "పేరుబరులు",
+ "dt_xml_namespace": "పేరుబరి",
+ "dt_xml_pages": "పేజీలు",
+ "dt_xml_page": "పేజీ",
+ "dt_xml_template": "మూస",
+ "dt_xml_name": "పేరు",
+ "dt_xml_title": "శీర్షిక",
+ "dt_xml_id": "ఐడీ",
+ "dt_xml_freetext": "స్వేచ్ఛా పాఠ్యం",
+ "dt_import_appendtoexisting": "ఈసరికే ఉన్న కంటెంటు వెనుక చేర్చు",
+ "dt_import_summarydesc": "దిగుమతి సారాంశం:",
+ "dt_import_editsummary": "$1 దిగుమతి",
+ "dt_import_importing": "దిగుమతి చేస్తున్నాం...",
+ "dt_import_success": "ఫైలు $2 నుండి $1 {{PLURAL:$1|పేజీ|పేజీలు}} సృష్టించబడతాయి.",
+ "importcsv": "CSV ని దిగుమతి చెయ్యి",
+ "dt_importcsv_badheader": "లోపం: నిలువు వరుస $1 శీర్షం, '$2', '$3' అయినా లేక '$4' అయినా ఉండాలి. లేదా 'template_name[field_name]' రూపంలో అయినా ఉండాలి",
+ "right-datatransferimport": "డేటాను దిగుమతి చెయ్యి"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/tet.json b/www/wiki/extensions/DataTransfer/i18n/tet.json
new file mode 100644
index 00000000..8c5b348f
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/tet.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "MF-Warburg"
+ ]
+ },
+ "dt_viewxml_categories": "Kategoria sira",
+ "dt_xml_namespace": "Espasu pájina nian",
+ "dt_xml_pages": "Pájina sira",
+ "dt_xml_page": "Pájina",
+ "dt_xml_name": "Naran",
+ "dt_xml_title": "Títulu:",
+ "dt_xml_id": "ID"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/tg-cyrl.json b/www/wiki/extensions/DataTransfer/i18n/tg-cyrl.json
new file mode 100644
index 00000000..8eafde42
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/tg-cyrl.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ibrahim"
+ ]
+ },
+ "dt_viewxml_categories": "Гурӯҳҳо",
+ "dt_viewxml_namespaces": "Фазоҳои ном",
+ "dt_xml_namespace": "Фазоином",
+ "dt_xml_page": "Саҳифа",
+ "dt_xml_name": "Ном",
+ "dt_xml_title": "Унвон",
+ "dt_xml_freetext": "Матни дилхоҳ"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/tg-latn.json b/www/wiki/extensions/DataTransfer/i18n/tg-latn.json
new file mode 100644
index 00000000..1763bdb5
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/tg-latn.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Liangent"
+ ]
+ },
+ "dt_viewxml_categories": "Gurūhho",
+ "dt_viewxml_namespaces": "Fazohoi nom",
+ "dt_xml_namespace": "Fazoinom",
+ "dt_xml_page": "Sahifa",
+ "dt_xml_name": "Nom",
+ "dt_xml_title": "Unvon",
+ "dt_xml_freetext": "Matni dilxoh"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/th.json b/www/wiki/extensions/DataTransfer/i18n/th.json
new file mode 100644
index 00000000..e9c26545
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/th.json
@@ -0,0 +1,10 @@
+{
+ "@metadata": {
+ "authors": [
+ "Octahedron80"
+ ]
+ },
+ "dt_viewxml_categories": "หมวดหมู่",
+ "dt_viewxml_namespaces": "เนมสเปซ",
+ "dt_xml_namespace": "เนมสเปซ"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/tk.json b/www/wiki/extensions/DataTransfer/i18n/tk.json
new file mode 100644
index 00000000..c73200d3
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/tk.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "Hanberke"
+ ]
+ },
+ "dt_xml_page": "Sahypa",
+ "dt_xml_name": "At"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/tl.json b/www/wiki/extensions/DataTransfer/i18n/tl.json
new file mode 100644
index 00000000..3bc4d120
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/tl.json
@@ -0,0 +1,36 @@
+{
+ "@metadata": {
+ "authors": [
+ "AnakngAraw"
+ ]
+ },
+ "datatransfer-desc": "Nagpapahintulot sa pag-aangkat at pagluluwas ng mga datong nasa loob ng mga pagtawag sa suleras",
+ "viewxml": "Tingnan ang XML",
+ "dt_viewxml_docu": "Pumili po lamang mula sa sumusunod na mga kaurian at mga espasyo ng pangalan upang makita ang anyong XML.",
+ "dt_viewxml_categories": "Mga kaurian",
+ "dt_viewxml_namespaces": "Mga espasyo ng pangalan",
+ "dt_viewxml_simplifiedformat": "Pinapayak na anyo",
+ "dt_xml_namespace": "Espasyo ng pangalan",
+ "dt_xml_pages": "Mga pahina",
+ "dt_xml_page": "Pahina",
+ "dt_xml_template": "Suleras",
+ "dt_xml_field": "Hanay",
+ "dt_xml_name": "Pangalan",
+ "dt_xml_title": "Pamagat",
+ "dt_xml_id": "ID",
+ "dt_xml_freetext": "Malayang Teksto",
+ "importxml": "Angkatin ang XML",
+ "dt_import_selectfile": "Pakipili ang talaksang $1 na aangkatin:",
+ "dt_import_encodingtype": "Uri ng pagkokodigo:",
+ "dt_import_forexisting": "Para sa mga pahinang umiiral na:",
+ "dt_import_overwriteexisting": "Patungan ang umiiral na nilalaman",
+ "dt_import_skipexisting": "Laktawan",
+ "dt_import_appendtoexisting": "Isugpong sa umiiral na nilalaman",
+ "dt_import_summarydesc": "Buod ng pag-angkat:",
+ "dt_import_editsummary": "Pag-angkat ng $1",
+ "dt_import_importing": "Inaangkat...",
+ "dt_import_success": "$1 {{PLURAL:$1|pahina|mga pahina}} ang lilikhain mula sa talaksang $2.",
+ "importcsv": "Angkatin ang CSV",
+ "dt_importcsv_badheader": "Kamalian: ang patayong hanay ng paulong $1, '$2', ay dapat na '$3', '$4' o nasa pormang 'template_name[field_name]'",
+ "right-datatransferimport": "Angkatin ang dato"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/tly.json b/www/wiki/extensions/DataTransfer/i18n/tly.json
new file mode 100644
index 00000000..2390b306
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/tly.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Erdemaslancan"
+ ]
+ },
+ "dt_xml_page": "Сәһифә"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/tr.json b/www/wiki/extensions/DataTransfer/i18n/tr.json
new file mode 100644
index 00000000..d6acb5e1
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/tr.json
@@ -0,0 +1,37 @@
+{
+ "@metadata": {
+ "authors": [
+ "Joseph",
+ "Karduelis",
+ "Mach",
+ "Manco Capac",
+ "Srhat",
+ "Vito Genovese"
+ ]
+ },
+ "datatransfer-desc": "Şablon çağrılarında içerilen verilerin içe ve dışa aktarımına izin verir",
+ "viewxml": "XML'i gör",
+ "dt_viewxml_docu": "Lütfen, XML formatında görüntülemek için aşağıdaki kategori ve ad alanları arasından seçin.",
+ "dt_viewxml_categories": "Kategoriler",
+ "dt_viewxml_namespaces": "İsim alanları",
+ "dt_viewxml_simplifiedformat": "Basitleştirilmiş format",
+ "dt_xml_namespace": "Ad alanı",
+ "dt_xml_pages": "Sayfalar",
+ "dt_xml_page": "Sayfa",
+ "dt_xml_template": "Şablon",
+ "dt_xml_field": "Alan",
+ "dt_xml_name": "İsim",
+ "dt_xml_title": "Başlık",
+ "dt_xml_id": "ID",
+ "dt_xml_freetext": "Özgür Metin",
+ "importxml": "XML içe aktar",
+ "dt_import_selectfile": "Lütfen içe aktarmak için $1 dosyasını seçin:",
+ "dt_import_encodingtype": "Kodlama türü:",
+ "dt_import_summarydesc": "İçe aktarma özeti:",
+ "dt_import_editsummary": "$1 içe aktarımı",
+ "dt_import_importing": "İçe aktarıyor...",
+ "dt_import_success": "$2 dosyasından $1 {{PLURAL:$1|sayfa|sayfa}} oluşturulacak.",
+ "importcsv": "CSV'yi içe aktar",
+ "dt_importcsv_badheader": "Hata: $1 kolonunun başlığı olan '$2', '$3', '$4' ya da 'şablon_adı[alan_adı]' şeklinde olmalıdır",
+ "right-datatransferimport": "Verileri içe aktarır"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/tt-cyrl.json b/www/wiki/extensions/DataTransfer/i18n/tt-cyrl.json
new file mode 100644
index 00000000..f2389914
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/tt-cyrl.json
@@ -0,0 +1,22 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ильнар"
+ ]
+ },
+ "dt_viewxml_categories": "Төркемнәр",
+ "dt_viewxml_namespaces": "Исемнәр мәйданы",
+ "dt_viewxml_simplifiedformat": "Гадиләштерелгән формат",
+ "dt_xml_namespace": "Исемнәр мәйданы",
+ "dt_xml_pages": "Битләр",
+ "dt_xml_page": "Бит",
+ "dt_xml_template": "Калып",
+ "dt_xml_field": "Мәйдан",
+ "dt_xml_name": "Исем",
+ "dt_xml_title": "Башлам",
+ "dt_xml_id": "ID",
+ "dt_xml_freetext": "Ирекле текст",
+ "importxml": "XML импорты",
+ "dt_import_selectfile": "Зинһар, импорт өчен $1 файлын сайлагыз:",
+ "dt_import_encodingtype": "Кодлау төре"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/tzm.json b/www/wiki/extensions/DataTransfer/i18n/tzm.json
new file mode 100644
index 00000000..84eb2071
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/tzm.json
@@ -0,0 +1,10 @@
+{
+ "@metadata": {
+ "authors": [
+ "Tifinaghes"
+ ]
+ },
+ "viewxml": "ⵥⵕ XML",
+ "dt_xml_name": "ⴰⵙⵙⴰⵖ",
+ "dt_xml_freetext": "ⴰⴹⵔⵉⵙ ⴰⴷⵔⴼ"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/ug-latn.json b/www/wiki/extensions/DataTransfer/i18n/ug-latn.json
new file mode 100644
index 00000000..afb7dd15
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/ug-latn.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Jose77"
+ ]
+ },
+ "dt_xml_page": "Bet"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/uk.json b/www/wiki/extensions/DataTransfer/i18n/uk.json
new file mode 100644
index 00000000..af7d019d
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/uk.json
@@ -0,0 +1,43 @@
+{
+ "@metadata": {
+ "authors": [
+ "AS",
+ "Arturyatsko",
+ "Prima klasy4na",
+ "Ата",
+ "Тест"
+ ]
+ },
+ "datatransfer-desc": "Дозволяє імпортувати та експортувати дані, які містяться в викликах шаблонів",
+ "viewxml": "Перегляд XML",
+ "dt_viewxml_docu": "Будь ласка, виберіть одну з наступних категорій та імен для перегляду в форматі XML.",
+ "dt_viewxml_categories": "Категорії",
+ "dt_viewxml_namespaces": "Простори назв",
+ "dt_viewxml_simplifiedformat": "Спрощений формат",
+ "dt_xml_namespace": "Простір назв",
+ "dt_xml_pages": "Сторінки",
+ "dt_xml_page": "Сторінка",
+ "dt_xml_template": "Шаблон",
+ "dt_xml_field": "Поле",
+ "dt_xml_name": "Назва",
+ "dt_xml_title": "Заголовок",
+ "dt_xml_id": "ID",
+ "dt_xml_freetext": "Вільний текст",
+ "importxml": "Імпорт XML",
+ "dt_import_selectfile": "Будь ласка, виберіть файл $1 для імпорту:",
+ "dt_import_encodingtype": "Тип кодування:",
+ "dt_import_forexisting": "Для сторінок, які вже існують:",
+ "dt_import_overwriteexisting": "Перезаписати існуючий вміст",
+ "dt_import_mergeintoexisting": "Перезаписати лише поля, що містяться у файлі",
+ "dt_import_skipexisting": "Пропустити",
+ "dt_import_appendtoexisting": "Додати до існуючого вмісту",
+ "dt_import_summarydesc": "Опис імпорту:",
+ "dt_import_editsummary": "імпорт {{ucfirst:$1}}",
+ "dt_import_importing": "Імпорт ...",
+ "dt_import_success": "$1 {{PLURAL:$1|сторінка була|сторінки було|сторінок було}} створено з файлу $2.",
+ "importcsv": "Імпорт CSV",
+ "importspreadsheet": "Імпорт таблиці",
+ "dt_importcsv_badheader": "Помилка. Заголовок колонки №$1 «$2» повинен бути або «$3», або «$4», або у формі «template_name[field_name]»",
+ "right-datatransferimport": "Імпорт даних",
+ "dt_filetype_spreadsheet": "таблиця"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/ur.json b/www/wiki/extensions/DataTransfer/i18n/ur.json
new file mode 100644
index 00000000..dc0cd98d
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/ur.json
@@ -0,0 +1,18 @@
+{
+ "@metadata": {
+ "authors": [
+ "පසිඳු කාවින්ද"
+ ]
+ },
+ "dt_viewxml_categories": "زمرہ جات",
+ "dt_viewxml_namespaces": "فضاہائےنام",
+ "dt_xml_namespace": "نیم سپیس",
+ "dt_xml_pages": "صفحات",
+ "dt_xml_page": "صفحہ",
+ "dt_xml_template": "سانچے",
+ "dt_xml_field": "میدان",
+ "dt_xml_name": "نام",
+ "dt_xml_title": "عنوان",
+ "dt_import_skipexisting": "پر",
+ "right-datatransferimport": "درآمد کے اعداد و شمار"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/vi.json b/www/wiki/extensions/DataTransfer/i18n/vi.json
new file mode 100644
index 00000000..4abfef6f
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/vi.json
@@ -0,0 +1,34 @@
+{
+ "@metadata": {
+ "authors": [
+ "Minh Nguyen",
+ "Vinhtantran",
+ "පසිඳු කාවින්ද"
+ ]
+ },
+ "datatransfer-desc": "Cho phép nhập xuất dữ liệu có cấu trúc được chứa trong lời gọi bản mẫu",
+ "viewxml": "Xem XML",
+ "dt_viewxml_docu": "Xin hãy chọn trong những thể loại và không gian tên dưới đây để xem ở dạng XML.",
+ "dt_viewxml_categories": "Thể loại",
+ "dt_viewxml_namespaces": "Không gian tên",
+ "dt_viewxml_simplifiedformat": "Định dạng đơn giản hóa",
+ "dt_xml_namespace": "Không gian tên",
+ "dt_xml_pages": "Trang",
+ "dt_xml_page": "Trang",
+ "dt_xml_template": "Bản mẫu",
+ "dt_xml_field": "Trường",
+ "dt_xml_name": "Tên",
+ "dt_xml_title": "Tựa đề",
+ "dt_xml_id": "ID",
+ "dt_xml_freetext": "Văn bản Tự do",
+ "importxml": "Nhập XML",
+ "dt_import_selectfile": "Xin hãy chọn tập tin $1 để nhập:",
+ "dt_import_encodingtype": "Bảng mã:",
+ "dt_import_skipexisting": "Bỏ qua",
+ "dt_import_editsummary": "Nhập $1",
+ "dt_import_importing": "Đang nhập…",
+ "dt_import_success": "{{PLURAL:$1|Trang|$1 trang}} sẽ được nhập từ tập tin $2.",
+ "importcsv": "Nhập CSV",
+ "dt_importcsv_badheader": "Lỗi: tên của cột $1, “$2”, phải là “$3” hay “$4”, hoặc phải theo định dạng “tên_tiêu_bản[tên_trường]”",
+ "right-datatransferimport": "Nhập dữ liệu"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/vo.json b/www/wiki/extensions/DataTransfer/i18n/vo.json
new file mode 100644
index 00000000..43c83976
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/vo.json
@@ -0,0 +1,21 @@
+{
+ "@metadata": {
+ "authors": [
+ "Malafaya",
+ "Smeira"
+ ]
+ },
+ "datatransfer-desc": "Dälon nüveigi e seveigi nünodas peleodüköl in samafomotilüvoks paninädöls",
+ "viewxml": "Logön eli XML",
+ "dt_viewxml_docu": "Välolös bevü klads e nemaspads foviks utosi, kelosi vilol logön fomätü XML.",
+ "dt_viewxml_categories": "Klads",
+ "dt_viewxml_namespaces": "Nemaspads",
+ "dt_viewxml_simplifiedformat": "Fomät pebalugüköl",
+ "dt_xml_namespace": "Nemaspad",
+ "dt_xml_page": "Pad",
+ "dt_xml_field": "Fel",
+ "dt_xml_name": "Nem",
+ "dt_xml_title": "Tiäd",
+ "dt_xml_id": "Dientifanüm",
+ "dt_xml_freetext": "Vödem libik"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/yi.json b/www/wiki/extensions/DataTransfer/i18n/yi.json
new file mode 100644
index 00000000..22205eeb
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/yi.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "פוילישער"
+ ]
+ },
+ "dt_xml_name": "נאָמען",
+ "dt_xml_title": "טיטל"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/zh-hans.json b/www/wiki/extensions/DataTransfer/i18n/zh-hans.json
new file mode 100644
index 00000000..0ee649e0
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/zh-hans.json
@@ -0,0 +1,45 @@
+{
+ "@metadata": {
+ "authors": [
+ "Gaoxuewei",
+ "Hydra",
+ "Linforest",
+ "PhiLiP",
+ "Qiyue2001",
+ "Shirayuki",
+ "Liuxinyu970226"
+ ]
+ },
+ "datatransfer-desc": "允许根据模板的要求导入导出结构化的数据",
+ "viewxml": "查看XML",
+ "dt_viewxml_docu": "请选择要使用XML格式查看的分类和名字空间。",
+ "dt_viewxml_categories": "分类",
+ "dt_viewxml_namespaces": "名字空间",
+ "dt_viewxml_simplifiedformat": "简化格式",
+ "dt_xml_namespace": "名字空间",
+ "dt_xml_pages": "页面",
+ "dt_xml_page": "页面",
+ "dt_xml_template": "模板",
+ "dt_xml_field": "事件",
+ "dt_xml_name": "名称",
+ "dt_xml_title": "标题",
+ "dt_xml_id": "ID",
+ "dt_xml_freetext": "自由文本",
+ "importxml": "导入 XML",
+ "dt_import_selectfile": "请选择 $1 要导入的文件:",
+ "dt_import_encodingtype": "编码类型:",
+ "dt_import_forexisting": "对于已经存在的页面:",
+ "dt_import_overwriteexisting": "覆盖现有内容",
+ "dt_import_mergeintoexisting": "覆盖只包含在文件中的字段",
+ "dt_import_skipexisting": "跳过",
+ "dt_import_appendtoexisting": "追加到现有内容",
+ "dt_import_summarydesc": "导入摘要:",
+ "dt_import_editsummary": "{{ucfirst:$1}}导入",
+ "dt_import_importing": "正在导入...",
+ "dt_import_success": "将依据此$2文件创建$1个{{PLURAL:$1|个页面}}。",
+ "importcsv": "导入 CSV",
+ "importspreadsheet": "导入电子表格",
+ "dt_importcsv_badheader": "错误:第$1列的标题'$2'必须为'$3'、或者'$4'、或者采取'模板名称[字段名称]'的形式",
+ "right-datatransferimport": "导入数据",
+ "dt_filetype_spreadsheet": "电子表格"
+}
diff --git a/www/wiki/extensions/DataTransfer/i18n/zh-hant.json b/www/wiki/extensions/DataTransfer/i18n/zh-hant.json
new file mode 100644
index 00000000..ced8a87d
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/i18n/zh-hant.json
@@ -0,0 +1,43 @@
+{
+ "@metadata": {
+ "authors": [
+ "Liangent",
+ "Mark85296341",
+ "LNDDYL",
+ "Kly",
+ "Liuxinyu970226"
+ ]
+ },
+ "datatransfer-desc": "允許根據模板的要求匯入匯出結構化的資料",
+ "viewxml": "檢視XML",
+ "dt_viewxml_docu": "請在下列分類、名稱空間中選擇,以使用XML格式查看。",
+ "dt_viewxml_categories": "分類",
+ "dt_viewxml_namespaces": "命名空間",
+ "dt_viewxml_simplifiedformat": "簡化格式",
+ "dt_xml_namespace": "命名空間",
+ "dt_xml_pages": "頁面",
+ "dt_xml_page": "頁面",
+ "dt_xml_template": "模板",
+ "dt_xml_field": "事件",
+ "dt_xml_name": "名稱",
+ "dt_xml_title": "標題",
+ "dt_xml_id": "ID",
+ "dt_xml_freetext": "自由文字",
+ "importxml": "匯入 XML",
+ "dt_import_selectfile": "請選擇 $1 要匯入的檔案:",
+ "dt_import_encodingtype": "編碼類型:",
+ "dt_import_forexisting": "對於已經存在的頁面:",
+ "dt_import_overwriteexisting": "覆蓋現有內容",
+ "dt_import_mergeintoexisting": "僅覆蓋包含在檔案裡的欄位",
+ "dt_import_skipexisting": "跳過",
+ "dt_import_appendtoexisting": "追加到現有內容",
+ "dt_import_summarydesc": "匯入摘要:",
+ "dt_import_editsummary": "{{ucfirst:$1}} 匯入",
+ "dt_import_importing": "正在匯入…",
+ "dt_import_success": "將依據此$2檔案建立$1個{{PLURAL:$1|個頁面|個頁面}}。",
+ "importcsv": "匯入 CSV",
+ "importspreadsheet": "匯入試算表",
+ "dt_importcsv_badheader": "錯誤:第$1列的標題'$2'必須為'$3'、或者'$4'、或者採取'模板名稱[字段名稱]'的形式",
+ "right-datatransferimport": "匯入資料",
+ "dt_filetype_spreadsheet": "試算表"
+}
diff --git a/www/wiki/extensions/DataTransfer/includes/DT_Hooks.php b/www/wiki/extensions/DataTransfer/includes/DT_Hooks.php
new file mode 100644
index 00000000..95999339
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/includes/DT_Hooks.php
@@ -0,0 +1,26 @@
+<?php
+/**
+ * Static functions called by various outside hooks.
+ *
+ * @author Yaron Koren
+ * @ingroup DataTransfer
+ */
+class DTHooks {
+
+ /**
+ * Add links to the 'AdminLinks' special page, defined by the Admin Links
+ * extension
+ */
+ public static function addToAdminLinks( $admin_links_tree ) {
+ $import_export_section = $admin_links_tree->getSection( wfMessage( 'adminlinks_importexport' )->text() );
+ $main_row = $import_export_section->getRow( 'main' );
+ $main_row->addItem( ALItem::newFromSpecialPage( 'ViewXML' ) );
+ $main_row->addItem( ALItem::newFromSpecialPage( 'ImportXML' ) );
+ $main_row->addItem( ALItem::newFromSpecialPage( 'ImportCSV' ) );
+ if ( class_exists( 'PHPExcel' )) {
+ $main_row->addItem( ALItem::newFromSpecialPage( 'ImportSpreadsheet' ) );
+ }
+ return true;
+ }
+
+} \ No newline at end of file
diff --git a/www/wiki/extensions/DataTransfer/includes/DT_ImportJob.php b/www/wiki/extensions/DataTransfer/includes/DT_ImportJob.php
new file mode 100644
index 00000000..67a31489
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/includes/DT_ImportJob.php
@@ -0,0 +1,69 @@
+<?php
+
+/**
+ * Background job to import a page into the wiki, for use by Data Transfer
+ *
+ * @author Yaron Koren
+ */
+class DTImportJob extends Job {
+
+ function __construct( $title, $params = '', $id = 0 ) {
+ parent::__construct( 'dtImport', $title, $params, $id );
+ }
+
+ /**
+ * Run a dtImport job
+ * @return boolean success
+ */
+ function run() {
+ if ( is_null( $this->title ) ) {
+ $this->error = "dtImport: Invalid title";
+ return false;
+ }
+
+ $wikiPage = WikiPage::factory( $this->title );
+ if ( !$wikiPage ) {
+ $this->error = 'dtImport: Wiki page not found "' . $this->title->getPrefixedDBkey() . '"';
+ return false;
+ }
+
+ $for_pages_that_exist = $this->params['for_pages_that_exist'];
+ if ( $for_pages_that_exist == 'skip' && $this->title->exists() ) {
+ return true;
+ }
+
+ // Change global $wgUser variable to the one specified by
+ // the job only for the extent of this import.
+ global $wgUser;
+ $actual_user = $wgUser;
+ $wgUser = User::newFromId( $this->params['user_id'] );
+ $text = $this->params['text'];
+ if ( $this->title->exists() ) {
+ if ( $for_pages_that_exist == 'append' ) {
+ $existingText = ContentHandler::getContentText( $wikiPage->getContent() );
+ $text = $existingText . "\n" . $text;
+ } elseif ( $for_pages_that_exist == 'merge' ) {
+ $existingPageStructure = DTPageStructure::newFromTitle( $this->title );
+ $newPageStructure = new DTPageStructure;
+ $newPageStructure->parsePageContents( $text );
+ $existingPageStructure->mergeInPageStructure( $newPageStructure );
+ $text = $existingPageStructure->toWikitext();
+ }
+ // otherwise, $for_pages_that_exist == 'overwrite'
+ }
+ $edit_summary = $this->params['edit_summary'];
+ $new_content = new WikitextContent( $text );
+ // It's strange that doEditContent() doesn't
+ // automatically attach the 'bot' flag when the user
+ // is a bot...
+ if ( $wgUser->isAllowed( 'bot' ) ) {
+ $flags = EDIT_FORCE_BOT;
+ } else {
+ $flags = 0;
+ }
+ $wikiPage->doEditContent( $new_content, $edit_summary, $flags );
+
+ $wgUser = $actual_user;
+ return true;
+ }
+}
diff --git a/www/wiki/extensions/DataTransfer/includes/DT_Page.php b/www/wiki/extensions/DataTransfer/includes/DT_Page.php
new file mode 100644
index 00000000..eb3c92fc
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/includes/DT_Page.php
@@ -0,0 +1,56 @@
+<?php
+/**
+ * Class holding the data of a page to be imported
+ *
+ * @author Yaron Koren
+ */
+
+class DTPage {
+ var $mName;
+ var $mTemplates;
+ var $mFreeText;
+
+ public function __construct() {
+ $this->mTemplates = array();
+ }
+
+ function setName( $name ) {
+ $this->mName = $name;
+ }
+
+ function getName() {
+ return $this->mName;
+ }
+
+ function addTemplateField( $template_name, $field_name, $value ) {
+
+ if ( !array_key_exists( $template_name, $this->mTemplates ) ) {
+ $this->mTemplates[$template_name] = array();
+ }
+ $this->mTemplates[$template_name][$field_name] = $value;
+ }
+
+ function setFreeText( $free_text ) {
+ $this->mFreeText = $free_text;
+ }
+
+ function createText() {
+ $text = "";
+ foreach ( $this->mTemplates as $template_name => $fields ) {
+ $fieldsAdded = false;
+ $text .= '{{' . $template_name;
+ foreach ( $fields as $field_name => $val ) {
+ if ( $val != '' ) {
+ $text .= "\n|$field_name=$val";
+ $fieldsAdded = true;
+ }
+ }
+ if ( $fieldsAdded ) {
+ $text .= "\n";
+ }
+ $text .= '}}' . "\n";
+ }
+ $text .= $this->mFreeText;
+ return $text;
+ }
+}
diff --git a/www/wiki/extensions/DataTransfer/includes/DT_PageComponent.php b/www/wiki/extensions/DataTransfer/includes/DT_PageComponent.php
new file mode 100644
index 00000000..24c91719
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/includes/DT_PageComponent.php
@@ -0,0 +1,131 @@
+<?php
+/**
+ * Class that represents a single "component" of a page - either a template
+ * or a piece of free text.
+ *
+ * @author Yaron Koren
+ * @author DataTransfer
+ */
+class DTPageComponent {
+ var $mIsTemplate = false;
+ var $mTemplateName;
+ static $mUnnamedFieldCounter;
+ var $mFields;
+ var $mFreeText;
+ static $mFreeTextIDCounter = 1;
+ var $mFreeTextID;
+
+ public static function newTemplate( $templateName ) {
+ $dtPageComponent = new DTPageComponent();
+ $dtPageComponent->mTemplateName = trim( $templateName );
+ $dtPageComponent->mIsTemplate = true;
+ $dtPageComponent->mFields = array();
+ self::$mUnnamedFieldCounter = 1;
+ return $dtPageComponent;
+ }
+ public static function newFreeText( $freeText ) {
+ $dtPageComponent = new DTPageComponent();
+ $dtPageComponent->mIsTemplate = false;
+ $dtPageComponent->mFreeText = $freeText;
+ $dtPageComponent->mFreeTextID = self::$mFreeTextIDCounter++;
+ return $dtPageComponent;
+ }
+
+ public function addNamedField( $fieldName, $fieldValue ) {
+ $this->mFields[trim( $fieldName )] = trim( $fieldValue );
+ }
+
+ public function addUnnamedField( $fieldValue ) {
+ $fieldName = self::$mUnnamedFieldCounter++;
+ $this->mFields[$fieldName] = trim( $fieldValue );
+ }
+
+ public function toWikitext() {
+ if ( $this->mIsTemplate ) {
+ $wikitext = '{{' . $this->mTemplateName;
+ foreach ( $this->mFields as $fieldName => $fieldValue ) {
+ if ( is_numeric( $fieldName ) ) {
+ $wikitext .= '|' . $fieldValue;
+ } else {
+ $wikitext .= "\n|$fieldName=$fieldValue";
+ }
+ }
+ $wikitext .= "\n}}";
+ return $wikitext;
+ } else {
+ return $this->mFreeText;
+ }
+ }
+
+ public function toXML( $isSimplified ) {
+ global $wgDataTransferViewXMLParseFields;
+ global $wgDataTransferViewXMLParseFreeText;
+ global $wgParser, $wgTitle;
+
+ if ( $this->mIsTemplate ) {
+ global $wgContLang;
+ $namespace_labels = $wgContLang->getNamespaces();
+ $template_label = $namespace_labels[NS_TEMPLATE];
+ $field_str = str_replace( ' ', '_', wfMessage( 'dt_xml_field' )->inContentLanguage()->text() );
+ $name_str = str_replace( ' ', '_', wfMessage( 'dt_xml_name' )->inContentLanguage()->text() );
+
+ $bodyXML = '';
+ foreach ( $this->mFields as $fieldName => $fieldValue ) {
+ // If this field itself holds template calls,
+ // get the XML for those calls.
+ if ( is_array( $fieldValue ) ) {
+ $fieldValueXML = '';
+ foreach ( $fieldValue as $subComponent ) {
+ $fieldValueXML .= $subComponent->toXML( $isSimplified );
+ }
+ } elseif ( $wgDataTransferViewXMLParseFields ) {
+ // Avoid table of contents and "edit" links
+ $fieldValue = $wgParser->parse( "__NOTOC__ __NOEDITSECTION__\n" . $fieldValue, $wgTitle, new ParserOptions() )->getText();
+ }
+
+ if ( $isSimplified ) {
+ if ( is_numeric( $fieldName ) ) {
+ // add "Field" to the beginning of the file name, since
+ // XML tags that are simply numbers aren't allowed
+ $fieldTag = $field_str . '_' . $fieldName;
+ } else {
+ $fieldTag = str_replace( ' ', '_', trim( $fieldName ) );
+ }
+ $attrs = null;
+ } else {
+ $fieldTag = $field_str;
+ $attrs = array( $name_str => $fieldName );
+ }
+ if ( is_array( $fieldValue ) ) {
+ $bodyXML .= Xml::tags( $fieldTag, $attrs, $fieldValueXML );
+ } else {
+ $bodyXML .= Xml::element( $fieldTag, $attrs, $fieldValue );
+ }
+ }
+
+ if ( $isSimplified ) {
+ $templateName = str_replace( ' ', '_', $this->mTemplateName );
+ return Xml::tags( $templateName, null, $bodyXML );
+ } else {
+ return Xml::tags( $template_label, array( $name_str => $this->mTemplateName ), $bodyXML );
+ }
+ } else {
+ $free_text_str = str_replace( ' ', '_', wfMessage( 'dt_xml_freetext' )->inContentLanguage()->text() );
+ if ( $wgDataTransferViewXMLParseFreeText ) {
+ $freeText = $this->mFreeText;
+ // Undo the escaping that happened before.
+ $freeText = str_replace( array( '&#123;', '&#125;' ), array( '{', '}' ), $freeText );
+ // Get rid of table of contents.
+ $mw = MagicWord::get( 'toc' );
+ if ( $mw->match( $freeText ) ) {
+ $freeText = $mw->replace( '', $freeText );
+ }
+ // Avoid "edit" links.
+ $freeText = $wgParser->parse( "__NOTOC__ __NOEDITSECTION__\n" . $freeText, $wgTitle, new ParserOptions() )->getText();
+ } else {
+ $freeText = $this->mFreeText;
+ }
+ return XML::element( $free_text_str, array( 'id' => $this->mFreeTextID ), $freeText );
+ }
+ }
+} \ No newline at end of file
diff --git a/www/wiki/extensions/DataTransfer/includes/DT_PageStructure.php b/www/wiki/extensions/DataTransfer/includes/DT_PageStructure.php
new file mode 100644
index 00000000..253cd99e
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/includes/DT_PageStructure.php
@@ -0,0 +1,243 @@
+<?php
+
+/**
+ * Class that holds the structure of a single wiki page. It is used for both
+ * turning wikitext into XML, and vice versa.
+ *
+ * @author Yaron Koren
+ * @ingroup DataTransfer
+ */
+class DTPageStructure {
+ var $mPageTitle;
+ var $mComponents = array();
+
+ function addComponent( $dtPageComponent ) {
+ $this->mComponents[] = $dtPageComponent;
+ DTPageComponent::$mFreeTextIDCounter = 1;
+ }
+
+ public static function newFromTitle( $pageTitle ) {
+ $pageStructure = new DTPageStructure();
+ $pageStructure->mPageTitle = $pageTitle;
+
+ $wiki_page = WikiPage::factory( $pageTitle );
+ $page_contents = ContentHandler::getContentText( $wiki_page->getContent() );
+
+ $pageStructure->parsePageContents( $page_contents );
+
+ // Now, go through the field values and see if any of them
+ // hold template calls - if any of them do, parse the value
+ // as if it's the full contents of a page, and add the
+ // resulting "components" to that field.
+ foreach ( $pageStructure->mComponents as $pageComponent ) {
+ if ( $pageComponent->mIsTemplate ) {
+ foreach ( $pageComponent->mFields as $fieldName => $fieldValue ) {
+ if ( strpos( $fieldValue, '{{' ) !== false ) {
+ $dummyPageStructure = new DTPageStructure();
+ $dummyPageStructure->parsePageContents( $fieldValue );
+ $pageComponent->mFields[$fieldName] = $dummyPageStructure->mComponents;
+ }
+ }
+ }
+ }
+ return $pageStructure;
+ }
+
+ /**
+ * Parses the contents of a wiki page, turning template calls into
+ * an arracy of DTPageComponent objects.
+ */
+ public function parsePageContents( $page_contents ) {
+ // escape out variables like "{{PAGENAME}}"
+ $page_contents = str_replace( '{{PAGENAME}}', '&#123;&#123;PAGENAME&#125;&#125;', $page_contents );
+ // escape out parser functions
+ $page_contents = preg_replace( '/{{(#.+)}}/', '&#123;&#123;$1&#125;&#125;', $page_contents );
+ // escape out transclusions, and calls like "DEFAULTSORT"
+ $page_contents = preg_replace( '/{{(.*:.+)}}/', '&#123;&#123;$1&#125;&#125;', $page_contents );
+ // escape out variable names
+ $page_contents = str_replace( '{{{', '&#123;&#123;&#123;', $page_contents );
+ $page_contents = str_replace( '}}}', '&#125;&#125;&#125;', $page_contents );
+ // escape out tables
+ $page_contents = str_replace( '{|', '&#123;|', $page_contents );
+ $page_contents = str_replace( '|}', '|&#125;', $page_contents );
+
+ // traverse the page contents, one character at a time
+ $uncompleted_curly_brackets = 0;
+ $free_text = "";
+ $template_name = "";
+ $field_name = "";
+ $field_value = "";
+ $field_has_name = false;
+ for ( $i = 0; $i < strlen( $page_contents ); $i++ ) {
+ $c = $page_contents[$i];
+ if ( $uncompleted_curly_brackets == 0 ) {
+ if ( $c == "{" || $i == strlen( $page_contents ) - 1 ) {
+ if ( $i == strlen( $page_contents ) - 1 )
+ $free_text .= $c;
+ $uncompleted_curly_brackets++;
+ $free_text = trim( $free_text );
+ if ( $free_text != "" ) {
+ $freeTextComponent = DTPageComponent::newFreeText( $free_text );
+ $this->addComponent( $freeTextComponent );
+ $free_text = "";
+ }
+ } elseif ( $c == "{" ) {
+ // do nothing
+ } else {
+ $free_text .= $c;
+ }
+ } elseif ( $uncompleted_curly_brackets == 1 ) {
+ if ( $c == "{" ) {
+ $uncompleted_curly_brackets++;
+ $creating_template_name = true;
+ } elseif ( $c == "}" ) {
+ $uncompleted_curly_brackets--;
+ // is this needed?
+ // if ($field_name != "") {
+ // $field_name = "";
+ // }
+ if ( $page_contents[$i - 1] == '}' ) {
+ $this->addComponent( $curTemplate );
+ }
+ $template_name = "";
+ }
+ } elseif ( $uncompleted_curly_brackets == 2 ) {
+ if ( $c == "}" ) {
+ $uncompleted_curly_brackets--;
+ }
+ if ( $c == "{" ) {
+ $uncompleted_curly_brackets++;
+ $field_value .= $c;
+ } else {
+ if ( $creating_template_name ) {
+ if ( $c == "|" || $c == "}" ) {
+ $curTemplate = DTPageComponent::newTemplate( $template_name );
+ $template_name = str_replace( ' ', '_', trim( $template_name ) );
+ $template_name = str_replace( '&', '&amp;', $template_name );
+ $creating_template_name = false;
+ $creating_field_name = true;
+ $field_id = 1;
+ } else {
+ $template_name .= $c;
+ }
+ } else {
+ if ( $c == "|" || $c == "}" ) {
+ if ( $field_has_name ) {
+ $curTemplate->addNamedField( $field_name, $field_value );
+ $field_value = "";
+ $field_has_name = false;
+ } else {
+ // "field_name" is actually the value
+ $curTemplate->addUnnamedField( $field_name );
+ }
+ $creating_field_name = true;
+ $field_name = "";
+ } elseif ( $c == "=" ) {
+ // handle case of = in value
+ if ( ! $creating_field_name ) {
+ $field_value .= $c;
+ } else {
+ $creating_field_name = false;
+ $field_has_name = true;
+ }
+ } elseif ( $creating_field_name ) {
+ $field_name .= $c;
+ } else {
+ $field_value .= $c;
+ }
+ }
+ }
+ } else { // greater than 2
+ if ( $c == "}" ) {
+ $uncompleted_curly_brackets--;
+ } elseif ( $c == "{" ) {
+ $uncompleted_curly_brackets++;
+ }
+ $field_value .= $c;
+ }
+ }
+ }
+
+ /**
+ * Helper function for mergeInPageStructure().
+ */
+ private function getSingleInstanceTemplates() {
+ $instancesPerTemplate = array();
+ foreach ( $this->mComponents as $pageComponent ) {
+ if ( $pageComponent->mIsTemplate ) {
+ $templateName = $pageComponent->mTemplateName;
+ if ( array_key_exists( $templateName, $instancesPerTemplate ) ) {
+ $instancesPerTemplate[$templateName]++;
+ } else {
+ $instancesPerTemplate[$templateName] = 1;
+ }
+ }
+ }
+
+ $singleInstanceTemplates = array();
+ foreach ( $instancesPerTemplate as $templateName => $instances ) {
+ if ( $instances == 1 ) {
+ $singleInstanceTemplates[] = $templateName;
+ }
+ }
+ return $singleInstanceTemplates;
+ }
+
+ private function getIndexOfTemplateName( $templateName ) {
+ foreach ( $this->mComponents as $i => $pageComponent ) {
+ if ( $pageComponent->mTemplateName == $templateName ) {
+ return $i;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Used when doing a "merge" in an XML or CSV import.
+ */
+ public function mergeInPageStructure( $secondPageStructure ) {
+ // If there are any templates that have one instance in both
+ // pages, replace values for their fields with values from
+ // the second page.
+ $singleInstanceTemplatesHere = $this->getSingleInstanceTemplates();
+ $singleInstanceTemplatesThere = $secondPageStructure->getSingleInstanceTemplates();
+ $singleInstanceTemplatesInBoth = array_intersect( $singleInstanceTemplatesHere, $singleInstanceTemplatesThere );
+ foreach ( $secondPageStructure->mComponents as $pageComponent ) {
+ if ( in_array( $pageComponent->mTemplateName, $singleInstanceTemplatesInBoth ) ) {
+ $indexOfThisTemplate = $this->getIndexOfTemplateName( $pageComponent->mTemplateName );
+ foreach ( $pageComponent->mFields as $fieldName => $fieldValue ) {
+ $this->mComponents[$indexOfThisTemplate]->mFields[$fieldName] = $fieldValue;
+ }
+ } else {
+ $this->mComponents[] = $pageComponent;
+ }
+ }
+ }
+
+ public function toWikitext() {
+ $wikitext = '';
+ foreach ( $this->mComponents as $pageComponent ) {
+ $wikitext .= $pageComponent->toWikitext() . "\n";
+ }
+ return trim( $wikitext );
+ }
+
+ public function toXML( $isSimplified ) {
+ $page_str = str_replace( ' ', '_', wfMessage( 'dt_xml_page' )->inContentLanguage()->text() );
+ $id_str = str_replace( ' ', '_', wfMessage( 'dt_xml_id' )->inContentLanguage()->text() );
+ $title_str = str_replace( ' ', '_', wfMessage( 'dt_xml_title' )->inContentLanguage()->text() );
+
+ $bodyXML = '';
+ foreach ( $this->mComponents as $pageComponent ) {
+ $bodyXML .= $pageComponent->toXML( $isSimplified );
+ }
+ $articleID = $this->mPageTitle->getArticleID();
+ $pageName = $this->mPageTitle->getText();
+ if ( $isSimplified ) {
+ return Xml::tags( $page_str, null, Xml::tags( $id_str, null, $articleID ) . Xml::tags( $title_str, null, $pageName ) . $bodyXML );
+ } else {
+ return Xml::tags( $page_str, array( $id_str => $articleID, $title_str => $pageName ), $bodyXML );
+ }
+ }
+
+}
diff --git a/www/wiki/extensions/DataTransfer/includes/DT_Utils.php b/www/wiki/extensions/DataTransfer/includes/DT_Utils.php
new file mode 100644
index 00000000..03af8e6a
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/includes/DT_Utils.php
@@ -0,0 +1,86 @@
+<?php
+
+/**
+ * Utility functions for the Data Transfer extension.
+ *
+ * @author Yaron Koren
+ */
+class DTUtils {
+
+ static function printImportingMessage() {
+ return "\t" . Xml::element( 'p', null, wfMessage( 'dt_import_importing' )->text() ) . "\n";
+ }
+
+ static function printFileSelector( $fileType ) {
+ $text = "\n\t" . Xml::element( 'p', null, wfMessage( 'dt_import_selectfile', $fileType )->text() ) . "\n";
+ $text .= <<<END
+ <p><input type="file" name="file_name" size="25" /></p>
+
+END;
+ $text .= "\t" . '<hr style="margin: 10px 0 10px 0" />' . "\n";
+ return $text;
+ }
+
+ static function printExistingPagesHandling() {
+ $text = "\t" . Xml::element( 'p', null, wfMessage( 'dt_import_forexisting' )->text() ) . "\n";
+ $existingPagesText = "\n\t" .
+ Xml::element( 'input',
+ array(
+ 'type' => 'radio',
+ 'name' => 'pagesThatExist',
+ 'value' => 'overwrite',
+ 'checked' => 'checked'
+ ) ) . "\n" .
+ "\t" . wfMessage( 'dt_import_overwriteexisting' )->text() . "<br />" . "\n" .
+ "\t" . Xml::element( 'input',
+ array(
+ 'type' => 'radio',
+ 'name' => 'pagesThatExist',
+ 'value' => 'merge',
+ ) ) . "\n" .
+ "\t" . wfMessage( 'dt_import_mergeintoexisting' )->text() . "<br />" . "\n\t" .
+ "\t" . Xml::element( 'input',
+ array(
+ 'type' => 'radio',
+ 'name' => 'pagesThatExist',
+ 'value' => 'skip',
+ ) ) . "\n" .
+ "\t" . wfMessage( 'dt_import_skipexisting' )->text() . "<br />" . "\n" .
+ "\t" . Xml::element( 'input',
+ array(
+ 'type' => 'radio',
+ 'name' => 'pagesThatExist',
+ 'value' => 'append',
+ ) ) . "\n" .
+ "\t" . wfMessage( 'dt_import_appendtoexisting' )->text() . "<br />" . "\n\t";
+ $text .= "\t" . Xml::tags( 'p', null, $existingPagesText ) . "\n";
+ $text .= "\t" . '<hr style="margin: 10px 0 10px 0" />' . "\n";
+ return $text;
+ }
+
+ static function printImportSummaryInput( $fileType ) {
+ $importSummaryText = "\t" . Xml::element( 'input',
+ array(
+ 'type' => 'text',
+ 'id' => 'wpSummary', // ID is necessary for CSS formatting
+ 'class' => 'mw-summary',
+ 'name' => 'import_summary',
+ 'value' => wfMessage( 'dt_import_editsummary', $fileType )->inContentLanguage()->text()
+ )
+ ) . "\n";
+ return "\t" . Xml::tags( 'p', null,
+ wfMessage( 'dt_import_summarydesc' )->text() . "\n" .
+ $importSummaryText ) . "\n";
+ }
+
+ static function printSubmitButton() {
+ $formSubmitText = Xml::element( 'input',
+ array(
+ 'type' => 'submit',
+ 'name' => 'import_file',
+ 'value' => wfMessage( 'import-interwiki-submit' )->text()
+ )
+ );
+ return "\t" . Xml::tags( 'p', null, $formSubmitText ) . "\n";
+ }
+}
diff --git a/www/wiki/extensions/DataTransfer/includes/DT_WikiPage.php b/www/wiki/extensions/DataTransfer/includes/DT_WikiPage.php
new file mode 100644
index 00000000..1bfc848f
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/includes/DT_WikiPage.php
@@ -0,0 +1,40 @@
+<?php
+/**
+ * Class for representing a wiki page.
+ *
+ * @author Yaron Koren
+ * @ingroup DataTransfer
+ */
+
+class DTWikiPage {
+ private $mPageName = null;
+ private $mElements = array();
+
+ public function __construct( $name ) {
+ $this->mPageName = $name;
+ }
+
+ function getName() {
+ return $this->mPageName;
+ }
+
+ function addTemplate( $template ) {
+ $this->mElements[] = $template;
+ }
+
+ function addFreeText( $free_text ) {
+ $this->mElements[] = $free_text;
+ }
+
+ function createText() {
+ $text = "";
+ foreach ( $this->mElements as $elem ) {
+ if ( $elem instanceof DTWikiTemplate ) {
+ $text .= $elem->createText();
+ } else {
+ $text .= $elem;
+ }
+ }
+ return $text;
+ }
+} \ No newline at end of file
diff --git a/www/wiki/extensions/DataTransfer/includes/DT_WikiTemplate.php b/www/wiki/extensions/DataTransfer/includes/DT_WikiTemplate.php
new file mode 100644
index 00000000..9ab2864e
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/includes/DT_WikiTemplate.php
@@ -0,0 +1,37 @@
+<?php
+/**
+ * Class for representing a template call within a wiki page.
+ *
+ * @author Yaron Koren
+ * @ingroup DataTransfer
+ */
+
+class DTWikiTemplate {
+ private $mName = null;
+ private $mFields = array();
+
+ public function __construct( $name ) {
+ $this->mName = $name;
+ }
+
+ function addField( $name, $value ) {
+ $this->mFields[$name] = $value;
+ }
+
+ function createText() {
+ $multi_line_template = false;
+ $text = '{{' . $this->mName;
+ foreach ( $this->mFields as $field_name => $field_val ) {
+ if ( is_numeric( $field_name ) ) {
+ $text .= "|$field_val";
+ } else {
+ $text .= "\n|$field_name=$field_val";
+ $multi_line_template = true;
+ }
+ }
+ if ( $multi_line_template )
+ $text .= "\n";
+ $text .= '}}' . "\n";
+ return $text;
+ }
+} \ No newline at end of file
diff --git a/www/wiki/extensions/DataTransfer/includes/DT_XMLParser.php b/www/wiki/extensions/DataTransfer/includes/DT_XMLParser.php
new file mode 100644
index 00000000..259e6f5b
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/includes/DT_XMLParser.php
@@ -0,0 +1,215 @@
+<?php
+/**
+ * Class for parsing XML representing wiki pages and their template calls
+ *
+ * @author Yaron Koren
+ * @ingroup DataTransfer
+ */
+
+class DTXMLParser {
+ var $mDebug = false;
+ var $mSource = null;
+ var $mCurFieldName = null;
+ var $mCurFieldValue = '';
+ var $mCurTemplate = null;
+ var $mCurPage = null; // new DTWikiPage();
+ var $mPages = array();
+
+ function __construct( $source ) {
+ $this->mSource = $source;
+ }
+
+ function debug( $text ) {
+ // print "$text. ";
+ }
+
+ function throwXMLerror( $text ) {
+ print htmlspecialchars( $text );
+ }
+
+ function doParse() {
+ $parser = xml_parser_create( "UTF-8" );
+
+ # case folding violates XML standard, turn it off
+ xml_parser_set_option( $parser, XML_OPTION_CASE_FOLDING, false );
+
+ xml_set_object( $parser, $this );
+ xml_set_element_handler( $parser, "in_start", "" );
+
+ $offset = 0; // for context extraction on error reporting
+ do {
+ $chunk = $this->mSource->readChunk();
+ if ( !xml_parse( $parser, $chunk, $this->mSource->atEnd() ) ) {
+ wfDebug( "WikiImporter::doImport encountered XML parsing error\n" );
+ // return new WikiXmlError( $parser, wfMessage( 'import-parse-failure' )->escaped(), $chunk, $offset );
+ }
+ $offset += strlen( $chunk );
+ } while ( $chunk !== false && !$this->mSource->atEnd() );
+ xml_parser_free( $parser );
+ }
+
+ function donothing( $parser, $x, $y = "" ) {
+ # $this->debug( "donothing" );
+ }
+
+
+ function in_start( $parser, $name, $attribs ) {
+ // $this->debug( "in_start $name" );
+ $pages_str = str_replace( ' ', '_', wfMessage( 'dt_xml_pages' )->inContentLanguage()->text() );
+ if ( $name != $pages_str ) {
+ print( "Expected '$pages_str', got '$name'" );
+ }
+ xml_set_element_handler( $parser, "in_pages", "out_pages" );
+ }
+
+ function in_pages( $parser, $name, $attribs ) {
+ $this->debug( "in_pages $name" );
+ $page_str = str_replace( ' ', '_', wfMessage( 'dt_xml_page' )->inContentLanguage()->text() );
+ if ( $name == $page_str ) {
+ $title_str = str_replace( ' ', '_', wfMessage( 'dt_xml_title' )->inContentLanguage()->text() );
+ if ( array_key_exists( $title_str, $attribs ) ) {
+ $this->mCurPage = new DTWikiPage( $attribs[$title_str] );
+ xml_set_element_handler( $parser, "in_page", "out_page" );
+ } else {
+ $this->throwXMLerror( "'$title_str' attribute missing for page" );
+ return;
+ }
+ } else {
+ $this->throwXMLerror( "Expected <$page_str>, got <$name>" );
+ }
+
+ return;
+ }
+
+ function out_pages( $parser, $name ) {
+ $this->debug( "out_pages $name" );
+ xml_set_element_handler( $parser, "donothing", "donothing" );
+ }
+
+ function in_category( $parser, $name, $attribs ) {
+ $this->debug( "in_category $name" );
+ $page_str = str_replace( ' ', '_', wfMessage( 'dt_xml_page' )->inContentLanguage()->text() );
+ if ( $name == $page_str ) {
+ if ( array_key_exists( $title_str, $attribs ) ) {
+ $this->mCurPage = new DTWikiPage( $attribs[$title_str] );
+ xml_set_element_handler( $parser, "in_page", "out_page" );
+ } else {
+ $this->throwXMLerror( "'$title_str' attribute missing for page" );
+ return;
+ }
+ } else {
+ $this->throwXMLerror( "Expected <$page_str>, got <$name>" );
+ return;
+ }
+ }
+
+ function out_category( $parser, $name ) {
+ $this->debug( "out_category $name" );
+ if ( $name != "category" ) {
+ $this->throwXMLerror( "Expected </category>, got </$name>" );
+ return;
+ }
+ xml_set_element_handler( $parser, "donothing", "donothing" );
+ }
+
+ function in_page( $parser, $name, $attribs ) {
+ $this->debug( "in_page $name" );
+ $template_str = str_replace( ' ', '_', wfMessage( 'dt_xml_template' )->inContentLanguage()->text() );
+ $name_str = str_replace( ' ', '_', wfMessage( 'dt_xml_name' )->inContentLanguage()->text() );
+ $free_text_str = str_replace( ' ', '_', wfMessage( 'dt_xml_freetext' )->inContentLanguage()->text() );
+ if ( $name == $template_str ) {
+ if ( array_key_exists( $name_str, $attribs ) ) {
+ $this->mCurTemplate = new DTWikiTemplate( $attribs[$name_str] );
+ xml_set_element_handler( $parser, "in_template", "out_template" );
+ } else {
+ $this->throwXMLerror( "'$name_str' attribute missing for template" );
+ return;
+ }
+ } elseif ( $name == $free_text_str ) {
+ xml_set_element_handler( $parser, "in_freetext", "out_freetext" );
+ xml_set_character_data_handler( $parser, "freetext_value" );
+ } else {
+ $this->throwXMLerror( "Expected <$template_str>, got <$name>" );
+ return;
+ }
+ }
+
+ function out_page( $parser, $name ) {
+ $this->debug( "out_page $name" );
+ $page_str = str_replace( ' ', '_', wfMessage( 'dt_xml_page' )->inContentLanguage()->text() );
+ if ( $name != $page_str ) {
+ $this->throwXMLerror( "Expected </$page_str>, got </$name>" );
+ return;
+ }
+ $this->mPages[] = $this->mCurPage;
+ xml_set_element_handler( $parser, "in_pages", "out_pages" );
+ }
+
+ function in_template( $parser, $name, $attribs ) {
+ $this->debug( "in_template $name" );
+ $field_str = str_replace( ' ', '_', wfMessage( 'dt_xml_field' )->inContentLanguage()->text() );
+ if ( $name == $field_str ) {
+ $name_str = str_replace( ' ', '_', wfMessage( 'dt_xml_name' )->inContentLanguage()->text() );
+ if ( array_key_exists( $name_str, $attribs ) ) {
+ $this->mCurFieldName = $attribs[$name_str];
+ // $this->push( $name );
+ $this->workRevisionCount = 0;
+ $this->workSuccessCount = 0;
+ $this->uploadCount = 0;
+ $this->uploadSuccessCount = 0;
+ xml_set_element_handler( $parser, "in_field", "out_field" );
+ xml_set_character_data_handler( $parser, "field_value" );
+ } else {
+ $this->throwXMLerror( "'$name_str' attribute missing for field" );
+ return;
+ }
+ } else {
+ $this->throwXMLerror( "Expected <$field_str>, got <$name>" );
+ return;
+ }
+ }
+
+ function out_template( $parser, $name ) {
+ $this->debug( "out_template $name" );
+ $template_str = str_replace( ' ', '_', wfMessage( 'dt_xml_template' )->inContentLanguage()->text() );
+ if ( $name != $template_str ) {
+ $this->throwXMLerror( "Expected </$template_str>, got </$name>" );
+ return;
+ }
+ $this->mCurPage->addTemplate( $this->mCurTemplate );
+ xml_set_element_handler( $parser, "in_page", "out_page" );
+ }
+
+ function in_field( $parser, $name, $attribs ) {
+ // xml_set_element_handler( $parser, "donothing", "donothing" );
+ }
+
+ function out_field( $parser, $name ) {
+ $this->debug( "out_field $name" );
+ $field_str = str_replace( ' ', '_', wfMessage( 'dt_xml_field' )->inContentLanguage()->text() );
+ if ( $name == $field_str ) {
+ $this->mCurTemplate->addField( $this->mCurFieldName, $this->mCurFieldValue );
+ $this->mCurFieldValue = '';
+ } else {
+ $this->throwXMLerror( "Expected </$field_str>, got </$name>" );
+ return;
+ }
+ xml_set_element_handler( $parser, "in_template", "out_template" );
+ }
+
+ function field_value( $parser, $data ) {
+ $this->mCurFieldValue .= $data;
+ }
+
+ function in_freetext( $parser, $name, $attribs ) {
+ // xml_set_element_handler( $parser, "donothing", "donothing" );
+ }
+
+ function out_freetext( $parser, $name ) {
+ xml_set_element_handler( $parser, "in_page", "out_page" );
+ }
+
+ function freetext_value( $parser, $data ) {
+ $this->mCurPage->addFreeText( $data );
+ }
+}
diff --git a/www/wiki/extensions/DataTransfer/package.json b/www/wiki/extensions/DataTransfer/package.json
new file mode 100644
index 00000000..ea62e434
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/package.json
@@ -0,0 +1,11 @@
+{
+ "private": true,
+ "scripts": {
+ "test": "grunt test"
+ },
+ "devDependencies": {
+ "grunt": "1.0.3",
+ "grunt-banana-checker": "0.4.0",
+ "grunt-jsonlint": "1.0.7"
+ }
+}
diff --git a/www/wiki/extensions/DataTransfer/specials/DT_ImportCSV.php b/www/wiki/extensions/DataTransfer/specials/DT_ImportCSV.php
new file mode 100644
index 00000000..1a221424
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/specials/DT_ImportCSV.php
@@ -0,0 +1,217 @@
+<?php
+/**
+ * Lets the user import a CSV file to turn into wiki pages
+ *
+ * @author Yaron Koren
+ */
+
+class DTImportCSV extends SpecialPage {
+
+ /**
+ * Constructor
+ */
+ public function __construct( $name='ImportCSV' ) {
+ parent::__construct( $name );
+ }
+
+ public function doesWrites() {
+ return true;
+ }
+
+ function execute( $query ) {
+ $this->setHeaders();
+
+ if ( ! $this->getUser()->isAllowed( 'datatransferimport' ) ) {
+ throw new PermissionsError( 'datatransferimport' );
+ }
+
+ if ( $this->getRequest()->getCheck( 'import_file' ) ) {
+ $text = $this->importFromUploadAndModifyPages();
+ } else {
+ $text = $this->printForm();
+ }
+
+ $this->getOutput()->addModuleStyles( 'ext.datatransfer');
+ $this->getOutput()->addHTML( $text );
+ }
+
+ protected function importFromUploadAndModifyPages () {
+
+ $text = DTUtils::printImportingMessage();
+ $uploadResult = ImportStreamSource::newFromUpload( "file_name" );
+
+ if ( !$uploadResult->isOK() ) {
+ $uploadError = $this->getOutput()->parse( $uploadResult->getWikiText() );
+ $text .= $uploadError;
+ return $text;
+ }
+
+ $source = $uploadResult->value;
+
+ $encoding = $this->getRequest()->getVal( 'encoding' );
+ $pages = array();
+
+ $error_msg = $this->importFromFile( $source->mHandle, $encoding, $pages );
+
+ if ( ! is_null( $error_msg ) ) {
+ $text .= $error_msg;
+ return $text;
+ }
+
+ $importSummary = $this->getRequest()->getVal( 'import_summary' );
+ $forPagesThatExist = $this->getRequest()->getVal( 'pagesThatExist' );
+
+ $text .= self::modifyPages( $pages, $importSummary, $forPagesThatExist );
+
+ return $text;
+ }
+
+ protected function printForm() {
+ $formText = DTUtils::printFileSelector( $this->getFiletype() );
+ $utf8OptionText = "\t" . Xml::element( 'option',
+ array(
+ 'selected' => 'selected',
+ 'value' => 'utf8'
+ ), 'UTF-8' ) . "\n";
+ $utf16OptionText = "\t" . Xml::element( 'option',
+ array(
+ 'value' => 'utf16'
+ ), 'UTF-16' ) . "\n";
+ $encodingSelectText = Xml::tags( 'select',
+ array( 'name' => 'encoding' ),
+ "\n" . $utf8OptionText . $utf16OptionText. "\t" ) . "\n\t";
+ $formText .= "\t" . Xml::tags( 'p', null, $this->msg( 'dt_import_encodingtype', 'CSV' )->text() . " " . $encodingSelectText ) . "\n";
+ $formText .= "\t" . '<hr style="margin: 10px 0 10px 0" />' . "\n";
+ $formText .= DTUtils::printExistingPagesHandling();
+ $formText .= DTUtils::printImportSummaryInput( $this->getFiletype() );
+ $formText .= DTUtils::printSubmitButton();
+ $text = "\t" . Xml::tags( 'form',
+ array(
+ 'enctype' => 'multipart/form-data',
+ 'action' => '',
+ 'method' => 'post'
+ ), $formText ) . "\n";
+ return $text;
+ }
+
+ protected function importFromFile( $csv_file, $encoding, &$pages ) {
+ if ( is_null( $csv_file ) ) {
+ return wfMessage( 'emptyfile' )->text();
+ }
+
+ $table = array();
+ if ( $encoding == 'utf16' ) {
+ // Change encoding to UTF-8.
+ // Starting with PHP 5.3 we could use str_getcsv(),
+ // which would save the tempfile hassle.
+ $tempfile = tmpfile();
+ $csv_string = '';
+ while ( !feof( $csv_file ) ) {
+ $csv_string .= fgets( $csv_file, 65535 );
+ }
+ fwrite( $tempfile, iconv( 'UTF-16', 'UTF-8', $csv_string ) );
+ fseek( $tempfile, 0 );
+ while ( $line = fgetcsv( $tempfile ) ) {
+ array_push( $table, $line );
+ }
+ fclose( $tempfile );
+ } else {
+ while ( $line = fgetcsv( $csv_file ) ) {
+ // Convert from UTF-8 to ASCII - htmlentities()
+ // fails for UTF-8 if there are non-ASCII
+ // characters.
+ // $convertedLine = array();
+ // foreach ( $line as $value ) {
+ // $convertedLine[] = mb_convert_encoding( $value, 'UTF-8', 'ASCII' );
+ // }
+ array_push( $table, $line );
+ }
+ }
+ fclose( $csv_file );
+
+ // Get rid of the "byte order mark", if it's there - this is
+ // a three-character string sometimes put at the beginning
+ // of files to indicate its encoding.
+ // Code copied from:
+ // http://www.dotvoid.com/2010/04/detecting-utf-bom-byte-order-mark/
+ $byteOrderMark = pack( "CCC", 0xef, 0xbb, 0xbf );
+ if ( 0 == strncmp( $table[0][0], $byteOrderMark, 3 ) ) {
+ $table[0][0] = substr( $table[0][0], 3 );
+ // If there were quotation marks around this value,
+ // they didn't get removed, so remove them now.
+ $table[0][0] = trim( $table[0][0], '"' );
+ }
+
+ return $this->importFromArray( $table, $pages );
+
+ }
+
+ protected function importFromArray( $table, &$pages ) {
+ // Check header line to make sure every term is in the
+ // correct format.
+ $titleLabels = array( wfMessage( 'dt_xml_title' )->inContentLanguage()->text() );
+ $freeTextLabels = array( wfMessage( 'dt_xml_freetext' )->inContentLanguage()->text() );
+ // Add the English-language values as well, if this isn't an
+ // English-language wiki.
+ if ( $this->getLanguage()->getCode() !== 'en' ) {
+ $titleLabels[] = wfMessage( 'dt_xml_title' )->inLanguage( 'en' )->text();
+ $freeTextLabels[] = wfMessage( 'dt_xml_freetext' )->inLanguage( 'en' )->text();
+ }
+ foreach ( $table[0] as $i => $headerVal ) {
+ if ( !in_array( $headerVal, $titleLabels )
+ && !in_array( $headerVal, $freeTextLabels )
+ && $headerVal !== ''
+ && !preg_match( '/^[^\[\]]+\[[^\[\]]+]$/', $headerVal ) ) {
+ $errorMsg = wfMessage( 'dt_importcsv_badheader', $i, $headerVal, $titleLabels[0], $freeTextLabels[0] )->text();
+ return $errorMsg;
+ }
+ }
+ foreach ( $table as $i => $line ) {
+ if ( $i == 0 ) continue;
+ $page = new DTPage();
+ foreach ( $line as $j => $val ) {
+ if ( $table[0][$j] === '' ) {
+ continue;
+ }
+ if ( in_array( $table[0][$j], $titleLabels ) ) {
+ $page->setName( $val );
+ } elseif ( in_array( $table[0][$j], $freeTextLabels ) ) {
+ $page->setFreeText( $val );
+ } else {
+ list( $templateName, $fieldName ) = explode( '[', str_replace( ']', '', $table[0][$j] ) );
+ $page->addTemplateField( $templateName, $fieldName, $val );
+ }
+ }
+ $pages[] = $page;
+ }
+
+ return null;
+ }
+
+ protected function modifyPages( $pages, $editSummary, $forPagesThatExist ) {
+ $text = "";
+ $jobs = array();
+ $jobParams = array();
+ $jobParams['user_id'] = $this->getUser()->getId();
+ $jobParams['edit_summary'] = $editSummary;
+ $jobParams['for_pages_that_exist'] = $forPagesThatExist;
+ foreach ( $pages as $page ) {
+ $title = Title::newFromText( $page->getName() );
+ if ( is_null( $title ) ) {
+ $text .= '<p>' . $this->msg( 'img-auth-badtitle', $page->getName() )->text() . "</p>\n";
+ continue;
+ }
+ $jobParams['text'] = $page->createText();
+ $jobs[] = new DTImportJob( $title, $jobParams );
+ }
+ JobQueueGroup::singleton()->push( $jobs );
+
+ $text .= $this->msg( 'dt_import_success' )->numParams( count( $jobs ) )->params( $this->getFiletype() )->parseAsBlock();
+
+ return $text;
+ }
+
+ protected function getFiletype() {
+ return wfMessage( 'dt_filetype_csv' )->text();
+ }
+}
diff --git a/www/wiki/extensions/DataTransfer/specials/DT_ImportSpreadsheet.php b/www/wiki/extensions/DataTransfer/specials/DT_ImportSpreadsheet.php
new file mode 100644
index 00000000..c1da80aa
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/specials/DT_ImportSpreadsheet.php
@@ -0,0 +1,53 @@
+<?php
+/**
+ * Lets the user import a spreadsheet file to turn into wiki pages
+ *
+ * @author Stephan Gambke
+ * @ingroup DataTransfer
+ */
+
+class DTImportSpreadsheet extends DTImportCSV {
+
+ public function __construct( $name='ImportSpreadsheet' ) {
+ parent::__construct( $name );
+ }
+
+ protected function printForm() {
+ if ( !class_exists( 'PHPExcel' ) ) {
+ return '<div class="error">You must have the PHPExcel library installed to run this page.</div>';
+ }
+
+ $formText = DTUtils::printFileSelector( $this->getFiletype() );
+ $formText .= DTUtils::printExistingPagesHandling();
+ $formText .= DTUtils::printImportSummaryInput( $this->getFiletype() );
+ $formText .= DTUtils::printSubmitButton();
+ $text = "\t" . Xml::tags( 'form',
+ array(
+ 'enctype' => 'multipart/form-data',
+ 'action' => '',
+ 'method' => 'post'
+ ), $formText ) . "\n";
+ return $text;
+ }
+
+ protected function importFromFile( $file, $encoding, &$pages ) {
+
+ if ( is_null( $file ) ) {
+ return wfMessage( 'emptyfile' )->text();
+ }
+
+ $metadata = stream_get_meta_data( $file );
+ $filename = $metadata['uri'];
+
+ @$objPHPExcel = PHPExcel_IOFactory::load( $filename );
+
+ $table = $objPHPExcel->getSheet(0)->toArray( '', true, true, false );
+
+ return $this->importFromArray( $table, $pages );
+
+ }
+
+ protected function getFiletype() {
+ return wfMessage( 'dt_filetype_spreadsheet' )->text();
+ }
+} \ No newline at end of file
diff --git a/www/wiki/extensions/DataTransfer/specials/DT_ImportXML.php b/www/wiki/extensions/DataTransfer/specials/DT_ImportXML.php
new file mode 100644
index 00000000..42f7d14d
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/specials/DT_ImportXML.php
@@ -0,0 +1,73 @@
+<?php
+/**
+ * Lets the user import an XML file to turn into wiki pages
+ *
+ * @author Yaron Koren
+ */
+
+class DTImportXML extends SpecialPage {
+
+ /**
+ * Constructor
+ */
+ public function __construct( $name = 'ImportXML' ) {
+ parent::__construct( $name );
+ }
+
+ public function doesWrites() {
+ return true;
+ }
+
+ function execute( $query ) {
+ $this->setHeaders();
+
+ if ( ! $this->getUser()->isAllowed( 'datatransferimport' ) ) {
+ throw new PermissionsError( 'datatransferimport' );
+ }
+
+ $request = $this->getRequest();
+ if ( $request->getCheck( 'import_file' ) ) {
+ $text = DTUtils::printImportingMessage();
+ $uploadResult = ImportStreamSource::newFromUpload( "file_name" );
+ $source = $uploadResult->value;
+ $importSummary = $request->getVal( 'import_summary' );
+ $forPagesThatExist = $request->getVal( 'pagesThatExist' );
+ $text .= self::modifyPages( $source, $importSummary, $forPagesThatExist );
+ } else {
+ $formText = DTUtils::printFileSelector( wfMessage( 'dt_filetype_xml' )->text() );
+ $formText .= DTUtils::printExistingPagesHandling();
+ $formText .= DTUtils::printImportSummaryInput( wfMessage( 'dt_filetype_xml' )->text() );
+ $formText .= DTUtils::printSubmitButton();
+ $text = "\t" . Xml::tags( 'form',
+ array(
+ 'enctype' => 'multipart/form-data',
+ 'action' => '',
+ 'method' => 'post'
+ ), $formText ) . "\n";
+ }
+
+ $this->getOutput()->addHTML( $text );
+ }
+
+ function modifyPages( $source, $editSummary, $forPagesThatExist ) {
+ $text = "";
+ $xml_parser = new DTXMLParser( $source );
+ $xml_parser->doParse();
+ $jobs = array();
+ $job_params = array();
+ $job_params['user_id'] = $this->getUser()->getId();
+ $job_params['edit_summary'] = $editSummary;
+ $job_params['for_pages_that_exist'] = $forPagesThatExist;
+
+ foreach ( $xml_parser->mPages as $page ) {
+ $title = Title::newFromText( $page->getName() );
+ $job_params['text'] = $page->createText();
+ $jobs[] = new DTImportJob( $title, $job_params );
+ }
+ JobQueueGroup::singleton()->push( $jobs );
+
+ $text .= $this->msg( 'dt_import_success' )->numParams( count( $jobs ) )->params( 'XML' )
+ ->parseAsBlock();
+ return $text;
+ }
+}
diff --git a/www/wiki/extensions/DataTransfer/specials/DT_ViewXML.php b/www/wiki/extensions/DataTransfer/specials/DT_ViewXML.php
new file mode 100644
index 00000000..797aa8f9
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/specials/DT_ViewXML.php
@@ -0,0 +1,269 @@
+<?php
+/**
+ * Displays an interface to let the user export pages from the wiki in XML form
+ *
+ * @author Yaron Koren
+ */
+
+class DTViewXML extends SpecialPage {
+
+ /**
+ * Constructor
+ */
+ public function __construct( $name = 'ViewXML' ) {
+ parent::__construct( $name );
+ }
+
+ function execute( $query ) {
+ $this->setHeaders();
+ $this->doSpecialViewXML( $query );
+ }
+
+ static function getCategoriesList() {
+ $dbr = wfGetDB( DB_SLAVE );
+ $categorylinks = $dbr->tableName( 'categorylinks' );
+ $res = $dbr->query( "SELECT DISTINCT cl_to FROM $categorylinks" );
+ $categories = array();
+ while ( $row = $dbr->fetchRow( $res ) ) {
+ $categories[] = $row[0];
+ }
+ $dbr->freeResult( $res );
+ sort( $categories );
+ return $categories;
+ }
+
+ static function getNamespacesList() {
+ $dbr = wfGetDB( DB_SLAVE );
+ $page = $dbr->tableName( 'page' );
+ $res = $dbr->query( "SELECT DISTINCT page_namespace FROM $page" );
+ $namespaces = array();
+ while ( $row = $dbr->fetchRow( $res ) ) {
+ $namespaces[] = $row[0];
+ }
+ $dbr->freeResult( $res );
+ return $namespaces;
+ }
+
+ /*
+ * Get all the pages that belong to a category and all its
+ * subcategories, down a certain number of levels - heavily based
+ * on SMW's SMWInlineQuery::includeSubcategories()
+ */
+ static function getPagesForCategory( $top_category, $num_levels ) {
+ if ( 0 == $num_levels ) return $top_category;
+
+ $db = wfGetDB( DB_SLAVE );
+ $fname = "getPagesForCategory";
+ $categories = array( $top_category );
+ $checkcategories = array( $top_category );
+ $titles = array();
+ for ( $level = $num_levels; $level > 0; $level-- ) {
+ $newcategories = array();
+ foreach ( $checkcategories as $category ) {
+ $res = $db->select( // make the query
+ array( 'categorylinks', 'page' ),
+ array( 'page_id', 'page_title', 'page_namespace' ),
+ array( 'cl_from = page_id',
+ 'cl_to = ' . $db->addQuotes( $category )
+ ),
+ $fname
+ );
+ if ( $res ) {
+ while ( $row = $db->fetchRow( $res ) ) {
+ if ( array_key_exists( 'page_title', $row ) ) {
+ $page_namespace = $row['page_namespace'];
+ if ( $page_namespace == NS_CATEGORY ) {
+ $new_category = $row[ 'page_title' ];
+ if ( !in_array( $new_category, $categories ) ) {
+ $newcategories[] = $new_category;
+ }
+ } else {
+ $titles[] = Title::newFromID( $row['page_id'] );
+ }
+ }
+ }
+ $db->freeResult( $res );
+ }
+ }
+ if ( count( $newcategories ) == 0 ) {
+ return $titles;
+ } else {
+ $categories = array_merge( $categories, $newcategories );
+ }
+ $checkcategories = array_diff( $newcategories, array() );
+ }
+ return $titles;
+ }
+
+ static function getPagesForNamespace( $namespace ) {
+ $dbr = wfGetDB( DB_SLAVE );
+ $page = $dbr->tableName( 'page' );
+ $res = $dbr->query( "SELECT page_id FROM $page WHERE page_namespace = '$namespace'" );
+ $titles = array();
+ while ( $row = $dbr->fetchRow( $res ) ) {
+ $titles[] = Title::newFromID( $row[0] );
+ }
+ $dbr->freeResult( $res );
+ return $titles;
+ }
+
+ /**
+ * Helper function for getXMLForPage()
+ */
+ static function treeContainsElement( $tree, $element ) {
+ // escape out if there's no tree (i.e., category)
+ if ( $tree == null ) {
+ return false;
+ }
+
+ foreach ( $tree as $node => $child_tree ) {
+ if ( $node === $element ) {
+ return true;
+ } elseif ( count( $child_tree ) > 0 ) {
+ if ( self::treeContainsElement( $child_tree, $element ) ) {
+ return true;
+ }
+ }
+ }
+ // no match found
+ return false;
+ }
+
+
+ static function getXMLForPage( $title, $simplified_format, $depth = 0 ) {
+ if ( $depth > 5 ) { return ""; }
+
+ $pageStructure = DTPageStructure::newFromTitle( $title );
+ $text = $pageStructure->toXML( $simplified_format );
+
+ // escape back the curly brackets that were escaped out at the beginning
+ $text = str_replace( '&amp;#123;', '{', $text );
+ $text = str_replace( '&amp;#125;', '}', $text );
+ return $text;
+ }
+
+ function doSpecialViewXML() {
+ global $wgContLang;
+
+ $out = $this->getOutput();
+ $request = $this->getRequest();
+
+ $namespace_labels = $wgContLang->getNamespaces();
+ $category_label = $namespace_labels[NS_CATEGORY];
+ $name_str = str_replace( ' ', '_', wfMessage( 'dt_xml_name' )->inContentLanguage()->text() );
+ $namespace_str = str_replace( ' ', '_', wfMessage( 'dt_xml_namespace' )->text() );
+ $pages_str = str_replace( ' ', '_', wfMessage( 'dt_xml_pages' )->inContentLanguage()->text() );
+
+ $form_submitted = false;
+ $cats = $request->getArray( 'categories' );
+ $nses = $request->getArray( 'namespaces' );
+ $requestedTitles = $request->getVal( 'titles' );
+ if ( ! empty( $cats ) || ! empty( $nses ) || $requestedTitles != null ) {
+ $form_submitted = true;
+ }
+
+ if ( $form_submitted ) {
+ $out->disable();
+
+ // Cancel output buffering and gzipping if set
+ // This should provide safer streaming for pages with history
+ wfResetOutputBuffers();
+ header( "Content-type: application/xml; charset=utf-8" );
+
+ $simplified_format = $request->getVal( 'simplified_format' );
+ $text = "<$pages_str>";
+ if ( $cats ) {
+ foreach ( $cats as $cat => $val ) {
+ if ( $simplified_format )
+ $text .= '<' . str_replace( ' ', '_', $cat ) . ">\n";
+ else
+ $text .= "<$category_label $name_str=\"$cat\">\n";
+ $titles = self::getPagesForCategory( $cat, 10 );
+ foreach ( $titles as $title ) {
+ $text .= self::getXMLForPage( $title, $simplified_format );
+ }
+ if ( $simplified_format ) {
+ $text .= '</' . str_replace( ' ', '_', $cat ) . ">\n";
+ } else {
+ $text .= "</$category_label>\n";
+ }
+ }
+ }
+
+ if ( $nses ) {
+ foreach ( $nses as $ns => $val ) {
+ if ( $ns == 0 ) {
+ $ns_name = "Main";
+ } else {
+ $ns_name = MWNamespace::getCanonicalName( $ns );
+ }
+ if ( $simplified_format ) {
+ $text .= '<' . str_replace( ' ', '_', $ns_name ) . ">\n";
+ } else {
+ $text .= "<$namespace_str $name_str=\"$ns_name\">\n";
+ }
+ $titles = self::getPagesForNamespace( $ns );
+ foreach ( $titles as $title ) {
+ $text .= self::getXMLForPage( $title, $simplified_format );
+ }
+ if ( $simplified_format )
+ $text .= '</' . str_replace( ' ', '_', $ns_name ) . ">\n";
+ else
+ $text .= "</$namespace_str>\n";
+ }
+ }
+
+ // The user can specify a set of page names to view
+ // the XML of, using a "titles=" parameter, separated
+ // by "|", in the manner of the MediaWiki API.
+ // Hm... perhaps all of Special:ViewXML should just
+ // be replaced by an API action?
+ if ( $requestedTitles ) {
+ $pageNames = explode( '|', $requestedTitles );
+ foreach ( $pageNames as $pageName ) {
+ $title = Title::newFromText( $pageName );
+ $text .= self::getXMLForPage( $title, $simplified_format );
+ }
+ }
+
+ $text .= "</$pages_str>";
+ print $text;
+ } else {
+ // set 'title' as hidden field, in case there's no URL niceness
+ global $wgContLang;
+ $mw_namespace_labels = $wgContLang->getNamespaces();
+ $special_namespace = $mw_namespace_labels[NS_SPECIAL];
+ $text = <<<END
+ <form action="" method="get">
+ <input type="hidden" name="title" value="$special_namespace:ViewXML">
+
+END;
+ $text .= "<p>" . wfMessage( 'dt_viewxml_docu' )->text() . "</p>\n";
+ $text .= "<h2>" . wfMessage( 'dt_viewxml_categories' )->text() . "</h2>\n";
+ $categories = self::getCategoriesList();
+ foreach ( $categories as $category ) {
+ $text .= Html::input( "categories[$category]", null, 'checkbox' );
+ $title = Title::makeTitle( NS_CATEGORY, $category );
+ $link = Linker::link( $title, htmlspecialchars( $title->getText() ) );
+ $text .= " $link<br />\n";
+ }
+ $text .= "<h2>" . wfMessage( 'dt_viewxml_namespaces' )->text() . "</h2>\n";
+ $namespaces = self::getNamespacesList();
+ foreach ( $namespaces as $nsCode ) {
+ if ( $nsCode === '0' ) {
+ $nsName = wfMessage( 'blanknamespace' )->escaped();
+ } else {
+ $nsName = htmlspecialchars( $wgContLang->getFormattedNsText( $nsCode ) );
+ if ( $nsName === '' ) continue;
+ }
+ $text .= Html::input( "namespaces[$nsCode]", null, 'checkbox' );
+ $text .= ' ' . str_replace( '_', ' ', $nsName ) . "<br />\n";
+ }
+ $text .= "<br /><p><label><input type=\"checkbox\" name=\"simplified_format\" /> " . wfMessage( 'dt_viewxml_simplifiedformat' )->text() . "</label></p>\n";
+ $text .= "<input type=\"submit\" value=\"" . wfMessage( 'viewxml' )->text() . "\">\n";
+ $text .= "</form>\n";
+
+ $out->addHTML( $text );
+ }
+ }
+}
diff --git a/www/wiki/extensions/DataTransfer/styles/DataTransfer.css b/www/wiki/extensions/DataTransfer/styles/DataTransfer.css
new file mode 100644
index 00000000..b634ed86
--- /dev/null
+++ b/www/wiki/extensions/DataTransfer/styles/DataTransfer.css
@@ -0,0 +1,4 @@
+input.mw-summary {
+ width: 400px;
+ max-width: 100%;
+} \ No newline at end of file