• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Spracherkennung

Hesoyam

Neues Mitglied
Hallo,

ich arbeite an einer Seite für meinen Bruder.
Da er viel in Kolumbien unterwegs ist und die Seite auch über seine Studienarbeiten und über die Kolumbianische Organisation seiner Freundin sein soll, soll diese Seite 3-Sprachig sein:
- Deutsch
- Englisch
- Spanisch

Ist es möglich auf einfachem weg das Script erkennen zu lassen, welche Sprache der Aufzurufende nutzt?
Wenn ja, dann sollen die Seiten immer mit den Einstellungen für bsp. Deutsch geladen werden. Zudem möchte ich, dass man die Sprache wechseln kann (habe ich schon einigermassen hinbekommen)

Wenn das nicht geht, dann soll Automatisch immer Deutsch geladen werden. Dann kann der User die Sprache wechseln und dann sollen wieder ALLE Seiten in der jeweiligen Sprache aufgerufen werden.

Ich habe es leider derzeit noch nicht geschafft, dass jede Seite immer mit der angegebenen Sprache angezeigt wird.
Habe das mit der Sprache wechseln so eingerichtet, dass es über
PHP:
index.php?lng=de
angegeben wird.

Ich hoffe das ihr mir helfen könnt, da ich die Seite wirklich gerne dreisprachig haben möchte.

ich bin mir im übrigen auch nicht zu schade selber etwas z erarbeiten, also wenn ihr mir ein tutorial empfehlen könnt oder mir eine art Anleitung geben könnt, kein Problem, das erarbeite ich dann selber, aber ich habe leider nichts diesbezüglich gefunden.

Grüsse
und danke im vorraus
 
Werbung:
Du speicherst Dir die gewünschte Sprache einfach in einem Cookie/einer Session.
Die Sprache würde ich auswählen lassen und nicht aus dem Browser auslesen (JavaScript), weil die Browsersprache nicht zwangsläufig mit der bevorzugten Sprache des Users übereinstimmen muss.
 
Probiers mal hiermit, das script ermittelt die eingestellte Sprache des Browsers.... Für Nutzer im Internetcafe, in anderen Ländern ist das natürlich wiederrum problematisch, da muss man halt doch noch Links auf der Seite zu den verschiedenen Sprachen einstellen, wie Efchen schon sagte!

PHP:
<?php
// Browsersprache ermitteln
function lang_getfrombrowser ($allowed_languages, $default_language, $lang_variable = null, $strict_mode = true) {
// $_SERVER['HTTP_ACCEPT_LANGUAGE'] verwenden, wenn keine Sprachvariable mitgegeben wurde
if ($lang_variable === null) {
$lang_variable = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
}
// wurde irgendwelche Information mitgeschickt?
if (empty($lang_variable)) {
// Nein? => Standardsprache zurückgeben
return $default_language;
}
// Den Header auftrennen
$accepted_languages = preg_split('/,\s*/', $lang_variable);
// Die Standardwerte einstellen
$current_lang = $default_language;
$current_q = 0;
// Nun alle mitgegebenen Sprachen abarbeiten
foreach ($accepted_languages as $accepted_language) {
// Alle Infos über diese Sprache rausholen
$res = preg_match ('/^([a-z]{1,8}(?:-[a-z]{1,8})*)'.
'(?:;\s*q=(0(?:\.[0-9]{1,3})?|1(?:\.0{1,3})?))?$/i', $accepted_language, $matches);
// war die Syntax gültig?
if (!$res) {
// Nein? Dann ignorieren
continue;
}
// Sprachcode holen und dann sofort in die Einzelteile trennen
$lang_code = explode ('-', $matches[1]);
// Wurde eine Qualität mitgegeben?
if (isset($matches[2])) {
// die Qualität benutzen
$lang_quality = (float)$matches[2];
} else {
// Kompabilitätsmodus: Qualität 1 annehmen
$lang_quality = 1.0;
}
// Bis der Sprachcode leer ist...
while (count ($lang_code)) {
// mal sehen, ob der Sprachcode angeboten wird
if (in_array (strtolower (join ('-', $lang_code)), $allowed_languages)) {
// Qualität anschauen
if ($lang_quality > $current_q) {
// diese Sprache verwenden
$current_lang = strtolower (join ('-', $lang_code));
$current_q = $lang_quality;
// Hier die innere while-Schleife verlassen
break;
}
}
// Wenn wir im strengen Modus sind, die Sprache nicht versuchen zu minimalisieren
if ($strict_mode) {
// innere While-Schleife aufbrechen
break;
}
// den rechtesten Teil des Sprachcodes abschneiden
array_pop ($lang_code);
}
}
// die gefundene Sprache zurückgeben
return $current_lang;
}
//ende selfhtml -> Zeilenanganben löschen!
?>
<?php
$allowed_langs = array ('de', 'en' , 'el');
$lang = lang_getfrombrowser ($allowed_langs, 'en', null, false);
switch ($lang) {
case 'de' :
header("Location: http://www.deineseite/deutsch/"); /* Browser umleiten auf deutsche Startseite */
exit;
case 'es' :
header("Location: http://www.deineseite/spanisch/"); /* Browser umleiten auf spanische Startseite */
exit;
case 'en' :
header("Location:  http://www.deineseite/englisch/"); /* Browser umleiten auf Englische Startseite*/
exit;
default:
header("Location:  http://www.deineseite/standard/"); /* Browser umleiten auf standard-Startseite*/
exit;
}
?>
 
Werbung:
Cool, danke
ich probiers dann mal aus und hoffe, dass ich es so umsetzen kann.

Ich habe natürlich auf meiner Seite, in einer Include-Datei, eine Auswahlmöglichkeit mit den entsprechenden Länderflaggen (Deutschland, Kolumbien - für Spanisch, und GB/USA für englisch)

Das muss ich ja dann noch umschreiben, dass es auf deine Version passt.

Danke an webhosting24 - Login für deinen Code und danke an Efchen wegen dem Cookie, aber leider kann ich das nur mit Hilfe eines php-Buches und leider passieren mir dabei doch noch zuviele Fehler.
Danke trotzdem ^^

Achja PS:
Da soll ich in jede Datei einfügen oder (via inc-datei)??
danke
 
Zuletzt bearbeitet:
Schreib doch den Code von nascituruz um und nicht deinen. Aber ist ja eigentlich egal.

Den Code fügst du mit der Include function ein.
Oder du kannst ihn einfach an deinen anhängen.

MfG Speider
 
ja, ich habe den Code auf die erste Index-Seite gesetzt und mein Script so angepasst, dass es nicht mehr mit
PHP:
?l=de
funktioniert, sondern mit
HTML:
htttp://www.meineseite.de/de/

Danke dennoch und noch viel erfolg ^^
 
Werbung:
Zurück
Oben