Translate a .NET app into German
Upload your .resx files and Manuce translates the values into German, returning the same file for you to save as <code>Resources.de.resx</code> in your project. Keys, placeholders such as <code>{0}</code> and non-text resources are left untouched. A report lists anything kept as it was, and why.
What it costs
For the language files of a .NET app totalling about 2,000 words, into German:
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 German does to a .NET interface
German text typically runs 20 to 35 % longer than English, and short labels suffer most. German builds compound nouns where English uses several words: Account settings becomes Kontoeinstellungen, Password reset becomes Kennwortzurücksetzung. A button sized for Submit may need to fit Übermitteln, and a column header can easily double in width.
- WinForms: fixed-size controls clip text silently. Turn on
AutoSizeor leave generous padding. - WPF and MAUI: auto-width grid columns cope better;
TextWrappingorTextTrimmingprevents overflow in narrow cells. - Capitalisation: every noun takes a capital letter (Datei speichern, Save file). Calling
ToLower()on a label in code breaks this rule and produces a visible spelling error.
Register matters too. Business software addresses the user formally with Sie: Möchten Sie die Änderungen speichern? A consumer app may opt for du, but the choice must stay consistent across every screen.
Placeholders, word order and plurals
German often pushes the verb to the end of the clause. Delete {0}? becomes {0} löschen? or Möchten Sie {0} wirklich löschen?, so the placeholder moves. If your code builds sentences by concatenation ("Delete " + name + "?"), no translation can ever read correctly. Keep the whole sentence in one .resx value and use string.Format with numbered placeholders the translation can reposition.
German has two plural categories, one and other, like English, and zero falls under other: 0 Dateien, 1 Datei, 2 Dateien. The .resx format has no plural mechanism, so provide two keys, for example FileCount_One and FileCount_Other, and pick the right one in code.
Numbers and dates should not live in the .resx. German writes 1.234,56 and 31.12.2025: let CultureInfo("de-DE") format them. A date pattern hard-coded in a value, such as MM/dd/yyyy, is not translated and will stay in US order; use standard formats like d instead. German quotation marks are written „…“, so check they do not break any escaped string in your code.
Exactly what Manuce returns
In a .resx file, Manuce translates the content of the data/value elements. Comments are read as context, so notes such as 'button, 15 characters max' or 'formal Sie' are taken into account. Non-text resources (images, icons, size and position properties of a localisable WinForms form) are left intact.
The file you get back is the same file: indentation, key order, quotation marks, 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 you have marked as non-translatable.
Each translated value is checked against the source: if {0}, {1:N2} or a tag is missing or altered and the mismatch persists, the source value is kept and the report flags it. You know exactly which strings still need manual attention.
What Manuce does not do: it does not build your project or test the layout, so it cannot spot a clipped button. Strings hard-coded in C# or XAML are not in the .resx and will not be translated. And if the app ships terms and conditions (AGB) or a privacy notice (Datenschutzerklärung), note that Manuce does not produce sworn or certified translations.
Preparing the files and checking the result
Before uploading:
- Move every visible string out of code and XAML into .resx files; that is the only content translated.
- Comment ambiguous strings. Open can be Öffnen (verb, button) or Offen (status of a ticket); without context, the engine has to guess.
- State the length limit of tight labels and the register you want (Sie or du).
- Mark product and module names as non-translatable.
After delivery:
- Save the file as
Resources.de.resxnext to the neutral file. The build produces the satellite assemblyde\YourApp.resources.dll. - Run the app with
CultureInfo.CurrentUICulture = new CultureInfo("de-DE")and walk through every screen looking for clipped text. - Check WinForms access keys:
&Filebecomes&Datei, and two commands in the same menu should not share a letter. - Read the report and deal with any strings kept in the source language.
In practice
- Gather your neutral .resx files and comment ambiguous or length-limited strings.
- Upload them: the quote appears at once, based on the words in the values, and a free extract lets you judge the register.
- Download the translated file and the report, then save it as Resources.de.resx.
- Build, run the app under the de-DE culture and fix clipped labels and flagged strings.
Frequently asked questions
Should the file be named .de or .de-DE?
<code>Resources.de.resx</code> serves every German culture (Germany, Austria, Switzerland) through .NET's resource fallback. For Switzerland, where 'ss' replaces 'ß', a <code>Resources.de-CH.resx</code> file can hold just the few strings that differ.
Are my {0} placeholders and tags protected?
Yes. Each translated value is compared with the source for placeholders and tags. Their position may change, which is normal in German, but they must all be present. If a mismatch persists, the source value is kept and the report says so.
Will localisable WinForms forms be resized?
No. Non-text properties such as control size and position are left intact; only text values are translated. Widening controls that are too narrow for German is up to you, which is why testing every screen matters.
Which words are counted?
Only the words in the values are counted; keys and tags are excluded. The quote appears as soon as you upload the file, based on the exact word count.
How do I make sure the formal Sie is used?
Say so in the .resx comments, which are used as context for the translation. The free extract, translated at your chosen level before you pay, lets you check the register on a real passage from your file.
The specialist in charge
This subject goes to Dédale, the technical specialist. See how it works.
The same file, into another language
Into German, 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.