博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
web.py 0.3 新手指南 - 实时语言切换
阅读量:4108 次
发布时间:2019-05-25

本文共 2368 字,大约阅读时间需要 7 分钟。

实时语言切换

问题:

如何实现实时语言切换?

解法:

  • 首先你必须阅读 , 然后尝试下面的代码。

文件: code.py

import osimport sysimport gettextimport web# File location directory.rootdir = os.path.abspath(os.path.dirname(__file__))# i18n directory.localedir = rootdir + '/i18n'# Object used to store all translations.allTranslations = web.storage()def get_translations(lang='en_US'):    # Init translation.    if allTranslations.has_key(lang):        translation = allTranslations[lang]    elif lang is None:        translation = gettext.NullTranslations()    else:        try:            translation = gettext.translation(                    'messages',                    localedir,                    languages=[lang],                    )        except IOError:            translation = gettext.NullTranslations()    return translationdef load_translations(lang):    """Return the translations for the locale."""    lang = str(lang)    translation  = allTranslations.get(lang)    if translation is None:        translation = get_translations(lang)        allTranslations[lang] = translation        # Delete unused translations.        for lk in allTranslations.keys():            if lk != lang:                del allTranslations[lk]    return translationdef custom_gettext(string):    """Translate a given string to the language of the application."""    translation = load_translations(session.get('lang'))    if translation is None:        return unicode(string)    return translation.ugettext(string)urls = ('/', 'index')render = web.template.render('templates/',        globals={            '_': custom_gettext,            }        )app = web.application(urls, globals())# Init session.session = web.session.Session(app,        web.session.DiskStore('sessions'),        initializer={            'lang': 'en_US',            }        )class index:    def GET(self):        i = web.input()        lang = i.get('lang', 'en_US')        # Debug.        print >> sys.stderr, 'Language:', lang        session['lang'] = lang        return render.index()if __name__ == "__main__": app.run()

模板文件: templates/index.html.

$_('Hello')

不要忘记生成必要的po&mo语言文件。参考: 

现在运行code.py:

$ python code.pyhttp://0.0.0.0:8080/

然后用你喜欢的浏览器访问下面的地址,检查语言是否改变:

http://your_server:8080/http://your_server:8080/?lang=en_UShttp://your_server:8080/?lang=zh_CN

你必须:

  • 确保语言文件(en_US、zh_CN等)可以动态改变。
  • 确保custom_gettext()调用越省资源约好。

参考:

  • 这里有使用app.app_processor()的 。

转载地址:http://czosi.baihongyu.com/

你可能感兴趣的文章
(正则表达式)表单验证
查看>>
在JS中 onclick="save();return false;"return false是
查看>>
VS编译器运行后闪退,处理方法
查看>>
用div+css做下拉菜单,当鼠标移向2级菜单时,为什么1级菜单的a:hover背景色就不管用了?
查看>>
idea 有时提示找不到类或者符号
查看>>
ng-class的几种用法
查看>>
matplotlib.pyplot.plot()参数详解
查看>>
拉格朗日对偶问题详解
查看>>
MFC矩阵运算
查看>>
最小二乘法拟合:原理,python源码,C++源码
查看>>
ubuntu 安装mysql
查看>>
c# 计算器
查看>>
C# 简单的矩阵运算
查看>>
gcc 常用选项详解
查看>>
c++输入文件流ifstream用法详解
查看>>
c++输出文件流ofstream用法详解
查看>>
字符编码:ASCII,Unicode 和 UTF-8
查看>>
firewalld的基本使用
查看>>
Linux下SVN客户端使用教程
查看>>
Linux分区方案
查看>>