.po-Dateien und gettext VS JSON und benutzerdefinierte i18n-Bibliothek?

8

Ich muss eine leichte gettext-ähnliche Bibliothek in JavaScript für browserseitige Übersetzungen entwickeln oder finden. Vorzugsweise könnte dieselbe Bibliothek von node.js verwendet werden, wenn ich stattdessen serverseitig übersetzen möchte.

1) Aber was sind die Vor- und Nachteile der Verwendung von .po-Dateien und einer JavaScript gettext-Bibliothek?
(Im Gegensatz zu JSON und jQuery Globalize oder ähnlich?)

2) Und gibt es einen Workflow / Service, der Crowdsourcing von Übersetzungen ermöglicht, die in ein Format (.po / json) exportiert werden können, das von einer JavaScript i18n-Bibliothek verwendet werden kann (gettext-Implementierung, Globalize). js etc.)?

    
dani 14.11.2011, 12:27
quelle

3 Antworten

14

1) Aber was sind die Vor- und Nachteile der Verwendung von .po-Dateien und einer JavaScript-gettext-Bibliothek? gettext-Format ist eher üblich: - Wenn Ihre Server-Seite bereits das Gettext-Format verwendet, können Sie es möglicherweise mit dem Client teilen - Übersetzer können sich im Gettext-Format (oder Yaml) wohler fühlen als im JSON-Format - Dafür gibt es eine Menge Werkzeuge.

Ich persönlich mag die Übersetzungsfunktionen, die um gettext herum gebaut sind, nicht - mir ist klumpig, wo sich leichtgewichtige Javascript-Bibliotheken (wie Ссылка ) besser anfühlen.

Bibliotheken, die du benutzen könntest:

  • jed kommt mit einer reinen gettext-Implementierung
  • i18next unterstützt gettext-Dateien, verwendet jedoch einen json-Ansatz für Übersetzungsfunktionen

2) Und gibt es einen Workflow / Service, der Crowdsourcing von Übersetzungen ermöglicht, die in ein Format (.po / json) exportiert werden können, das von einer JavaScript i18n-Bibliothek verwendet werden kann (gettext-Implementierung, Globalize). js etc.)?

  • Ссылка könnte etwas Interessantes sein
  • Ссылка wird mit einer Übersetzungsoberfläche geliefert, die Sie möglicherweise verwenden
jamuhl 17.10.2012, 08:42
quelle
2

Ich würde empfehlen, l10ns zu verwenden. Für jedes i18n-Projekt benötigen Sie Folgendes:

  1. Ein gutes Speichersystem, das Lokalisierungszeichenfolgen speichert.
  2. Ein gutes Lokalisierungsformat, das komplexe Formatierungen und nicht nur einfache Zeichenfolgen verarbeiten kann. Und unter komplexer Formatierung verstehe ich ein Format, das mehrere Formatierungen, genus / kontextbasierte Formatierungen, Zahlenformatierungen, Datumsformatierungen usw. bewältigen kann.

Es gibt sehr wenige Tools, die diese beiden Punkte behandeln. Die gebräuchlichste Lösung ist die Verwendung von gettext zusammen mit xgettext . Xgettext ist ein Werkzeug, das Ihren Quellcode durchläuft, um Lokalisierungsschlüssel zwischen Ihrem Quellcode und Lokalisierungsspeicher zu synchronisieren. Obwohl Gettext in Punkt 2 nicht so gut ist, können Sie beispielsweise keine Zeichenfolge mit zwei Pluralworten formatieren. So sind Strings wie I like 2 cats and 1 dog sehr schwer zu formatieren. Mehrfachformatierung ist ein sehr komplexes Problem zu lösen und hat viele Randfälle. Lassen Sie uns sagen, dass wir, anstatt nur zwei Katzen mögen, 2000 mögen. Die korrekte formatierte Zeichenkette wäre I like 2,000 cats and 1 dog . Ist Ihnen , in 2,000 ? Aufgefallen. Um also die Plot-Lösung von Gettext korrekt verwenden zu können, müssen wir auch eine externe Bibliothek für die Formatierung von Zahlen verwenden.

Also für Punkt 2, mit einem guten Lokalisierungsformat. Ich finde ICUs MessageFormat das am besten. Es ist Markup-Sprache, die sich mit L10n Formatierung befasst und es wird von vielen großen Namen wie Google, Apple und Yahoo verwendet. Es behandelt die Kantenfälle mit mehreren oben erwähnten Formatierungen. Es verarbeitet auch viele andere Arten komplexer Formatierungen. Wie Gattung Kontext, ordinale Formatierung, Zahlenformatierung und Datumsformatierung etc.

Ein Tool, das das MessageFormat von ICU unterstützt und ein Speichersystem eingebaut hat, ist L10ns . Es unterstützt auch den Workflow von Xgettext . Sie schreiben Ihren Quellcode und dann synchronisieren Sie Ihre Lokalisierungsschlüssel.

    
einstein 27.10.2014 02:16
quelle
0

Vorteile der Verwendung von gettext ist, dass es viele Tools dafür gibt, Übersetzer sind es gewohnt, es zu benutzen und Sie können einfach Strings zwischen Ihrem Javascript und dem Rest des Frontends teilen.

Sie können .po-Dateien mithilfe von xgettext aus JavaScript generieren, JavaScript wird jedoch nicht standardmäßig unterstützt. Wenn Sie die gleichen Funktionsnamen verwenden und sagen, dass Sie Perl verwenden (denke ich), funktioniert es zuverlässiger. Es gibt ein paar Tools, um .po in json zu konvertieren, oder einfach eine der gettext js-Implementierungen zu verwenden.

    
dsas 14.11.2011 20:25
quelle