r85609 MediaWiki - Code Review archive

Repository:MediaWiki
Revision:r85608‎ | r85609 | r85610 >
Date:07:50, 7 April 2011
Author:catrope
Status:ok
Tags:
Comment:
1.17wmf1: Merge UploadWizard to trunk state as of r85604 (excluding r85606)
Modified paths:
  • /branches/wmf/1.17wmf1/extensions/UploadWizard/SpecialUploadWizard.php (modified) (history)
  • /branches/wmf/1.17wmf1/extensions/UploadWizard/UploadWizard.config.php (modified) (history)
  • /branches/wmf/1.17wmf1/extensions/UploadWizard/UploadWizard.i18n.php (modified) (history)
  • /branches/wmf/1.17wmf1/extensions/UploadWizard/UploadWizard.php (modified) (history)
  • /branches/wmf/1.17wmf1/extensions/UploadWizard/UploadWizardHooks.php (modified) (history)
  • /branches/wmf/1.17wmf1/extensions/UploadWizard/resources/images/18px-Cc-by_new_white.svg.png (added) (history)
  • /branches/wmf/1.17wmf1/extensions/UploadWizard/resources/images/18px-Cc-zero.svg.png (added) (history)
  • /branches/wmf/1.17wmf1/extensions/UploadWizard/resources/images/18px-Share_Alike.svg.png (added) (history)
  • /branches/wmf/1.17wmf1/extensions/UploadWizard/resources/images/24px-spinner-0645ad-e0f0ff.gif (added) (history)
  • /branches/wmf/1.17wmf1/extensions/UploadWizard/resources/mw.UploadWizard.js (modified) (history)
  • /branches/wmf/1.17wmf1/extensions/UploadWizard/resources/mw.UploadWizardDeed.js (modified) (history)
  • /branches/wmf/1.17wmf1/extensions/UploadWizard/resources/mw.UploadWizardLicenseInput.js (modified) (history)
  • /branches/wmf/1.17wmf1/extensions/UploadWizard/resources/mw.UploadWizardUploadInterface.js (modified) (history)
  • /branches/wmf/1.17wmf1/extensions/UploadWizard/resources/uploadWizard.css (modified) (history)

Diff [purge]

Index: branches/wmf/1.17wmf1/extensions/UploadWizard/UploadWizard.config.php
@@ -18,25 +18,166 @@
1919 // If the uploaded file should be auto categorized
2020 'autoCategory' => false,
2121
22 - // These templates must be installed for this to work
 22+ // 'licenses' is a list of licenses you could possibly use elsewhere, for instance in
 23+ // licensesOwnWork or licensesThirdParty.
 24+ // It just describes what licenses go with what wikitext, and how to display them in
 25+ // a menu of license choices. There probably isn't any reason to delete any entry here.
 26+ // Under normal circumstances, the license name is the name of the wikitext template to insert.
 27+ // For those that aren't, there is a "templates" property.
2328 'licenses' => array(
24 - array(
25 - 'template' => 'Cc-by-sa-3.0',
26 - 'messageKey' => 'mwe-upwiz-license-cc-by-sa-3.0',
27 - 'default' => true
 29+ 'cc-by-sa-3.0' => array(
 30+ 'msg' => 'mwe-upwiz-license-cc-by-sa-3.0',
 31+ 'icons' => array( 'cc-by', 'cc-sa' )
2832 ),
29 - array(
30 - 'template' => 'Cc-by-3.0',
31 - 'messageKey' => 'mwe-upwiz-license-cc-by-3.0',
32 - 'default' => false
 33+ 'cc-by-sa-3.0-gfdl' => array(
 34+ 'msg' => 'mwe-upwiz-license-cc-by-sa-3.0-gfdl',
 35+ 'templates' => array( 'gfdl', 'cc-by-sa-3.0' ),
 36+ 'icons' => array( 'cc-by', 'cc-sa' )
3337 ),
34 - array(
35 - 'template' => 'Cc-zero',
36 - 'messageKey' => 'mwe-upwiz-license-cc-zero',
37 - 'default' => false
 38+ 'cc-by-3.0-gfdl' => array(
 39+ 'msg' => 'mwe-upwiz-license-cc-by-3.0-gfdl',
 40+ 'templates' => array( 'gfdl', 'cc-by-3.0' ),
 41+ 'icons' => array( 'cc-by' )
 42+ ),
 43+ 'cc-by-3.0' => array(
 44+ 'msg' => 'mwe-upwiz-license-cc-by-3.0',
 45+ 'icons' => array( 'cc-by' )
 46+ ),
 47+ 'cc-zero' => array(
 48+ 'msg' => 'mwe-upwiz-license-cc-zero',
 49+ 'icons' => array( 'cc-zero' )
 50+ ),
 51+ 'own-pd' => array(
 52+ 'msg' => 'mwe-upwiz-license-own-pd',
 53+ 'icons' => array( 'cc-zero' ),
 54+ 'templates' => array( 'cc-zero' )
 55+ ),
 56+ 'cc-by-sa-2.5' => array(
 57+ 'msg' => 'mwe-upwiz-license-cc-by-sa-2.5',
 58+ 'icons' => array( 'cc-by', 'cc-sa' )
 59+ ),
 60+ 'cc-by-2.5' => array(
 61+ 'msg' => 'mwe-upwiz-license-cc-by-2.5',
 62+ 'icons' => array( 'cc-by' )
 63+ ),
 64+ 'cc-by-sa-2.0' => array(
 65+ 'msg' => 'mwe-upwiz-license-cc-by-sa-2.0',
 66+ 'icons' => array( 'cc-by', 'cc-sa' )
 67+ ),
 68+ 'cc-by-2.0' => array(
 69+ 'msg' => 'mwe-upwiz-license-cc-by-2.0',
 70+ 'icons' => array( 'cc-by' )
 71+ ),
 72+ 'fal' => array(
 73+ 'msg' => 'mwe-upwiz-license-fal'
 74+ ),
 75+ 'pd-old-100' => array(
 76+ 'msg' => 'mwe-upwiz-license-pd-old-100'
 77+ ),
 78+ 'pd-old' => array(
 79+ 'msg' => 'mwe-upwiz-license-pd-old'
 80+ ),
 81+ 'pd-art' => array(
 82+ 'msg' => 'mwe-upwiz-license-pd-art'
 83+ ),
 84+ 'pd-us' => array(
 85+ 'msg' => 'mwe-upwiz-license-pd-us'
 86+ ),
 87+ 'pd-usgov' => array(
 88+ 'msg' => 'mwe-upwiz-license-pd-usgov'
 89+ ),
 90+ 'pd-usgov-nasa' => array(
 91+ 'msg' => 'mwe-upwiz-license-pd-usgov-nasa'
 92+ ),
 93+ 'pd-usgov-military-navy' => array(
 94+ 'msg' => 'mwe-upwiz-license-pd-usgov-military-navy'
 95+ ),
 96+ 'pd-ineligible' => array(
 97+ 'msg' => 'mwe-upwiz-license-pd-ineligible'
 98+ ),
 99+ 'pd-textlogo' => array(
 100+ 'msg' => 'mwe-upwiz-license-pd-textlogo',
 101+ 'templates' => array( 'trademarked', 'pd-textlogo' )
 102+ ),
 103+ 'copyrighted-free-use' => array(
 104+ 'msg' => 'mwe-upwiz-license-copyrighted-free-use'
 105+ ),
 106+ 'attribution' => array(
 107+ 'msg' => 'mwe-upwiz-license-attribution'
 108+ ),
 109+ 'gfdl' => array(
 110+ 'msg' => 'mwe-upwiz-license-gfdl'
38111 )
39112 ),
40113
 114+ // radio button selection of some licenses
 115+ 'licensesOwnWork' => array(
 116+ 'type' => 'or',
 117+ 'filterTemplate' => 'self',
 118+ 'licenses' => array(
 119+ 'cc-by-sa-3.0',
 120+ 'cc-by-3.0',
 121+ 'own-pd'
 122+ ),
 123+ 'defaults' => array( 'cc-by-sa-3.0' )
 124+ ),
 125+
 126+ // checkbox selection of all licenses
 127+ 'licensesThirdParty' => array(
 128+ 'type' => 'and',
 129+ 'licenseGroups' => array(
 130+ array(
 131+ // This should be a list of all CC licenses we can reasonably expect to find around the web
 132+ 'head' => 'mwe-upwiz-license-cc-head',
 133+ 'subhead' => 'mwe-upwiz-license-cc-subhead',
 134+ 'licenses' => array(
 135+ 'cc-by-sa-3.0',
 136+ 'cc-by-sa-2.5',
 137+ 'cc-by-3.0',
 138+ 'cc-by-2.5',
 139+ 'cc-zero'
 140+ )
 141+ ),
 142+ array(
 143+ // n.b. as of April 2011, Flickr still uses CC 2.0 licenses.
 144+ // The White House also has an account there, hence the Public Domain US Government license
 145+ 'head' => 'mwe-upwiz-license-flickr-head',
 146+ 'subhead' => 'mwe-upwiz-license-flickr-subhead',
 147+ 'prependTemplates' => array( 'flickrreview' ),
 148+ 'licenses' => array(
 149+ 'cc-by-sa-2.0',
 150+ 'cc-by-2.0',
 151+ 'pd-usgov',
 152+ )
 153+ ),
 154+ array(
 155+ 'head' => 'mwe-upwiz-license-public-domain-head',
 156+ 'licenses' => array(
 157+ 'pd-old-100',
 158+ 'pd-old',
 159+ 'pd-art',
 160+ 'pd-us',
 161+ )
 162+ ),
 163+ array(
 164+ // omitted navy because it is believed only MultiChil uses it heavily. Could add it back
 165+ 'head' => 'mwe-upwiz-license-usgov-head',
 166+ 'licenses' => array(
 167+ 'pd-usgov',
 168+ 'pd-usgov-nasa'
 169+ )
 170+ ),
 171+ array(
 172+ 'head' => 'mwe-upwiz-license-misc',
 173+ 'licenses' => array(
 174+ 'fal'
 175+ )
 176+ )
 177+ ),
 178+ 'defaults' => array(),
 179+ ),
 180+
 181+
41182 // Default thumbnail width
42183 'thumbnailWidth' => 120,
43184
@@ -113,5 +254,11 @@
114255
115256 // Check if we have the firefogg upload api module enabled:
116257 'enableFirefoggChunkUpload' => isset( $wgAPIModules['firefoggupload'] )? true : false,
 258+
 259+ // Set skipTutorial to true to always skip tutorial step
 260+ 'skipTutorial' => false,
 261+
 262+ // Wiki page for leaving Upload Wizard feedback, for example 'Commons:Upload wizard feedback'
 263+ 'feedbackPage' => '',
117264
118265 );
Index: branches/wmf/1.17wmf1/extensions/UploadWizard/UploadWizardHooks.php
@@ -173,6 +173,7 @@
174174 'mwe-upwiz-source-thirdparty-intro',
175175 'mwe-upwiz-source-thirdparty-custom-multiple-intro',
176176 'mwe-upwiz-source-thirdparty-license',
 177+ 'mwe-upwiz-source-thirdparty-cases',
177178 'mwe-upwiz-source-thirdparty-accept',
178179 'mwe-upwiz-source-custom',
179180 'mwe-upwiz-more-options',
@@ -242,8 +243,6 @@
243244 'mwe-upwiz-file-need-complete',
244245 'mwe-upwiz-deeds-need-deed',
245246 'mwe-upwiz-deeds-need-license',
246 - 'mwe-upwiz-license-incompatible-pd',
247 - 'mwe-upwiz-license-incompatible-cc',
248247 'mwe-upwiz-license-show-all-any-license',
249248 'mwe-upwiz-license-show-all',
250249 'mwe-upwiz-license-show-recommended',
@@ -261,6 +260,35 @@
262261 'mwe-upwiz-license-cc-zero',
263262 'mwe-upwiz-license-gfdl',
264263 'mwe-upwiz-license-pd-us',
 264+ 'mwe-upwiz-license-cc-by-sa-2.5',
 265+ 'mwe-upwiz-license-cc-by-2.5',
 266+ 'mwe-upwiz-license-cc-by-sa-2.0',
 267+ 'mwe-upwiz-license-cc-by-2.0',
 268+ 'mwe-upwiz-license-fal',
 269+ 'mwe-upwiz-license-own-pd',
 270+ 'mwe-upwiz-license-pd-old-100',
 271+ 'mwe-upwiz-license-pd-old',
 272+ 'mwe-upwiz-license-pd-art',
 273+ 'mwe-upwiz-license-pd-us',
 274+ 'mwe-upwiz-license-pd-usgov',
 275+ 'mwe-upwiz-license-pd-usgov-nasa',
 276+ 'mwe-upwiz-license-pd-usgov-military-navy',
 277+ 'mwe-upwiz-license-pd-ineligible',
 278+ 'mwe-upwiz-license-pd-ineligible-help',
 279+ 'mwe-upwiz-license-pd-textlogo',
 280+ 'mwe-upwiz-license-copyrighted-free-use',
 281+ 'mwe-upwiz-license-attribution',
 282+ 'mwe-upwiz-license-gfdl',
 283+ 'mwe-upwiz-license-cc-by-sa-3.0-gfdl',
 284+ 'mwe-upwiz-license-cc-by-3.0-gfdl',
 285+ 'mwe-upwiz-license-cc-head',
 286+ 'mwe-upwiz-license-cc-subhead',
 287+ 'mwe-upwiz-license-flickr-head',
 288+ 'mwe-upwiz-license-flickr-subhead',
 289+ 'mwe-upwiz-license-public-domain-head',
 290+ 'mwe-upwiz-license-public-domain-subhead',
 291+ 'mwe-upwiz-license-usgov-head',
 292+ 'mwe-upwiz-license-misc',
265293 'mwe-upwiz-categories',
266294 'mwe-upwiz-categories-add',
267295 'mwe-upwiz-category-remove',
@@ -268,7 +296,17 @@
269297 'mwe-upwiz-help-popup',
270298 'mwe-upwiz-help-popup-title',
271299 'mwe-upwiz-thumbnail-failed',
272 - 'mwe-upwiz-unparseable-filename'
 300+ 'mwe-upwiz-unparseable-filename',
 301+ 'mwe-upwiz-feedback-note',
 302+ 'mwe-upwiz-feedback-subject',
 303+ 'mwe-upwiz-feedback-message',
 304+ 'mwe-upwiz-feedback-title',
 305+ 'mwe-upwiz-feedback-cancel',
 306+ 'mwe-upwiz-feedback-submit',
 307+ 'mwe-upwiz-feedback-adding',
 308+ 'mwe-upwiz-feedback-error1',
 309+ 'mwe-upwiz-feedback-error2',
 310+ 'mwe-upwiz-feedback-error3'
273311 ),
274312 'group' => 'ext.uploadWizard'
275313 ),
Index: branches/wmf/1.17wmf1/extensions/UploadWizard/UploadWizard.i18n.php
@@ -99,13 +99,14 @@
100100 'mwe-upwiz-source-ownwork' => '{{PLURAL:$1|This file is|These files are}} my own work.',
101101 'mwe-upwiz-source-ownwork-assert-any-license' => 'I, $2, the copyright holder of {{PLURAL:$1|this work|these works}}, hereby irrevocably grant anyone the right to use, modify and redistribute {{PLURAL:$1|this work|these works}} for any purpose, and I therefore publish {{PLURAL:$1|it|them}} under the following terms:',
102102 'mwe-upwiz-source-ownwork-assert' => 'I, $2, the copyright holder of {{PLURAL:$1|this work|these works}}, hereby irrevocably grant anyone the right to use {{PLURAL:$1|this work|these works}} for any purpose, as long as they credit me and share derivative work under the same terms.',
103 - 'mwe-upwiz-source-ownwork-assert-custom' => 'I, $2, the copyright holder of {{PLURAL:$1|this work|these works}}, hereby publish {{PLURAL:$1|this work|these works}} under the following license(s):',
 103+ 'mwe-upwiz-source-ownwork-assert-custom' => 'I, $2, the copyright holder of {{PLURAL:$1|this work|these works}}, hereby publish {{PLURAL:$1|this work|these works}} under the following license:',
104104 'mwe-upwiz-source-ownwork-assert-note' => 'This means you release your work under a Creative Commons Attribution ShareAlike license.',
105105 'mwe-upwiz-source-permission' => 'Their author gave you explicit permission to upload them',
106106 'mwe-upwiz-source-thirdparty' => '{{PLURAL:$1|This file is|These files are}} not my own work.',
107107 'mwe-upwiz-source-thirdparty-intro' => 'Please enter the address where you found each file.',
108108 'mwe-upwiz-source-thirdparty-custom-multiple-intro' => 'If all files have the same source, author, and copyright status, you may enter them only once for all of them.',
109109 'mwe-upwiz-source-thirdparty-license' => 'The copyright holder of {{PLURAL:$1|this work|these works}} published {{PLURAL:$1|it|them}} under the following license(s):',
 110+ 'mwe-upwiz-source-thirdparty-cases' => 'Now tell us why you are sure {{SITENAME}} has the right to publish {{PLURAL:$1|this work|these works}}:',
110111 'mwe-upwiz-source-thirdparty-accept' => 'OK',
111112 'mwe-upwiz-source-custom' => 'Provide copyright information for each file individually on the next page.',
112113 'mwe-upwiz-more-options' => 'more options...',
@@ -199,14 +200,45 @@
200201 'mwe-upwiz-error-bad-chars' => 'This field contains symbols that are not allowed.
201202 Please do not use wikitext or HTML here.',
202203 'mwe-upwiz-error-date' => 'Please enter a valid date in YYYY-MM-DD format, or pick a date from the popup calendar.',
203 - /* LICENSES */
204 - /* may be redundant with WikimediaLicenseTexts? */
 204+
 205+ /* LICENSES & combinations of licenses */
 206+ /* may be a good idea to shift to WikimediaLicenseTexts? */
205207 'mwe-upwiz-license-cc-by-sa-3.0' => 'Creative Commons Attribution ShareAlike 3.0',
206208 'mwe-upwiz-license-cc-by-3.0' => 'Creative Commons Attribution 3.0',
 209+ 'mwe-upwiz-license-cc-by-sa-2.5' => 'Creative Commons Attribution ShareAlike 2.5',
 210+ 'mwe-upwiz-license-cc-by-2.5' => 'Creative Commons Attribution 2.5',
 211+ 'mwe-upwiz-license-cc-by-sa-2.0' => 'Creative Commons Attribution ShareAlike 2.0',
 212+ 'mwe-upwiz-license-cc-by-2.0' => 'Creative Commons Attribution 2.0',
207213 'mwe-upwiz-license-cc-zero' => 'Creative Commons CC0 Waiver (public domain)',
 214+ 'mwe-upwiz-license-fal' => 'Free Artistic License',
 215+ 'mwe-upwiz-license-own-pd' => 'Public domain (all rights waived with Creative Commons Zero license)',
 216+ 'mwe-upwiz-license-pd-old-100' => 'Author died more than 100 years ago',
 217+ 'mwe-upwiz-license-pd-old' => 'Author died more than 70 years ago',
 218+ 'mwe-upwiz-license-pd-art' => 'Reproduction of a painting that is in the public domain because of its age',
 219+ 'mwe-upwiz-license-pd-us' => 'First published in the United States before 1923',
 220+ 'mwe-upwiz-license-pd-usgov' => 'Original work of the US Federal Government',
 221+ 'mwe-upwiz-license-pd-usgov-nasa' => 'Original work of NASA',
 222+ 'mwe-upwiz-license-pd-usgov-military-navy' => 'Original work of the US Military Navy',
 223+ 'mwe-upwiz-license-pd-ineligible' => 'Too simple to be copyrighted',
 224+ 'mwe-upwiz-license-pd-ineligible-help' => 'Be careful with this one. The image has to be very simple, like a green circle or red square',
 225+ 'mwe-upwiz-license-pd-textlogo' => 'Logo with only simple text (wordmark)',
 226+ 'mwe-upwiz-license-copyrighted-free-use' => 'Copyrighted, but may be used for any purpose, including commercially',
 227+ 'mwe-upwiz-license-attribution' => 'May be used for any purpose, including commercially, if the copyright holder is properly attributed',
208228 'mwe-upwiz-license-gfdl' => 'GNU Free Documentation License',
209 - /* this is just for testing, we are not going to privilege the US and A */
210 - 'mwe-upwiz-license-pd-us' => 'Public Domain (US)',
 229+ 'mwe-upwiz-license-cc-by-sa-3.0-gfdl' => 'Copyleft, attribution required (GFDL, CC-BY-SA-3.0)',
 230+ 'mwe-upwiz-license-cc-by-3.0-gfdl' => 'Attribution required (GFDL, CC-BY-SA-3.0)',
 231+
 232+ 'mwe-upwiz-license-cc-head' => 'The copyright holder published {{PLURAL:$1|this work|these works}} with the right Creative Commons license',
 233+ 'mwe-upwiz-license-cc-subhead' => 'Not all Creative Commons licenses are good for {{SITENAME}} -- make sure the copyright holder used one of these licenses.',
 234+
 235+ 'mwe-upwiz-license-flickr-head' => 'The copyright holder published their {{PLURAL:$1|photo or video|photos or videos}} on Flickr with the right license',
 236+ 'mwe-upwiz-license-flickr-subhead' => 'Check the "License" header on the side of the Flickr page. Both the icons and license name that they used have to match one of the choices here.',
 237+
 238+ 'mwe-upwiz-license-public-domain-head' => 'The copyright has definitely expired',
 239+
 240+ 'mwe-upwiz-license-usgov-head' => '{{PLURAL:$1|This work was|These works were}} made by the United States government',
 241+ 'mwe-upwiz-license-misc' => 'Miscellaneous reasons',
 242+
211243 'mwe-upwiz-categories' => 'Categories',
212244 'mwe-upwiz-categories-add' => 'Add',
213245 'mwe-upwiz-category-remove' => 'Remove this category',
@@ -214,8 +246,20 @@
215247 'mwe-upwiz-help-popup' => 'Help',
216248 'mwe-upwiz-help-popup-title' => 'Title',
217249 'mwe-upwiz-thumbnail-failed' => 'The upload succeeded, but the server could not get a preview thumbnail',
218 - 'mwe-upwiz-unparseable-filename' => 'Could not understand the file name "$1"'
 250+ 'mwe-upwiz-unparseable-filename' => 'Could not understand the file name "$1"',
219251
 252+ /* Feedback interface */
 253+ 'mwe-upwiz-feedback-note' => 'Your feedback will be posted to $1.',
 254+ 'mwe-upwiz-feedback-subject' => 'Subject:',
 255+ 'mwe-upwiz-feedback-message' => 'Message (without a signature):',
 256+ 'mwe-upwiz-feedback-title' => 'Leave feedback about Upload Wizard',
 257+ 'mwe-upwiz-feedback-cancel' => 'Cancel',
 258+ 'mwe-upwiz-feedback-submit' => 'Submit Feedback',
 259+ 'mwe-upwiz-feedback-adding' => 'Adding feedback to page...',
 260+ 'mwe-upwiz-feedback-error1' => 'Error: Unrecognized result from API',
 261+ 'mwe-upwiz-feedback-error2' => 'Error: Edit failed',
 262+ 'mwe-upwiz-feedback-error3' => 'Error: No response from API'
 263+
220264 );
221265
222266 /** Message documentation (Message documentation)
@@ -262,6 +306,11 @@
263307 'mwe-upwiz-categories-add' => '{{Identical|Add}}',
264308 'mwe-upwiz-help-popup' => '{{Identical|Help}}',
265309 'mwe-upwiz-help-popup-title' => '{{Identical|Title}}',
 310+ 'mwe-upwiz-feedback-subject' => 'Label for a text input',
 311+ 'mwe-upwiz-feedback-message' => 'Label for a textarea; signature referrs to a Wikitext signature.',
 312+ 'mwe-upwiz-feedback-cancel' => 'Button label',
 313+ 'mwe-upwiz-feedback-submit' => 'Button label',
 314+ 'mwe-upwiz-feedback-adding' => 'Progress notice'
266315 );
267316
268317 /** Afrikaans (Afrikaans)
@@ -409,8 +458,10 @@
410459 'mwe-upwiz-api-error-badtoken' => 'Унутраная памылка: няслушны ключ.',
411460 'mwe-upwiz-api-error-fetchfileerror' => 'Унутраная памылка: падчас атрыманьня файла штосьці здарылася.',
412461 'mwe-upwiz-api-error-duplicate' => 'Ужо {{PLURAL:$1|існуе [$2 іншы файл]|існуюць [$2 іншыя файлы]}} з такім жа зьместам',
 462+ 'mwe-upwiz-api-error-duplicate-popup-title' => '{{PLURAL:$1|Ідэнтычны файл|Ідэнтычныя файлы}}',
413463 'mwe-upwiz-api-error-timeout' => 'Сэрвэр не адказаў у чаканы тэрмін.',
414 - 'mwe-upwiz-api-warning-exists' => 'У {{GRAMMAR:месны|{{SITENAME}}}} ўжо існуе іншы файл з такой жа назвай',
 464+ 'mwe-upwiz-api-error-noimageinfo' => 'Файл загружаны, але сэрвэр ня даў пра яго ніякай інфармацыі.',
 465+ 'mwe-upwiz-api-warning-exists' => 'Ужо існуе [$1 іншы файл] з такой жа назвай',
415466 'mwe-upwiz-tutorial-error-localized-file-missing' => 'Прабачце, даведка на Вашай мове ня знойдзеная. Будзе паказаная даведка на ангельскай мове.',
416467 'mwe-upwiz-tutorial-error-file-missing' => 'Прабачце, файлы для даведкі ня знойдзеныя. Зьвярніцеся да сыстэмнага адміністратара.',
417468 'mwe-upwiz-tutorial-error-cannot-transform' => 'Прабачце, немагчыма атрымаць маштабаваную выяву даведкі, каб умесьціць у экран. Прычынай можа быць часовая праблема ў ВікіСховішчы. Паспрабуйце зноў пазьней.',
@@ -488,6 +539,7 @@
489540 'mwe-upwiz-thanks-wikitext' => '<b>Для выкарыстаньня файла ў вікі</b> скапіюйце гэты тэкст на старонку:',
490541 'mwe-upwiz-thanks-url' => '<b>Для даданьня HTML-спасылкі</b> скапіюйце наступны URL-адрас:',
491542 'mwe-upwiz-upload-error-bad-filename-extension' => '{{SITENAME}} не прымае назвы файлаў з пашырэньнем «.$1».',
 543+ 'mwe-upwiz-upload-error-bad-filename-no-extension' => '{{SITENAME}} патрабуе наяўнасьці пашырэньня ў назьве, напрыклад, «.JPG» на канцы.',
492544 'mwe-upwiz-allowed-filename-extensions' => 'Дазволеныя пашырэньні файлаў:',
493545 'mwe-upwiz-help-allowed-filename-extensions' => 'Дазволеныя пашырэньні файлаў',
494546 'mwe-upwiz-upload-error-duplicate' => 'Гэты файл ужо быў загружаны ў {{GRAMMAR:вінавальны|{{SITENAME}}}}.',
@@ -516,7 +568,7 @@
517569 'mwe-upwiz-dialog-title' => 'Файлы могуць быць загружаныя з назвамі на любой мове любым альфабэтам (у кадаваньні UTF-8). Варта, каб па назвах файлаў быў зразумелы іх зьмест.',
518570 'mwe-upwiz-tooltip-description' => "Коратка апішыце ўсё значнае пра гэты файл. Для фота, узгадайце пра асноўны аб'ект, выпадак ці месца.",
519571 'mwe-upwiz-tooltip-categories' => 'Дадайце [$1 катэгорыі] да файла, каб яго можна было лягчэй знайсьці.',
520 - 'mwe-upwiz-tooltip-other' => 'Любая іншая інфармацыя, якую Вы жадаеце дадаць пра гэтую працу. Тут можна дадаць <a target="_blank" href="http://commons.wikimedia.org/wiki/Commons:Geocoding">геаграфічнае месцазнаходжаньне</a>.',
 572+ 'mwe-upwiz-tooltip-other' => 'Любая іншая інфармацыя, якую Вы жадаеце дадаць пра гэтую працу: геаграфічныя каардынаты, спасылкі на іншыя вэрсіі і іншае.',
521573 'mwe-upwiz-tooltip-more-info' => 'Даведацца болей.',
522574 'mwe-upwiz-file-need-file' => 'Калі ласка, спачатку дадайце файлы.',
523575 'mwe-upwiz-file-need-start' => 'Націсьніце гэтую кнопку, каб пачаць загрузку.',
@@ -545,7 +597,7 @@
546598 'mwe-upwiz-error-date' => 'Калі ласка, пазначце дату ў фармаце ГГГГ-ММ-ДД, ці выберыце з выкіднога календара.',
547599 'mwe-upwiz-license-cc-by-sa-3.0' => 'Creative Commons Attribution-Share Alike 3.0',
548600 'mwe-upwiz-license-cc-by-3.0' => 'Creative Commons Attribution 3.0',
549 - 'mwe-upwiz-license-cc-zero' => 'Creative Commons CC0 Waiver',
 601+ 'mwe-upwiz-license-cc-zero' => 'Creative Commons CC0 Waiver (грамадзкі набытак)',
550602 'mwe-upwiz-license-gfdl' => 'GNU Free Documentation License',
551603 'mwe-upwiz-categories' => 'Катэгорыі',
552604 'mwe-upwiz-categories-add' => 'Дадаць',
@@ -553,6 +605,8 @@
554606 'mwe-upwiz-thanks-caption' => 'Дадайце сюды загаловак',
555607 'mwe-upwiz-help-popup' => 'Дапамога',
556608 'mwe-upwiz-help-popup-title' => 'Загаловак',
 609+ 'mwe-upwiz-thumbnail-failed' => 'Файл загружаны, але сэрвэр ня змог здабыць мініятуру файла',
 610+ 'mwe-upwiz-unparseable-filename' => 'Незразумелая назва файла «$1»',
557611 );
558612
559613 /** Bulgarian (Български)
@@ -720,7 +774,7 @@
721775 'mwe-upwiz-api-error-overwrite' => "N'eo ket aotreet frikañ ur restr zo anezhi c'hoazh.",
722776 'mwe-upwiz-api-error-badtoken' => 'Fazi diabarzh : "jedouer" fall.',
723777 'mwe-upwiz-api-error-fetchfileerror' => 'Fazi diabarzh : aet ez eus un dra bennak a-dreuz en ur glask adtapout ar restr.',
724 - 'mwe-upwiz-api-error-duplicate' => 'Ur restr all enni an hevelep danvez zo er wiki dija',
 778+ 'mwe-upwiz-api-error-duplicate' => "Bez' {{PLURAL:$1|ez eus [$2 restr all]|[$2 restr all]}} gant an hevelep danvez war al lec'hienn-mañ c'hoazh",
725779 'mwe-upwiz-api-error-timeout' => "N'eo ket bet ar servijer evit respont en termen lakaet.",
726780 'mwe-upwiz-api-warning-exists' => 'Ur restr all dezhi an hevelep anv zo er wiki dija',
727781 'mwe-upwiz-tutorial-error-localized-file-missing' => "Digarezit, n'on eus ket kavet un tutorial en ho yezh. Ar stumm saoznek a zo diskouezet e plas.",
@@ -747,6 +801,7 @@
748802 'mwe-upwiz-file-some-failed' => "Lod eus an enporzhioù o deus c'hwitet",
749803 'mwe-upwiz-file-retry' => "Adklask an enporzhiadennoù c'hwitet",
750804 'mwe-upwiz-next-file-despite-failures' => "Kenderc'hel memestra",
 805+ 'mwe-upwiz-skip-tutorial-future' => 'Lammat ar bazenn-mañ kentañ tro',
751806 'mwe-upwiz-file-all-failed' => "Hini ebet eus an enporzhiadennoù n'int aet da benn.",
752807 'mwe-upwiz-upload-count' => '$1 restr{{PLURAL:$1||}} war $2 a zo karget',
753808 'mwe-upwiz-progressbar-uploading' => 'o kargañ',
@@ -859,7 +914,7 @@
860915 'mwe-upwiz-error-date' => 'Trugarez da reiñ ur deiziad reizh dindan ar stumm YYYY-MM-DD, pe dibab unan e-touez ar re kinniget e prenestr an deiziataer.',
861916 'mwe-upwiz-license-cc-by-sa-3.0' => 'Creative Commons Attribution ShareAlike 3.0',
862917 'mwe-upwiz-license-cc-by-3.0' => 'Creative Commons Deroadenn 3.0',
863 - 'mwe-upwiz-license-cc-zero' => 'Dilez Creative Commons CC0',
 918+ 'mwe-upwiz-license-cc-zero' => 'Creative Commons CC0 Dilez (domani foran)',
864919 'mwe-upwiz-license-gfdl' => 'Aotre implijout teuliaouiñ frank GNU',
865920 'mwe-upwiz-categories' => 'Rummadoù',
866921 'mwe-upwiz-categories-add' => 'Ouzhpennañ',
@@ -1382,6 +1437,7 @@
13831438 * @author McDutchie
13841439 * @author Purodha
13851440 * @author The Evil IP address
 1441+ * @author ✓
13861442 */
13871443 $messages['de'] = array(
13881444 'uploadwizard' => 'Assistent zum Hochladen von Dateien',
@@ -1469,6 +1525,7 @@
14701526 'mwe-upwiz-source-thirdparty-intro' => 'Bitte gib die Internet-Adresse an, unter der du jede der Dateien gefunden hast.',
14711527 'mwe-upwiz-source-thirdparty-custom-multiple-intro' => 'Sofern alle Dateien aus der selben Quelle und vom selben Autor stammen sowie den selben urheberrechtlichen Status haben, kannst du die Eingaben für alle auf einmal vornehmen.',
14721528 'mwe-upwiz-source-thirdparty-license' => 'Der Rechteinhaber {{PLURAL:$1|dieses Werks hat es|dieser Werke hat sie}} gemäß folgender Lizenz(en) veröffentlicht:',
 1529+ 'mwe-upwiz-source-thirdparty-cases' => 'Bitte teile uns mit, warum du dir sicher bist, dass {{SITENAME}} das Recht zur Veröffentlichung {{PLURAL:$1|dieses Werks|dieser Werke}} hat:',
14731530 'mwe-upwiz-source-thirdparty-accept' => 'OK',
14741531 'mwe-upwiz-source-custom' => 'Gib auf der nächsten Seite die Urheberrechtsinformation für jede einzelne Datei an.',
14751532 'mwe-upwiz-more-options' => 'weitere Optionen …',
@@ -1560,8 +1617,34 @@
15611618 'mwe-upwiz-error-date' => 'Bitte ein gültiges Datum im Format JJJJ-MM-TT eingeben oder ein Datum aus dem Popup-Kalender wählen.',
15621619 'mwe-upwiz-license-cc-by-sa-3.0' => 'Creative Commons „Namensnennung, Weitergabe unter gleichen Bedingungen 3.0“',
15631620 'mwe-upwiz-license-cc-by-3.0' => 'Creative Commons „Namensnennung 3.0“',
 1621+ 'mwe-upwiz-license-cc-by-sa-2.5' => 'Creative Commons „Namensnennung, Weitergabe unter gleichen Bedingungen 2.5“',
 1622+ 'mwe-upwiz-license-cc-by-2.5' => 'Creative Commons „Namensnennung 2.5“',
 1623+ 'mwe-upwiz-license-cc-by-sa-2.0' => 'Creative Commons „Namensnennung, Weitergabe unter gleichen Bedingungen 2.5“',
 1624+ 'mwe-upwiz-license-cc-by-2.0' => 'Creative Commons „Namensnennung 2.0“',
15641625 'mwe-upwiz-license-cc-zero' => 'Creative Commons „CC0 1.0 Universal“ (Gemeinfreiheit)',
 1626+ 'mwe-upwiz-license-fal' => 'Lizenz Freie Kunst',
 1627+ 'mwe-upwiz-license-own-pd' => 'Gemeinfreiheit (auf alle Rechte wird gemäß Creative Commons „CC0 1.0 Universal“ verzichtet)',
 1628+ 'mwe-upwiz-license-pd-old-100' => 'Der Autor ist vor mehr als 100 Jahren verstorben',
 1629+ 'mwe-upwiz-license-pd-old' => 'Der Autor ist vor mehr als 70 Jahren verstorben',
 1630+ 'mwe-upwiz-license-pd-art' => 'Reproduktion eines Gemäldes, das aufgrund seines Alters gemeinfrei ist',
 1631+ 'mwe-upwiz-license-pd-usgov' => 'Ein Werk der US-amerikanischen Bundesregierung',
 1632+ 'mwe-upwiz-license-pd-usgov-nasa' => 'Ein Werk der NASA',
 1633+ 'mwe-upwiz-license-pd-usgov-military-navy' => 'Ein Werk der US-amerikanischen Marine',
 1634+ 'mwe-upwiz-license-pd-ineligible' => 'Unzureichende Schöpfungshöhe, um urheberrechtlich geschützt sein zu können',
 1635+ 'mwe-upwiz-license-pd-ineligible-help' => 'Diese Kennzeichnung ist mit Vorsicht anzuwenden. Das Werk hat hierfür sehr einfach ausgestaltet zu sein, bspw. wie ein grüner Kreis oder ein rotes Quadrat.',
 1636+ 'mwe-upwiz-license-pd-textlogo' => 'Logo mit einfachem Text (Wortmarke)',
 1637+ 'mwe-upwiz-license-copyrighted-free-use' => 'Urheberrechtlich geschützt, darf aber für jeden – auch kommerziellen – Zweck genutzt werden',
 1638+ 'mwe-upwiz-license-attribution' => 'Darf für jeden – auch kommerziellen – Zweck genutzt werden, sofern der Urheberrechtsinhaber richtig genannt wird',
15651639 'mwe-upwiz-license-gfdl' => 'GNU-Lizenz für freie Dokumentation',
 1640+ 'mwe-upwiz-license-cc-by-sa-3.0-gfdl' => 'Copyleft, Namensnennung erforderlich (GFDL, CC-BY-SA-3.0)',
 1641+ 'mwe-upwiz-license-cc-by-3.0-gfdl' => 'Namensnennung erforderlich (GFDL, CC-BY-SA-3.0)',
 1642+ 'mwe-upwiz-license-cc-head' => 'Der Urheberrechtsinhaber hat {{PLURAL:$1|dieses Werk|diese Werke}} gemäß der richtigen Creative Commons-Lizenz lizenziert',
 1643+ 'mwe-upwiz-license-cc-subhead' => 'Nicht alle Creative Commons-Lizenzen sind für {{SITENAME}} geeignet. Es muss sichergestellt sein, dass der Urheberrechtsinhaber eine dieser Lizenzen nutzte.',
 1644+ 'mwe-upwiz-license-flickr-head' => 'Der Urheberrechtsinhaber hat {{PLURAL:$1|sein Foto oder Video|seine Fotos oder Videos}} auf Flickr gemäß der richtigen Lizenz veröffentlicht',
 1645+ 'mwe-upwiz-license-flickr-subhead' => 'Bitte das „Lizenz“-Feld am Rand der Flickr-Seite überprüfen. Sowohl Symbol als auch Lizenzname müssen einer der Optionen hier entsprechen.',
 1646+ 'mwe-upwiz-license-public-domain-head' => 'Das Urheberrecht ist definitiv abgelaufen',
 1647+ 'mwe-upwiz-license-usgov-head' => '{{PLURAL:$1|Dieses Werk wurde|Diese Werke wurden}} von der US-amerikanischen Regierung geschaffen',
 1648+ 'mwe-upwiz-license-misc' => 'Sonstige Gründe',
15661649 'mwe-upwiz-categories' => 'Kategorien',
15671650 'mwe-upwiz-categories-add' => 'Hinzufügen',
15681651 'mwe-upwiz-category-remove' => 'Diese Kategorie entfernen',
@@ -1963,6 +2046,7 @@
19642047 */
19652048 $messages['fi'] = array(
19662049 'mwe-upwiz-code-unknown' => 'Tuntematon kieli',
 2050+ 'mwe-upwiz-api-error-duplicate-popup-title' => 'Tiedoston {{PLURAL:$1|kaksoiskappale|kaksoiskappaleet}}',
19672051 'mwe-upwiz-add-file-n' => 'Lisää toinen tiedosto',
19682052 'mwe-upwiz-browse' => 'Selaa...',
19692053 'mwe-upwiz-transport-started' => 'Aloitetaan...',
@@ -2229,7 +2313,7 @@
22302314 'mwe-upwiz-source-thirdparty-accept' => 'D’acôrd',
22312315 'mwe-upwiz-more-options' => 'més de chouèx...',
22322316 'mwe-upwiz-fewer-options' => 'muens de chouèx...',
2233 - 'mwe-upwiz-desc' => 'Dèscripcion dens',
 2317+ 'mwe-upwiz-desc' => 'Dèscripcion',
22342318 'mwe-upwiz-desc-add-n' => 'apondre una dèscripcion dens una ôtra lengoua',
22352319 'mwe-upwiz-desc-add-0' => 'apondre una dèscripcion',
22362320 'mwe-upwiz-title' => 'Titro',
@@ -2293,7 +2377,7 @@
22942378 'mwe-upwiz-error-date' => 'Volyéd buchiér una dâta valida u format AAAA-MM-JJ, ou ben nen chouèsir yona dens la fenétra de calendriér.',
22952379 'mwe-upwiz-license-cc-by-sa-3.0' => 'Creative Commons patèrnitât - partâjo a l’identico de les premiéres condicions 3.0',
22962380 'mwe-upwiz-license-cc-by-3.0' => 'Creative Commons patèrnitât 3.0',
2297 - 'mwe-upwiz-license-cc-zero' => 'Creative Commons CC0 renoncement',
 2381+ 'mwe-upwiz-license-cc-zero' => 'Creative Commons CC0 renoncement (domêno publico)',
22982382 'mwe-upwiz-license-gfdl' => 'Licence de documentacion abada GNU',
22992383 'mwe-upwiz-categories' => 'Catègories',
23002384 'mwe-upwiz-categories-add' => 'Apondre',
@@ -2455,7 +2539,7 @@
24562540 'mwe-upwiz-tooltip-description' => 'Describa brevemente calquera cousa salientable da obra.
24572541 Para unha foto, mencione as principais cousas que están representadas, a ocasión ou o lugar.',
24582542 'mwe-upwiz-tooltip-categories' => 'Engada [$1 categorías] ao seu ficheiro para facelo máis doado de atopar.',
2459 - 'mwe-upwiz-tooltip-other' => 'Calquera outra información que desexe incluír sobre a obra. Inclúa aquí os modelos de <a target="_blank" href="http://commons.wikimedia.org/wiki/Commons:Geocoding">xeocodificación</a>.',
 2543+ 'mwe-upwiz-tooltip-other' => 'Calquera outra información que desexe incluír sobre a obra (coordenadas xeográficas, ligazóns a outras versións etc.)',
24602544 'mwe-upwiz-tooltip-more-info' => 'Máis información.',
24612545 'mwe-upwiz-file-need-file' => 'Engada unha subida primeiro.',
24622546 'mwe-upwiz-file-need-start' => 'Prema este botón para comezar a subir.',
@@ -2484,7 +2568,7 @@
24852569 'mwe-upwiz-error-date' => 'Introduza unha data válida co formato AAA-MM-DD ou seleccione unha data no calendario emerxente.',
24862570 'mwe-upwiz-license-cc-by-sa-3.0' => 'Creative Commons recoñecemento compartir igual 3.0',
24872571 'mwe-upwiz-license-cc-by-3.0' => 'Creative Commons recoñecemento 3.0',
2488 - 'mwe-upwiz-license-cc-zero' => 'Creative Commons renuncia CC0',
 2572+ 'mwe-upwiz-license-cc-zero' => 'Creative Commons renuncia CC0 (dominio público)',
24892573 'mwe-upwiz-license-gfdl' => 'Licenza de documentación libre de GNU',
24902574 'mwe-upwiz-categories' => 'Categorías',
24912575 'mwe-upwiz-categories-add' => 'Engadir',
@@ -3224,7 +3308,7 @@
32253309 'mwe-upwiz-tooltip-description' => 'Wopisaj krótko wšitko wažne wo dźěle.
32263310 Za foto naspomni hłowne wěcy, kotrež su zwobraznjene, składnosć abo městno.',
32273311 'mwe-upwiz-tooltip-categories' => 'Přidaj [$1 kategorije] twojej dataji, zo by so wona lóšo namakała.',
3228 - 'mwe-upwiz-tooltip-other' => 'Druhe informacije wo tutym dźěle, kotrež chceš zapřijeć. Podaj tu <a target="_blank" href="http://commons.wikimedia.org/wiki/Commons:Geocoding">geokodowanske</a> předłohi.',
 3312+ 'mwe-upwiz-tooltip-other' => 'Druhe informacije wo tutym dźěle, kotrež chceš zapřijeć - geografiske koordinaty, wotkazy k druhim wersijam atd.',
32293313 'mwe-upwiz-tooltip-more-info' => 'Dalše informacije.',
32303314 'mwe-upwiz-file-need-file' => 'Prošu přidaj najprjedy nahraće.',
32313315 'mwe-upwiz-file-need-start' => 'Prošu klikń na tłóčatko, zo by swoje nahraća startował.',
@@ -3253,7 +3337,7 @@
32543338 'mwe-upwiz-error-date' => 'Prošu zapodajće płaćiwy datum w formaće YYYY-MM-DD abo wubjer datum z wuskakowaceje protyki.',
32553339 'mwe-upwiz-license-cc-by-sa-3.0' => 'Creative Commons Attribution ShareAlike 3.0',
32563340 'mwe-upwiz-license-cc-by-3.0' => 'Creative Commons Attribution 3.0',
3257 - 'mwe-upwiz-license-cc-zero' => 'Creative Commons CC0 Waiver',
 3341+ 'mwe-upwiz-license-cc-zero' => 'Creative Commons CC0 Waiver (zjawnosći k dispoziciji stejacy)',
32583342 'mwe-upwiz-license-gfdl' => 'GNU Free Documentation License',
32593343 'mwe-upwiz-categories' => 'Kategorije',
32603344 'mwe-upwiz-categories-add' => 'Přidać',
@@ -3528,6 +3612,7 @@
35293613 'mwe-upwiz-source-thirdparty-intro' => 'Per favor entra le adresse ubi tu ha incontrate cata file.',
35303614 'mwe-upwiz-source-thirdparty-custom-multiple-intro' => 'Si tote le files ha le mesme origine, autor e stato de copyright, tu pote entrar los un sol vice pro totes.',
35313615 'mwe-upwiz-source-thirdparty-license' => 'Le possessor del derecto de autor de iste {{PLURAL:$1|obra lo|obras los}} ha publicate sub le sequente licentia(s):',
 3616+ 'mwe-upwiz-source-thirdparty-cases' => 'Ora explica proque tu es secur que {{SITENAME}} ha le derecto de publicar {{PLURAL:$1|iste obra|iste obras}}:',
35323617 'mwe-upwiz-source-thirdparty-accept' => 'OK',
35333618 'mwe-upwiz-source-custom' => 'Forni informationes de copyright pro cata file individualmente in le pagina sequente.',
35343619 'mwe-upwiz-more-options' => 'plus optiones…',
@@ -3619,8 +3704,34 @@
36203705 'mwe-upwiz-error-date' => 'Per favor entra un data valide in formato AAAA-MM-DD, o selige un data del calendario pop-up.',
36213706 'mwe-upwiz-license-cc-by-sa-3.0' => 'Creative Commons Attribution ShareAlike 3.0',
36223707 'mwe-upwiz-license-cc-by-3.0' => 'Creative Commons Attribution 3.0',
 3708+ 'mwe-upwiz-license-cc-by-sa-2.5' => 'Creative Commons Attribution ShareAlike 2.5',
 3709+ 'mwe-upwiz-license-cc-by-2.5' => 'Creative Commons Attribution 2.5',
 3710+ 'mwe-upwiz-license-cc-by-sa-2.0' => 'Creative Commons Attribution ShareAlike 2.0',
 3711+ 'mwe-upwiz-license-cc-by-2.0' => 'Creative Commons Attribution 2.0',
36233712 'mwe-upwiz-license-cc-zero' => 'Creative Commons CC0 Waiver (dominio public)',
 3713+ 'mwe-upwiz-license-fal' => 'Licentia Artistic Libere',
 3714+ 'mwe-upwiz-license-own-pd' => 'Dominio public (tote derectos renunciate con un licentia Creative Commons Zero)',
 3715+ 'mwe-upwiz-license-pd-old-100' => 'Le autor moriva plus de 100 annos retro',
 3716+ 'mwe-upwiz-license-pd-old' => 'Le autor moriva plus de 70 annos retro',
 3717+ 'mwe-upwiz-license-pd-art' => 'Reproduction de un pictura que es in le dominio public a causa de su etate',
 3718+ 'mwe-upwiz-license-pd-usgov' => 'Obra original del governamento federal statounitese',
 3719+ 'mwe-upwiz-license-pd-usgov-nasa' => 'Obra original de NASA',
 3720+ 'mwe-upwiz-license-pd-usgov-military-navy' => 'Obra original del marina militar statounitese',
 3721+ 'mwe-upwiz-license-pd-ineligible' => 'Troppo simple pro esser sub copyright',
 3722+ 'mwe-upwiz-license-pd-ineligible-help' => 'Sia caute con iste. Le imagine debe esser multo simple, como un circulo verde o un quadrato rubie',
 3723+ 'mwe-upwiz-license-pd-textlogo' => 'Logotypo con texto simple solmente (marca de parola)',
 3724+ 'mwe-upwiz-license-copyrighted-free-use' => 'Sub copyright, ma pote esser usate pro omne fin, includente scopos commercial',
 3725+ 'mwe-upwiz-license-attribution' => 'Pote esser usate pro omne fin, includente scopos commercial, si le titular del copyright es attribuite appropriatemente',
36243726 'mwe-upwiz-license-gfdl' => 'Licentia GNU pro Documentation Libere',
 3727+ 'mwe-upwiz-license-cc-by-sa-3.0-gfdl' => 'Copyleft, attribution obligatori (GFDL, CC-BY-SA-3.0)',
 3728+ 'mwe-upwiz-license-cc-by-3.0-gfdl' => 'Attribution obligatori (GFDL, CC-BY-SA-3.0)',
 3729+ 'mwe-upwiz-license-cc-head' => 'Le titular del copyright ha publicate iste {{PLURAL:$1|obra|obras}} con le licentia Creative Commons correcte',
 3730+ 'mwe-upwiz-license-cc-subhead' => 'Non tote le licentias de Creative Commons es bon pro {{SITENAME}}; assecura que le titular del copyright ha usate un de iste licentias.',
 3731+ 'mwe-upwiz-license-flickr-head' => 'Le titular del copyright ha publicate lor {{PLURAL:$1|photo o video|photos o videos}} in Flickr con le licentia correcte',
 3732+ 'mwe-upwiz-license-flickr-subhead' => 'Verifica le capite "Licentia" al latere del pagina de Flickr. E le icones e le nomine del licentia que le autor usava debe corresponder a un del optiones hic.',
 3733+ 'mwe-upwiz-license-public-domain-head' => 'Le copyright ha definitivemente expirate',
 3734+ 'mwe-upwiz-license-usgov-head' => 'Iste {{PLURAL:$1|obra|obras}} ha essite facite per le governamento statounitese',
 3735+ 'mwe-upwiz-license-misc' => 'Motivos miscellanee',
36253736 'mwe-upwiz-categories' => 'Categorias',
36263737 'mwe-upwiz-categories-add' => 'Adder',
36273738 'mwe-upwiz-category-remove' => 'Remover iste categoria',
@@ -3979,8 +4090,8 @@
39804091 'mwe-prevent-close' => 'I tuoi file stanno ancora caricando.
39814092 Sei proprio sicuro di voler uscire da questa pagina?',
39824093 'mwe-upwiz-files-complete' => 'Il caricamento dei tuoi file è terminato!',
3983 - 'mwe-upwiz-tooltip-author' => 'Il nome della persona che ha scattato la foto, dipinto il quadro, realizzato il disegno, etc.',
3984 - 'mwe-upwiz-tooltip-source' => 'Da dove proviene questo file digitale - potrebbe essere una URL, un libro, una pubblicazione, etc.',
 4094+ 'mwe-upwiz-tooltip-author' => 'Il nome della persona che ha scattato la foto, dipinto il quadro, realizzato il disegno, ecc.',
 4095+ 'mwe-upwiz-tooltip-source' => 'Da dove proviene questo file digitale - potrebbe essere un URL, un libro, una pubblicazione, ecc.',
39854096 'mwe-upwiz-tooltip-sign' => 'Puoi utilizzare il tuo nome utente sulla wiki, oppure il tuo nome proprio.
39864097 In entrambi i casi, sarà collegato con un link alla tua pagina utente della wiki',
39874098 'mwe-upwiz-tooltip-title' => "Un titolo breve e distintivo per il file. Puoi usare un linguaggio semplice con spazi. Non includere l'estensione del file.",
@@ -3988,7 +4099,7 @@
39894100 'mwe-upwiz-tooltip-description' => "Descrivi sinteticamente tutto quanto sia degno di nota a proposito di quest'opera.
39904101 Per le foto, indica le cose principali che vi sono rappresentate, l'occasione e/o il luogo in cui sono state scattate.",
39914102 'mwe-upwiz-tooltip-categories' => 'Aggiungi [$1 categorie] al tuo file per renderlo più semplice da trovare.',
3992 - 'mwe-upwiz-tooltip-other' => 'Ogni altra informazione che desideri aggiungere a proposito di quest\'opera. Inserisci qui i template per il <a target="_blank" href="http://commons.wikimedia.org/wiki/Commons:Geocoding">geocoding</a>.',
 4103+ 'mwe-upwiz-tooltip-other' => "Ogni altra informazione che desideri aggiungere a proposito di quest'opera - coordinate geografiche, collegamenti ad altre versioni, ecc.",
39934104 'mwe-upwiz-tooltip-more-info' => 'Per saperne di più.',
39944105 'mwe-upwiz-file-need-file' => 'Per favore, prima carica qualcosa.',
39954106 'mwe-upwiz-file-need-start' => 'Premi questo pulsante per iniziare il tuo caricamento.',
@@ -4001,17 +4112,17 @@
40024113 'mwe-upwiz-license-show-all' => 'Usa una licenza diversa',
40034114 'mwe-upwiz-license-show-recommended' => 'Usa la licenza raccomandata',
40044115 'mwe-upwiz-error-signature-blank' => 'È necessario firmare il campo sottostante con il tuo nome utente o con il tuo nome reale.',
4005 - 'mwe-upwiz-error-signature-too-long' => 'La tua firma purtroppo è troppo lunga.
4006 -Accorciala di $1 {{PLURAL:$1|carattere|caratteri}}.',
4007 - 'mwe-upwiz-error-signature-too-short' => 'La tua firma purtroppo è troppo corta.
4008 -Allungala a non meno di $1 {{PLURAL:$1|carattere|caratteri}}.',
 4116+ 'mwe-upwiz-error-signature-too-long' => 'La tua firma è troppo lunga.
 4117+Può essere lunga al massimo $1 {{PLURAL:$1|carattere|caratteri}}.',
 4118+ 'mwe-upwiz-error-signature-too-short' => 'La tua firma è troppo corta.
 4119+Deve essere lunga almeno $1 {{PLURAL:$1|carattere|caratteri}}.',
40094120 'mwe-upwiz-error-signature-bad-chars' => 'La tua firma contiene simboli che non sono ammessi.
40104121 Non utilizzare codice HTML o wikitext qui, solo il nome utente o il nome reale.',
40114122 'mwe-upwiz-error-blank' => 'Questo campo è obbligatorio.',
40124123 'mwe-upwiz-error-too-long' => 'Questo testo è troppo lungo.
4013 -Deve essere più breve di $1 {{PLURAL:$1|carattere|caratteri}}.',
 4124+Può essere lungo al massimo $1 {{PLURAL:$1|carattere|caratteri}}.',
40144125 'mwe-upwiz-error-too-short' => 'Questo testo è troppo breve.
4015 -Deve essere più lungo di $1 {{PLURAL:$1|carattere|caratteri}}.',
 4126+Deve essere lungo almeno $1 {{PLURAL:$1|carattere|caratteri}}.',
40164127 'mwe-upwiz-error-bad-chars' => 'Questo campo contiene simboli non consentiti.
40174128 Non utilizzare wikitesto o HTML qui.',
40184129 'mwe-upwiz-error-date' => 'Inserisci una data valida nel formato AAAA-MM-GG, o scegli una data dal calendario.',
@@ -4477,6 +4588,8 @@
44784589 'mwe-upwiz-api-error-mustbeposted' => 'An dëser Software ass e Feeler; se benotzt net déi richteg HTTP-Method.',
44794590 'mwe-upwiz-api-error-badaccess-groups' => 'Et ass Iech net erlaabt fir Fichieren op dës Wiki eropzelueden.',
44804591 'mwe-upwiz-api-error-stashfailed' => 'Interne Feeler: de Server konnt den temporäre Fichier net späicheren.',
 4592+ 'mwe-upwiz-api-error-missingresult' => "Interne Feeler: et konnt net festgestallt ginn ob d'Kopie eppes ginn ass.",
 4593+ 'mwe-upwiz-api-error-missingparam' => 'Interne Feeler: E vun de Parameter feelt an der Ufro.',
44814594 'mwe-upwiz-api-error-invalid-session-key' => 'Interne Feeler: de Fichier gouf op der temporärer Späicherplaz net fonnt.',
44824595 'mwe-upwiz-api-error-copyuploaddisabled' => "D'Eroplueden iwwer eng URL ass op dësem Server desaktivéiert.",
44834596 'mwe-upwiz-api-error-mustbeloggedin' => 'Dir musst ageloggt si fir Fichieren eropzelueden.',
@@ -4493,6 +4606,7 @@
44944607 'mwe-upwiz-api-error-badtoken' => 'Interne Feeler: falschen Token.',
44954608 'mwe-upwiz-api-error-fetchfileerror' => 'Interne Feeler: beim Opruffe vum Fichier huet eppes net fonctionnéiert.',
44964609 'mwe-upwiz-api-error-duplicate' => 'Et gëtt schonn {{PLURAL:$1|[$2 en anere Fichier]|[$2 aner Fichiere]}} mat dem selwechten Inhalt op dem Site',
 4610+ 'mwe-upwiz-api-error-duplicate-popup-title' => '{{PLURAL:$1|Duebele Fichier|Duebel Fichieren}}',
44974611 'mwe-upwiz-api-error-timeout' => 'De Server huet net bannen där Zäit geäntwert déi virgesinn ass.',
44984612 'mwe-upwiz-api-warning-exists' => 'Et gëtt op der Wiki schonn [$1 anere Fichier] mat dem selwechten Numm',
44994613 'mwe-upwiz-tutorial-error-localized-file-missing' => 'Pardon, mir konnte keng Uleedung an Ärer Sprooch fannen. Déi Englesch Versioun gëtt amplaz gewisen.',
@@ -4568,6 +4682,7 @@
45694683 'mwe-upwiz-thanks-url' => '<b>Fir een HTML-Link op dëse Fichier ze maachen</b>, kopéiert dës URL-Adress :',
45704684 'mwe-upwiz-upload-error-bad-filename-extension' => 'Dës Wiki akzeptéiert keng Fichieresnimm mat der Extensioun ".$1".',
45714685 'mwe-upwiz-allowed-filename-extensions' => 'Déi erlaabten Erweiderunge sinn:',
 4686+ 'mwe-upwiz-help-allowed-filename-extensions' => "Zougeloossen Erweiderunge fir d'Nimm vu Fichieren",
45724687 'mwe-upwiz-upload-error-duplicate' => 'Dëse Fichier gouf scho virdrun op dës Wiki eropgelueden.',
45734688 'mwe-upwiz-upload-error-stashed-anyway' => 'Trotzdem eroplueden?',
45744689 'mwe-upwiz-ok' => 'OK',
@@ -4595,6 +4710,7 @@
45964711 'mwe-upwiz-tooltip-title' => "E kuerzen Titel fir de Fichier, deen anescht ass wéi all déi aner op dëser Wiki. Dir kënnt dobäi Text mat Espace benotzen. D'Erweiderung vum Fichier soll net ugi ginn.",
45974712 'mwe-upwiz-tooltip-description' => "Beschreift w.e.g. kuerz dat Wichtegst vun dësem Wierk.
45984713 fir eng Photo, ernimmt déi Haaptsaachen déi drop sinn, d'Geleeënheet oder d'Plaz",
 4714+ 'mwe-upwiz-tooltip-categories' => 'Setzt [$1 Kategorie] bäi Äre Fichier derbäi fir e méi einfach erëmzefannen.',
45994715 'mwe-upwiz-tooltip-other' => 'All aner Informatioun déi Dir bäi Äert Wierk derbäisetze wëllt - geographesch Koordinaten, Linken op aner Versiounen, asw.',
46004716 'mwe-upwiz-tooltip-more-info' => 'Fir méi ze wëssen',
46014717 'mwe-upwiz-file-need-file' => "Setzt w.e.g. d'éischt e Fichier fir eropzelueden derbäi.",
@@ -4624,7 +4740,7 @@
46254741 'mwe-upwiz-error-date' => 'Gitt w.e.g. e valabelen Datum am Format: JJJJ-MM-DD, oder sicht en Datum Popup-Kalenner eraus.',
46264742 'mwe-upwiz-license-cc-by-sa-3.0' => 'Creative Commons Attribution ShareAlike 3.0',
46274743 'mwe-upwiz-license-cc-by-3.0' => 'Creative Commons Attributioun 3.0',
4628 - 'mwe-upwiz-license-cc-zero' => 'Creative Commons „CC0 1.0 Universal“',
 4744+ 'mwe-upwiz-license-cc-zero' => 'Creative Commons CC0 Waiver (public domain)',
46294745 'mwe-upwiz-license-gfdl' => 'GNU Fräi Dokumentatiouns Lizenz',
46304746 'mwe-upwiz-categories' => 'Kategorien',
46314747 'mwe-upwiz-categories-add' => 'Derbäisetzen',
@@ -4632,6 +4748,7 @@
46334749 'mwe-upwiz-thanks-caption' => 'Beschreiwung hei derbäisetzen',
46344750 'mwe-upwiz-help-popup' => 'Hëllef',
46354751 'mwe-upwiz-help-popup-title' => 'Titel',
 4752+ 'mwe-upwiz-thumbnail-failed' => "D'Eroplueden huet geklappt, mä de Server ka kee Miniaturbild vum Fichier weisen.",
46364753 'mwe-upwiz-unparseable-filename' => 'Den Numm vum Fichier "$1" gouf net verstan',
46374754 );
46384755
@@ -4726,7 +4843,7 @@
47274844 'mwe-upwiz-source-ownwork-assert-any-license' => 'Јас, $2, имателот на авторското право на {{PLURAL:$1|ова дело|овие дела}}, со ова неотповикливо секому му го давам правото да {{PLURAL:$1|го|ги}} користи, менува и раздава {{PLURAL:$1|делово|делава}} за било каква цел, и затоа {{PLURAL:$1|го|ги}} објавувам под следниве услови:',
47284845 'mwe-upwiz-source-ownwork-assert' => 'Јас, $2, имателот на авторските права на {{PLURAL:$1|ова дело|овие дела}}, со ова неотповикливо му дозволувам секому да {{PLURAL:$1|го користи ова дело|ги користи овие дела}} за било каква цел, под услов да ме наведат и да го споделат изведеното дело под исти услови.',
47294846 'mwe-upwiz-source-ownwork-assert-custom' => 'Јас, $2, имателот на авторските права на {{PLURAL:$1|ова дело|овие дела}}, со ова {{PLURAL:$1|го издавам делото|ги издавам делата}} под следнава/иве лиценца/ци:',
4730 - 'mwe-upwiz-source-ownwork-assert-note' => 'Ова значи дека вашето дело го објавувате под лиценцата Creative Commons Наведи извор-Сподели под исти услови.',
 4847+ 'mwe-upwiz-source-ownwork-assert-note' => 'Ова значи дека вашето дело го објавувате под лиценцата Криејтив комонс НаведиИзвор-СподелиПодИстиУслови.',
47314848 'mwe-upwiz-source-permission' => 'Нивниот автор ви дал јасна дозвола да ги подигате',
47324849 'mwe-upwiz-source-thirdparty' => '{{PLURAL:$1|Оваа податотека не е|Овие податотеки не се}} мое сопствено дело.',
47334850 'mwe-upwiz-source-thirdparty-intro' => 'Внесете ги адресите кадешто ги најдовте податотеките.',
@@ -4802,7 +4919,7 @@
48034920 'mwe-upwiz-deeds-need-deed' => 'Наведете од каде {{PLURAL:$1|ја земавте податотеката|ги земавте податотеките}} и како ова мреж. место може да {{PLURAL:$1|ја користи|ги користи}}, одбирајќи една од наведените можности.',
48044921 'mwe-upwiz-deeds-need-license' => 'Одберете лиценца.',
48054922 'mwe-upwiz-license-incompatible-pd' => 'Јавнодоменските лиценци не соодветствуваат на никој друг вид лиценца.',
4806 - 'mwe-upwiz-license-incompatible-cc' => 'Можете да одберете само еден вид на Creative Commons-лиценца',
 4923+ 'mwe-upwiz-license-incompatible-cc' => 'Можете да одберете само еден вид на лиценца Криејтив комонс',
48074924 'mwe-upwiz-license-show-all-any-license' => 'Повеќе можности',
48084925 'mwe-upwiz-license-show-all' => 'Користи поинаква лиценца',
48094926 'mwe-upwiz-license-show-recommended' => 'Користи ја препорачаната лиценца',
@@ -4821,9 +4938,9 @@
48224939 'mwe-upwiz-error-bad-chars' => 'Ова поле користи знаци што не се дозволени.
48234940 Тука не користете викитекст или HTML.',
48244941 'mwe-upwiz-error-date' => 'Внесете важечки датум во форматот ГГГГ-ММ-ДД, или пак одберете датум од скокачкиот календар.',
4825 - 'mwe-upwiz-license-cc-by-sa-3.0' => 'Creative Commons Наведи извор-Сподели под исти услови 3.0',
4826 - 'mwe-upwiz-license-cc-by-3.0' => 'Creative Commons Наведи извор 3.0',
4827 - 'mwe-upwiz-license-cc-zero' => 'Creative Commons CC0 Откажување (јавна сопственост)',
 4942+ 'mwe-upwiz-license-cc-by-sa-3.0' => 'Криејтив комонс НаведиИзвор-СподелиПодИстиУслови 3.0',
 4943+ 'mwe-upwiz-license-cc-by-3.0' => 'Криејтив комонс НаведиИзвор 3.0',
 4944+ 'mwe-upwiz-license-cc-zero' => 'Криејтив комонс CC0 Откажување (јавна сопственост)',
48284945 'mwe-upwiz-license-gfdl' => 'ГНУ-ова лиценца за слободна документација',
48294946 'mwe-upwiz-categories' => 'Категории',
48304947 'mwe-upwiz-categories-add' => 'Додај',
@@ -4907,7 +5024,7 @@
49085025 'mwe-upwiz-next-file-despite-failures' => 'എന്തായാലും തുടരുക',
49095026 'mwe-upwiz-skip-tutorial-future' => 'ഭാവിയിൽ ഈ ഘട്ടം ഒഴിവാക്കുക',
49105027 'mwe-upwiz-file-all-failed' => 'എല്ലാ അപ്‌ലോഡും പരാജയപ്പെട്ടു.',
4911 - 'mwe-upwiz-upload-count' => '{{PLURAL:$2|ഒരു പ്രമാണത്തിൽ|ആകെയുള്ള $2 പ്രമാണങ്ങളിൽ}} {{PLURAL:$1|ഒരെണ്ണം|$1 എണ്ണം}} അപ്‌ലോഡ് ചെയ്തിരിക്കുന്നു',
 5028+ 'mwe-upwiz-upload-count' => '{{PLURAL:$2|ഒരു പ്രമാണത്തിൽ|ആകെയുള്ള $2 പ്രമാണങ്ങളിൽ}} {{PLURAL:$1|ഒരെണ്ണം|$1 എണ്ണം}} അപ്‌ലോഡ് ചെയ്തുകഴിഞ്ഞു',
49125029 'mwe-upwiz-progressbar-uploading' => 'അപ്‌ലോഡ് ചെയ്യുന്നു',
49135030 'mwe-upwiz-finished' => 'പൂർത്തിയായി!',
49145031 'mwe-upwiz-secs-remaining' => '{{PLURAL:$1|ഒരു സെക്കന്റ്|$1 സെക്കന്റ്}} അവശേഷിക്കുന്നു',
@@ -5580,7 +5697,7 @@
55815698 'mwe-upwiz-tooltip-description' => 'Krótko opisz wszystko istotne, co dotyczy tej pracy.
55825699 W przypadku zdjęcia, wymień najważniejsze ujęte obiekty, sytuację lub miejsce.',
55835700 'mwe-upwiz-tooltip-categories' => 'Dodaj do pliku [$1 kategorie], aby ułatwić jego odnalezienie.',
5584 - 'mwe-upwiz-tooltip-other' => 'Wszelkie inne informacje, które chcesz dołączyć do tej pracy. Dodaj tutaj szablon <a target="_blank" href="http://commons.wikimedia.org/wiki/Commons:Geocoding">geokodowania</a>.',
 5701+ 'mwe-upwiz-tooltip-other' => 'Wszelkie inne informacje, które chcesz dołączyć do tej pracy – współrzędne geograficzne, linki do innych wersji itp.',
55855702 'mwe-upwiz-tooltip-more-info' => 'Więcej informacji.',
55865703 'mwe-upwiz-file-need-file' => 'Najpierw dodaj plik do przesłania.',
55875704 'mwe-upwiz-file-need-start' => 'Naciśnij ten przycisk, aby uruchomić przesyłanie.',
@@ -5609,7 +5726,7 @@
56105727 'mwe-upwiz-error-date' => 'Należy wpisać poprawną datę w formacie RRRR-MM-DD lub wybrać datę z kalendarza.',
56115728 'mwe-upwiz-license-cc-by-sa-3.0' => 'Creative Commons Uznanie autorstwa Na tych samych warunkach 3.0',
56125729 'mwe-upwiz-license-cc-by-3.0' => 'Creative Commons Za podaniem autora 3.0',
5613 - 'mwe-upwiz-license-cc-zero' => 'Creative Commons CC0 Zrzeczenie się praw',
 5730+ 'mwe-upwiz-license-cc-zero' => 'Creative Commons CC0 Zrzeczenie się praw (domena publiczna)',
56145731 'mwe-upwiz-license-gfdl' => 'GNU Free Documentation License',
56155732 'mwe-upwiz-categories' => 'Kategorie',
56165733 'mwe-upwiz-categories-add' => 'Dodaj',
@@ -6470,6 +6587,8 @@
64716588 * @author HalanTul
64726589 */
64736590 $messages['sah'] = array(
 6591+ 'uploadwizard' => 'Киллэрии маастара',
 6592+ 'uploadwizard-desc' => 'Мультимедиа Юзабилити граан көмөтүнэн оҥоһуллубут киллэрии маастара',
64746593 'mwe-upwiz-code-unknown' => 'Биллибэт омук тыла',
64756594 'mwe-upwiz-step-tutorial' => 'Бил',
64766595 'mwe-upwiz-step-file' => 'Киллэрии',
@@ -6495,6 +6614,7 @@
64966615 'mwe-upwiz-api-error-filetype-banned' => 'Маннык көрүҥнээх билэлэр бобуулаахтар.',
64976616 'mwe-upwiz-api-error-filename-tooshort' => 'Билэҥ аата наһаа кылгас.',
64986617 'mwe-upwiz-api-error-illegal-filename' => 'Билэ маннык ааттанара сатаммат.',
 6618+ 'mwe-upwiz-api-warning-exists' => 'Маннык ааттаах [$1 атын билэ] баар эбит',
64996619 'mwe-upwiz-tutorial-error-localized-file-missing' => 'Бука диэн баалама, Эн тылгынан ыйыыны-кэрдиини булбатыбыт. Ааҥыллыы барыл көрдөрүллэр.',
65006620 'mwe-upwiz-tutorial-error-file-missing' => 'Бука диэн баалама, манна баар буолуохтаах учебник билэлэрэ көстүбэтилэр. Дьаһабылы бул.',
65016621 'mwe-upwiz-tutorial-error-cannot-transform' => 'Маннык экрааҥҥа аналлаах ойуу суох эбит. Баҕар, Биики ыскылаатын быстах кэмҥэ алҕаһа буолуо. Сотору кэминэн өссө боруобалаан көрөөр.',
@@ -6526,6 +6646,7 @@
65276647 'mwe-upwiz-finished' => 'Түмүктэннэ!',
65286648 'mwe-upwiz-secs-remaining' => '$1 сөкүүндэ хаалла',
65296649 'mwe-upwiz-mins-secs-remaining' => '$1 мүнүүтэ $2 сөкүүндэ хаалла',
 6650+ 'mwe-upwiz-hrs-mins-secs-remaining' => '$1 чаас $2 мүнүүтэ $3 сөкүүндэ хаалбыт',
65306651 'mwe-upwiz-deeds-custom-prompt' => 'Эбэтэр:',
65316652 'mwe-upwiz-source-ownwork' => '{{PLURAL:$1|Бу билэ мин бэйэм айымньым.|Бу билэлэр мин бэйэм айымньыларым.}}',
65326653 'mwe-upwiz-source-ownwork-assert-note' => 'Ол аата үлэҕин Creative Commons Attribution ShareAlike лиссиэнсийэнэн таһаараҕын.',
@@ -6952,19 +7073,19 @@
69537074 'mwe-upwiz-step-deeds' => 'Välj licens',
69547075 'mwe-upwiz-step-details' => 'Beskriv',
69557076 'mwe-upwiz-step-thanks' => 'Använd',
6956 - 'mwe-upwiz-api-error-http' => 'Det var ett problem med att ansluta till tjänsten.',
6957 - 'mwe-upwiz-api-error-ok-but-empty' => 'Servern returnerade inte någon information om uppladdningen.',
6958 - 'mwe-upwiz-api-error-unknown-code' => 'Servern returnerade ett fel vi inte förstod: "$1"',
 7077+ 'mwe-upwiz-api-error-http' => 'Internt fel: Det gick inte att ansluta till servern.',
 7078+ 'mwe-upwiz-api-error-ok-but-empty' => 'Internt fel: Inget svar från servern.',
 7079+ 'mwe-upwiz-api-error-unknown-code' => 'Okänt fel: "$1"',
69597080 'mwe-upwiz-api-error-uploaddisabled' => 'Uppladdning är inaktiverad på denna wiki.',
6960 - 'mwe-upwiz-api-error-nomodule' => 'Wikin visste inte hur man hanterar denna uppladdning.',
 7081+ 'mwe-upwiz-api-error-nomodule' => 'Internt fel: ingen uppladdningsmodul uppsatt.',
69617082 'mwe-upwiz-api-error-mustbeposted' => 'Det finns en bugg i detta program, det använder inte rätt HTTP-metod.',
6962 - 'mwe-upwiz-api-error-badaccess-groups' => 'Du är inte tillåten att ladda upp filer till denna wiki. Kontrollera vilken behörighetsgrupper du tillhör.',
6963 - 'mwe-upwiz-api-error-stashfailed' => 'Wikin kunde inte lagra filen.',
6964 - 'mwe-upwiz-api-error-missingresult' => 'Vi kunde inte avgöra om kopieringen lyckades.',
6965 - 'mwe-upwiz-api-error-missingparam' => 'Uppladdningen hade inte all information som krävs (antagligen en bugg i denna Uploader.)',
6966 - 'mwe-upwiz-api-error-invalid-session-key' => 'Servern kunde inte hitta den filen i din uppladdade filer.',
6967 - 'mwe-upwiz-api-error-copyuploaddisabled' => 'Uppladdningar medelst kopiering är inaktiverat.',
6968 - 'mwe-upwiz-api-error-mustbeloggedin' => 'Du är inte korrekt inloggad.',
 7083+ 'mwe-upwiz-api-error-badaccess-groups' => 'Du får inte ladda upp filer till denna wiki.',
 7084+ 'mwe-upwiz-api-error-stashfailed' => 'Internt fel: servern kunde inte lagra temporär fil.',
 7085+ 'mwe-upwiz-api-error-missingresult' => 'Internt fel: kunde inte avgöra om kopieringen lyckades.',
 7086+ 'mwe-upwiz-api-error-missingparam' => 'Internt fel: saknas parametrar på begäran.',
 7087+ 'mwe-upwiz-api-error-invalid-session-key' => 'Internt fel: filen hittades inte i tillfällig lagring.',
 7088+ 'mwe-upwiz-api-error-copyuploaddisabled' => 'Uppladdning via URL är inaktiverad på den här servern.',
 7089+ 'mwe-upwiz-api-error-mustbeloggedin' => 'Du måste vara inloggad för att ladda upp filer.',
69697090 'mwe-upwiz-api-error-empty-file' => 'Filen du skickade var tom.',
69707091 'mwe-upwiz-api-error-file-too-large' => 'Filen du skickade var för stor.',
69717092 'mwe-upwiz-api-error-filetype-missing' => 'Filen saknar en filändelse.',
@@ -6973,16 +7094,20 @@
69747095 'mwe-upwiz-api-error-illegal-filename' => 'Filnamnet är inte tillåtet.',
69757096 'mwe-upwiz-api-error-verification-error' => 'Denna fil kan vara skadad eller har fel filändelse.',
69767097 'mwe-upwiz-api-error-hookaborted' => 'Ändringen du försökte göra avbröts av en extension hook.',
6977 - 'mwe-upwiz-api-error-unknown-error' => 'Något gick fel när vi försökte ladda upp din fil.',
6978 - 'mwe-upwiz-api-error-internal-error' => 'Något gick fel med bearbetningen av din uppladdning på wikin.',
 7098+ 'mwe-upwiz-api-error-unknown-error' => 'Internt fel: något gick fel när vi försökte ladda upp din fil.',
 7099+ 'mwe-upwiz-api-error-internal-error' => 'Internt fel: något gick fel med bearbetningen av din uppladdning på wikin.',
69797100 'mwe-upwiz-api-error-overwrite' => 'Det är inte tillåtet att skriva över en befintlig fil.',
6980 - 'mwe-upwiz-api-error-badtoken' => 'Den "token" vi använde för att identifiera dig för servern var felaktig.',
6981 - 'mwe-upwiz-api-error-fetchfileerror' => 'Något gick fel vid hämtning av filen.',
6982 - 'mwe-upwiz-api-error-duplicate' => 'Det finns en redan en annan fil på wikin med samma innehåll',
6983 - 'mwe-upwiz-api-warning-exists' => 'Det finns en redan en annan fil på wikin med samma filnamn',
 7101+ 'mwe-upwiz-api-error-badtoken' => 'Internt fel: felaktig token.',
 7102+ 'mwe-upwiz-api-error-fetchfileerror' => 'Internt fel: något gick fel vid hämtning av filen.',
 7103+ 'mwe-upwiz-api-error-duplicate' => 'Det {{PLURAL:$1|finns [$2 en annan fil]|finns [$2 andra filer]}} redan på webbplatsen med samma innehåll',
 7104+ 'mwe-upwiz-api-error-duplicate-popup-title' => 'Dubblett{{PLURAL:$1|fil|filer}}',
 7105+ 'mwe-upwiz-api-error-timeout' => 'Servern svarade inte inom förväntad tid.',
 7106+ 'mwe-upwiz-api-error-noimageinfo' => 'Uppladdningen lyckades, men servern gav oss inte någon information om filen.',
 7107+ 'mwe-upwiz-api-warning-exists' => 'Det finns [$1 en annan fil] redan på wikin med samma filnamn',
69847108 'mwe-upwiz-tutorial-error-localized-file-missing' => 'Tyvärr kunde vi inte hitta en övning på ditt språk. Den engelska visas i stället.',
69857109 'mwe-upwiz-tutorial-error-file-missing' => 'Tyvärr kunde vi inte hitta några filer för den handledning som är tänkt att finnas här. Vänligen kontakta systemadministratören.',
69867110 'mwe-upwiz-tutorial-error-cannot-transform' => 'Tyvärr kunde vi inte få en skalad bild av övningen för att passa den här skärmen. Detta kan vara ett tillfälligt problem med Wikimedia Commons, försök igen senare.',
 7111+ 'mwe-upwiz-help-desk' => 'Hjälp',
69877112 'mwe-upwiz-add-file-n' => 'Lägg till ytterligare en fil',
69887113 'mwe-upwiz-add-file-0' => 'Välj en mediafil att ladda upp',
69897114 'mwe-upwiz-add-file-0-free' => 'Välj en mediafil att donera',
@@ -7003,6 +7128,7 @@
70047129 'mwe-upwiz-file-some-failed' => 'Några uppladdningar misslyckades.',
70057130 'mwe-upwiz-file-retry' => 'Försök att ladda upp igen',
70067131 'mwe-upwiz-next-file-despite-failures' => 'Fortsätt ändå',
 7132+ 'mwe-upwiz-skip-tutorial-future' => 'Hoppa över det här steget i framtiden',
70077133 'mwe-upwiz-file-all-failed' => 'Ingen av uppladdningarna lyckades.',
70087134 'mwe-upwiz-upload-count' => '$1 av $2 {{PLURAL:$2|fil|filer}} uppladdade',
70097135 'mwe-upwiz-progressbar-uploading' => 'Laddar upp',
@@ -7026,7 +7152,7 @@
70277153 'mwe-upwiz-source-custom' => 'Ge copyrightinformation för varje fil på nästa sida.',
70287154 'mwe-upwiz-more-options' => 'fler alternativ ...',
70297155 'mwe-upwiz-fewer-options' => 'färre alternativ ...',
7030 - 'mwe-upwiz-desc' => 'Beskrivning på',
 7156+ 'mwe-upwiz-desc' => 'Beskrivning',
70317157 'mwe-upwiz-desc-add-n' => 'lägga till en beskrivning på ett annat språk',
70327158 'mwe-upwiz-desc-add-0' => 'lägga till en beskrivning',
70337159 'mwe-upwiz-title' => 'Titel',
@@ -7037,6 +7163,7 @@
70387164 'mwe-upwiz-media-type' => 'Mediatyp',
70397165 'mwe-upwiz-date-created' => 'Skapad datum',
70407166 'mwe-upwiz-location' => 'Plats',
 7167+ 'mwe-upwiz-copyright-info' => 'Licens',
70417168 'mwe-upwiz-author' => 'Författare',
70427169 'mwe-upwiz-license' => 'Licens',
70437170 'mwe-upwiz-about-format' => 'Om filen',
@@ -7054,6 +7181,9 @@
70557182 'mwe-upwiz-thanks-wikitext' => '<b>För att använda filen i en wiki,</b> kopiera denna text till en sida:',
70567183 'mwe-upwiz-thanks-url' => '<b>För att länka till den i HTML,</b> kopiera denna URL-adress:',
70577184 'mwe-upwiz-upload-error-bad-filename-extension' => 'Denna wiki accepterar inte filnamn med tillägget ".$1".',
 7185+ 'mwe-upwiz-upload-error-bad-filename-no-extension' => 'Denna wiki kräver att filer har en filändelse - som ".JPG" i slutet av filnamnet.',
 7186+ 'mwe-upwiz-allowed-filename-extensions' => 'Tillåtna filändelser är:',
 7187+ 'mwe-upwiz-help-allowed-filename-extensions' => 'Tillåtna filnamnsändelser',
70587188 'mwe-upwiz-upload-error-duplicate' => 'Den här filen har tidigare laddat upp till denna wiki.',
70597189 'mwe-upwiz-upload-error-stashed-anyway' => 'Ladda upp ändå?',
70607190 'mwe-upwiz-ok' => 'OK',
@@ -7078,9 +7208,11 @@
70797209 'mwe-upwiz-tooltip-source' => 'Var denna digitala filen kom från -- kan vara en URL eller en bok eller publikation',
70807210 'mwe-upwiz-tooltip-sign' => 'Du kan använda ditt wiki användarnamn eller ditt riktiga namn.
70817211 I båda fallen kommer detta att kopplas till din wiki användarsida',
7082 - 'mwe-upwiz-tooltip-title' => 'En kort titel för filen. Du kan använda ett enkelt språk med mellanslag, men inga radbrytningar. Denna titel måste skilja sig från alla andra titlar på denna wiki.',
 7212+ 'mwe-upwiz-tooltip-title' => 'En unik beskrivande titel för filen. Du kan använda klarspråk med mellanslag. Ta inte med filändelsen.',
 7213+ 'mwe-upwiz-dialog-title' => 'Filer kan laddas upp med namn i valfritt språk i valfri skrift (kodad som UTF-8). Titlar på mediafiler bör vara meningsfulla och användbara i det valda språket.',
70837214 'mwe-upwiz-tooltip-description' => 'Beskriv kortfattat allt anmärkningsvärt om verket. För ett foto, nämna de viktigaste saker som är avbildade, tillfälle och plats.',
7084 - 'mwe-upwiz-tooltip-other' => 'Ytterligare information du vill ha med om detta verk. Du kan använda wikitext-kod.',
 7215+ 'mwe-upwiz-tooltip-categories' => 'Lägg till [$1 kategorier] till din fil för att göra den lättare att hitta.',
 7216+ 'mwe-upwiz-tooltip-other' => 'All annan information du vill inkludera i det här arbetet - geografiska koordinater, länkar till andra versioner, etc.',
70857217 'mwe-upwiz-tooltip-more-info' => 'Läs mer.',
70867218 'mwe-upwiz-file-need-file' => 'Lägg till en uppladdning först.',
70877219 'mwe-upwiz-file-need-start' => 'Tryck på knappen för att starta din uppladdningar.',
@@ -7109,11 +7241,16 @@
71107242 'mwe-upwiz-error-date' => 'Ange ett giltigt datum i ÅÅÅÅ-MM-DD, eller välj ett datum från popup-kalendern.',
71117243 'mwe-upwiz-license-cc-by-sa-3.0' => 'Creative Commons Erkännande DelaLika 3.0',
71127244 'mwe-upwiz-license-cc-by-3.0' => 'Creative Commons Erkännande 3.0',
7113 - 'mwe-upwiz-license-cc-zero' => 'Creative Commons CC0 Waiver',
 7245+ 'mwe-upwiz-license-cc-zero' => 'Creative Commons CC0 Waiver (public domain)',
71147246 'mwe-upwiz-license-gfdl' => 'GNU Free Documentation License',
71157247 'mwe-upwiz-categories' => 'Kategorier',
71167248 'mwe-upwiz-categories-add' => 'Lägg till',
71177249 'mwe-upwiz-category-remove' => 'Ta bort denna kategori',
 7250+ 'mwe-upwiz-thanks-caption' => 'Lägg till bildtext här',
 7251+ 'mwe-upwiz-help-popup' => 'Hjälp',
 7252+ 'mwe-upwiz-help-popup-title' => 'Titel',
 7253+ 'mwe-upwiz-thumbnail-failed' => 'Uppladdningen lyckades, men servern kunde inte hämta en miniatyrbild för förhandsgranskning',
 7254+ 'mwe-upwiz-unparseable-filename' => 'Kunde inte förstå filnamnet "$1"',
71187255 );
71197256
71207257 /** Swahili (Kiswahili)
@@ -7754,7 +7891,7 @@
77557892 'mwe-upwiz-tooltip-description' => 'Miêu tả một cách ngắn gọn mỗi điều đáng kể về tác phẩm này.
77567893 Nếu là hình chụp, hãy nói đến những vật thể chính, cũng như tình hình, sự kiện, hay địa điểm của hình chụp.',
77577894 'mwe-upwiz-tooltip-categories' => 'Xếp tập tin vào các [$1 thể loại] để cho nó dễ kiếm hơn.',
7758 - 'mwe-upwiz-tooltip-other' => 'Bổ sung thông tin khác về tác phẩm này. Có thể gắn các bản mẫu <a target="_blank" href="http://commons.wikimedia.org/wiki/Commons:Geocoding?uselang=vi" hreflang="vi">mã hóa địa lý</a> vào đây.',
 7895+ 'mwe-upwiz-tooltip-other' => 'Bổ sung thông tin khác về tác phẩm này: tọa độ địa lý, liên kết đến các phiên bản khác, v.v.',
77597896 'mwe-upwiz-tooltip-more-info' => 'Tìm hiểu thêm.',
77607897 'mwe-upwiz-file-need-file' => 'Trước tiên, xin hãy thêm một tập tin để tải lên.',
77617898 'mwe-upwiz-file-need-start' => 'Xin hãy bấm nút này để bắt đầu tải lên.',
@@ -7783,7 +7920,7 @@
77847921 'mwe-upwiz-error-date' => 'Xin hãy nhập ngày hợp lệ theo định dạng YYYY-MM-DD (năm-tháng-ngày) hoặc dùng lịch nổi lên để chọn ngày.',
77857922 'mwe-upwiz-license-cc-by-sa-3.0' => 'Creative Commons Ghi công–Chia sẻ tương tự 3.0',
77867923 'mwe-upwiz-license-cc-by-3.0' => 'Creative Commons Ghi công 3.0',
7787 - 'mwe-upwiz-license-cc-zero' => 'Giấy khước từ Creative Commons CC0',
 7924+ 'mwe-upwiz-license-cc-zero' => 'Giấy khước từ Creative Commons CC0 (phạm vi công cộng)',
77887925 'mwe-upwiz-license-gfdl' => 'Giấy phép Tài liệu Tự do GNU',
77897926 'mwe-upwiz-categories' => 'Thể loại',
77907927 'mwe-upwiz-categories-add' => 'Thêm',
Index: branches/wmf/1.17wmf1/extensions/UploadWizard/resources/mw.UploadWizardDeed.js
@@ -29,13 +29,7 @@
3030 * @return wikitext of all applicable license templates.
3131 */
3232 getLicenseWikiText: function() {
33 - var _this = this;
34 - var wikiText = '';
35 - $j.each ( _this.licenseInput.getTemplates(), function( i, template ) {
36 - wikiText += "{{" + template + "}}\n";
37 - } );
38 -
39 - return wikiText;
 33+ return this.licenseInput.getWikiText();
4034 }
4135
4236 };
@@ -62,7 +56,10 @@
6357 .addClass( 'mwe-upwiz-sign' );
6458
6559 var licenseInputDiv = $j( '<div class="mwe-upwiz-deed-license"></div>' );
66 - _this.licenseInput = new mw.UploadWizardLicenseInput( licenseInputDiv );
 60+ _this.licenseInput = new mw.UploadWizardLicenseInput( licenseInputDiv,
 61+ undefined,
 62+ mw.UploadWizard.config.licensesOwnWork,
 63+ _this.uploadCount );
6764
6865 return $j.extend( _this, {
6966
@@ -91,15 +88,6 @@
9289 },
9390
9491
95 - getLicenseWikiText: function() {
96 - var wikiText = '{{self';
97 - $j.each( _this.licenseInput.getTemplates(), function( i, template ) {
98 - wikiText += '|' + template;
99 - } );
100 - wikiText += '}}';
101 - return wikiText;
102 - },
103 -
10492 setFormFields: function( $selector ) {
10593 _this.$selector = $selector;
10694
@@ -219,7 +207,10 @@
220208 .growTextArea()
221209 .attr( 'title', gM( 'mwe-upwiz-tooltip-author' ) );
222210 licenseInputDiv = $j( '<div class="mwe-upwiz-deed-license"></div>' );
223 - _this.licenseInput = new mw.UploadWizardLicenseInput( licenseInputDiv );
 211+ _this.licenseInput = new mw.UploadWizardLicenseInput( licenseInputDiv,
 212+ undefined,
 213+ mw.UploadWizard.config.licensesThirdParty,
 214+ _this.uploadCount );
224215
225216
226217 return $j.extend( _this, mw.UploadWizardDeed.prototype, {
@@ -231,7 +222,7 @@
232223
233224 var $formFields = $j( '<div class="mwe-upwiz-deed-form-internal" />' );
234225
235 - if ( uploadCount > 1 ) {
 226+ if ( _this.uploadCount > 1 ) {
236227 $formFields.append( $j( '<div />' ).msg( 'mwe-upwiz-source-thirdparty-custom-multiple-intro' ) );
237228 }
238229
@@ -246,7 +237,7 @@
247238 .append( $j( '<label for="author" />' ).text( gM( 'mwe-upwiz-author' ) ).addHint( 'author' ),
248239 _this.authorInput ),
249240 $j( '<div class="mwe-upwiz-thirdparty-license" />' )
250 - .append( gM( 'mwe-upwiz-source-thirdparty-license', uploadCount ) ),
 241+ .msg( 'mwe-upwiz-source-thirdparty-cases', _this.uploadCount ),
251242 licenseInputDiv
252243 );
253244
Index: branches/wmf/1.17wmf1/extensions/UploadWizard/resources/mw.UploadWizardLicenseInput.js
@@ -1,40 +1,125 @@
22 /**
33 * Create a group of radio buttons for licenses. N.b. the licenses are named after the templates they invoke.
4 - * @param div
5 - * @param values (optional) array of license key names to activate by default
 4+ * @param {String|jQuery} selector to place license input
 5+ * @param {Array} license key name(s) to activate by default
 6+ * @param {Array} configuration of licenseInput. Must have following properties
 7+ * 'type' = ("and"|"or") -- whether inclusive or exclusive license allowed
 8+ * 'defaults' => array of template string names (can be empty array),
 9+ * 'licenses' => array of template string names (matching keys in mw.UploadWizard.config.licenses)
 10+ * optional: 'licenseGroups' => groups of licenses, with more explanation
 11+ * @param {Numbe} count of the things we are licensing (it matters to some texts)
612 */
713
814 ( function( $j ) {
9 -mw.UploadWizardLicenseInput = function( selector, values ) {
 15+mw.UploadWizardLicenseInput = function( selector, values, config, count ) {
1016 var _this = this;
 17+ _this.count = count;
1118
12 - var widgetCount = mw.UploadWizardLicenseInput.prototype.count++;
13 -
14 - _this.inputs = [];
 19+ if ( ! ( mw.isDefined(config.type)
 20+ && mw.isDefined( config.defaults )
 21+ && ( mw.isDefined( config.licenses ) || mw.isDefined( config.licenseGroups ) ) ) ) {
 22+ throw new Error( 'improper initialization' );
 23+ }
1524
16 - // TODO incompatibility check of this license versus others
17 -
1825 _this.$selector = $j( selector );
1926 _this.$selector.append( $j( '<div class="mwe-error"></div>' ) );
2027
21 - var name = 'license' + widgetCount;
 28+ _this.type = config.type === 'or' ? 'radio' : 'checkbox';
2229
23 - $j.each( mw.UploadWizard.config[ 'licenses' ], function( i, licenseConfig ) {
24 - var template = licenseConfig.template;
25 - var messageKey = licenseConfig.messageKey;
 30+ _this.defaults = config.defaults;
 31+
 32+ mw.UploadWizardLicenseInput.prototype.count++;
 33+ _this.name = 'license' + mw.UploadWizardLicenseInput.prototype.count;
 34+
2635
27 - var id = name + template;
28 - // IE6 is idiotic about radio buttons; you have to create them as HTML or clicks aren't recorded
29 - var $input = $j( '<input id="' + id + '" name="' + name + '" type="radio" value="' + template + '" />' );
30 - $input.click( function() { _this.$selector.trigger( 'changeLicenses' ); } );
31 - _this.inputs.push( $input );
32 - _this.$selector.append(
33 - $input,
34 - $j( '<label />' ).attr( { 'for': id } ).html( gM( messageKey ) ),
35 - $j( '<br/>' )
36 - );
37 - } );
 36+ /**
 37+ * Define the licenses this input will show:
 38+ */
 39+ _this.licenses = [];
 40+ _this.inputs = [];
 41+ /**
 42+ * append defined license inputs to element; also records licenses and inputs in _this
 43+ * Abstracts out simple lists of licenses, more complex groups with layout
 44+ * @param {jQuery} selector to add inputs to
 45+ * @param {Array} license configuration, which must have a 'licenses' property, which is an array of license names
 46+ * it may also have: 'prependTemplates' or 'filterTemplate', which alter the final wikitext value
 47+ * 'prependTemplates' will prepend Templates. If prependTemplates were [ 'pre', 'pended' ], then...
 48+ * [ 'fooLicense' ] -> "{{pre}}{{pended}}{{fooLicense}}"
 49+ * 'filterTemplates' will filter Templates, as in "own work". If 'filterTemplate' was 'filter', then...
 50+ * [ 'fooLicense', 'barLicense' ] -> {{filter|fooLicense|barLicense}}
 51+ *
 52+ */
 53+ function appendLicenses( $el, config ) {
 54+ if ( !mw.isDefined( config['licenses'] && typeof config['licenses'] === 'object' ) ) {
 55+ throw new Error( "improper license config" );
 56+ }
 57+ $j.each( config['licenses'], function( i, name ) {
 58+ if ( mw.isDefined( mw.UploadWizard.config.licenses[name] ) ) {
 59+ var license = { name: name, props: mw.UploadWizard.config.licenses[name] };
 60+ _this.licenses.push( license );
 61+ var templates = mw.isDefined( license.props['templates'] ) ? license.props.templates : [ license.name ];
 62+ var origTemplateString = templates.join( '|' );
 63+ if ( mw.isDefined( config['prependTemplates'] ) ) {
 64+ $j.each( config['prependTemplates'], function( i, template ) {
 65+ templates.unshift( template );
 66+ } );
 67+ }
 68+ if ( mw.isDefined( config['filterTemplate'] ) ) {
 69+ templates.unshift( config['filterTemplate'] );
 70+ templates = [ templates.join( '|' ) ];
 71+ }
 72+ // using inputs length to ensure that you can have two options which deliver same result,
 73+ // but the label association still works
 74+ var id = _this.name + '_' + templates.join('_') + '_' + _this.inputs.length;
3875
 76+ // the value is literal wikitext; turn template names (or template names + args) into wikitext templates
 77+ var value = ( $j.map( templates, function( t ) { return '{{' + t + '}}'; } ) ).join( '' );
 78+ // IE6 is idiotic about radio buttons; you have to create them as HTML or clicks aren't recorded
 79+ var $input = $j( '<input id="' + id + '" name="' + _this.name + '" type="' + _this.type + '" value="' + value + '" />' );
 80+ $input.click( function() { _this.$selector.trigger( 'changeLicenses' ); } );
 81+ // this is added so that setValues() can find one (or more) checkboxes to check - represent values without wikitext
 82+ $input.data( 'templateString', origTemplateString );
 83+ _this.inputs.push( $input );
 84+
 85+ var messageKey = mw.isDefined( license.props['msg'] ) ? license.props.msg : '[missing msg for ' + license.name + ']';
 86+ var $icons = $j( '<span></span>' );
 87+ if ( mw.isDefined( license.props['icons'] ) ) {
 88+ $j.each( license.props.icons, function( i, icon ) {
 89+ $icons.append( $j( '<span></span>' ).addClass( 'mwe-upwiz-license-icon mwe-upwiz-' + icon + '-icon' ) );
 90+ } );
 91+ }
 92+ $el.append(
 93+ $input,
 94+ $j( '<label />' ).attr( { 'for': id } ).msg( messageKey, _this.count ).append( $icons ),
 95+ $j( '<br/>' )
 96+ // XXX help?
 97+ );
 98+ }
 99+ } );
 100+ }
 101+
 102+ if ( mw.isDefined( config['licenseGroups'] ) ) {
 103+ $j.each( config['licenseGroups'], function( i, group ) {
 104+ if ( !mw.isDefined( group['licenses'] ) ) {
 105+ throw new Error( 'improper config' );
 106+ }
 107+ var $group = $j( '<div></div>' ).addClass( 'mwe-upwiz-deed-license-group' );
 108+ if ( mw.isDefined( group['head'] ) ) {
 109+ $group.append( $j( '<p></p>' ).addClass( 'mwe-upwiz-deed-license-group-head' ).msg( group.head, _this.count ) );
 110+ }
 111+ if ( mw.isDefined( group['subhead'] ) ) {
 112+ $group.append( $j( '<p></p>' ).addClass( 'mwe-upwiz-deed-license-group-subhead' ).msg( group.subhead, _this.count ) );
 113+ }
 114+ var $licensesDiv = $j( '<div></div>' ).addClass( 'mwe-upwiz-deed-license' );
 115+ appendLicenses( $licensesDiv, group );
 116+ $group.append( $licensesDiv );
 117+ _this.$selector.append( $group );
 118+ } );
 119+
 120+ } else {
 121+ appendLicenses( _this.$selector, config );
 122+ }
 123+
39124 if ( values ) {
40125 _this.setValues( values );
41126 }
@@ -46,14 +131,16 @@
47132 count: 0,
48133
49134 /**
50 - * Sets the value(s) of a license input.
51 - * @param object of license-key to boolean values, e.g. { cc_by_sa_30: true, gfdl: true }
 135+ * Sets the value(s) of a license input. This is a little bit klugey because it relies on an inverted dict, and in some
 136+ * cases we are now letting license inputs create multiple templates.
 137+ * @param object of license-key to boolean values, e.g. { 'cc_by_sa_30': true, 'gfdl': true, 'flickrreview|cc_by_sa_30': false }
52138 */
53 - setValues: function( licenseValues ) {
 139+ setValues: function( values ) {
54140 var _this = this;
55141 $j.each( _this.inputs, function( i, $input ) {
56 - var template = $input.val();
57 - $input.attr( 'checked', !!licenseValues[template] );
 142+ var templateString = $input.data( 'templateString' );
 143+ // !! to ensure boolean. ~~ to cast to 0 or 1. Similar to php's (int) (bool) val
 144+ $input.attr( 'checked', ~~!!values[templateString] );
58145 } );
59146 // we use the selector because events can't be unbound unless they're in the DOM.
60147 _this.$selector.trigger( 'changeLicenses' );
@@ -65,23 +152,33 @@
66153 setDefaultValues: function() {
67154 var _this = this;
68155 var values = {};
69 - $j.each( mw.UploadWizard.config[ 'licenses' ], function( i, licenseConfig ) {
70 - values[ licenseConfig.template ] = licenseConfig['default'];
 156+ $j.each( _this.defaults, function( i, lic ) {
 157+ values[lic] = true;
71158 } );
72159 _this.setValues( values );
73160 },
74161
75162 /**
76 - * Gets the templates associated with checked inputs
77 - * @return array of template names
 163+ * Gets the wikitext associated with all checked inputs
 164+ * @return string of wikitext (empty string if no inputs set)
78165 */
79 - getTemplates: function() {
80 - return $j( this.inputs )
81 - .filter( function() { return this.is( ':checked' ); } )
82 - .map( function() { return this.val(); } );
 166+ getWikiText: function() {
 167+ // need to use makeArray because a jQuery-returned set of things won't have .join
 168+ return $j.makeArray(
 169+ this.getCheckedInputs().map( function() { return this.val(); } )
 170+ ).join( "" );
83171 },
84172
85173 /**
 174+ * Gets which inputs are checked
 175+ * @return {jQuery Array} of inputs
 176+ */
 177+ getCheckedInputs: function() {
 178+ return $j( this.inputs ).filter( function() { return this.is( ':checked' ); } );
 179+ },
 180+
 181+
 182+ /**
86183 * Check if a valid value is set, also look for incompatible choices.
87184 * Side effect: if no valid value, add notes to the interface. Add listeners to interface, to revalidate and remove notes.
88185 * @return boolean; true if a value set, false otherwise
@@ -95,8 +192,6 @@
96193 errorHtml = gM( 'mwe-upwiz-deeds-need-license' );
97194 }
98195
99 - // XXX something goes here for licenses incompatible with each other
100 -
101196 var $errorEl = this.$selector.find( '.mwe-error' );
102197 if (isValid) {
103198 $errorEl.fadeOut();
@@ -118,7 +213,7 @@
119214 * @return boolean
120215 */
121216 isSet: function() {
122 - return this.getTemplates().length > 0;
 217+ return this.getCheckedInputs().length > 0;
123218 }
124219
125220 };
Index: branches/wmf/1.17wmf1/extensions/UploadWizard/resources/mw.UploadWizardUploadInterface.js
@@ -68,7 +68,6 @@
6969 .append( _this.$fileInputCtrl )
7070 )
7171 .append( _this.filenameCtrl )
72 - .append( _this.thumbnailParam )
7372 .get( 0 );
7473
7574
Index: branches/wmf/1.17wmf1/extensions/UploadWizard/resources/images/18px-Cc-zero.svg.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes on: branches/wmf/1.17wmf1/extensions/UploadWizard/resources/images/18px-Cc-zero.svg.png
___________________________________________________________________
Added: svn:mime-type
7675 + image/png
Index: branches/wmf/1.17wmf1/extensions/UploadWizard/resources/images/24px-spinner-0645ad-e0f0ff.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: branches/wmf/1.17wmf1/extensions/UploadWizard/resources/images/24px-spinner-0645ad-e0f0ff.gif
___________________________________________________________________
Added: svn:mime-type
7776 + application/octet-stream
Index: branches/wmf/1.17wmf1/extensions/UploadWizard/resources/images/18px-Cc-by_new_white.svg.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes on: branches/wmf/1.17wmf1/extensions/UploadWizard/resources/images/18px-Cc-by_new_white.svg.png
___________________________________________________________________
Added: svn:mime-type
7877 + image/png
Index: branches/wmf/1.17wmf1/extensions/UploadWizard/resources/images/18px-Share_Alike.svg.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes on: branches/wmf/1.17wmf1/extensions/UploadWizard/resources/images/18px-Share_Alike.svg.png
___________________________________________________________________
Added: svn:mime-type
7978 + image/png
Index: branches/wmf/1.17wmf1/extensions/UploadWizard/resources/uploadWizard.css
@@ -1,5 +1,8 @@
 2+/* for feedback request message */
 3+#contentSub {
 4+ margin-left: 0;
 5+}
26
3 -
47 form.mwe-upwiz-form {
58 display: inline;
69 }
@@ -281,10 +284,34 @@
282285 background: url('images/24px-spinner-0645ad.gif') no-repeat center center;
283286 }
284287
 288+.mwe-upwiz-file.hover .mwe-upwiz-status-progress {
 289+ background: url('images/24px-spinner-0645ad-e0f0ff.gif') no-repeat center center;
 290+}
 291+
285292 .mwe-upwiz-status-stashed, .mwe-upwiz-status-uploaded {
286293 background: url('images/32px-Dialog-apply-009900.svg.png') no-repeat center center;
287294 }
288295
 296+
 297+.mwe-upwiz-license-icon {
 298+ height: 18px;
 299+ margin-left: 6px;
 300+ padding: 9px;
 301+ width: 18px;
 302+}
 303+
 304+.mwe-upwiz-cc-zero-icon {
 305+ background: url('images/18px-Cc-zero.svg.png') no-repeat center center;
 306+}
 307+
 308+.mwe-upwiz-cc-sa-icon {
 309+ background: url('images/18px-Share_Alike.svg.png') no-repeat center center;
 310+}
 311+
 312+.mwe-upwiz-cc-by-icon {
 313+ background: url('images/18px-Cc-by_new_white.svg.png') no-repeat center center;
 314+}
 315+
289316 .mwe-upwiz-status-error {
290317 background: url('images/32px-Nuvola_apps_important_orange.svg.png') no-repeat center center;
291318 font-weight: bold;
@@ -476,9 +503,6 @@
477504 font-size: small;
478505 }
479506
480 -fieldset .mwe-long-textarea {
481 - width: 17em;
482 -}
483507
484508 .mwe-title {
485509 font-family: sans-serif;
@@ -500,7 +524,6 @@
501525 }
502526
503527 fieldset.mwe-fieldset {
504 - width: 450px;
505528 border: 1px solid #cccccc;
506529 padding-left: 12px;
507530 padding-right: 12px;
@@ -653,3 +676,19 @@
654677 #upload-wizard .ui-corner-right { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; }
655678 #upload-wizard .ui-corner-left { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; }
656679 #upload-wizard .ui-corner-all { -moz-border-radius: 4px; -webkit-border-radius: 4px; }
 680+
 681+.mwe-upwiz-deed-license-group {
 682+ margin-top: 1em;
 683+ margin-bottom: 1.5em;
 684+}
 685+
 686+.mwe-upwiz-deed-license-group-head {
 687+ font-weight: bold;
 688+ margin-bottom: 0em;
 689+}
 690+
 691+.mwe-upwiz-deed-license-group-subhead {
 692+ color: #797979;
 693+ margin-top: 0em;
 694+ margin-bottom: 0em;
 695+}
Index: branches/wmf/1.17wmf1/extensions/UploadWizard/resources/mw.UploadWizard.js
@@ -448,7 +448,6 @@
449449 fileUrl.query = { title: fileTitle, action: 'view' };
450450 return fileUrl;
451451 }
452 -
453452
454453 };
455454
@@ -519,7 +518,7 @@
520519 * Depending on whether we split uploading / detailing, it may actually always be as simple as loading a URL
521520 */
522521 reset: function() {
523 - window.location.reload();
 522+ window.location = wgArticlePath.replace( '$1', 'Special:UploadWizard?skiptutorial=true' );
524523 },
525524
526525
@@ -529,7 +528,20 @@
530529 */
531530 createInterface: function( selector ) {
532531 var _this = this;
 532+
 533+ // remove first spinner
 534+ $j( '#mwe-first-spinner' ).remove();
533535
 536+ // feedback request
 537+ if ( UploadWizardConfig['feedbackPage'] != '' ) {
 538+ $j( '#contentSub' ).html('<i>Please <a id="mwe-upwiz-feedback" href="#">let us know</a> what you think of Upload Wizard!</i>');
 539+ $j( '#mwe-upwiz-feedback')
 540+ .click( function() {
 541+ _this.launchFeedback();
 542+ return false;
 543+ } );
 544+ }
 545+
534546 // construct the arrow steps from the UL in the HTML
535547 $j( '#mwe-upwiz-steps' )
536548 .addClass( 'ui-helper-clearfix ui-state-default ui-widget ui-helper-reset ui-helper-clearfix' )
@@ -594,7 +606,7 @@
595607
596608 $j( '#mwe-upwiz-stepdiv-deeds .mwe-upwiz-button-next')
597609 .click( function() {
598 - $('.mwe-upwiz-hint').each( function(i) { $(this).tipsy('hide'); } ); // close tipsy help balloons
 610+ $j( '.mwe-upwiz-hint' ).each( function(i) { $j( this ).tipsy( 'hide' ); } ); // close tipsy help balloons
599611 // validate has the side effect of notifying the user of problems, or removing existing notifications.
600612 // if returns false, you can assume there are notifications in the interface.
601613 if ( _this.deedChooser.valid() ) {
@@ -627,7 +639,7 @@
628640
629641 $j( '#mwe-upwiz-stepdiv-details .mwe-upwiz-button-next' )
630642 .click( function() {
631 - $('.mwe-upwiz-hint').each( function(i) { $(this).tipsy('hide'); } ); // close tipsy help balloons
 643+ $j( '.mwe-upwiz-hint' ).each( function(i) { $j( this ).tipsy( 'hide' ); } ); // close tipsy help balloons
632644 if ( _this.detailsValid() ) {
633645 _this.detailsSubmit( function() {
634646 _this.prefillThanksPage();
@@ -641,7 +653,7 @@
642654 // WIZARD
643655
644656 // check to see if the the skip tutorial cookie is set
645 - if ( document.cookie.indexOf('skiptutorial=1') != -1 ) {
 657+ if ( document.cookie.indexOf('skiptutorial=1') != -1 || UploadWizardConfig['skipTutorial'] ) {
646658 // "select" the second step - highlight, make it visible, hide all others
647659 _this.moveToStep( 'file' );
648660 } else {
@@ -1055,7 +1067,7 @@
10561068 $j( '#mwe-upwiz-stepdiv-file .mwe-upwiz-buttons' ).hide();
10571069
10581070 // change "add another file" into "click here to add a file"
1059 - $j( '#mwe-upwiz-add-file' ).msg( 'mwe-upwiz-add-file-0' );
 1071+ $j( '#mwe-upwiz-add-file span' ).msg( 'mwe-upwiz-add-file-0' );
10601072 $j( '#mwe-upwiz-add-file-container' ).addClass('mwe-upwiz-add-files-0');
10611073 $j( '#mwe-upwiz-add-file-container' ).removeClass('mwe-upwiz-add-files-n');
10621074 }
@@ -1190,6 +1202,82 @@
11911203 },
11921204
11931205 /**
 1206+ * Build interface for collecting user feedback on Upload Wizard
 1207+ */
 1208+ launchFeedback: function() {
 1209+ _this = this;
 1210+
 1211+ var displayError = function( message ) {
 1212+ $j( '#mwe-upwiz-feedback-form div' ).hide(); // remove everything else from the dialog box
 1213+ $j( '#mwe-upwiz-feedback-form' ).append ( $j( '<div style="color:#990000;margin-top:0.4em;"></div>' ).msg( message ) );
 1214+ }
 1215+
 1216+ // Set up buttons for dialog box. We have to do it the hard way since the json keys are localized
 1217+ var cancelButton = gM( 'mwe-upwiz-feedback-cancel' );
 1218+ var submitButton = gM( 'mwe-upwiz-feedback-submit' );
 1219+ var buttonSettings = {};
 1220+ buttonSettings[cancelButton] = function() { $j( this ).dialog( 'close' ); };
 1221+ buttonSettings[submitButton] = function() {
 1222+ $feedbackForm.dialog({buttons:{}});
 1223+ $j( '#mwe-upwiz-feedback-form div' ).hide(); // remove everything else from the dialog box
 1224+ $j( '#mwe-upwiz-feedback-form' ).append ( $j( '<div style="text-align:center;margin:3em 0;"></div>' ).append( gM( 'mwe-upwiz-feedback-adding' ), $j( '<br/>' ), $j( '<img src="http://upload.wikimedia.org/wikipedia/commons/4/42/Loading.gif" />' ) ) );
 1225+ var subject = $j( '#mwe-upwiz-feedback-subject' ).val();
 1226+ var message = $j( '#mwe-upwiz-feedback-message' ).val();
 1227+ if ( message.indexOf( '~~~' ) == -1 ) {
 1228+ message = message+' ~~~~';
 1229+ }
 1230+ var useTokenToPostFeedback = function( token ) {
 1231+ $j.ajax({
 1232+ url: wgScriptPath + '/api.php',
 1233+ data: $.param({
 1234+ action: 'edit',
 1235+ title: mw.UploadWizard.config['feedbackPage'],
 1236+ section: 'new',
 1237+ summary: subject,
 1238+ text: message,
 1239+ format: 'json',
 1240+ token: token
 1241+ }),
 1242+ dataType: 'json',
 1243+ type: 'POST',
 1244+ success: function( data ) {
 1245+ if ( typeof data.edit != 'undefined' ) {
 1246+ if ( data.edit.result == 'Success' ) {
 1247+ $feedbackForm.dialog( 'close' ); // edit complete, close dialog box
 1248+ } else {
 1249+ displayError( 'mwe-upwiz-feedback-error1' ); // unknown API result
 1250+ }
 1251+ } else {
 1252+ displayError( 'mwe-upwiz-feedback-error2' ); // edit failed
 1253+ }
 1254+ },
 1255+ error: function( xhr ) {
 1256+ displayError( 'mwe-upwiz-feedback-error3' ); // ajax request failed
 1257+ }
 1258+ }); // close Ajax request
 1259+ }; // close useTokenToPost function
 1260+ _this.api.getEditToken( useTokenToPostFeedback );
 1261+ }; // close submit button function
 1262+
 1263+ // Construct the feedback form
 1264+ var feedbackLink = '<a href="'+wgArticlePath.replace( '$1', mw.UploadWizard.config['feedbackPage'].replace( /\s/g, '_' ) )+'" target="_blank">'+mw.UploadWizard.config['feedbackPage']+'</a>';
 1265+ $feedbackForm = $j( '<div id="mwe-upwiz-feedback-form" style="position:relative;"></div>' )
 1266+ .append( $j( '<div style="margin-top:0.4em;"></div>' ).append( $j( '<small></small>' ).msg( 'mwe-upwiz-feedback-note', feedbackLink ) ) )
 1267+ .append( $j( '<div style="margin-top:1em;"></div>' ).append( gM( 'mwe-upwiz-feedback-subject' ), $j( '<br/>' ), $j( '<input type="text" id="mwe-upwiz-feedback-subject" name="subject" maxlength="60" style="width:99%;"/>' ) ) )
 1268+ .append( $j( '<div style="margin-top:0.4em;"></div>' ).append( gM( 'mwe-upwiz-feedback-message' ), $j( '<br/>' ), $j( '<textarea name="message" id="mwe-upwiz-feedback-message" style="width:99%;" rows="4" cols="60"></textarea>' ) ) )
 1269+ .dialog({
 1270+ width: 500,
 1271+ autoOpen: false,
 1272+ title: gM( 'mwe-upwiz-feedback-title' ),
 1273+ modal: true,
 1274+ buttons: buttonSettings
 1275+ }); // close dialog, end $feedbackForm definition
 1276+
 1277+ $feedbackForm.dialog( 'open' );
 1278+
 1279+ }, // close launchFeedback function
 1280+
 1281+ /**
11941282 * Set a cookie which lets the user skip the tutorial step in the future
11951283 */
11961284 setSkipTutorialCookie: function() {
@@ -1314,7 +1402,7 @@
13151403 $j( '<span/>' )
13161404 .addClass( 'mwe-upwiz-hint' )
13171405 .attr( attrs )
1318 - .click( function() { $( this ).tipsy( 'toggle' ); return false; } )
 1406+ .click( function() { $j( this ).tipsy( 'toggle' ); return false; } )
13191407 .tipsy( { title: contentSource, html: html, opacity: 1.0, gravity: 'sw', trigger: 'manual'} )
13201408 );
13211409 };
Index: branches/wmf/1.17wmf1/extensions/UploadWizard/UploadWizard.php
@@ -40,10 +40,14 @@
4141 'UploadWizardMessages',
4242 'UploadWizardHooks',
4343 'UploadWizardTutorial',
44 - 'UploadWizardDependencyLoader' ) as $module ) {
 44+ 'UploadWizardDependencyLoader'
 45+ //, 'ApiTitleCheck'
 46+ ) as $module ) {
4547 $wgAutoloadLocalClasses[$module] = $wgUpwizDir . "/" . $module . ".php";
4648 }
4749
 50+$wgAPIModules['titlecheck'] = 'ApiTitleCheck';
 51+$wgAPIListModules['titlecheck'] = 'ApiTitleCheck';
4852
4953 # Let the special page be a special center of unique specialness
5054 $wgSpecialPages['UploadWizard'] = 'SpecialUploadWizard';
Index: branches/wmf/1.17wmf1/extensions/UploadWizard/SpecialUploadWizard.php
@@ -37,8 +37,8 @@
3838 * @param $subPage, e.g. the "foo" in Special:UploadWizard/foo.
3939 */
4040 public function execute( $subPage ) {
41 - global $wgLang, $wgUser, $wgOut, $wgExtensionAssetsPath,
42 - $wgUploadWizardDisableResourceLoader;
 41+ global $wgRequest, $wgLang, $wgUser, $wgOut, $wgExtensionAssetsPath,
 42+ $wgUploadWizardDisableResourceLoader, $wgUploadWizardConfig;
4343
4444 // side effects: if we can't upload, will print error page to wgOut
4545 // and return false
@@ -48,6 +48,11 @@
4949
5050 $this->setHeaders();
5151 $this->outputHeader();
 52+
 53+ // if query string includes 'skiptutorial=true' set config variable to true
 54+ if ( $wgRequest->getText( 'skiptutorial' ) ) {
 55+ $wgUploadWizardConfig['skipTutorial'] = true;
 56+ }
5257
5358 // fallback for non-JS
5459 $wgOut->addHTML( '<noscript>' );
@@ -174,10 +179,12 @@
175180 * @return {String} html
176181 */
177182 function getWizardHtml() {
 183+ global $wgUploadWizardConfig, $wgExtensionAssetsPath;
 184+
178185 $tutorialHtml = '';
179186 // only load the tutorial HTML if we aren't skipping the first step
180187 // TODO should use user preference not a cookie ( so the user does not have to skip it for every browser )
181 - if ( !isset( $_COOKIE['skiptutorial'] ) ) {
 188+ if ( !isset( $_COOKIE['skiptutorial'] ) && !$wgUploadWizardConfig['skipTutorial'] ) {
182189 $tutorialHtml = UploadWizardTutorial::getHtml();
183190 }
184191 // TODO move this into UploadWizard.js or some other javascript resource so the upload wizard
@@ -185,6 +192,20 @@
186193 return
187194 '<div id="upload-wizard" class="upload-section">'
188195
 196+ // if loading takes > 2 seconds display spinner. Note we are evading Resource Loader here, and linking directly. Because we want an image to appear if RL's package is late.
 197+ // using some &nbsp;'s which is a bit of superstition, to make sure jQuery will hide this (it seems that it doesn't sometimes, when it has no content)
 198+ // the min-width & max-width is copied from the #uploadWizard properties, so in nice browsers the spinner is right where the button will go.
 199+ . '<div id="mwe-first-spinner" style="visibility:hidden; min-width:750px; max-width:900px; height:200px; line-height:200px; text-align:center;">&nbsp;</div>'
 200+ . '<script language="JavaScript">'
 201+ . 'window.setTimeout( function() {'
 202+ . 'var s = document.getElementById( "mwe-first-spinner" );'
 203+ . 'if (s) {'
 204+ . 's.innerHTML = "&nbsp;<img src=\\"' . $wgExtensionAssetsPath . '/UploadWizard/resources/images/24px-spinner-0645ad.gif\\" width=\\"24\\" height=\\"24\\" />&nbsp;";'
 205+ . 's.style.visibility = "visible";'
 206+ . '}'
 207+ . '}, 2000)'
 208+ . '</script>'
 209+
189210 // the arrow steps - hide until styled
190211 . '<ul id="mwe-upwiz-steps" style="display:none;">'
191212 . '<li id="mwe-upwiz-step-tutorial"><div>' . wfMsg( 'mwe-upwiz-step-tutorial' ) . '</div></li>'
@@ -210,7 +231,7 @@
211232
212233 . '<div class="mwe-upwiz-stepdiv ui-helper-clearfix" id="mwe-upwiz-stepdiv-file" style="display:none;">'
213234 . '<div id="mwe-upwiz-files">'
214 - . '<div id="mwe-upwiz-filelist" class="ui-corner-all"></div>'
 235+ . '<div id="mwe-upwiz-filelist" class="ui-corner-all"></div>'
215236 . '<div id="mwe-upwiz-upload-ctrls" class="mwe-upwiz-file ui-helper-clearfix">'
216237 . '<div id="mwe-upwiz-add-file-container" class="mwe-upwiz-add-files-0">'
217238 . '<button id="mwe-upwiz-add-file">' . wfMsg( "mwe-upwiz-add-file-0" ) . '</button>'

Past revisions this follows-up on

RevisionCommit summaryAuthorDate
r85604removing unused varkaldari01:45, 7 April 2011
r85606beginning of fix for Bug 28316kaldari02:00, 7 April 2011

Status & tagging log