Kombinieren von Schlüsseln und Volltext beim Arbeiten mit gettext- und .po-Dateien

8

Ich schaue mir gettext und .po an, um eine mehrsprachige Anwendung zu erstellen. Mein Verständnis ist, dass in der .po Datei msgid die Quelle und msgstr die Übersetzung ist. Dementsprechend sehe ich 2 Möglichkeiten, msgid zu definieren:

Verwenden von Volltext (z. B. "My name is %s.\n" ) mit den folgenden Vorteilen:

  • Wenn Sie gettext aufrufen, können Sie deutlich sehen, was vor sich geht übersetzt
  • es ist einfacher, .po -Dateien zu übersetzen, weil sie enthalten den eigentlichen zu übersetzenden Inhalt

Verwenden eines Schlüssels (z. B. my-name %s ) mit folgenden Vorteilen:

  • Wenn der Quelltext lang ist (z. B. Absatz über Firma), sind Aufrufe von gettext prägnanter, was Ihre Ansichten sauberer macht
  • leichter zu pflegen mehrere .po Dateien und Ansichten, weil der Schlüssel weniger wahrscheinlich zu ändern (z. B. Schlüssel von company-description viel weniger wahrscheinlich als die tatsächliche Unternehmensbeschreibung ändern)

Daher meine Frage:
Gibt es eine Möglichkeit, mit den Dateien gettext und .po zu arbeiten, die es erlauben, die Vorteile beider Methoden zu kombinieren, nämlich:
-Verwendung eines Schlüssels für gettext Aufrufe
-Fähigkeit für den Übersetzer, um den vollständigen Text zu sehen, der übersetzt werden muss?

    
Max 01.04.2013, 12:56
quelle

2 Antworten

2

Ich habe gerade eine ähnliche (viel ältere) Frage beantwortet hier .

Kurze Version:

Das PO-Dateiformat ist sehr einfach. Es ist also möglich, PO / MO-Dateien aus einem anderen Workflow zu generieren, der die gewünschte Flexibilität bietet. (Ihre Entwickler wollen Kennungen, Ihre Übersetzer wollen Wörter)

Sie können diese Lösung selbst rollen oder eine Cloud-basierte App wie Loco verwenden, um Ihre Übersetzungen zu verwalten und eine Gettext-Datei mit Kennungen zu exportieren, wenn Deine Entwickler brauchen sie.

    
Tim 05.06.2013, 09:20
quelle
6

gettext wurde entwickelt, um englischen Text in andere Sprachen zu übersetzen, und so sollten Sie es verwenden. Benutze es nicht mit Schlüsseln. Wenn Sie Schlüssel möchten, verwenden Sie eine andere Technik wie ein assoziatives Array.

Ich habe zwei große Open-Source-Projekte (50 Sprachen, 5000 Übersetzungen) verwaltet, eine mit dem Schlüsselansatz und eine mit dem gettext-Ansatz - und ich würde den Schlüsselansatz nie wieder verwenden.

Die Nachteile umfassen die Verbreitung von Änderungen im englischen Text in die anderen Sprachen. Wenn Sie

ändern %Vor%

bis

%Vor%

Der neue Text hat eine völlig andere Bedeutung. Wie können Sie sicherstellen, dass andere Übersetzungen ungültig gemacht und aktualisiert werden?

Sie haben erwähnt, dass Sie lange Texte haben, die Ihre Skripte schwer lesbar machen. Die Lösung hierfür könnte darin bestehen, diese in ein separates Skript zu schreiben. Zum Beispiel, legen Sie dies in den Hauptcode

%Vor%

und haben ein Skript, das nur Hilfemeldungen bereitstellt:

%Vor%

Ein weiteres Problem für gettext ist, wenn Sie eine ganze Seite übersetzen müssen. Vielleicht eine Broschürenseite auf einer Website, die viele eingebettete Bilder enthält. Wenn Sie viel Platz für Sprachen mit langem Text (z. B. Deutsch) zulassen, haben Sie viele Leerzeichen bei Sprachen mit kurzem Text (z. B. Chinesisch). Als Ergebnis haben Sie möglicherweise unterschiedliche Bilder / Layouts für jede Sprache.

Da diese in der Regel wenige sind, ist es oft einfacher, diese externen gettext vollständig zu implementieren. z.B.

%Vor%     
fisharebest 02.04.2013 07:32
quelle