在Django项目中使用哪种动态国际化系统?

时间:2010-08-20 14:27:33

标签: python django internationalization

我正在从头开始用Django开发一个新项目。我看到有很多应用程序可以处理动态内容的翻译。

  • Django的多语言
  • Django的可插拔模型-I18N
  • Django的modeltranslation
  • Transdb
  • Django的多语言模型 -
  • Django的全美达

仅举几例。

Transdb,transmeta和多语言听起来很公平,但我想阅读一些个人经历​​。

我应该选择哪一个?

4 个答案:

答案 0 :(得分:5)

我同意S.Lott的意见,你会想要考虑国际化需要什么。但是,这是所有提到的软件包的一个非常好的破坏:

http://blog.muhuk.com/2010/01/06/dynamic-translation-apps-for-django.htm

到目前为止,我的个人选择是“以上都不是”。我目前正在使用datatrans进行原型设计:

http://github.com/citylive/django-datatrans

http://www.botondus.com/dynamic-translation-with-django-datatrans/

但我可能会选择另一种解决方案。

答案 1 :(得分:3)

有两种模型翻译:

  1. 向模型添加额外的列/字段以进行翻译
  2. 使用第二张表进行翻译
  3. 第一种方法更有效,因为您不使用额外的连接。而第二个则不那么具有侵入性,因为它不会修改原始模型表。我个人更喜欢第一种选择,这是我使用django-modeltranslation的主要原因之一。

    您还可以查看此comparison grid

答案 2 :(得分:2)

Django-nani是一个全新的应用程序,它使用最好的设计方法,速度快,写得很好。

它仍处于开发阶段,但效果很好,并且非常完整documentation

这是一个片段,可以看到如何定义多语言模型:

from django.db import models
from nani.models import TranslatableModel, TranslatedFields


class DjangoApplication(TranslatableModel):
    name = models.CharField(max_length=255, unique=True)
    author = models.CharField(max_length=255)

    translations = TranslatedFields(
        description = models.TextField(),
        description_author = models.CharField(max_length=255),
    )

    def __unicode__(self):
        return self.name

答案 3 :(得分:0)

我正在使用django i18n进行双语项目:我真的很满意这个,我绝对会推荐它,但我必须说我从来没有尝过其中一个其他......