Django CMS Custom插件 - 如何处理翻译

时间:2013-11-30 17:09:25

标签: django internationalization django-admin django-cms

我有一个旋转木马,它由一个拥有多个图片模型的图库模型组成。图片模型如下所示:

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等更好的方法,对吧?

1 个答案:

答案 0 :(得分:2)

我强烈推荐django-hvad

这是你的models.py作为一个hvad TranslatableModel

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的模型(或类似的模型),它将包含您的三个字段titletaglinedescription和一个{ {1}}至ForeignKey

只要picture_instance能够识别语言,您仍然可以Picture

如果您愿意,我可以根据您的具体用例提供更好的解释。