r53269 MediaWiki - Code Review archive

Repository:MediaWiki
Revision:r53268‎ | r53269 | r53270 >
Date:21:21, 14 July 2009
Author:brion
Status:ok
Tags:
Comment:
Copy ContactPageFundraiser to wmf-deployment branch from svn+ssh://svn.wikimedia.org/svnroot/mediawiki/branches/ContactPageFundraiser
Modified paths:
  • /branches/wmf-deployment/extensions/ContactPageFundraiser (added) (history)

Diff [purge]

Index: branches/wmf-deployment/extensions/ContactPageFundraiser/SpecialContact.php
@@ -0,0 +1,380 @@
 2+<?php
 3+/**
 4+ * Speclial:Contact, a contact form for visitors.
 5+ * Based on SpecialEmailUser.php
 6+ *
 7+ * @addtogroup SpecialPage
 8+ * @author Daniel Kinzler, brightbyte.de
 9+ * @copyright © 2007 Daniel Kinzler
 10+ * @licence GNU General Public Licence 2.0 or later
 11+ */
 12+
 13+if( !defined( 'MEDIAWIKI' ) ) {
 14+ echo( "not a valid entry point.\n" );
 15+ die( 1 );
 16+}
 17+
 18+global $IP; #needed when called from the autoloader
 19+require_once("$IP/includes/UserMailer.php");
 20+
 21+/**
 22+ *
 23+ */
 24+class SpecialContact extends SpecialPage {
 25+
 26+ /**
 27+ * Constructor
 28+ */
 29+ function __construct() {
 30+ global $wgOut;
 31+ SpecialPage::SpecialPage( 'Contact', '', true );
 32+ }
 33+
 34+ /**
 35+ * Main execution function
 36+ * @param $par Parameters passed to the page
 37+ */
 38+ function execute( $par ) {
 39+ global $wgUser, $wgOut, $wgRequest, $wgEnableEmail, $wgContactUser;
 40+
 41+ wfLoadExtensionMessages( 'ContactPage' );
 42+ $fname = "SpecialContact::execute";
 43+
 44+ if ( $wgRequest->wasPosted() ) {
 45+ $nu = User::newFromName( $wgContactUser );
 46+ $f = new EmailContactForm( $nu );
 47+
 48+ $form['fname'] = $wgRequest->getVal('fname');
 49+ $form['lname'] = $wgRequest->getVal('lname');
 50+ $form['orgname'] = $wgRequest->getVal('orgname');
 51+ $form['jobname'] = $wgRequest->getVal('jobname');
 52+ $form['urlname'] = $wgRequest->getVal('urlname');
 53+ $form['email'] = $wgRequest->getVal('email');
 54+ $form['telephone'] = $wgRequest->getVal('telephone');
 55+ $form['other'] = $wgRequest->getVal('other');
 56+ $form['url'] = $wgRequest->getVal('url');
 57+ $form['country'] = $wgRequest->getVal('country');
 58+ $form['citytown'] = $wgRequest->getVal('city-town');
 59+ $form['provstat'] = $wgRequest->getVal('prov-state');
 60+ $form['story'] = $wgRequest->getVal('story');
 61+ $form['followup'] = $wgRequest->getVal('follow-up');
 62+
 63+ $text = '';
 64+ foreach( $form as $key => $value) {
 65+ $text .= sprintf("%10s : %s\n", $key,$value);
 66+ }
 67+ $f->setText( $text );
 68+ $f->doSubmit();
 69+ }
 70+
 71+ else {
 72+
 73+ }
 74+ if( !$wgEnableEmail || !$wgContactUser ) {
 75+ $wgOut->showErrorPage( "nosuchspecialpage", "nospecialpagetext" );
 76+ return;
 77+ }
 78+
 79+ $action = $wgRequest->getVal( 'action' );
 80+
 81+ $nu = User::newFromName( $wgContactUser );
 82+ if( is_null( $nu ) || !$nu->canReceiveEmail() ) {
 83+ wfDebug( "Target is invalid user or can't receive.\n" );
 84+ $wgOut->showErrorPage( "noemailtitle", "noemailtext" );
 85+ return;
 86+ }
 87+
 88+ $f = new EmailContactForm( $nu );
 89+
 90+ if ( "success" == $action ) {
 91+ wfDebug( "$fname: success.\n" );
 92+ $f->showSuccess( );
 93+ } else if ( "submit" == $action && $wgRequest->wasPosted() && $f->hasAllInfo() ) {
 94+ $token = $wgRequest->getVal( 'wpEditToken' );
 95+
 96+ if( $wgUser->isAnon() ) {
 97+ # Anonymous users may not have a session
 98+ # open. Check for suffix anyway.
 99+ $tokenOk = ( EDIT_TOKEN_SUFFIX == $token );
 100+ } else {
 101+ $tokenOk = $wgUser->matchEditToken( $token );
 102+ }
 103+
 104+ if ( !$tokenOk ) {
 105+ wfDebug( "$fname: bad token (".($wgUser->isAnon()?'anon':'user')."): $token\n" );
 106+ $wgOut->addWikiText( wfMsg( 'sessionfailure' ) );
 107+ $f->showForm();
 108+ } else if ( !$f->passCaptcha() ) {
 109+ wfDebug( "$fname: captcha failed" );
 110+ $wgOut->addWikiText( wfMsg( 'contactpage-captcha-failed' ) ); //TODO: provide a message for this!
 111+ $f->showForm();
 112+ } else {
 113+ wfDebug( "$fname: submit\n" );
 114+ $f->doSubmit();
 115+ }
 116+ } else {
 117+ wfDebug( "$fname: form\n" );
 118+ $f->showForm();
 119+ }
 120+ }
 121+}
 122+
 123+/**
 124+ * @todo document
 125+ * @addtogroup SpecialPage
 126+ */
 127+class EmailContactForm {
 128+
 129+ var $target;
 130+ var $text, $subject;
 131+ var $cc_me; // Whether user requested to be sent a separate copy of their email.
 132+
 133+ /**
 134+ * @param User $target
 135+ */
 136+ function EmailContactForm( $target ) {
 137+ global $wgRequest, $wgUser;
 138+ global $wgCaptchaClass;
 139+
 140+ $this->target = $target;
 141+ $this->text = $wgRequest->getText( 'wpText' );
 142+ $this->subject = $wgRequest->getText( 'wpSubject' );
 143+ $this->cc_me = $wgRequest->getBool( 'wpCCMe' );
 144+
 145+ $this->fromname = $wgRequest->getText( 'wpFromName' );
 146+ $this->fromaddress = $wgRequest->getText( 'wpFromAddress' );
 147+
 148+ if ($wgUser->isLoggedIn()) {
 149+ if (!$this->fromname) $this->fromname = $wgUser->getName();
 150+ if (!$this->fromaddress) $this->fromaddress = $wgUser->getEmail();
 151+ }
 152+
 153+ //prepare captcha if applicable
 154+ if ( $this->useCaptcha() ) {
 155+ $captcha = ConfirmEditHooks::getInstance();
 156+ $captcha->trigger = 'contactpage';
 157+ $captcha->action = 'contact';
 158+ }
 159+ }
 160+
 161+ function setText( $text ) {
 162+ $this->text = $text;
 163+ }
 164+
 165+ function hasAllInfo() {
 166+ global $wgContactRequireAll;
 167+
 168+ if ( $this->text === NULL ) return false;
 169+ else $this->text = trim( $this->text );
 170+ if ( $this->text === '' ) return false;
 171+
 172+ if ( $wgContactRequireAll ) {
 173+ if ( $this->fromname === NULL ) return false;
 174+ else $this->fromname = trim( $this->fromname );
 175+ if ( $this->fromname === '' ) return false;
 176+
 177+ if ( $this->fromaddress === NULL ) return false;
 178+ else $this->fromaddress = trim( $this->fromaddress );
 179+ if ( $this->fromaddress === '' ) return false;
 180+ }
 181+
 182+ return true;
 183+ }
 184+
 185+ function showForm() {
 186+ global $wgOut, $wgUser, $wgContactRequireAll;
 187+
 188+ #TODO: show captcha
 189+
 190+ $wgOut->setPagetitle( wfMsg( "contactpage-title" ) );
 191+ $wgOut->addWikiText( wfMsg( "contactpage-pagetext" ) );
 192+
 193+ if ( $this->subject === "" ) {
 194+ $this->subject = wfMsgForContent( "contactpage-defsubject" );
 195+ }
 196+
 197+ $msgSuffix = $wgContactRequireAll ? '-required' : '';
 198+
 199+ $emt = wfMsg( "emailto" );
 200+ $rcpt = $this->target->getName();
 201+ $emr = wfMsg( "emailsubject" );
 202+ $emm = wfMsg( "emailmessage" );
 203+ $ems = wfMsg( "emailsend" );
 204+ $emc = wfMsg( "emailccme" );
 205+ $emfn = wfMsg( "contactpage-fromname$msgSuffix" );
 206+ $emfa = wfMsg( "contactpage-fromaddress$msgSuffix" );
 207+ $encSubject = htmlspecialchars( $this->subject );
 208+ $encFromName = htmlspecialchars( $this->fromname );
 209+ $encFromAddress = htmlspecialchars( $this->fromaddress );
 210+
 211+ $titleObj = SpecialPage::getTitleFor( "Contact" );
 212+ $action = $titleObj->escapeLocalURL( "action=submit" );
 213+ $token = $wgUser->isAnon() ? EDIT_TOKEN_SUFFIX : $wgUser->editToken(); //this kind of sucks, really...
 214+ $token = htmlspecialchars( $token );
 215+
 216+ $wgOut->addHTML( "
 217+<form id=\"emailuser\" method=\"post\" action=\"{$action}\">
 218+<table border='0' id='mailheader'>
 219+<tr>
 220+<td align='right'>{$emr}:</td>
 221+<td align='left'>
 222+<input type='text' size='60' maxlength='200' name=\"wpSubject\" value=\"{$encSubject}\" />
 223+</td>
 224+</tr><tr>
 225+<td align='right'>{$emfn}:</td>
 226+<td align='left'>
 227+<input type='text' size='60' maxlength='200' name=\"wpFromName\" value=\"{$encFromName}\" />
 228+</td>
 229+<tr>
 230+<td align='right'>{$emfa}:</td>
 231+<td align='left'>
 232+<input type='text' size='60' maxlength='200' name=\"wpFromAddress\" value=\"{$encFromAddress}\" />
 233+</td>
 234+</tr>
 235+<tr>
 236+<td></td>
 237+<td align='left'>
 238+<small>".wfMsg( "contactpage-formfootnotes$msgSuffix" )."</small>
 239+</td>
 240+</tr>
 241+</table>
 242+<span id='wpTextLabel'><label for=\"wpText\">{$emm}:</label><br /></span>
 243+<textarea name=\"wpText\" rows='20' cols='80' wrap='virtual' style=\"width: 100%;\">" . htmlspecialchars( $this->text ) .
 244+"</textarea>
 245+" . wfCheckLabel( $emc, 'wpCCMe', 'wpCCMe', $wgUser->getBoolOption( 'ccmeonemails' ) ) . "<br />
 246+" . $this->getCaptcha() . "
 247+<input type='submit' name=\"wpSend\" value=\"{$ems}\" />
 248+<input type='hidden' name='wpEditToken' value=\"$token\" />
 249+</form>\n" );
 250+
 251+ }
 252+
 253+ function useCaptcha() {
 254+ global $wgCaptchaClass, $wgCaptchaTriggers, $wgUser;
 255+ if ( !$wgCaptchaClass ) return false; //no captcha installed
 256+ if ( !@$wgCaptchaTriggers['contactpage'] ) return false; //don't trigger on contact form
 257+
 258+ if( $wgUser->isAllowed( 'skipcaptcha' ) ) {
 259+ wfDebug( "EmailContactForm::useCaptcha: user group allows skipping captcha\n" );
 260+ return false;
 261+ }
 262+
 263+ return true;
 264+ }
 265+
 266+ function getCaptcha() {
 267+ global $wgCaptcha;
 268+ if ( !$this->useCaptcha() ) return "";
 269+
 270+ wfSetupSession(); #NOTE: make sure we have a session. May be required for captchas to work.
 271+
 272+ return "<div class='captcha'>" .
 273+ $wgCaptcha->getForm() .
 274+ wfMsgWikiHtml( 'contactpage-captcha' ) .
 275+ "</div>\n";
 276+ }
 277+
 278+ function passCaptcha() {
 279+ global $wgCaptcha;
 280+ if ( !$this->useCaptcha() ) return true;
 281+
 282+ return $wgCaptcha->passCaptcha();
 283+ }
 284+
 285+ function doSubmit( ) {
 286+ global $wgOut, $wgRequest;
 287+ global $wgEnableEmail, $wgUserEmailUseReplyTo, $wgEmergencyContact;
 288+ global $wgContactUser, $wgContactSender, $wgContactSenderName;
 289+
 290+ $csender = $wgContactSender ? $wgContactSender : $wgEmergencyContact;
 291+ $cname = $wgContactSenderName;
 292+
 293+ $fname = 'EmailContactForm::doSubmit';
 294+
 295+ wfDebug( "$fname: start\n" );
 296+
 297+ $to = new MailAddress( $this->target );
 298+ $replyto = NULL;
 299+
 300+ if ( !$this->fromaddress ) {
 301+ $from = new MailAddress( $csender, $cname );
 302+ }
 303+ else if ( $wgUserEmailUseReplyTo ) {
 304+ $from = new MailAddress( $csender, $cname );
 305+ $replyto = new MailAddress( $this->fromaddress, $this->fromname );
 306+ }
 307+ else {
 308+ $from = new MailAddress( $this->fromaddress, $this->fromname );
 309+ }
 310+
 311+ $subject = trim( $this->subject );
 312+
 313+ if ( $subject === "" ) {
 314+ $subject = wfMsgForContent( "contactpage-defsubject" );
 315+ }
 316+
 317+ if ( $this->fromname !== "" ) {
 318+ $subject = wfMsgForContent( "contactpage-subject-and-sender", $subject, $this->fromname );
 319+ }
 320+ else if ( $this->fromaddress !== "" ) {
 321+ $subject = wfMsgForContent( "contactpage-subject-and-sender", $subject, $this->fromaddress );
 322+ }
 323+
 324+ if( wfRunHooks( 'ContactForm', array( &$to, &$replyto, &$subject, &$this->text ) ) ) {
 325+
 326+ wfDebug( "$fname: sending mail from ".$from->toString()." to ".$to->toString()." replyto ".($replyto==null?'-/-':$replyto->toString())."\n" );
 327+
 328+ #HACK: in MW 1.9, replyto must be a string, in MW 1.10 it must be an object!
 329+ $ver = preg_replace( '![^\d._+]!', '', $GLOBALS['wgVersion'] );
 330+ $replyaddr = $replyto == null
 331+ ? NULL : version_compare( $ver, '1.10', '<' )
 332+ ? $replyto->toString() : $replyto;
 333+
 334+ $mailResult = userMailer( $to, $from, $subject, $this->text, $replyaddr );
 335+
 336+ if( WikiError::isError( $mailResult ) ) {
 337+ $wgOut->addWikiText( wfMsg( "usermailererror" ) . $mailResult->getMessage());
 338+ } else {
 339+
 340+ // if the user requested a copy of this mail, do this now,
 341+ // unless they are emailing themselves, in which case one copy of the message is sufficient.
 342+ if ($this->cc_me && $replyto) {
 343+ $cc_subject = wfMsg('emailccsubject', $this->target->getName(), $subject);
 344+ if( wfRunHooks( 'ContactForm', array( &$from, &$replyto, &$cc_subject, &$this->text ) ) ) {
 345+ wfDebug( "$fname: sending cc mail from ".$from->toString()." to ".$replyto->toString()."\n" );
 346+ $ccResult = userMailer( $replyto, $from, $cc_subject, $this->text );
 347+ if( WikiError::isError( $ccResult ) ) {
 348+ // At this stage, the user's CC mail has failed, but their
 349+ // original mail has succeeded. It's unlikely, but still, what to do?
 350+ // We can either show them an error, or we can say everything was fine,
 351+ // or we can say we sort of failed AND sort of succeeded. Of these options,
 352+ // simply saying there was an error is probably best.
 353+ $wgOut->addWikiText( wfMsg( "usermailererror" ) . $ccResult);
 354+ return;
 355+ }
 356+ }
 357+ }
 358+
 359+ wfDebug( "$fname: success\n" );
 360+
 361+ $returnto = Title::newFromText( $wgRequest->getVal( 'returnto' ) );
 362+ if( is_null( $returnto ) || !$returnto->isLocal() ) {
 363+ $returnto = SpecialPage::getTitleFor( "Contact" );
 364+ }
 365+ $wgOut->redirect( $returnto->getFullUrl() );
 366+ wfRunHooks( 'ContactFromComplete', array( $to, $replyto, $subject, $this->text ) );
 367+ }
 368+ }
 369+
 370+ wfDebug( "$fname: end\n" );
 371+ }
 372+
 373+ function showSuccess( ) {
 374+ global $wgOut;
 375+
 376+ $wgOut->setPagetitle( wfMsg( "emailsent" ) );
 377+ $wgOut->addWikiText( wfMsg( "emailsenttext" ) );
 378+
 379+ $wgOut->returnToMain( false );
 380+ }
 381+}
Property changes on: branches/wmf-deployment/extensions/ContactPageFundraiser/SpecialContact.php
___________________________________________________________________
Name: svn:eol-style
1382 + native
Name: eol-style:native
2383 + properties
Index: branches/wmf-deployment/extensions/ContactPageFundraiser/install.settings
@@ -0,0 +1,5 @@
 2+require_once( "{{path}}/ContactPage.php" );
 3+
 4+$wgContactUser = 'WikiAdmin';
 5+$wgContactSender = 'apache@' . $wgServerName;
 6+$wgContactSenderName = 'Contact Form on ' . $wgSitename;
Property changes on: branches/wmf-deployment/extensions/ContactPageFundraiser/install.settings
___________________________________________________________________
Name: svn:eol-style
17 + native
Name: eol-style:native
28 + properties
Index: branches/wmf-deployment/extensions/ContactPageFundraiser/ContactPage.alias.php
@@ -0,0 +1,154 @@
 2+<?php
 3+/**
 4+ * Aliases for Special:Contact
 5+ *
 6+ * @addtogroup Extensions
 7+ */
 8+
 9+$aliases = array();
 10+
 11+/** English
 12+ * @author Jon Harald Søby
 13+ */
 14+$aliases['en'] = array(
 15+ 'Contact' => array( 'Contact' ),
 16+);
 17+
 18+/** Arabic (العربية)
 19+ * @author Meno25
 20+ */
 21+$aliases['ar'] = array(
 22+ 'Contact' => array( 'اتصال' ),
 23+);
 24+
 25+/** Egyptian Spoken Arabic (مصرى)
 26+ * @author Meno25
 27+ */
 28+$aliases['arz'] = array(
 29+ 'Contact' => array( 'اتصال' ),
 30+);
 31+
 32+/** Assamese (অসমীয়া) */
 33+$aliases['as'] = array(
 34+ 'Contact' => array( 'যোগাযোগ' ),
 35+);
 36+
 37+/** German (Deutsch) */
 38+$aliases['de'] = array(
 39+ 'Contact' => array( 'Kontakt' ),
 40+);
 41+
 42+/** Finnish (Suomi) */
 43+$aliases['fi'] = array(
 44+ 'Contact' => array( 'Yhteystiedot' ),
 45+);
 46+
 47+/** Galician (Galego) */
 48+$aliases['gl'] = array(
 49+ 'Contact' => array( 'Contactar' ),
 50+);
 51+
 52+/** Hebrew (עברית)
 53+ * @author Rotem Liss
 54+ */
 55+$aliases['he'] = array(
 56+ 'Contact' => array( 'יצירת_קשר' ),
 57+);
 58+
 59+/** Croatian (Hrvatski) */
 60+$aliases['hr'] = array(
 61+ 'Contact' => array( 'Kontakt' ),
 62+);
 63+
 64+/** Upper Sorbian (Hornjoserbsce) */
 65+$aliases['hsb'] = array(
 66+ 'Contact' => array( 'Kontakt' ),
 67+);
 68+
 69+/** Haitian (Kreyòl ayisyen) */
 70+$aliases['ht'] = array(
 71+ 'Contact' => array( 'Kontak' ),
 72+);
 73+
 74+/** Hungarian (Magyar) */
 75+$aliases['hu'] = array(
 76+ 'Contact' => array( 'Kapcsolat' ),
 77+);
 78+
 79+/** Indonesian (Bahasa Indonesia) */
 80+$aliases['id'] = array(
 81+ 'Contact' => array( 'Kontak' ),
 82+);
 83+
 84+/** Khmer (ភាសាខ្មែរ) */
 85+$aliases['km'] = array(
 86+ 'Contact' => array( 'ទំនាក់ទំនង' ),
 87+);
 88+
 89+/** Luxembourgish (Lëtzebuergesch) */
 90+$aliases['lb'] = array(
 91+ 'Contact' => array( 'Kontakt' ),
 92+);
 93+
 94+/** Macedonian (Македонски) */
 95+$aliases['mk'] = array(
 96+ 'Contact' => array( 'Контакт' ),
 97+);
 98+
 99+/** Low German (Plattdüütsch) */
 100+$aliases['nds'] = array(
 101+ 'Contact' => array( 'Kuntakt' ),
 102+);
 103+
 104+/** Nedersaksisch (Nedersaksisch) */
 105+$aliases['nds-nl'] = array(
 106+ 'Contact' => array( 'Kontak' ),
 107+);
 108+
 109+/** Dutch (Nederlands) */
 110+$aliases['nl'] = array(
 111+ 'Contact' => array( 'Contactpagina' ),
 112+);
 113+
 114+/** Norwegian (bokmål)‬ (‪Norsk (bokmål)‬)
 115+ * @author Jon Harald Søby
 116+ */
 117+$aliases['no'] = array(
 118+ 'Contact' => array( 'Kontakt', 'Kontaktside' ),
 119+);
 120+
 121+/** Polish (Polski) */
 122+$aliases['pl'] = array(
 123+ 'Contact' => array( 'Kontakt' ),
 124+);
 125+
 126+/** Pashto (پښتو) */
 127+$aliases['ps'] = array(
 128+ 'Contact' => array( 'اړيکه، د اړيکو مخ' ),
 129+);
 130+
 131+/** Portuguese (Português) */
 132+$aliases['pt'] = array(
 133+ 'Contact' => array( 'Contactar', 'Contatar' ),
 134+);
 135+
 136+/** Brazilian Portuguese (Português do Brasil) */
 137+$aliases['pt-br'] = array(
 138+ 'Contact' => array( 'Contactar', 'Contatar' ),
 139+);
 140+
 141+/** Swedish (Svenska) */
 142+$aliases['sv'] = array(
 143+ 'Contact' => array( 'Kontakt' ),
 144+);
 145+
 146+/** Tetum (Tetun) */
 147+$aliases['tet'] = array(
 148+ 'Contact' => array( 'Kontaktu' ),
 149+);
 150+
 151+/** Thai (ไทย) */
 152+$aliases['th'] = array(
 153+ 'Contact' => array( 'ติดต่อ' ),
 154+);
 155+
Property changes on: branches/wmf-deployment/extensions/ContactPageFundraiser/ContactPage.alias.php
___________________________________________________________________
Name: svn:eol-style
1156 + native
Index: branches/wmf-deployment/extensions/ContactPageFundraiser/ContactPage.i18n.php
@@ -0,0 +1,1139 @@
 2+<?php
 3+/**
 4+ * Internationalisation file for extension ContactPage.
 5+ *
 6+ * @addtogroup Extensions
 7+ * @author Daniel Kinzler, brightbyte.de
 8+ * @copyright © 2007 Daniel Kinzler
 9+ * @license GNU General Public Licence 2.0 or later
 10+ */
 11+
 12+$messages = array();
 13+
 14+$messages['en'] = array(
 15+ 'contact' => 'Contact page',
 16+ 'contactpage' => 'Contact page',
 17+ 'contactpage-desc' => '[[Special:Contact|Contact form for visitors]]',
 18+ 'contactpage-title' => 'Contact',
 19+ 'contactpage-pagetext' => 'Please use the form below to contact us.',
 20+ 'contactpage-defsubject' => 'Contact Message',
 21+ 'contactpage-subject-and-sender' => '$1 (from $2)',
 22+ 'contactpage-fromname' => 'your name *',
 23+ 'contactpage-fromaddress' => 'your e-mail **',
 24+ 'contactpage-formfootnotes' => '* optional<br />
 25+** optional but needed if you want an answer',
 26+ 'contactpage-fromname-required' => 'your name',
 27+ 'contactpage-fromaddress-required' => 'your e-mail',
 28+ 'contactpage-formfootnotes-required' => 'All fields are required.',
 29+ 'contactpage-captcha' => 'To send the message, please solve the captcha ([[Special:Captcha/help|more info]])',
 30+ 'contactpage-captcha-failed' => 'Captcha test failed! ([[Special:Captcha/help|more info]])',
 31+);
 32+
 33+/** Message documentation (Message documentation)
 34+ * @author Jon Harald Søby
 35+ * @author Purodha
 36+ */
 37+$messages['qqq'] = array(
 38+ 'contact' => '{{Identical|ContactPage}}',
 39+ 'contactpage' => '{{Identical|ContactPage}}',
 40+ 'contactpage-desc' => 'Extension description displayed on [[Special:Version]].',
 41+);
 42+
 43+/** Säggssch (Säggssch)
 44+ * @author Thogo
 45+ */
 46+$messages['sxu'] = array(
 47+ 'contact' => 'Gondagd',
 48+);
 49+
 50+/** Afrikaans (Afrikaans)
 51+ * @author Arnobarnard
 52+ * @author Naudefj
 53+ */
 54+$messages['af'] = array(
 55+ 'contact' => 'Kontak bladsy',
 56+ 'contactpage' => 'Kontak bladsy',
 57+ 'contactpage-desc' => '[[Special:Contact|Kontak vorm vir besoekers]]',
 58+ 'contactpage-title' => 'Kontak',
 59+ 'contactpage-defsubject' => 'Kontak boodskap',
 60+ 'contactpage-subject-and-sender' => '$1 (van $2)',
 61+ 'contactpage-fromname' => 'u naam *',
 62+ 'contactpage-fromaddress' => 'u e-posadres **',
 63+ 'contactpage-fromname-required' => 'u naam',
 64+ 'contactpage-fromaddress-required' => 'u e-posadres',
 65+ 'contactpage-formfootnotes-required' => 'Alle velde is verpligtend.',
 66+);
 67+
 68+/** Arabic (العربية)
 69+ * @author Meno25
 70+ */
 71+$messages['ar'] = array(
 72+ 'contact' => 'صفحة الاتصال',
 73+ 'contactpage' => 'صفحة الاتصال',
 74+ 'contactpage-desc' => '[[Special:Contact|استمارة اتصال للزائرين]]',
 75+ 'contactpage-title' => 'اتصل',
 76+ 'contactpage-pagetext' => 'من فضلك استخدم الاستمارة بالأسفل للاتصال بنا.',
 77+ 'contactpage-defsubject' => 'رسالة الاتصال',
 78+ 'contactpage-subject-and-sender' => '$1 (من $2)',
 79+ 'contactpage-fromname' => 'اسمك *',
 80+ 'contactpage-fromaddress' => 'بريدك الإلكتروني **',
 81+ 'contactpage-formfootnotes' => '* اختياري<br />
 82+** اختياري لكن ضروري لو أردت إجابة',
 83+ 'contactpage-fromname-required' => 'اسمك',
 84+ 'contactpage-fromaddress-required' => 'بريدك الإلكتروني',
 85+ 'contactpage-formfootnotes-required' => 'كل الحقول مطلوبة',
 86+ 'contactpage-captcha' => 'لإرسال الرسالة، من فضلك حل الكابتشا ([[Special:Captcha/help|معلومات إضافية]])',
 87+ 'contactpage-captcha-failed' => 'اختبار الكابتشا فشل! ([[Special:Captcha/help|معلومات إضافية]])',
 88+);
 89+
 90+/** Egyptian Spoken Arabic (مصرى)
 91+ * @author Meno25
 92+ */
 93+$messages['arz'] = array(
 94+ 'contact' => 'صفحة الاتصال',
 95+ 'contactpage' => 'صفحة الاتصال',
 96+ 'contactpage-desc' => '[[Special:Contact|استمارة اتصال للزائرين]]',
 97+ 'contactpage-title' => 'اتصل',
 98+ 'contactpage-pagetext' => 'من فضلك استخدم الاستمارة بالأسفل للاتصال بنا.',
 99+ 'contactpage-defsubject' => 'رسالة الاتصال',
 100+ 'contactpage-subject-and-sender' => '$1 (من $2)',
 101+ 'contactpage-fromname' => 'اسمك *',
 102+ 'contactpage-fromaddress' => 'بريدك الإلكترونى **',
 103+ 'contactpage-formfootnotes' => '* اختياري<br />
 104+** اختيارى لكن ضرورى لو أردت إجابة',
 105+ 'contactpage-fromname-required' => 'اسمك',
 106+ 'contactpage-fromaddress-required' => 'بريدك الإلكتروني',
 107+ 'contactpage-formfootnotes-required' => 'كل الحقول مطلوبة',
 108+ 'contactpage-captcha' => 'لإرسال الرسالة، من فضلك حل الكابتشا ([[Special:Captcha/help|معلومات إضافية]])',
 109+ 'contactpage-captcha-failed' => 'اختبار الكابتشا فشل! ([[Special:Captcha/help|معلومات إضافية]])',
 110+);
 111+
 112+/** Bikol Central (Bikol Central)
 113+ * @author Filipinayzd
 114+ */
 115+$messages['bcl'] = array(
 116+ 'contactpage-subject-and-sender' => '$1 (poon $2)',
 117+ 'contactpage-fromname' => 'pangaran mo *',
 118+ 'contactpage-fromaddress' => "''e''-surat mo **",
 119+);
 120+
 121+/** Bulgarian (Български)
 122+ * @author DCLXVI
 123+ */
 124+$messages['bg'] = array(
 125+ 'contactpage-desc' => '[[Special:Contact|Формуляр за връзка]]',
 126+ 'contactpage-pagetext' => 'Формулярът по-долу може да бъде използван за връзка с нас.',
 127+ 'contactpage-defsubject' => 'Съобщение',
 128+ 'contactpage-subject-and-sender' => '$1 (от $2)',
 129+ 'contactpage-fromname' => 'вашето име *',
 130+ 'contactpage-fromaddress' => 'вашата е-поща **',
 131+ 'contactpage-formfootnotes' => '* незадължително<br />
 132+** незадължително, но препоръчително ако желаете отговор',
 133+ 'contactpage-fromname-required' => 'вашето име',
 134+ 'contactpage-fromaddress-required' => 'вашата е-поща',
 135+ 'contactpage-formfootnotes-required' => 'Всички полета са задължителни.',
 136+ 'contactpage-captcha' => 'За изпращане на съобщение е необходимо да се реши задачата ([[Special:Captcha/help|повече информация]])',
 137+ 'contactpage-captcha-failed' => 'Captcha-тестът беше неуспешен! ([[Special:Captcha/help|повече информация]])',
 138+);
 139+
 140+/** Catalan (Català)
 141+ * @author SMP
 142+ */
 143+$messages['ca'] = array(
 144+ 'contactpage-title' => 'Contacte',
 145+);
 146+
 147+/** Czech (Česky)
 148+ * @author Matěj Grabovský
 149+ * @author לערי ריינהארט
 150+ */
 151+$messages['cs'] = array(
 152+ 'contact' => 'Kontakt',
 153+ 'contactpage' => 'Kontaktní stránka',
 154+ 'contactpage-desc' => '[[Special:Contact|Kontaktní formulář pro návštěvníky]]',
 155+ 'contactpage-title' => 'Kontakt',
 156+ 'contactpage-defsubject' => 'Zpráva',
 157+ 'contactpage-subject-and-sender' => '$1 (od $2)',
 158+ 'contactpage-fromname' => 'vaše jméno *',
 159+ 'contactpage-fromaddress' => 'váš email **',
 160+ 'contactpage-formfootnotes' => '&#042; volitelné<br />
 161+&#042;&#042; volitelné, ale potřebné pokud chcete odpověď',
 162+);
 163+
 164+/** Welsh (Cymraeg)
 165+ * @author Lloffiwr
 166+ */
 167+$messages['cy'] = array(
 168+ 'contactpage-captcha' => 'Er mwyn anfon y neges, byddwch gystal â datrys y pos gwrth-sbam ([[Special:Captcha/help|mwy o wybodaeth]])',
 169+ 'contactpage-captcha-failed' => 'Ni lwyddodd y prawf gwrth-sbam! ([[Special:Captcha/help|mwy o wybodaeth]])',
 170+);
 171+
 172+/** Danish (Dansk) */
 173+$messages['da'] = array(
 174+ 'contactpage-subject-and-sender' => '$1 (fra $2)',
 175+);
 176+
 177+/** German (Deutsch)
 178+ * @author Raimond Spekking
 179+ */
 180+$messages['de'] = array(
 181+ 'contact' => 'Kontaktseite',
 182+ 'contactpage' => 'Kontaktseite',
 183+ 'contactpage-desc' => '[[Special:Contact|Kontaktformular für Besucher]]',
 184+ 'contactpage-title' => 'Kontakt',
 185+ 'contactpage-pagetext' => 'Mit diesem Formular kannst du uns Nachrichten zukommen lassen.',
 186+ 'contactpage-defsubject' => 'Kontaktnachricht',
 187+ 'contactpage-subject-and-sender' => '$1 (von $2)',
 188+ 'contactpage-fromname' => 'Dein Name *',
 189+ 'contactpage-fromaddress' => 'Deine E-Mail-Adresse **',
 190+ 'contactpage-formfootnotes' => '* optional<br />
 191+** optional, wird aber benötigt, um dir antworten zu können',
 192+ 'contactpage-fromname-required' => 'Dein Name',
 193+ 'contactpage-fromaddress-required' => 'Deine E-Mail-Adresse',
 194+ 'contactpage-formfootnotes-required' => 'Alle Felder müssen ausgefüllt sein.',
 195+ 'contactpage-captcha' => 'Um die Nachricht senden zu können, löse bitte das Captcha ([[Special:Captcha/help|weitere Informationen]])',
 196+ 'contactpage-captcha-failed' => 'Captcha-Test nicht bestanden! ([[Special:Captcha/help|weitere Informationen]])',
 197+);
 198+
 199+/** German (formal address) (Deutsch (Sie-Form))
 200+ * @author Raimond Spekking
 201+ */
 202+$messages['de-formal'] = array(
 203+ 'contactpage-pagetext' => 'Mit diesem Formular können Sie uns Nachrichten zukommen lassen.',
 204+ 'contactpage-fromname' => 'Ihr Name *',
 205+ 'contactpage-fromaddress' => 'Ihre E-Mail-Adresse **',
 206+ 'contactpage-formfootnotes' => '* optional<br />
 207+** optional, wird aber benötigt, um Ihnen antworten zu können',
 208+ 'contactpage-fromname-required' => 'Ihr Name',
 209+ 'contactpage-fromaddress-required' => 'Ihre E-Mail-Adresse',
 210+ 'contactpage-captcha' => 'Um die Nachricht senden zu können, lösen Sie bitte das Captcha ([[Special:Captcha/help|weitere Informationen]])',
 211+);
 212+
 213+/** Lower Sorbian (Dolnoserbski)
 214+ * @author Michawiki
 215+ */
 216+$messages['dsb'] = array(
 217+ 'contact' => 'Kontaktowy bok',
 218+ 'contactpage' => 'Kontaktowy bok',
 219+ 'contactpage-desc' => '[[Special:Contact|Kontaktowy formular za wobglědowarjow]]',
 220+ 'contactpage-title' => 'Kontakt',
 221+ 'contactpage-pagetext' => 'Pšosym wužyj toś ten formular, aby se z nami do zwiska stajił.',
 222+ 'contactpage-defsubject' => 'Kontaktowa powěźenka',
 223+ 'contactpage-subject-and-sender' => '$1 (z $2)',
 224+ 'contactpage-fromname' => 'Twójo mě *',
 225+ 'contactpage-fromaddress' => 'Twója e-mailowa adresa **',
 226+ 'contactpage-formfootnotes' => '* opcionalny<br />
 227+** opcionalny, jo pak trěbne, aby śi wótegroniś mógli',
 228+ 'contactpage-fromname-required' => 'twójo mě',
 229+ 'contactpage-fromaddress-required' => 'twója e-mail',
 230+ 'contactpage-formfootnotes-required' => 'Wšykne póla muse wupołnjone byś.',
 231+ 'contactpage-captcha' => 'Aby powěźenku pósłał, rozwěž pšosym toś te captcha ([[Special:Captcha/help|dalšne informacije]])',
 232+ 'contactpage-captcha-failed' => 'Test captcha njebu wobstaty! ([[Special:Captcha/help|dalšne informacije]])',
 233+);
 234+
 235+/** Greek (Ελληνικά)
 236+ * @author Consta
 237+ */
 238+$messages['el'] = array(
 239+ 'contact' => 'Σελίδα επαφών',
 240+ 'contactpage' => 'Σελίδα επαφών',
 241+ 'contactpage-title' => 'Επαφή',
 242+ 'contactpage-subject-and-sender' => '$1 (από $2)',
 243+ 'contactpage-fromname' => 'το όνομα σας *',
 244+ 'contactpage-fromaddress' => 'το ηλεκτρονικό ταχυδρομείο σας **',
 245+ 'contactpage-fromname-required' => 'το όνομα σας',
 246+ 'contactpage-fromaddress-required' => 'το ηλεκτρονικό σας ταχυδρομείο',
 247+ 'contactpage-formfootnotes-required' => 'Όλα τα πεδία είναι υποχρεωτικά.',
 248+);
 249+
 250+/** Esperanto (Esperanto)
 251+ * @author Yekrats
 252+ */
 253+$messages['eo'] = array(
 254+ 'contact' => 'Kontaktpaĝo',
 255+ 'contactpage' => 'Kontaktpaĝo',
 256+ 'contactpage-desc' => '[[Special:Contact|Kontaktpaĝo por vizitantoj]]',
 257+ 'contactpage-title' => 'Kontakti',
 258+ 'contactpage-pagetext' => 'Bonvolu uzi la suban kamparon por kontakti nin.',
 259+ 'contactpage-defsubject' => 'Kontakta Mesaĝo',
 260+ 'contactpage-subject-and-sender' => '$1 (de $2)',
 261+ 'contactpage-fromname' => 'via nomo *',
 262+ 'contactpage-fromaddress' => 'via retadreso **',
 263+ 'contactpage-formfootnotes' => '* nedeviga<br />
 264+** nedeviga sed deviga se vi volas respondon',
 265+ 'contactpage-fromname-required' => 'via nomo',
 266+ 'contactpage-fromaddress-required' => 'via retadreso',
 267+ 'contactpage-formfootnotes-required' => 'Ĉiuj kampoj estas devigaj.',
 268+ 'contactpage-captcha' => "Sendi la mesaĝon, bonvolu solvi la enigmon de ''captcha'' ([[Special:Captcha/help|plua informo]])",
 269+);
 270+
 271+/** Spanish (Español)
 272+ * @author לערי ריינהארט
 273+ */
 274+$messages['es'] = array(
 275+ 'contact' => 'Para contactar',
 276+);
 277+
 278+/** Extremaduran (Estremeñu)
 279+ * @author Better
 280+ */
 281+$messages['ext'] = array(
 282+ 'contactpage-subject-and-sender' => '$1 (endi $2)',
 283+ 'contactpage-fromname' => 'el tu nombri *',
 284+ 'contactpage-fromaddress' => 'el tu email **',
 285+);
 286+
 287+/** Finnish (Suomi)
 288+ * @author Cimon Avaro
 289+ * @author Jaakonam
 290+ * @author Nike
 291+ */
 292+$messages['fi'] = array(
 293+ 'contact' => 'Yhteydenottosivu',
 294+ 'contactpage-title' => 'Ota yhteyttä',
 295+ 'contactpage-pagetext' => 'Voit ottaa yhteyttä meihin alla olevalla lomakkeella.',
 296+ 'contactpage-defsubject' => 'Viestisi',
 297+ 'contactpage-subject-and-sender' => '$1 (lähettäjä: $2)',
 298+ 'contactpage-fromname' => 'nimesi *',
 299+ 'contactpage-fromaddress' => 'sähköpostiosoitteesi **',
 300+ 'contactpage-formfootnotes' => '* vapaaehtoinen<br />
 301+** vapaaehtoinen mutta tarpeen, jos haluat vastauksen viestiisi',
 302+ 'contactpage-fromname-required' => 'nimesi',
 303+ 'contactpage-fromaddress-required' => 'sähköpostiosoitteesi',
 304+ 'contactpage-formfootnotes-required' => 'Kaikki kentät ovat pakollisia.',
 305+);
 306+
 307+/** French (Français)
 308+ * @author Grondin
 309+ * @author Sherbrooke
 310+ * @author Urhixidur
 311+ * @author לערי ריינהארט
 312+ */
 313+$messages['fr'] = array(
 314+ 'contact' => 'Pour nous contacter',
 315+ 'contactpage' => 'Contact',
 316+ 'contactpage-desc' => '[[Special:Contact|Formulaire de contact pour les visiteurs]]',
 317+ 'contactpage-title' => 'Contacter',
 318+ 'contactpage-pagetext' => 'Veuillez utiliser le formulaire ci-dessous pour nous contacter.',
 319+ 'contactpage-defsubject' => 'Message',
 320+ 'contactpage-subject-and-sender' => '$1 (de $2)',
 321+ 'contactpage-fromname' => 'Votre nom*',
 322+ 'contactpage-fromaddress' => 'Votre adresse courriel**',
 323+ 'contactpage-formfootnotes' => '* optionnel<br />
 324+** optionnel mais requis si vous désirez une réponse',
 325+ 'contactpage-fromname-required' => 'votre nom',
 326+ 'contactpage-fromaddress-required' => 'votre adresse courriel',
 327+ 'contactpage-formfootnotes-required' => 'Tous les champs sont requis.',
 328+ 'contactpage-captcha' => 'Pour envoyer le message, prière de résoudre le captcha ([[Special:Captcha/help|aide]])',
 329+ 'contactpage-captcha-failed' => "Vous n'avez pas décodé le captcha ! ([[Special:Captcha/help|aide]])",
 330+);
 331+
 332+/** Galician (Galego)
 333+ * @author Alma
 334+ * @author Toliño
 335+ * @author Xosé
 336+ */
 337+$messages['gl'] = array(
 338+ 'contact' => 'Páxina de Contacto',
 339+ 'contactpage' => 'Páxina de Contacto',
 340+ 'contactpage-desc' => '[[Special:Contact|Formulario de contacto para os visitantes]]',
 341+ 'contactpage-title' => 'Contacto',
 342+ 'contactpage-pagetext' => 'Use o formulario de embaixo para contactar con nós.',
 343+ 'contactpage-defsubject' => 'Mensaxe de Contacto',
 344+ 'contactpage-subject-and-sender' => '$1 (desde $2)',
 345+ 'contactpage-fromname' => 'o seu nome *',
 346+ 'contactpage-fromaddress' => 'o seu correo electrónico **',
 347+ 'contactpage-formfootnotes' => '* opcional<br />
 348+** opcional, pero necesario se quere unha resposta',
 349+ 'contactpage-fromname-required' => 'o seu nome',
 350+ 'contactpage-fromaddress-required' => 'o seu correo electrónico',
 351+ 'contactpage-formfootnotes-required' => 'Requírense todos os campos.',
 352+ 'contactpage-captcha' => 'Para enviar unha mensaxe, resolva o captcha ([[Special:Captcha/help|máis información]])',
 353+ 'contactpage-captcha-failed' => 'Fallou a proba Captcha ([[Special:Captcha/help|máis información]])',
 354+);
 355+
 356+/** Ancient Greek (Ἀρχαία ἑλληνικὴ)
 357+ * @author Omnipaedista
 358+ */
 359+$messages['grc'] = array(
 360+ 'contactpage-title' => 'Ἐπαφή',
 361+);
 362+
 363+/** Manx (Gaelg)
 364+ * @author MacTire02
 365+ */
 366+$messages['gv'] = array(
 367+ 'contactpage-fromname' => "dt'ennym *",
 368+ 'contactpage-fromaddress' => 'dty phost-L **',
 369+);
 370+
 371+/** Hebrew (עברית)
 372+ * @author Agbad
 373+ * @author Rotemliss
 374+ * @author YaronSh
 375+ */
 376+$messages['he'] = array(
 377+ 'contact' => 'דף יצירת קשר',
 378+ 'contactpage' => 'דף יצירת קשר',
 379+ 'contactpage-desc' => '[[Special:Contact|טופס יצירת קשר למבקרים]]',
 380+ 'contactpage-title' => 'יצירת קשר',
 381+ 'contactpage-pagetext' => 'אנא השתמשו בטופס שלהלן כדי ליצור עמנו קשר.',
 382+ 'contactpage-defsubject' => 'הודעת יצירת קשר',
 383+ 'contactpage-subject-and-sender' => '$1 (מתוך $2)',
 384+ 'contactpage-fromname' => 'שמכם *',
 385+ 'contactpage-fromaddress' => 'כתובת הדוא"ל שלכם **',
 386+ 'contactpage-formfootnotes' => '* אופציונאלי<br />
 387+** אופציונאלי אבל דרוש אם ברצונכם לקבל תשובה',
 388+ 'contactpage-fromname-required' => 'שמכם',
 389+ 'contactpage-fromaddress-required' => 'הדוא"ל שלכם',
 390+ 'contactpage-formfootnotes-required' => 'כל השדות נחוצים.',
 391+ 'contactpage-captcha' => 'כדי לשלוח את ההודעה, אנא הקלידו את המילים המופיעות להלן בתיבה ([[Special:Captcha/help|מידע נוסף]])',
 392+ 'contactpage-captcha-failed' => 'מבחן ה־Captcha נכשל! ([[Special:Captcha/help|מידע נוסף]])',
 393+);
 394+
 395+/** Hindi (हिन्दी)
 396+ * @author Kaustubh
 397+ */
 398+$messages['hi'] = array(
 399+ 'contact' => 'सम्पर्कपॄष्ठ',
 400+ 'contactpage' => 'सम्पर्क पॄष्ठ',
 401+ 'contactpage-desc' => '[[Special:Contact|भेंट देनेवालोंके लिये संपर्क फ़ार्म]]',
 402+ 'contactpage-title' => 'संपर्क',
 403+ 'contactpage-pagetext' => 'हमसे संपर्क करने के लिये नीचे दिये गये फ़ार्म का इस्तेमाल करें।',
 404+ 'contactpage-defsubject' => 'संपर्क संदेश',
 405+ 'contactpage-subject-and-sender' => '$1 ($2 से)',
 406+ 'contactpage-fromname' => 'आपका नाम *',
 407+ 'contactpage-fromaddress' => 'आपका इ-मेल **',
 408+ 'contactpage-formfootnotes' => '* वैकल्पिक<br />
 409+** वैकल्पिक पर जवाब चाहिये हो तो आवश्यक',
 410+ 'contactpage-captcha' => 'यह संदेश भेजनेके लिये, कृपया कॅपचा (captcha) सॉल्व करें ([[Special:Captcha/help|अधिक ज़ानकारी]])',
 411+ 'contactpage-captcha-failed' => 'कॅपचा परिक्षा पूरी नहीं हुई! ([[Special:Captcha/help|अधिक ज़ानकारी]])',
 412+);
 413+
 414+/** Croatian (Hrvatski)
 415+ * @author Dnik
 416+ */
 417+$messages['hr'] = array(
 418+ 'contactpage-title' => 'Kontakt',
 419+ 'contactpage-pagetext' => 'Molimo, koristite ovaj obrazac za kontakt s nama.',
 420+ 'contactpage-defsubject' => 'Poruka za kontakt',
 421+ 'contactpage-subject-and-sender' => '$1 (od $2)',
 422+ 'contactpage-fromname' => 'Vaše ime *',
 423+ 'contactpage-fromaddress' => 'Vaš e-mail **',
 424+ 'contactpage-formfootnotes' => '* neobavezno<br />
 425+** neobavezno, ali potrebno ako želite odgovor',
 426+ 'contactpage-captcha' => 'Da biste poslali poruku, molimo da u svrhu prevencije spama, prepišete simbole ([[Special:Captcha/help|više informacija]])',
 427+ 'contactpage-captcha-failed' => 'Antispam-test nije uspio! ([[Special:Captcha/help|više informacija]])',
 428+);
 429+
 430+/** Upper Sorbian (Hornjoserbsce)
 431+ * @author Michawiki
 432+ */
 433+$messages['hsb'] = array(
 434+ 'contact' => 'Kontaktna strona',
 435+ 'contactpage' => 'Kontaktna strona',
 436+ 'contactpage-desc' => '[[Special:Contact|Kontaktowy formular za wopytarjow]]',
 437+ 'contactpage-title' => 'Kontakt',
 438+ 'contactpage-pagetext' => 'Prošu wužij tutón formular, zo by nas skontaktował.',
 439+ 'contactpage-defsubject' => 'Kontaktna zdźělenka',
 440+ 'contactpage-subject-and-sender' => '$1 (z $2)',
 441+ 'contactpage-fromname' => 'twoje mjeno *',
 442+ 'contactpage-fromaddress' => 'twoja e-mejlowa adresa **',
 443+ 'contactpage-formfootnotes' => '* opcionalny<br />
 444+** opcionalny, je wšak trjeba, zo by so móhła wotmołwa pósłać',
 445+ 'contactpage-fromname-required' => 'twoje mjeno',
 446+ 'contactpage-fromaddress-required' => 'twoja e-mejl',
 447+ 'contactpage-formfootnotes-required' => 'Wšě poła dyrbja wupjelnjene być.',
 448+ 'contactpage-captcha' => 'Zo by powěsć pósłać móhł, rozrisaj prošu captchu ([[Special:Captcha/help|dalše informacije]])',
 449+ 'contactpage-captcha-failed' => 'Njejsy captchowy test wobstał! ([[Special:Captcha/help|dalše informacije]])',
 450+);
 451+
 452+/** Hungarian (Magyar)
 453+ * @author Dani
 454+ */
 455+$messages['hu'] = array(
 456+ 'contact' => 'Kapcsolatfelvétel',
 457+ 'contactpage-title' => 'Kapcsolatfelvétel',
 458+ 'contactpage-pagetext' => 'Az alábbi űrlap kitöltésével küldhetsz nekünk üzenetet.',
 459+ 'contactpage-defsubject' => 'Üzenet',
 460+ 'contactpage-fromname' => 'neved *',
 461+ 'contactpage-fromaddress' => 'e-mail címed **',
 462+ 'contactpage-formfootnotes' => '* nem kötelező<br />
 463+* nem kötelező, de add meg, ha választ szeretnél',
 464+ 'contactpage-captcha' => 'Az üzenet elküldéséhez írd be a képen megjelent szót ([[Special:Captcha/help|további segítség]])',
 465+ 'contactpage-captcha-failed' => 'Captcha teszt nem sikerült! ([[Special:Captcha/help|további segítség]])',
 466+);
 467+
 468+/** Interlingua (Interlingua)
 469+ * @author McDutchie
 470+ */
 471+$messages['ia'] = array(
 472+ 'contact' => 'Pagina de contacto',
 473+ 'contactpage' => 'Pagina de contacto',
 474+ 'contactpage-desc' => '[[Special:Contact|Formulario de contacto pro visitatores]]',
 475+ 'contactpage-title' => 'Contacto',
 476+ 'contactpage-pagetext' => 'Per favor usa le formulario infra pro contactar nos.',
 477+ 'contactpage-defsubject' => 'Message de contacto',
 478+ 'contactpage-subject-and-sender' => '$1 (de $2)',
 479+ 'contactpage-fromname' => 'tu nomine *',
 480+ 'contactpage-fromaddress' => 'tu e-mail **',
 481+ 'contactpage-formfootnotes' => '* optional<br />
 482+** optional sed necessari si tu vole reciper un responsa',
 483+ 'contactpage-fromname-required' => 'tu nomine',
 484+ 'contactpage-fromaddress-required' => 'tu e-mail',
 485+ 'contactpage-formfootnotes-required' => 'Tote le campos es obligatori.',
 486+ 'contactpage-captcha' => 'Pro inviar le message, per favor resolve le captcha ([[Special:Captcha/help|plus info]])',
 487+ 'contactpage-captcha-failed' => 'Le test captcha falleva! ([[Special:Captcha/help|plus info]])',
 488+);
 489+
 490+/** Icelandic (Íslenska)
 491+ * @author Jóna Þórunn
 492+ * @author S.Örvarr.S
 493+ */
 494+$messages['is'] = array(
 495+ 'contact' => 'Hafa samband',
 496+ 'contactpage-title' => 'Hafa samband',
 497+ 'contactpage-pagetext' => 'Gjörðu svo vel og notaðu eyðublaðið fyrir neðan til að hafa samband við okkur.',
 498+ 'contactpage-subject-and-sender' => '$1 (frá $2)',
 499+ 'contactpage-fromname' => 'nafnið þitt *',
 500+ 'contactpage-fromaddress' => 'netfangið þitt **',
 501+ 'contactpage-formfootnotes' => '* valfrjálst<br/>
 502+** valfrjálst en nauðsynlegt ef þú vilt fá svar',
 503+);
 504+
 505+/** Italian (Italiano)
 506+ * @author Darth Kule
 507+ */
 508+$messages['it'] = array(
 509+ 'contact' => 'Contatti',
 510+ 'contactpage' => 'Contatti',
 511+ 'contactpage-desc' => '[[Special:Contact|Modulo di contatto per gli ospiti]]',
 512+ 'contactpage-title' => 'Contatti',
 513+ 'contactpage-pagetext' => 'Il modulo riportato di seguito consente di mettersi in contatto con noi.',
 514+ 'contactpage-defsubject' => 'Messaggio',
 515+ 'contactpage-subject-and-sender' => '$1 (da $2)',
 516+ 'contactpage-fromname' => 'nome *',
 517+ 'contactpage-fromaddress' => 'indirizzo e-mail **',
 518+ 'contactpage-formfootnotes' => '* campo non obbligatorio<br />
 519+** campo obbligatorio se si richiede una risposta',
 520+ 'contactpage-fromname-required' => 'tuo nome',
 521+ 'contactpage-fromaddress-required' => 'tua e-mail',
 522+ 'contactpage-formfootnotes-required' => 'Tutti i campi sono obbligatori.',
 523+ 'contactpage-captcha' => 'Per inviare il messaggio, risolvi il captcha ([[Special:Captcha/help|maggiori informazioni]])',
 524+ 'contactpage-captcha-failed' => 'Test captcha fallito! ([[Special:Captcha/help|maggiori informazioni]])',
 525+);
 526+
 527+/** Japanese (日本語)
 528+ * @author JtFuruhata
 529+ * @author לערי ריינהארט
 530+ */
 531+$messages['ja'] = array(
 532+ 'contact' => '連絡先',
 533+ 'contactpage' => '連絡先',
 534+ 'contactpage-desc' => '[[Special:Contact|サイト来訪者向け連絡フォーム]]',
 535+ 'contactpage-title' => '連絡フォーム',
 536+ 'contactpage-pagetext' => '以下のフォームを利用すると、私たちにメッセージを送信することができます。',
 537+ 'contactpage-defsubject' => '連絡事項',
 538+ 'contactpage-subject-and-sender' => '$1 ($2 より)',
 539+ 'contactpage-fromname' => 'あなたのお名前 *',
 540+ 'contactpage-fromaddress' => 'あなたの電子メールアドレス **',
 541+ 'contactpage-formfootnotes' => '* 任意記入<br />
 542+** 任意記入ですが、返答が必要な場合は必ずご記入ください',
 543+ 'contactpage-captcha' => 'メッセージを送信するには、以下のCAPTCHA画像認証が必要です([[Special:Captcha/help|詳細はこちら]])',
 544+ 'contactpage-captcha-failed' => 'CAPTCHA画像認証に失敗しました!([[Special:Captcha/help|詳細はこちら]])',
 545+);
 546+
 547+/** Javanese (Basa Jawa)
 548+ * @author Meursault2004
 549+ */
 550+$messages['jv'] = array(
 551+ 'contactpage-title' => 'Kontak',
 552+ 'contactpage-pagetext' => 'Mangga nganggo formulir sing kapacak ing ngisor iki menawa arep kontak kita.',
 553+ 'contactpage-subject-and-sender' => '$1 (saka $2)',
 554+ 'contactpage-fromname' => 'asma panjenengan *',
 555+ 'contactpage-fromaddress' => 'e-mail panjenengan **',
 556+ 'contactpage-formfootnotes' => '* opsional<br />
 557+** opsional nanging diperlokaké yèn panjenengan perlu wangsulan',
 558+);
 559+
 560+/** Khmer (ភាសាខ្មែរ)
 561+ * @author Chhorran
 562+ * @author Lovekhmer
 563+ * @author គីមស៊្រុន
 564+ */
 565+$messages['km'] = array(
 566+ 'contact' => 'ទំព័រ​ទំនាក់ទំនង',
 567+ 'contactpage' => 'ទំព័រ​ទំនាក់ទំនង',
 568+ 'contactpage-desc' => '[[Special:Contact|សំនុំបែបបទទាក់ទង​សំរាប់អ្នកទស្សនា]]',
 569+ 'contactpage-title' => 'ទាក់ទង',
 570+ 'contactpage-pagetext' => 'សូម​ប្រើ​ប្រាស់​សំនុំបែបបទ​ខាងក្រោម​ ដើម្បី​ទាក់ទងមក​យើងខ្ញុំ។',
 571+ 'contactpage-defsubject' => 'សារទាក់ទង',
 572+ 'contactpage-subject-and-sender' => '$1 (ផ្ញើ​ពី $2)',
 573+ 'contactpage-fromname' => 'ឈ្មោះ​របស់អ្នក *',
 574+ 'contactpage-fromaddress' => 'អ៊ីមែល​របស់អ្នក **',
 575+ 'contactpage-fromname-required' => 'ឈ្មោះរបស់អ្នក',
 576+ 'contactpage-fromaddress-required' => 'អ៊ីមែលរបស់អ្នក',
 577+);
 578+
 579+/** Korean (한국어)
 580+ * @author WonRyong
 581+ */
 582+$messages['ko'] = array(
 583+ 'contact' => '관리자 연락',
 584+);
 585+
 586+/** Ripoarisch (Ripoarisch)
 587+ * @author Purodha
 588+ */
 589+$messages['ksh'] = array(
 590+ 'contact' => 'Kontak-Sigg',
 591+ 'contactpage' => 'Kontak-Sigg',
 592+ 'contactpage-desc' => '[[Special:Contact|Kontak-Sigg]] för Besöker.',
 593+ 'contactpage-title' => 'Kontak',
 594+ 'contactpage-pagetext' => 'Övver di Sigg hee kanns De dä Wiki-Maacher jet schrieve.',
 595+ 'contactpage-defsubject' => 'Kontak-Sigg fun de {{SITENAME}}',
 596+ 'contactpage-subject-and-sender' => '$1 (fun $2)',
 597+ 'contactpage-fromname' => 'Dinge Name <sup>*</sup>',
 598+ 'contactpage-fromaddress' => 'Ding <i lang="en">e-mail</i> Address <sup>**</sup>',
 599+ 'contactpage-formfootnotes' => '<sup>*</sup> kannze fott lohße
 600+<br />
 601+<sup>**</sup> kanze fott lohße, ußer wann De en Antwoot han wells',
 602+ 'contactpage-fromname-required' => 'Dinge Name',
 603+ 'contactpage-fromaddress-required' => 'Ding <i lang="en">e-mail</i> Address',
 604+ 'contactpage-formfootnotes-required' => 'Dat moß all ußjefollt wäde.',
 605+ 'contactpage-captcha' => 'Öm Ding Nohresch ze schecke, don dat Kaptscha endrare.
 606+([[Special:Captcha/help|Mieh Enfommazjuhne]])',
 607+ 'contactpage-captcha-failed' => 'De Pröfung fum Kaptscha jingk donevve.
 608+Eß ävver kei Problem.
 609+Don et einfach norr_ens versöke.
 610+([[Special:Captcha/help|Mieh Enfommazjuhne]])',
 611+);
 612+
 613+/** Latin (Latina)
 614+ * @author SPQRobin
 615+ */
 616+$messages['la'] = array(
 617+ 'contactpage-fromname' => 'Nomen tuum *',
 618+);
 619+
 620+/** Luxembourgish (Lëtzebuergesch)
 621+ * @author Robby
 622+ */
 623+$messages['lb'] = array(
 624+ 'contact' => 'Kontaktsäit',
 625+ 'contactpage' => 'Kontaktsäit',
 626+ 'contactpage-desc' => '[[Special:Contact|Kontakt-Formulair fir Visiteuren]]',
 627+ 'contactpage-title' => 'Kontakt',
 628+ 'contactpage-pagetext' => 'Mat dësem Formulär kënnt Dir eis kontaktéieren.',
 629+ 'contactpage-defsubject' => 'Kontakt Message',
 630+ 'contactpage-subject-and-sender' => '$1 (vum $2)',
 631+ 'contactpage-fromname' => 'Äre Numm *',
 632+ 'contactpage-fromaddress' => 'Är E-mail-Adress **',
 633+ 'contactpage-formfootnotes' => '* optional<br />
 634+** optional, gëtt awer gebraucht fir iech äntwerten ze kënnen',
 635+ 'contactpage-fromname-required' => 'Äre Numm',
 636+ 'contactpage-fromaddress-required' => 'Är E-Mailadress',
 637+ 'contactpage-formfootnotes-required' => 'All Felder mussen ausgefëllt ginn.',
 638+ 'contactpage-captcha' => 'Fir e Message ze schécke, léisst w.e.g. dëse Captcha ([[Special:Captcha/help|méi Informatiounen]])',
 639+ 'contactpage-captcha-failed' => 'Captcha-Test nicht bestan! ([[Special:Captcha/help|méi Informatiounen]])',
 640+);
 641+
 642+/** Macedonian (Македонски)
 643+ * @author Misos
 644+ */
 645+$messages['mk'] = array(
 646+ 'contact' => 'Контакт',
 647+);
 648+
 649+/** Malayalam (മലയാളം)
 650+ * @author Shijualex
 651+ */
 652+$messages['ml'] = array(
 653+ 'contactpage-title' => 'വിലാസം',
 654+ 'contactpage-defsubject' => 'ബന്ധപ്പെടാനുള്ള സന്ദേശം',
 655+ 'contactpage-subject-and-sender' => '$1 ($2 ല്‍ നിന്ന്)',
 656+ 'contactpage-fromname' => 'നിങ്ങളുടെ പേര്‌ *',
 657+ 'contactpage-fromaddress' => 'നിങ്ങളുടെ ഇമെയില്‍ വിലാസം **',
 658+ 'contactpage-formfootnotes' => '* നിര്‍‌ബന്ധമില്ല<br />
 659+** നിര്‍‌ബന്ധമില്ല, പക്ഷെ താങ്കള്‍ക്ക് മറുപടി വേണമെങ്കില്‍ ഇതു ആവശ്യമാണ്‌',
 660+ 'contactpage-captcha' => 'സന്ദേശം അയക്കാന്‍, ദയവായി Captcha നിര്‍ദ്ധാരണം ചെയ്യുക. [[Special:Captcha/help|കൂടുതല്‍ വിവരം]]',
 661+ 'contactpage-captcha-failed' => 'Captcha പരീക്ഷണം പരാജയപ്പെട്ടു! ([[Special:Captcha/help|കൂടുതല്‍ വിവരം]])',
 662+);
 663+
 664+/** Marathi (मराठी)
 665+ * @author Kaustubh
 666+ * @author Mahitgar
 667+ */
 668+$messages['mr'] = array(
 669+ 'contact' => 'संपर्कपान',
 670+ 'contactpage' => 'संपर्कपान',
 671+ 'contactpage-desc' => '[[Special:Contact|भेट देणार्‍यांसाठी संपर्क अर्ज]]',
 672+ 'contactpage-title' => 'संपर्क',
 673+ 'contactpage-pagetext' => 'कृपया आमच्याशी संपर्क साधण्यासाठी खालील अर्ज भरा.',
 674+ 'contactpage-defsubject' => 'संपर्क संदेश',
 675+ 'contactpage-subject-and-sender' => '$1 ($2 कडून)',
 676+ 'contactpage-fromname' => 'तुमचे नाव *',
 677+ 'contactpage-fromaddress' => 'तुमचा विपत्रपत्ता **',
 678+ 'contactpage-formfootnotes' => '* वैकल्पिक<br />
 679+** वैकल्पिक पण उत्तर हवे असल्यास आवश्यक',
 680+ 'contactpage-captcha' => 'हा संदेश पाठविण्यासाठी, कृपया कॅपचा (captcha) सोडवा ([[Special:Captcha/help|अधिक माहिती]])',
 681+ 'contactpage-captcha-failed' => 'कॅपचा परीक्षा पूर्ण झालेली नाही! ([[Special:Captcha/help|अधिक माहिती]])',
 682+);
 683+
 684+/** Erzya (Эрзянь)
 685+ * @author Botuzhaleny-sodamo
 686+ */
 687+$messages['myv'] = array(
 688+ 'contactpage-fromname-required' => 'эсеть леметь',
 689+ 'contactpage-formfootnotes-required' => 'Весе паксятне эрявикст.',
 690+);
 691+
 692+/** Neapolitan (Nnapulitano)
 693+ * @author Cryptex
 694+ */
 695+$messages['nap'] = array(
 696+ 'contact' => 'Scrìvece',
 697+);
 698+
 699+/** Low German (Plattdüütsch)
 700+ * @author Slomox
 701+ */
 702+$messages['nds'] = array(
 703+ 'contact' => 'Kontaktsied',
 704+ 'contactpage' => 'Kontaktsied',
 705+ 'contactpage-title' => 'Kontakt',
 706+ 'contactpage-defsubject' => 'Kontaktnaricht',
 707+ 'contactpage-subject-and-sender' => '$1 (vun $2)',
 708+ 'contactpage-fromname' => 'Dien Naam *',
 709+ 'contactpage-fromaddress' => 'Dien E-Mail-Adress **',
 710+);
 711+
 712+/** Dutch (Nederlands)
 713+ * @author SPQRobin
 714+ * @author Siebrand
 715+ */
 716+$messages['nl'] = array(
 717+ 'contact' => 'Contact met ons opnemen',
 718+ 'contactpage' => 'Contactpagina',
 719+ 'contactpage-desc' => '[[Special:Contact|Contactformulier voor bezoekers]]',
 720+ 'contactpage-title' => 'Contact',
 721+ 'contactpage-pagetext' => 'Gebruik het onderstaande formulier om contact met ons op te nemen.',
 722+ 'contactpage-defsubject' => 'Contactbericht',
 723+ 'contactpage-subject-and-sender' => '$1 (van $2)',
 724+ 'contactpage-fromname' => 'uw naam *',
 725+ 'contactpage-fromaddress' => 'uw e-mailadres **',
 726+ 'contactpage-formfootnotes' => '* optioneel<br />
 727+** optioneel, maar noodzakelijk als antwoord gewenst is',
 728+ 'contactpage-fromname-required' => 'uw naam',
 729+ 'contactpage-fromaddress-required' => 'uw e-mailadres',
 730+ 'contactpage-formfootnotes-required' => 'Alle velden zijn verplicht.',
 731+ 'contactpage-captcha' => 'Om het bericht te versturen, moet je eerst de captcha oplossen ([[Special:Captcha/help|meer informatie]])',
 732+ 'contactpage-captcha-failed' => 'Captcha-test is mislukt! ([[Special:Captcha/help|meer informatie]])',
 733+);
 734+
 735+/** Norwegian (bokmål)‬ (‪Norsk (bokmål)‬)
 736+ * @author Jon Harald Søby
 737+ */
 738+$messages['no'] = array(
 739+ 'contact' => 'Kontaktside',
 740+ 'contactpage' => 'Kontaktside',
 741+ 'contactpage-desc' => '[[Special:Contact|Kontaktskjema for besøkende]]',
 742+ 'contactpage-title' => 'Kontakt',
 743+ 'contactpage-pagetext' => 'Bruk skjemaet nedenunder for å kontakte oss.',
 744+ 'contactpage-defsubject' => 'Beskjed',
 745+ 'contactpage-subject-and-sender' => '$1 (fra $2)',
 746+ 'contactpage-fromname' => 'ditt navn *',
 747+ 'contactpage-fromaddress' => 'din e-post **',
 748+ 'contactpage-formfootnotes' => '* valgfri<br />
 749+** valgfri, men er nødvendig dersom du vil ha svar',
 750+ 'contactpage-fromname-required' => 'ditt navn',
 751+ 'contactpage-fromaddress-required' => 'din e-postadresse',
 752+ 'contactpage-formfootnotes-required' => 'Alle felt er obligatoriske.',
 753+ 'contactpage-captcha' => 'Løs captcha-oppgaven for å sende beskjeden ([[Special:Captcha/help|mer informasjon]])',
 754+ 'contactpage-captcha-failed' => 'Captcha-test mislyktes! ([[Special:Captcha/help|mer informasjon]])',
 755+);
 756+
 757+/** Northern Sotho (Sesotho sa Leboa)
 758+ * @author Mohau
 759+ */
 760+$messages['nso'] = array(
 761+ 'contactpage-fromname' => 'liena la gago*',
 762+ 'contactpage-fromaddress' => 'email ya gago **',
 763+);
 764+
 765+/** Occitan (Occitan)
 766+ * @author Cedric31
 767+ */
 768+$messages['oc'] = array(
 769+ 'contact' => 'Per nos contactar',
 770+ 'contactpage' => 'Contacte',
 771+ 'contactpage-desc' => '[[Special:Contact|Formulari de contact pels visitors]]',
 772+ 'contactpage-title' => 'Contacte',
 773+ 'contactpage-pagetext' => 'Utilizatz lo formulari çaijós per nos contactar.',
 774+ 'contactpage-defsubject' => 'Messatge',
 775+ 'contactpage-subject-and-sender' => '$1 (de $2)',
 776+ 'contactpage-fromname' => 'Vòstre nom*',
 777+ 'contactpage-fromaddress' => 'Vòstra adreça electronica**',
 778+ 'contactpage-formfootnotes' => '* opcional<br /> ** opcional mas requesit se desiratz una responsa',
 779+ 'contactpage-fromname-required' => 'vòstre nom',
 780+ 'contactpage-fromaddress-required' => 'vòstra adreça mail',
 781+ 'contactpage-formfootnotes-required' => 'Totes los camps son requesits.',
 782+ 'contactpage-captcha' => 'Per mandar lo messatge, mercés de resoudre lo captcha ([[Special:Captcha/help|ajuda]])',
 783+ 'contactpage-captcha-failed' => 'Avètz pas desencodat lo captcha ! ([[Special:Captcha/help|ajuda]])',
 784+);
 785+
 786+/** Polish (Polski)
 787+ * @author Derbeth
 788+ * @author Maikking
 789+ * @author Sp5uhe
 790+ * @author Wpedzich
 791+ */
 792+$messages['pl'] = array(
 793+ 'contact' => 'StronaKontaktowa',
 794+ 'contactpage' => 'StronaKontaktowa',
 795+ 'contactpage-desc' => '[[Special:Contact|Formularz kontaktowy dla czytelników serwisu]]',
 796+ 'contactpage-title' => 'Kontakt',
 797+ 'contactpage-pagetext' => 'Prosimy użyć poniższego formularza by skontaktować się z nami',
 798+ 'contactpage-defsubject' => 'Wiadomość',
 799+ 'contactpage-subject-and-sender' => '$1 (z $2)',
 800+ 'contactpage-fromname' => 'twoje imię i nazwisko *',
 801+ 'contactpage-fromaddress' => 'twój e-mail **',
 802+ 'contactpage-formfootnotes' => '* opcjonalne<br /> ** opcjonalne, ale wymagane, jeśli chcesz otrzymać odpowiedź',
 803+ 'contactpage-fromname-required' => 'Twoje imię',
 804+ 'contactpage-fromaddress-required' => 'Twój adres e-mail',
 805+ 'contactpage-formfootnotes-required' => 'Wypełnienie wszystkich pól jest obowiązkowe.',
 806+ 'contactpage-captcha' => 'Aby wysłać wiadomosć wypełnij podane tu zadanie ([[Special:Captcha/help|wyjaśnienie]])',
 807+ 'contactpage-captcha-failed' => 'Aby wysłać tę wiadomość, prosimy rozwiązać to zadanie ([[Special:Captcha/help|objaśnienie]])',
 808+);
 809+
 810+/** Piedmontese (Piemontèis)
 811+ * @author Bèrto 'd Sèra
 812+ */
 813+$messages['pms'] = array(
 814+ 'contact' => 'Pàgina ëd contat',
 815+ 'contactpage' => 'Pàgina ëd contat',
 816+ 'contactpage-title' => 'Contat',
 817+ 'contactpage-pagetext' => "Për piasì, për contatene ch'a dòvra ël mòdulo ambelessì sota.",
 818+ 'contactpage-defsubject' => 'Messagi',
 819+ 'contactpage-subject-and-sender' => '$1 (da $2)',
 820+ 'contactpage-fromname' => 'sò nòm *',
 821+ 'contactpage-fromaddress' => 'soa adrëssa ëd pòsta eletrònica **',
 822+ 'contactpage-formfootnotes' => "* opsional<br /> ** opsional, ma për podej avej d'arspòsta a venta butelo",
 823+ 'contactpage-captcha' => "Për mandé via ël messagi, për piasì ch'arzòlva ël test antirumenta ([[Special:Captcha/help|pì d'anformassion]])",
 824+ 'contactpage-captcha-failed' => "Test antirumenta falì! ([[Special:Captcha/help|pì d'anformassion]])",
 825+);
 826+
 827+/** Pashto (پښتو)
 828+ * @author Ahmed-Najib-Biabani-Ibrahimkhel
 829+ */
 830+$messages['ps'] = array(
 831+ 'contactpage-desc' => '[[Special:Contact|د کتونکو لپاره د اړيکو فورمه]]',
 832+ 'contactpage-title' => 'اړيکه ټينګول',
 833+ 'contactpage-pagetext' => 'زمونږ سره د اړيکو ټينګولو لپاره، لاندينۍ فورمه وکاروۍ.',
 834+ 'contactpage-subject-and-sender' => '$1 (د $2 لخوا )',
 835+ 'contactpage-fromname' => 'ستاسو نوم *',
 836+ 'contactpage-fromaddress' => 'ستاسو برېښليک **',
 837+ 'contactpage-formfootnotes' => '* ستاسو د خوښې کړنه<br />
 838+** دا ستاسو د خوښې کړنه ده خو که چېرته تاسو يو ځواب غواړی نو بيا پکار ده چې ډک شي',
 839+);
 840+
 841+/** Portuguese (Português)
 842+ * @author Malafaya
 843+ */
 844+$messages['pt'] = array(
 845+ 'contact' => 'Página de Contacto',
 846+ 'contactpage' => 'Página de Contacto',
 847+ 'contactpage-desc' => '[[Special:Contact|Formulário de contacto para visitantes]]',
 848+ 'contactpage-title' => 'Contacto',
 849+ 'contactpage-pagetext' => 'Por favor, use o formulário abaixo para nos contactar.',
 850+ 'contactpage-defsubject' => 'Mensagem de Contacto',
 851+ 'contactpage-subject-and-sender' => '$1 (de $2)',
 852+ 'contactpage-fromname' => 'o seu nome *',
 853+ 'contactpage-fromaddress' => 'o seu email **',
 854+ 'contactpage-formfootnotes' => '* opcional<br />
 855+** opcional mas necessário se quiser uma resposta',
 856+ 'contactpage-captcha' => "Para enviar a mensagem, por favor, resolva o ''captcha'' ([[Special:Captcha/help|mais informação]])",
 857+ 'contactpage-captcha-failed' => 'Teste captcha falhou! ([[Special:Captcha/help|mais informação]])',
 858+);
 859+
 860+/** Brazilian Portuguese (Português do Brasil)
 861+ * @author Carla404
 862+ */
 863+$messages['pt-br'] = array(
 864+ 'contact' => 'Página de contato',
 865+);
 866+
 867+/** Romani (Romani)
 868+ * @author Desiphral
 869+ */
 870+$messages['rmy'] = array(
 871+ 'contact' => 'Kontakto',
 872+);
 873+
 874+/** Romanian (Română)
 875+ * @author KlaudiuMihaila
 876+ * @author Mihai
 877+ */
 878+$messages['ro'] = array(
 879+ 'contact' => 'Pagină de contact',
 880+ 'contactpage' => 'Pagină de contact',
 881+ 'contactpage-title' => 'Contact',
 882+ 'contactpage-pagetext' => 'Foloseşte formularul de mai jos pentru a ne contacta.',
 883+ 'contactpage-defsubject' => 'Mesaj de contact',
 884+ 'contactpage-subject-and-sender' => '$1 (de la $2)',
 885+ 'contactpage-fromname' => 'numele dumneavoastră *',
 886+ 'contactpage-fromaddress' => 'adresa dumneavoastră de e-mail **',
 887+ 'contactpage-formfootnotes' => '* opţional<br />
 888+** opţională, dar necesară dacă doriţi un răspuns',
 889+ 'contactpage-fromname-required' => 'numele dumneavoastră',
 890+ 'contactpage-fromaddress-required' => 'adresa dumneavoastră de e-mail',
 891+ 'contactpage-formfootnotes-required' => 'Toate câmpurile sunt obligatorii.',
 892+ 'contactpage-captcha' => 'Pentru a trimite mesajul, rezolvă captcha ([[Special:Captcha/help|mai multe detalii]])',
 893+);
 894+
 895+/** Russian (Русский)
 896+ * @author Александр Сигачёв
 897+ */
 898+$messages['ru'] = array(
 899+ 'contact' => 'Страница контакта',
 900+ 'contactpage' => 'Страница контакта',
 901+ 'contactpage-desc' => '[[Special:Contact|Форма для посетителей]]',
 902+ 'contactpage-title' => 'Контакт',
 903+ 'contactpage-pagetext' => 'Пожалуйста, используйте данную форму, чтобы связаться с нами.',
 904+ 'contactpage-defsubject' => 'Сообщение',
 905+ 'contactpage-subject-and-sender' => '$1 (от $2)',
 906+ 'contactpage-fromname' => 'ваше имя *',
 907+ 'contactpage-fromaddress' => 'ваш эл. адрес **',
 908+ 'contactpage-formfootnotes' => '* необязательно<br />
 909+** необязательно, но требуется для получения ответа',
 910+ 'contactpage-captcha' => 'Чтобы отправить сообщение, пожалуйста, пройдите проверку CAPTCHA ([[Special:Captcha/help|что это?]])',
 911+ 'contactpage-captcha-failed' => 'Проверка CAPTCHA не пройдена! ([[Special:Captcha/help|что это?]])',
 912+);
 913+
 914+/** Slovak (Slovenčina)
 915+ * @author Helix84
 916+ */
 917+$messages['sk'] = array(
 918+ 'contact' => 'Kontaktná stránka',
 919+ 'contactpage' => 'Kontaktná stránka',
 920+ 'contactpage-desc' => '[[Special:Contact|Kontaktný formulár pre návštevníkov]]',
 921+ 'contactpage-title' => 'Kontakt',
 922+ 'contactpage-pagetext' => 'Prosím, použite tento formulár, aby ste nás kontaktovali.',
 923+ 'contactpage-defsubject' => 'Správa',
 924+ 'contactpage-subject-and-sender' => '$1 (od $2)',
 925+ 'contactpage-fromname' => 'vaše meno *',
 926+ 'contactpage-fromaddress' => 'váš email **',
 927+ 'contactpage-formfootnotes' => '
 928+* voliteľné<br />
 929+** voliteľné, ale potrebné ak chcete odpoveď',
 930+ 'contactpage-fromname-required' => 'vaše meno',
 931+ 'contactpage-fromaddress-required' => 'váš email',
 932+ 'contactpage-formfootnotes-required' => 'Je povinné vyplniť všetky polia.',
 933+ 'contactpage-captcha' => 'Aby ste mohli poslať správu, vyriešte prosím captcha ([[Special:Captcha/help|podrobnosti]])',
 934+ 'contactpage-captcha-failed' => 'Test captcha bol neúspešný! ([[Special:Captcha/help|podrobnosti]])',
 935+);
 936+
 937+/** Albanian (Shqip)
 938+ * @author Dori
 939+ */
 940+$messages['sq'] = array(
 941+ 'contact' => 'Kumtime',
 942+);
 943+
 944+/** Seeltersk (Seeltersk)
 945+ * @author Pyt
 946+ */
 947+$messages['stq'] = array(
 948+ 'contact' => 'Kontaktsiede',
 949+ 'contactpage' => 'Kontaktsiede',
 950+ 'contactpage-title' => 'Kontakt',
 951+ 'contactpage-pagetext' => 'Mäd dit Formular koast du uus Ättergjuchte toukuume läite.',
 952+ 'contactpage-defsubject' => 'Kontakt-Ättergjucht',
 953+ 'contactpage-subject-and-sender' => '$1 (fon $2)',
 954+ 'contactpage-fromname' => 'Din Noome *',
 955+ 'contactpage-fromaddress' => 'Dien E-Mail Adresse **',
 956+ 'contactpage-formfootnotes' => '* optional<br />
 957+** optional, is oawers nöödich, uum die oantwoudje tou konnen',
 958+ 'contactpage-captcha' => 'Uum ju Ättergjucht seende tou konnen, löös dät Captcha ([[Special:Captcha/help|wiedere Informatione]])',
 959+ 'contactpage-captcha-failed' => 'Captcha-Test nit besteen! ([[Special:Captcha/help|wiedere Informatione]])',
 960+);
 961+
 962+/** Sundanese (Basa Sunda)
 963+ * @author Irwangatot
 964+ * @author Kandar
 965+ */
 966+$messages['su'] = array(
 967+ 'contactpage-pagetext' => 'Mangga eusian formulir di handap pikeun ngontak ka kami.',
 968+ 'contactpage-subject-and-sender' => '$1 (ti $2)',
 969+ 'contactpage-fromname' => 'ngaran anjeun *',
 970+ 'contactpage-fromaddress' => 'surélék anjeun **',
 971+);
 972+
 973+/** Swedish (Svenska)
 974+ * @author Boivie
 975+ * @author Lejonel
 976+ * @author M.M.S.
 977+ * @author לערי ריינהארט
 978+ */
 979+$messages['sv'] = array(
 980+ 'contact' => 'Kontaktsida',
 981+ 'contactpage' => 'Kontaktsida',
 982+ 'contactpage-desc' => '[[Special:Contact|Kontaktformulär för besökare]]',
 983+ 'contactpage-title' => 'Kontakt',
 984+ 'contactpage-pagetext' => 'Använd formuläret härunder för att kontakta oss.',
 985+ 'contactpage-defsubject' => 'Kontaktmeddelande',
 986+ 'contactpage-subject-and-sender' => '$1 (från $2)',
 987+ 'contactpage-fromname' => 'Ditt namn *',
 988+ 'contactpage-fromaddress' => 'Din e-postadress **',
 989+ 'contactpage-formfootnotes' => '* kan utelämnas<br />
 990+** kan utelämnas, men behövs om du vill få svar',
 991+ 'contactpage-fromname-required' => 'ditt namn',
 992+ 'contactpage-fromaddress-required' => 'din e-postadress',
 993+ 'contactpage-formfootnotes-required' => 'Alla fält är obligatoriska.',
 994+ 'contactpage-captcha' => 'För att få skicka meddelandet måste du först lösa följande captcha-test ([[Special:Captcha/help|mer information]])',
 995+ 'contactpage-captcha-failed' => 'Captcha-testet misslyckades! ([[Special:Captcha/help|mer information]])',
 996+);
 997+
 998+/** Telugu (తెలుగు)
 999+ * @author Veeven
 1000+ */
 1001+$messages['te'] = array(
 1002+ 'contact' => 'సంప్రదింపుపేజీ',
 1003+ 'contactpage' => 'సంప్రదింపుపేజీ',
 1004+ 'contactpage-desc' => '[[Special:Contact|సందర్శకుల సంప్రదింపు ఫారం]]',
 1005+ 'contactpage-title' => 'సంప్రదించండి',
 1006+ 'contactpage-pagetext' => 'మమ్మల్ని సంప్రదించడానికి క్రిందనిచ్చిన ఫారం ఉపయోగించండి.',
 1007+ 'contactpage-defsubject' => 'సంప్రదింపు సందేశం',
 1008+ 'contactpage-subject-and-sender' => '$1 ($2 నుండి)',
 1009+ 'contactpage-fromname' => 'మీ పేరు *',
 1010+ 'contactpage-fromaddress' => 'మీ ఈ-మెయిల్ **',
 1011+ 'contactpage-formfootnotes' => '* ఐచ్చికం<br />
 1012+** ఐచ్చికం కానీ మీకు జవాబు కావాలంటే మాత్రం తప్పనిసరి',
 1013+ 'contactpage-fromname-required' => 'మీ పేరు',
 1014+ 'contactpage-fromaddress-required' => 'మీ ఈ-మెయిల్',
 1015+ 'contactpage-formfootnotes-required' => 'అన్ని ఖాళీలు తప్పనిసరి.',
 1016+ 'contactpage-captcha' => 'సందేశాన్ని పంపిచడానికి, ఆమకవేపని పరిష్కరించండి ([[Special:Captcha/help|మరింత సమాచారం]])',
 1017+ 'contactpage-captcha-failed' => 'అమకవేప పరీక్ష విఫలమైంది! ([[Special:Captcha/help|మరింత సమాచారం]])',
 1018+);
 1019+
 1020+/** Tajik (Cyrillic) (Тоҷикӣ (Cyrillic))
 1021+ * @author Ibrahim
 1022+ */
 1023+$messages['tg-cyrl'] = array(
 1024+ 'contact' => 'СаҳифаиТамос',
 1025+ 'contactpage' => 'СаҳифаиТамос',
 1026+ 'contactpage-title' => 'Алоқа',
 1027+ 'contactpage-pagetext' => 'Лутфан барои дар алоқа будан бо мо аз форми зер истифода кунед.',
 1028+ 'contactpage-defsubject' => 'Паёми Алоқа',
 1029+ 'contactpage-subject-and-sender' => '$1 (аз $2)',
 1030+ 'contactpage-fromname' => 'номи шумо *',
 1031+ 'contactpage-fromaddress' => 'почтаи электронии шумо **',
 1032+);
 1033+
 1034+/** Turkish (Türkçe)
 1035+ * @author Karduelis
 1036+ * @author Mach
 1037+ */
 1038+$messages['tr'] = array(
 1039+ 'contactpage-fromname' => 'isminiz *',
 1040+ 'contactpage-fromaddress' => 'e-postanız *',
 1041+ 'contactpage-fromname-required' => 'adınız',
 1042+ 'contactpage-fromaddress-required' => 'e-mail adresiniz',
 1043+);
 1044+
 1045+/** Vèneto (Vèneto)
 1046+ * @author Candalua
 1047+ */
 1048+$messages['vec'] = array(
 1049+ 'contactpage-desc' => '[[Special:Contact|Modulo de contatto par i visitadori]]',
 1050+);
 1051+
 1052+/** Vietnamese (Tiếng Việt)
 1053+ * @author Minh Nguyen
 1054+ * @author Vinhtantran
 1055+ * @author לערי ריינהארט
 1056+ */
 1057+$messages['vi'] = array(
 1058+ 'contact' => 'Liên lạc',
 1059+ 'contactpage' => 'Liên hệ',
 1060+ 'contactpage-desc' => '[[Special:Contact|Mẫu liên hệ cho khách ghé thăm]]',
 1061+ 'contactpage-title' => 'Liên lạc',
 1062+ 'contactpage-pagetext' => 'Xin hãy sử dụng biểu mẫu ở dưới để liên lạc với chúng tôi.',
 1063+ 'contactpage-defsubject' => 'Tin nhắn liên hệ',
 1064+ 'contactpage-subject-and-sender' => '$1 (gửi từ $2)',
 1065+ 'contactpage-fromname' => 'tên bạn *',
 1066+ 'contactpage-fromaddress' => 'địa chỉ thư điện tử của bạn **',
 1067+ 'contactpage-formfootnotes' => '* tùy chọn<br />
 1068+** tùy chọn nhưng cần thiết nêys bạn muốn có câu trả lời',
 1069+ 'contactpage-captcha' => 'Để gửi tin nhắn, xin hãy ghi lại captcha ([[Special:Captcha/help|thông tin thêm]])',
 1070+ 'contactpage-captcha-failed' => 'Kiểm tra captcha thất bại! ([[Special:Captcha/help|thông tin thêm]])',
 1071+);
 1072+
 1073+/** Volapük (Volapük)
 1074+ * @author Malafaya
 1075+ */
 1076+$messages['vo'] = array(
 1077+ 'contactpage-fromname' => 'nem olik *',
 1078+);
 1079+
 1080+/** Walloon (Walon)
 1081+ * @author Srtxg
 1082+ */
 1083+$messages['wa'] = array(
 1084+ 'contact' => 'Contak',
 1085+);
 1086+
 1087+/** Yue (粵語)
 1088+ * @author Shinjiman
 1089+ */
 1090+$messages['yue'] = array(
 1091+ 'contact' => '聯絡頁',
 1092+ 'contactpage' => '聯絡頁',
 1093+ 'contactpage-title' => '聯絡',
 1094+ 'contactpage-pagetext' => '請用下面嘅表格去聯絡我哋。',
 1095+ 'contactpage-defsubject' => '聯絡訊息',
 1096+ 'contactpage-subject-and-sender' => '$1 (自$2)',
 1097+ 'contactpage-fromname' => '你嘅名 *',
 1098+ 'contactpage-fromaddress' => '你嘅電郵 **',
 1099+ 'contactpage-formfootnotes' => '* 可選<br />
 1100+** 可選,如果你想答嘅話',
 1101+ 'contactpage-captcha' => '要傳呢個訊息,請先解決 captcha ([[Special:Captcha/help|更多資料]])',
 1102+ 'contactpage-captcha-failed' => 'Captcha 測試失敗! ([[Special:Captcha/help|更多資訊]])',
 1103+);
 1104+
 1105+/** Simplified Chinese (‪中文(简体)‬)
 1106+ * @author Shinjiman
 1107+ */
 1108+$messages['zh-hans'] = array(
 1109+ 'contact' => '联络页面',
 1110+ 'contactpage' => '联络页面',
 1111+ 'contactpage-title' => '联络',
 1112+ 'contactpage-pagetext' => '请用以下的表格去联络我们。',
 1113+ 'contactpage-defsubject' => '联络信息',
 1114+ 'contactpage-subject-and-sender' => '$1 (自$2)',
 1115+ 'contactpage-fromname' => '您的名字 *',
 1116+ 'contactpage-fromaddress' => '您的电邮 **',
 1117+ 'contactpage-formfootnotes' => '* 可选<br />
 1118+** 可选,如果您想回答的话',
 1119+ 'contactpage-captcha' => '要传送这个信息,请先解决这个 captcha ([[Special:Captcha/help|更多信息]])',
 1120+ 'contactpage-captcha-failed' => 'Captcha 测试失败! ([[Special:Captcha/help|更多信息]])',
 1121+);
 1122+
 1123+/** Traditional Chinese (‪中文(繁體)‬)
 1124+ * @author Shinjiman
 1125+ */
 1126+$messages['zh-hant'] = array(
 1127+ 'contact' => '聯絡頁面',
 1128+ 'contactpage' => '聯絡頁面',
 1129+ 'contactpage-title' => '聯絡',
 1130+ 'contactpage-pagetext' => '請用以下的表格去聯絡我們。',
 1131+ 'contactpage-defsubject' => '聯絡訊息',
 1132+ 'contactpage-subject-and-sender' => '$1 (自$2)',
 1133+ 'contactpage-fromname' => '您的名字 *',
 1134+ 'contactpage-fromaddress' => '您的電郵 **',
 1135+ 'contactpage-formfootnotes' => '* 可選<br />
 1136+** 可選,如果您想回答的話',
 1137+ 'contactpage-captcha' => '要傳送這個訊息,請先解決這個 captcha ([[Special:Captcha/help|更多資訊]])',
 1138+ 'contactpage-captcha-failed' => 'Captcha 測試失敗! ([[Special:Captcha/help|更多資訊]])',
 1139+);
 1140+
Property changes on: branches/wmf-deployment/extensions/ContactPageFundraiser/ContactPage.i18n.php
___________________________________________________________________
Name: svn:eol-style
11141 + native
Name: eol-style:native
21142 + properties
Index: branches/wmf-deployment/extensions/ContactPageFundraiser/README
@@ -0,0 +1,53 @@
 2+--------------------------------------------------------------------------
 3+README for the ContactPage extension
 4+Copyright © 2006 Daniel Kinzler
 5+Licenses: GNU General Public Licence (GPL)
 6+ GNU Free Documentation License (GFDL)
 7+--------------------------------------------------------------------------
 8+
 9+The ContactPage extension implements a contact form for visitors. It
 10+creates a special page Special:Contact, which is similar to
 11+Special:Emailuser, but it has a fixed recipient, and can be used
 12+anonymously.
 13+
 14+<http://mediawiki.org/wiki/Extension:ContactPage>
 15+
 16+The ContactPage extension was originally written by Daniel Kinzler in 2007
 17+and is released under the GNU General Public Licence (GPL). It is based on
 18+the code in SpecialEmailuser.php in the MediaWiki core.
 19+The internationalization files contain contributions by several people;
 20+they are mentioned in each file individually.
 21+
 22+
 23+== Installing ==
 24+
 25+Copy the ContactPage directory into the extensions folder of your
 26+MediaWiki installation. Then add the following lines to your
 27+LocalSettings.php file (near the end):
 28+
 29+ require_once( "$IP/extensions/ContactPage/ContactPage.php" );
 30+
 31+ $wgContactUser = 'WikiAdmin';
 32+ $wgContactSender = 'apache@' . $wgServerName;
 33+ $wgContactSenderName = 'Contact Form on ' . $wgSitename;
 34+
 35+
 36+== Configuration ==
 37+
 38+$wgContactUser must be the name of a registered wiki user, who has
 39+supplied an email address, has user-to-user email enabled, and has
 40+confirmed his/her email address if that is required on this wiki
 41+(see $wgEmailAuthentication).
 42+
 43+$wgContactSender must be the email address used as the sender of the
 44+contact email. Depending on the setup of your web host, this may have to
 45+be an existing mail account.
 46+
 47+$wgContactSenderName is the name associated with the contact sender.
 48+This will be shown in the recipient's email program.
 49+
 50+If you are using the ConfirmEdit extension (captchas), you can require
 51+a captcha test for sending contact messages by using the following:
 52+
 53+ $wgCaptchaTriggers['contactpage'] = true;
 54+
Property changes on: branches/wmf-deployment/extensions/ContactPageFundraiser/README
___________________________________________________________________
Name: svn:eol-style
155 + native
Name: eol-style:native
256 + properties
Index: branches/wmf-deployment/extensions/ContactPageFundraiser/ContactPage.php
@@ -0,0 +1,39 @@
 2+<?php
 3+/**
 4+ * Setup for ContactPage extension, a special page that implements a contact form
 5+ * for use by anonymous visitors.
 6+ *
 7+ * @package MediaWiki
 8+ * @subpackage Extensions
 9+ * @author Daniel Kinzler, brightbyte.de
 10+ * @copyright © 2007 Daniel Kinzler
 11+ * @licence GNU General Public Licence 2.0 or later
 12+ */
 13+
 14+if( !defined( 'MEDIAWIKI' ) ) {
 15+ echo( "This file is an extension to the MediaWiki software and cannot be used standalone.\n" );
 16+ die( 1 );
 17+}
 18+
 19+$wgExtensionCredits['specialpage'][] = array(
 20+ 'name' => 'ContactPage',
 21+ 'svn-date' => '$LastChangedDate$',
 22+ 'svn-revision' => '$LastChangedRevision$',
 23+ 'author' => 'Daniel Kinzler',
 24+ 'url' => 'http://www.mediawiki.org/wiki/Extension:ContactPage',
 25+ 'description' => 'Contact form for visitors',
 26+ 'descriptionmsg' => 'contactpage-desc',
 27+);
 28+
 29+$dir = dirname(__FILE__) . '/';
 30+$wgExtensionMessagesFiles['ContactPage'] = $dir . 'ContactPage.i18n.php';
 31+$wgExtensionAliasesFiles['ContactPage'] = $dir . 'ContactPage.alias.php';
 32+
 33+$wgAutoloadClasses['SpecialContact'] = $dir . 'SpecialContact.php';
 34+$wgSpecialPages['Contact'] = 'SpecialContact';
 35+
 36+$wgContactUser = 'Stories';
 37+$wgContactSender = 'stories@wikimedia.org';
 38+$wgContactSenderName = 'Contact Form on ' . $wgSitename;
 39+
 40+$wgContactRequireAll = false;
Property changes on: branches/wmf-deployment/extensions/ContactPageFundraiser/ContactPage.php
___________________________________________________________________
Name: svn:keywords
141 + LastChangedDate LastChangedRevision
Name: svn:eol-style
242 + native
Property changes on: branches/wmf-deployment/extensions/ContactPageFundraiser
___________________________________________________________________
Name: eol-style:native
343 + properties

Follow-up revisions

RevisionCommit summaryAuthorDate
r56209Equiv of r53269; copy ContactPageFundraiser from wmf-deployment branch to tru...brion21:06, 11 September 2009

Status & tagging log