Mit SilverStripe 2.4 nach Babylon

Wir hatten in den letzten beiden Wochen ein wenig Probleme mit der Mehrsprachigkeit in neuen SilverStripe Installationen. In der 2.4 hat sich doch so einiges geändert, unter anderem auch die Konfiguration der Mehrsprachigkeit.
Wir hätten ja prinzipiell gerne, dass eine Seite in deutscher Sprache auch von den Suchmaschinen als Deutsch erkannt wird. Dies geschieht im Markup im öffnenden html Tag:

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="de">

Da dieses Markup vom Framework dynamisch generiert wird, können die Werte des Attributs "lang" nur indirekt beeinflusst werden, nämlich über die Sprache, in der die Seiten im Backend angelegt sind.
Prinzipiell besitzt SilverStripe die Fähigkeit zur Mehrsprachigkeit, diese ist grundsätzlich aber "ausgeschaltet". Um diese zu aktivieren, muss die Klasse SiteTree dekoriert werden, wofür die Klasse Translatable vorgesehen ist. Dazu muss die _config.php um folgende Zeile erweitert werden:

Object::add_extension('SiteTree', 'Translatable');

Seit der 2.4 gibt es jetzt aber auch noch die Klasse SiteConfig, die sozusagen die Wurzel des Seitenbaumes darstellt. Auch diese Klasse muss von Translatable dekoriert werden:

Object::add_extension('SiteConfig', 'Translatable');

Übersetzungssprache im Backend auswählenNun ist die Mehrsprachigkeit implementiert und können im Backend für jede vorhandene Seite komfortabel eine Übersetzung anlegen. Nur sind die vorhandenen Seiten "englisch", das heißt ihr Attribut "Locale" hat den Wert "en_US". Um das für die vorhandenen Seiten und alle zukünftigen zu ändern, muss noch eine Codezeile oberhalb der beiden genannten Zeilen in der _config.php eingefügt werden. Das sieht dann so aus:

Translatable::set_default_locale("de_DE");
Object::add_extension('SiteTree', 'Translatable');
Object::add_extension('SiteConfig', 'Translatable');

Wer mir nicht glaubt, der kann das alles in der SilverStripe Doku nachlesen. An dieser Stelle möchte ich der SilverStripe Crew einen Dank dafür aussprechen, dass sie die Doku so schön pflegt.

Tags: