Translations Reference
Translation keys, namespaces, and override strategies
Translations Reference
Translations are strongly typed. Provide overrides either via the provider or directly in your table configuration under translations.keys.
Important: When you use the catalog form (create/edit via getFormConfig), the form uses the same translation function t() as the table — i.e. the same DataTableTranslations object passed to the provider. You must include form and value keys in that object so that field labels, placeholders (including the value-type field), and form buttons resolve correctly. Otherwise you will see raw keys like value.string_placeholder in the UI.
Type shape
type DataTableTranslations = {
actions: { delete: string; edit: string; copy: string; export: string; save: string; cancel: string; confirm: string; title: string; view: string };
bulk: { close_menu: string; confirm_copy_description: string; confirm_delete_description: string; confirm_title: string };
calculations: { none: string; count: string; percent: string; more: string; count_all: string; count_values: string; count_unique: string; count_empty: string; count_not_empty: string; count_true: string; count_false: string; percent_empty: string; percent_not_empty: string; percent_true: string; percent_false: string; sum: string; average: string; median: string; min: string; max: string; range: string; calculate: string };
columns: { title: string; hide: string; show: string; visible: string; hidden: string; drag: string; resetOrder: string; toggleVisibility: string; hideAll: string; showAll: string; edit_property: string; filter: string; hide_in_view: string; reorder: string; resize?: string; sort_ascending: string; sort_descending: string };
menu: { /* ... */ density?: string; footer_calculations: string; footer_calculations_on: string; footer_calculations_off: string };
pagination: { first: string; last: string; next: string; previous: string; of: string; page: string; rowsPerPage: string; showing: string; selectedCount: string };
selection: { rows: string };
// ... see full type in types/translations.ts
}Inline overrides (config)
translations: {
namespace: 'common',
keys: {
'columns.title': 'Columns',
'actions.title': 'Actions',
},
}Provider-based
You can supply a full DataTableTranslations object to the provider for consistent localization across tables.
Where translations apply
Table density:
menu.densitylabels the density menu and its icon tooltip/accessibility label. Sizes remain XS, S, M, L, XL, and 2XL in every locale. The key is optional; React falls back to “Table density”. Vue includes English and French defaults.Icon tooltips: density, saved views, display controls, toolbar actions, row actions, and column controls use the same localized labels on hover and keyboard focus. Supply
views.add_viewandviews.saveChangesTooltipfor the add/save view icons. Custom toolbar actions can supplytooltip; icon-only actions otherwise use their label. Avoid a nativetitlealongside the styled tooltip.View settings and Data:
views.settingslabels the settings icon button (default "View settings");views.viewActionslabels the tabs' "View actions" chevron andviews.filterViewslabels the name filter shown beyond seven views in the named trigger's menu.menu.datalabels the Data button and its menu, which holds Export, Connect, Share and, on compact layouts, application toolbar actions;destinations.connectlabels the Connect row and screen (default "Connect").Schedule:
schedule.<key>overrides the built-in English and French labels of the Connect schedule screen, one key at a time — for exampleschedule.frequency,schedule.manual,schedule.auto,schedule.hourly,schedule.daily,schedule.weekly,schedule.monthly,schedule.lastDay,schedule.timeZone,schedule.next(with{date}and{zone}),schedule.save,schedule.cancelandschedule.runNow. See Schedule a Connect destination.Connector screens:
connector.<key>overrides the built-in English and French labels of the connector screens, one key at a time. Screen:target,child,chooseTarget,use,loading,loadingFields,noTargets,columns,columnsVisible,columnsAll,mapping,newField,dontSend,sending,keyField,mode,upsert,replace,upsertHint,replaceHint,scope,scopeView,scopeSelection,send,sendAgain,done. Result:created,createdOne,updated,updatedOne,skipped,skippedOne,failed,failedOne,nothingSent,warnings,warningsOne,truncated,failureRow,failureRows(the…Onekeys are the singular forms; counts use{count},failureRowuses{id}and{message},failureRowsuses{count}and{message}). Checks:issueMissingTarget,issueMissingChild,issueNoColumns,issueDuplicateField,issueUnknownField,issueMissingKey,issueUnknownKey,issueInvalidMode(with{field}or{child}). Errors:error_aborted,error_api_disabled,error_forbidden,error_invalid_credentials,error_invalid_mapping,error_invalid_request,error_invalid_target,error_not_found,error_not_shared,error_not_shared_unknown,error_provider_unavailable,error_rate_limited,error_unauthorized,error_unknown(error_not_shareduses{email}).newFielduses{name}, andcolumnsVisible,columnsAllandscopeSelectionuse{count}. Sync (Sync from the connector screen):direction,directionPush,directionPull,directionTwoWay(with{target}),directionPushShort,directionPullShort,directionTwoWayShort(the schedule summary),mappingPull,mappingTwoWay,dontImport,dontSync,sample(with{value}),invalidCount,invalidOne,conflictRule,conflictTableWins,conflictTargetWins,conflictLatestWins,conflictTableWinsHint,conflictTargetWinsHint,conflictLatestWinsHint,deletePolicy,deleteFlag,deleteIgnore,deletePropagate,deleteFlagHint,deleteIgnoreHint,deletePropagateHint,deleteConfirm,confirmDeletesFirst,previewFirst,previewChanges,previewAgain,previewing,syncNow,importNow,syncing,inTarget(with{target}),inTable,thisTable,toCreate,toUpdate,toDelete,nothingToChange,unchanged,flagged,flaggedOne,duplicates,duplicatesOne,conflicts,moreConflicts,wins(with{side}),emptyValue,deleted,deletedOne,nothingChanged,syncStopped(with{message}),issueNoFields,issueInvalidDirection,issueInvalidConflictRule, andimportFrom(with{name}) andimportFromHintfor the Data › Import source. Conflict rules (Conflict rules set by your app):appRules,appRulesLocked,ruleOwnedTable,ruleOwnedTarget,ruleMerge,ruleManual,ruleTableWins,ruleTargetWins,ruleLatestWins(the rule sentences use{column}, andruleOwnedTargetandruleTargetWinsalso{target}), preview outcomesownedBy(with{side}),resolutionMerged,resolutionManual,resolutionCustom,resolutionSkipped,resultValue,overridden,moreOverridden,pendingNote,pendingNoteOne(with{count}), and conflicts to resolveconflictsToResolve(with{count}),conflictsHint,keepTable,keepTarget(with{target}),keepAllTable,keepAllTarget(with{target}),noConflicts,resolvingConflicts,backToSettings,valueYes,valueNo. Target check (Target check and Prepare):targetCheck,checkingTarget(with{target}),schemaBlocking,schemaFixable,schemaWarning,schemaBlocked(with{reason}), the issue linesschemaIssue_missing_field,schemaIssue_deleted_field,schemaIssue_renamed_field,schemaIssue_incompatible_type,schemaIssue_invalid_values,schemaIssue_coercible_type,schemaIssue_unsupported_type,schemaIssue_read_only_field,schemaIssue_missing_options,schemaIssue_missing_status_options,schemaIssue_missing_key,schemaIssue_key_wrong_type,schemaIssue_duplicate_mapping,schemaIssue_title_unmapped,schemaIssue_field_missing(with{column},{field},{target},{actual},{expected},{from},{to},{options}or{count}),updateMapping,prepareNotion,prepareSheet,prepareTarget(with{target}),prepareIntro,prepareConfirm,preparing,prepared,preparedOne,preparedNothing(with{count}and{target}),cancel,fixCreateField,fixCreateKey(with{field}and{type}),fixAddOptions(with{count},{field}and{options}),providerNotion,providerSheets, the disabled choicesoptionReadOnly,optionUnsupported,optionIncompatible(with{field}and{type}) andoptionUsed(with{field}and{column}),pageTitle,pageTitleField(with{field}),refreshTargets,createTarget,createTargetTitle(with{target}),createParent,createName,createSubmit,creatingTarget,createNameRequired, and the type namestype_<type>(such astype_rich_textortype_formula).Import:
import.<key>overrides the built-in English and French labels of the import screen, one key at a time;import.titlealso labels the Data menu entry. Source:title,source,sourceCsv,sourceCsvHint,chooseFile,dropHint,pasteLabel,usePasted,reading,fileError,emptyFile,sourceError,authError. Mapping:mapping,ignore,delimiter,delimiterAuto(with{delimiter}),delimiterComma,delimiterSemicolon,delimiterTab,delimiterPipe,headers,keyColumn,keyNone,keyHint,sample(with{value}),noSample,invalidCount,invalidOne,preview,previewCaption,rowsFound,rowsFoundOne,yes,no. Review:review,back,cancel,creates,createsOne,updates,updatesOne,errorRows,errorRowsOne,skipErrors,errorsBlock,nothingToImport,rowError(with{row},{column}and{message}). Run and result:import,importing(with{done}and{total}),stop,done,another,created,createdOne,updated,updatedOne,failed,failedOne,nothingImported,stopped,failureRow(with{row}and{message}). Column types in the badges:type_text,type_number,type_date,type_boolean,type_select,type_multi,type_url,type_email,type_json. Cell errors:error_required,error_invalid_number,error_invalid_date,error_invalid_boolean,error_unknown_option,error_invalid_url,error_invalid_email,error_invalid_json,error_duplicate_key,error_unknown. The…Onekeys are the singular forms, and counts use{count}.Form view: flat
form.<key>keys, such as"form.submit": "Send", override the built-in English and French labels of the Form view in React and Vue, one key at a time. They are separate from the catalog form'sformkeys below. Form:submit,submitting,success,successTitle,another,required,choose,pickDate,clearDate,closed,noQuestions,submitError. Errors:errorRequired,errorNumber,errorDate,errorUrl,errorOption,errorSummary(with{count}in a plural form). Settings:settings,settingsTitle,title,description,questions,ask,moveUp,moveDown,editQuestion,hiddenValue(with{label}),label,help,placeholder,requiredToggle,hidden,hiddenHint,none,excluded(with{columns}),afterSubmit,submitLabel,successMessage,allowAnother,redirectUrl,redirectHint,reset. Sharing:share,publish,publishHint,publicLink,copy,copied,open,acceptResponses,republish,republishHint,saveFirst,shareError,loading,close. Layout and steps:layout,layoutPage,layoutSteps,review,next,back,skip,stepProgress(with{current}and{total}),reviewTitle,reviewChange(with{label}),noAnswer,yes,no. Sections:addSection,section,sectionTitle,sectionDescription,untitledSection,editSection,removeSection(these two with{label}). Rule editor:conditions,addRule,ruleAction,actionShow,actionHide,actionRequire,ruleJoin,joinAnd,joinOr,ruleField,ruleOperator,ruleValue,ruleFrom,ruleTo,ruleDays,chooseQuestion,addCondition,addGroup,ruleGroup,removeCondition,removeGroup,removeRule,editConditions,conditionsTitle(with{label}),conditionsDescription,noConditions,conditionsProblem,done,joinAll,joinAny,ruleDaysUnit. Rule problems:issueMissingField,issueUnknownField,issueOperator,issueMissingValue,issueUnknownOption,issueEmptyGroup,issueCycle,issueLaterQuestion,issueSelfReference,issueTarget. Rule summaries:thenShow,thenHide,thenRequire(with{condition}),thenSet(with{value}and{condition}),ruleAnd,ruleOr,ruleCustom, and the comparison phrasesopIs,opIsNot,opContains,opNotContains,opStartsWith,opEq,opNeq,opLt,opLte,opGt,opGte,opBetween,opOn,opBefore,opAfter,opInLast,opInNext,opIsAnyOf,opIsNoneOf,opContainsAny,opContainsAll,opContainsNone,opIsChecked,opIsUnchecked,opIsEmpty,opIsNotEmpty(with{field}and{value}, or{from}and{to}foropBetween). Comparison labels: the short labels of the comparison menu, next to those summary phrases, such as "is", "before" or "in the last":cmpIs,cmpIsNot,cmpContains,cmpNotContains,cmpStartsWith,cmpEq,cmpNeq,cmpLt,cmpLte,cmpGt,cmpGte,cmpBetween,cmpOn,cmpBefore,cmpAfter,cmpInLast,cmpInNext,cmpIsAnyOf,cmpIsNoneOf,cmpContainsAny,cmpContainsAll,cmpContainsNone,cmpIsChecked,cmpIsUnchecked,cmpIsEmpty,cmpIsNotEmpty. The mode's name isviews.display.formin React anddisplay.formin Vue.Chart view: flat
chart.<key>keys, such as"chart.showTable": "Table view", override the built-in English and French labels of the Chart view in React and Vue, one key at a time. Settings:chartType,typeBar,typeHorizontalBar,typeLine,typeDonut,typeNumber,xColumn,bucket,day,week,month,quarter,year,metric,metricCount,metricSum,metricAvg,metricMin,metricMax,metricCountDistinct,metricColumn,seriesColumn,none,stacked,sort,sortAuto,sortKeyAsc,sortKeyDesc,sortValueAsc,sortValueDesc,sortManual,cumulative,hideEmpty,topN,topAll,top,showDataLabels,showLegend,colors,colorsOptions,colorsPalette,weekStartsOn,monday,sunday,saturday,on,off,reset(topwith{count}). Chart:showTable,showChart,other,noValue,checked,unchecked,weekOf,quarterLabel,count,sumOf,avgOf,minOf,maxOf,countDistinctOf,total,group,chartOf,showRecords(weekOfwith{date},quarterLabelwith{quarter}and{year}, the…Ofkeys with{column},chartOfwith{metric}and{column},showRecordswith{group}). Messages:noColumn,empty,loading,truncated,filterHint,filterUnavailable. The mode's name isviews.display.chartin React anddisplay.chartin Vue.Feed view: flat
feed.<key>keys, such as"feed.loadMore": "Older posts", override the built-in English and French labels of the Feed view in React and Vue, one key at a time. Feed:showMore,showLess,loadMore,loading,loadingMore,error,retry,end,untitled,noValue,yes,no,moreImages(with{count}),by,media(with{title}). Settings:titleColumn,authorColumn,dateColumn,dateDisplay,relative,absolute,bodyColumn,mediaColumn,properties,showPropertyLabels,bodyLines,lines(with{count}),noLimit,density,comfortable,compact,pageSize,infiniteScroll,on,off,none.File tree: flat
filetree.<key>keys, such as"filetree.newFolder": "New album", override the built-in English and French labels of the File tree view in React and Vue, one key at a time. View:root,name,size,modified,type,path,newFolder,newFolderName,folderName,expandAll,collapseAll,details,hideDetails,info,open,preview,rename,moveTo,moveHere,delete,cancel,create,back,actions,expand,collapse,close,resizeDetails,noSelection,contents,shortcuts,sortBy(with{name}). Selection:selectRow,selectAll,selected(with{count}),clearSelection. Tree:unfiled,showMore(with{count}),showMoreUnknown,emptyFolder,empty,noMatches,loading,folder,file,oneFolder,oneFile,loaded,folders,files,items(these four with{count}),justNow,truncated,expandedFirst,uploading(these three with{count}). Moves and deletes:moved,moveItems(both with{count}and{path}),movedOne,moveItem(both with{name}and{path}),moveFailed(with{count}),undo,undone,cutReady(with{count}),created,renamed(both with{name}),deleteTitle(with{count}),deleteOneTitle(with{name}),deleteDescription,deleted(with{count}),intoSelf,intoDescendant,noPermission,notAFolder,virtualFolder,alreadyThere,moveDialogTitle(with{count}),moveOneDialogTitle(with{name}),searchFolders. Settings:settingsParent,settingsKind,settingsName,settingsSize,settingsUpdated,settingsColumns,settingsDetails,settingsFoldersFirst,settingsDepth,columnsBoth,columnsSize,columnsUpdated,columnsNone,depth0,depth1,depth2,none,on,off. The mode's name isviews.display.filetreein React anddisplay.filetreein Vue.Map view: flat
map.<key>keys, such as"map.searchArea": "Search here", override the built-in English and French labels of the Map view in React and Vue, one key at a time. Map:loading,map,noLocationColumn,withoutLocation(with{count}),withoutLocationOne,searchArea,searching,fit,zoomIn,zoomOut,open,close,cluster(with{count}),marker(with{title}). List:list,inView(with{count}),showList,hideList,emptyList. Messages:truncated(with{count}),clientFiltered,noStyle,unavailable. Settings:locationColumn,titleColumn,colorColumn,none,popupColumns,showPopupLabels,clusterSetting,style,initialView,initialFit,initialSaved,searchOnMove,on,off. The mode's name isviews.display.mapin React anddisplay.mapin Vue.Location columns: flat
location.<key>keys, such as"location.search": "Find an address", override the built-in English and French labels of location cells, editors and filters in React and Vue, one key at a time. Editor:location,pin,label,address,latitude,longitude,search,searching,noResults,searchFailed,suggestions,clear,done,cancel,edit,invalidCoordinates,coordinatesHint,noLocation. Filters:withinDistance,withinBounds,distance,west,south,east,north,withinKm(with{km}and{point}),inArea(with{south},{west},{north}and{east}). The operator names arefilters.operators.within_distanceandfilters.operators.within_bounds.Dashboard:
dashboard.<key>keys in the dashboard'stranslationsprop, such as"dashboard.refresh": "Reload", override the built-in English and French labels of the dashboard in React and Vue, one key at a time. Header and states:dashboard,edit,done,saving,saved,saveError,loadError(both with{error}),loading,notFound,refresh,empty,emptyEditable. Add widget:addWidget,addWidgetTitle,widgetType,typeView,typeKpi,typeNote,table,view,defaultView,metric,metricCount,metricSum,metricAvg,metricMin,metricMax,metricColumn,widgetTitle,noteText,add,cancel. Widgets:widgetMenu,dragHandle(both with{title}),moveLeft,moveRight,moveUp,moveDown,wider,narrower,taller,shorter,remove,openFullView,widgetLoading,widgetError(with{error}),retry,missingTable,missingView,emptyNote,kpiCount,moved,resized(both with{title}). Filters:filters,from,to,any,clear,appliesTo(with{targets}),addFilter,addFilterTitle,filterType,filterDateRange,filterSelect,filterName,filterColumn(with{table}),notApplied,removeFilter(with{name}),noFilterColumns,anyDate,fromDate,untilDate(both with{date}),dateRange(with{start}and{end}).Filters (advanced): Operator names (Contains, Equals, Starts with, etc.) use the
filters.operators.*keys. Both the dropdown options and the selected value shown when the operator select is closed are translated, so the current operator always appears in the active locale (e.g. “Contient” instead of “contains”).Pagination: All labels are translated: “Rows per page” (
pagination.rowsPerPage), the “Page X of Y” text (pagination.showing, with{page}and{total}), and the first/previous/next/last button labels (pagination.first,pagination.previous, etc.). Both the default pagination and the button-style pagination (SafePagination) use these keys.Footer calculations: Footer menu labels and results use
calculations.*keys. The options-menu toggle usesmenu.footer_calculations,menu.footer_calculations_on, andmenu.footer_calculations_off.
Form translations (catalog form)
When using getFormConfig and the built-in create/edit form (catalog form), the form resolves all labels, placeholders, and button text from the same DataTableTranslations object you pass to the provider. Add a form and value section to that object.
form – Field labels (use
labelKeyin your form config, e.g.form.name), form buttons (cancel, submit, create, update), and success/error messages. The catalog form also usescreateForm.titleandcreateForm.descriptionfor the dialog/drawer header. For select fields, useform.valueType_options.booleanetc. if you useoptionKeys.value – Used by the value-type field:
value.string_placeholder,value.json_placeholder,value.number_placeholder, and for the boolean switchvalue.enabled/value.disabled.
In your form config, set labelKey (and optionally placeholderKey, optionKeys) on each field so that the form builder replaces labels/options with t(labelKey).
Example object (form + value)
Merge this into the DataTableTranslations object you pass to the table (e.g. next to actions, columns, filters, etc.):
const myTableTranslations = {
// ... actions, columns, filters, etc. ...
form: {
cancel: "Cancel",
create: "Create",
createError: "Failed to create",
createForm: {
description: "Add a new item.",
title: "Create item",
},
created: "Created successfully",
name: "Name",
slug: "Slug",
category: "Category",
description: "Description",
enabled: "Enabled",
valueType: "Value type",
value: "Value",
submit: "Save",
update: "Update",
updateError: "Failed to update",
updated: "Updated successfully",
valueType_options: {
boolean: "Boolean",
number: "Number",
string: "String",
json: "JSON",
},
},
value: {
string_placeholder: "Default string value",
json_placeholder: "{}",
number_placeholder: "0",
enabled: "Enabled",
disabled: "Disabled",
},
};Form config example using labelKey and optionKeys so these keys are used:
defineFormConfig({
id: "my-entity",
defaultValues: { name: "", slug: "", valueType: "string", value: null, enabled: false },
fields: [
{ name: "name", type: "text", label: "Name", labelKey: "form.name", required: true },
{ name: "slug", type: "text", label: "Slug", labelKey: "form.slug", required: true },
{
name: "valueType",
type: "select",
label: "Value type",
labelKey: "form.valueType",
optionKeys: [
"form.valueType_options.boolean",
"form.valueType_options.number",
"form.valueType_options.string",
"form.valueType_options.json",
],
options: [
{ label: "boolean", value: "boolean" },
{ label: "number", value: "number" },
{ label: "string", value: "string" },
{ label: "json", value: "json" },
],
},
{
name: "value",
type: "value-type",
label: "Value",
labelKey: "form.value",
valueTypeField: "valueType",
supportedTypes: ["boolean", "json", "number", "string"],
},
],
schema: mySchema,
translations: {
namespace: "my.namespace",
keys: {
cancel: "form.cancel",
submit: "form.submit",
create: "form.create",
update: "form.update",
created: "form.created",
updated: "form.updated",
createError: "form.createError",
updateError: "form.updateError",
"createForm.title": "form.createForm.title",
"createForm.description": "form.createForm.description",
},
},
});See also:
Provider & Setup (getFormConfig)
All keys (dot-path)
Use the following keys to construct your translations object. All values are strings.
actions
Used by row actions, the Export entry in the Data menu, and by the bulk actions menu (Edit, Copy, Export, Delete tabs and dialog buttons).
| Key | Type |
|---|---|
| actions.delete | string |
| actions.edit | string |
| actions.copy | string |
| actions.export | string |
| actions.save | string |
| actions.cancel | string |
| actions.confirm | string |
| actions.title | string |
| actions.view | string |
bulk
Strings for the bulk actions overlay (shown when one or more rows are selected). Supports {action}, {count} and ICU plural: {count, plural, one {item} other {items}}.
| Key | Type |
|---|---|
| bulk.close_menu | string |
| bulk.confirm_copy_description | string |
| bulk.confirm_delete_description | string |
| bulk.confirm_title | string |
columns
| Key | Type |
|---|---|
| columns.title | string |
| columns.hide | string |
| columns.show | string |
| columns.visible | string |
| columns.hidden | string |
| columns.drag | string |
| columns.resetOrder | string |
| columns.toggleVisibility | string |
| columns.hideAll | string |
| columns.showAll | string |
| columns.edit_property | string |
| columns.filter | string |
| columns.hide_in_view | string |
| columns.reorder | string |
| columns.resize | string |
| columns.sort_ascending | string |
| columns.sort_descending | string |
common
| Key | Type |
|---|---|
| common.true | string |
| common.false | string |
| common.loading | string |
| common.error | string |
| common.success | string |
| common.reset | string |
| common.search | string |
filters
| Key | Type |
|---|---|
| filters.title | string |
| filters.add | string |
| filters.remove | string |
| filters.apply | string |
| filters.clear | string |
| filters.select_all | string |
| filters.noResults | string |
| filters.noFilters | string |
| filters.search | string |
| filters.selectedCount | string |
| filters.active_count | string |
| filters.column | string |
| filters.value | string |
| filters.value_to | string |
| filters.select_operator | string |
| filters.error | string |
filters.operators
| Key | Type |
|---|---|
| filters.operators.contains | string |
| filters.operators.equals | string |
| filters.operators.starts_with | string |
| filters.operators.ends_with | string |
| filters.operators.not_contains | string |
| filters.operators.empty | string |
| filters.operators.not_empty | string |
| filters.operators.greater_than | string |
| filters.operators.less_than | string |
| filters.operators.greater_than_or_equal | string |
| filters.operators.less_than_or_equal | string |
| filters.operators.between | string |
| filters.operators.not_equals | string |
| filters.operators.is | string |
| filters.operators.is_not | string |
| filters.operators.is_any_of | string |
| filters.operators.is_none_of | string |
| filters.operators.contains_all | string |
| filters.operators.contains_none | string |
| filters.operators.before | string |
| filters.operators.after | string |
| filters.operators.on_or_before | string |
| filters.operators.on_or_after | string |
filters.types
| Key | Type |
|---|---|
| filters.types.text | string |
| filters.types.number | string |
| filters.types.date | string |
| filters.types.option | string |
| filters.types.multiOption | string |
filters.date_shortcuts
| Key | Type |
|---|---|
| filters.date_shortcuts.today | string |
| filters.date_shortcuts.yesterday | string |
| filters.date_shortcuts.last_7_days | string |
| filters.date_shortcuts.last_30_days | string |
| filters.date_shortcuts.this_month | string |
filters.advanced
| Key | Type |
|---|---|
| filters.advanced.title | string |
| filters.advanced.basic_title | string |
| filters.advanced.convert_to_advanced | string |
| filters.advanced.filter_options | string |
| filters.advanced.edit_filter | string |
| filters.advanced.enable_filter | string |
| filters.advanced.disable_filter | string |
| filters.advanced.edit_filter_for | string |
| filters.advanced.editing | string |
| filters.advanced.done | string |
| filters.advanced.reset_filters | string |
| filters.advanced.empty_description | string |
| filters.advanced.add_first_filter | string |
| filters.advanced.quick_start | string |
| filters.advanced.quick_start_search | string |
| filters.advanced.quick_start_status | string |
| filters.advanced.quick_start_date | string |
| filters.advanced.load_error_title | string |
| filters.advanced.load_error_description | string |
| filters.advanced.retry | string |
| filters.advanced.results_count | string |
| filters.advanced.no_results_with_search | string |
| filters.advanced.no_results_description | string |
| filters.advanced.adjust_filters_hint | string |
| filters.advanced.modify_filters | string |
| filters.advanced.filtered_in | string |
| filters.advanced.search_columns | string |
| filters.advanced.no_columns_found | string |
| filters.advanced.no_columns_available | string |
| filters.advanced.no_popular_filters | string |
| filters.advanced.no_recent_filters | string |
| filters.advanced.try_different_search | string |
| filters.advanced.add_column | string |
| filters.advanced.active | string |
| filters.advanced.activate | string |
| filters.advanced.off | string |
filters.faceted
| Key | Type |
|---|---|
| filters.faceted.sort_by_label | string |
| filters.faceted.sort_by_count | string |
| filters.faceted.sort_by_value | string |
| filters.faceted.sort_by_trending | string |
| filters.faceted.selected_of_total | string |
| filters.faceted.options_count | string |
| filters.faceted.select_all | string |
| filters.faceted.select_none | string |
| filters.faceted.top_5 | string |
| filters.faceted.trending | string |
| filters.faceted.no_options_found | string |
| filters.faceted.no_options_available | string |
| filters.faceted.try_different_search | string |
| filters.faceted.no_data_for_filter | string |
| filters.faceted.statistics | string |
| filters.faceted.options | string |
| filters.faceted.records | string |
| filters.faceted.coverage | string |
filters.add_menu
| Key | Type |
|---|---|
| filters.add_menu.all | string |
| filters.add_menu.popular | string |
| filters.add_menu.recent | string |
| filters.add_menu.clear_search_hint | string |
| filters.add_menu.navigate_hint | string |
| filters.add_menu.categories.recent | string |
| filters.add_menu.categories.popular | string |
| filters.add_menu.categories.text | string |
| filters.add_menu.categories.number | string |
| filters.add_menu.categories.date | string |
| filters.add_menu.categories.option | string |
filters.presets
| Key | Type |
|---|---|
| filters.presets.title | string |
| filters.presets.panel_title | string |
| filters.presets.share | string |
| filters.presets.duplicate | string |
| filters.presets.load | string |
| filters.presets.used_times | string |
| filters.presets.last_used | string |
| filters.presets.save_dialog_title | string |
| filters.presets.save_dialog_description | string |
| filters.presets.name_label | string |
| filters.presets.name_placeholder | string |
| filters.presets.description_label | string |
| filters.presets.description_placeholder | string |
| filters.presets.tags_label | string |
| filters.presets.tags_placeholder | string |
| filters.presets.make_public | string |
| filters.presets.no_active_filters_to_save | string |
| filters.presets.save_preset | string |
| filters.presets.saving | string |
| filters.presets.delete_title | string |
| filters.presets.delete_description | string |
| filters.presets.save_current | string |
| filters.presets.import | string |
| filters.presets.export_all | string |
| filters.presets.search_placeholder | string |
| filters.presets.no_presets_found | string |
| filters.presets.try_different_search | string |
| filters.presets.create_first_hint | string |
| filters.presets.save_first | string |
| filters.presets.tabs.all | string |
| filters.presets.tabs.recent | string |
| filters.presets.tabs.popular | string |
| filters.presets.tabs.system | string |
pagination
Used by both the default pagination and the button-style pagination (e.g. “Lignes par page”, “Page 1 of 2”). pagination.showing is used for the “Page X of Y” text and supports {page} and {total}. Default English value: "Page {page} of {total}" (example French: "Page {page} sur {total}").
| Key | Type |
|---|---|
| pagination.first | string |
| pagination.last | string |
| pagination.next | string |
| pagination.previous | string |
| pagination.of | string |
| pagination.page | string |
| pagination.rowsPerPage | string |
| pagination.showing | string (supports {page}, {total}) |
| pagination.selectedCount | string |
search
| Key | Type |
|---|---|
| search.placeholder | string |
selection
Used for the selection column header and the bulk actions menu count (e.g. “3 rows selected”). Supports {count} and ICU plural.
| Key | Type |
|---|---|
| selection.rows | string |
sorting
| Key | Type |
|---|---|
| sorting.ascending | string |
| sorting.descending | string |
| sorting.choose_column | string |
| sorting.current | string |
views
| Key | Type |
|---|---|
| views.title | string |
| views.current | string |
| views.tabs | string |
| views.settings | string |
| views.viewActions | string |
| views.filterViews | string |
| views.more | string |
| views.newView | string |
| views.moveLeft | string |
| views.moveRight | string |
| views.moveUp | string |
| views.moveDown | string |
| views.moved | string |
| views.orderError | string |
| views.save | string |
| views.saveAs | string |
| views.update | string |
| views.delete | string |
| views.rename | string |
| views.setDefault | string |
| views.defaultView | string |
| views.default_system_view | string |
| views.systemView | string |
| views.custom_view | string |
| views.temporary_view | string |
| views.viewName | string |
| views.noViews | string |
| views.confirmDelete | string |
| views.confirmDeleteWithName | string |
| views.manage | string |
| views.saveChanges | string |
| views.saveChangesTooltip | string |
| views.add_view | string |
| views.view_options | string |
| views.view_name | string |
| views.cannot_delete_system_view | string |
| views.cannot_update_system_view | string |
| views.view_created_successfully | string |
| views.view_updated_successfully | string |
| views.view_deleted_successfully | string |
| views.error_saving_view | string |
| views.error_updating_view | string |
| views.error_deleting_view | string |
| views.error_loading_views | string |
| views.display.title | string |
| views.display.gallery | string |
| views.display.table | string |
| views.display.kanban | string |
| views.gallery.title | string |
| views.gallery.image | string |
| views.gallery.titleColumn | string |
| views.gallery.properties | string |
| views.gallery.aspectRatio | string |
| views.gallery.imageFit | string |
| views.gallery.cardSize | string |
| views.gallery.showLabels | string |
| views.gallery.wide | string |
| views.gallery.square | string |
| views.gallery.video | string |
| views.gallery.portrait | string |
| views.gallery.cover | string |
| views.gallery.contain | string |
| views.gallery.small | string |
| views.gallery.medium | string |
| views.gallery.large | string |
| views.kanban.titleColumn | string |
| views.kanban.properties | string |
| views.kanban.showLabels | string |
| views.history.undo | string |
| views.history.redo | string |
| views.history.nothing_to_undo | string |
| views.history.nothing_to_redo | string |
| views.notifications.created | string |
| views.notifications.updated | string |
| views.notifications.deleted | string |
| views.notifications.setAsDefault | string |
| views.notifications.error.create | string |
| views.notifications.error.update | string |
| views.notifications.error.delete | string |
| views.notifications.error.setDefault | string |
| views.dialog.save.title | string |
| views.dialog.save.description | string |
| views.dialog.save.name | string |
| views.dialog.save.namePlaceholder | string |
| views.dialog.save.default | string |
| views.dialog.save.global | string |
| views.dialog.save.layout | string |
| views.dialog.save.save | string |
| views.dialog.save.saving | string |
| views.dialog.manage.title | string |
| views.dialog.manage.description | string |
| views.dialog.manage.name | string |
| views.dialog.manage.type | string |
| views.dialog.manage.created | string |
| views.dialog.manage.actions | string |
| views.dialog.manage.rename | string |
| views.dialog.manage.delete | string |
| views.dialog.manage.setDefault | string |
| views.dialog.manage.editColumns | string |
| views.dialog.manage.stopEdit | string |
| views.dialog.manage.editSystemViewWarning | string |
state
| Key | Type |
|---|---|
| state.loading | string |
| state.noData | string |
| state.error | string |
| state.error_description | string |
url_state
| Key | Type |
|---|---|
| url_state.copy_link | string |
| url_state.link_copied | string |
| url_state.reset | string |
| url_state.share | string |
| url_state.auto_save | string |
| url_state.save_success | string |
demo
| Key | Type |
|---|---|
| demo.title | string |
| demo.copy_url | string |
| demo.save_view | string |
| demo.reset | string |
| demo.view | string |
| demo.sort_by | string |
| demo.select_view | string |
| demo.select_sort | string |
| demo.view_name_placeholder | string |
| demo.save | string |
| demo.current_state | string |
| demo.data | string |
| demo.loading | string |
| demo.name_asc | string |
| demo.name_desc | string |
| demo.date_asc | string |
| demo.date_desc | string |
table
| Key | Type |
|---|---|
| table.no_results | string |
| table.no_results_description | string |
| table.hide_column | string |
| table.show_column | string |
| table.toggle_columns | string |
| table.selected_rows | string |
| table.sort_ascending | string |
| table.sort_descending | string |
| table.drag_column | string |
calculations
| Key | Type |
|---|---|
| calculations.none | string |
| calculations.count | string |
| calculations.percent | string |
| calculations.more | string |
| calculations.count_all | string |
| calculations.count_values | string |
| calculations.count_unique | string |
| calculations.count_empty | string |
| calculations.count_not_empty | string |
| calculations.count_true | string |
| calculations.count_false | string |
| calculations.percent_empty | string |
| calculations.percent_not_empty | string |
| calculations.percent_true | string |
| calculations.percent_false | string |
| calculations.sum | string |
| calculations.average | string |
| calculations.median | string |
| calculations.min | string |
| calculations.max | string |
| calculations.range | string |
| calculations.calculate | string |
menu
| Key | Type |
|---|---|
| menu.back | string |
| menu.data | string |
| menu.columns | string |
| menu.columns_visible | string |
| menu.filter | string |
| menu.filters | string |
| menu.group | string |
| menu.select_column | string |
| menu.current_groups | string |
| menu.active_groups | string |
| menu.options | string |
| menu.properties | string |
| menu.sort | string |
| menu.subgroup | string |
| menu.title | string |
| menu.footer_calculations | string |
| menu.footer_calculations_on | string |
| menu.footer_calculations_off | string |
form (catalog form)
Include these when using create/edit forms so labels, placeholders, and buttons resolve. Use labelKey / optionKeys in your form config to point to these keys.
| Key | Type |
|---|---|
| form.cancel | string |
| form.create | string |
| form.createError | string |
| form.createForm.title | string |
| form.createForm.description | string |
| form.created | string |
| form.name | string |
| form.slug | string |
| form.category | string |
| form.description | string |
| form.enabled | string |
| form.valueType | string |
| form.value | string |
| form.submit | string |
| form.update | string |
| form.updateError | string |
| form.updated | string |
| form.valueType_options.boolean | string |
| form.valueType_options.number | string |
| form.valueType_options.string | string |
| form.valueType_options.json | string |
value (value-type field)
Used by the value-type form field for placeholders and boolean labels.
| Key | Type |
|---|---|
| value.string_placeholder | string |
| value.json_placeholder | string |
| value.number_placeholder | string |
| value.enabled | string |
| value.disabled | string |
root
| Key | Type |
|---|---|
| add_an_item | string |
Both editions use add_an_item for the toolbar create button ("Add item" in English, "Ajouter" in French). Vue previously read its own create key for this button; if you translated create there for the create button, move that translation to add_an_item. The catalog form's own form.create button label key is unrelated and unchanged.
Vue filter, menu, and form controls
Vue includes English and French defaults. Advanced filters accept the same filters.* keys used by React, including filters.add, filters.apply, filters.column, filters.value_to, filters.operators.between, and filters.advanced.disable_filter.
Vue's reusable field and collection controls inherit table translations for loading, retry, option creation, item editing, and dialog actions. Standalone controls retain English fallbacks when there is no table provider. Field/section translation keys still resolve through the form configuration; translating controls does not change business values or server error messages.
Saved views, Options, row menus, confirmation dialogs, and status feedback use the table locale. Custom dictionaries can override defaults without changing keyboard navigation or focus behavior. Keep React render functions and Vue components/VNodes in their respective runtimes.
Empty-state translations
React uses table.no_results for the filtered title, table.no_results_description for its description, state.noData for an empty dataset, and filters.clear for the reset button and its accessible name. Provide all four when overriding the provider; otherwise defaults may remain in English. pagination.autoPageSize labels the Automatic option.
Vue uses noResults, noResultsDescription, noDataAvailable, and clearFilters and includes English and French defaults. The same keys apply to Table, Kanban, and Gallery. Explicit table.emptyState.title and description take precedence over the contextual translations.
Favorite-view translations
React exposes views.favorite, views.setFavorite, views.removeFavorite, and views.favoriteError. Vue exposes favoriteView, setFavoriteView, removeFavoriteView, and favoriteViewError, with English/French defaults. The star's tooltip and accessible label share the same translation, and aria-pressed indicates whether the active view is the favorite.
View tabs translations
React uses views.tabs ("Views") as the accessible name of the tab list, views.more ("More views") for the name and tooltip of the … overflow button, views.newView ("New view") for the "+" tab that opens the save dialog, and views.dialog.save.layout ("Layout") for the layout choice inside that dialog. Vue uses viewTabs, moreViews, newView, and viewLayout for the same four labels, with English ("Views", "More views", "New view", "Layout") and French ("Vues", "Plus de vues", "Nouvelle vue", "Mise en page") defaults. Since v3.9.0 the overflow is an icon button, so a host that translated views.more (Vue moreViews) as "More" translates it as "More views".
The order of views adds React views.moveLeft, views.moveRight, views.moveUp, views.moveDown, views.moved (with {name}, {position} and {count}, announced after a move) and views.orderError; React falls back to English when your translations lack them. Vue has moveViewLeft, moveViewRight, moveViewUp, moveViewDown, viewMoved and viewOrderError, with English and French defaults.
Facet, folder and tag translations
The facet panel, the folders of the other views and tags columns have built-in English and French labels in both editions, chosen from the table's locale. Override them with flat facets.<key>, filetree.<key> (the folder dialog and picker add rootFolder, parentFolder, inFolder, noFolders and createFailed) and tags.<key> keys in the table's translations.
Localized documentation examples
The inline previews inherit the documentation language. Complete recipe entrypoints accept these optional host presentation props. Save this type beside the recipe when copying it. Omit the props to keep the default English interface, or pass locale and the framework’s translation dictionary. Application labels in configuration and form fields remain your responsibility.
import type { DataTableTranslations } from "@/components/ui/yayaw-table/types/translations";
/** Optional host presentation; omit to use the registry defaults. */
export interface ExamplePresentation {
locale?: string;
title?: string;
translations?: DataTableTranslations;
}import type { DataTableTranslations } from "@/components/ui/yayaw-table-vue/types";
/** Optional host presentation; omit to use the registry defaults. */
export interface ExamplePresentation {
locale?: string;
title?: string;
translations?: DataTableTranslations;
}