Express CSV Logo

Localization

Every user-facing string in the widget can be overridden through the locale option. You only need to provide the keys you want to change — the rest fall back to the defaults.

Usage

Pass a partial locale object to useExpressCSV():

import { useExpressCSV, x } from "@expresscsv/react";

const schema = x.row({
  name: x.string().label("Name"),
  email: x.string().email().label("Email"),
});

const { open } = useExpressCSV({
  schema,
  publishableKey: "pk_test_...",
  importIdentifier: "user-import",
  locale: {
    general: {
      cancel: "Abbrechen",
      back: "Zurück",
      next: "Weiter",
      finish: "Fertig",
      required: "Pflichtfeld",
      optional: "Optional",
    },
    widget: {
      title: "Daten importieren",
    },
    dropzone: {
      prompt: "CSV- oder Excel-Datei hierher ziehen",
      or: "oder",
      browse: "Datei auswählen",
    },
  },
});

The type is DeepPartial<ExpressCSVLocaleInput> — every level is optional.

Locale Structure

The locale object is organized by widget section:

SectionWhat it covers
generalShared labels: cancel, back, next, finish, required, optional, matched/unmatched
widgetWidget chrome: title, loading, close confirmation, error messages
sessionRecoveryResume prompt for interrupted imports
dropzoneFile drop area: prompt, browse button, clear/processing labels
uploadUpload step: expected columns, template download labels
selectSheetSheet selection: title, subtitle, preview labels, column/row counts
selectHeaderHeader row selection: title, subtitle, empty column warnings
matchColumnsColumn matching: headers, match status, conflict warnings, previews
matchOptionsOption matching for select/multiselect fields
reviewReview step: filters, sorting, transforms, export, validation messages
validationValidation-specific labels
statusSuccess and error screens
stepsStep names shown in the progress indicator

Interpolation

Some strings contain {placeholder} tokens that are filled at runtime. Keep the placeholders intact when overriding:

locale: {
  selectHeader: {
    showingRows: "Zeige {displayed} von {total} Zeilen",
  },
  steps: {
    progress: "Schritt {currentStep} von {totalSteps}",
  },
}

Common placeholders:

PlaceholderUsed in
{count}Column counts, row counts, validation issue counts
{name}Sheet names, column names
{format}Template download format
{displayed}, {total}Row pagination
{currentStep}, {totalSteps}Step progress
{value}Custom option values
{description}Fix descriptions
{fieldName}Empty-column creation actions
{rowCount}, {columnName}Column preview labels
{remaining}Option lists with hidden matches
{number}Generated phantom column names

Sections

General

VariableDefault valuePurpose
cancelCancelButton label for canceling the current action or dialog.
backBackButton label for moving to the previous step.
nextNextButton label for moving to the next step.
finishFinishButton label for completing the import flow.
requiredrequiredLabel shown for required fields.
optionalOptionalLabel shown for optional fields.
matchedMatchedStatus label for items that have been matched successfully.
unmatchedUnmatchedStatus label for items that still need a match.
customCustomLabel used when a value is custom rather than predefined.
nextDisabledUploadUpload a file to continueExplains why Next is disabled on the upload step.
nextDisabledSelectSheetSelect a valid sheet to continueExplains why Next is disabled until a valid worksheet is selected.
nextDisabledSelectHeaderSelect a header row to continueExplains why Next is disabled until a header row is selected.
nextDisabledMatchColumnsMap all required columns to continueExplains why Next is disabled until required fields are matched.
nextDisabledMatchOptionsComplete all required options to continueExplains why Next is disabled until required option mappings are done.
nextDisabledReviewValidatingValidation in progress, please wait…Explains why Next is disabled while review validation is still running.
nextDisabledReviewInvalidFix all invalid rows to continueExplains why Next is disabled while invalid review rows remain.

Widget

VariableDefault valuePurpose
titleExpressCSV WidgetMain title shown in the widget chrome.
loadingLoading…Loading state shown while the widget initializes.
closeConfirmTitleAre you sure?Title of the confirm dialog shown before closing the widget.
closeConfirmDescriptionClosing this dialog will cause you to lose any progress made so far.Body text explaining the consequence of closing the widget.
closeConfirmCancelCancelButton label for staying in the widget.
closeConfirmContinueContinueButton label for confirming the close action.
errorTitleUnable to ContinueTitle shown in a top-level widget error state.
startOverStart OverButton label for resetting the import flow after an error.
invalidPublishableKeyThis publishable key is not recognized. Check your configuration and try again.Error shown when the widget receives an invalid publishable key.

Session Recovery

VariableDefault valuePurpose
messageYou have an incomplete import. Resume where you left off?Prompt shown when a saved session can be resumed.
discardDiscard SessionButton label for discarding a saved import session.
resumeResume SessionButton label for resuming a saved import session.

Dropzone

VariableDefault valuePurpose
ariaLabelUpload CSV or Excel fileAccessible label for the file upload dropzone.
clearAriaLabelClear fileAccessible label for the clear-file control.
clearTooltipClear this file and start againTooltip for the control that removes the current file.
clearConfirmTitleClear file?Confirmation dialog title shown before removing the current file.
clearConfirmDescriptionThis will clear the file and any mappings or edits you've made.Confirmation dialog body shown before clearing the file.
processingProcessing...Status shown while the uploaded file is being processed.
restoredSessionRestored sessionStatus shown when a previous session is restored.
promptDrop your CSV or Excel file hereMain dropzone instruction text.
ororSeparator between drag-and-drop and browse actions.
browseclick to browseAction label for opening the file picker.

Upload

VariableDefault valuePurpose
expectedColumnsExpected columnsHeading for the schema preview shown before upload.
templatePromptNeed a template?Prompt introducing the template download controls.
templateCSVComma-separated values (.csv)Label for the CSV template format option.
templateXLSXExcel spreadsheet (.xlsx)Label for the Excel template format option.
templateGeneratingGenerating...Status shown while a template file is being generated.
templateDownloadFormatDownload {format}Label for downloading a specific template format.
templateDownloadDownloadGeneric download label used around template actions.

Select Sheet

VariableDefault valuePurpose
titleSelect a WorksheetTitle of the worksheet selection step.
subtitleChoose which worksheet to import from your file.Helper text explaining the worksheet selection step.
noWorksheetsNo worksheets availableMessage shown when the uploaded workbook has no sheets to choose from.
previewPreviewLabel for worksheet preview content.
columnCount{count} columnsColumn count label for a worksheet preview.
rowCount{count} rowsRow count label for a worksheet preview.
inSheetin "{name}"Context label that includes the selected worksheet name.
sheetSelectedSheet selectedStatus shown after choosing a worksheet.
noColumnsSelected sheet has no columnsError shown when the chosen worksheet contains no columns.
needsMoreRowsSelected sheet needs at least 2 rowsError shown when the worksheet does not have enough rows to continue.

Select Header

VariableDefault valuePurpose
loadingPreparing header selection data...Loading state shown while header-row preview data is prepared.
noDataNo data availableMessage shown when there is no uploaded data to inspect.
noDataDescriptionPlease upload a CSV file in the previous step to continue.Helper text shown when the header step cannot continue without data.
titleSet Header RowTitle of the header selection step.
subtitleSelect which row contains your column headers. By default, we use the first row.Helper text explaining how to choose the header row.
validHeaderValid header row selectedSuccess status shown when a valid header row is chosen.
emptyColumns{count} empty columns in this rowWarning label showing how many empty columns a candidate header row has.
allColumnsEmptyAll columns empty in this rowWarning shown when every header cell in a row is empty.
emptyColumnsTooltipHeader rows must not contain empty columns. Please select a different row.Tooltip explaining why a row with empty columns is invalid.
showingRowsShowing {displayed} of {total} rowsPagination label for the header-row preview table.
showAllShow AllAction label for expanding the preview to all rows.
moveUpMove header row upAction label for shifting the selected header row upward.
moveDownMove header row downAction label for shifting the selected header row downward.

Match Columns

VariableDefault valuePurpose
loadingPreparing column mapping data...Loading state shown while column-matching data is prepared.
autoMatchingAuto-matching columns...Status shown while the widget automatically suggests column matches.
titleMatch Your ColumnsTitle of the column matching step.
subtitleMatch your CSV columns to the expected fields. Required fields must be matched or created.Helper text explaining how column matching works.
csvColumnHeaderCSV Column NameTable header for incoming file columns.
matchFieldHeaderMatch to FieldTable header for the target schema field selection.
selectFieldPlaceholderSelect field...Placeholder in the field selection control.
searchFieldsPlaceholderSearch fields...Placeholder in the searchable field picker.
noFieldsFoundNo fields found.Empty state shown when no schema fields match the search.
unmatchAllUnmatch allAction label for clearing all current column mappings.
unmatchAllConfirmTitleUnmatch all columns?Confirmation dialog title for clearing all mappings.
unmatchAllConfirmDescriptionThis will clear all column mappings.Confirmation dialog body for clearing all mappings.
allRequiredMatchedAll required fields matchedSuccess status shown when every required field has a match.
matchingConflicts{count} matching conflictsStatus label showing how many conflicting matches need attention.
validationIssuesFoundValidation issues foundStatus label shown when validation issues are detected during matching.
goToNextConflictGo to next conflictAction label for jumping to the next mapping conflict.
unmatchedRequiredFields{count} unmatched required fieldsStatus label showing how many required fields still need matches.
requiredFieldsNotMatchedRequired fields not matchedWarning label for unmatched required fields.
goToUnmatchedFieldsGo to unmatched fieldsAction label for jumping to unmatched required fields.
validationIssues{count} validation issuesCount label for column-level validation issues.
goToNextIssueGo to next issueAction label for jumping to the next validation issue.
addEmptyColumnsForRequiredAdd empty columns for required fieldsSection label for creating blank columns for required fields.
createEmptyColumnCreate empty column for {fieldName}Action label for adding a blank column for a required field.
requiredFieldsNotAssignedRequired fields not assignedWarning label when required fields still are not assigned.
addEmptyColumnTooltipAdd an empty column for this required fieldTooltip for the create-empty-column action.
previewTooltipPreview data for this columnTooltip for opening the column data preview.
previewShowingShowing {rowCount} rows of {columnName}Title for the column preview panel.

Match Options

VariableDefault valuePurpose
loadingPreparing option matching data...Loading state shown while option-matching data is prepared.
titleMatch Dropdown ValuesTitle of the option matching step.
subtitleMatch your file's values with the accepted dropdown options for each field.Helper text explaining how option matching works.
csvValueHeaderCSV Source ValueTable header for values from the imported file.
matchOptionHeaderMatch to OptionTable header for the accepted option target.
selectOptionPlaceholderSelect option...Placeholder in the option selection control.
searchOptionsPlaceholderSearch options...Placeholder in the searchable option picker.
noOptionsFoundNo options found.Empty state shown when no options match the search.
optionalBadgeOptionalBadge shown for fields where option matching is optional.
customValuesHintThis field allows custom values, so unmatched values will be kept as-is.Helper text explaining that unmatched values can still be accepted.
showMoreShow {count} more ({remaining} remaining)Action label for revealing more unmatched values.
useCustomValueUse "{value}"Action label for keeping a custom value instead of matching it.
allValuesMatchedAll values matchedSuccess status shown when every value has a match.
unmatchedValues{count} unmatched valuesCount label for unmatched option values.
unmatchedValuesFoundUnmatched values foundWarning label shown when unmatched option values remain.
goToNextUnmatchedGo to next unmatched valueAction label for jumping to the next unmatched option value.
valueCount{count} valuesCount label for grouped source values.

Review

VariableDefault valuePurpose
completingCompleting your import...Status shown while the final import submission is running.
loadingPreparing review data...Loading state shown while review data is prepared.
titleReview Your DataTitle of the review step.
subtitleReview your data and fix any validation issues before completing.Helper text explaining the review step.
validatingValidating data...Status shown while review validation is running.
noRecordsNo records to importEmpty state shown when there are no rows to review.
validatingCellsValidating cells...Status shown while individual cells are being validated.
allRecordsValidAll {count} records are validSuccess label shown when every reviewed record is valid.
recordCount{count} recordsCount label for the total number of records in review.
filterAllAllFilter tab label for showing all rows.
filterValidValidFilter tab label for showing only valid rows.
filterInvalidInvalidFilter tab label for showing only invalid rows.
clearFiltersClear filtersAction label for removing active review filters.
noInvalidRowsNo invalid rowsEmpty state shown when there are no invalid rows in the current view.
applyAutofixApply autofixAction label for applying a single suggested fix.
invalidValueInvalid valueLabel shown on cells or rows with invalid data.
undoUndoAction label for undoing the previous review edit.
redoRedoAction label for redoing a reverted review edit.
autofixCount{count} AutofixesCount label for the number of available autofixes.
applyAllAutofixesApply all {count} autofixesAction label for applying every available autofix.
autofixItemAutofix: {description} ({count})Label for a grouped autofix option with a description and count.
filterFilterGeneric label for filter actions or controls.
actionsActionsGeneric label for the actions menu or column.
addRecordAdd recordAction label for adding a new record manually.
deleteSelectedRecordsDelete selected records ({count})Action label for deleting the currently selected records.
exportSelectedRecordsExport selected records ({count})Action label for exporting the selected records.
exportFilteredRecordsExport filtered records ({count})Action label for exporting the filtered set of records.
exportAllRecordsExport all records ({count})Action label for exporting every reviewed record.
exportCSVExport as CSV (.csv)Export format label for CSV downloads.
exportXLSXExport as Excel (.xlsx)Export format label for Excel downloads.
sortAZSort A-ZSort label for ascending alphabetical text order.
sortZASort Z-ASort label for descending alphabetical text order.
sortLowHighSort Low to HighSort label for ascending numeric values.
sortHighLowSort High to LowSort label for descending numeric values.
sortOldestNewestSort Oldest to NewestSort label for chronological ascending order.
sortNewestOldestSort Newest to OldestSort label for chronological descending order.
sortEarlyLateSort Early to LateSort label for earlier-to-later time values.
sortLateEarlySort Late to EarlySort label for later-to-earlier time values.
sortFalseTrueSort False then TrueSort label for boolean false-first ordering.
sortTrueFalseSort True then FalseSort label for boolean true-first ordering.
sortAscendingSort AscendingGeneric ascending sort label.
sortDescendingSort DescendingGeneric descending sort label.
removeSortRemove sortAction label for clearing the current sort.
unpinColumnUnpin ColumnAction label for unpinning a review table column.
pinColumnPin ColumnAction label for pinning a review table column.
clearColumnClear columnAction label for clearing values in a column.
columnAutofixAutofix: {description}Label for a column-wide autofix action.
applyAllColumnAutofixesApply all autofixesAction label for applying every autofix in a column context.
removeFilterRemove filterAction label for removing a specific filter.
columnMenuColumn menuAccessible label for the column actions menu.
emptyDataTitleNo data availableEmpty state title shown when review data is missing.
emptyDataDescriptionPlease complete the previous steps to review your data.Empty state description shown when review cannot start yet.
editFilterEdit filterAction label for editing an existing filter.
filteredColumnsFiltered ColumnsSection label for columns with active filters.
unfilteredColumnsUnfiltered ColumnsSection label for columns without active filters.
columnsLabelColumnsGeneric label for the columns list or menu section.
transformTooltipTransform data with AITooltip for opening the AI transform panel.
transformTitleTransform data with AITitle shown in the AI transform panel.
transformCloseCloseButton label for closing the transform panel.
transformCloseDiscardTooltipClose panel and discard changesTooltip for closing the panel and discarding unapplied changes.
transformCloseTooltipClose panelTooltip for closing the transform panel without extra context.
transformErrorCannot generate transformationError message shown when AI transform generation fails.
transformPlaceholderDescribe a change you want to make, use @ to mention columnsPlaceholder text in the AI transform prompt input.
transformGeneratingGenerating transformation...Status shown while the AI transformation is being generated.
transformApplyingApplying transformation to data...Status shown while the AI transformation is being applied.
transformDiscardDiscard changesAction label for discarding generated transform changes.
transformApplyApply changesAction label for applying generated transform changes.
transformUnappliedTitleYou have unapplied changesWarning dialog title shown before closing with pending transform changes.
transformUnappliedDescriptionYour transformation changes have not been applied yet. Do you want to discard them?Warning dialog body shown for unapplied transform changes.
transformKeepEditingKeep editingButton label for returning to the transform editor.
transformDiscardCloseDiscard & CloseButton label for discarding transform changes and closing the panel.
transformAbortTitleAbort transformation?Warning dialog title shown while a transformation is still running.
transformAbortDescriptionYour transformation is currently running. Closing the panel will abort the operation and you'll lose any progress.Warning dialog body shown before aborting an active transformation.
transformAbortCloseAbort & CloseButton label for aborting the current transformation and closing the panel.
transformSubmitSubmitAction label for sending a transformation request.

Phantom Column

VariableDefault valuePurpose
defaultNamenew column {number}Default name for a newly created empty column.
removeRemoveAction label for deleting a phantom column.
removeTooltipRemove this empty columnTooltip for the phantom-column remove action.

Validation

VariableDefault valuePurpose
showOtherMatchShow other matchAction label for viewing an alternative validation match.

Status

VariableDefault valuePurpose
successTitleImport CompleteTitle shown on the successful import completion screen.
successDescriptionYour data has been imported successfully.Description shown on the successful import completion screen.
errorTitleImport FailedTitle shown on the failed import screen.
errorDescriptionAn error occurred while delivering your data.Description shown on the failed import screen.
closeCloseButton label for dismissing the final status screen.

Steps

VariableDefault valuePurpose
uploadUploadStep label shown for the upload step in the progress UI.
selectSheetSelect SheetStep label shown for the worksheet selection step.
selectHeaderSelect HeaderStep label shown for the header selection step.
matchColumnsMatch ColumnsStep label shown for the column matching step.
matchOptionsMatch OptionsStep label shown for the option matching step.
reviewReviewStep label shown for the review step.
progressStep {currentStep} of {totalSteps}Progress label that includes the current step number and total step count.

On this page