Translate a JSON i18n File into Simplified Chinese
Upload your JSON locale file (i18next, react-intl, vue-i18n, next-intl, ngx-translate) and only the values are translated into Simplified Chinese; keys and structure stay exactly as they were. Every string is checked so that its placeholders survive, and you get back a file ready to drop into your project, with a report.
What it costs
For a JSON i18n file with about 2,000 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 when your strings become Chinese
Simplified Chinese has no spaces between words and uses full-width punctuation. In a locale file this affects almost every value: "welcome": "Hello, {name}!" becomes "welcome": "你好,{name}!". The comma and exclamation mark are Chinese characters (,!), not Latin ones followed by a space.
- Length: a Chinese value often has two to three times fewer characters than an English or French source, but each character is wider. A button barely gains any room. A field capped with
maxlength, or truncation based on character count, will however behave differently. - Word order: placeholders move.
"{count} days ago"becomes"{count} 天前", while"Updated by {user}"becomes"由 {user} 更新". This is why a sentence split across several keys ("You have", then{count}, then "messages") translates badly: each fragment is translated on its own, and your code reassembles them in the source order. - Measure words: a number needs a classifier.
"{count} files"becomes"{count} 个文件","{count} pages"becomes"{count} 页". The placeholder stays; the classifier is added around it.
Plurals and ICU messages: one category only
According to CLDR, Chinese has a single plural category: other. There are no few or many forms to add, unlike Polish or Russian. An ICU message such as {count, plural, one {# file} other {# files}} keeps its structure and both branches are translated; in Chinese, the other branch is the one displayed, even for 1. That is the branch to review first.
- Exact matches remain separate branches:
=0 {no files}becomes=0 {没有文件}. selectbranches are translated one by one, even where spoken Chinese makes no distinction (他 and 她 sound the same).- With i18next, suffixed keys such as
file_oneandfile_otherare neither translated nor renamed. Recent i18next versions follow CLDR rules and will only readfile_otherfor Chinese, so make sure it exists in your source.
For each string, the translation is checked to contain the same placeholders, {name}, {{count}} or %s, as many times as the source.
What Manuce returns, and what it does not do
You get back the same file: indentation, key order, quotes, comments, line endings, encoding and BOM preserved. Only the values change, whether the JSON is flat, nested or contains arrays of strings. Each translated value is compared with its source (placeholders, tags); if a mismatch persists, the source value is kept and the report says so. The report lists the strings translated and those left as they were, with the reason.
Left untouched: keys, empty values, URLs, email addresses, numbers, colours such as #1A73E8, date formats such as YYYY-MM-DD, identifiers and anything you have marked as non-translatable.
- Manuce does not rename your file to
zh.jsonorzh-CN.json, nor change your library configuration. - It does not turn a date pattern into
YYYY年M月D日: date formats are not translated, so Chinese date display belongs in your code (for instanceIntl.DateTimeFormatwith thezh-CNlocale). - It does not produce Traditional Chinese in the same order: that is a separate language to add (two languages bring 20% off the whole order).
Preparing the file and checking the result
Before uploading:
- Make sure the file is UTF-8. Encoding is preserved, so a file saved in a Western single-byte encoding could not hold Chinese characters.
- Merge split sentences into one key with a placeholder:
"inbox": "You have {count} messages"rather than three concatenated keys. - Mark product names or codes that must not change as non-translatable.
After delivery:
- Read the report: a value left in the source language often points to a malformed placeholder in the original.
- Add a Chinese font to your CSS stack (for example
"PingFang SC", "Microsoft YaHei", "Noto Sans SC"): Latin fonts lack these characters and the browser will pick an arbitrary fallback. - Check line wrapping: with no spaces, long Chinese text breaks between any two characters, which is correct, but fixed-width containers may overflow differently.
- Pick a rule for spacing between Chinese characters and digits or Latin words (
共 {count} 条or共{count}条) and check it is applied consistently. - For a brand name or technical term that must stay as it is, look at the free sample before paying, then at the full translation.
In practice
- Check the JSON is UTF-8 and that each sentence sits in a single key.
- Upload the file and choose Simplified Chinese: the quote counts words in values only.
- Read the free sample, ideally a string with a placeholder or plural.
- Download the translated file and report, and place it under your zh or zh-CN locale.
- Test the interface with a Chinese font and check length-limited fields.
Frequently asked questions
Will the keys in my JSON be translated?
No. Keys are never translated, only values. Key order, indentation and quotes stay identical, so you can diff the Chinese file against the source line by line.
Do I need extra plural forms for Chinese?
No. Chinese only has the CLDR category other, so nothing needs adding. Existing one branches stay in the message, but the other branch is what users see; with i18next, make sure the _other key exists.
Simplified or Traditional Chinese?
This page covers Simplified Chinese, used in mainland China and Singapore. Traditional Chinese (Taiwan, Hong Kong) is a separate language at Manuce and must be ordered in addition; the 20% two-language discount then applies to the whole order.
How is the price worked out for Chinese?
The quote appears as soon as you upload and is based on the words in the values, keys and tags excluded. Chinese carries a ×1.6 coefficient on the per-word price.
What happens if a placeholder goes missing in translation?
Each translated value is compared with its source. If the mismatch persists, the source value is kept and the report flags it, so you know exactly which string to revisit.
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.