Mehrsprachige Homepage und Anfänger-Problem

OneSlap

Grünschnabel
Hi,

ich habe ein Problem und bin PHP-Neuling:

- Ich habe eine Startseite mit drei links für die auswahl der Sprache.
Code:
<?php
session_register("lang");
?>
<html>
<head>
<title></title>
</head>
<body>
<a href="sites/ce_main.php?$lang='deutsch'" target="_self">
<a href="sites/ce_main.php?$lang='spanisch'" target="_self">
<a href="sites/ce_main.php?$lang='englisch'" target="_self">
</body>
</html>

- Dann habe ich eine Site in der ich den HTLM-code hinterlege
die ce_main.php

- Und drei dateien in denen ich die Texte in der jeweiligen Sprache gespeichert habe.
deutsch.inc
englisch.inc
spanisch.inc

Jetzt komme ich nicht weiter und brauche dringend hilfe !!

Kann mir mal bitte jemand einen Mustervorschlag posten wie das funzt?

Vielen Dank schon mal im Voraus
 
<a href="sites/ce_main.php?$lang='deutsch'" target="_self">
<a href="sites/ce_main.php?$lang='spanisch'" target="_self">
<a href="sites/ce_main.php?$lang='englisch'" target="_self">

ist falsch:
<a href="sites/ce_main.php?lang=englisch" target="_self">

Dann kannst du in der ce_main.php deine
Language Seite includieren.

Mann könnte sie gleich mit
include($lang.".inc");
inkludieren, was aber eine Sicherheitslücke währe.
Das heisst du solltest vorher den wert von lang überprüfen ob dieser wirklich eine language datei ist und kein externer link
 
:confused: bei mir funzt nichts mehr ...
ich brauch dringend Hilfe!!

Kann mir mal jemand ein Beispiel zeigen bzw schreiben

Erste Seite auswahl der Sprache (index.php):
PHP:
<?php
session_register("lang");
?>
<html>
<head>
<title></title>
</head>
<body>
<a href="ce_main.php?lang=deutsch" target="_self">
<a href="ce_main.php?lang=spanisch" target="_self">
<a href="ce_main.php?lang=englisch" target="_self">
</body>
</html>

Zweite Seite wo ich dann entschieden wird was für eine Sprache ausgewählt wurde (main.php):
PHP:
<?php 
session_start();
?>

<html>
<head>
<title></title>
</head>
<body>

<?php
if($lang="deutsch")
  {
  include("deutsch/deutsch.inc");
  }
ifelse($lang="spanisch"
  {
  include("spanisch/spanisch.inc");
  }
else
  {
  include("englisch/englisch.inc");
  }
?>
</body>
</html>

und dann die sites in denen der text ist (deutsch.inc; englisch.inc; spanisch.inc)


Ich weiß dass man wahrscheinlich den ganzen mist vonmir weg werfen kann, aber deswegen brauche ich eure Hilfe ... wie bekomm ich das Ding zum Laufen ???

THX schon mal im Voraus
 
Zuletzt bearbeitet:
Sei mir nicht böse aber du bekommst dein Script zum laufen wenn du erstmal ganz in Ruhe die Beispiele im Buch durcharbeitest.
Und das Buch von vorne bis hinten und nochmals zurück durcharbeitest.

Denn solche Dinge wie:
ifelse($lang="spanisch"
sollten dir dann nicht passieren.

Anders hat das kein Sinn, jeder von uns musste erst lernen und konnte dann machen.
 
PHP:
ifelse($lang="spanisch"
Also
1. heißt das meines Wissens elseif und nicht ifelse. (Kann aber natürlich auch sein dass es das trotzdem gibt).
2. fehlt da die Klammer ) -->
PHP:
ifelse($lang="spanisch")

Noch was was mir aufgefallen ist:
Das erste Script linkt auf die Datei ce_main.php aber du schreibst dass die zweite Datei nur main.php heißt. Ich denk mal das ist nur ein Tipfehler...
<a href="ce_main.php?lang=deutsch" target="_self">
Zweite Seite wo ich dann entschieden wird was für eine Sprache ausgewählt wurde (main.php):


bei mir funzt nichts mehr ...
---> könntest du das vielleicht ein bißchen aussagekräftiger erklären? ;-) Also vielleicht ob er dir nen Fehler oder gar nichts ausgibt.....
 
du solltest auf jeden fall den vergleichsoperator benutzen ;)
und es heisst wirklich elseif.
PHP:
<?php
if($lang="deutsch")
  {
  include("deutsch/deutsch.inc");
  }
ifelse($lang="spanisch")
  {
  include("spanisch/spanisch.inc");
  }
else
  {
  include("englisch/englisch.inc");
  }
?>
das produziert dir schon mal nen fehler wegen dem ifelse, ausserden wird die variable nicht mit dem string "deutsch" verglichen, sondern mit dem wert gesetzt.
PHP:
<?php
if ($lang == "deutsch")
  {
  include("deutsch/deutsch.inc");
  }
Elseif ($lang == "spanisch")
  {
  include("spanisch/spanisch.inc");
  }
else
  {
  include("englisch/englisch.inc");
  }
?>
so isses besser :)
 
vielleicht etwas eleganter gelöst mit case:

PHP:
switch $lang {
 case "deutsch": include("deutsch/deutsch.inc"); break;
 case "spanisch": include("spanisch/spanisch.inc"); break;
 default: include("english/english.inc");
}

sieht schöner aus, ist meines wissens nen bruchteil einer zentel sekunde schneller und man kann superfix ne neue sprache einfügen
 
Ja ich geb zu, dass ich mich mit meinem Buch (ja ich habe eins und arbeite gerade damit ;) ) intensiver befassen sollte, aber ich sollte das script bis morgen laufen haben und bis dahin kann ich mein Buch nicht fertig lesen.

Ich fände es super wenn ihr mir Helfen könntet!! Es tut mir, leid, dass ich mein Problem nicht ausführlicher beschrieben habe.

Also ich habe soweit alles gemacht, was ich jetzt von euch erfahren habe

index.php
PHP:
<?php
session_start();
register_session( "lang" );
?>
<html>
<head>
<title></title>
</head>
<body>
<a href="main.php?lang=deutsch" target="_self">deutsch</a>
<a href="main.php?lang=spanisch" target="_self">spanisch</a>
<a href="main.php?lang=englisch" target="_self">englisch</a>
</body>
</html>

main.php ist ein frameset
für header.htm (der ist für alle Sprachen gleich)
navi.php (multilang.)
inhalt.php (multilang.)

aber vom script sollte das je egal sein ob ich jetzt in navi oder inhalt bin ... am anfang wird ja immer aus der $lang ausgelesen welche sprache es ist.

mal nur die navi
PHP:
<?php session_start(); 
switch($lang) 
{ 
case "deutsch": include ("deutsch.inc"); break; 
case "spanisch": include ("spanisch.inc"); break; 
case "englisch": include ("englisch.inc"); break; 

default: echo"Keine sprache gewählt"; break; 
}?>

so ich bekomme aber immer nur die deutsche .inc und wenn ich mit print session_encode versuche die variable auszulesen bringt er mir auch brav S|7 lang;deutsch oder S|7 lang;spanisch (oder so weiß nicht ob es so richtig geschrieben ist) jenachdem was ich für eine sprache ausgewählt habe

wenn ich jedoch print ($lang); als befehl schreibe bringt er mir "!lang|N" oder so was in der art ... hilft euch das weiter um mir helfen zu können ??

THX Christian
 
Zurück