def create_or_update_translation(self, language_code, singular_text=None, plural_texts=None, validate=False): if language_code not in dict(settings.LANGUAGES).keys(): return [ "'{}' is not included as a language in your settings file". format(language_code) ] with transaction.atomic(xg=True): trans = None if language_code in self.translations_by_language_code: # We already have a translation for this language, update it! try: trans = Translation.objects.get( pk=self.translations_by_language_code[language_code]) created = False except Translation.DoesNotExist: trans = None if not trans: # OK, create the translation object and add it to the respective fields trans = Translation(master_translation_id=self.pk, language_code=language_code, denorm_master_hint=self.hint, denorm_master_text=self.text) created = True if plural_texts: trans.plural_texts = plural_texts else: trans.text = singular_text if validate: errors = validate_translation_texts(trans, self) if errors: return errors trans.master_translation = self trans.save() if created: self.refresh_from_db() self.translations_by_language_code[language_code] = trans.pk self.translations.add(trans) self.save()
def create_or_update_translation(self, language_code, singular_text=None, plural_texts=None, validate=False): with transaction.atomic(xg=True): trans = None if language_code in self.translations_by_language_code: # We already have a translation for this language, update it! try: trans = Translation.objects.get(pk=self.translations_by_language_code[language_code]) created = False except Translation.DoesNotExist: trans = None if not trans: # OK, create the translation object and add it to the respective fields trans = Translation( master_translation_id=self.pk, language_code=language_code, denorm_master_hint=self.hint, denorm_master_text=self.text ) created = True if plural_texts: trans.plural_texts = plural_texts else: trans.text = singular_text if validate: errors = validate_translation_texts(trans, self) if errors: return errors trans.master_translation = self trans.save() if created: self.refresh_from_db() self.translations_by_language_code[language_code] = trans.pk self.translations.add(trans) self.save()
def clean(self): msgs = validate_translation_texts(self) if msgs: raise ValidationError([err for err, _orig, _trans in msgs])
def clean(self): msgs = validate_translation_texts(self) if msgs: raise ValidationError([err for err, _orig, _trans in msgs])