.NET Resources · Translators
Translate .resx files without handing out .resx files.
Translators should not edit XML, and a spreadsheet you convert with a script loses keys, comments, and the strings that changed since last time. Lingobit Localizer reads your .resx files, gives translators a task in the format they work in, takes the work back by resource key, and writes Strings.de.resx next to the source.
- Input
.resx,.reswfrom your source- For translators
- Translator Edition, XLIFF 1.2, or CSV
- Matched by
- Resource key
- Output
Strings.de.resxnext to the source
Why a .resx file is a poor thing to send a translator.
A .resx file is a build input, not a translation document. What goes wrong when it travels:
- XML breaks. An unescaped
&or<, or a deleted tag, and the build fails, often after the file is back in the project. - Forms carry more than text. The
.resxof a localizable form also holds sizes, positions, and images that a translator should not touch. - Placeholders get lost.
{0}translated or removed shows up only when the message appears at runtime. - Every release starts over. Nobody can see which of the 2,000 strings are new or changed since the last delivery.
Pick the format your translators work in.
Prepare Translation Task writes the task; Import Translation Results reads it back. Every edition sends and receives all three.
| Format | For | What travels |
|---|---|---|
Translator project (.ltp) or Delivery Bundle | Translators in Translator Edition, which is included with every Localizer license | The strings with their statuses, forms in the Safe editor, validation; the bundle adds the setup and your instructions |
| XLIFF 1.2 | Agencies and translators with a CAT tool | The strings with states that become statuses on import. XLIFF details |
| CSV | A spreadsheet or a text editor | One file per language; statuses are not kept |
Step by step.
- Add the .resx files to a Lingobit project and choose the languages. The neutral files stay as they are.
- Bring in what is translated with Import Translations from Localized Files: it reads your existing
Strings.de.resxand the other languages. - Optionally pre-translate with DeepL, Google Translate, or Azure Translator on your own account (Professional and higher). These translations get the Auto status, so they go to review.
- Prepare Translation Task in the format from the table. The Translation Task filter takes only strings that are not Complete or Locked, plus what Scan for Changes marked new or changed.
- Import Translation Results when the work comes back. Strings are matched by key; Output lists what changed.
- Validate and create Validation reports placeholders such as
{0}that do not match the source; Create Localized Files writesStrings.de.resxnext to each source file. - Build as before Your build compiles the translated files into satellite assemblies. Next release: Scan for Changes, and a new task with only the new and changed strings.
Lingobit names the file after the project language: German writes Strings.de.resx, German (Germany) writes Strings.de-DE.resx. The same works for .resx files of ASP.NET Core and Blazor and for .resw files; see the .NET Resources guide.
Translations already in a spreadsheet?
Many teams keep a sheet with English in one column and each language in the next. You do not need a conversion script.
A sheet of source and translation pairs
Save it as CSV and import it into translation memory. Import Matching Translations then fills each string whose source text matches an entry; strings with other text stay for the translator.
A CSV task that comes back
A CSV file you sent with Prepare Translation Task goes back in with Import Translation Results, into the current target language. Advanced sets the encoding, the delimiters, and which column is the ID, the original text, and the translation.
Questions about translating .resx files
Can translators edit .resx files in Excel?
Excel can open the XML, but saving it back as a valid .resx with every key, comment, and form property intact is fragile. Send them a CSV task instead: it opens in a spreadsheet, and Import Translation Results puts the translations back by key.
Does Lingobit change Strings.resx or Designer.cs?
No. It reads the neutral .resx files and writes translated copies such as Strings.de.resx next to them. The generated Strings class reads the translated resources when the UI culture matches.
Can I translate .resx files automatically?
Yes, with DeepL, Google Translate, or Azure Translator and your own account, in Professional and higher. Text goes to the provider only when you use machine translation. The results get the Auto status, and the Needs Review filter gives them to a reviewer.
Do translators see the forms?
In Translator Edition, a localizable form in a .resx opens in the Safe editor, so the translator sees where the text goes. With XLIFF or CSV they see the strings only.
Should I translate the .resx files or the compiled build?
Related paths
- .NET Resources — How Lingobit reads and writes .resx, .resw, and .resources files.
- XLIFF and TMX — XLIFF 1.2 tasks for CAT tools, with statuses; TMX for translation memory.
- Translation workflow — Translators, reviewers, and agencies in one project.
- .NET satellite assemblies — What your build makes from the translated files.