推荐答案
// www.javascriptcn.com code example
from flask import Flask, render_template
from flask_babel import Babel, gettext
app = Flask(__name__)
app.config['BABEL_DEFAULT_LOCALE'] = 'zh'
app.config['BABEL_TRANSLATION_DIRECTORIES'] = 'translations'
babel = Babel(app)
@babel.localeselector
def get_locale():
return 'zh'
@app.route('/')
def index():
return render_template('index.html', message=gettext('Hello, World!'))
if __name__ == '__main__':
app.run(debug=True)本题详细解读
1. 安装 Flask-Babel
首先,你需要安装 Flask-Babel 扩展。可以通过 pip 安装:
pip install Flask-Babel
2. 配置 Flask-Babel
在 Flask 应用中,你需要配置 BABEL_DEFAULT_LOCALE 和 BABEL_TRANSLATION_DIRECTORIES。BABEL_DEFAULT_LOCALE 用于设置默认的语言,BABEL_TRANSLATION_DIRECTORIES 用于指定翻译文件的存放目录。
app.config['BABEL_DEFAULT_LOCALE'] = 'zh' app.config['BABEL_TRANSLATION_DIRECTORIES'] = 'translations'
3. 初始化 Babel
在 Flask 应用中初始化 Babel 扩展:
babel = Babel(app)
4. 设置语言选择器
通过 @babel.localeselector 装饰器定义一个函数来设置当前的语言。这个函数返回一个语言代码,例如 'zh' 表示中文。
@babel.localeselector
def get_locale():
return 'zh'5. 使用 gettext 进行翻译
在视图函数中,使用 gettext 函数来标记需要翻译的字符串。例如:
@app.route('/')
def index():
return render_template('index.html', message=gettext('Hello, World!'))6. 生成翻译文件
使用 pybabel 命令生成翻译文件:
pybabel extract -F babel.cfg -o messages.pot . pybabel init -i messages.pot -d translations -l zh
然后编辑生成的 .po 文件,添加翻译内容,最后编译翻译文件:
pybabel compile -d translations
7. 运行应用
最后,运行 Flask 应用,访问 / 路由,你将看到翻译后的内容。
python app.py