在Django项目中使用哪种动态国际化系统?
我正在用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
模型翻译有两种方式:
- 在模型中添加额外的列或字段来进行翻译
- 使用第二个表来存储翻译内容
第一种方法更高效,因为它不需要额外的连接操作。而第二种方法对原始模型表的影响较小,因为它不修改原来的表。我个人更喜欢第一种选择,这也是我使用 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/
不过我可能还会选择其他的解决方案。