Eigenes CMS - wie Mehrsprachigkeit einbauen?

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

  • Eigenes CMS - wie Mehrsprachigkeit einbauen?

    Hallo zusammen,

    ich mache mir derzeit Gedanken zu einem eigenen CMS das ich mir schreiben will. Um nicht später alles über den Haufen zu werfen, soll vorab geklärt werden was es alles geben soll und wie es realisiert werden kann.

    Ich überlege, welche Felder man in der MySQL-Datenbank braucht. Nun plane ich die Kategorien und Artikel. Später soll es möglich sein, die Webseite mehrsprachig anzulegen.

    Wie würdet ihr das realisieren, habt ihr bereits Erfahrungen was gut ist und was nicht?
    Zuletzt geändert von Screw Driver; 06.09.2006, 09:16.
    Gruß,
    Peter

  • #2
    immer schön suchen vor dem posten:
    http://php-resource.de/forum/showthr...hrsprachigkeit
    http://php-resource.de/forum/showthr...hrsprachigkeit
    und

    Kommentar


    • #3
      Mir geht es eigentlich mehr darum, wie ich das in der Datenbank anlgen soll und wie das später gesteuert wird?

      Ich müsste ja jeden Artikel und jede Kategorie mit einer ID der Sprache versehen in der sich der Backend User befindet.

      Wie aber pflege ich das am besten?

      Meine derzeitige Überlegung ist die, bei anlegen jeden Artikel automatisch in jede andere Sprache zu kopieren und dort offline zu schalten. Damit müsste ich mich in der datenbank von eindeutigen IDs verabschieden, da eine ID öfter vorkommen kann, aber dann halt mit unterschiedlichen IDs für die Sprache.

      Problematisch ist hier z.B. was passiert, wenn ich einen Artikel lösche? Evtl. soll er überall gelöscht werden, evtl. aber auch in einer anderen Sprache bestehen bleiben?

      Ich weiß nicht ob das vorgehen so logisch und gut ist. Was sind eure Erfahrungen mit anderen CMS die euch gut gefallen haben oder schlecht und wieso?

      Würde mich sehr über Erfahrungen und Tipps freuen.
      Gruß,
      Peter

      Kommentar


      • #4
        ich habe das bei einem kunden so gemacht:
        bsp_tabelle:
        id, artikel, preis, produkt_de, produkt_fr, beschreibung_de, beschreibung_fr, usw, usw.

        dann definiere ich pro sprache in einer konfigurationsdatei z.b. eine globale variable $lang (de, fr). die abfragen im backend laufen dann in etwa so:
        PHP-Code:
        $query='SELECT id, artikel, preis, produkt_'.$lang.' AS produkt, beschreibung_'.$lang.' AS beschreibung'
        plus noch einige andere dinge. ich will jetzt nicht das gesamte konzept erläutern, sondern nur das prinzip. läuft sehr gut, ist sehr flexibel und kann später immer wieder um weitere sprachen ergänzt werden.

        gruß
        peter
        Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
        Meine Seite

        Kommentar


        • #5
          Damit wäre es aber alles nict so flexibel wie ich es gerne hätte, da es nur ein Beschreibungsfeld gäbe.

          Ich möchte aber pro Artikel einzelne Text-Abschnitte hinzufügen können. Wenn ich dazu der Tabelle zusätzliche Felder hinzufüge, wächst diese natürlich zu stark an, obwohl viele Artikel das wiederum gar nicht brauchen.

          Wäre es nicht besser, eine Tabelle mit Feld für Sprach-ID und Content-ID zur Verknüpfung zu einer Inhaltstabelle anzulegen?
          Gruß,
          Peter

          Kommentar


          • #6
            viele wege führen nach rom bei meinem konzept kommen noch etliche andere faktoren hinzu. wie du es machst, hängt von den anforderungen zusammen. ich bin mit meinem konzept jedenfalls sehr zufrieden. es ist halt ein tipp.

            gruß
            peter
            Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
            Meine Seite

            Kommentar


            • #7
              Vielleicht mal bei anderen Anwendungen anschauen.
              Gute Lösungsansätze findet man auch bei Smarty, z.B im SmartyWiki . Musst Du natürlich portieren.
              Ebenso könntest Du ein Ü-Script starten, welches Dir aus den gewünschten Einträgen ein Duplikat in irgendeiner Form anlegt und dieses in aller Ruhe übersetzt. Das "WIE & EFFEKTIV" musst Du dir schon selber erarbeiten.

              Kommentar


              • #8
                Ich will nun nicht ettliche Systeme testen, da ich um hinter das jeweilige Konzept zu kommen doch recht lange brauchen würde.

                Mir sind persönliche Erfahrungsberichte von anderen da doch lieber.

                Kannst du den Ansatz von SmartyWiki bitte kurz erläutern?
                Gruß,
                Peter

                Kommentar


                • #9
                  ich mach das immer relativ einfach:

                  meine tabelle:

                  id | name | en | de | fr

                  mit den bsp-inserts:

                  1 | erstes produkt | englische Beschreibung | deutsche Beschreibung | französische Beschreibung

                  dementsprechend kann ich sprachlich auswählen ...
                  simple aber funktioniert
                  Signatur-Text ...

                  Kommentar


                  • #10
                    Klingt aber nicht flexibel wen du von vorne herein in der Datenbank anlegst welche Sprachen es gibt?
                    Gruß,
                    Peter

                    Kommentar


                    • #11
                      Original geschrieben von Screw Driver
                      Klingt aber nicht flexibel wen du von vorne herein in der Datenbank anlegst welche Sprachen es gibt?
                      ist klar - dann 2 tabellen!

                      1 tabelle = produkt
                      2. tabelle = Texte

                      bsp.:

                      id | fid | text

                      der text wird eingefügt mit dem anfang der sprache bsp:

                      de:: Dein text

                      mit explode das :: trennen
                      text ausgeben ...
                      Signatur-Text ...

                      Kommentar


                      • #12
                        Sorry, meinst Du auch wirklich Erfahrungsberichte?
                        Oder willst Du fertige Lösungen...
                        Bei ersterem ist meine Erfahrung, das die im Templatesystem "Smarty" vorgeschlagenen Lösungen sehr gut sind, u.a. als Denkansatz für eigene PHP-Funktionen oder als fertiges Plugin, wenn man Smarty verwendet.

                        Einige davon nehmen deine heimatsprachige Vorlage und liefern z.B Vorschläge, die mit Bablefish übersetzt werden.
                        Ähnliche u.v.a. Beispiele findet man unter phpclasses.org

                        OffTopic:
                        Da keiner dein Konzept kennt, wird dir auch keiner eine fertigen sondern nur allgemeine Denk-Ansätze liefern können.
                        Dann wäre es auch "projekthilfe", "Job" oder "Scriptgesuch"

                        Kommentar


                        • #13
                          Na ein Job ist das nicht, es soll schliesslich ein Open Source CMS werden. Da ich nicht davon ausgehen, dass Leute interessiert sind wenn ich frage wer Lust auf das Projekt hat, will ich den Anfang selbst machen, in der Hoffnung danach ein paar Interessierte zu finden.
                          Gruß,
                          Peter

                          Kommentar


                          • #14
                            mit 2 tabellen is das doch kein problem. du nimmst dir eine allgemeine tabelle die alle infos enthält:

                            id datum sonstwas

                            dann nimmst du ne 2. tabelle die alles enthält was dazugehört und mehrsprachig sein soll:

                            id pid text ... language

                            wobei pid eine id aus tabelle 1 ist und angibt zu welchem eintrag in tabelle 1 ein eintrag aus tabelle 2 gehört. id ist ein ganz normales primary feld und language ist die sprache (die ich persönlich auf jeden fall mit zahlen makieren würde, also 1 = deutsch, 2 = englisch,...)

                            du kannst auch auf das feld id verzichten und pid und language zu einem primary key zusammenfassen weil aus rein logischen gründen zu einem eintrag in tabelle 1 ja auch ein eintrag in tabelle 2 pro sprache reicht.
                            also wäre in tabelle 2 ein eintrag mit pid=5 und language=2 eindeutig.

                            abfragen kann man das dann z.b. so:
                            SELECT * FROM table1 t1, table2 t2 WHERE t1.id = t2.pid AND language = $current_language

                            Kommentar


                            • #15
                              Original geschrieben von MarkusW
                              mit 2 tabellen is das doch kein problem. du nimmst dir eine allgemeine tabelle die alle infos enthält: ...
                              Öhm das hatte ich schon geschrieben
                              Signatur-Text ...

                              Kommentar

                              Lädt...
                              X