Translations-cn

From AMule Project FAQ
Jump to: navigation, search

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

介绍

aMule很容易翻译成各种语言。加上现在也已经支持Unicode,因此不再受限于西方语言字符集。汉语,韩语,阿拉伯语,西伯来语(...)都可以支持。

翻译需要翻译者,所以请立即加入aMule历险!

作翻译不需要知道如何写C++代码或者 克林根语!你只需要知道你自己的母语(!!)和一些基本的英语即可。

感兴趣么?开始干吧。

如何实施

我们时不时(大约一个月一次)在翻译论坛公布一个文本文件source_strings.po

下载这个文件并打开它,如果你使用KDEKBabel,如果你使用GnomePoEdit或者gTranslator

别忘了在KBabelPoEdit或者gTranslator的参数选择里设置你的姓名,email,字符集等等。

这是使用KBabel的界面:

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


在左上角,是英文字串。

在右上角,是包含这个字串的文件名。

你只需要在左下角输入翻译的字串,象这样:


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


在翻译的字串中要小心拷贝所有的特殊字符,比如&,%i,\n,等等,另外注意保留首尾空格

注意, 看下本文档 了解那些字符不需要被修改。

如此这般处理所有的字串后保存文件,然后...


翻译完成了!把它公布在aMule翻译论坛大家会感谢你的 :)

如何继续一个已经存在的翻译

如果一个翻译已经开始了,你不用重写所有source_strings.po中已经翻译的字串!

因此,需要自动把已经翻译的字串整合到新的source_strings.po

比如,假设你开始翻译法语版本:


  • forum拿到新的source_strings.po,而旧的fr.po已经在以前的aMule版本中。
  • 混合旧文件和新文件,输入:

msgmerge --no-fuzzy-matching -o new_fr.po fr.po source_strings.po

你也可以使用KBabel或者 PoEdit内置的合并工具(参考相应的帮助手册)。

然后,和以前的source_srings.po一样处理合并的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

  • 生成新的source_strings.po

cd po
mv amule.pot amule.pot.old
make amule.pot
mv amule.pot source_strings.po
mv amule.pot.old amule.pot



--Thepolish 22:46, 9 Oct 2004 (CEST)