WebsiteBaker Support (2.13.x) > Hilfe & Support (deutsch)
Form-Modul und mpForm senden nur auf Seiten in Primärsprache
masju:
Ich habe gerade noch herausgefunden:
Es liegt nicht am Form-Modul, sondern an der Übermittlung von Formularen per POST im Allgemeinen. Ich habe den <form></form>-Abschnitt im Quelltext in eine eigene WYSIWYG-Section gepackt, und auch hier derselbe Effekt.
Und jetzt kommt's: Ich habe in den Einstellungen die Option "Eingangsseite" gewählt und hier eine Sprachweiche eingebaut, die beim Aufruf der index.php per header auf die jeweilige Sprachunterseite umleitet:
--- Code: ---<?php
// Verfügbare Sprachunterseiten (z.B. 'de' für Deutsch, 'en' für Englisch)
$available_languages = ['es', 'de', 'en', 'fr'];
// Funktion zum Extrahieren der bevorzugten Sprache
function getPreferredLanguage($available_languages) {
if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
// Liste der Sprachen aus dem Header holen und aufsplitten
$languages = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
foreach ($languages as $lang) {
// Nur den Sprachcode (z.B. 'de' oder 'en') extrahieren
$lang_code = substr($lang, 0, 2);
// Prüfen, ob die Sprache verfügbar ist
if (in_array($lang_code, $available_languages)) {
return $lang_code;
}
}
}
// Standardmäßig auf Englisch setzen, falls keine passende Sprache gefunden wird
return 'en';
}
// Bevorzugte Sprache des Besuchers ermitteln
$user_language = getPreferredLanguage($available_languages);
// Weiterleitung auf die entsprechende Unterseite mit einem switch
switch ($user_language) {
case 'es':
header("Location: [...]/pg/es/inicio.php"); // Spanisch
break;
case 'de':
header("Location: [...]/pg/de/startseite.php"); // Deutsch
break;
case 'en':
header("Location: [...]/pg/en/home.php"); // Englisch
break;
case 'fr':
header("Location: [...]/pg/fr/accueil.php"); // Französisch
break;
default:
header("Location: [...]/en/home.php"); // Fallback auf Englisch
break;
}
?>
--- End code ---
Und jetzt das Wunder von Bern: Schalte ich die Startseite (intro.php) ab, ist alles okay.
Gruß,
masju
sternchen8875:
Du machst mich fertig.... :-D :-D :-D
benenn mal ein paar der Variablen um, einige werden im Core schon verwendet, $lang, $user_language usw
masju:
(Y)
Variablen geändert in
--- Code: ---<?php
// Verfügbare Sprachunterseiten (z.B. 'de' für Deutsch, 'en' für Englisch)
$my_available_languages = ['es', 'de', 'en', 'fr'];
// Funktion zum Extrahieren der bevorzugten Sprache
function getPreferredLanguage($my_available_languages) {
if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
// Liste der Sprachen aus dem Header holen und aufsplitten
$my_languages = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
foreach ($my_languages as $my_lang) {
// Nur den Sprachcode (z.B. 'de' oder 'en') extrahieren
$my_lang_code = substr($my_lang, 0, 2);
// Prüfen, ob die Sprache verfügbar ist
if (in_array($my_lang_code, $my_available_languages)) {
return $my_lang_code;
}
}
}
// Standardmäßig auf Englisch setzen, falls keine passende Sprache gefunden wird
return 'en';
}
// Bevorzugte Sprache des Besuchers ermitteln
$my_user_language = getPreferredLanguage($my_available_languages);
// Weiterleitung auf die entsprechende Unterseite mit einem switch-Block
switch ($my_user_language) {
case 'es':
header("Location: /pg/es/inicio.php"); // Spanisch
break;
case 'de':
header("Location: /pg/de/startseite.php"); // Deutsch
break;
case 'en':
header("Location: /pg/en/home.php"); // Englisch
break;
case 'fr':
header("Location: /pg/fr/accueil.php"); // Französisch
break;
default:
header("Location: /pg/en/home.php"); // Fallback auf Englisch
break;
}
?>
--- End code ---
Noch kein Success.
Seltsam, dass es auf dem gespiegelten Server trotzdem lief.
sternchen8875:
Ging schneller als erwartet bei Doc, Donnerstag früh gehts weiter...
lass dir die Sprachen mal ausgeben mit
--- Code: ---var_dump($_SERVER['HTTP_ACCEPT_LANGUAGE']);
--- End code ---
vielleicht auch auf dem zweiten Server, um mögliche Unterschiede zu sehen
P.S.: noch ein Tip am Rande: ist ist empfehlenswert, bei solchen Tests immer den Browsercache zu löschen
masju:
var_dump($_SERVER['HTTP_ACCEPT_LANGUAG E']); ist bei beiden Installationen gleich:
string(23) "de,en-US;q=0.7,en;q=0.3"
string(23) "de,en-US;q=0.7,en;q=0.3"
(Browser-Cache ist gelöscht)
In der Sprachweiche habe ich nochmal komplett die Variablen geändert, keine Änderung.
--- Quote ---<?php
// Verfügbare Sprachunterseiten (z.B. 'de' für Deutsch, 'en' für Englisch)
$meine_available_languages = ['es', 'de', 'en', 'fr'];
// Funktion zum Extrahieren der bevorzugten Sprache
function getPreferredLanguag e($meine_available_languages) {
if (isset($_SERVER['HTTP_ACCEPT_LANGUAG E'])) {
// Liste der Sprachen aus dem Header holen und aufsplitten
$meine_languages = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAG E']);
foreach ($meine_languages as $meine_lang) {
// Nur den Sprachcode (z.B. 'de' oder 'en') extrahieren
$meine_lang_code = substr($meine_lang, 0, 2);
// Prüfen, ob die Sprache verfügbar ist
if (in_array($meine_lang_code, $meine_available_languages)) {
return $meine_lang_code;
}
}
}
// Standardmäßig auf Englisch setzen, falls keine passende Sprache gefunden wird
return 'en';
}
// Bevorzugte Sprache des Besuchers ermitteln
$meine_user_language = getPreferredLanguag e($meine_available_languages);
// Weiterleitung auf die entsprechende Unterseite mit einem switch-Block
switch ($meine_user_language) {
case 'es':
header("Location: [...]/pg/es/inicio.php"); // Spanisch
break;
case 'de':
header("Location: [...]/pg/de/startseite.php"); // Deutsch
break;
case 'en':
header("Location: [...]/pg/en/home.php"); // Englisch
break;
case 'fr':
header("Location: [...]/pg/fr/accueil.php"); // Französisch
break;
default:
header("Location: [...]/pg/en/home.php"); // Fallback auf Englisch
break;
}
?>
--- End quote ---
PS: Wie mache ich den Cursor im Code-Modul und auch in den Droplets wieder sichtbar?
(Hinweis: code macht in diesem Forum aus dem einfachen Hochkomma immer ', deswegen habe ich quote genommen)
Navigation
[0] Message Index
[#] Next page
[*] Previous page
Go to full version