@
flyingghost 多谢宝贵建议!
关于 0, 基本同意. 个人估计用户群还是很大的, 应该在万级以上.
> 按层级翻译(比如类名 > 方法名 > 变量名)。细节实现就放着好了。层级设置可控就更好了。
很同意. 其实之前还做了一个 Java 实现的对 Java 源码进行层级翻译的服务:
https://zhuanlan.zhihu.com/p/45236358 主要难点是源码分析. 那个服务基于 Roaster, 它支持类 /方法 /变量的分析(实现细节除外), 这已经可以做到层级可控, 但问题是扩展到其他语言工作量较大(即使用 antlr4)
> 对于命名的翻译,一定别忘了借鉴下划线、驼峰等天然分词符。人家都帮你分好了不用白不用。
应该已经实现了, 如`loadData`->`加载数据`, `gtk_window_set_default_size`-> `gtk_窗口_设置_默认_大小`
> 仅针对快速阅读理解来说,注释的重要性远大于源码实现细节。
嗯, 但这个插件项目现在是很简单的直译, 暂未发现 JS 的机翻库, 与第四点一同恐怕要慢慢积累技术(命名本身也存在上下文问题, 如 #29 指出的)才能接近句级别翻译.
> 一定要做语法解析,至少做到词法解析吧。源码这种东西,千万不能按文本处理。
上面那个 Java 源码翻译服务做了. 这个插件暂时倚靠的是在线代码网站本身的解析(直接挖它 HTML 中的代码段, 进行直接的词级替换. 所有高亮都用的相同 CSS 规则). 除了关键词之外, 命名部分和自然语言的机翻有何区别呢? 能想到的就是方法名更倾向于动词短语, 类 /变量名更倾向于名词短语, 还有吗?