把瀏覽器的 rendering engine 翻譯成「渲染引擎」是正確的嗎?
瀏覽器中的 render 我認為是來自於繪畫(技術繪畫比如效果圖)中的 render,而將這類繪畫中的 render 翻譯成「渲染」也可以說由來已久,在計算機繪圖應用之前已使用「渲染」這個詞(當然也有翻成其他詞的比如「潤飾」),我記得在翻看一本老書中有過印象,大概是 1980 年代之前的書,但我不記得了,在這留個線索,或許可供他人參考。英文的繪畫中的 render 估計出現也很久遠,成為獨立的技法可能在巴黎美院(布扎)時期。
繪畫中的 render 就是一種呈現的技法,在線稿或底稿的基礎上通過上色等手段將內容以更真實可感的樣貌呈現而出,比如對光影和材質的表現,這到現在計算機繪圖中的 render 是一脈相承的,比如底稿對應的線框模型,抽象對應抽象,具體對應具體。
之於將 render 翻譯成「渲染」,我覺得有必要和通常將「渲染」在文學中作為一種修辭手段區分而開(「修辭」也是一個字面含義不斷干涉實際應用含義的詞,能指干涉所指,如果將一種表現用修辭來替代,就一下子跌出必要的範圍了),我沒有考證過,但我認為「渲染」這個詞應該是在來自繪畫,儘管與後來的(技術)繪畫中的 render 不完全一樣,但意義有相承的部分。(詞的考證留給他人)
瀏覽器中的 render 也是關於內容的呈現吧?以更具體可感的樣貌呈現內容,我覺得如果不將「渲染」囿於語文教科書中所說的修辭手段(我覺得這裡面有太多值得去作批判性考證的地方,而且影響也是直接的,比如「detail」對應的是「細節」,但「細節」在中文中更偏向「非根本的」),我覺得不僅有效,而且也是很合適的。我一直覺得如果不認同把計算機術語中的「render」翻譯成「渲染」,要麼是不知道「render」的意思,要麼是不知道「渲染」的意思。
按 Wikipedia 上的說法,「render」指的是藉助計算機程序,從一個模型生成圖像的過程。這和美不美觀或者準不準確都沒關係。注意我們在屏幕上看到的一切東西本質上都是圖像——哪怕它有文字的外形,哪怕它能夠通過游標選擇。
而瀏覽器引擎做的正是這樣的事情——輸入一段 HTML,瀏覽器引擎把它處理成一個可視的畫面。這個過程不能叫「翻譯」或者「轉譯」。「譯」指從一種文字到另一種文字,它是文字層面上的行為,嚴格地說與視覺或者說與文字的接受途徑並無關聯。一個人給我口述一段話,我把它用另一種語言講述給另一人,在這個過程中沒有視覺的介入但仍然叫「翻譯」。而 render 則一定是與視覺相關的,一個人給我講了個段子,我把它畫成了漫畫,這個才比較接近「render」的行為。以瀏覽器引擎為例,從 HTML 轉換成 DOM 樹,即從人類可讀語言轉換成計算機能理解的模型,這個過程或許可叫「譯」。但 render 並不是指這個過程,它指的是如何從 DOM 樹出發並在屏幕上畫出各種元素。
對,render 一定是與視覺相關的。所以將「render」翻譯成「渲染」取的是「渲染」的本義(畫國畫時用水墨或淡色塗抹畫面以加強藝術效果),而不是它的引申義(比喻誇大的形容)。當我們說計算機術語的「render」時,強調的是「渲染」本義中繪畫的過程。而在中文語境中「渲染」這個詞詞義的演變可能更突出了它「加強藝術效果」的目的性。因此 @Lawrence Li 提到「渲染,在中文裡,有添油加醋的意思。Render engine 裡的 render 沒有。」從而認為「render」不能翻譯成「渲染」這個理由是站不住腳的。翻譯不需要(也不可能)做到多義詞在每個義項上的一一對應,何況「render」和「渲染」在繪製的這個義項上是吻合的。
那麼說回來,把「render」翻譯成「渲染」是不是最合適?其他人提到「呈現」或者「表現」,如果最初採用了這樣的翻譯我應該不會有什麼異議。但是在「render」這個詞在使用的過程中出現了一點微妙的變化,他給我的感覺往往是那些比較耗時的操作,是與性能相關的。比如說到 3D 圖形,我們會知道「預渲染」是要花很多時間的,「實時渲染」是需要優化的。在瀏覽器中也如此,為什麼會有小技巧教程序員寫代碼的時候避免 reflow?為什麼會有文章講如何做 CSS 的優化?這就因為瀏覽器的「渲染」其實是個耗時的過程。在這個意象上「渲染」和「render」給人們的心理預期是吻合的(或許是因為「渲染」先入為主)。如果只是在屏幕上簡單地列印一行字,應該沒有人會把這個過程叫做「渲染」。
最後我想說,語言文字是活的,是變化的。 一個詞的釋義是可以增加可以改變的,只要它獲得廣泛的認可。第一個想出來用「雷」來表示「震驚」的人錯了嗎?你現在去正規詞典上查「雷」的用法也沒有這條啊。但是現在大家都知道很「雷人」是什麼意思,說明「雷」其實(哪怕未被官方認可)已經有了新的義項。在計算機行業,「渲染」這個用法沿襲至今已經引申出了很明確的新義項。回到問題上來,這個翻譯是正確的嗎?是。最早 render engine 主要處理 HTML 代碼,表現為文字圖片的排列。叫「排版引擎」是可以的。取 render 中「翻譯」的意思。或者,個人認為是「表現」意思:把 HTML 代碼,「表現為」圖形的頁面。
而今天 render engine 的很大一部分工作變為處理 CSS 。「排版」或者「翻譯」就太樸素了。 CSS 所做的事情,非常類似「添油加醋」。引擎不再僅僅排版,也在作畫。
(這時「表現引擎」的翻譯方法仍然是妥當的)簡而言之,從 CSS 的描述(語言),到瀏覽器中圖形(形象)之間的工作,是人定義的表現手法來完成的( render engine )。
[更新] @Hi-iD 的答案很好,受教。
---
是有效的——對溝通有效。你跟做技術的人說「瀏覽器的渲染引擎」,大家一定會知道你指的是 Gecko, KHTML/WebKit 這些,沒有歧義。
是正確的嗎?不是。在很多人看來,有效、溝通、沒有歧義,就很好了。可這是遠古時代的標準,在語言這種東西還沒出現時,或是一個國家的語言還沒統一時,大家覺得能有效溝通就很好了。
接下來,就是更加細緻的一些問題。如果永遠停留在「能有效溝通就好」的狀態,等於一刀砍殺了文學。
渲染,在中文裡,有添油加醋的意思。Render engine 裡的 render 沒有。就只有這一條理由。(事實上 render 還有翻譯的意思。例如宋淇當年在香港中文大學編的翻譯雜誌叫《譯叢》,英文名是 Renditions。要說翻譯有添油加醋的成分,我想大部分人會反對。)
還有一種觀點認爲,做技術的人(至少是比較優秀的)都有一定程度英文水平,直接說 render 就好了。按照這種理論,軟體本地化都不必做了。中國有大量英文不如你的人,甚至,英文還可以的人,看到英文單詞還是會不適應。程序員之間溝通時,如果用英文更準確方便,完全沒有問題。因此認爲某些詞沒有必要翻譯成(更好的)中文,則是視民衆於不顧。事實上,越好的翻譯,越有助於專業外的人理解你的專業。長遠來看,也就越能降低你們兩個羣體之間的溝通成本。
我認爲 render engine 可以譯成「轉譯引擎」(把代碼轉譯爲用戶看得見的文字和圖片)或「排版引擎」。有人覺得 web app 時代,瀏覽器做的事情超越了簡單的排版。但翻譯必有遺憾,至少排版引擎的遺憾比錯誤的渲染引擎的遺憾少一點。參見維基百科:
Rendering engine may refer to:
- Game engine, a software system designed for the creation and development of video games
- Ray tracing (graphics), a technique for generating an image by tracing simulated rays of light
- Rendering (computer graphics), software or hardware which converts specifications for images into pixels
- Web browser engine, layout engine software which formats HTML, CSS, XML, or images into a graphical representation of a document
第一義項是遊戲引擎。也就是根據代碼生成3D世界的系統。中間兩項都是和計算機圖形有關的內容。最後一項指瀏覽器,指出另外一個名字叫做layout engine,即排版引擎。
遊戲引擎翻譯做渲染引擎,我認為完全沒有問題。彷彿一個人拿著畫筆渲染出了一個虛擬的3D世界。這是計算機術語里少有的好翻譯,比什麼「面向對象」好得多了
這個詞只有在瀏覽器裡面似乎稍微有點不恰當,但你完全可以使用另外一個詞layout engine。@Hi-iD @Lawrence Li 的答案都很好。這個問題體現了英文翻譯的很難的一面,就是中文裡沒有詞語可以準確對應英文的詞,中文辭彙里沒有這個 概念。
render一次在英文里是個多義詞,十多個釋義。@Lawrence Li 很好的提出了rendition這個詞,這個詞是render的名詞形式,它的釋義是
a performance or interpretation, esp. of a dramatic role or piece of music: a wonderful rendition of 「Nessun Dorma.」? a visual representation or reproduction: a pen-and-ink rendition of Mars with his sword drawn.? a translation or transliteration.翻譯成中文是演奏,視覺表達或重現,和翻譯的意思。中文裡沒有一個詞可以同時有演奏、視覺表達和翻譯的意思。 演奏和翻譯有什麼共同之處?@Lawrence Li 多少間接解釋了演奏和翻譯的共同之處。都是基於原作的一個轉換,是再創作,但是目標卻是要盡量忠實於原作。所以在英文里 rendering engine 表達的意思非常精準。而在中文裡無法準確的用現成辭彙來表達。所以不管是渲染引擎,還是轉譯引擎都做了一些妥協。渲染引擎翻譯的有趣,轉譯引擎翻譯的本質,雖然渲染和譯這兩個詞都是借用。
我個人覺得渲染引擎挺好。如果直接的翻譯,應該叫視覺表達引擎,但是雖然貼切,卻直白沒啥味道。
另外,我覺得強調Layout的觀點是把這個詞大大狹義化了。 瀏覽器的發展史也證明了這一點,html 5已經具有了視頻播放,動畫等功能,以後還不一定發展到什麼樣子呢。但是 rendering engine 將持續表達準確的概念。哪怕有一天連嗅覺味覺觸覺都能 render的時候, rendering engine 也是準確的用詞,而那時候渲染引擎只會更將是個名不副實的詞。是正確的。
「排版引擎」 "排版"的含義比較狹隘,會誤解就是搞圖文混排的幹活。
「轉譯引擎」 更甚,聽上去像是谷歌翻譯之類的東西。
老問題,不知道有沒有人看。科普一個本科時候學到的小知識吧,雖然硬要考證我也給不出出處。
國內最早搞圖形學的一批學者很多是有工藝美術的熏陶或者和畫家們有所接觸。所以國內學術圈很長一段時間對rendering的翻譯是「繪製」。比如彭群生老教授編寫的《計算機真實感圖形的演算法基礎》 彭群生, 鮑虎軍, 金小剛【摘要 書評 試讀】圖書 一書就使用了「繪製」這個名詞。去翻很多早期的學術書籍期刊,基本上還是用「繪製」來翻譯rendering。
而國內最早開始使用國外商用渲染器的一批人是做建築效果圖,比如比較著名的水晶石,前身也是建築效果圖公司。因此把「rendering」翻譯成了建築中的術語「渲染」,「renderer」自然而然也就譯作「渲染器」。儘管渲染一詞源自繪畫,常用於文學,但確實是一個建築專有名詞。追根溯源,建築當中大約把rendering翻譯做渲染始於建國初期。
近幾年由於商業渲染器越來越多地為大家所熟知,包括國內諸多CG教育機構都是有水晶石這樣的背景。所以源自建築的「渲染」相較於「繪製」才更多地被人使用和熟知。咬文嚼字說渲染對應rendering是否精確其實並沒有太多意義,就是一個用行業內已有名詞翻譯外文辭彙,最後逐漸蔓延到更廣的領域的過程。大概有點「古拉希」和「土豆燒牛肉」的意思。
翻譯有時候要做到100%的信達雅是比較難的啦,看語境了,字面意思翻譯通順就字面意思翻譯咯。有時候得結合自己對技術的理解,翻譯成自己的語言吧。否則通篇讀下來會覺得彆扭的啦。
如果在遊戲中的話,翻譯成渲染器比較合理 ...
是正確的。
render,渲染。。。。。。什麼是染?其實就是染色。 render其中的一個功能是在染色,這是對,setColor,setBackgroundColor等。 染色通常是指一種固定顏色。
什麼是渲?渲,指一種繪畫方法,先把顏料塗在紙上,再用筆蘸水塗抹使色彩濃淡適宜。 也是調色。這種調色相當於我們說的各種漸變。渲就是漸變色的過程。
Layout之後,各個元素的位置確實已經確定下來了,接下來確實需要對每個block,每個div的border,每個線條。。。進行染色,漸變處理等等。render 在圖形學裡面一般都是翻譯成渲染。用在這個語境裡面不會有歧義。如果「正確」還關乎這個翻譯「好」還是「不好」那牽扯的東西就多了。
推薦閱讀:
※"去你大爺的內置瀏覽器"是幹什麼的?
※為什麼國外網站通常從原網頁跳轉,而中國的網站更傾向於打開一個新網頁?
※Chrome 為何知名度和市場佔有率都遠超 Firefox?