Mehrsprachige Websites

REDAXO bringt von Haus aus alle wichtigen Funktionen mit, um mehrsprachige Websites umzusetzen. Unter “System, Sprachen” können weitere Sprachen rasch hinzugefügt oder gelöscht werden.

Dennoch gibt es AddOns, die Arbeit mit mehrsprachigen Websites vereinfachen und komfortabler machen. So müssen z.B. die URLs in sinnvoller Weise generiert werden. Beide im Artikel über SEO-Addons erwähnten AddOns zur URL-Umschreibung können sehr gut mit mehrsprachigen Webauftritten umgehen.

SEO-AddOns

Yrewrite

» Im Downloadbereich
» Auf Github

SEO42

» Im Downloadbereich
» Auf Github

Neben den normalen Artikeln in allen Sprachen gibt es bei mehrsprachigen Websites immer auch Komponenten, die eher mühsam über normale Inhaltsmodule zu verwalten sind, die aber dennoch mehrsprachig gepflegt werden müssen. Typische Beispiele sind Erfolgs- oder Fehlermeldungen in Formularen oder bestimmte Textsegmente im Header oder Footer außerhalb des Contenbereichs. Diese mittels einer Sprachunterscheidung in das Template zu integrieren wäre möglich, ist aber umständlich. Sollen Redakteure diese Segmente zudem verändern können, benötigt man andere Wege.

Ersetzungs-AddOns

Derzeit existieren drei AddOns, um globale Ersetzungen vorzunehmen. Diese Ersetzungsfunktionen sind zwar primär für Sprachersetzungen konzipiert, können aber natürlich alle Arten von Zeichen-Ersetzungen managen. Denkbar wäre auch, im Footer eine Website z.B. einen Adressblock über eine solche Ersetzungsfunktion dem Redakteur zugänglich zu machen.

AddOns zur Textersetzung

String-Table

» Im Downloadbereich
» Auf Github

Outputfilter

» Im Downloadbereich

XOutputfilter

» Im Downloadbereich
» Auf Github

String Table

Straing Table

Das auf dem Output Filter basierende AddOn “String Table” ermöglicht es, Platzhalter-Zeichenketten (Strings) zu definieren, die je nach Sprache durch individuelle Texte ersetzt werden. Die Platzhalter werden vom Admin definiert und können vom Redakteur nicht verändert werden.

Einen String kann man über die Methode rex_string_table::getString($key) oder alternativ über die Funktion rex_getString($key) auslesen.

Man kann jedoch auch eine zusätzliche automatische Ersetzung über die OUTPUT_FILTER-Methode einstellen, indem man in der Datei settings.inc.php im Redaxo-Data-Ordner des AddOns die automatische Ersetzung aktiviert:
$REX["ADDON"]["string_table"]["settings"]["auto_replace"] = true;
Danach ist es möglich, einen Platzhalter so im Template oder Modul zu notieren:
###key###

In der String Table-Verwaltung muss der Platzhalter allerdings nur so eintragen werden (also ohne die Start- und Endzeichen):
key

XOutputfilter

XOutputfilter 1

Auch der XOutputfilter kann die sprachabhängige Ersetzung von Platzhaltern verwalten. Allerdings wurde dieses AddOn auch dafür konzipiert, Codefragmente wie z.B. Javascript-Aufrufe nur für bestimmte Artikel oder Kategorien in den Output zu “injizieren”. Der XOutputfilter entstand ursprünglich für ein großes Portal-Projekt, wo aus Performance-Gründen nur immer die Javascript-Komponenten geladen werden sollten, die auf der jeweiligen Seite benötigt werden.

Man kann kommaseparierte Listen hinterlegen, bei welchen Kategorien und welchen Seiten-IDs keine Ersetzung stattfinden soll. Weiterhin kann man für jeden einzelnen Platzhalter bestimmte Artikel-IDs definieren, wo dieser Platzhalter dann nicht ersetzt wird.

XOutputfilter 2

So wird der XOutputfilter verwendet:

$x = new xoutputfilter();
$wert = $x->get(key, [Sprache]);

Konkrete Beispiele:

echo $x->get("%%key%%");
echo $x->get("%%key%%", 0); // für die Sprache mit der ID 0
echo $x->get("%%key%%", $REX["CUR_CLANG"]); // für die gerade aktuelle Sprache

Inhalte in eine andere Sprache kopieren

Inhalte kopieren

Language Copy

» Im Downloadbereich
» Auf Github

Language Copy 1

In REDAXO kann man mit den Artikel-Funktionen für jeden einzelnen Artikel die Modul-Inhalte in eine andere Sprache kopieren. Bereits existierende Inhalte bleiben unangetastet; die Inhalte werden also hinzu kopiert.

Für umfangreichere Sprachkopien empfiehlt sich das AddOn language_copy.
Damit kann man nicht nur die Inhalte einer Seite kopieren, sondern die aller Seiten.
Für sehr umfangreiche Websites gibt es die Option, diese Kopieraktion nicht für alle Seiten in einem Rutsch durchzuführen, sondern immer nur für eine bestimmte Anzahl an Seiten.
Außerdem hat man die Option, bereits vorhandene Inhalte in der Zielsprache vorher zu löschen.

Language Copy 2

Dank des AddOns language_copy ist es außerdem möglich, nicht nur die Modul-Inhalte, sondern auch die Metadaten (Artikel- und Kategorie-Metadaten) zu kopieren, bzw. zu synchronisieren. Selbst Eigenschaften wie Status, Priorität oder Template lassen sich bei der Synchronisierung auswählen.