# settings.py LANGUAGES = { 'en': { 'domain': 'curse.com', 'name': 'English', 'code': 'en', }, 'de': { 'domain': 'de.curse.com', 'name': 'German', 'code': 'de', }, 'it': { 'domain': 'curse.it', 'name': 'Italian', 'code': 'it', }, 'tw': { 'domain': 'curse.tw', 'name': 'Traditional Chinese', 'code': 'zh-tw', }, 'cn': { 'domain': 'cn.curse.com', 'name': 'Simplified Chinese', 'code': 'zh-cn', }, 'fr': { 'domain': 'curse.fr', 'name': 'French', 'code': 'fr', }, 'es': { 'domain': 'curse.es', 'name': 'Spanish', 'code': 'es', }, 'kr': { 'domain': 'kr.curse.com', 'name': 'Korean', 'code': 'ko-kr', } } # middleware/locale.py #from django.utils.cache import patch_vary_headers from django.utils import translation from django.http import HttpResponseRedirect,HttpResponse from django.conf import settings from cursesite.middleware import threadlocals from cursesite.core.translation import utils as cursetranslation class LocaleMiddleware(object): def validate_language(self, request): if hasattr(settings, 'OVERRIDE_IL8N_LANG'): lang_code = settings.OVERRIDE_IL8N_LANG self.set_lang(request, lang_code) return # LB check request if request.path.split('/')[0] == "donotremove.html": return HttpResponse("check") host = request.META.get('HTTP_HOST').split('.') # Ex: uri = curse-gaming.com if request.META['HTTP_HOST'] in settings.LANGUAGES_BY_DOMAIN: return HttpResponseRedirect('http://www.%s%s' % (request.META['HTTP_HOST'], request.path)) portal = host[0] domain = '.'.join(host[1:]) if domain not in settings.LANGUAGES_BY_DOMAIN: return HttpResponseRedirect('http://%s.curse.com%s' % (portal, request.path)) lang_code = settings.LANGUAGES_BY_DOMAIN[domain] # Set the language self.set_lang(request, lang_code) settings.WEBSITE_DOMAIN = settings.LANGUAGES[lang_code]['domain'] settings.SESSION_COOKIE_DOMAIN = settings.WEBSITE_DOMAIN def set_lang(self, request, lang_code): real_lang_code = settings.LANGUAGES[lang_code]['code'] translation.activate(real_lang_code) request.LANGUAGE_CODE = lang_code threadlocals._thread_locals.lang = request.LANGUAGE_CODE cursetranslation.activate(lang_code) def process_request(self, request): #language = translation.get_language_from_request(request) return self.validate_language(request) def process_response(self, request, response): #patch_vary_headers(response, ('Accept-Language',)) response['Content-Language'] = request.LANGUAGE_CODE translation.deactivate() return response