2015-12-22 1 views
1

Я пытаюсь настроить проект в Django 1.9, и мне трудно перевести домашнюю страницу.Django 1.9 - url интернационализация

Я бы хотел перенаправить своих пользователей в/en или/fr, когда они попали на домашнюю страницу.

Итак, я проверил документацию, но это не совсем понятно для меня.

В моем settings.py, я добавил это (с дока: url internationalization):

MIDDLEWARE_CLASSES += [ 
    'django.middleware.locale.LocaleMiddleware', 
] 

У меня есть это:

LANGUAGE_CODE = 'en' 
DEFAULT_LANGUAGE = 'en' 
LANGUAGES = (
    ('en', 'English'), 
    ('fr', 'Français'), 
) 
TIME_ZONE = 'America/Toronto' 
USE_I18N = True 
USE_L10N = True 
USE_TZ = True 

В моем urls.py, я добавил:

# -*- coding: utf-8 -*- 
from django.conf.urls import url 
from django.utils.translation import ugettext_lazy as _ 
from django.views.generic.base import TemplateView 

urlpatterns = [ 
    url(r'^$', TemplateView.as_view(template_name="index.html"), name='home'), 
    url(_(r'^privacy-policy/$'), TemplateView.as_view(template_name="privacy-policy.html"), name='privacy-policy'), 
] 

Когда я запускаю сервер и перехожу на localhost: 8000, нет переадресации на/en или/fr

Что я делаю неправильно?

ответ

0

Я не совсем уверен, что Джанго 1.9, но в версии 1.8 вы должны объявить ваши i18n urlpatterns таким образом:

# your_project/your_project/urls.py 
from django.conf.urls import include, url 
from django.contrib import admin 
from django.conf.urls.i18n import i18n_patterns 

urlpatterns += i18n_patterns(
    url(r'^test$', 'your_package.views.test', name='test'), 
) 

Мы сделали статью на моем блоге компании несколько месяцев назад, если это может помочь вы http://www.metod.io/en/blog/2015/05/05/django-i18n-part-1/

+2

Я знаю, но в док, они сказали: 'Устаревшие начиная с версии 1.8:' ' префикс аргумент i18n_patterns() является устаревшим и не будет поддерживаться в Django 1.10. Просто передайте список экземпляров django.conf.urls.url(). ' – Kornikopic

+0

@Kornikopic В Django> 1.8:' urlpatterns + = i18n_patterns ([url (r '^ test $', 'your_package.views.test', name = 'test')]) ' –

+0

@JamesFenwick это именно то, чего я пытаюсь избежать, так как эта функция будет удалена в Django 1.10 - также я попробовал, и она не работает. Вот ошибка, которую я получил: 'AttributeError: объект 'list' не имеет атрибута 'regex'' – Kornikopic