问题:

在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支持的更多相关文章

  1. 【Python】【Web.py】详细解读Python的web.py框架下的application.py模块

    详细解读Python的web.py框架下的application.py模块   这篇文章主要介绍了Python的web.py框架下的application.py模块,作者深入分析了web.py的源码, ...

  2. web.py框架入门

    在使用微信搭建公众平台的时候,使用的是web.py这个方便简单的框架,学习一下. 框架文档:http://webpy.org/docs/0.3/tutorial.zh-cn  按照文档的内容写一遍程序 ...

  3. web.py框架之高级应用

    二.高级应用 2.1 web.ctx 获取客户端信息,比如:来源页面.客户端浏览器类型等. web.ctx基于 threadeddict类,又被叫做 ThreadDict.这个类创建了一个类似字典(d ...

  4. Web.py 框架学习笔记 - URL处理

    最近由于工作需要开始学习基于python的web应用框架web.py.为了方便学习,将学习心得逐日记下以便日后复习. URL 模板: web.py提供了一套url处理的模板,在python工程中,只需 ...

  5. web.py框架之基本应用

    一.基本应用 1.1 Hello World! # coding:utf-8 import web urls = ( "/.*", "Tk_online" ) ...

  6. Web.py 框架学习笔记 - ctx

    摘要: ctx用于存取web请求的环境变量,基于ThreadedDict类进行实例化.ThreadedDict类可实例化字典类型的对象,该对象某些属性可用于存取处理线程的id. 这样字典化实例的线程池 ...

  7. (转)Nginx + uwsgi + web.py + MySQLdb

    一.背景知识: Web服务器上有多种方式运行Python: 传统上的CGI方式:基本已被淘汰 mod_python的模块方式:仍在广泛使用,但生产环境中也被逐步淘汰 uwsgi方式:目前生产环境下最受 ...

  8. web.py小记

    what's the web.py 相比于 Django 和 Flask,web.py 是轻量到不能再轻量的 web 框架,所有的功能都需要自己实现,所有不适合中大型 web 的开发,不过对于简单的 ...

  9. python web.py操作mysql数据库,实现对数据库的增删改查操作

    使用web.py框架,实现对mysql数据库的增删改查操作: 该示例代码中连接的是本地数据库testdb,user表,表结构比较简单,只有两个字段:mobile和passwd,类型均为字符型 实际应用 ...

随机推荐

  1. javagc日志详解

    https://blog.csdn.net/aliveTime https://plumbr.io/blog/garbage-collection/understanding-garbage-coll ...

  2. 使用idea+springboot+Mybatis搭建web项目

    使用idea+springboot+Mybatis搭建web项目 springboot的优势之一就是快速搭建项目,省去了自己导入jar包和配置xml的时间,使用非常方便. 1.创建项目project, ...

  3. Jsoup的简易使用示例

    http://www.open-open.com/jsoup/parsing-a-document.htm 测试用网页 <!doctype html> <!-- http://jwc ...

  4. Javascript 解读与思想

    Javascript 解读与思想 解读:对底层类库功能的理解 思想:对程序架构的部署思维

  5. [转]awsome-python

    原文链接 Python 资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列的资源整理.awesome-python 是 vinta 发起维护的 Pytho ...

  6. 【Tensorflow】Tensorflow r1.0, Ubuntu, gpu, conda安装说明

    Install Anaconda and python 1. cuda-8.0 download cuda_8.0.61_375.26_linux.run ./cuda_8.0.61_375.26_l ...

  7. php5.6.11编译安装报错configure: error: Don't know how to define struct flock on this system

    centos 6.8 32位系统下,安装php.5.6.11是出现这个错误 解决办法: 1 2 3 4 vim /etc/ld.so.conf.d/local.conf     # 编辑库文件 /us ...

  8. 从MySQL全库备份中恢复某个库和某张表

    在Mysqldump官方工具中,如何只恢复某个库呢? 全库备份 [root@HE1 ~]# mysqldump -uroot -p --single-transaction -A --master-d ...

  9. c#中@标志的作用 C#通过序列化实现深表复制 细说并发编程-TPL 大数据量下DataTable To List效率对比 【转载】C#工具类:实现文件操作File的工具类 异步多线程 Async .net 多线程 Thread ThreadPool Task .Net 反射学习

    c#中@标志的作用   参考微软官方文档-特殊字符@,地址 https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/toke ...

  10. Effective Java 第三版——80. EXECUTORS, TASKS, STREAMS 优于线程

    Tips 书中的源代码地址:https://github.com/jbloch/effective-java-3e-source-code 注意,书中的有些代码里方法是基于Java 9 API中的,所 ...