[敲打鍵盤] 多語環境中的網頁親和力

這一篇是我給自由軟體鑄造場電子報的稿件,刊登於第八十二期。

多語環境中的網頁親和力

上一期我們談論了自然語言的親和力議題,但是這個議題還沒有結束;對於網頁這種媒體來說,經常會出現許多語言同時呈現在同一個網頁上的情況,這時如果能夠多花點心思來處理,就有機會幫助讀者掌握這些語言或語境間的切換。

網路幾乎是沒有國界的,任何一個網頁的內容,都有可能是由任意的語言所撰寫。當隨機的某個網頁出現在我們眼前,我們也許能夠立即做簡單的判別,判斷出網頁的內容是否是我們自己所熟知的語言,例如中文、日文、韓文、英文等;但是如果撰寫網頁內容的語言,並不是我們所熟悉的,例如德文、法文、義大利文、波蘭文等,那麼我們除了能判斷出「這不是中文」、「這似乎不是英文」之外,所能獲得的資訊就很少了。

有人也許會覺得,「知道這不是我所能理解的語言」就好了,何必非得認出一個自己不理解的語言呢?因為即使我們認不得網頁的內容,但祇要我們可以知道那是用甚麼語言寫成的,那麼就可以利用各種翻譯軟體或線上翻譯服務,把網頁翻譯成我們所能理解的語言。更進一步地,如果我們有辦法讓翻譯軟體或線上翻譯服務直接知道網頁內容所使用的語言,那麼就可以更方便地將網頁以我們所能看懂的語言呈現,網頁也將更具親和力。

要實現這個夢想一點兒也不難,祇消在網頁的根組件 <html> 標籤加上一個屬性即可。如果網頁是以 HTML 撰寫的,就用 lang 屬性;如果是以 XHTML 撰寫網頁的話,則可以用 xml:lang 屬性,標記出網頁內容主要使用的語言。日後,不論是搜尋引擎、線上服務,或者是使用者本機端的應用程式,就都能夠根據這個屬性,更便利地取用網頁內容。

這小小的一個屬性,作用卻很大;除了能讓你辨識陌生的語言外,還可以協助讀者分別相似但不同的語言。舉例來說,台灣、香港、大陸所使用的文字看起來很像,重疊率也不低,但是畢竟語法有出入、措辭有差異、語音語調有相別,各有不同的語感;光是要在這幾種不同的語言間翻譯就不是輕鬆的事,如果還要進一步從中擷取出語意,或者更進一步地加以處理其資訊,就會是更困難的事。如果再加進日文或韓文的漢字,這種分歧就會更顯著。

就算是美式英文跟英式英文這樣的差別,也應該要標示出來。想像一下,如果有讀者習慣(或必須)用螢幕朗讀軟體,把網頁內容朗讀出來,那麼美式英文跟英式英文就該有不同的腔調,纔有那個味道,網頁內容也纔會更具親和力。

不同網頁可能用不同語言來撰寫,而同一個網頁內也常常會有多種不同語言並存。舉例來說,以目前崇尚英文的情況來說,中英夾雜是非常常見的;或者在介紹遊戲、動畫、漫畫的網頁中,中日夾雜也很常見。如果我們用前述的方法指定了網頁主要使用的語言,卻沒辦法處理交雜在其中的其他語言,那麼將會帶來困擾⸺任何處理網頁內容的科技或軟體,都有可能被迫用不正確的方式來處理這些內容,例如硬把日文漢字當作中文字來朗讀或翻譯成英文等。所幸在 XHTML 中,任何組件都可以使用 xml:lang 屬性,因此我們可以把任何需要特別標示的其他語言內容,都這麼標示出來。例如:

<html xml:lang="zh-tw">
……
  <p>……你這<span xml:lang="ja">馬鹿</span>!……</p>
……
</html>

在上述的例子當中,由於我們已經指定了整份 XHTML 網頁主要使用的是繁體中文,所以其中任何以繁體中文撰寫的內容都不需要特別標記;當要混入日文漢字(馬鹿)時,就將其組件⸺沒有的話就多包一層 <span> 標籤,這對語意不會有損傷⸺加上 xml:lang="ja" 屬性,這麼一來螢幕朗讀軟體就知道這個詞應該唸成「巴嘎」而不是「馬路」,翻譯軟體也能知道這邊要切換成日文辭典而不能繼續沿用中文辭典。

除了這種自然語言夾雜的情況,有時候我們也會把自然語言跟不是那麼自然的語言混在一起,例如電腦資訊的相關教學文件,或者是撰寫程式或網頁的文件等,裡面除了會有自然語言外,還會有許多不自然的字詞⸺鍵盤按鍵、程式碼或原始碼、應該根據情況修改的參數、螢幕輸出的範例等,也應該要用 <kbd><code><var><samp> 等標籤,特別標記出來,這麼一來其他程式才能知道要用合適的方式來處理這些內容,用更符合情境的方式加上視覺裝飾(例如按鍵就加上立體外框,顯示成按鍵的樣子),而且不要硬把它們當成英文翻譯成其他語言。

各位可以發現,像這種做法,與其說是為了網頁親和力,倒不如說是添加網頁內容的語意。的確,因為親和力的核心就是要盡可能地表達語意,所以把網頁的語意顧好了,親和力自然就完成一半了。

讓我們回到自然語言本身。當我們想要把網頁唸出來⸺不管是要自己朗誦,或者是藉由螢幕朗讀軟體來將文字轉語音 (TTS,Text-To-Speech) 時,又有哪些細節,是可以讓網頁更具親和力呢?由於篇幅的關係,讓我先賣個關子,且待下回分解。

jedi.org: