NEWS
Übersetzung
-
- In meiner index_m.html habe ich einige Dinge zum Übersetzen, wo sich der englische Text schon mal ändert,
<label for="gwipport" class="translate">Port</label>
Wie bringe ich es dem System bei, dass es die Einträge z.B. im word.js neu aufbauen soll?
- Gibt es ein Vorgehen .js Texte in die automatische Übersetzung aufzunehmen?
Vielen Dank!
-
@killroy2
Auf welchen Adapter beziehst du dich?
Verwendest du die i18n Struktur?
Verwendest du adapter-dev?
Oder verwendest du "nur" ein words.js das händisch erstellt wurde / gewartet wird?Wenn du adapter-dev verwendest (oder verwenden kannst9 sollte z.B. ein npm run translate --all alles aktualisieren.
Details siehe : https://github.com/ioBroker/adapter-dev
Weiters steht weblate als Übersetzungssystem zur Verfügung - ist besonders dann zu empfehlen, wenn du andere Sprachen als en / de durch externe nNativspeaker gewartet haben willst.
-
@mcm57 said in Übersetzung:
Ich verwende den neuesten Adapter Creator mit genau dem adapter-dev
npm run translate all
läuft schon, aber es übersetzt mit die englische Seite nur in die anderen Sprachen.
Wie gesagt, nein Problem ist ein anderes, ich ändere den original Text in der Verwendung im index_m von:<label class="translate" for="localInterface">text a</label>
in
<label class="translate" for="localInterface">text b</label>
Nun will ich dass er die Datenbank neu aufbaut, ohne von Hand alles nachpflegen zu müssen.
-
Du änderst wenn ich es richtig verstehe nicht den englischen Text sondern den KEY.
(In meinen Augen leider) wird üblicherweise der englische Text gleich als key benutzt. Besser wäre es in meinen Augen "symbolische" Namen zu verwenden, also zB. lblUsername mit englische Übersetzung "Username".
Was du haben willst wäre folgendes (wenn ich es richtig verstehe)
An der Anwen dung ändert sich nichts, nur der englische Text soll geändert werden.Dazu brauchst (und sollst) du in index_m.html gar nichts ändern. Es sollte vollkommen ausreichen in der en/translations.json den englischen Text - und nur die englische Übersetzung, also den text rechts vom Doppelpunkt, zu ändern. Anschließen npm run translate ausführen mit all oder mit 2owrds bzw. so ähnlich). Damit wird words.js neu erstellt. Index_m.html fragt nach wie vor mir dem alten Text als Key die englsiche Übersetzung ab, erhält dann den neuen Text den der User sieht.
Mir ist keine Funktion bekannt mit der automatisch der Key eines Textes geändert wird. Da kannst du nur einen neuen Key anlegen.
Zur Klarstellung was ich mit lblXxxx meine kannst du ggF in den snmp Adapter schaun. Der verwendet zwar jsonConfig aber das Prinzip der Übersetzungen ist ja dassselbe.
Nachtrag:
Ich würd dann eintragen;
<label class="translate" for="localInterface">txtTextA</label>
Und in en/trabslations.json
"txtTextA": "Mein Text A"
Damit kannst du später nur den Text in der translation ändern.
Übrigends:
Ein automatisches Retranslate der anderern Sprachen gibt es meines WIssens nach nicht ! -
@mcm57
Danke für deine Erklärung. Aus Lesbarkeitsgründen lass ich die englischen Texte so stehen und muss dann wissen den alten Text überall per replace durch den neuen zu ersetzen.Neue Texte muss ich dann auch im admin/i18n/en/translatons.json händisch anlegen, richtig?
Was wird alles übersetzet -wie funktioniert die Logik etwas Übersetzungsrelevantes zu finden?
Was mache ich mit Texten die Formatierungen enthalten, zB Hyperlinks. So mit in translations.json angeben?
-
Sorry für die späte Antwort. Mein Wissensstand ist der nachfolgende. Falls etwas nicht stimmen sollte oder nicht funktioniert frag in Telegram nach.
Aus Lesbarkeitsgründen lass ich die englischen Texte so stehen und muss dann wissen den alten Text überall per replace durch den neuen zu ersetzen.
OK, spricht derzeit nichts dagegen, Probleme wirst du ev. bekommen, wenn du WEBLATE (siehe https://github.com/ioBrokerTranslator/doc) einsetzen möchtest, da nach meinem Kenntnisstand das Ändern eines Keys in weblate nicht möglich ist sondern einen neuen Text bedeutet.
Neue Texte muss ich dann auch im admin/i18n/en/translatons.json händisch anlegen, richtig?
Neue Texte musst du eigentlich immer in en/translations.json eintragen. Das translation system parst sicher nicht html, react oder js code um potenzielle Texte zu finden.
Was wird alles übersetzet -wie funktioniert die Logik etwas Übersetzungsrelevantes zu finden?
npm run translate
nimmt en/translations.json als source (zumindest defaultmäßig). Alle Keys die NICHT in den anderssprachigen Dateien enthalten sind werden mittels Google übersetzt in in die andren xx/translation.json eingefügt. Je nach Optionen die du bei npm run translate angegeben hast wird anschließend der Inhalt aller xx/translations.json in das words.js gemerged und words.js damit neu erstellt.Beschreibung siehe https://github.com/ioBroker/adapter-dev#manage-translations.
npm run translate all
macht lt. Beschreibugn Folgendes:
Calls translate and afterwards updates words.js using to-words followed by to-json.
Wenn du eine neuerliche Übersetzung von keys haben willst die schon in den anderssprachigen translations.json enthalten sind, dann musst du diese keys in den anderssprachigen Dateien (manuell) löschen. Sinn ist offensichtlich, dass nicht be jeder Änderung korrekturen an z.B. den deutschen Texten wieder vernichtet werden. Alternativ kan nst du die Brachialmethode anwenden und alle xx/tranbslations != en löschen. Das bedeutet aber einen Totalreset und wenn jemand z.B. unsinnigen Text korriogiert hat, dann geht das verloren. Mit WEBLATE ist diese Methode eher inkompatibel.
Übrigends: Wenn du einen Key im englischen translations.json löscht so wird dieser Key meines Wissens nach (zumindest derzeit) nicht in den anderssprachigen translations.json gelöscht - außer du setzet WEBLATE ein, hier werde verwaiste Texte entfernt.
Was mache ich mit Texten die Formatierungen enthalten, zB Hyperlinks. So mit in translations.json angeben?
Da muss ich passen. Versuch als erstes Mal was translate.google.com damit anstellt. Ansonsten kann ich dir hier nicht helfen - Ausprobieren ist sicher einen Versuch Wert. Alternativ trenn zu übersetzende Texte und fixe links in 2 (od. 3) elemente - die müssen ja nicht durch den translator gehen.
Hoffe ich konnte ein wenig helfen.
McM