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



我正在尝试在Django中启动我的新网站,其中包含许多设置,这些设置将更难实现。其中之一是网站国际化,也是 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

最新更新