-
Notifications
You must be signed in to change notification settings - Fork 34
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
批量代码汉化工具 #86
Comments
由于代码命名与自然语言相去甚远, 因此长远考虑借助词典进行逐词翻译而不是现有在线翻译的API(调用受限, 而且字典不可控), 在此基础上添加一些常见的命名语法规则, 比如Map命名时经常使用的 @htwx 记得之前你在CTS相关项目里也调用过外部翻译API, 请问实现的也是代码翻译吗? |
发现一个英汉词典数据库, 考虑将其数据裁剪后封装成API, 可作为独立项目开展. |
ageByName这种翻译,感觉可以机械化,by=从,>=龄从名 但是这里又会涉及到一个问题,就是有时候英译中,中文反而没有原文直观(视觉上的,英文有大小写,容易分词) |
之前也是打算用简单的语法转换, 比如
之前写的在代码中进行中文命名(类/变量/方法等)的优势里的优势之一"不需要驼峰命名法或者下划线分隔". |
Generate source code from AST with Antlr4 and StringTemplates提到, 源码语法分析后再基于语法树生成源码这一转换过程有不少细节问题, 并非那么简单. 当然命名翻译并不牵涉改变代码结构, 但其中提到的这几条都还是问题:
考虑搭建原型时暂时只用最简单的字符串替换而不是对代码进行语法分析. |
刚试了使用词典API翻译这个简单的例程: class Person:
pass # An empty block
p = Person()
print(p) 有几个发现:
|
使用现有在线翻译服务进行代码翻译的体验, 最后作了一点初步的需求分析. |
代码翻译尝试-使用Roaster解析和生成Java源码. 感觉自然语言翻译部分挑战更大, 如何选择最合适的释义和词序重组等. 暂时打算先专攻Java. 其他编程语言如有类似Roaster这样兼顾源码语法解析和生成的库, 烦请告知. |
初步界面演示, jquery. 可能写篇短文. http://74.91.17.250:9000/ |
语法高亮编辑器~ |
@swizl #48 (comment) 转至此继续探讨:
感觉难度取决于对源代码的语法分析程度. 如果翻译出的文件需要能够编译, 就有更多细节要照顾. 像上面实现的, Integer->整数, String->字符串, 对于一般浏览代码也许有意义, 但导致不能编译. 此项目暂时的重点是阅读代码大意. |
@nobodxbodon 哈哈,对的。 |
用了个 |
已改为80端口. 刚测试 http://translate.codeinchinese.com/ 如下. |
JavaScript源码翻译可参考JS代码翻译成中文书写的代码 |
Github代码翻译插件的后续: |
继续下去有两个方向. 一是继续浏览器和vscode(及visual studio)上的插件开发; 二是Java开发环境下的插件开发, 比如Eclipse. 初步打算, 在v2帖的三项中, 先完成vscode的源码翻译预览(效果与当前浏览器插件齐平), 以接触尽可能大的用户群. 插件中实现并列编辑器可以参考官方参考例程. 之后再确定是进一步改进机翻效果还是尝试第二个方向.
|
个人觉得和 #85 有很大部分重叠,不如先把这个item从主页隐藏了。如有新的阶段进展,再开,也许会好点 |
merge <- #88 |
基于#86 (comment) 的计划, 已初步完成"vscode的源码翻译预览"功能: VS Code英汉词典v0.0.8: 批量翻译文件部分命名. |
源自 @swizl 的 #59 (comment)
#37 中曾经用JDT实现从Java源码中类/方法的提取(似乎也有汉化后代码生成). 另一种可能是使用Antlr分析+StringTemplate生成新代码.
一般的源码命名汉化还需术语词典以及普通英汉词典(有库吗?).
The text was updated successfully, but these errors were encountered: