使用i18n_patterns时的默认语言

时间:2013-05-16 05:04:30

标签: python django

我正在使用i18n_patterns更改语言前缀:/ fr / / de /等。它运行得很漂亮。

在尝试访问没有语言代码的页面时,它添加/ en /的唯一问题。

我想知道如何将英语作为默认语言,而不是/ en / with英文版的每个URL。

感谢。

1 个答案:

答案 0 :(得分:5)

有一个名为django-solid-i18n-urls的软件包,它会做什么,你想要什么。

有一点需要提及:它根本不使用重定向。因此,如果用户访问网站并且他的首选语言不是ensettings.LANGUAGE_CODE中设置的默认语言),例如fe,则不会将其重定向到{{1他必须手动完成。 如果您仍想使用重定向,则可以修改代码,幸运的是它并不多。

在这里您可以如何安装它(readme中更详细的安装顺序):

1)/fe/

2)在settings.py中指定根网址的语言:pip install solid_i18n

3)将SolidLocaleMiddleware而不是LocaleMiddleware添加到MIDDLEWARE_CLASSES:

LANGUAGE_CODE = 'en'

4)使用solid_i18n_patterns代替i18n_patterns

MIDDLEWARE_CLASSES = (
   'django.contrib.sessions.middleware.SessionMiddleware',
   'solid_i18n.middleware.SolidLocaleMiddleware',
   'django.middleware.common.CommonMiddleware',
)

blog正在使用提到的包运行,其中根网址(不带前缀)呈现俄语。

Article,为什么不使用重定向。

<强>已更新

提到的包现在有from django.conf.urls import patterns, include, url from solid_i18n.urls import solid_i18n_patterns # urls without language, this can be skipped urlpatterns = patterns('' # ... ) # urls, that must have default language at root url and prefixes for other languages urlpatterns += solid_i18n_patterns('', url(r'^about/$', 'about.view', name='about'), # ... ) 选项。如果为True,将发现首选语言,并且将发生重定向到非默认语言URL(如果发现的语言等于默认值),将显示不带前缀的url。