Default Texts
Default Texts sind die generischen Produkttexte des Design Systems – Buttonbeschriftungen, Meldungen an Eingabefeldern, Toast- und Dialogtexte –, die als Design Tokens ausgeliefert werden.
Overview
Warum Standardtexte
Default Texts bilden eine zentrale, einheitliche Quelle für generische Produkttexte. Der Anlass: In der Vergangenheit sind Call-to-Actions und Begriffe zwischen den Produkten auseinandergelaufen, und ohne konkrete Vorgabe aus dem Design war unklar, welche Formulierung gilt. Daraus folgt die verbindliche Regel: Existiert für einen Fall ein Standardtext, wird dieser verwendet und nicht neu formuliert. Die ausführliche Begründung sowie die Schreibregeln, die für eigene Texte gelten, stehen unter UX Writing.
Aufbau
Der Katalog umfasst 73 Standardtexte in 8 Gruppen. Jeder Text hat einen Namen aus Großbuchstaben und Unterstrichen. Das erste Segment nennt die Gruppe, die folgenden Segmente den Anwendungsfall – etwa BUTTON_SAVE, TOAST_SUCCESS_SAVE und INPUT_DATE_FUTURE.
| Gruppe | Anzahl | Wofür |
|---|---|---|
| Button | 23 | Beschriftungen von Aktionen wie Speichern, Abbrechen oder Löschen |
| Input | 21 | Validierungs- und Fehlermeldungen an Eingabefeldern |
| Toast | 14 | Erfolgs-, Fehler- und Hinweismeldungen nach einer Aktion |
| Dialog | 8 | Titel und Text von Bestätigungs- und Warndialogen |
| Callout | 2 | Hinweise auf Probleme in übertragenen Daten |
| Toolbar | 2 | Zustandsmeldungen einer Funktionsleiste, etwa laufende Suche oder geänderte Filterkriterien |
| Grid | 2 | Leerzustände einer Tabelle |
| Loading | 1 | Wartetext eines Ladeindikators |
Die Texte stammen aus derselben Quelle wie die Tokens für Farben und Größen und werden von dort generiert. Ausgeliefert werden sie im Paket @mate/default-text. Siehe dazu Design Tokens.
Guidelines
Platzhalter
Ein Teil der Standardtexte enthält Platzhalter, die erst beim Erzeugen des Textes gefüllt werden. Im Token-Quelltext stehen sie als $0 und $1; im ausgegebenen Text erscheint dort der übergebene Wert. Die Werte werden in der Reihenfolge eingesetzt, in der die Platzhalter im Text stehen.
20 der 73 Texte tragen Platzhalter: 17 davon einen, drei davon zwei. Mehr als zwei Platzhalter kommen nicht vor. Jede Konstante kennt ihre erwartete Anzahl an Variablen; die Spalte „Variablen" im Katalog gibt diese Anzahl wieder. Weicht die Anzahl der übergebenen Werte davon ab, entsteht kein Text, sondern ein Fehler.
Info für Dev
Die erwartete Anzahl steht als Eigenschaft variablesCount auf jeder Konstante. Weicht die Anzahl der an create übergebenen Werte davon ab, wirft create einen Fehler und liefert keinen Text.
Die Prüfung greift nur bei Texten mit mindestens einer Variable. Bei Texten ohne Variable werden zusätzlich übergebene Werte ohne Fehler ignoriert.
Singular und Plural sind eigene Konstanten. Eine automatische Pluralbildung gibt es nicht. Wo eine Menge im Text vorkommt, tragen die beiden Fassungen die Endungen SINGULAR und PLURAL; die Singular-Fassung ist ohne Platzhalter formuliert, die Plural-Fassung nennt die Menge als Variable.
| Konstante | Text | Variablen |
|---|---|---|
TOAST_SUCCESS_DELETE_SINGULAR | Der Datensatz wurde gelöscht. | - |
TOAST_SUCCESS_DELETE_PLURAL | Es wurden $0 Datensätze gelöscht. | 1 |
Die Auswahl zwischen beiden Konstanten trifft die Anwendung anhand der Anzahl der betroffenen Datensätze. Solche Paare gibt es bei TOAST_SUCCESS_COPY, TOAST_SUCCESS_DELETE und CALLOUT_ERROR_TRANSFER.
Katalog
Der Katalog führt alle 73 Standardtexte, gruppiert nach dem Ort ihrer Verwendung. Die Spalte „Konstante" nennt den Namen, die Spalte „Text" den Wortlaut, die Spalte „Variablen" die Anzahl der Platzhalter; ein \- steht für einen Text ohne Platzhalter.
Button
Die Gruppe Button liefert die Beschriftungen für Aktionen. Sie setzt die Vorgaben aus UX Writing, Abschnitt Wordings für Aktionen, um. Kein Button-Text trägt einen Platzhalter.
| Konstante | Text | Variablen |
|---|---|---|
BUTTON_SAVE | Speichern | - |
BUTTON_SAVE_AS | Speichern unter | - |
BUTTON_SEARCH | Suchen | - |
BUTTON_DELETE | Löschen | - |
BUTTON_CANCEL | Abbrechen | - |
BUTTON_FORWARD | Weiter | - |
BUTTON_BACKWARD | Zurück | - |
BUTTON_COMPLETE | Abschließen | - |
BUTTON_EDIT | Bearbeiten | - |
BUTTON_REMOVE | Entfernen | - |
BUTTON_ADD | Hinzufügen | - |
BUTTON_ACCEPT | Übernehmen | - |
BUTTON_CALCULATE | Berechnen | - |
BUTTON_RESET | Zurücksetzen | - |
BUTTON_ALLOCATE | Zuweisen | - |
BUTTON_CREATE | Erstellen | - |
BUTTON_REVERT | Rückgängig machen | - |
BUTTON_CONTINUE_EDITING | Weiter bearbeiten | - |
BUTTON_DISCARD | Eingaben verwerfen | - |
BUTTON_REVOKE | Stornieren | - |
BUTTON_ARRANGE | Festsetzen | - |
BUTTON_SPLIT_RANGE | Zeitraum teilen | - |
BUTTON_ASSIGN | Zuordnen | - |
Input
Die Gruppe Input liefert die Meldungen zur Feldvalidierung. Jeder Text benennt die verletzte Regel; wo die Regel sich auf einen Grenzwert oder ein anderes Feld bezieht, steht dieser Bezug als Platzhalter.
| Konstante | Text | Variablen |
|---|---|---|
INPUT_REQUIRED | Dies ist ein Pflichtfeld. | - |
INPUT_INVALID | Wert ist ungültig. | - |
INPUT_MATCH | Wert muss mit $0 übereinstimmen. | 1 |
INPUT_ALPHANUMERIC | Wert darf nur Buchstaben a-z (Groß- und Kleinschreibung) und Ziffern 0-9 beinhalten. | - |
INPUT_DATE_FUTURE | Datum muss in der Zukunft liegen. | - |
INPUT_DATE_PRESENT_FUTURE | Datum muss in der Gegenwart oder Zukunft liegen. | - |
INPUT_DATE_PAST | Datum muss in der Vergangenheit liegen. | - |
INPUT_DATE_PRESENT_PAST | Datum muss in der Vergangenheit oder Gegenwart liegen. | - |
INPUT_DATE_COMPARISON_LESS_OR_EQUAL | Datum muss vor oder gleich dem $0-Datum sein. | 1 |
INPUT_DATE_COMPARISON_LESS | Datum muss vor dem $0-Datum sein. | 1 |
INPUT_DATE_COMPARISON_GREATER | Datum muss nach dem $0-Datum sein. | 1 |
INPUT_DATE_COMPARISON_GREATER_OR_EQUAL | Datum muss gleich oder nach dem $0-Datum sein. | 1 |
INPUT_DATE_COMPARISON_BETWEEN | Datum muss zwischen $0 und $1 liegen. | 2 |
INPUT_CHARACTER_COUNT_MIN_MAX | Mindestens $0 und maximal $1 Zeichen. | 2 |
INPUT_CHARACTER_COUNT_MAX | Wert darf max. $0 Zeichen betragen. | 1 |
INPUT_CHARACTER_COUNT_EQUAL | Wert muss $0 Zeichen betragen. | 1 |
INPUT_NUMERIC_COMPARISON_LESS_OR_EQUAL | Wert muss kleiner oder gleich $0 sein. | 1 |
INPUT_NUMERIC_COMPARISON_GREATER_OR_EQUAL | Wert muss größer oder gleich $0 sein. | 1 |
INPUT_NUMERIC_COMPARISON_LESS | Wert muss kleiner $0 sein. | 1 |
INPUT_NUMERIC_COMPARISON_GREATER | Wert muss größer $0 sein. | 1 |
INPUT_NUMERIC_COMPARISON_BETWEEN | Wert muss zwischen $0 und $1 liegen. | 2 |
Toast
Die Gruppe Toast liefert die Rückmeldungen zu abgeschlossenen Vorgängen. Success, Error und Warning sind eigene Konstanten; für Mengen gibt es je eine Fassung im Singular und im Plural.
| Konstante | Text | Variablen |
|---|---|---|
TOAST_SUCCESS_CREATE | Der Datensatz wurde angelegt. | - |
TOAST_SUCCESS_COPY_SINGULAR | Der Datensatz wurde kopiert. | - |
TOAST_SUCCESS_COPY_PLURAL | Es wurden $0 Datensätze kopiert. | 1 |
TOAST_SUCCESS_SAVE | Der Datensatz wurde gespeichert. | - |
TOAST_SUCCESS_DELETE_SINGULAR | Der Datensatz wurde gelöscht. | - |
TOAST_SUCCESS_DELETE_PLURAL | Es wurden $0 Datensätze gelöscht. | 1 |
TOAST_ERROR_CREATE | Der Datensatz konnte aufgrund eines Fehlers nicht angelegt werden. | - |
TOAST_ERROR_COPY | Kopiervorgang nicht erfolgreich. | - |
TOAST_ERROR_SAVE | Der Datensatz konnte aufgrund eines Fehlers nicht gespeichert werden. | - |
TOAST_ERROR_DELETE | Löschvorgang nicht erfolgreich. | - |
TOAST_WARNING_DUPLICATES | Es wurden $0 Duplikate gefunden. | 1 |
TOAST_MORE_RECENT | Ein aktueller Stand der angezeigten Daten ist verfügbar. | - |
TOAST_UPDATED | Die angezeigten Daten wurden aktualisiert. | - |
TOAST_CALCULATING | Die Berechnung wird ausgeführt. | - |
Dialog
Die Gruppe Dialog liefert Titel und Text für Bestätigungsdialoge. Titel und Text gehören paarweise zusammen und unterscheiden sich nur in der Endung TITLE beziehungsweise TEXT.
| Konstante | Text | Variablen |
|---|---|---|
DIALOG_TRANSACTION_CHANGE_TITLE | Stapelverarbeitung bestätigen | - |
DIALOG_TRANSACTION_CHANGE_TEXT | Sollen $0 Objekte geändert werden? | 1 |
DIALOG_TRANSACTION_REVERT_TITLE | Eingaben verwerfen | - |
DIALOG_TRANSACTION_REVERT_TEXT | Sollen alle bisherigen Eingaben verworfen werden? | - |
DIALOG_CONFIRM_SESSION_TITLE | Session abgelaufen | - |
DIALOG_CONFIRM_SESSION_TEXT | Die Session ist leider abgelaufen. Bitte erneut anmelden. | - |
DIALOG_DANGER_DELETE_TITLE | Datensatz löschen | - |
DIALOG_DANGER_DELETE_TEXT | Soll der Datensatz $0 gelöscht werden? | 1 |
Callout
Die Gruppe Callout liefert den Hinweis auf Probleme in übertragenen Daten, je einmal im Singular und im Plural.
| Konstante | Text | Variablen |
|---|---|---|
CALLOUT_ERROR_TRANSFER_SINGULAR | Es wurde ein Problem bei den übertragenen Daten gefunden. | - |
CALLOUT_ERROR_TRANSFER_PLURAL | Es wurden $0 Probleme bei den übertragenen Daten gefunden. | 1 |
Toolbar
Die Gruppe Toolbar liefert die Zustandsanzeigen der Funktionsleiste über einer Tabelle.
| Konstante | Text | Variablen |
|---|---|---|
TOOLBAR_LOADING | Suche läuft... | - |
TOOLBAR_FILTER_CHANGED | Filterkriterien wurden geändert. | - |
Grid
Die Gruppe Grid liefert die Texte für den State Empty einer Tabelle. Sie unterscheidet, ob überhaupt keine Datensätze vorhanden sind oder ob eine Suche ohne Treffer geblieben ist.
| Konstante | Text | Variablen |
|---|---|---|
GRID_EMPTY | Es sind keine Datensätze vorhanden. | - |
GRID_EMPTY_FILTERED | Es sind keine Datensätze gefunden worden. | - |
Loading
Die Gruppe Loading liefert den Text zum Ladeindikator.
| Konstante | Text | Variablen |
|---|---|---|
LOADING_INDICATOR_WAIT | Bitte warten... | - |
Barrierefreiheit
Standardtexte sind für viele Nutzende die einzige Rückmeldung eines Systems. Ein Toast, der eine Aktion bestätigt, und eine Fehlermeldung an einem Eingabefeld müssen deshalb auch dann ankommen, wenn eine Person die Oberfläche nicht sehen kann. Wie ein Text technisch angekündigt wird, hängt von der Komponente ab und ist unter Notification und beim jeweiligen Eingabefeld beschrieben.
Für die Texte selbst gilt: Sie benennen die Ursache und nicht nur den Zustand, damit die Meldung ohne den visuellen Kontext verständlich bleibt. Farbe oder Symbol allein dürfen die Aussage nie tragen. Die sprachlichen Grundlagen dazu stehen unter UX Writing, die allgemeinen Anforderungen unter Accessibility.
Develop
Die Standardtexte liefert das Paket @mate/default-text. Es stellt die Klasse DefaultText bereit. Jeder Text ist eine statische Konstante dieser Klasse, zum Beispiel BUTTON_SAVE, TOAST_SUCCESS_SAVE oder GRID_EMPTY. Der Konstruktor ist privat, eigene Standardtexte lassen sich also nicht anlegen.
Den fertigen Text liefert die Methode create der jeweiligen Konstante. Texte ohne Platzhalter werden ohne Argument aufgerufen, Texte mit Platzhaltern erwarten je Platzhalter ein Argument. Wie viele Argumente ein Text erwartet, steht in der Eigenschaft variablesCount. Die Methode getAllDefaultTexts gibt alle Standardtexte als Liste zurück. Weitere öffentliche Methoden bietet die Klasse nicht.
Info für Dev
Ein Text wird immer über die Konstante und deren Methode create abgerufen, etwa DefaultText.BUTTON_SAVE.create() für einen Text ohne Platzhalter.
Platzhalter werden als Argumente übergeben, etwa DefaultText.TOAST_SUCCESS_DELETE_PLURAL.create('12') für einen Platzhalter oder DefaultText.INPUT_NUMERIC_COMPARISON_BETWEEN.create('50', '100') für zwei. Die Argumente sind Zeichenketten und ersetzen die Platzhalter in ihrer Reihenfolge.
Die Texte werden nicht in diesem Repository gepflegt. Die Datei mit den Konstanten ist generiert und in der Versionskontrolle ausgenommen; erzeugt wird sie aus dem Token-Projekt, in dem auch die Farb- und Größen-Tokens liegen. Daraus folgt: Die Änderung eines Standardtextes gehört in das Token-Projekt, nicht in dieses Repository. Eine Änderung an der generierten Datei geht beim nächsten Generierungslauf verloren. Wo die Tokens gepflegt werden, steht unter Design Tokens.
Offener Punkt: Standardtexte in Vaadin Flow
Im Repository liegt ausschließlich die TypeScript-Fassung im Paket @mate/default-text. Sie ist die Referenz für den Wortlaut der Standardtexte. Ein Java-Pendant ist hier nicht vorhanden.
Ob und wie die Texte in Vaadin Flow bereitstehen, ist an dieser Stelle nicht belegt. Bis zur Klärung gilt der Wortlaut der TypeScript-Fassung.