Skip to content

Labels and Language

Translate visible labels and assistive announcements together. locale controls locale-aware behavior; it does not download a translation pack or rename your application’s card values.

Interactive example

Translate board labels

Translate workflow names and interface messages independently of card data.

Try it: Switch to French labels, then return to English.

Loading example…

What to notice: Workflow labels change while the four tasks keep their IDs and status values.

TypeScript source

Install the packages from Getting Started, then use this source in your app.

board-actions.ts
import type { KanbanPlugin, KanbanConfig } from '@revolist/kanban';
import type { WorkCard } from './first-board';
export function moveResearch(kanban: KanbanPlugin<WorkCard>, columnProp: string) {
return kanban.moveCards(['task-1'], { columnProp });
}
export function moveResearchToPlatform(kanban: KanbanPlugin<WorkCard>) {
return kanban.moveCards(['task-1'], { columnProp: 'todo', swimlaneId: 'platform' });
}
export function selectTodoCards(kanban: KanbanPlugin<WorkCard>) {
kanban.setSelectedCardIds(kanban.getCards().filter(card => card.status === 'todo').map(card => card.id));
}
export const workInProgress: Partial<KanbanConfig<WorkCard>> = {
columns: [{ prop: 'todo', name: 'To do' }, { prop: 'doing', name: 'In progress', wipLimit: 1 }, { prop: 'done', name: 'Done' }],
wipBehavior: 'block',
};
export const startBeforeDone: Partial<KanbanConfig<WorkCard>> = {
rules: { canDrop: ({ cards, targetColumn }) => targetColumn.prop === 'done' && cards.some(card => card.status === 'todo') ? 'Start the task before marking it done.' : true },
};
export function frenchBoard(config: KanbanConfig<WorkCard>): KanbanConfig<WorkCard> {
return { ...config, locale: 'fr-FR', columns: config.columns?.map(column => ({ ...column, name: ({ todo: 'À faire', doing: 'En cours', done: 'Terminé' } as Record<string, string>)[String(column.prop)] ?? column.name })), labels: { ...config.labels, emptyColumn: 'Aucune carte', dropCardHere: 'Déposer une carte ici', moveCancelled: 'Déplacement annulé', editCard: 'Modifier la carte', deleteCard: 'Supprimer la carte' } };
}
Download board-actions.ts

Try it: change the example language, then move or select a card. The board should describe the action in the selected language without changing stored status values.

English labels are bundled. Pass a partial labels object to replace every visible or assistive string used by your product:

grid.kanban = {
...config,
locale: 'pt-PT',
labels: {
emptyColumn: 'Sem cartões',
addCard: (column, lane) => `Adicionar cartão em ${column}${lane ? `, ${lane}` : ''}`,
newCard: 'Novo cartão',
editCard: 'Editar cartão',
addCardHere: 'Adicionar cartão aqui',
deleteCard: 'Eliminar cartão',
cardContextMenu: 'Ações do cartão Kanban',
cardCount: (visible, total) => `${visible} de ${total} cartões`,
moveBlocked: (reason) => `Movimento bloqueado: ${reason}`,
},
};

locale controls locale-aware query normalization for built-in card search and the default date-range component. Other number and product-specific display formatting remains template-owned. Kanban does not automatically download a translation pack.

The toolbar has its own KanbanToolbarLabels. The editor accepts its documented field and action labels. Translate adapter-returned error messages in your application; Kanban cannot infer a translation for arbitrary server text.

See themes, keyboard announcements and managed saving feedback. See the Kanban API for exact types and signatures.