# -*- coding: utf-8 -*- from django.conf import settings from django.utils import translation from django.utils.deprecation import MiddlewareMixin from django.utils.translation import ugettext_lazy as _ class LanguageMiddleware(MiddlewareMixin): def process_request(self, request): """ function to activate the translation """ if 'lang' in request.GET: language = request.GET.get('lang', 'id') if language in dict(settings.LANGUAGES).keys(): request.session['_language'] = language language = request.session.get('_language', 'id') translation.activate(language) # In your settings.py """ MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'django.middleware.locale.LocaleMiddleware', # custom middleware 'yourproject.middleware.LanguageMiddleware', ] # Internationalization # https://docs.djangoproject.com/en/3.0/topics/i18n/ LANGUAGES = ( ('id', 'Indonesia'), ('en', 'English') ) LOCALE_PATHS = ( os.path.join(BASE_DIR, 'locale'), ) DEFAULT_LANGUAGE = 1 LANGUAGE_CODE = 'id' USE_I18N = True USE_L10N = True """