2026年9月12日 星期六

Google Antigravity 學習筆記 : 翻譯工廠

以前我會使用線上服務例如 onlinedoctranslator.com 將英文版 pdf 電子書翻譯成繁體中文版, 但如果來源檔不是 pdf (例如 epub) 就沒辦法, 參考 :


其實使用免費的 AI 工具像是 Antigravity 就可以因應書本題材選擇不同模型將 pdf/epub 電子書翻譯成繁體中文版, 可先轉成可編輯的 docx 檔, 然後再轉成 pdf. 

本系列全部文章索引參考 :


以下測試使用下列免費電子書 (英文版) 做為來源文本 :


下載網頁上的 "Pro Git" 這本書的 pdf 與 epub 檔後, 建立兩個專案目錄 pdf-ebook-translate 與 epub-ebook-translate, 分別將這兩個檔案搬移到各自的專案目錄下 : 




更多免費電子書資源參考 :



1. 系統架構 : 

我本來是想每次要翻譯時便建立一個專案來做, 但與 Gemini 討論後發現, 翻譯其實是一個經驗累積與不斷演進的過程, 每本書如果是用獨立的專案來翻譯, 那麼術語, 版式, 翻譯腳本等資產每次都要重新產生, 沒有辦法重複使用與演進, 應該建立一個翻譯工廠專案來處理所有電子書的翻譯工作, 只要有新的電子書要翻譯, 就將它複製到專案目錄下, 用提示詞叫 AI 翻譯即可.  


(1). 建立檔案目錄架構 : 

Gemini 建議的檔案目錄架構如下 :




但我們不用自己建這些檔案目錄結構, 只要先建一個專案目錄例如 book-translator-workspace 即可, 其餘可用提示詞叫 Antigravity 來做 : 

PS D:\antigravity_cli\projects> mkdir book-translator-workspace  
    目錄: D:\antigravity_cli\projects
Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----       2026/9/10  下午 06:29                book-translator-workspace

然後切換到此專案資料夾下, 用 agy 指令啟動 Antigravity CLI : 

PS D:\antigravity_cli\projects> cd book-translator-workspace   
PS D:\antigravity_cli\projects\book-translator-workspace> agy   
Accessing workspace:
D:\antigravity_cli\projects\book-translator-workspace
Do you trust the contents of this project?
Antigravity CLI requires permission to read, edit, and execute files here.
> Yes, I trust this folder
  No, exit

然後將下列提示詞貼給 agy, 讓它建立上面的檔案目錄結構, 這是我叫 Gemini 自動產生的 :

請依照以下結構,幫我在當前工作區建立完整的目錄與檔案:
  1. 目錄與檔案清單:
    • shared/config/glossary.json(請初始化寫入 {},避免 JSON 解析錯誤)
    • shared/data/(快取資料庫目錄)
    • shared/core/(建立 __init__.py、llm_client.py、cache_manager.py、glossary_manager.py、docx_writer.py)
    • project_epub/input/、project_epub/output/ 與 project_epub/run_epub.py
    • project_pdf/input/、project_pdf/output/ 與 project_pdf/run_pdf.py
    • 根目錄下的 requirements.txt
  2. 建立原則:
    • 請透過終端機指令(如 mkdir -p、touch 等)建立好所有資料夾與檔案。
    • translation_cache.db 不需要手動建立空檔案,後續由 cache_manager.py 連線時自動生成即可。
    • 完成後請列出目前目錄樹(tree 或 find)讓我確認。



連續選 1. Yes 確認後它就會將檔案架構建好, 並用 tree 指令顯示結果 :

  ✅ 所有目錄與檔案建立完畢!以下是確認的結構:

    │
    ├───project_epub\
    │   │   run_epub.py
    │   ├───input\
    │   └───output\
    │
    ├───project_pdf\
    │   │   run_pdf.py
    │   ├───input\
    │   └───output\
    │
    └───shared\
        ├───config\
        │       glossary.json          ← 已初始化為 {}
        ├───core\
        │       __init__.py
        │       cache_manager.py
        │       docx_writer.py
        │       glossary_manager.py
        │       llm_client.py
        └───data\                      ← 快取資料庫目錄(translation_cache.db 將由程式自動生成)


(2). 安裝套件 & 實作程式模組 : 

上面已建立了系統架構, 但檔案內容都是空的, 接下來要叫 AI 填寫檔案內容與實作翻譯模組程式內容, 請 Gemini 生成如下提示詞 :

請幫我完成專案的環境安裝與核心程式碼實作:
  1. 安裝相依套件:
    在 requirements.txt 加入 google-genai、ebooklib、beautifulsoup4、python-docx,並在終端機執行安裝。
  2. 實作核心模組 (shared/core/):
    • llm_client.py:使用 Google GenAI SDK 呼叫 Gemini Pro 模型(請預設台灣繁中與技術專業設定,支援指數退避重試)。
    • cache_manager.py:使用 SQLite 維護 shared/data/translation_cache.db,以原文 MD5 為 key,支援中斷後接續翻譯。
    • glossary_manager.py:讀取 shared/config/glossary.json,比對段落關鍵字並注入 Prompt。請順便在 glossary.json 預填幾個常見 Git 術語(如 repository: 儲存庫, commit: 提交, branch: 分支, staging area: 暫存區)。
    • docx_writer.py:預設字型為『微軟正黑體』,支援標題層級、段落行距、表格排版,以及程式碼區塊(灰底 Consolas)。
  3. 實作 project_epub/run_epub.py:
    • 支援讀取 project_epub/input/ 目錄下的 EPUB 檔案。
    • 保留標題層級、正文、表格,特別注意:程式碼區塊(<pre> / <code>)請保持原文輸出不要翻譯。
    • 逐章處理並透過快取儲存,最後產出 .docx 至 project_epub/output/。
完成後請回報。

同樣一路連續選 1. Yes 確認後就會逐一實作程式並驗證, 最後結果如下 :





這樣就完成整個翻譯工廠專案的實作了, 但在最後面有提醒在開始進行 epub 電子書翻譯前要先設定模型的 API Key :

執行翻譯前請先設定 API Key:

    $env:GOOGLE_API_KEY = "你的金鑰"
    python project_epub/run_epub.py

將 .epub 放入  即可開始翻譯。

API Key 通常是放在 .env 隱藏檔裡, 在此專案的 shared/core/llm_client.py 中可用 dotenv 模組的 load_dotenv() 載入, 上面實作好的程式與 requirements.txt 檔也需要修改, 可以用下列提示詞叫 AI 去修改 : 

請在專案根目錄建立 .env 檔案(裡面預留 GEMINI_API_KEY=你的金鑰),並安裝 python-dotenv。同時在 shared/core/llm_client.py 開頭加入 load_dotenv(),讓程式啟動時會自動讀取 .env 裡面的 API Key。順便在 .gitignore 加上 .env 避免金鑰外洩。

一路連續選 1. Yes 確認讓 AI 去改, 完成後結果 : 




檢查專案目錄的根目錄下果然多了一個 .env 檔, 開啟後將自己的 API key 填入存檔, 就可以開始進行電子書翻譯了. 


2. 翻譯 epub 電子書 

將前面下載的 progit.epub 電子書複製到 project_epub/input/ 資料夾下面, 然後用下列提示詞叫 AI 先翻譯前 1~2 章來測試效果 :

我已經將 progit.epub 放到 project_epub/input/ 目錄下了。請先幫我執行翻譯前 2 個章節作為測試,產出 Word 檔到 project_epub/output/,並在終端機隨時回報進度。




但跑著跑著卻碰到免費帳戶每分鐘至多 5 次呼叫的上限 (注意, API 呼叫與訂閱 Google AI Pro 方案是兩個不同的帳戶, API 呼叫需綁信用卡購買 Pay-as-you-go 額度), 用下列提示詞叫 Claude 修改程式 : 

因為免費版 API 有每分鐘呼叫次數限制,請幫我在 llm_client.py 加入速率限制(Rate Limiter),每次呼叫間隔至少 30 秒,並在遇到 429 錯誤時自動等待 60 秒後重試,這樣我可以放著讓它免費跑完整本。

免費額度仍會因碰頂而收到 429 需等候 :




經過兩三次重跑, 終於完成前兩章的翻譯了 : 





開啟 output 資料夾下的 progit_ch01-02_zh.docx, 開啟後檢視內容, 我覺得翻譯品質很不錯 :




沒有留言 :