ManuceTranslate a fileTranslate a Symfony App into Italian

Translate a Symfony App into Italian

Upload your Symfony message file in XLIFF or YAML and Manuce returns the same file with its values translated into Italian. Keys, structure and %name% or {name} placeholders stay intact. A report lists every string left unchanged and the reason why.

Upload my file See pricing

What it costs

For the language files of a Symfony app totalling about 3,000 words, into Italian:

Essentiel
€18

To understand, internal use.

Professional
€54

Ready to send, by the technical specialist.

Premium
€105

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 your Symfony messages

Italian uses the Latin alphabet, reads left to right, and runs to roughly the length of French. Coming from English, allow some extra room: Save becomes Salva, but Settings becomes Impostazioni and Forgot your password? becomes Ha dimenticato la password?

  • Register. A professional interface addresses the user with the formal Lei: Inserisca la password rather than Inserisci la password. Many Italian apps also use the impersonal infinitive for short instructions (Inserire la password). What matters is not mixing the two on one screen.
  • Accents. è (is) takes a grave accent, perché an acute one. The capital is È, not E' — a keyboard shortcut that stands out immediately in a flash message.
  • Elision before a placeholder. l’utente, dell’ordine: the article depends on the next word. A string such as Modifica dell'%item% only works if every value of %item% starts with a vowel. Rephrase instead: Modifica elemento: %item%.
  • Agreement. Participles agree in gender and number: %count% file eliminati but %count% foto eliminate. A generic string reused for several object types often has to be split in Italian.

Plurals one, many, other and the ICU apostrophe trap

CLDR defines three plural categories for Italian: one, many and other. one covers 1, other most other numbers, and many large round numbers in millions, where Italian inserts di: un milione di utenti. If your app shows counters of that size, a complete ICU string looks like this:

{count, plural, one {# utente} many {# di utenti} other {# utenti}}

Without a many branch, ICU falls back to other: nothing breaks, the phrasing is just less natural. With Symfony’s older pipe syntax, the string reads {0} Nessun risultato|{1} Un risultato|]1,Inf[ %count% risultati; the intervals stay as they are and only the text of each branch changes.

The trap specific to Italian is the apostrophe, which is everywhere. In ICU syntax, a straight apostrophe directly before a brace starts a literal sequence: dell'{name} prints the text {name} instead of the value. Double the apostrophe (dell''{name}), use the typographic ’, or rephrase. In single-quoted YAML the apostrophe must be doubled too: 'L''ordine è stato inviato'.

What Manuce returns, and what it does not do

Manuce supports translations/messages.<locale>.xlf and .yaml files, whatever your source language. You get back the same file, in the same format, ready to drop into the project:

  • Only the values change: indentation, key order, quotes, comments, line endings, encoding and BOM are those of your file.
  • %name% and {name} placeholders are checked: each translated value is compared with the source (variables, tags). If a mismatch persists, the source value is kept and the report says so, so you know exactly which strings need attention.
  • Not translated: keys, empty values, URLs, email addresses, numbers, colours, date formats, identifiers and anything marked as non-translatable.
  • The report lists translated strings and those left as they were, with the reason.

The word count covers values only: a key such as checkout.payment.error or a <target> tag is not counted. For an interface your Italian customers will see, the Professional level is the sensible choice.

Manuce does not test rendering in your Twig templates and does not produce sworn or certified translations: if your Italian terms and conditions need certified legal standing, use a sworn translator.

Preparing the project and checking the result

  • Start from your most complete locale. php bin/console debug:translation en (or your reference locale) flags missing or unused messages before you upload.
  • Skip the built-in constraints. Symfony already ships Italian translations for the standard Validator messages; only your custom messages in the validators domain need translating.
  • Rewrite concatenations. Look for strings that glue an article to a placeholder (l'%name%) or build a sentence from several keys: Italian agreement will make them wrong.
  • After delivery, save the file as messages.it.xlf or messages.it.yaml, add it to enabled_locales, then run php bin/console lint:yaml translations or lint:xliff translations.
  • In XLIFF, since the structure is preserved, the target-language attribute of the <file> element (or trgLang in XLIFF 2.0) keeps its original value: set it to it.
  • Clear the cache (cache:clear) and walk through the sensitive screens: forms, transactional emails, flash messages, plural counters.

In practice

  1. Upload your XLIFF or YAML message file and select Italian as the target language.
  2. Read the free sample to judge register and terminology before paying.
  3. Accept the quote, based on the words in the values only.
  4. Download the translated file and report, and save it as messages.it.xlf or messages.it.yaml.
  5. Run lint:yaml or lint:xliff, clear the cache and test the key screens.

Frequently asked questions

Should an Italian app use the formal Lei or the informal tu?

For a business app or customer-facing service, Lei is the norm: Inserisca, Verifichi. Short instructions often use the impersonal infinitive instead (Inserire la password). Pick one convention and apply it across the whole file.

Will my %count% and {name} placeholders survive?

Each translated value is compared with the source, variables and tags included. If a mismatch persists, Manuce keeps the source value and the report flags it. Watch for a straight apostrophe just before a brace in ICU strings, which must be doubled or replaced with ’.

Are my translation keys changed?

No. Keys, order, indentation, comments and encoding are preserved; only values change. Keys are not included in the word count.

Do I need to translate validators.it.xlf?

Symfony already provides Italian for its standard constraint messages. You only need to translate your own custom validation messages, which you can upload the same way.

Is Italian more expensive than other languages?

No, Italian is charged at the base rate, with a ×1 coefficient. If you also translate into other languages, the discount applies to the whole order: −20% for two languages, up to −50% from five.

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