Chrome插件实现GitHub代码翻译v0.0.3

简介: 实现Chrome插件, 基于本地词典数据, 提供Github在线源码翻译功能. Show how to translate English source code to Chinese on Github pages.

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 (var 词 in 命名词典) {
        命名词典[词] = 常用命名[词] ? 常用命名[词] : 首选(命名词典[词], 词性);
      }
      翻译字段列表(span字段列表);
      翻译字段列表(文本字段列表);

      顶节点.insertBefore(document.createTextNode("编程语言: " + 编程语言), 原代码拷贝);
    }
  );
}
相关文章
|
2月前
|
Web App开发 人工智能 IDE
从痛点到解决方案:为什么我开发了Chrome元素截图插件
传统的截图方式要么截取整个页面然后手动裁剪,要么使用浏览器自带的截图功能,但效果都不理想。特别是当内容包含SVG元素或复杂样式时,截图质量和速度、便捷性往往不尽如人意。
145 4
|
2月前
|
Web App开发 人工智能 前端开发
产品发布策略:如何让Chrome插件在竞争激烈的市场中脱颖而出
Chrome Web Store每天新增很多个插件。插件刚发布,用户只有我自己,如何在这样的红海市场中找到自己的位置,是我一直在思考的问题。
101 0
|
3月前
|
人工智能 自然语言处理 安全
Milvus x n8n :自动化拆解Github文档,零代码构建领域知识智能问答
本文介绍了在构建特定技术领域问答机器人时面临的四大挑战:知识滞后性、信息幻觉、领域术语理解不足和知识库维护成本高。通过结合Milvus向量数据库和n8n低代码平台,提出了一种高效的解决方案。该方案利用Milvus的高性能向量检索和n8n的工作流编排能力,构建了一个可自动更新、精准回答技术问题的智能问答系统,并介绍了部署过程中的可观测性和安全性实现方法。
|
3月前
|
存储 人工智能 自然语言处理
让你拥有一个AI大脑,这个32.1k Github项目是你不错的选择,支持PDF、Markdown、代码、视频成为你的知识内容
Quivr 是开源全栈 RAG 平台,助你打造“第二大脑”,支持多文档类型与多种 LLM,实现智能搜索与聊天。具备语义检索、本地部署、隐私保护等功能,适用于个人知识管理与企业知识库,界面简洁易用,是高效智能问答的理想选择。
196 0
|
6月前
|
JSON JavaScript API
MCP 实战:用配置与真实代码玩转 GitHub 集成
MCP 实战:用配置与真实代码玩转 GitHub 集成
1424 4
|
9月前
|
人工智能 IDE 编译器
idea如何使用AI编程提升效率-在IntelliJ IDEA 中安装 GitHub Copilot 插件的步骤-卓伊凡
idea如何使用AI编程提升效率-在IntelliJ IDEA 中安装 GitHub Copilot 插件的步骤-卓伊凡
1882 15
idea如何使用AI编程提升效率-在IntelliJ IDEA 中安装 GitHub Copilot 插件的步骤-卓伊凡
|
8月前
|
人工智能 网络安全 开发工具
vscode代码推送到github库菜鸡专用教程
vscode代码推送到github库菜鸡专用教程
|
10月前
|
Devops Shell 网络安全
git使用之如何将一套代码同时推送至github|gitee|gitcode|gitlab等多个仓库-含添加ssh-优雅草央千澈完美解决-提供整体提交代码
git使用之如何将一套代码同时推送至github|gitee|gitcode|gitlab等多个仓库-含添加ssh-优雅草央千澈完美解决-提供整体提交代码
453 16
git使用之如何将一套代码同时推送至github|gitee|gitcode|gitlab等多个仓库-含添加ssh-优雅草央千澈完美解决-提供整体提交代码
|
10月前
|
Web App开发 存储 开发者
Chrome 插件上架发布全流程指南
浏览器插件开发完以后,要发布到 Chrome Web Store上,也是需要颇费一番周折的,本文就从注册账号开始,一直到最后发布上架的全流程进行指导,希望帮助你提供一些经验,避免踩坑,耗时耗力。
905 8