【发布时间】:2014-09-21 17:08:23
【问题描述】:
我开始使用 Flask 几个星期,并尝试在我的 Flask 应用程序中实现 i18n 和 l10n。 这是我真正想要实现的行为:
用户输入
website.com将被重定向到website.com/en/或website.com/fr/,具体取决于他们的Accept-Languages 标头或设置中的默认语言。
这是我当前的实现:
# main_blueprint.py
mainBlueprint = Blueprint('main', __name__)
@mainBlueprint.route('/')
def index(lang):
return "lang: %" % lang
# application.py
app.register_blueprint(mainBlueprint, url_defaults={'lang': 'en'})
app.register_blueprint(mainBlueprint, url_prefix='/<lang>')
这样,当我输入website.com 或website.com/en/ 时,它只会回复website.com。除非我输入website.com/fr,否则它会回复/fr/。但是,我希望始终包含 /en/,即使它是默认选项。
我已经尝试过 Flask 文档中的指南 URL Processors pattern,但是当我输入 website.com 时,它回复为 404 error。只有当我将 language_code 包含到 url 中时它才能正常工作——这不是我想要的行为。
提前谢谢你!
【问题讨论】:
-
@tbicr:我也阅读了您的问题和答案,并且尝试了所有这些。问题是我想始终在网址中包含
/en/或/fr/。目前我只能包含其他语言代码,但不能包含en:( -
看起来你只需要
app.register_blueprint(mainBlueprint, url_defaults='/<lang>')。如果需要,您始终可以使用默认蓝图重定向到 en,例如,在before_request中作为默认蓝图。 -
我怎样才能给你投票@tbicr? :D 非常感谢!!!
标签: python internationalization flask