Ankündigung

Einklappen
Keine Ankündigung bisher.

Mehrsprachigkeit mit PHP

Einklappen

Neue Werbung 2019

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

  • #16
    Wie man die Konstanten konfiguriert ist dann der andere Teil.
    PHP-Code:
    define('KONSTANTE''Übersetzung'); 

    Kommentar


    • #17
      Ach was, also das hätte ich jetzt nicht vermutet

      Fragt sich nur, was das mit einer flexiblen Lösung zu tun hat.
      [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 G.Schuster Beitrag anzeigen
        Keine gute Idee, das sind normalerweise keine benutzer-/sessionspezifischen Daten.
        Und "in Grenzen" halten sich die Abfragen auch nicht wirklich - pro User mindestens eine plus die zig Filesystem-Requests um die Session zu lesen.
        Pack das Ganze in einen Cache, der für alle User gilt, _das_ spart dann wirklich DB-Abfragen und lässt dem Filesystem die Möglichkeit, ein bisschen zu Cachen, weil immer die gleiche Datei abgefragt wird.
        Wenn du super-performant werden möchtest nimm z.B. memcached.
        Die Session wird sowieso eingelesen. memcache läuft schon. Warum soll ich Kategorien in den Speicher von allen Benutzern laden (bzw. deren Requests), wenn diese von Ihnen nicht benötigt werden oder sogar garnicht für den Benutzer erlaubt sind? Die Methode ist extrem schnell und bei uns nie der Flaschenhals gewesen. Das sind ganz andere Dinge wie die oci-Funktionen selbst. Allein oci_connect braucht 25% der Zeit. Da kann leider auch memcache nichts machen.
        "[URL="http://www.youtube.com/watch?v=yMAa_t9k2VA&feature=youtu.be&t=25s"]Mein Name ist Lohse, ich kaufe hier ein.[/URL]"

        Kommentar


        • #19
          Ich benutze Zend Translate. Da stehen alle Übersetzungen übersichtlich in einer INI-Datei.

          Kommentar


          • #20
            Bei uns gibt es für jede Sprache eine Sprachdatei, in der alles via Konstanten definiert ist. Ich muss nur die richtige Datei includen. Im Admin wird alles verwaltet und aus der DB wird nach dem Export die Sprachdatei geschrieben. Läuft so ganz gut.

            Kommentar


            • #21
              Ich nutze eine Mischung aus Datenbank, Array und RAM-Caching.

              In der Datenbank stehen alle Textbausteine:

              iso, key, text
              z.B. de | SIGNUP | Anmelden

              In meinem Script werden dann alle Textbausteine mit ISO X in ein Array namens "$lang" geschrieben. Die Ergebnisse der Datenbank (also das Array) wird dann im RAM-Cache für 24 Stunden zwischengespeichert. Somit wird nicht immer ein DB request gemacht bei jedem reload.

              Texte lassen sich einfach anpassen, importieren, exportieren usw. Beim Programmieren haste dann einfach einen Tab im Browser offen wo du die Textbausteine eintragen kannst. Einfach gehts nich.

              Kommentar


              • #22
                Wir gehen auch über eine Übersetzungstabelle. Der Schlüssel kann manuell vergeben werden oder wird zusammengesetzt aus dem Tabellennamen und der ID des Ursprungselements. So kann man die passende Übersetzung direkt per join aus der Tabelle holen

                Kommentar


                • #23
                  ich fahre idr 2. Gleisig, Systemtexte kommen auf einer Ini Datei, Kontent direkt vom "CMS" aus der Datenbank.

                  beim Entwurf der Datenbank habe ich extremst auf Performance geachtet, so kann der gesammte Kontent einer (oder direkt mehrerer) Seiten durch eine Query direkt in der richtigen Sprache (inkl. Fallback us.w.) ermittelt werden, das Resultat wird daraufhin auf der Festplatte decacht und erst wieder gelöscht, wenn der Cache von einem Autor oder etc. durch einen Klick gelöscht wird.

                  Sehr genial ist auch, dass das System so auf Kontentseiten quasi völlig auf die Datenbank verzichten kann (sobald der Cache voll ist ).

                  Um Wirrwar zu vermeiden nutze ich für die Kommunikation nur Prozeduren und Stored Functions.

                  mich wundert es, dass es keinerlei "datenbank Frameworks" gibt, welche Prozeduren und Funktionen zum CRUD für alle Fälle bieten. << Marktlücke

                  Kommentar


                  • #24
                    Zitat von notyyy Beitrag anzeigen
                    mich wundert es, dass es keinerlei "datenbank Frameworks" gibt, welche Prozeduren und Funktionen zum CRUD für alle Fälle bieten. << Marktlücke
                    http://www.doctrine-project.org/
                    http://www.propelorm.org/
                    Die sollten zumindest CRUD in allen Lebenslagen irgendwie beherrschen
                    VokeIT GmbH & Co. KG - VokeIT-oss @ github

                    Kommentar


                    • #25
                      da haben wir uns missverstanden, mir ging es nicht um einen abstrakten zugriff auf die Datenbank sondern um einen abstrakten Zugriff auf gewisse Daten auf Datenbankebene

                      Kommentar


                      • #26
                        Warum verwendet eigentlich keiner gettext? Ich übrigens auch nmicht, wäre aber ziemlich an Erfahrungen dazu interessiert...
                        http://mcsodbrenner.blogspot.com/
                        Serpent PHP Template Engine: http://code.google.com/p/serpent-php-template-engine/

                        Kommentar


                        • #27
                          Zitat von McSodbrenner Beitrag anzeigen
                          Warum verwendet eigentlich keiner gettext? Ich übrigens auch nmicht, wäre aber ziemlich an Erfahrungen dazu interessiert...
                          Gute Frage. Ich habe gettext erst entdeckt, nachdem ich meine eigene Lösung gestrickt hatte. Später wurde gettext noch mal im PHP Magazin hervorgehoben und schließlich machte mal jemand hier in diesem Forum die vollmundige Behauptung, gettext sei schließlich der Standard, alles andere wäre ja wohl fragwürdig. Oder so ähnlich.

                          Darauf hin habe ich die Doku zu gettext kurz überflogen, nichts gefunden, was interessant genug wäre, um mich umzuorientieren, und das Kapitel zugeschlagen. Gruß
                          [B]Es ist schon alles gesagt. Nur noch nicht von allen.[/B]

                          Kommentar


                          • #28
                            ich finde es recht umständlich. zudem habe ich das Gefühl, dass es recht langsam ist.

                            Kommentar


                            • #29
                              Zitat von McSodbrenner Beitrag anzeigen
                              Warum verwendet eigentlich keiner gettext? Ich übrigens auch nmicht, wäre aber ziemlich an Erfahrungen dazu interessiert...
                              Ich denke weil es bei vielen PHP Installationen einfach nicht dabei ist.

                              Ich benutze zum Speichern von Überzetzungen übrigen .po Dateien.
                              GNU gettext – Wikipedia.

                              Das hat den Vorteil, dass sie zu GNU gettext kompatibel sind, man also Projekte auch leicht auf dieses umstellen kann, viel Übersetzer kennen sich damit aus und es gibt extra Editoren (mit syntax highlighting) dafür.

                              Die entsprechende Datei wird dann dem Template (abhängig von $_SESSION['lang']) bekannt gemacht.

                              im Code kann ich dann mit :

                              PHP-Code:
                              $template->nls_assign('_HALLO','hallo'); 
                              den Platzhalter "HALLO" mit der Übersetzung füllen.

                              Gruß Agundur
                              AFFE ist nur im Dezimalsystem ein Palindrom.

                              Kommentar

                              Lädt...
                              X