Django - 用语言代码为所有网址添加后缀

Django - Suffix all urls with language code

我在一个多语言网站上工作,所以我想用当前的 2 字符语言代码为我的所有网址添加后缀。如果未指定语言,我想默认为英语。

例如:

mysite.com/ --> mysite.com/en

mysite.com/location --> mysite.com/locations/en

mysite.com/ar 将显示阿拉伯语站点

由于我不想将 (?P<language>[a-x]{2})$ 添加到我的所有网址中,我猜我应该编写一些中间件来检查后缀并将其删除?

实现此目标的最佳方法是什么?

正如上面@Bogdan 的评论中所指出的,我求助于使用 django 中的内置前缀功能。

  • 我在 MIDDLEWARE_CLASSES 设置中添加了 LocaleMiddleware

  • 我添加了一个 LANGUAGES 设置来指定我网站中的语言,在我的例子中它只有英语和阿拉伯语所以我的语言看起来像

    LANGUAGES = ( ('ar', _('Arabic')), ('en', _('English')), )

  • 在我看来,我使用 request.LANGUAGE_CODE 访问语言代码并在我的模板中显示适当的语言