ManuceTranslate a fileTranslate a Java (Spring) app into Spanish

Translate a Java (Spring) app into Spanish

Upload your messages.properties and Manuce returns the same file, ready to save as messages_es.properties, with only the values in Spanish. Keys, {0} placeholders, MessageFormat apostrophes and encoding stay exactly as Spring expects them, and a report lists every string left untouched and why.

Upload my file See pricing

What it costs

For the language files of a Java (Spring) 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 Spanish changes in a Spring UI

Spanish uses the Latin alphabet and runs left to right, so nothing breaks structurally. The problems show up on screen.

  • Inverted punctuation. Questions open with ¿ and exclamations with ¡, so the whole sentence must live in one value: confirm.delete=¿Desea eliminar {0}?. If a Thymeleaf template appends the question mark itself, the opening sign will be missing or doubled.
  • Length. Spanish runs longer than English and close to French. From an English source, “Sign in” becomes Iniciar sesión and “Delete account” Eliminar cuenta: check navigation bars, buttons and narrow table headers.
  • Grammatical gender. A shared message such as {0} deleted needs eliminado or eliminada depending on the noun. Separate keys (file.deleted, invoice.deleted) avoid awkward fixes.
  • Form of address. Decide between tú and usted up front, and for Spain between vosotros and ustedes: ¿Tenéis cuenta? sounds foreign in Mexico.
  • Regional vocabulary. ordenador in Spain, computadora in Latin America; likewise móvil and celular.

Plurals, dates, numbers and locale resolution

Some of the localisation work sits in your Java code rather than in the translation.

  • Plurals. Spanish has three CLDR categories: one, many and other. Zero falls under other (0 archivos), and many covers large round numbers that take “de”: 1 millón de usuarios. MessageFormat’s choice does not know these categories; {0,choice,0#ningún archivo|1#un archivo|1<{0} archivos} covers most screens, but review each branch.
  • Dates and numbers. Keep them out of the message text and format them with DateTimeFormatter or NumberFormat and the request Locale. Spain writes 1.234,56, Mexico 1,234.56. Date formats found in a file are not translated by Manuce.
  • File naming. messages_es.properties serves all Spanish locales; messages_es_ES.properties or messages_es_MX.properties add country variants that fall back to messages_es.
  • Spring fallback. In Spring Boot, spring.messages.fallback-to-system-locale defaults to true, so a key missing from the Spanish file may appear in the server’s language rather than from messages.properties. Worth checking if an English or French string turns up on a Spanish page.

What Manuce returns, and what it does not do

You get the same file in the same format: indentation, key order, comments, line endings, encoding and BOM preserved. Only the values change.

  • Unicode escapes. If your source writes accented characters as \u00E9, the Spanish file keeps that convention: ñ comes out as \u00F1 and ¿ as \u00BF. A plain UTF-8 file stays plain UTF-8.
  • Continuation lines. Values split with a trailing \ are handled as a single string.
  • MessageFormat apostrophes. In a message with arguments, a single quote must be doubled. English contractions such as “don’t” usually vanish in Spanish (no), but any apostrophe the translation introduces is handled.
  • Validation. Each translated value is checked against the source for placeholders ({0}, {min}) and tags such as <b>. If a mismatch persists, the source value is kept and the report says so.
  • Left as is. Keys, empty values, URLs, email addresses, numbers, colours, date formats, identifiers and anything marked as non-translatable.

Manuce does not touch your Java code or templates, and does not produce an es_MX variant alongside an es_ES one by itself: for two markets, duplicate the file and adjust the vocabulary. It does not provide certified (sworn) translation either.

Preparing the file and checking the result

Before uploading:

  • Start from your most complete base file, usually messages.properties under src/main/resources. If you use Bean Validation, send ValidationMessages.properties too; its {min} and {max} are checked like any other placeholder.
  • Add comments above ambiguous keys, for example # button, max 12 chars or # feminine noun: factura. Comments are kept in the output.
  • Note the form of address (tú or usted) and the target market.

After delivery:

  1. Read the report: a value left in the source language often points to a placeholder problem in the original.
  2. Save the file under the right locale name and run the app with Accept-Language: es or es-ES.
  3. Look at screens containing ¿, ñ and accents; garbled characters mean the declared encoding (spring.messages.encoding) does not match the file.
  4. Test plurals with 0, 1 and a large number.

Spanish is charged at the base rate (×1), counting only the words in the values.

In practice

  1. Take messages.properties (and ValidationMessages.properties if used) from src/main/resources.
  2. Comment ambiguous keys and note the form of address and target country.
  3. Upload the file, pick a level and read the free sample.
  4. Save the returned file as messages_es.properties (or es_ES, es_MX) next to the original.
  5. Read the report, then test the app with Accept-Language: es.

Frequently asked questions

Should I target Spain or Latin America?

Ideally decide before translating, since vocabulary (ordenador or computadora) and the plural ‘you’ (vosotros or ustedes) differ. For a mixed audience, neutral Spanish using usted in messages_es.properties usually works. For two distinct markets, duplicate the file as es_ES and es_MX and adjust the terms that change.

Will ñ, á and ¿ display correctly?

The returned file keeps your source encoding and BOM, and your \uXXXX escapes if you use them. If characters still appear garbled, the cause is almost always configuration: make sure spring.messages.encoding matches the file’s actual encoding.

What happens if a {0} placeholder gets lost?

Every translated value is compared with the source, placeholders and tags included. If the mismatch persists, the source value is kept so the app does not break, and the report names the key. You can then fix that one string by hand.

How is a .properties file priced?

Only the words in the values are counted; keys and tags are excluded. Spanish is at the base rate (×1), and the quote appears as soon as you upload. Adding further languages to the same order triggers a discount from two languages upwards.

Will my terms of use have legal standing in Spanish?

Manuce does not produce certified or sworn translations. For legal text intended for official use, have it reviewed or certified by an accredited translator. The Premium level, with cross-review, is a sound basis for that first version.

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