Michael: Sprachdatei -> Datenbank oder als Datei ablegen

Ich starte gerade ein für mich großes Projekt. Wie wir in Österreich sagen, a Baustelle 😉.

Doch bevor ich Anfange habe ich ein paar Grundlegende Gedanken, über die ich mir noch nicht genau klar bin.

Es soll mehrsprachig sein. Also brauche ich verschiedene Sprachdateien, in der die einzelnen Wörter, Phrasen, Sätze etc. abgespeichert werden.

Jetzt stellt sich mir die Frage, soll ich diese in einer Datenbank ablegen, oder als Datei die includiert wird?

Leider habe ich dazu nicht die richtige Antwort. Was meint den der Fachpublikumskreis von hier, was für was spricht.

Datenbank oder Datei?

Michael

  1. Tach!

    Jetzt stellt sich mir die Frage, soll ich diese in einer Datenbank ablegen, oder als Datei die includiert wird?

    Das ist nicht die Frage, die man zuerst stellen sollte. Zunächst wären die Anforderungen zu spezifizieren. Es gibt diverse Szenarien, die mit der einen oder der anderen Lösung besser abzubilden gehen. Wenn du deine Anforderungen formuliert hast, kannst du überlegen, ob sie besser mit Datei oder Datenbank zu realisieren gehen.

    Im Betrieb sind Dateien quasi die Read-Only-Variante. Änderungen an den Texte erfordern Änderungen in den Dateien, ein neues Deployment, und gegebenenfalls den Neustart der Anwendung. Datensätze hingegen lassen sich auch im laufenden Betrieb beliebig ändern. Bei Datenbank muss man noch überlegen, ob man die Texte ständig neu liest, oder ob man sie in einem Cache im Speicher vorhalten kann. Den muss man natürlich invalidisieren oder neu befüllen, wenn Texte geändert werden.

    dedlfix.

    1. Hallo,

      Jetzt stellt sich mir die Frage, soll ich diese in einer Datenbank ablegen, oder als Datei die includiert wird?

      Das ist nicht die Frage, die man zuerst stellen sollte.

      nein, sicher nicht. Michael hat "ein großes Projekt" erwähnt, da ist der Gedanke, den ich hier noch ergänzen möchte, eigentlich unerheblich.

      Bei mittelgroßen oder gar eher kleinen Projekten würde ich aber auch fragen: Enthält das Projekt ohnehin schon eine Datenbank? Dann ist alles, was du im Folgenden erklärt hast, schlüssig und nachvollziehbar.

      Bei einem kleinen Projekt, das bisher gut ohne eine DB auskommt, hielte ich es für übertriebenen Aufwand, nur der Mehrsprachigkeit wegen eine Datenbank hinzuzuziehen.

      Möge der Kaffee gut und der Montag kurz sein
       Martin

      --
      The taste of love: The more you get, the more you want
      (aus The Lightning Seeds: Sense)
      1. Erst einmal Danke für die Gedanken Anstöße. Ich denke ich entscheide mich für die Datenbank, alleine schon bei Änderungen glaube ich, das ich da viel besser fahre.

        Natürlich habe ich auch da schon eine Frage. Aber ich glaube es ist besser sie in einem neunen Beitrag zu stellen.

        Michael

        PS: sollte der Dienstag auch kurz sein und nur das Wochenende lang?

        1. Hallo Michael,

          PS: sollte der Dienstag auch kurz sein und nur das Wochenende lang?

          hmm, gute Frage. 😉
          Einer meiner Ex-Kollegen meinte mal, man sollte Werktage und Wochenende tauschen, also zwei Tage arbeiten, fünf Tage frei. Und dann natürlich auch das Gehalt im Verhältnis 5:2 erhöhen, weil man ja viel mehr Zeit hat, das Geld auszugeben.

          Keine Angst, ich will doch nur spielen
           Martin

          --
          The taste of love: The more you get, the more you want
          (aus The Lightning Seeds: Sense)
          1. Hi,

            Einer meiner Ex-Kollegen meinte mal, man sollte Werktage und Wochenende tauschen, also zwei Tage arbeiten, fünf Tage frei. Und dann natürlich auch das Gehalt im Verhältnis 5:2 erhöhen, weil man ja viel mehr Zeit hat, das Geld auszugeben.

            Es sind 6 Werktage pro Woche …

            Danach sollte man dann noch die Tage, an denen man arbeiten muß, zu Blöcken zusammenfassen - bei den ~53 Wochen/Jahr wäre man dann bei Blockbeginn am 1.1. für dieses Jahr durch und hätte den Rest des Jahres frei …

            cu,
            Andreas a/k/a MudGuard

  2. Hallo Michael,

    grundsätzlich geht beides, und beides dürfte hinreichend performant sein.

    PHPBB beispielsweise verwendet die Include-Methode, die Include-Dateien sind PHP Code und erweitern mittels array_merge ein assoziatives Array, worin sich für jeden Text ein Key und dessen Langform befinden. Das sieht in einem alten PHPBB 3.1 Code, der bei mir noch rumliegt, so ähnlich aus:

    <?php
    if (empty($lang) || !is_array($lang))
    {
    	$lang = array();
    }
    
    $lang = array_merge($lang, array(
    	'TEXT1'		=> 'Das ist ein Text.',
    	'TEXT2'		=> 'Noch ein Text',
      ...
    ));
    

    Natürlich mit sinnvolleren Keys und Texten. Vorteil ist, dass man die Texte relativ zügig mit einem Texteditor bearbeiten kann. Um sie zu updaten, braucht man aber Schreibrecht auf dem Server

    Verwendet man den Opcache, lädt sich das zügig und - soweit ich weiß - erkennt PHP dann auch Änderungen an den Quelldateien und compiliert sie neu.

    In einer Datenbank brauchst Du ein Pflegetool, oder Du musst mit PHPMYADMIN in den Tabellen rumfuhrwerken. Entweder row by row, oder durch Import einer Textdatei. D.h. ohne Pflegetool is des net so leiwand. Jedenfalls hat es den Vorteil, dass man "nur" Schreibrecht auf die DB braucht, und mit einem Pflegetool kann man auch die Übersetzung an mehrere Leute delegieren oder sogar dafür sorgen, dass bestimmte Personen nur bestimmte Textteile übersetzen können. Es ist dann auch leicht möglich, die unterschiedlichen Sprachversionen nebeneinander darzustellen und automatisch zu erkennen, ob eine Übersetzung veraltet ist.

    Ich würde aber annehmen, dass der Zugriff ohne memcache oder ähnliches nicht so flott ist. Das muss man dann messen und testen - und am besten den Textzugriff so kapseln, dass das Einschieben einer Cache-Instanz ohne totalen Rewrite der ganzen Anwendung funktioniert.

    Rolf

    --
    sumpsi - posui - obstruxi
  3. Hello,

    die spannende Frage ist doch, ob mehr oder weniger statische Seiten übersetzt werden sollen, oder ob dynamisch Eingaben von Benutzern analysiert, normalisiert, übersetzt werden müssen, um daraus Aktionen ableiten zu können?

    Soll das "überetzten" on the fly automatisch geschehen?

    Glück Auf
    Tom vom Berg

    --
    Es gibt nichts Gutes, außer man tut es!
    Das Leben selbst ist der Sinn.