我正试图开始我的新网站在Django与许多设置,在未来的道路上将更难实施。其中之一是网站国际化,也是网址模式国际化。
我想要实现的是拥有这样的urls:
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>
发布于 2017-07-29 18:18:34
我看到您这样做的一种方法是根据用户选择在用户会话中设置django_language
。
Django将处理使用gettext_lazy
指定的任何文本的翻译。您的URL将使用Django url.reverse
函数以及django_language
和其他参数生成。
确定当前页面是否存在于用户可以选择的语言中,这将归结为您的实现。
例如,内容模型将有一个语言字段,可以方便地查询语言匹配django_language
的记录。如果没有匹配,则可以将其重定向到语言首页,前提是它将始终存在。
参考文献:
http://django-book.readthedocs.io/en/latest/chapter19.html
https://stackoverflow.com/questions/45387227
复制相似问题