 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, Deine Frage stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
30.06.2005, 18:06
|
#1
|
|
TP-Veteran
Registriert seit: Apr 2001
Ort: Münster und gerade aus Brisbane
|
Mehrsprachige Website
Hallo zusammen,
ich mache mir derzeit Gedanken darüber, wie eine mehrsprachige Website zu realisieren ist.
Die zentrale Frage die sich für mich stellt ist, wie ich die Texte der verschiedenen Sprachen am besten ablege. Für mich sind vorallem folgende Faktoren wichtig: - einfache Erweiterung um eine weitere Sprache
- sinnvolle und strukturierte Speicherung (also nicht unbedingt als 2dimensionales Array
Folgende Realisationsformen sind mit durch den Kopf gegangen:
Möglichkeit 1:
Speicherung der Texte in einem mehrdimensionalen Array.
PHP-Code:
<? $array[sprache]['textID'])="der text";?>
und dann einbinden in Form von
PHP-Code:
<? include($_REQUEST['sprache'].".inc.php");?>
Finde diese Methode eigentlich weniger schön, weil es ich eigentlich sehr viel davon halte Inhalt (text) von der Programmierung möglichst weit zu trennen, was hierbei ja nun nicht der Fall ist.
Möglichkeit 2:
Speicherung in einer Datenbank. Die Texte sollen in einer Datenbank gespeichert werden, hier fehlt mir nur leider noch die richtige Struktur, die sich da optimalerweise anbieten würde. Hat jemand hierzu eine Idee?
Möglichkeit 3:
Realisation über eine XML-Datei. Gibt es für soetwas schon eine XSL-Vorlage?
Meine Idee war ein Aufbau wie dieser: (für jede Sprache einzeln)
Code:
...
<rubrik id="669" name="rubrikname">
<text id="4711">Hier steht der Text in der entsprechenden Sprache</text>
<text id="4712">Hier steht der Text in der entsprechenden Sprache</text>
</rubrik>
....
Dies ist eigentlich die von mir zur Zeit am sinnvollsten angesehende Variante.
Wie sieht hier die Realisation der Einbindung in PHP(so wie es jetzt aussieht V4!) aus? Gibt es dafür schon fertige Klassen?
Was meint ihr dazu? Wer hat Erfahrung mit der Realisation mehrsprachiger Seiten und könnte hier kurz sein Vorgehen und seine Erfahrungen damit umreißen.
Wie das ganze später in die Seite zu integrieren ist, ist ein anderes Thema. Sachen wie Sprachauswahl, einbinden der richtigen Texte etc. sollten allerdings kein Problem darstellen.
Herzlichen Dank für die Hilfe
Grüße
Jan
|
|
|
30.06.2005, 19:50
|
#2
|
|
TP-Insider
Registriert seit: Aug 2003
Ort: Bochum
|
Hier was zu Möglichkeit 2:
Tabelle 1:
id / sprache
--------------
1 / deutsch
2 / englisch
Tabelle 2:
id / text / sprache_id / stelle
-------------------------------
1 / Hallo der Text / 1 / 23
2 / Hello the text / 2 / 23
dann könntest du mittels
'select text where stelle = 23 && sprache_id = '.$sprache_id;
den text der jeweiligen Sprache suchen.
|
|
|
30.06.2005, 23:08
|
#3
|
|
TP-Insider
Registriert seit: Aug 2002
Ort: Sinsheim
|
hi, hab bisher zwar erst einmal ne mehrsprachige seite gemacht, und dann die sachen in etwa so in ner datenbank abgelegt wie pxlArtizzt das vorgeschlagen hat.
Hat eigentlich gut funktioneirt und vom erweitern is das denke ich auch ne gute lösung
__________________
"Dieses Business ist binär. Du bist eine Eins oder eine Null, lebendig oder tot. Es gibt keinen zweiten Sieger." - Gary Winston (StartUp)
|
|
|
01.07.2005, 07:56
|
#4
|
|
TP-Moderator
Registriert seit: Jan 2004
Ort: Bayern, Regensburg
|
Hast Du generell schon mal an ein CMS dazu gedacht. Meist unterstützen schon weniger komplexe CMS Mehrsprachigkeit. Die Inhalte kommen hier auch aus einer DB, nur das Du Dich um das "switchen" der Sprache nicht so im Detail kümmern mußt, wie wenn Du das selbst codest.
Muß aber dazusagen, das ich selbst auch noch keine mehrsprachige Site gemacht hab. Aber ich würds wenn dann per CMS umsetzen.
|
|
|
01.07.2005, 08:17
|
#5
|
|
TP-Special Mod
Registriert seit: Feb 2005
Ort: Haan / NRW
|
Ich habe das bisher immer so gelöst, das ich eine Tabelle hatte mit folgendem Aufbau:
id - kategorie - ukat - de - en - ...
Das hat den Vorteil, das man die Inhalte leichter abgleichen / pflegen kann und erleichtert auch die Aufrufe:
SELECT `$language` FROM `texte` WHERE ...
Nachteil - bei Erweiterung auf eine neue Sprache muss man der Tabelle ein Feld hinzufügen.
|
|
|
01.07.2005, 10:52
|
#6
|
|
TP-Supporter
Registriert seit: Jul 2002
Ort: Frankfurt/M.
|
Hallo,
wenn Du alle Inhalte Deiner Seite ohnehin durch ein CMS in der DB stehen hast, kannst Du die Inhalte dort auch gleich mehrsprachig ablegen.
Aber was machst Du mit den statischen Textschnipseln die auf jeder Seite vorkommen wie bpsw. Standardfloskeln, Navigationslinks etc. ?
Die müssen ja auch mehrsprachig sein. Und sowas in der DB abzulegen, halte ich für übertrieben umständlich.
Bessere Erfahrungen habe ich da mit Textfiles gemacht, die einfach alle Sprachschnipsel vorhalten. (für die statischen Teile!!)
Interessant in dem Zusammenhang ist parse_ini_file()
du kannst dir eine ini-datei erstellen, die bspw. so aussieht:
Code:
[en]
001 = "Home"
002 = "Go to Top"
003 = "...."
[de]
001 = "Startseite"
002 = "Seitenanfang"
003 = "..."
Diese Datei läßt Du einfach immer mit der o.g. Funktion parsen und schreibst das Ergebnis bspw. in $arrText
Dann sorgst du noch dafür, das die jeweilige Ausgabesprache irgendwie verfügbar ist ($lang = "en" oder $lang="de" oder sowas).
Darüber kannst Du dann einfach Deine Textfetzen ausgeben:
echo $arrText[$lang]['001']
Ist sehr einfach umzusetzen, geht sauschnell (parse_ini_file() macht gut Dampf), und Du hast wunderbar Code und Inhalt getrennt.
Realestates-Costablanca.com arbeitet bspw. auf diese Art - die Beschreibungen der Häuser etc. kommen alle aus einer DB, die Texte und die Navigation aus einer solchen Config-Datei wie oben beschrieben.
Wobei ich das mit XML-Datei auch sehr interessant finde, auf die Idee kam ich noch gar nicht.
Cheers,
Daniel
|
|
|
01.07.2005, 16:15
|
#7
|
|
TP-Insider
Registriert seit: May 2002
Ort: Niederlande
|
Wir hatten einmal eine applikation, da eignete sich kein CMS da viel zu viel PHP-code. Wir hatten es damals mit eigenen tags geloest.Also <german>deutsch</german><englisch>aengliesch</englisch>
alles an output wird bis zum ende der Seite an eine variabele gehaengt und dann ein regulaerer Ausdruck zum filtern der "sprachtags".
Dies sollte man auf keinen Fall bei textlastigen seiten verwaenden als ersatz fuer ein CMS, da es dann auf die performance geht. Fuer applikationen ist es finde ich eine gute loesung....
Volkan
|
|
|
01.07.2005, 19:40
|
#8
|
|
TP-Supporter
Registriert seit: Feb 2005
|
Also bisher habe ich sowas noch nicht realisiert, aber so wie ich das sehen, scheint die Lösung mit der Datenbank die einfachste zu sein. Allerdings würde ich das dann so aufbauen, dass ich für jede Sprache eine eigene Datenbank einrichte und dann per Parameter die enstprechenede Datenbank auswähle. Dabei bleibt der Inhalt der Datenbanken gleich.
Beispiel (index.php?lang=eng):
PHP-Code:
mysql_select_db("PROJEKTNAME_eng);
Beispiel (index.php?lang=ital):
PHP-Code:
mysql_select_db("PROJEKTNAME_ital);
|
|
|
01.07.2005, 21:30
|
#9
|
|
TP-Veteran
Registriert seit: Apr 2001
Ort: Münster und gerade aus Brisbane
|
Hallo,
Ersteinmal herzlichen Dank für die zahlreichen Antworten.
Also CMS kommt nicht in Frage da dies einfach unmöglich ist. Es handelt sich um eine vollkommen dynamische Seite die nichts mit Content im eigentlichen Sinne zu tun hat und viel zu viel PHP-Code enthält (genaue Erläuterungen würden den Rahmen sprengen)
@halla: Deine Lösung hört sich sehr interessant an, danke für den Link, da werde ich mich mal einlesen. Sowas kann man doch sicher auch für Konfigurationsdateien nutzen oder?
@Driver: sehe nicht ganz den Sinn in mehreren Datenbanken, soll ich dann alle inhalte, die nicht von mehrsprachigkeit abhängen auch duplizieren?
@muschpusch: Wie sah eure XML-Datei genau aus und wie habt ihr das genau eingelesen?
@pxlArtizzt / St@eff.en /jow: eine datenbank scheint wirklich die am einfachsten zu realisierende Möglichkeit zu sein. Hat sich jemand schonmal eine sinnvolle Systematik ausgedacht, wie man diese Texte am Besten ablegt. Mir würde spontan nur eine Ablage nach Rubriken / Artikel etc. einfallen. Gibt es dazu eine Alternative?
Danke und Grüße
Jan
|
|
|
02.07.2005, 11:14
|
#10
|
|
TP-Insider
Registriert seit: May 2002
Ort: Niederlande
|
War bei uns so ein bisschen quick & dirty programming kein xml... Da die applikation bei uns schon einsprachig bestand haben wir in den source code einfach mehrere eigene sprachtags integriert also so etwas:
PHP-Code:
$output.=was_auch_immer($eins);
$output.="<viel HTML code><german>ich bin der deutsche text</german><englisch>i'm the english one....</englisch></viel HTML code>";
und am ende der datei wendest du einen regulaeren ausdruck auf $output an der die sprache waehlt und alle tags entfernt. Es scheint auf den ersten blick unuebesichtlich aber du kannst die alle sprachtags via regexp ausgeben lassen und sortieren und dann auch via regexp neue sprachtags einfuegen (oder einfach per hand)...
|
|
|
02.07.2005, 13:05
|
#11
|
|
TP-Veteran
Registriert seit: Apr 2001
Ort: Münster und gerade aus Brisbane
|
Na gut, dass ist ja dann wirklich nicht "die feine englische" Programmierart ;-). Ich will die Texte auf jeden Fall auslagern und möglichst (weit ;-) weg vom PHP-Code haben. Da das schon reichlich Code drin sein wird und das ganze auch in ein paar Jahren noch wartungsfreundlich sein soll
|
|
|
02.07.2005, 13:25
|
#12
|
|
TP-Insider
Registriert seit: Aug 2002
Ort: Sinsheim
|
Also ich habs bisher mal so gemacht, dass ich eben den Content nach Rubriken getrennt hab und dann eben die Tabellen für mehrere Sprachen dann mit dem angehängten Länderkürzel wie dann z.B. : news_de, news_en, news_fr, ... gemacht hab.
Allerdings wärs auch ne Überlegung wert die Daten nur nach Rubriken zu unterteilen und dann den Einträgen eine id für die Sprache zu mitzugeben, sodass dann eben je nach Sprache diese angezeigt werden.
Wenn es sich allerdings um ein Projekt mit vielen Beiträgen/Sprachen handelt würde ich eher zu der Methode mit den verschiedenen Tabellen greifen, da dabei auch die Strukturierung besser ist wie ich finde.
__________________
"Dieses Business ist binär. Du bist eine Eins oder eine Null, lebendig oder tot. Es gibt keinen zweiten Sieger." - Gary Winston (StartUp)
|
|
|
02.07.2005, 13:45
|
#13
|
|
TP-Moderator
Registriert seit: Feb 2001
Ort: Helmstedt/Wolfsburg
|
Ich habe soetwas bisher immer über Smarty gelöst. Dort kann man ebenso Konfigurations-Dateien nutzen... und gut ist
Zum Editieren der Sprachen habe ich einen eignen kleinen Part geschrieben, mit dem man diese conf-dateien verändern kann.
Für den Part in einer DB, z.B. bei der Beschreibung eines Artikels arbeite ich auch immer mit suffixen name_de, name_en, name_fr,... Die Programmparts, die für die Pflege solcher Datensätze da sind, sind halt so aufgebaut, dass Sie die Felder je nach zuvor definierter Sprache zur verfügung stellen und auch updaten.
Gruss
Jan
|
|
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
Thema durchsuchen |
|
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:38 Uhr.
|
 |