python - flask 中的多语言网址

标签 python web flask multilingual

我刚开始玩 Flask,所以很可能我只是错过了一些明显的东西,但对于其他也在寻找相同答案的人来说,这可能是个很好的问题 :)

我想创建 Flask 应用程序,它将监听多语言 URL。所以我想要的是一个端点将在/news/111 上监听,就像在/naujiena/111 上一样(例如立陶宛语)。

所以一个明显的解决方案是为 View 函数提供一些路由,例如:

@app.route('/news/<id>')
@app.route('/naujiena/<id>')
def news_view(id): pass

这应该可行,但显然在(一些私密的地方)稍后添加新语言或只是更新链接会很痛苦。

我想到的另一个解决方案是,我可以有一个文件,我在其中定义真实 View 函数,然后是一些“语言 View ”文件,我只在其中获取请求,然后从其他文件查询真实 View 函数。喜欢

新闻.py

def news_view(id): pass

news_zh.py

from news import news_view
@app.route('/news/<id>')
def news_view_en(id):
    return news_view(id)

news_lt.py

from news import news_view
@app.route('/naujiena/<id>')
def news_view_lt(id):
    return news_view(id)

这还不错,至少可以以某种方式很好地组织起来。但我敢打赌应该有一些我想念的东西:)那么伙计们,那是什么? :) 欢迎提出任何建议。

谢谢!

最佳答案

您可以使用 add_url_rule()函数动态路由 URL:

view_functions = [news_view, foo_view, bar_view]

for view in ['news', 'foo', 'bar']:
  for translation in translations[view]:
     app.add_url_rule('/{}/'.format(translation), view, view_functions[view])

关于python - flask 中的多语言网址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11814582/

相关文章:

python - 将需求从 requirements.txt 添加到 conda meta.yaml

java - 测量 Tomcat 的关机间隔

python - 使用 Django 从服务器获取多个图像

python - 在 ec2 实例的不同子域上运行多个 Flask 应用程序

python - 用数据框中组的平均值替换列值

python - Python 中无法散列的查找表

web - 如何使用 Scrapy 抓取网站所有页面上的链接

javascript - 错误: [astro preview] adapter does not have previewentrypoint

python - 如何使用 Flask WTF FileField 实际上传文件

python - 如何让 Celery 工作人员返回任务结果