ManuceTranslate a fileTranslate a Java (Spring) App into Italian

Translate a Java (Spring) App into Italian

Translating a Spring application into Italian means translating the values in messages.properties and returning a messages_it.properties file that sits next to the original. Manuce keeps keys, {0} placeholders, \uXXXX escapes and the file layout as they are. It also handles MessageFormat apostrophes, the main trap with Italian.

Upload my file See pricing

What it costs

For the language files of a Java (Spring) app totalling about 2,000 words, into Italian:

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 Italian changes in a .properties file

Italian uses the Latin alphabet and reads left to right. Its text length is close to French, so it usually runs noticeably longer than an English source: check your narrowest buttons. Three points need particular care.

  • Apostrophes. Italian elides constantly: l'utente, dell'ordine, c'è, un'email. MessageFormat, however, treats a single apostrophe as a quoting character. As a result, Benvenuto nell'area {0} renders as ‘Benvenuto nellarea {0}’: the apostrophe vanishes and the placeholder is not replaced. The correct form is nell''area.
  • Accents. An Italian interface is full of them: è, più, perché, città. Capital È is often typed as E'. That is a spelling mistake, and it also adds an apostrophe that MessageFormat will interpret. The correct form is È necessario accedere.
  • Register. Formal address (Lei) gives Inserisca la password. Informal address gives Inserisci la password. Many Italian interfaces use the neutral infinitive instead: Inserire la password. Pick one and keep it throughout the file.

Plurals, gender and formats: Italian-specific traps

CLDR gives Italian three plural categories: one, many and other.

  • The many category covers large round numbers built with di: un milione di utenti. It is rare in a user interface, but it does occur.
  • Plurals in Spring. Spring does not handle these categories natively; plurals usually go through ChoiceFormat, for example {0,choice,0#nessun articolo|1#1 articolo|1<{0} articoli}. The choice syntax must stay intact; only the text fragments are translated.
  • Zero. It agrees in gender: nessun articolo but nessuna fattura.

Gender. This is the second trap. {0} eliminato works when {0} is ordine, but is wrong for fattura, which needs eliminata. If one key receives nouns of different genders, rephrase the source to isolate the variable: Elemento eliminato: {0}.

Formats. Italian writes dates as 25/12/2025 (pattern dd/MM/yyyy) and numbers as 1.234,56. Date patterns stored in the file, such as date.format=MM/dd/yyyy, are not translated. Adjust them yourself, or let Java formatters work from Locale.ITALIAN.

What Manuce returns, and what it does not do

You receive the same file, in the same format, ready to drop back into the project. Indentation, key order, comments, line endings, encoding and BOM are preserved; only the values change. More specifically:

  • \u00E8-style escapes are kept if your file uses them;
  • continuation lines stay continuation lines;
  • MessageFormat apostrophes are handled in messages that carry arguments such as {0}.

Every translated value is checked against the source: placeholders {0}, {1} and tags such as <b>. If a mismatch persists, the source value is kept and the report says so. The report lists the strings translated, the strings left as they were, and why.

Several things are never translated: keys (checkout.button.pay stays as it is), empty values, URLs, email addresses, numbers, colours, date formats, identifiers, and anything you mark as non-translatable. You pay only for the words in the values, with keys and tags excluded. Italian is charged at the base rate (×1 coefficient).

What Manuce does not do. It does not touch your Java code or your Thymeleaf templates: a string hard-coded in a class is not in the file, so it will not be translated. Manuce does not produce sworn or certified translations either, which may matter if your terms and conditions require one in Italy.

Preparing the file and checking it afterwards

Before uploading:

  • Start from your most complete source file, usually messages.properties. If you use one, include ValidationMessages.properties too; its {min} and {max} placeholders must stay intact.
  • Check the declared encoding. Spring Boot reads messages according to spring.messages.encoding. If your project works in ISO-8859-1 with escapes, confirm that Italian accented letters display correctly once the file is in place.
  • Identify messages without arguments. By default, Spring does not run them through MessageFormat. In those messages, l''utente would show both apostrophes, unless alwaysUseMessageFormat is enabled in your setup.

After delivery:

  1. Name the file messages_it.properties and place it next to the default file, with the same base name.
  2. Test with an Accept-Language: it header, or with your language parameter if you use a LocaleChangeInterceptor.
  3. Check three kinds of screens: those showing a message with {0} and an elision, the narrowest buttons, and validation error messages.
  4. Read the report to see which values remain in the source language.

In practice

  1. Gather messages.properties and, if used, ValidationMessages.properties.
  2. Upload the file: the quote appears at once, and a free extract shows one paragraph translated into Italian.
  3. Choose the level, state your preferred register (Lei, tu or infinitive) and pay.
  4. Place messages_it.properties in src/main/resources, next to the default file.
  5. Run the app with the it locale and review the report of untranslated strings.

Frequently asked questions

Do I need to double Italian apostrophes myself?

No. MessageFormat apostrophes are handled in messages that contain arguments such as {0}. Do check your alwaysUseMessageFormat setting, though: it decides whether Spring runs messages without arguments through MessageFormat, which changes how doubled apostrophes are displayed.

My source file uses \u00E9 escapes. What happens to them?

\uXXXX escapes are kept if your file uses them, along with its encoding and BOM. After delivery, check on screen that Italian accented letters (è, à, ù) display correctly with your project's configuration.

Should the file be messages_it or messages_it_IT?

messages_it.properties is enough in most cases, because it serves both it_IT and it_CH. When the it_IT locale is requested and no it_IT file exists, Java falls back to the it file. Keep it_CH for wording specific to Italian-speaking Switzerland.

Can keys or {0} placeholders be altered?

Keys are never translated. Every value is compared with the source to check placeholders and tags. If a mismatch persists, the source value is kept and the report flags it.

Lei, tu or infinitive: which suits an app?

Lei suits banking, public-sector or business software. Tu is common in consumer apps. The infinitive (Inserire la password) avoids choosing. What matters most is using the same form throughout the file.

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