dynamischer und statischer Content mehrsprachig

splat

Erfahrenes Mitglied
Hi,

zu diesem Thema habe ich hier zwar schon den ein und anderen Beitrag entdeckt, aber die Musterlösung für meinen Fall habe ich immernoch nicht gefunden. Also ich habe zur Zeit die Domains .de und .com. Die Webseite befindet sich komplett auf der .de Domain und .com ist momentan einfach nur eine Weiterleitung nach .de. Jetzt soll die Seite umgestaltet werden, und eben auch in Englisch verfügbar sein. Es wäre doch am geschicktesten, die .com Adresse als Hauptseite mit der Standardsprache Englisch zu verwenden, und alle Aufrufe von .de nach http://www.website.com/?lang=de zu leiten, so dass dann dort der Content in Deutsch angezeigt wird, oder was denkt ihr?

Des weiteren bin ich noch unschlüssig wie ich den Content dann am geschicktesten anzeigen lassen soll. Die Sprache wird natürlich in der Session gespeichert, aber wie würdet ihr das nun realisieren? Auf der Katalog Seite stehen die Artikel, die in der Datenbank in Englisch und Deutsch gespeichert sind. Dazu müsste ich mir wohl eine Funktion basteln. Und dann gibt es eben auch noch statischen Content wie z.B. ein Anfahrtsplan, Kontaktformular, usw. Ich habe schon etwas über die XML Variante gelesen, aber da steige ich noch nicht so ganz durch. Es sollte eben alles einfach leicht zu erweitern sein.. man weiß ja nie was kommt, und da möchte ich jetzt lieber gleich zu Beginn alles richtig machen.

Wie würdet ihr das ganze anstellen?

Gruß,
Marc
 
es kommt ganz drauf an was du machen willst:

Du kannst die Seite 2 mal erstellen (braucht halt mehr Speicherplatz) und dann sind .com und .de verschieden.

Wenn du die Sprache in Sessions Speichern willst dan wäre natürlich das lang=de angebracht. Du müsstest dann allerdings jede Bildschirmausgabe durch

PHP:
<?php 
    if(lang=de) 
        echo("Text");
    else
        echo("Text2");
ersetzen.
Text und Text2 kommen dann aus deiner Datenbank (du machst das vermutlich mit SQL, damit kenne ich mich aber nicht aus, deswegen musst du den Rest selbst machen aber ich empfehle eine Tabelle der Form:

DEU ENG
Text Text2

und dann beide Sachen auslesen und entscheiden was genommen werden soll

mir fällt aber auch grad noch ein dass du auch einfach Statischen Text nehmen kannst, das erspart das ganze Datenbankzeugs)
 
Hi,

das Problem hatte ich auch. Schau Dir mal diese Seite http://www.kempson.de (über Designgeschmack bitte NICHT diskutieren, ist meine 3. Seite überhaupt) an. Dort sind alle texte in einer SQL-Datenbank gespeichert, für jede Seite 3 Einträge, ob Englisch (en), Deutsch (de) oder Französisch (fr). Mit "index.php?lang=" kannst immer die SPrache auswählen.
Hinzufügen solltest Du auch eine "site=". Viele vergessen diese Kleinigkeit aber als Besucher ist es nervig beim Sprachenwechsel immer wieder von vorne anfangen zu müssen. Mit der Variablen "site" lese ich dann auch gleichzeitig meine Datenbankeinträge aus. Ist eigentlich nicht schwer.

Gruß
Loveboat
 
Was hältst du davon wenn du Konstanten verwendest in denen der Text steht und je nach Sprache wird die entsprechende Datei eingebunden.

Gabriel
 
Hallo,

vielen Dank für die schnellen und zahlreichen Antworten.
Also gettext habe ich mir schon angesehen, das ist jedoch auf dem System nicht verfügbar. Also muss etwas anderes her.

Die Seiten zwei mal erstellen möchte ich eigentlich auch nicht. Es sind zwar nicht sehr viele statische Seiten, und Speicherplatz hätte ich auch genug. Aber wenn ich etwas zu ändern habe, dann möchte ich keine 20 Seiten ändern. Und wer weiß, wieviele Sprachen noch dazu kommen.

Die Seite Kempson.de ist doch soweit ganz gut. So in etwa sollte das ganze ablaufen.. lang=de muss ja nicht unbedingt angezeigt werden. Über die Fähnchen wird dann einfach der Wert in der Session geändert und die selbe Seite wieder aufgerufen. Hast du dort noch irgendwelchen statischen Inhalt, oder wirklich ALLES in der db?
Das wäre vielleicht noch das beste..

Donaufischer: wie meinst du das mit den Konstanten? Könntest du mir vielleicht ein kleines Beispiel geben?

Marc
 
Wenn du das ganze direkt mit einem Templatesystem wie Smarty verbindest, hast du sogar direkt ein Caching System mit drin ;)

Dann bräuchtest du nur noch die Platzhalter setzen und den Rest kannst du bequem per PHP einbinden.
Ob dann der Inhalt aus Dateien (oder Konstanten) kommt oder aus der Datenbank macht dann keinen wirklichen Unterschied mehr.
Wobei es bei Mengen an Text eher zur Datenbank geht, da die Datei immer ganz geparsed wird und du der Datenbank sagen kannst, was du genau haben willst.
 
Man kann alles in der Db speichern, man muss es dann nur normalisiert anwenden, indem eine Tabelle für die Sprachen da ist:

Sprachen
ID | Kürzel | Sprache | Default
1 | DE | Deutsch | false
2 | EN | Englisch | true
3 | FR | Französisch | false
...

Navigation
ID | Link
1 | index.php
2 | impressum.php

Navigation_Lokalisiert
NaviID | SprachID | Name
1 | 1 | Startseite
1 | 2 | Homepage
2 | 1 | Impressum
2 | 2 | Imprint

Französisch hab ich mal im Verlauf weggelassen, da ich das net kann ;) Aber so kann man dann natürlich alles realisieren. Das gleiche auch bei News:

NewsID | Erstellt | AutorID
1 | 02.04.2007 | 1

Members
MemberID | Nickname
1 | Radhad

News_Lokalisiert
NewsID | SprachID | Überschrift | Text
1 | 1 | Demo | Dies ist ein Test.
1 | 2 | Demo | This is a test.


Gruß Radhad
 
Hallo

Die Definitionen stehen in einer eigenen Datei
PHP:
define("WC", "Willkommen");
define("LI", "Einloggem");

Das steht im Hauptcode
PHP:
echo WC;
echo LI;

Ich hoffe ich konnte dir helfen.

Gabriel
 
Hi,

dieses Smarty Template System... müsste ich dazu nicht die ganze Seite neu basteln? :-)

hmm ich denke ich werde mich wohl für die Variante Datenbank entscheiden, wenn ich das schon verwende für meinen Content und die Settings dann kann ich da auch die Navigation reinpacken. Das mit der NaviID und der SprachID sieht ja soweit ganz nett aus.. und flexibel für später bin ich durch die Datenbank ja auch.

Noch eine Frage:
Die Sache mit den Domains ist so schon am geschicktesten, oder?
Und wie macht man solche Sachen wie http://www.webseite.de/de/contact ?
Das läuft doch alles über apache mod und hat nichts mit php selbst zu tun, oder? Also nicht das ich dann gegen Ende noch mal alles umstricken darf... daher frage ich besser gleich :-)

vielen Dank nochmal für alle Ratschläge! :)
Marc
 
Zurück