Ich entwickle eine mehrsprachige PHP-Webanwendung und habe lange (-ish) Texte, die ich mit gettext übersetzen muss. Dies sind E-Mail-Vorlagen (normalerweise kurz, aber immer noch mehrere Zeilen) und Teile von Ansichtsvorlagen (längere beschreibende Textblöcke). Diese Texte würden etwas einfaches HTML enthalten (Dinge wie Fett / Kursiv zur Hervorhebung, wahrscheinlich ein Link hier oder da). Die Vorlagen sind PHP-Skripte, deren Ausgabe erfasst wird.
Das Problem ist, dass gettext für den Umgang mit längeren Texten sehr ungeschickt erscheint. Längere Texte haben im Laufe der Zeit im Allgemeinen mehr Änderungen als kurze Texte. Ich kann entweder die msgid ändern und sicherstellen, dass sie in allen Übersetzungen aktualisiert wird (kann viel Arbeit bedeuten und sehr fehleranfällig sein, wenn die msgid lang ist), oder ich kann sie behalten die msgid unverändert und nur die Übersetzungen ändern (was irreführende veraltete Texte in den Vorlagen hinterlassen würde). Ich habe auch Ratschläge gegen das Einfügen von HTML in gettext-Zeichenfolgen gesehen, aber wenn ich es vermeide, wird ein einzelnes natürliches Textstück in viele Teile zerlegt, was ein noch größerer Albtraum beim Übersetzen und Zusammensetzen sein wird, und ich habe auch Ratschläge dagegen gesehen unnötige Aufteilung von gettext-Zeichenfolgen in separate msgids.
Der andere Ansatz, den ich sehe, besteht darin, gettext für diese längeren Texte vollständig zu ignorieren und diese Blöcke in externen Untervorlagen für jedes Gebietsschema zu trennen und nur den für das aktuelle Gebietsschema einzuschließen. Der Nachteil ist, dass ich den Übersetzungsaufwand zwischen gettext .po-Dateien und separaten Vorlagen an einem völlig anderen Ort trenne.
Da diese Anwendung in Zukunft als Ausgangspunkt für andere Anwendungen verwendet wird, versuche ich, langfristig den besten Ansatz zu finden. Ich benötige einige Ratschläge für Best Practices in solchen Szenarien. Wie haben Sie ähnliche Fälle umgesetzt? Was hat sich bewährt und was hat sich als schlechte Idee herausgestellt?
Antworten:
Ich bin vor kurzem auf ein ähnliches Problem gestoßen (siehe /programming/8288050/can-i-automatically-update-msgids-in-gettexts-po-files-for-trivial-text-change ).
Grundsätzlich gibt es zwei Möglichkeiten:
msgmerge
Die Fuzzy-Übereinstimmung stimmt jedoch normalerweise immer noch mit dem richtigen Originaltext mit der alten Übersetzung überein, sodass die alte Übersetzung normalerweise dem Übersetzer zur Verfügung steht.quelle
Das ist etwas, das Sie leicht automatisieren können, wodurch es weniger fehleranfällig und auch weniger arbeitsintensiv wird.
quelle