检查Django中是否存在其他语言的当前URL模式

检查Django中是否存在其他语言的当前URL模式,django,internationalization,url-pattern,Django,Internationalization,Url Pattern,我正试图在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

我正试图在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/top-articles" hreflang="en" class="active">English</a></li>
    <li><a href="/no" hreflang="no">Norsk</a></li>
</ul>
在我访问的每个页面上,我希望网站导航有一个下拉菜单,其中包含网站语言,以及当前选择的语言。与此类似:

<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>
至于换成另一种语言,有没有办法查看当前页面是否以用户可以选择的语言存在

如果当前页面不存在所选语言的,我希望用户返回到所选语言的frontpage。因此,下拉列表如下所示:

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/top-articles" hreflang="en" class="active">English</a></li>
    <li><a href="/no" hreflang="no">Norsk</a></li>
</ul>

我看到您这样做的一种方法是根据用户选择在用户会话中设置
django\u语言

Django将处理任何文本的翻译 这是使用
gettext\u lazy
指定的。您的url将使用Django
url.reverse
函数以及
Django\u语言
和其他参数生成

确定当前页面是否以用户可以选择的语言存在将归结为您的实现

例如,内容模型将有一个语言字段,便于查询语言匹配的记录
django_language
。如果没有匹配项,则可以重定向到语言首页,前提是该页面始终存在

参考资料:

您是为每个资源创建翻译文件,还是为数据库中的每种语言保留每个资源的内容?@OluwafemiSule我正在考虑创建翻译文件,对于内容(如文章),我将在数据库中创建多个,每种语言对应一种。有没有办法通过Django中的模板来追溯这一点?因此,让我们假设
获取url“en”作为url
,如果存在,它将返回url?如果不是,它将返回false,我可以在模板中对此进行验证,以输出语言frontpage?这可能吗?我刚刚通读了所有关于国际化的文档,但找不到具体的跟踪选项。。。至于验证某些URL,如文章,我知道我必须创建自己的数据库查找。如果您想将模板内的URL回溯到首页的URL,则应该考虑编写自定义模板标签。这会很奇怪。我建议在视图函数或方法中进行回溯。这样你就可以将用户重定向到合适的语言首页。说得好,也许我应该这样做。你知道gettext是否允许变量而不是字符串吗?我有一个共享页眉模板,我需要使用该模板为每个页面传递一个head_title变量。在每个页面的视图中进行翻译时,使用变量而不是字符串看起来更清晰。是的,gettext允许使用变量。太好了,我将尝试您描述的方法:)