• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Mehrsprachige Webseite

Status
Für weitere Antworten geschlossen.
Ich habe die Funktion nur definiert du musst sie auch noch aufrufen.

Beispiel:
PHP:
/* Definition der Funktion... */

includeLang('sprachen.php', 'de');
includeLang('impressum.php', 'kr');

includeLang('bla.php', $_GET['lang']);
includeLang($_GET['file'], 'en');

includeLang($_GET['file'], $_GET['lang']);

Prophet. Zu deinem untersten include:
includeLang($_GET['site'], $_GET['lang']);
Hier habe ich site statt file. Das ist ja egal.
Aber ich dachte, ich muss ein switch() einbauen. Das stellt für mich keine Herausforderung. Doch mein Problem ist es, das wegen den Sprachen. Der erste includeLang code funzt und der 4. auch, da die Sprache ja angegeben ist ('de' oder 'hr'...) doch die sprache mit switch zu definieren, weiss ich nicht wie.


Und bei deiner error verlinkung stimmt auch was nicht.

else // Wenn sie nicht exsistiert standard fehler einbinden.
{
include_once('./notfound.php');
}

Da kommt die notfound.php nur aus dem de/ Verzeichnis. Wenn lang=hr im URL Feld steht, sollte die notfound.php Datei aus dem Verzeichnis hr/ kommen.
Doch das macht sie nicht. Sie kommt nur von der Standartsprache (de/)

Oke ich habe es geklärt.
Habe mal in meinem feztten Buch (1500 Seiten) herumgeblättert und habs herausbekommen.

mit der $_GET['site'] Variabel rufe ich site= auf und dann die einzelnen case
im Buch stand:
case 'name': include("$lang/datei.php")
So jetzt habe ich mein Problem entlich gelöst
Danke für eure Hilfe.

Ich denke dieses Thread kann geschlossen werden.
 
Zuletzt bearbeitet von einem Moderator:
Werbung:
also ich will ja net unbedingt noch jemanden verwissen ^^ aber ich bevorzuge lang files anstadt komplette dateien zu erstellen ^^
ich bastel das ungefähr so ^^

PHP:
<?php // functions.php

function lang($wert)
{
    global $lang;
    return $lang[$wert];
}

?>
PHP:
<?php // settings.php

$lang = "de";
if($_GET['language'] && file_exists("./language/".$_GET['language'].".lang")) $lang = $_GET['language'];
$lang = file("./language/".$lang.".lang");

?>

de.lang
Code:
Hallo.
Auf wiedersehn.

en.lang
Code:
Hello.
Goodbye.

PHP:
<?php // index.php?language=de

include("functions.php");
include("settings.php");

echo lang(0); // = Hallo.
echo lang(1); // = Auf wiedersehn.

?>

PHP:
<?php // index.php?language=en

include("functions.php");
include("settings.php");

echo lang(0); // = Hello.
echo lang(1); // = Goodbye.

?>

somit kannst du immer die sprachen erweitern wenn du jemanden gefunden hast der diese beherscht ;) ^^
 
@ Slibbo: Das klappt vielleicht wenn du teile der seite oder die navigation multilingual gestalten willst, sobald du das ganze allerdings auf längere teste anwenden willst ist das system nicht mehr geeignet und man sollte entweder eines das meinem ähnelt oder eine datenbank verwenden.
 
Werbung:
hab bis jetzt auch erst einn paar meiner kleineren CMS damit ausgestadtet und funktioniert super :) also so c.a. 100 - 150 daten ist schon ok bei dem... bei mir gehts jedenfals gut und schnell ^^
 
So nun ein Weiteres Problem, zu meiner Mehrsprachigen Webseite

Ich habe ja meine Homepage auf zwei Sprachen, die je nach Sprache (lang=...), die Dateien aus verschiedenen Ordnern holen.
Doch nun mein Problem:

Wenn im URL-Feld nichts bestimmt ist, dann kommen nur Error Felder. ich habe bei switch($site) ein default angegeben, aber trotzem nur Errors.

Ich habe bereits solche Probleme gehabt, jedoch nicht mit einer zweisprachigen Webseite.
Dort wird alles mit includeLang bestimmt.
Die Lösung für die vorherige Seite war:
PHP:
<?php
if(isset($_GET['site'])) // Wenn der Parameter gesetzt wurde...
  $site= $_GET['site']; // übernehmen
else // Wenn nicht...
  $site= 'home'; // standard wert setzten.

switch ($site) // Seiten einbinden.
{
    case 'home': include('_private/home.php'); break;
    case 'onama': include('_private/onama.php'); break;
    case 'servis': include('_private/servis.php'); break;
    default: include('_private/error.php'); break; // Bei ungültiger seitenangabe in $navig error anzeigen.
} 
?>

Doch mein Code sieht so au, bei der zweisprachigen:
PHP:
<?php
includeLang($_GET['navig'], $_GET['lang']);
switch($site)
{
default: include("$lang/home.php"); break;
case 'home': include("$lang/home.php"); break;
case 'aktuelles': include("$lang/aktuelles.php"); break;
}
?>

Dort wird, jenachdem wie die Variabel $lang bestimmt ist, aus verschiedenen Ordner die Datei. bei lang=hr werden die dateien home.php und aktuelles.php aus dem Ordner hr/ geholt. Dies wurde mit diesem Code bestimmt:
PHP:
<?php
function includeLang($site, $lang)
{
  if(!file_exists('./'.$lang)) // Wenn der ordner in dieser Sprache nicht exsistiert.
  {
    $lang = 'de'; // Standardsprache anzeigen.
  }

  if(file_exists('./'.$lang.'/'.$site)) // Wenn die angeforderte datei exsistiert
  {
    include('./'.$lang.'/'.$site); // Datei in der entsprechenden sprache einbinden.
  }
 }
?>

Doch wie mache ich es, dass das Default richtig gesetzt ist?

Es kommen ja nur die Errors:
Sieht's euch an:
http://habboville.paradoxe.de/Baska/ (mit Errors)
http://habboville.paradoxe.de/Baska/index.php?site=home&navig=home&lang=de ohne Fehler

Ich hoffe ihr könnt mir Helfen
 
Du musst einfach folgendes machen:
PHP:
function includeLang($site, $lang)
{
  if(!file_exists('./'.$lang)) // Wenn der ordner in dieser Sprache nicht exsistiert.
  {
    $lang = 'de'; // Standardsprache anzeigen.
  }

  if(file_exists('./'.$lang.'/'.$site)) // Wenn die angeforderte datei exsistiert
  {
    include('./'.$lang.'/'.$site); // Datei in der entsprechenden sprache einbinden.
  }
  // Ab hier meine erweiterung
  else
  {
    include('./'.$lang.'/default.php');
  }
}

Dann wird immer dann wenn die angeforderte datei nicht exsistiert die standard datei eingebunden. Oder wolltest du das er falls die datei nicht exsistiert die gleiche in der default sprache einbindet?
 
Werbung:
Dass er die Standartsprache nimmt.
Denn ich habe alles schon bestimmt. Das default bei den switch($site) ist das default für die Seite. Doch wie mache ich ein default für die Sprache. Er kann ja nichts einbinden, wenn er nichts bestimmt ist (lang=...).
Es kommen die Errors weil der Pfad so angegeben ist: $lang/datei.php

Und da es irgendwie kein Standart für die Sprache hat (sprich default), kommen die Errormeldungen.

Kurz: Ja ein default für die Sprache.

PHP:
  if(!file_exists('./'.$lang)) // Wenn der ordner in dieser Sprache nicht exsistiert.
  {
    $lang = 'de'; // Standardsprache anzeigen.
  }
Aber ich dachte, das wäre hier bestimmt worden, für die Standartsprache?

edit:
Code der ganzen Seite:
(ich habe mehrere Includes, für die nebentexte)
Code:
<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=iso-8859-1">
<meta name="robots" content="INDEX,FOLLOW">
<title>Baskabroo's Website</title>

<?php
function includeLang($site, $lang)
{
  if(!file_exists('./'.$lang)) // Wenn der ordner in dieser Sprache nicht exsistiert.
  {
    $lang = 'de'; // Standardsprache anzeigen.
  }

  if(file_exists('./'.$lang.'/'.$site)) // Wenn die angeforderte datei exsistiert
  {
    include('./'.$lang.'/'.$site); // Datei in der entsprechenden sprache einbinden.
  }
}
?> 

<script>
<!--
function BlurLinks(){
lnks=document.getElementsByTagName('a');
for(i=0;i<lnks.length;i++){
lnks[i].onfocus=new Function("if(this.blur)this.blur()");
}
}

onload=BlurLinks;
-->
</script>
<link rel="stylesheet" href="format.css" type="text/css">





        </head>
        
        <table align="center"  cellpadding="0" cellspacing="0" border="0" height="711" width="754">
        <tr><td rowspan="3" height="95" width="8"><img width="6" height="109" src="images/logoli.gif" border="0"></td>
          <td background="images/logo1.jpg" width="672" height="26" >l<b><font color="#FFFFFF">W 
          e l c o m e&nbsp;&nbsp; t o&nbsp;&nbsp; B a <span lang="hr">š k a . c 
          h . v u</span></font></b></td>
          <td background="images/logo1.jpg" width="86" height="26" >
          <a href="index.php?site=home&navig=home&lang=de">
          <img border="0" src="images/flag_ch.jpg" width="30" alt="Seite auf Deutsch" height="15"></a>&nbsp;&nbsp;
          <a href="index.php?site=home&navig=home&lang=hr">
          <img border="0" src="images/flag_hr.jpg" width="30" alt="Seite auf Kroatisch" height="15"></a></td>
          <td valign="top" rowspan="3" height="95" width="6" ><img width="6" height="109" src="images/logore.gif" border="0"></td>
        </tr>
        <tr>
          <td align="center"  width="758" height="63" class="name" colspan="2">
          <img border="0" src="images/logo3.png" width="757" height="65"></td>
        </tr>
        <tr><td height="6" width="758" colspan="2">
          <p align="center"><img border="0" src="images/logo2.png" width="757" height="20"></td>
        </tr>
        <tr>
                <td height="8" width="8"><img width="6" height="28" src="images/menueli.gif" border="0"></td>
                  <td width="758" height="8" bgcolor="#000000" colspan="2" >

<p align="center">
<?php
includeLang($_GET['lang'], $_GET['lang']);
switch($site)
{
default: include("$lang/navi.php"); break;
}
?> </td>
                <td height="8" width="6"><img width="6" height="28" src="images/menuere.gif" border="0"></td>
        </tr>
        <tr>
                <td height="1" width="8"><img width="6" height="1" src="images/menueli.gif" border="0"></td>
                  <td width="758" height="1" bgcolor="#000000" colspan="2" >

<p align="center">
<img border="0" src="images/menue_u.png" width="757" height="1"></td>
                <td height="1" width="6"><img width="6" height="1" src="images/menuere.gif" border="0"></td>
        </tr>
        <tr>
                <td background="images/inli.gif" height="600" width="8" ><img width="6" height="108" src="images/inli.gif" border="0"></td>
                 <td valign="top"  width="758" height="600" colspan="2"  >
<table  cellpadding="0" cellspacing="0" border="0" width="758">
<tr>
<td valign="top"class="in" height="60" width="148" >
<?php
includeLang($_GET['navig'], $_GET['lang']);
switch($site)
{
default: include("$lang/navig_home.php"); break;
case 'home': include("$lang/navig_home.php"); break;
case 'aktuelles': include("$lang/navig_aktuelles.php"); break;
case 'nikola': include("$lang/navig_nikola.php"); break;
case 'david': include("$lang/navig_david.php"); break;
case 'matija': include("$lang/navig_matija.php"); break;
case 'community': include("$lang/navig_community.php"); break;

}
?> 

 </td>
<td valign="top"class="in" height="600" width="2" rowspan="2" >
<img border="0" src="images/mitte_line.png" width="1" height="100%"></td>
<td valign="top"class="in" height="600" width="581" rowspan="2" >

<?php
includeLang($_GET['site'], $_GET['lang']);
switch($site)
{
default: include("$lang/home.php"); break;
case 'home': include("$lang/home.php"); break;
case 'aktuelles': include("$lang/aktuelles.php"); break;
case 'nikola': include("$lang/nikola.php"); break;
case 'david': include("$lang/david.php"); break;
case 'matija': include("$lang/matija.php"); break;
case 'matija_bilder_skoro': include("$lang/matija_bilder_skoro.php"); break;
case 'matija_bilder': include("$lang/matija_bilder.php"); break;
case 'community': include("$lang/community.php"); break;
}
?> 


</td>
</tr>
<tr>
<td valign="top"class="in" height="540" width="148" >

<?php
includeLang($_GET['lang'], $_GET['lang']);
switch($site)
{
default: include("$lang/flash.php"); break;
}
?> 

</td>
</tr>
</table>
                </td>
                <td background="images/inre.gif" height="600" width="6" ><img width="6" height="108" src="images/inre.gif" border="0"></td>
        </tr>
        <tr>
                <td height="28" width="8"><img width="6" height="28" src="images/fussli.gif" border="0"></td>
                <td align="center" background="images/fuss.gif" width="758" height="28" class="fuss" colspan="2">
                2007 - 2008 © by Baska.ch.vu</td>
                <td height="28" width="6"><img width="6" height="28" src="images/fussre.gif" border="0"></td>
        </tr>

</table>
</body>
</html>
 
In dem fall musst du das ganze folgender maßen verwenden:
PHP:
function includeLang($site, $lang)
{
  $defaultLang = 'de';
  $defaultSite = 'home.php';

  if(!file_exists('./'.$lang)) // Wenn der ordner in dieser Sprache nicht exsistiert.
  {
    $lang = $defaultLang; // Standardsprache anzeigen.
  }

  if(file_exists('./'.$lang.'/'.$site)) // Wenn die angeforderte datei exsistiert
  {
    include('./'.$lang.'/'.$site); // Datei in der entsprechenden sprache einbinden.
  }
  else
  {
    $lang = $defaultLang;
    if(file_exists('./'.$lang.'/'.$site))
    {
      include('./'.$lang.'/'.$site);
    }
    else
    {
      include('./'.$lang.'/'.$defaultSite);
    }
  }
}

Über die beiden variablen zu begin der funktion kannst du einstellen was die standart sprache und seite ist.
 
Negativ! Es will die Standartsprache 'de' nicht setzten. Es kommen immernoch die Errormeldungen, wenn ich nur auf die index.php zugreife (ohne site=...&navig=...&lang=... )Sobald ich lang=... entferne vom URL-Feld, dann kommen alle Fehlermeldungen.

Hier hast nochmal die ganze Seite mit deinem neuen Code:
PHP:
<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=iso-8859-1">
<meta name="robots" content="INDEX,FOLLOW">
<title>Baskabroo's Website</title>
 <?php
function includeLang($site, $lang)
{
  $defaultLang = 'de';
  $defaultSite = 'home';

  if(!file_exists('./'.$lang)) // Wenn der ordner in dieser Sprache nicht exsistiert.
  {
    $lang = $defaultLang; // Standardsprache anzeigen.
  }

  if(file_exists('./'.$lang.'/'.$site)) // Wenn die angeforderte datei exsistiert
  {
    include('./'.$lang.'/'.$site); // Datei in der entsprechenden sprache einbinden.
  }
  else
  {
    $lang = $defaultLang;
    if(file_exists('./'.$lang.'/'.$site))
    {
      include('./'.$lang.'/'.$site);
    }
    else
    {
      include('./'.$lang.'/'.$defaultSite);
    }
  }
} 
?> 

<script>
<!--
function BlurLinks(){
lnks=document.getElementsByTagName('a');
for(i=0;i<lnks.length;i++){
lnks[i].onfocus=new Function("if(this.blur)this.blur()");
}
}

onload=BlurLinks;
-->
</script>
<link rel="stylesheet" href="format.css" type="text/css">





        </head>
        
        <table align="center"  cellpadding="0" cellspacing="0" border="0" height="711" width="754">
<tr><td rowspan="3" height="95" width="8"><img width="6" height="109" src="images/logoli.gif" border="0"></td>
          <td background="images/logo1.jpg" width="672" height="26" >l<b><font color="#FFFFFF">W 
          e l c o m e&nbsp;&nbsp; t o&nbsp;&nbsp; B a <span lang="hr">š k a . c 
          h . v u</span></font></b></td>
          <td background="images/logo1.jpg" width="86" height="26" >
          <a href="index.php?site=home&navig=home&lang=de">
<img border="0" src="images/flag_ch.jpg" width="30" alt="Seite auf Deutsch" height="15"></a>&nbsp;&nbsp;
          <a href="index.php?site=home&navig=home&lang=hr">
          <img border="0" src="images/flag_hr.jpg" width="30" alt="Seite auf Kroatisch" height="15"></a></td>
<td valign="top" rowspan="3" height="95" width="6" ><img width="6" height="109" src="images/logore.gif" border="0"></td>
        </tr>
        <tr>
          <td align="center"  width="758" height="63" class="name" colspan="2">
          <img border="0" src="images/logo3.png" width="757" height="65"></td>
        </tr>
        <tr><td height="6" width="758" colspan="2">
          <p align="center"><img border="0" src="images/logo2.png" width="757" height="20"></td>
        </tr>
        <tr>
                <td height="8" width="8"><img width="6" height="28" src="images/menueli.gif" border="0"></td>
                  <td width="758" height="8" bgcolor="#000000" colspan="2" >

<p align="center">
<?php
includeLang($_GET['lang'], $_GET['lang']);
switch($site)
{
default: include("$lang/navi.php"); break;
}
?> </td>
                <td height="8" width="6"><img width="6" height="28" src="images/menuere.gif" border="0"></td>
        </tr>
        <tr>
                <td height="1" width="8"><img width="6" height="1" src="images/menueli.gif" border="0"></td>
                  <td width="758" height="1" bgcolor="#000000" colspan="2" >

<p align="center">
<img border="0" src="images/menue_u.png" width="757" height="1"></td>
                <td height="1" width="6"><img width="6" height="1" src="images/menuere.gif" border="0"></td>
        </tr>
        <tr>
<td background="images/inli.gif" height="600" width="8" ><img width="6" height="108" src="images/inli.gif" border="0"></td>
                 <td valign="top"  width="758" height="600" colspan="2"  >
<table  cellpadding="0" cellspacing="0" border="0" width="758">
<tr>
<td valign="top"class="in" height="60" width="148" >
<?php
includeLang($_GET['navig'], $_GET['lang']);
switch($site)
{
default: include("$lang/navig_home.php"); break;
case 'home': include("$lang/navig_home.php"); break;
case 'aktuelles': include("$lang/navig_aktuelles.php"); break;
case 'nikola': include("$lang/navig_nikola.php"); break;
case 'david': include("$lang/navig_david.php"); break;
case 'matija': include("$lang/navig_matija.php"); break;
case 'community': include("$lang/navig_community.php"); break;

}
?> 

 </td>
<td valign="top"class="in" height="600" width="2" rowspan="2" >
<img border="0" src="images/mitte_line.png" width="1" height="100%"></td>
<td valign="top"class="in" height="600" width="581" rowspan="2" >

<?php
includeLang($_GET['site'], $_GET['lang']);
switch($site)
{
default: include("$lang/home.php"); break;
case 'home': include("$lang/home.php"); break;
case 'aktuelles': include("$lang/aktuelles.php"); break;
case 'nikola': include("$lang/nikola.php"); break;
case 'david': include("$lang/david.php"); break;
case 'matija': include("$lang/matija.php"); break;
case 'matija_bilder_skoro': include("$lang/matija_bilder_skoro.php"); break;
case 'matija_bilder': include("$lang/matija_bilder.php"); break;
case 'community': include("$lang/community.php"); break;
}
?> 


</td>
</tr>
<tr>
<td valign="top"class="in" height="540" width="148" >

<?php
includeLang($_GET['lang'], $_GET['lang']);
switch($site)
{
default: include("$lang/flash.php"); break;
}
?> 

</td>
</tr>
</table>
                </td>
<td background="images/inre.gif" height="600" width="6" ><img width="6" height="108" src="images/inre.gif" border="0"></td>
        </tr>
        <tr>
                <td height="28" width="8"><img width="6" height="28" src="images/fussli.gif" border="0"></td>
                <td align="center" background="images/fuss.gif" width="758" height="28" class="fuss" colspan="2">
                2007 - 2008 © by Baska.ch.vu</td>
                <td height="28" width="6"><img width="6" height="28" src="images/fussre.gif" border="0"></td>
        </tr>

</table>
</body>
</html>

edit:
Könnte man beim Include-Code nicht etwas ändern? Ich dachte wie bei diesem:
PHP:
<?php
if(isset($_GET['navig'])) // Wenn der Parameter gesetzt wurde...
  $navig = $_GET['navig']; // übernehmen
else // Wenn nicht...
  $navig = 'home'; // standard wert setzten.

switch ($navig) // Seiten einbinden.
{
    case 'home': include('_navig/home.php'); break;
    case 'onama': include('_navig/onama.php'); break;
    case 'servis': include('_navig/servis.php'); break;
    default: include('_navig/error.php'); break; // Bei ungültiger seitenangabe in $navig error anzeigen.
} 
?>
Nur das bei der jetztigen Seite alles mit includeLang macht. Hab's versucht ihn umzuschreiben, aber meine Kenntnisse reichen nicht aus.

 
Werbung:
Achso:

PHP:
function includeLang($site, $lang)
{
  $defaultLang = 'de';
  $defaultSite = 'home.php';

  if(!is_string($site) or empty($site)) // Wenn seite nicht gesetzt wurde
    $site = $defaultSite; // Auf standart seite umschalten

  if(!is_string($lang) or empty($lang)) // Wenn sprache nicht gesetzt wurde
    $lang = $defaultLang; // Auf standart sprache umschalten

  if(!file_exists('./'.$lang)) // Wenn der ordner in dieser Sprache nicht exsistiert.
  {
    $lang = $defaultLang; // Standardsprache anzeigen.
  }

  if(file_exists('./'.$lang.'/'.$site)) // Wenn die angeforderte datei exsistiert
  {
    include('./'.$lang.'/'.$site); // Datei in der entsprechenden sprache einbinden.
  }
  else // Falls die seite nicht exsistiert
  {
    $lang = $defaultLang; // Auf standart sprache umschalten
    if(file_exists('./'.$lang.'/'.$site)) // Prüfen ob seite in dieser sprache vorhanden ist
    {
      include('./'.$lang.'/'.$site);
    }
    else // Wenn nicht standard seite einbinden (ich würde empfehlen eine error seite einzubinden.)
    {
      include('./'.$lang.'/'.$defaultSite);
    }
  }
}
 
Jetzt kommt etwas, dass ich gar nicht kapiere.
http://habboville.paradoxe.de/Baska/index.php
Es bindet die $defaultSite ein, aber es kommen Errormeldungen.
Aber ich sagte ja schon. Für die defaultSeiten habe ich alles bereits gemacht.
Nur für die Sprache gibt's kein richtiges Standart.
Also ist etwa dies hier von deinem Code (für mich) unbrauchbar:
PHP:
  $defaultSite = 'home.php';
PHP:
  if(!is_string($site) or empty($site)) // Wenn seite nicht gesetzt wurde 
    $site = $defaultSite; // Auf standart seite umschalten
PHP:
    else // Wenn nicht standard seite einbinden (ich würde empfehlen eine error seite einzubinden.) 
    { 
      include('./'.$lang.'/'.$defaultSite); 
    }
Doch ich habe keine Ahnung wie beim Code die Standartsprache zu setzen. Ich habe versucht, beim Code die defaultSite wegzunehmen, doch bin noch zu unerfahren, und es kam, was ich mir schon dachte: Error!

Es ist zwar alles toll und nett von dir, abermusst nicht die Mühe machen, mir mehr zu Helfen als ich brauche. ;)
 
Also nach den errormeldungen zu urteilen hast du keine schreibrechte und leserechte in den entsprechenden verzeichnissen kann das vll sein?
 
Werbung:
Also der CHMOD ist bei beiden Ordnern auf 777 gestellt. Sollte schon haben.
Aber bei deneim Code ist seltsam, dass er die Datei home.php auf der Standartsprache einbindet, aber er lässt die Fehlermeldungen dort.

Also, ich erklärs mal genauer:
Skizze mit den 4 Includes:
bild.jpg



Bei der Navigation oben ist nur das default angegeben im Code. D.h. keine case, sowie bei dem Nebentext unter der SubNavigation.

Bei der SubNavigation und beim Inhalt hat es Cases drinn, ebenso default.

Ich mcöhte, dass wenn man nur die index.php Datei aufruft, dass überall das Default kommt, in der Standartsprache.

Die Dateien werden bei allen 4 includes so aufgerufen:
PHP:
<?php
includeLang($_GET['site'], $_GET['lang']);
switch($site)
{
default: include("$lang/home.php"); break;
case 'home': include("$lang/home.php"); break;
}
?>
Bei den Nebentext und der oberen Navigation-Includen, habe ich es so:
PHP:
<?php
includeLang($_GET['lang'], $_GET['lang']);
switch($site)
{
default: include("$lang/navi.php"); break;
}
?>
Ich verwende bei $_GET zwei mal 'lang', da es ja nur ein default ist. Und wenn es lang=hr ist, dann wird hr/navi.php eingefügt, und bei lang=de wird de/navi.php eingefügt.
Doch wenn kein lang=de/hr angegeben ist, kommt eben diese Errormeldung, es ist was falsch.
Genau der gleiche Code ist es beim Nebentext, nur dass die Datei flash.php heisst.

So, nun sollte es gründlich erklärt sein.

Und wenn ich, bei deinem neuen Code, die Seite so aufrufe, dann kommt folgendes:
http://habboville.paradoxe.de/Baska/index.php?site=home&navig=home&lang=de
Es werden die defaults von der Oberen Navigation und der Nebentexte eingefügt, und der Text bei der SubNavigation und beim Inhalt kommt auch, als case (site=home&navig=home).
Doch die home.php Datei wird nun auch überall includiert.
D.H. dein Code hat nen Fehler
Und wenn ich die sprach auf lang=hr ändere, dann kommt die home.php Datei auch hinein, aber auch auf Deutsch
 
Zuletzt bearbeitet von einem Moderator:
Ja hier:
PHP:
<?php
function includeLang($site, $lang)
{
  if(!file_exists('./'.$lang)) // Wenn der ordner in dieser Sprache nicht exsistiert.
  {
    $lang = 'de'; // Standardsprache anzeigen.
  }

  if(file_exists('./'.$lang.'/'.$site)) // Wenn die angeforderte datei exsistiert
  {
    include('./'.$lang.'/'.$site); // Datei in der entsprechenden sprache einbinden.
  }
}
?>

Dann wird einfach $lang durch den gewählten Ordner ersetzt (hr/datei.php, wenn lang=hr)
Doch dort oben ist ja auch ein default bestimmt
PHP:
  {
    $lang = 'de'; // Standardsprache anzeigen.
  }
Aber das macht es irgendwie nicht. oder ist die standartsprache falsch gesetzt?
 
Werbung:
Die variablen $lang und $site in der funktion sind nur lokal vorhanden. Du musst sie ausserhalb der funktion anlegen.

So etwa:
PHP:
$lang = $_GET['lang'];
$site = $_GET['site'];
includeLang($site, $lang);
switch($site)
{
default: include("$lang/navi.php"); break;
}
 
Geht immernoch nicht.
Ich habe versucht, (bei einem Include) das Include so zu erwitern, dass er es finden sollte.
PHP:
<?php
$lang = $_GET['lang'];
$site = $_GET['lang'];
includeLang($site, $lang);
switch($site)
{
default: include("$lang/flash.php"); break;
case 'de': include("$lang/flash.php"); break;
case 'hr': include("$lang/flash.php"); break;
}
?>
Habe zwei Case gemacht, für de/ und hr/, obwohl das default genügen sollte.

Wäre es aber möglich, diesen Code so umzuschreiben, dass er etwa so aussieht? (Die Sprachbestimmung soll mitgeschrieben sein)
PHP:
<?php
if(isset($_GET['site'])) // Wenn der Parameter gesetzt wurde...
  $site= $_GET['site']; // übernehmen
else // Wenn nicht...
  $site= 'home'; // standard wert setzten.

switch ($site) // Seiten einbinden.
{
    case 'home': include('_private/home.php'); break;
    case 'onama': include('_private/onama.php'); break;
    case 'servis': include('_private/servis.php'); break;
    default: include('_private/error.php'); break; // Bei ungültiger seitenangabe in $navig error anzeigen.
} 
?>
So wird der Error angezeigt und der Standartwert wird auch gesetzt. Das default benutzt man hier also als Erroranzeige.
Hab gedacht, etwo so:

PHP:
<?php
$lang = $_GET['lang'];
$site = $_GET['site'];
includeLang($site, $lang);

if(isset($_GET['lang'])) // Wenn der Parameter gesetzt wurde...
  $lang= $_GET['lang']; // übernehmen
else // Wenn nicht...
  $lang= 'de'; // standard wert setzten.

if(isset($_GET['site'])) // Wenn der Parameter gesetzt wurde...
  $site= $_GET['site']; // übernehmen
else // Wenn nicht...
  $site= 'home'; // standard wert setzten.

switch ($site) // Seiten einbinden.
{
    case 'home': include('$lang/home.php'); break;
    case 'onama': include('$lang/onama.php'); break;
    case 'servis': include('$lang/servis.php'); break;
    default: include('$lang/error.php'); break; // Bei ungültiger seitenangabe in $navig error anzeigen.
} 
?>
Hab's schon getestet, doch er sagt, er habe keine Erlaubnis, auf Zeile 18.
Ich denke man muss irgendwo noch etwas für $lang/datei.php definieren. Was weiss ich nicht. Bin noch ein Einsteiger bei PHP
Das steht bei Zeile 18:
PHP:
include('./'.$lang.'/'.$site); // Datei in der entsprechenden sprache einbinden.
Und das ist der Code, in dem der Fehler ist:
PHP:
<?php
function includeLang($site, $lang)
{
  if(!file_exists('./'.$lang)) // Wenn der ordner in dieser Sprache nicht exsistiert.
  {
    $lang = 'de'; // Standardsprache anzeigen.
  }

  if(file_exists('./'.$lang.'/'.$site)) // Wenn die angeforderte datei exsistiert
  {
    include('./'.$lang.'/'.$site); // Datei in der entsprechenden sprache einbinden.
  }
}
?>
Ich hoffe ihr kommt draus!;-)
 
Ok, ich habe mein Problem selbst gelöst.
Und zwar so: (eigentlich ganz simpel)
PHP:
  if(!isset($_GET['lang'])) //Wenn die Sprache nicht bestimmt ist
   {
    $_GET['lang'] = 'de'; // Standardsprache anzeigen.
   }

Wenn lang=... nicht bestimmt ist, lang=de machen.
Also ist der Ordner de/ der Standartordner.
;)

Danke Prophet für deine Unterstützung.

Hier, zum nachsehen:
http://habboville.paradoxe.de/Baska
 
Werbung:
Status
Für weitere Antworten geschlossen.
Zurück
Oben