開源文檔翻譯的質量保障實踐

本文也發在我的博客上:開源文檔翻譯的質量保障實踐

五月份,我宣布了 Kotlin 官方參考文檔翻譯完畢的消息,其中有提到這也是唯一一份完整且最新的官方參考文檔翻譯。不僅如此,其中值得一提的還有翻譯質量。

Kotlin 中文站良好的翻譯質量跟很多不錯的翻譯實踐是分不開的。這些實踐對於其他文檔翻譯項目也有很高的參考價值,特單獨拿出來分享。

直接 fork 外文源站

這個在 Kotlin 官方參考文檔翻譯完畢已經介紹過:這樣做的顯著優勢是官方站有任何更新可以及時合併進來。雖然這可能會引入衝突解決環節,並可能會影響翻譯完整度,但這些與所帶來的優勢相比都是微不足道的。畢竟很難想像錯過勘誤的文檔甚至內容陳舊的文檔如何稱之為質量好。

行級對照翻譯

Kotlin 中文站翻譯參考文檔時,我們要求翻譯後的中文與英文原文能夠行級對應,即每行都是一一對應的。如果英文的一段文字分作了多行,中文也要按照原文分作多行,如下圖所示:

這樣做有兩點優勢:

  1. 源站更新後合併過來時,能夠減少衝突發生,並且在發生衝突時也便於解決。
  2. 能夠逐行對照中英文,便於檢查是否有遺漏或者失誤的地方。

當然這樣一來,會引出一個問題。比如上圖的倒數第二段,英文加了兩個斷行,分別發生在 of 和 inside 之前。中文與之對應,分別斷在函數和中的之前,而這樣一來渲染出的網頁就會在斷詞處多出空格,如下圖紅圈標註的地方:

當然,如果現在打開 類和繼承 - Kotlin 語言中文站,在文末並不會看到相應的空格,那是因為我們通過利用 HTML 注釋的方式解決了這一問題,見下圖:

小屏校對

我基於 Kotlin 中文站的參考文檔製作了相應的 GitBook,之後發現用手機看 ePub 版電子書的時候更容易發現問題,因為手機屏幕尺寸較小,每屏的字數要比電腦屏少很多,更容易聚焦在局部。如果細讀這頁,就會發現第二段代碼有些問題:

也許你已經看出來了,注釋導入所有名為「goo」擴展讀起來不通順,因為擴展前面少了個的。這樣就發現了一處疏忽,加上之後就好了:

上圖再往下看,會發現代碼中還有問題。沒錯,括弧不對稱,fun usage 應該以大括弧結尾,但是代碼中卻是圓括弧。通過對比我發現源站就有這一拼寫錯誤,修正後提 PR 給源站,然後再合併回來,就是現在的樣子了:

統一術語

相信統一術語的重要性已經深入人心,這裡只舉一些實際的例子:

  1. 方法」還是「函數」:受既有 Java 術語影響,早期的翻譯中很多本該譯為「函數」的地方也翻譯成了「方法」,因為 Java 中統一稱「方法」。 但 Kotlin 不一樣,它既有「方法」也有「函數」,甚至也可以像 C++ 那樣將方法稱為「成員函數」。 所以最好的翻譯方式就是「忠於原文」,即原文用「function」則翻譯為「函數」,原文用「method」則翻譯為「方法」。
  2. 範圍」不準確:在統一校對前,譯文中有不少「範圍」這一術語,其中有的原文是「range」也有的是「scope」。 對於「scope」更確切的譯法應該是「作用域」。 而對於「range」更確切的譯法應該是「區間」,尤其是「close range」自然應該譯作「閉區間」。
  3. 型變」:泛型相關的術語「variance」譯為「型變」、「covariant」譯為「協變的」、「contravariant」譯為「逆變的」。而「invariant」沒有譯為「不變的」, 為避免歧義,結合型變這一詞根,將其翻譯為「不型變的」。
  4. 註解」怎麼辦:通常註解的名詞形式「annotation」很好翻譯,即「註解」。而其動詞形式如果也翻譯為「註解」就比較麻煩了,尤其遇到 annotated with the annotation 這樣的詞句時。 因此,Kotlin 中文站通常將參考文檔中的「annotate」翻譯成「標註」或者「用註解標註」。這樣剛剛提到的詞句就翻譯為「用該註解標註的」。
  5. 參見」與「參閱」:在統一校對前,「see … for」有多種譯法,包括「查看」、「參見」、「參閱」等。統一校對後,將「see … for」統一譯為「關於……請參見」。 而將「read … for」統一譯為「關於……請參閱」。

注重細節

其實上面介紹的幾條都包含了不少細節在裡面。Kotlin 中文站參考部分在翻譯過程中所注重的細節還有:

  1. 「the」有時也要翻譯。尤其用於特指上文中提到的一項事物時,通常譯作「該」。
  2. 注釋也翻譯。參見上面的例圖。
  3. 中文與英文之間留空格。
  4. 文中以及代碼注釋中出現的標點都替換為全形。
  5. 表示代碼省略的 ... 也替換為中文省略號……。
  6. 英文中表示並列關係的逗號,翻譯後轉換為頓號。如

    「The following escape sequences are supported: t, b, n, r, , ", and $.」

    翻譯為

    「 支持這幾個轉義序列:t、 b、n、r、、"、 和 $。」

群策群力

  • 翻譯

    一個人能力畢竟有限,Kotlin 中文站是由大家共同翻譯的,參見貢獻者名單。

  • 校對

    後期主要由我來統一校對,使用了行級比較、小屏校對等方法,還用到了一些腳本與小工具作為輔助。 但是即便如此,還是會有在所難免的疏漏之處。 這時多人的力量再次凸顯:多人評審、讀者反饋與協作改進這些實踐中的多人參與讓 Kotlin 中文站的翻譯質量越來越好。

由衷感謝參與 Kotlin 中文站翻譯與改進的每個人。 Kotlin 中文站的翻譯工作還在進行中,教程部分還有很多章節需要翻譯,另外隨著官方參考文檔的更新中文站也需及時更新,歡迎更多人參與進來。


推薦閱讀:

Kotlin雜談(一) - 高等函數(Curry + 閉包)
Android 開發者自述:為什麼我要改用 Kotlin?
Kotlin 互動式命令行工具:kotlinc
#Kotlin# 一年の使用報告 - 函數式思想
Kotlin 讓使用 Android API 變得輕鬆

TAG:Kotlin | 文档 | 翻译 |