Die Lokalisierung ist schwierig. Es ist wirklich schwierig. Es sind nicht nur "pairs of words" => "Wortpaare"
, es ist viel komplexer als das. Was die meisten Leute vergessen, wenn sie sich gettext ansehen und "Ugh, ugly" sagen ist das der Lokalisierungs-Prozess ist viel wichtiger als die technischen Details der Umsetzung. Das liegt daran, dass die eigentlichen Übersetzer normalerweise keine Programmierer sind und wahrscheinlich nicht einmal intern arbeiten. Dies verursacht viel mehr Kopfschmerzen, als Sie vielleicht denken. gettext ist wirklich alt, kampferprobt und hat eine riesige Toolchain hinter sich, die darauf abgestimmt ist, diesen Prozess zu unterstützen. Wer i18n und l10n richtig machen will, braucht ein leistungsfähiges System. gettext ist das und wird von einer breiten Palette von Tools unterstützt. Ihr Homebrewed Translation System™ tut dies nicht.
Zunächst einmal benötigen Sie ein robustes System zum Extrahieren übersetzbare Zeichenketten. Ohne in der Lage zu sein, übersetzbare Zeichenfolgen automatisch und reproduzierbar aus dem Quellcode zu extrahieren, haben Sie einen Berg an Arbeit für jede neue Zeichenfolge, die Sie übersetzen möchten. In gettext, xgettext
tut das.
Als nächstes benötigen Sie ein Tool, um die extrahierten Strings mit bereits vorhandenen Übersetzungen so zu synchronisieren, dass keine Übersetzungen verloren gehen und möglichst nur leicht veränderte Übersetzungen erhalten bleiben. In gettext msgmerge
tut das.
Als Nächstes möchten Sie eine Möglichkeit, Zeichenfolgen zusätzliche Informationen hinzuzufügen. Sie möchten sie nach Kategorie, "Domäne" und Kontext gruppieren können, Sie möchten möglicherweise Kommentare für den Übersetzer zum Quellcode hinzufügen, und Sie möchten möglicherweise, dass Übersetzer Kommentare zu den Übersetzungen hinzufügen können. gettext unterstützt all das.
Als nächstes möchten Sie ein Dateiformat, das von einer Vielzahl von Tools gut unterstützt wird, da Sie Ihre Dateien möglicherweise nach China senden, um sie dort übersetzen zu lassen. Der Grund, warum Sie sie möglicherweise an externe Übersetzer weiterleiten, ist auch der Grund, warum Sie ein gutes Synchronisierungstool zum Zusammenführen von Änderungen benötigen, da dies ein sehr asynchroner Prozess sein kann. PO-Dateien werden sehr gut unterstützt, weil gettext so alt ist. Es gibt viele Open-Source- und kommerzielle Tools, die den Lokalisierungsprozess je nach Ihren spezifischen Anforderungen auf vielen Ebenen unterstützen.
Unterschätzen Sie die Aufgabe der Lokalisierung nicht, wählen Sie ein für den Prozess gut geeignetes Tool und lernen Sie es kennen. gettext ist ein großartiges Werkzeug, wenn auch zugegebenermaßen nicht das anfängerfreundlichste.
Für das, was es wert ist, hier ist meine Gettext-Erweiterung für Twig , wodurch gettext für PHP noch besser wird.