We Are SwiftGG

2014 年 6 月 3 日,Swift 语言发布正式发布。9 天后,SwiftGG 翻译组翻译的《The Swift Programming Language》中文版也带着中国开发者的热忱在 Github 上正式发布。

眨眼间,9 年过去了,SwiftGG 翻译组仍然在持续维护这份文档,期间,有 230+ 名社区成员参与过这个项目,平均每周都会有 1-2 个 commit 被提交以帮助这个项目保持活力。这本教程也从 1.0 版本走到了现在的 5.8 版本。得益于中国各位热心于 Swift 语言事业的开发者的帮助,这共计 71W+ 的文字,带来的不仅有 GitHub 上 2W + 的 Star 数量,还有 Swift 官网的正式推荐!

最开始,我们发起这个项目的初衷非常简单——希望帮助更多的中国开发者学习这门语言,现在看来,它已经达到了我们的目标——在这些年与社区开发者的交流过程中,我们发现很多人都是通过这本电子书完成了 Swift 语言的入门,这让我们感到十分的自豪和骄傲。

虽然取得了这些成绩,我们还是在思考一个问题:如何进一步帮助 Apple 生态内的开发者更好的学习新技术?

我们发现的问题

Apple 这几年在开发者体验上做了很多改进,比如全新 Session 的呈现方式,堪比教科书内容的 Activities(原先叫做 Digital Lounge),还有全新版本的文档中心,都让我们觉得 Apple 变得更加亲切了,不过在我们的观察与交流中发现,对于大部分中国开发者而言,英语仍然是学习新技术的门槛之一。

那么我们应当如何去更好的帮助他们呢?当然,如果保持传统的模式,即一个英文网站对应一个中文网站,或者一个英文文档对应一个中文文档,似乎也能解决问题,但我们认为它并不优雅,为什么这么说?

  • 对于一个英文网站对应一个中文网站的模式,我们认为这种阅读体验是非常糟糕的,不光是要在两个网页间穿梭游走,而且如果维护者没有声明更新日期的话,你极有可能读到最后才发现这份中文文档已经过时很久了,除了这些情况,对于维护者而言也非常麻烦,尤其在后期,把中文网站做的跟英文网站一模一样就会成为一个很重要的课题,这会占用非常多的时间,甚至超过校对技术内容本身的时间,非常低效。
  • 对于一个英文文档对应一个中文文档的模式,我们同样认为它的体验同样不够优雅,除了前面提到的种种问题,这种分布式的文档传播方式,让读者很难感知当前的版本是否有更新,甚至这些文档会被一些渠道进行篡改,进而误导用户,再加上近些年 Apple 推出的交互式教程,例如 SwiftUI 的三个入门教程,这种内容很难用纯静态文档进行呈现,这也会让此种模式的学习体验会进一步变差。

所以在有了这些思考后,我们打算跳出现有的模式,用一种更优雅的方式来帮助开发者打破语言的障碍,学习新的技术!

我们想到的解决方案

Twine by SwiftGG 是我们提出的一套全新的,可拓展的,不以英语为母语的,让开发者能够更优雅的学习 Apple 相关技术的解决方案。

图片

macOS Safari 版本

图片

iOS Safari 版本

在介绍这个方案前,我们先说说这个方案的由来!

大概在几个月前,翻译组内部进行了一次关于如何高效学习 Apple 技术文档的讨论,轻舟提到了一个叫做《沉浸式翻译》(英文名叫做:immersive translate)的浏览器插件,让我们可以试试,果不其然,在试用了这款插件以后,大家都觉得双语展示的效果非常惊艳,阅读体验直接拉满,不过虽然这款插件支持了 OpenAI,DeepL,Google Translate 等翻译工具,但它在 Apple 技术文档的这个垂直领域内,呈现的效果还是不够通俗易懂,经常会出现明显的错误。

但我们认为翻译出来的内容不达标并不是这个工具自身的问题,而是受限于这些翻译工具自身的能力所限,抛开这些翻译内容,我们都觉得这款工具的解决思路是非常值得借鉴的,所以我在第一时间就联系了沉浸式翻译的作者 Owen,并在 Telegram 上跟他深入的沟通了好几次。

也正是基于这几次的沟通,我们才有了 Twine by SwiftGG 的方向,这里非常感谢 Owen 对我们项目的支持和帮助,甚至 Owen 还提出过把《沉浸式翻译》的源代码无偿开源给我们,真的非常感谢他对我们社区工作的支持!

最终我们并没有直接采用 Owen 的代码,一方面是想表达对 Owen 的尊重,另一方面也是考虑到《沉浸式翻译》在未来商业化的可能性,但不管怎样,我们还是真心的感谢 Owen 老师,也预祝他早日财富自由!

好了,我们来说说 Twine by SwiftGG 的方案到底有什么不同?

相比于其他的解决方案,我们认为 Twine by SwiftGG 是一个基于浏览器插件的工具,以社区提供的本地化内容为基础,可以识别 Apple 文档中的英文内容进行双语翻译,进而帮助开发者完成学习任务。

它的整个核心流程如下:

图片

这个方案不仅保留了沉浸式翻译里的用户体验,还融入了社区的力量,能让更多的人参与进来,这也意味着社区的力量会产生更多的语言版本,更高效的迭代速度和更有意思的交流与沟通。

目前你可以在 Safari 和 Chrome 里下载这款浏览器插件 Twine by SwiftGG

  • iOS Safari 插件地址:https://apps.apple.com/cn/app/twine-by-swiftgg/id6451390893
  • macOS Safari 插件地址:https://apps.apple.com/cn/app/twine-by-swiftgg/id6451390893
  • Chrome 插件地址:https://chrome.google.com/webstore/detail/twine-by-swiftgg/kelkibamnlfhadhkaonlpplfiidhbofk

目前我们支持了三个互动式的教学文档,它们分别是:

  • SwiftUI Tutorials:https://developer.apple.com/tutorials/swiftui
  • SwiftUI Concepts Tutorials:https://developer.apple.com/tutorials/swiftui-concepts/
  • Sample Apps Tutorials:https://developer.apple.com/tutorials/sample-apps

我们的野心

或许你会问,为什么只支持 3 个 SwiftUI 的教学文档呢?你们还有更大的想法么?

我们认为在未来,SwiftUI 会是 Apple 生态内非常重要的一项技术,它需要尽快被普及起来,所以在项目初期,我们就选定了 SwiftUI 的三个互动教程作为 Twine by SwiftGG 的试点内容,但我们的野心远不止这些!

我们想帮助更多不同语言的开发者,学习更多的 Apple 技术文档!

我们当然认为 Twine by SwiftGG 还可以做的更好,尤其在今年参加完在 Apple 总部的交流会后,我们认为 SwiftGG 应该承担更多的责任,把视野放的更大,更远,更高,为整个 Apple 生态做出更多的贡献,帮助更多的人来了解这个平台,所以当下,我们的目标有三个:

  • 支持更多的语言:因为前期的分离式设计,所以 Twine by SwiftGG 可以很容易的完成对其他语言的支持和扩展,比如日语,韩语等其他语言,作为内容贡献者,不需要关心建设网站,排版样式,分发渠道等,只需要关心教学内容本身即可。
  • 支持更多的技术文档:Twine by SwiftGG 这种直接基于浏览器的方式,可以很方便的完成对其他教学文档的兼容,还能保持良好的用户体验。比如近期 Apple 官网关于 visionOS 的学习页面。
  • 更高效的利用社区能力建设开发者生态:由于翻译内容完全开源且由技术社区进行驱动,避免了重复造轮子,还有闭门造车的情况,通过这种群策群力的方式,可以更好的建设 Apple 的开发者生态,让更多的人以一种更低的门槛学习技术,享受技术。

不过再大的野心,再好的目标,只有付诸行动才能实现,SwiftGG 翻译组里的小伙伴已经迈出了第一步,那么后面的路又该怎么走呢?

参与我们的项目

目前,Twine by SwiftGG 是一个完全开源的项目,由 3 个仓库构成,他们分别是

  • 浏览器插件仓库:https://github.com/SwiftGGTeam/swiftgg-trans-plugin
  • 数据后台仓库:https://github.com/SwiftGGTeam/swiftui-trans-api
  • 本地化文件库:https://github.com/SwiftGGTeam/swiftui-tutorial-chinese

下一阶段,我们要做的事情有:

  • 浏览器插件方面
    • 支持多语言,例如日语,韩语等
  • 数据后台仓库:
    • 使用 vapor (一款使用 Swift 语言的后端框架)对后台进行重构
    • 优化网页里英文内容的匹配规则,支持更多的页面,例如 visionOS 等内容
  • 本地化文件库
    • 提供更多学习资料的本地化文档
    • 优化翻译文档的格式和内容编辑体验

说了这么多,你可能也发现了,我们要做的事情还有很多,同时随着 visionOS 和 Apple Vision Pro 的发布,属于 Swifter 的春天又来了。不管你有没有经历过 2016 年 Swift 语言在国内社区的火热场景,我们都想诚挚地邀请你加入到 2023 年属于 Swift 语言的新时代。你可以从上面任意一个仓库开始,用你的一行行代码或者文字,为国内 Swift 开发者生态的繁荣添砖加瓦。

图片

我们相信,一个人可能走得很快,但只有一群人才能走得更远,所以让我们一起

Make Apple Developer Ecosystem Great Again!