做的在线源码翻译插件现只支持了 GitHub. 下面打算做码云的. 还有其他建议的吗?
承蒙各位鞭策. 在100回复时作一小结:
对在代码中使用中文命名的质疑请见 #97 的文章和相关链接(课题较大恐不适合在此贴展开).
个人看来源码命名的机器翻译与普通文章没有本质区别, 只是用户总量是后者零头而已.
此项目主要针对源码中的命名部分进行翻译. 打算在下几个版本中将关键字翻译做成可选项. 未使用任何在线翻译服务, 是基于github账号 @skywind3000 的ECDICT英汉词典数据. 暂时基本采用了最简单的直译.
对注释/文本常量中的英文长语句的翻译并非不可实现, 但还需技术积累. 如果能做到与在线翻译服务水平接近的话, 相信这个JS库会有其他很多衍生用途. 欢迎对NLP有兴趣和经验的同行参与.
如果发现实用代码在(gg/百度/有道等)在线翻译服务中翻译效果明显更好的, 烦请在项目repo提issue, 以便纳入将来的比较测试: https://github.com/program-in-chinese/webextension_github_code_translator
1
binux 2018-10-31 06:16:17 +08:00 via Android 14
我原以为你把注释翻译了,然后想说不需要翻译。
结果你连源码都翻译了,对此我只想说,打扰了。 |
4
loading 2018-10-31 07:01:31 +08:00 via Android
打扰了
|
5
houlin 2018-10-31 07:07:46 +08:00 via Android
源码翻译干嘛用的,源码翻译了还方便看吗?
|
6
wzxlovesy 2018-10-31 07:09:27 +08:00 via Android
打扰了
|
7
congeec 2018-10-31 07:10:48 +08:00 via iPhone
一楼拥有教养,没开喷
|
8
jamesxu 2018-10-31 07:11:15 +08:00 via iPhone
这有什么意义?
|
9
ShareDuck 2018-10-31 07:14:48 +08:00 via Android
原本能看懂的现在看不懂了。
|
10
HeiXiaoBai 2018-10-31 07:15:33 +08:00 via Android
我以为是只翻译变量注释,没想到你连源码都翻译了
|
11
xuanwu OP @HeiXiaoBai 见#3, 注释和长语句没有翻译.
在那之前要积累一些机器翻译的技术(JS 实现). 当前仅命名部分也需很多改进, 比如最简单的单复数: https://github.com/program-in-chinese/webextension_github_code_translator/issues/12 如有对 NLP 中文处理有兴趣和经验的欢迎参与. |
12
waruqi 2018-10-31 07:38:35 +08:00 via Android
额。。。。。。。。
|
13
yuanfnadi 2018-10-31 07:46:19 +08:00 via iPhone 1
认识楼主
中文语言编程的布道师。尝试过用汉字写测试用例里面的变量名,还不错。 |
14
mohoumk2 2018-10-31 07:46:23 +08:00 via Android
楼主是用中文写的源码吗……
|
15
xuanwu OP |
16
chiu 2018-10-31 07:59:07 +08:00
原来看得懂翻译后看不懂了+1
|
17
Tink 2018-10-31 08:03:19 +08:00 via iPhone
牛逼,竟然还有这种操作
|
18
0312birdzhang 2018-10-31 08:06:23 +08:00 via iPhone 1
自己用 docker 搭一个 opengrok
|
19
cpdyj0 2018-10-31 08:28:36 +08:00 via Android
你可真是个小机灵鬼…
|
20
liuminghao233 2018-10-31 08:33:26 +08:00 via iPhone
觉得没什么意义啊
只是好玩而已 |
21
xueyoucai 2018-10-31 08:36:28 +08:00
你可真是个小机灵鬼
|
22
blanboom 2018-10-31 08:37:06 +08:00 via iPhone 1
自己搭的 OpenGrok
|
23
geying 2018-10-31 08:45:06 +08:00
看起来挺有意思,实际上没啥用
|
24
faywong8888 2018-10-31 08:53:16 +08:00 via Android
你可真是个小机灵鬼
|
25
Sylv 2018-10-31 08:56:36 +08:00 via iPhone
卧槽,这不是画蛇添足吗?
|
26
hjmeteor 2018-10-31 09:03:31 +08:00
神操作,你是负责来幽默的吗?
|
27
Commencal 2018-10-31 09:13:51 +08:00
你可真是个小机灵鬼
|
28
darkkylin 2018-10-31 09:17:51 +08:00
你可真是个小机灵鬼。实现了中文编程大一统。
|
29
no1xsyzy 2018-10-31 09:34:41 +08:00
override = 推翻
second = 秒(话说不应该是 left 和 right 么?) add = 加法 camelCase 和 PascalCase 转成中文就需要语义 parsing 了,很难受 为什么 Python 文档字符串没翻译? |
30
knightdf 2018-10-31 09:36:58 +08:00 3
牛逼,求求你们别再折腾中文编程了,我火星文按耐不住了
|
31
specita 2018-10-31 09:40:55 +08:00
我觉得提高英文水平得到的收益更大
|
32
yunlongzzj 2018-10-31 09:41:56 +08:00
太惨了
|
33
MithrandirW 2018-10-31 09:44:54 +08:00
活在自己的世界里做技术?
|
34
ilaipi 2018-10-31 09:45:35 +08:00
卧槽。。。。这需求是从哪来的??
|
35
lsls618 2018-10-31 09:48:01 +08:00
楼主是来找喷?
|
36
misaka19000 2018-10-31 09:51:54 +08:00
override 翻译成推翻你觉得很合适?
|
37
dovme 2018-10-31 09:53:54 +08:00
不明白中文编程的意义何在
|
38
shdf 2018-10-31 10:01:00 +08:00
小机灵鬼
|
39
fcten 2018-10-31 10:02:07 +08:00
翻译就算了……至少也翻译得准确一点吧……翻译完了反而看不懂了是什么鬼
|
40
HeiXiaoBai 2018-10-31 10:16:29 +08:00 1
<img src=" " alt="image">
不是,我就想问问,第三行,char 被翻译为"家庭杂务"是什么也是?? 这就是你说的,翻译能后"快速了解代码大概内容" |
41
HeiXiaoBai 2018-10-31 10:17:47 +08:00
@HeiXiaoBai #40 打错,"什么也是">"什么意思"
|
42
kuro1 2018-10-31 10:31:33 +08:00
惊了惊了
|
43
baicheng10 2018-10-31 10:35:40 +08:00
这脑回路……
|
44
bbbai 2018-10-31 10:36:21 +08:00
@HeiXiaoBai 没翻译成烧伤说明最起码不是按百度翻译来的
|
45
epicnoob 2018-10-31 10:41:33 +08:00
我拒绝使用……
|
46
TuringGunner 2018-10-31 10:42:46 +08:00
这...意义在哪
|
47
airyland 2018-10-31 10:43:05 +08:00
不知如何吐槽。。
|
48
xuanwu OP |
49
MeteorCat 2018-10-31 10:49:09 +08:00
@HeiXiaoBai 这反而看着更加费劲
|
50
xuanwu OP @no1xsyzy
翻译质量肯定有很大改进空间 #11 没有使用任何在线翻译服务, 用的是另一个离线英汉词典插件: https://chrome.google.com/webstore/detail/%E7%A6%BB%E7%BA%BF%E8%8B%B1%E6%B1%89%E8%AF%8D%E5%85%B8/ndifefelacmidghjaehmhicbchbidhpe |
51
HeiXiaoBai 2018-10-31 10:54:45 +08:00
@xuanwu #50 "没有使用任何在线翻译服务, 用的是另一个离线英汉词典插件"这…有区别么……
恕我直言,翻译前我有一些地方可能看不懂,翻译后,看着有点头晕 |
52
0x000007 2018-10-31 10:58:14 +08:00
2 易语言?
|
53
tourist2018 2018-10-31 10:58:53 +08:00
这操作神奇 我原来以为是那种可以在线跳转查看定义之类的 没想到把代码翻译了。。。这尼玛有卵用?
|
54
paragon 2018-10-31 11:09:50 +08:00
这波营销做得好啊
|
55
beny2mor 2018-10-31 11:18:29 +08:00
def tell(self)
定义 告诉(自己) 那为什么不用谷歌翻译插件 |
56
xuanwu OP @HeiXiaoBai 不好意思 #50 那句话是对 @bbbai #44 的回应
|
57
xuanwu OP |
58
zzzmode 2018-10-31 11:22:38 +08:00
反而看不懂了,操作符是不是也可以翻译啊
|
59
robotdiy 2018-10-31 12:05:03 +08:00 via iPad
能不能做点有意义的事情?
|
60
flyingghost 2018-10-31 12:08:09 +08:00 4
提点建议:
0,三种人不是用户群:a,阅读英文速度不比中文慢的。b,宁可忍着慢速也要提升自我的。c,编程领域神圣不许其他语言僭越的。咱们就忽略即可不抨击了吧。。。 1,lz 的初衷是能快速扫描代码观其大略,精要是鸟瞰,是忽略细节而不是扭曲细节。不如按层级翻译(比如类名 > 方法名 > 变量名)。细节实现就放着好了。层级设置可控就更好了。 2,无论是翻译到什么级别,对于命名的翻译,一定别忘了借鉴下划线、驼峰等天然分词符。人家都帮你分好了不用白不用。 2,仅针对快速阅读理解来说,注释的重要性远大于源码实现细节。 3,一定要做语法解析,至少做到词法解析吧。源码这种东西,千万不能按文本处理。 4,一定要做全文翻译或者句级别的翻译,眼看着 9102 年了千万不能以单词为单位会死人的。 |
61
pabupa 2018-10-31 12:08:48 +08:00
我在东北玩泥巴~
|
62
ray1888 2018-10-31 12:10:12 +08:00
在线看代码好像有 sourcegraph 插件了吧,虽然自己来说造轮子还是挺好的
|
63
janus77 2018-10-31 12:36:24 +08:00 1
在打扰之前想问个问题:
两个方法一个叫 selectA,一个叫 chooseA,同时存在,你翻译出来以后别人找不到自己想要的怎么办? |
64
xuanwu OP @flyingghost 多谢宝贵建议!
关于 0, 基本同意. 个人估计用户群还是很大的, 应该在万级以上. > 按层级翻译(比如类名 > 方法名 > 变量名)。细节实现就放着好了。层级设置可控就更好了。 很同意. 其实之前还做了一个 Java 实现的对 Java 源码进行层级翻译的服务: https://zhuanlan.zhihu.com/p/45236358 主要难点是源码分析. 那个服务基于 Roaster, 它支持类 /方法 /变量的分析(实现细节除外), 这已经可以做到层级可控, 但问题是扩展到其他语言工作量较大(即使用 antlr4) > 对于命名的翻译,一定别忘了借鉴下划线、驼峰等天然分词符。人家都帮你分好了不用白不用。 应该已经实现了, 如`loadData`->`加载数据`, `gtk_window_set_default_size`-> `gtk_窗口_设置_默认_大小` > 仅针对快速阅读理解来说,注释的重要性远大于源码实现细节。 嗯, 但这个插件项目现在是很简单的直译, 暂未发现 JS 的机翻库, 与第四点一同恐怕要慢慢积累技术(命名本身也存在上下文问题, 如 #29 指出的)才能接近句级别翻译. > 一定要做语法解析,至少做到词法解析吧。源码这种东西,千万不能按文本处理。 上面那个 Java 源码翻译服务做了. 这个插件暂时倚靠的是在线代码网站本身的解析(直接挖它 HTML 中的代码段, 进行直接的词级替换. 所有高亮都用的相同 CSS 规则). 除了关键词之外, 命名部分和自然语言的机翻有何区别呢? 能想到的就是方法名更倾向于动词短语, 类 /变量名更倾向于名词短语, 还有吗? |
65
Admstor 2018-10-31 12:51:28 +08:00
意义何在...
编译还要翻译回去?? |
66
xuanwu OP @janus77 多谢提醒. 已为重名检验添加 issue: https://github.com/program-in-chinese/webextension_github_code_translator/issues/16
刚实测: `SelectItem` -> `选定项` `chooseItem` -> `选取项` 现在这个英汉词典数据还蛮给力的, 实测中暂时没有发现重名情况. |
67
xuanwu OP @Admstor 嗯, 其实设想中的一个目标是"让用户可以选择是否中文化关键词": https://github.com/program-in-chinese/webextension_github_code_translator/issues/3
如果关键词不汉化, 理想情况下翻译出的结果应该可以编译(假设该语言支持 Unicode 命名, 大多数排行靠前的应该都有支持的编译器) |
68
Alexhohom 2018-10-31 13:05:18 +08:00 1
如果做好了还是很不错的,加油!
|
69
xuanwu OP @misaka19000 关键词的翻译确实很值得商榷. 之前有相关讨论: https://github.com/program-in-chinese/overview/issues/40
欢迎推荐更合适的翻译. |
70
Mmmmc 2018-10-31 13:47:04 +08:00
你做出了我做不出的东西, 感觉还不错, 不过大家好像并不怎么喜欢罢了
|
71
jay4497 2018-10-31 14:15:16 +08:00 1
如果能精准逆向也不错,中文写代码,然后翻译成实际代码,直接编译运行了。。。
|
72
micean 2018-10-31 14:19:12 +08:00
如果是在线浏览代码的插件,我希望是能够直接跳转到相应类、方法的页面,就像 IDE 的 ctrl+左键
|
73
babedoll 2018-10-31 14:19:41 +08:00
楼主想法很好!如果限定一下,只翻译注释的内容怎么样?比较代码还是英文的比较习惯
|
74
loshine1992 2018-10-31 14:28:16 +08:00
我还以为是 octotree 这种插件,然后还想说需要 gitlab 支持。。
结果。。 |
76
xuanwu OP @micean
@ray1888 并非在线浏览代码, 而是对网页中的代码段进行命名和少数文本常量的翻译. @babedoll 请见 #11 和 #64, 长句翻译还远. @loshine1992 多谢. 也许可以作为批量翻译功能的参考. |
77
waytoshine 2018-10-31 14:53:58 +08:00 1
乍一看,我和大家的反应是一致的——“楼主是来搞笑的吗?”
后来我仔细看了一下楼主做的东西,思考了一下,我觉得楼主做的事其实是一件很牛逼并且有迹可循(意思是这件事是有意义的)、别的国家有在做相同事情的人(日本,了解到作者的知乎专栏后看到的)的事情。 那么可能大家会有一些问题,比如说: “易语言和作者的插件的区别?” 答: “易语言 - 用中文编 C++的代码; 楼主做的是 - 用中文编所有市面上的存在语言的代码。” 还有建议楼主可以参考一下易语言,感觉易语言是你这种插件的 C++方向的终极形态了,楼主怎么看呢? |
78
xuanwu OP @waytoshine 插件更侧重的是对命名部分的翻译.
关键词汉化视觉效果与易语言接近. 但个人认为中文语法的编程语言还远未成熟. 参考专栏里那个"抚子"语言, 就有不少源于日语自然语言的特色语法, 如无空格设计, '它'的使用等等. |
79
AlkTTT 2018-10-31 15:56:02 +08:00 1
我觉得可以只翻译方法名,但是是在后面备注,而不是直接替换,其他的如 public,static 什么的,这些大家都清楚什么意思。
方法里面的源码最好不要翻译,翻译过来会有语法错误。 方法上面的注释,这个翻译过来才是最棒的 楼主加油 |
80
xuanwu OP @AlkTTT
> 但是是在后面备注,而不是直接替换 嗯, 也许可以支持几种显示模式 > 方法里面的源码最好不要翻译,翻译过来会有语法错误。 如果不翻译关键词( #67), 仅是命名翻译之后, 应该不会有语法错误 > 方法上面的注释,这个翻译过来才是最棒的 见 #11 和 #64, 长句翻译还远. |
81
U2Fsd 2018-10-31 16:54:27 +08:00
我觉得如果是连英语的学不好的智力,还是别来制造垃圾代码了。
所以说,中文编程注定失败的原因是用户群体的平均水平实在太低。 |
82
xuanwu OP |
83
tjNan 2018-10-31 17:59:13 +08:00
是不是少皇?少皇出品,必属废品
|
84
x86 2018-10-31 18:01:51 +08:00
码界少皇
|
85
acrisliu 2018-10-31 18:24:39 +08:00
加法(整数 首先, 整数 秒)
此处 second 翻译为秒过分了吧? |
86
littlewing 2018-10-31 19:16:21 +08:00
楼主不要做无用功了,有这时间做点啥不好
我宁愿用 google 翻译 |
87
JCZ2MkKb5S8ZX9pq 2018-10-31 20:58:40 +08:00
这不就是前一阵推中文编程的 lz 嘛。
我也爱中文,给几个古文站点都做过点贡献,经常也会练练字抄抄书啥的,对资源字型也挺讲究。 对 lz 这种中文化的推广,我有几个想法。 其一、让我想到日文的外来语,全部用现有假名拼凑。我觉得鬼子现在这破 jb 外语口音,跟他们普及这山寨外语关系很大。日本这种洋文本土化,弊端不少。 PS:中文也有不少外来语,不展开。 其二、60 年前怕中文难学,把汉字一简二简差点纯拼音了。越南和棒子就给简废弃了,打着的名义也是为了普及文字,降低难度。结果利弊兼具,很凶险。这才隔没多久,又反过来玩了? 现在说是为了普及编程,硬把英文中文化,利弊怎么看? 其三、我觉得不同语言有不同的表达效果,各种方言都很可爱。 广州昨天还冒出新闻,要限制学校使用粤语,那太可怕了。 在上海,沪语已经退化很久了。 而这一切,也只是因为普通话刚好用了北京音。从历史上看,这才用多久啊。 反过来,推粤废普?推沪废普?推拼音反汉字?不奇怪嘛? 好的文明,兼容并包。 其四、功能。 有些事情需要统一,比如书同文,目的是为了交流。 那编程已经书同文了,只不过刚好不是用的你的母语而已。 当然,你有权自由分配自己的时间。 我这完全一时随想,权当参考,不再回复。 |
88
aheadlead 2018-10-31 21:11:57 +08:00
|
89
xoxo419 2018-10-31 22:04:01 +08:00 1
一开始我也以为 LZ 是来搞笑的, 回复都那么认真对待. 并把想法实现
有时做事情也不都需要那么功利性的 想你所做 做你所想. |
90
eamo 2018-10-31 22:30:22 +08:00
666,源码需要翻译??
|
91
youngxhui 2018-10-31 23:37:29 +08:00 via Android 1
也许这个东西并没有多大用处,之前一直在看楼主推广中文编程。值得向楼主学习,为了自己的目的,一直在努力。加油啊!
|
92
se7en00 2018-11-01 00:10:52 +08:00 1
请坚持做自己想要做的事情.加油...
|
93
agdhole 2018-11-01 00:11:50 +08:00
程序语言和英译中完全是两个东西,画蛇添足了
|
94
xth12138 2018-11-01 00:15:47 +08:00 via Android 1
乍看感觉有些诡异,然后我想起来我好像关注了你的知乎专栏
|
95
Zzdex 2018-11-01 00:18:08 +08:00 via iPhone
你不说翻译我还以为易语言呢
|
96
xuanwu OP @littlewing
@beny2mor 可以看看 gg 翻译的结果是否更好 (刚试了并没有) @acrisliu 同样一段代码在谷歌和百度翻译都把它翻成了'秒'. 只有有道翻成了'第二'. 机器翻译本来就是大课题, 就这个插件使用直译能到现在的效果已经在我的意料之外了. 见 #11 和 #64 最近也在找 JS 实现的 NLP 相关库, 并不想自己造轮子. |
97
xuanwu OP @agdhole
@U2Fsd @dovme @no1xsyzy "对在代码中使用中文命名的质疑与回应": https://zhuanlan.zhihu.com/p/30529835 欢迎各种不同意见. 如有兴趣可以另开题讨论, 或者到专栏文章回复, 或者 github 讨论组此专用贴: https://github.com/program-in-chinese/overview/issues/44 |
98
november 2018-11-01 01:37:15 +08:00
em....这看起来像是对源码作了加密处理。
|
99
Yourshell 2018-11-01 02:03:05 +08:00 via iPhone
编程的重点不在那几个关键字和变量名吧?要说编程中自然语言的阻碍,那应该在各种文档上啊。
|