Property changes on: branches/wmf-deployment-work/img_auth.php |
___________________________________________________________________ |
Deleted: svn:mergeinfo |
1 | 1 | Reverse-merged /branches/REL1_15/phase3/img_auth.php:r51646 |
Property changes on: branches/wmf-deployment-work/js2/mwEmbed/jquery/jquery.ui |
___________________________________________________________________ |
Modified: svn:mergeinfo |
2 | 2 | Merged /trunk/phase3/js2/mwEmbed/jquery/jquery.ui:r56213,56215-56216,56218,56334-56336,56338,56340,56343,56345,56347,56350 |
Index: branches/wmf-deployment-work/languages/Language.php |
— | — | @@ -1945,7 +1945,9 @@ |
1946 | 1946 | function getMagic( $mw ) { |
1947 | 1947 | if ( !$this->mMagicHookDone ) { |
1948 | 1948 | $this->mMagicHookDone = true; |
| 1949 | + wfProfileIn( 'LanguageGetMagic' ); |
1949 | 1950 | wfRunHooks( 'LanguageGetMagic', array( &$this->mMagicExtensions, $this->getCode() ) ); |
| 1951 | + wfProfileOut( 'LanguageGetMagic' ); |
1950 | 1952 | } |
1951 | 1953 | if ( isset( $this->mMagicExtensions[$mw->mId] ) ) { |
1952 | 1954 | $rawEntry = $this->mMagicExtensions[$mw->mId]; |
Index: branches/wmf-deployment-work/maintenance/Maintenance.php |
— | — | @@ -333,7 +333,7 @@ |
334 | 334 | } |
335 | 335 | |
336 | 336 | # Set the memory limit |
337 | | - ini_set( 'memory_limit', -1 ); |
| 337 | + ini_set( 'memory_limit', $this->memoryLimit() ); |
338 | 338 | |
339 | 339 | # Set max execution time to 0 (no limit). PHP.net says that |
340 | 340 | # "When running PHP from the command line the default setting is 0." |
— | — | @@ -362,6 +362,15 @@ |
363 | 363 | $this->maybeHelp(); |
364 | 364 | $this->validateParamsAndArgs(); |
365 | 365 | } |
| 366 | + |
| 367 | + /** |
| 368 | + * Normally we disable the memory_limit when running admin scripts. |
| 369 | + * Some scripts may wish to actually set a limit, however, to avoid |
| 370 | + * blowing up unexpectedly. |
| 371 | + */ |
| 372 | + public function memoryLimit() { |
| 373 | + return -1; |
| 374 | + } |
366 | 375 | |
367 | 376 | /** |
368 | 377 | * Clear all params and arguments. |
Index: branches/wmf-deployment-work/maintenance/doMaintenance.php |
— | — | @@ -58,7 +58,8 @@ |
59 | 59 | } |
60 | 60 | |
61 | 61 | // Load settings, using wikimedia-mode if needed |
62 | | -if( file_exists( dirname(__FILE__).'/wikimedia-mode' ) ) { |
| 62 | +// Fixme: replace this hack with general farm-friendly code |
| 63 | +if( file_exists( "$IP/wmf-config/wikimedia-mode" ) ) { |
63 | 64 | # TODO FIXME! Wikimedia-specific stuff needs to go away to an ext |
64 | 65 | # Maybe a hook? |
65 | 66 | global $cluster; |
— | — | @@ -66,10 +67,10 @@ |
67 | 68 | $cluster = 'pmtpa'; |
68 | 69 | require_once( "$IP/includes/AutoLoader.php" ); |
69 | 70 | require_once( "$IP/includes/SiteConfiguration.php" ); |
70 | | - require( "$IP/wgConf.php" ); |
| 71 | + require( "$IP/wmf-config/wgConf.php" ); |
71 | 72 | $maintenance->loadWikimediaSettings(); |
72 | 73 | require( $IP.'/includes/Defines.php' ); |
73 | | - require( $IP.'/CommonSettings.php' ); |
| 74 | + require( $IP.'/wmf-config/CommonSettings.php' ); |
74 | 75 | } else { |
75 | 76 | require_once( "$IP/includes/AutoLoader.php" ); |
76 | 77 | require_once( "$IP/includes/Defines.php" ); |
Index: branches/wmf-deployment-work/maintenance/rebuildLocalisationCache.php |
— | — | @@ -37,12 +37,14 @@ |
38 | 38 | $this->addOption( 'force', 'Rebuild all files, even ones not out of date' ); |
39 | 39 | $this->addOption( 'threads', 'Fork more than one thread', false, true ); |
40 | 40 | } |
| 41 | + |
| 42 | + public function memoryLimit() { |
| 43 | + return '200M'; |
| 44 | + } |
41 | 45 | |
42 | 46 | public function execute() { |
43 | 47 | global $wgLocalisationCacheConf; |
44 | 48 | |
45 | | - ini_set( 'memory_limit', '200M' ); |
46 | | - |
47 | 49 | $force = $this->hasOption('force'); |
48 | 50 | $threads = $this->getOption( 'threads', 1 ); |
49 | 51 | if( $threads < 1 || $threads != intval( $threads ) ) { |
Index: branches/wmf-deployment-work/maintenance/gearman/gearmanWorker.php |
— | — | @@ -4,6 +4,8 @@ |
5 | 5 | require( dirname(__FILE__).'/../commandLine.inc' ); |
6 | 6 | require( dirname(__FILE__).'/gearman.inc' ); |
7 | 7 | |
| 8 | +ini_set('memory_limit', '150M' ); |
| 9 | + |
8 | 10 | if ( isset( $options['procs'] ) ) { |
9 | 11 | $procs = $options['procs']; |
10 | 12 | if ( $procs < 1 || $procs > 1000 ) { |
Index: branches/wmf-deployment-work/maintenance/runJobs.php |
— | — | @@ -36,6 +36,11 @@ |
37 | 37 | $this->addOption( 'procs', 'Number of processes to use', false, true ); |
38 | 38 | $wgUseNormalUser = true; |
39 | 39 | } |
| 40 | + |
| 41 | + public function memoryLimit() { |
| 42 | + // Don't eat all memory on the machine if we get a bad job. |
| 43 | + return "150M"; |
| 44 | + } |
40 | 45 | |
41 | 46 | public function execute() { |
42 | 47 | global $wgTitle; |
Index: branches/wmf-deployment-work/maintenance/lag.php |
— | — | @@ -0,0 +1,33 @@ |
| 2 | +<?php |
| 3 | + |
| 4 | +$wgUseNormalUser = true; |
| 5 | +require_once('commandLine.inc'); |
| 6 | + |
| 7 | +if ( isset( $options['r'] ) ) { |
| 8 | + $lb = wfGetLB(); |
| 9 | + print 'time '; |
| 10 | + for( $i = 0; $i < $lb->getServerCount(); $i++ ) { |
| 11 | + $hostname = $lb->getServerName( $i ); |
| 12 | + printf("%-12s ", $hostname ); |
| 13 | + } |
| 14 | + print("\n"); |
| 15 | + |
| 16 | + while( 1 ) { |
| 17 | + $lags = $lb->getLagTimes(); |
| 18 | + unset( $lags[0] ); |
| 19 | + print( gmdate( 'H:i:s' ) . ' ' ); |
| 20 | + foreach( $lags as $i => $lag ) { |
| 21 | + printf("%-12s " , $lag === false ? 'false' : $lag ); |
| 22 | + } |
| 23 | + print("\n"); |
| 24 | + sleep(5); |
| 25 | + } |
| 26 | +} else { |
| 27 | + $lb = wfGetLB(); |
| 28 | + $lags = $lb->getLagTimes(); |
| 29 | + foreach( $lags as $i => $lag ) { |
| 30 | + $name = $lb->getServerName( $i ); |
| 31 | + printf("%-20s %s\n" , $name, $lag === false ? 'false' : $lag ); |
| 32 | + } |
| 33 | +} |
| 34 | +?> |
Property changes on: branches/wmf-deployment-work/maintenance/lag.php |
___________________________________________________________________ |
Added: svn:eol-style |
1 | 35 | + native |
Index: branches/wmf-deployment-work/maintenance/storage/make-blobs |
— | — | @@ -1,11 +1,16 @@ |
2 | 2 | #!/bin/bash |
3 | 3 | |
4 | | -if [ X$2 == X ];then |
5 | | - echo 'Usage: make-blobs <server> <db>' |
| 4 | +if [ -z $2 ];then |
| 5 | + echo 'Usage: make-blobs <server> <db> [<table name>]' |
6 | 6 | exit 1 |
7 | 7 | fi |
| 8 | +if [ -z $3 ]; then |
| 9 | + table=blobs |
| 10 | +else |
| 11 | + table=$3 |
| 12 | +fi |
8 | 13 | |
9 | 14 | echo "CREATE DATABASE $2" | mysql -u wikiadmin -p`wikiadmin_pass` -h $1 && \ |
10 | | -mysql -u wikiadmin -p`wikiadmin_pass` -h $1 $2 < blobs.sql |
| 15 | +sed "s/blobs\>/$table/" blobs.sql | mysql -u wikiadmin -p`wikiadmin_pass` -h $1 $2 |
11 | 16 | |
12 | 17 | |
Index: branches/wmf-deployment-work/maintenance/backup.inc |
— | — | @@ -232,28 +232,26 @@ |
233 | 233 | $this->startTime = wfTime(); |
234 | 234 | } |
235 | 235 | |
| 236 | + /** |
| 237 | + * @fixme the --server parameter is currently not respected, as it doesn't seem |
| 238 | + * terribly easy to ask the load balancer for a particular connection by name. |
| 239 | + */ |
236 | 240 | function backupDb() { |
237 | | - global $wgDBadminuser, $wgDBadminpassword; |
238 | | - global $wgDBuser, $wgDBpassword; |
239 | | - global $wgDBname, $wgDebugDumpSql, $wgDBtype; |
240 | | - $flags = ($wgDebugDumpSql ? DBO_DEBUG : 0) | DBO_DEFAULT; // god-damn hack |
| 241 | + $this->lb = wfGetLBFactory()->newMainLB(); |
| 242 | + $db = $this->lb->getConnection( DB_SLAVE, 'backup' ); |
241 | 243 | |
242 | | - if ( !$wgDBadminuser ) { |
243 | | - $wgDBadminuser = $wgDBuser; |
244 | | - } |
245 | | - if ( !$wgDBadminpassword ) { |
246 | | - $wgDBadminpassword = $wgDBpassword; |
247 | | - } |
248 | | - |
249 | | - $class = 'Database' . ucfirst($wgDBtype); |
250 | | - $db = new $class( $this->backupServer(), $wgDBadminuser, $wgDBadminpassword, $wgDBname, false, $flags ); |
251 | | - |
252 | 244 | // Discourage the server from disconnecting us if it takes a long time |
253 | 245 | // to read out the big ol' batch query. |
254 | 246 | $db->setTimeout( 3600 * 24 ); |
255 | 247 | |
256 | 248 | return $db; |
257 | 249 | } |
| 250 | + |
| 251 | + function __destruct() { |
| 252 | + if( isset( $this->lb ) ) { |
| 253 | + $this->lb->closeAll(); |
| 254 | + } |
| 255 | + } |
258 | 256 | |
259 | 257 | function backupServer() { |
260 | 258 | global $wgDBserver; |
Index: branches/wmf-deployment-work/maintenance/deleteSelfExternals.php |
— | — | @@ -0,0 +1,15 @@ |
| 2 | +<?php |
| 3 | + |
| 4 | +require_once("commandLine.inc"); |
| 5 | + |
| 6 | +print "Deleting self externals from $wgServer\n"; |
| 7 | +$db = wfGetDB(DB_MASTER); |
| 8 | +while (1) { |
| 9 | + wfWaitForSlaves( 2 ); |
| 10 | + $db->commit(); |
| 11 | + $encServer = $db->escapeLike( $wgServer ); |
| 12 | + $q="DELETE /* deleteSelfExternals */ FROM externallinks WHERE el_to LIKE '$encServer/%' LIMIT 1000\n"; |
| 13 | + print "Deleting a batch\n"; |
| 14 | + $db->query($q); |
| 15 | + if (!$db->affectedRows()) exit(0); |
| 16 | +} |
Property changes on: branches/wmf-deployment-work/maintenance/deleteSelfExternals.php |
___________________________________________________________________ |
Added: svn:mergeinfo |
1 | 17 | Merged /trunk/phase3/maintenance/deleteSelfExternals.php:r52290,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,56218,56334-56336,56338,56340,56343,56345,56347,56350 |
2 | 18 | Merged /branches/REL1_15/phase3/maintenance/deleteSelfExternals.php:r51646 |
Added: svn:eol-style |
3 | 19 | + native |
Index: branches/wmf-deployment-work/extensions/AbuseFilter/AbuseFilter.parser.php |
— | — | @@ -1590,6 +1590,7 @@ |
1591 | 1591 | |
1592 | 1592 | public static function regexErrorHandler( $errno, $errstr, $errfile, $errline, $context ) { |
1593 | 1593 | if ( error_reporting() == 0 ) { return true; } |
| 1594 | + wfLoadExtensionMessages( 'AbuseFilter' ); |
1594 | 1595 | throw new AFPUserVisibleException( 'regexfailure', $context['pos'], |
1595 | 1596 | array( $errstr, $context['regex'] ) ); |
1596 | 1597 | return true; |
Index: branches/wmf-deployment-work/extensions/TrustedXFF/TrustedXFF.php |
— | — | @@ -1,5 +1,9 @@ |
2 | 2 | <?php |
3 | 3 | |
| 4 | +if (!defined('MEDIAWIKI')) { |
| 5 | + die(1); |
| 6 | +} |
| 7 | + |
4 | 8 | /** |
5 | 9 | * Trusted hosts file in CDB format. |
6 | 10 | * The file can be generated using generate.php |
— | — | @@ -10,7 +14,7 @@ |
11 | 15 | * |
12 | 16 | * For details, see http://meta.wikimedia.org/wiki/XFF_project |
13 | 17 | */ |
14 | | -$wgTrustedXffFile = dirname(__FILE__).'/trusted-xff.cdb'; |
| 18 | +$wgTrustedXffFile = $IP . '/cache/trusted-xff.cdb'; |
15 | 19 | |
16 | 20 | |
17 | 21 | /** Registration */ |
Property changes on: branches/wmf-deployment-work/extensions/TrustedXFF/trusted-hosts.txt |
___________________________________________________________________ |
Modified: svn:mergeinfo |
18 | 22 | Merged /trunk/extensions/TrustedXFF/trusted-hosts.txt:r56207,56209,56333 |
19 | 23 | Merged /branches/wmf-deployment/extensions/TrustedXFF/trusted-hosts.txt:r53263 |
Index: branches/wmf-deployment-work/extensions/TrustedXFF/generate.php |
— | — | @@ -12,7 +12,16 @@ |
13 | 13 | echo "Unable to open input file \"trusted-xff.txt\"\n"; |
14 | 14 | exit( 1 ); |
15 | 15 | } |
16 | | -$outFile = dba_open( 'trusted-xff.cdb', 'n', 'cdb' ); |
| 16 | + |
| 17 | +if( isset( $args[0] ) ) { |
| 18 | + $target = realpath( $args[0] ); |
| 19 | +} elseif( isset( $wgTrustedXffFile ) ) { |
| 20 | + $target = $wgTrustedXffFile; |
| 21 | +} else { |
| 22 | + echo "TrustedXffFile extension is not enabled. Specify target output file on command line!\n"; |
| 23 | + exit( 1 ); |
| 24 | +} |
| 25 | +$outFile = dba_open( $target, 'n', 'cdb' ); |
17 | 26 | if ( !$outFile ) { |
18 | 27 | echo "Unable open output file \"trusted-xff.cdb\"\n"; |
19 | 28 | exit( 1 ); |
Index: branches/wmf-deployment-work/extensions/TrustedXFF/update |
— | — | @@ -1,8 +1,8 @@ |
2 | 2 | #!/bin/bash |
3 | 3 | |
4 | 4 | cd `dirname $0` |
5 | | -php generate.php |
6 | | -bzip2 -kf trusted-xff.cdb |
| 5 | +php generate.php aawiki ../../cache/trusted-xff.cdb |
| 6 | +bzip2 -kf ../../cache/trusted-xff.cdb |
7 | 7 | if [ -x /home/wikipedia/bin/sync-common-file ]; then |
8 | | - sync-common-file php-1.5/extensions/TrustedXFF/trusted-xff.cdb |
| 8 | + sync-common-file wmf-deployment/cache/trusted-xff.cdb |
9 | 9 | fi |
Property changes on: branches/wmf-deployment-work/extensions/TrustedXFF |
___________________________________________________________________ |
Added: svn:mergeinfo |
10 | 10 | Merged /trunk/extensions/TrustedXFF:r56207,56209,56333 |
11 | 11 | Merged /branches/wmf-deployment/extensions/TrustedXFF:r53263 |
12 | 12 | Merged /branches/REL1_15/phase3/extensions/TrustedXFF:r51646 |
Index: branches/wmf-deployment-work/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-work/extensions/ContactPageFundraiser/SpecialContact.php |
___________________________________________________________________ |
Added: svn:eol-style |
1 | 382 | + native |
Added: eol-style:native |
2 | 383 | + properties |
Index: branches/wmf-deployment-work/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-work/extensions/ContactPageFundraiser/install.settings |
___________________________________________________________________ |
Added: svn:eol-style |
1 | 7 | + native |
Added: eol-style:native |
2 | 8 | + properties |
Index: branches/wmf-deployment-work/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-work/extensions/ContactPageFundraiser/ContactPage.alias.php |
___________________________________________________________________ |
Added: svn:eol-style |
1 | 156 | + native |
Index: branches/wmf-deployment-work/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' => '* volitelné<br /> |
| 161 | +** 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-work/extensions/ContactPageFundraiser/ContactPage.i18n.php |
___________________________________________________________________ |
Added: svn:eol-style |
1 | 1141 | + native |
Added: eol-style:native |
2 | 1142 | + properties |
Index: branches/wmf-deployment-work/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-work/extensions/ContactPageFundraiser/README |
___________________________________________________________________ |
Added: svn:eol-style |
1 | 55 | + native |
Added: eol-style:native |
2 | 56 | + properties |
Index: branches/wmf-deployment-work/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-work/extensions/ContactPageFundraiser/ContactPage.php |
___________________________________________________________________ |
Added: svn:keywords |
1 | 41 | + LastChangedDate LastChangedRevision |
Added: svn:eol-style |
2 | 42 | + native |
Property changes on: branches/wmf-deployment-work/extensions/ContactPageFundraiser |
___________________________________________________________________ |
Added: svn:mergeinfo |
3 | 43 | Merged /trunk/phase3/extensions/ContactPageFundraiser:r52290,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,56213,56215-56216,56218,56334-56336,56338,56340,56343,56345,56347,56350 |
4 | 44 | Merged /trunk/phase3/ContactPageFundraiser:r52859,53272 |
5 | 45 | Merged /branches/REL1_15/phase3/extensions/ContactPageFundraiser:r51646 |
6 | 46 | Merged /trunk/extensions/ContactPageFundraiser:r52859,52871-52872,52876,53191,53205-53206,53272,54715,54758,54762,54778,54781,54786,54810-54811,55178,56209,56333 |
Added: eol-style:native |
7 | 47 | + properties |
Property changes on: branches/wmf-deployment-work/extensions/FundraiserPortal |
___________________________________________________________________ |
Modified: svn:mergeinfo |
8 | 48 | Merged /trunk/extensions/FundraiserPortal:r56207,56209,56333 |
Property changes on: branches/wmf-deployment-work/extensions/LocalisationUpdate |
___________________________________________________________________ |
Modified: svn:mergeinfo |
9 | 49 | Merged /trunk/extensions/LocalisationUpdate:r56207,56209,56333 |
10 | 50 | Merged /trunk/phase3/extensions/LocalisationUpdate:r56213,56215-56216,56218,56334-56336,56338,56340,56343,56345,56347,56350 |
Property changes on: branches/wmf-deployment-work/extensions/HoneypotIntegration/HoneypotIntegration.class.php |
___________________________________________________________________ |
Modified: svn:mergeinfo |
11 | 51 | Merged /trunk/extensions/HoneypotIntegration/HoneypotIntegration.class.php:r56207,56209,56333 |
Property changes on: branches/wmf-deployment-work/extensions |
___________________________________________________________________ |
Added: svn:mergeinfo |
12 | 52 | Merged /trunk/extensions:r56207,56209,56333 |
13 | 53 | Merged /trunk/phase3/extensions:r56213,56215-56216,56218,56334-56336,56338,56340,56343,56345,56347,56350 |
14 | 54 | Merged /branches/REL1_15/phase3/extensions:r51646 |
Index: branches/wmf-deployment-work/includes/DefaultSettings.php |
— | — | @@ -1861,6 +1861,19 @@ |
1862 | 1862 | /** Location of the texvc binary */ |
1863 | 1863 | $wgTexvc = './math/texvc'; |
1864 | 1864 | |
| 1865 | +/** |
| 1866 | + * Normally when generating math images, we double-check that the |
| 1867 | + * directories we want to write to exist, and that files that have |
| 1868 | + * been generated still exist when we need to bring them up again. |
| 1869 | + * |
| 1870 | + * This lets us give useful error messages in case of permission |
| 1871 | + * problems, and automatically rebuild images that have been lost. |
| 1872 | + * |
| 1873 | + * On a big site with heavy NFS traffic this can be slow and flaky, |
| 1874 | + * so sometimes we want to short-circuit it by setting this to false. |
| 1875 | + */ |
| 1876 | +$wgMathCheckFiles = true; |
| 1877 | + |
1865 | 1878 | # |
1866 | 1879 | # Profiling / debugging |
1867 | 1880 | # |
— | — | @@ -4219,3 +4232,6 @@ |
4220 | 4233 | * Note that this requires JS2 and the script loader. |
4221 | 4234 | */ |
4222 | 4235 | $wgUseAJAXCategories = false; |
| 4236 | + |
| 4237 | +// to disable image delete/restore temporarily |
| 4238 | +$wgUploadMaintenance = false; |
Index: branches/wmf-deployment-work/includes/ImagePage.php |
— | — | @@ -720,6 +720,13 @@ |
721 | 721 | * Delete the file, or an earlier version of it |
722 | 722 | */ |
723 | 723 | public function delete() { |
| 724 | + global $wgUploadMaintenance; |
| 725 | + if( $wgUploadMaintenance && $this->mTitle && $this->mTitle->getNamespace() == NS_FILE ) { |
| 726 | + global $wgOut; |
| 727 | + $wgOut->addWikiText('Deletion and restoration of images temporarily disabled during maintenance.' ); |
| 728 | + return; |
| 729 | + } |
| 730 | + |
724 | 731 | $this->loadFile(); |
725 | 732 | if( !$this->img->exists() || !$this->img->isLocal() || $this->img->getRedirected() ) { |
726 | 733 | // Standard article deletion |
Index: branches/wmf-deployment-work/includes/User.php |
— | — | @@ -1663,6 +1663,9 @@ |
1664 | 1664 | * for reload on the next hit. |
1665 | 1665 | */ |
1666 | 1666 | function invalidateCache() { |
| 1667 | + if( wfReadOnly() ) { |
| 1668 | + return; |
| 1669 | + } |
1667 | 1670 | $this->load(); |
1668 | 1671 | if( $this->mId ) { |
1669 | 1672 | $this->mTouched = self::newTouchedTimestamp(); |
Property changes on: branches/wmf-deployment-work/includes/json/Services_JSON.php |
___________________________________________________________________ |
Modified: svn:mergeinfo |
1670 | 1673 | Merged /trunk/phase3/includes/json/Services_JSON.php:r56213,56215-56216,56218,56334-56336,56338,56340,56343,56345,56347,56350 |
Property changes on: branches/wmf-deployment-work/includes/ConfEditor.php |
___________________________________________________________________ |
Modified: svn:mergeinfo |
1671 | 1674 | Merged /trunk/phase3/includes/ConfEditor.php:r56213,56215-56216,56218,56334-56336,56338,56340,56343,56345,56347,56350 |
Index: branches/wmf-deployment-work/includes/Title.php |
— | — | @@ -1009,7 +1009,8 @@ |
1010 | 1010 | |
1011 | 1011 | /** |
1012 | 1012 | * Can $wgUser perform $action on this page? |
1013 | | - * This skips potentially expensive cascading permission checks. |
| 1013 | + * This skips potentially expensive cascading permission checks |
| 1014 | + * as well as avoids expensive error formatting |
1014 | 1015 | * |
1015 | 1016 | * Suitable for use for nonessential UI controls in common cases, but |
1016 | 1017 | * _not_ for functional access control. |
— | — | @@ -1208,8 +1209,14 @@ |
1209 | 1210 | } |
1210 | 1211 | } elseif( !$user->isAllowed( $action ) ) { |
1211 | 1212 | $return = null; |
1212 | | - $groups = array_map( array( 'User', 'makeGroupLinkWiki' ), |
1213 | | - User::getGroupsWithPermission( $action ) ); |
| 1213 | + |
| 1214 | + // We avoid expensive display logic for quickUserCan's and such |
| 1215 | + $groups = false; |
| 1216 | + if (!$short) { |
| 1217 | + $groups = array_map( array( 'User', 'makeGroupLinkWiki' ), |
| 1218 | + User::getGroupsWithPermission( $action ) ); |
| 1219 | + } |
| 1220 | + |
1214 | 1221 | if( $groups ) { |
1215 | 1222 | $return = array( 'badaccess-groups', |
1216 | 1223 | array( implode( ', ', $groups ), count( $groups ) ) ); |
Property changes on: branches/wmf-deployment-work/includes/HistoryPage.php |
___________________________________________________________________ |
Modified: svn:mergeinfo |
1217 | 1224 | Merged /trunk/phase3/includes/HistoryPage.php:r56213,56215-56216,56218,56334-56336,56338,56340,56343,56345,56347,56350 |
Index: branches/wmf-deployment-work/includes/specials/SpecialUndelete.php |
— | — | @@ -646,6 +646,11 @@ |
647 | 647 | } |
648 | 648 | } |
649 | 649 | if( $this->mRestore && $this->mAction == "submit" ) { |
| 650 | + global $wgUploadMaintenance; |
| 651 | + if( $wgUploadMaintenance && $this->mTargetObj && $this->mTargetObj->getNamespace() == NS_FILE ) { |
| 652 | + $wgOut->addWikiText('Deletion and restoration of images temporarily disabled during maintenance.' ); |
| 653 | + return; |
| 654 | + } |
650 | 655 | return $this->undelete(); |
651 | 656 | } |
652 | 657 | if( $this->mInvert && $this->mAction == "submit" ) { |
Index: branches/wmf-deployment-work/includes/specials/SpecialRecentchanges.php |
— | — | @@ -55,7 +55,7 @@ |
56 | 56 | $this->parseParameters( $parameters, $opts ); |
57 | 57 | } |
58 | 58 | |
59 | | - $opts->validateIntBounds( 'limit', 0, 500 ); |
| 59 | + $opts->validateIntBounds( 'limit', 0, 5000 ); |
60 | 60 | return $opts; |
61 | 61 | } |
62 | 62 | |
Index: branches/wmf-deployment-work/includes/Math.php |
— | — | @@ -33,7 +33,7 @@ |
34 | 34 | |
35 | 35 | function render() { |
36 | 36 | global $wgTmpDirectory, $wgInputEncoding; |
37 | | - global $wgTexvc; |
| 37 | + global $wgTexvc, $wgMathCheckFiles; |
38 | 38 | $fname = 'MathRenderer::render'; |
39 | 39 | |
40 | 40 | if( $this->mode == MW_MATH_SOURCE ) { |
— | — | @@ -45,13 +45,15 @@ |
46 | 46 | } |
47 | 47 | |
48 | 48 | if( !$this->_recall() ) { |
49 | | - # Ensure that the temp and output directories are available before continuing... |
50 | | - if( !file_exists( $wgTmpDirectory ) ) { |
51 | | - if( !wfMkdirParents( $wgTmpDirectory ) ) { |
| 49 | + if( $wgMathCheckFiles ) { |
| 50 | + # Ensure that the temp and output directories are available before continuing... |
| 51 | + if( !file_exists( $wgTmpDirectory ) ) { |
| 52 | + if( !wfMkdirParents( $wgTmpDirectory ) ) { |
| 53 | + return $this->_error( 'math_bad_tmpdir' ); |
| 54 | + } |
| 55 | + } elseif( !is_dir( $wgTmpDirectory ) || !is_writable( $wgTmpDirectory ) ) { |
52 | 56 | return $this->_error( 'math_bad_tmpdir' ); |
53 | 57 | } |
54 | | - } elseif( !is_dir( $wgTmpDirectory ) || !is_writable( $wgTmpDirectory ) ) { |
55 | | - return $this->_error( 'math_bad_tmpdir' ); |
56 | 58 | } |
57 | 59 | |
58 | 60 | if( function_exists( 'is_executable' ) && !is_executable( $wgTexvc ) ) { |
— | — | @@ -200,7 +202,7 @@ |
201 | 203 | } |
202 | 204 | |
203 | 205 | function _recall() { |
204 | | - global $wgMathDirectory; |
| 206 | + global $wgMathDirectory, $wgMathCheckFiles; |
205 | 207 | $fname = 'MathRenderer::_recall'; |
206 | 208 | |
207 | 209 | $this->md5 = md5( $this->tex ); |
— | — | @@ -221,6 +223,12 @@ |
222 | 224 | $this->mathml = $rpage->math_mathml; |
223 | 225 | |
224 | 226 | $filename = $this->_getHashPath() . "/{$this->hash}.png"; |
| 227 | + |
| 228 | + if( !$wgMathCheckFiles ) { |
| 229 | + // Short-circuit the file existence & migration checks |
| 230 | + return true; |
| 231 | + } |
| 232 | + |
225 | 233 | if( file_exists( $filename ) ) { |
226 | 234 | if( filesize( $filename ) == 0 ) { |
227 | 235 | // Some horrible error corrupted stuff :( |
Property changes on: branches/wmf-deployment-work/includes |
___________________________________________________________________ |
Modified: svn:mergeinfo |
228 | 236 | Merged /trunk/phase3/includes:r56213,56215-56216,56218,56334-56336,56338,56340,56343,56345,56347,56350 |
Property changes on: branches/wmf-deployment-work |
___________________________________________________________________ |
Modified: svn:mergeinfo |
229 | 237 | Merged /trunk/phase3:r56213,56215-56216,56218,56334-56336,56338,56340,56343,56345,56347,56350 |