/Programmiertechnik. Mehrspr. Seite mit Datenbank oder Datei ???
Compu
- php
Hi,
ich programmiere in php4 und habe mysql zur Verfügung.
Die Seite die ich erstellt habe soll 5-sprachig sein.
Bisher habe ich für alle Übersetzungen eine "translation.php"-Datei verwendet.
Nun frage ich mich, ob ich nicht besser alles was nicht mit Programmierung zu tun hat in die Datenbank packe.
Wie sollte aber die Tabelle aussehen?
wort| de | en | fr | it | es
... .. .. .. .. ..
Bestimmte Wörter benutze ich auf mehrern Seiten!
Ich müsste dann ja zig,zig sql-Anweisungen haben, wenn ich für jedes Wort eine Zeile benützte!
Hilfe!
Danke,
Compu
Halihallo Compu
ich programmiere in php4 und habe mysql zur Verfügung.
Die Seite die ich erstellt habe soll 5-sprachig sein.
Bisher habe ich für alle Übersetzungen eine "translation.php"-Datei verwendet.
Nun frage ich mich, ob ich nicht besser alles was nicht mit Programmierung zu tun hat in die Datenbank packe.
Eine Trennung zwischen Daten und Programm kann nicht schaden und ist empfehlenswert.
Besonders in diesem Kontext macht es Sinn. Warum sollst du Text im Programm ablegen,
welcher u. U. gar nie benötigt wird?
Wie sollte aber die Tabelle aussehen?
wort| de | en | fr | it | es
... .. .. .. .. ..
wenn nicht jeder Tag eine neue Sprache hinzukommt ist das OK.
Bestimmte Wörter benutze ich auf mehrern Seiten!
Ich müsste dann ja zig,zig sql-Anweisungen haben, wenn ich für jedes Wort eine Zeile benützte!
Wörter? Wörter? - Aber, aber, du wirst doch bemerkt haben, wie die Syntax, ja gar die
Semantik von Sprachen unterscheidet... Wenn du jedes Wort übersetzt, kommt der selbe
Müll raus, wie in den Übersetzungsprogrammen. Zudem ist es wirklich ineffizient einen
Query pro Wort auszuführen. Ein (Teil-)Satz macht tausend mal mehr Sinn.
Das Thema wurde auch schon oft Diskutiert, durchsuche das Archtiv nach Mehrsprachigkeit.
Viele Grüsse
Philipp
Wörter? Wörter? - Aber, aber, du wirst doch bemerkt haben, wie die Syntax, ja gar die
Semantik von Sprachen unterscheidet... Wenn du jedes Wort übersetzt, kommt der selbe
Müll raus, wie in den Übersetzungsprogrammen. Zudem ist es wirklich ineffizient einen
Query pro Wort auszuführen. Ein (Teil-)Satz macht tausend mal mehr Sinn.
Nein so war das nicht gemeint. Die Wörter von denen ich hier rede sind Überschriften,etc
Ich will sozusagen mit einem Rutsch ein Array aus der Datenbank einlesen können, dass dann alle Übersetzungen für die Zielsprache beinhaltet.
Danke
Halihallo Compu
Wörter? Wörter? - Aber, aber, du wirst doch bemerkt haben, wie die Syntax, ja gar die
Semantik von Sprachen unterscheidet... Wenn du jedes Wort übersetzt, kommt der selbe
Müll raus, wie in den Übersetzungsprogrammen. Zudem ist es wirklich ineffizient einen
Query pro Wort auszuführen. Ein (Teil-)Satz macht tausend mal mehr Sinn.Nein so war das nicht gemeint. Die Wörter von denen ich hier rede sind Überschriften,etc
Auch Überschriften können mehrere Worte, ja sogar Sätze enthalten.
Ich will sozusagen mit einem Rutsch ein Array aus der Datenbank einlesen können, dass dann alle Übersetzungen für die Zielsprache beinhaltet.
Wozu brauchst du in einem Script alle Übersetzungen? - Der Benutzer wird doch wohl eine
Sprache ausgewählt haben; somit wäre es verschwendend alle Übersetzungen einzulesen.
Nun gut, dass ist nebensächlich.
Nehmen wir an, du hast ein Programm artikel.php, welches einiges an Text und
Überschriften ausgibt. Dann wäre es aus Sicht der Performance Sinnvoll, wenn du ein
Feld 'programm_name / -id' anlegst, sodass die DB die Daten schnell selektieren kann.
Dann kannst du pro Programm gleich alle Überschriften in einem Rutsch einlesen, das ist
wohl in einigen Fällen schneller, als bei jeder Überschrift einen neuen Query
auszuführen (es sei denn, du lagerst für jedes Script über 100'000 Überschriften, von
welchen du dann reel nur 10 benötigst).
Hälst du das Auslesen der Überschriften für Performancekritisch, musst du nach einer
anderen Möglichkeit suchen. Möglichkeiten, die sich hier anbieten wären z. B. extern
gelagerte .txt Dateien mit einfacher Struktur.
Viele Grüsse
Philipp
Wozu brauchst du in einem Script alle Übersetzungen? - Der Benutzer wird doch wohl eine
Sprache ausgewählt haben; somit wäre es verschwendend alle Übersetzungen einzulesen.
??? Hä? Möchte ich doch gar nicht!
Nur alle Wörter einer bestimmten Sprache.
Nehmen wir an, du hast ein Programm artikel.php, welches einiges an Text und
Überschriften ausgibt. Dann wäre es aus Sicht der Performance Sinnvoll, wenn du ein
Feld 'programm_name / -id' anlegst, sodass die DB die Daten schnell selektieren kann.
Dann kannst du pro Programm gleich alle Überschriften in einem Rutsch einlesen, das ist
wohl in einigen Fällen schneller, als bei jeder Überschrift einen neuen Query
auszuführen (es sei denn, du lagerst für jedes Script über 100'000 Überschriften, von
welchen du dann reel nur 10 benötigst).
Du meinst also so?
sprache | tomate | apfel
de|tomate|apfel
engl|tomato|apple
etc?
Dann hätte ich aber Zeilen mit 300 Feldern oder so.
Ich möchte Überschriften und Erklärungen speichern.
Momentan benutze ich eine Datei language.php. Die beinhaltet soetwas:
$gipse="gypsums";
etc ...
Halihallo compu
Wozu brauchst du in einem Script alle Übersetzungen? - Der Benutzer wird doch wohl eine
Sprache ausgewählt haben; somit wäre es verschwendend alle Übersetzungen einzulesen.??? Hä? Möchte ich doch gar nicht!
Nur alle Wörter einer bestimmten Sprache.
ja, ja, is ja gut, man wird doch wohl noch kommentieren dürfen :-)
Nehmen wir an, du hast ein Programm artikel.php, welches einiges an Text und
Überschriften ausgibt. Dann wäre es aus Sicht der Performance Sinnvoll, wenn du ein
Feld 'programm_name / -id' anlegst, sodass die DB die Daten schnell selektieren kann.
Dann kannst du pro Programm gleich alle Überschriften in einem Rutsch einlesen, das ist
wohl in einigen Fällen schneller, als bei jeder Überschrift einen neuen Query
auszuführen (es sei denn, du lagerst für jedes Script über 100'000 Überschriften, von
welchen du dann reel nur 10 benötigst).Du meinst also so?
sprache | tomate | apfel
de|tomate|apfel
engl|tomato|apple
etc?
Uh, nein, sowas käme mir nie in den Sinn, geschweige würde ich es empfehlen. Das
wiederspricht allem, was mir lieb ist ;-)
Dann hätte ich aber Zeilen mit 300 Feldern oder so.
Genau deshalb wäre es ja verwerflich. Das Datenbankschema wäre katastrophal, würde es
mit jedem neuen Wort ändern.
Also, dann versuche ich es nochmal:
Ich stellte mir für eine Mehrsprachige Page etwa folgendes vor:
programm_name | wort | de | en | fr | ...
---------------------------------------------------
aritcles.php Apfel Apfel apple schö nö sä pas ;-) [1]
articles.php Zitrone Zitr. lemo. ...
show.php bla bla blu
wenn du dich also im Programm articles.php befindest, dann kannst du alle Records
mit programm_name='articles.php' auslesen (geht schnell) und sie in einem Array, oder
was auch immer Speichern...
Aber das war's ja nicht, wonach du suchtest... :
Dein Schema ist schon OK, du hattest ja (wort;de;en;fr) vorgeschlagen.
Nun, was ist denn daran auszusetzen, diese einfach aus der DB auszulesen und in einem
assoziativen Array (Hash) zu speichern?
Nebenbei: Eine datenbankgestützte Verwaltung ist nur bedingt zu empfehlen, wenn die
Wörter fast nie ändern und oft gebraucht werden. Dann macht eine Umsetzung über eine
include mehr Sinn (wenn's nicht zuviele Wörter sind).
[1] fr lass ich mal lieber weg, sonst bin ich morgen noch am selben Posting...
Viele Grüsse
Philipp