ManuceTranslate a fileTranslate a Flutter app into Italian: your .arb files, kept intact

Translate a Flutter app into Italian: your .arb files, kept intact

To translate a Flutter app into Italian, upload your template .arb file. Manuce returns the same file with Italian values, @@locale set to it, placeholders and ICU messages checked, and the Italian many plural category added. Registering the locale in your project and checking the screens remain your part of the job.

Upload my file See pricing

What it costs

For the language files of a Flutter 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 Flutter UI

Italian runs noticeably longer than English. ‘Save’ becomes Salva, but ‘Settings’ becomes Impostazioni and ‘Sign out’ Esci dall'account or Disconnetti. In a fixed-width Row or a tab bar, that is where the yellow-and-black overflow stripes show up in debug mode.

  • Register. The translation uses the formal register (Lei): Inserisca il codice. Many Italian consumer apps address users informally (Inserisci il codice) or use a neutral infinitive (Inserire il codice). Decide this before release, and review those strings if your brand uses the informal tu.
  • Accents. è, più, perché, città. At the start of a sentence the correct capital is È, not E'. If you bundle a custom font subset to a limited character set, make sure the accented vowels are included.
  • Gender and agreement. Participles agree with the noun: file eliminato, but foto eliminata and foto eliminate. A string that drops a variable noun into a fixed sentence can end up wrong depending on what is inserted.
  • Apostrophes. Italian is full of them: l'utente, un'immagine, dell'app. They matter inside ICU messages, as explained below.

one, many, other: Italian plurals and ICU placeholders

The CLDR plural categories for Italian are one, many and other. An English template usually has only one and other; Manuce adds the missing category to the Italian value. For example:

{count, plural, =0{Nessun file} one{{count} file eliminato} many{{count} file eliminati} other{{count} file eliminati}}

The many branch only applies to very large round numbers (millions). With a count shown in digits it simply repeats the other text; it only differs for a spelt-out form such as un milione di file.

  • Placeholders. {name}, {count} and {date} stay untouched, but they may move: {count} photos shared by {name} becomes {name} ha condiviso {count} foto. Every translated value is compared with the source; if a placeholder goes missing and the mismatch persists, the source value is kept and the report says so.
  • Select. Existing select branches are translated, for instance {gender, select, female{Benvenuta} male{Benvenuto} other{Le diamo il benvenuto}}. If your source only says Welcome, {name}, the file has no gender branch: review that string, as a neutral phrasing like Le diamo il benvenuto, {name} avoids guessing the agreement.
  • Apostrophes and escaping. If your generation settings enable single-quote escaping, the ' in l'utente may be read as the start of quoted text inside an ICU message. Check that setting in l10n.yaml and test a string containing an apostrophe after generation.

What you get back, and what Manuce does not do

You upload your source .arb file; you get the same file back, 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 preserved;
  • @@locale is set to it;
  • @ metadata keys are left alone, but their descriptions are used as context: a description such as ‘button that empties the basket’ helps choose Svuota rather than Cancella;
  • not translated: keys, empty values, URLs, email addresses, numbers, colours, date formats, identifiers and anything marked as non-translatable;
  • a report comes with the file: strings translated, strings left as they were and why.

The word count covers the values only, keys and tags excluded. Manuce does not touch your Dart code: it does not add it to supportedLocales or run flutter gen-l10n. Material widget labels (date picker buttons such as Annulla) are not in your .arb files; they come from the flutter_localizations package. Nor is this a sworn translation: if terms of use need certifying, you will need a sworn translator.

Preparing the file and checking the app in Italian

Before uploading:

  • Start from one template file, usually app_en.arb, complete and up to date.
  • Fill in descriptions for short or ambiguous strings: ‘Share’ (verb or noun?), ‘Open’ (action or state?). In Italian, Condividi and Condivisione, Apri and Aperto are not interchangeable.
  • Avoid concatenation in Dart: 'Delete ' + item cannot agree in Italian. Use a message with a placeholder instead.
  • Mark as non-translatable any product or plan names you keep as they are.

Once the file is back in the project as app_it.arb:

  • add Locale('it') to supportedLocales and, for iOS, add Italian to the languages declared in Info.plist;
  • run the app on a device set to Italian and go through the narrow spots: tabs, buttons, AppBar, dialogs;
  • test plurals with 0, 1 and 2;
  • check that dates and numbers go through intl with the it locale: 12 marzo 2025 (lower-case months), 1.234,50; these formats are not part of the translation;
  • read the report: any string still in English is listed there with its reason.

In practice

  1. Upload your template .arb file (for example app_en.arb): the quote appears straight away, based on the words in the values.
  2. Choose Italian and a level, then read the free sample before paying.
  3. Download the translated file, with @@locale set to it, and the report on strings left unchanged.
  4. Save it as app_it.arb, run flutter gen-l10n and test the app on a device set to Italian.

Frequently asked questions

My plurals only have one and other. Will that break in Italian?

No. Manuce adds the many category that CLDR expects for Italian to the translated value. For a count shown in digits its text is usually the same as other, but the branch is there.

Could my {name} and {count} placeholders get translated or broken?

They are preserved, and every translated value is checked against the source. Their position in the sentence may change, which is normal in Italian. If a mismatch persists, the source value is kept and the report flags it.

Will the translation use tu or Lei?

It uses the formal Lei. Many Italian apps use the informal tu or an infinitive on buttons; if that is your style, plan a review of those strings.

Why does the date picker still show English buttons?

Those labels are not in your .arb files; they are supplied by the flutter_localizations package. Add its localisation delegates and Locale('it') to your app configuration and they will switch to Italian.

Do I need to rename the returned file?

The content is ready, with @@locale set to it, but you save it under the name your configuration expects, usually app_it.arb in your localisation folder. Then regenerate the localisations.

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