Hallo zusammen!
Bastel gerade an meiner Website und möchte diese in zwei Sprachen machen. Wie muss ich das anstellen, damit die Bilder nicht neu geladen werden, sondern nur der Text ausgetauscht wird? Hat da jemand eine Idee?
Danke und Gruss, Björn
Hallo zusammen!
Bastel gerade an meiner Website und möchte diese in zwei Sprachen machen. Wie muss ich das anstellen, damit die Bilder nicht neu geladen werden, sondern nur der Text ausgetauscht wird? Hat da jemand eine Idee?
Danke und Gruss, Björn
Moin!
Nach dem ersten Laden der Seite befinden sich die Bilder im Browsercache und werden dann normalerweise ohnhin nicht neu geladen, wenn sich die URL der Bilder nicht ändert.
Am Besten erreichst du das mit PHP: HTML-Skelett erstellen mit allen Bilder, Grafiken und Platzhaltern für den Text. Die Platzhalter ersetzt du beim Aufruf der Seite durch die Texte in der gewünschten Sprache. Ich mache das so bei eine viersprachigen HP (französisch, englisch, deutsch und Italienisch)., klappt reibungslos.
G.a.d.M.
Ronald
Moin Ronald!
Vielen Dank für den Tip! PHP kann ich noch nicht (kann ja gerade erst seit gestern abend ein bisschen html). Dann werd ich einfach zwei Seiten machen, auf deutsch und auf englisch, ist ja eh nichts grosses und wenn die Bilder noch im Cache sind ist das ja überhaupt kein Problem.
Gruss Björn
@Roland: Kannst du da mal ein Beispiel posten? D.h. wie kann man die Texte in die Platzhalter laden?
alternativ halt mehrere seiten.... (wennst kein php kannst)
is halt umständlich beim ändern...
Zitat von Anonymous@Roland: Kannst du da mal ein Beispiel posten? D.h. wie kann man die Texte in die Platzhalter laden?
Ich versuche es mal kurz zu erklären.
Das Zauberwort heißt "str_replace".
1. du erstellst dir Textdateien mit den Texten deine homepage. Vor jeden Text setzt du einen oder mehrere Werte für Variblen, die die Texte später eindeutig zuordnen.
Die Variablen und den jeweiligen Text trennst du durch ein Trennzeichen, welches sonst im Text nicht vorkommt, z.B. den Strich "|" neben dem "<" auf der Tastatur, erreichbar ist der mit AltGr +"<":
de.text
1|T1|Willkommen auf meiner Homepage
1|T2|Diese ist der Text der ersten Seite
1|T3|Hier ist noch mehr Text für die erste Seite
2|T0|Überschrift der 2. Seite
2|T1|ein Teil des Text der 2. Seite
---
en.txt
1|T0|Welcome to my homepage
1|T2|here is the text for page one
1|T3|this is more text for the first page
2|T0|Headline of Page 2
2|T1|a part of the text of page 2
2. Du erstellst dir eine ganz normale HTML-Seite mit Bildern und Grafiken, wie du es möchtes.
Die Texte läßt du weg und setzt stattdessen eindeutige Platzhalter, Beispiel:
willkommen.html
....
<body>
<h1>[T0]</h1>
<div id="text1">[T1]</div>
<table border="0" cellspacing="10" celpadding="0">
<tr>
<td>[img]bild_xyz.jpg[/img]</td>
<td>[T2]</td>
</tr>
</table>
... usw.
Alles anzeigen
Nun benötigst du ein PHP-Script, welches das ganze zusammenführt.
Das Script muß natürlich Informationen haben, um welche Seite es grade geht und welche Sparche geladen werden soll. Diese beiden Werte kannst du z.B. durch Get-Variablen übergeben, oder aber auch (teilweise) in Session speichern.
Im Beispiel verwende ich die Variable "page" für die Seite und "lang" für die Sprachem "de" steht für deutsch, "en" für englisch.
Die Übergabe erfolgt per Get, also z.B. mit
So geht es dann weiter.
main.php
<?php
// Script zum Zusammenführen der Dateien
extract($_GET);
if(!lang) $lang = "de" // deutsch, wenn keine Sprache gesetzt wurde
if(!page) $page = 1 // Startseite, falls keine Seite gesetzt wurde (z.B. beim ersten Aufruf der HP)
$Seiten = array(); // ein Array mit den Seitennamen wird erstellt
$Seiten[1] = "willkommen.html";
$Seiten[2] = "seite2.html";
$Seiten[3] = "seite3.html";
$Seiten[4] = "kontakt.html";
$Template = $Seiten[$page]; // die HTML-Datei für die gewählte Seite wird anhand der Page-Nr.aus dem Array ausgewählt
$content = join('', file($Template )); // die komplette HTML-Datei wird in eine Variable eingelesen
$textdatei = file(file("$lang.txt")) // de.txt oder en.txt werden als Quelle für die Texte festgelegt
for($i=0;$i<count($textdatei);$i++) // alle Datensetze der Textdatei werden durchlaufen
{
list($Seite,$Platz,$Text) = split("\\|",chop($textdatei[$i])); // Datensatz wird aufgesplittet
if($Seite != $page) continue; // wenn die Seitennummer falsch ist, wird mit dem nächsten DS weiter gemacht
$content = str_replace("[$Platz]", $Text, $content); //Platzhalter werden gegen die richtigen Inhalte ausgetauscht
}
echo $content;
?>
Alles anzeigen
Voila, das ist eigentlich alles.
G.a.d.M.
Ronald