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 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:
http://www.domain.de -> http://www.domain.de/ -> http://www.domain.de/de/
http://www.domain.de/home -> http://www.domain.de/home/ -> http://www.domain.de/de/home/
http://www.domain.de/home/ -> http://www.domain.de/de/home/
Anleitung
1. Sprache erzeugen
>> Web > Liste >> Erdkugel auswählen
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
## REALURL ##
config {
baseURL = http://www.domain.de/
simulateStaticDocuments = 0
tx_realurl_enable = 1
}
# GET-Parameter für Sprache
config.linkVars = L
# Deutsch / Hauptsprache
config {
sys_language_uid = 0
language = de
locale_all = de_DE
}
# Englisch / 2. Sprache
# Die "1" muss mit der obengenannten ID übereinstimmen
# Die Weiche kann auch alternativ mit einer anderen Domain verknüpft werden (www.domain.com)
[globalVar = GP:L = 1]
config {
sys_language_uid = 1
language = en
locale_all = en_US
}
[global]
3. Realurl mit localconf.php konfigurieren
Häufige wird schon ein Beispiel von RealURL genutzt... Daher hier die entscheidene Stelle bei den preVars:
Wichtig: Die Sprache muss an erster Stelle der preVars stehen!
$TYPO3_CONF_VARS['EXTCONF'] ['realurl'] ['_DEFAULT'] ['preVars'] => array(
array(
'GETvar' => 'L',
'valueMap' => array(
'de' => '0',
'en' => '1',
),
'valueDefault' => 'de',
# 'noMatch' => 'bypass',
),
);
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 folgende TS mit integrieren
lib.link.language = TEXT
lib.link.language {
value = English
typolink.parameter.data = page:uid
typolink.additionalParams = &L=1
}
# Änderungen für die englische Sprache
[globalVar = GP:L=1]
lib.link.language.value = Deutsch
lib.link.language.typolink.additionalParams = &L=0
[global]
YOUR_MARKER < lib.link.language
5. .htaccess erweitern
Als Vorlage dient die von Typo3 4.1.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 ^(.*)$ /$1/ [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/$1 [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule .* index.php [L]
Ich hoffe mal ich habe jetzt keinen Teil vergessen. Falls doch einfach eine kurze Nachricht an mich...
Viel Spaß beim Nutzen! 🙂