r47546 MediaWiki - Code Review archive

Repository:MediaWiki
Revision:r47545‎ | r47546 | r47547 >
Date:13:35, 20 February 2009
Author:catrope
Status:deferred
Tags:
Comment:
Tagging RecordAdmin version compatible with 1.13.4. I know tags aren't supposed to be touched, but I believe this to be an exception.
Modified paths:
  • /tags/REL1_13_4/extensions/RecordAdmin (added) (history)

Diff [purge]

Index: tags/REL1_13_4/extensions/RecordAdmin/RecordAdmin.alias.php
@@ -0,0 +1,67 @@
 2+<?php
 3+/**Internationalization aliases for RecordAdmin extension
 4+*
 5+* @addtogroup Extensions
 6+*/
 7+
 8+$aliases = array();
 9+
 10+$aliases['en'] = array(
 11+ 'RecordAdmin' => array( 'RecordAdmin' ),
 12+);
 13+
 14+/** Arabic (العربية) */
 15+$aliases['ar'] = array(
 16+ 'RecordAdmin' => array( 'تسجيل_إداري' ),
 17+);
 18+
 19+/** Egyptian Spoken Arabic (مصرى) */
 20+$aliases['arz'] = array(
 21+ 'RecordAdmin' => array( 'تسجيل_إدارى' ),
 22+);
 23+
 24+/** French (Français) */
 25+$aliases['fr'] = array(
 26+ 'RecordAdmin' => array( 'GérerEnregistrement', 'GererEnregistrement', 'Gérer enregistrement' ),
 27+);
 28+
 29+/** Swiss German (Alemannisch) */
 30+$aliases['gsw'] = array(
 31+ 'RecordAdmin' => array( 'Ammann yytrage' ),
 32+);
 33+
 34+/** Interlingua (Interlingua) */
 35+$aliases['ia'] = array(
 36+ 'RecordAdmin' => array( 'Gestion de datos' ),
 37+);
 38+
 39+/** Japanese (日本語) */
 40+$aliases['ja'] = array(
 41+ 'RecordAdmin' => array( '記録管理' ),
 42+);
 43+
 44+/** Dutch (Nederlands) */
 45+$aliases['nl'] = array(
 46+ 'RecordAdmin' => array( 'Gegevensbeheer' ),
 47+);
 48+
 49+/** Occitan (Occitan) */
 50+$aliases['oc'] = array(
 51+ 'RecordAdmin' => array( 'GerirEnregistrament', 'Gerir Enregistrament' ),
 52+);
 53+
 54+/** Sanskrit (संस्कृत) */
 55+$aliases['sa'] = array(
 56+ 'RecordAdmin' => array( 'प्रचालकअङ्कन' ),
 57+);
 58+
 59+/** Swahili (Kiswahili) */
 60+$aliases['sw'] = array(
 61+ 'RecordAdmin' => array( 'RekodizaMkabidhi' ),
 62+);
 63+
 64+/** Tagalog (Tagalog) */
 65+$aliases['tl'] = array(
 66+ 'RecordAdmin' => array( 'Tagapangasiwa ng talaan' ),
 67+);
 68+
Property changes on: tags/REL1_13_4/extensions/RecordAdmin/RecordAdmin.alias.php
___________________________________________________________________
Name: svn:mergeinfo
169 +
Name: svn:eol-style
270 + native
Index: tags/REL1_13_4/extensions/RecordAdmin/RecordAdmin_body.php
@@ -0,0 +1,508 @@
 2+<?php
 3+/**
 4+ * Define a new class based on the SpecialPage class
 5+ */
 6+class SpecialRecordAdmin extends SpecialPage {
 7+
 8+ var $form = '';
 9+ var $type = '';
 10+ var $types = array();
 11+ var $orderby = '';
 12+ var $desc = false;
 13+ var $guid = '';
 14+
 15+ function __construct() {
 16+ # Name to use for creating a new record either via RecordAdmin or a public form
 17+ # todo: should add a hook here for custom default-naming
 18+ $this->guid = strftime( '%Y%m%d', time() ) . '-' . substr( strtoupper( uniqid() ), -5 );
 19+ wfLoadExtensionMessages ( 'RecordAdmin' );
 20+ SpecialPage::SpecialPage( 'RecordAdmin', 'recordadmin' );
 21+ }
 22+
 23+ /**
 24+ * Override SpecialPage::execute()
 25+ */
 26+ function execute( $param ) {
 27+ global $wgOut, $wgRequest, $wgRecordAdminUseNamespaces, $wgLang;
 28+ $this->setHeaders();
 29+ $type = $wgRequest->getText( 'wpType' ) or $type = $param;
 30+ $record = $wgRequest->getText( 'wpRecord' );
 31+ $invert = $wgRequest->getText( 'wpInvert' );
 32+ $title = Title::makeTitle( NS_SPECIAL, 'RecordAdmin' );
 33+ $wpTitle = trim( $wgRequest->getText( 'wpTitle' ) );
 34+
 35+ if ( $type && $wgRecordAdminUseNamespaces ) {
 36+ if ( $wpTitle && !ereg( "^$type:.+$", $wpTitle ) ) $wpTitle = "$type:$wpTitle";
 37+ }
 38+
 39+ $wgOut->addHTML( "<div class='center'><a href='" . $title->getLocalURL() . "/$type'>" . wfMsg( 'recordadmin-newsearch', $type ) . "</a> | "
 40+ . "<a href='" . $title->getLocalURL() . "'>" . wfMsg( 'recordadmin-newrecord' ) . "</a></div><br>\n"
 41+ );
 42+
 43+ # Get posted form values if any
 44+ $posted = array();
 45+ foreach ( $_POST as $k => $v ) if ( ereg( '^ra_(.+)$', $k, $m ) ) $posted[$m[1]] = $v;
 46+
 47+ # Read in and prepare the form for this record type if one has been selected
 48+ if ( $type ) $this->preProcessForm( $type );
 49+
 50+ # Extract the input names and types used in the form
 51+ $this->examineForm();
 52+
 53+ # Clear any default values
 54+ $this->populateForm( array() );
 55+
 56+ # If no type selected, render select list of record types from Category:Records
 57+ if ( empty( $type ) ) {
 58+ $wgOut->addWikiText( "==" . wfMsg( 'recordadmin-select' ) . "==\n" );
 59+
 60+ # Get titles in 'recordadmin-category' (default: Category:Records) and build option list
 61+ $options = '';
 62+ $dbr = wfGetDB( DB_SLAVE );
 63+ $cl = $dbr->tableName( 'categorylinks' );
 64+ $cat = $dbr->addQuotes( wfMsgForContent( 'recordadmin-category' ) );
 65+ $res = $dbr->select( $cl, 'cl_from', "cl_to = $cat", __METHOD__, array( 'ORDER BY' => 'cl_sortkey' ) );
 66+ while ( $row = $dbr->fetchRow( $res ) ) $options .= '<option>' . Title::newFromID( $row[0] )->getText() . '</option>';
 67+
 68+ # Render type-selecting form
 69+ $wgOut->addHTML( Xml::element( 'form', array( 'action' => $title->getLocalURL( 'action=submit' ), 'method' => 'post' ), null )
 70+ . "<select name='wpType'>$options</select> "
 71+ . Xml::element( 'input', array( 'type' => 'submit', 'value' => wfMsg( 'recordadmin-submit' ) ) )
 72+ . '</form>'
 73+ );
 74+ }
 75+
 76+ # Record type known, but no record selected, render form for searching or creating
 77+ elseif ( empty( $record ) ) {
 78+ $wgOut->addWikiText( "==" . wfMsg( 'recordadmin-create', $type ) . "==\n" );
 79+
 80+ # Process Create submission
 81+ if ( count( $posted ) && $wgRequest->getText( 'wpCreate' ) ) {
 82+ if ( empty( $wpTitle ) ) {
 83+ $wpTitle = $this->guid;
 84+ if ( $wgRecordAdminUseNamespaces ) $wpTitle = "$type:$wpTitle";
 85+ }
 86+ $t = Title::newFromText( $wpTitle );
 87+ if ( is_object( $t ) ) {
 88+ if ( $t->exists() ) $wgOut->addHTML( "<div class='errorbox'>" . wfMsg( 'recordadmin-alreadyexist' , $wpTitle ) . "</div>\n" );
 89+ else {
 90+
 91+ # Attempt to create the article
 92+ $article = new Article( $t );
 93+ $summary = "[[Special:RecordAdmin/$type|RecordAdmin]]:" . wfMsg( 'recordadmin-summary-typecreated' );
 94+ $text = '';
 95+ foreach ( $posted as $k => $v ) if ( $v ) {
 96+ if ( $this->types[$k] == 'bool' ) $v = 'yes';
 97+ $text .= "| $k = $v\n";
 98+ }
 99+ $text = $text ? "{{" . "$type\n$text}}" : "{{" . "$type}}";
 100+ $success = $article->doEdit( $text, $summary, EDIT_NEW );
 101+
 102+ # Report success or error
 103+ if ( $success ) $wgOut->addHTML( "<div class='successbox'>" . wfMsg( 'recordadmin-createsuccess', $wpTitle ) . "</div>\n" );
 104+ else $wgOut->addHTML( "<div class='errorbox'>" . wfMsg( 'recordadmin-createerror', $type ) . "</div>\n" );
 105+ }
 106+ } else $wgOut->addHTML( "<div class='errorbox'>" . wfMsg( 'recordadmin-badtitle' ) . "</div>\n" );
 107+ $wgOut->addHTML( "<br><br><br><br>\n" );
 108+ }
 109+
 110+ # Populate the search form with any posted values
 111+ $this->populateForm( $posted );
 112+
 113+ # Render the form
 114+ $wgOut->addHTML(
 115+ Xml::element( 'form', array( 'class' => strtolower($type).'-record recordadmin', 'action' => $title->getLocalURL( 'action=submit' ), 'method' => 'post' ), null )
 116+ . '<b>' . wfMsg( 'recordadmin-recordid' ) . '</b> ' . Xml::element( 'input', array( 'name' => 'wpTitle', 'size' => 30, 'value' => $wpTitle ) )
 117+ . '&nbsp;&nbsp;&nbsp;' . Xml::element( 'input', array( 'name' => 'wpInvert', 'type' => 'checkbox' ) ) . ' ' . wfMsg( 'recordadmin-invert' )
 118+ . "\n<br><br><hr><br>\n{$this->form}"
 119+ . Xml::element( 'input', array( 'type' => 'hidden', 'name' => 'wpType', 'value' => $type ) )
 120+ . '<br><hr><br><table width="100%"><tr>'
 121+ . '<td>' . Xml::element( 'input', array( 'type' => 'submit', 'name' => 'wpFind', 'value' => wfMsg( 'recordadmin-buttonsearch' ) ) ) . '</td>'
 122+ . '<td>' . Xml::element( 'input', array( 'type' => 'submit', 'name' => 'wpCreate', 'value' => wfMsg( 'recordadmin-buttoncreate' ) ) ) . '</td>'
 123+ . '<td width="100%" align="left">' . Xml::element( 'input', array( 'type' => 'reset', 'value' => wfMsg( 'recordadmin-buttonreset' ) ) ) . '</td>'
 124+ . '</tr></table></form>'
 125+ );
 126+
 127+ # Process Find submission
 128+ if ( count( $posted ) && $wgRequest->getText( 'wpFind' ) ) {
 129+ $wgOut->addWikiText( "<br>\n== " . wfMsg( 'recordadmin-searchresult' ) . " ==\n" );
 130+
 131+ # Select records which use the template and exhibit a matching title and other fields
 132+ $records = $this->getRecords( $type, $posted, $wpTitle, $invert );
 133+
 134+ # Render resulting records
 135+ $wgOut->addHTML( $this->renderRecords($records) );
 136+
 137+ }
 138+ }
 139+
 140+ # A specific record has been selected, render form for updating
 141+ else {
 142+ $wgOut->addWikiText( "== " . wfMsg( 'recordadmin-edit', $record ) . " ==\n" );
 143+ $article = new Article( Title::newFromText( $record ) );
 144+ $text = $article->fetchContent();
 145+
 146+ # Update article if form posted
 147+ if ( count( $posted ) ) {
 148+
 149+ # Get the location and length of the record braces to replace
 150+ foreach ( $this->examineBraces( $text ) as $brace ) if ( $brace['NAME'] == $type ) $braces = $brace;
 151+
 152+ # Attempt to save the article
 153+ $summary = "[[Special:RecordAdmin/$type|" . wfMsgForContent( 'recordadmin' ) . "]]: " . wfMsgForContent( 'recordadmin-typeupdated', $type );
 154+ $replace = '';
 155+ foreach ( $posted as $k => $v ) if ( $v ) {
 156+ if ( $this->types[$k] == 'bool' ) $v = 'yes';
 157+ $replace .= "| $k = $v\n";
 158+ }
 159+ $replace = $replace ? "{{" . "$type\n$replace}}" : "{{" . "$type}}";
 160+ $text = substr_replace( $text, $replace, $braces['OFFSET'], $braces['LENGTH'] );
 161+ $success = $article->doEdit( $text, $summary, EDIT_UPDATE );
 162+
 163+ # Report success or error
 164+ if ( $success ) $wgOut->addHTML( "<div class='successbox'>" . wfMsg( 'recordadmin-updatesuccess', $type ) . "</div>\n" );
 165+ else $wgOut->addHTML( "<div class='errorbox'>" . wfMsg( 'recordadmin-updateerror' ) . "</div>\n" );
 166+ $wgOut->addHTML( "<br><br><br><br>\n" );
 167+ }
 168+
 169+ # Populate the form with the current values in the article
 170+ foreach ( $this->examineBraces( $text ) as $brace ) if ( $brace['NAME'] == $type ) $braces = $brace;
 171+ $this->populateForm( substr( $text, $braces['OFFSET'], $braces['LENGTH'] ) );
 172+
 173+ # Render the form
 174+ $wgOut->addHTML( Xml::element( 'form', array( 'class' => 'recordadmin', 'action' => $title->getLocalURL( 'action=submit' ), 'method' => 'post' ), null ) );
 175+ $wgOut->addHTML( $this->form );
 176+ $wgOut->addHTML( Xml::element( 'input', array( 'type' => 'hidden', 'name' => 'wpType', 'value' => $type ) ) );
 177+ $wgOut->addHTML( Xml::element( 'input', array( 'type' => 'hidden', 'name' => 'wpRecord', 'value' => $record ) ) );
 178+ $wgOut->addHTML( '<br><hr><br><table width="100%"><tr>'
 179+ . '<td>' . Xml::element( 'input', array( 'type' => 'submit', 'value' => wfMsg( 'recordadmin-buttonsave' ) ) ) . '</td>'
 180+ . '<td width="100%" align="left">' . Xml::element( 'input', array( 'type' => 'reset', 'value' => wfMsg( 'recordadmin-buttonreset' ) ) ) . '</td>'
 181+ . '</tr></table></form>'
 182+ );
 183+ }
 184+ }
 185+
 186+ /**
 187+ * Return an array of records given type and other criteria
 188+ */
 189+ function getRecords($type, $posted, $wpTitle = '', $invert = false, $orderby = 'created desc') {
 190+ $records = array();
 191+ $dbr = wfGetDB( DB_SLAVE );
 192+ $tbl = $dbr->tableName( 'templatelinks' );
 193+ $ty = $dbr->addQuotes( $type );
 194+ $res = $dbr->select( $tbl, 'tl_from', "tl_namespace = 10 AND tl_title = $ty", __METHOD__ );
 195+ while ( $row = $dbr->fetchRow( $res ) ) {
 196+ $t = Title::newFromID( $row[0] );
 197+ if ( empty( $wpTitle ) || eregi( $wpTitle, $t->getPrefixedText() ) ) {
 198+ $a = new Article( $t );
 199+ $text = $a->getContent();
 200+ $match = true;
 201+ $r = array( 0 => $t, 'title' => $t->getPrefixedText() );
 202+ foreach ( array_keys( $this->types ) as $k ) {
 203+ $v = isset( $posted[$k] ) ? ( $this->types[$k] == 'bool' ? 'yes' : $posted[$k] ) : '';
 204+ $i = preg_match( "|\s*\|\s*$k\s*=\s*(.*?)\s*(?=[\|\}])|si", $text, $m );
 205+ if ( $v && !( $i && eregi( $v, $m[1] ) ) ) $match = false;
 206+ $r[$k] = isset( $m[1] ) ? $m[1] : '';
 207+ }
 208+ if ( $invert ) $match = !$match;
 209+ if ( $match ) $records[] = $r;
 210+ }
 211+ }
 212+ $dbr->freeResult( $res );
 213+
 214+ # Add the creation date column to the records
 215+ foreach ( $records as $i => $r ) {
 216+ $t = $r[0];
 217+ $id = $t->getArticleID();
 218+ $tbl = $dbr->tableName( 'revision' );
 219+ $row = $dbr->selectRow(
 220+ $tbl,
 221+ 'rev_timestamp',
 222+ "rev_page = $id",
 223+ __METHOD__,
 224+ array( 'ORDER BY' => 'rev_timestamp' )
 225+ );
 226+ $records[$i]['created'] = $row->rev_timestamp;
 227+ }
 228+
 229+ # Sort the records according to "orderby" parameter
 230+ if ($this->desc = eregi(' +desc *$', $orderby)) $orderby = eregi_replace(' +desc *$', '', $orderby);
 231+ $this->orderby = $orderby;
 232+ usort($records, array($this, 'sortCallback'));
 233+
 234+ return $records;
 235+ }
 236+
 237+ /**
 238+ * Compares to arrays by column
 239+ */
 240+ function sortCallback($row1, $row2) {
 241+ if (!isset($row1[$this->orderby]) || !isset($row1[$this->orderby])) return 0;
 242+ if ($row1[$this->orderby] == $row2[$this->orderby]) return 0;
 243+ $cmp = $row1[$this->orderby] > $row2[$this->orderby] ? 1 : -1;
 244+ return $this->desc ? -$cmp : $cmp;
 245+ }
 246+
 247+ /**
 248+ * Render a set of records returned by getRecords() as an HTML table
 249+ */
 250+ function renderRecords($records, $cols = false, $sortable = true) {
 251+ if (count($records) < 1) return wfMsg( 'recordadmin-nomatch' );
 252+
 253+ $special = Title::makeTitle( NS_SPECIAL, 'RecordAdmin' );
 254+ $type = $this->type;
 255+ $sortable = $sortable ? ' sortable' : '';
 256+ $br = $sortable ? '<br />' : '';
 257+
 258+ # Table header
 259+ $table = "<table class='recordadmin$sortable $type-record'>\n<tr>";
 260+ $th = array(
 261+ 'title' => "<th class='col0'>" . wfMsg( 'recordadmin-title', $type ) . "$br</th>",
 262+ 'actions' => "<th class='col1'>" . wfMsg( 'recordadmin-actions' ) . "$br</th>",
 263+ 'created' => "<th class='col2'>" . wfMsg( 'recordadmin-created' ) . "$br</th>"
 264+ );
 265+ foreach ( array_keys($this->types) as $col ) {
 266+ $class = 'col'.preg_replace('|\W|', '-', $col);
 267+ $th[$col] = "<th class='$class'>$col$br</th>";
 268+ }
 269+ foreach ( $cols ? $cols : array_keys($th) as $col ) $table .= $th[$col]."\n";
 270+ $table .= "</tr>\n";
 271+
 272+ $stripe = '';
 273+ foreach ( $records as $r ) {
 274+ $ts = preg_replace( '|^..(..)(..)(..)(..)(..)..$|', '$3/$2/$1&nbsp;$4:$5', $r['created'] );
 275+ $t = $r[0];
 276+ $u = $t->getLocalURL();
 277+ $col = $r['title'];
 278+ $stripe = $stripe ? '' : ' class="stripe"';
 279+ $table .= "<tr$stripe>";
 280+ $row = array(
 281+ 'title' => "<td class='col0'><a href='$u'>$col</a></td>",
 282+ 'actions' => "<td class='col1'>(<a href='$u'>" . wfMsg( 'recordadmin-viewlink' ) . "</a>)".
 283+ "(<a href='" . $special->getLocalURL( "wpType=$type&wpRecord=$col" ) . "'>" . wfMsg( 'recordadmin-editlink' ) . "</a>)</td>",
 284+ 'created' => "<td class='col2'>$ts</td>\n"
 285+ );
 286+ foreach ( array_keys( $this->types ) as $col ) {
 287+ $v = isset( $r[$col] ) ? $r[$col] : '&nbsp;';
 288+ $class = 'col'.preg_replace('|\W|', '-', $col);
 289+ $row[$col] = "<td class='$class'>$v</td>";
 290+ }
 291+ foreach ($cols ? $cols : array_keys($th) as $col) $table .= $row[$col]."\n";
 292+
 293+ $table .= "</tr>\n";
 294+ }
 295+ $table .= "</table>\n";
 296+
 297+ return $table;
 298+ }
 299+
 300+ /**
 301+ * Read in and prepare the form (for use as a search filter) for passed record type
 302+ * - we're using the record's own form as a filter for searching for records
 303+ * - extract only the content from between the form tags and remove any submit inputs
 304+ */
 305+ function preProcessForm( $type ) {
 306+ $this->type = $type;
 307+ $title = Title::newFromText( $type, NS_FORM );
 308+ if ( $title->exists() ) {
 309+ $form = new Article( $title );
 310+ $form = $form->getContent();
 311+ $form = preg_replace( '#<input.+?type=[\'"]?submit["\']?.+?/(input| *)>#', '', $form ); # remove submits
 312+ $form = preg_replace( '#^.+?<form.+?>#s', '', $form ); # remove up to and including form open
 313+ $form = preg_replace( '#</form>.+?$#s', '', $form ); # remove form close and everything after
 314+ $form = preg_replace( '#name\s*=\s*([\'"])(.*?)\\1#s', 'name="ra_$2"', $form ); # prefix input names with ra_
 315+ $form = preg_replace( '#(<select.+?>)\s*(?!<option/>)#s', '$1<option selected/>', $form ); # ensure all select lists have default blank
 316+ }
 317+
 318+ # Create a red link to the form if it doesn't exist
 319+ else {
 320+ $form = "<b>" . wfMsg( 'recordadmin-noform', $type ) . "</b>"
 321+ . "<br><br>" . wfMsg( 'recordadmin-createlink', $title->getLocalURL( 'action=edit' ) ) . "</div>";
 322+ }
 323+ $this->form = $form;
 324+ }
 325+
 326+
 327+ /**
 328+ * Populates the form values from the passed values
 329+ * - $form is HTML text
 330+ * - $values may be a hash or wikitext template syntax
 331+ */
 332+ function populateForm( $values ) {
 333+
 334+ # If values are wikitext, convert to hash
 335+ if ( !is_array( $values ) ) {
 336+ $text = $values;
 337+ $values = array();
 338+ preg_match_all( "|\|\s*(.+?)\s*=\s*(.*?)\s*(?=[\|\}])|s", $text, $m );
 339+ foreach ( $m[1] as $i => $k ) $values[$k] = $m[2][$i];
 340+ }
 341+
 342+ # Add the values into the form's HTML depending on their type
 343+ foreach ( $this->types as $k => $type ) {
 344+
 345+ # Get this input element's html text and position and length
 346+ preg_match( "|<([a-zA-Z]+)[^<]+?name=\"ra_$k\".*?>(.*?</\\1>)?|s", $this->form, $m, PREG_OFFSET_CAPTURE );
 347+ list( $html, $pos ) = $m[0];
 348+ $len = strlen( $html );
 349+
 350+ # Modify the element according to its type
 351+ # - clears default value, then adds new value
 352+ $v = isset( $values[$k] ) ? $values[$k] : '';
 353+ switch ( $type ) {
 354+ case 'text':
 355+ $html = preg_replace( "|value\s*=\s*\".*?\"|", "", $html );
 356+ if ( $v ) $html = preg_replace( "|(/?>)$|", " value=\"$v\" $1", $html );
 357+ break;
 358+ case 'bool':
 359+ $html = preg_replace( "|checked|", "", $html );
 360+ if ( $v ) $html = preg_replace( "|(/?>)$|", " checked $1", $html );
 361+ break;
 362+ case 'list':
 363+ $html = preg_replace( "|(<option[^<>]*) selected|", "$1", $html );
 364+ if ( $v ) $html = preg_replace( "|(?<=<option)(?=>$v</option>)|s", " selected", $html );
 365+ break;
 366+ case 'blob':
 367+ $html = preg_replace( "|>.*?(?=</textarea>)|s", ">$v", $html );
 368+ break;
 369+ }
 370+
 371+ # Replace the element in the form with the modified html
 372+ $this->form = substr_replace( $this->form, $html, $pos, $len );
 373+ }
 374+ }
 375+
 376+ /**
 377+ * Returns an array of types used by the passed HTML text form
 378+ * - supported types, text, select, checkbox, textarea
 379+ */
 380+ function examineForm() {
 381+ $this->types = array();
 382+ preg_match_all( "|<([a-zA-Z]+)[^<]+?name=\"ra_(.+?)\".*?>|", $this->form, $m );
 383+ foreach ( $m[2] as $i => $k ) {
 384+ $tag = $m[1][$i];
 385+ $type = preg_match( "|type\s*=\s*\"(.+?)\"|", $m[0][$i], $n ) ? $n[1] : '';
 386+ switch ( $tag ) {
 387+ case 'input':
 388+ switch ( $type ) {
 389+ case 'checkbox':
 390+ $this->types[$k] = 'bool';
 391+ break;
 392+ default:
 393+ $this->types[$k] = 'text';
 394+ break;
 395+ }
 396+ break;
 397+ case 'select':
 398+ $this->types[$k] = 'list';
 399+ break;
 400+ case 'textarea':
 401+ $this->types[$k] = 'blob';
 402+ break;
 403+ }
 404+ }
 405+ }
 406+
 407+ /**
 408+ * Return array of braces used and the name, position, length and depth
 409+ * See http://www.organicdesign.co.nz/MediaWiki_code_snippets
 410+ */
 411+ function examineBraces( &$content ) {
 412+ $braces = array();
 413+ $depths = array();
 414+ $depth = 1;
 415+ $index = 0;
 416+ while ( preg_match( "/\\{\\{\\s*([#a-z0-9_]*)|\\}\\}/is", $content, $match, PREG_OFFSET_CAPTURE, $index ) ) {
 417+ $index = $match[0][1] + 2;
 418+ if ( $match[0][0] == '}}' ) {
 419+ $brace =& $braces[$depths[$depth - 1]];
 420+ $brace['LENGTH'] = $match[0][1] - $brace['OFFSET'] + 2;
 421+ $brace['DEPTH'] = $depth--;
 422+ }
 423+ else {
 424+ $depths[$depth++] = count( $braces );
 425+ $braces[] = array(
 426+ 'NAME' => $match[1][0],
 427+ 'OFFSET' => $match[0][1]
 428+ );
 429+ }
 430+ }
 431+ return $braces;
 432+ }
 433+
 434+ /**
 435+ * A callback for processing public forms
 436+ */
 437+ function createRecord() {
 438+ global $wgRequest, $wgRecordAdminUseNamespaces;
 439+ $type = $wgRequest->getText( 'wpType' );
 440+ $title = $wgRequest->getText( 'wpTitle' );
 441+
 442+ # Get types in this kind of record from form
 443+ $this->preProcessForm( $type );
 444+ $this->examineForm();
 445+
 446+ # Use guid if no title specified
 447+ if ( empty( $title ) ) {
 448+ $title = $this->guid;
 449+ if ( $wgRecordAdminUseNamespaces ) $title = "$type:$title";
 450+ }
 451+
 452+ # Attempt to create the article
 453+ $title = Title::newFromText( $title );
 454+ if ( is_object( $title ) && !$title->exists() ) {
 455+ $article = new Article( $title );
 456+ $summary = wfMsg( 'recordadmin-newcreated' );
 457+ $text = '';
 458+ foreach ( $_POST as $k => $v ) if ( $v && isset( $this->types[$k] ) ) {
 459+ if ( $this->types[$k] == 'bool' ) $v = 'yes';
 460+ $text .= "| $k = $v\n";
 461+ }
 462+ $text = $text ? "{{" . "$type\n$text}}" : "{{" . "$type}}";
 463+ $success = $article->doEdit( $text, $summary, EDIT_NEW );
 464+ }
 465+ }
 466+
 467+ /**
 468+ * Render a record search in a parser-function
 469+ */
 470+ function expandMagic(&$parser, $type) {
 471+ $parser->mOutput->mCacheTime = -1;
 472+ $filter = array();
 473+ $title = '';
 474+ $invert = false;
 475+ $orderby = 'created desc';
 476+ $cols = false;
 477+ $sortable = true;
 478+ foreach (func_get_args() as $arg) if (!is_object($arg)) {
 479+ if (preg_match("/^(.+?)\\s*=\\s*(.+)$/", $arg, $match)) {
 480+ list(, $k, $v) = $match;
 481+ if ($k == 'title') $title = $v;
 482+ elseif ($k == 'invert') $invert = $v;
 483+ elseif ($k == 'orderby') $orderby = $v;
 484+ elseif ($k == 'cols') $cols = preg_split('/\s*,\s*/', $v);
 485+ elseif ($k == 'sortable') $sortable = eregi('1|yes|true|on', $v);
 486+ else $filter[$match[1]] = $match[2];
 487+ }
 488+ }
 489+ $this->preProcessForm($type);
 490+ $this->examineForm();
 491+ $records = $this->getRecords($type, $filter, $title, $invert, $orderby);
 492+ $table = $this->renderRecords($records, $cols, $sortable);
 493+ return array(
 494+ $table,
 495+ 'noparse' => true,
 496+ 'isHTML' => true
 497+ );
 498+
 499+ }
 500+
 501+ /**
 502+ * If a record was created by a public form, make last 5 digits of ID available via a tag
 503+ */
 504+ function expandTag( $text, $argv, &$parser ) {
 505+ $parser->mOutput->mCacheTime = -1;
 506+ return $this->guid ? substr( $this->guid, -5 ) : '';
 507+ }
 508+
 509+}
Property changes on: tags/REL1_13_4/extensions/RecordAdmin/RecordAdmin_body.php
___________________________________________________________________
Name: svn:eol-style
1510 + native
Index: tags/REL1_13_4/extensions/RecordAdmin/RecordAdmin.i18n.php
@@ -0,0 +1,1084 @@
 2+<?php
 3+/**
 4+ * Internationalisation for RecordAdmin extension
 5+ *
 6+ * @author Bertrand GRONDIN
 7+ * @file
 8+ * @ingroup Extensions
 9+ */
 10+
 11+$messages = array();
 12+
 13+/** English
 14+ * @author Nad
 15+ * @author Bertrand GRONDIN
 16+ */
 17+$messages['en'] = array(
 18+ 'recordadmin' => 'Record administration',
 19+ 'recordadmin-desc' => 'A [[Special:RecordAdmin|special page]] for finding and editing record pages using a form',
 20+ 'recordadmin-category' => 'Records',
 21+ 'recordadmin-select' => 'Select the type of record to search for',
 22+ 'recordadmin-newsearch' => 'New $1 search',
 23+ 'recordadmin-newrecord' => 'Select another record type',
 24+ 'recordadmin-submit' => 'Submit',
 25+ 'recordadmin-create' => 'Find or create a "$1" record',
 26+ 'recordadmin-alreadyexist' => 'Sorry, "$1" already exists!',
 27+ 'recordadmin-createsuccess' => '$1 created',
 28+ 'recordadmin-createerror' => 'An error occurred while attempting to create the $1!',
 29+ 'recordadmin-badtitle' => 'Bad title!',
 30+ 'recordadmin-recordid' => 'Record ID:',
 31+ 'recordadmin-invert' => 'Invert selection',
 32+ 'recordadmin-buttonsearch' => 'Search',
 33+ 'recordadmin-buttoncreate' => 'Create',
 34+ 'recordadmin-buttonreset' => 'Reset',
 35+ 'recordadmin-searchresult' => 'Search results',
 36+ 'recordadmin-nomatch' => 'No matching records found!',
 37+ 'recordadmin-edit' => 'Editing $1',
 38+ 'recordadmin-typeupdated' => '$1 properties updated',
 39+ 'recordadmin-updatesuccess' => '$1 updated',
 40+ 'recordadmin-updateerror' => 'An error occurred during update',
 41+ 'recordadmin-buttonsave' => 'Save',
 42+ 'recordadmin-noform' => 'There is no form associated with "$1" records!',
 43+ 'recordadmin-createlink' => '<a href=$1>create one</a>',
 44+ 'recordadmin-newcreated' => 'New $1 created from public form',
 45+ 'recordadmin-summary-typecreated' => 'New $1 created',
 46+ 'recordadmin-viewlink' => 'view',
 47+ 'recordadmin-editlink' => 'edit',
 48+ 'recordadmin-title' => '$1',
 49+ 'recordadmin-created' => 'Created',
 50+ 'recordadmin-actions' => 'Actions',
 51+ 'right-recordadmin' => 'Find and edit record pages',
 52+);
 53+
 54+/** Message documentation (Message documentation)
 55+ * @author Purodha
 56+ */
 57+$messages['qqq'] = array(
 58+ 'recordadmin-desc' => 'Short desciption of this extension.
 59+Shown in [[Special:Version]].
 60+Do not translate or change tag names, or link anchors.',
 61+ 'recordadmin-category' => 'Category which contains the templates used as records and having corresponding forms',
 62+);
 63+
 64+/** Arabic (العربية)
 65+ * @author Meno25
 66+ * @author Ouda
 67+ */
 68+$messages['ar'] = array(
 69+ 'recordadmin' => 'إدارة السجل',
 70+ 'recordadmin-desc' => '[[Special:RecordAdmin|صفحة خاصة]] لإيجاد وتعديل صفحات السجلات باستخدام استمارة',
 71+ 'recordadmin-category' => 'تسجيلات',
 72+ 'recordadmin-select' => 'اختر نوع السجل للبحث عنه',
 73+ 'recordadmin-newsearch' => 'بحث $1 جديد',
 74+ 'recordadmin-newrecord' => 'أختار نوع سجل أخر',
 75+ 'recordadmin-submit' => 'نفذ',
 76+ 'recordadmin-create' => 'ابحث عن أو أنشئ سجل "$1"',
 77+ 'recordadmin-alreadyexist' => '! للأسف، "$1" موجود فعلا',
 78+ 'recordadmin-createsuccess' => '$1 أنشئت',
 79+ 'recordadmin-createerror' => 'حدث خطأ أثناء محاولة إنشاء $1!',
 80+ 'recordadmin-badtitle' => '! عنوان سئ',
 81+ 'recordadmin-recordid' => 'رقم السجل:',
 82+ 'recordadmin-invert' => 'أعكس الأختيار',
 83+ 'recordadmin-buttonsearch' => 'بحث',
 84+ 'recordadmin-buttoncreate' => 'أنشئ',
 85+ 'recordadmin-buttonreset' => 'إعادة ضبط',
 86+ 'recordadmin-searchresult' => 'نتائج البحث',
 87+ 'recordadmin-nomatch' => 'لا سجلات مطابقة تم العثور عليها!',
 88+ 'recordadmin-edit' => 'تعديل $1',
 89+ 'recordadmin-typeupdated' => '$1 تم تحديث خصائص',
 90+ 'recordadmin-updatesuccess' => '$1 تم تحديثه',
 91+ 'recordadmin-updateerror' => 'حدث خطأ أثناء التحديث',
 92+ 'recordadmin-buttonsave' => 'حفظ',
 93+ 'recordadmin-noform' => 'لا توجد استمارة ملحقة بسجلات "$1"!',
 94+ 'recordadmin-createlink' => '<a href=$1>إنشاء واحدة</a>',
 95+ 'recordadmin-newcreated' => '$1 جديد تم إنشاؤه من الاستمارة العامة',
 96+ 'recordadmin-summary-typecreated' => '$1 جديد تم إنشاؤه',
 97+ 'recordadmin-viewlink' => 'عرض',
 98+ 'recordadmin-editlink' => 'عدل',
 99+ 'recordadmin-created' => 'أنشئت',
 100+ 'recordadmin-actions' => 'أفعال',
 101+ 'right-recordadmin' => 'أبحث و عدل صفحات السجل',
 102+);
 103+
 104+/** Egyptian Spoken Arabic (مصرى)
 105+ * @author Ghaly
 106+ * @author Meno25
 107+ * @author Ouda
 108+ * @author Ramsis II
 109+ */
 110+$messages['arz'] = array(
 111+ 'recordadmin' => 'إدارة السجل',
 112+ 'recordadmin-desc' => '[[Special:RecordAdmin|صفحة خاصة]] لإيجاد وتعديل صفحات السجلات باستخدام استمارة',
 113+ 'recordadmin-category' => 'سجلات',
 114+ 'recordadmin-select' => 'اختر نوع السجل للبحث عنه',
 115+ 'recordadmin-newsearch' => 'بحث $1 جديد',
 116+ 'recordadmin-newrecord' => 'أختار نوع سجل تانى',
 117+ 'recordadmin-submit' => 'نفذ',
 118+ 'recordadmin-create' => 'ابحث عن أو أنشئ سجل "$1"',
 119+ 'recordadmin-alreadyexist' => 'متأسفين، "$1" موجوده بالفعل',
 120+ 'recordadmin-createsuccess' => '$1 أنشئت',
 121+ 'recordadmin-createerror' => 'حدث خطأ أثناء محاولة إنشاء $1!',
 122+ 'recordadmin-badtitle' => '! عنوان سئ',
 123+ 'recordadmin-recordid' => 'رقم السجل:',
 124+ 'recordadmin-invert' => 'أعكس الأختيار',
 125+ 'recordadmin-buttonsearch' => 'بحث',
 126+ 'recordadmin-buttoncreate' => 'أنشئ',
 127+ 'recordadmin-buttonreset' => 'إعادة الظبط',
 128+ 'recordadmin-searchresult' => 'نتائج البحث',
 129+ 'recordadmin-nomatch' => 'لا يوجد سجلات متطابقة',
 130+ 'recordadmin-edit' => 'تعديل $1',
 131+ 'recordadmin-typeupdated' => '$1 تم تحديث خصائص',
 132+ 'recordadmin-updatesuccess' => 'محدث $1',
 133+ 'recordadmin-updateerror' => 'حدث خطأ أثناء التحديث',
 134+ 'recordadmin-buttonsave' => 'حفظ',
 135+ 'recordadmin-noform' => 'لا توجد استمارة ملحقة بسجلات "$1"!',
 136+ 'recordadmin-createlink' => '<a href=$1>إنشاء واحدة</a>',
 137+ 'recordadmin-newcreated' => '$1 جديد تم إنشاؤه من الاستمارة العامة',
 138+ 'recordadmin-summary-typecreated' => '$1 جديد تم إنشاؤه',
 139+ 'recordadmin-viewlink' => 'عرض',
 140+ 'recordadmin-editlink' => 'عدل',
 141+ 'recordadmin-created' => 'أنشئت',
 142+ 'recordadmin-actions' => 'أفعال',
 143+ 'right-recordadmin' => 'أبحث و عدل صفحات السجل',
 144+);
 145+
 146+/** Bulgarian (Български)
 147+ * @author DCLXVI
 148+ */
 149+$messages['bg'] = array(
 150+ 'recordadmin-submit' => 'Изпращане',
 151+ 'recordadmin-invert' => 'Обръщане на избора',
 152+ 'recordadmin-buttonsearch' => 'Търсене',
 153+ 'recordadmin-buttoncreate' => 'Създаване',
 154+ 'recordadmin-edit' => 'Редактиране на $1',
 155+ 'recordadmin-updateerror' => 'Възникна грешка по време на обновяването',
 156+ 'recordadmin-buttonsave' => 'Съхраняване',
 157+ 'recordadmin-viewlink' => 'преглеждане',
 158+ 'recordadmin-editlink' => 'редактиране',
 159+);
 160+
 161+/** German (Deutsch)
 162+ * @author Imre
 163+ * @author Melancholie
 164+ * @author Revolus
 165+ * @author Umherirrender
 166+ */
 167+$messages['de'] = array(
 168+ 'recordadmin' => 'Aufzeichnungsadministrierung',
 169+ 'recordadmin-desc' => 'Eine [[Special:RecordAdmin|spezielle Seite]] zum Finden und Editieren der Aufzeichnungsseiten mittels eines Formulars',
 170+ 'recordadmin-category' => 'Aufzeichnungen',
 171+ 'recordadmin-select' => 'Wähle den Aufzeichnungstypen, nach dem gesucht werden soll',
 172+ 'recordadmin-newsearch' => 'Neue $1-Suche',
 173+ 'recordadmin-newrecord' => 'Wähle einen anderen Aufzeichnungstypen',
 174+ 'recordadmin-submit' => 'Übermitteln',
 175+ 'recordadmin-create' => 'Finde oder Erstelle eine „$1“-Aufzeichnung',
 176+ 'recordadmin-alreadyexist' => 'Entschuldige, „$1“ existiert bereits!',
 177+ 'recordadmin-createsuccess' => '$1 erstellt',
 178+ 'recordadmin-createerror' => 'Während des Erstellens von $1 trat ein Fehler auf!',
 179+ 'recordadmin-badtitle' => 'Ungültiger Titel!',
 180+ 'recordadmin-recordid' => 'Aufzeichnungskennung:',
 181+ 'recordadmin-invert' => 'Auswahl umkehren',
 182+ 'recordadmin-buttonsearch' => 'Suche',
 183+ 'recordadmin-buttoncreate' => 'Erstelle',
 184+ 'recordadmin-buttonreset' => 'Zurücksetzen',
 185+ 'recordadmin-searchresult' => 'Suchergebnisse',
 186+ 'recordadmin-nomatch' => 'Keine passenden Aufzeichnungen gefunden!',
 187+ 'recordadmin-edit' => 'Ändere $1',
 188+ 'recordadmin-typeupdated' => '$1 Werte aktualisiert',
 189+ 'recordadmin-updatesuccess' => '$1 aktualisiert',
 190+ 'recordadmin-updateerror' => 'Während der Aktualisierung trat ein Fehler auf',
 191+ 'recordadmin-buttonsave' => 'Speichern',
 192+ 'recordadmin-noform' => 'Es gibt kein Formular für „$1“-Aufzeichnungen!',
 193+ 'recordadmin-createlink' => '<a href=$1>erstelle eins</a>',
 194+ 'recordadmin-newcreated' => 'Neues $1 auf einem öffentlichen Formular erstellt',
 195+ 'recordadmin-summary-typecreated' => 'Neues $1 erstellt',
 196+ 'recordadmin-viewlink' => 'ansehen',
 197+ 'recordadmin-editlink' => 'ändern',
 198+ 'recordadmin-created' => 'Erstellt',
 199+ 'recordadmin-actions' => 'Aktionen',
 200+ 'right-recordadmin' => 'Finde und Editiere Aufzeichnungsseiten',
 201+);
 202+
 203+/** German (formal address) (Deutsch (Sie-Form))
 204+ * @author Revolus
 205+ */
 206+$messages['de-formal'] = array(
 207+ 'recordadmin-select' => 'Ihre Prüfung dieser Seite/Version:',
 208+);
 209+
 210+/** Lower Sorbian (Dolnoserbski)
 211+ * @author Michawiki
 212+ */
 213+$messages['dsb'] = array(
 214+ 'recordadmin' => 'Administracija zapisow',
 215+ 'recordadmin-desc' => '[[Special:RecordAdmin|Specialny bok]] za pytanje a wobźěłowanje zapisowych bokow z pomocu formulara',
 216+ 'recordadmin-category' => 'Zapise',
 217+ 'recordadmin-select' => 'Wubjeŕ typ zapisa, kótaryž ma se pytaś',
 218+ 'recordadmin-newsearch' => 'Nowe pytanje $1',
 219+ 'recordadmin-newrecord' => 'Wubjeŕ drugi zapisowy typ',
 220+ 'recordadmin-submit' => 'Wótpósłaś',
 221+ 'recordadmin-create' => 'Zapis "$1" namakaś abo napóraś',
 222+ 'recordadmin-alreadyexist' => 'Wódaj, "$1" južo eksistěrujo!',
 223+ 'recordadmin-createsuccess' => '$1 napórany',
 224+ 'recordadmin-createerror' => 'Pśi wopyśe $1 napóraś jo zmólka nastała!',
 225+ 'recordadmin-badtitle' => 'Njepłaśiwy titel!',
 226+ 'recordadmin-recordid' => 'ID zapisa:',
 227+ 'recordadmin-invert' => 'Wuběrk pśewobrośiś',
 228+ 'recordadmin-buttonsearch' => 'Pytaś',
 229+ 'recordadmin-buttoncreate' => 'Napóraś',
 230+ 'recordadmin-buttonreset' => 'Anulěrowaś',
 231+ 'recordadmin-searchresult' => 'Pytańske wuslědki',
 232+ 'recordadmin-nomatch' => 'Žedne wótpowědne zapise namakane!',
 233+ 'recordadmin-edit' => '$1 se wobźěłujo',
 234+ 'recordadmin-typeupdated' => 'Kakosći $1 zaktualizěrowane',
 235+ 'recordadmin-updatesuccess' => '$1 zaktualizěrowany',
 236+ 'recordadmin-updateerror' => 'Zmólka jo nastała wob aktualizaciju',
 237+ 'recordadmin-buttonsave' => 'Składowaś',
 238+ 'recordadmin-noform' => 'Njejo formular za zapisy "$1"!',
 239+ 'recordadmin-createlink' => '<a href=$1>jaden napóraś</a>',
 240+ 'recordadmin-newcreated' => 'Nowy $1 ze zjawnego formulara napórany',
 241+ 'recordadmin-summary-typecreated' => 'Nowy $1 napórany',
 242+ 'recordadmin-viewlink' => 'woglědaś se',
 243+ 'recordadmin-editlink' => 'wobźěłaś',
 244+ 'recordadmin-created' => 'Napórany',
 245+ 'recordadmin-actions' => 'Akcije',
 246+ 'right-recordadmin' => 'Zapisowe boki namakaś a wobźěłaś',
 247+);
 248+
 249+/** Esperanto (Esperanto)
 250+ * @author Yekrats
 251+ */
 252+$messages['eo'] = array(
 253+ 'recordadmin-category' => 'Rekordoj',
 254+ 'recordadmin-newsearch' => 'Nova $1 serĉo',
 255+ 'recordadmin-submit' => 'Ek!',
 256+ 'recordadmin-create' => 'Trovi aŭ krei rikordon "$1"',
 257+ 'recordadmin-alreadyexist' => 'Bedaŭrinde, "$1" jam ekzistas!',
 258+ 'recordadmin-createsuccess' => '$1 kreita',
 259+ 'recordadmin-badtitle' => 'Fuŝa titolo!',
 260+ 'recordadmin-invert' => 'Inversigi selekton',
 261+ 'recordadmin-buttonsearch' => 'Serĉi',
 262+ 'recordadmin-buttoncreate' => 'Krei',
 263+ 'recordadmin-searchresult' => 'Rezultoj de serĉo',
 264+ 'recordadmin-edit' => 'Redaktante $1',
 265+ 'recordadmin-updatesuccess' => '$1 ĝisdatigita',
 266+ 'recordadmin-buttonsave' => 'Konservi',
 267+ 'recordadmin-createlink' => '<a href=$1>krei unu</a>',
 268+ 'recordadmin-summary-typecreated' => 'Nova $1 kreita',
 269+ 'recordadmin-viewlink' => 'vidi',
 270+ 'recordadmin-editlink' => 'redakti',
 271+ 'recordadmin-created' => 'Kreita',
 272+);
 273+
 274+/** Spanish (Español)
 275+ * @author Imre
 276+ */
 277+$messages['es'] = array(
 278+ 'recordadmin-buttonsearch' => 'Buscar',
 279+ 'recordadmin-buttoncreate' => 'Crear',
 280+ 'recordadmin-searchresult' => 'Resultados de la búsqueda',
 281+ 'recordadmin-edit' => 'Editando $1',
 282+ 'recordadmin-buttonsave' => 'Guardar',
 283+ 'recordadmin-editlink' => 'editar',
 284+);
 285+
 286+/** Estonian (Eesti)
 287+ * @author Avjoska
 288+ */
 289+$messages['et'] = array(
 290+ 'recordadmin-newsearch' => 'Uus $1 otsing',
 291+ 'recordadmin-badtitle' => 'Vale pealkiri!',
 292+ 'recordadmin-buttonsearch' => 'Otsing',
 293+ 'recordadmin-buttoncreate' => 'Loo',
 294+ 'recordadmin-searchresult' => 'Otsingu tulemused',
 295+ 'recordadmin-nomatch' => 'Sobivaid tulemusi ei leitud!',
 296+ 'recordadmin-edit' => '$1 toimetamine',
 297+ 'recordadmin-buttonsave' => 'Salvesta',
 298+ 'recordadmin-viewlink' => 'vaata',
 299+ 'recordadmin-editlink' => 'toimeta',
 300+);
 301+
 302+/** Basque (Euskara)
 303+ * @author An13sa
 304+ */
 305+$messages['eu'] = array(
 306+ 'recordadmin-badtitle' => 'Izenburu okerra!',
 307+ 'recordadmin-buttonsearch' => 'Bilatu',
 308+ 'recordadmin-buttoncreate' => 'Sortu',
 309+ 'recordadmin-viewlink' => 'ikusi',
 310+ 'recordadmin-editlink' => 'aldatu',
 311+);
 312+
 313+/** Finnish (Suomi)
 314+ * @author Str4nd
 315+ */
 316+$messages['fi'] = array(
 317+ 'recordadmin-editlink' => 'muokkaa',
 318+);
 319+
 320+/** French (Français)
 321+ * @author Grondin
 322+ * @author IAlex
 323+ */
 324+$messages['fr'] = array(
 325+ 'recordadmin' => 'Gestion des enregistrements',
 326+ 'recordadmin-desc' => 'Une page spéciale pour trouver et modifier l’enregistrement des pages par l’utilisation d’un formulaire',
 327+ 'recordadmin-category' => 'Enregistrements',
 328+ 'recordadmin-select' => 'Sélectionner le type d’enregistrement à rechercher pour',
 329+ 'recordadmin-newsearch' => 'Nouvelle recherche $1',
 330+ 'recordadmin-newrecord' => 'Sélectionner un autre type d’enregistrement',
 331+ 'recordadmin-submit' => 'Soumettre',
 332+ 'recordadmin-create' => 'Chercher ou créer un enregistrement « $1 »',
 333+ 'recordadmin-alreadyexist' => 'Désolé, « $1 » existe déjà !',
 334+ 'recordadmin-createsuccess' => '$1 creé avec succès',
 335+ 'recordadmin-createerror' => 'Une erreur est intervenue lors de la tentative de création de $1 !',
 336+ 'recordadmin-badtitle' => 'Mauvais titre!',
 337+ 'recordadmin-recordid' => 'Enregistrement ID :',
 338+ 'recordadmin-invert' => 'Inverser la sélection',
 339+ 'recordadmin-buttonsearch' => 'Rechercher',
 340+ 'recordadmin-buttoncreate' => 'Créer',
 341+ 'recordadmin-buttonreset' => 'Réinitialiser',
 342+ 'recordadmin-searchresult' => 'Résultats de la recherche',
 343+ 'recordadmin-nomatch' => 'Aucun enregistrement correspondant de trouvé !',
 344+ 'recordadmin-edit' => 'Modifier $1',
 345+ 'recordadmin-typeupdated' => 'propriété de $1 mises à jour',
 346+ 'recordadmin-updatesuccess' => '$1 mis à jour avec succès',
 347+ 'recordadmin-updateerror' => 'Une erreur a été rencontrée lors de la mise à jour',
 348+ 'recordadmin-buttonsave' => 'Sauvegarder',
 349+ 'recordadmin-noform' => 'Il n’y a aucun formulaire avec l’enregistrement « $1 » !',
 350+ 'recordadmin-createlink' => 'cliquez <a href=$1>ici</a> pour en créer un',
 351+ 'recordadmin-newcreated' => 'Nouveau $1 créé à partir d’un formulaire public',
 352+ 'recordadmin-summary-typecreated' => 'Nouveau $1 de créer',
 353+ 'recordadmin-viewlink' => 'voir',
 354+ 'recordadmin-editlink' => 'modifier',
 355+ 'recordadmin-created' => 'Créé',
 356+ 'recordadmin-actions' => 'Actions',
 357+ 'right-recordadmin' => 'Trouver et modifier les pages d’enregistrement',
 358+);
 359+
 360+/** Galician (Galego)
 361+ * @author Toliño
 362+ */
 363+$messages['gl'] = array(
 364+ 'recordadmin' => 'Xestión dos rexistros',
 365+ 'recordadmin-desc' => 'Unha [[Special:RecordAdmin|páxina especial]] para atopar e editar páxinas de rexistros usando un formulario',
 366+ 'recordadmin-category' => 'Rexistros',
 367+ 'recordadmin-select' => 'Seleccione o tipo de rexistro para procurar por',
 368+ 'recordadmin-newsearch' => 'Nova procura $1',
 369+ 'recordadmin-newrecord' => 'Seleccione outro tipo de rexistro',
 370+ 'recordadmin-submit' => 'Enviar',
 371+ 'recordadmin-create' => 'Atopar ou crear un rexistro "$1"',
 372+ 'recordadmin-alreadyexist' => 'Sentímolo, "$1" xa existe!',
 373+ 'recordadmin-createsuccess' => '"$1" creado',
 374+ 'recordadmin-createerror' => 'Ocorreu un erro ao intentar crear o $1!',
 375+ 'recordadmin-badtitle' => 'Título incorrecto!',
 376+ 'recordadmin-recordid' => 'ID do rexistro:',
 377+ 'recordadmin-invert' => 'Inverter a selección',
 378+ 'recordadmin-buttonsearch' => 'Procurar',
 379+ 'recordadmin-buttoncreate' => 'Crear',
 380+ 'recordadmin-buttonreset' => 'Restablecer',
 381+ 'recordadmin-searchresult' => 'Resultados da procura',
 382+ 'recordadmin-nomatch' => 'Non se atoparon rexistros que coincidisen!',
 383+ 'recordadmin-edit' => 'Editando "$1"',
 384+ 'recordadmin-typeupdated' => 'Propiedades de "$1" actualizadas',
 385+ 'recordadmin-updatesuccess' => '"$1" actualizado',
 386+ 'recordadmin-updateerror' => 'Ocorreu un erro durante a actualización',
 387+ 'recordadmin-buttonsave' => 'Gardar',
 388+ 'recordadmin-noform' => 'Non hai ningún formulario asociado cos rexistros "$1"!',
 389+ 'recordadmin-createlink' => '<a href=$1>crear un</a>',
 390+ 'recordadmin-newcreated' => 'Novo $1 creado a partir dun formulario público',
 391+ 'recordadmin-summary-typecreated' => 'Novo $1 creado',
 392+ 'recordadmin-viewlink' => 'ver',
 393+ 'recordadmin-editlink' => 'editar',
 394+ 'recordadmin-created' => 'Creado',
 395+ 'recordadmin-actions' => 'Accións',
 396+ 'right-recordadmin' => 'Atopar e editar páxinas de rexistro',
 397+);
 398+
 399+/** Swiss German (Alemannisch)
 400+ * @author Als-Holder
 401+ */
 402+$messages['gsw'] = array(
 403+ 'recordadmin' => 'Ufzeichnigsverwaltig',
 404+ 'recordadmin-desc' => 'E [[Special:RecordAdmin|speziälli Syte]] zum Finde un Bearbeite vu dr Ufzeichnigssyte mit eme Formular',
 405+ 'recordadmin-category' => 'Ufzeichnige',
 406+ 'recordadmin-select' => 'Wehl dr Ufzeichnigstyp, wu soll gsuecht wäre',
 407+ 'recordadmin-newsearch' => 'Neji $1-Suechi',
 408+ 'recordadmin-newrecord' => 'Wehl en andere Ufzeichnigstyp',
 409+ 'recordadmin-submit' => 'Ibertrage',
 410+ 'recordadmin-create' => 'Find e „$1“-Ufzeichnig oder leg eini aa',
 411+ 'recordadmin-alreadyexist' => 'Excusez, „$1“ git s scho!',
 412+ 'recordadmin-createsuccess' => '$1 aagleit',
 413+ 'recordadmin-createerror' => 'Derwylscht $1 aagleit woren isch, isch e Fähler ufträtte!',
 414+ 'recordadmin-badtitle' => 'Nit giltige Titel!',
 415+ 'recordadmin-recordid' => 'Ufzeichnigskännig:',
 416+ 'recordadmin-invert' => 'Uuswahl umchehre',
 417+ 'recordadmin-buttonsearch' => 'Suechi',
 418+ 'recordadmin-buttoncreate' => 'Leg aa',
 419+ 'recordadmin-buttonreset' => 'Zruggsetze',
 420+ 'recordadmin-searchresult' => 'Suechergebnis',
 421+ 'recordadmin-nomatch' => 'Kei Ufzeichnige gfunde, wu passe!',
 422+ 'recordadmin-edit' => '$1 ändere',
 423+ 'recordadmin-typeupdated' => '$1 Wärt aktualisiert',
 424+ 'recordadmin-updatesuccess' => '$1 aktualisiert',
 425+ 'recordadmin-updateerror' => 'Derwylscht aktualisiert woren isch, isch e Fähler ufträtte!',
 426+ 'recordadmin-buttonsave' => 'Spychere',
 427+ 'recordadmin-noform' => 'S git kei Formular fir „$1“-Ufzeichnige!',
 428+ 'recordadmin-createlink' => '<a href=$1>leg eis aa</a>',
 429+ 'recordadmin-newcreated' => 'Nej $1 uf eme effentlige Formular aagleit',
 430+ 'recordadmin-summary-typecreated' => 'Nej $1 aagleit',
 431+ 'recordadmin-viewlink' => 'aaluege',
 432+ 'recordadmin-editlink' => 'ändere',
 433+ 'recordadmin-created' => 'Aagleit',
 434+ 'recordadmin-actions' => 'Aktione',
 435+ 'right-recordadmin' => 'Find Ufzeichnigssyte un bearbeit si',
 436+);
 437+
 438+/** Hebrew (עברית)
 439+ * @author Rotemliss
 440+ * @author YaronSh
 441+ */
 442+$messages['he'] = array(
 443+ 'recordadmin' => 'ניהול רשומות',
 444+ 'recordadmin-desc' => '[[Special:RecordAdmin|דף מיוחד]] למציאה ועריכה של דפי רשומות באמצעות טופס',
 445+ 'recordadmin-category' => 'רשומות',
 446+ 'recordadmin-select' => 'בחירת סוג הרשומות לחיפוש',
 447+ 'recordadmin-newsearch' => 'חיפוש $1 חדש',
 448+ 'recordadmin-newrecord' => 'בחירת סוג אחר של רשומות',
 449+ 'recordadmin-submit' => 'שליחה',
 450+ 'recordadmin-create' => 'מציאת או יצירת רשומת "$1"',
 451+ 'recordadmin-alreadyexist' => '"$1" כבר קיים!',
 452+ 'recordadmin-createsuccess' => '$1 נוצרה',
 453+ 'recordadmin-createerror' => 'אירעה שגיאה בעת הנסיון ליצור את $1!',
 454+ 'recordadmin-badtitle' => 'כותרת בלתי תקינה!',
 455+ 'recordadmin-recordid' => 'מספר הרשומה:',
 456+ 'recordadmin-invert' => 'הפיכת הבחירה',
 457+ 'recordadmin-buttonsearch' => 'חיפוש',
 458+ 'recordadmin-buttoncreate' => 'יצירה',
 459+ 'recordadmin-buttonreset' => 'איפוס',
 460+ 'recordadmin-searchresult' => 'תוצאות החיפוש',
 461+ 'recordadmin-nomatch' => 'לא נמצאו רשומות תואמות!',
 462+ 'recordadmin-edit' => 'עריכת $1',
 463+ 'recordadmin-typeupdated' => 'עודכנו $1 מאפיינים',
 464+ 'recordadmin-updatesuccess' => '$1 עודכנה',
 465+ 'recordadmin-updateerror' => 'אירעה שגיאה במהלך העדכון',
 466+ 'recordadmin-buttonsave' => 'שמירה',
 467+ 'recordadmin-noform' => 'אין טופס המשוייך לרשומות "$1"!',
 468+ 'recordadmin-createlink' => '<a href=$1>יצירת אחת כזו</a>',
 469+ 'recordadmin-newcreated' => 'נוצרה $1 חדשה מטופס ציבורי',
 470+ 'recordadmin-summary-typecreated' => 'נוצרה $1 חדשה',
 471+ 'recordadmin-viewlink' => 'הצגה',
 472+ 'recordadmin-editlink' => 'עריכה',
 473+ 'recordadmin-created' => 'נוצרה',
 474+ 'recordadmin-actions' => 'פעולות',
 475+ 'right-recordadmin' => 'מציאת ועריכת דפי רשומות',
 476+);
 477+
 478+/** Upper Sorbian (Hornjoserbsce)
 479+ * @author Michawiki
 480+ */
 481+$messages['hsb'] = array(
 482+ 'recordadmin' => 'Administracija zregistrowanjow',
 483+ 'recordadmin-desc' => '[[Special:RecordAdmin|Specialna strona]] za namakanje a wobdźěłowanje stronow zregistrowanjow z pomocu formulara',
 484+ 'recordadmin-category' => 'Zregistrowanja',
 485+ 'recordadmin-select' => 'Wubjer typ zregistrowanjow, kotrež so maja pytać',
 486+ 'recordadmin-newsearch' => 'Nowe pytanje $1',
 487+ 'recordadmin-newrecord' => 'Druhi typ zregistrowanja wubrać',
 488+ 'recordadmin-submit' => 'Wotpósłać',
 489+ 'recordadmin-create' => 'Zregistrowanje "$1" namakać abo wutworić',
 490+ 'recordadmin-alreadyexist' => 'Wodaj, "$1" hižo eksistuje!',
 491+ 'recordadmin-createsuccess' => '$1 wutworjene',
 492+ 'recordadmin-createerror' => 'Při popyće $1 wutworić je zmylk nastał!',
 493+ 'recordadmin-badtitle' => 'Wopačny titul!',
 494+ 'recordadmin-recordid' => 'ID zregistrowanja:',
 495+ 'recordadmin-invert' => 'Wuběr wobroćić',
 496+ 'recordadmin-buttonsearch' => 'Pytać',
 497+ 'recordadmin-buttoncreate' => 'Wutworić',
 498+ 'recordadmin-buttonreset' => 'Wróćo stajić',
 499+ 'recordadmin-searchresult' => 'Pytanske wuslědki',
 500+ 'recordadmin-nomatch' => 'Žane wotpowědowace zregistrowanja namakane!',
 501+ 'recordadmin-edit' => '$1 so wobdźěłuje',
 502+ 'recordadmin-typeupdated' => '$1 {{PLURAL:$1|kajkosć zaktualizowana|kajkosći zaktualizowanej|kajkosće zaktualizowane|kajkosćow zaktualizowane}}',
 503+ 'recordadmin-updatesuccess' => '$1 zaktualizowany',
 504+ 'recordadmin-updateerror' => 'Při aktualizaciji je zmylk nastał',
 505+ 'recordadmin-buttonsave' => 'Składować',
 506+ 'recordadmin-noform' => 'Njeje formular za zregistrowanja "$1"!',
 507+ 'recordadmin-createlink' => '<a href=$1>jedne wutworić</a>',
 508+ 'recordadmin-newcreated' => 'Nowy $1 ze zjawneho formulara wutworjeny',
 509+ 'recordadmin-summary-typecreated' => 'Nowy $1 wutworjeny',
 510+ 'recordadmin-viewlink' => 'wobhladać sej',
 511+ 'recordadmin-editlink' => 'wobdźěłać',
 512+ 'recordadmin-created' => 'Wutworjeny',
 513+ 'recordadmin-actions' => 'Akcije',
 514+ 'right-recordadmin' => 'Strony zregistrowanjow namakać a wobdźěłać',
 515+);
 516+
 517+/** Interlingua (Interlingua)
 518+ * @author McDutchie
 519+ */
 520+$messages['ia'] = array(
 521+ 'recordadmin' => 'Gestion de datos',
 522+ 'recordadmin-desc' => 'Un [[Special:RecordAdmin|pagina special]] pro cercar e modificar le paginas de datos con un formulario',
 523+ 'recordadmin-category' => 'Datos',
 524+ 'recordadmin-select' => 'Selige le typo de datos a cercar',
 525+ 'recordadmin-newsearch' => 'Nove recerca $1',
 526+ 'recordadmin-newrecord' => 'Selige un altere typo de datos',
 527+ 'recordadmin-submit' => 'Submitter',
 528+ 'recordadmin-create' => 'Cercar o crear un dato "$1"',
 529+ 'recordadmin-alreadyexist' => 'Pardono, "$1" ja existe!',
 530+ 'recordadmin-createsuccess' => '$1 create',
 531+ 'recordadmin-createerror' => 'Un error occurreva durante le creation de $1!',
 532+ 'recordadmin-badtitle' => 'Titulo invalide!',
 533+ 'recordadmin-recordid' => 'ID del dato:',
 534+ 'recordadmin-invert' => 'Inverter selection',
 535+ 'recordadmin-buttonsearch' => 'Cercar',
 536+ 'recordadmin-buttoncreate' => 'Crear',
 537+ 'recordadmin-buttonreset' => 'Reinitiar',
 538+ 'recordadmin-searchresult' => 'Resultatos del recerca',
 539+ 'recordadmin-nomatch' => 'Nulle datos correspondente trovate!',
 540+ 'recordadmin-edit' => 'Modificante $1',
 541+ 'recordadmin-typeupdated' => '$1 proprietates actualisate',
 542+ 'recordadmin-updatesuccess' => '$1 actualisate',
 543+ 'recordadmin-updateerror' => 'Un error occurreva durante le actualisation',
 544+ 'recordadmin-buttonsave' => 'Immagazinar',
 545+ 'recordadmin-noform' => 'Non existe un formulario associate con datos "$1"!',
 546+ 'recordadmin-createlink' => '<a href=$1>crear un</a>',
 547+ 'recordadmin-newcreated' => 'Nove $1 create ab formulario public',
 548+ 'recordadmin-summary-typecreated' => 'Nove $1 create',
 549+ 'recordadmin-viewlink' => 'vider',
 550+ 'recordadmin-editlink' => 'modificar',
 551+ 'recordadmin-created' => 'Create',
 552+ 'recordadmin-actions' => 'Actiones',
 553+ 'right-recordadmin' => 'Cercar e modificar paginas de datos',
 554+);
 555+
 556+/** Japanese (日本語)
 557+ * @author Fryed-peach
 558+ * @author Hosiryuhosi
 559+ */
 560+$messages['ja'] = array(
 561+ 'recordadmin' => '記録管理',
 562+ 'recordadmin-desc' => 'フォームを用いて記録ページを検索および編集するための[[Special:RecordAdmin|特別ページ]]',
 563+ 'recordadmin-category' => '記録',
 564+ 'recordadmin-select' => '検索したい記録の種類を選んでください',
 565+ 'recordadmin-newsearch' => '新規$1検索',
 566+ 'recordadmin-newrecord' => '別の記録種類を選んでください',
 567+ 'recordadmin-submit' => '送信',
 568+ 'recordadmin-create' => '「$1」記録を検索または作成する',
 569+ 'recordadmin-alreadyexist' => '「$1」は既に存在します。',
 570+ 'recordadmin-createsuccess' => '$1 を作成',
 571+ 'recordadmin-createerror' => '$1 の作成処理中にエラーが発生しました!',
 572+ 'recordadmin-badtitle' => 'ページ名が不正です!',
 573+ 'recordadmin-recordid' => '記録ID:',
 574+ 'recordadmin-invert' => '選択を反転',
 575+ 'recordadmin-buttonsearch' => '検索',
 576+ 'recordadmin-buttoncreate' => '作成',
 577+ 'recordadmin-buttonreset' => 'リセット',
 578+ 'recordadmin-searchresult' => '検索結果',
 579+ 'recordadmin-nomatch' => '一致する記録は見つかりませんでした!',
 580+ 'recordadmin-edit' => '$1 を編集中',
 581+ 'recordadmin-typeupdated' => '$1 のプロパティを更新',
 582+ 'recordadmin-updatesuccess' => '$1 を更新',
 583+ 'recordadmin-updateerror' => '更新中にエラーが発生',
 584+ 'recordadmin-buttonsave' => '保存',
 585+ 'recordadmin-noform' => '「$1」記録と関連付けられたフォームはありません。',
 586+ 'recordadmin-createlink' => '<a href=$1>作成</a>',
 587+ 'recordadmin-newcreated' => '新規$1が公開フォームから作成されました',
 588+ 'recordadmin-summary-typecreated' => '新規$1が作成されました',
 589+ 'recordadmin-viewlink' => '表示',
 590+ 'recordadmin-editlink' => '編集',
 591+ 'recordadmin-created' => '作成',
 592+ 'recordadmin-actions' => '操作',
 593+ 'right-recordadmin' => '記録ページを検索および編集する',
 594+);
 595+
 596+/** Khmer (ភាសាខ្មែរ)
 597+ * @author Lovekhmer
 598+ * @author Thearith
 599+ */
 600+$messages['km'] = array(
 601+ 'recordadmin' => 'កណត់ត្រា​ការគ្រប់គ្រង',
 602+ 'recordadmin-category' => 'កំណត់ត្រា​នានា',
 603+ 'recordadmin-select' => 'ជ្រើស​ប្រភេទ​នៃ​កំណត់ត្រ​ដើម្បី​ស្វែងរក​សម្រាប់',
 604+ 'recordadmin-newsearch' => 'ថ្មី $1 ស្វែងរក',
 605+ 'recordadmin-newrecord' => 'ជ្រើស​ប្រភេទ​កំណត់ត្រ​មួយ​ផ្សេង​ទៀត',
 606+ 'recordadmin-submit' => 'ដាក់ស្នើ',
 607+ 'recordadmin-create' => 'ស្វែងរក ឬ បង្កើត​កំណត់ត្រា "$1"',
 608+ 'recordadmin-alreadyexist' => 'សូម​អភ័យទោស, "$1" មាន​រួចហើយ​!',
 609+ 'recordadmin-createsuccess' => '$1 ត្រូវ​បាន​បង្កើត',
 610+ 'recordadmin-createerror' => 'កំហុស​មួយ​បាន​កើតឡើង ខណៈដែល​កំពុង​ព្យាយាម​បង្កើត $1',
 611+ 'recordadmin-badtitle' => 'ចំណងជើង​មិនល្អ',
 612+ 'recordadmin-invert' => 'ដាក់បញ្ច្រាស​ជម្រើស',
 613+ 'recordadmin-buttonsearch' => 'ស្វែងរក',
 614+ 'recordadmin-buttoncreate' => 'បង្កើត',
 615+ 'recordadmin-buttonreset' => 'កំណត់ឡើងវិញ',
 616+ 'recordadmin-searchresult' => 'លទ្ធផល​ស្វែងរក',
 617+ 'recordadmin-edit' => 'កំពុង​កែប្រែ​ $1',
 618+ 'recordadmin-updatesuccess' => '$1 ត្រូវ​បាន​ធ្វើឱ្យទាន់សម័យ',
 619+ 'recordadmin-updateerror' => 'កំហុស​មួយ​បាន​កើតឡើង កំលុងពេល​ធ្វើឱ្យទាន់សម័យ',
 620+ 'recordadmin-buttonsave' => 'រក្សាទុក',
 621+ 'recordadmin-summary-typecreated' => 'ថ្មី $1 ត្រូវ​បាន​បង្កើត',
 622+ 'recordadmin-viewlink' => 'មើល',
 623+ 'recordadmin-editlink' => 'កែប្រែ',
 624+ 'recordadmin-created' => 'បាន​បង្កើត',
 625+ 'right-recordadmin' => 'ស្វែងរក និង​កែប្រែ​ទំព័រ​កំណត់ត្រា',
 626+);
 627+
 628+/** Ripoarisch (Ripoarisch)
 629+ * @author Purodha
 630+ */
 631+$messages['ksh'] = array(
 632+ 'recordadmin' => 'Datesätz verwallde',
 633+ 'recordadmin-desc' => 'En [[Special:RecordAdmin|Söndersigg]] för Sigge met Datesätz ze fenge un övver e Fommulaa zo ändere.',
 634+ 'recordadmin-category' => 'Datesätz',
 635+ 'recordadmin-select' => 'Donn de Zoot Datesatz ußsöke, för donoh ze söke',
 636+ 'recordadmin-newsearch' => 'Neu $1 söke',
 637+ 'recordadmin-newrecord' => 'Sök en ander Zoot Datesatz uß',
 638+ 'recordadmin-submit' => 'Loß Jonn!',
 639+ 'recordadmin-create' => 'Donn ene „$1“-Datesatz fenge udder ändere',
 640+ 'recordadmin-alreadyexist' => '„$1“ jitt et ald.',
 641+ 'recordadmin-createsuccess' => '$1 aanjelaat',
 642+ 'recordadmin-createerror' => 'Ene Fääler eß opjetrodde: neu $1 kunnt nit aanjelaat wääde.',
 643+ 'recordadmin-badtitle' => 'Dä Tittel es onjöltesch!',
 644+ 'recordadmin-recordid' => 'Däm Datesatz sing Nommer:',
 645+ 'recordadmin-invert' => 'Ußwahl ömdriehe',
 646+ 'recordadmin-buttonsearch' => 'Söke',
 647+ 'recordadmin-buttoncreate' => 'Aanläje',
 648+ 'recordadmin-buttonreset' => 'Zeröksäze',
 649+ 'recordadmin-searchresult' => 'Wat bem Söke eruß kohm',
 650+ 'recordadmin-nomatch' => 'Kein zopaß Datesätz jefonge.',
 651+ 'recordadmin-edit' => '$1 ändere',
 652+ 'recordadmin-typeupdated' => 'De Date fun däm $1 sin jeändert',
 653+ 'recordadmin-updatesuccess' => '$1 om neue Stand',
 654+ 'recordadmin-updateerror' => 'Beim Ändere es jet donävve jejange',
 655+ 'recordadmin-buttonsave' => 'Dä Datesatz avspeichere!',
 656+ 'recordadmin-noform' => 'Mer han kei Fommulaa för de „$1“-Datesätz',
 657+ 'recordadmin-createlink' => '<a href="$1">ein aanlääje</a>',
 658+ 'recordadmin-newcreated' => 'Neu $1 övver e öffentlesch Fommulaa aanjelaat',
 659+ 'recordadmin-summary-typecreated' => 'Neu $1 aanjelaat',
 660+ 'recordadmin-viewlink' => 'aankike',
 661+ 'recordadmin-editlink' => 'ändere',
 662+ 'recordadmin-created' => 'Neu aanjelaat',
 663+ 'recordadmin-actions' => 'Axjohne',
 664+ 'right-recordadmin' => 'Datesätz fenge un ändere',
 665+);
 666+
 667+/** Luxembourgish (Lëtzebuergesch)
 668+ * @author Robby
 669+ */
 670+$messages['lb'] = array(
 671+ 'recordadmin-newsearch' => 'Nei $1 sichen',
 672+ 'recordadmin-alreadyexist' => 'Pardon, "$1" gëtt et schonn!',
 673+ 'recordadmin-badtitle' => 'Schlechten Titel!',
 674+ 'recordadmin-invert' => 'Auswiel ëmdréinen',
 675+ 'recordadmin-buttonsearch' => 'Sichen',
 676+ 'recordadmin-buttonreset' => 'Zrécksetzen',
 677+ 'recordadmin-searchresult' => 'Resultater vun der Sich',
 678+ 'recordadmin-edit' => '$1 änneren',
 679+ 'recordadmin-updatesuccess' => '$1 ass aktualiséiert',
 680+ 'recordadmin-updateerror' => 'Beim Aktualiséieren ass e Feeler geschitt',
 681+ 'recordadmin-buttonsave' => 'Späicheren',
 682+ 'recordadmin-viewlink' => 'weisen',
 683+ 'recordadmin-editlink' => 'änneren',
 684+ 'recordadmin-created' => 'Ugeluecht',
 685+ 'recordadmin-actions' => 'Aktiounen',
 686+);
 687+
 688+/** Nahuatl (Nāhuatl)
 689+ * @author Fluence
 690+ */
 691+$messages['nah'] = array(
 692+ 'recordadmin-badtitle' => '¡Ahcualli tōcāitl!',
 693+ 'recordadmin-buttonsearch' => 'Titlatēmōz',
 694+ 'recordadmin-buttoncreate' => 'Ticchīhuāz',
 695+ 'recordadmin-edit' => 'Ticpatlacah $1',
 696+ 'recordadmin-updateerror' => 'Ahcuallōtl ihcuāc ōmoyancuīya',
 697+ 'recordadmin-buttonsave' => 'Ticchīhuāz',
 698+ 'recordadmin-summary-typecreated' => 'Yancuīc $1 ōmochīuh',
 699+ 'recordadmin-viewlink' => 'tiquittāz',
 700+ 'recordadmin-editlink' => 'ticpatlāz',
 701+ 'recordadmin-created' => 'Ōmochīuh',
 702+);
 703+
 704+/** Dutch (Nederlands)
 705+ * @author Siebrand
 706+ * @author Tvdm
 707+ */
 708+$messages['nl'] = array(
 709+ 'recordadmin' => 'Gegevensbeheer',
 710+ 'recordadmin-desc' => "Een [[Special:RecordAdmin|speciale pagina]] voor het zoeken en bewerken van gegevenspagina's die een formulier gebruiken",
 711+ 'recordadmin-category' => 'Gegevens',
 712+ 'recordadmin-select' => 'Geef aan welk type gegeven te zoeken',
 713+ 'recordadmin-newsearch' => 'Nieuwe zoekopdracht voor $1',
 714+ 'recordadmin-newrecord' => 'Een ander gegevenstype selecteren',
 715+ 'recordadmin-submit' => 'OK',
 716+ 'recordadmin-create' => 'Een gegeven van het type "$1" zoeken of aanmaken',
 717+ 'recordadmin-alreadyexist' => '"$1" bestaat al!',
 718+ 'recordadmin-createsuccess' => '$1 aangemaakt',
 719+ 'recordadmin-createerror' => 'Er is een fout opgetreden bij het aanmaken van het $1.',
 720+ 'recordadmin-badtitle' => 'Onjuiste paginanaam!',
 721+ 'recordadmin-recordid' => 'Gegevensnummer:',
 722+ 'recordadmin-invert' => 'Omgekeerde selectie',
 723+ 'recordadmin-buttonsearch' => 'Zoeken',
 724+ 'recordadmin-buttoncreate' => 'Aanmaken',
 725+ 'recordadmin-buttonreset' => 'Fomulier wissen',
 726+ 'recordadmin-searchresult' => 'Zoekresultaten',
 727+ 'recordadmin-nomatch' => 'Er zijn geen gegevens gevonden die aan de voorwaarden voldoen.',
 728+ 'recordadmin-edit' => 'Bezig met bewerken van $1',
 729+ 'recordadmin-typeupdated' => 'De eigenschappen van $1 zijn bijgewerkt',
 730+ 'recordadmin-updatesuccess' => '$1 is bijgewerkt',
 731+ 'recordadmin-updateerror' => 'Er is een fout opgetreden tijdens het bijwerken',
 732+ 'recordadmin-buttonsave' => 'Opslaan',
 733+ 'recordadmin-noform' => 'Er is geen formulier gekoppeld aan gegevens van het type "$1"!',
 734+ 'recordadmin-createlink' => '<a href=$1>aanmaken</a>',
 735+ 'recordadmin-newcreated' => 'Nieuwe $1 aangemaakt van openbaar formulier',
 736+ 'recordadmin-summary-typecreated' => 'Nieuwe $1 aangemaakt',
 737+ 'recordadmin-viewlink' => 'bekijken',
 738+ 'recordadmin-editlink' => 'bewerken',
 739+ 'recordadmin-created' => 'Aangemaakt',
 740+ 'recordadmin-actions' => 'Handelingen',
 741+ 'right-recordadmin' => "Gegevenspagina's zoeken en bewerken",
 742+);
 743+
 744+/** Norwegian Nynorsk (‪Norsk (nynorsk)‬)
 745+ * @author Gunnernett
 746+ * @author Harald Khan
 747+ */
 748+$messages['nn'] = array(
 749+ 'recordadmin' => 'Oppføringshandsaming',
 750+ 'recordadmin-desc' => 'Ei [[Special:RecordAdmin|spesialside]] for å finna og redigera oppføringar ved å bruka eit skjema',
 751+ 'recordadmin-category' => 'Oppføringar',
 752+ 'recordadmin-select' => 'Vel type oppføring å søkja etter',
 753+ 'recordadmin-newsearch' => 'Nytt søk etter $1',
 754+ 'recordadmin-newrecord' => 'Vel ein annan type oppføring',
 755+ 'recordadmin-submit' => 'Send',
 756+ 'recordadmin-create' => 'Finn eller lag ei "$1" oppføring',
 757+ 'recordadmin-alreadyexist' => '«$1» finst frå før.',
 758+ 'recordadmin-createsuccess' => '$1 er oppretta',
 759+ 'recordadmin-createerror' => 'Ein feil oppstod under opprettinga av $1!',
 760+ 'recordadmin-badtitle' => 'Ugyldig tittel!',
 761+ 'recordadmin-recordid' => 'Oppførings-ID:',
 762+ 'recordadmin-invert' => 'Vend om utval',
 763+ 'recordadmin-buttonsearch' => 'Søk',
 764+ 'recordadmin-buttoncreate' => 'Opprett',
 765+ 'recordadmin-buttonreset' => 'Still attende',
 766+ 'recordadmin-searchresult' => 'Søkjeresultat',
 767+ 'recordadmin-nomatch' => 'Ingen høvelege resultat funne!',
 768+ 'recordadmin-edit' => 'Endrar $1',
 769+ 'recordadmin-typeupdated' => 'Eigenskapane til $1 blei oppdaterte',
 770+ 'recordadmin-updatesuccess' => '$1 er oppdatert',
 771+ 'recordadmin-updateerror' => 'Ein feil oppstod under oppdatering',
 772+ 'recordadmin-buttonsave' => 'Lagra',
 773+ 'recordadmin-noform' => 'Det er ikkje knytt eit skjema til oppføringa «$1»!',
 774+ 'recordadmin-createlink' => '<a href=$1>opprett ein</a>',
 775+ 'recordadmin-newcreated' => 'Ny $1 laga frå eit offentleg skjema',
 776+ 'recordadmin-summary-typecreated' => 'Ny $1 laga til',
 777+ 'recordadmin-viewlink' => 'sjå',
 778+ 'recordadmin-editlink' => 'endra',
 779+ 'recordadmin-created' => 'Oppretta',
 780+ 'recordadmin-actions' => 'Handlingar',
 781+ 'right-recordadmin' => 'Finn og gjer endringar på oppføringssider',
 782+);
 783+
 784+/** Occitan (Occitan)
 785+ * @author Cedric31
 786+ */
 787+$messages['oc'] = array(
 788+ 'recordadmin' => 'Gestion dels enregistraments',
 789+ 'recordadmin-desc' => 'Una pagina especiala per trobar e modificar l’enregistrament de las paginas per l’utilizacion d’un formulari',
 790+ 'recordadmin-category' => 'Enregistraments',
 791+ 'recordadmin-select' => 'Seleccionar lo tipe d’enregistrament de recercar per',
 792+ 'recordadmin-newsearch' => 'Recèrca novèla $1',
 793+ 'recordadmin-newrecord' => 'Seleccionar un autre tipe d’enregistrament',
 794+ 'recordadmin-submit' => 'Sometre',
 795+ 'recordadmin-create' => 'Cercar o crear un enregistrament « $1 »',
 796+ 'recordadmin-alreadyexist' => 'O planhèm, « $1 » existís ja !',
 797+ 'recordadmin-createsuccess' => '$1 creat amb succès',
 798+ 'recordadmin-createerror' => 'Una error es intervenguda al moment de la temptativa de creacion de $1 !',
 799+ 'recordadmin-badtitle' => 'Títol marrit!',
 800+ 'recordadmin-recordid' => 'Enregistrament ID :',
 801+ 'recordadmin-invert' => 'Inversar la seleccion',
 802+ 'recordadmin-buttonsearch' => 'Recercar',
 803+ 'recordadmin-buttoncreate' => 'Crear',
 804+ 'recordadmin-buttonreset' => 'Tornar inicializar',
 805+ 'recordadmin-searchresult' => 'Resultats de la recèrca',
 806+ 'recordadmin-nomatch' => "Cap d'enregistrament correspondent pas trobat !",
 807+ 'recordadmin-edit' => 'Modificar $1',
 808+ 'recordadmin-typeupdated' => 'proprietat de $1 mesas a jorn',
 809+ 'recordadmin-updatesuccess' => '$1 mes a jorn amb succès',
 810+ 'recordadmin-updateerror' => 'Una error es estat rencontrada al moment de la mesa a jorn',
 811+ 'recordadmin-buttonsave' => 'Salvar',
 812+ 'recordadmin-noform' => 'I a pas cap de formulari amb l’enregistrament « $1 » !',
 813+ 'recordadmin-createlink' => 'clicatz <a href=$1>aicí</a> per ne crear un',
 814+ 'recordadmin-newcreated' => '$1 novèl creat a partir d’un formulari public',
 815+ 'recordadmin-summary-typecreated' => '$1 novèl de crear',
 816+ 'recordadmin-viewlink' => 'veire',
 817+ 'recordadmin-editlink' => 'modificar',
 818+ 'recordadmin-created' => 'Creat',
 819+ 'recordadmin-actions' => 'Accions',
 820+ 'right-recordadmin' => 'Trobar e modificar las paginas d’enregistrament',
 821+);
 822+
 823+/** Polish (Polski)
 824+ * @author Derbeth
 825+ * @author Leinad
 826+ */
 827+$messages['pl'] = array(
 828+ 'recordadmin' => 'Administracja rekordami',
 829+ 'recordadmin-desc' => '[[Special:RecordAdmin|Strona specjalna]] służąca do wyszukiwania i edytowania stron ze zbiorami danych (rekordami) przy użyciu formularza',
 830+ 'recordadmin-category' => 'Rekordy',
 831+ 'recordadmin-select' => 'Wybierz typ rekordu, którego chcesz szukać',
 832+ 'recordadmin-newsearch' => 'Nowe wyszukiwanie $1',
 833+ 'recordadmin-newrecord' => 'Wybierz inny typ rekordu',
 834+ 'recordadmin-submit' => 'OK',
 835+ 'recordadmin-create' => 'Znajdź lub utwórz rekord „$1”',
 836+ 'recordadmin-alreadyexist' => 'Niestety, „$1” już istnieje!',
 837+ 'recordadmin-createsuccess' => '$1 utworzony',
 838+ 'recordadmin-createerror' => 'Wystąpił błąd podczas próby utworzenia $1!',
 839+ 'recordadmin-badtitle' => 'Niepoprawny tytuł!',
 840+ 'recordadmin-recordid' => 'ID rekordu:',
 841+ 'recordadmin-invert' => 'Odwróć wybór',
 842+ 'recordadmin-buttonsearch' => 'Szukaj',
 843+ 'recordadmin-buttoncreate' => 'Utwórz',
 844+ 'recordadmin-buttonreset' => 'Resetuj',
 845+ 'recordadmin-searchresult' => 'Wyniki wyszukiwania',
 846+ 'recordadmin-nomatch' => 'Nie znaleziono pasujących rekordów!',
 847+ 'recordadmin-edit' => 'Edytowanie $1',
 848+ 'recordadmin-typeupdated' => 'Właściwości $1 zaktualizowane',
 849+ 'recordadmin-updatesuccess' => '$1 zaktualizowane',
 850+ 'recordadmin-updateerror' => 'Wystąpił błąd w trakcie aktualizacji',
 851+ 'recordadmin-buttonsave' => 'Zapisz',
 852+ 'recordadmin-noform' => 'Brak formularza współpracującego z rekordami „$1”!',
 853+ 'recordadmin-createlink' => '<a href=$1>utwórz</a>',
 854+ 'recordadmin-newcreated' => 'Nowy $1 utworzono z publicznego formularza',
 855+ 'recordadmin-summary-typecreated' => 'Nowy $1 utworzony',
 856+ 'recordadmin-viewlink' => 'zobacz',
 857+ 'recordadmin-editlink' => 'edytuj',
 858+ 'recordadmin-created' => 'Utworzony',
 859+ 'right-recordadmin' => 'Znajdź i edytuj rekord stron',
 860+);
 861+
 862+/** Portuguese (Português)
 863+ * @author Malafaya
 864+ */
 865+$messages['pt'] = array(
 866+ 'recordadmin' => 'Administração de registos',
 867+ 'recordadmin-desc' => 'Uma [[Special:RecordAdmin|página especial]] para encontrar e editar páginas de registos usando um formulário',
 868+ 'recordadmin-category' => 'Registos',
 869+ 'recordadmin-select' => 'Selecione o tipo de registo a pesquisar',
 870+ 'recordadmin-newsearch' => 'Nova pesquisa $1',
 871+ 'recordadmin-newrecord' => 'Selecionar outro tipo de registo',
 872+ 'recordadmin-submit' => 'Submeter',
 873+ 'recordadmin-create' => 'Procurar ou criar um registo "$1"',
 874+ 'recordadmin-alreadyexist' => 'Desculpe, "$1" já existe!',
 875+ 'recordadmin-createsuccess' => '$1 criado',
 876+ 'recordadmin-createerror' => 'Ocorreu um erro ao tentar criar o $1!',
 877+ 'recordadmin-badtitle' => 'Título inválido!',
 878+ 'recordadmin-recordid' => 'ID do registo:',
 879+ 'recordadmin-invert' => 'Inverter seleção',
 880+ 'recordadmin-buttonsearch' => 'Pesquisar',
 881+ 'recordadmin-buttoncreate' => 'Criar',
 882+ 'recordadmin-buttonreset' => 'Repor',
 883+ 'recordadmin-searchresult' => 'Resultados da pesquisa',
 884+ 'recordadmin-nomatch' => 'Não foram encontrados resultados correspondentes!',
 885+ 'recordadmin-edit' => 'A editar $1',
 886+ 'recordadmin-typeupdated' => 'Propriedades de $1 atualizadas',
 887+ 'recordadmin-updatesuccess' => '$1 atualizado',
 888+ 'recordadmin-updateerror' => 'Ocorreu um erro durante a atualização',
 889+ 'recordadmin-buttonsave' => 'Gravar',
 890+ 'recordadmin-noform' => 'Não há um formulário associado com registos "$1"!',
 891+ 'recordadmin-createlink' => '<a href=$1>criar um</a>',
 892+ 'recordadmin-newcreated' => 'Novo $1 criado a partir de formulário público',
 893+ 'recordadmin-summary-typecreated' => 'Novo $1 criado',
 894+ 'recordadmin-viewlink' => 'ver',
 895+ 'recordadmin-editlink' => 'editar',
 896+ 'recordadmin-created' => 'Criado',
 897+ 'recordadmin-actions' => 'Ações',
 898+ 'right-recordadmin' => 'Encontrar e editar páginas de registos',
 899+);
 900+
 901+/** Romanian (Română)
 902+ * @author KlaudiuMihaila
 903+ */
 904+$messages['ro'] = array(
 905+ 'recordadmin-badtitle' => 'Titlu greşit!',
 906+);
 907+
 908+/** Tarandíne (Tarandíne)
 909+ * @author Joetaras
 910+ */
 911+$messages['roa-tara'] = array(
 912+ 'recordadmin-createsuccess' => '$1 ccrejete',
 913+);
 914+
 915+/** Russian (Русский)
 916+ * @author Rubin
 917+ * @author Александр Сигачёв
 918+ */
 919+$messages['ru'] = array(
 920+ 'recordadmin-submit' => 'Отправить',
 921+ 'recordadmin-buttonsearch' => 'Найти',
 922+ 'recordadmin-buttoncreate' => 'Создать',
 923+);
 924+
 925+/** Slovak (Slovenčina)
 926+ * @author Helix84
 927+ */
 928+$messages['sk'] = array(
 929+ 'recordadmin' => 'Správa záznamov',
 930+ 'recordadmin-desc' => '[[Special:RecordAdmin|Špeciálna stránka]] na hľadanie a úpravu stránok záznamov pomocou fomulára',
 931+ 'recordadmin-category' => 'Záznamy',
 932+ 'recordadmin-select' => 'Vyberte typ záznamu, ktorý sa má hľadať',
 933+ 'recordadmin-newsearch' => 'Nové hľadanie $1',
 934+ 'recordadmin-newrecord' => 'Vyberte iný typ záznamu',
 935+ 'recordadmin-submit' => 'Odoslať',
 936+ 'recordadmin-create' => 'Nájsť alebo vytvoriť záznam „$1“',
 937+ 'recordadmin-alreadyexist' => 'Ľutujeme, „$1“ už existuje.',
 938+ 'recordadmin-createsuccess' => '„$1“ vytvorený',
 939+ 'recordadmin-createerror' => 'Vyskytla sa chyba pri pokuse o vytvorenie „$1“.',
 940+ 'recordadmin-badtitle' => 'Chybný názov!',
 941+ 'recordadmin-recordid' => 'ID záznamu:',
 942+ 'recordadmin-invert' => 'Invertovať výber',
 943+ 'recordadmin-buttonsearch' => 'Hľadať',
 944+ 'recordadmin-buttoncreate' => 'Vytvoriť',
 945+ 'recordadmin-buttonreset' => 'Reset',
 946+ 'recordadmin-searchresult' => 'Výsledky hľadania',
 947+ 'recordadmin-nomatch' => 'Neboli nájdené žiadne zodpovedajúce záznamy!',
 948+ 'recordadmin-edit' => 'Upravuje sa $1',
 949+ 'recordadmin-typeupdated' => 'vlastnosti $1 aktualizované',
 950+ 'recordadmin-updatesuccess' => '$1 aktualizované',
 951+ 'recordadmin-updateerror' => 'Počas aktualizácie sa vyskytla chyba',
 952+ 'recordadmin-buttonsave' => 'Uložiť',
 953+ 'recordadmin-noform' => 'So záznamami „$1“ nie je asociovaný žiadny formulár!',
 954+ 'recordadmin-createlink' => '<a href=$1>vytvoriť ho</a>',
 955+ 'recordadmin-newcreated' => 'Nový $1 vytvorený z verejného fóra',
 956+ 'recordadmin-summary-typecreated' => 'Nový $1 vytvorený',
 957+ 'recordadmin-viewlink' => 'zobraziť',
 958+ 'recordadmin-editlink' => 'upraviť',
 959+ 'recordadmin-created' => 'Vytvorené',
 960+ 'recordadmin-actions' => 'Operácie',
 961+ 'right-recordadmin' => 'Nájsť a upravovať stránky záznamov',
 962+);
 963+
 964+/** Seeltersk (Seeltersk)
 965+ * @author Pyt
 966+ */
 967+$messages['stq'] = array(
 968+ 'recordadmin' => 'Apteekenge-Administrierenge',
 969+ 'recordadmin-desc' => 'Ne [[Special:RecordAdmin|spezielle Siede]] tou dät Fienden un Editierjen fon do Apteekenge-Sieden middels n Formular',
 970+ 'recordadmin-category' => 'Apteekengen',
 971+ 'recordadmin-select' => 'Wääl do Apteekenge-Typen, ätter do soacht wäide schäl',
 972+ 'recordadmin-newsearch' => 'Näie $1-Säike',
 973+ 'recordadmin-newrecord' => 'Wääl n uur Apteekenge-Typ',
 974+ 'recordadmin-submit' => 'Uurmiddelje',
 975+ 'recordadmin-create' => 'Fiend of moakje ne "$1"-Apteekenge',
 976+ 'recordadmin-alreadyexist' => '"$1" existiert al!',
 977+ 'recordadmin-createsuccess' => '$1 moaked',
 978+ 'recordadmin-createerror' => 'Unner dät Moakjen fon $1 tried n Failer ap!',
 979+ 'recordadmin-badtitle' => 'Uungultigen Tittel!',
 980+ 'recordadmin-recordid' => 'Apteekenge-Määrk',
 981+ 'recordadmin-invert' => 'Uutwoal uumekiere',
 982+ 'recordadmin-buttonsearch' => 'Säike',
 983+ 'recordadmin-buttoncreate' => 'Moak',
 984+ 'recordadmin-buttonreset' => 'Touräächsätte',
 985+ 'recordadmin-searchresult' => 'Säikresultoate',
 986+ 'recordadmin-nomatch' => 'Neen paasjende Apteekengen fuunen!',
 987+ 'recordadmin-edit' => 'Annerje $1',
 988+ 'recordadmin-typeupdated' => '$1 Wäide aktualisierd',
 989+ 'recordadmin-updatesuccess' => '$1 aktualisierd',
 990+ 'recordadmin-updateerror' => 'Unner ju Aktualisierenge tried n Failer ap',
 991+ 'recordadmin-buttonsave' => 'Spiekerje',
 992+ 'recordadmin-noform' => 'Dät rakt neen Formular foar "$1"-Apteekengen!',
 993+ 'recordadmin-createlink' => '<a href=$1>moak een</a>',
 994+ 'recordadmin-newcreated' => 'Näi $1 ap n eepentelk Formular moaked',
 995+ 'recordadmin-summary-typecreated' => 'Näi $1 moaked',
 996+ 'recordadmin-viewlink' => 'bekiekje',
 997+ 'recordadmin-editlink' => 'annerje',
 998+ 'recordadmin-created' => 'Moaked',
 999+ 'right-recordadmin' => 'Fiend un editier Apteekenge-Sieden',
 1000+);
 1001+
 1002+/** Telugu (తెలుగు)
 1003+ * @author Veeven
 1004+ */
 1005+$messages['te'] = array(
 1006+ 'recordadmin-alreadyexist' => 'క్షమించండి, "$1" ఇప్పటికే ఉంది!',
 1007+ 'recordadmin-buttonsearch' => 'వెతుకు',
 1008+ 'recordadmin-buttoncreate' => 'సృష్టించు',
 1009+ 'recordadmin-searchresult' => 'అన్వేషణ ఫలితాలు',
 1010+ 'recordadmin-buttonsave' => 'భద్రపరచు',
 1011+ 'recordadmin-viewlink' => 'చూడు',
 1012+ 'recordadmin-editlink' => 'మార్చు',
 1013+);
 1014+
 1015+/** Tagalog (Tagalog)
 1016+ * @author AnakngAraw
 1017+ */
 1018+$messages['tl'] = array(
 1019+ 'recordadmin' => 'Pangangasiwa ng tala (rekord)',
 1020+ 'recordadmin-desc' => 'Isang [[Special:RecordAdmin|natatanging pahina]] para sa paghahanap at pagbabago ng pahina ng mga tala/rekord na gumagamit ng isang pormularyo',
 1021+ 'recordadmin-category' => 'Mga tala (rekord)',
 1022+ 'recordadmin-select' => 'Paliin ang uri ng tala/rekord na hahanapin',
 1023+ 'recordadmin-newsearch' => 'Bagong paghahanap ng $1',
 1024+ 'recordadmin-newrecord' => 'Pumili ng iba pang uri ng tala/rekord',
 1025+ 'recordadmin-submit' => 'Ipasa/ipadala',
 1026+ 'recordadmin-create' => 'Hanapin o likhain ang isang "$1" tala/rekord',
 1027+ 'recordadmin-alreadyexist' => 'Paumanhin, umiiral na ang "$1"!',
 1028+ 'recordadmin-createsuccess' => '$1 nalikha na',
 1029+ 'recordadmin-createerror' => 'Naganap ang isang kamalian habang sinusubok na likhain ang $1!',
 1030+ 'recordadmin-badtitle' => 'Masamang pamagat!',
 1031+ 'recordadmin-recordid' => 'ID ng tala/rekord:',
 1032+ 'recordadmin-invert' => 'Baligtarin ang pagpipilian',
 1033+ 'recordadmin-buttonsearch' => 'Maghanap/Hanapin',
 1034+ 'recordadmin-buttoncreate' => 'Likhain',
 1035+ 'recordadmin-buttonreset' => 'Muling itakda',
 1036+ 'recordadmin-searchresult' => 'Kinalabasan/resulta ng paghahanap',
 1037+ 'recordadmin-nomatch' => 'Walang natagpuang mga tala/rekord na tumutugma!',
 1038+ 'recordadmin-edit' => 'Binabago ang $1',
 1039+ 'recordadmin-typeupdated' => '$1 mga pag-aari ang naisapanahon na',
 1040+ 'recordadmin-updatesuccess' => '$1 naisapanahon na',
 1041+ 'recordadmin-updateerror' => 'Naganap ang isang kamalian habang nagsasapanahon',
 1042+ 'recordadmin-buttonsave' => 'Sagipin',
 1043+ 'recordadmin-noform' => 'Walang pormularyong kaugnay ng "$1" mga tala/rekord!',
 1044+ 'recordadmin-createlink' => '<a href=$1>lumikha ng isa</a>',
 1045+ 'recordadmin-newcreated' => 'Bagong $1 nalikha na mula sa pormularyong pangmadla/publiko',
 1046+ 'recordadmin-summary-typecreated' => 'Bagong $1 nalikha na',
 1047+ 'recordadmin-viewlink' => 'tingnan',
 1048+ 'recordadmin-editlink' => 'baguhin',
 1049+ 'recordadmin-created' => 'Nilikha na',
 1050+ 'recordadmin-actions' => 'Mga galaw',
 1051+ 'right-recordadmin' => 'Hanapin at baguhin ang mga pahina ng tala/rekord',
 1052+);
 1053+
 1054+/** Vietnamese (Tiếng Việt)
 1055+ * @author Vinhtantran
 1056+ */
 1057+$messages['vi'] = array(
 1058+ 'recordadmin' => 'Quản lý bản ghi',
 1059+ 'recordadmin-desc' => 'Một [[Special:RecordAdmin|trang đặc biệt]] để tìm kiếm và sửa đổi các trang bản ghi bằng cách dùng một mẫu có sẵn',
 1060+ 'recordadmin-category' => 'Bản ghi',
 1061+ 'recordadmin-select' => 'Chọn một loại bản ghi cần tìm',
 1062+ 'recordadmin-newsearch' => 'Tìm $1 mới',
 1063+ 'recordadmin-newrecord' => 'Chọn một loại bản ghi khác',
 1064+ 'recordadmin-submit' => 'Đăng',
 1065+ 'recordadmin-create' => 'Tìm hoặc tạo một bản ghi “$1”',
 1066+ 'recordadmin-alreadyexist' => 'Xin lỗi, “$1” đã tồn tại!',
 1067+);
 1068+
 1069+/** Simplified Chinese (‪中文(简体)‬)
 1070+ * @author Gzdavidwong
 1071+ */
 1072+$messages['zh-hans'] = array(
 1073+ 'recordadmin-badtitle' => '标题错误!',
 1074+ 'recordadmin-buttonreset' => '重置',
 1075+);
 1076+
 1077+/** Traditional Chinese (‪中文(繁體)‬)
 1078+ * @author Gzdavidwong
 1079+ * @author Wrightbus
 1080+ */
 1081+$messages['zh-hant'] = array(
 1082+ 'recordadmin-badtitle' => '標題錯誤!',
 1083+ 'recordadmin-buttonreset' => '重置',
 1084+);
 1085+
Property changes on: tags/REL1_13_4/extensions/RecordAdmin/RecordAdmin.i18n.php
___________________________________________________________________
Name: svn:mergeinfo
11086 +
Name: svn:eol-style
21087 + native
Index: tags/REL1_13_4/extensions/RecordAdmin/RecordAdmin.php
@@ -0,0 +1,70 @@
 2+<?php
 3+if ( !defined( 'MEDIAWIKI' ) ) die( 'Not an entry point.' );
 4+/**
 5+ * Extension:RecordAdmin - MediaWiki extension
 6+ * {{Category:Extensions|RecordAdmin}}{{php}}{{Category:Extensions created with Template:SpecialPage}}
 7+ * @package MediaWiki
 8+ * @subpackage Extensions
 9+ * @author Aran Dunkley [http://www.organicdesign.co.nz/nad User:Nad]
 10+ * @author Bertrand GRONDIN
 11+ * @author Siebrand Mazeland
 12+ * @licence GNU General Public Licence 2.0 or later
 13+ */
 14+
 15+define( 'RECORDADMIN_VERSION', '0.5.1, 2009-01-24' );
 16+
 17+$wgRecordAdminUseNamespaces = false; # Whether record articles should be in a namespace of the same name as their type
 18+
 19+$dir = dirname( __FILE__ ) . '/';
 20+$wgExtensionMessagesFiles['RecordAdmin'] = $dir . 'RecordAdmin.i18n.php';
 21+$wgExtensionAliasesFiles['RecordAdmin'] = $dir . 'RecordAdmin.alias.php';
 22+$wgAutoloadClasses['SpecialRecordAdmin'] = $dir . 'RecordAdmin_body.php';
 23+$wgSpecialPages['RecordAdmin'] = 'SpecialRecordAdmin';
 24+$wgSpecialPageGroups['RecordAdmin'] = 'wiki';
 25+$wgRecordAdminMagic = 'recordtable';
 26+$wgRecordAdminTag = 'recordid';
 27+
 28+$wgGroupPermissions['sysop']['recordadmin'] = true;
 29+$wgAvailableRights[] = 'recordadmin';
 30+
 31+$wgExtensionFunctions[] = 'wfSetupRecordAdmin';
 32+$wgHooks['LanguageGetMagic'][] = 'wfRecordAdminLanguageGetMagic';
 33+
 34+$wgExtensionCredits['specialpage'][] = array(
 35+ 'name' => 'Record administration',
 36+ 'author' => array( '[http://www.organicdesign.co.nz/nad User:Nad]', 'Bertrand GRONDIN', 'Siebrand Mazeland' ),
 37+ 'description' => 'A special page for finding and editing record articles using a form',
 38+ 'descriptionmsg' => 'recordadmin-desc',
 39+ 'url' => 'http://www.mediawiki.org/wiki/Extension:RecordAdmin',
 40+ 'version' => RECORDADMIN_VERSION,
 41+);
 42+
 43+/**
 44+ * Called from $wgExtensionFunctions array when initialising extensions
 45+ */
 46+function wfSetupRecordAdmin() {
 47+ global $wgSpecialRecordAdmin, $wgParser, $wgRequest, $wgRecordAdminTag, $wgRecordAdminMagic;
 48+
 49+ # Make a global singleton so methods are accessible as callbacks etc
 50+ $wgSpecialRecordAdmin = new SpecialRecordAdmin();
 51+
 52+ # Make recordID's of articles created with public forms available via recordid tag
 53+ $wgParser->setHook( $wgRecordAdminTag, array( $wgSpecialRecordAdmin, 'expandTag' ) );
 54+
 55+ # Add the parser-function
 56+ $wgParser->setFunctionHook( $wgRecordAdminMagic, array( $wgSpecialRecordAdmin, 'expandMagic' ) );
 57+
 58+ # Check if posting a public creation form
 59+ $title = Title::newFromText( $wgRequest->getText( 'title' ) );
 60+ if ( is_object( $title ) && $title->getNamespace() != NS_SPECIAL && $wgRequest->getText( 'wpType' ) && $wgRequest->getText( 'wpCreate' ) )
 61+ $wgSpecialRecordAdmin->createRecord();
 62+}
 63+
 64+/**
 65+ * Setup parser-function magic
 66+ */
 67+function wfRecordAdminLanguageGetMagic(&$magicWords, $langCode = 0) {
 68+ global $wgRecordAdminMagic;
 69+ $magicWords[$wgRecordAdminMagic] = array($langCode, $wgRecordAdminMagic);
 70+ return true;
 71+}
Property changes on: tags/REL1_13_4/extensions/RecordAdmin/RecordAdmin.php
___________________________________________________________________
Name: svn:mergeinfo
172 +
Name: svn:eol-style
273 + native

Follow-up revisions

RevisionCommit summaryAuthorDate
r47547RecordAdmin: Reapply r47054 (migrate extensions to $wgLang->pipelist()) which...catrope13:41, 20 February 2009

Status & tagging log