[PHP] Multilinguales System

Dieses Thema im Forum "Webentwicklung" wurde erstellt von Blackb!rd, 18. September 2012 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 18. September 2012
    Multilinguales System

    Hallo Zusammen,

    ich stehe mal wieder, wie schön öfters, vor dem Problem ein System Mehrsprachig zu bauen! Es gibt im Internt viele Ansätze, Vorschläge und Ideen. Und vieles davon ist einfach nur Müll. In meinem letzen Projekt habe ich die Language-Dateien in PHP erstellt und ein riesiges Array erzeugt. Allerdings weiß ich nicht ob das so optmal für die Performance ist. XML wäre eine Alternative - Aber bringt es wirklich Vorteile?

    Daher mal die Frage an euch: Wie realisiert Ihr soetwas? Und was sind, eurer Meinung nach, die Vorteile an eurer Methode?

    Gerne auch mit Code-/Struktur-Beispielen!


    Grüße Blackb!rd
     
  2. 18. September 2012
    Zuletzt bearbeitet: 18. September 2012
    AW: Multilinguales System

    hi,

    ich nutze ne datenbank in der der content drin steht.
    struktur in etwa so:
    id, uid, lid, content
    ---------------------
    1, 1, 1, DE_Content
    2, 1, 2, EN_Content

    ich frag nur ab "select content where uid=1 AND lid=2"

    eine separate tabelle könnte die sprachen für die sprachauswahl beinhalten:
    id, name, code
    -----------------
    1, Deutsch, de
    2, English, en

    so in etwa mach ich das
    // edit
    wenn du mit sprechenden links arbeiten möchtest
    id, uid, lid, content, name, realurl
    ----------------------------------------
    1, 1, 1, DE_Content, Startseite, de/startseite.html
    2, 1, 2, EN_Content, Home, en/home.html

    select content where realurl="en/home.html"
     
    1 Person gefällt das.
  3. 18. September 2012
    AW: Multilinguales System

    Ich würde es gerade so machen. Ist eine einfache und saubere Trennung von Layout und Inhalt.

    Was die Performance angeht ist Caching die Lösung des Problems -> Seite einmal rendern und abspeichern. Solange sich an der Quelldatei nichs ändert kannst du dann immer diese Datei ausliefern und im anderen Fall einfach neu rendern. ( filectime() )
     
    1 Person gefällt das.
  4. 18. September 2012
    AW: Multilinguales System

    @powernator

    Dir ist klar, das mit i18n lediglich das "was" beschrieben wird und nicht das "wie"?
    Das ist ungefähr so hilfreich wie:

    "Wie komme ich am schnellsten nach YXZ"

    und jemand antwortet mit:

    "Zu Fuß oder mit einem Fahrzeug".
     
  5. 18. September 2012
    AW: Multilinguales System

    In der Tat war es das nicht, das bitte ich zu entschuldigen.

    Du musst kein riesiges Array erstellen, wenn du den Sprachvariablen Kategorien zuteilst. Und für die Seite lädst du nur die Kategorie/n, die du auch benötigst -> das Array hat nur die Größe, die es benötigt.

    Bzgl. caching hat myth ja schon eine gute Möglichkeit beschrieben
     
  6. 19. September 2012
    AW: Multilinguales System

    Dann hätte ich aber für jede Kategorie ne einzelne Sprach-Datei. Da teilweise nur 5-10 Wörter pro Kategorie vorkommen wäre das ein wahrere Dateienberg - Das ist zwar dann performant, aber nicht sonderlich übersichtlich. ( Aus meiner Sicht )

    Wie ist es bei XML? Wenn ich mit simplexml_load_file eine Datei öffne, wird die komplett geladen oder öffnet PHP diese nur und greift bei Bedarf auf entsprechende Datensätze zu?


    Gruß Blackb!rd
     
  7. 19. September 2012
    AW: Multilinguales System

    Wieso erstellst du nicht eine Sprachdatei. z.B. "lang_de.inc.php".

    In dieser Datei definierst du deine Variablen.

    Code:
    define("BAUM", "Baum");
    in die englische Sprachdatei "lang_en.inc.php" kommt dann sowas:

    Code:
    define("BAUM", "tree");
    Nun kannst du, am Anfang deiner Template-Dateien, die passende Sprachdatei "includen"

    Code:
    require_once($_SERVER['DOCUMENT_ROOT'].'/lang/lang_de.inc.php); 
    Um die richtigen Wörter auszugeben brauchst du nur, mittels "echo", die Konstante abrufen.

    Code:
    echo BAUM; // Ausgabe DE -> Baum
    echo BAUM; // Ausgabe EN -> tree
     
  8. 20. September 2012
    AW: Multilinguales System

    @BlueSin: So hat er es doch am Anfang gemacht Dann hast du eine riesige Datei mit lauter defines...

    @TE: PHP: simplexml_load_file - Manual
    Umwandeln -> die ganze Datei wird eingelesen
     
    1 Person gefällt das.
  9. 20. September 2012
    AW: Multilinguales System

    Create a multi-languages website using PHP OOP and XML

    In dem Yii-Framework ist es sehr ähnlich, dort wird alles in Array-Form und in Kategorien abgelegt.

    Yii::app()->t( 'categorie', 'Welcome Member' );
     
    1 Person gefällt das.
  10. 20. September 2012
    AW: Multilinguales System

    War für mich nicht ersichtlich, da er nur von "Arrays" spricht.
    Das heißt für mich, der Aufbau sieht z.B. so aus.

    $langDE = {"Baum", "Auto", "Haus"};
    $langEN = {"tree", "car", "house"};

    Was spricht gegen "language-define" Dateien?
    Ist einfach, verständlich und bei 5-10 Wörtern ist die Performance außer auch zu lassen.

    Außer du hast hunderttausend von Benutzern am Tag, sodass dein Server die Anfragen nicht verarbeiten kann.
    Dann solltest du auf Performance achten.
     
  11. 20. September 2012
    AW: Multilinguales System

    Meiner Meinung nach sind Defines direkt sehr ungünstig gewählt. Wenn man bei der Ausgabe des Language-Strings direkt die Variable hinschreibt, wird bei Fehlen einer Variable direkt ein PHP-Fehler erzeugt. Dies kann man mit ner Funktion umgehen, die vorher alles prüft. Zudem fehlt die Möglichkeit eine Art Kategorie zu schaffen um den Überblick zu behalten - Bei Array würde man einfach eine neue Dimension erstellen.

    Habe mich nun für XML entschieden, da die Struktur am einfachstne zu verwalten ist und die Übersicht gewährt wird.


    Danke für alle Tipps, Bw's sind schon raus!


    Gruß Blackb!rd
     
  12. 20. September 2012
    AW: Multilinguales System

    Was auch möglich wäre ist das ganze eine Ebene tiefer anzugehen.
    Linux/Unix bringen schon Funktionen für mehrsprachige Applikationen mit und, wer hätte etwas anderes erwartet, PHP stellt dir die Funktionen zur Verfügung.

    PHP: gettext - Manual
     
    1 Person gefällt das.
  13. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.