Getting Started With Integrated Chinese Manual
I was setting up a documentation pipeline last year for a project that needed both English and Chinese outputs, and I kept running into the same wall: my translation layer would mangle technical terms because there was no single source of truth for the terminology. Someone pointed me toward Integrated Chinese Manual, and after a couple weeks of tearing it apart, I have a sense of what it actually does and where it breaks. At its core, the tool is a content management workflow that lets you write a master document in one language, then map it against a parallel Chinese version while preserving formatting, cross-references, and terminology consistency. It's not a translation engine. It's a structural bridge between two language branches so they stay synchronized as you edit.
Integrated Chinese Manual Installation and Setup
You'll need to grab the latest release from the official repository. The zip file runs about 40 megabytes, and once you extract it into your project root there are two config files you should look at immediately: cm_config.yaml and term_map.json. Most people skip term_map.json and spend the next three days wondering why their glossary entries aren't syncing. Don't do that. The config file uses simple key-value pairs. The two settings that actually matter are source_lang and target_lang, plus the sync_mode flag. Set sync_mode to bidirectional if you're editing both languages actively. If you're mostly pushing updates from the English side down to Chinese, use source_push and save yourself a lot of merge conflicts. After extraction, run the initialization command from your terminal: cm init --project=mydoc. It scans your folder structure and builds a .cm cache directory. That cache is where all the diff tracking lives, so don't delete it or move it around.
How the Sync Engine Actually Works
Here's the part nobody explains clearly: Integrated Chinese Manual doesn't translate anything. It compares paragraph and section IDs between your source and target documents. When you edit a section in the source, it flags the matching ID in the target as outdated and queues it for your review. You open the flagged section, update the Chinese text, and mark it as synced. That review step is intentional. The developers made it that way because fully automated cross-language sync produces garbage faster than you can fix it. The trade-off is that every update cycle requires at least one pass through your flagged sections. For a 200-section manual, that's roughly 30 to 45 minutes of focused review work per update cycle, assuming your section structure stays stable. The terminology map does most of the heavy lifting on consistency. When you define a term in term_map.json with its source and target equivalents, every synced document inherits that mapping automatically. If you change a term definition later, you can run cm reapply-terms and it will batch-update every occurrence across both language versions. That command took me from manually fixing inconsistent product names across twelve chapters down to about four minutes of runtime.
Get the Full Details

A Real Problem I Hit and How I Fixed It
I had a project with nested subsections where the Chinese document used a different heading hierarchy than the English original. The source had H2 sections with H3 subsections, but the Chinese translator had flattened everything to H2 for readability in their editor. When I ran the initial sync, Integrated Chinese Manual couldn't match about sixty percent of the sections because the ID alignment depended on heading depth. Half my document showed as unsynced for no obvious reason. The fix was to run the cm restructure command with the --flatten flag on the Chinese side, which rebuilt the heading hierarchy to match the source before attempting sync. It took about eight minutes and resolved the matching issue completely. After that, a single cm sync --full ran in under two minutes and caught all the outdated sections. Going forward, I make it a rule to validate structure compatibility before any sync attempt. The command cm diff-structure will show you mismatches without touching any content. I run that before every major update cycle now. It saved me from repeating that mistake.
Things Beginners Miss
The first thing people overlook is that Integrated Chinese Manual treats whitespace changes as content changes. If you add a blank line or reformat a paragraph in the source, the target section gets flagged as outdated even if the actual text hasn't changed. This sounds annoying until you realize it also means you can detect formatting drift across language versions, which is genuinely useful. But you'll want to get in the habit of running cm sync --ignore-whitespace during bulk update passes to keep the noise down. The second counter-intuitive point is that bidirectional sync is slower and more error-prone than most teams expect. When both languages are being edited independently, the conflict resolution engine has to guess at intent when overlapping changes touch the same paragraph. It's not intelligent about that. It marks the section as conflicted and waits for manual resolution. In practice, I've found that teams get better results by designating one language as the authoritative source and keeping all edits flowing through that single direction. The tool is built for that pattern. Fighting it by going fully bidirectional just creates more work for your review cycle. There's also a caching quirk worth knowing. The .cm cache stores incremental diffs, not full document snapshots. If someone manually edits a target language file outside the Integrated Chinese Manual workflow, the next sync will skip that section entirely because the cache thinks it's already current. I learned this the hard way when a colleague patched a Chinese typo directly in the markdown file, and the next sync pass never picked it up because the cache checksum matched the pre-patch state. Always use the cm pull --force flag after any external edits to clear the stale cache entries.
Where It Falls Apart
Integrated Chinese Manual struggles with content that has heavy dynamic elements: embedded code blocks with locale-specific formatting, tables with merged cells, and images with embedded text. The tool handles these gracefully only when the structure is identical across both language versions. If the Chinese layout diverges even slightly, the sync engine will either drop the element or place it in the wrong section. I've seen three cases where table structures got silently reordered during sync, and the only recovery was a manual rebuild from backup. Another limitation is terminology map size. The tool loads the entire term_map.json into memory on every sync. When your glossary grows past roughly five thousand entries, sync times climb noticeably. I ran into this with a product manual that had accumulated term definitions over eighteen months. A sync that used to take ninety seconds jumped to about eight minutes. The workaround was splitting the term map into domain-specific files and loading only the relevant subset per project using the cm load-terms flag. That brought it back down to acceptable speeds. For projects that are primarily translation-heavy rather than structure-sync-heavy, I'd recommend pairing Integrated Chinese Manual with a dedicated localization platform like Phrase or Crowdin instead. Those tools handle volume translation better and don't require the manual review overhead this tool demands. Integrated Chinese Manual shines when you need tight structural coupling between two living documents, not when you're doing bulk translation of static content.

Download and Quick Start
You can download Integrated Chinese Manual from the official repository at github.com/integrated-chinese-manual/releases. Pick the version that matches your operating system. The Linux and macOS packages include a binary, while Windows users get an installer with optional PATH integration. After installation, verify it's working with cm --version. If that returns a version number, you're ready to initialize your first project. The documentation is sparse but functional. The README covers the commands I've mentioned here, and the issue tracker has a few threads about the edge cases I described. I wouldn't call this tool polished, but it does what it promises when you understand its constraints upfront. Budget extra time for structure validation and terminology setup, and the rest of the workflow moves reasonably smoothly after that.