2016-10-19 7 views
2

Ich arbeite an einer JavaScript-App und habe bisher alle meine Strings als Klartext eingegeben.Schluckaufgabe zum Übersetzen von JS

Das fängt an, sich wirklich hacky zu fühlen (ich bin gewohnt, gettext), also würde ich es vorziehen, sie alle in etwas wie {{translated_string}} wickeln und eine Schluckaufgabe nur suchen/ersetzen sie alle während des Builds Schritt.

Also, meine Frage ist; Gibt es einen generischen (kein framework-specific wie angular-gettext oder so ähnlich) gettext replacer da draußen?

Offensichtlich ist es gar nicht in irgendeiner Weise JavaScript verbunden werden muß, sollten Sie in der Lage sein, es auf jeden Dateityp laufen und haben {{translatable_string}}: s übersetzt werden.

+0

Got diese Wähler leben nach unten, die Stellung zu verweigern. Was genau stimmt nicht mit der Frage? – powerbuoy

Antwort

0

Sie möchten vielleicht mit gulp-replace suchen. Wie in this answer erläutert, sollten Sie in der Lage sein, jede beliebige Zeichenfolge im Stream zu suchen und zu ersetzen.

+0

Ok danke, ich benutze es eigentlich bereits für andere Aufgaben, aber ehrlich gesagt fühlt es sich ein wenig hacky an, es zu benutzen, um meine gesamte Übersetzung zu machen ... Wenn niemand etwas robusteres vorschlägt, könnte ich es am Ende benutzen. Vorzugsweise möchte ich etwas, das auch '.po' und' .mo' Dateien verwendet. – powerbuoy

0

Ich empfehle eine Datenbank mit Strings für Ihre Übersetzungen, wenn die dynamische Generierung von Seiteninhalt für Ihre App möglich ist. Beginnend mit Englisch oder was auch immer normal ist, aber die Notwendigkeit, Inhalte zu lokalisieren, ist ein hartes Problem ohne ein robustes System. Eine einfache MongoDB-Tabelle kann zum Speichern des Inhalts verwendet werden. Wenn die App eine Schnittstelle benötigt, kann sie mit den richtigen lokalisierten Zeichenfolgen geladen werden. Als zum Beispiel:

if(err) alert("Please turn off caps lock"); 

könnte worden:

if(err) alert(Please_turn_off_caps_lock.English); 

Wenn Sie statische Seiten mit großem Schluck zu bauen, um eine Datenbank in Verbindung mit großem Schluck-ersetzen klingt interessant. Mit gulp-data können Sie die Zeichenketten aufrufen und verpacken, dann können Sie sie füttern, um die Dateien zu ersetzen und zu ändern. Dank der Erweiterbarkeit von Datenbanken oder Dokumentenspeichern können Sie Ihre Lokalisierung erweitern, ohne ständig einzelne Dateien oder Bäume zu hacken.

+0

Danke. Ich bin nicht wirklich auf der Suche nach einer Lösung, wie man den Text speichern kann, ich dachte, ich würde 'po' /' mo' Dateien wie normal verwenden. Alles was ich brauche, ist ein gulp/npm-Modul, das während des Build-Schritts alle Übersetzungszeichenfolgen durchsucht/ersetzt. Ich könnte am Ende mit 'gulp-replace' enden.Es scheint nicht, als wäre etwas, was richtig gettextbezogen wäre. – powerbuoy

0

Versuchen Sie gulp-gettext-parser.

var gettext = require("gulp-gettext-parser"); 
var rename = require("gulp-rename"); 

gulp.task("gettext", function() { 
    return gulp.src("src/**/*.js") 
     .pipe(gettext()) 
     .pipe(rename("bundle.po")) 
     .pipe(gulp.dest("dist/")); 
}); 
0

Vielleicht, was Sie brauchen, ist mustache.js, werfen Sie einen Blick: https://github.com/janl/mustache.js/

Ich bin mit dem Schnurrbart nicht verwendet zu arbeiten, aber ich hatte einige Updates in einem Projekt mit ihm getan zu tun und ich war überrascht, welche Fähigkeiten es hat.

Wenn Sie vertraut sind mit jade (jetzt umbenannt in Mops), werden Sie feststellen, ist etwas ähnliches, aber am Ende, Sie sind nicht gezwungen, nur HTML-Dateien zu generieren, können Sie jede Art von Textdatei generieren.

könnte Dieser Blog hilfreich sein, die Unterschiede zwischen einigen anderen Templat Sprachen über NodeJS zu verstehen: https://strongloop.com/strongblog/compare-javascript-templates-jade-mustache-dust/

+0

Danke. Ich bin nicht wirklich auf der Suche nach Vorlage Sprache ändern. Deshalb habe ich speziell nach einem generischen Modul gefragt, das unabhängig vom Dateityp funktioniert (ich sollte in der Lage sein, dieses Ding auf irgendwas von js, CSS, html und sogar svg auszuführen) – powerbuoy

Verwandte Themen