
做的在线源码翻译插件现只支持了 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 我原以为你把注释翻译了,然后想说不需要翻译。 结果你连源码都翻译了,对此我只想说,打扰了。 |
4 loading 2018-10-31 07:01:31 +08:00 via Android 打扰了 |
| img src="https://cdn.v2ex.com/avatar/38f5/be43/291246_normal.png?m=1554074220" class="avatar" border="0" align="default" alt="houlin" data-uid="291246" /> | 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 认识楼主 中文语言编程的布道师。尝试过用汉字写测试用例里面的变量名,还不错。 |
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 PRO 牛逼,竟然还有这种操作 |
18 1daydayde 2018-10-31 08:06:23 +08:00 via iPhone 自己用 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 自己搭的 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 牛逼,求求你们别再折腾中文编程了,我火星文按耐不住了 |
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 <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 TuringGooner 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 提点建议: 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 rb6221 2018-10-31 12:36:24 +08:00 在打扰之前想问个问题: 两个方法一个叫 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 如果做好了还是很不错的,加油! |
69 xuanwu OP @misaka19000 关键词的翻译确实很值得商榷. 之前有相关讨论: https://github.com/program-in-chinese/overview/issues/40 欢迎推荐更合适的翻译. |
70 Mmmmc 2018-10-31 13:47:04 +08:00 你做出了我做不出的东西, 感觉还不错, 不过大家好像并不怎么喜欢罢了 |
nbsp; 71 jay4497 2018-10-31 14:15:16 +08:00 如果能精准逆向也不错,中文写代码,然后翻译成实际代码,直接编译运行了。。。 |
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 乍一看,我和大家的反应是一致的“楼主是来搞笑的吗?” 后来我仔细看了一下楼主做的东西,思考了一下,我觉得楼主做的事其实是一件很牛逼并且有迹可循(意思是这件事是有意义的)、别的国家有在做相同事情的人(日本,了解到作者的知乎专栏后看到的)的事情。 那么可能大家会有一些问题,比如说: “易语言和作者的插件的区别?” 答: “易语言 - 用中文编 C++的代码; 楼主做的是 - 用中文编所有市面上的存在语言的代码。” 还有建议楼主可以参考一下易语言,感觉易语言是你这种插件的 C++方向的终极形态了,楼主怎么看呢? |
78 xuanwu OP @waytoshine 插件更侧重的是对命名部分的翻译. 关键词汉化视觉效果与易语言接近. 但个人认为中文语法的编程语言还远未成熟. 参考专栏里那个"抚子"语言, 就有不少源于日语自然语言的特色语法, 如无空格设计, '它'的使用等等. |
79 AlkTTT 2018-10-31 15:56:02 +08:00 我觉得可以只翻译方法名,但是是在后面备注,而不是直接替换,其他的如 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 一开始我也以为 LZ 是来搞笑的, 回复都那么认真对待. 并把想法实现 有时做事情也不都需要那么功利性的 想你所做 做你所想. |
90 eamo 2018-10-31 22:30:22 +08:00 666,源码需要翻译?? |
91 youngxhui 2018-10-31 23:37:29 +08:00 via Android 也许这个东西并没有多大用处,之前一直在看楼主推广中文编程。值得向楼主学习,为了自己的目的,一直在努力。加油啊! |
92 se7en00 2018-11-01 00:10:52 +08:00 请坚持做自己想要做的事情.加油... |
93 agdhole 2018-11-01 00:11:50 +08:00 程序语言和英译中完全是两个东西,画蛇添足了 |
94 xth12138 2018-11-01 00:15:47 +08:00 via Android 乍看感觉有些诡异,然后我想起来我好像关注了你的知乎专栏 |
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 编程的重点不在那几个关键字和变量名吧?要说编程中自然语言的阻碍,那应该在各种文档上啊。 |