Fahrtenbuch genial!
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 30.06.2005, 18:06   #1
jph
TP-Veteran
 
Benutzerbild von jph
 
Registriert seit: Apr 2001
Ort: Münster und gerade aus Brisbane
jph ist auf einem guten Weg
Arrow

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
__________________
Internetprojekte & Webdesign
www.janheck.de
post@janheck.de
jph ist offline   Mit Zitat antworten


Alt 30.06.2005, 19:50   #2
TP-Insider
 
Benutzerbild von gryphius
 
Registriert seit: Aug 2003
Ort: Bochum
gryphius bringt sich richtig eingryphius bringt sich richtig ein
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.
gryphius ist offline   Mit Zitat antworten
Alt 30.06.2005, 23:08   #3
jow
TP-Insider
 
Benutzerbild von jow
 
Registriert seit: Aug 2002
Ort: Sinsheim
jow macht sich hier sehr viel Mühe
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)
jow ist offline   Mit Zitat antworten
Alt 01.07.2005, 07:56   #4
TP-Moderator
 
Benutzerbild von walter
 
Registriert seit: Jan 2004
Ort: Bayern, Regensburg
walter hilft, wo's gehtwalter hilft, wo's gehtwalter hilft, wo's geht
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.
walter ist offline   Mit Zitat antworten
Alt 01.07.2005, 08:17   #5
TP-Special Mod
 
Benutzerbild von steffenk
 
Registriert seit: Feb 2005
Ort: Haan / NRW
steffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine User
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.
__________________

Typo3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
steffenk ist gerade online   Mit Zitat antworten
Alt 01.07.2005, 10:52   #6
TP-Supporter
 
Benutzerbild von halla
 
Registriert seit: Jul 2002
Ort: Frankfurt/M.
halla ist auf einem guten Weg
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
__________________
Fernsehen hab ich mir abgewöhnt. Verblöden kann ich auch im Internet.
www.RealityOnTheRocks.com
halla ist offline   Mit Zitat antworten
Alt 01.07.2005, 16:15   #7
TP-Insider
 
Benutzerbild von MuschPusch
 
Registriert seit: May 2002
Ort: Niederlande
MuschPusch ist auf einem guten Weg
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
MuschPusch ist offline   Mit Zitat antworten
Alt 01.07.2005, 19:40   #8
TP-Supporter
 
Registriert seit: Feb 2005
Driver ist auf einem guten Weg
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); 
Driver ist offline   Mit Zitat antworten
Alt 01.07.2005, 21:30   #9
jph
TP-Veteran
 
Benutzerbild von jph
 
Registriert seit: Apr 2001
Ort: Münster und gerade aus Brisbane
jph ist auf einem guten Weg
Lightbulb

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
__________________
Internetprojekte & Webdesign
www.janheck.de
post@janheck.de
jph ist offline   Mit Zitat antworten
Alt 02.07.2005, 11:14   #10
TP-Insider
 
Benutzerbild von MuschPusch
 
Registriert seit: May 2002
Ort: Niederlande
MuschPusch ist auf einem guten Weg
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)...
MuschPusch ist offline   Mit Zitat antworten
Alt 02.07.2005, 13:05   #11
jph
TP-Veteran
 
Benutzerbild von jph
 
Registriert seit: Apr 2001
Ort: Münster und gerade aus Brisbane
jph ist auf einem guten Weg
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
__________________
Internetprojekte & Webdesign
www.janheck.de
post@janheck.de
jph ist offline   Mit Zitat antworten
Alt 02.07.2005, 13:25   #12
jow
TP-Insider
 
Benutzerbild von jow
 
Registriert seit: Aug 2002
Ort: Sinsheim
jow macht sich hier sehr viel Mühe
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)
jow ist offline   Mit Zitat antworten
Alt 02.07.2005, 13:45   #13
TP-Moderator
 
Benutzerbild von Stuck Mojo
 
Registriert seit: Feb 2001
Ort: Helmstedt/Wolfsburg
Stuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKE
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
Stuck Mojo ist offline   Mit Zitat antworten
Antwort

  Aktuelles Thema
  TP Hilfe Forum > Web-Editoren & Coding > Traum-Dynamik
Mehrsprachige Website Mehrsprachige Website
« rgb zu hexadecimal | In andere Ordner greifen! »

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Thema bewerten
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.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:38 Uhr.

Powered by: vBulletin Version 3.7 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd. / Search Engine Friendly URLs by vBSEO 3.2.0 ©2008, Crawlability, Inc.
Traum-Projekt.com | Suchen | Archiv | Impressum | Kontakt | | | Nach oben |



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67