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.

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

  1. #
  2. #########################
  3. # Globale Konfiguration
  4. #########################
  5. config {
  6.   spamProtectEmailAddresses = 2
  7.   spamProtectEmailAddresses_atSubst = (at)
  8.   extTarget = _blank
  9.   linkVars = L
  10.   sys_language_uid = 0
  11.   language = de
  12.   locale_all = de_DE
  13. #  pageTitleFirst=1
  14.   xhtml_cleaning=all
  15.   doctypeSwitch = {$doctypesw_cond}
  16.   htmlTag_langKey = de
  17. }
  18. # English language, sys_language.uid = 1
  19. [globalVar = GP:L = 1]
  20. config.sys_language_uid = 1
  21. config.language = en
  22. config.locale_all = english
  23. config.htmlTag_langKey = en
  24. [global]
  25. # French language, sys_language.uid = 2
  26. [globalVar = GP:L = 2]
  27. config.sys_language_uid = 2
  28. config.language = fr
  29. config.locale_all = fr_FR
  30. config.htmlTag_langKey = fr
  31. [global]
Datei herunterladen:uploads/tx_jphcodesnippets/extGlobaleKonfiguration_02.txt

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

  1. #
  2. # subpart col1_content
  3. ############################
  4. #
  5. temp.col1_content = COA
  6. temp.col1_content {
  7.   10 = TEXT
  8.   10.value = Menü
  9.   10.wrap = <h1>|</h1>
  10.   20 = HMENU
  11.   20 {
  12.     entryLevel = 0
  13.     excludeUidList = 8,4,5,6,7
  14.     1 = TMENU
  15.     1 {
  16.       expAll = 0
  17.       noBlur = 1
  18.       wrap = <ul>|</ul>
  19.       IProcFunc = user_IProc_dfn
  20.       NO = 1
  21.       NO.ATagTitle.field = abstract // description // subtitle
  22.       NO.allWrap = |<span class="hidden">.</span>
  23.       NO.wrapItemAndSub = <li>|</li>
  24.       NO.stdWrap.htmlSpecialChars = 1
  25.       CUR < .NO
  26.       CUR = 1
  27.       CUR.allWrap = <strong>|<span class="hidden">.</span></strong>
  28.       CUR.doNotLinkIt = 1
  29.       CUR.stdWrap.htmlSpecialChars = 1
  30.     }
  31.     2 < .1
  32.     3 < .1
  33.     4 < .1
  34.   }
  35.   25 = PHP_SCRIPT
  36.   25.file = fileadmin/scripts/languageMenu.php
  37.   30 < styles.content.getLeft
  38. }
Datei herunterladen:uploads/tx_jphcodesnippets/extcol1_content_02.txt

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