2013-05-16 4 views
3

Я использую i18n_patterns для изменения префикса языка:/fr// de/и т. Д. Он прекрасно работает.Язык по умолчанию при использовании i18n_patterns

Единственная проблема заключается в добавлении/en/при попытке доступа к странице без кода языка.

Мне интересно, как я могу иметь английский язык по умолчанию и не иметь/en/с каждым URL-адресом для английской версии.

Спасибо.

ответ

5

Существует пакет под названием django-solid-i18n-urls, который будет делать то, что вы хотите.

Одно можно упомянуть: он не использует перенаправления вообще. Итак, если пользователь придет на сайт, а его предпочитаемый язык не будет en (по умолчанию один из них установлен в settings.LANGUAGE_CODE), но, например, fe, он не будет перенаправлен на /fe/, он должен сделать это вручную. Если вы все еще хотите использовать переадресацию, можно изменить код, к счастью, там не так много.

Вот как вы можете установить его (подробнее установить последовательность в readme):

1) pip install solid_i18n

2) Укажите язык для корневых адресов в settings.py: LANGUAGE_CODE = 'en'

3) Добавить SolidLocaleMiddleware вместо того, чтобы LocaleMiddleware MIDDLEWARE_CLASSES:

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

4) Применение золь id_i18n_patterns вместо i18n_patterns

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'), 
    # ... 
) 

Этот blog работает с использованием упомянутого пакета, где корень URL (без префикса) визуализирует русский язык.

Article, почему переадресация не используется.

ОБНОВЛЕНО

Упомянутый пакет теперь SOLID_I18N_USE_REDIRECTS вариант. Если True, предпочтительный язык будет обнаружен и перенаправлен на язык, отличный от языка по умолчанию, будет либо (если открытый язык равен умолчанию), будет показан url без префикса.

Смежные вопросы