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

8 投票
4 回答
1964 浏览
提问于 2025-04-16 03:04

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

  • Django-multilingual
  • Django-pluggable-model-i18n
  • Django-modeltranslation
  • Transdb
  • Django-multilingual-model-
  • Django-transmeta

这些只是其中的一部分。

Transdb、transmeta和multilingual听起来都不错,但我想了解一些个人的使用经验。

我应该选择哪个呢?

4 个回答

2

Django-nani 是一个全新的应用程序,它运行速度快,代码写得很好,采用了可能是最好的设计方法。

虽然它还在开发中,但功能已经很稳定,并且有一份非常完整的文档

下面是一个代码片段,展示了多语言模型是如何定义的:

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

模型翻译有两种方式:

  1. 在模型中添加额外的列或字段来进行翻译
  2. 使用第二个表来存储翻译内容

第一种方法更高效,因为它不需要额外的连接操作。而第二种方法对原始模型表的影响较小,因为它不修改原来的表。我个人更喜欢第一种选择,这也是我使用 django-modeltranslation 的主要原因之一。

你也可以看看这个 比较表

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/

不过我可能还会选择其他的解决方案。

撰写回答