Translate a Ruby on Rails app into Italian
Upload your config/locales/*.yml files and Manuce returns Italian files in the same format: the root locale key becomes <code>it:</code>, interpolations such as <code>%{count}</code> are checked and <code>one</code>/<code>other</code> keys are adapted. Only the values change; the Italian-specific points left for you to handle are set out below.
What it costs
For the language files of a Ruby on Rails app totalling about 3,000 words, into Italian:
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 Italian changes in a Rails locale file
Whatever your source language, Italian strings are often longer than their English equivalents and close to French in length, so check tight buttons and table headers if your layout was designed around English. The harder issues are grammatical.
- Plurals. In Italian,
oneapplies only to 1; zero falls underother: “0 messaggi”, not “0 messaggio”. If you want a dedicated wording, Rails uses azerokey when it exists and the count is 0. - Agreement. Participles agree with the noun:
one: "%{count} file selezionato",other: "%{count} file selezionati", but “%{count} fatture selezionate” for a feminine noun. - The many category. CLDR lists
one,manyandotherfor Italian, butmanyonly covers large round numbers in compact notation (“1 milione di utenti”). Rails' default pluralisation rule only knowsoneandother, which is enough for everyday counters.
Articles, elision and ActiveRecord error messages
Interpolating a noun into a sentence is risky in Italian because the article depends on gender and on the noun's first letter (il, lo, la, l'). A string such as "Eliminare il %{model}?" is wrong for “l'utente” or “la fattura”. Two safe fixes: a wording without an article ("Eliminare questo elemento?") or one key per model.
The same applies to errors.format, which defaults to "%{attribute} %{message}": “Email non può essere vuoto” is wrong, as email is feminine. If your attributes mix genders, a format such as "%{attribute}: %{message}" with neutral messages (“campo obbligatorio”) avoids impossible agreements.
Button labels from helpers.submit work well without an article: “Crea %{model}”, “Aggiorna %{model}”.
What Manuce returns, and what it does not do
You get the same file, in the same format, ready to drop back into the project:
- the root locale key (
en:,fr:,de:…) becomesit:; - indentation, key order, quotes, comments, line endings, encoding and BOM are preserved; only the values change;
- each translated value is compared with the source (variables such as
%{count}or%{name}, tags); if a mismatch persists, the source value is kept and the report says so; - keys, empty values, URLs, email addresses, numbers, colours, date formats, identifiers and anything marked as non-translatable are left untouched.
The report lists translated strings and those left as they were, with the reason. Pricing is based on the words in the values, excluding keys and tags; Italian is charged at the base rate (×1 coefficient).
In practice, format settings such as date.formats.default or number.currency.format are not changed. Set them for Italy yourself: "%d/%m/%Y", comma as decimal separator, full stop for thousands, currency symbol after the amount (“12,50 €”). Manuce does not produce sworn or certified translations, should your terms of service ever require one.
Register and Italian interface conventions
Formal address in Italian uses the third person, Lei: “Inserisca la Sua password” rather than “Inserisci la tua password”. This is the expected register for a business application; if your brand addresses users informally, check the register on the free extract before ordering, and keep one form across all files.
- Short buttons usually take the imperative or infinitive: “Salva”, “Annulla”, “Accedi”.
- Capitalise only the first word: “Impostazioni account”, not “Impostazioni Account”.
- Days and months are lower case: “lunedì”, “gennaio”.
- Accents matter: “perché” (acute), “è” (grave); as a capital, “È”, not “E'”.
Preparing your files and checking the result
Before uploading, make sure the source file is complete: a key missing in the source will be missing in Italian. Mark product or plan names that must stay as they are as non-translatable.
After delivery:
- Check the YAML loads:
ruby -ryaml -e "YAML.load_file('config/locales/it.yml')". Italian is full of apostrophes (l', dell', un'); inside a single-quoted YAML string they must be doubled. - Add
:ittoconfig.i18n.available_locales. - Test counters at 0, 1 and 2, and submit forms with errors to check agreement.
- Read the report: every string left in the source language is explained there.
In practice
- Gather your source config/locales/*.yml files and mark anything that must not be translated.
- Upload them to Manuce: instant quote on the exact word count and a free one-paragraph extract.
- Download the Italian files and the report, then place them in config/locales.
- Add :it to the available locales, set date and number formats, and test plurals and error messages.
Frequently asked questions
Are variables such as %{count} or %{name} kept intact?
Yes. Each translated value is checked against the source for variables and tags. If a mismatch persists, the source value is kept and flagged in the report, so you know exactly which strings to review.
Do I need a many key for Italian?
Not for ordinary counters: one and other are enough, and Rails' default pluralisation rule only uses those two keys. CLDR's many category covers large round numbers in compact notation, which rarely appear in an interface.
Are Rails' default strings (validation errors, month names) included?
Manuce translates the files you upload. If your ActiveRecord messages or day names are in those files, their values are translated; date formats and numbers are left unchanged and need setting for Italy.
Will the translation use Lei or tu?
Formal Lei is the usual register for a professional application in Italian. If your tone is more casual, check the register on the free extract before paying, then confirm consistency across files.
What about brand names and identifiers?
Keys, URLs, email addresses, identifiers, numbers and colours are not translated. For a product name written in plain text inside a value, mark it as non-translatable before uploading.
The specialist in charge
This subject goes to Dédale, the technical specialist. See how it works.
The same file, into another language
Into Italian, 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.