Difference between revisions of "Translations-tw"
m |
|||
(One intermediate revision by the same user not shown) | |||
Line 16: | Line 16: | ||
就只欠協助翻譯、修正與維護的熱心人士而已了。 | 就只欠協助翻譯、修正與維護的熱心人士而已了。 | ||
− | + | 作翻譯不必懂怎麼寫程式碼,您只須有可將英語翻為其他語言的能力即可。 | |
== 怎麼做? == | == 怎麼做? == | ||
− | aMule 開發團隊會定期更新[http://amule. | + | aMule 開發團隊會定期更新[http://amule.sourceforge.net/translations/ 各國語言的翻譯資訊],從該頁就可看到各種語言的翻譯情形。 |
請找到要想要翻譯的語言,下載 .po 文字檔並編輯它。 (就算該語言已經全翻譯完了,您仍可以檢查修正之) | 請找到要想要翻譯的語言,下載 .po 文字檔並編輯它。 (就算該語言已經全翻譯完了,您仍可以檢查修正之) | ||
Line 36: | Line 36: | ||
<font color=#ff0000>在翻譯時要注意字串中的 &、%i、\n 等特殊字元,且首尾若有空格時應予以保留</font> | <font color=#ff0000>在翻譯時要注意字串中的 &、%i、\n 等特殊字元,且首尾若有空格時應予以保留</font> | ||
− | ''' | + | '''請參考「[[format specifiers-tw|特殊字元]]」以瞭解哪些字元不應該被修改掉。''' |
− | ===POEdit=== | + | === POEdit === |
使用 PoEdit 開啟 .po 檔後,可看到這樣的畫面: | 使用 PoEdit 開啟 .po 檔後,可看到這樣的畫面: | ||
Line 59: | Line 59: | ||
− | ===KBabel=== | + | === KBabel === |
因程式的使用介面可以自行調整,此處以預設介面為準。 | 因程式的使用介面可以自行調整,此處以預設介面為準。 | ||
Line 81: | Line 81: | ||
− | == | + | == 繼續處理未完成的舊翻譯檔 == |
舊版的翻譯經過處理後,可以整合套用到新版檔案上,而不必重頭翻譯起 | 舊版的翻譯經過處理後,可以整合套用到新版檔案上,而不必重頭翻譯起 | ||
Line 93: | Line 93: | ||
*輸入指令: | *輸入指令: | ||
− | + | msgmerge --no-fuzzy-matching -o <font color="green">new_fr.po</font> <font color="blue">fr.po</font> <font color="red">fr_strings.po</font> | |
:就可得到將舊版整合到新版的翻譯檔 ''<font color="green">new_fr.po</font>'' | :就可得到將舊版整合到新版的翻譯檔 ''<font color="green">new_fr.po</font>'' | ||
Line 102: | Line 102: | ||
− | == | + | == 測試翻譯 == |
請使用以下指令來測試翻譯是否有誤: | 請使用以下指令來測試翻譯是否有誤: | ||
Line 126: | Line 126: | ||
例如:原始字串從 "Delete server?" 改成 "Do you really want to remove the server?" 後,翻譯也許符合,但仍可以翻譯得更切合原始字串。甚至有時原始字串會更改成意思差更多,導致翻譯完全配合不上,這時就必須修正翻譯。 | 例如:原始字串從 "Delete server?" 改成 "Do you really want to remove the server?" 後,翻譯也許符合,但仍可以翻譯得更切合原始字串。甚至有時原始字串會更改成意思差更多,導致翻譯完全配合不上,這時就必須修正翻譯。 | ||
+ | |||
=== 測試時的問題協助 === | === 測試時的問題協助 === | ||
Line 141: | Line 142: | ||
* ''`msgid' and `msgstr' entries do not both end with '\n''' | * ''`msgid' and `msgstr' entries do not both end with '\n''' | ||
** '\n' 為換行用的特殊字元。翻譯的行數必須與原始字串行數相同,請檢查修正至相同行數。 | ** '\n' 為換行用的特殊字元。翻譯的行數必須與原始字串行數相同,請檢查修正至相同行數。 | ||
+ | |||
=== 複數形式 === | === 複數形式 === | ||
Line 161: | Line 163: | ||
而每一個 ''msgstr'' 按語言設定而不同,在德語中 ''msgstr[0]'' 用於單數、''msgstr[1]'' 用於複數。大多數語言也是如此運用。 | 而每一個 ''msgstr'' 按語言設定而不同,在德語中 ''msgstr[0]'' 用於單數、''msgstr[1]'' 用於複數。大多數語言也是如此運用。 | ||
+ | |||
=== 我用的編輯程式無法直接跳行 === | === 我用的編輯程式無法直接跳行 === |
Latest revision as of 10:30, 15 April 2009
English | 简体中文 | 正體中文 | Deutsch | Español | Português | Korean | Russian
Contents
簡介
aMule 支援 Unicode,且在設計時就已考慮到各種語言顯示問題,因此可以直接顯示世界各國的語言文字。
就只欠協助翻譯、修正與維護的熱心人士而已了。
作翻譯不必懂怎麼寫程式碼,您只須有可將英語翻為其他語言的能力即可。
怎麼做?
aMule 開發團隊會定期更新各國語言的翻譯資訊,從該頁就可看到各種語言的翻譯情形。
請找到要想要翻譯的語言,下載 .po 文字檔並編輯它。 (就算該語言已經全翻譯完了,您仍可以檢查修正之)
如果您想翻譯的語言未列在頁中,請到討論區發文告知,管理員會幫您設定好新語言檔。
注意:想要修改某個語言的翻譯前,也請到討論區查看是否已有人在著手翻譯中以及目前進度,以免進度重複造成時間精力的浪費
您可以直接使用文字編輯程式翻譯編修下載回來的 .po 檔,但也有更方便的翻譯工具程式,像是 PoEdit、KBabel 或是 gTranslator。
使用這些程式時,別忘記在偏好設定中設定您的姓名、email、編碼、翻譯版本等參數。
在翻譯時要注意字串中的 &、%i、\n 等特殊字元,且首尾若有空格時應予以保留
請參考「特殊字元」以瞭解哪些字元不應該被修改掉。
POEdit
使用 PoEdit 開啟 .po 檔後,可看到這樣的畫面:
http://img516.imageshack.us/img516/481/wikipoedit1ly7.png
上方左側是字串清單,右側為翻譯後的字串。藍色為尚未翻譯字串、黃色為待修正字串、白色為已翻譯字串、帶星號者為本次翻譯字串、帶對話者為該字串含有註解。
最底下狀態列則為統計數據。
選定某個字串後,下方會出現其內容:
http://img253.imageshack.us/img253/5157/wikipoedit2ov3.png
左側上欄為原始字串欄位,下欄為待輸入翻譯字串的欄位。圖中顯示的是有單數複數的特殊狀況,您可以依狀況輸入不同的文字。
KBabel
因程式的使用介面可以自行調整,此處以預設介面為準。
http://img512.imageshack.us/img512/3183/wikikbabel1my7.png
程式執行視窗左邊有:字串清單、原始字串欄位、待輸入翻譯字串的欄位。右邊則是各種資訊與統計數據。
http://img329.imageshack.us/img329/607/wikikbabel2fz0.png
點下工具列中的 Next Fuzzy or Untranslated 按鈕 KBabel 就會自動跳到下一個需要翻譯或修正的字串。
http://img329.imageshack.us/img329/9992/wikikbabel3uw7.png
左欄上方是原始的字串,您只需要在左下角輸入翻譯的字串即可
繼續處理未完成的舊翻譯檔
舊版的翻譯經過處理後,可以整合套用到新版檔案上,而不必重頭翻譯起
例如,您想要翻譯法語版:
- 手上有翻譯到一半的舊版 fr.po。
- 從翻譯公佈區取得新的 fr.po 並另外儲存 (假設存為 fr_string.po)。
- 輸入指令:
msgmerge --no-fuzzy-matching -o new_fr.po fr.po fr_strings.po
- 就可得到將舊版整合到新版的翻譯檔 new_fr.po
- 然後,也是用工具程式處理 new_fr.po,翻譯未完成的部份。
測試翻譯
請使用以下指令來測試翻譯是否有誤:
msgfmt -c --statistic language code.po
結果範例:
$ msgfmt -c --statistics zh_TW.po 1428 translated messages, 58 fuzzy translations, 32 untranslated messages.
如有出現無法理解的錯誤或問題,歡迎到討論區尋求協助。
翻譯完成
請在討論區下各該語言的討論串發文,並以附件方式上傳完成翻譯或修改的 .po 檔。
如果沒有該語言的討論串,請在此頁下自行建立新討論串。
常見問題
模糊字串
當程式使用的原始字串變更後,相對的翻譯就會被標為模糊翻譯,表示該翻譯必須再經檢查是否有問題。
例如:原始字串從 "Delete server?" 改成 "Do you really want to remove the server?" 後,翻譯也許符合,但仍可以翻譯得更切合原始字串。甚至有時原始字串會更改成意思差更多,導致翻譯完全配合不上,這時就必須修正翻譯。
測試時的問題協助
如果在測試時發生錯誤,請參考相關解決方法:
- end-of-line within string
- 字串以 " (引號) 開頭,但沒有用另一個 " 結束。請到錯誤訊息顯示的行數,在行尾加入引號。
- format specifications in 'msgid' and 'msgstr' for argument 1 are not the same
- 有些字串中會有 %s %d 等特殊字元,用來顯示一些特殊變數。請到錯誤訊息顯示的行數,比對原始字串與翻譯,查看是否將特殊字元修掉了。
- number of format specifications in 'msgid' and 'msgstr' does not match
- 與上一個錯誤類似,您可能修掉了某幾個特殊字元導致數目不符。請到錯誤訊息顯示的行數,比對原始字串與翻譯,查看是否將特殊字元修掉了。
- `msgid' and `msgstr' entries do not both end with '\n'
- '\n' 為換行用的特殊字元。翻譯的行數必須與原始字串行數相同,請檢查修正至相同行數。
複數形式
英語、德語等許多語言的單位、數字在單數、複數時會有所不同,這時就必須區分開來翻譯。
首先要在 .po 檔頭加入設定,以德語為例:
"Plural-Forms: nplurals=2; plural=n != 1;\n"
有複數型態的字串 (仍是以德語為例):
#: src/kademlia/routing/RoutingZone.cpp:141 #, c-format msgid "Read %u Kad contact" msgid_plural "Read %u Kad contacts" msgstr[0] "Lese %u Kad-Kontakt" msgstr[1] "Lese %u Kad-Kontakte"
第一個 msgid 表示單數的字串,msgid_plural 表示複數的字串。
而每一個 msgstr 按語言設定而不同,在德語中 msgstr[0] 用於單數、msgstr[1] 用於複數。大多數語言也是如此運用。
我用的編輯程式無法直接跳行
kpeace1 撰寫了一個 script,可用來將行號轉為 msgid。
#!/usr/bin/env python import sys if (len(sys.argv) < 3): print "usage:\t", sys.argv[0], "file_name ", "line#" file_name = sys.argv[1] line_number = int(sys.argv[2]) po_file = open(file_name) i = 0 msgid = 0 for line in po_file: i = i + 1 if (line[:5] == "msgid"): msgid = msgid + 1 if (line_number == i): print "error in msgid no.", msgid-1 sys.exit(0)