31
JAN09Webseiten mehrsprachig programmieren
Wie programmiert man Webseiten mehrsprachig? Diese Frage wird oft im Internet gestellt und es gibt eine vielzahl an Möglichkeiten. Unsere Frage dazu, wir programmiert man eine Webseite effizient mehrpsrachig, was sollte man beachten bei Webseiten die viele feste Textpositionen haben und gleichzeitig noch viel Traffic verbuchen? Diese Fragen werden wir hier in diesem Beitrag näher unter die Lupe nehmen.
Ausgangsposition
Wir besitzen eine Webseite wie eBay, hab somit viel Traffic auf der Seite (gut besucht) und viele kleine Textpositionen die mehrsprachig gehalten werden müssen aber wie machen wir das ganze schnell und ohne großen Speicherverbrauch? In unseren Beispielen testen wir das ganze für 10.000 Testpositionen. Folgende Möglichkeiten stehen uns zur Verfügung:
- Sprache in der Datenbank (MySQL)
- Sprache in einem Array (Zahlenindex)
- Sprache in einem assoziativen Array
- Sprache in einzelnen Variablen
- Sprache mit Konstanten definieren
1. MySQL
Fangen wir mir der 1. Möglicheit an, MySQL. Eine Seite mehrsprache über das ablegen der Testpositionen in der Datenbank ist meiner Meinung nach die sauberste Möglichkeit. Weitere Sprachen können einfach über eine Eingabemaske eingepflegt und gepflegt werden. Wenn es aber um ein Projekt wie z.B. eBay geht dann glaub ich kaum das diese Variante am effizientesten ist, auch wenn es viele Möglichkeiten des Cachens gibt (QueryCache, Memcache & Co) für kleiner Webseiten ist diese Variante vollkommend ausreichend.





9 Kommentare
Keeewl… danke, dass des mal jemand getestet hat, zum Glück gehts mit Konstanten am besten
Zu der Editierungsmöglichkeit die ja für den fiktiven Kunden am besten bei MySQL gegeben ist. Hier könnte man mit ein bisschen regexen sicherlich auch eine Bearbeitungsmaske für eine Konstanten definierende Datei schaffen, oder aber einen Spiegel des ganzen in MySQL lagern, und dann daraus die zu inkludierende Datei mit den Konstanten generieren, so hätte man von beiden Varianten die Vorteile ausgeschöpft
Greetz
Hey Kolja,
ja die Idee mit der Eingabe der Konstanten über die MySQL hört sich nett an
coole Sache
Wenn man aber alle Einträge erst aus der MySQL Datenbank ausliest und dann in eine Konstante setzt, könnte ich mir vorstellen, dass auch viel Zeit und Speicher dabei drauf geht.
Ich sitze im moment auch vor dem Problem, ein mehrsprachiges System zu erstellen, und bin mir au ch noch unschlüssig wie ich es mache. Im Moment tendiere ich aber zu gettext, was du übrigens nicht erwähnt hast
Hi Markus,
wenn man dieses auslesen dann nur einmalig macht und nicht bei jedem Seitenaufruf dann wäre dies die Lösung für die Theorie von Kolja und mir
Willst du dann dynamisch ne PHP Datei generieren, die dies dann übernimmt? Die Lösung würd mir nicht so wirklich gefallen
Naja das ganze würde nur richtig sinn machen bei großen Seiten die dynamisch die Texte pflegen wollen wie im Beispiel, bei kleineren Seiten kannst es auch von der DB aus zur Laufzeit immer in defines packen.
Ich meine nur, der SQL Query wäre an dieser Stelle unnötig denn man könnte es ja anderster machen.
Es geht um ein großes Projekt, deswegen is mir die Optimierung sehr wichtig
Schau mal, angenommen wir haben eine Seite mit etwa 200-300 Textpositionen die dann in der Datenbank stehen würden. Du hättest zunächst einen Query der dir ein ResultSet von diesen 200-300 Rows zurück gibt (nicht grad wenig) Als nächstes müsstest du eine Schleife machen die dir alle Werte in eine Konstante packt. Meiner Meinung nach sind das gleich 2 dicke negative Punkte es nicht auf diesen Weg zu machen. Selbst wenn du an dieser Stelle dann QueryCache oder Memcache benutzt haben wir ein Array mit der Anzahl der Textpositionen, dieses müsstest du dennoch schleifen um die Konstanten zu bekommen, dass ist aber dann gleich doppelt gemobbelt, da kannste ja gleich die Sprachsteuerung über Arrays machen
Hast Du schon mal gettext probiert?
Kommentar schreiben