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
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!
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.
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)
RewriteEngine On # Erzwingt einem Slash am Ende der Zeile, wenn es keine Datei ist. + RewriteCond %{REQUEST_FILENAME} !-f + RewriteCond %{REQUEST_URI} !(.*)/$ + RewriteRule ^(.*)$ // [L,R=301] RewriteRule ^(typo3|t3lib|tslib|fileadmin|typo3conf|typo3temp|uploads|showpic\.php|favicon\.ico)/ - [L] RewriteRule ^typo3$ typo3/index_re.php [L] # Wenn keine Sprache gesetzt ist, wird eine Sprache gesetzt + RewriteCond %{REQUEST_FILENAME} !-f + RewriteCond %{REQUEST_URI} !^/de/(.*)$ + RewriteCond %{REQUEST_URI} !^/en/(.*)$ + RewriteRule ^(.*)$ /de/ [L,R=301] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-l 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.
1: mod.SHARED { 2: defaultLanguageFlag = de.gif 3: defaultLanguageLabel = Deutsch 4: }