Ankündigung

Einklappen
Keine Ankündigung bisher.

Mehrere Sprachen

Einklappen

Neue Werbung 2019

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

  • Mehrere Sprachen

    Hallo,

    ich weiß irgendwie nicht was besser ist und was langfristig besser geeignet wäre.

    Also wie die überschrift schon verrät, ich baue eine Webseite in der mehrere Sprachen zur Auswahl stehen sollen.

    Es soll als erstes die Sprache des Browsers auslesen(da vom System meines wissen nicht geht?!? korrigiert mich falls ich falsch liege).

    Sagen wir einfach ich habe dann die Sprache 'DE'.

    Jetzt möchte ich im laufenden Betrieb auch die Möglichkeit haben auf z.B. 'EN' umzuschalten.

    wie würdet ihr das aufbauen?
    Per Sessionvariable oder eher per '$_GET['lang'] also url anfügen -> '?lang=de' ?

    Dann die Sprache aus einer Datei auslesen? oder ist es besser per Datenbank solche Sachen auszulesen? Würde die Ladezeit der Webseite eventuell darunter leiden, falls ich es per Datenbank mache?

    Was wäre für noch mehr Sprachen besser? wenn es so an die 10 werden würde?

    muss ich noch irgendwas WICHTIGES beachten wenn ich das einbauen möchte?

    PS: Ich weiß das es zu mehreren Sprachen schon viel im Internet zu finden ist, aber auf meine fragen habe ich jetzt spezielle keine Antworten gefunden, deswegen möchte ich euch um eure Meinung und eure Erfahrungen bitten sie mir mitzuteilen


  • #2
    Hallo,

    ich würde die Sprache über die URL laufen lassen, das hat meines Wissens nach vorallem auch SEO-Technische Relevanz wenn der Content in mehreren Sprachen verefübar ist. Schau dir mal "mod_rewrite" an - ist SEO-technisch schöner wenn die Seite /en/about-us heißt statt ueber_uns.php?lang=en.

    Bzgl deiner zweiten Frage ob Sprachdateien oder Datenbank würde ich die Boardmittel von PHP nutzen und auf "gettext" zurückgreifen welches mit Sprachdateien areitet. (http://php.net/manual/de/function.gettext.php)

    Die Anzahl der Sprachen ist denke ich unrelevant - weil es im Grunde ja immer nur eine aktive Sprache geben kann ...
    Gruß,
    SebTM

    Kommentar


    • #3
      Erstmal vielen dank, für die schnelle Antwort

      Zitat von SebTM Beitrag anzeigen
      Hallo,

      ich würde die Sprache über die URL laufen lassen, das hat meines Wissens nach vorallem auch SEO-Technische Relevanz wenn der Content in mehreren Sprachen verefübar ist. Schau dir mal "mod_rewrite" an - ist SEO-technisch schöner wenn die Seite /en/about-us heißt statt ueber_uns.php?lang=en.
      Da gebe ich dir recht, das würde wirklich schöner.

      Zitat von SebTM Beitrag anzeigen
      Bzgl deiner zweiten Frage ob Sprachdateien oder Datenbank würde ich die Boardmittel von PHP nutzen und auf "gettext" zurückgreifen welches mit Sprachdateien areitet. (http://php.net/manual/de/function.gettext.php)
      "gettext" kannte ich jetzt noch nicht, hab es mir mal kurz angeschaut und verstehe noch nicht so ganz das Prinzip dahinter, wie das funktionieren soll. Kennst du eine Seite die ein beispiel darlegt?

      Kommentar


      • #4
        Schau dir mal folgenden Link zu gettext an - wenn du spezifische (also nicht - verstehe ich allgemein nicht) hast - immer gerne: http://www.phpbar.de/w/Gettext
        Gruß,
        SebTM

        Kommentar


        • #5
          Zitat von SebTM Beitrag anzeigen
          Schau dir mal folgenden Link zu gettext an - wenn du spezifische (also nicht - verstehe ich allgemein nicht) hast - immer gerne: http://www.phpbar.de/w/Gettext

          Danke nochmals, aber irgendwie werde ich daraus immer noch nicht ganz schlau,

          ich dachte eher das ich sowas machen müsste in einer sprach datei:
          PHP-Code:
          $strlanguagecolumn(array(
              
          "germany"     => "Sprache",
              
          "uk"                 => "Language",
              
          "italy"         => "Lingua")); 
          und vorher irgendwie festlege welche ich raus nehmen muss.


          Also so habe ich das bisher verstanden,
          ich gebe z.b. das auf der index.php an

          PHP-Code:

            setlocale
          (LC_MESSAGES'de_DE'); // _NUR_ Sprache auf Deutsch setzen
            
             
          bindtextdomain("test""./locale"); // Ort der Ueberetzungstabellen angeben
             
          bind_textdomain_codeset("test""UTF-8"); // richtigen Zeichensatz angeben (optional)
            
             
          textdomain("test"); // Uebersetzung wird nun aus ./locale/de_DE/LC_MESSAGES/test.mo geholt
            
            // Zu uebersetzender Teil
            
          echo _("Hello world");
            echo 
          "<br />";
            echo 
          gettext("Goodbye"); 
          es wird dann automatisch eine Datei erstellt die test heißt? und in der die englischen Wörter drin stehen? in der Datei müsste ich dann die Deutschen hinzufügen?

          und wenn ich dann das so abändere,
          PHP-Code:
          setlocale(LC_MESSAGES'it_IT'); // _NUR_ Sprache auf Deutsch setzen 
          nimmt er da die selbe Datei? und wird dort eine weitere Zeile dann hinzugefügt wo ich das wieder übersetzten muss?

          Kommentar


          • #6
            Ich zweifel gerade daran das du die Kommentare hinter den Befehlen gelesen hast!

            Deine Übersetzungen liegen der Konfiguration nach in folgender Ordnerstruktur:
            ./locale/<Sprachcode z.B. de_DE>/LC_MESSAGES/<Dateiname gesetzt via textdomain()>.mo

            Hier findest du in einem Abschnitt wie du die ".po"-Dateien erstellst und daraus die benötigten ".mo"-Dateien machst. (http://phptal.org/manual/de/split/gettext.html)
            Gruß,
            SebTM

            Kommentar

            Lädt...
            X