Direct-to-S3 / Azure tus 1.0 resume IndexedDB Golden Retriever 30 locales Webcam & screen capture

30 built-in locales, fully extensible registry

CoreUpload ships with 30 built-in locales - English, Spanish, French, German, Japanese, Simplified Chinese, Brazilian Portuguese, Italian, Dutch, Russian, Polish, Turkish, Korean, Czech, Vietnamese, Thai, Indonesian, Hindi, plus Arabic and Hebrew with right-to-left support. Pick a language below - buttons, drag-drop hints, status text, error messages, and the media-capture modals all switch instantly. Add your own locale with one call to CoreUpload.registerLocale().

What you should see: switch locale and every string in the control changes, including RTL layouts which mirror the whole interface rather than just translating text.
What changes: the file-picker button label, the drag-drop instruction, the queue status badges (uploading / complete / failed), validation error messages, and the modal titles for image editor / webcam / screen / audio capture. Custom options.buttonText always wins - i18n only fills in defaults.

Switch locale globally

CoreUpload.setLocale('fr');
CoreUpload.create('#uploader', { uploadUrl: '/api/upload/upload' });

Register a custom locale

Pass a partial dictionary - missing keys fall back to English transparently:

CoreUpload.registerLocale('sv', {
 selectFiles: 'Välj filer',
 dragDrop: 'Dra och släpp filer här',
 upload: 'Ladda upp',
 cancel: 'Avbryt',
 complete: 'Klar',
 failed: 'Misslyckades',
 fileTooLarge: 'Filen "{name}" ({size}) överskrider maxstorleken {max}.' // 30+ other keys fall back to English
});

CoreUpload.setLocale('sv');

ASP.NET Core locale negotiation

Pair with RequestLocalizationOptions so the upload UI follows the user's culture without extra wiring:

// Program.cs
app.UseRequestLocalization(new RequestLocalizationOptions
{
 DefaultRequestCulture = new("en"),
 SupportedUICultures = new[] { "en", "es", "fr", "de", "ja", "zh-CN", "pt-BR", "it", "nl" }
 .Select(c => new CultureInfo(c)).ToArray()
});
@* _Layout.cshtml - set the locale from the negotiated culture *@
<script> CoreUpload.setLocale('@CultureInfo.CurrentUICulture.Name');
</script>

Translation key reference

Full key list - translate only the ones you need; everything else falls back to English:

// UI controls
selectFiles, dragDrop, dropHere, upload, browse,
cancel, remove, retry, pause, resume, clear,
// Status
uploading, complete, failed, cancelled, pending, remaining,
// Validation
maxFilesReached, fileTypeNotAllowed, fileTooLarge, fileTooSmall,
duplicateFile, mimeTypeNotAllowed,
imageTooWide, imageTooTall, imageTooNarrow, imageTooShort,
// Errors
networkError, uploadFailed, invalidResponse, chunkFailed,
// Stats
files, totalSize, speed, eta, of,
// Media capture
webcamPhotoTitle, webcamVideoTitle, screenCaptureTitle, audioCaptureTitle,
snap, record, stop, recording,
// Image editor
editorRotate, editorFlip, editorCrop, editorApply, editorSave, editorReset,
// URL import
importFromUrl, importingFrom