Python 本身欠缺語言擴充性的功能,本身的 Parser 也不能處理 unicode。可以考慮的套件有 EasyExtend, Logix, 還有 PyPy ,但是我這裡打算自己寫一個,簡單的轉換器。關於中文編譯訊息顯示的部份,應該用普通 L10n 來處理。 我們只處理程式碼的轉換。比較理想的是 AST 到 AST 的轉換,但是 python 的 parser 是 c 寫的。還好 python 有提供一個 tokenize 模組。雖然這個也不能處理 unicode,但是我們可以作下面一個簡單的 hack: # 不用這個hack 也行,把 tokenize.py 直接 copy 過來,然後修改 import re from token import * import tokenize tokenize.pseudoprog=re.compile(tokenize.Whitespace + tokenize.group(tokenize.PseudoExtras, tokenize.Number, tokenize.Funny, tokenize.ContStr, r"\w+"),re.UNICODE) # end of hack 這樣, unicode 的 token 會被看成是 operator 或 name。我們就能不用擔心 " , ' """ , \ 這些東西,很簡單的翻譯,然後組合成原始碼。這個部份跟 hpython 很像,不過他的程式碼寫了一大堆,而起跟中蟒一樣都寫死在程式裡。 我們其實只要用一個 translation_dict 就能翻譯了。