# REVIEW-PITFALLS.md

給未來的 AI 代理 / 譯者:把 zh-TW 技術文章翻成 en / ja / zh-CN 時,
重複踩過的坑。這份檔案記錄實際 review 出過的 bug 與判斷依據,
避免下次又用「全域 regex 批次轉換」自信地引入同一類錯誤。


# TL;DR — 三大類反覆出現的 bug

  1. ja 譯文字元錯誤:用「繁體中文 → 日文新字體」的 map,但 map 參雜了
    「繁體中文 → 簡體中文」的條目(日文根本不這樣寫)。最經典是 質→质
    兩→两簡→简
  2. zh-CN 譯文殘留繁體字:prose 中漏轉,或反過來把專有名詞(書名、人名)
    誤轉成簡體。
  3. prose 中未譯內容:markdown 連結文字 [...]<img alt="...">、中文成語
    直譯成日文(不通順)。

# 一、日文漢字轉換(最容易出錯的區塊)

# 1.1 三個書寫系統不要搞混

系統例:「質」例:「兩/两」例:「簡/简」
繁體中文(zh-TW 原文)
簡體中文(zh-CN 目標)
日文新字體(ja 目標)(不簡化)(不簡化)

關鍵陷阱:「日文新字體 ≠ 簡體中文」。有些字日文有簡化(學→学氣→気),
很多字日文不簡化
...)。
直接套「繁→簡」的 map 會把這些字轉成簡體中文,在日文裡是錯字。

# 1.2 權威對照表

不要自己心算、不要從記憶拼湊 map。唯一可信的來源是「常用漢字新舊字體對照表」:

# 1.3 驗證過的正確轉換(節選,来自官方對照表)

學→学 氣→気 數→数 殘→残 體→体 兩→両(注意是 不是
變→変 經→経 傳→伝 寫→写 廣→広 樣→様 點→点 發→発 覺→覚
營→営 燒→焼 醫→医 鐵→鉄 聲→声 賣→売 畫→画 帶→帯 專→専
號→号 觀→観 說→説 讀→読 續→続 關→関 餘→余 與→与 嚴→厳
靈→霊 靜→静 顯→顕 驗→験 髮→髪 鬥→闘 攝→摂 釋→釈 錢→銭
綠→緑 緣→縁 繼→継 舉→挙 舊→旧 處→処 蟲→虫 雙→双 雜→雑
齒→歯 澤→沢 濟→済 壓→圧 鹽→塩 腦→脳 膽→胆 臟→臓 廳→庁
產→産 權→権 歸→帰 歷→歴 淺→浅 淚→涙 團→団 圓→円 圖→図
擇→択 據→拠 收→収 齡→齢 恆→恒 惡→悪 惱→悩 懷→懐 戀→恋
戰→戦 戲→戯 戶→戸 拜→拝 單→単 譯→訳 讓→譲 豐→豊 邊→辺
閱→閲 狀→状 獨→独 效→効 區→区 國→国 會→会 當→当 實→実
參→参 險→険 擔→担 來→来 屢→屡

# 1.4 實際踩過的錯(勿再犯)

錯誤轉換為什麼錯正確
質→质 是簡體中文,日文用 保持
兩→两 是簡體中文,日文新字體是 兩→両
簡→简 是簡體中文,日文用 保持
繁→繁(這條沒錯,但常被誤列為需轉換)保持

# 1.5 重要:日文舊字體 ≠ 繁體中文

官方對照表的「舊字體」欄用的是日本舊字體,跟繁體中文字形可能不同

所以「繁中 → 日新 仍是對的(不管舊字長怎樣,新字就是 )。
判斷對錯只看目標新字是否為合法日文新字體,不要看「舊字欄有沒有列繁中字形」。


# 二、批次轉換的根本問題(process-level)

# 2.1 「全域 regex 過度信賴」的症狀

症狀清單(review 多次抓到):

# 2.2 根因:自己拼湊 map 而非引用權威表

每次 review 後「補一條規則」,map 越長越不可靠。正確做法:

  1. 一次引用完整官方對照表(見 1.2),不要逐次 review 補漏。
  2. 保留清單要完整列舉所有 proper noun,不能只列「記得的」。
  3. 轉換後用獨立掃描驗證:對每個轉過的字,反查官方表確認目標字是合法日文。

# 2.3 建議流程

1. 從官方對照表匯入完整 trad→jp map(一次)
2. 用 grep / lint 找出所有 proper noun(書名清單、人名、產品名)→ 加入保留清單
3. 批次轉換 prose(跳過 code block、inline code、markdown 連結 [text]、img alt)
4. 轉完後用「目標字是否在官方新字體集合」反查,挑出非法轉換
5. 人工抽檢(特別是成語、網路用語、動詞搭配)

# 三、zh-CN 譯文的繁簡陷阱

# 3.1 prose 殘留繁體

常見漏網:常態分配(應 常态分配)、這里(混用,應 这里)、
知识點(應 知识点)、樣子(應 样子)。

# 3.2 proper noun 不可轉

reviewer 對書名「簡繁混雜」的立場是「partially acceptable as proper nouns」——
因為這就是台灣書名原貌。

# 3.3 code block 內的繁體保留

02-framework04-cli05-p5-js10-one-year 等 code block 內的繁體中文
註解(如 // 或是已經沒這麼潮的寫法、timeline block),按 AGENTS.md rule 2
完全保留,不要轉。


# 四、prose 未譯內容

# 4.1 markdown 連結文字 [text](url)

[Warp 支援的指令][筆者的推薦連結] 這類連結文字是 prose,要翻。
外部文章標題[簡易 Regular Expression 入門指南 - Huli])是該文章的
真實標題,保留原文較準確(reviewer 也標 debatable)。

# 4.2 <img alt="...">

alt 是圖片無法載入時的替代文字 + 螢幕閱讀器朗讀內容,屬於人類可讀文字,要翻。

# 4.3 中文成語 / 網路用語直譯到日文不通

原文直譯(錯)建議
(網路用語「很棒/羨慕」)香る(日文是「飄香」,意思完全不同)意譯,如 魅力的な
煩瑣麗麗(不是日文詞)煩雑 / 複雑 / ややこしい
履試不爽(每次都這樣)屢試不爽(中文成語直接搬)毎回確実に
拼事業的心態事業を拼っているマインド 不是日文動詞)事業に打ち込むというマインド
免費免費(中文寫法)無料(日文自然說法)

# 4.4 連體修飾的語感

述語動詞直接連名詞(事業に打ち込むマインド)聽起來卡,
〜というマインド(那樣的心態)或 〜しているマインド 更自然。


# 五、AGENTS.md rule 2 的正確應用

# 5.1 code block 與 inline code 完全保留

fenced code block(```)和 inline code(`` )內容一字不動

# 5.2 但 prose 中的錯字要修

Rasycast(prose 中的錯字,應 Raycast)要修,並同步所有譯文。
判斷準則:在 backtick 內 → 保留;在散文中 → 修


# 六、原文結構變更的注意事項

# 6.1 原文是英文的情況(如 08、11)

08-vue-composition-api-and-react-hook11-vim-for-beginners 原文是全英文
(作者當年練習英文寫作)。處理方式(需與 maintainer 確認):

# 6.2 原文 frontmatter 的無效日期

07-could-i-be-a-mentor-enough.md 原文 date: 2022-06-31 是無效日曆日期
(6 月只有 30 天)。守門腳本會擋下。需改成 2022-06-30(與 maintainer 確認)。


# 七、review 反覆出問題的深層原因

每次 review 都抓到「上一輪引入的新 bug」。根因是:

  1. 「修完一輪就急著 commit」,沒有用獨立工具反查。
  2. 「commit message 寫得很肯定」,但實際轉換用的 map 沒驗證過。
  3. 「reviewer 抓到的我修,reviewer 沒抓的我假設沒問題」——但 faulty map 會
    在 reviewer 沒看的地方默默引入錯誤。

# 建議的自我驗證清單(commit 前跑)

□ 對每個轉過的字,反查官方新字體表,確認目標字合法
□ grep 確認保留清單裡的 proper noun 沒被動到
□ grep 確認 code block 內容與原文逐字一致
□ 抽檢 3-5 段 prose,確認段落內用字一致(沒有「隔壁字沒轉」的矛盾)
□ check-translations.js --all 通過

# 附錄:這次(commit ddcc906)具體引入的 bug 清單

供未來 reference,這些是 commit ddcc906 實際引入、被 review 抓到的問題:

# Critical

  1. 質→质 共 10 處( 是日文, 是簡體中文):
    01-article.ja.md:14202-framework.ja.md:30,7804-cli.ja.md:50
    09-how-to-speed-up-typing.ja.md:9110-one-year...:230
    13-boshiamy.ja.md:3014-2023-wrapped.ja.md:36
    15-raycast-101.ja.md:210,212
  2. 兩→两 共 3 處( 是簡體,日文新字體是 ):
    14-2023-wrapped.ja.md:94,9615-raycast-101.ja.md:43
  3. Huli 文章標題被誤轉14-2023-wrapped.ja.md:68,263
    保險科技會社 → 保険科技会社),與 commit message 矛盾
  4. 大量未轉來→来 是日文新字體最常見轉換,map 完全漏掉):
    14-2023-wrapped.ja.md:50,88,90,92,104,160,213

# Medium(語感)

  1. 香るエンジニア(L66)— 是網路用語,香る 是飄香,需意譯
  2. 設定が麗麗しすぎる(L149)— 麗麗 不是日文詞,應 煩雑
  3. 屢試不爽(L108)— 中文成語直接搬,應意譯 毎回確実に
  4. 事業に打ち込むマインド(L219,223)— 連體修飾卡,
    事業に打ち込むというマインド

# 改對的部分(reference)