Dust8 的博客

读书百遍其义自见

0%

flask国际化

做网页有时肯定有国际化的需求, 看得懂中文的显示中文, 看不懂的就让他选英文.
一般默认的根据浏览器的请求头里面的语言来显示, 有特殊要求的给个列表让他自己选.

python 里面标准库有 gettext 模块, 第三方库有 Babel. 这个第三方现在已经由 pocoo 团队维护了. flask 里面可以用扩展 Flask-Babel.

安装Flask-Babel

1
pip install Flask-Babel

配置

1
2
3
4
5
6
7
from flask import Flask
from flask.ext.babel import Babel, gettext

app = Flask(__name__)
# 设置默认locale好调试, 当然也可以根据官方文档里面的从请求里面获取
app.config['BABEL_DEFAULT_LOCALE'] = 'zh_Hans_CN'
babel = Babel(app)

使用

py文件里面

1
gettext('hello')

jinja2里面

1
{{ _('hello') }}

设置babel配置

保存为 babel.cfg

1
2
3
[python: **.py]
[jinja2: **/templates/**.html]
extensions=jinja2.ext.autoescape,jinja2.ext.with_

翻译

下面都是 babel 模块里面的命令, 文档

1
2
3
4
pybabel extract -F babel.cfg -o messages.pot .
pybabel init -i messages.pot -d translations -l zh_Hans_CN
pybabel compile -d translations
pybabel update -i messages.pot -d translations