diff --git a/QUICKSTART.md b/QUICKSTART.md new file mode 100644 index 0000000..1d9ab48 --- /dev/null +++ b/QUICKSTART.md @@ -0,0 +1,139 @@ +# 快速上手 + +## 1. 安裝瀏覽器擴充套件 + +三選一皆可: + +- [ScriptCat](https://scriptcat.org/)(推薦,開源) +- [Tampermonkey](https://www.tampermonkey.net/) +- [Violentmonkey](https://violentmonkey.github.io/) + +## 2. 安裝腳本 + +### 方法 A:直接貼 + +1. 開啟 ScriptCat / Tampermonkey 管理面板 +2. 點「建立新腳本」 +3. 把 `github-zh-tw.user.js` 全文貼上 +4. 儲存(Cmd/Ctrl + S) + +### 方法 B:從網址安裝 + +把腳本掛到任何 raw 檔案網址(GitHub Gist、Gitea raw URL、自架 web server)然後進該網址,擴充套件會自動跳出安裝視窗。 + +## 3. 驗證 + +打開 https://github.com ,側欄應該變成: + +``` +Code → 原始碼 +Issues → 問題 +Pull requests → 拉取請求 +62.8k stars → 6.3 萬 星標 +3 days ago → 3 天前 +``` + +沒作用?看本檔最後 [常見問題](#常見問題)。 + +--- + +## 自訂翻譯 + +### 新增一個詞 + +打開腳本,找 `TRANSLATION_MAP`: + +```js +const TRANSLATION_MAP = new Map([ + ['Code', '原始碼'], + // ... + ['My custom term', '我的自訂詞'], // ← 加在這裡 +]); +``` + +存檔後重新載入 GitHub 頁面即可。 + +### 長詞優先規則 + +若你加了 `Open pull request`,就算已經有 `Open` → `開啟中`,長詞會先被匹配。所以遇到半翻情況(像 `開啟 pull request`),直接加整句進去。 + +### 多種譯法選擇 + +同一個英文詞在不同語境可能想要不同翻譯(例如 `Open` 當 tab vs. 動詞)。**做不到**—regex 是大小寫不敏感的。 +取捨原則:保留使用頻率高、不翻會更奇怪的那個意思。 + +--- + +## 自訂「不翻」範圍 + +### 不想翻某個 class / 元素 + +打開腳本找 `SKIP_CONTEXT_SELECTOR`,加一行: + +```js +const SKIP_CONTEXT_SELECTOR = [ + // ... + '.my-custom-dont-translate', // ← 加這 + '[data-no-translate]', // 或用屬性 +].join(','); +``` + +該元素與所有子孫的文字節點都會被跳過,但**它的屬性(如 `aria-label`)仍會翻**;若連屬性都不想翻,請從 `ATTR_SELECTOR` 那邊獨立處理(罕見)。 + +### 不想翻整個網域 / 路徑 + +改腳本開頭的 `@match`: + +```js +// @match https://github.com/* +// @match https://github.com/yourorg/* ← 只翻這個 org +// @exclude https://github.com/settings/* ← 排除設定頁 +``` + +--- + +## 更新 + +從來源倉庫複製最新 `github-zh-tw.user.js` 全文,貼回 ScriptCat / Tampermonkey 的編輯器覆蓋儲存。不需要重裝擴充套件。 + +--- + +## 常見問題 + +### Q1:安裝後沒變化 +- 確認 ScriptCat / Tampermonkey 擴充套件是**開啟**狀態 +- 確認腳本在 `https://github.com/*` 頁面顯示為「已執行」 +- 重新載入頁面(Cmd/Ctrl + Shift + R 強制重載) + +### Q2:某些詞還是英文 +- 可能是剛加入 GitHub 的新 UI,詞庫還沒收錄 → 依上方「新增一個詞」加入 +- 可能是文字在被跳過的區塊(README、程式碼、Issue 標題…)→ 這是刻意的 + +### Q3:搜尋功能壞了 +原因:`state:open` 這類過濾語法被翻。這不該發生 — 若發生,檢查是否有第三方腳本干擾,或 GitHub 改版了搜尋元件的 class。 +暫時停用腳本可恢復。 + +### Q4:檔名被翻成中文 +原因:GitHub 改版導致檔案列表 class 變動,跳過規則失效。 +修法:檢查該檔名元素的 DevTools,找穩定的 class / 屬性加進 `SKIP_CONTEXT_SELECTOR`。 + +### Q5:效能變慢、Chrome 高 CPU +- 先停用本腳本看是否為本腳本造成 +- 若是,檢查自己是否改過腳本讓 debounce 失效 / MutationObserver 範圍過大 +- 保持預設 `150ms` debounce 通常不會有感卡頓 + +### Q6:看到「Active 分支清單」這種半翻 +詞庫中 `Branches` 被單獨翻了卻沒有整句版本。加整句進 `TRANSLATION_MAP` 即可(長詞會優先匹配)。 + +### Q7:自己伺服器上的 Gitea / GitHub Enterprise 也想用 +改 `@match` 指向你的網域。注意 GHES 的 class 可能與 github.com 有差異,部分跳過規則需要調整。 + +--- + +## 回報 / 建議 + +看到沒翻或誤翻的地方,最快回報方式: + +1. 截圖有問題的頁面 +2. DevTools 右鍵檢查,把該元素的 HTML 片段一起附上 +3. 提 Issue 或直接在詞庫 PR diff --git a/README.md b/README.md new file mode 100644 index 0000000..9dd8eb1 --- /dev/null +++ b/README.md @@ -0,0 +1,137 @@ +# GitHub 中文化 (繁體) + +一份 ScriptCat / Tampermonkey 用的 UserScript,把 GitHub 介面轉成台灣用語的繁體中文,不動使用者內容(檔名、commit 訊息、Issue 標題、程式碼、README)。 + +> 想快速裝起來用?看 [`QUICKSTART.md`](./QUICKSTART.md) +> 想看一路怎麼做出來的?看 [`SUMMARY.md`](./SUMMARY.md) + +## 檔案 + +| 檔案 | 用途 | +|---|---| +| `github-zh-tw.user.js` | 腳本本體(貼到 ScriptCat / Tampermonkey) | +| `README.md` | 參考手冊(本檔)— 功能、架構、規則 | +| `QUICKSTART.md` | 安裝與自訂操作指南 | +| `SUMMARY.md` | 開發故事線、設計取捨 | + +## 功能概覽 + +| 類別 | 例子 | +|---|---| +| 導覽列 | `Code` / `Issues` / `Pull requests` / `Actions` / `Security` / `Insights` | +| 倉庫側欄 | `About` / `Releases` / `Contributors` / `Sponsor this project` | +| Branches 頁 | `Default` / `Active` / `Stale` / `All` / `Behind` / `Ahead` | +| Issue / PR 列表 | `Sort by` / `Newest` / `Oldest` / `No results found` | +| 數字縮寫 | `62.8k` → `6.3 萬`、`1.2M` → `120 萬`、`7,800` 千分號 | +| 相對時間 | `3 days ago` → `3 天前`、`last month` → `上個月` | +| 頁尾 / 無障礙 | `Terms` / `Privacy` / `Footer navigation` / `GitHub Homepage` | + +## 不翻什麼(刻意) + +| 內容類別 | 選擇器依據 | +|---|---| +| 檔名、資料夾名 | `.react-directory-filename-column`、`a[href*="/blob/"]`、`a[href*="/tree/"]` | +| Commit 訊息 | `a[href*="/commit/"]`、`[data-testid="latest-commit-details"]` | +| Repo 描述 | `.BorderGrid-cell > p`、`.f4.my-3`、`[itemprop="about"]` | +| Topic 標籤 | `a.topic-tag`、`.topic-tag-link` | +| 使用者 / 組織名 | `a[data-hovercard-type="user"]`、`a[data-hovercard-url*="/users/"]` | +| README(渲染後) | `.markdown-body` | +| 程式碼檢視 | `.blob-code-inner`、`.highlight`、`.react-code-lines` | +| Issue / PR 標題 | `.markdown-title`、`.js-issue-title` | +| 搜尋語法(`is:issue state:open`) | `[role="searchbox"]`、`[role="combobox"]`、`.pl-c1` 等 | +| Labels | `.IssueLabel`、`.Label` | +| 編輯器、程式碼輸入 | ``、`
`、``、`