Django URL 翻译依赖URL 前缀语言代码
Django URL translation dependent on URL prefix language code
我正在尝试使用 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)
...
我查看了 Django 的相关文档 (https://docs.djangoproject.com/en/3.1/topics/i18n/translation/#translating-url-patterns),但发现它很模糊,无法真正理解它。
项目级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 中添加 import include,例如
在project/urls.py
from django.conf.urls import include
path('en/dictionary/',include('app URL here with extension.url'),
path('it/dizionario/',include('app URL here with extension.url'),
path('fr/dictionnaire/',include('app URL here with extension.url'),
在Appname/urls.py
urlpatterns = [
url(r'^define$/',views.name of view,name=''),
url(r'^definisci/$',views.name of view,name=''),
url(r'^définis/$',views.name of view,name=''),
看看这个:
https://docs.djangoproject.com/en/3.1/topics/http/urls/
我正在尝试使用 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)
...
我查看了 Django 的相关文档 (https://docs.djangoproject.com/en/3.1/topics/i18n/translation/#translating-url-patterns),但发现它很模糊,无法真正理解它。
项目级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 中添加 import include,例如
在project/urls.py
from django.conf.urls import include
path('en/dictionary/',include('app URL here with extension.url'),
path('it/dizionario/',include('app URL here with extension.url'),
path('fr/dictionnaire/',include('app URL here with extension.url'),
在Appname/urls.py
urlpatterns = [
url(r'^define$/',views.name of view,name=''),
url(r'^definisci/$',views.name of view,name=''),
url(r'^définis/$',views.name of view,name=''),
看看这个: https://docs.djangoproject.com/en/3.1/topics/http/urls/