Chrome插件實現GitHub代碼翻譯v0.0.3

2018-10-17-github源碼翻譯

續前文瀏覽器插件實現GitHub代碼翻譯原型演示, 通過調用瀏覽器插件-離線英漢詞典的批量查詞接口, 實現了源碼的初步命名直譯.

源碼庫仍在: program-in-chinese/webextension_github_code_translator

還缺失的功能: 駝峯命名法拆分. 比如圖中所示, BasicCalculator未翻譯.

語言關鍵詞詞典.js. 內建詞典包括常用關鍵詞, 以及Java和Python的專用關鍵詞:

var 通用關鍵詞 = {
  'assert': "斷言",
  'import': "導入",
  "if": "如果",
  "else": "否則",
  "while": "每當",
  "for": "對於",
  "in": "在",
  "switch": "岔",
  "case": "分支",
  "break": "跳出",
  "continue": "繼續",
  "return": "返回",
  "throw": "拋出",
  "finally": "善後",
  'class': "類別",
  'is': "爲"
}

var 專用關鍵詞 = {
  /*
  參考 http://zetcode.com/lang/python/keywords/
  import keyword
  print("Python keywords: ", keyword.kwlist)
  */
  "python": {
    'False': "假",
    'None': "空",
    'True': "真",
    'and': "且",
    'as': "as",
    'def': "定義",
    "del": "刪除",
    'elif': "否則如果",
    'except': "except",
    'from': "從",
    'global': "全局",
    'lambda': "lambda",
    'nonlocal': "nonlocal",
    'not': "不",
    'or': "或",
    'pass': "輪空",
    'raise': "拋出",
    'with': "with",
    'yield': "產出"
  },
  // 參考 https://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html
  "java": {
...
  }
}

釋義處理.js. 查詞後, 選取一個"合適"的詞義, 這裏還很粗糙:

function 首選(中文釋義, 所有詞性) {
  if (!中文釋義) {
    return;
  }
  var 首選詞義 = "";
  var 詞性到釋義 = 分詞性(中文釋義, 所有詞性);
  //console.log(詞性到釋義);
  if (詞性到釋義[詞性_計算機]) {
    首選詞義 = 詞性到釋義[詞性_計算機][0];
  } else {
    // 取第一個詞性的第一釋義
    for (var 詞性 in 詞性到釋義) {
      首選詞義 = 詞性到釋義[詞性][0];
      break;
    }
  }
  return 首選詞義;
}

主界面.js中進行翻譯的主體部分:

function 翻譯() {
  var 原代碼拷貝 = document.getElementsByTagName('table')[0];
  var 頂節點 = 原代碼拷貝.parentElement;
  var 編程語言 = 取編程語言(頂節點);
  var span字段列表 = 原代碼拷貝.getElementsByTagName('span');
  var 文本字段列表 = 取子文本節點(document);

  關鍵詞詞典 = 取所有關鍵詞(編程語言);
  // 合併兩個部分
  添加所有待查詞(span字段列表);
  添加所有待查詞(文本字段列表);

  chrome.runtime.sendMessage(
    "ndifefelacmidghjaehmhicbchbidhpe",
    命名詞典,
    function(返回值) {
      命名詞典 = 返回值.所有釋義;
      for (varin 命名詞典) {
        命名詞典[] = 常用命名[] ? 常用命名[] : 首選(命名詞典[], 詞性);
      }
      翻譯字段列表(span字段列表);
      翻譯字段列表(文本字段列表);

      頂節點.insertBefore(document.createTextNode("編程語言: " + 編程語言), 原代碼拷貝);
    }
  );
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章