From 4809a15df0b045e8c8d229e1efc0b9d36de6b193 Mon Sep 17 00:00:00 2001 From: preecej Date: Tue, 24 May 2011 00:28:13 +0000 Subject: [PATCH] Added initial copy of DataTransfer extension, with intent to extend and modify. svn path=/; revision=99 --- .../extensions/DataTransfer_PS/COPYING | 348 +++ .../DataTransfer_PS/DataTransfer.php | 149 + .../extensions/DataTransfer_PS/INSTALL | 31 + .../extensions/DataTransfer_PS/README | 24 + .../data_transfer_0.3.8.tar.gz | Bin 0 -> 48877 bytes .../DataTransfer_PS/includes/DT_ImportJob.php | 53 + .../DataTransfer_PS/includes/DT_Utils.php | 89 + .../DataTransfer_PS/includes/DT_XMLParser.php | 273 ++ .../DataTransfer_PS/languages/DT_Aliases.php | 274 ++ .../DataTransfer_PS/languages/DT_Language.php | 34 + .../languages/DT_LanguageEn.php | 13 + .../DataTransfer_PS/languages/DT_Messages.php | 2503 +++++++++++++++++ .../DataTransfer_PS/specials/DT_ImportCSV.php | 231 ++ .../DataTransfer_PS/specials/DT_ImportXML.php | 82 + .../DataTransfer_PS/specials/DT_ViewXML.php | 511 ++++ 15 files changed, 4615 insertions(+) create mode 100644 preecej/semantic_wiki/extensions/DataTransfer_PS/COPYING create mode 100644 preecej/semantic_wiki/extensions/DataTransfer_PS/DataTransfer.php create mode 100644 preecej/semantic_wiki/extensions/DataTransfer_PS/INSTALL create mode 100644 preecej/semantic_wiki/extensions/DataTransfer_PS/README create mode 100644 preecej/semantic_wiki/extensions/DataTransfer_PS/data_transfer_0.3.8.tar.gz create mode 100644 preecej/semantic_wiki/extensions/DataTransfer_PS/includes/DT_ImportJob.php create mode 100644 preecej/semantic_wiki/extensions/DataTransfer_PS/includes/DT_Utils.php create mode 100644 preecej/semantic_wiki/extensions/DataTransfer_PS/includes/DT_XMLParser.php create mode 100644 preecej/semantic_wiki/extensions/DataTransfer_PS/languages/DT_Aliases.php create mode 100644 preecej/semantic_wiki/extensions/DataTransfer_PS/languages/DT_Language.php create mode 100644 preecej/semantic_wiki/extensions/DataTransfer_PS/languages/DT_LanguageEn.php create mode 100644 preecej/semantic_wiki/extensions/DataTransfer_PS/languages/DT_Messages.php create mode 100644 preecej/semantic_wiki/extensions/DataTransfer_PS/specials/DT_ImportCSV.php create mode 100644 preecej/semantic_wiki/extensions/DataTransfer_PS/specials/DT_ImportXML.php create mode 100644 preecej/semantic_wiki/extensions/DataTransfer_PS/specials/DT_ViewXML.php diff --git a/preecej/semantic_wiki/extensions/DataTransfer_PS/COPYING b/preecej/semantic_wiki/extensions/DataTransfer_PS/COPYING new file mode 100644 index 0000000..a865928 --- /dev/null +++ b/preecej/semantic_wiki/extensions/DataTransfer_PS/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. + + + Copyright (C) + + 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. + + , 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/preecej/semantic_wiki/extensions/DataTransfer_PS/DataTransfer.php b/preecej/semantic_wiki/extensions/DataTransfer_PS/DataTransfer.php new file mode 100644 index 0000000..a5fbcfd --- /dev/null +++ b/preecej/semantic_wiki/extensions/DataTransfer_PS/DataTransfer.php @@ -0,0 +1,149 @@ + __FILE__, + 'name' => 'Data Transfer', + 'version' => DATA_TRANSFER_VERSION, + 'author' => 'Yaron Koren', + 'url' => 'http://www.mediawiki.org/wiki/Extension:Data_Transfer', + 'descriptionmsg' => 'datatransfer-desc', +); + +### +# This is the path to your installation of Semantic Forms as +# seen on your local filesystem. Used against some PHP file path +# issues. +## +$dtgIP = dirname( __FILE__ ); +## + +// register all special pages and other classes +$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'; +$wgJobClasses['dtImport'] = 'DTImportJob'; +$wgAutoloadClasses['DTImportJob'] = $dtgIP . '/includes/DT_ImportJob.php'; +$wgAutoloadClasses['DTXMLParser'] = $dtgIP . '/includes/DT_XMLParser.php'; +$wgHooks['AdminLinks'][] = 'dtfAddToAdminLinks'; +$wgHooks['smwInitProperties'][] = 'dtfInitProperties'; + +### +# This is the path to your installation of the Data Transfer extension as +# seen from the web. Change it if required ($wgScriptPath is the +# path to the base directory of your wiki). No final slash. +## +$dtgScriptPath = $wgScriptPath . '/extensions/DataTransfer_PS'; +## + +### +# Permission to import files +### +$wgGroupPermissions['sysop']['datatransferimport'] = true; +$wgAvailableRights[] = 'datatransferimport'; + +// initialize content language +require_once($dtgIP . '/languages/DT_Language.php'); +global $wgLanguageCode; +dtfInitContentLanguage($wgLanguageCode); + +$wgExtensionMessagesFiles['DataTransfer'] = $dtgIP . '/languages/DT_Messages.php'; +$wgExtensionAliasesFiles['DataTransfer'] = $dtgIP . '/languages/DT_Aliases.php'; + +/**********************************************/ +/***** language settings *****/ +/**********************************************/ + +/** + * Initialise a global language object for content language. This + * must happen early on, even before user language is known, to + * determine labels for additional namespaces. In contrast, messages + * can be initialised much later when they are actually needed. + */ +function dtfInitContentLanguage( $langcode ) { + global $dtgIP, $dtgContLang; + + if ( !empty( $dtgContLang ) ) { return; } + + $dtContLangClass = 'DT_Language' . str_replace( '-', '_', ucfirst( $langcode ) ); + + if ( file_exists( $dtgIP . '/languages/' . $dtContLangClass . '.php' ) ) { + include_once( $dtgIP . '/languages/' . $dtContLangClass . '.php' ); + } + + // fallback if language not supported + if ( !class_exists( $dtContLangClass ) ) { + include_once( $dtgIP . '/languages/DT_LanguageEn.php' ); + $dtContLangClass = 'DT_LanguageEn'; + } + + $dtgContLang = new $dtContLangClass(); +} + +/** + * Initialise the global language object for user language. This + * must happen after the content language was initialised, since + * this language is used as a fallback. + */ +function dtfInitUserLanguage( $langcode ) { + global $dtgIP, $dtgLang; + + if ( !empty( $dtgLang ) ) { return; } + + $dtLangClass = 'DT_Language' . str_replace( '-', '_', ucfirst( $langcode ) ); + + if ( file_exists( $dtgIP . '/languages/' . $dtLangClass . '.php' ) ) { + include_once( $dtgIP . '/languages/' . $dtLangClass . '.php' ); + } + + // fallback if language not supported + if ( !class_exists( $dtLangClass ) ) { + global $dtgContLang; + $dtgLang = $dtgContLang; + } else { + $dtgLang = new $dtLangClass(); + } +} + +/**********************************************/ +/***** other global helpers *****/ +/**********************************************/ + +function dtfInitProperties() { + global $dtgContLang; + $dt_props = $dtgContLang->getPropertyLabels(); + SMWPropertyValue::registerProperty( '_DT_XG', '_str', $dt_props[DT_HAS_XML_GROUPING], true ); + // TODO - this should set a "backup" English value as well, + // so that the phrase "Has XML grouping" works in all languages + return true; +} + +/** + * Add links to the 'AdminLinks' special page, defined by the Admin Links + * extension + */ +function dtfAddToAdminLinks( $admin_links_tree ) { + $import_export_section = $admin_links_tree->getSection( wfMsg( 'adminlinks_importexport' ) ); + $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' ) ); + return true; +} diff --git a/preecej/semantic_wiki/extensions/DataTransfer_PS/INSTALL b/preecej/semantic_wiki/extensions/DataTransfer_PS/INSTALL new file mode 100644 index 0000000..16462b6 --- /dev/null +++ b/preecej/semantic_wiki/extensions/DataTransfer_PS/INSTALL @@ -0,0 +1,31 @@ +[[Data Transfer 0.3.8]] + +Contents: +* Disclaimer +* Requirements +* Installation +* Contact + +== Disclaimer == + +For a proper legal disclaimer, see the file "COPYING". + +== Requirements == + +The extension can make use of, but does not require, an install of +Semantic MediaWiki. If Semantic MediaWiki is used, it must be of +version 1.0 or greater. For more details, see Semantic MediaWiki's +own installation requirements. + +== 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 the following line into the file "[wikipath]/LocalSettings.php": + include_once('extensions/DataTransfer/DataTransfer.php'); + +== Contact == + +If you have any issues or questions, please send them to +yaron57@gmail.com. diff --git a/preecej/semantic_wiki/extensions/DataTransfer_PS/README b/preecej/semantic_wiki/extensions/DataTransfer_PS/README new file mode 100644 index 0000000..66652b3 --- /dev/null +++ b/preecej/semantic_wiki/extensions/DataTransfer_PS/README @@ -0,0 +1,24 @@ +== About == + +Data Transfer is an extension to MediaWiki that both exports XML +based on the current contents of pages in a wiki, and imports pages +in both XML format (using the same structure as the XML export) and +CSV format. Both the XML and CSV formats use template calls, and +the fields within them, to define the data structure. Any text that +is not within a template calls 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 written by Yaron Koren. + +== Contact == + +Comments, questions, suggestions and bug reports should be +sent to Yaron at yaron57@gmail.com. diff --git a/preecej/semantic_wiki/extensions/DataTransfer_PS/data_transfer_0.3.8.tar.gz b/preecej/semantic_wiki/extensions/DataTransfer_PS/data_transfer_0.3.8.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..8c58be9e63832120ba92991c404ac65a50ad3649 GIT binary patch literal 48877 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 ) ) { + $this->error = "dtImport: Invalid title"; + wfProfileOut( __METHOD__ ); + return false; + } + + $article = new Article( $this->title ); + if ( !$article ) { + $this->error = 'dtImport: Article not found "' . $this->title->getPrefixedDBkey() . '"'; + wfProfileOut( __METHOD__ ); + 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 ( $for_pages_that_exist == 'append' && $this->title->exists() ) { + $text = $article->getContent() . "\n" . $text; + } + $edit_summary = $this->params['edit_summary']; + $article->doEdit( $text, $edit_summary ); + $wgUser = $actual_user; + wfProfileOut( __METHOD__ ); + return true; + } +} diff --git a/preecej/semantic_wiki/extensions/DataTransfer_PS/includes/DT_Utils.php b/preecej/semantic_wiki/extensions/DataTransfer_PS/includes/DT_Utils.php new file mode 100644 index 0000000..30736b1 --- /dev/null +++ b/preecej/semantic_wiki/extensions/DataTransfer_PS/includes/DT_Utils.php @@ -0,0 +1,89 @@ +

+ +END; + $text .= "\t" . '
' . "\n"; + return $text; + } + + static function printExistingPagesHandling() { + $text = "\t" . Xml::element( 'p', null, wfMsg( 'dt_import_forexisting' ) ) . "\n"; + $existingPagesText = "\n\t" . + Xml::element( 'input', + array( + 'type' => 'radio', + 'name' => 'pagesThatExist', + 'value' => 'overwrite', + 'checked' => 'checked' + ) ) . "\n" . + "\t" . wfMsg( 'dt_import_overwriteexisting' ) . "
" . "\n" . + "\t" . Xml::element( 'input', + array( + 'type' => 'radio', + 'name' => 'pagesThatExist', + 'value' => 'skip', + ) ) . "\n" . + "\t" . wfMsg( 'dt_import_skipexisting' ) . "
" . "\n" . + "\t" . Xml::element( 'input', + array( + 'type' => 'radio', + 'name' => 'pagesThatExist', + 'value' => 'append', + ) ) . "\n" . + "\t" . wfMsg( 'dt_import_appendtoexisting' ) . "
" . "\n\t"; + $text .= "\t" . Xml::tags( 'p', null, $existingPagesText ) . "\n"; + $text .= "\t" . '
' . "\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' => wfMsgForContent( 'dt_import_editsummary', $fileType ) + ) + ) . "\n"; + return "\t" . Xml::tags( 'p', null, + wfMsg( 'dt_import_summarydesc' ) . "\n" . + $importSummaryText ) . "\n"; + } + + static function printSubmitButton() { + $formSubmitText = Xml::element( 'input', + array( + 'type' => 'submit', + 'name' => 'import_file', + 'value' => wfMsg( 'import-interwiki-submit' ) + ) + ); + return "\t" . Xml::tags( 'p', null, $formSubmitText ) . "\n"; + } +} diff --git a/preecej/semantic_wiki/extensions/DataTransfer_PS/includes/DT_XMLParser.php b/preecej/semantic_wiki/extensions/DataTransfer_PS/includes/DT_XMLParser.php new file mode 100644 index 0000000..c8c48e0 --- /dev/null +++ b/preecej/semantic_wiki/extensions/DataTransfer_PS/includes/DT_XMLParser.php @@ -0,0 +1,273 @@ +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; + } +} + +class DTWikiPage { + private $mPageName = null; + private $mElements = array(); + + public function DTWikiPage( $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; + } +} + +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, wfMsgHtml( 'import-parse-failure' ), $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( ' ', '_', wfMsgForContent( 'dt_xml_pages' ) ); + 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( ' ', '_', wfMsgForContent( 'dt_xml_page' ) ); + if ( $name == $page_str ) { + $title_str = str_replace( ' ', '_', wfMsgForContent( 'dt_xml_title' ) ); + if ( array_key_exists( $title_str, $attribs ) ) { + $this->mCurPage = new DTWikiPage( $attribs[$title_str] ); + xml_set_element_handler( $parser, "in_page", "out_page" ); + } else { + return $this->throwXMLerror( "'$title_str' attribute missing for page" ); + } + } else { + return $this->throwXMLerror( "Expected <$page_str>, got <$name>" ); + } + } + + function out_pages( $parser, $name ) { + $this->debug( "out_pages $name" ); + $pages_str = str_replace( ' ', '_', wfMsgForContent( 'dt_xml_pages' ) ); +/* + if( $name != $pages_str ) { + return $this->throwXMLerror( "Expected , got " ); + } +*/ + xml_set_element_handler( $parser, "donothing", "donothing" ); + } + + function in_category( $parser, $name, $attribs ) { + $this->debug( "in_category $name" ); + $page_str = str_replace( ' ', '_', wfMsgForContent( 'dt_xml_page' ) ); + 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 { + return $this->throwXMLerror( "'$title_str' attribute missing for page" ); + } + } else { + return $this->throwXMLerror( "Expected <$page_str>, got <$name>" ); + } + } + + function out_category( $parser, $name ) { + $this->debug( "out_category $name" ); + if ( $name != "category" ) { + return $this->throwXMLerror( "Expected , got " ); + } + xml_set_element_handler( $parser, "donothing", "donothing" ); + } + + function in_page( $parser, $name, $attribs ) { + $this->debug( "in_page $name" ); + $template_str = str_replace( ' ', '_', wfMsgForContent( 'dt_xml_template' ) ); + $name_str = str_replace( ' ', '_', wfMsgForContent( 'dt_xml_name' ) ); + $free_text_str = str_replace( ' ', '_', wfMsgForContent( 'dt_xml_freetext' ) ); + 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 { + return $this->throwXMLerror( "'$name_str' attribute missing for template" ); + } + } elseif ( $name == $free_text_str ) { + xml_set_element_handler( $parser, "in_freetext", "out_freetext" ); + xml_set_character_data_handler( $parser, "freetext_value" ); + } else { + return $this->throwXMLerror( "Expected <$template_str>, got <$name>" ); + } + } + + function out_page( $parser, $name ) { + $this->debug( "out_page $name" ); + $page_str = str_replace( ' ', '_', wfMsgForContent( 'dt_xml_page' ) ); + if ( $name != $page_str ) { + return $this->throwXMLerror( "Expected , got " ); + } + $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( ' ', '_', wfMsgForContent( 'dt_xml_field' ) ); + if ( $name == $field_str ) { + $name_str = str_replace( ' ', '_', wfMsgForContent( 'dt_xml_name' ) ); + 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 { + return $this->throwXMLerror( "'$name_str' attribute missing for field" ); + } + } else { + return $this->throwXMLerror( "Expected <$field_str>, got <$name>" ); + } + } + + function out_template( $parser, $name ) { + $this->debug( "out_template $name" ); + $template_str = str_replace( ' ', '_', wfMsgForContent( 'dt_xml_template' ) ); + if ( $name != $template_str ) { + return $this->throwXMLerror( "Expected , got " ); + } + $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( ' ', '_', wfMsgForContent( 'dt_xml_field' ) ); + if ( $name == $field_str ) { + $this->mCurTemplate->addField( $this->mCurFieldName, $this->mCurFieldValue ); + $this->mCurFieldValue = ''; + } else { + return $this->throwXMLerror( "Expected , got " ); + } + 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/preecej/semantic_wiki/extensions/DataTransfer_PS/languages/DT_Aliases.php b/preecej/semantic_wiki/extensions/DataTransfer_PS/languages/DT_Aliases.php new file mode 100644 index 0000000..96a1809 --- /dev/null +++ b/preecej/semantic_wiki/extensions/DataTransfer_PS/languages/DT_Aliases.php @@ -0,0 +1,274 @@ + array( 'ImportCSV' ), + 'ImportXML' => array( 'ImportXML' ), + 'ViewXML' => array( 'ViewXML' ), +); + +/** Afrikaans (Afrikaans) */ +$specialPageAliases['af'] = array( + 'ViewXML' => array( 'WysXML' ), +); + +/** Arabic (العربية) */ +$specialPageAliases['ar'] = array( + 'ViewXML' => array( 'عرض_إكس_إم_إل' ), +); + +/** Egyptian Spoken Arabic (مصرى) */ +$specialPageAliases['arz'] = array( + 'ViewXML' => array( 'عرض_XML' ), +); + +/** Breton (Brezhoneg) */ +$specialPageAliases['br'] = array( + 'ViewXML' => array( 'GweletXML' ), +); + +/** Bosnian (Bosanski) */ +$specialPageAliases['bs'] = array( + 'ViewXML' => array( 'VidiXML' ), +); + +/** German (Deutsch) */ +$specialPageAliases['de'] = array( + 'ImportCSV' => array( 'CSV_importieren' ), + 'ImportXML' => array( 'XML_importieren' ), + 'ViewXML' => array( 'XML_anzeigen' ), +); + +/** Esperanto (Esperanto) */ +$specialPageAliases['eo'] = array( + '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' ), +); + +/** Franco-Provençal (Arpetan) */ +$specialPageAliases['frp'] = array( + 'ViewXML' => array( 'Vêre_lo_XML', 'VêreLoXML' ), +); + +/** Galician (Galego) */ +$specialPageAliases['gl'] = array( + 'ViewXML' => array( 'Ver XML' ), +); + +/** Swiss German (Alemannisch) */ +$specialPageAliases['gsw'] = array( + 'ViewXML' => array( 'Lueg XML' ), +); + +/** Gujarati (ગુજરાતી) */ +$specialPageAliases['gu'] = array( + 'ViewXML' => array( '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( + '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インポート' ), + 'ImportXML' => array( 'XMLインポート' ), + 'ViewXML' => array( 'XML表示', 'XML表示' ), +); + +/** Khmer (ភាសាខ្មែរ) */ +$specialPageAliases['km'] = array( + 'ViewXML' => array( 'មើលXML' ), +); + +/** Colognian (Ripoarisch) */ +$specialPageAliases['ksh'] = array( + 'ImportCSV' => array( 'CSV_Empotteere' ), + 'ImportXML' => array( 'XML_Empoteere' ), + 'ViewXML' => array( 'XML_beloore' ), +); + +/** 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' ), +); + +/** Macedonian (Македонски) */ +$specialPageAliases['mk'] = array( + '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' ), +); + +/** Nedersaksisch (Nedersaksisch) */ +$specialPageAliases['nds-nl'] = array( + 'ViewXML' => array( 'XML_bekieken' ), +); + +/** Dutch (Nederlands) */ +$specialPageAliases['nl'] = array( + 'ImportCSV' => array( 'CSVImporteren' ), + 'ImportXML' => array( 'XMLImporteren' ), + 'ViewXML' => array( 'XMLBekijken' ), +); + +/** Norwegian (bokmål)‬ (‪Norsk (bokmål)‬) */ +$specialPageAliases['no'] = array( + 'ViewXML' => array( 'Vis_XML' ), +); + +/** Occitan (Occitan) */ +$specialPageAliases['oc'] = array( + 'ViewXML' => array( 'Veire_XML', 'VeireXML' ), +); + +/** Polish (Polski) */ +$specialPageAliases['pl'] = array( + 'ViewXML' => array( 'XML' ), +); + +/** Portuguese (Português) */ +$specialPageAliases['pt'] = array( + 'ViewXML' => array( 'Ver_XML' ), +); + +/** Romanian (Română) */ +$specialPageAliases['ro'] = array( + 'ImportCSV' => array( 'Import_CSV', 'ImportCSV' ), + 'ImportXML' => array( 'Import_XML', 'ImportXML' ), + 'ViewXML' => array( 'Vizualizare_XML' ), +); + +/** Sanskrit (संस्कृत) */ +$specialPageAliases['sa'] = array( + 'ViewXML' => array( 'XMLपश्यति' ), +); + +/** Slovak (Slovenčina) */ +$specialPageAliases['sk'] = array( + 'ViewXML' => array( 'ZobraziťXML' ), +); + +/** Albanian (Shqip) */ +$specialPageAliases['sq'] = array( + 'ViewXML' => array( 'ShihXML' ), +); + +/** Swedish (Svenska) */ +$specialPageAliases['sv'] = array( + '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( + 'ViewXML' => array( 'XMLGör' ), +); + +/** Татарча (Татарча) */ +$specialPageAliases['tt-cyrl'] = array( + 'ImportCSV' => array( 'CSV_импорт' ), + 'ImportXML' => array( 'XML_импорт' ), + 'ViewXML' => array( 'XML_иттереп_ачу' ), +); + +/** Vèneto (Vèneto) */ +$specialPageAliases['vec'] = array( + 'ViewXML' => array( 'VardaXML' ), +); + +/** + * For backwards compatibility with MediaWiki 1.15 and earlier. + */ +$aliases =& $specialPageAliases; \ No newline at end of file diff --git a/preecej/semantic_wiki/extensions/DataTransfer_PS/languages/DT_Language.php b/preecej/semantic_wiki/extensions/DataTransfer_PS/languages/DT_Language.php new file mode 100644 index 0000000..00e7b5c --- /dev/null +++ b/preecej/semantic_wiki/extensions/DataTransfer_PS/languages/DT_Language.php @@ -0,0 +1,34 @@ + DT_SP_HAS_XML_GROUPING, + 'Excluded from XML' => DT_SP_IS_EXCLUDED_FROM_XML, + ); + + /** + * Function that returns the labels for the special properties. + */ + function getPropertyLabels() { + return $this->m_SpecialProperties; + } + + /** + * Aliases for special properties, if any. + */ + function getPropertyAliases() { + return $this->m_SpecialPropertyAliases; + } +} diff --git a/preecej/semantic_wiki/extensions/DataTransfer_PS/languages/DT_LanguageEn.php b/preecej/semantic_wiki/extensions/DataTransfer_PS/languages/DT_LanguageEn.php new file mode 100644 index 0000000..49bb88d --- /dev/null +++ b/preecej/semantic_wiki/extensions/DataTransfer_PS/languages/DT_LanguageEn.php @@ -0,0 +1,13 @@ + 'Has XML grouping', + DT_SP_IS_EXCLUDED_FROM_XML => 'Excluded from XML' +); + +} diff --git a/preecej/semantic_wiki/extensions/DataTransfer_PS/languages/DT_Messages.php b/preecej/semantic_wiki/extensions/DataTransfer_PS/languages/DT_Messages.php new file mode 100644 index 0000000..2032380 --- /dev/null +++ b/preecej/semantic_wiki/extensions/DataTransfer_PS/languages/DT_Messages.php @@ -0,0 +1,2503 @@ + '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_skipexisting' => 'Skip', + 'dt_import_appendtoexisting' => 'Append to existing content', + 'dt_import_summarydesc' => 'Summary of import:', + 'dt_import_editsummary' => '$1 import', + 'dt_import_importing' => 'Importing...', + 'dt_import_success' => '$1 {{PLURAL:$1|page|pages}} will be created from the $2 file.', + 'importcsv' => 'Import CSV', + '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', +); + +/** Message documentation (Message documentation) + * @author EugeneZelenko + * @author Fryed-peach + * @author Jon Harald Søby + * @author Purodha + * @author Raymond + * @author Siebrand + */ +$messages['qqq'] = array( + 'datatransfer-desc' => 'Extension description displayed on [[Special:Version]].', + 'dt_viewxml_categories' => '{{Identical|Categories}}', + 'dt_viewxml_namespaces' => '{{Identical|Namespaces}}', + 'dt_xml_namespace' => '{{Identical|Namespace}} +Used as XML tag name.', + 'dt_xml_pages' => '{{Identical|Pages}} + +Used as XML tag name.', + 'dt_xml_page' => '{{Identical|Page}} +Used as XML tag name.', + 'dt_xml_template' => '{{Identical|Template}} +Used as XML tag name.', + 'dt_xml_field' => '{{Identical|Field}} +Used as XML tag name.', + 'dt_xml_name' => '{{Identical|Name}} + +Used as XML tag name.', + 'dt_xml_title' => '{{Identical|Title}} +Used as XML tag name.', + 'dt_xml_id' => '{{Identical|ID}} + +Used as XML tag name.', + 'dt_xml_freetext' => '{{Identical|Free text}} +Used as XML tag name.', + 'dt_import_selectfile' => '$1 is the file format: either CSV or XML', + 'dt_import_encodingtype' => 'The type of encoding for the file: either UTF-8 or UTF-16', + 'dt_import_skipexisting' => '{{Identical|Skip}}', + 'dt_import_editsummary' => '$1 is the file format: either CSV or XML', + 'dt_import_success' => 'Parameters: +* $1 is the number of pages +* $2 is the file format: either CSV or XML', + 'dt_importcsv_badheader' => 'The text "template_name[field_name]" can be translated. +*$1 is a column number in the first row of the CVS file +*$2 is the value found for the $1th colomn in the first line of the CSV file +*$3 is the title label +*$4 is a free text label', + 'right-datatransferimport' => '{{doc-right}}', +); + +/** Faeag Rotuma (Faeag Rotuma) + * @author Jose77 + */ +$messages['rtm'] = array( + 'dt_viewxml_categories' => 'Katekori', +); + +/** Afrikaans (Afrikaans) + * @author Arnobarnard + * @author Naudefj + */ +$messages['af'] = array( + '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' => 'Ketagorieë', + '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_skipexisting' => 'Slaan oor', + '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', +); + +/** Gheg Albanian (Gegë) + * @author Mdupont + */ +$messages['aln'] = array( + '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', +); + +/** Amharic (አማርኛ) + * @author Codex Sinaiticus + */ +$messages['am'] = array( + 'dt_viewxml_categories' => 'መደቦች', + 'dt_viewxml_namespaces' => 'ክፍለ-ዊኪዎች', + 'dt_xml_namespace' => 'ክፍለ-ዊኪ', + 'dt_xml_name' => 'ስም', + 'dt_xml_title' => 'አርዕስት', +); + +/** Aragonese (Aragonés) + * @author Juanpabl + * @author Remember the dot + */ +$messages['an'] = array( + 'dt_viewxml_namespaces' => 'Espacios de nombres', + 'dt_xml_namespace' => 'Espacio de nombres', + 'dt_xml_page' => 'Pachina', + 'dt_xml_template' => 'Plantilla', + 'dt_xml_name' => 'Nombre', +); + +/** Arabic (العربية) + * @author Meno25 + * @author OsamaK + */ +$messages['ar'] = array( + '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_editsummary' => 'استيراد $1', + 'dt_import_importing' => 'جاري الاستيراد...', + 'dt_import_success' => 'سوف تُنشأ {{PLURAL:$1||صفحة واحدة|صفحتين|$1 صفحات|$1 صفحة}} من ملف $2.', + 'importcsv' => 'استورد CSV', + 'dt_importcsv_badheader' => "خطأ: عنوان العامود $1، '$2'، يجب أن يكون إما '$3'، '$4' أو من الصيغة 'template_name[field_name]'", + 'right-datatransferimport' => 'استورد بيانات', +); + +/** Aramaic (ܐܪܡܝܐ) + * @author Basharh + */ +$messages['arc'] = array( + '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' => 'ܡܥܠܢܘܬܐ ܕܓܠܝܬ̈ܐ', +); + +/** Araucanian (Mapudungun) + * @author Remember the dot + */ +$messages['arn'] = array( + 'dt_xml_page' => 'Pakina', +); + +/** Egyptian Spoken Arabic (مصرى) + * @author Dudi + * @author Ghaly + * @author Meno25 + */ +$messages['arz'] = array( + '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.', +); + +/** Belarusian (Беларуская) + * @author Тест + */ +$messages['be'] = array( + 'dt_viewxml_categories' => 'Катэгорыі', + 'dt_xml_template' => 'Шаблон', +); + +/** Belarusian (Taraškievica orthography) (‪Беларуская (тарашкевіца)‬) + * @author EugeneZelenko + * @author Jim-by + * @author Wizardist + */ +$messages['be-tarask'] = array( + '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_skipexisting' => 'Прапускаць', + 'dt_import_appendtoexisting' => 'Далучаць да існуючага зьместу', + 'dt_import_summarydesc' => 'Кароткае апісаньне імпарту:', + 'dt_import_editsummary' => 'імпарт $1', + 'dt_import_importing' => 'Імпартаваньне...', + 'dt_import_success' => '$1 {{PLURAL:$1|старонка будзе|старонкі будуць|старонак будзе}} створана з файла ў фармаце $2.', + 'importcsv' => 'Імпарт CSV', + 'dt_importcsv_badheader' => "Памылка: загаловак слупка $1, '$2', павінен быць адным з '$3', '$4' альбо у форме 'назва_шаблёну[назва_поля]'", + 'right-datatransferimport' => 'імпарт зьвестак', +); + +/** Bulgarian (Български) + * @author DCLXVI + */ +$messages['bg'] = array( + '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_importing' => 'Внасяне...', + 'importcsv' => 'Внасяне на CSV', + 'right-datatransferimport' => 'Внасяне на данни', +); + +/** Breton (Brezhoneg) + * @author Fohanno + * @author Fulup + * @author Gwendal + * @author Y-M D + */ +$messages['br'] = array( + 'datatransfer-desc' => 'Aotreañ a ra da enporzhiañ hag ezporzhiañ roadennoù eus 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_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 $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', + '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ù', +); + +/** Bosnian (Bosanski) + * @author CERminator + */ +$messages['bs'] = array( + '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' => '$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', +); + +/** Catalan (Català) + * @author Jordi Roqué + * @author SMP + * @author Solde + * @author Toniher + */ +$messages['ca'] = array( + '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_summarydesc' => 'Resum de la importació:', + 'dt_import_editsummary' => 'Importació $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', + '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' => 'Importa les dades', +); + +/** Chechen (Нохчийн) + * @author Sasan700 + */ +$messages['ce'] = array( + 'dt_xml_template' => 'Куцкеп', +); + +/** Czech (Česky) + * @author Jkjk + * @author Matěj Grabovský + */ +$messages['cs'] = array( + '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_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', +); + +/** Danish (Dansk) + * @author Jon Harald Søby + */ +$messages['da'] = array( + 'dt_viewxml_categories' => 'Kategorier', + 'dt_xml_namespace' => 'Navnerum', + 'dt_xml_page' => 'Side', + 'dt_xml_name' => 'Navn', + 'dt_xml_title' => 'Titel', + 'dt_xml_id' => 'ID', +); + +/** German (Deutsch) + * @author Als-Holder + * @author Kghbln + * @author Krabina + * @author Revolus + * @author Umherirrender + */ +$messages['de'] = array( + 'datatransfer-desc' => 'Ermöglicht den Export von Daten im XML-Format sowie den Import von Daten im XML- und CSV-Format', + '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' => 'ID', + '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_skipexisting' => 'Seite nicht importieren', + 'dt_import_appendtoexisting' => 'Vorhandenen Inhalt ergänzen', + 'dt_import_summarydesc' => 'Zusammenfassung zum Import:', + 'dt_import_editsummary' => '$1-Import', + 'dt_import_importing' => 'Importiere …', + 'dt_import_success' => '$1 {{PLURAL:$1|Seite|Seiten}} werden aus der $2-Datei importiert.', + 'importcsv' => 'CSV-Datei 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', +); + +/** Lower Sorbian (Dolnoserbski) + * @author Michawiki + */ +$messages['dsb'] = array( + '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_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ś', +); + +/** Ewe (Eʋegbe) */ +$messages['ee'] = array( + 'dt_xml_page' => 'Axa', +); + +/** Greek (Ελληνικά) + * @author Consta + * @author Crazymadlover + * @author Omnipaedista + */ +$messages['el'] = array( + '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_encodingtype' => 'Τύπος κωδικοποίησης', + 'dt_import_editsummary' => 'Εισαγωγή $1', + 'dt_import_importing' => 'Εισάγεται...', + 'importcsv' => 'Εισαγωγή CSV', + 'right-datatransferimport' => 'Εισαγωγή δεδομένων', +); + +/** Esperanto (Esperanto) + * @author Michawiki + * @author Yekrats + */ +$messages['eo'] = array( + 'datatransfer-desc' => 'Permesas importadon kaj eksportadon de datumoj enhave en ŝablonaj vokoj', + 'viewxml' => 'Rigardu 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' => '$1 importo', + 'dt_import_importing' => 'Importante...', + 'importcsv' => 'Importi CSV', + 'right-datatransferimport' => 'Importi datenojn', +); + +/** Spanish (Español) + * @author Crazymadlover + * @author Imre + * @author Locos epraix + * @author Peter17 + * @author Sanbec + * @author Translationista + */ +$messages['es'] = array( + 'datatransfer-desc' => 'Permite importar y exportar datos contenidos en llamadas de plantilla', + 'viewxml' => 'Ver XML', + 'dt_viewxml_docu' => 'Por favor seleccionar entre las siguientes categorías y nombres de espacio 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' => 'Por favor seleccione el archivo $1 a importar:', + 'dt_import_encodingtype' => 'Tipo de codificación:', + 'dt_import_summarydesc' => 'Resumen de importación:', + 'dt_import_editsummary' => '$1 importación', + 'dt_import_importing' => 'Importando...', + 'dt_import_success' => '$1 {{PLURAL:$1|página|páginas}} serán creadas del archivo $2.', + 'importcsv' => 'Importar CSV', + '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', +); + +/** Estonian (Eesti) + * @author Avjoska + * @author Pikne + */ +$messages['et'] = array( + '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_name' => 'Nimi', +); + +/** Basque (Euskara) + * @author Kobazulo + */ +$messages['eu'] = array( + 'viewxml' => 'XML ikusi', + 'dt_viewxml_categories' => 'Kategoriak', + 'dt_xml_pages' => 'Orrialdeak', + 'dt_xml_page' => 'Orrialdea', + 'dt_xml_template' => 'Txantiloia', + 'dt_xml_field' => 'Eremua', + 'dt_xml_name' => 'Izena', + 'dt_xml_title' => 'Izenburua', + 'importxml' => 'XML inportatu', + 'dt_import_selectfile' => 'Mesedez, aukera ezazu inportatzeko $1 fitxategia:', + 'dt_import_editsummary' => '$1 inportatu', + 'dt_import_importing' => 'Inportatzen...', + 'importcsv' => 'CSV inportatu', + 'right-datatransferimport' => 'Datuak inportatu', +); + +/** Persian (فارسی) + * @author Mjbmr + */ +$messages['fa'] = array( + 'dt_xml_template' => 'الگو', + 'dt_xml_name' => 'نام', + 'dt_xml_title' => 'عنوان', +); + +/** Finnish (Suomi) + * @author Centerlink + * @author Crt + * @author Nike + * @author Str4nd + * @author Vililikku + */ +$messages['fi'] = array( + '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' => 'Tunnus', + 'dt_xml_freetext' => 'Vapaa teksti', + 'importxml' => 'XML-tuonti', + 'dt_import_selectfile' => 'Valitse $1-tiedosto tuotavaksi:', + 'dt_import_encodingtype' => 'Merkistötyyppi:', + 'dt_import_skipexisting' => 'Ohita', + 'dt_import_summarydesc' => 'Tuonnin yhteenveto', + 'dt_import_editsummary' => '$1-tuonti', + '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', +); + +/** French (Français) + * @author Crochet.david + * @author Grondin + * @author IAlex + * @author Peter17 + * @author PieRRoMaN + * @author Zetud + */ +$messages['fr'] = array( + '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' => 'ID', + '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_skipexisting' => 'Passer', + 'dt_import_appendtoexisting' => 'Ajouter au contenu existant', + 'dt_import_summarydesc' => 'Résumé de l’import :', + 'dt_import_editsummary' => 'Import de $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', + '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', +); + +/** Franco-Provençal (Arpetan) + * @author Cedric31 + */ +$messages['frp'] = array( + 'dt_viewxml_categories' => 'Catègories', + 'dt_viewxml_namespaces' => 'Èspâços de noms', + 'dt_xml_namespace' => 'Èspâço de noms', + 'dt_xml_pages' => 'Pâges', + 'dt_xml_page' => 'Pâge', + 'dt_xml_template' => 'Modèlo', +); + +/** Western Frisian (Frysk) + * @author Snakesteuben + */ +$messages['fy'] = array( + 'dt_viewxml_namespaces' => 'Nammeromten', + 'dt_xml_page' => 'Side', + 'dt_xml_name' => 'Namme', +); + +/** Irish (Gaeilge) + * @author Alison + */ +$messages['ga'] = array( + 'dt_xml_namespace' => 'Ainmspás', +); + +/** Galician (Galego) + * @author Alma + * @author Toliño + */ +$messages['gl'] = array( + '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_skipexisting' => 'Saltar', + 'dt_import_appendtoexisting' => 'Engadir ao contido existente', + 'dt_import_summarydesc' => 'Resumo da importación:', + 'dt_import_editsummary' => 'Importación en $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', + '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', +); + +/** Gothic (Gothic) + * @author Jocke Pirat + */ +$messages['got'] = array( + 'dt_xml_namespace' => 'Seidofera', +); + +/** Ancient Greek (Ἀρχαία ἑλληνικὴ) + * @author Crazymadlover + * @author Omnipaedista + */ +$messages['grc'] = array( + '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' => 'Ἐλεύθερον κείμενον', +); + +/** Swiss German (Alemannisch) + * @author Als-Holder + * @author J. 'mach' wust + */ +$messages['gsw'] = array( + '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', +); + +/** Manx (Gaelg) + * @author MacTire02 + */ +$messages['gv'] = array( + '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', +); + +/** Hausa (هَوُسَ) */ +$messages['ha'] = array( + 'dt_xml_namespace' => 'Sararin suna', + 'dt_xml_page' => 'Shafi', +); + +/** Hawaiian (Hawai`i) + * @author Singularity + */ +$messages['haw'] = array( + 'dt_xml_page' => '‘Ao‘ao', + 'dt_xml_name' => 'Inoa', +); + +/** Hebrew (עברית) + * @author Amire80 + * @author Rotemliss + * @author YaronSh + */ +$messages['he'] = array( + '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_skipexisting' => 'לדלג', + 'dt_import_appendtoexisting' => 'לצרף את התוכן הקיים', + 'dt_import_summarydesc' => 'תקציר היבוא:', + 'dt_import_editsummary' => 'יבוא $1', + 'dt_import_importing' => 'מתבצע יבוא...', + 'dt_import_success' => '{{PLURAL:$1|דף אחד ייוצר|$1 דפים ייוצרו}} מקובץ ה־$2.', + 'importcsv' => 'יבוא CSV', + 'dt_importcsv_badheader' => "שגיאה: כותרת העמודה $1, '$2', חייבת להיות או '$3', '$4' או מהצורה 'שם_התבנית[שם_השדה]'", + 'right-datatransferimport' => 'יבוא נתונים', +); + +/** Hindi (हिन्दी) + * @author Kaustubh + */ +$messages['hi'] = array( + 'datatransfer-desc' => 'टेम्प्लेट कॉल में उपलब्ध डाटाकी आयात-निर्यात करने की अनुमति देता हैं', + 'viewxml' => 'XML देखें', + 'dt_viewxml_docu' => 'कॄपया XML में देखने के लिये श्रेणीयाँ और नामस्थान चुनें।', + 'dt_viewxml_categories' => 'श्रेणीयाँ', + 'dt_viewxml_namespaces' => 'नामस्थान', + 'dt_viewxml_simplifiedformat' => 'आसान फॉरमैट', + 'dt_xml_namespace' => 'नामस्थान', + 'dt_xml_page' => 'पन्ना', + 'dt_xml_field' => 'फिल्ड़', + 'dt_xml_name' => 'नाम', + 'dt_xml_title' => 'शीर्षक', + 'dt_xml_id' => 'आईडी', + 'dt_xml_freetext' => 'मुक्त पाठ', +); + +/** Croatian (Hrvatski) + * @author Dalibor Bosits + */ +$messages['hr'] = array( + 'dt_viewxml_categories' => 'Kategorije', + 'dt_xml_namespace' => 'Imenski prostor', + 'dt_xml_page' => 'Stranica', +); + +/** Upper Sorbian (Hornjoserbsce) + * @author Michawiki + */ +$messages['hsb'] = array( + '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_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ć', +); + +/** Hungarian (Magyar) + * @author Dani + * @author Glanthor Reviol + */ +$messages['hu'] = array( + '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_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', +); + +/** Interlingua (Interlingua) + * @author McDutchie + */ +$messages['ia'] = array( + '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_skipexisting' => 'Saltar', + 'dt_import_appendtoexisting' => 'Adjunger al contento existente', + 'dt_import_summarydesc' => 'Summario de importation:', + 'dt_import_editsummary' => 'Importation de $1', + 'dt_import_importing' => 'Importation in curso…', + 'dt_import_success' => '$1 {{PLURAL:$1|pagina|paginas}} essera create ex le file $2.', + 'importcsv' => 'Importar CSV', + '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', +); + +/** Indonesian (Bahasa Indonesia) + * @author Bennylin + * @author Farras + * @author Irwangatot + * @author IvanLanin + * @author Rex + */ +$messages['id'] = array( + '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 Gratis', + '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', +); + +/** Igbo (Igbo) + * @author Ukabia + */ +$messages['ig'] = array( + 'dt_viewxml_categories' => 'Ébéanọr', + 'dt_xml_template' => 'Àtụ', +); + +/** Ido (Ido) + * @author Malafaya + */ +$messages['io'] = array( + 'dt_xml_template' => 'Shablono', + 'dt_xml_name' => 'Nomo', + 'dt_xml_title' => 'Titulo', +); + +/** Icelandic (Íslenska) + * @author S.Örvarr.S + */ +$messages['is'] = array( + 'dt_viewxml_namespaces' => 'Nafnrými', + 'dt_xml_page' => 'Síða', +); + +/** Italian (Italiano) + * @author Beta16 + * @author BrokenArrow + * @author Darth Kule + */ +$messages['it'] = array( + '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', + 'dt_import_encodingtype' => 'Tipo di codifica', + 'right-datatransferimport' => 'Importa dati', +); + +/** Japanese (日本語) + * @author Aotake + * @author Fryed-peach + * @author JtFuruhata + * @author Ohgi + * @author 青子守歌 + */ +$messages['ja'] = array( + '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_skipexisting' => 'スキップ', + '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」であるか、または「テンプレート名[フィールド名]」という形式になっていなければなりません。', + 'right-datatransferimport' => 'データをインポートする', +); + +/** Javanese (Basa Jawa) + * @author Meursault2004 + */ +$messages['jv'] = array( + 'viewxml' => 'Ndeleng XML', + 'dt_viewxml_categories' => 'Kategori-kategori', + 'dt_viewxml_simplifiedformat' => 'Format prasaja', + 'dt_xml_namespace' => 'Bilik nama', + 'dt_xml_page' => 'Kaca', + 'dt_xml_name' => 'Jeneng', + 'dt_xml_title' => 'Irah-irahan (judhul)', + 'dt_xml_id' => 'ID', + 'dt_xml_freetext' => 'Tèks Bébas', +); + +/** Khmer (ភាសាខ្មែរ) + * @author Chhorran + * @author Lovekhmer + * @author Thearith + * @author គីមស៊្រុន + * @author វ័ណថារិទ្ធ + */ +$messages['km'] = array( + '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' => 'នាំចូល​ទិន្នន័យ​', +); + +/** Kannada (ಕನ್ನಡ) + * @author Nayvik + */ +$messages['kn'] = array( + 'dt_viewxml_categories' => 'ವರ್ಗಗಳು', + 'dt_xml_namespace' => 'ನಾಮವರ್ಗ', + 'dt_xml_pages' => 'ಪುಟಗಳು', + 'dt_xml_page' => 'ಪುಟ', + 'dt_xml_template' => 'ಟೆಂಪ್ಲೇಟು', + 'dt_xml_name' => 'ಹೆಸರು', + 'dt_xml_title' => 'ಶೀರ್ಷಿಕೆ', +); + +/** Kinaray-a (Kinaray-a) + * @author Jose77 + */ +$messages['krj'] = array( + 'dt_viewxml_categories' => 'Manga Kategorya', + 'dt_xml_page' => 'Pahina', +); + +/** Colognian (Ripoarisch) + * @author Purodha + */ +$messages['ksh'] = array( + 'datatransfer-desc' => 'Määt et müjjelesch, Date uß Schabloone ier Oproofe ze emporteere un ze exporteere.', + 'viewxml' => 'XML beloore', + 'dt_viewxml_docu' => 'Don ußsöke, wat fö_n Saachjruppe un Appachtemangs De em XML Fommaat aanloore 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' => 'Name', + 'dt_xml_title' => 'Tėttel', + 'dt_xml_id' => 'Kännong', + 'dt_xml_freetext' => 'Freije Täx', + 'importxml' => 'XML Empotteere', + 'dt_import_selectfile' => 'Söhk de $1-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_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', + '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ä $2-Dattei empotteet.', + 'importcsv' => 'CSV-Dattei empoteere', + 'dt_importcsv_badheader' => 'Fähler: De Shpallde-Övverschreff för $1 es „$2“, mööt ävver „$3“ udder „$4“ sin, udder dat Fommaat „Name_vun_ene_Schablohn[Name_vun_enem_Felldt]“ han.', + 'right-datatransferimport' => 'Daate empoteere', +); + +/** Kurdish (Latin) (Kurdî (Latin)) + * @author George Animal + */ +$messages['ku-latn'] = array( + 'dt_xml_page' => 'Rûpel', + 'dt_xml_name' => 'Nav', + 'dt_xml_title' => 'Sernav', + 'dt_import_summarydesc' => 'Kurteya împortê:', +); + +/** Cornish (Kernowek) + * @author Kernoweger + * @author Kw-Moon + */ +$messages['kw'] = array( + 'dt_viewxml_categories' => 'Classys', + 'dt_xml_page' => 'Folen', +); + +/** Luxembourgish (Lëtzebuergesch) + * @author Robby + */ +$messages['lb'] = array( + '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. ënnert 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_skipexisting' => 'Iwwersprangen', + 'dt_import_appendtoexisting' => 'Bäi den Inhalt deen et gëtt derbäisetzen', + 'dt_import_summarydesc' => 'Resumé vum Import:', + 'dt_import_editsummary' => '$1 importéieren', + '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', + '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', +); + +/** Limburgish (Limburgs) + * @author Aelske + * @author Remember the dot + */ +$messages['li'] = array( + 'dt_xml_page' => 'Pagina', +); + +/** Lithuanian (Lietuvių) + * @author Tomasdd + */ +$messages['lt'] = array( + 'dt_viewxml_categories' => 'Kategorijos', +); + +/** Latgalian (Latgaļu) + * @author Dark Eagle + */ +$messages['ltg'] = array( + 'dt_viewxml_namespaces' => 'Vuordu pluoti', + 'dt_xml_namespace' => 'Vuordu pluots', + 'dt_xml_pages' => 'Puslopys', +); + +/** Latvian (Latviešu) + * @author GreenZeb + */ +$messages['lv'] = array( + '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', +); + +/** Eastern Mari (Олык Марий) + * @author Сай + */ +$messages['mhr'] = array( + 'dt_xml_namespace' => 'Лӱм-влакын кумдыкышт', + 'dt_xml_page' => 'Лаштык', +); + +/** Macedonian (Македонски) + * @author Bjankuloski06 + */ +$messages['mk'] = array( + '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_skipexisting' => 'Прескокни', + 'dt_import_appendtoexisting' => 'Додај во постоечката содржина', + 'dt_import_summarydesc' => 'Опис на увозот:', + 'dt_import_editsummary' => 'Увоз на $1', + 'dt_import_importing' => 'Увезувам...', + 'dt_import_success' => '$1 {{PLURAL:$1|страница ќе биде создадена|страници ќе бидат создадени}} од $2 податотеката.', + 'importcsv' => 'Увоз на CSV', + 'dt_importcsv_badheader' => 'Грешка: насловот на колона $1, „$2“, мора да биде или „$3“, или „$4“, или пак од обликот „template_name[field_name]“', + 'right-datatransferimport' => 'Увезување податоци', +); + +/** Malayalam (മലയാളം) + * @author Junaidpv + * @author Praveenp + * @author Shijualex + */ +$messages['ml'] = array( + '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' => 'സി.എസ്.വി. ഇറക്കുമതി', +); + +/** Mongolian (Монгол) + * @author Chinneeb + */ +$messages['mn'] = array( + 'dt_viewxml_categories' => 'Ангиллууд', + 'dt_viewxml_namespaces' => 'Нэрний зайнууд', + 'dt_xml_namespace' => 'Нэрний зай', + 'dt_xml_page' => 'Хуудас', +); + +/** Marathi (मराठी) + * @author Kaustubh + * @author V.narsikar + */ +$messages['mr'] = array( + 'datatransfer-desc' => 'साचा कॉल मध्ये असणार्‍या डाटाची आयात निर्यात करण्याची परवानगी देतो', + 'viewxml' => 'XML पहा', + 'dt_viewxml_docu' => 'कॄपया XML मध्ये पाहण्यासाठी खालीलपैकी वर्ग व नामविश्वे निवडा.', + 'dt_viewxml_categories' => 'वर्ग', + 'dt_viewxml_namespaces' => 'नामविश्वे', + 'dt_viewxml_simplifiedformat' => 'सोप्या प्रकारे', + 'dt_xml_namespace' => 'नामविश्व', + 'dt_xml_page' => 'पान', + 'dt_xml_field' => 'रकाना', + 'dt_xml_name' => 'नाव', + 'dt_xml_title' => 'शीर्षक', + 'dt_xml_id' => 'क्रमांक (आयडी)', + 'dt_xml_freetext' => 'मुक्त मजकूर', + 'importxml' => 'एक्सएमएल आयात करा', +); + +/** Mirandese (Mirandés) + * @author Malafaya + */ +$messages['mwl'] = array( + 'dt_xml_page' => 'Páigina', +); + +/** Erzya (Эрзянь) + * @author Botuzhaleny-sodamo + */ +$messages['myv'] = array( + 'dt_viewxml_categories' => 'Категорият', + 'dt_viewxml_namespaces' => 'Лем потмот', + 'dt_xml_page' => 'Лопа', + 'dt_xml_template' => 'Лопа парцун', + 'dt_xml_field' => 'Пакся', + 'dt_xml_name' => 'Лемезэ', + 'dt_xml_title' => 'Конякс', +); + +/** Mazanderani (مازِرونی) + * @author محک + */ +$messages['mzn'] = array( + 'dt_viewxml_categories' => 'رج‌ئون', +); + +/** Nahuatl (Nāhuatl) + * @author Fluence + */ +$messages['nah'] = array( + 'dt_viewxml_categories' => 'Neneuhcāyōtl', + 'dt_viewxml_namespaces' => 'Tōcātzin', + 'dt_xml_namespace' => 'Tōcātzin', + 'dt_xml_page' => 'Zāzanilli', + 'dt_xml_name' => 'Tōcāitl', + 'dt_xml_title' => 'Tōcāitl', + 'dt_xml_id' => 'ID', +); + +/** Low German (Plattdüütsch) + * @author Slomox + */ +$messages['nds'] = array( + 'dt_xml_name' => 'Naam', +); + +/** Dutch (Nederlands) + * @author Siebrand + * @author Tvdm + */ +$messages['nl'] = array( + '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_skipexisting' => 'Overslaan', + 'dt_import_appendtoexisting' => 'Toevoegen aan bestaande inhoud', + 'dt_import_summarydesc' => 'Samenvatting van de import:', + 'dt_import_editsummary' => '$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', + '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', +); + +/** Norwegian Nynorsk (‪Norsk (nynorsk)‬) + * @author Gunnernett + * @author Harald Khan + * @author Jon Harald Søby + */ +$messages['nn'] = array( + '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', +); + +/** Norwegian (bokmål)‬ (‪Norsk (bokmål)‬) + * @author Jon Harald Søby + * @author Nghtwlkr + */ +$messages['no'] = array( + '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_skipexisting' => 'Hopp over', + 'dt_import_appendtoexisting' => 'Tilføy til eksisterende innhold', + 'dt_import_summarydesc' => 'Importsammendrag:', + 'dt_import_editsummary' => '$1-importering', + 'dt_import_importing' => 'Importerer...', + 'dt_import_success' => '{{PLURAL:$1|Én side|$1 sider}} vil bli importert fra $2-filen.', + 'importcsv' => 'Importer CSV', + 'dt_importcsv_badheader' => "Feil: kolonneoverskriften $1, '$2', må være enten '$3', '$4' eller på formen 'malnavn[feltnavn]'", + 'right-datatransferimport' => 'Importer data', +); + +/** Occitan (Occitan) + * @author Cedric31 + */ +$messages['oc'] = array( + '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_editsummary' => 'Importacion $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', +); + +/** Ossetic (Иронау) + * @author Amikeco + */ +$messages['os'] = array( + 'dt_xml_page' => 'Фарс', + 'dt_xml_template' => 'Шаблон', + 'dt_xml_title' => 'Сæргонд', +); + +/** Deitsch (Deitsch) + * @author Xqt + */ +$messages['pdc'] = array( + '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', +); + +/** Polish (Polski) + * @author McMonster + * @author Sp5uhe + * @author Wpedzich + */ +$messages['pl'] = array( + '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 $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', + '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', +); + +/** Piedmontese (Piemontèis) + * @author Borichèt + * @author Dragonòt + */ +$messages['pms'] = array( + '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', +); + +/** Pashto (پښتو) + * @author Ahmed-Najib-Biabani-Ibrahimkhel + */ +$messages['ps'] = array( + '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_freetext' => 'خپلواکه متن', +); + +/** Portuguese (Português) + * @author Hamilton Abreu + * @author Lijealso + * @author Malafaya + */ +$messages['pt'] = array( + 'datatransfer-desc' => 'Permite importação e exportação de dados contidos em chamadas de predefinições', + 'viewxml' => 'Ver XML', + 'dt_viewxml_docu' => 'Por favor, seleccione 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_skipexisting' => 'Saltar', + 'dt_import_appendtoexisting' => 'Acrescentar ao conteúdo existente', + 'dt_import_summarydesc' => 'Resumo da importação:', + 'dt_import_editsummary' => 'Importação de $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', + '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', +); + +/** Brazilian Portuguese (Português do Brasil) + * @author Eduardo.mps + * @author Giro720 + */ +$messages['pt-br'] = array( + 'datatransfer-desc' => 'Permite a importação e exportação de dados contidos em chamadas de predefinições', + 'viewxml' => 'Ver XML', + 'dt_viewxml_docu' => 'Por favor, selecione dentre 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 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_skipexisting' => 'Pular', + 'dt_import_appendtoexisting' => 'Adicionar ao conteúdo existente', + 'dt_import_summarydesc' => 'Resumo da importação:', + 'dt_import_editsummary' => 'Importação de $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', + 'dt_importcsv_badheader' => "Erro: o cabeçalho da coluna $1, '$2', deve ser '$3', ou '$4' ou da forma 'nome_modelo[nome_campo]'", + 'right-datatransferimport' => 'Importar dados', +); + +/** Romanian (Română) + * @author KlaudiuMihaila + * @author Stelistcristi + */ +$messages['ro'] = array( + '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', + 'importxml' => 'Importă XML', + 'dt_import_summarydesc' => 'Descrierea importului:', + 'dt_import_importing' => 'Importare...', + 'importcsv' => 'Importă CSV', + 'right-datatransferimport' => 'Importă date', +); + +/** Tarandíne (Tarandíne) + * @author Joetaras + */ +$messages['roa-tara'] = array( + '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", +); + +/** Russian (Русский) + * @author Ferrer + * @author Innv + * @author Александр Сигачёв + */ +$messages['ru'] = array( + '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_skipexisting' => 'Пропустить', + 'dt_import_appendtoexisting' => 'Добавить к существующим данным', + 'dt_import_summarydesc' => 'Описание импорта:', + 'dt_import_editsummary' => 'импорт $1', + 'dt_import_importing' => 'Импортирование...', + 'dt_import_success' => '$1 {{PLURAL:$1|страница была|страницы были|страниц были}} созданы из файла $2.', + 'importcsv' => 'Импорт CSV', + 'dt_importcsv_badheader' => 'Ошибка. Заголовок колонки №$1 «$2» должен быть или «$3», или «$4», или в форме «template_name[field_name]»', + 'right-datatransferimport' => 'импорт информации', +); + +/** Rusyn (Русиньскый) + * @author Gazeb + */ +$messages['rue'] = array( + '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', +); + +/** Sicilian (Sicilianu) + * @author Aushulz + */ +$messages['scn'] = array( + 'dt_xml_name' => 'Nomu', + 'dt_xml_id' => 'ID', +); + +/** Slovak (Slovenčina) + * @author Helix84 + */ +$messages['sk'] = array( + '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', +); + +/** Slovenian (Slovenščina) + * @author Dbc334 + */ +$messages['sl'] = array( + 'dt_xml_pages' => 'Strani', + 'dt_xml_page' => 'Stran', +); + +/** Serbian Cyrillic ekavian (‪Српски (ћирилица)‬) + * @author Rancher + * @author Sasa Stefanovic + * @author Жељко Тодоровић + * @author Михајло Анђелковић + */ +$messages['sr-ec'] = array( + '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_editsummary' => '$1 увоз', + 'dt_import_importing' => 'Увоз у току...', + 'importcsv' => 'Увези CSV', + 'right-datatransferimport' => 'Увези податке', +); + +/** Serbian Latin ekavian (‪Srpski (latinica)‬) + * @author Michaello + * @author Жељко Тодоровић + */ +$messages['sr-el'] = array( + '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' => '$1 uvoz', + 'dt_import_importing' => 'Uvoz u toku...', + 'importcsv' => 'Uvezi CSV', + 'right-datatransferimport' => 'Uvezi podatke', +); + +/** Seeltersk (Seeltersk) + * @author Pyt + */ +$messages['stq'] = array( + '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 schä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', +); + +/** Sundanese (Basa Sunda) + * @author Irwangatot + */ +$messages['su'] = array( + 'dt_viewxml_namespaces' => 'Ngaranspasi', +); + +/** Swedish (Svenska) + * @author Fluff + * @author Gabbe.g + * @author Lejonel + * @author M.M.S. + * @author Per + */ +$messages['sv'] = array( + '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_editsummary' => '$1-importering', + 'dt_import_importing' => 'Importerar...', + 'dt_import_success' => '$1 {{PLURAL:$1|sida|sidor}} kommer skapas från $2-filen.', + 'importcsv' => 'Importera CSV', + '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', +); + +/** Silesian (Ślůnski) + * @author Herr Kriss + */ +$messages['szl'] = array( + 'dt_xml_page' => 'Zajta', + 'dt_xml_name' => 'Mjano', +); + +/** Tamil (தமிழ்) + * @author TRYPPN + * @author Trengarasu + * @author Ulmo + */ +$messages['ta'] = array( + '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_importing' => 'இறக்குமதியாகிறது...', +); + +/** Telugu (తెలుగు) + * @author Veeven + */ +$messages['te'] = array( + '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' => 'స్వేచ్ఛా పాఠ్యం', +); + +/** Tetum (Tetun) + * @author MF-Warburg + */ +$messages['tet'] = array( + 'dt_viewxml_categories' => 'Kategoria sira', + 'dt_xml_namespace' => 'Espasu pájina nian', + 'dt_xml_page' => 'Pájina', + 'dt_xml_name' => 'Naran', + 'dt_xml_title' => 'Títulu:', + 'dt_xml_id' => 'ID', +); + +/** Tajik (Cyrillic) (Тоҷикӣ (Cyrillic)) + * @author Ibrahim + */ +$messages['tg-cyrl'] = array( + 'dt_viewxml_categories' => 'Гурӯҳҳо', + 'dt_viewxml_namespaces' => 'Фазоҳои ном', + 'dt_xml_namespace' => 'Фазоином', + 'dt_xml_page' => 'Саҳифа', + 'dt_xml_name' => 'Ном', + 'dt_xml_title' => 'Унвон', + 'dt_xml_freetext' => 'Матни дилхоҳ', +); + +/** Tajik (Latin) (Тоҷикӣ (Latin)) + * @author Liangent + */ +$messages['tg-latn'] = array( + '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', +); + +/** Thai (ไทย) + * @author Octahedron80 + */ +$messages['th'] = array( + 'dt_viewxml_categories' => 'หมวดหมู่', + 'dt_viewxml_namespaces' => 'เนมสเปซ', + 'dt_xml_namespace' => 'เนมสเปซ', +); + +/** Turkmen (Türkmençe) + * @author Hanberke + */ +$messages['tk'] = array( + 'dt_xml_page' => 'Sahypa', + 'dt_xml_name' => 'At', +); + +/** Tagalog (Tagalog) + * @author AnakngAraw + */ +$messages['tl'] = array( + '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', +); + +/** Turkish (Türkçe) + * @author Joseph + * @author Karduelis + * @author Mach + * @author Manco Capac + * @author Srhat + * @author Vito Genovese + */ +$messages['tr'] = array( + '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', +); + +/** Uighur (Latin) (ئۇيغۇرچە / Uyghurche‎ (Latin)) + * @author Jose77 + */ +$messages['ug-latn'] = array( + 'dt_xml_page' => 'Bet', +); + +/** Ukrainian (Українська) + * @author AS + * @author Arturyatsko + * @author Prima klasy4na + * @author Тест + */ +$messages['uk'] = array( + '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_skipexisting' => 'Пропустити', + 'dt_import_appendtoexisting' => 'Додати до існуючого вмісту', + 'dt_import_summarydesc' => 'Опис імпорту:', + 'dt_import_editsummary' => 'імпорт $1', + 'dt_import_importing' => 'Імпорт ...', + 'dt_import_success' => '$1 {{PLURAL:$1|сторінка була|сторінки було|сторінок було}} створено з файлу $2.', + 'importcsv' => 'Імпорт CSV', + 'dt_importcsv_badheader' => 'Помилка. Заголовок колонки №$1 «$2» повинен бути або «$3», або «$4», або у формі «template_name[field_name]»', + 'right-datatransferimport' => 'Імпорт даних', +); + +/** Vietnamese (Tiếng Việt) + * @author Minh Nguyen + * @author Vinhtantran + */ +$messages['vi'] = array( + '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_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 hình dạng “tên_tiêu_bản[tên_trường]”', + 'right-datatransferimport' => 'Nhập dữ liệu', +); + +/** Volapük (Volapük) + * @author Malafaya + * @author Smeira + */ +$messages['vo'] = array( + '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', +); + +/** Yiddish (ייִדיש) + * @author פוילישער + */ +$messages['yi'] = array( + 'dt_xml_name' => 'נאָמען', + 'dt_xml_title' => 'טיטל', +); + +/** Simplified Chinese (‪中文(简体)‬) + * @author Gaoxuewei + */ +$messages['zh-hans'] = array( + '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' => '自由文本', +); + +/** Traditional Chinese (‪中文(繁體)‬) + * @author Liangent + * @author Mark85296341 + */ +$messages['zh-hant'] = array( + '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_name' => '名稱', + 'dt_xml_title' => '標題', + 'dt_xml_id' => 'ID', + 'dt_xml_freetext' => '自由文字', +); + +/** Chinese (Taiwan) (‪中文(台灣)‬) + * @author Pbdragonwang + * @author Roc michael + */ +$messages['zh-tw'] = array( + 'datatransfer-desc' => '允許匯入及匯出引用樣板(template calls)的結構性資料', + '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' => '標題(Title)', + 'dt_xml_id' => 'ID', + 'dt_xml_freetext' => '隨意文字', + 'importxml' => '匯入XML', + 'dt_import_selectfile' => '請選取$1檔以供匯入', + 'dt_import_encodingtype' => '編碼類型', + '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」或表單「模板名稱[欄位名稱]」
+Error: the column $1 header, '$2', must be either '$3', '$4' or of the form 'template_name[field_name]'", + 'right-datatransferimport' => '輸入資料', +); + diff --git a/preecej/semantic_wiki/extensions/DataTransfer_PS/specials/DT_ImportCSV.php b/preecej/semantic_wiki/extensions/DataTransfer_PS/specials/DT_ImportCSV.php new file mode 100644 index 0000000..30b833f --- /dev/null +++ b/preecej/semantic_wiki/extensions/DataTransfer_PS/specials/DT_ImportCSV.php @@ -0,0 +1,231 @@ +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 ) { + $text .= '{{' . $template_name . "\n"; + foreach ( $fields as $field_name => $val ) { + $text .= "|$field_name=$val\n"; + } + $text .= '}}' . "\n"; + } + $text .= $this->mFreeText; + return $text; + } +} + +class DTImportCSV extends SpecialPage { + + /** + * Constructor + */ + public function DTImportCSV() { + global $wgLanguageCode; + parent::__construct( 'ImportCSV' ); + DTUtils::loadMessages(); + } + + function execute( $query ) { + global $wgUser, $wgOut, $wgRequest; + $this->setHeaders(); + + if ( ! $wgUser->isAllowed( 'datatransferimport' ) ) { + global $wgOut; + $wgOut->permissionRequired( 'datatransferimport' ); + return; + } + + if ( $wgRequest->getCheck( 'import_file' ) ) { + $text = DTUtils::printImportingMessage(); + $uploadResult = ImportStreamSource::newFromUpload( "file_name" ); + // handling changed in MW 1.17 + $uploadError = null; + if ( $uploadResult instanceof Status ) { + if ( $uploadResult->isOK() ) { + $source = $uploadResult->value; + } else { + $uploadError = $wgOut->parse( $uploadResult->getWikiText() ); + } + } elseif ( $uploadResult instanceof WikiErrorMsg ) { + $uploadError = $uploadResult->getMessage(); + } else { + $source = $uploadResult; + } + + if ( !is_null( $uploadError ) ) { + $text .= $uploadError; + $wgOut->addHTML( $text ); + return; + } + + $encoding = $wgRequest->getVal( 'encoding' ); + $pages = array(); + $error_msg = self::getCSVData( $source->mHandle, $encoding, $pages ); + if ( ! is_null( $error_msg ) ) { + $text .= $error_msg; + $wgOut->addHTML( $text ); + return; + } + + $importSummary = $wgRequest->getVal( 'import_summary' ); + $forPagesThatExist = $wgRequest->getVal( 'pagesThatExist' ); + $text .= self::modifyPages( $pages, $importSummary, $forPagesThatExist ); + } else { + $formText = DTUtils::printFileSelector( 'CSV' ); + $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, wfMsg( 'dt_import_encodingtype', 'CSV' ) . " " . $encodingSelectText ) . "\n"; + $formText .= "\t" . '
' . "\n"; + $formText .= DTUtils::printExistingPagesHandling(); + $formText .= DTUtils::printImportSummaryInput( 'CSV' ); + $formText .= DTUtils::printSubmitButton(); + $text = "\t" . Xml::tags( 'form', + array( + 'enctype' => 'multipart/form-data', + 'action' => '', + 'method' => 'post' + ), $formText ) . "\n"; + } + + $wgOut->addHTML( $text ); + } + + + static function getCSVData( $csv_file, $encoding, &$pages ) { + if ( is_null( $csv_file ) ) + return wfMsg( 'emptyfile' ); + $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 ) ) { + 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], '"' ); + } + + // check header line to make sure every term is in the + // correct format + $title_label = wfMsgForContent( 'dt_xml_title' ); + $free_text_label = wfMsgForContent( 'dt_xml_freetext' ); + foreach ( $table[0] as $i => $header_val ) { + if ( $header_val !== $title_label && $header_val !== $free_text_label && + ! preg_match( '/^[^\[\]]+\[[^\[\]]+]$/', $header_val ) ) { + $error_msg = wfMsg( 'dt_importcsv_badheader', $i, $header_val, $title_label, $free_text_label ); + return $error_msg; + } + } + foreach ( $table as $i => $line ) { + if ( $i == 0 ) continue; + $page = new DTPage(); + foreach ( $line as $j => $val ) { + if ( $val == '' ) continue; + if ( $table[0][$j] == $title_label ) { + $page->setName( $val ); + } elseif ( $table[0][$j] == $free_text_label ) { + $page->setFreeText( $val ); + } else { + list( $template_name, $field_name ) = explode( '[', str_replace( ']', '', $table[0][$j] ) ); + $page->addTemplateField( $template_name, $field_name, $val ); + } + } + $pages[] = $page; + } + } + + function modifyPages( $pages, $editSummary, $forPagesThatExist ) { + global $wgUser, $wgLang; + + $text = ""; + $jobs = array(); + $jobParams = array(); + $jobParams['user_id'] = $wgUser->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 .= '

' . wfMsg( 'img-auth-badtitle', $page->getName() ) . "

\n"; + continue; + } + $jobParams['text'] = $page->createText(); + $jobs[] = new DTImportJob( $title, $jobParams ); + } + Job::batchInsert( $jobs ); + $text .= wfMsgExt( 'dt_import_success', array( 'parse' ), $wgLang->formatNum( count( $jobs ) ), 'CSV' ); + + return $text; + } + +} diff --git a/preecej/semantic_wiki/extensions/DataTransfer_PS/specials/DT_ImportXML.php b/preecej/semantic_wiki/extensions/DataTransfer_PS/specials/DT_ImportXML.php new file mode 100644 index 0000000..ffb4398 --- /dev/null +++ b/preecej/semantic_wiki/extensions/DataTransfer_PS/specials/DT_ImportXML.php @@ -0,0 +1,82 @@ +setHeaders(); + + if ( ! $wgUser->isAllowed( 'datatransferimport' ) ) { + global $wgOut; + $wgOut->permissionRequired( 'datatransferimport' ); + return; + } + + if ( $wgRequest->getCheck( 'import_file' ) ) { + $text = DTUtils::printImportingMessage(); + $uploadResult = ImportStreamSource::newFromUpload( "file_name" ); + // handling changed in MW 1.17 + if ( $uploadResult instanceof Status ) { + $source = $uploadResult->value; + } else { + $source = $uploadResult; + } + $importSummary = $wgRequest->getVal( 'import_summary' ); + $forPagesThatExist = $wgRequest->getVal( 'pagesThatExist' ); + $text .= self::modifyPages( $source, $importSummary, $forPagesThatExist ); + } else { + $formText = DTUtils::printFileSelector( 'XML' ); + $formText .= DTUtils::printExistingPagesHandling(); + $formText .= DTUtils::printImportSummaryInput( 'XML' ); + $formText .= DTUtils::printSubmitButton(); + $text = "\t" . Xml::tags( 'form', + array( + 'enctype' => 'multipart/form-data', + 'action' => '', + 'method' => 'post' + ), $formText ) . "\n"; + + } + + $wgOut->addHTML( $text ); + } + + function modifyPages( $source, $editSummary, $forPagesThatExist ) { + $text = ""; + $xml_parser = new DTXMLParser( $source ); + $xml_parser->doParse(); + $jobs = array(); + $job_params = array(); + global $wgUser; + $job_params['user_id'] = $wgUser->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 ); + } + Job::batchInsert( $jobs ); + global $wgLang; + $text .= wfMsgExt( 'dt_import_success', array( 'parse' ), $wgLang->formatNum( count( $jobs ) ), 'XML' ); + return $text; + } +} diff --git a/preecej/semantic_wiki/extensions/DataTransfer_PS/specials/DT_ViewXML.php b/preecej/semantic_wiki/extensions/DataTransfer_PS/specials/DT_ViewXML.php new file mode 100644 index 0000000..cb2497f --- /dev/null +++ b/preecej/semantic_wiki/extensions/DataTransfer_PS/specials/DT_ViewXML.php @@ -0,0 +1,511 @@ +setHeaders(); + doSpecialViewXML( $query ); + } +} + +function getCategoriesList() { + global $wgContLang, $dtgContLang; + $dt_props = $dtgContLang->getPropertyLabels(); + $exclusion_cat_name = str_replace( ' ', '_', $dt_props[DT_SP_IS_EXCLUDED_FROM_XML] ); + $exclusion_cat_full_name = $wgContLang->getNSText( NS_CATEGORY ) . ':' . $exclusion_cat_name; + $dbr = wfGetDB( DB_SLAVE ); + $categorylinks = $dbr->tableName( 'categorylinks' ); + $res = $dbr->query( "SELECT DISTINCT cl_to FROM $categorylinks" ); + $categories = array(); + while ( $row = $dbr->fetchRow( $res ) ) { + $cat_name = $row[0]; + // add this category to the list, if it's not the + // "Excluded from XML" category, and it's not a child of that + // category + if ( $cat_name != $exclusion_cat_name ) { + $title = Title::newFromText( $cat_name, NS_CATEGORY ); + $parent_categories = $title->getParentCategoryTree( array() ); + if ( ! treeContainsElement( $parent_categories, $exclusion_cat_full_name ) ) + $categories[] = $cat_name; + } + } + $dbr->freeResult( $res ); + sort( $categories ); + return $categories; +} + +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; +} + +function getGroupings() { + global $dtgContLang; + + global $smwgIP; + if ( ! isset( $smwgIP ) ) { + return array(); + } else { + $groupings = array(); + $store = smwfGetStore(); + $grouping_prop = SMWPropertyValue::makeProperty( '_DT_XG' ); + $grouped_props = $store->getAllPropertySubjects( $grouping_prop ); + foreach ( $grouped_props as $grouped_prop ) { + $res = $store->getPropertyValues( $grouped_prop, $grouping_prop ); + $num = count( $res ); + if ( $num > 0 ) { + $grouping_label = $res[0]->getShortWikiText(); + $groupings[] = array( $grouped_prop, $grouping_label ); + } + } + return $groupings; + } +} + +function getSubpagesForPageGrouping( $page_name, $relation_name ) { + $dbr = wfGetDB( DB_SLAVE ); + $smw_relations = $dbr->tableName( 'smw_relations' ); + $smw_attributes = $dbr->tableName( 'smw_attributes' ); + $res = $dbr->query( "SELECT subject_title FROM $smw_relations WHERE object_title = '$page_name' AND relation_title = '$relation_name'" ); + $subpages = array(); + while ( $row = $dbr->fetchRow( $res ) ) { + $subpage_name = $row[0]; + $query_subpage_name = str_replace( "'", "\'", $subpage_name ); + // get the display order + $res2 = $dbr->query( "SELECT value_num FROM $smw_attributes WHERE subject_title = '$query_subpage_name' AND attribute_title = 'Display_order'" ); + if ( $row2 = $dbr->fetchRow( $res2 ) ) { + $display_order = $row2[0]; + } else { + $display_order = - 1; + } + $dbr->freeResult( $res2 ); + // HACK - page name is the key, display order is the value + $subpages[$subpage_name] = $display_order; + } + $dbr->freeResult( $res ); + uasort( $subpages, "cmp" ); + return array_keys( $subpages ); +} + + +/* + * 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() + */ + 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 ( $res && $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; + } + +/* +function getPagesForCategory($category) { + $dbr = wfGetDB( DB_SLAVE ); + $categorylinks = $dbr->tableName( 'categorylinks' ); + $res = $dbr->query("SELECT cl_from FROM $categorylinks WHERE cl_to = '$category'"); + $titles = array(); + while ($row = $dbr->fetchRow($res)) { + $titles[] = Title::newFromID($row[0]); + } + $dbr->freeResult($res); + return $titles; +} +*/ + +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() + */ +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 ( treeContainsElement( $child_tree, $element ) ) { + return true; + } + } + } + // no match found + return false; +} + +function getXMLForPage( $title, $simplified_format, $groupings, $depth = 0 ) { + if ( $depth > 5 ) { return ""; } + + global $wgContLang, $dtgContLang; + + $namespace_labels = $wgContLang->getNamespaces(); + $template_label = $namespace_labels[NS_TEMPLATE]; + $namespace_str = str_replace( ' ', '_', wfMsgForContent( 'dt_xml_namespace' ) ); + $page_str = str_replace( ' ', '_', wfMsgForContent( 'dt_xml_page' ) ); + $field_str = str_replace( ' ', '_', wfMsgForContent( 'dt_xml_field' ) ); + $name_str = str_replace( ' ', '_', wfMsgForContent( 'dt_xml_name' ) ); + $title_str = str_replace( ' ', '_', wfMsgForContent( 'dt_xml_title' ) ); + $id_str = str_replace( ' ', '_', wfMsgForContent( 'dt_xml_id' ) ); + $free_text_str = str_replace( ' ', '_', wfMsgForContent( 'dt_xml_freetext' ) ); + + // if this page belongs to the exclusion category, exit + $parent_categories = $title->getParentCategoryTree( array() ); + $dt_props = $dtgContLang->getPropertyLabels(); + // $exclusion_category = $title->newFromText($dt_props[DT_SP_IS_EXCLUDED_FROM_XML], NS_CATEGORY); + $exclusion_category = $wgContLang->getNSText( NS_CATEGORY ) . ':' . str_replace( ' ', '_', $dt_props[DT_SP_IS_EXCLUDED_FROM_XML] ); + if ( treeContainsElement( $parent_categories, $exclusion_category ) ) + return ""; + $article = new Article( $title ); + $page_title = str_replace( '"', '"', $title->getText() ); + $page_title = str_replace( '&', '&', $page_title ); + if ( $simplified_format ) + $text = "<$page_str><$id_str>{$article->getID()}<$title_str>$page_title\n"; + else + $text = "<$page_str $id_str=\"" . $article->getID() . "\" $title_str=\"" . $page_title . '" >'; + + // traverse the page contents, one character at a time + $uncompleted_curly_brackets = 0; + $page_contents = $article->getContent(); + // escape out variables like "{{PAGENAME}}" + $page_contents = str_replace( '{{PAGENAME}}', '{{PAGENAME}}', $page_contents ); + // escape out parser functions + $page_contents = preg_replace( '/{{(#.+)}}/', '{{$1}}', $page_contents ); + // escape out transclusions + $page_contents = preg_replace( '/{{(:.+)}}/', '{{$1}}', $page_contents ); + // escape out variable names + $page_contents = str_replace( '{{{', '{{{', $page_contents ); + $page_contents = str_replace( '}}}', '}}}', $page_contents ); + // escape out tables + $page_contents = str_replace( '{|', '{|', $page_contents ); + $page_contents = str_replace( '|}', '|}', $page_contents ); + $free_text = ""; + $free_text_id = 1; + $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 ); + $free_text = str_replace( '&', '&', $free_text ); + $free_text = str_replace( '[', '[', $free_text ); + $free_text = str_replace( ']', ']', $free_text ); + $free_text = str_replace( '<', '<', $free_text ); + $free_text = str_replace( '>', '>', $free_text ); + if ( $free_text != "" ) { + $text .= "<$free_text_str id=\"$free_text_id\">$free_text"; + $free_text = ""; + $free_text_id++; + } + } 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] == '}' ) { + if ( $simplified_format ) + $text .= ""; + else + $text .= ""; + } + $template_name = ""; + } + } else { // 2 or greater - probably 2 + if ( $c == "}" ) { + $uncompleted_curly_brackets--; + } + if ( $c == "{" ) { + $uncompleted_curly_brackets++; + } else { + if ( $creating_template_name ) { + if ( $c == "|" || $c == "}" ) { + $template_name = str_replace( ' ', '_', trim( $template_name ) ); + $template_name = str_replace( '&', '&', $template_name ); + if ( $simplified_format ) { + $text .= "<" . $template_name . ">"; + } else + $text .= "<$template_label $name_str=\"$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 ) { + $field_value = str_replace( '&', '&', $field_value ); + if ( $simplified_format ) { + $field_name = str_replace( ' ', '_', trim( $field_name ) ); + $text .= "<" . $field_name . ">"; + $text .= trim( $field_value ); + $text .= ""; + } else { + $text .= "<$field_str $name_str=\"" . trim( $field_name ) . "\">"; + $text .= trim( $field_value ); + $text .= ""; + } + $field_value = ""; + $field_has_name = false; + } else { + // "field_name" is actually the value + if ( $simplified_format ) { + $field_name = str_replace( ' ', '_', $field_name ); + // add "Field" to the beginning of the file name, since + // XML tags that are simply numbers aren't allowed + $text .= "<" . $field_str . '_' . $field_id . ">"; + $text .= trim( $field_name ); + $text .= ""; + } else { + $text .= "<$field_str $name_str=\"$field_id\">"; + $text .= trim( $field_name ); + $text .= ""; + } + $field_id++; + } + $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; + } + } + } + } + } + + // handle groupings, if any apply here; first check if SMW is installed + global $smwgIP; + if ( isset( $smwgIP ) ) { + $store = smwfGetStore(); + foreach ( $groupings as $pair ) { + list( $property_page, $grouping_label ) = $pair; + $wiki_page = SMWDataValueFactory::newTypeIDValue( '_wpg', $page_title ); + $options = new SMWRequestOptions(); + $options->sort = "subject_title"; + // get actual property from the wiki-page of the property + $property = SMWPropertyValue::makeProperty( $property_page->getTitle()->getText() ); + $res = $store->getPropertySubjects( $property, $wiki_page, $options ); + $num = count( $res ); + if ( $num > 0 ) { + $grouping_label = str_replace( ' ', '_', $grouping_label ); + $text .= "<$grouping_label>\n"; + foreach ( $res as $subject ) { + $subject_title = $subject->getTitle(); + $text .= getXMLForPage( $subject_title, $simplified_format, $groupings, $depth + 1 ); + } + $text .= "\n"; + } + } + } + + $text .= "\n"; + // escape back the curly brackets that were escaped out at the beginning + $text = str_replace( '&#123;', '{', $text ); + $text = str_replace( '&#125;', '}', $text ); + return $text; +} + +function doSpecialViewXML() { + global $wgOut, $wgRequest, $wgUser, $wgContLang; + $skin = $wgUser->getSkin(); + $namespace_labels = $wgContLang->getNamespaces(); + $category_label = $namespace_labels[NS_CATEGORY]; + $template_label = $namespace_labels[NS_TEMPLATE]; + $name_str = str_replace( ' ', '_', wfMsgForContent( 'dt_xml_name' ) ); + $namespace_str = str_replace( ' ', '_', wfMsg( 'dt_xml_namespace' ) ); + $pages_str = str_replace( ' ', '_', wfMsgForContent( 'dt_xml_pages' ) ); + + $form_submitted = false; + $page_titles = array(); + $cats = $wgRequest->getArray( 'categories' ); + $nses = $wgRequest->getArray( 'namespaces' ); + if ( count( $cats ) > 0 || count( $nses ) > 0 ) { + $form_submitted = true; + } + + if ( $form_submitted ) { + $wgOut->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" ); + + $groupings = getGroupings(); + $simplified_format = $wgRequest->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 = getPagesForCategory( $cat, 10 ); + foreach ( $titles as $title ) { + $text .= getXMLForPage( $title, $simplified_format, $groupings ); + } + if ( $simplified_format ) + $text .= '\n"; + else + $text .= "\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 = getPagesForNamespace( $ns ); + foreach ( $titles as $title ) { + $text .= getXMLForPage( $title, $simplified_format, $groupings ); + } + if ( $simplified_format ) + $text .= '\n"; + else + $text .= "\n"; + } + } + $text .= ""; + 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; + $text .= "

" . wfMsg( 'dt_viewxml_docu' ) . "

\n"; + $text .= "

" . wfMsg( 'dt_viewxml_categories' ) . "

\n"; + $categories = getCategoriesList(); + foreach ( $categories as $category ) { + $title = Title::makeTitle( NS_CATEGORY, $category ); + $link = $skin->makeLinkObj( $title, $title->getText() ); + $text .= " $link
\n"; + } + $text .= "

" . wfMsg( 'dt_viewxml_namespaces' ) . "

\n"; + $namespaces = getNamespacesList(); + foreach ( $namespaces as $namespace ) { + if ( $namespace == 0 ) { + $ns_name = wfMsgHtml( 'blanknamespace' ); + } else { + $ns_name = htmlspecialchars( $wgContLang->getFormattedNsText( $namespace ) ); + } + $ns_name = str_replace( '_', ' ', $ns_name ); + $text .= " $ns_name
\n"; + } + $text .= "

" . wfMsg( 'dt_viewxml_simplifiedformat' ) . "

\n"; + $text .= "\n"; + $text .= "\n"; + + $wgOut->addHTML( $text ); + } +} -- 2.34.1