Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Mehrsprachige Webseite mit Session

Einklappen

Neue Werbung 2019

Einklappen
Dieses Thema ist geschlossen.
X
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #31
    Sowas in der Art würde ich machen.
    PHP-Code:
    <?php
    error_reporting
    (-1);

    class 
    Translation
    {
        protected 
    $_lang$_id null;

        public function 
    __construct($lang) {
            
    $this->_lang in_array($lang, array('de''en')) ? $lang 'de';
        }
        
        public function 
    setWhereClause($id) {
            
    $this->_id $id
        
    }
        
        protected function 
    _getWhere() {
            if (
    null === $this->_id) {
                return 
    '';
            }
            
            
    $where ' WHERE ';
            if (
    is_array($this->_id) {
                
    $where .= 'id IN (' implode(', '$this->_id) . ')';
                return 
    $where;
            }
            return (
    $where 'id=' $this->_id);
        }
        
        public function 
    getAllTranslation() {
            
    # Ich setzte eine DB-Wrapper mal einfach so voraus
            
    $db->getAll('SELECT value_' $this->_lang ' FROM translations' $this->_getWhere());
        }
    }
    Naja wenns ne größere Datenbank ist, würde ich die Daten aber auch nicht im Livesystem ändern, sondern die templates lokal generieren und dann die einzelnen sprachspezifischen Templates hochladen. Sodass Für die Spache online gar keine DB benötigt wird.

    Zitat von da.eXecutoR Beitrag anzeigen
    Zudem ist es sauberer die Sprachen getrennt zu haben. ( Find ich persönlich, geschmacksache. )
    Naja genau das finde ich nicht, du hast dann im Prinzip für die selben Daten mehrere Tabellen, obwohl diese das selbe speichern.
    "My software never has bugs, it just develops random features."
    "Real programmers don't comment. If it was hard to write, it should be hard to understand!"

    Kommentar


    • #32
      mh also ich tu mich da echt schwer mit dem aufbau...

      hab schonmal sowas hier

      PHP-Code:
      $langs = array('de','en','nl');
      $string $_SERVER['REQUEST_URI'];
      $array explode '/'$string ); 
      Dann liefert mir $array[x] das sprchkürzel oder halt "impressum", "imprint" je nach dem

      EDIT:

      ich hab eine Tabelle namens ft_language (sID | sName | sKurz | sPic | sAktiv)

      dann will ich zum Beispiel Arikel in verschieden Sprachen haben

      tf_arktikel (aID | aName | usw. | sID)
      wobei in der siD die jeweilige ID der Sprache gespeichert wird, somit ist das ja ne Normalform wenn ich mich recht an die Schulzeit erinnere, und ich denk auch für jede Sprache ne extra Tabelle ist sinnvoll (meines Erachtens)


      Mir gehts eigentlich mehr oder weniger darum das ich unterschiedliche URLs haben möchte die zu den Sprachenpassen (zumindest bei den Seiten wie impressum, kontakt, agb, datenschutz, und paar weitere.)

      aber die ganzen seo und original urls abzuspeichern findsch auch bissl bescheidn

      Kommentar


      • #33
        @Paul.Schramenko: Dann arbeitest du aber wieder mit einer ID in der URL oder?
        It's not a bug. It's a feature!

        Kommentar


        • #34
          Nee eben nicht.
          url: example.com/imprint.php
          Im Template stehen dann die Translations, von mir aus in der Art von $translation['welcome'], $translation['imprintTextTop'] oder was anderes.
          Wenn man dann auch noch nach Gruppen das ganze aufteilt, dass beispielsweise jedes Template ne eigene Gruppe hat, dann kannst du in diesem Moment sagen, dass du alle Übersetzungen für Gruppe "imprint" haben willst, die du vorher in der Klasse setzt.

          bsp:
          PHP-Code:
          class ImprintController
          {
              protected 
          $_translationGroup 'imprint';
              
              public function 
          indexAction()
              {
                  
          $trans = new Translation($this->_translationGroup);
                  
          $this->giveVariableToTemplate('myTemplateTranslations' => $trans->getAllGroupTranslations());
                  
          # ...
              
          }
              
          # ...

          template:
          PHP-Code:
          ?><html>
              <head></head>
              <body>
                  <h2><?php echo $myTemplateTranslations['welcome']; ?></h2>
                  <div><?php echo $myTemplateTranslations['imprintTextTop']; ?></div>
              </body>
          </html>
          Dann gehste hin und erweiterst die Translation-Klasse die ich vorhin geschrieben hab um ne GruppenId und ne Gruppen
          "My software never has bugs, it just develops random features."
          "Real programmers don't comment. If it was hard to write, it should be hard to understand!"

          Kommentar


          • #35
            ich mach das einfach so

            ich hab ja bloß 4 feste seiten der rest dynamisch. bei den festen mache ich in die sprach ordner eifnach (de/start.tpl, en/start.tpl ..) und das dasim index je nach sprache includieren und gut ist

            Kommentar


            • #36
              Hab nochmal ne ganz andere Frage zu mehrsprachigen Webseiten.

              und zwar.

              habe ich auf einer unterseite einen langen text, der natürlich auch in alle sprachen sollte. im text sind bilder und links und so weiter drin.

              Meine bisherige Ordnerstruktur

              htdocs
              -> out
              --> lang
              ---> de
              ---> en
              ---> usw...


              In ordner de/en .. befinden sich die jeweilgen Sprachdatein mit Inhalt wie ($lang = array('welcomm' => 'Willkommen') je nach sprache)

              so wenn ich nun den text in allen sprachen ausgeben will hatte ich gedacht für jede sprache eine datei anzulegen (de_text.php, en_text.php)

              kann man dies so machen, da es ja nicht nur eine Seite betrifft sondern viel mehr. dann hat man ja wieder so ein datei choas fals man was ändern will.

              Habt ihr vielleicht noch bessere Ideen/Vorschläge?

              Datenbank lass ich außenvor aus bestimmten Gründen.

              Lg

              Kommentar


              • #37
                Datenbank lass ich außenvor aus bestimmten Gründen.
                Das ist schon mal ein Fehler. Denn Datenbankeinträge können gleichzeitig zentral und spezifisch sein, das bekommst DU mit keinem Dateisystem (== physisch) hin.
                [COLOR="#F5F5FF"]--[/COLOR]
                [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                [COLOR="#F5F5FF"]
                --[/COLOR]

                Kommentar


                • #38
                  Zitat von nikosch Beitrag anzeigen
                  Das ist schon mal ein Fehler. Denn Datenbankeinträge können gleichzeitig zentral und spezifisch sein, das bekommst DU mit keinem Dateisystem (== physisch) hin.

                  Also doch mit Datenbank? Mh wollt ich vermeiden da ich nicht der jenige bin die das nächste Jahr vewalten wird und er so besser klar kommt. Aber ok da muss er durch.

                  für die jeweilgen "CMS" Seiten könnt ich die tabelle ja so machen oder

                  ID | Titel | Inhalt | LangID. oder doch dann eher

                  ID | Titel | Inhalt | Titel_en | Inhalt_en

                  Kommentar


                  • #39
                    Auf jeden Fall ersteres. Was ich noch denke, ist, dass Du Dich entscheiden musst, wie Du die Inhalte verwaltest. Texte (u.a. mit Formatierung, Bildeinbindungen ..) und Fragmente (z.B. Form-Labels) gleichermaßen in einer gemeinsamen Tabelle zu verwalten, scheint mir der falsche Weg zu sein. Letztlich aber eine Frage, wie Du Dein Inhaltsmanagement aufsetzt.
                    [COLOR="#F5F5FF"]--[/COLOR]
                    [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                    [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                    [COLOR="#F5F5FF"]
                    --[/COLOR]

                    Kommentar


                    • #40
                      Eher LangID, es sei denn das Ding erweitert sich niemals, sonst musste wieder an der DB rum-tabeln
                      [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

                      Kommentar


                      • #41
                        Zitat von nikosch Beitrag anzeigen
                        Auf jeden Fall ersteres. Was ich noch denke, ist, dass Du Dich entscheiden musst, wie Du die Inhalte verwaltest. Texte (u.a. mit Formatierung, Bildeinbindungen ..) und Fragmente (z.B. Form-Labels) gleichermaßen in einer gemeinsamen Tabelle zu verwalten, scheint mir der falsche Weg zu sein. Letztlich aber eine Frage, wie Du Dein Inhaltsmanagement aufsetzt.

                        Naja ich denke das wenn ich einen button machen "bild hochladen" dann eine link ausgebe und er das selbsteinfügen kann ist zu komplizert. Aber ich kenn nur die Art BBC Code zur Formatierung.

                        Das nächste ist, wenn ich in die Tabelle noch einfüge "pageArt" (index, seite_1,seite_2)

                        dann müsst ich ja sagen wir auf der indexseite dann ne abfrage machen

                        PHP-Code:
                        "SELECT .... FROM cms_pages WHERE pageArt = 'index' AND langID = .." 
                        Also die Seite hat nur eine feste Anzahl von Seiten die viel Textbeinhalten. Seiten wie Kontakt, Impressum kann man ja mit den Sprachdatein regeln.

                        Kommentar


                        • #42
                          Naja ich denke das wenn ich einen button machen "bild hochladen" dann eine link ausgebe und er das selbsteinfügen kann ist zu komplizert. Aber ich kenn nur die Art BBC Code zur Formatierung.

                          Das nächste ist, wenn ich in die Tabelle noch einfüge "pageArt" (index, seite_1,seite_2)

                          dann müsst ich ja sagen wir auf der indexseite dann ne abfrage machen
                          Verstehe kein Wort.
                          Also die Seite hat nur eine feste Anzahl von Seiten die viel Textbeinhalten. Seiten wie Kontakt, Impressum kann man ja mit den Sprachdatein regeln.
                          Das ist ja genau die Überlegung. Wo Sprachdatei aufhört und Inhalt anfängt. Ob nicht beides in die Datenbank gehört. Ob aus physischer Verteilung sich nicht die Wartbarkeit erschwert ..
                          [COLOR="#F5F5FF"]--[/COLOR]
                          [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                          „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                          [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                          [COLOR="#F5F5FF"]
                          --[/COLOR]

                          Kommentar


                          • #43
                            Zitat von nikosch Beitrag anzeigen
                            Verstehe kein Wort.Das ist ja genau die Überlegung. Wo Sprachdatei aufhört und Inhalt anfängt. Ob nicht beides in die Datenbank gehört. Ob aus physischer Verteilung sich nicht die Wartbarkeit erschwert ..
                            Naja Übersetzungen wie von den Begriffen NAME, FIRMA, ANREDE, AGB, IMPRESSUM, die ANSCHRIFT usw.. kann ich doch wohl in die jeweilgen Sprachdatein schreiben. Die ändern sich ja nicht


                            zum anderen noch..

                            Angenommen ich habe eine Seite namen "Die Geschichte über uns"

                            Jetzt schreibe ich den Text in den Sprachen in die DB, aber ich muss doch noch zusätzlich in die DB schreiben wo dieser Text augegeben werden soll. Sprich ob auf der Index, Kontakt oder eben auf der Seite "Die Geschichte über uns"

                            Kommentar


                            • #44
                              Die Seitenstruktur ist aber wieder eine andere Baustelle. Stell Dir vor, DU hast zwei Links, die beide auf die selbe Seite verweisen. Das kannst Du in der Sprachdatei gar nicht abbilden.
                              [COLOR="#F5F5FF"]--[/COLOR]
                              [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                              „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                              [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                              [COLOR="#F5F5FF"]
                              --[/COLOR]

                              Kommentar


                              • #45
                                Ich wäre auch dafür alles in die DB zu packen. Simpler Grund: Es gibt nur eine Stelle an der man die Übersetzungen pflegen muss. Unter Umständen macht das ja auch mal jemand anders als du, der erst suchen müsste ob das jetzt hier oder dort steht.

                                Auf welcher Seite das angezeigt wird hat nun wirklich nichts damit zu tun. Das du einen übersetzten Text einfügen musst, musst du so oder so wissen. Die Frage ist dann nur wie du ihn ausliest und anzeigst.

                                Kommentar

                                Lädt...
                                X