Django CMS 自定义插件 - 如何处理翻译

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

最佳答案

我强烈推荐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 (或类似的东西)的模型,其中包含三个字段 titletaglinedescriptionPictureForeignKey

只要 picture_instance 具有语言感知能力,您仍然可以执行 picture_instance.title

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

关于Django CMS 自定义插件 - 如何处理翻译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20303127/

相关文章:

Django模板比较两个变量不起作用

python - 将之前的参数传递给下一个 django 模板请求

php - 在 Yii 中获取翻译的 monthNames/dayNames 作为数组

php - 使用什么进行本地化(php/smarty/pear 应用程序)?

python - 自定义 Django 管理站点

python - 如何用python创建动态方法?

python - 在 Django 站点中将 HTML 渲染为 PDF

Java网络应用程序: pulling data out of database according to locales

Django - 覆盖管理站点的登录表单

django - Django admin:对用户具有外键的ModelAdmin每行添加一个查询