HTML5技术

Flask 开发全球化应用 - Ray Liang(2)

字号+ 作者:H5之家 来源:博客园 2015-11-24 08:55 我要评论( )

默认情况下 Flask-Babel 会读取 flask.g.lang 自动切换当前请求上下文使用的语言区域。但在很多应用场景下我们需要手工改变当前的区域语言,这种情况下我们就需要增加一个 get_local() 函数: from flask import g,

默认情况下 Flask-Babel 会读取 flask.g.lang 自动切换当前请求上下文使用的语言区域。但在很多应用场景下我们需要手工改变当前的区域语言,这种情况下我们就需要增加一个 get_local() 函数:

from flask import g, request @babel.localeselector def get_locale(): # 如果在g对象内有登入的用户对象则从用户对象中读取 locale 区域信息 user = getattr(g, 'user', None) if user is not None: return user.locale # 此方法只需要返会一个区域字符串 return request.accept_languages.best_match(['de', 'fr', 'en']) @babel.timezoneselector def get_timezone(): """此函数与 get_locale 类似,只是向babel提供获取时区的设置""" user = getattr(g, 'user', None) if user is not None: return user.timezone

当提供这两个函数之后,在调用 gettext 时 Babel 会自动调用他们。这里是通过装饰器 @babel.localeselector 和 @babel.timezoneselector 实现类似重写的功能,但这个写法代码量会比重写类更少。

小结

当然,Babel 提供的API不止本文中的这几个,如果需要更详细地了解可以仔细地阅读 Flask-Babel 的文档。在这里我旨在记录 Babel 的最常规的用法以作备忘同时也分享给更多正在使用Flask的友人们。

posted @

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 【Vue 入门】使用 Vue2 开发一个展示项目列表的应用 - zhangjk

    【Vue 入门】使用 Vue2 开发一个展示项目列表的应用 - zhangjk

    2017-04-30 16:00

  • 在Delphi下使用迅雷APlayer组件进行免注册开发 - Delphi力量

    在Delphi下使用迅雷APlayer组件进行免注册开发 - Delphi力量

    2017-04-28 15:00

  • 随应潮流-基于ABP+Angularjs现代化应用软件开发框架(1)-总体介绍 - 在路在的张

    随应潮流-基于ABP+Angularjs现代化应用软件开发框架(1)-总体介绍 -

    2017-04-22 08:04

  • vue2.0版cnode社区项目搭建及实战开发 - sandisen

    vue2.0版cnode社区项目搭建及实战开发 - sandisen

    2017-04-20 14:00

网友点评
7