John: Mehrspachlichkeit der Seite von vorne rein implizieren

Moin.

Da ich an einem Projekt sitze das vorerst nur in Deutschland exzistieren soll und später aber auch in anderen Sprachen, frage ich mich welche Vorgehensweise ihr für die beste haltet:

1. Ich habe _jeden_ Text in einer Variable gespeichert, alle Variablen sind in einer Datei, jede Sprache hat eine Datei

2. Jeder Textschnipsel ist in folgende Form in einer DB eingetragen:
identifier countrycode textcode
Beispiel1  de          Darstellung des Beispiel 1 erfolgreich!
Example1   en          Showing Example 1 is successfully!

3. Bei jeder Ausgabe wird unterschieden
switch($_SERVER['HTTP_ACCEPT_LANGUAGE']){
  case ...:
   echo ...
}

4. Das Projekt komplette Projekt wird in verschiedene Ordner kopiert:
Ordnerstruktur:

root/de
root/ru
root/en
root/us
root/at
root/fr

Und dann wird in einer index.php gecheckt - woher kommt er? Okay er muss in den Ordner.

Entscheidet euch für eine Methode oder habt ihr noch eine andere?

Gruß,

John

  1. Ich würde sagen das kommt stark auf dein Projekt an.
    Du hast doch sicher auch statische Teile in der Seite, die nicht bei jedem Aufruf neu generiert werden müssen? Da wär dann eine Datei prop Sprache sinnvoll. Sonst hast du ja überhaupt nichts mehr zum testen, wenn wirklich alles nur in der DB steckt.
    Die variablen Bausteine würd ich dann in die DB schreiben.
    Solche Überlegungen würd ich da mit einbeziehen.

    1. Also mir ist gerade eine Lösung eingefallen und eine weiter Frage ist entstanden:

      Mein Projekt ist auf MVC aufgebaut.

      Dadurch muss ich einfach nur beim Front-Controller eine Abfrage machen - woher kommt der Besucher - und jedes Land hat einen eigenen Views-Ordner.

      Also nicht das ganze Projekt muss für jeden einzelnd sein, sondern einfach nur der Ordner mit den Views.

      Was haltet ihr davon?
      Also:

      root/Controllers
      root/Models
      root/Views/de
      root/Views/en
      root/Views/fr
      ...

      Mit statischen Seiten meinst du doch Inhalte die nicht dynamisch sind sprich z.B. das Impressum oder?
      Kann man diese Seiten nicht irgendwie im Cache ablagern?

      1. Mit statischen Seiten meinst du doch Inhalte die nicht dynamisch sind sprich z.B. das Impressum oder?

        Ja. Also ich wollte die Überlegung in den Raum werfen, dass du vielleicht so ne Art Mischbetrieb machst. Alles was fest bleibt, kann in eine eigene Datei, variable Teile vielleicht aus der DB lesen und mittels php oder so ausgeben.
        Da brauchst du dann nur eine Datei aufrufen, die entscheidet welchen Inhalt sie ausgibt.
        Das was sich stark ändert kommt komplett in die DB. Dann vielleicht je nach Grad der Variabilität die komplette Seite, sonst stückelst du wieder. In dem Fall brauchst du wieder nur eine einzige Datei mit dem Grundgerüst. Keine extra Ordner, denn der Inhalt stammt ja direkt aus einer Tabelle.

        Soviel nur mal als Überlegung! Ich hab sowas noch nie gemacht. Hätte ich vielleicht gleich sagen dazu sollen ...

        Denk auch dran dass man die Sprache selber umschalten können sollte. Ich verzweifel jedes mal wenn ich auf englisch was suche, in Google englische MSDN Ergebnisse bekomme und Microsoft mir dann trotzdem eine grauenhaft automatisch ins Deutsche übersetzte Seite liefert.
        Und auch wenn du gescheit übersetzt, vielleicht sitzt ja mal ein Deutscher im Ausland oder andersrum :-)

  2. Moin.

    Da ich an einem Projekt sitze das vorerst nur in Deutschland exzistieren soll und später aber auch in anderen Sprachen, frage ich mich welche Vorgehensweise ihr für die beste haltet:

    Entscheidet euch für eine Methode oder habt ihr noch eine andere?

    Ich würde mir gettext mal näher angucken - http://www.php.net/manual/de/intro.gettext.php

    Gruß Gunther

  3. @@John:

    nuqneH

    1. Bei jeder Ausgabe wird unterschieden
      switch($_SERVER['HTTP_ACCEPT_LANGUAGE'])

    Dir ist bewusst, dass 'Accept-Language'-Header nicht (unbedingt) eine Sprache liefert, sondern eine geordnete Liste von Sprachen?

    Dir ist bewusst, dass 'Accept-Language'-Header nicht (unbedingt) die vom Nutzer wirklich gewünschte Sprache liefert?

    Sprachvereinbarung ist „fast immer [angebracht], aber nicht ausschließlich.“ [QA-WHEN-LANG-NEG] Siehe Schwachstellen der Sprachvereinbarung.

    Du solltest unbedingt auch eine manuelle Umschaltmöglichkeit vorsehen. Und dann kann es für den Nutzer nervig sein, immer wieder umschalten zu müssen. Siehe Navigation.

    Besser ist es, sich die vom Nutzer gewählte Sprache zu merken. Siehe diese Lösung mit Cookies.

    case ...:
       echo ...
    }

    Und nicht den 'default'-Zweig vergessen!

    1. Das Projekt komplette Projekt wird in verschiedene Ordner kopiert:
      Ordnerstruktur:

    root/de
    root/ru
    root/en
    root/us
    root/at
    root/fr

    Es gibt keine Sprachen mit den Kürzeln "at" und "us". Zur Unterscheidung zwischen DE und AT bzw. GB und US ist die Sprache ('Accept-Language') völlig ungeeignet.

    Was willst du eigentlich? Sprachspezifische Seiten anbieten oder landesspezifische? [QA-INTERNATIONAL-MULTILINGUAL]

    Wenn letzteres: Bei einer Seite für die USA könnte es sinnvoll sein, diese auf Englisch und auf Spanisch anzubieten; bei einer Seite für Deutschland auf Deusch und auf Türkisch, bei einer Seite für die Schweiz auf Deutsch, Französisch, Italienisch und Rätoromanisch …

    Qapla'

    --
    Bildung lässt sich nicht downloaden. (Günther Jauch)