Plugins / Translation

Codex Bilingual Reader

by fangchenghao · github.com/fangchenghao/codex-bilingual-reader

Turns a PDF into a layout-preserving English and Chinese bilingual PDF, added as a child attachment while the original stays untouched.

Codex Bilingual Reader has Atlas grade C (not recommended) because it installs and runs npm or PyPI packages without a fixed version. It works with Zotero 7–10. Last checked 6 Nov 2026.

View source
Downloads a .xpi file (0.07 MB). In Zotero, open Tools → Plugins and install it from the file.
In useAn estimate of how many copies of Zotero have it: Zotero downloads each new version once for every copy that has the plugin, so we count the downloads of its most-downloaded recent release. Rounded. Plugins that update from outside GitHub count low.
7
DownloadsAll-time downloads of its release files from GitHub, counting every update. Installs from elsewhere aren't counted.
9
ReleasesVersions published on GitHub. Everyone who has the plugin downloads each one again, which adds up in Downloads.
2
StarsPeople who starred the repository on GitHub: a rough measure of interest.
0
ContributorsPeople who have committed code to the repository.
2
LicenceThe licence the code is published under, as GitHub reports it.
MIT
C
Atlas gradeNot recommended
because it installs and runs npm or PyPI packages without a fixed version
Applies to v1.5.0, released 21 Oct 2026Code checked · not yet tested in a live Zotero
Another plugin uses the same ID2 other plugins share this add-on ID. Zotero can only install one of them.
What we found in the codeSets the gradeThe worst finding in these three areas sets the grade.
Code transparencyReadable code; not yet checked against the published sourceThe developer uploaded the release file from the fangchenghao account. We haven't yet checked whether this file matches the public source code.UnknownWe couldn't check this yet.
Updates
Updates come from this project's GitHub repositoryThe update address offers this version
Where your data goesOnly contacts services we could identify11 addresses in 4 groups.LowLow concern: normal for plugins that do this job. Listed so you know.
AI services (5)
Codex CLI (OpenAI)api.deepseek.comnamed in its codeThe address is in its code, but we didn't trace a request to it. It may be a link or unused.api.openai.comnamed in its codeThe address is in its code, but we didn't trace a request to it. It may be a link or unused.dashscope.aliyuncs.comnamed in its codeThe address is in its code, but we didn't trace a request to it. It may be a link or unused.openrouter.ainamed in its codeThe address is in its code, but we didn't trace a request to it. It may be a link or unused.
Translation (3)
BabelDOC (the AI provider it's set up with)pdf2zh (Google Translate, or the translator it's set up with)pdf2zh-next (SiliconFlow, or the engine it's set up with)
Code hosting (2)
github.comnodejs.org
On your computer (1)
127.0.0.1named in its codeThe address is in its code, but we didn't trace a request to it. It may be a link or unused.
Where we found it
github.comcontent/runtime/install-preserved-pdf-runtime.ps1 · line 10
$engineUrl = "https://github.com/PDFMathTranslate-next/PDFMathTranslate-next/releases/download/v2.9.0/pdf2zh-v2.9.0-BabelDOC-v0.6.4-with-assets-win64.zip"
nodejs.orgcontent/runtime/install-preserved-pdf-runtime.ps1 · line 12
$nodeUrl = "https://nodejs.org/dist/v24.19.0/win-x64/node.exe"
Powerful capabilitiesInstalls and runs npm or PyPI packages without a fixed version, and 5 moreHighHigh concern: a serious problem. One high finding makes the grade C.
High concern (1)
Installs and runs npm or PyPI packages without a fixed version
Medium concern (2)
Downloads a program checked against a fixed fingerprint, and runs itLaunches programs on your computer
Low concern (3)
Uses the clipboardStores API keys or passwordsWorks with files on your computer
Where we found it
Installs and runs npm or PyPI packages without a fixed versioncontent/runtime/install-preserved-pdf-runtime.sh · line 91

pip: installs the newest version each time

"$uv" pip install --python "$VENV/bin/python" \
Downloads a program checked against a fixed fingerprint, and runs itcontent/runtime/install-preserved-pdf-runtime.ps1 · line 38

It checks the download against a fingerprint written into the plugin, so only a new version of the plugin can change what runs. We haven't yet reviewed what it is.

$curl = [IO.Path]::Combine($env:SystemRoot, "System32", "curl.exe")
Launches programs on your computerbootstrap.js · line 4

Programs it names include bash, cmd, codex, codex.cmd, powershell and 1 more

"resource://gre/modules/Subprocess.sys.mjs",
Before you installShown, not gradedFacts to help you decide. They don't change the grade.
Works withZotero 7, 8, 9, 10 · not 11 betaUpdates automatically
Zotero 7 ✓ worksZotero 8 ✓ worksZotero 9 ✓ worksZotero 10 ✓ worksZotero 11 beta ✗ doesn't work
What you'll needNothing extra detectedDetected automatically from its code
No further detail for this area yet.
MaintenanceActive · last release 21 Oct 20262 contributors
No further detail for this area yet.
LanguagesDocumentation in English and ChineseInterface: English and Chinese
No further detail for this area yet.
We report what we found in the code. Open any area for the evidence.How we gradeReport a problem

What it does

Written by AI from the README

Turns a PDF into a layout-preserving English and Chinese bilingual PDF, added as a child attachment while the original stays untouched. Uses a local Codex CLI or an OpenAI-compatible API such as DeepSeek, with batch queues, progress, token and cost tracking.

Reading English papers alongside a Chinese translation usually loses figures and equations. This keeps the page layout. It installs PDFMathTranslate-next, and paper text goes to your chosen service. A maintained fork of Mengqi97's plugin.

What you'll need

Detected automatically

We haven't detected any setup requirements. That isn't the same as none: check the developer's README.

Where your data goes

We found: only contacts services we could identify. 11 addresses in 4 groups.

AI services (5)
Codex CLI (OpenAI)api.deepseek.comnamed in its codeapi.openai.comnamed in its codedashscope.aliyuncs.comnamed in its codeopenrouter.ainamed in its code
Translation (3)
BabelDOC (the AI provider it's set up with)pdf2zh (Google Translate, or the translator it's set up with)pdf2zh-next (SiliconFlow, or the engine it's set up with)
Code hosting (2)
github.comnodejs.org
On your computer (1)
127.0.0.1named in its code
Evidence · file and line
github.comcontent/runtime/install-preserved-pdf-runtime.ps1 · line 10
$engineUrl = "https://github.com/PDFMathTranslate-next/PDFMathTranslate-next/releases/download/v2.9.0/pdf2zh-v2.9.0-BabelDOC-v0.6.4-with-assets-win64.zip"
nodejs.orgcontent/runtime/install-preserved-pdf-runtime.ps1 · line 12
$nodeUrl = "https://nodejs.org/dist/v24.19.0/win-x64/node.exe"

Other plugins that do this

Matched on what they do

For the same job, work with Zotero 10 and graded B or better. Closest match first.

  • A
    PaperMirror 文镜 for Zotero

    Shows a translated page next to the original in Zotero's PDF reader, with figures, tables and formulas kept in place and only the body text re-flowed.

    Matches “translate while reading pdf” · 271 downloads · Active · Zotero 9–10
    Can use a local model
  • A+
    Zotero Bilingual PDF

    Batch-translates English papers into side-by-side English and Chinese PDFs and saves them as child attachments.

    Matches “translate pdf to bilingual” · 93 downloads · Active · Zotero 9–10
Compare all 3 side by side
How we pick these

By how closely what they do matches this plugin, using descriptions and the phrases people search with. Copies and forks of this plugin are listed under Forks and copies instead. No plugin pays to appear here.

Forks and copies

2 other plugins use the same ID as this one. Every Zotero plugin carries an ID, a name tag Zotero uses to tell plugins apart. These 3 plugins carry the same one, because people copied Codex Bilingual Reader to make their own versions and kept its ID.Show what this means
  • You can only have one. Zotero sees them as the same plugin.
  • Installing another replaces it. If you install one of the others, it takes this one's place.
  • Check what you install. Several share this plugin's name, so make sure the file comes from the one you meant.
Codex Bilingual Reader · this pluginfangchenghao/codex-bilingual-readerCNot recommended921 Oct 2026
Codex Bilingual ReaderThe most used · Mengqi97/codex-bilingual-reader-for-zoteroBUse with care98217 Aug 2026
See all 3 and how they differ →

No forks listed.

The developer's response

The developer hasn't responded. Developers can reply here, and their reply sits next to our findings.I'm the developer

Ratings and reviews

What people who use it say. This is separate from the grade, which is what the code does, and never changes it.

No ratings yet.

Write a review
Your rating of Codex Bilingual Reader v1.5.0

Your review is public, under the name you give, and published with the directory's data under CC BY 4.0. Links are removed. We never store your IP address: a scrambled code made from it is kept for 30 days to catch fake reviews. Every review is checked before it's published; how fake ones are spotted isn't published, so it can't be gamed.

Install Codex Bilingual Reader
CNot recommended
We don't recommend itIt installs and runs npm or PyPI packages without a fixed version.
Better-graded plugins for the same jobA+Bionic for ZoteroA+Zotero Focused ModeA+PDF Translate
Read what we found