TrageWeb

还记得我说的本地评测系统吗?一直没有汇报她的进展…其实已经可以用了,叫做 Trage

最近小有搭建一个 OJ 的需求。但是,搭建 OJ 不仅要专门的服务器,添加题目什么的也不太方便。为了一个小小的需求费很大劲,不值啊!

于是,决定为 Trage 做一个 Web 客户端,就像 Transmission 什么的一样。那么是 Django,Web.py,还是什么?最后看上了 Karrigell,很简单、很轻量,还自带一个服务器。Python 的灵活性让我很快就写好了。在学校里,可以使用 nds.oj 这个网址访问。校外的话…暂时没啥办法,以后再说。TrageWeb 直接读取本地 Trage 的数据库,用本地的 Trage 进行评测,非常方便。

完事后,感到开发过程非常愉快:D
不禁想到,是不是以后本地的应用将更多地采用这种形式呢??这比写个 GUI 简单多了!

呵呵这其实是广义的云计算~

PyGTK 多语言

今天上午折腾了半天,不妨记个笔记。

我们假设一个傻傻的 app 叫做 foo_app,再虚构一些目录。真正使用的时候可别直接照抄哦。

1.Python 文件

首先要加入下面的三行

import gettext
from gettext import gettext as _
gettext.textdomain('foo_app')

然后就可以用 gettext 通用的格式了。例:

print _('Beautiful day!')

貌似 Python 里面还不支持嵌入给翻译者的注释,所以这里一定要用表达清晰的英文。

2.Glade 文件

对于 Glade 文件来说是非常简单的,只要把某个部件的“可译的”勾上就万事大吉了。还是那句话,要用人类可读的英语。
当然为了感谢一下冒着烈日辛勤翻译的 translators,不妨在“翻译者致谢”中写上 translator-credits。这样翻译者可以轻松地将这个字串换成自己的大名然后臭显摆去。

3.转换 Glade 的 XML 文件为 .h 文件

第一步要把 .glade 的 XML 文件转换成一些 .h 文件,以便生成 pot 文件。

intltool-extract --type=gettext/glade some_dir/FooWindow.glade

4.生成 pot 文件

这一步很爽,直接通配符就行了。

xgettext --language=Python --keyword=_ --keyword=N_ --output=po/foo_app.pot some_dir/*.h some_other_dir/*.py *.py

这样就产生了一个 pot 文件,然后你就可以考虑用这个 pot 泡壶茶喝了。

5.开始翻译吧!

这里的内容就不赘述了,详细的可以看自由软件中文化工作指南(L10N)