0

以下にこの関数があり、翻訳する前にこれらの変数がそれぞれ存在しないかどうかも確認する必要があります。

def save(self):
    # add an an if condition to check all the below variables if they are none
    # if self.name_es or ..... is not None:
    self.name_es = translateField(self.name, 'es') if not None
    self.name_ar = translateField(self.name, 'ar')
    self.description_es = translateField(self.description, 'es')
    self.description_ar = translateField(self.description, 'ar')
    super(City, self).save()

これは翻訳機能です:

def translateField(text, lang):
    try:
        return client.translate(text, lang)
    except:
        pass

問題は、モデルの多くのクラスに上記のものがあることです。各保存関数で、異なる変数に対して同じことをしています。

コードの量を最小限に抑えるために、ここで何ができますか? 「_es」と「_ar」は、翻訳の出力を返すために必要なこれらの変数に常に追加されます。

4

1 に答える 1

1

使用setattr:

for lang in ["es", "ar"]:
    setattr(self, "name_" + lang, translateField(self.name, lang))
    setattr(self, "description_" + lang, translateField(self.description, 'es'))

多くのフィールドと多くの言語がある場合は、これをネストされたループにすることもできます。

そして、むき出しのexcept条項に対して警告してもよろしいですか?

于 2013-09-06T14:31:08.630 に答える