2018-09-15 Java源码英翻中库以及服务原型
服务很简单, 只为演示这个库, 源码在: program-in-chinese/code_translator_service. 在Postman测试效果:

演示服务地址: 74.91.17.250:8091 . POST请求的参数名是code, 值就是需要翻译的英文源码. 返回翻译后的源码.
注:
- 只支持语法正确的Java源码翻译. 否则直接返回分析错误信息.
- 现在汉化范围很有限, 主要集中在类型/方法名, 尚未处理其他如方法内容等
- 代码很粗放, 下面打算在继续改进之前先整理一下.
在前文代码翻译尝试-使用Roaster解析和生成Java源码的基础上, 作了一些改进. 主要有:
- 对一般词汇使用普通英汉词典进行直译(优先选取计算机领域词义或者第一个词义)
- 支持术语词典, 比如'instance', 上面的英汉词典中的第一个词义是'建议', 于是在术语词典中添加此项, 暂时译为'个例'
- 支持驼峰命名和下划线分隔法命名
- 各种忽略. 详见命名翻译.java:
- 一些歧义太多的词, 如to for of
- 单字符字段如M
- 对释义进行清理, 如括号中的内容, 特殊符号等等
接下去的改进方面:
- 提高翻译质量方面
- 继续扩大术语词典内容. 将在术语词典API项目 · Issue #85 · program-in-chinese/overview更新进度
- 添加一些简单的词序重组规则. 比如现在'afterSave'译为'在之后保存', 最好改为'保存之后'之类, 但这牵涉到较复杂的自然语言处理.
- 改进源码分析方面
- 添加对一些变量, 方法类型进行翻译
- 支持复杂类型的翻译, 比如Person[], List
- 前端方面
- 第一步是做一个最简单的前端, 左边输入源码, 右边显示翻译结果
- 支持Outline模式, 就是类似IDE中只显示类的属性/接口列表, 这样也许更易于对一个类有个一目了然的了解
- 支持语法高亮
欢迎尝鲜/反馈/参与添加术语等.
2018-09-15 Java源码英翻中库以及服务原型的更多相关文章
- 2018-09-24 Java源码英翻中网页演示
在线演示地址: 源代码翻译 两部分如下. 独立的Java代码翻译库 续前文代码翻译尝试-使用Roaster解析和生成Java源码 源码库: program-in-chinese/java_code_t ...
- 2018-10-08 Java源码英翻中进展-内测上线
创建了一个子域名: http://translate.codeinchinese.com/ 欢迎试用, 如有建议/发现问题欢迎在此拍砖: program-in-chinese/code_transla ...
- 常见算法合集[java源码+持续更新中...]
一.引子 本文搜集从各种资源上搜集高频面试算法,慢慢填充...每个算法都亲测可运行,原理有注释.Talk is cheap,show me the code! 走你~ 二.常见算法 2.1 判断单向链 ...
- java源码研究--List中的set和add方法区别
在处理一道题目是,发现他们使用了List 中的set 方法,这个方法我平时很少用到,今天来研究一下,set和add的区别 add(int index,Object obj)方法与set(int ind ...
- java源码——统计字符串中字符出现的次数
对于任意输入的一段字符串,读取并且计算其中所有字符出现的次数. 使用HashMap存储字符和其对应的出现的次数,输出时,对HashMap进行遍历. 难点在于对HashMap的遍历,第一次使用,也是学习 ...
- java源码——文件读写和单词统计
本文要解决的问题:"键盘输入一段英语语句,将这段话写入content.txt中,然后输出这段话,并且统计语句中英文单词的数目以及各个单词出现的次数." 分析问题知,核心是文件读写和 ...
- java源码——0~9十个数字不重复地使用使加法表达式成立
这个问题是在我写个的几个博客里较为复杂的一个.首先,先看看整个问题的表述. 星号表示0~9的一个数字,而且不允许重复,使得下面的加法表达式成立.输出所有结果. ※ ※ ※ ※ ※ + 2 ...
- Android反编译(一)之反编译JAVA源码
Android反编译(一) 之反编译JAVA源码 [目录] 1.工具 2.反编译步骤 3.实例 4.装X技巧 1.工具 1).dex反编译JAR工具 dex2jar http://code.go ...
- java源码剖析: 对象内存布局、JVM锁以及优化
一.目录 1.启蒙知识预热:CAS原理+JVM对象头内存存储结构 2.JVM中锁优化:锁粗化.锁消除.偏向锁.轻量级锁.自旋锁. 3.总结:偏向锁.轻量级锁,重量级锁的优缺点. 二.启蒙知识预热 开启 ...
随机推荐
- C#之Redis为所欲为
一 Redis是一种支持多种数据结构的键值对数据库 1.1Redis下载地址 :https://github.com/MicrosoftArchive/Redis 建议下载 .msi结尾的应用程序进行 ...
- 字符串转json以及获取域名的参数
本例将通过location.search来进行字符串拼接成json以及查询域名参数的value console.log(request('id')); function request(obj){ v ...
- RN 开发常见小问题
1 定时器每隔多少秒调用一次 直接贴代码 可复制使用 componentWillUnmount() { this.timer && clearInterval(this.timer) ...
- pycharm的安装及用法
俗话说的好:"工欲善其事,必先利其器",程序员写代码,肯定不能在编译器里面写,这有一个全宇宙最好的python编译器,叫做pycharm ,他的优点呢,大家可以看一下: 优点:1, ...
- 使用EHCache需要注意的几个问题(转)
最近做一个小项目,需要对一批数据进行缓存,且要求持久化到磁盘.使用ehcache非常简单和直观,一般来说只需要配置ehcache.xml文件,接着直接使用@Cacheable, @Cacheput, ...
- windows远程桌面到linux
centos: http://lovesoo.org/xmanager-to-connect-to-the-remote-desktop-centos.html redhat: http://ww ...
- 解决Ubuntu系统下的VMware Workstation无法打开虚拟网络编辑器界面的问题
本文由荒原之梦原创,原文链接:http://zhaokaifeng.com/?p=630 操作环境: Ubuntu 17 VMware 14 pro for Linux 问题描述: 我在Ubuntu ...
- 计算两个latitude-longitude点之间的距离? (Haversine公式)
问题描述 如何计算纬度和经度指定的两点之间的距离?为了澄清,我想要距离公里;这些点使用WGS84系统,我想了解可用方法的相对准确性.最佳解决方案 这个link可能对您有帮助,因为它详细说明了使用Hav ...
- javascript 事件编程之事件(流,处理,对象,类型)
1. 事件处理 1.1. 绑定事件方式 1)行内绑定 语法: //最常用的使用方式 <元素 事件="事件处理程序"> 2)动态绑定 //结构+样式+行为分离的页面(ht ...
- Andoird 自定义ViewGroup实现竖向引导界面
转载请表明出处:http://write.blog.csdn.net/postedit/23692439 一般进入APP都有欢迎界面,基本都是水平滚动的,今天和大家分享一个垂直滚动的例子. 先来看看效 ...