有没有针对源代码的在线翻译服务?

2018-08-31 13:27:00 +08:00
 xuanwu

比如, 输入英文代码:

# This is my shopping list
shoplist = ['apple', 'mango', 'carrot', 'banana']

print('I have', len(shoplist), 'items to purchase.')

print('These items are:', end=' ')
for item in shoplist:
    print(item, end=' ')

print('\nI also have to buy rice.')
shoplist.append('rice')
print('My shopping list is now', shoplist)

print('I will sort my list now')
shoplist.sort()
print('Sorted shopping list is', shoplist)

print('The first item I will buy is', shoplist[0])
olditem = shoplist[0]
del shoplist[0]
print('I bought the', olditem)
print('My shopping list is now', shoplist)

返回中文对应代码:

# 这是我的购物单
购物单 = ['苹果', '芒果', '胡萝卜', '香蕉']

打印('我有', 长度(购物单), '要购买的产品.')

打印('这些物品是:', 结尾=' ')
对于 物品 在 购物单:
    打印(物品, 结尾=' ')

打印('\n 我还得买大米.')
购物单.添加('米')
打印('我的购物单现在在', 购物单)

打印('我现在就整理我的清单')
购物单.排序()
打印('排序的购物清单是', 购物单)

打印('我要买的第一件东西是', 购物单[0])
第一项 = 购物单[0]
删除 购物单[0]
打印('我买过', 第一项)
打印('我的购物单现在在', 购物单)
4490 次点击
所在节点    奇思妙想
20 条回复
Inod
2018-08-31 14:13:33 +08:00
一些拼音自编缩写变量名怎么办 :狗头
xuanwu
2018-08-31 14:47:00 +08:00
@Inod 毕竟是极少数吧。绝大多数应该还是英文命名的, 尤其是教程等的示例代码。
1313213
2018-08-31 15:33:28 +08:00
为什么会有这种需求?
Greendays
2018-08-31 17:25:10 +08:00
看来楼主被领导安排了一些很那啥的工作吧
persimmon
2018-08-31 17:44:24 +08:00
是想要转译成易语言吗?
dingdangnao
2018-08-31 19:59:05 +08:00
意义是什么?
fox0001
2018-09-01 18:15:40 +08:00
没意思…这种代码都看不懂,怎么编程?更何况很多自定义方法都不是一两个字就能说明清楚的…

不过,如果能做成代码自动注释,那就是另一个境界的事情了
yuanxing008
2018-09-03 03:53:58 +08:00
然而。。这种翻译的目的性呢?无实际应用价值的东西为什么要做
976683240
2018-09-03 09:58:45 +08:00
毫无意义的工作
xuanwu
2018-09-03 13:21:17 +08:00
看来是没有这样的工具 /服务。
如认为有价值的但不便现身的不妨点感谢。
无论如何都会尽量实现, 但估计会是长期项目。会在此帖报告进展。
flynaj
2018-09-06 00:59:16 +08:00
这个字典替换就可以,非常简单,只是更加不好阅读
youngxhui
2018-09-06 07:52:21 +08:00
这是搜狗翻译的结果,直接调用这些翻译的接口基本可以实现

![]( http://7xt81u.com2.z0.glb.qiniucdn.com/Snipaste_2018-09-06_07-50-30.png)
xuanwu
2018-09-06 08:12:15 +08:00
@youngxhui 多谢. 之前在 GG 翻译也测试过. 看起来搜狗结果没有考虑到代码语法. GG 的好像考虑了, 但翻译效果欠佳.
这些翻译接口都不免费, 而且长期来看不可能有永久免费的(像之前的有道).
现在正在实现一个英汉词典 API: https://www.v2ex.com/t/485481
之后再着手这个原型. 大概思路在 https://github.com/program-in-chinese/overview/issues/86

```
#这是我的购物清单
shoplist = ['apple','mango','胡萝卜','香蕉']

打印('我有',len (商店列表),'要购买的商品。')

print ('这些项目是:',end ='')
对于商店列表中的项目:
print ( item,end ='')

打印('\ n 我还要买米饭。')
shoplist.append ( '大米')
打印('我的购物清单现在',店铺列表)

打印('我现在将对我的列表进行排序')
shoplist.sort ()
print ('Sorted shopping list is',shoplist )

print ('我要买的第一件商品是',shoplist [0])
olditem = shoplist [0]
del shoplist [0]
打印('我买了',olditem )
打印('我的购物清单现在',店铺列表)
```
xuanwu
2018-09-10 13:50:44 +08:00
发帖时写的一个浏览器插件实现 GitHub 代码翻译原型演示: https://zhuanlan.zhihu.com/p/43304088
正写篇调研文, 在几个在线文本翻译服务(gg, 搜狗, 百度, 有道等等)中尝试翻译源码, 看看效果.
可以料想的是它们都不具备语法高亮功能. 主要关注点在于代码可读性和格式保全等问题.
xuanwu
2018-09-10 15:07:36 +08:00
"使用现有在线翻译服务进行代码翻译的体验": https://zhuanlan.zhihu.com/p/44169542
用两个小例程测试了楼上的 4 个翻译服务. 最后有初步的需求分析.
xuanwu
2018-09-14 14:00:09 +08:00
"代码翻译尝试-使用 Roaster 解析和生成 Java 源码": https://zhuanlan.zhihu.com/p/44536065
此文是前文使用现有在线翻译服务进行代码翻译的体验的编程语言方面第二点的一个尝试. 初步汉化后 Java 代码效果如下:

package com.company.example;

import java.io.Serializable;

public class 人 implements Serializable {

private static final long serialVersionUID = 1L;
private final 整型 号;
private 字符串 全名;

public 整型 get 号() {
return 号;
}

public 字符串 get 全名() {
return 全名;
}

public void set 全名(字符串 全名) {
this.全名 = 全名;
}

public 人(java.lang.Integer id) {
this.id = id;
}
}
xuanwu
2018-09-16 03:09:44 +08:00
Java 源码英翻中库以及服务原型 https://zhuanlan.zhihu.com/p/44644112
在前文代码翻译尝试-使用 Roaster 解析和生成 Java 源码的基础上, 作了一些改进. 主要有:

- 对一般词汇使用普通英汉词典进行直译(优先选取计算机领域词义或者第一个词义)
- 支持术语词典, 比如'instance', 上面的英汉词典中的第一个词义是'建议', 于是在术语词典中添加此项, 暂时译为'个例
- 支持驼峰命名和下划线分隔法命名
- 各种忽略. 详见命名翻译.java:
- 一些歧义太多的词, 如 to for of
- 单字符字段如 M
对释义进行清理, 如括号中的内容, 特殊符号等等
xuanwu
2018-09-19 07:53:14 +08:00
很简陋的网页界面用于演示上面的封装服务. 在线演示地址: http://74.91.17.250:9000/

测试用例:

https://gist.github.com/nobodxbodon/25fd1d59027181ed317d7ca17ac5f153

点击"翻译"即可
xuanwu
2018-09-24 07:42:09 +08:00
前端:
添加了语法高亮 (基于 CodeMirror).
考虑设置为根据内容自动调节编辑器高度, 以便通过浏览器滚动条同时滚动两个浏览器 (类似谷歌翻译等).
还需调整字体大小, 现在翻译后带中文的行宽一些, 两边代码并不同样长度.

语法分析部分:
支持了数组类型的翻译.
xuanwu
2018-10-08 15:05:54 +08:00
Java 源码英翻中进展-内测上线: https://zhuanlan.zhihu.com/p/46207832

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/484895

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX