Zum Inhalt springen

Spracherkennung des Browsers

Erstellt am 27. März 2005 · 27 Antworten · letzte Antwort am 30. August 2006 · Seite 2 von 2

Tags: Frage

jonas8 ·

Hi Daffy

Also bei mir funktionierts leider nicht. www.sportobs.ch

- Typo3.8.0 mit SimulateStaticDocuments
- static_info_tables 1.4.0
- sr_static_info 1.4.10
- rlmp_language_detection 1.2.1

Im Manual steht noch:
Known problems
Different dialects of a language are not yet supported, i.e. en-us will be handled as if it was en

Aber es gibt noch die: Language Detection - Extended (sr_language_detect)

Detects the client preferred language, including the country subtag. Matches pages in Brazilian (pt-br) with TYPO3 language code br.

Hast du die schon ausprobiert?
Gruss Jonas

jonas8 ·

Hi Daffy

Hast du mir mal die URL der Site?
Dann kann ich das einmal anschauen und weiss das die EXT funzt.

Gruss Jonas

daffyduck ·

Hi Jonas

Danke für den Hinweis betreffend US=EN. Ist eine schöne Schweinerei, dass nur der vordere Teil ohne Subtag ausgelesen wird... Die Amis bzw. Engländer werden hier voll benachteiligt: "en_us" und en_gb sind nun mal zwei Paar Schuhe. Zum Beispiel Zoll, Zentimeter oder Wand, Lance sind Unterschiede.

Unsere Web-Url kann ich hier leider nicht posten, da dieser Webauftritt bei uns im Geschäft Lokal installiert ist, und wir aus Sicherheitsgründen diese nach aussen nicht öffnen wollen (unser IT macht die Regeln). Wenn die Spracherkennung sowieso nicht bald Ordnungsgemäss zum laufen kommt, schalten wir eine Seite mit der Weltkarte davor... was nicht sehr schön ist aber funktioniert, so dass wir Online gehen können.

Eine URL kann ich Dir aber glaub ich geben, auf welcher die Extension bereit erfolgreich läuft (Zweisprachig DE/EN): http://www.clubpoint.com

sr_language_detect:
Die Extension habe ich Installiert. Die Deutsche und Englische Erkennung laufen immer noch sauber, nur die Ami-Seite will immer noch nicht. Die wird immer noch als die Englische erkannt.

Diverse Einstellungen im Setup, sowie im Seitenbaum habe ich getestet:
config.language = us
config.language = usa
config.language = en-us
config.language = en_us
config.language = en_US

Im Browser IE & Firefox auf en-us umgestellt. Die Ami-Seite wird immer noch als Englische dargestellt.

Momentan habe ich die Gleichen Extensions wie Du installiert ausser dass ich kein "SimulateStaticDocuments" benutze. Könnte vieleicht bei Dir daher nicht funktionieren...

Ansonsten schaue dass Du folgenden Eintrag in Deinem SETUP nicht drin hast:
config.locale_all = de_DE (damit funktioniert es nicht, da alle Sprachen auf Deutsch gesetzt werden)

Poste doch mal Dein SETUP, vieleicht sehe ich an was es legen kann.

Gruss Daffy

daffyduck ·

Hi Jonas

Habe folgendes für Dich herausgefunden... vieleicht hilft es Dir.

Folgende Plugins müssen installiert werden:
- rlmp_language_detection 1.2.1
- static_info_tables 1.8.0

Folgend Extension dürfen NICHT installiert sein, da diese Störungen hervorrufen:
- sr_language_detect (eigentlich schade, wäre ein schönes plugin)
- sr_static_info

Da Du die "sr_...-Extensions" aber bereits schon Installiert hast, musst Du sie wieder deinstallieren und zusätzlich auch noch die dazugehörigen Tabellen aus aus der Datenbank löschen. Einfach BE auf "Installation" klicken, Passwort eingeben. Im Bereich "Database Analyser" auf "COMPARE" (Update required tables) klicken. Anschliessend alle Daten die in den Bereich "Removing ..." stehen markieren und auf "Write Database" klicken.

Wenn Du diese Extensiontabellen/-daten nicht löschts, funktioniert auch die Spracherkennung nicht.

Jetzt nur noch die Sprache des Browsers auf zB. FR umstellen und es müsste funktionieren (habe bei mir mal FR eingestellt und wurde erkannt).
Falls nicht, schick mir ne PM.

Gruss Daffy

jonas8 ·

Hallo Daffy

Hab alles so gemacht. Funktioniert aber noch nicht.
Könnte es an Typo3 Version liegen? Ich hab 3.8.0; noch nicht die 3.8.1

Ich muss nächste Woche bei einer bestehenden Site (http://www.lightimaging.ch/)
die Mehrsprachigkeit implementieren.
Da wäre es natürlich super, wenn die Spracherkennung funktionieren würde.

Hier ein Teil des Setup:

# ############################################### 

#  Grundlegende Konfigurationen:

  config {

# Den Seiten-Cache jeweils um Mitternacht leeren
	cache_clearAtMidnight = 1
	
# E-Mail Verschlüsselung aktivieren 
	spamProtectEmailAddresses = 2
	spamProtectEmailAddresses_atSubst = (at)

# xhtml aktivieren	
	doctype = xhtml_trans
	xhtml_cleaning = all
	htmlTag_langKey = {$doc_sprache}
	doctypeSwitch = {$doctypesw_cond}

#  Admin Panel on / off
	admPanel = 1
	
# JavaScript entfernen
	removeDefaultJS = 1
	
# Typo3-Kommentare ausschalten
	disablePrefixComment = 1

# HTML-HEADER-TEXT
	headerComment =	{$NetCon_Info}
	
# SimulateStaticDocuments aktivieren
	simulateStaticDocuments = 1
	simulateStaticDocuments_noTypeIfNoTitle = 1

}

# ####################################
# Konfiguration für Mehrsprachigkeit

	config.linkVars = L
	config.uniqueLinkVars = 1
	config.sys_language_mode = content_fallback

# Standardsprache Deutsch
	config.sys_language_uid = 0
	config.language = de
	config.locale_all = de_DE

# Französisch
	[globalVar = GP:L=1]
		config.sys_language_uid = 1
		config.language = fr
		config.locale_all = fr_FR
	[global]

# Englisch		
	[globalVar = GP:L=2]
		config.sys_language_uid = 2
		config.language = en
		config.locale_all = english
	[global]



# Marker für Sprachwechsel setzen
# Standardsprache Deutsch
	seite.10.marks.SPRACHWAHL = COA
	seite.10.marks.SPRACHWAHL.1 = TEXT
	seite.10.marks.SPRACHWAHL.1.field =  alias // uid
	seite.10.marks.SPRACHWAHL.1.wrap = <li><a href="|.html?&L=1">Français</a></li>	
	seite.10.marks.SPRACHWAHL.2 = TEXT
	seite.10.marks.SPRACHWAHL.2.field = alias // uid
	seite.10.marks.SPRACHWAHL.2.wrap = <li><a href="|.html?&L=2">English</a></li>

# Französisch		
	[globalVar = GP:L=1]
		seite.10.marks.SPRACHWAHL.1.wrap = <li><a href="|.html?&L=0">Deutsch</a></li>
		seite.10.marks.SPRACHWAHL.2.wrap = <li><a href="|.html?&L=2">English</a></li>

# Englisch		
	[globalVar = GP:L=2]
		seite.10.marks.SPRACHWAHL.1.wrap = <li><a href="|.html?&L=0">Deutsch</a></li>
		seite.10.marks.SPRACHWAHL.2.wrap = <li><a href="|.html?&L=1">Français</a></li>
	[global]
		
# #################################################################

Gruss Jonas

daffyduck ·

Hi Jonas

Ich habe Deinen Code angeschaut und folgender angepasst.

Folgende Zeilen habe ich deaktiviert, da eventuell das Extension "rlmplanguagedetection" Java braucht:

# JavaScript entfernen
#        removeDefaultJS = 1

Diese beiden Einträge kenne ich nicht also deaktiviert:

#        config.uniqueLinkVars = 1
#        config.sys_language_mode = content_fallback

Braucht es nicht wirklich (deaktiviert):

#       config.locale_all = **_**

Hier denk kompletten Code:

# ###############################################

#  Grundlegende Konfigurationen:

  config {

# Den Seiten-Cache jeweils um Mitternacht leeren
        cache_clearAtMidnight = 1
       
# E-Mail Verschlüsselung aktivieren
        spamProtectEmailAddresses = 2
        spamProtectEmailAddresses_atSubst = (at)

# xhtml aktivieren     
        doctype = xhtml_trans
        xhtml_cleaning = all
        htmlTag_langKey = {$doc_sprache}
        doctypeSwitch = {$doctypesw_cond}

#  Admin Panel on / off
        admPanel = 1
       
# JavaScript entfernen
#        removeDefaultJS = 1
       
# Typo3-Kommentare ausschalten
        disablePrefixComment = 1

# HTML-HEADER-TEXT
        headerComment = {$NetCon_Info}
       
# SimulateStaticDocuments aktivieren
        simulateStaticDocuments = 1
        simulateStaticDocuments_noTypeIfNoTitle = 1

}

# ####################################
# Konfiguration für Mehrsprachigkeit

#        config.uniqueLinkVars = 1
#        config.sys_language_mode = content_fallback

        plugin.tx_rlmplanguagedetection_pi1.defaultLanguageUid = 0

        config.sys_language_uid = 0 
        config.language = de
        config.linkVars = L 


# Standardsprache Deutsch
        [globalVar = GP:L=0]
        config.sys_language_uid = 0 
        config.language = de
#       config.locale_all = de_DE
        [global]

# Französisch
        [globalVar = GP:L=1]
        config.sys_language_uid = 1
        config.language = fr
#       config.locale_all = fr_FR
        [global]

# Englisch           
        [globalVar = GP:L=2]
        config.sys_language_uid = 2
        config.language = en
#       config.locale_all = english
        [global]



# Marker für Sprachwechsel setzen
# Standardsprache Deutsch
        seite.10.marks.SPRACHWAHL = COA
        seite.10.marks.SPRACHWAHL.1 = TEXT
        seite.10.marks.SPRACHWAHL.1.field =  alias // uid
        seite.10.marks.SPRACHWAHL.1.wrap = <li><a href="|.html?&L=1">Français</a></li>   
        seite.10.marks.SPRACHWAHL.2 = TEXT
        seite.10.marks.SPRACHWAHL.2.field = alias // uid
        seite.10.marks.SPRACHWAHL.2.wrap = <li><a href="|.html?&L=2">English</a></li>

# Französisch      
        [globalVar = GP:L=1]
                seite.10.marks.SPRACHWAHL.1.wrap = <li><a href="|.html?&L=0">Deutsch</a></li>
                seite.10.marks.SPRACHWAHL.2.wrap = <li><a href="|.html?&L=2">English</a></li>

# Englisch           
        [globalVar = GP:L=2]
                seite.10.marks.SPRACHWAHL.1.wrap = <li><a href="|.html?&L=0">Deutsch</a></li>
                seite.10.marks.SPRACHWAHL.2.wrap = <li><a href="|.html?&L=1">Français</a></li>
        [global]
               
# #################################################################

Einiges habe ich auch noch Ergänzt. Am besten testst Du den Code.

Was mich etwas stutzig macht ist dass mit dem "SimultateStatic". Ich benutze keines und kann daher auch nicht meine Erfahrungen damit, hier posten. Falls es mit dem obigen Code nicht funktioniert, schalte doch "SimultateStatic" mal ab. Und teste es nochmals.

Falls es aber trotzem funktioniert, kannst Du die einzelnen Optionen wie zB. Java wieder einschalten bzw den "#" davor löschen.

Gebe doch rasch ein Feedback.

Gruss Daffy

daffyduck ·

Hi Jonas

Eventuell könnte aus an den mehreren "[globalVar = GP:L=*]" gelegen haben, oder aber an der "config {...}". Ich habe diese mal ausgeklammert.

Probier mal folgenden Code:

# ###############################################
#  Grundlegende Konfigurationen:


# Den Seiten-Cache jeweils um Mitternacht leeren
        config.cache_clearAtMidnight = 1
       
# E-Mail Verschlüsselung aktivieren
        config.spamProtectEmailAddresses = 2
        config.spamProtectEmailAddresses_atSubst = (at)

# xhtml aktivieren     
        config.doctype = xhtml_trans
        config.xhtml_cleaning = all
        config.htmlTag_langKey = {$doc_sprache}
        config.doctypeSwitch = {$doctypesw_cond}

#  Admin Panel on / off
        config.admPanel = 1
       
# JavaScript entfernen
#       config.removeDefaultJS = 1
       
# Typo3-Kommentare ausschalten
        config.disablePrefixComment = 1

# HTML-HEADER-TEXT
        config.headerComment = {$NetCon_Info}
       
# SimulateStaticDocuments aktivieren
        config.simulateStaticDocuments = 1
        config.simulateStaticDocuments_noTypeIfNoTitle = 1


# ####################################
# Konfiguration für Mehrsprachigkeit

#       config.uniqueLinkVars = 1
#       config.sys_language_mode = content_fallback

        plugin.tx_rlmplanguagedetection_pi1.defaultLanguageUid = 0

        config.sys_language_uid = 0
        config.language = de
        config.linkVars = L


# Standardsprache Deutsch
        [globalVar = GP:L=0]
        config.sys_language_uid = 0
        config.language = de
#       config.locale_all = de_DE
        seite.10.marks.SPRACHWAHL = COA
        seite.10.marks.SPRACHWAHL.1 = TEXT
        seite.10.marks.SPRACHWAHL.1.field =  alias // uid
        seite.10.marks.SPRACHWAHL.1.wrap = <li><a href="|.html?&L=1">Français</a></li>   
        seite.10.marks.SPRACHWAHL.2 = TEXT
        seite.10.marks.SPRACHWAHL.2.field = alias // uid
        seite.10.marks.SPRACHWAHL.2.wrap = <li><a href="|.html?&L=2">English</a></li>
        [global]

# Französisch
        [globalVar = GP:L=1]
        config.sys_language_uid = 1
        config.language = fr
#       config.locale_all = fr_FR
        seite.10.marks.SPRACHWAHL.1.wrap = <li><a href="|.html?&L=0">Deutsch</a></li>
        seite.10.marks.SPRACHWAHL.2.wrap = <li><a href="|.html?&L=2">English</a></li>
        [global]

# Englisch           
        [globalVar = GP:L=2]
        config.sys_language_uid = 2
        config.language = en
#       config.locale_all = english
        seite.10.marks.SPRACHWAHL.1.wrap = <li><a href="|.html?&L=0">Deutsch</a></li>
        seite.10.marks.SPRACHWAHL.2.wrap = <li><a href="|.html?&L=1">Français</a></li>
        [global]

# #################################################################

Gruss Daffy

daffyduck ·

Lösung der Spracherkennung ohne Extension

Damit das Leiden ein Ende hat habe ich die Spracherkennung folgendermassen gelösst:
1. Typo3 in einen Ordner installiert
2. index.php mit dem Script weiter unten ins Root-Verzeichnis geladen
3. PHP Länder-Einträge (HTTP_ACCEPT_LANGUAGE) auf dem Server kontrolliert (phpinfo)

Code für index.php:

<?php
$browser = $_SERVER["HTTP_ACCEPT_LANGUAGE"];
$lang = substr($browser,0,2);

if($lang == "en") {
echo header('Location: http://www.url.ch/ordner/index.php?id=1&L=0');
}
elseif($lang == "de") {
echo header('Location: http://www.url.ch/ordner/index.php?id=1&L=1');
}
?>

Das Script kann beliebig mit Sprachen ergänzt werden. Nicht vergessen auch Serverseitig die Sprachen zu konfigurieren.

Wenn Ihr Typo3 nicht in einem Ordner istalliert habt geht dies natürlich auch. Damit Ihr die index.php von Typo3 aber nicht überschreibt, könnt Ihr für das Script einen anderen Namen nehmen und diesen in der .htaccess - Datei ansteuern.

Der Code dazu kann so aussehen:
DirectoryIndex deinedatei.php index.php index.html

Gruss Daffy

Gernott ·

Ich habe das Problem gelöst!

Der Grund ist, daß die rlmplanguagedetection bei mir nie eingebunden wurde. Denn dies passiert "automatisch". Funktioniert aber nicht, wenn die page nicht "page" heißt.

So stehts im Object Browser:
page.1000 =< plugin.tx_rlmplanguagedetection_pi1

In meinem Beispiel heißt die page aber "seite". Ich habe somit im Setup Feld folgendes eingetragen:
seite.1000 =< plugin.tx_rlmplanguagedetection_pi1

und es klappt.
Ich hoffe ich kann damit weiterhelfen :-)

jonas8 ·

Hello Gernott

Super, hat es doch noch einer rausgefunden.

Mit diesen Änderungen im Setup funktionierts nun auch bei mir

seite.1000 = < plugin.tx_rlmplanguagedetection_pi1
plugin.tx_rlmplanguagedetection_pi1.defaultLang = de

vorher hatte ich es mit PHP gelöst.
zuerst eine datei start.php mit dem inhalt:

<?php

	$browser = $_SERVER["HTTP_ACCEPT_LANGUAGE"];
	$lang = substr($browser,0,2);

	if($lang == "de") {
		echo header('Location: http://www.lightimaging.ch/index.php?id=1&L=0');
	}
	
	elseif($lang == "fr") {
		echo header('Location: http://www.lightimaging.ch/index.php?id=1&L=1');
	}
	
	elseif($lang == "en") {
		echo header('Location: http://www.lightimaging.ch/index.php?id=1&L=2');
	}

?>

und im .htaccess noch diese Zeile hinzugefügt:

DirectoryIndex start.php index.php index.html index.htm

gruss an alle :o