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

claude-desktop-zh-cn rewrites Claude Desktop's resources to add Chinese, and each platform pays a different price

Claude Desktop Chinese Patch (macOS & Windows)

8,563 stars413 forksPythonMIT

At a glance

What is it?
javaht/claude-desktop-zh-cn is an MIT-licensed set of install scripts that adds Simplified, Taiwan Traditional and Hong Kong Traditional Chinese to Claude Desktop on macOS, Windows and deb-based Linux. It works by modifying the installed app, which costs a re-signed bundle on macOS, a broken Authenticode signature on Windows, and a reinstall after every apt upgrade on Linux.
Who is it for?
Use claude-desktop-zh-cn if you run Claude Desktop in third-party API mode and want the local interface, menus and slash command descriptions in Chinese, and you accept a modified application on disk. If you only sign in with an official account on macOS or Windows, skip it: the login page already supports Chinese and Claude's own Language menu covers it.
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 received new commits within the last day.
What is it written in?
Mainly Python, according to GitHub's language statistics.

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

From daily snapshots

Star history

  • javaht/claude-desktop-zh-cn8,563 ★ · +1,397
Star history
Repository2026-09-242026-11-14
javaht/claude-desktop-zh-cn7.2k8.6k

1,397 Stars in the last 51 days, measured from the daily GitHub snapshot. Compare with other projects

Editorial analysis

Three Chinese variants written into Claude Desktop's language whitelist

Claude Desktop ships a fixed list of interface languages, and claude-desktop-zh-cn widens that list by editing the installed application. The scripts install Chinese resource files, add the chosen variant to the front end's language whitelist, and write the language into the Claude user configuration so the app opens in Chinese. Three variants are supported: `zh-CN` for Simplified Chinese, `zh-TW` for Traditional Chinese as used in Taiwan, and `zh-HK` for Traditional Chinese as used in Hong Kong.

The translations live in `resources/`, split by layer. `frontend-zh-CN.json` and its two siblings cover the front end's i18n keys. A second set, `frontend-hardcoded-zh-*.json`, maps text that never went through an i18n key, and doubles as the DOM translation table for online account pages. `desktop-zh-*.json` covers the desktop shell, `Localizable.strings` covers macOS native menus, and `statsig-zh-*.json` is a fallback for statsig i18n strings.

That layering explains why the project is a patch rather than a language pack. Strings live in several places inside the app, and some of them were never meant to be translated, so the scripts have to reach into each one. The actual patching is done by `scripts/patch_claude_zh_cn.py`, with platform entry points calling into it.

Third-party API mode is the target, not the official login

On macOS and Windows, the scripts only localise the local interface used in third-party API mode. The stated reason: the Claude official account login page already supports Chinese natively, so the scripts on those two platforms no longer touch it. Windows install option `1` names DeepSeek as an example of the third-party mode it is meant for.

That defines the audience. Someone who signs in with an official Claude account on a Mac or a Windows machine can get a Chinese interface from Claude's own settings, through the account menu at the bottom left and `Language`, and does not need to modify the application at all. The patch earns its cost for people who point Claude Desktop at a third-party API endpoint, where the local screens are otherwise English.

Third-party mode has its own prerequisite that is easy to miss. On Windows, the install notes say third-party models must be mapped to Claude or Anthropic style names in the gateway or in CC Switch. The README also warns that the install modes differ in which screens they cover and in Cowork compatibility, and asks readers to go through the mode notes before choosing. The macOS line is different again: the macOS install does not rewrite `app.asar` at all, while Linux does and adds online page DOM translation and an online language lock.

macOS: an ad-hoc re-sign that no longer blocks official auto-updates

On a Mac you quit Claude Desktop, download or clone the repository, and double-click `install-mac.command`. A menu offers four actions: `1` installs the patch, `2` restores the original app, `3` toggles automatic updates (`y` disables them, `n` allows them), and `4` syncs CC Switch skills. After choosing install and a language (`1`, `2` or `3` for the three variants), the script asks for your Mac login password and reopens Claude when it finishes. Python 3 is required, with `/usr/bin/python3` preferred and `python3` from `PATH` as a fallback.

Before touching anything, the script backs up the whole `/Applications/Claude.app`, and a fresh install first restores any older backup to clear the previous round. Modifying the bundle breaks its signature, so the script re-signs the app locally with an ad-hoc signature.

That re-sign used to break updates. Starting with the 2026-08 version, the script writes an `identifier` level designated requirement instead of the default cdhash level one, so official auto-updates download and install instead of stalling at "downloaded, version unchanged". Two consequences follow. A successful update replaces the app with the official English build, so you rerun the patch afterwards. And anyone patched with an older release keeps the old signing behaviour until they patch once more.

Windows: rebuilt ion-dist.asar, a rewritten hash in Claude.exe, and no Authenticode signature

The Windows path goes deeper into the binary than the other two. Double-clicking `install-windows.bat` copies the installer into the current user's temp directory and raises a UAC prompt, since the script needs administrator rights. It relies on the built-in Windows PowerShell, `powershell.exe`, and the real work happens in `scripts/install_windows.ps1`.

From Claude `4.29+`, the front end is packed in `ion-dist.asar`. The script unpacks it to a temp directory, applies the translations, repacks it, and updates the matching ASAR header hash stored inside `Claude.exe`. It also rewrites `app.asar` in place, keeping metadata such as `unpacked` and `executable`, to merge the desktop dictionary into `resources/i18n` so the main process menu bar shows Chinese.

Both edits invalidate the original Authenticode signature. The consequence is concrete: after installation, the `Claude.exe` on disk is no longer the file the vendor signed, and any policy, endpoint tool or audit in your environment that checks that signature will see an altered binary. On a managed corporate machine, that alone can rule the patch out. The script does back up every file it modifies and restores from those backups on uninstall, and it supports both the Microsoft Store (MSIX) package and the website installer, detecting package names such as `Claude` and `AnthropicPBC.Claude` and skipping leftover `app-*` directories from earlier upgrades.

On Windows, English stops being English and WindowsApps keeps its new owner

Two side effects of the Windows install outlast the moment you choose a language. The first is that the desktop dictionary is merged over `en-US`. After installation, selecting `English` in Claude still shows Chinese, and switching languages inside the app cannot get you back to a pure English interface. The only way back is to uninstall through menu option `2` or restore the backup. For a bilingual user who flips languages to match documentation or screenshots, that removes a feature rather than adding one.

The second concerns where Claude is installed. If Claude lives under `WindowsApps` and the administrator account cannot get write access there, the script takes ownership of that directory, changing the owner from TrustedInstaller to Administrators. Uninstalling does not restore the original owner. The patch can be removed, but the ownership change to a system-protected directory stays behind until someone reverts it by hand.

Neither effect is hidden: both appear in the install option text and the notes in the README. They are still the two facts a Windows user should weigh before running `install-windows.bat`, because they are the parts of the change that the uninstall option does not undo.

Linux deb installs: every apt upgrade puts the English interface back

Linux support covers only Claude Desktop installed from the official deb package. The scripts expect resources in `/usr/lib/claude-desktop/resources`, which you can override with the `CLAUDE_RESOURCES` environment variable, and they need Python 3 and `sudo`. Run `./install-linux.sh` from the project directory for the menu, or skip it with `./install-linux.sh install zh-CN` and remove the patch with `./install-linux.sh uninstall`. The script closes Claude Desktop itself if it is running.

The Linux install modifies `app.asar`, and that is why upgrades undo it: an apt upgrade of Claude Desktop overwrites the patched file and the interface returns to English. The recovery is to update this project first and run the install again:

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

The first line pulls the latest translations and patch rules into a cloned checkout. If you downloaded an archive instead, download the newest release again. The second line reapplies Simplified Chinese. The script notices the Claude Desktop version change, throws away the backup from the previous version and takes a fresh one, so it never restores an old `app.asar` over a new install.

Under the hood, `scripts/patch_linux_asar.py` reuses the macOS patch logic by faking a macOS directory layout and skipping codesign and integrity steps. It then checks for its own markers after patching. If a new Claude release has changed the code structure, the script stops with an error rather than leaving a half-applied patch, and the README asks you to report it with the Claude Desktop version number.

A bilingual slash menu that refuses to patch what it cannot anchor

On macOS and Windows, the install also edits the local `SlashCommandMenuPopupBody` component so known built-in commands show a Chinese description next to the English name, for example `model 选择模型` and `permissions 权限模式`. The command ID, search highlighting and click behaviour stay as they were. Custom skills, third-party plugin commands, connectors and unknown commands are left untranslated.

The matching rules live in `resources/slash-command-menu-patch.json`, shared by both platforms, with the description vocabulary for all three variants in `resources/slash-command-glosses.json`. The rules match on local variables rather than a fixed bundle filename, which gives them some tolerance for rebuilt bundles. When the component is missing, an anchor is not unique, or an earlier patch has an unexpected shape, the script prints `WARNING`, leaves that menu file alone, and continues with the rest of the localisation.

By the project's own account, syntactic matching does not guarantee compatibility with future versions, and that the rules may need updating after an app upgrade. A Claude Desktop update can therefore leave you with a translated interface and an English-only slash menu. The feature is also not wired into the online account pages or the standalone Linux install script.

Releases days apart, an update check in release.json, and an MIT licence

The project ships often. Releases 1.4.19, 1.4.20 and 1.4.21 came out on 2026-10-28, 2026-10-30 and 2026-10-31, and the last push was on 2026-11-03, so it is under active development. That pace follows from the design: every Claude Desktop update can move the strings and components the patch targets, and the scripts have to keep up. The install entry points read `resources/release.json` to check GitHub Releases for a newer version.

On macOS and Linux the scripts merge the current Claude version's English language file with the bundled Chinese translation. Fields added in a new Claude release that have no translation yet stay in English, so a fresh Claude update shows a mostly Chinese interface with some English strings rather than missing text.

The repository is MIT licensed, which covers the scripts and translation files here. It does not change the terms of Claude Desktop itself, which the scripts modify on your machine. The repository also carries a `tests/` directory, and the README's development notes say the tests use synthetic menus and temporary directories.

Editorial conclusion

Use claude-desktop-zh-cn if you run Claude Desktop in third-party API mode and want the local interface, menus and slash command descriptions in Chinese, and you accept a modified application on disk. If you only sign in with an official account on macOS or Windows, skip it: the login page already supports Chinese and Claude's own Language menu covers it. On Windows, check before installing whether Claude sits under WindowsApps, because the script may take ownership of that directory away from TrustedInstaller and uninstalling does not hand it back.

Frequently asked questions

Which Chinese variants does claude-desktop-zh-cn support?

It supports zh-CN (Simplified Chinese), zh-TW (Traditional Chinese, Taiwan) and zh-HK (Traditional Chinese, Hong Kong). You choose one with 1, 2 or 3 during installation.

Does claude-desktop-zh-cn survive a Claude Desktop update?

No. On macOS an official update replaces the app with the English build, and on Linux an apt upgrade overwrites the patch, so you rerun the installer after updating. On Linux the script detects the version change and takes a fresh backup.

How do I uninstall claude-desktop-zh-cn?

Run the installer again and choose option 2 to restore the original, or on Linux run ./install-linux.sh uninstall. On Windows, an ownership change to the WindowsApps directory is not reverted by the uninstall.

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)

Star history chart for your README

markdown
[![Star history](https://hysenlabs.com/chart/javaht-claude-desktop-zh-cn.svg)](https://hysenlabs.com/projects/javaht-claude-desktop-zh-cn)

Was this useful?