Works with any backend npm install Zero dependencies

Locale / i18n

Register a custom locale and switch the uploader language at runtime.

(function() {
 MultipleUpload.registerLocale('es', {
 selectFiles: 'Seleccionar archivos',
 dropHere: 'Arrastra archivos aqui',
 uploading: 'Subiendo...',
 complete: 'completado',
 uploadFailed: 'Error al subir',
 remove: 'Eliminar',
 cancel: 'Cancelar'
 });
 MultipleUpload.registerLocale('fr', {
 selectFiles: 'Choisir des fichiers',
 dropHere: 'Deposez les fichiers ici',
 uploading: 'Envoi en cours...',
 complete: 'termine',
 uploadFailed: 'Echec du telechargement',
 remove: 'Supprimer',
 cancel: 'Annuler'
 });
 var uploader = new MultipleUpload('#demo', {
 uploadUrl: '/api/upload',
 multiple: true,
 locale: 'en'
 });
 document.getElementById('lang-select').addEventListener('change', function() {
 MultipleUpload.setLocale(this.value);
 uploader.setOptions({ locale: this.value });
 });
})();

Translating the built-in strings

Every message the component renders — button labels, status text, validation errors — comes from a locale pack, so the uploader can speak the same language as the rest of your application without you replacing its markup.

Error messages are the ones that matter

Labels are guessable from context; a rejection reason is not. If only part of the interface is translated, translate the validation and error strings first — they are where a user who cannot read the message has no way to work out what to do differently.

Right-to-left languages need the layout mirrored as well as the text replaced. The component's CSS handles direction, but check your own overrides, which usually assume left-to-right.