Jelajahi Sumber

Updates to v4.3.1 Fix #514, Fix #554, Fix #559, Fix #565, Fix #567

Kartik Visweswaran 9 tahun lalu
induk
melakukan
52f30624c7

+ 13 - 6
CHANGE.md

@@ -1,12 +1,19 @@
 Change Log: `bootstrap-fileinput`
 =================================
 
-## version 4.3.1
-
-**Date:** 29-Jan-2016
-
-1. (enh #555): Set default value for `removeFromPreviewOnError` to `false`.
-2. (enh #557): Enhance default file type parsing to intelligently not render unpreviewable content.
+## version 4.3.1 (under development)
+
+**Date:** 12-Feb-2016
+
+1. (enh #514): Set default value for `removeFromPreviewOnError` to `false`.
+2. (enh #554): Update documentation and demos to include `webkitdirectory` for upload.
+3. (enh #555): Set default value for `removeFromPreviewOnError` to `false`.
+4. (enh #557): Enhance default file type parsing to intelligently not render unpreviewable content.
+5. (enh #559): Allow custom error display styles (e.g. via bootstrap dialog) through these changes:
+    - added `msg` param in `fileerror`, `fileuploaderror`, and `filefoldererror` events.
+6. (enh #560): Update French Translations.
+7. (enh #565): Enhance progress bar display when upload is aborted or cancelled.
+8. (enh #567): New properties and improved messages.
 
 ## version 4.3.0
 

+ 1 - 1
composer.json

@@ -18,7 +18,7 @@
     },
     "extra": {
         "branch-alias": {
-            "dev-master": "4.2.x-dev"
+            "dev-master": "4.3.x-dev"
         }
     }
 }

+ 55 - 33
js/fileinput.js

@@ -3,12 +3,12 @@
  * @version 4.3.1
  *
  * File input styled for Bootstrap 3.0 that utilizes HTML5 File Input's advanced features including the FileReader API.
- * 
+ *
  * The plugin drastically enhances the HTML file input to preview multiple files on the client before upload. In
  * addition it provides the ability to preview content of images, text, videos, audio, html, flash and other objects.
  * It also offers the ability to upload and delete files using AJAX, and add files in batches (i.e. preview, append,
  * or remove before upload).
- * 
+ *
  * Author: Kartik Visweswaran
  * Copyright: 2015, Kartik Visweswaran, Krajee.com
  * For more JQuery plugins visit http://plugins.krajee.com
@@ -589,6 +589,7 @@
             t = self.getLayoutTemplate('progress');
             self.progressTemplate = t.replace('{class}', self.progressClass);
             self.progressCompleteTemplate = t.replace('{class}', self.progressCompleteClass);
+            self.progressErrorTemplate = t.replace('{class}', self.progressErrorClass);
             self.dropZoneEnabled = hasDragDropSupport() && self.dropZoneEnabled;
             self.isDisabled = self.$element.attr('disabled') || self.$element.attr('readonly');
             self.isUploadable = hasFileUploadSupport() && !isEmpty(self.uploadUrl);
@@ -844,30 +845,25 @@
                 data.abortData = self.ajaxAborted.data || {};
                 data.abortMessage = self.ajaxAborted.message;
                 self.cancel();
-                self.setProgress(100);
+                self.setProgress(100, self.$progress, self.msgCancelled);
                 self.showUploadError(self.ajaxAborted.message, data, 'filecustomerror');
                 return true;
             }
             return false;
         },
-        noFilesError: function (params) {
-            var self = this, label = self.minFileCount > 1 ? self.filePlural : self.fileSingle,
-                msg = self.msgFilesTooLess.replace('{n}', self.minFileCount).replace('{files}', label),
-                $error = self.$errorContainer;
-            self.addError(msg);
-            self.isError = true;
-            self.updateFileDetails(0);
-            $error.fadeIn(800);
-            self.raise('fileerror', [params]);
-            self.clearFileInput();
-            addCss(self.$container, 'has-error');
+        setProgressCancelled: function () {
+            var self = this;
+            self.setProgress(100, self.$progress, self.msgCancelled);
         },
-        setProgress: function (p, $el) {
-            var self = this, pct = Math.min(p, 100),
-                template = pct < 100 ? self.progressTemplate : self.progressCompleteTemplate;
+        setProgress: function (p, $el, error) {
+            var self = this, pct = Math.min(p, 100), template = pct < 100 ? self.progressTemplate :
+                (error ? self.progressErrorTemplate : self.progressCompleteTemplate);
             $el = $el || self.$progress;
             if (!isEmpty(template)) {
                 $el.html(template.replace(/\{percent}/g, pct));
+                if (error) {
+                    $el.find('[role="progressbar"]').html(error);
+                }
             }
         },
         lock: function () {
@@ -1215,6 +1211,7 @@
                     xhr[i].abort();
                 }
             }
+            self.setProgressCancelled();
             self.getThumbs().each(function () {
                 var $thumb = $(this), ind = $thumb.attr('data-fileindex');
                 $thumb.removeClass('file-uploading');
@@ -1558,7 +1555,7 @@
                 $.extend(true, params, outData);
                 if (self.abort(params)) {
                     jqXHR.abort();
-                    self.setProgress(100);
+                    self.setProgressCancelled();
                 }
             };
             fnSuccess = function (data, textStatus, jqXHR) {
@@ -1650,7 +1647,7 @@
                 self.raise('filebatchpreupload', [outData]);
                 if (self.abort(outData)) {
                     jqXHR.abort();
-                    self.setProgress(100);
+                    self.setProgressCancelled();
                 }
             };
             fnSuccess = function (data, textStatus, jqXHR) {
@@ -1745,7 +1742,7 @@
                 params.xhr = jqXHR;
                 if (self.abort(params)) {
                     jqXHR.abort();
-                    self.setProgress(100);
+                    self.setProgressCancelled();
                 }
             };
             fnSuccess = function (data, textStatus, jqXHR) {
@@ -1896,25 +1893,26 @@
             }
         },
         showFolderError: function (folders) {
-            var self = this, $error = self.$errorContainer;
+            var self = this, $error = self.$errorContainer, msg;
             if (!folders) {
                 return;
             }
-            self.addError(self.msgFoldersNotAllowed.replace(/\{n}/g, folders));
-            $error.fadeIn(800);
+            msg = self.msgFoldersNotAllowed.replace(/\{n}/g, folders);
+            self.addError(msg);
             addCss(self.$container, 'has-error');
-            self.raise('filefoldererror', [folders]);
+            $error.fadeIn(800);
+            self.raise('filefoldererror', [folders, msg]);
         },
         showUploadError: function (msg, params, event) {
-            var self = this, $error = self.$errorContainer, ev = event || 'fileuploaderror',
-                e = params && params.id ? '<li data-file-id="' + params.id + '">' + msg + '</li>' : '<li>' + msg + '</li>';
+            var self = this, $error = self.$errorContainer, ev = event || 'fileuploaderror', e = params && params.id ?
+            '<li data-file-id="' + params.id + '">' + msg + '</li>' : '<li>' + msg + '</li>';
             if ($error.find('ul').length === 0) {
                 self.addError('<ul>' + e + '</ul>');
             } else {
                 $error.find('ul').append(e);
             }
             $error.fadeIn(800);
-            self.raise(ev, [params]);
+            self.raise(ev, [params, msg]);
             self.$container.removeClass('file-input-new');
             addCss(self.$container, 'has-error');
             return true;
@@ -1925,7 +1923,7 @@
             params.reader = self.reader;
             self.addError(msg);
             $error.fadeIn(800);
-            self.raise(ev, [params]);
+            self.raise(ev, [params, msg]);
             if (!self.isUploadable) {
                 self.clearFileInput();
             }
@@ -1934,6 +1932,18 @@
             self.$btnUpload.attr('disabled', true);
             return true;
         },
+        noFilesError: function (params) {
+            var self = this, label = self.minFileCount > 1 ? self.filePlural : self.fileSingle,
+                msg = self.msgFilesTooLess.replace('{n}', self.minFileCount).replace('{files}', label),
+                $error = self.$errorContainer;
+            self.addError(msg);
+            self.isError = true;
+            self.updateFileDetails(0);
+            $error.fadeIn(800);
+            self.raise('fileerror', [params, msg]);
+            self.clearFileInput();
+            addCss(self.$container, 'has-error');
+        },
         errorHandler: function (evt, caption) {
             var self = this, err = evt.target.error;
             /** @namespace err.NOT_FOUND_ERR */
@@ -2453,13 +2463,22 @@
             return true;
         },
         setCaption: function (content, isError) {
-            var self = this, title, out;
+            var self = this, title, out, n, cap, stack = self.getFileStack();
+            if (!self.$caption.length) {
+                return;
+            }
             if (isError) {
                 title = $('<div>' + self.msgValidationError + '</div>').text();
-                out = '<span class="' + self.msgValidationErrorClass + '">' +
-                    self.msgValidationErrorIcon + title + '</span>';
+                n = stack.length;
+                if (n) {
+                    cap = n === 1 && stack[0] ? self.getFileNames()[0] : self.getMsgSelected(n);
+                } else {
+                    cap = self.getMsgSelected(self.msgNo);
+                }
+                out = '<span class="' + self.msgValidationErrorClass + '">' + self.msgValidationErrorIcon +
+                    (isEmpty(content) ? cap : content) + '</span>';
             } else {
-                if (isEmpty(content) || self.$caption.length === 0) {
+                if (isEmpty(content)) {
                     return;
                 }
                 title = $('<div>' + content + '</div>').text();
@@ -2654,6 +2673,7 @@
         progressThumbClass: "progress-bar progress-bar-success progress-bar-striped active",
         progressClass: "progress-bar progress-bar-success progress-bar-striped active",
         progressCompleteClass: "progress-bar progress-bar-success",
+        progressErrorClass: "progress-bar progress-bar-danger",
         previewFileType: 'image',
         zoomIndicator: '<i class="glyphicon glyphicon-zoom-in"></i>',
         elCaptionContainer: null,
@@ -2684,6 +2704,8 @@
         cancelTitle: 'Abort ongoing upload',
         uploadLabel: 'Upload',
         uploadTitle: 'Upload selected files',
+        msgNo: 'No',
+        msgCancelled: 'Cancelled',
         msgZoomTitle: 'View details',
         msgZoomModalHeading: 'Detailed Preview',
         msgSizeTooLarge: 'File "{name}" (<b>{size} KB</b>) exceeds maximum allowed upload size of <b>{maxSize} KB</b>.',
@@ -2697,7 +2719,7 @@
         msgInvalidFileType: 'Invalid type for file "{name}". Only "{types}" files are supported.',
         msgInvalidFileExtension: 'Invalid extension for file "{name}". Only "{extensions}" files are supported.',
         msgUploadAborted: 'The file upload was aborted',
-        msgValidationError: 'File Upload Error',
+        msgValidationError: 'Validation Error',
         msgLoading: 'Loading file {index} of {files} &hellip;',
         msgProgress: 'Loading file {index} of {files} - {name} - {percent}% completed.',
         msgSelected: '{n} {files} selected',

File diff ditekan karena terlalu besar
+ 2 - 2
js/fileinput.min.js


+ 3 - 1
js/fileinput_locale_LANG.js

@@ -21,6 +21,8 @@
         cancelTitle: 'Abort ongoing upload',
         uploadLabel: 'Upload',
         uploadTitle: 'Upload selected files',
+        msgNo: 'No',
+        msgCancelled: 'Cancelled',
         msgZoomTitle: 'View details',
         msgZoomModalHeading: 'Detailed Preview',
         msgSizeTooLarge: 'File "{name}" (<b>{size} KB</b>) exceeds maximum allowed upload size of <b>{maxSize} KB</b>.',
@@ -34,7 +36,7 @@
         msgInvalidFileType: 'Invalid type for file "{name}". Only "{types}" files are supported.',
         msgInvalidFileExtension: 'Invalid extension for file "{name}". Only "{extensions}" files are supported.',
         msgUploadAborted: 'The file upload was aborted',
-        msgValidationError: 'File Upload Error',
+        msgValidationError: 'Validation Error',
         msgLoading: 'Loading file {index} of {files} &hellip;',
         msgProgress: 'Loading file {index} of {files} - {name} - {percent}% completed.',
         msgSelected: '{n} {files} selected',

+ 3 - 1
js/fileinput_locale_ar.js

@@ -22,6 +22,8 @@
         cancelTitle: 'إنهاء الرفع الحالي',
         uploadLabel: 'رفع',
         uploadTitle: 'رفع الملفات المختارة',
+        msgNo: 'لا',
+        msgCancelled: 'ألغيت',
         msgZoomTitle: 'مشاهدة التفاصيل',
         msgZoomModalHeading: 'معاينة تفصيلية',
         msgSizeTooLarge: 'الملف "{name}" (<b>{size} ك.ب</b>) تعدى الحد الأقصى المسموح للرفع <b>{maxSize} ك.ب</b>.',
@@ -35,7 +37,7 @@
         msgInvalidFileType: 'نوعية غير صالحة للملف "{name}". فقط هذه النوعيات مدعومة "{types}".',
         msgInvalidFileExtension: 'امتداد غير صالح للملف "{name}". فقط هذه الملفات مدعومة "{extensions}".',
         msgUploadAborted: 'تم إلغاء رفع الملف',
-        msgValidationError: 'خطأ في رفع الملف',
+        msgValidationError: 'خطأ التحقق من صحة',
         msgLoading: 'تحميل ملف {index} من {files} &hellip;',
         msgProgress: 'تحميل ملف {index} من {files} - {name} - {percent}% منتهي.',
         msgSelected: '{n} {files} مختار(ة)',

+ 3 - 1
js/fileinput_locale_bg.js

@@ -21,6 +21,8 @@
         cancelTitle: 'Откажи качването',
         uploadLabel: 'Качи',
         uploadTitle: 'Качи избраните файлове',
+        msgNo: 'Не',
+        msgCancelled: 'Отменен',
         msgZoomTitle: 'Вижте детайли',
         msgZoomModalHeading: 'Детайлен преглед',
         msgSizeTooLarge: 'Файла "{name}" (<b>{size} KB</b>) надвишава максималните разрешени <b>{maxSize} KB</b>.',
@@ -34,7 +36,7 @@
         msgInvalidFileType: 'Невалиден тип на файла "{name}". Разрешени са само "{types}".',
         msgInvalidFileExtension: 'Невалидно разрешение на "{name}". Разрешени са само "{extensions}".',
         msgUploadAborted: 'Качите файла, бе прекратена',
-        msgValidationError: 'Грешка при качване на файл.',
+        msgValidationError: 'утвърждаване грешка',
         msgLoading: 'Зареждане на файл {index} от общо {files} &hellip;',
         msgProgress: 'Зареждане на файл {index} от общо {files} - {name} - {percent}% завършени.',
         msgSelected: '{n} {files} избрани',

+ 3 - 1
js/fileinput_locale_ca.js

@@ -21,6 +21,8 @@
         cancelTitle: 'Avortar la pujada en curs',
         uploadLabel: 'Pujar arxiu',
         uploadTitle: 'Pujar arxius seleccionats',
+        msgNo: 'No',
+        msgCancelled: 'cancel·lat',
         msgZoomTitle: 'Veure detalls',
         msgZoomModalHeading: 'Vista prèvia detallada',
         msgSizeTooLarge: 'Arxiu "{name}" (<b>{size} KB</b>) excedeix la mida màxima permès de <b>{maxSize} KB</b>.',
@@ -34,7 +36,7 @@
         msgInvalidFileType: 'Tipus de fitxer no vàlid per a "{name}". Només arxius "{types}" són permesos.',
         msgInvalidFileExtension: 'Extensió de fitxer no vàlid per a "{name}". Només arxius "{extensions}" són permesos.',
         msgUploadAborted: 'La càrrega d\'arxius s\'ha cancel·lat',
-        msgValidationError: 'Error en pujar arxiu',
+        msgValidationError: 'Error de validació',
         msgLoading: 'Pujant fitxer {index} de {files} &hellip;',
         msgProgress: 'Pujant fitxer {index} de {files} - {name} - {percent}% completat.',
         msgSelected: '{n} {files} seleccionat(s)',

+ 3 - 1
js/fileinput_locale_cr.js

@@ -22,6 +22,8 @@
         cancelTitle: 'Prekini trenutno otpremanje',
         uploadLabel: 'Otpremi',
         uploadTitle: 'Otpremi označene datoteke',
+        msgNo: 'Ne',
+        msgCancelled: 'Otkazan',
         msgZoomTitle: 'Pregledavati pojedinosti',
         msgZoomModalHeading: 'Detaljni pregled',
         msgSizeTooLarge: 'Datoteka "{name}" (<b>{size} KB</b>) prekoračuje maksimalnu dozvoljenu veličinu datoteke od <b>{maxSize} KB</b>.',
@@ -35,7 +37,7 @@
         msgInvalidFileType: 'Datoteka "{name}" je pogrešnog formata. Dozvoljeni formati su "{types}".',
         msgInvalidFileExtension: 'Ekstenzija datoteke "{name}" nije dozvoljena. Dozvoljene ekstenzije su "{extensions}".',
         msgUploadAborted: 'Prijenos datoteka je prekinut',
-        msgValidationError: 'Greška prilikom otpremanja fajla',
+        msgValidationError: 'Provjera pogrešaka',
         msgLoading: 'Učitavanje datoteke {index} od {files} &hellip;',
         msgProgress: 'Učitavanje datoteke {index} od {files} - {name} - {percent}% završeno.',
         msgSelected: '{n} {files} je označeno',

+ 3 - 1
js/fileinput_locale_cz.js

@@ -21,6 +21,8 @@
         cancelTitle: 'Přerušit  nahrávání',
         uploadLabel: 'Nahrát',
         uploadTitle: 'Nahrát vybrané soubory',
+        msgNo: 'Ne',
+        msgCancelled: 'Zrušeno',
         msgZoomTitle: 'zobrazit podrobnosti',
         msgZoomModalHeading: 'Detailní náhled',
         msgSizeTooLarge: 'Soubor "{name}" (<b>{size} KB</b>): překročení - maximální povolená velikost <b>{maxSize} KB</b>.',
@@ -34,7 +36,7 @@
         msgInvalidFileType: 'Neplatný typ souboru "{name}". Pouze "{types}" souborů jsou podporovány.',
         msgInvalidFileExtension: 'Neplatná extenze souboru "{name}". Pouze "{extensions}" souborů jsou podporovány.',
         msgUploadAborted: 'Soubor nahrávání byl přerušen',
-        msgValidationError: 'Chyba nahrání souboru.',
+        msgValidationError: 'Chyba ověření',
         msgLoading: 'Nahrávání souboru {index} z {files} &hellip;',
         msgProgress: 'Nahrávání souboru {index} z {files} - {name} - {percent}% dokončeno.',
         msgSelected: '{n} {files} vybrano',

+ 3 - 1
js/fileinput_locale_da.js

@@ -21,6 +21,8 @@
         cancelTitle: 'Afbryd nuv&aelig;rende upload',
         uploadLabel: 'Upload',
         uploadTitle: 'Upload valgte filer',
+        msgNo: 'Ingen',
+        msgCancelled: 'aflyst',
         msgZoomTitle: 'Se detaljer',
         msgZoomModalHeading: 'Detaljeret visning',
         msgSizeTooLarge: 'Fil "{name}" (<b>{size} KB</b>) er st&oslash;rre end de tilladte <b>{maxSize} KB</b>.',
@@ -34,7 +36,7 @@
         msgInvalidFileType: 'Ukendt type for filen "{name}". Kun "{types}" kan bruges.',
         msgInvalidFileExtension: 'Ukendt filtype for filen "{name}". Kun "{extensions}" filer kan bruges.',
         msgUploadAborted: 'Filupload annulleret',
-        msgValidationError: 'Filupload fejl',
+        msgValidationError: 'Validering Fejl',
         msgLoading: 'Henter fil {index} af {files} &hellip;',
         msgProgress: 'Henter fil {index} af {files} - {name} - {percent}% f&aelig;rdiggjort.',
         msgSelected: '{n} {files} valgt',

+ 3 - 1
js/fileinput_locale_de.js

@@ -19,6 +19,8 @@
         cancelTitle: 'Hochladen abbrechen',
         uploadLabel: 'Hochladen',
         uploadTitle: 'Hochladen der ausgewählten Dateien',
+        msgNo: 'Nein',
+        msgCancelled: 'Abgebrochen',
         msgZoomTitle: 'Details anzeigen',
         msgZoomModalHeading: 'ausführliche Vorschau',
         msgSizeTooLarge: 'Datei "{name}" (<b>{size} KB</b>) überschreitet maximal zulässige Upload-Größe von <b>{maxSize} KB</b>.',
@@ -32,7 +34,7 @@
         msgInvalidFileType: 'Ungültiger Typ für Datei "{name}". Nur Dateien der Typen "{types}" werden unterstützt.',
         msgInvalidFileExtension: 'Ungültige Erweiterung für Datei "{name}". Nur Dateien mit der Endung "{extensions}" werden unterstützt.',
         msgUploadAborted: 'Der Datei-Upload wurde abgebrochen',
-        msgValidationError: 'Fehler beim Hochladen',
+        msgValidationError: 'Validierungs fehler',
         msgLoading: 'Lade Datei {index} von {files} hoch&hellip;',
         msgProgress: 'Datei {index} von {files} - {name} - zu {percent}% fertiggestellt.',
         msgSelected: '{n} {files} ausgewählt',

+ 3 - 1
js/fileinput_locale_el.js

@@ -21,6 +21,8 @@
         cancelTitle: 'Ακύρωση μεταφόρτωσης',
         uploadLabel: 'Μεταφόρτωση',
         uploadTitle: 'Μεταφόρτωση επιλεγμένων αρχείων',
+        msgNo: 'Όχι',
+        msgCancelled: 'Ακυρώθηκε',
         msgZoomTitle: 'Δείτε λεπτομέρειες',
         msgZoomModalHeading: 'λεπτομερής Προεπισκόπηση',
         msgSizeTooLarge: 'Το αρχείο "{name}" (<b>{size} KB</b>) υπερβαίνει το μέγιστο επιτρεπόμενο μέγεθος μεταφόρτωσης <b>{maxSize} KB</b>.',
@@ -34,7 +36,7 @@
         msgInvalidFileType: 'Μη έγκυρος τύπος αρχείου "{name}". Οι τύποι αρχείων που υποστηρίζονται είναι : "{types}".',
         msgInvalidFileExtension: 'Μη έγκυρη επέκταση αρχείου "{name}". Οι επεκτάσεις που υποστηρίζονται είναι:  "{extensions}" .',
         msgUploadAborted: 'Το ανέβασμα των αρχείων ματαιώθηκε',
-        msgValidationError: 'Σφάλμα κατά την μεταφόρτωση',
+        msgValidationError: 'Σπικύρωση σφάλματος',
         msgLoading: 'Φόρτωση αρχείου {index} από {files} &hellip;',
         msgProgress: 'Φόρτωση αρχείου {index} απο {files} - {name} - {percent}% ολοκληρώθηκε.',
         msgSelected: '{n} {files} επιλέχθηκαν',

+ 3 - 1
js/fileinput_locale_es.js

@@ -21,6 +21,8 @@
         cancelTitle: 'Abortar la subida en curso',
         uploadLabel: 'Subir archivo',
         uploadTitle: 'Subir archivos seleccionados',
+        msgNo: 'No',
+        msgCancelled: 'Cancelado',
         msgZoomTitle: 'Ver detalles',
         msgZoomModalHeading: 'Vista previa detallada',
         msgSizeTooLarge: 'Archivo "{name}" (<b>{size} KB</b>) excede el tamaño máximo permitido de <b>{maxSize} KB</b>.',
@@ -34,7 +36,7 @@
         msgInvalidFileType: 'Tipo de archivo no válido para "{name}". Sólo archivos "{types}" son permitidos.',
         msgInvalidFileExtension: 'Extensión de archivo no válido para "{name}". Sólo archivos "{extensions}" son permitidos.',
         msgUploadAborted: 'La carga de archivos se ha cancelado',
-        msgValidationError: 'Error al subir archivo',
+        msgValidationError: 'Error de validacion',
         msgLoading: 'Subiendo archivo {index} de {files} &hellip;',
         msgProgress: 'Subiendo archivo {index} de {files} - {name} - {percent}% completado.',
         msgSelected: '{n} {files} seleccionado(s)',

+ 3 - 1
js/fileinput_locale_fa.js

@@ -22,6 +22,8 @@
         cancelTitle: 'لغو بارگزاری جاری',
         uploadLabel: 'بارگذاری',
         uploadTitle: 'بارگذاری فایل‌های انتخاب شده',
+        msgNo: 'خیر',
+        msgCancelled: 'لغو',
         msgZoomTitle: 'دیدن جزئیات',
         msgZoomModalHeading: 'پیشنمایش مفصل',
         msgSizeTooLarge: 'فایل "{name}" (<b>{size} کیلوبایت</b>) از حداکثر مجاز <b>{maxSize} کیلوبایت</b>.',
@@ -35,7 +37,7 @@
         msgInvalidFileType: 'نوع فایل "{name}" معتبر نیست. فقط "{types}" پشیبانی می‌شود.',
         msgInvalidFileExtension: 'پسوند فایل "{name}" معتبر نیست. فقط "{extensions}" پشتیبانی می‌شود.',
         msgUploadAborted: 'The file upload was aborted',
-        msgValidationError: 'خطا در بارگزاری فایل',
+        msgValidationError: 'خطای اعتبار سنجی',
         msgLoading: 'بارگیری فایل {index} از {files} &hellip;',
         msgProgress: 'بارگیری فایل {index} از {files} - {name} - {percent}% تمام شد.',
         msgSelected: '{n} {files} انتخاب شده',

+ 4 - 2
js/fileinput_locale_fr.js

@@ -21,6 +21,8 @@
         cancelTitle: "Annuler l'envoi en cours",
         uploadLabel: 'Transférer',
         uploadTitle: 'Transférer les fichiers sélectionnés',
+        msgNo: 'Non',
+        msgCancelled: 'Annulé',
         msgZoomTitle: 'Voir les détails',
         msgZoomModalHeading: 'Aperçu détaillé',
         msgSizeTooLarge: 'Le fichier "{name}" (<b>{size} Ko</b>) dépasse la taille maximale autorisée qui est de <b>{maxSize} Ko</b>.',
@@ -34,7 +36,7 @@
         msgInvalidFileType: 'Type de document invalide pour "{name}". Seulement les documents de type "{types}" sont autorisés.',
         msgInvalidFileExtension: 'Extension invalide pour le fichier "{name}". Seules les extensions "{extensions}" sont autorisées.',
         msgUploadAborted: 'Le téléchargement du fichier a été interrompu',
-        msgValidationError: 'Erreur lors de la transmission du fichier',
+        msgValidationError: 'Erreur de validation',
         msgLoading: 'Transmission du fichier {index} sur {files}&hellip;',
         msgProgress: 'Transmission du fichier {index} sur {files} - {name} - {percent}% faits.',
         msgSelected: '{n} {files} sélectionné(s)',
@@ -55,4 +57,4 @@
             indicatorLoadingTitle: 'ajout ...'
         }
     };
-})(window.jQuery);
+})(window.jQuery);

+ 3 - 1
js/fileinput_locale_hu.js

@@ -21,6 +21,8 @@
         cancelTitle: 'Feltöltés megszakítása',
         uploadLabel: 'Feltöltés',
         uploadTitle: 'Kijelölt fájlok feltöltése',
+        msgNo: 'No',
+        msgCancelled: 'Cancelled',
         msgZoomTitle: 'Részletek megtekintése',
         msgZoomModalHeading: 'Részletes Preview',
         msgSizeTooLarge: '"{name}" fájl (<b>{size} KB</b>) mérete nagyobb a megengedettnél <b>{maxSize} KB</b>.',
@@ -34,7 +36,7 @@
         msgInvalidFileType: 'Nem megengedett fájl "{name}". Csak a "{types}" fájl típusok támogatottak.',
         msgInvalidFileExtension: 'Nem megengedett kiterjesztés / fájltípus "{name}". Csak a "{extensions}" kiterjesztés(ek) / fájltípus(ok) támogatottak.',
         msgUploadAborted: 'A fájl feltöltés megszakítva',
-        msgValidationError: 'Fájl ellenörzési hiba.',
+        msgValidationError: 'Érvényesítés hiba',
         msgLoading: '{index} / {files} töltése &hellip;',
         msgProgress: 'Feltöltés: {index} / {files} - {name} - {percent}% kész.',
         msgSelected: '{n} {files} kiválasztva.',

+ 3 - 1
js/fileinput_locale_id.js

@@ -22,6 +22,8 @@
         cancelTitle: 'Batalkan proses pengunggahan',
         uploadLabel: 'Unggah',
         uploadTitle: 'Unggah berkas terpilih',
+        msgNo: 'Tidak',
+        msgCancelled: 'Dibatalkan',
         msgZoomTitle: 'Tampilkan Rincian',
         msgZoomModalHeading: 'Pratinjau terperinci',
         msgSizeTooLarge: 'Berkas "{name}" (<b>{size} KB</b>) melebihi ukuran upload maksimal yaitu <b>{maxSize} KB</b>.',
@@ -35,7 +37,7 @@
         msgInvalidFileType: 'Jenis berkas "{name}" tidak sah. Hanya berkas "{types}" yang didukung.',
         msgInvalidFileExtension: 'Ekstensi berkas "{name}" tidak sah. Hanya ekstensi "{extensions}" yang didukung.',
         msgUploadAborted: 'Pengunggahan berkas dibatalkan',
-        msgValidationError: 'Kesalahan Pengunggahan berkas',
+        msgValidationError: 'Kesalahan validasi',
         msgLoading: 'Memuat {index} dari {files} berkas &hellip;',
         msgProgress: 'Memuat {index} dari {files} berkas - {name} - {percent}% selesai.',
         msgSelected: '{n} {files} dipilih',

+ 3 - 1
js/fileinput_locale_it.js

@@ -23,6 +23,8 @@
         cancelTitle: 'Annulla i caricamenti in corso',
         uploadLabel: 'Carica',
         uploadTitle: 'Carica i file selezionati',
+        msgNo: 'No',
+        msgCancelled: 'Annullato',
         msgZoomTitle: 'Guarda i dettagli',
         msgZoomModalHeading: 'Anteprima dettagliata',
         msgSizeTooLarge: 'Il file "{name}" (<b>{size} KB</b>) eccede la dimensione massima di caricamento di <b>{maxSize} KB</b>.',
@@ -36,7 +38,7 @@
         msgInvalidFileType: 'Tipo non valido per il file "{name}". Sono ammessi solo file di tipo "{types}".',
         msgInvalidFileExtension: 'Estensione non valida per il file "{name}". Sono ammessi solo file con estensione "{extensions}".',
         msgUploadAborted: 'Il caricamento del file è stata interrotta',
-        msgValidationError: 'Errore caricamento file',
+        msgValidationError: 'Errore di convalida',
         msgLoading: 'Caricamento file {index} di {files}&hellip;',
         msgProgress: 'Caricamento file {index} di {files} - {name} - {percent}% completato.',
         msgSelected: '{n} {files} selezionati',

+ 3 - 1
js/fileinput_locale_ja.js

@@ -28,6 +28,8 @@
         cancelTitle: 'アップロードをキャンセル',
         uploadLabel: 'アップロード',
         uploadTitle: '選択したファイルをアップロード',
+        msgNo: 'いいえ',
+        msgCancelled: 'キャンセル',
         msgZoomTitle: 'プレビュー',
         msgZoomModalHeading: 'ファイル詳細',
         msgSizeTooLarge: 'ファイル"{name}" (<b>{size} KB</b>)はアップロード可能な上限容量<b>{maxSize} KB</b>を超えています',
@@ -41,7 +43,7 @@
         msgInvalidFileType: '"{name}"は無効なファイル形式です。"{types}"形式のファイルのみサポートしています',
         msgInvalidFileExtension: '"{name}"は無効なファイル拡張子です。拡張子が"{extensions}"のファイルのみサポートしています',
         msgUploadAborted: 'ファイルのアップロードが中止されました',
-        msgValidationError: 'ファイルアップロード失敗',
+        msgValidationError: '検証エラー',
         msgLoading: '{files}個中{index}個目のファイルを読み込み中&hellip;',
         msgProgress: '{files}個中{index}個のファイルを読み込み中 - {name} - {percent}% 完了',
         msgSelected: '{n}個の{files}を選択',

+ 3 - 1
js/fileinput_locale_nl.js

@@ -21,6 +21,8 @@
         cancelTitle: 'Annuleer upload',
         uploadLabel: 'Upload',
         uploadTitle: 'Upload geselecteerde bestanden',
+        msgNo: 'Nee',
+        msgCancelled: 'Geannuleerd',
         msgZoomTitle: 'Bekijk details',
         msgZoomModalHeading: 'Gedetailleerd voorbeeld',
         msgSizeTooLarge: 'Bestand "{name}" (<b>{size} KB</b>) is groter dan de toegestane <b>{maxSize} KB</b>.',
@@ -34,7 +36,7 @@
         msgInvalidFileType: 'Geen geldig bestand "{name}". Alleen "{types}" zijn toegestaan.',
         msgInvalidFileExtension: 'Geen geldige extensie "{name}". Alleen "{extensions}" zijn toegestaan.',
         msgUploadAborted: 'Het uploaden van bestanden is afgebroken',
-        msgValidationError: 'Bestand upload fout',
+        msgValidationError: 'Bevestiging fout',
         msgLoading: 'Bestanden laden {index} van de {files} &hellip;',
         msgProgress: 'Bestanden laden {index} van de {files} - {name} - {percent}% compleet.',
         msgSelected: '{n} {files} geselecteerd',

+ 3 - 1
js/fileinput_locale_pl.js

@@ -21,6 +21,8 @@
         cancelTitle: 'Anuluj wysyłanie',
         uploadLabel: 'Wgraj',
         uploadTitle: 'Wgraj zaznaczone pliki',
+        msgNo: 'Nie',
+        msgCancelled: 'Odwołany',
         msgZoomTitle: 'Pokaż szczegóły',
         msgZoomModalHeading: 'Szczegółowe Podgląd',
         msgSizeTooLarge: 'Plik o nazwie "{name}" (<b>{size} KB</b>) przekroczył maksymalną dopuszczalną wielkość pliku wynoszącą <b>{maxSize} KB</b>.',
@@ -34,7 +36,7 @@
         msgInvalidFileType: 'Nieznny typ pliku "{name}". Tylko następujące rodzaje plików "{types}", są obsługiwane.',
         msgInvalidFileExtension: 'Złe rozszerzenie dla pliku "{name}". Tylko następujące rozszerzenia plików "{extensions}", są obsługiwane.',
         msgUploadAborted: 'Plik przesyłanie zostało przerwane',
-        msgValidationError: 'Błąd podczas przesyłania pliku.',
+        msgValidationError: 'Błąd walidacji',
         msgLoading: 'Wczytywanie pliku {index} z {files} &hellip;',
         msgProgress: 'Wczytywanie pliku {index} z {files} - {name} - {percent}% zakończone.',
         msgSelected: '{n} {files} zaznaczonych',

+ 3 - 1
js/fileinput_locale_pt-BR.js

@@ -21,6 +21,8 @@
         cancelTitle: 'Interromper envio em andamento',
         uploadLabel: 'Enviar',
         uploadTitle: 'Enviar arquivos selecionados',
+        msgNo: 'Não',
+        msgCancelled: 'Cancelado',
         msgZoomTitle: 'Ver detalhes',
         msgZoomModalHeading: 'Pré-visualização detalhada',
         msgSizeTooLarge: 'O arquivo "{name}" (<b>{size} KB</b>) excede o tamanho máximo permitido de <b>{maxSize} KB</b>.',
@@ -34,7 +36,7 @@
         msgInvalidFileType: 'Tipo inválido para o arquivo "{name}". Apenas arquivos "{types}" são permitidos.',
         msgInvalidFileExtension: 'Extensão inválida para o arquivo "{name}". Apenas arquivos "{extensions}" são permitidos.',
         msgUploadAborted: 'O upload do arquivo foi abortada',
-        msgValidationError: 'Erro de envio de arquivo',
+        msgValidationError: 'Erro de validação',
         msgLoading: 'Enviando arquivo {index} de {files}&hellip;',
         msgProgress: 'Enviando arquivo {index} de {files} - {name} - {percent}% completo.',
         msgSelected: '{n} {files} selecionado(s)',

+ 3 - 1
js/fileinput_locale_pt.js

@@ -21,6 +21,8 @@
         cancelTitle: 'Abortar carregamento ',
         uploadLabel: 'Carregar',
         uploadTitle: 'Carregar ficheiros seleccionados',
+        msgNo: 'Não',
+        msgCancelled: 'Cancelado',
         msgZoomTitle: 'Ver detalhes',
         msgZoomModalHeading: 'Pré-visualização detalhada',
         msgSizeTooLarge: 'Ficheiro "{name}" (<b>{size} KB</b>) excede o tamanho máximo permido de <b>{maxSize} KB</b>.',
@@ -34,7 +36,7 @@
         msgInvalidFileType: 'Tipo inválido para o ficheiro "{name}". Apenas ficheiros "{types}" são suportados.',
         msgInvalidFileExtension: 'Extensão inválida para o ficheiro "{name}". Apenas ficheiros "{extensions}" são suportados.',
         msgUploadAborted: 'O upload do arquivo foi abortada',
-        msgValidationError: 'Erro de carregamento de ficheiro',
+        msgValidationError: 'Erro de validação',
         msgLoading: 'A carregar ficheiro {index} de {files} &hellip;',
         msgProgress: 'A carregar ficheiro {index} de {files} - {name} - {percent}% completo.',
         msgSelected: '{n} {files} seleccionados',

+ 3 - 1
js/fileinput_locale_ro.js

@@ -22,6 +22,8 @@
         cancelTitle: 'Anulează încărcarea curentă',
         uploadLabel: 'Încarcă',
         uploadTitle: 'Încarcă fișierele selectate',
+        msgNo: 'Nu',
+        msgCancelled: 'Anulat',
         msgZoomTitle: 'Vezi detalii',
         msgZoomModalHeading: 'Previzualizare detaliată',
         msgSizeTooLarge: 'Fișierul "{name}" (<b>{size} KB</b>) depășește limita maximă de încărcare de <b>{maxSize} KB</b>.',
@@ -35,7 +37,7 @@
         msgInvalidFileType: 'Tip de fișier incorect pentru "{name}". Sunt suportate doar fișiere de tipurile "{types}".',
         msgInvalidFileExtension: 'Extensie incorectă pentru "{name}". Sunt suportate doar extensiile "{extensions}".',
         msgUploadAborted: 'Fișierul Încărcarea a fost întrerupt',
-        msgValidationError: 'Eroare de încărcare',
+        msgValidationError: 'Eroare de validare',
         msgLoading: 'Se încarcă fișierul {index} din {files} &hellip;',
         msgProgress: 'Se încarcă fișierul {index} din {files} - {name} - {percent}% încărcat.',
         msgSelected: '{n} {files} încărcate',

+ 3 - 1
js/fileinput_locale_ru.js

@@ -22,6 +22,8 @@
         cancelTitle: 'Отменить текущую загрузку',
         uploadLabel: 'Загрузить',
         uploadTitle: 'Загрузить выбранные файлы',
+        msgNo: 'нет',
+        msgCancelled: 'Отменено',
         msgZoomTitle: 'посмотреть детали',
         msgZoomModalHeading: 'Подробное превью',
         msgSizeTooLarge: 'Файл "{name}" (<b>{size} KB</b>) превышает максимальный размер <b>{maxSize} KB</b>.',
@@ -35,7 +37,7 @@
         msgInvalidFileType: 'Запрещенный тип файла для "{name}". Только "{types}" разрешены.',
         msgInvalidFileExtension: 'Запрещенное расширение для файла "{name}". Только "{extensions}" разрешены.',
         msgUploadAborted: 'Выгрузка файла прервана',
-        msgValidationError: 'Ошибка при загрузке файла',
+        msgValidationError: 'Ошибка проверки',
         msgLoading: 'Загрузка файла {index} из {files} &hellip;',
         msgProgress: 'Загрузка файла {index} из {files} - {name} - {percent}% завершено.',
         msgSelected: 'Выбрано файлов: {n}',

+ 3 - 1
js/fileinput_locale_sk.js

@@ -21,6 +21,8 @@
         cancelTitle: 'Prerušiť  nahrávanie',
         uploadLabel: 'Nahrať',
         uploadTitle: 'Nahrať vybraté súbory',
+        msgNo: 'Nie',
+        msgCancelled: 'Zrušené',
         msgZoomTitle: 'Zobraziť podrobnosti',
         msgZoomModalHeading: 'Detailný náhľad',
         msgSizeTooLarge: 'Súbor "{name}" (<b>{size} KB</b>): prekročenie - maximálna povolená veľkosť <b>{maxSize} KB</b>.',
@@ -34,7 +36,7 @@
         msgInvalidFileType: 'Neplatný typ súboru "{name}". Iba "{types}" súborov sú podporované.',
         msgInvalidFileExtension: 'Neplatná extenzia súboru "{name}". Iba "{extensions}" súborov sú podporované.',
         msgUploadAborted: 'Súbor nahrávania bol prerušený',
-        msgValidationError: 'Chyba nahratia súboru.',
+        msgValidationError: 'Chyba overenia',
         msgLoading: 'Nahrávanie súboru {index} z {files} &hellip;',
         msgProgress: 'Nahrávanie súboru {index} z {files} - {name} - {percent}% dokončené.',
         msgSelected: '{n} {files} vybraté',

+ 3 - 1
js/fileinput_locale_th.js

@@ -21,6 +21,8 @@
         cancelTitle: 'ยกเลิกการอัพโหลด',
         uploadLabel: 'อัพโหลด',
         uploadTitle: 'อัพโหลดไฟล์ที่เลือก',
+        msgNo: 'ไม่',
+        msgCancelled: 'ยกเลิก',
         msgZoomTitle: 'ดูรายละเอียด',
         msgZoomModalHeading: 'ตัวอย่างละเอียด',
         msgSizeTooLarge: 'ไฟล์ "{name}" (<b>{size} KB</b>) มีขนาดเกินที่ระบบอนุญาตที่ <b>{maxSize} KB</b>, กรุณาลองใหม่อีกครั้ง!',
@@ -34,7 +36,7 @@
         msgInvalidFileType: 'ไฟล์ "{name}" เป็นประเภทไฟล์ที่ไม่ถูกต้อง, อนุญาตเฉพาะไฟล์ประเภท "{types}"',
         msgInvalidFileExtension: 'ไฟล์ "{name}" เป็น extension ที่ไมถูกต้อง, อนุญาตเฉพาะไฟล์ extension "{extensions}"',
         msgUploadAborted: 'อัปโหลดไฟล์ถูกยกเลิก',
-        msgValidationError: 'อัพโหลดไฟล์มีปัญหา',
+        msgValidationError: 'ข้อผิดพลาดในการตรวจสอบ',
         msgLoading: 'กำลังโหลดไฟล์ {index} จาก {files} &hellip;',
         msgProgress: 'กำลังโหลดไฟล์ {index} จาก {files} - {name} - {percent}%',
         msgSelected: '{n} {files} ถูกเลือก',

+ 3 - 1
js/fileinput_locale_tr.js

@@ -21,6 +21,8 @@
         cancelTitle: 'Devam eden yüklemeyi iptal et',
         uploadLabel: 'Yükle',
         uploadTitle: 'Seçilen dosyaları yükle',
+        msgNo: 'Hayır',
+        msgCancelled: 'Iptal edildi',
         msgZoomTitle: 'Ayrıntıları görüntüle',
         msgZoomModalHeading: 'Detaylı Önizleme',
         msgSizeTooLarge: '"{name}" dosyasının boyutu (<b>{size} KB</b>) izin verilen azami dosya boyutu olan <b>{maxSize} KB</b>\'tan büyük.',
@@ -34,7 +36,7 @@
         msgInvalidFileType: '"{name}" dosyasının türü geçerli değil. Yalnızca "{types}" türünde dosyalara izin veriliyor.',
         msgInvalidFileExtension: '"{name}" dosyasının uzantısı geçersiz. Yalnızca "{extensions}" uzantılı dosyalara izin veriliyor.',
         msgUploadAborted: 'Dosya yükleme iptal edildi',
-        msgValidationError: 'Dosya Yükleme Hatası',
+        msgValidationError: 'Doğrulama Hatası',
         msgLoading: 'Dosya yükleniyor {index} / {files} &hellip;',
         msgProgress: 'Dosya yükleniyor {index} / {files} - {name} - %{percent} tamamlandı.',
         msgSelected: '{n} {files} seçildi',

+ 3 - 1
js/fileinput_locale_uk.js

@@ -22,6 +22,8 @@
         cancelTitle: 'Скасувати поточну загрузку',
         uploadLabel: 'Загрузити',
         uploadTitle: 'Загрузити вибрані файли',
+        msgNo: 'Немає',
+        msgCancelled: 'Cкасовано',
         msgZoomTitle: 'Подивитися деталі',
         msgZoomModalHeading: 'Детальний превью',
         msgSizeTooLarge: 'Файл "{name}" (<b>{size} KB</b>) перевищує максимальний розмір <b>{maxSize} KB</b>.',
@@ -35,7 +37,7 @@
         msgInvalidFileType: 'Заборонений тип файла для "{name}". Тільки "{types}" дозволені.',
         msgInvalidFileExtension: 'Заборонене розширення для файла "{name}". Тільки "{extensions}" дозволені.',
         msgUploadAborted: 'Вивантаження файлу перервана',
-        msgValidationError: 'Помилка під час загрузки файла',
+        msgValidationError: 'Помилка перевірки',
         msgLoading: 'Загрузка файла {index} із {files} &hellip;',
         msgProgress: 'Загрузка файла {index} із {files} - {name} - {percent}% завершено.',
         msgSelected: '{n} {files} вибрано',

+ 3 - 1
js/fileinput_locale_zh-TW.js

@@ -22,6 +22,8 @@
         cancelTitle: '取消上傳中檔案',
         uploadLabel: '上傳',
         uploadTitle: '上傳選取檔案',
+        msgNo: '沒有',
+        msgCancelled: '取消',
         msgZoomTitle: '詳細資料',
         msgZoomModalHeading: '內容預覽',
         msgSizeTooLarge: '檔案 "{name}" (<b>{size} KB</b>) 大小超過上限 <b>{maxSize} KB</b>.',
@@ -35,7 +37,7 @@
         msgInvalidFileType: '檔案類型錯誤 "{name}". 只能使用 "{types}" 類型的檔案.',
         msgInvalidFileExtension: '附檔名錯誤 "{name}". 只能使用 "{extensions}" 的檔案.',
         msgUploadAborted: '該文件上傳被中止',
-        msgValidationError: '檔案上傳失敗',
+        msgValidationError: '驗證錯誤',
         msgLoading: '載入第 {index} 個檔案,共 {files} &hellip;',
         msgProgress: '載入第 {index} 個檔案,共 {files} - {name} - {percent}% 成功.',
         msgSelected: '{n} {files} 選取',

+ 3 - 1
js/fileinput_locale_zh.js

@@ -22,6 +22,8 @@
         cancelTitle: '取消进行中的上传',
         uploadLabel: '上传',
         uploadTitle: '上传选中文件',
+        msgNo: '没有',
+        msgCancelled: '取消',
         msgZoomTitle: '查看详情',
         msgZoomModalHeading: '详细预览',
         msgSizeTooLarge: '文件 "{name}" (<b>{size} KB</b>) 超过了允许大小 <b>{maxSize} KB</b>.',
@@ -35,7 +37,7 @@
         msgInvalidFileType: '不正确的类型 "{name}". 只支持 "{types}" 类型的文件.',
         msgInvalidFileExtension: '不正确的文件扩展名 "{name}". 只支持 "{extensions}" 的文件扩展名.',
         msgUploadAborted: '该文件上传被中止',
-        msgValidationError: '文件上传错误',
+        msgValidationError: '验证错误',
         msgLoading: '加载第 {index} 文件 共 {files} &hellip;',
         msgProgress: '加载第 {index} 文件 共 {files} - {name} - {percent}% 完成.',
         msgSelected: '{n} {files} 选中',

Beberapa file tidak ditampilkan karena terlalu banyak file yang berubah dalam diff ini