Translate a Java (Spring) App into English
Upload your <code>messages.properties</code> files: Manuce translates the values into English and returns the same file, with keys, comments, encoding and escapes untouched. MessageFormat quotes and <code>{0}</code> placeholders are checked, and a report lists anything left untranslated, with the reason.
What it costs
For the language files of a Java (Spring) 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 English changes in messages_en.properties
Coming from French, Spanish or Portuguese, English labels usually come out shorter. Enregistrer les modifications becomes Save changes, so buttons and table headers rarely overflow. Other details, however, need a decision on your part.
- Punctuation: English puts no space before a colon or question mark, so
Adresse e-mail :becomesEmail address:. If your source uses escaped non-breaking spaces such as\u00a0or\u202f, check that none survive in front of English punctuation. - Capitalisation: German or French sources give no guidance on case. Pick either sentence case (
Save changes) or title case (Save Changes) for buttons and headings, and apply it everywhere. - Spelling variant:
colourorcolor,organisationororganization. Java looks upmessages_en_US.propertiesfirst, then falls back tomessages_en.propertiesfor missing keys. A complete_enfile, plus a small_en_USfile holding only the keys that differ, is enough. - Dates: a pattern such as
date.pattern=dd/MM/yyyyis not translated. For a US audience, you need to change it toMM/dd/yyyyyourself.
Quotes, {0} and plurals: the MessageFormat traps
Spring runs messages that take arguments through MessageFormat. There, a single quote is an escape character and has to be doubled: user.notFound=User {0} doesn''t exist. By default, a message without arguments is not parsed this way, so single quotes stay as they are.
This matters more in English than in many source languages, because of contractions and possessives: {0}''s profile, You don''t have access to {0}. If a quote is left undoubled in a message with an argument, the text after it disappears, or a raw {0} appears on screen.
English has only two plural categories, one and other, but zero is plural: 0 files, whereas French says « 0 fichier ». A construct such as {0,choice,0#no files|1#one file|1<{0} files} must keep its limits and separators; only the text between them changes. Review these strings first, because a badly split branch does not always throw a visible error.
What Manuce returns, and what it does not do
You upload messages.properties (or messages_de.properties, messages_fr.properties, and so on) and get back the same file, in the same format, with English values. It is ready to save as messages_en.properties in your project.
- Indentation, key order,
#comments, line endings, encoding and BOM are preserved; only the values change. \uXXXXescapes are kept where used, continuation lines ending in\are respected, and MessageFormat quotes are handled.- Every translated value is compared with the source. If
{0},{1}or a<b>tag goes missing and the mismatch persists, the source value is kept and the report says so. - The following are not translated: keys, empty values, URLs, email addresses, numbers, colours, date formats, identifiers and anything you mark as non-translatable.
- A report comes with the file: strings translated, strings left as they were, and why.
Manuce works on message files, not on your code. Text hard-coded in a Thymeleaf template or in a Java exception message is not in these files, so it will not be translated. Pricing is based on the words in the values, excluding keys and tags, so checkout.button.confirm is not counted.
Preparing the files and checking the result
- Collect everything: besides
messages.properties, includeValidationMessages.propertiesif you customise Bean Validation messages. Their{min}and{max}parameters must come through intact. - Know your default file: if
messages.propertiesis in your source language and there is no_enfile, English-speaking users will see that language. Depending on your configuration, Spring may also fall back to the server locale first. - Encoding: Spring Boot reads message files as UTF-8 by default. If your project still uses ISO-8859-1 with escapes such as
\u00fc, the returned file keeps that encoding and those escapes, so there is nothing to convert. - Testing: run the app with an
enlocale, via theAccept-Languageheader or whatever parameter yourLocaleResolverexpects. Look for unreplaced{0}placeholders and text still in the source language. - Review: start with
choicemessages, anything containing'', and the strings flagged in the report.
The free excerpt lets you check the spelling variant and capitalisation style before you pay. For a customer-facing interface, the Professional level is a better fit than Essential, which is meant for internal use.
In practice
- Take messages.properties (and ValidationMessages.properties, if used) from src/main/resources.
- Upload the file: you get an instant quote based on the words in the values, plus a free excerpt.
- Check the spelling variant (colour or color) and capitalisation in the excerpt, then start the translation.
- Save the returned file as messages_en.properties and read the report.
- Test the app with an en locale and adjust the date patterns yourself for a US audience.
Frequently asked questions
Should I replace my existing messages.properties?
No. Keep it and add messages_en.properties alongside it. Spring looks for the file matching the requested locale first, then falls back to the other files for any missing keys.
Will the English be British or American?
Check the free excerpt before paying, looking at words such as colour or organisation. If you serve both audiences, use a complete _en file and an _en_US file limited to the keys that differ, since Java falls back to _en for the rest.
Will doubled quotes ('') come out right?
Yes, MessageFormat quotes are handled. English contractions such as don''t and possessives such as {0}''s are doubled in messages that take arguments. Still, review choice messages, where a mistake is not always visible.
Are keys translated or charged for?
Neither. Keys stay identical so your code still finds them, and pricing covers only the words in the values, excluding keys and tags.
My file uses ISO-8859-1 and \u escapes. What happens to it?
The encoding, any BOM and the \uXXXX escapes in use are all preserved. English needs few accented characters, but the file remains readable by your project without conversion.
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.