Markus: mehrsprachige, erweiterbare webseite aus dynamischer datenbank

hallo!

ich hätte gerne mal eure meinung gehört. ich möchte gerne eine webseite mit php und mysql so gestalten, dass sie alle texte, titles, button-beschriftungen aus der datenbank liest, je nach eingestellter sprache...

die datenbank soll aber erweiterbar bleiben, um später per admin-interface weitere werte hinzufügen zu können...

außerdem soll per admin-interface auch eine weitere sprache hinzugefügt werden können...

1. frage: wie würdet ihr das angehen?

nehmen wir an, ich habe nun eine tabelle "setup" und eine funktion "getsetup()"...

2. frage: wäre es besser an jeder stelle, wo etwas steht eine abfrage der datenbank zu machen und diesen einen wert auszulesen oder wäre es besser am anfang der seite alle werte auszulesen und einen großen array daraus zu gestalten und dann überall nur noch den wert des arrays auszugeben?

vorab vielen dank für eure zeit und eventuell die ein oder andere anregung oder hilfe...

gruß

markus

  1. Hallo,

    ich persönlich habe es so gelöst, dass die Daten (Sprach-/Textstücke) in einer XML-Datei liegen und diese beim Start in ein Array geladen werden (Session). Dann gibt es noch eine Funktion für die Abfrage der entspr. Daten. Ein DB-Zugriff bei jeder Abfrage/Gebrauch, sollte man wohl sein lassen. Die Datenhaltung hingegen kann natürlich auch in einer DB erfolgen.

    hth
    kalle

  2. Hallo Markus,

    ich habe das folgendermaßen gemacht:
    am Anfang jeder Seite erzeuge ich ein Array mit allen notwendigen Übersetzungs-Bezeichnern (wie von Dir vorgeschlagen) und hole mir dann diese Übersetzungen aus der Übersetzungs-Tabelle.
    Z.B. gekürzt so:

    ===============================
    // translations that are used on EVERY page
    $arrRequiredTranslations = getStandardTranslationIdentifiers();

    // translations for THIS page
    // CRUMBLINE
    $arrRequiredTranslations[] = "Crumbline_imprint";
    ...
    // TEXTBLOCKS
    $arrRequiredTranslations[] = "ContactAddress";
    ...

    // initialize translations array
    $arrTranslations = getTranslations($arrRequiredTranslations, $language);

    echo $arrTranslations[Crumbline_imprint];
    echo $arrTranslations[ContactAddress];

    Wiederverwendbare Komponenten stellen ihr eigenes Übersetzungsarray zusammen, so finden also pro Seitenaufruf durchaus mehrere DB-Lesezugriffe statt, aber es werden Fehler vermieden und ich habe mehr Überblick.

    Das Ganze sieht dann so aus:
    www.umdiewelt.de
    www.break-fresh-ground.com
    (ja, ich weiß, sind nicht anklickbar!)

    Gruß,
    Eddie

  3. Hi,

    wäre es besser an jeder stelle, wo etwas steht eine abfrage der datenbank zu machen und diesen einen wert auszulesen oder wäre es besser am anfang der seite alle werte auszulesen und einen großen array daraus zu gestalten und dann überall nur noch den wert des arrays auszugeben?

    ein einziger Datenzugriff ist "besser".

    Gruss,
    Lude