Übersetzen von .NET .resx-Ressourcendateien
Eine .resx-Datei mischt Text mit Icons und anderen typisierten Ressourcen in einem XML. KAERIS übersetzt nur die Strings, lässt den Rest Byte für Byte unverändert und prüft die {0}-Format-Elemente.
KAERIS hat diese Seite übersetzt und jede Zeile durch Rückübersetzung geprüft. Ein Muttersprachler hat sie noch nicht überprüft. Englisches Original
Wie eine .resx-Datei aufgebaut ist
Ein XML <root> mit <data name="…"><value>…</value></data>-Einträgen. Ein Eintrag mit einem type- oder mimetype-Attribut (ein Icon, ein Bild) ist kein Text. Namen wie SaveButton.Text sind Steuerelement-Eigenschaften von WinForms.
<?xml version="1.0" encoding="utf-8"?>
<root>
<resheader name="resmimetype"><value>text/microsoft-resx</value></resheader>
<data name="WelcomeMessage" xml:space="preserve">
<value>Welcome back, {0}!</value>
<comment>{0} is the user's first name</comment>
</data>
<data name="ItemsInCart" xml:space="preserve">
<value>You have {0} items in your cart.</value>
</data>
<data name="SaveButton.Text" xml:space="preserve">
<value>Save and close</value>
</data>
<data name="AppIcon" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\app.ico;System.Drawing.Icon, System.Drawing</value>
</data>
</root>
Worauf bei .resx-Übersetzungen zu achten ist
Typisierte Einträge sind kein Text
Der Eintrag
AppIconim realen Durchlauf unten ist ein Dateiverweis. Er wird unverändert in die Ausgabe kopiert und nie zur Übersetzung gesendet.Format-Elemente
{0}instring.Formatmuss zurückkommen; im realen Durchlauf unten kamen beide zurück, und ein fehlendes Element wäre gemeldet worden.Schlüssel sind kein Text
Namen wie
SaveButton.Textsind Steuerelement-Eigenschaften von WinForms. Sie sind Schlüssel: bleiben unverändert und werden nie übersetzt.Kommentare bleiben in der Quelle
<comment>-Elemente werden nicht in die übersetzte Datei übernommen. Notizen für Übersetzer im Quelltext beibehalten.
Ein realer Durchlauf: ins Deutsche übersetzt und geprüft
Ein realer Durchlauf, 27. Oktober 2026, nichts von Hand bearbeitet: kaeris translate Strings.resx --langs de mit kaeris 0.2.35, 2,6 Sekunden, Modell openai/gpt-4.1-mini (das Fallback-Modell des Dienstes hat diesen Job beantwortet). Unten die deutsche Datei, die es geschrieben hat, und was kaeris check dazu sagt.
<?xml version="1.0" encoding="utf-8"?>
<root>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="WelcomeMessage" xml:space="preserve">
<value>Willkommen zurück, {0}!</value>
</data>
<data name="ItemsInCart" xml:space="preserve">
<value>Sie haben {0} Artikel in Ihrem Warenkorb.</value>
</data>
<data name="SaveButton.Text" xml:space="preserve">
<value>Speichern und schließen</value>
</data>
<data name="AppIcon" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\app.ico;System.Drawing.Icon, System.Drawing</value>
</data>
</root>
$ kaeris check --source Strings.resx --langs de ✓ de: complete & placeholder-safe ✓ all locales complete & placeholder-safe
Was KAERIS damit macht
Nur Strings
Typisierte und binäre Einträge werden unverändert beibehalten, wie im obigen realen Durchlauf: Der Eintrag
AppIconkam unverändert zurück.DTD und Entitäten abgelehnt
Dateien mit einer DOCTYPE- oder Entitätserklärung werden vor dem Parsen abgelehnt, eine Schutzmaßnahme, die mit XLIFF und Android XML geteilt wird.
Kostenlose Prüfung für dieses Format
Die kostenlose Prüfung auf /check liest dieses Format und läuft ohne Schlüssel oder Konto. Der Terminalbefehl
kaeris checkliest es ebenfalls: Er verarbeitet alle 13 Formate seit kaeris 0.2.35, mit denselben Regeln und ohne Übertragung von Daten.
In drei Schritten ausführen
CLI installieren
Führen Sie
pip install kaerisaus.Übersetzen der Ressourcendatei
Führen Sie
kaeris translate Resources/Strings.resx --langs de,jaaus.Ergebnis prüfen
Laden Sie die Quelle und die übersetzte .resx-Datei auf der kostenlosen Prüfseite hoch.
pip install kaeris kaeris translate Resources/Strings.resx --langs de,ja --verify
Fragen
Werden Icons und andere typisierte Ressourcen bearbeitet?
Nein. Einträge mit einem Typ- oder Mimetype-Attribut werden unverändert übernommen.
Werden -Elemente beibehalten?
Nein: Die übersetzte Datei wird ohne sie geschrieben. Ihre Quelldatei behält sie.
Ist es kostenlos?
Ja, ohne Konto: 10.000 Zeichen pro Datei und bis zu 8 Sprachen pro Lauf. Ein kostenloser API-Schlüssel erhöht das Dateilimit auf 50.000 Zeichen. Lebenslang kostet es einmalig 79 $, mit deinem eigenen OpenRouter-Schlüssel; monatliche Pläne beginnen bei 19 $. Preise
Kann ich es vom Terminal oder in CI ausführen?
Ja. pip install kaeris, dann kaeris translate Resources/Strings.resx --langs de,ja. Die GitHub Action führt dieselbe Übersetzung in einem Pull Request aus. CLI-Dokumentation · GitHub Action
Weiter geht's
CLI-Referenz · Check-Referenz · Im Browser übersetzen · Kostenlose Prüfung · Formate konvertieren · Pseudo-Lokalisierung
Andere Formate: JSON · YAML · .po · ARB · XLIFF · .strings · .xcstrings · .properties · CSV · Markdown · Fluent · Android XML