它是在官方文档here中编写的,i18n_patterns()
只允许在您的根URLconf中使用。
这对我来说是个问题,因为我需要这些网址:
/en/products/
/fr/produits/
/sv/produkt/
/en/products/detail/[my product name]/
/en/produits/detail/[my product name]/
/sv/produkt/detalj/[my product name]/
/sv/produkt/detalj/[my product name]/
继承我的根urls.py
:
urlpatterns += i18n_patterns(
url(_(r'^produits/detail/'),
include('produits.urls', namespace="produits")
),
url(_(r'^produits/'),
include('produits.urls', namespace="produits")
),
)
所以,对于最新的翻译工作没问题,但第一个没有。翻译还可以,但我想将最后一部分('detail/'
)转移到应该透明处理它的应用produits
。
我该怎么办?
答案 0 :(得分:0)
以下是我如何解决问题的方法。这不是一个好的解决方案,但它是目前唯一一个使用Django 1.8的人。
我已从我的" produits
"删除了我的路线应用程序,并将它们添加到主urls.py
,这意味着将应用程序配置与全局配置混合。我不喜欢它。
我还在每条路线前添加了应用名称:produits_detail
和produits_index
。因此,我知道那些路线的应用程序。再一次,我不喜欢混合"全球设置"和具体设置,但似乎我别无选择。无论如何,几行代码,它运作良好。
from django.contrib import admin
from django.conf.urls import include, url
from django.conf.urls.i18n import i18n_patterns
from django.utils.translation import ugettext_lazy as _
from produits import views as p_views
urlpatterns = [
url(r'^i18n/', include('django.conf.urls.i18n')),
url(r'^admin/', include(admin.site.urls)),
]
urlpatterns += i18n_patterns(
url(_(r'^produits/detail/(?P<slug>[a-zA-Z0-9-_]+)/$'),
p_views.DetailView.as_view(), name='produits_detail'),
url(_(r'^produits/'),
p_views.IndexView.as_view(), name='produits_index'),
)