tornado with i18n

i18n是国际化的简称(Internationalization,去掉开始的I和最后的N,中间一共18个字符)。 tornado中使用i18n需要下面两个工具 两个工具:pygettext,msgfmt,两个相关文件:po文件和mo文件

pygetext和msgfmt的使用方法:

编写python代码文件 test.py

from gettext import gettext as _
print _("well down")
print _("good")

pygetext test.py

生成messages.pot文件,更改文件后缀 mv messages.pot messages.po 配置msgstr值

生成一个名为messages.mo文件: msgfmt messages.po

建立目录locale/cn/LC_MESSAGES/

mv messages.po locale/cn/LC_MESSAGES

cn目录是所对应的语言,LC_MESSAGES是gettext.py文件里要求的 mo文件必须和所定义的域同名 gettext.py中有 modfile=os.path.join(localedir,lang,’LC_MESSAGES’,’%s.mo’ %domain)

测试: $python  »>gettext.install(‘messages’,’./locale’,unicode=True) 三个参数: 作用域名,用于限定翻译文件的主名 路径,存放翻译文件的路径 unicode,是否使用unicode(如果应用程序是unicode的,此处应设为True)

>>>gettext.translation('messages','./locale',languages=['cn']).install(True)
>>>print _("good")

在tornado中使用时:

$xgettext -L python -k=_ -o openquant.po $(find . -name \*.py) $(find template/ -name \*.html) 查找所有需要翻译的相关项生成 po 文件

$msgfmt openquant.po -o locale/zh_CN/LC_MESSAGES/openquant.mo 生成mo文件

完成相关文件的生成后,需要在代码中加载:

tornado.locale.load_gettext_translations(options.I18N_PATH,"openquant")

handler中自定义get_user_locale函数:

def get_user_locale(self):
    #zh_CN or en_US
    user_locale = self.get_cookie("user_locale")

    if user_locale:
        return tornado.locale.get(user_locale)

    return None

参考文章:

iMind

django多国语言

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏微服务

Redis应用及安装

Redis听到最多的一句话就是Redis的使用难吗?不难,Redis用好容易吗?不容易,有时候觉得这句话说的挺好,但又是让读者挺心里咯噔一下的,还不如不说! 概...

403110
来自专栏机器学习实践二三事

Ipynb文件的打开

RT,ipynb文件用gedit直接打开的话,太多附加信息,此时需要在浏览器端打开 升级ipython 太低版本的ipython是不行的,出现的错误可能是这样的...

25880
来自专栏阮一峰的网络日志

Usenet下载教程(高级篇)

上个星期,我翻译了一篇介绍Usenet的文章。今天,我将剩余的部分写完。 (接前文) 8. 第6节介绍了最基本的下载方法: 1) 选择讨论组(groups);...

65260
来自专栏杨建荣的学习笔记

关于shell中的pl/sql脚本错误排查与分析(r4笔记第21天)

今天有个同事问我一个问题,他说运行shell脚本的时候抛出了ORA 错误,但是对于错误的原因没有思路,想让我帮他看看。 我查看了下,脚本的结构比较清晰。 脚本是...

32550
来自专栏北京马哥教育

自动化发布-GitLab WEB Hooks 配置

钩子(hooks) Git是在特定事件发生之前或之后执行特定脚本代码功能(从概念上类比,就与监听事件、触发器之类的东西类似)。 Git Hooks就是那些在Gi...

44550
来自专栏魏艾斯博客www.vpsss.net

lnmp 安装 SSL 证书之后做 301 重定向的经验和补充内容

33750
来自专栏xingoo, 一个梦想做发明家的程序员

[logstash-input-log4j]插件使用详解

Log4j插件可以通过log4j.jar获取Java日志,搭配Log4j的SocketAppender和SocketHubAppender使用,常用于简单的集...

28660
来自专栏张戈的专栏

【 ES 私房菜】收集 Nginx 访问日志

在上一篇系列文章《【 ES 私房菜】收集 Apache 访问日志》中,我们已经完成了 ES 收集 A pache 日志的目标,再收集其他 WEB 日志也就小菜一...

83000
来自专栏JMCui

Linux 学习记录 二 (文件的打包压缩).

 前言:本文参考《鸟哥的Linux 私房菜》,如有说的不对的地方,还请指正!谢谢!  环境:Centos 6.4  和window不同,在Linux压缩文件需要...

37350
来自专栏小狼的世界

使用Apache的Proxy模块实现对被代理网站的访问

最近有个需求,原本一个动态的站点,有些页面要静态化。但是静态化的文件又不希望和动态程序放在一起。并且URL也不希望发生变化,于是考虑使用Rewrite来实现。下...

9720

扫码关注云+社区

领取腾讯云代金券