Translate a PO file (gettext) into Simplified Chinese
Upload your .po or .pot file and Manuce returns the same file with Simplified Chinese msgstr values, a single plural form and the Plural-Forms header set. printf placeholders, msgctxt and comments are preserved, and a report lists anything left untranslated and why.
What it costs
For a PO file (gettext) with about 2,500 words of values, into Chinese (Simplified):
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 in a PO file when the target is Chinese
Under CLDR, Chinese has a single plural category, other. An entry that carries msgstr[0] and msgstr[1] in an English source therefore keeps only msgstr[0], and the header becomes Plural-Forms: nplurals=1; plural=0;. If you upload a .pot template, Manuce returns a .po for Chinese with the Language and Plural-Forms headers set, and the number of msgstr[n] forms matches the target language.
For example, msgid "%d file" / msgid_plural "%d files" becomes a single string, msgstr[0] "%d 个文件". Chinese does not inflect nouns for number; it inserts a measure word (here 个) between the numeral and the noun. The msgid_plural line stays in the file so that ngettext keeps working.
Context matters more than with most European targets, because one English word maps to different characters depending on its role. “Open” on a button is 打开; as the status of a ticket it is more likely 已打开 or 开放. A msgctxt "button" or a translator comment #. is read and steers the translation.
Punctuation, word order and placeholders
Chinese uses full-width punctuation with no space before it: , 。 : ? !. “File name:” becomes 文件名: and “Delete %s?” becomes 删除 %s?. Mainland usage puts quotations in “ ” and titles of works in 《 》. If your code appends its own colon after a translated label, you end up with a mixed 文件名:, so keep punctuation inside the string.
Word order often shifts. “Deleted %d items from %s” reads naturally as 已从 %2$s 删除 %1$d 个项目, with the location before the verb. That reordering is only possible if the source uses positional placeholders (%1$d, %2$s); with plain %d and %s, the Chinese sentence has to follow the source order and may read stiffly.
Every printf placeholder (%s, %d, %1$s) is checked against the source. If a translated value drops or alters one and the mismatch persists, Manuce keeps the source value for that entry and says so in the report, so you get an untranslated string rather than a crashing printf.
One style point to check: many Chinese interfaces put a space between hanzi and digits or Latin words (%d 个文件, 使用 Google 登录), others do not. Look at the free sample to see whether the result suits your product.
What Manuce returns, and what it does not do
You get the same file in the same format, ready to drop back into your project's locale folder:
- indentation, entry order, quoting, line endings, encoding and BOM preserved; only the
msgstrvalues change; msgctxt,msgid_pluraland#.,#:,#,comments kept, including thec-formatflag;- left untranslated:
msgidkeys, empty values, URLs, email addresses, numbers, colours, date formats (%Y-%m-%dstays as it is), identifiers and anything marked as non-translatable; - a report listing translated strings, strings left as they were, and the reason.
What Manuce does not do: it does not compile the .mo, it does not adjust fonts or your UI layout, and it does not produce Traditional Chinese in the same order, as that is a separate language. If you want a Chinese date pattern such as %Y年%m月%d日, that is a decision for your code or a dedicated string. Manuce does not take glossaries: for a product name that must stay in Latin script, check the free sample and then the delivered file. Nor does it provide certified or sworn translation, which is not expected for interface strings anyway.
Preparing the file and checking the result
- Encoding. The encoding is preserved, so a .po declared as
charset=ISO-8859-1cannot hold Chinese characters. Make sure the header readsContent-Type: text/plain; charset=UTF-8and that the file really is UTF-8 before uploading. - Positional placeholders. For sentences with several variables, switch the source to
%1$s,%2$sso the Chinese can follow natural word order. - Short, ambiguous strings. “Back”, “Clear”, “Post”: add a
msgctxtor a#.comment, otherwise the engine picks the most common sense. - Technical check. After delivery, run
msgfmt -c: it validatesc-formatstrings and consistency withPlural-Forms. Then compile. - Display. Latin-only fonts lack Chinese glyphs, so make sure your font stack includes one that has them (Noto Sans CJK SC, PingFang SC, Microsoft YaHei). Chinese text is two to three times shorter in characters, but each character is wider, so the space taken barely changes: test fixed-width buttons. With no spaces between words, lines break between characters, which can split a two-character term at the end of a line.
In practice
- Check that the .po or .pot is UTF-8 and that ambiguous strings have a msgctxt.
- Upload the file, select Simplified Chinese and review the quote and free sample.
- Download the translated .po and the report of strings left unchanged.
- Run msgfmt -c, compile the .mo and test the UI with a Chinese-capable font.
Frequently asked questions
Why does my Chinese file only have msgstr[0]?
Chinese has one plural category, other. The header is therefore Plural-Forms: nplurals=1; plural=0; and each plural entry carries a single form. The msgid_plural line is kept, so ngettext still works.
I only have a .pot template. Is that enough?
Yes. The .pot comes back as a .po for Chinese, with the Language and Plural-Forms headers set and the right number of msgstr[n] forms. You just place it in your translations directory.
Is Traditional Chinese included?
No. Manuce treats Traditional Chinese (Taiwan, Hong Kong) as a separate language from Simplified. You can order both together, in which case a 20% discount applies to the whole order from two languages.
Why does Chinese cost more than a European language?
Chinese carries a ×1.6 coefficient on the per-word rate. The count covers the words in your values only; msgid keys and tags are excluded. The exact quote appears as soon as you upload the file.
Will my product name be rendered in Chinese characters?
Anything marked as non-translatable is left alone, as are URLs, email addresses and identifiers. For a brand name inside a sentence, check the free sample first, then the delivered translation.
The specialist in charge
This subject goes to Dédale, the technical specialist. See how it works.
The same file, into another language
Into Chinese (Simplified), 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.