NEWS
[Gelöst] Adapter "admin" words.js aus i18n -> [lang] -> translations.json generieren
-
Hallo,
ich habe mir für die Adapterentwicklung und zum Testen die Adapter Template Vorlage von ioBroker kopiert und einen Dummy-Adapter gebaut und installiert. Jetzt hab ich in der Admin Oberfläche ein paar Felder hinzugefügt und möchter deren Labels / Options / Descriptions übersetzen. Nun gibt es im Adapter admin Ordner eine words.js in der steht, dass in dieser Datei nix hinzugefügt werden soll weil der Inhalt automatisch generiert wird. Und dann gibt es im i18n Ordner die ganzen Sprachen jeweils mit der translations.json. Ich gehe mal davon aus, das man hier die entsprechenden Übersetzungen einträgt - aber wie wird die words.js generiert? Automatisch beim Adapter Upload klappt es schon mal nicht. Ich hab irgendwo ne Anleitung gelesen, die irgendwas von gulp und "adminLanguagesFlat2words" erwähnt - allerdings ist bei dieser Anleitung immer die Rede von Textfiles (flat.txt). Ich gehe mal davon aus, dass diese Anleitung ggf. veraltet ist weil ich in den Language Ordnern ja schon die translations.json drin hab…
Weis jemadn wie ich die words.js im Adapter genieren kann?
-
Hi auch,
kenne mich da nicht so gut aus, aber es gibt eine Hilfsfunktion unter
wo Du direkt maschinelle Übersetzungen im JSON-Format z.B. zum Kopieren in die words.js erhältst.
Aber es geht bestimmt auch anders.
-
Hi,
ja die hab ich entdeckt. Und wenn ich Daten in der words.js hinterlege funktioniert es auch. Allerdings steht dort explizit in der Datei:
"// DO NOT EDIT THIS FILE!!! IT WILL BE AUTOMATICALLY GENERATED FROM src/i18n"
Ich vermute mal Irgendwer hat sich stark was dabei gedacht.
Hoffe ich
Noch Jemand eine Idee?
-
Ließ das durch:
Hilft das?
Zumindest steckt im gulpfile eine entsprechende Funktion zum Generieren der word.js drin.
Wenn Du keinen i18n-Ordner hast, kannst Du IMHO ggf. die word.js direkt editieren. Ich stecke aber wie gesagt nicht tief drin.
-
Genau… hier wird erklärt wie man mit den flat.txt Dateien arbeitet. Die translation.json funktionieren genau so, nur als Befehl
gulp adminWords2languages
bzw
gulp languages2adminWords
, also ohne Flat, nehmen. Dann wird aus der JSON die words.js gebaut. Für die Bearbeitung der translation.json Dateien, existiert auch ein Editor, wo man alle Sprachen gleichzeitig bearbeiten kann.
https://github.com/ldittmar81/ioBroker- ... r/releases
Ich nutze auch gerne Netbeans zum Entwickeln und da wird von Haus aus Gulp im Menü angeboten…
-
Hallo,
ok Danke! Das sieht schon sehr vielversprechend aus. Leider hatte ich im Web nichts dazu gefunden.
Nun habe ich es mal getestet mit "gulp languages2adminWords" und erhalten folgenden Fehler:
root@miniserver:/opt/iobroker/node_modules/iobroker.nightingale# gulp languages2adminWords [08:58:46] Using gulpfile /opt/iobroker/node_modules/iobroker.nightingale/gulpfile.js [08:58:46] Task 'languages2adminWords' is not in your gulpfile [08:58:46] Please check the documentation for proper gulpfile formatting
Wie kann ich denn den Task dem Gulpfile hinzufügen?
-
Ok, ich hab im Gulpfile nachgeschaut und der Task muss "gulp adminLanguages2words" heißen, dann läuft der Process erfolgreich!
Also nochmal zur Zusammenfassung für die Suchenden:
Wenn man die Flatfiles nutzen möchte (flat.txt) dann folgende Befehle:
gulp adminWords2languagesFlat
Generiert aus der words.js die entsprechenden Flatfiles in den Language Ordnern
gulp adminLanguagesFlat2words
Generiert aus den Flatfiles der entsprechenden Language Ordner die words.js
Möchte man aber die JSON Files verwenden (translations.json) dann sind die folgenden Befehle angesagt:
gulp adminWords2languages
und
gulp adminLanguages2words
Danke an alle Helfenden!
-
ich habe mir für die Adapterentwicklung und zum Testen die Adapter Template Vorlage von ioBroker kopiert und einen Dummy-Adapter gebaut… `
Schön dass es klappt. Bezüglich Template hätte ich da noch was: Es wird an einem Projekt gearbeitet um Templates automatisch zu generieren. Die alten Templates werden dann auch früher oder später verschwinden… Probier es doch mal aus. Ist richtig cool!
-
Vielleicht bin ich zu blöd um das zu verstehen, aber habe das gulpfile in einige meiner Adapter eingebaut und auch gulp installiert (npm -g).
Dann hab ich beim ersten Adapter das
gulp adminWords2languages
ausgeführt und words.js wurde upgedated sowie die i18n's erzeugt.Seit dem geht allerdings nichts mehr!
Im post stand dass ich nur im words.js (im englischen nehme ich an) was ändern muss und bekomme das wieder übersetzt.
Das funktioniert nicht!
Ich habe etliches hinzugefügt aber Gulp ist nach wenigen ms fertig und erzeugt keine Übersetzungen mehr
Wozu brauch ich eigentlich die i18n Dateien? Ich will ja nur ein words.js das upgedated werden sol und wo ich neue Texte in Englisch einfüge (oder alte ändere) und die dann übersetzt bekomme? Oder?
p.s.: wollte das nicht nur für die Admin-Oberfläche sondern auch für den Adapter(.js) verwenden um dort mit require('./lib/words') auch so eine Datei zu integrieren und die ganzen logs und Texte umgesetzt zu bekommen. Wieder brauch ich kein i18n oder sowas in json.
Was mach ich falsch bzw. wo ist mein Gedankenfehler?