r98150 MediaWiki - Code Review archive

Repository:MediaWiki
Revision:r98149‎ | r98150 | r98151 >
Date:18:01, 26 September 2011
Author:neilk
Status:deferred
Tags:
Comment:
MFT -r97517:98079, some refactorings, few visible changes except r97593, fix to bug #30237 and other similar bugs
Modified paths:
  • /branches/wmf/1.17wmf1/extensions/UploadWizard/UploadWizard.i18n.php (modified) (history)
  • /branches/wmf/1.17wmf1/extensions/UploadWizard/UploadWizardHooks.php (modified) (history)
  • /branches/wmf/1.17wmf1/extensions/UploadWizard/resources/mw.UploadWizard.js (modified) (history)
  • /branches/wmf/1.17wmf1/extensions/UploadWizard/resources/mw.UploadWizardLicenseInput.js (modified) (history)
  • /branches/wmf/1.17wmf1/extensions/UploadWizard/resources/mw.UploadWizardUpload.js (added) (history)
  • /branches/wmf/1.17wmf1/extensions/UploadWizard/resources/mw.UploadWizardUploadInterface.js (modified) (history)

Diff [purge]

Index: branches/wmf/1.17wmf1/extensions/UploadWizard/UploadWizardHooks.php
@@ -91,6 +91,7 @@
9292 'resources/mw.UploadWizard.js',
9393
9494 // main library components:
 95+ 'resources/mw.UploadWizardUpload.js',
9596 'resources/mw.UploadWizardDeed.js',
9697 'resources/mw.UploadWizardDescription.js',
9798 'resources/mw.UploadWizardDetails.js',
Index: branches/wmf/1.17wmf1/extensions/UploadWizard/UploadWizard.i18n.php
@@ -112,7 +112,7 @@
113113 'mwe-upwiz-source-thirdparty-cases' => 'Now tell us why you are sure this site has the right to publish {{PLURAL:$1|this work|these works}}:',
114114 'mwe-upwiz-source-thirdparty-accept' => 'OK',
115115 'mwe-upwiz-source-custom' => 'Provide copyright information for each file individually on the next page.',
116 - 'mwe-upwiz-more-options' => 'more options...',
 116+ 'mwe-upwiz-more-options' => 'add categories and more information...',
117117 'mwe-upwiz-fewer-options' => 'fewer options...',
118118 'mwe-upwiz-desc' => 'Description',
119119 'mwe-upwiz-desc-add-n' => 'add a description in another language',
@@ -536,6 +536,31 @@
537537 "Use" is the message {{msg-mw|Mwe-upwiz-step-thanks}}',
538538 );
539539
 540+/** Canadian English (Canadian English)
 541+ * @author Dantman
 542+ */
 543+$messages['en-ca'] = array(
 544+ '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 licence:',
 545+ 'mwe-upwiz-source-ownwork-assert-note' => 'This means you release your work under the following licence: $1',
 546+ 'mwe-upwiz-source-thirdparty-license' => 'The copyright holder of {{PLURAL:$1|this work|these works}} published {{PLURAL:$1|it|them}} under the following licence(s):',
 547+ 'mwe-upwiz-deeds-need-license' => 'Please select a licence.',
 548+ 'mwe-upwiz-license-show-all' => 'Use a different licence',
 549+ 'mwe-upwiz-license-show-recommended' => 'Use the recommended licence',
 550+ 'mwe-upwiz-license-fal' => 'Free Art Licence',
 551+ 'mwe-upwiz-license-own-pd' => 'Public domain (all rights waived with Creative Commons Zero licence)',
 552+ 'mwe-upwiz-license-pd-art' => 'Reproduction of a painting that is in public domain because of its age',
 553+ 'mwe-upwiz-license-gfdl' => 'GNU Free Documentation Licence',
 554+ 'mwe-upwiz-license-cc-head' => 'The copyright holder published {{PLURAL:$1|this work|these works}} with the right Creative Commons licence',
 555+ 'mwe-upwiz-license-cc-subhead' => 'Not all Creative Commons licenscs are good for this site. Make sure the copyright holder used one of these licences.',
 556+ 'mwe-upwiz-license-flickr-head' => 'The copyright holder published their {{PLURAL:$1|photo or video|photos or videos}} on Flickr with the right licence',
 557+ 'mwe-upwiz-license-flickr-subhead' => 'Check the "Licence" header on the side of the Flickr page. Both the icons and licence name that they used have to match one of the choices here.',
 558+ 'mwe-upwiz-license-custom-head' => 'Experts only: enter the code for a licence not shown here',
 559+ 'mwe-upwiz-license-custom-subhead' => 'Enter wikitext that will add a licence template to your uploads.',
 560+ 'mwe-upwiz-license-external' => 'This file is under the following licence on $1: <b>$2</b>.',
 561+ 'mwe-upwiz-license-external-invalid' => 'This file is under the following licence on $1: <b>$2</b>. Unfortunately, this licence is not appropriate for use on this site.',
 562+ 'mwe-upwiz-campaign-conf-defaultOwnWorkLicence' => 'The default own work licence:',
 563+);
 564+
540565 /** Afrikaans (Afrikaans)
541566 * @author Naudefj
542567 */
@@ -831,7 +856,7 @@
832857 'mwe-upwiz-source-ownwork-assert-custom' => 'أنا، $2، صاحب حقوق التأليف والنشر {{PLURAL:$1|هذا العمل|هذه الأعمال}}، أنشر هنا {{PLURAL:$1|هذا العمل|هذه الأعمال}} تحت الرخص التالية:',
833858 'mwe-upwiz-source-ownwork-assert-note' => 'هذا يعني أنك تتيح نشر عملك تحت الرخصة التالية: $1',
834859 'mwe-upwiz-source-permission' => 'أعطى اصحابها لك إذن صريح لرفعها هنا',
835 - 'mwe-upwiz-source-thirdparty' => '{{PLURAL:$1| هذا الملف هو | هذه الملفات هي}} من عملي الخاص.',
 860+ 'mwe-upwiz-source-thirdparty' => '{{PLURAL:$1||هذا الملف ليس|هذان الملفان ليسا|هذه الملفات ليست}} من عملي.',
836861 'mwe-upwiz-source-thirdparty-intro' => 'الرجاء إدخال عنوان حيث يمكنك العثور على كل ملف.',
837862 'mwe-upwiz-source-thirdparty-custom-multiple-intro' => 'إذا كان لدى كافة الملفات المصدر نفسه والكاتب ووضع حقوق التأليف والنشر، قد أدخل لهم مرة واحدة فقط لكل منهم.',
838863 'mwe-upwiz-source-thirdparty-license' => 'مالك حقوق النشر ل {{PLURAL:$1|هذا العمل|هذه الأعمال}} نشرت {{PLURAL:$1|العمل|الأعمال}} تحت الترخيص التالي:',
@@ -1144,7 +1169,7 @@
11451170 'mwe-upwiz-source-thirdparty-cases' => "Agora, cuntanos por qué tas seguru de qu'esti sitiu tien permisu pa espublizar {{PLURAL:$1|esta obra|estes obres}}:",
11461171 'mwe-upwiz-source-thirdparty-accept' => 'Aceutar',
11471172 'mwe-upwiz-source-custom' => "Da información de los drechos d'autor pa cada ficheru individual na páxina siguiente.",
1148 - 'mwe-upwiz-more-options' => 'más opciones...',
 1173+ 'mwe-upwiz-more-options' => 'amestar categoríes y más información...',
11491174 'mwe-upwiz-fewer-options' => 'menos opciones...',
11501175 'mwe-upwiz-desc' => 'Descripción',
11511176 'mwe-upwiz-desc-add-n' => "amestar una descripción n'otra llingua",
@@ -1169,6 +1194,7 @@
11701195 'mwe-upwiz-help-allowed-filename-extensions' => 'Estensiones de nome de ficheru permitíes',
11711196 'mwe-upwiz-upload-error-duplicate' => 'Esti ficheru yá se xubió a la wiki anteriormente.',
11721197 'mwe-upwiz-upload-error-stashed-anyway' => '¿Xubir de toles maneres?',
 1198+ 'mwe-upwiz-upload-error-unknown-filename-error' => 'Nun ye posible lleer o entender el nome del ficheru «$1» por razones desconocíes.',
11731199 'mwe-upwiz-ok' => 'Aceutar',
11741200 'mwe-upwiz-cancel' => 'Encaboxar',
11751201 'mwe-upwiz-thumbnail-more' => 'Agrandar',
@@ -1360,7 +1386,7 @@
13611387 'mwe-upwiz-source-thirdparty-cases' => 'Цяпер раскажыце нам, чаму вы перакананыя, што {{SITENAME}} мае права на публікацыю {{PLURAL:$1|гэтага твору|гэтых твораў}}:',
13621388 'mwe-upwiz-source-thirdparty-accept' => 'Добра',
13631389 'mwe-upwiz-source-custom' => 'Падайце інфармацыю пра аўтарскія правы асобна для кожнага файла на наступнай старонцы.',
1364 - 'mwe-upwiz-more-options' => 'болей наладаў…',
 1390+ 'mwe-upwiz-more-options' => 'дадаць катэгорыі і болей інфармацыі…',
13651391 'mwe-upwiz-fewer-options' => 'меней наладаў…',
13661392 'mwe-upwiz-desc' => 'Апісаньне',
13671393 'mwe-upwiz-desc-add-n' => 'дадаць апісаньне на іншай мове',
@@ -1410,7 +1436,7 @@
14111437 'mwe-upwiz-tooltip-source' => 'Адкуль зьявіўся гэты лічбавы файл — можа быць URL-адрас, кніга, ці публікацыя',
14121438 'mwe-upwiz-tooltip-sign' => 'Вы можаце выкарыстоўваць назву Вашага рахунку ў вікі, альбо Вашае сапраўднае імя. У любым выпадку будзе спасылка на Вашую старонку удзельніка',
14131439 'mwe-upwiz-tooltip-title' => 'Кароткая ўнікальная назва файла. Вы можаце выкарыстоўваць звычайны тэкст з прагаламі. Не пазначайце пашырэньне.',
1414 - 'mwe-upwiz-dialog-title' => 'Файлы могуць быць загружаныя з назвамі на любой мове любым альфабэтам (у кадаваньні UTF-8). Варта, каб па назвах файлаў быў зразумелы іх зьмест.',
 1440+ 'mwe-upwiz-dialog-title' => 'Файлы могуць быць загружаныя з назвамі на любой мове любым альфабэтам. Варта, каб па назвах мэдыя-файлаў быў зразумелы іх зьмест для выбранай мовы.',
14151441 'mwe-upwiz-tooltip-description' => "Коратка апішыце ўсё значнае пра гэты файл. Для фота, узгадайце пра асноўны аб'ект, выпадак ці месца.",
14161442 'mwe-upwiz-tooltip-date' => 'Дата стварэньня працы ці першай публікацыі (у фармаце «гггг-мм-дд»).',
14171443 'mwe-upwiz-tooltip-categories' => 'Дадайце [$1 катэгорыі] да файла, каб яго можна было лягчэй знайсьці.',
@@ -1540,6 +1566,8 @@
15411567 'mwe-upwiz-campaigns-editing' => 'Загрузіць налады кампаніі',
15421568 'mwe-upwiz-campaigns-delete' => 'Выдаліць',
15431569 'mwe-upwiz-campaigns-confdel' => 'Вы ўпэўнены, што жадаеце выдаліць гэтую кампанію?',
 1570+ 'mwe-upwiz-campaigns-delete-failed' => 'Немагчыма выдаліць кампанію.',
 1571+ 'mwe-upwiz-campaigns-confirm-delete' => 'Вы ўпэўнены, што жадаеце выдаліць гэтую кампанію?',
15441572 'uploadcampaign-legend' => 'Загрузіць налады кампаніі',
15451573 'uploadcampaign-text' => 'Вы мадыфікуеце кампанію Майстра загрузак.',
15461574 'mwe-upwiz-campaign-name' => 'Назва кампаніі',
@@ -1854,6 +1882,7 @@
18551883 'mwe-upwiz-campaign-owner-notown' => 'Позволено е качването само на чужди творби',
18561884 'mwe-upwiz-campaign-conf-licensesOwnWork' => 'Лицензите, измежду които може да се избира при собствени творби:',
18571885 'mwe-upwiz-campaign-conf-tutorialTemplate' => 'Заглавие на наръчника в Общомедия. $1 се заменя с езиковия код:',
 1886+ 'mw-coolcats-confirm-new' => 'Изглежда се опитвате да добавите нова категория, "$1". Внимавайте:<ul><li>Категориите обичайно трябва да бъдат изписани на английски език.</li><li>Повечето нови категории следва да бъдат подкатегории на вече съществуващи категории.</li></ul>Като цяло категориите би трябвало да се създават само от опитни потребители.',
18581887 );
18591888
18601889 /** Bengali (বাংলা)
@@ -2163,6 +2192,7 @@
21642193 'mwe-upwiz-help-allowed-filename-extensions' => 'Astennoù anvioù restroù aotreet',
21652194 'mwe-upwiz-upload-error-duplicate' => 'Enporzhiet eo bet dija ar restr war ar wiki-mañ.',
21662195 'mwe-upwiz-upload-error-stashed-anyway' => 'Enporzhiañ memes tra ?',
 2196+ 'mwe-upwiz-upload-error-unknown-filename-error' => 'N\'hallomp ket lenn pe kompren anv ar restr "$1" evit abegoù dianav.',
21672197 'mwe-upwiz-ok' => 'Mat eo',
21682198 'mwe-upwiz-cancel' => 'Nullañ',
21692199 'mwe-upwiz-fileexists-replace' => 'Ur restr gant an titl "$1" a zo dija. Mar plij kemmit ho titl evit ma vefe dibar.',
@@ -2321,6 +2351,10 @@
23222352 'uploadcampaign-legend' => "Kefluniadur ar c'houlzad dastum moneiz",
23232353 'mwe-upwiz-campaign-name' => "Anv ar c'houlzad :",
23242354 'mwe-upwiz-campaign-enabled' => 'Koulzad gweredekaet',
 2355+ 'mwe-upwiz-campaign-owner-choice' => 'Aotren a ra an implijer da zibab etre e labour dezhañ ha labourioù tud all',
 2356+ 'mwe-upwiz-campaign-conf-thanksLabelPage' => 'Pajenn enni testenn da ziskouez e laez ar bajenn "Implijout". Erlerc\'hiet e vo $1 gant ar c\'hod yezh :',
 2357+ 'mwe-upwiz-campaign-conf-idFieldMaxLength' => 'Hirder brasañ an destenn er vaezienn ID',
 2358+ 'mw-coolcats-confirm-new-title' => 'Kadarnaat ar rummad nevez',
23252359 'mw-coolcats-confirm-new-ok' => 'Ouzhpennañ ar rummad forzh penaos',
23262360 'mw-coolcats-confirm-new-cancel' => 'Ne vern',
23272361 );
@@ -2980,7 +3014,7 @@
29813015 'mwe-upwiz-source-thirdparty-cases' => 'Vysvětlete, proč jste si jisti, že má tento server právo zveřejnit {{PLURAL:$1|toto dílo|tato díla}}:',
29823016 'mwe-upwiz-source-thirdparty-accept' => 'OK',
29833017 'mwe-upwiz-source-custom' => 'Na další stránce poskytnout informace o autorských právech pro každý soubor zvlášť.',
2984 - 'mwe-upwiz-more-options' => 'další možnosti…',
 3018+ 'mwe-upwiz-more-options' => 'přidat kategorie a další informace…',
29853019 'mwe-upwiz-fewer-options' => 'méně možností…',
29863020 'mwe-upwiz-desc' => 'Popis',
29873021 'mwe-upwiz-desc-add-n' => 'přidat popis v dalším jazyce',
@@ -3460,7 +3494,7 @@
34613495 'mwe-upwiz-source-thirdparty-cases' => 'Fortæl os nu, hvorfor du er sikker på at denne hjemmeside har tilladelse til at offentliggøre {{PLURAL:$1|dette værk|disse værker}}:',
34623496 'mwe-upwiz-source-thirdparty-accept' => 'OK',
34633497 'mwe-upwiz-source-custom' => 'Angiv ophavsretlig information for hver enkelt fil på den næste side.',
3464 - 'mwe-upwiz-more-options' => 'flere valgmuligheder...',
 3498+ 'mwe-upwiz-more-options' => 'tilføj kategorier eller yderligere oplysninger...',
34653499 'mwe-upwiz-fewer-options' => 'færre valgmuligheder...',
34663500 'mwe-upwiz-desc' => 'Beskrivelse',
34673501 'mwe-upwiz-desc-add-n' => 'tilføj en beskrivelse på et andet sprog',
@@ -3649,7 +3683,6 @@
36503684 'uploadcampaign-text' => 'Du er ved at redigere en kampagne til vejviseren til filoplægning.',
36513685 'mwe-upwiz-campaign-name' => 'Kampagnenavn',
36523686 'mwe-upwiz-campaign-enabled' => 'Kampagne aktiveret',
3653 - 'mwe-upwiz-campaign-customLicense' => 'Brugerdefineret licens',
36543687 'mwe-upwiz-campaign-conf-skipTutorial' => 'Spring licensvejviseren over',
36553688 'mwe-upwiz-campaign-conf-autoCategories' => 'Kategorier, der skal tilføjes filerne automatisk og lydløst (adskilt med lodret streg)',
36563689 'mwe-upwiz-campaign-conf-defaultCategories' => 'Standardkategorier, der skal oplistes under beskriv-fanebladet (adskilt med lodret streg)',
@@ -3669,8 +3702,6 @@
36703703 'mwe-upwiz-campaign-conf-headerLabelPage' => 'Side, der indeholder tekst, som skal vises over vejviserens brugerflade. $1 erstattes med sprogkoden.',
36713704 'mwe-upwiz-campaign-conf-thanksLabelPage' => 'Side, der indeholder tekst, som skal vises øverst på "Brug"-siden. $1 erstattes med sprogkoden:',
36723705 'mwe-upwiz-campaign-conf-idFieldMaxLength' => 'Maksimal længde på teksten i ID-feltet',
3673 - 'mwe-upwiz-campaign-conf-wikitextLicense' => 'Wikitekst for en brugerdefineret licens for egne værker. Lad stå tom hvis ingen brugerdefineret licens skal kunne vælges. $1 erstattes med sprogkoden:',
3674 - 'mwe-upwiz-campaign-conf-wikitextLicenseTemplates' => 'Skabeloner, der skal tilføjes, når brugeren vælger den brugerdefinerede licens (adskilt med lodret streg):',
36753706 'mw-coolcats-confirm-new-title' => 'Bekræft ny kategori',
36763707 'mw-coolcats-confirm-new' => 'Det ser ud til, at du forsøger at tilføje en ny kategori, "$1". Vær opmærksom på: <ul><li>Kategorier bør normalt være på engelsk.</li><li>De fleste nye kategorier bør være underkategorier til eksisterende kategorier.</li></ul>Generelt bør kun erfarne brugere tilføje nye kategorier.',
36773708 'mw-coolcats-confirm-new-ok' => 'Tilføj denne kategori alligevel',
@@ -3788,7 +3819,7 @@
37893820 '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:',
37903821 'mwe-upwiz-source-thirdparty-accept' => 'OK',
37913822 'mwe-upwiz-source-custom' => 'Gib auf der nächsten Seite die Urheberrechtsinformation für jede einzelne Datei an.',
3792 - 'mwe-upwiz-more-options' => 'Kategorien und weitere Informationen …',
 3823+ 'mwe-upwiz-more-options' => 'Kategorien und weitere Informationen hinzufügen …',
37933824 'mwe-upwiz-fewer-options' => 'weniger Optionen …',
37943825 'mwe-upwiz-desc' => 'Beschreibung',
37953826 'mwe-upwiz-desc-add-n' => 'Füge eine Beschreibung in einer anderen Sprache hinzu',
@@ -4032,7 +4063,7 @@
40334064 'mwe-prevent-close' => 'Das Verlassen dieser Seite führt dazu, dass alle Ihre Änderungen verloren gehen.',
40344065 'mwe-upwiz-files-complete' => 'Ihre Dateien wurden nunmehr vollständig hochgeladen!',
40354066 'mwe-upwiz-tooltip-sign' => 'Sie können Ihren Benutzernamen auf diesem Wiki oder Ihren bürgerlichen Namen verwenden. In beiden Fällen wird er mit Ihrer Benutzerseite verknüpft.',
4036 - 'mwe-upwiz-tooltip-description' => 'Beschreiben Sie kurz alles Wichtige zu diesem Werk. Bei einem Foto beispielsweise die wichtigsten abgebildeten Bestandteile, den Anlass der Aufnahme und/ oder den Standort.',
 4067+ 'mwe-upwiz-tooltip-description' => 'Beschreiben Sie kurz alles Wichtige zu diesem Werk. Bei einem Foto beispielsweise die wichtigsten abgebildeten Bestandteile, den Anlass der Aufnahme und/oder den Standort.',
40374068 'mwe-upwiz-tooltip-categories' => 'Fügen Sie der Datei [$1 Kategorien] hinzu, damit sie leichter auffindbar wird.',
40384069 'mwe-upwiz-tooltip-other' => 'Alle weiteren Informationen, die Sie im Zusammenhang mit diesem Werk angeben möchten, bspw. geographische Koordinaten, Links zu anderen Versionen, usw.',
40394070 'mwe-upwiz-tooltip-more-info' => 'Erfahren Sie mehr.',
@@ -5007,10 +5038,11 @@
50085039 'mwe-upwiz-source-thirdparty-license' => '{{PLURAL:$1|Selle teose|Nende teoste}} autoriõiguse valdaja avaldas {{PLURAL:$1|selle|need}} järgmiste litsentside all:',
50095040 'mwe-upwiz-source-thirdparty-cases' => 'Järgmiseks ütle meile, miks oled kindel, et see võrgukoht tohib {{PLURAL:$1|selle teose|need teosed}} avaldada:',
50105041 'mwe-upwiz-source-custom' => 'Varusta järgmisel leheküljel iga fail ükshaaval autoriõigusteabega.',
5011 - 'mwe-upwiz-more-options' => 'veel suvandeid...',
 5042+ 'mwe-upwiz-more-options' => 'lisa kategooriad ja veel andmeid...',
50125043 'mwe-upwiz-fewer-options' => 'vähem suvandeid...',
50135044 'mwe-upwiz-desc' => 'Kirjeldus',
50145045 'mwe-upwiz-desc-add-n' => 'Lisa muus keeles kirjeldus',
 5046+ 'mwe-upwiz-desc-add-0' => 'lisa kirjeldus',
50155047 'mwe-upwiz-title' => 'Pealkiri',
50165048 'mwe-upwiz-media-type' => 'Meediatüüp',
50175049 'mwe-upwiz-date-created' => 'Valmistamiskuupäev',
@@ -5303,34 +5335,36 @@
53045336 * @author Huji
53055337 * @author Mjbmr
53065338 * @author Omnia
 5339+ * @author Reza1615
 5340+ * @author ZxxZxxZ
53075341 */
53085342 $messages['fa'] = array(
53095343 'uploadwizard' => 'جادوگر بارگذاری',
5310 - 'uploadwizard-desc' => 'بارگذاری آسان ، توسعه یافته برای اعطای قابلیت استفاده چند رسانه ای',
 5344+ 'uploadwizard-desc' => 'جادوگر بارگذاری، برای اعطای قابلیت استفاده چندرسانه‌ای گسترش یافته‌است.',
53115345 'mwe-upwiz-uploadcampaigns' => 'کمپین بارگذاری',
53125346 'mwe-upwiz-uploadcampaign' => 'پیکربندی کمپین بارگذاری',
53135347 'right-upwizcampaigns' => 'کمپین‌های بارگذاری آسان را تنظیم کنید',
53145348 'group-upwizcampeditors' => 'ویرایشگران جادوگر بارگذاری کمپین',
53155349 'group-upwizcampeditors-member' => 'ویرایشگر جادوگر بارگذاری کمپین',
53165350 'grouppage-upwizcampeditors' => 'Project:ویرایشگران جادوگر بارگذاری کمپین',
5317 - 'mwe-upwiz-js-off' => 'جادوگر بارگذاری از جاوااسکریپت برای بهتر شدن رابط کاربری استفاده می‌کند. مرورگر شما یا از جاوااسکریپت پشتیبانی نمی‌کند یا جاوااسکریپت خاموش است، بنابراین ما به شما فرم ساده بارگذاری را نمایش می‌دهیم.',
5318 - 'mwe-upwiz-extension-disabled' => 'به علت مشکلات فنی، این صفحه غیرفعال شده است. در این زمان می‌توانید از فرم استاندارد بارگذاری استفاده کنید.',
 5351+ 'mwe-upwiz-js-off' => 'جادوگر بارگذاری از جاوااسکریپت برای بهتر شدن رابط کاربری استفاده می‌کند. مرورگر شما یا از جاوااسکریپت پشتیبانی نمی‌کند یا جاوااسکریپت خاموش است، بنابراین فرم سادهٔ بارگذاری را برایتان نمایش می‌دهیم.',
 5352+ 'mwe-upwiz-extension-disabled' => 'این صفحه به علت مشکلات فنی غیرفعال شده‌است، می‌توانید از فرم استاندارد بارگذاری استفاده کنید.',
53195353 'mwe-upwiz-code-unknown' => 'زبان نامعلوم',
53205354 'mwe-upwiz-step-tutorial' => 'یادگیری',
53215355 'mwe-upwiz-step-file' => 'بارگذاری',
53225356 'mwe-upwiz-step-deeds' => 'انتشار حقوق',
53235357 'mwe-upwiz-step-details' => 'شرح',
53245358 'mwe-upwiz-step-thanks' => 'استفاده',
5325 - 'mwe-upwiz-api-error-http' => 'خطای داخلی: قادر به اتصال به سرور نمی باشد.',
5326 - 'mwe-upwiz-api-error-ok-but-empty' => 'خطای داخلی : عدم پاسخ از سرور.',
 5359+ 'mwe-upwiz-api-error-http' => 'خطای داخلی: قادر به اتصال به سرور نیست.',
 5360+ 'mwe-upwiz-api-error-ok-but-empty' => 'خطای داخلی : پاسخی از سرور دریافت نشد.',
53275361 'mwe-upwiz-api-error-unclassified' => 'یک خطای ناشناخته رخ داد.',
53285362 'mwe-upwiz-api-error-unknown-code' => 'خطای ناشناخته: " $1 "',
53295363 'mwe-upwiz-api-error-uploaddisabled' => 'بارگذاری در این ویکی غیرفعال است.',
5330 - 'mwe-upwiz-api-error-nomodule' => 'خطای داخلی: هیچ ماژول بارگذاری تنظیم نشده است.',
 5364+ 'mwe-upwiz-api-error-nomodule' => 'خطای داخلی: هیچ ماژول بارگذاری تنظیم نشده‌است.',
53315365 'mwe-upwiz-api-error-mustbeposted' => 'خطای داخلی: درخواست باید از روش POST HTTP ارسال گردد.',
5332 - 'mwe-upwiz-api-error-badaccess-groups' => 'شما اجازهٔ بارگذاری پرونده‌ها را در این ویکی را ندارید.',
 5366+ 'mwe-upwiz-api-error-badaccess-groups' => 'شما اجازهٔ بارگذاری پرونده‌ها را در این ویکی ندارید.',
53335367 'mwe-upwiz-api-error-stashfailed' => 'خطای داخلی: کارساز نمی‌تواند پرونده موقت را ذخیره کند.',
5334 - 'mwe-upwiz-api-error-missingresult' => 'خطای داخلی: نمی‌توان متوجه شد که کپی برداری موفق بوده است یا خیر.',
 5368+ 'mwe-upwiz-api-error-missingresult' => 'خطای داخلی: نمی‌توان فهمید کپی‌برداری موفق بوده‌است یا نه.',
53355369 'mwe-upwiz-api-error-missingparam' => 'خطای داخلی: پارامترهای ناموجود در درخواست.',
53365370 'mwe-upwiz-api-error-invalid-file-key' => 'خطای داخلی: پرونده در حافظهٔ موقت موجود نیست.',
53375371 'mwe-upwiz-api-error-copyuploaddisabled' => 'بارگذاری با استفاده از نشانی اینترنتی در این کارساز غیرفعال است.',
@@ -5342,7 +5376,7 @@
53435377 'mwe-upwiz-api-error-filename-tooshort' => 'نام پرونده بیش از اندازه کوتاه است.',
53445378 'mwe-upwiz-api-error-illegal-filename' => 'نام پرونده مجاز نیست.',
53455379 'mwe-upwiz-api-error-verification-error' => 'ممکن است پرونده آسیب دیده باشد، یا دارای پسوند نادرست باشد.',
5346 - 'mwe-upwiz-api-error-hookaborted' => 'اصلاحیه‌ای که شما سعی در ایجاد آن بودید توسط یک افزونه به دام افتاد.',
 5380+ 'mwe-upwiz-api-error-hookaborted' => 'اصلاحیه‌ای که شما سعی در ایجاد آن بودید توسط افزونه‌ای به دام افتاد.',
53475381 'mwe-upwiz-api-error-unknown-error' => 'خطای داخلی: در زمانی که شما در حال تلاش برای بارگذاری پروندهٔ‌تان بودید، یک چیز اشتباه پیش رفت.',
53485382 'mwe-upwiz-api-error-internal-error' => 'خطای داخلی: با پردازش بارگذاری شما در ویکی، یک چیز اشتباه پیش رفت.',
53495383 'mwe-upwiz-api-error-overwrite' => 'جای نوشتن یک پرونده موجود مجاز نمی باشد.',
@@ -5356,20 +5390,20 @@
53575391 'mwe-upwiz-api-error-timeout' => 'کارساز در زمان انتظار هیچ پاسخی نداد.',
53585392 'mwe-upwiz-api-error-noimageinfo' => 'بارگذاری موفق بود، ولی کارساز هیچ اطلاعاتی دربارهٔ پرونده به ما نداد.',
53595393 'mwe-upwiz-api-warning-exists' => 'در حال حاضر [$1 پروندهٔ دیگری] با نام یکسان در این ویکی وجود دارد.',
5360 - 'mwe-upwiz-api-warning-was-deleted' => 'پرونده‌ای با این نام وجود داشت، «$1»، ولی حذف شده است و شما نمی‌توانید آن را مجدد بارگذاری کنید. اگر پرونده شما متفاوت است، نام آن را تغییر دهید.',
5361 - 'mwe-upwiz-tutorial-error-localized-file-missing' => 'متأسفم، ما نمی‌توانیم یک آموزش را به زبان شما پیدا کنیم. به جای آن به زبان انگلیسی نمایش داده شده است.',
 5394+ 'mwe-upwiz-api-warning-was-deleted' => 'پرونده‌ای با این نام وجود داشت، «$1»، ولی حذف شده‌است و نمی‌توانید آن را مجدد بارگذاری کنید. اگر پروندهٔ شما متفاوت است، نام آن را تغییر دهید.',
 5395+ 'mwe-upwiz-tutorial-error-localized-file-missing' => 'متأسفم، نمی‌توانیم آموزشی به زبان شما پیدا کنیم. به جای آن به زبان انگلیسی نمایش داده شده‌است.',
53625396 'mwe-upwiz-tutorial-error-file-missing' => 'متأسفم، ما نتوانستیم هیچ پرونده‌ای برای خودآموز که قرار باشد اینجا برود، پیدا کنیم. لطفاً با مدیر سامانه تماس بگیرید.',
53635397 'mwe-upwiz-tutorial-error-cannot-transform' => 'متأسفم، ما نتوانسیم یک تصویر با قابلیت بزرگ‌نمایی از خودآموز برای گنجاندن در این صفحه پیدا کنیم. این ممکن است مشکل موقتی با ویکی‌انبار ویکی مدیا باشد؛ بعداً دوباره سعی کنید.',
53645398 'mwe-upwiz-help-desk' => 'میز کمک',
53655399 'mwe-upwiz-help-desk-url' => 'راهنما',
5366 - 'mwe-upwiz-add-file-n' => 'افزودن پرونده دیگر',
5367 - 'mwe-upwiz-add-file-0-free' => 'انتخاب یک پرونده رسانه برای اهدا',
 5400+ 'mwe-upwiz-add-file-n' => 'افزودن پروندهٔ‌ دیگر',
 5401+ 'mwe-upwiz-add-file-0-free' => 'انتخاب پرونده رسانه‌ای برای بارگذاری',
53685402 'mwe-upwiz-transport-started' => 'شروع...',
53695403 'mwe-upwiz-uploading' => 'در حال بارگذاری...',
53705404 'mwe-upwiz-transported' => 'بارگذاری به پایان رسید...',
53715405 'mwe-upwiz-stashed-upload' => 'تأیید',
53725406 'mwe-upwiz-getting-metadata' => 'دریافت اطلاعات پرونده و پیش‌نمایش‌ها...',
5373 - 'mwe-upwiz-submitting-details' => 'ارائه جزئیات و انتشار...',
 5407+ 'mwe-upwiz-submitting-details' => 'ارائهٔ جزئیات و انتشار...',
53745408 'mwe-upwiz-published' => 'منتشر شد!',
53755409 'mwe-upwiz-failed' => 'ناموفق.',
53765410 'mwe-upwiz-remove' => 'حذف',
@@ -5378,23 +5412,23 @@
53795413 'mwe-upwiz-upload' => 'بارگذاری',
53805414 'mwe-upwiz-file-all-ok' => 'تمام بارگذاری‌ها موفق بودند!',
53815415 'mwe-upwiz-file-some-failed' => 'برخی از بارگذاری‌ها ناموفق بودند.',
5382 - 'mwe-upwiz-file-retry' => 'سعی دوباره بارگذاری‌های ناموفق',
 5416+ 'mwe-upwiz-file-retry' => 'تلاش برای انجام دوبارهٔ بارگذاری‌های ناموفق',
53835417 'mwe-upwiz-next-file-despite-failures' => 'به هر حال ادامه بده',
5384 - 'mwe-upwiz-skip-tutorial-future' => 'پرش از این مرحله در آینده',
5385 - 'mwe-upwiz-file-all-failed' => 'هیچ‌کدام یک از بارگذاری‌ها موفق نبودند.',
 5418+ 'mwe-upwiz-skip-tutorial-future' => 'در آینده از این مرحله بگذرید',
 5419+ 'mwe-upwiz-file-all-failed' => 'هیچ‌یک از بارگذاری‌ها موفق نبودند.',
53865420 'mwe-upwiz-upload-count' => '$1 از $2 {{PLURAL:$2|پرونده|پرونده}} بارگذاری شد',
53875421 'mwe-upwiz-progressbar-uploading' => 'در حال بارگذاری',
53885422 'mwe-upwiz-finished' => 'به پایان رسید!',
53895423 'mwe-upwiz-secs-remaining' => '$1 {{PLURAL:$1|ثانیه|ثانیه}} باقی مانده',
5390 - 'mwe-upwiz-mins-secs-remaining' => '$1 دقیقه و $2 ثانیه باقی مانده',
 5424+ 'mwe-upwiz-mins-secs-remaining' => '$1 دقیقه و $2 ثانیه باقی مانده‌است',
53915425 'mwe-upwiz-hrs-mins-secs-remaining' => '$1 {{PLURAL:$1|ساعت|ساعت}} و $2 {{PLURAL:$2|دقیقه|دقیقه}} و $3 {{PLURAL:$3|ثانیه|ثانیه}} باقی مانده',
5392 - 'mwe-upwiz-deeds-macro-prompt' => 'در این وب‌گاه نیاز است که شما اطلاعات حق تکثیر برای این {{PLURAL:$1|کار|کارها}} تهیه کنید، تا همه از نظر قانونی مطمئن شوند که می‌توانند از {{PLURAL:$1|آن|آن‌ها}} استفاده مجدد کرد.',
 5426+ 'mwe-upwiz-deeds-macro-prompt' => 'در این وب‌گاه نیاز است که شما اطلاعات حق تکثیر برای این {{PLURAL:$1|کار|کارها}} را تهیه کنید، تا همه از نظر قانونی مطمئن شوند که می‌توانند از {{PLURAL:$1|آن|آن‌ها}} استفاده مجدد کنند.',
53935427 'mwe-upwiz-deeds-custom-prompt' => 'یا:',
53945428 'mwe-upwiz-source-ownwork' => '{{PLURAL:$1|این پرونده|این پرونده‌ها}} کار خودم است.',
5395 - 'mwe-upwiz-source-ownwork-assert-any-license' => 'من،‌ $2،‌ دارندهٔ حق تکثیر این {{PLURAL:$1|اثر|آثار}}، بدین وسیله به طور دائم به همه این اجازه را می‌دهم که از این {{PLURAL:$1|اثر|آثار}} استفاده، ویرایش و توزیع مجدد، برای هر منظوری کنند، و به همین دلیل من {{PLURAL:$1|آن|آن‌ها}} را تحت شرایط مقابل منتشر می‌کنم:',
5396 - 'mwe-upwiz-source-ownwork-assert' => 'من، $2، دارندهٔ حق تکثیر این {{PLURAL:$1|اثر|آثار}}، بدین وسیله برای همیشه به همه اجازه می‌دهم که از این {{PLURAL:$1|اثر|آثار}} برای هر منظوری استفاده کنند، تا زمانی که آن‌ها به من اعتبار می‌دهند که اثر مشتق‌شان را تحت شرایط یکسان به اشتراک می‌گذارند.',
 5429+ 'mwe-upwiz-source-ownwork-assert-any-license' => 'من،‌ $2،‌ دارندهٔ حق تکثیر این {{PLURAL:$1|اثر|آثار}}، بدین وسیله به طور دائم به هرفردی این اجازه را می‌دهم که از این {{PLURAL:$1|اثر|آثار}} استفاده، ویرایش و توزیع مجدد، برای هر منظوری کند، و به همین دلیل من {{PLURAL:$1|این|این‌ها}} را تحت شرایط مقابل منتشر می‌کنم:',
 5430+ 'mwe-upwiz-source-ownwork-assert' => 'من، $2، دارندهٔ حق تکثیر این {{PLURAL:$1|اثر|آثار}}، بدین‌وسیله برای همیشه به همه اجازه می‌دهم از این {{PLURAL:$1|اثر|آثار}} برای هر هدفی استفاده کنند، تا زمانی که آن‌ها به من اعتبار می‌دهند که اثر مشتق‌شان را تحت شرایط یکسان به اشتراک می‌گذارند.',
53975431 'mwe-upwiz-source-ownwork-assert-custom' => 'من، $2، دارندهٔ حق تکثیر این {{PLURAL:$1|اثر|آثار}}، بدین وسیله انتشار این {{PLURAL:$1|اثر|آثار}} را تحت مجوزهای مقابل اعلام می‌کنم:',
5398 - 'mwe-upwiz-source-ownwork-assert-note' => 'این به این معنی است که شما کار خود را تحت مجوز مقابل منتشر می‌کنید: $1',
 5432+ 'mwe-upwiz-source-ownwork-assert-note' => 'این به این معنی است که شما کار خود را تحت مجوز مقابل منتشر می‌کنید: $1',
53995433 'mwe-upwiz-source-permission' => 'مؤلف آن‌ها به شما اجازهٔ صریح بارگذاری آن‌ها را داده‌اند.',
54005434 'mwe-upwiz-source-thirdparty' => '{{PLURAL:$1|این پرونده|این پرونده‌ها}} کار خودم نیست.',
54015435 'mwe-upwiz-source-thirdparty-intro' => 'لطفاً نشانی هر پرونده را در جایی که آن‌ها را پیدا کردید وارد کنید.',
@@ -5403,7 +5437,7 @@
54045438 'mwe-upwiz-source-thirdparty-cases' => 'اکنون به ما بگویید که چرا مطمئن هستید که این وب‌گاه اجازهٔ انتشار این {{PLURAL:$1|کار|کارها}} را دارد:',
54055439 'mwe-upwiz-source-thirdparty-accept' => 'تأیید',
54065440 'mwe-upwiz-source-custom' => 'برای هر پرونده به طور جداگانه در صفحهٔ بعد اطلاعات حق تکثیر فراهم کنید.',
5407 - 'mwe-upwiz-more-options' => 'گزینه‌های بیشتر...',
 5441+ 'mwe-upwiz-more-options' => 'افزودن رده‌ها و اطلاعات بیشتر...',
54085442 'mwe-upwiz-fewer-options' => 'گزینه‌های کمتر...',
54095443 'mwe-upwiz-desc' => 'توضیح',
54105444 'mwe-upwiz-desc-add-n' => 'افزودن توضیحات به زبان دیگر',
@@ -5419,13 +5453,13 @@
54205454 'mwe-upwiz-source' => 'منبع',
54215455 'mwe-upwiz-thanks-intro' => 'سپاس از بارگذاری!',
54225456 'mwe-upwiz-thanks-explain' => 'شما می‌توانید از این {{PLURAL:$1|پرونده|پرونده‌ها}} در وب‌گاه‌هایی همچون ویکی‌پدیا استفاده کنید، یا در وب به {{PLURAL:$1|آن|آن‌ها}} پیوند دهید.',
5423 - 'mwe-upwiz-thanks-wikitext' => '<b>برای استفاده پرونده در یک ویکی</b>، این متن را به یک صفحه بیفزایید:',
 5457+ 'mwe-upwiz-thanks-wikitext' => '<b>برای استفاده پرونده در ویکی</b>، این متن را به یک صفحه بیفزایید:',
54245458 'mwe-upwiz-thanks-url' => '<b>برای پیوند دادن به آن در اچ‌تی‌ام‌ال</b>، از این نشانی نسخه برداری کنید:',
54255459 'mwe-upwiz-upload-error-bad-filename-extension' => 'این ویکی نام پرونده با پسوند ".$1" قبول نمی‌کند.',
54265460 'mwe-upwiz-upload-error-bad-extension-video-firefogg' => 'شما پرونده‌ای را برای بارگذاری انتخاب کرده‌اید که در یک قالب‌بندی آزاد نمی‌باشد.
54275461 شما می‌توانید افزونهٔ [$1 فایرفاگ] را برای فایرفاکس نصب کنید که با آن می‌توانید قالب‌بندی پروندهٔ‌تان را به طور خودکار تبدیل کنید. یا از [$2 گزینه‌های مبدل] دیگر برای تبدیل ویدئو به یک قالب آزاد، استفاده کنید.',
5428 - 'mwe-upwiz-upload-error-bad-filename-no-extension' => 'در این ویکی پرونده‌ها باید یک پسوند داشته باشند — همانند «.JPG» در انتهای نام پرونده.',
5429 - 'mwe-upwiz-upload-error-duplicate-filename-error' => 'شما در حال حاضر در حال بارگذاری پرونده «$1» هستید.',
 5462+ 'mwe-upwiz-upload-error-bad-filename-no-extension' => 'در این ویکی پرونده‌ها باید پسوند داشته باشند — مانند «.JPG» در انتهای نام پرونده.',
 5463+ 'mwe-upwiz-upload-error-duplicate-filename-error' => 'شما در حال بارگذاری پرونده «$1» هستید.',
54305464 'mwe-upwiz-allowed-filename-extensions' => 'پسوندهای مجاز عبارتند از:',
54315465 'mwe-upwiz-help-allowed-filename-extensions' => 'پسوند نام‌پرونده مجاز است',
54325466 'mwe-upwiz-upload-error-duplicate' => 'این پرونده از قبل در این ویکی بارگذاری شده است.',
@@ -5450,17 +5484,17 @@
54515485 'mwe-prevent-close' => 'ترک این صفحه باعث می‌شود که تغییراتی که انجام داده‌اید از دست برود.',
54525486 'mwe-upwiz-prevent-close' => 'شما هنوز بارگذاری و انتشار این {{PLURAL:$1|پرونده|پرونده‌ها}} را تمام نکرده‌اید.',
54535487 'mwe-upwiz-files-complete' => 'بارگذاری پرونده‌های شما به اتمام رسید!',
5454 - 'mwe-upwiz-tooltip-author' => 'نام شخصی که این عکس را گرفته، یا این تصویر را کشیده، یا این طرح را طراحی کرده، و ... .',
5455 - 'mwe-upwiz-tooltip-source' => 'این پروندهٔ دیجیتالی از کجا آمده است — می‌تواند یک نشانی اینترنتی، یا یک کتاب یا نشریه باشد.',
 5488+ 'mwe-upwiz-tooltip-author' => 'نام شخصی که این عکس را گرفته، یا این نگاره را کشیده، یا این طرح را طراحی کرده و موارد مشابه.',
 5489+ 'mwe-upwiz-tooltip-source' => 'این پروندهٔ دیجیتالی از کجا آمده است — منبع می‌تواند یک نشانی اینترنتی، یا یک کتاب یا نشریه باشد.',
54565490 'mwe-upwiz-tooltip-sign' => 'شما می‌توانید از نام کاربری خود در ویکی یا نام واقعی خود استفاده کنید.
54575491 در هر دو حالت، این به صفحهٔ کاربری‌تان در ویکی پیوند داده خواهد شد.',
5458 - 'mwe-upwiz-tooltip-title' => 'یک عنوان توصیفی منحصر به فرد برای پرونده. شما می‌توانید از زبان ساده همراه با فواصل استفاده کنید. نباید شامل پسوند پرونده باشد.',
 5492+ 'mwe-upwiz-tooltip-title' => 'یک عنوان توصیفی منحصر به فرد برای پرونده اختیار کنید. شما می‌توانید از زبان ساده همراه با فواصل استفاده کنید که نباید شامل پسوند پرونده باشد.',
54595493 'mwe-upwiz-dialog-title' => 'پرونده‌ها می‌توانند با نام‌هایی در هر زبان در هر اسکریپتی (رمزنگاری شده به صورت UTF-8) بارگذاری شوند. عنوان پرونده‌های رسانه‌ای باید پر معنی و مفید در زبان انتخاب شده باشند.',
54605494 'mwe-upwiz-tooltip-description' => 'به طور خلاصه دربارهٔ اثر، همه چیز قابل توجه را توصیف کنید.
54615495 برای تصویر، موارد اصلی به تصویر کشیده شده، مناسبت، و یا مکان را ذکر کنید.',
5462 - 'mwe-upwiz-tooltip-date' => 'تاریخی که این کار ایجاد شده و یا اولین بار انتشار یافته است (قالب YYYY-MM-DD).',
5463 - 'mwe-upwiz-tooltip-categories' => 'افزودن [$1 رده‌ها] به پرونده شما برای پیدا کردن آسان‌تر آن.',
5464 - 'mwe-upwiz-tooltip-other' => 'هر اطلاعات دیگر که شما می‌خواهید شامل این کار شود — مختصات جغرافیایی، پیوند به نسخه‌های دیگر، و ... .',
 5496+ 'mwe-upwiz-tooltip-date' => 'تاریخی که این کار ایجاد شده و یا اولین بار انتشار یافته است به صورت (YYYY-MM-DD).',
 5497+ 'mwe-upwiz-tooltip-categories' => 'برای پیدا کردن آسان‌تر به پرونده‌تان [$1 رده‌هایی] بیافزایید.',
 5498+ 'mwe-upwiz-tooltip-other' => 'هر اطلاعات دیگر که شما می‌خواهید درباره این کار باشد— مختصات جغرافیایی، پیوند به نسخه‌های دیگر و غیره.',
54655499 'mwe-upwiz-tooltip-more-info' => 'بیشتر بدانید.',
54665500 'mwe-upwiz-file-need-file' => 'لطفاً ابتدا یک بارگذاری اضافه کنید.',
54675501 'mwe-upwiz-deeds-need-deed' => 'لطفاً با انتخاب یکی از گزینه‌ها، توضیح دهید که کجا این {{PLURAL:$1|پرونده|پرونده‌ها}} را گرفته‌اید و چگونه این وب‌گاه می‌تواند از {{PLURAL:$1|آن|آن‌ها}} استفاده کند.',
@@ -5490,29 +5524,29 @@
54915525 'mwe-upwiz-error-title-fileexists-shared-forbidden' => 'این عنوان متعلق به یک پرونده در مخرن مشترک است. نام دیگری انتخاب کنید.',
54925526 'mwe-upwiz-error-title-double-apostrophe' => 'این عنوان شامل یک اپوستروف دوتایی می‌باشد؛ لطفاً آن را حذف کنید.',
54935527 'mwe-upwiz-error-title-extension' => 'نیاز نیست شما پسوند پرونده‌ای را اضافه کنید. فقط عنوان را قابل خواندن برای انسان کنید و برنامه از پس بقیه موارد بر می‌آید.',
5494 - 'mwe-upwiz-details-error-count' => '{{PLURAL:$1|یک خطا|$1 خطا}} به {{PLURAL:$2|حالت|حالت‌های}} بالا وجود دارد. {{PLURAL:$1|خطا|خطاها}} را تصحیح کنید، و دوباره سعی به ثبت آن کنید.',
5495 - 'mwe-upwiz-license-cc-by-sa-3.0' => 'کرییتیو کامانز Attribution ShareAlike 3.0',
5496 - 'mwe-upwiz-license-cc-by-sa-3.0-at' => 'عوام خلاق مستندات سهم یکسان ۳.۰ اتریش',
5497 - 'mwe-upwiz-license-cc-by-sa-3.0-de' => 'مستندات عوام خلاق سهم یکسان ۳.۰ آلمان',
5498 - 'mwe-upwiz-license-cc-by-sa-3.0-ee' => 'مستندات عوام خلاق سهم یکسان ۳.۰ استونی',
5499 - 'mwe-upwiz-license-cc-by-sa-3.0-es' => 'مستندات عوام خلاق سهم یکسان ۳.۰ اسپانیا',
5500 - 'mwe-upwiz-license-cc-by-sa-3.0-hr' => 'مستندات عوام خلاق سهم یکسان ۳.۰ کرواسی',
5501 - 'mwe-upwiz-license-cc-by-sa-3.0-lu' => 'مستندات عوام خلاق سهم یکسان ۳.۰ لوکزامبورگ',
5502 - 'mwe-upwiz-license-cc-by-sa-3.0-nl' => 'مستندات عوام خلاق سهم یکسان ۳.۰ هلند',
5503 - 'mwe-upwiz-license-cc-by-sa-3.0-no' => 'مستندات عوام خلاق سهم یکسان ۳.۰ نروژ',
5504 - 'mwe-upwiz-license-cc-by-sa-3.0-pl' => 'مستندات عوام خلاق سهم یکسان ۳.۰ لهستان',
5505 - 'mwe-upwiz-license-cc-by-sa-3.0-ro' => 'مستندات عوام خلاق سهم یکسان ۳.۰ رومانی',
5506 - 'mwe-upwiz-license-cc-by-3.0' => 'کرییتیو کامانز Attribution 3.0',
5507 - 'mwe-upwiz-license-cc-by-sa-2.5' => 'مستندات عوام خلاق سهم یکسان ۲.۵',
5508 - 'mwe-upwiz-license-cc-by-2.5' => 'مستندات عوام خلاق ۲.۵',
5509 - 'mwe-upwiz-license-cc-by-sa-2.0' => 'مستندات عوام خلاق سهم یکسان ۲.۰',
5510 - 'mwe-upwiz-license-cc-by-2.0' => 'مستندات عوام خلاق ۲.۰',
5511 - 'mwe-upwiz-license-cc-zero' => 'چشم‌پوشی CC0 کرییتیو کامانز (مالکیت عمومی)',
 5528+ 'mwe-upwiz-details-error-count' => '{{PLURAL:$1|یک خطا|$1 خطا}} برای {{PLURAL:$2|مورد|موارد}} بالا وجود دارد. {{PLURAL:$1|خطا|خطاها}} را تصحیح کنید، و دوباره سعی به ثبت آن کنید.',
 5529+ 'mwe-upwiz-license-cc-by-sa-3.0' => 'کرییتیو کامانز اشتراک همسان Cc-by-sa-3.0',
 5530+ 'mwe-upwiz-license-cc-by-sa-3.0-at' => 'کرییتیو کامانز اشتراک همسان اتریش Cc-by-sa-3.0',
 5531+ 'mwe-upwiz-license-cc-by-sa-3.0-de' => 'کرییتیو کامانز اشتراک همسان آلمان Cc-by-sa-3.0',
 5532+ 'mwe-upwiz-license-cc-by-sa-3.0-ee' => 'کرییتیو کامانز اشتراک همسان ۳.۰ استونی Cc-by-sa-3.0',
 5533+ 'mwe-upwiz-license-cc-by-sa-3.0-es' => 'کرییتیو کامانز اشتراک همسان ۳.۰ اسپانیا Cc-by-sa-3.0',
 5534+ 'mwe-upwiz-license-cc-by-sa-3.0-hr' => 'کرییتیو کامانز اشتراک همسان ۳.۰ کرواسی Cc-by-sa-3.0',
 5535+ 'mwe-upwiz-license-cc-by-sa-3.0-lu' => 'کرییتیو کامانز اشتراک همسان ۳.۰ لوکزامبورگ Cc-by-sa-3.0',
 5536+ 'mwe-upwiz-license-cc-by-sa-3.0-nl' => 'کرییتیو کامانز اشتراک همسان ۳.۰ هلند Cc-by-sa-3.0',
 5537+ 'mwe-upwiz-license-cc-by-sa-3.0-no' => 'کرییتیو کامانز اشتراک همسان ۳.۰ نروژ Cc-by-sa-3.0',
 5538+ 'mwe-upwiz-license-cc-by-sa-3.0-pl' => 'کرییتیو کامانز اشتراک همسان ۳.۰ لهستان Cc-by-sa-3.0',
 5539+ 'mwe-upwiz-license-cc-by-sa-3.0-ro' => 'کرییتیو کامانز اشتراک همسان ۳.۰ رومانی Cc-by-sa-3.0',
 5540+ 'mwe-upwiz-license-cc-by-3.0' => 'کرییتیو کامانز نسبت‌دادن Cc-by-3.0',
 5541+ 'mwe-upwiz-license-cc-by-sa-2.5' => 'کرییتیو کامانز اشتراک همسان Cc-by-sa-2.5',
 5542+ 'mwe-upwiz-license-cc-by-2.5' => 'کرییتیو کامانز نسبت‌دادن Cc-sa-2.5',
 5543+ 'mwe-upwiz-license-cc-by-sa-2.0' => 'کرییتیو کامانز اشتراک همسان Cc-by-sa-2.0',
 5544+ 'mwe-upwiz-license-cc-by-2.0' => 'کرییتیو کامانز نسبت‌دادن Cc-by-2.0',
 5545+ 'mwe-upwiz-license-cc-zero' => 'کرییتیو کامانز صفر CC0، چشم‌پوشی (مالکیت عمومی)',
55125546 'mwe-upwiz-license-fal' => 'مجوز هنر آزاد',
5513 - 'mwe-upwiz-license-own-pd' => 'مالکیت عمومی (تمامی حق تکثیرها توسط مجوز عوام خلاق صفر، چشم‌پوشی می‌شوند)',
 5547+ 'mwe-upwiz-license-own-pd' => 'مالکیت عمومی (تمامی حقوق با مجوز کریتیو کامنز صفر، لغو می‌شوند)',
55145548 'mwe-upwiz-license-pd-old-100' => 'مؤلف بیش از ۱۰۰ سال پیش درگذشته است',
55155549 'mwe-upwiz-license-pd-old' => 'مؤلف بیش از ۷۰ سال پیش درگذشته است',
5516 - 'mwe-upwiz-license-pd-art' => 'بازتولید از یک نقاشی به خاطر سن آن در دامنهٔ عمومی قرار دارد',
 5550+ 'mwe-upwiz-license-pd-art' => 'بازتولید نقاشی، به خاطر قدمت آن در دامنهٔ عمومی قرار دارد',
55175551 'mwe-upwiz-license-pd-us' => 'اولین بار قبل از سال ۱۹۲۳ میلادی در ایالات متحده آمریکا منتشر شده است',
55185552 'mwe-upwiz-license-pd-usgov' => 'کار اصل دولت فدرال ایالات متحده آمریکا',
55195553 'mwe-upwiz-license-pd-usgov-nasa' => 'کار اصل ناسا',
@@ -5524,8 +5558,8 @@
55255559 'mwe-upwiz-license-attribution' => 'ممکن است برای هر منظوری، از جمله تجاری، استفاده گردد، اگر دارندهٔ حق تکثیر به درستی نسبت داده شده باشد',
55265560 'mwe-upwiz-license-gfdl' => 'مجوز مستندات آزاد گنو',
55275561 'mwe-upwiz-license-cc-by-sa-3.0-gfdl' => 'کپی‌لفت، نیازمند مستندات (گنو، عوام خلاق سهم یکسان ۳.۰)',
5528 - 'mwe-upwiz-license-cc-head' => 'دارندهٔ حق تکثیر این {{PLURAL:$1|کار|کارها}} را با مجوز عوام خلاق مناسب منتشر کرده است.',
5529 - 'mwe-upwiz-license-cc-subhead' => 'در همه حال مجوزهای عوام خلاق برای این وب‌گاه خوب نیستند -- مطمئن شوید که دارندهٔ حق تکثیر، از یکی از این مجوزها استفاده کرده است.',
 5562+ 'mwe-upwiz-license-cc-head' => 'دارندهٔ حق تکثیر این {{PLURAL:$1|کار|کارها}} را با مجوز کریتیوکامنز، منتشر کرده است.',
 5563+ 'mwe-upwiz-license-cc-subhead' => 'در همه حال مجوزهای کریتیو کامنز برای این وب‌گاه خوب نیستند -- مطمئن شوید که دارندهٔ حق تکثیر، از یکی از این مجوزها استفاده کرده است.',
55305564 'mwe-upwiz-license-flickr-head' => 'دارندهٔ حق تکثیر، {{PLURAL:$1|تصویر یا ویدئو|تصاویر یا ویدئوها}}یش را در فلیکر با مجوز مناسب انتشار کرده است',
55315565 'mwe-upwiz-license-flickr-subhead' => 'سربرگ «مجوز» یا همان «License» را در کنار صفحهٔ فلیکر بررسی کنید. نام و شمایل مجوز استفاده شده باید با یکی از انتخاب‌های اینجا مطابقت کنند.',
55325566 'mwe-upwiz-license-public-domain-head' => 'حق تکثیر قطعاً منقضی شده است',
@@ -5549,7 +5583,7 @@
55505584 'mwe-upwiz-thumbnail-failed' => 'بارگذاری موفق بود، اما این سرور نمی‌تواند یک تصویر کوچک پیش نمایش دریافت کند.',
55515585 'mwe-upwiz-unparseable-filename' => 'نمی‌توان نام پرونده «$1» را درک کرد.',
55525586 'mwe-upwiz-image-preview' => 'پیش‌نمایش تصویر',
5553 - 'mwe-upwiz-subhead-message' => 'با تشکر برای استفاده از ابزار بارگذاری آسان!',
 5587+ 'mwe-upwiz-subhead-message' => 'سپاس برای استفاده از ابزار بارگذاری آسان!',
55545588 'mwe-upwiz-subhead-bugs' => '[$1 مشکلات شناخته شده]',
55555589 'mwe-upwiz-subhead-translate' => '[$1 در ترجمه کمک کنید]',
55565590 'mwe-upwiz-subhead-alt-upload' => '[$1 بازگشت به فرم بارگذاری قدیمی]',
@@ -5572,7 +5606,7 @@
55735607 'mwe-upwiz-errordialog-title' => 'در ثبت شما، خطایی وجود داشت.',
55745608 'mwe-upwiz-errordialog-ok' => 'تأیید',
55755609 'mwe-upwiz-error-nosuchcampaign' => 'هیچ کمپینی با نام «$1» وجود ندارد.',
5576 - 'mwe-upwiz-error-campaigndisabled' => 'کمپین «$1» فعال نشده است.',
 5610+ 'mwe-upwiz-error-campaigndisabled' => 'کمپین «$1» فعال نشده‌است.',
55775611 'mwe-upwiz-campaigns-name' => 'نام کمپین',
55785612 'mwe-upwiz-campaigns-status' => 'وضعیت',
55795613 'mwe-upwiz-campaigns-enabled' => 'فعال شد',
@@ -5581,13 +5615,15 @@
55825616 'mwe-upwiz-campaigns-add' => 'افزودن',
55835617 'mwe-upwiz-campaigns-addnew' => 'افزودن یک کمپین جدید',
55845618 'mwe-upwiz-campaigns-newname' => 'نام کمپین:',
5585 - 'mwe-upwiz-campaigns-namedoc' => 'نام کمپین، شناسه مورد استفاده در نشانی است. به عنوان مثال «name» در ?campaign=name',
 5619+ 'mwe-upwiz-campaigns-namedoc' => 'نام کمپین، شناسه مورد استفاده در نشانی است. برای مثال «name» در ?campaign=name',
55865620 'mwe-upwiz-campaigns-existing' => 'کمپین های موجود',
55875621 'mwe-upwiz-campaigns-editing' => 'بارگذاری پیکربندی کمپین',
55885622 'mwe-upwiz-campaigns-delete' => 'حذف',
55895623 'mwe-upwiz-campaigns-confdel' => 'آیا مطمئن هستید که می‌خواهید این کمپین را حذف کنید؟',
 5624+ 'mwe-upwiz-campaigns-delete-failed' => 'نمی‌توانید کمپین را حذف نمایید.',
 5625+ 'mwe-upwiz-campaigns-confirm-delete' => 'آیا مطمئنید که می‌خواهید این کمپین را حذف کنید؟',
55905626 'uploadcampaign-legend' => 'بارگذاری پیکربندی کمپین',
5591 - 'uploadcampaign-text' => 'شما در حال ویرایش یک جادوگر بارگذاری کمپین می‌باشید.',
 5627+ 'uploadcampaign-text' => 'شما در حال ویرایش یک جادوگر بارگذاری کمپین هستید.',
55925628 'mwe-upwiz-campaign-name' => 'نام کمپین:',
55935629 'mwe-upwiz-campaign-enabled' => 'کمپین فعال شد',
55945630 'mwe-upwiz-campaign-conf-skipTutorial' => 'پرش از آموزش مجوز بندی',
@@ -5597,19 +5633,19 @@
55985634 'mwe-upwiz-campaign-conf-ownWorkOption' => 'چگونه اثر شخصی و یا اثر غیر شخصی را تشخیص دهید:',
55995635 'mwe-upwiz-campaign-owner-choice' => 'به کاربران اجازه می‌دهد که بین اثر شخصی و اثر غیر شخصی، یکی را انتخاب کنند',
56005636 'mwe-upwiz-campaign-owner-own' => 'فقط برای بارگذاری‌های کار خود مجاز می‌باشد',
5601 - 'mwe-upwiz-campaign-owner-notown' => 'تنها اجازه برای بارگذاری آثار غیرشخصی',
 5637+ 'mwe-upwiz-campaign-owner-notown' => 'فقط به بارگذاری آثار غیرشخصی اجازه دهد',
56025638 'mwe-upwiz-campaign-conf-licensesOwnWork' => 'مجوزهایی که باید قابل انتخاب برای اثر شخصی باشند:',
56035639 'mwe-upwiz-campaign-conf-tutorialTemplate' => 'نام خودآموز در ویکی‌انبار ویکی‌مدیا. $1 با کد زبان جایگزین می‌شود:',
56045640 'mwe-upwiz-campaign-conf-tutorialWidth' => 'عرض برای تغییر خودآموز به آن:',
56055641 'mwe-upwiz-campaign-conf-tutorialHelpdeskCoords' => 'تصویر نقشه مختصات خودآموز کلید «میز کمک»:',
56065642 'mwe-upwiz-campaign-conf-defaultOwnWorkLicence' => 'مجوز پیش‌فرض کار خود:',
5607 - 'mwe-upwiz-campaign-conf-idField' => 'ویکی‌متن خانهٔ شناسه. مثال <nowiki>{{Rijksmonument|$1}}</nowiki>. جهت عدم نمایش، آن را خالی بگذارید:',
 5643+ 'mwe-upwiz-campaign-conf-idField' => 'ویکی‌متن خانهٔ شناسه. مثال <nowiki>{{Rijksmonument|$1}}</nowiki>. جهت نمایش‌داده‌نشدن آن را خالی بگذارید:',
56085644 'mwe-upwiz-campaign-conf-idFieldLabel' => 'زمینهٔ برچسب متن شناسه:',
56095645 'mwe-upwiz-campaign-conf-idFieldLabelPage' => 'نام صفحه همراه با متن برای خانه برچسب نشانه. $1 با کد زبان جایگزین شده است:',
56105646 'mwe-upwiz-campaign-conf-headerLabelPage' => 'صفحه‌ای که شامل متنی برای نمایش در بالای رابط کاربری جادوگر بارگذاری می‌باشد. $1 با کد زبان جایگزین می‌شود:',
56115647 'mwe-upwiz-campaign-conf-thanksLabelPage' => 'صفحه‌ای که شامل متنی برای نمایش در بالای صفحهٔ «کاربرد» می‌باشد. $1 با کد زبان جایگزین می‌شود:',
56125648 'mwe-upwiz-campaign-conf-idFieldMaxLength' => 'حداکثر طول متن در خانهٔ شناسه',
5613 - 'mw-coolcats-confirm-new-title' => 'تایید رده جدید',
 5649+ 'mw-coolcats-confirm-new-title' => 'تأیید ردهٔ جدید',
56145650 'mw-coolcats-confirm-new' => 'به نظر می‌رسد شما سعی می‌کنید ردهٔ جدیدی اضافه کنید، «$1». به یاد داشته باشید:<ul><li>رده‌ها معمولاً باید به زبان انگلیسی باشند.</li><li>بیشتر رده‌های جدید باید یک زیر رده از ردهٔ موجود باشند.</li></ul>به طور کلی فقط افراد وارد باید رده ایجاد کنند.',
56155651 'mw-coolcats-confirm-new-ok' => 'این رده را به هر حال اضافه کن',
56165652 'mw-coolcats-confirm-new-cancel' => 'مهم نیست',
@@ -5930,6 +5966,7 @@
59315967 * @author Tpt
59325968 * @author Trizek
59335969 * @author Verdy p
 5970+ * @author Wouterhagens
59345971 * @author Wyz
59355972 * @author Y-M D
59365973 */
@@ -6025,14 +6062,14 @@
60266063 'mwe-upwiz-source-ownwork-assert-custom' => "Moi, $2, titulaire du droit d'auteur de {{PLURAL:$1|cette œuvre, la|ces œuvres, les}} publie par la présente sous la (les) licence(s) suivante(s) :",
60276064 'mwe-upwiz-source-ownwork-assert-note' => 'Cela signifie que vous publiez votre travail sous la licence suivante : $1',
60286065 'mwe-upwiz-source-permission' => "Leur auteur vous a donné l'autorisation explicite de les importer",
6029 - 'mwe-upwiz-source-thirdparty' => '{{PLURAL:$1|Ci fitchî cial n’est|Ces fitchîs ci ni sont}} nén mi prôpe ovraedje.',
 6066+ 'mwe-upwiz-source-thirdparty' => '{{PLURAL:$1|Ce fichier n’est|Ces fichiers ne sont}} pas de mon propre travail.',
60306067 'mwe-upwiz-source-thirdparty-intro' => 'Veuillez entrez l’adresse où vous avez trouvé chaque fichier.',
60316068 'mwe-upwiz-source-thirdparty-custom-multiple-intro' => 'Si tous les fichiers ont les mêmes sources, auteur et licence, vous pouvez créer une seule entrée pour tout l’ensemble.',
60326069 'mwe-upwiz-source-thirdparty-license' => "Le titulaire des droits d'auteur de {{PLURAL:$1|cette œuvre l'a publiée|ces œuvres les a publiées}} sous la (les) licence(s) suivante(s) :",
60336070 'mwe-upwiz-source-thirdparty-cases' => 'Dites-nous maintenant pourquoi vous êtes certain(e) que ce site a le droit de publier {{PLURAL:$1|cette œuvre| ces œuvres}} :',
60346071 'mwe-upwiz-source-thirdparty-accept' => 'OK',
60356072 'mwe-upwiz-source-custom' => 'Choisir des licences pour chaque fichier individuellement sur la page suivante.',
6036 - 'mwe-upwiz-more-options' => 'plus d’options...',
 6073+ 'mwe-upwiz-more-options' => "ajouter des catégories et plus d'informations...",
60376074 'mwe-upwiz-fewer-options' => 'moins d’options...',
60386075 'mwe-upwiz-desc' => 'Description',
60396076 'mwe-upwiz-desc-add-n' => 'ajouter une description dans une autre langue',
@@ -6347,7 +6384,7 @@
63486385 'mwe-upwiz-source-thirdparty-cases' => 'Ora, déte-nos porquè vos éte de sûr que ceti seto at lo drêt de publeyér {{PLURAL:$1|cela ôvra|celes ôvres}} :',
63496386 'mwe-upwiz-source-thirdparty-accept' => 'D’acôrd',
63506387 'mwe-upwiz-source-custom' => 'Balyéd des enformacions de drêt d’ôtor por châque fichiér en particuliér sur ceta pâge.',
6351 - 'mwe-upwiz-more-options' => 'més de chouèx...',
 6388+ 'mwe-upwiz-more-options' => 'apondre des catègories et més d’enformacions...',
63526389 'mwe-upwiz-fewer-options' => 'muens de chouèx...',
63536390 'mwe-upwiz-desc' => 'Dèscripcion',
63546391 'mwe-upwiz-desc-add-n' => 'apondre una dèscripcion dens una ôtra lengoua',
@@ -6708,7 +6745,7 @@
67096746 'mwe-upwiz-source-thirdparty-cases' => 'Agora, díganos por que está seguro de que este sitio ten o dereito de publicar {{PLURAL:$1|esta obra|estas obras}}:',
67106747 'mwe-upwiz-source-thirdparty-accept' => 'Aceptar',
67116748 'mwe-upwiz-source-custom' => 'Proporciona información de dereitos de autor para cada ficheiro na seguinte páxina.',
6712 - 'mwe-upwiz-more-options' => 'máis opcións...',
 6749+ 'mwe-upwiz-more-options' => 'engadir categorías e máis información...',
67136750 'mwe-upwiz-fewer-options' => 'reducir as opcións...',
67146751 'mwe-upwiz-desc' => 'Descrición',
67156752 'mwe-upwiz-desc-add-n' => 'engadir unha descrición noutra lingua',
@@ -6896,7 +6933,6 @@
68976934 'uploadcampaign-text' => 'Está modificando unha campaña do Asistente de cargas.',
68986935 'mwe-upwiz-campaign-name' => 'Nome da campaña:',
68996936 'mwe-upwiz-campaign-enabled' => 'Aviso activo',
6900 - 'mwe-upwiz-campaign-customLicense' => 'Licenza personalizada',
69016937 'mwe-upwiz-campaign-conf-skipTutorial' => 'Saltar a guía de licenzas',
69026938 'mwe-upwiz-campaign-conf-autoCategories' => 'Categorías que se engadirán aos ficheiros de forma automática e silenciosa (separadas por barras verticais)',
69036939 'mwe-upwiz-campaign-conf-defaultCategories' => 'Categorías por defecto a listar na lapela de descrición (separadas por barras verticais):',
@@ -6916,8 +6952,6 @@
69176953 'mwe-upwiz-campaign-conf-headerLabelPage' => 'Páxina que contén texto que mostrar por riba da interface do Asistente de cargas. $1 é substituído polo código da lingua:',
69186954 'mwe-upwiz-campaign-conf-thanksLabelPage' => 'Páxina que contén texto que mostrar por riba da páxina de "Uso". $1 é substituído polo código da lingua:',
69196955 'mwe-upwiz-campaign-conf-idFieldMaxLength' => 'Lonxitude máxima do texto no campo de identificación',
6920 - 'mwe-upwiz-campaign-conf-wikitextLicense' => 'Texto wiki para unha licenza de obra propia personalizada. Deixe o campo baleiro se non quere a devandita licenza personalizada. "$1" substitúese polo código da lingua:',
6921 - 'mwe-upwiz-campaign-conf-wikitextLicenseTemplates' => 'Modelos a engadir cando o usuario escolle a licenza personalizada (separados por barras verticais):',
69226956 'mw-coolcats-confirm-new-title' => 'Confirmar a nova categoría',
69236957 'mw-coolcats-confirm-new' => 'Semella que intenta engadir unha nova categoría, "$1". Teña en conta:<ul><li>Normalmente, o nome das categorías vai en inglés.</li><li>A meirande parte das categorías novas deben ser subcategorías doutra que xa existía.</li></ul>Por regra xeral, só os expertos deberían crear categorías novas.',
69246958 'mw-coolcats-confirm-new-ok' => 'Engadir esta categoría de todos os xeitos',
@@ -6941,7 +6975,14 @@
69426976 $messages['gsw'] = array(
69436977 'uploadwizard' => 'Assischtänt zum Uffelade',
69446978 'uploadwizard-desc' => 'Assischtänt zum Uffelade. Entwicklig dur Ferdergälder vu dr Verbesserig vu dr Benutzerfrejndligkeit (Multimedia Usability Project).',
 6979+ 'mwe-upwiz-uploadcampaigns' => 'Kampagne',
 6980+ 'mwe-upwiz-uploadcampaign' => 'Konfiguration vu dr Kampagne',
 6981+ 'right-upwizcampaigns' => 'Konfiguriere vu Kampagne',
 6982+ 'group-upwizcampeditors' => 'Kampagnebearbeiter (Upload Wizard)',
 6983+ 'group-upwizcampeditors-member' => 'Kampagnebearbeiter (Upload Wizard)',
 6984+ 'grouppage-upwizcampeditors' => 'Project:Kampagnebearbeiter (Upload Wizard)',
69456985 'mwe-upwiz-js-off' => 'UploadWizard brucht JavaSkript fir e verbessereti Handhebi dur dr Benutzer. Dyy Browser unterstitzt entwäder kei JavaScript oder JavaScript isch deaktiviert, wäge däm wird s eifach Formular verwändet zum Uffelade.',
 6986+ 'mwe-upwiz-extension-disabled' => 'Die Syte isch wäge tächnische Probläm e Zytlang deaktiviert. In dr Zwischezyt cha s Standardformular zum Uffelade brucht wäre.',
69466987 'mwe-upwiz-code-unknown' => 'Nit bekannti Sproch',
69476988 'mwe-upwiz-step-tutorial' => 'Leere',
69486989 'mwe-upwiz-step-file' => 'Uffelade',
@@ -6950,6 +6991,7 @@
69516992 'mwe-upwiz-step-thanks' => 'Bruuche',
69526993 'mwe-upwiz-api-error-http' => 'Intärne Fähler: S het kei Verbindig zum Server chenne härgstellt wäre.',
69536994 'mwe-upwiz-api-error-ok-but-empty' => 'Intärne Fähler: Dr Server reagiert nit.',
 6995+ 'mwe-upwiz-api-error-unclassified' => 'S het e nit bekannte Fähler gee.',
69546996 'mwe-upwiz-api-error-unknown-code' => 'Nit bekannte Fähler: „$1“',
69556997 'mwe-upwiz-api-error-uploaddisabled' => 'S Uffelade isch in däm Wiki deaktiviert.',
69566998 'mwe-upwiz-api-error-nomodule' => 'Intärne Fähler: S isch kei Modul zum Uffelade feschtgleit wore.',
@@ -6974,7 +7016,8 @@
69757017 'mwe-upwiz-api-error-overwrite' => 'S Iberschryybe vun ere Datei, wu s scho git, isch nit erlaubt.',
69767018 'mwe-upwiz-api-error-badtoken' => 'Intärne Fähler: Dr Token isch fählerhaft.',
69777019 'mwe-upwiz-api-error-fetchfileerror' => 'Intärne Fähler: Bim Abruefe vu dr Datei isch e Fähler ufträtte.',
6978 - 'mwe-upwiz-api-error-duplicate' => 'S git im Wiki scho ne [$1 Datei] mit em glyyche Inhalt.',
 7020+ 'mwe-upwiz-api-error-duplicate' => 'S git im Wiki scho {{PLURAL:$1|[$2 ei anderi Datei]|[$2 anderi Dateie]}} mit em glyche Inhalt.',
 7021+ 'mwe-upwiz-api-error-duplicate-popup-title' => 'Dopplet vorhandeni {{PLURAL:$1|Datei|Dateie}}',
69797022 'mwe-upwiz-api-error-timeout' => 'Dr Server het kei antwort gee in dr erwartete Zyt.',
69807023 'mwe-upwiz-api-warning-exists' => 'S git im Wiki scho ne Datei mit em glyyche Name.',
69817024 'mwe-upwiz-tutorial-error-localized-file-missing' => 'Excusez, mir hän kei Bschryybig in Dyyre Sprooch gfunde. Statt däm wird di änglisch Version zeigt.',
@@ -7105,6 +7148,7 @@
71067149 /** Hebrew (עברית)
71077150 * @author Amire80
71087151 * @author Imneo
 7152+ * @author Rotemliss
71097153 * @author YaronSh
71107154 */
71117155 $messages['he'] = array(
@@ -7206,7 +7250,7 @@
72077251 'mwe-upwiz-source-thirdparty-cases' => 'עכשיו ספרו לנו למה לאתר {{SITENAME}} יש זכות לפרסם את {{PLURAL:$1|היצירה הזאת|היצירות האלו}}:',
72087252 'mwe-upwiz-source-thirdparty-accept' => 'אישור',
72097253 'mwe-upwiz-source-custom' => 'הזינו מידע על זכויות יוצרים עבור כל קובץ בנפרד בדף הבא.',
7210 - 'mwe-upwiz-more-options' => 'עוד אפשרויות...',
 7254+ 'mwe-upwiz-more-options' => 'אפשרויות נוספות...',
72117255 'mwe-upwiz-fewer-options' => 'פחות אפשרויות...',
72127256 'mwe-upwiz-desc' => 'תיאור',
72137257 'mwe-upwiz-desc-add-n' => 'הוספת תיאור בשפה אחרת',
@@ -7277,7 +7321,7 @@
72787322 היא חייבת להיות ארוכה מ{{PLURAL:$1|תו אחד|־$1 תווים}}.',
72797323 'mwe-upwiz-error-signature-bad-chars' => 'החתימה שלך מכילה סמלים אסורים.
72807324 נא לא להשתמש כאן בקוד ויקי או ב־HTML, אלא רק בשם המשתמש שלכם או בשמכם האמתי.',
7281 - 'mwe-upwiz-error-blank' => 'שדה זה נחוץ',
 7325+ 'mwe-upwiz-error-blank' => 'חובה למלא שדה זה.',
72827326 'mwe-upwiz-error-too-long' => 'השדה הזה ארוך מדי.
72837327 הוא חייב להיות קצר מ{{PLURAL:$1|תו אחד|־$1 תווים}}.',
72847328 'mwe-upwiz-error-too-short' => 'השדה הזה קצר מדי.
@@ -8338,7 +8382,7 @@
83398383 'mwe-upwiz-source-thirdparty-cases' => 'Ora explica proque tu es secur que iste sito ha le derecto de publicar {{PLURAL:$1|iste obra|iste obras}}:',
83408384 'mwe-upwiz-source-thirdparty-accept' => 'OK',
83418385 'mwe-upwiz-source-custom' => 'Forni informationes de copyright pro cata file individualmente in le pagina sequente.',
8342 - 'mwe-upwiz-more-options' => 'plus optiones…',
 8386+ 'mwe-upwiz-more-options' => 'adder categorias e plus information...',
83438387 'mwe-upwiz-fewer-options' => 'minus optiones…',
83448388 'mwe-upwiz-desc' => 'Description',
83458389 'mwe-upwiz-desc-add-n' => 'adder un description in un altere lingua',
@@ -8524,7 +8568,6 @@
85258569 'uploadcampaign-text' => 'Tu modifica ora un campania del Assistente de Incargamento.',
85268570 'mwe-upwiz-campaign-name' => 'Nomine del campania',
85278571 'mwe-upwiz-campaign-enabled' => 'Campania activate',
8528 - 'mwe-upwiz-campaign-customLicense' => 'Licentia personalisate',
85298572 'mwe-upwiz-campaign-conf-skipTutorial' => 'Saltar le tutorial de licentiamento',
85308573 'mwe-upwiz-campaign-conf-autoCategories' => 'Categorias pro adder le files automaticamente e silentemente (separate per barras vertical):',
85318574 'mwe-upwiz-campaign-conf-defaultCategories' => 'Categorias predefinite a listar in le scheda de description (separate per barras vertical):',
@@ -8544,8 +8587,6 @@
85458588 'mwe-upwiz-campaign-conf-headerLabelPage' => 'Pagina que contine texto a monstrar supra le interfacie de UploadWizard. $1 es reimplaciate per le codice de lingua:',
85468589 'mwe-upwiz-campaign-conf-thanksLabelPage' => 'Pagina que contine texto a monstrar super le pagina "Usar". $1 es reimplaciate per le codice de lingua:',
85478590 'mwe-upwiz-campaign-conf-idFieldMaxLength' => 'Longitude maxime del texto in le campo ID',
8548 - 'mwe-upwiz-campaign-conf-wikitextLicense' => 'Wikitexto pro un licentia personalisate de obra proprie. Lassar vacue pro non definir tal licentia. $1 es reimplaciate per le codice de lingua:',
8549 - 'mwe-upwiz-campaign-conf-wikitextLicenseTemplates' => 'Patronos a adder quando le usator selige le licentia personalisate (separate per barras vertical):',
85508591 'mw-coolcats-confirm-new-title' => 'Confirmar nove categoria',
85518592 'mw-coolcats-confirm-new' => 'Il pare que tu tenta adder un nove categoria, "$1". Attention:<ul><li>Le nomines del categorias debe generalmente esser in anglese.</li><li>Le major parte del nove categorias debe esser un subcategoria de un categoria existente.</li></ul>In general, solmente expertos deberea crear un categoria.',
85528593 'mw-coolcats-confirm-new-ok' => 'Adder iste categoria totevia',
@@ -8935,7 +8976,7 @@
89368977 'mwe-upwiz-source-thirdparty-cases' => "Adesso dicci perché sei sicuro che questo sito abbia il diritto di pubblicare {{PLURAL:$1|quest'opera|queste opere}}:",
89378978 'mwe-upwiz-source-thirdparty-accept' => 'OK',
89388979 'mwe-upwiz-source-custom' => 'Fornisci le informazioni sul copyright per ciascun file separatamente nella prossima pagina.',
8939 - 'mwe-upwiz-more-options' => 'più opzioni...',
 8980+ 'mwe-upwiz-more-options' => 'aggiungi le categorie ed altre informazioni...',
89408981 'mwe-upwiz-fewer-options' => 'meno opzioni...',
89418982 'mwe-upwiz-desc' => 'Descrizione',
89428983 'mwe-upwiz-desc-add-n' => "aggiungi una descrizione in un'altra lingua",
@@ -9776,7 +9817,7 @@
97779818 'mwe-upwiz-source-thirdparty-cases' => 'Un nu saach, woröm dat De sescher weiß, dat mer heh dat Rääsch han, {{PLURAL:$1|dat Wärk|di Wärke|kein Wärke}} öffentlesch ze maache:',
97789819 'mwe-upwiz-source-thirdparty-accept' => 'Lohß Jonn!',
97799820 'mwe-upwiz-source-custom' => 'Jiv op de nächßte Sigg för jeede einzel Dattei jet övver et Urhävverrääsch aan.',
9780 - 'mwe-upwiz-more-options' => 'mieh müjjelesche Ußwahle&nbsp;…',
 9821+ 'mwe-upwiz-more-options' => 'Saachjroppe derbei donn, un mieh müjjelesche Ußwahle&nbsp;…',
97819822 'mwe-upwiz-fewer-options' => 'winnijer müjjelesche Ußwahle&nbsp;…',
97829823 'mwe-upwiz-desc-add-n' => '{{int:mwe-upwiz-desc-add-0}} en en ander Shprooch',
97839824 'mwe-upwiz-desc-add-0' => 'donn jät drövver schrieve',
@@ -9984,7 +10025,7 @@
998510026 'uploadwizard' => 'Assistent fir eropzelueden',
998610027 'uploadwizard-desc' => "Assistent fir eropzelueden, entwéckelt fir d'Subventioun vun der Multimedia Benotzerfrëndlechkeet",
998710028 'mwe-upwiz-uploadcampaigns' => 'Campagnen eroplueden',
9988 - 'mwe-upwiz-uploadcampaign' => 'Konfiguratioun vum Eropluede vun der Campagne',
 10029+ 'mwe-upwiz-uploadcampaign' => 'Astellung vun der Campagne eroplueden',
998910030 'right-upwizcampaigns' => "Konfiguréieren vum Assistent fir d'Eropluede vu Campagnen.",
999010031 'mwe-upwiz-js-off' => "Den Assistent fir d'Eropluede vu Fichiere benotzt JavaScript fir d'Benotzen duerch Benotzer ze vereinfachen. Äre Browser ënnerstëtzt entweder kee JavaScript oder JavaScript gouf ausgeschalt. Dofir gëtt den einfache Formulaire fir d'Eropluede vu Fichiere benotzt.",
999110032 'mwe-upwiz-extension-disabled' => 'Dës Säit gouf wéint temporären technesche Problemer ausgeschalt. Probéiert et an der Zwëschenzäit mam Standard-Formulaire fir eropzelueden.',
@@ -10071,7 +10112,7 @@
1007210113 'mwe-upwiz-source-thirdparty-cases' => "Sot eis elo w.e.g. firwat datt Dir mengt datt dëse Site d'Recht huet fir {{PLURAL:$1|dëst Wierker|dës Wierker}} ze verëffentlechen:",
1007310114 'mwe-upwiz-source-thirdparty-accept' => 'OK',
1007410115 'mwe-upwiz-source-custom' => "Gitt d'Copyright-Informatioune fir all Fichier individuell op der nächster Säit un.",
10075 - 'mwe-upwiz-more-options' => 'méi Optiounen...',
 10116+ 'mwe-upwiz-more-options' => 'Kategorien a méi Informatiounen derbäisetzen ...',
1007610117 'mwe-upwiz-fewer-options' => 'manner Optiounen...',
1007710118 'mwe-upwiz-desc' => 'Beschreiwung',
1007810119 'mwe-upwiz-desc-add-n' => 'eng Beschreiwung an enger anerer Sprooch derbäisetzen',
@@ -10232,7 +10273,9 @@
1023310274 'mwe-upwiz-campaigns-newname' => 'Numm vun der Matdeelung:',
1023410275 'mwe-upwiz-campaigns-existing' => 'Campagnen déi et scho gëtt',
1023510276 'mwe-upwiz-campaigns-delete' => 'Läschen',
10236 - 'mwe-upwiz-campaigns-confdel' => 'Sidd Dir sécher datt Dir dës Matdeelung läsche wëllt?',
 10277+ 'mwe-upwiz-campaigns-confdel' => 'Sidd Dir sécher datt Dir dës Campagne läsche wëllt?',
 10278+ 'mwe-upwiz-campaigns-confirm-delete' => 'Sidd Dir sécher datt Dir dës Campagne läsche wëllt?',
 10279+ 'uploadcampaign-legend' => 'Astellung vun der Campagne eroplueden',
1023710280 'mwe-upwiz-campaign-name' => 'Numm vun der Matdeelung',
1023810281 'mwe-upwiz-campaign-enabled' => 'Campagne aktivéiert',
1023910282 'mwe-upwiz-campaign-conf-autoCategories' => 'Kategorien an déi d\'Biller automatesch am Hannergrond automatesch derbäigesat gi sollen (mat "|" getrennt)',
@@ -10249,6 +10292,322 @@
1025010293 'mw-coolcats-confirm-new-cancel' => 'Maacht Iech näischt draus',
1025110294 );
1025210295
 10296+/** Limburgish (Limburgs)
 10297+ * @author Ooswesthoesbes
 10298+ */
 10299+$messages['li'] = array(
 10300+ 'uploadwizard' => 'Uploadwizzerd',
 10301+ 'uploadwizard-desc' => "Uploadwizzerd, óntwikkeldj veur 't gaeve vanne multimediabroekbaarheid",
 10302+ 'mwe-upwiz-uploadcampaigns' => 'Uploadcampagnes',
 10303+ 'mwe-upwiz-uploadcampaign' => 'Configuratie uploadcampagne',
 10304+ 'right-upwizcampaigns' => 'Configureer campagnes van de Wizard Uploaden',
 10305+ 'group-upwizcampeditors' => 'Campagnebehierders van de Uploadwizard',
 10306+ 'group-upwizcampeditors-member' => 'Campagnebehierder van de Uploadwizard',
 10307+ 'grouppage-upwizcampeditors' => 'Project:Campagnebehierders van de Uploadwizard',
 10308+ 'mwe-upwiz-js-off' => "UploadWizard gebroek JavaScript veur 'n verbaeterdje gebroekerservaring. Diene browser ongersteuntj gei JavaScript of JavaScript steit oet. Daoró, weurd 'n einvawdig uploadformuleer getuind.",
 10309+ 'mwe-upwiz-extension-disabled' => "Dees pagina steit oet door tiedelike technische probleme. Inne tösjtied kins se 't standerd uploadform gebroeke.",
 10310+ 'mwe-upwiz-code-unknown' => 'Ónbekindje sjpraok',
 10311+ 'mwe-upwiz-step-tutorial' => 'Lieër',
 10312+ 'mwe-upwiz-step-file' => 'Upload',
 10313+ 'mwe-upwiz-step-deeds' => 'Gaef rèchte vrie',
 10314+ 'mwe-upwiz-step-details' => 'Besjrief',
 10315+ 'mwe-upwiz-step-thanks' => 'Gebroek',
 10316+ 'mwe-upwiz-api-error-http' => "Intern fout: d'r kós gein verbinjing gemaak waere mitte server.",
 10317+ 'mwe-upwiz-api-error-ok-but-empty' => 'Intern fout: de server haet gein gegaeves trögkgeleverdj.',
 10318+ 'mwe-upwiz-api-error-unclassified' => "dr Is 'n ónbekènde fout opgetraoje.",
 10319+ 'mwe-upwiz-api-error-unknown-code' => 'Intern fout: "$1"',
 10320+ 'mwe-upwiz-api-error-uploaddisabled' => 'Upload steit oet óp deze wiki.',
 10321+ 'mwe-upwiz-api-error-nomodule' => "Intern fout: d'r is gein uploadmodule ingesteldj.",
 10322+ 'mwe-upwiz-api-error-mustbeposted' => 'Inter fout: aanvraog vereis HTTP-POST.',
 10323+ 'mwe-upwiz-api-error-badaccess-groups' => 'Doe moogs gein bestenj uploade óp deze wiki.',
 10324+ 'mwe-upwiz-api-error-stashfailed' => "Intern fout: de server kós 't tiedelik bestandj neet ópslaon.",
 10325+ 'mwe-upwiz-api-error-missingresult' => "Intern fout: 't waar neet meugelik vas te stèllen of 't kopiejere is geslaag.",
 10326+ 'mwe-upwiz-api-error-missingparam' => "Intern fout: neet alle paramaeters zeen in 't verzeuk mitgeleverdj.",
 10327+ 'mwe-upwiz-api-error-invalid-file-key' => "Intern fout: 't bestandj is neet aangetróffe inne tiedeliken ópslaag.",
 10328+ 'mwe-upwiz-api-error-copyuploaddisabled' => 'Uploade via URL steit óp deze server oet.',
 10329+ 'mwe-upwiz-api-error-mustbeloggedin' => 'Doe mós aangemèldj zeen óm bestenj te kinnen uploade.',
 10330+ 'mwe-upwiz-api-error-empty-file' => 't Bestandj det se perbeers te uploade had gein inhald.',
 10331+ 'mwe-upwiz-api-error-file-too-large' => 't Bestandj det se perbeers te uploade waas te groet.',
 10332+ 'mwe-upwiz-api-error-filetype-missing' => "'t Bestandj haet gein extensie.",
 10333+ 'mwe-upwiz-api-error-filetype-banned' => 't Bestandj det se perbeers te uploade waas van e neet-toegelaote bestandjstype.',
 10334+ 'mwe-upwiz-api-error-filename-tooshort' => "t Bestandj det se perbeers te uploade had 'ne te kórte bestandjsnaam.",
 10335+ 'mwe-upwiz-api-error-illegal-filename' => 'Deze bestandjsnaam is neet toegelaote.',
 10336+ 'mwe-upwiz-api-error-verification-error' => "Dit bestandj is meugelik besjadig of haet 'n ónjuuste extensie.",
 10337+ 'mwe-upwiz-api-error-hookaborted' => "De wieziging die se perbeers te make is aafgebraoke door 'nen oetbreidingshook.",
 10338+ 'mwe-upwiz-api-error-unknown-error' => "Intern fout: d'r is get fout gegange tiedes 't uploade van 't bestandj.",
 10339+ 'mwe-upwiz-api-error-internal-error' => "Intern fout: d'r is get fout gegange tiedes 't verwirke vanne upload dore wiki.",
 10340+ 'mwe-upwiz-api-error-overwrite' => 'E bestandj euversjrieve geit neet.',
 10341+ 'mwe-upwiz-api-error-badtoken' => 'Intern fout: toke is slech.',
 10342+ 'mwe-upwiz-api-error-fetchfileerror' => "Intern fout: d'r is get fout gegange bie 't óphaole van 't bestandj.",
 10343+ 'mwe-upwiz-api-error-duplicate' => "d'r {{PLURAL:$1|steit al [$2 e bestandj]|staon al [$2 bestenj]}} mit dezelfden inhawd oppe wiki.",
 10344+ 'mwe-upwiz-api-error-duplicate-popup-title' => 'Zelfde {{PLURAL:$1|bestandj|bestenj}}',
 10345+ 'mwe-upwiz-api-error-duplicate-archive' => "d'r {{PLURAL:$1|Waar al [$2 'n anger bestandj]|woren al [$2 $1 anger bestenj]}} óppe site mitte zelfdjen inhawd, meh {{PLURAL:$1|det is|die zeen}} gewösj.",
 10346+ 'mwe-upwiz-api-error-duplicate-archive-popup-title' => '{{PLURAL:$1|Duplicaatbestandj det al gewösj is|Duplicaatbestenj die al gewösj zeen}}',
 10347+ 'mwe-upwiz-api-error-unknown-warning' => 'Onbekinde waorsjuwing: $1',
 10348+ 'mwe-upwiz-api-error-timeout' => 'De server haet neet inne verwachde tied geantjweurd.',
 10349+ 'mwe-upwiz-api-error-noimageinfo' => "De upload is aafgeróndj, meh de server haet gein gegaeves van 't bestandj vriegegaeve.",
 10350+ 'mwe-upwiz-api-warning-exists' => "d'r Steit al [$1 'n anger bestandj] mitte zèlfdje inhawd óppe wiki.",
 10351+ 'mwe-upwiz-api-warning-was-deleted' => "d'r Is e bestandj mitte naam \"\$1\" gewaes, meh dit is noe eweg. Doe kins 't neet óbbenuids óplaje. Es se-n 'n anger bestandj wils óplaje, gaef den 'nen angere naam óp.",
 10352+ 'mwe-upwiz-tutorial-error-localized-file-missing' => "d'r Is gein besjrieving in eur sjpraok besjikbaar.
 10353+Dees besjrieving steit in 't Ingels.",
 10354+ 'mwe-upwiz-tutorial-error-file-missing' => "d'r Zeen gein bestenj aangetróffe mitte besjrieving die hie getuind mót waere.
 10355+Nöm kóntak óp mitte admins.",
 10356+ 'mwe-upwiz-tutorial-error-cannot-transform' => "'t Waar neet meugelik 'n aafbeilding te vinje vanne besjrieving die óp 't sjörm pas, ómdat t'r mesjiens e tiedelik perbleem mit Wikimedia Commons is.
 10357+Verzeuk 't later óbbenuids.",
 10358+ 'mwe-upwiz-help-desk' => 'Helpdesk',
 10359+ 'mwe-upwiz-help-desk-url' => 'Helpdesk',
 10360+ 'mwe-upwiz-add-file-n' => 'Veug nag e bestandj toe.',
 10361+ 'mwe-upwiz-add-file-0-free' => 'Selecteer e mediabestandj óm te gaeve',
 10362+ 'mwe-upwiz-transport-started' => 'Begin...',
 10363+ 'mwe-upwiz-uploading' => 'Óplaje...',
 10364+ 'mwe-upwiz-transported' => 'Klaor',
 10365+ 'mwe-upwiz-stashed-upload' => 'Klaor',
 10366+ 'mwe-upwiz-getting-metadata' => 'Bestandjsgegaeves en thumbs waere ópgehaoldj...',
 10367+ 'mwe-upwiz-submitting-details' => 'Sleit de gegaeves óp en publiceertj...',
 10368+ 'mwe-upwiz-published' => 'Gepubliceerd!',
 10369+ 'mwe-upwiz-failed' => 'Mislök.',
 10370+ 'mwe-upwiz-remove' => 'Wis',
 10371+ 'mwe-upwiz-remove-upload' => 'Wösj dit bestandj oete lies mit bestenj die ópgeload mótte waere',
 10372+ 'mwe-upwiz-remove-description' => 'Wösj dees besjrieving',
 10373+ 'mwe-upwiz-upload' => 'Upload',
 10374+ 'mwe-upwiz-file-all-ok' => 'Alle uploads zeen aafgeróndj!',
 10375+ 'mwe-upwiz-file-some-failed' => "d'r Zeen uploads mislök.",
 10376+ 'mwe-upwiz-file-retry' => 'Verzeuk mislökdje ópnuuj',
 10377+ 'mwe-upwiz-next-file-despite-failures' => 'Gank toch door',
 10378+ 'mwe-upwiz-skip-tutorial-future' => 'Slaon deze stap de volgendje kier euver',
 10379+ 'mwe-upwiz-file-all-failed' => 'Alle uploads zeen mislök.',
 10380+ 'mwe-upwiz-upload-count' => '$1 {{PLURAL:$1|bestandj|bestenj}} van $2 te uploade {{PLURAL:$2|bestandj|bestenj}} geüpload',
 10381+ 'mwe-upwiz-progressbar-uploading' => 'óplajendj',
 10382+ 'mwe-upwiz-finished' => 'Klaor!',
 10383+ 'mwe-upwiz-secs-remaining' => '$1 {{PLURAL:$1|sekond|sekond}} euver',
 10384+ 'mwe-upwiz-mins-secs-remaining' => '$1 {{PLURAL:$1|menuut|menuut}} en $2 {{PLURAL:$2|sekónd|sekónd}} euver',
 10385+ 'mwe-upwiz-hrs-mins-secs-remaining' => '$1 {{PLURAL:$1|oer|oer}}, $2 {{PLURAL:$2|menuut|menuut}} en $3 {{PLURAL:$3|sekónd|sekónd}} euver',
 10386+ 'mwe-upwiz-deeds-macro-prompt' => "Dees site is verplich óm auteursrechte-informatie óp te gaeve veur {{PLURAL:$1|'t euverstaondj bestandj|de baovestaondje bestenj}} zodet zeker weurt gesteldj det {{PLURAL:$1|'t hergebroek kan|ze hergebroek kinne}} waere.",
 10387+ 'mwe-upwiz-deeds-custom-prompt' => 'Of:',
 10388+ 'mwe-upwiz-source-ownwork' => '{{PLURAL:$1|Dit bestandj is|Dees bestenj zeen}} mien eige werk.',
 10389+ 'mwe-upwiz-source-ownwork-assert-any-license' => "Ich, $2, de auteursrechtehawder van {{PLURAL:$1|dit werk|dees werke}}, gaef hiebie ónherropelik toestumming aan eder 't rech om {{PLURAL:$1|dit werk|dees werke}} te gebroeke, verangere en verspreie veur eder doel en daorom publiceer ich {{PLURAL:$1|'t|deees}} ónger de volgende veurwaerd:",
 10390+ 'mwe-upwiz-source-ownwork-assert' => "Ich, $2, de auteursrechtehawder van {{PLURAL:$1|dit werk|dees werke}}, gaef hiebie ónherropelik toestumming aan eder 't rech om {{PLURAL:$1|dit werk|dees werke}} te gebroeke, es miene naam d'r bie steit en det gèldj ouch veur aafgeleidje werke.",
 10391+ 'mwe-upwiz-source-ownwork-assert-custom' => "Ich, $2, de auteursrechtehawder van {{PLURAL:$1|dit werk|dees werke}}, maak {{PLURAL:$1|'t|deees}} hiebie ónger de volgende licensie(s) besjikbaar:",
 10392+ 'mwe-upwiz-source-ownwork-assert-note' => 'Dit beteikentj des se dien wirk vriegufs ongere volgende licensie: $1',
 10393+ 'mwe-upwiz-source-permission' => "De sjriever van 't wirk haet dich expliciete toesjtumming gegaeven 't werk óp te laje",
 10394+ 'mwe-upwiz-source-thirdparty' => '{{PLURAL:$1|Dit bestandj is|Dees bestenj zeen}} neet mien eige werk.',
 10395+ 'mwe-upwiz-source-thirdparty-intro' => "Veur de plaats in wo se 't bestandj gevónje hes.",
 10396+ 'mwe-upwiz-source-thirdparty-custom-multiple-intro' => 'Es alle bestenj dezelfdje brón, sjriever en rechte höbbe, kins se dees in eine kier inveure.',
 10397+ 'mwe-upwiz-source-thirdparty-license' => "De sjrievers van {{PLURAL:$1|dit wirk|dees wirke}} höbben {{PLURAL:$1|'t|die}} óngere volgendje licensie(s) oetgebrach:",
 10398+ 'mwe-upwiz-source-thirdparty-cases' => "Gaef hie aan wiezo se zeker wits det dees site 't rech haet óm {{PLURAL:$1|dit wirk|dees wirke}} oet te bringe:",
 10399+ 'mwe-upwiz-source-thirdparty-accept' => 'Klaor',
 10400+ 'mwe-upwiz-source-custom' => 'Lever óppe volgendje pagina veur eder bestandj epaart sjrieversinfo.',
 10401+ 'mwe-upwiz-more-options' => 'veug categorieë en mier informatie toe...',
 10402+ 'mwe-upwiz-fewer-options' => 'minder instellinge...',
 10403+ 'mwe-upwiz-desc' => 'Besjrieving',
 10404+ 'mwe-upwiz-desc-add-n' => "veug besjrieving in 'n anger sjpraok toe",
 10405+ 'mwe-upwiz-desc-add-0' => 'veug besjrieving toe',
 10406+ 'mwe-upwiz-title' => 'Naam',
 10407+ 'mwe-upwiz-media-type' => 'Mediatype',
 10408+ 'mwe-upwiz-date-created' => 'Aangemaak op',
 10409+ 'mwe-upwiz-location' => 'Locatie',
 10410+ 'mwe-upwiz-copyright-info' => 'Gaef rèchte vrie',
 10411+ 'mwe-upwiz-author' => 'Sjriever(s)',
 10412+ 'mwe-upwiz-autoconverted' => "Dit bestandj is automatisch ómgezatj nao 't $1-formaat",
 10413+ 'mwe-upwiz-other' => 'Euverige infermasie',
 10414+ 'mwe-upwiz-source' => 'Brón',
 10415+ 'mwe-upwiz-thanks-intro' => "Danke veur 't óplaje!",
 10416+ 'mwe-upwiz-thanks-explain' => "Doe kans {{PLURAL:$1|dit bestandj|dees bestenj}} noe gebroeken op sites wie Wikipedia en d'rhaer verwiezen op 't web.",
 10417+ 'mwe-upwiz-thanks-wikitext' => "Kopieer dees teks in 'n paasj <b>óm 't bestandj te gebroeke</b>:",
 10418+ 'mwe-upwiz-thanks-url' => "Kopieer dezen URL óm <b>d'rhaer in HTML te verwieze</b>:",
 10419+ 'mwe-upwiz-upload-error-bad-filename-extension' => 'Deze wiki accepteertj gein bestandjsname mit ".$1".',
 10420+ 'mwe-upwiz-upload-error-bad-extension-video-firefogg' => "Doe höbs e uploadbaar videobestandj gesillekteerdj in 'ne ónvriejen ópmaak.
 10421+Doe kins [$1 Firfogg ('nen addon van firefox) d'rópzitte] óm 't bestandj autematis te kónvertere. Of gebroek anger [$2 kónversieopties] óm 't bestandj in 'ne vriejen ópmaak óm te zètte.",
 10422+ 'mwe-upwiz-upload-error-bad-filename-no-extension' => 'Op deze wiki kinnen allein bestenj mit \'n extensie upgeload waere, bv: ".jpg" aan \'t ènj vanne bestandjsnaam.',
 10423+ 'mwe-upwiz-upload-error-duplicate-filename-error' => 'Doe bös al \'t bestandj "$1" up \'nt loade.',
 10424+ 'mwe-upwiz-allowed-filename-extensions' => 'De toegestaon extensies zeen:',
 10425+ 'mwe-upwiz-help-allowed-filename-extensions' => 'Toegestange bestandjsextensies',
 10426+ 'mwe-upwiz-upload-error-duplicate' => 'Dit bestandj is ierder upgeload op deze wiki.',
 10427+ 'mwe-upwiz-upload-error-stashed-anyway' => 'Load toch up?',
 10428+ 'mwe-upwiz-upload-error-unknown-filename-error' => 'Weer kóste \'t bestandj "$1" neet laeze vanwaege ónbekindje rejene.',
 10429+ 'mwe-upwiz-ok' => 'Klaor',
 10430+ 'mwe-upwiz-cancel' => 'Braek aaf',
 10431+ 'mwe-upwiz-fileexists-replace' => 'E bestandj mitte naam "$1" besteit al. Veranger de naam.',
 10432+ 'mwe-upwiz-fileexists' => "d'r Besteit al e bestandj mit deze naam. Conterleer <b><tt>$1</tt></b> es se neet zeker bös of se wils euversjrieve.",
 10433+ 'mwe-upwiz-fileexists-replace-on-page' => "'t Geuf al e bestandj mit deze naam. Wils se-n 't vervange, gank den nao de pagina veur [$2 $1] en vervang 't dao.",
 10434+ 'mwe-upwiz-fileexists-replace-no-link' => "d'r Is al e bestandj mit deze naam.",
 10435+ 'mwe-upwiz-blacklisted' => "Kees 'nen angere, besjrievendje naam.",
 10436+ 'mwe-upwiz-thumbnail-more' => 'Vergroeat',
 10437+ 'mwe-upwiz-overwrite' => "Vervang 't bestandj",
 10438+ 'mwe-upwiz-next' => 'Volgende',
 10439+ 'mwe-upwiz-next-file' => 'Doorgaon',
 10440+ 'mwe-upwiz-next-deeds' => 'Volgende',
 10441+ 'mwe-upwiz-next-details' => 'Volgende',
 10442+ 'mwe-upwiz-home' => "Gank nao 't veurblaad vanne wiki",
 10443+ 'mwe-upwiz-upload-another' => 'Upload mier bestenj',
 10444+ 'mwe-prevent-close' => 'Es se dees pagina verleerts, gaon de verangere die se hes gemaak verlaore.',
 10445+ 'mwe-upwiz-prevent-close' => "Doe bös nag neet klaot mit 't uploade en publicere van {{PLURAL:$1|dit bestandj|dees bestenj}}.",
 10446+ 'mwe-upwiz-files-complete' => "'t Upload van dien bestenj is klaor!",
 10447+ 'mwe-upwiz-tooltip-author' => "De naam vanne miens dae de foto haet genómme, 't sjiljerie of teikening gemaak haet, etc.",
 10448+ 'mwe-upwiz-tooltip-source' => "Wo kump 't digitaal vanaaf? Dit kin 'nen URL, e book of publicatie zeen.",
 10449+ 'mwe-upwiz-tooltip-sign' => "Doe kins diene gebroekersnaam of echte naam gebroeke. In allebei de gevalle weurt d'r gekoppeld aan dien gebroekerspagina oppe wiki.",
 10450+ 'mwe-upwiz-tooltip-title' => "'ne Kórte naam veur 't bestandj. Doe kins platte teks mit spaties gebroeke. Gaef de extensie neet óp.",
 10451+ 'mwe-upwiz-dialog-title' => "Bestenj kinne upgeload waere mit 'ne naam in 'n willekäörig spraok en sjrif. Name van mediabestenj mótte beteikenisvól zeen in de gekaoze spraok.",
 10452+ 'mwe-upwiz-tooltip-description' => "Besjrief 't wirk. Vermeldj veur 'n foto vc. waat t'r te zeen is, wenee de foto genómmen is, wobie, etc.",
 10453+ 'mwe-upwiz-tooltip-date' => 'Datum woróp dit wirk gemaak is of is gepubliceerd (jjjj-mm-dd).',
 10454+ 'mwe-upwiz-tooltip-categories' => "Veug [$1 categorieë] toe aan dien bestandj óm 't mekkelliker te kinne vinje.",
 10455+ 'mwe-upwiz-tooltip-other' => 'Euverige gegaeves die se wils ópnömme veur dit wirk. Dink aan co-ordinate, verwiezinge nao anger versies, etc.',
 10456+ 'mwe-upwiz-tooltip-more-info' => 'Lier mier.',
 10457+ 'mwe-upwiz-file-need-file' => "Veug ieës 'ne upload tou.",
 10458+ 'mwe-upwiz-deeds-need-deed' => "Gaef e.t.b. aan wie se {{PLURAL:$1|dit bestandj|dees bestenj}} höbs gevónjen en wie dees site {{PLURAL:$1|'t|ze}} kin gebroeke door ein vanne opties te keze.",
 10459+ 'mwe-upwiz-deeds-need-license' => "Selecteer 'n licentie.",
 10460+ 'mwe-upwiz-license-show-all' => "Gebroek 'n anger licensie.",
 10461+ 'mwe-upwiz-license-show-recommended' => 'Gebroek de aanbevaole licensie',
 10462+ 'mwe-upwiz-error-signature-blank' => "Doe mós in 't óngerstaondj veldj diene gebroekers- of echte naam inveure.",
 10463+ 'mwe-upwiz-error-signature-too-long' => "De handjteikening is te lank.
 10464+Maak 'm kórter es $1 {{PLURAL:$1|karakter|karakters}}.",
 10465+ 'mwe-upwiz-error-signature-too-short' => "De handjteikening is te kórt.
 10466+Maak 'm lenger es $1 {{PLURAL:$1|karakter|karakters}}.",
 10467+ 'mwe-upwiz-error-signature-bad-chars' => 'Dien handjteikening haet symbole die neet moge.
 10468+Gebroek gein wikteks of HTML, allein diene gebroekersnaam of echte naam.',
 10469+ 'mwe-upwiz-error-blank' => 'Dit veld is verplich.',
 10470+ 'mwe-upwiz-error-too-long' => "Dit veld is te lank.
 10471+Maak 't kórter es $1 {{PLURAL:$1|teike|teikes}}.",
 10472+ 'mwe-upwiz-error-too-short' => "Dit veld is te kórt.
 10473+Maak 't lenger es $1 {{PLURAL:$1|teike|teikes}}.",
 10474+ 'mwe-upwiz-error-bad-chars' => 'Dit veld bevat symbole die neet zien toegestaon.
 10475+Gebroek hie gein wikiteks of HTML.',
 10476+ 'mwe-upwiz-error-date' => "Veur 'ne geljige datum in wie jjjj-mm-dd of kees 'ne datum inne popupkalender.",
 10477+ 'mwe-upwiz-error-title-blacklisted' => 'Deze naam haet óngewönsjde teks. Verbaeter dees e.t.b.',
 10478+ 'mwe-upwiz-error-title-badchars' => 'Deze naam haet óngewönsjde teikes. Wösj dees e.t.b.',
 10479+ 'mwe-upwiz-error-title-senselessimagename' => 'Gaef deze naam e.t.b. mier beteikenis.',
 10480+ 'mwe-upwiz-error-title-hosting' => "'t Liek esof se dit bestandj downgelaod hes van 'n anger plaetjesdeens. Maak de naam e.t.b. beteikenisvóller. Kónterlier ouch nag 'ne kier of se de richte höbs óm 't bestandj hie te publiquere.",
 10481+ 'mwe-upwiz-error-title-thumbnail' => "Dit liek de naam van 'ne thumb. Upload e.t.b. gein thumbs nao de zèlfdje wiki. Is dit neet 't geval, verbaeter de naam door 'm beteikenisvóller te maken en de thumbverwiezing eweg te haole.",
 10482+ 'mwe-upwiz-error-title-fileexists-shared-forbidden' => "Deze naam is gerizzervierdj veur e bestandj in 'ne gedeildje repositoir. Kees 'nen angere naam.",
 10483+ 'mwe-upwiz-error-title-double-apostrophe' => "Deze naam haet 'ne dóbbelen apostrop. Haol dezen e.t.b. eweg.",
 10484+ 'mwe-upwiz-error-title-extension' => "Doe hoofs gein extensie toe te veuge. Maak geweun 'ne veur miense laesbare naam en de sofwaer zorg veure res.",
 10485+ 'mwe-upwiz-details-error-count' => "d'r {{PLURAL:$1|is 'n fout|zeen $1 foute}} aangetroffe in {{PLURAL:$2|'t baovestaondj form|de baovesjtaondje formelere}}. Verbaeter dees en perbeer 't den obbenuids op te sjlaon.",
 10486+ 'mwe-upwiz-license-cc-by-sa-3.0' => 'Creative Commons Attribution ShareAlike 3.0',
 10487+ 'mwe-upwiz-license-cc-by-sa-3.0-at' => 'Creative Commons Attribution ShareAlike 3.0 Oeasteriek',
 10488+ 'mwe-upwiz-license-cc-by-sa-3.0-de' => 'Creative Commons Attribution ShareAlike 3.0 Pruses',
 10489+ 'mwe-upwiz-license-cc-by-sa-3.0-ee' => 'Creative Commons Attribution ShareAlike 3.0 Eslandj',
 10490+ 'mwe-upwiz-license-cc-by-sa-3.0-es' => 'Creative Commons Attribution ShareAlike 3.0 Spanje',
 10491+ 'mwe-upwiz-license-cc-by-sa-3.0-hr' => 'Creative Commons Attribution ShareAlike 3.0 Kroatië',
 10492+ 'mwe-upwiz-license-cc-by-sa-3.0-lu' => 'Creative Commons Attribution ShareAlike 3.0 Luuksemburg',
 10493+ 'mwe-upwiz-license-cc-by-sa-3.0-nl' => 'Creative Commons Attribution ShareAlike 3.0 Nederlandj',
 10494+ 'mwe-upwiz-license-cc-by-sa-3.0-no' => 'Creative Commons Attribution ShareAlike 3.0 Nórwaeg',
 10495+ 'mwe-upwiz-license-cc-by-sa-3.0-pl' => 'Creative Commons Attribution ShareAlike 3.0 Poeale',
 10496+ 'mwe-upwiz-license-cc-by-sa-3.0-ro' => 'Creative Commons Attribution ShareAlike 3.0 Roemenië',
 10497+ 'mwe-upwiz-license-cc-by-3.0' => 'Creative Commons Attribution 3.0',
 10498+ 'mwe-upwiz-license-cc-by-sa-2.5' => 'Creative Commons Attribution ShareAlike 2.5',
 10499+ 'mwe-upwiz-license-cc-by-2.5' => 'Creative Commons Attribution 2.5',
 10500+ 'mwe-upwiz-license-cc-by-sa-2.0' => 'Creative Commons Attribution ShareAlike 2.0',
 10501+ 'mwe-upwiz-license-cc-by-2.0' => 'Creative Commons Attribution 2.0',
 10502+ 'mwe-upwiz-license-cc-zero' => 'Creative Commons CC0 Waiver (publiek domein)',
 10503+ 'mwe-upwiz-license-fal' => 'Vrie Artistieke Licensie (FAL)',
 10504+ 'mwe-upwiz-license-own-pd' => 'Publiek domein (alle rèchte vriegegaeve via de licensie Creative Commons 0)',
 10505+ 'mwe-upwiz-license-pd-old-100' => 'Sjriever al mier es 100 jaor doed',
 10506+ 'mwe-upwiz-license-pd-old' => 'Sjriever al mier es 70 jaor doed',
 10507+ 'mwe-upwiz-license-pd-art' => "Reproductie van e sjiljerie det zich in 't publiek domein bevindj dore laeftied",
 10508+ 'mwe-upwiz-license-pd-us' => "Veur 't iers gepubliceerd inne VS veur 1923",
 10509+ 'mwe-upwiz-license-pd-usgov' => 'Origineel wirk vanne Amerikaanse fidderaole regering',
 10510+ 'mwe-upwiz-license-pd-usgov-nasa' => 'Origineel wirk vanne NASA',
 10511+ 'mwe-upwiz-license-pd-usgov-military-navy' => 'Origineel wirk vanne Amerikaanse Marine',
 10512+ 'mwe-upwiz-license-pd-ineligible' => 'Te einvawdig óm copyright te drage',
 10513+ 'mwe-upwiz-license-pd-ineligible-help' => "Bön veurzichtige mitte licensie. Aafbeildinge mótte hiel einvawdig zeen, wie 'ne greune krink of e roed veerkaant.",
 10514+ 'mwe-upwiz-license-pd-textlogo' => 'Logo mit allein einvawdige teks (waordmirk)',
 10515+ 'mwe-upwiz-license-copyrighted-free-use' => 'Copyright, mer kin waere gebroek veur waatfer doel den ouch, ouch commercieel.',
 10516+ 'mwe-upwiz-license-attribution' => 'Kin waere gebroek veur alles, ouch commercieel, zolanke sjriever mer genömp weurt.',
 10517+ 'mwe-upwiz-license-gfdl' => 'GNU Free Documentation License',
 10518+ 'mwe-upwiz-license-cc-by-sa-3.0-gfdl' => 'Copyleft, naamsvermelding vereis (GFDL, CC-BY-SA-3.0).',
 10519+ 'mwe-upwiz-license-cc-head' => 'De sjriever haet {{PLURAL:$1|dit wirk|dees wirke}} gepubliceerd ongere Creative Commons licensie',
 10520+ 'mwe-upwiz-license-cc-subhead' => "Neet alle Creative Commons licensies zeen gesjik veur dees site. Zorg det de rechhöbbendje 'n gooj licensie haet.",
 10521+ 'mwe-upwiz-license-flickr-head' => "De sjrieve rhaet {{PLURAL:$1|aafbeilding of video|aafbeildinge of video's}} op FlickR gepubliceerd mit 'n gesjik licensie",
 10522+ 'mwe-upwiz-license-flickr-subhead' => 'Conterleer "Licensie" ane ziekantj vanne Flickrpagina. Allebei de icone en licensienaam mótte euvereinkómme mit ein vanne hie staondje keuzes.',
 10523+ 'mwe-upwiz-license-public-domain-head' => "'De copyright is zeker verloupe.",
 10524+ 'mwe-upwiz-license-usgov-head' => '{{PLURAL:$1|Dit wirk is|Dees wirke zeen}} gemaak dore euverheid vanne VS.',
 10525+ 'mwe-upwiz-license-misc' => 'Diverse raejene',
 10526+ 'mwe-upwiz-license-custom-head' => "Allein veur experts: veur de code in veur 'n licentie die hie neet getuind weurt",
 10527+ 'mwe-upwiz-license-custom-subhead' => "Veur wikiteks in die 'n licentiesjabloon toevoog aan dien uploads.",
 10528+ 'mwe-upwiz-license-none-applicable-head' => 'Ich weet neet waat ich hie mót keze! Help mich!',
 10529+ 'mwe-upwiz-license-none-applicable-subhead' => "Es se neet zeker bös van wate bedoeling vanne oorsprónkelik auteur waar, upload {{PLURAL:$1|dit bestandj|dees bestenj}} den neet nao dees site. Klik oppe knoep hieónger óm {{PLURAL:$1|dezen upload|dees uploads}} aaf te braeke. Maak dich gein zörg; d'r is nag nieks gepubliceerd.",
 10530+ 'mwe-upwiz-license-none-applicable' => 'Braek {{PLURAL:$1|dezen upload|dees uploads}} aaf zónger te publicere',
 10531+ 'mwe-upwiz-license-confirm-remove' => 'Bös se zeker des se {{PLURAL:$1|dezen upload|dees uploads}} wils wisse?',
 10532+ 'mwe-upwiz-license-confirm-remove-title' => 'Bevèstig wisse',
 10533+ 'mwe-upwiz-license-external' => 'Dit bestandj is besjikbaar óngere volgende licentie op $1: <b>$2</b>.',
 10534+ 'mwe-upwiz-license-external-invalid' => 'Dit bestandj is besjikbaar óngere volgende licentie op $1: <b>$2</b>. Dees licentie is neet gesjik veur op dees site.',
 10535+ 'mwe-upwiz-categories' => 'Categorieë',
 10536+ 'mwe-upwiz-categories-add' => 'Veug toe',
 10537+ 'mwe-upwiz-category-remove' => 'Wis dees categorie',
 10538+ 'mwe-upwiz-thanks-caption' => "Veur hie 'n biesjrif toe",
 10539+ 'mwe-upwiz-help-popup' => 'Hölp',
 10540+ 'mwe-upwiz-help-popup-title' => 'Titel',
 10541+ 'mwe-upwiz-thumbnail-failed' => "d'n Upload is aafgeróndj, meh de server kós geine thumb make",
 10542+ 'mwe-upwiz-unparseable-filename' => 'De naam "$1" kós me neet verwirke',
 10543+ 'mwe-upwiz-image-preview' => 'Veurvertuin vanne aafbeilding',
 10544+ 'mwe-upwiz-subhead-message' => "Danke veur 't gebroeke van ós nuuj uploadprogramma!",
 10545+ 'mwe-upwiz-subhead-bugs' => '[$1 Bekinde probleme]',
 10546+ 'mwe-upwiz-subhead-translate' => "[$1 Hölp bie 't vertale]",
 10547+ 'mwe-upwiz-subhead-alt-upload' => '[$1 Trök nao de aaj versie]',
 10548+ 'mwe-upwiz-feedback-prompt' => '[$1 Gaef feedback]',
 10549+ 'mwe-upwiz-feedback-note' => 'Diene feedback weurd publiekelik geplaats oppe pagina "[$2 $1]", mit diene gebroekersnaam, browserversie en DOS.',
 10550+ 'mwe-upwiz-feedback-subject' => 'Óngerwerp:',
 10551+ 'mwe-upwiz-feedback-message' => 'Berich:',
 10552+ 'mwe-upwiz-feedback-title' => 'Gaef feedback euver uploadwizzerd',
 10553+ 'mwe-upwiz-feedback-cancel' => 'Braek aaf',
 10554+ 'mwe-upwiz-feedback-submit' => 'Slaon feedback óp',
 10555+ 'mwe-upwiz-feedback-adding' => 'Feedback weurt aan pagina toegevoeg...',
 10556+ 'mwe-upwiz-feedback-error1' => 'Fout: ónbekind rizzeltaot vanne API',
 10557+ 'mwe-upwiz-feedback-error2' => 'Fout: bewirking mislök',
 10558+ 'mwe-upwiz-feedback-error3' => 'Fout: gein reactie vanne API',
 10559+ 'mwe-upwiz-feedback-blacklist-report-prompt' => '[$1 Sjik feedback]',
 10560+ 'mwe-upwiz-feedback-blacklist-info-prompt' => '[$1 Mier info]',
 10561+ 'mwe-upwiz-feedback-blacklist-line-intro' => "Dit is de regel oete zwarte lies veur paginaname dae 'n blokkaasj haet veroorzaak:
 10562+$1",
 10563+ 'mwe-upwiz-feedback-blacklist-subject' => 'Mienen uploadnaam, "$1" is verbaoje.',
 10564+ 'mwe-upwiz-errordialog-title' => 'Fout bie de inzènjing',
 10565+ 'mwe-upwiz-errordialog-ok' => 'Klaor',
 10566+ 'mwe-upwiz-error-nosuchcampaign' => 'Gein campagne mitte naam "$1".',
 10567+ 'mwe-upwiz-error-campaigndisabled' => 'De campagne "$1" steit neet aan.',
 10568+ 'mwe-upwiz-campaigns-name' => 'Campagnenaam',
 10569+ 'mwe-upwiz-campaigns-status' => 'Status',
 10570+ 'mwe-upwiz-campaigns-enabled' => 'Aan',
 10571+ 'mwe-upwiz-campaigns-disabled' => 'Oet',
 10572+ 'mwe-upwiz-campaigns-edit' => 'Bewirk',
 10573+ 'mwe-upwiz-campaigns-add' => "Dooch t'rbie",
 10574+ 'mwe-upwiz-campaigns-addnew' => "Veug 'n nuuj campagne tou",
 10575+ 'mwe-upwiz-campaigns-newname' => 'Campagnenaam:',
 10576+ 'mwe-upwiz-campaigns-namedoc' => 'De naam vanne campagne is de ID dae weurt gebroek inne URL, wie "naam" in "?campaign=naam"',
 10577+ 'mwe-upwiz-campaigns-existing' => 'Bestaondje campagnes',
 10578+ 'mwe-upwiz-campaigns-editing' => 'Configuratie uploadcampagne',
 10579+ 'mwe-upwiz-campaigns-delete' => 'Sjaf eweg',
 10580+ 'mwe-upwiz-campaigns-confdel' => 'Wils se dees campagne zeker wisse?',
 10581+ 'mwe-upwiz-campaigns-delete-failed' => 'Kós de campagne neet wisse.',
 10582+ 'mwe-upwiz-campaigns-confirm-delete' => 'Wils se dees campagne zeker wisse?',
 10583+ 'uploadcampaign-legend' => 'Configuratie uploadcampagne',
 10584+ 'uploadcampaign-text' => "Doe verangers 'n campagne vanne uploadwizzerd.",
 10585+ 'mwe-upwiz-campaign-name' => 'Campagnenaam',
 10586+ 'mwe-upwiz-campaign-enabled' => 'Campagne steit aan',
 10587+ 'mwe-upwiz-campaign-conf-skipTutorial' => 'Slaon licentiehölp euver',
 10588+ 'mwe-upwiz-campaign-conf-autoCategories' => 'Categorieë óm bestenj autematis en stil toe te veuge (gesjeie mit "|"):',
 10589+ 'mwe-upwiz-campaign-conf-defaultCategories' => 'Standerdcategorieë óm inne besjrieving te tuine (gesjeie mit e piepke):',
 10590+ 'mwe-upwiz-campaign-conf-autoWikiText' => 'Wikiteks óm autematis aan alle upgeloade aafbeildinge toe te voge:',
 10591+ 'mwe-upwiz-campaign-conf-ownWorkOption' => 'Wie mót ich mit (ón)eigewèrk ómgaon?',
 10592+ 'mwe-upwiz-campaign-owner-choice' => 'Staon de gebroek toe óm tösse eigen èn óneige wirk te keze',
 10593+ 'mwe-upwiz-campaign-owner-own' => 'Allein veur eige wirk',
 10594+ 'mwe-upwiz-campaign-owner-notown' => 'Allein veur óneige wirk',
 10595+ 'mwe-upwiz-campaign-conf-licensesOwnWork' => 'De licensie die geselecteerd kinne waere veur eige wirk:',
 10596+ 'mwe-upwiz-campaign-conf-tutorialTemplate' => 'Naam vanne hölp óp Wikimedia Commons. De "$1" weurt vervange dore spraokcode:',
 10597+ 'mwe-upwiz-campaign-conf-tutorialWidth' => 'Brèdje vanne hölp:',
 10598+ 'mwe-upwiz-campaign-conf-tutorialHelpdeskCoords' => 'Imagemapcoördinate veure helpdeskknoep:',
 10599+ 'mwe-upwiz-campaign-conf-defaultOwnWorkLicence' => 'Standerdlicentie veur eige wirk:',
 10600+ 'mwe-upwiz-campaign-conf-idField' => 'Wikiteks veur ID-veld, bv: <nowiki>{{Rijksmonument|$1}}</nowiki>. Laot laeg óm nieks te tuine:',
 10601+ 'mwe-upwiz-campaign-conf-idFieldLabel' => 'ID-veldlabelteks',
 10602+ 'mwe-upwiz-campaign-conf-idFieldLabelPage' => 'Paginanaam mit teks veur ID-veldlabel. De "$1" weurt vervange mitte spraokcode:',
 10603+ 'mwe-upwiz-campaign-conf-headerLabelPage' => 'De pagina dae de baove de interface vanne Uploadwizzerd te tuine teks bevat. De "$1" weurt vervange mitte spraokcode:',
 10604+ 'mwe-upwiz-campaign-conf-thanksLabelPage' => 'De pagina dae de baove de gebroekspagina te tuine teks bevat. De "$1" weurt vervange mitte spraokcode:',
 10605+ 'mwe-upwiz-campaign-conf-idFieldMaxLength' => 'Maximaal lingdje vanne ID-veldteks',
 10606+ 'mw-coolcats-confirm-new-title' => 'Bevèstig nuuj categorie',
 10607+ 'mw-coolcats-confirm-new' => "'t Zuut t'r nao oet des se 'n nuuj categorie, \"\$1\", wils toevoge. Lèt óp: <ul><li>Categorieë mótte meistes in 't Ingels zeen.</li> <li>De meiste nuuj categorieë mótte subcategorieë zeen.</li></ul> Euver 't algemein kinnen allein experts 'n categorie toevoge.",
 10608+ 'mw-coolcats-confirm-new-ok' => 'Voog dees categorie toch toe',
 10609+ 'mw-coolcats-confirm-new-cancel' => 'Laot meh',
 10610+);
 10611+
1025310612 /** Lithuanian (Lietuvių)
1025410613 * @author Eitvys200
1025510614 */
@@ -10522,7 +10881,7 @@
1052310882 'mwe-upwiz-help-desk' => 'Биро за помош',
1052410883 'mwe-upwiz-help-desk-url' => 'Биро за помош',
1052510884 'mwe-upwiz-add-file-n' => 'Додај друга податотека',
10526 - 'mwe-upwiz-add-file-0-free' => 'Одберете податотека за донирање',
 10885+ 'mwe-upwiz-add-file-0-free' => 'Одберете податотека за подарување',
1052710886 'mwe-upwiz-transport-started' => 'Почнувам...',
1052810887 'mwe-upwiz-uploading' => 'подигам...',
1052910888 'mwe-upwiz-transported' => 'ОК',
@@ -10562,7 +10921,7 @@
1056310922 'mwe-upwiz-source-thirdparty-cases' => 'Сега кажете ни зошто сте сигурни дека ова мрежно место има право да {{PLURAL:$1|го објави ова дело|ги објави овие дела}}:',
1056410923 'mwe-upwiz-source-thirdparty-accept' => 'ОК',
1056510924 'mwe-upwiz-source-custom' => 'На следната страница наведете информации за авторските права на секоја податотека засебно.',
10566 - 'mwe-upwiz-more-options' => 'повеќе можности...',
 10925+ 'mwe-upwiz-more-options' => 'додајте категории и повеќе информации...',
1056710926 'mwe-upwiz-fewer-options' => 'помалку можности...',
1056810927 'mwe-upwiz-desc' => 'Опис',
1056910928 'mwe-upwiz-desc-add-n' => 'додај опис на друг јазик',
@@ -10748,7 +11107,6 @@
1074911108 'uploadcampaign-text' => 'Менувате кампања на Помошникот за подигање.',
1075011109 'mwe-upwiz-campaign-name' => 'Име на кампањата',
1075111110 'mwe-upwiz-campaign-enabled' => 'Кампањата е овозможена',
10752 - 'mwe-upwiz-campaign-customLicense' => 'Сопствена лиценца',
1075311111 'mwe-upwiz-campaign-conf-skipTutorial' => 'Прескокни го објаснувањето за лиценцирање',
1075411112 'mwe-upwiz-campaign-conf-autoCategories' => 'Категориите во кои автоматски и тивко ќе се ставаат податотеки (одделени со исправени црти)',
1075511113 'mwe-upwiz-campaign-conf-defaultCategories' => 'Основно-зададени категории за наведување во јазичето за опис (одделени со исправени црти)',
@@ -10768,8 +11126,6 @@
1076911127 'mwe-upwiz-campaign-conf-headerLabelPage' => 'Страницата што го содржи текстот за приказ над посредникот на Помошникот за подигање. $1 се заменува со јазичниот код',
1077011128 'mwe-upwiz-campaign-conf-thanksLabelPage' => 'Страницата што го содржи текстот за приказ над страницата „Употреба“. $1 се заменува со јазичниот код.',
1077111129 'mwe-upwiz-campaign-conf-idFieldMaxLength' => 'Максимална должина на текстот во полето за назнака',
10772 - 'mwe-upwiz-campaign-conf-wikitextLicense' => 'Викитекст за сопствена лиценца за сопственото дело. Празно ако нема таква. $1 се заменува со јазичниот код:',
10773 - 'mwe-upwiz-campaign-conf-wikitextLicenseTemplates' => 'Шаблони за додавање кога корисникот ќе одбере сопствена лиценца (одделени со вертикална црта):',
1077411130 'mw-coolcats-confirm-new-title' => 'Потврдете нова категорија',
1077511131 'mw-coolcats-confirm-new' => 'Се чини дека сакате да додадете нова категорија насловена како „$1“. Имајте на ум:<ul><li>Категориите обично треба да се на англиски јазик.</li><li>Највеќето нови категории треба да бидат поткатегории на веќе постоечка категорија.</li></ul>Општо земено, категории треба да додаваат само стручни корисници.',
1077611132 'mw-coolcats-confirm-new-ok' => 'Сепак додај ја',
@@ -10879,7 +11235,7 @@
1088011236 'mwe-upwiz-source-thirdparty-cases' => 'ഈ സൈറ്റിന് {{PLURAL:$1|ഈ കൃതി|ഈ കൃതികൾ}} പ്രസിദ്ധീകരിക്കാനുള്ള അവകാശം എന്തുകൊണ്ടാണുള്ളതെന്ന് ഞങ്ങളോട് പറയുക:',
1088111237 'mwe-upwiz-source-thirdparty-accept' => 'ശരി',
1088211238 'mwe-upwiz-source-custom' => 'ഓരോ പ്രമാണത്തിനുമുള്ള പകർപ്പവകാശ അനുമതികളോരോന്നും അടുത്ത താളിൽ പ്രത്യേകം തിരഞ്ഞെടുക്കുക.',
10883 - 'mwe-upwiz-more-options' => 'കൂടുതൽ ഐച്ഛികങ്ങൾ...',
 11239+ 'mwe-upwiz-more-options' => 'വർഗ്ഗങ്ങളും കൂടുതൽ വിവരങ്ങളും ചേർക്കുക...',
1088411240 'mwe-upwiz-fewer-options' => 'കുറവ് ഐച്ഛികങ്ങൾ...',
1088511241 'mwe-upwiz-desc' => 'വിവരണം',
1088611242 'mwe-upwiz-desc-add-n' => 'മറ്റൊരു ഭാഷയിൽ വിവരണം ചേർക്കുക',
@@ -10930,7 +11286,7 @@
1093111287 'mwe-upwiz-tooltip-sign' => 'താങ്കൾക്ക് താങ്കളുടെ വിക്കി ഉപയോക്തൃനാമമോ താങ്കളുടെ യഥാർത്ഥ പേരോ ഉപയോഗിക്കാവുന്നതാണ്.
1093211288 ഇരു അവസരങ്ങളിലും, താങ്കളുടെ വിക്കി ഉപയോക്തൃതാളിലേയ്ക്ക് കണ്ണി ചേർക്കപ്പെടുന്നതാണ്.',
1093311289 'mwe-upwiz-tooltip-title' => 'പ്രമാണത്തിനുള്ള ചെറിയ അനന്യമായ തലക്കെട്ട്. വാക്കുകൾക്കിടയിൽ ഇടവിട്ടുള്ള ലളിതഭാഷ ഉപയോഗിക്കാം. പ്രമാണത്തിന്റെ എക്സ്റ്റെൻഷൻ ഉൾപ്പെടുത്തരുത്.',
10934 - 'mwe-upwiz-dialog-title' => 'ഏതൊരു ഭാഷയുടേയും ഏതൊരു ലിപിയിലും (UTF-8) പേരു നൽകി പ്രമാണം അപ്‌ലോഡ് ചെയ്യാം. ഉപയോഗിക്കുന്ന ഭാഷയിൽ അർത്ഥമുള്ളതും സഹായകവുമായ തലക്കെട്ടുകൾ ആയിരിക്കണം മീഡിയ പ്രമാണങ്ങളിൽ നൽകേണ്ടത്.',
 11290+ 'mwe-upwiz-dialog-title' => 'ഏതൊരു ഭാഷയുടേയും ഏതൊരു ലിപിയിലും പേരു നൽകി പ്രമാണം അപ്‌ലോഡ് ചെയ്യാം. ഉപയോഗിക്കുന്ന ഭാഷയിൽ അർത്ഥമുള്ളതും സഹായകവുമായ തലക്കെട്ടുകൾ ആയിരിക്കണം മീഡിയ പ്രമാണങ്ങളിൽ നൽകേണ്ടത്.',
1093511291 'mwe-upwiz-tooltip-description' => 'ഈ കൃതിയെക്കുറിച്ചുള്ള ശ്രദ്ധേയമായ എല്ലാം ചുരുക്കി ചേർക്കുക.
1093611292 ഒരു ഫോട്ടോയിൽ, പതിഞ്ഞിരിക്കുന്ന പ്രധാന കാര്യം, വേള, സ്ഥലം തുടങ്ങിയ വിവരങ്ങൾ ഉൾപ്പെടുത്താം.',
1093711293 'mwe-upwiz-tooltip-date' => 'ഈ കൃതി സൃഷ്ടിക്കപ്പെട്ട അല്ലെങ്കിൽ ആദ്യം പ്രസിദ്ധീകരിക്കപ്പെട്ട തീയതി ("yyyy-mm-dd" എന്ന രീതിയിൽ).',
@@ -11192,7 +11548,7 @@
1119311549 'mwe-upwiz-source-thirdparty-cases' => 'Sekarang, beritahu kami mengapa anda pasti bahawa tapak ini berhak untuk menerbitkan {{PLURAL:$1|karya|karya-karya}} ini:',
1119411550 'mwe-upwiz-source-thirdparty-accept' => 'OK',
1119511551 'mwe-upwiz-source-custom' => 'Nyatakan maklumat hak cipta untuk setiap satu fail di halaman berikutnya.',
11196 - 'mwe-upwiz-more-options' => 'pilihan lanjutan...',
 11552+ 'mwe-upwiz-more-options' => 'tambahkan kategori dan maklumat lanjut...',
1119711553 'mwe-upwiz-fewer-options' => 'lipat...',
1119811554 'mwe-upwiz-desc' => 'Keterangan',
1119911555 'mwe-upwiz-desc-add-n' => 'tambahkan keterangan dalam bahasa lain',
@@ -11381,7 +11737,6 @@
1138211738 'uploadcampaign-text' => 'Anda sedang mengubah suai kempen Alat Muat Naik Ajaib.',
1138311739 'mwe-upwiz-campaign-name' => 'Nama kempen',
1138411740 'mwe-upwiz-campaign-enabled' => 'Kempen dihidupkan',
11385 - 'mwe-upwiz-campaign-customLicense' => 'Lesen tersuai',
1138611741 'mwe-upwiz-campaign-conf-skipTutorial' => 'Langkau tutorial pelesenan',
1138711742 'mwe-upwiz-campaign-conf-autoCategories' => 'Kategori untuk ditambah fail secara automatik dan senyap (dipisahkan dengan tanda paip)',
1138811743 'mwe-upwiz-campaign-conf-defaultCategories' => 'Kategori utama untuk disenaraikan dalam tab penerangan (dipisahkan dengan tanda paip)',
@@ -11401,8 +11756,6 @@
1140211757 'mwe-upwiz-campaign-conf-headerLabelPage' => 'Laman yang mengandungi teks untuk dipaparkan di atas antara muka Alat Muat Naik Ajaib. $1 diganti dengan kod bahasa',
1140311758 'mwe-upwiz-campaign-conf-thanksLabelPage' => 'Laman yang mengandungi teks untuk dipaparkan di atas antara muka "Gunakan". $1 diganti dengan kod bahasa',
1140411759 'mwe-upwiz-campaign-conf-idFieldMaxLength' => 'Panjang maksimum teks dalam ruangan ID',
11405 - 'mwe-upwiz-campaign-conf-wikitextLicense' => 'Teks wiki untuk lesen karya sendiri yang tersuai. Dibiarkan kosong jika tiada lesen tersuai yang sedemikian. $1 digantikan dengan kod bahasa:',
11406 - 'mwe-upwiz-campaign-conf-wikitextLicenseTemplates' => 'Templat-templat untuk dibubuh ketika pengguna memilih lesen tersuai (diasingkan dengan tanda paip):',
1140711760 'mw-coolcats-confirm-new-title' => 'Sahkan kategori baru',
1140811761 'mw-coolcats-confirm-new' => 'Nampaknya anda cuba menambahkan kategori baru, "$1". Awas:<ul><li>Kategori sepatutnya dalam bahasa Inggeris.</li><li>Kategori baru selalunya patut dijadikan subkategori kepada kategori yang sedia ada.</li></ul>Secara amnya, hanya golongan pakar yang patut menambahkan kategori.',
1140911762 'mw-coolcats-confirm-new-ok' => 'Tambahkan kategori ini walau apapun',
@@ -11702,7 +12055,7 @@
1170312056 'mwe-upwiz-source-thirdparty-cases' => 'Geef hier aan waarom u zeker weet dat deze site het recht heeft om {{PLURAL:$1|dit werk|deze werken}} te publiceren:',
1170412057 'mwe-upwiz-source-thirdparty-accept' => 'OK',
1170512058 'mwe-upwiz-source-custom' => 'Lever op de volgende pagina voor ieder bestand apart auteursrechteninformatie.',
11706 - 'mwe-upwiz-more-options' => 'extra info en categoriën toevoegen...',
 12059+ 'mwe-upwiz-more-options' => 'categorieën en meer informatie toevoegen...',
1170712060 'mwe-upwiz-fewer-options' => 'minder instellingen...',
1170812061 'mwe-upwiz-desc' => 'Beschrijving',
1170912062 'mwe-upwiz-desc-add-n' => 'beschrijving in een andere taal toevoegen',
@@ -11929,12 +12282,18 @@
1193012283 'mwe-upwiz-code-unknown' => 'Ukjend mål',
1193112284 'mwe-upwiz-step-tutorial' => 'Lær',
1193212285 'mwe-upwiz-step-file' => 'Lasta opp',
11933 - 'mwe-upwiz-step-deeds' => 'Bruksløyve',
 12286+ 'mwe-upwiz-step-deeds' => 'Gjev fri rettar',
1193412287 'mwe-upwiz-step-details' => 'Skildra',
1193512288 'mwe-upwiz-step-thanks' => 'Nytta',
 12289+ 'mwe-upwiz-api-error-http' => 'Intern feil: kan ikkje kopla til tenaren.',
 12290+ 'mwe-upwiz-api-error-ok-but-empty' => 'Intern feil: ikkje noko svar frå tenaren.',
 12291+ 'mwe-upwiz-api-error-unclassified' => 'Det oppstod ein ukjend feil.',
1193612292 'mwe-upwiz-api-error-unknown-code' => 'Ukjend feil: «$1»',
1193712293 'mwe-upwiz-api-error-mustbeloggedin' => 'Du lyt vera innlogga for å lasta opp filer.',
11938 - 'mwe-upwiz-api-error-empty-file' => 'Fila du sendte var tom.',
 12294+ 'mwe-upwiz-api-error-empty-file' => 'Fila du sende var tom.',
 12295+ 'mwe-upwiz-api-error-file-too-large' => 'Fila du sende var for stor.',
 12296+ 'mwe-upwiz-api-error-filetype-missing' => 'Fila saknar ei ending.',
 12297+ 'mwe-upwiz-api-error-filetype-banned' => 'Denne filtypen er ikkje tillaten.',
1193912298 'mwe-upwiz-api-error-filename-tooshort' => 'Filnamnet er for stutt.',
1194012299 'mwe-upwiz-api-error-illegal-filename' => 'Filnamnet er ikkje tillate.',
1194112300 'mwe-upwiz-api-error-overwrite' => 'Det er ikkje tillate å skriva over filer som alt finst.',
@@ -11951,29 +12310,70 @@
1195212311 'mwe-upwiz-remove' => 'Fjerna',
1195312312 'mwe-upwiz-remove-upload' => 'Fjerna denne fila frå opplastingslista',
1195412313 'mwe-upwiz-remove-description' => 'Fjerna denne skildringa',
11955 - 'mwe-upwiz-upload' => 'Last opp',
 12314+ 'mwe-upwiz-upload' => 'Lasta opp',
1195612315 'mwe-upwiz-next-file-despite-failures' => 'Hald fram likevel',
1195712316 'mwe-upwiz-skip-tutorial-future' => 'Hoppa over dette steget i framtida',
 12317+ 'mwe-upwiz-upload-count' => '$1 av $2 {{PLURAL:$2|fil|filer}} lasta opp',
1195812318 'mwe-upwiz-progressbar-uploading' => 'lastar opp',
1195912319 'mwe-upwiz-finished' => 'Ferdig!',
11960 - 'mwe-upwiz-source-ownwork' => '{{PLURAL:$1|Denne fila|Desse filene}} er mitt eige arbeid.',
 12320+ 'mwe-upwiz-secs-remaining' => '$1 {{PLURAL:$1|sekund|sekund}} att',
 12321+ 'mwe-upwiz-source-ownwork' => '{{PLURAL:$1|Fila|Filene}} er mitt arbeid.',
 12322+ 'mwe-upwiz-source-thirdparty' => '{{PLURAL:$1|Denne fila|Desse filene}} er ikkje mitt arbeid.',
1196112323 'mwe-upwiz-source-thirdparty-accept' => 'Greitt',
11962 - 'mwe-upwiz-more-options' => 'fleire val...',
 12324+ 'mwe-upwiz-more-options' => 'legg til kategoriar og meir informasjon...',
1196312325 'mwe-upwiz-fewer-options' => 'færre val...',
1196412326 'mwe-upwiz-desc' => 'Skildring',
1196512327 'mwe-upwiz-desc-add-n' => 'legg til ei skildring på eit anna mål',
1196612328 'mwe-upwiz-desc-add-0' => 'legg til ei skildring',
11967 - 'mwe-upwiz-title' => 'Tittel',
 12329+ 'mwe-upwiz-title' => 'Namn',
1196812330 'mwe-upwiz-media-type' => 'Medietype',
 12331+ 'mwe-upwiz-date-created' => 'Oppretta dato',
1196912332 'mwe-upwiz-location' => 'Stad',
1197012333 'mwe-upwiz-copyright-info' => 'Bruksløyve',
1197112334 'mwe-upwiz-author' => 'Opphavsperson(ar)',
 12335+ 'mwe-upwiz-autoconverted' => 'Fila vart av seg sjølv gjord om til $1-formatet.',
1197212336 'mwe-upwiz-other' => 'Annan informasjon',
1197312337 'mwe-upwiz-source' => 'Kjelde',
1197412338 'mwe-upwiz-thanks-intro' => 'Takk for at du lastar opp filer!',
 12339+ 'mwe-upwiz-thanks-explain' => 'No kan du nytta {{PLURAL:$1|fila|filene}} på vevstader som Wikipedia, eller lenkja til {{PLURAL:$1|henne|dei}} på veven.',
 12340+ 'mwe-upwiz-thanks-wikitext' => '<b>For å nytta fila på ein wiki</b>, lim inn denne teksten på ei side:',
 12341+ 'mwe-upwiz-thanks-url' => '<b>For å lenkja til henne i HTML</b>, kopier denne vevadressa:',
 12342+ 'mwe-upwiz-upload-error-bad-filename-extension' => 'Wikien godtek ikkje filnamn som endar på «.$1».',
1197512343 'mwe-upwiz-upload-error-duplicate-filename-error' => 'Du lastar alt opp fila «$1»',
 12344+ 'mwe-upwiz-allowed-filename-extensions' => 'Dei tillatne filendingane er:',
 12345+ 'mwe-upwiz-help-allowed-filename-extensions' => 'Tillatne filendingar',
 12346+ 'mwe-upwiz-upload-error-duplicate' => 'Denne fila vart tidlegare lasta opp til wikien.',
 12347+ 'mwe-upwiz-upload-error-stashed-anyway' => 'Lasta opp kor som er?',
 12348+ 'mwe-upwiz-upload-error-unknown-filename-error' => 'Av ukjende grunnar me kunne ikkje lesa eller skjøna filnamnet «$1».',
 12349+ 'mwe-upwiz-ok' => 'Greitt',
 12350+ 'mwe-upwiz-cancel' => 'Bryt av',
 12351+ 'mwe-upwiz-fileexists-replace' => 'Det finst alt ei fil med namnet «$1». Byt til eit unikt namn.',
 12352+ 'mwe-upwiz-fileexists-replace-no-link' => 'Det finst alt ei fil med dette namnet.',
 12353+ 'mwe-upwiz-blacklisted' => 'Vel eit anna namn som er meir skildrande.',
 12354+ 'mwe-upwiz-thumbnail-more' => 'Auka',
 12355+ 'mwe-upwiz-overwrite' => 'Byt ut fila',
 12356+ 'mwe-upwiz-next' => 'Neste',
 12357+ 'mwe-upwiz-next-file' => 'Hald fram',
 12358+ 'mwe-upwiz-next-deeds' => 'Neste',
 12359+ 'mwe-upwiz-next-details' => 'Neste',
 12360+ 'mwe-upwiz-home' => 'Gå til heimesida åt wikien',
 12361+ 'mwe-upwiz-upload-another' => 'Lasta opp fleire flier',
 12362+ 'mwe-prevent-close' => 'Fer du bort frå sida kan du mista brigde du mogelegvis har gjort.',
 12363+ 'mwe-upwiz-files-complete' => 'Filene dine er lasta opp.',
 12364+ 'mwe-upwiz-tooltip-author' => 'Namnet på personen som tok eller måla biletet, teikna teikninga osb.',
 12365+ 'mwe-upwiz-tooltip-source' => 'Kvar den digitale fila kjem frå - kan vera ei vevadresse, ei bok eller ein publikasjon.',
1197612366 'mwe-upwiz-tooltip-categories' => 'Legg til [$1 kategoriar] til fila di for å gjera henne greiare å finna.',
1197712367 'mwe-upwiz-tooltip-more-info' => 'Lær meir.',
 12368+ 'mwe-upwiz-file-need-file' => 'Legg til ei opplasting fyrst.',
 12369+ 'mwe-upwiz-deeds-need-license' => 'Vel eit løyve.',
 12370+ 'mwe-upwiz-license-show-all' => 'Nyt eit anna løyve.',
 12371+ 'mwe-upwiz-license-show-recommended' => 'Nytt det tilrådde løyvet.',
 12372+ 'mwe-upwiz-error-signature-blank' => 'Du lyt skriva under i feltet under med anten brukarnamnet eller det røynlege namnet ditt.',
 12373+ 'mwe-upwiz-error-blank' => 'Dette feltet er påkravt.',
 12374+ 'mwe-upwiz-error-too-long' => 'Feltet er for langt.
 12375+Gjer det stuttare enn {{PLURAL:$1|eitt teikn|$1 teikn}}.',
 12376+ 'mwe-upwiz-error-too-short' => 'Feltet er for stutt.
 12377+Gjer det lengre enn $1 {{PLURAL:$1|teikn|teikn}}.',
1197812378 'mwe-upwiz-license-pd-usgov-nasa' => 'Originalverk av NASA',
1197912379 'mwe-upwiz-license-pd-ineligible' => 'For enkelt til å vera verna av opphavsrett',
1198012380 'mwe-upwiz-license-pd-ineligible-help' => 'Ver varsam med denne. Biletet lyt vera særs enkelt, som ein grøn sirkel eller ein raud firkant.',
@@ -11985,15 +12385,25 @@
1198612386 'mwe-upwiz-category-remove' => 'Fjern kategorien',
1198712387 'mwe-upwiz-thanks-caption' => 'Legg til bilettekst her',
1198812388 'mwe-upwiz-help-popup' => 'Hjelp',
 12389+ 'mwe-upwiz-help-popup-title' => 'Namn',
 12390+ 'mwe-upwiz-unparseable-filename' => 'Kunne ikkje skjøna filnamnet «$1»',
1198912391 'mwe-upwiz-image-preview' => 'Førehandsvising av bilete',
 12392+ 'mwe-upwiz-subhead-message' => 'Takk for at du nyttar det nye opplastingsverktyet vårt.',
 12393+ 'mwe-upwiz-subhead-bugs' => '[$1 Kjende vanskar]',
1199012394 'mwe-upwiz-subhead-translate' => '[$1 Hjelp til med omsetjingar]',
 12395+ 'mwe-upwiz-subhead-alt-upload' => '[$1 Attende til det gamle skjemaet]',
 12396+ 'mwe-upwiz-feedback-prompt' => '[$1 Gjev attendemelding]',
 12397+ 'mwe-upwiz-feedback-note' => 'Attendemeldinga di vil offentleggjerast på sida «[$2 $1]» i lag med brukarnamnet ditt, nettlesarversjonen din og operativsystemet ditt.',
1199112398 'mwe-upwiz-feedback-subject' => 'Emne:',
1199212399 'mwe-upwiz-feedback-message' => 'Melding:',
 12400+ 'mwe-upwiz-feedback-title' => 'Gjev attendemelding om opplastingsvegvisaren',
1199312401 'mwe-upwiz-feedback-cancel' => 'Bryt av',
 12402+ 'mwe-upwiz-feedback-submit' => 'Send attendemelding',
1199412403 'mwe-upwiz-feedback-blacklist-report-prompt' => '[$1 Send attendemelding]',
1199512404 'mwe-upwiz-feedback-blacklist-info-prompt' => '[$1 Meir informasjon]',
1199612405 'mwe-upwiz-errordialog-ok' => 'Greitt',
1199712406 'mwe-upwiz-error-nosuchcampaign' => 'Det finst ingen kampanje som heiter «$1».',
 12407+ 'mwe-upwiz-campaigns-edit' => 'Endra',
1199812408 'mwe-upwiz-campaigns-delete' => 'Slett',
1199912409 'mw-coolcats-confirm-new-title' => 'Stadfest ny kategori',
1200012410 'mw-coolcats-confirm-new-ok' => 'Legg til kategorien likevel',
@@ -12011,6 +12421,10 @@
1201212422 'uploadwizard-desc' => 'Opplastingsveiviser, utviklet for Multimedia Usability-stipendet',
1201312423 'mwe-upwiz-uploadcampaigns' => 'Opplastningskampanjer',
1201412424 'mwe-upwiz-uploadcampaign' => 'Konfigurasjon for opplastningskampanjer',
 12425+ 'right-upwizcampaigns' => 'Konfigurer kampanjer til filopplastningsveiviseren',
 12426+ 'group-upwizcampeditors' => 'Kampanjeredaktør for opplastningsveiviseren',
 12427+ 'group-upwizcampeditors-member' => 'Kampanjeredaktør for opplastningsveiviseren',
 12428+ 'grouppage-upwizcampeditors' => 'Project:Kampanjeredaktør for opplastningsveiviseren',
1201512429 'mwe-upwiz-js-off' => 'UploadWizard bruker JavaScript for et forbedret grensesnitt. Nettleseren din støtter ikke JavaScript eller har JavaScript slått av, så vi viser deg et enkelt opplastingsskjema istedet.',
1201612430 'mwe-upwiz-extension-disabled' => 'Denne siden har blitt deaktivert på grunn av midlertidige tekniske problemer. I mellomtiden kan du prøve det vanlige opplastningsskjemaet.',
1201712431 'mwe-upwiz-code-unknown' => 'Ukjent språk',
@@ -12028,20 +12442,49 @@
1202912443 'mwe-upwiz-api-error-mustbeposted' => 'Intern feil: forespørsel krever HTTP POST.',
1203012444 'mwe-upwiz-api-error-badaccess-groups' => 'Du har ikke tillatelse til å laste opp filer til denne wikien.',
1203112445 'mwe-upwiz-api-error-stashfailed' => 'Internal error: tjeneren greide ikke å lagre midlertidig fil.',
 12446+ 'mwe-upwiz-api-error-missingresult' => 'Intern feil: Kan ikke bekrefte at kopieringen var vellykket.',
 12447+ 'mwe-upwiz-api-error-missingparam' => 'Intern feil: Manglende parameter i forespørselen',
 12448+ 'mwe-upwiz-api-error-invalid-file-key' => 'Intern feil: Fil ble ikke funnet i midlertidig lagerplass',
1203212449 'mwe-upwiz-api-error-copyuploaddisabled' => 'Opplasting ved URL er deaktivert på denne tjeneren.',
1203312450 'mwe-upwiz-api-error-mustbeloggedin' => 'Du må være logget inn for å laste opp filer.',
 12451+ 'mwe-upwiz-api-error-empty-file' => 'Filen du sendte inn var tom.',
 12452+ 'mwe-upwiz-api-error-file-too-large' => 'Filen du la inn var for stor.',
1203412453 'mwe-upwiz-api-error-filetype-missing' => 'Filen mangler filendelse.',
 12454+ 'mwe-upwiz-api-error-filetype-banned' => 'Denne filtypen er ikke tillatt.',
 12455+ 'mwe-upwiz-api-error-filename-tooshort' => 'Filnavnet er for kort.',
1203512456 'mwe-upwiz-api-error-illegal-filename' => 'Filnavnet er ikke tillatt.',
 12457+ 'mwe-upwiz-api-error-verification-error' => 'Filen kan være korrupt, eller ha feil filendelse.',
 12458+ 'mwe-upwiz-api-error-hookaborted' => 'Endringen du prøvde å gjøre ble avbrutt av en utvidelsestilkobling.',
 12459+ 'mwe-upwiz-api-error-unknown-error' => 'Intern feil: Noe gikk galt ved opplastning av filen din.',
 12460+ 'mwe-upwiz-api-error-internal-error' => 'Intern feil: Noe gikk galt ved prosessering av din opplastning til wikien.',
 12461+ 'mwe-upwiz-api-error-overwrite' => 'Det er ikke tillatt å overskrive eksisterende filer.',
 12462+ 'mwe-upwiz-api-error-badtoken' => 'Intern feil: Ugyldig token.',
 12463+ 'mwe-upwiz-api-error-fetchfileerror' => 'Intern feil: Noe gikk galt ved henting av denne filen.',
 12464+ 'mwe-upwiz-api-error-duplicate' => 'Det er allerede {{PLURAL:$1|en [$2 annen fil]|flere [$2 andre filer]}} på denne siden med samme innhold.',
 12465+ 'mwe-upwiz-api-error-duplicate-popup-title' => 'Duplikat {{PLURAL:$1|fil|filer}}',
1203612466 'mwe-upwiz-api-error-unknown-warning' => 'Ukjent advarsel: $1',
 12467+ 'mwe-upwiz-help-desk' => 'Hjelp',
 12468+ 'mwe-upwiz-help-desk-url' => 'Hjelp',
1203712469 'mwe-upwiz-add-file-n' => 'Legg til enda en fil',
 12470+ 'mwe-upwiz-add-file-0-free' => 'Velg en mediefil å donere',
 12471+ 'mwe-upwiz-transport-started' => 'Starter...',
1203812472 'mwe-upwiz-uploading' => 'laster opp...',
1203912473 'mwe-upwiz-transported' => 'OK',
1204012474 'mwe-upwiz-stashed-upload' => 'OK',
 12475+ 'mwe-upwiz-getting-metadata' => 'Henter filinformasjon og forhåndsvisning',
 12476+ 'mwe-upwiz-submitting-details' => 'Sender detaljer og publiserer',
 12477+ 'mwe-upwiz-published' => 'Publisert!',
1204112478 'mwe-upwiz-failed' => 'Mislyktes.',
1204212479 'mwe-upwiz-remove' => 'Fjern',
1204312480 'mwe-upwiz-remove-upload' => 'Fjern denne filen fra opplastingslisten',
1204412481 'mwe-upwiz-remove-description' => 'Fjern denne beskrivelsen',
1204512482 'mwe-upwiz-upload' => 'Last opp',
 12483+ 'mwe-upwiz-file-all-ok' => 'Alle opplastninger var vellykket!',
 12484+ 'mwe-upwiz-file-some-failed' => 'Noen opplastninger feilet.',
 12485+ 'mwe-upwiz-file-retry' => 'Forsøk feilede opplastninger på nytt',
 12486+ 'mwe-upwiz-next-file-despite-failures' => 'Fortsette allikevel',
 12487+ 'mwe-upwiz-skip-tutorial-future' => 'Hopp over dette steget i fremtiden',
 12488+ 'mwe-upwiz-file-all-failed' => 'Ingen av opplastningene var vellykket.',
1204612489 'mwe-upwiz-upload-count' => '$1 av $2 {{PLURAL:$2|fil|filer}} lastet opp',
1204712490 'mwe-upwiz-progressbar-uploading' => 'laster opp',
1204812491 'mwe-upwiz-finished' => 'Ferdig!',
@@ -12187,13 +12630,21 @@
1218812631 );
1218912632
1219012633 /** Oriya (ଓଡ଼ିଆ)
 12634+ * @author Ansumang
1219112635 * @author Odisha1
1219212636 * @author Psubhashish
1219312637 */
1219412638 $messages['or'] = array(
1219512639 'uploadwizard' => 'ଅପଲୋଡ଼ ଉଇଜାର୍ଡ଼',
12196 - 'uploadwizard-desc' => 'ଅପଲୋଡ଼ ଉଇଜାର୍ଡ଼, ମଲ୍ଟିମିଡ଼ିଆ ବ୍ୟବହାର୍ ଗ୍ରାଣ୍ଟ ଦେଇ ତିଆରି',
 12640+ 'uploadwizard-desc' => 'ଅପଲୋଡ଼ ଉଇଜାର୍ଡ଼, ମଲ୍ଟିମିଡ଼ିଆ ବ୍ୟବହାର ଅନୁମୋଦନ ଦେଇ ତିଆରି',
 12641+ 'mwe-upwiz-uploadcampaigns' => 'ଅଭିଯାନ ଅପଲୋଡ଼ କରିବେ',
 12642+ 'mwe-upwiz-uploadcampaign' => 'ଅଭିଯାନ ସଜାଣି ଅପଲୋଡ଼ କରିବେ',
 12643+ 'right-upwizcampaigns' => 'ଅପଲୋଡ଼ ଉଇଜାର୍ଡ଼ ଅଭିଯାନ ସବୁ ସଜାଇବେ',
 12644+ 'group-upwizcampeditors' => 'ଅପଲୋଡ଼ ଉଇଜାର୍ଡ଼ ଅଭିଯାନ ସମ୍ପାଦକଗଣ',
 12645+ 'group-upwizcampeditors-member' => 'ଅପଲୋଡ଼ ଉଇଜାର୍ଡ଼ ଅଭିଯାନ ସମ୍ପାଦକ',
 12646+ 'grouppage-upwizcampeditors' => 'Project:ଅପଲୋଡ଼ ଉଇଜାର୍ଡ଼ ଅଭିଯାନ ସମ୍ପାଦକଗଣ',
1219712647 'mwe-upwiz-js-off' => 'ଅପଲୋଡ଼ ଉଇଜାର୍ଡ଼ ଏକ ଉନ୍ନତ ଇଣ୍ଟରଫେସ ସହ ଜାଭାସ୍କ୍ରିପ୍ଟ ବ୍ୟବହାରକରିଥାଏ । ଆପଣଙ୍କ ବ୍ରାଉଜର ଜାଭାସ୍କ୍ରିପ୍ଟ ବ୍ୟବହାରକୁ ଆପଣେଇ ନାହିଁ ଅବା ଜାଭାସ୍କ୍ରିପ୍ଟଟି ବନ୍ଦ କରାଯାଇଅଛି, ତେଣୁ ଆମେ ଆପଣଙ୍କୁ ସହଜ ଅପଲୋଡ଼ ଫର୍ମ ଦେଖାଉଛୁ ।',
 12648+ 'mwe-upwiz-extension-disabled' => 'କିଛି କାରିଗରି ଅସୁବିଧା ନିମନ୍ତେ ଏହି ଫୃଷ୍ଠାଟିକୁ ଅଚଳ କରିଦିଆଯାଇଅଛି । ଏହି ସମୟ ଭିତରେ ଆପଣ ସାଧାରଣ ଅପଲୋଡ଼ ଫର୍ମ ବ୍ୟବହାର କରିପାରିବେ ।',
1219812649 'mwe-upwiz-code-unknown' => 'ଅଜଣା ଭାଷା',
1219912650 'mwe-upwiz-step-tutorial' => 'ଶିଖନ୍ତୁ',
1220012651 'mwe-upwiz-step-file' => 'ଅପଲୋଡ଼ କରନ୍ତୁ',
@@ -12202,6 +12653,7 @@
1220312654 'mwe-upwiz-step-thanks' => 'ବ୍ୟବହାର',
1220412655 'mwe-upwiz-api-error-http' => 'ଭିତର ଅସୁବିଧା: ସର୍ଭର ସହ ଯୋଡ଼ି ହେଉନାହିଁ ।',
1220512656 'mwe-upwiz-api-error-ok-but-empty' => 'ଭିତର ଅସୁବିଧା: ସର୍ଭର ଠାରୁ କିଛି ଖବର ନାହିଁ ।',
 12657+ 'mwe-upwiz-api-error-unclassified' => 'ଏକ ଅଜଣା ଅସୁବିଧା ଘଟିଲା ।',
1220612658 'mwe-upwiz-api-error-unknown-code' => 'ଅଜଣା ଅସୁବିଧା: "$1"',
1220712659 'mwe-upwiz-api-error-uploaddisabled' => 'ଉଇକିରେ ଅପଲୋଡ଼ କରିବା ଅଚଳ କରାଯାଇଅଛି ।',
1220812660 'mwe-upwiz-api-error-nomodule' => 'ଭିତର ଅସୁବିଧା: ଅପଲୋଡ଼ ମୋଡୁଲ ଠିକ କରାଯାଇନାହିଁ ।',
@@ -12211,35 +12663,247 @@
1221212664 'mwe-upwiz-api-error-missingresult' => 'ଭିତର ଅସୁବିଧା: ନକଲ କରିବା ଠିକରେ ହେଲାକି ନାହିଁ ଜାଣି ପାରିଲା ନାହିଁ ।',
1221312665 'mwe-upwiz-api-error-missingparam' => 'ଭିତର ଅସୁବିଧା: ହଜିଯାଇଥିବା ପାରାମିଟର ସବୁକୁ ଅନୁରୋଧ କ୍ରମେ ଦେଖାଇଦିଆଗଲା ।',
1221412666 'mwe-upwiz-api-error-invalid-file-key' => 'ଭିତର ଅସୁବିଧା: ଫାଇଲଟି ଅସ୍ଥାୟୀ ସାଇତାଘର ଭିତରୁ ମିଳିଲାନାହିଁ ।',
 12667+ 'mwe-upwiz-api-error-copyuploaddisabled' => 'URL ଦେଇ ଅପଲୋଡ଼ କରିବା ଏହି ସର୍ଭରରେ ଅଚଳ କରାଯାଇଅଛି ।',
 12668+ 'mwe-upwiz-api-error-mustbeloggedin' => 'ଫାଇଲ ଅପଲୋଡ଼ କରିବା ନିମନ୍ତେ ଆପଣଙ୍କୁ ଲଗ ଇନ କରିବାକୁ ପଡ଼ିବ ।',
 12669+ 'mwe-upwiz-api-error-empty-file' => 'ଆପଣ ପଠାଇଥିବା ଫାଇଲଟି ଖାଲି ଅଟେ ।',
 12670+ 'mwe-upwiz-api-error-file-too-large' => 'ଆପଣ ପଠାଇଥିବା ଫାଇଲଟି ବିରାଟ ଅଟେ ।',
 12671+ 'mwe-upwiz-api-error-filetype-missing' => 'ଫାଇଲଟିର ଏକ୍ସଟେନସନ ନାହିଁ ।',
 12672+ 'mwe-upwiz-api-error-filetype-banned' => 'ଏହି ପ୍ରକାରର ଫାଇଲ ବାରଣ କରାଯାଇଅଛି ।',
 12673+ 'mwe-upwiz-api-error-filename-tooshort' => 'ଫାଇଲ ନାମଟି ଖୁବ ଛୋଟ ।',
 12674+ 'mwe-upwiz-api-error-illegal-filename' => 'ଏହି ଫାଇଲ ନାମଟି ଅନୁମୋଦିତ ନୁହେଁ ।',
 12675+ 'mwe-upwiz-api-error-verification-error' => 'ଏହି ଫାଇଲଟି ବୋଧ ହୁଏ ନଷ୍ଟ ହୋଇଯାଇଅଛି କିମ୍ବା ଭୁଲ ଏକ୍ସଟେନସନ ଦିଆଯାଇଅଛି ।',
 12676+ 'mwe-upwiz-api-error-hookaborted' => 'ଏକ ଏକ୍ସଟେନସନ ହୁକ ଦେଇ ଆପଣ କରୁଥିବା ବଦଳଟି ବନ୍ଦ କରିଦିଆଗଲା ।',
 12677+ 'mwe-upwiz-api-error-unknown-error' => 'ଆଭ୍ୟନ୍ତରୀଣ ଅସୁବିଧା: ଫାଇଲଟି ଅପଲୋଡ଼ କରିବା କାଳରେ କିଛି ଅସୁବିଧା ଘଟିଲା ।',
 12678+ 'mwe-upwiz-api-error-internal-error' => 'ଆଭ୍ୟନ୍ତରୀଣ ଅସୁବିଧା: ଏହି ଉଇକିରେ ଆପଣଙ୍କ ଅପଲୋଡ଼ କରିବା କାଳରେ କିଛି ଅସୁବିଧା ଘଟିଲା ।',
 12679+ 'mwe-upwiz-api-error-overwrite' => 'ଆଗରୁଥିବା ଏକ ଫାଇଲ ଉପରେ ମଡ଼ାଇବା ଅନୁମୋଦିତ ନୁହେଁ ।',
 12680+ 'mwe-upwiz-api-error-badtoken' => 'ଭିତର ଅସୁବିଧା: ଖରାପ ଟୋକନ ।',
 12681+ 'mwe-upwiz-api-error-fetchfileerror' => 'ଭିତର ଅସୁବିଧା: ଏହି ଫାଇଲଟି ପାଖରେ ପହଞ୍ଚିବା ବେଳେ କିଛି ଅସୁବିଧା ହେଲା ।',
 12682+ 'mwe-upwiz-api-error-duplicate' => 'ଏହି ସାଇଟରେ ସେହି ଏକା ତଥ୍ୟ ଥିବା {{PLURAL:$1| [$2 ଆଉ ଏକ ଫାଇଲ] ରହିଅଛି|[$2 ଆଉ କିଛି ଫାଇଲ] ରହି ଅଛନ୍ତି}} ।',
 12683+ 'mwe-upwiz-api-error-duplicate-popup-title' => 'ନକଲି {{PLURAL:$1|ଗୋଟି ଫାଇଲ|ଗୋଟି ଫାଇଲ}}',
 12684+ 'mwe-upwiz-api-error-duplicate-archive' => 'ସେହି ସାଇଟରେ ସେହି ଏକା ଭିତର ଭାଗ ସହିତ ଆଗରୁ {{PLURAL:$1|[$2 ଆଉ ଫାଇଲଟିଏ] ଥିଲା|[$2 ଆଉ କେତେକ ଫାଇଲ] ଥିଲା}}, କିନ୍ତୁ {{PLURAL:$1|ତାହାକୁ|ସେସବୁକୁ}} ଲିଭାଇ ଦିଆଯାଇଅଛି ।',
 12685+ 'mwe-upwiz-api-error-duplicate-archive-popup-title' => 'ଆଗରୁ ଲିଭାଯାଇଥିବା ନକଲି {{PLURAL:$1|ଗୋଟି ଫାଇଲ|ଗୋଟି ଫାଇଲ}}',
 12686+ 'mwe-upwiz-api-error-unknown-warning' => 'ଅଜଣା ଚେତାବନୀ: $1',
 12687+ 'mwe-upwiz-api-error-timeout' => 'ସର୍ଭର ଏକ ସୀମିତ କାଳ ଭିତରେ ଉତ୍ତର ଦେଲାନାହିଁ ।',
 12688+ 'mwe-upwiz-api-error-noimageinfo' => 'ଅପଲୋଡ଼ ସଫଳ ହେଲା, କିନ୍ତୁ ସର୍ଭରଟି ଆମ୍ଭଙ୍କୁ ଫାଇଲଟୀ ବାବଦରେ କିଛି ବିବରଣୀ ଦେଲା ନାହିଁ ।',
 12689+ 'mwe-upwiz-api-warning-exists' => 'ଏହି ଉଇକିରେ [$1 ଆଉ ଏକ ଫାଇଲ] ସେହି ଏକା ନାମରେ ରହିଅଛି',
 12690+ 'mwe-upwiz-api-warning-was-deleted' => 'ଆଗରୁ "$1" ନାମରେ ଏକ ଫାଇଲ ଥିଲା ଯାହାକି ଲିଭାଇଦିଆଯାଇଥିଲା, ତେଣୁ ଆପଣ ସେହି ଏକା ନାମରେ ଆଉଥରେ ଫାଇଲଟିଏ ଅପଲୋଡ଼ କରିପାରିବେ ନାହିଁ । ଦି ଆପଣଙ୍କ ଫାଇଲଟି ଅଲଗା ତେବେ ତାହାକୁ ନୂଆ ନାମରେ ନାମିତ କରନ୍ତୁ ।',
 12691+ 'mwe-upwiz-tutorial-error-localized-file-missing' => 'କ୍ଷମା କରିବେ, ଆମ୍ଭେ ଆପଣଙ୍କ ଭାଧାରେ ଶିକ୍ଷଣଟିଏ ପାଇଲୁଁ ନାହିଁ । ଇଂରାଜୀରେ ଥିବା ଶିକ୍ଷଣ ଦେଖାଯାଉଅଛି ।',
 12692+ 'mwe-upwiz-tutorial-error-file-missing' => 'କ୍ଷମା କରିବେ, ଆମ୍ଭେ କୌଣସିଟି ଶିକ୍ଷଣ ପାଇଲୁଁ ନାହିଁ ଯାହା ଏଠାରେ ରହିପାରିବ । ଦୟକରି ସିଷ୍ଟମ ପରିଛାଙ୍କ ସଙ୍ଗେ ଯୋଗାଯୋଗ କରନ୍ତୁ ।',
 12693+ 'mwe-upwiz-tutorial-error-cannot-transform' => 'କ୍ଷମା କରିବେ, ଆମ୍ଭେ ଏକ ସ୍କ୍ରିନରେ ରହିବା ଭଳି ଶିକ୍ଷଣର ପରିମୀତ ଛବିଟିଏ ପାଇପାରିଲୁ ନାହିଁ । ଏହା ଉଇକିମିଡ଼ିଆ କମନ୍ସର ଏକ ଅସ୍ଥାୟୀ ଅସୁବିଧା ହୋଇପାରେ ।',
 12694+ 'mwe-upwiz-help-desk' => 'ସହଯୋଗ',
 12695+ 'mwe-upwiz-help-desk-url' => 'ସହଯୋଗ',
 12696+ 'mwe-upwiz-add-file-n' => 'ଆଉ ଏକ ଫାଇଲ ଯୋଡ଼ିବେ',
 12697+ 'mwe-upwiz-add-file-0-free' => 'ଦାନ କରିବା ନିମନ୍ତେ ଏକ ମିଡ଼ିଆ ଫାଇଲ ବାଛନ୍ତୁ',
 12698+ 'mwe-upwiz-transport-started' => 'ଆରମ୍ଭିଲା...',
 12699+ 'mwe-upwiz-uploading' => 'ଅପଲୋଡ଼ ହେଉଛି...',
 12700+ 'mwe-upwiz-transported' => 'ଅପଲୋଡ଼ ଶେଷ ହେଲା...',
1221512701 'mwe-upwiz-stashed-upload' => 'ଠିକ ଅଛି',
 12702+ 'mwe-upwiz-getting-metadata' => 'ଫାଇଲର ବିବରଣୀ ଓ ଦେଖଣା ତିଆରି କରୁଅଛୁ...',
 12703+ 'mwe-upwiz-submitting-details' => 'ସବିଶେଷ ଦେଇ ପ୍ରକାଶ କରୁଅଛୁ...',
 12704+ 'mwe-upwiz-published' => 'ପ୍ରକାଶିତ ହେଲା!',
1221612705 'mwe-upwiz-failed' => 'ଅସଫଳ',
1221712706 'mwe-upwiz-remove' => 'ବାହାର କରିବା',
 12707+ 'mwe-upwiz-remove-upload' => 'ଅପଲୋଡ଼ ତାଲିକାରେ ଥିବା ଫାଇଲ ଭିତରୁ ଏହି ଫାଇଲଟିକୁ ବାହାର କରିଦେବେ',
 12708+ 'mwe-upwiz-remove-description' => 'ବିବରଣୀଟିକୁ ବାହାର କରିଦେବେ',
 12709+ 'mwe-upwiz-upload' => 'ଅପଲୋଡ଼ କରନ୍ତୁ',
 12710+ 'mwe-upwiz-file-all-ok' => 'ଅପଲୋଡ଼ସବୁ ସଫଳ ହେଲା!',
 12711+ 'mwe-upwiz-file-some-failed' => 'କେତେକ ଅପଲୋଡ଼ ବିଫଳ ହେଲା ।',
 12712+ 'mwe-upwiz-file-retry' => 'ବିଫଳ ଅପଲୋଡ଼କୁ ଆଉଥରେ ଅପଲୋଡ଼ କରିବା ପାଇଁ ଚେଷ୍ଟା କରିବେ',
 12713+ 'mwe-upwiz-next-file-despite-failures' => 'ଯେମିତିହେଉ ଆଗେଇ ନିଅନ୍ତୁ',
 12714+ 'mwe-upwiz-skip-tutorial-future' => 'ଭବିଷ୍ୟତରେ ଏହି ପାହାଚକୁ ଛାଡ଼ିଯାଆନ୍ତୁ',
 12715+ 'mwe-upwiz-file-all-failed' => 'କୌଣସିଟି ଅପଲୋଡ଼ ସଫଳ ହେଲାନାହିଁ ।',
 12716+ 'mwe-upwiz-upload-count' => '$2 ର $1 {{PLURAL:$2|ଗୋଟି ଫାଇଲ|ଗୋଟି ଫାଇଲ}} ଅପଲୋଡ଼ କରାଗଲା',
 12717+ 'mwe-upwiz-progressbar-uploading' => 'ଅପଲୋଡ଼ କରୁଅଛୁଁ',
 12718+ 'mwe-upwiz-finished' => 'ଶେଷହେଲା!',
 12719+ 'mwe-upwiz-secs-remaining' => '$1 {{PLURAL:$1|ସେକେଣ୍ଡ|ସେକେଣ୍ଡ}} ବଳକା ଅଛି',
 12720+ 'mwe-upwiz-mins-secs-remaining' => '$1 {{PLURAL:$1|ମିନିଟ|ମିନିଟ}} $2 {{PLURAL:$2|ସେକେଣ୍ଡ|ସେକେଣ୍ଡ}} ବଳକା ଅଛି',
 12721+ 'mwe-upwiz-hrs-mins-secs-remaining' => '$1 {{PLURAL:$1|ଘଣ୍ଟା|ଘଣ୍ଟା}} $2 {{PLURAL:$2|ମିନିଟ|ମିନିଟ}} $3 {{PLURAL:$3|ସେକେଣ୍ଡ|ସେକେଣ୍ଡ}} ବଳକା ଅଛି',
 12722+ 'mwe-upwiz-deeds-macro-prompt' => 'ଏହି ସାଇଟରେ ଆପଣଙ୍କୁ {{PLURAL:$1|ଏହି କାମଟି|ଏହି କାମମାନଙ୍କ}} ନିମନ୍ତେ ସତ୍ଵାଧିକାର ତଥ୍ୟ ଦେବାକୁ ପଡ଼ିବ, ଯାହାଫଳରେ ସଭିଏଁ ଆଇନଗତ ଭାବରେ {{PLURAL:$1|ଏହାକୁ|ଏମାନଙ୍କୁ}} ପୁନବ୍ୟବହାର କରିପାରିବେ ।',
 12723+ 'mwe-upwiz-deeds-custom-prompt' => 'କିମ୍ବା:',
 12724+ 'mwe-upwiz-source-ownwork' => '{{PLURAL:$1|ଏହି ଫାଇଲଟି|ଏହି ଫାଇଲସବୁ}} ମୋର ଆପଣା କାମ ଅଟନ୍ତି ।',
 12725+ 'mwe-upwiz-source-ownwork-assert-any-license' => 'ମୁଁ, $2, {{PLURAL:$1|ଏହି କାମର|ଏହି କାମମାନଙ୍କର}} ସତ୍ଵାଧିକାରୀ, ଏଠାରେ ଅପରିବର୍ତ୍ତନୀୟ ଭାବରେ ଯେକୌଣସି କାମରେ ସଭିଙ୍କୁ {{PLURAL:$1|ଏହି କାମର|ଏହି କାମମାନଙ୍କର}} ବ୍ୟବହାର, ବଦଳ ଓ ପୁନବଣ୍ଟନ ଲାଗି ଅନୁମତି ଦେଉଅଛି ଓ ସେଥିସକାଶେ {{PLURAL:$1|ତାହାକୁ|ସେମାନଙ୍କୁ}} ତଳଲିଖିତ ନିୟମାବଳି ଅଧୀନରେ ପ୍ରକାଶିତ କରୁଅଛି:',
 12726+ 'mwe-upwiz-source-ownwork-assert' => 'ମୁଁ, $2, {{PLURAL:$1|ଏହି କାମର|ଏହି କାମମାନଙ୍କର}} ସତ୍ଵାଧିକାରୀ, ଯେତେ ଯାଏଁ ମୋତେ କାମର ଶ୍ରେୟ ଦିଆଯାଉଥିବ ସେତେଯାଏଁ ଏଠାରେ ଅପରିବର୍ତ୍ତନୀୟ ଭାବରେ ଯେକୌଣସି କାମରେ ସଭିଙ୍କୁ {{PLURAL:$1|ଏହି କାମର|ଏହି କାମମାନଙ୍କର}} ବ୍ୟବହାର ଲାଗି ଅନୁମତି ଦେଉଅଛି ।',
 12727+ 'mwe-upwiz-source-ownwork-assert-custom' => 'ମୁଁ, $2, {{PLURAL:$1|ଏହି କାମର|ଏହି କାମମାନଙ୍କର}} ସତ୍ଵାଧିକାରୀ, ଏଠାରେ ଅପରିବର୍ତ୍ତନୀୟ ଭାବରେ ଯେକୌଣସି କାମରେ ସଭିଙ୍କୁ {{PLURAL:$1|ଏହି କାମ|ଏହି କାମମାନ}} ତଳଲିଖିତ ଲାଇସେନ୍ସ ଅଧୀନରେ ପ୍ରକାଶିତ କରୁଅଛି:',
 12728+ 'mwe-upwiz-source-ownwork-assert-note' => 'ଏହାର ଅର୍ଥ ଆପଣ ଆପଣା କାମ/କାମମାନ ତଳଲିଖିତ ଲାଇସେନ୍ସ ଅଧିନରେ ପ୍ରକାଶିତ କଲେ: $1',
 12729+ 'mwe-upwiz-source-permission' => 'ଗଢ଼ାଳି ଆପଣଙ୍କୁ ତାଙ୍କ କାମମାନ ଅପଲୋଡ଼ କରିବା ଲାଗି ଖୋଲାଖୋଲି ଅନୁମତି ଦେଇଅଛନ୍ତି',
 12730+ 'mwe-upwiz-source-thirdparty' => '{{PLURAL:$1|ଏହି ଫାଇଲଟି|ଏହି ଫାଇଲସବୁ}} ମୋର ଆପଣା କାମ ନୁହଁନ୍ତି ।',
 12731+ 'mwe-upwiz-source-thirdparty-intro' => 'ଆପଣ ଏହି ଫାଇଲ ସବୁ ଯେଉଁଠାରୁ ପାଇଲେ ସେଠାକାର ଠିକଣା ଦିଅନ୍ତୁ ।',
 12732+ 'mwe-upwiz-source-thirdparty-custom-multiple-intro' => 'ଯଦି ସବୁ ଫାଇଲର ସମାନ ମୂଳାଧାର, ଗଢ଼ାଳି ଓ ସତ୍ଵାଧିକାର ସ୍ଥିତି ସମାନ ଥାଏ, ତେବେ ସେସବୁକୁ ଆପଣ ଏକାସଙ୍ଗେ ଅପଲୋଡ଼ କରିପାରିବେ ।',
 12733+ 'mwe-upwiz-source-thirdparty-license' => '{{PLURAL:$1|ଏହି କାମ|ଏହି କାମସବୁ}}ର ସତ୍ଵାଧିକାରୀ {{PLURAL:$1|ତାହାକୁ|ସେସବୁକୁ}} ଏହି ଲାଇସେନ୍ସରେ ପ୍ରକାଶ କଲେ:',
 12734+ 'mwe-upwiz-source-thirdparty-cases' => 'ଏବେ ଆମକୁ କହନ୍ତୁ କାହିଁକି ଏହି ସାଇଟଟିର {{PLURAL:$1|ଏହି କାମ|ଏହି କାମସବୁ}}କୁ ପ୍ରକାଶନ କରିବାର ଅଧିକାର ରହିଅଛି :',
1221812735 'mwe-upwiz-source-thirdparty-accept' => 'ଠିକ ଅଛି',
 12736+ 'mwe-upwiz-source-custom' => 'ଆସନ୍ତା ପୃଷ୍ଠାରେ ଗୋଟେ ଗୋଟେ କରି ପ୍ରତିଟି ଫାଇଲର ସତ୍ଵାଧିକାର ବିବରଣୀ ଦେବେ ।',
 12737+ 'mwe-upwiz-more-options' => 'ଅଧିକ ଶ୍ରେଣୀ ଓ ସୂଚନା ଯୋଡ଼ିବେ...',
 12738+ 'mwe-upwiz-fewer-options' => 'ଅଳ୍ପ ବିକଳ୍ପ....',
1221912739 'mwe-upwiz-desc' => 'ବିବରଣୀ',
 12740+ 'mwe-upwiz-desc-add-n' => 'ଏକ ଅଲଗା ଭାଷାରେ ବିବରଣୀ ଯୋଡ଼ିବେ',
 12741+ 'mwe-upwiz-desc-add-0' => 'ବିବରଣୀଟିଏ ଯୋଡ଼ନ୍ତୁ',
1222012742 'mwe-upwiz-title' => 'ଶିରୋନାମା',
 12743+ 'mwe-upwiz-media-type' => 'ମିଡ଼ିଆ ପ୍ରକାର',
 12744+ 'mwe-upwiz-date-created' => 'ତାରିଖ ତିଆରିହେଲା',
1222112745 'mwe-upwiz-location' => 'ଅବସ୍ଥାନ',
 12746+ 'mwe-upwiz-copyright-info' => 'ପ୍ରକାଶ ଅଧିକାର',
 12747+ 'mwe-upwiz-author' => 'ଲେଖକ (ଗଣ)',
 12748+ 'mwe-upwiz-autoconverted' => 'ଏହି ଫାଇଲଟି ଆପେଆପେ $1 ଫର୍ମାଟକୁ ରୂପାନ୍ତରିତ ହୋଇଗଲା',
 12749+ 'mwe-upwiz-other' => 'ବାକି ବିବରଣୀ',
1222212750 'mwe-upwiz-source' => 'ଉତ୍ସ',
 12751+ 'mwe-upwiz-thanks-intro' => 'ଅପଲୋଡ଼ କରିବା ନିମନ୍ତେ ଧନ୍ୟବାଦ!',
 12752+ 'mwe-upwiz-thanks-explain' => 'ଆପଣ ଏବେ {{PLURAL:$1|ଏହି ଫାଇଲଟି|ଏହି ଫାଇଲସବୁ}} ଉଇକିପିଡ଼ିଆ ଭଳି ସାଇଟରେ ବ୍ୟବହାର କରିପାରିବେ, କିମ୍ବା ୱେବରେ {{PLURAL:$1|ଏହାକୁ|ଏସବୁକୁ}} ଲିଙ୍କଦେଇ ପାରିବେ ।',
 12753+ 'mwe-upwiz-thanks-wikitext' => '<b>ଏକ ଉଇକିରେ ବ୍ୟବହାର ହେବାପାଇଁ</b>, ଏହି ଲେଖାକୁ ଏକ ପୃଷ୍ଠାକୁ ନକଲ କରିନିଅନ୍ତୁ:',
 12754+ 'mwe-upwiz-thanks-url' => '<b>HTMLରେ ଏହାକୁ ଯୋଡ଼ିବା ନିମନ୍ତେ</b>, ଏହି URL ଠିକଣାଟି ନକଲ କରିବେ:',
 12755+ 'mwe-upwiz-upload-error-bad-filename-extension' => 'ଏହି ଉଇକି ".$1" ରେ ସରୁଥିବା ଫଳ ନାମ ସବୁକୁ ଗ୍ରହଣ କରିନଥାଏ ।',
 12756+ 'mwe-upwiz-upload-error-bad-extension-video-firefogg' => 'ଆପଣ ଅପଲୋଡ଼ କରିବାକୁ ବାଛିଥିବା ଭିଡ଼ିଓ ଫାଇଲଟି ଏକ ମୁକ୍ତ ଫର୍ମାଟରେ ନାହିଁ ।
 12757+ଆପଣା ଫାଇଲଟିକୁ ଆପେଆପେ ରୂପାନ୍ତର କରିବା ନିମନ୍ତେ ଆପଣ ଏକ ଫାୟାରଫକ୍ସ ଏକ୍ସଟେନସନ [$1 Firefogg ] ଇନଷ୍ଟଲ କରିପାରିବେ କିମ୍ବା ଏହି ଫାଇଲଟିକୁ ଏକ ମୁକ୍ତ ଫର୍ମାଟକୁ ରୂପନର କରିବା ପାଇଁ ଅଲଗା [$2 ରୂପାନ୍ତରଣ ବିକଳ୍ପ] ବ୍ୟବହାର କରିପାରିବେ ।',
 12758+ 'mwe-upwiz-upload-error-bad-filename-no-extension' => 'ଏହି ଉଇକି ପାଇଁ ଫାଇଲ ନାମ ଶେଷରେ ".JPG" ଥିବା ଫାଇଲ ଦରକାର ।',
 12759+ 'mwe-upwiz-upload-error-duplicate-filename-error' => 'ଆପଣ ଇତିମଧ୍ୟରେ "$1" ଫାଇଲଟି ଅପଲୋଡ଼ କଲେଣି ।',
 12760+ 'mwe-upwiz-allowed-filename-extensions' => 'ଅନୁମୋଦିତ ଏକ୍ସଟେନସନସବୁ ହେଲା:',
 12761+ 'mwe-upwiz-help-allowed-filename-extensions' => 'ଅନୁମୋଦିତ ଫାଇଲ ନାମ ଏକ୍ସଟେନସନ',
 12762+ 'mwe-upwiz-upload-error-duplicate' => 'ଫାଇଲଟି ଆଗରୁ ଏହି ଉଇକିରେ ଅପଲୋଡ କରାଯାଇଅଛି ।',
 12763+ 'mwe-upwiz-upload-error-stashed-anyway' => 'ଯେମିତି ବି ହେଉ ଅପଲୋଡ଼ କରିଦେବେ?',
 12764+ 'mwe-upwiz-upload-error-unknown-filename-error' => 'ଅଜଣା କାରଣ ନିମନ୍ତେ ଆମ୍ଭେ "$1" ଫାଇଲ ନାମଟି ପଢ଼ି ବା ବୁଝି ପାରିଲୁଁ ନାହିଁ ।',
1222312765 'mwe-upwiz-ok' => 'ଠିକ ଅଛି',
1222412766 'mwe-upwiz-cancel' => 'ନାକଚ',
 12767+ 'mwe-upwiz-fileexists-replace' => 'ଆଗରୁ "$1"ନାମରେ ଫାଇଲଟିଏ ଅଛି । ଦୟାକରି ପୁରା ନିଆରା ବା ଅଲଗା ନାମଟିଏ ଦିଅନ୍ତୁ ।',
 12768+ 'mwe-upwiz-fileexists' => 'ଏହି ନାମରେ ଆଗରୁ ଫାଇଲଟିଏ ଅଛି ।
 12769+ଆପଣ ସତରେ ଏହାକୁ ବଦଳାଇବାକୁ ଚାହାନ୍ତି କି ନାହିଁ ଜାଣି ନଥିଲେ ଦୟାକରି <b><tt>$1</tt></b> ଦେଖନ୍ତୁ ।',
 12770+ 'mwe-upwiz-fileexists-replace-on-page' => 'ଏହି ନାମରେ ଆଗରୁ ଫାଇଲଟିଏ ରହିଅଛି । ଯଦି ଆପଣ ଏହାକୁ ପ୍ରତିବଦଳ କରିବାକୁ ଚାହାନ୍ତି ତେବେ [$2 $1] ନିମନ୍ତେ ପୃଷ୍ଠାକୁ ଯାଇ ସେଠାରେ ପ୍ରତିବଦଳ କରନ୍ତୁ ।',
 12771+ 'mwe-upwiz-fileexists-replace-no-link' => 'ଏହି ନାମରେ ଆଗରୁ ଫାଇଲଟିଏ ରହିଅଛି ।',
 12772+ 'mwe-upwiz-blacklisted' => 'ଦୟାକରି ଏକ ଅଲଗା, ବିବରଣୀ ଶିରୋନାମାରେ ରଖିବେ ।',
1222512773 'mwe-upwiz-thumbnail-more' => 'ବଡ଼କର',
12226 - 'mwe-upwiz-next' => 'ପରବର୍ତ୍ତୀ',
 12774+ 'mwe-upwiz-overwrite' => 'ଫାଇଲ ପ୍ରତିବଦଳ କରିବେ',
 12775+ 'mwe-upwiz-next' => 'ପର',
1222712776 'mwe-upwiz-next-file' => 'ଚାଲୁରଖ',
12228 - 'mwe-upwiz-next-deeds' => 'ପରବର୍ତ୍ତୀ',
12229 - 'mwe-upwiz-next-details' => 'ପରବର୍ତ୍ତୀ',
 12777+ 'mwe-upwiz-next-deeds' => 'ପର',
 12778+ 'mwe-upwiz-next-details' => 'ପର',
 12779+ 'mwe-upwiz-home' => 'ଉଇକି ପ୍ରଧାନ ପୃଷ୍ଠାକୁ ଯିବେ',
 12780+ 'mwe-upwiz-upload-another' => 'ଅଧିକ ଫାଇଲ ଅପଲୋଡ଼ କରିବେ',
 12781+ 'mwe-prevent-close' => 'ଏହି ପୃଷ୍ଠାକୁ ଛାଡ଼ିଚାଲିଗଲେ ଆପଣ ବୋଧହୁଏ କରିଥିବା ବଦଳ ସବୁ ହରାଇ ପାରନ୍ତି ।',
 12782+ 'mwe-upwiz-prevent-close' => 'ଆପଣ {{PLURAL:$1|ଏହି ଫାଇଲ|ଏହି ଫାଇଲସବୁ}} ଏବେ ଯାଏଁ ଅପଲୋଡ଼ ଓ ପ୍ରକାଶ କରିନାହାନ୍ତି ।',
 12783+ 'mwe-upwiz-files-complete' => 'ଆପଣଙ୍କ ଫାଇଲସବୁ ଅପଲୋଡ଼ ହୋଇଗଲା!',
 12784+ 'mwe-upwiz-tooltip-author' => 'ଏହି ଫଟୋ ନେଇଥିବା ବା ଛବି ଆଙ୍କିଥିବା ବ୍ୟକ୍ତିର ନାମ, ଆଦି ।',
 12785+ 'mwe-upwiz-tooltip-source' => 'ଡିଜିଟାଲ ଫାଇଲଟି କେଉଁଠାରୁ ଆସିଛି - ଏହା ଏକ URL, ବହି ବା ପ୍ରକାଶନ ହୋଇଥାଇପାରେ ।',
 12786+ 'mwe-upwiz-tooltip-sign' => 'ଆପଣ ନିଜର ଉଇକି ଇଉଜର ନାମ ଓ ପ୍ରକୃତ ନାମ ବ୍ୟବହାର କରିପାରିବେ ।
 12787+ଉଭୟ ଜାଗାରେ, ଏହା ଆପଣଙ୍କର ଉଇକି ସଭ୍ୟ ଫରଦକୁ ବାଟ କଢ଼ାଇ ନେବ ।',
 12788+ 'mwe-upwiz-tooltip-title' => 'ଫାଇଲଟି ପାଇଁ ଏକ ନିଆରା ବିବରଣୀ । ଆପଣ ଏହାକୁ ସରଳ ଭାଷାରେ ଜାଗାଦେଇ ଲେଖିପାରିବେ ।ଫାଇଲ ଏକ୍ସଟେନସନ ଯୋଡ଼ନ୍ତୁ ନାହିଁ ।',
 12789+ 'mwe-upwiz-dialog-title' => 'ଫାଇଲସବୁ କୌଣସି ବି ଭାଷାରେ ଅପଲୋଡ଼ କରାଯାଇପାରିବ । ବଛାଯାଇଥିବା ଭାଷାରେ ମିଡ଼ିଆ ଫାଇଲର ନାମ ସଠିକ ଓ ସହାୟକ ହୋଇଥିବା ଦରକାର ।',
 12790+ 'mwe-upwiz-tooltip-description' => 'ଏହି କାମଟି ବାବଦରେ ସଂକ୍ଷେପରେ କିଛି ବୁଝାଇ ଲେଖନ୍ତୁ ।
 12791+ଏକ ଫଟୋ ପାଇଁ, ମୁଳ ଜିନିଷ, ଘଟଣାବଳୀ ଓ ଜାଗା ବାବଦରେ ଲେଖନ୍ତୁ ।',
 12792+ 'mwe-upwiz-tooltip-date' => 'ଏହି କାମ ତିଆରି ହୋଇଥିବା ବା ପ୍ରକାଶ ପାଇଥିବା ତାରିଖ (YYYY-MM-DD format) ।',
 12793+ 'mwe-upwiz-tooltip-categories' => 'ଖୋଜିବାରେ ସୁବିଧା କରିବା ନିମନ୍ତେ ଆପଣଙ୍କ ଫାଇଲରେ [$1 ଗୋଟି ଶ୍ରେଣୀ] ଯୋଡ଼ିବେ ।',
 12794+ 'mwe-upwiz-tooltip-other' => 'ଆପଣ ଏଥିରେ ଆଉକିଛି ଯୋଡ଼ିବାକୁ - ଯଥା, ଭୌଗଳିକ ଦିଗବାରେଣି, ବାକି ସଙ୍କଳନ ସହ ଆଦି ଚାହିଁପାରନ୍ତି ।',
 12795+ 'mwe-upwiz-tooltip-more-info' => 'ଅଧିକ ଜାଣନ୍ତୁ ।',
 12796+ 'mwe-upwiz-file-need-file' => 'ଦୟାକରି ଏକ ଅପଲୋଡ଼ ଯୋଡ଼ିବେ ।',
 12797+ 'mwe-upwiz-deeds-need-deed' => 'ଦୟାକରି ଜଣାନ୍ତୁ ଆପଣ {{PLURAL:$1|ଏହି ଫାଇଲଟି|ଏହି ଫାଇଲଗୁଡ଼ିକ}} କେଉଁଠାରୁ ପାଇଲେ ଓ ତାହା ବିକଳ୍ପମାନଙ୍କ ଭିତରୁ ବାଛି ଏହି ସାଇଟଟି କିପରି {{PLURAL:$1|ତାହାକୁ|ସେସବୁକୁ}} ବ୍ୟବହାର କରିପାରିବ ।',
 12798+ 'mwe-upwiz-deeds-need-license' => 'ଦୟାକରି ଲାଇସେନ୍ସଟିଏ ଦିଅନ୍ତୁ ।',
 12799+ 'mwe-upwiz-license-show-all' => 'ଅଲଗା ଲାଇସେନ୍ସ ବ୍ୟବହାର କରିବେ',
 12800+ 'mwe-upwiz-license-show-recommended' => 'ଉପଯୁକ୍ତ ଲାଇସେନ୍ସ ବ୍ୟବହାର କରିବେ',
 12801+ 'mwe-upwiz-error-signature-blank' => 'ଆପଣ ତଳେ ଥିବା ଘରେ ନିଜର ଇଉଜର ନାମ ବା ପ୍ରକୃତ ନାମ ଦେଇ ନିହାତି ଦସ୍ତଖତ କରିବେ ।',
 12802+ 'mwe-upwiz-error-signature-too-long' => 'ଆପଣଙ୍କ ଦସ୍ତଖତ ଖୁବ ଲମ୍ବା ।
 12803+ଏହାକୁ $1 {{PLURAL:$1|ଗୋଟି ଅକ୍ଷର|ଗୋଟି ଅକ୍ଷର}}ରୁ ଛୋଟ କରିବେ ।',
 12804+ 'mwe-upwiz-error-signature-too-short' => 'ଆପଣଙ୍କ ଦସ୍ତଖତ ଖୁବ ଛୋଟ ।
 12805+ଏହାକୁ $1 {{PLURAL:$1|ଗୋଟି ଅକ୍ଷର|ଗୋଟି ଅକ୍ଷର}}ରୁ ଲମ୍ବା କରିବେ ।',
 12806+ 'mwe-upwiz-error-signature-bad-chars' => 'ଆପଣଙ୍କ ଦସ୍ତଖତରେ ଥିବା ସଙ୍କେତଗୁଡ଼ିକ ଅନୁମୋଦିତ ନୁହେଁ ।
 12807+ଦୟାକରି ଏଠାରେ ଉଇକିଟେକ୍ସ୍ଟ ବା HTML ବ୍ୟବହାର ନକରି, କେବଳ ଇଉଜର ନାମ ବା ପ୍ରକୃତ ନାମ ବ୍ୟବହାର କରନ୍ତୁ ।',
 12808+ 'mwe-upwiz-error-blank' => 'ଏହି ସ୍ଥାନ ପୂରଣ ହେବା ଦରକାର ।',
 12809+ 'mwe-upwiz-error-too-long' => 'ଏହି ସ୍ଥାନଟି ଖୁବ ଲମ୍ବା ।
 12810+ଏହି ନିବେଶଟି $1 {{PLURAL:$1|ଗୋଟି ଅକ୍ଷର|ଗୋଟି ଅକ୍ଷର}}ରୁ ଛୋଟ କରିବେ ।',
 12811+ 'mwe-upwiz-error-too-short' => 'ଏହି ସ୍ଥାନଟି ଖୁବ ଛୋଟ ।
 12812+ଏହି ନିବେଶଟି $1 {{PLURAL:$1|ଗୋଟି ଅକ୍ଷର|ଗୋଟି ଅକ୍ଷର}}ରୁ ଲମ୍ବା କରିବେ ।',
 12813+ 'mwe-upwiz-error-bad-chars' => 'ଏହି ସ୍ଥାନରେ ଥିବା ସଙ୍କେତଗୁଡ଼ିକ ଅନୁମୋଦିତ ନୁହେଁ ।
 12814+ଦୟାକରି ଏଠାରେ ଉଇକିଟେକ୍ସ୍ଟ ବା HTML ବ୍ୟବହାର କରନ୍ତୁ ନାହିଁ ।',
 12815+ 'mwe-upwiz-error-date' => 'ଦୟାକରି ଏହି YYYY-MM-DD ସଜାଣିରେ ସଠିକ ତାରିଖଟିଏ ଦିଅନ୍ତୁ, ବା ପପଅପ ପଞ୍ଜିକାରୁ ତାରିଖଟିଏ ବାଛନ୍ତୁ ।',
 12816+ 'mwe-upwiz-error-title-blacklisted' => 'ଏହି ନାମଟିରେ କିଛି ଅଦରକାରୀ ଲେଖା ଅଛି । ଦୟାକରି ସଂଶୋଧନ କରିବେ ।',
 12817+ 'mwe-upwiz-error-title-badchars' => 'ଏହି ନାମଟିରେ କିଛି ଅଦରକାରୀ ଅକ୍ଷର ରହିଛି । ଦୟାକରି ହଟାଇ ଦେବେ ।',
 12818+ 'mwe-upwiz-error-title-senselessimagename' => 'ଦୟାକରି ଏହି ନାମଟିକୁ ଅଧିକ ବୁଝାଯିବା ଭଳି ଲେଖନ୍ତୁ ।',
 12819+ 'mwe-upwiz-error-title-double-apostrophe' => 'ଏହି ଶିରୋନାମାରେ ଦୁଇଟି ଉପର କମା (ଆପୋଷ୍ଟଫ) ଅଛି; ତାହାକୁ ବାହାର କରିଦେବେ ।',
 12820+ 'mwe-upwiz-error-title-extension' => 'ଆପଣଙ୍କୁ ଫାଇଲ ଏକ୍ସଟେନସନ ଦେବାକୁ ହେବନାହିଁ । କେବଳ ଏକ ମଣିଷ ଦେଇ ପଢ଼ାଯାଇପାରିବା ନାମ ଦେଇଦିଅନ୍ତୁ, ଆମ୍ଭ ଆପ୍ଲିକେସନ ବାକିସବୁ ସମ୍ଭାଳିନେବ ।',
 12821+ 'mwe-upwiz-license-cc-by-sa-3.0' => 'କ୍ରିଏଟିଭ କମନ୍ସ ଆଟ୍ରିବୁସନ ସେଆର ଏଲାଇକ ୩.୦',
 12822+ 'mwe-upwiz-license-cc-by-sa-3.0-at' => 'କ୍ରିଏଟିଭ କମନ୍ସ ଆଟ୍ରିବୁସନ ସେଆର ଏଲାଇକ ୩.୦ ଅଷ୍ଟ୍ରିଆ',
 12823+ 'mwe-upwiz-license-cc-by-sa-3.0-de' => 'କ୍ରିଏଟିଭ କମନ୍ସ ଆଟ୍ରିବୁସନ ସେଆର ଏଲାଇକ ୩.୦ ଜର୍ମାନୀ',
 12824+ 'mwe-upwiz-license-cc-by-sa-3.0-ee' => 'କ୍ରିଏଟିଭ କମନ୍ସ ଆଟ୍ରିବୁସନ ସେଆର ଏଲାଇକ ୩.୦ ଏସ୍ତୋନିଆ',
 12825+ 'mwe-upwiz-license-cc-by-sa-3.0-es' => 'କ୍ରିଏଟିଭ କମନ୍ସ ଆଟ୍ରିବୁସନ ସେଆର ଏଲାଇକ ୩.୦ ସ୍ପେନ',
 12826+ 'mwe-upwiz-license-cc-by-sa-3.0-hr' => 'କ୍ରିଏଟିଭ କମନ୍ସ ଆଟ୍ରିବୁସନ ସେଆର ଏଲାଇକ ୩.୦ କ୍ରୋଏସିଆ',
 12827+ 'mwe-upwiz-license-cc-by-sa-3.0-lu' => 'କ୍ରିଏଟିଭ କମନ୍ସ ଆଟ୍ରିବୁସନ ସେଆର ଏଲାଇକ ୩.୦ ଲକ୍ସମ୍ବର୍ଗ',
 12828+ 'mwe-upwiz-license-cc-by-sa-3.0-nl' => 'କ୍ରିଏଟିଭ କମନ୍ସ ଆଟ୍ରିବୁସନ ସେଆର ଏଲାଇକ ୩.୦ ନେଦରଲାଣ୍ଡ୍ସ',
 12829+ 'mwe-upwiz-license-cc-by-sa-3.0-no' => 'କ୍ରିଏଟିଭ କମନ୍ସ ଆଟ୍ରିବୁସନ ସେଆର ଏଲାଇକ ୩.୦ ନରବେ',
 12830+ 'mwe-upwiz-license-cc-by-sa-3.0-pl' => 'କ୍ରିଏଟିଭ କମନ୍ସ ଆଟ୍ରିବୁସନ ସେଆର ଏଲାଇକ ୩.୦ ପୋଲାଣ୍ଡ',
 12831+ 'mwe-upwiz-license-cc-by-sa-3.0-ro' => 'କ୍ରିଏଟିଭ କମନ୍ସ ଆଟ୍ରିବୁସନ ସେଆର ଏଲାଇକ ୩.୦ ରୋମାନିଆଁ',
 12832+ 'mwe-upwiz-license-cc-by-3.0' => 'କ୍ରିଏଟିଭ କମନ୍ସ ଆଟ୍ରିବୁସନ ୩.୦',
 12833+ 'mwe-upwiz-license-cc-by-sa-2.5' => 'କ୍ରିଏଟିଭ କମନ୍ସ ଆଟ୍ରିବୁସନ ସେଆର ଏଲାଇକ ୨.୫',
 12834+ 'mwe-upwiz-license-cc-by-2.5' => 'କ୍ରିଏଟିଭ କମନ୍ସ ଆଟ୍ରିବୁସନ ୨.୫',
 12835+ 'mwe-upwiz-license-cc-by-sa-2.0' => 'କ୍ରିଏଟିଭ କମନ୍ସ ଆଟ୍ରିବୁସନ ସେଆର ଏଲାଇକ ୨.୦',
 12836+ 'mwe-upwiz-license-cc-by-2.0' => 'କ୍ରିଏଟିଭ କମନ୍ସ ଆଟ୍ରିବୁସନ ୨.୦',
 12837+ 'mwe-upwiz-license-cc-zero' => 'କ୍ରିଏଟିଭ କମନ୍ସ CCO ଛାଡ଼ (ସାର୍ବଜନିକ ଡୋମେନ)',
 12838+ 'mwe-upwiz-license-fal' => 'ଫ୍ରି ଆର୍ଟ ଲାଇସେନ୍ସ',
 12839+ 'mwe-upwiz-license-own-pd' => 'ସାର୍ବଜନିକ ଡୋମେନ (କ୍ରିଏଟିଭ କମନ୍ସ ଜିରୋ ଲାଇସେନ୍ସ ଦେଇ ସବୁ ସତ୍ଵ ଛାଡ଼ କରାଯାଇଅଛି)',
 12840+ 'mwe-upwiz-license-pd-old-100' => '୧୦୦ ବର୍ଷ ଆଗରୁ ଗଢ଼ାଳିଙ୍କ ଦେହାନ୍ତ ହୋଇଯାଇଛି',
 12841+ 'mwe-upwiz-license-pd-old' => '୭୦ ବର୍ଷ ଆଗରୁ ଗଢ଼ାଳିଙ୍କ ଦେହାନ୍ତ ହୋଇଯାଇଛି',
 12842+ 'mwe-upwiz-license-pd-art' => 'ବୟସ ପାଇଁ ଥିବା ପବ୍ଲିକ ଡୋମେନରେ ଥିବା ଯୋଗୁଁ ଏହି କଳାକୃତିର ପୁନବ୍ୟବହାର',
 12843+ 'mwe-upwiz-license-pd-us' => 'ଯୁକ୍ତରାଷ୍ଟ୍ର ଆମେରିକାରେ ୧୯୨୩ରେ ପ୍ରଥମ ଥର ପ୍ରକାଶିତ ହୋଇଥିଲା',
 12844+ 'mwe-upwiz-license-pd-usgov' => 'ଯୁକ୍ତରାଷ୍ଟ୍ର ଆମେରିକା ସରକାରଙ୍କର ମୂଳ କାମ',
 12845+ 'mwe-upwiz-license-pd-usgov-nasa' => 'ନାସାର ମୂଳ କାମ',
 12846+ 'mwe-upwiz-license-pd-usgov-military-navy' => 'ଯୁକ୍ତରାଷ୍ଟ୍ର ଆମେରିକା ନୌବାହିନୀର ମୂଳ କାମ',
 12847+ 'mwe-upwiz-license-pd-ineligible' => 'କପିରାଇଟ ହେବା ପାଇଁ ଖୁବ ସରଳ',
 12848+ 'mwe-upwiz-license-pd-ineligible-help' => 'ମନଯୋଗ ଦେଇ ଦେଖନ୍ତୁ । ଏହି ଛବିଟି ଏକ ସବୁଜ ବୃତ୍ତ ବା ନାଲି ଚତୁର୍ଭୁଜ ଭଳି ଖୁବ ସରଳ ହେବା ଦରକାର ।',
 12849+ 'mwe-upwiz-license-pd-textlogo' => 'କେବଳ ସହଜ ଲେଖା ସହିତ ଥିବା ଲୋଗୋ (ଶବ୍ଦଚିହ୍ନ)',
 12850+ 'mwe-upwiz-license-copyrighted-free-use' => 'କପିରାଇଟ ଅଛି, କିନ୍ତୁ ବ୍ୟବସାୟିକ ବ୍ୟବହାରକୁ ମିଶାଇ, ଯେକୌଣସି କାମରେ ବ୍ୟବହାର କରାଯାଇପାରିବ',
 12851+ 'mwe-upwiz-license-gfdl' => 'GNU ରହିତ ଦଲିଲକରଣ ଲାଇସେନ୍ସ',
 12852+ 'mwe-upwiz-license-cc-by-sa-3.0-gfdl' => 'କପିଲେଫ୍ଟ , ଶ୍ରେୟ ଦରକାର (GFDL, CC-BY-SA-3.0)',
 12853+ 'mwe-upwiz-license-public-domain-head' => 'କପିରାଇଟ ନିଶ୍ଚିତଭାବେ ସମାପ୍ତ ହୋଇଛି',
1223012854 'mwe-upwiz-categories' => 'ଶ୍ରେଣୀସମୂହ',
1223112855 'mwe-upwiz-categories-add' => 'ଯୋଗ',
 12856+ 'mwe-upwiz-category-remove' => 'ଶ୍ରେଣୀଟି ହଟାଇଦିଅନ୍ତୁ',
 12857+ 'mwe-upwiz-thanks-caption' => 'ଏଠାରେ ଶିରୋନାମା ଦେବେ',
1223212858 'mwe-upwiz-help-popup' => 'ସହଯୋଗ',
1223312859 'mwe-upwiz-help-popup-title' => 'ଶିରୋନାମା',
 12860+ 'mwe-upwiz-thumbnail-failed' => 'ଅପଲୋଡ଼ ସଫଳ ହେଲା, କିନ୍ତୁ ସର୍ଭର ଏକ ସାନଦେଖଣା ପାଇପାରିଲା ନାହିଁ ।',
 12861+ 'mwe-upwiz-unparseable-filename' => '"$1" ଫାଇଲ ନାମଟି ବୁଝିପାରିଲୁ ନାହିଁ',
 12862+ 'mwe-upwiz-image-preview' => 'ଛବି ଦେଖଣା',
 12863+ 'mwe-upwiz-subhead-message' => 'ଆମ୍ଭର ନୂଆ ଅପଲୋଡ଼ ଉପକରଣ ବ୍ୟବହାର କରିଥିବାରୁ ଧନ୍ୟବାଦ!',
 12864+ 'mwe-upwiz-subhead-bugs' => '[$1 ଗୋଟି ଜଣା ଅସୁବିଧା]',
 12865+ 'mwe-upwiz-subhead-translate' => '[$1 ଅନୁବାଦରେ ସହଯୋଗ କରନ୍ତୁ]',
 12866+ 'mwe-upwiz-subhead-alt-upload' => '[$1 ପୁରୁଣା ଫର୍ମକୁ ଫେରିବା]',
 12867+ 'mwe-upwiz-feedback-prompt' => '[$1 ମତାମତ ଦେବେ]',
 12868+ 'mwe-upwiz-feedback-note' => 'ଆପଣଙ୍କ ଇଉଜର ନାମ, ବ୍ରାଉଜର ସଙ୍କଳନ ଓ ଅପରେଟିଙ୍ଗ ସିଷ୍ଟମ ସାଙ୍ଗରେ ଆପଣଙ୍କ ମତାମତ "[$2 $1]" ପୃଷ୍ଠାରେ ସାର୍ବଜନିକ ଭାବେ ପ୍ରକାଶିତ ହେବ ।',
1223412869 'mwe-upwiz-feedback-subject' => 'ବିଷୟ:',
1223512870 'mwe-upwiz-feedback-message' => 'ଖବର:',
 12871+ 'mwe-upwiz-feedback-title' => 'ଅପଲୋଡ଼ ଉଇଜାର୍ଡ଼ ବାବଦରେ ମତାମତ ଦେବେ',
1223612872 'mwe-upwiz-feedback-cancel' => 'ନାକଚ',
 12873+ 'mwe-upwiz-feedback-submit' => 'ମତାମତ ଦିଅନ୍ତୁ',
 12874+ 'mwe-upwiz-feedback-adding' => 'ପୃଷ୍ଠାରେ ମତାମତ ଦେଉଛି...',
 12875+ 'mwe-upwiz-feedback-error1' => 'ଭୁଲ: API ରୁ ଅଚିହ୍ନା ଫଳାଫଳ',
 12876+ 'mwe-upwiz-feedback-error2' => 'ଅସୁବିଧା: ସମ୍ପାଦନା ବିଫଳ ହେଲା',
 12877+ 'mwe-upwiz-feedback-error3' => 'ଅସୁବିଧା: API ରୁ କିଛି ଉତ୍ତର ମିଳିଲା ନାହିଁ',
 12878+ 'mwe-upwiz-feedback-blacklist-report-prompt' => '[$1 ମତାମତ ପଠାଇବେ]',
 12879+ 'mwe-upwiz-feedback-blacklist-info-prompt' => '[$1 ଅଧିକ ବିବରଣୀ]',
 12880+ 'mwe-upwiz-feedback-blacklist-line-intro' => 'ଏହି ଶିରୋନାମା ଅଟକ ତାଲିକାଟି ମେଳ ଖାଇଲା :
 12881+$1',
 12882+ 'mwe-upwiz-feedback-blacklist-subject' => 'ମୋ ଅପଲୋଡ଼ ନାମ, "$1" ଟି ଅଟକାଯାଇଅଛି ।',
 12883+ 'mwe-upwiz-errordialog-title' => 'ଆପଣଙ୍କ ଅସୁବିଧାଟିଏ ହେଲା',
1223712884 'mwe-upwiz-errordialog-ok' => 'ଠିକ ଅଛି',
 12885+ 'mwe-upwiz-campaigns-name' => 'ଅଭିଯାନ ନାମ',
1223812886 'mwe-upwiz-campaigns-status' => 'ସ୍ଥିତି',
1223912887 'mwe-upwiz-campaigns-enabled' => 'ସାମର୍ଥିକରଣ କରାଗଲା',
1224012888 'mwe-upwiz-campaigns-disabled' => 'ନିଷ୍କ୍ରିୟ',
1224112889 'mwe-upwiz-campaigns-edit' => 'ସମ୍ପାଦନ',
1224212890 'mwe-upwiz-campaigns-add' => 'ଯୋଗ',
 12891+ 'mwe-upwiz-campaigns-addnew' => 'ନୂଆ ଅଭିଯାନଟିଏ ଆରମ୍ଭିବା',
 12892+ 'mwe-upwiz-campaigns-newname' => 'ଅଭିଯାନ ନାମ:',
 12893+ 'mwe-upwiz-campaigns-existing' => 'ଚଳିତ ଅଭିଯାନସମୂହ',
 12894+ 'mwe-upwiz-campaigns-editing' => 'ଅଭିଯାନ ସଜାଣି ଅପଲୋଡ଼ କରିବେ',
1224312895 'mwe-upwiz-campaigns-delete' => 'ଲିଭାଇବା',
 12896+ 'mwe-upwiz-campaigns-confdel' => 'ଆପଣ ଏହି ଅଭିଯାନଟିକୁ ସତରେ ହଟାଇଦେବାକୁ ଚାହାନ୍ତି?',
 12897+ 'mwe-upwiz-campaigns-delete-failed' => 'ଅଭିଯାନଟିକୁ ହଟାଯାଇପାରିଲା ନାହିଁ ।',
 12898+ 'mwe-upwiz-campaigns-confirm-delete' => 'ଆପଣ ଏହି ଅଭିଯାନଟିକୁ ସତରେ ହଟାଇଦେବାକୁ ଚାହାନ୍ତି?',
 12899+ 'uploadcampaign-legend' => 'ଅଭିଯାନ ସଜାଣି ଅପଲୋଡ଼ କରିବେ',
 12900+ 'uploadcampaign-text' => 'ଆପଣ ଅପଲୋଡ଼ ଉଇଜାର୍ଡ଼ ଅଭିଯାନଟିଏକୁ ବଦଳାଉଛନ୍ତି ।',
 12901+ 'mwe-upwiz-campaign-name' => 'ଅଭିଯାନ ନାମ:',
 12902+ 'mwe-upwiz-campaign-enabled' => 'ଅଭିଯାନ ସାମର୍ଥିକରଣ କରାଗଲା',
 12903+ 'mwe-upwiz-campaign-conf-skipTutorial' => 'ଲାଇସେନ୍ସ ଶିକ୍ଷଣକୁ ଅଣଦେଖା କରିଯିବେ',
 12904+ 'mwe-upwiz-campaign-owner-own' => 'କେବଳ ନିଜ କାମର ଅପଲୋଡ଼ ପାଇଁ ଅନୁମତି',
 12905+ 'mwe-upwiz-campaign-owner-notown' => 'କେବଳ ଅନ୍ୟ ଦ୍ଵାରା ହୋଇଥିବା କାମର ଅପଲୋଡ଼ ପାଇଁ ଅନୁମତି',
 12906+ 'mwe-upwiz-campaign-conf-licensesOwnWork' => 'ଲାଇସେନ୍ସ ଯାହା ନିଜ କାମ ପାଇଁ ବଛା ଯାଇପାରିବ:',
 12907+ 'mw-coolcats-confirm-new-cancel' => 'କିଛି ଭାବିବାର ନାହିଁ',
1224412908 );
1224512909
1224612910 /** Punjabi (ਪੰਜਾਬੀ)
@@ -12882,7 +13546,6 @@
1288313547 'uploadcampaign-text' => "A l'é an camin ch'a modìfica na campagna Assistent ëd cariament.",
1288413548 'mwe-upwiz-campaign-name' => 'Nòm ëd la campagna:',
1288513549 'mwe-upwiz-campaign-enabled' => 'Campagna abilità',
12886 - 'mwe-upwiz-campaign-customLicense' => 'Licensa përsonal',
1288713550 'mwe-upwiz-campaign-conf-skipTutorial' => "Sàuta l'agiut ëd le license",
1288813551 'mwe-upwiz-campaign-conf-autoCategories' => "Categorìe da gionté a j'archivi automaticament e silensiosament (separà da dle bare verticaj):",
1288913552 'mwe-upwiz-campaign-conf-defaultCategories' => 'Categorìe dë stàndard da listé ant la scheda ëd descrission (separà da dle bare verticaj):',
@@ -12912,6 +13575,14 @@
1291313576 * @author Khalid Mahmood
1291413577 */
1291513578 $messages['pnb'] = array(
 13579+ 'uploadwizard' => 'فائل چرھان والا',
 13580+ 'uploadwizard-desc' => 'فائل چڑھان والا ملٹیمیڈیا یوزبلٹی گرانٹ لئی بنیا۔',
 13581+ 'mwe-upwiz-uploadcampaigns' => 'چڑھان کم',
 13582+ 'mwe-upwiz-uploadcampaign' => 'کم جانکاری چڑھاؤ',
 13583+ 'right-upwizcampaigns' => 'چڑھاؤ کم دسو۔',
 13584+ 'group-upwizcampeditors' => 'چڑھاؤ کم لکھاری',
 13585+ 'group-upwizcampeditors-member' => 'چڑھاؤ کم لکھاری',
 13586+ 'grouppage-upwizcampeditors' => 'ویونت: چڑھاؤ کم لکھاری',
1291613587 'mwe-upwiz-code-unknown' => 'انجان بولی',
1291713588 'mwe-upwiz-step-tutorial' => 'سکھو',
1291813589 'mwe-upwiz-step-file' => 'چڑھانا',
@@ -12926,14 +13597,35 @@
1292713598 'mwe-upwiz-api-error-nomodule' => 'انٹنیٹ غلطی: فائل چڑھان والا موڈیول سیٹ ںئیں',
1292813599 'mwe-upwiz-api-error-mustbeposted' => 'اندر دی غلطی: ایچ ٹیٹیپی پوسٹ چائیدی اے۔',
1292913600 'mwe-upwiz-api-error-badaccess-groups' => 'تھوانوں ایس وکی تے فائلاں چڑھان دی اجازت نئیں۔',
 13601+ 'mwe-upwiz-api-error-stashfailed' => 'اندر دی غلطی: سرور کچیاں فائلاں نوں رکھن چ نکام۔',
 13602+ 'mwe-upwiz-api-error-missingresult' => 'اندر دی غلطی: سعاب نئیں لاسکدے جے کاپی چلے گی۔',
 13603+ 'mwe-upwiz-api-error-missingparam' => 'اندر دی غلطی: غیب پیرامیٹرز منگن تے۔',
 13604+ 'mwe-upwiz-api-error-invalid-file-key' => 'اندر دی غلطی: فائل ناں لبی کچے سٹور ج',
 13605+ 'mwe-upwiz-api-error-copyuploaddisabled' => 'یو آر ایل نال فائل چڑھانا ایس سرور تے نکام',
1293013606 'mwe-upwiz-api-error-mustbeloggedin' => 'فائلاں اپلوڈ کرن واسطے توانوں لاگ ان کرنا ضروری اے۔',
1293113607 'mwe-upwiz-api-error-empty-file' => 'جیڑی فائل تسی دسی اے اوہ حالی اے۔',
1293213608 'mwe-upwiz-api-error-file-too-large' => 'جیڑی فائل تسی دسی اے اوہ بوت وڈی اے۔',
 13609+ 'mwe-upwiz-api-error-filetype-missing' => 'فائل چ ایکسٹنشن نئیں اے۔',
1293313610 'mwe-upwiz-api-error-filetype-banned' => 'اس قسم دی فائل تے پابندی اے۔',
1293413611 'mwe-upwiz-api-error-filename-tooshort' => 'اس فائل دا ناں بوت چھوٹا اے۔',
1293513612 'mwe-upwiz-api-error-illegal-filename' => 'اس فائل دے ناں تے پابندی اے۔',
1293613613 'mwe-upwiz-api-error-verification-error' => 'اے فائل کرپٹ ہو سکدی یا فیر ایدا فارمیٹ غلط اے۔',
1293713614 'mwe-upwiz-api-error-hookaborted' => 'جیڑی تبدیلی تسی کرنا چاہی اے، اونوں اک ایکسٹنشن کنڈے نیں بند کردتا اے۔',
 13615+ 'mwe-upwiz-api-error-unknown-error' => 'اندر دی غلطی: کوئی چیز غلط ہوئی جدوں تسی فائل چڑھاندے سی۔',
 13616+ 'mwe-upwiz-api-error-internal-error' => 'اندر دی غلطی: تواڈے وکی تے چڑھاندیاں کوئی غلطی ہوئی اے۔',
 13617+ 'mwe-upwiz-api-error-overwrite' => 'اک ہونی فائل تے ہور لکھن دی اجازت نئیں۔',
 13618+ 'mwe-upwiz-api-error-badtoken' => 'اندر دی غلطی: برا ٹوکن',
 13619+ 'mwe-upwiz-api-error-fetchfileerror' => 'اندر دی غلطی: فائل لیندیاں کوئی غلطی ہوئی۔',
 13620+ 'mwe-upwiz-api-error-duplicate-popup-title' => 'دوجی {{انیک:$1|فائل|فائلاں}}',
 13621+ 'mwe-upwiz-api-error-duplicate-archive-popup-title' => 'دوجی {{انیک:$1|فائل|فائلاں} جناں نوں پہلے ای مٹا دتا گیا اے۔',
 13622+ 'mwe-upwiz-api-error-unknown-warning' => 'انجان خبرداری: $1',
 13623+ 'mwe-upwiz-api-error-timeout' => 'سرور نے توقع رکھے ویلے ج جواب نئیں دتا۔',
 13624+ 'mwe-upwiz-api-error-noimageinfo' => 'فائل چڑھانا کامیاب، پر سرور نے فائل بارے سانوں کوئی دس نئیں پیجی۔',
 13625+ 'mwe-upwiz-api-warning-exists' => 'ایس وکی تے پہلے ای ایس ناں [$1 اک ہور] دی فائل ہے۔',
 13626+ 'mwe-upwiz-api-warning-was-deleted' => 'ایس ناں توں اک فائل "$1" اے۔ پر اینوں مٹا دتا گیا جے تے تسیں اینوں دوبارہ نئیں چڑھا سکدے۔
 13627+اگر تواڈی فائل وکھری اے تے ایدا ہور ناں رکھو۔',
 13628+ 'mwe-upwiz-tutorial-error-localized-file-missing' => 'تواڈی بولی چو کوئی سکھلائی نئیں۔ اودے بجاۓ انگریزی ایتھے دسیا گیا جے۔',
 13629+ 'mwe-upwiz-tutorial-error-file-missing' => 'سانوں ایتھے کوئی سکھلائی سبق نئیں لبیا جیہڑا ایتھے چلے۔ پربندھ چلان والے نال گل کرو۔',
1293813630 'mwe-upwiz-help-desk' => 'مدد دا ڈیسک',
1293913631 'mwe-upwiz-help-desk-url' => 'مدد دا ڈیسک',
1294013632 'mwe-upwiz-add-file-n' => 'اک اور فائل وی نال ای اپلوڈ کرو',
@@ -12950,6 +13642,23 @@
1295113643 'mwe-upwiz-upload' => 'اپلوڈ',
1295213644 'mwe-upwiz-file-all-ok' => 'ساریاں اپلوڈ کامیاب رئیاں!',
1295313645 'mwe-upwiz-file-some-failed' => 'کج اپلوڈ نا ہوسکیاں۔',
 13646+ 'mwe-upwiz-file-retry' => 'ناں چرھیاں فائلاں فیر چرھاؤ',
 13647+ 'mwe-upwiz-next-file-despite-failures' => 'چل سو چل',
 13648+ 'mwe-upwiz-skip-tutorial-future' => 'اگلی واری ایتھون اگے لنگ جاؤ',
 13649+ 'mwe-upwiz-progressbar-uploading' => 'چڑھاریا',
 13650+ 'mwe-upwiz-finished' => 'کم ہوگیا',
 13651+ 'mwe-upwiz-secs-remaining' => '$1 {{انیک:$1|سکنٹ|سکنٹاں}} ریندے',
 13652+ 'mwe-upwiz-mins-secs-remaining' => '$1 {{انیک:$1|منٹ|منٹاں}} $2 {{انیک:$2|سکنٹ|سکنٹاں}} باقی',
 13653+ 'mwe-upwiz-hrs-mins-secs-remaining' => '$1 {{انیک:$1|کینٹہ|کینٹہ}} $2 {{انیک:$2|منٹ|منٹاں}} $3 {{انیک:$3|سکنٹ|سکنٹاں}} باقی',
 13654+ 'mwe-upwiz-deeds-macro-prompt' => 'ایس سائٹ تے توانوں کاپی حق {{انیک:$1|ایہ کم|ایہ کم}} لی لوڑ اے،
 13655+اے ضروری بناؤ جے ہرکوئی قنونی ایناں نوں {{انیک:$1|ایہ|اوہ}} ورت سکے۔',
 13656+ 'mwe-upwiz-deeds-custom-prompt' => 'یا:',
 13657+ 'mwe-upwiz-source-ownwork' => '{{انیک:$1|ایہ فائل|ایہ فائلاں }} میرا آپنا کم اے.',
 13658+ 'mwe-upwiz-source-ownwork-assert-note' => 'ایدا مطلب اے جے تسیں اپنے کم عام کر رۓ او ایس لائیسنس نال: $1',
 13659+ 'mwe-upwiz-source-permission' => 'اوناں دا بنان والا کھلی اجازت دیندا اے چڑھان دی۔',
 13660+ 'mwe-upwiz-source-thirdparty' => '{{انیک:$1|ایہ فائل|ایہ فاغلاں}} میرا اپنا کم نئیں۔.',
 13661+ 'mwe-upwiz-source-thirdparty-intro' => 'مہربانی کرکے اوہ پتہ دسو جتھوں ہر فائل لی اے۔',
 13662+ 'mwe-upwiz-source-thirdparty-custom-multiple-intro' => 'اگر ساریاں فائلاں دا مڈ اک ای اے، تے کاپی حف سٹیٹس، تسی اکو واری ساریاں دا دے سکدے او۔',
1295413663 'mwe-upwiz-source-thirdparty-accept' => 'اوکے',
1295513664 'mwe-upwiz-source-custom' => 'اگلے صفے تے ہر فائل دی کاپی رائٹ جانکاری دیو۔',
1295613665 'mwe-upwiz-more-options' => 'ہور چنوتیاں۔۔۔',
@@ -12987,6 +13696,39 @@
1298813697 'mwe-upwiz-next-details' => 'اگلا',
1298913698 'mwe-upwiz-home' => 'وکی دے ہوم پیج تے چلو',
1299013699 'mwe-upwiz-upload-another' => 'ہور فائلاں چڑھاؤ',
 13700+ 'mwe-upwiz-tooltip-more-info' => 'ہور سکھو',
 13701+ 'mwe-upwiz-file-need-file' => 'مہربانی کرکے اکچڑھائی فائل جوڑو۔',
 13702+ 'mwe-upwiz-deeds-need-license' => 'اک لائسنس چنو۔',
 13703+ 'mwe-upwiz-license-show-all' => 'ہور لائسنس چنو',
 13704+ 'mwe-upwiz-license-show-recommended' => 'دسیا کیا لائسنس ورتو',
 13705+ 'mwe-upwiz-error-signature-blank' => 'تسیں تھلے اپنے ورتن ناں یا اصل ناں نال نشان لگاؤ۔',
 13706+ 'mwe-upwiz-error-signature-too-long' => 'تھواڈے دسخط بعوت لمبے نیں۔
 13707+
 13708+ایناں نوں $1 {{انیک:$1|اکرا|اکرے}} توں نکا کرو۔',
 13709+ 'mwe-upwiz-error-signature-too-short' => 'تواڈے دسخط بعوت نکے نیں۔
 13710+$1 توں وڈا کرو {{انیک:$1|اکرے|اکرا}}',
 13711+ 'mwe-upwiz-error-signature-bad-chars' => 'تواڈے دسخط چ نشان ںیں جناں دی اجازت نئیں۔
 13712+مہربانی کرکے ایتھے وکیلکھت یا ایچ ٹی ایم ایل ناں ورتو، صرف ورتن ناں یا اصل ناں۔',
 13713+ 'mwe-upwiz-error-blank' => 'ایس فیلڈ دی لوڑ اے۔',
 13714+ 'mwe-upwiz-error-too-long' => 'ایہ فیلڈ چوکھا لمبا اے۔
 13715+مہربانی کرکے ایس انٹری نوں ایس $1 {{انیک:$1|اکرا|اکرے}} توں نکا کرو۔',
 13716+ 'mwe-upwiz-error-too-short' => 'اے فیلڈ بعوں نکا اے۔
 13717+مہربانی کرکے ایس انٹری نوں $1 {{انیک:$1|اکرا|اکرے}} لمبا کرو',
 13718+ 'mwe-upwiz-error-bad-chars' => 'ایس فیلڈ چ ایسے نشان نیں جناں دی اجازت نیں۔
 13719+مہربانی کرکے وکیلکھت یا ایچ ٹی ایم ایل ایتھے ناں ورتو۔',
 13720+ 'mwe-upwiz-error-date' => 'مہربانی کرکے ورہ - معینہ - سال فارمیٹ چ ٹھیک تریخ پاؤ، یا یا پاپاپ کیلنڈر توں تریخ لوو۔',
 13721+ 'mwe-upwiz-error-title-blacklisted' => 'ایس سرناویں چ ناں چاہی جان والی لکھت ہیگی اے۔ مہربانی کرکے ایدے چ تبدیلی لیاؤ۔',
 13722+ 'mwe-upwiz-error-title-badchars' => 'ایس سرناویں چ ناں چاہی جان والی لکھت ہیگی اے۔ مہربانی کرکے اینوں ہٹاؤ۔',
 13723+ 'mwe-upwiz-error-title-senselessimagename' => 'مہربانی کرکے ایس سرناویں نوں ٹھیک کرو۔',
 13724+ 'mwe-upwiz-error-title-hosting' => 'لکدا اے جے ایہ فائل تساں کتے ہوروں لئی اے۔ مہربانی کرکے سرناواں ٹھیک کرو۔ دو واری چیک کرو جے توانوں اینوں ایتھے چھاپن دا حق اے۔',
 13725+ 'mwe-upwiz-error-title-thumbnail' => 'ایہ اک تھمبنیل سرناواں لگدا اے۔ مہربانی کرکے اکو وکی تے تھمبنیل فیر ناں چرھاؤ۔
 13726+نئیں تے فائل ناں پکا کرو تاں جے ایدی کوئی دس پتہ لک سکے۔ ناں ای تھمبنیل دی پریفکس۔',
 13727+ 'mwe-upwiz-error-title-fileexists-shared-forbidden' => 'اے سرناواں اک فائل لئی بچایا گیا اے۔ کوئی ہور چن لو۔',
 13728+ 'mwe-upwiz-error-title-double-apostrophe' => 'ایس سرناویں چ دوہری اپاسٹرافی دتی گئی اے؛ اینوں ہٹاؤ۔',
 13729+ 'mwe-upwiz-error-title-extension' => 'توانوں فاغۂ ایکسٹنشن نوں جوڑن دی لوڑ نئیں۔
 13730+اک پڑھیا جان والا سرناواں چنو تے اے چلے گا۔',
 13731+ 'mwe-upwiz-details-error-count' => 'ایتھے {{انیک:$1|اک غلطی اے| $1 غلطیاں نیں}} اتے {{انیک:$2|حالت|حالتاں}} نال۔
 13732+غلطی ٹھیک کرو تے فیر کرو۔',
1299113733 'mwe-upwiz-license-cc-by-sa-3.0' => 'Creative Commons Attribution ShareAlike 3.0',
1299213734 'mwe-upwiz-license-cc-by-sa-3.0-at' => 'Creative Commons Attribution ShareAlike 3.0 Austria',
1299313735 'mwe-upwiz-license-cc-by-sa-3.0-de' => 'Creative Commons Attribution ShareAlike 3.0 Germany',
@@ -13010,6 +13752,28 @@
1301113753 'mwe-upwiz-license-pd-old' => 'بنان والا 70 ورے پہلے مرگیا۔',
1301213754 'mwe-upwiz-license-pd-art' => 'پینٹنگ نون کاپی کیتا گیا اے کیون جے اپنی عمر باجوں اے لوکاں کول اے۔',
1301313755 'mwe-upwiz-license-pd-us' => 'پہلی واری امریکہ چ 1923 تون پہلے چھپی',
 13756+ 'mwe-upwiz-license-pd-usgov' => 'امریکی سرکار دا اصل کم',
 13757+ 'mwe-upwiz-license-pd-usgov-nasa' => 'ناسا دا کم',
 13758+ 'mwe-upwiz-license-pd-ineligible' => 'کاپی حق لئی بعوت سادہ',
 13759+ 'mwe-upwiz-license-pd-ineligible-help' => 'ایس توں بچ کے۔ مورت اسان ہرے چکر وانگوں یا لال مربعے وانگوں۔',
 13760+ 'mwe-upwiz-license-pd-textlogo' => 'لوگو سادی لکھت نال',
 13761+ 'mwe-upwiz-license-copyrighted-free-use' => 'حق بچایا پر کسے وی کم لئی ورتیا جاسکدا اے کاروبار لئی وی',
 13762+ 'mwe-upwiz-license-attribution' => 'کسے وی کم ل‏ی ورتیا جاسکدا اے، کاروبار لی وی، اگر کاپی حف دسیا گیا اے۔',
 13763+ 'mwe-upwiz-license-gfdl' => 'گنو مفت ڈوکومنٹیشن لائیسنس',
 13764+ 'mwe-upwiz-license-cc-by-sa-3.0-gfdl' => 'حق چھڈیا پر اتہ پتہ دینا جے (GFDL, CC-BY-SA-3.0)',
 13765+ 'mwe-upwiz-license-cc-head' => 'کاپی حق رکھن والے نیں چھاپیا {{انیک:$1|ایہ کم|ایہ کم}} کریٹو کامنز لائیسنس',
 13766+ 'mwe-upwiz-license-cc-subhead' => 'کریٹو کامنز دے سارے لائیسنس ایس سائیٹ لئی ٹھیک نئیں۔ اے ویکھ لو جے کاپی حق والے اینوں چوں کوئی لائیسنس ورتیا اے۔',
 13767+ 'mwe-upwiz-license-flickr-head' => 'کاپی حق رکھن والے نے اپنیاں {{انیک:$1|مورتاں یا وڈیو}} فلکر تے ٹھیک لائیسنس نال چھاپیاں نیں۔',
 13768+ 'mwe-upwiz-license-flickr-subhead' => '"لائیسنس" ناں ویکھو فلکر صفے تے دونویں آئیکون تے لسنس ناں تھلے دتیاں چنوتیاں نال رلنے چائیدے نیں۔',
 13769+ 'mwe-upwiz-license-public-domain-head' => 'کاپی حق ویلہ مک گیا جے۔',
 13770+ 'mwe-upwiz-license-usgov-head' => '{{انیک:$1|ایہ کم |ایہ کم} امریکی سرکار نے بناۓ سن۔',
 13771+ 'mwe-upwiz-license-misc' => 'رلیاں ملیاں وجہاں',
 13772+ 'mwe-upwiz-license-custom-head' => 'صرف گرو: کوڈ لائیسنس دسو جیہڑا ایتھے نئیں دسیا گیا۔',
 13773+ 'mwe-upwiz-license-custom-subhead' => 'وکیلکھت لکھو جیہڑی لائیسنس ٹمپلیٹ جوڑے تواڈیاں چڑھائیاں فائلاں نال۔',
 13774+ 'mwe-upwiz-license-none-applicable-head' => 'مینون نئین پتہ جے اپر دتیاں گیاں چنوتیاں ایھے چلن گیاں یا ںئیں ! مدد!',
 13775+ 'mwe-upwiz-license-confirm-remove-title' => 'ہٹان پکا کرو',
 13776+ 'mwe-upwiz-license-external' => 'ایہ فائل تھلے دتے گۓ لائیسنس $1 تے:<b>$2</b>',
 13777+ 'mwe-upwiz-license-external-invalid' => 'اے فائل ایس لائیسنس تھلے آندی اے $1: <b>$2</b>۔ پر ایہ لائیسنس ایس تھاں تے چلن لئی ٹھیک نئیں۔',
1301413778 'mwe-upwiz-categories' => 'گٹھاں',
1301513779 'mwe-upwiz-categories-add' => 'جوڑو',
1301613780 'mwe-upwiz-category-remove' => 'ایس گٹھ نوں ہٹاؤ',
@@ -13031,6 +13795,17 @@
1303213796 'mwe-upwiz-feedback-cancel' => 'واپس',
1303313797 'mwe-upwiz-feedback-submit' => 'مشورہ دیو',
1303413798 'mwe-upwiz-feedback-adding' => 'مشورہ صفے تے دیو۔۔۔۔۔۔۔',
 13799+ 'mwe-upwiz-feedback-error1' => 'غلطی: اے پی آئی توں ناں پچھانے گۓ نتارے۔',
 13800+ 'mwe-upwiz-feedback-error2' => 'غلطی: تبدیلی نئیں چلی',
 13801+ 'mwe-upwiz-feedback-error3' => 'غلطی: اے پی آئی توں کوئی جواب نئیں۔',
 13802+ 'mwe-upwiz-feedback-blacklist-report-prompt' => '[$1 صلا پیجو]',
 13803+ 'mwe-upwiz-feedback-blacklist-info-prompt' => '[$1 ہور دساں]',
 13804+ 'mwe-upwiz-feedback-blacklist-line-intro' => 'اے سرناویں دی روی گئی انٹری اے جیہڑی رل رئی اے: $1',
 13805+ 'mwe-upwiz-feedback-blacklist-subject' => 'میرا چرھایا ہویا سرناواں "$1" روک دتا گیا اے۔',
 13806+ 'mwe-upwiz-errordialog-title' => 'تواڈے کم خ کوئی غلطی نئیں سی۔',
 13807+ 'mwe-upwiz-errordialog-ok' => 'اوکے',
 13808+ 'mwe-upwiz-error-nosuchcampaign' => '"$1" دے ناں نال کوئی کم نئیں۔',
 13809+ 'mwe-upwiz-error-campaigndisabled' => 'کم "$1" قابل نئیں ہویا۔',
1303513810 'mwe-upwiz-campaigns-name' => 'کم ناں',
1303613811 'mwe-upwiz-campaigns-status' => 'حالت',
1303713812 'mwe-upwiz-campaigns-enabled' => 'قابل کرنا',
@@ -13039,11 +13814,37 @@
1304013815 'mwe-upwiz-campaigns-add' => 'جوڑو',
1304113816 'mwe-upwiz-campaigns-addnew' => 'اک نواں کم جوڑو',
1304213817 'mwe-upwiz-campaigns-newname' => 'کم ناں:',
 13818+ 'mwe-upwiz-campaigns-namedoc' => 'کم = ناں',
1304313819 'mwe-upwiz-campaigns-existing' => 'چلدے کم',
1304413820 'mwe-upwiz-campaigns-editing' => 'کم جانکاری چڑھاؤ',
1304513821 'mwe-upwiz-campaigns-delete' => 'مٹاؤ',
1304613822 'mwe-upwiz-campaigns-confdel' => 'کیا تھوانوں یقین اے جے تسی ایس کم نوں مٹانا چاندے او؟',
 13823+ 'mwe-upwiz-campaigns-delete-failed' => 'کم نوں مٹایا نئیں جاسکدا۔',
 13824+ 'mwe-upwiz-campaigns-confirm-delete' => 'کیا تھوانوں یقین اے جے تسی ایس کم نوں مٹانا چاندے او؟',
1304713825 'uploadcampaign-legend' => 'کم دا سعاب کتاب چڑھاؤ',
 13826+ 'uploadcampaign-text' => 'تسیں اک چڑھاؤ وزرڈ کم چ تبدیلی کر رۓ او۔',
 13827+ 'mwe-upwiz-campaign-name' => 'کم ناں:',
 13828+ 'mwe-upwiz-campaign-enabled' => 'کم قابل',
 13829+ 'mwe-upwiz-campaign-conf-skipTutorial' => 'لائیسنسنگ سکھلائی توں اگے چلو۔',
 13830+ 'mwe-upwiz-campaign-conf-autoCategories' => 'کٹھاں اپنے آپ تے ارام نال رلاؤ۔',
 13831+ 'mwe-upwiz-campaign-conf-defaultCategories' => 'ڈیفالٹ گٹھاں نوں دسی گئی ٹیب چ لسٹ کرو۔',
 13832+ 'mwe-upwiz-campaign-conf-autoWikiText' => 'وکیلکھت چڑھاۓ گۓ صفیاں تے اپنے آپ رلاؤ۔',
 13833+ 'mwe-upwiz-campaign-conf-ownWorkOption' => 'اپنے یا پراۓ کم نوں کنج چلانا اے۔',
 13834+ 'mwe-upwiz-campaign-owner-choice' => 'ورتن والے نوں اجاز دیو جے اپے یا پراۓ کم دے وشکار چنوتی کرسکے۔',
 13835+ 'mwe-upwiz-campaign-owner-own' => 'صرف اپنے چڑھاۓ گۓ کم دی اجازت دیو۔',
 13836+ 'mwe-upwiz-campaign-owner-notown' => 'صرف پراۓ چڑھاۓ گۓ کم دی اجازت دیو۔',
 13837+ 'mwe-upwiz-campaign-conf-licensesOwnWork' => 'ایہ لائیسنس اپنے کم ل‏ی چننا سی۔',
 13838+ 'mwe-upwiz-campaign-conf-tutorialTemplate' => 'وکی میڈیا کامنز تے سکھلائی دا ناں۔ $1 نوں بولی کوڈ نال بدل دتا گیا اے۔',
 13839+ 'mwe-upwiz-campaign-conf-tutorialWidth' => 'سکھلائی نوں ناپن دی چوڑائی:',
 13840+ 'mwe-upwiz-campaign-conf-tutorialHelpdeskCoords' => 'امیجمیپ کوارڈینیٹس سکھلائی مدد بٹن:',
 13841+ 'mwe-upwiz-campaign-conf-defaultOwnWorkLicence' => 'ڈیفالٹ دا اپنا کم لائیسنس:',
 13842+ 'mwe-upwiz-campaign-conf-idField' => 'آئی ڈی فیلڈ وکیلکھت۔ ادھارن: <نوکی>{{ریکسمونومنٹ|$1}}</نوکی>. خالی کیتا:',
 13843+ 'mwe-upwiz-campaign-conf-idFieldLabel' => 'آئی ڈی فیلڈ لیبل لکھت:',
 13844+ 'mwe-upwiz-campaign-conf-idFieldLabelPage' => 'لکھت نال صفہ ناں آئی ڈی فیلڈ لیبل۔ $1 بولی کوڈ نال بدل دتا گیا۔',
 13845+ 'mwe-upwiz-campaign-conf-idFieldMaxLength' => 'آئی ڈی فیلڈ چ زیادھ توں زیادہ لکھت لمبائی',
 13846+ 'mw-coolcats-confirm-new-title' => 'نویں گٹھ پکی کرو',
 13847+ 'mw-coolcats-confirm-new-ok' => 'اے نویں گٹھ ہر صورت چ جوڑو',
 13848+ 'mw-coolcats-confirm-new-cancel' => 'غصہ ناں کرو',
1304813849 );
1304913850
1305013851 /** Pashto (پښتو)
@@ -13819,7 +14620,7 @@
1382014621 'mwe-upwiz-source-thirdparty-cases' => 'Acum spuneți-ne de ce sunteți sigur că acest site are dreptul să publice {{PLURAL:$1|această lucrare|aceste lucrări}}:',
1382114622 'mwe-upwiz-source-thirdparty-accept' => 'OK',
1382214623 'mwe-upwiz-source-custom' => 'Furnizează informații privind drepturile de autor pentru fiecare fișier individual pe pagina următoare.',
13823 - 'mwe-upwiz-more-options' => 'mai multe opțiuni...',
 14624+ 'mwe-upwiz-more-options' => 'adăugare de categorii și informații suplimentare...',
1382414625 'mwe-upwiz-fewer-options' => 'mai puține opțiuni...',
1382514626 'mwe-upwiz-desc' => 'Descriere',
1382614627 'mwe-upwiz-desc-add-n' => 'adăugați o descriere în altă limbă',
@@ -14290,7 +15091,7 @@
1429115092 'mwe-upwiz-source-thirdparty-cases' => 'Теперь расскажите нам, почему вы уверены, что этот сайт имеет право публиковать {{PLURAL:$1|это произведение|эти произведения}}:',
1429215093 'mwe-upwiz-source-thirdparty-accept' => 'OK',
1429315094 'mwe-upwiz-source-custom' => 'Укажите сведения по авторским правам в отдельности для каждого файла на следующей странице.',
14294 - 'mwe-upwiz-more-options' => 'больше настроек…',
 15095+ 'mwe-upwiz-more-options' => 'добавить категории и другие сведения...',
1429515096 'mwe-upwiz-fewer-options' => 'меньше настроек…',
1429615097 'mwe-upwiz-desc' => 'Описание',
1429715098 'mwe-upwiz-desc-add-n' => 'добавить описание на другом языке',
@@ -14476,7 +15277,6 @@
1447715278 'uploadcampaign-text' => 'Вы изменяете кампанию Мастера загрузок.',
1447815279 'mwe-upwiz-campaign-name' => 'Название кампании',
1447915280 'mwe-upwiz-campaign-enabled' => 'Кампания включена',
14480 - 'mwe-upwiz-campaign-customLicense' => 'Нестандартная лицензия',
1448115281 'mwe-upwiz-campaign-conf-skipTutorial' => 'Пропустить руководство по лицензированию',
1448215282 'mwe-upwiz-campaign-conf-autoCategories' => 'Категории, которые должны незаметно автоматически добавляться к файлам (через вертикальную черту):',
1448315283 'mwe-upwiz-campaign-conf-defaultCategories' => 'Категории по умолчанию, показываемые в списке на вкладке описания (через вертикальную черту):',
@@ -14496,8 +15296,6 @@
1449715297 'mwe-upwiz-campaign-conf-headerLabelPage' => 'Страница, содержащая текст, отображаемый над интерфейсом Мастера загрузок. $1 заменяется код языка:',
1449815298 'mwe-upwiz-campaign-conf-thanksLabelPage' => 'Страница, содержащая текст, отображаемый над страницей «Использование». $1 заменяется код языка:',
1449915299 'mwe-upwiz-campaign-conf-idFieldMaxLength' => 'Максимальная длина текста в поле идентификатора',
14500 - 'mwe-upwiz-campaign-conf-wikitextLicense' => 'Викитекст для произвольной лицензии на собственную работу. Пусто если такая лицензия отсутствует. $1 заменяется на код языка:',
14501 - 'mwe-upwiz-campaign-conf-wikitextLicenseTemplates' => 'Шаблоны, добавляемые при выборе произвольной лицензии (разделённые вертикальной чертой):',
1450215300 'mw-coolcats-confirm-new-title' => 'Подтверждение новой категории',
1450315301 'mw-coolcats-confirm-new' => 'Похоже, что вы пытаетесь создать новую категорию, «$1». Имейте в виду:<ul><li>Категории, как правило, должны называться на английском языке.</li><li> Большинство новых категорий должны быть подкатегориями существующих категорий. </li></ul>Обычно категории создают только специалисты.',
1450415302 'mw-coolcats-confirm-new-ok' => 'Всё равно добавить эту категорию',
@@ -15386,7 +16184,6 @@
1538716185 'uploadcampaign-text' => 'Spreminjate kampanjo čarovnika nalaganja',
1538816186 'mwe-upwiz-campaign-name' => 'Ime kampanje',
1538916187 'mwe-upwiz-campaign-enabled' => 'Kampanja je omogočena',
15390 - 'mwe-upwiz-campaign-customLicense' => 'Dovoljenje po meri',
1539116188 'mwe-upwiz-campaign-conf-skipTutorial' => 'Preskoči vodnik po licenciranju',
1539216189 'mwe-upwiz-campaign-conf-autoCategories' => 'Kategorije, h katerim samodejno in tiho dodaj datoteke (ločene z navpičnicami)',
1539316190 'mwe-upwiz-campaign-conf-defaultCategories' => 'Na opisnem zavihku privzeto navedene kategorije (ločene z navpičnicami)',
@@ -15406,8 +16203,6 @@
1540716204 'mwe-upwiz-campaign-conf-headerLabelPage' => 'Stran z besedilom, ki bo prikazano nad vmesnikom ČarovnikaNalaganja. $1 bo nadomeščeno s kodo jezika',
1540816205 'mwe-upwiz-campaign-conf-thanksLabelPage' => 'Stran z besedilom, ki bo prikazano na vrhu strani »Uporaba«. $1 bo nadomeščeno s kodo jezika',
1540916206 'mwe-upwiz-campaign-conf-idFieldMaxLength' => 'Največja dolžina besedila v polju ID',
15410 - 'mwe-upwiz-campaign-conf-wikitextLicense' => 'Wikibesedilo dovoljenja po meri za lastno delo. Pustite prazno, če ne želite dovoljenja po meri. $1 bo zamenjano s kodo jezika:',
15411 - 'mwe-upwiz-campaign-conf-wikitextLicenseTemplates' => 'Predloge, ki jih naj dodam, ko uporabnik izbere dovoljenje po meri (ločene z navpičnico):',
1541216207 'mw-coolcats-confirm-new-title' => 'Potrdi novo kategorijo',
1541316208 'mw-coolcats-confirm-new' => 'Zdi se, da poskušate dodati novo kategorijo, »$1«. Bodite pozorni:<ul><li>Kategorije naj bodo po navadi v angleščini.</li><li>Večina novih kategorij naj bo podkategorija obstoječe kategorije.</li></ul>Na splošno bi naj samo strokovnjaki dodajali kategorijo.',
1541416209 'mw-coolcats-confirm-new-ok' => 'Vseeno dodaj kategorijo',
@@ -15530,7 +16325,7 @@
1553116326 'mwe-upwiz-stashed-upload' => 'У реду',
1553216327 'mwe-upwiz-getting-metadata' => 'Добављање података о датотеци и прегледа…',
1553316328 'mwe-upwiz-submitting-details' => 'Слање детаља и објављивање…',
15534 - 'mwe-upwiz-published' => 'Објављено!',
 16329+ 'mwe-upwiz-published' => 'Објављено.',
1553516330 'mwe-upwiz-failed' => 'Неуспело.',
1553616331 'mwe-upwiz-remove' => 'Уклони',
1553716332 'mwe-upwiz-remove-upload' => 'Уклоните ову датотеку са списка за отпремање',
@@ -15723,8 +16518,8 @@
1572416519 'mwe-upwiz-deeds-macro-prompt' => 'Denna webbplats kräver att du anger information om upphovsrätt för {{PLURAL:$1|detta arbete|dessa verk}}, se till att alla lagligen kan återanvända {{PLURAL:$1|den|dem}}.',
1572516520 'mwe-upwiz-deeds-custom-prompt' => 'Eller:',
1572616521 'mwe-upwiz-source-ownwork' => '{{PLURAL:$1|Den här filen är|De här filerna är}} skapade av mig.',
15727 - 'mwe-upwiz-source-ownwork-assert-any-license' => 'Jag, $2, upphovsrättshavaren till {{PLURAL:$1|detta arbete|dessa verk}}, ger härmed oåterkalleligen envar rätten att använda, modifiera och vidaredistribuera {{PLURAL:$1|detta arbete|dessa verk}} för valfritt ändamål , och jag publicerar {{PLURAL:$1|den|dem}} därför enligt följande villkor:',
15728 - 'mwe-upwiz-source-ownwork-assert' => 'Jag, $2, upphovsrättshavaren till {{PLURAL:$1|detta verk|dessa verk}}, ger härmed oåterkalleligen envar rätten att använda {{PLURAL:$1| detta verk|dessa verk}} för alla ändamål, så länge de attribuerar mig och delar härledda verk på samma villkor.',
 16522+ 'mwe-upwiz-source-ownwork-assert-any-license' => 'Jag, $2, upphovsrättsinnehavaren av {{PLURAL:$1|detta verk|dessa verk}}, ger härmed oåterkalleligen var och en rätt att använda, modifiera och vidaredistribuera {{PLURAL:$1|detta verk|dessa verk}} för valfritt syfte, och jag publicerar {{PLURAL:$1|den|dem}} därför enligt följande villkor:',
 16523+ 'mwe-upwiz-source-ownwork-assert' => 'Jag, $2, upphovsrättsinnehavaren av {{PLURAL:$1|detta verk|dessa verk}}, ger härmed oåterkalleligen var och en rätten att använda {{PLURAL:$1|detta verk|dessa verk}} för valfritt syfte, så länge de ger mig erkännande och ger bearbetade verk samma villkor.',
1572916524 'mwe-upwiz-source-ownwork-assert-custom' => 'Jag, $2, upphovsrättshavaren till {{PLURAL:$1|detta arbete|dessa verk}}, publicerar härmed {{PLURAL:$1|detta arbete|dessa verk}} under följande licens(er):',
1573016525 'mwe-upwiz-source-ownwork-assert-note' => 'Detta innebär att du släpper ditt arbete under följande licens: $1',
1573116526 'mwe-upwiz-source-permission' => 'Deras upphovsmän gav dig uttryckligt tillstånd att ladda upp dem',
@@ -15735,7 +16530,7 @@
1573616531 'mwe-upwiz-source-thirdparty-cases' => 'Berätta varför du är säker på denna sida har rätt att publicera {{PLURAL:$1|detta verk|dessa verk}}:',
1573716532 'mwe-upwiz-source-thirdparty-accept' => 'OK',
1573816533 'mwe-upwiz-source-custom' => 'Ge copyrightinformation för varje fil på nästa sida.',
15739 - 'mwe-upwiz-more-options' => 'fler alternativ ...',
 16534+ 'mwe-upwiz-more-options' => 'lägg till kategorier och mer information...',
1574016535 'mwe-upwiz-fewer-options' => 'färre alternativ ...',
1574116536 'mwe-upwiz-desc' => 'Beskrivning',
1574216537 'mwe-upwiz-desc-add-n' => 'lägga till en beskrivning på ett annat språk',
@@ -16140,7 +16935,7 @@
1614116936 'mwe-upwiz-source-ownwork-assert-custom' => 'నేను, $2, ఈ {{PLURAL:$1|కృతి|కృతుల}} యొక్క కాపీహక్కుదారున్ని, ఈ {{PLURAL:$1|కృతిని|కృతులను}} ఇందుమూలముగా ఈ క్రింది లైసెన్సు(ల) ప్రకారం ప్రచురిస్తున్నాను:',
1614216937 'mwe-upwiz-source-thirdparty' => 'ఈ {{PLURAL:$1|దస్త్రం నా స్వంత కృతి కాదు|దస్త్రాలు నా స్వంత కృతులు కావు}}.',
1614316938 'mwe-upwiz-source-thirdparty-accept' => 'సరే',
16144 - 'mwe-upwiz-more-options' => 'మరిన్ని ఎంపికలు...',
 16939+ 'mwe-upwiz-more-options' => 'వర్గాలను మరియు మరింత సమాచారాన్ని చేర్చండి...',
1614516940 'mwe-upwiz-fewer-options' => 'కొన్నే ఎంపికలు...',
1614616941 'mwe-upwiz-desc' => 'వివరణ',
1614716942 'mwe-upwiz-desc-add-n' => 'వేరే భాషలో ఒక వివరణని చేర్చు',
@@ -16593,10 +17388,10 @@
1659417389 'mwe-upwiz-help-popup-title' => 'Başlık',
1659517390 'mwe-upwiz-image-preview' => 'Görüntü önizleme',
1659617391 'mwe-upwiz-subhead-message' => 'Yeni yükleme aracımızı kullandığınız için teşekkürler!',
16597 - 'mwe-upwiz-subhead-bugs' => '[ $1 Bilinen sorunlar]',
16598 - 'mwe-upwiz-subhead-translate' => '[ $1 çeviri yardımı]',
16599 - 'mwe-upwiz-subhead-alt-upload' => '[ $1 eski biçime geri dön]',
16600 - 'mwe-upwiz-feedback-prompt' => '[ $1 geribildirim bırak]',
 17392+ 'mwe-upwiz-subhead-bugs' => '[$1 Bilinen sorunlar]',
 17393+ 'mwe-upwiz-subhead-translate' => '[$1 Çeviri yardımı]',
 17394+ 'mwe-upwiz-subhead-alt-upload' => '[$1 Eski biçime geri dön]',
 17395+ 'mwe-upwiz-feedback-prompt' => '[$1 Geribildirim bırak]',
1660117396 'mwe-upwiz-feedback-subject' => 'Konu:',
1660217397 'mwe-upwiz-feedback-message' => 'Mesaj:',
1660317398 'mwe-upwiz-feedback-title' => 'Yükleme Sihirbazı hakkında geribildirimde bulunun',
@@ -16604,7 +17399,7 @@
1660517400 'mwe-upwiz-feedback-submit' => 'Geribildirimi Gönder',
1660617401 'mwe-upwiz-feedback-adding' => 'Sayfaya geribildirim ekleniyor...',
1660717402 'mwe-upwiz-feedback-error2' => 'Hata: Düzenleme başarısız oldu',
16608 - 'mwe-upwiz-feedback-blacklist-report-prompt' => '[ $1 Geribildirim Gönder]',
 17403+ 'mwe-upwiz-feedback-blacklist-report-prompt' => '[$1 Geribildirim Gönder]',
1660917404 'mwe-upwiz-campaigns-name' => 'Kampanya adı',
1661017405 'mwe-upwiz-campaigns-status' => 'Durum',
1661117406 'mwe-upwiz-campaigns-addnew' => 'Yeni bir kampanya ekle',
@@ -16728,7 +17523,7 @@
1672917524 'mwe-upwiz-source-thirdparty-cases' => 'Розкажіть нам, чому ви впевнені, що цей сайт має право публікувати {{PLURAL:$1|цей твір|ці твори}}:',
1673017525 'mwe-upwiz-source-thirdparty-accept' => 'OK',
1673117526 'mwe-upwiz-source-custom' => 'Надайте інформацію про авторські права для кожного файлу окремо на наступній сторінці.',
16732 - 'mwe-upwiz-more-options' => 'більше налаштувань...',
 17527+ 'mwe-upwiz-more-options' => 'додати категорії та більше інформації...',
1673317528 'mwe-upwiz-fewer-options' => 'меньше налаштувань...',
1673417529 'mwe-upwiz-desc' => 'Опис',
1673517530 'mwe-upwiz-desc-add-n' => 'додати опис іншою мовою',
@@ -16918,7 +17713,6 @@
1691917714 'uploadcampaign-text' => 'Ви змінюєте кампанію Майстра завантажень.',
1692017715 'mwe-upwiz-campaign-name' => 'Назва кампанії:',
1692117716 'mwe-upwiz-campaign-enabled' => 'Кампанія включена',
16922 - 'mwe-upwiz-campaign-customLicense' => 'Ліцензія користувача',
1692317717 'mwe-upwiz-campaign-conf-skipTutorial' => 'Пропустити підручник з ліцензування',
1692417718 'mwe-upwiz-campaign-conf-autoCategories' => 'Категорії, що повинні автоматично приховано додаватись до файлів (через вертикальну риску):',
1692517719 'mwe-upwiz-campaign-conf-defaultCategories' => 'Категорії за замовчуванням, що відображаються в списку на закладці опису (через вертикальну риску):',
@@ -16938,8 +17732,6 @@
1693917733 'mwe-upwiz-campaign-conf-headerLabelPage' => 'Сторінка, що містить текст, який відображається над інтерфейсом Майстра завантажень. $1 замінюється на код мови:',
1694017734 'mwe-upwiz-campaign-conf-thanksLabelPage' => 'Сторінка, що містить текст, який відображається над сторінкой "Використання". $1 замінюється на код мови:',
1694117735 'mwe-upwiz-campaign-conf-idFieldMaxLength' => 'Максимальна довжина тексту в полі ідентифікатора',
16942 - 'mwe-upwiz-campaign-conf-wikitextLicense' => 'Вікітекст для ліцензії користувача на власний твір. Залиште порожнім, якщо така ліцензія відсутня. Змініть $1 на код мови:',
16943 - 'mwe-upwiz-campaign-conf-wikitextLicenseTemplates' => 'Шаблони, що додаються при виборі користувацької ліцензії (розділені вертикальною рискою):',
1694417736 'mw-coolcats-confirm-new-title' => 'Підтвердження нової категорії',
1694517737 'mw-coolcats-confirm-new' => 'Схоже, що ви намагаєтеся додати нову категорію, "$1". Майте на увазі: <ul><li>Категорії повинні, як правило, бути на англійській мові.</li><li>Більшість нових категорій повинні бути підкатегоріями вже існуючих категорій.</li></ul>Як правило, тільки фахівці з цього питання повинні створювати нові категорії.',
1694617738 'mw-coolcats-confirm-new-ok' => 'Все одно додати цю категорію',
@@ -17053,7 +17845,7 @@
1705417846 'mwe-upwiz-source-thirdparty-cases' => 'Xin hỏi tại sao bạn chắc chắn rằng trang này có quyền xuất bản {{PLURAL:$1|tác phẩm|các tác phẩm}} này:',
1705517847 'mwe-upwiz-source-thirdparty-accept' => 'OK',
1705617848 'mwe-upwiz-source-custom' => 'Hãy cung cấp thông tin bản quyền về mỗi tập tin riêng tại trang tiếp theo.',
17057 - 'mwe-upwiz-more-options' => 'thêm tùy chọn…',
 17849+ 'mwe-upwiz-more-options' => 'bổ sung thể loại và chi tiết…',
1705817850 'mwe-upwiz-fewer-options' => 'ít tùy chọn…',
1705917851 'mwe-upwiz-desc' => 'Miêu tả',
1706017852 'mwe-upwiz-desc-add-n' => 'thêm miêu tả trong ngôn ngữ khác',
@@ -17241,7 +18033,6 @@
1724218034 'uploadcampaign-text' => 'Bạn đang sửa đổi một chiến dịch tải lên cho Trình thuật sĩ tải lên.',
1724318035 'mwe-upwiz-campaign-name' => 'Tên chiến dịch:',
1724418036 'mwe-upwiz-campaign-enabled' => 'Chiến dịch được kích hoạt',
17245 - 'mwe-upwiz-campaign-customLicense' => 'Giấy phép tùy biến',
1724618037 'mwe-upwiz-campaign-conf-skipTutorial' => 'Bỏ qua hướng dẫn giấy phép',
1724718038 'mwe-upwiz-campaign-conf-autoCategories' => 'Thể loại để tự động xếp các tập tin vào (tách bằng dấu ống)',
1724818039 'mwe-upwiz-campaign-conf-defaultCategories' => 'Các thể loại mặc định để liệt kê trong thẻ Miêu tả (tách bằng dấu ống)',
@@ -17261,8 +18052,6 @@
1726218053 'mwe-upwiz-campaign-conf-headerLabelPage' => 'Trang có văn bản để hiển thị ở trên giao diện Trình thuật sĩ tải lên. “$1” được thay thế bằng mã ngôn ngữ.',
1726318054 'mwe-upwiz-campaign-conf-thanksLabelPage' => 'Trang có văn bản để hiển thị vào đầu trang “Sử dụng”. “$1” được thay thế bằng mã ngôn ngữ.',
1726418055 'mwe-upwiz-campaign-conf-idFieldMaxLength' => 'Số ký tự tối đa trong hộp ID',
17265 - 'mwe-upwiz-campaign-conf-wikitextLicense' => 'Văn bản wiki của một giấy phép tùy biến cho tác phẩm của người tải lên. Để trống nếu không có một giấy phép tùy biến như vậy. “$1” sẽ được thay bằng mã ngôn ngữ:',
17266 - 'mwe-upwiz-campaign-conf-wikitextLicenseTemplates' => 'Các bản mẫu để gắn vào khi người dùng chọn giấy phép tùy biến (phân tách bằng dấu ống):',
1726718056 'mw-coolcats-confirm-new-title' => 'Xác nhận thể loại mới',
1726818057 'mw-coolcats-confirm-new' => 'Hình như bạn muốn thêm thể loại “$1” mới. Xin lưu ý:<ul><li>Các tên thể loại thường nên bằng tiếng Anh.</li><li>Các thể loại mới thường phải được xếp vào những thể loại đã tồn tại.</li></ul>Nói chung, chỉ có các chuyên gia nên thêm một thể loại chưa có.',
1726918058 'mw-coolcats-confirm-new-ok' => 'Cứ thêm thể loại này',
Index: branches/wmf/1.17wmf1/extensions/UploadWizard/resources/mw.UploadWizard.js
@@ -1,916 +1,9 @@
22 /**
3 - * Represents the upload -- in its local and remote state. (Possibly those could be separate objects too...)
4 - * This is our 'model' object if we are thinking MVC. Needs to be better factored, lots of feature envy with the UploadWizard
5 - * states:
6 - * 'new' 'transporting' 'transported' 'metadata' 'stashed' 'details' 'submitting-details' 'complete' 'error'
7 - * should fork this into two -- local and remote, e.g. filename
8 - */
9 -( function( $j ) {
10 -
11 -mw.UploadWizardUpload = function( wizard, filesDiv ) {
12 -
13 - this.index = mw.UploadWizardUpload.prototype.count;
14 - mw.UploadWizardUpload.prototype.count++;
15 -
16 - this.wizard = wizard;
17 - this.api = wizard.api;
18 - this.state = 'new';
19 - this.thumbnails = {};
20 - this.thumbnailPublishers = {};
21 - this.imageinfo = {};
22 - this.title = undefined;
23 - this.mimetype = undefined;
24 - this.extension = undefined;
25 - this.filename = undefined;
26 -
27 - this.fileKey = undefined;
28 -
29 - // this should be moved to the interface, if we even keep this
30 - this.transportWeight = 1; // default all same
31 - this.detailsWeight = 1; // default all same
32 -
33 - // details
34 - this.ui = new mw.UploadWizardUploadInterface( this, filesDiv );
35 -
36 - // handler -- usually ApiUploadHandler
37 - // this.handler = new ( mw.UploadWizard.config[ 'uploadHandlerClass' ] )( this );
38 - // this.handler = new mw.MockUploadHandler( this );
39 - this.handler = this.getUploadHandler();
40 -
41 -
42 -};
43 -
44 -mw.UploadWizardUpload.prototype = {
45 - // Upload handler
46 - uploadHandler: null,
47 -
48 - // increments with each upload
49 - count: 0,
50 -
51 - acceptDeed: function( deed ) {
52 - var _this = this;
53 - _this.deed.applyDeed( _this );
54 - },
55 -
56 - /**
57 - * start
58 - */
59 - start: function() {
60 - var _this = this;
61 - _this.setTransportProgress(0.0);
62 - //_this.ui.start();
63 - _this.handler.start();
64 - },
65 -
66 - /**
67 - * remove this upload. n.b. we trigger a removeUpload this is usually triggered from
68 - */
69 - remove: function() {
70 - this.state = 'aborted';
71 - if ( this.deedPreview ) {
72 - this.deedPreview.remove();
73 - }
74 - if ( this.details && this.details.div ) {
75 - this.details.div.remove();
76 - }
77 - if ( this.thanksDiv ) {
78 - this.thanksDiv.remove();
79 - }
80 - // we signal to the wizard to update itself, which has to delete the final vestige of
81 - // this upload (the ui.div). We have to do this silly dance because we
82 - // trigger through the div. Triggering through objects doesn't always work.
83 - // TODO v.1.1 fix, don't need to use the div any more -- this now works in jquery 1.4.2
84 - $j( this.ui.div ).trigger( 'removeUploadEvent' );
85 - },
86 -
87 -
88 - /**
89 - * Wear our current progress, for observing processes to see
90 - * @param fraction
91 - */
92 - setTransportProgress: function ( fraction ) {
93 - var _this = this;
94 - _this.state = 'transporting';
95 - _this.transportProgress = fraction;
96 - $j( _this.ui.div ).trigger( 'transportProgressEvent' );
97 - },
98 -
99 - /**
100 - * Queue some warnings for possible later consumption
101 - */
102 - addWarning: function( code, info ) {
103 - if ( !mw.isDefined( this.warnings ) ) {
104 - this.warnings = [];
105 - }
106 - this.warnings.push( [ code, info ] );
107 - },
108 -
109 - /**
110 - * Stop the upload -- we have failed for some reason
111 - */
112 - setError: function( code, info ) {
113 - this.state = 'error';
114 - this.transportProgress = 0;
115 - this.ui.showError( code, info );
116 - },
117 -
118 - /**
119 - * To be executed when an individual upload finishes. Processes the result and updates step 2's details
120 - * @param result the API result in parsed JSON form
121 - */
122 - setTransported: function( result ) {
123 - var _this = this;
124 - if ( _this.state == 'aborted' ) {
125 - return;
126 - }
127 -
128 - // default error state
129 - var code = 'unknown';
130 - var info = 'unknown';
131 -
132 - if ( result.upload && result.upload.warnings ) {
133 - if ( result.upload.warnings['exists'] ) {
134 - // the filename we uploaded is in use already. Not a problem since we stashed it under a temporary name anyway
135 - // potentially we could indicate to the upload that it should set the Title field to error state now, but we'll let them deal with that later.
136 - // however, we don't get imageinfo, so let's try to get it and pretend that we did
137 - var existsFileName = result.upload.warnings.exists;
138 - try {
139 - code = 'exists';
140 - info = new mw.Title( existsFileName, 'file' ).getUrl();
141 - } catch ( e ) {
142 - code = 'unknown';
143 - info = 'Warned about existing filename, but filename is unparseable: "' + existsFileName + "'";
144 - }
145 - _this.addWarning( code, info );
146 - _this.extractUploadInfo( result.upload );
147 - var success = function( imageinfo ) {
148 - if ( imageinfo === null ) {
149 - _this.setError( 'noimageinfo' );
150 - } else {
151 - result.upload.stashimageinfo = imageinfo;
152 - _this.setSuccess( result );
153 - }
154 - };
155 - _this.getStashImageInfo( success, [ 'timestamp', 'url', 'size', 'dimensions', 'sha1', 'mime', 'metadata', 'bitdepth' ] );
156 - } else if ( result.upload.warnings['duplicate'] ) {
157 - code = 'duplicate';
158 - _this.setError( code, _this.duplicateErrorInfo( 'duplicate', result.upload.warnings['duplicate'] ) );
159 - } else if ( result.upload.warnings['duplicate-archive'] ) {
160 - code = 'duplicate-archive';
161 - _this.setError( code, _this.duplicateErrorInfo( 'duplicate-archive', result.upload.warnings['duplicate-archive'] ) );
162 - } else {
163 - // we have an unknown warning. Assume fatal
164 - code = 'unknown-warning';
165 - var warningInfo = [];
166 - $j.each( result.upload.warnings, function( k, v ) {
167 - warningInfo.push( k + ': ' + v );
168 - } );
169 - info = warningInfo.join( ', ' );
170 - _this.setError( code, [ info ] );
171 - }
172 - } else if ( result.upload && result.upload.result === 'Success' ) {
173 - if ( result.upload.imageinfo ) {
174 - _this.setSuccess( result );
175 - } else {
176 - _this.setError( 'noimageinfo', info );
177 - }
178 - } else {
179 - if ( result.error ) {
180 - if ( result.error.code ) {
181 - code = result.error.code;
182 - }
183 - if ( result.error.info ) {
184 - info = result.error.info;
185 - }
186 - }
187 - _this.setError( code, info );
188 - }
189 -
190 -
191 - },
192 -
193 -
194 - /**
195 - * Helper function to generate duplicate errors with dialog box. Works with existing duplicates and deleted dupes.
196 - * @param {String} error code, should have matching strings in .i18n.php
197 - * @param {Object} portion of the API error result listing duplicates
198 - */
199 - duplicateErrorInfo: function( code, resultDuplicate ) {
200 - var _this = this;
201 - var duplicates;
202 - if ( typeof resultDuplicate === 'object' ) {
203 - duplicates = resultDuplicate;
204 - } else if ( typeof resultDuplicate === 'string' ) {
205 - duplicates = [ resultDuplicate ];
206 - }
207 - var $ul = $j( '<ul></ul>' );
208 - $j.each( duplicates, function( i, filename ) {
209 - var $a = $j( '<a/>' ).append( filename );
210 - try {
211 - var href = new mw.Title( filename, 'file' ).getUrl();
212 - $a.attr( { 'href': href, 'target': '_blank' } );
213 - } catch ( e ) {
214 - $a.click( function() { alert('could not parse filename=' + filename ); } );
215 - $a.attr( 'href', '#' );
216 - }
217 - $ul.append( $j( '<li></li>' ).append( $a ) );
218 - } );
219 - var dialogFn = function() {
220 - $j( '<div></div>' )
221 - .html( $ul )
222 - .dialog( {
223 - width: 500,
224 - zIndex: 200000,
225 - autoOpen: true,
226 - title: gM( 'mwe-upwiz-api-error-' + code + '-popup-title', duplicates.length ),
227 - modal: true
228 - } );
229 - };
230 - return [ duplicates.length, dialogFn ];
231 - },
232 -
233 -
234 - /**
235 - * Called from any upload success condition
236 - * @param {Mixed} result -- result of AJAX call
237 - */
238 - setSuccess: function( result ) {
239 - var _this = this;
240 - _this.state = 'transported';
241 - _this.transportProgress = 1;
242 -
243 - _this.ui.setStatus( 'mwe-upwiz-getting-metadata' );
244 - if ( result.upload ) {
245 - _this.extractUploadInfo( result.upload );
246 - _this.deedPreview.setup();
247 - _this.details.populate();
248 - _this.state = 'stashed';
249 - _this.ui.showStashed();
250 - $.publishReady( 'thumbnails.' + _this.index, 'api' );
251 - } else {
252 - _this.setError( 'noimageinfo' );
253 - }
254 -
255 - },
256 -
257 - /**
258 - * Called when the file is entered into the file input.
259 - * Checks for file validity, then extracts metadata.
260 - * Error out if filename or its contents are determined to be unacceptable
261 - * Proceed to thumbnail extraction and image info if acceptable
262 - * @param {HTMLFileInput} file input field
263 - * @param {Function()} callback when ok, and upload object is ready
264 - * @param {Function(String, Mixed)} callback when filename or contents in error. Signature of string code, mixed info
265 - */
266 - checkFile: function( fileInput, fileNameOk, fileNameErr ) {
267 - // check if local file is acceptable
268 -
269 - var _this = this;
270 -
271 - // Check if filename is acceptable
272 - // TODO sanitize filename
273 - var filename = fileInput.value;
274 - var basename = mw.UploadWizardUtil.getBasename( filename );
275 -
276 -
277 - // check to see if the file has already been selected for upload.
278 - var duplicate = false;
279 - $j.each( this.wizard.uploads, function ( i, upload ) {
280 - if ( _this !== upload && filename === upload.filename ) {
281 - duplicate = true;
282 - return false;
283 - }
284 - } );
285 -
286 - if( duplicate ) {
287 - fileNameErr( 'dup', basename );
288 - return false;
289 - }
290 -
291 - try {
292 - this.title = new mw.Title( basename.replace( /:/g, '_' ), 'file' );
293 - } catch ( e ) {
294 - fileNameErr( 'unparseable' );
295 - }
296 -
297 - // Check if extension is acceptable
298 - var extension = this.title.getExtension();
299 - if ( mw.isEmpty( extension ) ) {
300 - fileNameErr( 'noext' );
301 - } else {
302 - if ( $j.inArray( extension.toLowerCase(), mw.UploadWizard.config[ 'fileExtensions' ] ) === -1 ) {
303 - fileNameErr( 'ext', extension );
304 - } else {
305 -
306 - // extract more info via fileAPI
307 - if ( mw.fileApi.isAvailable() ) {
308 - if ( fileInput.files && fileInput.files.length ) {
309 - // TODO multiple files in an input
310 - this.file = fileInput.files[0];
311 - }
312 - // TODO check max upload size, alert user if too big
313 - this.transportWeight = this.file.size;
314 - if ( !mw.isDefined( this.imageinfo ) ) {
315 - this.imageinfo = {};
316 - }
317 -
318 - var binReader = new FileReader();
319 - binReader.onload = function() {
320 - var meta;
321 - try {
322 - meta = mw.libs.jpegmeta( binReader.result, _this.file.fileName );
323 - meta._binary_data = null;
324 - } catch ( e ) {
325 - meta = null;
326 - }
327 - _this.extractMetadataFromJpegMeta( meta );
328 - _this.filename = filename;
329 - fileNameOk();
330 - };
331 - binReader.readAsBinaryString( _this.file );
332 - } else {
333 - this.filename = filename;
334 - fileNameOk();
335 - }
336 -
337 - }
338 -
339 - }
340 -
341 - },
342 -
343 -
344 -
345 -
346 - /**
347 - * Map fields from jpegmeta's metadata return into our format (which is more like the imageinfo returned from the API
348 - * @param {Object} (as returned by jpegmeta)
349 - */
350 - extractMetadataFromJpegMeta: function( meta ) {
351 - if ( mw.isDefined( meta ) && meta !== null && typeof meta === 'object' ) {
352 - if ( !mw.isDefined( this.imageinfo ) ) {
353 - this.imageinfo = {};
354 - }
355 - if ( !mw.isDefined( this.imageinfo.metadata ) ) {
356 - this.imageinfo.metadata = {};
357 - }
358 - if ( meta.tiff && meta.tiff.Orientation ) {
359 - this.imageinfo.metadata.orientation = meta.tiff.Orientation.value;
360 - }
361 - if ( meta.general ) {
362 - if ( meta.general.pixelHeight ) {
363 - this.imageinfo.height = meta.general.pixelHeight.value;
364 - }
365 - if ( meta.general.pixelWidth ) {
366 - this.imageinfo.width = meta.general.pixelWidth.value;
367 - }
368 - }
369 - }
370 - },
371 -
372 - /**
373 - * Accept the result from a successful API upload transport, and fill our own info
374 - *
375 - * @param result The JSON object from a successful API upload result.
376 - */
377 - extractUploadInfo: function( resultUpload ) {
378 -
379 - if ( resultUpload.filekey ) {
380 - this.fileKey = resultUpload.filekey;
381 - }
382 -
383 - if ( resultUpload.imageinfo ) {
384 - this.extractImageInfo( resultUpload.imageinfo );
385 - } else if ( resultUpload.stashimageinfo ) {
386 - this.extractImageInfo( resultUpload.stashimageinfo );
387 - }
388 -
389 - },
390 -
391 - /**
392 - * Extract image info into our upload object
393 - * Image info is obtained from various different API methods
394 - * This may overwrite metadata obtained from FileReader.
395 - * @param imageinfo JSON object obtained from API result.
396 - */
397 - extractImageInfo: function( imageinfo ) {
398 - var _this = this;
399 - for ( var key in imageinfo ) {
400 - // we get metadata as list of key-val pairs; convert to object for easier lookup. Assuming that EXIF fields are unique.
401 - if ( key == 'metadata' ) {
402 - if ( !mw.isDefined( _this.imageinfo.metadata ) ) {
403 - _this.imageinfo.metadata = {};
404 - }
405 - if ( imageinfo.metadata && imageinfo.metadata.length ) {
406 - $j.each( imageinfo.metadata, function( i, pair ) {
407 - if ( pair !== undefined ) {
408 - _this.imageinfo.metadata[pair['name'].toLowerCase()] = pair['value'];
409 - }
410 - } );
411 - }
412 - } else {
413 - _this.imageinfo[key] = imageinfo[key];
414 - }
415 - }
416 -
417 - if ( _this.title.getExtension() === null ) {
418 - 1;
419 - // TODO v1.1 what if we don't have an extension? Should be impossible as it is currently impossible to upload without extension, but you
420 - // never know... theoretically there is no restriction on extensions if we are uploading to the stash, but the check is performed anyway.
421 - /*
422 - var extension = mw.UploadWizardUtil.getExtension( _this.imageinfo.url );
423 - if ( !extension ) {
424 - if ( _this.imageinfo.mimetype ) {
425 - if ( mw.UploadWizardUtil.mimetypeToExtension[ _this.imageinfo.mimetype ] ) {
426 - extension = mw.UploadWizardUtil.mimetypeToExtension[ _this.imageinfo.mimetype ];
427 - }
428 - }
429 - }
430 - */
431 - }
432 -
433 -
434 -
435 -
436 - },
437 -
438 - /**
439 - * Get information about stashed images
440 - * See API documentation for prop=stashimageinfo for what 'props' can contain
441 - * @param {Function} callback -- called with null if failure, with imageinfo data structure if success
442 - * @param {Array} properties to extract
443 - * @param {Number} optional, width of thumbnail. Will force 'url' to be added to props
444 - * @param {Number} optional, height of thumbnail. Will force 'url' to be added to props
445 - */
446 - getStashImageInfo: function( callback, props, width, height ) {
447 - var _this = this;
448 -
449 - if (!mw.isDefined( props ) ) {
450 - props = [];
451 - }
452 -
453 - var params = {
454 - 'prop': 'stashimageinfo',
455 - 'siifilekey': _this.fileKey,
456 - 'siiprop': props.join( '|' )
457 - };
458 -
459 - if ( mw.isDefined( width ) || mw.isDefined( height ) ) {
460 - if ( ! $j.inArray( 'url', props ) ) {
461 - props.push( 'url' );
462 - }
463 - if ( mw.isDefined( width ) ) {
464 - params['siiurlwidth'] = width;
465 - }
466 - if ( mw.isDefined( height ) ) {
467 - params['siiurlheight'] = height;
468 - }
469 - }
470 -
471 - var ok = function( data ) {
472 - if ( !data || !data.query || !data.query.stashimageinfo ) {
473 - mw.log("mw.UploadWizardUpload::getStashImageInfo> No data? ");
474 - callback( null );
475 - return;
476 - }
477 - callback( data.query.stashimageinfo );
478 - };
479 -
480 - var err = function( code, result ) {
481 - mw.log( 'mw.UploadWizardUpload::getStashImageInfo> error: ' + code, 'debug' );
482 - callback( null );
483 - };
484 -
485 - this.api.get( params, { ok: ok, err: err } );
486 - },
487 -
488 -
489 - /**
490 - * Get information about published images
491 - * (There is some overlap with getStashedImageInfo, but it's different at every stage so it's clearer to have separate functions)
492 - * See API documentation for prop=imageinfo for what 'props' can contain
493 - * @param {Function} callback -- called with null if failure, with imageinfo data structure if success
494 - * @param {Array} properties to extract
495 - * @param {Number} optional, width of thumbnail. Will force 'url' to be added to props
496 - * @param {Number} optional, height of thumbnail. Will force 'url' to be added to props
497 - */
498 - getImageInfo: function( callback, props, width, height ) {
499 - var _this = this;
500 - if (!mw.isDefined( props ) ) {
501 - props = [];
502 - }
503 - var requestedTitle = _this.title.getPrefixedText();
504 - var params = {
505 - 'prop': 'imageinfo',
506 - 'titles': requestedTitle,
507 - 'iiprop': props.join( '|' )
508 - };
509 -
510 - if ( mw.isDefined( width ) || mw.isDefined( height ) ) {
511 - if ( ! $j.inArray( 'url', props ) ) {
512 - props.push( 'url' );
513 - }
514 - if ( mw.isDefined( width ) ) {
515 - params['iiurlwidth'] = width;
516 - }
517 - if ( mw.isDefined( height ) ) {
518 - params['iiurlheight'] = height;
519 - }
520 - }
521 -
522 - var ok = function( data ) {
523 - if ( data && data.query && data.query.pages ) {
524 - var found = false;
525 - $j.each( data.query.pages, function( pageId, page ) {
526 - if ( page.title && page.title === requestedTitle && page.imageinfo ) {
527 - found = true;
528 - callback( page.imageinfo );
529 - return false;
530 - }
531 - } );
532 - if ( found ) {
533 - return;
534 - }
535 - }
536 - mw.log("mw.UploadWizardUpload::getImageInfo> No data matching " + requestedTitle + " ? ");
537 - callback( null );
538 - };
539 -
540 - var err = function( code, result ) {
541 - mw.log( 'mw.UploadWizardUpload::getImageInfo> error: ' + code, 'debug' );
542 - callback( null );
543 - };
544 -
545 - this.api.get( params, { ok: ok, err: err } );
546 - },
547 -
548 -
549 - /**
550 - * Get the upload handler per browser capabilities
551 - */
552 - getUploadHandler: function(){
553 - if( !this.uploadHandler ){
554 - if( mw.UploadWizard.config[ 'enableFirefogg' ]
555 - &&
556 - typeof( Firefogg ) != 'undefined'
557 - ) {
558 - mw.log("mw.UploadWizard::getUploadHandler> FirefoggHandler");
559 - this.uploadHandler = new mw.FirefoggHandler( this, this.api );
560 - } else if( mw.UploadWizard.config[ 'enableFormData' ] &&
561 - (($j.browser.mozilla && $j.browser.version >= '5.0') ||
562 - ($j.browser.webkit && $j.browser.version >= '534.28'))
563 - ) {
564 - mw.log("mw.UploadWizard::getUploadHandler> ApiUploadFormDataHandler");
565 - this.uploadHandler = new mw.ApiUploadFormDataHandler( this, this.api );
566 - } else {
567 - // By default use the apiUploadHandler
568 - mw.log("mw.UploadWizard::getUploadHandler> ApiUploadHandler");
569 - this.uploadHandler = new mw.ApiUploadHandler( this, this.api );
570 - }
571 - }
572 - return this.uploadHandler;
573 - },
574 -
575 - /**
576 - * Explicitly fetch a thumbnail for a stashed upload of the desired width.
577 - * Publishes to any event listeners that might have wanted it.
578 - *
579 - * @param width - desired width of thumbnail (height will scale to match)
580 - * @param height - (optional) maximum height of thumbnail
581 - */
582 - getAndPublishApiThumbnail: function( key, width, height ) {
583 - var _this = this;
584 -
585 - if ( mw.isEmpty( height ) ) {
586 - height = -1;
587 - }
588 -
589 - if ( !mw.isDefined( _this.thumbnailPublishers[key] ) ) {
590 - var thumbnailPublisher = function( thumbnails ) {
591 - if ( thumbnails === null ) {
592 - // the api call failed somehow, no thumbnail data.
593 - $j.publishReady( key, null );
594 - } else {
595 - // ok, the api callback has returned us information on where the thumbnail(s) ARE, but that doesn't mean
596 - // they are actually there yet. Keep trying to set the source ( which should trigger "error" or "load" event )
597 - // on the image. If it loads publish the event with the image. If it errors out too many times, give up and publish
598 - // the event with a null.
599 - $j.each( thumbnails, function( i, thumb ) {
600 - if ( thumb.thumberror || ( ! ( thumb.thumburl && thumb.thumbwidth && thumb.thumbheight ) ) ) {
601 - mw.log( "mw.UploadWizardUpload::getThumbnail> thumbnail error or missing information" );
602 - $j.publishReady( key, null );
603 - return;
604 - }
605 -
606 - // try to load this image with exponential backoff
607 - // if the delay goes past 8 seconds, it gives up and publishes the event with null
608 - var timeoutMs = 100;
609 - var image = document.createElement( 'img' );
610 - image.width = thumb.thumbwidth;
611 - image.height = thumb.thumbheight;
612 - $j( image )
613 - .load( function() {
614 - // cache this thumbnail
615 - _this.thumbnails[key] = image;
616 - // publish the image to anyone who wanted it
617 - $j.publishReady( key, image );
618 - } )
619 - .error( function() {
620 - // retry with exponential backoff
621 - if ( timeoutMs < 8000 ) {
622 - setTimeout( function() {
623 - timeoutMs = timeoutMs * 2 + Math.round( Math.random() * ( timeoutMs / 10 ) );
624 - setSrc();
625 - }, timeoutMs );
626 - } else {
627 - $j.publishReady( key, null );
628 - }
629 - } );
630 -
631 - // executing this should cause a .load() or .error() event on the image
632 - function setSrc() {
633 - image.src = thumb.thumburl;
634 - }
635 -
636 - // and, go!
637 - setSrc();
638 - } );
639 - }
640 - };
641 -
642 - _this.thumbnailPublishers[key] = thumbnailPublisher;
643 - if ( _this.state !== 'complete' ) {
644 - _this.getStashImageInfo( thumbnailPublisher, [ 'url' ], width, height );
645 - } else {
646 - _this.getImageInfo( thumbnailPublisher, [ 'url' ], width, height );
647 - }
648 -
649 - }
650 - },
651 -
652 - /**
653 - * Return the orientation of the image in degrees. Relies on metadata that
654 - * may have been extracted at filereader stage, or after the upload when we fetch metadata. Default returns 0.
655 - * @return {Integer} orientation in degrees: 0, 90, 180 or 270
656 - */
657 - getOrientationDegrees: function() {
658 - var orientation = 0;
659 - if ( this.imageinfo && this.imageinfo.metadata && this.imageinfo.metadata.orientation ) {
660 - switch ( this.imageinfo.metadata.orientation ) {
661 - case 8:
662 - orientation = 90; // 'top left' -> 'left bottom'
663 - break;
664 - case 3:
665 - orientation = 180; // 'top left' -> 'bottom right'
666 - break;
667 - case 6:
668 - orientation = 270; // 'top left' -> 'right top'
669 - break;
670 - case 1:
671 - default:
672 - orientation = 0; // 'top left' -> 'top left'
673 - break;
674 -
675 - }
676 - }
677 - return orientation;
678 - },
679 -
680 - /**
681 - * Fit an image into width & height constraints with scaling factor
682 - * @param {HTMLImageElement}
683 - * @param {Object} with width & height properties
684 - * @return {Number}
685 - */
686 - getScalingFromConstraints: function( image, constraints ) {
687 - var scaling = 1;
688 - $j.each( [ 'width', 'height' ], function( i, dim ) {
689 - if ( constraints[dim] && image[dim] > constraints[dim] ) {
690 - var s = constraints[dim] / image[dim];
691 - if ( s < scaling ) {
692 - scaling = s;
693 - }
694 - }
695 - } );
696 - return scaling;
697 - },
698 -
699 - /**
700 - * Given an image (already loaded), dimension constraints
701 - * return canvas object scaled & transformedi ( & rotated if metadata indicates it's needed )
702 - * @param {HTMLImageElement}
703 - * @param {Object} containing width & height constraints
704 - * @return {HTMLCanvasElement}
705 - */
706 - getTransformedCanvasElement: function( image, constraints ) {
707 -
708 - var rotation = 0;
709 -
710 - // if this wiki can rotate images to match their EXIF metadata,
711 - // we should do the same in our preview
712 - if ( mw.config.get( 'wgFileCanRotate' ) ) {
713 - var angle = this.getOrientationDegrees();
714 - rotation = angle ? 360 - angle : 0;
715 - }
716 -
717 - // swap scaling constraints if needed by rotation...
718 - var scaleConstraints;
719 - if ( rotation === 90 || rotation === 270 ) {
720 - scaleConstraints = {
721 - width: constraints.height,
722 - height: constraints.width
723 - };
724 - } else {
725 - scaleConstraints = {
726 - width: constraints.width,
727 - height: constraints.height
728 - };
729 - }
730 -
731 - var scaling = this.getScalingFromConstraints( image, constraints );
732 -
733 - var width = image.width * scaling;
734 - var height = image.height * scaling;
735 -
736 - // Determine the offset required to center the image
737 - var dx = (constraints.width - width) / 2;
738 - var dy = (constraints.height - height) / 2;
739 -
740 - switch ( rotation ) {
741 - // If a rotation is applied, the direction of the axis
742 - // changes as well. You can derive the values below by
743 - // drawing on paper an axis system, rotate it and see
744 - // where the positive axis direction is
745 - case 90:
746 - x = dx;
747 - y = dy - constraints.height;
748 - break;
749 - case 180:
750 - x = dx - constraints.width;
751 - y = dy - constraints.height;
752 - break;
753 - case 270:
754 - x = dx - constraints.width;
755 - y = dy;
756 - break;
757 - case 0:
758 - default:
759 - x = dx;
760 - y = dy;
761 - break;
762 - }
763 -
764 - var $canvas = $j( '<canvas></canvas>' ).attr( constraints );
765 - var ctx = $canvas[0].getContext( '2d' );
766 - ctx.clearRect( 0, 0, width, height );
767 - ctx.rotate( rotation / 180 * Math.PI );
768 - ctx.drawImage( image, x, y, width, height );
769 -
770 - return $canvas;
771 - },
772 -
773 - /**
774 - * Return a browser-scaled image element, given an image and constraints.
775 - * @param {HTMLImageElement}
776 - * @param {Object} with width and height properties
777 - * @return {HTMLImageElement} with same src, but different attrs
778 - */
779 - getBrowserScaledImageElement: function( image, constraints ) {
780 - var scaling = this.getScalingFromConstraints( image, constraints );
781 - return $j( '<img/>' )
782 - .attr( {
783 - width: parseInt( image.width * scaling, 10 ),
784 - height: parseInt( image.height * scaling, 10 ),
785 - src: image.src
786 - } )
787 - .css( {
788 - 'margin-top': ( parseInt( ( constraints.height - image.height * scaling ) / 2, 10 ) ).toString() + 'px'
789 - } );
790 - },
791 -
792 - /**
793 - * Return an element suitable for the preview of a certain size. Uses canvas when possible
794 - * @param {HTMLImageElement}
795 - * @param {Integer} width
796 - * @param {Integer} height
797 - * @return {HTMLCanvasElement|HTMLImageElement}
798 - */
799 - getScaledImageElement: function( image, width, height ) {
800 - if ( typeof width === 'undefined' || width === null || width <= 0 ) {
801 - width = mw.UploadWizard.config['thumbnailWidth'];
802 - }
803 - var constraints = {
804 - width: parseInt( width, 10 ),
805 - height: ( mw.isDefined( height ) ? parseInt( height, 10 ) : null )
806 - };
807 -
808 - return mw.canvas.isAvailable() ? this.getTransformedCanvasElement( image, constraints )
809 - : this.getBrowserScaledImageElement( image, constraints );
810 - },
811 -
812 - /**
813 - * Given a jQuery selector, subscribe to the "ready" event that fills the thumbnail
814 - * This will trigger if the thumbnail is added in the future or if it already has been
815 - *
816 - * @param selector
817 - * @param width Width constraint
818 - * @param height Height constraint (optional)
819 - * @param boolean add lightbox large preview when ready
820 - */
821 - setThumbnail: function( selector, width, height, isLightBox ) {
822 - var _this = this;
823 -
824 - /**
825 - * This callback will add an image to the selector, using in-browser scaling if necessary
826 - * @param {HTMLImageElement}
827 - */
828 - var placed = false;
829 - var placeImageCallback = function( image ) {
830 - if ( image === null ) {
831 - $j( selector ).addClass( 'mwe-upwiz-file-preview-broken' );
832 - _this.ui.setStatus( 'mwe-upwiz-thumbnail-failed' );
833 - return;
834 - }
835 - var elm = _this.getScaledImageElement( image, width, height );
836 - // add the image to the DOM, finally
837 - $j( selector )
838 - .css( { background: 'none' } )
839 - .html(
840 - $j( '<a/></a>' )
841 - .addClass( "mwe-upwiz-thumbnail-link" )
842 - .append( elm )
843 - );
844 - placed = true;
845 - };
846 -
847 - // Listen for even which says some kind of thumbnail is available.
848 - // The argument is an either an ImageHtmlElement ( if we could get the thumbnail locally ) or the string 'api' indicating you
849 - // now need to get the scaled thumbnail via the API
850 - $.subscribeReady(
851 - 'thumbnails.' + _this.index,
852 - function ( x ) {
853 - if ( isLightBox ) {
854 - _this.setLightBox( selector );
855 - }
856 - if ( !placed ) {
857 - if ( x === 'api' ) {
858 - // get the thumbnail via API. This also works with an async pub/sub model; if this thumbnail was already
859 - // fetched for some reason, we'll get it immediately
860 - var key = 'apiThumbnail.' + _this.index + ',width=' + width + ',height=' + height;
861 - $.subscribeReady( key, placeImageCallback );
862 - _this.getAndPublishApiThumbnail( key, width, height );
863 - } else if ( x instanceof HTMLImageElement ) {
864 - placeImageCallback( x );
865 - } else {
866 - // something else went wrong, place broken image
867 - mw.log( 'unexpected argument to thumbnails event: ' + x );
868 - placeImageCallback( null );
869 - }
870 - }
871 - }
872 - );
873 - },
874 -
875 - /**
876 - * set up lightbox behavior for non-complete thumbnails
877 - * TODO center this
878 - * @param selector
879 - */
880 - setLightBox: function( selector ) {
881 - var _this = this;
882 - var $imgDiv = $j( '<div></div>' ).css( 'text-align', 'center' );
883 - $j( selector )
884 - .click( function() {
885 - // get large preview image
886 - // open large preview in modal dialog box
887 - $j( '<div class="mwe-upwiz-lightbox"></div>' )
888 - .append( $imgDiv )
889 - .dialog( {
890 - 'width': mw.UploadWizard.config[ 'largeThumbnailWidth' ],
891 - 'height': mw.UploadWizard.config[ 'largeThumbnailMaxHeight' ],
892 - 'autoOpen': true,
893 - 'title': gM( 'mwe-upwiz-image-preview' ),
894 - 'modal': true,
895 - 'resizable': false
896 - } );
897 - _this.setThumbnail(
898 - $imgDiv,
899 - mw.UploadWizard.config[ 'largeThumbnailWidth' ],
900 - mw.UploadWizard.config[ 'largeThumbnailMaxHeight' ],
901 - false /* obviously the largeThumbnail doesn't have a lightbox itself! */
902 - );
903 - return false;
904 - } ); // close thumbnail click function
905 - }
906 -
907 -};
908 -
909 -
910 -
911 -
912 -/**
9133 * Object that reperesents the entire multi-step Upload Wizard
9144 */
 5+
 6+( function( $j ) {
 7+
9158 mw.UploadWizard = function( config ) {
9169
91710 this.uploads = [];
Index: branches/wmf/1.17wmf1/extensions/UploadWizard/resources/mw.UploadWizardUpload.js
@@ -0,0 +1,917 @@
 2+/**
 3+ * Represents the upload -- in its local and remote state. (Possibly those could be separate objects too...)
 4+ * This is our 'model' object if we are thinking MVC. Needs to be better factored, lots of feature envy with the UploadWizard
 5+ * states:
 6+ * 'new' 'transporting' 'transported' 'metadata' 'stashed' 'details' 'submitting-details' 'complete' 'error'
 7+ * should fork this into two -- local and remote, e.g. filename
 8+ */
 9+( function( $j ) {
 10+
 11+mw.UploadWizardUpload = function( wizard, filesDiv ) {
 12+
 13+ this.index = mw.UploadWizardUpload.prototype.count;
 14+ mw.UploadWizardUpload.prototype.count++;
 15+
 16+ this.wizard = wizard;
 17+ this.api = wizard.api;
 18+ this.state = 'new';
 19+ this.thumbnails = {};
 20+ this.thumbnailPublishers = {};
 21+ this.imageinfo = {};
 22+ this.title = undefined;
 23+ this.mimetype = undefined;
 24+ this.extension = undefined;
 25+ this.filename = undefined;
 26+
 27+ this.fileKey = undefined;
 28+
 29+ // this should be moved to the interface, if we even keep this
 30+ this.transportWeight = 1; // default all same
 31+ this.detailsWeight = 1; // default all same
 32+
 33+ // details
 34+ this.ui = new mw.UploadWizardUploadInterface( this, filesDiv );
 35+
 36+ // handler -- usually ApiUploadHandler
 37+ // this.handler = new ( mw.UploadWizard.config[ 'uploadHandlerClass' ] )( this );
 38+ // this.handler = new mw.MockUploadHandler( this );
 39+ this.handler = this.getUploadHandler();
 40+
 41+
 42+};
 43+
 44+mw.UploadWizardUpload.prototype = {
 45+ // Upload handler
 46+ uploadHandler: null,
 47+
 48+ // increments with each upload
 49+ count: 0,
 50+
 51+ acceptDeed: function( deed ) {
 52+ var _this = this;
 53+ _this.deed.applyDeed( _this );
 54+ },
 55+
 56+ /**
 57+ * start
 58+ */
 59+ start: function() {
 60+ var _this = this;
 61+ _this.setTransportProgress(0.0);
 62+ //_this.ui.start();
 63+ _this.handler.start();
 64+ },
 65+
 66+ /**
 67+ * remove this upload. n.b. we trigger a removeUpload this is usually triggered from
 68+ */
 69+ remove: function() {
 70+ this.state = 'aborted';
 71+ if ( this.deedPreview ) {
 72+ this.deedPreview.remove();
 73+ }
 74+ if ( this.details && this.details.div ) {
 75+ this.details.div.remove();
 76+ }
 77+ if ( this.thanksDiv ) {
 78+ this.thanksDiv.remove();
 79+ }
 80+ // we signal to the wizard to update itself, which has to delete the final vestige of
 81+ // this upload (the ui.div). We have to do this silly dance because we
 82+ // trigger through the div. Triggering through objects doesn't always work.
 83+ // TODO v.1.1 fix, don't need to use the div any more -- this now works in jquery 1.4.2
 84+ $j( this.ui.div ).trigger( 'removeUploadEvent' );
 85+ },
 86+
 87+
 88+ /**
 89+ * Wear our current progress, for observing processes to see
 90+ * @param fraction
 91+ */
 92+ setTransportProgress: function ( fraction ) {
 93+ var _this = this;
 94+ _this.state = 'transporting';
 95+ _this.transportProgress = fraction;
 96+ $j( _this.ui.div ).trigger( 'transportProgressEvent' );
 97+ },
 98+
 99+ /**
 100+ * Queue some warnings for possible later consumption
 101+ */
 102+ addWarning: function( code, info ) {
 103+ if ( !mw.isDefined( this.warnings ) ) {
 104+ this.warnings = [];
 105+ }
 106+ this.warnings.push( [ code, info ] );
 107+ },
 108+
 109+ /**
 110+ * Stop the upload -- we have failed for some reason
 111+ */
 112+ setError: function( code, info ) {
 113+ this.state = 'error';
 114+ this.transportProgress = 0;
 115+ this.ui.showError( code, info );
 116+ },
 117+
 118+ /**
 119+ * To be executed when an individual upload finishes. Processes the result and updates step 2's details
 120+ * @param result the API result in parsed JSON form
 121+ */
 122+ setTransported: function( result ) {
 123+ var _this = this;
 124+ if ( _this.state == 'aborted' ) {
 125+ return;
 126+ }
 127+
 128+ // default error state
 129+ var code = 'unknown';
 130+ var info = 'unknown';
 131+
 132+ if ( result.upload && result.upload.warnings ) {
 133+ if ( result.upload.warnings['exists'] ) {
 134+ // the filename we uploaded is in use already. Not a problem since we stashed it under a temporary name anyway
 135+ // potentially we could indicate to the upload that it should set the Title field to error state now, but we'll let them deal with that later.
 136+ // however, we don't get imageinfo, so let's try to get it and pretend that we did
 137+ var existsFileName = result.upload.warnings.exists;
 138+ try {
 139+ code = 'exists';
 140+ info = new mw.Title( existsFileName, 'file' ).getUrl();
 141+ } catch ( e ) {
 142+ code = 'unknown';
 143+ info = 'Warned about existing filename, but filename is unparseable: "' + existsFileName + "'";
 144+ }
 145+ _this.addWarning( code, info );
 146+ _this.extractUploadInfo( result.upload );
 147+ var success = function( imageinfo ) {
 148+ if ( imageinfo === null ) {
 149+ _this.setError( 'noimageinfo' );
 150+ } else {
 151+ result.upload.stashimageinfo = imageinfo;
 152+ _this.setSuccess( result );
 153+ }
 154+ };
 155+ _this.getStashImageInfo( success, [ 'timestamp', 'url', 'size', 'dimensions', 'sha1', 'mime', 'metadata', 'bitdepth' ] );
 156+ } else if ( result.upload.warnings['duplicate'] ) {
 157+ code = 'duplicate';
 158+ _this.setError( code, _this.duplicateErrorInfo( 'duplicate', result.upload.warnings['duplicate'] ) );
 159+ } else if ( result.upload.warnings['duplicate-archive'] ) {
 160+ code = 'duplicate-archive';
 161+ _this.setError( code, _this.duplicateErrorInfo( 'duplicate-archive', result.upload.warnings['duplicate-archive'] ) );
 162+ } else {
 163+ // we have an unknown warning. Assume fatal
 164+ code = 'unknown-warning';
 165+ var warningInfo = [];
 166+ $j.each( result.upload.warnings, function( k, v ) {
 167+ warningInfo.push( k + ': ' + v );
 168+ } );
 169+ info = warningInfo.join( ', ' );
 170+ _this.setError( code, [ info ] );
 171+ }
 172+ } else if ( result.upload && result.upload.result === 'Success' ) {
 173+ if ( result.upload.imageinfo ) {
 174+ _this.setSuccess( result );
 175+ } else {
 176+ _this.setError( 'noimageinfo', info );
 177+ }
 178+ } else {
 179+ if ( result.error ) {
 180+ if ( result.error.code ) {
 181+ code = result.error.code;
 182+ }
 183+ if ( result.error.info ) {
 184+ info = result.error.info;
 185+ }
 186+ }
 187+ _this.setError( code, info );
 188+ }
 189+
 190+
 191+ },
 192+
 193+
 194+ /**
 195+ * Helper function to generate duplicate errors with dialog box. Works with existing duplicates and deleted dupes.
 196+ * @param {String} error code, should have matching strings in .i18n.php
 197+ * @param {Object} portion of the API error result listing duplicates
 198+ */
 199+ duplicateErrorInfo: function( code, resultDuplicate ) {
 200+ var _this = this;
 201+ var duplicates;
 202+ if ( typeof resultDuplicate === 'object' ) {
 203+ duplicates = resultDuplicate;
 204+ } else if ( typeof resultDuplicate === 'string' ) {
 205+ duplicates = [ resultDuplicate ];
 206+ }
 207+ var $ul = $j( '<ul></ul>' );
 208+ $j.each( duplicates, function( i, filename ) {
 209+ var $a = $j( '<a/>' ).append( filename );
 210+ try {
 211+ var href = new mw.Title( filename, 'file' ).getUrl();
 212+ $a.attr( { 'href': href, 'target': '_blank' } );
 213+ } catch ( e ) {
 214+ $a.click( function() { alert('could not parse filename=' + filename ); } );
 215+ $a.attr( 'href', '#' );
 216+ }
 217+ $ul.append( $j( '<li></li>' ).append( $a ) );
 218+ } );
 219+ var dialogFn = function() {
 220+ $j( '<div></div>' )
 221+ .html( $ul )
 222+ .dialog( {
 223+ width: 500,
 224+ zIndex: 200000,
 225+ autoOpen: true,
 226+ title: gM( 'mwe-upwiz-api-error-' + code + '-popup-title', duplicates.length ),
 227+ modal: true
 228+ } );
 229+ };
 230+ return [ duplicates.length, dialogFn ];
 231+ },
 232+
 233+
 234+ /**
 235+ * Called from any upload success condition
 236+ * @param {Mixed} result -- result of AJAX call
 237+ */
 238+ setSuccess: function( result ) {
 239+ var _this = this;
 240+ _this.state = 'transported';
 241+ _this.transportProgress = 1;
 242+
 243+ _this.ui.setStatus( 'mwe-upwiz-getting-metadata' );
 244+ if ( result.upload ) {
 245+ _this.extractUploadInfo( result.upload );
 246+ _this.deedPreview.setup();
 247+ _this.details.populate();
 248+ _this.state = 'stashed';
 249+ _this.ui.showStashed();
 250+ $.publishReady( 'thumbnails.' + _this.index, 'api' );
 251+ } else {
 252+ _this.setError( 'noimageinfo' );
 253+ }
 254+
 255+ },
 256+
 257+ /**
 258+ * Called when the file is entered into the file input.
 259+ * Checks for file validity, then extracts metadata.
 260+ * Error out if filename or its contents are determined to be unacceptable
 261+ * Proceed to thumbnail extraction and image info if acceptable
 262+ * @param {HTMLFileInput} file input field
 263+ * @param {Function()} callback when ok, and upload object is ready
 264+ * @param {Function(String, Mixed)} callback when filename or contents in error. Signature of string code, mixed info
 265+ */
 266+ checkFile: function( fileInput, fileNameOk, fileNameErr ) {
 267+ // check if local file is acceptable
 268+
 269+ var _this = this;
 270+
 271+ // Check if filename is acceptable
 272+ // TODO sanitize filename
 273+ var filename = fileInput.value;
 274+ var basename = mw.UploadWizardUtil.getBasename( filename );
 275+
 276+
 277+ // check to see if the file has already been selected for upload.
 278+ var duplicate = false;
 279+ $j.each( this.wizard.uploads, function ( i, upload ) {
 280+ if ( _this !== upload && filename === upload.filename ) {
 281+ duplicate = true;
 282+ return false;
 283+ }
 284+ } );
 285+
 286+ if( duplicate ) {
 287+ fileNameErr( 'dup', basename );
 288+ return false;
 289+ }
 290+
 291+ try {
 292+ this.title = new mw.Title( basename.replace( /:/g, '_' ), 'file' );
 293+ } catch ( e ) {
 294+ fileNameErr( 'unparseable' );
 295+ }
 296+
 297+ // Check if extension is acceptable
 298+ var extension = this.title.getExtension();
 299+ if ( mw.isEmpty( extension ) ) {
 300+ fileNameErr( 'noext' );
 301+ } else {
 302+ if ( $j.inArray( extension.toLowerCase(), mw.UploadWizard.config[ 'fileExtensions' ] ) === -1 ) {
 303+ fileNameErr( 'ext', extension );
 304+ } else {
 305+
 306+ // extract more info via fileAPI
 307+ if ( mw.fileApi.isAvailable() ) {
 308+ if ( fileInput.files && fileInput.files.length ) {
 309+ // TODO multiple files in an input
 310+ this.file = fileInput.files[0];
 311+ }
 312+ // TODO check max upload size, alert user if too big
 313+ this.transportWeight = this.file.size;
 314+ if ( !mw.isDefined( this.imageinfo ) ) {
 315+ this.imageinfo = {};
 316+ }
 317+
 318+ var binReader = new FileReader();
 319+ binReader.onload = function() {
 320+ var meta;
 321+ try {
 322+ meta = mw.libs.jpegmeta( binReader.result, _this.file.fileName );
 323+ meta._binary_data = null;
 324+ } catch ( e ) {
 325+ meta = null;
 326+ }
 327+ _this.extractMetadataFromJpegMeta( meta );
 328+ _this.filename = filename;
 329+ fileNameOk();
 330+ };
 331+ binReader.readAsBinaryString( _this.file );
 332+ } else {
 333+ this.filename = filename;
 334+ fileNameOk();
 335+ }
 336+
 337+ }
 338+
 339+ }
 340+
 341+ },
 342+
 343+
 344+
 345+
 346+ /**
 347+ * Map fields from jpegmeta's metadata return into our format (which is more like the imageinfo returned from the API
 348+ * @param {Object} (as returned by jpegmeta)
 349+ */
 350+ extractMetadataFromJpegMeta: function( meta ) {
 351+ if ( mw.isDefined( meta ) && meta !== null && typeof meta === 'object' ) {
 352+ if ( !mw.isDefined( this.imageinfo ) ) {
 353+ this.imageinfo = {};
 354+ }
 355+ if ( !mw.isDefined( this.imageinfo.metadata ) ) {
 356+ this.imageinfo.metadata = {};
 357+ }
 358+ if ( meta.tiff && meta.tiff.Orientation ) {
 359+ this.imageinfo.metadata.orientation = meta.tiff.Orientation.value;
 360+ }
 361+ if ( meta.general ) {
 362+ var pixelHeightDim = 'height';
 363+ var pixelWidthDim = 'width';
 364+ // this must be called after orientation is set above. If no orientation set, defaults to 0
 365+ var degrees = this.getOrientationDegrees();
 366+ // jpegmeta reports pixelHeight & width
 367+ if ( degrees == 90 || degrees == 270 ) {
 368+ pixelHeightDim = 'width';
 369+ pixelWidthDim = 'height';
 370+ }
 371+ if ( meta.general.pixelHeight ) {
 372+ this.imageinfo[pixelHeightDim] = meta.general.pixelHeight.value;
 373+ }
 374+ if ( meta.general.pixelWidth ) {
 375+ this.imageinfo[pixelWidthDim] = meta.general.pixelWidth.value;
 376+ }
 377+ }
 378+ }
 379+ },
 380+
 381+ /**
 382+ * Accept the result from a successful API upload transport, and fill our own info
 383+ *
 384+ * @param result The JSON object from a successful API upload result.
 385+ */
 386+ extractUploadInfo: function( resultUpload ) {
 387+
 388+ if ( resultUpload.filekey ) {
 389+ this.fileKey = resultUpload.filekey;
 390+ }
 391+
 392+ if ( resultUpload.imageinfo ) {
 393+ this.extractImageInfo( resultUpload.imageinfo );
 394+ } else if ( resultUpload.stashimageinfo ) {
 395+ this.extractImageInfo( resultUpload.stashimageinfo );
 396+ }
 397+
 398+ },
 399+
 400+ /**
 401+ * Extract image info into our upload object
 402+ * Image info is obtained from various different API methods
 403+ * This may overwrite metadata obtained from FileReader.
 404+ * @param imageinfo JSON object obtained from API result.
 405+ */
 406+ extractImageInfo: function( imageinfo ) {
 407+ var _this = this;
 408+ for ( var key in imageinfo ) {
 409+ // we get metadata as list of key-val pairs; convert to object for easier lookup. Assuming that EXIF fields are unique.
 410+ if ( key == 'metadata' ) {
 411+ if ( !mw.isDefined( _this.imageinfo.metadata ) ) {
 412+ _this.imageinfo.metadata = {};
 413+ }
 414+ if ( imageinfo.metadata && imageinfo.metadata.length ) {
 415+ $j.each( imageinfo.metadata, function( i, pair ) {
 416+ if ( pair !== undefined ) {
 417+ _this.imageinfo.metadata[pair['name'].toLowerCase()] = pair['value'];
 418+ }
 419+ } );
 420+ }
 421+ } else {
 422+ _this.imageinfo[key] = imageinfo[key];
 423+ }
 424+ }
 425+
 426+ if ( _this.title.getExtension() === null ) {
 427+ 1;
 428+ // TODO v1.1 what if we don't have an extension? Should be impossible as it is currently impossible to upload without extension, but you
 429+ // never know... theoretically there is no restriction on extensions if we are uploading to the stash, but the check is performed anyway.
 430+ /*
 431+ var extension = mw.UploadWizardUtil.getExtension( _this.imageinfo.url );
 432+ if ( !extension ) {
 433+ if ( _this.imageinfo.mimetype ) {
 434+ if ( mw.UploadWizardUtil.mimetypeToExtension[ _this.imageinfo.mimetype ] ) {
 435+ extension = mw.UploadWizardUtil.mimetypeToExtension[ _this.imageinfo.mimetype ];
 436+ }
 437+ }
 438+ }
 439+ */
 440+ }
 441+
 442+
 443+
 444+
 445+ },
 446+
 447+ /**
 448+ * Get information about stashed images
 449+ * See API documentation for prop=stashimageinfo for what 'props' can contain
 450+ * @param {Function} callback -- called with null if failure, with imageinfo data structure if success
 451+ * @param {Array} properties to extract
 452+ * @param {Number} optional, width of thumbnail. Will force 'url' to be added to props
 453+ * @param {Number} optional, height of thumbnail. Will force 'url' to be added to props
 454+ */
 455+ getStashImageInfo: function( callback, props, width, height ) {
 456+ var _this = this;
 457+
 458+ if (!mw.isDefined( props ) ) {
 459+ props = [];
 460+ }
 461+
 462+ var params = {
 463+ 'prop': 'stashimageinfo',
 464+ 'siifilekey': _this.fileKey,
 465+ 'siiprop': props.join( '|' )
 466+ };
 467+
 468+ if ( mw.isDefined( width ) || mw.isDefined( height ) ) {
 469+ if ( ! $j.inArray( 'url', props ) ) {
 470+ props.push( 'url' );
 471+ }
 472+ if ( mw.isDefined( width ) ) {
 473+ params['siiurlwidth'] = width;
 474+ }
 475+ if ( mw.isDefined( height ) ) {
 476+ params['siiurlheight'] = height;
 477+ }
 478+ }
 479+
 480+ var ok = function( data ) {
 481+ if ( !data || !data.query || !data.query.stashimageinfo ) {
 482+ mw.log("mw.UploadWizardUpload::getStashImageInfo> No data? ");
 483+ callback( null );
 484+ return;
 485+ }
 486+ callback( data.query.stashimageinfo );
 487+ };
 488+
 489+ var err = function( code, result ) {
 490+ mw.log( 'mw.UploadWizardUpload::getStashImageInfo> error: ' + code, 'debug' );
 491+ callback( null );
 492+ };
 493+
 494+ this.api.get( params, { ok: ok, err: err } );
 495+ },
 496+
 497+
 498+ /**
 499+ * Get information about published images
 500+ * (There is some overlap with getStashedImageInfo, but it's different at every stage so it's clearer to have separate functions)
 501+ * See API documentation for prop=imageinfo for what 'props' can contain
 502+ * @param {Function} callback -- called with null if failure, with imageinfo data structure if success
 503+ * @param {Array} properties to extract
 504+ * @param {Number} optional, width of thumbnail. Will force 'url' to be added to props
 505+ * @param {Number} optional, height of thumbnail. Will force 'url' to be added to props
 506+ */
 507+ getImageInfo: function( callback, props, width, height ) {
 508+ var _this = this;
 509+ if (!mw.isDefined( props ) ) {
 510+ props = [];
 511+ }
 512+ var requestedTitle = _this.title.getPrefixedText();
 513+ var params = {
 514+ 'prop': 'imageinfo',
 515+ 'titles': requestedTitle,
 516+ 'iiprop': props.join( '|' )
 517+ };
 518+
 519+ if ( mw.isDefined( width ) || mw.isDefined( height ) ) {
 520+ if ( ! $j.inArray( 'url', props ) ) {
 521+ props.push( 'url' );
 522+ }
 523+ if ( mw.isDefined( width ) ) {
 524+ params['iiurlwidth'] = width;
 525+ }
 526+ if ( mw.isDefined( height ) ) {
 527+ params['iiurlheight'] = height;
 528+ }
 529+ }
 530+
 531+ var ok = function( data ) {
 532+ if ( data && data.query && data.query.pages ) {
 533+ var found = false;
 534+ $j.each( data.query.pages, function( pageId, page ) {
 535+ if ( page.title && page.title === requestedTitle && page.imageinfo ) {
 536+ found = true;
 537+ callback( page.imageinfo );
 538+ return false;
 539+ }
 540+ } );
 541+ if ( found ) {
 542+ return;
 543+ }
 544+ }
 545+ mw.log("mw.UploadWizardUpload::getImageInfo> No data matching " + requestedTitle + " ? ");
 546+ callback( null );
 547+ };
 548+
 549+ var err = function( code, result ) {
 550+ mw.log( 'mw.UploadWizardUpload::getImageInfo> error: ' + code, 'debug' );
 551+ callback( null );
 552+ };
 553+
 554+ this.api.get( params, { ok: ok, err: err } );
 555+ },
 556+
 557+
 558+ /**
 559+ * Get the upload handler per browser capabilities
 560+ */
 561+ getUploadHandler: function(){
 562+ if( !this.uploadHandler ){
 563+ if( mw.UploadWizard.config[ 'enableFirefogg' ]
 564+ &&
 565+ typeof( Firefogg ) != 'undefined'
 566+ ) {
 567+ mw.log("mw.UploadWizard::getUploadHandler> FirefoggHandler");
 568+ this.uploadHandler = new mw.FirefoggHandler( this, this.api );
 569+ } else if( mw.UploadWizard.config[ 'enableFormData' ] &&
 570+ (($j.browser.mozilla && $j.browser.version >= '5.0') ||
 571+ ($j.browser.webkit && $j.browser.version >= '534.28'))
 572+ ) {
 573+ mw.log("mw.UploadWizard::getUploadHandler> ApiUploadFormDataHandler");
 574+ this.uploadHandler = new mw.ApiUploadFormDataHandler( this, this.api );
 575+ } else {
 576+ // By default use the apiUploadHandler
 577+ mw.log("mw.UploadWizard::getUploadHandler> ApiUploadHandler");
 578+ this.uploadHandler = new mw.ApiUploadHandler( this, this.api );
 579+ }
 580+ }
 581+ return this.uploadHandler;
 582+ },
 583+
 584+ /**
 585+ * Explicitly fetch a thumbnail for a stashed upload of the desired width.
 586+ * Publishes to any event listeners that might have wanted it.
 587+ *
 588+ * @param width - desired width of thumbnail (height will scale to match)
 589+ * @param height - (optional) maximum height of thumbnail
 590+ */
 591+ getAndPublishApiThumbnail: function( key, width, height ) {
 592+ var _this = this;
 593+
 594+ if ( mw.isEmpty( height ) ) {
 595+ height = -1;
 596+ }
 597+
 598+ if ( !mw.isDefined( _this.thumbnailPublishers[key] ) ) {
 599+ var thumbnailPublisher = function( thumbnails ) {
 600+ if ( thumbnails === null ) {
 601+ // the api call failed somehow, no thumbnail data.
 602+ $j.publishReady( key, null );
 603+ } else {
 604+ // ok, the api callback has returned us information on where the thumbnail(s) ARE, but that doesn't mean
 605+ // they are actually there yet. Keep trying to set the source ( which should trigger "error" or "load" event )
 606+ // on the image. If it loads publish the event with the image. If it errors out too many times, give up and publish
 607+ // the event with a null.
 608+ $j.each( thumbnails, function( i, thumb ) {
 609+ if ( thumb.thumberror || ( ! ( thumb.thumburl && thumb.thumbwidth && thumb.thumbheight ) ) ) {
 610+ mw.log( "mw.UploadWizardUpload::getThumbnail> thumbnail error or missing information" );
 611+ $j.publishReady( key, null );
 612+ return;
 613+ }
 614+
 615+ // try to load this image with exponential backoff
 616+ // if the delay goes past 8 seconds, it gives up and publishes the event with null
 617+ var timeoutMs = 100;
 618+ var image = document.createElement( 'img' );
 619+ image.width = thumb.thumbwidth;
 620+ image.height = thumb.thumbheight;
 621+ $j( image )
 622+ .load( function() {
 623+ // cache this thumbnail
 624+ _this.thumbnails[key] = image;
 625+ // publish the image to anyone who wanted it
 626+ $j.publishReady( key, image );
 627+ } )
 628+ .error( function() {
 629+ // retry with exponential backoff
 630+ if ( timeoutMs < 8000 ) {
 631+ setTimeout( function() {
 632+ timeoutMs = timeoutMs * 2 + Math.round( Math.random() * ( timeoutMs / 10 ) );
 633+ setSrc();
 634+ }, timeoutMs );
 635+ } else {
 636+ $j.publishReady( key, null );
 637+ }
 638+ } );
 639+
 640+ // executing this should cause a .load() or .error() event on the image
 641+ function setSrc() {
 642+ image.src = thumb.thumburl;
 643+ }
 644+
 645+ // and, go!
 646+ setSrc();
 647+ } );
 648+ }
 649+ };
 650+
 651+ _this.thumbnailPublishers[key] = thumbnailPublisher;
 652+ if ( _this.state !== 'complete' ) {
 653+ _this.getStashImageInfo( thumbnailPublisher, [ 'url' ], width, height );
 654+ } else {
 655+ _this.getImageInfo( thumbnailPublisher, [ 'url' ], width, height );
 656+ }
 657+
 658+ }
 659+ },
 660+
 661+ /**
 662+ * Return the orientation of the image in degrees. Relies on metadata that
 663+ * may have been extracted at filereader stage, or after the upload when we fetch metadata. Default returns 0.
 664+ * @return {Integer} orientation in degrees: 0, 90, 180 or 270
 665+ */
 666+ getOrientationDegrees: function() {
 667+ var orientation = 0;
 668+ if ( this.imageinfo && this.imageinfo.metadata && this.imageinfo.metadata.orientation ) {
 669+ switch ( this.imageinfo.metadata.orientation ) {
 670+ case 8:
 671+ orientation = 90; // 'top left' -> 'left bottom'
 672+ break;
 673+ case 3:
 674+ orientation = 180; // 'top left' -> 'bottom right'
 675+ break;
 676+ case 6:
 677+ orientation = 270; // 'top left' -> 'right top'
 678+ break;
 679+ case 1:
 680+ default:
 681+ orientation = 0; // 'top left' -> 'top left'
 682+ break;
 683+
 684+ }
 685+ }
 686+ return orientation;
 687+ },
 688+
 689+ /**
 690+ * Fit an image into width & height constraints with scaling factor
 691+ * @param {HTMLImageElement}
 692+ * @param {Object} with width & height properties
 693+ * @return {Number}
 694+ */
 695+ getScalingFromConstraints: function( image, constraints ) {
 696+ var scaling = 1;
 697+ $j.each( [ 'width', 'height' ], function( i, dim ) {
 698+ if ( constraints[dim] && image[dim] > constraints[dim] ) {
 699+ var s = constraints[dim] / image[dim];
 700+ if ( s < scaling ) {
 701+ scaling = s;
 702+ }
 703+ }
 704+ } );
 705+ return scaling;
 706+ },
 707+
 708+ /**
 709+ * Given an image (already loaded), dimension constraints
 710+ * return canvas object scaled & transformedi ( & rotated if metadata indicates it's needed )
 711+ * @param {HTMLImageElement}
 712+ * @param {Object} containing width & height constraints
 713+ * @return {HTMLCanvasElement}
 714+ */
 715+ getTransformedCanvasElement: function( image, constraints ) {
 716+
 717+ var rotation = 0;
 718+
 719+ // if this wiki can rotate images to match their EXIF metadata,
 720+ // we should do the same in our preview
 721+ if ( mw.config.get( 'wgFileCanRotate' ) ) {
 722+ var angle = this.getOrientationDegrees();
 723+ rotation = angle ? 360 - angle : 0;
 724+ }
 725+
 726+ // swap scaling constraints if needed by rotation...
 727+ var scaleConstraints;
 728+ if ( rotation === 90 || rotation === 270 ) {
 729+ scaleConstraints = {
 730+ width: constraints.height,
 731+ height: constraints.width
 732+ };
 733+ } else {
 734+ scaleConstraints = {
 735+ width: constraints.width,
 736+ height: constraints.height
 737+ };
 738+ }
 739+
 740+ var scaling = this.getScalingFromConstraints( image, constraints );
 741+
 742+ var width = image.width * scaling;
 743+ var height = image.height * scaling;
 744+
 745+ // Determine the offset required to center the image
 746+ var dx = (constraints.width - width) / 2;
 747+ var dy = (constraints.height - height) / 2;
 748+
 749+ switch ( rotation ) {
 750+ // If a rotation is applied, the direction of the axis
 751+ // changes as well. You can derive the values below by
 752+ // drawing on paper an axis system, rotate it and see
 753+ // where the positive axis direction is
 754+ case 90:
 755+ x = dx;
 756+ y = dy - constraints.height;
 757+ break;
 758+ case 180:
 759+ x = dx - constraints.width;
 760+ y = dy - constraints.height;
 761+ break;
 762+ case 270:
 763+ x = dx - constraints.width;
 764+ y = dy;
 765+ break;
 766+ case 0:
 767+ default:
 768+ x = dx;
 769+ y = dy;
 770+ break;
 771+ }
 772+
 773+ var $canvas = $j( '<canvas></canvas>' ).attr( constraints );
 774+ var ctx = $canvas[0].getContext( '2d' );
 775+ ctx.clearRect( 0, 0, width, height );
 776+ ctx.rotate( rotation / 180 * Math.PI );
 777+ ctx.drawImage( image, x, y, width, height );
 778+
 779+ return $canvas;
 780+ },
 781+
 782+ /**
 783+ * Return a browser-scaled image element, given an image and constraints.
 784+ * @param {HTMLImageElement}
 785+ * @param {Object} with width and height properties
 786+ * @return {HTMLImageElement} with same src, but different attrs
 787+ */
 788+ getBrowserScaledImageElement: function( image, constraints ) {
 789+ var scaling = this.getScalingFromConstraints( image, constraints );
 790+ return $j( '<img/>' )
 791+ .attr( {
 792+ width: parseInt( image.width * scaling, 10 ),
 793+ height: parseInt( image.height * scaling, 10 ),
 794+ src: image.src
 795+ } )
 796+ .css( {
 797+ 'margin-top': ( parseInt( ( constraints.height - image.height * scaling ) / 2, 10 ) ).toString() + 'px'
 798+ } );
 799+ },
 800+
 801+ /**
 802+ * Return an element suitable for the preview of a certain size. Uses canvas when possible
 803+ * @param {HTMLImageElement}
 804+ * @param {Integer} width
 805+ * @param {Integer} height
 806+ * @return {HTMLCanvasElement|HTMLImageElement}
 807+ */
 808+ getScaledImageElement: function( image, width, height ) {
 809+ if ( typeof width === 'undefined' || width === null || width <= 0 ) {
 810+ width = mw.UploadWizard.config['thumbnailWidth'];
 811+ }
 812+ var constraints = {
 813+ width: parseInt( width, 10 ),
 814+ height: ( mw.isDefined( height ) ? parseInt( height, 10 ) : null )
 815+ };
 816+
 817+ return mw.canvas.isAvailable() ? this.getTransformedCanvasElement( image, constraints )
 818+ : this.getBrowserScaledImageElement( image, constraints );
 819+ },
 820+
 821+ /**
 822+ * Given a jQuery selector, subscribe to the "ready" event that fills the thumbnail
 823+ * This will trigger if the thumbnail is added in the future or if it already has been
 824+ *
 825+ * @param selector
 826+ * @param width Width constraint
 827+ * @param height Height constraint (optional)
 828+ * @param boolean add lightbox large preview when ready
 829+ */
 830+ setThumbnail: function( selector, width, height, isLightBox ) {
 831+ var _this = this;
 832+
 833+ /**
 834+ * This callback will add an image to the selector, using in-browser scaling if necessary
 835+ * @param {HTMLImageElement}
 836+ */
 837+ var placed = false;
 838+ var placeImageCallback = function( image ) {
 839+ if ( image === null ) {
 840+ $j( selector ).addClass( 'mwe-upwiz-file-preview-broken' );
 841+ _this.ui.setStatus( 'mwe-upwiz-thumbnail-failed' );
 842+ return;
 843+ }
 844+ var elm = _this.getScaledImageElement( image, width, height );
 845+ // add the image to the DOM, finally
 846+ $j( selector )
 847+ .css( { background: 'none' } )
 848+ .html(
 849+ $j( '<a/></a>' )
 850+ .addClass( "mwe-upwiz-thumbnail-link" )
 851+ .append( elm )
 852+ );
 853+ placed = true;
 854+ };
 855+
 856+ // Listen for even which says some kind of thumbnail is available.
 857+ // The argument is an either an ImageHtmlElement ( if we could get the thumbnail locally ) or the string 'api' indicating you
 858+ // now need to get the scaled thumbnail via the API
 859+ $.subscribeReady(
 860+ 'thumbnails.' + _this.index,
 861+ function ( x ) {
 862+ if ( isLightBox ) {
 863+ _this.setLightBox( selector );
 864+ }
 865+ if ( !placed ) {
 866+ if ( x === 'api' ) {
 867+ // get the thumbnail via API. This also works with an async pub/sub model; if this thumbnail was already
 868+ // fetched for some reason, we'll get it immediately
 869+ var key = 'apiThumbnail.' + _this.index + ',width=' + width + ',height=' + height;
 870+ $.subscribeReady( key, placeImageCallback );
 871+ _this.getAndPublishApiThumbnail( key, width, height );
 872+ } else if ( x instanceof HTMLImageElement ) {
 873+ placeImageCallback( x );
 874+ } else {
 875+ // something else went wrong, place broken image
 876+ mw.log( 'unexpected argument to thumbnails event: ' + x );
 877+ placeImageCallback( null );
 878+ }
 879+ }
 880+ }
 881+ );
 882+ },
 883+
 884+ /**
 885+ * set up lightbox behavior for non-complete thumbnails
 886+ * TODO center this
 887+ * @param selector
 888+ */
 889+ setLightBox: function( selector ) {
 890+ var _this = this;
 891+ var $imgDiv = $j( '<div></div>' ).css( 'text-align', 'center' );
 892+ $j( selector )
 893+ .click( function() {
 894+ // get large preview image
 895+ // open large preview in modal dialog box
 896+ $j( '<div class="mwe-upwiz-lightbox"></div>' )
 897+ .append( $imgDiv )
 898+ .dialog( {
 899+ 'width': mw.UploadWizard.config[ 'largeThumbnailWidth' ],
 900+ 'height': mw.UploadWizard.config[ 'largeThumbnailMaxHeight' ],
 901+ 'autoOpen': true,
 902+ 'title': gM( 'mwe-upwiz-image-preview' ),
 903+ 'modal': true,
 904+ 'resizable': false
 905+ } );
 906+ _this.setThumbnail(
 907+ $imgDiv,
 908+ mw.UploadWizard.config[ 'largeThumbnailWidth' ],
 909+ mw.UploadWizard.config[ 'largeThumbnailMaxHeight' ],
 910+ false /* obviously the largeThumbnail doesn't have a lightbox itself! */
 911+ );
 912+ return false;
 913+ } ); // close thumbnail click function
 914+ }
 915+
 916+};
 917+
 918+} )( jQuery );
Property changes on: branches/wmf/1.17wmf1/extensions/UploadWizard/resources/mw.UploadWizardUpload.js
___________________________________________________________________
Added: svn:eol-style
1919 + native
Index: branches/wmf/1.17wmf1/extensions/UploadWizard/resources/mw.UploadWizardLicenseInput.js
@@ -58,7 +58,7 @@
5959 if ( mw.isDefined( mw.UploadWizard.config.licenses[name] ) ) {
6060 var license = { name: name, props: mw.UploadWizard.config.licenses[name] };
6161 _this.licenses.push( license );
62 - var templates = mw.isDefined( license.props['templates'] ) ? license.props.templates : [ license.name ];
 62+ var templates = mw.isDefined( license.props['templates'] ) ? license.props.templates.slice(0) : [ license.name ];
6363 var origTemplateString = templates.join( '|' );
6464 if ( mw.isDefined( config['prependTemplates'] ) ) {
6565 $j.each( config['prependTemplates'], function( i, template ) {
Index: branches/wmf/1.17wmf1/extensions/UploadWizard/resources/mw.UploadWizardUploadInterface.js
@@ -438,10 +438,10 @@
439439 .children()
440440 .filter( function() { return this !== _this.div; } )
441441 .removeClass('hover');
442 - }, false );
 442+ } );
443443 $div.bind( 'mouseleave mouseout', function() {
444444 $div.removeClass( 'hover' );
445 - }, false );
 445+ } );
446446 $j( _this.div ).trigger( 'filled' );
447447 } else {
448448 $j( _this.div ).trigger( 'filenameAccepted' );

Past revisions this follows-up on

RevisionCommit summaryAuthorDate
r97517add clear field button for Bug 30886 - "Clear" Button for Search Fieldpreilly17:45, 19 September 2011
r97593fix bug #30237 by ensuring we get a copy of the configured templates via slic...neilk02:15, 20 September 2011

Status & tagging log