Ankündigung

Einklappen
Keine Ankündigung bisher.

Problem mit Mehrsprachauswahl - Fehlerhaftes PHP-Skript?

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Problem mit Mehrsprachauswahl - Fehlerhaftes PHP-Skript?

    Schönen guten Morgen,

    zum Sachverhalt: Wir haben eine mehrsprachige Unternehmens-Homepage, auf der man aus einer Dropdown-Liste eine von 13 festgelegten Sprachen auswählen kann und die Homepage daraufhin in dieser gewählten Sprache angezeigt wird. Die Inhalte der einzelnen Sprachen sind im Typo3 angelegt. Definiert sind die Sprachen in einer language.ts. Die Funktionalität, die jeweilige Seite in einer gewählten Sprache anzuzeigen, liegt in einer language.php. Das Problem ist nur, dass wenn man nun die Sprache gewechselt hat und eine andere Seite auf der Homepage aufruft, sich die Sprache dann wieder auf die Standardsprache (Deutsch) umstellt. Ich habe die Vermutung, dass die ausgewählte Sprache schlichtweg nicht in einer Variable gespeichert wird, nur leider habe ich KEINE! Ahnung von PHP und auch nicht die Zeit mich da jetzt schnell einzuarbeiten und die fehlerhaften Programmierungen meiner Vorgänger zu verbessern/korrigieren! Ich hoffe wirklich, dass nur eine der language-Dateien den Fehler verursacht und jemand von euch mit vorhandenem Wissen weiterhelfen kann. So sind die einzelnen Sprachen in der language.ts definiert (eine nach der anderen mit entsprechenden IDs):

    Code:
    [globalVar = GP:lang = en]
      config.sys_language_uid = 1
      config.language = en
    [end]
    Und so sieht die language.php aus:

    PHP-Code:
    <?php

    $query 
    strtolower($_SERVER["QUERY_STRING"]);
    parse_str($query$vars);
    $clang $vars["lang"];

    $langs = array(
        
    "de" => "Deutsch",
        
    "en" => "English",
        
    "es" => "Español",
        
    "el" => "ελληνικά",
        
    "hr" => "Hrvatski",
        
    "lt" => "lietuvių",
        
    "hu" => "magyar",
        
    "pl" => "Polski",
        
    "ro" => "Romana",
        
    "ru" => "русский",
        
    "ua" => "україньска",
        
    "tr" => "Türkçe",
        
    "sr" => "српски"
    );

    $opts = array();
    foreach (
    $langs as $id => $name)
    {
        
    $opts[] = "<option ".($clang==$id?"selected ":" ")."value=\"".$id."\">".$name."</option>";
    }

    $langselector "<select onChange=\"document.location='index.php?id=".$GLOBALS["TSFE"]->id."&lang='+this.value;\">".implode("",$opts)."</select>";

    $content $langselector;
    ?>
    Wie schon gesagt: die Zeit drängt und ich habe keine Kenntnisse darin - vom Programmieren generell schon, kenne PHP und die Intentionen der Leute die das Erstellt haben nicht. Ich hoffe wirklich das ihr mir helfen könnt. Vielen Dank!

  • #2
    Hi,

    dieser Code ist einfach zu wenig, -> index.php?id=".$GLOBALS["TSFE"]->id."&lang='+this.value; hier findet vermutlich die Änderung der Sprache statt.

    lg

    Kommentar


    • #3
      Hallo und vielen Dank für deine Antwort!

      Ich habe mir die Homepage gestern genauer angeschaut und mit allen gängigen Browsern in der aktuellsten Version getestet (bevor ich die Frage gestellt habe nur mit Chrome). Es scheint so als würde dieses Problem nur in Chrome und auch nur beim Wechsel von bestimmten Seiten auftreten, denn im Internet Explorer läuft die Seite ohne Probleme.

      Ich denke das Thema hier kann geschlossen werden, weil es wohl kein Fehler in den besagten PHP-Skripten ist. Vielleicht wirklich nur eine Browsereinstellung...trotzdem Danke fürs bemühen

      Kommentar


      • #4
        Da die Sprach-ID dauerhaft gespeichert werden muss, wird sie in einer Session oder Datenbank oder einem mitgeschleppten Hidden-Feld gespeichert.

        Die vierte Möglichkeit wäre in einem Cookie und da der browserseitig abgelehnt werden kann würde ich mal nachschauen, ob Dein Chrome Cookies annimmt.

        Kommentar


        • #5
          Hallo noch mal,

          vorab: das Problem besteht nicht mehr.

          Lösung: Ein Kollege der sich gut mit PHP und Typo3 auskennt hat sich die language.php noch mal angeschaut und eine Leerzeile vor dem ersten "<?php" entdeckt, diese entfernt, im Typo3-Backend den Cache geleert und siehe da...es funktioniert!

          Mag vielleicht nicht die tollste Begründung für eine Problemlösung sein, aber da die Homepage nicht unerheblich wichtig für unsere Kunden bzw. Neukunden ist, kann ich damit gut leben.

          Ich danke euch für euer Bemühen und ihr werdet von mir hören wenn das nächste mal ein Problem auftritt

          Kommentar


          • #6
            In einem solchen Fall hilft die Aktivierung der Fehlerausgabe. Vermutlich konnte die Session nicht initialisiert werden.
            PHP.de Wiki | Headers sent

            Kommentar

            Lädt...
            X