Index: trunk/extensions/Translate/groups/mediawiki-defines.txt |
— | — | @@ -450,6 +450,10 @@ |
451 | 451 | |
452 | 452 | Force Preview |
453 | 453 | |
| 454 | +Form |
| 455 | +aliasfile = Form/Form.alias.php |
| 456 | +ignored = formtemplatepattern |
| 457 | + |
454 | 458 | Format Email |
455 | 459 | descmsg = email-desc |
456 | 460 | ignored = email_header |
— | — | @@ -1063,11 +1067,6 @@ |
1064 | 1068 | file = SpecialFileList/SpecialFilelist.i18n.php |
1065 | 1069 | descmsg = filelist-desc |
1066 | 1070 | |
1067 | | -Special Form |
1068 | | -aliasfile = SpecialForm/SpecialForm.alias.php |
1069 | | -ignored = formtemplatepattern |
1070 | | -descmsg = form-desc |
1071 | | - |
1072 | 1071 | Sphinx Search |
1073 | 1072 | aliasfile = SphinxSearch/SphinxSearch.alias.php |
1074 | 1073 | |
Index: trunk/extensions/Form/Form.alias.php |
— | — | @@ -0,0 +1,182 @@ |
| 2 | +<?php |
| 3 | +/** |
| 4 | + * Aliases for special pages |
| 5 | + * |
| 6 | + */ |
| 7 | + |
| 8 | +$aliases = array(); |
| 9 | + |
| 10 | +$aliases['en'] = array( |
| 11 | + 'Form' => array( 'Form' ), |
| 12 | +); |
| 13 | + |
| 14 | +/** Afrikaans (Afrikaans) */ |
| 15 | +$aliases['af'] = array( |
| 16 | + 'Form' => array( 'Vorm' ), |
| 17 | +); |
| 18 | + |
| 19 | +/** Arabic (العربية) */ |
| 20 | +$aliases['ar'] = array( |
| 21 | + 'Form' => array( 'استمارة' ), |
| 22 | +); |
| 23 | + |
| 24 | +/** Egyptian Spoken Arabic (مصرى) */ |
| 25 | +$aliases['arz'] = array( |
| 26 | + 'Form' => array( 'استمارة' ), |
| 27 | +); |
| 28 | + |
| 29 | +/** German (Deutsch) */ |
| 30 | +$aliases['de'] = array( |
| 31 | + 'Form' => array( 'Eingabefeld' ), |
| 32 | +); |
| 33 | + |
| 34 | +/** Lower Sorbian (Dolnoserbski) */ |
| 35 | +$aliases['dsb'] = array( |
| 36 | + 'Form' => array( 'Formular' ), |
| 37 | +); |
| 38 | + |
| 39 | +/** Persian (فارسی) */ |
| 40 | +$aliases['fa'] = array( |
| 41 | + 'Form' => array( 'فرم' ), |
| 42 | +); |
| 43 | + |
| 44 | +/** Franco-Provençal (Arpetan) */ |
| 45 | +$aliases['frp'] = array( |
| 46 | + 'Form' => array( 'Formulèro' ), |
| 47 | +); |
| 48 | + |
| 49 | +/** Galician (Galego) */ |
| 50 | +$aliases['gl'] = array( |
| 51 | + 'Form' => array( 'Formulario' ), |
| 52 | +); |
| 53 | + |
| 54 | +/** Hebrew (עברית) */ |
| 55 | +$aliases['he'] = array( |
| 56 | + 'Form' => array( 'טופס' ), |
| 57 | +); |
| 58 | + |
| 59 | +/** Upper Sorbian (Hornjoserbsce) */ |
| 60 | +$aliases['hsb'] = array( |
| 61 | + 'Form' => array( 'Formular' ), |
| 62 | +); |
| 63 | + |
| 64 | +/** Hungarian (Magyar) */ |
| 65 | +$aliases['hu'] = array( |
| 66 | + 'Form' => array( 'Űrlap' ), |
| 67 | +); |
| 68 | + |
| 69 | +/** Interlingua (Interlingua) */ |
| 70 | +$aliases['ia'] = array( |
| 71 | + 'Form' => array( 'Formulario' ), |
| 72 | +); |
| 73 | + |
| 74 | +/** Indonesian (Bahasa Indonesia) */ |
| 75 | +$aliases['id'] = array( |
| 76 | + 'Form' => array( 'FormulirKhusus' ), |
| 77 | +); |
| 78 | + |
| 79 | +/** Italian (Italiano) */ |
| 80 | +$aliases['it'] = array( |
| 81 | + 'Form' => array( 'Modulo' ), |
| 82 | +); |
| 83 | + |
| 84 | +/** Japanese (日本語) */ |
| 85 | +$aliases['ja'] = array( |
| 86 | + 'Form' => array( 'フォーム' ), |
| 87 | +); |
| 88 | + |
| 89 | +/** Khmer (ភាសាខ្មែរ) */ |
| 90 | +$aliases['km'] = array( |
| 91 | + 'Form' => array( 'បែបបទ' ), |
| 92 | +); |
| 93 | + |
| 94 | +/** Korean (한국어) */ |
| 95 | +$aliases['ko'] = array( |
| 96 | + 'Form' => array( '양식' ), |
| 97 | +); |
| 98 | + |
| 99 | +/** Colognian (Ripoarisch) */ |
| 100 | +$aliases['ksh'] = array( |
| 101 | + 'Form' => array( 'Fommulaa', 'Formular' ), |
| 102 | +); |
| 103 | + |
| 104 | +/** Luxembourgish (Lëtzebuergesch) */ |
| 105 | +$aliases['lb'] = array( |
| 106 | + 'Form' => array( 'Formulaire' ), |
| 107 | +); |
| 108 | + |
| 109 | +/** Macedonian (Македонски) */ |
| 110 | +$aliases['mk'] = array( |
| 111 | + 'Form' => array( 'Образец' ), |
| 112 | +); |
| 113 | + |
| 114 | +/** Malayalam (മലയാളം) */ |
| 115 | +$aliases['ml'] = array( |
| 116 | + 'Form' => array( 'ഫോം' ), |
| 117 | +); |
| 118 | + |
| 119 | +/** Marathi (मराठी) */ |
| 120 | +$aliases['mr'] = array( |
| 121 | + 'Form' => array( 'छापीलनमूना' ), |
| 122 | +); |
| 123 | + |
| 124 | +/** Maltese (Malti) */ |
| 125 | +$aliases['mt'] = array( |
| 126 | + 'Form' => array( 'Formola' ), |
| 127 | +); |
| 128 | + |
| 129 | +/** Nedersaksisch (Nedersaksisch) */ |
| 130 | +$aliases['nds-nl'] = array( |
| 131 | + 'Form' => array( 'Formelier' ), |
| 132 | +); |
| 133 | + |
| 134 | +/** Dutch (Nederlands) */ |
| 135 | +$aliases['nl'] = array( |
| 136 | + 'Form' => array( 'Formulier' ), |
| 137 | +); |
| 138 | + |
| 139 | +/** Norwegian (bokmål) (Norsk (bokmål)) */ |
| 140 | +$aliases['no'] = array( |
| 141 | + 'Form' => array( 'Skjema' ), |
| 142 | +); |
| 143 | + |
| 144 | +/** Occitan (Occitan) */ |
| 145 | +$aliases['oc'] = array( |
| 146 | + 'Form' => array( 'Formulari' ), |
| 147 | +); |
| 148 | + |
| 149 | +/** Polish (Polski) */ |
| 150 | +$aliases['pl'] = array( |
| 151 | + 'Form' => array( 'Formularz' ), |
| 152 | +); |
| 153 | + |
| 154 | +/** Slovak (Slovenčina) */ |
| 155 | +$aliases['sk'] = array( |
| 156 | + 'Form' => array( 'Formulár' ), |
| 157 | +); |
| 158 | + |
| 159 | +/** Albanian (Shqip) */ |
| 160 | +$aliases['sq'] = array( |
| 161 | + 'Form' => array( 'Formë' ), |
| 162 | +); |
| 163 | + |
| 164 | +/** Swedish (Svenska) */ |
| 165 | +$aliases['sv'] = array( |
| 166 | + 'Form' => array( 'Formulär' ), |
| 167 | +); |
| 168 | + |
| 169 | +/** Swahili (Kiswahili) */ |
| 170 | +$aliases['sw'] = array( |
| 171 | + 'Form' => array( 'Fomu' ), |
| 172 | +); |
| 173 | + |
| 174 | +/** Thai (ไทย) */ |
| 175 | +$aliases['th'] = array( |
| 176 | + 'Form' => array( 'ฟอร์ม' ), |
| 177 | +); |
| 178 | + |
| 179 | +/** Tagalog (Tagalog) */ |
| 180 | +$aliases['tl'] = array( |
| 181 | + 'Form' => array( 'Pormularyo' ), |
| 182 | +); |
| 183 | + |
Property changes on: trunk/extensions/Form/Form.alias.php |
___________________________________________________________________ |
Name: svn:keywords |
1 | 184 | + Id |
Name: svn:eol-style |
2 | 185 | + native |
Index: trunk/extensions/Form/Form.body.php |
— | — | @@ -0,0 +1,510 @@ |
| 2 | +<?php |
| 3 | +/** |
| 4 | + * Form.php -- Use a form-based interface to start new articles |
| 5 | + * Copyright 2007 Vinismo, Inc. (http://vinismo.com/) |
| 6 | + * |
| 7 | + * This program is free software; you can redistribute it and/or modify |
| 8 | + * it under the terms of the GNU General Public License as published by |
| 9 | + * the Free Software Foundation; either version 2 of the License, or |
| 10 | + * (at your option) any later version. |
| 11 | + * |
| 12 | + * This program is distributed in the hope that it will be useful, |
| 13 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 14 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 15 | + * GNU General Public License for more details. |
| 16 | + * |
| 17 | + * You should have received a copy of the GNU General Public License |
| 18 | + * along with this program; if not, write to the Free Software |
| 19 | + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
| 20 | + * |
| 21 | + * @file |
| 22 | + * @ingroup Extensions |
| 23 | + * @author Evan Prodromou <evan@vinismo.com> |
| 24 | + */ |
| 25 | + |
| 26 | +if ( !defined( 'MEDIAWIKI' ) ) { |
| 27 | + exit( 1 ); |
| 28 | +} |
| 29 | + |
| 30 | +require_once( 'XmlFunctions.php' ); |
| 31 | + |
| 32 | +class SpecialForm extends SpecialPage { |
| 33 | + |
| 34 | + /** |
| 35 | + * Constructor |
| 36 | + */ |
| 37 | + public function __construct() { |
| 38 | + parent::__construct( 'Form' ); |
| 39 | + } |
| 40 | + |
| 41 | + /** |
| 42 | + * Show the special page |
| 43 | + * |
| 44 | + * @param $par Mixed: parameter passed to the page or null |
| 45 | + */ |
| 46 | + public function execute( $par ) { |
| 47 | + global $wgRequest, $wgOut; |
| 48 | + |
| 49 | + wfLoadExtensionMessages( 'Form' ); |
| 50 | + |
| 51 | + # Must have a name, like Special:Form/Nameofform |
| 52 | + # XXX: instead of an error, show a list of available forms |
| 53 | + if ( !$par ) { |
| 54 | + $wgOut->showErrorPage( 'formnoname', 'formnonametext' ); |
| 55 | + return; |
| 56 | + } |
| 57 | + |
| 58 | + $form = $this->loadForm( $par ); |
| 59 | + |
| 60 | + # Bad form |
| 61 | + if ( !$form ) { |
| 62 | + $wgOut->showErrorPage( 'formbadname', 'formbadnametext' ); |
| 63 | + return; |
| 64 | + } |
| 65 | + |
| 66 | + if ( $wgRequest->wasPosted() ) { |
| 67 | + # POST is to create an article |
| 68 | + $this->createArticle( $form ); |
| 69 | + } else { |
| 70 | + # GET (HEAD?) is to show the form |
| 71 | + $this->showForm( $form ); |
| 72 | + } |
| 73 | + } |
| 74 | + |
| 75 | + # Load and parse a form article from the DB |
| 76 | + function loadForm( $name ) { |
| 77 | + $nt = Title::makeTitleSafe( NS_MEDIAWIKI, wfMsgForContent( 'formpattern', $name ) ); |
| 78 | + |
| 79 | + # article exists? |
| 80 | + if ( !$nt || $nt->getArticleID() == 0 ) { |
| 81 | + return null; |
| 82 | + } |
| 83 | + |
| 84 | + $article = new Article( $nt ); |
| 85 | + |
| 86 | + assert( $article ); |
| 87 | + |
| 88 | + $text = $article->getContent( true ); |
| 89 | + |
| 90 | + # Form constructor does the parsing |
| 91 | + return new Form( $name, $text ); |
| 92 | + } |
| 93 | + |
| 94 | + function showForm( $form, $errmsg = null ) { |
| 95 | + global $wgOut, $wgRequest, $wgParser, $wgUser, $wgSpecialFormRecaptcha; |
| 96 | + |
| 97 | + $self = SpecialPage::getTitleFor( wfMsgForContent( 'form' ) . '/' . $form->name ); |
| 98 | + |
| 99 | + $wgOut->setPageTitle( $form->title ); |
| 100 | + |
| 101 | + if ( !is_null( $form->instructions ) ) { |
| 102 | + |
| 103 | + $wgOut->addHTML( Xml::openElement( 'div', array( 'class' => 'instructions' ) ) . |
| 104 | + $wgOut->parse( $form->instructions ) . |
| 105 | + Xml::closeElement( 'div' ) . |
| 106 | + Xml::element( 'br' ) ); |
| 107 | + } |
| 108 | + |
| 109 | + if ( !is_null( $errmsg ) ) { |
| 110 | + $wgOut->addHTML( Xml::openElement( 'div', array( 'class' => 'error' ) ) . |
| 111 | + $wgOut->parse( $errmsg ) . |
| 112 | + Xml::closeElement( 'div' ) . |
| 113 | + Xml::element( 'br' ) ); |
| 114 | + } |
| 115 | + |
| 116 | + $wgOut->addHTML( |
| 117 | + Xml::openElement( 'form', array( |
| 118 | + 'method' => 'post', |
| 119 | + 'action' => $self->getLocalURL() |
| 120 | + ) |
| 121 | + ) |
| 122 | + ); |
| 123 | + |
| 124 | + foreach ( $form->fields as $field ) { |
| 125 | + $wgOut->addHTML( $field->render( $wgRequest->getText( $field->name ) ) . Xml::element( 'br' ) . "\n" ); |
| 126 | + } |
| 127 | + |
| 128 | + # Anonymous user, use recaptcha |
| 129 | + if ( $wgUser->getId() == 0 && $wgSpecialFormRecaptcha ) { |
| 130 | + require_once( 'recaptchalib.php' ); |
| 131 | + global $recaptcha_public_key; # same as used by Recaptcha plugin |
| 132 | + $wgOut->addHTML( recaptcha_get_html( $recaptcha_public_key ) ); |
| 133 | + } |
| 134 | + |
| 135 | + $wgOut->addHTML( Xml::element( 'input', array( 'type' => 'submit', |
| 136 | + 'value' => wfMsg( 'formsave' ) ) ) ); |
| 137 | + |
| 138 | + $wgOut->addHTML( Xml::closeElement( 'form' ) ); |
| 139 | + } |
| 140 | + |
| 141 | + function createArticle( $form ) { |
| 142 | + global $wgOut, $wgRequest, $wgLang, $wgUser, $wgSpecialFormRecaptcha; |
| 143 | + |
| 144 | + # Check recaptcha |
| 145 | + if ( $wgUser->getId() == 0 && $wgSpecialFormRecaptcha ) { |
| 146 | + require_once( 'recaptchalib.php' ); |
| 147 | + global $recaptcha_private_key; # same as used by Recaptcha plugin |
| 148 | + $resp = recaptcha_check_answer( |
| 149 | + $recaptcha_private_key, |
| 150 | + $_SERVER['REMOTE_ADDR'], |
| 151 | + $wgRequest->getText( 'recaptcha_challenge_field' ), |
| 152 | + $wgRequest->getText( 'recaptcha_response_field' ) |
| 153 | + ); |
| 154 | + |
| 155 | + if ( !$resp->is_valid ) { |
| 156 | + $this->showForm( $form, wfMsg( 'formbadrecaptcha' ) ); |
| 157 | + return; |
| 158 | + } |
| 159 | + } |
| 160 | + |
| 161 | + # Check for required fields |
| 162 | + $missedFields = array(); |
| 163 | + |
| 164 | + foreach ( $form->fields as $name => $field ) { |
| 165 | + $value = $wgRequest->getText( $name ); |
| 166 | + if ( $field->isOptionTrue( 'required' ) && ( is_null( $value ) || strlen( $value ) == 0 ) ) { |
| 167 | + $missedFields[] = $field->label; |
| 168 | + } |
| 169 | + } |
| 170 | + |
| 171 | + # On error, show the form again with some error text. |
| 172 | + $missedFieldsCount = count( $missedFields ); |
| 173 | + if ( $missedFieldsCount > 0 ) { |
| 174 | + $msg = wfMsgExt( 'formrequiredfielderror', 'parsemag', $wgLang->listToText( $missedFields ), $missedFieldsCount ); |
| 175 | + $this->showForm( $form, $msg ); |
| 176 | + return; |
| 177 | + } |
| 178 | + |
| 179 | + # First, we make sure we have all the titles |
| 180 | + $nt = array(); |
| 181 | + |
| 182 | + for ( $i = 0; $i < count( $form->template ); $i++ ) { |
| 183 | + |
| 184 | + $namePattern = $form->namePattern[$i]; |
| 185 | + $template = $form->template[$i]; |
| 186 | + |
| 187 | + if ( !$namePattern || !$template ) { |
| 188 | + $wgOut->showErrorPage( 'formindexmismatch-title', 'formindexmismatch', array( $i ) ); |
| 189 | + return; |
| 190 | + } |
| 191 | + |
| 192 | + wfDebug( __METHOD__ . ": for index '$i', namePattern = '$namePattern' and template = '$template'.\n" ); |
| 193 | + |
| 194 | + $title = $this->makeTitle( $form, $namePattern ); |
| 195 | + |
| 196 | + $nt[$i] = Title::newFromText( $title ); |
| 197 | + |
| 198 | + if ( !$nt[$i] ) { |
| 199 | + $wgOut->showErrorPage( 'formbadpagename', 'formbadpagenametext', array( $title ) ); |
| 200 | + return; |
| 201 | + } |
| 202 | + |
| 203 | + if ( $nt[$i]->getArticleID() != 0 ) { |
| 204 | + $wgOut->showErrorPage( 'formarticleexists', 'formarticleexists', array( $title ) ); |
| 205 | + return; |
| 206 | + } |
| 207 | + } |
| 208 | + |
| 209 | + # At this point, all $nt titles should be valid, although we're subject to race conditions. |
| 210 | + for ( $i = 0; $i < count( $form->template ); $i++ ) { |
| 211 | + |
| 212 | + $template = $form->template[$i]; |
| 213 | + |
| 214 | + $text = "{{subst:$template"; |
| 215 | + |
| 216 | + foreach ( $form->fields as $name => $field ) { |
| 217 | + # FIXME: strip/escape template-related chars (|, =, }}) |
| 218 | + $text .= "|$name=" . $wgRequest->getText( $name ); |
| 219 | + } |
| 220 | + |
| 221 | + $text .= '}}'; |
| 222 | + |
| 223 | + if ( !$this->checkSave( $nt[$i], $text ) ) { |
| 224 | + # Just break here; output already sent |
| 225 | + return; |
| 226 | + } |
| 227 | + |
| 228 | + $title = $nt[$i]->GetPrefixedText(); |
| 229 | + |
| 230 | + wfDebug( __METHOD__ . ": saving article with index '$i' and title '$title'\n" ); |
| 231 | + |
| 232 | + $article = new Article( $nt[$i] ); |
| 233 | + |
| 234 | + $status = $article->doEdit( $text, wfMsg( 'formsavesummary', $form->name ), EDIT_NEW ); |
| 235 | + if ( $status === false || ( is_object( $status ) && !$status->isOK() ) ) { |
| 236 | + $wgOut->showErrorPage( 'formsaveerror', 'formsaveerrortext', array( $title ) ); |
| 237 | + return; # Don't continue |
| 238 | + } |
| 239 | + } |
| 240 | + |
| 241 | + # Redirect to the first article |
| 242 | + if ( $nt && $nt[0] ) { |
| 243 | + $wgOut->redirect( $nt[0]->getFullURL() ); |
| 244 | + } |
| 245 | + } |
| 246 | + |
| 247 | + function makeTitle( $form, $pattern ) { |
| 248 | + global $wgRequest; |
| 249 | + |
| 250 | + $title = $pattern; |
| 251 | + |
| 252 | + foreach ( $form->fields as $name => $field ) { |
| 253 | + $title = preg_replace( "/{{\{$name\}}}/", $wgRequest->getText( $name ), $title ); |
| 254 | + } |
| 255 | + |
| 256 | + return $title; |
| 257 | + } |
| 258 | + |
| 259 | + # Had to crib some checks from EditPage.php, since they're not done in Article.php |
| 260 | + function checkSave( $nt, $text ) { |
| 261 | + global $wgSpamRegex, $wgFilterCallback, $wgUser, $wgMaxArticleSize, $wgOut; |
| 262 | + |
| 263 | + $matches = array(); |
| 264 | + $errortext = ''; |
| 265 | + |
| 266 | + $editPage = new FakeEditPage( $nt ); |
| 267 | + |
| 268 | + # FIXME: more specific errors, copied from EditPage.php |
| 269 | + if ( $wgSpamRegex && preg_match( $wgSpamRegex, $text, $matches ) ) { |
| 270 | + $wgOut->showErrorPage( 'formsaveerror', 'formsaveerrortext' ); |
| 271 | + return false; |
| 272 | + } else if ( $wgFilterCallback && $wgFilterCallback( $nt, $text, 0 ) ) { |
| 273 | + $wgOut->showErrorPage( 'formsaveerror', 'formsaveerrortext' ); |
| 274 | + return false; |
| 275 | + } else if ( !wfRunHooks( 'EditFilter', array( $editPage, $text, 0, &$errortext ) ) ) { |
| 276 | + # Hooks usually print their own error |
| 277 | + return false; |
| 278 | + } else if ( $errortext != '' ) { |
| 279 | + $wgOut->showErrorPage( 'formsaveerror', 'formsaveerrortext' ); |
| 280 | + return false; |
| 281 | + } else if ( $wgUser->isBlockedFrom( $nt, false ) ) { |
| 282 | + $wgOut->showErrorPage( 'formsaveerror', 'formsaveerrortext' ); |
| 283 | + return false; |
| 284 | + } else if ( (int)( strlen( $text ) / 1024 ) > $wgMaxArticleSize ) { |
| 285 | + $wgOut->showErrorPage( 'formsaveerror', 'formsaveerrortext' ); |
| 286 | + return false; |
| 287 | + } else if ( !$wgUser->isAllowed( 'edit' ) ) { |
| 288 | + $wgOut->showErrorPage( 'formsaveerror', 'formsaveerrortext' ); |
| 289 | + return false; |
| 290 | + } else if ( wfReadOnly() ) { |
| 291 | + $wgOut->showErrorPage( 'formsaveerror', 'formsaveerrortext' ); |
| 292 | + return false; |
| 293 | + } else if ( $wgUser->pingLimiter() ) { |
| 294 | + $wgOut->showErrorPage( 'formsaveerror', 'formsaveerrortext' ); |
| 295 | + return false; |
| 296 | + } |
| 297 | + |
| 298 | + return true; |
| 299 | + } |
| 300 | +} |
| 301 | + |
| 302 | +# Dummy class for extensions that support EditFilter hook |
| 303 | +class FakeEditPage { |
| 304 | + var $mTitle; |
| 305 | + |
| 306 | + function FakeEditPage( &$nt ) { |
| 307 | + $this->mTitle = $nt; |
| 308 | + } |
| 309 | +} |
| 310 | + |
| 311 | +class Form { |
| 312 | + var $name; |
| 313 | + var $title; |
| 314 | + var $template; |
| 315 | + var $instructions; |
| 316 | + var $fields; |
| 317 | + var $namePattern; |
| 318 | + |
| 319 | + function Form( $name, $text ) { |
| 320 | + $this->name = $name; |
| 321 | + $this->title = wfMsgForContent( 'formtitlepattern', $name ); |
| 322 | + $this->template = array(); |
| 323 | + $this->template[0] = wfMsgForContent( 'formtemplatepattern', $name ); |
| 324 | + |
| 325 | + $this->fields = array(); |
| 326 | + $this->namePattern = array(); |
| 327 | + $this->instructions = null; |
| 328 | + |
| 329 | + # XXX: may be some faster ways to do this |
| 330 | + $lines = explode( "\n", $text ); |
| 331 | + |
| 332 | + foreach ( $lines as $line ) { |
| 333 | + |
| 334 | + if ( preg_match( '/^(\w+)=(.*)$/', $line, $matches ) ) { |
| 335 | + if ( strcasecmp( $matches[1], 'template' ) == 0 ) { |
| 336 | + $this->template[0] = $matches[2]; |
| 337 | + } else if ( preg_match( '/template(\d+)/i', $matches[1], $tmatches ) ) { |
| 338 | + $this->template[intval( $tmatches[1] )] = $matches[2]; |
| 339 | + } else if ( strcasecmp( $matches[1], 'namePattern' ) == 0 ) { |
| 340 | + $this->namePattern[0] = $matches[2]; |
| 341 | + } else if ( preg_match( '/namePattern(\d+)/i', $matches[1], $tmatches ) ) { |
| 342 | + $this->namePattern[intval( $tmatches[1] )] = $matches[2]; |
| 343 | + } else if ( strcasecmp( $matches[1], 'title' ) == 0 ) { |
| 344 | + $this->title = $matches[2]; |
| 345 | + } else if ( strcasecmp( $matches[1], 'instructions' ) == 0 ) { |
| 346 | + $this->instructions = $matches[2]; |
| 347 | + wfDebug( __METHOD__ . ": Got instructions: '" . $this->instructions . "'.\n" ); |
| 348 | + } else { |
| 349 | + wfDebug( __METHOD__ . ": unknown form attribute '$matches[1]'; skipping.\n" ); |
| 350 | + } |
| 351 | + } else if ( preg_match( '/^(\w+)\|([^\|]+)\|(\w+)(\|([^\|]+)(\|(.*))?)?$/', $line, $matches ) ) { |
| 352 | + # XXX: build an inheritance tree for different kinds of fields |
| 353 | + $field = new FormField(); |
| 354 | + $field->setName( $matches[1] ); |
| 355 | + $field->setLabel( $matches[2] ); |
| 356 | + $field->setFieldType( $matches[3] ); |
| 357 | + if ( count( $matches ) > 4 && $matches[4] ) { |
| 358 | + $field->setDescription( $matches[5] ); |
| 359 | + if ( count( $matches ) > 6 && $matches[6] ) { |
| 360 | + $rawOptions = explode( ',', $matches[7] ); |
| 361 | + foreach ( $rawOptions as $rawOption ) { |
| 362 | + if ( preg_match( '/^(\w+)=(.+)/', $rawOption, $optMatches ) ) { |
| 363 | + $field->setOption( $optMatches[1], $optMatches[2] ); |
| 364 | + } else { |
| 365 | + wfDebug( __METHOD__ . ": unrecognized form field option: '$rawOption'; skipping.\n" ); |
| 366 | + } |
| 367 | + } |
| 368 | + } |
| 369 | + } |
| 370 | + $this->fields[$field->name] = $field; |
| 371 | + } else { |
| 372 | + wfDebug( __METHOD__ . ": unrecognized form line: '$line'; skipping.\n" ); |
| 373 | + } |
| 374 | + } |
| 375 | + } |
| 376 | +} |
| 377 | + |
| 378 | +class FormField { |
| 379 | + var $name; |
| 380 | + var $type; |
| 381 | + var $label; |
| 382 | + var $description; |
| 383 | + var $options; |
| 384 | + |
| 385 | + function FormField() { |
| 386 | + $this->name = null; |
| 387 | + $this->type = null; |
| 388 | + $this->label = null; |
| 389 | + $this->description = null; |
| 390 | + $this->options = array(); |
| 391 | + } |
| 392 | + |
| 393 | + function setName( $name ) { |
| 394 | + $this->name = $name; |
| 395 | + } |
| 396 | + |
| 397 | + function setFieldType( $type ) { |
| 398 | + $this->type = $type; |
| 399 | + } |
| 400 | + |
| 401 | + function setLabel( $label ) { |
| 402 | + $this->label = $label; |
| 403 | + } |
| 404 | + |
| 405 | + function setDescription( $description ) { |
| 406 | + $this->description = $description; |
| 407 | + } |
| 408 | + |
| 409 | + function setOption( $key, $value ) { |
| 410 | + $this->options[$key] = $value; |
| 411 | + } |
| 412 | + |
| 413 | + function getOption( $key, $default = null ) { |
| 414 | + if ( array_key_exists( $key, $this->options ) ) { |
| 415 | + return $this->options[$key]; |
| 416 | + } else { |
| 417 | + return $default; |
| 418 | + } |
| 419 | + } |
| 420 | + |
| 421 | + function isOptionTrue( $key, $default = false ) { |
| 422 | + $value = $this->getOption( $key, $default ); |
| 423 | + return ( ( strcasecmp( $value, 'on' ) == 0 ) || |
| 424 | + ( strcasecmp( $value, 'yes' ) == 0 ) || |
| 425 | + ( strcasecmp( $value, 'true' ) == 0 ) || |
| 426 | + ( strcasecmp( $value, '1' ) == 0 ) ); |
| 427 | + } |
| 428 | + |
| 429 | + function render( $def = null ) { |
| 430 | + global $wgOut; |
| 431 | + |
| 432 | + switch( $this->type ) { |
| 433 | + case 'textarea': |
| 434 | + return Xml::openElement( 'h2' ) . |
| 435 | + Xml::element( 'label', array( 'for' => $this->name ), $this->label ) . |
| 436 | + Xml::closeElement( 'h2' ) . |
| 437 | + ( ( $this->description ) ? |
| 438 | + ( Xml::openElement( 'div' ) . $wgOut->parse( $this->description ) . Xml::closeElement( 'div' ) ) : '' ) . |
| 439 | + Xml::openElement( 'textarea', |
| 440 | + array( |
| 441 | + 'name' => $this->name, |
| 442 | + 'id' => $this->name, |
| 443 | + 'rows' => $this->getOption( 'rows', 6 ), |
| 444 | + 'cols' => $this->getOption( 'cols', 80 ) |
| 445 | + ) |
| 446 | + ) . |
| 447 | + ( ( is_null( $def ) ) ? '' : $def ) . |
| 448 | + Xml::closeElement( 'textarea' ); |
| 449 | + break; |
| 450 | + case 'text': |
| 451 | + return Xml::element( 'label', array( 'for' => $this->name ), $this->label ) . wfMsg( 'colon-separator' ) . |
| 452 | + Xml::element( 'input', |
| 453 | + array( |
| 454 | + 'type' => 'text', |
| 455 | + 'name' => $this->name, |
| 456 | + 'id' => $this->name, |
| 457 | + 'value' => ( ( is_null( $def ) ) ? '' : $def ), |
| 458 | + 'size' => $this->getOption( 'size', 30 ) |
| 459 | + ) |
| 460 | + ); |
| 461 | + break; |
| 462 | + case 'checkbox': |
| 463 | + $attrs = array( |
| 464 | + 'type' => 'checkbox', |
| 465 | + 'name' => $this->name, |
| 466 | + 'id' => $this->name |
| 467 | + ); |
| 468 | + if ( $def == 'checked' ) { |
| 469 | + $attrs['checked'] = 'checked'; |
| 470 | + } |
| 471 | + return Xml::element( 'label', array( 'for' => $this->name ), $this->label ) . wfMsg( 'colon-separator' ) . |
| 472 | + Xml::element( 'input', $attrs ); |
| 473 | + break; |
| 474 | + case 'radio': |
| 475 | + $items = array(); |
| 476 | + $rawitems = explode( ';', $this->getOption( 'items' ) ); |
| 477 | + foreach ( $rawitems as $item ) { |
| 478 | + $attrs = array( |
| 479 | + 'type' => 'radio', |
| 480 | + 'name' => $this->name, |
| 481 | + 'value' => $item |
| 482 | + ); |
| 483 | + if ( $item == $def ) { |
| 484 | + $attrs['checked'] = 'checked'; |
| 485 | + } |
| 486 | + $items[] = Xml::openElement( 'input', $attrs ) . |
| 487 | + Xml::element( 'label', null, $item ) . |
| 488 | + Xml::closeElement( 'input' ); |
| 489 | + } |
| 490 | + return Xml::element( 'span', null, $this->label ) . Xml::element( 'br' ) . implode( '', $items ); |
| 491 | + break; |
| 492 | + case 'select': |
| 493 | + $items = array(); |
| 494 | + $rawitems = explode( ';', $this->getOption( 'items' ) ); |
| 495 | + foreach ( $rawitems as $item ) { |
| 496 | + $items[] = Xml::element( 'option', |
| 497 | + ( $item == $def ) ? array( 'selected' => 'selected' ) : null, |
| 498 | + $item ); |
| 499 | + } |
| 500 | + |
| 501 | + return Xml::element( 'label', array( 'for' => $this->name ), $this->label ) . wfMsg( 'colon-separator' ) . |
| 502 | + Xml::openElement( 'select', array( 'name' => $this->name, 'id' => $this->name ) ) . |
| 503 | + implode( '', $items ) . |
| 504 | + Xml::closeElement( 'select' ); |
| 505 | + break; |
| 506 | + default: |
| 507 | + wfDebug( __METHOD__ . ": unknown form field type '$this->type', skipping.\n" ); |
| 508 | + return ''; |
| 509 | + } |
| 510 | + } |
| 511 | +} |
\ No newline at end of file |
Property changes on: trunk/extensions/Form/Form.body.php |
___________________________________________________________________ |
Name: svn:eol-style |
1 | 512 | + native |
Index: trunk/extensions/Form/MediaWiki-Sample-form.wiki |
— | — | @@ -0,0 +1,9 @@ |
| 2 | +title=Ew-nay Ample-say |
| 3 | +namePattern={{{topic}}} |
| 4 | +instructions=You can use this page to create a new article on a sample topic. |
| 5 | +topic|Topic|text|Topic of the article. |
| 6 | +purpose|Purpose|select|Purpose of the |
| 7 | +article|items=Business;Pleasure;Other |
| 8 | +intro|Introduction|textarea|An introductory paragraph about the topic. |
| 9 | +color|Color|radio|Color of the article|items=Red;Blue;Green |
| 10 | +conclusion|Conclusion|textarea|The conclusions of the topic. |
Property changes on: trunk/extensions/Form/MediaWiki-Sample-form.wiki |
___________________________________________________________________ |
Name: svn:eol-style |
1 | 11 | + native |
Index: trunk/extensions/Form/TODO |
— | — | @@ -0,0 +1,18 @@ |
| 2 | ++ set title correctly |
| 3 | +- add a token to session, store it in the form, and check that they |
| 4 | + match on submit, to prevent automated creation |
| 5 | ++ create a new article on submit |
| 6 | ++ required/optional fields |
| 7 | +- add a bit of text to indicate required fields |
| 8 | +- client-side validation of required fields |
| 9 | ++ check for existing article before saving |
| 10 | ++ add a default value if passed in using GET |
| 11 | ++ test setting custom title in form description |
| 12 | ++ test setting custom template in form description |
| 13 | ++ parse instructions from wikitext to HTML |
| 14 | ++ parse descriptions from wikitext to HTML |
| 15 | +- automatic type-ahead fields |
| 16 | ++ create more than one article from one form |
| 17 | +- text field validation with regexes on client and server |
| 18 | +- file upload fields (for uploading an associated image) |
| 19 | +- add new page creations to a special:log file |
Property changes on: trunk/extensions/Form/TODO |
___________________________________________________________________ |
Name: svn:eol-style |
1 | 20 | + native |
Index: trunk/extensions/Form/Form.i18n.php |
— | — | @@ -0,0 +1,1690 @@ |
| 2 | +<?php |
| 3 | +/** |
| 4 | + * Form.i18n.php -- I18N for form-based interface to start new pages |
| 5 | + * Copyright 2007 Vinismo, Inc. (http://vinismo.com/) |
| 6 | + * |
| 7 | + * This program is free software; you can redistribute it and/or modify |
| 8 | + * it under the terms of the GNU General Public License as published by |
| 9 | + * the Free Software Foundation; either version 2 of the License, or |
| 10 | + * (at your option) any later version. |
| 11 | + * |
| 12 | + * This program is distributed in the hope that it will be useful, |
| 13 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 14 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 15 | + * GNU General Public License for more details. |
| 16 | + * |
| 17 | + * You should have received a copy of the GNU General Public License |
| 18 | + * along with this program; if not, write to the Free Software |
| 19 | + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
| 20 | + * |
| 21 | + * @author Evan Prodromou <evan@vinismo.com> |
| 22 | + * @ingroup Extensions |
| 23 | + */ |
| 24 | + |
| 25 | +$messages = array(); |
| 26 | + |
| 27 | +/** English |
| 28 | + * @author Evan Prodromou <evan@vinismo.com> |
| 29 | + */ |
| 30 | +$messages['en'] = array( |
| 31 | + 'form-desc' => 'A [[Special:Form|form interface]] to start new pages', |
| 32 | + 'form' => 'Form', |
| 33 | + 'formnoname' => 'No form name', |
| 34 | + 'formnonametext' => 'You must provide a form name, like "Special:Form/Nameofform".', |
| 35 | + 'formbadname' => 'Bad form name', |
| 36 | + 'formbadnametext' => 'There is no form by that name.', |
| 37 | + 'formpattern' => '$1-form', |
| 38 | + 'formtemplatepattern' => '$1', # Do not translate this message |
| 39 | + 'formtitlepattern' => 'Add new $1', |
| 40 | + 'formsave' => 'Save', |
| 41 | + 'formindexmismatch-title' => 'Name pattern and template mismatch', |
| 42 | + 'formindexmismatch' => 'This form has mismatched name patterns and templates starting at index $1.', |
| 43 | + 'formarticleexists' => 'Page exists', |
| 44 | + 'formarticleexiststext' => 'The page [[$1]] already exists.', |
| 45 | + 'formbadpagename' => 'Bad page name', |
| 46 | + 'formbadrecaptcha' => 'Incorrect values for reCaptcha. Try again.', |
| 47 | + 'formbadpagenametext' => 'The form data you entered makes a bad page name, "$1".', |
| 48 | + 'formrequiredfielderror' => 'The {{PLURAL:$2|field $1 is|fields $1 are}} required for this form. |
| 49 | +Please fill {{PLURAL:$2|it|them}} in.', |
| 50 | + 'formsavesummary' => 'New page using [[Special:Form/$1|form $1]]', |
| 51 | + 'formsaveerror' => 'Error saving form', |
| 52 | + 'formsaveerrortext' => 'There was an unknown error saving page \'$1\'.', |
| 53 | +); |
| 54 | + |
| 55 | +/** Message documentation (Message documentation) |
| 56 | + * @author Fryed-peach |
| 57 | + * @author Jon Harald Søby |
| 58 | + * @author Purodha |
| 59 | + * @author Raymond |
| 60 | + */ |
| 61 | +$messages['qqq'] = array( |
| 62 | + 'form-desc' => 'Short description of the Form extension, shown on [[Special:Version]]. Do not translate or change links.', |
| 63 | + 'formpattern' => 'The pattern of page names of form definitions. $1 is a given name for a form definition.', |
| 64 | + 'formsave' => '{{Identical|Save}}', |
| 65 | + 'formrequiredfielderror' => '* $1 is a comma separated list of missing fields |
| 66 | +* $2 is the number of missing fields', |
| 67 | +); |
| 68 | + |
| 69 | +/** Afrikaans (Afrikaans) |
| 70 | + * @author SPQRobin |
| 71 | + */ |
| 72 | +$messages['af'] = array( |
| 73 | + 'formsave' => 'Stoor', |
| 74 | +); |
| 75 | + |
| 76 | +/** Aragonese (Aragonés) |
| 77 | + * @author Juanpabl |
| 78 | + */ |
| 79 | +$messages['an'] = array( |
| 80 | + 'formsave' => 'Alzar', |
| 81 | +); |
| 82 | + |
| 83 | +/** Arabic (العربية) |
| 84 | + * @author Meno25 |
| 85 | + * @author OsamaK |
| 86 | + */ |
| 87 | +$messages['ar'] = array( |
| 88 | + 'form-desc' => '[[Special:Form|واجهة استمارة]] لبدء الصفحات الجديدة', |
| 89 | + 'form' => 'استمارة', |
| 90 | + 'formnoname' => 'لا اسم استمارة', |
| 91 | + 'formnonametext' => 'يجب أن توفر اسم استمارة، مثل "Special:Form/Nameofform".', |
| 92 | + 'formbadname' => 'اسم استمارة سيء', |
| 93 | + 'formbadnametext' => 'لا توجد استمارة بهذا الاسم.', |
| 94 | + 'formpattern' => '$1-استمارة', |
| 95 | + 'formtitlepattern' => 'أضف $1 جديدا', |
| 96 | + 'formsave' => 'احفظ', |
| 97 | + 'formindexmismatch-title' => 'نمط الاسم والقالب لا يتطابقان', |
| 98 | + 'formindexmismatch' => 'هذه الاستمارة بها أنماط أسماء وقوالب غير متطابقة بدءا عند الفهرس $1.', |
| 99 | + 'formarticleexists' => 'الصفحة موجودة', |
| 100 | + 'formarticleexiststext' => 'الصفحة [[$1]] موجودة بالفعل.', |
| 101 | + 'formbadpagename' => 'اسم صفحة سيء', |
| 102 | + 'formbadrecaptcha' => 'قيم غير صحيحة لreCaptcha. حاول مرة ثانية.', |
| 103 | + 'formbadpagenametext' => 'بيانات الاستمارة التي أدخلتها تصنع اسم صفحة سيئا، "$1".', |
| 104 | + 'formrequiredfielderror' => '{{PLURAL:$2||الحقل $1 مطلوب|الحقلان $1 مطلوبان|الحقول $1 مطلوبة}} لهذه الاستمارة. |
| 105 | +من فضلك {{PLURAL:$2||املأه|املأهما|املأها}}.', |
| 106 | + 'formsavesummary' => 'صفحة جديدة باستخدام [[Special:Form/$1|الاستمارة $1]]', |
| 107 | + 'formsaveerror' => 'خطأ في حفظ الاستمارة', |
| 108 | + 'formsaveerrortext' => "حدث خطأ غير معروف أثناء حفظ الاستمارة '$1'.", |
| 109 | +); |
| 110 | + |
| 111 | +/** Egyptian Spoken Arabic (مصرى) |
| 112 | + * @author Meno25 |
| 113 | + */ |
| 114 | +$messages['arz'] = array( |
| 115 | + 'form-desc' => '[[Special:Form|واجهة استمارة]] لبدء الصفحات الجديدة', |
| 116 | + 'form' => 'استمارة', |
| 117 | + 'formnoname' => 'لا اسم استمارة', |
| 118 | + 'formnonametext' => 'يجب أن توفر اسم استمارة، مثل "Special:Form/Nameofform".', |
| 119 | + 'formbadname' => 'اسم استمارة سيء', |
| 120 | + 'formbadnametext' => 'لا توجد استمارة بهذا الاسم.', |
| 121 | + 'formpattern' => '$1-استمارة', |
| 122 | + 'formtitlepattern' => 'أضف $1 جديدا', |
| 123 | + 'formsave' => 'حفظ', |
| 124 | + 'formindexmismatch-title' => 'نمط الاسم والقالب لا يتطابقان', |
| 125 | + 'formindexmismatch' => 'هذه الاستمارة بها أنماط أسماء وقوالب غير متطابقة بدءا عند الفهرس $1.', |
| 126 | + 'formarticleexists' => 'الصفحة موجودة', |
| 127 | + 'formarticleexiststext' => 'الصفحة [[$1]] موجودة بالفعل.', |
| 128 | + 'formbadpagename' => 'اسم صفحة سيء', |
| 129 | + 'formbadrecaptcha' => 'قيم غير صحيحة لreCaptcha. حاول مرة ثانية.', |
| 130 | + 'formbadpagenametext' => 'بيانات الاستمارة التى أدخلتها تصنع اسم صفحة سيئا، "$1".', |
| 131 | + 'formrequiredfielderror' => '{{PLURAL:$2|الحقل $1 مطلوب|الحقول $1 مطلوبة}} لهذه الإستمارة. |
| 132 | +من فضلك {{PLURAL:$2|املأه|املأها}}.', |
| 133 | + 'formsavesummary' => 'صفحة جديدة باستخدام [[Special:Form/$1|الاستمارة $1]]', |
| 134 | + 'formsaveerror' => 'خطأ فى حفظ الاستمارة', |
| 135 | + 'formsaveerrortext' => "حدث خطأ غير معروف أثناء حفظ الاستمارة '$1'.", |
| 136 | +); |
| 137 | + |
| 138 | +/** Bikol Central (Bikol Central) |
| 139 | + * @author Filipinayzd |
| 140 | + */ |
| 141 | +$messages['bcl'] = array( |
| 142 | + 'formtitlepattern' => 'Magdugang nin Bâgong $1', |
| 143 | + 'formsave' => 'Itagama', |
| 144 | +); |
| 145 | + |
| 146 | +/** Belarusian (Taraškievica orthography) (Беларуская (тарашкевіца)) |
| 147 | + * @author EugeneZelenko |
| 148 | + * @author Jim-by |
| 149 | + * @author Red Winged Duck |
| 150 | + */ |
| 151 | +$messages['be-tarask'] = array( |
| 152 | + 'form-desc' => '[[Special:Form|Форма інтэрфэйсу]] для стварэньня новых старонак', |
| 153 | + 'form' => 'Форма', |
| 154 | + 'formnoname' => 'Няма назвы формы', |
| 155 | + 'formnonametext' => 'Вам трэба падаць назву формы, напрыклад, «Special:Form/Назва_формы».', |
| 156 | + 'formbadname' => 'Няслушная назва формы', |
| 157 | + 'formbadnametext' => 'Няма формы з такой назвай.', |
| 158 | + 'formpattern' => 'форма $1', |
| 159 | + 'formtitlepattern' => 'Дадаць новую $1', |
| 160 | + 'formsave' => 'Захаваць', |
| 161 | + 'formindexmismatch-title' => 'Узор назвы і шаблён не спалучаюцца', |
| 162 | + 'formindexmismatch' => 'Гэтая форма ўтрымлівае ўзоры назваў і шаблёнаў, якія не спалучаюцца, пачынаючы зь індэксу $1.', |
| 163 | + 'formarticleexists' => 'Старонка існуе', |
| 164 | + 'formarticleexiststext' => 'Старонка [[$1]] ужо існуе.', |
| 165 | + 'formbadpagename' => 'Няслушная назва старонкі', |
| 166 | + 'formbadrecaptcha' => 'Памылковыя значэньні reCaptcha. Паспрабуйце ізноў.', |
| 167 | + 'formbadpagenametext' => 'Зьвесткі, якія Вы ўвялі ў форме, робяць назву старонкі няслушнай, «$1».', |
| 168 | + 'formrequiredfielderror' => 'У гэтай форме {{PLURAL:$2|патрабуецца поле|патрабуюцца палі}} $1. |
| 169 | +Калі ласка, запоўніце {{PLURAL:$2|яго|іх}}.', |
| 170 | + 'formsavesummary' => 'Новая старонка створаная з дапамогай [[Special:Form/$1|формы $1]]', |
| 171 | + 'formsaveerror' => 'Памылка захаваньня формы', |
| 172 | + 'formsaveerrortext' => "Адбылася невядомая памылка пад час захаваньня старонкі '$1'.", |
| 173 | +); |
| 174 | + |
| 175 | +/** Bulgarian (Български) |
| 176 | + * @author DCLXVI |
| 177 | + */ |
| 178 | +$messages['bg'] = array( |
| 179 | + 'form-desc' => '[[Special:Form|Формуляр]] за започване на нови страници', |
| 180 | + 'form' => 'Формуляр', |
| 181 | + 'formnoname' => 'Липсва име на формуляра', |
| 182 | + 'formnonametext' => 'Необходимо е да се посочи име на формуляр, напр. „Special:Form/ИмеНаФормуляр“', |
| 183 | + 'formbadname' => 'Грешно име на формуляр', |
| 184 | + 'formbadnametext' => 'Не съществува формуляр с това име.', |
| 185 | + 'formsave' => 'Съхранение', |
| 186 | + 'formarticleexists' => 'Страницата съществува', |
| 187 | + 'formarticleexiststext' => 'Страницата [[$1]] вече съществува.', |
| 188 | + 'formbadpagename' => 'Грешно име на страница', |
| 189 | + 'formbadrecaptcha' => 'Неправилни стойности за reCaptcha. Опитайте отново.', |
| 190 | + 'formrequiredfielderror' => 'Този формуляр изисква {{PLURAL:$2|полето $1 да бъде попълнено|полетата $1 да бъдат попълнени}}. |
| 191 | +Необходимо е да {{PLURAL:$2|го попълните|ги попълните}}.', |
| 192 | + 'formsaveerror' => 'Грешка при съхранение на формуляра', |
| 193 | + 'formsaveerrortext' => "Възникна непозната грешка при опит да се съхрани страницата '$1'.", |
| 194 | +); |
| 195 | + |
| 196 | +/** Bengali (বাংলা) |
| 197 | + * @author Bellayet |
| 198 | + */ |
| 199 | +$messages['bn'] = array( |
| 200 | + 'form-desc' => 'নতুন পাতা শুরু করতে [[Special:Form|ফরম ইন্টারফেস]]', |
| 201 | + 'form' => 'ফরম', |
| 202 | + 'formnoname' => 'কোনো ফরম নাম নাই', |
| 203 | + 'formbadname' => 'মন্দ ফরম নাম', |
| 204 | + 'formbadnametext' => 'এই নামে কোনো ফরম নাই।', |
| 205 | + 'formpattern' => '$1-ফরম', |
| 206 | + 'formtitlepattern' => 'নতুন $1 যোগ', |
| 207 | + 'formsave' => 'সংরক্ষণ', |
| 208 | + 'formarticleexists' => 'পাতা রয়েছে', |
| 209 | + 'formbadpagename' => 'পাতার মন্দ নাম', |
| 210 | + 'formsaveerror' => 'ফরম সংরক্ষণে ত্রুটি', |
| 211 | +); |
| 212 | + |
| 213 | +/** Breton (Brezhoneg) |
| 214 | + * @author Fohanno |
| 215 | + * @author Fulup |
| 216 | + * @author Y-M D |
| 217 | + */ |
| 218 | +$messages['br'] = array( |
| 219 | + 'form-desc' => 'Un [[Special:Form|etrefas furmskrid]] evit kregiñ gant pajennoù nevez', |
| 220 | + 'form' => 'Furmskrid', |
| 221 | + 'formnoname' => 'Anv ebet', |
| 222 | + 'formnonametext' => 'Roit anv ar furmskrid, gant ar stumm "Ispisial:Furmskrid/AnvArFurmskrid".', |
| 223 | + 'formbadname' => 'Anv furmskrid fall', |
| 224 | + 'formbadnametext' => "N'eus furmskrid ebet gant an anv-se.", |
| 225 | + 'formpattern' => 'furmskrid-$1', |
| 226 | + 'formtitlepattern' => 'Ouzhpennañ un $1 nevez', |
| 227 | + 'formsave' => 'Enrollañ', |
| 228 | + 'formindexmismatch-title' => 'Ne glot ket livaoueg an anvioù gant ar patrom', |
| 229 | + 'formindexmismatch' => 'Ar furm skrid-mañ en deus patromoù ne glotont ket adalek $1.', |
| 230 | + 'formarticleexists' => 'Ar bajenn zo anezhi dija', |
| 231 | + 'formarticleexiststext' => 'Ar bajenn [[$1]] zo anezhi dija.', |
| 232 | + 'formbadpagename' => 'Anv fall evit ar bajenn', |
| 233 | + 'formbadrecaptcha' => 'Talvoudoù fall evit reCaptcha. Klaskit adarre.', |
| 234 | + 'formbadpagenametext' => 'Ar roadennoù o peus lakaet a grou un anv fall evit ar bajenn, "$1".', |
| 235 | + 'formrequiredfielderror' => "Ezhomm 'zo eus ar maezienn{{PLURAL:$2||où}} $1 er furmskrid. |
| 236 | +Mar plij leunit {{PLURAL:$2|anezhañ|anezho}}.", |
| 237 | + 'formsavesummary' => "Pajenn nevez oc'h implijout [[Special:Form/$1|ar furmskrid $1]]", |
| 238 | + 'formsaveerror' => 'Fazi en ur enrollañ ar furmskrid', |
| 239 | + 'formsaveerrortext' => "Ur fazi zo bet e-ser enrollañ ar bajenn '$1'.", |
| 240 | +); |
| 241 | + |
| 242 | +/** Bosnian (Bosanski) |
| 243 | + * @author CERminator |
| 244 | + */ |
| 245 | +$messages['bs'] = array( |
| 246 | + 'form-desc' => '[[Special:Form|Interfejs obrazac]] za započinjanje novih stranica', |
| 247 | + 'form' => 'Obrazac', |
| 248 | + 'formnoname' => 'Nema imena obrasca', |
| 249 | + 'formnonametext' => 'Morate navesti naziv obrasca, poput "Special:Form/Nameofform".', |
| 250 | + 'formbadname' => 'Loš naziv obrasca', |
| 251 | + 'formbadnametext' => 'Ne postoji obrazac s takvim imenom.', |
| 252 | + 'formpattern' => '$1-obrazac', |
| 253 | + 'formtitlepattern' => 'Dodaj novi $1', |
| 254 | + 'formsave' => 'Sačuvaj', |
| 255 | + 'formindexmismatch-title' => 'Naslov šeme i šablona se ne podudaraju', |
| 256 | + 'formindexmismatch' => 'Ovaj obrazac ne odgovara šemi imena i šablona koja započinje indeksom $1.', |
| 257 | + 'formarticleexists' => 'Stranica postoji', |
| 258 | + 'formarticleexiststext' => 'Stranica [[$1]] već postoji.', |
| 259 | + 'formbadpagename' => 'Loš naziv stranice', |
| 260 | + 'formbadrecaptcha' => 'Netačne vrijednosti za reCaptcha. Pokušajte ponovno.', |
| 261 | + 'formbadpagenametext' => 'Podaci iz obrasca koje ste unijeli su napravili pogrešno ime stranice, "$1".', |
| 262 | + 'formrequiredfielderror' => '{{PLURAL:$2|Polje $1 je neophodno|Polja $1 su neophodna}} za ovaj obrazac. |
| 263 | +Molimo popunite {{PLURAL:$2|ga|ih}}.', |
| 264 | + 'formsavesummary' => 'Nova stranica koristeći [[Special:Form/$1|obrazac $1]]', |
| 265 | + 'formsaveerror' => 'Greška pri spremanju obrasca', |
| 266 | + 'formsaveerrortext' => "Desila se nepoznata greška pri spremanju stranice '$1'.", |
| 267 | +); |
| 268 | + |
| 269 | +/** Catalan (Català) |
| 270 | + * @author Paucabot |
| 271 | + */ |
| 272 | +$messages['ca'] = array( |
| 273 | + 'form' => 'Formulari', |
| 274 | + 'formbadname' => 'Nom del formulari incorrecte', |
| 275 | + 'formtitlepattern' => 'Afegeix un nou $1', |
| 276 | + 'formsave' => 'Desa', |
| 277 | + 'formsaveerror' => 'Error desant el formulari', |
| 278 | +); |
| 279 | + |
| 280 | +/** Czech (Česky) |
| 281 | + * @author Danny B. |
| 282 | + * @author Li-sung |
| 283 | + * @author Matěj Grabovský |
| 284 | + */ |
| 285 | +$messages['cs'] = array( |
| 286 | + 'form' => 'Formulář', |
| 287 | + 'formnoname' => 'Nebyl zadán název formuláře', |
| 288 | + 'formnonametext' => 'Musíte zadat název formuláře ve tavru „Special:Form/Názevformuláře“', |
| 289 | + 'formbadname' => 'Špatný název formuláře', |
| 290 | + 'formbadnametext' => 'Formulář se zadaným názvem neexistuje', |
| 291 | + 'formpattern' => 'formulář-$1', |
| 292 | + 'formtitlepattern' => 'Přidat nový $1', |
| 293 | + 'formsave' => 'Uložit', |
| 294 | + 'formarticleexists' => 'Stránka existuje', |
| 295 | + 'formarticleexiststext' => 'Stránka [[$1]] už existuje', |
| 296 | + 'formbadpagename' => 'Špatný název stránky', |
| 297 | + 'formbadpagenametext' => "Údaj formuláře, který jste zadali tvoří chybný název stránky - ''$1''.", |
| 298 | + 'formrequiredfielderror' => 'Pole $1 {{plural:$2|je v tomto formuláři vyžadováno|jsou v tomto formuláři vyžadována}}. |
| 299 | +Prosíme, vyplňte {{plural:$2|jej|je}}.', |
| 300 | + 'formsavesummary' => 'Nová stránka pomocí [[Special:Form/$1|formuláře $1]]', |
| 301 | + 'formsaveerror' => 'Chyba při ukládání formuláře', |
| 302 | + 'formsaveerrortext' => "Při ukládání formuláře se vyskytla neznámá chyba: ''$1''.", |
| 303 | +); |
| 304 | + |
| 305 | +/** German (Deutsch) |
| 306 | + * @author Als-Holder |
| 307 | + * @author Melancholie |
| 308 | + * @author Umherirrender |
| 309 | + */ |
| 310 | +$messages['de'] = array( |
| 311 | + 'form-desc' => 'Eine [[Special:Form|Eingabemaske]] für das Erzeugen von neuen Seiten', |
| 312 | + 'form' => 'Formular', |
| 313 | + 'formnoname' => 'Kein Formularname', |
| 314 | + 'formnonametext' => 'Du musst einen Formularnamen angeben, z. B. „{{#special:Form}}/Formularname“.', |
| 315 | + 'formbadname' => 'Falscher Formularname', |
| 316 | + 'formbadnametext' => 'Es gibt kein Formular mit diesem Namen.', |
| 317 | + 'formpattern' => '$1-Formular', |
| 318 | + 'formtitlepattern' => 'Füge neue $1 hinzu', |
| 319 | + 'formsave' => 'Speichern', |
| 320 | + 'formindexmismatch-title' => 'Ungleichgewicht zwischen Namensmustern und Vorlagen', |
| 321 | + 'formindexmismatch' => 'Dieses Formular hat ein Ungleichgewicht zwischen Namensmustern und Vorlagen, beginnend bei Index $1.', |
| 322 | + 'formarticleexists' => 'Seite bereits vorhanden', |
| 323 | + 'formarticleexiststext' => 'Die Seite „[[$1]]“ ist bereits vorhanden.', |
| 324 | + 'formbadpagename' => 'Unzulässiger Seitenname', |
| 325 | + 'formbadrecaptcha' => 'Ungültige Werte für reCaptcha. Versuche es nochmals.', |
| 326 | + 'formbadpagenametext' => 'Die eingegebenen Formulardaten erzeugen einen unzulässigen Seitennamen: „$1“.', |
| 327 | + 'formrequiredfielderror' => '{{PLURAL:$2|Das Feld $1 ist ein Pfichtfeld|Die Felder $1 sind Pfichtfelder}}. |
| 328 | +Bitte fülle {{PLURAL:$2|es|sie}} aus.', |
| 329 | + 'formsavesummary' => 'Neue Seite, die auf dem [[Special:Form/$1|Formular $1]] basiert', |
| 330 | + 'formsaveerror' => 'Fehler beim Speichern des Formulares', |
| 331 | + 'formsaveerrortext' => 'Es gab einen unbekannten Fehler beim Speichern der Seite „$1“.', |
| 332 | +); |
| 333 | + |
| 334 | +/** German (formal address) (Deutsch (Sie-Form)) |
| 335 | + * @author Imre |
| 336 | + * @author Umherirrender |
| 337 | + */ |
| 338 | +$messages['de-formal'] = array( |
| 339 | + 'formnonametext' => 'Sie müssen einen Formularnamen angeben, z. B. „{{#special:Form}}/Formularname“.', |
| 340 | + 'formrequiredfielderror' => '{{PLURAL:$2|Das Feld $1 ist ein Pfichtfeld|Die Felder $1 sind Pfichtfelder}}. |
| 341 | +Bitte füllen Sie {{PLURAL:$2|es|sie}} aus.', |
| 342 | +); |
| 343 | + |
| 344 | +/** Lower Sorbian (Dolnoserbski) |
| 345 | + * @author Michawiki |
| 346 | + */ |
| 347 | +$messages['dsb'] = array( |
| 348 | + 'form-desc' => '[[Special:Form|Formular]] za napóranje nowych bokow', |
| 349 | + 'form' => 'Formular', |
| 350 | + 'formnoname' => 'Žedno formularowe mě', |
| 351 | + 'formnonametext' => 'Musyš formularowe mě pódaś, na pś. "Special:Form/Měformulara".', |
| 352 | + 'formbadname' => 'Wopacne formularowe mě', |
| 353 | + 'formbadnametext' => 'Njejo formular z tym mjenim.', |
| 354 | + 'formpattern' => '$1-formular', |
| 355 | + 'formtitlepattern' => 'Nowy $1 pśidaś', |
| 356 | + 'formsave' => 'Składowaś', |
| 357 | + 'formindexmismatch-title' => 'Mjenjowy muster a pśedłog se njewótpowědujotej', |
| 358 | + 'formindexmismatch' => 'Toś ten formular ma njejadnake mjenjowe mustry a pśedłogi, zachopinajucy se wót indeksa $1.', |
| 359 | + 'formarticleexists' => 'Bok eksistěrujo', |
| 360 | + 'formarticleexiststext' => 'bok [[$1]] južo eksistěrujo.', |
| 361 | + 'formbadpagename' => 'Wopacne mě boka', |
| 362 | + 'formbadrecaptcha' => 'Njepłaśiwe gódnoty za reCaptcha. Wopytaj hyšći raz.', |
| 363 | + 'formbadpagenametext' => 'Formularne daty, kótarež sy zapódał, napóraju njepłaśiwe mě boka, "$1".', |
| 364 | + 'formrequiredfielderror' => '{{PLURAL:$2|Pólo $1 jo trěbne|Póli $1 stej trěbnej|Póla $1 su trěbne|Póla $1 su trěbne}} za toś ten fromular. |
| 365 | +Pšosym wupołń {{PLURAL:$2|jo|jej|je|je}}.', |
| 366 | + 'formsavesummary' => 'Nowy bok z pomocu [[Special:Form/$1|formulara $1]]', |
| 367 | + 'formsaveerror' => 'Zmólka pśi składowanju formulara', |
| 368 | + 'formsaveerrortext' => "Njeznata zmólka jo nastała pśi składowanju boka '$1'.", |
| 369 | +); |
| 370 | + |
| 371 | +/** Greek (Ελληνικά) |
| 372 | + * @author Consta |
| 373 | + * @author Dada |
| 374 | + * @author Omnipaedista |
| 375 | + * @author ZaDiak |
| 376 | + */ |
| 377 | +$messages['el'] = array( |
| 378 | + 'form-desc' => 'Μια [[Special:Form|φόρμα επιφάνειας]] για έναρξη νέων σελίδων', |
| 379 | + 'form' => 'Φόρμα', |
| 380 | + 'formnoname' => 'Κανένα όνομα φόρμας', |
| 381 | + 'formbadname' => 'Κακό όνομα φόρμας', |
| 382 | + 'formbadnametext' => 'Δεν υπάρχει καμιά φόρμα με αυτό το όνομα.', |
| 383 | + 'formpattern' => '$1-φόρμα', |
| 384 | + 'formtitlepattern' => 'Προσθήκη νέου $1', |
| 385 | + 'formsave' => 'Αποθηκεύστε', |
| 386 | + 'formindexmismatch-title' => 'Αναντιστοιχία μεταξύ μοτίβου ονόματος και προτύπου', |
| 387 | + 'formindexmismatch' => 'Αυτή η φόρμα παρουσιάζει αναντιστοιχία μεταξύ μοτίβου ονόματος και προτύπου στον δείκτη $1.', |
| 388 | + 'formarticleexists' => 'Η σελίδα υπάρχει', |
| 389 | + 'formarticleexiststext' => 'Η σελίδα [[$1]] υπάρχει ήδη.', |
| 390 | + 'formbadpagename' => 'Κακό όνομα σελίδας', |
| 391 | + 'formsavesummary' => 'Νέα σελίδα που χρησιμοποιεί τη [[Special:Form/$1|φόρμα $1]]', |
| 392 | + 'formsaveerror' => 'Σφάλμα στην αποθήκευση της φόρμας', |
| 393 | + 'formsaveerrortext' => 'Παρουσιάστηκε άγνωστο σφάλμα κατά την αποθήκευση της σελίδας $ 1.', |
| 394 | +); |
| 395 | + |
| 396 | +/** Esperanto (Esperanto) |
| 397 | + * @author Melancholie |
| 398 | + * @author Michawiki |
| 399 | + * @author Yekrats |
| 400 | + */ |
| 401 | +$messages['eo'] = array( |
| 402 | + 'form' => 'Formulario', |
| 403 | + 'formnoname' => 'Neniu nomo de kamparo', |
| 404 | + 'formnonametext' => 'Vi devas provizi formularan nomon, ekzemple "Special:Form/NomoDeFormularo".', |
| 405 | + 'formbadname' => 'Malbona nomo de formularo', |
| 406 | + 'formbadnametext' => 'Ne estas formularo kun tiu nomo.', |
| 407 | + 'formpattern' => '$1-formularo', |
| 408 | + 'formtitlepattern' => 'Aldoni nova $1', |
| 409 | + 'formsave' => 'Konservi', |
| 410 | + 'formarticleexists' => 'Paĝo ekzistas', |
| 411 | + 'formarticleexiststext' => 'La paĝo [[$1]] jam ekzistas.', |
| 412 | + 'formbadpagename' => 'Fuŝa paĝnomo', |
| 413 | + 'formbadrecaptcha' => 'Malkorektaj valoroj por reCaptcha. Reprovu.', |
| 414 | + 'formrequiredfielderror' => 'La {{PLURAL:$2|kampo $1 estas deviga|kampoj $1 estas devigaj}} por ĉi tiu formulario. |
| 415 | +Bonvolu plenigi {{PLURAL:$2|ĝin|ilin}}.', |
| 416 | + 'formsaveerror' => 'Eraro konservante formularon', |
| 417 | + 'formsaveerrortext' => "Estis nekonata eraro konservante paĝon '$1'.", |
| 418 | +); |
| 419 | + |
| 420 | +/** Spanish (Español) |
| 421 | + * @author Crazymadlover |
| 422 | + * @author Imre |
| 423 | + * @author Sanbec |
| 424 | + */ |
| 425 | +$messages['es'] = array( |
| 426 | + 'form-desc' => 'Una [[Special:Form|interface de formulario]] para comenzar nuevas páginas', |
| 427 | + 'form' => 'Formulario', |
| 428 | + 'formnoname' => 'Formulario sin nombre', |
| 429 | + 'formnonametext' => 'Debes proveer un nombre de formulario, como "Special:Form/Nameofform".', |
| 430 | + 'formbadname' => 'Mal nombre de formulario', |
| 431 | + 'formbadnametext' => 'No har formulario para ese nombre', |
| 432 | + 'formpattern' => 'Formulario de $1', |
| 433 | + 'formtitlepattern' => 'Agregar nuevo $1', |
| 434 | + 'formsave' => 'Guardar', |
| 435 | + 'formindexmismatch-title' => 'No se corresponde el nombre del modelo y la plantilla', |
| 436 | + 'formindexmismatch' => 'Este formulario tiene nombres de patrones y plantillas que no coinciden, comenzando por $1.', |
| 437 | + 'formarticleexists' => 'La página existe', |
| 438 | + 'formarticleexiststext' => 'La página [[$1]] ya existe.', |
| 439 | + 'formbadpagename' => 'Mal nombre de página', |
| 440 | + 'formbadrecaptcha' => 'Valores incorrectos para reCaptcha. Intente nuevamente.', |
| 441 | + 'formbadpagenametext' => 'Los datos de formulario que ingresó hacen un mal nombre de página, "$1".', |
| 442 | + 'formrequiredfielderror' => 'Los {{PLURAL:$2|campo $1 es|campos $1 son}} requeridos para este formulario. |
| 443 | +Por favor {{PLURAL:$2|rellénelo|rellénelos}}.', |
| 444 | + 'formsavesummary' => 'Nueva página usando [[Special:Form/$1|formulario $1]]', |
| 445 | + 'formsaveerror' => 'Error grabando formulario', |
| 446 | + 'formsaveerrortext' => "Hubo un error desconocido grabando la página '$1'.", |
| 447 | +); |
| 448 | + |
| 449 | +/** Basque (Euskara) |
| 450 | + * @author An13sa |
| 451 | + * @author Kobazulo |
| 452 | + */ |
| 453 | +$messages['eu'] = array( |
| 454 | + 'form' => 'Formularioa', |
| 455 | + 'formsave' => 'Gorde', |
| 456 | + 'formarticleexists' => 'Orrialdea existitzen da', |
| 457 | +); |
| 458 | + |
| 459 | +/** Finnish (Suomi) |
| 460 | + * @author Centerlink |
| 461 | + * @author Cimon Avaro |
| 462 | + * @author Crt |
| 463 | + * @author Jack Phoenix |
| 464 | + * @author ZeiP |
| 465 | + */ |
| 466 | +$messages['fi'] = array( |
| 467 | + 'form-desc' => '[[Special:Form|Lomake]] uusien sivujen luomiseen', |
| 468 | + 'form' => 'Lomake', |
| 469 | + 'formnoname' => 'Ei lomakkeen nimeä', |
| 470 | + 'formnonametext' => 'Sinun tulee antaa lomakkeen nimi, kuten "Special:Form/Lomakkeennimi".', |
| 471 | + 'formbadname' => 'Huono lomakkeen nimi', |
| 472 | + 'formbadnametext' => 'Haluamallasi nimellä ei ole lomaketta.', |
| 473 | + 'formpattern' => '$1-lomake', |
| 474 | + 'formtitlepattern' => 'Lisää uusi $1', |
| 475 | + 'formsave' => 'Tallenna', |
| 476 | + 'formindexmismatch-title' => 'Nimimalli- ja mallinetäsmäämättömyys', |
| 477 | + 'formindexmismatch' => 'Tällä lomakkeella on yhteensopimattomat nimi- ja mallinekaavat alkaen riviltä $1.', |
| 478 | + 'formarticleexists' => 'Sivu on jo olemassa', |
| 479 | + 'formarticleexiststext' => 'Sivu [[$1]] on jo olemassa.', |
| 480 | + 'formbadpagename' => 'Huono sivun nimi', |
| 481 | + 'formbadrecaptcha' => 'Väärät vastausarvot reCaptcha-varmistukselle. Yritä uudestaan.', |
| 482 | + 'formbadpagenametext' => 'Antamasi lomakkeen tiedot tekevät huonon sivun nimen, "$1".', |
| 483 | + 'formrequiredfielderror' => '{{PLURAL:$2|Kenttä $1 on|Kentät $1 ovat}} pakollisia tässä lomakkeessa. |
| 484 | +Ole hyvä ja täytä {{PLURAL:$2|se|ne}}.', |
| 485 | + 'formsavesummary' => 'Uusi sivu käyttäen [[Special:Form/$1]]', |
| 486 | + 'formsaveerror' => 'Virhe lomaketta tallennettaessa', |
| 487 | + 'formsaveerrortext' => "Tuntematon virhe tapahtui sivua '$1' tallennettaessa.", |
| 488 | +); |
| 489 | + |
| 490 | +/** French (Français) |
| 491 | + * @author Crochet.david |
| 492 | + * @author Grondin |
| 493 | + * @author IAlex |
| 494 | + * @author McDutchie |
| 495 | + * @author Omnipaedista |
| 496 | + * @author Sherbrooke |
| 497 | + */ |
| 498 | +$messages['fr'] = array( |
| 499 | + 'form-desc' => 'Une [[Special:Form|interface de formulaire]] pour commencer des nouvelles pages', |
| 500 | + 'form' => 'Formulaire', |
| 501 | + 'formnoname' => 'Aucun nom', |
| 502 | + 'formnonametext' => 'Veuillez spécifier le nom du formulaire, sous la forme « Special:Formulaire/NomDuFormulaire ».', |
| 503 | + 'formbadname' => 'Nom incorrect', |
| 504 | + 'formbadnametext' => 'Le nom choisi pour le formulaire est incorrect. Aucun formulaire n’existe sous ce nom.', |
| 505 | + 'formpattern' => 'formulaire-$1', |
| 506 | + 'formtitlepattern' => 'Ajouter un(e) $1', |
| 507 | + 'formsave' => 'Sauvegarder', |
| 508 | + 'formindexmismatch-title' => 'Inadéquation entre la palette de nom et le modèle', |
| 509 | + 'formindexmismatch' => 'Ce formulaire a des patrons et des modèles qui ne correspondent pas à partir de $1.', |
| 510 | + 'formarticleexists' => 'La page existe déjà.', |
| 511 | + 'formarticleexiststext' => 'La page nommée [[$1]] existe déjà.', |
| 512 | + 'formbadpagename' => 'Mauvais nom de page', |
| 513 | + 'formbadrecaptcha' => 'Valeur incorrecte pour reCaptcha. Essayez à nouveau', |
| 514 | + 'formbadpagenametext' => 'Les données saisies forment un mauvais nom de page, « $1 ».', |
| 515 | + 'formrequiredfielderror' => '{{PLURAL:$2|Le champ $1 est|Les champs $1 sont}} requis dans ce formulaire. |
| 516 | +Vous devez le{{PLURAL:$2||s}} remplir.', |
| 517 | + 'formsavesummary' => 'Nouvelle page utilisant [[Special:Form/$1|le formulaire $1]]', |
| 518 | + 'formsaveerror' => 'Une erreur s’est produite pendant la sauvegarde.', |
| 519 | + 'formsaveerrortext' => "Une erreur inconnue s’est produite pendant la sauvegarde de ''$1''.", |
| 520 | +); |
| 521 | + |
| 522 | +/** Franco-Provençal (Arpetan) |
| 523 | + * @author Cedric31 |
| 524 | + */ |
| 525 | +$messages['frp'] = array( |
| 526 | + 'formsave' => 'Sôvar', |
| 527 | +); |
| 528 | + |
| 529 | +/** Western Frisian (Frysk) |
| 530 | + * @author Snakesteuben |
| 531 | + */ |
| 532 | +$messages['fy'] = array( |
| 533 | + 'formsave' => 'Fêstlizze', |
| 534 | +); |
| 535 | + |
| 536 | +/** Galician (Galego) |
| 537 | + * @author Alma |
| 538 | + * @author Toliño |
| 539 | + * @author Xosé |
| 540 | + */ |
| 541 | +$messages['gl'] = array( |
| 542 | + 'form-desc' => 'Un [[Special:Form|formulario como interface]] para comezar páxinas novas', |
| 543 | + 'form' => 'Formulario', |
| 544 | + 'formnoname' => 'Formulario sen Nome', |
| 545 | + 'formnonametext' => 'Tenlle que dar un nome ao formulario, como "Special:Form/Nomedoformulario".', |
| 546 | + 'formbadname' => 'Formulario con Nome incorrecto', |
| 547 | + 'formbadnametext' => 'Non hai ningún formulario con ese nome.', |
| 548 | + 'formpattern' => 'formulario-$1', |
| 549 | + 'formtitlepattern' => 'Engadir Novo $1', |
| 550 | + 'formsave' => 'Gardar', |
| 551 | + 'formindexmismatch-title' => 'O nome do patrón e o modelo son incompatibles', |
| 552 | + 'formindexmismatch' => 'Este formulario ten nomes de patróns e modelos que non coinciden, comezando por $1.', |
| 553 | + 'formarticleexists' => 'A páxina Existe', |
| 554 | + 'formarticleexiststext' => 'A páxina [[$1]] xa existe.', |
| 555 | + 'formbadpagename' => 'Nome de Páxina incorrecto', |
| 556 | + 'formbadrecaptcha' => 'Valores incorrectos na reCaptcha. Inténteo de novo.', |
| 557 | + 'formbadpagenametext' => 'O formulario de datos que vostede introduciu fixo un nome de páxina incorrecto, "$1".', |
| 558 | + 'formrequiredfielderror' => '{{PLURAL:$2|O campo $1 é requirido|Os campos $1 son requiridos}} para este formulario. Por favor, {{PLURAL:$2|énchao|énchaos}}.', |
| 559 | + 'formsavesummary' => 'Nova páxina usando [[Special:Form/$1|o formulario $1]]', |
| 560 | + 'formsaveerror' => 'Erro ao gardar o formulario', |
| 561 | + 'formsaveerrortext' => "Houbo un erro descoñecido ao gardar a páxina '$1'.", |
| 562 | +); |
| 563 | + |
| 564 | +/** Ancient Greek (Ἀρχαία ἑλληνικὴ) |
| 565 | + * @author Crazymadlover |
| 566 | + * @author Omnipaedista |
| 567 | + */ |
| 568 | +$messages['grc'] = array( |
| 569 | + 'formsave' => 'Γράφειν', |
| 570 | + 'formbadpagename' => 'Κακὸν ὄνομα δέλτου', |
| 571 | +); |
| 572 | + |
| 573 | +/** Swiss German (Alemannisch) |
| 574 | + * @author Als-Holder |
| 575 | + */ |
| 576 | +$messages['gsw'] = array( |
| 577 | + 'form-desc' => 'E [[Special:Form|Yygabmaschke]] zum Aalege vu neje Syte', |
| 578 | + 'form' => 'Formular', |
| 579 | + 'formnoname' => 'Kei Formularname', |
| 580 | + 'formnonametext' => 'Du muesch e Formularnamen aagee, z. B. „{{ns:Special}}:Form/Formularname“.', |
| 581 | + 'formbadname' => 'Falscher Formularname', |
| 582 | + 'formbadnametext' => 'S git kei Formular mit däm Name.', |
| 583 | + 'formpattern' => '$1-Formular', |
| 584 | + 'formtitlepattern' => 'Fieg neji $1 zue', |
| 585 | + 'formsave' => 'Spychere', |
| 586 | + 'formindexmismatch-title' => 'Uuglyychgwicht zwische Namemuschter un Vorlage', |
| 587 | + 'formindexmismatch' => 'Des Formular het e Uuglyychgwicht zwische Namemuschter un Vorlagen, wu aafangt bim Index $1.', |
| 588 | + 'formarticleexists' => 'Syt git s scho', |
| 589 | + 'formarticleexiststext' => 'D Syte „[[$1]]“ git s scho.', |
| 590 | + 'formbadpagename' => 'Nit zuelässige Sytename', |
| 591 | + 'formbadrecaptcha' => 'Nit giltigi Wärt fir reCaptcha. Versuech s nomol.', |
| 592 | + 'formbadpagenametext' => 'D Formulardate, wu yygee wore sin, gän e nit zuelässige Sytename: „$1“.', |
| 593 | + 'formrequiredfielderror' => '{{PLURAL:$2|S Fäld $1 isch e Pfichtfäld|D Fälder $1 sin Pfichtfälder}}. |
| 594 | +Bitte fill {{PLURAL:$2|s|si}} uus.', |
| 595 | + 'formsavesummary' => 'Neji Syte, wu uf em [[Special:Form/$1|Formular $1]] basiert', |
| 596 | + 'formsaveerror' => 'Fähler bim Spychere vum Formular', |
| 597 | + 'formsaveerrortext' => 'S het e nit bekannte Fähler gee bim Spychere vu dr Syte „$1“.', |
| 598 | +); |
| 599 | + |
| 600 | +/** Hebrew (עברית) |
| 601 | + * @author Rotemliss |
| 602 | + * @author YaronSh |
| 603 | + */ |
| 604 | +$messages['he'] = array( |
| 605 | + 'form-desc' => '[[Special:Form|ממשק טופס]] ליצירת דפים חדשים', |
| 606 | + 'form' => 'טופס', |
| 607 | + 'formnoname' => 'אין שם לטופס', |
| 608 | + 'formnonametext' => 'עליכם לספק שם לטופס, כגון "Special:Form/Nameofform".', |
| 609 | + 'formbadname' => 'שם הטופס אינו תקין', |
| 610 | + 'formbadnametext' => 'אין טופס בשם זה.', |
| 611 | + 'formpattern' => 'טופס־$1', |
| 612 | + 'formtitlepattern' => 'הוספת $1 חדש', |
| 613 | + 'formsave' => 'שמירה', |
| 614 | + 'formindexmismatch-title' => 'מבנה השם והתבנית אינם תואמים', |
| 615 | + 'formindexmismatch' => 'טופס זה אינו תואם את מבנה השם ואת התבניות המתחילות באינדקס $1.', |
| 616 | + 'formarticleexists' => 'הדף קיים', |
| 617 | + 'formarticleexiststext' => 'הדף [[$1]] כבר קיים.', |
| 618 | + 'formbadpagename' => 'שם הדף אינו תקין', |
| 619 | + 'formbadrecaptcha' => 'הערכים שהוזנו ל־reCaptcha שגויים. נסו שוב.', |
| 620 | + 'formbadpagenametext' => 'נתוני הטופס ששלחתם יוצרים דף בעל שם בלתי תקין, "$1".', |
| 621 | + 'formrequiredfielderror' => 'מילוי {{PLURAL:$2|השדה $1|השדות $1}} נדרש להשלמת טופס זה. |
| 622 | +אנא מלאו {{PLURAL:$2|אותו|אותם}}.', |
| 623 | + 'formsavesummary' => 'דף חדש באמצעות [[Special:Form/$1|טופס $1]]', |
| 624 | + 'formsaveerror' => 'שגיאה בשמירת הטופס', |
| 625 | + 'formsaveerrortext' => "אירעה שגיאה בלתי ידועה בעת שמירת הדף '$1'.", |
| 626 | +); |
| 627 | + |
| 628 | +/** Croatian (Hrvatski) |
| 629 | + * @author Dalibor Bosits |
| 630 | + */ |
| 631 | +$messages['hr'] = array( |
| 632 | + 'formsave' => 'Spremi', |
| 633 | +); |
| 634 | + |
| 635 | +/** Upper Sorbian (Hornjoserbsce) |
| 636 | + * @author Michawiki |
| 637 | + */ |
| 638 | +$messages['hsb'] = array( |
| 639 | + 'form-desc' => '[[Special:Form|Formularny interfejs]] za wutworjenje nowych stronow', |
| 640 | + 'form' => 'Formular', |
| 641 | + 'formnoname' => 'Žane formularne mjeno', |
| 642 | + 'formnonametext' => 'Dyrbiš formularne mjeno podać, na př. „{{ns:Special}}:Form/Formularnemjeno“.', |
| 643 | + 'formbadname' => 'Wopačne formularne mjeno', |
| 644 | + 'formbadnametext' => 'Njeje formular z tutym mjenom', |
| 645 | + 'formpattern' => '$1 formular', |
| 646 | + 'formtitlepattern' => 'Nowe $1 přidać', |
| 647 | + 'formsave' => 'Składować', |
| 648 | + 'formindexmismatch-title' => 'Mjenowy muster a předłoha so njewotpowědujetej', |
| 649 | + 'formindexmismatch' => 'Tutón formular ma njejenake mjenowe mustry a předłohi wot indeksa $1.', |
| 650 | + 'formarticleexists' => 'Nastawk hižo eksistuje', |
| 651 | + 'formarticleexiststext' => 'Nastawk [[$1]] hižo eksistuje.', |
| 652 | + 'formbadpagename' => 'Njedowolene mjeno strony', |
| 653 | + 'formbadrecaptcha' => 'Njekorektne hódnoty za reCaptcha. Spytaj hišće raz.', |
| 654 | + 'formbadpagenametext' => 'Zapodate formularne daty tworja njedowolene mjeno strony: "$1".', |
| 655 | + 'formrequiredfielderror' => '{{PLURAL:$2|Polo $1 je trěbne|Poli $1 stej trěbnej|Pola $1 su trěbne|Pola $1 su trěbne}} za tutón formular. Prošu wupjelń {{PLURAL:$2|jo|jej|je|je}}.', |
| 656 | + 'formsavesummary' => 'Nowa strona, kotraž [[Special:Form/$1|formular $1]] wužiwa.', |
| 657 | + 'formsaveerror' => 'Zmylk při składowanju formulara', |
| 658 | + 'formsaveerrortext' => 'Bě njeznaty zmylk při składowanju nastawka "$1".', |
| 659 | +); |
| 660 | + |
| 661 | +/** Hungarian (Magyar) |
| 662 | + * @author Dani |
| 663 | + * @author Glanthor Reviol |
| 664 | + */ |
| 665 | +$messages['hu'] = array( |
| 666 | + 'form-desc' => '[[Special:Form|Űrlap interfész]] új lapok létrehozásához', |
| 667 | + 'form' => 'Űrlap', |
| 668 | + 'formnoname' => 'Nincs űrlapnév', |
| 669 | + 'formnonametext' => 'Meg kell adnod egy űrlapnevet, mint például „{{#special:Form}}/Űrlapneve”', |
| 670 | + 'formbadname' => 'Hibás űrlapnév', |
| 671 | + 'formbadnametext' => 'Nincs ilyen nevű űrlap.', |
| 672 | + 'formpattern' => '$1 űrlap', |
| 673 | + 'formtitlepattern' => 'Új $1 hozzáadása', |
| 674 | + 'formsave' => 'Mentés', |
| 675 | + 'formindexmismatch-title' => 'A név minta és a sablon nem egyezik', |
| 676 | + 'formindexmismatch' => 'Ez az űrlap nem egyező névmintákat és sablonokat tartalmaz, a $1 indextől kezdve.', |
| 677 | + 'formarticleexists' => 'A lap már létezik', |
| 678 | + 'formarticleexiststext' => 'A(z) [[$1]] lap már létezik.', |
| 679 | + 'formbadpagename' => 'Hibás lapnév', |
| 680 | + 'formbadrecaptcha' => 'Helytelen értékek a reCaptchához. Próbáld újra.', |
| 681 | + 'formbadpagenametext' => 'A beírt űrlapadat hibás lapcímet generál: „$1”.', |
| 682 | + 'formrequiredfielderror' => 'A {{PLURAL:$2|$1 mező|$1 mezők}} kitöltése kötelező ennél az űrlapnál. |
| 683 | +Kérlek {{PLURAL:$2|töltsd ki|töltsd ki őket}}.', |
| 684 | + 'formsavesummary' => 'Új lap a(z) [[Special:Form/$1|$1 űrlap]] használatával', |
| 685 | + 'formsaveerror' => 'Hiba az űrlap mentésekor', |
| 686 | + 'formsaveerrortext' => 'A(z) „$1” lap mentésekor ismeretlen hiba történt.', |
| 687 | +); |
| 688 | + |
| 689 | +/** Interlingua (Interlingua) |
| 690 | + * @author McDutchie |
| 691 | + */ |
| 692 | +$messages['ia'] = array( |
| 693 | + 'form-desc' => 'Un [[Special:Form|interfacie de formulario]] pro initiar nove paginas', |
| 694 | + 'form' => 'Formulario', |
| 695 | + 'formnoname' => 'Nulle nomine del formulario', |
| 696 | + 'formnonametext' => 'Tu debe fornir un nomine pro le formulario, como "Special:Formulario/NomineDelFormulario".', |
| 697 | + 'formbadname' => 'Nomine de formulario invalide', |
| 698 | + 'formbadnametext' => 'Non existe un formulario con iste nomine.', |
| 699 | + 'formpattern' => 'formulario-$1', |
| 700 | + 'formtitlepattern' => 'Adder nove $1', |
| 701 | + 'formsave' => 'Salveguardar', |
| 702 | + 'formindexmismatch-title' => 'Non-correspondentia inter forma de nomine e patrono', |
| 703 | + 'formindexmismatch' => 'Iste formulario ha formas de nomine e patronos non correspondente a partir del indice $1.', |
| 704 | + 'formarticleexists' => 'Pagina existe', |
| 705 | + 'formarticleexiststext' => 'Le pagina [[$1]] existe ja.', |
| 706 | + 'formbadpagename' => 'Nomine de pagina invalide', |
| 707 | + 'formbadrecaptcha' => 'Valores incorrecte pro reCaptcha. Reproba.', |
| 708 | + 'formbadpagenametext' => 'Le datos de formulario que tu entrava resulta in un nomine de pagina invalide, "$1".', |
| 709 | + 'formrequiredfielderror' => 'Le {{PLURAL:$2|campo|campos}} $1 es requirite pro iste formulario. |
| 710 | +Per favor completa {{PLURAL:$2|lo|los}}.', |
| 711 | + 'formsavesummary' => 'Nove pagina con [[Special:Form/$1|le formulario $1]]', |
| 712 | + 'formsaveerror' => 'Error durante le salveguarda del formulario', |
| 713 | + 'formsaveerrortext' => "Il occurreva un error incognite durante le salveguarda del pagina '$1'.", |
| 714 | +); |
| 715 | + |
| 716 | +/** Indonesian (Bahasa Indonesia) |
| 717 | + * @author Irwangatot |
| 718 | + * @author IvanLanin |
| 719 | + */ |
| 720 | +$messages['id'] = array( |
| 721 | + 'form-desc' => 'Suatu [[Special:Form|antarmuka formulir]] untuk membuat halaman baru', |
| 722 | + 'form' => 'Formulir', |
| 723 | + 'formnoname' => 'Nama formulir kosong', |
| 724 | + 'formnonametext' => 'Anda harus memasukkan nama formulir seperti "Special:Form/Namaformulir".', |
| 725 | + 'formbadname' => 'Nama formulir salah', |
| 726 | + 'formbadnametext' => 'Tidak ada formulir dengan nama itu.', |
| 727 | + 'formpattern' => '$1-form', |
| 728 | + 'formtitlepattern' => 'Tambah $1 baru', |
| 729 | + 'formsave' => 'Simpan', |
| 730 | + 'formindexmismatch-title' => 'Pola nama dan templat tidak cocok', |
| 731 | + 'formindexmismatch' => 'Formulir ini tidak cocok dengan pola nama dan templat dimulai dari indeks $1.', |
| 732 | + 'formarticleexists' => 'Halaman telah ada', |
| 733 | + 'formarticleexiststext' => 'Halaman [[$1]] telah ada.', |
| 734 | + 'formbadpagename' => 'Nama halaman salah', |
| 735 | + 'formbadrecaptcha' => 'Nilai reCaptcha salah. Coba lagi.', |
| 736 | + 'formbadpagenametext' => 'Data formulir yang Anda masukkan mengandung nama halaman yang salah, "$1".', |
| 737 | + 'formrequiredfielderror' => '{{PLURAL:$2|Isian $1|Isian $1}} diperlukan oleh formulir ini. |
| 738 | +Silakan masukkan {{PLURAL:$2|isian|isian}} itu.', |
| 739 | + 'formsavesummary' => 'Halaman baru menggunakan [[Special:Form/$1|formulir $1]]', |
| 740 | + 'formsaveerror' => 'Kesalahan penyimpanan formulir', |
| 741 | + 'formsaveerrortext' => "Terjadi kesalahan yang tak dikenal sewaktu menyimpan halaman '$1'.", |
| 742 | +); |
| 743 | + |
| 744 | +/** Ido (Ido) |
| 745 | + * @author Malafaya |
| 746 | + */ |
| 747 | +$messages['io'] = array( |
| 748 | + 'formsave' => 'Registragar', |
| 749 | +); |
| 750 | + |
| 751 | +/** Icelandic (Íslenska) |
| 752 | + * @author S.Örvarr.S |
| 753 | + */ |
| 754 | +$messages['is'] = array( |
| 755 | + 'formsave' => 'Vista', |
| 756 | +); |
| 757 | + |
| 758 | +/** Italian (Italiano) |
| 759 | + * @author Darth Kule |
| 760 | + */ |
| 761 | +$messages['it'] = array( |
| 762 | + 'form-desc' => "Un'[[Special:Form|interfaccia di modulo]] per iniziare nuove pagine", |
| 763 | + 'form' => 'Modulo', |
| 764 | + 'formnoname' => 'Nessun nome per il modulo', |
| 765 | + 'formnonametext' => 'È necessario fornire un nome per il modulo, come "Special:Form/Nomedelmodulo"', |
| 766 | + 'formbadname' => 'Nome modulo errato', |
| 767 | + 'formbadnametext' => 'Non ci sono moduli con quel nome.', |
| 768 | + 'formpattern' => '$1-modulo', |
| 769 | + 'formtitlepattern' => 'Aggiungere un nuovo $1', |
| 770 | + 'formsave' => 'Salva', |
| 771 | + 'formindexmismatch-title' => 'Modello del nome e template non corrispondono', |
| 772 | + 'formindexmismatch' => "Questo modulo ha modelli di nome e template che non corrispondono a partire dall'indice $1.", |
| 773 | + 'formarticleexists' => 'La pagina esiste', |
| 774 | + 'formarticleexiststext' => 'La pagina [[$1]] esiste già.', |
| 775 | + 'formbadpagename' => 'Nome pagina errato', |
| 776 | + 'formbadrecaptcha' => 'Valori errati per reCaptcha. Provare di nuovo.', |
| 777 | + 'formbadpagenametext' => 'I dati inseriti nel modulo generano un nome pagina errato, "$1".', |
| 778 | + 'formrequiredfielderror' => '{{PLURAL:$2|Il campo $1 è richiesto|I campi $1 sono richiesti}} per questo modulo. |
| 779 | +{{PLURAL:$2|Compilarlo|Compilarli}}.', |
| 780 | + 'formsavesummary' => 'Nuova pagina utilizzando il [[Special:Form/$1|modulo $1]]', |
| 781 | + 'formsaveerror' => 'Errore durante il salvataggio del modulo', |
| 782 | + 'formsaveerrortext' => "Si è verificato un errore sconosciuto durante il salvataggio della pagina '$1'.", |
| 783 | +); |
| 784 | + |
| 785 | +/** Japanese (日本語) |
| 786 | + * @author Aotake |
| 787 | + * @author Fryed-peach |
| 788 | + * @author Hosiryuhosi |
| 789 | + */ |
| 790 | +$messages['ja'] = array( |
| 791 | + 'form-desc' => 'ページを作成する[[Special:Form|フォーム形式のインタフェース]]', |
| 792 | + 'form' => 'フォーム', |
| 793 | + 'formnoname' => 'フォーム名がありません', |
| 794 | + 'formnonametext' => 'フォームの名前を決めなければなりません。(例: Special:Form/Nameofform)', |
| 795 | + 'formbadname' => '不正なフォーム名', |
| 796 | + 'formbadnametext' => 'その名前のフォームはありません。', |
| 797 | + 'formpattern' => '$1-form', |
| 798 | + 'formtitlepattern' => '新規$1を追加', |
| 799 | + 'formsave' => '保存', |
| 800 | + 'formindexmismatch-title' => '名前パターンとテンプレートの不整合', |
| 801 | + 'formindexmismatch' => 'このフォームには、インデックス $1 で始まる名前パターンとテンプレートの不整合があります。', |
| 802 | + 'formarticleexists' => 'ページが存在します', |
| 803 | + 'formarticleexiststext' => 'そのページ [[$1]] は既に存在します。', |
| 804 | + 'formbadpagename' => '不正なページ名', |
| 805 | + 'formbadrecaptcha' => 'reCAPTCHA 用の値が不正です。再度試してください。', |
| 806 | + 'formbadpagenametext' => 'あなたが入力したフォームのデータは不正なページ名「$1」を作ります。', |
| 807 | + 'formrequiredfielderror' => '{{PLURAL:$2|欄 $1}}はこのフォームで必須です。{{PLURAL:$2|入力}}してください。', |
| 808 | + 'formsavesummary' => '[[Special:Form/$1|$1フォーム]]を使ってページ作成', |
| 809 | + 'formsaveerror' => 'フォーム保存時のエラー', |
| 810 | + 'formsaveerrortext' => 'ページ「$1」の保存時に不明なエラーがありました。', |
| 811 | +); |
| 812 | + |
| 813 | +/** Javanese (Basa Jawa) |
| 814 | + * @author Meursault2004 |
| 815 | + * @author Pras |
| 816 | + */ |
| 817 | +$messages['jv'] = array( |
| 818 | + 'form-desc' => 'Sawijining [[Special:Form|antarmuka formulir]] kanggo miwiti kaca-kaca anyar', |
| 819 | + 'form' => 'Formulir', |
| 820 | + 'formnoname' => 'Ora ana jeneng formulir', |
| 821 | + 'formnonametext' => 'Panjenengan kudu maringi jeneng formulir, kaya "Special:Form/Nameofform".', |
| 822 | + 'formbadname' => 'Jeneng formulir ala', |
| 823 | + 'formbadnametext' => 'Ora ana formulir mawa jeneng iku.', |
| 824 | + 'formpattern' => 'Formulir-$1', |
| 825 | + 'formtitlepattern' => 'Tambah $1 anyar', |
| 826 | + 'formsave' => 'Simpen', |
| 827 | + 'formindexmismatch-title' => 'Pola jeneng lan cithakan ora cocog', |
| 828 | + 'formindexmismatch' => 'Ing formulir iki ora cocog antara pola jeneng lan cithakan miwiti ing indèks $1.', |
| 829 | + 'formarticleexists' => 'Kacané ana', |
| 830 | + 'formarticleexiststext' => 'Kaca [[$1]] wis ana.', |
| 831 | + 'formbadpagename' => 'Jeneng kaca ala', |
| 832 | + 'formrequiredfielderror' => '{{PLURAL:$2|Field $1 |Fields $1 }} diperlokaké kanggo formulir iki. |
| 833 | +Mangga diisi {{PLURAL:$2|iki|iki}}.', |
| 834 | + 'formsavesummary' => 'Kaca anyar nganggo [[Special:Form/$1|formulir $1]]', |
| 835 | + 'formsaveerror' => 'Ana kaluputan nalika nyimpen formulir', |
| 836 | + 'formsaveerrortext' => "Ana kaluputan sing ora dimangertèni nalika nyimpen kaca '$1'.", |
| 837 | +); |
| 838 | + |
| 839 | +/** Khmer (ភាសាខ្មែរ) |
| 840 | + * @author Chhorran |
| 841 | + * @author Thearith |
| 842 | + * @author គីមស៊្រុន |
| 843 | + */ |
| 844 | +$messages['km'] = array( |
| 845 | + 'form-desc' => '[[Special:Form|ទម្រង់អន្តរមុខ]]មួយដើម្បីចាប់ផ្ដើមទំព័រថ្មីនានា', |
| 846 | + 'form' => 'សំណុំបែបបទ', |
| 847 | + 'formnoname' => 'គ្មានឈ្មោះសំណុំបែបបទ', |
| 848 | + 'formnonametext' => 'អ្នកត្រូវតែផ្ដល់សំណុំបែបបទ ដូចជា "Special:Form/សំណុំបែបបទ"។', |
| 849 | + 'formbadname' => 'ឈ្មោះសំណុំបែបបទមិនល្អ', |
| 850 | + 'formbadnametext' => 'គ្មានឈ្មោះបែបបទ នោះទេ ។', |
| 851 | + 'formpattern' => '$1-សំណុំបែបបទ', |
| 852 | + 'formtitlepattern' => 'បន្ថែម $1 ថ្មី', |
| 853 | + 'formsave' => 'រក្សាទុក', |
| 854 | + 'formarticleexists' => 'ទំព័រមានរួចហើយ', |
| 855 | + 'formarticleexiststext' => 'ទំព័រ [[$1]] មានរួចហើយ។', |
| 856 | + 'formbadpagename' => 'ឈ្មោះទំព័រមិនល្អ', |
| 857 | + 'formsavesummary' => 'ទំព័រប្រើប្រាស់ថ្មី [[Special:Form/$1|ទម្រង់ $1]]', |
| 858 | + 'formsaveerror' => 'កំហុសរក្សាទុកសំណុំបែបបទ', |
| 859 | + 'formsaveerrortext' => "មានកំហុសមិនស្គាល់មួយក្នុងការរក្សាទុកទំព័រ '$1'។", |
| 860 | +); |
| 861 | + |
| 862 | +/** Ripoarisch (Ripoarisch) |
| 863 | + * @author Purodha |
| 864 | + */ |
| 865 | +$messages['ksh'] = array( |
| 866 | + 'form-desc' => 'En [[Special:Form|Schnettstell met Fommulaare]] fö neu Sigge aanzefange.', |
| 867 | + 'form' => 'Fommulaa', |
| 868 | + 'formnoname' => 'Keine Name för en Fommulaa', |
| 869 | + 'formnonametext' => 'Do moß ene Name för dat Fommulaa aanjevve, en dä Aat wi „{{ns:Special}}:Form/Fommulaaname“.', |
| 870 | + 'formbadname' => 'Ene verkeehte Name fö dat Fommulaa', |
| 871 | + 'formbadnametext' => 'Mer han kei Fommulaa met dämm Name.', |
| 872 | + 'formpattern' => '$1-Fommulaa', |
| 873 | + 'formtitlepattern' => 'Donn neu $1 dobei', |
| 874 | + 'formsave' => 'Afspeichere', |
| 875 | + 'formindexmismatch-title' => 'Et Moster för dä Name un de Schablon passe nit zosamme', |
| 876 | + 'formindexmismatch' => 'Dat Fommulaa hee hät unejaal fill Namens-Muster un Schablone, aff dä Nommer $1.', |
| 877 | + 'formarticleexists' => 'Die Sigg jitt et ald', |
| 878 | + 'formarticleexiststext' => 'Di Sigg „[[$1]]“ es ald doh.', |
| 879 | + 'formbadpagename' => 'Dat es keine Name för en Sigg', |
| 880 | + 'formbadrecaptcha' => 'Ferkeehte Wäät för e widderhollt Kaptache. Moß De norr_ens versöke.', |
| 881 | + 'formbadpagenametext' => 'Di enjejovve Date fun dämm Fommulaa jevve „[[$1]]“ — dat es enne kapodde Name för en Sigg.', |
| 882 | + 'formrequiredfielderror' => '{{PLURAL:$2|Dat Feld|De Felder|Nix}} $1 {{PLURAL:$2|moß|mösse|moß}} aanjejovve wäde. Donn {{PLURAL:$2|et|se|nix}} ußfölle.', |
| 883 | + 'formsavesummary' => 'En neu Sigg, di op dämm [[Special:Form/$1|Fommulaa $1]] opbout.', |
| 884 | + 'formsaveerror' => 'Fäähler beim Fommulaa afspeichere', |
| 885 | + 'formsaveerrortext' => 'Mer hatte ene Fähler — de Aat es onbikannt — beim Afspeichere fun de Sigg „$1“.', |
| 886 | +); |
| 887 | + |
| 888 | +/** Latin (Latina) |
| 889 | + * @author SPQRobin |
| 890 | + */ |
| 891 | +$messages['la'] = array( |
| 892 | + 'formsave' => 'Servare', |
| 893 | + 'formarticleexiststext' => 'Pagina [[$1]] iam existit.', |
| 894 | +); |
| 895 | + |
| 896 | +/** Luxembourgish (Lëtzebuergesch) |
| 897 | + * @author Les Meloures |
| 898 | + * @author Robby |
| 899 | + */ |
| 900 | +$messages['lb'] = array( |
| 901 | + 'form-desc' => 'E [[Special:Form|Formulaire]] fir nei Säiten unzefänken', |
| 902 | + 'form' => 'Formulaire', |
| 903 | + 'formnoname' => 'Keen Numm vum Formulaire', |
| 904 | + 'formnonametext' => 'Dir musst en Numm vum Formulaire uginn, zum Beispill "Special:Form/NummvumFormulaire".', |
| 905 | + 'formbadname' => 'Falschen Numm vum Formulaire', |
| 906 | + 'formbadnametext' => 'Et gëtt kee Formulaire mat dem Numm.', |
| 907 | + 'formpattern' => '$1-Formulaire', |
| 908 | + 'formtitlepattern' => 'Nei $1 derbäisetzen', |
| 909 | + 'formsave' => 'Späicheren', |
| 910 | + 'formindexmismatch-title' => 'Duercherneen tëschent dem Numm an der Schabloun', |
| 911 | + 'formindexmismatch' => "Dëse Formulaire ass net richteg configuréiert wat d'Schablounen an d'Modeller vun den Donnéeën. De Feeler fänkt beim Index $1 un.", |
| 912 | + 'formarticleexists' => "D'Säit gëtt et schonn.", |
| 913 | + 'formarticleexiststext' => "D'Säit [[$1]] gëtt et schonn.", |
| 914 | + 'formbadpagename' => 'Falsche Säitennumm', |
| 915 | + 'formbadrecaptcha' => 'Falsche Wert fir reCaptcha. Probéiert nach emol.', |
| 916 | + 'formbadpagenametext' => 'Déi Donnéeën déi Dir an de Formulaire aginn hutt erginn e Säitennumm, den net ka gespäichert ginn: "$1".', |
| 917 | + 'formrequiredfielderror' => "D'{{PLURAL:$2|Feld $1 muss|Felder $1 mussen}} an dësem Formulaire ausgefëllt ginn. |
| 918 | +Fëllt {{PLURAL:$2|et|se}} w.e.g. aus.", |
| 919 | + 'formsavesummary' => 'Nei Säit, déi de [[Special:Form/$1|Formulaire $1]] benotzt', |
| 920 | + 'formsaveerror' => 'Feeler beim Späichere vum Formulaire', |
| 921 | + 'formsaveerrortext' => "Et gouf een onbekannte Feeler beim späichere vun der Säit '$1'.", |
| 922 | +); |
| 923 | + |
| 924 | +/** Eastern Mari (Олык Марий) |
| 925 | + * @author Сай |
| 926 | + */ |
| 927 | +$messages['mhr'] = array( |
| 928 | + 'formsave' => 'Аралаш', |
| 929 | +); |
| 930 | + |
| 931 | +/** Macedonian (Македонски) |
| 932 | + * @author Bjankuloski06 |
| 933 | + */ |
| 934 | +$messages['mk'] = array( |
| 935 | + 'form-desc' => '[[Special:Form|Интерфејс]] за започнување нови страници', |
| 936 | + 'form' => 'Образец', |
| 937 | + 'formnoname' => 'Нема име на образецот', |
| 938 | + 'formnonametext' => 'Мора да наведете име на образецот, како да речеме „Special:Form/ИмеНаОбразец“', |
| 939 | + 'formbadname' => 'Лошо име на образецот', |
| 940 | + 'formbadnametext' => 'Нема образец со тоа име.', |
| 941 | + 'formpattern' => '$1-образец', |
| 942 | + 'formtitlepattern' => 'Додај нов $1', |
| 943 | + 'formsave' => 'Зачувај', |
| 944 | + 'formindexmismatch-title' => 'Несоодветно име и шаблон', |
| 945 | + 'formindexmismatch' => 'Овој образец има несоодветни имиња и шаблони во позиција $1.', |
| 946 | + 'formarticleexists' => 'Страницата постои', |
| 947 | + 'formarticleexiststext' => 'Страницата [[$1]] веќе постои.', |
| 948 | + 'formbadpagename' => 'Лошо име на страницата', |
| 949 | + 'formbadrecaptcha' => 'Неточни вредности за reCaptcha. Обидете се повторно.', |
| 950 | + 'formbadpagenametext' => 'Внесените податоци во образецот доведуваат до погрешен назив на страницата, „$1“.', |
| 951 | + 'formrequiredfielderror' => '{{PLURAL:$2|Полето $1 е задолжително во овој образец|Полињата $1 се задолжителни во овој образец}}. |
| 952 | +Пополнете {{PLURAL:$2|го|ги}}.', |
| 953 | + 'formsavesummary' => 'Нова страница, користејќи го [[Special:Form/$1|образецот $1]]', |
| 954 | + 'formsaveerror' => 'Грешка при зачувување на образецот', |
| 955 | + 'formsaveerrortext' => 'Се појави непозната грешка при зачувувањето на страницата „$1“.', |
| 956 | +); |
| 957 | + |
| 958 | +/** Malayalam (മലയാളം) |
| 959 | + * @author Shijualex |
| 960 | + */ |
| 961 | +$messages['ml'] = array( |
| 962 | + 'form' => 'ഫോം', |
| 963 | + 'formnoname' => 'ഫോമിനു പേരില്ല', |
| 964 | + 'formnonametext' => 'ഫോമിനു ഒരു പേരു നിർബന്ധമായും കൊടുക്കണം, ഉദാ: "Special:Form/Nameofform".', |
| 965 | + 'formbadname' => 'അസാധുവായ ഫോം നാമം', |
| 966 | + 'formbadnametext' => 'ആ പേരിൽ ഒരു ഫോമില്ല.', |
| 967 | + 'formpattern' => '$1-ഫോം', |
| 968 | + 'formtitlepattern' => 'പുതിയ $1 ചേർക്കുക', |
| 969 | + 'formsave' => 'സേവ് ചെയ്യുക', |
| 970 | + 'formarticleexists' => 'താൾ നിലവിലുണ്ട്', |
| 971 | + 'formarticleexiststext' => '[[$1]] എന്ന താൾ നിലവിലുണ്ട്.', |
| 972 | + 'formbadpagename' => 'അസാധുവായ താൾ നാമം', |
| 973 | +); |
| 974 | + |
| 975 | +/** Marathi (मराठी) |
| 976 | + * @author Kaustubh |
| 977 | + * @author Mahitgar |
| 978 | + */ |
| 979 | +$messages['mr'] = array( |
| 980 | + 'form' => 'अर्ज', |
| 981 | + 'formnoname' => 'अर्ज नाव नाही', |
| 982 | + 'formnonametext' => 'तुम्ही एक अर्ज नाव देणे आवश्यक आहे, उदा "Special:Form/अर्जनाव".', |
| 983 | + 'formbadname' => 'चुकीचे अर्ज नाव', |
| 984 | + 'formbadnametext' => 'या नावाचा अर्ज अस्तित्वात नाही.', |
| 985 | + 'formpattern' => '$1-अर्ज', |
| 986 | + 'formtitlepattern' => 'नवीन वाढवा $1', |
| 987 | + 'formsave' => 'जतन करा', |
| 988 | + 'formindexmismatch' => 'या अर्जामध्ये चुकीचे नाव रकाने तसेच साचे जे $1 पासून सुरु होतात, आहेत.', |
| 989 | + 'formarticleexists' => 'पान अस्तित्वात आहे', |
| 990 | + 'formarticleexiststext' => '[[$1]] हे पान अगोदरच अस्तित्वात आहे', |
| 991 | + 'formbadpagename' => 'चुकीचे पान नाव', |
| 992 | + 'formbadpagenametext' => 'तुम्ही दिलेल्या अर्ज माहितीमुळे चुकीचे पृष्ठ नाव तयार होत आहे, "$1".', |
| 993 | + 'formrequiredfielderror' => '$1 रकाना या अर्जाकरिता आवश्यक आहेत. |
| 994 | +कृपया ते भरा.', |
| 995 | + 'formsavesummary' => '[[Special:Form/$1]] वापरुन नवीन पान', |
| 996 | + 'formsaveerror' => 'अर्ज जतन करण्यात त्रुटी', |
| 997 | + 'formsaveerrortext' => "'$1' पान जतन करण्यामध्ये अनोळखी त्रुटी आलेली आहे.", |
| 998 | +); |
| 999 | + |
| 1000 | +/** Malay (Bahasa Melayu) |
| 1001 | + * @author Izzudin |
| 1002 | + */ |
| 1003 | +$messages['ms'] = array( |
| 1004 | + 'form-desc' => 'Sebuah [[Special:Form|antara muka borang]] untuk mulakan halaman baru', |
| 1005 | + 'form' => 'Borang', |
| 1006 | + 'formnoname' => 'Borang tanpa nama', |
| 1007 | + 'formnonametext' => 'Anda perlu meletakkan nama borang, seperti "Special:Form/Namaborang".', |
| 1008 | + 'formbadname' => 'Nama borang tidak sesuai', |
| 1009 | + 'formbadnametext' => 'Tiada borang dengan nama itu.', |
| 1010 | + 'formpattern' => 'borang $1', |
| 1011 | + 'formtitlepattern' => 'Tambahkan $1 baru', |
| 1012 | + 'formsave' => 'Simpan', |
| 1013 | +); |
| 1014 | + |
| 1015 | +/** Erzya (Эрзянь) |
| 1016 | + * @author Botuzhaleny-sodamo |
| 1017 | + */ |
| 1018 | +$messages['myv'] = array( |
| 1019 | + 'formsave' => 'Ванстомс', |
| 1020 | +); |
| 1021 | + |
| 1022 | +/** Nahuatl (Nāhuatl) |
| 1023 | + * @author Fluence |
| 1024 | + */ |
| 1025 | +$messages['nah'] = array( |
| 1026 | + 'formtitlepattern' => 'Ticcēntilīz yancuīc $1', |
| 1027 | + 'formsave' => 'Ticpiyāz', |
| 1028 | + 'formarticleexists' => 'Zāzanilli ia', |
| 1029 | + 'formarticleexiststext' => 'Zāzanilli [[$1]] ye ia.', |
| 1030 | + 'formbadpagename' => 'Ahcualli zāzaniltōcāitl', |
| 1031 | +); |
| 1032 | + |
| 1033 | +/** Low German (Plattdüütsch) |
| 1034 | + * @author Slomox |
| 1035 | + */ |
| 1036 | +$messages['nds'] = array( |
| 1037 | + 'form' => 'Formular', |
| 1038 | + 'formsave' => 'Spiekern', |
| 1039 | + 'formarticleexists' => 'Sied gifft dat al', |
| 1040 | +); |
| 1041 | + |
| 1042 | +/** Dutch (Nederlands) |
| 1043 | + * @author Siebrand |
| 1044 | + * @author Tvdm |
| 1045 | + */ |
| 1046 | +$messages['nl'] = array( |
| 1047 | + 'form-desc' => "Een [[Special:Form|formulierinterface]] om nieuwe pagina's te starten", |
| 1048 | + 'form' => 'Formulier', |
| 1049 | + 'formnoname' => 'Geen formuliernaam', |
| 1050 | + 'formnonametext' => 'Geef een formuliernaam op, bijvoorbeeld "Special:Form/Formuliernaam".', |
| 1051 | + 'formbadname' => 'Ongeldige formuliernaam', |
| 1052 | + 'formbadnametext' => 'Er bestaat geen formulier met die naam.', |
| 1053 | + 'formpattern' => '$1-formulier', |
| 1054 | + 'formtitlepattern' => 'Voeg nieuw $1 toe', |
| 1055 | + 'formsave' => 'Opslaan', |
| 1056 | + 'formindexmismatch-title' => 'Naampatroon- en sjabloonmismatch', |
| 1057 | + 'formindexmismatch' => 'Dit formulier heeft ongekoppelde naampatronen en sjablonen vanaf index $1.', |
| 1058 | + 'formarticleexists' => 'Pagina bestaat al', |
| 1059 | + 'formarticleexiststext' => 'De pagina [[$1]] bestaat al.', |
| 1060 | + 'formbadpagename' => 'Onjuiste paginanaam', |
| 1061 | + 'formbadrecaptcha' => 'Incorrecte waarden voor reCaptcha. |
| 1062 | +Probeer het opnieuw.', |
| 1063 | + 'formbadpagenametext' => 'De formuliergegevens die u hebt opgegeven zorgen voor een onjuiste pagina, "$1".', |
| 1064 | + 'formrequiredfielderror' => '{{PLURAL:$2|Het veld $1 is|De velden $1 zijn}} benodigd voor dit formulier. |
| 1065 | +Vul {{PLURAL:$2|dit|deze}} alstublieft in.', |
| 1066 | + 'formsavesummary' => 'Nieuwe pagina via [[Special:Form/$1|formulier $1]]', |
| 1067 | + 'formsaveerror' => 'Fout bij opslaan formulier', |
| 1068 | + 'formsaveerrortext' => "Er is een onbekende fout opgetreden bij het opslaan van pagina '$1'.", |
| 1069 | +); |
| 1070 | + |
| 1071 | +/** Norwegian Nynorsk (Norsk (nynorsk)) |
| 1072 | + * @author Frokor |
| 1073 | + * @author Harald Khan |
| 1074 | + * @author Jon Harald Søby |
| 1075 | + */ |
| 1076 | +$messages['nn'] = array( |
| 1077 | + 'form-desc' => 'Eit [[Special:Form|skjema]] for å opprette nye sider', |
| 1078 | + 'form' => 'Skjema', |
| 1079 | + 'formnoname' => 'Skjemanamn finst ikkje', |
| 1080 | + 'formnonametext' => 'Du må gje eit skjemanamn, som «Special:Form/Skjemanamn».', |
| 1081 | + 'formbadname' => 'Ugyldig skjemanamn', |
| 1082 | + 'formbadnametext' => 'Det finst ingen skjema med det namnet.', |
| 1083 | + 'formpattern' => '$1-skjema', |
| 1084 | + 'formtitlepattern' => 'Legg til nytt $1', |
| 1085 | + 'formsave' => 'Lagre', |
| 1086 | + 'formindexmismatch-title' => 'Namnemønster- og malfeil', |
| 1087 | + 'formindexmismatch' => 'Dette skjemaet har upassande namnemønster og malar som startar på indeks $1.', |
| 1088 | + 'formarticleexists' => 'Sida eksisterer', |
| 1089 | + 'formarticleexiststext' => 'Sida [[$1]] eksisterer alt.', |
| 1090 | + 'formbadpagename' => 'Ugyldig sidenamn', |
| 1091 | + 'formbadrecaptcha' => 'Gale verdiar frå reCaptcha. Prøv igjen.', |
| 1092 | + 'formbadpagenametext' => 'Skjemadataa du skreiv inn utgjevr eit ugyldig sidenamn, «$1».', |
| 1093 | + 'formrequiredfielderror' => '{{PLURAL:$2|Feltet $1 er påkravd |Felta $1 er påkravde}} for dette skjemaet. Ver venleg og fyll {{PLURAL:$2|det|dei}} inn.', |
| 1094 | + 'formsavesummary' => 'Ny side vha. [[Special:Form/$1|skjemaet $1]]', |
| 1095 | + 'formsaveerror' => 'Feil under skjemalagring', |
| 1096 | + 'formsaveerrortext' => 'Det var ein ukjend feil under lagring av sida ‘$1’.', |
| 1097 | +); |
| 1098 | + |
| 1099 | +/** Norwegian (bokmål) (Norsk (bokmål)) |
| 1100 | + * @author Jon Harald Søby |
| 1101 | + * @author Nghtwlkr |
| 1102 | + */ |
| 1103 | +$messages['no'] = array( |
| 1104 | + 'form-desc' => 'Et [[Special:Form|skjema]] for å opprette nye sider', |
| 1105 | + 'form' => 'Skjema', |
| 1106 | + 'formnoname' => 'Intet skjemanavn', |
| 1107 | + 'formnonametext' => 'Du må angi et skjemanavn, som «Special:Form/Skjemanavn».', |
| 1108 | + 'formbadname' => 'Ugyldig skjemanavn', |
| 1109 | + 'formbadnametext' => 'Det er ingen skjema ved det navnet.', |
| 1110 | + 'formpattern' => '$1-skjema', |
| 1111 | + 'formtitlepattern' => 'Legger til nytt $1', |
| 1112 | + 'formsave' => 'Lagre', |
| 1113 | + 'formindexmismatch-title' => 'Navnemønster og malfeil', |
| 1114 | + 'formindexmismatch' => 'Dette skjemaet har upassende navnemønstre og maler som starter på indeks $1.', |
| 1115 | + 'formarticleexists' => 'Siden eksisterer', |
| 1116 | + 'formarticleexiststext' => 'Siden [[$1]] eksisterer allerede.', |
| 1117 | + 'formbadpagename' => 'Ugyldig sidenavn', |
| 1118 | + 'formbadrecaptcha' => 'Gale verdier fro reCaptcha. Prøv igjen.', |
| 1119 | + 'formbadpagenametext' => 'Skjemadataene du skrev inn utgjør et ugyldig sidenavn, «$1».', |
| 1120 | + 'formrequiredfielderror' => '{{PLURAL:$2|Feltet $1 er obligatorisk|Feltene $1 er obligatoriske}} for dette skjemaet. Vær vennlig og fyll {{PLURAL:$2|det|dem}} ut.', |
| 1121 | + 'formsavesummary' => 'Ny side vha. [[Special:Form/$1|skjemaet $1]]', |
| 1122 | + 'formsaveerror' => 'Feil under skjemalagring', |
| 1123 | + 'formsaveerrortext' => 'Det var en ukjent feil under lagring av siden ‘$1’.', |
| 1124 | +); |
| 1125 | + |
| 1126 | +/** Occitan (Occitan) |
| 1127 | + * @author Cedric31 |
| 1128 | + */ |
| 1129 | +$messages['oc'] = array( |
| 1130 | + 'form-desc' => 'Un [[Special:Form|formulari d’interfàcia]] per començar de paginas novèlas', |
| 1131 | + 'form' => 'Formulari', |
| 1132 | + 'formnoname' => 'Cap de nom', |
| 1133 | + 'formnonametext' => 'Especificatz lo nom del formulari, jos la forma "Special:Formulari/NomDelFormulari".', |
| 1134 | + 'formbadname' => 'Nom incorrècte', |
| 1135 | + 'formbadnametext' => 'Lo nom causit pel formulari es incorrècte. Cap de formulari existís jos aqueste nom.', |
| 1136 | + 'formpattern' => 'formulari-$1', |
| 1137 | + 'formtitlepattern' => 'Apondre un(a) $1', |
| 1138 | + 'formsave' => 'Salvar', |
| 1139 | + 'formindexmismatch-title' => 'Paleta de nom e error de modèl', |
| 1140 | + 'formindexmismatch' => 'Aqueste formulari a de patrons e de modèls que correspòndon pas a partir de $1.', |
| 1141 | + 'formarticleexists' => "L'article existís ja.", |
| 1142 | + 'formarticleexiststext' => "L'article nomenat [[$1]] existís ja.", |
| 1143 | + 'formbadpagename' => 'Marrit nom de pagina', |
| 1144 | + 'formbadrecaptcha' => 'Valor incorrècta per reCaptcha. Ensajatz tornamai', |
| 1145 | + 'formbadpagenametext' => 'Las donadas picadas fòrman un marrit nom de pagina, « $1 ».', |
| 1146 | + 'formrequiredfielderror' => '{{PLURAL:$2|Lo camp $1 es|Los camps $1 son}} requesits dins aqueste formulari. |
| 1147 | +Vos {{PLURAL:$2|lo|los}} cal emplenar.', |
| 1148 | + 'formsavesummary' => "Crear un article novèl amb l'ajuda de [[Special:Form/$1|formulari $1]]", |
| 1149 | + 'formsaveerror' => "Una error s'es producha pendent lo salvament.", |
| 1150 | + 'formsaveerrortext' => "Una error desconeguda s'es producha pendent lo salvament de ''$1''.", |
| 1151 | +); |
| 1152 | + |
| 1153 | +/** Ossetic (Иронау) |
| 1154 | + * @author Amikeco |
| 1155 | + */ |
| 1156 | +$messages['os'] = array( |
| 1157 | + 'formsave' => 'Афтæ уæд', |
| 1158 | +); |
| 1159 | + |
| 1160 | +/** Polish (Polski) |
| 1161 | + * @author Derbeth |
| 1162 | + * @author Leinad |
| 1163 | + * @author Sp5uhe |
| 1164 | + * @author Wpedzich |
| 1165 | + */ |
| 1166 | +$messages['pl'] = array( |
| 1167 | + 'form-desc' => '[[Special:Form|Formularz interfejsu]] do rozpoczynania nowych stron', |
| 1168 | + 'form' => 'Formularz', |
| 1169 | + 'formnoname' => 'Brak nazwy formularza', |
| 1170 | + 'formnonametext' => 'Musisz podać nazwę formularza, np. „{{ns:special}}:Formularz/Nazwaformularza”.', |
| 1171 | + 'formbadname' => 'Zła nazwa formularza', |
| 1172 | + 'formbadnametext' => 'Brak formularza o takiej nazwie.', |
| 1173 | + 'formpattern' => 'formularz $1', |
| 1174 | + 'formtitlepattern' => 'Dodaj nowy $1', |
| 1175 | + 'formsave' => 'Zapisz', |
| 1176 | + 'formindexmismatch-title' => 'Wzorzec nazwy i szablon nie pasują', |
| 1177 | + 'formindexmismatch' => 'W poniższym zestawieniu znajdują się niepasujące wzorce nazw i szablony, rozpoczynając od indeksu $1.', |
| 1178 | + 'formarticleexists' => 'Strona istnieje', |
| 1179 | + 'formarticleexiststext' => 'Strona [[$1]] już istnieje.', |
| 1180 | + 'formbadpagename' => 'Zła nazwa strony', |
| 1181 | + 'formbadrecaptcha' => 'Niepoprawne wartości reCaptcha. Spróbuj ponownie.', |
| 1182 | + 'formbadpagenametext' => 'Dane wpisane do formularza tworzą niepoprawną nazwę strony, „$1”.', |
| 1183 | + 'formrequiredfielderror' => '{{PLURAL:$2|Pole $1 jest|Pola $2 są}} wymagane w tym formularzu. Wypełnij je.', |
| 1184 | + 'formsavesummary' => 'Nowa strona za pomocą [[Special:Form/$1|formularza $1]]', |
| 1185 | + 'formsaveerror' => 'Błąd przy zapisywaniu formularza', |
| 1186 | + 'formsaveerrortext' => "Wystąpił nieznany błąd przy zapisywaniu strony '$1'.", |
| 1187 | +); |
| 1188 | + |
| 1189 | +/** Piedmontese (Piemontèis) |
| 1190 | + * @author Bèrto 'd Sèra |
| 1191 | + * @author Dragonòt |
| 1192 | + */ |
| 1193 | +$messages['pms'] = array( |
| 1194 | + 'form-desc' => "N'[[Special:Form|antëfacia ëd forma]] për fé parte neuve pàgine", |
| 1195 | + 'form' => 'Domanda', |
| 1196 | + 'formnoname' => 'Domanda sensa tìtol', |
| 1197 | + 'formnonametext' => 'A venta deje un tìtol al mòdulo ëd domanda, coma "Special:Form/nòm_dla_domanda".', |
| 1198 | + 'formbadname' => 'Nòm dla domanda nen bon', |
| 1199 | + 'formbadnametext' => "A-i é pa gnun mòdulo ëd domanda ch'as ciama parej.", |
| 1200 | + 'formpattern' => '$1-domanda', |
| 1201 | + 'formtitlepattern' => 'Gionté $1 neuv', |
| 1202 | + 'formsave' => 'Salvé', |
| 1203 | + 'formindexmismatch-title' => 'Model dël nòm e stamp a corispondo pa', |
| 1204 | + 'formindexmismatch' => "Ës mòdulo-sì a l'ha në schema ëd nòm e stamp malcobià a parte da 'nt l'ìndess $1.", |
| 1205 | + 'formarticleexists' => 'La pàgina a-i é', |
| 1206 | + 'formarticleexiststext' => 'La pàgina [[$1]] a-i é già', |
| 1207 | + 'formbadpagename' => 'Nòm ëd pàgina pa bon', |
| 1208 | + 'formbadrecaptcha' => 'Valor pa giust për reCaptcha. Prova torna.', |
| 1209 | + 'formbadpagenametext' => 'Ij dat ant sël mòdulo ëd domanda ch\'a l\'ha butà a dan un nòm ëd pàgina nen bon, "$1".', |
| 1210 | + 'formrequiredfielderror' => "{{PLURAL:$2|Ël camp $1 a l'é|Ij camp $1 a son}} obligatòri për ës mòdulo ëd domanda-sì. |
| 1211 | +Për piasì, {{PLURAL:$2|ch'a lo|ch'a-j}} compila.", |
| 1212 | + 'formsavesummary' => "Neuva pàgina ch'a dòvra [[Special:Form/$1|mòdul $1]]", |
| 1213 | + 'formsaveerror' => 'Eror ën salvand ël mòdulo ëd domanda', |
| 1214 | + 'formsaveerrortext' => "A-i é sta-ie n'eror amprevist ën salvand la pàgina '$1'.", |
| 1215 | +); |
| 1216 | + |
| 1217 | +/** Pashto (پښتو) |
| 1218 | + * @author Ahmed-Najib-Biabani-Ibrahimkhel |
| 1219 | + */ |
| 1220 | +$messages['ps'] = array( |
| 1221 | + 'formsave' => 'خوندي کول', |
| 1222 | +); |
| 1223 | + |
| 1224 | +/** Portuguese (Português) |
| 1225 | + * @author 555 |
| 1226 | + * @author Lijealso |
| 1227 | + * @author Malafaya |
| 1228 | + * @author Waldir |
| 1229 | + */ |
| 1230 | +$messages['pt'] = array( |
| 1231 | + 'form-desc' => 'Uma [[Special:Form|interface em formulário]] para criar novas páginas', |
| 1232 | + 'form' => 'Formulário', |
| 1233 | + 'formnoname' => 'Sem nome de formulário', |
| 1234 | + 'formnonametext' => 'Tem de fornecer um nome para o formulário, tal como "Special:Form/Nomedoformulario".', |
| 1235 | + 'formbadname' => 'Nome de formulário incorreto', |
| 1236 | + 'formbadnametext' => 'Não existe nenhum formulário com esse nome.', |
| 1237 | + 'formpattern' => 'formulário $1', |
| 1238 | + 'formtitlepattern' => 'Adicionar Novo $1', |
| 1239 | + 'formsave' => 'Gravar', |
| 1240 | + 'formindexmismatch-title' => 'Padrão do nome e predefinição não correspondem', |
| 1241 | + 'formindexmismatch' => 'Este formulário tem padrões de nome e predefinições não correspondentes a partir do índice $1.', |
| 1242 | + 'formarticleexists' => 'A página existe', |
| 1243 | + 'formarticleexiststext' => 'A página [[$1]] já existe.', |
| 1244 | + 'formbadpagename' => 'Nome de página incorreto', |
| 1245 | + 'formbadrecaptcha' => 'Valores de reCaptha incorretos. Tente novamente.', |
| 1246 | + 'formbadpagenametext' => 'Os dados que introduziu no formulário formam um nome de página incorreto, "$1".', |
| 1247 | + 'formrequiredfielderror' => '{{PLURAL:$2|O campo $1 é obrigatório|Os campos $1 são obrigatórios}} neste formulário. |
| 1248 | +Por favor, {{PLURAL:$2|preencha-o|preencha-os}}.', |
| 1249 | + 'formsavesummary' => 'Nova página usando [[Special:Form/$1|formulário $1]]', |
| 1250 | + 'formsaveerror' => 'Erro ao gravar formulário', |
| 1251 | + 'formsaveerrortext' => "Houve um erro desconhecido ao gravar a página '$1'.", |
| 1252 | +); |
| 1253 | + |
| 1254 | +/** Brazilian Portuguese (Português do Brasil) |
| 1255 | + * @author Eduardo.mps |
| 1256 | + * @author Malafaya |
| 1257 | + */ |
| 1258 | +$messages['pt-br'] = array( |
| 1259 | + 'form-desc' => 'Uma [[Special:Form|interface em formulário]] para criar novas páginas', |
| 1260 | + 'form' => 'Formulário', |
| 1261 | + 'formnoname' => 'Sem nome de formulário', |
| 1262 | + 'formnonametext' => 'Tem de fornecer um nome para o formulário, tal como "Special:Form/Nomedoformulario".', |
| 1263 | + 'formbadname' => 'Nome de formulário incorreto', |
| 1264 | + 'formbadnametext' => 'Não existe nenhum formulário com esse nome.', |
| 1265 | + 'formpattern' => 'formulário $1', |
| 1266 | + 'formtitlepattern' => 'Adicionar Novo $1', |
| 1267 | + 'formsave' => 'Salvar', |
| 1268 | + 'formindexmismatch-title' => 'Padrão do nome e predefinição não correspondem', |
| 1269 | + 'formindexmismatch' => 'Este formulário tem padrões de nome e predefinições não correspondentes a partir do índice $1.', |
| 1270 | + 'formarticleexists' => 'A página existe', |
| 1271 | + 'formarticleexiststext' => 'A página [[$1]] já existe.', |
| 1272 | + 'formbadpagename' => 'Nome de página incorreto', |
| 1273 | + 'formbadrecaptcha' => 'Valores de reCaptha incorretos. Tente novamente.', |
| 1274 | + 'formbadpagenametext' => 'Os dados que introduziu no formulário formam um nome de página incorreto, "$1".', |
| 1275 | + 'formrequiredfielderror' => '{{PLURAL:$2|O campo $1 é obrigatório|Os campos $1 são obrigatórios}} neste formulário. |
| 1276 | +Por favor, {{PLURAL:$2|preencha-o|preencha-os}}.', |
| 1277 | + 'formsavesummary' => 'Nova página usando [[Special:Form/$1|formulário $1]]', |
| 1278 | + 'formsaveerror' => 'Erro ao gravar formulário', |
| 1279 | + 'formsaveerrortext' => "Houve um erro desconhecido ao salvar a página '$1'.", |
| 1280 | +); |
| 1281 | + |
| 1282 | +/** Romanian (Română) |
| 1283 | + * @author Firilacroco |
| 1284 | + * @author KlaudiuMihaila |
| 1285 | + */ |
| 1286 | +$messages['ro'] = array( |
| 1287 | + 'form' => 'Formular', |
| 1288 | + 'formnoname' => 'Niciun nume pentru formular', |
| 1289 | + 'formbadname' => 'Nume incorect', |
| 1290 | + 'formtitlepattern' => 'Adaugă nou $1', |
| 1291 | + 'formsave' => 'Salvează', |
| 1292 | + 'formarticleexists' => 'Pagina există', |
| 1293 | + 'formarticleexiststext' => 'Pagina [[$1]] deja există.', |
| 1294 | + 'formsaveerror' => 'Eroare la salvarea formularului', |
| 1295 | + 'formsaveerrortext' => "A intervenit o eroare necunoscută la salvarea paginii '$1'.", |
| 1296 | +); |
| 1297 | + |
| 1298 | +/** Tarandíne (Tarandíne) |
| 1299 | + * @author Joetaras |
| 1300 | + */ |
| 1301 | +$messages['roa-tara'] = array( |
| 1302 | + 'formsave' => 'Reggistre', |
| 1303 | +); |
| 1304 | + |
| 1305 | +/** Russian (Русский) |
| 1306 | + * @author Innv |
| 1307 | + * @author Rubin |
| 1308 | + * @author Александр Сигачёв |
| 1309 | + */ |
| 1310 | +$messages['ru'] = array( |
| 1311 | + 'form-desc' => '[[Special:Form|Интерфейс]] (в виде формы) для создания новых страниц', |
| 1312 | + 'form' => 'Форма', |
| 1313 | + 'formnoname' => 'Нет имени формы', |
| 1314 | + 'formnonametext' => 'Вы должны указать имя формы, в виде как «Special:Form/Имяформы».', |
| 1315 | + 'formbadname' => 'Плохое имя формы', |
| 1316 | + 'formbadnametext' => 'Нет формы с таким именем.', |
| 1317 | + 'formpattern' => '$1-форма', |
| 1318 | + 'formtitlepattern' => 'Добавить новый $1', |
| 1319 | + 'formsave' => 'Сохранить', |
| 1320 | + 'formindexmismatch-title' => 'Несоответствие образца и шаблона', |
| 1321 | + 'formindexmismatch' => 'В этой форме есть несоответствие имени и шаблона в позиции $1.', |
| 1322 | + 'formarticleexists' => 'Страница существует', |
| 1323 | + 'formarticleexiststext' => 'Страница [[$1]] уже существует.', |
| 1324 | + 'formbadpagename' => 'Плохое имя страницы', |
| 1325 | + 'formbadrecaptcha' => 'Неправильное значение reCaptcha. Попробуйте ещё раз.', |
| 1326 | + 'formbadpagenametext' => 'Введённые вами данные формы, приводят к ошибочному имени страницы, «$1».', |
| 1327 | + 'formrequiredfielderror' => 'В этой форме требуется заполнить {{PLURAL:$2|$2 поле|$2 поля|$2 полей}}: $1. |
| 1328 | +Пожалуйста дозаполните {{PLURAL:$2|это поле|эти поля}}.', |
| 1329 | + 'formsavesummary' => 'Новая страница, с помощью [[Special:Form/$1|формы $1]]', |
| 1330 | + 'formsaveerror' => 'Ошибка при сохранении формы', |
| 1331 | + 'formsaveerrortext' => 'При сохранении страницы «$1» возникла неизвестная ошибка.', |
| 1332 | +); |
| 1333 | + |
| 1334 | +/** Sinhala (සිංහල) |
| 1335 | + * @author චතුනි අලහප්පෙරුම |
| 1336 | + */ |
| 1337 | +$messages['si'] = array( |
| 1338 | + 'formarticleexists' => 'පිටුව පවතියි', |
| 1339 | + 'formarticleexiststext' => '[[$1]] පිටුව දැනටමත් පවතියි.', |
| 1340 | + 'formbadpagename' => 'නොමනා පිටු නාමය', |
| 1341 | + 'formbadrecaptcha' => 'reCaptcha වෙනුවෙන් සාවද්යය අගයන් සැපයුමකි. යළි උත්සාහ කරන්න.', |
| 1342 | +); |
| 1343 | + |
| 1344 | +/** Slovak (Slovenčina) |
| 1345 | + * @author Helix84 |
| 1346 | + */ |
| 1347 | +$messages['sk'] = array( |
| 1348 | + 'form-desc' => '[[Special:Form|Formulárové rozhranie]] na zakladanie nových stránok', |
| 1349 | + 'form' => 'Formulár', |
| 1350 | + 'formnoname' => 'Nezadali ste názov formulára', |
| 1351 | + 'formnonametext' => 'Musíte zadať názov formulára v tvare „Special:Form/Názovformulára“', |
| 1352 | + 'formbadname' => 'Chybný názov formulára', |
| 1353 | + 'formbadnametext' => 'Formulár s takým názvom neexistuje.', |
| 1354 | + 'formpattern' => 'formulár-$1', |
| 1355 | + 'formtitlepattern' => 'Pridať nový $1', |
| 1356 | + 'formsave' => 'Uložiť', |
| 1357 | + 'formindexmismatch-title' => 'Vzor názvu a šablóna si nezodpovedajú.', |
| 1358 | + 'formindexmismatch' => 'Vzory názvu tohto formulára sa nezhodujú a šablóny začínajú od indexu $1.', |
| 1359 | + 'formarticleexists' => 'Stránka existuje', |
| 1360 | + 'formarticleexiststext' => 'Stránka [[$1]] už existuje.', |
| 1361 | + 'formbadpagename' => 'Chybný názov stránky', |
| 1362 | + 'formbadrecaptcha' => 'Neplatné hodnoty reCaptcha. Skúste to znova.', |
| 1363 | + 'formbadpagenametext' => 'Údaje formulára, ktoré ste zadali tvoria chybný názov stránky - „$1“.', |
| 1364 | + 'formrequiredfielderror' => 'Tento formulár vyžaduje vyplnenie {{PLURAL:$2|poľa $1|polí $1}}. Prosím, vyplňte {{PLURAL:$2|ho|ich}}.', |
| 1365 | + 'formsavesummary' => 'Nová stránka pomocou [[Special:Form/$1|formulára $1]]', |
| 1366 | + 'formsaveerror' => 'Chyba pri ukladaní formulára', |
| 1367 | + 'formsaveerrortext' => 'Pri ukladaní formulára sa vyskytla neznáma chyba „$1“.', |
| 1368 | +); |
| 1369 | + |
| 1370 | +/** Somali (Soomaaliga) |
| 1371 | + * @author Yariiska |
| 1372 | + */ |
| 1373 | +$messages['so'] = array( |
| 1374 | + 'formsave' => 'Kaydi', |
| 1375 | +); |
| 1376 | + |
| 1377 | +/** Serbian Cyrillic ekavian (Српски (ћирилица)) |
| 1378 | + * @author Sasa Stefanovic |
| 1379 | + */ |
| 1380 | +$messages['sr-ec'] = array( |
| 1381 | + 'formsave' => 'Сачувај', |
| 1382 | + 'formarticleexists' => 'Страна постоји', |
| 1383 | +); |
| 1384 | + |
| 1385 | +/** Serbian Latin ekavian (Srpski (latinica)) |
| 1386 | + * @author Michaello |
| 1387 | + */ |
| 1388 | +$messages['sr-el'] = array( |
| 1389 | + 'formsave' => 'Sačuvaj', |
| 1390 | + 'formarticleexists' => 'Strana postoji', |
| 1391 | +); |
| 1392 | + |
| 1393 | +/** Seeltersk (Seeltersk) |
| 1394 | + * @author Pyt |
| 1395 | + */ |
| 1396 | +$messages['stq'] = array( |
| 1397 | + 'form' => 'Formular', |
| 1398 | + 'formnoname' => 'Naan Formularnoome', |
| 1399 | + 'formnonametext' => 'Du moast n Formularnoome ounreeke, t.B. „{{ns:Special}}:Form/Formularnoome“.', |
| 1400 | + 'formbadname' => 'Falsken Formularnoome', |
| 1401 | + 'formbadnametext' => 'Dät rakt neen Formular mäd dissen Noome', |
| 1402 | + 'formpattern' => '$1-Formular', |
| 1403 | + 'formtitlepattern' => 'Föigje näie $1 bietou', |
| 1404 | + 'formsave' => 'Spiekerje', |
| 1405 | + 'formindexmismatch' => 'Dit Formular häd n Uungliekgewicht twiske Noomensmustere un Foarloagen, ounfangend bie Index $1.', |
| 1406 | + 'formarticleexists' => 'Siede is al deer', |
| 1407 | + 'formarticleexiststext' => 'Ju Siede „[[$1]]“ is al deer.', |
| 1408 | + 'formbadpagename' => 'Ferkierde Siedennoome', |
| 1409 | + 'formbadpagenametext' => 'Do ienroate Formulardoaten moakje n ferkierden Siedennoome: „$1“.', |
| 1410 | + 'formrequiredfielderror' => 'Dät Fäild $1 is n Plichtfäild. Jädden uutfälle.', |
| 1411 | + 'formsavesummary' => 'Näie Siede, ju der ap [[{{ns:Special}}:Form/$1]] basiert', |
| 1412 | + 'formsaveerror' => 'Failer bie dät Spiekerjen fon dät Formular', |
| 1413 | + 'formsaveerrortext' => 'Dät roate n uunbekoanden Failer bie dät Spiekerjen fon ju Siede „$1“.', |
| 1414 | +); |
| 1415 | + |
| 1416 | +/** Sundanese (Basa Sunda) |
| 1417 | + * @author Irwangatot |
| 1418 | + * @author Kandar |
| 1419 | + */ |
| 1420 | +$messages['su'] = array( |
| 1421 | + 'form' => 'Formulir', |
| 1422 | + 'formnoname' => 'Formulir can dingaranan', |
| 1423 | + 'formnonametext' => 'Formulir anjeun kudu boga ngaran, misalna waé "Husus:Formulir/Ngaranformulir".', |
| 1424 | + 'formbadname' => 'Ngaran formulirna teu payus.', |
| 1425 | + 'formbadnametext' => 'Euweuh formulir nu ngaranna kitu.', |
| 1426 | + 'formpattern' => 'Formulir-$1', |
| 1427 | + 'formtitlepattern' => 'Tambahan $1 Anyar', |
| 1428 | + 'formsave' => 'Simpen', |
| 1429 | + 'formindexmismatch' => 'Ieu formulir mibanda pola jeung citakan ngaran nu pasalia ti indéks $1 ka handap.', |
| 1430 | + 'formarticleexists' => 'Kaca Aya', |
| 1431 | + 'formarticleexiststext' => 'Kaca [[$1]] geus aya.', |
| 1432 | + 'formbadpagename' => 'Ngaran judul goréng', |
| 1433 | + 'formbadpagenametext' => 'Data formulir nu diasupkeun ngahasilkeun ngaran kaca nu teu payus, "$1".', |
| 1434 | + 'formsaveerrortext' => "Aya éror nu teu kanyahoan nalika nyimpen kaca '$1'.", |
| 1435 | +); |
| 1436 | + |
| 1437 | +/** Swedish (Svenska) |
| 1438 | + * @author Boivie |
| 1439 | + * @author Lejonel |
| 1440 | + * @author M.M.S. |
| 1441 | + * @author Najami |
| 1442 | + */ |
| 1443 | +$messages['sv'] = array( |
| 1444 | + 'form-desc' => 'Ett [[Special:Form|formulär]] för att börja på nya sidor', |
| 1445 | + 'form' => 'Formulär', |
| 1446 | + 'formnoname' => 'Formulärnamn saknas', |
| 1447 | + 'formnonametext' => 'Du måste ange ett formulärnamn på formen "Special:Form/Formulärnamn".', |
| 1448 | + 'formbadname' => 'Felaktigt formulärnamn', |
| 1449 | + 'formbadnametext' => 'Det finns inget formulär med det namnet.', |
| 1450 | + 'formpattern' => '$1-formulär', |
| 1451 | + 'formtitlepattern' => 'Lägg till ny $1', |
| 1452 | + 'formsave' => 'Spara', |
| 1453 | + 'formindexmismatch-title' => 'Namnmönster och mallfel', |
| 1454 | + 'formindexmismatch' => 'Det här formuläret har opassande namnmönster och mallar som startar på index $1.', |
| 1455 | + 'formarticleexists' => 'Sidan existerar', |
| 1456 | + 'formarticleexiststext' => 'Sidan [[$1]] finns redan.', |
| 1457 | + 'formbadpagename' => 'Dåligt sidnamn', |
| 1458 | + 'formbadrecaptcha' => 'Ogiltiga värden från reCaptcha. Pröva igen.', |
| 1459 | + 'formbadpagenametext' => 'Formulärdatan du skrev in utgör ett ogiltigt sidnamn, "$1".', |
| 1460 | + 'formrequiredfielderror' => '{{PLURAL:$2|Fältet $1|Fälten $1}} behövs för det här formuläret. |
| 1461 | +Var god fyll i {{PLURAL:$1|det|dem}}.', |
| 1462 | + 'formsavesummary' => 'Ny sida använder [[Special:Form/$1|formuläret $1]]', |
| 1463 | + 'formsaveerror' => 'Fel under sparning av formuläret', |
| 1464 | + 'formsaveerrortext' => 'Det uppstod ett okänt fel under sparning av sidan "$1".', |
| 1465 | +); |
| 1466 | + |
| 1467 | +/** Swahili (Kiswahili) |
| 1468 | + * @author Lloffiwr |
| 1469 | + */ |
| 1470 | +$messages['sw'] = array( |
| 1471 | + 'formsave' => 'Hifadhi', |
| 1472 | +); |
| 1473 | + |
| 1474 | +/** Telugu (తెలుగు) |
| 1475 | + * @author Veeven |
| 1476 | + */ |
| 1477 | +$messages['te'] = array( |
| 1478 | + 'form-desc' => 'కొత్త పేజీలను మొదలుపెట్టడానికి ఒక [[Special:Form|ఫారం]]', |
| 1479 | + 'form' => 'ఫారం', |
| 1480 | + 'formnoname' => 'ఫారం పేరు లేదు', |
| 1481 | + 'formnonametext' => 'మీరు తప్పనిసరిగా ఫారానికి ఓ పేరు, "Special:Form/Nameofform" వంటిది ఇవ్వాలి.', |
| 1482 | + 'formbadname' => 'తప్పుడు ఫారం పేరు', |
| 1483 | + 'formbadnametext' => 'అటువంటి పేరుతో ఫారం లేదు.', |
| 1484 | + 'formsave' => 'భద్రపరచు', |
| 1485 | + 'formarticleexists' => 'పేజీ ఉంది', |
| 1486 | + 'formarticleexiststext' => '[[$1]] అనే పేజీ ఇప్పటికే ఉంది.', |
| 1487 | + 'formbadpagename' => 'తప్పుడు పేజీ పేరు', |
| 1488 | + 'formbadrecaptcha' => 'రీకాప్చాకి తప్పుడు విలువలు. మళ్ళీ ప్రయత్నించండి.', |
| 1489 | + 'formsavesummary' => '[[Special:Form/$1|$1 ఫారాన్ని]] వాడి కొత్త పేజీ', |
| 1490 | + 'formsaveerror' => 'ఫారాన్ని భద్రపరచడంలో పొరపాటు', |
| 1491 | + 'formsaveerrortext' => "'$1' పేజీని భద్రపరచడంలో ఏదో తెలియని పొరపాటు జరిగింది.", |
| 1492 | +); |
| 1493 | + |
| 1494 | +/** Tajik (Cyrillic) (Тоҷикӣ (Cyrillic)) |
| 1495 | + * @author Ibrahim |
| 1496 | + */ |
| 1497 | +$messages['tg-cyrl'] = array( |
| 1498 | + 'formnonametext' => 'Шумо бояд номи формро, ба монанди "Special:Form/Nameofform" пешниҳод кунед.', |
| 1499 | + 'formbadname' => 'Номи форми номуносиб', |
| 1500 | + 'formbadnametext' => 'Ҳеҷ форме бо он ном нест.', |
| 1501 | + 'formtitlepattern' => 'Илова $1и нав', |
| 1502 | + 'formsave' => 'Захира кардан', |
| 1503 | + 'formarticleexists' => 'Саҳифа вуҷуд дорад', |
| 1504 | + 'formarticleexiststext' => 'Саҳифа [[$1]] аллакай вуҷуд дорад.', |
| 1505 | + 'formbadpagename' => 'Номи саҳифа номуносиб', |
| 1506 | + 'formbadpagenametext' => 'Додаи форме, ки шумо ворид кардаед номи номуносибе ба саҳифа, "$1" мекунад.', |
| 1507 | + 'formsaveerror' => 'Хато дар ҳоли захираи форм', |
| 1508 | + 'formsaveerrortext' => "Дар ҳоли захираи саҳифаи '$1' хатои ношиносе буд.", |
| 1509 | +); |
| 1510 | + |
| 1511 | +/** Tajik (Latin) (Тоҷикӣ (Latin)) |
| 1512 | + * @author Liangent |
| 1513 | + */ |
| 1514 | +$messages['tg-latn'] = array( |
| 1515 | + 'formnonametext' => 'Şumo bojad nomi formro, ba monandi "Special:Form/Nameofform" peşnihod kuned.', |
| 1516 | + 'formbadname' => 'Nomi formi nomunosib', |
| 1517 | + 'formbadnametext' => 'Heç forme bo on nom nest.', |
| 1518 | + 'formtitlepattern' => 'Ilova $1i nav', |
| 1519 | + 'formsave' => 'Zaxira kardan', |
| 1520 | + 'formarticleexists' => 'Sahifa vuçud dorad', |
| 1521 | + 'formarticleexiststext' => 'Sahifa [[$1]] allakaj vuçud dorad.', |
| 1522 | + 'formbadpagename' => 'Nomi sahifa nomunosib', |
| 1523 | + 'formbadpagenametext' => 'Dodai forme, ki şumo vorid kardaed nomi nomunosibe ba sahifa, "$1" mekunad.', |
| 1524 | + 'formsaveerror' => 'Xato dar holi zaxirai form', |
| 1525 | + 'formsaveerrortext' => "Dar holi zaxirai sahifai '$1' xatoi noşinose bud.", |
| 1526 | +); |
| 1527 | + |
| 1528 | +/** Thai (ไทย) |
| 1529 | + * @author Passawuth |
| 1530 | + */ |
| 1531 | +$messages['th'] = array( |
| 1532 | + 'formsave' => 'บันทึก', |
| 1533 | +); |
| 1534 | + |
| 1535 | +/** Turkmen (Türkmençe) |
| 1536 | + * @author Hanberke |
| 1537 | + */ |
| 1538 | +$messages['tk'] = array( |
| 1539 | + 'formsave' => 'Ýazdyr', |
| 1540 | +); |
| 1541 | + |
| 1542 | +/** Tagalog (Tagalog) |
| 1543 | + * @author AnakngAraw |
| 1544 | + */ |
| 1545 | +$messages['tl'] = array( |
| 1546 | + 'form-desc' => 'Isang [[Special:Form|ugnayang-hangganan ng pormularyo]] upang makapagsimula ng bagong mga pahina', |
| 1547 | + 'form' => 'Pormularyo', |
| 1548 | + 'formnoname' => 'Walang pangalan ng pormularyo', |
| 1549 | + 'formnonametext' => 'Dapat kang magbigay ng isang pangalan ng pormularyo, katulad ng "Special:Form/Pangalanngpormularyo".', |
| 1550 | + 'formbadname' => 'Masamang pangalan ng pormularyo', |
| 1551 | + 'formbadnametext' => 'Walang pormularyong may ganyang pangalan.', |
| 1552 | + 'formpattern' => 'Pormularyong $1', |
| 1553 | + 'formtitlepattern' => 'Magdagdag ng bagong $1', |
| 1554 | + 'formsave' => 'Sagipin', |
| 1555 | + 'formindexmismatch-title' => 'Maling pagtutugma ng kabuoan ng pangalan at suleras', |
| 1556 | + 'formindexmismatch' => 'Ang pormularyong ito ay mayroong hindi magkakatugmang mga kabuoan ng pangalan at mga suleras na nagsisimula sa paksaan/indeks na $1.', |
| 1557 | + 'formarticleexists' => 'Umiiral na ang pahina', |
| 1558 | + 'formarticleexiststext' => 'Umiiral na ang pahinang [[$1]].', |
| 1559 | + 'formbadpagename' => 'Masamang pangalan ng pahina', |
| 1560 | + 'formbadrecaptcha' => "Hindi tamang mga halaga para sa muling pag-Captcha (''reCaptcha''). Subuking muli.", |
| 1561 | + 'formbadpagenametext' => 'Ang ipinasok mong dato sa pormularyo ay gumagawa ng isang masamang pangalan ng pahina, "$1".', |
| 1562 | + 'formrequiredfielderror' => 'Ang {{PLURAL:$2|hanay na $1 ay|mga hanay na $1 ay}} kailangan para sa pormularyong ito. |
| 1563 | +Pakipunuan {{PLURAL:$2|ito|sila}} ng laman.', |
| 1564 | + 'formsavesummary' => 'Bagong pahinang gumagamit ng [[Special:Form/$1|pormularyong $1]]', |
| 1565 | + 'formsaveerror' => 'Kamalian sa pagsagip ng pormularyo', |
| 1566 | + 'formsaveerrortext' => "Nagkaroon ng isang hindi nalalamang kamalian habang sinasagip ang pahinang '$1'.", |
| 1567 | +); |
| 1568 | + |
| 1569 | +/** Turkish (Türkçe) |
| 1570 | + * @author Karduelis |
| 1571 | + * @author Vito Genovese |
| 1572 | + */ |
| 1573 | +$messages['tr'] = array( |
| 1574 | + 'form' => 'Form', |
| 1575 | + 'formnoname' => 'Form adı yok', |
| 1576 | + 'formbadnametext' => 'Bu isimde bir form yok.', |
| 1577 | + 'formtitlepattern' => 'Yeni $1 ekle', |
| 1578 | + 'formsave' => 'Kaydet', |
| 1579 | + 'formarticleexists' => 'Sayfa mevcut', |
| 1580 | + 'formbadpagename' => 'Kötü madde adı', |
| 1581 | + 'formsaveerror' => 'Formu kaydetmede hata', |
| 1582 | +); |
| 1583 | + |
| 1584 | +/** Tatar (Cyrillic) (Татарча/Tatarça (Cyrillic)) |
| 1585 | + * @author Timming |
| 1586 | + */ |
| 1587 | +$messages['tt-cyrl'] = array( |
| 1588 | + 'formsavesummary' => 'Яңа бит, [[Special:Form/$1|$1 формасы]] ярдәмендә', |
| 1589 | +); |
| 1590 | + |
| 1591 | +/** Ukrainian (Українська) |
| 1592 | + * @author Aleksandrit |
| 1593 | + */ |
| 1594 | +$messages['uk'] = array( |
| 1595 | + 'formsave' => 'Зберегти', |
| 1596 | + 'formarticleexists' => 'Сторінка існує', |
| 1597 | +); |
| 1598 | + |
| 1599 | +/** Veps (Vepsan kel') |
| 1600 | + * @author Игорь Бродский |
| 1601 | + */ |
| 1602 | +$messages['vep'] = array( |
| 1603 | + 'form' => 'Form', |
| 1604 | + 'formnoname' => 'Ei ole forman nimed', |
| 1605 | + 'formbadname' => 'Hond forman nimi', |
| 1606 | + 'formpattern' => '$1-form', |
| 1607 | + 'formsave' => 'Panda muštho', |
| 1608 | + 'formbadpagename' => 'Vär lehtpolen nimi', |
| 1609 | +); |
| 1610 | + |
| 1611 | +/** Vietnamese (Tiếng Việt) |
| 1612 | + * @author Minh Nguyen |
| 1613 | + */ |
| 1614 | +$messages['vi'] = array( |
| 1615 | + 'form' => 'Biểu mẫu', |
| 1616 | + 'formnoname' => 'Biểu mẫu không có tên', |
| 1617 | + 'formtitlepattern' => 'Thêm $1 mới', |
| 1618 | + 'formsave' => 'Lưu', |
| 1619 | + 'formarticleexists' => 'Trang đã tồn tại', |
| 1620 | + 'formarticleexiststext' => 'Trang [[$1]] đã tồn tại.', |
| 1621 | + 'formsavesummary' => 'Trang mới theo [[Special:Form/$1|biểu mẫu $1]]', |
| 1622 | + 'formsaveerror' => 'Lỗi lưu biểu mẫu', |
| 1623 | +); |
| 1624 | + |
| 1625 | +/** Volapük (Volapük) |
| 1626 | + * @author Smeira |
| 1627 | + */ |
| 1628 | +$messages['vo'] = array( |
| 1629 | + 'form-desc' => '[[Special:Form|Fomet]] ad primön padis nulik', |
| 1630 | + 'form' => 'Fomet', |
| 1631 | + 'formnoname' => 'Fometanem nonik', |
| 1632 | + 'formnonametext' => 'Mutol penön fometanemi, a.s. „Special:Form/Fometanem“.', |
| 1633 | + 'formbadname' => 'Fometanem no lonöföl', |
| 1634 | + 'formbadnametext' => 'No dabinon fomet labü nem at.', |
| 1635 | + 'formpattern' => 'fomet-$1', |
| 1636 | + 'formtitlepattern' => 'Läükön $1i nulik', |
| 1637 | + 'formsave' => 'Dakipön', |
| 1638 | + 'formarticleexists' => 'Pad dabinon', |
| 1639 | + 'formarticleexiststext' => 'Pad at: [[$1]] ya dabinon.', |
| 1640 | + 'formbadpagename' => 'Padanem no lonöföl', |
| 1641 | + 'formbadpagenametext' => 'Fometanünods fa ol pepenöls jafons padanemi no lonöföl: „$1“.', |
| 1642 | + 'formrequiredfielderror' => 'Fel: $1 paflagon in fomet at. |
| 1643 | +Fulükolös oni.', |
| 1644 | + 'formsavesummary' => 'Pad nulik me [[Special:Form/$1|fomet: $1]]', |
| 1645 | + 'formsaveerror' => 'Pöl pö dakip fometa', |
| 1646 | + 'formsaveerrortext' => 'Pöl nesevädik ejenon dü dakip pada: „$1“.', |
| 1647 | +); |
| 1648 | + |
| 1649 | +/** Yiddish (ייִדיש) |
| 1650 | + * @author פוילישער |
| 1651 | + */ |
| 1652 | +$messages['yi'] = array( |
| 1653 | + 'formsave' => 'אויפֿהיטן', |
| 1654 | +); |
| 1655 | + |
| 1656 | +/** Simplified Chinese (中文(简体)) |
| 1657 | + * @author Gzdavidwong |
| 1658 | + * @author Liangent |
| 1659 | + */ |
| 1660 | +$messages['zh-hans'] = array( |
| 1661 | + 'form' => '表单', |
| 1662 | + 'formnoname' => '没有表单名', |
| 1663 | + 'formnonametext' => '你必须提供一个表单名,如“Special:Form/表单名”。', |
| 1664 | + 'formbadname' => '错误的表单名', |
| 1665 | + 'formbadnametext' => '没有这个名字的表单。', |
| 1666 | + 'formpattern' => '$1-表单', |
| 1667 | + 'formtitlepattern' => '添加新的$1', |
| 1668 | + 'formsave' => '保存', |
| 1669 | + 'formarticleexists' => '页面存在', |
| 1670 | + 'formbadpagename' => '错误的表单名', |
| 1671 | + 'formsaveerror' => '储存表格时发生错误', |
| 1672 | +); |
| 1673 | + |
| 1674 | +/** Traditional Chinese (中文(繁體)) |
| 1675 | + * @author Liangent |
| 1676 | + * @author Wrightbus |
| 1677 | + */ |
| 1678 | +$messages['zh-hant'] = array( |
| 1679 | + 'form' => '表格', |
| 1680 | + 'formnoname' => '未有表格名稱', |
| 1681 | + 'formnonametext' => '你必須提供一個表單名,如“Special:Form/表單名”。', |
| 1682 | + 'formbadname' => '錯誤的表單名', |
| 1683 | + 'formbadnametext' => '沒有這個名字的表單。', |
| 1684 | + 'formpattern' => '$1-表單', |
| 1685 | + 'formtitlepattern' => '添加新的$1', |
| 1686 | + 'formsave' => '儲存', |
| 1687 | + 'formarticleexists' => '頁面存在', |
| 1688 | + 'formbadpagename' => '錯誤的表單名', |
| 1689 | + 'formsaveerror' => '儲存表格時發生錯誤', |
| 1690 | +); |
| 1691 | + |
Property changes on: trunk/extensions/Form/Form.i18n.php |
___________________________________________________________________ |
Name: svn:eol-style |
1 | 1692 | + native |
Index: trunk/extensions/Form/Form.php |
— | — | @@ -0,0 +1,47 @@ |
| 2 | +<?php |
| 3 | +/** |
| 4 | + * Form.php -- Use a form-based interface to start new articles |
| 5 | + * Copyright 2007 Vinismo, Inc. (http://vinismo.com/) |
| 6 | + * |
| 7 | + * This program is free software; you can redistribute it and/or modify |
| 8 | + * it under the terms of the GNU General Public License as published by |
| 9 | + * the Free Software Foundation; either version 2 of the License, or |
| 10 | + * (at your option) any later version. |
| 11 | + * |
| 12 | + * This program is distributed in the hope that it will be useful, |
| 13 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 14 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 15 | + * GNU General Public License for more details. |
| 16 | + * |
| 17 | + * You should have received a copy of the GNU General Public License |
| 18 | + * along with this program; if not, write to the Free Software |
| 19 | + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
| 20 | + * |
| 21 | + * @file |
| 22 | + * @ingroup Extensions |
| 23 | + * @author Evan Prodromou <evan@vinismo.com> |
| 24 | + */ |
| 25 | + |
| 26 | +if ( !defined( 'MEDIAWIKI' ) ) { |
| 27 | + exit( 1 ); |
| 28 | +} |
| 29 | + |
| 30 | +// Set up the new special page |
| 31 | +$dir = dirname( __FILE__ ) . '/'; |
| 32 | +$wgAutoloadClasses['SpecialForm'] = $dir . 'Form.body.php'; # Tell MediaWiki to load the extension body. |
| 33 | +$wgExtensionMessagesFiles['Form'] = $dir . 'Form.i18n.php'; # Load internationalization file |
| 34 | +$wgExtensionAliasesFiles['Form'] = $dir . 'Form.alias.php'; |
| 35 | +$wgSpecialPages['Form'] = 'SpecialForm'; # Let MediaWiki know about your new special page. |
| 36 | + |
| 37 | +// Extension credits that will show up on Special:Version |
| 38 | +$wgExtensionCredits['specialpage'][] = array( |
| 39 | + 'path' => __FILE__, |
| 40 | + 'name' => 'Form', |
| 41 | + 'version' => '0.5.0', |
| 42 | + 'author' => 'Evan Prodromou', |
| 43 | + 'url' => 'http://www.mediawiki.org/wiki/Extension:Form', |
| 44 | + 'descriptionmsg' => 'form-desc', |
| 45 | +); |
| 46 | + |
| 47 | +# Use recaptcha; default to false |
| 48 | +$wgSpecialFormRecaptcha = false; |
Property changes on: trunk/extensions/Form/Form.php |
___________________________________________________________________ |
Name: svn:eol-style |
1 | 49 | + native |
Index: trunk/extensions/Form/Template-Sample.wiki |
— | — | @@ -0,0 +1,15 @@ |
| 2 | +The topic is {{{topic}}}. |
| 3 | + |
| 4 | +The purpose is {{{purpose}}}. |
| 5 | + |
| 6 | +== Introduction == |
| 7 | + |
| 8 | +{{{intro}}} |
| 9 | + |
| 10 | +== Color == |
| 11 | + |
| 12 | +{{{color}}} |
| 13 | + |
| 14 | +== Conclusion == |
| 15 | + |
| 16 | +{{{conclusion}}} |
Property changes on: trunk/extensions/Form/Template-Sample.wiki |
___________________________________________________________________ |
Name: svn:eol-style |
1 | 17 | + native |
Index: trunk/extensions/Form/README |
— | — | @@ -0,0 +1,211 @@ |
| 2 | +MediaWiki Form extension |
| 3 | + |
| 4 | +version 0.2 |
| 5 | +1 Oct 2007 |
| 6 | + |
| 7 | +This is the README file for the Form extension for MediaWiki |
| 8 | +software. The extension is only useful if you've got a MediaWiki |
| 9 | +installation; it can only be installed by the administrator of the site. |
| 10 | + |
| 11 | +The extension lets users create new articles with a form interface. |
| 12 | +Administrators configure a "form definition" in the MediaWiki namespace, |
| 13 | +and the form can be used to create a new article using a particular |
| 14 | +template. |
| 15 | + |
| 16 | +Typical uses: |
| 17 | + |
| 18 | +* "New X" interfaces for wiki newbies. |
| 19 | + |
| 20 | +This is a testing version of the extension and it's almost sure to |
| 21 | +have bugs. See the BUGS section below for info on how to report |
| 22 | +problems. |
| 23 | + |
| 24 | +== License == |
| 25 | + |
| 26 | +Copyright 2007 Vinismo, Inc. (http://vinismo.com/) |
| 27 | + |
| 28 | +This program is free software; you can redistribute it and/or modify |
| 29 | +it under the terms of the GNU General Public License as published by |
| 30 | +the Free Software Foundation; either version 2 of the License, or |
| 31 | +(at your option) any later version. |
| 32 | + |
| 33 | +This program is distributed in the hope that it will be useful, |
| 34 | +but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 35 | +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 36 | +GNU General Public License for more details. |
| 37 | + |
| 38 | +You should have received a copy of the GNU General Public License |
| 39 | +along with this program; if not, write to the Free Software |
| 40 | +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
| 41 | + |
| 42 | +== Author == |
| 43 | + |
| 44 | +Evan Prodromou <evan@vinismo.com> |
| 45 | + |
| 46 | +== Pre-requisites == |
| 47 | + |
| 48 | +This software was tested with MediaWiki 1.10.0 (which is what |
| 49 | +Vinismo was running at the time.) It may or may not work with |
| 50 | +earlier or later versions, but please test it. |
| 51 | + |
| 52 | +== Installation == |
| 53 | + |
| 54 | +To install, copy all the files in the archive you downloaded to the |
| 55 | +Form subdirectory of the extensions subdirectory of your |
| 56 | +MediaWiki installation. Note that the software depends on having its |
| 57 | +code all in the "Form" sub-directory; naming it |
| 58 | +"Form-Test" or "newextension1" or whatever won't work. |
| 59 | + |
| 60 | +In your MediaWiki LocalSettings.php, add the following line some place |
| 61 | +towards the bottom of the file: |
| 62 | + |
| 63 | + require_once("$IP/extensions/Form/Form.php"); |
| 64 | + |
| 65 | +Theoretically it should work out of the box. |
| 66 | + |
| 67 | +== Preparing forms == |
| 68 | + |
| 69 | +To create a new form, you need to do two things: |
| 70 | + |
| 71 | +* Create a "form definition" in the MediaWiki namespace. |
| 72 | +* Create an output template that describes the structure of the |
| 73 | + resulting articles. |
| 74 | + |
| 75 | +Form definitions use a special idiosyncratic syntax that may change in |
| 76 | +the future. |
| 77 | + |
| 78 | +Output templates are just regular ol' MediaWiki templates. They should |
| 79 | +use ''named'' parameters rather than numbered parameters. |
| 80 | + |
| 81 | +There is a sample form definition article in |
| 82 | +"MediaWiki-Sample-form.wiki" that came with this package, and a |
| 83 | +corresponding output template in "Template-Sample.wiki". |
| 84 | + |
| 85 | +== Form definitions == |
| 86 | + |
| 87 | +A form definition article must be named "MediaWiki:nameofform-form", |
| 88 | +where "nameofform" is the name you're going to use for the form. (You |
| 89 | +can change this pattern by changing MediaWiki:Formpattern, but note |
| 90 | +that this will affect all of your forms.) |
| 91 | + |
| 92 | +Each line in the form definition file is either a form attribute or a |
| 93 | +form field definition. Each is described below. |
| 94 | + |
| 95 | +=== Form attributes === |
| 96 | + |
| 97 | +Form attributes define information for the form as a whole. Each |
| 98 | +attribute line looks like: |
| 99 | + |
| 100 | + name=value |
| 101 | + |
| 102 | +Note that no whitespace is tolerated before and after the name. |
| 103 | +Typically form attributes appear at the beginning of an article, but |
| 104 | +they are tolerated anywhere in the article, if you need things that way. |
| 105 | + |
| 106 | +Valid names for form attributes are as follows: |
| 107 | + |
| 108 | +* template: name of the output template (without the namespace prefix) |
| 109 | + that will be used for creating new articles. If this is not defined, |
| 110 | + the default name will be "Template:Name", where "name" is the name |
| 111 | + of the form. |
| 112 | +* title: title that's shown on the form. By default, this is "Add New |
| 113 | + $1", where $1 is the name of the form. You can change the |
| 114 | + default title pattern with by changing MediaWiki:Formtemplatepattern. |
| 115 | +* namePattern: the pattern for new article names. This is based on the |
| 116 | + fields in the form, and uses MediaWiki template-substitution syntax |
| 117 | + (badly... only the simplest syntax is now supported). For example, |
| 118 | + if you are creating articles about sporting events results, and |
| 119 | + there are two form fields "year" and "event", the name pattern might |
| 120 | + be "{{{year}}} {{{event}}} Results". If the user fills in "2004" and |
| 121 | + "World Series", the resulting article will be "2004 World Series |
| 122 | + Results". |
| 123 | +* instructions: plain text (no wikitext or HTML... yet) instructions |
| 124 | + for users of the form. Will be shown at the top of the form before |
| 125 | + any fields. |
| 126 | + |
| 127 | +=== Form field definitions === |
| 128 | + |
| 129 | +Each field in the form has a line defining it in the form definition |
| 130 | +file. The structure of the field definition lines is: |
| 131 | + |
| 132 | + name|label|type|description|options |
| 133 | + |
| 134 | +The parts of the field definition are separated by pipe ("|") |
| 135 | +characters and cannot include pipes themselves (even with "escape" |
| 136 | +characters). The parts of the definition are defined below: |
| 137 | + |
| 138 | +* name: name of the field. It must be unique, and contain only |
| 139 | + alphabetic or numeric characters or the underscore ("_"). This will |
| 140 | + be the parameter name used for the output template. |
| 141 | +* label: readable name for the field, used for labels. No |
| 142 | + restrictions, except for the lack of a pipe. No HTML or wikitext |
| 143 | + allowed (yet). |
| 144 | +* type: type of the form field (see below). |
| 145 | +* description: a user-readable description of the purpose and |
| 146 | + restrictions on the form field. Only shown for 'textarea' fields |
| 147 | + right now, but will eventually be shown for all fields once I figure |
| 148 | + out the layout correctly. |
| 149 | +* options: optional parameters for the field, mostly dependent on the |
| 150 | + field type. options always take the form "name=value", and are |
| 151 | + separated by commas (","). |
| 152 | + |
| 153 | +The description and options parts are optional. |
| 154 | + |
| 155 | +=== Form field types === |
| 156 | + |
| 157 | +The following types of form fields can be created. |
| 158 | + |
| 159 | +* textarea: an HTML textarea, e.g. a big multi-line entry area. These |
| 160 | + are usually used for lots of paragraphs. The following options are |
| 161 | + supported: |
| 162 | +** rows: number of rows; defaults to 6. |
| 163 | +** cols: number of columns; defaults to 80. |
| 164 | +* text: a one-line text input. Takes these options: |
| 165 | +** size: length of the text input; defaults to 30. |
| 166 | +* checkbox: a yes-no, on-off choice for the user. Takes no options. |
| 167 | +* radio: a group of radio buttons; exclusive choices. Radion button |
| 168 | + groups take the following options: |
| 169 | +** items: semicolon-separated (";") list of choices for the user. For |
| 170 | + example, "Blue;Green;Red" will give the user three radio buttons |
| 171 | + labeled "Blue", "Green", and "Red". |
| 172 | +* select: a drop-down box showing multiple exclusive choices for the |
| 173 | + user. Select boxes take the following options: |
| 174 | +** items: semicolon-separated (";") list of choices for the user. For |
| 175 | + example, "Blue;Green;Red" will give the user a drop-down box with |
| 176 | + three choices, "Blue", "Green", and "Red". |
| 177 | + |
| 178 | +All field types support the option 'required'. If this option is 'on', |
| 179 | +'true', 'yes', or '1', saving the form without that field filled in |
| 180 | +will result in an error (and the user is given a chance to enter the |
| 181 | +data again). |
| 182 | + |
| 183 | +== Using forms == |
| 184 | + |
| 185 | +To show a user a form, use the following special-page format: |
| 186 | + |
| 187 | + Special:Form/Name |
| 188 | + |
| 189 | +Where "name" is the name of the form. This will load the form |
| 190 | +definition from "MediaWiki:Name-form", and by default use |
| 191 | +Template:Name for the output template. |
| 192 | + |
| 193 | +The user can fill in the form fields and hit "save" to save the |
| 194 | +article. Note that currently no validation is performed; if the user |
| 195 | +fails to complete a required field, it will be rendered empty. |
| 196 | + |
| 197 | +== Translation == |
| 198 | + |
| 199 | +The user interface strings for this extension are configurable through |
| 200 | +the same Special:Allmessages page as MediaWiki itself. They all start |
| 201 | +with "form", and they're no more or less cryptic than MediaWiki's. |
| 202 | + |
| 203 | +Translations to other languages besides English are welcome; please |
| 204 | +send them along. |
| 205 | + |
| 206 | +== Bugs and enhancements == |
| 207 | + |
| 208 | +Bugs or feature requests can be sent to the author at |
| 209 | +evan@vinismo.com. The TODO file in this distribution has stuff I |
| 210 | +think needs to be todone; + marks show things I've already done, and - |
| 211 | +shows things that are yet to be done. |
| 212 | + |
Property changes on: trunk/extensions/Form/README |
___________________________________________________________________ |
Name: svn:eol-style |
1 | 213 | + native |