Translate .NET
RESX Files

Upload your .resx resource files, translate values while keeping the original comments, and export a file your .NET project can load directly.

No credit card required14-day free trialTracking-free service
Strings.pl.resx
<?xml version="1.0" encoding="utf-8"?> <root> <data name="WelcomeMessage" xml:space="preserve"> <value>Witamy w naszej aplikacji!</value> <comment>Shown on the home screen after sign-in.</comment> </data> <data name="SubmitButton" xml:space="preserve"> <value>Wyślij</value> <comment>Text on the submit button.</comment> </data> <data name="ExitConfirmation" xml:space="preserve"> <value>Czy na pewno chcesz wyjść?</value> <comment>Shown before closing an unsaved form.</comment> </data> <data name="FoundFilesPlural" xml:space="preserve"> <value>{0} plików znaleziono</value> <comment>Plural form, workaround via a separate key.</comment> </data> </root>
<?xml version="1.0" encoding="utf-8"?>
<root>
  <data name="WelcomeMessage" xml:space="preserve">
    <value>Witamy w naszej aplikacji!</value>
    <comment>Shown on the home screen after sign-in.</comment>
  </data>
  <data name="SubmitButton" xml:space="preserve">
    <value>Wyślij</value>
    <comment>Text on the submit button.</comment>
  </data>
  <data name="ExitConfirmation" xml:space="preserve">
    <value>Czy na pewno chcesz wyjść?</value>
    <comment>Shown before closing an unsaved form.</comment>
  </data>
  <data name="FoundFilesPlural" xml:space="preserve">
    <value>{0} plików znaleziono</value>
    <comment>Plural form, workaround via a separate key.</comment>
  </data>
</root>

Built for the .NET resource pipeline

A RESX file is XML, but the part that matters for translators is the <data> element: a name, a value, and an optional comment. One RESX file holds one language, so a neutral Strings.resx sits next to Strings.pl.resx, Strings.de.resx and so on.

The <comment> element already does the job most other formats need a separate metadata field for: it gives translators context right next to the value they are editing, with no extra setup on your side. RESX itself has no built-in plural syntax, so pluralized strings are typically split into separate keys, one per form.

Plural workaround
<data name="FoundFile" xml:space="preserve"> <value>1 file found</value> </data> <data name="FoundFiles" xml:space="preserve"> <value>{0} files found</value> </data>
<data name="FoundFile" xml:space="preserve">
  <value>1 file found</value>
</data>
<data name="FoundFiles" xml:space="preserve">
  <value>{0} files found</value>
</data>

Beyond name and value

What SimpleLocalize keeps from your RESX files

Comment as context

The comment element under each key becomes translator-facing context, automatically.

xml:space="preserve"

Leading and trailing whitespace in a value is respected, matching what the attribute signals.

Safe XML entities

Quotes, ampersands and angle brackets in a value are escaped correctly on export.

End-to-end workflow

Translate a RESX file end to end

Upload a neutral Strings.resx file, translate values while keeping the original comments, and export one file per culture, ready to drop into your .NET project.

Terminal
simplelocalize upload \ --apiKey PROJECT_API_KEY \ --uploadFormat resx \ --uploadLanguageKey en \ --uploadPath ./Strings.resx
simplelocalize upload \
  --apiKey PROJECT_API_KEY \
  --uploadFormat resx \
  --uploadLanguageKey en \
  --uploadPath ./Strings.resx

Upload your neutral resource file

1
Push Strings.resx to SimpleLocalize with the CLI. Every <comment> comes along automatically as context for the corresponding key.
Translation editor
Key: WelcomeMessage Source: Witamy w naszej aplikacji! Context: Shown on the home screen after sign-in.
Key: WelcomeMessage
Source: Witamy w naszej aplikacji!
Context: Shown on the home screen after sign-in.

Translators see the comment as context

2
No separate spreadsheet or Slack thread needed: the note a developer left in the .resx file shows up right next to the value in the editor.
Strings.de.resx (auto-translated)
<data name="SubmitButton" xml:space="preserve"> <value>Senden</value> </data>
<data name="SubmitButton" xml:space="preserve">
  <value>Senden</value>
</data>

Auto-translate the rest

3
Run DeepL, Google Translate, OpenAI, Claude or Gemini across every target culture, then review in the editor before anything is marked ready.
Terminal
simplelocalize download \ --apiKey PROJECT_API_KEY \ --downloadFormat resx \ --downloadPath ./Strings.{lang}.resx
simplelocalize download \
  --apiKey PROJECT_API_KEY \
  --downloadFormat resx \
  --downloadPath ./Strings.{lang}.resx

Download one file per culture

4
Export lands as Strings.pl.resx, Strings.de.resx and so on, ready to sit next to your neutral resource file with no renaming step.

For developers

A localization platform,
not just a resource file mapper

No mapping step between your resource files and the editor: upload a RESX file and translators already have what they need.

Comments imported as context

The comment field in each data node is imported as context for the corresponding key, with no configuration needed.

Safe with XML entities

Values containing quotes, ampersands or angle brackets are escaped correctly on export, so the resource file stays valid XML.

AI auto-translation

Translate new and changed values with DeepL, Google Translate, OpenAI, Claude or Gemini, with the original comment available as context.

CLI and REST API

Upload and download RESX files from the CLI, or automate the same import and export logic through the REST API.

SimpleLocalize connects your code to professional translations

More conversions

Convert RESX to other formats

Free online converter, no account required. Upload a .resx file and download it in the format you need.

Start translating RESX files

  • Comments carried over as translator context
  • One file per culture, ready to drop into your project
  • Safe handling of XML-reserved characters
Start for free
No credit card required5-minute setup
"The product
and support
are fantastic."
Laars Buur|CTO
"The support is
blazing fast,
thank you Jakub!"
Stefan|Developer
"Interface that
makes any dev
feel at home!"
Dario De Cianni|CTO
"Excellent app,
saves my time
and money"
Dmitry Melnik|Developer

Frequently asked questions about RESX files

What happens to the <comment> field?

It is imported as context for the corresponding key and shown to translators in the editor. It is preserved on export.

Does RESX support pluralization?

Not natively. RESX has no built-in plural syntax, so the common approach is separate keys per plural form, the same pattern you would already use in your .NET code.

Which .NET frameworks use RESX?

ASP.NET Core, Blazor, MAUI and WPF all use RESX as their standard localization resource format.