本人第一次发贴,不对的地方请大家见谅啊 ;-)
发这个帖子主要想讨论一下如何做好 Rails Guide 中文翻译,讨论要不要翻译的请不要进来了,我觉得大家各有各的观点,没有谁对谁错,也没必要都认同同一个观点,正所谓 百花齐放,兼容并包。
(https://github.com/ruby-china/rails-guides) 这里已经有了一份中文翻译,但是比较久没有更新了,还不完整,是基于 rails 3.2 的,基于这一份,怎样来做一份比较好的中文翻译呢?
个人认为先要讨论一下目标:
1.应该有一份和 rails/rails 或 docsrails 同步更新的版本,这样就可以一直保持最新。
比较理想的方式是跟 rails/rails 一样,既有最新的 edge 版本和 master 分支同步,又有不同版本的翻译(基于 rails/rails 的 TAG 来生成的),不过 我还没清楚 rails/rails 每个版本的文档是怎么生成的,是自动生成?还是取每个 TAG 生成了一下?
是简单一点,只要一份最新的?还是最新的 + 稳定版(4.0/3.2/...) ?还是跟 rails/rails 一样每个 TAG 都有一个?
欢迎大家发表建议 ~
讨论好目标之后再看怎么达成这个目标。
Thanks ~
不要 rails/docrails
。这是一个 Public Commit 的库,用于 Quick Fix,所有的改变在合并到 rails/rails
之前还要重新审阅。所以只有 rails/rails
才是最终的版本。
建议一开始只专注于一个版本,而且应该是 4.0,因为炒冷饭很痛苦。
就像 @Ray 说的那样,不要 edge,要 stable。edge 留给有能力读原文的人去看足矣。
对了,还有一个建议。在翻译的时候要求提交者提供两个版本,一个是纯中文版,另外一个是英中对照版。对照版按段落分隔,原文在前,译文在后。两个版本走两个路径分支,可以都发布,也可以只发布纯中文版,对照版做别的用处。
这个别的用处主要有两个:第一,如果有人做审阅工作的话会比较方便;第二,对那些希望同时学习英文的人来讲是个福音。
而对译者来说其实也不难,翻译的时候保留一份副本不要去掉原文就可以了。
@nightire 这样貌似很不方便啊,所以我觉得 edge 版本存在的意义就是渐进的过程。如果能保持有 edge 版本翻译和 edge en 版本同步,那么到了 5.0 就相当于,4.0-5.0 之间的差异都在 edge 演进中完成了。
#6 楼 @zhibin_ 你这个太理想主义了,假设有一个人翻译了当前 edge 的一篇,然后一篇的原文不停在更新、更新、更新……你怎么保证原来的译者可以一直跟踪这个进度?人家更新是往里面填东西,不需要考虑差别,我们这翻译你一样 diff head 和 head~1,因为万一原文有改变,你译文不也得跟着改?这个变化是相当频繁的,你看一下官方库的更新日志就知道了。
所以,理想的办法还是跟踪 stable,因为一旦 stable 了,除非明显的错误,否则 rails 是不会去改动原文的,这样就给了译者一个相对稳定的原文,翻译起来才流畅,不至于缺漏。到了下一个 stable 发布的时候,召集原来的译者做一次统一的查漏补缺就好了。
如果你的目标是为了时刻保持更新,这其实不是翻译手册的目标。你要想想翻译手册主要是给谁看的?对于你的目标人群来说有必要保持这种频繁不确定的更新吗?他们跟的过来吗?到头来还要抱怨你翻译质量不好,三天两头变化。而且 edge 版还要保持频繁发布……反正这个过程是很多麻烦的。
多谢 @nightire 中英对照倒是个不错的主意。 其实我也了解 edge 的繁琐,实际操作的时候不会那么频繁,就好像把 4.0 和 5.0 之间的差异分步骤 做在 edge 版本中,和 5.0 发布的时候 diff 相比,只是多少次,多频繁的区别。
#8 楼 @zhibin_ 问题就在这里了,如果我是译者的话,我宁愿你告诉我“每六个月来 diff 一次,统一修改”,而不是“每隔三天来 diff 一次,频繁更新”。
这是时间成本的问题。另外,这两种修改的代价并不是一样的,不仅仅是繁琐的问题,更重要的是在 edge 文档里会出现那种反复修改反复校对的部分(有些地方是要跟随代码的变更而变更的)。你如果要求译者保持进度同步,那就意味着译者也得经历和作者同样的一个过程。
这是其一,还有一点,edge 对应的代码是 master 分支上的,是未来的变化,而不是现在的状况。你得考虑真正看文档的人用的是什么版本?万一在未来的版本有个很大的变化,edge 文档也跟随这个变化做出了修改,但是这个版本尚未发布,那么你这个文档发布出去就会对很多人造成困惑了啊。
为了解决这个问题,那么你还得保留一份 stable 版本以适应目前正在广泛使用的版本。这样一来就变成了译者需要维护两个版本,以后能不能做到我不知道,但初期能吗?有这个必要吗?
所以我建议先集中精力把 stable 完成,若此后还有余力的话,再去追 edge,能够追到和 5.0 同步那是最理想的,那得看我们有没有足够的人力和精力来做到这一点。
@zhibin_ 你是要牵头做这个事情吗?如果是的话那很好,我建议可以:
#10 楼 @ytwman Rails 官方曾经做出的答复:
There are no stablished practices regarding guides transalations. There have been a few attempts by different communities, but no complete set that I am aware of by now. The practical problem of translations is mainly maintenance. It is a non-trivial effort to keep them up to date in English itself! :)
此前并未有针对手册翻译的成型的实践方法,很多社区都作出过相应的尝试,但目前为止我没有看到一个完整的范例。实际当中的问题主要是在维护方面,即使保持英文文档本身的更新也需要付出很大的努力。
说真的,别要求这么高了,在我看来即使仅仅是提交一份修改订正都已经很不容易了。 要求提供两个版本的翻译更是...... 极少的人愿意把自己翻译后的东西一遍又一遍的修改订正。
如果愿意开一个分支或者更新一个英文文档都是分分钟的事情.... 问题是要对应的文章都修改更新一遍就很困难了。
我的一个方法是写个脚本,然后自动将文档的原文按照段落复制一份,但是给注释掉,同时留一个英文分支。这样可以通过英文分支找到所有变化的文件,然后通过源文件中的英文原文注释定位到变化的句子,然后翻译就好了。
@nightire 多谢你的建议!! @tassandar 恩,这个我也知道 确实很繁琐。想问一下 RubyChinaTranslation/Rails-Guides-China 和 https://github.com/ruby-china/rails-guides ,是以哪个为主?我发邮件联系 [email protected] 迟迟没有回复啊。你是发布在 https://github.com/Tassandar/Ruby-on-Rails-China 这里是吧?
其实我的想法是既然已经有了部分翻译,要利用好已经有的来做 4.0 的甚至以后的。还有个问题当初为什么没有从 rails/rails fork 过来做中文翻译?fork 过来就可以利用已有的 stable 分支 来支持不同 版本的翻译。做 4.0 的翻译的话就可以 checkout 4-0-stable , 把已有的翻译添加进去,然后做 4.0 的翻译。同时把已有的 3.2 的翻译 提交到 3-2-stable.
@chunlea 没错是可以定位到变化的句子,但是修正呢?是不是要根据 diff 改正中文翻译,然后在把 diff merge 到注释的那个里面来?
@tassandar OK, 那简单点,原有 master 新建分支 3.2-translation , 把 https://github.com/rails/rails/tree/4-0-stable/guides copy 过来 新建 4.0-translation 你意下如何? 另外,新建 team 专门负责此事 ,招募人手,开工 4.0, 如何?
4-0-stable https://github.com/rails-learning/railsguide-zh @ChanceDoor @jarorwar 欢迎参与或者建议