【问题标题】:url locale using django 1.4使用 django 1.4 的 url 语言环境
【发布时间】:2012-09-01 11:19:08
【问题描述】:

我正在尝试应用此处描述的 django URL 语言环境

https://docs.djangoproject.com/en/dev/topics/i18n/translation/#translating-url-patterns

下面是我的设置文件

LANGUAGE_CODE = 'en'

gettext = lambda s: s

LANGUAGES = (
    ('ar', gettext('Arabic')),
    ('en', gettext('English')),
)

我的 urls.py 如下

from django.conf.urls import patterns, include, url
from django.conf import settings
from django.contrib import admin
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
from django.conf.urls.i18n import i18n_patterns



admin.autodiscover()


urlpatterns = patterns('',
    url(r'^sitemap\.xml$', 'sitemap.view', name='sitemap_xml'),
)

urlpatterns += i18n_patterns('',

    url(r'^', include('bon_app.apps.bonz.urls')),

    url(r'^', include('bon_app.apps.pages.urls')),

)

它目前仅适用于英语,当我尝试 127.0.0.1/en/ 时它可以工作,但是当我尝试 127.0.0.1//ar/ 时,它不知道为什么会这样?

我目前正在使用 django 1.4

更新

bon_app/apps/bonz/urls.py

from django.conf.urls import patterns, include, url


urlpatterns = patterns('bon_app.apps.bonz.views',

    url(r'^$',              'home',                               name='bonz-home'),
    url(r'^promotion/$',    'home',  {'model'   : 'Promotion'},   name='bonz-promo'),
    url(r'^event/$',        'home',  {'model'   : 'Event'},       name='bonz-event'),
    url(r'^directory/$',    'directory',                          name='bonz-directory')
)

bon_app/apps/pages/urls.py

from django.conf.urls import patterns, include, url


urlpatterns = patterns('bon_app.apps.pages.views',

    url(r'^contact-us/$', 'contact_us', name='pages-contactus'),
    url(r'^about-us/$', 'about_us', name='pages-aboutus'),

)

【问题讨论】:

  • 能否请您显示来自bonz.urls 和pages.urls 的代码?
  • 嗨 Jingo,我刚刚用来自 bonz.urls 和 pages.urls 的代码更新了问题
  • 您的 MIDDLEWARE_CLASSES 中添加了 LocaleMiddleware 吗?
  • 感谢 Anna,这是我错过的中间件。请将其发布为答案,以便我可以为您分配赏金。

标签: django localization


【解决方案1】:

你说:

它目前仅适用于英语,当我尝试 127.0.0.1/en/ 时它可以工作,但是当我尝试 127.0.0.1//ar/ 时它不知道为什么会这样?

在“ar”之前有一个双斜杠“//”而不是一个斜杠“/”。

也许这已经是问题所在了?

【讨论】:

  • 好的,请不要投反对票,这只是一个想法,我试图提供帮助......我认为这个想法很好,因为有时这么小的错字会有所不同,我发现它;)
【解决方案2】:

您必须将 LocaleMiddleware 添加到您的 MIDDLEWARE_CLASSES

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多