Ankündigung

Einklappen
Keine Ankündigung bisher.

mehrsprachig

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • mehrsprachig

    Hallo,

    ich möchte eine Webseite Mehrsprachig aufbauen. Am besten so, daß ich nachher für jede Sprache eine datei habe, wie es auch in vielen CMS-Systemen gehandhabt wird. Gibt es dazu irgendwo eine Doku, ich habe nichts gefunden.

    Oder kann mir wer auf die Sprüunge helfen wie ich beispielsweise ein Wort, das in für das es eine Variable gibt die in der Sprachdatei gespeichert ist auf der Webseite zum anzeigen bekomme.


    Gruß Nixdorf

  • #2
    Bleibt eigentlich deiner Fantasie überlassen wie du das löst.
    Mit einer Datenbank, mit einem XML, mit einem PHP-Array, mit mehrsprachigen Templates, ..
    Wobei ich auf die Datenbank setzen würde, je nach Größe der zu übersetzenden Website aber auch XML ganz ok ist.

    Kommentar


    • #3
      wie war das denn bei mysql, kann ich da nicht bei texten nur max. 250 zeichen nehmen, wenn ich jetzt aber texte auf den seiten habe die größer sind?

      Bei einer Datenbank bräuchte ich dann ja auch für jede kleine Textausgabe eine mysql-abfrage der Datenbank. Mach das sinn? wo hat es den vorteile?

      Gruß Nixdorf

      Kommentar


      • #4
        Das Problem bei XML ist, dass du wahrscheinlich das ganze XML in den Speicher laden musst um bestimmte Bereiche auszulesen. Das kann gerade bei größeren Texten viel Speicher fressen und auch zum Platzen bringen (in der Theorie).

        Bei einer Datenbank ist es (fast) egal wieviel drinnen steht. Ob 10000 oder nur 5 Datensätze, es bleibt bei einer einfachen Anfrage
        Code:
        SELECT de FROM sprache WHERE kuerzel='anmeldetext' LIMIT 1;
        Und wenn man mehr braucht, kann man ja zusammenfassen.
        Code:
        SELECT de FROM sprache WHERE ((kuerzel='anmeldetext') OR (kuerzel='loginbutton') OR (kuerzel='benutzername') OR (kuerzel='passwort'));
        und schon hast du alles zusammen. Und das mit den 250 Zeichen ist Blödsinn. Ein Varchar kann 255 Zeichen fassen und wir haben ja auch noch Datentypen wie z.B. TEXT oder MEDIUMTEXT. Die MySQL-Referenz zeigt dir alle Möglichkeiten auf.

        Ein XML hat den Vorteil, dass man diesen als Datei mitliefern kann und wenn man ein CMS auf mehreren Homepages benutzen möchte, die Datei einfach mitkopiert. Eine Datenbank muß erst erstellt werden. Ein XML kann somit schnell auf vielen Seiten aktualisiert werden indem man die XML-Datei einfach reinkopiert. Und wenn man plötzlich ne Sprache mehr hat, einfach nur die Datei rein. Das ist bei einer Datenbank schwerer (neue Spalte erstellen und dann die Spalte füllen, per DUMP oder Schnittstelle, etc)

        Damit die XML-Dateien nicht zu groß werden kann man ja auf mehere XML-Dateien aufteilen.
        Code:
        standard.de.xml
        standard.en.xml
        gaestebuch.de.xml
        gaestebuch.en.xml
        bildergalerie.de.xml
        bildergalerie.en.xml
        ....
        Und man lädt nur die XML-Datei die man gerade braucht. Reine Definitionssache.

        Im Endeffekt ist es eine Frage wie große dein Projekt ist und was (in dem Falle) schneller geht. Ich persönlich habe meine CMS-Systeme auf vielen vielen Homepages und daher eine XML-Lösung mit mehreren kleinen Dateien. Auch weil ich den Übersetzern dann nur die deutsche Datei geben muß und ich dann eine ausländische Datei zurückbekomme um die ich mich nicht mehr kümmern muß, da XML genaue Vorlagen definiert.

        Beispiel einer meiner XML-Dateien:
        Code:
        <?xml version="1.0" encoding="ISO-8859-1"?>
        <SPRACHE lang="de">
         <VOK id="bildbrowser_titel">Bildbrowser</VOK>
         <VOK id="bildbrowser_preview">Vorschau</VOK>
         <VOK id="bildbrowser_piclist">Bilderliste</VOK>
         <VOK id="bildbrowser_path">Pfad</VOK>
        </SPRACHE>
        SELECT * benutze ich nur um den Post kurz zu halten.

        Kommentar


        • #5
          Ich würd's auch mit einer Datenbank lösen...

          Die Struktur vllt so?
          Code:
          langcode	| varname		| value
          -------------------------------------
          de			| START_TITLE  | zB Titel der HP
          -> klasse / funktion zum abfragen

          Code:
          class lang
          {
          	[...]
          	function get($varname)
          	{
          		mysql_query('...');
          		[...]
          	}
          }

          Eignet sich m.E. aber nur für größere Projekte :wink:

          Kommentar


          • #6
            Ich würde die Struktur eher so vorschlagen:
            Code:
            id | kuerzel | de | en | ...
            -----------------------------
            1 | titel | Meine Homepage | my homepage | ....
            2 | hallo | hallo | hello | .....
            3 | ja | ja | yes | ...
            4 | nein | nein | no | ....
            Kommt eine Sprache hinzu => eine Spalte mehr und alle Felder sind definiert.
            MYSQL:
            Code:
            SELECT de AS inhalt FROM sprache WHERE kuerzel='hallo' LIMIT 1;
            // oder
            SELECT en AS inhalt FROM sprache WHERE kuerzel='hallo' LIMIT 1;
            ergibt immer in "inhalt" das Feld das ich brauche. Ist bei Erweiterungen leichter zu Handeln.
            Ein Abfragenm ob die Sprache vorhanden ist kann man dann durch
            Code:
            SELECT pt FROM sprache LIMIT 1;
            sehr eifnach erledigt werden.

            Aber auch das ist jetzt wieder eine Frage der Überzeugung.

            Gruß,
            Stefan
            SELECT * benutze ich nur um den Post kurz zu halten.

            Kommentar


            • #7
              ist zwahr schon älter dieser beitrag aber ich hab dazu noch ne frage

              was macht denn nun mehr sinn wenn man die variante mit der DB nimmt
              Am Anfang gleich die ganzen Texte aus der DB auslesen und dann an ort und stelle verwenden oder überall dort wo man was braucht ne neue abfrage zu machen von dem satz oder wort was man braucht?

              Kommentar


              • #8
                Wenn du es wirklich über eine Datenbank lösen möchtest würde ich die Daten am Anfang einmal auslesen. Für jede Übersetzung eine neue Abfrage würde nen ganz schönen Aufwand bedeuten. Da wäre es denke ich von der Performance her besser einfach einen einzigen Query der etwas mehr zurückgibt abzusenden.

                Die Frage ist ob du vielleicht diesen Query eingrenzen kannst damit du nicht wirklich ALLE Wert brauchst. Aber das könnte schwer werden denke ich.

                Hinweis:
                Beim nächsten mal bitte einen eigenen Thread aufmachen. Im Archiv rumschreiben macht keinen Spass

                Kommentar


                • #9
                  ok danke werde ich machen. dachte ist sinnvoller als ein neuer aufzumachen

                  Kommentar

                  Lädt...
                  X