Skip to content

Instantly share code, notes, and snippets.

@stefanfoulis
Created April 25, 2013 23:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save stefanfoulis/5464012 to your computer and use it in GitHub Desktop.
Save stefanfoulis/5464012 to your computer and use it in GitHub Desktop.
super simple hacky multilingual
# -*- coding: utf-8 -*-
from django.utils.translation import get_language, activate, deactivate_all, deactivate
class LanguageFieldProxy(object):
def contribute_to_class(self, cls, name):
self.name = name
setattr(cls, self.name, self)
def __get__(self, instance, instance_type=None):
if not instance:
return ''
return getattr(instance, '%s_%s' % (self.name, get_safe_language()))
def __set__(self, instance, value):
setattr(instance, '%s_%s' % (self.name, get_language()), value)
def __delete__(self, instance):
delattr(instance, '%s_%s' % (self.name, get_language()))
def get_safe_language():
allowed_language_codes = {'en', 'ar'}
lang = get_language()
if lang in allowed_language_codes:
return lang
else:
return 'en'
class MultilingualModel(models.Model):
name_en = models.CharField()
name_ar = models.CharField()
name = LanguageFieldProxy()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment