據(jù)科學(xué)博客中文翻譯實(shí)踐:術(shù)語(yǔ)規(guī)范與代碼復(fù)核全流程解析)
“某數(shù)據(jù)科學(xué)平臺(tái)博客中文翻譯二”是我最近做完的一個(gè)內(nèi)容漢化項(xiàng)目。做技術(shù)內(nèi)容這幾年我始終有“知識(shí)只對(duì)自己夠用不算本事”的想法所以當(dāng)這個(gè)翻譯項(xiàng)目進(jìn)入第二期時(shí)我花了兩個(gè)多月把二十多篇英文數(shù)據(jù)科學(xué)文章逐篇翻譯、審校、重跑代碼最終整理成一套可以直接閱讀和復(fù)用的中文內(nèi)容。這個(gè)項(xiàng)目適合兩類(lèi)人一類(lèi)是英文閱讀有障礙、又想系統(tǒng)學(xué)習(xí)數(shù)據(jù)分析與機(jī)器學(xué)習(xí)的讀者另一類(lèi)是打算做技術(shù)文檔漢化、知識(shí)庫(kù)遷移或內(nèi)容本地化的譯者和內(nèi)容運(yùn)營(yíng)。文章主題覆蓋數(shù)據(jù)處理、建模、可視化和數(shù)據(jù)工程這些常見(jiàn)方向整套過(guò)程不光是逐句翻譯還包括術(shù)語(yǔ)統(tǒng)一、示例重建、代碼驗(yàn)證和排版規(guī)范。這篇文章把第二期項(xiàng)目是怎么組織起來(lái)的、選了哪些文章、定過(guò)哪些規(guī)則、踩過(guò)哪些坑原原本本寫(xiě)出來(lái)給打算走類(lèi)似路線的朋友做個(gè)參考。1. 項(xiàng)目緣起為什么第二期要做“翻譯”而不是“創(chuàng)造”1.1 第一期留下的三個(gè)關(guān)鍵復(fù)盤(pán)第一期翻譯完成后我回頭翻了一遍所有譯文發(fā)現(xiàn)有三件事如果當(dāng)時(shí)重新做一定會(huì)換一種思路。第一是術(shù)語(yǔ)不一致。同一批文章里“feature”有的譯成“特征”有的譯成“變量”甚至有篇文章直接寫(xiě)“特點(diǎn)”“scaling”一會(huì)兒是“縮放”一會(huì)兒是“歸一化”。讀者連續(xù)讀幾篇譯文時(shí)很容易產(chǎn)生“這幾篇文章是不是同一批人寫(xiě)的”的疑惑。第二是翻譯腔。不少句子是照著英文逐詞替換過(guò)來(lái)的倒裝結(jié)構(gòu)和被動(dòng)語(yǔ)態(tài)全保留下來(lái)讀起來(lái)非常累。比如“模型被評(píng)估使用多種指標(biāo)”中文讀者看到這種句子要先在腦子里重新組織一遍語(yǔ)序正常的說(shuō)法應(yīng)該是“我們用多種指標(biāo)評(píng)估模型”。第三是代碼和圖片沒(méi)有嚴(yán)格復(fù)核。很多譯文只翻譯了正文圖例和坐標(biāo)軸文字還是英文代碼換個(gè)環(huán)境就直接報(bào)錯(cuò)。這三點(diǎn)直接成為第二期設(shè)計(jì)的出發(fā)點(diǎn)先建術(shù)語(yǔ)表再定風(fēng)格規(guī)范最后加一道完整的技術(shù)復(fù)核環(huán)節(jié)。1.2 第二期選了什么文章服務(wù)什么讀者第二期的選文范圍不是把平臺(tái)上的文章全部拿過(guò)來(lái)。我重點(diǎn)挑了三類(lèi)內(nèi)容。第一類(lèi)是能直接落地的操作型文章比如數(shù)據(jù)清洗、基礎(chǔ)可視化、常見(jiàn)查詢寫(xiě)法讀者看完能馬上在項(xiàng)目里使用。第二類(lèi)是概念型文章涉及機(jī)器學(xué)習(xí)流程、模型評(píng)估、特征工程這些偏底層邏輯的內(nèi)容這類(lèi)內(nèi)容最容易“看完就忘”但恰恰最需要準(zhǔn)確翻譯因?yàn)樾g(shù)語(yǔ)一旦混亂后面學(xué)什么都歪。第三類(lèi)是專(zhuān)題深入型比如時(shí)間序列處理、模型可解釋性、性能調(diào)優(yōu)服務(wù)的是已經(jīng)做實(shí)際項(xiàng)目的讀者。為了控制難度梯度我把入選文章分成三檔。入門(mén)實(shí)操類(lèi)8篇建模進(jìn)階類(lèi)9篇專(zhuān)項(xiàng)深入類(lèi)7篇總計(jì)24篇。排除掉兩類(lèi)內(nèi)容一類(lèi)是促銷(xiāo)性質(zhì)過(guò)強(qiáng)的軟文這類(lèi)文章技術(shù)含量低翻譯過(guò)來(lái)也沒(méi)多少價(jià)值另一類(lèi)是過(guò)度依賴特定商業(yè)產(chǎn)品版本的文章等翻譯完產(chǎn)品已經(jīng)升級(jí)內(nèi)容就失效了。這個(gè)篩選原則我建議所有做技術(shù)翻譯的人都拿小本子記一下不是所有文章都值得翻譯選文的判斷標(biāo)準(zhǔn)應(yīng)該是內(nèi)容質(zhì)量加穩(wěn)定性。1.3 第二期相比第一期的四大改進(jìn)第一期暴露出來(lái)的問(wèn)題在第二期做了系統(tǒng)性調(diào)整具體落在四個(gè)方面。第一術(shù)語(yǔ)表前置。第一期的術(shù)語(yǔ)表是翻譯到一半才補(bǔ)的第二期直接從第一批源文本里抽出高頻詞提前定好譯法后面所有文章共用一張表。第二每一篇文章增加“技術(shù)復(fù)核記錄表”記錄代碼運(yùn)行環(huán)境、依賴版本、運(yùn)行結(jié)果任何一篇文章出了問(wèn)題都能按記錄追查不用全文重新檢查。第三圖片和圖表盡可能重新繪制用中文標(biāo)簽替代英文原文而不是繼續(xù)沿用帶英文標(biāo)注的舊圖。第四在譯文里保留原文的版本說(shuō)明凡是涉及庫(kù)版本差異、函數(shù)改名的地方都用“譯者注”顯式標(biāo)出。這四個(gè)改動(dòng)并不復(fù)雜但實(shí)際操作時(shí)非常有效。尤其是術(shù)語(yǔ)表前置這一條看起來(lái)只是調(diào)整了工作順序?qū)嶋H上讓整個(gè)團(tuán)隊(duì)少吵了無(wú)數(shù)次架。以前翻譯到一半發(fā)現(xiàn)術(shù)語(yǔ)沖突只能返工現(xiàn)在所有成員從第一天起就在同一個(gè)語(yǔ)言框架下工作譯者之間的風(fēng)格差異被壓到最小。2. 技術(shù)翻譯的術(shù)語(yǔ)規(guī)范與風(fēng)格基準(zhǔn)2.1 術(shù)語(yǔ)表怎么建30個(gè)高頻詞的譯法建術(shù)語(yǔ)表這件事看起來(lái)簡(jiǎn)單做起來(lái)容易走過(guò)場(chǎng)。我的做法是先從第一期的所有譯文中抽取了160個(gè)候選詞再結(jié)合出現(xiàn)頻率、爭(zhēng)論次數(shù)、讀者反饋篩出30多個(gè)高頻術(shù)語(yǔ)。每個(gè)詞不只要定一個(gè)“推薦譯法”還要寫(xiě)清楚適用語(yǔ)境和備注。下面是當(dāng)時(shí)定下來(lái)的一部分可以直接當(dāng)成初始模板用英文術(shù)語(yǔ)推薦譯法使用場(chǎng)景與備注feature特征指模型輸入維度時(shí)使用不譯成“特點(diǎn)”label標(biāo)簽監(jiān)督學(xué)習(xí)的目標(biāo)變量避免譯成“標(biāo)記”overfitting過(guò)擬合中文社區(qū)通用說(shuō)法無(wú)需保留英文hyperparameter超參數(shù)與“參數(shù)”區(qū)分參數(shù)是模型內(nèi)部學(xué)到的pipeline管道首次出現(xiàn)時(shí)括號(hào)注明英文pipelineDataFrameDataFrame接口名保留英文可說(shuō)明為“表格數(shù)據(jù)”bias偏置神經(jīng)網(wǎng)絡(luò)中的參數(shù)統(tǒng)計(jì)里譯“偏差”regularization正則化中文社區(qū)通用說(shuō)法不譯“規(guī)則化”tuning調(diào)參不譯“調(diào)優(yōu)”調(diào)優(yōu)容易產(chǎn)生歧義baseline基線指基準(zhǔn)模型或?qū)φ辗椒╠eployment部署指模型上線避免“部署上線”重復(fù)術(shù)語(yǔ)表的價(jià)值不只是給翻譯人員看后面的技術(shù)復(fù)核、排版校對(duì)甚至讀者反饋都能基于同一個(gè)標(biāo)準(zhǔn)對(duì)話。沒(méi)有這張表每個(gè)人對(duì)“feature”的理解都可能不同質(zhì)量就完全靠個(gè)人發(fā)揮。2.2 英文保留還是中文全譯我有這樣一套取舍邏輯技術(shù)翻譯里最常被問(wèn)的問(wèn)題就是這個(gè)英文詞要不要翻譯翻譯成中文后讀起來(lái)怪怪的不翻譯又顯得不夠本地化。我的取舍邏輯分三類(lèi)。第一類(lèi)代碼符號(hào)和接口名全部保留英文。類(lèi)名、函數(shù)名、包名該是什么還是什么因?yàn)榇a跑不跑得通取決于這些符號(hào)本身強(qiáng)行翻譯反而會(huì)害了讀者。第二類(lèi)通用學(xué)術(shù)術(shù)語(yǔ)盡量中文化比如“過(guò)擬合”“正則化”“梯度下降”這些在中文技術(shù)社區(qū)里已經(jīng)形成固定譯法不需要猶豫。第三類(lèi)介于兩者之間的半保留處理第一次出現(xiàn)時(shí)先給出中文譯法后面括號(hào)注明英文原文比如“管道pipeline”之后再次出現(xiàn)就直接用中文。這套邏輯背后有一個(gè)核心判斷技術(shù)文章的讀者通常需要對(duì)照英文文檔查資料。如果把所有英文術(shù)語(yǔ)都換成中文讀者看到某個(gè)函數(shù)名時(shí)根本不知道它對(duì)應(yīng)英文原文是什么查文檔就沒(méi)法下手反過(guò)來(lái)如果全文大量保留英文譯文和原文的差別就只剩下語(yǔ)法外殼那翻譯的意義就少了一大半。所以第二期定了一個(gè)總原則概念中文化、標(biāo)識(shí)符英文原樣。這個(gè)原則在后來(lái)的實(shí)際翻譯中幾乎沒(méi)有遇到需要推翻的情況。2.3 排印和語(yǔ)氣怎樣去掉翻譯腔去翻譯腔是技術(shù)翻譯里最考驗(yàn)語(yǔ)感的一步。我的做法是把“直譯”和“意譯”的邊界畫(huà)得很清楚。以原文里常見(jiàn)的一句話為例“The model doesn’t handle missing values well”直譯是“該模型不能很好地處理缺失值”聽(tīng)上去不算錯(cuò)但始終有一點(diǎn)硬。改成“這個(gè)模型處理缺失值的效果并不理想”就自然很多而且意思更準(zhǔn)確。技術(shù)文章要的不是字對(duì)字而是把作者的判斷完整傳達(dá)給中文讀者。排版層面同樣有規(guī)則標(biāo)題層級(jí)保持和原文一致但標(biāo)題字?jǐn)?shù)可以調(diào)整因?yàn)橹形臉?biāo)題在同等長(zhǎng)度下承載的信息量比英文密度高。原文里的提示性語(yǔ)句統(tǒng)一成“提示”區(qū)塊英文里的“Note that”不再直譯成“請(qǐng)注意”而是直接用“ 提示”的樣式。全文使用中文標(biāo)點(diǎn)代碼塊內(nèi)保持英文標(biāo)點(diǎn)英文單詞和中文之間統(tǒng)一加一個(gè)空格保證視覺(jué)效果不擠成一片。這些小規(guī)則看著瑣碎但讀者閱讀舒適度大部分是它們決定的。2.4 代碼、圖表、公式的處理策略代碼部分一直是技術(shù)翻譯的難點(diǎn)因?yàn)榉g代碼和翻譯文章是兩個(gè)維度的事。第二期的處理策略是代碼注釋盡量中文化但變量名、列名、函數(shù)名一律不動(dòng)。原因是代碼要直接在讀者環(huán)境中運(yùn)行變量名一旦翻譯整個(gè)示例腳本就斷了。注釋中文化后要重新檢查縮進(jìn)和對(duì)齊不能因?yàn)橹形娜亲址騺y了格式。對(duì)于依賴特定版本的函數(shù)譯文里會(huì)寫(xiě)明“該函數(shù)在某某版本后遷移至新的模塊”并給出一段對(duì)應(yīng)寫(xiě)法。圖表和公式的處理則更依靠判斷。原文章里很多圖表是用英文繪圖庫(kù)生成的如果我們直接搬運(yùn)讀者看到中文正文配英文圖體驗(yàn)很差。所以第二期里凡是數(shù)據(jù)可復(fù)現(xiàn)的圖我們都用中文標(biāo)簽重新繪制只保留原圖的配色和含義少數(shù)無(wú)法復(fù)現(xiàn)的圖則在圖注里完整解釋圖內(nèi)文字含義。數(shù)學(xué)公式保持原有的寫(xiě)法不在公式內(nèi)部做無(wú)意義翻譯但在公式下方增加一句中文解釋說(shuō)明這個(gè)公式在做什么。這套方案兼顧了準(zhǔn)確性、美觀性和一致性。3. 翻譯全流程實(shí)操?gòu)倪x文到發(fā)布3.1 源文本清洗與格式摸底正式動(dòng)筆之前先花三天做源文本清洗和格式摸底。第二期從平臺(tái)導(dǎo)出的文章格式非常不規(guī)整有標(biāo)準(zhǔn)Markdown有帶HTML標(biāo)簽的混合格式還有從筆記本環(huán)境導(dǎo)出后殘留的大量元數(shù)據(jù)。清洗階段我用腳本做了三件事把所有HTML代碼標(biāo)簽轉(zhuǎn)成統(tǒng)一的Markdown反引號(hào)格式清理文章底部預(yù)埋的訂閱組件和無(wú)關(guān)鏈接把原始圖片路徑統(tǒng)一重寫(xiě)成本地相對(duì)路徑。格式摸底則是逐篇記錄每篇文章包含哪些組件是否有代碼塊、是否有圖、是否有數(shù)學(xué)公式、代碼里是否涉及特定版本提示。這張檢查表看起來(lái)簡(jiǎn)單但能省掉后期很多麻煩。因?yàn)樵诔醴A段就知道哪些部分需要特殊對(duì)待不會(huì)出現(xiàn)翻譯到一半才發(fā)現(xiàn)某個(gè)代碼塊缺了一半、圖片鏈接失效的問(wèn)題。檢查表還會(huì)標(biāo)注文章原文發(fā)布時(shí)使用的軟件版本留給技術(shù)復(fù)核階段做參考。3.2 初翻與疑難標(biāo)記先定結(jié)構(gòu)再填肉初翻階段我的流程是先翻譯標(biāo)題、小標(biāo)題、圖注和代碼注釋把整篇文章的結(jié)構(gòu)骨架先立起來(lái)。這一步有兩個(gè)好處一是能盡早發(fā)現(xiàn)原文結(jié)構(gòu)上的問(wèn)題比如章節(jié)編號(hào)跳號(hào)、標(biāo)題層級(jí)混亂二是給正文翻譯提供上下文錨點(diǎn)翻譯具體段落到時(shí)不至于偏離整體邏輯。之后才進(jìn)入正文翻譯盡量保持段落一一對(duì)應(yīng)方便后續(xù)復(fù)核。遇到拿不準(zhǔn)的詞、文化梗、殘缺語(yǔ)句我不會(huì)停下來(lái)死磕而是用統(tǒng)一的標(biāo)記寫(xiě)清楚比如“{TBD:術(shù)語(yǔ)一致性待討論}”“{譯注:此處為雙關(guān)待處理}”。初翻階段流暢度比完美度更重要。把這些疑難點(diǎn)集中留到最后統(tǒng)一討論效率比邊譯邊糾結(jié)高得多。標(biāo)題也不逐字對(duì)譯允許在保證主旨不變的前提下做長(zhǎng)度調(diào)整。比如原文標(biāo)題要表達(dá)的是“調(diào)參的實(shí)用指南”中文標(biāo)題直接寫(xiě)成“超參數(shù)調(diào)參實(shí)戰(zhàn)指南”更短更直接也不脫離原意。3.3 技術(shù)復(fù)核代碼必須跑得通技術(shù)復(fù)核是第二期新增的關(guān)鍵環(huán)節(jié)也是我認(rèn)為最不能省略的環(huán)節(jié)。復(fù)核人員把所有代碼塊從文章里提取出來(lái)按文章順序組裝成一個(gè)可以順序執(zhí)行的腳本然后在干凈的測(cè)試環(huán)境里逐段運(yùn)行記錄下每一步的輸出和報(bào)錯(cuò)信息。遇到代碼報(bào)錯(cuò)先判斷是環(huán)境問(wèn)題還是原文問(wèn)題。如果原文代碼使用了某個(gè)庫(kù)的舊接口而當(dāng)前環(huán)境只支持新接口復(fù)核表中會(huì)寫(xiě)明兩種版本的寫(xiě)法并在譯文里加譯者注。如果原文的繪圖參數(shù)寫(xiě)錯(cuò)導(dǎo)致圖出不來(lái)我們會(huì)修正參數(shù)后重新出圖同時(shí)保留一條勘誤說(shuō)明。技術(shù)復(fù)核的副產(chǎn)品特別有價(jià)值很多文章在翻譯階段看得半懂跑完一遍代碼才知道作者到底在說(shuō)什么。這也是為什么我一直強(qiáng)調(diào)技術(shù)翻譯和文學(xué)翻譯不一樣沒(méi)有技術(shù)支撐的譯者做出來(lái)的譯文只能給人一種“字面懂了”的感覺(jué)一旦遇到具體操作就會(huì)露餡。3.4 潤(rùn)色、一致性檢查與發(fā)布清單技術(shù)復(fù)核完成后進(jìn)入潤(rùn)色和一致性檢查。潤(rùn)色階段我給團(tuán)隊(duì)的建議是譯文完成之后放一放隔幾個(gè)小時(shí)甚至隔天再拿回來(lái)重讀專(zhuān)門(mén)找那些讀起來(lái)拗口、需要來(lái)回看兩遍的句子。一致性檢查則分三個(gè)層面同一篇文章里同一個(gè)術(shù)語(yǔ)必須完全統(tǒng)一同一套系列文章里相同概念要用同一個(gè)譯法代碼注釋里的術(shù)語(yǔ)和正文的術(shù)語(yǔ)也要對(duì)應(yīng)上不能讓正文叫“偏置”代碼注釋里卻出現(xiàn)另一個(gè)詞。發(fā)布前檢查清單是流程的最后一道防線。清單包含這些項(xiàng)目所有疑難標(biāo)記是否已經(jīng)清理代碼塊里的中文標(biāo)點(diǎn)是否被誤用圖片是否正確引用代碼能否從頭到尾完整運(yùn)行文章末尾是否補(bǔ)上了譯者和復(fù)核記錄。只要清單里有一項(xiàng)沒(méi)過(guò)就不允許發(fā)布。這套流程走下來(lái)第二期的返工率比第一期低了不少絕大多數(shù)問(wèn)題都攔在發(fā)布之前。4. 實(shí)操中的高頻坑位與排查實(shí)錄4.1 一詞多義同一個(gè)詞在不同語(yǔ)境可能完全相反技術(shù)術(shù)語(yǔ)的一詞多義是翻譯過(guò)程中最隱蔽的雷區(qū)。拿“bias”來(lái)說(shuō)在神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)里它指“偏置”也就是每一層的偏移參數(shù)但在“bias-variance tradeoff”這個(gè)經(jīng)典語(yǔ)境里它又應(yīng)該譯成“偏差”和“方差”對(duì)立。同一個(gè)詞一句話之差就是兩個(gè)含義如果術(shù)語(yǔ)表里只寫(xiě)一個(gè)譯法一定會(huì)踩坑。我建了一張容易混淆的詞表給每個(gè)詞都注明上下文判斷依據(jù)。“variance”在統(tǒng)計(jì)和機(jī)器學(xué)習(xí)語(yǔ)境里是“方差”但在普通英文里還有“變化”的意思“schema”在數(shù)據(jù)庫(kù)場(chǎng)景譯“模式”在認(rèn)知模型場(chǎng)景譯“結(jié)構(gòu)”“server”既有“服務(wù)器”的名詞含義也有“服務(wù)端”的架構(gòu)含義。處理原則是不要試圖給一個(gè)詞定死唯一譯法而是定一個(gè)默認(rèn)譯法加一組上下文例外規(guī)則。技術(shù)翻譯追求的是準(zhǔn)確不是機(jī)械一致。4.2 上下文暗語(yǔ)作者默認(rèn)你懂的那些事英文技術(shù)博客的作者經(jīng)常默認(rèn)讀者有完整的閱讀背景。比如作者會(huì)寫(xiě)“正如我們?cè)谏弦黄恼轮锌吹降摹比绻弦黄恼聸](méi)有被翻譯中文讀者看到這里就會(huì)卡住。第二期的處理方式是在這種位置加一句譯者注“原文此處指作者前一篇關(guān)于某某主題的文章讀者可參考譯者補(bǔ)充的簡(jiǎn)要說(shuō)明?!比绻奶岬侥硞€(gè)數(shù)據(jù)集或某個(gè)方法但不解釋來(lái)歷我們也不偷懶必須補(bǔ)一段背景說(shuō)明避免讀者為了一個(gè)前提去翻完整篇英文原文。上下文暗語(yǔ)還包括版本變化。原文作者寫(xiě)文章時(shí)用的庫(kù)還是舊接口但讀者論文里的范例已經(jīng)是新接口。我們?cè)谧g文里遇到這類(lèi)情況會(huì)保留原文寫(xiě)法的同時(shí)補(bǔ)上新寫(xiě)法和版本提示。翻譯不是復(fù)讀機(jī)它的價(jià)值在于幫讀者消除信息差而不是把英文里默認(rèn)“你懂”的東西原樣搬過(guò)來(lái)。4.3 文化梗與口語(yǔ)直譯會(huì)翻車(chē)英文技術(shù)博客里經(jīng)常出現(xiàn)文化梗和口語(yǔ)表達(dá)直譯過(guò)來(lái)翻車(chē)率極高。比如作者把深入探索一個(gè)話題比作“掉進(jìn)兔子洞”中文讀者對(duì)愛(ài)麗絲夢(mèng)游仙境的熟悉度有限直接保留“兔子洞”會(huì)很突兀。第二期的處理原則是能打通意象就意譯不能意會(huì)就直譯加注完全不重要的就刪去。上面這個(gè)例子我改成“這條路一走就收不住”意思到位中文讀者秒懂。還有一種常見(jiàn)情況是諧音梗。有些英文技術(shù)作者喜歡拿術(shù)語(yǔ)開(kāi)幽默玩笑比如把“哈希表”和一種早餐食物做文字游戲。翻譯時(shí)我先保證技術(shù)含義不丟再盡量把文字游戲的味道用注釋補(bǔ)出來(lái)“哈希土豆餅原文為諧音梗指的是某早餐食物”。如果注釋太長(zhǎng)寧可舍棄這個(gè)梗也不能讓讀者為了看懂笑話去做額外英文閱讀。技術(shù)文章的主角永遠(yuǎn)是技術(shù)不是風(fēng)格秀。4.4 格式層面的坑標(biāo)點(diǎn)、鏈接、代碼縮進(jìn)格式問(wèn)題是最容易在翻譯收尾階段冒出來(lái)的問(wèn)題不大但特別消磨耐心。最常見(jiàn)的坑有三個(gè)。第一是中英文混排時(shí)空格的規(guī)則不一致同一個(gè)頁(yè)面里有的地方“中文 English”之間加了空格有的地方?jīng)]加視覺(jué)上很亂。第二是標(biāo)點(diǎn)混亂中文句號(hào)、逗號(hào)、冒號(hào)和英文半角符號(hào)混在一段里尤其容易在代碼注釋和正文之間交叉出現(xiàn)。第三是Markdown鏈接失效很多原文鏈接指向的是當(dāng)時(shí)的課程頁(yè)面或資料頁(yè)面幾個(gè)月后可能已經(jīng)變成死鏈。針對(duì)鏈接問(wèn)題我在第二期里不是簡(jiǎn)單保留原文鏈接而是一律先點(diǎn)一遍能用的才保留失效的替換成最新可用地址替換不了的刪除并在譯注里說(shuō)明。代碼塊里的縮進(jìn)問(wèn)題則是通過(guò)技術(shù)復(fù)核發(fā)現(xiàn)的某些代碼注釋中文化后多出來(lái)的全角字符影響了注釋對(duì)齊看起來(lái)沒(méi)有代碼感。處理方式是把注釋統(tǒng)一放在代碼上方而不是夾在代碼中間減少縮進(jìn)沖突。5. 第二期數(shù)據(jù)復(fù)盤(pán)與質(zhì)量記錄5.1 翻譯規(guī)模與投入時(shí)間第二期最終完成24篇文章中文正文字?jǐn)?shù)約18萬(wàn)字平均每篇7500字左右。如果算上圖注、譯注、代碼注釋和重新繪制的圖表說(shuō)明實(shí)際產(chǎn)出比這個(gè)數(shù)字更高。團(tuán)隊(duì)配置很簡(jiǎn)單翻譯2人技術(shù)復(fù)核1人排版校對(duì)1人總共4人協(xié)作。工期接近兩個(gè)半月其中初翻用了2周技術(shù)復(fù)核用了3周潤(rùn)色和排版用了2周剩下的時(shí)間全部花在術(shù)語(yǔ)討論、疑難協(xié)商、重新繪圖和收尾修正上。這個(gè)時(shí)間比預(yù)期要長(zhǎng)主要原因是我低估了技術(shù)復(fù)核的耗時(shí)。每篇文都要把代碼實(shí)際跑一遍遇到環(huán)境問(wèn)題還要換版本重新驗(yàn)證。但回頭看這部分時(shí)間花得值因?yàn)樗亲g文質(zhì)量最直接的保障。如果只翻譯不跑代碼24篇文章里至少有五六篇會(huì)出現(xiàn)讀者照著代碼操作卻報(bào)錯(cuò)的情況。5.2 審校揪出的典型問(wèn)題分布整個(gè)審校過(guò)程里我們按問(wèn)題類(lèi)型做了一次簡(jiǎn)單統(tǒng)計(jì)結(jié)果很有參考價(jià)值問(wèn)題類(lèi)型占比處理方式術(shù)語(yǔ)不一致42%重開(kāi)術(shù)語(yǔ)表修訂全局統(tǒng)一替換直譯不自然28%回爐重寫(xiě)句子不以字面對(duì)應(yīng)為標(biāo)準(zhǔn)代碼運(yùn)行問(wèn)題15%統(tǒng)一修訂示例并標(biāo)注版本差異鏈接與格式問(wèn)題10%腳本清理加人工復(fù)核內(nèi)容事實(shí)或數(shù)據(jù)錯(cuò)誤5%修正原文問(wèn)題并加譯注說(shuō)明術(shù)語(yǔ)不一致占比最高這一點(diǎn)并不意外。哪怕已經(jīng)有了術(shù)語(yǔ)表翻譯人員在實(shí)際行文中還是會(huì)因?yàn)檎Z(yǔ)境而偏移尤其是一些拿捏不準(zhǔn)的抽象詞。審校環(huán)節(jié)的價(jià)值就在這里它不是走流程而是用第二雙眼睛把每個(gè)人偏移的地方拉回來(lái)。5.3 讀者反饋里的高頻訴求項(xiàng)目發(fā)布后我們收到一批讀者反饋其中有幾條反復(fù)出現(xiàn)。第一條是“術(shù)語(yǔ)表很好用但放在文末不容易發(fā)現(xiàn)”后來(lái)我們把術(shù)語(yǔ)表的位置從文末挪到了每篇譯文的導(dǎo)讀部分并把完整版術(shù)語(yǔ)表整理成獨(dú)立頁(yè)面。第二條是“希望提供可下載的代碼文件”于是我們把每篇文章的代碼合并成一份可運(yùn)行的實(shí)驗(yàn)文檔并且附上測(cè)試環(huán)境說(shuō)明。第三條是“個(gè)別示例數(shù)據(jù)下載地址失效”我們專(zhuān)門(mén)做了一個(gè)數(shù)據(jù)資源備份把散落各處的示例數(shù)據(jù)集中存放。第四條是“有些譯注讀起來(lái)太繁瑣”這句話提醒我們控制譯注頻率只在真正影響理解的位置補(bǔ)充解釋。這些反饋直接進(jìn)入了第三期的改進(jìn)計(jì)劃。6. 第三期如果開(kāi)做我會(huì)這樣改流程6.1 把術(shù)語(yǔ)表升級(jí)成為協(xié)作數(shù)據(jù)庫(kù)第二期的術(shù)語(yǔ)表是一份文檔能解決問(wèn)題但不夠靈活。如果第三期啟動(dòng)我會(huì)把它升級(jí)成協(xié)作式術(shù)語(yǔ)庫(kù)。每條術(shù)語(yǔ)記錄除了英文原文和中文譯法還要增加適用語(yǔ)境、示例句、使用狀態(tài)、修改歷史。多個(gè)人對(duì)同一條術(shù)語(yǔ)有不同意見(jiàn)時(shí)可以在庫(kù)里提交翻譯版本并附理由由負(fù)責(zé)統(tǒng)一口徑的人做最終裁決。為什么一定要加示例句因?yàn)槊撾x語(yǔ)境的術(shù)語(yǔ)討論永遠(yuǎn)吵不出結(jié)果有了示例句每條譯法都能放到真實(shí)句子里驗(yàn)證。再進(jìn)一步我還想加一個(gè)自動(dòng)檢查腳本掃描所有待發(fā)布文本如果發(fā)現(xiàn)某個(gè)術(shù)語(yǔ)在庫(kù)里已經(jīng)有固定譯法但譯稿里用的是另一種寫(xiě)法就自動(dòng)報(bào)警。這個(gè)機(jī)制能減少大量人工核對(duì)的重復(fù)勞動(dòng)把人的精力節(jié)省出來(lái)解決真正的語(yǔ)言和技術(shù)問(wèn)題。6.2 給代碼塊增加可運(yùn)行性測(cè)試第二期的技術(shù)復(fù)核是半人工的第三期我想把它變成一套更系統(tǒng)的“代碼可運(yùn)行性測(cè)試”流程。具體設(shè)想是從每一篇文章的Markdown源文件中提取所有代碼塊按文章順序組裝成可執(zhí)行腳本放到隔離環(huán)境里自動(dòng)運(yùn)行運(yùn)行失敗的代碼塊會(huì)報(bào)告具體位置和異常信息再由人工判斷問(wèn)題是出在環(huán)境差異還是原文錯(cuò)誤。在此基礎(chǔ)上發(fā)布每一篇譯文時(shí)固定記錄運(yùn)行依賴的版本信息這樣即使將來(lái)庫(kù)升級(jí)也能快速定位到底是哪一版代碼需要更新。這個(gè)流程本質(zhì)上是把技術(shù)復(fù)核從“事后抽檢”變成“發(fā)布門(mén)禁”。它不增加翻譯本身的負(fù)擔(dān)但會(huì)讓整個(gè)項(xiàng)目的可靠性提升一個(gè)量級(jí)。第二期用人工跑代碼已經(jīng)發(fā)現(xiàn)了不少問(wèn)題第三期用腳本做第一輪篩選效率會(huì)明顯高出許多。6.3 為每篇譯文補(bǔ)充導(dǎo)讀和延伸材料第三期我還想給每篇譯文加一個(gè)標(biāo)準(zhǔn)導(dǎo)讀塊內(nèi)容包括適合誰(shuí)讀、讀之前需要什么基礎(chǔ)、讀完能解決什么問(wèn)題、建議閱讀時(shí)長(zhǎng)、配套資源有哪些。這個(gè)導(dǎo)讀不是為了好看是為了讓讀者在打開(kāi)文章的第一分鐘就能判斷這篇內(nèi)容值不值得讀。當(dāng)前很多技術(shù)博客文章點(diǎn)進(jìn)去才發(fā)現(xiàn)難度不匹配導(dǎo)讀可以大幅降低這種試錯(cuò)成本。同時(shí)我想建立一個(gè)“譯文相互引用”地圖把同一主題下的多篇文章互相串聯(lián)起來(lái)。比如一篇講特征工程的文章文末列出相關(guān)的數(shù)據(jù)清洗文章和模型評(píng)估文章讀者不用四處找按圖索驥就能把知識(shí)體系補(bǔ)全。還可以做一個(gè)回譯抽檢隨機(jī)抽10%的譯文章節(jié)回譯成英文再和原文對(duì)比檢查是否出現(xiàn)了信息丟失。這個(gè)做法成本不高卻是檢驗(yàn)翻譯質(zhì)量的試金石。我在實(shí)際做這個(gè)項(xiàng)目時(shí)最深的感受是翻譯本身只是第一步真正拉開(kāi)差距的是術(shù)語(yǔ)管理、技術(shù)復(fù)核、格式規(guī)范和反饋閉環(huán)。如果只盯著“翻了多少字”很容易把項(xiàng)目做完卻做不出別人愿意長(zhǎng)期使用的譯文。第二期積累下來(lái)的這套流程對(duì)我來(lái)說(shuō)已經(jīng)不是一次翻譯項(xiàng)目的總結(jié)而是以后做任何內(nèi)容本地化工作都能直接用上的基礎(chǔ)框架。如果你也準(zhǔn)備做同類(lèi)項(xiàng)目我建議不要一上來(lái)就追求篇數(shù)先把術(shù)語(yǔ)表、復(fù)核環(huán)節(jié)和發(fā)布檢查清單這三個(gè)基礎(chǔ)搭穩(wěn)后面的路會(huì)順很多。