流亡黯道 POE繁體中文與英文對照表 for NotebookLM

流亡黯道(Path of Exile)許多流派(Build)資料都是英文,若直接交由 NotebookLM 分析後,常會出現翻譯出來的技能、物品或天賦名稱,讓你完全不知道POE繁體中文版中對應的名稱是什麼。因此,我利用 AI 寫了一個 Python 程式,將 POECharm 中的繁體中文翻譯 CSV 檔轉換為 Markdown (.md) 格式,並加入有利於AI檢索增強生成(RAG)的結構描述。只要將此三個檔案.md檔拉入你的NotebookLM,就能有效改善AI自行亂翻一通的問題了!

下載: POE繁體中文與英文對照表 for NotebookLM (請解壓縮後,再上傳至NotebookLM或其他AI)
   ※ 翻譯轉換來源於「Chuanhsing/POECharm2」/Data/Translate/zh-rTW 目錄中的csv檔

如果您想要自行進行合併及轉換,原始碼如下,存成.py檔,在PoeCharm2的/Data/Translate/zh-rTW目錄下執行即可!

import os
import glob
import csv

current_dir = os.path.dirname(os.path.abspath(__file__))
os.chdir(current_dir)

FILE_DESCRIPTIONS = {
    "Flask_tag.csv":              "藥劑 (Flask) 詞條標籤與分類翻譯",
    "Gems_data.txt.csv":          "技能寶石 (Gem) 核心數值與機制資料翻譯",
    "Gems_tag.csv":               "技能寶石 (Gem) 標籤分類翻譯",
    "GUI.csv":                    "使用者介面 (GUI) 與系統操作文字翻譯",
    "Items_Accessories.txt.csv":  "飾品 (Accessories) 詞條 - 包含戒指、護身符、腰帶",
    "Items_Armour.txt.csv":       "防具 (Armour) 詞條 - 包含頭盔、胸甲、手套、鞋子、盾牌",
    "Items_Gems.txt.csv":         "技能寶石 (Gems) 作為物品掉落或顯示時的名稱翻譯",
    "Items_Jewels.txt.csv":       "珠寶 (Jewels) 與星團珠寶 (Cluster Jewels) 詞條翻譯",
    "Items_Oils.csv":             "聖油 (Oils) 類物品與塗油 (Anoint) 系統翻譯",
    "Items_Weapons.txt.csv":      "武器 (Weapons) 詞條 - 包含單雙手近戰武器、弓、法杖",
    "Monsters.csv":               "怪物 (Monsters) 名稱、特殊詞綴與能力翻譯",
    "passiveTree.csv":            "天賦樹 (Passive Tree) 節點名稱與整體結構翻譯",
    "statDescriptions.csv":       "屬性詞綴詳細說明 (Stat Descriptions) 翻譯",
    "stats_words_prefix.csv":     "物品詞綴之前綴 (Prefix) 單字與規則翻譯",
    "stats_words_suffix.csv":     "物品詞綴之後綴 (Suffix) 單字與規則翻譯",
    "tree_dn.csv":                "天賦樹節點顯示名稱 (Tree Display Names) 翻譯",
    "tree_sd.csv":                "天賦樹節點屬性描述 (Tree Stat Descriptions) 翻譯",
    "Uniques.txt.csv":            "傳奇物品 (Unique Items) 專屬名稱與特殊詞綴翻譯",
    "Z.csv":                      "其他未分類或系統底層的雜項 (Miscellaneous) 文字翻譯",
}

MAX_LINES_PER_FILE = 30000
file_part = 1
current_lines = 0

def open_new_file(part_num):
    filename = f"POE繁體中文與英文對照表_Part{part_num}.md"
    f = open(filename, "w", encoding="utf-8")
    f.write(f"# Path of Exile (POE) 繁體中文與英文對照表 (Part {part_num})\n\n")
    return f, filename

csv_files = sorted(glob.glob("*.csv"))
if not csv_files:
    print("當前目錄找不到任何 .csv 檔案。")
    exit(1)

out, out_name = open_new_file(file_part)
print(f"建立檔案: {out_name}")

for fname in csv_files:
    desc = FILE_DESCRIPTIONS.get(fname, "未分類翻譯資料")
    out.write(f"## {fname}:{desc}\n\n")
    current_lines += 2

    try:
        with open(fname, "r", encoding="utf-8-sig") as f:
            reader = csv.reader(f)
            headers = next(reader, None)

            if headers:
                clean_headers = [str(h).replace('\n', ' ') for h in headers]
                header_md = "| " + " | ".join(clean_headers) + " |\n|" + "|".join(["---"] * len(headers)) + "|\n"
                out.write(header_md)
                current_lines += 2

            for row in reader:
                if any(cell.strip() for cell in row):
                    clean_row = [str(cell).replace('\n', '<br>').replace('|', '\|') for cell in row]
                    out.write("| " + " | ".join(clean_row) + " |\n")
                    current_lines += 1

                    # 達到行數上限,進行切檔
                    if current_lines >= MAX_LINES_PER_FILE:
                        out.close()
                        file_part += 1
                        out, out_name = open_new_file(file_part)
                        print(f"建立檔案: {out_name}")
                        current_lines = 0

                        # 換檔後重新寫入次標題與表頭,防止表格結構斷裂
                        out.write(f"## {fname}:{desc} (接續)\n\n")
                        if headers:
                            out.write(header_md)
                        current_lines += 4

        print(f"✓ 成功轉換: {fname}")
    except Exception as e:
        out.write(f"> 讀取錯誤: {e}\n\n")
        print(f"✗ 轉換失敗: {fname} 錯誤: {e}")

if not out.closed:
    out.close()

print(f"\n✅ 轉換完成!共生成 {file_part} 個檔案。請將這些 Part 檔案全數上傳至 NotebookLM。")

發佈留言