Sprache auswählen

Schon festgestellt? Dem Forum sind gerade alle Interaktionsmöglichkeiten genommen. :(

Mehr dazu unter: Abstimmung über das Forum

  • Hey Leute,


    da ich meine Seite auf Englisch gestaltet habe, liegt es im großen Interesse an mir diese auch auf Deutsch zu gestalten.
    Frage jetzt, wie kann ich es am ökonomischsten realisieren das dieses Vorhaben nicht zu viel Platz auf meinem Webspace einnimmt. Dachte im Moment an das einfachste und zwar 2 Verionen der Seite zu erstellen.
    Ist dies überhaupt mit PHP realisierbar?
    Oder müsste ich das mit neuen StyleSheet machen?


    Danke im Vorraus

  • "revils" schrieb:

    Frage jetzt, wie kann ich es am ökonomischsten realisieren das dieses Vorhaben nicht zu viel Platz auf meinem Webspace einnimmt.

    "revils" schrieb:

    Dachte im Moment an das einfachste und zwar 2 Verionen der Seite zu erstellen.

    Gibt es eine Möglichkeit, die noch mehr Speicher fressen würde? :D

    "revils" schrieb:

    Ist dies überhaupt mit PHP realisierbar?


    ..indirekt, ich würde aber bei 2 Versionen dir einfach empfehlen alle Datein zu markieren und zu kopieren (:


    "revils" schrieb:

    Oder müsste ich das mit neuen StyleSheet machen?


    Natürlich :D Genau dafür legen wir ja Stylesheets an [: Steuert die Sprache der Ausgabe ^__^


    So, jetzt mal ernsthaft.. natürlich brauchst du nur 1 Stylesheet, denn schließlich gibt es eine Strickte Trennung von Inhalt und Darstellung.
    Und nun kannst du entweder einen Ordner de und einen Ordner en (o. nur einen de) anlegen und dort die Sachen rein kopieren und einfach die Sätze im Code übersetzen.. oder du müsstest deinen gesamten Code überarbeiten.
    Die 2Möglichkeit sähe dann so aus, dass du dann z.B. eine Funktion schreibst, die ein Array übergeben bekommt, wo der Text einmal auf Deutsch und einmal auf Englisch drin steht. Die Funktion entscheidet dann, welcher Text ausgegeben wird.
    Oder du arbeitest sogar mit Datenbanken (wo du auch noch eine Funktion brauchst, da kommt aber einfach nur der Englische-Text rein). Du lässt die Funktion dann entscheiden ob er in der Datenbank nach der Übersetztung dafür suchen soll oder einfach den englischen Text zurück geben kann.

  • Jaja, dass mit den 2 Versionen war mehr so ein Gedankengang...der hätte vor dem Satz davor kommen müssen^^


    Ich weiß nicht ob das zu viel verlangt ist, aber könntest du mir dabei helfen ein Beispiel dieser Array-Funktion zu erarbeiten?
    Ich denke das ich dann selbst jeweils das anpassen kann.


    Ich glaube das müsste sogar mit Session gemacht werden...das am Anfang ein Link gedrückt wird, der eine Session startet, die den Inhalt der Sprache enthält. Und sobald die Seite verlassen wird, wird die Session beendet.
    Könnte das so richtig sein?

  • Entweder wir arbeiten über eine Session/Cookie oder über einen Get-Wert.
    Aber am einfachsten dürfte wirklich die Session-Methode sein.


    Du benötigst auf deiner Seite einfach ein Formular wo du die Sprache wählen kannst, hier wird eine Datei angesteuert in der über das Value ein Session-Wert einträgst und dann den Besucher wieder via header zurück schickst^^
    Und die Funktion sieht so aus, dass du z.B. den Sessionwert einfach in den Key des Arrays einfügst( $meinArray[$_SESSION['lang']] ), nachschaust ob dieser Wert existiert und ihn zurück gibst.. fertig :/

  • Das ist ich müsste in meine #div Inhalt jeweils die jenige Sessionvariable mich echo ausgeben?


    Frage,


    wie prüfe ich diesen Arraywert?
    wie gebe ich ihn aus?

  • Nein?


    wir haben ein Formular

    PHP
    1. <form id="changeLang" methode="post" action="changeLang.php">
    2. <select name="lang" onchange="document.getElementById("changeLang").submit();">
    3. <option selected="selected">choose Language</option>
    4. <option value="en">English</option>
    5. <option value="de">Deutsch</option>
    6. </select>
    7. <input type="hidden" name="backlink" value="<?php echo $_SERVER['PHP_SELF']; ?>" />
    8. </form>


    Die Datei die aufgerufen wird:

    PHP
    1. <span class="syntaxdefault">session_start</span><span class="syntaxkeyword">();<br /><br /></span><span class="syntaxdefault">$_SESSION</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'lang'</span><span class="syntaxkeyword">]</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'lang'</span><span class="syntaxkeyword">];<br /><br /></span><span class="syntaxdefault">header</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"location: "</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">.</span><span class="syntaxdefault"> $_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'backlink'</span><span class="syntaxkeyword">]);<br />exit();</span><span class="syntaxdefault"> </span>


    Und so sollte ein Array aussehen und die Funktion:

    PHP
    1. <span class="syntaxdefault"></span><span class="syntaxkeyword">array(<br /></span><span class="syntaxdefault">    </span><span class="syntaxstring">"en"</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">=></span><span class="syntaxdefault"> </span><span class="syntaxstring">"Welcome to my site!"</span><span class="syntaxkeyword">,<br /></span><span class="syntaxdefault">    </span><span class="syntaxstring">"de"</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">=></span><span class="syntaxdefault"> </span><span class="syntaxstring">"Willkommen auf meiner Seite!"<br /></span><span class="syntaxkeyword">);<br /><br /></span><span class="syntaxdefault">function selectLanguage</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">array $content</span><span class="syntaxkeyword">){<br /></span><span class="syntaxdefault">    if</span><span class="syntaxkeyword">(isset(</span><span class="syntaxdefault">$content</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">$_SESSION</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'lang'</span><span class="syntaxkeyword">]])){<br /></span><span class="syntaxdefault">        return $content</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">$_SESSION</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'lang'</span><span class="syntaxkeyword">]];<br /></span><span class="syntaxdefault">    </span><span class="syntaxkeyword">}</span><span class="syntaxdefault"> else </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">        return current</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$content</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">    </span><span class="syntaxkeyword">}<br />}</span><span class="syntaxdefault"> </span>


    Aufgerufen wird die Funktion dann

    PHP
    1. <span class="syntaxdefault"><br /><br />echo selectLanguage</span><span class="syntaxkeyword">(array(<br /></span><span class="syntaxdefault">                          </span><span class="syntaxstring">"en"</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">=></span><span class="syntaxdefault"> </span><span class="syntaxstring">"Welcome"</span><span class="syntaxkeyword">,<br /></span><span class="syntaxdefault">                          </span><span class="syntaxstring">"de"</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">=></span><span class="syntaxdefault"> </span><span class="syntaxstring">"Willkommen"<br /></span><span class="syntaxdefault">                          </span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">                   </span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault"> </span>
  • Das heißt dann im Grunde das der Inhalt mit


    Code
    1. echo selectLanguage(array(
    2. "en" => "Welcome",
    3. "de" => "Willkommen"
    4. )
    5. );


    ergänzt wird und da wo "en" steht dann der englische Text reinkommt und für "de" der deutsche?

  • Danke sehr. Aber das weiß ich schon.


    Bei mir wird


    Code
    1. onchange="document.getElementById("changeLang").submit();">


    angemozt.


    Kann es sein das bei ("changeLang") die "" zuviel sind?

  • Stimmt xD
    Sry, es müssten natürlich nur einfache Anführungszeichen sein :P
    Ist mir als ich den Code hier einfach ausm Kopf getippt habe nicht aufgefallen^^

  • Ich bin echt nicht so der checker.


    Was genau kommt in die changeLang.php rein


    Also auf jeden Fall mal


  • Und das war es an für sich auch schon..
    Unser Vorgehen soll ja so aussehen:
    -> Besucher wählt Sprache aus, Formular schickt sich selber ab
    --> Datei die angesprochen wird speichert Sprachwahl und leitet anschließend zurück
    ---> Server spuckt die Seite wieder aufs neue aus, aber dieses mal mit der ausgewählten Sprache

  • Achso..also dann so


    bsp


    Am Anfang des <body>


    Code
    1. function selectLanguage(array $content){
    2. if(isset($content[$_SESSION['lang']])){
    3. return $content[$_SESSION['lang']];
    4. } else {
    5. return current($content);
    6. }


    div mit den Texten

  • Fehlermeldung


    The requested URL /< was not found on this server.


    Hat wohl was damit zutun...ich glaube das Backlink

  • hmpf.. -.-
    Welcher Wert steht in dem hidden-Feld?


    wieso leitet dein Server dich bei / nicht auf die Startseite? ._.
    Ansonsten schreib mal bitte in den header() noch deine seite (<!-- m --><a class="postlink" href="http://www.blabliblub.de">http://www.blabliblub.de</a><!-- m -->) ein


    Edit: also volständig etwa so:

    PHP
    1. <span class="syntaxdefault">header</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"loaction: http://www.deineSeite.de" </span><span class="syntaxkeyword">. </span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'backlink'</span><span class="syntaxkeyword">]); </span><span class="syntaxdefault"></span>
  • Also Local klappt bei mir alles super.. dir ist schon bewusst, dass du auf deiner normalen Seite ganz am anfang deines Codes auch session_start() aufrufen musst?

  • Der hat ein Problem mit


    PHP
    1. <form id="changeLang" method="post" action="changeLang.php">
    2. <select name="lang" onchange="document.getElementById('changeLang').submit();">
    3. <option selected="selected">choose Language</option>
    4. <option value="en">English</option>
    5. <option value="de">Deutsch</option>
    6. </select>
    7. <input type="hidden" name="backlink" value="<?php echo $_SERVER['PHP_SELF'];?>" />
    8. </form>


    Es sieht bei mir im Moment so aus