Jurik: Multilingual -> XML, Datenbank oder PHP File

Hallo Leute,

ich sitze jetzt, nebst anderer Fragen und Probleme, schon länger an den Pro und Kontras der Sprachverwaltung von einem relativ großem Internetprojekt.

Ich frage mich in welcher Form man am besten die Sprachfiles speichert.

Sagen wir mal, es sind 10 Sprachen, die im Produktivsystem recht aktuell gehalten werden müssen, aber wenn sie einmal feststeht, nicht täglich geändert werden müssen.

Das es mehrere Files pro Sprache sind, sollte klar sein. (Falls PHP or XML File.)

Sprachen in Datenbank speichern:
Pro:

  • sehr leicht über ein AdminInterface zu administrieren
  • kein Overhead beim Auslesen der benötigten Wörter und Texte
  • speichern von Änderungen ist einfach

Contra:

  • DB Connection

Sprachen in XML speichern:
Pro:

  • relativ leicht über ein AdminInterface zu administrieren
  • schnelles Lesen von der Festplatte
  • Objekt läßt sich gut wieder in XML File speichern

Contra:

Sprachen in PHP (Array) File speichern:
Pro:

  • schnelles Lesen von der Festplatte

Contra:

  • Editieren recht umständlich

Was für Erfahrungen habt ihr gemacht?
Gibt es noch mehr Pro und Contra? Hab ich etwas übersehen?

Viele Grüße,
Jurik

  1. Gibt es noch mehr Pro und Contra? Hab ich etwas übersehen?

    ob du ein array oder xml file händisch bearbeitest ist nicht wirlich mehr oder weniger aufwand - du kannst aber ein xml-file leicht in ein flaches file transformieren oder in ein array umwandeln - von der seite solltest du xml den vorzug geben

    zum thema datenbankverbindung: ob du nun ein xml auslesen musst oder eine datenbank auslesen musst, die dir das genannte array (du wirst doch nicht für jeden übersetzen string der sprachfiles eine eigene abfrage machen) ist eigentlich auch wieder egal ;)

    tendentiell würde ich das xml file empfehlen, wenn du noch über keine datenbank verfügst - wenn du schon eine datenbank hast, dann nimm diese auch her ;)

    1. tendentiell würde ich das xml file empfehlen, wenn du noch über keine datenbank verfügst - wenn du schon eine datenbank hast, dann nimm diese auch her ;)

      Jo - also Datenbank ist durchaus beabsichtigt *g* - siehe mein anderen Thread.

      Von der PHP-Array Variante sehe ich auch ab, da es recht umständlich ist solche PHP-Dateien per Skript zu erstellen und zu administrieren.

      Ein Frontend wird es für die Übersetzer so oder so geben. Nur ist halt die Frage was besser für den Produktiveinsatz ist.

      XML File von Festplatte lesen und ein Array erzeugen. (+ Overhead)
      Gewünschte Daten aus der DB ziehen und ein Array erzeugen. (+DB Zugriff)

      Hat hier niemand Erfahrungswerte kostenlos zu verteilen? *grins*

      1. Hat hier niemand Erfahrungswerte kostenlos zu verteilen? *grins*

        wenn du ein administrationsoberfläche für den benutzer bereitstellen willst, dann ist eine datebank praktikabler, da sie einfacher zu befüllen/ändern ist

        wenn die files nur gelegentlich übersetzt werden, ist die xml-variante interessanter, die ist zwar für menschen nicht so leicht wartbar (naja, eigentlich nicht) aber dafür einfacher und schneller ansprechbar

  2. Hallo Jurik,

    in uralten DOS- Zeiten hatte ich für jedes Programm und jede Sprache eine Datei mit Platzhaltern. Das hat sich damals gut bewährt und so habe ich es wieder gemacht.

    Für jede Sprache habe ich ein HTML- File mit Platzhaltern. Wenn das Programm p000 heißt, ist die deutsche Datei p000_de.htm

    Im PHP- Script fülle ich ein Array mit den auszugebenden Daten und übergebe es an ein Unterprogramm, das die Daten einfüllt.

    Die Übersetzung von Strings allein ist es ja nicht. Denke daran, dass zum Beispiel ein Datum unterschiedlich darzustellen ist.

    PHP:
    array[] = (
     '[tt]'   => $tag
    ,'[mm]'   => $monat
    ,'[jj]'   => $jj
    ,'[jjjj]' => $jjjj
    ...
    );

    Im deutschen HTML- File:
    Heute ist der [tt].[mm].[jjjj] ...

    Im englischen HTML- File:
    Today [mm]-[tt]-[jjjj] ...

    Positiver Nebeneffekt: Ich kann eine "Sprachdatei" anlegen für Benutzer, die nicht alle Daten sehen sollen. Dort fehlen dann die "geheimen" Platzhalter.

    Kalle

    1. Hallo Kalle,

      danke für deine Antwort.

      Aber das ist dann ja schon eher ein Mix aus Template-System und Sprachdatei. Und die von mir aufgeführte PHP-Array Variante. Von der ich nicht ganz so überzeugt bin, da sich diese PHP Dateien per Skript nur umständlich administrieren lassen.

      Da verschiedene Mitarbeiter über ein Frontend halt Übersetzungen machen sollen.

      Ansonsten kommt genau dieses 'Platzhalter'-System in meinem Templatesystem vor :)

      Viele Grüße,
      Jurik