Translate a WordPress site into Italian: themes, plugins and WPML
Translating a WordPress site into Italian means translating the language files of your themes and plugins (.pot/.po) and, for pages and posts, the XLIFF export from WPML. Manuce returns the same file in Italian, with placeholders and tags checked, ready to compile or re-import.
What it costs
For the language files of a WordPress site totalling about 6,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.
Which files to send for an Italian WordPress site
A WordPress site is translated in two layers, each with its own file.
- Theme and plugin strings (buttons, labels, notices): the
.pottemplate shipped with the theme, or an existing.po, as used in Poedit or Loco Translate. A.potcomes back as an Italian.po. - Content (pages, posts, menus): if you use WPML, its XLIFF export. These files are handled as they are.
File naming matters to WordPress: a theme with the text domain mytheme expects mytheme-it_IT.po and mytheme-it_IT.mo. Use it_IT for Italy rather than it_CH unless you are targeting Italian-speaking Switzerland. Month and day names come from WordPress's own language files, not from your theme, so set Italian as the site language to get them.
What Italian changes in WordPress strings
Italian usually runs longer than English, so check narrow menus and buttons. Beyond length, several rules affect .po files directly.
- Plurals. CLDR defines one, many and other for Italian; many covers large round numbers (“un milione di visite”). In a WordPress
.po, Italian uses two forms:msgstr[0]“%d commento”,msgstr[1]“%d commenti”. Check that the header readsPlural-Forms: nplurals=2; plural=(n != 1);. “No comments” is often a separate string: “Nessun commento”. - Accents. Grave on è, più, città; acute on perché, né. The capital is È, not E'. Keep the file in UTF-8.
- Punctuation. No space before colons or question marks, which matters if your source is French: “Rechercher :” becomes
Cerca:, “Search results for: %s” becomesRisultati della ricerca per: %s. - Agreement and elision around placeholders. “%s updated” is aggiornato or aggiornata depending on what
%sstands for, and a contracted article (del, dell', della) cannot sit before a placeholder of unknown gender. Translations often switch to a neutral pattern such asRecensioni per: %s. - Register. Formal Italian uses Lei: “Leave a comment” is Lasci un commento, whereas informal tu gives Lascia un commento. Many buttons sidestep this with an infinitive or noun: Invia, Leggi tutto.
What Manuce returns, and what it does not do
You get the same file, in the same format: indentation, entry order, quotes, comments, line endings, encoding and BOM are preserved. Only the values change; in a .po, every msgid stays intact and the msgstr lines are filled in Italian.
Each translated value is compared with its source. If Pubblicato il %1$s da %2$s lost its %2$s, or an <a> tag went missing, the value is redone; if the mismatch persists, the source value is kept and the report says so. The report lists translated strings and those left unchanged, with the reason.
Not translated: keys, empty values, URLs, email addresses, numbers, colours, date formats, identifiers and anything marked as non-translatable. In practice, a F j, Y format stays as it is; to display “5 marzo 2025”, change it to j F Y yourself. Page links do not get Italian slugs: that is set in WordPress.
Manuce does not compile the .mo (Poedit or Loco Translate do) and does not produce sworn or certified translations, should terms and conditions for the Italian market need one. Pricing counts the words in values only, excluding keys and tags; Italian is charged at the base rate.
Preparing and checking before going live
Before sending:
- Regenerate the
.potif the theme has changed, so you neither pay for removed strings nor miss new ones. - Look for strings with two unnumbered placeholders (
%s ... %s): switching them to%1$sand%2$sin the source lets Italian reorder the sentence. - In WPML, export only the content you want in Italian, so the word count reflects the actual job.
After delivery:
- Open the
.poin Poedit or Loco Translate, check the header (Language: it_IT, plural forms) and save to produce the.mo. - Read the report: a string left in the source language often points to a malformed placeholder in the original.
- On the site, test screens where agreement matters: comment counters at 0, 1 and 2, cart, forms, error messages.
- Check that the register is consistent across theme, plugins and WPML content: a form in Lei next to a button in tu stands out.
In practice
- Export the .pot or .po files of your themes and plugins, plus the WPML XLIFF for content.
- Upload them to Manuce: instant quote on the exact word count and a free one-paragraph Italian sample.
- Download the translated files and the report of strings left unchanged.
- Compile the .po into a .mo with Poedit or Loco Translate, named it_IT, and re-import the XLIFF into WPML.
- Test the Italian site: plurals, accents, date formats, forms.
Frequently asked questions
Should I send the .pot or a .po?
Either works. A theme's .pot comes back as an Italian .po, with msgid lines unchanged and msgstr lines filled. If a partial Italian .po already exists, send that to keep its structure.
Do I get the .mo file?
No, you receive the .po. Open and save it in Poedit or Loco Translate to generate the .mo that WordPress reads. Name both files with it_IT.
Are pages and posts translated too?
Yes, if they go through WPML's XLIFF export, which Manuce handles. The .po files only hold theme and plugin strings, not your editorial content.
How are Italian plurals handled?
In a WordPress .po, Italian uses two forms, msgstr[0] for singular and msgstr[1] for plural, with Plural-Forms: nplurals=2; plural=(n != 1);. The CLDR many category mainly concerns large round numbers and does not appear as a separate form in these files. Check the header after delivery.
Will dates display the Italian way?
Date formats are not translated, so F j, Y stays as it is in the file. Change it to j F Y to get “5 marzo 2025”. Italian month names come from the language installed for WordPress itself.
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.