Shadcn React Table

Search documentation

Search the docs

Localization

Every user-facing string flows through a localization table. Override any subset per instance via useDataTable({ localization }), or app-wide via DataTableConfigProvider. Function-valued entries handle interpolation and plurals.

const table = useDataTable({
  data,
  columns,
  localization: {
    search: "Buscar",
    rowsPerPage: "Filas por página",
    paginationRange: (start, end, total) => `${start}–${end} de ${total}`,
  },
})

See the Localization guide for a full example. The complete key set and English defaults:

KeyTypeDefaultDescription
selectAllstringSelect all
selectRowstringSelect row
clearSelectionstringClear selection
rowsSelected(selected: number, total: number) => string(selected, total) => `${selected} of ${total} row${total === 1 ? "" : "s"} selected`
sortByColumnAsc(column: string) => string(column) => `Sort by ${column} ascending`
sortByColumnDesc(column: string) => string(column) => `Sort by ${column} descending`
sortAscendingstringSort ascending
sortDescendingstringSort descending
clearSortstringClear sort
sortedAscendingstringSorted ascending
sortedDescendingstringSorted descending
columnActionsstringColumn actions
hideColumnstringHide column
showAllColumnsstringShow all columns
pinToLeftstringPin to left
pinToRightstringPin to right
unpinstringUnpin
reorderColumnstringReorder column
reorderRowstringReorder row
pinRowstringPin row
unpinRowstringUnpin row
resizeColumnstringResize column
groupByColumn(column: string) => string(column) => `Group by ${column}`
ungroupByColumn(column: string) => string(column) => `Ungroup by ${column}`
groupedBystringGrouped by
dropToGroupBystringDrag a column here to group by it
expandstringExpand
collapsestringCollapse
expandAllstringExpand all
collapseAllstringCollapse all
toggleRowExpandedstringToggle row expanded
columnVisibilitystringColumn visibility
toggleColumnVisibilitystringToggle column visibility
filterByColumn(column: string) => string(column) => `Filter by ${column}`
clearFilterstringClear filter
filterModestringFilter mode
changeFilterModestringChange filter mode
filterPlaceholder(column: string) => string(column) => `Filter ${column}…`
showColumnFiltersstringShow filters
hideColumnFiltersstringHide filters
minstringMin
maxstringMax
pickDatestringPick a date
pickDateRangestringPick a date range
filterModesRecord<string, string>{ fuzzy: "Fuzzy", contains: "Contains", startsWith: "Starts with", endsWith: "Ends with", equals: "Equals", notEquals: "Not equals", empty: "Empty", notEmpty: "Not empty", between: "Between (exclusive)", betweenInclusive: "Between (inclusive)", greaterThan: "Greater than", greaterThanOrEqualTo: "Greater than or equal to", lessThan: "Less than", lessThanOrEqualTo: "Less than or equal to", before: "Before", after: "After", betweenDates: "Between", equalsString: "Equals", arrIncludesSome: "Includes", equalsBool: "Equals", }Labels for each filter mode, keyed by the `FilterMode` string.
advancedFiltersstringAdvanced filters
advancedFiltersMatchLabelstringMatch
advancedFiltersMatchAllstringAll
advancedFiltersMatchAnystringAny
advancedFiltersOfstringof the following rules
advancedFiltersAddRulestringAdd filter
advancedFiltersApplystringApply
advancedFiltersClearAllstringClear all
advancedFiltersColumnstringColumn
advancedFiltersOperatorstringOperator
advancedFiltersValuestringValue
advancedFiltersEmptystringNo filters yet. Add one to get started.
removeFilterRulestringRemove filter
advancedFilterOperatorsRecord<string, string>{ contains: "contains", notContains: "does not contain", startsWith: "starts with", endsWith: "ends with", equals: "equals", notEquals: "does not equal", isEmpty: "is empty", isNotEmpty: "is not empty", greaterThan: "greater than", greaterThanOrEqual: "greater than or equal", lessThan: "less than", lessThanOrEqual: "less than or equal", between: "is between", }Operator labels, keyed by `AdvancedFilterOperator`.
searchstringSearch
searchPlaceholderstringSearch…
clearSearchstringClear search
globalFilterModestringSearch mode
toggleDensitystringToggle density
densityComfortablestringComfortable
densityCompactstringCompact
densitySpaciousstringSpacious
enterFullscreenstringEnter full screen
exitFullscreenstringExit full screen
rowsPerPagestringRows per page
paginationRange(start: number, end: number, total: number) => string(start, end, total) => `${start}–${end} of ${total}`
goToFirstPagestringGo to first page
goToPreviousPagestringGo to previous page
goToNextPagestringGo to next page
goToLastPagestringGo to last page
goToPage(page: number) => string(page) => `Go to page ${page}`
rowActionsstringRow actions
editstringEdit
savestringSave
cancelstringCancel
deletestringDelete
createstringCreate
createNewRowstringCreate new row
editRowstringEdit row
requiredstringRequired
copystringCopy
copiedstringCopied
cellActionsstringCell actions
exportstringExport
exportCsvstringExport to CSV
exportExcelstringExport to Excel
noRecordsToDisplaystringNo records to display
loadingstringLoading…