2013-09-05 130 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