Home
 

TYPO3 HowTo: Mehrsprachige Seiten

Da bislang viele immer wieder bei den grundlegenden Dingen für mehrsprachige Seiten am Stolpern sind.

Hier einfach mal eine kleine Zusammenfassung an Hand der Sprachen Deutsch (Default) und Englisch mit einer One-Tree-Installation...

Damit das ganze auch Suchmaschinen freundlich wird, wird man automatisch von der Domain auf die default Language weitergeleitet und alle Links auf der Seite werden direkt mit der entsprechenden Sprache weitergeleitet.

Beispiele:
www.domain.de -> www.domain.de/ -> www.domain.de/de/
www.domain.de/home -> www.domain.de/home/ -> www.domain.de/de/home/
www.domain.de/home/ -> www.domain.de/de/home/

1. Sprache erzeugen

>> "Web > Liste" >> Erdkugel auswählen.

Neuen Datensatz mit "Webseite Sprache" angelegen; Titel = English
Dieser Datensatz sollte in der Regel die ID 1 erhalten.

Jetzt kann der Inhalt in der entsprechende Sprache angelegt werden.

Anmerkung: Die Standardsprache wird per TS definiert.

2. TSConfig für das Roottemplate definieren

TypoScript
   1: ## REALURL ##
   2: config {
   3:         baseURL = http://www.domain.de/
   4:         simulateStaticDocuments = 0
   5:         tx_realurl_enable = 1
   6: }
   7: 
   8: # GET-Parameter für Sprache
   9: config.linkVars = L
  10: 
  11: # Deutsch / Hauptsprache
  12: config {
  13:         sys_language_uid = 0
  14:         language = de
  15:         locale_all = de_DE
  16: }
  17: 
  18: # Englisch / 2. Sprache
  19: # Die "1" muss mit der obengenannten ID übereinstimmen
  20: # Die Weiche kann auch alternativ mit einer anderen Domain 
  21: # verknüpft werden (www.domain.com)
  22: [globalVar = GP:L = 1]
  23: config {
  24:         sys_language_uid = 1
  25:         language = en
  26:         locale_all = en_US
  27: }
  28: [global]
  29: 
  30: # Weitere Möglichkeiten zur Konfiguration.
  31: config {
  32:   sys_language_mode = default | content_fallback | strict
  33:   sys_language_overlay = 0 | 1 | hideNonTranslated
  34:   sys_language_softMergeIfNotBlank = table:column, table:column2
  35: }

3. Realurl in der localconf.php konfigurieren

In neueren Version wird die Konfiguration von RealURL ausgelagert. Für die generelle Konfiguration gibt es diverse Beispiele und Anleitungen. Daher hier nur die entscheidene Stelle bei den preVars:

Wichtig: Die Sprache muss an erster Stelle der preVars stehen!

PHP
  1. $TYPO3_CONF_VARS['EXTCONF'] ['realurl'] ['_DEFAULT'] ['preVars'] = array(
  2. 'GETvar' => 'L',
  3. 'valueMap' => array(
  4. 'de' => '0',
  5. 'en' => '1',
  6. ),
  7. 'valueDefault' => 'de',
  8. # 'noMatch' => 'bypass',
  9. ),
  10. );

Anmerkung: 'noMatch' wird nicht benötigt, da wir Suchmaschinen freundliche URLS & Links haben wollen. Man kann damit aber gerne mal spielen.

4. Sprache wechseln - Linkerzeugen

Dafür einfach an gewünschter Stelle folgendes TS mit integrieren.

TypoScript
   1: lib.link.language = TEXT
   2: lib.link.language {
   3:         value = English
   4:         typolink.parameter.data = page:uid
   5:         typolink.additionalParams = &L=1
   6: }
   7: 
   8: # Änderungen für die englische Sprache
   9: [globalVar = GP:L=1]
  10:         lib.link.language.value = Deutsch
  11:         lib.link.language.typolink.additionalParams = &L=0
  12: [global]
  13: 
  14: YOUR_MARKER < lib.link.language

5. .htaccess erweitern

Als Vorlage dient die von Typo3 4.2.x mitgelieftere ModRewrite-Teil aus den .htaccess. (Alle Kommentare wurden gelöschen)

Wichtig!
Reihenfolgen der Zeilen beachten!
Durch '+' sind die neuen wichtige Zeilen gekennzeichnet. (Das Zeichen sollte dann weggelassen werden)

.htaccess
  1. RewriteEngine On
  2.  
  3. # Erzwingt einem Slash am Ende der Zeile, wenn es keine Datei ist.
  4. + RewriteCond %{REQUEST_FILENAME} !-f
  5. + RewriteCond %{REQUEST_URI} !(.*)/$
  6. + RewriteRule ^(.*)$ // [L,R=301]
  7.  
  8. RewriteRule ^(typo3|t3lib|tslib|fileadmin|typo3conf|typo3temp|uploads|showpic\.php|favicon\.ico)/ - [L]
  9. RewriteRule ^typo3$ typo3/index_re.php [L]
  10.  
  11. # Wenn keine Sprache gesetzt ist, wird eine Sprache gesetzt
  12. + RewriteCond %{REQUEST_FILENAME} !-f
  13. + RewriteCond %{REQUEST_URI} !^/de/(.*)$
  14. + RewriteCond %{REQUEST_URI} !^/en/(.*)$
  15. + RewriteRule ^(.*)$ /de/ [L,R=301]
  16.  
  17.  
  18. RewriteCond %{REQUEST_FILENAME} !-f
  19. RewriteCond %{REQUEST_FILENAME} !-d
  20. RewriteCond %{REQUEST_FILENAME} !-l
  21. RewriteRule .* index.php [L]

6. Layout im Backend für Sprache anpassen

Trägt man im beim PageSetup folgende Zeilen TS ein, wird im BE bei der Standardsprache die entsprechende Flagge angezeigt und Sprache angezeigt.

TypoScript
   1: mod.SHARED {
   2:         defaultLanguageFlag = de.gif
   3:         defaultLanguageLabel = Deutsch
   4: }