我正在尝试在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