项目背景:
web项目中,无论是给端上API还是服务API,往往都会设置统一格式返回,全局异常拦截等等功能。 统一格式例如
{
"code": 100010,
"message": "tenant is not exist",
"data": ""
}
国际化主要针对的是messages参数实现多语言化,下面我们将手把手的实现这个功能。
网上的坑
主要是随着包的升级出现的不兼容问题。
flask国际化实现是通过插件flask-babel包,flask-babel包从2.0.0 到3.0.0大版本升级
去掉了localeselector方法
优化成了在初始化Babel的时候传入select_locale参数
如果你使用的最新的flask-babel,
# 设置语言选择逻辑
@babel.localeselector
def get_locale():
# 从 URL 参数获取语言选择,如果没有提供则使用浏览器默认语言
return request.args.get('lang', request.accept_languages.best_match(app.config['LANGUAGES']))
上面方法localeselector方法提示不存在。
<