@imoney91: Ich denke ich hatte das gleiche Problem wie du, ich kann dir hier mal meine Loesung zu dem Problem praesentieren (ist zwar OT in dem Bereich hier, aber eine Antwort auf das Problem):
Als erstes wird die eingestellte Sprache des Browsers des Users erfasst. Ist diese eine der unterstuetzten Sprachen, wird auf die Sprache gewechselt. Wird die Sprache nicht unterstuetzt, wird die Seite in en (Englisch) angezeigt. Dabei wird als Startseite der content "Home" eingebunden. Nachdem diese Entscheidung stattgefunden hat, laesst sich ueber ein Menue, wie du es auch hast, die Sprache beliebeig aendern.
PHP:
<?php
header("Cache-control: private");
$abfrage = $_SERVER["HTTP_ACCEPT_LANGUAGE"];
$test = substr($_SERVER["PHP_SELF"]."?".$_SERVER["QUERY_STRING"],25);
if(isSet($_GET["lang"]))
{
$lang = $_GET["lang"];
}
else if(!isSet($GET["lang"]))
{
if(substr($abfrage,0,2) == "de" OR substr($abfrage,0,2) == "en" OR substr($abfrage,0,2) == "fr" OR substr($abfrage,0,2) == "es" OR substr($abfrage,0,2) == "cn")
{
$lang = substr($abfrage,0,2);
$content = "home";
}
else
{
$lang = "en";
$content = "home";
}
}
switch ($lang) {
case "de":
$lang_file = 'lang.de.php';
$id = "1";
break;
case "en":
$lang_file = 'lang.en.php';
$id = "2";
break;
case "es":
$lang_file = 'lang.es.php';
$id = "3";
break;
case "fr":
$lang_file = 'lang.fr.php';
$id = "4";
break;
case "cn":
$lang_file = 'lang.cn.php';
$id = "5";
break;
}
include_once 'languages/'.$lang_file;
?>
Hier einmal das normale Navigationsmenue in dem die einzelnen Inhalte variabel verlinkt sind:
HTML:
<div class="menu">
<ul>
<li><a href="<?php echo $lang['MENU_HOME_LINK']; ?>"><?php echo $lang['MENU_HOME']; ?></a></li>
<li class="<?php echo $lang['MENU_DROPDOWN_ABOUT']; ?>"><a href="<?php echo $lang['MENU_ABOUT_LINK']; ?>"><?php echo $lang['MENU_ABOUT']; ?></a>
<ul>
<li><a href='#'><?php echo $lang['MENU_ABOUT_BACKGROUND']; ?></a></li>
<li><a href='#'><?php echo $lang['MENU_ABOUT_TEAM']; ?></a></li>
</ul>
</li>
<li class="<?php echo $lang['MENU_DROPDOWN_SERVICE']; ?>"><a href='#'><?php echo $lang['MENU_SERVICE']; ?></a>
<ul>
<li><a href='#'><?php echo $lang['MENU_SERVICE_DESCRIPTION']; ?></a></li>
<li><a href='#'><?php echo $lang['MENU_SERVICE_EXAMPLES']; ?></a></li>
</ul>
</li>
<li><a href='#'><?php echo $lang['MENU_REFERENCES']; ?></a></li>
<li><a href='#'><?php echo $lang['MENU_PARTNER']; ?></a></li>
<li><a href='#'><?php echo $lang['MENU_SAFETY']; ?></a></li>
<li><a href='#'><?php echo $lang['MENU_CONTACT']; ?></a></li>
</ul>
</div>
Und dazu noch das Sprachmenue. In dem nicht nur die aktuelle Sprache geaendert wird, sondern auch der momentan geladene Content angepasst wird, also der Inhalt gleich bleibt und nur die Sprache sich aendert.
HTML:
<div class="header_menu1">
<ul>
<li><a href='#'><?php echo $lang['HEADER_MENU1_ABOUT']; ?></a></li>
<li><a href='#'><?php echo $lang['HEADER_MENU1_CONTACT']; ?></a></li>
<li class="language"><a href='<?php if ($test == "" ) { echo $lang['HEADER_MENU1_LANGUAGE_01_LINK']."&content=home"; } else { echo $lang['HEADER_MENU1_LANGUAGE_01_LINK'].substr($_SERVER["PHP_SELF"]."?".$_SERVER["QUERY_STRING"],25); } ?>'><img src="<?php echo $lang['HEADER_MENU1_LANGUAGE_01_IMG']; ?>" width="12px" height="12px" alt="<?php echo $lang['HEADER_MENU1_LANGUAGE_01_ALT']; ?>"><?php echo $lang['HEADER_MENU1_LANGUAGE_01']; ?></a>
<ul>
<li><a href='<?php if ($test == "" ) { echo $lang['HEADER_MENU1_LANGUAGE_02_LINK']."&content=home"; } else { echo $lang['HEADER_MENU1_LANGUAGE_02_LINK'].substr($_SERVER["PHP_SELF"]."?".$_SERVER["QUERY_STRING"],25); } ?>'><img src="<?php echo $lang['HEADER_MENU1_LANGUAGE_02_IMG']; ?>" width="12" height="12" alt="<?php echo $lang['HEADER_MENU1_LANGUAGE_02_ALT']; ?>"><?php echo $lang['HEADER_MENU1_LANGUAGE_02']; ?></a></li>
<li><a href='<?php if ($test == "" ) { echo $lang['HEADER_MENU1_LANGUAGE_03_LINK']."&content=home"; } else { echo $lang['HEADER_MENU1_LANGUAGE_03_LINK'].substr($_SERVER["PHP_SELF"]."?".$_SERVER["QUERY_STRING"],25); } ?>'><img src="<?php echo $lang['HEADER_MENU1_LANGUAGE_03_IMG']; ?>" width="12" height="12" alt="<?php echo $lang['HEADER_MENU1_LANGUAGE_03_ALT']; ?>"><?php echo $lang['HEADER_MENU1_LANGUAGE_03']; ?></a></li>
<li><a href='<?php if ($test == "" ) { echo $lang['HEADER_MENU1_LANGUAGE_04_LINK']."&content=home"; } else { echo $lang['HEADER_MENU1_LANGUAGE_04_LINK'].substr($_SERVER["PHP_SELF"]."?".$_SERVER["QUERY_STRING"],25); } ?>'><img src="<?php echo $lang['HEADER_MENU1_LANGUAGE_04_IMG']; ?>" width="12" height="12" alt="<?php echo $lang['HEADER_MENU1_LANGUAGE_04_ALT']; ?>"><?php echo $lang['HEADER_MENU1_LANGUAGE_04']; ?></a></li>
<li><a href='<?php if ($test == "" ) { echo $lang['HEADER_MENU1_LANGUAGE_05_LINK']."&content=home"; } else { echo $lang['HEADER_MENU1_LANGUAGE_05_LINK'].substr($_SERVER["PHP_SELF"]."?".$_SERVER["QUERY_STRING"],25); } ?>'><img src="<?php echo $lang['HEADER_MENU1_LANGUAGE_05_IMG']; ?>" width="12" height="12" alt="<?php echo $lang['HEADER_MENU1_LANGUAGE_05_ALT']; ?>"><?php echo $lang['HEADER_MENU1_LANGUAGE_05']; ?></a></li>
</ul>
</li>
</ul>
</div>
Die einzelnen Sprachen sind in den Dateien language.de.php usw hinterlegt. Die sind dort einfach in einem Array drin ... Bsp:
PHP:
<?php
/*
------------------
Language: deutsch
------------------
*/
$lang = array();
// header_menu1
$lang['HEADER_MENU1_ABOUT'] = 'Über ECB';
$lang['HEADER_MENU1_CONTACT'] = 'Kontaktieren Sie uns';
// header_menu 1 languages
$lang['HEADER_MENU1_LANGUAGE_01'] = 'Deutsch';
$lang['HEADER_MENU1_LANGUAGE_01_ALT'] = 'Deutsch';
$lang['HEADER_MENU1_LANGUAGE_01_LINK'] = '?lang=de';
$lang['HEADER_MENU1_LANGUAGE_01_IMG'] = 'pic/icons/GermanyFlag.png';
$lang['HEADER_MENU1_LANGUAGE_02'] = 'English';
$lang['HEADER_MENU1_LANGUAGE_02_ALT'] = 'English';
$lang['HEADER_MENU1_LANGUAGE_02_LINK'] = 'index.php?lang=en';
$lang['HEADER_MENU1_LANGUAGE_02_IMG'] = 'pic/icons/UnitedKingdomflag.png';
/*usw*/
php>
Final wird der content ueber xml Dateien eingebunden, in jeder Datei (content=home oder content=aboutus) gibt es 5 IDs wo jede ID fuer eine Sprachvariante steht:
PHP:
<div class="main">
<?php
if(isSet($_GET["content"]))
{
$content = $_GET["content"];
}
switch ($content) {
case "home":
$datei = "home.xml";
break;
case "aboutus":
$datei = "aboutus.xml";
break;
}
if (file_exists("$datei")) {
$xml = simplexml_load_file("$datei");
$path ="/content/artikel[@id=".$id."]";
if (!$res = $xml->xpath($path)) {
echo "Artikel nicht vorhanden!";
}
else {
echo "<h1>".$res[0]->titel."</h1>";
echo "<p><b>".$res[0]->teaser."</b></p>";
echo "<p>".$res[0]->inhalt."</p>";
}
}
else {
exit("Konnte Datei nicht laden.");
}
?>
</div>
Und noch die xml in der der Content, in dem Beispiel Home, gespeichert ist:
HTML:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<content>
<artikel id="1">
<meta>
<keywords>home, deutsch</keywords>
<description>home, deutsch</description>
</meta>
<titel>HOME DEUTSCH</titel>
<teaser>Der Teaser, eine kurze Beschreibung</teaser>
<inhalt>Der Artikelinhalt</inhalt>
</artikel>
<artikel id="2">
<meta>
<keywords>home, english</keywords>
<description>home, english</description>
</meta>
<titel>HOME ENGLISCH</titel>
<teaser>Der zweite Teaser, eine kurze Beschreibung</teaser>
<inhalt>Der zweite Artikelinhalt</inhalt>
</artikel>
</content>
Wie das Ganze schlussendlich funktioniert kannst du dir
HIER anschauen. Zur Info: Die Sprachen ES FR und CH sind momentan noch nicht uebersetzt, es funktionieren also nur EN und DE.
Hoffe das hat geholfen und ist nicht zu verwirrend ;) ... and den Rest von euch Profis: Wenn wer in meiner Methode was sieht was man auf jeden Fall anders machen sollte bzw. verbesser kann, immer her mit den Tips!! Danke!