Open-source project
maboloshi/github-chinese avatar
maboloshi/github-chinese

github-chinese: a userscript that translates the GitHub interface into Chinese

Project brief: GitHub GitHub (GitHub Translation To Chinese). [GitHub ][main.user.js] [ ][main(nju.edu).user.js] [GreasyFork ][main(greasyfork).user.js] 1.

34,021 stars1,937 forksJavaScriptGPL-3.0

At a glance

What is it?
A Tampermonkey userscript that rewrites GitHub's menus, buttons and timestamps into Simplified Chinese by matching DOM text against a dictionary. It is for Chinese-speaking developers who read GitHub daily, and it breaks whenever GitHub ships a new React component.
Who is it for?
Adopt github-chinese if you read GitHub every day and want menu labels, buttons and relative timestamps in Simplified Chinese, and if you accept that a GitHub front-end change can blank out part of the header until a fix lands (v1.9.4.1 is titled a temporary fix for exactly that).
Can I use it commercially?
Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
Is it still maintained?
Yes. The repository last received commits 2 days ago.
What is it written in?
Mainly JavaScript, 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.

DEEP OPEN-SOURCE ANALYSIS

What github-chinese actually replaces on a GitHub page

GitHub's interface is English-only, and for a reader who works in Chinese that means every navigation item, button label, empty-state message and relative timestamp is a small translation task. github-chinese is a userscript that intercepts the page after it renders and swaps those strings for Chinese equivalents drawn from a dictionary file. The README describes the scope as full localization of GitHub interface elements: menu bar, titles, buttons, and so on. It also lists automatic localization of time elements and machine plus human translation of project descriptions.

The audience is narrow and specific. This is not a tool for translating repository content, and it is not a proxy or a mirror. It changes the chrome around the content. If you can already read GitHub's English UI without friction, the script adds a maintenance dependency for no benefit. The README also carries a warning that the project has never been published to GitCode, which tells you the maintainers have dealt with copies being redistributed under that name.

Dictionary matching, mutation observers and the React problem

The mechanism is a dictionary plus a set of regex rules applied to DOM text nodes. The v1.9.4 release notes describe a structural reorganization that pulled configuration into a `CONFIG` constant and state into a `State` object, and split the old `watchUpdate` function into `setupMutationObserver` and `processMutations`. That naming is the architecture in miniature: a MutationObserver watches the document, `processMutations` walks the changed nodes, and each node is matched against the dictionary and the page's ignore rules.

The ignore rules are where the real work lives. The v1.9.3 notes describe merging `reIgnoreClass`, `reIgnoreItemprop`, `ignoreId` and `ignoreTag` into a single `ignoreSelectorPage` rule that handles both global and per-page ignores, plus a `characterDataPage` rule that enables character-data filtering only on certain pages. Later releases narrow and widen those ignores repeatedly. v1.9.4.1 added the entire header navigation to the ignore list because GitHub introduced a React mechanism that made the header search box disappear; v1.9.4.2 narrowed the React search ignore range to restore the header nav, menus and search overlay; v1.9.4.3 narrowed it again to restore the repository issues page and search page body. Nothing else in the changelog makes the trade-off this clear: the script's correctness is a function of how precisely it can avoid touching React-owned nodes, and that boundary moves every time GitHub ships.

Installing the userscript and seeing it work

The README's install path goes through a userscript manager. Tampermonkey is the recommended one; Violentmonkey is listed for Chrome and Firefox, and Macaque and Stay for Safari. On Chrome and Chromium the README is explicit that developer mode must be on in the extensions page, and that the manager's allow-userscripts toggle must be on as well. It links to the Tampermonkey FAQ for the details.

Once the manager is in place, you pick one of three install sources. The GitHub source is the development build, the Nanjing University mirror is also a development build, and GreasyFork is the stable build. The version note explains the cadence: the development build updates in real time and refreshes the dictionary every Friday, while the stable build syncs the development dictionary every Monday.

bash
# no shell install step; pick one source in the browser
# GitHub source (development build)
# https://github.com/maboloshi/github-chinese/raw/gh-pages/main.user.js
# GreasyFork source (stable build)
# https://greasyfork.org/scripts/github-chinese

The README's install list is short: install the manager, enable developer mode and the userscript permission, choose a source, refresh the page, and restart the browser if it still does not take effect. For local debugging the README shows editing the `@require` path in the script header to point at a downloaded `locals.js` on disk, which requires enabling file URL access in the manager and, in Tampermonkey, setting the configuration mode to advanced and the local-file access option to external.

js
// original path
// @require https://raw.githubusercontent.com/...

// changed to
// @require file:///D:/github-chinese/locals.js

There is also a VS Code extension in the repository under `vscode-extension/`, and the README points at that directory's own README rather than restating its setup.

Where github-chinese breaks, and what the changelog admits

The failure mode is not subtle and it is documented by the maintainers themselves. v1.9.4.1 is described as a temporary fix for a GitHub React change that caused the header search box to disappear, with the side effect that the entire header navigation was added to the ignore rules and could not be translated. That is a script degrading the host page, not merely failing to translate it. v1.9.4.2 and v1.9.4.3 then walk the ignore range back in two steps.

The second limitation is the description translation feature. The v1.8.0 notes state that the previous engine, GitHub Chinese Community, stopped working and was replaced by an iFlytek engine on a trial basis; v1.9.3 bumps that engine to v2.0. So the one feature that reaches outside the dictionary depends on a third-party service whose availability the project does not control. If your workflow depends on translated repository descriptions, that dependency is the thing to evaluate, not the dictionary.

The third is platform. The compatibility table lists Chrome and Chromium kernels, Safari on all platforms, Firefox and Gecko kernels, Via on Android, and the VS Code integrated browser. Anything outside that list is untested territory as far as the README is concerned. There is also a known interaction: v1.8.1 records a conflict with the Dark Reader extension that broke time display.

How it differs from browser translation and from a GitHub mirror

The obvious alternative is the browser's own page translation, which Chrome and other browsers offer inline. The difference is scope and control. A browser translator sends the whole page through a translation model, including code blocks, file contents and issue text, and you get whatever the model produces. github-chinese applies a curated dictionary to interface strings and leaves the rest of the page alone, which is why its changelog is full of ignore rules: the ignore list is the product. A browser translator does not need per-page ignore rules because it does not try to be surgical, and it does not break when GitHub adds a React component.

The other thing people search for is a Chinese GitHub mirror or a Chinese version of GitHub. That is a different problem entirely. A mirror changes where the data lives and who serves it; github-chinese changes only the labels rendered in your own browser, on github.com, with your existing session. If your actual constraint is network access to GitHub, this script does nothing for you. The README's compatibility table is about browsers and script managers, not about reachability.

Maintenance cost, licence and the version numbering scheme

The repository is not archived, and no last push date is published, so there is no basis for describing the project as actively maintained. What the changelog does show is a run from 2022 through 2026-06-20, with four releases in June 2026 alone, all of them compatibility fixes. That pattern tells you the maintenance cost is ongoing and driven by GitHub's front end rather than by the project's own roadmap.

Version numbering changed at v1.9.0. The README defines the scheme as `1.9.0-2023-12-09`, where `1.9.0` is the major version updated by the project owner and the date is the dictionary release version updated automatically by a GitHub Action. The GitHub development source updates that dictionary version early Monday morning, and the GreasyFork stable source updates Friday morning with the dictionary content from the previous development release. If you install the stable build, you are deliberately running a dictionary that is several days behind.

The licence is GPL-3.0, per the repository's LICENSE file and the README badge. That matters if you intend to fork the script or ship a modified version inside another product, because GPL-3.0 carries distribution obligations for derivative works. The dictionary files (`locals.js`, `locals(greasyfork).js`, `locals_zh-TW.js`) sit in the same repository under the same licence. Whether your particular reuse counts as a derivative work is a question for a lawyer, not for this article.

Editorial conclusion

Adopt github-chinese if you read GitHub every day and want menu labels, buttons and relative timestamps in Simplified Chinese, and if you accept that a GitHub front-end change can blank out part of the header until a fix lands (v1.9.4.1 is titled a temporary fix for exactly that). Do not adopt it if you need translated issue bodies, commit messages or repository descriptions as a matter of course: those go through an external translation engine, the README notes the earlier GitHub community engine failed, and the current one is marked as a test. Before installing, check the GreasyFork stable source's changelog entry and confirm your browser is on the compatibility list, since the README requires developer mode and the allow-userscripts toggle in Chrome and Chromium.

Frequently asked questions

What is the Chinese version of GitHub that github-chinese provides?

It is not a separate GitHub. github-chinese is a userscript that rewrites interface strings on github.com into Simplified Chinese in your own browser, using a dictionary and regex rules. The README describes it as full localization of GitHub interface elements such as the menu bar, titles and buttons.

Does github-chinese work if GitHub is blocked in China?

The README does not address network access to GitHub. github-chinese is a browser userscript that modifies pages you have already loaded, and its documentation covers browser and script manager compatibility only. Reachability is a separate problem the project does not claim to solve.

Is there a GitHub in China, and does github-chinese replace it?

No. github-chinese is not a hosting service or a mirror; the README describes no server component. It runs as a userscript inside Tampermonkey, Violentmonkey, Macaque or Stay and only changes the labels rendered on github.com.

What do Chinese users use instead of GitHub, and is github-chinese one of those options?

github-chinese is not a replacement for GitHub; it is a userscript that changes the interface language of github.com in your browser. The README lists no hosting, mirroring or proxy capability, so it cannot substitute for GitHub itself.

Is github-chinese a real Chinese-language version of GitHub?

It is a userscript, not a version of GitHub. The README describes it as a plugin that localizes GitHub interface elements, with separate development and stable dictionary builds distributed through GitHub, a Nanjing University mirror and GreasyFork.

Official sources

  1. Official documentation
  2. Official README
  3. Project repository
For maintainers

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/maboloshi-github-chinese.svg)](https://hysenlabs.com/projects/maboloshi-github-chinese)
Community notes

Community notes