Language Detection

Die Extension rlmp_language_detection dient dazu, auf einer mehrsprachigen Seite eine automatische Sprachumschaltung anhand der Browsersprache zu ermöglichen, und dies, zumindest in der Theorie, möglichst schnell und einfach. Natürlich weiß ich inzwischen, dass bei typo3 gar nichts schnell oder gar einfach geht. Bei meinem ersten Versuch, dieses Addon dazu zu bewegen, zu funktionieren, brauchte ich knappe 2 Tage. Heute, um ein paar Erfahrungen reicher, brauchte ich nur noch eine gute Stunde. Und da eine Google Suche wie immer nur mäßig hilfreich war und eher dazu beigetragen hat, meinen Frustrationspegel in die Höhe zu treiben, will ich mal erläutern, wie genau ich nun vorgegangen bin, um meine Extension zum Laufen zu bringen. Ich möchte betonen, dass vielleicht gar nciht alle Schritte notwendig sind. Ich beschreibe einfach mal, was ich getan habe, ohne Anspruch auf Richtigkeit oder Vollständigkeit.

1. die Extension aus dem Repository runtergeladen und im Extension Manager installiert

2. im Root Typoscript folgendes hinzugefügt:

plugin.tx_rlmplanguagedetection_pi1 {
defaultLang = de
useOneTreeMethod = 1
}

3. erwartungsfroh probierte ich es das erste mal aus – keine Reaktion. Nach einer Recherche fügte ich dem Typoscript code folgendes hinzu:

page.1000 =< plugin.tx_rlmplanguagedetection_pi1

4. ein Update der Seite brachte mir jetzt folgende Fehlermeldung:

NO entry in the $TCA-array for the table „static_languages“.

5. google teilte mir nach kurzer Recherche mit, dass man für meine Extension eine weitere braucht: static_info_tables. Also hab ich diese installiert, getestet: keine Reaktion. Vom letzten mal habe ich gelernt, dass für rlmp_language_detection unter keinen Umständen eine Standardsprache definiert sein darf. ALso habe ich in meinem TS folgende Zeile auskommentiert:

#config.sys_language_uid = 0

6. Auch das brachte kein nennenswertes Ergebnis. Da ich tief in meinem Herzen trotz der zermürbenden Stunden und Tage meines Lebens, die Typo3 mich schon gekostet hat, doch eine PHP Programmiererin bin, hab ich beschlossen, die Sache so anzugehen, wie es eigentlich in meiner Natur liegt. Statt mich über die Typo3 Community mit ihren wenig hilfreichen Antworten zu ärgern, hab ich die Datei typo3conf/ext/rlmp_language_detection/pi1/class.tx_rlmplanguagedetection_pi1.php geöffnet und Schritt für Schritt geprüft, was in der main Funktion so passiert. Und was stellte ich fest? In folgendem Absatz brach das Script ab:

// Break out if the session tells us that the user has selected language
if (!$this->conf['dontBreakIfLanguageAlreadySelected']) {
	if($GLOBALS["TSFE"]->fe_user->getKey('ses','tx_rlmplanguagedetection_languageSelected') == TRUE) {
		return $content;
	}
}

7. Aha, soso! Eine Variable namens dontBreakIfLanguageAlreadySelected. Selbstverständlich hab ich bei meinen Tests immer die Index Seite aufgerufen, auch mal den Cache gelöscht, trotzdem gings nicht. Aber anscheinend geht das Script davno aus, dass eine Sprachauswahl schon stattgefunden hat. Also habe ich folgende Zeile meinem Typoscript hinzugefügt:

plugin.tx_rlmplanguagedetection_pi1.dontBreakIfLanguageAlreadySelected = 1

8. Und plötzlich gings.

Das wirklich unglaublich frustrierende, zeitraubende, Nerven kostende an Typo3 ist, dass man, wenn etwas nicht funktioniert, völlig alleine gelassen wird. Man recherchiert bei Google und stößt so oft auf Beiträge, wo genau die Frage gestellt wird, die man selber hat. DAs mag eine dumme Frage sein, aber die Antwort ist dann eine herablassende Bemerkung a la „lies doch in der Doku nach“. Die Doku ist in diesem Fall – so wie meistens bei typo3 und seinen Extensions – einfach nur dürftig. Da hab ich weder was von static_info_tables noch darüber gelesen, dass dontBreakIfLanguageAlreadySelected wichtig werden könnte.

6 thoughts on “Language Detection

  1. Vielen vielen Dank für diesen super Tipp. Ich hatte schon fast aufgegeben aber zum Glück diese Seite gefunden.
    Und ich muss Dir zustimmen, die Hilfe die man in den gängigen Foren erhält ist wirklich sehr dürftig.

    Also danke nochmal und weiter so !!!

  2. Danke für diesen Beitrag. Ich sollte für nen Kunden ne Sprachumschaltung basierend auf Browsereinstellung in seinem Typo3 4.4.2 realisieren und dieses rlmp_language_detection wollte einfach absolut nichts tun. Ich war schon dran, das Handtuch zu werfen, als ich doch noch Deinen Beitrag in Google gefunden habe. Nun funktionierts. Knackpunkt bei mir war ebenfalls „dontBreakIfLanguageAlreadySelected“.

    Erschwerend kommt dazu, dass ich nicht nachvollziehen kann, was das Ding alles als „bereits selected“ ansieht, wird wohl immer ein Rätsel bleiben.

    Anyway.. thx!

  3. Ebenfalls vielen Dank, nach stundenlanger Suche in all den „Profi“-Foren, wo letztendlich nur Müll drinsteht, endlich hier die Lösung.

    Ganz einfach erklärt, sodass wirklich jeder versteht, wie und warum was funktioniert mit der Extension.

    Vielen Dank

  4. Hallo,

    vielen Dank für Deine Anleitung – mir erging es bis dato wie Dir…

    Jedoch habe ich immer noch kein Erfolg – mein TS sieht wie folgt aus:

    plugin.tx_rlmplanguagedetection_pi1 {
    defaultLang = de
    useOneTreeMethod = 1
    }
    page.1000 =< plugin.tx_rlmplanguagedetection_pi1
    plugin.tx_rlmplanguagedetection_pi1.dontBreakIfLanguageAlreadySelected = 1

    config.htmlTag_setParams = none
    config.htmlTag_setParams = xml:lang="de-DE" lang="de-DE"

    # deutsch = standard = id 0
    config.linkVars = L

    #config.sys_language_uid = 0
    config.language = de
    config.locale_all = de_DE
    config.htmlTag_setParams = lang="de" dir="ltr"

    # deutsch
    [globalVar = GP:L=0]
    #config.sys_language_uid = 0
    config.language = de
    config.locale_all = de_DE
    config.htmlTag_setParams = lang="de" dir="ltr"
    [global]

    # englisch
    [globalVar = GP:L=1]
    #config.sys_language_uid = 1
    config.language = en
    config.locale_all = en_EN
    config.htmlTag_setParams = lang="en" dir="ltr"
    [global]

    # espanol
    [globalVar = GP:L=2]
    #config.sys_language_uid = 2
    config.language = es
    config.locale_all = es_ES
    config.htmlTag_setParams = lang="es" dir="ltr"
    [global]

    Hast Du eine Idee was noch falsch sein könnte?

    Gruß

  5. ich fürchte ich muss mich schon seit einer Weile nicht mehr mit typo3 beschäftigen – ich hab das alles verdrängt, ich kann dir da leider nicht helfen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.