Chrome插件實現GitHub代碼離線翻譯v0.0.4
續前文Chrome插件實現GitHub代碼翻譯v0.0.3. 添加了對駝峯命名的支持. 由於調用瀏覽器插件-離線英漢詞典進行辭彙翻譯, 因此也不依賴於任何在線翻譯服務.
Chrome插件官網鏈接: https://chrome.google.com/webstore/detail/github代碼翻譯/inicknfojohdbgekdffgcdfiheflpnbh/
支持所有編程語言
因為並不需要對源代碼進行語法分析(之前Java源碼英翻中進展-內測上線中使用了語法分析, 工作量大很多), 因此原則上已經支持所有編程語言的源代碼. 但對一些編程語言效果更好, 見下面效果.
Java: https://github.com/shekhargulati/java8-the-missing-tutorial/blob/master/code/src/main/java/com/shekhargulati/java8_tutorial/ch01/BasicCalculator.java
Python: https://github.com/swaroopch/byte-of-python/blob/master/programs/oop_subclass.py
C: https://github.com/kion-dgl/DashGL-GTK-Astroids-Tutorial/blob/master/01_Open_a_Window/main.c 接下去添加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])/);
}
推薦閱讀: