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

  • #16
    Zitat von nikosch Beitrag anzeigen
    Kannst Du halten wie ein Dachdecker. Variante 2 ist IMHO besser aus SEO Sicht, dafür ist die Abbildung auf den anderssprachigen Inhalt schwieriger. Im Zeifel lieber noch ne gemeinsame ID verwenden:

    Deutsch: www. domain.de/47/start/
    Englisch: www. domain.de/en/47/home/

    47 fordert dabei eigentlich den Inhalt an. Ansonsten brauchst Du nämlich ein Mapping, das home auf start abbildet (und alle anderen Sprachkombinationen).

    Im Übrigen würde ich Dir raten, auch die default-Sprache auf eine vollstänige URL zu erweitern:

    Deutsch: www. domain.de/de/47/start/
    statt
    Deutsch: www. domain.de/47/start/

    das macht die gemeinsame Verarbeitung alle Sprachvarianten einfacher, setzt aber auch voraus, dass Du die Website in allen Sprachen gleich strukturieren willst.
    Ok danke für die Antwort. Stimmt das mit den IDs ist natürlich ne sehr gute Lösung. Muss ich dann direkt mal abchecken, da ich müsste ich die DB jedoch anders weitig aufbauen. Wobei man auch die Datein nach den IDs (47.php, 01.php usw..) benennen könnte, was aber sicherlich unschön ist.

    Kommentar


    • #17
      was aber sicherlich unschön ist
      Erschwert den Überblick. Erhöht aber die Sicherheit, weil man dann die URL-Parameter mit (int) behandeln kann.
      [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


      • #18
        Zitat von nikosch Beitrag anzeigen
        Erschwert den Überblick. Erhöht aber die Sicherheit, weil man dann die URL-Parameter mit (int) behandeln kann.
        Naja gut unübersichtlich wirds net direkt sind max. 20 PHP Datein. Das sprachspezifische wird ja in den Datein ausgelesen.

        Sicherheit geht vor

        Kommentar


        • #19
          Naja gut unübersichtlich wirds net direkt sind max. 20 PHP Datein.
          Hmm, ich finde es macht schon nen Unterschied, ob ich das habe:

          start.html
          contact.html
          imprint.html
          ..

          oder

          47.html
          12.html
          13.html
          [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


          • #20
            Zitat von nikosch Beitrag anzeigen
            Hmm, ich finde es macht schon nen Unterschied, ob ich das habe:

            start.html
            contact.html
            imprint.html
            ..

            oder

            47.html
            12.html
            13.html
            man könnte aber auch 47.index.html machen und die über mod rewrite doch einfach in www. domain.de/de/47/index/ umschreiben...

            muss ich dann auch mal abchecken

            Kommentar


            • #21
              Dann hast Du den oben beschriebenen Vorteil, den das INT bietet aber nicht mehr. Dann musst Du nämlich das mapping der Sprachvarianten über das Filesystem machen, was noch unschöner ist. Du brauchst etwas, womit Du direkt includen kannst, es ginge z.B.

              47_de.html
              47_en.html

              Bsp:

              Du bist auf der deutschen Startseite (id = 47), drückst dann [en], wohinter die URL: http://myPage/en/47 liegt.
              Der Controller kann daraus jetzt 47 . $language . '.html'; erzeugen und versuchen, direkt zu includieren.
              [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


              • #22
                Zitat von nikosch Beitrag anzeigen
                Dann hast Du den oben beschriebenen Vorteil, den das INT bietet aber nicht mehr. Dann musst Du nämlich das mapping der Sprachvarianten über das Filesystem machen, was noch unschöner ist.
                Ach stimmt, ich dachte an das

                Code:
                RewriteRule ^([0-9]+)/([a-z]+)/$ $1-$2.html
                aber damit ist ja keine spezifische Datei angesprochen *KopfgegenWand*

                Kommentar


                • #23
                  Zitat von 22hase Beitrag anzeigen
                  man könnte aber auch 47.index.html machen und die über mod rewrite doch einfach in www. domain.de/de/47/index/ umschreiben...

                  muss ich dann auch mal abchecken
                  Dann fällt ja wieder der Vorteil der einfachen Validierung weg, weil du ja wieder einen String hast.

                  Edit:
                  UPS den Post von nikosch nicht gesehn
                  "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


                  • #24
                    Mh kann man zur Not auch in jeden Sprachordner die selben Datein anlegen?

                    de/index.html
                    de/impressum.html

                    en/index.html
                    en/imprint.html


                    ist aber sicherlich auch nicht optimal, oder?

                    Kommentar


                    • #25
                      Du solltest die Dateien gleich bennen, sodass du dann einfach den ordner switched und dann die gleich benannte Datei nehmen kannst.
                      Außerdem würde ich dazu tendieren und dir raten nur englische Namen zu verwenden.
                      "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


                      • #26
                        Zitat von Paul.Schramenko Beitrag anzeigen
                        Du solltest die Dateien gleich bennen, sodass du dann einfach den ordner switched und dann die gleich benannte Datei nehmen kannst.
                        Außerdem würde ich dazu tendieren und dir raten nur englische Namen zu verwenden.
                        Also sprich die datein einmal anlegen, index, imprint, contact usw...den indhalt je nach sprache aus der DB holen in in den urls nur die sprache ändern (de, en, nl usw..)

                        Kommentar


                        • #27
                          Zitat von 22hase Beitrag anzeigen
                          Also sprich die datein einmal anlegen, index, imprint, contact usw...den indhalt je nach sprache aus der DB holen in in den urls nur die sprache ändern (de, en, nl usw..)
                          1. Das ist möglichkeit eins.
                          2. Möglichkeit 2 ist, du legst mehrere Dateien an, pro Sprache eine, bennest diese aber gleich. Dann gibts wieder ne Möglichkeit, entweder imptint_de.html + imprint_en.html (nicht so schön) oder de/imprint.html + en/imprint.html
                          Wie du diese übersetzt lieg dann bei dir. Am besten vorher bereits anlegen und komplett übersetzt hochladen.

                          Es sei den es sollen im laufenden Betrieb Änderungen an den Translations möglich sein. Dann würde ich nur eine Datei anlegen und gegebenfalls über mod_rewrite oder sonst wie die sprache holen und über diese dann die Sprachvariablen aus der DB holen.
                          "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


                          • #28
                            Die Frage ist immer was du genau willst. Die perfekte Lösung aus User sowie SEO Sicht ist sicherlich wenn die Url komplett übersetzt und ohne irgenwelche Hilfs-IDs versehen ist. Also z.Bsp. http://www.example.com/products/new/nissan-skyline.html <> http://www.example.com/produkte/neu/...line-gt-r.html

                            Umsetzen lässt sich eine solche Lösung wie folgt:

                            Indextabelle

                            id | parent | title | lang | dblink
                            1 | 0 | welcome | en | 1
                            2 | 0 | inprint | en | 2
                            3 | 2 | employees | en | 1
                            4 | 0 | willkommen | de | 1
                            5 | 0 | impressum | de| 2
                            6 | 5 | mitarbeiter | de| 1

                            Inhaltstabellen

                            content_de

                            id | title | content
                            1 | Willkommen | Herzlich willkommen auf unserer Seite
                            2 | Impressum | Dieser Internetauftritt gehört Fimra XYZ
                            3 | Mitarbeiter | Unser Team besteht aus coolen Leuten

                            content_en

                            id | title | content
                            1 | Welcome | Welcome of our new website
                            2 | Imprint| The content on this website belongs to Firma XYZ
                            3 | Employees | Our crazy team with experts

                            Die URL gestaltet sich dabei wie folgt:

                            http://www.deineseite.de/de/impressum/mitarbeiter.html

                            http://www.deineseite.de/en/imprint/employees.html

                            Via mod_rewrite leitest du alles ( ausgenomen Verzeichnisse wo Bilder drin sind zum Beispiel. ) an die "dispatcher.php" um.

                            In der Dispatcher.php passiert folgendes:

                            1. Explode der URL in ein Array $urlparts mittels "/"
                            2. $urlparts[1] abgleichen mit $lang = array('de','en');
                            3. Wenn Sprache existiert gehts weiter wie folgt:

                            Gib mir die ID zurück des Tupels aus der Indextabelle wo lang = $urlparts[1] AND title = $urlparts[letztes-element(-.html) und title des Parent Elements = $urlparts[zweit-letztes-element(-.html).

                            Danach hol mir aus der Tabelle content_$urlparts[1] das Tuple mit der zuvor ermittelten ID.

                            Das ganze gibst du dann alles in der selben Datei z.Bsp. content.php aus.

                            Keine Ordner, keine Dateien doppelt, die ganze businesslogik in einer PHP Klasse.

                            Natürlich gibt es je nach genauer Anwendung noch so seine kleinen Tücken aber im grossen und ganzen funktioniert die Mehrsprachigkeit so mit dem kleinsten Aufwand im Falle einer Anpassung.

                            Neue Sprache einfach -> CREATE TABLE content_"NEUE-SPRACHE".

                            Das $lang Array kannst du dir auch dynamisch erstellen lassen anhand aller Tabellen mit dem namen "content_"*

                            Grüsse

                            eXe
                            It's not a bug. It's a feature!

                            Kommentar


                            • #29
                              Besser eine tabelle mit

                              id | name | value_de | value_en
                              1 | welcome | Willkommen! | welcome!
                              2 | imprint | Dieser Internetauftritt gehört Fimra XYZ | The content on this website belongs to Firma XYZ

                              Und dann in den Templates einfach die Variablen "welcome" oder eine andere aus der DB laden. je nachdem welche Sprache gewählt ist, kriegst du dann das richtige Ergebnis.
                              "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


                              • #30
                                Zitat von Paul.Schramenko Beitrag anzeigen
                                Besser eine tabelle mit

                                id | name | value_de | value_en
                                1 | welcome | Willkommen! | welcome!
                                2 | imprint | Dieser Internetauftritt gehört Fimra XYZ | The content on this website belongs to Firma XYZ

                                Und dann in den Templates einfach die Variablen "welcome" oder eine andere aus der DB laden. je nachdem welche Sprache gewählt ist, kriegst du dann das richtige Ergebnis.
                                Hab ich anfangs auch gedacht, aber je nach grösse der Datenbank kann es sich negativ auf die Performance auswirken die Tabelle zu durchsuchen wo alle Daten zusammengefasst sind.

                                Zudem ist es sauberer die Sprachen getrennt zu haben. ( Find ich persönlich, geschmacksache. )

                                Zudem hast du die Möglichkeit für einzelne Sprachen ( oder sprich Regionen ) eigene Seiten zu erstellen.

                                Gruss
                                It's not a bug. It's a feature!

                                Kommentar

                                Lädt...
                                X