[SQL] Datenbrankstruktur - Mehrsprachigkeit

Dieses Thema im Forum "Webentwicklung" wurde erstellt von pleq, 13. Mai 2009 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 13. Mai 2009
    Datenbrankstruktur - Mehrsprachigkeit

    Seas,

    bin gerade dabei, ein Projekt umzusetzen welches in mehreren Sprachen (soll erweiterbar bleiben) angezeigt werden können soll!

    Ich bin gerade dabei die Datenbankstruktur zu entwerfen ... nun meine Frage:

    welches ist die schnellste, sicherste und einfachste methode um eine datenbankbasierte Mehrsprachigkeit zu regeln?

    Ich habe mir erst gedacht, dass ich einfach für jedes Modul in dessen Tabelle ein lang Feld einfüge in der die jweilige Sprache eingesetz wird, in der dieser Eintrag gepostet wurde.

    Nun spinne ich das Projekt weiter, sodass die Datenbanken gute Ausmaße annehmen. Ist es dann immer noch effektiv? Oder sollte man lieber eine de_ eine en_ usw. Tabelle anlegen?

    Da hier ja nen paar erfahrene Programmierer rumlaufen, dachte ich, dass ihr mir vllt. helfen könnt, die richtige Methodik herauszufinden!

    Danke schonmal
     
  2. 13. Mai 2009
    AW: Datenbrankstruktur - Mehrsprachigkeit

    Also wenn du Mehrsprachigkeit und ein Loginsystem brauchst würde ich einfach empfehlen das WCF zu benutzen. Dort jagst du im Template einfach alles was Mehrsprachig sein kann (vom System) durch den Sprachfilter (im Template einfach mit {lang} in PHP mit WCF::getLanguage()->get()) und fertig ist das ganze Wenn vom Benutzer eingegebene Inhalte mehrsprachig sein sollen legst du einfach ein Feld an in dem die Sprache steht, da ein Benutzer üblicher Weise sowieso immer nur in einer Sprache postet.
    Gleichzeitig hast du praktischer Weise auch ein wunderbares Paketsystem
    Wenn du das Framework nicht einsetzen willst, würd ich einfach mal sagen du kopierst das System als solches ^^
     
  3. 13. Mai 2009
    AW: Datenbrankstruktur - Mehrsprachigkeit

    Hi Schmitz,

    danke schonmal für deinen Beitrag.
    Die komplette Seite, Templates, sowie Dateninhalte müssen mehrsprachig sein.

    Leider hast du nichts speziell zur Datenbankstruktur gesagt:

    • 1 Datenbank und jede Tabelle in x-Facher Ausführung (Pro Sprache eine : de_news en_news ...)
    • x-Datenbanken: für jede Sprache eine ( de_cms | en_cms ...)
    • Sonstiges xD

    Vllt. dazu noch ein paar Worte?

    Bedankt ...
     
  4. 13. Mai 2009
    AW: Datenbrankstruktur - Mehrsprachigkeit

    du kannst in einer tabelle alleine alle news-daten speichern.
    x-datenbanbken wäre schwachsinn, weil du dich zu zwei verbinden müsstest
    (einmal configs usw, einmal für die inhalte der jeweilgen sprache des benutzers)

    folgendes layout würde und habe ich bereits verwendet:
    Code:
    table: lang
    langID langCode
     1 de_DE
     2 en_US
     3 en_UK
     
    table: content
    contentID langID contentText contentTitle
     1 1 hallo Deutsch
     2 2 hello English/AE
     3 3 good day sir English
    den lang-code kannst du im idealfall vom useragent auslesen (automatisch verwenden)
     
  5. 13. Mai 2009
    AW: Datenbrankstruktur - Mehrsprachigkeit

    super, danke Murdoc auf eine solche Antwort habe ich gehofft

    Also brauche ich mir keine Gedanken machen, dass die Performance iwann so in die Knie geht? Weil ja automatisch auch mehr Daten in den einzelnen Tabellen sind.

    Und wegen dem useragent ... meinst die Browser-Settings einsehen, und die gewählte Lang verwenden? (So hab ich es zumindest gemacht).

    Bedankt!
     
  6. 13. Mai 2009
    AW: Datenbrankstruktur - Mehrsprachigkeit

    hier mal mein user-agent:
    Code:
    Mozilla/5.0 (Windows; U; Windows NT 5.1; de-AT; rv:1.8.1.15) Gecko/20080621 SeaMonkey/1.1.10
    wie du sehen kannst steht da "de-AT" (steht für deutschland/österreich). diesen code kannst du in der tabelle "lang" abgleichen und automatisch die richtige sprache laden.

    hab das ganze noch ein wenig optimiert:
    Code:
    --
    -- Tabellenstruktur für Tabelle `content`
    --
    
    CREATE TABLE `content` (
     `contentID` int(10) unsigned NOT NULL auto_increment,
     `itemID` int(10) unsigned NOT NULL,
     `langID` int(10) unsigned NOT NULL,
     `contentTitle` varchar(255) character set utf8 collate utf8_unicode_ci NOT NULL,
     `contentText` text character set utf8 collate utf8_unicode_ci NOT NULL,
     PRIMARY KEY (`contentID`),
     UNIQUE KEY `itemID` (`itemID`,`langID`),
     KEY `contentTitle` (`contentTitle`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=4 ;
    
    --
    -- Daten für Tabelle `content`
    --
    
    INSERT INTO `content` (`contentID`, `itemID`, `langID`, `contentTitle`, `contentText`) VALUES
    (1, 1, 1, 'Deutsch', 'Hallo'),
    (2, 1, 2, 'English/AE', 'hello'),
    (3, 1, 3, 'English', 'good day sir');
    
    -- --------------------------------------------------------
    
    --
    -- Tabellenstruktur für Tabelle `lang`
    --
    
    CREATE TABLE `lang` (
     `langID` int(10) unsigned NOT NULL auto_increment,
     `langCode` varchar(6) collate latin1_general_ci default NULL,
     PRIMARY KEY (`langID`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=4 ;
    
    --
    -- Daten für Tabelle `lang`
    --
    
    INSERT INTO `lang` (`langID`, `langCode`) VALUES
    (1, 'de-AT'),
    (2, 'en-US'),
    (3, 'en-UK');
    kannst ja selber noch ein wenig rumprobieren
     
  7. 13. Mai 2009
    AW: Datenbrankstruktur - Mehrsprachigkeit

    wow, super, danke!

    aber habe es jetzt schon selber alles soweit gelöst und denke auch zu aller zufriedenheit!


    ~ closed ~
     
  8. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.