У меня на сайте 2 языка: английский и арабский
Пользователи могут переключаться между языками, нажимая на флаг.
В моделях я использую модель прокси:
class Product(models.Model):
name=models.CharField(max_length=100)
name_ar=models.CharField(max_length=100, default='')
def __unicode__(self):
return self.name
class Product_ar(Product):
def __unicode__(self):
return self.name_ar
class Meta:
proxy=True
В формах я использую 2 формы вместо одной:
class CollectionEditForm_en(forms.Form):
name = forms.CharField(label=_('Name'), max_length=100, widget=forms.TextInput(attrs={'size':'50'}))
product = forms.ModelChoiceField(label=_('product'), queryset=Product.objects.filter(enabled=True), empty_label=None)
class CollectionEditForm_ar(forms.Form):
name = forms.CharField(label=_('Name'), max_length=100, widget=forms.TextInput(attrs={'size':'50'}))
product = forms.ModelChoiceField(label=_('product'), queryset=Product_ar.objects.filter(enabled=True), empty_label=None)
В коде проверьте язык следующим образом:
if request.LANGUAGE_CODE=='ar':
CollectionEditForm=CollectionEditForm_ar
else:
CollectionEditForm=CollectionEditForm_en
Так в шаблонах я проверяю:
{% if LANGUAGE_CODE == "ar" %}
<a href="/product/{{product.alias}}/">{{product.name_ar}}</a>
{% else %}
<a href="/product/{{product.alias}}/">{{product.name}}</a>
{% endif %}
Надеюсь, что это решение кому-нибудь поможет