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.
- What it is: XML-based .NET resource file
- File extension:
.resx(and.reswfor 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 toResources.<culture>.resx, translate values. .NET picks it up at runtime based onCultureInfo.CurrentUICulture. - Translator handoff. Export
Resources.resxto a TMS, translate, import per-culture files back into the project. Visual Studio rebuilds the satellite assemblies on next build. - ASP.NET globalization. Use
RequestLocalizationmiddleware 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:
- Get started
- Import your
.resxfile - Edit translations in the CAT view with translation memory, glossary, and style guide applied automatically
- Use bulk actions for AI / machine translation, then route results through a review workflow
- Export back to
.resxper culture — or convert to JSON, XLIFF, or any other supported format
Frequently asked questions
.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.
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.
.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.
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.
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.
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.