Skip to content

RESX (.resx) .NET Resource Files

Format, editor, and workflow for the standard .NET translation file.

RESX (.resx) is the XML-based resource file format used by .NET applications for localizable strings and other resources. Each language has its own .resx file alongside a default — Resources.resx for the default, Resources.de.resx for German, Resources.fr-CA.resx for Canadian French. At build time, Visual Studio compiles them into satellite assemblies — language-specific DLLs — that the .NET runtime loads based on the active CultureInfo. RESX is the de-facto translation format across the .NET ecosystem: ASP.NET, WPF, Windows Forms, Xamarin, and .NET MAUI all use it.

Key facts
  • What it is: XML-based .NET resource file
  • File extension: .resx (and .resw for UWP)
  • Standard body: Microsoft
  • Encoding: UTF-8 (declared in XML header)
  • Locale naming: Resources.<culture>.resx
  • Build output: satellite assemblies (per-locale DLLs)
  • Used by: ASP.NET, WPF, Windows Forms, Xamarin, .NET MAUI, UWP

What a .resx file looks like

A .resx file declares resources inside a <root> element. Each entry has a name (the key used in code), a <value>, and an optional <comment>:

<?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>
  <data name="WelcomeMessage" xml:space="preserve">
    <value>Willkommen, {0}!</value>
    <comment>Greeting on the home page</comment>
  </data>
  <data name="LoginButton" xml:space="preserve">
    <value>Anmelden</value>
  </data>
  <data name="ErrorNotFound" xml:space="preserve">
    <value>Seite nicht gefunden</value>
  </data>
</root>

Editing .resx files

  • Visual Studio resource editor: built-in, table-style editor that hides the XML. Handles per-language .resx and generates the strongly-typed accessor class automatically.
  • ResX Resource Editor (free, third-party): cross-platform alternative with side-by-side language comparison.
  • Cloud TMS platforms: Locize, Phrase, Crowdin, Lokalise import .resx natively; translators work in a CAT UI.
  • Text editors: fine for spot fixes; the XML structure is straightforward but verbose.

Common .resx workflows

  • Adding a language. Right-click Resources.resx → Add Resource. Or copy the file to Resources.<culture>.resx, translate values. .NET picks it up at runtime based on CultureInfo.CurrentUICulture.
  • Translator handoff. Export Resources.resx to a TMS, translate, import per-culture files back into the project. Visual Studio rebuilds the satellite assemblies on next build.
  • ASP.NET globalization. Use RequestLocalization middleware to pick culture from URL / cookie / Accept-Language. The matching .resx loads automatically.
  • Xamarin / .NET MAUI. Same .resx pattern; the framework handles culture-aware resource loading on each platform.

How to translate .resx files in Locize

Locize imports and exports .resx files:

  1. Get started
  2. Import your .resx file
  3. Edit translations in the CAT view with translation memory, glossary, and style guide applied automatically
  4. Use bulk actions for AI / machine translation, then route results through a review workflow
  5. Export back to .resx per culture — or convert to JSON, XLIFF, or any other supported format

Frequently asked questions

What is a .resx file?

.resx is the XML-based resource file format used by .NET applications for localizable strings, images, and other resources. Each language has its own .resx file (e.g. `Resources.resx` for the default, `Resources.de.resx` for German, `Resources.fr-CA.resx` for Canadian French). At build time, Visual Studio compiles them into satellite assemblies — language-specific DLLs — that the .NET runtime loads based on the active culture.

How do I translate .resx files?

For solo work, Visual Studio's built-in resource editor handles per-language .resx editing. For team workflows use a TMS — Locize, Phrase, Crowdin, Lokalise all import and export .resx natively. Translators work in a CAT UI; the export round-trips back to per-locale .resx files.

What is the difference between .resx and .resw?

.resx is the standard .NET resource format used everywhere. .resw is the same XML format but with a different extension, used by UWP / Windows Store apps. Both store the same content and most tools handle them interchangeably.

How do .resx files handle plurals?

Not natively. .NET applications typically handle plurals in code (using `string.Format` or `MessageFormat` libraries) or use ICU MessageFormat patterns stored as plain strings inside .resx values. Modern .NET apps often pair .resx with a plural-aware library; Locize preserves whichever convention your strings use.

Where do .resx files live in a .NET project?

Typically in a `Resources/` or `Properties/` folder. The default file is `Resources.resx`; localized versions sit beside it as `Resources.<culture>.resx`. Visual Studio adds them to the project, marks them as "Embedded Resource", and generates a strongly-typed accessor class so you reference strings as `Resources.WelcomeMessage` in code.

Which .NET technologies use .resx?

ASP.NET (Web Forms and MVC), Windows Forms, WPF, Xamarin (Forms and native), .NET MAUI, UWP (as .resw), and most legacy .NET Framework desktop apps. It is the de-facto translation format across the .NET ecosystem.

Translate .resx without the satellite-assembly fuss.
Import, edit with translation memory, glossary and AI, review, and export — all in one place.