Tôi có 2 ngôn ngữ trên trang web của mình: Tiếng Anh và tiếng Ả Rập Người dùng có thể chuyển đổi giữa các ngôn ngữ nhấp vào cờ. Trong mô hình tôi sử dụng một mô hình proxy:
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
Trong hình thức tôi sử dụng 2 hình thức thay vì một:
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)
Trong ngôn ngữ kiểm tra code theo cách này:
if request.LANGUAGE_CODE=='ar':
CollectionEditForm=CollectionEditForm_ar
else:
CollectionEditForm=CollectionEditForm_en
Vì vậy, trong các mẫu tôi kiểm tra:
{% if LANGUAGE_CODE == "ar" %}
<a href="/product/{{product.alias}}/">{{product.name_ar}}</a>
{% else %}
<a href="/product/{{product.alias}}/">{{product.name}}</a>
{% endif %}
Hy vọng giải pháp này sẽ giúp ai đó
Bạn đã thử nghiệm giải pháp trong sản xuất và nó so sánh với django-đa ngôn ngữ như thế nào? Tôi đang chọn một cách tiếp cận mới để bản địa hóa các lĩnh vực cơ sở dữ liệu kể từ khi django-đa ngôn ngữ không hoạt động trên Django 1.2+ và django-đa ngôn ngữ trông hoàn toàn chết. – stricjux
có, điều này được sử dụng trong sản xuất trên nhiều trang web. Lý do duy nhất nó có trạng thái beta là bộ thử nghiệm chưa có mức độ phù hợp 100%. – specialunderwear