r51691 MediaWiki - Code Review archive

Repository:MediaWiki
Revision:r51690‎ | r51691 | r51692 >
Date:12:23, 10 June 2009
Author:yaron
Status:deferred
Tags:
Comment:
Tag for version 0.3.1
Modified paths:
  • /tags/extensions/DataTransfer/REL_0_3_1 (added) (history)
  • /tags/extensions/DataTransfer/REL_0_3_1/INSTALL (replaced) (history)
  • /tags/extensions/DataTransfer/REL_0_3_1/includes/DT_GlobalFunctions.php (replaced) (history)
  • /tags/extensions/DataTransfer/REL_0_3_1/specials/DT_ImportCSV.php (replaced) (history)

Diff [purge]

Index: tags/extensions/DataTransfer/REL_0_3_1/specials/DT_ImportCSV.php
@@ -0,0 +1,156 @@
 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+ dtfInitContentLanguage($wgLanguageCode);
 62+ wfLoadExtensionMessages('DataTransfer');
 63+ }
 64+
 65+ function execute($query) {
 66+ global $wgUser, $wgOut, $wgRequest;
 67+ $this->setHeaders();
 68+
 69+ if ( ! $wgUser->isAllowed('datatransferimport') ) {
 70+ global $wgOut;
 71+ $wgOut->permissionRequired('datatransferimport');
 72+ return;
 73+ }
 74+
 75+ if ($wgRequest->getCheck('import_file')) {
 76+ $text = "<p>" . wfMsg('dt_import_importing') . "</p>\n";
 77+ $source = ImportStreamSource::newFromUpload( "csv_file" );
 78+ $pages = array();
 79+ $error_msg = self::getCSVData($source->mHandle, $pages);
 80+ if (! is_null($error_msg))
 81+ $text .= $error_msg;
 82+ else
 83+ $text .= self::modifyPages($pages);
 84+ } else {
 85+ $select_file_label = wfMsg('dt_import_selectfile', 'CSV');
 86+ $import_button = wfMsg('import-interwiki-submit');
 87+ $text =<<<END
 88+ <p>$select_file_label</p>
 89+ <form enctype="multipart/form-data" action="" method="post">
 90+ <p><input type="file" name="csv_file" size="25" /></p>
 91+ <p><input type="Submit" name="import_file" value="$import_button"></p>
 92+ </form>
 93+
 94+END;
 95+ }
 96+
 97+ $wgOut->addHTML($text);
 98+ }
 99+
 100+
 101+ static function getCSVData($csv_file, &$pages) {
 102+ $table = array();
 103+ while ($line = fgetcsv($csv_file)) {
 104+ // fix values in case the file wasn't UTF-8 encoded -
 105+ // hopefully the UTF-8 value will work across all
 106+ // database encodings
 107+ $encoded_line = array_map('utf8_encode', $line);
 108+ array_push($table, $encoded_line);
 109+ }
 110+ fclose($csv_file);
 111+ // check header line to make sure every term is in the
 112+ // correct format
 113+ $title_label = wfMsgForContent('dt_xml_title');
 114+ $free_text_label = wfMsgForContent('dt_xml_freetext');
 115+ foreach ($table[0] as $i => $header_val) {
 116+ if ($header_val !== $title_label && $header_val !== $free_text_label &&
 117+ ! preg_match('/^[^\[\]]+\[[^\[\]]+]$/', $header_val)) {
 118+ $error_msg = wfMsg('dt_importcsv_badheader', $i, $header_val, $title_label, $free_text_label);
 119+ return $error_msg;
 120+ }
 121+ }
 122+ foreach ($table as $i => $line) {
 123+ if ($i == 0) continue;
 124+ $page = new DTPage();
 125+ foreach ($line as $j => $val) {
 126+ if ($val == '') continue;
 127+ if ($table[0][$j] == $title_label) {
 128+ $page->setName($val);
 129+ } elseif ($table[0][$j] == $free_text_label) {
 130+ $page->setFreeText($val);
 131+ } else {
 132+ list($template_name, $field_name) = explode('[', str_replace(']', '', $table[0][$j]));
 133+ $page->addTemplateField($template_name, $field_name, $val);
 134+ }
 135+ }
 136+ $pages[] = $page;
 137+ }
 138+ }
 139+
 140+ function modifyPages($pages) {
 141+ $text = "";
 142+ $jobs = array();
 143+ $job_params = array();
 144+ global $wgUser;
 145+ $job_params['user_id'] = $wgUser->getId();
 146+ $job_params['edit_summary'] = wfMsgForContent('dt_import_editsummary', 'CSV');
 147+ foreach ($pages as $page) {
 148+ $title = Title::newFromText($page->getName());
 149+ $job_params['text'] = $page->createText();
 150+ $jobs[] = new DTImportJob( $title, $job_params );
 151+ }
 152+ Job::batchInsert( $jobs );
 153+ $text .= wfMsg('dt_import_success', count($jobs), 'CSV');
 154+ return $text;
 155+ }
 156+
 157+}
Property changes on: tags/extensions/DataTransfer/REL_0_3_1/specials/DT_ImportCSV.php
___________________________________________________________________
Name: svn:eol-style
1158 + native
Index: tags/extensions/DataTransfer/REL_0_3_1/specials/DT_ImportXML.php
@@ -0,0 +1,74 @@
 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+ dtfInitContentLanguage($wgLanguageCode);
 20+ wfLoadExtensionMessages('DataTransfer');
 21+ }
 22+
 23+ function execute($query) {
 24+ global $wgUser, $wgOut, $wgRequest;
 25+ $this->setHeaders();
 26+
 27+ if ( ! $wgUser->isAllowed('datatransferimport') ) {
 28+ global $wgOut;
 29+ $wgOut->permissionRequired('datatransferimport');
 30+ return;
 31+ }
 32+
 33+ if ($wgRequest->getCheck('import_file')) {
 34+ $text = "<p>" . wfMsg('dt_import_importing') . "</p>\n";
 35+ $source = ImportStreamSource::newFromUpload( "xml_file" );
 36+ $text .= self::modifyPages($source);
 37+ } else {
 38+ $select_file_label = wfMsg('dt_import_selectfile', 'XML');
 39+ $import_button = wfMsg('import-interwiki-submit');
 40+ $text =<<<END
 41+ <p>$select_file_label</p>
 42+ <form enctype="multipart/form-data" action="" method="post">
 43+ <p><input type="file" name="xml_file" size="25" /></p>
 44+ <p><input type="Submit" name="import_file" value="$import_button"></p>
 45+ </form>
 46+
 47+END;
 48+ }
 49+
 50+ $wgOut->addHTML($text);
 51+ }
 52+
 53+ function modifyPages($source) {
 54+ $text = "";
 55+ $xml_parser = new DTXMLParser( $source );
 56+ $xml_parser->doParse();
 57+ $jobs = array();
 58+ $job_params = array();
 59+ global $wgUser;
 60+ $job_params['user_id'] = $wgUser->getId();
 61+ $job_params['edit_summary'] = wfMsgForContent('dt_import_editsummary', 'XML');
 62+
 63+ foreach ($xml_parser->mPages as $page) {
 64+ $title = Title::newFromText($page->getName());
 65+ $job_params['text'] = $page->createText();
 66+ $jobs[] = new DTImportJob( $title, $job_params );
 67+ //$text .= "<p>{$page->getName()}:</p>\n";
 68+ //$text .= "<pre>{$page->createText()}</pre>\n";
 69+ }
 70+ Job::batchInsert( $jobs );
 71+ global $wgLang;
 72+ $text .= wfMsgExt( 'dt_import_success', $wgLang->formatNum( count( $jobs ) ), 'XML' );
 73+ return $text;
 74+ }
 75+}
Property changes on: tags/extensions/DataTransfer/REL_0_3_1/specials/DT_ImportXML.php
___________________________________________________________________
Name: svn:eol-style
176 + native
Index: tags/extensions/DataTransfer/REL_0_3_1/specials/DT_ViewXML.php
@@ -0,0 +1,529 @@
 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+ dtfInitContentLanguage($wgLanguageCode);
 20+ wfLoadExtensionMessages('DataTransfer');
 21+ }
 22+
 23+ function execute($query) {
 24+ $this->setHeaders();
 25+ doSpecialViewXML($query);
 26+ }
 27+}
 28+
 29+function getCategoriesList() {
 30+ global $wgContLang, $dtgContLang;
 31+ $dt_props = $dtgContLang->getPropertyLabels();
 32+ $exclusion_cat_name = str_replace(' ', '_', $dt_props[DT_SP_IS_EXCLUDED_FROM_XML]);
 33+ $exclusion_cat_full_name = $wgContLang->getNSText(NS_CATEGORY) . ':' . $exclusion_cat_name;
 34+ $dbr = wfGetDB( DB_SLAVE );
 35+ $categorylinks = $dbr->tableName( 'categorylinks' );
 36+ $res = $dbr->query("SELECT DISTINCT cl_to FROM $categorylinks");
 37+ $categories = array();
 38+ while ($row = $dbr->fetchRow($res)) {
 39+ $cat_name = $row[0];
 40+ // add this category to the list, if it's not the
 41+ // "Excluded from XML" category, and it's not a child of that
 42+ // category
 43+ if ($cat_name != $exclusion_cat_name) {
 44+ $title = Title::newFromText($cat_name, NS_CATEGORY);
 45+ $parent_categories = $title->getParentCategoryTree(array());
 46+ if (! treeContainsElement($parent_categories, $exclusion_cat_full_name))
 47+ $categories[] = $cat_name;
 48+ }
 49+ }
 50+ $dbr->freeResult($res);
 51+ sort($categories);
 52+ return $categories;
 53+}
 54+
 55+function getNamespacesList() {
 56+ $dbr = wfGetDB( DB_SLAVE );
 57+ $page = $dbr->tableName( 'page' );
 58+ $res = $dbr->query("SELECT DISTINCT page_namespace FROM $page");
 59+ $namespaces = array();
 60+ while ($row = $dbr->fetchRow($res)) {
 61+ $namespaces[] = $row[0];
 62+ }
 63+ $dbr->freeResult($res);
 64+ return $namespaces;
 65+}
 66+
 67+function getGroupings() {
 68+ global $dtgContLang;
 69+
 70+ $dt_props = $dtgContLang->getPropertyLabels();
 71+ $xml_grouping_prop = str_replace(' ', '_', $dt_props[DT_SP_HAS_XML_GROUPING]);
 72+
 73+ global $smwgIP;
 74+ if (! isset($smwgIP)) {
 75+ return array();
 76+ } else {
 77+ $smw_version = SMW_VERSION;
 78+ if ($smw_version{0} == '0') {
 79+ return array();
 80+ } else {
 81+ $groupings = array();
 82+ $store = smwfGetStore();
 83+ // handling changed in SMW 1.4
 84+ if (class_exists('SMWPropertyValue'))
 85+ $grouping_prop = SMWPropertyValue::makeProperty($xml_grouping_prop);
 86+ else
 87+ $grouping_prop = Title::newFromText($xml_grouping_prop, SMW_NS_PROPERTY);
 88+ $grouped_props = $store->getAllPropertySubjects($grouping_prop);
 89+ foreach ($grouped_props as $grouped_prop) {
 90+ // the type of $grouped_prop depends on the version of SMW
 91+ if ($grouped_prop instanceof SMWWikiPageValue) {
 92+ $grouped_prop = $grouped_prop->getTitle();
 93+ }
 94+ $res = $store->getPropertyValues($grouped_prop, $grouping_prop);
 95+ $num = count($res);
 96+ if ($num > 0) {
 97+ $grouping_label = $res[0]->getTitle()->getText();
 98+ $groupings[] = array($grouped_prop, $grouping_label);
 99+ }
 100+ }
 101+ return $groupings;
 102+ }
 103+ }
 104+}
 105+
 106+function getSubpagesForPageGrouping($page_name, $relation_name) {
 107+ $dbr = wfGetDB( DB_SLAVE );
 108+ $smw_relations = $dbr->tableName( 'smw_relations' );
 109+ $smw_attributes = $dbr->tableName( 'smw_attributes' );
 110+ $res = $dbr->query("SELECT subject_title FROM $smw_relations WHERE object_title = '$page_name' AND relation_title = '$relation_name'");
 111+ $subpages = array();
 112+ while ($row = $dbr->fetchRow($res)) {
 113+ $subpage_name = $row[0];
 114+ $query_subpage_name = str_replace("'", "\'", $subpage_name);
 115+ // get the display order
 116+ $res2 = $dbr->query("SELECT value_num FROM $smw_attributes WHERE subject_title = '$query_subpage_name' AND attribute_title = 'Display_order'");
 117+ if ($row2 = $dbr->fetchRow($res2)) {
 118+ $display_order = $row2[0];
 119+ } else {
 120+ $display_order = -1;
 121+ }
 122+ $dbr->freeResult($res2);
 123+ // HACK - page name is the key, display order is the value
 124+ $subpages[$subpage_name] = $display_order;
 125+ }
 126+ $dbr->freeResult($res);
 127+ uasort($subpages, "cmp");
 128+ return array_keys($subpages);
 129+}
 130+
 131+
 132+/*
 133+ * Get all the pages that belong to a category and all its subcategories,
 134+ * down a certain number of levels - heavily based on SMW's
 135+ * SMWInlineQuery::includeSubcategories()
 136+ */
 137+ function getPagesForCategory($top_category, $num_levels) {
 138+ if (0 == $num_levels) return $top_category;
 139+
 140+ $db = wfGetDB( DB_SLAVE );
 141+ $fname = "getPagesForCategory";
 142+ $categories = array($top_category);
 143+ $checkcategories = array($top_category);
 144+ $titles = array();
 145+ for ($level = $num_levels; $level > 0; $level--) {
 146+ $newcategories = array();
 147+ foreach ($checkcategories as $category) {
 148+ $res = $db->select( // make the query
 149+ array('categorylinks', 'page'),
 150+ array('page_id', 'page_title', 'page_namespace'),
 151+ array('cl_from = page_id',
 152+ 'cl_to = '. $db->addQuotes($category)),
 153+ $fname);
 154+ if ($res) {
 155+ while ($res && $row = $db->fetchRow($res)) {
 156+ if (array_key_exists('page_title', $row)) {
 157+ $page_namespace = $row['page_namespace'];
 158+ if ($page_namespace == NS_CATEGORY) {
 159+ $new_category = $row[ 'page_title' ];
 160+ if (!in_array($new_category, $categories)) {
 161+ $newcategories[] = $new_category;
 162+ }
 163+ } else {
 164+ $titles[] = Title::newFromID($row['page_id']);
 165+ }
 166+ }
 167+ }
 168+ $db->freeResult( $res );
 169+ }
 170+ }
 171+ if (count($newcategories) == 0) {
 172+ return $titles;
 173+ } else {
 174+ $categories = array_merge($categories, $newcategories);
 175+ }
 176+ $checkcategories = array_diff($newcategories, array());
 177+ }
 178+ return $titles;
 179+ }
 180+
 181+/*
 182+function getPagesForCategory($category) {
 183+ $dbr = wfGetDB( DB_SLAVE );
 184+ $categorylinks = $dbr->tableName( 'categorylinks' );
 185+ $res = $dbr->query("SELECT cl_from FROM $categorylinks WHERE cl_to = '$category'");
 186+ $titles = array();
 187+ while ($row = $dbr->fetchRow($res)) {
 188+ $titles[] = Title::newFromID($row[0]);
 189+ }
 190+ $dbr->freeResult($res);
 191+ return $titles;
 192+}
 193+*/
 194+
 195+function getPagesForNamespace($namespace) {
 196+ $dbr = wfGetDB( DB_SLAVE );
 197+ $page = $dbr->tableName( 'page' );
 198+ $res = $dbr->query("SELECT page_id FROM $page WHERE page_namespace = '$namespace'");
 199+ $titles = array();
 200+ while ($row = $dbr->fetchRow($res)) {
 201+ $titles[] = Title::newFromID($row[0]);
 202+ }
 203+ $dbr->freeResult($res);
 204+ return $titles;
 205+}
 206+
 207+/**
 208+ * Helper function for getXMLForPage()
 209+ */
 210+function treeContainsElement($tree, $element) {
 211+ // escape out if there's no tree (i.e., category)
 212+ if ($tree == null)
 213+ return false;
 214+
 215+ foreach ($tree as $node => $child_tree) {
 216+ if ($node === $element) {
 217+ return true;
 218+ } elseif (count($child_tree) > 0) {
 219+ if (treeContainsElement($child_tree, $element)) {
 220+ return true;
 221+ }
 222+ }
 223+ }
 224+ // no match found
 225+ return false;
 226+}
 227+
 228+function getXMLForPage($title, $simplified_format, $groupings, $depth=0) {
 229+ if ($depth > 5) {return ""; }
 230+
 231+ global $wgContLang, $dtgContLang;
 232+
 233+ $namespace_labels = $wgContLang->getNamespaces();
 234+ $template_label = $namespace_labels[NS_TEMPLATE];
 235+ $namespace_str = str_replace(' ', '_', wfMsgForContent('dt_xml_namespace'));
 236+ $page_str = str_replace(' ', '_', wfMsgForContent('dt_xml_page'));
 237+ $field_str = str_replace(' ', '_', wfMsgForContent('dt_xml_field'));
 238+ $name_str = str_replace(' ', '_', wfMsgForContent('dt_xml_name'));
 239+ $title_str = str_replace(' ', '_', wfMsgForContent('dt_xml_title'));
 240+ $id_str = str_replace(' ', '_', wfMsgForContent('dt_xml_id'));
 241+ $free_text_str = str_replace(' ', '_', wfMsgForContent('dt_xml_freetext'));
 242+
 243+ // if this page belongs to the exclusion category, exit
 244+ $parent_categories = $title->getParentCategoryTree(array());
 245+ $dt_props = $dtgContLang->getPropertyLabels();
 246+ //$exclusion_category = $title->newFromText($dt_props[DT_SP_IS_EXCLUDED_FROM_XML], NS_CATEGORY);
 247+ $exclusion_category = $wgContLang->getNSText(NS_CATEGORY) . ':' . str_replace(' ', '_', $dt_props[DT_SP_IS_EXCLUDED_FROM_XML]);
 248+ if (treeContainsElement($parent_categories, $exclusion_category))
 249+ return "";
 250+ $article = new Article($title);
 251+ $page_title = str_replace('"', '&quot;', $title->getText());
 252+ $page_title = str_replace('&', '&amp;', $page_title);
 253+ if ($simplified_format)
 254+ $text = "<$page_str><$id_str>{$article->getID()}</$id_str><$title_str>$page_title</$title_str>\n";
 255+ else
 256+ $text = "<$page_str $id_str=\"" . $article->getID() . "\" $title_str=\"" . $page_title . '" >';
 257+
 258+ // traverse the page contents, one character at a time
 259+ $uncompleted_curly_brackets = 0;
 260+ $page_contents = $article->getContent();
 261+ // escape out variables like "{{PAGENAME}}"
 262+ $page_contents = str_replace('{{PAGENAME}}', '&#123;&#123;PAGENAME&#125;&#125;', $page_contents);
 263+ // escape out parser functions
 264+ $page_contents = preg_replace('/{{(#.+)}}/', '&#123;&#123;$1&#125;&#125;', $page_contents);
 265+ // escape out transclusions
 266+ $page_contents = preg_replace('/{{(:.+)}}/', '&#123;&#123;$1&#125;&#125;', $page_contents);
 267+ // escape out variable names
 268+ $page_contents = str_replace('{{{', '&#123;&#123;&#123;', $page_contents);
 269+ $page_contents = str_replace('}}}', '&#125;&#125;&#125;', $page_contents);
 270+ // escape out tables
 271+ $page_contents = str_replace('{|', '&#123;|', $page_contents);
 272+ $page_contents = str_replace('|}', '|&#125;', $page_contents);
 273+ $free_text = "";
 274+ $free_text_id = 1;
 275+ $template_name = "";
 276+ $field_name = "";
 277+ $field_value = "";
 278+ $field_has_name = false;
 279+ for ($i = 0; $i < strlen($page_contents); $i++) {
 280+ $c = $page_contents[$i];
 281+ if ($uncompleted_curly_brackets == 0) {
 282+ if ($c == "{" || $i == strlen($page_contents) - 1) {
 283+ if ($i == strlen($page_contents) - 1)
 284+ $free_text .= $c;
 285+ $uncompleted_curly_brackets++;
 286+ $free_text = trim($free_text);
 287+ $free_text = str_replace('&', '&amp;', $free_text);
 288+ $free_text = str_replace('[', '&#91;', $free_text);
 289+ $free_text = str_replace(']', '&#93;', $free_text);
 290+ $free_text = str_replace('<', '&lt;', $free_text);
 291+ $free_text = str_replace('>', '&gt;', $free_text);
 292+ if ($free_text != "") {
 293+ $text .= "<$free_text_str id=\"$free_text_id\">$free_text</$free_text_str>";
 294+ $free_text = "";
 295+ $free_text_id++;
 296+ }
 297+ } elseif ($c == "{") {
 298+ // do nothing
 299+ } else {
 300+ $free_text .= $c;
 301+ }
 302+ } elseif ($uncompleted_curly_brackets == 1) {
 303+ if ($c == "{") {
 304+ $uncompleted_curly_brackets++;
 305+ $creating_template_name = true;
 306+ } elseif ($c == "}") {
 307+ $uncompleted_curly_brackets--;
 308+ // is this needed?
 309+ //if ($field_name != "") {
 310+ // $field_name = "";
 311+ //}
 312+ if ($page_contents[$i - 1] == '}') {
 313+ if ($simplified_format)
 314+ $text .= "</" . $template_name . ">";
 315+ else
 316+ $text .= "</$template_label>";
 317+ }
 318+ $template_name = "";
 319+ }
 320+ } else { // 2 or greater - probably 2
 321+ if ($c == "}") {
 322+ $uncompleted_curly_brackets--;
 323+ }
 324+ if ($c == "{") {
 325+ $uncompleted_curly_brackets++;
 326+ } else {
 327+ if ($creating_template_name) {
 328+ if ($c == "|" || $c == "}") {
 329+ $template_name = str_replace(' ', '_', trim($template_name));
 330+ $template_name = str_replace('&', '&amp;', $template_name);
 331+ if ($simplified_format) {
 332+ $text .= "<" . $template_name . ">";
 333+ } else
 334+ $text .= "<$template_label $name_str=\"$template_name\">";
 335+ $creating_template_name = false;
 336+ $creating_field_name = true;
 337+ $field_id = 1;
 338+ } else {
 339+ $template_name .= $c;
 340+ }
 341+ } else {
 342+ if ($c == "|" || $c == "}") {
 343+ if ($field_has_name) {
 344+ $field_value = str_replace('&', '&amp;', $field_value);
 345+ if ($simplified_format) {
 346+ $field_name = str_replace(' ', '_', trim($field_name));
 347+ $text .= "<" . $field_name . ">";
 348+ $text .= trim($field_value);
 349+ $text .= "</" . $field_name . ">";
 350+ } else {
 351+ $text .= "<$field_str $name_str=\"" . trim($field_name) . "\">";
 352+ $text .= trim($field_value);
 353+ $text .= "</$field_str>";
 354+ }
 355+ $field_value = "";
 356+ $field_has_name = false;
 357+ } else {
 358+ // "field_name" is actually the value
 359+ if ($simplified_format) {
 360+ $field_name = str_replace(' ', '_', $field_name);
 361+ // add "Field" to the beginning of the file name, since
 362+ // XML tags that are simply numbers aren't allowed
 363+ $text .= "<" . $field_str . '_' . $field_id . ">";
 364+ $text .= trim($field_name);
 365+ $text .= "</" . $field_str . '_' . $field_id . ">";
 366+ } else {
 367+ $text .= "<$field_str $name_str=\"$field_id\">";
 368+ $text .= trim($field_name);
 369+ $text .= "</$field_str>";
 370+ }
 371+ $field_id++;
 372+ }
 373+ $creating_field_name = true;
 374+ $field_name = "";
 375+ } elseif ($c == "=") {
 376+ // handle case of = in value
 377+ if (! $creating_field_name) {
 378+ $field_value .= $c;
 379+ } else {
 380+ $creating_field_name = false;
 381+ $field_has_name = true;
 382+ }
 383+ } elseif ($creating_field_name) {
 384+ $field_name .= $c;
 385+ } else {
 386+ $field_value .= $c;
 387+ }
 388+ }
 389+ }
 390+ }
 391+ }
 392+
 393+ // handle groupings, if any apply here; first check if SMW is installed
 394+ global $smwgIP;
 395+ if (isset($smwgIP)) {
 396+ $store = smwfGetStore();
 397+ foreach ($groupings as $pair) {
 398+ list($property, $grouping_label) = $pair;
 399+ $store = smwfGetStore();
 400+ $wiki_page = SMWDataValueFactory::newTypeIDValue('_wpg', $page_title);
 401+ $options = new SMWRequestOptions();
 402+ $options->sort = "subject_title";
 403+ $res = $store->getPropertySubjects($property, $wiki_page, $options);
 404+ $num = count($res);
 405+ if ($num > 0) {
 406+ $text .= "<$grouping_label>\n";
 407+ foreach ($res as $subject) {
 408+ // the type of $subject depends on the version of SMW
 409+ if ($subject instanceof SMWWikiPageValue) {
 410+ $subject = $subject->getTitle();
 411+ }
 412+ $text .= getXMLForPage($title, $simplified_format, $groupings, $depth + 1);
 413+ }
 414+ $text .= "</$grouping_label>\n";
 415+ }
 416+ }
 417+ }
 418+
 419+ $text .= "</$page_str>\n";
 420+ // escape back the curly brackets that were escaped out at the beginning
 421+ $text = str_replace('&amp;#123;', '{', $text);
 422+ $text = str_replace('&amp;#125;', '}', $text);
 423+ return $text;
 424+}
 425+
 426+function doSpecialViewXML() {
 427+ global $wgOut, $wgRequest, $wgUser, $wgCanonicalNamespaceNames, $wgContLang;
 428+ $skin = $wgUser->getSkin();
 429+ $namespace_labels = $wgContLang->getNamespaces();
 430+ $category_label = $namespace_labels[NS_CATEGORY];
 431+ $template_label = $namespace_labels[NS_TEMPLATE];
 432+ $name_str = str_replace(' ', '_', wfMsgForContent('dt_xml_name'));
 433+ $namespace_str = wfMsg('dt_xml_namespace');
 434+ $pages_str = str_replace(' ', '_', wfMsgForContent('dt_xml_pages'));
 435+
 436+ $form_submitted = false;
 437+ $page_titles = array();
 438+ $cats = $wgRequest->getArray('categories');
 439+ $nses = $wgRequest->getArray('namespaces');
 440+ if (count($cats) > 0 || count($nses) > 0) {
 441+ $form_submitted = true;
 442+ }
 443+
 444+ if ($form_submitted) {
 445+ $wgOut->disable();
 446+
 447+ // Cancel output buffering and gzipping if set
 448+ // This should provide safer streaming for pages with history
 449+ wfResetOutputBuffers();
 450+ header( "Content-type: application/xml; charset=utf-8" );
 451+
 452+ $groupings = getGroupings();
 453+ $simplified_format = $wgRequest->getVal('simplified_format');
 454+ $text = "<$pages_str>";
 455+ if ($cats) {
 456+ foreach ($cats as $cat => $val) {
 457+ if ($simplified_format)
 458+ $text .= '<' . str_replace(' ', '_', $cat) . ">\n";
 459+ else
 460+ $text .= "<$category_label $name_str=\"$cat\">\n";
 461+ $titles = getPagesForCategory($cat, 10);
 462+ foreach ($titles as $title) {
 463+ $text .= getXMLForPage($title, $simplified_format, $groupings);
 464+ }
 465+ if ($simplified_format)
 466+ $text .= '</' . str_replace(' ', '_', $cat) . ">\n";
 467+ else
 468+ $text .= "</$category_label>\n";
 469+ }
 470+ }
 471+
 472+ if ($nses) {
 473+ foreach ($nses as $ns => $val) {
 474+ if ($ns == 0) {
 475+ $ns_name = "Main";
 476+ } else {
 477+ $ns_name = $wgCanonicalNamespaceNames[$ns];
 478+ }
 479+ if ($simplified_format)
 480+ $text .= '<' . str_replace(' ', '_', $ns_name) . ">\n";
 481+ else
 482+ $text .= "<$namespace_str $name_str=\"$ns_name\">\n";
 483+ $titles = getPagesForNamespace($ns);
 484+ foreach ($titles as $title) {
 485+ $text .= getXMLForPage($title, $simplified_format, $groupings);
 486+ }
 487+ if ($simplified_format)
 488+ $text .= '</' . str_replace(' ', '_', $ns_name) . ">\n";
 489+ else
 490+ $text .= "</$namespace_str>\n";
 491+ }
 492+ }
 493+ $text .= "</$pages_str>";
 494+ print $text;
 495+ } else {
 496+ // set 'title' as hidden field, in case there's no URL niceness
 497+ global $wgContLang;
 498+ $mw_namespace_labels = $wgContLang->getNamespaces();
 499+ $special_namespace = $mw_namespace_labels[NS_SPECIAL];
 500+ $text =<<<END
 501+ <form action="" method="get">
 502+ <input type="hidden" name="title" value="$special_namespace:ViewXML">
 503+
 504+END;
 505+ $text .= "<p>" . wfMsg('dt_viewxml_docu') . "</p>\n";
 506+ $text .= "<h2>" . wfMsg('dt_viewxml_categories') . "</h2>\n";
 507+ $categories = getCategoriesList();
 508+ foreach ($categories as $category) {
 509+ $title = Title::makeTitle( NS_CATEGORY, $category );
 510+ $link = $skin->makeLinkObj( $title, $title->getText() );
 511+ $text .= "<input type=\"checkbox\" name=\"categories[$category]\" /> $link <br />\n";
 512+ }
 513+ $text .= "<h2>" . wfMsg('dt_viewxml_namespaces') . "</h2>\n";
 514+ $namespaces = getNamespacesList();
 515+ foreach ($namespaces as $namespace) {
 516+ if ($namespace == 0) {
 517+ $ns_name = "Main";
 518+ } else {
 519+ $ns_name = $wgCanonicalNamespaceNames["$namespace"];
 520+ }
 521+ $ns_name = str_replace('_', ' ', $ns_name);
 522+ $text .= "<input type=\"checkbox\" name=\"namespaces[$namespace]\" /> $ns_name <br />\n";
 523+ }
 524+ $text .= "<br /><p><input type=\"checkbox\" name=\"simplified_format\" /> " . wfMsg('dt_viewxml_simplifiedformat') . "</p>\n";
 525+ $text .= "<input type=\"submit\" value=\"" . wfMsg('viewxml') . "\">\n";
 526+ $text .= "</form>\n";
 527+
 528+ $wgOut->addHTML($text);
 529+ }
 530+}
Property changes on: tags/extensions/DataTransfer/REL_0_3_1/specials/DT_ViewXML.php
___________________________________________________________________
Name: svn:eol-style
1531 + native
Index: tags/extensions/DataTransfer/REL_0_3_1/INSTALL
@@ -0,0 +1,31 @@
 2+[[Data Transfer 0.3.1]]
 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_1/INSTALL
___________________________________________________________________
Name: svn:eol-style
133 + native
Index: tags/extensions/DataTransfer/REL_0_3_1/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_1/includes/DT_ImportJob.php
___________________________________________________________________
Name: svn:eol-style
149 + native
Index: tags/extensions/DataTransfer/REL_0_3_1/includes/DT_GlobalFunctions.php
@@ -0,0 +1,114 @@
 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.1');
 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+
 41+require_once($dtgIP . '/languages/DT_Language.php');
 42+$wgExtensionMessagesFiles['DataTransfer'] = $dtgIP . '/languages/DT_Messages.php';
 43+$wgExtensionAliasesFiles['DataTransfer'] = $dtgIP . '/languages/DT_Aliases.php';
 44+
 45+/**********************************************/
 46+/***** language settings *****/
 47+/**********************************************/
 48+
 49+/**
 50+ * Initialise a global language object for content language. This
 51+ * must happen early on, even before user language is known, to
 52+ * determine labels for additional namespaces. In contrast, messages
 53+ * can be initialised much later when they are actually needed.
 54+ */
 55+function dtfInitContentLanguage($langcode) {
 56+ global $dtgIP, $dtgContLang;
 57+
 58+ if (!empty($dtgContLang)) { return; }
 59+
 60+ $dtContLangClass = 'DT_Language' . str_replace( '-', '_', ucfirst( $langcode ) );
 61+
 62+ if (file_exists($dtgIP . '/languages/'. $dtContLangClass . '.php')) {
 63+ include_once( $dtgIP . '/languages/'. $dtContLangClass . '.php' );
 64+ }
 65+
 66+ // fallback if language not supported
 67+ if ( !class_exists($dtContLangClass)) {
 68+ include_once($dtgIP . '/languages/DT_LanguageEn.php');
 69+ $dtContLangClass = 'DT_LanguageEn';
 70+ }
 71+
 72+ $dtgContLang = new $dtContLangClass();
 73+}
 74+
 75+/**
 76+ * Initialise the global language object for user language. This
 77+ * must happen after the content language was initialised, since
 78+ * this language is used as a fallback.
 79+ */
 80+function dtfInitUserLanguage($langcode) {
 81+ global $dtgIP, $dtgLang;
 82+
 83+ if (!empty($dtgLang)) { return; }
 84+
 85+ $dtLangClass = 'DT_Language' . str_replace( '-', '_', ucfirst( $langcode ) );
 86+
 87+ if (file_exists($dtgIP . '/languages/'. $dtLangClass . '.php')) {
 88+ include_once( $dtgIP . '/languages/'. $dtLangClass . '.php' );
 89+ }
 90+
 91+ // fallback if language not supported
 92+ if ( !class_exists($dtLangClass)) {
 93+ global $dtgContLang;
 94+ $dtgLang = $dtgContLang;
 95+ } else {
 96+ $dtgLang = new $dtLangClass();
 97+ }
 98+}
 99+
 100+/**********************************************/
 101+/***** other global helpers *****/
 102+/**********************************************/
 103+
 104+/**
 105+ * Add links to the 'AdminLinks' special page, defined by the Admin Links
 106+ * extension
 107+ */
 108+function dtfAddToAdminLinks($admin_links_tree) {
 109+ $import_export_section = $admin_links_tree->getSection(wfMsg('adminlinks_importexport'));
 110+ $main_row = $import_export_section->getRow('main');
 111+ $main_row->addItem(ALItem::newFromSpecialPage('ViewXML'));
 112+ $main_row->addItem(ALItem::newFromSpecialPage('ImportXML'));
 113+ $main_row->addItem(ALItem::newFromSpecialPage('ImportCSV'));
 114+ return true;
 115+}
Property changes on: tags/extensions/DataTransfer/REL_0_3_1/includes/DT_GlobalFunctions.php
___________________________________________________________________
Name: svn:eol-style
1116 + native
Index: tags/extensions/DataTransfer/REL_0_3_1/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_1/includes/DT_XMLParser.php
___________________________________________________________________
Name: svn:eol-style
1274 + native
Index: tags/extensions/DataTransfer/REL_0_3_1/includes/DT_Settings.php
@@ -0,0 +1,26 @@
 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');
Property changes on: tags/extensions/DataTransfer/REL_0_3_1/includes/DT_Settings.php
___________________________________________________________________
Name: svn:eol-style
128 + native
Index: tags/extensions/DataTransfer/REL_0_3_1/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_1/languages/DT_Language.php
___________________________________________________________________
Name: svn:eol-style
136 + native
Index: tags/extensions/DataTransfer/REL_0_3_1/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_1/languages/DT_LanguageEn.php
___________________________________________________________________
Name: svn:eol-style
115 + native
Index: tags/extensions/DataTransfer/REL_0_3_1/languages/DT_Messages.php
@@ -0,0 +1,1585 @@
 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+ */
 180+$messages['be-tarask'] = array(
 181+ 'viewxml' => 'Паказаць XML',
 182+ 'dt_viewxml_categories' => 'Катэгорыі',
 183+ 'dt_viewxml_namespaces' => 'Прасторы назваў',
 184+ 'dt_viewxml_simplifiedformat' => 'Спрошчаны фармат',
 185+ 'dt_xml_namespace' => 'Прастора назваў',
 186+ 'dt_xml_pages' => 'Старонкі',
 187+ 'dt_xml_page' => 'Старонка',
 188+ 'dt_xml_template' => 'Шаблён',
 189+ 'dt_xml_field' => 'Поле',
 190+ 'dt_xml_name' => 'Назва',
 191+ 'dt_xml_title' => 'Назва',
 192+);
 193+
 194+/** Bulgarian (Български)
 195+ * @author DCLXVI
 196+ */
 197+$messages['bg'] = array(
 198+ 'viewxml' => 'Преглед на XML',
 199+ 'dt_viewxml_categories' => 'Категории',
 200+ 'dt_viewxml_namespaces' => 'Именни пространства',
 201+ 'dt_viewxml_simplifiedformat' => 'Опростен формат',
 202+ 'dt_xml_namespace' => 'Именно пространство',
 203+ 'dt_xml_page' => 'Страница',
 204+ 'dt_xml_field' => 'Поле',
 205+ 'dt_xml_name' => 'Име',
 206+ 'dt_xml_title' => 'Заглавие',
 207+ 'dt_xml_id' => 'Номер',
 208+ 'dt_xml_freetext' => 'Свободен текст',
 209+);
 210+
 211+/** Bosnian (Bosanski)
 212+ * @author CERminator
 213+ */
 214+$messages['bs'] = array(
 215+ 'dt-desc' => 'Omogućuje uvoz i izvoz podataka koji su sadržani u pozivima šablona',
 216+ 'viewxml' => 'Pregledaj XML',
 217+ 'dt_viewxml_docu' => 'Molimo Vas odaberite unutar slijedećih kategorija i imenskih prostora za pregled u XML formatu.',
 218+ 'dt_viewxml_categories' => 'Kategorije',
 219+ 'dt_viewxml_namespaces' => 'Imenski prostori',
 220+ 'dt_viewxml_simplifiedformat' => 'Pojednostavljeni format',
 221+ 'dt_xml_namespace' => 'Imenski prostor',
 222+ 'dt_xml_pages' => 'Stranice',
 223+ 'dt_xml_page' => 'Stranica',
 224+ 'dt_xml_template' => 'Šablon',
 225+ 'dt_xml_field' => 'Polje',
 226+ 'dt_xml_name' => 'Naziv',
 227+ 'dt_xml_title' => 'Naslov',
 228+ 'dt_xml_id' => 'ID',
 229+ 'dt_xml_freetext' => 'Slobodni tekst',
 230+ 'importxml' => 'Uvezi XML',
 231+ 'dt_import_selectfile' => 'Molimo odaberite $1 datoteku za uvoz:',
 232+ 'dt_import_editsummary' => '$1 uvoz',
 233+ 'dt_import_importing' => 'Uvoz...',
 234+ 'dt_import_success' => '$1 {{PLURAL:$1|stranica|stranice|stranica}} će biti napravljeno iz $2 datoteke.',
 235+ 'importcsv' => 'Uvoz CSV',
 236+ 'dt_importcsv_badheader' => "Greška: zaglavlje $1 kolone, '$2', mora biti ili '$3', '$4' ili od obrasca 'template_name[field_name]'",
 237+ 'right-datatransferimport' => 'Uvoz podataka',
 238+);
 239+
 240+/** Catalan (Català)
 241+ * @author Jordi Roqué
 242+ * @author SMP
 243+ * @author Solde
 244+ */
 245+$messages['ca'] = array(
 246+ 'dt-desc' => 'Permet importar i exportar les dades que contenen les crides de les plantilles',
 247+ 'viewxml' => 'Veure XML',
 248+ 'dt_viewxml_docu' => "Si us plau, selecciona d'entre les següents categories i espais de noms per a veure-ho en format XML.",
 249+ 'dt_viewxml_categories' => 'Categories',
 250+ 'dt_viewxml_namespaces' => 'Espai de noms',
 251+ 'dt_viewxml_simplifiedformat' => 'Format simplificat',
 252+ 'dt_xml_namespace' => 'Espai de noms',
 253+ 'dt_xml_pages' => 'Pàgines',
 254+ 'dt_xml_page' => 'Pàgina',
 255+ 'dt_xml_template' => 'Plantilla',
 256+ 'dt_xml_field' => 'Camp',
 257+ 'dt_xml_name' => 'Nom',
 258+ 'dt_xml_title' => 'Títol',
 259+ 'dt_xml_id' => 'ID',
 260+ 'dt_xml_freetext' => 'Text lliure',
 261+ 'importxml' => 'Importa XML',
 262+ 'dt_import_selectfile' => 'Si us plau, selecciona el fitxer $1 per a importar:',
 263+ 'dt_import_editsummary' => 'Importació $1',
 264+ 'dt_import_importing' => "S'està important...",
 265+ 'dt_import_success' => '$1 {{PLURAL:$1|pàgina|pàgines}} es crearan des del fitxer $2.',
 266+ 'importcsv' => 'Importa CSV',
 267+ '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]'",
 268+);
 269+
 270+/** Czech (Česky)
 271+ * @author Matěj Grabovský
 272+ */
 273+$messages['cs'] = array(
 274+ 'dt-desc' => 'Umožňuje import a export strukturovaných údajů v buňkách šablon.',
 275+);
 276+
 277+/** Danish (Dansk)
 278+ * @author Jon Harald Søby
 279+ */
 280+$messages['da'] = array(
 281+ 'dt_viewxml_categories' => 'Kategorier',
 282+ 'dt_xml_namespace' => 'Navnerum',
 283+ 'dt_xml_page' => 'Side',
 284+ 'dt_xml_name' => 'Navn',
 285+ 'dt_xml_title' => 'Titel',
 286+ 'dt_xml_id' => 'ID',
 287+);
 288+
 289+/** German (Deutsch)
 290+ * @author Als-Holder
 291+ * @author Krabina
 292+ * @author Revolus
 293+ * @author Umherirrender
 294+ */
 295+$messages['de'] = array(
 296+ 'dt-desc' => 'Ermöglicht den Import und Export von Daten, die in Aufrufen von Vorlagen verwendet werden',
 297+ 'viewxml' => 'XML ansehen',
 298+ 'dt_viewxml_docu' => 'Bitte wähle aus, welche Kategorien und Namensräume im XML-Format angezeigt werden sollen.',
 299+ 'dt_viewxml_categories' => 'Kategorien',
 300+ 'dt_viewxml_namespaces' => 'Namensräume',
 301+ 'dt_viewxml_simplifiedformat' => 'Vereinfachtes Format',
 302+ 'dt_xml_namespace' => 'Namensraum',
 303+ 'dt_xml_pages' => 'Seiten',
 304+ 'dt_xml_page' => 'Seite',
 305+ 'dt_xml_template' => 'Vorlage',
 306+ 'dt_xml_field' => 'Feld',
 307+ 'dt_xml_name' => 'Name',
 308+ 'dt_xml_title' => 'Titel',
 309+ 'dt_xml_id' => 'ID',
 310+ 'dt_xml_freetext' => 'Freier Text',
 311+ 'importxml' => 'XML importieren',
 312+ 'dt_import_selectfile' => 'Bitte die zu importierende $1-Datei auswählen:',
 313+ 'dt_import_editsummary' => '$1-Import',
 314+ 'dt_import_importing' => 'Importiere …',
 315+ 'dt_import_success' => '$1 {{PLURAL:$1|Seite|Seiten}} werden aus der $2-Datei importiert.',
 316+ 'importcsv' => 'CSV importieren',
 317+ 'dt_importcsv_badheader' => 'Fehler: Der Kopf der Spalte $1, „$2“, muss entweder „$3“, „$4“ oder im Format „Vorlagenname[Feldname]“ sein',
 318+ 'right-datatransferimport' => 'Daten importieren',
 319+);
 320+
 321+/** Lower Sorbian (Dolnoserbski)
 322+ * @author Michawiki
 323+ */
 324+$messages['dsb'] = array(
 325+ 'dt-desc' => 'Zmóžnja importěrowanje a eksportěrowanje datow w zawołanjach pśedłogow',
 326+ 'viewxml' => 'XML se woglědaś',
 327+ 'dt_viewxml_docu' => 'Pšosym wubjeŕ, kótare slědujucych kategorijow a mjenjowych rumow maju se pokazaś w formaśe XML.',
 328+ 'dt_viewxml_categories' => 'Kategorije',
 329+ 'dt_viewxml_namespaces' => 'Mjenjowe rumy',
 330+ 'dt_viewxml_simplifiedformat' => 'Zjadnorjony format',
 331+ 'dt_xml_namespace' => 'Mjenjowy rum',
 332+ 'dt_xml_pages' => 'Boki',
 333+ 'dt_xml_page' => 'Bok',
 334+ 'dt_xml_template' => 'Pśedłoga',
 335+ 'dt_xml_field' => 'Pólo',
 336+ 'dt_xml_name' => 'Mě',
 337+ 'dt_xml_title' => 'Titel',
 338+ 'dt_xml_id' => 'ID',
 339+ 'dt_xml_freetext' => 'Lichy tekst',
 340+ 'importxml' => 'XML importěrowaś',
 341+ 'dt_import_selectfile' => 'Pšosym wubjeŕ dataju $1 za importěrowanje:',
 342+ 'dt_import_editsummary' => 'Importěrowanje $1',
 343+ 'dt_import_importing' => 'Importěrujo se...',
 344+ 'dt_import_success' => '$1 {{PLURAL:$1|bok twóri|boka twóritej|boki twórje|bokow twóri}} se z dataje $2.',
 345+ 'importcsv' => 'Importěrowanje CSV',
 346+ '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ěś",
 347+ 'right-datatransferimport' => 'Daty importěrowaś',
 348+);
 349+
 350+/** Greek (Ελληνικά)
 351+ * @author Consta
 352+ */
 353+$messages['el'] = array(
 354+ 'dt_viewxml_categories' => 'Κατηγορίες',
 355+ 'dt_xml_page' => 'Σελίδα',
 356+ 'dt_xml_field' => 'Πεδίο',
 357+ 'dt_xml_name' => 'Όνομα',
 358+ 'dt_xml_title' => 'Τίτλος',
 359+ 'dt_xml_id' => 'ID',
 360+);
 361+
 362+/** Esperanto (Esperanto)
 363+ * @author Yekrats
 364+ */
 365+$messages['eo'] = array(
 366+ 'dt-desc' => 'Permesas importadon kaj eksportadon de strukturemaj datenoj enhave en ŝablonaj vokoj.',
 367+ 'viewxml' => 'Rigardu XML-on',
 368+ 'dt_viewxml_docu' => 'Bonvolu elekti inter la subaj kategorioj kaj nomspacoj por rigardi en XML-formato.',
 369+ 'dt_viewxml_categories' => 'Kategorioj',
 370+ 'dt_viewxml_namespaces' => 'Nomspacoj',
 371+ 'dt_viewxml_simplifiedformat' => 'Simpligita formato',
 372+ 'dt_xml_namespace' => 'Nomspaco',
 373+ 'dt_xml_page' => 'Paĝo',
 374+ 'dt_xml_field' => 'Kampo',
 375+ 'dt_xml_name' => 'Nomo',
 376+ 'dt_xml_title' => 'Titolo',
 377+ 'dt_xml_id' => 'identigo',
 378+ 'dt_xml_freetext' => 'Libera Teksto',
 379+);
 380+
 381+/** Spanish (Español)
 382+ * @author Crazymadlover
 383+ * @author Imre
 384+ * @author Sanbec
 385+ */
 386+$messages['es'] = array(
 387+ 'viewxml' => 'Ver XML',
 388+ 'dt_viewxml_docu' => 'Por favor seleccionar entre las siguientes categorías y nombres de espacio para ver en formato XML.',
 389+ 'dt_viewxml_categories' => 'Categorías',
 390+ 'dt_viewxml_namespaces' => 'Espacios de nombres',
 391+ 'dt_viewxml_simplifiedformat' => 'Formato simplificado',
 392+ 'dt_xml_namespace' => 'Espacio de nombres',
 393+ 'dt_xml_pages' => 'Páginas',
 394+ 'dt_xml_page' => 'Página',
 395+ 'dt_xml_template' => 'Plantilla',
 396+ 'dt_xml_field' => 'Campo',
 397+ 'dt_xml_name' => 'Nombre',
 398+ 'dt_xml_title' => 'Título',
 399+ 'dt_xml_id' => 'ID',
 400+ 'dt_xml_freetext' => 'Texto libre',
 401+ 'importxml' => 'Importar XML',
 402+ 'dt_import_selectfile' => 'Por favor seleccione el archivo $1 a importar:',
 403+ 'dt_import_importing' => 'Importando...',
 404+ 'dt_import_success' => '$1 {{PLURAL:$1|página|páginas}} serán creadas del archivo $2.',
 405+ 'importcsv' => 'Importar CSV',
 406+);
 407+
 408+/** Finnish (Suomi)
 409+ * @author Crt
 410+ * @author Vililikku
 411+ */
 412+$messages['fi'] = array(
 413+ 'viewxml' => 'Näytä XML',
 414+ 'dt_viewxml_categories' => 'Luokat',
 415+ 'dt_viewxml_namespaces' => 'Nimiavaruudet',
 416+ 'dt_viewxml_simplifiedformat' => 'Yksinkertaistettu muoto',
 417+ 'dt_xml_namespace' => 'Nimiavaruus',
 418+ 'dt_xml_page' => 'Sivu',
 419+ 'dt_xml_field' => 'Kenttä',
 420+ 'dt_xml_name' => 'Nimi',
 421+ 'dt_xml_title' => 'Otsikko',
 422+ 'dt_xml_id' => 'Tunnus',
 423+ 'dt_xml_freetext' => 'Vapaa teksti',
 424+);
 425+
 426+/** French (Français)
 427+ * @author Crochet.david
 428+ * @author Grondin
 429+ * @author IAlex
 430+ * @author PieRRoMaN
 431+ */
 432+$messages['fr'] = array(
 433+ 'dt-desc' => 'Permet l’import et l’export de données contenues dans des appels de modèles',
 434+ 'viewxml' => 'Voir XML',
 435+ 'dt_viewxml_docu' => 'Veuillez sélectionner parmi les catégories et les espaces de noms suivants afin de visionner au format XML.',
 436+ 'dt_viewxml_categories' => 'Catégories',
 437+ 'dt_viewxml_namespaces' => 'Espaces de noms',
 438+ 'dt_viewxml_simplifiedformat' => 'Format simplifié',
 439+ 'dt_xml_namespace' => 'Espace de noms',
 440+ 'dt_xml_pages' => 'Pages',
 441+ 'dt_xml_page' => 'Page',
 442+ 'dt_xml_template' => 'Modèle',
 443+ 'dt_xml_field' => 'Champ',
 444+ 'dt_xml_name' => 'Nom',
 445+ 'dt_xml_title' => 'Titre',
 446+ 'dt_xml_id' => 'ID',
 447+ 'dt_xml_freetext' => 'Texte Libre',
 448+ 'importxml' => 'Import en XML',
 449+ 'dt_import_selectfile' => 'Veuillez sélectionner le fichier $1 à importer :',
 450+ 'dt_import_editsummary' => 'Importation $1',
 451+ 'dt_import_importing' => 'Import en cours...',
 452+ 'dt_import_success' => '$1 {{PLURAL:$1|page sera crée|pages seront crées}} depuis le fichier $2.',
 453+ 'importcsv' => 'Import CSV',
 454+ '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] »',
 455+ 'right-datatransferimport' => 'Importer des données',
 456+);
 457+
 458+/** Western Frisian (Frysk)
 459+ * @author Snakesteuben
 460+ */
 461+$messages['fy'] = array(
 462+ 'dt_viewxml_namespaces' => 'Nammeromten',
 463+ 'dt_xml_page' => 'Side',
 464+ 'dt_xml_name' => 'Namme',
 465+);
 466+
 467+/** Irish (Gaeilge)
 468+ * @author Alison
 469+ */
 470+$messages['ga'] = array(
 471+ 'dt_xml_namespace' => 'Ainmspás',
 472+);
 473+
 474+/** Galician (Galego)
 475+ * @author Alma
 476+ * @author Toliño
 477+ */
 478+$messages['gl'] = array(
 479+ 'dt-desc' => 'Permite importar e exportar datos contidos en chamadas de modelos',
 480+ 'viewxml' => 'Ver XML',
 481+ 'dt_viewxml_docu' => 'Por favor seleccione entre as seguintes categorías e espazos de nomes para ver en formato XML.',
 482+ 'dt_viewxml_categories' => 'Categorías',
 483+ 'dt_viewxml_namespaces' => 'Espazos de nomes',
 484+ 'dt_viewxml_simplifiedformat' => 'Formato simplificado',
 485+ 'dt_xml_namespace' => 'Espazo de nomes',
 486+ 'dt_xml_pages' => 'Páxinas',
 487+ 'dt_xml_page' => 'Páxina',
 488+ 'dt_xml_template' => 'Modelo',
 489+ 'dt_xml_field' => 'Campo',
 490+ 'dt_xml_name' => 'Nome',
 491+ 'dt_xml_title' => 'Título',
 492+ 'dt_xml_id' => 'ID',
 493+ 'dt_xml_freetext' => 'Texto Libre',
 494+ 'importxml' => 'Importar XML',
 495+ 'dt_import_selectfile' => 'Por favor, seleccione o ficheiro $1 a importar:',
 496+ 'dt_import_editsummary' => 'Importación en $1',
 497+ 'dt_import_importing' => 'Importando...',
 498+ 'dt_import_success' => '{{PLURAL:$1|Unha páxina será creada|$1 páxinas serán creadas}} a partir do ficheiro $2.',
 499+ 'importcsv' => 'Importación en CSV',
 500+ 'dt_importcsv_badheader' => 'Erro: a cabeceira da columna $1, "$2", debe ser un "$3", "$4" ou do formulario "template_name[field_name]"',
 501+ 'right-datatransferimport' => 'Importar datos',
 502+);
 503+
 504+/** Gothic
 505+ * @author Jocke Pirat
 506+ */
 507+$messages['got'] = array(
 508+ 'dt_xml_namespace' => 'Seidofera',
 509+);
 510+
 511+/** Ancient Greek (Ἀρχαία ἑλληνικὴ)
 512+ * @author Crazymadlover
 513+ * @author Omnipaedista
 514+ */
 515+$messages['grc'] = array(
 516+ 'dt_viewxml_categories' => 'Κατηγορίαι',
 517+ 'dt_viewxml_namespaces' => 'Ὀνοματεῖα',
 518+ 'dt_xml_namespace' => 'Ὀνοματεῖον',
 519+ 'dt_xml_page' => 'Δέλτος',
 520+ 'dt_xml_field' => 'Πεδίον',
 521+ 'dt_xml_name' => 'Ὄνομα',
 522+ 'dt_xml_title' => 'Ἐπιγραφή',
 523+ 'dt_xml_freetext' => 'Ἐλεύθερον κείμενον',
 524+);
 525+
 526+/** Swiss German (Alemannisch)
 527+ * @author Als-Holder
 528+ * @author J. 'mach' wust
 529+ */
 530+$messages['gsw'] = array(
 531+ 'dt-desc' => 'Macht dr Import un dr Export vu strukturierte Date megli, wu in Ufrief vu Vorlage bruucht wäre.',
 532+ 'viewxml' => 'XML aaluege',
 533+ 'dt_viewxml_docu' => 'Bitte wehl uus, weli Kategorien un Namensryym im XML-Format solle aazeigt wäre.',
 534+ 'dt_viewxml_categories' => 'Kategorie',
 535+ 'dt_viewxml_namespaces' => 'Namensryym',
 536+ 'dt_viewxml_simplifiedformat' => 'Vereifacht Format',
 537+ 'dt_xml_namespace' => 'Namensruum',
 538+ 'dt_xml_pages' => 'Syte',
 539+ 'dt_xml_page' => 'Syte',
 540+ 'dt_xml_template' => 'Vorlag',
 541+ 'dt_xml_field' => 'Fäld',
 542+ 'dt_xml_name' => 'Name',
 543+ 'dt_xml_title' => 'Titel',
 544+ 'dt_xml_id' => 'ID',
 545+ 'dt_xml_freetext' => 'Freje Täxt',
 546+ 'importxml' => 'XML importiere',
 547+ 'dt_import_selectfile' => 'Bitte wehl d $1-Datei zum importiere uus:',
 548+ 'dt_import_editsummary' => '$1-Import',
 549+ 'dt_import_importing' => 'Am Importiere ...',
 550+ 'dt_import_success' => '$1 {{PLURAL:$1|Syte|Syte}} wäre us dr $2-Datei aagleit.',
 551+ 'importcsv' => 'CSV-Datei importiere',
 552+ 'dt_importcsv_badheader' => "Fähler: d Spalte $1 Iberschrift, '$2', muess entwäder '$3', '$4' syy oder us em Format 'template_name[field_name]'",
 553+ 'right-datatransferimport' => 'Date importiere',
 554+);
 555+
 556+/** Manx (Gaelg)
 557+ * @author MacTire02
 558+ */
 559+$messages['gv'] = array(
 560+ 'viewxml' => 'Jeeagh er XML',
 561+ 'dt_viewxml_categories' => 'Ronnaghyn',
 562+ 'dt_xml_page' => 'Duillag',
 563+ 'dt_xml_name' => 'Ennym',
 564+ 'dt_xml_title' => 'Ard-ennym',
 565+ 'dt_xml_freetext' => 'Teks seyr',
 566+);
 567+
 568+/** Hawaiian (Hawai`i)
 569+ * @author Singularity
 570+ */
 571+$messages['haw'] = array(
 572+ 'dt_xml_page' => '‘Ao‘ao',
 573+ 'dt_xml_name' => 'Inoa',
 574+);
 575+
 576+/** Hebrew (עברית)
 577+ * @author Rotemliss
 578+ * @author YaronSh
 579+ */
 580+$messages['he'] = array(
 581+ 'dt-desc' => 'אפשרות לייבוא ולייצוא נתונים מבניים הנכללים בהכללות של תבניות',
 582+ 'viewxml' => 'הצגת XML',
 583+ 'dt_viewxml_docu' => 'אנא בחרו את מרחבי השם והקטגוריות אותם תרצו להציג בפורמט XML.',
 584+ 'dt_viewxml_categories' => 'קטגוריות',
 585+ 'dt_viewxml_namespaces' => 'מרחבי שם',
 586+ 'dt_viewxml_simplifiedformat' => 'מבנה מפושט',
 587+ 'dt_xml_namespace' => 'מרחב שם',
 588+ 'dt_xml_pages' => 'דפים',
 589+ 'dt_xml_page' => 'דף',
 590+ 'dt_xml_template' => 'תבנית',
 591+ 'dt_xml_field' => 'שדה',
 592+ 'dt_xml_name' => 'שם',
 593+ 'dt_xml_title' => 'כותרת',
 594+ 'dt_xml_id' => 'ID',
 595+ 'dt_xml_freetext' => 'טקסט חופשי',
 596+ 'importxml' => 'ייבוא XML',
 597+ 'dt_import_selectfile' => 'אנא בחרו את קובץ ה־$1 לייבוא:',
 598+ 'dt_import_editsummary' => 'ייבוא $1',
 599+ 'dt_import_importing' => 'בתהליכי ייבוא...',
 600+ 'dt_import_success' => '{{PLURAL:$1|דף אחד ייובא|$1 דפים ייובאו}} מקובץ ה־$2.',
 601+);
 602+
 603+/** Hindi (हिन्दी)
 604+ * @author Kaustubh
 605+ */
 606+$messages['hi'] = array(
 607+ 'dt-desc' => 'टेम्प्लेट कॉल में उपलब्ध डाटाकी आयात-निर्यात करने की अनुमति देता हैं',
 608+ 'viewxml' => 'XML देखें',
 609+ 'dt_viewxml_docu' => 'कॄपया XML में देखने के लिये श्रेणीयाँ और नामस्थान चुनें।',
 610+ 'dt_viewxml_categories' => 'श्रेणीयाँ',
 611+ 'dt_viewxml_namespaces' => 'नामस्थान',
 612+ 'dt_viewxml_simplifiedformat' => 'आसान फॉरमैट',
 613+ 'dt_xml_namespace' => 'नामस्थान',
 614+ 'dt_xml_page' => 'पन्ना',
 615+ 'dt_xml_field' => 'फिल्ड़',
 616+ 'dt_xml_name' => 'नाम',
 617+ 'dt_xml_title' => 'शीर्षक',
 618+ 'dt_xml_id' => 'आईडी',
 619+ 'dt_xml_freetext' => 'मुक्त पाठ',
 620+);
 621+
 622+/** Croatian (Hrvatski)
 623+ * @author Dalibor Bosits
 624+ */
 625+$messages['hr'] = array(
 626+ 'dt_viewxml_categories' => 'Kategorije',
 627+ 'dt_xml_namespace' => 'Imenski prostor',
 628+ 'dt_xml_page' => 'Stranica',
 629+);
 630+
 631+/** Upper Sorbian (Hornjoserbsce)
 632+ * @author Michawiki
 633+ */
 634+$messages['hsb'] = array(
 635+ 'dt-desc' => 'Dowola importowanje a eksportowanje datow, kotrež su we wołanjach předłohow wobsahowane',
 636+ 'viewxml' => 'XML wobhladać',
 637+ 'dt_viewxml_docu' => 'Prošu wubjer ze slědowacych kategorijow a mjenowych rumow, zo by w XML-formaće wobhladał.',
 638+ 'dt_viewxml_categories' => 'Kategorije',
 639+ 'dt_viewxml_namespaces' => 'Mjenowe rumy',
 640+ 'dt_viewxml_simplifiedformat' => 'Zjednorjeny format',
 641+ 'dt_xml_namespace' => 'Mjenowy rum',
 642+ 'dt_xml_pages' => 'Strony',
 643+ 'dt_xml_page' => 'Strona',
 644+ 'dt_xml_template' => 'Předłoha',
 645+ 'dt_xml_field' => 'Polo',
 646+ 'dt_xml_name' => 'Mjeno',
 647+ 'dt_xml_title' => 'Titul',
 648+ 'dt_xml_id' => 'Id',
 649+ 'dt_xml_freetext' => 'Swobodny tekst',
 650+ 'importxml' => 'XML importować',
 651+ 'dt_import_selectfile' => 'Prošu wubjer dataju $1 za importowanje:',
 652+ 'dt_import_editsummary' => 'Importowanje $1',
 653+ 'dt_import_importing' => 'Importuje so...',
 654+ '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}}.',
 655+ 'importcsv' => 'Importowanje CSV',
 656+ 'dt_importcsv_badheader' => "Zmylk: hłowa špalty $1, '$2', dyrbi pak '$3', '$4' być pak formu 'mjeno_předłohi[mjeno_pola]' měć",
 657+ 'right-datatransferimport' => 'Daty importować',
 658+);
 659+
 660+/** Hungarian (Magyar)
 661+ * @author Dani
 662+ */
 663+$messages['hu'] = array(
 664+ 'dt-desc' => 'Lehetővé teszi a sablonhívásokban található adatszerkezetek importálását és exportálását',
 665+ 'viewxml' => 'XML megtekintése',
 666+ '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.',
 667+ 'dt_viewxml_categories' => 'Kategóriák',
 668+ 'dt_viewxml_namespaces' => 'Névterek',
 669+ 'dt_viewxml_simplifiedformat' => 'Egyszerűsített formátum',
 670+ 'dt_xml_namespace' => 'Névtér',
 671+ 'dt_xml_page' => 'Lap',
 672+ 'dt_xml_field' => 'Mező',
 673+ 'dt_xml_name' => 'Név',
 674+ 'dt_xml_title' => 'Cím',
 675+ 'dt_xml_id' => 'Azonosító',
 676+ 'dt_xml_freetext' => 'Szabad szöveg',
 677+);
 678+
 679+/** Interlingua (Interlingua)
 680+ * @author McDutchie
 681+ */
 682+$messages['ia'] = array(
 683+ 'dt-desc' => 'Permitte importar e exportar datos continite in appellos a patronos',
 684+ 'viewxml' => 'Vider XML',
 685+ 'dt_viewxml_docu' => 'Per favor selige inter le sequente categorias e spatios de nomines pro vider in formato XML.',
 686+ 'dt_viewxml_categories' => 'Categorias',
 687+ 'dt_viewxml_namespaces' => 'Spatios de nomines',
 688+ 'dt_viewxml_simplifiedformat' => 'Formato simplificate',
 689+ 'dt_xml_namespace' => 'Spatio de nomines',
 690+ 'dt_xml_pages' => 'Paginas',
 691+ 'dt_xml_page' => 'Pagina',
 692+ 'dt_xml_template' => 'Patrono',
 693+ 'dt_xml_field' => 'Campo',
 694+ 'dt_xml_name' => 'Nomine',
 695+ 'dt_xml_title' => 'Titulo',
 696+ 'dt_xml_id' => 'ID',
 697+ 'dt_xml_freetext' => 'Texto libere',
 698+ 'importxml' => 'Importar XML',
 699+ 'dt_import_selectfile' => 'Per favor selige le file $1 a importar:',
 700+ 'dt_import_editsummary' => 'Importation de $1',
 701+ 'dt_import_importing' => 'Importation in curso…',
 702+ 'dt_import_success' => '$1 {{PLURAL:$1|pagina|paginas}} essera create ex le file $2.',
 703+ 'importcsv' => 'Importar CSV',
 704+ 'dt_importcsv_badheader' => "Error: le capite del columna $1, '$2', debe esser '$3', '$4' o in le forma 'nomine_de_patrono[nomine_de_campo]'",
 705+ 'right-datatransferimport' => 'Importar datos',
 706+);
 707+
 708+/** Indonesian (Bahasa Indonesia)
 709+ * @author Irwangatot
 710+ * @author Rex
 711+ */
 712+$messages['id'] = array(
 713+ 'dt_xml_name' => 'Nama',
 714+ 'dt_xml_title' => 'Judul',
 715+);
 716+
 717+/** Ido (Ido)
 718+ * @author Malafaya
 719+ */
 720+$messages['io'] = array(
 721+ 'dt_xml_title' => 'Titulo',
 722+);
 723+
 724+/** Icelandic (Íslenska)
 725+ * @author S.Örvarr.S
 726+ */
 727+$messages['is'] = array(
 728+ 'dt_viewxml_namespaces' => 'Nafnrými',
 729+ 'dt_xml_page' => 'Síða',
 730+);
 731+
 732+/** Italian (Italiano)
 733+ * @author BrokenArrow
 734+ * @author Darth Kule
 735+ */
 736+$messages['it'] = array(
 737+ 'dt-desc' => "Permette l'importazione e l'esportazione di dati strutturati contenuti in chiamate a template",
 738+ 'viewxml' => 'Vedi XML',
 739+ 'dt_viewxml_docu' => 'Selezionare tra le categorie e namespace indicati di seguito quelli da visualizzare in formato XML.',
 740+ 'dt_viewxml_categories' => 'Categorie',
 741+ 'dt_viewxml_namespaces' => 'Namespace',
 742+ 'dt_viewxml_simplifiedformat' => 'Formato semplificato',
 743+ 'dt_xml_namespace' => 'Namespace',
 744+ 'dt_xml_page' => 'Pagina',
 745+ 'dt_xml_field' => 'Campo',
 746+ 'dt_xml_name' => 'Nome',
 747+ 'dt_xml_title' => 'Titolo',
 748+ 'dt_xml_id' => 'ID',
 749+ 'dt_xml_freetext' => 'Testo libero',
 750+);
 751+
 752+/** Japanese (日本語)
 753+ * @author Fryed-peach
 754+ * @author JtFuruhata
 755+ */
 756+$messages['ja'] = array(
 757+ 'dt-desc' => 'テンプレート呼び出しに関わるデータのインポートおよびエクスポートを可能にする',
 758+ 'viewxml' => 'XML表示',
 759+ 'dt_viewxml_docu' => 'XML形式で表示するカテゴリや名前空間を以下から選択してください。',
 760+ 'dt_viewxml_categories' => 'カテゴリ',
 761+ 'dt_viewxml_namespaces' => '名前空間',
 762+ 'dt_viewxml_simplifiedformat' => '簡易形式',
 763+ 'dt_xml_namespace' => '名前空間',
 764+ 'dt_xml_pages' => 'ページ群',
 765+ 'dt_xml_page' => 'ページ',
 766+ 'dt_xml_template' => 'テンプレート',
 767+ 'dt_xml_field' => 'フィールド',
 768+ 'dt_xml_name' => '名前',
 769+ 'dt_xml_title' => 'タイトル',
 770+ 'dt_xml_id' => 'ID',
 771+ 'dt_xml_freetext' => '自由形式テキスト',
 772+ 'importxml' => 'XMLインポート',
 773+ 'dt_import_selectfile' => 'インポートする $1 ファイルを選択してください:',
 774+ 'dt_import_editsummary' => '$1 のインポート',
 775+ 'dt_import_importing' => 'インポート中…',
 776+ 'dt_import_success' => '$2 ファイルからは $1個のページがインポートされます。',
 777+ 'importcsv' => 'CSVのインポート',
 778+ 'dt_importcsv_badheader' => 'エラー: 列 $1 のヘッダ「$2」は、「$3」もしくは「$4」であるか、または「テンプレート名[フィールド名]」という形式になっていなければなりません。',
 779+ 'right-datatransferimport' => 'データをインポートする',
 780+);
 781+
 782+/** Javanese (Basa Jawa)
 783+ * @author Meursault2004
 784+ */
 785+$messages['jv'] = array(
 786+ 'viewxml' => 'Ndeleng XML',
 787+ 'dt_viewxml_categories' => 'Kategori-kategori',
 788+ 'dt_viewxml_simplifiedformat' => 'Format prasaja',
 789+ 'dt_xml_namespace' => 'Bilik nama',
 790+ 'dt_xml_page' => 'Kaca',
 791+ 'dt_xml_name' => 'Jeneng',
 792+ 'dt_xml_title' => 'Irah-irahan (judhul)',
 793+ 'dt_xml_id' => 'ID',
 794+ 'dt_xml_freetext' => 'Tèks Bébas',
 795+);
 796+
 797+/** Khmer (ភាសាខ្មែរ)
 798+ * @author Chhorran
 799+ * @author Lovekhmer
 800+ * @author Thearith
 801+ */
 802+$messages['km'] = array(
 803+ 'viewxml' => 'មើល XML',
 804+ 'dt_viewxml_docu' => 'ជ្រើសយកក្នុងចំណោមចំណាត់ថ្នាក់ក្រុមនិងលំហឈ្មោះដើម្បីមើលជាទម្រង់ XML ។',
 805+ 'dt_viewxml_categories' => 'ចំណាត់ថ្នាក់ក្រុម',
 806+ 'dt_viewxml_namespaces' => 'លំហឈ្មោះ',
 807+ 'dt_viewxml_simplifiedformat' => 'ទម្រង់សាមញ្ញ',
 808+ 'dt_xml_namespace' => 'វាលឈ្មោះ',
 809+ 'dt_xml_page' => 'ទំព័រ',
 810+ 'dt_xml_name' => 'ឈ្មោះ',
 811+ 'dt_xml_title' => 'ចំណងជើង',
 812+ 'dt_xml_id' => 'អត្តសញ្ញាណ',
 813+ 'dt_xml_freetext' => 'អត្ថបទសេរី',
 814+);
 815+
 816+/** Kinaray-a (Kinaray-a)
 817+ * @author Jose77
 818+ */
 819+$messages['krj'] = array(
 820+ 'dt_viewxml_categories' => 'Manga Kategorya',
 821+ 'dt_xml_page' => 'Pahina',
 822+);
 823+
 824+/** Ripoarisch (Ripoarisch)
 825+ * @author Purodha
 826+ */
 827+$messages['ksh'] = array(
 828+ 'dt-desc' => 'Määt et müjjelesch, Date uß Schabloone ier Oproofe ze emporteere un ze exporteere.',
 829+ 'viewxml' => '<i lang="en">XML</i> beloore',
 830+ 'dt_viewxml_docu' => 'Don ußsöke, wat fö_n Saachjruppe un Appachtemangs De em <i lang="en">XML</i> Fommaat aanloore wells.',
 831+ 'dt_viewxml_categories' => 'Saachjroppe',
 832+ 'dt_viewxml_namespaces' => 'Appachtemangs',
 833+ 'dt_viewxml_simplifiedformat' => 'Em eijfachere Fommaat',
 834+ 'dt_xml_namespace' => 'Appachtemang',
 835+ 'dt_xml_pages' => 'Sigge',
 836+ 'dt_xml_page' => 'Sigg',
 837+ 'dt_xml_template' => 'Schablohn',
 838+ 'dt_xml_field' => 'Felldt',
 839+ 'dt_xml_name' => 'Name',
 840+ 'dt_xml_title' => 'Tėttel',
 841+ 'dt_xml_id' => 'Kännong',
 842+ 'dt_xml_freetext' => 'Freije Täx',
 843+ 'importxml' => '<i lang="en">XML</i> Empotteere',
 844+ 'dt_import_selectfile' => 'Söhk de <i lang="en">$1</i>-Dattei för zem Empotteere uß:',
 845+ 'dt_import_editsummary' => 'uss ene <i lang="en">$1</i>-Datei empotteet',
 846+ 'dt_import_importing' => 'Ben aam Empotteere{{int:Ellipsis}}',
 847+ '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.',
 848+ 'importcsv' => '<i lang="en">CSV</i>-Dattei empoteere',
 849+ '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.',
 850+ 'right-datatransferimport' => 'Daate empoteere',
 851+);
 852+
 853+/** Cornish (Kernewek)
 854+ * @author Kw-Moon
 855+ */
 856+$messages['kw'] = array(
 857+ 'dt_viewxml_categories' => 'Klasyansow',
 858+ 'dt_xml_page' => 'Folen',
 859+);
 860+
 861+/** Luxembourgish (Lëtzebuergesch)
 862+ * @author Robby
 863+ */
 864+$messages['lb'] = array(
 865+ 'dt-desc' => "Erlaabt et Daten déi an Opruffer vu schabloune benotzt ginn z'importéieren an z'exportéieren",
 866+ 'viewxml' => 'XML weisen',
 867+ 'dt_viewxml_docu' => 'Wielt w.e.g. ënnert dëse Kategorien an Nimmraim fir am XML-Format unzeweisen.',
 868+ 'dt_viewxml_categories' => 'Kategorien',
 869+ 'dt_viewxml_namespaces' => 'Nummraim',
 870+ 'dt_viewxml_simplifiedformat' => 'Vereinfachte Format',
 871+ 'dt_xml_namespace' => 'Nummraum',
 872+ 'dt_xml_pages' => 'Säiten',
 873+ 'dt_xml_page' => 'Säit',
 874+ 'dt_xml_template' => 'Schabloun',
 875+ 'dt_xml_field' => 'Feld',
 876+ 'dt_xml_name' => 'Numm',
 877+ 'dt_xml_title' => 'Titel',
 878+ 'dt_xml_id' => 'Nummer',
 879+ 'dt_xml_freetext' => 'Fräien Text',
 880+ 'importxml' => 'XML importéieren',
 881+ 'dt_import_selectfile' => "Sicht de(n) $1-Fichier eraus fir z'importéieren:",
 882+ 'dt_import_editsummary' => '$1 importéieren',
 883+ 'dt_import_importing' => 'Import am gaang ...',
 884+ 'dt_import_success' => '$1 {{PLURAL:$1|Säit gëtt|Säite ginn}} aus dem $2-Fichier ugeluecht.',
 885+ 'importcsv' => 'CSV importéieren',
 886+ 'right-datatransferimport' => 'Donnéeën importéieren',
 887+);
 888+
 889+/** Limburgish (Limburgs)
 890+ * @author Remember the dot
 891+ */
 892+$messages['li'] = array(
 893+ 'dt_xml_page' => 'Pazjena',
 894+);
 895+
 896+/** Lithuanian (Lietuvių)
 897+ * @author Tomasdd
 898+ */
 899+$messages['lt'] = array(
 900+ 'dt_viewxml_categories' => 'Kategorijos',
 901+);
 902+
 903+/** Eastern Mari (Олык Марий)
 904+ * @author Сай
 905+ */
 906+$messages['mhr'] = array(
 907+ 'dt_xml_namespace' => 'Лӱм-влакын кумдыкышт',
 908+ 'dt_xml_page' => 'Лаштык',
 909+);
 910+
 911+/** Malayalam (മലയാളം)
 912+ * @author Shijualex
 913+ */
 914+$messages['ml'] = array(
 915+ 'viewxml' => 'XML കാണുക',
 916+ 'dt_viewxml_categories' => 'വിഭാഗങ്ങള്‍',
 917+ 'dt_viewxml_namespaces' => 'നേംസ്പേസുകള്‍',
 918+ 'dt_viewxml_simplifiedformat' => 'ലളിതവത്ക്കരിക്കപ്പെട്ട ഫോര്‍മാറ്റ്',
 919+ 'dt_xml_namespace' => 'നേംസ്പേസ്',
 920+ 'dt_xml_page' => 'താള്‍',
 921+ 'dt_xml_field' => 'ഫീല്‍ഡ്',
 922+ 'dt_xml_name' => 'പേര്‌',
 923+ 'dt_xml_title' => 'ശീര്‍ഷകം',
 924+ 'dt_xml_id' => 'ഐഡി',
 925+);
 926+
 927+/** Marathi (मराठी)
 928+ * @author Kaustubh
 929+ */
 930+$messages['mr'] = array(
 931+ 'dt-desc' => 'साचा कॉल मध्ये असणार्‍या डाटाची आयात निर्यात करण्याची परवानगी देतो',
 932+ 'viewxml' => 'XML पहा',
 933+ 'dt_viewxml_docu' => 'कॄपया XML मध्ये पाहण्यासाठी खालीलपैकी वर्ग व नामविश्वे निवडा.',
 934+ 'dt_viewxml_categories' => 'वर्ग',
 935+ 'dt_viewxml_namespaces' => 'नामविश्वे',
 936+ 'dt_viewxml_simplifiedformat' => 'सोप्या प्रकारे',
 937+ 'dt_xml_namespace' => 'नामविश्व',
 938+ 'dt_xml_page' => 'पान',
 939+ 'dt_xml_field' => 'रकाना',
 940+ 'dt_xml_name' => 'नाव',
 941+ 'dt_xml_title' => 'शीर्षक',
 942+ 'dt_xml_id' => 'क्रमांक (आयडी)',
 943+ 'dt_xml_freetext' => 'मुक्त मजकूर',
 944+);
 945+
 946+/** Mirandese (Mirandés)
 947+ * @author Malafaya
 948+ */
 949+$messages['mwl'] = array(
 950+ 'dt_xml_page' => 'Páigina',
 951+);
 952+
 953+/** Erzya (Эрзянь)
 954+ * @author Botuzhaleny-sodamo
 955+ */
 956+$messages['myv'] = array(
 957+ 'dt_viewxml_categories' => 'Категорият',
 958+ 'dt_viewxml_namespaces' => 'Лем потмот',
 959+ 'dt_xml_page' => 'Лопа',
 960+ 'dt_xml_field' => 'Пакся',
 961+ 'dt_xml_name' => 'Лемезэ',
 962+ 'dt_xml_title' => 'Конякс',
 963+);
 964+
 965+/** Nahuatl (Nāhuatl)
 966+ * @author Fluence
 967+ */
 968+$messages['nah'] = array(
 969+ 'dt_viewxml_categories' => 'Neneuhcāyōtl',
 970+ 'dt_viewxml_namespaces' => 'Tōcātzin',
 971+ 'dt_xml_namespace' => 'Tōcātzin',
 972+ 'dt_xml_page' => 'Zāzanilli',
 973+ 'dt_xml_name' => 'Tōcāitl',
 974+ 'dt_xml_title' => 'Tōcāitl',
 975+ 'dt_xml_id' => 'ID',
 976+);
 977+
 978+/** Low German (Plattdüütsch)
 979+ * @author Slomox
 980+ */
 981+$messages['nds'] = array(
 982+ 'dt_xml_name' => 'Naam',
 983+);
 984+
 985+/** Dutch (Nederlands)
 986+ * @author Siebrand
 987+ */
 988+$messages['nl'] = array(
 989+ 'dt-desc' => 'Maakt het importeren en exporteren van gestructureerde gegevens in sjabloonaanroepen mogelijk',
 990+ 'viewxml' => 'XML bekijken',
 991+ 'dt_viewxml_docu' => 'Selecteer uit de volgende categorieën en naamruimten om in XML-formaat te bekijken.',
 992+ 'dt_viewxml_categories' => 'Categorieën',
 993+ 'dt_viewxml_namespaces' => 'Naamruimten',
 994+ 'dt_viewxml_simplifiedformat' => 'Vereenvoudigd formaat',
 995+ 'dt_xml_namespace' => 'Naamruimte',
 996+ 'dt_xml_pages' => "Pagina's",
 997+ 'dt_xml_page' => 'Pagina',
 998+ 'dt_xml_template' => 'Sjabloon',
 999+ 'dt_xml_field' => 'Veld',
 1000+ 'dt_xml_name' => 'Naam',
 1001+ 'dt_xml_title' => 'Titel',
 1002+ 'dt_xml_id' => 'ID',
 1003+ 'dt_xml_freetext' => 'Vrije tekst',
 1004+ 'importxml' => 'XML importeren',
 1005+ 'dt_import_selectfile' => 'Selecteer het te importeren bestand van het type $1:',
 1006+ 'dt_import_editsummary' => '$1-import',
 1007+ 'dt_import_importing' => 'Bezig met importeren…',
 1008+ 'dt_import_success' => "Uit het $2-bestand {{PLURAL:$1|wordt één pagina|worden $1 pagina's}} geïmporteerd.",
 1009+ 'importcsv' => 'CSV importeren',
 1010+ 'dt_importcsv_badheader' => 'Fout: De kop van kolom $1, "$2", moet "$3" of "$4" zijn, of in de vorm "sjabloonnaam[veldnaam]" genoteerd worden.',
 1011+ 'right-datatransferimport' => 'Gegevens importeren',
 1012+);
 1013+
 1014+/** Norwegian Nynorsk (‪Norsk (nynorsk)‬)
 1015+ * @author Harald Khan
 1016+ * @author Jon Harald Søby
 1017+ */
 1018+$messages['nn'] = array(
 1019+ 'dt-desc' => 'Gjer det mogleg å importera og eksportera data i maloppkallingar',
 1020+ 'viewxml' => 'Syn XML',
 1021+ 'dt_viewxml_docu' => 'Vel mellom følgjande kategoriar og namnerom for å syna dei i XML-format.',
 1022+ 'dt_viewxml_categories' => 'Kategoriar',
 1023+ 'dt_viewxml_namespaces' => 'Namnerom',
 1024+ 'dt_viewxml_simplifiedformat' => 'Forenkla format',
 1025+ 'dt_xml_namespace' => 'Namnerom',
 1026+ 'dt_xml_pages' => 'Sider',
 1027+ 'dt_xml_page' => 'Side',
 1028+ 'dt_xml_template' => 'Mal',
 1029+ 'dt_xml_field' => 'Felt',
 1030+ 'dt_xml_name' => 'Namn',
 1031+ 'dt_xml_title' => 'Tittel',
 1032+ 'dt_xml_id' => 'ID',
 1033+ 'dt_xml_freetext' => 'Fritekst',
 1034+ 'importxml' => 'Importer XML',
 1035+ 'dt_import_selectfile' => 'Vel $1-fila som skal verta importert:',
 1036+ 'dt_import_editsummary' => '$1-importering',
 1037+ 'dt_import_importing' => 'Importerer...',
 1038+ 'dt_import_success' => '{{PLURAL:$1|Éi side vil verta importert|$1 sider vil verta importerte}} frå $2-fila.',
 1039+);
 1040+
 1041+/** Norwegian (bokmål)‬ (‪Norsk (bokmål)‬)
 1042+ * @author Jon Harald Søby
 1043+ * @author Nghtwlkr
 1044+ */
 1045+$messages['no'] = array(
 1046+ 'dt-desc' => 'Gjør det mulig å importere og eksportere data som finnes i maloppkallinger',
 1047+ 'viewxml' => 'Se XML',
 1048+ 'dt_viewxml_docu' => 'Velg blant følgende kategorier og navnerom for å se dem i XML-format',
 1049+ 'dt_viewxml_categories' => 'Kategorier',
 1050+ 'dt_viewxml_namespaces' => 'Navnerom',
 1051+ 'dt_viewxml_simplifiedformat' => 'Forenklet format',
 1052+ 'dt_xml_namespace' => 'Navnerom',
 1053+ 'dt_xml_pages' => 'Sider',
 1054+ 'dt_xml_page' => 'Side',
 1055+ 'dt_xml_template' => 'Mal',
 1056+ 'dt_xml_field' => 'Felt',
 1057+ 'dt_xml_name' => 'Navn',
 1058+ 'dt_xml_title' => 'Tittel',
 1059+ 'dt_xml_id' => 'ID',
 1060+ 'dt_xml_freetext' => 'Fritekst',
 1061+ 'importxml' => 'Importer XML',
 1062+ 'dt_import_selectfile' => 'Vennligst velg $1-filen som skal importeres:',
 1063+ 'dt_import_editsummary' => '$1-importering',
 1064+ 'dt_import_importing' => 'Importerer...',
 1065+ 'dt_import_success' => '{{PLURAL:$1|Én side|$1 sider}} vil bli importert fra $2-filen.',
 1066+);
 1067+
 1068+/** Occitan (Occitan)
 1069+ * @author Cedric31
 1070+ */
 1071+$messages['oc'] = array(
 1072+ 'dt-desc' => "Permet l’impòrt e l’expòrt de donadas contengudas dins d'apèls de modèls",
 1073+ 'viewxml' => 'Veire XML',
 1074+ 'dt_viewxml_docu' => 'Secconatz demest las categorias e los espacis de nomenatges per visionar en format XML.',
 1075+ 'dt_viewxml_categories' => 'Categorias',
 1076+ 'dt_viewxml_namespaces' => 'Espacis de nomenatge',
 1077+ 'dt_viewxml_simplifiedformat' => 'Format simplificat',
 1078+ 'dt_xml_namespace' => 'Espaci de nom',
 1079+ 'dt_xml_pages' => 'Paginas',
 1080+ 'dt_xml_page' => 'Pagina',
 1081+ 'dt_xml_template' => 'Modèl',
 1082+ 'dt_xml_field' => 'Camp',
 1083+ 'dt_xml_name' => 'Nom',
 1084+ 'dt_xml_title' => 'Títol',
 1085+ 'dt_xml_id' => 'ID',
 1086+ 'dt_xml_freetext' => 'Tèxte Liure',
 1087+ 'importxml' => 'Impòrt en XML',
 1088+ 'dt_import_selectfile' => "Seleccionatz lo fichièr $1 d'importar :",
 1089+ 'dt_import_editsummary' => 'Importacion $1',
 1090+ 'dt_import_importing' => 'Impòrt en cors...',
 1091+ 'dt_import_success' => '$1 {{PLURAL:$1|pagina serà creada|paginas seràn creadas}} dempuèi lo fichièr $2.',
 1092+ 'importcsv' => 'Impòrt CSV',
 1093+ '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] »',
 1094+ 'right-datatransferimport' => 'Importar de donadas',
 1095+);
 1096+
 1097+/** Ossetic (Иронау)
 1098+ * @author Amikeco
 1099+ */
 1100+$messages['os'] = array(
 1101+ 'dt_xml_page' => 'Фарс',
 1102+ 'dt_xml_title' => 'Сæргонд',
 1103+);
 1104+
 1105+/** Deitsch (Deitsch)
 1106+ * @author Xqt
 1107+ */
 1108+$messages['pdc'] = array(
 1109+ 'dt_xml_page' => 'Blatt',
 1110+);
 1111+
 1112+/** Polish (Polski)
 1113+ * @author McMonster
 1114+ * @author Sp5uhe
 1115+ * @author Wpedzich
 1116+ */
 1117+$messages['pl'] = array(
 1118+ 'dt-desc' => 'Pozwala na importowanie i eksportowanie danych zawartych w wywołaniach szablonu',
 1119+ 'viewxml' => 'Podgląd XML',
 1120+ 'dt_viewxml_docu' => 'Wybierz, które spośród następujących kategorii i przestrzeni nazw chcesz podejrzeć w formacie XML.',
 1121+ 'dt_viewxml_categories' => 'Kategorie',
 1122+ 'dt_viewxml_namespaces' => 'Przestrzenie nazw',
 1123+ 'dt_viewxml_simplifiedformat' => 'Format uproszczony',
 1124+ 'dt_xml_namespace' => 'Przestrzeń nazw',
 1125+ 'dt_xml_page' => 'Strona',
 1126+ 'dt_xml_field' => 'Pole',
 1127+ 'dt_xml_name' => 'Nazwa',
 1128+ 'dt_xml_title' => 'Tytuł',
 1129+ 'dt_xml_id' => 'ID',
 1130+ 'dt_xml_freetext' => 'Dowolny tekst',
 1131+);
 1132+
 1133+/** Pashto (پښتو)
 1134+ * @author Ahmed-Najib-Biabani-Ibrahimkhel
 1135+ */
 1136+$messages['ps'] = array(
 1137+ 'dt_viewxml_categories' => 'وېشنيزې',
 1138+ 'dt_viewxml_namespaces' => 'نوم-تشيالونه',
 1139+ 'dt_xml_namespace' => 'نوم-تشيال',
 1140+ 'dt_xml_page' => 'مخ',
 1141+ 'dt_xml_name' => 'نوم',
 1142+ 'dt_xml_title' => 'سرليک',
 1143+ 'dt_xml_freetext' => 'خپلواکه متن',
 1144+);
 1145+
 1146+/** Portuguese (Português)
 1147+ * @author Lijealso
 1148+ * @author Malafaya
 1149+ */
 1150+$messages['pt'] = array(
 1151+ 'dt-desc' => 'Permite importação e exportação de dados contidos em chamadas de predefinições',
 1152+ 'viewxml' => 'Ver XML',
 1153+ 'dt_viewxml_docu' => 'Por favor, seleccione de entre as categorias e espaços nominais seguintes para ver em formato XML.',
 1154+ 'dt_viewxml_categories' => 'Categorias',
 1155+ 'dt_viewxml_namespaces' => 'Espaços nominais',
 1156+ 'dt_viewxml_simplifiedformat' => 'Formato simplificado',
 1157+ 'dt_xml_namespace' => 'Espaço nominal',
 1158+ 'dt_xml_pages' => 'Páginas',
 1159+ 'dt_xml_page' => 'Página',
 1160+ 'dt_xml_template' => 'Predefinição',
 1161+ 'dt_xml_field' => 'Campo',
 1162+ 'dt_xml_name' => 'Nome',
 1163+ 'dt_xml_title' => 'Título',
 1164+ 'dt_xml_id' => 'ID',
 1165+ 'dt_xml_freetext' => 'Texto Livre',
 1166+ 'importxml' => 'Importar XML',
 1167+ 'dt_import_selectfile' => 'Por favor, selecione o ficheiro $1 a importar:',
 1168+ 'dt_import_editsummary' => 'Importação de $1',
 1169+ 'dt_import_importing' => 'Importando...',
 1170+ 'dt_import_success' => '{{PLURAL:$1|A página será importada|As páginas serão importadas}} a partir do ficheiro $2.',
 1171+ 'importcsv' => 'Importar CSV',
 1172+ 'right-datatransferimport' => 'Importar dados',
 1173+);
 1174+
 1175+/** Brazilian Portuguese (Português do Brasil)
 1176+ * @author Eduardo.mps
 1177+ */
 1178+$messages['pt-br'] = array(
 1179+ 'dt-desc' => 'Permite a importação e exportação de dados contidos em chamadas de predefinições',
 1180+ 'viewxml' => 'Ver XML',
 1181+ 'dt_viewxml_docu' => 'Por favor, selecione dentre as categorias e espaços nominais seguintes para ver em formato XML.',
 1182+ 'dt_viewxml_categories' => 'Categorias',
 1183+ 'dt_viewxml_namespaces' => 'Espaços nominais',
 1184+ 'dt_viewxml_simplifiedformat' => 'Formato simplificado',
 1185+ 'dt_xml_namespace' => 'Espaço nominal',
 1186+ 'dt_xml_pages' => 'Páginas',
 1187+ 'dt_xml_page' => 'Página',
 1188+ 'dt_xml_template' => 'Predefinição',
 1189+ 'dt_xml_field' => 'Campo',
 1190+ 'dt_xml_name' => 'Nome',
 1191+ 'dt_xml_title' => 'Título',
 1192+ 'dt_xml_id' => 'ID',
 1193+ 'dt_xml_freetext' => 'Texto Livre',
 1194+ 'importxml' => 'Importar XML',
 1195+ 'dt_import_selectfile' => 'Por favor selecione o arquivo $1 para importar:',
 1196+ 'dt_import_editsummary' => 'Importação de $1',
 1197+ 'dt_import_importing' => 'Importando...',
 1198+ 'dt_import_success' => '$1 {{PLURAL:$1|página será importada|páginas serão importadas}} do arquivo $2.',
 1199+);
 1200+
 1201+/** Romanian (Română)
 1202+ * @author KlaudiuMihaila
 1203+ */
 1204+$messages['ro'] = array(
 1205+ 'viewxml' => 'Vizualizează XML',
 1206+ 'dt_viewxml_categories' => 'Categorii',
 1207+ 'dt_viewxml_namespaces' => 'Spaţii de nume',
 1208+ 'dt_viewxml_simplifiedformat' => 'Format simplificat',
 1209+ 'dt_xml_namespace' => 'Spaţiu de nume',
 1210+ 'dt_xml_page' => 'Pagină',
 1211+ 'dt_xml_field' => 'Câmp',
 1212+ 'dt_xml_name' => 'Nume',
 1213+ 'dt_xml_title' => 'Titlu',
 1214+ 'dt_xml_id' => 'ID',
 1215+);
 1216+
 1217+/** Tarandíne (Tarandíne)
 1218+ * @author Joetaras
 1219+ */
 1220+$messages['roa-tara'] = array(
 1221+ 'dt-desc' => "Permètte de 'mbortà e esportà date strutturate ca stonne jndr'à le chiamate a le template",
 1222+ 'viewxml' => "Vide l'XML",
 1223+ 'dt_viewxml_docu' => "Pe piacere scacchie ìmbrà le categorije seguende e le namespace seguende pe vedè 'u formate XML.",
 1224+ 'dt_viewxml_categories' => 'Categorije',
 1225+ 'dt_viewxml_namespaces' => 'Namespace',
 1226+ 'dt_viewxml_simplifiedformat' => 'Formate semblifichete',
 1227+ 'dt_xml_namespace' => 'Namespace',
 1228+ 'dt_xml_pages' => 'Pàggene',
 1229+ 'dt_xml_page' => 'Pàgene',
 1230+ 'dt_xml_template' => 'Template',
 1231+ 'dt_xml_field' => 'Cambe',
 1232+ 'dt_xml_name' => 'Nome',
 1233+ 'dt_xml_title' => 'Titele',
 1234+ 'dt_xml_id' => 'Codece (ID)',
 1235+ 'dt_xml_freetext' => 'Teste libbere',
 1236+ 'importxml' => "'Mborte XML",
 1237+);
 1238+
 1239+/** Russian (Русский)
 1240+ * @author Innv
 1241+ * @author Александр Сигачёв
 1242+ */
 1243+$messages['ru'] = array(
 1244+ 'dt-desc' => 'Позволяет импортировать и экспортировать структурированные данные, содержащиеся в вызовах шаблонов',
 1245+ 'viewxml' => 'Просмотр XML',
 1246+ 'dt_viewxml_docu' => 'Пожалуйста, выберите категории и пространства имён для просмотра в формате XML.',
 1247+ 'dt_viewxml_categories' => 'Категории',
 1248+ 'dt_viewxml_namespaces' => 'Пространства имён',
 1249+ 'dt_viewxml_simplifiedformat' => 'Упрощённый формат',
 1250+ 'dt_xml_namespace' => 'Пространство имён',
 1251+ 'dt_xml_pages' => 'Страницы',
 1252+ 'dt_xml_page' => 'Страница',
 1253+ 'dt_xml_template' => 'Шаблон',
 1254+ 'dt_xml_field' => 'Поле',
 1255+ 'dt_xml_name' => 'Имя',
 1256+ 'dt_xml_title' => 'Заголовок',
 1257+ 'dt_xml_id' => 'ID',
 1258+ 'dt_xml_freetext' => 'Свободный текст',
 1259+ 'dt_import_importing' => 'Импортирование...',
 1260+);
 1261+
 1262+/** Slovak (Slovenčina)
 1263+ * @author Helix84
 1264+ */
 1265+$messages['sk'] = array(
 1266+ 'dt-desc' => 'Umožňuje import a export údajov obsiahnutých v bunkách šablón',
 1267+ 'viewxml' => 'Zobraziť XML',
 1268+ 'dt_viewxml_docu' => 'Prosím, vyberte ktorý spomedzi nasledovných kategórií a menných priestorov zobraziť vo formáte XML.',
 1269+ 'dt_viewxml_categories' => 'Kategórie',
 1270+ 'dt_viewxml_namespaces' => 'Menné priestory',
 1271+ 'dt_viewxml_simplifiedformat' => 'Zjednodušený formát',
 1272+ 'dt_xml_namespace' => 'Menný priestor',
 1273+ 'dt_xml_pages' => 'Stránky',
 1274+ 'dt_xml_page' => 'Stránka',
 1275+ 'dt_xml_template' => 'Šablóna',
 1276+ 'dt_xml_field' => 'Pole',
 1277+ 'dt_xml_name' => 'Názov',
 1278+ 'dt_xml_title' => 'Nadpis',
 1279+ 'dt_xml_id' => 'ID',
 1280+ 'dt_xml_freetext' => 'Voľný text',
 1281+ 'importxml' => 'Importovať XML',
 1282+ 'dt_import_selectfile' => 'Prosím, vyberte $1 súbor, ktorý chcete importovať:',
 1283+ 'dt_import_editsummary' => 'Import $1',
 1284+ 'dt_import_importing' => 'Prebieha import...',
 1285+ 'dt_import_success' => 'Z $2 súboru sa {{PLURAL:$1|importuje $1 stránka|importujú $1 stránky|importuje $1 stránok}}.',
 1286+ 'importcsv' => 'Import CSV',
 1287+ '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]“',
 1288+ 'right-datatransferimport' => 'Importovať údaje',
 1289+);
 1290+
 1291+/** Serbian Cyrillic ekavian (ћирилица)
 1292+ * @author Sasa Stefanovic
 1293+ * @author Михајло Анђелковић
 1294+ */
 1295+$messages['sr-ec'] = array(
 1296+ 'viewxml' => 'Види XML',
 1297+ 'dt_viewxml_categories' => 'Категорије',
 1298+ 'dt_viewxml_namespaces' => 'Именски простори',
 1299+ 'dt_viewxml_simplifiedformat' => 'Поједностављени формат',
 1300+ 'dt_xml_namespace' => 'Именски простор',
 1301+ 'dt_xml_pages' => 'Чланци',
 1302+ 'dt_xml_page' => 'Страна',
 1303+ 'dt_xml_template' => 'Шаблон',
 1304+ 'dt_xml_field' => 'Поље',
 1305+ 'dt_xml_name' => 'Име',
 1306+ 'dt_xml_title' => 'Наслов',
 1307+ 'dt_xml_id' => 'ID',
 1308+);
 1309+
 1310+/** Seeltersk (Seeltersk)
 1311+ * @author Pyt
 1312+ */
 1313+$messages['stq'] = array(
 1314+ 'dt-desc' => 'Ferlööwet dän Import un Export fon strukturierde Doaten, do der in Aproupen un Foarloagen ferwoand wäide.',
 1315+ 'viewxml' => 'XML ankiekje',
 1316+ 'dt_viewxml_docu' => 'Wääl uut, wäkke Kategorien in dät XML-Formoat anwiesd wäide schällen.',
 1317+ 'dt_viewxml_categories' => 'Kategorien',
 1318+ 'dt_viewxml_namespaces' => 'Noomensruume',
 1319+ 'dt_viewxml_simplifiedformat' => 'Fereenfacht Formoat',
 1320+ 'dt_xml_namespace' => 'Noomensruum',
 1321+ 'dt_xml_page' => 'Siede',
 1322+ 'dt_xml_field' => 'Fäild',
 1323+ 'dt_xml_name' => 'Noome',
 1324+ 'dt_xml_title' => 'Tittel',
 1325+);
 1326+
 1327+/** Sundanese (Basa Sunda)
 1328+ * @author Irwangatot
 1329+ */
 1330+$messages['su'] = array(
 1331+ 'dt_viewxml_namespaces' => 'Ngaranspasi',
 1332+);
 1333+
 1334+/** Swedish (Svenska)
 1335+ * @author Gabbe.g
 1336+ * @author Lejonel
 1337+ * @author M.M.S.
 1338+ */
 1339+$messages['sv'] = array(
 1340+ 'dt-desc' => 'Tillåter import och export av strukturerad data som finns i mallanrop',
 1341+ 'viewxml' => 'Visa XML',
 1342+ 'dt_viewxml_docu' => 'Välj vilka av följande kategorier och namnrymder som ska visas i XML-format.',
 1343+ 'dt_viewxml_categories' => 'Kategorier',
 1344+ 'dt_viewxml_namespaces' => 'Namnrymder',
 1345+ 'dt_viewxml_simplifiedformat' => 'Förenklat format',
 1346+ 'dt_xml_namespace' => 'Namnrymd',
 1347+ 'dt_xml_pages' => 'Sidor',
 1348+ 'dt_xml_page' => 'Sida',
 1349+ 'dt_xml_template' => 'Mall',
 1350+ 'dt_xml_field' => 'Fält',
 1351+ 'dt_xml_name' => 'Namn',
 1352+ 'dt_xml_title' => 'Titel',
 1353+ 'dt_xml_id' => 'ID',
 1354+ 'dt_xml_freetext' => 'Fritext',
 1355+);
 1356+
 1357+/** Silesian (Ślůnski)
 1358+ * @author Herr Kriss
 1359+ */
 1360+$messages['szl'] = array(
 1361+ 'dt_xml_page' => 'Zajta',
 1362+ 'dt_xml_name' => 'Mjano',
 1363+);
 1364+
 1365+/** Tamil (தமிழ்)
 1366+ * @author Trengarasu
 1367+ * @author Ulmo
 1368+ */
 1369+$messages['ta'] = array(
 1370+ 'dt_viewxml_categories' => 'பகுப்புகள்',
 1371+ 'dt_xml_namespace' => 'பெயர்வெளி',
 1372+);
 1373+
 1374+/** Telugu (తెలుగు)
 1375+ * @author Veeven
 1376+ */
 1377+$messages['te'] = array(
 1378+ 'viewxml' => 'XMLని చూడండి',
 1379+ 'dt_viewxml_categories' => 'వర్గాలు',
 1380+ 'dt_viewxml_namespaces' => 'పేరుబరులు',
 1381+ 'dt_xml_namespace' => 'పేరుబరి',
 1382+ 'dt_xml_pages' => 'పేజీలు',
 1383+ 'dt_xml_page' => 'పేజీ',
 1384+ 'dt_xml_name' => 'పేరు',
 1385+ 'dt_xml_title' => 'శీర్షిక',
 1386+ 'dt_xml_id' => 'ఐడీ',
 1387+ 'dt_xml_freetext' => 'స్వేచ్ఛా పాఠ్యం',
 1388+);
 1389+
 1390+/** Tetum (Tetun)
 1391+ * @author MF-Warburg
 1392+ */
 1393+$messages['tet'] = array(
 1394+ 'dt_viewxml_categories' => 'Kategoria sira',
 1395+ 'dt_xml_namespace' => 'Espasu pájina nian',
 1396+ 'dt_xml_page' => 'Pájina',
 1397+ 'dt_xml_name' => 'Naran',
 1398+ 'dt_xml_title' => 'Títulu:',
 1399+ 'dt_xml_id' => 'ID',
 1400+);
 1401+
 1402+/** Tajik (Cyrillic) (Тоҷикӣ (Cyrillic))
 1403+ * @author Ibrahim
 1404+ */
 1405+$messages['tg-cyrl'] = array(
 1406+ 'dt_viewxml_categories' => 'Гурӯҳҳо',
 1407+ 'dt_viewxml_namespaces' => 'Фазоҳои ном',
 1408+ 'dt_xml_namespace' => 'Фазоином',
 1409+ 'dt_xml_page' => 'Саҳифа',
 1410+ 'dt_xml_name' => 'Ном',
 1411+ 'dt_xml_title' => 'Унвон',
 1412+ 'dt_xml_freetext' => 'Матни дилхоҳ',
 1413+);
 1414+
 1415+/** Thai (ไทย)
 1416+ * @author Octahedron80
 1417+ */
 1418+$messages['th'] = array(
 1419+ 'dt_viewxml_categories' => 'หมวดหมู่',
 1420+ 'dt_xml_namespace' => 'เนมสเปซ',
 1421+);
 1422+
 1423+/** Tagalog (Tagalog)
 1424+ * @author AnakngAraw
 1425+ */
 1426+$messages['tl'] = array(
 1427+ 'dt-desc' => 'Nagpapahintulot sa pag-aangkat at pagluluwas ng mga datong nasa loob ng mga pagtawag sa suleras',
 1428+ 'viewxml' => 'Tingnan ang XML',
 1429+ 'dt_viewxml_docu' => 'Pumili po lamang mula sa sumusunod na mga kaurian at mga espasyo ng pangalan upang makita ang anyong XML.',
 1430+ 'dt_viewxml_categories' => 'Mga kaurian',
 1431+ 'dt_viewxml_namespaces' => 'Mga espasyo ng pangalan',
 1432+ 'dt_viewxml_simplifiedformat' => 'Pinapayak na anyo',
 1433+ 'dt_xml_namespace' => 'Espasyo ng pangalan',
 1434+ 'dt_xml_pages' => 'Mga pahina',
 1435+ 'dt_xml_page' => 'Pahina',
 1436+ 'dt_xml_template' => 'Suleras',
 1437+ 'dt_xml_field' => 'Hanay',
 1438+ 'dt_xml_name' => 'Pangalan',
 1439+ 'dt_xml_title' => 'Pamagat',
 1440+ 'dt_xml_id' => 'ID',
 1441+ 'dt_xml_freetext' => 'Malayang Teksto',
 1442+ 'importxml' => 'Angkatin ang XML',
 1443+ 'dt_import_selectfile' => 'Pakipili ang talaksang $1 na aangkatin:',
 1444+ 'dt_import_editsummary' => 'Angkat ng $1',
 1445+ 'dt_import_importing' => 'Inaangkat...',
 1446+ 'dt_import_success' => '$1 {{PLURAL:$1|pahina|mga pahina}} ang aangkatin mula sa talaksang $2.',
 1447+);
 1448+
 1449+/** Turkish (Türkçe)
 1450+ * @author Joseph
 1451+ * @author Karduelis
 1452+ * @author Mach
 1453+ */
 1454+$messages['tr'] = array(
 1455+ 'dt-desc' => 'Şablon çağrılarında içerilen verilerin içe ve dışa aktarımına izin verir',
 1456+ 'viewxml' => "XML'i gör",
 1457+ '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.',
 1458+ 'dt_viewxml_categories' => 'Kategoriler',
 1459+ 'dt_viewxml_namespaces' => 'Alan adları',
 1460+ 'dt_viewxml_simplifiedformat' => 'Basitleştirilmiş format',
 1461+ 'dt_xml_namespace' => 'Alan adı',
 1462+ 'dt_xml_pages' => 'Sayfalar',
 1463+ 'dt_xml_page' => 'Sayfa',
 1464+ 'dt_xml_template' => 'Şablon',
 1465+ 'dt_xml_field' => 'Alan',
 1466+ 'dt_xml_name' => 'İsim',
 1467+ 'dt_xml_title' => 'Başlık',
 1468+ 'dt_xml_id' => 'ID',
 1469+ 'dt_xml_freetext' => 'Özgür Metin',
 1470+ 'importxml' => 'XML içe aktar',
 1471+ 'dt_import_selectfile' => 'Lütfen içe aktarmak için $1 dosyasını seçin:',
 1472+ 'dt_import_editsummary' => '$1 içe aktarımı',
 1473+ 'dt_import_importing' => 'İçe aktarıyor...',
 1474+ 'dt_import_success' => '$2 dosyasından $1 {{PLURAL:$1|sayfa|sayfa}} oluşturulacak.',
 1475+);
 1476+
 1477+/** Uighur (Latin) (Uyghurche‎ / ئۇيغۇرچە (Latin))
 1478+ * @author Jose77
 1479+ */
 1480+$messages['ug-latn'] = array(
 1481+ 'dt_xml_page' => 'Bet',
 1482+);
 1483+
 1484+/** Ukrainian (Українська)
 1485+ * @author AS
 1486+ */
 1487+$messages['uk'] = array(
 1488+ 'dt_xml_title' => 'Заголовок',
 1489+);
 1490+
 1491+/** Vietnamese (Tiếng Việt)
 1492+ * @author Minh Nguyen
 1493+ * @author Vinhtantran
 1494+ */
 1495+$messages['vi'] = array(
 1496+ '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',
 1497+ 'viewxml' => 'Xem XML',
 1498+ '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.',
 1499+ 'dt_viewxml_categories' => 'Thể loại',
 1500+ 'dt_viewxml_namespaces' => 'Không gian tên',
 1501+ 'dt_viewxml_simplifiedformat' => 'Định dạng đơn giản hóa',
 1502+ 'dt_xml_namespace' => 'Không gian tên',
 1503+ 'dt_xml_pages' => 'Trang',
 1504+ 'dt_xml_page' => 'Trang',
 1505+ 'dt_xml_template' => 'Tiêu bản',
 1506+ 'dt_xml_field' => 'Trường',
 1507+ 'dt_xml_name' => 'Tên',
 1508+ 'dt_xml_title' => 'Tựa đề',
 1509+ 'dt_xml_id' => 'ID',
 1510+ 'dt_xml_freetext' => 'Văn bản Tự do',
 1511+ 'importxml' => 'Nhập XML',
 1512+ 'dt_import_selectfile' => 'Xin hãy chọn tập tin $1 để nhập:',
 1513+ 'dt_import_editsummary' => 'Nhập $1',
 1514+ 'dt_import_importing' => 'Đang nhập…',
 1515+ 'dt_import_success' => '$1 trang sẽ được nhập từ tập tin $2.',
 1516+ 'importcsv' => 'Nhập CSV',
 1517+ '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]”',
 1518+ 'right-datatransferimport' => 'Nhập dữ liệu',
 1519+);
 1520+
 1521+/** Volapük (Volapük)
 1522+ * @author Malafaya
 1523+ * @author Smeira
 1524+ */
 1525+$messages['vo'] = array(
 1526+ 'dt-desc' => 'Dälon nüveigi e seveigi nünodas peleodüköl in samafomotilüvoks paninädöls',
 1527+ 'viewxml' => 'Logön eli XML',
 1528+ 'dt_viewxml_docu' => 'Välolös bevü klads e nemaspads foviks utosi, kelosi vilol logön fomätü XML.',
 1529+ 'dt_viewxml_categories' => 'Klads',
 1530+ 'dt_viewxml_namespaces' => 'Nemaspads',
 1531+ 'dt_viewxml_simplifiedformat' => 'Fomät pebalugüköl',
 1532+ 'dt_xml_namespace' => 'Nemaspad',
 1533+ 'dt_xml_page' => 'Pad',
 1534+ 'dt_xml_field' => 'Fel',
 1535+ 'dt_xml_name' => 'Nem',
 1536+ 'dt_xml_title' => 'Tiäd',
 1537+ 'dt_xml_id' => 'Dientifanüm',
 1538+ 'dt_xml_freetext' => 'Vödem libik',
 1539+);
 1540+
 1541+/** Simplified Chinese (‪中文(简体)‬)
 1542+ * @author Gaoxuewei
 1543+ */
 1544+$messages['zh-hans'] = array(
 1545+ 'dt-desc' => '允许根据模板的要求导入导出结构化的数据',
 1546+ 'viewxml' => '查看XML',
 1547+ 'dt_viewxml_docu' => '请在下列分类、名称空间中选择,以使用XML格式查看。',
 1548+ 'dt_viewxml_categories' => '分类',
 1549+ 'dt_viewxml_namespaces' => '名称空间',
 1550+ 'dt_viewxml_simplifiedformat' => '简化格式',
 1551+ 'dt_xml_namespace' => '名称空间',
 1552+ 'dt_xml_page' => '页面',
 1553+ 'dt_xml_name' => '名称',
 1554+ 'dt_xml_title' => '标题',
 1555+ 'dt_xml_id' => 'ID',
 1556+ 'dt_xml_freetext' => '自由文本',
 1557+);
 1558+
 1559+/** Chinese (Taiwan) (‪中文(台灣)‬)
 1560+ * @author Roc michael
 1561+ */
 1562+$messages['zh-tw'] = array(
 1563+ 'dt-desc' => '允許匯入及匯出引用樣板(template calls)的結構性資料',
 1564+ 'viewxml' => '查看 XML',
 1565+ 'dt_viewxml_docu' => '請選取以下的分類及名字空間以查看其XML格式的資料',
 1566+ 'dt_viewxml_categories' => '分類',
 1567+ 'dt_viewxml_namespaces' => '名字空間',
 1568+ 'dt_viewxml_simplifiedformat' => '簡化的格式',
 1569+ 'dt_xml_namespace' => '名字空間',
 1570+ 'dt_xml_pages' => '頁面',
 1571+ 'dt_xml_page' => '頁面',
 1572+ 'dt_xml_template' => '模板',
 1573+ 'dt_xml_field' => '欄位',
 1574+ 'dt_xml_name' => '名稱',
 1575+ 'dt_xml_title' => '標題(Title)',
 1576+ 'dt_xml_freetext' => '隨意文字',
 1577+ 'importxml' => '匯入XML',
 1578+ 'dt_import_selectfile' => '請選取$1檔以供匯入',
 1579+ 'dt_import_editsummary' => '匯入$1',
 1580+ 'dt_import_importing' => '匯入中...',
 1581+ 'dt_import_success' => '將從該$2檔匯入$1{{PLURAL:$1|頁面頁面}}。',
 1582+ 'importcsv' => '匯入CSV檔',
 1583+ 'dt_importcsv_badheader' => "錯誤:$1欄位的標題「$2」或必須為「$3」,「$4」或表單「模板名稱[欄位名稱]」<br>
 1584+Error: the column $1 header, '$2', must be either '$3', '$4' or of the form 'template_name[field_name]'",
 1585+);
 1586+
Property changes on: tags/extensions/DataTransfer/REL_0_3_1/languages/DT_Messages.php
___________________________________________________________________
Name: svn:eol-style
11587 + native
Index: tags/extensions/DataTransfer/REL_0_3_1/languages/DT_Aliases.php
@@ -0,0 +1,159 @@
 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+/** Italian (Italiano) */
 77+$aliases['it'] = array(
 78+ 'ViewXML' => array( 'VediXML' ),
 79+);
 80+
 81+/** Japanese (日本語) */
 82+$aliases['ja'] = array(
 83+ 'ViewXML' => array( 'XML表示', 'XML表示' ),
 84+);
 85+
 86+/** Ripoarisch (Ripoarisch) */
 87+$aliases['ksh'] = array(
 88+ 'ViewXML' => array( 'XML beloore' ),
 89+);
 90+
 91+/** Luxembourgish (Lëtzebuergesch) */
 92+$aliases['lb'] = array(
 93+ 'ViewXML' => array( 'XML weisen' ),
 94+);
 95+
 96+/** Macedonian (Македонски) */
 97+$aliases['mk'] = array(
 98+ 'ViewXML' => array( 'ВидиXML' ),
 99+);
 100+
 101+/** Marathi (मराठी) */
 102+$aliases['mr'] = array(
 103+ 'ViewXML' => array( 'XMLपहा' ),
 104+);
 105+
 106+/** Maltese (Malti) */
 107+$aliases['mt'] = array(
 108+ 'ViewXML' => array( 'UriXML' ),
 109+);
 110+
 111+/** Nedersaksisch (Nedersaksisch) */
 112+$aliases['nds-nl'] = array(
 113+ 'ViewXML' => array( 'XML_bekieken' ),
 114+);
 115+
 116+/** Dutch (Nederlands) */
 117+$aliases['nl'] = array(
 118+ 'ViewXML' => array( 'XMLBekijken' ),
 119+);
 120+
 121+/** Norwegian (bokmål)‬ (‪Norsk (bokmål)‬) */
 122+$aliases['no'] = array(
 123+ 'ViewXML' => array( 'Vis XML' ),
 124+);
 125+
 126+/** Occitan (Occitan) */
 127+$aliases['oc'] = array(
 128+ 'ViewXML' => array( 'Veire XML', 'VeireXML' ),
 129+);
 130+
 131+/** Sanskrit (संस्कृत) */
 132+$aliases['sa'] = array(
 133+ 'ViewXML' => array( 'XMLपश्यति' ),
 134+);
 135+
 136+/** Albanian (Shqip) */
 137+$aliases['sq'] = array(
 138+ 'ViewXML' => array( 'ShihXML' ),
 139+);
 140+
 141+/** Swedish (Svenska) */
 142+$aliases['sv'] = array(
 143+ 'ViewXML' => array( 'Visa XML' ),
 144+);
 145+
 146+/** Swahili (Kiswahili) */
 147+$aliases['sw'] = array(
 148+ 'ViewXML' => array( 'OnyeshaXML' ),
 149+);
 150+
 151+/** Tagalog (Tagalog) */
 152+$aliases['tl'] = array(
 153+ 'ViewXML' => array( 'Tingnan ang XML' ),
 154+);
 155+
 156+/** Vèneto (Vèneto) */
 157+$aliases['vec'] = array(
 158+ 'ViewXML' => array( 'VardaXML' ),
 159+);
 160+
Property changes on: tags/extensions/DataTransfer/REL_0_3_1/languages/DT_Aliases.php
___________________________________________________________________
Name: svn:keywords
1161 + Id
Name: svn:eol-style
2162 + native
Index: tags/extensions/DataTransfer/REL_0_3_1/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_1/COPYING
___________________________________________________________________
Name: svn:eol-style
1350 + native
Index: tags/extensions/DataTransfer/REL_0_3_1/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_1/README
___________________________________________________________________
Name: svn:eol-style
126 + native

Status & tagging log