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.
What it costs
For the language files of a Java (Spring) app totalling about 2,000 words, into Spanish:
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 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ónand “Delete account”Eliminar cuenta: check navigation bars, buttons and narrow table headers. - Grammatical gender. A shared message such as
{0} deletedneedseliminadooreliminadadepending 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’schoicedoes 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
DateTimeFormatterorNumberFormatand the requestLocale. Spain writes1.234,56, Mexico1,234.56. Date formats found in a file are not translated by Manuce. - File naming.
messages_es.propertiesserves all Spanish locales;messages_es_ES.propertiesormessages_es_MX.propertiesadd country variants that fall back tomessages_es. - Spring fallback. In Spring Boot,
spring.messages.fallback-to-system-localedefaults totrue, so a key missing from the Spanish file may appear in the server’s language rather than frommessages.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\u00F1and¿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.propertiesundersrc/main/resources. If you use Bean Validation, sendValidationMessages.propertiestoo; its{min}and{max}are checked like any other placeholder. - Add comments above ambiguous keys, for example
# button, max 12 charsor# feminine noun: factura. Comments are kept in the output. - Note the form of address (tú or usted) and the target market.
After delivery:
- Read the report: a value left in the source language often points to a placeholder problem in the original.
- Save the file under the right locale name and run the app with
Accept-Language: esores-ES. - Look at screens containing
¿,ñand accents; garbled characters mean the declared encoding (spring.messages.encoding) does not match the file. - 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
- Take messages.properties (and ValidationMessages.properties if used) from src/main/resources.
- Comment ambiguous keys and note the form of address and target country.
- Upload the file, pick a level and read the free sample.
- Save the returned file as messages_es.properties (or es_ES, es_MX) next to the original.
- 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.
The same file, into another language
Into Spanish, 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.