Python通过gettext模块支持国际化(i18n),可以实现程序的多语言界面的支持
进入Python的安装目录中Tools\i18n目录
执行pygettext.py生成一个messages.pot
修改messages.pot中编码CHARSET gb2312ENCODING utf8
编辑messages.pot添加需要国际化的内容,另存为*.po文件我这里存成了lang.po
编译lang.po执行msgfmt.py lang.po生成lang.mo
在项目中建立目录\locale\zh_CN\LC_MESSAGES\locale\en_US\LC_MESSAGESLC_MESSAGES这个是必须的同时将刚刚的lang.po、lang.mo放入到zh_CN\LC_MESSAGES\这个目录下。也可以生成一个英文的对应文件放入到en_US\LC_MESSAGES\目录下
测试下效果,输出用_(str)代替str。成功输出中文将zh_CN换成en_US如果没有配置默认直接输出原内容,如Hello YY完整的test.py# -*- coding: utf-8 -*-#!/usr/bin/env pythonimport sysreload(sys)sys.setdefaultencoding('utf8')import gettextgettext.install('lang', 'F:\Workspaces\server\MobileApiServer\project\locale', unicode=False)gettext.translation('lang', 'F:\Workspaces\server\MobileApiServer\project\locale', languages=['zh_CN']).install(True)print _('Hello YY')
项目直接使用,服务启动的时候加载所有的mo文件。在请求的过滤入口处设置本次请求的语言,后面代码中就可以直接使用啦