2013-09-05 97 views
1

我需要在django管理中自动翻译数据。Django翻译模型数据保存

我目前使用django rosetta手动翻译所有静态文本,以简化翻译。我需要做的是在管理界面中使用Microsoft Translator API自动翻译所有数据。

让我们假设我有一个函数来做翻译。我应该在翻译功能中使用django-modeltranslation并覆盖每个模型的保存功能吗?

有帮助的任何提示,模块或代码片段。

+0

它是什么,你需要翻译?用户输入的是文本吗? – PepperoniPizza

+0

我需要翻译用户在django管理员输入的所有charfields数据。 – moenad

回答

0

如果您需要翻译,并从翻译的语言是固定的,如你不打算的用户在几种语言的输入数据,那么你可以在模型中保存方法转换数据:

class ModelName(models.Model): 

    data = models.CharField() 

    def save(self): 
     """ Extension of parent save method """ 

     for name in ModelName._meta.get_all_field_names(): 
      field = getattr(name, ModelName, None) 
      field = translate(field) 

     super(ModelName, self).save() 

另一种选择是做翻译的数据输入验证,如果它是一个形式:

class ModelNameForm(forms.Form): 

    data = forms.CharField() 

    def clean_data(self): 
     data = self.cleaned_data['data'] 
     return translate(data) 
+0

可以说,我在表格中有20行,有没有办法做翻译,而不必一个一个的调用所有字段的翻译? – moenad

+0

如果你在表单上做了这个'clean()',将会是一个开始的点,例如在'self.cleaned_data的值为key'形式的迭代字段中:' – PepperoniPizza

+0

我更新了我的答案,但是我没有试过它,所以我不能保证它会起作用,但这是主意。 – PepperoniPizza