r52980 MediaWiki - Code Review archive

Repository:MediaWiki
Revision:r52979‎ | r52980 | r52981 >
Date:14:02, 9 July 2009
Author:yaron
Status:deferred
Tags:
Comment:
Tag for version 0.3.2
Modified paths:
  • /tags/extensions/DataTransfer/REL_0_3_2 (added) (history)
  • /tags/extensions/DataTransfer/REL_0_3_2/INSTALL (replaced) (history)
  • /tags/extensions/DataTransfer/REL_0_3_2/includes/DT_GlobalFunctions.php (replaced) (history)
  • /tags/extensions/DataTransfer/REL_0_3_2/includes/DT_Settings.php (replaced) (history)
  • /tags/extensions/DataTransfer/REL_0_3_2/specials/DT_ImportCSV.php (replaced) (history)
  • /tags/extensions/DataTransfer/REL_0_3_2/specials/DT_ImportXML.php (replaced) (history)
  • /tags/extensions/DataTransfer/REL_0_3_2/specials/DT_ViewXML.php (replaced) (history)

Diff [purge]

Index: tags/extensions/DataTransfer/REL_0_3_2/README
@@ -0,0 +1,24 @@
 2+== About ==
 3+
 4+Data Transfer is an extension to MediaWiki that both exports XML
 5+based on the current contents of pages in a wiki, and imports pages
 6+in both XML format (using the same structure as the XML export) and
 7+CSV format. Both the XML and CSV formats use template calls, and
 8+the fields within them, to define fields. Any text that is not
 9+within a template calls gets placed into one or more "free text"
 10+fields.
 11+
 12+For more information on Data Transfer, see the extension
 13+homepage at
 14+http://www.mediawiki.org/wiki/Extension:Data_Transfer
 15+
 16+Notes on installing Data Transfer can be found in the file INSTALL.
 17+
 18+== Credits ==
 19+
 20+Data Transfer was written by Yaron Koren.
 21+
 22+== Contact ==
 23+
 24+Comments, questions, suggestions and bug reports should be
 25+sent to Yaron at yaron57@gmail.com.
Property changes on: tags/extensions/DataTransfer/REL_0_3_2/README
___________________________________________________________________
Added: svn:eol-style
126 + native
Index: tags/extensions/DataTransfer/REL_0_3_2/specials/DT_ImportCSV.php
@@ -0,0 +1,155 @@
 2+<?php
 3+/**
 4+ * Lets the user import a CSV file to turn into wiki pages
 5+ *
 6+ * @author Yaron Koren
 7+ */
 8+
 9+if (!defined('MEDIAWIKI')) die();
 10+
 11+class DTPage {
 12+ var $mName;
 13+ var $mTemplates;
 14+ var $mFreeText;
 15+
 16+ public function DTPage() {
 17+ $this->mTemplates = array();
 18+ }
 19+
 20+ function setName($name) {
 21+ $this->mName = $name;
 22+ }
 23+
 24+ function getName() {
 25+ return $this->mName;
 26+ }
 27+
 28+ function addTemplateField($template_name, $field_name, $value) {
 29+ if (! array_key_exists($template_name, $this->mTemplates)) {
 30+ $this->mTemplates[$template_name] = array();
 31+ }
 32+ $this->mTemplates[$template_name][$field_name] = $value;
 33+ }
 34+
 35+ function setFreeText($free_text) {
 36+ $this->mFreeText = $free_text;
 37+ }
 38+
 39+ function createText() {
 40+ $text = "";
 41+ foreach ($this->mTemplates as $template_name => $fields) {
 42+ $text .= '{{' . $template_name . "\n";
 43+ foreach ($fields as $field_name => $val) {
 44+ $text .= "|$field_name=$val\n";
 45+ }
 46+ $text .= '}}' . "\n";
 47+ }
 48+ $text .= $this->mFreeText;
 49+ return $text;
 50+ }
 51+}
 52+
 53+class DTImportCSV extends SpecialPage {
 54+
 55+ /**
 56+ * Constructor
 57+ */
 58+ public function DTImportCSV() {
 59+ global $wgLanguageCode;
 60+ SpecialPage::SpecialPage('ImportCSV');
 61+ wfLoadExtensionMessages('DataTransfer');
 62+ }
 63+
 64+ function execute($query) {
 65+ global $wgUser, $wgOut, $wgRequest;
 66+ $this->setHeaders();
 67+
 68+ if ( ! $wgUser->isAllowed('datatransferimport') ) {
 69+ global $wgOut;
 70+ $wgOut->permissionRequired('datatransferimport');
 71+ return;
 72+ }
 73+
 74+ if ($wgRequest->getCheck('import_file')) {
 75+ $text = "<p>" . wfMsg('dt_import_importing') . "</p>\n";
 76+ $source = ImportStreamSource::newFromUpload( "csv_file" );
 77+ $pages = array();
 78+ $error_msg = self::getCSVData($source->mHandle, $pages);
 79+ if (! is_null($error_msg))
 80+ $text .= $error_msg;
 81+ else
 82+ $text .= self::modifyPages($pages);
 83+ } else {
 84+ $select_file_label = wfMsg('dt_import_selectfile', 'CSV');
 85+ $import_button = wfMsg('import-interwiki-submit');
 86+ $text =<<<END
 87+ <p>$select_file_label</p>
 88+ <form enctype="multipart/form-data" action="" method="post">
 89+ <p><input type="file" name="csv_file" size="25" /></p>
 90+ <p><input type="Submit" name="import_file" value="$import_button"></p>
 91+ </form>
 92+
 93+END;
 94+ }
 95+
 96+ $wgOut->addHTML($text);
 97+ }
 98+
 99+
 100+ static function getCSVData($csv_file, &$pages) {
 101+ $table = array();
 102+ while ($line = fgetcsv($csv_file)) {
 103+ // fix values in case the file wasn't UTF-8 encoded -
 104+ // hopefully the UTF-8 value will work across all
 105+ // database encodings
 106+ $encoded_line = array_map('utf8_encode', $line);
 107+ array_push($table, $encoded_line);
 108+ }
 109+ fclose($csv_file);
 110+ // check header line to make sure every term is in the
 111+ // correct format
 112+ $title_label = wfMsgForContent('dt_xml_title');
 113+ $free_text_label = wfMsgForContent('dt_xml_freetext');
 114+ foreach ($table[0] as $i => $header_val) {
 115+ if ($header_val !== $title_label && $header_val !== $free_text_label &&
 116+ ! preg_match('/^[^\[\]]+\[[^\[\]]+]$/', $header_val)) {
 117+ $error_msg = wfMsg('dt_importcsv_badheader', $i, $header_val, $title_label, $free_text_label);
 118+ return $error_msg;
 119+ }
 120+ }
 121+ foreach ($table as $i => $line) {
 122+ if ($i == 0) continue;
 123+ $page = new DTPage();
 124+ foreach ($line as $j => $val) {
 125+ if ($val == '') continue;
 126+ if ($table[0][$j] == $title_label) {
 127+ $page->setName($val);
 128+ } elseif ($table[0][$j] == $free_text_label) {
 129+ $page->setFreeText($val);
 130+ } else {
 131+ list($template_name, $field_name) = explode('[', str_replace(']', '', $table[0][$j]));
 132+ $page->addTemplateField($template_name, $field_name, $val);
 133+ }
 134+ }
 135+ $pages[] = $page;
 136+ }
 137+ }
 138+
 139+ function modifyPages($pages) {
 140+ $text = "";
 141+ $jobs = array();
 142+ $job_params = array();
 143+ global $wgUser;
 144+ $job_params['user_id'] = $wgUser->getId();
 145+ $job_params['edit_summary'] = wfMsgForContent('dt_import_editsummary', 'CSV');
 146+ foreach ($pages as $page) {
 147+ $title = Title::newFromText($page->getName());
 148+ $job_params['text'] = $page->createText();
 149+ $jobs[] = new DTImportJob( $title, $job_params );
 150+ }
 151+ Job::batchInsert( $jobs );
 152+ $text .= wfMsg('dt_import_success', count($jobs), 'CSV');
 153+ return $text;
 154+ }
 155+
 156+}
Property changes on: tags/extensions/DataTransfer/REL_0_3_2/specials/DT_ImportCSV.php
___________________________________________________________________
Added: svn:eol-style
1157 + native
Index: tags/extensions/DataTransfer/REL_0_3_2/specials/DT_ImportXML.php
@@ -0,0 +1,73 @@
 2+<?php
 3+/**
 4+ * Lets the user import an XML file to turn into wiki pages
 5+ *
 6+ * @author Yaron Koren
 7+ */
 8+
 9+if (!defined('MEDIAWIKI')) die();
 10+
 11+class DTImportXML extends SpecialPage {
 12+
 13+ /**
 14+ * Constructor
 15+ */
 16+ public function DTImportXML() {
 17+ global $wgLanguageCode;
 18+ SpecialPage::SpecialPage('ImportXML');
 19+ wfLoadExtensionMessages('DataTransfer');
 20+ }
 21+
 22+ function execute($query) {
 23+ global $wgUser, $wgOut, $wgRequest;
 24+ $this->setHeaders();
 25+
 26+ if ( ! $wgUser->isAllowed('datatransferimport') ) {
 27+ global $wgOut;
 28+ $wgOut->permissionRequired('datatransferimport');
 29+ return;
 30+ }
 31+
 32+ if ($wgRequest->getCheck('import_file')) {
 33+ $text = "<p>" . wfMsg('dt_import_importing') . "</p>\n";
 34+ $source = ImportStreamSource::newFromUpload( "xml_file" );
 35+ $text .= self::modifyPages($source);
 36+ } else {
 37+ $select_file_label = wfMsg('dt_import_selectfile', 'XML');
 38+ $import_button = wfMsg('import-interwiki-submit');
 39+ $text =<<<END
 40+ <p>$select_file_label</p>
 41+ <form enctype="multipart/form-data" action="" method="post">
 42+ <p><input type="file" name="xml_file" size="25" /></p>
 43+ <p><input type="Submit" name="import_file" value="$import_button"></p>
 44+ </form>
 45+
 46+END;
 47+ }
 48+
 49+ $wgOut->addHTML($text);
 50+ }
 51+
 52+ function modifyPages($source) {
 53+ $text = "";
 54+ $xml_parser = new DTXMLParser( $source );
 55+ $xml_parser->doParse();
 56+ $jobs = array();
 57+ $job_params = array();
 58+ global $wgUser;
 59+ $job_params['user_id'] = $wgUser->getId();
 60+ $job_params['edit_summary'] = wfMsgForContent('dt_import_editsummary', 'XML');
 61+
 62+ foreach ($xml_parser->mPages as $page) {
 63+ $title = Title::newFromText($page->getName());
 64+ $job_params['text'] = $page->createText();
 65+ $jobs[] = new DTImportJob( $title, $job_params );
 66+ //$text .= "<p>{$page->getName()}:</p>\n";
 67+ //$text .= "<pre>{$page->createText()}</pre>\n";
 68+ }
 69+ Job::batchInsert( $jobs );
 70+ global $wgLang;
 71+ $text .= wfMsgExt( 'dt_import_success', $wgLang->formatNum( count( $jobs ) ), 'XML' );
 72+ return $text;
 73+ }
 74+}
Property changes on: tags/extensions/DataTransfer/REL_0_3_2/specials/DT_ImportXML.php
___________________________________________________________________
Added: svn:eol-style
175 + native
Index: tags/extensions/DataTransfer/REL_0_3_2/specials/DT_ViewXML.php
@@ -0,0 +1,511 @@
 2+<?php
 3+/**
 4+ * Displays an interface to let the user export pages from the wiki in XML form
 5+ *
 6+ * @author Yaron Koren
 7+ */
 8+
 9+if (!defined('MEDIAWIKI')) die();
 10+
 11+class DTViewXML extends SpecialPage {
 12+
 13+ /**
 14+ * Constructor
 15+ */
 16+ public function DTViewXML() {
 17+ global $wgLanguageCode;
 18+ SpecialPage::SpecialPage('ViewXML');
 19+ wfLoadExtensionMessages('DataTransfer');
 20+ }
 21+
 22+ function execute($query) {
 23+ $this->setHeaders();
 24+ doSpecialViewXML($query);
 25+ }
 26+}
 27+
 28+function getCategoriesList() {
 29+ global $wgContLang, $dtgContLang;
 30+ $dt_props = $dtgContLang->getPropertyLabels();
 31+ $exclusion_cat_name = str_replace(' ', '_', $dt_props[DT_SP_IS_EXCLUDED_FROM_XML]);
 32+ $exclusion_cat_full_name = $wgContLang->getNSText(NS_CATEGORY) . ':' . $exclusion_cat_name;
 33+ $dbr = wfGetDB( DB_SLAVE );
 34+ $categorylinks = $dbr->tableName( 'categorylinks' );
 35+ $res = $dbr->query("SELECT DISTINCT cl_to FROM $categorylinks");
 36+ $categories = array();
 37+ while ($row = $dbr->fetchRow($res)) {
 38+ $cat_name = $row[0];
 39+ // add this category to the list, if it's not the
 40+ // "Excluded from XML" category, and it's not a child of that
 41+ // category
 42+ if ($cat_name != $exclusion_cat_name) {
 43+ $title = Title::newFromText($cat_name, NS_CATEGORY);
 44+ $parent_categories = $title->getParentCategoryTree(array());
 45+ if (! treeContainsElement($parent_categories, $exclusion_cat_full_name))
 46+ $categories[] = $cat_name;
 47+ }
 48+ }
 49+ $dbr->freeResult($res);
 50+ sort($categories);
 51+ return $categories;
 52+}
 53+
 54+function getNamespacesList() {
 55+ $dbr = wfGetDB( DB_SLAVE );
 56+ $page = $dbr->tableName( 'page' );
 57+ $res = $dbr->query("SELECT DISTINCT page_namespace FROM $page");
 58+ $namespaces = array();
 59+ while ($row = $dbr->fetchRow($res)) {
 60+ $namespaces[] = $row[0];
 61+ }
 62+ $dbr->freeResult($res);
 63+ return $namespaces;
 64+}
 65+
 66+function getGroupings() {
 67+ global $dtgContLang;
 68+
 69+ global $smwgIP;
 70+ if (! isset($smwgIP)) {
 71+ return array();
 72+ } else {
 73+ $groupings = array();
 74+ $store = smwfGetStore();
 75+ $grouping_prop = SMWPropertyValue::makeProperty('_DT_XG');
 76+ $grouped_props = $store->getAllPropertySubjects($grouping_prop);
 77+ foreach ($grouped_props as $grouped_prop) {
 78+ $res = $store->getPropertyValues($grouped_prop, $grouping_prop);
 79+ $num = count($res);
 80+ if ($num > 0) {
 81+ $grouping_label = $res[0]->getShortWikiText();
 82+ $groupings[] = array($grouped_prop, $grouping_label);
 83+ }
 84+ }
 85+ return $groupings;
 86+ }
 87+}
 88+
 89+function getSubpagesForPageGrouping($page_name, $relation_name) {
 90+ $dbr = wfGetDB( DB_SLAVE );
 91+ $smw_relations = $dbr->tableName( 'smw_relations' );
 92+ $smw_attributes = $dbr->tableName( 'smw_attributes' );
 93+ $res = $dbr->query("SELECT subject_title FROM $smw_relations WHERE object_title = '$page_name' AND relation_title = '$relation_name'");
 94+ $subpages = array();
 95+ while ($row = $dbr->fetchRow($res)) {
 96+ $subpage_name = $row[0];
 97+ $query_subpage_name = str_replace("'", "\'", $subpage_name);
 98+ // get the display order
 99+ $res2 = $dbr->query("SELECT value_num FROM $smw_attributes WHERE subject_title = '$query_subpage_name' AND attribute_title = 'Display_order'");
 100+ if ($row2 = $dbr->fetchRow($res2)) {
 101+ $display_order = $row2[0];
 102+ } else {
 103+ $display_order = -1;
 104+ }
 105+ $dbr->freeResult($res2);
 106+ // HACK - page name is the key, display order is the value
 107+ $subpages[$subpage_name] = $display_order;
 108+ }
 109+ $dbr->freeResult($res);
 110+ uasort($subpages, "cmp");
 111+ return array_keys($subpages);
 112+}
 113+
 114+
 115+/*
 116+ * Get all the pages that belong to a category and all its subcategories,
 117+ * down a certain number of levels - heavily based on SMW's
 118+ * SMWInlineQuery::includeSubcategories()
 119+ */
 120+ function getPagesForCategory($top_category, $num_levels) {
 121+ if (0 == $num_levels) return $top_category;
 122+
 123+ $db = wfGetDB( DB_SLAVE );
 124+ $fname = "getPagesForCategory";
 125+ $categories = array($top_category);
 126+ $checkcategories = array($top_category);
 127+ $titles = array();
 128+ for ($level = $num_levels; $level > 0; $level--) {
 129+ $newcategories = array();
 130+ foreach ($checkcategories as $category) {
 131+ $res = $db->select( // make the query
 132+ array('categorylinks', 'page'),
 133+ array('page_id', 'page_title', 'page_namespace'),
 134+ array('cl_from = page_id',
 135+ 'cl_to = '. $db->addQuotes($category)),
 136+ $fname);
 137+ if ($res) {
 138+ while ($res && $row = $db->fetchRow($res)) {
 139+ if (array_key_exists('page_title', $row)) {
 140+ $page_namespace = $row['page_namespace'];
 141+ if ($page_namespace == NS_CATEGORY) {
 142+ $new_category = $row[ 'page_title' ];
 143+ if (!in_array($new_category, $categories)) {
 144+ $newcategories[] = $new_category;
 145+ }
 146+ } else {
 147+ $titles[] = Title::newFromID($row['page_id']);
 148+ }
 149+ }
 150+ }
 151+ $db->freeResult( $res );
 152+ }
 153+ }
 154+ if (count($newcategories) == 0) {
 155+ return $titles;
 156+ } else {
 157+ $categories = array_merge($categories, $newcategories);
 158+ }
 159+ $checkcategories = array_diff($newcategories, array());
 160+ }
 161+ return $titles;
 162+ }
 163+
 164+/*
 165+function getPagesForCategory($category) {
 166+ $dbr = wfGetDB( DB_SLAVE );
 167+ $categorylinks = $dbr->tableName( 'categorylinks' );
 168+ $res = $dbr->query("SELECT cl_from FROM $categorylinks WHERE cl_to = '$category'");
 169+ $titles = array();
 170+ while ($row = $dbr->fetchRow($res)) {
 171+ $titles[] = Title::newFromID($row[0]);
 172+ }
 173+ $dbr->freeResult($res);
 174+ return $titles;
 175+}
 176+*/
 177+
 178+function getPagesForNamespace($namespace) {
 179+ $dbr = wfGetDB( DB_SLAVE );
 180+ $page = $dbr->tableName( 'page' );
 181+ $res = $dbr->query("SELECT page_id FROM $page WHERE page_namespace = '$namespace'");
 182+ $titles = array();
 183+ while ($row = $dbr->fetchRow($res)) {
 184+ $titles[] = Title::newFromID($row[0]);
 185+ }
 186+ $dbr->freeResult($res);
 187+ return $titles;
 188+}
 189+
 190+/**
 191+ * Helper function for getXMLForPage()
 192+ */
 193+function treeContainsElement($tree, $element) {
 194+ // escape out if there's no tree (i.e., category)
 195+ if ($tree == null)
 196+ return false;
 197+
 198+ foreach ($tree as $node => $child_tree) {
 199+ if ($node === $element) {
 200+ return true;
 201+ } elseif (count($child_tree) > 0) {
 202+ if (treeContainsElement($child_tree, $element)) {
 203+ return true;
 204+ }
 205+ }
 206+ }
 207+ // no match found
 208+ return false;
 209+}
 210+
 211+function getXMLForPage($title, $simplified_format, $groupings, $depth=0) {
 212+ if ($depth > 5) {return ""; }
 213+
 214+ global $wgContLang, $dtgContLang;
 215+
 216+ $namespace_labels = $wgContLang->getNamespaces();
 217+ $template_label = $namespace_labels[NS_TEMPLATE];
 218+ $namespace_str = str_replace(' ', '_', wfMsgForContent('dt_xml_namespace'));
 219+ $page_str = str_replace(' ', '_', wfMsgForContent('dt_xml_page'));
 220+ $field_str = str_replace(' ', '_', wfMsgForContent('dt_xml_field'));
 221+ $name_str = str_replace(' ', '_', wfMsgForContent('dt_xml_name'));
 222+ $title_str = str_replace(' ', '_', wfMsgForContent('dt_xml_title'));
 223+ $id_str = str_replace(' ', '_', wfMsgForContent('dt_xml_id'));
 224+ $free_text_str = str_replace(' ', '_', wfMsgForContent('dt_xml_freetext'));
 225+
 226+ // if this page belongs to the exclusion category, exit
 227+ $parent_categories = $title->getParentCategoryTree(array());
 228+ $dt_props = $dtgContLang->getPropertyLabels();
 229+ //$exclusion_category = $title->newFromText($dt_props[DT_SP_IS_EXCLUDED_FROM_XML], NS_CATEGORY);
 230+ $exclusion_category = $wgContLang->getNSText(NS_CATEGORY) . ':' . str_replace(' ', '_', $dt_props[DT_SP_IS_EXCLUDED_FROM_XML]);
 231+ if (treeContainsElement($parent_categories, $exclusion_category))
 232+ return "";
 233+ $article = new Article($title);
 234+ $page_title = str_replace('"', '&quot;', $title->getText());
 235+ $page_title = str_replace('&', '&amp;', $page_title);
 236+ if ($simplified_format)
 237+ $text = "<$page_str><$id_str>{$article->getID()}</$id_str><$title_str>$page_title</$title_str>\n";
 238+ else
 239+ $text = "<$page_str $id_str=\"" . $article->getID() . "\" $title_str=\"" . $page_title . '" >';
 240+
 241+ // traverse the page contents, one character at a time
 242+ $uncompleted_curly_brackets = 0;
 243+ $page_contents = $article->getContent();
 244+ // escape out variables like "{{PAGENAME}}"
 245+ $page_contents = str_replace('{{PAGENAME}}', '&#123;&#123;PAGENAME&#125;&#125;', $page_contents);
 246+ // escape out parser functions
 247+ $page_contents = preg_replace('/{{(#.+)}}/', '&#123;&#123;$1&#125;&#125;', $page_contents);
 248+ // escape out transclusions
 249+ $page_contents = preg_replace('/{{(:.+)}}/', '&#123;&#123;$1&#125;&#125;', $page_contents);
 250+ // escape out variable names
 251+ $page_contents = str_replace('{{{', '&#123;&#123;&#123;', $page_contents);
 252+ $page_contents = str_replace('}}}', '&#125;&#125;&#125;', $page_contents);
 253+ // escape out tables
 254+ $page_contents = str_replace('{|', '&#123;|', $page_contents);
 255+ $page_contents = str_replace('|}', '|&#125;', $page_contents);
 256+ $free_text = "";
 257+ $free_text_id = 1;
 258+ $template_name = "";
 259+ $field_name = "";
 260+ $field_value = "";
 261+ $field_has_name = false;
 262+ for ($i = 0; $i < strlen($page_contents); $i++) {
 263+ $c = $page_contents[$i];
 264+ if ($uncompleted_curly_brackets == 0) {
 265+ if ($c == "{" || $i == strlen($page_contents) - 1) {
 266+ if ($i == strlen($page_contents) - 1)
 267+ $free_text .= $c;
 268+ $uncompleted_curly_brackets++;
 269+ $free_text = trim($free_text);
 270+ $free_text = str_replace('&', '&amp;', $free_text);
 271+ $free_text = str_replace('[', '&#91;', $free_text);
 272+ $free_text = str_replace(']', '&#93;', $free_text);
 273+ $free_text = str_replace('<', '&lt;', $free_text);
 274+ $free_text = str_replace('>', '&gt;', $free_text);
 275+ if ($free_text != "") {
 276+ $text .= "<$free_text_str id=\"$free_text_id\">$free_text</$free_text_str>";
 277+ $free_text = "";
 278+ $free_text_id++;
 279+ }
 280+ } elseif ($c == "{") {
 281+ // do nothing
 282+ } else {
 283+ $free_text .= $c;
 284+ }
 285+ } elseif ($uncompleted_curly_brackets == 1) {
 286+ if ($c == "{") {
 287+ $uncompleted_curly_brackets++;
 288+ $creating_template_name = true;
 289+ } elseif ($c == "}") {
 290+ $uncompleted_curly_brackets--;
 291+ // is this needed?
 292+ //if ($field_name != "") {
 293+ // $field_name = "";
 294+ //}
 295+ if ($page_contents[$i - 1] == '}') {
 296+ if ($simplified_format)
 297+ $text .= "</" . $template_name . ">";
 298+ else
 299+ $text .= "</$template_label>";
 300+ }
 301+ $template_name = "";
 302+ }
 303+ } else { // 2 or greater - probably 2
 304+ if ($c == "}") {
 305+ $uncompleted_curly_brackets--;
 306+ }
 307+ if ($c == "{") {
 308+ $uncompleted_curly_brackets++;
 309+ } else {
 310+ if ($creating_template_name) {
 311+ if ($c == "|" || $c == "}") {
 312+ $template_name = str_replace(' ', '_', trim($template_name));
 313+ $template_name = str_replace('&', '&amp;', $template_name);
 314+ if ($simplified_format) {
 315+ $text .= "<" . $template_name . ">";
 316+ } else
 317+ $text .= "<$template_label $name_str=\"$template_name\">";
 318+ $creating_template_name = false;
 319+ $creating_field_name = true;
 320+ $field_id = 1;
 321+ } else {
 322+ $template_name .= $c;
 323+ }
 324+ } else {
 325+ if ($c == "|" || $c == "}") {
 326+ if ($field_has_name) {
 327+ $field_value = str_replace('&', '&amp;', $field_value);
 328+ if ($simplified_format) {
 329+ $field_name = str_replace(' ', '_', trim($field_name));
 330+ $text .= "<" . $field_name . ">";
 331+ $text .= trim($field_value);
 332+ $text .= "</" . $field_name . ">";
 333+ } else {
 334+ $text .= "<$field_str $name_str=\"" . trim($field_name) . "\">";
 335+ $text .= trim($field_value);
 336+ $text .= "</$field_str>";
 337+ }
 338+ $field_value = "";
 339+ $field_has_name = false;
 340+ } else {
 341+ // "field_name" is actually the value
 342+ if ($simplified_format) {
 343+ $field_name = str_replace(' ', '_', $field_name);
 344+ // add "Field" to the beginning of the file name, since
 345+ // XML tags that are simply numbers aren't allowed
 346+ $text .= "<" . $field_str . '_' . $field_id . ">";
 347+ $text .= trim($field_name);
 348+ $text .= "</" . $field_str . '_' . $field_id . ">";
 349+ } else {
 350+ $text .= "<$field_str $name_str=\"$field_id\">";
 351+ $text .= trim($field_name);
 352+ $text .= "</$field_str>";
 353+ }
 354+ $field_id++;
 355+ }
 356+ $creating_field_name = true;
 357+ $field_name = "";
 358+ } elseif ($c == "=") {
 359+ // handle case of = in value
 360+ if (! $creating_field_name) {
 361+ $field_value .= $c;
 362+ } else {
 363+ $creating_field_name = false;
 364+ $field_has_name = true;
 365+ }
 366+ } elseif ($creating_field_name) {
 367+ $field_name .= $c;
 368+ } else {
 369+ $field_value .= $c;
 370+ }
 371+ }
 372+ }
 373+ }
 374+ }
 375+
 376+ // handle groupings, if any apply here; first check if SMW is installed
 377+ global $smwgIP;
 378+ if (isset($smwgIP)) {
 379+ $store = smwfGetStore();
 380+ foreach ($groupings as $pair) {
 381+ list($property_page, $grouping_label) = $pair;
 382+ $wiki_page = SMWDataValueFactory::newTypeIDValue('_wpg', $page_title);
 383+ $options = new SMWRequestOptions();
 384+ $options->sort = "subject_title";
 385+ // get actual property from the wiki-page of the property
 386+ $property = SMWPropertyValue::makeProperty($property_page->getTitle()->getText());
 387+ $res = $store->getPropertySubjects($property, $wiki_page, $options);
 388+ $num = count($res);
 389+ if ($num > 0) {
 390+ $grouping_label = str_replace(' ', '_', $grouping_label);
 391+ $text .= "<$grouping_label>\n";
 392+ foreach ($res as $subject) {
 393+ $subject_title = $subject->getTitle();
 394+ $text .= getXMLForPage($subject_title, $simplified_format, $groupings, $depth + 1);
 395+ }
 396+ $text .= "</$grouping_label>\n";
 397+ }
 398+ }
 399+ }
 400+
 401+ $text .= "</$page_str>\n";
 402+ // escape back the curly brackets that were escaped out at the beginning
 403+ $text = str_replace('&amp;#123;', '{', $text);
 404+ $text = str_replace('&amp;#125;', '}', $text);
 405+ return $text;
 406+}
 407+
 408+function doSpecialViewXML() {
 409+ global $wgOut, $wgRequest, $wgUser, $wgCanonicalNamespaceNames, $wgContLang;
 410+ $skin = $wgUser->getSkin();
 411+ $namespace_labels = $wgContLang->getNamespaces();
 412+ $category_label = $namespace_labels[NS_CATEGORY];
 413+ $template_label = $namespace_labels[NS_TEMPLATE];
 414+ $name_str = str_replace(' ', '_', wfMsgForContent('dt_xml_name'));
 415+ $namespace_str = wfMsg('dt_xml_namespace');
 416+ $pages_str = str_replace(' ', '_', wfMsgForContent('dt_xml_pages'));
 417+
 418+ $form_submitted = false;
 419+ $page_titles = array();
 420+ $cats = $wgRequest->getArray('categories');
 421+ $nses = $wgRequest->getArray('namespaces');
 422+ if (count($cats) > 0 || count($nses) > 0) {
 423+ $form_submitted = true;
 424+ }
 425+
 426+ if ($form_submitted) {
 427+ $wgOut->disable();
 428+
 429+ // Cancel output buffering and gzipping if set
 430+ // This should provide safer streaming for pages with history
 431+ wfResetOutputBuffers();
 432+ header( "Content-type: application/xml; charset=utf-8" );
 433+
 434+ $groupings = getGroupings();
 435+ $simplified_format = $wgRequest->getVal('simplified_format');
 436+ $text = "<$pages_str>";
 437+ if ($cats) {
 438+ foreach ($cats as $cat => $val) {
 439+ if ($simplified_format)
 440+ $text .= '<' . str_replace(' ', '_', $cat) . ">\n";
 441+ else
 442+ $text .= "<$category_label $name_str=\"$cat\">\n";
 443+ $titles = getPagesForCategory($cat, 10);
 444+ foreach ($titles as $title) {
 445+ $text .= getXMLForPage($title, $simplified_format, $groupings);
 446+ }
 447+ if ($simplified_format)
 448+ $text .= '</' . str_replace(' ', '_', $cat) . ">\n";
 449+ else
 450+ $text .= "</$category_label>\n";
 451+ }
 452+ }
 453+
 454+ if ($nses) {
 455+ foreach ($nses as $ns => $val) {
 456+ if ($ns == 0) {
 457+ $ns_name = "Main";
 458+ } else {
 459+ $ns_name = $wgCanonicalNamespaceNames[$ns];
 460+ }
 461+ if ($simplified_format)
 462+ $text .= '<' . str_replace(' ', '_', $ns_name) . ">\n";
 463+ else
 464+ $text .= "<$namespace_str $name_str=\"$ns_name\">\n";
 465+ $titles = getPagesForNamespace($ns);
 466+ foreach ($titles as $title) {
 467+ $text .= getXMLForPage($title, $simplified_format, $groupings);
 468+ }
 469+ if ($simplified_format)
 470+ $text .= '</' . str_replace(' ', '_', $ns_name) . ">\n";
 471+ else
 472+ $text .= "</$namespace_str>\n";
 473+ }
 474+ }
 475+ $text .= "</$pages_str>";
 476+ print $text;
 477+ } else {
 478+ // set 'title' as hidden field, in case there's no URL niceness
 479+ global $wgContLang;
 480+ $mw_namespace_labels = $wgContLang->getNamespaces();
 481+ $special_namespace = $mw_namespace_labels[NS_SPECIAL];
 482+ $text =<<<END
 483+ <form action="" method="get">
 484+ <input type="hidden" name="title" value="$special_namespace:ViewXML">
 485+
 486+END;
 487+ $text .= "<p>" . wfMsg('dt_viewxml_docu') . "</p>\n";
 488+ $text .= "<h2>" . wfMsg('dt_viewxml_categories') . "</h2>\n";
 489+ $categories = getCategoriesList();
 490+ foreach ($categories as $category) {
 491+ $title = Title::makeTitle( NS_CATEGORY, $category );
 492+ $link = $skin->makeLinkObj( $title, $title->getText() );
 493+ $text .= "<input type=\"checkbox\" name=\"categories[$category]\" /> $link <br />\n";
 494+ }
 495+ $text .= "<h2>" . wfMsg('dt_viewxml_namespaces') . "</h2>\n";
 496+ $namespaces = getNamespacesList();
 497+ foreach ($namespaces as $namespace) {
 498+ if ($namespace == 0) {
 499+ $ns_name = "Main";
 500+ } else {
 501+ $ns_name = $wgCanonicalNamespaceNames["$namespace"];
 502+ }
 503+ $ns_name = str_replace('_', ' ', $ns_name);
 504+ $text .= "<input type=\"checkbox\" name=\"namespaces[$namespace]\" /> $ns_name <br />\n";
 505+ }
 506+ $text .= "<br /><p><input type=\"checkbox\" name=\"simplified_format\" /> " . wfMsg('dt_viewxml_simplifiedformat') . "</p>\n";
 507+ $text .= "<input type=\"submit\" value=\"" . wfMsg('viewxml') . "\">\n";
 508+ $text .= "</form>\n";
 509+
 510+ $wgOut->addHTML($text);
 511+ }
 512+}
Property changes on: tags/extensions/DataTransfer/REL_0_3_2/specials/DT_ViewXML.php
___________________________________________________________________
Added: svn:eol-style
1513 + native
Index: tags/extensions/DataTransfer/REL_0_3_2/INSTALL
@@ -0,0 +1,31 @@
 2+[[Data Transfer 0.3.2]]
 3+
 4+Contents:
 5+* Disclaimer
 6+* Requirements
 7+* Installation
 8+* Contact
 9+
 10+== Disclaimer ==
 11+
 12+For a proper legal disclaimer, see the file "COPYING".
 13+
 14+== Requirements ==
 15+
 16+The extension can make use of, but does not require, an install of
 17+Semantic MediaWiki. If Semantic MediaWiki is used, it must be of
 18+version 0.6 or greater. For more details, see Semantic MediaWiki's
 19+own installation requirements.
 20+
 21+== Installation ==
 22+
 23+(1) Extract the archive to obtain the directory "DataTransfer"
 24+ that contains all relevant files. Copy this directory (or
 25+ extract/download it) to "[wikipath]/extensions/".
 26+(2) Insert the following line into the file "[wikipath]/LocalSettings.php":
 27+ include_once('extensions/DataTransfer/includes/DT_Settings.php');
 28+
 29+== Contact ==
 30+
 31+If you have any issues or questions, please send them to
 32+yaron57@gmail.com.
Property changes on: tags/extensions/DataTransfer/REL_0_3_2/INSTALL
___________________________________________________________________
Added: svn:eol-style
133 + native
Index: tags/extensions/DataTransfer/REL_0_3_2/includes/DT_GlobalFunctions.php
@@ -0,0 +1,124 @@
 2+<?php
 3+/**
 4+ * Global functions and constants for the Data Transfer extension.
 5+ *
 6+ * @author Yaron Koren
 7+ */
 8+
 9+if (!defined('MEDIAWIKI')) die();
 10+
 11+define('DT_VERSION','0.3.2');
 12+
 13+// constants for special properties
 14+define('DT_SP_HAS_XML_GROUPING', 1);
 15+define('DT_SP_IS_EXCLUDED_FROM_XML', 2);
 16+
 17+$wgExtensionCredits['specialpage'][]= array(
 18+ 'path' => __FILE__,
 19+ 'name' => 'Data Transfer',
 20+ 'version' => DT_VERSION,
 21+ 'author' => 'Yaron Koren',
 22+ 'url' => 'http://www.mediawiki.org/wiki/Extension:Data_Transfer',
 23+ 'description' => 'Allows for importing and exporting data contained in template calls',
 24+ 'descriptionmsg' => 'dt-desc',
 25+);
 26+
 27+$dtgIP = $IP . '/extensions/DataTransfer';
 28+
 29+// register all special pages and other classes
 30+$wgSpecialPages['ViewXML'] = 'DTViewXML';
 31+$wgAutoloadClasses['DTViewXML'] = $dtgIP . '/specials/DT_ViewXML.php';
 32+$wgSpecialPages['ImportXML'] = 'DTImportXML';
 33+$wgAutoloadClasses['DTImportXML'] = $dtgIP . '/specials/DT_ImportXML.php';
 34+$wgSpecialPages['ImportCSV'] = 'DTImportCSV';
 35+$wgAutoloadClasses['DTImportCSV'] = $dtgIP . '/specials/DT_ImportCSV.php';
 36+$wgJobClasses['dtImport'] = 'DTImportJob';
 37+$wgAutoloadClasses['DTImportJob'] = $dtgIP . '/includes/DT_ImportJob.php';
 38+$wgAutoloadClasses['DTXMLParser'] = $dtgIP . '/includes/DT_XMLParser.php';
 39+$wgHooks['AdminLinks'][] = 'dtfAddToAdminLinks';
 40+$wgHooks['smwInitProperties'][] = 'dtfInitProperties';
 41+
 42+require_once($dtgIP . '/languages/DT_Language.php');
 43+$wgExtensionMessagesFiles['DataTransfer'] = $dtgIP . '/languages/DT_Messages.php';
 44+$wgExtensionAliasesFiles['DataTransfer'] = $dtgIP . '/languages/DT_Aliases.php';
 45+
 46+/**********************************************/
 47+/***** language settings *****/
 48+/**********************************************/
 49+
 50+/**
 51+ * Initialise a global language object for content language. This
 52+ * must happen early on, even before user language is known, to
 53+ * determine labels for additional namespaces. In contrast, messages
 54+ * can be initialised much later when they are actually needed.
 55+ */
 56+function dtfInitContentLanguage($langcode) {
 57+ global $dtgIP, $dtgContLang;
 58+
 59+ if (!empty($dtgContLang)) { return; }
 60+
 61+ $dtContLangClass = 'DT_Language' . str_replace( '-', '_', ucfirst( $langcode ) );
 62+
 63+ if (file_exists($dtgIP . '/languages/'. $dtContLangClass . '.php')) {
 64+ include_once( $dtgIP . '/languages/'. $dtContLangClass . '.php' );
 65+ }
 66+
 67+ // fallback if language not supported
 68+ if ( !class_exists($dtContLangClass)) {
 69+ include_once($dtgIP . '/languages/DT_LanguageEn.php');
 70+ $dtContLangClass = 'DT_LanguageEn';
 71+ }
 72+
 73+ $dtgContLang = new $dtContLangClass();
 74+}
 75+
 76+/**
 77+ * Initialise the global language object for user language. This
 78+ * must happen after the content language was initialised, since
 79+ * this language is used as a fallback.
 80+ */
 81+function dtfInitUserLanguage($langcode) {
 82+ global $dtgIP, $dtgLang;
 83+
 84+ if (!empty($dtgLang)) { return; }
 85+
 86+ $dtLangClass = 'DT_Language' . str_replace( '-', '_', ucfirst( $langcode ) );
 87+
 88+ if (file_exists($dtgIP . '/languages/'. $dtLangClass . '.php')) {
 89+ include_once( $dtgIP . '/languages/'. $dtLangClass . '.php' );
 90+ }
 91+
 92+ // fallback if language not supported
 93+ if ( !class_exists($dtLangClass)) {
 94+ global $dtgContLang;
 95+ $dtgLang = $dtgContLang;
 96+ } else {
 97+ $dtgLang = new $dtLangClass();
 98+ }
 99+}
 100+
 101+/**********************************************/
 102+/***** other global helpers *****/
 103+/**********************************************/
 104+
 105+function dtfInitProperties() {
 106+ global $dtgContLang;
 107+ $dt_props = $dtgContLang->getPropertyLabels();
 108+ SMWPropertyValue::registerProperty('_DT_XG', '_str', $dt_props[DT_SP_HAS_XML_GROUPING], true);
 109+ // TODO - this should set a "backup" English value as well,
 110+ // so that the phrase "Has XML grouping" works in all languages
 111+ return true;
 112+}
 113+
 114+/**
 115+ * Add links to the 'AdminLinks' special page, defined by the Admin Links
 116+ * extension
 117+ */
 118+function dtfAddToAdminLinks($admin_links_tree) {
 119+ $import_export_section = $admin_links_tree->getSection(wfMsg('adminlinks_importexport'));
 120+ $main_row = $import_export_section->getRow('main');
 121+ $main_row->addItem(ALItem::newFromSpecialPage('ViewXML'));
 122+ $main_row->addItem(ALItem::newFromSpecialPage('ImportXML'));
 123+ $main_row->addItem(ALItem::newFromSpecialPage('ImportCSV'));
 124+ return true;
 125+}
Property changes on: tags/extensions/DataTransfer/REL_0_3_2/includes/DT_GlobalFunctions.php
___________________________________________________________________
Added: svn:eol-style
1126 + native
Index: tags/extensions/DataTransfer/REL_0_3_2/includes/DT_XMLParser.php
@@ -0,0 +1,272 @@
 2+<?php
 3+/**
 4+ * Classes for parsing XML representing wiki pages and their template calls
 5+ *
 6+ * @author Yaron Koren
 7+ */
 8+
 9+if (!defined('MEDIAWIKI')) die();
 10+
 11+class DTWikiTemplate {
 12+ private $mName = null;
 13+ private $mFields = array();
 14+
 15+ public function DTWikiTemplate($name) {
 16+ $this->mName = $name;
 17+ }
 18+
 19+ function addField($name, $value) {
 20+ $this->mFields[$name] = $value;
 21+ }
 22+
 23+ function createText() {
 24+ $multi_line_template = false;
 25+ $text = '{{' . $this->mName;
 26+ foreach ($this->mFields as $field_name => $field_val) {
 27+ if (is_numeric($field_name)) {
 28+ $text .= "|$field_val";
 29+ } else {
 30+ $text .= "\n|$field_name=$field_val";
 31+ $multi_line_template = true;
 32+ }
 33+ }
 34+ if ($multi_line_template)
 35+ $text .= "\n";
 36+ $text .= '}}' . "\n";
 37+ return $text;
 38+ }
 39+}
 40+
 41+class DTWikiPage {
 42+ private $mPageName = null;
 43+ private $mElements = array();
 44+
 45+ public function DTWikiPage($name) {
 46+ $this->mPageName = $name;
 47+ }
 48+
 49+ function getName() {
 50+ return $this->mPageName;
 51+ }
 52+
 53+ function addTemplate($template) {
 54+ $this->mElements[] = $template;
 55+ }
 56+
 57+ function addFreeText($free_text) {
 58+ $this->mElements[] = $free_text;
 59+ }
 60+
 61+ function createText() {
 62+ $text = "";
 63+ foreach ($this->mElements as $elem) {
 64+ if ($elem instanceof DTWikiTemplate) {
 65+ $text .= $elem->createText();
 66+ } else {
 67+ $text .= $elem;
 68+ }
 69+ }
 70+ return $text;
 71+ }
 72+}
 73+
 74+class DTXMLParser {
 75+ var $mDebug = false;
 76+ var $mSource = null;
 77+ var $mCurFieldName = null;
 78+ var $mCurFieldValue = null;
 79+ var $mCurTemplate = null;
 80+ var $mCurPage = null; //new DTWikiPage();
 81+ var $mPages = array();
 82+
 83+ function __construct( $source ) {
 84+ $this->mSource = $source;
 85+ }
 86+
 87+ function debug( $text ) {
 88+ //print "$text. ";
 89+ }
 90+
 91+ function throwXMLerror( $text ) {
 92+ print htmlspecialchars($text);
 93+ }
 94+
 95+ function doParse() {
 96+ $parser = xml_parser_create( "UTF-8" );
 97+
 98+ # case folding violates XML standard, turn it off
 99+ xml_parser_set_option( $parser, XML_OPTION_CASE_FOLDING, false );
 100+
 101+ xml_set_object( $parser, $this );
 102+ xml_set_element_handler( $parser, "in_start", "" );
 103+
 104+ $offset = 0; // for context extraction on error reporting
 105+ do {
 106+ $chunk = $this->mSource->readChunk();
 107+ if( !xml_parse( $parser, $chunk, $this->mSource->atEnd() ) ) {
 108+ wfDebug( "WikiImporter::doImport encountered XML parsing error\n" );
 109+ //return new WikiXmlError( $parser, wfMsgHtml( 'import-parse-failure' ), $chunk, $offset );
 110+ }
 111+ $offset += strlen( $chunk );
 112+ } while( $chunk !== false && !$this->mSource->atEnd() );
 113+ xml_parser_free( $parser );
 114+ }
 115+
 116+ function donothing( $parser, $x, $y="" ) {
 117+ #$this->debug( "donothing" );
 118+ }
 119+
 120+
 121+ function in_start( $parser, $name, $attribs ) {
 122+ //$this->debug( "in_start $name" );
 123+ $pages_str = str_replace(' ', '_', wfMsgForContent('dt_xml_pages'));
 124+ if( $name != $pages_str ) {
 125+ print( "Expected '$pages_str', got '$name'" );
 126+ }
 127+ xml_set_element_handler( $parser, "in_pages", "out_pages" );
 128+ }
 129+
 130+ function in_pages( $parser, $name, $attribs ) {
 131+ $this->debug( "in_pages $name" );
 132+ $page_str = str_replace(' ', '_', wfMsgForContent('dt_xml_page'));
 133+ if( $name == $page_str ) {
 134+ $title_str = str_replace(' ', '_', wfMsgForContent('dt_xml_title'));
 135+ if (array_key_exists($title_str, $attribs)) {
 136+ $this->mCurPage = new DTWikiPage($attribs[$title_str]);
 137+ xml_set_element_handler( $parser, "in_page", "out_page" );
 138+ } else {
 139+ return $this->throwXMLerror( "'$title_str' attribute missing for page" );
 140+ }
 141+ } else {
 142+ return $this->throwXMLerror( "Expected <$page_str>, got <$name>" );
 143+ }
 144+ }
 145+
 146+ function out_pages( $parser, $name ) {
 147+ $this->debug( "out_pages $name" );
 148+ $pages_str = str_replace(' ', '_', wfMsgForContent('dt_xml_pages'));
 149+/*
 150+ if( $name != $pages_str ) {
 151+ return $this->throwXMLerror( "Expected </pages>, got </$name>" );
 152+ }
 153+*/
 154+ xml_set_element_handler( $parser, "donothing", "donothing" );
 155+ }
 156+
 157+ function in_category( $parser, $name, $attribs ) {
 158+ $this->debug( "in_category $name" );
 159+ $page_str = str_replace(' ', '_', wfMsgForContent('dt_xml_page'));
 160+ if( $name == $page_str ) {
 161+ if (array_key_exists($title_str, $attribs)) {
 162+ $this->mCurPage = new DTWikiPage($attribs[$title_str]);
 163+ xml_set_element_handler( $parser, "in_page", "out_page" );
 164+ } else {
 165+ return $this->throwXMLerror( "'$title_str' attribute missing for page" );
 166+ }
 167+ } else {
 168+ return $this->throwXMLerror( "Expected <$page_str>, got <$name>" );
 169+ }
 170+ }
 171+
 172+ function out_category( $parser, $name ) {
 173+ $this->debug( "out_category $name" );
 174+ if( $name != "category" ) {
 175+ return $this->throwXMLerror( "Expected </category>, got </$name>" );
 176+ }
 177+ xml_set_element_handler( $parser, "donothing", "donothing" );
 178+ }
 179+
 180+ function in_page( $parser, $name, $attribs ) {
 181+ $this->debug( "in_page $name" );
 182+ $template_str = str_replace(' ', '_', wfMsgForContent('dt_xml_template'));
 183+ $name_str = str_replace(' ', '_', wfMsgForContent('dt_xml_name'));
 184+ $free_text_str = str_replace(' ', '_', wfMsgForContent('dt_xml_freetext'));
 185+ if( $name == $template_str ) {
 186+ if (array_key_exists($name_str, $attribs)) {
 187+ $this->mCurTemplate = new DTWikiTemplate($attribs[$name_str]);
 188+ xml_set_element_handler( $parser, "in_template", "out_template" );
 189+ } else {
 190+ return $this->throwXMLerror( "'$name_str' attribute missing for template" );
 191+ }
 192+ } elseif( $name == $free_text_str ) {
 193+ xml_set_element_handler( $parser, "in_freetext", "out_freetext" );
 194+ xml_set_character_data_handler( $parser, "freetext_value" );
 195+ } else {
 196+ return $this->throwXMLerror( "Expected <$template_str>, got <$name>" );
 197+ }
 198+ }
 199+
 200+ function out_page( $parser, $name ) {
 201+ $this->debug( "out_page $name" );
 202+ $page_str = str_replace(' ', '_', wfMsgForContent('dt_xml_page'));
 203+ if( $name != $page_str ) {
 204+ return $this->throwXMLerror( "Expected </$page_str>, got </$name>" );
 205+ }
 206+ $this->mPages[] = $this->mCurPage;
 207+ xml_set_element_handler( $parser, "in_pages", "out_pages" );
 208+ }
 209+
 210+ function in_template( $parser, $name, $attribs ) {
 211+ $this->debug( "in_template $name" );
 212+ $field_str = str_replace(' ', '_', wfMsgForContent('dt_xml_field'));
 213+ if( $name == $field_str ) {
 214+ $name_str = str_replace(' ', '_', wfMsgForContent('dt_xml_name'));
 215+ if (array_key_exists($name_str, $attribs)) {
 216+ $this->mCurFieldName = $attribs[$name_str];
 217+ //$this->push( $name );
 218+ $this->workRevisionCount = 0;
 219+ $this->workSuccessCount = 0;
 220+ $this->uploadCount = 0;
 221+ $this->uploadSuccessCount = 0;
 222+ xml_set_element_handler( $parser, "in_field", "out_field" );
 223+ xml_set_character_data_handler( $parser, "field_value" );
 224+ } else {
 225+ return $this->throwXMLerror( "'$name_str' attribute missing for field" );
 226+ }
 227+ } else {
 228+ return $this->throwXMLerror( "Expected <$field_str>, got <$name>" );
 229+ }
 230+ }
 231+
 232+ function out_template( $parser, $name ) {
 233+ $this->debug( "out_template $name" );
 234+ $template_str = str_replace(' ', '_', wfMsgForContent('dt_xml_template'));
 235+ if( $name != $template_str ) {
 236+ return $this->throwXMLerror( "Expected </$template_str>, got </$name>" );
 237+ }
 238+ $this->mCurPage->addTemplate($this->mCurTemplate);
 239+ xml_set_element_handler( $parser, "in_page", "out_page" );
 240+ }
 241+
 242+ function in_field( $parser, $name, $attribs ) {
 243+ //xml_set_element_handler( $parser, "donothing", "donothing" );
 244+ }
 245+
 246+ function out_field( $parser, $name ) {
 247+ $this->debug( "out_field $name" );
 248+ $field_str = str_replace(' ', '_', wfMsgForContent('dt_xml_field'));
 249+ if( $name == $field_str ) {
 250+ $this->mCurTemplate->addField($this->mCurFieldName, $this->mCurFieldValue);
 251+ } else {
 252+ return $this->throwXMLerror( "Expected </$field_str>, got </$name>" );
 253+ }
 254+ xml_set_element_handler( $parser, "in_template", "out_template" );
 255+ }
 256+
 257+ function field_value( $parser, $data ) {
 258+ $this->mCurFieldValue = $data;
 259+ }
 260+
 261+ function in_freetext( $parser, $name, $attribs ) {
 262+ //xml_set_element_handler( $parser, "donothing", "donothing" );
 263+ }
 264+
 265+ function out_freetext( $parser, $name ) {
 266+ xml_set_element_handler( $parser, "in_page", "out_page" );
 267+ }
 268+
 269+ function freetext_value( $parser, $data ) {
 270+ $this->mCurPage->addFreeText($data);
 271+ }
 272+
 273+}
Property changes on: tags/extensions/DataTransfer/REL_0_3_2/includes/DT_XMLParser.php
___________________________________________________________________
Added: svn:eol-style
1274 + native
Index: tags/extensions/DataTransfer/REL_0_3_2/includes/DT_Settings.php
@@ -0,0 +1,30 @@
 2+<?php
 3+
 4+###
 5+# This is the path to your installation of the Data Transfer extension as
 6+# seen from the web. Change it if required ($wgScriptPath is the
 7+# path to the base directory of your wiki). No final slash.
 8+##
 9+$dtgScriptPath = $wgScriptPath . '/extensions/DataTransfer';
 10+##
 11+
 12+###
 13+# This is the path to your installation of Data Transfer as
 14+# seen on your local filesystem. Used against some PHP file path
 15+# issues.
 16+##
 17+$dtgIP = $IP . '/extensions/DataTransfer';
 18+##
 19+
 20+###
 21+# Permission to import files
 22+###
 23+$wgGroupPermissions['sysop']['datatransferimport'] = true;
 24+$wgAvailableRights[] = 'datatransferimport';
 25+
 26+// load global functions
 27+require_once('DT_GlobalFunctions.php');
 28+
 29+// initialize content language
 30+global $wgLanguageCode;
 31+dtfInitContentLanguage($wgLanguageCode);
Property changes on: tags/extensions/DataTransfer/REL_0_3_2/includes/DT_Settings.php
___________________________________________________________________
Added: svn:eol-style
132 + native
Index: tags/extensions/DataTransfer/REL_0_3_2/includes/DT_ImportJob.php
@@ -0,0 +1,47 @@
 2+<?php
 3+
 4+/**
 5+ * Background job to import a page into the wiki, for use by Data Transfer
 6+ *
 7+ * @author Yaron Koren
 8+ */
 9+class DTImportJob extends Job {
 10+
 11+ function __construct( $title, $params = '', $id = 0 ) {
 12+ parent::__construct( 'dtImport', $title, $params, $id );
 13+ }
 14+
 15+ /**
 16+ * Run a dtImport job
 17+ * @return boolean success
 18+ */
 19+ function run() {
 20+ wfProfileIn( __METHOD__ );
 21+
 22+ if ( is_null( $this->title ) ) {
 23+ $this->error = "dtImport: Invalid title";
 24+ wfProfileOut( __METHOD__ );
 25+ return false;
 26+ }
 27+
 28+ $article = new Article($this->title);
 29+ if ( !$article ) {
 30+ $this->error = 'dtImport: Article not found "' . $this->title->getPrefixedDBkey() . '"';
 31+ wfProfileOut( __METHOD__ );
 32+ return false;
 33+ }
 34+
 35+ // change global $wgUser variable to the one specified by
 36+ // the job only for the extent of this import
 37+ global $wgUser;
 38+ $actual_user = $wgUser;
 39+ $wgUser = User::newFromId($this->params['user_id']);
 40+ $text = $this->params['text'];
 41+ $edit_summary = $this->params['edit_summary'];
 42+ $article->doEdit($text, $edit_summary);
 43+ $wgUser = $actual_user;
 44+ wfProfileOut( __METHOD__ );
 45+ return true;
 46+ }
 47+}
 48+
Property changes on: tags/extensions/DataTransfer/REL_0_3_2/includes/DT_ImportJob.php
___________________________________________________________________
Added: svn:eol-style
149 + native
Index: tags/extensions/DataTransfer/REL_0_3_2/languages/DT_Aliases.php
@@ -0,0 +1,164 @@
 2+<?php
 3+/**
 4+ * Aliases for special pages
 5+ *
 6+ * @file
 7+ * @ingroup Extensions
 8+ */
 9+
 10+$aliases = array();
 11+
 12+/** English */
 13+$aliases['en'] = array(
 14+ 'ViewXML' => array( 'ViewXML' ),
 15+);
 16+
 17+/** Arabic (العربية)
 18+ * @author Meno25
 19+ */
 20+$aliases['ar'] = array(
 21+ 'ViewXML' => array( 'عرض_إكس_إم_إل' ),
 22+);
 23+
 24+/** Egyptian Spoken Arabic (مصرى)
 25+ * @author Meno25
 26+ */
 27+$aliases['arz'] = array(
 28+ 'ViewXML' => array( 'عرض_إكس_إم_إل' ),
 29+);
 30+
 31+/** Bosnian (Bosanski) */
 32+$aliases['bs'] = array(
 33+ 'ViewXML' => array( 'VidiXML' ),
 34+);
 35+
 36+/** Basque (Euskara) */
 37+$aliases['eu'] = array(
 38+ 'ViewXML' => array( 'XMLIkusi' ),
 39+);
 40+
 41+/** French (Français) */
 42+$aliases['fr'] = array(
 43+ 'ViewXML' => array( 'Voir le XML', 'Voir XML', 'VoirXML' ),
 44+);
 45+
 46+/** Franco-Provençal (Arpetan) */
 47+$aliases['frp'] = array(
 48+ 'ViewXML' => array( 'Vêre lo XML', 'VêreLoXML' ),
 49+);
 50+
 51+/** Galician (Galego) */
 52+$aliases['gl'] = array(
 53+ 'ViewXML' => array( 'Ver XML' ),
 54+);
 55+
 56+/** Swiss German (Alemannisch) */
 57+$aliases['gsw'] = array(
 58+ 'ViewXML' => array( 'Lueg XML' ),
 59+);
 60+
 61+/** Gujarati (ગુજરાતી) */
 62+$aliases['gu'] = array(
 63+ 'ViewXML' => array( 'XMLજુઓ' ),
 64+);
 65+
 66+/** Hungarian (Magyar) */
 67+$aliases['hu'] = array(
 68+ 'ViewXML' => array( 'XML megtekintése' ),
 69+);
 70+
 71+/** Interlingua (Interlingua) */
 72+$aliases['ia'] = array(
 73+ 'ViewXML' => array( 'Visualisar XML' ),
 74+);
 75+
 76+/** Indonesian (Bahasa Indonesia) */
 77+$aliases['id'] = array(
 78+ 'ViewXML' => array( 'Lihat XML', 'LihatXML' ),
 79+);
 80+
 81+/** Italian (Italiano) */
 82+$aliases['it'] = array(
 83+ 'ViewXML' => array( 'VediXML' ),
 84+);
 85+
 86+/** Japanese (日本語) */
 87+$aliases['ja'] = array(
 88+ 'ViewXML' => array( 'XML表示', 'XML表示' ),
 89+);
 90+
 91+/** Ripoarisch (Ripoarisch) */
 92+$aliases['ksh'] = array(
 93+ 'ViewXML' => array( 'XML beloore' ),
 94+);
 95+
 96+/** Luxembourgish (Lëtzebuergesch) */
 97+$aliases['lb'] = array(
 98+ 'ViewXML' => array( 'XML weisen' ),
 99+);
 100+
 101+/** Macedonian (Македонски) */
 102+$aliases['mk'] = array(
 103+ 'ViewXML' => array( 'ВидиXML' ),
 104+);
 105+
 106+/** Marathi (मराठी) */
 107+$aliases['mr'] = array(
 108+ 'ViewXML' => array( 'XMLपहा' ),
 109+);
 110+
 111+/** Maltese (Malti) */
 112+$aliases['mt'] = array(
 113+ 'ViewXML' => array( 'UriXML' ),
 114+);
 115+
 116+/** Nedersaksisch (Nedersaksisch) */
 117+$aliases['nds-nl'] = array(
 118+ 'ViewXML' => array( 'XML_bekieken' ),
 119+);
 120+
 121+/** Dutch (Nederlands) */
 122+$aliases['nl'] = array(
 123+ 'ViewXML' => array( 'XMLBekijken' ),
 124+);
 125+
 126+/** Norwegian (bokmål)‬ (‪Norsk (bokmål)‬) */
 127+$aliases['no'] = array(
 128+ 'ViewXML' => array( 'Vis XML' ),
 129+);
 130+
 131+/** Occitan (Occitan) */
 132+$aliases['oc'] = array(
 133+ 'ViewXML' => array( 'Veire XML', 'VeireXML' ),
 134+);
 135+
 136+/** Sanskrit (संस्कृत) */
 137+$aliases['sa'] = array(
 138+ 'ViewXML' => array( 'XMLपश्यति' ),
 139+);
 140+
 141+/** Albanian (Shqip) */
 142+$aliases['sq'] = array(
 143+ 'ViewXML' => array( 'ShihXML' ),
 144+);
 145+
 146+/** Swedish (Svenska) */
 147+$aliases['sv'] = array(
 148+ 'ViewXML' => array( 'Visa XML' ),
 149+);
 150+
 151+/** Swahili (Kiswahili) */
 152+$aliases['sw'] = array(
 153+ 'ViewXML' => array( 'OnyeshaXML' ),
 154+);
 155+
 156+/** Tagalog (Tagalog) */
 157+$aliases['tl'] = array(
 158+ 'ViewXML' => array( 'Tingnan ang XML' ),
 159+);
 160+
 161+/** Vèneto (Vèneto) */
 162+$aliases['vec'] = array(
 163+ 'ViewXML' => array( 'VardaXML' ),
 164+);
 165+
Property changes on: tags/extensions/DataTransfer/REL_0_3_2/languages/DT_Aliases.php
___________________________________________________________________
Added: svn:keywords
1166 + Id
Added: svn:eol-style
2167 + native
Index: tags/extensions/DataTransfer/REL_0_3_2/languages/DT_Language.php
@@ -0,0 +1,34 @@
 2+<?php
 3+/**
 4+ * @author Yaron Koren
 5+ */
 6+
 7+/**
 8+ * Base class for all language classes - heavily based on Semantic MediaWiki's
 9+ * 'SMW_Language' class
 10+ */
 11+abstract class DT_Language {
 12+
 13+ protected $m_SpecialProperties;
 14+
 15+ // By default, every language has English-language aliases for
 16+ // special properties
 17+ protected $m_SpecialPropertyAliases = array(
 18+ 'Has XML grouping' => DT_SP_HAS_XML_GROUPING,
 19+ 'Excluded from XML' => DT_SP_IS_EXCLUDED_FROM_XML,
 20+ );
 21+
 22+ /**
 23+ * Function that returns the labels for the special properties.
 24+ */
 25+ function getPropertyLabels() {
 26+ return $this->m_SpecialProperties;
 27+ }
 28+
 29+ /**
 30+ * Aliases for special properties, if any.
 31+ */
 32+ function getPropertyAliases() {
 33+ return $this->m_SpecialPropertyAliases;
 34+ }
 35+}
Property changes on: tags/extensions/DataTransfer/REL_0_3_2/languages/DT_Language.php
___________________________________________________________________
Added: svn:eol-style
136 + native
Index: tags/extensions/DataTransfer/REL_0_3_2/languages/DT_LanguageEn.php
@@ -0,0 +1,13 @@
 2+<?php
 3+/**
 4+ * @author Yaron Koren
 5+ */
 6+
 7+class DT_LanguageEn extends DT_Language {
 8+
 9+/* private */ var $m_SpecialProperties = array(
 10+ DT_SP_HAS_XML_GROUPING => 'Has XML grouping',
 11+ DT_SP_IS_EXCLUDED_FROM_XML => 'Excluded from XML'
 12+);
 13+
 14+}
Property changes on: tags/extensions/DataTransfer/REL_0_3_2/languages/DT_LanguageEn.php
___________________________________________________________________
Added: svn:eol-style
115 + native
Index: tags/extensions/DataTransfer/REL_0_3_2/languages/DT_Messages.php
@@ -0,0 +1,1632 @@
 2+<?php
 3+/**
 4+ * Internationalization file for the Data Transfer extension
 5+ *
 6+ * @addtogroup Extensions
 7+*/
 8+
 9+$messages = array();
 10+
 11+/** English
 12+ * @author Yaron Koren
 13+ */
 14+$messages['en'] = array(
 15+ 'dt-desc' => 'Allows for importing and exporting data contained in template calls',
 16+ 'viewxml' => 'View XML',
 17+ 'dt_viewxml_docu' => 'Please select among the following categories and namespaces to view in XML format.',
 18+ 'dt_viewxml_categories' => 'Categories',
 19+ 'dt_viewxml_namespaces' => 'Namespaces',
 20+ 'dt_viewxml_simplifiedformat' => 'Simplified format',
 21+ 'dt_xml_namespace' => 'Namespace',
 22+ 'dt_xml_pages' => 'Pages',
 23+ 'dt_xml_page' => 'Page',
 24+ 'dt_xml_template' => 'Template',
 25+ 'dt_xml_field' => 'Field',
 26+ 'dt_xml_name' => 'Name',
 27+ 'dt_xml_title' => 'Title',
 28+ 'dt_xml_id' => 'ID',
 29+ 'dt_xml_freetext' => 'Free Text',
 30+ 'importxml' => 'Import XML',
 31+ 'dt_import_selectfile' => 'Please select the $1 file to import:',
 32+ 'dt_import_editsummary' => '$1 import',
 33+ 'dt_import_importing' => 'Importing...',
 34+ 'dt_import_success' => '$1 {{PLURAL:$1|page|pages}} will be created from the $2 file.',
 35+ 'importcsv' => 'Import CSV',
 36+ 'dt_importcsv_badheader' => "Error: the column $1 header, '$2', must be either '$3', '$4' or of the form 'template_name[field_name]'",
 37+ 'right-datatransferimport' => 'Import data',
 38+);
 39+
 40+/** Message documentation (Message documentation)
 41+ * @author EugeneZelenko
 42+ * @author Fryed-peach
 43+ * @author Jon Harald Søby
 44+ * @author Purodha
 45+ * @author Raymond
 46+ * @author Siebrand
 47+ */
 48+$messages['qqq'] = array(
 49+ 'dt-desc' => 'Extension description displayed on [[Special:Version]].',
 50+ 'dt_viewxml_categories' => '{{Identical|Categories}}',
 51+ 'dt_viewxml_namespaces' => '{{Identical|Namespaces}}',
 52+ 'dt_xml_namespace' => '{{Identical|Namespace}}
 53+Used as XML tag name.',
 54+ 'dt_xml_pages' => '{{Identical|Pages}}
 55+
 56+Used as XML tag name.',
 57+ 'dt_xml_page' => '{{Identical|Page}}
 58+Used as XML tag name.',
 59+ 'dt_xml_template' => '{{Identical|Template}}
 60+Used as XML tag name.',
 61+ 'dt_xml_field' => '{{Identical|Field}}
 62+Used as XML tag name.',
 63+ 'dt_xml_name' => '{{Identical|Name}}
 64+
 65+Used as XML tag name.',
 66+ 'dt_xml_title' => '{{Identical|Title}}
 67+Used as XML tag name.',
 68+ 'dt_xml_id' => '{{Identical|ID}}
 69+
 70+Used as XML tag name.',
 71+ 'dt_xml_freetext' => '{{Identical|Free text}}
 72+Used as XML tag name.',
 73+ 'dt_import_selectfile' => '$1 is the file format: either CSV or XML',
 74+ 'dt_import_editsummary' => '$1 is the file format: either CSV or XML',
 75+ 'dt_import_success' => '* $1 is the number of pages
 76+* $2 is the file format: either CSV or XML',
 77+ 'dt_importcsv_badheader' => 'The text "template_name[field_name]" can be translated.
 78+*$1 is a colomn number in the first row of the CVS file
 79+*$2 is the value found for the $1th colomn in the first line of the CSV file
 80+*$3 is the title label
 81+*$4 is a free text label',
 82+ 'right-datatransferimport' => '{{doc-right}}',
 83+);
 84+
 85+/** Faeag Rotuma (Faeag Rotuma)
 86+ * @author Jose77
 87+ */
 88+$messages['rtm'] = array(
 89+ 'dt_viewxml_categories' => 'Katekori',
 90+);
 91+
 92+/** Afrikaans (Afrikaans)
 93+ * @author Arnobarnard
 94+ * @author Naudefj
 95+ */
 96+$messages['af'] = array(
 97+ 'dt_viewxml_categories' => 'Ketagorieë',
 98+ 'dt_viewxml_namespaces' => 'Naamruimtes',
 99+ 'dt_xml_namespace' => 'Naamruimte',
 100+ 'dt_xml_name' => 'Naam',
 101+ 'dt_xml_title' => 'Titel',
 102+);
 103+
 104+/** Amharic (አማርኛ)
 105+ * @author Codex Sinaiticus
 106+ */
 107+$messages['am'] = array(
 108+ 'dt_viewxml_categories' => 'መደቦች',
 109+ 'dt_viewxml_namespaces' => 'ክፍለ-ዊኪዎች',
 110+ 'dt_xml_namespace' => 'ክፍለ-ዊኪ',
 111+ 'dt_xml_name' => 'ስም',
 112+ 'dt_xml_title' => 'አርዕስት',
 113+);
 114+
 115+/** Aragonese (Aragonés)
 116+ * @author Juanpabl
 117+ * @author Remember the dot
 118+ */
 119+$messages['an'] = array(
 120+ 'dt_viewxml_namespaces' => 'Espazios de nombres',
 121+ 'dt_xml_page' => 'Pachina',
 122+ 'dt_xml_name' => 'Nombre',
 123+);
 124+
 125+/** Arabic (العربية)
 126+ * @author Meno25
 127+ */
 128+$messages['ar'] = array(
 129+ 'dt-desc' => 'يسمح باستيراد وتصدير بيانات محتواة في استدعاءات قالب',
 130+ 'viewxml' => 'عرض XML',
 131+ 'dt_viewxml_docu' => 'من فضلك اختر من بين التصنيفات والنطاقات التالية للعرض في صيغة XML.',
 132+ 'dt_viewxml_categories' => 'تصنيفات',
 133+ 'dt_viewxml_namespaces' => 'نطاقات',
 134+ 'dt_viewxml_simplifiedformat' => 'صيغة مبسطة',
 135+ 'dt_xml_namespace' => 'نطاق',
 136+ 'dt_xml_pages' => 'صفحات',
 137+ 'dt_xml_page' => 'صفحة',
 138+ 'dt_xml_template' => 'قالب',
 139+ 'dt_xml_field' => 'حقل',
 140+ 'dt_xml_name' => 'اسم',
 141+ 'dt_xml_title' => 'عنوان',
 142+ 'dt_xml_id' => 'رقم',
 143+ 'dt_xml_freetext' => 'نص حر',
 144+ 'importxml' => 'استيراد XML',
 145+ 'dt_import_selectfile' => 'من فضلك اختر ملف $1 للاستيراد:',
 146+ 'dt_import_editsummary' => 'استيراد $1',
 147+ 'dt_import_importing' => 'جاري الاستيراد...',
 148+ 'dt_import_success' => '$1 {{PLURAL:$1|صفحة|صفحة}} سيتم استيرادها من ملف $2.',
 149+);
 150+
 151+/** Araucanian (Mapudungun)
 152+ * @author Remember the dot
 153+ */
 154+$messages['arn'] = array(
 155+ 'dt_xml_page' => 'Pakina',
 156+);
 157+
 158+/** Egyptian Spoken Arabic (مصرى)
 159+ * @author Meno25
 160+ */
 161+$messages['arz'] = array(
 162+ 'dt-desc' => 'يسمح باستيراد وتصدير بيانات هيكلية محتواة فى استدعاءات قالب',
 163+ 'viewxml' => 'عرض XML',
 164+ 'dt_viewxml_docu' => 'من فضلك اختر من بين التصنيفات والنطاقات التالية للعرض فى صيغة XML.',
 165+ 'dt_viewxml_categories' => 'تصنيفات',
 166+ 'dt_viewxml_namespaces' => 'نطاقات',
 167+ 'dt_viewxml_simplifiedformat' => 'صيغة مبسطة',
 168+ 'dt_xml_namespace' => 'نطاق',
 169+ 'dt_xml_page' => 'صفحة',
 170+ 'dt_xml_field' => 'حقل',
 171+ 'dt_xml_name' => 'اسم',
 172+ 'dt_xml_title' => 'عنوان',
 173+ 'dt_xml_id' => 'رقم',
 174+ 'dt_xml_freetext' => 'نص حر',
 175+);
 176+
 177+/** Belarusian (Taraškievica orthography) (Беларуская (тарашкевіца))
 178+ * @author EugeneZelenko
 179+ * @author Jim-by
 180+ */
 181+$messages['be-tarask'] = array(
 182+ 'dt-desc' => 'Дазваляе імпартаваць і экспартаваць зьвесткі, якія ўтрымліваюцца ў выкліках шаблёнах',
 183+ 'viewxml' => 'Паказаць XML',
 184+ 'dt_viewxml_docu' => 'Калі ласка, выберыце што праглядаць у фармаце XML сярод наступных катэгорыяў і прастораў назваў.',
 185+ 'dt_viewxml_categories' => 'Катэгорыі',
 186+ 'dt_viewxml_namespaces' => 'Прасторы назваў',
 187+ 'dt_viewxml_simplifiedformat' => 'Спрошчаны фармат',
 188+ 'dt_xml_namespace' => 'Прастора назваў',
 189+ 'dt_xml_pages' => 'Старонкі',
 190+ 'dt_xml_page' => 'Старонка',
 191+ 'dt_xml_template' => 'Шаблён',
 192+ 'dt_xml_field' => 'Поле',
 193+ 'dt_xml_name' => 'Назва',
 194+ 'dt_xml_title' => 'Назва',
 195+ 'dt_xml_id' => 'Ідэнтыфікатар',
 196+ 'dt_xml_freetext' => 'Вольны тэкст',
 197+ 'importxml' => 'Імпарт XML',
 198+ 'dt_import_selectfile' => 'Калі ласка, выберыце файл у фармаце $1 для імпарту:',
 199+ 'dt_import_editsummary' => 'імпарт $1',
 200+ 'dt_import_importing' => 'Імпартаваньне...',
 201+ 'dt_import_success' => '$1 {{PLURAL:$1|старонка будзе|старонкі будуць|старонак будзе}} створана з файла ў фармаце $2.',
 202+ 'importcsv' => 'Імпарт CSV',
 203+ 'dt_importcsv_badheader' => "Памылка: загаловак слупка $1, '$2', павінен быць адным з '$3', '$4' альбо у форме 'назва_шаблёну[назва_поля]'",
 204+ 'right-datatransferimport' => 'імпарт зьвестак',
 205+);
 206+
 207+/** Bulgarian (Български)
 208+ * @author DCLXVI
 209+ */
 210+$messages['bg'] = array(
 211+ 'viewxml' => 'Преглед на XML',
 212+ 'dt_viewxml_categories' => 'Категории',
 213+ 'dt_viewxml_namespaces' => 'Именни пространства',
 214+ 'dt_viewxml_simplifiedformat' => 'Опростен формат',
 215+ 'dt_xml_namespace' => 'Именно пространство',
 216+ 'dt_xml_page' => 'Страница',
 217+ 'dt_xml_field' => 'Поле',
 218+ 'dt_xml_name' => 'Име',
 219+ 'dt_xml_title' => 'Заглавие',
 220+ 'dt_xml_id' => 'Номер',
 221+ 'dt_xml_freetext' => 'Свободен текст',
 222+);
 223+
 224+/** Bosnian (Bosanski)
 225+ * @author CERminator
 226+ */
 227+$messages['bs'] = array(
 228+ 'dt-desc' => 'Omogućuje uvoz i izvoz podataka koji su sadržani u pozivima šablona',
 229+ 'viewxml' => 'Pregledaj XML',
 230+ 'dt_viewxml_docu' => 'Molimo Vas odaberite unutar slijedećih kategorija i imenskih prostora za pregled u XML formatu.',
 231+ 'dt_viewxml_categories' => 'Kategorije',
 232+ 'dt_viewxml_namespaces' => 'Imenski prostori',
 233+ 'dt_viewxml_simplifiedformat' => 'Pojednostavljeni format',
 234+ 'dt_xml_namespace' => 'Imenski prostor',
 235+ 'dt_xml_pages' => 'Stranice',
 236+ 'dt_xml_page' => 'Stranica',
 237+ 'dt_xml_template' => 'Šablon',
 238+ 'dt_xml_field' => 'Polje',
 239+ 'dt_xml_name' => 'Naziv',
 240+ 'dt_xml_title' => 'Naslov',
 241+ 'dt_xml_id' => 'ID',
 242+ 'dt_xml_freetext' => 'Slobodni tekst',
 243+ 'importxml' => 'Uvezi XML',
 244+ 'dt_import_selectfile' => 'Molimo odaberite $1 datoteku za uvoz:',
 245+ 'dt_import_editsummary' => '$1 uvoz',
 246+ 'dt_import_importing' => 'Uvoz...',
 247+ 'dt_import_success' => '$1 {{PLURAL:$1|stranica|stranice|stranica}} će biti napravljeno iz $2 datoteke.',
 248+ 'importcsv' => 'Uvoz CSV',
 249+ 'dt_importcsv_badheader' => "Greška: zaglavlje $1 kolone, '$2', mora biti ili '$3', '$4' ili od obrasca 'template_name[field_name]'",
 250+ 'right-datatransferimport' => 'Uvoz podataka',
 251+);
 252+
 253+/** Catalan (Català)
 254+ * @author Jordi Roqué
 255+ * @author SMP
 256+ * @author Solde
 257+ */
 258+$messages['ca'] = array(
 259+ 'dt-desc' => 'Permet importar i exportar les dades que contenen les crides de les plantilles',
 260+ 'viewxml' => 'Veure XML',
 261+ 'dt_viewxml_docu' => "Si us plau, seleccioneu d'entre les següents categories i espais de noms, per a veure-ho en format XML.",
 262+ 'dt_viewxml_categories' => 'Categories',
 263+ 'dt_viewxml_namespaces' => 'Espais de noms',
 264+ 'dt_viewxml_simplifiedformat' => 'Format simplificat',
 265+ 'dt_xml_namespace' => 'Espai de noms',
 266+ 'dt_xml_pages' => 'Pàgines',
 267+ 'dt_xml_page' => 'Pàgina',
 268+ 'dt_xml_template' => 'Plantilla',
 269+ 'dt_xml_field' => 'Camp',
 270+ 'dt_xml_name' => 'Nom',
 271+ 'dt_xml_title' => 'Títol',
 272+ 'dt_xml_id' => 'ID',
 273+ 'dt_xml_freetext' => 'Text lliure',
 274+ 'importxml' => 'Importa XML',
 275+ 'dt_import_selectfile' => 'Si us plau, seleccioneu el fitxer $1 per a importar:',
 276+ 'dt_import_editsummary' => 'Importació $1',
 277+ 'dt_import_importing' => "S'està important...",
 278+ 'dt_import_success' => '$1 {{PLURAL:$1|pàgina|pàgines}} es crearan des del fitxer $2.',
 279+ 'importcsv' => 'Importa CSV',
 280+ 'dt_importcsv_badheader' => "Error: la capçalera de la columna $1, '$2', ha de ser o bé '$3', '$4' o del formulari 'template_name[field_name]'",
 281+);
 282+
 283+/** Czech (Česky)
 284+ * @author Matěj Grabovský
 285+ */
 286+$messages['cs'] = array(
 287+ 'dt-desc' => 'Umožňuje import a export strukturovaných údajů v buňkách šablon.',
 288+);
 289+
 290+/** Danish (Dansk)
 291+ * @author Jon Harald Søby
 292+ */
 293+$messages['da'] = array(
 294+ 'dt_viewxml_categories' => 'Kategorier',
 295+ 'dt_xml_namespace' => 'Navnerum',
 296+ 'dt_xml_page' => 'Side',
 297+ 'dt_xml_name' => 'Navn',
 298+ 'dt_xml_title' => 'Titel',
 299+ 'dt_xml_id' => 'ID',
 300+);
 301+
 302+/** German (Deutsch)
 303+ * @author Als-Holder
 304+ * @author Krabina
 305+ * @author Revolus
 306+ * @author Umherirrender
 307+ */
 308+$messages['de'] = array(
 309+ 'dt-desc' => 'Ermöglicht den Import und Export von Daten, die in Aufrufen von Vorlagen verwendet werden',
 310+ 'viewxml' => 'XML ansehen',
 311+ 'dt_viewxml_docu' => 'Bitte wähle aus, welche Kategorien und Namensräume im XML-Format angezeigt werden sollen.',
 312+ 'dt_viewxml_categories' => 'Kategorien',
 313+ 'dt_viewxml_namespaces' => 'Namensräume',
 314+ 'dt_viewxml_simplifiedformat' => 'Vereinfachtes Format',
 315+ 'dt_xml_namespace' => 'Namensraum',
 316+ 'dt_xml_pages' => 'Seiten',
 317+ 'dt_xml_page' => 'Seite',
 318+ 'dt_xml_template' => 'Vorlage',
 319+ 'dt_xml_field' => 'Feld',
 320+ 'dt_xml_name' => 'Name',
 321+ 'dt_xml_title' => 'Titel',
 322+ 'dt_xml_id' => 'ID',
 323+ 'dt_xml_freetext' => 'Freier Text',
 324+ 'importxml' => 'XML importieren',
 325+ 'dt_import_selectfile' => 'Bitte die zu importierende $1-Datei auswählen:',
 326+ 'dt_import_editsummary' => '$1-Import',
 327+ 'dt_import_importing' => 'Importiere …',
 328+ 'dt_import_success' => '$1 {{PLURAL:$1|Seite|Seiten}} werden aus der $2-Datei importiert.',
 329+ 'importcsv' => 'CSV importieren',
 330+ 'dt_importcsv_badheader' => 'Fehler: Der Kopf der Spalte $1, „$2“, muss entweder „$3“, „$4“ oder im Format „Vorlagenname[Feldname]“ sein',
 331+ 'right-datatransferimport' => 'Daten importieren',
 332+);
 333+
 334+/** Lower Sorbian (Dolnoserbski)
 335+ * @author Michawiki
 336+ */
 337+$messages['dsb'] = array(
 338+ 'dt-desc' => 'Zmóžnja importěrowanje a eksportěrowanje datow w zawołanjach pśedłogow',
 339+ 'viewxml' => 'XML se woglědaś',
 340+ 'dt_viewxml_docu' => 'Pšosym wubjeŕ, kótare slědujucych kategorijow a mjenjowych rumow maju se pokazaś w formaśe XML.',
 341+ 'dt_viewxml_categories' => 'Kategorije',
 342+ 'dt_viewxml_namespaces' => 'Mjenjowe rumy',
 343+ 'dt_viewxml_simplifiedformat' => 'Zjadnorjony format',
 344+ 'dt_xml_namespace' => 'Mjenjowy rum',
 345+ 'dt_xml_pages' => 'Boki',
 346+ 'dt_xml_page' => 'Bok',
 347+ 'dt_xml_template' => 'Pśedłoga',
 348+ 'dt_xml_field' => 'Pólo',
 349+ 'dt_xml_name' => 'Mě',
 350+ 'dt_xml_title' => 'Titel',
 351+ 'dt_xml_id' => 'ID',
 352+ 'dt_xml_freetext' => 'Lichy tekst',
 353+ 'importxml' => 'XML importěrowaś',
 354+ 'dt_import_selectfile' => 'Pšosym wubjeŕ dataju $1 za importěrowanje:',
 355+ 'dt_import_editsummary' => 'Importěrowanje $1',
 356+ 'dt_import_importing' => 'Importěrujo se...',
 357+ 'dt_import_success' => '$1 {{PLURAL:$1|bok twóri|boka twóritej|boki twórje|bokow twóri}} se z dataje $2.',
 358+ 'importcsv' => 'Importěrowanje CSV',
 359+ '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ěś",
 360+ 'right-datatransferimport' => 'Daty importěrowaś',
 361+);
 362+
 363+/** Greek (Ελληνικά)
 364+ * @author Consta
 365+ * @author Crazymadlover
 366+ */
 367+$messages['el'] = array(
 368+ 'dt_viewxml_categories' => 'Κατηγορίες',
 369+ 'dt_xml_page' => 'Σελίδα',
 370+ 'dt_xml_template' => 'Πρότυπο',
 371+ 'dt_xml_field' => 'Πεδίο',
 372+ 'dt_xml_name' => 'Όνομα',
 373+ 'dt_xml_title' => 'Τίτλος',
 374+ 'dt_xml_id' => 'ID',
 375+);
 376+
 377+/** Esperanto (Esperanto)
 378+ * @author Yekrats
 379+ */
 380+$messages['eo'] = array(
 381+ 'dt-desc' => 'Permesas importadon kaj eksportadon de strukturemaj datenoj enhave en ŝablonaj vokoj.',
 382+ 'viewxml' => 'Rigardu XML-on',
 383+ 'dt_viewxml_docu' => 'Bonvolu elekti inter la subaj kategorioj kaj nomspacoj por rigardi en XML-formato.',
 384+ 'dt_viewxml_categories' => 'Kategorioj',
 385+ 'dt_viewxml_namespaces' => 'Nomspacoj',
 386+ 'dt_viewxml_simplifiedformat' => 'Simpligita formato',
 387+ 'dt_xml_namespace' => 'Nomspaco',
 388+ 'dt_xml_page' => 'Paĝo',
 389+ 'dt_xml_field' => 'Kampo',
 390+ 'dt_xml_name' => 'Nomo',
 391+ 'dt_xml_title' => 'Titolo',
 392+ 'dt_xml_id' => 'identigo',
 393+ 'dt_xml_freetext' => 'Libera Teksto',
 394+);
 395+
 396+/** Spanish (Español)
 397+ * @author Crazymadlover
 398+ * @author Imre
 399+ * @author Sanbec
 400+ */
 401+$messages['es'] = array(
 402+ 'viewxml' => 'Ver XML',
 403+ 'dt_viewxml_docu' => 'Por favor seleccionar entre las siguientes categorías y nombres de espacio para ver en formato XML.',
 404+ 'dt_viewxml_categories' => 'Categorías',
 405+ 'dt_viewxml_namespaces' => 'Espacios de nombres',
 406+ 'dt_viewxml_simplifiedformat' => 'Formato simplificado',
 407+ 'dt_xml_namespace' => 'Espacio de nombres',
 408+ 'dt_xml_pages' => 'Páginas',
 409+ 'dt_xml_page' => 'Página',
 410+ 'dt_xml_template' => 'Plantilla',
 411+ 'dt_xml_field' => 'Campo',
 412+ 'dt_xml_name' => 'Nombre',
 413+ 'dt_xml_title' => 'Título',
 414+ 'dt_xml_id' => 'ID',
 415+ 'dt_xml_freetext' => 'Texto libre',
 416+ 'importxml' => 'Importar XML',
 417+ 'dt_import_selectfile' => 'Por favor seleccione el archivo $1 a importar:',
 418+ 'dt_import_importing' => 'Importando...',
 419+ 'dt_import_success' => '$1 {{PLURAL:$1|página|páginas}} serán creadas del archivo $2.',
 420+ 'importcsv' => 'Importar CSV',
 421+);
 422+
 423+/** Finnish (Suomi)
 424+ * @author Crt
 425+ * @author Vililikku
 426+ */
 427+$messages['fi'] = array(
 428+ 'viewxml' => 'Näytä XML',
 429+ 'dt_viewxml_categories' => 'Luokat',
 430+ 'dt_viewxml_namespaces' => 'Nimiavaruudet',
 431+ 'dt_viewxml_simplifiedformat' => 'Yksinkertaistettu muoto',
 432+ 'dt_xml_namespace' => 'Nimiavaruus',
 433+ 'dt_xml_page' => 'Sivu',
 434+ 'dt_xml_field' => 'Kenttä',
 435+ 'dt_xml_name' => 'Nimi',
 436+ 'dt_xml_title' => 'Otsikko',
 437+ 'dt_xml_id' => 'Tunnus',
 438+ 'dt_xml_freetext' => 'Vapaa teksti',
 439+);
 440+
 441+/** French (Français)
 442+ * @author Crochet.david
 443+ * @author Grondin
 444+ * @author IAlex
 445+ * @author PieRRoMaN
 446+ */
 447+$messages['fr'] = array(
 448+ 'dt-desc' => 'Permet l’import et l’export de données contenues dans des appels de modèles',
 449+ 'viewxml' => 'Voir XML',
 450+ 'dt_viewxml_docu' => 'Veuillez sélectionner parmi les catégories et les espaces de noms suivants afin de visionner au format XML.',
 451+ 'dt_viewxml_categories' => 'Catégories',
 452+ 'dt_viewxml_namespaces' => 'Espaces de noms',
 453+ 'dt_viewxml_simplifiedformat' => 'Format simplifié',
 454+ 'dt_xml_namespace' => 'Espace de noms',
 455+ 'dt_xml_pages' => 'Pages',
 456+ 'dt_xml_page' => 'Page',
 457+ 'dt_xml_template' => 'Modèle',
 458+ 'dt_xml_field' => 'Champ',
 459+ 'dt_xml_name' => 'Nom',
 460+ 'dt_xml_title' => 'Titre',
 461+ 'dt_xml_id' => 'ID',
 462+ 'dt_xml_freetext' => 'Texte Libre',
 463+ 'importxml' => 'Import en XML',
 464+ 'dt_import_selectfile' => 'Veuillez sélectionner le fichier $1 à importer :',
 465+ 'dt_import_editsummary' => 'Importation $1',
 466+ 'dt_import_importing' => 'Import en cours...',
 467+ 'dt_import_success' => '$1 {{PLURAL:$1|page sera crée|pages seront crées}} depuis le fichier $2.',
 468+ 'importcsv' => 'Import CSV',
 469+ '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] »',
 470+ 'right-datatransferimport' => 'Importer des données',
 471+);
 472+
 473+/** Western Frisian (Frysk)
 474+ * @author Snakesteuben
 475+ */
 476+$messages['fy'] = array(
 477+ 'dt_viewxml_namespaces' => 'Nammeromten',
 478+ 'dt_xml_page' => 'Side',
 479+ 'dt_xml_name' => 'Namme',
 480+);
 481+
 482+/** Irish (Gaeilge)
 483+ * @author Alison
 484+ */
 485+$messages['ga'] = array(
 486+ 'dt_xml_namespace' => 'Ainmspás',
 487+);
 488+
 489+/** Galician (Galego)
 490+ * @author Alma
 491+ * @author Toliño
 492+ */
 493+$messages['gl'] = array(
 494+ 'dt-desc' => 'Permite importar e exportar datos contidos en chamadas de modelos',
 495+ 'viewxml' => 'Ver XML',
 496+ 'dt_viewxml_docu' => 'Por favor seleccione entre as seguintes categorías e espazos de nomes para ver en formato XML.',
 497+ 'dt_viewxml_categories' => 'Categorías',
 498+ 'dt_viewxml_namespaces' => 'Espazos de nomes',
 499+ 'dt_viewxml_simplifiedformat' => 'Formato simplificado',
 500+ 'dt_xml_namespace' => 'Espazo de nomes',
 501+ 'dt_xml_pages' => 'Páxinas',
 502+ 'dt_xml_page' => 'Páxina',
 503+ 'dt_xml_template' => 'Modelo',
 504+ 'dt_xml_field' => 'Campo',
 505+ 'dt_xml_name' => 'Nome',
 506+ 'dt_xml_title' => 'Título',
 507+ 'dt_xml_id' => 'ID',
 508+ 'dt_xml_freetext' => 'Texto Libre',
 509+ 'importxml' => 'Importar XML',
 510+ 'dt_import_selectfile' => 'Por favor, seleccione o ficheiro $1 a importar:',
 511+ 'dt_import_editsummary' => 'Importación en $1',
 512+ 'dt_import_importing' => 'Importando...',
 513+ 'dt_import_success' => '{{PLURAL:$1|Unha páxina será creada|$1 páxinas serán creadas}} a partir do ficheiro $2.',
 514+ 'importcsv' => 'Importación en CSV',
 515+ 'dt_importcsv_badheader' => 'Erro: a cabeceira da columna $1, "$2", debe ser un "$3", "$4" ou do formulario "template_name[field_name]"',
 516+ 'right-datatransferimport' => 'Importar datos',
 517+);
 518+
 519+/** Gothic
 520+ * @author Jocke Pirat
 521+ */
 522+$messages['got'] = array(
 523+ 'dt_xml_namespace' => 'Seidofera',
 524+);
 525+
 526+/** Ancient Greek (Ἀρχαία ἑλληνικὴ)
 527+ * @author Crazymadlover
 528+ * @author Omnipaedista
 529+ */
 530+$messages['grc'] = array(
 531+ 'dt_viewxml_categories' => 'Κατηγορίαι',
 532+ 'dt_viewxml_namespaces' => 'Ὀνοματεῖα',
 533+ 'dt_xml_namespace' => 'Ὀνοματεῖον',
 534+ 'dt_xml_page' => 'Δέλτος',
 535+ 'dt_xml_template' => 'Πρότυπον',
 536+ 'dt_xml_field' => 'Πεδίον',
 537+ 'dt_xml_name' => 'Ὄνομα',
 538+ 'dt_xml_title' => 'Ἐπιγραφή',
 539+ 'dt_xml_freetext' => 'Ἐλεύθερον κείμενον',
 540+);
 541+
 542+/** Swiss German (Alemannisch)
 543+ * @author Als-Holder
 544+ * @author J. 'mach' wust
 545+ */
 546+$messages['gsw'] = array(
 547+ 'dt-desc' => 'Macht dr Import un dr Export vu strukturierte Date megli, wu in Ufrief vu Vorlage bruucht wäre.',
 548+ 'viewxml' => 'XML aaluege',
 549+ 'dt_viewxml_docu' => 'Bitte wehl uus, weli Kategorien un Namensryym im XML-Format solle aazeigt wäre.',
 550+ 'dt_viewxml_categories' => 'Kategorie',
 551+ 'dt_viewxml_namespaces' => 'Namensryym',
 552+ 'dt_viewxml_simplifiedformat' => 'Vereifacht Format',
 553+ 'dt_xml_namespace' => 'Namensruum',
 554+ 'dt_xml_pages' => 'Syte',
 555+ 'dt_xml_page' => 'Syte',
 556+ 'dt_xml_template' => 'Vorlag',
 557+ 'dt_xml_field' => 'Fäld',
 558+ 'dt_xml_name' => 'Name',
 559+ 'dt_xml_title' => 'Titel',
 560+ 'dt_xml_id' => 'ID',
 561+ 'dt_xml_freetext' => 'Freje Täxt',
 562+ 'importxml' => 'XML importiere',
 563+ 'dt_import_selectfile' => 'Bitte wehl d $1-Datei zum importiere uus:',
 564+ 'dt_import_editsummary' => '$1-Import',
 565+ 'dt_import_importing' => 'Am Importiere ...',
 566+ 'dt_import_success' => '$1 {{PLURAL:$1|Syte|Syte}} wäre us dr $2-Datei aagleit.',
 567+ 'importcsv' => 'CSV-Datei importiere',
 568+ 'dt_importcsv_badheader' => "Fähler: d Spalte $1 Iberschrift, '$2', muess entwäder '$3', '$4' syy oder us em Format 'template_name[field_name]'",
 569+ 'right-datatransferimport' => 'Date importiere',
 570+);
 571+
 572+/** Manx (Gaelg)
 573+ * @author MacTire02
 574+ */
 575+$messages['gv'] = array(
 576+ 'viewxml' => 'Jeeagh er XML',
 577+ 'dt_viewxml_categories' => 'Ronnaghyn',
 578+ 'dt_xml_page' => 'Duillag',
 579+ 'dt_xml_name' => 'Ennym',
 580+ 'dt_xml_title' => 'Ard-ennym',
 581+ 'dt_xml_freetext' => 'Teks seyr',
 582+);
 583+
 584+/** Hawaiian (Hawai`i)
 585+ * @author Singularity
 586+ */
 587+$messages['haw'] = array(
 588+ 'dt_xml_page' => '‘Ao‘ao',
 589+ 'dt_xml_name' => 'Inoa',
 590+);
 591+
 592+/** Hebrew (עברית)
 593+ * @author Rotemliss
 594+ * @author YaronSh
 595+ */
 596+$messages['he'] = array(
 597+ 'dt-desc' => 'אפשרות לייבוא ולייצוא נתונים מבניים הנכללים בהכללות של תבניות',
 598+ 'viewxml' => 'הצגת XML',
 599+ 'dt_viewxml_docu' => 'אנא בחרו את מרחבי השם והקטגוריות אותם תרצו להציג בפורמט XML.',
 600+ 'dt_viewxml_categories' => 'קטגוריות',
 601+ 'dt_viewxml_namespaces' => 'מרחבי שם',
 602+ 'dt_viewxml_simplifiedformat' => 'מבנה מפושט',
 603+ 'dt_xml_namespace' => 'מרחב שם',
 604+ 'dt_xml_pages' => 'דפים',
 605+ 'dt_xml_page' => 'דף',
 606+ 'dt_xml_template' => 'תבנית',
 607+ 'dt_xml_field' => 'שדה',
 608+ 'dt_xml_name' => 'שם',
 609+ 'dt_xml_title' => 'כותרת',
 610+ 'dt_xml_id' => 'ID',
 611+ 'dt_xml_freetext' => 'טקסט חופשי',
 612+ 'importxml' => 'ייבוא XML',
 613+ 'dt_import_selectfile' => 'אנא בחרו את קובץ ה־$1 לייבוא:',
 614+ 'dt_import_editsummary' => 'ייבוא $1',
 615+ 'dt_import_importing' => 'בתהליכי ייבוא...',
 616+ 'dt_import_success' => '{{PLURAL:$1|דף אחד ייוצר|$1 דפים ייוצרו}} מקובץ ה־$2.',
 617+ 'importcsv' => 'ייבוא CSV',
 618+ 'dt_importcsv_badheader' => "שגיאה: כותרת העמודה $1, '$2', חייבת להיות או '$3', '$4' או מהצורה 'שם_התבנית[שם_השדה]'",
 619+ 'right-datatransferimport' => 'ייבוא נתונים',
 620+);
 621+
 622+/** Hindi (हिन्दी)
 623+ * @author Kaustubh
 624+ */
 625+$messages['hi'] = array(
 626+ 'dt-desc' => 'टेम्प्लेट कॉल में उपलब्ध डाटाकी आयात-निर्यात करने की अनुमति देता हैं',
 627+ 'viewxml' => 'XML देखें',
 628+ 'dt_viewxml_docu' => 'कॄपया XML में देखने के लिये श्रेणीयाँ और नामस्थान चुनें।',
 629+ 'dt_viewxml_categories' => 'श्रेणीयाँ',
 630+ 'dt_viewxml_namespaces' => 'नामस्थान',
 631+ 'dt_viewxml_simplifiedformat' => 'आसान फॉरमैट',
 632+ 'dt_xml_namespace' => 'नामस्थान',
 633+ 'dt_xml_page' => 'पन्ना',
 634+ 'dt_xml_field' => 'फिल्ड़',
 635+ 'dt_xml_name' => 'नाम',
 636+ 'dt_xml_title' => 'शीर्षक',
 637+ 'dt_xml_id' => 'आईडी',
 638+ 'dt_xml_freetext' => 'मुक्त पाठ',
 639+);
 640+
 641+/** Croatian (Hrvatski)
 642+ * @author Dalibor Bosits
 643+ */
 644+$messages['hr'] = array(
 645+ 'dt_viewxml_categories' => 'Kategorije',
 646+ 'dt_xml_namespace' => 'Imenski prostor',
 647+ 'dt_xml_page' => 'Stranica',
 648+);
 649+
 650+/** Upper Sorbian (Hornjoserbsce)
 651+ * @author Michawiki
 652+ */
 653+$messages['hsb'] = array(
 654+ 'dt-desc' => 'Dowola importowanje a eksportowanje datow, kotrež su we wołanjach předłohow wobsahowane',
 655+ 'viewxml' => 'XML wobhladać',
 656+ 'dt_viewxml_docu' => 'Prošu wubjer ze slědowacych kategorijow a mjenowych rumow, zo by w XML-formaće wobhladał.',
 657+ 'dt_viewxml_categories' => 'Kategorije',
 658+ 'dt_viewxml_namespaces' => 'Mjenowe rumy',
 659+ 'dt_viewxml_simplifiedformat' => 'Zjednorjeny format',
 660+ 'dt_xml_namespace' => 'Mjenowy rum',
 661+ 'dt_xml_pages' => 'Strony',
 662+ 'dt_xml_page' => 'Strona',
 663+ 'dt_xml_template' => 'Předłoha',
 664+ 'dt_xml_field' => 'Polo',
 665+ 'dt_xml_name' => 'Mjeno',
 666+ 'dt_xml_title' => 'Titul',
 667+ 'dt_xml_id' => 'Id',
 668+ 'dt_xml_freetext' => 'Swobodny tekst',
 669+ 'importxml' => 'XML importować',
 670+ 'dt_import_selectfile' => 'Prošu wubjer dataju $1 za importowanje:',
 671+ 'dt_import_editsummary' => 'Importowanje $1',
 672+ 'dt_import_importing' => 'Importuje so...',
 673+ '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}}.',
 674+ 'importcsv' => 'Importowanje CSV',
 675+ 'dt_importcsv_badheader' => "Zmylk: hłowa špalty $1, '$2', dyrbi pak '$3', '$4' być pak formu 'mjeno_předłohi[mjeno_pola]' měć",
 676+ 'right-datatransferimport' => 'Daty importować',
 677+);
 678+
 679+/** Hungarian (Magyar)
 680+ * @author Dani
 681+ */
 682+$messages['hu'] = array(
 683+ 'dt-desc' => 'Lehetővé teszi a sablonhívásokban található adatszerkezetek importálását és exportálását',
 684+ 'viewxml' => 'XML megtekintése',
 685+ '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.',
 686+ 'dt_viewxml_categories' => 'Kategóriák',
 687+ 'dt_viewxml_namespaces' => 'Névterek',
 688+ 'dt_viewxml_simplifiedformat' => 'Egyszerűsített formátum',
 689+ 'dt_xml_namespace' => 'Névtér',
 690+ 'dt_xml_page' => 'Lap',
 691+ 'dt_xml_field' => 'Mező',
 692+ 'dt_xml_name' => 'Név',
 693+ 'dt_xml_title' => 'Cím',
 694+ 'dt_xml_id' => 'Azonosító',
 695+ 'dt_xml_freetext' => 'Szabad szöveg',
 696+);
 697+
 698+/** Interlingua (Interlingua)
 699+ * @author McDutchie
 700+ */
 701+$messages['ia'] = array(
 702+ 'dt-desc' => 'Permitte importar e exportar datos continite in appellos a patronos',
 703+ 'viewxml' => 'Vider XML',
 704+ 'dt_viewxml_docu' => 'Per favor selige inter le sequente categorias e spatios de nomines pro vider in formato XML.',
 705+ 'dt_viewxml_categories' => 'Categorias',
 706+ 'dt_viewxml_namespaces' => 'Spatios de nomines',
 707+ 'dt_viewxml_simplifiedformat' => 'Formato simplificate',
 708+ 'dt_xml_namespace' => 'Spatio de nomines',
 709+ 'dt_xml_pages' => 'Paginas',
 710+ 'dt_xml_page' => 'Pagina',
 711+ 'dt_xml_template' => 'Patrono',
 712+ 'dt_xml_field' => 'Campo',
 713+ 'dt_xml_name' => 'Nomine',
 714+ 'dt_xml_title' => 'Titulo',
 715+ 'dt_xml_id' => 'ID',
 716+ 'dt_xml_freetext' => 'Texto libere',
 717+ 'importxml' => 'Importar XML',
 718+ 'dt_import_selectfile' => 'Per favor selige le file $1 a importar:',
 719+ 'dt_import_editsummary' => 'Importation de $1',
 720+ 'dt_import_importing' => 'Importation in curso…',
 721+ 'dt_import_success' => '$1 {{PLURAL:$1|pagina|paginas}} essera create ex le file $2.',
 722+ 'importcsv' => 'Importar CSV',
 723+ 'dt_importcsv_badheader' => "Error: le capite del columna $1, '$2', debe esser '$3', '$4' o in le forma 'nomine_de_patrono[nomine_de_campo]'",
 724+ 'right-datatransferimport' => 'Importar datos',
 725+);
 726+
 727+/** Indonesian (Bahasa Indonesia)
 728+ * @author Bennylin
 729+ * @author Irwangatot
 730+ * @author Rex
 731+ */
 732+$messages['id'] = array(
 733+ 'dt_viewxml_categories' => 'Kategori',
 734+ 'dt_viewxml_namespaces' => 'Ruang nama',
 735+ 'dt_xml_namespace' => 'Ruang nama',
 736+ 'dt_xml_pages' => 'Halaman',
 737+ 'dt_xml_page' => 'Halaman',
 738+ 'dt_xml_template' => 'Templat',
 739+ 'dt_xml_name' => 'Nama',
 740+ 'dt_xml_title' => 'Judul',
 741+ 'dt_xml_id' => 'ID',
 742+ 'dt_xml_freetext' => 'Teks Gratis',
 743+);
 744+
 745+/** Ido (Ido)
 746+ * @author Malafaya
 747+ */
 748+$messages['io'] = array(
 749+ 'dt_xml_title' => 'Titulo',
 750+);
 751+
 752+/** Icelandic (Íslenska)
 753+ * @author S.Örvarr.S
 754+ */
 755+$messages['is'] = array(
 756+ 'dt_viewxml_namespaces' => 'Nafnrými',
 757+ 'dt_xml_page' => 'Síða',
 758+);
 759+
 760+/** Italian (Italiano)
 761+ * @author BrokenArrow
 762+ * @author Darth Kule
 763+ */
 764+$messages['it'] = array(
 765+ 'dt-desc' => "Permette l'importazione e l'esportazione di dati strutturati contenuti in chiamate a template",
 766+ 'viewxml' => 'Vedi XML',
 767+ 'dt_viewxml_docu' => 'Selezionare tra le categorie e namespace indicati di seguito quelli da visualizzare in formato XML.',
 768+ 'dt_viewxml_categories' => 'Categorie',
 769+ 'dt_viewxml_namespaces' => 'Namespace',
 770+ 'dt_viewxml_simplifiedformat' => 'Formato semplificato',
 771+ 'dt_xml_namespace' => 'Namespace',
 772+ 'dt_xml_page' => 'Pagina',
 773+ 'dt_xml_field' => 'Campo',
 774+ 'dt_xml_name' => 'Nome',
 775+ 'dt_xml_title' => 'Titolo',
 776+ 'dt_xml_id' => 'ID',
 777+ 'dt_xml_freetext' => 'Testo libero',
 778+);
 779+
 780+/** Japanese (日本語)
 781+ * @author Aotake
 782+ * @author Fryed-peach
 783+ * @author JtFuruhata
 784+ */
 785+$messages['ja'] = array(
 786+ 'dt-desc' => 'テンプレート呼び出しに関わるデータのインポートおよびエクスポートを可能にする',
 787+ 'viewxml' => 'XML表示',
 788+ 'dt_viewxml_docu' => 'XML形式で表示するカテゴリや名前空間を以下から選択してください。',
 789+ 'dt_viewxml_categories' => 'カテゴリ',
 790+ 'dt_viewxml_namespaces' => '名前空間',
 791+ 'dt_viewxml_simplifiedformat' => '簡易形式',
 792+ 'dt_xml_namespace' => '名前空間',
 793+ 'dt_xml_pages' => 'ページ群',
 794+ 'dt_xml_page' => 'ページ',
 795+ 'dt_xml_template' => 'テンプレート',
 796+ 'dt_xml_field' => 'フィールド',
 797+ 'dt_xml_name' => '名前',
 798+ 'dt_xml_title' => 'タイトル',
 799+ 'dt_xml_id' => 'ID',
 800+ 'dt_xml_freetext' => '自由形式テキスト',
 801+ 'importxml' => 'XMLインポート',
 802+ 'dt_import_selectfile' => 'インポートする $1 ファイルを選択してください:',
 803+ 'dt_import_editsummary' => '$1 のインポート',
 804+ 'dt_import_importing' => 'インポート中…',
 805+ 'dt_import_success' => '$2ファイルから$1{{PLURAL:$1|ページ}}がインポートされます。',
 806+ 'importcsv' => 'CSVのインポート',
 807+ 'dt_importcsv_badheader' => 'エラー: 列 $1 のヘッダ「$2」は、「$3」もしくは「$4」であるか、または「テンプレート名[フィールド名]」という形式になっていなければなりません。',
 808+ 'right-datatransferimport' => 'データをインポートする',
 809+);
 810+
 811+/** Javanese (Basa Jawa)
 812+ * @author Meursault2004
 813+ */
 814+$messages['jv'] = array(
 815+ 'viewxml' => 'Ndeleng XML',
 816+ 'dt_viewxml_categories' => 'Kategori-kategori',
 817+ 'dt_viewxml_simplifiedformat' => 'Format prasaja',
 818+ 'dt_xml_namespace' => 'Bilik nama',
 819+ 'dt_xml_page' => 'Kaca',
 820+ 'dt_xml_name' => 'Jeneng',
 821+ 'dt_xml_title' => 'Irah-irahan (judhul)',
 822+ 'dt_xml_id' => 'ID',
 823+ 'dt_xml_freetext' => 'Tèks Bébas',
 824+);
 825+
 826+/** Khmer (ភាសាខ្មែរ)
 827+ * @author Chhorran
 828+ * @author Lovekhmer
 829+ * @author Thearith
 830+ */
 831+$messages['km'] = array(
 832+ 'viewxml' => 'មើល XML',
 833+ 'dt_viewxml_docu' => 'ជ្រើសយកក្នុងចំណោមចំណាត់ថ្នាក់ក្រុមនិងលំហឈ្មោះដើម្បីមើលជាទម្រង់ XML ។',
 834+ 'dt_viewxml_categories' => 'ចំណាត់ថ្នាក់ក្រុម',
 835+ 'dt_viewxml_namespaces' => 'លំហឈ្មោះ',
 836+ 'dt_viewxml_simplifiedformat' => 'ទម្រង់សាមញ្ញ',
 837+ 'dt_xml_namespace' => 'វាលឈ្មោះ',
 838+ 'dt_xml_page' => 'ទំព័រ',
 839+ 'dt_xml_name' => 'ឈ្មោះ',
 840+ 'dt_xml_title' => 'ចំណងជើង',
 841+ 'dt_xml_id' => 'អត្តសញ្ញាណ',
 842+ 'dt_xml_freetext' => 'អត្ថបទសេរី',
 843+);
 844+
 845+/** Kinaray-a (Kinaray-a)
 846+ * @author Jose77
 847+ */
 848+$messages['krj'] = array(
 849+ 'dt_viewxml_categories' => 'Manga Kategorya',
 850+ 'dt_xml_page' => 'Pahina',
 851+);
 852+
 853+/** Ripoarisch (Ripoarisch)
 854+ * @author Purodha
 855+ */
 856+$messages['ksh'] = array(
 857+ 'dt-desc' => 'Määt et müjjelesch, Date uß Schabloone ier Oproofe ze emporteere un ze exporteere.',
 858+ 'viewxml' => '<i lang="en">XML</i> beloore',
 859+ 'dt_viewxml_docu' => 'Don ußsöke, wat fö_n Saachjruppe un Appachtemangs De em <i lang="en">XML</i> Fommaat aanloore wells.',
 860+ 'dt_viewxml_categories' => 'Saachjroppe',
 861+ 'dt_viewxml_namespaces' => 'Appachtemangs',
 862+ 'dt_viewxml_simplifiedformat' => 'Em eijfachere Fommaat',
 863+ 'dt_xml_namespace' => 'Appachtemang',
 864+ 'dt_xml_pages' => 'Sigge',
 865+ 'dt_xml_page' => 'Sigg',
 866+ 'dt_xml_template' => 'Schablohn',
 867+ 'dt_xml_field' => 'Felldt',
 868+ 'dt_xml_name' => 'Name',
 869+ 'dt_xml_title' => 'Tėttel',
 870+ 'dt_xml_id' => 'Kännong',
 871+ 'dt_xml_freetext' => 'Freije Täx',
 872+ 'importxml' => '<i lang="en">XML</i> Empotteere',
 873+ 'dt_import_selectfile' => 'Söhk de <i lang="en">$1</i>-Dattei för zem Empotteere uß:',
 874+ 'dt_import_editsummary' => 'uss ene <i lang="en">$1</i>-Datei empotteet',
 875+ 'dt_import_importing' => 'Ben aam Empotteere{{int:Ellipsis}}',
 876+ 'dt_import_success' => '{{PLURAL:$1|Ein Sigg weed_uß|$1 Sigge weede uß|Kein einzelne Sigg weed_uß}} dä <i lang="en">$2</i>-Dattei empotteet.',
 877+ 'importcsv' => '<i lang="en">CSV</i>-Dattei empoteere',
 878+ 'dt_importcsv_badheader' => 'Fähler: De Shpallde-Övverschreff för $1 es „$2“, mööt ävver „$3“ udder „$4“ sin, udder dat Fommaat „<code>Name_vun_ene_Schablohn[Name_vun_enem_Felldt]</code>“ han.',
 879+ 'right-datatransferimport' => 'Daate empoteere',
 880+);
 881+
 882+/** Cornish (Kernewek)
 883+ * @author Kw-Moon
 884+ */
 885+$messages['kw'] = array(
 886+ 'dt_viewxml_categories' => 'Klasyansow',
 887+ 'dt_xml_page' => 'Folen',
 888+);
 889+
 890+/** Luxembourgish (Lëtzebuergesch)
 891+ * @author Robby
 892+ */
 893+$messages['lb'] = array(
 894+ 'dt-desc' => "Erlaabt et Daten déi an Opruffer vu schabloune benotzt ginn z'importéieren an z'exportéieren",
 895+ 'viewxml' => 'XML weisen',
 896+ 'dt_viewxml_docu' => 'Wielt w.e.g. ënnert dëse Kategorien an Nimmraim fir am XML-Format unzeweisen.',
 897+ 'dt_viewxml_categories' => 'Kategorien',
 898+ 'dt_viewxml_namespaces' => 'Nummraim',
 899+ 'dt_viewxml_simplifiedformat' => 'Vereinfachte Format',
 900+ 'dt_xml_namespace' => 'Nummraum',
 901+ 'dt_xml_pages' => 'Säiten',
 902+ 'dt_xml_page' => 'Säit',
 903+ 'dt_xml_template' => 'Schabloun',
 904+ 'dt_xml_field' => 'Feld',
 905+ 'dt_xml_name' => 'Numm',
 906+ 'dt_xml_title' => 'Titel',
 907+ 'dt_xml_id' => 'Nummer',
 908+ 'dt_xml_freetext' => 'Fräien Text',
 909+ 'importxml' => 'XML importéieren',
 910+ 'dt_import_selectfile' => "Sicht de(n) $1-Fichier eraus fir z'importéieren:",
 911+ 'dt_import_editsummary' => '$1 importéieren',
 912+ 'dt_import_importing' => 'Import am gaang ...',
 913+ 'dt_import_success' => '$1 {{PLURAL:$1|Säit gëtt|Säite ginn}} aus dem $2-Fichier ugeluecht.',
 914+ 'importcsv' => 'CSV importéieren',
 915+ '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",
 916+ 'right-datatransferimport' => 'Donnéeën importéieren',
 917+);
 918+
 919+/** Limburgish (Limburgs)
 920+ * @author Remember the dot
 921+ */
 922+$messages['li'] = array(
 923+ 'dt_xml_page' => 'Pazjena',
 924+);
 925+
 926+/** Lithuanian (Lietuvių)
 927+ * @author Tomasdd
 928+ */
 929+$messages['lt'] = array(
 930+ 'dt_viewxml_categories' => 'Kategorijos',
 931+);
 932+
 933+/** Eastern Mari (Олык Марий)
 934+ * @author Сай
 935+ */
 936+$messages['mhr'] = array(
 937+ 'dt_xml_namespace' => 'Лӱм-влакын кумдыкышт',
 938+ 'dt_xml_page' => 'Лаштык',
 939+);
 940+
 941+/** Malayalam (മലയാളം)
 942+ * @author Shijualex
 943+ */
 944+$messages['ml'] = array(
 945+ 'viewxml' => 'XML കാണുക',
 946+ 'dt_viewxml_categories' => 'വിഭാഗങ്ങള്‍',
 947+ 'dt_viewxml_namespaces' => 'നേംസ്പേസുകള്‍',
 948+ 'dt_viewxml_simplifiedformat' => 'ലളിതവത്ക്കരിക്കപ്പെട്ട ഫോര്‍മാറ്റ്',
 949+ 'dt_xml_namespace' => 'നേംസ്പേസ്',
 950+ 'dt_xml_page' => 'താള്‍',
 951+ 'dt_xml_field' => 'ഫീല്‍ഡ്',
 952+ 'dt_xml_name' => 'പേര്‌',
 953+ 'dt_xml_title' => 'ശീര്‍ഷകം',
 954+ 'dt_xml_id' => 'ഐഡി',
 955+);
 956+
 957+/** Marathi (मराठी)
 958+ * @author Kaustubh
 959+ */
 960+$messages['mr'] = array(
 961+ 'dt-desc' => 'साचा कॉल मध्ये असणार्‍या डाटाची आयात निर्यात करण्याची परवानगी देतो',
 962+ 'viewxml' => 'XML पहा',
 963+ 'dt_viewxml_docu' => 'कॄपया XML मध्ये पाहण्यासाठी खालीलपैकी वर्ग व नामविश्वे निवडा.',
 964+ 'dt_viewxml_categories' => 'वर्ग',
 965+ 'dt_viewxml_namespaces' => 'नामविश्वे',
 966+ 'dt_viewxml_simplifiedformat' => 'सोप्या प्रकारे',
 967+ 'dt_xml_namespace' => 'नामविश्व',
 968+ 'dt_xml_page' => 'पान',
 969+ 'dt_xml_field' => 'रकाना',
 970+ 'dt_xml_name' => 'नाव',
 971+ 'dt_xml_title' => 'शीर्षक',
 972+ 'dt_xml_id' => 'क्रमांक (आयडी)',
 973+ 'dt_xml_freetext' => 'मुक्त मजकूर',
 974+);
 975+
 976+/** Mirandese (Mirandés)
 977+ * @author Malafaya
 978+ */
 979+$messages['mwl'] = array(
 980+ 'dt_xml_page' => 'Páigina',
 981+);
 982+
 983+/** Erzya (Эрзянь)
 984+ * @author Botuzhaleny-sodamo
 985+ */
 986+$messages['myv'] = array(
 987+ 'dt_viewxml_categories' => 'Категорият',
 988+ 'dt_viewxml_namespaces' => 'Лем потмот',
 989+ 'dt_xml_page' => 'Лопа',
 990+ 'dt_xml_field' => 'Пакся',
 991+ 'dt_xml_name' => 'Лемезэ',
 992+ 'dt_xml_title' => 'Конякс',
 993+);
 994+
 995+/** Nahuatl (Nāhuatl)
 996+ * @author Fluence
 997+ */
 998+$messages['nah'] = array(
 999+ 'dt_viewxml_categories' => 'Neneuhcāyōtl',
 1000+ 'dt_viewxml_namespaces' => 'Tōcātzin',
 1001+ 'dt_xml_namespace' => 'Tōcātzin',
 1002+ 'dt_xml_page' => 'Zāzanilli',
 1003+ 'dt_xml_name' => 'Tōcāitl',
 1004+ 'dt_xml_title' => 'Tōcāitl',
 1005+ 'dt_xml_id' => 'ID',
 1006+);
 1007+
 1008+/** Low German (Plattdüütsch)
 1009+ * @author Slomox
 1010+ */
 1011+$messages['nds'] = array(
 1012+ 'dt_xml_name' => 'Naam',
 1013+);
 1014+
 1015+/** Dutch (Nederlands)
 1016+ * @author Siebrand
 1017+ */
 1018+$messages['nl'] = array(
 1019+ 'dt-desc' => 'Maakt het importeren en exporteren van gestructureerde gegevens in sjabloonaanroepen mogelijk',
 1020+ 'viewxml' => 'XML bekijken',
 1021+ 'dt_viewxml_docu' => 'Selecteer uit de volgende categorieën en naamruimten om in XML-formaat te bekijken.',
 1022+ 'dt_viewxml_categories' => 'Categorieën',
 1023+ 'dt_viewxml_namespaces' => 'Naamruimten',
 1024+ 'dt_viewxml_simplifiedformat' => 'Vereenvoudigd formaat',
 1025+ 'dt_xml_namespace' => 'Naamruimte',
 1026+ 'dt_xml_pages' => "Pagina's",
 1027+ 'dt_xml_page' => 'Pagina',
 1028+ 'dt_xml_template' => 'Sjabloon',
 1029+ 'dt_xml_field' => 'Veld',
 1030+ 'dt_xml_name' => 'Naam',
 1031+ 'dt_xml_title' => 'Titel',
 1032+ 'dt_xml_id' => 'ID',
 1033+ 'dt_xml_freetext' => 'Vrije tekst',
 1034+ 'importxml' => 'XML importeren',
 1035+ 'dt_import_selectfile' => 'Selecteer het te importeren bestand van het type $1:',
 1036+ 'dt_import_editsummary' => '$1-import',
 1037+ 'dt_import_importing' => 'Bezig met importeren…',
 1038+ 'dt_import_success' => "Uit het $2-bestand {{PLURAL:$1|wordt één pagina|worden $1 pagina's}} geïmporteerd.",
 1039+ 'importcsv' => 'CSV importeren',
 1040+ 'dt_importcsv_badheader' => 'Fout: De kop van kolom $1, "$2", moet "$3" of "$4" zijn, of in de vorm "sjabloonnaam[veldnaam]" genoteerd worden.',
 1041+ 'right-datatransferimport' => 'Gegevens importeren',
 1042+);
 1043+
 1044+/** Norwegian Nynorsk (‪Norsk (nynorsk)‬)
 1045+ * @author Gunnernett
 1046+ * @author Harald Khan
 1047+ * @author Jon Harald Søby
 1048+ */
 1049+$messages['nn'] = array(
 1050+ 'dt-desc' => 'Gjer det mogleg å importera og eksportera data i maloppkallingar',
 1051+ 'viewxml' => 'Syn XML',
 1052+ 'dt_viewxml_docu' => 'Vel mellom følgjande kategoriar og namnerom for å syna dei i XML-format.',
 1053+ 'dt_viewxml_categories' => 'Kategoriar',
 1054+ 'dt_viewxml_namespaces' => 'Namnerom',
 1055+ 'dt_viewxml_simplifiedformat' => 'Forenkla format',
 1056+ 'dt_xml_namespace' => 'Namnerom',
 1057+ 'dt_xml_pages' => 'Sider',
 1058+ 'dt_xml_page' => 'Side',
 1059+ 'dt_xml_template' => 'Mal',
 1060+ 'dt_xml_field' => 'Felt',
 1061+ 'dt_xml_name' => 'Namn',
 1062+ 'dt_xml_title' => 'Tittel',
 1063+ 'dt_xml_id' => 'ID',
 1064+ 'dt_xml_freetext' => 'Fritekst',
 1065+ 'importxml' => 'Importer XML',
 1066+ 'dt_import_selectfile' => 'Ver venleg og vel $1-fila som skal verta importert:',
 1067+ 'dt_import_editsummary' => '$1-importering',
 1068+ 'dt_import_importing' => 'Importerer...',
 1069+ 'dt_import_success' => '$1 {{PLURAL:$1|Éi side vil verta importert|$1 sider vil verta importerte}} frå $2-fila.',
 1070+ 'importcsv' => 'Importer CSV',
 1071+ 'dt_importcsv_badheader' => "Feil: kolonneoverskrifta $1, '$2', må vera anten '$3', '$4' eller på forma 'malnamn[feltnamn]'",
 1072+ 'right-datatransferimport' => 'Importer data',
 1073+);
 1074+
 1075+/** Norwegian (bokmål)‬ (‪Norsk (bokmål)‬)
 1076+ * @author Jon Harald Søby
 1077+ * @author Nghtwlkr
 1078+ */
 1079+$messages['no'] = array(
 1080+ 'dt-desc' => 'Gjør det mulig å importere og eksportere data som finnes i maloppkallinger',
 1081+ 'viewxml' => 'Se XML',
 1082+ 'dt_viewxml_docu' => 'Velg blant følgende kategorier og navnerom for å se dem i XML-format',
 1083+ 'dt_viewxml_categories' => 'Kategorier',
 1084+ 'dt_viewxml_namespaces' => 'Navnerom',
 1085+ 'dt_viewxml_simplifiedformat' => 'Forenklet format',
 1086+ 'dt_xml_namespace' => 'Navnerom',
 1087+ 'dt_xml_pages' => 'Sider',
 1088+ 'dt_xml_page' => 'Side',
 1089+ 'dt_xml_template' => 'Mal',
 1090+ 'dt_xml_field' => 'Felt',
 1091+ 'dt_xml_name' => 'Navn',
 1092+ 'dt_xml_title' => 'Tittel',
 1093+ 'dt_xml_id' => 'ID',
 1094+ 'dt_xml_freetext' => 'Fritekst',
 1095+ 'importxml' => 'Importer XML',
 1096+ 'dt_import_selectfile' => 'Vennligst velg $1-filen som skal importeres:',
 1097+ 'dt_import_editsummary' => '$1-importering',
 1098+ 'dt_import_importing' => 'Importerer...',
 1099+ 'dt_import_success' => '{{PLURAL:$1|Én side|$1 sider}} vil bli importert fra $2-filen.',
 1100+ 'importcsv' => 'Importer CSV',
 1101+ 'right-datatransferimport' => 'Importer data',
 1102+);
 1103+
 1104+/** Occitan (Occitan)
 1105+ * @author Cedric31
 1106+ */
 1107+$messages['oc'] = array(
 1108+ 'dt-desc' => "Permet l’impòrt e l’expòrt de donadas contengudas dins d'apèls de modèls",
 1109+ 'viewxml' => 'Veire XML',
 1110+ 'dt_viewxml_docu' => 'Secconatz demest las categorias e los espacis de nomenatges per visionar en format XML.',
 1111+ 'dt_viewxml_categories' => 'Categorias',
 1112+ 'dt_viewxml_namespaces' => 'Espacis de nomenatge',
 1113+ 'dt_viewxml_simplifiedformat' => 'Format simplificat',
 1114+ 'dt_xml_namespace' => 'Espaci de nom',
 1115+ 'dt_xml_pages' => 'Paginas',
 1116+ 'dt_xml_page' => 'Pagina',
 1117+ 'dt_xml_template' => 'Modèl',
 1118+ 'dt_xml_field' => 'Camp',
 1119+ 'dt_xml_name' => 'Nom',
 1120+ 'dt_xml_title' => 'Títol',
 1121+ 'dt_xml_id' => 'ID',
 1122+ 'dt_xml_freetext' => 'Tèxte Liure',
 1123+ 'importxml' => 'Impòrt en XML',
 1124+ 'dt_import_selectfile' => "Seleccionatz lo fichièr $1 d'importar :",
 1125+ 'dt_import_editsummary' => 'Importacion $1',
 1126+ 'dt_import_importing' => 'Impòrt en cors...',
 1127+ 'dt_import_success' => '$1 {{PLURAL:$1|pagina serà creada|paginas seràn creadas}} dempuèi lo fichièr $2.',
 1128+ 'importcsv' => 'Impòrt CSV',
 1129+ '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] »',
 1130+ 'right-datatransferimport' => 'Importar de donadas',
 1131+);
 1132+
 1133+/** Ossetic (Иронау)
 1134+ * @author Amikeco
 1135+ */
 1136+$messages['os'] = array(
 1137+ 'dt_xml_page' => 'Фарс',
 1138+ 'dt_xml_title' => 'Сæргонд',
 1139+);
 1140+
 1141+/** Deitsch (Deitsch)
 1142+ * @author Xqt
 1143+ */
 1144+$messages['pdc'] = array(
 1145+ 'dt_xml_namespace' => 'Blatznaame',
 1146+ 'dt_xml_page' => 'Blatt',
 1147+ 'dt_xml_name' => 'Naame',
 1148+);
 1149+
 1150+/** Polish (Polski)
 1151+ * @author McMonster
 1152+ * @author Sp5uhe
 1153+ * @author Wpedzich
 1154+ */
 1155+$messages['pl'] = array(
 1156+ 'dt-desc' => 'Pozwala na importowanie i eksportowanie danych zawartych w wywołaniach szablonu',
 1157+ 'viewxml' => 'Podgląd XML',
 1158+ 'dt_viewxml_docu' => 'Wybierz, które spośród następujących kategorii i przestrzeni nazw chcesz podejrzeć w formacie XML.',
 1159+ 'dt_viewxml_categories' => 'Kategorie',
 1160+ 'dt_viewxml_namespaces' => 'Przestrzenie nazw',
 1161+ 'dt_viewxml_simplifiedformat' => 'Format uproszczony',
 1162+ 'dt_xml_namespace' => 'Przestrzeń nazw',
 1163+ 'dt_xml_page' => 'Strona',
 1164+ 'dt_xml_field' => 'Pole',
 1165+ 'dt_xml_name' => 'Nazwa',
 1166+ 'dt_xml_title' => 'Tytuł',
 1167+ 'dt_xml_id' => 'ID',
 1168+ 'dt_xml_freetext' => 'Dowolny tekst',
 1169+);
 1170+
 1171+/** Pashto (پښتو)
 1172+ * @author Ahmed-Najib-Biabani-Ibrahimkhel
 1173+ */
 1174+$messages['ps'] = array(
 1175+ 'dt_viewxml_categories' => 'وېشنيزې',
 1176+ 'dt_viewxml_namespaces' => 'نوم-تشيالونه',
 1177+ 'dt_xml_namespace' => 'نوم-تشيال',
 1178+ 'dt_xml_page' => 'مخ',
 1179+ 'dt_xml_name' => 'نوم',
 1180+ 'dt_xml_title' => 'سرليک',
 1181+ 'dt_xml_freetext' => 'خپلواکه متن',
 1182+);
 1183+
 1184+/** Portuguese (Português)
 1185+ * @author Lijealso
 1186+ * @author Malafaya
 1187+ */
 1188+$messages['pt'] = array(
 1189+ 'dt-desc' => 'Permite importação e exportação de dados contidos em chamadas de predefinições',
 1190+ 'viewxml' => 'Ver XML',
 1191+ 'dt_viewxml_docu' => 'Por favor, seleccione de entre as categorias e espaços nominais seguintes para ver em formato XML.',
 1192+ 'dt_viewxml_categories' => 'Categorias',
 1193+ 'dt_viewxml_namespaces' => 'Espaços nominais',
 1194+ 'dt_viewxml_simplifiedformat' => 'Formato simplificado',
 1195+ 'dt_xml_namespace' => 'Espaço nominal',
 1196+ 'dt_xml_pages' => 'Páginas',
 1197+ 'dt_xml_page' => 'Página',
 1198+ 'dt_xml_template' => 'Predefinição',
 1199+ 'dt_xml_field' => 'Campo',
 1200+ 'dt_xml_name' => 'Nome',
 1201+ 'dt_xml_title' => 'Título',
 1202+ 'dt_xml_id' => 'ID',
 1203+ 'dt_xml_freetext' => 'Texto Livre',
 1204+ 'importxml' => 'Importar XML',
 1205+ 'dt_import_selectfile' => 'Por favor, selecione o ficheiro $1 a importar:',
 1206+ 'dt_import_editsummary' => 'Importação de $1',
 1207+ 'dt_import_importing' => 'Importando...',
 1208+ 'dt_import_success' => '{{PLURAL:$1|A página será importada|As páginas serão importadas}} a partir do ficheiro $2.',
 1209+ 'importcsv' => 'Importar CSV',
 1210+ 'right-datatransferimport' => 'Importar dados',
 1211+);
 1212+
 1213+/** Brazilian Portuguese (Português do Brasil)
 1214+ * @author Eduardo.mps
 1215+ */
 1216+$messages['pt-br'] = array(
 1217+ 'dt-desc' => 'Permite a importação e exportação de dados contidos em chamadas de predefinições',
 1218+ 'viewxml' => 'Ver XML',
 1219+ 'dt_viewxml_docu' => 'Por favor, selecione dentre as categorias e espaços nominais seguintes para ver em formato XML.',
 1220+ 'dt_viewxml_categories' => 'Categorias',
 1221+ 'dt_viewxml_namespaces' => 'Espaços nominais',
 1222+ 'dt_viewxml_simplifiedformat' => 'Formato simplificado',
 1223+ 'dt_xml_namespace' => 'Espaço nominal',
 1224+ 'dt_xml_pages' => 'Páginas',
 1225+ 'dt_xml_page' => 'Página',
 1226+ 'dt_xml_template' => 'Predefinição',
 1227+ 'dt_xml_field' => 'Campo',
 1228+ 'dt_xml_name' => 'Nome',
 1229+ 'dt_xml_title' => 'Título',
 1230+ 'dt_xml_id' => 'ID',
 1231+ 'dt_xml_freetext' => 'Texto Livre',
 1232+ 'importxml' => 'Importar XML',
 1233+ 'dt_import_selectfile' => 'Por favor selecione o arquivo $1 para importar:',
 1234+ 'dt_import_editsummary' => 'Importação de $1',
 1235+ 'dt_import_importing' => 'Importando...',
 1236+ 'dt_import_success' => '$1 {{PLURAL:$1|página será importada|páginas serão importadas}} do arquivo $2.',
 1237+);
 1238+
 1239+/** Romanian (Română)
 1240+ * @author KlaudiuMihaila
 1241+ */
 1242+$messages['ro'] = array(
 1243+ 'viewxml' => 'Vizualizează XML',
 1244+ 'dt_viewxml_categories' => 'Categorii',
 1245+ 'dt_viewxml_namespaces' => 'Spaţii de nume',
 1246+ 'dt_viewxml_simplifiedformat' => 'Format simplificat',
 1247+ 'dt_xml_namespace' => 'Spaţiu de nume',
 1248+ 'dt_xml_page' => 'Pagină',
 1249+ 'dt_xml_field' => 'Câmp',
 1250+ 'dt_xml_name' => 'Nume',
 1251+ 'dt_xml_title' => 'Titlu',
 1252+ 'dt_xml_id' => 'ID',
 1253+);
 1254+
 1255+/** Tarandíne (Tarandíne)
 1256+ * @author Joetaras
 1257+ */
 1258+$messages['roa-tara'] = array(
 1259+ 'dt-desc' => "Permètte de 'mbortà e esportà date strutturate ca stonne jndr'à le chiamate a le template",
 1260+ 'viewxml' => "Vide l'XML",
 1261+ 'dt_viewxml_docu' => "Pe piacere scacchie ìmbrà le categorije seguende e le namespace seguende pe vedè 'u formate XML.",
 1262+ 'dt_viewxml_categories' => 'Categorije',
 1263+ 'dt_viewxml_namespaces' => 'Namespace',
 1264+ 'dt_viewxml_simplifiedformat' => 'Formate semblifichete',
 1265+ 'dt_xml_namespace' => 'Namespace',
 1266+ 'dt_xml_pages' => 'Pàggene',
 1267+ 'dt_xml_page' => 'Pàgene',
 1268+ 'dt_xml_template' => 'Template',
 1269+ 'dt_xml_field' => 'Cambe',
 1270+ 'dt_xml_name' => 'Nome',
 1271+ 'dt_xml_title' => 'Titele',
 1272+ 'dt_xml_id' => 'Codece (ID)',
 1273+ 'dt_xml_freetext' => 'Teste libbere',
 1274+ 'importxml' => "'Mborte XML",
 1275+);
 1276+
 1277+/** Russian (Русский)
 1278+ * @author Ferrer
 1279+ * @author Innv
 1280+ * @author Александр Сигачёв
 1281+ */
 1282+$messages['ru'] = array(
 1283+ 'dt-desc' => 'Позволяет импортировать и экспортировать данные, содержащиеся в вызовах шаблонов',
 1284+ 'viewxml' => 'Просмотр XML',
 1285+ 'dt_viewxml_docu' => 'Пожалуйста, выберите категории и пространства имён для просмотра в формате XML.',
 1286+ 'dt_viewxml_categories' => 'Категории',
 1287+ 'dt_viewxml_namespaces' => 'Пространства имён',
 1288+ 'dt_viewxml_simplifiedformat' => 'Упрощённый формат',
 1289+ 'dt_xml_namespace' => 'Пространство имён',
 1290+ 'dt_xml_pages' => 'Страницы',
 1291+ 'dt_xml_page' => 'Страница',
 1292+ 'dt_xml_template' => 'Шаблон',
 1293+ 'dt_xml_field' => 'Поле',
 1294+ 'dt_xml_name' => 'Имя',
 1295+ 'dt_xml_title' => 'Заголовок',
 1296+ 'dt_xml_id' => 'ID',
 1297+ 'dt_xml_freetext' => 'Свободный текст',
 1298+ 'importxml' => 'Импорт XML',
 1299+ 'dt_import_selectfile' => 'Пожалуйста, выберите файл $1 для импорта:',
 1300+ 'dt_import_editsummary' => 'импорт $1',
 1301+ 'dt_import_importing' => 'Импортирование...',
 1302+ 'dt_import_success' => '$1 {{PLURAL:$1|страница была|страницы были|страниц были}} созданы из файла $2.',
 1303+ 'importcsv' => 'Импорт CSV',
 1304+ 'dt_importcsv_badheader' => 'Ошибка. Заголовок колонки №$1 «$2» должен быть или «$3», или «$4», или в форме «template_name[field_name]»',
 1305+ 'right-datatransferimport' => 'импорт информации',
 1306+);
 1307+
 1308+/** Slovak (Slovenčina)
 1309+ * @author Helix84
 1310+ */
 1311+$messages['sk'] = array(
 1312+ 'dt-desc' => 'Umožňuje import a export údajov obsiahnutých v bunkách šablón',
 1313+ 'viewxml' => 'Zobraziť XML',
 1314+ 'dt_viewxml_docu' => 'Prosím, vyberte ktorý spomedzi nasledovných kategórií a menných priestorov zobraziť vo formáte XML.',
 1315+ 'dt_viewxml_categories' => 'Kategórie',
 1316+ 'dt_viewxml_namespaces' => 'Menné priestory',
 1317+ 'dt_viewxml_simplifiedformat' => 'Zjednodušený formát',
 1318+ 'dt_xml_namespace' => 'Menný priestor',
 1319+ 'dt_xml_pages' => 'Stránky',
 1320+ 'dt_xml_page' => 'Stránka',
 1321+ 'dt_xml_template' => 'Šablóna',
 1322+ 'dt_xml_field' => 'Pole',
 1323+ 'dt_xml_name' => 'Názov',
 1324+ 'dt_xml_title' => 'Nadpis',
 1325+ 'dt_xml_id' => 'ID',
 1326+ 'dt_xml_freetext' => 'Voľný text',
 1327+ 'importxml' => 'Importovať XML',
 1328+ 'dt_import_selectfile' => 'Prosím, vyberte $1 súbor, ktorý chcete importovať:',
 1329+ 'dt_import_editsummary' => 'Import $1',
 1330+ 'dt_import_importing' => 'Prebieha import...',
 1331+ 'dt_import_success' => 'Z $2 súboru sa {{PLURAL:$1|importuje $1 stránka|importujú $1 stránky|importuje $1 stránok}}.',
 1332+ 'importcsv' => 'Import CSV',
 1333+ '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]“',
 1334+ 'right-datatransferimport' => 'Importovať údaje',
 1335+);
 1336+
 1337+/** Serbian Cyrillic ekavian (ћирилица)
 1338+ * @author Sasa Stefanovic
 1339+ * @author Михајло Анђелковић
 1340+ */
 1341+$messages['sr-ec'] = array(
 1342+ 'viewxml' => 'Види XML',
 1343+ 'dt_viewxml_categories' => 'Категорије',
 1344+ 'dt_viewxml_namespaces' => 'Именски простори',
 1345+ 'dt_viewxml_simplifiedformat' => 'Поједностављени формат',
 1346+ 'dt_xml_namespace' => 'Именски простор',
 1347+ 'dt_xml_pages' => 'Чланци',
 1348+ 'dt_xml_page' => 'Страна',
 1349+ 'dt_xml_template' => 'Шаблон',
 1350+ 'dt_xml_field' => 'Поље',
 1351+ 'dt_xml_name' => 'Име',
 1352+ 'dt_xml_title' => 'Наслов',
 1353+ 'dt_xml_id' => 'ID',
 1354+);
 1355+
 1356+/** Seeltersk (Seeltersk)
 1357+ * @author Pyt
 1358+ */
 1359+$messages['stq'] = array(
 1360+ 'dt-desc' => 'Ferlööwet dän Import un Export fon strukturierde Doaten, do der in Aproupen un Foarloagen ferwoand wäide.',
 1361+ 'viewxml' => 'XML ankiekje',
 1362+ 'dt_viewxml_docu' => 'Wääl uut, wäkke Kategorien in dät XML-Formoat anwiesd wäide schällen.',
 1363+ 'dt_viewxml_categories' => 'Kategorien',
 1364+ 'dt_viewxml_namespaces' => 'Noomensruume',
 1365+ 'dt_viewxml_simplifiedformat' => 'Fereenfacht Formoat',
 1366+ 'dt_xml_namespace' => 'Noomensruum',
 1367+ 'dt_xml_page' => 'Siede',
 1368+ 'dt_xml_field' => 'Fäild',
 1369+ 'dt_xml_name' => 'Noome',
 1370+ 'dt_xml_title' => 'Tittel',
 1371+);
 1372+
 1373+/** Sundanese (Basa Sunda)
 1374+ * @author Irwangatot
 1375+ */
 1376+$messages['su'] = array(
 1377+ 'dt_viewxml_namespaces' => 'Ngaranspasi',
 1378+);
 1379+
 1380+/** Swedish (Svenska)
 1381+ * @author Gabbe.g
 1382+ * @author Lejonel
 1383+ * @author M.M.S.
 1384+ */
 1385+$messages['sv'] = array(
 1386+ 'dt-desc' => 'Tillåter import och export av strukturerad data som finns i mallanrop',
 1387+ 'viewxml' => 'Visa XML',
 1388+ 'dt_viewxml_docu' => 'Välj vilka av följande kategorier och namnrymder som ska visas i XML-format.',
 1389+ 'dt_viewxml_categories' => 'Kategorier',
 1390+ 'dt_viewxml_namespaces' => 'Namnrymder',
 1391+ 'dt_viewxml_simplifiedformat' => 'Förenklat format',
 1392+ 'dt_xml_namespace' => 'Namnrymd',
 1393+ 'dt_xml_pages' => 'Sidor',
 1394+ 'dt_xml_page' => 'Sida',
 1395+ 'dt_xml_template' => 'Mall',
 1396+ 'dt_xml_field' => 'Fält',
 1397+ 'dt_xml_name' => 'Namn',
 1398+ 'dt_xml_title' => 'Titel',
 1399+ 'dt_xml_id' => 'ID',
 1400+ 'dt_xml_freetext' => 'Fritext',
 1401+);
 1402+
 1403+/** Silesian (Ślůnski)
 1404+ * @author Herr Kriss
 1405+ */
 1406+$messages['szl'] = array(
 1407+ 'dt_xml_page' => 'Zajta',
 1408+ 'dt_xml_name' => 'Mjano',
 1409+);
 1410+
 1411+/** Tamil (தமிழ்)
 1412+ * @author Trengarasu
 1413+ * @author Ulmo
 1414+ */
 1415+$messages['ta'] = array(
 1416+ 'dt_viewxml_categories' => 'பகுப்புகள்',
 1417+ 'dt_xml_namespace' => 'பெயர்வெளி',
 1418+);
 1419+
 1420+/** Telugu (తెలుగు)
 1421+ * @author Veeven
 1422+ */
 1423+$messages['te'] = array(
 1424+ 'viewxml' => 'XMLని చూడండి',
 1425+ 'dt_viewxml_categories' => 'వర్గాలు',
 1426+ 'dt_viewxml_namespaces' => 'పేరుబరులు',
 1427+ 'dt_xml_namespace' => 'పేరుబరి',
 1428+ 'dt_xml_pages' => 'పేజీలు',
 1429+ 'dt_xml_page' => 'పేజీ',
 1430+ 'dt_xml_template' => 'మూస',
 1431+ 'dt_xml_name' => 'పేరు',
 1432+ 'dt_xml_title' => 'శీర్షిక',
 1433+ 'dt_xml_id' => 'ఐడీ',
 1434+ 'dt_xml_freetext' => 'స్వేచ్ఛా పాఠ్యం',
 1435+);
 1436+
 1437+/** Tetum (Tetun)
 1438+ * @author MF-Warburg
 1439+ */
 1440+$messages['tet'] = array(
 1441+ 'dt_viewxml_categories' => 'Kategoria sira',
 1442+ 'dt_xml_namespace' => 'Espasu pájina nian',
 1443+ 'dt_xml_page' => 'Pájina',
 1444+ 'dt_xml_name' => 'Naran',
 1445+ 'dt_xml_title' => 'Títulu:',
 1446+ 'dt_xml_id' => 'ID',
 1447+);
 1448+
 1449+/** Tajik (Cyrillic) (Тоҷикӣ (Cyrillic))
 1450+ * @author Ibrahim
 1451+ */
 1452+$messages['tg-cyrl'] = array(
 1453+ 'dt_viewxml_categories' => 'Гурӯҳҳо',
 1454+ 'dt_viewxml_namespaces' => 'Фазоҳои ном',
 1455+ 'dt_xml_namespace' => 'Фазоином',
 1456+ 'dt_xml_page' => 'Саҳифа',
 1457+ 'dt_xml_name' => 'Ном',
 1458+ 'dt_xml_title' => 'Унвон',
 1459+ 'dt_xml_freetext' => 'Матни дилхоҳ',
 1460+);
 1461+
 1462+/** Thai (ไทย)
 1463+ * @author Octahedron80
 1464+ */
 1465+$messages['th'] = array(
 1466+ 'dt_viewxml_categories' => 'หมวดหมู่',
 1467+ 'dt_xml_namespace' => 'เนมสเปซ',
 1468+);
 1469+
 1470+/** Tagalog (Tagalog)
 1471+ * @author AnakngAraw
 1472+ */
 1473+$messages['tl'] = array(
 1474+ 'dt-desc' => 'Nagpapahintulot sa pag-aangkat at pagluluwas ng mga datong nasa loob ng mga pagtawag sa suleras',
 1475+ 'viewxml' => 'Tingnan ang XML',
 1476+ 'dt_viewxml_docu' => 'Pumili po lamang mula sa sumusunod na mga kaurian at mga espasyo ng pangalan upang makita ang anyong XML.',
 1477+ 'dt_viewxml_categories' => 'Mga kaurian',
 1478+ 'dt_viewxml_namespaces' => 'Mga espasyo ng pangalan',
 1479+ 'dt_viewxml_simplifiedformat' => 'Pinapayak na anyo',
 1480+ 'dt_xml_namespace' => 'Espasyo ng pangalan',
 1481+ 'dt_xml_pages' => 'Mga pahina',
 1482+ 'dt_xml_page' => 'Pahina',
 1483+ 'dt_xml_template' => 'Suleras',
 1484+ 'dt_xml_field' => 'Hanay',
 1485+ 'dt_xml_name' => 'Pangalan',
 1486+ 'dt_xml_title' => 'Pamagat',
 1487+ 'dt_xml_id' => 'ID',
 1488+ 'dt_xml_freetext' => 'Malayang Teksto',
 1489+ 'importxml' => 'Angkatin ang XML',
 1490+ 'dt_import_selectfile' => 'Pakipili ang talaksang $1 na aangkatin:',
 1491+ 'dt_import_editsummary' => 'Angkat ng $1',
 1492+ 'dt_import_importing' => 'Inaangkat...',
 1493+ 'dt_import_success' => '$1 {{PLURAL:$1|pahina|mga pahina}} ang aangkatin mula sa talaksang $2.',
 1494+);
 1495+
 1496+/** Turkish (Türkçe)
 1497+ * @author Joseph
 1498+ * @author Karduelis
 1499+ * @author Mach
 1500+ */
 1501+$messages['tr'] = array(
 1502+ 'dt-desc' => 'Şablon çağrılarında içerilen verilerin içe ve dışa aktarımına izin verir',
 1503+ 'viewxml' => "XML'i gör",
 1504+ '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.',
 1505+ 'dt_viewxml_categories' => 'Kategoriler',
 1506+ 'dt_viewxml_namespaces' => 'Alan adları',
 1507+ 'dt_viewxml_simplifiedformat' => 'Basitleştirilmiş format',
 1508+ 'dt_xml_namespace' => 'Alan adı',
 1509+ 'dt_xml_pages' => 'Sayfalar',
 1510+ 'dt_xml_page' => 'Sayfa',
 1511+ 'dt_xml_template' => 'Şablon',
 1512+ 'dt_xml_field' => 'Alan',
 1513+ 'dt_xml_name' => 'İsim',
 1514+ 'dt_xml_title' => 'Başlık',
 1515+ 'dt_xml_id' => 'ID',
 1516+ 'dt_xml_freetext' => 'Özgür Metin',
 1517+ 'importxml' => 'XML içe aktar',
 1518+ 'dt_import_selectfile' => 'Lütfen içe aktarmak için $1 dosyasını seçin:',
 1519+ 'dt_import_editsummary' => '$1 içe aktarımı',
 1520+ 'dt_import_importing' => 'İçe aktarıyor...',
 1521+ 'dt_import_success' => '$2 dosyasından $1 {{PLURAL:$1|sayfa|sayfa}} oluşturulacak.',
 1522+);
 1523+
 1524+/** Uighur (Latin) (Uyghurche‎ / ئۇيغۇرچە (Latin))
 1525+ * @author Jose77
 1526+ */
 1527+$messages['ug-latn'] = array(
 1528+ 'dt_xml_page' => 'Bet',
 1529+);
 1530+
 1531+/** Ukrainian (Українська)
 1532+ * @author AS
 1533+ */
 1534+$messages['uk'] = array(
 1535+ 'dt_xml_title' => 'Заголовок',
 1536+);
 1537+
 1538+/** Vietnamese (Tiếng Việt)
 1539+ * @author Minh Nguyen
 1540+ * @author Vinhtantran
 1541+ */
 1542+$messages['vi'] = array(
 1543+ 'dt-desc' => 'Cho phép nhập xuất dữ liệu có cấu trúc được chứa trong lời gọi tiêu bản',
 1544+ 'viewxml' => 'Xem XML',
 1545+ '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.',
 1546+ 'dt_viewxml_categories' => 'Thể loại',
 1547+ 'dt_viewxml_namespaces' => 'Không gian tên',
 1548+ 'dt_viewxml_simplifiedformat' => 'Định dạng đơn giản hóa',
 1549+ 'dt_xml_namespace' => 'Không gian tên',
 1550+ 'dt_xml_pages' => 'Trang',
 1551+ 'dt_xml_page' => 'Trang',
 1552+ 'dt_xml_template' => 'Tiêu bản',
 1553+ 'dt_xml_field' => 'Trường',
 1554+ 'dt_xml_name' => 'Tên',
 1555+ 'dt_xml_title' => 'Tựa đề',
 1556+ 'dt_xml_id' => 'ID',
 1557+ 'dt_xml_freetext' => 'Văn bản Tự do',
 1558+ 'importxml' => 'Nhập XML',
 1559+ 'dt_import_selectfile' => 'Xin hãy chọn tập tin $1 để nhập:',
 1560+ 'dt_import_editsummary' => 'Nhập $1',
 1561+ 'dt_import_importing' => 'Đang nhập…',
 1562+ 'dt_import_success' => '$1 trang sẽ được nhập từ tập tin $2.',
 1563+ 'importcsv' => 'Nhập CSV',
 1564+ '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]”',
 1565+ 'right-datatransferimport' => 'Nhập dữ liệu',
 1566+);
 1567+
 1568+/** Volapük (Volapük)
 1569+ * @author Malafaya
 1570+ * @author Smeira
 1571+ */
 1572+$messages['vo'] = array(
 1573+ 'dt-desc' => 'Dälon nüveigi e seveigi nünodas peleodüköl in samafomotilüvoks paninädöls',
 1574+ 'viewxml' => 'Logön eli XML',
 1575+ 'dt_viewxml_docu' => 'Välolös bevü klads e nemaspads foviks utosi, kelosi vilol logön fomätü XML.',
 1576+ 'dt_viewxml_categories' => 'Klads',
 1577+ 'dt_viewxml_namespaces' => 'Nemaspads',
 1578+ 'dt_viewxml_simplifiedformat' => 'Fomät pebalugüköl',
 1579+ 'dt_xml_namespace' => 'Nemaspad',
 1580+ 'dt_xml_page' => 'Pad',
 1581+ 'dt_xml_field' => 'Fel',
 1582+ 'dt_xml_name' => 'Nem',
 1583+ 'dt_xml_title' => 'Tiäd',
 1584+ 'dt_xml_id' => 'Dientifanüm',
 1585+ 'dt_xml_freetext' => 'Vödem libik',
 1586+);
 1587+
 1588+/** Simplified Chinese (‪中文(简体)‬)
 1589+ * @author Gaoxuewei
 1590+ */
 1591+$messages['zh-hans'] = array(
 1592+ 'dt-desc' => '允许根据模板的要求导入导出结构化的数据',
 1593+ 'viewxml' => '查看XML',
 1594+ 'dt_viewxml_docu' => '请在下列分类、名称空间中选择,以使用XML格式查看。',
 1595+ 'dt_viewxml_categories' => '分类',
 1596+ 'dt_viewxml_namespaces' => '名称空间',
 1597+ 'dt_viewxml_simplifiedformat' => '简化格式',
 1598+ 'dt_xml_namespace' => '名称空间',
 1599+ 'dt_xml_page' => '页面',
 1600+ 'dt_xml_name' => '名称',
 1601+ 'dt_xml_title' => '标题',
 1602+ 'dt_xml_id' => 'ID',
 1603+ 'dt_xml_freetext' => '自由文本',
 1604+);
 1605+
 1606+/** Chinese (Taiwan) (‪中文(台灣)‬)
 1607+ * @author Roc michael
 1608+ */
 1609+$messages['zh-tw'] = array(
 1610+ 'dt-desc' => '允許匯入及匯出引用樣板(template calls)的結構性資料',
 1611+ 'viewxml' => '查看 XML',
 1612+ 'dt_viewxml_docu' => '請選取以下的分類及名字空間以查看其XML格式的資料',
 1613+ 'dt_viewxml_categories' => '分類',
 1614+ 'dt_viewxml_namespaces' => '名字空間',
 1615+ 'dt_viewxml_simplifiedformat' => '簡化的格式',
 1616+ 'dt_xml_namespace' => '名字空間',
 1617+ 'dt_xml_pages' => '頁面',
 1618+ 'dt_xml_page' => '頁面',
 1619+ 'dt_xml_template' => '模板',
 1620+ 'dt_xml_field' => '欄位',
 1621+ 'dt_xml_name' => '名稱',
 1622+ 'dt_xml_title' => '標題(Title)',
 1623+ 'dt_xml_freetext' => '隨意文字',
 1624+ 'importxml' => '匯入XML',
 1625+ 'dt_import_selectfile' => '請選取$1檔以供匯入',
 1626+ 'dt_import_editsummary' => '匯入$1',
 1627+ 'dt_import_importing' => '匯入中...',
 1628+ 'dt_import_success' => '將從該$2檔匯入$1{{PLURAL:$1|頁面頁面}}。',
 1629+ 'importcsv' => '匯入CSV檔',
 1630+ 'dt_importcsv_badheader' => "錯誤:$1欄位的標題「$2」或必須為「$3」,「$4」或表單「模板名稱[欄位名稱]」<br>
 1631+Error: the column $1 header, '$2', must be either '$3', '$4' or of the form 'template_name[field_name]'",
 1632+);
 1633+
Property changes on: tags/extensions/DataTransfer/REL_0_3_2/languages/DT_Messages.php
___________________________________________________________________
Added: svn:eol-style
11634 + native
Index: tags/extensions/DataTransfer/REL_0_3_2/COPYING
@@ -0,0 +1,348 @@
 2+The license text below "----" applies to all files within this distribution, other
 3+than those that are in a directory which contains files named "LICENSE" or
 4+"COPYING", or a subdirectory thereof. For those files, the license text contained in
 5+said file overrides any license information contained in directories of smaller depth.
 6+Alternative licenses are typically used for software that is provided by external
 7+parties, and merely packaged with the Data Transfer release for convenience.
 8+----
 9+
 10+ GNU GENERAL PUBLIC LICENSE
 11+ Version 2, June 1991
 12+
 13+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
 14+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 15+ Everyone is permitted to copy and distribute verbatim copies
 16+ of this license document, but changing it is not allowed.
 17+
 18+ Preamble
 19+
 20+ The licenses for most software are designed to take away your
 21+freedom to share and change it. By contrast, the GNU General Public
 22+License is intended to guarantee your freedom to share and change free
 23+software--to make sure the software is free for all its users. This
 24+General Public License applies to most of the Free Software
 25+Foundation's software and to any other program whose authors commit to
 26+using it. (Some other Free Software Foundation software is covered by
 27+the GNU Library General Public License instead.) You can apply it to
 28+your programs, too.
 29+
 30+ When we speak of free software, we are referring to freedom, not
 31+price. Our General Public Licenses are designed to make sure that you
 32+have the freedom to distribute copies of free software (and charge for
 33+this service if you wish), that you receive source code or can get it
 34+if you want it, that you can change the software or use pieces of it
 35+in new free programs; and that you know you can do these things.
 36+
 37+ To protect your rights, we need to make restrictions that forbid
 38+anyone to deny you these rights or to ask you to surrender the rights.
 39+These restrictions translate to certain responsibilities for you if you
 40+distribute copies of the software, or if you modify it.
 41+
 42+ For example, if you distribute copies of such a program, whether
 43+gratis or for a fee, you must give the recipients all the rights that
 44+you have. You must make sure that they, too, receive or can get the
 45+source code. And you must show them these terms so they know their
 46+rights.
 47+
 48+ We protect your rights with two steps: (1) copyright the software, and
 49+(2) offer you this license which gives you legal permission to copy,
 50+distribute and/or modify the software.
 51+
 52+ Also, for each author's protection and ours, we want to make certain
 53+that everyone understands that there is no warranty for this free
 54+software. If the software is modified by someone else and passed on, we
 55+want its recipients to know that what they have is not the original, so
 56+that any problems introduced by others will not reflect on the original
 57+authors' reputations.
 58+
 59+ Finally, any free program is threatened constantly by software
 60+patents. We wish to avoid the danger that redistributors of a free
 61+program will individually obtain patent licenses, in effect making the
 62+program proprietary. To prevent this, we have made it clear that any
 63+patent must be licensed for everyone's free use or not licensed at all.
 64+
 65+ The precise terms and conditions for copying, distribution and
 66+modification follow.
 67+
 68+ GNU GENERAL PUBLIC LICENSE
 69+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
 70+
 71+ 0. This License applies to any program or other work which contains
 72+a notice placed by the copyright holder saying it may be distributed
 73+under the terms of this General Public License. The "Program", below,
 74+refers to any such program or work, and a "work based on the Program"
 75+means either the Program or any derivative work under copyright law:
 76+that is to say, a work containing the Program or a portion of it,
 77+either verbatim or with modifications and/or translated into another
 78+language. (Hereinafter, translation is included without limitation in
 79+the term "modification".) Each licensee is addressed as "you".
 80+
 81+Activities other than copying, distribution and modification are not
 82+covered by this License; they are outside its scope. The act of
 83+running the Program is not restricted, and the output from the Program
 84+is covered only if its contents constitute a work based on the
 85+Program (independent of having been made by running the Program).
 86+Whether that is true depends on what the Program does.
 87+
 88+ 1. You may copy and distribute verbatim copies of the Program's
 89+source code as you receive it, in any medium, provided that you
 90+conspicuously and appropriately publish on each copy an appropriate
 91+copyright notice and disclaimer of warranty; keep intact all the
 92+notices that refer to this License and to the absence of any warranty;
 93+and give any other recipients of the Program a copy of this License
 94+along with the Program.
 95+
 96+You may charge a fee for the physical act of transferring a copy, and
 97+you may at your option offer warranty protection in exchange for a fee.
 98+
 99+ 2. You may modify your copy or copies of the Program or any portion
 100+of it, thus forming a work based on the Program, and copy and
 101+distribute such modifications or work under the terms of Section 1
 102+above, provided that you also meet all of these conditions:
 103+
 104+ a) You must cause the modified files to carry prominent notices
 105+ stating that you changed the files and the date of any change.
 106+
 107+ b) You must cause any work that you distribute or publish, that in
 108+ whole or in part contains or is derived from the Program or any
 109+ part thereof, to be licensed as a whole at no charge to all third
 110+ parties under the terms of this License.
 111+
 112+ c) If the modified program normally reads commands interactively
 113+ when run, you must cause it, when started running for such
 114+ interactive use in the most ordinary way, to print or display an
 115+ announcement including an appropriate copyright notice and a
 116+ notice that there is no warranty (or else, saying that you provide
 117+ a warranty) and that users may redistribute the program under
 118+ these conditions, and telling the user how to view a copy of this
 119+ License. (Exception: if the Program itself is interactive but
 120+ does not normally print such an announcement, your work based on
 121+ the Program is not required to print an announcement.)
 122+
 123+These requirements apply to the modified work as a whole. If
 124+identifiable sections of that work are not derived from the Program,
 125+and can be reasonably considered independent and separate works in
 126+themselves, then this License, and its terms, do not apply to those
 127+sections when you distribute them as separate works. But when you
 128+distribute the same sections as part of a whole which is a work based
 129+on the Program, the distribution of the whole must be on the terms of
 130+this License, whose permissions for other licensees extend to the
 131+entire whole, and thus to each and every part regardless of who wrote it.
 132+
 133+Thus, it is not the intent of this section to claim rights or contest
 134+your rights to work written entirely by you; rather, the intent is to
 135+exercise the right to control the distribution of derivative or
 136+collective works based on the Program.
 137+
 138+In addition, mere aggregation of another work not based on the Program
 139+with the Program (or with a work based on the Program) on a volume of
 140+a storage or distribution medium does not bring the other work under
 141+the scope of this License.
 142+
 143+ 3. You may copy and distribute the Program (or a work based on it,
 144+under Section 2) in object code or executable form under the terms of
 145+Sections 1 and 2 above provided that you also do one of the following:
 146+
 147+ a) Accompany it with the complete corresponding machine-readable
 148+ source code, which must be distributed under the terms of Sections
 149+ 1 and 2 above on a medium customarily used for software interchange; or,
 150+
 151+ b) Accompany it with a written offer, valid for at least three
 152+ years, to give any third party, for a charge no more than your
 153+ cost of physically performing source distribution, a complete
 154+ machine-readable copy of the corresponding source code, to be
 155+ distributed under the terms of Sections 1 and 2 above on a medium
 156+ customarily used for software interchange; or,
 157+
 158+ c) Accompany it with the information you received as to the offer
 159+ to distribute corresponding source code. (This alternative is
 160+ allowed only for noncommercial distribution and only if you
 161+ received the program in object code or executable form with such
 162+ an offer, in accord with Subsection b above.)
 163+
 164+The source code for a work means the preferred form of the work for
 165+making modifications to it. For an executable work, complete source
 166+code means all the source code for all modules it contains, plus any
 167+associated interface definition files, plus the scripts used to
 168+control compilation and installation of the executable. However, as a
 169+special exception, the source code distributed need not include
 170+anything that is normally distributed (in either source or binary
 171+form) with the major components (compiler, kernel, and so on) of the
 172+operating system on which the executable runs, unless that component
 173+itself accompanies the executable.
 174+
 175+If distribution of executable or object code is made by offering
 176+access to copy from a designated place, then offering equivalent
 177+access to copy the source code from the same place counts as
 178+distribution of the source code, even though third parties are not
 179+compelled to copy the source along with the object code.
 180+
 181+ 4. You may not copy, modify, sublicense, or distribute the Program
 182+except as expressly provided under this License. Any attempt
 183+otherwise to copy, modify, sublicense or distribute the Program is
 184+void, and will automatically terminate your rights under this License.
 185+However, parties who have received copies, or rights, from you under
 186+this License will not have their licenses terminated so long as such
 187+parties remain in full compliance.
 188+
 189+ 5. You are not required to accept this License, since you have not
 190+signed it. However, nothing else grants you permission to modify or
 191+distribute the Program or its derivative works. These actions are
 192+prohibited by law if you do not accept this License. Therefore, by
 193+modifying or distributing the Program (or any work based on the
 194+Program), you indicate your acceptance of this License to do so, and
 195+all its terms and conditions for copying, distributing or modifying
 196+the Program or works based on it.
 197+
 198+ 6. Each time you redistribute the Program (or any work based on the
 199+Program), the recipient automatically receives a license from the
 200+original licensor to copy, distribute or modify the Program subject to
 201+these terms and conditions. You may not impose any further
 202+restrictions on the recipients' exercise of the rights granted herein.
 203+You are not responsible for enforcing compliance by third parties to
 204+this License.
 205+
 206+ 7. If, as a consequence of a court judgment or allegation of patent
 207+infringement or for any other reason (not limited to patent issues),
 208+conditions are imposed on you (whether by court order, agreement or
 209+otherwise) that contradict the conditions of this License, they do not
 210+excuse you from the conditions of this License. If you cannot
 211+distribute so as to satisfy simultaneously your obligations under this
 212+License and any other pertinent obligations, then as a consequence you
 213+may not distribute the Program at all. For example, if a patent
 214+license would not permit royalty-free redistribution of the Program by
 215+all those who receive copies directly or indirectly through you, then
 216+the only way you could satisfy both it and this License would be to
 217+refrain entirely from distribution of the Program.
 218+
 219+If any portion of this section is held invalid or unenforceable under
 220+any particular circumstance, the balance of the section is intended to
 221+apply and the section as a whole is intended to apply in other
 222+circumstances.
 223+
 224+It is not the purpose of this section to induce you to infringe any
 225+patents or other property right claims or to contest validity of any
 226+such claims; this section has the sole purpose of protecting the
 227+integrity of the free software distribution system, which is
 228+implemented by public license practices. Many people have made
 229+generous contributions to the wide range of software distributed
 230+through that system in reliance on consistent application of that
 231+system; it is up to the author/donor to decide if he or she is willing
 232+to distribute software through any other system and a licensee cannot
 233+impose that choice.
 234+
 235+This section is intended to make thoroughly clear what is believed to
 236+be a consequence of the rest of this License.
 237+
 238+ 8. If the distribution and/or use of the Program is restricted in
 239+certain countries either by patents or by copyrighted interfaces, the
 240+original copyright holder who places the Program under this License
 241+may add an explicit geographical distribution limitation excluding
 242+those countries, so that distribution is permitted only in or among
 243+countries not thus excluded. In such case, this License incorporates
 244+the limitation as if written in the body of this License.
 245+
 246+ 9. The Free Software Foundation may publish revised and/or new versions
 247+of the General Public License from time to time. Such new versions will
 248+be similar in spirit to the present version, but may differ in detail to
 249+address new problems or concerns.
 250+
 251+Each version is given a distinguishing version number. If the Program
 252+specifies a version number of this License which applies to it and "any
 253+later version", you have the option of following the terms and conditions
 254+either of that version or of any later version published by the Free
 255+Software Foundation. If the Program does not specify a version number of
 256+this License, you may choose any version ever published by the Free Software
 257+Foundation.
 258+
 259+ 10. If you wish to incorporate parts of the Program into other free
 260+programs whose distribution conditions are different, write to the author
 261+to ask for permission. For software which is copyrighted by the Free
 262+Software Foundation, write to the Free Software Foundation; we sometimes
 263+make exceptions for this. Our decision will be guided by the two goals
 264+of preserving the free status of all derivatives of our free software and
 265+of promoting the sharing and reuse of software generally.
 266+
 267+ NO WARRANTY
 268+
 269+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
 270+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
 271+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
 272+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
 273+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 274+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
 275+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
 276+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
 277+REPAIR OR CORRECTION.
 278+
 279+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
 280+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
 281+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
 282+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
 283+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
 284+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
 285+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
 286+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
 287+POSSIBILITY OF SUCH DAMAGES.
 288+
 289+ END OF TERMS AND CONDITIONS
 290+
 291+ How to Apply These Terms to Your New Programs
 292+
 293+ If you develop a new program, and you want it to be of the greatest
 294+possible use to the public, the best way to achieve this is to make it
 295+free software which everyone can redistribute and change under these terms.
 296+
 297+ To do so, attach the following notices to the program. It is safest
 298+to attach them to the start of each source file to most effectively
 299+convey the exclusion of warranty; and each file should have at least
 300+the "copyright" line and a pointer to where the full notice is found.
 301+
 302+ <one line to give the program's name and a brief idea of what it does.>
 303+ Copyright (C) <year> <name of author>
 304+
 305+ This program is free software; you can redistribute it and/or modify
 306+ it under the terms of the GNU General Public License as published by
 307+ the Free Software Foundation; either version 2 of the License, or
 308+ (at your option) any later version.
 309+
 310+ This program is distributed in the hope that it will be useful,
 311+ but WITHOUT ANY WARRANTY; without even the implied warranty of
 312+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 313+ GNU General Public License for more details.
 314+
 315+ You should have received a copy of the GNU General Public License
 316+ along with this program; if not, write to the Free Software
 317+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 318+
 319+
 320+Also add information on how to contact you by electronic and paper mail.
 321+
 322+If the program is interactive, make it output a short notice like this
 323+when it starts in an interactive mode:
 324+
 325+ Gnomovision version 69, Copyright (C) year name of author
 326+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
 327+ This is free software, and you are welcome to redistribute it
 328+ under certain conditions; type `show c' for details.
 329+
 330+The hypothetical commands `show w' and `show c' should show the appropriate
 331+parts of the General Public License. Of course, the commands you use may
 332+be called something other than `show w' and `show c'; they could even be
 333+mouse-clicks or menu items--whatever suits your program.
 334+
 335+You should also get your employer (if you work as a programmer) or your
 336+school, if any, to sign a "copyright disclaimer" for the program, if
 337+necessary. Here is a sample; alter the names:
 338+
 339+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
 340+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
 341+
 342+ <signature of Ty Coon>, 1 April 1989
 343+ Ty Coon, President of Vice
 344+
 345+This General Public License does not permit incorporating your program into
 346+proprietary programs. If your program is a subroutine library, you may
 347+consider it more useful to permit linking proprietary applications with the
 348+library. If this is what you want to do, use the GNU Library General
 349+Public License instead of this License.
Property changes on: tags/extensions/DataTransfer/REL_0_3_2/COPYING
___________________________________________________________________
Added: svn:eol-style
1350 + native

Status & tagging log