检查当前 URL 模式是否存在于 Django 中的另一种语言中

Check if current URL pattern exist in another language in Django

我正在尝试在 Django 中开始我的新网站,其中有很多设置,这些设置在未来会更难实现。其中之一就是网站国际化,还有 url 模式国际化。

我想要实现的目标是让 url 像这样:

www.example.com/news                 [en] [news]
www.example.com/en/news              [en] [news]
www.example.com/no/nyheter           [no] [news]
www.example.com/en/top-articles      [en] [top articles]

在我访问的每个页面上,我希望网站导航有一个下拉菜单,其中包含网站语言以及当前选择的语言。类似这样:

<ul class="dropdown">
    <li><a href="/en/news" hreflang="en" class="active">English</a></li>
    <li><a href="/no/nyheter" hreflang="no" rel="alternate">Norsk</a></li>
</ul>

现在关于切换到另一种语言,有什么方法可以查看当前页面是否存在用户可以选择的语言

如果所选语言的当前页面不存在,我希望用户返回所选语言的首页。所以下拉菜单看起来像这样:

<ul class="dropdown">
    <li><a href="/en/top-articles" hreflang="en" class="active">English</a></li>
    <li><a href="/no" hreflang="no">Norsk</a></li>
</ul>

我看到您这样做的一种方法是根据用户选择在用户会话中设置 django_language

Django 将处理任何文本的翻译 这是使用 gettext_lazy 指定的。您的 URL 将使用 Django url.reverse 函数连同 django_language 和其他参数生成。

确定当前页面是否以用户可以选择的语言存在将归结为您的实施。

例如,内容模型将有一个语言字段,可以轻松查询语言匹配 django_language 的记录。如果没有匹配项,可以重定向到语言首页,假设它将始终存在。

参考文献:

http://django-book.readthedocs.io/en/latest/chapter19.html