准备工作

自上次词汇集多数的词汇已经多少都被决定了。不过,我忘了注意一项重要的区别:许多词汇会有多种不同的翻译是因为在简体中文和繁体中文当中,该词汇常常被翻成不同的东西,而同时因为中文翻译员多数时候只负责简体或繁体的翻译,这些词汇于是没有统一的翻译。接下来我需要决定如何决定这个问题,我可以选择有两个分开的词汇集,一个简体一个繁体,或者我可以选择性的融合两种翻译。

在过去的两个星期,除了决定翻译词汇外,我也开始准备并了解网页的翻译设置。以下我会记录我所学得的,如果以后有更多的语言开始翻译,或许这能提供一个有效的起点。


主页的测试翻译,主要用于了解翻译设置

要开始一项 p5.js 的翻译工作并不难,参阅 README.md 可以了解第一步是复制两个文件:en.yml 和 es.json 并将他们从新命名成符合新的语言的代号。接下来在 Gruntfile.js 中增加一项新的语言代号。

不过,在以上最后一步我碰到了一个问题:Gruntfile.js 当中的创建步骤假设我们使用的语言代号一定是两个字母,虽然这假设对多种语言来说不会有太大的问题,对中文来说却不适用。要了解为什么我们必须先了解语言代号。世界各地多数的语言被分配了各自的语言代号,比如 en 表示英文、es 表示西班牙文等,虽然 zh 表示中文,可是中文同时能被分别为不同的方言、地域差别和书写差别等。

为此我们可以参考 W3 HTML 标准所使用的语言代号。在此我们需要决定的是简体和繁体的代号,主要因为他们使用不同的字体。为表示一个语言当中的分叉语言,我们只需要在语言代号(zh)之后加个长划(-)接着分叉语言代号就可以了。因此,简体中文为 zh-Hans 而繁体中文为 zh-Hant 。有些地方可能使用 zh-cn 和 zh-tw 来表示简体和繁体可是我觉得 cn 和 tw 比较适用于表示语言使用的地域而不是他们的书写差别,同时 zh-Hans 和 zh-Hant 也是 W3 HTML 标准所建议的语言代号。

回到我们一开始的问题,我们不能直接检视新建文件名的最后两的字母,因为语言代号如以上所说的不一定是两个字母。因此,我稍微更改了创建步骤,使用 lastIndexOf 以找出语言代号在文件名中的位置并将其删除。这系统应该能处理任何语言代号。


同时我也做了许多小决定,在这里我只提多两个决定。第一是决定我们该使用的字体。现在 p5.js 网页使用的字体是 Avenir Next 无衬字和 times 有衬字并没有提供其他选择。Avenir Next 本身的许可要求可能会对我们造成一点问题,因此或许我们应该找些许可比较宽容的字体。我们也必须考虑字体所支持的文字,大多数字体只支持 ASCII 字体而不提供更广泛的支持。

现在我正在考虑使用 Noto 系列的字体,其中 Noto CJK Sans 也被称为 “思源黑体”。Noto 的特点是它是一系列字体而这一系列字体支持将尽所有 Unicode 所支持的语言,因此除了能够有非常广泛子字体支持,同时混合使用不同的语言也不会造成太大的设计问题。接下来我还需要做更多测试和决定如何编写 CSS 以方便各种语言的排版。


至于写作方便,我们需要对文案风格做一些决定。当我们混合使用中文和拉丁字母时,我们需要特别注意一些排版规则以方便读者能顺畅及舒适的阅读文案。在此链接有一系列的规则,不过其中最重要的是汉字和拉丁字母之间应该要加个空格(如 “使用 GitHub 登录”)。不加个空格的话(使用GitHub登录)会使阅读该字串更加困难,而读者需要花更多心思去阅读该字串。

除此之外还有一些列该注意的事项,你可以去以上链接参考。不过为了更方便翻译工作,我在 p5.js 中文网页上增加了个编程库:pangu.js 。其主要功能是自动在汉字和拉丁字母之间加个空格,因此我接下来只需要注意其他文案风格事项而不需特别注意空格的问题。以上文案风格链接也提到了一些有多个选择的风格问题,我们接下来也需要对于这些风格做个决定。


到此,许多东西都仍在进行中,如果你想跟踪翻译进度的话请继续关注 Medium 及 p5.js-website 在 GitHub 的 Repo(特别是 zh-translation 分支)。