The words and the number and date notation the components write themselves: English by default, German in one import, and any single entry your own. Wording is a directory of named entries, not a translation call (also called i18n or localisation).
import { LanguageProvider, useWording, useFormats } from "@umriss-ui/core";
English needs nothing (ADR-0018). German ships as the subpath @umriss-ui/core/wording/de with GERMAN_WORDING and GERMAN_FORMATS, the two halves of a language; take both in one import (ADR-0019, ADR-0024).
Pass them to the language of UmrissProvider for the application, or to LanguageProvider for one section. Both merge entry by entry: what you leave out keeps its default. Every wording is typed Wording, so a whole language of your own misses no entry without a compile error.
Import both halves of German from @umriss-ui/core/wording/de; the components' own words and notation change, your labels stay as written.
import { useState } from "react";
import { DatePicker, FormField, LanguageProvider, NumberInput, Stack } from "@umriss-ui/core";
import { GERMAN_FORMATS, GERMAN_WORDING } from "@umriss-ui/core/wording/de";
export default function German() {
const [date, setDate] = useState<Date | null>(new Date(2026, 2, 18));
const [weight, setWeight] = useState<number | null>(1284.5);
return (
<LanguageProvider wording={GERMAN_WORDING} formats={GERMAN_FORMATS}>
<Stack direction="row" gap={3} wrap>
<FormField label="Delivery date">
<DatePicker value={date} onChange={setDate} clearable />
</FormField>
<FormField label="Weight">
<NumberInput value={weight} onChange={setWeight} decimals={1} suffix="kg" />
</FormField>
</Stack>
</LanguageProvider>
);
}
The same surface without a provider and under German: verdicts, placeholders and number notation move, the caller's labels and data stay.
import { Combobox, FormField, Grid, LanguageProvider, Stack, Stat, Text } from "@umriss-ui/core";
import type { LimitSet } from "@umriss-ui/core";
import { GERMAN_FORMATS, GERMAN_WORDING } from "@umriss-ui/core/wording/de";
/* The p95 latency objective of the checkout service: 300 ms. */
const OBJECTIVE: LimitSet = {
target: 250,
limits: [
{ value: 270, side: "upper", severity: "warning" },
{ value: 300, side: "upper", severity: "alarm" },
],
};
const ENGINEERS = [
{ value: "priya", label: "Priya Raman" },
{ value: "jonas", label: "Jonas Keller" },
{ value: "ada", label: "Ada Mwangi" },
];
function Surface() {
return (
<Stack gap={3}>
<Stat label="Checkout p95" value={312} unit="ms" limits={OBJECTIVE} />
<Stat label="Search p95" value={null} unit="ms" limits={OBJECTIVE} />
<Stat label="Requests today" value={1284311} decimals={0} />
<FormField label="Assignee">
<Combobox value={null} onChange={() => {}} clearable options={ENGINEERS} />
</FormField>
</Stack>
);
}
export default function SideBySide() {
return (
<Grid minItemWidth="240px" gap={5}>
<Stack gap={2}>
<Text size="xs" tone="muted">
Without a provider
</Text>
<Surface />
</Stack>
<Stack gap={2}>
<Text size="xs" tone="muted">
GERMAN_WORDING and GERMAN_FORMATS
</Text>
<LanguageProvider wording={GERMAN_WORDING} formats={GERMAN_FORMATS}>
<Surface />
</LanguageProvider>
</Stack>
</Grid>
);
}
Pass only the entries your application says differently; every entry you leave out keeps its default, never an empty text or a key.
import { Grid, LanguageProvider, Stack, Stat, Text } from "@umriss-ui/core";
import type { LanguageOptions, LimitSet } from "@umriss-ui/core";
/* Outside the component, so the provider does not rebuild on every render. */
const WORDING: LanguageOptions["wording"] = {
verdictOk: "Within objective",
verdictWarning: "Objective at risk",
verdictAlarm: "Objective breached",
};
const OBJECTIVE: LimitSet = {
target: 250,
limits: [
{ value: 270, side: "upper", severity: "warning" },
{ value: 300, side: "upper", severity: "alarm" },
],
};
function Surface() {
return (
<Stack gap={3}>
<Stat label="Sign-in p95" value={184} unit="ms" limits={OBJECTIVE} />
<Stat label="Search p95" value={276} unit="ms" limits={OBJECTIVE} />
<Stat label="Checkout p95" value={312} unit="ms" limits={OBJECTIVE} />
<Stat label="Billing p95" value={null} unit="ms" limits={OBJECTIVE} />
</Stack>
);
}
export default function SingleEntries() {
return (
<Grid minItemWidth="240px" gap={5}>
<Stack gap={2}>
<Text size="xs" tone="muted">
The defaults
</Text>
<Surface />
</Stack>
<Stack gap={2}>
<Text size="xs" tone="muted">
Three entries replaced
</Text>
<LanguageProvider wording={WORDING}>
<Surface />
</LanguageProvider>
</Stack>
</Grid>
);
}
Formats are a register of their own: replace number and count for Swiss notation and every word stays English.
import { Grid, LanguageProvider, Stack, Stat, Text } from "@umriss-ui/core";
import type { LanguageOptions } from "@umriss-ui/core";
/* Formatters are costly to build: one per number of decimals, made once. */
const swiss = new Map<number | undefined, Intl.NumberFormat>();
function number(n: number, decimals?: number) {
let format = swiss.get(decimals);
if (!format) {
format = new Intl.NumberFormat("de-CH", { minimumFractionDigits: decimals, maximumFractionDigits: decimals ?? 10 });
swiss.set(decimals, format);
}
return format.format(n);
}
const swissCount = new Intl.NumberFormat("de-CH");
const FORMATS: LanguageOptions["formats"] = {
number,
count: (n) => swissCount.format(n),
};
function Surface() {
return (
<Stack gap={3}>
<Stat label="Engineering, actual March" value={196420.5} decimals={2} unit="CHF" />
<Stat label="Invoices booked" value={1284} decimals={0} />
</Stack>
);
}
export default function OwnNotation() {
return (
<Grid minItemWidth="240px" gap={5}>
<Stack gap={2}>
<Text size="xs" tone="muted">
The default notation
</Text>
<Surface />
</Stack>
<Stack gap={2}>
<Text size="xs" tone="muted">
Swiss notation, English words
</Text>
<LanguageProvider formats={FORMATS}>
<Surface />
</LanguageProvider>
</Stack>
</Grid>
);
}
Read useFormats and useWording in a component of your own, and it writes dates and numbers like the library, under any provider.
import { Button, Grid, LanguageProvider, Stack, Text, useFormats, useWording } from "@umriss-ui/core";
import { GERMAN_FORMATS, GERMAN_WORDING } from "@umriss-ui/core/wording/de";
const SPRINT_END = new Date(2026, 2, 27, 17, 0);
function SprintHeader() {
const formats = useFormats();
const wording = useWording();
return (
<Stack direction="row" gap={3} align="center" wrap>
<Text size="sm">
Sprint 14 ends <Text as="span" mono>{formats.dateTime(SPRINT_END, false)}</Text> ·{" "}
<Text as="span" mono>{formats.count(1240)}</Text> points delivered this year
</Text>
<Button size="sm" variant="ghost">
{wording.today}
</Button>
</Stack>
);
}
export default function OwnComponents() {
return (
<Grid minItemWidth="280px" gap={5}>
<SprintHeader />
<LanguageProvider wording={GERMAN_WORDING} formats={GERMAN_FORMATS}>
<SprintHeader />
</LanguageProvider>
</Grid>
);
}
Every entry of Wording: the English of DEFAULT_WORDING beside the German of GERMAN_WORDING. A function entry receives the parameters its key names and returns the sentence beside it. Override any entry by its key; a presets entry inside presets.
| Key | English | German | Description |
|---|---|---|---|
clearInput | Clear input | Eingabe leeren | The cross in the text field. |
clearSelection | Clear selection | Auswahl leeren | The cross in the select and in the combobox. |
decreaseValue | Decrease value | Wert verringern | Stepper buttons of the number field. |
increaseValue | Increase value | Wert erhöhen | — |
| Key | English | German | Description |
|---|---|---|---|
comboboxPlaceholder | Search or select | Suchen oder wählen | — |
noMatches | No matches | Keine Treffer | Empty state of both lists. |
multiSelectPlaceholder | Select | Auswählen | — |
multiSelectSearchPlaceholder | Search | Suchen | — |
searchOptions | Search options | Optionen durchsuchen | — |
options | Options | Optionen | Group name of the option list. |
optionScope | View | Ansicht | Group name of the scope switch. |
optionScopeAll | All | Alle | — |
optionScopeSelected(count) | `Selected (${count})` | `Gewählte (${count})` | The second scope, with the count in the text. |
selectAll | All | Alle | — |
selectNone | None | Keine | — |
invertSelection | Invert | Umkehren | — |
nothingSelected | Nothing selected | Nichts ausgewählt | — |
removeSelectedValue(beschriftung) | `Remove ${beschriftung}` | `${label} entfernen` | The cross on a selected value in the trigger. |
manageMoreSelected(count) | `Manage all ${count} selected` | `Alle ${count} Gewählten verwalten` | The "+N" counter in the trigger. |
multiSelectSummary(gewaehlt, total) | `${gewaehlt} / ${total}` | `${selected} / ${total}` | The summary in the panel: "3 / 12". The sentence structure belongs to the language, even where it is only a slash here. |
optionCount(count) | (count === 1 ? "1 option" : `${count} options`) | (count === 1 ? "1 Option" : `${count} Optionen`) | How many options stand, when a list opens or its filter changes; never zero - an empty list says its own empty text. Named, like the three below, after the moment it is spoken in: an announcement labels no element. |
optionActive(label, state) | [label, group, selected && "selected", disabled && "unavailable"].filter(Boolean).join(", ") | [label, group, selected && "ausgewählt", disabled && "nicht verfügbar"].filter(Boolean).join(", ") | The option the keys moved onto, with what VoiceOver leaves out. |
optionAdded(label) | `${label} added` | `${label} hinzugefügt` | A value the multi-select took or gave away where no checkbox had the focus to say it - Enter in the search, a chip, Backspace. |
optionRemoved(label) | `${label} removed` | `${label} entfernt` | — |
| Key | English | German | Description |
|---|---|---|---|
palettePlaceholder | Search … | Suchen … | What stands in the empty field. |
paletteField | Search | Suchen | Accessible name of the field. Deliberately kept apart from the placeholder - whoever labels the field differently does not thereby rename the window. |
palettePanel | Command palette | Befehlspalette | Accessible name of the window. |
paletteList | Finds | Funde | Accessible name of the list of finds. |
paletteNoFinds | Nothing found | Nichts gefunden | The one line when the query finds nothing. |
paletteFindCount(count) | (count === 1 ? "1 find" : `${count} finds`) | (count === 1 ? "1 Fund" : `${count} Funde`) | What the screen reader hears when the number of finds changes. |
paletteMoreFinds(count) | (count === 1 ? "1 more find" : `${count} more finds`) | (count === 1 ? "1 weiterer Fund" : `${count} weitere Funde`) | The last line when more finds exist than maxFinds lets stand. |
paletteHintMove | select | wählen | The three key hints in the footer, each the text beside the key. |
paletteHintChoose | open | öffnen | — |
paletteHintClose | close | schließen | — |
paletteKeyEsc | Esc | Esc | The legend on the Escape key. The arrows and the return key are glyphs and therefore do not stand here; "Esc" is a word and is called something else elsewhere. |
| Key | English | German | Description |
|---|---|---|---|
datePlaceholder | Select date | Datum wählen | — |
datePanel | Select date | Datum wählen | Accessible name of the panel. Deliberately kept apart from the placeholder: whoever labels the field differently does not thereby rename the dialog. |
dateClear | Clear date | Datum leeren | — |
dateTimePlaceholder | Select date and time | Datum und Zeit wählen | — |
dateTimePanel | Select date and time | Datum und Zeit wählen | — |
dateTimeClear | Clear date and time | Datum und Zeit leeren | — |
dateRangePlaceholder | Select range | Zeitraum wählen | — |
dateRangePanel | Select range | Zeitraum wählen | — |
dateRangeClear | Clear range | Zeitraum leeren | — |
dateTimeRangePanel | Select range with time | Zeitraum mit Uhrzeit wählen | Accessible name of the panel in the range with time of day. |
dateTimeRangeClear | Clear range with time | Zeitraum mit Uhrzeit leeren | The clearing x of the range with time - kept apart from the range without, so that an application can call the two differently. |
previousMonth | Previous month | Voriger Monat | — |
nextMonth | Next month | Nächster Monat | — |
quickSelect | Quick select | Schnellwahl | Group name of the preset column. |
today | Today | Heute | — |
now | Now | Jetzt | — |
clear | Clear | Leeren | — |
apply | Apply | Übernehmen | — |
allDay | All day | Ganztägig | — |
timeOfDay | Time | Uhrzeit | — |
hour | Hour | Stunde | — |
minute | Minute | Minute | — |
second | Second | Sekunde | — |
sideFrom | From | Von | Header of the two time columns in the range with time of day. |
sideTo | To | Bis | — |
startHour | Start hour | Startstunde | Accessible name of the time fields, per side. |
startMinute | Start minute | Startminute | — |
startSecond | Start second | Startsekunde | — |
endHour | End hour | Endstunde | — |
endMinute | End minute | Endminute | — |
endSecond | End second | Endsekunde | — |
timeFieldIncrease(feld) | `Increase ${feld}` | `${field} erhöhen` | Stepper buttons of a time field; the label comes from above. |
timeFieldDecrease(feld) | `Decrease ${feld}` | `${field} verringern` | — |
chooseStartDate | Select start date | Startdatum wählen | Footer of the range panels. |
chooseEndDate | Select end date – backwards is allowed | Enddatum wählen – rückwärts ist erlaubt | — |
days(count) | `${count} ${count === 1 ? "day" : "days"}` | `${count} ${count === 1 ? "Tag" : "Tage"}` | "3 days" or "1 day" - the plural belongs to the language. |
daysSelected(count) | `${count} ${count === 1 ? "day" : "days"} selected` | `${count} ${count === 1 ? "Tag" : "Tage"} gewählt` | "3 days selected" |
rangePreview(from, to, count) | `${from} – ${to} · ${count} ${count === 1 ? "day" : "days"}` | `${from} – ${to}\u2009·\u2009${count} ${count === 1 ? "Tag" : "Tage"}` | "17.03. – 19.03. · 3 days" while dragging; the dates come from the formats. |
daysAllDay(count) | `${count} ${count === 1 ? "day" : "days"} (all day)` | `${count} ${count === 1 ? "Tag" : "Tage"} (ganztägig)` | "3 days (all day)" |
duration(teile) | `Duration: ${teile.join(" ")}` | `Dauer: ${parts.join(" ")}` | "Duration: 1 day 2 hrs 30 min" |
hoursShort(count) | `${count} ${count === 1 ? "hr" : "hrs"}` | `${count} Std` | — |
minutesShort(count) | `${count} min` | `${count} Min` | — |
timeMissingHint(timeOfDay) | `This time does not exist on this day (start of daylight saving time). ${timeOfDay} is used instead.` | `Diese Uhrzeit existiert an diesem Tag nicht (Beginn der Sommerzeit). Es wird ${timeOfDay} Uhr verwendet.` | Daylight-saving change: the hour that does not exist. |
timeMissingHintSide(side, timeOfDay) | `${side}: This time does not exist on this day (start of daylight saving time). ${timeOfDay} is used instead.` | `${side}: Diese Uhrzeit existiert an diesem Tag nicht (Beginn der Sommerzeit). Es wird ${timeOfDay} Uhr verwendet.` | The same, with the side put in front ("From"/"To"). |
timeAmbiguousHint | This time occurs twice on this day (end of daylight saving time): | Diese Uhrzeit kommt an diesem Tag zweimal vor (Ende der Sommerzeit): | Daylight-saving change: the hour that occurs twice. |
timeAmbiguousHintSide(side) | `${side}: This time occurs twice on this day (end of daylight saving time):` | `${side}: Diese Uhrzeit kommt an diesem Tag zweimal vor (Ende der Sommerzeit):` | — |
timeEarlier(versatz) | `Earlier (${versatz})` | `Frühere (${offset})` | — |
timeLater(versatz) | `Later (${versatz})` | `Spätere (${offset})` | — |
weekdays | ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"] | ["Mo", "Di", "Mi", "Do", "Fr", "Sa", "So"] | The calendar's weekday headers, starting at Monday. |
presets.today | Today | Heute | The quick-select ranges, in the order of PRESET_LABELS. |
presets.yesterday | Yesterday | Gestern | The quick-select ranges, in the order of PRESET_LABELS. |
presets.last7Days | Last 7 days | Letzte 7 Tage | The quick-select ranges, in the order of PRESET_LABELS. |
presets.last30Days | Last 30 days | Letzte 30 Tage | The quick-select ranges, in the order of PRESET_LABELS. |
presets.thisMonth | This month | Dieser Monat | The quick-select ranges, in the order of PRESET_LABELS. |
presets.previousMonth | Previous month | Voriger Monat | The quick-select ranges, in the order of PRESET_LABELS. |
presets.thisQuarter | This quarter | Dieses Quartal | The quick-select ranges, in the order of PRESET_LABELS. |
presets.thisYear | This year | Dieses Jahr | The quick-select ranges, in the order of PRESET_LABELS. |
| Key | English | German | Description |
|---|---|---|---|
pagination | Pagination | Seitennavigation | — |
rows | Rows | Zeilen | — |
rowsPerPage | Rows per page | Zeilen pro Seite | — |
pageOfPages(page, total, formatted) | `Page ${formatted?.page ?? page} of ${formatted?.total ?? total}` | `Seite ${formatted?.page ?? page} von ${formatted?.total ?? total}` | "Page 2 of 7". formatted carries both numbers in the provider's formats, where the caller has them - a table over a server has "Page 1 of 100,000". |
previousPage | Back | Zurück | — |
nextPage | Next | Weiter | — |
filterReset | Reset | Zurücksetzen | The two buttons in the column filter's footer. |
filterDone | Done | Fertig | — |
| Key | English | German | Description |
|---|---|---|---|
columns | Columns | Spalten | The column menu's button. |
arrangeColumns | Show, hide and arrange columns | Spalten ein- und ausblenden, anordnen | Accessible name of the list in the column menu. |
columnForward(column) | `Move ${column} forward` | `${column} nach vorn` | The two buttons that move a column in the column menu. |
columnBackward(column) | `Move ${column} backward` | `${column} nach hinten` | — |
pinColumnToStart(column) | `Pin ${column} to start` | `${column} am Anfang fixieren` | The column menu's pin keys: to a side, and back when it is pinned there. |
pinColumnToEnd(column) | `Pin ${column} to end` | `${column} am Ende fixieren` | — |
unpinColumn(column) | `Unpin ${column}` | `Fixierung von ${column} lösen` | — |
columnForwardHint | Move forward | Nach vorn | The tooltips over those four keys: short, without the column, which stands in the same line. The keys' names above keep it for a screen reader. |
columnBackwardHint | Move backward | Nach hinten | — |
pinToStartHint | Pin to start | Am Anfang fixieren | — |
pinToEndHint | Pin to end | Am Ende fixieren | — |
unpinHint | Unpin | Fixierung lösen | — |
exportLabel | Export | Exportieren | The export button. |
exportPageLabel | Export page | Seite exportieren | The export button of a table in server mode, which holds and writes one page. |
exportFileName | table.csv | tabelle.csv | The export's file name, where the application names none. |
tableSearchPlaceholder | Search … | Suchen … | Placeholder and accessible name of the search field. |
tableSearchLabel | Search table | Tabelle durchsuchen | — |
filterColumn(column) | `Filter ${column}` | `${column} filtern` | The filter button of a column: "Filter Region". |
filterHint | Filter | Filtern | The tooltip over that button. |
selectRow(row) | `Select ${row}` | `${row} auswählen` | The selection of one row, named after its row header. |
selectAllRows | Select all | Alle auswählen | The selection of every row in the filtered set. |
selectAllOnPage | Select all on this page | Alle auf dieser Seite auswählen | The same checkbox in server mode, where the table holds one page of a server's. |
expandRowNamed(row) | `Expand ${row}` | `${row} aufklappen` | The expand button, named after the row header. |
collapseRowNamed(row) | `Collapse ${row}` | `${row} zuklappen` | — |
rowActions | Actions | Aktionen | Header of the actions column - for the screen reader, not visible. |
rowAction(aktion, row) | `${aktion}: ${row}` | `${action}: ${row}` | One action on a row: "Open: A-2041". |
rowActionsMenu(row) | `Actions: ${row}` | `Aktionen: ${row}` | The menu holding a row's actions. |
editCell(column, row) | `Edit ${column}: ${row}` | `${column} bearbeiten: ${row}` | The editor of a cell in a table's grid mode, named after its column and its row: "Edit Budget: Marketing". |
newRow | New row | Neue Zeile | The button above a grid that opens an empty row to fill in, and the name of that row while it has none (ADR-0036). |
saveRow | Save | Speichern | A row draft's buttons, named with the row through rowAction. |
discardRow | Discard | Verwerfen | — |
deleteRow | Delete | Löschen | A row's delete button, and its question once pressed: Delete? Delete / Keep. |
deleteRowAsk | Delete? | Löschen? | — |
keepRow | Keep | Behalten | — |
saveOrDiscardFirst | Save or discard this row first | Erst diese Zeile speichern oder verwerfen | Said where someone tries to leave a row draft unsaved. |
cellAbsentValue | No value | Kein Wert | What the screen reader hears for an absent value. Visibly a muted dash stands there. |
booleanYes | Yes | Ja | A boolean without a presentation of its own. |
booleanNo | No | Nein | — |
footerSum | Sum | Summe | The kind of a footer number, read out before the number. |
footerAverage | Average | Durchschnitt | — |
footerMinimum | Minimum | Minimum | — |
footerMaximum | Maximum | Maximum | — |
footerRange | Range | Spanne | — |
footerCount | Count | Anzahl | — |
footerDistinct | Distinct values | Verschiedene Werte | — |
footerAggregate | Aggregate | Aggregat | An aggregate the application computes itself. |
grouping | Grouping | Gruppierung | The grouping section of the column menu, and the menu entry per column. |
groupBy(label) | `Group by ${label}` | `Nach ${label} gruppieren` | — |
groupedBy | Grouped by | Gruppiert nach | The grouping's tag in the table toolbar: "Grouped by" Region › Customer. |
removeGrouping | Remove grouping | Gruppierung aufheben | — |
removeGroupingLevel(label) | `Stop grouping by ${label}` | `Nicht mehr nach ${label} gruppieren` | — |
foldAll | Fold all | Alle zuklappen | — |
unfoldAll | Unfold all | Alle aufklappen | — |
groupNoValue | No value | Kein Wert | The group of rows without a value. |
groupContinued | continued | Fortsetzung | Beside a group repeated at the top of a page that begins inside it. |
foldGroup(name, count) | `Fold ${name}, ${count}` | `${name} zuklappen, ${count}` | The fold of a group, with its value and its count. |
unfoldGroup(name, count) | `Unfold ${name}, ${count}` | `${name} aufklappen, ${count}` | — |
foldBranch(row) | `Fold rows under ${row}` | `Zeilen unter ${row} zuklappen` | The fold of a branch in a table with tree rows, named after its row - not expandRowNamed, which names the row detail's expander on the same row. |
unfoldBranch(row) | `Unfold rows under ${row}` | `Zeilen unter ${row} aufklappen` | — |
levelColumn | Level | Ebene | The first column of a tree's export. |
pathRow | on the path to a match | auf dem Weg zu einem Treffer | A row shown only because a descendant matches the search or a filter. |
footerTopLevel | Top level only | Nur oberste Ebene | The footer of a tree: it sums the top level, since a parent holds its children. |
selectGroup(name) | `Select ${name}` | `${name} auswählen` | The box that selects every row of a group. |
calendarWeek(week, year) | `Week ${week}, ${year}` | `KW ${week}/${year}` | A group of the week key: "Week 42, 2026". |
entries(count, formatted) | (count === 1 ? "1 entry" : `${formatted} entries`) | (count === 1 ? "1 Eintrag" : `${formatted} Einträge`) | "128 entries" in the pagination bar; the plural belongs to the language. |
selectedCount(count, formatted) | `${formatted} selected` | `${formatted} ausgewählt` | "3 selected" in the pagination bar and the table toolbar. |
copiedRows(count, formatted) | (count === 1 ? "1 row copied" : `${formatted} rows copied`) | (count === 1 ? "1 Zeile kopiert" : `${formatted} Zeilen kopiert`) | Said to a screen reader after Ctrl+C copied rows: "3 rows copied". |
copiedCell | Cell copied | Zelle kopiert | Said after Ctrl+C copied the active cell of a grid. |
copyFailed | Could not copy | Kopieren nicht möglich | Said when the clipboard refused or is not there. |
noEntries | No entries | Keine Einträge | Empty because there are no rows. |
nothingMatchesFilters | Nothing matches the search and filters | Nichts passt zu Suche und Filtern | Empty because search and filters leave nothing - something else. |
treeSearchPlaceholder | Search the tree … | Im Baum suchen … | — |
treeNoMatches | Nothing matches the search. | Nichts passt zur Suche. | — |
conditions | Active filters | Aktive Filter | Group name of the conditions in the table toolbar. |
removeConditionNamed(label, value) | `Remove ${label}: ${value}` | `${label}: ${value} entfernen` | The button that removes a condition: "Remove Region: EU, US". |
editConditionNamed(label, value) | `Edit ${label}: ${value}` | `${label}: ${value} bearbeiten` | The condition itself, which opens its filter: "Edit Region: EU, US". |
moreValues(count, formatted) | `+${formatted}` | `+${formatted}` | The remainder of a long list in a condition: "+1". |
filterFrom | From | Von | The two fields of the range filter. |
filterTo | To | Bis | — |
rangeFromTo(from, to) | `${from}–${to}` | `${from}–${to}` | The condition of a range filter: "100–500", "from 100", "to 500". |
rangeFrom(from) | `from ${from}` | `ab ${from}` | — |
rangeTo(to) | `to ${to}` | `bis ${to}` | — |
rangeInvalid | “From” lies after “To”. | „Von“ liegt hinter „Bis“. | When "From" lies behind "To". The condition stays the last valid one. |
resetAll | Reset | Zurücksetzen | Clears search and conditions - in the table toolbar and in the empty body. |
filteredOfTotal(matches, total) | `${matches} of ${total}` | `${matches} von ${total}` | "43 of 1.204" - the numbers come from the formats. |
| Key | English | German | Description |
|---|---|---|---|
verdictOk | OK | In Ordnung | The four outcomes of an assessment, as a word beside the value. Colour alone carries no meaning - the word stands here for that reason. |
verdictWarning | Warning limit exceeded | Warngrenze überschritten | — |
verdictAlarm | Alarm limit exceeded | Alarmgrenze überschritten | — |
verdictUnknown | No value | Kein Wert | — |
statAbsentValue | — | — | What stands in the value field when there is no value. No dash, no zero: either could be a value. |
target | Target | Ziel | — |
deviationAbove(betrag) | `${betrag} above target` | `${amount} über Ziel` | "3,2 above target" or "1,5 below target" - the amount comes from the formats, which is where the comma is from. |
deviationBelow(betrag) | `${betrag} below target` | `${amount} unter Ziel` | — |
deviationOnTarget | on target | auf Ziel | — |
freshnessFresh | Fresh | Aktuell | The three freshness states. They are a DIFFERENT axis from the verdict: a stale value keeps its verdict (ADR-0010). |
freshnessStale | Stale | Veraltet | — |
freshnessDisconnected | No connection | Keine Verbindung | — |
asOfAgo(duration) | `As of: ${duration}` | `Stand: ${duration}` | "As of: 3 minutes ago", where the duration comes from the formats. |
| Key | English | German | Description |
|---|---|---|---|
close | Close | Schließen | — |
closeToast | Close message | Meldung schließen | — |
toastDeckCount(count) | `${count} messages, show all` | `${count} Meldungen, alle zeigen` | The count on the front toast of a closed deck; pressing it shows them all. |
toastRegion | Messages (Alt+T) | Meldungen (Alt+T) | The name of the toasts' region, which Alt+T moves the focus into. |
confirm | Confirm | Bestätigen | — |
cancel | Cancel | Abbrechen | — |
loading | Loading | Wird geladen | — |
fillLevel | Fill level | Füllstand | Generic name of a fill-level bar, where the caller names none. |
progress | Progress | Fortschritt | Generic name of a progress bar, where the caller names none. |
breadcrumb | Breadcrumb | Pfad | The accessible name of a breadcrumb's navigation landmark. |
breadcrumbFolded | Show the levels in between | Ebenen dazwischen zeigen | The key that opens a breadcrumb's folded middle levels as a menu. |
splitter | Resize the panes | Größe der Bereiche ändern | The separator between a splitter's panes, where the caller names none - a caller who can should name the first pane instead (APG). |
stepDone | Done | Erledigt | A stepper's step that is behind it, said beside its label to a screen reader; the current step is aria-current and needs no word. |
stepUpcoming | Upcoming | Ausstehend | A step still ahead. |
stepFailed | Failed | Fehlgeschlagen | A step that failed - behind the current one or the current one itself. |
chooseFile | Choose a file | Datei auswählen | The key of a file input that takes one file - and its name where no field names it. |
chooseFiles | Choose files | Dateien auswählen | The same key where it takes several. |
dropFile | or drop it here | oder hier ablegen | The words beside the key that say the zone takes a drop. |
dropFiles | or drop them here | oder hier ablegen | — |
removeFile(name) | `Remove ${name}` | `${name} entfernen` | The cross beside a chosen file. |
fileNotAccepted(name) | `${name} is not an accepted type` | `${name} ist kein zugelassener Dateityp` | A dropped file the input's accept does not take. |
show | Show | Einblenden | — |
hide | Hide | Ausblenden | — |
moreActions | More actions | Weitere Aktionen | — |
remove | Remove | Entfernen | The cross on a tag without text content. |
removeTag(beschriftung) | `Remove ${beschriftung}` | `${label} entfernen` | The cross on a tag with text content. |
| Key | English | German | Description |
|---|---|---|---|
scheduleOverlap | Overlap | Überschneidung | The two findings, named on the ghost of a drag. |
scheduleViolatedDependency | Violated dependency | Abhängigkeit verletzt | — |
scheduleGhostTimes(from, to) | `${from}–${to}` | `${from}–${to}` | The new times on the ghost: "08:15–10:00" - the times come from the formats. |
scheduleLeadIn | Lead-in | Vorlauf | The parts of a subtask and a dependency, named in the tooltip. |
scheduleLeadOut | Lead-out | Nachlauf | — |
scheduleDependency | Dependency | Abhängigkeit | — |
scheduleRoute(from, to) | `${from} → ${to}` | `${from} → ${to}` | "A-2041-1 → A-2041-2": the two subtasks a dependency joins. |
scheduleOverlapWith(other) | `Overlap with ${other}` | `Überschneidung mit ${other}` | "Overlap with A-2043-2" - the other subtask on the lane. |
scheduleViolatedBy(amount) | `Violated dependency, ${amount} short` | `Abhängigkeit verletzt, ${amount} zu knapp` | "Violated dependency, 15 min short" - the amount from minutesShort. |
scheduleLaneRefused | Not this lane | Nicht hierher | On the ghost of a drag over a lane the subtask may not go to. |
scheduleBlockedTime | Blocked time | Sperrzeit | On the ghost of a drag held back from a lane's blocked time. |
scheduleInBlockedTime(label) | (label === undefined ? "In blocked time" : `In blocked time (${label})`) | (label === undefined ? "In der Sperrzeit" : `In der Sperrzeit (${label})`) | "In blocked time (Leave)" - a subtask covering its lane's blocked time, with the blocked time's label where it has one. |
scheduleMilestone(name) | `Milestone: ${name}` | `Meilenstein: ${name}` | "Milestone: Release" - a milestone named by its label (or id), so that the tooltip and the spoken readout say what kind of thing it is. |
scheduleFoldGroup | Fold group | Gruppe einklappen | The chevron of a lane group's header, which folds it into one row and unfolds it again. The group's own label stands beside the button, so the name is what the ACTION is, not which group it acts on. |
scheduleUnfoldGroup | Unfold group | Gruppe ausklappen | — |
scheduleLaneCount(count) | (count === 1 ? "1 lane" : `${count} lanes`) | (count === 1 ? "1 Bahn" : `${count} Bahnen`) | How many lanes a group holds, beside its name in the header. |
scheduleRoleDescription | schedule | Belegungsplan | What a screen reader calls the plot that takes the keys (aria-roledescription, schedule-a11y S1). |
scheduleSummary(summary) | `${lanes === 1 ? "1 lane" : `${lanes} lanes`}, ${subtasks === 1 ? "1 subtask" : `${subtasks} subtasks`} in view from ${from} to ${to}. ` + `${overlaps === 1 ? "1 overlap" : `${overlaps} overlaps`}, ${violated === 1 ? "1 violated dependency" : `${violated} violated dependencies`}` + (blocked === 0 ? "." : `, ${blocked === 1 ? "1 subtask" : `${blocked} subtasks`} in blocked time.`) + (milestones === 0 ? "" : ` ${milestones === 1 ? "1 milestone" : `${milestones} milestones`}.`) | `${lanes === 1 ? "1 Bahn" : `${lanes} Bahnen`}, ${subtasks === 1 ? "1 Teilaufgabe" : `${subtasks} Teilaufgaben`} im Blick von ${from} bis ${to}. ` + `${overlaps === 1 ? "1 Überschneidung" : `${overlaps} Überschneidungen`}, ${violated === 1 ? "1 verletzte Abhängigkeit" : `${violated} verletzte Abhängigkeiten`}` + (blocked === 0 ? "." : `, ${blocked === 1 ? "1 Teilaufgabe in einer Sperrzeit" : `${blocked} Teilaufgaben in Sperrzeiten`}.`) + (milestones === 0 ? "" : ` ${milestones === 1 ? "1 Meilenstein" : `${milestones} Meilensteine`}.`) | The plot's description (S6): the lanes, the subtasks in view, the visible span with both ends formatted, and the findings of the plan by kind. |
scheduleKeyHelp | Left and right arrows move along the lane, up and down change the lane, Home and End go to its first and last, Page Up and Page Down jump a tenth of the view. Right bracket or T follows a dependency out, left bracket or Shift and T goes back. Space or Enter selects. Alt with left or right proposes a move, Alt and Shift a new end. Escape clears. | Pfeil links und rechts gehen die Bahn entlang, Pfeil hoch und runter wechseln die Bahn, Pos1 und Ende springen zur ersten und letzten Teilaufgabe, Bild auf und Bild ab springen ein Zehntel der Ansicht. Schließende eckige Klammer oder T folgt einer Abhängigkeit hinaus, öffnende eckige Klammer oder Umschalt und T geht zurück. Leertaste oder Eingabe wählt aus. Alt mit Pfeil links oder rechts schlägt eine Verschiebung vor, Alt und Umschalt ein neues Ende. Escape lässt die aktive Teilaufgabe los. | The keys that walk the plot, select and edit - read after the summary. |
| Key | English | German | Description |
|---|---|---|---|
dashboardEdit | Edit | Bearbeiten | The editing bar's buttons and the label that says the mode is on. |
dashboardEditing | Editing the dashboard | Dashboard wird bearbeitet | — |
dashboardCancel | Cancel | Abbrechen | — |
dashboardDone | Done | Fertig | — |
dashboardUndo | Undo | Rückgängig | — |
dashboardRedo | Redo | Wiederholen | — |
dashboardReset | Reset | Zurücksetzen | — |
dashboardMenu(title) | `Actions for ${title}` | `Aktionen für ${title}` | The name of a widget's menu button: the widget's title is the thing. |
dashboardPlace(place, of) | `Place ${place} of ${of}` | `Platz ${place} von ${of}` | At the top of the menu, and in the name of a head the arrow keys move. |
dashboardHead(title, place, of) | `${title}, place ${place} of ${of}` | `${title}, Platz ${place} von ${of}` | — |
dashboardMoveStart | Move to start | An den Anfang | — |
dashboardMoveEarlier | Move earlier | Weiter nach vorn | — |
dashboardMoveLater | Move later | Weiter nach hinten | — |
dashboardMoveEnd | Move to end | Ans Ende | — |
dashboardRemove | Remove | Entfernen | — |
dashboardSizes.small | Small | Klein | The closed set of size names, worded once for every widget type. |
dashboardSizes.medium | Medium | Mittel | The closed set of size names, worded once for every widget type. |
dashboardSizes.wide | Wide | Breit | The closed set of size names, worded once for every widget type. |
dashboardSizes.tall | Tall | Hoch | The closed set of size names, worded once for every widget type. |
dashboardSizes.large | Large | Groß | The closed set of size names, worded once for every widget type. |
dashboardSizes.full | Full width | Volle Breite | The closed set of size names, worded once for every widget type. |
dashboardSizeEntry(size, share, current) | `${current ? "✓ " : ""}${size}${share ? `, ${share} wide` : ""}` | `${current ? "✓ " : ""}${size}${share ? `, ${share} breit` : ""}` | A size's entry in a widget's menu: its name and its share of the width (share is "¼" or "5/12", empty for the whole width); current marks the size the widget stands at. |
dashboardHeadingLabel | Heading | Überschrift | The built-in heading type: its name, its sentence in the catalogue, the text a new heading starts with and the label of its text field. |
dashboardHeadingSentence | A title across the full width. | Ein Titel über die volle Breite. | — |
dashboardHeadingText | New section | Neuer Abschnitt | — |
dashboardHeadingField | Text | Text | — |
dashboardLeft | Editing ended | Bearbeiten beendet | Said when "Done" leaves the mode and nothing was changed. |
dashboardMoved(title, from, to, of) | `${title}: moved from place ${from} to place ${to} of ${of}` | `${title}: von Platz ${from} auf Platz ${to} von ${of} verschoben` | What is spoken after a change. |
dashboardDragCancelled(title) | `${title}: move cancelled` | `${title}: Verschieben abgebrochen` | — |
dashboardResized(title, size) | `${title}: size ${size}` | `${title}: Größe ${size}` | — |
dashboardRemoved(title) | `${title} removed. Undo brings it back.` | `${title} entfernt. „Rückgängig“ holt es zurück.` | — |
dashboardKept | Changes kept | Änderungen übernommen | — |
dashboardCancelled | Changes discarded | Änderungen verworfen | — |
dashboardAddWidget | Add widget | Widget hinzufügen | The catalogue and the options. |
dashboardCatalogue | Add a widget | Widget hinzufügen | — |
dashboardCatalogueSentence | Each widget is added at the end. | Jedes Widget wird am Ende eingefügt. | — |
dashboardAdd | Add | Hinzufügen | — |
dashboardAddType(label) | `Add ${label}` | `${label} hinzufügen` | — |
dashboardFootprint(columns, rows) | `${columns} of 12 columns, ${rows} rows` | `${columns} von 12 Spalten, ${rows} Zeilen` | — |
dashboardAdded(title, place, of) | `${title} added, place ${place} of ${of}` | `${title} hinzugefügt, Platz ${place} von ${of}` | — |
dashboardOptions | Options | Optionen | — |
dashboardOptionsChanged(title) | `${title}: options changed` | `${title}: Optionen geändert` | — |
dashboardEmpty | This dashboard is empty. | Dieses Dashboard ist leer. | — |
dashboardEmptyEditing | This dashboard is empty. Choose Add widget to begin. | Dieses Dashboard ist leer. Wählen Sie „Widget hinzufügen“, um zu beginnen. | — |
dashboardFailed | This widget cannot show anything. | Dieses Widget kann nichts anzeigen. | — |
dashboardUndone | Undone | Rückgängig gemacht | — |
dashboardRedone | Redone | Wiederholt | — |
dashboardResetDone | Reset to the default | Auf die Vorgabe zurückgesetzt | — |
| Key | English | German | Description |
|---|---|---|---|
calculationSumSymbol | + | + | The four operators as symbols in a formula line. |
calculationDifferenceSymbol | − | − | — |
calculationProductSymbol | × | × | — |
calculationQuotientSymbol | ÷ | ÷ | — |
calculationSumWord | plus | plus | The same four as words, in the accessible sentence of a line. |
calculationDifferenceWord | minus | minus | — |
calculationProductWord | times | mal | — |
calculationQuotientWord | divided by | geteilt durch | — |
calculationEquals | equals | gleich | Between the parts of the sentence: "Availability equals ...". |
calculationApproximately | approximately | ungefähr | Before a result marked "≈" in the sentence. |
calculationApproximateNote | The rounded figures do not give this exactly; it is computed from the unrounded ones. | Die gerundeten Zahlen ergeben das nicht genau; gerechnet ist mit den ungerundeten. | Beside a result marked "≈": why the rounded operands do not give it. |
calculationPercent | percent | Prozent | How a percentage is read out: "91.6 percent". |
calculationMissing(label) | `${label} is missing` | `${label} fehlt` | Why a quantity has no number - the label is the given at the root of it, or the divisor that is zero. |
calculationDivisionByZero(label) | `Division by zero: ${label} is 0` | `Division durch null: ${label} ist 0` | — |
calculationAboveTarget(target) | `above target ${target}` | `über Ziel ${target}` | The target beside the result, with the target's number and unit. |
calculationBelowTarget(target) | `below target ${target}` | `unter Ziel ${target}` | — |
calculationOnTarget(target) | `on target ${target}` | `auf Ziel ${target}` | — |
calculationWorstInside(verdict) | `Inside: ${verdict}` | `Darin: ${verdict}` | The quiet marker on a folded quantity whose derivation holds a worse verdict than its own; the verdict word comes from verdict*. |
calculationSource(source) | `Source: ${source}` | `Quelle: ${source}` | Where a given number came from. |
calculationShowDerivation(label) | `Show how ${label} is derived` | `Herleitung von ${label} zeigen` | The disclosure button of a derivation, named after the quantity. |
calculationHideDerivation(label) | `Hide how ${label} is derived` | `Herleitung von ${label} verbergen` | — |
calculationOperandCount(count) | `${count} operands` | `${count} Operanden` | On a folded line whose operator has more operands than are written out beneath it (ADR-0028): how many there are. |
calculationNoOperands | no entries | keine Einträge | On the line of a sum with no operands, where its formula would stand (ADR-0049). |
Every entry of ChartsWording from @umriss-ui/charts, which a chart takes through its wording prop: the English of DEFAULT_CHARTS_WORDING beside the German of GERMAN_CHARTS_WORDING, imported from @umriss-ui/charts/wording/de.
| Key | English | German | Description |
|---|---|---|---|
locale | en-GB | de-DE | The BCP 47 tag every number and every date or time label of the chart is formatted in (en-GB, de-DE). The one input for the locale: the browser's language is not read. The clock stays 24-hour in both. |
roleDescription | chart | Diagramm | What a screen reader calls the plot area that takes the keys (aria-roledescription). |
empty | No data | Keine Daten | Shown in the plot area when no visible series has a point to show. |
seriesList(names) | `${names.length === 1 ? "1 series" : `${names.length} series`}: ${names.join(", ")}.` | `${names.length === 1 ? "1 Serie" : `${names.length} Serien`}: ${names.join(", ")}.` | The summary's visible series, by name. |
visibleRange(from, to) | `From ${from} to ${to}.` | `Von ${from} bis ${to}.` | The summary's visible stretch of the x axis, both ends formatted. |
seriesExtent(name, min, max) | `${name} from ${min} to ${max}.` | `${name} von ${min} bis ${max}.` | The summary's lowest and highest value of one series in that stretch. |
limitList(limits) | `Limits: ${limits.map((l) => `${l.name} ${l.value}`).join(", ")}.` | `Grenzen: ${limits.map((l) => `${l.name} ${l.value}`).join(", ")}.` | The summary's labelled limits, each with its value in its axis' format (a band's two edges as one value). |
readout(x, rows) | [`${x}.`, ...rows.map((r) => `${r.name} ${r.value}${r.x === "" ? "" : ` at ${r.x}`}.`)].join(" ") | [`${x}.`, ...rows.map((r) => `${r.name} ${r.value}${r.x === "" ? "" : ` bei ${r.x}`}.`)].join(" ") | What is read after a key: the position, then each series with its value (and its own x where it stands on another x axis), the emphasised one first. |
stackTotal | Total | Summe | The last row of a stack in the tooltip and the readout: the sum of its members at the point. |
percent(value) | `${value}%` | `${value} %` | A share in a normalised stack, its number already formatted. |
walkHelp | Left and right arrows move through the values, up and down change the series, Home and End go to the first and the last, Escape clears. | Pfeil links und rechts gehen durch die Werte, Pfeil hoch und runter wechseln die Serie, Pos1 und Ende springen zum ersten und letzten Wert, Escape hebt die Markierung auf. | The keys that walk the chart. |
selectHelp | Enter chooses the point. | Enter wählt den Punkt. | The key that reports the Active point - only where onSelect is given. |
zoomHelp | Plus and minus zoom, Shift with left or right pans, 0 goes back to the axis' own span. | Plus und Minus zoomen, Umschalt mit Pfeil links oder rechts verschiebt, 0 kehrt zum eigenen Bereich der Achse zurück. | The keys that zoom and pan it - only where the chart can be zoomed. |
legendHelp | In the legend, Enter hides or shows a series, Shift+Enter shows only it. | In der Legende blendet Enter eine Serie aus oder ein, Umschalt+Enter zeigt nur sie. | The keys of the legend's entries - only where it has one to press. |
allShown | Nothing would be left to see, so every series is shown. | Sonst wäre nichts mehr zu sehen, darum werden alle Serien gezeigt. | Read out where hiding would leave nothing to see, and every series is shown instead. |
showAll | Show all | Alles zeigen | The control over a zoomed plot that brings every zoomed axis back to its own domain (component-view 04). |
showData | Show data | Daten zeigen | The data table's disclosure key, closed and open. |
hideData | Hide data | Daten verbergen | — |
positionColumn | Position | Position | The heading of the table's x column where its axis has no label, and of a matrix' row column where its y axis has none. |
rowColumn | Row | Zeile | — |
tableCaption(from, to) | `Values from ${from} to ${to}.` | `Werte von ${from} bis ${to}.` | The table's caption: the visible stretch it lists, both ends formatted. |
upperWhisker | Upper whisker | Oberer Whisker | A box's numbers, top to bottom as drawn: the tooltip's rows, the readout's parts and the data table's columns (box-plot B9). |
upperQuartile | Upper quartile | Oberes Quartil | — |
median | Median | Median | — |
lowerQuartile | Lower quartile | Unteres Quartil | — |
lowerWhisker | Lower whisker | Unterer Whisker | — |
outliers | Outliers | Ausreißer | A box's outliers: the row's name, and the row's value - their count and the first few values, the rest counted (box-plot B9). |
mean | Mean | Mittelwert | A box's optional readings: its mean, its notch's two bounds as one row, and how many values stand behind it. |
notch | Notch | Notch | — |
count | n | n | — |
outlierList(values, more) | `${values.length + more}: ${values.join(", ")}${more > 0 ? ` and ${more} more` : ""}` | `${values.length + more}: ${values.join(", ")}${more > 0 ? ` und ${more} weitere` : ""}` | — |
downsampled(readings) | `Downsampled from ${readings.toLocaleString("en-GB")} readings: the first, lowest, highest and last value of each stretch.` | `Ausgedünnt aus ${readings.toLocaleString("de-DE")} Messwerten: erster, kleinster, größter und letzter Wert je Abschnitt.` | Added to the caption where the table shows the downsampled course: how many readings its rows stand for. |
Every entry of Formats: DEFAULT_FORMATS beside GERMAN_FORMATS. Each set as it writes Tuesday, 17 March 2026 at 09:05:03 in Berlin (the time without seconds), the number 1204.5 to one decimal, the count 1204, the share 0.74, three minutes ago, and Zebra, Émile and Apple in order.
| Key | English | German | Description |
|---|---|---|---|
date(d) | 17/03/2026 | 17.03.2026 | Date as displayed: 17/03/2026 |
dateShort(d) | 17/03 | 17.03. | Short form without the year, in the range footer: 17/03 |
month(d) | March 2026 | März 2026 | The calendar's month header: March 2026 |
dateLong(d) | Tuesday, 17 March 2026 | Dienstag, 17. März 2026 | Accessible name of a calendar cell: Tuesday, 17 March 2026 |
time(d, withSeconds) | 09:05 | 09:05 | Time of day, optionally with seconds: 09:05 or 09:05:03 |
dateTime(d, withSeconds) | 17/03/2026, 09:05 | 17.03.2026, 09:05 | Date and time together: 17/03/2026, 09:05 |
offset(d) | GMT+1 | GMT+1 | Short form of the UTC offset: GMT+2 |
number(n, decimals) | 1,204.5 | 1.204,5 | A number in the set's notation. Without a digit count the value stands to the tenth decimal place; with one it is padded and rounded to exactly that many places. |
count(n) | 1,204 | 1.204 | A count. Kept apart from number because it makes a different promise: a count is whole, and Intl's own rounding (at most three decimal places) is right for it and wrong for a measurement. |
percent(share) | 74% | 74 % | A share from 0 to 1 as whole per cent: 74 % |
compareText(a, b) | Apple, Émile, Zebra | Apple, Émile, Zebra | The ordering of two texts by the set's collation. |
relative(ms) | 3 minutes ago | vor 3 Minuten | An elapsed duration as a phrase: "3 minutes ago". The amount comes in milliseconds, counted back from now. |
The keys of Button, NumberInput, Combobox and DatePicker apply here.
LanguageOptions| Name | Type | Default | Description |
|---|---|---|---|
formats | Partial<Formats> | — | How numbers, dates and durations are written. Overridden entry by entry;
what is left out keeps writing as DEFAULT_FORMATS does - in English
notation, whatever the wording says (ADR-0024).Shown in: German, English and German side by side, Write numbers in your own notation and 2 more |
wording | Partial<Omit<Wording, "presets">> & { presets?: Partial<Wording["presets"]> } | — | The presets are a register of their own and are likewise overridden entry
by entry. Shown in: German, English and German side by side, Replace single entries and 2 more |
FormatsEverything the library knows about formatting.
| Name | Type | Default | Description |
|---|---|---|---|
daterequired | (d: Date) => string | — | Date as displayed: 17/03/2026 Shown in: A span of days (DateRangePicker) |
dateShortrequired | (d: Date) => string | — | Short form without the year, in the range footer: 17/03 |
monthrequired | (d: Date) => string | — | The calendar's month header: March 2026 |
dateLongrequired | (d: Date) => string | — | Accessible name of a calendar cell: Tuesday, 17 March 2026 |
timerequired | (d: Date, withSeconds: boolean) => string | — | Time of day, optionally with seconds: 09:05 or 09:05:03 |
dateTimerequired | (d: Date, withSeconds: boolean) => string | — | Date and time together: 17/03/2026, 09:05 Shown in: Use the language in your own components, Pick a day (DatePicker), Set an instant (DateTimePicker) and 1 more |
offsetrequired | (d: Date) => string | — | Short form of the UTC offset: GMT+2 Shown in: Set an instant (DateTimePicker) |
numberrequired | (n: number, decimals?: number) => string | — | A number in the set's notation. Without a digit count the value stands to
the tenth decimal place; with one it is padded and rounded to exactly that
many places. Shown in: Write numbers in your own notation, Price an invoice line (NumberInput), Split a budget (Slider) |
countrequired | (n: number) => string | — | A count. Kept apart from number because it makes a different promise: a
count is whole, and Intl's own rounding (at most three decimal places) is
right for it and wrong for a measurement.Shown in: Write numbers in your own notation, Use the language in your own components |
percentrequired | (share: number) => string | — | A share from 0 to 1 as whole per cent: 74 % |
compareTextrequired | (a: string, b: string) => number | — | The ordering of two texts by the set's collation. |
relativerequired | (ms: number) => string | — | An elapsed duration as a phrase: "3 minutes ago". The amount comes in milliseconds, counted back from now. |
WordingEverything the library puts out as text.
| Name | Type | Default | Description |
|---|---|---|---|
clearInputrequired | string | — | The cross in the text field. |
clearSelectionrequired | string | — | The cross in the select and in the combobox. |
decreaseValuerequired | string | — | Stepper buttons of the number field. |
increaseValuerequired | string | — | |
comboboxPlaceholderrequired | string | — | |
noMatchesrequired | string | — | Empty state of both lists. |
multiSelectPlaceholderrequired | string | — | |
multiSelectSearchPlaceholderrequired | string | — | |
searchOptionsrequired | string | — | |
optionsrequired | string | — | Group name of the option list. |
optionScoperequired | string | — | Group name of the scope switch. |
optionScopeAllrequired | string | — | |
optionScopeSelectedrequired | (count: number) => string | — | The second scope, with the count in the text. |
selectAllrequired | string | — | |
selectNonerequired | string | — | |
invertSelectionrequired | string | — | |
nothingSelectedrequired | string | — | |
removeSelectedValuerequired | (beschriftung: string) => string | — | The cross on a selected value in the trigger. |
manageMoreSelectedrequired | (count: number) => string | — | The "+N" counter in the trigger. |
multiSelectSummaryrequired | (gewaehlt: number, total: number) => string | — | The summary in the panel: "3 / 12". The sentence structure belongs to the language, even where it is only a slash here. |
optionCountrequired | (count: number) => string | — | How many options stand, when a list opens or its filter changes; never zero - an empty list says its own empty text. Named, like the three below, after the moment it is spoken in: an announcement labels no element. |
optionActiverequired | ( label: string, state: { selected?: boolean; disabled?: boolean; group?: string }, ) => string | — | The option the keys moved onto, with what VoiceOver leaves out. |
optionAddedrequired | (label: string) => string | — | A value the multi-select took or gave away where no checkbox had the focus to say it - Enter in the search, a chip, Backspace. |
optionRemovedrequired | (label: string) => string | — | |
palettePlaceholderrequired | string | — | What stands in the empty field. |
paletteFieldrequired | string | — | Accessible name of the field. Deliberately kept apart from the placeholder - whoever labels the field differently does not thereby rename the window. |
palettePanelrequired | string | — | Accessible name of the window. |
paletteListrequired | string | — | Accessible name of the list of finds. |
paletteNoFindsrequired | string | — | The one line when the query finds nothing. |
paletteFindCountrequired | (count: number) => string | — | What the screen reader hears when the number of finds changes. |
paletteMoreFindsrequired | (count: number) => string | — | The last line when more finds exist than maxFinds lets stand. |
paletteHintMoverequired | string | — | The three key hints in the footer, each the text beside the key. |
paletteHintChooserequired | string | — | |
paletteHintCloserequired | string | — | |
paletteKeyEscrequired | string | — | The legend on the Escape key. The arrows and the return key are glyphs and therefore do not stand here; "Esc" is a word and is called something else elsewhere. |
datePlaceholderrequired | string | — | |
datePanelrequired | string | — | Accessible name of the panel. Deliberately kept apart from the placeholder: whoever labels the field differently does not thereby rename the dialog. |
dateClearrequired | string | — | |
dateTimePlaceholderrequired | string | — | |
dateTimePanelrequired | string | — | |
dateTimeClearrequired | string | — | |
dateRangePlaceholderrequired | string | — | |
dateRangePanelrequired | string | — | |
dateRangeClearrequired | string | — | |
dateTimeRangePanelrequired | string | — | Accessible name of the panel in the range with time of day. |
dateTimeRangeClearrequired | string | — | The clearing x of the range with time - kept apart from the range without, so that an application can call the two differently. |
previousMonthrequired | string | — | |
nextMonthrequired | string | — | |
quickSelectrequired | string | — | Group name of the preset column. |
todayrequired | string | — | Shown in: Use the language in your own components |
nowrequired | string | — | |
clearrequired | string | — | |
applyrequired | string | — | |
allDayrequired | string | — | |
timeOfDayrequired | string | — | |
hourrequired | string | — | |
minuterequired | string | — | |
secondrequired | string | — | |
sideFromrequired | string | — | Header of the two time columns in the range with time of day. |
sideTorequired | string | — | |
startHourrequired | string | — | Accessible name of the time fields, per side. |
startMinuterequired | string | — | |
startSecondrequired | string | — | |
endHourrequired | string | — | |
endMinuterequired | string | — | |
endSecondrequired | string | — | |
timeFieldIncreaserequired | (feld: string) => string | — | Stepper buttons of a time field; the label comes from above. |
timeFieldDecreaserequired | (feld: string) => string | — | |
chooseStartDaterequired | string | — | Footer of the range panels. |
chooseEndDaterequired | string | — | |
daysrequired | (count: number) => string | — | "3 days" or "1 day" - the plural belongs to the language. |
daysSelectedrequired | (count: number) => string | — | "3 days selected" |
rangePreviewrequired | (from: string, to: string, count: number) => string | — | "17.03. – 19.03. · 3 days" while dragging; the dates come from the formats. |
daysAllDayrequired | (count: number) => string | — | "3 days (all day)" |
durationrequired | (teile: readonly string[]) => string | — | "Duration: 1 day 2 hrs 30 min" |
hoursShortrequired | (count: number) => string | — | |
minutesShortrequired | (count: number) => string | — | |
timeMissingHintrequired | (timeOfDay: string) => string | — | Daylight-saving change: the hour that does not exist. |
timeMissingHintSiderequired | (side: string, timeOfDay: string) => string | — | The same, with the side put in front ("From"/"To"). |
timeAmbiguousHintrequired | string | — | Daylight-saving change: the hour that occurs twice. |
timeAmbiguousHintSiderequired | (side: string) => string | — | |
timeEarlierrequired | (versatz: string) => string | — | |
timeLaterrequired | (versatz: string) => string | — | |
weekdaysrequired | readonly string[] | — | The calendar's weekday headers, starting at Monday. |
presetsrequired | { today: string; yesterday: string; last7Days: string; last30Days: string; thisMonth: string; previousMonth: string; thisQuarter: string; thisYear: string; } | — | The quick-select ranges, in the order of PRESET_LABELS. |
paginationrequired | string | — | |
rowsrequired | string | — | |
rowsPerPagerequired | string | — | |
pageOfPagesrequired | (page: number, total: number, formatted?: { page: string; total: string }) => string | — | "Page 2 of 7". formatted carries both numbers in the provider's
formats, where the caller has them - a table over a server has "Page 1 of
100,000". |
previousPagerequired | string | — | |
nextPagerequired | string | — | |
filterResetrequired | string | — | The two buttons in the column filter's footer. |
filterDonerequired | string | — | |
columnsrequired | string | — | The column menu's button. |
arrangeColumnsrequired | string | — | Accessible name of the list in the column menu. |
columnForwardrequired | (column: string) => string | — | The two buttons that move a column in the column menu. |
columnBackwardrequired | (column: string) => string | — | |
pinColumnToStartrequired | (column: string) => string | — | The column menu's pin keys: to a side, and back when it is pinned there. |
pinColumnToEndrequired | (column: string) => string | — | |
unpinColumnrequired | (column: string) => string | — | |
columnForwardHintrequired | string | — | The tooltips over those four keys: short, without the column, which stands in the same line. The keys' names above keep it for a screen reader. |
columnBackwardHintrequired | string | — | |
pinToStartHintrequired | string | — | |
pinToEndHintrequired | string | — | |
unpinHintrequired | string | — | |
exportLabelrequired | string | — | The export button. |
exportPageLabelrequired | string | — | The export button of a table in server mode, which holds and writes one page. |
exportFileNamerequired | string | — | The export's file name, where the application names none. |
tableSearchPlaceholderrequired | string | — | Placeholder and accessible name of the search field. |
tableSearchLabelrequired | string | — | |
filterColumnrequired | (column: string) => string | — | The filter button of a column: "Filter Region". |
filterHintrequired | string | — | The tooltip over that button. |
selectRowrequired | (row: string) => string | — | The selection of one row, named after its row header. |
selectAllRowsrequired | string | — | The selection of every row in the filtered set. |
selectAllOnPagerequired | string | — | The same checkbox in server mode, where the table holds one page of a server's. |
expandRowNamedrequired | (row: string) => string | — | The expand button, named after the row header. |
collapseRowNamedrequired | (row: string) => string | — | |
rowActionsrequired | string | — | Header of the actions column - for the screen reader, not visible. |
rowActionrequired | (aktion: string, row: string) => string | — | One action on a row: "Open: A-2041". |
rowActionsMenurequired | (row: string) => string | — | The menu holding a row's actions. |
editCellrequired | (column: string, row: string) => string | — | The editor of a cell in a table's grid mode, named after its column and its row: "Edit Budget: Marketing". |
newRowrequired | string | — | The button above a grid that opens an empty row to fill in, and the name of that row while it has none (ADR-0036). |
saveRowrequired | string | — | A row draft's buttons, named with the row through rowAction. |
discardRowrequired | string | — | |
deleteRowrequired | string | — | A row's delete button, and its question once pressed: Delete? Delete / Keep. |
deleteRowAskrequired | string | — | |
keepRowrequired | string | — | |
saveOrDiscardFirstrequired | string | — | Said where someone tries to leave a row draft unsaved. |
cellAbsentValuerequired | string | — | What the screen reader hears for an absent value. Visibly a muted dash stands there. |
booleanYesrequired | string | — | A boolean without a presentation of its own. |
booleanNorequired | string | — | |
footerSumrequired | string | — | The kind of a footer number, read out before the number. |
footerAveragerequired | string | — | |
footerMinimumrequired | string | — | |
footerMaximumrequired | string | — | |
footerRangerequired | string | — | |
footerCountrequired | string | — | |
footerDistinctrequired | string | — | |
footerAggregaterequired | string | — | An aggregate the application computes itself. |
groupingrequired | string | — | The grouping section of the column menu, and the menu entry per column. |
groupByrequired | (label: string) => string | — | |
groupedByrequired | string | — | The grouping's tag in the table toolbar: "Grouped by" Region › Customer. |
removeGroupingrequired | string | — | |
removeGroupingLevelrequired | (label: string) => string | — | |
foldAllrequired | string | — | |
unfoldAllrequired | string | — | |
groupNoValuerequired | string | — | The group of rows without a value. |
groupContinuedrequired | string | — | Beside a group repeated at the top of a page that begins inside it. |
foldGrouprequired | (name: string, count: string) => string | — | The fold of a group, with its value and its count. |
unfoldGrouprequired | (name: string, count: string) => string | — | |
foldBranchrequired | (row: string) => string | — | The fold of a branch in a table with tree rows, named after its row -
not expandRowNamed, which names the row detail's expander on the same row. |
unfoldBranchrequired | (row: string) => string | — | |
levelColumnrequired | string | — | The first column of a tree's export. |
pathRowrequired | string | — | A row shown only because a descendant matches the search or a filter. |
footerTopLevelrequired | string | — | The footer of a tree: it sums the top level, since a parent holds its children. |
selectGrouprequired | (name: string) => string | — | The box that selects every row of a group. |
calendarWeekrequired | (week: number, year: number) => string | — | A group of the week key: "Week 42, 2026". |
entriesrequired | (count: number, formatted: string) => string | — | "128 entries" in the pagination bar; the plural belongs to the language. |
selectedCountrequired | (count: number, formatted: string) => string | — | "3 selected" in the pagination bar and the table toolbar. |
copiedRowsrequired | (count: number, formatted: string) => string | — | Said to a screen reader after Ctrl+C copied rows: "3 rows copied". |
copiedCellrequired | string | — | Said after Ctrl+C copied the active cell of a grid. |
copyFailedrequired | string | — | Said when the clipboard refused or is not there. |
noEntriesrequired | string | — | Empty because there are no rows. |
nothingMatchesFiltersrequired | string | — | Empty because search and filters leave nothing - something else. |
treeSearchPlaceholderrequired | string | — | |
treeNoMatchesrequired | string | — | |
conditionsrequired | string | — | Group name of the conditions in the table toolbar. |
removeConditionNamedrequired | (label: string, value: string) => string | — | The button that removes a condition: "Remove Region: EU, US". |
editConditionNamedrequired | (label: string, value: string) => string | — | The condition itself, which opens its filter: "Edit Region: EU, US". |
moreValuesrequired | (count: number, formatted: string) => string | — | The remainder of a long list in a condition: "+1". |
filterFromrequired | string | — | The two fields of the range filter. |
filterTorequired | string | — | |
rangeFromTorequired | (from: string, to: string) => string | — | The condition of a range filter: "100–500", "from 100", "to 500". |
rangeFromrequired | (from: string) => string | — | |
rangeTorequired | (to: string) => string | — | |
rangeInvalidrequired | string | — | When "From" lies behind "To". The condition stays the last valid one. |
resetAllrequired | string | — | Clears search and conditions - in the table toolbar and in the empty body. |
filteredOfTotalrequired | (matches: string, total: string) => string | — | "43 of 1.204" - the numbers come from the formats. |
verdictOkrequired | string | — | The four outcomes of an assessment, as a word beside the value. Colour
alone carries no meaning - the word stands here for that reason. Shown in: Replace single entries |
verdictWarningrequired | string | — | Shown in: Replace single entries |
verdictAlarmrequired | string | — | Shown in: Replace single entries |
verdictUnknownrequired | string | — | |
statAbsentValuerequired | string | — | What stands in the value field when there is no value. No dash, no zero: either could be a value. |
targetrequired | string | — | |
deviationAboverequired | (betrag: string) => string | — | "3,2 above target" or "1,5 below target" - the amount comes from the formats, which is where the comma is from. |
deviationBelowrequired | (betrag: string) => string | — | |
deviationOnTargetrequired | string | — | |
freshnessFreshrequired | string | — | The three freshness states. They are a DIFFERENT axis from the verdict: a stale value keeps its verdict (ADR-0010). |
freshnessStalerequired | string | — | |
freshnessDisconnectedrequired | string | — | |
asOfAgorequired | (duration: string) => string | — | "As of: 3 minutes ago", where the duration comes from the formats. |
closerequired | string | — | |
closeToastrequired | string | — | |
toastDeckCountrequired | (count: number) => string | — | The count on the front toast of a closed deck; pressing it shows them all. |
toastRegionrequired | string | — | The name of the toasts' region, which Alt+T moves the focus into. |
confirmrequired | string | — | |
cancelrequired | string | — | |
loadingrequired | string | — | |
fillLevelrequired | string | — | Generic name of a fill-level bar, where the caller names none. |
progressrequired | string | — | Generic name of a progress bar, where the caller names none. |
breadcrumbrequired | string | — | The accessible name of a breadcrumb's navigation landmark. |
breadcrumbFoldedrequired | string | — | The key that opens a breadcrumb's folded middle levels as a menu. |
splitterrequired | string | — | The separator between a splitter's panes, where the caller names none - a caller who can should name the first pane instead (APG). |
stepDonerequired | string | — | A stepper's step that is behind it, said beside its label to a screen
reader; the current step is aria-current and needs no word. |
stepUpcomingrequired | string | — | A step still ahead. |
stepFailedrequired | string | — | A step that failed - behind the current one or the current one itself. |
chooseFilerequired | string | — | The key of a file input that takes one file - and its name where no field names it. |
chooseFilesrequired | string | — | The same key where it takes several. |
dropFilerequired | string | — | The words beside the key that say the zone takes a drop. |
dropFilesrequired | string | — | |
removeFilerequired | (name: string) => string | — | The cross beside a chosen file. |
fileNotAcceptedrequired | (name: string) => string | — | A dropped file the input's accept does not take. |
showrequired | string | — | |
hiderequired | string | — | |
moreActionsrequired | string | — | |
removerequired | string | — | The cross on a tag without text content. |
removeTagrequired | (beschriftung: string) => string | — | The cross on a tag with text content. |
scheduleOverlaprequired | string | — | The two findings, named on the ghost of a drag. |
scheduleViolatedDependencyrequired | string | — | |
scheduleGhostTimesrequired | (from: string, to: string) => string | — | The new times on the ghost: "08:15–10:00" - the times come from the formats. |
scheduleLeadInrequired | string | — | The parts of a subtask and a dependency, named in the tooltip. |
scheduleLeadOutrequired | string | — | |
scheduleDependencyrequired | string | — | |
scheduleRouterequired | (from: string, to: string) => string | — | "A-2041-1 → A-2041-2": the two subtasks a dependency joins. |
scheduleOverlapWithrequired | (other: string) => string | — | "Overlap with A-2043-2" - the other subtask on the lane. |
scheduleViolatedByrequired | (amount: string) => string | — | "Violated dependency, 15 min short" - the amount from minutesShort. |
scheduleLaneRefusedrequired | string | — | On the ghost of a drag over a lane the subtask may not go to. |
scheduleBlockedTimerequired | string | — | On the ghost of a drag held back from a lane's blocked time. |
scheduleInBlockedTimerequired | (label: string | undefined) => string | — | "In blocked time (Leave)" - a subtask covering its lane's blocked time, with the blocked time's label where it has one. |
scheduleMilestonerequired | (name: string) => string | — | "Milestone: Release" - a milestone named by its label (or id), so that the tooltip and the spoken readout say what kind of thing it is. |
scheduleFoldGrouprequired | string | — | The chevron of a lane group's header, which folds it into one row and unfolds it again. The group's own label stands beside the button, so the name is what the ACTION is, not which group it acts on. |
scheduleUnfoldGrouprequired | string | — | |
scheduleLaneCountrequired | (count: number) => string | — | How many lanes a group holds, beside its name in the header. |
scheduleRoleDescriptionrequired | string | — | What a screen reader calls the plot that takes the keys
(aria-roledescription, schedule-a11y S1). |
scheduleSummaryrequired | (summary: { lanes: number; subtasks: number; from: string; to: string; overlaps: number; violated: number; /** Subtasks in blocked time; said only where there are any. */ blocked: number; /** Milestones of the plan; said only where there are any. */ milestones: number; }) => string | — | The plot's description (S6): the lanes, the subtasks in view, the visible span with both ends formatted, and the findings of the plan by kind. |
scheduleKeyHelprequired | string | — | The keys that walk the plot, select and edit - read after the summary. |
dashboardEditrequired | string | — | The editing bar's buttons and the label that says the mode is on. |
dashboardEditingrequired | string | — | |
dashboardCancelrequired | string | — | |
dashboardDonerequired | string | — | |
dashboardUndorequired | string | — | |
dashboardRedorequired | string | — | |
dashboardResetrequired | string | — | |
dashboardMenurequired | (title: string) => string | — | The name of a widget's menu button: the widget's title is the thing. |
dashboardPlacerequired | (place: number, of: number) => string | — | At the top of the menu, and in the name of a head the arrow keys move. |
dashboardHeadrequired | (title: string, place: number, of: number) => string | — | |
dashboardMoveStartrequired | string | — | |
dashboardMoveEarlierrequired | string | — | |
dashboardMoveLaterrequired | string | — | |
dashboardMoveEndrequired | string | — | |
dashboardRemoverequired | string | — | |
dashboardSizesrequired | { small: string; medium: string; wide: string; tall: string; large: string; full: string } | — | The closed set of size names, worded once for every widget type. |
dashboardSizeEntryrequired | (size: string, share: string, current: boolean) => string | — | A size's entry in a widget's menu: its name and its share of the width
(share is "¼" or "5/12", empty for the whole width); current marks the size the widget stands at. |
dashboardHeadingLabelrequired | string | — | The built-in heading type: its name, its sentence in the catalogue, the text a new heading starts with and the label of its text field. |
dashboardHeadingSentencerequired | string | — | |
dashboardHeadingTextrequired | string | — | |
dashboardHeadingFieldrequired | string | — | |
dashboardLeftrequired | string | — | Said when "Done" leaves the mode and nothing was changed. |
dashboardMovedrequired | (title: string, from: number, to: number, of: number) => string | — | What is spoken after a change. |
dashboardDragCancelledrequired | (title: string) => string | — | |
dashboardResizedrequired | (title: string, size: string) => string | — | |
dashboardRemovedrequired | (title: string) => string | — | |
dashboardKeptrequired | string | — | |
dashboardCancelledrequired | string | — | |
dashboardAddWidgetrequired | string | — | The catalogue and the options. |
dashboardCataloguerequired | string | — | |
dashboardCatalogueSentencerequired | string | — | |
dashboardAddrequired | string | — | |
dashboardAddTyperequired | (label: string) => string | — | |
dashboardFootprintrequired | (columns: number, rows: number) => string | — | |
dashboardAddedrequired | (title: string, place: number, of: number) => string | — | |
dashboardOptionsrequired | string | — | |
dashboardOptionsChangedrequired | (title: string) => string | — | |
dashboardEmptyrequired | string | — | |
dashboardEmptyEditingrequired | string | — | |
dashboardFailedrequired | string | — | |
dashboardUndonerequired | string | — | |
dashboardRedonerequired | string | — | |
dashboardResetDonerequired | string | — | |
calculationSumSymbolrequired | string | — | The four operators as symbols in a formula line. |
calculationDifferenceSymbolrequired | string | — | |
calculationProductSymbolrequired | string | — | |
calculationQuotientSymbolrequired | string | — | |
calculationSumWordrequired | string | — | The same four as words, in the accessible sentence of a line. |
calculationDifferenceWordrequired | string | — | |
calculationProductWordrequired | string | — | |
calculationQuotientWordrequired | string | — | |
calculationEqualsrequired | string | — | Between the parts of the sentence: "Availability equals ...". |
calculationApproximatelyrequired | string | — | Before a result marked "≈" in the sentence. |
calculationApproximateNoterequired | string | — | Beside a result marked "≈": why the rounded operands do not give it. |
calculationPercentrequired | string | — | How a percentage is read out: "91.6 percent". |
calculationMissingrequired | (label: string) => string | — | Why a quantity has no number - the label is the given at the root of it, or the divisor that is zero. |
calculationDivisionByZerorequired | (label: string) => string | — | |
calculationAboveTargetrequired | (target: string) => string | — | The target beside the result, with the target's number and unit. |
calculationBelowTargetrequired | (target: string) => string | — | |
calculationOnTargetrequired | (target: string) => string | — | |
calculationWorstInsiderequired | (verdict: string) => string | — | The quiet marker on a folded quantity whose derivation holds a worse
verdict than its own; the verdict word comes from verdict*. |
calculationSourcerequired | (source: string) => string | — | Where a given number came from. |
calculationShowDerivationrequired | (label: string) => string | — | The disclosure button of a derivation, named after the quantity. |
calculationHideDerivationrequired | (label: string) => string | — | |
calculationOperandCountrequired | (count: number) => string | — | On a folded line whose operator has more operands than are written out beneath it (ADR-0028): how many there are. |
calculationNoOperandsrequired | string | — | On the line of a sum with no operands, where its formula would stand (ADR-0049). |
Wording object of your own. No right-to-left (ADR-0032).What umriss deliberately does not build, and why: ADR-0032.