经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 软件/图像 » Git » 查看文章
2018-10-17 Chrome插件实现GitHub代码翻译v0.0.3
来源:cnblogs  作者:吴烜  时间:2019/3/11 8:43:45  对本文有异议

2018-10-17-github源码翻译

续前文浏览器插件实现GitHub代码翻译原型演示, 通过调用浏览器插件-离线英汉词典的批量查词接口, 实现了源码的初步命名直译.

源码库仍在: program-in-chinese/webextension_github_code_translator

还缺失的功能: 驼峰命名法拆分. 比如图中所示, BasicCalculator未翻译.

语言关键词词典.js. 內建词典包括常用关键词, 以及Java和Python的专用关键词:

  1. var 通用关键词 = {
  2. 'assert': "断言",
  3. 'import': "导入",
  4. "if": "如果",
  5. "else": "否则",
  6. "while": "每当",
  7. "for": "对于",
  8. "in": "在",
  9. "switch": "岔",
  10. "case": "分支",
  11. "break": "跳出",
  12. "continue": "继续",
  13. "return": "返回",
  14. "throw": "抛出",
  15. "finally": "善后",
  16. 'class': "类别",
  17. 'is': "为"
  18. }
  19. var 专用关键词 = {
  20. /*
  21. 参考 http://zetcode.com/lang/python/keywords/
  22. import keyword
  23. print("Python keywords: ", keyword.kwlist)
  24. */
  25. "python": {
  26. 'False': "假",
  27. 'None': "空",
  28. 'True': "真",
  29. 'and': "且",
  30. 'as': "as",
  31. 'def': "定义",
  32. "del": "删除",
  33. 'elif': "否则如果",
  34. 'except': "except",
  35. 'from': "从",
  36. 'global': "全局",
  37. 'lambda': "lambda",
  38. 'nonlocal': "nonlocal",
  39. 'not': "不",
  40. 'or': "或",
  41. 'pass': "轮空",
  42. 'raise': "抛出",
  43. 'with': "with",
  44. 'yield': "产出"
  45. },
  46. // 参考 https://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html
  47. "java": {
  48. ...
  49. }
  50. }

释义处理.js. 查词后, 选取一个"合适"的词义, 这里还很粗糙:

  1. function 首选(中文释义, 所有词性) {
  2. if (!中文释义) {
  3. return;
  4. }
  5. var 首选词义 = "";
  6. var 词性到释义 = 分词性(中文释义, 所有词性);
  7. //console.log(词性到释义);
  8. if (词性到释义[词性_计算机]) {
  9. 首选词义 = 词性到释义[词性_计算机][0];
  10. } else {
  11. // 取第一个词性的第一释义
  12. for (var 词性 in 词性到释义) {
  13. 首选词义 = 词性到释义[词性][0];
  14. break;
  15. }
  16. }
  17. return 首选词义;
  18. }

主界面.js中进行翻译的主体部分:

  1. function 翻译() {
  2. var 原代码拷贝 = document.getElementsByTagName('table')[0];
  3. var 顶节点 = 原代码拷贝.parentElement;
  4. var 编程语言 = 取编程语言(顶节点);
  5. var span字段列表 = 原代码拷贝.getElementsByTagName('span');
  6. var 文本字段列表 = 取子文本节点(document);
  7. 关键词词典 = 取所有关键词(编程语言);
  8. // 合并两个部分
  9. 添加所有待查词(span字段列表);
  10. 添加所有待查词(文本字段列表);
  11. chrome.runtime.sendMessage(
  12. "ndifefelacmidghjaehmhicbchbidhpe",
  13. 命名词典,
  14. function(返回值) {
  15. 命名词典 = 返回值.所有释义;
  16. for (var in 命名词典) {
  17. 命名词典[词] = 常用命名[词] ? 常用命名[词] : 首选(命名词典[词], 词性);
  18. }
  19. 翻译字段列表(span字段列表);
  20. 翻译字段列表(文本字段列表);
  21. 顶节点.insertBefore(document.createTextNode("编程语言: " + 编程语言), 原代码拷贝);
  22. }
  23. );
  24. }

原文链接:http://www.cnblogs.com/program-in-chinese/p/10500313.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号