Translations-tw

From AMule Project FAQ
Revision as of 14:29, 6 January 2009 by Mstar (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

English | 简体中文 | 正體中文 | Deutsch | Español | Português | Korean | Russian

簡介

aMule 設計時就已考慮到各種語言顯示問題,支援 Unicode,因此可以直接顯示世界各國的語言文字。

就只欠協助翻譯的熱心人士而已了。

作翻譯不必懂怎麼編 C++ 程式碼或 克林貢語!你只需要知道你自己的母語,和有基本的英語能力即可。

有興趣嗎? 立即加入吧。


怎麼做?

aMule 開發團隊大約每個月更新一次各國語言的翻譯,請找到正體中文 (Traditional Chinese) 文字檔 zh_TW.po,下載並編輯它。

您可以直接使用文字編輯程式編修翻譯,但也有更方便的翻譯工具程式,像是 KDE 桌面環境KBabelGnome 桌面環境PoEdit,或是 gTranslator

使用這些程式時,別忘記在偏好設定中設定您的姓名、email、編碼、翻譯版本等參數。


這是 KBabel 的界面:

http://www.amule.org/dev-up/kb1.png


左上角:英文字串。

右上角:使用這個字串的檔案。

您只需要在左下角輸入翻譯的字串,像這樣:


http://www.amule.org/dev-up/kb2.png


在翻譯時要注意字串中的特殊字元,像是 &、%i、\n 等等,且首尾若有空格時應予以保留

請參考 format specifiers 以瞭解哪些字元不應該被修改掉。


依以上要領完成翻譯後,把它貼到翻譯論壇,這樣大家都會感謝您的貢獻。


如何繼續處理未完成的舊翻譯檔

舊版的翻譯經過處理後,可以整合套用到新版檔案上,而不必重頭翻譯起

例如,您想要翻譯法語版:

  • 手上有翻譯到一半的舊版 fr.po
  • 翻譯公佈區取得新的 fr.po 並另外儲存 (假設存為 fr_string.po)。
  • 輸入指令:
msgmerge --no-fuzzy-matching -o new_fr.po fr.po source_strings.po
就可得到將舊版整合到新版的翻譯檔 new_fr.po
(您也可以使用 KBabelPoEdit 內建的合併工具,詳細使用方法請自行參考各該程式內的說明)
  • 然後,也是用工具程式處理 new_fr.po,翻譯未完成的部份。



測試你的翻譯

First notes

翻譯完文件後,你需要重編譯 aMule,或者先測試一下你得翻譯是否成功(這一步在編譯aMule得時候自動做了)

後一個選項的好處是,你不需要重新編譯整個aMule,而只需要產生翻譯的二進制文件。

建議嘗試翻譯文件測試知道成功,然後[[#用這個翻譯測試aMule|]]看看如何工作。

只測試翻譯文件

簡單方法

如果你沒有開發環境,你甚至不能運行./configure,因為它需要找到編譯器,頭文件等等。所以只能模仿源Makefiles如何做。在.po存在的目錄裡面運行msgfmt -c --statistics -o translation_language.gmo translation_language.po比如msgfmt -c --statistics -o en_GB.gmo en_GB.po

[~/aMule/amule-dev-cvs/po]$ msgfmt -c --statistics -o en_GB.gmo en_GB.po
1354 translated messages

提示消息的含義和下面是相同的,你可以參考它。這種方法只需要gettext,Linux和*NIX一般都安裝。

更複雜的方法

首先,運行./configure.

現在,把翻譯放入po/目錄,運行make translation_language.gmo,比如make en_GB.gmo

如果你翻譯得正確,會顯示:

[~/aMule/amule-dev-cvs/po]$ make en_GB.gmo
rm -f en_GB.gmo && /usr/bin/msgfmt -c --statistics -o en_GB.gmo en_GB.po
1354 translated messages

上面是個成功的完整的翻譯。

一個「成功」的翻譯,無論是否完整,因為沒有語法錯誤所以可以使用。

一個成功的但是不完整的翻譯如下:

[~/aMule/amule-dev-cvs/po]$ make ru.gmo
rm -f ru.gmo && /usr/bin/msgfmt -c --statistics -o ru.gmo ru.po
1333 translated messages, 79 untranslated messages.

這樣,翻譯中的79行需要重新翻譯。

你的翻譯可能會有失真。失真翻譯是gettext給出猜測的翻譯,可能是錯的(也可能很接近)。他們用#, fuzzy標識。如果你有失真翻譯,搜索並改正他們(如果沒問題只需要除掉#, fuzzy這行)。

下面是一個失真翻譯的輸出:

[~/aMule/amule-dev-cvs/po]$ make hr.gmo
rm -f hr.gmo && /usr/bin/msgfmt -c --statistics -o hr.gmo hr.po
544 translated messages, 412 fuzzy translations, 443 untranslated messages.

最後,你的翻譯可能有錯。這樣的話,你的文件會報告所有錯誤,每個錯誤都有一個解釋。

[~/aMule/amule-dev-cvs/po]$ make de.gmo
rm -f de.gmo && /usr/bin/msgfmt -c --statistics -o de.gmo de.po
de.po:88: number of format specifications in 'msgid' and 'msgstr' does not match
/usr/bin/msgfmt: found 1 fatal error
make: *** [de.gmo] Error 1

在上面的例子中,在88行的翻譯有一個錯誤,所以要修改這個錯誤,否則不會有二進制翻譯生成。

測試 aMule

簡單方法

如果你的aMule不是老到翻譯已經不兼容的地步,你可以直接安裝以前的made結果(也就是.gmo文件)直接測試,不需要編譯。

警告:你必須備份當前的 /usr/share/locale/your_language/LC_MESSAGES/amule.mo。你必須有足夠的權限去修改文件。另外,有可能讓你的aMule安裝崩潰。如果是這樣,恢復原來的amule.mo文件。


下面就是例子。看懂這個例子。在your_language.gmo (這裡是en_GB.gmo)存在的目錄裡面:

$ cp /usr/share/locale/en_GB/LC_MESSAGES/amule.mo .
$ cp en_GB.gmo /usr/share/locale/en_GB/LC_MESSAGES/amule.mo

如果第一個cp提示文件不存在,你需要把目錄(這裡是 /usr/share/...)切換到aMule安裝的目錄,比如/usr/X11R6/share/... 或者/usr/local/share/...

如果第二個cp提示"Permission denied",說明你沒有足夠權限修改它。多數情況下你需要root權限。

更複雜的方式

你可以通過重新編譯aMule觀察結果來測試你的翻譯。

如果你的語言沒有被aMule支持,你必須把它加入數據庫中,這樣aMule就可以知道它存在並用它編譯。這麼做需要把你的語言的代碼加入po/LINGUAS文件(每種語言一行)。

現在可以編譯 aMule。如果你需要幫助,參考本指南


高級翻譯

如果你不是開發或者Linux新手,或者你不耐煩等待總想要最新的翻譯...

自己生成source_strings.po

如何進行?

  • 從http://amule.hirnriss.net下載最新的aMule CVS 快照
  • 解壓縮檔案文件,進入根目錄並生成Makefiles

tar -xjf aMule-cvs-20041009.tar.bz2
cd amule-cvs
./configure

  • 更新 POTFILE.in 檔案:
grep -m 1 '_(' `find * -name "*.cpp"` | cut -d: -f1 > po/POTFILES.in
  • 複製新的 zh_TW.po
cd po
mv amule.pot amule.pot.old
make amule.pot
mv amule.pot zh_TW.po
mv amule.pot.old amule.pot
  • 翻譯新的 zh_TW.po,然後貼到論壇,由開發團隊將它加入原始碼中。