ManuceTranslate a fileTranslate a .NET app into Spanish: localising your .resx files

Translate a .NET app into Spanish: localising your .resx files

Upload your .NET resource files and Manuce translates the values of each <data> element into Spanish, returning the same .resx with keys, comments, encoding and non-text resources untouched. A report lists every string left as it was and why. You then name the file for the right culture and check the UI.

Upload my file See pricing

What it costs

For the language files of a .NET app totalling about 2,000 words, into Spanish:

Essentiel
€12

To understand, internal use.

Professional
€36

Ready to send, by the technical specialist.

Premium
€70

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 changes when a .NET interface moves to Spanish

Spanish runs longer than English. In a WinForms or WPF app with fixed-width labels, Settings becomes Configuración and Sign in becomes Iniciar sesión, so buttons and grid columns sized for English will clip or overflow.

Three Spanish-specific decisions to make before translating:

  • Opening punctuation. Questions and exclamations open with ¿ or ¡: Delete this file? becomes ¿Eliminar este archivo?. If your code appends the question mark itself, the opening mark has nowhere to go.
  • Register. Introduce tu contraseña (informal tú, common in consumer apps in Spain) or Introduzca su contraseña (formal usted, usual in business software and much of Latin America). Mixing them across screens is immediately noticeable.
  • Variant. ordenador or computadora, fichero or archivo, móvil or celular: decide whether you are targeting Spain, Mexico or a neutral Spanish.

Numbers and dates belong to the .NET culture, not to the translation: under es-ES, {0:N2} renders 1.234,56; under es-MX, 1,234.56. Never hard-code a format inside a resource value.

Composite strings, plurals and grammatical gender

String.Format placeholders are positional, so Spanish can reorder the sentence: {0} of {1} items selected becomes {0} de {1} elementos seleccionados, and {1:d} keeps its format specifier. Every {n} in the source must appear in the translation, no more and no fewer.

.resx has no plural mechanism, so most projects use one key per form, such as FilesCount_One and FilesCount_Other. CLDR gives Spanish three categories: one, many and other. One covers 1 (1 archivo), other covers 0 and everything else (0 archivos, 3 archivos), and many applies to round millions, which take de: 1 millón de archivos. If your counters can reach that range, a simple one-or-other switch is not enough.

Gender is the commonest trap in .NET code that assembles labels. New {0} gives Nueva carpeta but Nuevo documento; {0} saved gives Carpeta guardada but Documento guardado. One value cannot serve both, so create a key per object (NewFolder, NewDocument) rather than a shared template.

What Manuce returns, and what it does not do

In a .resx file, Manuce translates the values of <data> elements and reads <comment> entries as context. You get the same file back: indentation, key order, quotes, comments, line endings, encoding and BOM preserved; only the values change. Accented letters and ñ are written in the file's original encoding.

Left untranslated: keys, empty values, URLs, email addresses, numbers, colours, date formats such as dd/MM/yyyy, identifiers and anything marked as non-translatable. Non-text resources stay intact, including the size and location entries stored in a WinForms form's .resx.

Each translated value is checked against the source. If a {0} or a tag goes missing or appears from nowhere and the mismatch persists, the source value is kept and the report says so, so you know exactly which strings are still in the original language.

What Manuce does not do: resize controls, rename the file, build satellite assemblies or change your code (concatenation, plural logic). Nor does it produce sworn or certified translations; if your app ships a licence agreement or terms with legal weight, have those reviewed separately.

Preparing your .resx files and checking the result

Before uploading:

  • Replace concatenation such as "Delete " + name + "?" with a full value and a placeholder: Delete {0}?, which can become ¿Eliminar {0}?.
  • Comment ambiguous entries: is Open a button verb (Abrir) or a status (Abierto, Abierta)? Note the register and variant you want there as well.
  • Mark product names and internal codes as non-translatable.

After delivery:

  1. Save the file under its culture name: Strings.es.resx for shared Spanish, or Strings.es-ES.resx / Strings.es-MX.resx for a variant. .NET falls back from es-MX to es, then to the neutral resources.
  2. Read the report and deal with any strings kept in the source language.
  3. Run the app with CurrentUICulture set to es-ES and walk through each screen: clipped labels, missing ¿, inconsistent register.
  4. Check menu access keys: &Archivo and &Ayuda share a letter, which is why Ay&uda is common.

In practice

  1. Replace concatenated strings with full values using {0} and comment any ambiguous entries.
  2. Upload your .resx files: the quote reflects the exact word count of the values, and a free sample shows the quality.
  3. Download the translated .resx and the report of strings left unchanged.
  4. Name it Strings.es.resx (or es-ES, es-MX), rebuild and test the UI under a Spanish culture.

Frequently asked questions

Should I target Spain or Latin American Spanish?

It depends on your users. A Strings.es.resx file acts as a shared base that .NET uses for both es-ES and es-MX when no more specific file exists. If you need both variants, keep two separate files and state the intended variant in the comments.

Can WinForms form .resx files be translated?

Yes: text values are translated, while non-text resources such as control sizes and positions stay intact. Because Spanish runs longer than English, check fixed-width labels afterwards; Manuce does not resize controls.

What happens if a {0} placeholder is lost in translation?

Every translated value is compared with the source. If a placeholder or tag mismatch persists, the source value is kept and flagged in the report, so you can handle that string yourself.

Are keys and comments included in the word count?

No. Pricing is based on the words in the values; keys and tags are excluded. Comments are used as translation context and returned unchanged.

How do I handle Spanish plurals in .resx?

.resx has no built-in plurals, so your code needs one key per form. Spanish uses the CLDR categories one, many and other, with many covering round millions ("1 millón de archivos"). Manuce translates every key you supply but does not change your selection logic.

The specialist in charge

This subject goes to Dédale, the technical specialist. See how it works.

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.

Upload my file