Skip to main content

Simplified/HK Traditional to Taiwan Traditional Chinese Converter

Project description

ZHTW

簡轉繁台灣用語轉換器 | Simplified to Traditional Chinese (Taiwan) Converter

CI Python License: MIT

rajatim 出品

將程式碼和文件中的簡體中文轉換為台灣繁體中文用語。

特色

  • 高效能 - Aho-Corasick 演算法,萬級術語秒級掃描
  • 完全離線 - 不傳送任何資料到外部伺服器
  • 可擴充詞庫 - JSON 格式,易於維護和貢獻
  • 精準轉換 - 術語表優先,避免過度轉換
  • CI/CD 友善 - JSON 輸出,易於整合
  • 忽略註解 - 支援 zhtw:disable 跳過特定程式碼

安裝

pip install zhtw

或從原始碼安裝:

git clone https://github.com/rajatim/zhtw.git
cd zhtw
pip install -e .

快速開始

# 檢查模式(只報告,不修改)
zhtw check ./src

# 修正模式(自動修改檔案)
zhtw fix ./src

# JSON 輸出(CI/CD 整合)
zhtw check ./src --json

# 使用自訂詞庫
zhtw fix ./src --dict ./my-terms.json

# 排除目錄
zhtw check ./src --exclude node_modules,dist

# 只處理簡體
zhtw check ./src --source cn

# 只處理港式
zhtw check ./src --source hk

# 模擬執行(不實際修改)
zhtw fix ./src --dry-run

# 顯示詞庫統計
zhtw stats

# 驗證詞庫品質
zhtw validate

輸出範例

📁 掃描 ./src

📄 src/components/Header.tsx
   L12:5: "用户" → "使用者"
      ...顯示用户資訊...

📄 src/utils/api.ts
   L8:10: "网络" → "網路"
      ...檢查网络連線...

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
⚠️  發現 2 處問題(2 個檔案)
   掃描: 150 個檔案 (跳過 45 個無中文檔案)

詞庫格式

{
  "version": "1.0",
  "description": "自訂詞庫說明",
  "terms": {
    "文档": "文件",
    "代码": "程式碼",
    "软件": "軟體"
  }
}

內建詞庫

來源 類別 詞彙數 說明
CN base 151 簡體基礎詞彙
CN it 132 IT/程式術語
CN business 42 商業術語
HK base 42 港式基礎詞彙
HK tech 19 港式科技術語

總計:386 個詞彙

忽略註解

在程式碼中使用註解來跳過特定內容的檢查:

# 忽略當前行
user_info = "用户信息"  # zhtw:disable-line

# 忽略下一行
# zhtw:disable-next
simplified = "软件"

# 忽略區塊
# zhtw:disable
test_data = [
    "软件",
    "硬件",
    "网络",
]
# zhtw:enable

支援各種註解風格:#///* */<!-- -->

CI/CD 整合

GitHub Actions

- name: Check Traditional Chinese
  run: |
    pip install zhtw
    zhtw check ./src --json > result.json
    if [ $? -ne 0 ]; then
      echo "發現簡體中文用語,請修正"
      exit 1
    fi

Jenkins

stage('繁體中文檢查') {
    steps {
        sh 'pip install zhtw'
        sh 'zhtw check . --json > terminology-report.json'
    }
}

JSON 輸出格式

{
  "total_issues": 3,
  "files_with_issues": 2,
  "files_checked": 150,
  "files_modified": 0,
  "files_skipped": 45,
  "status": "fail",
  "issues": [
    {
      "file": "src/components/Header.tsx",
      "line": 12,
      "column": 5,
      "source": "用户",
      "target": "使用者"
    }
  ]
}

為什麼不用 OpenCC?

OpenCC 會過度轉換一些在台灣已經正確的詞彙:

原文 OpenCC 結果 正確(台灣)
權限 許可權 權限
設備 裝置 設備
視頻 視訊 影片

ZHTW 使用精確的術語表,只轉換明確定義的詞彙,避免這類問題。

開發

# 安裝開發依賴
pip install -e ".[dev]"

# 執行測試
pytest

# 執行 lint
ruff check .

路線圖

  • v1.0 - 基礎 CLI + 詞庫
  • v1.5 - 統計報告 + 詞庫驗證 + 忽略註解
  • v2.0 - LLM 輔助詞彙探索
  • v3.0 - 本地模型上下文感知

License

MIT License


rajatim 出品

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

zhtw-1.5.0.tar.gz (22.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

zhtw-1.5.0-py3-none-any.whl (20.9 kB view details)

Uploaded Python 3

File details

Details for the file zhtw-1.5.0.tar.gz.

File metadata

  • Download URL: zhtw-1.5.0.tar.gz
  • Upload date:
  • Size: 22.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for zhtw-1.5.0.tar.gz
Algorithm Hash digest
SHA256 09a6de14b3a8461517443af0ad5054a587e985fe3a7ffe72572c2b419514266b
MD5 e40d7eabc451dcd35f69c8e5354933ec
BLAKE2b-256 c903d8dc9bc0ff544fb329ac27a2aee4738e89cae803e1ad983c2722c3b215d1

See more details on using hashes here.

File details

Details for the file zhtw-1.5.0-py3-none-any.whl.

File metadata

  • Download URL: zhtw-1.5.0-py3-none-any.whl
  • Upload date:
  • Size: 20.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for zhtw-1.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f99221f4e7b829fd06fb7007305b2b2b9bc35e5297b0343f1ecba070429a757b
MD5 d6138f482c9524dbda1d2c4623d81377
BLAKE2b-256 b5463ae8ce0560cb767a8dea96dd416837e0d2b493d345ca97ffd50525ec27e0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page