Hallo,
ich habe für eine zweisprachige Website unter Typo3 4.0.1 eine eigene Extension erstellt.
Im Template-Setup ist folgendes eingetragen:
mod.web_layout.defLangBinding = 1
config.sys_language_overlay = 1
Bei Auswahl der zweiten Sprache wird also im Frontend für alle Contentelemente die Standardsprache angezeigt, falls keine Übersetzung des Contents gespeichert ist (content binding).
Mit meiner Konfiguration wird im Backend für noch nicht übersetzte Contentelemente in der Bearbeitungsmaske ein Select-Feld mit den Einträgen "Default" und "en [NEW]" ausgegeben, wobei "Default" vorausgewählt ist. Wenn ich dann auf "en [NEW]" wechsele wird automatisch der Datensatz für die Übersetzung angelegt.
Bei meiner eigenen Extension habe ich aber nur ein Select mit "Default" und "en". Wenn ich dann "en" auswähle und speichere wird der Default-Content zum en-Content, also für den Content-Eintrag in der DB sys_language_uid=1 gespeichert (es wird also kein eigener Übersetzungseintrag mit angelegt).
Was muss ich wo bei meiner Extension konfigurieren bzw. ändern, um die Select-Auswahl "[NEW]" zum Anlegen des "language overlay" zu bekommen?
Ich habe es nun hinbekommen: Das Select-Feld mit der Auswahl "[NEW]" wird angezeigt. Sogar eine Flagge zum Lokalisieren noch nicht übersetzter Datensätze, die man anklicken kann, wird unter "Web > List" ausgegeben!
Dies waren wohl die Hauptpunkte, die bei mir gefehlt hatten bzw. falsch waren:
1.) Für die Seite, auf der die Einträge meiner Extension gespeichert werden (StorageFolder) musste ein Eintrag "Alternative Page Language" (alternative Seitensprache) angelegt werden.
2.) In der Datei flexform_ds_pi1.xml meiner Extension habe ich folgende Angaben (meta) ergänzt:
<T3DataStructure>
<meta>
<langDisable>0</langDisable>
<langChildren>1</langChildren>
</meta>
...
3.) Auf der Root-Seite habe ich noch den ISO-Code der zweiten Sprache ausgewählt, wie im Frontend Localization Guide (doc_l10nguide) empfohlen.
Bemerkung zu TemlaVoila:
Nachdem ich diese drei Änderungen vorgenommen hatte wurden die Übersetzungen im Frontend gar nicht mehr angezeigt. Erst als ich auch im "XML der Datenstruktur" (DS) diese "meta-Angabe" eingefügt hatte wurden die Übersetzungen korrekt ausgegeben:
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<T3DataStructure>
<meta type="array">
<langChildren type="integer">1</langChildren>
<langDisable type="integer">0</langDisable>
</meta>
<ROOT type="array">
...
Diese Angabe ändert den Wert für "Localization" des TemplaVoila-Templates von "Separate" auf "Inheritance", so wie es für das "Content-Binding" bzw. den "language-Overlay" (zumindest bei meiner Konfiguration) nötig ist.