Multilanguage Navigation

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Benutzeravatar
REincarnation
Mitglied
Beiträge: 321
Registriert: 16.10.2003 10:06
Wohnort: Rostock
Kontaktdaten:

Multilanguage Navigation

Beitrag von REincarnation »

Hallo Ihr Coder,

ich bin noch ziemlicher PHP n00b und möchste nun eine Internetseite mit mehrsprachiger Navigation erstellen. Ich habe bisher folgende Code zusammen gebastelt. Jetzt bin ich aber in einer Sackgasse gelandet und komme nicht weiter.

index.php

Code: Alles auswählen

<?php include("inc/conf.inc.php"); ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Unbenanntes Dokument</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style>
body {font-family:verdana; font-size:12px;}
</style>
</head>

<body>
<table width="760" border="1" align="center" cellpadding="5" cellspacing="1">
  <tr align="center" valign="middle">
    <td height="80" colspan="2">Kopf</td>
  </tr>
  <tr valign="top">
    <td width="150" height="10"><a href="index.php?site=home&lang=de"><img src="img/germany.gif" width="19" height="12" border="0"></a>&nbsp;<a href="index.php?site=home&lang=en"><img src="img/usa.gif" width="19" height="12" border="0"></a></td>
    <td height="10"><a href="index.php">Startseite</a> | Seite 2 </td>
  </tr>
  <tr valign="top">
    <td height="435">&nbsp;</td>
    <td height="435"><? 
	// Länderkürzel filtern, wenn keines vorhanden Standard "de" 
    $lang = (isset($_GET['lang'])) ? $_GET['lang'] : "de"; 
    $Mainpage = (isset($_GET['site']) ? $_GET['site'] : $site['start']); 
      
    if (strlen($Mainpage)) 
    	include $Mainpage . "?lang=$lang"; 
    else 
       	include $site['error_lang'];   
	?></td>
  </tr>
  <tr align="center" valign="middle">
    <td height="10" colspan="2">Fuss</td>
  </tr>
</table>
</body>
</html>
conf.inc.php

Code: Alles auswählen

<?php

$site = array(); 
$site['start'] = "home.php"; 
$site['kontakt'] = "kontakt.php"; 
$site['impressum'] = "imp.php"; 
$site['error_lang'] = "falsches_land.php"; 

?>
home.php

Code: Alles auswählen

<? 
  isset($_GET['de']) 
?>
Startseite | deutsch
Ich erhalte dann immer die Fehlermeldung

Warning: main(home.php?lang=de) [function.main]: failed to create stream: No such file or directory in /www/htdocs/test/test/index.php on line 29
Warning: main() [function.main]: Failed opening 'home.php?lang=de' for inclusion (include_path='.:..') in /www/htdocs/test/test/index.php on line 29

Netzmeister hatte mir bisher geholfen, aber der ist nun im wohlverdienten Urlaub und ich bräuchte Eure Hilfe. Was muss ich tun, damit die erste Startseite deutsch geladen wird?

Link: www.computerverein-rostock.de/test
Computerverein Rostock e.V.
Bloßes Ignorieren ist noch keine Toleranz.
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag von Pyramide »

Benutzeravatar
REincarnation
Mitglied
Beiträge: 321
Registriert: 16.10.2003 10:06
Wohnort: Rostock
Kontaktdaten:

Beitrag von REincarnation »

Mhhhh....ich verstehe das leider nicht, was damit gemeint ist.

Kann er die Datei nicht includen, weil sie nicht vorhanden ist?
Computerverein Rostock e.V.
Bloßes Ignorieren ist noch keine Toleranz.
Benutzeravatar
k-5
Mitglied
Beiträge: 166
Registriert: 05.06.2003 23:21
Wohnort: soa kaff
Kontaktdaten:

Beitrag von k-5 »

du brauchst bei includes keine variablen übergeben ..

ein include läst sich am besten verstehen als würde der code der anderen datei .. 1:1 so drin stehen ..

(bzw ehr so .. ?>datei-source<?php .. du musst also die <?php tags extra wieder aufmachen .. was du ja schon weißt ;) ..)

-> lass das "?lang=de";
und nimm einfach in der home.php .. die variable $lang

also ja der fehler sagt aus das die datei nicht gefunden wurde .. aus eben beschriebenem grund ..
ich will mein auto polieren ! ..

ja .. ich weiß .. man kann das mit nem lappen machen .. aber ICH will unbedingt nen hammer nehmen .. WIE geht das :)
Benutzeravatar
REincarnation
Mitglied
Beiträge: 321
Registriert: 16.10.2003 10:06
Wohnort: Rostock
Kontaktdaten:

Beitrag von REincarnation »

Ich hab jetzt echt alles versucht. Aber irgendwie übersteigt das noch meinen PHP Horizont. Kann mir jemand das mal für doofe erklären :cry:
Computerverein Rostock e.V.
Bloßes Ignorieren ist noch keine Toleranz.
Benutzeravatar
k-5
Mitglied
Beiträge: 166
Registriert: 05.06.2003 23:21
Wohnort: soa kaff
Kontaktdaten:

Beitrag von k-5 »

für doofe ? .. ich dachte das hätte ich schon ? ..

ok .. ohne die erklärungsversuche ..

Code: Alles auswählen

   if (strlen($Mainpage)) 
       include $Mainpage . "?lang=$lang";

// wird zu ..

   if (strlen($Mainpage)) 
       include $Mainpage;
deine home würde eh nie funktionieren ..

da sollte dann irgendwas wie ..

Code: Alles auswählen

if( $lang == "de" ) echo "blubb";
stehen ..
ich will mein auto polieren ! ..

ja .. ich weiß .. man kann das mit nem lappen machen .. aber ICH will unbedingt nen hammer nehmen .. WIE geht das :)
fagus
Mitglied
Beiträge: 71
Registriert: 30.03.2004 16:55

Beitrag von fagus »

Wieso verwendest du strlen() und nicht file_exists() ? file_exists macht m.E. mehr Sinn.

im übrigen hat k-5 recht. Du darfst deiner eingebundenen home.php Seite keine Parameter übergeben beim Includen. Sie hat bereits vollen Zugriff auf alle Variablen, die im index.php Skript bis zur Includestelle definiert wurden.
da du die Variable $lang schon in der Datei index.php definiert hast, kannst du wie k-5 beschrieben hat, aus home.php direkt darauf zugreifen, also ohne $_GET[]. wenn du in home.php mit $_GET[] zugreifen möchtest, dann bekommst du die Variable, die der index.php Datei übergeben wurde.
Benutzeravatar
k-5
Mitglied
Beiträge: 166
Registriert: 05.06.2003 23:21
Wohnort: soa kaff
Kontaktdaten:

Beitrag von k-5 »

wenn du mit file_exists anfängst .. dann brauchste noch ne abfrage nach "/" .. nach ".."

dann sollte er noch ".php" automatisch anfügen ..

wenn er das alles nicht macht :) .. ist es dem script möglich fast _jede_ datei auf dem system im klartext dazustellen .. file_exists .. verhindert ne fehlermeldung .. aber sonst schadet es nicht es weg zu lassen ..

der rest ist echt _wichtig_
ich will mein auto polieren ! ..

ja .. ich weiß .. man kann das mit nem lappen machen .. aber ICH will unbedingt nen hammer nehmen .. WIE geht das :)
Benutzeravatar
REincarnation
Mitglied
Beiträge: 321
Registriert: 16.10.2003 10:06
Wohnort: Rostock
Kontaktdaten:

Beitrag von REincarnation »

Erstmal danke für Eure Hilfe. Ich habe nun alles umgeändert wie ihr das geschrieben habt. Dennoch funktioniert es nicht. Irgendwas läuft noch falsch. Es ging mir auch nur darum, dass man nicht wieder auf der Startseite landet, wenn innerhalb einer Unterseite auf englisch umschaltet. Deshalb wollte ich eine Sprachvariable übergeben.

Es soll später so sein, dass eine Browserweiche zuerst die Sprache des Browsers ausliest und den User dann dementsprechend auf die Startseite seiner Sprache weiterleitet. Zusätzlich wäre es aber schön, wenn man auch innerhalb umschalten kann. Also wenn ich mich zum Beispiel auf der Kontaktseite befinde und nun mal englisch statt deutsch lesen will, soll nach einem Klick auf die USA-Flagge auch die englische Kontaktseite erscheinen.

Vielleicht war ja mein Ansatz schon völlig falsch. Könnt Ihr mir bitte helfen? Ich wäre Euch super dankbar.
Computerverein Rostock e.V.
Bloßes Ignorieren ist noch keine Toleranz.
Antworten

Zurück zu „Coding & Technik“