web.py框架之i18n支持
问题:
在web.py的模板文件中, 如何得到i18n的支持?
Solution:
项目目录结构:
proj/
|- code.py
|- i18n/
|- messages.po
|- en_US/
|- LC_MESSAGES/
|- messages.po
|- messages.mo
|- templates/
|- hello.html
文件: proj/code.py
#!/usr/bin/env python
# encoding: utf-8 import web
import gettext urls = (
'/.*', 'hello',
) # File location directory.
curdir = os.path.abspath(os.path.dirname(__file__)) # i18n directory.
localedir = curdir + '/i18n' gettext.install('messages', localedir, unicode=True)
gettext.translation('messages', localedir, languages=['en_US']).install(True)
render = web.template.render(curdir + '/templates/', globals={'_': _}) class hello:
def GET(self):
return render.hello() # 使用内建的HTTP服务器来运行.
app = web.application(urls, globals())
if __name__ == "__main__":
app.run()
模板文件: proj/templates/hello.html.
$_("Message")
创建一个locale目录并使用python2.6内建的pygettext.py从python脚本和模板文件中导出翻译:
shell> cd /path/to/proj/
shell> mkdir -p i18n/en_US/LC_MESSAGES/
shell> python /path/to/pygettext.py -a -v -d messages -o i18n/messages.po *.py templates/*.html
Working on code.py
Working on templates/hello.html
你将会得到pot file: i18n/messages.po. 它的内容和下面的差不多 (‘msgstr’包含了翻译后的信息):
# 文件 code.py:40
msgid "Message"
msgstr "This is translated message in file: code.py."
拷贝文件’i18n/messages.po’到目录’i18n/en_US/LC_MESSAGES/’下, 然后翻译它. 使用gettext包的msgfmt工具或者使用python2.6内建的’msgfmt.py’文件将一个pot文件编译称mo文件:
shell> msgfmt -o i18n/en_US/LC_MESSAGES/messages.mo i18n/en_US/LC_MESSAGES/messages.po
运行web.py的服务器:
shell> cd /path/to/proj/
shell> python code.py
http://0.0.0.0:8000/
打开你的浏览器, 比如说firefox, 然后访问地址: http://192.168.0.3:8000/, 你将会看过翻译过的信息.
web.py框架之i18n支持的更多相关文章
- 【Python】【Web.py】详细解读Python的web.py框架下的application.py模块
详细解读Python的web.py框架下的application.py模块 这篇文章主要介绍了Python的web.py框架下的application.py模块,作者深入分析了web.py的源码, ...
- web.py框架入门
在使用微信搭建公众平台的时候,使用的是web.py这个方便简单的框架,学习一下. 框架文档:http://webpy.org/docs/0.3/tutorial.zh-cn 按照文档的内容写一遍程序 ...
- web.py框架之高级应用
二.高级应用 2.1 web.ctx 获取客户端信息,比如:来源页面.客户端浏览器类型等. web.ctx基于 threadeddict类,又被叫做 ThreadDict.这个类创建了一个类似字典(d ...
- Web.py 框架学习笔记 - URL处理
最近由于工作需要开始学习基于python的web应用框架web.py.为了方便学习,将学习心得逐日记下以便日后复习. URL 模板: web.py提供了一套url处理的模板,在python工程中,只需 ...
- web.py框架之基本应用
一.基本应用 1.1 Hello World! # coding:utf-8 import web urls = ( "/.*", "Tk_online" ) ...
- Web.py 框架学习笔记 - ctx
摘要: ctx用于存取web请求的环境变量,基于ThreadedDict类进行实例化.ThreadedDict类可实例化字典类型的对象,该对象某些属性可用于存取处理线程的id. 这样字典化实例的线程池 ...
- (转)Nginx + uwsgi + web.py + MySQLdb
一.背景知识: Web服务器上有多种方式运行Python: 传统上的CGI方式:基本已被淘汰 mod_python的模块方式:仍在广泛使用,但生产环境中也被逐步淘汰 uwsgi方式:目前生产环境下最受 ...
- web.py小记
what's the web.py 相比于 Django 和 Flask,web.py 是轻量到不能再轻量的 web 框架,所有的功能都需要自己实现,所有不适合中大型 web 的开发,不过对于简单的 ...
- python web.py操作mysql数据库,实现对数据库的增删改查操作
使用web.py框架,实现对mysql数据库的增删改查操作: 该示例代码中连接的是本地数据库testdb,user表,表结构比较简单,只有两个字段:mobile和passwd,类型均为字符型 实际应用 ...
随机推荐
- css冲刺
CSS知识点及面试题 1.一般与文本相关的属性都可以继承text-/font-/line- 2.background属性1)background-repeat:repeat/repeat-x/repe ...
- An entry point cannot be marked with the 'async' modifier
I copied below code from this link.But when I am compiling this code I am getting an entry point can ...
- 创建MySQL用户 赋予某指定库表的权限
摘自: http://renxiangzyq.iteye.com/blog/763837 update ERROR 1364 (HY000): Field 'ssl_cipher' doesn't h ...
- org.springframework.web.method.HandlerMethod 与 org.springframework.messaging.handler.HandlerMethod 转换失败
Springmvc hander.getclassclass org.springframework.web.method.HandlerMethod HandlerMethod.classclass ...
- python接口自动化测试(二)-requests.get()
环境搭建好后,接下来我们先来了解一下requests的一些简单使用,主要包括: requests常用请求方法使用,包括:get,post requests库中的Session.Cookie的使用 其它 ...
- mysql分组用法
--select num from 表 group by num --select num from 表 group by num,nid --特别的:group by 必须在where之后,orde ...
- 前端项目添加自定义icont图标步骤
文章转自https://blog.csdn.net/weixin_36185028/article/details/53416185 这里就用到了两个文件,一个是icontfont.css,另外一个是 ...
- 物联网架构成长之路(29)-Jenkins环境搭建
0. 说明 哈哈,前面中间插入了一篇Eclipse增加Git插件,在此之前真的没有用过GIT. 1. 运行Jenkins 这里为了方便,还是用Docker方式安装,由于这个是标准的war报,不对Doc ...
- 9-11-Trie树/字典树/前缀树-查找-第9章-《数据结构》课本源码-严蔚敏吴伟民版
课本源码部分 第9章 查找 - Trie树/字典树/前缀树(键树) ——<数据结构>-严蔚敏.吴伟民版 源码使用说明 链接☛☛☛ <数据结构-C语言版>(严蔚 ...
- 【转】Mac OS X 上修改主机名
修改主机名称 sudo scutil --set HostName MacBookPro 修改共享名称 sudo scutil --set ComputerName MacBookPro [转自]:h ...