翻译 Debian 网页

为了让翻译人员的工作更加容易,在这些页面的生成方式和您过去所熟知的之间存在一些差异。实际上这些网页是通过由 wml 标记的源代码自动生成的。 每一门语种都有各自对应的目录。

如果您计划为 Debian 网页开创一个新的语种的翻译工作,请查阅 开创一个新语种 一节。

翻译单独的页面

我们使用 WML 区分一个页面关键的内容和多个页面共通的元素。意思就是唯一需要编辑的是 WML 源代码,而不是 HTML 文件。 请 使用 Git 获取当前的源代码。您将需要签出 (check out) 至少两个目录:webwml/english/webwml/<language>/

要将一个单独的页面从英语翻译成您所用的语种,原始的 .wml 文件需要被翻译并放置在那个语种对应的目录。文件的相对路径以及名称需要和英语目录中的保持一致,以便链接能够正常工作。

翻译页首

强烈建议翻译人员在页首的最后一个 #use 叙述句之后追加一行,用于记录该被翻译的原始文件的版本,来 方便更新。这一行看上去应该像这样: #use wml::debian::translation-check translation="<git_commit_hash>" 请注意如果您使用 copypage.pl 工具产生翻译用档案(推荐使用此方式),将会自动填入 git 版本。 copypage.pl 工具的用法将后述。

另外某些翻译小组还会用这一行给每个网页标记一位官方翻译人员。如此一来,当您所维护的这个页面在英语目录中相应位置有更新时,您将会自动收到邮件通知,提醒您更新这个翻译工作。 为此,只要在刚才 #use 一行的最后简单地加上您的名字作为维护者使它看起来像这样: #use wml::debian::translation-check translation="git_commit_hash" maintainer="your name"。如果您设定了 DWWW_MAINT 环境变数,或是使用 -m 命令列参数,copypage.pl 将能自动填入。

通过使用 webwml 根目录中的 copypage.pl 脚本可以很容易的产生一个网页的页首信息。这个脚本将复制页面到正确的位置,在必要时建立目录以及产生 makefile,并且自动添加所需的页首信息。 您可能会收到警告该页面已经存在仓库中,表示该页面可能曾经翻译过但过期太久而被删除,或是因为已经有人在您之前提交新的翻译。

在开始使用 copypage.pl 之前,您需要先设定在 webwml 根目录下的 language.conf 文件,它被用来指定您要翻译的语种。该文件最多需要两行:第一行设置语言名称(如 german),第二行是可选的,用于设置负责维护的翻译者的名字。您也可以通过使用 DWWW_LANG 环境变数来设定语种,并使用 DWWW_MAINT 环境变量设置您的名字,以便 copypage.pl 将其添加到翻译维护者生成的 wml 文件的顶部。也存在第三种可选方案,您可以通过使用命令行参数 -l german -m "Donald Duck" 设置语言和维护者名字(可选), 而根本不使用 language.conf 文件。这个脚本还提供其他功能,只要不带参数执行即可得到说明信息。

当您执行过 ./copypage.pl file.wml 之后,便可以对这个文件中的原始内容进行翻译了。文件中的注释用于标示一些不需要被翻译的条目,请保留它们。 不要作任何有关格式方面的多余改动,如果真有需要的话,改动或许应该在原始文件中完成。

页面的编译和发布

自从我们使用 内容协商 以来,HTML 文件的命名规则就不是 file.html 而是 file.<lang>.html,这里 <lang> 指的是由两个字符代表的语种,遵循 ISO 639(例如 zh 代表中文)。

您通过执行 make file.<lang>.html 可以从 WML 编译得到 HTML。成功的话,请使用 weblint file.<lang>.html 检查语法是否完全正确。

注意:网页将会定期于 www-master 服务器根据 git 内的原代码重新编译。大多数零散的错误在这个过程中都将被忽略。 但是,如果您提交了一个有问题的文件到您翻译工作的顶级目录中(例如顶级目录中的 index.wml 文件),那么不仅编译过程将被中断,还将连累整个网站 的更新。请密切留意这些文件。

一旦一个页面准备好,您就可以将它提交到 Git。如果您自己有权限的话,请提交至 webwml git 版本库。 否则,请把这个页面发送给 有权限写入版本库的人

开创一个新的语种

如果您希望为 Debian 网页开创一个新的语种,请发送电子邮件(请用英语)/给我们 webmaster@debian.org

首先,确认您已经适宜的签出了我们的源码树,请参考 我们介绍 Git 的页面

当您签出了原代码之后,先在 english/ 目录旁边为您的语种建立一个目录。该目录名称必须完全使用小写英文(例如用“chinese”而不是“中文”)。

从 english/ 目录复制 Make.lang.wmlrc 这两个文件到新语种的目录。这些文件对于从 WML 文件中编译出您的翻译工作发挥著重要作用。 当您复制它们到新语种目录之后,您只需要修改这些东西:

  1. Make.lang 文件中的 LANGUAGE 变量必须作修改。
  2. .wmlrc 文件中的 CUR_LANG、CUR_ISO_LANG 和 CHARSET 变量必须作修改。如果您还需要进行排序的话,请添加 CUR_LOCALE。
  3. 有些语种需要对字符进行额外处理。通过传递 --prolog 和 --epilog 参数给 wml 的方式可以满足这种要求。请在 Make.lang 文件中使用 WMLPROLOG 和 WMLEPILOG 变量实现此功能。
  4. 顶层 webwml/Makefile 文件中的 LANGUAGES 变量必须作修改, 只有这样您的语种才能和其它语种一同在 www.debian.org 上得到编译。 我们更愿意看到的是您把这部分工作留给网站管理员, 因为您可能没意识到由于您的新语种可能存在的错误将导致我们其它语种的网页无法得到有效处理。

当以上工作都完成后,在刚才的目录中新建一个名为 "Makefile" 的文件,写入下面的这一行:

include $(subst webwml/yourlanguagedir,webwml/english,$(CURDIR))/Makefile

(请用您的语种目录的名字替换 yourlanguagedir

现在请在您的语种目录下创建一个名为 "po" 的子目录,并且把同样的 Makefile 复制到该目录 (cp ../Makefile .)。

在 po/ 目录中,运行 make init-po 产生初始的一系列 *.po 文件。

现在您已经搭建好了框架,通过使用公用的 WML 模板您可以开始添加您的翻译了。您最先翻译的模板应该是那些在所有网页中都出现的内容,比如页首关键字,导航条上的条目,还有页脚。

开始在 po/templates.xy.po 文件 (这里 xy 指代表的您的语种的两个字符) 中进行翻译吧。每一个 msgid "something" 都对应一个 msgstr "",您应该在 msgstr 后面的双引号内填入翻译条目。

您不必翻译所有 .po 文件中的每个条目,除了那些你当前翻译的页面确实需要的。判断一个条目是否需要被翻译,请留意 .po 文件中在每个 msgid 条目上方的注释。 如果该注释中提及了 english/template/debian 文件,那么您多半需要翻译它。否则,您可以延缓翻译直到您实际翻译的页面需要该条目为止。

这些在 po/ 目录底下的档案的用意是让翻译人员方便工作,让他们几乎不需要自己编辑 english/template/debian 目录底下的东西。如果你发现任何模板目录内的错误,请确定该问题的修正是一般化的 (您也可以请别人帮你作这件事),而不是把真正的翻译提交到模板中,这会通常带来更严重的问题。

如果您不能确定您的某些操作是否合适,在签入代码之前请先在 debian-www 邮件列表上进行询问。

备注: 如果您发现您需要作任何其它改动,请发送电子邮件至 debian-www 说明您要改动的内容以及原因,这个问题便会得到解决。

当模板框架完成之后,您就可以开始前端页面和其它 *.wml 文件的翻译工作了。那些应当被优先翻译的文件列表,请看 指点页面。*.wml 页面的翻译事项就像 本页面开头 描述过的那样。

重建过期的翻译

如前面保持翻译的时效性所说,过期的翻译可能在很长一段时间没有更新之后,自动被系统回收。

如果您发现有些档案已被删除,而且您想要签出档案来编辑,您可以使用 git 标准命令来在版本历史中搜索。

例如,如果被删除的档案是 "deleted.wml",您可以执行以下命令来搜索历史纪录:

   git log --all --full-history -- <path/to/file/deleted.wml>

您可以找到删除该档案的正确版本,与该版本的杂凑字串。要显示该版本的详细修改内容,您可以执行 git show 子命令:

  git show <COMMIT_HASH_STRING> -- <path/to/file/deleted.wml>

如果该版本只删除了该档案,您可以使用 git checkout 来复原该档案:

  git checkout <COMMIT_HASH_STRING>^ -- <path/to/file/deleted.wml>

当您完成了这些步骤,您当然必须在提交之前更新该文件。否则该文件还是会再度被删除。

剩下来的故事

上述内容或许已经足够让您开始尝试了。之后,您可能想参考下列这些提供了更多详尽说明和附加信息的文件。

我们衷心的希望您认识到我们所做的努力使得翻译页面的工作变得更加容易。就像已经说过的,如果您有任何问题,您可以在 debian-www 邮件列表上询问我们。