> ## Documentation Index
> Fetch the complete documentation index at: https://dokumentation.websale.de/llms.txt
> Use this file to discover all available pages before exploring further.

# Textbausteine

> Textbausteine sind der zentrale Ort, an dem alle Texte gepflegt werden, die der Shop an verschiedenen Stellen anzeigt.

export const confTextbausteine = "Templates und Content -> Textbausteine und Übersetzungen";

Ein Textbaustein besteht aus einer Bezeichnung und einem Text. Im Template wird nur die Bezeichnung eingebunden, nicht der Text selbst. Dadurch wird er an einer Stelle geändert und die Änderung wirkt sich überall dort aus, wo der Baustein vorkommt. Typische Beispiele hierfür

Welcher Text im Shop erscheint, hängt davon ab, in welcher Sprache der aufgerufene Shop-Bereich (Subshop) läuft.

Gepflegt werden die Texte im Admin Interface unter dem Dienst{confTextbausteine}.

## Die Übersicht

<Frame>
  <img src="https://mintcdn.com/websaleag-44ee7ea6/M6zjhcPtj-Ax_Bwr/images/textblocks-lang3.png?fit=max&auto=format&n=M6zjhcPtj-Ax_Bwr&q=85&s=22b67b535ce6f3b270d0b0bcb8d57a5e" alt="Textblocks Lang3" width="2207" height="1321" data-path="images/textblocks-lang3.png" />
</Frame>

Der Dienst zeigt eine Tabelle, in der jede Zeile einem Textbaustein und jede weitere Spalte einer Sprache entspricht. Bis zu drei Sprachen lassen sich gleichzeitig nebeneinander vergleichen und direkt in der Tabelle bearbeiten.

Der Verfügbarkeits-Status gibt Auskunft über den Status eines Textbausteins in einer bestimmten Sprache. Es gibt drei Ausprägungen, die in den Zellen farblich hinterlegt sind:

* **grün = gepflegt** – es liegt ein Text vor.
* **gelb = leer** – es gibt zwar einen Eintrag für diese Sprache, aber ohne Inhalt.
* **rot = nicht vorhanden** – für diese Sprache existiert noch gar kein Eintrag.

So lässt sich auf einen Blick erkennen, wo in einer Sprache noch Lücken bestehen.

Da mit der Zeit viele Textbausteine über mehrere Sprachen hinweg entstehen, lässt sich die Übersicht außerdem:

* durchsuchen (nach Name und Text),
* filtern, z.B. danach, ob ein Textbaustein tatsächlich irgendwo im Shop verwendet wird oder nicht, ob es sich um einen System- oder eigenen Textbaustein handelt, und nach dem Verfügbarkeitsstatus in einer bestimmten Sprache,
* nach Bereich eingrenzen (z. B. alle Textbausteine, die zum Checkout gehören).

## System- und eigene Textbausteine

Ein Teil der Textbausteine wird vom System selbst benötigt, beispielsweise für Standardmeldungen, die der Shop automatisch ausgibt. Diese System-Textbausteine lassen sich in jeder Sprache übersetzen bzw. anpassen, aber nicht löschen, da der Shop sonst an dieser Stelle keinen Text mehr hätte. Ihre Bezeichnung beginnt mit `ws.`

Daneben können beliebig viele eigene Textbausteine angelegt werden, etwa für individuelle Hinweise oder Inhalte, die nur in diesem Shop benötigt werden. Diese können vollständig angelegt, bearbeitet und auch wieder gelöscht werden.

## Sprachen und Vererbung

<Frame>
  <img src="https://mintcdn.com/websaleag-44ee7ea6/M6zjhcPtj-Ax_Bwr/images/textblocks-languagechains.png?fit=max&auto=format&n=M6zjhcPtj-Ax_Bwr&q=85&s=d346b46bfdd4b5e65912b1939e8352f2" alt="Textblocks Languagechains" width="2207" height="1325" data-path="images/textblocks-languagechains.png" />

  Nicht jede Sprachvariante eines Shops muss eigenständig gepflegt werden. Sprachen lassen sich so konfigurieren, dass eine Sprache eine oder mehrere Ersatzsprachen besitzt, auf die zurückgegriffen wird, wenn ein Text in der eigentlichen Sprache fehlt oder leer ist.
</Frame>

Ein Beispiel: Eine Sprache „Englisch" kann als Ersatzsprache „Deutsch" hinterlegt haben. Ist ein Textbaustein auf Englisch nicht gepflegt, wird automatisch der deutsche Text angezeigt, anstatt eine Leerstelle zu zeigen.

Solche Ketten können auch mehrstufig sein, beispielsweise kann zunächst eine sehr spezielle Sprachvariante auftreten, die dann auf eine allgemeinere Variante und erst danach auf die Hauptsprache zurückfällt. Wichtig dabei ist, dass die Kette nicht weitervererbt wird. Jede Sprache trägt ihre vollständige Reihe von Ersatzsprachen selbst.<br /><br />Damit eine spezielle Variante über eine allgemeinere bis zur Hauptsprache durchfallen kann, müssen beide bei ihr hinterlegt sein. Es genügt nicht, dass die allgemeinere Variante ihrerseits auf die Hauptsprache verweist.

Der Effekt für die Redaktion: Es ist nicht nötig, jeden Text in jeder Sprachvariante zu pflegen. Es reicht, die Basissprache vollständig zu pflegen. Speziellere Varianten übernehmen automatisch deren Inhalte, solange sie selbst keinen eigenen Text hinterlegt haben. Erst wenn für eine spezielle Variante ein eigener, abweichender Text benötigt wird, trägt man ihn dort gezielt ein. Er überschreibt dann nur für diese Sprache die geerbte Fassung.

<Warning>
  Für die Ausgabe im Shop verhalten sich **leer** und **nicht vorhanden** gleich: Beide lösen den Rückgriff auf die Ersatzsprache aus. Ein bewusst leer gespeicherter Text unterdrückt die Ausgabe also nicht, solange eine Sprache der Kette einen Text enthält, wird dieser angezeigt. Um an einer Stelle wirklich nichts anzuzeigen, muss der Text in allen Sprachen der Kette leer oder nicht vorhanden sein.

  Der Unterschied zwischen den beiden Zuständen ist somit vor allem ein Merkmal für die Redaktion: Er zeigt, ob eine Sprache bereits bearbeitet wurde.
</Warning>

## Wirkung im Shop

Zwei Punkte sind für das Verständnis zentral, weil sie leicht zu Verwirrung führen:

<Steps>
  <Step title="Der Textbaustein muss im Template eingebunden sein">
    Ein Textbaustein wird nur angezeigt, wenn er an der passenden Stelle im Template eingebunden ist. Das Anlegen oder Ändern eines Textbausteins allein reicht nicht aus. Die jeweilige Shop-Seite muss an der betreffenden Stelle auch tatsächlich auf diesen Textbaustein verweisen. Ändert man einen bereits eingebundenen Textbaustein, wirkt sich das direkt aus. Ein komplett neuer Textbaustein erscheint im Frontend erst, sobald er zusätzlich ins jeweilige Template eingefügt wurde.
  </Step>

  <Step title="Änderungen werden erst nach dem Veröffentlichen sichtbar">
    Bis zur Veröffentlichung befinden sich Anpassungen im Bearbeitungsstand, ohne dass Kunden sie bereits sehen.
  </Step>
</Steps>

## Import und Export

<Frame>
  <img src="https://mintcdn.com/websaleag-44ee7ea6/M6zjhcPtj-Ax_Bwr/images/textblocks-export.png?fit=max&auto=format&n=M6zjhcPtj-Ax_Bwr&q=85&s=f28a32b6dc2488a3f4d46ea156453093" alt="Textblocks Export" width="2207" height="1325" data-path="images/textblocks-export.png" />
</Frame>

Größere Mengen an Textbausteinen lassen sich exportieren und wieder importieren, beispielsweise um sie extern übersetzen zu lassen oder um Änderungen gesammelt einzuspielen. Dies kann auf eine einzelne Sprache eingeschränkt werden, sodass beispielsweise nur die französischen Texte exportiert, extern übersetzt und anschließend wieder importiert werden.

Der Export berücksichtigt die aktuell gesetzte Suche sowie die gesetzten Filter. Beide Vorgänge laufen im Hintergrund und werden durch eine Fortschrittsanzeige begleitet. Importierte Texte werden ebenfalls erst nach der Veröffentlichung im Shop sichtbar.

<Note>
  Vor größeren oder destruktiven Aktionen empfiehlt sich ein Export als Sicherung, weil sich ein Export unverändert wieder importieren lässt.
</Note>

## Sprachen einrichten

<Note>
  Dieser Abschnitt betrifft die Shop-Administration und wird nur gebraucht, wenn eine Sprache neu angelegt oder einem Subshop zugeordnet wird.
</Note>

Es gibt keine shopweite Mastersprache, von der die Subshops abgeleitet werden. Stattdessen hat jeder Subshop seine eigene Hauptsprache und die Vererbung hängt von dieser Sprache ab.

Daraus folgt die Richtung der Kette: Sie zeigt von der speziellen Variante zur allgemeinen Variante, nicht umgekehrt. Ein österreichischer Subshop erhält also die Sprache „Deutsch (AT)" als Hauptsprache, und „Deutsch" als Ersatzsprache.

<Warning>
  Wer von WEBSALE V8s kommt, erwartet hier oft das umgekehrte Muster: eine Mastersprache `DEU`, bei der die Varianten `AT` und `CH` als Ersatzsprachen hinterlegt werden. Das führt jedoch nicht zum Ziel. Die Ersatzsprachen werden immer bei der spezielleren Sprache eingetragen, mit der allgemeineren als Ziel.
</Warning>

Damit ein Subshop die Texte seiner Sprache verwendet, sind drei Einstellungen nötig. Zwei davon betreffen dieselbe Zuordnung und müssen übereinstimmen:

<Steps>
  <Step title="Sprache anlegen und Ersatzsprachen hinterlegen">
    Unter `general.language` die Sprache anlegen und ihre Ersatzsprachen in der gewünschten Reihenfolge eintragen.

    `https://<shop-domain>/admin/config/general.language`
  </Step>

  <Step title="Hauptsprache des Subshops setzen">
    Unter `general.subshopView` beim betreffenden Subshop die Sprache als Hauptsprache eintragen.

    `https://<shop-domain>/admin/config/general.subshopView`
  </Step>

  <Step title="Sprachzuordnung der Subshop-Definition setzen">
    Unter `general.subshop` beim betreffenden Subshop dieselbe Sprache eintragen.

    `https://<shop-domain>/admin/config/general.subshop`
  </Step>
</Steps>

<Warning>
  Am häufigsten übersehen wird, dass nur eine der beiden Zuordnungen geändert werden muss. Das Symptom ist unauffällig, weil der Shop weiterhin Texte anzeigt - allerdings die falschen. So bleibt der österreichische Subshop beispielsweise mit deutschen Texten gefüllt, obwohl österreichische Sprachvarianten gepflegt sind.<br /><br />Prüfen Sie in diesem Fall zuerst, ob `general.subshopView` und `general.subshop` dieselbe Sprache nennen.
</Warning>

## Wegweiser

* [actions – Fehlertexte & E-Mails](/konfiguration/actions-fehlertexte-e-mails) – wie die System-Fehlertexte (`ws.error.*`) aufgebaut sind.
* [Übersicht – Konfiguration](/konfiguration#verwendung-von-textbausteinen-in-konfigurationen) – wie Konfigurationen auf Textbausteine verweisen, statt feste Texte zu enthalten.
* [`general` – Allgemeine Shopeinstellungen](/konfiguration/general-allgemeine-shopeinstellungen) – Referenz zu `general.language`, `general.subshop` und `general.subshopView`.
* [Konfigurations-Deeplinks](/admin-interface/konfigurations-deeplinks) – direkte Links zu den Konfigurationsknoten.
* [API-Referenz Textbausteine](/schnittstellen/admin-interface-api/api-referenz-textbausteine) – Endpunkte, Filter und Import-/Export-Schnittstelle.


## Related topics

- [Template Engine](/frontend/die-basics/template-engine.md)
- [API-Referenz Textbausteine](/schnittstellen/admin-interface-api/api-referenz-textbausteine.md)
- [Übersicht - Konfiguration](/konfiguration.md)
- [actions -  Fehlertexte & E-Mails](/konfiguration/actions-fehlertexte-e-mails.md)
- [Changelog](/changelog.md)
