Translate a PO file (gettext) into English
Upload your .po or .pot file and Manuce returns the same file with English msgstr values. Your msgid, msgctxt and comments stay untouched, and plural forms follow English rules. A report lists which strings were translated and which were left as they were, and why.
What it costs
For a PO file (gettext) with about 2,500 words of values, into English:
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 changes when a gettext catalogue moves into English
Most projects already write their msgids in English. This page is for the other case: a catalogue whose source strings are in French, German, Spanish, Portuguese or any other language, and which now needs an English locale.
English has two CLDR plural categories, one and other. The usual header is Plural-Forms: nplurals=2; plural=(n != 1);. Be careful if your source is French or Brazilian Portuguese. Those languages put zero in the singular and use plural=(n > 1);. If that formula is copied across, your app will show “0 file” instead of “0 files”, and nothing will warn you.
Punctuation and casing need attention too:
- French spacing before colons and question marks disappears:
Nom :becomesName:; - « » or „ “ quotation marks become English quotes;
- titles and buttons follow either sentence case (
Account settings) or title case (Account Settings), depending on your UI conventions.
English text is usually 10 to 15% shorter than French, so truncation is less of a worry.
Then there is the variant. British (en_GB) uses colour, organise and cancelled, with dates written DD/MM. American (en_US) uses color, organize and canceled, with dates written MM/DD. Date format strings such as %d/%m/%Y are not translated, so switch them to %m/%d/%Y yourself if you target the US.
Context, comments and printf variables in English
One source word often maps to several English ones. Your msgctxt is preserved and used to choose the right one:
- French
Commandeundermsgctxt "shop"becomesOrder, but undermsgctxt "terminal"it becomesCommand; - German
Speichern unterbecomesSave asin a menu context.
Extracted comments (#.), references (#:) and flags (#, such as c-format) stay in place. The context they give guides the translation. msgid_plural is kept as it is.
printf variables are checked. For example, %d fichiers supprimés becomes %d files deleted, with the same %d. English word order sometimes forces a swap. French Le %2$s de %1$s becomes %1$s's %2$s, and positional variables make that possible without breaking the call. Every translated value is compared with its source for variables and tags. If a mismatch persists, the source value is kept and the report says so.
What Manuce delivers, and what it does not
You get back the same file, ready to drop into your project. Indentation, entry order, quoting, comments, line endings, encoding and BOM are preserved; only the values change. A .pot template comes back as an English .po, with the Language and Plural-Forms headers set. The number of msgstr[n] forms matches English: two.
Left untranslated:
- keys (your
msgidlines are unchanged); - URLs and email addresses;
- numbers, colours, date formats and identifiers;
- anything marked as non-translatable.
The report lists translated strings and those left unchanged, with the reason for each. Pricing counts the words in values only, excluding keys and tags. English is charged at the base rate (×1 coefficient).
Manuce does not compile the .mo file. It does not convert your date formats between variants, and it does not take glossaries or terminology instructions. It also leaves your #, fuzzy flags in place, because comments are preserved.
Preparing the file and checking the result
Before uploading
- Make sure the header declares the encoding, for example
Content-Type: text/plain; charset=UTF-8. - Give ambiguous strings a
msgctxtor a developer comment before extraction. That context is what steers the English word choice. - Mark product names and codes that must stay as they are as non-translatable.
After delivery
- Read the free sample first. Check British or American spelling, title casing and how your brand names were handled.
- Check the
Languageheader and set it toen_GBoren_USto match your target. - Run
msgfmt -c, which checks printf formats and plural consistency. - Test the display with n = 0, 1 and 2.
- Entries still flagged
fuzzyare ignored at compile time, so remove the flag once you have reviewed them. - Scan the report for strings left in the source language.
In practice
- Check the encoding header and add msgctxt to ambiguous strings.
- Upload the .po or .pot file to get a quote and a free sample.
- Check British or American spelling and casing in the sample.
- Download the file and report, then adjust the Language header if needed.
- Compile with msgfmt -c and test plurals with 0, 1 and 2.
Frequently asked questions
I have a .pot template. What do I get back?
You get an English .po file, with the Language and Plural-Forms headers set and two msgstr forms for each plural entry. Order, comments and references are unchanged.
Why does “0 items” matter?
English treats zero as plural, whereas French and Brazilian Portuguese treat it as singular. The correct rule is plural=(n != 1). Check the header and test with n = 0.
Will the translation be British or American English?
Check the spelling in the free sample (colour or color, organise or organize), then the Language header in the delivered file. Date formats are not translated, so adapt %d/%m/%Y yourself for en_US.
Are my msgid strings changed?
No. msgid lines act as keys and stay identical, as do msgctxt, msgid_plural and all comments. Only the msgstr values receive English text.
How do I keep a product name untranslated?
Mark it as non-translatable in the file if your toolchain supports it. Then check how it was handled in the free sample and in the delivered translation. Manuce does not accept glossaries.
The specialist in charge
This subject goes to Dédale, the technical specialist. See how it works.
The same file, into another language
Into English, 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.