5.3. 翻譯 PO 檔注意事項

以下摘錄 kde3 翻譯小組的一些建議,原始文件可以在 http://www.linux.org.tw/~ycheng/kde/trans-po.txt 找到。

Contributed by pofeng@linux.org.tw

Last Update 2003年 5月10日 周六 11時26分18秒 CST

標頭部份:

每個 po 檔一開頭的幾行,大多固定長的像底下的樣子, 其中比較要注意的幾個項目為:

==== 標頭範例 ===============================================================
# traditional Chinese translation for XXX.
# Pofeng Lee <pofeng@linux.org.tw>, 2001-2002.
# Abel Cheung <maddog@linux.org.hk>, 2002.
# Yuan-Chung Cheng <platin@ms.ccafps.khc.edu.tw>, 1998.
msgid ""
msgstr ""
"Project-Id-Version: XXX X.X.X\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: Chinese (traditional) <zh-l10n@linux.org.tw>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
=============================================================================

翻譯提示(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"
=============================================================================

翻譯者的姓名及e-mail: 如下的範例,若碰到這樣的狀況,請填您自己的姓名及e-mail, 千萬不要把它給翻成了 "您的姓名"、"您的電子郵件帳號"。 ref: Getting Credit for Your Work

==== 翻譯者的姓名及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,someone@linux.org.tw"
#                    ^ 註: 為了對齊, 英文逗點後勿留空白
=============================================================================

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>"
=============================================================================

快速鍵部份: 如底下範例,若有看到 "&" 開頭的地方,如 &D, 則表示這可能是選單中的某快速鍵, 可以按 alt + d 鍵來快速執行等等, 此部份的翻譯方式,則是在最後面加上 "(&D)" 來表示。

==== 快速鍵部份範例 =========================================================
#: toplevel.cpp:61
msgid "&Debugger"
msgstr "除錯器(&D)"          # (&D) 之前不留空格
#: toplevel.cpp:61
msgid "&Debugger..."
msgstr "除錯器(&D)..."       # ... 是半形 ; (&D) 要放在 ... 之前"
#: toplevel.cpp:61
msgid "&Debugger:"
msgstr "除錯器(&D):"         # : 是半形 ; (&D) 要放在 : 之前"
=============================================================================

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
=============================================================================

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 "您確定要刪除這個分割區嗎"
=============================================================================

淘汰部份: 有些在舊版本中有的訊息,但在新版本中已經沒有了,因此這部份就沒有用了, 會出現在整個 po 檔的最後面部份,都以 "#~" 為開頭, 關於這部份,您可以將它刪除掉,或是也可以將其保留,當做日後參考用也行。

==== 淘汰部份範例 ===========================================================
#~ msgid "&About"
#~ msgstr "關於(&A)"

#~ msgid "Panel Menu"
#~ msgstr "面板選單"

#~ msgid "Settings..."
#~ msgstr "設定..."

#~ msgid "Legacy Application"
#~ msgstr "傳統應用程式"
=============================================================================

單數複數: 中文沒有單數複數的問題,請直接填 msgstr[0] 即可。

==== 單數複數範例 ===========================================================
msgid "found %d fatal error"
msgid_plural "found %d fatal errors"
msgstr[0] "找到了 %d 個重大的錯誤"
=============================================================================

其他綜合建議:

標點符號請儘量用全形標點符號,但欄名尾的冒號則用回半形。

提示要用 "您" 取替 "你"。

編譯: msgfmt -cv xxx.po -o /dev/null

安裝: msgfmt -cv xxx.po -o /usr/share/locale/zh_TW/LC_MESSAGES/xxx.mo

測試: LC_MESSAGES=zh_TW.Big5 xxx ;

參考資料:

The KDE Translation HOWTO http://i18n.kde.org/translation-howto/

翻譯工具 KBabel http://i18n.kde.org/tools/kbabel/