我正在尝试在Django中开始我的新网站,其中包含很多设置,这些设置将会越来越难以实施。其中一个是网站国际化,也是网址模式国际化。
我想要实现的是拥有这样的网址:
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>
答案 0 :(得分:1)
我认为您这样做的一种方法是根据用户选择在用户会话中设置django_language
。
Django将处理任何文本的翻译
使用gettext_lazy
指定的。您的网址将使用Django url.reverse
函数以及django_language
和其他参数生成。
确定用户可以选择的语言中是否存在当前页面将归结为您的实现。
例如,内容模型将有一个语言字段,可以轻松查询语言匹配django_language
的记录。如果没有匹配,则可以对语言首页进行重定向,假设它始终存在。