4π
β
I managed to figure this out. First of all you need to read the docs: https://docs.djangoproject.com/en/dev/topics/i18n/translation/
@1 β I wrote my own middleware based on http://djangosnippets.org/snippets/2037/ (itβs crucial to put this middleware as the first one in the MIDDLEWARE_CLASSES
list)
import threading
from django.http import Http404
from django.conf import settings
request_cfg = threading.local()
class RouterMiddleware(object):
def process_view(self, request, view_func, view_args, view_kwargs):
lang = request.LANGUAGE_CODE
if lang in settings.LANGUAGES:
request_cfg.lang = lang
else:
raise Http404()
def process_response(self, request, response):
if hasattr(request_cfg, 'lang'):
del request_cfg.lang
return response
class DatabaseRouter(object):
def _default_db(self):
if hasattr(request_cfg, 'lang') and request_cfg.lang in settings.DATABASES:
return request_cfg.lang
else:
return 'default'
def db_for_read(self, model, **hints):
return self._default_db()
def db_for_write(self, model, **hints):
return self._default_db()
@2 β Can be accessed using request.LANGUAGE_CODE
@3 β Itβs explained in docs: https://docs.djangoproject.com/en/dev/topics/i18n/translation/#internationalization-in-url-patterns
π€matino
Source:stackexchange.com