2007-11-03

社會組科技須知 - 軟體本地化: 火狐狸擴充套件

現在幾乎每一個人有至少一台電腦。雖然很多人不知道怎麼正確地使用那一台電腦,但是每一個人還是很快樂地使用。雖然幾乎沒有人願意看一個軟體的使用手冊或它內建的說明,但是大家(特別在台灣)一定要他們自己母語的版本。不過,不一定每一個軟體是在台灣寫的,所以可能需要有人把一個英文版翻成中文。而這種事有時候不會很困難。

Mozilla Firefox是一個真不錯的瀏覽器,比你的IE好一些。你最好安裝,用一下。(而且順便也安裝Opera)Firefox一個較特別的地方是它的擴充套件。Firefox本身會提供基本的瀏覽器的功能,但經過擴充套件我可以做個人化,可以讓它變成我要的樣子。

那些擴充套件也是軟體。如果它們有使用者介面,可能要有人做“本地化”,把使用者介面翻成中文。寫一個擴充套件的人不見得懂中文,而你 - “不懂電腦”,對不對?好,那我簡單地說明一下:

這種擴充套件是一個"XPI"檔。意思是,檔案的“大名”是"name.xpi"。我們想象一下我們的套件叫"foxytunes",所以我們下載一個檔案叫"foxytunes.xpi"。不過,它其實是普通的ZIP壓縮檔。所以,我們可以把"xpi"改成"zip",然後就可以解壓縮。

我們現在看到一些目錄跟檔案。對我們有趣的是"chrome"目錄,其它我們可以不管。裡面我們會發現至少一個檔案:"foxytunes.jar"。(檔案名就是套件的名字)如果還有其它檔案,它們可能比較難過 - 因為我們不理它們。

"JAR"代表Java ARchive,所以我們又碰到一個壓縮檔。如果你的Windows XP或Vista沒有辦法解壓縮,你可以試試用ExtractNow。(或者你可以試試換一個比較方便的作業系統)解壓縮之後,我們應該有一些目錄。我們要的目錄叫"locale"。

如果你看不到這個目錄,這表示寫套件的人還沒有考慮到多語言化。那時候,換別的套件吧。不過,我們套件有這個目錄,所以我們進去。我們應該看到至少一個目錄。它的名字可能是"en-US"、 "en-UK"或也許有"de-DE"。

前面是語言,後面是國家。所以,"en"代表英文,"de"德文等。"en-US"是美國的英文版,"en-UK"是英國的。我們先在某一個地方建立一個"zh-TW"目錄,然後把"en-US"或"en-UK"(只有其中一個!)裡面所有的檔案拷貝到到"zh-TW"。現在我們要看檔案。

我們應該可以看到至少一個DTD檔。裡面會有一些tag,有點像HTML或XML。我們看一下具體的例子:

《!--ENTITY foxytunes.tools.label "Tools"--》
《!--ENTITY foxytunes.tools.key "T"--》

一個"Entity"是一個實體,一個元素,是這個套件使用的一個訊息。之後的"foxytunes.tools.label"是這個實體的名稱,而引號之間的部分才是真的要輸出的訊息,這裡是"Tools"。第二行很像,但是有點不同:這個實體定一個按鈕,"T"。(按"T"就可以叫出工具選項)

這裡的工作很簡單:我們只需要把兩個引號之間的部分翻成中文,但是不要動"key"實體!所以,把以上的例子翻成中文的話會變成這樣:

《!--ENTITY foxytunes.tools.label "工具"--》
《!--ENTITY foxytunes.tools.key "T"--》
簡單,對不對?下一步。我們可能看到一個"about.dtd"檔,裡面有(沒有想到吧)關於套件的資訊。不過,可能不只有這些。寫套件的人如果有做好的話,應該有地方你要改一個數值(看裡面的說明!),而且有地方你可以留你的資料:名字、e-mail等。如果你有翻這個套件,你也有貢獻,所以當然也要列你的名字。

比較害羞或在乎隱私的人可以用暱稱,但是e-mail最好要是比較可靠(長期可聯絡到)的。如果再用foxytunes的具體例子,這三行

《!ENTITY about.is.translated "0"》
《!ENTITY about.translatedby.name ""》
《!ENTITY about.translatedby.url ""》

要變成

《!ENTITY about.is.translated "1"》
《!ENTITY about.translatedby.name "Fang Sheyu"》
《!ENTITY about.translatedby.url "kosh@vorlon.org"》

原則上你的名字也可以用漢字寫,但是我會建議用羅馬字,因為這樣大家有辦法讀或寫你的名字。不過,可能還有其它檔案。裡面可能有這種內容:
enable=Enable
disable=Disable
unknown=Unknown
這些也很簡單:不要動"="之前的部分,但是要翻之後的。像這樣:
enable=啟動
disable=停止
unknown=未知
而且,我們可能遇到這種“奇怪”的句子:
theCurrentTimeIs=The current time is: %S
裡面的"%S"很重要,它是程式的輸出。這裡是時間,但是也可能是一個檔案名,帳號名稱,溫度,任何數值。我們先要了解它在原文的句子有什麼作用。這裡是受詞,而且我們可以較容易了解它代表時間。有時候我們在目標語言可能要把它放在句子裡不同的位子,所以先要確認。這次沒有什麼問題:
theCurrentTimeIs=目前時間是: %S
我們可能碰到的檔案(目前)只有這些。如果要做這種套件的本地化,我們最好先把"en-US"或"en-UK"的檔案拷貝到我們"zh-TW"目錄,然後修改內容。不過……

我們存檔一定要用UTF-8編碼!而且,我們其實可以用一個方便一點的editor,不需要用Windows的notepad(記事本)。只要找一下"windows free xml editor unicode"或"windows editor unicode",就會有一些選擇。抱歉,我已經幾年不在用Windows,所以自己不在使用那些editor。也許別人可以提出一些建議?在OS X 我用TextWrangler,在Linux大部分是BluefishScreem

翻完了?一切都正確?最後確認一下,然後把一整個"zh-TW"目錄壓縮(例如ZIP檔),然後寄給擴充套件的創作人。他會把你的翻譯加進去,然後線上更新套件。

恭喜!你剛把一個軟體改成多一些人可以用!

No comments: