tornado国际化(i18n)基本流程

从底到上分别为:

1.web.RequestHandler中通过locale属性取得翻译词条的对象:调用tornado.locale.get(code)方法来取得。

2.调用tornado.locale.Locale.get_closest(code);

3.调用tornado.locale.Locale.get(code):Locale类中一个类属性_cache用来缓存已经获取的翻译对象,有则直接返回;无则从模块变量_translations.get(code..)获取翻译对象。这个模块变量其实是一个字典;其中的值由tornado.locale.get_gettext_translation()方法来装入。然后创建GettextLocale(code,翻译对象即GNUTranslation类实例),入缓存后返回。

4.tornado.locale.get_gettext_translation()方法通过调用gettext.translation()来获取一个翻译对象(通常为GNUTranslation类实例,它会加载mo文件并将其所有翻译词条存入类的实例变量中)。而在gettext模块中,也有一个模块变量_translations用以缓存已经加载mo文件内容的GNUTranslation类实例。gettext.translation()方法就是先从其中获取,没有的话,才进一步去创建并加载mo对象的GNUTranslation类实例。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值