Django URL转换取决于URL前缀语言代码

问题描述

我正在尝试使用Django翻译系统将Django字典应用程序国际化。我已经成功翻译了网站上的大多数内容,但是在翻译URL模式时遇到了问题,除了管理页面

我的目标是根据URL中的前缀语言代码更改内容和URL的语言。例如:

www.example.com/en/dictionary/define    // (content in English)
www.example.com/it/dizionario/definisci // (content in Italian)
www.example.com/fr/dictionnaire/définis // (content in french)
...

我在(https://docs.djangoproject.com/en/3.1/topics/i18n/translation/#translating-url-patterns)上检查了Django文档,但发现它含糊不清,无法真正理解。

项目级 urls.py

from django.conf.urls.i18n import i18n_patterns
from django.utils.translation import gettext_lazy as _

from dictionary import views as dictionary_views

urlpatterns = [
    path('admin/',admin.site.urls),]

dictionary_patterns = ([
    path('',dictionary_views.index,name='index'),path(_('define/'),dictionary_views.define,name='define'),path(_('define/<slug:headword_slug>'),dictionary_views.headword,name='headword'),],'dictionary')

urlpatterns += i18n_patterns(
    path(_('dictionary/'),include(dictionary_patterns,namespace='dictionary')),)

对于特定于应用的 urls.py ,我不知道该怎么做。是否应该从上方导入dictionary_patterns变量并将其添加到应用程序的urlpatterns列表中?我应该完全删除应用程序的 urls.py 文件吗?

有人可以帮忙吗?

解决方法

只需尝试在urlpatterns中添加导入包含

在项目/urls.py中

from django.conf.urls import include

path('en/dictionary/',include('app URL here with extension.url'),path('it/dizionario/',path('fr/dictionnaire/',

在Appname / urls.py

   urlpatterns = [
   url(r'^define$/',views.name of view,name=''),url(r'^definisci/$',url(r'^définis/$',

检查一下: https://docs.djangoproject.com/en/3.1/topics/http/urls/