检查当前 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
的记录。如果没有匹配项,可以重定向到语言首页,假设它将始终存在。
参考文献:
我正在尝试在 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
的记录。如果没有匹配项,可以重定向到语言首页,假设它将始终存在。