============================ 翻譯 PO 檔時要注意的幾個地方 ============================
# Original auhor: candyz # Thanks to cwhuang, ijliao, maddog # # 翻譯工具 # KBabel, http://i18n.kde.org/tools/kbabel/ # poEdit, http://poedit.sourceforge.net/ ( 支援 Linux & MS Windows ) # # 參考資料 # http://i18n.kde.org/translation-howto/ # http://i18n.kde.org/translation-howto/gui-step-by-step.html
1.標頭部份: 每個 po 檔一開頭的幾行,大多固定長的像底下的樣子 其中比較要注意的幾個項目為:
a.PO-Revision-Date: 此欄位就請填入您翻譯時的日期時間
b.Last-Translator: 最後翻譯的人,若您是最後翻的人,就填入您的資料,以便讓人有疑問時可以連絡的上 至於之前翻譯者的資料該如何處理呢? 或許比較好的方式,您可以把他的資料放在最前面,並裝該行以 # 開頭註解起來 如在 po 檔的最前面幾行加入這樣的資訊:
# Translator: aaa aaa@aaa.com, bbb bbb@bbb.com # ccc ccc@ccc.com # ddd ddd@ddd.com
c.Language-Team: 若原本已是 zh-l10n zh-l10n@linux.org.tw,那就不須要變動 若是新的 po 檔,則可以將其改為 zh-l10n zh-l10n@linux.org.tw 表示這是由我們 zh-l10n 的翻譯小組所翻譯的
d.Content-Type: text/plain; charset=big5 字元集部份,我們就都用 big5 即可
e.Content-Transfer-Encoding: 8bit encoding 部份我們中文字都是用 8bit
==== 標頭範例 =============================================================== msgid "" msgstr "" "Project-Id-Version: anaconda 7.0.1\n" "POT-Creation-Date: 2001-07-23 14:32-0400\n" "PO-Revision-Date: 2001-08-27 15:53+0800\n" "Last-Translator: Chung-Yen Chang candyz@linux.org.tw\n" "Language-Team: zh-l10n zh-l10n@linux.org.tw\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=big5\n" "Content-Transfer-Encoding: 8bit\n" =============================================================================
2.翻譯提示(hint) (注意, 這是 KDE 獨有的 extention) 如底下的範例,在 msgid 中您會看到有 "_:" 開頭的字串,凡以 "_:" 開頭的即表示 之後的字串是翻譯的提示,這部份是給您參考用的,所以您只要翻譯 "Screen at %1" 這行即可
==== 翻譯提示(hint)範例 ===================================================== #: ui/konsole_mnu.cpp:85 #, c-format msgid "" "_: Screen is a program controlling screens!\n" "Screen at %1" msgstr "" "視窗於 %1" =============================================================================
3.翻譯者的姓名及e-mail: 如下的範例,若碰到這樣的狀況,請填您自己的姓名及e-mail 千萬不要把它給翻成了 "您的姓名"、"您的電子郵件帳號"
==== 翻譯者的姓名及e-mail範例 =============================================== #: _translatorinfo.cpp:1 msgid "" "_: NAME OF TRANSLATORS\n" "Your names" msgstr "" "張崇嚴"
#: _translatorinfo.cpp:3 msgid "" "_: EMAIL OF TRANSLATORS\n" "Your emails" msgstr "" "candyz@linux.org.tw" =============================================================================
4.HTML TAG 部份: 如底下範例,若有 <p><b> 等 HTML TAG,您必須保留其語法部份
==== HTML TAG 部份範例 ====================================================== #: toplevel.cpp:110 msgid "<p><b>What can I do?</b></p><p>%1</p>" msgstr "<p><b>我能做什麼?</b></p><p>%1</p>" =============================================================================
5.快速鍵部份: 如底下範例,若有看到 "&" 開頭的地方,如 &D,則表示這可能是選單中的某快速鍵 如我們可以按 alt + d 鍵來快速執行等等,此部份的翻譯方式,我們則是在最後面 加上 "(&D)" 來表示
==== 快速鍵部份範例 ========================================================= #: toplevel.cpp:61 msgid "&Debugger" msgstr "除錯器 (&D)" =============================================================================
6.c-format 部份: 如底下範例中的 %1、%2 等變數,不一定 %1 就一定在前 %2 在後,可以視翻譯的文法 句型做適當的調整
==== c-format 部份範例 ====================================================== #, c-format msgid "%1 is beated by %2" msgstr "%2 擊敗 %1"
msgid "%s is beated by %s" msgstr "%2$s 擊敗 %1$s" ^^^^ ----------------> 請注意, %2$s 代表的是 msgid 中第二個 %s =============================================================================
7.fuzzy(模糊)部份: 若看到 "#, fuzzy",則表示這部份的翻譯是電腦自動猜測幫您翻的,有時候會對,但也 有時會錯的很離譜,因此,您必須檢查一下,並做適當的翻譯調整 調整完後,也要記得把 "#, fuzzy" 那行給拿掉
==== fuzzy(模糊)部份範例 ==================================================== #: ../partitioning.py:1425 #, fuzzy msgid "" "You are about to delete a RAID device.\n" "\n" "Are you sure?" msgstr "您必須選擇一個磁碟陣列裝置"
#: ../partitioning.py:1428 #, fuzzy, c-format msgid "" "You are about to delete the /dev/%s partition.\n" "\n" "Are you sure?" msgstr "您確定要刪除這個分割區嗎" =============================================================================
8.淘汰部份: 有些在舊版本中有的訊息,但在新版本中已經沒有了,因此這部份就沒有用了 會出現在整個 po 檔的最後面部份,都以 "#~" 為開頭 關於這部份,您可以將它刪除掉,或是也可以將其保留,當做日後參考用也行
==== 淘汰部份範例 =========================================================== #~ msgid "&About" #~ msgstr "關於(&A)"
#~ msgid "Panel Menu" #~ msgstr "面板選單"
#~ msgid "Settings..." #~ msgstr "設定..."
#~ msgid "Legacy Application" #~ msgstr "傳統應用程式" =============================================================================
9. KDE DE 對 gettext 加了一個擴充的功能, 允許 programmer 為訊息加上提示,以方便 翻譯者了解該訊息在該處的真正意義。 這種擴充的訊息在 po 檔中會以
_: (註解,說明此訊息的真正意義)
的方式呈現。 這個提示的訊息*不可以*翻譯出來。 (否則顯示結果一定會很奇怪) 例如:
#: kdecore/klocale.cpp:151 msgid "" "_: Monday\n" "Mon"
10. 單數複數 Plural-Forms: nplurals=1; plural=0; # to be finished