Hi,
die von mir entwickelte Website hat als Standardsprache Deutsch (sys_language_uid=0); dazu gibt es eine englische Übersetzung (sys_language_uid=1).
Für die automatischen Weiterleitung zu den Seiten in passender Sprache ist die Extension rlmp_language_detection installiert.
Für das Ansteuern der Website wünscht mein Kunde nun diese Logik: Deutschsprachige Benutzer landen auf der deutschen Site, alle anderen auf der englischen. So gesehen wäre die Standardsprache Englisch.
rlmp_language_detection leitet jetzt aber erstmal immer auf die deutschen Seiten, es sei denn, der Browser hat als Sprache Englisch eingestellt. Das liegt sicher daran, dass Deutsch die Website-Standardsprache ist, und macht ja auch Sinn. Nun hat rlmp_language_detection den Konfigurationsparameter defaultLang, den ich auf »en« (für Englisch) stellte, in der Hoffnung, damit die Standardsprache für die Weiterleitung neu zu setzen. Leider hat das keine Wirkung.
Gibt es eine Möglichkeit, das vom Kunden gewünschte Verhalten zu konfigurieren? Also bei einer deutschen Website mit übersetzten Seiten alle nichtdeutschsprechenden Benutzer auf die englischen Seiten zu leiten? Das ist ja kein ungewöhnlicher Use-Case.
Vielen Dank für eure Hilfe,
Tosta
Durch http://www.typo3forum.net/forum/typo3-4-x-fragen-probleme/50677-mehrsprachigkeit-default-language-ndern.html bin ich drauf gekommen:
Die Sprache, in der die Website ursprünglich geschrieben ist, ist nicht zwangsläufig die Standardsprache mit sys_language_uid=0 sein. Das lässt sich beliebig umstellen. So sieht es jetzt bei mir aus, und rlmp_language_detection leitet wie gewünscht um:
config {
…
linkVars = L
sys_language_mode = strict
sys_language_overlay = hideNonTranslated
sys_language_uid = 0
# Default-Sprache Englisch:
language = en
locale_all = en_EN.UTF-8
htmlTag_langKey = en
…
}
…
# Deutsch:
[globalVar = GP:L = 1]
config {
sys_language_uid = 1
language = de
locale_all = de_DE.UTF-8
htmlTag_langKey = de
}
[global]
Das war so einfach, hoffentlich hab ich nichts übersehen…
Tosta
Ich ahnte es: Ich habe mich geirrt. Die beschriebene Lösung ist keine. Nur die Caches von Browser und TYPO3 narrten mich...
Das Problem besteht also nach wie vor. Inzwischen kann ich aber meine Frage einfacher formulieren:
Ist es möglich, rlmp_language_detection so zu konfigurieren, dass es die deutschen Seiten nur dann zeigt, wenn die Benutzersprache Deutsch ist, und für alle anderen Sprachen auf die englischen Seiten umleitet? Wobei allerdings Deutsch die Standardsprache der Website ist (L=0) und Englisch die Fremdsprache (L=1)! (Die Website wurde ursprünglich in Deutsch entwickelt und wird nun internationalisiert, und Englisch soll jetzt die Standardsprache werden.)
Sehr dankbar für eure Hilfe:
Tosta
Hallo Tosta,
Tosta schrieb
Ist es möglich, rlmp_language_detection so zu konfigurieren, dass es die deutschen Seiten nur dann zeigt, wenn die Benutzersprache Deutsch ist, und für alle anderen Sprachen auf die englischen Seiten umleitet?
Kannst du mal dein Typoscript für rlmplanguagedetection zeigen?
Hast du auch mal im TSOB geprüft, ob deine TS-Einstellungen von rlmplanguagedetection greifen?
Grüße Patrick
config {
…
linkVars = L
sys_language_mode = strict
sys_language_overlay = hideNonTranslated
# Default-Sprache Deutsch:
language = de
locale_all = de_DE.UTF-8
htmlTag_langKey = de
/*
# Default-Sprache Englisch:
sys_language_uid = 1
language = en
locale_all = en_EN.UTF-8
htmlTag_langKey = en
*/
…
}
plugin.tx_rlmplanguagedetection_pi1 {
# hier steht nix.
}
page = PAGE
page {
…
# keine relevanten Einträge
}
# Deutsch:
[globalVar = GP:L = 0]
config {
sys_language_uid = 0
language = de
locale_all = de_DE.UTF-8
htmlTag_langKey = de
}
plugin.tx_indexedsearch._DEFAULT_PI_VARS.lang = 0
# Englisch:
[globalVar = GP:L = 1]
config {
sys_language_uid = 1
language = en
locale_all = en_EN.UTF-8
htmlTag_langKey = en
}
plugin.tx_indexedsearch._DEFAULT_PI_VARS.lang = 1
[global]
Zur Zeit funktioniert das richtig im Safari, aber in keinem anderen Browser. Ich versuch's jetzt mal über .htaccess.
Hallo,
ich habe rlmp_language_detection rausgeworfen und die Spracherkennung statt dessen über .htaccess konfiguriert:
RewriteEngine On
RewriteRule ^typo3$ - [L]
RewriteRule ^typo3/.*$ - [L]
RewriteRule ^uploads/.*$ - [L]
RewriteRule ^fileadmin/.*$ - [L]
RewriteRule ^typo3conf/.*$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule .* /index.php
# Einstellungen für Spracherkennung
# URLs, die nur die Domain (http://www.xyz.de) enthalten, werden mit dem passenden L-Parameter erweitert.
# Alle anderen URLs bleiben, wie sie sind.
# Browser, die eher Deutsch als Englisch verstehen, auf ...?L=0 umleiten
RewriteCond %{HTTP:Accept-Language} de [NC]
RewriteCond %{HTTP:Accept-Language} !en.*de [NC]
RewriteRule ^$ ?L=0
# Browser, die eher Englisch als Deutsch oder gar kein Deutsch verstehen, auf ...?L=1 umleiten
RewriteCond %{HTTP:Accept-Language} en.*de [NC,OR]
RewriteCond %{HTTP:Accept-Language} !de [NC]
RewriteRule ^$ ?L=1
Für meine Zwecke reicht das aus.