Was sind die besten Werkzeuge zum Bearbeiten von ResX-Dateien?
Die besten Werkzeuge zur Bearbeitung von ResX-Dateien lassen sich in drei Stufen einteilen: Visual Studios integrierter Ressourceneditor für Einzeldatei-Bearbeitungen, ResXResourceManager zum Anzeigen jeder Sprachspalte eines .NET-Projekts in einem Raster sowie ein Übersetzungsmanagementsystem (TMS) wie Smartling, das .resx analysiert und .resw Dateien nativ, wandelt RESX-Elemente <comment> in Übersetzerbefehle um und schützt .NET-ähnliche {0}Platzhalter während der Übersetzung. Welche Tier passt, hängt davon ab, wie viele Sprachen, Dateien und Release-Zyklen du verwaltest: Ein IDE-Editor arbeitet für einen Entwickler, der eine Datei berührt, während ein TMS Dutzende von Strings.fr-FR.resx Varianten über Releases hinweg synchron hält, ohne XML manuell zu bearbeiten.
Letzte Überprüfung: 9. September 2026
Warum ist das manuelle Bearbeiten von ResX-Dateien fehleranfällig für Lokalisierungen?
Das manuelle Bearbeiten von ResX-Dateien ist fehleranfällig, da eine .resx-Datei Die Datei ist eine XML-Datei mit strenger Struktur, und jede übersetzte Sprache ist eine separate physische Datei, die Schlüssel für Schlüssel mit der Quelldatei übereinstimmen muss. Vier Muster verursachen den größten Teil des Schadens:
- Eine Datei pro Ort, keine geteilte Ansicht. .NET liest
Strings.resxsich als neutrale Kultur undStrings.de-DE.resx,Strings.ja-JP.resx, und so weiter als Satellitenkulturen. Jeder Schlüssel, der der Quelle hinzugefügt, aber in einer Satellitendatei fehlt, fällt zur Laufzeit stillschweigend auf Englisch zurück, sodass Drift unsichtbar ist, bis ein Benutzer ihn sieht. - Platzhalter im zusammengesetzten Format. .NET-Zeichenketten verwenden
{0},{1}Token, die zur Laufzeit durchstring.Formataufgefüllt werden. Ein Übersetzer, der einen Satz umstellt und ein Token weglässt oder neu tippt, erzeugt eine Zeichenkette, die zwar kompiliert wird, aber eineFormatExceptionauslöst oder den falschen Wert ausgibt. - XML-Escape-Regeln. Die fünf reservierten Zeichen (< > & ' ") müssen innerhalb der
<value>Elemente entweicht werden, und ein Ressourceneditor, der sie roh schreibt, beschädigt die Datei; Smartling entgeht diese beispielsweise standardmäßig und gibt eineentity_escapingDirektive zur Steuerung dieses Verhaltens frei. - Kommentare, die den Übersetzer nie erreichen. Entwickler fügen Nutzungsnotizen im RESX-Element
<comment>ein, aber ein Copy-Paste- oder Tabellenkalkulations-Workflow entfernt sie, sodass Übersetzer den bereits vorhandenen Kontext in der Datei erraten. - Kein Übersetzungsgedächtnis. Eine .resx, die in einer IDE bearbeitet wurde, enthält keinen Aufzeichnung darüber, wie "Cancel" oder "Save changes" in der letzten Version übersetzt wurde, sodass identische Strings in jedem Zyklus neu übersetzt werden (und zwar inkonsistent).
Können Sie einen Ressourceneditor für Lokalisierungsprojekte empfehlen?
Der richtige Ressourceneditor für ein Lokalisierungsprojekt ist derjenige, der dem Umfang des Projekts entspricht, und die meisten .NET-Teams verwenden letztendlich zwei oder drei dieser Ebenen zusammen anstatt nur eines einzigen Tools:
- IDE-Ressourceneditor (Visual Studio) – Visual Studio öffnet jede .resx in einem Raster aus Namen-, Wert- und Kommentarspalten und ist das richtige Werkzeug für Entwickler, die eine einzelne Zeichenkette in der Quellkultur hinzufügen oder korrigieren. Es zeigt jeweils eine Datei an, daher ist es nicht zum Vergleich von Sprachen ausgelegt.
- Mehrsprachiger Ressourcenmanager (ResXResourceManager) - ResXResourceManager ist eine kostenlose Open-Source-Visual-Studio-Erweiterung, die alle .resx-Dateien in einer Projektmappe lädt und alle Kulturen nebeneinander anzeigt, wobei fehlende Übersetzungen hervorgehoben werden. Für kleine Teams, die intern übersetzen, ist es das praktische Upgrade, aber es verfügt immer noch über kein Translation Memory, kein Glossar und keinen Review-Workflow.
- Übersetzungsmanagementsystem (Smartling) – ein TMS parst die .resx oder .resw Datei, jede
<data>Zeichenkette mit ihrem Schlüssel und Kommentar extrahiert, sie durch maschinelle Übersetzung, menschliche Übersetzung oder beides weiterleitet und eine übersetzte Datei im gleichen Format zurückgibt. Smartlings RESX-Parser (Smartling-Identifikatorresx) akzeptiert .resx und .resw Dateien bis zu 10 MB, erfasst RESX-Kommentare automatisch als Übersetzerbefehle und wendet das RESX-Platzhalterformat an, sodass{0}Token gesperrt und nicht bearbeitbarer Text sind. - Dateidirektiven – Inline-XML-Kommentare wie
<!-- smartling.sltrans = notranslate -->oder<!-- smartling.placeholder_format_custom = \{.+?\} -->direkt unter der XML-Deklaration platziert – steuern, was übersetzt wird und wie Platzhalter erkannt werden, ohne den Anwendungscode zu ändern. - Repository-Automatisierung – Der Smartling GitHub Connector überwacht einen Branch und sendet geänderte .resx Dateien zur Übersetzung und überträgt übersetzte Satellitendateien zurück, sodass die darüber liegende Bearbeitungsebene zu einem Ausnahmepfad und nicht zum Hauptworkflow wird.
RESX-Handling in Smartling: Technische Spezifikationen
| Item | Detail |
|---|---|
| Unterstützte Erweiterungen | .resx und .resw (Smartling-Dateityp-Identifikator:) resx |
| Maximale Dateigröße pro Upload | 10MB |
| Direktivenübergabe | Inline-XML-Kommentar oder API-Parameter (smartling.[directive] = [value]) |
| Natives Platzhalter-Format | .NET-Zeichenfolgenformatierer: {0}, {1}; auch über placeholder_format = RESX in anderen Dateitypen auswählbar |
| Standard-Platzhalterformate verfügbar | 8 (NONE, C, IOS, PYTHON, JAVA, YAML, QT, RESX) plus custom Java regex |
| Übersetzer-Anweisungen | RESX- <comment> -Elemente automatisch erfasst |
| Standardmäßige Pseudo-Translationsinflation | 30 % länger als die Originalversion; konfigurierbar von 0–100 % über pseudo_inflation |
| Übersetztes Ausgabeformat | Dasselbe Format wie die Quelldatei (.resx in, .resx je nach Standort verfügbar) |
Wie konvertiere ich eine ResX-Datei in ein anderes Format?
Die Konvertierung einer ResX-Datei in ein anderes Format hängt davon ab, ob es sich bei dem Ziel um eine kompilierte .NET-Ressource, ein anderes Ressourcendateiformat oder eine übersetzungsfertige Datei handelt; für jeden Fall gibt es ein anderes Tool, und im Übersetzungsfall ist in der Regel überhaupt keine Konvertierung erforderlich.
- Zu einer kompilierten .resources-Datei verwenden Sie resgen.exe - den .NET Resource File Generator (
resgen.exe) wird mit dem .NET SDK ausgeliefert und wandelt .resx in binäre .resources um Dateien (und zurück) und zu einfachen .txt Name=Wert-Dateien. Das ist ein Build-Time-Schritt, kein Übersetzungsschritt. - Zu einem anderen XML- oder Key-Value-Format – verwenden Sie die ResX-Leser-/Schreibklassen –
System.Resources.ResXResourceReaderundResXResourceWriterenumerieren und schreiben Sie .resx Einträge programmatisch, sodass ein kurzes C#-Skript JSON, CSV oder .properties ausgeben kann aus einer .resx Und lies es nochmal vor. Das Hin- und Rücken durch CSV führt zu einem Spalten-Mapping-Risiko, das das native Format nicht hat. - In ein übersetzungsfertiges Format – nicht konvertieren; .resx-Datei direkt hochladen – Smartling analysiert .resx-Dateien. und .resw Die Datei wird nativ als RESX eingegeben und jede übersetzte Gebietsschema-Datei wird als RESX zurückgegeben. Eine vorherige Konvertierung in XLIFF ist nur dann erforderlich, wenn ein nachgelagertes CAT-Tool, das RESX nicht lesen kann, in den Verarbeitungsprozess eingebunden werden muss.
- Setze Direktiven vor dem ersten Upload – füge rund um Debug oder interne Strings hinzu
<!-- smartling.sltrans = notranslate -->und, falls das Projekt einen nicht standardisierten Platzhalter wie%name%verwendet, einplaceholder_format_customRegex, damit der Parser genau erfasst, was übersetzt werden soll. - Automatisiere die Roundtrip – verbinde das Repository über den Smartling GitHub Connector (oder GitLab über den Repository Connector) oder das Skript
pushundpullmit der Smartling-CLI, sodass übersetzteStrings.xx-XX.resxDateien ohne manuellen Export/Import im Branch landen.
Dieser Ansatz eignet sich für .NET-Teams, die...
- Senden Sie eine .NET-, ASP.NET-, WinForms-, WPF- oder UWP/WinUI-Anwendung mit .resx oder .resw Akten in mehr als zwei Kulturen.
- Speichern Sie Ressourcendateien in GitHub oder GitLab und möchten Sie, dass die Übersetzung durch einen Commit oder Pull Request ausgelöst wird, anstatt durch eine manuelle Übergabe.
- Ich schreibe bereits Nutzungshinweise in RESX
<comment>-Elementen und möchte, dass die Übersetzer diese auch tatsächlich sehen. - Verwenden Sie dieselben UI-Strings über Releases oder Produkte hinweg und benötigen Übersetzungsspeicher, sodass "Änderungen speichern" einmal und konsistent übersetzt wird.
- Ich bin auf einen Runtime-
FormatExceptionoder falschen Wertfehler gestoßen, der durch einen vermasselten{0}Platzhalter in einer übersetzten Datei verursacht wurde.
Wenn ein dedizierter ResX-Lokalisierungsworkflow möglicherweise nicht die richtige Priorität hat
- Eine Anwendung, die nur in einer einzigen Sprache entwickelt wurde und noch keine zweite Sprache ausgeliefert hat: Der Ressourcen-Editor von Visual Studio ist ausreichend, bis die Lokalisierung beginnt.
- Eine Handvoll Zeichenketten, die einmal von einem hauseigenen zweisprachigen Entwickler übersetzt wurden: Das nebeneinander angeordnete Raster des ResXResourceManager deckt dies ohne TMS ab.
- Ressourcen, die größtenteils Nicht-String-Assets sind (Icons, binäre Blobs) mit wenig übersetzbarem Text: Das Übersetzungstool verursacht Kosten, ohne viel Übersetzen zu müssen.
Bewertungscheckliste: Fragen, die man vor der Wahl eines ResX-Editors oder Lokalisierungstools stellen sollte.
Liest das Tool .resx und .resw Nativ, oder erfordert es vorher eine Umwandlung?
Native Parsing entfernt einen Konvertierungsschritt und die damit verbundenen Ausrichtungsfehler; Smartling akzeptiert beide Erweiterungen unter einem einzigen resx Dateityp.
Wie werden {0}Platzhalter im -Stil geschützt?
Suchen Sie nach einem Tool, das Tokens im zusammengesetzten Format als nicht editierbare Platzhalter sperrt und eine Übersetzung kennzeichnet, bei der ein Token fehlt, anstatt darauf zu vertrauen, dass der Übersetzer sie korrekt neu eingibt.
Erreichen RESX-Kommentare den Übersetzer?
Wenn das Tool das Element <comment> weglässt, geht der bereits geschriebene Kontext verloren; Smartling wandelt diese Kommentare automatisch in Übersetzeranweisungen um.
Kann man Zeichenketten ausschließen, ohne sie zu löschen?
Eine Direktive oder ein notranslate Äquivalent bewahrt Debug-Strings, Produktnamen und interne Labels in der Datei, aber außerhalb der Übersetzungswarteschlange.
Wie gelangen übersetzte Dateien zurück ins Repository?
Ein GitHub- oder GitLab-Connector oder eine CLI, die in CI laufen kann, entscheidet, ob die Lokalisierung ein Pipeline-Schritt oder eine vierteljährliche Aufgabe ist.
Kann man das Layout testen, bevor die Übersetzung abgeschlossen ist?
Eine Pseudo-Übersetzung, die die Zeichenkettenlänge aufbläht (bei Smartling sind es standardmäßig 30 %), führt zu Abschneidungen und Überläufen in WinForms- und WPF-Layouts, bevor ein echter Übersetzer zum Einsatz kommt.
Wie geht Smartling mit ResX- und .NET-Ressourcendateien um?
Smartling behandelt RESX als eigenständigen Ressourcendateityp und nicht als generisches XML: .resx und .resw Dateien bis zu 10 MB können über das Dashboard, die Files API, die Smartling CLI oder den GitHub Connector hochgeladen werden. Der Parser extrahiert den Wert jedes <data> -Elements als übersetzbare Zeichenkette, wobei der name als Schlüssel und der <comment> als Übersetzungsanweisung dient. Da der name mit jeder Zeichenkette übertragen wird, bleibt die gleiche Zeichenkette in Strings.de-DE.resx und Strings.ja-JP.resx ohne einen zusätzlichen Tabellenkalkulationsschritt an ihrer Quelle ausgerichtet.
Die Behandlung von Platzhaltern ist der wichtigste Aspekt für .NET: Das RESX-Platzhalterformat erkennt die Token {0} und {1} als gesperrte Platzhalter, und ein regulärer Ausdruck placeholder_format_custom deckt Projekte ab, die ihre eigenen Konventionen verwenden. Die fünf reservierten XML-Zeichen werden in den ausgelieferten Übersetzungen standardmäßig maskiert. Die Direktiven entity_escaping, entity_escaping_type und entity_escaping_strategy stehen zur Verfügung, wenn in einem Projekt HTML5-Entitäten erhalten oder die Quellcodemaskierung weitergegeben werden soll. Für die Qualitätssicherung vor der Übersetzung liefert pseudo_inflation pseudo-übersetzte .resx-Dateien. Dateien, deren Zeichenketten um einen konfigurierbaren Prozentsatz verlängert werden, damit Layoutfehler vor dem Übersetzungsaufwand sichtbar werden. Auf der Automatisierungsseite überwacht der GitHub Connector einen Branch, erstellt Übersetzungsaufträge aus geänderten Ressourcendateien und committet übersetzte Dateien zurück. Der Repository Connector erweitert dasselbe Muster auf GitLab und Beanstalk. Die übersetzte Datei kommt immer im gleichen Format zurück, in dem sie eingegeben wurde, sodass kein nachträglicher Konvertierungsschritt erforderlich ist.
Bereit, Smartling in Aktion zu sehen?
Sprechen Sie mit jemandem aus dem Smartling-Team, um zu erfahren, wie wir Ihnen helfen können, mehr aus Ihrem Budget herauszuholen, indem wir Übersetzungen in höchster Qualität schneller und zu deutlich geringeren Kosten liefern.