Obwohl ich ziemlich viele Ressourcen zu dieser Frage gefunden habe, gibt keiner von ihnen genau die Antwort auf ein mehrsprachiges CMS mit Zend Framework.
Es gibt viele z Endübersetzungsadapter , die in zend framwork verfügbar sind. Aber der eine (zend sql adapter), der am meisten für Datenbank (mysql) getriebene Webseiten benötigt, ist noch nicht veröffentlicht.
Für diese mehrsprachigen Webseiten, die nicht datenbankgesteuert sind, können Inhalte in Dateien (xml, mo oder andere) abgelegt werden und einer der zend translate Adapter wird verwendet, um den Inhalt zu verarbeiten, um die korrekte Sprache anzuzeigen.
Wie werden wir mit datenbankgestützter mehrsprachiger Website umgehen? Zuvor hatten wir die Gewohnheit, php mit einer gut gestalteten mehrsprachigen Datenbank zu verwenden, wobei jeder Artikel (Seite) in der Tabelle mit jeder erforderlichen Übersetzung versehen wurde. Wenn wir das gleiche tun würden, indem wir zend framework verwenden, wäre das eine übermäßige oder langsame Website? Wir verwenden immer noch zend cache, um es schneller zu machen, aber wir werden den Vorteil von zend translate nicht nutzen können. Später, wenn der Zend Translate Adapter für sql verfügbar sein wird, wäre es leicht, das mehrsprachige Content-Managed-System mit Hilfe von zend translate zu wechseln.
Hat jemand das versucht? Was könnten die Profis und Hühneraugen sein?
Eine andere Lösung könnte sein, unsere gut designte mehrsprachige Datenbank beizubehalten und xml-basierte Sprachdateien für jede Änderung zu erstellen, die der Admin über die GUI im Admin-Bereich erstellt. Verwenden Sie dann einen der Zend Translate Adapter, um diese XML-Dateien zu bearbeiten. Ich denke, das könnte übertrieben sein und einen Vogel mit Kanonen töten:)
Wenn ich darüber spreche, den Inhalt der ganzen Seite in eine Datenbank zu stellen. Es kann einige HTML-Tags wie b, span, br, p usw. enthalten. Wie gut kann die zend-Übersetzung Inhalte mit html-Tags darin behandeln?
Wenn jemand dies bereits zuvor implementiert hat, was könnte der beste Weg sein, mit mehrsprachigen Content-verwalteten Websites mit zend Framework umzugehen.
Jede Expertenmeinung!
In zend framwork gibt es viele zend translate Adapter. Aber der eine (zend sql adapter), der am meisten für Datenbank (mysql) getriebene Webseiten benötigt, ist noch nicht freigegeben.
Für diese mehrsprachigen Websites, die nicht datenbankgesteuert sind, können Inhalte in Dateien (xml, mo oder andere) eingefügt werden, und einer der zend translate Adapter wird verwendet, um den Inhalt so zu verarbeiten, dass die richtige Sprache angezeigt wird. p>
Das sind falsche Annahmen. Es wird nicht gesagt, dass eine DB-gesteuerte Anwendung ein DB-gesteuertes Übersetzungssystem verwenden muss. Sie können das statische Dateisystem einfach verwenden.
Wie werden wir mit datenbankgestützter mehrsprachiger Website umgehen? Zuvor hatten wir uns angewöhnt, PHP mit einer gut gestalteten mehrsprachigen Datenbank zu verwenden, wobei jeder Artikel (Seite) in der Tabelle mit jeder erforderlichen Übersetzung versehen wurde.
Ich denke, dass Sie sich ein bisschen irren - ich verstehe, dass Sie Translate für den dynamischen Inhalt Ihrer Seite (Artikel) verwenden möchten. Übersetzen ist eher darauf ausgelegt, die Ansichten zu internationalisieren - den statischen Inhalt. Ich meine Dinge wie Login oder registrieren oder Begrüßungstext , usw. Und diese sollten wirklich in den Dateien (beachten Sie Dateien einen statischen Cache) eher sein als in der DB, wegen der großen Last würde es machen (DB sollte sowieso zwischengespeichert werden). Die Artikel, die in der Datenbank gespeichert sind, sind etwas anderes. Was Sie erreichen möchten, ist mehrsprachiger Seiteninhalt. Sie können das problemlos ohne Übersetzen (denken Sie daran, Übersetzen ist gut für Ansichten!), Fügen Sie einfach ein Land / Sprache-Flag zu Ihren Tabellen und abrufen geeignete (für bestimmte Sprache gefiltert) Daten durch Ihr Modell. Es ist wirklich unkompliziert und benötigt kein Backend für die Übersetzung.
Ich bin nicht sicher, wie Translate funktioniert, aber ich kann davon ausgehen, dass es die Sprache überprüft und dann die gesamte Übersetzungsdatei lädt und im Skriptspeicher als Sammlung (oder einfaches assoziatives Array) speichert, um einen schnellen und robusten Übersetzungsmechanismus bereitzustellen ( Beachten Sie, dass es nicht nötig wäre, für jeden gegebenen Schlüssel eine DB oder Datei aufzurufen, weil alle im Speicher wären. Wenn man die ganzen Seiten, Artikel auf diese Art und Weise hält, ergibt das überhaupt keinen Sinn, hauptsächlich weil man nur 1-2 Artikel pro Seite benötigt (warum dann Speicher verschwenden?) Und manchmal Hunderte von lokalisierten View-Strings (also will man nicht für jeden von ihnen einen DB oder eine Datei aufrufen)
Eine andere Lösung könnte sein, unsere gut designte mehrsprachige Datenbank beizubehalten und xml-basierte Sprachdateien für jede Änderung zu erstellen, die der Admin über die GUI im Admin-Bereich erstellt. Verwenden Sie dann einen der Zend Translate Adapter, um diese XML-Dateien zu bearbeiten. Ich denke, das könnte übertrieben sein und einen Vogel mit Kanonen töten:)
Wenn Sie über Übersetzungen für einen statischen Inhalt sprechen - es ist wirklich eine sehr übliche Lösung: die Übersetzungen in der DB für einen einfachen Zugriff / Änderung zu behalten und die XML / CSV / beliebigen Dateien zu erzeugen, wenn Änderungen auftreten.
Wenn ich darüber spreche, den Inhalt der ganzen Seite in eine Datenbank zu stellen. Es kann einige HTML-Tags wie b, span, br, p usw. enthalten. Wie gut kann die zend-Übersetzung Inhalte mit html-Tags darin behandeln?
Es wäre wahrscheinlich gut, aber trotzdem denken Sie über dynamischen Inhalt nach. Statischer Inhalt sollte in der Ansicht formatiert werden. Also, Sackgasse, denke ich.
Bottom line: Mit Translate für all das, was du erwähnt hast, würde es einen Vogel mit einer Kanone töten:)
Tags und Links php mysql content-management-system zend-framework multilingual