Translate a .NET Application into English (.resx Files)
Translating a .NET application into English means translating the values in its .resx files while leaving keys and placeholders such as {0} alone. Manuce returns the same .resx file with English values and an identical structure, plus a report listing translated strings and those left as they were. Choosing British or American English, handling plural logic and naming the file by culture remain your decisions.
What it costs
For the language files of a .NET app totalling about 2,000 words, into English:
To understand, internal use.
Ready to send, by the technical specialist.
Cross-checked. For documents that commit you.
Price for one language, original layout included. VAT not applicable — article 293 B of the French General Tax Code (CGI). The exact quote, based on your file's word count, is shown before you pay.
What an English .resx means for your project
In a .NET project, each interface string is a <data name="BtnSave"> entry holding a <value> and often a <comment>. The English version is a separate file sitting next to the neutral one: Strings.resx in your source language, then Strings.en.resx, or Strings.en-GB.resx and Strings.en-US.resx if you target both variants.
At runtime, .NET looks for the exact culture (en-GB), then the parent culture (en), then falls back to the neutral file. So a key missing or left untranslated in the English file quietly shows up in the source language, with no error. That is the first thing to look for once the file is back in the project.
English is usually more compact than Romance and Germanic source languages; from French it typically runs 10 to 15% shorter (« Enregistrer les modifications » becomes Save changes). Buttons and grid columns gain room. In WinForms forms, whose .resx also stores control sizes and positions, check controls where automatic sizing is turned off.
English-specific points in a .NET interface
- Variant. Decide up front: colour or color, organise or organize, cancelled or canceled. Mixing them in one interface is noticeable. If you serve both audiences, keep separate
en-GBanden-USfiles. - Plurals. English has two categories, one and other, and zero takes the plural: 0 files. Several source languages, French among them, treat zero as singular. If your code picks the key with
count <= 1 ? FileCount_One : FileCount_Other, English will show 0 file. Usecount == 1for English. The .resx format has no plural mechanism: it is two keys and a decision in code. - Punctuation. No space before colons or question marks: a French
Nom :becomesName:. Angle quotes and inverted Spanish marks give way to English quotation marks. - Capitalisation. Buttons and headings use either sentence case (Save changes), common in British interfaces, or title case (Save Changes), frequent in American ones. Pick one rule and keep to it.
- Dates. British English reads 03/04/2025 as 3 April, American English as 4 March. A pattern like
dd/MM/yyyyhard-coded in a value is not translated; prefer standardCultureInfoformats such as{0:d}.
What Manuce returns, and what it does not do
You upload your .resx file and get back the same file, in the same format, ready to drop into the project:
data/valueelements are translated;<comment>elements are used as context and left unchanged;- non-text resources (images, icons, control sizes and positions) stay intact;
- indentation, key order, quotes, comments, line endings, encoding and BOM are preserved; only the values change;
- not translated: keys, empty values, URLs, email addresses, numbers, colours, date formats, identifiers and anything marked as non-translatable.
Every translated value is checked against its source: {0}, {1:N2} or a <b> tag must all be present. If a mismatch persists, the source value is kept and the report says so, so you know exactly which string will stay in the source language in your English build, and why.
Manuce does not change your code: it does not fix plural logic, regenerate .Designer.cs, or extract strings hard-coded in C# or XAML. Nor does it rename the file; saving it as Strings.en.resx or Strings.en-GB.resx is up to you. Pricing is based on the words in the values, with keys and tags excluded.
Preparing the .resx before upload
- Resolve ambiguity with comments. A source verb meaning validate can become Validate, Confirm or Submit; an adjective meaning open can be Open (state) or Opened (past action). A comment such as Form submit button, 12 characters max steers the translation.
- Remove concatenation. A sentence built as
"Deleted by " + user + " on " + datein code cannot be translated cleanly, because word order and prepositions differ. Store it as one value with placeholders, for exampleDeleted by {0} on {1}. - Split singular and plural. Create
FileCount_OneandFileCount_Otherrather than a file(s) style value, which reads awkwardly in English. - Flag what must not change. Product names, codes or technical labels to keep verbatim: mark them non-translatable.
- Check placeholders. An unclosed
{0in the source will fail the comparison; fix it before uploading.
Checking after you add the file back
- Read the report: every string left in the source language is listed with its reason.
- Save the file under the chosen culture name and build: an
enoren-GBfolder with the satellite assembly should appear in the output. - Force the culture to test, for instance
CultureInfo.CurrentUICulture = new CultureInfo("en-GB"), and go through each screen: any remaining source-language text points to a missing key or a kept value. - Test counters at 0, 1 and 2, messages built with
{0}, and labels followed by a colon. - Check the variant: a stray color in an
en-GBinterface is a one-line fix.
For an interface shipped to customers, the Professional or Premium level fits; Essential is enough for an internal test build.
In practice
- Choose your English culture (en, en-GB or en-US) and add comments to ambiguous strings.
- Upload the neutral .resx file: the quote appears at once, based on the words in the values.
- Review the free extract at your chosen level, then start the translation.
- Rename the returned file for the culture, add it to the project and build.
- Read the report and test the app with the English culture forced.
Frequently asked questions
Should I name the file Strings.en.resx or Strings.en-GB.resx?
With <code>en</code>, one file serves every English-speaking user. With <code>en-GB</code> and <code>en-US</code>, you match spelling and date formats to each audience, and .NET falls back to <code>en</code>, then the neutral file, if a key is missing. Manuce returns the file in its original form; naming it is your call.
Are placeholders like {0} and {1:C} preserved?
Yes. Every translated value is compared with the source for variables and tags. If a mismatch persists, the source value is kept and the report flags it. Keys are never translated.
What happens to WinForms .resx files with images and control sizes?
Only text values are translated. Non-text resources such as images and control dimensions stay intact, as do key order and encoding. Check fixed-width controls afterwards.
How do I avoid '0 file' in English?
Keep two keys, one singular and one plural, and select them in code with <code>count == 1</code> for English. Manuce translates both values but does not modify your code.
How is the price calculated?
On the exact number of words in the values, with keys and tags excluded. The quote appears as soon as you upload the file, and a free extract lets you judge the translation before paying.
The specialist in charge
This subject goes to Dédale, the technical specialist. See how it works.
The same file, into another language
Into English, other files
See also
Try it on your own file, free
A sample of your file translated at the level you choose, before any payment. You judge, then you decide.