Sprachen Switch bei dynamisch erzeugten Results

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

  • Sprachen Switch bei dynamisch erzeugten Results

    Hallo,
    ich programiere eine Suchmaske mit recht aufwendigen Suchmöglichkeiten wie und/oder von/bis mit Templates.
    Die Ergebnislisten (also dynamisch erstellt) sollen "stehen bleiben", wenn die Sprache gewechselt wird. Der Sprachwechsel erfolgt mit der üblichen Funktion
    if($_SESSION['setLang']=='de')
    {
    $template = get_file_as_string($base['template_de']);
    }
    if($_SESSION['setLang']=='en')
    {
    $template = get_file_as_string($base['template_en']);
    }
    Ich löse das "Problem", in dem ich über die URL beim Sprachenswitch die Werte der Suchfelder den entsprechenden Funktionen übergebe.
    Hier ein kleines Beispiel:

    if($_SESSION['setLang']=='de')
    {
    $nav.="<a href='index.php?cmd=titlexp&amp;title=$_POST[title]&amp;author=$_POST[author]&amp;setLang=en'>English</a><br>";
    }
    return $nav;


    Dies ist einerseits aufwendig, anderseits nicht sehr elegant. Gibt es eine andere Lösung?

    Grüße
    Kathrin

  • #2
    was steht in $template ?
    Slava
    bituniverse.com

    Kommentar


    • #3
      In dem $templates steht der HTML Code.
      In diesem Fall deutsch/englisch. Sie werden in der
      base.inc.php geladen
      $base['template_en'] = 'templates/main_en.htm';
      $base['template_de'] = 'templates/main_de.htm';

      und in der index.php aufgerufen

      if($_SESSION['setLang']=='de')
      { $template = get_file_as_string($base['template_de']);
      } if($_SESSION['setLang']=='en')
      { $template = get_file_as_string($base['template_en']);
      }

      Der Link zum switschen per URL steht in der func.inc.php
      //hier en Ausschnitt
      if($show=='1')
      {
      if($_SESSION['setLang']=='en')
      {
      $nav.="<a href='index.php?setLang=de'>Deutsch</a><br>";
      }
      if($_SESSION['setLang']=='de')
      {
      $nav.="<a href='index.php?cmd=titlexp&amp;title=$_POST[title]&amp;author=$_POST[author]&amp;setLang=en'>English</a><br>";
      }
      return $nav;
      }

      und wird in der index.php übergeben, sowie der Anhang der Url in dem ich per cmd=titlexp die anhängenden Werte der Funktion titlexp übergebe, die ebenfalls in der index.php aufgerufen wird. Sie starten erneut die Suche mit den übergebenen Werten und gibt sie in der gewählten Sprache erneut aus.
      Die Texte des Formulars/Ergebnisliste stehen in de.php oder en.php

      index.php
      #Change lang
      switch($_SESSION['setLang'])
      { case"de":
      include('lang/de.php');
      break;
      case"en":
      include('lang/en.php');
      break;
      }
      $base['shortnav']= $base['actual'].
      $base['shortnav'].=show_lang($show,$com);


      case 'titlexp':
      $base['content']='<h4>'.$base['actual'].'
      <i>'.$lang['content']['Kurz-Titel'].'</i></h4>';
      $base['content'].=load_content_titlexp($title,$author);
      break;

      Das Prinzip ist also ganz traditionelle aufgebaut. Das switchen über die URL und die Übergabe der Werte für die erneute Suche funktioniert auch problemlos,
      aber es ist einfach nicht elegant, deshalb meine Frage nach einer besseren Lösung.

      Viele Grüße
      Kathrin

      Kommentar


      • #4
        ich finde der Einsatz nicht besonders gut.
        die Html-Inhalt bei template_de und template_en unterscheidet sich nur durch ein paar texte, aber die html-struktur ist doch gleich.
        aus diesem grund muss du einfach die platzhalter bzw mit dem echo von variablen arbeiten und zur Laufzeit die werte von platzhalter oder variablen dynamisch für eine oder andere Sprache zu ersetzen.
        Beispiel mit variablen:
        PHP-Code:
        datei lang/de_index.php
        <?php
        $inhalt
        =array();
        $inhalt['title']='Titel deutsch';
        $inhalt['sprache']='Deutsch';
        $inhalt['fremdsprache']='Englisch';
        $inhalt['gruss']='Hallo Welt';
        -------------
        datei lang/en_index.php
        $inhalt
        =array();
        $inhalt['title']='Titel englisch';
        $inhalt['sprache']='Englisch';
        $inhalt['fremdsprache']='Germany';
        $inhalt['gruss']='Halo Word';
        -------------
        datei index_tpl.php
        <html>
        <
        head><title><?php echo $inhalt['title']; ?></title></head>
        <body>
        <?php echo $inhalt['gruss']; ?>
        .....
        <a href="<?php echo $link"><php echo $inhalt['fremdsprache'];</a>
        <br />
        </body>
        </html>
        ---------------
        datei index.php
        $spr='de';
        if(isset(
        $_SESSION['setLang']) && 
        strlen(
        $_SESSION['setLang'])==2 &&
        file_exists('lang/'.
        $_SESSION['setLang'].'_index.php'))
        {
         
        $spr=$_SESSION['setLang'];
         
        $link=".......";

        include "
        lang/$spr_index.php";
        include "
        index_tpl.php";
        Slava
        bituniverse.com

        Kommentar


        • #5
          Bitte die PHP-Tags benutzen!
          Den Code schaut sich doch so keiner an...

          Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

          bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
          Wie man Fragen richtig stellt

          Kommentar


          • #6
            Danke für die Rückmeldung.
            Der Code sieht für mich sehr ähnlich aus, wie meiner...
            Es geht mir darum das ich, dass, wenn ich meine Ergebnisse einer Datenbankabfrage ausgegeben habe auf den Englisch "Button" klicken kann und die Ergebnisse stehen bleiben und die Texte auf englisch stehen. Z.Z. Wechsle ich die Sprache, verschwindet die Ergebnisliste, da sie dynamisch erzeugt wurde und der Aufruf der Funktion zum Sprachenwechsel wie ein Reset wirkt.... und nur der Text ist englisch z.B. vom Suchformular.
            Ich habe das Dilema versucht so zu lösen, indem ich über die den Aufruf der Funktion zum Sprachenwechsel gleichzeitig die Werte der Abfragen übergeben und die Suche nocheinmal gestartet habe......
            und das find ich so unelegant..

            Viele Grüße
            Kathrin

            Kommentar


            • #7
              Original geschrieben von lucy_und_snoopy
              Ich habe das Dilema versucht so zu lösen, indem ich über die den Aufruf der Funktion zum Sprachenwechsel gleichzeitig die Werte der Abfragen übergeben und die Suche nocheinmal gestartet habe......
              und das find ich so unelegant..
              was stört dich denn daran?dass die werte im url-sichtbar sind?
              dann könntest du die letzten suchparameter z.b. in einer session oder den sprachwechsel als formular mit hidden feldern gestalten.

              ansonsten kann ich daran nichts "unelegantes" finden, wobei selbst google alles per get durchreicht.

              Kommentar


              • #8
                An hidden habe ich nicht gedacht.......

                Danke für die Antwort.

                Grüße
                Kathrin

                Kommentar

                Lädt...
                X