ich habe mal grundsätzliche Fragen zur Mehrsprachigkeit mit Silverstripe. Ich habe zum Thema alle Dokumentationen auf www.silverstripe.org gelesen und auch im Forum so ziemlich alles gelesen [so gut es die Suche zulässt ;-)]. Dennoch habe ich noch keinen Weg gefunden, meine Data Objekte ordentlich zu übersetzen.
Um das Problem auch für diejenigen transparent zu halten, die den Beitrag in Zukunft noch lesen werden fange ich mal vorne an.
Um die Mehrsprachigkeit zu aktivieren habe ich in meine _config.php (mysite) folgendes geschrieben:
Translatable::set_default_locale('de_DE');
Translatable::enable();
Translatable::set_default_lang('de');
Außerdem habe ich noch den zu übersetzenden Teil mit in der _config.php aktiviert:
Object::add_extension('Artikeltexte', 'Translatable');
// Artikeltexte könnte hierfür alles stehen. Z.B. Produkttexte, Lexikoneinträge, etc.
In meiner page.php habe ich in der init() Funktion den Aufruf innerhalb des Seitenbaumes mit hineingenommen:
if($this->dataRecord->hasExtension('Translatable')) {
i18n::set_locale($this->dataRecord->Locale);
}
Folgendes habe ich vom Grundsatz her vor:
Im Seitenbaum soll es eine holder Page für eine große Anzahl von Artikeln geben. Diese werden auf der Holder-Page kurz angerissen und führen dann jeweils auf eine Detailseite. Die Einzelnen Artikel sollen nicht über den Seitenbaum erstellt werden, sondern werden als DataObjekte in die DB gespeichert. Da ich das TinyMCE verwenden muss verwende ich keinen DataObjectManager (DOM) und auch keine ComplexTableFields (CTF), sondern habe die Verwaltung über $managed_models mit in die Hauptmenüleiste des Backends genommen. Dort werden die Daten über ein einfaches FieldSet verwaltet. Klappt auch so weit wunderbar.
Dann habe ich per /dev/build/ meine DB neu generiert. Dabei ist die Tabelle für die Translationgroups auch angelegt worden (Artikeltexte_translationgroups).
Wenn ich dann aber im CMS zum Beispiel in den englischen Übersetzungsbereich wechsle (Übersetzungen des SiteTrees) und dann in den Hauptnavigationspunkt meiner Artikeltexte wechsle, dann verliere ich meine engliche Locale und wechsle automatisch wieder ins deutsche. Neu Einträge und Updates bestehender Einträge bekommen immer ein "de_DE" in das Feld "Locale" in meiner Haupttabelle geschrieben.
Ich habe dann mal weiter geschaut und eine Patch gefunden (http://open.silverstripe.org/attachment/ticket/4435/ctf-translatable-fix.patch, mit dem man die "locale" innerhalb der Fenster des Haupt CMS Bereiches halten kann. Hab's eingebaut. Klappt. Nutz aber bei meinem Problem nicht.
Ich könnte jetzt natürlich hergehen und mir eine Auswahlliste in meine Artikeladministration setzen, mit der ich das "locale" Feld in meiner Tabelle per Auswahlliste fülle. Das halte ich aber nicht für besonders elegant und flexibel.
Daher hier meine Frage:
Wie wird die Mehrsprachigkeit bei DataObjekten grundsätzlich gehandhabt?
Bei der Beantwortung suche ich keine Codeschnipsel für mein Problem sondern würde mich über einen generellen Austausch sehr freuen.
P.S. Beim Versuch meine Languagefiles über http://<mysite>/dev/tasks/i18nTextCollectorTask zu generieren hat es auch geknallt. PHPUnit wird verwendet. Dieses ist aber nicht installiert. Und da die Domain auf einem Shared Hosting Server liegt und PHP als CGI läuft, kann man dieses auch nicht zu installieren. Kennt jemand eine Lösung, mit der mann ohne PHPUnit arbeiten kann. Alles per Hand zu übersetzen ist auch doof.
EDIT:
Habe gerade folgenden Link gefunden: http://silverstripe.org/translatablemodeladmin-module/.
Habe es installiert und es ist vom Ansatz genau das was ich gesucht habe. Allerdings wird in das Tabellenfeld "Locale" immmer nur der Wert meiner "Default Sprache" also "de_DE" gespeichert. Auch dann, wenn ich eine andere Sprache vorausgewählt hatte.
Ich schau mal weiter...
EDIT: Leider keinen Erfolg gehabt http://www.silverstripe.org/all-other-modules/show/271796#post271796.
Kann mir denn keiner Helfen? Das Problem muss doch schon öfters vorgekommen sein? Ich verzweifle langsam...
Gruß, Carsten.

