# 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
