Webseite 2-Sprachig

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

  • Webseite 2-Sprachig

    Hallo liebe PHP Profis!

    Bitte verweis mich nicht auf die Suchfunktion dieses Forum, dessen bin ich mir bewusst. Ich habe ca 3 std nach meinem Problem gesucht aber nichts gefunden und da ich noch ein Anfänger in PHP bin, ist es für mich ziehmlich schwer eure Sprache zu verstehen.


    Folgendes Problem:
    - Ich habe ein javascript programmiert, indem ich gerne 2 Grafikbuttone einbinden würde. Diese sollen einmal eine DE Flagge und eine EN Flagge sein. Über diese beiden Flaggen sollen die beiden Sprachen geschaltet werden.

    - Fernerhin möchte ich keine DB mehr benutzen, da mir keine mehr zur Verfügung steht. Die Texte sollen in Dateien stehen.

    Ich würde folgenden Quellcode verwenden:

    In allen Index.php dateien:

    Im Header Bereich:
    switch ($lang) {
    default: include("lang_de.php");
    break;
    case "de": include("lang_de.php");
    break;
    case "en": include("lang_en.php");
    break;
    }


    An den Positionen, wo die Texte aufgerufen werden sollen:
    <H3><?php echo $info[5]; ?></H3>
    <P>
    <?php echo $info[0]; ?><BR>
    <?php echo $info[1]; ?><br>
    <?php echo $info[2]; ?><br>
    <?php echo $info[3]; ?><br>
    <?php echo $info[4]; ?></P>

    <H3><?php echo $allgemeininfo[0]; ?></H3>
    <LI><A href="link.de"><?php echo $allgemeininfo[1]; ?></A>
    <LI><A href="link.de"><?php echo $allgemeininfo[2]; ?></A>
    <LI><A href="link.de"><?php echo $allgemeininfo[3]; ?></A>
    <LI><A href="link.de"><?php echo $allgemeininfo[4]; ?></A>




    In den Dateien, wo die Texte stehen (index_de.php):
    <?php

    global $info;
    global $allgemeininfo;



    $info=array(
    //0
    //0
    "Text1",
    //1
    "Text2",
    //2
    "Text3",
    //3
    "Text4",
    //4
    "Text5",
    //5
    "Text6",
    );

    $allgemeininfo=array(
    //0
    //0
    "Text1",
    //1
    "Text2",
    //2
    "Text3",
    //3
    "Text4",
    //4
    "Text5",
    //5
    "Text6",
    );
    ?>


    In den Dateien, wo die Texte stehen (index_en.php):
    <?php

    global $info;
    global $allgemeininfo;



    $info=array(
    //0
    //0
    "Text1 (en)",
    //1
    "Text2 (en)",
    //2
    "Text3 (en)",
    //3
    "Text4 (en)",
    //4
    "Text5 (en)",
    //5
    "Text6 (en)",
    );

    $allgemeininfo=array(
    //0
    //0
    "Text1 (en)",
    //1
    "Text2 (en)",
    //2
    "Text3 (en)",
    //3
    "Text4 (en)",
    //4
    "Text5 (en)",
    //5
    "Text6 (en)",
    );
    ?>



    Links für die Flaggen
    ich hätte auf jeder Flagge den Link mit dem Parameter domäne/inde.php?$lang=en bzw de gesetzt. Zudem gibts noch ein weiteres Problem. Ich möchte wenn der User sich auf einer Unterseite befindet und er die Sprache umstellt nicht immer wieder auf die Startseite geleitet wird sondern er dort bleibt wo er gerade ist.
    Das geht nicht mit einem absoluten Link oder so, da ich immer wieder die gleiche java navi einbinde! Also ich habe eine java navi für alle templates die ich von root einbinde. Gibt es da noch ein Weg, die aktuelle URL zwischen zu speicher, um immer wieder dort zu bleiben? Ich weiß schon das das geht nur wie?

    Eins weiß ich noch (hoffe es ist richtig) man muss damit die Sprache auch auf den weiteren Subseiten so bleibt, wie man sie eingestellt hat, den Link parameter ?$lang hinter der url mit angeben.


    Jetzt bekomme ich bei verschiedenen Varianten Fehlermeldungen bzw der Text wird gar nicht angezeigt. Ich vermute das liegt daran, dass die Varaiblen nicht als Global definiert wurden.?

    Kann es auch vielleicht sein, dass es mit dem javascript Probleme gibt? Ich weiß ja das java clientseitig ausgeführt wird und php Serverseitig. Es ist doch aber eigentlich nur eine Übergabe.?

    Hat jemand einen Lösungsvorschlag, ich wäre euch echt sehr dankbar.

    Und bitte nich sauer sein, da schon wieder so ein Beitrag geöffnet wurde. Ich habe wirklich lange gesucht und viel probiert.
    Viele Grüße
    Zuletzt geändert von noob_in_php; 04.05.2007, 01:23.

  • #2
    Zum einen "register_globals" ... also lieber $_GET["lang"] verwenden.

    Zum anderen:
    PHP-Code:
    switch ($lang) {
        default:
            include(
    "lang_de.php");
            break;
        case 
    "de":
            include(
    "lang_de.php");
            break;
        case 
    "en":
            include(
    "lang_en.php");
            break;

    da gehört "default:" als letztes !
    PHP-Code:
    switch ($_GET["lang"]) {
        case 
    "de":
            include(
    "lang_de.php");
            break;
        case 
    "en":
            include(
    "lang_en.php");
            break;
        default:
            include(
    "lang_de.php");
            break;

    carpe noctem

    [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
    [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

    Kommentar


    • #3
      hey =)
      dein default sollte als letztes stehen
      PHP-Code:
      switch ($_GET["lang"]) {
          case 
      "de":
              include(
      "lang_de.php");
              break;
          case 
      "en":
              include(
      "lang_en.php");
              break;
          default: 
      // hier her ;P
              
      include("lang_de.php");
              break;


      tipp: kannst mal $_SESSION['lang'] eventuell einbinden,
      so wird die sprache die gewählt wurde als session gespeichert bis der user seinen
      browser schliesst bzw die seite verlässt.
      ein vorschlag wäre von mir zB

      index.php
      PHP-Code:
      <?php
      if ( !isset($_SESSION['lang']) )
      {
      include(
      "lang_en.php");
      $_SESSION['lang'] = "en";
      }
      else
      {
      include(
      "lang_".$_SESSION['lang'].".php");
      }
      ?>

      <a href="/action.php?lang=de">Deutsch</a> - <a href="/action.php?lang=en">English</a>

      action.php
      PHP-Code:
      <?php
      session_start
      ();

      if ( isset(
      $_REQUEST['lang']) )
      {
      $_SESSION['lang'] = $_REQUEST['lang'];
      header("Location: " .$_SERVER['HTTP_REFERER']);
      }
      else
      {
      header("Location: " .$_SERVER['HTTP_REFERER']);
      }
      ?>
      der user klickt auf den link, und wird nach action.php gebracht,
      dort wird geprüft was der user als request gewählt hat,
      dann wird das in eine session gespeichert udn der user wird
      zurück transportiert zur index.php die in der gewählten sprache dargestellt wird.

      wenn es weiterhilft =)

      EDIT:
      hmm ok goth war schneller mit dem default =o)
      -wissen was mann weiss und wissen was mann nicht weiss, das allein ist wissen...und eine stärke der FRAUEN!!! ;P- </n(R)icola>

      Kommentar


      • #4
        Mach Dir nichts draus ... waren ja nur 26 Minuten ...
        carpe noctem

        [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
        [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

        Kommentar


        • #5
          Ich verwende aktuell folgendes snippet in einem Projekt:

          PHP-Code:
              $default_lang 'de';
              
          $default_time time()+3600*24*365;
              
              
          $lang $_GET["lang"];
              if(
          $lang) {
                  if(
          file_exists("language/".$lang.".php")) { 
                      
          setcookie("lang"$lang$default_time);
                      include 
          'language/'.$lang.".php"
                  } else {
                      
          setcookie("lang"$default_lang$default_time);
                      include 
          'language/'.$default_lang.".php";
                  }
              } else {
                  if(
          file_exists("language/".$_COOKIE["lang"].".php")) {
                      include 
          'language/'.$_COOKIE["lang"].".php";
                  } else {
                      
          setcookie("lang"$default_lang$default_time);
                      include 
          'language/'.$default_lang.".php";
                  }
              } 
          Man könnte das ganze auch noch so erweitern, dass das Script die Herkunft des Users ermittelt und dementsprechend die Standardsprache setzt.


          Gruß,
          Div

          Kommentar


          • #6
            Original geschrieben von goth
            Mach Dir nichts draus ... waren ja nur 26 Minuten ...
            =P aber du hast nicht mittendrin hunger bekommen und
            hast dir denn was zue ssen gemacht oder ? ^^ xD
            -wissen was mann weiss und wissen was mann nicht weiss, das allein ist wissen...und eine stärke der FRAUEN!!! ;P- </n(R)icola>

            Kommentar


            • #7
              Vielen Dank erstmal für eure Hilfe! Ich versuche es sofort einzubauen und werde euch berichten was bei rausgekommen ist.

              Gibt es vielleicht Probleme mit den Sessions? Denn es wird schon eine Session für das Login erstellt. Ich bin benutze für meine Seite auch ein Forum und dessen Login script benutze ich auch für die Startseite. Dort lese ich gewisse Userdaten aus um sie in der Startseite anzeigen.

              Ich werds trotzdem mal so probieren. Was ist mit der action.php? die lege ich einfach auf root und gebe im Link: http://www.domäne.de/action.php an?

              Und noch was: sind die sachen in den text dateien so richtig gewesen?


              viele grüße

              Kommentar


              • #8
                @Ricola:
                Hast du Kapazitäten frei, bzgl. eines Designs? Wie sieht's mit Referenzen aus?
                Habe ein gut besuchtes Portal, das noch etwas verschöndert werden sollte, falls Interesse besteht.

                OT:
                Meine Pizza ist gleich fertig...hamham..

                EDIT:
                In der Sprachfile sollte sowas in der Art stehen:

                PHP-Code:
                $lang["welcome"] = "Willkommen";
                $lang["username"] = "Benutzername";
                usw
                Zuletzt geändert von DivDax; 04.05.2007, 03:54.

                Kommentar


                • #9
                  Original geschrieben von noob_in_php
                  Gibt es vielleicht Probleme mit den Sessions?
                  Denn es wird schon eine Session für das Login erstellt.
                  Ich bin benutze für meine Seite auch ein Forum und dessen
                  Login script benutze ich auch für die Startseite.
                  Dort lese ich gewisse Userdaten aus um sie in der Startseite anzeigen.
                  wenn du keine namens-konflikte haben solltest dann nicht.

                  Original geschrieben von noob_in_php
                  Was ist mit der action.php? die lege ich einfach auf root und
                  gebe im Link: http://www.domäne.de/action.php
                  ja root =)
                  -wissen was mann weiss und wissen was mann nicht weiss, das allein ist wissen...und eine stärke der FRAUEN!!! ;P- </n(R)icola>

                  Kommentar


                  • #10
                    Original geschrieben von DivDax
                    @Ricola:
                    Hast du Kapazitäten frei, bzgl. eines Designs?
                    Wie sieht's mit Referenzen aus?
                    Habe ein gut besuchtes Portal, das noch etwas verschöndert
                    werden sollte, falls Interesse besteht.
                    also wenn ich die zeit wieder aufbringe, kann ich mal reinschauen und
                    sehen was sich machen lässt

                    Original geschrieben von DivDax


                    EDIT:
                    In der Sprachfile sollte sowas in der Art stehen:

                    PHP-Code:
                    $lang["welcome"] = "Willkommen";
                    $lang["username"] = "Benutzername";
                    usw
                    das hab ich leider vergessen zu schreiben >.<

                    ps: guten hunger ^^ =P
                    -wissen was mann weiss und wissen was mann nicht weiss, das allein ist wissen...und eine stärke der FRAUEN!!! ;P- </n(R)icola>

                    Kommentar


                    • #11
                      @Ricola
                      Adde mich doch mal eben per ICQ/Skype, damit wir nicht den ganzen Thread zuspammen müssen.
                      icq: 81825580
                      skype: divmedia

                      Gute Arbeit wird auch dementsprechend entlohnt.

                      Kommentar


                      • #12
                        Also habe folgendes probiert:

                        in index.php

                        <?php


                        switch ($_GET["lang"]) {
                        case "de":
                        include("http://www.meinedomäne.de/lang_de.php");
                        break;
                        case "en":
                        include("http://www.meinedomäne.de/lang_en.php");
                        break;
                        default:
                        include("http://www.meinedomäne.de/lang_de.php");
                        break;
                        }

                        ?>

                        das steht dort wo ich die texte auslesen möchte
                        <H3><?php echo $info[5]; ?></H3>
                        <P>
                        <?php echo $info[0]; ?><BR>
                        <?php echo $info[1]; ?><br>
                        <?php echo $info[2]; ?><br>
                        <?php echo $info[3]; ?><br>
                        <?php echo $info[4]; ?></P>

                        <H3><?php echo $allgemeininfo[0]; ?></H3>
                        <LI><A href="link.de"><?php echo $allgemeininfo[1]; ?></A>
                        <LI><A href="link.de"><?php echo $allgemeininfo[2]; ?></A>
                        <LI><A href="link.de"><?php echo $allgemeininfo[3]; ?></A>
                        <LI><A href="link.de"><?php echo $allgemeininfo[4]; ?></A>
                        </LI></UL>


                        und die lang_de.php und lang_de.php:
                        <?php

                        register_globals $firmeninfo;
                        register_globals $algemeininfo;



                        $info=array(
                        //0
                        //0
                        "Text",
                        //1
                        "Text",
                        //2
                        "Text",
                        //3
                        "Text",
                        //4
                        "Text",
                        //5
                        "Text",
                        );

                        $allgemeininfo=array(
                        //0
                        //0
                        "Text",
                        //1
                        "Text",
                        //2
                        "Text",
                        //3
                        "Text",
                        //4
                        "Text",
                        );
                        ?>

                        So bekomme ich eine Fehlermeldung wegen unzulässiger T_Variable oder so. Wenn ich das register_global rausnehme dann wird kein Text angezeigt.

                        Ich versuchs gerad nochmal mit der 2. Lösung.
                        Zuletzt geändert von noob_in_php; 04.05.2007, 04:34.

                        Kommentar


                        • #13
                          Original geschrieben von Ricola
                          =P aber du hast nicht mittendrin hunger bekommen und
                          hast dir denn was zue ssen gemacht oder ? ^^ xD
                          Nein ... bin auf Diät ... da gibt's um diese Zeit nix mehr ...
                          carpe noctem

                          [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                          [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                          Kommentar


                          • #14
                            2. Versuch ist mir auch misglückt.

                            folgendes hab ich erstellt:
                            in index

                            <?php
                            if ( !isset($_SESSION['lang']) )
                            {
                            include("http://www.meinedomäne.de/lang_en.php");
                            $_SESSION['lang'] = "en";
                            }
                            else
                            {
                            include("lang_".$_SESSION['lang'].".php");
                            }

                            ?>

                            <a href="/action.php?lang=de">Deutsch</a> - <a href="/action.php?lang=en">English</a>

                            die action.php hab ich erstellt und in den gleichen ordner gelegt.

                            default wird kein text angezeigt! wenn ich jetzt auf ein link klicke dann steht die angeforderte seite kann nicht angezeigt werden.

                            ?? Entweder bin ich nicht auf trapp oder oder ich bin da nicht auf trapp!?

                            Was ist falsch beide vorschläge funktionieren nicht. ich denke weil ICH da irgendwas noch vergesse oder nicht verstehe!!

                            Wäre schön wenn mir jemand das nochmal schildert wie der syntax in den dateien aussehen soll. wie gesagt habe die:
                            - index dateien wo der text eingelesen wird
                            - die text dateien selber
                            - die links für den sprachwechsel
                            - der syntax für die daten auslesen (<? php echo $info[1]; ?>

                            Ich hoffe ich bekomms noch hin! wird das auch gern können..

                            Kommentar


                            • #15
                              Sorry, aber ich sags zum letzen mal:
                              Bitte setze deinen PHP-Code in einen PHP-Tag -> Forenregeln.


                              Warum verlinkst du auf action.php wenn die auswahl der Sprache in der index.php steht?

                              Wenn die Datei lang_en.php im selben Ordner liegt, warum nicht eine relative Pfadangabe?
                              PHP-Code:
                              include("http://www.meinedomäne.de/lang_en.php"); 
                              Zuletzt geändert von DivDax; 04.05.2007, 04:43.

                              Kommentar

                              Lädt...
                              X