Kostenloses Werkzeug
i18n-YAML in JSON umwandeln
Rails, Symfony und Hugo halten Übersetzungen in YAML. Die meisten JavaScript-Bibliotheken wollen JSON. Beide Richtungen, im Browser.
Läuft im Browser. Kein Konto, kein Upload, nichts verlässt den Rechner.
Läuft im Browser. Die Datei wird nicht hochgeladen.
Ein Leser für die Teilmenge, die i18n-Dateien wirklich benutzen
Das ist mit Absicht kein vollständiger YAML-Parser. Ein vollständiger wäre rund 100 KB JavaScript für ein Format, das in Sprachdateien nie mehr tut als „Schlüssel, Doppelpunkt, Text". Gelesen werden verschachtelte Zuordnungen mit Zeichenketten als Blättern, beide Anführungsarten und Blockskalare. Was nicht gelesen wird (Listen, Anker, Verweise, Flow-Schreibweise), bricht die Umwandlung mit der betreffenden Zeilennummer ab, statt still fehlgedeutet zu werden. Und darauf kommt es an: Eine verschluckte Liste ist ein fehlender Text, den niemand bemerkt, bis er auf dem Bildschirm steht.
Was heil bleibt
Umwandeln ist einfach. Die Datei nicht zu zerlegen ist die Arbeit.
Jeder Konverter, der eine Sprachdatei als Fließtext behandelt, liefert irgendwann einen Absturz aus. An diesen drei Stellen passiert es.
- Platzhalter bleiben Platzhalter
- %@, %lld, %1$s, {name} und {{count}} kommen genau so heraus, wie sie hineingegangen sind. Ein Platzhalter, der maskiert, umnummeriert oder übersetzt wurde, ist kein Schönheitsfehler, sondern ein Absturz auf dem Gerät.
- Pluralformen bleiben getrennt
- Xcodes variations, das plurals-Element von Android und msgstr[n] aus Gettext meinen dasselbe und schreiben es alle anders. Hier werden sie aufeinander abgebildet, statt zu einer Zeichenkette zusammenzufallen. Polnisch hat vier Formen; alle vier überleben.
- Schlüssel behalten ihre Form
- Verschachtelung, Punktpfade, Felder und Übersetzerhinweise gehen mit, wo das Zielformat einen Platz dafür hat. Wo nicht, steht es im Abschnitt darunter.
Was nicht mitkommt
Steht hier, weil man es sonst erst im kaputten Build erfährt.
Der Locale-Schlüssel der obersten Ebene bleibt stehen. Eine Rails-Datei, die mit de: beginnt, ergibt Schlüssel wie de.hallo statt hallo. Ihn abzuschneiden wäre bequem, genau bis jemand eine Datei ohne ihn schickt, und dann verschwände die erste echte Ebene. Kommentare gehen nicht mit. Beim Schreiben werden Werte in Anführungszeichen gesetzt, die sonst als Wahrheitswert oder Zahl zurückgelesen würden.
So läuft es
- Schritt 1
Datei hineingeben
YAML auf das linke Feld ziehen, über den Knopf auswählen oder den Text einfügen. Nichts wird hochgeladen. Die Umwandlung läuft in diesem Tab.
- Schritt 2
Ergebnis lesen
Das JSON steht da, während getippt wird. Der Zähler unter dem Feld sagt, wie viele Schlüssel durchgekommen sind. Eine Datei, die die Hälfte verloren hat, sieht man sofort.
- Schritt 3
Kopieren oder herunterladen
Text in die Zwischenablage, oder als Datei mit der richtigen Endung. Der Pfeil in der Mitte dreht die Richtung um.
Eine Sprachdatei rein. 64 Sprachen raus.
Ein Format umzuwandeln ist der Teil, den man von Hand machen kann. 3.627 Schlüssel in 64 Sprachen zu übersetzen, ohne einen einzigen Platzhalter zu zerlegen, ist der Teil, den man nicht von Hand macht. Beim nächsten Release zahlt man nur für die Strings, die sich geändert haben.
19 € im Monat inkl. MwSt., monatlich kündbar.
Fragen
- Warum beginnt jeder Schlüssel mit de. ?
- Weil die YAML-Datei den Locale als obersten Schlüssel führt, wie Rails-Dateien es tun. Er bleibt mit Absicht stehen: Zu raten, welche obersten Schlüssel Sprachkürzel sind, löscht irgendwann eine echte Verschachtelungsebene. Wer ihn nicht will, entfernt ihn im JSON.
- Meine Datei wurde mit yamlUnsupported abgewiesen.
- Neben der Meldung steht die Zeile. Das passiert bei Listeneinträgen, bei Ankern und Verweisen oder bei Flow-Schreibweise, also einer Zuordnung in geschweiften Klammern in einer Zeile. Der Abbruch ist beabsichtigt: Die Alternative wäre, Texte still fallen zu lassen.
- Werden mehrzeilige Blockskalare unterstützt?
- Ja, beide Arten. Wörtliche Blöcke behalten ihre Zeilenumbrüche; gefaltete Blöcke werden mit einfachen Leerzeichen zu einer Zeile zusammengezogen, und genau das bedeutet die gefaltete Schreibweise.
- Welches YAML wird geschrieben?
- Zwei Leerzeichen Einrückung, verschachtelte Zuordnungen, und Anführungszeichen um alles, was sich beim Zurücklesen sonst in seiner Bedeutung ändern würde. Das Ergebnis liest jeder übliche YAML-Loader.