1. 简介
Flask-Babel是一个 Flask 扩展,可以轻松地向 Flask 应用添加多语言支持,其支持本地化处理日期时间、数字以及文本翻译。
2. 安装
使用 pip 命令安装 Flask-Babel:
pip install Flask-Babel
3. 配置
在 Flask 中使用 Flask-Babel 需要在 Flask 应用中进行配置,如下所示:
from flask import Flask
from flask_babel import Babel
app = Flask(__name__)
babel = Babel(app)
# 配置 Flask-Babel
app.config['BABEL_DEFAULT_LOCALE'] = 'zh_CN' # 设置默认语言为中文
app.config['LANGUAGES'] = {
'en': 'English',
'zh_CN': '中文',
} # 添加支持的语言
3.1 配置参数说明
BABEL_DEFAULT_LOCALE:设置默认语言。
LANGUAGES:指定支持的语言及其对应的名称,key 为语言代码,value 为语言名称。
4. 本地化处理
Flask-Babel 支持本地化处理日期时间、数字以及文本翻译。
4.1 本地化处理日期时间
使用 Flask-Babel 可以轻松地将日期时间格式化为所需的格式,如下所示:
from datetime import datetime, timedelta
from flask_babel import format_datetime
now = datetime.now()
# 将日期时间格式化为 'YYYY-MM-DD HH:MM:SS'
formatted_datetime = format_datetime(now, 'yyyy-MM-dd HH:mm:ss')
print(formatted_datetime) # 2022-02-22 19:51:25
4.2 本地化处理数字
使用 Flask-Babel 可以轻松地将数字格式化为所需的格式,如下所示:
from flask_babel import format_number
number = 1234567.89
# 将数字格式化为 '1,234,567.89'
formatted_number = format_number(number, locale='en')
print(formatted_number) # 1,234,567.89
4.3 文本翻译
使用 Flask-Babel 可以轻松地为 Flask 应用添加多语言支持,实现文本翻译,如下所示:
from flask import Flask
from flask_babel import Babel, gettext as _
app = Flask(__name__)
babel = Babel(app)
# 配置 Flask-Babel
app.config['BABEL_DEFAULT_LOCALE'] = 'zh_CN' # 设置默认语言为中文
app.config['LANGUAGES'] = {
'en': 'English',
'zh_CN': '中文',
} # 添加支持的语言
@babel.localeselector
def get_locale():
return request.accept_languages.best_match(app.config['LANGUAGES'])
@app.route('/')
def hello_world():
return _('Hello World!') # 翻译文本
4.3.1 运行 Flask 应用
在终端中运行 Flask 应用,启动服务器,如下所示:
export FLASK_APP=app.py
export FLASK_ENV=development
flask run
4.3.2 生成翻译文件
使用 Flask-Babel 命令行工具来生成翻译文件。
首先,需要创建翻译文件夹,如下所示:
mkdir translations
然后,在翻译文件夹中创建两个子文件夹,分别对应支持的两种语言:
cd translations
mkdir en zh_CN
最后,使用 Flask-Babel 命令行工具来生成翻译文件,如下所示:
flask translate init
flask translate update
上述命令会自动在 en 和 zh_CN 子文件夹中生成对应的翻译文件,如下所示:
translations
├── en
│ └── LC_MESSAGES
│ └── messages.po
└── zh_CN
└── LC_MESSAGES
└── messages.po
其中 messages.po 文件是翻译文件。
4.3.3 编辑翻译文件
编辑翻译文件,翻译消息,如下所示:
msgid "Hello World!"
msgstr "你好,世界!"
4.3.4 编写翻译脚本
在 Flask 应用根目录下创建翻译脚本,如下所示:
from flask_babel import gettext as _ # 导入 gettext 函数
print(_('Hello World!')) # 你好,世界!
使用虚拟环境启动 Python 解释器,运行翻译脚本,如下所示:
python translate.py
上述命令会输出翻译后的文本:
你好,世界!