我正在使用i18n_patterns更改语言前缀:/ fr / / de /等。它运行得很漂亮。
在尝试访问没有语言代码的页面时,它添加/ en /的唯一问题。
我想知道如何将英语作为默认语言,而不是/ en / with英文版的每个URL。
感谢。
答案 0 :(得分:5)
有一个名为django-solid-i18n-urls的软件包,它会做什么,你想要什么。
有一点需要提及:它根本不使用重定向。因此,如果用户访问网站并且他的首选语言不是en
(settings.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。