怎样开发一个中文版的Drupal API站

我开发了一个Drupal中文API手册站,有的朋友想知道我是如何做的,这里就跟大家大致分享一下思路。

首先,当然是先架设一个英文的API站

架设英文API站,有个捷径,就是安装官网的API发行版,我在本地安装一遍之后,为了更好的理解和掌控,我还是打算使用api模块来实现API手册英文站,主要原因有两点:

  1. 发行版过于庞大,不利于部署
  2. 我的API站点是Drupal多站点的一个子站,发行版则是独立的一个站,合并这两者本身也有一定的难度和工作量。

通过使用API模块,主要参考这篇教程一步一步的架设起了API英文站。具体步骤不在这里细说了,我索引了Drupal6, Drupal7, Drupal8,以及10多个常用模块的代码。这也是我觉得有必要自己架API站的原因之一,官网除了核心只索引了很少的第三方模块的代码,而自己弄可以需要哪个模块添加哪个模块。

怎样将英文手册本地化

如果是别的Drupal文档,我们一般采用翻译的方式做文档本地化。但api站本身是个系统,这就给我们系统地解决手册本地化提供了可能。

我开发了一个api_translate的模块,通过hook_menu_alter,将许多api模块定义的文档路径都改写了,让他们走我定义的函数,而我定义的函数只是在原函数的基础上稍加改动。

api模块主要的表是api_documentation,里面存放了每个面的英文文档,我建立了一个api_documentation_translate的表,用同样的字段和ID,将里面的英文翻译过来。并且让每个页面走我的翻译表,如果没有翻译再走默认的英文文档表。

这是一个慢工细活,我需要识别许多种页面类型,并且分别去找改写方法。比如有许多表格,如果要翻译就需要通过钩子来改写Views的行为。

实现一个翻译后台

翻译后台是完全自定义的,用来操作自定义的api_documentation_translate表。为了更好的翻译,我需要再里面加上所见即所得编辑器,原文对照等特性。

整合微信公众平台

由于之前已经将微信与网站的模块数据打通,这次只需要去对应的表里查文档即可,由于是索引的代码,所以我实现了在微信里查每一个Drupal函数的签名和文档的功能。

未来发展方向

目前开发仍在进行中,不过已经有许多类型的文档页面已经可以被翻译了,我目前正在从主要和常用的文档入手进行翻译,未来我打算:

  • 将翻译权限对外公开,让更多的人参与文档翻译工作。
  • 让每一个翻译的人能够在文档中得以署名

最后,欢迎每一位Drupal开发者光临和使用Drupal项目社区,让我们一起共建Drupal社区,繁荣Drupal社区,与Drupal一起成长。