Mfrank: Schon wieder "Mehrsprachigkeit"

Hallo

Nachdem mir hier eben so schön und schnell geholfen wurde, versuch ich's einfach nochmal ;-)
Je nach Klick auf eine Landesflagge wird die Variable "$lang" auf d oder e gesetzt....
In einer Extra-Datei wollte ich nun die Sprachvariablen festlegen und je nach Wert von $lang (also d oder e) mit Inhalt füllen.
Das sieht bei mir so aus:

<?
if($lang ="d")
$info1 = "Auto";
else {
$info1 = "car";
}
?>

In einer anderen Datei wird dann einfach $info1 ausgegeben, also:
echo $info1;

Mache ich einen Denk-, oder Syntaxfehler an dieser Stelle ?

Achja... wäre vielleicht noch sinnvoll zu erwähnen:
****************************************************
if(!isset($_GET["lang"])||$_GET["lang"]=="d")
{
 $sprache = "<a href="seite.php?lang=e"><img src='images/flag_g_e.gif' width='60' height='24' border='0' alt='switch language'></a>";
}
else {
 $sprache = "<a href="seite.php?lang=d"><img src='images/flag_e_g.gif' width='60' height='24' border='0' alt='Sprache wechseln'></a>";
}
include ("language.php");
*****************************************************
So wird's aufgerufen, wobei language.php der Quelltext von Oben (Auto/car) ist...
Kann mir bitte wieder jemand helfen ?

Danke

Gruss
Frank

  1. Hallo Frank,

    <?
    if($lang ="d")

    den Fehler habe ich auch schon gemacht und ewig gebraucht um den zu finden :)
    du musst zwischen $lang und "d" zwei Gleichzeichen machen also so "if($lang=="d")" sonst wird der variablen der Wert "d" zugewiesen und die Bedingung wird immer true.

    $info1 = "Auto";
    else {
    $info1 = "car";
    }
    ?>

    In einer anderen Datei wird dann einfach $info1 ausgegeben, also:
    echo $info1;

    wenn meine Vermutung richtig ist, gibt $info1 immer "Auto" oder?

    wenn du $lang weiterverwenden willst, musst du es in der abfrage erstnochmal setzten:

    if(!isset($_GET["lang"])||$_GET["lang"]=="d")
    {

    $lang = "d"; //ist vor allem wichtig, wenn $lang noch nicht gesetzt war

    $sprache = "<a href="seite.php?lang=e"><img src='images/flag_g_e.gif' width='60' height='24' border='0' alt='switch language'></a>";
    }
    else {

    $lang = "e"; //ist nicht unbedingt notwendig

    $sprache = "<a href="seite.php?lang=d"><img src='images/flag_e_g.gif' width='60' height='24' border='0' alt='Sprache wechseln'></a>";
    }
    include ("language.php");

    Kann mir bitte wieder jemand helfen ?

    sicher, aber du hättest auch im alten Thread nochmal fragen können - der wird durchaus noch gelesen.

    Danke

    Bitte!

    gruß
    Tobias

    1. Hallo Tobias

      du musst zwischen $lang und "d" zwei Gleichzeichen machen also so "if($lang=="d")" sonst wird der variablen der Wert "d" zugewiesen und die Bedingung wird immer true.

      aha ;-)

      wenn meine Vermutung richtig ist, gibt $info1 immer "Auto" oder?

      yapp *g*

      sicher, aber du hättest auch im alten Thread nochmal fragen können - der wird durchaus noch gelesen.

      Ok... beim nächsten mal ;-)

      Riesen Danke !!!!!!

      Gruss
      Frank

    2. Hallo

      wenn du $lang weiterverwenden willst, musst du es in der abfrage erstnochmal setzten:

      if(!isset($_GET["lang"])||$_GET["lang"]=="d")
      {
          $lang = "d"; //ist vor allem wichtig, wenn $lang noch nicht gesetzt war

      Versteh' ich nicht.. ?!
      In der aufrufenden Datei steht doch schon:

      if(!isset($_GET["lang"])||$_GET["lang"]=="d")

      ....
      Er fängt jetzt aber immer mit Englisch an... wenn ich zu "englisch" wechsel passiert nichts und beim erneuten Wechsel auf "deutsch" gibt er alles korrekt in deutsch aus !?

      Hilfe ?

      Danke !

      Gruss
      Frank

      1. Hallo

        wenn du $lang weiterverwenden willst, musst du es in der abfrage erstnochmal setzten:

        if(!isset($_GET["lang"])||$_GET["lang"]=="d")
        {
            $lang = "d"; //ist vor allem wichtig, wenn $lang noch nicht gesetzt war

        Versteh' ich nicht.. ?!
        In der aufrufenden Datei steht doch schon:

        if(!isset($_GET["lang"])||$_GET["lang"]=="d")

        hier prüft er nur ob die Variable $lang gesetzt ist oder ob sie "d" enthält. Es wir daber kein Wert zugewiesen.

        Er fängt jetzt aber immer mit Englisch an... wenn ich zu "englisch" wechsel passiert nichts und beim erneuten Wechsel auf "deutsch" gibt er alles korrekt in deutsch aus !?

        wenn in der ersten if-Abfrage dann kein $lang gesetzt wird (und vorher auch keins gesetzt war) ist die zweite Bedingung false also wird der zweite Teil ausgeführt -> englisch

        hier nochmal der code wie es funktioniert (nicht das wir aneinander vorbeireden):
        <?
        $lang = $_GET["lang"];
        if(!isset($lang)||$lang=="d")
        {
         $lang = "d";
         $sprache = "<a href="test.php?lang=e">switch language</a>";
        }
        else {
         $sprache = "<a href="test.php?lang=d">Sprache wechseln</a>";
        }
        if($lang=="d")
        $info1 = "Auto";
        else {
        $info1 = "car";
        }
        ?>
        (Bilder gekürzt, alles in eine Datei eingefügt und den $_GET-Kram vereinfacht)

        gruß
        Tobias

        1. Hallo Tobias

          ...meine Herrn... hier lern ich ja noch richtig was *g*

          Daaankeeee !!!

          Darf ich dein Foto in meinen Tabernakel stellen ;-)) ?

          Gruss
          Frank

          1. hi

            ...meine Herrn... hier lern ich ja noch richtig was *g*

            Da bin ich froh wenn ich auch mal jemandem helfen (bzw. was beibringen kann) kann. :)

            Daaankeeee !!!

            Biiitteeee!!! :)

            Darf ich dein Foto in meinen Tabernakel stellen ;-)) ?

            wuahhhh - woher hast du mein Foto - Meine Homepageadresse habe ich doch noch nie angegeben... oh mist doch einmal... :) nur ist da kein Foto von mir drauf *schweißvonderstirnwisch*

            gruß
            Tobias *scnr*

            1. hr hr hr
              *g*
              Witzeclown ...

        2. Hallo nochmal !

          Jetzt hast du mir schon so weit geholfen und ich Ei mach alles in drei Sekunden kaputt *g*
          Um das Ganze etwas übersichtlicher zu halten, wollte ich die jeweiligen Dateien in einen "Sprachordner" schieben - hab ich auch gemacht ;-)
          Alles englische liegt nun in Ordner "e", alles deutsche in Ordner "d".
          Dementsprechend muss ich natürlich die links im Menü anpassen...
          Da dachte ich mir, ich hab doch die variable $lang, die entweder mit e oder d gefüllt ist und kann diese doch dann auch im link zur Pfadangabe nutzen !?
          Naja.... Theoroie und Praxis *g*
          So sieht der link aus:
          **********************
          <a href='seite.php?main=";echo $lang;"/info.php'>menuepunkt</a>
          **********************
          Geht so nicht !?

          Wenn ich dich nochmal bemühen dürfte ? *g*

          Danke

          Gruss
          Frank

          1. Hallo

            So sieht der link aus:

            versteh ich das richtig? der Link soll so ausehen: "seite.php?main=d/info.php" - wenn ja dann solltest du das besser anders machen, da sonst jede beliebige Seite eingebunden werden kann (steht auch was dazu im Archiv). Du solltest es also besser (etwa) so machen: seite.php?main=d und dann in der seite.php die d/info.php einbinden (oder so ähnlich zumindest...). (wenn ich Unsinn erzähle möge man mich bitte korrigieren)

            <a href='seite.php?main=";echo $lang;"/info.php'>menuepunkt</a>

            steht das in einem echo-Bereich?
            Wenn ja, werden Zeichenketten mit Punkten verknüpft (ein echo brauch man auch nicht) - die Zeile muss also so aussehen:
            echo "<a href='seite.php?main=".$lang."/info.php'>menuepunkt</a>";
            wenn nicht, muss die Zeile so aussehen:
            <a href='seite.php?main=<? echo $lang; ?>/info.php'>menuepunkt</a>

            Geht so nicht !?

            nein, mit einem Strichpunkt ist die Zeile beendet (wenn es ein echo-Bereich ist).

            Wenn ich dich nochmal bemühen dürfte ? *g*

            ich komme mit meinem eigenen krempel kaum weiter... :)

            gruß
            Tobias

            1. Hallo

              versteh ich das richtig? der Link soll so ausehen: "seite.php?main=d/info.php"

              ja...

              steht das in einem echo-Bereich?

              ja...

              Wenn ja, werden Zeichenketten mit Punkten verknüpft (ein echo brauch man auch nicht) - die Zeile muss also so aussehen:
              echo "<a href='seite.php?main=".$lang."/info.php'>menuepunkt</a>";

              hmm.. nööö... hatte ich auch schon probiert ...
              trotzdem Danke ;-)

              Wenn ich dich nochmal bemühen dürfte ? *g*
              ich komme mit meinem eigenen krempel kaum weiter... :)

              ups... bin dann jetzt ruhig - bis morgen *g*

              Gruss & n8
              Frank

              1. Hallo

                versteh ich das richtig? der Link soll so ausehen: "seite.php?main=d/info.php"
                ja...                                                         ^

                |

                Wenn ja, werden Zeichenketten mit Punkten verknüpft (ein echo brauch man auch nicht) - die Zeile muss also so aussehen:                               |
                echo "<a href='seite.php?main=".$lang."/info.php'>menuepunkt</a>";
                hmm.. nööö... hatte ich auch schon probiert ...               |

                bei mir sieht er aber genau so aus ------------------------------+
                zumindest wenn $lang einen Wert hat... (sonst fehlt das "d" vor /info.php)
                vielleicht schickst du mir mal das script (mail siehe oben)

                gruß
                Tobias

                1. Hallo Tobias

                  ...ich versteh jetzt grad nich was du meinst.
                  Ich list mal alles auf (für den Überblick)

                  Aufruf der seite über "seite.php"
                  seite.php ist eine einfache Tabelle die sich ihre Inhalte zusammensucht
                  -----------------------------------------
                  |                   top.php             |
                  -----------------------------------------
                  |          |                            |
                  | navi.php |      main.php              |
                  |          |                            |
                  |          |                            |
                  |          |                            |
                  -----------------------------------------

                  *** seite.php **********

                  if(!isset($_GET["lang"])||$_GET["lang"]=="d")
                  {
                   $lang = "d";
                   $sprache = "<a href="seite.php?lang=e"><img src='images/flag_g_e.gif' width='60' height='24' border='0' alt='switch language'></a>";
                  }
                  else {
                   $sprache = "<a href="seite.php?lang=d"><img src='images/flag_e_g.gif' width='60' height='24' border='0' alt='Sprache wechseln'></a>";
                  }
                  include ("language.php");

                  *** top.php ************

                  <?
                  echo $sprache;
                  ?>
                  (das Drummherum lass ich mal weg)
                  (bei Klick auf Sprache wird auch brav ins Englische gewechselt)

                  *** main.php ************

                  (interessiert hier gar nicht)

                  *** navi.php ************

                  echo "<tr><td onMouseOver="this.bgColor='#dfe5ac'" onMouseOut="this.bgColor='#DBE9D6'"><a href='seite.php?main=".$ordner."/info.php&pos=fahrzeug'> ";
                  echo $info1;
                  echo "</a></td></tr>";

                  (das ist EIN Menupunkt)
                  $ordner wird in der language.php definiert (also ordner e für english und d für deutsch):
                  <?
                  if($lang == "d") {
                  $ordner ="d";
                  // variablen mit deutschem inhalt
                  $info1 = "Auto";
                  ...
                  else {
                  $ordner = "e";
                  // variablen mit englischem inhalt
                  $info1 = "car";
                  ...
                  *************************************************************
                  Soweit zur Theorie... wie gesagt, ein Klick auf $sprache (also auf das jeweils angezeigte Bild) ändert die das Bild selbst und die Sprache. ... gut
                  Bei Klick auf $info1 wird in den passenden "Sprachordner" gewechselt ... auch gut...
                  Aaaaber gleichzeitig wird alles andere auf deutsch zurückgestellt !?
                  Also
                  1. seite.php lädt deutsch ... ok
                  2. klick auf $sprache - seite wechselt ins engliche ... ok
                  3.a. klick auf $info1 (jetzt "car") zeigt "car-text" in englisch im main an ... ok
                  3.b. $sprache und $info1 wechseln gleichzeitig jedoch zurück ins deutsche ... warum ?!
                  ***************************************************************
                  So sieht's aus... und ich finde keinen logischen Fehler (syntaktisch müsste ja alles ok sein *g*)

                  Wer kann helfen, wer weiss was ???

                  Danke

                  Gruss
                  Frank

                  1. Hallo Frank

                    echo "<tr><td onMouseOver="[...]" onMouseOut="[....]">
                    <a href='seite.php?main=".$ordner."/info.php&pos=fahrzeug'> ";

                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                    ich glaube hier liegt der fehler: du übergibst $lang nicht -> er wechselt wieder auf "d"
                    deine Vorgehensweise ist aber sehr kompliziert - um da draufzukommen (ich hoffe das das der Fehler ist) habe ich ewig gebraucht - allerdings dürfte meine Vorgehensweise auch nicht einfach sein... :)

                    gruß
                    Tobias

                    1. Hallöchen Tobias

                      lang wird nicht übergeben, aber wie soll ich das machen ?

                      <a href='seite.php?main=".$ordner."/info.php&lan=WAS&pos=fahrzeug'>

                      Wieso muss lang neu gesetzt werden ?
                      lang wird doch schon beim Seitenaufruf gesetzt !?

                      Ich versteh's einfach nicht  :((((

                      Gruss
                      Frank

                      1. hi

                        lang wird nicht übergeben, aber wie soll ich das machen ?

                        <a href='seite.php?main=".$ordner."/info.php&lan=WAS&pos=fahrzeug'>

                        ^^ da fehlt noch ein "g"

                        Wieso muss lang neu gesetzt werden ?
                        lang wird doch schon beim Seitenaufruf gesetzt !?

                        wenn lang nicht gesetzt ist (was in dem alten Link der Fall war) wird die Variable gesetzt aber nicht auf "e" sondern immer auf "d" - egal was sonst eingebunden wird.

                        gruß
                        Tobias

                        1. Hallo

                          <a href='seite.php?main=".$ordner."/info.php&lan=WAS&pos=fahrzeug'>
                                                                            ^^ da fehlt noch ein "g"

                          zu schnell getippt ;-)

                          wenn lang nicht gesetzt ist (was in dem alten Link der Fall war) wird die Variable gesetzt aber nicht auf "e" sondern immer auf "d" - egal was sonst eingebunden wird.

                          DAS versteh ich eben nicht...
                          In seite.php frag ich doch ob $lang gesetzt ist !?
                          if(!isset($_GET["lang"])||$_GET["lang"]=="d")
                          {
                           $lang = "d";
                           $sprache = "<a href="seite.php?lang=e"><img src='images/flag_g_e.gif' width='60' height='24' border='0' alt='switch language'></a>";
                          }
                          else {
                           $lang = "e";
                           $sprache = "<a href="seite.php?lang=d"><img src='images/flag_e_g.gif' width='60' height='24' border='0' alt='Sprache wechseln'></a>";
                          }

                          Sobald ich also einmal auf die Grafik geklickt habe, wird $lang="e" gesetzt... Dann wird die Grafik gewechselt und das Menue in englisch angezeigt...
                          Wenn ich jetzt einen Menuepunkt anklicke wird "seite.php" mit der Variable aus dem Menuepunkt neu geladen. Das heisst, der Menuepunkt verweist auch auf den richtigen (nämlich den englischen) Text.
                          Gleichzeitig wird jedoch das Menue wieder deutsch und die Flaggen-Grafik wechselt zurück. Das dürfte doch eigentlich nicht geschehen, da ich mit dem "if(!isset.." $lang doch nur dann den Wert "d" zuordne, wenn $lang nicht bereits gesetzt ist !? Und $lang steht doch auf "e"... sonst würde der Text ja auch nicht auf englisch angezeigt werden dürfen !?

                          Ich schmeiss gleich alles aus'm Fenster :(((

                          WO zum Geier ist der (Denk)Fehler ??

                          Danke

                          Gruss
                          Frank

                          1. wie blöd bin ich eigentlich ??????????
                            <a href="seite.php?lang=$lang">
                            das war alles !
                            maaahhh.......
                            Riesen Danke nochmal für all die Tips und Erklärungen !!!

                            Gruss
                            Frank

                            1. Hallo,

                              jetzt wo dus hast, könntest du uns ja freundlicherweise auch mal die Adresse sagen, für die hier so hart gearbeitet wurde *g*

                              Schöne Grüsse,
                              Dave