2013-07-31 24 views

Trả lời

28

thay thế đăng ký này mẫu:

urlpatterns = i18n_patterns('', 
url(r'^admin/', include(admin.site.urls)), 
url(r'^', include('cms.urls')), 
) 

với điều này:

from django.conf.urls import patterns 

urlpatterns = patterns('', 
    url(r'^admin/', include(admin.site.urls)), 
    url(r'^', include('cms.urls')), 
) 

Các hướng dẫn bạn chỉ để sử dụng phương pháp i18n_patterns mà thực hiện chính xác này: prepends mã ngôn ngữ để các url của bạn.

Cũng lưu ý rằng bạn có thể xóa an toàn 'django.middleware.locale.LocaleMiddleware' và 'cms.middleware.language.LanguageCookieMiddleware' khỏi MIDDLEWARE_CLASSES nếu bạn không sử dụng nhiều ngôn ngữ.

+0

Vì vậy, dễ dàng! Cảm ơn! –

+2

Điều đó có thể được cấu hình trong settings.py :) –

+3

Chỉ cần một bình luận. Điều này làm việc cho Django CMS v3.0 quá. – azuax

1

Nếu bạn muốn giữ một ngôn ngữ trong URL, ví dụ bởi vì bạn có backlinks trong các trang web với mã ngôn ngữ, bạn chỉ có thể đưa ra các ngôn ngữ khác trong settings.py

LANGUAGES = (  
    #('en', gettext('en')), 
    ('de', gettext('de')), 
) 

CMS_LANGUAGES = {   
    'default': { 
     'public': True, 
     'hide_untranslated': False, 
     'redirect_on_fallback': True, 
    }, 
    1: [    
     { 
      'public': True, 
      'code': 'de', 
      'hide_untranslated': False, 
      'name': gettext('de'), 
      'redirect_on_fallback': True, 
     }, 
     # { 
     #  'public': True, 
     #  'code': 'en', 
     #  'hide_untranslated': False, 
     #  'name': gettext('en'), 
     #  'fallbacks': ['de'], 
     #  'redirect_on_fallback': True, 
     # }, 
    ], 
} 

Bằng cách đó URL vẫn hiển thị www.example.com/de/foo.html. Trong ví dụ trên, rằng /de/ sẽ bị mất, điều này sẽ làm cho tất cả các URL của bạn trong web vô nghĩa.

Do đó, từ góc độ SEO, nó có thể không phải là lựa chọn tốt nhất nếu bạn đã xây dựng liên kết với mã ngôn ngữ trong đó.

2

Câu trả lời của @ ppetrid vẫn chính xác. Tuy nhiên, kể từ Django 1.6 patterns không còn khả dụng nữa. Thay đổi mã hiện như sau:

from django.conf.urls import patterns 

urlpatterns = (
    url(r'^admin/', include(admin.site.urls)), 
    url(r'^', include('cms.urls')), 
) 

Bạn cũng sẽ nhận được một cảnh báo nếu bạn rời khỏi '', trong các mô hình quá.

1

Trong phiên bản 1.8.18 django bạn chỉ cần đặt False tại biến này trong settings.py

USE_I18N = False 

USE_L10N = False 
Các vấn đề liên quan