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