我有一个轮播,其中包含一个包含多个图片模型的图库模型。图片模型如下所示:
class Picture(models.Model):
gallery = models.ForeignKey(Gallery)
image = models.ImageField(upload_to="uploads/images/")
title = models.CharField(max_length=30, null=True, blank=True)
tagline = models.CharField(max_length=30)
description = models.CharField(max_length=100)
page_link = PageField(related_name="Page", null=True, blank=True)
由于网站有 3 种语言,管理员如何为所有语言使用相同的轮播,具有相同的图像,但文本的翻译不同?
一定有比仅仅使用 title_en、title_de 等更好的方法,对吗?
最佳答案
我强烈推荐django-hvad .
这是作为 hvad TranslatableModel
的 models.py:
class Picture(TranslatableModel):
translations = TranslatedFields(
title = models.CharField(max_length=30, null=True, blank=True)
tagline = models.CharField(max_length=30)
description = models.CharField(max_length=100)
)
gallery = models.ForeignKey(Gallery)
image = models.ImageField(upload_to="uploads/images/")
page_link = PageField(related_name="Page", null=True, blank=True)
def __unicode__(self):
return self.lazy_translation_getter('title', self.pk)
正如文档中提到的,这个应用程序仍处于测试阶段,但我已经在许多生产环境中使用过它并且运行良好。
需要记住的一件事是它确实带来了一些限制。
它的工作方式是创建一个名为 PictureTranslation
(或类似的东西)的模型,其中包含三个字段 title
、tagline
、description
和 Picture
的 ForeignKey
。
只要 picture_instance 具有语言感知能力,您仍然可以执行 picture_instance.title
。
如果您愿意,我可以根据您的具体用例给出更好的解释。
关于Django CMS 自定义插件 - 如何处理翻译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20303127/