Model or dataset
javaht/claude-desktop-zh-cn avatar
javaht/claude-desktop-zh-cn

javaht/claude-desktop-zh-cn: a Chinese interface patch for Claude Desktop on macOS, Windows and Linux

Claude Desktop Chinese Patch (macOS & Windows)

7,350 stars336 forksPythonMIT

At a glance

What is it?
The project adds Simplified Chinese, Traditional Chinese (Taiwan) and Traditional Chinese (Hong Kong) language options to Claude Desktop by rewriting the app's resources and, in the full modes, its app.asar. It is a local patch with several installation modes, and the mode you pick decides whether Cowork and third-party gateways keep working.
Who is it for?
Adopt it if you run the official Claude Desktop build on macOS, Windows or a deb-installed Linux system, you want a Chinese UI, and you accept that the full modes rewrite app.asar and re-sign or re-hash the app. Do not adopt it if you depend on the Cowork sandbox on Windows, or if you cannot run Python 3, PowerShell or sudo on the machine.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 1 day ago.
What is it written in?
Mainly Python, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 29, 2026, and from our analysis. They are not legal advice.

Editorial analysis

What the patch changes and who it is aimed at

Claude Desktop ships an interface language whitelist that does not include Chinese variants. javaht/claude-desktop-zh-cn works around that locally: the installers add Chinese language options to the app, install Chinese interface resources, and write the chosen variant into the Claude user configuration so the app starts in that language. Three variants are supported, `zh-CN`, `zh-TW` and `zh-HK`.

The audience is narrow and specific. You need Claude Desktop already installed, and the README lists macOS, Windows and Linux (deb package installations) as the supported environments. On macOS the script prefers `/usr/bin/python3` and falls back to `python3` on `PATH`. Windows uses the built-in Windows PowerShell and the batch entry point requests administrator rights through UAC. Linux needs Python 3 and `sudo`, and expects the official deb layout under `/usr/lib/claude-desktop/resources`, overridable with the `CLAUDE_RESOURCES` environment variable.

This is not a translation project in the usual sense. There is no server, no plugin API and no upstream contribution path described. It is a local modification of files that Anthropic ships, which is exactly why the README spends most of its length on modes and rollback rather than on translation coverage.

How the patch works: language registration, resources and app.asar

The mechanism has three layers, and the installation mode decides how many of them are applied.

The first layer is language registration. The installer adds the selected Chinese variant to the frontend language whitelist and writes the language setting into the Claude user configuration. This is the part every mode performs, and it is why the app can offer a Chinese entry in the account menu under `Language` after installation.

The second layer is resources. On macOS and Linux the installer merges the English language file of the current Claude version with the Chinese translations shipped in this repository. Fields that are new in a Claude release and not yet translated stay in English, which is a deliberate choice to avoid blank interface text rather than a claim of complete translation.

The third layer is `app.asar`, the Electron archive, and this is where the modes diverge. The full or official-account mode modifies `app.asar` and performs display-layer DOM translation on the `claude.ai` page after an online account signs in. The README is explicit that this logic only changes interface text and language state, and does not touch third-party APIs, gateways, model routing or request content. The same mode can bypass the local Anthropic validation of third-party gateway model names, so names such as `deepseek-v4-pro` or `kimi-*` do not invalidate the whole configuration. Modes that skip the structural `app.asar` patch do not include that bypass.

On Linux, `scripts/patch_linux_asar.py` reuses the asar patching logic from `scripts/patch_claude_zh_cn.py` by faking a macOS directory layout and skipping codesign and integrity steps, then verifies markers after patching so a silent failure does not pass unnoticed. That verification step is the most interesting engineering detail in the repository: it acknowledges that patching a signed Electron bundle can fail without an obvious error.

Installing on macOS and picking a mode

Quit Claude Desktop, clone or download the repository, then double-click `install-mac.command`. The script presents a numbered menu. Option `1` is the full patch (official accounts and third-party APIs, modifies `app.asar`), option `2` skips the structural `app.asar` patch, option `3` is an experimental Frida runtime path, option `4` restores the original state, option `5` configures auto-update, and option `6` syncs CC Switch skills. After choosing, the script restores any previous backup first, then asks for the language and for your Mac login password.

The script backs up the original `/Applications/Claude.app` before installing. If the language does not switch automatically, open the account menu in the lower left and choose `Language` followed by the Chinese entry.

The CC Switch skills sync is worth understanding before you enable it. It scans directories under `~/.cc-switch/skills` that contain a `SKILL.md` file and creates symlinks only for skills that do not already exist under the same name in Claude Desktop, updating the skills manifest. Cancelling the sync removes only the symlinks and records created from that directory, not the CC Switch source directory.

bash
# Linux equivalent of the menu, with the language passed directly
./install-linux.sh install zh-CN
# or: ./install-linux.sh install zh-TW
# or: ./install-linux.sh install zh-HK
./install-linux.sh uninstall

The Linux entry point accepts the same choices as arguments, so the menu is optional. On Linux you need `sudo`, and the script also closes Claude Desktop automatically if it detects a running instance.

Windows modes and the Cowork trade-off

Windows is where the mode choice has the hardest consequences. Double-click `install-windows.bat`; the script copies installation files into the current user's temporary directory and raises a UAC prompt. Mode `1` is the Cowork-compatible and third-party API mode: it skips `app.asar` and the embedded integrity hash inside `Claude.exe`, while still installing Chinese resources, registering the language and translating the frontend bundle. Text on online account pages that depends on DOM injection is not covered, and third-party models have to be mapped to Claude or Anthropic style names in the gateway or in CC Switch. Mode `2` is the official-account online translation mode: it modifies `app.asar` and rewrites the embedded integrity hash in `Claude.exe`. The README states plainly that this turns the Authenticode signature of `Claude.exe` into `HashMismatch` and that the Cowork sandbox or workspace may refuse to start.

So the project forces a real decision rather than offering a single best setting. If you use Cowork, mode `1` is the documented choice, and you give up DOM-level translation of online pages and the model-name validation bypass. If you want the fullest Chinese interface for an official account, mode `2` does that at the cost of a broken executable signature and possible Cowork failure. Neither mode is presented as strictly better.

Mode `3` is the experimental Frida path, which does not modify `app.asar` or `Claude.exe` on disk and instead applies memory patches plus CDP injection into the online page DOM. If Python with frida is missing, it offers to download a portable runtime into `%LOCALAPPDATA%\claude-zh\runtime`, used only by this tool. Switching between modes `1`/`2` and mode `3` makes the installer disable the previous Frida resident task first, so a resident watcher does not take over and restart a disk-patched Claude. The portable runtime is kept for later reuse.

Upgrades, backups and the experimental Frida path

The macOS patch re-signs the application with a local ad-hoc signature. According to the README, from the 2026-08 versions the re-signing writes an `identifier`-level designated requirement instead of the default cdhash-level one, so Claude Desktop's official auto-update can install normally rather than stalling after download. Two caveats follow from that. A successful update overwrites `/Applications/Claude.app` with the official English build, so the patch has to be run again to restore Chinese. And if a previous patch was applied with the older ad-hoc designated requirement, the patch must be applied once more to get the new signing behaviour.

On Linux, an apt upgrade overwrites the patch and the interface returns to English. The README suggests updating the project first (with `git pull` for a clone, or by downloading the latest archive) and then reinstalling:

bash
git pull
./install-linux.sh install zh-CN

The script detects the Claude Desktop version change, discards the old backup and takes a fresh one, so it will not restore an old `app.asar`. If the new version changed its code structure and the patch does not take effect, the script reports an error rather than proceeding silently.

The Frida mode deserves a blunt assessment. On macOS, with SIP still enabled, it re-signs `/Applications/Claude.app` in place with an ad-hoc signature, adds `get-task-allow` and removes Hardened Runtime, because Frida cannot attach otherwise. The README states that this mode requires the machine to permit writing the signature of `/Applications/Claude.app` and cannot be treated as a general installation method for ordinary users. That is an honest framing of an option that mostly makes sense for people already comfortable with Frida and with modifying a signed application in place.

Where the patch is the wrong tool, and what to compare it against

The clearest failure mode is the Windows Cowork case described above: mode `2` can leave the Cowork sandbox or workspace unable to start, and mode `1` deliberately leaves parts of the online interface untranslated. If Cowork is central to your work, this project is not a clean fit.

The second limitation is update churn. Every official Claude Desktop upgrade on macOS and Linux replaces the patched files, so the patch is a recurring maintenance task, not a one-time change. The README anticipates this with version detection and a reinstall path, but it cannot remove the repetition.

The third is translation coverage. On macOS and Linux, untranslated fields introduced by a new Claude version stay in English by design. A user expecting a fully localized interface in every release will be disappointed, and the README does not claim otherwise.

A real alternative is to leave the application untouched and rely on the language options Claude Desktop already offers. That approach needs no re-signing, no backup management and no reinstall after upgrades, and it cannot break the executable signature or the Cowork sandbox. The difference in approach is fundamental: this project modifies shipped application files and the Electron archive to insert a language that the whitelist does not include, while the built-in route only exposes languages Anthropic has enabled. If a Chinese interface is a hard requirement and the official build does not provide one, the patch is the only option among these two; if it is a preference, the unmodified app avoids every trade-off listed in the README.

A second alternative, for third-party API users specifically, is to keep the English interface and map model names on the gateway side, which is what Windows mode `1` requires anyway. The README links to a third-party API configuration tutorial rather than reproducing it.

Licence, repository layout and maintenance signals

The project is MIT licensed, and the LICENSE file sits at the top level alongside `README.md`, `docs/`, `resources/`, `scripts/`, `tests/` and the three installer entry points. MIT permits reuse and modification with attribution and without warranty, but it covers this repository's code and translation resources, not Claude Desktop itself. The installers modify files that Anthropic ships and, on macOS, re-sign the application; whether that is acceptable under Anthropic's own terms is a question the README does not address, and it is not a question the MIT licence answers. Treat those as separate concerns.

The repository is not archived, and the last push was on 2026-09-19. Releases are frequent: 1.4.5 on 2026-08-13, 1.4.6 on 2026-08-20 and 1.4.7 on 2026-08-30. The changelogs themselves are not published in the repository listing, so the release cadence is the only maintenance signal available: a steady stream of point releases in the weeks before the last push.

Structurally, the repository separates entry points from logic. `install-mac.command`, `install-windows.bat` and `install-linux.sh` are the user-facing menus; `scripts/install_windows.ps1` and `scripts/install_linux.sh` implement installation and removal; `scripts/patch_claude_zh_cn.py` performs the actual patch; and the Frida experiments live under `scripts/experimental/`. There is also a `tests/` directory, though the README does not describe what it covers.

Editorial conclusion

Adopt it if you run the official Claude Desktop build on macOS, Windows or a deb-installed Linux system, you want a Chinese UI, and you accept that the full modes rewrite app.asar and re-sign or re-hash the app. Do not adopt it if you depend on the Cowork sandbox on Windows, or if you cannot run Python 3, PowerShell or sudo on the machine. Before installing, check which mode matches your setup, confirm the resource path on Linux (or set CLAUDE_RESOURCES), and read the auto-update section, because a successful Claude update replaces the patched app and the patch has to be run again.

Frequently asked questions

What exactly is claude-desktop-zh-cn?

It is a local Chinese interface patch for Claude Desktop, supporting Simplified Chinese, Traditional Chinese (Taiwan) and Traditional Chinese (Hong Kong). The installers add Chinese language options, install Chinese interface resources and set the language in the Claude user configuration.

Is claude-desktop-zh-cn safe to use?

The project is MIT licensed and the installers back up the files they modify, restoring from backup on uninstall. The full modes do modify app.asar and, on Windows, rewrite the embedded integrity hash in Claude.exe, which the README says turns its Authenticode signature into HashMismatch.

Does claude-desktop-zh-cn support third-party APIs?

Yes, but the coverage depends on the mode. The macOS full patch supports official accounts and third-party APIs and can bypass local validation of gateway model names such as deepseek-v4-pro or kimi-*. On Windows, mode 1 requires third-party models to be mapped to Claude or Anthropic style names in the gateway or in CC Switch.

What happens to claude-desktop-zh-cn after Claude Desktop updates?

The official update overwrites the patched application. On macOS the README says the update installs normally but replaces /Applications/Claude.app with the English build, so the patch must be run again. On Linux, apt upgrades overwrite the patch and the script detects the version change, discards the old backup and takes a new one.

Does claude-desktop-zh-cn work with the Cowork sandbox?

On Windows, the README says mode 1 is the Cowork-compatible mode and that mode 2 may cause the Cowork sandbox or workspace to refuse to start. On macOS the full patch mode is described as unsuitable for scenarios that depend on the Cowork sandbox or workspace.

Official sources

  1. javaht/claude-desktop-zh-cn on GitHub
  2. License: MIT
  3. Project website
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/javaht-claude-desktop-zh-cn.svg)](https://hysenlabs.com/projects/javaht-claude-desktop-zh-cn)