TYPO3 mehrsprachig
Generelles:
Ergänzendes Tutorial zur Mehrsprachigkeit bei www.c-dev.ch
Die Unterstützung für Fremdsprachen ist in TYPO3 von Haus aus eingebaut. Deshalb wird auch keine Extension gebraucht, die vorher installiert werden muß. Wir verwenden in diesem Tutorial das Konzept One Tree Fits All. Das bedeutet, alle Sprachen sind im selben Seitenbaum untergebracht und die Inhaltselemente werden 1:1 übersetzt.
Tutorial TYPO3 mehrsprachig
1. Website Sprachen definieren
2. Template anpassen
3. PHP-Skript einbinden
4. PHP-Skript hochladen
5. Übersetzung der Seiten erstellen
6. Inhaltselemente übersetzen
Website Sprachen definieren
Klicken Sie auf das Weltkugel-Symbol und wählen Sie Neu. Im folgenden Dialog wählen Sie Website Sprache aus. Im Anschluß erscheint die untenstehende Maske, die Sie bitte wie dargestellt ausfüllen. Es ist zwar egal, wie Sie die Sprache nennen, weil es für die Funktion einzig und allein auf die ID der Sprache ankommt und nicht auf deren Namen. Sollten Sie aber vorhaben, eine automatische Spracherkennung (das heißt ein auf die Sprache Englisch eingestellter Browser zeigt automatisch die englischen Inhalte an) durchzuführen, benennen Sie die Sprachen gleich nach den Ländercodes nach ISO 3166. Die Typo3 Extension Language Detection (rlmp_language_detection), die wir in einem späteren Tutorial ebenfalls verwenden werden, setzt das voraus.

- Schritt 1
Definieren Sie alle Sprachen, die Sie benötigen. In diesem Fall haben wir zwei Sprachen angelegt: Englisch und Französisch. Die ID der Sprache Englisch ist 1 und die ID der Sprache Französisch ist 2. Das kann bei Ihnen durchaus abweichen und ist nicht weiter schlimm. Verwenden Sie in jedem Fall die bei Ihnen relevante ID.

- Schritt 1a
Template anpassen
- #
- #########################
- # Globale Konfiguration
- #########################
- config {
- spamProtectEmailAddresses = 2
- spamProtectEmailAddresses_atSubst = (at)
- extTarget = _blank
- linkVars = L
- sys_language_uid = 0
- language = de
- locale_all = de_DE
- # pageTitleFirst=1
- xhtml_cleaning=all
- doctypeSwitch = {$doctypesw_cond}
- htmlTag_langKey = de
- }
- # English language, sys_language.uid = 1
- [globalVar = GP:L = 1]
- config.sys_language_uid = 1
- config.language = en
- config.locale_all = english
- config.htmlTag_langKey = en
- [global]
- # French language, sys_language.uid = 2
- [globalVar = GP:L = 2]
- config.sys_language_uid = 2
- config.language = fr
- config.locale_all = fr_FR
- config.htmlTag_langKey = fr
- [global]
Template Anpassung (TYPO3 mehrsprachig)
Die Einstellungen für die Sprachen haben wir im Erweiterungs-Template +ext Globale Konfiguration untergebracht. Die für die Fremdsprachen relevanten Zeilen sind farbig hervorgehoben.
- In Zeile 9 wird festgelegt, daß die Variable L an die URL angehängt wird. Eine übersetzte Seite wird also folgendermaßen aussehen: seitentitel.11.0.html?&L=1 oder seitentitel.11.0.html?&L=2
- Zeile 10 bis 12 und Zeile 16 bestimmen die Einstellungen für die Standardsprache (in unserem Falle also deutsch).
- In Zeile 19 bzw. 26 wird jeweils eine Bedingung gesetzt. Wenn also die Sprach-ID gleich 1 ist gelten die darunterstehenden Werte. Zeile 24 bzw. 31 kennzeichnen das Ende der Bedingung. Wenn eine Bedingung nicht wahr ist (also die zugehörige Sprache nicht ausgewählt wurde) werden die Anweisungen, die innerhalb der Bedingung stehen, nicht ausgeführt.
- Zeile 20 bis 23 und Zeile 27 bis 30 überschreiben die für die Standardsprache geltenden Werte, wenn eine der Bedingungen wahr ist.
PHP-Skript einbinden
- #
- # subpart col1_content
- ############################
- #
- temp.col1_content = COA
- temp.col1_content {
- 10 = TEXT
- 10.value = Menü
- 10.wrap = <h1>|</h1>
- 20 = HMENU
- 20 {
- entryLevel = 0
- excludeUidList = 8,4,5,6,7
- 1 = TMENU
- 1 {
- expAll = 0
- noBlur = 1
- wrap = <ul>|</ul>
- IProcFunc = user_IProc_dfn
- NO = 1
- NO.ATagTitle.field = abstract // description // subtitle
- NO.allWrap = |<span class="hidden">.</span>
- NO.wrapItemAndSub = <li>|</li>
- NO.stdWrap.htmlSpecialChars = 1
- CUR < .NO
- CUR = 1
- CUR.allWrap = <strong>|<span class="hidden">.</span></strong>
- CUR.doNotLinkIt = 1
- CUR.stdWrap.htmlSpecialChars = 1
- }
- 2 < .1
- 3 < .1
- 4 < .1
- }
- 25 = PHP_SCRIPT
- 25.file = fileadmin/scripts/languageMenu.php
- 30 < styles.content.getLeft
- }
Speichern Sie das PHP-Skript im Verzeichnis fileadmin/scripts. Die markierten Zeilen wurden von mir modifiziert, damit sie in das vorliegende Layout passen. Die Original-Datei liegt jeder Typo3-Installation bei und zwar im Verzeichnis typo3/sysext/cms/tslib/media/scripts/example_languageMenu.php.
Seiten übersetzen
Nachdem wir nun Typo3 für die Mehrsprachigkeit konfiguriert haben, wird auf jeder vorhandenen Seite der untenstehende Dialog angeboten. Erstellen Sie also zunächst eine fremdsprachige Version einer Seite:

- Schritt 5
Inhaltselemente übersetzen
Anschließend können Sie jedes einzelne Inhaltselement, das in der Standardsprache bereits vorhanden ist, übersetzen. Sie können die vorhandenen Inhaltselemente kopieren, indem Sie auf Standard-Inhalte kopieren klicken. Typo3 kopiert dann alle vorhandenen Elemente und stellt das Präfix [Translate to english:] davor. Die eigentliche Übersetzung müssen Sie natürlich selbst durchführen...

- Schritt 6