Translations-cn
English | 简体中文 | 正體中文 | Deutsch | Español | Português | Korean | Russian
Contents
介绍
aMule很容易翻译成各种语言。加上现在也已经支持Unicode,因此不再受限于西方语言字符集。汉语,韩语,阿拉伯语,西伯来语(...)都可以支持。
翻译需要翻译者,所以请立即加入aMule历险!
作翻译不需要知道如何写C++代码或者 克林根语!你只需要知道你自己的母语(!!)和一些基本的英语即可。
感兴趣么?开始干吧。
如何实施
我们时不时(大约一个月一次)在翻译论坛公布一个文本文件source_strings.po。
下载这个文件并打开它,如果你使用KDE用KBabel,如果你使用Gnome用PoEdit或者gTranslator。
别忘了在KBabel,PoEdit或者gTranslator的参数选择里设置你的姓名,email,字符集等等。
这是使用KBabel的界面:
在左上角,是英文字串。
在右上角,是包含这个字串的文件名。
你只需要在左下角输入翻译的字串,象这样:
在翻译的字串中要小心拷贝所有的特殊字符,比如&,%i,\n,等等,另外注意保留首尾空格
注意, 看下本文档 了解那些字符不需要被修改。
如此这般处理所有的字串后保存文件,然后...
翻译完成了!把它公布在aMule翻译论坛大家会感谢你的 :)
如何继续一个已经存在的翻译
如果一个翻译已经开始了,你不用重写所有source_strings.po中已经翻译的字串!
因此,需要自动把已经翻译的字串整合到新的source_strings.po。
比如,假设你开始翻译法语版本:
- 混合旧文件和新文件,输入:
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文件(每种语言一行)。
高级翻译
如果你不是开发或者Linux新手,或者你不耐烦等待总想要最新的翻译...
自己生成source_strings.po!
如何进行?
- 解压缩档案文件,进入根目录并生成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)