續前文Chrome插件實現GitHub代碼翻譯v0.0.3. 添加了對駝峯命名的支持. 由於調用瀏覽器插件-離線英漢詞典進行辭彙翻譯, 因此也不依賴於任何在線翻譯服務.

Chrome插件官網鏈接: https://chrome.google.com/webstore/detail/github代碼翻譯/inicknfojohdbgekdffgcdfiheflpnbh/

支持所有編程語言

因為並不需要對源代碼進行語法分析(之前Java源碼英翻中進展-內測上線中使用了語法分析, 工作量大很多), 因此原則上已經支持所有編程語言的源代碼. 但對一些編程語言效果更好, 見下面效果.

Java: github.com/shekhargulat

Python: github.com/swaroopch/by

C: github.com/kion-dgl/Das 接下去添加C的關鍵詞翻譯後, include/char就不會那麼坑了.

階段小結

翻譯方面做下去會遇到和自然語言機器翻譯類似的問題. 當然會比自然語言好一些, 因為命名往往使用的是最正式(非口語化)的辭彙, 連接詞的使用也較少, 而且基本沒有完整語句. 即便如此, 也會存在辭彙的歧義, 比如詞性問題, 比如頂圖例子中BasicCalculator, Basic在內建詞典中有名詞/形容詞幾種詞義:

n. 基本原理, 要素, 基本規律
a. 基本的, 鹼性的
(計算機)BASIC語言

現在的演算法是直接用首個詞義, 就是名詞的"基本原理". 再比如"tell"在沒有後接名詞時應該是取vi釋義:

vt. 告訴, 說, 吩咐, 斷定, 知道
vi. 講述, 泄密, 告發, 表明

改進就需要加入自然語言處理的方法.

源碼

文本處理.js中駝峯命名拆分:

function 拆分駱駝命名(命名) {
// 參考: https://stackoverflow.com/a/7599674/1536803
return 命名.split(/(?<=[a-z])(?=[A-Z])|(?<=[A-Z])(?=[A-Z][a-z])/);
}

推薦閱讀:

相關文章