kostenloser Webspace werbefrei: lima-city


Mehrsprachige seite

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    tshaika

    tshaika hat kostenlosen Webspace.

    ih habe php code in internet gefunden und komme nicht weiter bei spacher von php seite

    <?php 
    $lang = $_GET["lang"]; // GET Variable setzen 
    if($lang == "") 
     {  
      $lang = "de"; // Wenn die Variable $lang leer aufgerufen wird, lassen wir uns eine Sprache vor definieren! ( In meinem Beispiel verwende ich Deutsch )  
     } 
    include("lang_".$lang.".php"); // Includieren der lang_de.php, Wenn $lang Variable leer ist! 
    ?> 
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
    <html> 
     <head> 
      <title>Dein Webseiten Name</title> 
      <meta http-equiv="Content-Type"  content="text/html; charset=ISO-8859-1"> 
     </head> 
     <body> 
     <a href="?lang=de">Deutsch</a>  |  <a href="?lang=en">Englisch</a> 
      <p><?php echo $Beispiel ?></p> 
     </body> 
    </html>


    Frage?

    wenn ich seite zum Beilspiel auf Englisch wie soll ich php seite speichern

    die
    ?lang=de
    kann man nicht speichern wegen sonderzeichen
    ?




    Beitrag zuletzt geändert: 12.2.2013 13:59:33 von tshaika
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Als lang_SPRACHKÜRZEL.php
    Beispiele:
    lang_de.php für Deutsch
    lang_en.php für Englisch
  4. m****r

    Hm? Was gibts denn da bitte nicht zu verstehen? Dein Beispiel bindet eine lang_$lang.php ein. Also wenn ?lang=de gesetzt ist, bindest du eine lang_de.php ein. Und wie du jetzt eine Englische Seite abspeichern sollst? Dann natürlich als lang_en.php oder was genau willst du wissen?

    Beitrag zuletzt geändert: 12.2.2013 14:02:37 von midwar
  5. h**s

    das
    ?lang=de
    stellt nicht den dateinamen dar, sondern ist ein get-parameter mit dem die seite aufgerufen werden kann.
    wenn du die seite zb "home.php" nennest kannst die seite auch mit dieser url aufrufen: "home.php?lang=de".
    dann wird normal die seite home.php aufgerufen in der es dann den get-parameter "lang" gibt, mit dem wert "de" - und genau das wird ja auch am anfang deines codes abgefragt...
  6. Autor dieses Themas

    tshaika

    tshaika hat kostenlosen Webspace.

    hcms schrieb:
    das
    ?lang=de
    stellt nicht den dateinamen dar, sondern ist ein get-parameter mit dem die seite aufgerufen werden kann.
    wenn du die seite zb "home.php" nennest kannst die seite auch mit dieser url aufrufen: "home.php?lang=de".
    dann wird normal die seite home.php aufgerufen in der es dann den get-parameter "lang" gibt, mit dem wert "de" - und genau das wird ja auch am anfang deines codes abgefragt...


    du hast mich nicht ganz verstanden

    ich meinte so

    zb

    ich seite die ist in deutsch und heist dann index.php

    dann will ich zB englische seite dann eine Neu seite auf englisch und speichern unter index.php???? das der index.php exestiert schön
  7. m****r

    tshaika schrieb:
    hcms schrieb:
    das
    ?lang=de
    stellt nicht den dateinamen dar, sondern ist ein get-parameter mit dem die seite aufgerufen werden kann.
    wenn du die seite zb "home.php" nennest kannst die seite auch mit dieser url aufrufen: "home.php?lang=de".
    dann wird normal die seite home.php aufgerufen in der es dann den get-parameter "lang" gibt, mit dem wert "de" - und genau das wird ja auch am anfang deines codes abgefragt...


    du hast mich nicht ganz verstanden

    ich meinte so

    zb

    ich seite die ist in deutsch und heist dann index.php

    dann will ich zB englische seite dann eine Neu seite auf englisch und speichern unter index.php???? das der index.php exestiert schön


    Ja das kannst du doch auch alles machen. Mach eine index.php mit zwei Get Variablen. Eine s, die festlegt WELCHE Seite eingebunden wird und eine lang, die festlegt in welcher Sprache die eingebunden wird. Also könnte eine BeispielURL so aussehen: testurl.com/index.php?s=home&lang=de

    Dann würde auf index.php die Seite home eingebunden und zwar in der Sprache Deutsch.

    Das ganze kannst du zum Beispiel so abfragen:

    if(isset($_GET['s']) && isset($_GET['lang'])) {
    $lang = $_GET['lang'];
    $s = $_GET['s'];
    include($s . "_" . $lang . ".php");
    }


    Denk dann noch bitte dran das ganze vernünftig abzusichern, also zu überprüfen, ob in lang und s auch die richtigen Inhalte übergeben wurden.

    Und deine Seiten speicherst du dann ab unter:

    home_de.php
    home_en.php
    impressum_de.php
    impressum_en.php

    Und so weiter..

    Wenn du es noch einfacher haben willst, klatsch die Inhalte in eine Datenbank und les die entsprechend $lang und $s aus.
  8. h**s

    doch doch...

    die aufzurufende seite heißt dann immer index.php

    es wird mittels des o.g. get-parameters unterschieden.

    in der index.php wird dann je nach get-parameter eine andere ressource includiert, also wird entweder die datei "lang_de.php" eingebunden wenn die index.php ganz ohne ?lang aufgerufen wird oder mit ?lang=de
    damit eine andere datei includiert wird musst du die index.php mit entsprechend anderem parameter aufrufen, zb: "index.php?lang=en" dann würde die index.php die datei lang_en.php einfügen...

    natürlich brauchst du dann neben der index.php auch die dateien lang_de.php und lang_en.php
  9. Autor dieses Themas

    tshaika

    tshaika hat kostenlosen Webspace.

    midwar schrieb:
    tshaika schrieb:
    hcms schrieb:
    das
    ?lang=de
    stellt nicht den dateinamen dar, sondern ist ein get-parameter mit dem die seite aufgerufen werden kann.
    wenn du die seite zb "home.php" nennest kannst die seite auch mit dieser url aufrufen: "home.php?lang=de".
    dann wird normal die seite home.php aufgerufen in der es dann den get-parameter "lang" gibt, mit dem wert "de" - und genau das wird ja auch am anfang deines codes abgefragt...


    du hast mich nicht ganz verstanden

    ich meinte so

    zb

    ich seite die ist in deutsch und heist dann index.php

    dann will ich zB englische seite dann eine Neu seite auf englisch und speichern unter index.php???? das der index.php exestiert schön


    Ja das kannst du doch auch alles machen. Mach eine index.php mit zwei Get Variablen. Eine s, die festlegt WELCHE Seite eingebunden wird und eine lang, die festlegt in welcher Sprache die eingebunden wird. Also könnte eine BeispielURL so aussehen: testurl.com/index.php?s=home&lang=de

    Dann würde auf index.php die Seite home eingebunden und zwar in der Sprache Deutsch.

    Das ganze kannst du zum Beispiel so abfragen:

    if(isset($_GET['s']) && isset($_GET['lang'])) {
    $lang = $_GET['lang'];
    $s = $_GET['s'];
    include($s . "_" . $lang . ".php");
    }


    Denk dann noch bitte dran das ganze vernünftig abzusichern, also zu überprüfen, ob in lang und s auch die richtigen Inhalte übergeben wurden.

    Und deine Seiten speicherst du dann ab unter:

    home_de.php
    home_en.php
    impressum_de.php
    impressum_en.php

    Und so weiter..

    Wenn du es noch einfacher haben willst, klatsch die Inhalte in eine Datenbank und les die entsprechend $lang und $s aus.


    und wie sol ich am beste verlinken

    <a   href="        " ><img src="bundesflagge.jpg" width="30" height="20" border="1" alt="">


    Beitrag zuletzt geändert: 12.2.2013 15:05:29 von tshaika
  10. h**s

    zb so:
    <a href="index.php?lang=de"><img src="bundesflagge.jpg" width="30" height="20" border="1" alt=""></a>
    <a href="index.php?lang=en"><img src="unionjack.jpg" width="30" height="20" border="1" alt=""></a>
  11. Autor dieses Themas

    tshaika

    tshaika hat kostenlosen Webspace.

    ach noch eine frage kann mann in FTP ein ordner enlegen zb de für Deutsch en für englisch uns so weiter

    um für bessere uberblick
  12. m****r

    tshaika schrieb:
    midwar schrieb:
    tshaika schrieb:
    hcms schrieb:
    das
    ?lang=de
    stellt nicht den dateinamen dar, sondern ist ein get-parameter mit dem die seite aufgerufen werden kann.
    wenn du die seite zb "home.php" nennest kannst die seite auch mit dieser url aufrufen: "home.php?lang=de".
    dann wird normal die seite home.php aufgerufen in der es dann den get-parameter "lang" gibt, mit dem wert "de" - und genau das wird ja auch am anfang deines codes abgefragt...


    du hast mich nicht ganz verstanden

    ich meinte so

    zb

    ich seite die ist in deutsch und heist dann index.php

    dann will ich zB englische seite dann eine Neu seite auf englisch und speichern unter index.php???? das der index.php exestiert schön


    Ja das kannst du doch auch alles machen. Mach eine index.php mit zwei Get Variablen. Eine s, die festlegt WELCHE Seite eingebunden wird und eine lang, die festlegt in welcher Sprache die eingebunden wird. Also könnte eine BeispielURL so aussehen: testurl.com/index.php?s=home&lang=de

    Dann würde auf index.php die Seite home eingebunden und zwar in der Sprache Deutsch.

    Das ganze kannst du zum Beispiel so abfragen:

    if(isset($_GET['s']) && isset($_GET['lang'])) {
    $lang = $_GET['lang'];
    $s = $_GET['s'];
    include($s . "_" . $lang . ".php");
    }


    Denk dann noch bitte dran das ganze vernünftig abzusichern, also zu überprüfen, ob in lang und s auch die richtigen Inhalte übergeben wurden.

    Und deine Seiten speicherst du dann ab unter:

    home_de.php
    home_en.php
    impressum_de.php
    impressum_en.php

    Und so weiter..

    Wenn du es noch einfacher haben willst, klatsch die Inhalte in eine Datenbank und les die entsprechend $lang und $s aus.


    und wie sol ich am beste verlinken

    <img src="bundesflagge.jpg" width="30" height="20" border="1" alt="">


    Aha, du möchtest also irgendwo Flaggen eingeblendet haben, dann klickt man auf eine Flagge und schon ist die gesamte Homepage in einer anderen Sprache zu sehen. Dann sag das bitte doch. Wenn du mal deine Fragen in vernünftigem Deutsch verfassen würdest, hätte man das viel früher kapiert.

    Zu deiner Frage:
    Entweder du zählst jeden deiner einzelnen Links auf und stellst die jeweilige Flagge dahinter, oder du machst es über Sessions. Ich habe dir oben Schritt für Schritt erklärt wie es geht, wenn du der Anleitung folgst, hast du Links nach dem Muster index.php?s=home&lang=de. Dementsprechend müsstest du, wenn du zwei Sprachen anbieten möchtest den Homelink zweimal einfügen - für jede Sprache einmal - also:

    <a href="index.php?s=home&lang=de">Home <img src="deutsch.png"></a>
    <a href="index.php?s=home&lang=en">Home <img src="englisch.png"></a>


    Wenn du das so machst, hast du zwar viel mehr Links aufzuzählen, aber du kannst das oben von mir aufgeführte Beispiel (welches sehr einfach ist) problemlos übernehmen.

    Die andere Möglichkeit läuft über Sessions: Du definierst eine index.php, die GANZ AM ANFANG guckt, ob

    if(isset($_SESSION['lang']) {
    $lang = $_SESSION['lang'];
    }
    else {
    $lang = "deutsch"; // Standardsprache
    }


    Und dann packst du irgendwo auf deine Seite die Länderflaggen, die wenn du sie anklickst die Session['lang'] auf die jeweilige Sprache setzen. Fertig.
  13. h**s

    klar. im ftp-progrmm deiner wahl (sagen wir filezilla) rechtsklick -> "Verzeichnis erstellen"... ;-)

    dann achte beim include() aber darauf das du den pfad dort auch berücksichtigst:
    include($lang.'/index.php');
    ... die dateien im ordner brauchen dann ja nicht mehr das sprchkürzel im dateinamen.
  14. Autor dieses Themas

    tshaika

    tshaika hat kostenlosen Webspace.

    hcms

    ich hab jetz ftp ordner gemach

    dann heißt dann link

    <a href="ru/index.php?lang=de"><img src="bundesflagge.jpg" width="30" height="20" border="1" alt=""></a>



    Beitrag zuletzt geändert: 12.2.2013 16:03:24 von tshaika
  15. h**s

    nein, der link heißt "index.php?lang=de" - in der datei index.php muss der pfad für den include() angepasst werden (s.o.)...
  16. Autor dieses Themas

    tshaika

    tshaika hat kostenlosen Webspace.

    es immer noch nicht richtig

    die seite heißt

    http://tshaika.lima-city.de/ru/index.flang_ru.php

    und der verlinke mich auf

    http://tshaika.lima-city.de/index.php?lang=ru


  17. h**s

    am besten postest du den code als .txt - ich steig da sonst nicht durch...
  18. Autor dieses Themas

    tshaika

    tshaika hat kostenlosen Webspace.

    also hcms

    Jetz schritt für schritt gesten war soviel das mich dursch anender gebrach

    1 ich hab jetz seite seitenkopf.php

    also brauch dann noch seitenkopf.php

    in 2 sprachen (englisch lassen mal weg)

    seitenkopf.lang_de.php
    seitenkopf. lang_ru.php


    stimmt soweit
  19. m****r

    tshaika schrieb:
    es immer noch nicht richtig

    die seite heißt

    http://tshaika.lima-city.de/ru/index.flang_ru.php

    und der verlinke mich auf

    http://tshaika.lima-city.de/index.php?lang=ru




    Natürlich verlinkt der auf index.php?lang=ru... Index.php ist IMMER die Seite, auf der du dich bewegst - du verlässt niemals die index.php. Jedoch werden abhängig von den gewählten GET Parametern verschiedene Inhalte auf index.php eingebunden. Stell dir vor du möchtest auf deiner index.php Äpfel angezeigt haben und hast in index.php die Abfrage

    if(isset($_GET['frucht']) && $_GET['frucht'] == 'apfel') {
    include("apfel.php");


    Dann wird bei dir auch ein Apfel angezeigt, wenn du index.php mit dem Parameter frucht=apfel aufrufst, was dann so aussieht:

    index.php?frucht=apfel

    So um nun auf dein Problem zurückzukommen:

    Wir haben dir in vorherigen Posts gezeigt wie es geht. Und wenn du unsere Tipps umsetzt, dann hast du eben genau das Erscheinungsbild, wie du es beschrieben hast. http://tshaika.lima-city.de/index.php?lang=ru Bedeutet hier dann einfach, dass du auf der Seite index.php bist, die mit dem Parameter lang=ru aufgerufen wurde, also mit der Einstellung, dass der Benutzer deine Homepage bitte auf Russisch angucken möchte - und wir haben dir auch gesagt, dass du den Link zu index.php mit genau DEM Parameter natürlich nur verlinken sollst, wenn man auf die Russische Flagge klickt. Würde ja wenig Sinn anders machen.

    Was du glaube ich noch nicht begriffen hast, ist, dass du die jeweiligen Seiten nicht als "http://tshaika.lima-city.de/ru/index.flang_ru.php" abspeicherst, sondern immernoch als lang_NAME.php. index.php hat NICHTS im Dateinamen verloren. Zumindest wenn du dich an das von uns vorgeschlagene System hälst.
  20. ich würde eher einen anderen weg vorschlagen, die mehrsprachigkeit einer Seite zu ermöglichen. Es ist aber shcon einie abstraktere Programmierung.


    der Weg, den ich vorschlagen will, ist der weg über Platzhalter. Wenn man eine Mehrsprachige seite macht, indem man denselben Code mehrfach kopiert, bekommt man das Problem, dass man bei Updates diese Änderungen an mehreren Stellen simultan machen muss.

    dazu folgende Lektüre: http://php.net/manual/de/function.define.php


    das würde so aussehen, dass du ein require_once auf die gewählte Sprach-Datei machst. Die sprach-Datei würde dann folgendermaßen aussehen:

    //file: lang_de.php
    define('MENUE', "Men&uuml;");
    define('TEST', "Testeintrag");
    define('IMPRESSUM', "Opossum");
    define('ENTRY_1', "Sinnloser Eintrag");
    define('MSG_OF_THE_DAY', "Nachricht des Tages");
    .
    .
    .
    //eher für die statischen Elemente der Seite, keine Content-Bereiche,
    //die würde ich über Datenbank-blobs lösen


    //file: lang_en.php
    define('MENUE', "Menue");
    define('TEST', "Test-Entry");
    define('IMPRESSUM', "Impressum");
    define('ENTRY_1', "Enrty without any sense");
    define('MSG_OF_THE_DAY', "Message of the Day");
    .
    .
    .


    so, und dann würdest du einfach abfragen über

    //index.php
    
    define('LANG_ROOT', "lang/");
    define('INDEX_ROOT', "/");
    
    
    switch($_SERVER['HTTP_ACCEPT_LANGUAGE'])
    {
      case 'de-DE': require_once(INDEX_ROOT.LANG_ROOT.'lang_de.php'); break;
      case 'en-EN': require_once(INDEX_ROOT.LANG_ROOT.'lang_en.php'); break;
      default: require_once(INDEX_ROOT.LANG_ROOT.'lang_en.php'); break;
    }
    
    //build_page


    und wie du oben siehst, kannst du das dementsprechend verwenden, innerhalb eines HTML-templates müsstest du dann die platzhalter über <?php echo PLATZ_HALTER ?> einfügen. die datei mus dann aber .php endung haben, damit er die php-codes entsprechend ausführt.


    wär ein vorschlag. der vorteil ist, du hast die struktur nur einmal und musst sie entsprechend nur einmal bearbeiten und die gesamte geschichte wird übersichtlicher. wenn du dann noch über eine datenbank gehst, kannst ud sogar abprüfen lassen, ob alle Einträge vorhanden sind.
  21. h**s

    klar gibt es viele verschiedene möglichkeiten dein vorhaben zu realisieren, und der von sebulon hat natürlich seine vorteile aber um den zu erst angesprochenen fall nochmal zu verdeutlichen:

    ordner und dateien auf dem webspace:

    /index.php
    /impressum.php

    /de/
    /de/seitenkopf.php
    /de/index.php
    /de/impressum.php
    /de/seitenfuss.php

    /en/
    /en/seitenkopf.php
    /en/index.php
    /en/impressum.php
    /en/seitenfuss.php

    /ru/
    /ru/seitenkopf.php
    /ru/index.php
    /ru/impressum.php
    /ru/seitenfuss.php


    die index.php würde dann ungefähr so aussehen:
    <?php
    	$standart_sprache = 'de';
    	$verfuegbare_andere_sprachen = array('en','ru');
    	
    	if(isset($_GET['lang']) and in_array($_GET['lang'],$verfuegbare_andere_sprachen)) {
    		$lang = $_GET['lang'];
    	}else {
    		$lang = $standart_sprache;
    	}
    	
    	include($lang.'/seitenkopf.php');
    	include($lang.'/index.php');
    	include($lang.'/seitenfuss.php');
    ?>

    die impressum.php würde dann ungefähr so aussehen:
    <?php
    	$standart_sprache = 'de';
    	$verfuegbare_andere_sprachen = array('en','ru');
    	
    	if(isset($_GET['lang']) and in_array($_GET['lang'],$verfuegbare_andere_sprachen)) {
    		$lang = $_GET['lang'];
    	}else {
    		$lang = $standart_sprache;
    	}
    	
    	include($lang.'/seitenkopf.php');
    	include($lang.'/impressum.php');
    	include($lang.'/seitenfuss.php');
    ?>
  22. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!