Иногда вы хотите применить определенный язык для данного представления, но позволить языковым настройкам браузера выбрать язык для остальных представлений. Я не понял, как изменить язык в коде представления, но вы можете сделать это, внедрив простое Middleware
lang_based_on_url_middleware.py:
from django.utils import translation
# Dictionary of urls that should use special language regardless of language set in browser
# key = url
# val = language code
special_cases = {
'/this/is/some/url/' : 'dk',
'/his/is/another/special/case' : 'de',
}
class LangBasedOnUrlMiddleware(object):
def process_request(self, request):
if request.path_info in special_cases:
lang = special_cases[request.path_info]
translation.activate(lang)
request.LANGUAGE_CODE = lang
В settings.py:
MIDDLEWARE_CLASSES = (
...
'django.middleware.locale.LocaleMiddleware',
'inner.lang_based_on_url_middleware.LangBasedOnUrlMiddleware', # remember that the order of LocaleMiddleware and LangBasedOnUrlMiddleware matters
...
)
Не элегантное решение, но оно работает.