Tornado开发(三)— 网页模板 及扩展

6. 多语言支持(Internationalization)

作为一款web开发框架,国际化是必不可少的,虽然只做国内网站时没啥用。

如果需要做一个多语言支持的网页,首先要准备多语言翻译文件,tornado支持两种格式的翻译文件:po/csv,csv更简洁些,下面以此为例来说明。

csv文件的格式为(三列):字符串,翻译,”plural”/“singular”,最后一列表明此翻译为单数时用还是复数时用,因此一个字符串可对应两个翻译串,也可为空。需要注意的是逗号后没有空格。csv格式(其中一行)举例如下:

"Translate this string","I donot know what you say"

将以上行保存到zh_CN.csv中,意思是如果语言选择为zn_CN,当碰见” Translate this string”(类似于索引)时,翻译(替换)为"Idonot know what you say"。

准备一个模板文件(template.html),内容如下:

<html><body><h1>{{_(“Translate this string”)}}</h1></body></html>

主程序文件如下:

class MainHandler(tornado.web.RequestHandler):
	def get_user_locale(self):
		#user_locale = self.get_argument('lang', None)
		#可以通过某些方式来确定语言,这里直接取中文
		return tornado.locale.get('zh_CN')
	def get(self):
		self.render("template.html")

def runweb():
	webapp=tornado.web.Application([
		(r"/", MainHandler),
	])
	
	lang_path = os.path.join(os.path.dirname(__file__), 'locales') 
	tornado.locale.load_translations(lang_path) #载入lang_path下的csv语言文件
	webapp.listen(8000)
	tornado.ioloop.IOLoop.current().start()
	
if __name__ == "__main__":
	runweb()

应注意翻译文件的位置,此例中,主py文件和template.html在同一目录,并在这一目录下创建locales目录,而zh_CN.csv在locales下,如果还有其他语言,同样创建csv文件,例如zh_TW.csv,放置到locales下,同时根据用户的可接受的语言设置语言,即将get_user_locale的返回值设置为合适的语言即可。


五. 扩展

1.      日志

一个完备的应用系统应该包含日志,便于维护应用的运行。Tornado直接利用了python固有的日志系统(python的logging够强大了,似乎也无需再做什么)。Tornado在tornado.log中定义了三种日志:

tornado.access: 请求处理前日志

tornado.application: 应用处理请求时的日志

tornado.general:通用日志

在应用中只需import tornado.log,就可以写日志了,诸如

tornado.log.app_log.warn("I am here")
Tornado只扩展了日志的格式,其他的日志行为,参见python的logging模块。

在调用tornado.options.parse_command_line 或tornado.options.parse_config_file后,会缺省调用Tornado自己的日志格式设置,需要注意。




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值