r56209 MediaWiki - Code Review archive

Repository:MediaWiki
Revision:r56208‎ | r56209 | r56210 >
Date:21:06, 11 September 2009
Author:brion
Status:ok (Comments)
Tags:todo 
Comment:
Equiv of r53269; copy ContactPageFundraiser from wmf-deployment branch to trunk extensions
Modified paths:
  • /trunk/extensions/ContactPageFundraiser (added) (history)

Diff [purge]

Index: trunk/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: trunk/extensions/ContactPageFundraiser/SpecialContact.php
___________________________________________________________________
Name: svn:eol-style
1382 + native
Name: eol-style:native
2383 + properties
Index: trunk/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: trunk/extensions/ContactPageFundraiser/install.settings
___________________________________________________________________
Name: svn:eol-style
17 + native
Name: eol-style:native
28 + properties
Index: trunk/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: trunk/extensions/ContactPageFundraiser/ContactPage.alias.php
___________________________________________________________________
Name: svn:eol-style
1156 + native
Index: trunk/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: trunk/extensions/ContactPageFundraiser/ContactPage.i18n.php
___________________________________________________________________
Name: svn:eol-style
11141 + native
Name: eol-style:native
21142 + properties
Index: trunk/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: trunk/extensions/ContactPageFundraiser/README
___________________________________________________________________
Name: svn:eol-style
155 + native
Name: eol-style:native
256 + properties
Index: trunk/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: trunk/extensions/ContactPageFundraiser/ContactPage.php
___________________________________________________________________
Name: svn:keywords
141 + LastChangedDate LastChangedRevision
Name: svn:eol-style
242 + native
Property changes on: trunk/extensions/ContactPageFundraiser
___________________________________________________________________
Name: svn:mergeinfo
343 + /branches/REL1_15/phase3/extensions/ContactPageFundraiser:51646
/trunk/extensions/ContactPageFundraiser:52859,52871-52872,52876,53191,53205-53206,53272,54715,54758,54762,54778,54781,54786,54810-54811,55178
/trunk/phase3/ContactPageFundraiser:52859,53272
/trunk/phase3/extensions/ContactPageFundraiser:52290,52402,52404,52718,52737,52759,52776,52791,52800,52808,52812-52813,52815-52819,52822,52846,52850,52852-52853,52855-52857,52859,52924,52986,53128-53129,53190,53197,53199,53203-53204,53210-53211,53247,53249,53252,53267,53270,53293,53305,53344,53369,53427,53502-53504,53506,53777,54384,54494,54592,54599-54602,54604,54613,54764,54793,54806,55178,55626
Name: eol-style:native
444 + properties

Follow-up revisions

RevisionCommit summaryAuthorDate
r56374Merge post-branch trunk updates replacing old live hacks:...brion17:25, 15 September 2009

Past revisions this follows-up on

RevisionCommit summaryAuthorDate
r53269Copy ContactPageFundraiser to wmf-deployment branch from svn+ssh://svn.wikime...brion21:21, 14 July 2009

Comments

#Comment by Raymond (talk | contribs)   09:39, 12 September 2009

Adding todo tag because this extension is a massive code duplication from trunk/extensions/ContactPage/

#Comment by Tim Starling (talk | contribs)   05:09, 1 December 2009

Yes, it needs to be fixed at some point. It seems to me that it could easily be implemented by subclassing instead of duplicating.

#Comment by MZMcBride (talk | contribs)   11:13, 20 August 2010

I'm not sure why either is needed. It seems like a much simpler option to delete this fork and enable the generic ContactPage extension on wikimediafoundation.org.

This duplication has predictably caused issues, e.g., http://wikimediafoundation.org/wiki/Special:Contact has duplicated colons for the "Subject" and "Message" inputs due to outdated extension code mixing with updated message files.

#Comment by Tim Starling (talk | contribs)   07:24, 11 December 2009

I guess it's going to be my job, unless the cutout can be taught to type.

#Comment by Tim Starling (talk | contribs)   07:47, 11 December 2009

My mistake, Tomasz started this one.

#Comment by 😂 (talk | contribs)   02:26, 20 January 2011

Hiii :D Is this being used on WMF sites anymore? (genuinely curious, since fundraiser extensions get rewritten every year) If not, we should delete it and resolve the duplication.

#Comment by Catrope (talk | contribs)   02:54, 20 January 2011

I asked Kaldari about it ten minutes ago (for unrelated reasons) and he didn't know. Will talk to Tomasz in the morning.

#Comment by Catrope (talk | contribs)   01:24, 21 January 2011

I talked to Tomasz and he says it's still used.

#Comment by MZMcBride (talk | contribs)   01:31, 21 January 2011

Uhh, of course it's being used. I don't understand why there'd be any confusion about this. It's clear from the configuration files at noc.wikimedia.org that it's currently enabled and being used:

if ( $wgDBname == 'foundationwiki' ) {	
	include( "$IP/extensions/ContactPageFundraiser/ContactPage.php" );
	$wgContactUser = 'Storiescontact';

Source: http://noc.wikimedia.org/conf/CommonSettings.php.txt

The issue here, as noted in my comment from August 2010 above (#c8561), is that this extension was (poorly) forked for seemingly no good reason and this has subsequently (and predictably) created issues that need to be resolved. In my view, this extension should be uninstalled and deleted in favor of the standard ContactPage extension (which now has more features than this fundraising variant). But all of that is rather unrelated to whether this is currently used (i.e., "enabled on a Wikimedia wiki").

#Comment by Tim Starling (talk | contribs)   01:36, 21 January 2011

I think Chad and Roan meant "used" as in prominently linked to, not "used" as in enabled. Obviously nobody is going to contact the fundraising team by manually typing "Special:Contact" into the address bar. So if it's not still being linked to in any of the fundraising pages, it can be disabled and deleted without affecting anyone.

#Comment by Catrope (talk | contribs)   01:36, 21 January 2011

Tomasz showed me a form somewhere on foundationwiki that submits to Special:Contact. I think it was the Thank You page.

#Comment by MZMcBride (talk | contribs)   02:07, 21 January 2011

Thank you for clarifying.

It can still be disabled and deleted if it is being used. It just needs to have the other ContactPage extension enabled in its place (which is already enabled/being used on other Wikimedia wikis). Having both extensions installed/enabled/being used makes no sense and is causing bugs. If people were visiting http://wikimediafoundation.org/wiki/Special:Contact directly, they'd probably notice the silliness such as "Your name: *:".

And if the intention is to not use this Special page directly, it really ought not load and pretend to be a means to contact the Wikimedia Foundation. While it's unlikely a user would type in "Special:Contact" into the URL bar, it's currently unclear how many people could be linking to that page from the outside world or how many times the form is directly used (with the e-mails filling up who knows what queue). And not to compound or conflate issues, but wikimediafoundation.org absolutely should have a web UI form for user feedback about the Wikimedia Foundation.

The whole situation seems to be a "fixme." No part of it seems ideal. But this revision in particular is broken and should be addressed, in my view.

#Comment by 😂 (talk | contribs)   02:13, 21 January 2011

I don't disagree at all.

I genuinely asked because if it wasn't being used, the solution is to just delete this and move on. Since it is, the correct course of action is to use the normal Contact extension and configure it to act like this fork.

#Comment by P858snake (talk | contribs)   10:26, 23 January 2011

It's used based on a discussion i saw on irc (with James) and it also has adds a few extra fields compared to ContactPage which is why i opened bugzilla:26880 just before so that way we can get rid of it.

#Comment by Brion VIBBER (talk | contribs)   04:06, 24 January 2011

De fixme-ing; while it may be annoying, it's an old fundraiser-borne thing that's been in production for over a year -- nothing specific to this revision needs to be reviewed or changed in order for us to take it live (it's been live for a year) or release (it's an extension that nobody else will care about).

Discussion and work on removing it belong on the bug entry.

#Comment by MZMcBride (talk | contribs)   04:46, 24 January 2011

Between bugzilla:24682, bugzilla:26813, and bugzilla:26880, I think this is covered in Bugzilla.

Status & tagging log