Extension:SpecialNamespaces/sourcecode

From mediawiki.org
For installations based on previous MediaWiki versions, use Extension:SpecialNamespaces/sourcecode (ver 0.1).

The code below is intended for MediaWiki 1.16 to 1.17. See Extension:SpecialNamespaces for installation instructions. The following five files need to be created in .../extensions/Namespaces/ in your MediaWiki installation. In MediaWiki 1.18 - 1.19 all instances of 'Xml::Hidden' must be replaced with 'Html::Hidden'.

SpecialNamespaces.php[edit]

<?php
/**
 * Adds a new special page, Special:Namespaces, to view and modify namespace
 * data.
 * Based on Special:Interwiki (http://www.mediawiki.org/wiki/Extension:SpecialInterwiki)
 * code.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * @file
 * @ingroup Extensions
 * @version 2.1
 * @author Stephanie Amanda Stevens <phroziac@gmail.com>
 * @author SPQRobin <robin_1273@hotmail.com>
 * @author Stephen Kennedy
 * @copyright Copyright © 2005-2007 Stephanie Amanda Stevens
 * @copyright Copyright © 2006 Stephen Kennedy
 * @copyright Copyright © 2007 SPQRobin
 * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later
 */

if ( !defined( 'MEDIAWIKI' ) ) {
	die( 'This is not a valid entry point to MediaWiki.' );
}

// Extension credits that will show up on Special:Version
$wgExtensionCredits['specialpage'][] = array(
	'path' => __FILE__,
	'name' => 'SpecialNamespaces',
	'version' => '2.1',
	'author' => array( 'Stephanie Amanda Stevens', 'SPQRobin', 'others' ),
	'url' => 'http://mediawiki.org/wiki/Extension:SpecialNamespaces',
	'description' => 'Adds a [[Special:Namespaces|special page]] to view and edit the namespaces table.',
	'descriptionmsg' => 'namespaces-desc',
);

// Set up the new special page
$dir = dirname( __FILE__ ) . '/';
$wgExtensionMessagesFiles['Namespaces'] = $dir . 'SpecialNamespaces.i18n.php';
$wgExtensionAliasesFiles['Namespaces'] = $dir . 'SpecialNamespaces.alias.php';

$wgAutoloadClasses['SpecialNamespaces'] = $dir . 'SpecialNamespaces_body.php';
$wgSpecialPages['Namespaces'] = 'SpecialNamespaces';

// New user right, required to modify namespaces
$wgAvailableRights[] = 'namespaces';

// Set up logging to log all changes to namespace data
$wgLogTypes[] = 'namespaces';
$wgLogNames['namespaces'] = 'namespaces_logpagename';
$wgLogHeaders['namespaces'] = 'namespaces_logpagetext';
$wgLogActions['namespaces/namespaces'] = 'namespaces_logentry';
$wgLogActions['namespaces/ns_add'] = 'namespaces_log_added';
$wgLogActions['namespaces/ns_delete'] = 'namespaces_log_deleted';
$wgLogActions['namespaces/ns_edit'] = 'namespaces_log_edited';

// hook to retrieve $wgExtraNamespaces[...] from cached database table (namespace_names)
$wgHooks['LanguageGetMagic'][] = 'fnNamespaceHook';

/**
 * Code for hook function to retrieve $wgExtraNamespaces[...] from database.
 * Use memcached if available to avoid severe performance penalty for multiple
 * DB accesses.
 */
function fnNamespaceHook( &$magicWords, $langCode ) {
	global $wgExtraNamespaces, $wgNamespaceAliases;
	global $wgDBname, $wgMemc;
	global $wgSitename, $wgMetaNamespace, $wgMetaNamespaceTalk;

	/*
	if ( $wgExtraNamespaces != null ) {
		return true;
	}
	*/

	if ( $wgExtraNamespaces == null ) {
		$wgExtraNamespaces = array();
	}

	if ( $wgNamespaceAliases == null ) {
		$wgNamespaceAliases = array();
	}

	$key = "$wgDBname:SpecialNamespaces:name";
	$cached = $wgMemc->get( $key );

	if ( !is_array( $cached ) ) {
		$dbr = wfGetDB( DB_SLAVE );
		$res = $dbr->select( 'namespace_names', '*', array(), __METHOD__ );
		$numrows = $dbr->numRows( $res );
		if ( $numrows > 0 ) // @todo FIXME: braces per [[Manual:Coding conventions]]!
			foreach ( $res as $s ) {
				$nsindex = htmlspecialchars( $s->ns_id );
				$nsname = htmlspecialchars( $s->ns_name );
				$nscanonical = htmlspecialchars( $s->ns_canonical );
				$nsdefault = htmlspecialchars( $s->ns_default );
				$nsname = str_replace( ' ', '_', $nsname );
				$nsname = str_replace( ':', '', $nsname );

				if ( $nsdefault > 0 ) {
					$wgExtraNamespaces[$nsindex] = $nsname;
				} else {
					$wgNamespaceAliases[$nsname] = $nsindex;
				}
				if ( $nscanonical > 0) {
					if ( $nsindex == 4 ) {
						$wgSitename = $nsname;
						$wgMetaNamespace = str_replace( ' ', '_', $nsname );
					}
					if ( $nsindex == 5 ) {
						$wgMetaNamespaceTalk = str_replace( ' ', '_', $nsname );
					}
				}
			}
			$cached = array();
			$cached['ns'] = $wgExtraNamespaces;
			$cached['aka'] = $wgNamespaceAliases;
			$cached['site'] = $wgSitename;
			$cached['project'] = $wgMetaNamespace;
			$cached['prjtalk'] = $wgMetaNamespaceTalk;
			$wgMemc->set( $key, $cached );
	} else {
		$wgExtraNamespaces = $cached['ns'];
		$wgNamespaceAliases = $cached['aka'];
		$wgSitename = $cached['site'];
		$wgMetaNamespace = $cached['project'];
		$wgMetaNamespaceTalk = $cached['prjtalk'];
	}
	return true;
 }

SpecialNamespaces_body.php[edit]

<?php
/**
 * Implements Special:Namespaces
 * @ingroup SpecialPage
 */
class SpecialNamespaces extends SpecialPage {

	/**
	 * Constructor -- set up the new special page
	 */
	public function __construct() {
		parent::__construct( 'Namespaces' );
	}

	/**
	 * Delete memcached key.
	 */
	function discard() {
		global $wgDBname, $wgMemc;
		$wgMemc->delete( "$wgDBname:SpecialNamespaces:name" );
	}

	/**
	 * Show the special page
	 *
	 * @param $par Mixed: parameter passed to the special page or null
	 */
	public function execute( $par ) {
		global $wgRequest, $wgOut, $wgUser;

		$this->setHeaders();
		$this->outputHeader();

		$admin = $wgUser->isAllowed( 'namespaces' );
		if ( $admin ) {
			$wgOut->setPageTitle( wfMsg( 'namespaces' ) );
		} else {
			$wgOut->setPageTitle( wfMsg( 'namespaces-title-norights' ) );
		}
		$action = $wgRequest->getVal( 'action', $par );

		switch( $action ) {
			case 'delete':
			case 'edit':
			case 'add':
				// Check permissions
				if( !$admin ) {
					$wgOut->permissionRequired('namespaces');
					return;
				}
				// Is the database in read-only mode?
				if( wfReadOnly() ) {
					$wgOut->readOnlyPage();
					return;
				}
				$this->showForm( $action );
				break;
			case 'submit':
				// Check permissions
				if( !$admin ) {
					$wgOut->permissionRequired( 'namespaces' );
					return;
				}
				// Is the database in read-only mode?
				if( wfReadOnly() ) {
					$wgOut->readOnlyPage();
					return;
				}
				// Prevent cross-site request forgeries
				if( !$wgRequest->wasPosted() || !$wgUser->matchEditToken( $wgRequest->getVal( 'wpEditToken' ) ) ) {
					$wgOut->addWikiMsg( 'sessionfailure' );
					return;
				}
				$this->doSubmit();
				break;
			default:
				$this->showList( $admin );
				break;
		}
	}

	function showForm( $action ) {
		global $wgRequest, $wgUser, $wgOut;

		$actionUrl = $this->getTitle()->getLocalURL( 'action=submit' );
		$token = $wgUser->editToken();
		$defaultreason = $wgRequest->getVal( 'wpNamespacesReason',
			wfMsgForContent( 'namespaces_defaultreason' )
		);

		switch( $action ) {
			case 'delete':
				$nsid = $wgRequest->getVal( 'prefix' );
				$button = wfMsg( 'delete' );
				$topmessage = wfMsg( 'namespaces_delquestion', $nsid );
				$deletingmessage = wfMsgExt( 'namespaces_deleting', array( 'parseinline' ), $nsid );
				$reasonmessage = wfMsg( 'deletecomment' );

				$wgOut->addHTML(
					Xml::openElement( 'fieldset' ) .
					Xml::element( 'legend', null, $topmessage ) .
					Xml::openElement( 'form', array('id'=> 'mw-namespaces-deleteform', 'method'=> 'post', 'action' => $actionUrl ) ) .
					Xml::openElement( 'table' ) .
					"<tr><td>$deletingmessage</td></tr>".
					'<tr><td class="mw-label">' . Xml::label( $reasonmessage, 'mw-namespaces-deletereason') . '</td>' .
					'<td class="mw-input">' .
					Xml::input( 'wpNamespacesReason', 60, $defaultreason, array( 'tabindex' => '1', 'id' => 'mw-namespaces-deletereason', 'maxlength' => '200' ) ) .
					'</td></tr>' .
					'<tr><td class="mw-submit">' . Xml::submitButton( $button, array( 'id' => 'mw-namespaces-submit' ) ) .
					Xml::hidden( 'wpNamespacesID', $nsid ) .
					Xml::hidden( 'wpNamespacesAction', $action ) .
					Xml::hidden( 'wpEditToken', $token ) .
					'</td></tr>' .
					Xml::closeElement( 'table' ) .
					Xml::closeElement( 'form' ) .
					Xml::closeElement( 'fieldset' )
				);
				break;
			case 'edit':
			case 'add':
				if( $action == 'edit' ) {
					$nsid = $wgRequest->getVal( 'prefix' );
					$dbr = wfGetDB( DB_SLAVE );
					$row = $dbr->selectRow(
						'namespace_names',
						'*',
						array( 'ns_id' => $nsid ),
						__METHOD__
					);
					if( !$row ) {
						$this->error( 'namespaces_editerror', $nsid );
						return;
					}
					$nsid = '<code>' . htmlspecialchars( $row->ns_id ) . '</code>';
					$defaultname = $row->ns_name;
					$nsdefault = $row->ns_default;
					$nscanonical = $row->ns_canonical;
					$old = Xml::hidden( 'wpNamespacesID', $row->ns_id );
					$topmessage = wfMsgExt( 'namespaces_edittext', array( 'parseinline' ) );
					$intromessage = wfMsgExt( 'namespaces_editintro', array( 'parseinline' ) );
					$button = wfMsg( 'edit' );
				} else {
					$nsid = $wgRequest->getVal( 'wpNamespacesID' ) ? $wgRequest->getVal( 'wpNamespacesID' ) : $wgRequest->getVal( 'prefix' );
					$nsid = Xml::input( 'wpNamespacesID', 20, $nsid, array( 'tabindex' => '1', 'id' => 'mw-namespaces-nsid', 'maxlength' => '20' ) );
					$nsdefault = $wgRequest->getCheck( 'wpNamespacesDefault' );
					$nscanonical = $wgRequest->getCheck( 'wpNamespacesCanonical' );
					$old = '';
					$defaultname = $wgRequest->getVal( 'wpNamespacesName' ) ? $wgRequest->getVal( 'wpNamespacesName' ) : wfMsg( 'namespaces_defaultname' );
					$topmessage = wfMsgExt( 'namespaces_addtext', array( 'parseinline' ) );
					$intromessage = wfMsgExt( 'namespaces_addintro', array( 'parseinline' ) );
					$button = wfMsg( 'namespaces_addbutton' );
				}

				$nsidmessage = wfMsgHtml( 'namespaces_nsid' );
				$nsdefaultmessage = wfMsg( 'namespaces_default' );
				$nscanonicalmessage = wfMsg( 'namespaces_canonical' );
				$reasonmessage = wfMsg( 'namespaces_reasonfield' );
				$nsnamemessage = wfMsg( 'namespaces_nsname' );

				$wgOut->addHTML(
					Xml::openElement( 'fieldset' ) .
					Xml::element( 'legend', null, $topmessage ) .
					$intromessage .
					Xml::openElement( 'form', array( 'id' => 'mw-namespaces-editform', 'method' => 'post', 'action' => $actionUrl ) ) .
					Xml::openElement( 'table', array( 'id' => "mw-namespaces-$action" ) ) .
					"<tr><td class=\"mw-label\">$nsidmessage</td><td><code>$nsid</code></td></tr>" .
					'<tr><td class="mw-label">' . Xml::label( $nsdefaultmessage, 'mw-namespaces-nsdefault' ) . '</td>' .
					"<td class='mw-input'>" . Xml::check( 'wpNamespacesDefault', $nsdefault, array( 'id' => 'mw-namespaces-nsdefault' ) ) . '</td></tr>' .
					'<tr><td class="mw-label">' . Xml::label( $nscanonicalmessage, 'mw-namespaces-nscanonical' ) . '</td>' .
					'<td class="mw-input">' .  Xml::check( 'wpNamespacesCanonical', $nscanonical, array( 'id' => 'mw-namespaces-nscanonical' ) ) . '</td></tr>' .
					'<tr><td class="mw-label">' . Xml::label( $nsnamemessage, 'mw-namespaces-nsname' ) . '</td>' .
					'<td class="mw-input">' . Xml::input( 'wpNamespacesName', 60, $defaultname, array( 'tabindex' => '1', 'maxlength' => '200', 'id' => 'mw-namespaces-nsname' ) ) . '</td></tr>' .
					'<tr><td class="mw-label">' . Xml::label( $reasonmessage, 'mw-namespaces-editreason' ) . '</td>' .
					'<td class="mw-input">' . Xml::input( 'wpNamespacesReason', 60, $defaultreason, array( 'tabindex' => '1', 'id' => 'mw-namespaces-editreason', 'maxlength' => '200') ) .
					Xml::hidden( 'wpNamespacesAction', $action ) .
					$old .
					Xml::hidden( 'wpEditToken', $token ) .
					'</td></tr>' .
					'<tr><td class="mw-submit">' . Xml::submitButton( $button, array( 'id' => 'mw-namespaces-submit' ) ) . '</td></tr>' .
					Xml::closeElement( 'table' ) .
					Xml::closeElement( 'form' ) .
					Xml::closeElement( 'fieldset' )
				);
				break;
		}
	}

	function doSubmit() {
		global $wgRequest, $wgOut;
		$nsid = $wgRequest->getVal( 'wpNamespacesID' );
		$do = $wgRequest->getVal( 'wpNamespacesAction' );
		if( preg_match( '/[\s:&=]/', $nsid ) ) {
			$this->error( 'namespaces-badprefix', htmlspecialchars( $nsid ) );
			$this->showForm( $do );
			return;
		}
		$reason = $wgRequest->getText( 'wpNamespacesReason' );
		$selfTitle = $this->getTitle();
		$dbw = wfGetDB( DB_MASTER );
		switch( $do ) {
			case 'delete':
				$dbw->delete(
					'namespace_names',
					array( 'ns_id' => $nsid ),
					__METHOD__
				);

				if ( $dbw->affectedRows() == 0 ) {
					$this->error( 'namespaces_delfailed', $nsid );
					$this->showForm( $do );
				} else {
					$wgOut->addWikiMsg( 'namespaces_deleted', $nsid );
					$wgOut->returnToMain( false, $selfTitle );
					$log = new LogPage( 'namespaces' );
					$log->addEntry( 'ns_delete', $selfTitle, $reason, array( $nsid ) );
				}
				$this->discard();
				break;
			case 'edit':
			case 'add':
				$theurl = $wgRequest->getVal( 'wpNamespacesName' );
				$nsdefault = $wgRequest->getCheck( 'wpNamespacesDefault' ) ? 1 : 0;
				$nscanonical = $wgRequest->getCheck( 'wpNamespacesCanonical' ) ? 1 : 0;
				$data = array(
					'ns_id' => $nsid,
					'ns_name' => $theurl,
					'ns_default' => $nsdefault,
					'ns_canonical' => $nscanonical
				);

				if( $do == 'add' ) {
					$dbw->insert(
						'namespace_names',
						$data,
						__METHOD__,
						'IGNORE'
					);
				} else {
					$dbw->update(
						'namespace_names',
						$data,
						array( 'ns_id' => $nsid ),
						__METHOD__,
						'IGNORE'
					);
				}

				if( $dbw->affectedRows() == 0 ) {
					$this->error( "namespaces_{$do}failed", $nsid );
					$this->showForm( $do );
				} else {
					$wgOut->addWikiMsg( "namespaces_{$do}ed", $nsid );
					$wgOut->returnToMain( false, $selfTitle );
					$log = new LogPage( 'namespaces' );
					$log->addEntry(
						'ns_' . $do, $selfTitle, $reason,
						array( $nsid, $theurl, $nsdefault, $nscanonical )
					);
				}
				$this->discard();
				break;
		}
	}

	function trans_default( $tl, $msg0, $msg1 ) {
		if( $tl === '0' ) {
			return $msg0;
		}
		if( $tl === '1' ) {
			return $msg1;
		}
		return htmlspecialchars( $tl );
	}

	function showList( $admin ) {
		global $wgUser, $wgOut, $wgScriptPath;

		$wgOut->addExtensionStyle( "{$wgScriptPath}/extensions/Namespaces/SpecialNamespaces.css" );

		$nsidmessage = wfMsgHtml( 'namespaces_nsid' );
		$nsnamemessage = wfMsgHtml( 'namespaces_nsname' );
		$nsdefaultmessage = wfMsgHtml( 'namespaces_default' );
		$nscanonicalmessage = wfMsgHtml( 'namespaces_canonical' );
		$message_0 = wfMsgHtml( 'namespaces_0' );
		$message_1 = wfMsgHtml( 'namespaces_1' );

		$out = '
<table width="100%" cellspacing="0" cellpadding="0" border="0" style="border:0" class="mw-namespacestable wikitable intro">
<tr><th class="mw-align-left">' . $nsidmessage . '</th><td>' . wfMsgExt( 'namespaces_nsid_intro', 'parseinline' ) . '</td></tr>
<tr><th class="mw-align-left">' . $nsnamemessage . '</th><td>' . wfMsgExt( 'namespaces_nsname_intro', 'parseinline' ) . '</td></tr>
<tr><th class="mw-align-left">' . $nsdefaultmessage . '</th><td>' . wfMsgExt( 'namespaces_default_intro', 'parseinline' ) . '</td></tr>
<tr><th class="mw-align-right">' . $message_1 . '</th><td>' . wfMsgExt( 'namespaces_default_1_intro', 'parseinline' ) . '</td></tr>
<tr><th class="mw-align-right">' . $message_0 . '</th><td>' . wfMsgExt( 'namespaces_default_0_intro', 'parseinline' ) . '</td></tr>
<tr><th class="mw-align-left">' . $nscanonicalmessage . '</th><td>' . wfMsgExt( 'namespaces_canonical_intro', 'parseinline' ) . '</td></tr>';
		if ( 0 ) { // yay unused code!
			$out .= '
<tr><th class="mw-align-right">' . $message_1 . '</th><td>' . wfMsgExt( 'namespaces_canonical_1_intro', 'parseinline' ) . '</td></tr>
<tr><th class="mw-align-right">' . $message_0 . '</th><td>' . wfMsgExt( 'namespaces_canonical_0_intro', 'parseinline' ) . '</td></tr>
';
		}
		$out .= '</table>';
		$wgOut->addWikiMsg( 'namespaces_intro' );
		$wgOut->addHTML( $out );
		$wgOut->addWikiMsg( 'namespaces_intro_footer' );
		$selfTitle = $this->getTitle();

		if ( $admin ) {
			$skin = $wgUser->getSkin();
			$addtext = wfMsgHtml( 'namespaces_addtext' );
			$addlink = $skin->link( $selfTitle, $addtext, array(), array( 'action' => 'add' ) );
			$wgOut->addHTML( '<p>' . $addlink . '</p>' );
		}

		$dbr = wfGetDB( DB_SLAVE );
		$res = $dbr->select(
			'namespace_names',
			'*',
			1,
			__METHOD__,
			array( 'ORDER BY' => 'ns_id' )
		);
		$numrows = $res->numRows();
		if ( $numrows == 0 ) {
			$this->error( 'namespaces_error' );
			return;
		}

		$out = "
			<table width='100%' class='mw-namespacestable wikitable body'>
			<tr id='namespacestable-header'><th>$nsidmessage</th> <th>$nsnamemessage</th> <th>$nsdefaultmessage</th> <th>$nscanonicalmessage</th>";
		if( $admin ) {
			$deletemessage = wfMsgHtml( 'delete' );
			$editmessage = wfMsgHtml( 'edit' );
			$out .= '<th>' . wfMsgHtml( 'namespaces_edit' ) . '</th>';
		}
		$out .= "</tr>\n";

		while( $s = $res->fetchObject() ) {
			$nsid = htmlspecialchars( $s->ns_id );
			$nsname = htmlspecialchars( $s->ns_name );
			$nsdefault = $this->trans_default( $s->ns_default, $message_0, $message_1 );
			$nscanonical = $this->trans_default( $s->ns_canonical, $message_0, $message_1 );
			$out .= "<tr class='mw-namespacestable-row'>
					<td class='mw-namespacestable-nsid'>$nsid</td>
					<td class='mw-namespacestable-nsname'>$nsname</td>
					<td class='mw-namespacestable-nsdefault'>$nsdefault</td>
					<td class='mw-namespacestable-nscanonical'>$nscanonical</td>";
			if( $admin ) {
				$out .= '<td class="mw-namespacestable-modify">';
				$out .= $skin->link( $selfTitle, $editmessage, array(),
						array( 'action' => 'edit', 'prefix' => $s->ns_id ) );
				$out .= ', ';
				$out .= $skin->link( $selfTitle, $deletemessage, array(),
						array( 'action' => 'delete', 'prefix' => $s->ns_id ) );
				$out .= '</td>';
			}

			$out .= "\n</tr>\n";
		}
		$res->free();
		$out .= '</table><br />';
		$wgOut->addHTML( $out );
	}

	function error() {
		global $wgOut;
		$args = func_get_args();
		$wgOut->wrapWikiMsg( "<p class=\"error\">$1</p>", $args );
	}

	protected function getGroupName() {
		return 'wiki';
	}
}

SpecialNamespaces.css[edit]

/**
 * CSS for Special:Namespaces
 */

table.mw-namespacestable.intro th {
	padding-right: 1.4ex;
	vertical-align: top;
}

table.mw-namespacestable.intro th.mw-align-left {
	text-align: left;
}

table.mw-namespacestable.intro th.mw-align-right {
	text-align: right;
}

table.mw-namespacestable.body td.mw-namespacestable-default,
table.mw-namespacestable.body td.mw-namespacestable-canonical,
table.mw-namespacestable.body td.mw-namespacestable-modify {
	text-align: center;
}

SpecialNamespaces.alias.php[edit]

<?php
/**
 * Aliases for Special:Namespaces
 *
 * @file
 * @ingroup Extensions
 */

$aliases = array();

/** English */
$aliases['en'] = array(
	'Namespaces' => array('Namespaces'),
);

/** German (Deutsch) */
$aliases['de'] = array(
	'Namespaces' => array( 'Namespaces' ),
);

/** Finnish (Suomi) */
$aliases['fi'] = array(
	'Namespaces' => array( 'Nimiavaruudet' ),
);

/** French (Français) */
$aliases['fr'] = array(
	'Namespaces' => array( 'Espaces de noms' ),
);

/** Dutch (Nederlands) */
$aliases['nl'] = array(
	'Namespaces' => array( 'Namespaces' ),
);

/** Portuguese (Português) */
$aliases['pt'] = array(
	'Namespaces' => array( 'Namespaces' ),
);

/** Russian (Русский) */
$aliases['ru'] = array(
	'Namespaces' => array( 'Пространство имён' ),
);

SpecialNamespaces.i18n.php[edit]

<?php
/**
 * Internationalisation file for SpecialNamespaces extension.
 *
 * @file
 * @ingroup Extensions
 */

$messages = array();

/** English (English) */
$messages['en'] = array(
	# general messages
	'namespaces' => 'View and edit namespaces data',
	'namespaces-title-norights' => 'View namespaces data',
	'namespaces-desc' => 'Adds a [[Special:Namespaces|special page]] to view and edit the namespaces table',
	'namespaces_intro' => 'This is an overview of the namespaces table. Meanings of the data in the columns:',
	'namespaces_nsid' => 'Number',
	'namespaces_nsid_intro' => 'Namespace number (0-15 used internally within MediaWiki, odd numbers are talk namespaces)',
	'namespaces_nsname' => 'Name',
	'namespaces_nsname_intro' => 'Namespace name, used as a prefix: on wiki pages in this namespace.',
	'namespaces_default' => 'Default',
	'namespaces_default_intro' => 'This name is the default name of this namespace, not an alias.',
	'namespaces_default_1_intro' => 'Namespace is listed under this name in [[Special:AllPages]]',
	'namespaces_default_0_intro' => 'Namespace is reachable under this name, but some other prefix exists as displayed default.',
	'namespaces_canonical' => 'Canonical',
	'namespaces_canonical_intro' => 'Not used',
	'namespaces_canonical_1_intro' => '',
	'namespaces_canonical_0_intro' => '',
	'namespaces_intro_footer' => 'See [[mw:Namespaces|MediaWiki.org]] for more information about [[mw:Help:Namespaces|namespaces]].',
	'namespaces_1' => 'yes',
	'namespaces_0' => 'no',
	'namespaces_error' => 'The namespaces table is empty.',

	# modifying permitted
	'namespaces_edit' => 'Edit',
	'namespaces_reasonfield' => 'Reason',
	'namespaces_defaultreason' => '',

	# deleting a namespace
	'namespaces_delquestion' => 'Deleting "$1"',
	'namespaces_deleting' => 'You are deleting namespace "$1".',
	'namespaces_deleted' => 'Namespace "$1" was successfully removed from the namespaces table.',
	'namespaces_delfailed' => 'Namespace "$1" could not be removed from the namespaces table.',

	# adding a namespace
	'namespaces_addtext' => 'Add a namespace',
	'namespaces_addintro' => 'You are adding a new namespace. Remember that odd numbers are talk pages by convention. Pairs reserved internally include [0/1 main, 2/3 user, 4/5 project, 6/7 image, 8/9 MediaWiki, 10/11 template, 12/13 help, 14/15 category].',
	'namespaces_addbutton' => 'Add',
	'namespaces_added' => 'Namespace "$1" was successfully added to the namespaces table.',
	'namespaces_addfailed' => 'Namespace "$1" could not be added to the namespaces table.',
	'namespaces_defaultname' => '',

	# editing a namespace
	'namespaces_edittext' => 'Editing a namespace',
	'namespaces_editintro' => 'You are editing a namespace.
Remember that this can break existing links.',
	'namespaces_edited' => 'Namespace "$1" was successfully modified in the namespaces table.',
	'namespaces_editerror' => 'Namespace "$1" can not be modified in the namespaces table.
Possibly it does not exist.',
	'namespaces-badprefix' => 'Specified namespace "$1" contains invalid characters',

	# namespaces log
	'namespaces_logpagename' => 'Namespaces table log',
	'namespaces_log_added' => 'added "$2" ($3) (default: $4) (canonical: $5)',
	'namespaces_log_edited' => 'modified "$2" : ($3) (default: $4) (canonical: $5)',
	'namespaces_log_deleted' => 'removed "$2" from the namespaces',
	'namespaces_logpagetext' => 'This is a log of changes to the [[Special:Namespaces|namespaces]].',
	'namespaces_logentry' => '', # do not translate this message!

	# rights
	'right-namespaces' => 'Edit namespaces data',
	'action-namespaces' => 'change this namespace entry',
);

/** Message documentation (Message documentation) */
$messages['qqq'] = array(
	'namespaces' => 'This message is the title of the special page [[Special:Namespaces]].',
	'namespaces-title-norights' => 'Part of the namespaces extension. This message is the title of the special page [[Special:Namespaces]] when the user has no right to edit the namespaces data, so can only view them.',
	'namespaces-desc' => '-',
	'namespaces_intro' => 'Part of the namespaces extension. Shown as introductory text on [[Special:Namespaces]].',
	'namespaces_nsid' => 'Used on [[Special:Namespaces]] as a column header of the table.',
	'namespaces_nsid_intro' => 'Used on [[Special:Namespaces]] so as to explain the data in the {{msg-mw|namespaces_nsid}} column of the table. ',
	'namespaces_nsname' => 'Used on [[Special:Namespaces]] as a column header of the table.',
	'namespaces_nsname_intro' => 'Used on [[Special:Namespaces]] so as to explain the data in the {{msg-mw|namespaces_nsname}} column of the table.',
	'namespaces_default' => 'Used on [[Special:Namespaces]] as a column header.',
	'namespaces_default_intro' => 'Used on [[Special:Namespaces]] so as to explain the data in the {{msg-mw|namespaces_default}} column of the table.',
	'namespaces_default_0_intro' => 'Used on [[Special:Namespaces]] so as to descripe the meaning of the value 0 in the {{msg-mw|namespaces_default}} column of the table.',
	'namespaces_default_1_intro' => 'Used on [[Special:Namespaces]] so as to descripe the meaning of the value 1 in the {{msg-mw|namespaces_default}} column of the table.',
	'namespaces_canonical' => 'User in [[Special:Namespaces]] as table column header.',
	'namespaces_canonical_intro' => 'Used on [[Special:Namespaces]] so as to explain the data in the {{msg-mw|namespaces_canonical}} column of the table.',
	'namespaces_canonical_1_intro' => 'Used on [[Special:Namespaces]] so as to descripe the meaning of the value 1 in the {{msg-mw|namespaces_canonical}} column of the table.',
	'namespaces_canonical_0_intro' => 'Used on [[Special:Namespaces]] so as to describe the meaning of the value 0 in the {{msg-mw|namespaces_canonical}} column of the table.',
	'namespaces_intro_footer' => 'Part of the namespaces extension. Shown as last pice of the introductory text on [[Special:Namespaces]].
Parameter $1 contains the following (a link): [http://www.mediawiki.org/wiki/Namespaces MediaWiki.org]',
	'namespaces_1' => "''\\Yes'''-value to be inserted into the columns headed by {{msg-mw|namespaces_default}} and {{msg-mw|namespaces_canonical}}.

{{Identical|Yes}}",
	'namespaces_0' => "''\\No'''-value to be inserted into the columns headed by {{msg-mw|namespaces_default}} and {{msg-mw|namespaces_canonical}}.

{{Identical|No}}",
	'namespaces_error' => 'This message is shown when the Special:Namespaces page is empty.',
	'namespaces_edit' => 'For users allowed to edit the namespaces table via [[Special:Namespaces]], this text is shown as the column header above the edit buttons.

{{Identical|Edit}}',
	'namespaces_reasonfield' => '{{Identical|Reason}}',
	'namespaces_defaultreason' => 'This message is the default reason in the namespaces log (when adding or deleting a namespace).

{{Identical|No reason given}}',
	'namespaces_delquestion' => 'Parameter $1 is the namespace you are deleting.',
	'namespaces_deleting' => '-',
	'namespaces_addbutton' => 'This message is the text of the button to submit the namespace you are adding.

{{Identical|Add}}',
	'namespaces_editerror' => 'Error message when modifying a namespace has failed.',
	'namespaces_logpagename' => 'Part of the namespaces extension. This message is shown as page title on Special:Log/namespaces.',
	'namespaces_log_added' => 'Shows up in "Special:Log/namespaces" when someone has added a namespace. Leave parameters and text between brackets exactly as it is.',
	'namespaces_log_edited' => 'Shows up in "Special:Log/namespaces" when someone has modified a namespace. Leave parameters and text between brackets exactly as it is.',
	'namespaces_log_deleted' => 'Shows up in "Special:Log/namespaces" when someone removed a namespace.',
	'namespaces_logpagetext' => 'Part of the namespaces extension. Summary shown on Special:Log/namespaces.',
	'right-namespaces' => '{{doc-right}}',
	'action-namespaces' => '{{doc-action}}',
);

/** Danish (Dansk) */
$messages['da'] = array(
	'namespaces_1' => 'ja',
	'namespaces_0' => 'nej',
	'namespaces_reasonfield' => 'Begrundelse',
	'action-namespaces' => 'ændre dette namespace',
);

/** German (Deutsch) */
$messages['de'] = array(
	'namespaces' => 'Namensraum-Daten betrachten und bearbeiten',
	'namespaces-title-norights' => 'Namensraum-Daten betrachten',
	'namespaces-desc' => '[[Spezial:Namespaces|Spezialseite]] zur Pflege der Namensräume',
	'namespaces_intro' => 'Dies ist ein Überblick des Inhalts der Namensräume.
Die Daten in den einzelnen Spalten haben die folgende Bedeutung:',
	'namespaces_nsid' => 'Nummer',
	'namespaces_nsid_intro' => 'Nummer des Namensraumes (0-15 interne Standard-Namensräume von MediaWiki, ungerade Nummern sind Diskussions-Namensräume)',
	'namespaces_nsname' => 'Name',
	'namespaces_nsname_intro' => 'Name des Namensraumes, verwendet als Prefix: auf Wiki Seiten in diesem Namenraum.',
	'namespaces_default' => 'Standard',
	'namespaces_default_intro' => 'Dieser Name ist der Standard-Name dieses Namensraumes, kein Pseudonym.',
	'namespaces_default_1_intro' => 'Namensraum wird unter diesem Namen in [[Spezial:Alle_Seiten]] aufgelistet',
	'namespaces_default_0_intro' => 'Namensraum ist erreichbar unter diesem Namen, aber andere existiere Prefixe werden standardmäßig angezeigt.',
	'namespaces_canonical' => 'Kanonisch',
	'namespaces_canonical_intro' => '- Nicht verwendet -',
	'namespaces_canonical_1_intro' => '',
	'namespaces_canonical_0_intro' => '',
	'namespaces_intro_footer' => 'Siehe [http://www.mediawiki.org/wiki/Help:Namespaces/de MediaWiki.org] für weitere Informationen über die Namensräume.',
	'namespaces_1' => 'ja',
	'namespaces_0' => 'nein',
	'namespaces_error' => 'Die Namensraum-Tabelle ist leer.',
	'namespaces_edit' => 'Bearbeiten',
	'namespaces_reasonfield' => 'Grund',
	'namespaces_defaultreason' => 'kein Grund angegeben',
	'namespaces_delquestion' => 'Löscht „$1“',
	'namespaces_deleting' => 'Du bist dabei den Namensraum „$1“ zu löschen.',
	'namespaces_deleted' => '„$1“ wurde erfolgreich aus den Namensräumen entfernt.',
	'namespaces_delfailed' => '„$1“ konnte nicht aus den Namensräumen gelöscht werden.',
	'namespaces_addtext' => 'Einen Namensraum hinzufügen',
	'namespaces_addintro' => 'Du fügst einen neuen Namensraum hinzu. Beachte, dass es kein Leerzeichen ( ), Kaufmännisches Und (&), Gleichheitszeichen (=) und keinen Doppelpunkt (:) enthalten darf.',
	'namespaces_addbutton' => 'Hinzufügen',
	'namespaces_added' => '„$1“ wurde erfolgreich den Namensräumen hinzugefügt.',
	'namespaces_addfailed' => '„$1“ konnte nicht den Namensräumen hinzugefügt werden.',
	'namespaces_edittext' => 'Namensräume bearbeiten',
	'namespaces_logpagename' => 'Namensraum-Logbuch',
	'namespaces_log_added' => 'hat „$2“ ($3) (canonical: $4) (lokal: $5) den Namensräumen hinzugefügt',
	'namespaces_log_edited' => 'veränderte das Präfix „$2“: ($3) (canonical: $4) (lokal: $5) in den Namensräumen',
	'namespaces_log_deleted' => 'hat „$2“ aus den Namensräumen entfernt',
	'namespaces_logpagetext' => 'In diesem Logbuch werden Änderungen an den [[Special:Namespaces|Namensräumen]] protokolliert.',
	'right-namespaces' => 'Namensräume bearbeiten',
	'action-namespaces' => 'Diesen Namensraum-Eintrag ändern',
);

/** Greek (Ελληνικά) */
$messages['el'] = array(
	'namespaces_1' => 'ναι',
	'namespaces_0' => 'όχι',
	'namespaces_edit' => 'Επεξεργασία',
	'namespaces_reasonfield' => 'Λόγος',
	'namespaces_defaultreason' => 'Δεν δίνετε λόγος',
	'namespaces_delquestion' => 'Διαγραφή του "$1"',
	'namespaces_addbutton' => 'Προσθήκη',
);

/** Esperanto (Esperanto) */
$messages['eo'] = array(
	'namespaces_1' => 'jes',
	'namespaces_0' => 'ne',
	'namespaces_edit' => 'Redakti',
	'namespaces_reasonfield' => 'Kialo',
	'namespaces_defaultreason' => 'nenia kialo skribata',
	'namespaces_delquestion' => 'Forigante "$1"',
	'namespaces_deleting' => 'Vi forigas "$1".',
	'namespaces_addbutton' => 'Aldoni',
);

/** Spanish (Español) */
$messages['es'] = array(
	'namespaces' => 'Ver y editar namespaces',
	'namespaces-title-norights' => 'Ver datos de namespaces',
	'namespaces-desc' => 'Añade una [[Special:Namespaces|página especial]] para ver y editar namespaces',
	'namespaces_intro' => 'Esta es una visión general de namespaces. Los significados de los datos en las columnas:',
	'namespaces_1' => 'Sí',
	'namespaces_0' => 'no',
	'namespaces_error' => 'La tabla de namespaces está vacía.',
	'namespaces_edit' => 'Editar',
	'namespaces_reasonfield' => 'Motivo',
	'namespaces_defaultreason' => 'no se da ninguna razón',
	'namespaces_delquestion' => 'Borrando «$1»',
	'namespaces_deleting' => 'Estás borrando el prefijo «$1».',
	'namespaces_deleted' => 'El «$1» ha sido borrado correctamente de namespaces.',
	'namespaces_delfailed' => 'El «$1» no puede ser borrado de namespaces.',
	'namespaces_addtext' => 'Añadir un namespace',
	'namespaces_addintro' => "Estás añadiendo un nuevo namespace.",
	'namespaces_addbutton' => 'Agregar',
	'namespaces_added' => 'El «$1» ha sido añadido correctamente a la tabla de namespaces.',
	'namespaces_addfailed' => 'El «$1» no se puede añadir a la tabla de namespaces.',
	'namespaces_edittext' => 'Editando un namespace',
	'namespaces_editintro' => 'Estás editando un namespace.  Recuerda que esto puede romper enlaces existentes.',
	'namespaces_edited' => 'El «$1» ha sido modificado correctamente en la tabla de namespaces.',
	'namespaces_editerror' => 'El «$1» no puede ser modificado en la tabla de namespaces. Posiblemente no exista.',
	'namespaces-badprefix' => 'El namespace «$1» contiene caracteres no válidos',
	'namespaces_logpagename' => 'Tabla de registro de namespaces',
	'namespaces_log_added' => 'añadido el prefijo «$2» ($3) (canonical: $4) (default: $5) a la tabla de namespaces.',
	'namespaces_log_edited' => 'modificado el prefijo «$2» : ($3) (canonical: $4) (default: $5) en la tabla de namespaces',
	'namespaces_log_deleted' => 'eliminado el prefijo «$2» de la tabla de namespaces',
	'right-namespaces' => 'Editar datos de namespaces',
	'action-namespaces' => 'cambiar esta entrada namespaces',
);

/** Estonian (Eesti) */
$messages['et'] = array(
	'namespaces_1' => 'jah',
	'namespaces_0' => 'ei',
	'namespaces_edit' => 'Redigeeri',
	'namespaces_reasonfield' => 'Põhjus',
	'namespaces_defaultreason' => 'põhjendust ei ole kirja pandud',
);

/** Basque (Euskara) */
$messages['eu'] = array(
	'namespaces_1' => 'bai',
	'namespaces_0' => 'ez',
	'namespaces_reasonfield' => 'Arrazoia',
	'namespaces_defaultreason' => 'ez da arrazoirik eman',
	'namespaces_addbutton' => 'Erantsi',
	'namespaces_edittext' => 'Namespaces aurrizkia editatzen',
);

/** Finnish (Suomi) */
$messages['fi'] = array(
	'namespaces' => 'Katso ja muokkaa nimiavaruustietoja',
	'namespaces-title-norights' => 'Katso nimiavaruustietoja',
	'namespaces-desc' => 'Lisää [[Special:Namespaces|toimintosivun]] nimiavaruustaulun katsomiseen ja muokkaamiseen',
	'namespaces_intro' => 'Tämä on yleiskatsaus nimiavaruustaulusta. Sarakkeissa olevien tietojen merkitys:',
	'namespaces_nsid' => 'Numero',
	'namespaces_nsid_intro' => 'Nimiavaruuden nimi (nimiavaruuksia väliltä 0-15 käytetään MediaWikissä sisäisesti, parittomat luvut ovat keskustelunimiavaruuksia)',
	'namespaces_nsname' => 'Nimi',
	'namespaces_nsname_intro' => 'Nimiavaruuden nimi, käytetään etuliitteenä: wikin sivuilla linkittämään tässä nimiavaruudessa sijaitseviin sivuihin.',
	'namespaces_default' => 'Oletusarvo',
	'namespaces_default_intro' => 'Tämä on tämän nimiavaruuden oletusnimi, ei alias.',
	'namespaces_default_1_intro' => 'Nimiavaruus löytyy tältä nimeltä sivulla [[Special:AllPages]]',
	'namespaces_canonical' => 'Kanoninen',
	'namespaces_intro_footer' => 'Katso [[mw:Namespaces|MediaWiki.org]] saadaksesi lisätietoja [[mw:Help:Namespaces|nimiavaruuksista]].',
	'namespaces_1' => 'kyllä',
	'namespaces_0' => 'ei',
	'namespaces_error' => 'Nimiavaruustaulu on tyhjä.',
	'namespaces_edit' => 'Muokkaa',
	'namespaces_reasonfield' => 'Syy',
	'namespaces_delquestion' => 'Poistetaan "$1"',
	'namespaces_deleting' => 'Olet poistamassa nimiavaruutta "$1".',
	'namespaces_deleted' => 'Nimiavaruus "$1" poistettiin onnistuneesti nimiavaruustaulusta.',
	'namespaces_delfailed' => 'Nimiavaruutta "$1" ei voitu poistaa nimiavaruustaulusta.',
	'namespaces_addtext' => 'Lisää nimiavaruus',
	'namespaces_addintro' => 'Lisäät uutta nimiavaruutta. Muista, että parittomat luvut merkitsevät keskustelusivuja yleisen tavan mukaan. Sisäisesti varatut parit ovat [0/1 pää, 2/3 käyttäjä, 4/5 projekti, 6/7 kuva, 8/9 järjestelmäviesti, 10/11 malline, 12/13 ohje, 14/15 luokka].',
	'namespaces_addbutton' => 'Lisää',
	'namespaces_added' => 'Nimiavaruus "$1" lisättiin onnistuneesti nimiavaruustauluun.',
	'namespaces_addfailed' => 'Nimiavaruutta "$1" ei voitu lisätä nimiavaruustauluun.',
	'namespaces_edittext' => 'Muokataan nimiavaruutta',
	'namespaces_editintro' => 'Muokkaat nimiavaruutta. Muista, että tämä voi rikkoa olemassaolevia linkkejä.',
	'namespaces_edited' => 'Nimiavaruutta "$1" muokatiin onnistuneesti nimiavaruustaulussa.',
	'namespaces_editerror' => 'Nimiavaruutta "$1" ei voitu muokata nimiavaruustaulussa. Ehkäpä sitä ei ole olemassa.',
	'namespaces-badprefix' => 'Määritelty nimiavaruus "$1" sisältää kelpaamattomia merkkejä',
	'namespaces_logpagename' => 'Nimiavaruustaululoki',
	'namespaces_log_added' => 'lisäsi nimiavaruuden "$2" ($3) (oletus: $4) (kanoninen: $5)',
	'namespaces_log_edited' => 'muokkasi nimiavaruutta "$2" : ($3) (oletus: $4) (kanoninen: $5)',
	'namespaces_log_deleted' => 'poisti nimiavaruuden "$2" nimiavaruuksista',
	'namespaces_logpagetext' => 'Tämä on loki muutoksista [[Special:Namespaces|nimiavaruuksiin]].',
	'right-namespaces' => 'Muokata nimiavaruustietoja',
	'action-namespaces' => 'muuttaa tätä nimiavaruusmerkintää',
);

/** French (Français) */
$messages['fr'] = array(
	'namespaces' => 'Voir et manipuler les données d\'espace nominal (namespaces)',
	'namespaces-title-norights' => 'Voir les données d\'espace nominal (namespaces)',
	'namespaces-desc' => 'Ajoute une [[Special:Namespaces|page spéciale]] pour voir et manipuler les « namespaces »',
	'namespaces_intro' => 'Voici les significations des données:',
	'namespaces_nsid' => 'Numéro',
	'namespaces_nsid_intro' => 'Numéro d\'espace nominal à utiliser internement dans la base de données du wiki.',
	'namespaces_nsname' => 'Nom',
	'namespaces_nsname_intro' => 'Nom d\'espace nominal, comme préfixe: qui apparait au <i>nom de la page</i> wiki.',
	'namespaces_default' => 'Défaut',
	'namespaces_default_intro' => 'Ce nom sera:',
	'namespaces_default_0_intro' => 'utilisé uniquement comme un alias, mais pas affiché aux pages mêmes ou [[Special:Allpages]]',
	'namespaces_default_1_intro' => 'utilisé comme préfixe du titres affichés aux pages du wiki',
	'namespaces_canonical' => 'Canonical',
	'namespaces_canonical_intro' => 'Pas utilisé',
	'namespaces_canonical_1_intro' => '',
	'namespaces_canonical_0_intro' => '',
	'namespaces_intro_footer' => 'Voyez [[mw:Help:Namespaces|Namespaces]] et [[mw:Manual:Namespace|instructions aux administrateurs]] chez [http://www.mediawiki.org/wiki/Namespaces MediaWiki.org] pour plus d\'informations.',
	'namespaces_1' => 'oui',
	'namespaces_0' => 'non',
	'namespaces_error' => 'La table des namespaces est vide.',
	'namespaces_edit' => 'Modifier',
	'namespaces_reasonfield' => 'Motif',
	'namespaces_defaultreason' => '', #'Aucun motif donné'
	'namespaces_delquestion' => 'Suppression de « $1 »',
	'namespaces_deleting' => 'Vous effacez présentement l\'espace nominal « $1 ».',
	'namespaces_deleted' => '« $1 » a été enlevé avec succès des « namespaces ».',
	'namespaces_delfailed' => '« $1 » n\'a pas pu être enlevé des « namespaces ».',
	'namespaces_addtext' => 'Ajouter un namespace',
	'namespaces_addintro' => 'Vous êtes en train d\'ajouter un namespace.',
	'namespaces_addbutton' => 'Ajouter',
	'namespaces_added' => '« $1 » a été ajouté comme namespace.',
	'namespaces_addfailed' => '« $1 » n\'a pas pu être ajouté comme namespace.',
	'namespaces_edittext' => 'Modifier un namespace',
	'namespaces_editintro' => 'Vous modifiez un namespace. Rappelez-vous que cela peut casser des liens existants.',
	'namespaces_edited' => 'Le namespace « $1 » a été modifié avec succès.',
	'namespaces_editerror' => '« $1 » ne peut pas être modifié. Il se peut qu\'il n\'existe pas.',
	'namespaces_badprefix' => 'Le préfixe namespaces spécifié « $1 » contient des caractères invalides',
	'namespaces_logpagename' => 'Journal des namespaces',
	'namespaces_log_added' => 'a ajouté « $2 » ($3) (canonical: $4) (défaut: $5)',
	'namespaces_log_edited' => 'a modifié « $2 » : ($3) (canonical: $4) (défaut: $5)',
	'namespaces_log_deleted' => 'a supprimé « $2 » des namespaces',
	'namespaces_logpagetext' => 'Ceci est le journal des changements des [[Special:Namespaces|namespaces]].',
	'right-namespaces' => 'Modifier les données namespaces',
	'action-namespaces' => 'modifier cet espace nominal namespace',
);

/** Croatian (Hrvatski) */
$messages['hr'] = array(
	'namespaces' => 'Vidi i uredi namespaces',
	'namespaces-title-norights' => 'Gledanje namespaces',
	'namespaces-desc' => 'Dodaje [[Special:Namespaces|posebnu stranicu]] za gledanje i uređivanje namespaces',
	'namespaces_error' => 'Namespaces tablica je prazna.',
	'namespaces_reasonfield' => 'Razlog',
	'namespaces_defaultreason' => 'nema razloga',
	'namespaces_addbutton' => 'Dodaj',
);

/** Italian (Italiano) */
$messages['it'] = array(
	'namespaces_1' => 'si',
	'namespaces_0' => 'no',
	'namespaces_error' => 'La tabella degli namespaces è vuota.',
	'namespaces_edit' => 'Modifica',
	'namespaces_reasonfield' => 'Motivo',
	'namespaces_defaultreason' => 'nessuna motivazione indicata',
	'namespaces_delquestion' => 'Cancello "$1"',
	'namespaces_deleting' => 'Stai cancellando il "$1"',
	'namespaces_deleted' => 'Il "$1" è stato cancellato con successo dalla tabella degli namespaces.',
	'namespaces_delfailed' => 'Rimozione del "$1" dalla tabella degli namespaces fallita.',
	'namespaces_addtext' => 'Aggiungi un namespace',
	'namespaces_addintro' => 'Sta per essere aggiunto un nuovo namespace.',
	'namespaces_addbutton' => 'Aggiungi',
	'namespaces_edittext' => 'Modifica di namespaces',
	'namespaces_edited' => 'Il "$1" è stato modificato.',
	'namespaces_logpagename' => 'Registro tabella namespaces',
	'namespaces_log_added' => 'ha aggiunto "$2" ($3) (canonical: $4) (default: $5) alla namespaces',
	'namespaces_log_edited' => 'ha modificato "$2" : ($3) (canonical: $4) (default: $5) nella namespaces',
	'namespaces_log_deleted' => 'ha rimosso "$2" dalla namespaces',
	'namespaces_logpagetext' => 'Registro dei cambiamenti apportati alla [[Special:Namespaces|namespaces]].',
	'right-namespaces' => 'Modifica i dati namespaces',
	'action-namespaces' => 'modificare questo namespaces',
);

/** Japan (Japanese) */
$messages['ja'] = array(
        'namespaces'                => '名前空間データの閲覧と編集',
        'namespaces-title-norights' => '名前空間データの一覧',
        'namespaces-desc'           => '名前空間テーブルの表示と編集を行う[[Special:Namespaces|特別ページ]]を追加する',
        'namespaces_intro'          => '以下は名前空間の一覧表です。各欄のデータの意味は次の通りです:',
        'namespaces_nsid'         => '番号',
        'namespaces_nsid_intro'   => '名前空間番号 (0-15 は既にMediaWiki内部で使われています、奇数番号はトーク名前空間になります)',
        'namespaces_nsname'            => '名前',
        'namespaces_default_1_intro'  => '[[Special:Allpages]]に以下の名前空間を表示します',
        'namespaces_intro_footer'   => '[[mw:help:namespaces|名前空間]]について、より詳しくは[http://www.mediawiki.org/wiki/Namespaces MediaWiki.org]を参照してください',
        'namespaces_1'              => 'はい',
        'namespaces_0'              => 'いいえ',
        'namespaces_error'          => '名前空間テーブルは空です。',
        'namespaces_edit'           => '編集',
        'namespaces_reasonfield'    => '理由',
        'namespaces_delquestion'    => ' "$1" を削除',
        'namespaces_deleting'       => 'あなたは名前空間 "$1" を削除しようとしています',
        'namespaces_deleted'        => '名前空間 "$1" は名前空間テーブルから正常に削除されました。',
        'namespaces_delfailed'      => '名前空間 "$1" を名前空間テーブルから削除できませんでした。',
        'namespaces_addtext'        => '名前空間を追加する',
        'namespaces_addintro'       => 'あなたは新しい名前空間を追加しようとしています。奇数番号はトークページであることに注意してください。次のペア[0/1 標準, 2/3 利用者, 4/5 プロジェクト, 6/7 ファイル, 8/9 MediaWiki, 10/11 テンプレート, 12/13 ヘルプ, 14/15 カテゴリ]は内部に含まれており予約されています。',
        'namespaces_addbutton'      => '追加',
        'namespaces_added'          => '名前空間 "$1" は名前空間テーブルに正常に追加されました。',
        'namespaces_addfailed'      => '名前空間 "$1" を名前空間テーブルに追加することができませんでした。',
        'namespaces_edittext'       => '名前空間の編集',
        'namespaces_editintro'      => 'あなたは名前空間を編集しようとしています。この作業によりすでに存在しているリンクを破壊する可能性があります',
        'namespaces_edited'         => '名前空間 "$1" は名前空間テーブル内で正常に変更されました。',
        'namespaces_editerror'      => '名前空間テーブル内で名前空間 "$1" を変更できませんでした。存在していない可能性があります。',
        'namespaces-badprefix'      => '指定された名前空間 "$1" は無効な文字を含んでいます',
        'namespaces_logpagename'    => '名前空間編集記録',
        'namespaces_log_added'      => '名前空間 "$2" ($3) (default: $4) (canonical: $5) を追加しました',
        'namespaces_log_edited'     => '名前空間 "$2" を ($3) (default: $4) (canonical: $5) に変更しました',
        'namespaces_log_deleted'    => '名前空間から "$2" を除去しました',
        'namespaces_logpagetext'    => 'これは[[Special:Namespaces|名前空間]]の変更記録です。',
        'right-namespaces'          => '名前空間データの編集',
        'action-namespaces'         => 'この名前空間を変更',
);

/** Latin (Latina) */
$messages['la'] = array(
	'namespaces_error' => 'Tabula est vacua.',
	'namespaces_reasonfield' => 'Causa',
	'namespaces_defaultreason' => 'nulla causa data',
	'namespaces_delquestion' => 'Removens "$1"',
	'namespaces_deleting' => 'Delens "$1".',
	'namespaces_addbutton' => 'Addere',
);

/** Norwegian (bokmål)‬ (‪Norsk (bokmål)‬) */
$messages['no'] = array(
	'namespaces' => 'Vis og manipuler namespaces',
	'namespaces-title-norights' => 'Vis namespaces',
	'namespaces-desc' => 'Legger til en [[Special:Namespaces|spesialside]] som gjør at man kan se og redigere namespaces.',
	'namespaces_intro' => 'Dette er en oversikt over namespaces. Betydningene til dataene i kolonnene:',
	'namespaces_1' => 'ja',
	'namespaces_0' => 'nei',
	'namespaces_error' => 'Namespacestabellen er tom.',
	'namespaces_reasonfield' => 'Årsak',
	'namespaces_defaultreason' => 'ingen grunn gitt',
	'namespaces_delquestion' => 'Sletter «$1»',
	'namespaces_deleting' => 'Du sletter prefikset «$1».',
	'namespaces_deleted' => 'Prefikset «$1» ble fjernet fra namespaces.',
	'namespaces_delfailed' => 'Prefikset «$1» kunne ikke fjernes fra namespaces.',
	'namespaces_addtext' => 'Legg til et namespace.',
	'namespaces_addintro' => 'Du legger til et nytt namespace.',
	'namespaces_addbutton' => 'Legg til',
	'namespaces_added' => 'Prefikset «$1» ble lagt til i namespaces.',
	'namespaces_addfailed' => 'Prefikset «$1» kunne ikke legges til i namespacestabellen. Det er kanskje brukt der fra før.',
	'namespaces_edittext' => 'Redigerer et namespacesprefiks',
	'namespaces_editintro' => 'Du redigerer et namespacesprefiks. Merk at dette kan ødelegge eksisterende lenker.',
	'namespaces_edited' => 'Prefikset «$1» ble endret i namespacestabellen.',
	'namespaces_editerror' => 'Prefikset «$1» kan ikke endres i namespaces.',
	'namespaces_logpagename' => 'Namespacestabellogg',
	'namespaces_log_added' => 'La til «$2» ($3) (canonical: $4) (default: $5) til namespaces',
	'namespaces_log_edited' => 'endret prefikset «$2»: ($3) (canonical: $4) (default: $5) i namespaces',
	'namespaces_log_deleted' => 'Fjernet prefikset «$2» fra namespaces',
	'namespaces_logpagetext' => 'Dette er en logg over endringer i [[Special:Namespaces|namespaces]].',
	'right-namespaces' => 'Redigere namespacesdata',
);

/** Portuguese (Português) */
$messages['pt'] = array(
	'namespaces' => 'Ver e editar dados de namespaces',
	'namespaces-title-norights' => 'Ver dados namespaces',
	'namespaces-desc' => 'Adiciona uma [[Special:Namespaces|página especial]] para visualizar e editar namespaces',
	'namespaces_intro' => 'Isto é um resumo da tabela de namespaces. Significado dos dados nas colunas:',
	'namespaces_intro_footer' => 'Veja [http://www.mediawiki.org/wiki/Namespaces MediaWiki.org] para mais informações sobre namespaces.',
	'namespaces_1' => 'sim',
	'namespaces_0' => 'não',
	'namespaces_error' => 'A tabela de namespaces está vazia.',
	'namespaces_edit' => 'Editar',
	'namespaces_reasonfield' => 'Motivo',
	'namespaces_defaultreason' => 'sem motivo especificado',
	'namespaces_delquestion' => 'Apagando "$1"',
	'namespaces_deleting' => 'Você está apagando o "$1".',
	'namespaces_deleted' => 'O "$1" foi removido da namespaces.',
	'namespaces_delfailed' => 'O "$1" não pôde ser removido da namespaces.',
	'namespaces_addtext' => 'Adicionar um namespace',
	'namespaces_addintro' => 'Você se encontra prestes a adicionar um novo namespace.',
	'namespaces_addbutton' => 'Adicionar',
	'namespaces_added' => '"$1" foi adicionado à tabela de namespaces com sucesso.',
	'namespaces_addfailed' => '"$1" não pôde ser adicionado à tabela de namespaces.',
	'namespaces_edittext' => 'Editando um namespace',
	'namespaces_editintro' => 'Você está editando um namespace. Lembre-se de que isto pode quebrar ligações existentes.',
	'namespaces_edited' => '"$1" foi modificado na tabela de namespaces com sucesso.',
	'namespaces_editerror' => '"$1" não pode ser modificado na tabela de namespaces. Possivelmente, não existe.',
	'namespaces-badprefix' => 'Namespace "$1" contém caracteres inválidos',
	'namespaces_logpagename' => 'Registro da tabela de namespaces',
	'namespaces_log_added' => 'adicionado "$2" ($3) (canonical: $4) (default: $5) à tabela de namespaces',
	'namespaces_log_edited' => 'modificado o prefixo "$2": ($3) (canonical: $4) (default: $5) na tabela de namespaces',
	'namespaces_log_deleted' => 'removido o prefixo "$2" da tabela de namespaces',
	'namespaces_logpagetext' => 'Este é um registro das alterações [[Special:Namespaces|de namespaces]].',
	'right-namespaces' => 'Editar dados de namespaces',
	'action-namespaces' => 'alterar esta entrada namespaces',
);

/** Romanian (Română) */
$messages['ro'] = array(
	'namespaces_1' => 'da',
	'namespaces_0' => 'nu',
	'namespaces_edit' => 'Modificare',
	'namespaces_reasonfield' => 'Motiv',
	'namespaces_defaultreason' => 'nici un motiv oferit',
	'namespaces_delquestion' => 'Ştergere "$1"',
	'namespaces_addbutton' => 'Adaugă',
);

/** Russian (Русский) */
$messages['ru'] = array(
	'namespaces_1' => 'да',
	'namespaces_0' => 'нет',
	'namespaces_edit' => 'Править',
	'namespaces_reasonfield' => 'Причина',
	'namespaces_defaultreason' => 'причина не указана',
);

/* Chinese (Simplified) */
$messages['zh-hans'] = array(
	'namespaces_1' => '是',
	'namespaces_0' => '否',
	'namespaces_reasonfield' => '原因',
	'namespaces_addbutton' => '加入',
);

/** Traditional Chinese (‪中文(繁體)‬) */
$messages['zh-hant'] = array(
	'namespaces_1' => '是',
	'namespaces_0' => '否',
	'namespaces_reasonfield' => '原因',
	'namespaces_addbutton' => '加入',
);